<?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>141560</bug_id>
          
          <creation_ts>2015-02-13 05:51:35 -0800</creation_ts>
          <short_desc>Implement video hole punching</short_desc>
          <delta_ts>2019-05-02 16:18:10 -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>Layout and Rendering</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Isorce">j.isorce</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>arkr17997</cc>
    
    <cc>brian.holt</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>jeremyj-wk</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jonlee</cc>
    
    <cc>obzhirov</cc>
    
    <cc>p.jacquemart</cc>
    
    <cc>pnormand</cc>
    
    <cc>rgabor</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1068893</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Isorce">j.isorce</who>
    <bug_when>2015-02-13 05:51:35 -0800</bug_when>
    <thetext>Similar to VIDEO_HOLE from chromium except that in the following patch it can be activated through the new -webkit-hole value of video tag &apos;s background property.

Example: &lt;video background=&quot;-webkit-hole&quot;&gt;&lt;/video&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068894</commentid>
    <comment_count>1</comment_count>
      <attachid>246519</attachid>
    <who name="Julien Isorce">j.isorce</who>
    <bug_when>2015-02-13 05:53:10 -0800</bug_when>
    <thetext>Created attachment 246519
Implement video hole punching</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068895</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-13 05:55:05 -0800</bug_when>
    <thetext>Attachment 246519 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:94:  Please declare enum bitfields as unsigned integral types.  [runtime/enum_bitfields] [5]
Total errors found: 1 in 17 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068897</commentid>
    <comment_count>3</comment_count>
      <attachid>246520</attachid>
    <who name="Julien Isorce">j.isorce</who>
    <bug_when>2015-02-13 06:17:00 -0800</bug_when>
    <thetext>Created attachment 246520
2 html examples to illustrate hole punching feature.

(I plan to write some layout tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1068995</commentid>
    <comment_count>4</comment_count>
      <attachid>246519</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-02-13 11:58:43 -0800</bug_when>
    <thetext>Comment on attachment 246519
Implement video hole punching

This is not something we want to support in WebKit.  As Simon noted on webkit-dev, &quot;[hole] is really just adapting to a limitation of the platform’s compositing architecture&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069185</commentid>
    <comment_count>5</comment_count>
    <who name="Julien Isorce">j.isorce</who>
    <bug_when>2015-02-14 03:19:09 -0800</bug_when>
    <thetext>Hole punching is also useful for protected content.

Actually the hardware here is really powerful and zero-copy capable (from CPU point of view) for HW decoding into GL rendering. But this way is still not suitable for protected content.

The attached patch should have been submitted just after the webkit-dev discussion but for priority reasons it has been delayed.

Speaking about the webkit-dev discussion, it was clear for me that a new &lt;hole&gt; tag is definitely a no. But I thought that a capability of &lt;video&gt; tag would have been considered: &quot;The right solution for a WebKit implementation would be to solve this via the accelerated composting code. Just use a &lt;video&gt; or &lt;object&gt; in your markup, then implement the hole-punching via the GraphicsLayer subsystem.&quot;

It is worth to mention that the implementation is independent of the UI tool kit port. Though I only tested it on GTK and EFL. Also there are 2 parts in this patch, the main part about the platform layer that punch through at compositing time. And the second part that parses background=-webkit-hole for a video tag.
In fact in chromium you only have something similar in principle to the first part, so nothing exposed directly from javascript.

There is a very recent discussion on chromium-dev about EME and hole punching: https://groups.google.com/a/chromium.org/forum/#!topic/chromium-dev/P8MDgY9f1RE 

I see hole punching as an intermediate solution until the good solution will be widely supported by the hardware: &quot;GPU support for composition of protected video &quot; (through OpenGL) 

In any case we were happy to share the code so serve as generic example, demo or anything else.

If it gets interest soon or later in the future, even just few parts of the patch, feel free to reopen the bug and I will be happy to rebase it.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246519</attachid>
            <date>2015-02-13 05:53:10 -0800</date>
            <delta_ts>2015-02-13 11:58:43 -0800</delta_ts>
            <desc>Implement video hole punching</desc>
            <filename>0001-Implement-video-hole-punching.patch</filename>
            <type>text/plain</type>
            <size>24451</size>
            <attacher name="Julien Isorce">j.isorce</attacher>
            
              <data encoding="base64">RnJvbSBmYWQzODhhYzQ4Mjk5OWRiNGJhOThjNjQwYTA5Nzg1NmZmZTVlYTgxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKdWxpZW4gSXNvcmNlIDxqLmlzb3JjZUBzYW1zdW5nLmNvbT4K
RGF0ZTogRnJpLCA5IEphbiAyMDE1IDEzOjQ5OjE3ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gSW1w
bGVtZW50IHZpZGVvIGhvbGUgcHVuY2hpbmcKClNpbWlsYXIgdG8gVklERU9fSE9MRSBmcm9tIGNo
cm9taXVtIGV4Y2VwdCB0aGF0IGluCnRoaXMgcGF0Y2ggaXQgY2FuIGJlIGFjdGl2YXRlZCB0aHJv
dWdoIHRoZSBuZXcgLXdlYmtpdC1ob2xlCnZhbHVlIG9mIHZpZGVvIHRhZyAncyBiYWNrZ3JvdW5k
IHByb3BlcnR5OgoKPHZpZGVvIGJhY2tncm91bmQ9Ii13ZWJraXQtaG9sZSI+PC92aWRlbz4KClRo
aXMgcGF0Y2ggZGVmaW5lcyBhIG5ldyBjb21wb3NpdGVkIGxheWVyIFRleHR1cmVNYXBwZXJIb2xl
TGF5ZXIKdGhhdCBpcyB1c2VkIGJ5IHRoZSBtZWRpYSBlbGVtZW50IHRvIHB1bmNoIGEgaG9sZS4K
ClRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBkZXBlbmQgb24gYW55IFVJIHRvb2wga2l0IHBv
cnQuCkJ1dCBjdXJyZW50bHkgaXQgaGFzIGJlZW4gb25seSB0ZXN0ZWQgb24gV2ViS2l0R1RLIGFu
ZCBXZWJLaXRFRkwuCi0tLQogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgICAgICAgICAg
ICAgICAgICAgICAgfCAgMSArCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysKIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluICAgICAgICAgICAgIHwgIDMgKysKIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgICAgICAgICAgIHwgMTcgKysrKysrKwogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmggICAgICAgICAgICAgfCAgOCArKysr
CiAuLi4vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaCAgICB8ICAz
ICstCiAuLi4vcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5jcHAgICB8
ICA4ICsrKysKIC4uLi9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgg
ICAgIHwgIDIgKwogLi4uL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySG9sZUxheWVyLmNw
cCAgICAgfCA0OSArKysrKysrKysrKysrKysrKysrKwogLi4uL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVySG9sZUxheWVyLmggICAgICAgfCA1MiArKysrKysrKysrKysrKysrKysrKysKIC4u
Li9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCAgIHwgIDcgKysr
CiAuLi4vY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCAgICAgICB8ICAz
ICstCiAuLi4vdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZS5oICB8
ICAxICsKIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5jcHAgICAgICAgICAg
IHwgIDUgKysKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHwgMzAgKysrKysrKysrKysrCiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcCAg
ICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKystLS0tCiAuLi4vQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaCB8ICA0ICstCiAxNyBmaWxlcyBjaGFuZ2VkLCAy
NjAgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJIb2xlTGF5
ZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJIb2xlTGF5ZXIuaAoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5k
ZXggNjQ2NmJhNS4uMjdhNDFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTIxNDMsNiArMjE0
Myw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCisgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJIb2xlTGF5ZXIuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmYzdh
OTY5Li4xZmQ3NTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTUtMDItMTMgIEp1
bGllbiBJc29yY2UgIDxqLmlzb3JjZUBzYW1zdW5nLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQg
dmlkZW8gaG9sZSBwdW5jaGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQxNTYwCisKKyAgICAgICAgU2ltaWxhciB0byBWSURFT19IT0xFIGZyb20g
Y2hyb21pdW0gZXhjZXB0IHRoYXQgaW4KKyAgICAgICAgdGhpcyBwYXRjaCBpdCBjYW4gYmUgYWN0
aXZhdGVkIHRocm91Z2ggdGhlIG5ldyAtd2Via2l0LWhvbGUKKyAgICAgICAgdmFsdWUgb2Ygdmlk
ZW8gdGFnICdzIGJhY2tncm91bmQgcHJvcGVydHk6CisKKyAgICAgICAgPHZpZGVvIGJhY2tncm91
bmQ9Ii13ZWJraXQtaG9sZSI+PC92aWRlbz4KKworICAgICAgICBUaGlzIHBhdGNoIGRlZmluZXMg
YSBuZXcgY29tcG9zaXRlZCBsYXllciBUZXh0dXJlTWFwcGVySG9sZUxheWVyCisgICAgICAgIHRo
YXQgaXMgdXNlZCBieSB0aGUgbWVkaWEgZWxlbWVudCB0byBwdW5jaCBhIGhvbGUuCisKKyAgICAg
ICAgVGhlIGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGRlcGVuZCBvbiBhbnkgVUkgdG9vbCBraXQg
cG9ydC4KKyAgICAgICAgQnV0IGN1cnJlbnRseSBpdCBoYXMgYmVlbiBvbmx5IHRlc3RlZCBvbiBX
ZWJLaXRHVEsgYW5kIFdlYktpdEVGTC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIGNzcy9DU1NWYWx1
ZUtleXdvcmRzLmluOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAg
IFBhcnNlIC13ZWJraXQtaG9sZSBpbiBiYWNrZ3JvdW5kIGF0dHJpYnV0ZSB0byBhY3RpdmF0ZSBo
b2xlLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICBSZXR1cm5z
IGhvbGUgbGF5ZXIgaW5zdGVhZCBvZiBwbGF5ZXIncyBsYXllciB3aGVuIGFjdGl2YXRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjppc1Zpc2libGVJblNjaXNz
b3JCb3gpOiBVdGlsaXR5IGZ1bmN0aW9uCisgICAgICAgIHRvIGNoZWNrIGlmIGEgcmVjdGFuZ2xl
IGlzIHZpc2libGUuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVySG9sZUxheWVyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
SG9sZUxheWVyOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIElmIHZpc2libGUgdGhl
biBjZWFyIGEgcmVhY3RhbmdsZSBhcmVhIHVzaW5nIEdMIGFwaS4KKyAgICAgICAgQWxsIGxheWVy
cyBiZWhpbmcgdGhlIGhvbGUgbGF5ZXIgYXJlIGNsZWFyZWQgYXQgY29tcG9zaXRpbmcgdGltZS4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckhvbGVMYXll
ci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJIb2xlTGF5ZXI6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVySG9sZUxheWVyOjp+VGV4dHVy
ZU1hcHBlckhvbGVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVySG9sZUxh
eWVyOjpUZXh0dXJlTWFwcGVySG9sZUxheWVyKToKKyAgICAgICAgTmV3IHBsYXRmb3JtIHRleHR1
cmUgbWFwcGVyIHRoYXQganVzdCBjbGVhciBhIHJlY3RhbmdsZSBhcmVhLgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI6OmlzSG9sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclJlZkNvdW50ZWQ6On5UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclJlZkNvdW50ZWQpOgorICAgICAgICBEZWZpbmUgYSByZWZl
cmVuY2UgY291bnRlZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllciBiYXNlIGNsYXNzIGluIG9y
ZGVyIHRvIGJlIHVzZWQKKyAgICAgICAgaW4gQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjptX3Bs
YXRmb3JtTGF5ZXJzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzeW5jUGxhdGZvcm1MYXllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NTdGF0
ZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWRlby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJWaWRlbzo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZyk6CisgICAgICAg
IFRlbGwgdGhlIFVJIHByb2Nlc3MgaXQgaGFzIHRvIHVzZSBhIGhvbGUgbGF5ZXIgdGhyb3VnaCB0
aGUgbGF5ZXIgc3RhdGUuCisgICAgICAgIAorICAgICAgICAKKwogMjAxNS0wMi0xMyAgQ3NhYmEg
T3N6dHJvZ29uYWMgIDxvc3N5QHdlYmtpdC5vcmc+CiAKICAgICAgICAgRml4IHRoZSBncGVyZiBy
ZWxhdGVkIGJ1aWxkIGlzc3VlIG9uIHRoZSBXaW5DYWlybyBib3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRzLmluIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U1ZhbHVlS2V5d29yZHMuaW4KaW5kZXggNDcwOWFhOC4uYTU4MjQ3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KKysrIGIvU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4KQEAgLTc4MCw2ICs3ODAsOSBAQCB2aWV3LWJveAogY29u
dGFpbgogY292ZXIKIAorLy8gSE9MRQorLXdlYmtpdC1ob2xlCisKIC8vCiAvLyBDU1NfUFJPUF9f
S0hUTUxfUlRMX09SREVSSU5HCiAvLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggZjdlYjhmZC4uZWVjYmRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCkBAIC0xMzksNiArMTM5LDEwIEBACiAjaW5jbHVkZSA8YmluZGluZ3Mv
U2NyaXB0T2JqZWN0Lmg+CiAjZW5kaWYKIAorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNp
bmNsdWRlICJUZXh0dXJlTWFwcGVySG9sZUxheWVyLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIFNlZWtSZXBlYXREZWxheSA9IDAuMTsKQEAg
LTUyNCw2ICs1MjgsMTQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHIKICAgICAgICAgICAgIGNs
ZWFyTWVkaWFQbGF5ZXIoTG9hZE1lZGlhUmVzb3VyY2UpOwogICAgICAgICAgICAgc2NoZWR1bGVE
ZWxheWVkQWN0aW9uKExvYWRNZWRpYVJlc291cmNlKTsKICAgICAgICAgfQorI2lmIFVTRShURVhU
VVJFX01BUFBFUl9HTCkKKyAgICB9IGVsc2UgaWYgKG5hbWUgPT0gYmFja2dyb3VuZEF0dHIpIHsK
KyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHZhbHVlLCAiLXdlYmtpdC1ob2xlIikpIHsK
KyAgICAgICAgICAgIGlmICghbV9ob2xlTGF5ZXIpCisgICAgICAgICAgICAgICAgbV9ob2xlTGF5
ZXIgPSBUZXh0dXJlTWFwcGVySG9sZUxheWVyOjpjcmVhdGUoKTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBtX2hvbGVMYXllciA9IG51bGxwdHI7CisjZW5kaWYKICAgICB9IGVsc2UgaWYg
KG5hbWUgPT0gY29udHJvbHNBdHRyKQogICAgICAgICBjb25maWd1cmVNZWRpYUNvbnRyb2xzKCk7
CiAgICAgZWxzZSBpZiAobmFtZSA9PSBsb29wQXR0cikKQEAgLTUwMDgsNiArNTAyMCwxMSBAQCBQ
bGF0Zm9ybU1lZGlhIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogCiBQ
bGF0Zm9ybUxheWVyKiBIVE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIHsK
KyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgaWYgKG1faG9sZUxheWVyKQorICAgICAg
ICByZXR1cm4gbV9ob2xlTGF5ZXIuZ2V0KCk7CisjZW5kaWYKKwogICAgIHJldHVybiBtX3BsYXll
ciA/IG1fcGxheWVyLT5wbGF0Zm9ybUxheWVyKCkgOiBudWxscHRyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IDRhYjQ3NjAuLjYxZDJiZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC05Myw2ICs5MywxMCBAQCB0eXBlZGVm
IFZlY3RvcjxDdWVJbnRlcnZhbD4gQ3VlTGlzdDsKIGNsYXNzIE1lZGlhU3RyZWFtOwogI2VuZGlm
CiAKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCitjbGFzcyBUZXh0dXJlTWFwcGVySG9sZUxh
eWVyOworI2VuZGlmCisKIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQKICAgICA6IHB1YmxpYyBIVE1M
RWxlbWVudAogICAgICwgcHJpdmF0ZSBNZWRpYVBsYXllckNsaWVudCwgcHVibGljIE1lZGlhUGxh
eWVyU3VwcG9ydHNUeXBlQ2xpZW50LCBwcml2YXRlIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciwgcHVi
bGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIE1lZGlhQ29udHJvbGxlckludGVyZmFjZSAsIHB1
YmxpYyBNZWRpYVNlc3Npb25DbGllbnQsIHByaXZhdGUgQXVkaW9Qcm9kdWNlcgpAQCAtOTMxLDYg
KzkzNSwxMCBAQCBwcml2YXRlOgogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgUmVmUHRy
PE1lZGlhU3RyZWFtPiBtX21lZGlhU3RyZWFtU3JjT2JqZWN0OwogI2VuZGlmCisKKyNpZiBVU0Uo
VEVYVFVSRV9NQVBQRVJfR0wpCisgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJIb2xlTGF5ZXI+IG1f
aG9sZUxheWVyOworI2VuZGlmCiB9OwogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggNzkyN2E0OS4uYzE2NjcyZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC0yNiw3ICsyNiw2IEBACiAj
aW5jbHVkZSAiSW1hZ2UuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyLmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
ICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKICNpbmNsdWRlICJHcmFwaGljc1N1cmZhY2UuaCIK
QEAgLTM2LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBHcmFwaGljc0xh
eWVyOwogCi1jbGFzcyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyLCBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlTWFwcGVyQmFja2lu
Z1N0b3JlPiB7CitjbGFzcyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlIDogcHVibGljIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUmVmQ291bnRlZCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSA9IDA7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdM
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyR0wuY3BwCmluZGV4IDExNTRmNGUuLmY0MDEyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC0xMTE4LDUgKzExMTgsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPFRleHR1cmVNYXBwZXI+IFRl
eHR1cmVNYXBwZXI6OnBsYXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKQogfQogI2VuZGlmCiAKK2Jv
b2wgVGV4dHVyZU1hcHBlckdMOjppc1Zpc2libGVJblNjaXNzb3JCb3goY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit7CisgICAgRmxv
YXRRdWFkIHF1YWQgPSBtYXRyaXgucHJvamVjdFF1YWQodGFyZ2V0KTsKKyAgICBJbnRSZWN0IHJl
Y3QgPSBxdWFkLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7CisgICAgcmVjdC5pbnRlcnNlY3QoY2xp
cEJvdW5kcygpKTsKKyAgICByZXR1cm4gIXJlY3QuaXNFbXB0eSgpOworfQorCiB9OwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdMLmgKaW5kZXggNDI0MDdmYi4uZWI3OTMwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
R0wuaApAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldEVuYWJsZUVkZ2VE
aXN0YW5jZUFudGlhbGlhc2luZyhib29sIGVuYWJsZWQpIHsgbV9lbmFibGVFZGdlRGlzdGFuY2VB
bnRpYWxpYXNpbmcgPSBlbmFibGVkOyB9CiAKKyAgICBib29sIGlzVmlzaWJsZUluU2Npc3NvckJv
eChjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsK
KwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgQ2xpcFN0YXRlIHsKICAgICAgICAgSW50UmVjdCBzY2lz
c29yQm94OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJIb2xlTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJIb2xlTGF5ZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZmZiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckhvbGVMYXllci5j
cHAKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgU2Ftc3VuZyBF
bGVjdHJvbmljcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWludCB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFVTRShURVhUVVJFX01BUFBFUikKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVySG9sZUxh
eWVyLmgiCisKKyNpbmNsdWRlICJDb2xvclNwYWNlLmgiCisjaW5jbHVkZSAiR0xDb250ZXh0Lmgi
CisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
LmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hcHBlckdMLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
YWwuaD4KKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3ZvaWQgVGV4dHVyZU1hcHBlckhvbGVMYXllcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0KQoreworICAgIGlmICghZG93bmNh
c3Q8VGV4dHVyZU1hcHBlckdMPih0ZXh0dXJlTWFwcGVyKS0+aXNWaXNpYmxlSW5TY2lzc29yQm94
KHRhcmdldCwgbWF0cml4KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgVGV4dHVyZU1hcHBlckdM
KiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIp
OworICAgIHRleG1hcEdMLT5iZWdpbkNsaXAobWF0cml4LCB0YXJnZXQpOworICAgIHRleG1hcEdM
LT5ncmFwaGljc0NvbnRleHQzRCgpLT5jbGVhckNvbG9yKDAuMGYsIDAuMGYsIDAuMGYsIDAuMGYp
OworICAgIHRleG1hcEdMLT5ncmFwaGljc0NvbnRleHQzRCgpLT5jbGVhcihHcmFwaGljc0NvbnRl
eHQzRDo6Q09MT1JfQlVGRkVSX0JJVCk7CisgICAgdGV4bWFwR0wtPmVuZENsaXAoKTsKK30KKwor
fQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVySG9sZUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckhvbGVMYXllci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNzEyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckhvbGVMYXllci5o
CkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIFNhbXN1bmcgRWxl
Y3Ryb25pY3MsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwor
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoK
KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFpbnQgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFRleHR1cmVNYXBwZXJI
b2xlTGF5ZXJfaAorI2RlZmluZSBUZXh0dXJlTWFwcGVySG9sZUxheWVyX2gKKworI2lmIFVTRShU
RVhUVVJFX01BUFBFUikKKworI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVGV4dHVyZU1hcHBlckhvbGVMYXllciA6
IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclJlZkNvdW50ZWQgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFRleHR1cmVNYXBwZXJIb2xlTGF5ZXIpOyBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVySG9s
ZUxheWVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlckhvbGVM
YXllcik7IH0KKyAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVySG9sZUxheWVyKCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmID0gVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCBib29sIGlzSG9sZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KKworICAgIC8v
IEVuc3VyZSB0byBoYXZlIGEgdmFsaWQgbGF5ZXIuCisjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0Up
CisgICAgdmlydHVhbCBHcmFwaGljc1N1cmZhY2VUb2tlbiBncmFwaGljc1N1cmZhY2VUb2tlbigp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDE7IH0KKyNlbmRpZgorCitwcml2YXRlOgorICAgIFRl
eHR1cmVNYXBwZXJIb2xlTGF5ZXIoKQorICAgICAgICA6IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUmVmQ291bnRlZCgpCisgICAgICAgIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKKworI2VuZGlmIC8vIFRleHR1cmVNYXBwZXJIb2xlTGF5ZXJfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaAppbmRleCAyNDgyZTBlLi5mNjIxMDY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlclBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaApAQCAtMjYsNiArMjYsNyBA
QAogCiAjaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9u
TWF0cml4LmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQxLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgZmxvYXQgb3Bh
Y2l0eSA9IDEuMCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVycygpIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBpc0hvbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENv
bG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKICAgICB7CiAgICAgICAg
IHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoY29sb3IsIGJvcmRlcldpZHRoLCB0YXJnZXRSZWN0
LCB0cmFuc2Zvcm0pOwpAQCAtNjMsNiArNjUsMTEgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllcjo6Q2xpZW50KiBtX2NsaWVudDsKIH07CiAKK2NsYXNzIFRleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUmVmQ291bnRlZCA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllciwgcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJSZWZD
b3VudGVkPiB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5
ZXJSZWZDb3VudGVkKCkgeyB9Cit9OworCiB9OwogCiAjZW5kaWYgLy8gVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyLmNwcAppbmRleCA3MjBkMjVlLi41M2UyZTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRp
bmF0ZWRHcmFwaGljc0xheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcApAQCAt
MzMsNyArMzMsNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYWJsZUFyZWEuaCIKLSNpbmNsdWRlICJUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oIgorI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJIb2xlTGF5ZXIuaCIKICNp
bmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lm
bmRlZiBOREVCVUcKQEAgLTcyOSw2ICs3MjksNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcjo6c3luY1BsYXRmb3JtTGF5ZXIoKQogICAgICAgICByZXR1cm47CiAKICAgICBBU1NFUlQo
bV9wbGF0Zm9ybUxheWVyKTsKKyAgICBtX2xheWVyU3RhdGUuZG9Ib2xlID0gbV9wbGF0Zm9ybUxh
eWVyLT5pc0hvbGUoKTsKICAgICBtX2xheWVyU3RhdGUucGxhdGZvcm1MYXllckZyb250QnVmZmVy
ID0gbV9wbGF0Zm9ybUxheWVyLT5jb3B5VG9HcmFwaGljc1N1cmZhY2UoKTsKICAgICBtX2xheWVy
U3RhdGUucGxhdGZvcm1MYXllclNob3VsZFN3YXBCdWZmZXJzID0gdHJ1ZTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9D
b29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU3RhdGUuaAppbmRleCA0
NGZkNDg2Li5jYTFkZGE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTdGF0ZS5oCkBAIC05MSw2ICs5MSw3IEBAIHN0cnVjdCBDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZSB7CiAgICAgICAgICAgICBib29sIGlzU2Nyb2xsYWJsZUNoYW5n
ZWQ6IDE7CiAgICAgICAgICAgICBib29sIGNvbW1pdHRlZFNjcm9sbE9mZnNldENoYW5nZWQ6IDE7
CiAgICAgICAgICAgICBib29sIGNvbnRlbnRzVGlsaW5nQ2hhbmdlZDogMTsKKyAgICAgICAgICAg
IGJvb2wgZG9Ib2xlOiAxOwogICAgICAgICB9OwogICAgICAgICB1bnNpZ25lZCBjaGFuZ2VNYXNr
OwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlk
ZW8uY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZGVvLmNwcAppbmRleCA1
NzA0NTFkLi5jZmRiOTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVmlkZW8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWRlby5j
cHAKQEAgLTI1Myw2ICsyNTMsMTEgQEAgTGF5b3V0VW5pdCBSZW5kZXJWaWRlbzo6bWluaW11bVJl
cGxhY2VkSGVpZ2h0KCkgY29uc3QKIAogYm9vbCBSZW5kZXJWaWRlbzo6c3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZygpIGNvbnN0CiB7CisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorICAg
IGlmICh2aWRlb0VsZW1lbnQoKS5wbGF0Zm9ybUxheWVyKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworI2VuZGlmCisKICAgICBpZiAoTWVkaWFQbGF5ZXIqIHBsYXllciA9IHZpZGVvRWxlbWVudCgp
LnBsYXllcigpKQogICAgICAgICByZXR1cm4gcGxheWVyLT5zdXBwb3J0c0FjY2VsZXJhdGVkUmVu
ZGVyaW5nKCk7CiAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDRhM2FmODkuLjI0ZDBh
NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxNS0wMi0xMyAgSnVsaWVuIElzb3Jj
ZSAgPGouaXNvcmNlQHNhbXN1bmcuY29tPgorCisgICAgICAgIEltcGxlbWVudCB2aWRlbyBob2xl
IHB1bmNoaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDE1NjAKKworICAgICAgICBTaW1pbGFyIHRvIFZJREVPX0hPTEUgZnJvbSBjaHJvbWl1bSBl
eGNlcHQgdGhhdCBpbgorICAgICAgICB0aGlzIHBhdGNoIGl0IGNhbiBiZSBhY3RpdmF0ZWQgdGhy
b3VnaCB0aGUgbmV3IC13ZWJraXQtaG9sZQorICAgICAgICB2YWx1ZSBvZiB2aWRlbyB0YWcgJ3Mg
YmFja2dyb3VuZCBwcm9wZXJ0eToKKworICAgICAgICA8dmlkZW8gYmFja2dyb3VuZD0iLXdlYmtp
dC1ob2xlIj48L3ZpZGVvPgorCisgICAgICAgIFRoaXMgcGF0Y2ggZGVmaW5lcyBhIG5ldyBjb21w
b3NpdGVkIGxheWVyIFRleHR1cmVNYXBwZXJIb2xlTGF5ZXIKKyAgICAgICAgdGhhdCBpcyB1c2Vk
IGJ5IHRoZSBtZWRpYSBlbGVtZW50IHRvIHB1bmNoIGEgaG9sZS4KKworICAgICAgICBUaGUgaW1w
bGVtZW50YXRpb24gZG9lcyBub3QgZGVwZW5kIG9uIGFueSBVSSB0b29sIGtpdCBwb3J0LgorICAg
ICAgICBCdXQgY3VycmVudGx5IGl0IGhhcyBiZWVuIG9ubHkgdGVzdGVkIG9uIFdlYktpdEdUSyBh
bmQgV2ViS2l0RUZMLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVh
dGVQbGF0Zm9ybUxheWVySWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdy
YXBoaWNzU2NlbmU6OnN5bmNQbGF0Zm9ybUxheWVySWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlc3Ryb3lQbGF0Zm9ybUxheWVySWZOZWVkZWQp
OgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRlbGV0ZUxheWVy
KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphc3NpZ25JbWFn
ZUJhY2tpbmdUb0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpwdXJnZUdMUmVzb3VyY2VzKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaDogCisgICAgICAgIE1ha2UgaXQgbW9yZSBn
ZW5lcmljIGJ5IGhhbmRsaW5nIHBsYXRmb3JtIGxheWVycyBpbmRlYWQgb2YgcmVzdHJpY3Rpbmcg
dG8gc3VyZmFjZXMuCisgICAgICAgIAorCiAyMDE1LTAyLTEyICBUaW0gSG9ydG9uICA8dGltb3Ro
eV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIENyYXNoIHJlbW92aW5nIFJlbW90ZUxheWVy
VHJlZURpc3BsYXlSZWZyZXNoTW9uaXRvciBmcm9tIHRoZSBkcmF3aW5nIGFyZWEncyBtYXAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGU2NzkzMmYuLjk4
ZDE4ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBo
aWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAt
MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlci5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dHVyZU1hcHBlckdMLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVySG9s
ZUxheWVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVyTGF5ZXIuaD4KICNpbmNs
dWRlIDx3dGYvQXRvbWljcy5oPgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CkBAIC0xNzIs
OCArMTczLDE2IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjcmVhdGVQbGF0Zm9y
bUxheWVySWZOZWVkZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsCiAgICAgaWYgKCFzdGF0ZS5wbGF0
Zm9ybUxheWVyVG9rZW4uaXNWYWxpZCgpKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAoc3Rh
dGUuZG9Ib2xlICYmIG1fY2xpZW50KSB7CisgICAgICAgIC8vIENsaWVudCBpcyB0aGUgY29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0UHJveHkuCisgICAgICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclJlZkNvdW50ZWQ+IGhvbGVMYXllcihUZXh0dXJlTWFwcGVySG9sZUxheWVyOjpj
cmVhdGUoKSk7CisgICAgICAgIG1fcGxhdGZvcm1MYXllcnMuc2V0KGxheWVyLCBob2xlTGF5ZXIp
OworICAgICAgICBsYXllci0+c2V0Q29udGVudHNMYXllcihob2xlTGF5ZXIuZ2V0KCkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFj
a2luZ1N0b3JlPiBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlKFRleHR1cmVNYXBwZXJTdXJmYWNl
QmFja2luZ1N0b3JlOjpjcmVhdGUoKSk7Ci0gICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5zZXQo
bGF5ZXIsIHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUpOworICAgIG1fcGxhdGZvcm1MYXllcnMu
c2V0KGxheWVyLCBwbGF0Zm9ybUxheWVyQmFja2luZ1N0b3JlKTsKICAgICBwbGF0Zm9ybUxheWVy
QmFja2luZ1N0b3JlLT5zZXRHcmFwaGljc1N1cmZhY2UoR3JhcGhpY3NTdXJmYWNlOjpjcmVhdGUo
c3RhdGUucGxhdGZvcm1MYXllclNpemUsIHN0YXRlLnBsYXRmb3JtTGF5ZXJTdXJmYWNlRmxhZ3Ms
IHN0YXRlLnBsYXRmb3JtTGF5ZXJUb2tlbikpOwogICAgIGxheWVyLT5zZXRDb250ZW50c0xheWVy
KHBsYXRmb3JtTGF5ZXJCYWNraW5nU3RvcmUuZ2V0KCkpOwogfQpAQCAtMTg4LDEwICsxOTcsMTAg
QEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5bmNQbGF0Zm9ybUxheWVySWZOZWVk
ZWQoVGV4dHVyZU1hcHBlckxheWVyKiBsYXkKICAgICB9CiAKICAgICBpZiAoc3RhdGUucGxhdGZv
cm1MYXllclNob3VsZFN3YXBCdWZmZXJzKSB7Ci0gICAgICAgIEFTU0VSVChtX3N1cmZhY2VCYWNr
aW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSk7Ci0gICAgICAgIFN1cmZhY2VCYWNraW5nU3RvcmVN
YXA6Oml0ZXJhdG9yIGl0ID0gbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5maW5kKGxheWVyKTsKLSAg
ICAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPiBwbGF0Zm9ybUxh
eWVyQmFja2luZ1N0b3JlID0gaXQtPnZhbHVlOwotICAgICAgICBwbGF0Zm9ybUxheWVyQmFja2lu
Z1N0b3JlLT5zd2FwQnVmZmVyc0lmTmVlZGVkKHN0YXRlLnBsYXRmb3JtTGF5ZXJGcm9udEJ1ZmZl
cik7CisgICAgICAgIEFTU0VSVChtX3BsYXRmb3JtTGF5ZXJzLmNvbnRhaW5zKGxheWVyKSk7Cisg
ICAgICAgIFBsYXRmb3JtTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wbGF0Zm9ybUxheWVycy5m
aW5kKGxheWVyKTsKKyAgICAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUmVm
Q291bnRlZD4gcGxhdGZvcm1MYXllciA9IGl0LT52YWx1ZTsKKyAgICAgICAgc3RhdGljX2Nhc3Q8
VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUqPihwbGF0Zm9ybUxheWVyLmdldCgpKS0+
c3dhcEJ1ZmZlcnNJZk5lZWRlZChzdGF0ZS5wbGF0Zm9ybUxheWVyRnJvbnRCdWZmZXIpOwogICAg
IH0KIH0KIApAQCAtMjAwLDcgKzIwOSw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
OjpkZXN0cm95UGxhdGZvcm1MYXllcklmTmVlZGVkKFRleHR1cmVNYXBwZXJMYXllcioKICAgICBp
ZiAoc3RhdGUucGxhdGZvcm1MYXllclRva2VuLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgbV9zdXJmYWNlQmFja2luZ1N0b3Jlcy5yZW1vdmUobGF5ZXIpOworICAgIG1fcGxhdGZv
cm1MYXllcnMucmVtb3ZlKGxheWVyKTsKICAgICBsYXllci0+c2V0Q29udGVudHNMYXllcigwKTsK
IH0KICNlbmRpZgpAQCAtMzU0LDcgKzM2Myw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpkZWxldGVMYXllcihDb29yZGluYXRlZExheWVySUQgbGF5ZXJJRCkKICAgICBtX2JhY2tp
bmdTdG9yZXMucmVtb3ZlKGxheWVyLmdldCgpKTsKICAgICBtX2ZpeGVkTGF5ZXJzLnJlbW92ZShs
YXllcklEKTsKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAgICBtX3N1cmZhY2VCYWNraW5n
U3RvcmVzLnJlbW92ZShsYXllci5nZXQoKSk7CisgICAgbV9wbGF0Zm9ybUxheWVycy5yZW1vdmUo
bGF5ZXIuZ2V0KCkpOwogI2VuZGlmCiB9CiAKQEAgLTUzNCw3ICs1NDMsNyBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6cmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nSUQgaW1hZwogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFzc2lnbkltYWdl
QmFja2luZ1RvTGF5ZXIoVGV4dHVyZU1hcHBlckxheWVyKiBsYXllciwgQ29vcmRpbmF0ZWRJbWFn
ZUJhY2tpbmdJRCBpbWFnZUlEKQogewogI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgIGlm
IChtX3N1cmZhY2VCYWNraW5nU3RvcmVzLmNvbnRhaW5zKGxheWVyKSkKKyAgICBpZiAobV9wbGF0
Zm9ybUxheWVycy5jb250YWlucyhsYXllcikpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgogCkBA
IC02MzIsNyArNjQxLDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnB1cmdlR0xS
ZXNvdXJjZXMoKQogICAgIG1faW1hZ2VCYWNraW5ncy5jbGVhcigpOwogICAgIG1fcmVsZWFzZWRJ
bWFnZUJhY2tpbmdzLmNsZWFyKCk7CiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgbV9z
dXJmYWNlQmFja2luZ1N0b3Jlcy5jbGVhcigpOworICAgIG1fcGxhdGZvcm1MYXllcnMuY2xlYXIo
KTsKICNlbmRpZgogICAgIG1fc3VyZmFjZXMuY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGlu
YXRlZEdyYXBoaWNzU2NlbmUuaAppbmRleCBmNzE3MTljLi5mNzdkMmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBo
aWNzU2NlbmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuaApAQCAtMTU5LDggKzE1OSw4IEBAIHByaXZhdGU6
CiAgICAgSGFzaFNldDxSZWZQdHI8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+PiBtX2JhY2tpbmdT
dG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnM7CiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSAg
ICB0eXBlZGVmIEhhc2hNYXA8V2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyKiwgUmVmUHRyPFdl
YkNvcmU6OlRleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlPj4gU3VyZmFjZUJhY2tpbmdT
dG9yZU1hcDsKLSAgICBTdXJmYWNlQmFja2luZ1N0b3JlTWFwIG1fc3VyZmFjZUJhY2tpbmdTdG9y
ZXM7CisgICAgdHlwZWRlZiBIYXNoTWFwPFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllciosIFJl
ZlB0cjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclJlZkNvdW50ZWQ+PiBQbGF0
Zm9ybUxheWVyTWFwOworICAgIFBsYXRmb3JtTGF5ZXJNYXAgbV9wbGF0Zm9ybUxheWVyczsKICNl
bmRpZgogCiAgICAgdHlwZWRlZiBIYXNoTWFwPHVpbnQzMl90IC8qIGF0bGFzSUQgKi8sIFJlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+PiBTdXJmYWNlTWFwOwotLSAKMS45LjEKCg==
</data>
<flag name="review"
          id="271460"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>246520</attachid>
            <date>2015-02-13 06:17:00 -0800</date>
            <delta_ts>2015-02-13 06:45:49 -0800</delta_ts>
            <desc>2 html examples to illustrate hole punching feature.</desc>
            <filename>0001-Add-2-html-examples-to-demonstrate-webkit-hole-featu.patch</filename>
            <type>text/plain</type>
            <size>1977</size>
            <attacher name="Julien Isorce">j.isorce</attacher>
            
              <data encoding="base64">RnJvbSBjOGY2NGQxMWZiMjIxODUxYzNkMGUzMTA2N2EzYzlhNjQzMTYzZjBjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKdWxpZW4gSXNvcmNlIDxqLmlzb3JjZUBzYW1zdW5nLmNvbT4K
RGF0ZTogRnJpLCA5IEphbiAyMDE1IDE1OjQ0OjQ3ICswMDAwClN1YmplY3Q6IFtQQVRDSF0gQWRk
IDIgaHRtbCBleGFtcGxlcyB0byBkZW1vbnN0cmF0ZSAtd2Via2l0LWhvbGUgZmVhdHVyZS4KCkdU
SzoKVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXIgLS1ndGsgLS1iZy1jb2xvciAicmdiYSgyNTUs
MjU1LDI1NSwwKSIgd2Via2l0dmlkZW9ob2xlLmh0bWwKCkVGTDoKRUxNX0FDQ0VMPWdsIEVMTV9F
TkdJTkU9Z2wgVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXIgLS1lZmwgLUM9MjU1OjI1NToyNTU6
MCB3ZWJraXR2aWRlb2hvbGUuaHRtbAotLS0KIHdlYmtpdHZpZGVvaG9sZS5odG1sICB8IDMyICsr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiB3ZWJraXR2aWRlb2hvbGUyLmh0bWwgfCAx
NSArKysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgNDcgaW5zZXJ0aW9ucygrKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IHdlYmtpdHZpZGVvaG9sZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQg
d2Via2l0dmlkZW9ob2xlMi5odG1sCgpkaWZmIC0tZ2l0IGEvd2Via2l0dmlkZW9ob2xlLmh0bWwg
Yi93ZWJraXR2aWRlb2hvbGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5hZmRmYzQxCi0tLSAvZGV2L251bGwKKysrIGIvd2Via2l0dmlkZW9ob2xlLmh0bWwKQEAgLTAs
MCArMSwzMiBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorCis8c3R5bGU+Cisg
ICAgYm9keSB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICB9CisKKyAg
ICB2aWRlbyB7CisgICAgICAgIG1hcmdpbi1sZWZ0OjVweDsKKyAgICAgICAgbWFyZ2luLXRvcDox
MHB4OworICAgICAgICBib3JkZXI6MXB4IHNvbGlkIHJlZDsKKyAgICAgICAgcG9zaXRpb246IHJl
bGF0aXZlOworICAgICAgICAtd2Via2l0LWFuaW1hdGlvbjogY3VzdG9tbW92ZSA1cyBpbmZpbml0
ZTsKKyAgICB9CisKKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgY3VzdG9tbW92ZSB7CisgICAgICAg
IGZyb20geyBsZWZ0OiAwcHg7IHRvcDogMTBweDsgfQorICAgICAgICB0byB7IGxlZnQ6IDYwMHB4
OyB0b3A6IDMwMHB4OyB9CisgICAgfQorPC9zdHlsZT4KKworPC9oZWFkPgorCis8Ym9keSBvbmxv
YWQ9ImluaXQoKSI+Cis8dmlkZW8gaWQ9InZpZGVvIiBzdHlsZT0id2lkdGg6IDMyMHB4OyBoZWln
aHQ6IDE4MHB4OyBvYmplY3QtZml0OiBjb3ZlcjsiIGJhY2tncm91bmQ9Ii13ZWJraXQtaG9sZSI+
Cis8L3ZpZGVvPgorPC9ib2R5PgorCis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL3dlYmtpdHZpZGVv
aG9sZTIuaHRtbCBiL3dlYmtpdHZpZGVvaG9sZTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4wMjg4ODRiCi0tLSAvZGV2L251bGwKKysrIGIvd2Via2l0dmlkZW9ob2xl
Mi5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8Ym9keSBz
dHlsZT0iYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7Ij4gCisKKzxkaXYgc3R5bGU9IndpZHRoOjEw
MHB4OyBoZWlnaHQ6MTAwcHg7IGJhY2tncm91bmQtY29sb3I6Ymx1ZTsiID48L2Rpdj4KKworPHZp
ZGVvIHN0eWxlPSJ3aWR0aDoxMDBweDsgaGVpZ2h0OjEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOnJl
ZDsiID48L3ZpZGVvPgorCis8Y2FudmFzIHN0eWxlPSJ3aWR0aDoxMDBweDsgaGVpZ2h0OjEwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOnllbGxvdzsiID48L2NhbnZhcz4KKworPHZpZGVvIHN0eWxlPSJ3
aWR0aDo0ODBweDsgaGVpZ2h0OjM2MHB4OyAiIGJhY2tncm91bmQ9Ii13ZWJraXQtaG9sZSI+PC92
aWRlbz4KKworPC9ib2R5PgorPC9odG1sPgorCi0tIAoxLjkuMQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>