<?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>89667</bug_id>
          
          <creation_ts>2012-06-21 08:41:56 -0700</creation_ts>
          <short_desc>[chromium] Use CCScopedTexture for video layers and YUV video quads</short_desc>
          <delta_ts>2012-07-05 16:31:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>
          <dependson>89485</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>aelias</cc>
    
    <cc>enne</cc>
    
    <cc>epenner</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>654566</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-21 08:41:56 -0700</bug_when>
    <thetext>[chromium] Use CCScopedTexture for video layers and YUV video quads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654567</commentid>
    <comment_count>1</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-21 08:43:28 -0700</bug_when>
    <thetext>Here&apos;s a practical example of using CCScopedTexture in practice. I replaced the textureId/size/format from CCVideoLayerImpl with a CCScopedTexture. It allows us to create/free the texture without using a TextureAllocator, and makes the ownership and freeing semantics simpler IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654570</commentid>
    <comment_count>2</comment_count>
      <attachid>148811</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-21 08:45:50 -0700</bug_when>
    <thetext>Created attachment 148811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654591</commentid>
    <comment_count>3</comment_count>
      <attachid>148811</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-21 09:27:43 -0700</bug_when>
    <thetext>Comment on attachment 148811
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.h:72
&gt; +        CCScopedTexture texture;

So now CCYUVDrawQuad has a RefPtr&lt;GraphicsContext3D&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654607</commentid>
    <comment_count>4</comment_count>
      <attachid>148811</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-21 09:39:24 -0700</bug_when>
    <thetext>Comment on attachment 148811
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.h:72
&gt;&gt; +        CCScopedTexture texture;
&gt; 
&gt; So now CCYUVDrawQuad has a RefPtr&lt;GraphicsContext3D&gt;?

ahhh that&apos;s true, not good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654632</commentid>
    <comment_count>5</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-21 10:03:49 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 148811 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=148811&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCVideoLayerImpl.h:72
&gt; &gt;&gt; +        CCScopedTexture texture;
&gt; &gt; 
&gt; &gt; So now CCYUVDrawQuad has a RefPtr&lt;GraphicsContext3D&gt;?
&gt; 
&gt; ahhh that&apos;s true, not good.

It would actually always be null, since this is a cloned copy of the texture and doesn&apos;t own the id. But yah.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654757</commentid>
    <comment_count>6</comment_count>
      <attachid>148811</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-06-21 11:46:07 -0700</bug_when>
    <thetext>Comment on attachment 148811
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCScopedTexture.h:54
&gt; +    void cloneFrom(const CCScopedTexture&amp;);

If there isn&apos;t two owners, couldn&apos;t this return the id? It seems like all the safety of the own pointer is gone in the cloned pointer anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654764</commentid>
    <comment_count>7</comment_count>
      <attachid>148811</attachid>
    <who name="Eric Penner">epenner</who>
    <bug_when>2012-06-21 11:53:02 -0700</bug_when>
    <thetext>Comment on attachment 148811
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCScopedTexture.h:54
&gt;&gt; +    void cloneFrom(const CCScopedTexture&amp;);
&gt; 
&gt; If there isn&apos;t two owners, couldn&apos;t this return the id? It seems like all the safety of the own pointer is gone in the cloned pointer anyway.

Oh, I think I get the purpose now. You want to keep the size/format etc. in the new object. Maybe there should just be a super basic class that contains these things together. Or even just a struct that we use universally everywhere (like the TextureInfo struct from the original TextureManager).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654777</commentid>
    <comment_count>8</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2012-06-21 12:04:49 -0700</bug_when>
    <thetext>Agreed cloneFrom is a bad idea.  If introducing a new TextureInfo struct is enough to solve your problem, note that it would also let us replace the &quot;maybeBytes()&quot; method with a clearer method TextureInfo::bytes().</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148811</attachid>
            <date>2012-06-21 08:45:50 -0700</date>
            <delta_ts>2012-06-21 11:53:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-89667-20120621114549.patch</filename>
            <type>text/plain</type>
            <size>16533</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2NmMzVhMmQ2ZjU1ZjFh
OGU5ZjYyMDc2ZWMwZjRmMmU2MjdkMDhhMC4uODkwYjVkNWY1Mjg0OWQ2YzBhMmQxYjNmZmIwNjhi
YmQ1MzhhNjUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA2LTIxICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gVXNl
IENDU2NvcGVkVGV4dHVyZSBmb3IgdmlkZW8gbGF5ZXJzIGFuZCBZVVYgdmlkZW8gcXVhZHMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg5NjY3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW5zdGVhZCBvZiBz
dG9yaW5nIGFuZCBtYW5hZ2luZyB0ZXh0dXJlSWRzIGV4cGxpY2l0bHksIG1ha2UgdXNlIG9mIHRo
ZQorICAgICAgICBDQ1Njb3BlZFRleHR1cmUgY2xhc3MgdG8gbWFuYWdlIHRoZSBsaWZldGltZSBv
ZiB0aGUgdGV4dHVyZXMgdXNlZCBpbgorICAgICAgICBDQ1ZpZGVvTGF5ZXJJbXBsLgorCisgICAg
ICAgIFNpbmNlIENDWVVWVmlkZW9EcmF3UXVhZCBhbHNvIHVzZXMgYSBGcmFtZVBsYW5lIHN0cnVj
dHVyZSBmb3IKKyAgICAgICAgdHJhbnNwb3J0aW5nIHRleHR1cmUgaW5mb3JtYXRpb24gdG8gTGF5
ZXJSZW5kZXJlckNocm9taXVtLCBpdCBub3cKKyAgICAgICAgYWxzbyBtYWtlcyB1c2Ugb2YgQ0NT
Y29wZWRUZXh0dXJlIGltcGxpY2l0bHkuIFdlIGFkZCBhIGNsb25lRnJvbSgpCisgICAgICAgIG1l
dGhvZCB0byBhbGxvdyBub24tb3duaW5nIGNvcGllcyBvZiBhIENDU2NvcGVkVGV4dHVyZSwgc3Vj
aCBhcyB0aGUKKyAgICAgICAgb25lIGhlbGQgYnkgQ0NZVVZWaWRlb0RyYXdRdWFkLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1lVVlZpZGVv
UXVhZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRU
ZXh0dXJlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6Q0NTY29wZWRU
ZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNDU2NvcGVkVGV4dHVyZTo6Y2xlYXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NTY29wZWRUZXh0dXJlOjpjbG9uZUZyb20pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmg6Cisg
ICAgICAgIChDQ1Njb3BlZFRleHR1cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRl
b0xheWVySW1wbDo6fkNDVmlkZW9MYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRl
b0xheWVySW1wbDo6d2lsbERyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1w
bDo6d2lsbERyYXdJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjphbGxv
Y2F0ZVBsYW5lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpjb3B5
UGxhbmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVmlkZW9MYXllckltcGw6OmZyZWVVbnVz
ZWRQbGFuZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Q0NWaWRlb0xheWVySW1wbDo6bG9zZVBs
YW5lRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1ZpZGVvTGF5ZXJJbXBsOjpkaWRMb3NlQ29u
dGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xh
eWVySW1wbC5oOgorICAgICAgICAoRnJhbWVQbGFuZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Zp
ZGVvTGF5ZXJJbXBsOjpGcmFtZVBsYW5lOjpGcmFtZVBsYW5lKToKKwogMjAxMi0wNi0xOSAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENy
ZWF0ZSBDQ1Njb3BlZFRleHR1cmUgY2xhc3MgZm9yIGNyZWF0aW5nL2ZyZWVpbmcgdGV4dHVyZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IGI2Y2E2NzQ0NTdmOGQw
M2M5NzY2Njc2OTAzYmZlYzU3M2QzYTNlYmIuLjUzN2Y4ODM4OWNhZjliNjk2NTFhMTI1MTFkNjQ3
OGY0YjkwZDllZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAt
OTk2LDE3ICs5OTYsMTcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdZVVZWaWRl
b1F1YWQoY29uc3QgQ0NZVVZWaWRlb0RyYXdRdWFkKiBxdWFkKQogICAgIGNvbnN0IENDVmlkZW9M
YXllckltcGw6OkZyYW1lUGxhbmUmIHZQbGFuZSA9IHF1YWQtPnZQbGFuZSgpOwogCiAgICAgR0xD
KGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFMSkpOwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHlQbGFuZS50ZXh0dXJlSWQpKTsKKyAgICBHTEMo
Y29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhU
VVJFXzJELCB5UGxhbmUudGV4dHVyZS5pZCgpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4
dCgpLT5hY3RpdmVUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMikpOwotICAgIEdM
Qyhjb250ZXh0KCksIGNvbnRleHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIHVQbGFuZS50ZXh0dXJlSWQpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0
KCktPmJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB1UGxhbmUudGV4
dHVyZS5pZCgpKSk7CiAgICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT5hY3RpdmVUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFMykpOwotICAgIEdMQyhjb250ZXh0KCksIGNvbnRl
eHQoKS0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHZQbGFuZS50
ZXh0dXJlSWQpKTsKKyAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPmJpbmRUZXh0dXJlKEdy
YXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCB2UGxhbmUudGV4dHVyZS5pZCgpKSk7CiAKICAg
ICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgp
KSk7CiAKLSAgICBmbG9hdCB5V2lkdGhTY2FsZUZhY3RvciA9IHN0YXRpY19jYXN0PGZsb2F0Pih5
UGxhbmUudmlzaWJsZVNpemUud2lkdGgoKSkgLyB5UGxhbmUuc2l6ZS53aWR0aCgpOworICAgIGZs
b2F0IHlXaWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHlQbGFuZS52aXNpYmxl
U2l6ZS53aWR0aCgpKSAvIHlQbGFuZS50ZXh0dXJlLnNpemUoKS53aWR0aCgpOwogICAgIC8vIEFy
Yml0cmFyaWx5IHRha2UgdGhlIHUgc2l6ZXMgYmVjYXVzZSB1IGFuZCB2IGRpbWVuc2lvbnMgYXJl
IGlkZW50aWNhbC4KLSAgICBmbG9hdCB1dldpZHRoU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxm
bG9hdD4odVBsYW5lLnZpc2libGVTaXplLndpZHRoKCkpIC8gdVBsYW5lLnNpemUud2lkdGgoKTsK
KyAgICBmbG9hdCB1dldpZHRoU2NhbGVGYWN0b3IgPSBzdGF0aWNfY2FzdDxmbG9hdD4odVBsYW5l
LnZpc2libGVTaXplLndpZHRoKCkpIC8gdVBsYW5lLnRleHR1cmUuc2l6ZSgpLndpZHRoKCk7CiAg
ICAgR0xDKGNvbnRleHQoKSwgY29udGV4dCgpLT51bmlmb3JtMWYocHJvZ3JhbS0+dmVydGV4U2hh
ZGVyKCkueVdpZHRoU2NhbGVGYWN0b3JMb2NhdGlvbigpLCB5V2lkdGhTY2FsZUZhY3RvcikpOwog
ICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dW5pZm9ybTFmKHByb2dyYW0tPnZlcnRleFNo
YWRlcigpLnV2V2lkdGhTY2FsZUZhY3RvckxvY2F0aW9uKCksIHV2V2lkdGhTY2FsZUZhY3Rvcikp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTY29wZWRUZXh0dXJlLmNwcAppbmRleCA1M2JkYzk3MzVmNDQ5YzQx
NGEyYjFjOGY2ZjgxOTJiOGQ1OTg0MzZhLi41MDFjZDkyMDhhYmRjYTA4MGYwZWEzMTBiMWQyODQz
YjFmNjM2MmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2NvcGVkVGV4dHVyZS5jcHAKQEAgLTMzLDcgKzMz
LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ0NTY29wZWRUZXh0dXJlOjpDQ1Njb3BlZFRl
eHR1cmUoKQotICAgIDogbV90ZXh0dXJlSWQoMCkKKyAgICA6IG1fb3duVGV4dHVyZShmYWxzZSkK
KyAgICAsIG1fdGV4dHVyZUlkKDApCiAgICAgLCBtX2Zvcm1hdCgwKQogICAgICwgbV9mb3JGcmFt
ZWJ1ZmZlckF0dGFjaG1lbnQoZmFsc2UpCiB7CkBAIC03Myw2ICs3NCw3IEBAIGJvb2wgQ0NTY29w
ZWRUZXh0dXJlOjpjcmVhdGUoUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dCkK
ICAgICBBU1NFUlQoIW1fc2l6ZS5pc0VtcHR5KCkpOwogICAgIEFTU0VSVChtX2Zvcm1hdCA9PSBH
cmFwaGljc0NvbnRleHQzRDo6UkdCIHx8IG1fZm9ybWF0ID09IEdyYXBoaWNzQ29udGV4dDNEOjpS
R0JBIHx8IG1fZm9ybWF0ID09IEV4dGVuc2lvbnMzRDo6QkdSQV9FWFQpOwogCisgICAgbV9vd25U
ZXh0dXJlID0gdHJ1ZTsKICAgICBtX2NvbnRleHQgPSBjb250ZXh0OwogICAgIG1fdGV4dHVyZUlk
ID0gR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5jcmVhdGVUZXh0dXJlKCkpOwogCkBAIC0xMTIs
NyArMTE0LDcgQEAgdm9pZCBDQ1Njb3BlZFRleHR1cmU6OnByZXBhcmUoY29uc3QgSW50U2l6ZSYg
c2l6ZSwgR0MzRGVudW0gZm9ybWF0LCBib29sIGZvckZyYW0KIAogdm9pZCBDQ1Njb3BlZFRleHR1
cmU6OmNsZWFyKCkKIHsKLSAgICBpZiAobV90ZXh0dXJlSWQpIHsKKyAgICBpZiAobV90ZXh0dXJl
SWQgJiYgbV9vd25UZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChtX2NyZWF0ZVRocmVhZElkZW50
aWZpZXIgPT0gV1RGOjpjdXJyZW50VGhyZWFkKCkpOwogICAgICAgICBtX2NvbnRleHQtPmRlbGV0
ZVRleHR1cmUobV90ZXh0dXJlSWQpOwogICAgIH0KQEAgLTEyNiw2ICsxMjgsMjEgQEAgdm9pZCBD
Q1Njb3BlZFRleHR1cmU6Omxvc2UoKQogICAgIG1fY29udGV4dC5jbGVhcigpOwogfQogCit2b2lk
IENDU2NvcGVkVGV4dHVyZTo6Y2xvbmVGcm9tKGNvbnN0IENDU2NvcGVkVGV4dHVyZSYgb3RoZXIp
Cit7CisgICAgQVNTRVJUKCFtX2NvbnRleHQpOworICAgIEFTU0VSVCghbV90ZXh0dXJlSWQpOwor
CisgICAgbV9vd25UZXh0dXJlID0gb3RoZXIubV9vd25UZXh0dXJlOworICAgIG1fdGV4dHVyZUlk
ID0gb3RoZXIubV90ZXh0dXJlSWQ7CisgICAgbV9zaXplID0gb3RoZXIubV9zaXplOworICAgIG1f
Zm9ybWF0ID0gb3RoZXIubV9mb3JtYXQ7CisgICAgbV9mb3JGcmFtZWJ1ZmZlckF0dGFjaG1lbnQg
PSBvdGhlci5tX2ZvckZyYW1lYnVmZmVyQXR0YWNobWVudDsKKyAgICBBU1NFUlQoKnRoaXMgPT0g
b3RoZXIpOworCisgICAgbV9vd25UZXh0dXJlID0gZmFsc2U7Cit9CisKIHNpemVfdCBDQ1Njb3Bl
ZFRleHR1cmU6OmJ5dGVzKCkgY29uc3QKIHsKICAgICBpZiAoIW1fdGV4dHVyZUlkKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY29w
ZWRUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1Njb3BlZFRleHR1cmUuaAppbmRleCA5YzM2MTk5M2QzZjgwMDUwYzFlNWJlNjg0ZGFmMmNj
MTRjYWFkMGRkLi4wYmU3NzI0MDg0YjZiZjIzOTdlNjFmNmY1YjVmMDBjOGIyYWM5N2E2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
b3BlZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1Njb3BlZFRleHR1cmUuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjbGVhcigpOwogICAgIHZvaWQgbG9zZSgpOwogCisgICAgLy8gVGhlIGNsb25lZCB0ZXh0
dXJlIHdpbGwgbm90IG93biB0aGUgdGV4dHVyZSBpZCBhbmQgd2lsbCBub3QgZnJlZSBpdC4KKyAg
ICB2b2lkIGNsb25lRnJvbShjb25zdCBDQ1Njb3BlZFRleHR1cmUmKTsKKwogICAgIHVuc2lnbmVk
IGlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KICAgICBjb25zdCBJbnRTaXplJiBz
aXplKCkgY29uc3QgeyByZXR1cm4gbV9zaXplOyB9CiAgICAgR0MzRGVudW0gZm9ybWF0KCkgY29u
c3QgeyByZXR1cm4gbV9mb3JtYXQ7IH0KQEAgLTY0LDYgKzY3LDggQEAgcHVibGljOgogICAgIHN0
YXRpYyB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoY29uc3QgTGF5ZXJSZW5kZXJlckNhcGFi
aWxpdGllcyYpOwogCiBwcml2YXRlOgorICAgIGJvb2wgbV9vd25UZXh0dXJlOworCiAgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBtX2NvbnRleHQ7CiAgICAgdW5zaWduZWQgbV90ZXh0dXJl
SWQ7CiAgICAgSW50U2l6ZSBtX3NpemU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3Bw
CmluZGV4IDQ2ZTU3OGY2MzRjOGVhNGIyM2Y2MDU2YzNmMzUzZjkzMDkwOTcwYjUuLmM0YjU4MDM5
MTBhZjcxMGYwOTU2MzBmY2IwODE2OWFmYjE2YmQ2NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9MYXllckltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVmlkZW9M
YXllckltcGwuY3BwCkBAIC03NSwxMiArNzUsNiBAQCBDQ1ZpZGVvTGF5ZXJJbXBsOjp+Q0NWaWRl
b0xheWVySW1wbCgpCiAgICAgICAgIG1fcHJvdmlkZXItPnNldFZpZGVvRnJhbWVQcm92aWRlckNs
aWVudCgwKTsKICAgICAgICAgbV9wcm92aWRlciA9IDA7CiAgICAgfQotICAgIGZyZWVQbGFuZURh
dGEobGF5ZXJUcmVlSG9zdEltcGwoKS0+bGF5ZXJSZW5kZXJlcigpKTsKLQotI2lmICFBU1NFUlRf
RElTQUJMRUQKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgV2ViS2l0OjpXZWJWaWRlb0Zy
YW1lOjptYXhQbGFuZXM7ICsraSkKLSAgICAgICAgQVNTRVJUKCFtX2ZyYW1lUGxhbmVzW2ldLnRl
eHR1cmVJZCk7Ci0jZW5kaWYKIH0KIAogdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpzdG9wVXNpbmdQ
cm92aWRlcigpCkBAIC0xMjUsNyArMTE5LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjp3aWxs
RHJhdyhDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyLCBDQ0dyYXBoaWNzQ29udGV4dCogY28KICAg
ICBtX3Byb3ZpZGVyTXV0ZXgubG9jaygpOwogCiAgICAgd2lsbERyYXdJbnRlcm5hbChsYXllclJl
bmRlcmVyLCBjb250ZXh0KTsKLSAgICBmcmVlVW51c2VkUGxhbmVEYXRhKGxheWVyUmVuZGVyZXIp
OworICAgIGZyZWVVbnVzZWRQbGFuZURhdGEoKTsKIAogICAgIGlmICghbV9mcmFtZSkKICAgICAg
ICAgbV9wcm92aWRlck11dGV4LnVubG9jaygpOwpAQCAtMTU5LDEzICsxNTMsMTMgQEAgdm9pZCBD
Q1ZpZGVvTGF5ZXJJbXBsOjp3aWxsRHJhd0ludGVybmFsKENDUmVuZGVyZXIqIGxheWVyUmVuZGVy
ZXIsIENDR3JhcGhpY3NDb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghYWxs
b2NhdGVQbGFuZURhdGEobGF5ZXJSZW5kZXJlcikpIHsKKyAgICBpZiAoIWFsbG9jYXRlUGxhbmVE
YXRhKGxheWVyUmVuZGVyZXIsIGNvbnRleHQpKSB7CiAgICAgICAgIG1fcHJvdmlkZXItPnB1dEN1
cnJlbnRGcmFtZShtX2ZyYW1lKTsKICAgICAgICAgbV9mcmFtZSA9IDA7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoIWNvcHlQbGFuZURhdGEobGF5ZXJSZW5kZXJlciwgY29udGV4
dCkpIHsKKyAgICBpZiAoIWNvcHlQbGFuZURhdGEoY29udGV4dCkpIHsKICAgICAgICAgbV9wcm92
aWRlci0+cHV0Q3VycmVudEZyYW1lKG1fZnJhbWUpOwogICAgICAgICBtX2ZyYW1lID0gMDsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTk3LDEyICsxOTEsMTIgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBs
OjphcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRT
dGEKICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBOiB7CiAgICAgICAgIC8vIFJHQkEg
c29mdHdhcmUgZGVjb2Rlci4KICAgICAgICAgY29uc3QgRnJhbWVQbGFuZSYgcGxhbmUgPSBtX2Zy
YW1lUGxhbmVzW1dlYktpdDo6V2ViVmlkZW9GcmFtZTo6cmdiUGxhbmVdOwotICAgICAgICBmbG9h
dCB3aWR0aFNjYWxlRmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBsYW5lLnZpc2libGVTaXpl
LndpZHRoKCkpIC8gcGxhbmUuc2l6ZS53aWR0aCgpOworICAgICAgICBmbG9hdCB3aWR0aFNjYWxl
RmFjdG9yID0gc3RhdGljX2Nhc3Q8ZmxvYXQ+KHBsYW5lLnZpc2libGVTaXplLndpZHRoKCkpIC8g
cGxhbmUudGV4dHVyZS5zaXplKCkud2lkdGgoKTsKIAogICAgICAgICBib29sIHByZW11bHRpcGxp
ZWRBbHBoYSA9IHRydWU7CiAgICAgICAgIEZsb2F0UmVjdCB1dlJlY3QoMCwgMCwgd2lkdGhTY2Fs
ZUZhY3RvciwgMSk7CiAgICAgICAgIGJvb2wgZmxpcHBlZCA9IGZhbHNlOwotICAgICAgICBPd25Q
dHI8Q0NUZXh0dXJlRHJhd1F1YWQ+IHRleHR1cmVRdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNy
ZWF0ZShzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBwbGFuZS50ZXh0dXJlSWQsIHByZW11bHRp
cGxpZWRBbHBoYSwgdXZSZWN0LCBmbGlwcGVkKTsKKyAgICAgICAgT3duUHRyPENDVGV4dHVyZURy
YXdRdWFkPiB0ZXh0dXJlUXVhZCA9IENDVGV4dHVyZURyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVh
ZFN0YXRlLCBxdWFkUmVjdCwgcGxhbmUudGV4dHVyZS5pZCgpLCBwcmVtdWx0aXBsaWVkQWxwaGEs
IHV2UmVjdCwgZmxpcHBlZCk7CiAgICAgICAgIHF1YWRMaXN0LmFwcGVuZCh0ZXh0dXJlUXVhZC5y
ZWxlYXNlKCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yODIsMjYgKzI3NiwxOCBAQCBJ
bnRTaXplIENDVmlkZW9MYXllckltcGw6OmNvbXB1dGVWaXNpYmxlU2l6ZShjb25zdCBXZWJLaXQ6
OldlYlZpZGVvRnJhbWUmIGZyYW1lLAogICAgIHJldHVybiBJbnRTaXplKHZpc2libGVXaWR0aCwg
dmlzaWJsZUhlaWdodCk7CiB9CiAKLWJvb2wgQ0NWaWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZTo6
YWxsb2NhdGVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIpCitib29sIENDVmlkZW9MYXll
ckltcGw6OmFsbG9jYXRlUGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0KQogewotICAgIGlmICh0ZXh0dXJlSWQpCisgICAgc2l6ZV90
IHNvZnR3YXJlUGxhbmVDb3VudCA9IG1fZnJhbWUtPnBsYW5lcygpOworICAgIGlmICghc29mdHdh
cmVQbGFuZUNvdW50KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIHRleHR1cmVJZCA9IGxh
eWVyUmVuZGVyZXItPmNvbnRlbnRzVGV4dHVyZUFsbG9jYXRvcigpLT5jcmVhdGVUZXh0dXJlKHNp
emUsIGZvcm1hdCk7Ci0gICAgcmV0dXJuIHRleHR1cmVJZDsKLX0KLQotdm9pZCBDQ1ZpZGVvTGF5
ZXJJbXBsOjpGcmFtZVBsYW5lOjpmcmVlRGF0YShDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyKQot
ewotICAgIGlmICghdGV4dHVyZUlkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBsYXllclJlbmRl
cmVyLT5jb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKS0+ZGVsZXRlVGV4dHVyZSh0ZXh0dXJlSWQs
IHNpemUsIGZvcm1hdCk7Ci0gICAgdGV4dHVyZUlkID0gMDsKLX0KKyAgICBHcmFwaGljc0NvbnRl
eHQzRCogY29udGV4dDNkID0gY29udGV4dC0+Y29udGV4dDNEKCk7CisgICAgaWYgKCFjb250ZXh0
M2QpIHsKKyAgICAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHBhdGggZm9yIHNvZnR3YXJl
IGNvbXBvc2l0aW5nLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCi1ib29sIENDVmlk
ZW9MYXllckltcGw6OmFsbG9jYXRlUGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIp
Ci17CiAgICAgaW50IG1heFRleHR1cmVTaXplID0gbGF5ZXJSZW5kZXJlci0+Y2FwYWJpbGl0aWVz
KCkubWF4VGV4dHVyZVNpemU7CiAgICAgZm9yICh1bnNpZ25lZCBwbGFuZUluZGV4ID0gMDsgcGxh
bmVJbmRleCA8IG1fZnJhbWUtPnBsYW5lcygpOyArK3BsYW5lSW5kZXgpIHsKICAgICAgICAgQ0NW
aWRlb0xheWVySW1wbDo6RnJhbWVQbGFuZSYgcGxhbmUgPSBtX2ZyYW1lUGxhbmVzW3BsYW5lSW5k
ZXhdOwpAQCAtMzExLDE0ICsyOTcsMTMgQEAgYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjphbGxvY2F0
ZVBsYW5lRGF0YShDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyKQogICAgICAgICBpZiAocmVxdWly
ZWRUZXh0dXJlU2l6ZS5pc1plcm8oKSB8fCByZXF1aXJlZFRleHR1cmVTaXplLndpZHRoKCkgPiBt
YXhUZXh0dXJlU2l6ZSB8fCByZXF1aXJlZFRleHR1cmVTaXplLmhlaWdodCgpID4gbWF4VGV4dHVy
ZVNpemUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHBsYW5lLnNp
emUgIT0gcmVxdWlyZWRUZXh0dXJlU2l6ZSB8fCBwbGFuZS5mb3JtYXQgIT0gbV9mb3JtYXQpIHsK
LSAgICAgICAgICAgIHBsYW5lLmZyZWVEYXRhKGxheWVyUmVuZGVyZXIpOwotICAgICAgICAgICAg
cGxhbmUuc2l6ZSA9IHJlcXVpcmVkVGV4dHVyZVNpemU7Ci0gICAgICAgICAgICBwbGFuZS5mb3Jt
YXQgPSBtX2Zvcm1hdDsKKyAgICAgICAgaWYgKHBsYW5lLnRleHR1cmUuc2l6ZSgpICE9IHJlcXVp
cmVkVGV4dHVyZVNpemUgfHwgcGxhbmUudGV4dHVyZS5mb3JtYXQoKSAhPSBtX2Zvcm1hdCkgewor
ICAgICAgICAgICAgcGxhbmUudGV4dHVyZS5jbGVhcigpOworICAgICAgICAgICAgcGxhbmUudGV4
dHVyZS5wcmVwYXJlKHJlcXVpcmVkVGV4dHVyZVNpemUsIG1fZm9ybWF0KTsKICAgICAgICAgfQog
Ci0gICAgICAgIGlmICghcGxhbmUudGV4dHVyZUlkKSB7Ci0gICAgICAgICAgICBpZiAoIXBsYW5l
LmFsbG9jYXRlRGF0YShsYXllclJlbmRlcmVyKSkKKyAgICAgICAgaWYgKCFwbGFuZS50ZXh0dXJl
KSB7CisgICAgICAgICAgICBpZiAoIXBsYW5lLnRleHR1cmUuY3JlYXRlKGNvbnRleHQzZCkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgcGxhbmUudmlzaWJsZVNp
emUgPSBjb21wdXRlVmlzaWJsZVNpemUoKm1fZnJhbWUsIHBsYW5lSW5kZXgpOwogICAgICAgICB9
CkBAIC0zMjYsNyArMzExLDcgQEAgYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBsOjphbGxvY2F0ZVBsYW5l
RGF0YShDQ1JlbmRlcmVyKiBsYXllclJlbmRlcmVyKQogICAgIHJldHVybiB0cnVlOwogfQogCi1i
b29sIENDVmlkZW9MYXllckltcGw6OmNvcHlQbGFuZURhdGEoQ0NSZW5kZXJlciogbGF5ZXJSZW5k
ZXJlciwgQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCitib29sIENDVmlkZW9MYXllckltcGw6
OmNvcHlQbGFuZURhdGEoQ0NHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgc2l6ZV90
IHNvZnR3YXJlUGxhbmVDb3VudCA9IG1fZnJhbWUtPnBsYW5lcygpOwogICAgIGlmICghc29mdHdh
cmVQbGFuZUNvdW50KQpAQCAtMzQyLDI2ICszMjcsMjYgQEAgYm9vbCBDQ1ZpZGVvTGF5ZXJJbXBs
Ojpjb3B5UGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIsIENDR3JhcGhpY3NDb250
ZXgKICAgICBmb3IgKHNpemVfdCBzb2Z0d2FyZVBsYW5lSW5kZXggPSAwOyBzb2Z0d2FyZVBsYW5l
SW5kZXggPCBzb2Z0d2FyZVBsYW5lQ291bnQ7ICsrc29mdHdhcmVQbGFuZUluZGV4KSB7CiAgICAg
ICAgIENDVmlkZW9MYXllckltcGw6OkZyYW1lUGxhbmUmIHBsYW5lID0gbV9mcmFtZVBsYW5lc1tz
b2Z0d2FyZVBsYW5lSW5kZXhdOwogICAgICAgICBjb25zdCB1aW50OF90KiBzb2Z0d2FyZVBsYW5l
UGl4ZWxzID0gc3RhdGljX2Nhc3Q8Y29uc3QgdWludDhfdCo+KG1fZnJhbWUtPmRhdGEoc29mdHdh
cmVQbGFuZUluZGV4KSk7Ci0gICAgICAgIEludFJlY3QgcGxhbmVSZWN0KEludFBvaW50KCksIHBs
YW5lLnNpemUpOworICAgICAgICBJbnRSZWN0IHBsYW5lUmVjdChJbnRQb2ludCgpLCBwbGFuZS50
ZXh0dXJlLnNpemUoKSk7CiAKLSAgICAgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFwaGlj
c0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcGxhbmUudGV4dHVyZUlkKTsKLSAgICAgICAgdXBsb2Fk
ZXIuc2V0U3ViSW1hZ2VTaXplKHBsYW5lLnNpemUpOwotICAgICAgICB1cGxvYWRlci51cGxvYWQo
c29mdHdhcmVQbGFuZVBpeGVscywgcGxhbmVSZWN0LCBwbGFuZVJlY3QsIHBsYW5lUmVjdCwgcGxh
bmUuZm9ybWF0LCBjb250ZXh0KTsKKyAgICAgICAgY29udGV4dDNkLT5iaW5kVGV4dHVyZShHcmFw
aGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgcGxhbmUudGV4dHVyZS5pZCgpKTsKKyAgICAgICAg
dXBsb2FkZXIuc2V0U3ViSW1hZ2VTaXplKHBsYW5lLnRleHR1cmUuc2l6ZSgpKTsKKyAgICAgICAg
dXBsb2FkZXIudXBsb2FkKHNvZnR3YXJlUGxhbmVQaXhlbHMsIHBsYW5lUmVjdCwgcGxhbmVSZWN0
LCBwbGFuZVJlY3QsIHBsYW5lLnRleHR1cmUuZm9ybWF0KCksIGNvbnRleHQpOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpmcmVlUGxhbmVEYXRh
KENDUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIpCit2b2lkIENDVmlkZW9MYXllckltcGw6OmZyZWVV
bnVzZWRQbGFuZURhdGEoKQogewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBXZWJLaXQ6
OldlYlZpZGVvRnJhbWU6Om1heFBsYW5lczsgKytpKQotICAgICAgICBtX2ZyYW1lUGxhbmVzW2ld
LmZyZWVEYXRhKGxheWVyUmVuZGVyZXIpOworICAgIHVuc2lnbmVkIGZpcnN0VW51c2VkUGxhbmUg
PSBtX2ZyYW1lID8gbV9mcmFtZS0+cGxhbmVzKCkgOiAwOworICAgIGZvciAodW5zaWduZWQgaSA9
IGZpcnN0VW51c2VkUGxhbmU7IGkgPCBXZWJLaXQ6OldlYlZpZGVvRnJhbWU6Om1heFBsYW5lczsg
KytpKQorICAgICAgICBtX2ZyYW1lUGxhbmVzW2ldLnRleHR1cmUuY2xlYXIoKTsKIH0KIAotdm9p
ZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpmcmVlVW51c2VkUGxhbmVEYXRhKENDUmVuZGVyZXIqIGxheWVy
UmVuZGVyZXIpCit2b2lkIENDVmlkZW9MYXllckltcGw6Omxvc2VQbGFuZURhdGEoKQogewotICAg
IHVuc2lnbmVkIGZpcnN0VW51c2VkUGxhbmUgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGxhbmVzKCkg
OiAwOwotICAgIGZvciAodW5zaWduZWQgaSA9IGZpcnN0VW51c2VkUGxhbmU7IGkgPCBXZWJLaXQ6
OldlYlZpZGVvRnJhbWU6Om1heFBsYW5lczsgKytpKQotICAgICAgICBtX2ZyYW1lUGxhbmVzW2ld
LmZyZWVEYXRhKGxheWVyUmVuZGVyZXIpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBX
ZWJLaXQ6OldlYlZpZGVvRnJhbWU6Om1heFBsYW5lczsgKytpKQorICAgICAgICBtX2ZyYW1lUGxh
bmVzW2ldLnRleHR1cmUubG9zZSgpOwogfQogCiB2b2lkIENDVmlkZW9MYXllckltcGw6OmRpZFJl
Y2VpdmVGcmFtZSgpCkBAIC0zODEsNyArMzY2LDcgQEAgdm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpk
aWRVcGRhdGVNYXRyaXgoY29uc3QgZmxvYXQgbWF0cml4WzE2XSkKIAogdm9pZCBDQ1ZpZGVvTGF5
ZXJJbXBsOjpkaWRMb3NlQ29udGV4dCgpCiB7Ci0gICAgZnJlZVBsYW5lRGF0YShsYXllclRyZWVI
b3N0SW1wbCgpLT5sYXllclJlbmRlcmVyKCkpOworICAgIGxvc2VQbGFuZURhdGEoKTsKIH0KIAog
dm9pZCBDQ1ZpZGVvTGF5ZXJJbXBsOjpzZXROZWVkc1JlZHJhdygpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVvTGF5ZXJJbXBs
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1ZpZGVv
TGF5ZXJJbXBsLmgKaW5kZXggYmVmMWQ1ZjA5ZTU1NDE3OGVlMTUxMDI3NGM1MGQ4MjYwNWM1MzYw
NC4uM2JiNTVjMjVmNWQwZGJhNGJmOWVkMjk4ZWZhMTVkNzE2ZDhhNTY3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NWaWRlb0xheWVy
SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVmlkZW9MYXllckltcGwuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dDNELmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJ
bXBsLmgiCisjaW5jbHVkZSAiY2MvQ0NTY29wZWRUZXh0dXJlLmgiCiAjaW5jbHVkZSA8cHVibGlj
L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlZpZGVvRnJh
bWVQcm92aWRlci5oPgogCkBAIC02OCwxNSArNjksMTcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0
TmVlZHNSZWRyYXcoKTsKIAogICAgIHN0cnVjdCBGcmFtZVBsYW5lIHsKLSAgICAgICAgdW5zaWdu
ZWQgdGV4dHVyZUlkOwotICAgICAgICBJbnRTaXplIHNpemU7Ci0gICAgICAgIEdDM0RlbnVtIGZv
cm1hdDsKKyAgICAgICAgQ0NTY29wZWRUZXh0dXJlIHRleHR1cmU7CiAgICAgICAgIEludFNpemUg
dmlzaWJsZVNpemU7CiAKLSAgICAgICAgRnJhbWVQbGFuZSgpIDogdGV4dHVyZUlkKDApIHsgfQor
ICAgICAgICBGcmFtZVBsYW5lKCkgeyB9CiAKLSAgICAgICAgYm9vbCBhbGxvY2F0ZURhdGEoQ0NS
ZW5kZXJlciopOwotICAgICAgICB2b2lkIGZyZWVEYXRhKENDUmVuZGVyZXIqKTsKKyAgICAgICAg
Ly8gVGhpcyBjb25zdHJ1Y3RvciBhbGxvd3MgZHJhdyBxdWFkcyB0byBob2xkIGEgY29weSBvZiB0
aGUgcGxhbmUgZGF0YS4gVGhleSBkb24ndCBvd24gdGhlIHRleHR1cmUgaWQuCisgICAgICAgIEZy
YW1lUGxhbmUoY29uc3QgRnJhbWVQbGFuZSYgb3RoZXIpCisgICAgICAgICAgICA6IHZpc2libGVT
aXplKG90aGVyLnZpc2libGVTaXplKQorICAgICAgICB7CisgICAgICAgICAgICB0ZXh0dXJlLmNs
b25lRnJvbShvdGhlci50ZXh0dXJlKTsKKyAgICAgICAgfQogICAgIH07CiAKIHByaXZhdGU6CkBA
IC04NiwxMCArODksMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVy
VHlwZUFzU3RyaW5nKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIlZpZGVvTGF5ZXIiOyB9CiAK
ICAgICB2b2lkIHdpbGxEcmF3SW50ZXJuYWwoQ0NSZW5kZXJlciosIENDR3JhcGhpY3NDb250ZXh0
Kik7Ci0gICAgYm9vbCBhbGxvY2F0ZVBsYW5lRGF0YShDQ1JlbmRlcmVyKik7Ci0gICAgYm9vbCBj
b3B5UGxhbmVEYXRhKENDUmVuZGVyZXIqLCBDQ0dyYXBoaWNzQ29udGV4dCopOwotICAgIHZvaWQg
ZnJlZVBsYW5lRGF0YShDQ1JlbmRlcmVyKik7Ci0gICAgdm9pZCBmcmVlVW51c2VkUGxhbmVEYXRh
KENDUmVuZGVyZXIqKTsKKyAgICBib29sIGFsbG9jYXRlUGxhbmVEYXRhKENDUmVuZGVyZXIqLCBD
Q0dyYXBoaWNzQ29udGV4dCopOworICAgIGJvb2wgY29weVBsYW5lRGF0YShDQ0dyYXBoaWNzQ29u
dGV4dCopOworICAgIHZvaWQgZnJlZVVudXNlZFBsYW5lRGF0YSgpOworICAgIHZvaWQgbG9zZVBs
YW5lRGF0YSgpOwogCiAgICAgLy8gR3VhcmRzIHRoZSBkZXN0cnVjdGlvbiBvZiBtX3Byb3ZpZGVy
IGFuZCB0aGUgZnJhbWUgdGhhdCBpdCBwcm92aWRlcwogICAgIE11dGV4IG1fcHJvdmlkZXJNdXRl
eDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>