<?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>226481</bug_id>
          
          <creation_ts>2021-05-31 22:15:57 -0700</creation_ts>
          <short_desc>[MSE] When mediaSample of the same pts and dts are received consecutively, the mediaSample received later are discarded.</short_desc>
          <delta_ts>2022-02-10 16:38:21 -0800</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>INVALID</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="Toshio Ogasawara">toshio.ogasawara</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>calvaris</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>jean-yves.avenard</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>tomoki.imai</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>Yousuke.Kimoto</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1765516</commentid>
    <comment_count>0</comment_count>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-05-31 22:15:57 -0700</bug_when>
    <thetext>When mediaSample of the same pts and dts are received consecutively, SourceBufferPrivate::didReceiveSample() discards the mediaSample received later.
Remove the mediaSample received earlier in order to give priority to the mediaSample received later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765517</commentid>
    <comment_count>1</comment_count>
      <attachid>430231</attachid>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-05-31 22:44:17 -0700</bug_when>
    <thetext>Created attachment 430231
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765520</commentid>
    <comment_count>2</comment_count>
      <attachid>430233</attachid>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-05-31 23:41:19 -0700</bug_when>
    <thetext>Created attachment 430233
patch

Fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765535</commentid>
    <comment_count>3</comment_count>
      <attachid>430239</attachid>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-06-01 01:57:16 -0700</bug_when>
    <thetext>Created attachment 430239
patch

Fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765725</commentid>
    <comment_count>4</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2021-06-01 13:22:09 -0700</bug_when>
    <thetext>I&apos;m not sure I understand; how did multiple samples with the same PTS &amp; DTS get put in the trackBuffer without evicting previously appended samples?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765868</commentid>
    <comment_count>5</comment_count>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-06-01 21:13:24 -0700</bug_when>
    <thetext>&gt;+        // When there are MediaSamples in track buffer which have the same PTS and DTS, all of them except for the last MediaSample should be removed.
&gt;+        if (trackBuffer.lastDecodeTimestamp.isValid() &amp;&amp; decodeTimestamp == trackBuffer.lastDecodeTimestamp) {
&gt;+            auto iterPair = trackBuffer.samples.presentationOrder().findSamplesBetweenPresentationTimes(presentationTimestamp, frameEndTimestamp);
&gt;+            if (iterPair.first != trackBuffer.samples.presentationOrder().end())
&gt;+                erasedSamples.addRange(iterPair.first, iterPair.second);
&gt;+        }
&gt;+
&gt;         // 1.15 Remove decoding dependencies of the coded frames removed in the previous step:
&gt;         DecodeOrderSampleMap::MapType dependentSamples;
&gt;         if (!erasedSamples.empty()) {

Previously added samples can be ranged with erasedSamples.addRange () and removed with the next step, &quot;1.15 Remove decoding dependencies of the coded frames removed in the previous step:&quot;.
Samples with the same PTS and DTS get put in the trackBuffer by removing the previously added sample.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1765899</commentid>
    <comment_count>6</comment_count>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-06-02 01:09:24 -0700</bug_when>
    <thetext>(In reply to Jer Noble from comment #4)
&gt; I&apos;m not sure I understand; how did multiple samples with the same PTS &amp; DTS
&gt; get put in the trackBuffer without evicting previously appended samples?

For example, if you switch the resolution during video playback, segment data with different resolutions and the same PTS and DTS at the beginning may be added.
When MediaSample is created with multiple frames, the PTS and DTS of the first frame data will be the PTS and DTS of MediaSample.
In this case, MediaSamples with the same PTS and DTS were added in succession.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1767670</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-06-07 22:16:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/78983232&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1768488</commentid>
    <comment_count>8</comment_count>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-06-10 02:30:00 -0700</bug_when>
    <thetext>If you create a MediaSample with one frame of video, such as a GTK port, you will not encounter this issue.
I created a mediasample from multiple frames of video on my own port I developed.

Example)
* &quot;MediaSample = one frame&quot;
ReceiveSample
  MediaSample-00:[frame00 PTS:0 DTS:0 Duration:1 Resolution:720 I-frame]
  MediaSample-01:[frame01 PTS:1 DTS:1 Duration:1 Resolution:720 P-frame]
  MediaSample-02:[frame02 PTS:2 DTS:2 Duration:1 Resolution:720 B-frame]

ReceiveSample
  MediaSample-03:[frame03 PTS:0 DTS:0 Duration:1 Resolution:480 I-frame]
  MediaSample-04:[frame04 PTS:1 DTS:1 Duration:1 Resolution:480 P-frame]
  MediaSample-05:[frame05 PTS:2 DTS:2 Duration:1 Resolution:480 B-frame]

* &quot;MediaSample = multiple frame&quot;
ReceiveSample
  MediaSample-00:[PTS:0 DTS:0 Duration:3 Resolution:720 I-frame
                  (frame00 PTS:0 DTS:0 Duration:1 Resolution:720 I-frame,
                   frame01 PTS:1 DTS:1 Duration:1 Resolution:720 P-frame,
                   frame02 PTS:2 DTS:2 Duration:1 Resolution:720 B-frame)]

ReceiveSample
  MediaSample-01:[PTS:0 DTS:0 Duration:3 Resolution:480 I-frame
                  (frame03 PTS:0 DTS:0 Duration:1 Resolution:480 I-frame,
                   frame04 PTS:1 DTS:1 Duration:1 Resolution:480 P-frame,
                   frame05 PTS:2 DTS:2 Duration:1 Resolution:480 B-frame)]

As mentioned above, didReceiveSample does not receive MediaSample with the same PTS and DTS consecutively when &quot;MediaSample = one frame&quot;.
didReceiveSample may receive MediaSample with the same PTS and DTS consecutively when &quot;MediaSample = multiple frame&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769739</commentid>
    <comment_count>9</comment_count>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-15 03:52:48 -0700</bug_when>
    <thetext>(In reply to Toshio Ogasawara from comment #8)
&gt; If you create a MediaSample with one frame of video, such as a GTK port, you
&gt; will not encounter this issue.
&gt; I created a mediasample from multiple frames of video on my own port I
&gt; developed.

A MediaSample can only contain frames that have their pts only ever monotonically increasing.

MediaSample was only ever designed to contained multiple *audio* frames ; not video.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1769740</commentid>
    <comment_count>10</comment_count>
      <attachid>430239</attachid>
    <who name="Jean-Yves Avenard [:jya]">jean-yves.avenard</who>
    <bug_when>2021-06-15 04:01:33 -0700</bug_when>
    <thetext>Comment on attachment 430239
patch

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

&gt; Source/WebCore/platform/graphics/SourceBufferPrivate.cpp:1165
&gt; +        if (trackBuffer.lastDecodeTimestamp.isValid() &amp;&amp; decodeTimestamp == trackBuffer.lastDecodeTimestamp) {

This code is fundamentally incorrect. A dts value is meaningless, its only purpose is to determine in which order the frames should be decoded.
It should never be used to determine which frame should be removed or where it should be inserted. 
There&apos;s no guarantee that a stream will use the same timeframe from one sample to another. The only thing that matters is that they are monotonically increasing.

Only the presentation timestamp is relevant and should be used to determine what should be removed and where.

When a PTS sample is to be removed, the entire GOP (group of picture) should be removed from that sample forward.
E.g you remove all samples from that sample, until the next keyframe is found.

The concept is touched on in MSE&apos;s Coded Frame Removal algorithm
https://w3c.github.io/media-source/#dfn-coded-frame-removal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1770096</commentid>
    <comment_count>11</comment_count>
    <who name="Toshio Ogasawara">toshio.ogasawara</who>
    <bug_when>2021-06-15 23:55:37 -0700</bug_when>
    <thetext>(In reply to Jean-Yves Avenard [:jya] from comment #9)
&gt; (In reply to Toshio Ogasawara from comment #8)
&gt; &gt; If you create a MediaSample with one frame of video, such as a GTK port, you
&gt; &gt; will not encounter this issue.
&gt; &gt; I created a mediasample from multiple frames of video on my own port I
&gt; &gt; developed.
&gt; 
&gt; A MediaSample can only contain frames that have their pts only ever
&gt; monotonically increasing.
&gt; 
&gt; MediaSample was only ever designed to contained multiple *audio* frames ;
&gt; not video.

Thank you for explaining the specifications of MediaSample.
We made a mistake in the design for MediaSample.
So this ticket is closed as INVALID.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>430231</attachid>
            <date>2021-05-31 22:44:17 -0700</date>
            <delta_ts>2021-05-31 23:38:26 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>6333</size>
            <attacher name="Toshio Ogasawara">toshio.ogasawara</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMGVjMDU5NjQyMWUuLjU0ZWI1NDQ5YzU0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTA1LTMxICBUb3NoaW8gT2dhc2F3YXJhICA8dG9zaGlvLm9nYXNhd2FyYUBhY2Nlc3Mt
Y29tcGFueS5jb20+CisKKyAgICAgICAgW01TRV0gV2hlbiBtZWRpYVNhbXBsZSBvZiB0aGUgc2Ft
ZSBwdHMgYW5kIGR0cyBhcmUgcmVjZWl2ZWQgY29uc2VjdXRpdmVseSwgdGhlIG1lZGlhU2FtcGxl
IHJlY2VpdmVkIGxhdGVyIGFyZSBkaXNjYXJkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
YXBwZW5kLXNhbWUtcHRzLWR0cy1zYW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1zYW1lLXB0cy1kdHMtc2Ft
cGxlLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA1LTMxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3ODI2MS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
YXBwZW5kLXNhbWUtcHRzLWR0cy1zYW1wbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtc2FtZS1wdHMtZHRzLXNhbXBsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NTEy
NjAxZTcxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLWFwcGVuZC1zYW1lLXB0cy1kdHMtc2FtcGxlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE4IEBACisKK1JVTih2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNv
dXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRT
b3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikpCitSVU4oc291cmNlQnVmZmVy
LmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitFVkVOVCh1cGRhdGVlbmQpCitSVU4oc291cmNl
QnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGVzKSkKK0VWRU5UKHVwZGF0ZWVuZCkKK1JVTihzb3Vy
Y2VCdWZmZXIuYXBwZW5kQnVmZmVyKHNhbXBsZXMpKQorRVZFTlQodXBkYXRlZW5kKQorRVhQRUNU
RUQgKGJ1ZmZlcmVkU2FtcGxlcy5sZW5ndGggPT0gJzUnKSBPSwore1BUUyh7MC8xID0gMC4wMDAw
MDB9KSwgRFRTKHswLzEgPSAwLjAwMDAwMH0pLCBkdXJhdGlvbih7MS8xID0gMS4wMDAwMDB9KSwg
ZmxhZ3MoMSksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxLzEgPSAxLjAwMDAwMH0pLCBEVFMoezEv
MSA9IDEuMDAwMDAwfSksIGR1cmF0aW9uKHsxLzEgPSAxLjAwMDAwMH0pLCBmbGFncygwKSwgZ2Vu
ZXJhdGlvbigwKX0KK3tQVFMoezIvMSA9IDIuMDAwMDAwfSksIERUUyh7Mi8xID0gMi4wMDAwMDB9
KSwgZHVyYXRpb24oezEvMSA9IDEuMDAwMDAwfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7My8xID0gMy4wMDAwMDB9KSwgRFRTKHszLzEgPSAzLjAwMDAwMH0pLCBkdXJhdGlvbih7
MS8xID0gMS4wMDAwMDB9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHs0LzEgPSA0
LjAwMDAwMH0pLCBEVFMoezQvMSA9IDQuMDAwMDAwfSksIGR1cmF0aW9uKHsyLzEgPSAyLjAwMDAw
MH0pLCBmbGFncygxKSwgZ2VuZXJhdGlvbigxKX0KK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLXNhbWUt
cHRzLWR0cy1zYW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UtYXBwZW5kLXNhbWUtcHRzLWR0cy1zYW1wbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEwNzA2YTRkOWJhNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLXNhbWUt
cHRzLWR0cy1zYW1wbGUuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1lZGlhLXNvdXJjZS1hcHBlbmQtc2FtZS1wdHMtZHRz
LXNhbXBsZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1vY2stbWVkaWEtc291cmNlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisgICAg
dmFyIGluaXRTZWdtZW50OworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGlu
dGVybmFscy5pbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKworICAgICAgICBmaW5kTWVkaWFF
bGVtZW50KCk7CisKKyAgICAgICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAg
IHJ1bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7CisgICAgICAg
IGF3YWl0IHdhaXRGb3Ioc291cmNlLCAnc291cmNlb3BlbicpOworCisgICAgICAgIHJ1bignc291
cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1v
Y2siKScpOworICAgICAgICBpbml0U2VnbWVudCA9IG1ha2VBSW5pdCg4LCBbbWFrZUFUcmFjaygx
LCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVy
LmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCknKTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yKHNv
dXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcpOworCisgICAgICAgIHNhbXBsZXMgPSBjb25jYXRlbmF0
ZVNhbXBsZXMoWworICAgICAgICAgICAgbWFrZUFTYW1wbGUoMCwgMCwgMSwgMSwgMSwgU0FNUExF
X0ZMQUcuU1lOQywgMCksCisgICAgICAgICAgICBtYWtlQVNhbXBsZSgxLCAxLCAxLCAxLCAxLCBT
QU1QTEVfRkxBRy5OT05FLCAwKSwKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDIsIDIsIDEsIDEs
IDEsIFNBTVBMRV9GTEFHLk5PTkUsIDApLAorICAgICAgICAgICAgbWFrZUFTYW1wbGUoMywgMywg
MSwgMSwgMSwgU0FNUExFX0ZMQUcuTk9ORSwgMCksCisgICAgICAgICAgICBtYWtlQVNhbXBsZSg0
LCA0LCAxLCAxLCAxLCBTQU1QTEVfRkxBRy5TWU5DLCAwKSwKKyAgICAgICAgXSk7CisgICAgICAg
IHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGVzKScpOworICAgICAgICBhd2Fp
dCB3YWl0Rm9yKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcpOworCisgICAgICAgIC8vIEFwcGVu
ZCBhIE1lZGlhU2FtcGxlIHRoYXQgaGFzIHRoZSBzYW1lIHB0cyBhbmQgZHRzIGFzIHRoZSBwcmV2
aW91c2x5IGFwcGVuZGVkIE1lZGlhU2FtcGxlLgorICAgICAgICBzYW1wbGVzID0gY29uY2F0ZW5h
dGVTYW1wbGVzKFsKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDQsIDQsIDIsIDEsIDEsIFNBTVBM
RV9GTEFHLlNZTkMsIDEpLAorICAgICAgICBdKTsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIu
YXBwZW5kQnVmZmVyKHNhbXBsZXMpJyk7CisgICAgICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlQnVm
ZmVyLCAndXBkYXRlZW5kJyk7CisKKyAgICAgICAgYnVmZmVyZWRTYW1wbGVzID0gYXdhaXQgaW50
ZXJuYWxzLmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSWQoc291cmNlQnVmZmVyLCAxKTsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkKCJidWZmZXJlZFNhbXBsZXMubGVuZ3RoIiwgNSk7CisgICAgICAgIGJ1
ZmZlcmVkU2FtcGxlcy5mb3JFYWNoKGNvbnNvbGVXcml0ZSk7CisgICAgICAgIGVuZFRlc3QoKTsK
KworICAgIH0sIHtvbmNlOiB0cnVlfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8dmlkZW8+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNmI1
YjFhODE4NjAuLjI4NDU5MDEwMTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIx
LTA1LTMxICBUb3NoaW8gT2dhc2F3YXJhICA8dG9zaGlvLm9nYXNhd2FyYUBhY2Nlc3MtY29tcGFu
eS5jb20+CisKKyAgICAgICAgW01TRV0gV2hlbiBtZWRpYVNhbXBsZSBvZiB0aGUgc2FtZSBwdHMg
YW5kIGR0cyBhcmUgcmVjZWl2ZWQgY29uc2VjdXRpdmVseSwgdGhlIG1lZGlhU2FtcGxlIHJlY2Vp
dmVkIGxhdGVyIGFyZSBkaXNjYXJkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIG1lZGlhU2FtcGxlIHJlY2VpdmVkIGVhcmxpZXIg
aW4gb3JkZXIgdG8gZ2l2ZSBwcmlvcml0eSB0byB0aGUgbWVkaWFTYW1wbGUgcmVjZWl2ZWQgbGF0
ZXIuCisKKyAgICAgICAgVGVzdDogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBl
bmQtc2FtZS1wdHMtZHRzLXNhbXBsZS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUpOgorCiAyMDIxLTA1LTMxICBBbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIERlY291cGxlIHN0cmV0Y2hp
bmcgYW5kIGZpbmFsIGNlbGwgbGF5b3V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1MjYwYzRiZjQz
NDguLjRjY2Q0OGJjNWI3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTExNjEsNiArMTE2MSwxMyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUoUmVmPE1lZGlhU2Ft
cGxlPiYmIG9yaWdpbmFsU2FtcGxlKQogICAgICAgICAgICAgfSB3aGlsZSAoZmFsc2UpOwogICAg
ICAgICB9CiAKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBtZWRpYVNhbXBsZSBhcHBlbmRlZCBlYXJs
aWVyIGluIG9yZGVyIHRvIGdpdmUgcHJpb3JpdHkgdG8gdGhlIG1lZGlhU2FtcGxlIGFwcGVuZGVk
IGxhdGVyLgorICAgICAgICBpZiAodHJhY2tCdWZmZXIubGFzdERlY29kZVRpbWVzdGFtcC5pc1Zh
bGlkKCkgJiYgZGVjb2RlVGltZXN0YW1wID09IHRyYWNrQnVmZmVyLmxhc3REZWNvZGVUaW1lc3Rh
bXApIHsKKyAgICAgICAgICAgIGF1dG8gaXRlcl9wYWlyID0gdHJhY2tCdWZmZXIuc2FtcGxlcy5w
cmVzZW50YXRpb25PcmRlcigpLmZpbmRTYW1wbGVzQmV0d2VlblByZXNlbnRhdGlvblRpbWVzKHBy
ZXNlbnRhdGlvblRpbWVzdGFtcCwgZnJhbWVFbmRUaW1lc3RhbXApOworICAgICAgICAgICAgaWYg
KGl0ZXJfcGFpci5maXJzdCAhPSB0cmFja0J1ZmZlci5zYW1wbGVzLnByZXNlbnRhdGlvbk9yZGVy
KCkuZW5kKCkpCisgICAgICAgICAgICAgICAgZXJhc2VkU2FtcGxlcy5hZGRSYW5nZShpdGVyX3Bh
aXIuZmlyc3QsIGl0ZXJfcGFpci5zZWNvbmQpOworICAgICAgICB9CisKICAgICAgICAgLy8gMS4x
NSBSZW1vdmUgZGVjb2RpbmcgZGVwZW5kZW5jaWVzIG9mIHRoZSBjb2RlZCBmcmFtZXMgcmVtb3Zl
ZCBpbiB0aGUgcHJldmlvdXMgc3RlcDoKICAgICAgICAgRGVjb2RlT3JkZXJTYW1wbGVNYXA6Ok1h
cFR5cGUgZGVwZW5kZW50U2FtcGxlczsKICAgICAgICAgaWYgKCFlcmFzZWRTYW1wbGVzLmVtcHR5
KCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>430233</attachid>
            <date>2021-05-31 23:41:19 -0700</date>
            <delta_ts>2021-06-01 00:56:09 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>6329</size>
            <attacher name="Toshio Ogasawara">toshio.ogasawara</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMGVjMDU5NjQyMWUuLjU0ZWI1NDQ5YzU0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTA1LTMxICBUb3NoaW8gT2dhc2F3YXJhICA8dG9zaGlvLm9nYXNhd2FyYUBhY2Nlc3Mt
Y29tcGFueS5jb20+CisKKyAgICAgICAgW01TRV0gV2hlbiBtZWRpYVNhbXBsZSBvZiB0aGUgc2Ft
ZSBwdHMgYW5kIGR0cyBhcmUgcmVjZWl2ZWQgY29uc2VjdXRpdmVseSwgdGhlIG1lZGlhU2FtcGxl
IHJlY2VpdmVkIGxhdGVyIGFyZSBkaXNjYXJkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
YXBwZW5kLXNhbWUtcHRzLWR0cy1zYW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1zYW1lLXB0cy1kdHMtc2Ft
cGxlLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA1LTMxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3ODI2MS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
YXBwZW5kLXNhbWUtcHRzLWR0cy1zYW1wbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtc2FtZS1wdHMtZHRzLXNhbXBsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NTEy
NjAxZTcxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLWFwcGVuZC1zYW1lLXB0cy1kdHMtc2FtcGxlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE4IEBACisKK1JVTih2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNv
dXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRT
b3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikpCitSVU4oc291cmNlQnVmZmVy
LmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitFVkVOVCh1cGRhdGVlbmQpCitSVU4oc291cmNl
QnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGVzKSkKK0VWRU5UKHVwZGF0ZWVuZCkKK1JVTihzb3Vy
Y2VCdWZmZXIuYXBwZW5kQnVmZmVyKHNhbXBsZXMpKQorRVZFTlQodXBkYXRlZW5kKQorRVhQRUNU
RUQgKGJ1ZmZlcmVkU2FtcGxlcy5sZW5ndGggPT0gJzUnKSBPSwore1BUUyh7MC8xID0gMC4wMDAw
MDB9KSwgRFRTKHswLzEgPSAwLjAwMDAwMH0pLCBkdXJhdGlvbih7MS8xID0gMS4wMDAwMDB9KSwg
ZmxhZ3MoMSksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxLzEgPSAxLjAwMDAwMH0pLCBEVFMoezEv
MSA9IDEuMDAwMDAwfSksIGR1cmF0aW9uKHsxLzEgPSAxLjAwMDAwMH0pLCBmbGFncygwKSwgZ2Vu
ZXJhdGlvbigwKX0KK3tQVFMoezIvMSA9IDIuMDAwMDAwfSksIERUUyh7Mi8xID0gMi4wMDAwMDB9
KSwgZHVyYXRpb24oezEvMSA9IDEuMDAwMDAwfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7My8xID0gMy4wMDAwMDB9KSwgRFRTKHszLzEgPSAzLjAwMDAwMH0pLCBkdXJhdGlvbih7
MS8xID0gMS4wMDAwMDB9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHs0LzEgPSA0
LjAwMDAwMH0pLCBEVFMoezQvMSA9IDQuMDAwMDAwfSksIGR1cmF0aW9uKHsyLzEgPSAyLjAwMDAw
MH0pLCBmbGFncygxKSwgZ2VuZXJhdGlvbigxKX0KK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLXNhbWUt
cHRzLWR0cy1zYW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UtYXBwZW5kLXNhbWUtcHRzLWR0cy1zYW1wbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEwNzA2YTRkOWJhNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLXNhbWUt
cHRzLWR0cy1zYW1wbGUuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1lZGlhLXNvdXJjZS1hcHBlbmQtc2FtZS1wdHMtZHRz
LXNhbXBsZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1vY2stbWVkaWEtc291cmNlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisgICAg
dmFyIGluaXRTZWdtZW50OworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGlu
dGVybmFscy5pbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKworICAgICAgICBmaW5kTWVkaWFF
bGVtZW50KCk7CisKKyAgICAgICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAg
IHJ1bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7CisgICAgICAg
IGF3YWl0IHdhaXRGb3Ioc291cmNlLCAnc291cmNlb3BlbicpOworCisgICAgICAgIHJ1bignc291
cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1v
Y2siKScpOworICAgICAgICBpbml0U2VnbWVudCA9IG1ha2VBSW5pdCg4LCBbbWFrZUFUcmFjaygx
LCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVy
LmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCknKTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yKHNv
dXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcpOworCisgICAgICAgIHNhbXBsZXMgPSBjb25jYXRlbmF0
ZVNhbXBsZXMoWworICAgICAgICAgICAgbWFrZUFTYW1wbGUoMCwgMCwgMSwgMSwgMSwgU0FNUExF
X0ZMQUcuU1lOQywgMCksCisgICAgICAgICAgICBtYWtlQVNhbXBsZSgxLCAxLCAxLCAxLCAxLCBT
QU1QTEVfRkxBRy5OT05FLCAwKSwKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDIsIDIsIDEsIDEs
IDEsIFNBTVBMRV9GTEFHLk5PTkUsIDApLAorICAgICAgICAgICAgbWFrZUFTYW1wbGUoMywgMywg
MSwgMSwgMSwgU0FNUExFX0ZMQUcuTk9ORSwgMCksCisgICAgICAgICAgICBtYWtlQVNhbXBsZSg0
LCA0LCAxLCAxLCAxLCBTQU1QTEVfRkxBRy5TWU5DLCAwKSwKKyAgICAgICAgXSk7CisgICAgICAg
IHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGVzKScpOworICAgICAgICBhd2Fp
dCB3YWl0Rm9yKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcpOworCisgICAgICAgIC8vIEFwcGVu
ZCBhIE1lZGlhU2FtcGxlIHRoYXQgaGFzIHRoZSBzYW1lIHB0cyBhbmQgZHRzIGFzIHRoZSBwcmV2
aW91c2x5IGFwcGVuZGVkIE1lZGlhU2FtcGxlLgorICAgICAgICBzYW1wbGVzID0gY29uY2F0ZW5h
dGVTYW1wbGVzKFsKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDQsIDQsIDIsIDEsIDEsIFNBTVBM
RV9GTEFHLlNZTkMsIDEpLAorICAgICAgICBdKTsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIu
YXBwZW5kQnVmZmVyKHNhbXBsZXMpJyk7CisgICAgICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlQnVm
ZmVyLCAndXBkYXRlZW5kJyk7CisKKyAgICAgICAgYnVmZmVyZWRTYW1wbGVzID0gYXdhaXQgaW50
ZXJuYWxzLmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSWQoc291cmNlQnVmZmVyLCAxKTsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkKCJidWZmZXJlZFNhbXBsZXMubGVuZ3RoIiwgNSk7CisgICAgICAgIGJ1
ZmZlcmVkU2FtcGxlcy5mb3JFYWNoKGNvbnNvbGVXcml0ZSk7CisgICAgICAgIGVuZFRlc3QoKTsK
KworICAgIH0sIHtvbmNlOiB0cnVlfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8dmlkZW8+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNmI1
YjFhODE4NjAuLjI4NDU5MDEwMTAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIx
LTA1LTMxICBUb3NoaW8gT2dhc2F3YXJhICA8dG9zaGlvLm9nYXNhd2FyYUBhY2Nlc3MtY29tcGFu
eS5jb20+CisKKyAgICAgICAgW01TRV0gV2hlbiBtZWRpYVNhbXBsZSBvZiB0aGUgc2FtZSBwdHMg
YW5kIGR0cyBhcmUgcmVjZWl2ZWQgY29uc2VjdXRpdmVseSwgdGhlIG1lZGlhU2FtcGxlIHJlY2Vp
dmVkIGxhdGVyIGFyZSBkaXNjYXJkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIG1lZGlhU2FtcGxlIHJlY2VpdmVkIGVhcmxpZXIg
aW4gb3JkZXIgdG8gZ2l2ZSBwcmlvcml0eSB0byB0aGUgbWVkaWFTYW1wbGUgcmVjZWl2ZWQgbGF0
ZXIuCisKKyAgICAgICAgVGVzdDogbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBl
bmQtc2FtZS1wdHMtZHRzLXNhbXBsZS5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUpOgorCiAyMDIxLTA1LTMxICBBbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtURkNdIERlY291cGxlIHN0cmV0Y2hp
bmcgYW5kIGZpbmFsIGNlbGwgbGF5b3V0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRleCA1MjYwYzRiZjQz
NDguLmEwY2YxZmY3YTVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTExNjEsNiArMTE2MSwxMyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUoUmVmPE1lZGlhU2Ft
cGxlPiYmIG9yaWdpbmFsU2FtcGxlKQogICAgICAgICAgICAgfSB3aGlsZSAoZmFsc2UpOwogICAg
ICAgICB9CiAKKyAgICAgICAgLy8gUmVtb3ZlIHRoZSBtZWRpYVNhbXBsZSBhcHBlbmRlZCBlYXJs
aWVyIGluIG9yZGVyIHRvIGdpdmUgcHJpb3JpdHkgdG8gdGhlIG1lZGlhU2FtcGxlIGFwcGVuZGVk
IGxhdGVyLgorICAgICAgICBpZiAodHJhY2tCdWZmZXIubGFzdERlY29kZVRpbWVzdGFtcC5pc1Zh
bGlkKCkgJiYgZGVjb2RlVGltZXN0YW1wID09IHRyYWNrQnVmZmVyLmxhc3REZWNvZGVUaW1lc3Rh
bXApIHsKKyAgICAgICAgICAgIGF1dG8gaXRlclBhaXIgPSB0cmFja0J1ZmZlci5zYW1wbGVzLnBy
ZXNlbnRhdGlvbk9yZGVyKCkuZmluZFNhbXBsZXNCZXR3ZWVuUHJlc2VudGF0aW9uVGltZXMocHJl
c2VudGF0aW9uVGltZXN0YW1wLCBmcmFtZUVuZFRpbWVzdGFtcCk7CisgICAgICAgICAgICBpZiAo
aXRlclBhaXIuZmlyc3QgIT0gdHJhY2tCdWZmZXIuc2FtcGxlcy5wcmVzZW50YXRpb25PcmRlcigp
LmVuZCgpKQorICAgICAgICAgICAgICAgIGVyYXNlZFNhbXBsZXMuYWRkUmFuZ2UoaXRlclBhaXIu
Zmlyc3QsIGl0ZXJQYWlyLnNlY29uZCk7CisgICAgICAgIH0KKwogICAgICAgICAvLyAxLjE1IFJl
bW92ZSBkZWNvZGluZyBkZXBlbmRlbmNpZXMgb2YgdGhlIGNvZGVkIGZyYW1lcyByZW1vdmVkIGlu
IHRoZSBwcmV2aW91cyBzdGVwOgogICAgICAgICBEZWNvZGVPcmRlclNhbXBsZU1hcDo6TWFwVHlw
ZSBkZXBlbmRlbnRTYW1wbGVzOwogICAgICAgICBpZiAoIWVyYXNlZFNhbXBsZXMuZW1wdHkoKSkg
ewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>430239</attachid>
            <date>2021-06-01 01:57:16 -0700</date>
            <delta_ts>2022-02-10 16:38:21 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>6417</size>
            <attacher name="Toshio Ogasawara">toshio.ogasawara</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMGVjMDU5NjQyMWUuLjU0ZWI1NDQ5YzU0NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDIxLTA1LTMxICBUb3NoaW8gT2dhc2F3YXJhICA8dG9zaGlvLm9nYXNhd2FyYUBhY2Nlc3Mt
Y29tcGFueS5jb20+CisKKyAgICAgICAgW01TRV0gV2hlbiBtZWRpYVNhbXBsZSBvZiB0aGUgc2Ft
ZSBwdHMgYW5kIGR0cyBhcmUgcmVjZWl2ZWQgY29uc2VjdXRpdmVseSwgdGhlIG1lZGlhU2FtcGxl
IHJlY2VpdmVkIGxhdGVyIGFyZSBkaXNjYXJkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
YXBwZW5kLXNhbWUtcHRzLWR0cy1zYW1wbGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291cmNlLWFwcGVuZC1zYW1lLXB0cy1kdHMtc2Ft
cGxlLmh0bWw6IEFkZGVkLgorCiAyMDIxLTA1LTMxICBDb21taXQgUXVldWUgIDxjb21taXQtcXVl
dWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRpbmcgcjI3ODI2MS4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Ut
YXBwZW5kLXNhbWUtcHRzLWR0cy1zYW1wbGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVk
aWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS1hcHBlbmQtc2FtZS1wdHMtZHRzLXNhbXBsZS1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NTEy
NjAxZTcxOTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9tZWRpYS1zb3Vy
Y2UvbWVkaWEtc291cmNlLWFwcGVuZC1zYW1lLXB0cy1kdHMtc2FtcGxlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE4IEBACisKK1JVTih2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKHNv
dXJjZSkpCitFVkVOVChzb3VyY2VvcGVuKQorUlVOKHNvdXJjZUJ1ZmZlciA9IHNvdXJjZS5hZGRT
b3VyY2VCdWZmZXIoInZpZGVvL21vY2s7IGNvZGVjcz1tb2NrIikpCitSVU4oc291cmNlQnVmZmVy
LmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCkpCitFVkVOVCh1cGRhdGVlbmQpCitSVU4oc291cmNl
QnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGVzKSkKK0VWRU5UKHVwZGF0ZWVuZCkKK1JVTihzb3Vy
Y2VCdWZmZXIuYXBwZW5kQnVmZmVyKHNhbXBsZXMpKQorRVZFTlQodXBkYXRlZW5kKQorRVhQRUNU
RUQgKGJ1ZmZlcmVkU2FtcGxlcy5sZW5ndGggPT0gJzUnKSBPSwore1BUUyh7MC8xID0gMC4wMDAw
MDB9KSwgRFRTKHswLzEgPSAwLjAwMDAwMH0pLCBkdXJhdGlvbih7MS8xID0gMS4wMDAwMDB9KSwg
ZmxhZ3MoMSksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHsxLzEgPSAxLjAwMDAwMH0pLCBEVFMoezEv
MSA9IDEuMDAwMDAwfSksIGR1cmF0aW9uKHsxLzEgPSAxLjAwMDAwMH0pLCBmbGFncygwKSwgZ2Vu
ZXJhdGlvbigwKX0KK3tQVFMoezIvMSA9IDIuMDAwMDAwfSksIERUUyh7Mi8xID0gMi4wMDAwMDB9
KSwgZHVyYXRpb24oezEvMSA9IDEuMDAwMDAwfSksIGZsYWdzKDApLCBnZW5lcmF0aW9uKDApfQor
e1BUUyh7My8xID0gMy4wMDAwMDB9KSwgRFRTKHszLzEgPSAzLjAwMDAwMH0pLCBkdXJhdGlvbih7
MS8xID0gMS4wMDAwMDB9KSwgZmxhZ3MoMCksIGdlbmVyYXRpb24oMCl9Cit7UFRTKHs0LzEgPSA0
LjAwMDAwMH0pLCBEVFMoezQvMSA9IDQuMDAwMDAwfSksIGR1cmF0aW9uKHsyLzEgPSAyLjAwMDAw
MH0pLCBmbGFncygxKSwgZ2VuZXJhdGlvbigxKX0KK0VORCBPRiBURVNUCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLXNhbWUt
cHRzLWR0cy1zYW1wbGUuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRp
YS1zb3VyY2UtYXBwZW5kLXNhbWUtcHRzLWR0cy1zYW1wbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmEwNzA2YTRkOWJhNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLXNhbWUt
cHRzLWR0cy1zYW1wbGUuaHRtbApAQCAtMCwwICsxLDU3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+CisgICAgPHRpdGxlPm1lZGlhLXNvdXJjZS1hcHBlbmQtc2FtZS1wdHMtZHRz
LXNhbXBsZTwvdGl0bGU+CisgICAgPHNjcmlwdCBzcmM9Im1vY2stbWVkaWEtc291cmNlLmpzIj48
L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iLi4vdmlkZW8tdGVzdC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdD4KKyAgICB2YXIgc291cmNlOworICAgIHZhciBzb3VyY2VCdWZmZXI7CisgICAg
dmFyIGluaXRTZWdtZW50OworCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIGlu
dGVybmFscy5pbml0aWFsaXplTW9ja01lZGlhU291cmNlKCk7CisKKyAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbG9hZCcsIGFzeW5jIGV2ZW50ID0+IHsKKworICAgICAgICBmaW5kTWVkaWFF
bGVtZW50KCk7CisKKyAgICAgICAgc291cmNlID0gbmV3IE1lZGlhU291cmNlKCk7CisgICAgICAg
IHJ1bigndmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChzb3VyY2UpJyk7CisgICAgICAg
IGF3YWl0IHdhaXRGb3Ioc291cmNlLCAnc291cmNlb3BlbicpOworCisgICAgICAgIHJ1bignc291
cmNlQnVmZmVyID0gc291cmNlLmFkZFNvdXJjZUJ1ZmZlcigidmlkZW8vbW9jazsgY29kZWNzPW1v
Y2siKScpOworICAgICAgICBpbml0U2VnbWVudCA9IG1ha2VBSW5pdCg4LCBbbWFrZUFUcmFjaygx
LCAnbW9jaycsIFRSQUNLX0tJTkQuVklERU8pXSk7CisgICAgICAgIHJ1bignc291cmNlQnVmZmVy
LmFwcGVuZEJ1ZmZlcihpbml0U2VnbWVudCknKTsKKworICAgICAgICBhd2FpdCB3YWl0Rm9yKHNv
dXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcpOworCisgICAgICAgIHNhbXBsZXMgPSBjb25jYXRlbmF0
ZVNhbXBsZXMoWworICAgICAgICAgICAgbWFrZUFTYW1wbGUoMCwgMCwgMSwgMSwgMSwgU0FNUExF
X0ZMQUcuU1lOQywgMCksCisgICAgICAgICAgICBtYWtlQVNhbXBsZSgxLCAxLCAxLCAxLCAxLCBT
QU1QTEVfRkxBRy5OT05FLCAwKSwKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDIsIDIsIDEsIDEs
IDEsIFNBTVBMRV9GTEFHLk5PTkUsIDApLAorICAgICAgICAgICAgbWFrZUFTYW1wbGUoMywgMywg
MSwgMSwgMSwgU0FNUExFX0ZMQUcuTk9ORSwgMCksCisgICAgICAgICAgICBtYWtlQVNhbXBsZSg0
LCA0LCAxLCAxLCAxLCBTQU1QTEVfRkxBRy5TWU5DLCAwKSwKKyAgICAgICAgXSk7CisgICAgICAg
IHJ1bignc291cmNlQnVmZmVyLmFwcGVuZEJ1ZmZlcihzYW1wbGVzKScpOworICAgICAgICBhd2Fp
dCB3YWl0Rm9yKHNvdXJjZUJ1ZmZlciwgJ3VwZGF0ZWVuZCcpOworCisgICAgICAgIC8vIEFwcGVu
ZCBhIE1lZGlhU2FtcGxlIHRoYXQgaGFzIHRoZSBzYW1lIHB0cyBhbmQgZHRzIGFzIHRoZSBwcmV2
aW91c2x5IGFwcGVuZGVkIE1lZGlhU2FtcGxlLgorICAgICAgICBzYW1wbGVzID0gY29uY2F0ZW5h
dGVTYW1wbGVzKFsKKyAgICAgICAgICAgIG1ha2VBU2FtcGxlKDQsIDQsIDIsIDEsIDEsIFNBTVBM
RV9GTEFHLlNZTkMsIDEpLAorICAgICAgICBdKTsKKyAgICAgICAgcnVuKCdzb3VyY2VCdWZmZXIu
YXBwZW5kQnVmZmVyKHNhbXBsZXMpJyk7CisgICAgICAgIGF3YWl0IHdhaXRGb3Ioc291cmNlQnVm
ZmVyLCAndXBkYXRlZW5kJyk7CisKKyAgICAgICAgYnVmZmVyZWRTYW1wbGVzID0gYXdhaXQgaW50
ZXJuYWxzLmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSWQoc291cmNlQnVmZmVyLCAxKTsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkKCJidWZmZXJlZFNhbXBsZXMubGVuZ3RoIiwgNSk7CisgICAgICAgIGJ1
ZmZlcmVkU2FtcGxlcy5mb3JFYWNoKGNvbnNvbGVXcml0ZSk7CisgICAgICAgIGVuZFRlc3QoKTsK
KworICAgIH0sIHtvbmNlOiB0cnVlfSk7CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4K
KyAgICA8dmlkZW8+PC92aWRlbz4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyNmI1
YjFhODE4NjAuLjY5NTY2YjIyZDE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDIx
LTA1LTMxICBUb3NoaW8gT2dhc2F3YXJhICA8dG9zaGlvLm9nYXNhd2FyYUBhY2Nlc3MtY29tcGFu
eS5jb20+CisKKyAgICAgICAgW01TRV0gV2hlbiBtZWRpYVNhbXBsZSBvZiB0aGUgc2FtZSBwdHMg
YW5kIGR0cyBhcmUgcmVjZWl2ZWQgY29uc2VjdXRpdmVseSwgdGhlIG1lZGlhU2FtcGxlIHJlY2Vp
dmVkIGxhdGVyIGFyZSBkaXNjYXJkZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjY0ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBXaGVuIHRoZXJlIGFyZSBNZWRpYVNhbXBsZXMgaW4gdHJhY2sgYnVm
ZmVyIHdoaWNoIGhhdmUgdGhlIHNhbWUgUFRTIGFuZCBEVFMsIAorICAgICAgICBhbGwgb2YgdGhl
bSBleGNlcHQgZm9yIHRoZSBsYXN0IE1lZGlhU2FtcGxlIHNob3VsZCBiZSByZW1vdmVkLgorCisg
ICAgICAgIFRlc3Q6IG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UtYXBwZW5kLXNhbWUt
cHRzLWR0cy1zYW1wbGUuaHRtbAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
OjpkaWRSZWNlaXZlU2FtcGxlKToKKwogMjAyMS0wNS0zMSAgQWxhbiBCdWp0YXMgIDx6YWxhbkBh
cHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bVEZDXSBEZWNvdXBsZSBzdHJldGNoaW5nIGFuZCBm
aW5hbCBjZWxsIGxheW91dHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggNTI2MGM0YmY0MzQ4Li40YjAy
ODgzM2Q5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xMTYxLDYgKzExNjEsMTMgQEAgdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBv
cmlnaW5hbFNhbXBsZSkKICAgICAgICAgICAgIH0gd2hpbGUgKGZhbHNlKTsKICAgICAgICAgfQog
CisgICAgICAgIC8vIFdoZW4gdGhlcmUgYXJlIE1lZGlhU2FtcGxlcyBpbiB0cmFjayBidWZmZXIg
d2hpY2ggaGF2ZSB0aGUgc2FtZSBQVFMgYW5kIERUUywgYWxsIG9mIHRoZW0gZXhjZXB0IGZvciB0
aGUgbGFzdCBNZWRpYVNhbXBsZSBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICAgICAgaWYgKHRyYWNr
QnVmZmVyLmxhc3REZWNvZGVUaW1lc3RhbXAuaXNWYWxpZCgpICYmIGRlY29kZVRpbWVzdGFtcCA9
PSB0cmFja0J1ZmZlci5sYXN0RGVjb2RlVGltZXN0YW1wKSB7CisgICAgICAgICAgICBhdXRvIGl0
ZXJQYWlyID0gdHJhY2tCdWZmZXIuc2FtcGxlcy5wcmVzZW50YXRpb25PcmRlcigpLmZpbmRTYW1w
bGVzQmV0d2VlblByZXNlbnRhdGlvblRpbWVzKHByZXNlbnRhdGlvblRpbWVzdGFtcCwgZnJhbWVF
bmRUaW1lc3RhbXApOworICAgICAgICAgICAgaWYgKGl0ZXJQYWlyLmZpcnN0ICE9IHRyYWNrQnVm
ZmVyLnNhbXBsZXMucHJlc2VudGF0aW9uT3JkZXIoKS5lbmQoKSkKKyAgICAgICAgICAgICAgICBl
cmFzZWRTYW1wbGVzLmFkZFJhbmdlKGl0ZXJQYWlyLmZpcnN0LCBpdGVyUGFpci5zZWNvbmQpOwor
ICAgICAgICB9CisKICAgICAgICAgLy8gMS4xNSBSZW1vdmUgZGVjb2RpbmcgZGVwZW5kZW5jaWVz
IG9mIHRoZSBjb2RlZCBmcmFtZXMgcmVtb3ZlZCBpbiB0aGUgcHJldmlvdXMgc3RlcDoKICAgICAg
ICAgRGVjb2RlT3JkZXJTYW1wbGVNYXA6Ok1hcFR5cGUgZGVwZW5kZW50U2FtcGxlczsKICAgICAg
ICAgaWYgKCFlcmFzZWRTYW1wbGVzLmVtcHR5KCkpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>