<?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>218335</bug_id>
          
          <creation_ts>2020-10-29 05:34:03 -0700</creation_ts>
          <short_desc>[GStreamer] WebAudio to MediaStream support</short_desc>
          <delta_ts>2020-11-15 07:40:17 -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>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=186933</see_also>
          <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="Philippe Normand">pnormand</reporter>
          <assigned_to name="Philippe Normand">pnormand</assigned_to>
          <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1702681</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-29 05:34:03 -0700</bug_when>
    <thetext>webrtc/peer-connection-createMediaStreamDestination.html from webkit.org/b/186933 is still failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1702698</commentid>
    <comment_count>1</comment_count>
      <attachid>412638</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-29 06:21:40 -0700</bug_when>
    <thetext>Created attachment 412638
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703067</commentid>
    <comment_count>2</comment_count>
      <attachid>412638</attachid>
    <who name="Xabier Rodríguez Calvar">calvaris</who>
    <bug_when>2020-10-30 08:38:47 -0700</bug_when>
    <thetext>Comment on attachment 412638
Patch

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

&gt; Source/WebCore/Modules/webaudio/MediaStreamAudioSourceGStreamer.cpp:40
&gt; +    gsize size = mappedBuffer.size() / bus.numberOfChannels();

size_t

&gt; Source/WebCore/Modules/webaudio/MediaStreamAudioSourceGStreamer.cpp:61
&gt; +    gsize size = GST_AUDIO_INFO_BPF(&amp;info) * bus.numberOfChannels() * numberOfFrames;

size_t

&gt; Source/WebCore/platform/audio/gstreamer/GStreamerAudioData.h:35
&gt; +    GStreamerAudioData(GRefPtr&lt;GstSample&gt;&amp;&amp; sample, GstAudioInfo info)

GstAudioInfo&amp;&amp; and move into this from the caller and into m_audioInfo

&gt; Source/WebCore/platform/audio/gstreamer/GStreamerAudioData.h:49
&gt; +    GstSample* getSample() { return m_sample.get(); }
&gt; +    GstAudioInfo getAudioInfo() { return m_audioInfo; }

const GstAudioInfo&amp; audioInfo() const

and I would also do const GRefPrt&lt;GstSample&gt;&amp; sample() const;

&gt; Source/WebCore/platform/audio/gstreamer/GStreamerAudioStreamDescription.h:33
&gt; +    GStreamerAudioStreamDescription(GstAudioInfo info)

GstAudioInfo&amp;&amp; and move here and at the caller. Let&apos;s save some copy.

&gt; Source/WebCore/platform/audio/gstreamer/GStreamerAudioStreamDescription.h:40
&gt; +    GStreamerAudioStreamDescription(GstAudioInfo *info)
&gt; +        : m_info(*info)

If you do the change I recommend above, you can make this const GstAudioInfo&amp; and m_info(info), forcing a copy. I think it is cleaner.

&gt; Source/WebCore/platform/audio/gstreamer/GStreamerAudioStreamDescription.h:97
&gt; +    GstCaps* caps() { return m_caps.get(); }
&gt; +    GstAudioInfo* getInfo() { return &amp;m_info; }

const GstAudioInfo&amp; info() const

and I would also do const GRefPtr&lt;GstCaps&gt;&amp; caps() const;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703070</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-10-30 08:48:33 -0700</bug_when>
    <thetext>These changes you want will likely require updates in code unrelated with this patch, so I&apos;d rather do this in a follow-up bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707602</commentid>
    <comment_count>4</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2020-11-15 07:39:34 -0800</bug_when>
    <thetext>Committed r269827: &lt;https://trac.webkit.org/changeset/269827&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1707603</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-11-15 07:40:17 -0800</bug_when>
    <thetext>&lt;rdar://problem/71414788&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412638</attachid>
            <date>2020-10-29 06:21:40 -0700</date>
            <delta_ts>2020-11-01 23:15:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218335-20201029062139.patch</filename>
            <type>text/plain</type>
            <size>23003</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTQxMTc0NmQ3YjhjZGJk
NDA3NzA4Mjk0NDhiNTdhOTc2OTYwNWZlOC4uZDYxYzNjMWRkYTBhYjRkMzk2MzgxMDM0ODNiYWQ5
YThiOTgyMDlhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTEwLTI5ICBQaGls
aXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVy
XSBXZWJBdWRpbyB0byBNZWRpYVN0cmVhbSBzdXBwb3J0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzMzUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQcm92aWRlIGF1ZGlvIHNhbXBsZXMgY29taW5nIGZy
b20gdGhlIFdlYkF1ZGlvIGJ1cyB0byB0aGUgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZSBub2RlLCB1
c2luZworICAgICAgICBHU3RyZWFtZXIuIFRoaXMgcGF0Y2ggYWxzbyBtb3ZlcyBhIGNvdXBsZSBm
aWxlcyBmcm9tIHBsYXRmb3JtL21lZGlhc3RyZWFtIHRvIHBsYXRmb3JtL2F1ZGlvLAorICAgICAg
ICBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgdGhlIHZpcnR1YWwgcGFyZW50IGNsYXNzZXMgYXJlIGRl
ZmluZWQuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdT
dHJlYW1lci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Y29weUJ1c0RhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vYXVk
aW8vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvRGF0YS5o
LgorICAgICAgICAoaXNUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
R1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvU3RyZWFt
RGVzY3JpcHRpb24uaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIv
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlTGliV2ViUlRDLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQzo6YXVkaW9TYW1wbGVzQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxp
YldlYlJUQzo6cHVsbEF1ZGlvRGF0YSk6CisKIDIwMjAtMTAtMjkgIENhdGhpZSBDaGVuICA8Y2F0
aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJh
Y2sgbGVha3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVk
aWFTdHJlYW1BdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuY3BwCmluZGV4IDcxNTIzYmI5MGI3NDZjY2IxMDgyOTlh
ZTZhMjBlNzg2Y2U3MGVkZDguLjRmYzdiOGU5NmE4ODhiOTUzZWFiZTNiYmQ4ODU5NzAzNzNmMzRh
NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYVN0cmVhbUF1ZGlvU291cmNlLmNwcApAQCAtNTcsNyArNTcsNyBAQCBjb25zdCBSZWFsdGlt
ZU1lZGlhU291cmNlU2V0dGluZ3MmIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OnNldHRpbmdzKCkK
ICAgICByZXR1cm4gbV9jdXJyZW50U2V0dGluZ3M7CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0Ep
CisjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhVVNFKEdTVFJFQU1FUikKIHZvaWQgTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZTo6Y29uc3VtZUF1ZGlvKEF1ZGlvQnVzJiwgc2l6ZV90KQogewogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlv
U291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVk
aW9Tb3VyY2UuaAppbmRleCA3N2Q5OTNiNTMzZjE0OTg1ZTJjYzdmMjczZGQ4NmYzNGUyNzEzMWVj
Li4yMDBiYjcwZTE3ZWI5NWE0NTNjNzZmYTUzYThlMmIzNDJkYTBmNzg2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2UuaApAQCAtNjAsNyArNjAsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2RldmljZUlkOwog
ICAgIFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyBtX2N1cnJlbnRTZXR0aW5nczsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1BdWRpb0RhdGE+IG1fYXVkaW9CdWZmZXI7Ci0jaWYgVVNF
KEFWRk9VTkRBVElPTikKKyNpZiBVU0UoQVZGT1VOREFUSU9OKSB8fCBVU0UoR1NUUkVBTUVSKQog
ICAgIHNpemVfdCBtX251bWJlck9mRnJhbWVzIHsgMCB9OwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNl
R1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDhhMTdjNTFhZmQ5NWRlNTE0
OGJjYTlhOTE3ZDA4YzI3NzQxMGFhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAg
LTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBJZ2FsaWEgUy5MCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhaW50IHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCIKKworI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJBdWRp
b0J1cy5oIgorI2luY2x1ZGUgIkdTdHJlYW1lckF1ZGlvRGF0YS5oIgorI2luY2x1ZGUgIkdTdHJl
YW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIHZvaWQgY29weUJ1c0RhdGEoQXVkaW9CdXMmIGJ1
cywgR3N0QnVmZmVyKiBidWZmZXIsIGJvb2wgaXNNdXRlZCkKK3sKKyAgICBHc3RNYXBwZWRCdWZm
ZXIgbWFwcGVkQnVmZmVyKGJ1ZmZlciwgR1NUX01BUF9XUklURSk7CisgICAgaWYgKGlzTXV0ZWQp
IHsKKyAgICAgICAgbWVtc2V0KG1hcHBlZEJ1ZmZlci5kYXRhKCksIDAsIG1hcHBlZEJ1ZmZlci5z
aXplKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ3NpemUgc2l6ZSA9IG1hcHBl
ZEJ1ZmZlci5zaXplKCkgLyBidXMubnVtYmVyT2ZDaGFubmVscygpOworICAgIGZvciAoc2l6ZV90
IGNoYW5uZWxJbmRleCA9IDA7IGNoYW5uZWxJbmRleCA8IGJ1cy5udW1iZXJPZkNoYW5uZWxzKCk7
ICsrY2hhbm5lbEluZGV4KSB7CisgICAgICAgIEF1ZGlvQ2hhbm5lbCYgY2hhbm5lbCA9ICpidXMu
Y2hhbm5lbChjaGFubmVsSW5kZXgpOworICAgICAgICBmbG9hdCogZGVzdGluYXRpb24gPSByZWlu
dGVycHJldF9jYXN0PGZsb2F0Kj4obWFwcGVkQnVmZmVyLmRhdGEoKSArIChjaGFubmVsSW5kZXgg
KiBzaXplKSk7CisgICAgICAgIG1lbWNweShkZXN0aW5hdGlvbiwgY2hhbm5lbC5kYXRhKCksIHNp
emUpOworICAgIH0KK30KKwordm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjb25zdW1lQXVk
aW8oQXVkaW9CdXMmIGJ1cywgc2l6ZV90IG51bWJlck9mRnJhbWVzKQoreworICAgIGlmICghYnVz
Lm51bWJlck9mQ2hhbm5lbHMoKSB8fCBidXMubnVtYmVyT2ZDaGFubmVscygpID4gMikgeworICAg
ICAgICBSRUxFQVNFX0xPR19FUlJPUihNZWRpYSwgIk1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U6OmNv
bnN1bWVBdWRpbyglcCkgdHJ5aW5nIHRvIGNvbnN1bWUgYnVzIHdpdGggJXUgY2hhbm5lbHMiLCB0
aGlzLCBidXMubnVtYmVyT2ZDaGFubmVscygpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIGF1dG8gbWVkaWFUaW1lID0gTWVkaWFUaW1lKChtX251bWJlck9mRnJhbWVzICogR19VU0VD
X1BFUl9TRUMpIC8gbV9jdXJyZW50U2V0dGluZ3Muc2FtcGxlUmF0ZSgpLCBHX1VTRUNfUEVSX1NF
Qyk7CisgICAgbV9udW1iZXJPZkZyYW1lcyArPSBudW1iZXJPZkZyYW1lczsKKworICAgIEdzdEF1
ZGlvSW5mbyBpbmZvOworICAgIGdzdF9hdWRpb19pbmZvX3NldF9mb3JtYXQoJmluZm8sIEdTVF9B
VURJT19GT1JNQVRfRjMyTEUsIG1fY3VycmVudFNldHRpbmdzLnNhbXBsZVJhdGUoKSwgYnVzLm51
bWJlck9mQ2hhbm5lbHMoKSwgbnVsbHB0cik7CisgICAgR1NUX0FVRElPX0lORk9fTEFZT1VUKCZp
bmZvKSA9IEdTVF9BVURJT19MQVlPVVRfTk9OX0lOVEVSTEVBVkVEOworICAgIGdzaXplIHNpemUg
PSBHU1RfQVVESU9fSU5GT19CUEYoJmluZm8pICogYnVzLm51bWJlck9mQ2hhbm5lbHMoKSAqIG51
bWJlck9mRnJhbWVzOworCisgICAgYXV0byBjYXBzID0gYWRvcHRHUmVmKGdzdF9hdWRpb19pbmZv
X3RvX2NhcHMoJmluZm8pKTsKKyAgICBhdXRvIGJ1ZmZlciA9IGFkb3B0R1JlZihnc3RfYnVmZmVy
X25ld19hbGxvY2F0ZShudWxscHRyLCBzaXplLCBudWxscHRyKSk7CisgICAgY29weUJ1c0RhdGEo
YnVzLCBidWZmZXIuZ2V0KCksIG11dGVkKCkpOworICAgIGF1dG8gc2FtcGxlID0gYWRvcHRHUmVm
KGdzdF9zYW1wbGVfbmV3KGJ1ZmZlci5nZXQoKSwgY2Fwcy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0
cikpOworICAgIG1fYXVkaW9CdWZmZXIgPSBtYWtlVW5pcXVlPEdTdHJlYW1lckF1ZGlvRGF0YT4o
V1RGTW92ZShzYW1wbGUpLCBpbmZvKTsKKworICAgIEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24oaW5mbyk7CisgICAgYXVkaW9TYW1wbGVzQXZhaWxhYmxlKG1lZGlh
VGltZSwgKm1fYXVkaW9CdWZmZXIsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0p
ICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9H
U3RyZWFtZXIuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9HU3RyZWFtZXIuY21ha2UK
aW5kZXggMGQ3MThjZWNlMGMwMDEzNjRlODc0Nzg2YTI5MTM0YWM4NGJmYzExYi4uZGZhMmM0ZGIx
NGQ3MWFlY2MzYmYyNjU1OWI3OGJkYWM4MjUwYzMzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vR1N0cmVhbWVyLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L0dTdHJlYW1lci5jbWFrZQpAQCAtNiw2ICs2LDcgQEAgaWYgKEVOQUJMRV9WSURFTyBPUiBFTkFC
TEVfV0VCX0FVRElPKQogICAgICkKIAogICAgIGxpc3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwor
ICAgICAgICBNb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VHU3RyZWFtZXIu
Y3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9BdWRpb1RyYWNrUHJpdmF0
ZUdTdHJlYW1lci5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dMVmlk
ZW9TaW5rR1N0cmVhbWVyLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
R1JlZlB0ckdTdHJlYW1lci5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
YWYwYzY2NmZkOTY4NTEyZWRmZTk1ZDcyMzE2MTkyY2NiMDczNTEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlv
RGF0YS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggTWV0cm9s
b2dpY2FsIEdyb3VwIEIuVi4KKyAqIEF1dGhvcjogVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJA
aWdhbGlhLmNvbT4KKyAqIEF1dGhvcjogQWxlamFuZHJvIEcuIENhc3RybyA8YWxleEBpZ2FsaWEu
Y29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaWYgVVNFKEdTVFJFQU1FUikKKworI2luY2x1ZGUgIkdSZWZQ
dHJHU3RyZWFtZXIuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUF1ZGlvRGF0YS5oIgorCisjaW5jbHVk
ZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1N0
cmVhbWVyQXVkaW9EYXRhIGZpbmFsIDogcHVibGljIFBsYXRmb3JtQXVkaW9EYXRhIHsKK3B1Ymxp
YzoKKyAgICBHU3RyZWFtZXJBdWRpb0RhdGEoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlLCBH
c3RBdWRpb0luZm8gaW5mbykKKyAgICAgICAgOiBtX3NhbXBsZShXVEZNb3ZlKHNhbXBsZSkpCisg
ICAgICAgICwgbV9hdWRpb0luZm8oaW5mbykKKyAgICB7CisgICAgfQorCisgICAgR1N0cmVhbWVy
QXVkaW9EYXRhKEdSZWZQdHI8R3N0U2FtcGxlPiYmIHNhbXBsZSkKKyAgICAgICAgOiBtX3NhbXBs
ZShXVEZNb3ZlKHNhbXBsZSkpCisgICAgeworICAgICAgICBnc3RfYXVkaW9faW5mb19mcm9tX2Nh
cHMoJm1fYXVkaW9JbmZvLCBnc3Rfc2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgpKSk7Cisg
ICAgfQorCisgICAgdm9pZCBzZXRTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+JiYgc2FtcGxlKSB7
IG1fc2FtcGxlID0gV1RGTW92ZShzYW1wbGUpOyB9CisgICAgR3N0U2FtcGxlKiBnZXRTYW1wbGUo
KSB7IHJldHVybiBtX3NhbXBsZS5nZXQoKTsgfQorICAgIEdzdEF1ZGlvSW5mbyBnZXRBdWRpb0lu
Zm8oKSB7IHJldHVybiBtX2F1ZGlvSW5mbzsgfQorICAgIHVpbnQzMl90IGNoYW5uZWxDb3VudCgp
IGNvbnN0IHsgcmV0dXJuIEdTVF9BVURJT19JTkZPX0NIQU5ORUxTKCZtX2F1ZGlvSW5mbyk7IH0K
KworcHJpdmF0ZToKKyAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBLaW5kOjpHU3RyZWFt
ZXJBdWRpb0RhdGE7IH0KKyAgICBHUmVmUHRyPEdzdFNhbXBsZT4gbV9zYW1wbGU7CisgICAgR3N0
QXVkaW9JbmZvIG1fYXVkaW9JbmZvOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitT
UEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdlYkNvcmU6OkdTdHJlYW1lckF1ZGlvRGF0YSkK
K3N0YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0
YSkgeyByZXR1cm4gZGF0YS5raW5kKCkgPT0gV2ViQ29yZTo6UGxhdGZvcm1BdWRpb0RhdGE6Oktp
bmQ6OkdTdHJlYW1lckF1ZGlvRGF0YTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQor
CisjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkzNjQ4ZWJlYWU2OTdhZTQxOGRmN2E0MmQ0
Y2IyYWM2NDFlYzVkYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbi5oCkBAIC0w
LDAgKzEsMTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91
cCBCLlYuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTgsIDIwMjAgSWdhbGlhIFMuTC4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2lmIFVTRShHU1RSRUFNRVIpCisKKyNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0
aW9uLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCisjaW5jbHVkZSA8Z3N0L2F1ZGlv
L2F1ZGlvLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR1N0cmVhbWVyQXVkaW9T
dHJlYW1EZXNjcmlwdGlvbiBmaW5hbDogcHVibGljIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gewor
cHVibGljOgorICAgIEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oR3N0QXVkaW9JbmZv
IGluZm8pCisgICAgICAgIDogbV9pbmZvKGluZm8pCisgICAgICAgICwgbV9jYXBzKGFkb3B0R1Jl
Zihnc3RfYXVkaW9faW5mb190b19jYXBzKCZtX2luZm8pKSkKKyAgICB7CisgICAgfQorCisgICAg
R1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbihHc3RBdWRpb0luZm8gKmluZm8pCisgICAg
ICAgIDogbV9pbmZvKCppbmZvKQorICAgICAgICAsIG1fY2FwcyhhZG9wdEdSZWYoZ3N0X2F1ZGlv
X2luZm9fdG9fY2FwcygmbV9pbmZvKSkpCisgICAgeworICAgIH0KKworICAgIEdTdHJlYW1lckF1
ZGlvU3RyZWFtRGVzY3JpcHRpb24oKQorICAgIHsKKyAgICAgICAgZ3N0X2F1ZGlvX2luZm9faW5p
dCgmbV9pbmZvKTsKKyAgICB9CisKKyAgICB+R1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlv
bigpID0gZGVmYXVsdDsKKworICAgIGNvbnN0IFBsYXRmb3JtRGVzY3JpcHRpb24mIHBsYXRmb3Jt
RGVzY3JpcHRpb24oKSBjb25zdAorICAgIHsKKyAgICAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9u
ID0geyBQbGF0Zm9ybURlc2NyaXB0aW9uOjpHU3RyZWFtZXJBdWRpb1N0cmVhbURlc2NyaXB0aW9u
LCByZWludGVycHJldF9jYXN0PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KCZt
X2luZm8pIH07CisKKyAgICAgICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKKyAgICB9
CisKKyAgICBQQ01Gb3JtYXQgZm9ybWF0KCkgY29uc3QgZmluYWwKKyAgICB7CisgICAgICAgIHN3
aXRjaCAoR1NUX0FVRElPX0lORk9fRk9STUFUKCZtX2luZm8pKSB7CisgICAgICAgIGNhc2UgR1NU
X0FVRElPX0ZPUk1BVF9TMTZMRToKKyAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MxNkJF
OgorICAgICAgICAgICAgcmV0dXJuIEludDE2OworICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JN
QVRfUzMyTEU6CisgICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMzJCRToKKyAgICAgICAg
ICAgIHJldHVybiBJbnQzMjsKKyAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX0YzMkxFOgor
ICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfRjMyQkU6CisgICAgICAgICAgICByZXR1cm4g
RmxvYXQzMjsKKyAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX0Y2NExFOgorICAgICAgICBj
YXNlIEdTVF9BVURJT19GT1JNQVRfRjY0QkU6CisgICAgICAgICAgICByZXR1cm4gRmxvYXQ2NDsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAg
IHJldHVybiBOb25lOworICAgIH0KKworICAgIGRvdWJsZSBzYW1wbGVSYXRlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gR1NUX0FVRElPX0lORk9fUkFURSgmbV9pbmZvKTsgfQorICAgIGJvb2wgaXNQ
Q00oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmb3JtYXQoKSAhPSBOb25lOyB9CisgICAgYm9vbCBp
c0ludGVybGVhdmVkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gR1NUX0FVRElPX0lORk9fTEFZT1VU
KCZtX2luZm8pID09IEdTVF9BVURJT19MQVlPVVRfSU5URVJMRUFWRUQ7IH0KKyAgICBib29sIGlz
U2lnbmVkSW50ZWdlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEdTVF9BVURJT19JTkZPX0lTX0lO
VEVHRVIoJm1faW5mbyk7IH0KKyAgICBib29sIGlzTmF0aXZlRW5kaWFuKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gR1NUX0FVRElPX0lORk9fRU5ESUFOTkVTUygmbV9pbmZvKSA9PSBHX0JZVEVfT1JE
RVI7IH0KKyAgICBib29sIGlzRmxvYXQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBHU1RfQVVESU9f
SU5GT19JU19GTE9BVCgmbV9pbmZvKTsgfQorICAgIGludCBieXRlc1BlckZyYW1lKCkgeyByZXR1
cm4gR1NUX0FVRElPX0lORk9fQlBGKCZtX2luZm8pOyAgfQorCisgICAgdWludDMyX3QgbnVtYmVy
T2ZJbnRlcmxlYXZlZENoYW5uZWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gaXNJbnRlcmxlYXZl
ZCgpID8gR1NUX0FVRElPX0lORk9fQ0hBTk5FTFMoJm1faW5mbykgOiBUUlVFOyB9CisgICAgdWlu
dDMyX3QgbnVtYmVyT2ZDaGFubmVsU3RyZWFtcygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEdTVF9B
VURJT19JTkZPX0NIQU5ORUxTKCZtX2luZm8pOyB9CisgICAgdWludDMyX3QgbnVtYmVyT2ZDaGFu
bmVscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEdTVF9BVURJT19JTkZPX0NIQU5ORUxTKCZtX2lu
Zm8pOyB9CisgICAgdWludDMyX3Qgc2FtcGxlV29yZFNpemUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBHU1RfQVVESU9fSU5GT19CUFMoJm1faW5mbyk7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBHU3RyZWFtZXJBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBvdGhlcikgeyByZXR1cm4gZ3N0
X2F1ZGlvX2luZm9faXNfZXF1YWwoJm1faW5mbywgJm90aGVyLm1faW5mbyk7IH0KKyAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3RoZXIp
IHsgcmV0dXJuICFvcGVyYXRvciA9PSAob3RoZXIpOyB9CisKKyAgICBHc3RDYXBzKiBjYXBzKCkg
eyByZXR1cm4gbV9jYXBzLmdldCgpOyB9CisgICAgR3N0QXVkaW9JbmZvKiBnZXRJbmZvKCkgeyBy
ZXR1cm4gJm1faW5mbzsgfQorCitwcml2YXRlOgorICAgIEdzdEF1ZGlvSW5mbyBtX2luZm87Cisg
ICAgR1JlZlB0cjxHc3RDYXBzPiBtX2NhcHM7CisgICAgbXV0YWJsZSBQbGF0Zm9ybURlc2NyaXB0
aW9uIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKK307CisKK30gLy8gV2ViQ29yZQorCisjZW5kaWYg
Ly8gVVNFKEdTVFJFQU1FUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb0RhdGEuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc3MTUyZjdiYTBmYmNmMWE2NTEzN2FiYmY5OGRl
Yjc3M2ZmY2FjYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVy
QXVkaW9EYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDE4IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCi0gKiBBdXRob3I6IFRoaWJhdWx0
IFNhdW5pZXIgPHRzYXVuaWVyQGlnYWxpYS5jb20+Ci0gKiBBdXRob3I6IEFsZWphbmRybyBHLiBD
YXN0cm8gPGFsZXhAaWdhbGlhLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UKLSAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pICYmIFVTRShHU1RSRUFNRVIpCi0KLSNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgi
Ci0jaW5jbHVkZSAiUGxhdGZvcm1BdWRpb0RhdGEuaCIKLQotI2luY2x1ZGUgPGdzdC9hdWRpby9h
dWRpby5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci1jbGFzcyBHU3RyZWFtZXJBdWRpb0RhdGEg
ZmluYWwgOiBwdWJsaWMgUGxhdGZvcm1BdWRpb0RhdGEgewotcHVibGljOgotICAgIEdTdHJlYW1l
ckF1ZGlvRGF0YShHUmVmUHRyPEdzdFNhbXBsZT4mJiBzYW1wbGUsIEdzdEF1ZGlvSW5mbyBpbmZv
KQotICAgICAgICA6IG1fc2FtcGxlKFdURk1vdmUoc2FtcGxlKSkKLSAgICAgICAgLCBtX2F1ZGlv
SW5mbyhpbmZvKQotICAgIHsKLSAgICB9Ci0KLSAgICBHU3RyZWFtZXJBdWRpb0RhdGEoR1JlZlB0
cjxHc3RTYW1wbGU+JiYgc2FtcGxlKQotICAgICAgICA6IG1fc2FtcGxlKFdURk1vdmUoc2FtcGxl
KSkKLSAgICB7Ci0gICAgICAgIGdzdF9hdWRpb19pbmZvX2Zyb21fY2FwcygmbV9hdWRpb0luZm8s
IGdzdF9zYW1wbGVfZ2V0X2NhcHMobV9zYW1wbGUuZ2V0KCkpKTsKLSAgICB9Ci0KLSAgICBHc3RT
YW1wbGUqIGdldFNhbXBsZSgpIHsgcmV0dXJuIG1fc2FtcGxlLmdldCgpOyB9Ci0gICAgR3N0QXVk
aW9JbmZvIGdldEF1ZGlvSW5mbygpIHtyZXR1cm4gbV9hdWRpb0luZm87IH0KLQotcHJpdmF0ZToK
LSAgICBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBLaW5kOjpHU3RyZWFtZXJBdWRpb0RhdGE7
IH0KLSAgICBHUmVmUHRyPEdzdFNhbXBsZT4gbV9zYW1wbGU7Ci0gICAgR1JlZlB0cjxHc3RDYXBz
PiBtX2NhcHM7Ci0KLSAgICBHc3RBdWRpb0luZm8gbV9hdWRpb0luZm87Ci19OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0Uo
R1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJBdWRpb1N0cmVh
bURlc2NyaXB0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwNTU5ZjFjYjIx
ZTMzMTNiZGM3YTY0YzlmZTRmMDY1YzE2ODEwNjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24uaAorKysgL2Rldi9udWxs
CkBAIC0xLDEwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE4IE1ldHJvbG9naWNh
bCBHcm91cCBCLlYuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTgsIDIwMjAgSWdhbGlhIFMuTC4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFpbnQgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jcHJh
Z21hIG9uY2UKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RSRUFNRVIpCi0K
LSNpbmNsdWRlICJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLmgiCi0jaW5jbHVkZSAiR1N0cmVhbWVy
Q29tbW9uLmgiCi0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotY2xhc3MgR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiBmaW5hbDogcHVi
bGljIEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24gewotcHVibGljOgotICAgIEdTdHJlYW1lckF1ZGlv
U3RyZWFtRGVzY3JpcHRpb24oR3N0QXVkaW9JbmZvIGluZm8pCi0gICAgICAgIDogbV9pbmZvKGlu
Zm8pCi0gICAgICAgICwgbV9jYXBzKGFkb3B0R1JlZihnc3RfYXVkaW9faW5mb190b19jYXBzKCZt
X2luZm8pKSkKLSAgICB7Ci0gICAgfQotCi0gICAgR1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlw
dGlvbihHc3RBdWRpb0luZm8gKmluZm8pCi0gICAgICAgIDogbV9pbmZvKCppbmZvKQotICAgICAg
ICAsIG1fY2FwcyhhZG9wdEdSZWYoZ3N0X2F1ZGlvX2luZm9fdG9fY2FwcygmbV9pbmZvKSkpCi0g
ICAgewotICAgIH0KLQotICAgIEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24oKQotICAg
IHsKLSAgICAgICAgZ3N0X2F1ZGlvX2luZm9faW5pdCgmbV9pbmZvKTsKLSAgICB9Ci0KLSAgICBX
RUJDT1JFX0VYUE9SVCB+R1N0cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbigpIHsgfTsKLQot
ICAgIGNvbnN0IFBsYXRmb3JtRGVzY3JpcHRpb24mIHBsYXRmb3JtRGVzY3JpcHRpb24oKSBjb25z
dAotICAgIHsKLSAgICAgICAgbV9wbGF0Zm9ybURlc2NyaXB0aW9uID0geyBQbGF0Zm9ybURlc2Ny
aXB0aW9uOjpHU3RyZWFtZXJBdWRpb1N0cmVhbURlc2NyaXB0aW9uLCByZWludGVycHJldF9jYXN0
PGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbio+KCZtX2luZm8pIH07Ci0KLSAgICAg
ICAgcmV0dXJuIG1fcGxhdGZvcm1EZXNjcmlwdGlvbjsKLSAgICB9Ci0KLSAgICBXRUJDT1JFX0VY
UE9SVCBQQ01Gb3JtYXQgZm9ybWF0KCkgY29uc3QgZmluYWwgewotICAgICAgICBzd2l0Y2ggKEdT
VF9BVURJT19JTkZPX0ZPUk1BVCgmbV9pbmZvKSkgewotICAgICAgICBjYXNlIEdTVF9BVURJT19G
T1JNQVRfUzE2TEU6Ci0gICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMTZCRToKLSAgICAg
ICAgICAgIHJldHVybiBJbnQxNjsKLSAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MzMkxF
OgotICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzMyQkU6Ci0gICAgICAgICAgICByZXR1
cm4gSW50MzI7Ci0gICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9GMzJMRToKLSAgICAgICAg
Y2FzZSBHU1RfQVVESU9fRk9STUFUX0YzMkJFOgotICAgICAgICAgICAgcmV0dXJuIEZsb2F0MzI7
Ci0gICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9GNjRMRToKLSAgICAgICAgY2FzZSBHU1Rf
QVVESU9fRk9STUFUX0Y2NEJFOgotICAgICAgICAgICAgcmV0dXJuIEZsb2F0NjQ7Ci0gICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4g
Tm9uZTsKLSAgICB9Ci0KLSAgICBkb3VibGUgc2FtcGxlUmF0ZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIEdTVF9BVURJT19JTkZPX1JBVEUoJm1faW5mbyk7IH0KLSAgICBib29sIGlzUENNKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gZm9ybWF0KCkgIT0gTm9uZTsgfQotICAgIGJvb2wgaXNJbnRlcmxl
YXZlZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIEdTVF9BVURJT19JTkZPX0xBWU9VVCgmbV9pbmZv
KSA9PSBHU1RfQVVESU9fTEFZT1VUX0lOVEVSTEVBVkVEOyB9Ci0gICAgYm9vbCBpc1NpZ25lZElu
dGVnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBHU1RfQVVESU9fSU5GT19JU19JTlRFR0VSKCZt
X2luZm8pOyB9Ci0gICAgYm9vbCBpc05hdGl2ZUVuZGlhbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IEdTVF9BVURJT19JTkZPX0VORElBTk5FU1MoJm1faW5mbykgPT0gR19CWVRFX09SREVSOyB9Ci0g
ICAgYm9vbCBpc0Zsb2F0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gR1NUX0FVRElPX0lORk9fSVNf
RkxPQVQoJm1faW5mbyk7IH0KLSAgICBpbnQgYnl0ZXNQZXJGcmFtZSgpIHsgcmV0dXJuIEdTVF9B
VURJT19JTkZPX0JQRigmbV9pbmZvKTsgIH0KLQotICAgIHVpbnQzMl90IG51bWJlck9mSW50ZXJs
ZWF2ZWRDaGFubmVscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGlzSW50ZXJsZWF2ZWQoKSA/IEdT
VF9BVURJT19JTkZPX0NIQU5ORUxTKCZtX2luZm8pIDogVFJVRTsgfQotICAgIHVpbnQzMl90IG51
bWJlck9mQ2hhbm5lbFN0cmVhbXMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBHU1RfQVVESU9fSU5G
T19DSEFOTkVMUygmbV9pbmZvKTsgfQotICAgIHVpbnQzMl90IG51bWJlck9mQ2hhbm5lbHMoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBHU1RfQVVESU9fSU5GT19DSEFOTkVMUygmbV9pbmZvKTsgfQot
ICAgIHVpbnQzMl90IHNhbXBsZVdvcmRTaXplKCkgY29uc3QgZmluYWwgeyByZXR1cm4gR1NUX0FV
RElPX0lORk9fQlBTKCZtX2luZm8pOyB9Ci0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgR1N0
cmVhbWVyQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgb3RoZXIpIHsgcmV0dXJuIGdzdF9hdWRpb19p
bmZvX2lzX2VxdWFsKCZtX2luZm8sICZvdGhlci5tX2luZm8pOyB9Ci0gICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IEdTdHJlYW1lckF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIG90aGVyKSB7IHJldHVy
biAhb3BlcmF0b3IgPT0gKG90aGVyKTsgfQotCi0gICAgR3N0Q2FwcyogY2FwcygpIHsgcmV0dXJu
IG1fY2Fwcy5nZXQoKTsgfQotICAgIEdzdEF1ZGlvSW5mbyogZ2V0SW5mbygpIHsgcmV0dXJuICZt
X2luZm87IH0KLQotcHJpdmF0ZToKLSAgICBHc3RBdWRpb0luZm8gbV9pbmZvOwotICAgIEdSZWZQ
dHI8R3N0Q2Fwcz4gbV9jYXBzOwotICAgIG11dGFibGUgUGxhdGZvcm1EZXNjcmlwdGlvbiBtX3Bs
YXRmb3JtRGVzY3JpcHRpb247Ci19OwotCi19IC8vIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJM
RShNRURJQV9TVFJFQU0pICYmIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9nc3RyZWFtZXIvUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlTGliV2ViUlRDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMuY3BwCmluZGV4
IGFiNzA0YTRiMTNlNDdmMDY4NDkzOTBiYzBlNjI3YTFkOWU5N2Y1YjAuLjliZmQ2NjJjOGMzOTIw
NmUyMTcwOTdlNmIyNzdiNTZlZDUzYzMzY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL2dzdHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VM
aWJXZWJSVEMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL2dz
dHJlYW1lci9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2VMaWJXZWJSVEMuY3BwCkBAIC04NCw5
ICs4NCwxMSBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUxpYldlYlJUQzo6YXVk
aW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZQogICAgICAgICAgICAgbnVsbHB0cikp
OwogICAgIH0KIAotICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fYWRhcHRlck11dGV4KTsKLSAgICBh
dXRvIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihkYXRhLmdldFNhbXBsZSgpKTsKLSAg
ICBnc3RfYWRhcHRlcl9wdXNoKG1fYWRhcHRlci5nZXQoKSwgZ3N0X2J1ZmZlcl9yZWYoYnVmZmVy
KSk7CisgICAgeworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2FkYXB0ZXJNdXRleCk7Cisg
ICAgICAgIGF1dG8qIGJ1ZmZlciA9IGdzdF9zYW1wbGVfZ2V0X2J1ZmZlcihkYXRhLmdldFNhbXBs
ZSgpKTsKKyAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaChtX2FkYXB0ZXIuZ2V0KCksIGdzdF9idWZm
ZXJfcmVmKGJ1ZmZlcikpOworICAgIH0KICAgICBMaWJXZWJSVENQcm92aWRlcjo6Y2FsbE9uV2Vi
UlRDU2lnbmFsaW5nVGhyZWFkKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+cHVsbEF1ZGlvRGF0YSgpOwogICAgIH0pOwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGY1
YWY0OTI2ZjRhMTZkZDQxMTcyMWE4MzE3ZjI3OTc5YzJkODgwODkuLmUyN2ViOGY1MWRhYjZlY2Rk
YzZjNmM1NjQ1MjA1OTQ2OWNmNzYxMTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0xMC0y
OSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dT
dHJlYW1lcl0gV2ViQXVkaW8gdG8gTWVkaWFTdHJlYW0gc3VwcG9ydAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE4MzM1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvVGVzdEV4cGVj
dGF0aW9uczogd2VicnRjL3BlZXItY29ubmVjdGlvbi1jcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0
aW9uLmh0bWwgaXMgbm93IHBhc3NpbmcuCisKIDIwMjAtMTAtMjkgIENhdGhpZSBDaGVuICA8Y2F0
aGllY2hlbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEludGVyc2VjdGlvbk9ic2VydmVyQ2FsbGJh
Y2sgbGVhawpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBi
OWZmYzNkYmQ2Y2I3M2MyMzU0NDE1MjRkY2FjNThjNjY2MjVhNjNkLi5hNzJjOGQwODY1NmUzMTY2
NDcwOTBhYmVkNTMwOTg4YmRkZDQwZGQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9ndGsvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVz
dEV4cGVjdGF0aW9ucwpAQCAtNTYyLDggKzU2Miw2IEBAIHdlYmtpdC5vcmcvYi8xODcwNjQgd2Vi
cnRjL2RhdGFjaGFubmVsL21kbnMtaWNlLWNhbmRpZGF0ZXMuaHRtbAogd2Via2l0Lm9yZy9iLzE4
NzA2NCB3ZWJydGMvbGlid2VicnRjL2Rlc2NyaXB0aW9uR2V0dGVycy5odG1sCiB3ZWJraXQub3Jn
L2IvMTc3NTMzIHdlYnJ0Yy92aWRlby1pbnRlcnJ1cHRpb24uaHRtbAogCi13ZWJraXQub3JnL2Iv
MTg2OTMzIHdlYnJ0Yy9wZWVyLWNvbm5lY3Rpb24tY3JlYXRlTWVkaWFTdHJlYW1EZXN0aW5hdGlv
bi5odG1sCi0KIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvd2VicnRjLyBbIFNraXAg
XQogaHR0cC90ZXN0cy93ZWJydGMgWyBTa2lwIF0KIAo=
</data>
<flag name="review"
          id="429116"
          type_id="1"
          status="+"
          setter="calvaris"
    />
          </attachment>
      

    </bug>

</bugzilla>