<?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>225956</bug_id>
          
          <creation_ts>2021-05-18 19:02:34 -0700</creation_ts>
          <short_desc>Red flashes zooming on Google Maps when using external monitor on multi-gpu systems</short_desc>
          <delta_ts>2021-05-20 14:27:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kyle Piddington">kpiddington</reporter>
          <assigned_to name="Kyle Piddington">kpiddington</assigned_to>
          <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1761437</commentid>
    <comment_count>0</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-05-18 19:02:34 -0700</bug_when>
    <thetext>Red flashes zooming on Google Maps when using external monitor on multi-gpu systems</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761439</commentid>
    <comment_count>1</comment_count>
      <attachid>429021</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-05-18 19:16:03 -0700</bug_when>
    <thetext>Created attachment 429021
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761443</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-05-18 19:17:08 -0700</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761444</commentid>
    <comment_count>3</comment_count>
      <attachid>429023</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-05-18 19:19:49 -0700</bug_when>
    <thetext>Created attachment 429023
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761488</commentid>
    <comment_count>4</comment_count>
      <attachid>429023</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-19 00:18:05 -0700</bug_when>
    <thetext>Comment on attachment 429023
Patch

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

&gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ContextMtl.mm:229
&gt; +    mCmdBuffer.waitUntilScheduled();

1. The fix is now missing from other callers of the flushCommandBufer (sic, typo buffer vs bufer)

2. Do we need to account for mCmdBuffer.isValid() ?

3. The structure is also strange wrt finishCommandBuffer():
 - flushCommandBufer is always called from the payload methods, except for finish()
 - For finish(), surprisingly it calls finishCommandBuffer() but then that function exists only for the reason of finish() and nothing else?


One option would be to make all functions normal clients of flushCommandBufer(), e.g. to remove finishCommandBuffer()
Then it&apos;d be easier to understand the mistake in 1., e.g. that after flushCommandBufer(), something else needs to happen also (e.g. waitUntilScheduled or waitUntilFinished())

Other option would be to add function scheduleCommandBuffer().
Then it&apos;d be easier to understand the mistake in 1. e.g. all functions should just call scheduleCommandBuffer() or finishCommandBuffer() but never flushCommandBufer directly.
In this case flushCommandBufer could be removed and the 1-liner contents could be moved to scheduleCommandBuffer and finishCommandBuffer()
scheduleCommandBuffer and finishCommandBuffer should have the same return type, e.g. if and only if one can fail then the other can fail too ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761491</commentid>
    <comment_count>5</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-19 00:24:22 -0700</bug_when>
    <thetext>Other option would be to add a enum parameter to flushCommandBufer() (WaitForScheduled, WaitForFinished)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761551</commentid>
    <comment_count>6</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-05-19 09:28:34 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #4)
&gt; Comment on attachment 429023 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=429023&amp;action=review
&gt; 
&gt; &gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ContextMtl.mm:229
&gt; &gt; +    mCmdBuffer.waitUntilScheduled();
&gt; 
&gt; 1. The fix is now missing from other callers of the flushCommandBufer (sic,
&gt; typo buffer vs bufer)
Flushing a command buffer commits it to the command queue. We don&apos;t need to wait synchronously on every commit, only when we explicitly need to ensure work is on the GPU. (Ie. for glFlush())

&gt; 
&gt; 2. Do we need to account for mCmdBuffer.isValid() ?
No, isValid checks if a command buffer is not committed. 
&gt; 
&gt; 3. The structure is also strange wrt finishCommandBuffer():
&gt;  - flushCommandBufer is always called from the payload methods, except for
&gt; finish()
FinishCommandBuffer uses waitUntilCompleted, which will block the thread until all GPU work finishes. 

&gt;  - For finish(), surprisingly it calls finishCommandBuffer() but then that
&gt; function exists only for the reason of finish() and nothing else?
&gt; 
I would assume this is mirrored from the Vulkan implementation. 
&gt; 
&gt; One option would be to make all functions normal clients of
&gt; flushCommandBufer(), e.g. to remove finishCommandBuffer()
This won&apos;t work, as glFlush() and glFinish() have different behavior. Flush() ensures work is committed to the GPU. finish() ensures it completes.

&gt; Then it&apos;d be easier to understand the mistake in 1., e.g. that after
&gt; flushCommandBufer(), something else needs to happen also (e.g.
&gt; waitUntilScheduled or waitUntilFinished())
&gt; 
&gt; Other option would be to add function scheduleCommandBuffer().
&gt; Then it&apos;d be easier to understand the mistake in 1. e.g. all functions
&gt; should just call scheduleCommandBuffer() or finishCommandBuffer() but never
&gt; flushCommandBufer directly.
&gt; In this case flushCommandBufer could be removed and the 1-liner contents
&gt; could be moved to scheduleCommandBuffer and finishCommandBuffer()
&gt; scheduleCommandBuffer and finishCommandBuffer should have the same return
&gt; type, e.g. if and only if one can fail then the other can fail too ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761864</commentid>
    <comment_count>7</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-20 01:09:35 -0700</bug_when>
    <thetext>(In reply to Kyle Piddington from comment #6)
&gt; &gt; &gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ContextMtl.mm:229
&gt; &gt; &gt; +    mCmdBuffer.waitUntilScheduled();
&gt; &gt; 
&gt; &gt; 1. The fix is now missing from other callers of the flushCommandBufer (sic,
&gt; &gt; typo buffer vs bufer)
&gt; Flushing a command buffer commits it to the command queue. We don&apos;t need to
&gt; wait synchronously on every commit, only when we explicitly need to ensure
&gt; work is on the GPU. (Ie. for glFlush())

Sure, I was already discounting finish off from &quot;other callers&quot;.
Let me rephrase.

The fix is now missing from other callers of the flushCommandBufer that call the function for the purpose of inducing a GL-visible flush.

In concrete terms: You still have the same error in unMakeCurrent.
EGLMakeCurrent should induce equivalent of GL flush.


&gt; &gt; 2. Do we need to account for mCmdBuffer.isValid() ?
&gt; No, isValid checks if a command buffer is not committed. 
&gt; &gt; 
&gt; &gt; 3. The structure is also strange wrt finishCommandBuffer():
&gt; &gt;  - flushCommandBufer is always called from the payload methods, except for
&gt; &gt; finish()
&gt; FinishCommandBuffer uses waitUntilCompleted, which will block the thread
&gt; until all GPU work finishes.
&gt; 
 
&gt; &gt; One option would be to make all functions normal clients of
&gt; &gt; flushCommandBufer(), e.g. to remove finishCommandBuffer()
&gt; This won&apos;t work, as glFlush() and glFinish() have different behavior.
&gt; Flush() ensures work is committed to the GPU. finish() ensures it completes.


No, I did not mean that. What I meant is that current structure is a bit weird.
You have:

unMakeCurrent:
  flushCommandBufer
  waitUntilScheduled

flush:
  flushCommandBufer
  waitUntilScheduled

finish:
  finishCommandBuffer

finishCommandBuffer:
  flushCommandBufer
  waitUntilFinished

So the reader asks:
- &quot;What&apos;s the point of having helper finishCommandBuffer which is only called at one call site&quot;

- &quot;What&apos;s the point of NOT having helper function scheduleCommandBuffer that would compare to finishCommandBuffer&quot; (Current flushCommandBufer does not compare to finishCommandBuffer).

- &quot;What&apos;s the point of one helper function needing a wait after it (flushCommandBuffer), where as the other comparable helper function having the wait inside the helper (finishCommandBuffer)&quot;.


So you&apos;d expect structure to be:
  
unMakeCurrent:
  scheduleCommandBuffer

flush:
  scheduleCommandBuffer

finish:
  finishCommandBuffer

scheduleCommandBuffer:
  flushCommandBufer
  waitUntilScheduled

finishCommandBuffer:
  flushCommandBufer
  waitUntilFinished

OR

unMakeCurrent:
  flushCommandBufer
  waitUntilScheduled

flush:
  flushCommandBufer
  waitUntilScheduled

finish:
  flushCommandBufer
  waitUntilFinished

OR

unMakeCurrent:
  flushCommandBufer(WaitUntilScheduled)


flush:
  flushCommandBufer(WaitUntilScheduled)

finish:
  flushCommandBufer(WaitUntilFinished)


And the significance of this, which is very low, is to avoid the bug here being discussed, e.g. that the same use case (gl induced flush) would have different behavior in different places (e.g buggy behavior and correct behavior) unless the code would be made more obviously error-proof.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1761993</commentid>
    <comment_count>8</comment_count>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-05-20 09:36:42 -0700</bug_when>
    <thetext>(In reply to Kimmo Kinnunen from comment #7)
&gt; (In reply to Kyle Piddington from comment #6)
&gt; &gt; &gt; &gt; Source/ThirdParty/ANGLE/src/libANGLE/renderer/metal/ContextMtl.mm:229
&gt; &gt; &gt; &gt; +    mCmdBuffer.waitUntilScheduled();
&gt; &gt; &gt; 
&gt; &gt; &gt; 1. The fix is now missing from other callers of the flushCommandBufer (sic,
&gt; &gt; &gt; typo buffer vs bufer)
&gt; &gt; Flushing a command buffer commits it to the command queue. We don&apos;t need to
&gt; &gt; wait synchronously on every commit, only when we explicitly need to ensure
&gt; &gt; work is on the GPU. (Ie. for glFlush())
&gt; 
&gt; Sure, I was already discounting finish off from &quot;other callers&quot;.
&gt; Let me rephrase.
&gt; 
&gt; The fix is now missing from other callers of the flushCommandBufer that call
&gt; the function for the purpose of inducing a GL-visible flush.
&gt; 
&gt; In concrete terms: You still have the same error in unMakeCurrent.
&gt; EGLMakeCurrent should induce equivalent of GL flush.
This makes sense. Apologies for misunderstanding.
&gt; 
&gt; 
&gt; &gt; &gt; 2. Do we need to account for mCmdBuffer.isValid() ?
&gt; &gt; No, isValid checks if a command buffer is not committed. 
&gt; &gt; &gt; 
&gt; &gt; &gt; 3. The structure is also strange wrt finishCommandBuffer():
&gt; &gt; &gt;  - flushCommandBufer is always called from the payload methods, except for
&gt; &gt; &gt; finish()
&gt; &gt; FinishCommandBuffer uses waitUntilCompleted, which will block the thread
&gt; &gt; until all GPU work finishes.
&gt; &gt; 
&gt;  
&gt; &gt; &gt; One option would be to make all functions normal clients of
&gt; &gt; &gt; flushCommandBufer(), e.g. to remove finishCommandBuffer()
&gt; &gt; This won&apos;t work, as glFlush() and glFinish() have different behavior.
&gt; &gt; Flush() ensures work is committed to the GPU. finish() ensures it completes.
&gt; 
&gt; 
&gt; No, I did not mean that. What I meant is that current structure is a bit
&gt; weird.
&gt; You have:
&gt; 
&gt; unMakeCurrent:
&gt;   flushCommandBufer
&gt;   waitUntilScheduled
&gt; 
&gt; flush:
&gt;   flushCommandBufer
&gt;   waitUntilScheduled
&gt; 
&gt; finish:
&gt;   finishCommandBuffer
&gt; 
&gt; finishCommandBuffer:
&gt;   flushCommandBufer
&gt;   waitUntilFinished
&gt; 
&gt; So the reader asks:
&gt; - &quot;What&apos;s the point of having helper finishCommandBuffer which is only
&gt; called at one call site&quot;
&gt; 
&gt; - &quot;What&apos;s the point of NOT having helper function scheduleCommandBuffer that
&gt; would compare to finishCommandBuffer&quot; (Current flushCommandBufer does not
&gt; compare to finishCommandBuffer).
&gt; 
&gt; - &quot;What&apos;s the point of one helper function needing a wait after it
&gt; (flushCommandBuffer), where as the other comparable helper function having
&gt; the wait inside the helper (finishCommandBuffer)&quot;.
&gt; 
&gt; 
&gt; So you&apos;d expect structure to be:
&gt;   
&gt; unMakeCurrent:
&gt;   scheduleCommandBuffer
&gt; 
&gt; flush:
&gt;   scheduleCommandBuffer
&gt; 
&gt; finish:
&gt;   finishCommandBuffer
&gt; 
&gt; scheduleCommandBuffer:
&gt;   flushCommandBufer
&gt;   waitUntilScheduled
&gt; 
&gt; finishCommandBuffer:
&gt;   flushCommandBufer
&gt;   waitUntilFinished
&gt; 
&gt; OR
&gt; 
&gt; unMakeCurrent:
&gt;   flushCommandBufer
&gt;   waitUntilScheduled
&gt; 
&gt; flush:
&gt;   flushCommandBufer
&gt;   waitUntilScheduled
&gt; 
&gt; finish:
&gt;   flushCommandBufer
&gt;   waitUntilFinished
&gt; 
&gt; OR
&gt; 
&gt; unMakeCurrent:
&gt;   flushCommandBufer(WaitUntilScheduled)
&gt; 
&gt; 
&gt; flush:
&gt;   flushCommandBufer(WaitUntilScheduled)
&gt; 
&gt; finish:
&gt;   flushCommandBufer(WaitUntilFinished)
&gt; 
&gt; 
&gt; And the significance of this, which is very low, is to avoid the bug here
&gt; being discussed, e.g. that the same use case (gl induced flush) would have
&gt; different behavior in different places (e.g buggy behavior and correct
&gt; behavior) unless the code would be made more obviously error-proof.

I&apos;ll do a few updates, thanks for the tips.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762045</commentid>
    <comment_count>9</comment_count>
      <attachid>429192</attachid>
    <who name="Kyle Piddington">kpiddington</who>
    <bug_when>2021-05-20 11:09:55 -0700</bug_when>
    <thetext>Created attachment 429192
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762056</commentid>
    <comment_count>10</comment_count>
      <attachid>429192</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-05-20 11:29:22 -0700</bug_when>
    <thetext>Comment on attachment 429192
Patch

looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762136</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-20 14:26:23 -0700</bug_when>
    <thetext>Committed r277824 (237970@main): &lt;https://commits.webkit.org/237970@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429192.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762137</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-20 14:27:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/78277460&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429021</attachid>
            <date>2021-05-18 19:16:03 -0700</date>
            <delta_ts>2021-05-18 19:19:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225956-20210518191602.patch</filename>
            <type>text/plain</type>
            <size>3584</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNGVjODAxNzNjZTkwYmQxMDg3ZDZmMjhhZmI3YWE3MzE4ZTJkMGJmMC4uYWI4OWE4ZTBlNTE5
NmQ4YWE0M2QzZWQzNDY3MDI0ZWU5ODUwOWJjZSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIxIEBACisyMDIxLTA1LTE4ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkIGZsYXNoZXMgem9vbWluZyBvbiBHb29nbGUg
TWFwcyB3aGVuIHVzaW5nIGV4dGVybmFsIG1vbml0b3Igb24gbXVsdGktZ3B1IHN5c3RlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk1NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBJT1N1cmZhY2UgcHJl
c2VudGF0aW9uIHN3YXBzIHJlcXVpcmUgdGhhdCBhIGNvbW1hbmQgYnVmZmVyIGlzIHF1ZXVlZCBm
b3IgZXhlY3V0aW9uIGJlZm9yZQorICAgICAgICBzd2FwcGluZy4gT3RoZXJ3aXNlLCB3ZSdyZSBs
aWFibGUgdG8gZHJvcCBmcmFtZXMsIG9yIHByZXNlbnQgb2xkIElPU3VyZmFjZSBidWZmZXJzLiAK
KyAgICAgICAgRW5zdXJlIHdvcmsgZmx1c2hlZCB2aWEgZ2xGbHVzaCBjb21wbGV0ZXMgYmVmb3Jl
IHByZXNlbmF0aW9uIGJ5IHdhaXRpbmcgZm9yIGl0IHRvIGVucXVldWUgYmVmb3JlIAorICAgICAg
ICBzd2FwcGluZyBhIHN1cmZhY2UuCisKKyAgICAgICAgKiBzcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvQ29udGV4dE10bC5tbToKKyAgICAgICAgKHJ4OjpDb250ZXh0TXRsOjpmbHVzaCk6Cisg
ICAgICAgICogc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tYW5kX2J1ZmZlci5o
OgorICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbWFuZF9idWZm
ZXIubW06CisgICAgICAgIChyeDo6bXRsOjpDb21tYW5kQnVmZmVyOjp3YWl0VW50aWxTY2hlZHVs
ZWQpOgorICAgICAgICAocng6Om10bDo6Q29tbWFuZEJ1ZmZlcjo6Y29tbWl0SW1wbCk6CisKIDIw
MjEtMDUtMTggIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBTdG9wIGNvbXBpbGluZyBBTkdMRSBtZXRhbCBmaWxlcyB0d2ljZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0Nv
bnRleHRNdGwubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVy
ZXIvbWV0YWwvQ29udGV4dE10bC5tbQppbmRleCAxZmQ4NWIyNmI4NThiZTdkNWFkMzgwYTgwMjQ4
Nzc5ZDdiNmYzNTcwLi40YzQxODU2YzI4MmZmYjJlMjdiMDg3YjMyNzY1NDI1OTVmZjg5NzdjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvQ29udGV4dE10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5tbQpAQCAtMjI2LDYgKzIyNiw3IEBAIGFu
Z2xlOjpSZXN1bHQgQ29udGV4dE10bDo6ZW5zdXJlSW5jb21wbGV0ZVRleHR1cmVzQ3JlYXRlZChj
b25zdCBnbDo6Q29udGV4dCAqY29uCiBhbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OmZsdXNoKGNv
bnN0IGdsOjpDb250ZXh0ICpjb250ZXh0KQogewogICAgIGZsdXNoQ29tbWFuZEJ1ZmVyKCk7Cisg
ICAgbUNtZEJ1ZmZlci53YWl0VW50aWxTY2hlZHVsZWQoKTsKICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6Q29udGludWU7CiB9CiBhbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OmZpbmlzaChjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbWFuZF9idWZmZXIuaCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29t
bWFuZF9idWZmZXIuaAppbmRleCA3OWNiODQzMGNlZmVhOGIyODBhOTQ0OGZmYWUyZThlNTk3Y2Fi
MTkyLi5kZmNmMjg0YjgzOGI3ZGQwYzMwOGRlNzY5ZDgzYTM1N2Y1OTgzNWQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X2NvbW1hbmRfYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tYW5kX2J1ZmZlci5oCkBAIC0xMDQsNiArMTA0LDkg
QEAgY2xhc3MgQ29tbWFuZEJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0PGlkPE1U
TENvbW1hbmRCdWZmZXI+PiwgYW5nbGU6Ok4KICAgICAvLyBhbmQgaGFzbid0IGJlZW4gcmVzdGFy
dGVkLgogICAgIGJvb2wgdmFsaWQoKSBjb25zdDsKICAgICB2b2lkIGNvbW1pdCgpOworICAgIAor
ICAgIC8vIHdhaXQgZm9yIHRoZSBjb21taXR0ZWQgY29tbWFuZCBidWZmZXIgdG8gYmUgc2NoZWR1
bGVkLgorICAgIHZvaWQgd2FpdFVudGlsU2NoZWR1bGVkKCk7CiAgICAgLy8gd2FpdCBmb3IgY29t
bWl0dGVkIGNvbW1hbmQgYnVmZmVyIHRvIGZpbmlzaC4KICAgICB2b2lkIGZpbmlzaCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIv
bWV0YWwvbXRsX2NvbW1hbmRfYnVmZmVyLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tYW5kX2J1ZmZlci5tbQppbmRleCBmODNj
OTdmYzlhZmZmMjE4YWY0ZjQyZDhjYTBhZjhlYTA5ODA3ODg0Li40YmI3ZmFiZWJlN2I4ZTVlMThl
YjJjODYyNzA0NjlkODc1NjVlZjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1hbmRfYnVmZmVyLm1tCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxf
Y29tbWFuZF9idWZmZXIubW0KQEAgLTU4OCw2ICs1ODgsMTEgQEAgdm9pZCBDb21tYW5kQnVmZmVy
Ojpjb21taXQoKQogICAgIGNvbW1pdEltcGwoKTsKIH0KIAordm9pZCBDb21tYW5kQnVmZmVyOjp3
YWl0VW50aWxTY2hlZHVsZWQoKQoreworICAgIFtnZXQoKSB3YWl0VW50aWxTY2hlZHVsZWRdOwor
fQorCiB2b2lkIENvbW1hbmRCdWZmZXI6OmZpbmlzaCgpCiB7CiAgICAgY29tbWl0KCk7CkBAIC03
NzYsNyArNzgxLDcgQEAgdm9pZCBDb21tYW5kQnVmZmVyOjpjb21taXRJbXBsKCkKIAogICAgIC8v
IERvIHRoZSBhY3R1YWwgY29tbWl0CiAgICAgW2dldCgpIGNvbW1pdF07Ci0KKyAgICBbZ2V0KCkg
d2FpdFVudGlsU2NoZWR1bGVkXTsKICAgICBtQ29tbWl0dGVkID0gdHJ1ZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429023</attachid>
            <date>2021-05-18 19:19:49 -0700</date>
            <delta_ts>2021-05-20 11:09:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225956-20210518191949.patch</filename>
            <type>text/plain</type>
            <size>3586</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3NjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggNGVjODAxNzNjZTkwYmQxMDg3ZDZmMjhhZmI3YWE3MzE4ZTJkMGJmMC4uMTg1OGJkMDg5NDlm
YzRiY2JlODZiZjIwNjJiMjQwYjYyNzZkMGVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTE4ICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkIGZsYXNoZXMgem9vbWluZyBvbiBHb29nbGUg
TWFwcyB3aGVuIHVzaW5nIGV4dGVybmFsIG1vbml0b3Igb24gbXVsdGktZ3B1IHN5c3RlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk1NgorICAg
ICAgICA8cmRhcjovLzc3MDI0MTc5PiAgICAgICAgCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIElPU3VyZmFjZSBwcmVzZW50YXRpb24gc3dhcHMgcmVxdWly
ZSB0aGF0IGEgY29tbWFuZCBidWZmZXIgaXMgcXVldWVkIGZvciBleGVjdXRpb24gYmVmb3JlCisg
ICAgICAgIHN3YXBwaW5nLiBPdGhlcndpc2UsIHdlJ3JlIGxpYWJsZSB0byBkcm9wIGZyYW1lcywg
b3IgcHJlc2VudCBvbGQgSU9TdXJmYWNlIGJ1ZmZlcnMuIAorICAgICAgICBFbnN1cmUgd29yayBm
bHVzaGVkIHZpYSBnbEZsdXNoIGNvbXBsZXRlcyBiZWZvcmUgcHJlc2VuYXRpb24gYnkgd2FpdGlu
ZyBmb3IgaXQgdG8gZW5xdWV1ZSBiZWZvcmUgCisgICAgICAgIHN3YXBwaW5nIGEgc3VyZmFjZS4K
KworICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1tOgor
ICAgICAgICAocng6OkNvbnRleHRNdGw6OmZsdXNoKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1hbmRfYnVmZmVyLmg6CisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tYW5kX2J1ZmZlci5tbToKKyAgICAgICAgKHJ4Ojpt
dGw6OkNvbW1hbmRCdWZmZXI6OndhaXRVbnRpbFNjaGVkdWxlZCk6CisgICAgICAgIChyeDo6bXRs
OjpDb21tYW5kQnVmZmVyOjpjb21taXRJbXBsKToKKwogMjAyMS0wNS0xOCAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFN0b3AgY29tcGlsaW5n
IEFOR0xFIG1ldGFsIGZpbGVzIHR3aWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5tbSBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1t
CmluZGV4IDFmZDg1YjI2Yjg1OGJlN2Q1YWQzODBhODAyNDg3NzlkN2I2ZjM1NzAuLjRjNDE4NTZj
MjgyZmZiMmUyN2IwODdiMzI3NjU0MjU5NWZmODk3N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1tCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9D
b250ZXh0TXRsLm1tCkBAIC0yMjYsNiArMjI2LDcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0TXRs
OjplbnN1cmVJbmNvbXBsZXRlVGV4dHVyZXNDcmVhdGVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb24K
IGFuZ2xlOjpSZXN1bHQgQ29udGV4dE10bDo6Zmx1c2goY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRl
eHQpCiB7CiAgICAgZmx1c2hDb21tYW5kQnVmZXIoKTsKKyAgICBtQ21kQnVmZmVyLndhaXRVbnRp
bFNjaGVkdWxlZCgpOwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIGFu
Z2xlOjpSZXN1bHQgQ29udGV4dE10bDo6ZmluaXNoKGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL210bF9jb21tYW5kX2J1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tYW5kX2J1ZmZlci5oCmluZGV4IDc5
Y2I4NDMwY2VmZWE4YjI4MGE5NDQ4ZmZhZTJlOGU1OTdjYWIxOTIuLmRmY2YyODRiODM4YjdkZDBj
MzA4ZGU3NjlkODNhMzU3ZjU5ODM1ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbWFuZF9idWZmZXIuaAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X2NvbW1hbmRfYnVmZmVyLmgKQEAgLTEwNCw2ICsxMDQsOSBAQCBjbGFzcyBDb21tYW5kQnVmZmVy
IGZpbmFsIDogcHVibGljIFdyYXBwZWRPYmplY3Q8aWQ8TVRMQ29tbWFuZEJ1ZmZlcj4+LCBhbmds
ZTo6TgogICAgIC8vIGFuZCBoYXNuJ3QgYmVlbiByZXN0YXJ0ZWQuCiAgICAgYm9vbCB2YWxpZCgp
IGNvbnN0OwogICAgIHZvaWQgY29tbWl0KCk7CisgICAgCisgICAgLy8gd2FpdCBmb3IgdGhlIGNv
bW1pdHRlZCBjb21tYW5kIGJ1ZmZlciB0byBiZSBzY2hlZHVsZWQuCisgICAgdm9pZCB3YWl0VW50
aWxTY2hlZHVsZWQoKTsKICAgICAvLyB3YWl0IGZvciBjb21taXR0ZWQgY29tbWFuZCBidWZmZXIg
dG8gZmluaXNoLgogICAgIHZvaWQgZmluaXNoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbWFuZF9idWZm
ZXIubW0gYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0
YWwvbXRsX2NvbW1hbmRfYnVmZmVyLm1tCmluZGV4IGY4M2M5N2ZjOWFmZmYyMThhZjRmNDJkOGNh
MGFmOGVhMDk4MDc4ODQuLjE3NDBmMjFlMTc1MzhjNjYwNGY4ZjA3ZmI3NjZlZjI2YWVjMDJkMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJl
ci9tZXRhbC9tdGxfY29tbWFuZF9idWZmZXIubW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tYW5kX2J1ZmZlci5tbQpAQCAt
NTg4LDYgKzU4OCwxMSBAQCB2b2lkIENvbW1hbmRCdWZmZXI6OmNvbW1pdCgpCiAgICAgY29tbWl0
SW1wbCgpOwogfQogCit2b2lkIENvbW1hbmRCdWZmZXI6OndhaXRVbnRpbFNjaGVkdWxlZCgpCit7
CisgICAgW2dldCgpIHdhaXRVbnRpbFNjaGVkdWxlZF07Cit9CisKIHZvaWQgQ29tbWFuZEJ1ZmZl
cjo6ZmluaXNoKCkKIHsKICAgICBjb21taXQoKTsKQEAgLTc3Niw3ICs3ODEsNiBAQCB2b2lkIENv
bW1hbmRCdWZmZXI6OmNvbW1pdEltcGwoKQogCiAgICAgLy8gRG8gdGhlIGFjdHVhbCBjb21taXQK
ICAgICBbZ2V0KCkgY29tbWl0XTsKLQogICAgIG1Db21taXR0ZWQgPSB0cnVlOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429192</attachid>
            <date>2021-05-20 11:09:55 -0700</date>
            <delta_ts>2021-05-20 14:26:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-225956-20210520110954.patch</filename>
            <type>text/plain</type>
            <size>12626</size>
            <attacher name="Kyle Piddington">kpiddington</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3Nzg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggYzRlNjI4MGI5MmU3YzEyOTY3OTc0NDkxZWI3NDY2ZDlkN2UyZDEyNS4uNjE4MmMyNTcxNTNm
ZDNlZWJlMTcwZGJlODYxODI4ZDg4ZDdlNmRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIyIEBACisyMDIxLTA1LTIwICBLeWxlIFBpZGRpbmd0b24gIDxrcGlkZGlu
Z3RvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVkIGZsYXNoZXMgem9vbWluZyBvbiBHb29nbGUg
TWFwcyB3aGVuIHVzaW5nIGV4dGVybmFsIG1vbml0b3Igb24gbXVsdGktZ3B1IHN5c3RlbXMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNTk1NgorICAg
ICAgICA8cmRhcjovLzc3MDI0MTc5PiAgICAgICAgCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisgICAgICAgIElPU3VyZmFjZSBwcmVzZW50YXRpb24gc3dhcHMgcmVxdWly
ZSB0aGF0IGEgY29tbWFuZCBidWZmZXIgaXMgcXVldWVkIGZvciBleGVjdXRpb24gYmVmb3JlCisg
ICAgICAgIHN3YXBwaW5nLiBPdGhlcndpc2UsIHdlJ3JlIGxpYWJsZSB0byBkcm9wIGZyYW1lcywg
b3IgcHJlc2VudCBvbGQgSU9TdXJmYWNlIGJ1ZmZlcnMuIAorICAgICAgICBFbnN1cmUgd29yayBm
bHVzaGVkIHZpYSBnbEZsdXNoIGNvbXBsZXRlcyBiZWZvcmUgcHJlc2VuYXRpb24gYnkgd2FpdGlu
ZyBmb3IgaXQgdG8gZW5xdWV1ZSBiZWZvcmUgCisgICAgICAgIHN3YXBwaW5nIGEgc3VyZmFjZS4K
KworICAgICAgICAqIHNyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1tOgor
ICAgICAgICAocng6OkNvbnRleHRNdGw6OmZsdXNoKToKKyAgICAgICAgKiBzcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1hbmRfYnVmZmVyLmg6CisgICAgICAgICogc3JjL2xpYkFO
R0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tYW5kX2J1ZmZlci5tbToKKyAgICAgICAgKHJ4Ojpt
dGw6OkNvbW1hbmRCdWZmZXI6OndhaXRVbnRpbFNjaGVkdWxlZCk6CisgICAgICAgIChyeDo6bXRs
OjpDb21tYW5kQnVmZmVyOjpjb21taXRJbXBsKToKKwogMjAyMS0wNS0xOSAgS3lsZSBQaWRkaW5n
dG9uICA8a3BpZGRpbmd0b25AYXBwbGUuY29tPgogCiAgICAgICAgIEFTU0VSVCghdG9UeXBlLmlz
QXJyYXkoKSkgZmFpbHVyZSBpbiBzaDo6Q29lcmNlU2ltcGxlIGR1ZSB0byB2ZWN0b3IgYXJyYXkg
ZGVyZWZlcmVuY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJB
TkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5oCmluZGV4IDg1M2E2Yzhi
ZWI5YTI4ZDIyNmYyMzNiZTc4NGFkNjA1NzBmZTA0ZDMuLjZmODY3MTFiZWQ4MzM3MWNiNmY0ODMx
YzFlNTVkMDk0ZDhiMzQ3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL0NvbnRleHRNdGwuaApAQCAt
MzM0LDcgKzMzNCw3IEBAIGNsYXNzIENvbnRleHRNdGwgOiBwdWJsaWMgQ29udGV4dEltcGwsIHB1
YmxpYyBtdGw6OkNvbnRleHQKICAgICAvLyBFbmRzIGFueSBhY3RpdmUgY29tbWFuZCBlbmNvZGVy
CiAgICAgdm9pZCBlbmRFbmNvZGluZyhib29sIGZvcmNlU2F2ZVJlbmRlclBhc3NDb250ZW50KTsK
IAotICAgIHZvaWQgZmx1c2hDb21tYW5kQnVmZXIoKTsKKyAgICB2b2lkIGZsdXNoQ29tbWFuZEJ1
ZmZlcihtdGw6OkNvbW1hbmRCdWZmZXJGaW5pc2hPcGVyYXRpb24gb3BlcmF0aW9uKTsKICAgICB2
b2lkIHByZXNlbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIGlkPENBTWV0YWxEcmF3YWJs
ZT4gcHJlc2VudGF0aW9uRHJhd2FibGUpOwogICAgIGFuZ2xlOjpSZXN1bHQgZmluaXNoQ29tbWFu
ZEJ1ZmZlcigpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
QU5HTEUvcmVuZGVyZXIvbWV0YWwvQ29udGV4dE10bC5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1tCmluZGV4IDg4YzAz
ZTUzMGQ1ZDQ0MmMzZTE5YWQ0MmMyNTg0ZGU1OTIzZWE3ZDguLjQ2NDkwYzIwYmY4YjIxOGJiNGQ4
ZTdmYmE3YjZkZDFmM2YwZGFjYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1tCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9Db250ZXh0TXRsLm1t
CkBAIC0yMjQsNyArMjI0LDcgQEAgYW5nbGU6OlJlc3VsdCBDb250ZXh0TXRsOjplbnN1cmVJbmNv
bXBsZXRlVGV4dHVyZXNDcmVhdGVkKGNvbnN0IGdsOjpDb250ZXh0ICpjb24KIC8vIEZsdXNoIGFu
ZCBmaW5pc2guCiBhbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OmZsdXNoKGNvbnN0IGdsOjpDb250
ZXh0ICpjb250ZXh0KQogewotICAgIGZsdXNoQ29tbWFuZEJ1ZmVyKCk7CisgICAgZmx1c2hDb21t
YW5kQnVmZmVyKG10bDo6V2FpdFVudGlsU2NoZWR1bGVkKTsKICAgICByZXR1cm4gYW5nbGU6OlJl
c3VsdDo6Q29udGludWU7CiB9CiBhbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OmZpbmlzaChjb25z
dCBnbDo6Q29udGV4dCAqY29udGV4dCkKQEAgLTEyMTksNyArMTIxOSw3IEBAIGFuZ2xlOjpSZXN1
bHQgQ29udGV4dE10bDo6b25NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkK
IH0KIGFuZ2xlOjpSZXN1bHQgQ29udGV4dE10bDo6b25Vbk1ha2VDdXJyZW50KGNvbnN0IGdsOjpD
b250ZXh0ICpjb250ZXh0KQogewotICAgIGZsdXNoQ29tbWFuZEJ1ZmVyKCk7CisgICAgZmx1c2hD
b21tYW5kQnVmZmVyKG10bDo6V2FpdFVudGlsU2NoZWR1bGVkKTsKICAgICByZXR1cm4gYW5nbGU6
OlJlc3VsdDo6Q29udGludWU7CiB9CiAKQEAgLTE2MDQsNyArMTYwNCw3IEBAIHZvaWQgQ29udGV4
dE10bDo6ZW5kRW5jb2RpbmcoYm9vbCBmb3JjZVNhdmVSZW5kZXJQYXNzQ29udGVudCkKICAgICB9
CiB9CiAKLXZvaWQgQ29udGV4dE10bDo6Zmx1c2hDb21tYW5kQnVmZXIoKQordm9pZCBDb250ZXh0
TXRsOjpmbHVzaENvbW1hbmRCdWZmZXIobXRsOjpDb21tYW5kQnVmZmVyRmluaXNoT3BlcmF0aW9u
IG9wZXJhdGlvbikKIHsKICAgICBtUHJvdm9raW5nVmVydGV4SGVscGVyLmNvbW1pdFByZWNvbmRp
dGlvbkNvbW1hbmRCdWZmZXIodGhpcyk7CiAgICAgaWYgKCFtQ21kQnVmZmVyLnZhbGlkKCkpCkBA
IC0xNjEzLDcgKzE2MTMsNyBAQCB2b2lkIENvbnRleHRNdGw6OmZsdXNoQ29tbWFuZEJ1ZmVyKCkK
ICAgICB9CiAKICAgICBlbmRFbmNvZGluZyh0cnVlKTsKLSAgICBtQ21kQnVmZmVyLmNvbW1pdCgp
OworICAgIG1DbWRCdWZmZXIuY29tbWl0KG9wZXJhdGlvbik7CiB9CiAKIHZvaWQgQ29udGV4dE10
bDo6cHJlc2VudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCwgaWQ8Q0FNZXRhbERyYXdhYmxl
PiBwcmVzZW50YXRpb25EcmF3YWJsZSkKQEAgLTE2MzQsMTAgKzE2MzQsNyBAQCB2b2lkIENvbnRl
eHRNdGw6OnByZXNlbnQoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIGlkPENBTWV0YWxEcmF3
YWJsZT4gcHJlc2VudAogCiBhbmdsZTo6UmVzdWx0IENvbnRleHRNdGw6OmZpbmlzaENvbW1hbmRC
dWZmZXIoKQogewotICAgIGZsdXNoQ29tbWFuZEJ1ZmVyKCk7Ci0KLSAgICBtQ21kQnVmZmVyLmZp
bmlzaCgpOwotCisgICAgZmx1c2hDb21tYW5kQnVmZmVyKG10bDo6V2FpdFVudGlsRmluaXNoZWQp
OwogICAgIHJldHVybiBhbmdsZTo6UmVzdWx0OjpDb250aW51ZTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1F1ZXJ5
TXRsLm1tIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21l
dGFsL1F1ZXJ5TXRsLm1tCmluZGV4IGFiMGU3YmYwODAxMTUyYzA3YWJiMDIwMDMzYjhjZjU1NWM3
NTNjMDUuLjE0NTkwODVkNDIxMzgyOTM4MDEyMTY2OTNjYjM1Y2ZiNGQ1NjRiMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9R
dWVyeU10bC5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVu
ZGVyZXIvbWV0YWwvUXVlcnlNdGwubW0KQEAgLTExNCw3ICsxMTQsNyBAQCBhbmdsZTo6UmVzdWx0
IFF1ZXJ5TXRsOjp3YWl0QW5kR2V0UmVzdWx0KGNvbnN0IGdsOjpDb250ZXh0ICpjb250ZXh0LCBU
ICpwYXJhbXMpCiAgICAgICAgICAgICBBU1NFUlQobVZpc2liaWxpdHlSZXN1bHRCdWZmZXIpOwog
ICAgICAgICAgICAgaWYgKG1WaXNpYmlsaXR5UmVzdWx0QnVmZmVyLT5oYXNQZW5kaW5nV29ya3Mo
Y29udGV4dE10bCkpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgY29udGV4dE10bC0+
Zmx1c2hDb21tYW5kQnVmZXIoKTsKKyAgICAgICAgICAgICAgICBjb250ZXh0TXRsLT5mbHVzaENv
bW1hbmRCdWZmZXIobXRsOjpOb1dhaXQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8g
bWFwKCkgd2lsbCB3YWl0IGZvciB0aGUgcGVuZGluZyBHUFUgd29ya3MgdG8gZmluaXNoCiAgICAg
ICAgICAgICBjb25zdCB1aW50OF90ICp2aXNpYmlsaXR5UmVzdWx0Qnl0ZXMgPSBtVmlzaWJpbGl0
eVJlc3VsdEJ1ZmZlci0+bWFwUmVhZE9ubHkoY29udGV4dE10bCk7CkBAIC0xNDcsNyArMTQ3LDcg
QEAgYW5nbGU6OlJlc3VsdCBRdWVyeU10bDo6aXNSZXN1bHRBdmFpbGFibGUoY29uc3QgZ2w6OkNv
bnRleHQgKmNvbnRleHQsIGJvb2wgKmF2YWkKICAgICAgICAgICAgIEFTU0VSVChtVmlzaWJpbGl0
eVJlc3VsdEJ1ZmZlcik7CiAgICAgICAgICAgICBpZiAobVZpc2liaWxpdHlSZXN1bHRCdWZmZXIt
Pmhhc1BlbmRpbmdXb3Jrcyhjb250ZXh0TXRsKSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg
ICAgICBjb250ZXh0TXRsLT5mbHVzaENvbW1hbmRCdWZlcigpOworICAgICAgICAgICAgICAgIGNv
bnRleHRNdGwtPmZsdXNoQ29tbWFuZEJ1ZmZlcihtdGw6Ok5vV2FpdCk7CiAgICAgICAgICAgICB9
CiAKICAgICAgICAgICAgICphdmFpbGFibGUgPSAhbVZpc2liaWxpdHlSZXN1bHRCdWZmZXItPmlz
QmVpbmdVc2VkQnlHUFUoY29udGV4dE10bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3VyZmFjZU10bC5tbSBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNlTXRs
Lm1tCmluZGV4IDI3ZWY1MDlmZjg2NWM2NDdhZjMxZGNlNDJlZmM0MGI3MTQzMjQyYmMuLjBkZTNj
NTgzMGZjOGJiYjcyNDFiNWI0M2UxZDYyNjI0ZmQyMjZjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRhbC9TdXJmYWNlTXRsLm1t
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9tZXRh
bC9TdXJmYWNlTXRsLm1tCkBAIC0zMjIsNyArMzIyLDcgQEAgZWdsOjpFcnJvciBTdXJmYWNlTXRs
OjptYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIGVnbDo6RXJyb3IgU3Vy
ZmFjZU10bDo6dW5NYWtlQ3VycmVudChjb25zdCBnbDo6Q29udGV4dCAqY29udGV4dCkKIHsKICAg
ICBDb250ZXh0TXRsICpjb250ZXh0TXRsID0gbXRsOjpHZXRJbXBsKGNvbnRleHQpOwotICAgIGNv
bnRleHRNdGwtPmZsdXNoQ29tbWFuZEJ1ZmVyKCk7CisgICAgY29udGV4dE10bC0+Zmx1c2hDb21t
YW5kQnVmZmVyKG10bDo6V2FpdFVudGlsU2NoZWR1bGVkKTsKIAogICAgIFN0b3BGcmFtZUNhcHR1
cmUoKTsKICAgICByZXR1cm4gZWdsOjpOb0Vycm9yKCk7CkBAIC04NzQsNyArODc0LDcgQEAgZWds
OjpFcnJvciBPZmZzY3JlZW5TdXJmYWNlTXRsOjpiaW5kVGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRl
eHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBFR0xpbnQgYnVmZmVyKQogewogICAgIENvbnRleHRNdGwgKmNvbnRleHRNdGwgPSBtdGw6Okdl
dEltcGwoY29udGV4dCk7Ci0gICAgY29udGV4dE10bC0+Zmx1c2hDb21tYW5kQnVmZXIoKTsKKyAg
ICBjb250ZXh0TXRsLT5mbHVzaENvbW1hbmRCdWZmZXIobXRsOjpXYWl0VW50aWxTY2hlZHVsZWQp
OwogCiAgICAgLy8gSW5pdGlhbGl6ZSBvZmZzY3JlZW4gdGV4dHVyZXMgaWYgbmVlZGVkOgogICAg
IEFOR0xFX1RPX0VHTF9UUlkoZW5zdXJlVGV4dHVyZXNTaXplQ29ycmVjdChjb250ZXh0KSk7CkBA
IC04OTIsNyArODkyLDcgQEAgZWdsOjpFcnJvciBPZmZzY3JlZW5TdXJmYWNlTXRsOjpyZWxlYXNl
VGV4SW1hZ2UoY29uc3QgZ2w6OkNvbnRleHQgKmNvbnRleHQsIEVHTGkKICAgICB9CiAKICAgICAv
LyBOT1RFKGhxbGUpOiBTaG91bGQgd2UgZmluaXNoQ29tbWFuZEJ1ZmZlciBvciBmbHVzaCBpcyBl
bm91Z2g/Ci0gICAgY29udGV4dE10bC0+Zmx1c2hDb21tYW5kQnVmZXIoKTsKKyAgICBjb250ZXh0
TXRsLT5mbHVzaENvbW1hbmRCdWZmZXIobXRsOjpXYWl0VW50aWxTY2hlZHVsZWQpOwogICAgIHJl
dHVybiBlZ2w6Ok5vRXJyb3IoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL1N5bmNNdGwubW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3luY010bC5tbQppbmRl
eCBmOGYzZWU2OTc5OGJiMWMyOGYzZTJkYTE5NTY5NjUyOWI3ZTgwYzk5Li5iNWRiNWJkZmRmM2Yz
OWYwY2YwYmZiZGE2NDllNTA3MTUzZDBjMzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3luY010bC5tbQorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvU3luY010bC5t
bQpAQCAtNzMsNyArNzMsNyBAQCBhbmdsZTo6UmVzdWx0IFN5bmM6OmNsaWVudFdhaXQoQ29udGV4
dE10bCAqY29udGV4dE10bCwKICAgICB9CiAgICAgaWYgKGZsdXNoQ29tbWFuZHMpCiAgICAgewot
ICAgICAgICBjb250ZXh0TXRsLT5mbHVzaENvbW1hbmRCdWZlcigpOworICAgICAgICBjb250ZXh0
TXRsLT5mbHVzaENvbW1hbmRCdWZmZXIobXRsOjpXYWl0VW50aWxTY2hlZHVsZWQpOwogICAgIH0K
IAogICAgIGlmICh0aW1lb3V0ID09IDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2J1ZmZlcl9wb29sLm1tIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9idWZm
ZXJfcG9vbC5tbQppbmRleCBhNThiNWE1YTNlOTc3ODBmNzg3NTkyMDdhMGZhMTI1NTE5YTlkNWFh
Li5jMjNkZTY1MDVlMDdkNzA2YjEzZDJhNzFhMGFjM2I0Mjg4N2RiODY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2J1
ZmZlcl9wb29sLm1tCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9y
ZW5kZXJlci9tZXRhbC9tdGxfYnVmZmVyX3Bvb2wubW0KQEAgLTE0Nyw3ICsxNDcsNyBAQCBhbmds
ZTo6UmVzdWx0IEJ1ZmZlclBvb2w6OmFsbG9jYXRlTmV3QnVmZmVyKENvbnRleHRNdGwgKmNvbnRl
eHRNdGwpCiAgICAgICAgIC8vIFJldXNlIHRoZSBidWZmZXIgaW4gZnJlZSBsaXN0OgogICAgICAg
ICBpZiAobUJ1ZmZlckZyZWVMaXN0LmZyb250KCktPmlzQmVpbmdVc2VkQnlHUFUoY29udGV4dE10
bCkpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGNvbnRleHRNdGwtPmZsdXNoQ29tbWFuZEJ1ZmVy
KCk7CisgICAgICAgICAgICBjb250ZXh0TXRsLT5mbHVzaENvbW1hbmRCdWZmZXIobXRsOjpOb1dh
aXQpOwogICAgICAgICAgICAgLy8gRm9yY2UgdGhlIEdQVSB0byBmaW5pc2ggaXRzIHJlbmRlcmlu
ZyBhbmQgbWFrZSB0aGUgb2xkIGJ1ZmZlciBhdmFpbGFibGUuCiAgICAgICAgICAgICBjb250ZXh0
TXRsLT5jbWRRdWV1ZSgpLmVuc3VyZVJlc291cmNlUmVhZHlGb3JDUFUobUJ1ZmZlckZyZWVMaXN0
LmZyb250KCkpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1hbmRfYnVmZmVyLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1h
bmRfYnVmZmVyLmgKaW5kZXggNzljYjg0MzBjZWZlYThiMjgwYTk0NDhmZmFlMmU4ZTU5N2NhYjE5
Mi4uNmUwYjMzYWFlMTllZTA5ZDRiZGY2MjQ3NmZhNDJhM2M5NTgwZjVhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9j
b21tYW5kX2J1ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdM
RS9yZW5kZXJlci9tZXRhbC9tdGxfY29tbWFuZF9idWZmZXIuaApAQCAtMzIsNiArMzIsMTMgQEAg
bmFtZXNwYWNlIHJ4CiBuYW1lc3BhY2UgbXRsCiB7CiAKK2VudW0gQ29tbWFuZEJ1ZmZlckZpbmlz
aE9wZXJhdGlvbgoreworICAgIE5vV2FpdCwKKyAgICBXYWl0VW50aWxTY2hlZHVsZWQsCisgICAg
V2FpdFVudGlsRmluaXNoZWQKK307CisKIGNsYXNzIENvbW1hbmRCdWZmZXI7CiBjbGFzcyBDb21t
YW5kRW5jb2RlcjsKIGNsYXNzIFJlbmRlckNvbW1hbmRFbmNvZGVyOwpAQCAtOTEsNiArOTgsNyBA
QCBjbGFzcyBDb21tYW5kUXVldWUgZmluYWwgOiBwdWJsaWMgV3JhcHBlZE9iamVjdDxpZDxNVExD
b21tYW5kUXVldWU+PiwgYW5nbGU6Ok5vbgogICAgIG11dGFibGUgc3RkOjptdXRleCBtTG9jazsK
IH07CiAKKwogY2xhc3MgQ29tbWFuZEJ1ZmZlciBmaW5hbCA6IHB1YmxpYyBXcmFwcGVkT2JqZWN0
PGlkPE1UTENvbW1hbmRCdWZmZXI+PiwgYW5nbGU6Ok5vbkNvcHlhYmxlCiB7CiAgIHB1YmxpYzoK
QEAgLTEwMyw5ICsxMTEsOSBAQCBjbGFzcyBDb21tYW5kQnVmZmVyIGZpbmFsIDogcHVibGljIFdy
YXBwZWRPYmplY3Q8aWQ8TVRMQ29tbWFuZEJ1ZmZlcj4+LCBhbmdsZTo6TgogICAgIC8vIFJldHVy
biB0cnVlIGlmIGNvbW1hbmQgYnVmZmVyIGNhbiBiZSBlbmNvZGVkIGludG8uIFJldHVybiBmYWxz
ZSBpZiBpdCBoYXMgYmVlbiBjb21taXR0ZWQKICAgICAvLyBhbmQgaGFzbid0IGJlZW4gcmVzdGFy
dGVkLgogICAgIGJvb2wgdmFsaWQoKSBjb25zdDsKLSAgICB2b2lkIGNvbW1pdCgpOwotICAgIC8v
IHdhaXQgZm9yIGNvbW1pdHRlZCBjb21tYW5kIGJ1ZmZlciB0byBmaW5pc2guCi0gICAgdm9pZCBm
aW5pc2goKTsKKyAgICB2b2lkIGNvbW1pdChDb21tYW5kQnVmZmVyRmluaXNoT3BlcmF0aW9uIG9w
ZXJhdGlvbiA9IE5vV2FpdCk7CisgICAgCisKIAogICAgIHZvaWQgcHJlc2VudChpZDxDQU1ldGFs
RHJhd2FibGU+IHByZXNlbnRhdGlvbkRyYXdhYmxlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9jb21tYW5kX2J1
ZmZlci5tbSBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJBTkdMRS9yZW5kZXJlci9t
ZXRhbC9tdGxfY29tbWFuZF9idWZmZXIubW0KaW5kZXggZjgzYzk3ZmM5YWZmZjIxOGFmNGY0MmQ4
Y2EwYWY4ZWEwOTgwNzg4NC4uYmUwNTkxYmEyMTY0ZWZlYjE0NzQ0NWM1YTk3MGM4ZWU5ZDBlZjc0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRl
cmVyL21ldGFsL210bF9jb21tYW5kX2J1ZmZlci5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRsX2NvbW1hbmRfYnVmZmVyLm1tCkBA
IC01NzEsNyArNTcxLDcgQEAgQ29tbWFuZEJ1ZmZlcjo6Q29tbWFuZEJ1ZmZlcihDb21tYW5kUXVl
dWUgKmNtZFF1ZXVlKSA6IG1DbWRRdWV1ZSgqY21kUXVldWUpIHt9CiAKIENvbW1hbmRCdWZmZXI6
On5Db21tYW5kQnVmZmVyKCkKIHsKLSAgICBmaW5pc2goKTsKKyAgICBjb21taXQoV2FpdFVudGls
RmluaXNoZWQpOwogICAgIGNsZWFudXAoKTsKIH0KIApAQCAtNTgyLDE3ICs1ODIsMjEgQEAgYm9v
bCBDb21tYW5kQnVmZmVyOjp2YWxpZCgpIGNvbnN0CiAgICAgcmV0dXJuIHZhbGlkSW1wbCgpOwog
fQogCi12b2lkIENvbW1hbmRCdWZmZXI6OmNvbW1pdCgpCit2b2lkIENvbW1hbmRCdWZmZXI6OmNv
bW1pdChDb21tYW5kQnVmZmVyRmluaXNoT3BlcmF0aW9uIG9wZXJhdGlvbikKIHsKICAgICBzdGQ6
OmxvY2tfZ3VhcmQ8c3RkOjptdXRleD4gbGcobUxvY2spOwogICAgIGNvbW1pdEltcGwoKTsKKyAg
ICBpZihvcGVyYXRpb24gPT0gV2FpdFVudGlsU2NoZWR1bGVkKQorICAgIHsKKyAgICAgICAgW2dl
dCgpIHdhaXRVbnRpbFNjaGVkdWxlZF07CisgICAgfQorICAgIGVsc2UgaWYob3BlcmF0aW9uID09
IFdhaXRVbnRpbEZpbmlzaGVkKQorICAgIHsKKyAgICAgICAgW2dldCgpIHdhaXRVbnRpbENvbXBs
ZXRlZF07CisgICAgfQogfQogCi12b2lkIENvbW1hbmRCdWZmZXI6OmZpbmlzaCgpCi17Ci0gICAg
Y29tbWl0KCk7Ci0gICAgW2dldCgpIHdhaXRVbnRpbENvbXBsZXRlZF07Ci19CisKIAogdm9pZCBD
b21tYW5kQnVmZmVyOjpwcmVzZW50KGlkPENBTWV0YWxEcmF3YWJsZT4gcHJlc2VudGF0aW9uRHJh
d2FibGUpCiB7CkBAIC03NzYsNyArNzgwLDYgQEAgdm9pZCBDb21tYW5kQnVmZmVyOjpjb21taXRJ
bXBsKCkKIAogICAgIC8vIERvIHRoZSBhY3R1YWwgY29tbWl0CiAgICAgW2dldCgpIGNvbW1pdF07
Ci0KICAgICBtQ29tbWl0dGVkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkFOR0xFL3JlbmRlcmVyL21ldGFsL210bF9yZXNvdXJjZXMubW0g
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X3Jlc291cmNlcy5tbQppbmRleCBkNzcxYmMxMDY0MzYwOWM5MjY5Yzk0MTgzOGNiMzNmMTdiYmQw
OGRhLi4zMzk2NGY2MTczMDFlZDZlNjNmNzVmN2RmMWIyYzA2Njc0MjgzY2YzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUvcmVuZGVyZXIvbWV0YWwvbXRs
X3Jlc291cmNlcy5tbQorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliQU5HTEUv
cmVuZGVyZXIvbWV0YWwvbXRsX3Jlc291cmNlcy5tbQpAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQg
VGV4dHVyZTo6cmVwbGFjZVJlZ2lvbihDb250ZXh0TXRsICpjb250ZXh0LAogICAgIC8vIE5PVEUo
aHFsZSk6IHdoYXQgaWYgbXVsdGlwbGUgY29udGV4dHMgb24gbXVsdGlwbGUgdGhyZWFkcyBhcmUg
dXNpbmcgdGhpcyB0ZXh0dXJlPwogICAgIGlmICh0aGlzLT5pc0JlaW5nVXNlZEJ5R1BVKGNvbnRl
eHQpKQogICAgIHsKLSAgICAgICAgY29udGV4dC0+Zmx1c2hDb21tYW5kQnVmZXIoKTsKKyAgICAg
ICAgY29udGV4dC0+Zmx1c2hDb21tYW5kQnVmZmVyKG10bDo6Tm9XYWl0KTsKICAgICB9CiAKICAg
ICBjbWRRdWV1ZS5lbnN1cmVSZXNvdXJjZVJlYWR5Rm9yQ1BVKHRoaXMpOwpAQCAtNTkyLDcgKzU5
Miw3IEBAIHZvaWQgVGV4dHVyZTo6Z2V0Qnl0ZXMoQ29udGV4dE10bCAqY29udGV4dCwKICAgICAv
LyBOT1RFKGhxbGUpOiB3aGF0IGlmIG11bHRpcGxlIGNvbnRleHRzIG9uIG11bHRpcGxlIHRocmVh
ZHMgYXJlIHVzaW5nIHRoaXMgdGV4dHVyZT8KICAgICBpZiAodGhpcy0+aXNCZWluZ1VzZWRCeUdQ
VShjb250ZXh0KSkKICAgICB7Ci0gICAgICAgIGNvbnRleHQtPmZsdXNoQ29tbWFuZEJ1ZmVyKCk7
CisgICAgICAgIGNvbnRleHQtPmZsdXNoQ29tbWFuZEJ1ZmZlcihtdGw6Ok5vV2FpdCk7CiAgICAg
fQogCiAgICAgY21kUXVldWUuZW5zdXJlUmVzb3VyY2VSZWFkeUZvckNQVSh0aGlzKTsKQEAgLTEw
MDgsNyArMTAwOCw3IEBAIHVpbnQ4X3QgKkJ1ZmZlcjo6bWFwV2l0aE9wdChDb250ZXh0TXRsICpj
b250ZXh0LCBib29sIHJlYWRvbmx5LCBib29sIG5vU3luYykKIAogICAgICAgICBpZiAodGhpcy0+
aXNCZWluZ1VzZWRCeUdQVShjb250ZXh0KSkKICAgICAgICAgewotICAgICAgICAgICAgY29udGV4
dC0+Zmx1c2hDb21tYW5kQnVmZXIoKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZsdXNoQ29tbWFu
ZEJ1ZmZlcihtdGw6Ok5vV2FpdCk7CiAgICAgICAgIH0KIAogICAgICAgICBjbWRRdWV1ZS5lbnN1
cmVSZXNvdXJjZVJlYWR5Rm9yQ1BVKHRoaXMpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>