<?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>83287</bug_id>
          
          <creation_ts>2012-04-05 09:50:54 -0700</creation_ts>
          <short_desc>[chromium] Surface replica should have a separate quad in the render pass</short_desc>
          <delta_ts>2012-04-06 10:29:32 -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>FIXED</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>
          
          <blocked>81227</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>596644</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-05 09:50:54 -0700</bug_when>
    <thetext>[chromium] Surface replica should have a separate quad in the render pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596647</commentid>
    <comment_count>1</comment_count>
      <attachid>135842</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-05 09:54:40 -0700</bug_when>
    <thetext>Created attachment 135842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596727</commentid>
    <comment_count>2</comment_count>
      <attachid>135842</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-05 11:17:27 -0700</bug_when>
    <thetext>Comment on attachment 135842
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1212
&gt; +        if (m_defaultRenderSurface-&gt;hasReplica())
&gt; +            m_defaultRenderSurface-&gt;drawReplica(this);

Can you just assert that there&apos;s no replica here? I think because of the way the offscreen texture is sized, the replica will never be visible.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp:134
&gt; +    SkBitmap filterBitmap = applyFilters(layerRenderer);

Isn&apos;t this an expensive operation? Is there a way to not do it twice?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596732</commentid>
    <comment_count>3</comment_count>
      <attachid>135842</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-05 11:21:22 -0700</bug_when>
    <thetext>Comment on attachment 135842
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.cpp:1212
&gt;&gt; +            m_defaultRenderSurface-&gt;drawReplica(this);
&gt; 
&gt; Can you just assert that there&apos;s no replica here? I think because of the way the offscreen texture is sized, the replica will never be visible.

A replica does not need to be outside the bounds of the content, you can make a replica underneath its original via CSS. And if the original is not opaque then you would see it through the original.

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp:134
&gt;&gt; +    SkBitmap filterBitmap = applyFilters(layerRenderer);
&gt; 
&gt; Isn&apos;t this an expensive operation? Is there a way to not do it twice?

Yes :(

It uses a shared texture, I think because these two methods are called next to each other, we can just save the bitmap and reuse it. But the truth is that drawing any other filters will destroy this bitmap&apos;s texture, IIUC. (And for example background filters would do this.)

Is this true Stephen? I remember having to work around this while working on the background filter stuff but its a bit fuzzy now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596889</commentid>
    <comment_count>4</comment_count>
      <attachid>135842</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-04-05 13:57:39 -0700</bug_when>
    <thetext>Comment on attachment 135842
Patch

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

&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp:134
&gt;&gt;&gt; +    SkBitmap filterBitmap = applyFilters(layerRenderer);
&gt;&gt; 
&gt;&gt; Isn&apos;t this an expensive operation? Is there a way to not do it twice?
&gt; 
&gt; Yes :(
&gt; 
&gt; It uses a shared texture, I think because these two methods are called next to each other, we can just save the bitmap and reuse it. But the truth is that drawing any other filters will destroy this bitmap&apos;s texture, IIUC. (And for example background filters would do this.)
&gt; 
&gt; Is this true Stephen? I remember having to work around this while working on the background filter stuff but its a bit fuzzy now.

Not sure what you&apos;re asking.  The bitmap returned by applyFilters() should be the sole owner of the texture, unless I&apos;ve messed something up.  But I don&apos;t think it&apos;s a good idea to stash the bitmap on the RenderSurface and rely on the caller to do the calls in the right order.

Wouldn&apos;t it be easier to encapsulate the replica checking and drawing into drawContents()?  You could have a flags argument which said which parts you want to draw (contents, replica, both).  Then you could apply the filters once, get the bitmap and use it in both passes.  Would that work?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596913</commentid>
    <comment_count>5</comment_count>
      <attachid>135842</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-04-05 14:32:47 -0700</bug_when>
    <thetext>Comment on attachment 135842
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCRenderSurface.cpp:134
&gt;&gt;&gt;&gt; +    SkBitmap filterBitmap = applyFilters(layerRenderer);
&gt;&gt;&gt; 
&gt;&gt;&gt; Isn&apos;t this an expensive operation? Is there a way to not do it twice?
&gt;&gt; 
&gt;&gt; Yes :(
&gt;&gt; 
&gt;&gt; It uses a shared texture, I think because these two methods are called next to each other, we can just save the bitmap and reuse it. But the truth is that drawing any other filters will destroy this bitmap&apos;s texture, IIUC. (And for example background filters would do this.)
&gt;&gt; 
&gt;&gt; Is this true Stephen? I remember having to work around this while working on the background filter stuff but its a bit fuzzy now.
&gt; 
&gt; Not sure what you&apos;re asking.  The bitmap returned by applyFilters() should be the sole owner of the texture, unless I&apos;ve messed something up.  But I don&apos;t think it&apos;s a good idea to stash the bitmap on the RenderSurface and rely on the caller to do the calls in the right order.
&gt; 
&gt; Wouldn&apos;t it be easier to encapsulate the replica checking and drawing into drawContents()?  You could have a flags argument which said which parts you want to draw (contents, replica, both).  Then you could apply the filters once, get the bitmap and use it in both passes.  Would that work?

OK, after discussing with Dana a bit more, I&apos;d rather not cache the SkBitmap used for filters between draws.  I know it&apos;s inefficient, but filters-on-reflections seems like a bit of an edge case right now, and I&apos;d like to investigate the texture re-use bug that Dana describes (something wrong in SkBitmap&apos;s ownership of the texture).

Ideally, I&apos;d like to stash the SkBitmap only when we have a proper invalidation mechnanism:  then only invalidate the filtered bitmap when the subtree changes, or the filter animation changes.  (And ideally, even break up the filters themselves so they can be individually invalidated).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597108</commentid>
    <comment_count>6</comment_count>
      <attachid>135958</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-05 18:30:33 -0700</bug_when>
    <thetext>Created attachment 135958
Patch

added fixme to cache the filtered texture</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597359</commentid>
    <comment_count>7</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-06 08:01:31 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; OK, after discussing with Dana a bit more, I&apos;d rather not cache the SkBitmap used for filters between draws.  I know it&apos;s inefficient, but filters-on-reflections seems like a bit of an edge case right now, and I&apos;d like to investigate the texture re-use bug that Dana describes (something wrong in SkBitmap&apos;s ownership of the texture).
&gt; 
&gt; Ideally, I&apos;d like to stash the SkBitmap only when we have a proper invalidation mechnanism:  then only invalidate the filtered bitmap when the subtree changes, or the filter animation changes.  (And ideally, even break up the filters themselves so they can be individually invalidated).

Bug filed for the texture issue with repro: http://code.google.com/p/chromium/issues/detail?id=122349

When that is resolved I will happily cache the filtered texture. Until then I also think we should do it this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597417</commentid>
    <comment_count>8</comment_count>
      <attachid>135958</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-04-06 09:53:57 -0700</bug_when>
    <thetext>Comment on attachment 135958
Patch

Thanks for this refactoring.  R=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597456</commentid>
    <comment_count>9</comment_count>
      <attachid>135958</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-06 10:29:28 -0700</bug_when>
    <thetext>Comment on attachment 135958
Patch

Clearing flags on attachment: 135958

Committed r113453: &lt;http://trac.webkit.org/changeset/113453&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>597457</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-06 10:29:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135842</attachid>
            <date>2012-04-05 09:54:40 -0700</date>
            <delta_ts>2012-04-05 18:30:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83287-20120405125439.patch</filename>
            <type>text/plain</type>
            <size>14249</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk5NzU4OTM3ZjE3NjM0
ZWYwZmIxNTk4MmJjY2JlOTIxZjNlMzU0Yy4uMTEwODU3MjQ2YjQ5NDJmNTE3YjQ5N2RjMmMxYjU0
MmMzM2E0YWMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTA1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU3Vy
ZmFjZSByZXBsaWNhIHNob3VsZCBoYXZlIGEgc2VwYXJhdGUgcXVhZCBpbiB0aGUgcmVuZGVyIHBh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJh
dGUgc2VwYXJhdGUgcXVhZHMgZm9yIGEgUmVuZGVyU3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuIFRo
ZSByZXBsaWNhCisgICAgICAgIHF1YWQgaXMgZHJhd24gaW5kZXBlbmRlbnRseSBvZiB0aGUgc3Vy
ZmFjZSBpdHNlbGYuIFRoaXMgYWxsb3dzIHVzIHRvCisgICAgICAgIGN1bGwgZWFjaCBvbmUgaW5k
ZXBlbmRlbnRseS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1
cmZhY2VRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29w
eU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpzZXRTY2lzc29yUmVjdCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhd0NvbnRlbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhd1JlcGxpY2EpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpoYXNSZXBsaWNhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaDoKKyAgICAgICAgKEND
UmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZh
Y2VEcmF3UXVhZDo6Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmg6CisgICAgICAg
IChDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZDo6aXNSZXBsaWNhKToKKwogMjAxMi0wNC0wMyAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFRoaXMgcGF0Y2ggYWRkcyBh
biB1Z2x5LCB1Z2x5IGhhY2sgdG8gYmFuZGFpZCBvdmVyIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggY2NiMWRkOGQwYjI5YzM3MjIxMzNmYWI2ZGQ4MzVhOWI0
ODI4YmIxMC4uMWJhZDZjM2JjNTFiZTllMzM3ZGU3NmM5NDMwNGVmZjgwYWFlMjUwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01MjYsNyArNTI2LDExIEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVi
dWdCb3JkZXJEcmF3UXVhZCogcXVhCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Jl
bmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkKQogewog
ICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IHF1YWQtPmxheWVyKCk7Ci0gICAgbGF5ZXItPnJlbmRl
clN1cmZhY2UoKS0+ZHJhdyh0aGlzLCBxdWFkLT5zdXJmYWNlRGFtYWdlUmVjdCgpKTsKKyAgICBs
YXllci0+cmVuZGVyU3VyZmFjZSgpLT5zZXRTY2lzc29yUmVjdCh0aGlzLCBxdWFkLT5zdXJmYWNl
RGFtYWdlUmVjdCgpKTsKKyAgICBpZiAocXVhZC0+aXNSZXBsaWNhKCkpCisgICAgICAgIGxheWVy
LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdSZXBsaWNhKHRoaXMpOworICAgIGVsc2UKKyAgICAgICAg
bGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+ZHJhd0NvbnRlbnRzKHRoaXMpOwogICAgIGxheWVyLT5y
ZW5kZXJTdXJmYWNlKCktPnJlbGVhc2VDb250ZW50c1RleHR1cmUoKTsKIH0KIApAQCAtMTIwMiw3
ICsxMjA2LDExIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5T2Zmc2NyZWVuVGV4
dHVyZVRvRGlzcGxheSgpCiAgICAgICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2QoMC41ICog
bV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS53aWR0aCgpLCAwLjUgKiBtX2Rl
ZmF1bHRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLmhlaWdodCgpLCAwKTsKICAgICAgICAg
bV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsK
ICAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+c2V0RHJhd09wYWNpdHkoMSk7Ci0gICAg
ICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmRyYXcodGhpcywgbV9kZWZhdWx0UmVuZGVyU3Vy
ZmFjZS0+Y29udGVudFJlY3QoKSk7CisKKyAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+
c2V0U2Npc3NvclJlY3QodGhpcywgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3Qo
KSk7CisgICAgICAgIGlmIChtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5oYXNSZXBsaWNhKCkpCisg
ICAgICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5kcmF3UmVwbGljYSh0aGlzKTsKKyAg
ICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+ZHJhd0NvbnRlbnRzKHRoaXMpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggMTcwNGE2MTZkNWIzMTM0YzlhYzlh
ODQ2MWRhOGE0ZGIyZmYxMGViNy4uOTZiNzYwOGY4Y2UzZWVjNzJlZGE2MGFkYzc5OWY0OWZmOGFi
MDMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC03MiwyMCArNzIsMjUgQEAgdm9p
ZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJ
bXBsKiBsYXllcikKICAgICAvLyBub3QgYmUgaGFuZGxlZCBzcGVjaWFsbHkgaGVyZS4KICAgICBD
Q1JlbmRlclN1cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIE93
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gc3VyZmFjZS0+Y3JlYXRl
U2hhcmVkUXVhZFN0YXRlKCk7Ci0KICAgICBpZiAobGF5ZXItPmhhc0RlYnVnQm9yZGVycygpKSB7
CiAgICAgICAgIENvbG9yIGNvbG9yKGRlYnVnU3VyZmFjZUJvcmRlckNvbG9yUmVkLCBkZWJ1Z1N1
cmZhY2VCb3JkZXJDb2xvckdyZWVuLCBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckJsdWUsIGRlYnVn
U3VyZmFjZUJvcmRlckFscGhhKTsKICAgICAgICAgbV9xdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBzdXJmYWNlLT5jb250
ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJmYWNlQm9yZGVyV2lkdGgpKTsKLSAgICAgICAgaWYg
KHN1cmZhY2UtPmhhc1JlcGxpY2EoKSkgewotICAgICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBzdXJmYWNlLT5jcmVhdGVSZXBsaWNhU2hhcmVkUXVh
ZFN0YXRlKCk7CisgICAgfQorICAgIGJvb2wgaXNSZXBsaWNhID0gZmFsc2U7CisgICAgbV9xdWFk
TGlzdC5hcHBlbmQoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCksIHN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIGxheWVyLCBzdXJmYWNlRGFtYWdlUmVj
dCgpLCBpc1JlcGxpY2EpKTsKKyAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJl
ZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOworCisgICAgLy8gQWRkIHJlcGxpY2EgYWZ0ZXIgdGhlIHN1
cmZhY2Ugc28gdGhhdCBpdCBhcHBlYXJzIGJlbG93IHRoZSBzdXJmYWNlLgorICAgIGlmIChzdXJm
YWNlLT5oYXNSZXBsaWNhKCkpIHsKKyAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBz
aGFyZWRRdWFkU3RhdGUgPSBzdXJmYWNlLT5jcmVhdGVSZXBsaWNhU2hhcmVkUXVhZFN0YXRlKCk7
CisgICAgICAgIGlmIChsYXllci0+aGFzRGVidWdCb3JkZXJzKCkpIHsKICAgICAgICAgICAgIENv
bG9yIGNvbG9yKGRlYnVnUmVwbGljYUJvcmRlckNvbG9yUmVkLCBkZWJ1Z1JlcGxpY2FCb3JkZXJD
b2xvckdyZWVuLCBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvckJsdWUsIGRlYnVnU3VyZmFjZUJvcmRl
ckFscGhhKTsKICAgICAgICAgICAgIG1fcXVhZExpc3QuYXBwZW5kKENDRGVidWdCb3JkZXJEcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgc3VyZmFjZS0+Y29udGVudFJlY3Qo
KSwgY29sb3IsIGRlYnVnU3VyZmFjZUJvcmRlcldpZHRoKSk7Ci0gICAgICAgICAgICBtX3NoYXJl
ZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogICAgICAg
ICB9CisgICAgICAgIGJvb2wgaXNSZXBsaWNhID0gdHJ1ZTsKKyAgICAgICAgbV9xdWFkTGlzdC5h
cHBlbmQoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUuZ2V0
KCksIHN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIGxheWVyLCBzdXJmYWNlRGFtYWdlUmVjdCgpLCBp
c1JlcGxpY2EpKTsKKyAgICAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRR
dWFkU3RhdGUucmVsZWFzZSgpKTsKICAgICB9Ci0KLSAgICBtX3F1YWRMaXN0LmFwcGVuZChDQ1Jl
bmRlclN1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgc3VyZmFj
ZS0+Y29udGVudFJlY3QoKSwgbGF5ZXIsIHN1cmZhY2VEYW1hZ2VSZWN0KCkpKTsKLSAgICBtX3No
YXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA4MTVmMWVmZWIzMmY2MjY2
ZjkzZDYwNjg2YmU4NGRjMDBmZGIwNWE1Li45ODhhNWYwMzE3ODA3YzQ4MDFlYmQxY2U0OGZhNjlj
ZjRiNDQxM2NmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTEwMiwxMiAr
MTAyLDM2IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQ29udGVudHNUZXh0dXJlKCkK
ICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5yZXNlcnZlKCk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJT
dXJmYWNlOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpzZXRT
Y2lzc29yUmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEZs
b2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpIGNvbnN0Cit7CisgICAgaWYgKG1fb3duaW5nTGF5
ZXItPnBhcmVudCgpICYmIG1fb3duaW5nTGF5ZXItPnBhcmVudCgpLT51c2VzTGF5ZXJDbGlwcGlu
ZygpICYmIGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpLnVzaW5nUGFydGlhbFN3YXApIHsK
KyAgICAgICAgRmxvYXRSZWN0IGNsaXBBbmREYW1hZ2VSZWN0ID0gbV9jbGlwUmVjdDsKKyAgICAg
ICAgY2xpcEFuZERhbWFnZVJlY3QuaW50ZXJzZWN0KHN1cmZhY2VEYW1hZ2VSZWN0KTsKKyAgICAg
ICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Npc3NvclRvUmVjdChlbmNsb3NpbmdJbnRSZWN0KGNsaXBB
bmREYW1hZ2VSZWN0KSk7CisgICAgfSBlbHNlIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRp
ZXMoKS51c2luZ1BhcnRpYWxTd2FwKQorICAgICAgICBsYXllclJlbmRlcmVyLT5zZXRTY2lzc29y
VG9SZWN0KGVuY2xvc2luZ0ludFJlY3Qoc3VyZmFjZURhbWFnZVJlY3QpKTsKKyAgICBlbHNlIGlm
IChtX293bmluZ0xheWVyLT5wYXJlbnQoKSAmJiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNl
c0xheWVyQ2xpcHBpbmcoKSkKKyAgICAgICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Npc3NvclRvUmVj
dChtX2NsaXBSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250
ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQz
RDo6U0NJU1NPUl9URVNUKSk7Cit9CisKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3Q29udGVu
dHMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogewogICAgIGlmIChtX3Nr
aXBzRHJhdyB8fCAhbV9jb250ZW50c1RleHR1cmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNr
Qml0bWFwIGZpbHRlckJpdG1hcCA9IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyKTsKKyAgICBk
cmF3TGF5ZXIobGF5ZXJSZW5kZXJlciwgbV9tYXNrTGF5ZXIsIG1fZHJhd1RyYW5zZm9ybSwgZmls
dGVyQml0bWFwKTsKK30KKwordm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdSZXBsaWNhKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcikKK3sKKyAgICBBU1NFUlQoaGFzUmVwbGlj
YSgpKTsKKyAgICBpZiAoIWhhc1JlcGxpY2EoKSB8fCBtX3NraXBzRHJhdyB8fCAhbV9jb250ZW50
c1RleHR1cmUpCisgICAgICAgIHJldHVybjsKKworICAgIFNrQml0bWFwIGZpbHRlckJpdG1hcCA9
IGFwcGx5RmlsdGVycyhsYXllclJlbmRlcmVyKTsKICAgICAvLyBGSVhNRTogQnkgdXNpbmcgdGhl
IHNhbWUgUmVuZGVyU3VyZmFjZSBmb3IgYm90aCB0aGUgY29udGVudCBhbmQgaXRzIHJlZmxlY3Rp
b24sCiAgICAgLy8gaXQncyBjdXJyZW50bHkgbm90IHBvc3NpYmxlIHRvIGFwcGx5IGEgc2VwYXJh
dGUgbWFzayB0byB0aGUgcmVmbGVjdGlvbiBsYXllcgogICAgIC8vIG9yIGNvcnJlY3RseSBoYW5k
bGUgb3BhY2l0eSBpbiByZWZsZWN0aW9ucyAob3BhY2l0eSBtdXN0IGJlIGFwcGxpZWQgYWZ0ZXIg
ZHJhd2luZwpAQCAtMTE4LDIyICsxNDIsNyBAQCB2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhdyhM
YXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEZsb2F0UmVjdAogICAg
IGlmICghbV9tYXNrTGF5ZXIgJiYgbV9vd25pbmdMYXllci0+cmVwbGljYUxheWVyKCkpCiAgICAg
ICAgIHJlcGxpY2FNYXNrTGF5ZXIgPSBtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKS0+bWFz
a0xheWVyKCk7CiAKLSAgICBpZiAobV9vd25pbmdMYXllci0+cGFyZW50KCkgJiYgbV9vd25pbmdM
YXllci0+cGFyZW50KCktPnVzZXNMYXllckNsaXBwaW5nKCkgJiYgbGF5ZXJSZW5kZXJlci0+Y2Fw
YWJpbGl0aWVzKCkudXNpbmdQYXJ0aWFsU3dhcCkgewotICAgICAgICBGbG9hdFJlY3QgY2xpcEFu
ZERhbWFnZVJlY3QgPSBtX2NsaXBSZWN0OwotICAgICAgICBjbGlwQW5kRGFtYWdlUmVjdC5pbnRl
cnNlY3Qoc3VyZmFjZURhbWFnZVJlY3QpOwotICAgICAgICBsYXllclJlbmRlcmVyLT5zZXRTY2lz
c29yVG9SZWN0KGVuY2xvc2luZ0ludFJlY3QoY2xpcEFuZERhbWFnZVJlY3QpKTsKLSAgICB9IGVs
c2UgaWYgKGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpLnVzaW5nUGFydGlhbFN3YXApCi0g
ICAgICAgIGxheWVyUmVuZGVyZXItPnNldFNjaXNzb3JUb1JlY3QoZW5jbG9zaW5nSW50UmVjdChz
dXJmYWNlRGFtYWdlUmVjdCkpOwotICAgIGVsc2UgaWYgKG1fb3duaW5nTGF5ZXItPnBhcmVudCgp
ICYmIG1fb3duaW5nTGF5ZXItPnBhcmVudCgpLT51c2VzTGF5ZXJDbGlwcGluZygpKQotICAgICAg
ICBsYXllclJlbmRlcmVyLT5zZXRTY2lzc29yVG9SZWN0KG1fY2xpcFJlY3QpOwotICAgIGVsc2UK
LSAgICAgICAgR0xDKGxheWVyUmVuZGVyZXItPmNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlci0+Y29u
dGV4dCgpLT5kaXNhYmxlKEdyYXBoaWNzQ29udGV4dDNEOjpTQ0lTU09SX1RFU1QpKTsKLQotICAg
IC8vIFJlZmxlY3Rpb24gZHJhd3MgYmVmb3JlIHRoZSBsYXllci4KLSAgICBpZiAobV9vd25pbmdM
YXllci0+cmVwbGljYUxheWVyKCkpCi0gICAgICAgIGRyYXdMYXllcihsYXllclJlbmRlcmVyLCBy
ZXBsaWNhTWFza0xheWVyLCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLCBmaWx0ZXJCaXRtYXApOwot
Ci0gICAgZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIG1fbWFza0xheWVyLCBtX2RyYXdUcmFuc2Zv
cm0sIGZpbHRlckJpdG1hcCk7CisgICAgZHJhd0xheWVyKGxheWVyUmVuZGVyZXIsIHJlcGxpY2FN
YXNrTGF5ZXIsIG1fcmVwbGljYURyYXdUcmFuc2Zvcm0sIGZpbHRlckJpdG1hcCk7CiB9CiAKIHZv
aWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3TGF5ZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXll
clJlbmRlcmVyLCBDQ0xheWVySW1wbCogbWFza0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZHJhd1RyYW5zZm9ybSwgY29uc3QgU2tCaXRtYXAmIGZpbHRlckJpdG1hcCkKQEAgLTI3
MSw3ICsyODAsNyBAQCBpbnQgQ0NSZW5kZXJTdXJmYWNlOjpvd25pbmdMYXllcklkKCkgY29uc3QK
ICAgICByZXR1cm4gbV9vd25pbmdMYXllciA/IG1fb3duaW5nTGF5ZXItPmlkKCkgOiAwOwogfQog
Ci1ib29sIENDUmVuZGVyU3VyZmFjZTo6aGFzUmVwbGljYSgpCitib29sIENDUmVuZGVyU3VyZmFj
ZTo6aGFzUmVwbGljYSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fb3duaW5nTGF5ZXItPnJlcGxp
Y2FMYXllcigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAppbmRleCBhYzQ4NjU1YTM5
NjJlNjdhNGNlN2RiZjRjOTIyMTE3YTMyMzRlMjM5Li40MmNkYTMyNmMwMzhmY2JkNDhmYTE4YTZl
ZjgwZGZlOTQ0ZDhiMTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaApAQCAtNTcsNyAr
NTcsMTAgQEAgcHVibGljOgogICAgIGJvb2wgcHJlcGFyZUNvbnRlbnRzVGV4dHVyZShMYXllclJl
bmRlcmVyQ2hyb21pdW0qKTsKICAgICB2b2lkIHJlbGVhc2VDb250ZW50c1RleHR1cmUoKTsKIAot
ICAgIHZvaWQgZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBGbG9hdFJlY3QmIHN1
cmZhY2VEYW1hZ2VSZWN0KTsKKyAgICB2b2lkIHNldFNjaXNzb3JSZWN0KExheWVyUmVuZGVyZXJD
aHJvbWl1bSosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpIGNvbnN0OworCisg
ICAgdm9pZCBkcmF3Q29udGVudHMoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CisgICAgdm9pZCBk
cmF3UmVwbGljYShMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKIAogICAgIFN0cmluZyBuYW1lKCkg
Y29uc3Q7CiAgICAgdm9pZCBkdW1wU3VyZmFjZShUZXh0U3RyZWFtJiwgaW50IGluZGVudCkgY29u
c3Q7CkBAIC0xMjcsNyArMTMwLDcgQEAgcHVibGljOgogCiAgICAgaW50IG93bmluZ0xheWVySWQo
KSBjb25zdDsKIAotICAgIGJvb2wgaGFzUmVwbGljYSgpOworICAgIGJvb2wgaGFzUmVwbGljYSgp
IGNvbnN0OwogCiAgICAgdm9pZCByZXNldFByb3BlcnR5Q2hhbmdlZEZsYWcoKSB7IG1fc3VyZmFj
ZVByb3BlcnR5Q2hhbmdlZCA9IGZhbHNlOyB9CiAgICAgYm9vbCBzdXJmYWNlUHJvcGVydHlDaGFu
Z2VkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5j
cHAKaW5kZXggYzg5YTE3MmQxNDRiYWE1ZjNjMGE1YzBmOGVkZjU4N2UxYjNjZGM5Yi4uYzZlMDIx
ZWNlMjA2NWM3OWM1ZWNmNmNkMGI2ZDM3Y2U5NTQ3YjMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmNwcApAQCAtMjksMTUgKzI5LDE2IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZD4gQ0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hh
cmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVy
LCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KQorUGFzc093blB0cjxDQ1JlbmRl
clN1cmZhY2VEcmF3UXVhZD4gQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShjb25zdCBD
Q1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVj
dCwgQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0
LCBib29sIGlzUmVwbGljYSkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkKHNoYXJlZFF1YWRTdGF0ZSwgcXVhZFJlY3QsIGxheWVyLCBzdXJmYWNlRGFt
YWdlUmVjdCkpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1
YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbGF5ZXIsIHN1cmZhY2VEYW1hZ2VSZWN0LCBp
c1JlcGxpY2EpKTsKIH0KIAotQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OkNDUmVuZGVyU3VyZmFj
ZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0
IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYg
c3VyZmFjZURhbWFnZVJlY3QpCitDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDo6Q0NSZW5kZXJTdXJm
YWNlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRTdGF0ZSwgY29u
c3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3QgRmxvYXRSZWN0
JiBzdXJmYWNlRGFtYWdlUmVjdCwgYm9vbCBpc1JlcGxpY2EpCiAgICAgOiBDQ0RyYXdRdWFkKHNo
YXJlZFF1YWRTdGF0ZSwgQ0NEcmF3UXVhZDo6UmVuZGVyU3VyZmFjZSwgcXVhZFJlY3QpCiAgICAg
LCBtX2xheWVyKGxheWVyKQogICAgICwgbV9zdXJmYWNlRGFtYWdlUmVjdChzdXJmYWNlRGFtYWdl
UmVjdCkKKyAgICAsIG1faXNSZXBsaWNhKGlzUmVwbGljYSkKIHsKICAgICBBU1NFUlQobV9sYXll
cik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaAppbmRleCA3
NTM1ZDMyZGEyOTdmODNkZjY1ZjA1NDgzZTkzYzVhZjlkYjc4NWZjLi44ZjZkYTVlZWUxZDgyN2Zj
MTBlYTVhNThkNWY4MTllYjIwNTkzMTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkLmgKQEAgLTM2LDE5ICszNiwyMSBAQCBjbGFzcyBDQ0xheWVySW1wbDsKIGNs
YXNzIENDUmVuZGVyU3VyZmFjZURyYXdRdWFkIDogcHVibGljIENDRHJhd1F1YWQgewogICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZD4gY3JlYXRlKGNvbnN0
IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKiwgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CisgICAgc3RhdGljIFBhc3NPd25QdHI8Q0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWQ+IGNyZWF0ZShjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGNv
bnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFn
ZVJlY3QsIGJvb2wgaXNSZXBsaWNhKTsKIAogICAgIENDTGF5ZXJJbXBsKiBsYXllcigpIGNvbnN0
IHsgcmV0dXJuIG1fbGF5ZXI7IH0KKyAgICBib29sIGlzUmVwbGljYSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNSZXBsaWNhOyB9CiAKICAgICAvLyBUaGUgc3VyZmFjZSBkYW1hZ2UgcmVjdCBmb3IgdGhl
IHRhcmdldCBzdXJmYWNlIHRoaXMgcXVhZCBkcmF3cyBpbnRvLgogICAgIC8vIEZJWE1FOiBUaGlz
IGNhbiBiZSByZW1vdmVkIG9uY2UgcmVuZGVyIHN1cmZhY2VzIGdldCB0aGVpciBvd24gbGF5ZXIg
dHlwZS4KICAgICBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXJmYWNlRGFtYWdlUmVjdDsgfQogCiBwcml2YXRlOgotICAgIENDUmVuZGVyU3Vy
ZmFjZURyYXdRdWFkKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIEND
TGF5ZXJJbXBsKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCk7CisgICAgQ0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRS
ZWN0JiwgQ0NMYXllckltcGwqLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBi
b29sIGlzUmVwbGljYSk7CiAKICAgICBDQ0xheWVySW1wbCogbV9sYXllcjsKICAgICBGbG9hdFJl
Y3QgbV9zdXJmYWNlRGFtYWdlUmVjdDsKKyAgICBib29sIG1faXNSZXBsaWNhOwogfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135958</attachid>
            <date>2012-04-05 18:30:33 -0700</date>
            <delta_ts>2012-04-06 10:29:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83287-20120405213031.patch</filename>
            <type>text/plain</type>
            <size>14260</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk5NzU4OTM3ZjE3NjM0
ZWYwZmIxNTk4MmJjY2JlOTIxZjNlMzU0Yy4uMTEwODU3MjQ2YjQ5NDJmNTE3YjQ5N2RjMmMxYjU0
MmMzM2E0YWMyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTA0LTA1ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gU3Vy
ZmFjZSByZXBsaWNhIHNob3VsZCBoYXZlIGEgc2VwYXJhdGUgcXVhZCBpbiB0aGUgcmVuZGVyIHBh
c3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgzMjg3
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgR2VuZXJh
dGUgc2VwYXJhdGUgcXVhZHMgZm9yIGEgUmVuZGVyU3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuIFRo
ZSByZXBsaWNhCisgICAgICAgIHF1YWQgaXMgZHJhd24gaW5kZXBlbmRlbnRseSBvZiB0aGUgc3Vy
ZmFjZSBpdHNlbGYuIFRoaXMgYWxsb3dzIHVzIHRvCisgICAgICAgIGN1bGwgZWFjaCBvbmUgaW5k
ZXBlbmRlbnRseS4KKworICAgICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1JlbmRlclN1
cmZhY2VRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y29w
eU9mZnNjcmVlblRleHR1cmVUb0Rpc3BsYXkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRl
clBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpzZXRTY2lzc29yUmVjdCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhd0NvbnRlbnRzKToK
KyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6ZHJhd1JlcGxpY2EpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpoYXNSZXBsaWNhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaDoKKyAgICAgICAgKEND
UmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZh
Y2VEcmF3UXVhZDo6Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmg6CisgICAgICAg
IChDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZDo6aXNSZXBsaWNhKToKKwogMjAxMi0wNC0wMyAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFRoaXMgcGF0Y2ggYWRkcyBh
biB1Z2x5LCB1Z2x5IGhhY2sgdG8gYmFuZGFpZCBvdmVyIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVu
ZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggY2NiMWRkOGQwYjI5YzM3MjIxMzNmYWI2ZGQ4MzVhOWI0
ODI4YmIxMC4uMWJhZDZjM2JjNTFiZTllMzM3ZGU3NmM5NDMwNGVmZjgwYWFlMjUwZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC01MjYsNyArNTI2LDExIEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3RGVidWdCb3JkZXJRdWFkKGNvbnN0IENDRGVi
dWdCb3JkZXJEcmF3UXVhZCogcXVhCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Jl
bmRlclN1cmZhY2VRdWFkKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiBxdWFkKQogewog
ICAgIENDTGF5ZXJJbXBsKiBsYXllciA9IHF1YWQtPmxheWVyKCk7Ci0gICAgbGF5ZXItPnJlbmRl
clN1cmZhY2UoKS0+ZHJhdyh0aGlzLCBxdWFkLT5zdXJmYWNlRGFtYWdlUmVjdCgpKTsKKyAgICBs
YXllci0+cmVuZGVyU3VyZmFjZSgpLT5zZXRTY2lzc29yUmVjdCh0aGlzLCBxdWFkLT5zdXJmYWNl
RGFtYWdlUmVjdCgpKTsKKyAgICBpZiAocXVhZC0+aXNSZXBsaWNhKCkpCisgICAgICAgIGxheWVy
LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdSZXBsaWNhKHRoaXMpOworICAgIGVsc2UKKyAgICAgICAg
bGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+ZHJhd0NvbnRlbnRzKHRoaXMpOwogICAgIGxheWVyLT5y
ZW5kZXJTdXJmYWNlKCktPnJlbGVhc2VDb250ZW50c1RleHR1cmUoKTsKIH0KIApAQCAtMTIwMiw3
ICsxMjA2LDExIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5T2Zmc2NyZWVuVGV4
dHVyZVRvRGlzcGxheSgpCiAgICAgICAgIGRyYXdUcmFuc2Zvcm0udHJhbnNsYXRlM2QoMC41ICog
bV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKS53aWR0aCgpLCAwLjUgKiBtX2Rl
ZmF1bHRSZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpLmhlaWdodCgpLCAwKTsKICAgICAgICAg
bV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsK
ICAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+c2V0RHJhd09wYWNpdHkoMSk7Ci0gICAg
ICAgIG1fZGVmYXVsdFJlbmRlclN1cmZhY2UtPmRyYXcodGhpcywgbV9kZWZhdWx0UmVuZGVyU3Vy
ZmFjZS0+Y29udGVudFJlY3QoKSk7CisKKyAgICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+
c2V0U2Npc3NvclJlY3QodGhpcywgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3Qo
KSk7CisgICAgICAgIGlmIChtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5oYXNSZXBsaWNhKCkpCisg
ICAgICAgICAgICBtX2RlZmF1bHRSZW5kZXJTdXJmYWNlLT5kcmF3UmVwbGljYSh0aGlzKTsKKyAg
ICAgICAgbV9kZWZhdWx0UmVuZGVyU3VyZmFjZS0+ZHJhd0NvbnRlbnRzKHRoaXMpOwogICAgIH0K
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggMTcwNGE2MTZkNWIzMTM0YzlhYzlh
ODQ2MWRhOGE0ZGIyZmYxMGViNy4uOTZiNzYwOGY4Y2UzZWVjNzJlZGE2MGFkYzc5OWY0OWZmOGFi
MDMwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC03MiwyMCArNzIsMjUgQEAgdm9p
ZCBDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKENDTGF5ZXJJ
bXBsKiBsYXllcikKICAgICAvLyBub3QgYmUgaGFuZGxlZCBzcGVjaWFsbHkgaGVyZS4KICAgICBD
Q1JlbmRlclN1cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpOwogICAgIE93
blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gc2hhcmVkUXVhZFN0YXRlID0gc3VyZmFjZS0+Y3JlYXRl
U2hhcmVkUXVhZFN0YXRlKCk7Ci0KICAgICBpZiAobGF5ZXItPmhhc0RlYnVnQm9yZGVycygpKSB7
CiAgICAgICAgIENvbG9yIGNvbG9yKGRlYnVnU3VyZmFjZUJvcmRlckNvbG9yUmVkLCBkZWJ1Z1N1
cmZhY2VCb3JkZXJDb2xvckdyZWVuLCBkZWJ1Z1N1cmZhY2VCb3JkZXJDb2xvckJsdWUsIGRlYnVn
U3VyZmFjZUJvcmRlckFscGhhKTsKICAgICAgICAgbV9xdWFkTGlzdC5hcHBlbmQoQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkOjpjcmVhdGUoc2hhcmVkUXVhZFN0YXRlLmdldCgpLCBzdXJmYWNlLT5jb250
ZW50UmVjdCgpLCBjb2xvciwgZGVidWdTdXJmYWNlQm9yZGVyV2lkdGgpKTsKLSAgICAgICAgaWYg
KHN1cmZhY2UtPmhhc1JlcGxpY2EoKSkgewotICAgICAgICAgICAgT3duUHRyPENDU2hhcmVkUXVh
ZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSBzdXJmYWNlLT5jcmVhdGVSZXBsaWNhU2hhcmVkUXVh
ZFN0YXRlKCk7CisgICAgfQorICAgIGJvb2wgaXNSZXBsaWNhID0gZmFsc2U7CisgICAgbV9xdWFk
TGlzdC5hcHBlbmQoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3Rh
dGUuZ2V0KCksIHN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIGxheWVyLCBzdXJmYWNlRGFtYWdlUmVj
dCgpLCBpc1JlcGxpY2EpKTsKKyAgICBtX3NoYXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJl
ZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOworCisgICAgLy8gQWRkIHJlcGxpY2EgYWZ0ZXIgdGhlIHN1
cmZhY2Ugc28gdGhhdCBpdCBhcHBlYXJzIGJlbG93IHRoZSBzdXJmYWNlLgorICAgIGlmIChzdXJm
YWNlLT5oYXNSZXBsaWNhKCkpIHsKKyAgICAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBz
aGFyZWRRdWFkU3RhdGUgPSBzdXJmYWNlLT5jcmVhdGVSZXBsaWNhU2hhcmVkUXVhZFN0YXRlKCk7
CisgICAgICAgIGlmIChsYXllci0+aGFzRGVidWdCb3JkZXJzKCkpIHsKICAgICAgICAgICAgIENv
bG9yIGNvbG9yKGRlYnVnUmVwbGljYUJvcmRlckNvbG9yUmVkLCBkZWJ1Z1JlcGxpY2FCb3JkZXJD
b2xvckdyZWVuLCBkZWJ1Z1JlcGxpY2FCb3JkZXJDb2xvckJsdWUsIGRlYnVnU3VyZmFjZUJvcmRl
ckFscGhhKTsKICAgICAgICAgICAgIG1fcXVhZExpc3QuYXBwZW5kKENDRGVidWdCb3JkZXJEcmF3
UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgc3VyZmFjZS0+Y29udGVudFJlY3Qo
KSwgY29sb3IsIGRlYnVnU3VyZmFjZUJvcmRlcldpZHRoKSk7Ci0gICAgICAgICAgICBtX3NoYXJl
ZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogICAgICAg
ICB9CisgICAgICAgIGJvb2wgaXNSZXBsaWNhID0gdHJ1ZTsKKyAgICAgICAgbV9xdWFkTGlzdC5h
cHBlbmQoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUuZ2V0
KCksIHN1cmZhY2UtPmNvbnRlbnRSZWN0KCksIGxheWVyLCBzdXJmYWNlRGFtYWdlUmVjdCgpLCBp
c1JlcGxpY2EpKTsKKyAgICAgICAgbV9zaGFyZWRRdWFkU3RhdGVMaXN0LmFwcGVuZChzaGFyZWRR
dWFkU3RhdGUucmVsZWFzZSgpKTsKICAgICB9Ci0KLSAgICBtX3F1YWRMaXN0LmFwcGVuZChDQ1Jl
bmRlclN1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKHNoYXJlZFF1YWRTdGF0ZS5nZXQoKSwgc3VyZmFj
ZS0+Y29udGVudFJlY3QoKSwgbGF5ZXIsIHN1cmZhY2VEYW1hZ2VSZWN0KCkpKTsKLSAgICBtX3No
YXJlZFF1YWRTdGF0ZUxpc3QuYXBwZW5kKHNoYXJlZFF1YWRTdGF0ZS5yZWxlYXNlKCkpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmNwcAppbmRleCA4MTVmMWVmZWIzMmY2MjY2
ZjkzZDYwNjg2YmU4NGRjMDBmZGIwNWE1Li45OTFhYzdkZTUzZjVjYjI2YjhkNGM2MmVhZTkwMTJl
MWQyZTE1NGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5jcHAKQEAgLTEwMiwxMSAr
MTAyLDM2IEBAIHZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpyZWxlYXNlQ29udGVudHNUZXh0dXJlKCkK
ICAgICBtX2NvbnRlbnRzVGV4dHVyZS0+dW5yZXNlcnZlKCk7CiB9CiAKLXZvaWQgQ0NSZW5kZXJT
dXJmYWNlOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpzZXRT
Y2lzc29yUmVjdChMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEZs
b2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpIGNvbnN0Cit7CisgICAgaWYgKG1fb3duaW5nTGF5
ZXItPnBhcmVudCgpICYmIG1fb3duaW5nTGF5ZXItPnBhcmVudCgpLT51c2VzTGF5ZXJDbGlwcGlu
ZygpICYmIGxheWVyUmVuZGVyZXItPmNhcGFiaWxpdGllcygpLnVzaW5nUGFydGlhbFN3YXApIHsK
KyAgICAgICAgRmxvYXRSZWN0IGNsaXBBbmREYW1hZ2VSZWN0ID0gbV9jbGlwUmVjdDsKKyAgICAg
ICAgY2xpcEFuZERhbWFnZVJlY3QuaW50ZXJzZWN0KHN1cmZhY2VEYW1hZ2VSZWN0KTsKKyAgICAg
ICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Npc3NvclRvUmVjdChlbmNsb3NpbmdJbnRSZWN0KGNsaXBB
bmREYW1hZ2VSZWN0KSk7CisgICAgfSBlbHNlIGlmIChsYXllclJlbmRlcmVyLT5jYXBhYmlsaXRp
ZXMoKS51c2luZ1BhcnRpYWxTd2FwKQorICAgICAgICBsYXllclJlbmRlcmVyLT5zZXRTY2lzc29y
VG9SZWN0KGVuY2xvc2luZ0ludFJlY3Qoc3VyZmFjZURhbWFnZVJlY3QpKTsKKyAgICBlbHNlIGlm
IChtX293bmluZ0xheWVyLT5wYXJlbnQoKSAmJiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNl
c0xheWVyQ2xpcHBpbmcoKSkKKyAgICAgICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Npc3NvclRvUmVj
dChtX2NsaXBSZWN0KTsKKyAgICBlbHNlCisgICAgICAgIEdMQyhsYXllclJlbmRlcmVyLT5jb250
ZXh0KCksIGxheWVyUmVuZGVyZXItPmNvbnRleHQoKS0+ZGlzYWJsZShHcmFwaGljc0NvbnRleHQz
RDo6U0NJU1NPUl9URVNUKSk7Cit9CisKK3ZvaWQgQ0NSZW5kZXJTdXJmYWNlOjpkcmF3Q29udGVu
dHMoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyKQogewogICAgIGlmIChtX3Nr
aXBzRHJhdyB8fCAhbV9jb250ZW50c1RleHR1cmUpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8v
IEZJWE1FOiBDYWNoZSB0aGlzIHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byBkbyBpdCBm
b3IgYm90aCB0aGUgc3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EuCisgICAgU2tCaXRtYXAgZmlsdGVy
Qml0bWFwID0gYXBwbHlGaWx0ZXJzKGxheWVyUmVuZGVyZXIpOworICAgIGRyYXdMYXllcihsYXll
clJlbmRlcmVyLCBtX21hc2tMYXllciwgbV9kcmF3VHJhbnNmb3JtLCBmaWx0ZXJCaXRtYXApOwor
fQorCit2b2lkIENDUmVuZGVyU3VyZmFjZTo6ZHJhd1JlcGxpY2EoTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyKQoreworICAgIEFTU0VSVChoYXNSZXBsaWNhKCkpOworICAgIGlm
ICghaGFzUmVwbGljYSgpIHx8IG1fc2tpcHNEcmF3IHx8ICFtX2NvbnRlbnRzVGV4dHVyZSkKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgU2tCaXRtYXAgZmlsdGVyQml0bWFwID0gYXBwbHlGaWx0ZXJz
KGxheWVyUmVuZGVyZXIpOwogICAgIC8vIEZJWE1FOiBCeSB1c2luZyB0aGUgc2FtZSBSZW5kZXJT
dXJmYWNlIGZvciBib3RoIHRoZSBjb250ZW50IGFuZCBpdHMgcmVmbGVjdGlvbiwKICAgICAvLyBp
dCdzIGN1cnJlbnRseSBub3QgcG9zc2libGUgdG8gYXBwbHkgYSBzZXBhcmF0ZSBtYXNrIHRvIHRo
ZSByZWZsZWN0aW9uIGxheWVyCkBAIC0xMTgsMjIgKzE0Myw3IEBAIHZvaWQgQ0NSZW5kZXJTdXJm
YWNlOjpkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgRmxv
YXRSZWN0CiAgICAgaWYgKCFtX21hc2tMYXllciAmJiBtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5
ZXIoKSkKICAgICAgICAgcmVwbGljYU1hc2tMYXllciA9IG1fb3duaW5nTGF5ZXItPnJlcGxpY2FM
YXllcigpLT5tYXNrTGF5ZXIoKTsKIAotICAgIGlmIChtX293bmluZ0xheWVyLT5wYXJlbnQoKSAm
JiBtX293bmluZ0xheWVyLT5wYXJlbnQoKS0+dXNlc0xheWVyQ2xpcHBpbmcoKSAmJiBsYXllclJl
bmRlcmVyLT5jYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKSB7Ci0gICAgICAgIEZsb2F0
UmVjdCBjbGlwQW5kRGFtYWdlUmVjdCA9IG1fY2xpcFJlY3Q7Ci0gICAgICAgIGNsaXBBbmREYW1h
Z2VSZWN0LmludGVyc2VjdChzdXJmYWNlRGFtYWdlUmVjdCk7Ci0gICAgICAgIGxheWVyUmVuZGVy
ZXItPnNldFNjaXNzb3JUb1JlY3QoZW5jbG9zaW5nSW50UmVjdChjbGlwQW5kRGFtYWdlUmVjdCkp
OwotICAgIH0gZWxzZSBpZiAobGF5ZXJSZW5kZXJlci0+Y2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0
aWFsU3dhcCkKLSAgICAgICAgbGF5ZXJSZW5kZXJlci0+c2V0U2Npc3NvclRvUmVjdChlbmNsb3Np
bmdJbnRSZWN0KHN1cmZhY2VEYW1hZ2VSZWN0KSk7Ci0gICAgZWxzZSBpZiAobV9vd25pbmdMYXll
ci0+cGFyZW50KCkgJiYgbV9vd25pbmdMYXllci0+cGFyZW50KCktPnVzZXNMYXllckNsaXBwaW5n
KCkpCi0gICAgICAgIGxheWVyUmVuZGVyZXItPnNldFNjaXNzb3JUb1JlY3QobV9jbGlwUmVjdCk7
Ci0gICAgZWxzZQotICAgICAgICBHTEMobGF5ZXJSZW5kZXJlci0+Y29udGV4dCgpLCBsYXllclJl
bmRlcmVyLT5jb250ZXh0KCktPmRpc2FibGUoR3JhcGhpY3NDb250ZXh0M0Q6OlNDSVNTT1JfVEVT
VCkpOwotCi0gICAgLy8gUmVmbGVjdGlvbiBkcmF3cyBiZWZvcmUgdGhlIGxheWVyLgotICAgIGlm
IChtX293bmluZ0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkKLSAgICAgICAgZHJhd0xheWVyKGxheWVy
UmVuZGVyZXIsIHJlcGxpY2FNYXNrTGF5ZXIsIG1fcmVwbGljYURyYXdUcmFuc2Zvcm0sIGZpbHRl
ckJpdG1hcCk7Ci0KLSAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJlciwgbV9tYXNrTGF5ZXIsIG1f
ZHJhd1RyYW5zZm9ybSwgZmlsdGVyQml0bWFwKTsKKyAgICBkcmF3TGF5ZXIobGF5ZXJSZW5kZXJl
ciwgcmVwbGljYU1hc2tMYXllciwgbV9yZXBsaWNhRHJhd1RyYW5zZm9ybSwgZmlsdGVyQml0bWFw
KTsKIH0KIAogdm9pZCBDQ1JlbmRlclN1cmZhY2U6OmRyYXdMYXllcihMYXllclJlbmRlcmVyQ2hy
b21pdW0qIGxheWVyUmVuZGVyZXIsIENDTGF5ZXJJbXBsKiBtYXNrTGF5ZXIsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBTa0JpdG1hcCYgZmlsdGVyQml0
bWFwKQpAQCAtMjcxLDcgKzI4MSw3IEBAIGludCBDQ1JlbmRlclN1cmZhY2U6Om93bmluZ0xheWVy
SWQoKSBjb25zdAogICAgIHJldHVybiBtX293bmluZ0xheWVyID8gbV9vd25pbmdMYXllci0+aWQo
KSA6IDA7CiB9CiAKLWJvb2wgQ0NSZW5kZXJTdXJmYWNlOjpoYXNSZXBsaWNhKCkKK2Jvb2wgQ0NS
ZW5kZXJTdXJmYWNlOjpoYXNSZXBsaWNhKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9vd25pbmdM
YXllci0+cmVwbGljYUxheWVyKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCmluZGV4
IGFjNDg2NTVhMzk2MmU2N2E0Y2U3ZGJmNGM5MjIxMTdhMzIzNGUyMzkuLjQyY2RhMzI2YzAzOGZj
YmQ0OGZhMThhNmVmODBkZmU5NDRkOGIxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5o
CkBAIC01Nyw3ICs1NywxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBwcmVwYXJlQ29udGVudHNUZXh0
dXJlKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogICAgIHZvaWQgcmVsZWFzZUNvbnRlbnRzVGV4
dHVyZSgpOwogCi0gICAgdm9pZCBkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IEZs
b2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOworICAgIHZvaWQgc2V0U2Npc3NvclJlY3QoTGF5
ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgRmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkg
Y29uc3Q7CisKKyAgICB2b2lkIGRyYXdDb250ZW50cyhMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsK
KyAgICB2b2lkIGRyYXdSZXBsaWNhKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogCiAgICAgU3Ry
aW5nIG5hbWUoKSBjb25zdDsKICAgICB2b2lkIGR1bXBTdXJmYWNlKFRleHRTdHJlYW0mLCBpbnQg
aW5kZW50KSBjb25zdDsKQEAgLTEyNyw3ICsxMzAsNyBAQCBwdWJsaWM6CiAKICAgICBpbnQgb3du
aW5nTGF5ZXJJZCgpIGNvbnN0OwogCi0gICAgYm9vbCBoYXNSZXBsaWNhKCk7CisgICAgYm9vbCBo
YXNSZXBsaWNhKCkgY29uc3Q7CiAKICAgICB2b2lkIHJlc2V0UHJvcGVydHlDaGFuZ2VkRmxhZygp
IHsgbV9zdXJmYWNlUHJvcGVydHlDaGFuZ2VkID0gZmFsc2U7IH0KICAgICBib29sIHN1cmZhY2VQ
cm9wZXJ0eUNoYW5nZWQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZURyYXdRdWFkLmNwcAppbmRleCBjODlhMTcyZDE0NGJhYTVmM2MwYTVjMGY4ZWRmNTg3ZTFiM2Nk
YzliLi5jNmUwMjFlY2UyMDY1Yzc5YzVlY2Y2Y2QwYjZkMzdjZTk1NDdiMzEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuY3BwCkBAIC0yOSwxNSArMjksMTYg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDUmVuZGVyU3VyZmFjZURy
YXdRdWFkPiBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDo6Y3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJlY3QmIHF1YWRSZWN0LCBDQ0xheWVy
SW1wbCogbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpCitQYXNzT3du
UHRyPENDUmVuZGVyU3VyZmFjZURyYXdRdWFkPiBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDo6Y3Jl
YXRlKGNvbnN0IENDU2hhcmVkUXVhZFN0YXRlKiBzaGFyZWRRdWFkU3RhdGUsIGNvbnN0IEludFJl
Y3QmIHF1YWRSZWN0LCBDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFj
ZURhbWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcg
Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBxdWFkUmVjdCwgbGF5ZXIs
IHN1cmZhY2VEYW1hZ2VSZWN0KSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZChzaGFyZWRRdWFkU3RhdGUsIHF1YWRSZWN0LCBsYXllciwgc3VyZmFjZURh
bWFnZVJlY3QsIGlzUmVwbGljYSkpOwogfQogCi1DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZDo6Q0NS
ZW5kZXJTdXJmYWNlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqIHNoYXJlZFF1YWRT
dGF0ZSwgY29uc3QgSW50UmVjdCYgcXVhZFJlY3QsIENDTGF5ZXJJbXBsKiBsYXllciwgY29uc3Qg
RmxvYXRSZWN0JiBzdXJmYWNlRGFtYWdlUmVjdCkKK0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkOjpD
Q1JlbmRlclN1cmZhY2VEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVh
ZFN0YXRlLCBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCwgQ0NMYXllckltcGwqIGxheWVyLCBjb25z
dCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0LCBib29sIGlzUmVwbGljYSkKICAgICA6IEND
RHJhd1F1YWQoc2hhcmVkUXVhZFN0YXRlLCBDQ0RyYXdRdWFkOjpSZW5kZXJTdXJmYWNlLCBxdWFk
UmVjdCkKICAgICAsIG1fbGF5ZXIobGF5ZXIpCiAgICAgLCBtX3N1cmZhY2VEYW1hZ2VSZWN0KHN1
cmZhY2VEYW1hZ2VSZWN0KQorICAgICwgbV9pc1JlcGxpY2EoaXNSZXBsaWNhKQogewogICAgIEFT
U0VSVChtX2xheWVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZC5oCmluZGV4IDc1MzVkMzJkYTI5N2Y4M2RmNjVmMDU0ODNlOTNjNWFmOWRiNzg1ZmMuLjhmNmRh
NWVlZTFkODI3ZmMxMGVhNWE1OGQ1ZjgxOWViMjA1OTMxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZURyYXdR
dWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaApAQCAtMzYsMTkgKzM2LDIxIEBAIGNsYXNzIENDTGF5
ZXJJbXBsOwogY2xhc3MgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQgOiBwdWJsaWMgQ0NEcmF3UXVh
ZCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQpOwog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENDUmVuZGVyU3VyZmFjZURyYXdRdWFkPiBj
cmVhdGUoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJbnRSZWN0JiwgQ0NMYXllcklt
cGwqLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0KTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZD4gY3JlYXRlKGNvbnN0IENDU2hhcmVkUXVh
ZFN0YXRlKiwgY29uc3QgSW50UmVjdCYsIENDTGF5ZXJJbXBsKiwgY29uc3QgRmxvYXRSZWN0JiBz
dXJmYWNlRGFtYWdlUmVjdCwgYm9vbCBpc1JlcGxpY2EpOwogCiAgICAgQ0NMYXllckltcGwqIGxh
eWVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllcjsgfQorICAgIGJvb2wgaXNSZXBsaWNhKCkgY29u
c3QgeyByZXR1cm4gbV9pc1JlcGxpY2E7IH0KIAogICAgIC8vIFRoZSBzdXJmYWNlIGRhbWFnZSBy
ZWN0IGZvciB0aGUgdGFyZ2V0IHN1cmZhY2UgdGhpcyBxdWFkIGRyYXdzIGludG8uCiAgICAgLy8g
RklYTUU6IFRoaXMgY2FuIGJlIHJlbW92ZWQgb25jZSByZW5kZXIgc3VyZmFjZXMgZ2V0IHRoZWly
IG93biBsYXllciB0eXBlLgogICAgIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3Qo
KSBjb25zdCB7IHJldHVybiBtX3N1cmZhY2VEYW1hZ2VSZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAg
Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQoY29uc3QgQ0NTaGFyZWRRdWFkU3RhdGUqLCBjb25zdCBJ
bnRSZWN0JiwgQ0NMYXllckltcGwqLCBjb25zdCBGbG9hdFJlY3QmIHN1cmZhY2VEYW1hZ2VSZWN0
KTsKKyAgICBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZChjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSos
IGNvbnN0IEludFJlY3QmLCBDQ0xheWVySW1wbCosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURh
bWFnZVJlY3QsIGJvb2wgaXNSZXBsaWNhKTsKIAogICAgIENDTGF5ZXJJbXBsKiBtX2xheWVyOwog
ICAgIEZsb2F0UmVjdCBtX3N1cmZhY2VEYW1hZ2VSZWN0OworICAgIGJvb2wgbV9pc1JlcGxpY2E7
CiB9OwogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>