<?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>134092</bug_id>
          
          <creation_ts>2014-06-19 22:59:08 -0700</creation_ts>
          <short_desc>Introduce RenderLayer::offsetFromAncestorLayer() to make convertToLayerCoords() calls with LayoutPoint(0, 0) as parameter more explicit.</short_desc>
          <delta_ts>2014-06-20 15:58:06 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1016847</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-06-19 22:59:08 -0700</bug_when>
    <thetext>Most of the RenderLayer::convertToLayerCoords() callers are just interested in getting the offset from the ancestor layer. Introducing offsetFromAncestorLayer() makes those calls more explicit/self-explanatory -&gt; callsite&apos;s code can be simplified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016850</commentid>
    <comment_count>1</comment_count>
      <attachid>233407</attachid>
    <who name="alan">zalan</who>
    <bug_when>2014-06-19 23:04:36 -0700</bug_when>
    <thetext>Created attachment 233407
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016930</commentid>
    <comment_count>2</comment_count>
      <attachid>233407</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-06-20 08:34:18 -0700</bug_when>
    <thetext>Comment on attachment 233407
Patch

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

&gt; Source/WebCore/rendering/RenderGeometryMap.cpp:-190
&gt; -//    fprintf(stderr, &quot;RenderGeometryMap::pushMappingsToAncestor from layer %p to layer %p, canConvertInLayerTree=%d\n&quot;, layer, ancestorLayer, canConvertInLayerTree);

Lots of commented printfs in this patch.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2026
&gt; +LayoutPoint RenderLayer::offsetFromAncestorLayer(const RenderLayer* ancestorLayer) const

I think you could call this offsetFromAncestor. Would it make sense to return a LayoutSize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1016932</commentid>
    <comment_count>3</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-06-20 08:36:41 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 233407 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=233407&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderGeometryMap.cpp:-190
&gt; &gt; -//    fprintf(stderr, &quot;RenderGeometryMap::pushMappingsToAncestor from layer %p to layer %p, canConvertInLayerTree=%d\n&quot;, layer, ancestorLayer, canConvertInLayerTree);
&gt; 
&gt; Lots of commented printfs in this patch.
You want me to keep them in? :)

&gt; 
&gt; &gt; Source/WebCore/rendering/RenderLayer.cpp:2026
&gt; &gt; +LayoutPoint RenderLayer::offsetFromAncestorLayer(const RenderLayer* ancestorLayer) const
&gt; 
&gt; I think you could call this offsetFromAncestor. Would it make sense to return a LayoutSize?
Indeed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1017104</commentid>
    <comment_count>4</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2014-06-20 15:58:06 -0700</bug_when>
    <thetext>Committed r170220: &lt;http://trac.webkit.org/changeset/170220&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>233407</attachid>
            <date>2014-06-19 23:04:36 -0700</date>
            <delta_ts>2014-06-20 08:34:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-134092-20140619230414.patch</filename>
            <type>text/plain</type>
            <size>32837</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcwMTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDMzODFhYzg5ODg5NDcy
ZDNiMjdhZGU5NDgwYTY1OTAzZTU0MjVhMi4uNjYxOWI2MWZiOTIxYmMwYmZlNDk0MDY1MDFhNmFi
YTA3NWVjNWZlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE0LTA2LTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW50cm9kdWNlIFJlbmRlckxh
eWVyOjpvZmZzZXRGcm9tQW5jZXN0b3JMYXllcigpIHRvIG1ha2UgY29udmVydFRvTGF5ZXJDb29y
ZHMoKSBjYWxscyB3aXRoIAorICAgICAgICBMYXlvdXRQb2ludCgwLCAwKSBhcyBwYXJhbWV0ZXIg
bW9yZSBleHBsaWNpdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzNDA5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE1vc3Qgb2YgdGhlIFJlbmRlckxheWVyOjpjb252ZXJ0VG9MYXllckNvb3JkcygpIGNh
bGxlcnMgYXJlIG9ubHkgaW50ZXJlc3RlZCBpbgorICAgICAgICB0aGUgb2Zmc2V0IGZyb20gdGhl
IGFuY2VzdG9yIGxheWVyIGJ5IHBhc3NpbmcgTGF5b3V0UG9pbnQoMCwgMCkgYXMgdGhlIGNvb3Jk
aW5hdGUgdG8gY29udmVydC4KKyAgICAgICAgSW50cm9kdWNpbmcgb2Zmc2V0RnJvbUFuY2VzdG9y
TGF5ZXIoKSBtYWtlcyB0aG9zZSBjYWxscyBtb3JlIGV4cGxpY2l0L3NlbGYtZXhwbGFuYXRvcnku
CisgICAgICAgIEl0IGhlbHBzIHNpbXBsaWZ5aW5nIHRoZSBjYWxsc2l0ZSdzIGNvZGUuCisKKyAg
ICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyR2VvbWV0cnlNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyR2VvbWV0cnlN
YXA6Om1hcFRvQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21ldHJ5TWFw
OjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckdlb21l
dHJ5TWFwOjpwdXNoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbXB1dGVPZmZzZXRGcm9tUm9vdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3NpdGlvbnMpOgorICAgICAg
ICAoV2ViQ29yZTo6ZXhwYW5kQ2xpcFJlY3RGb3JSZWdpb25BbmRSZWZsZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OmV4cGFuZENsaXBSZWN0Rm9yRGVzY2VuZGFudHNBbmRSZWZsZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OnRyYW5zcGFyZW5jeUNsaXBCb3gpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyTGF5ZXI6OmNvbnZlcnRUb1BpeGVsU25hcHBlZExheWVyQ29vcmRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OmFjY3VtdWxhdGVPZmZzZXRUb3dhcmRzQW5jZXN0b3IpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbnZlcnRUb0xheWVyQ29vcmRzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlckxheWVyOjpvZmZzZXRGcm9tQW5jZXN0b3JMYXllcik6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2xpcFRvUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJMYXllcjo6Y29sbGVjdEZyYWdtZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6cGFpbnRUcmFuc2Zvcm1lZExheWVySW50b0ZyYWdtZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllcjo6Y3JlYXRlTG9jYWxUcmFuc2Zvcm1TdGF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6aGl0VGVzdFRyYW5zZm9ybWVkTGF5ZXJJbkZyYWdtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y2FsY3VsYXRlQ2xpcFJlY3RzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyTGF5ZXJCYWNraW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQ29tcG9zaXRlZEJvdW5kcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXll
ckJhY2tpbmc6OnVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRv
cjo6cmVwYWludEluQ29tcG9zaXRlZEFuY2VzdG9yKToKKworMjAxNC0wNi0xOSAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgorCisgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgUmVuZGVy
TGF5ZXI6OmNvbXB1dGVPZmZzZXRGcm9tUm9vdCgpIGZ1bmN0aW9uLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM0MDg4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxp
dHkuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZUNsaXBSZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllcjo6Y29tcHV0ZU9mZnNldEZyb21Sb290KTogRGVsZXRlZC4KKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaDoKKwogMjAxNC0wNi0xOCAgU2FtIFdlaW5pZyAgPHNh
bUB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgZ2VuZXJhdGUgcHJvdG90eXBlIGFuZCBjb25z
dHJ1Y3RvciBjbGFzc2VzIGludG8gdGhlIGdlbmVyYXRlZCBpbXBsZW1lbnRhdGlvbiBmaWxlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJHZW9tZXRyeU1hcC5jcHAKaW5kZXgg
ODI1ZWExNTQ0MDE1OTc2YmVjN2Y1MzU2MmIzODBlOTNjMzk0YjhjOC4uMWNkY2Q0NmU1MTdhZTVl
OWQxOGY5ZTNjODYyNWQ2NjNhMzhlNzMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckdlb21ldHJ5TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyR2VvbWV0cnlNYXAuY3BwCkBAIC0xMTYsOCArMTE2LDYgQEAgRmxvYXRQb2ludCBS
ZW5kZXJHZW9tZXRyeU1hcDo6bWFwVG9Db250YWluZXIoY29uc3QgRmxvYXRQb2ludCYgcCwgY29u
c3QgUmVuZGVyTGEKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgRmxvYXRQb2ludCByZW5kZXJl
ck1hcHBlZFJlc3VsdCA9IG1fbWFwcGluZy5sYXN0KCkubV9yZW5kZXJlci0+bG9jYWxUb0Fic29s
dXRlKHAsIG1fbWFwQ29vcmRpbmF0ZXNGbGFncyk7CiAgICAgQVNTRVJUKHJvdW5kZWRJbnRQb2lu
dChyZW5kZXJlck1hcHBlZFJlc3VsdCkgPT0gcm91bmRlZEludFBvaW50KHJlc3VsdCkpOwotLy8g
ICAgaWYgKHJvdW5kZWRJbnRQb2ludChyZW5kZXJlck1hcHBlZFJlc3VsdCkgIT0gcm91bmRlZElu
dFBvaW50KHJlc3VsdCkpCi0vLyAgICAgICAgZnByaW50ZihzdGRlcnIsICJNaXNtYXRjaGVkIHBv
aW50XG4iKTsKICNlbmRpZgogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE0MSw4ICsxMzksNiBA
QCBGbG9hdFF1YWQgUmVuZGVyR2VvbWV0cnlNYXA6Om1hcFRvQ29udGFpbmVyKGNvbnN0IEZsb2F0
UmVjdCYgcmVjdCwgY29uc3QgUmVuZGVyTAogICAgIC8vIEluc3BlY3RvciBjcmVhdGVzIHJlbmRl
cmVycyB3aXRoIG5lZ2F0aXZlIHdpZHRoIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODcxOTQ+LgogICAgIC8vIFRha2luZyBGbG9hdFF1YWQgYm91bmRzIGF2b2lkcyBz
cHVyaW91cyBhc3NlcnRpb25zIGJlY2F1c2Ugb2YgdGhhdC4KICAgICBBU1NFUlQoZW5jbG9zaW5n
SW50UmVjdChyZW5kZXJlck1hcHBlZFJlc3VsdCkgPT0gZW5jbG9zaW5nSW50UmVjdChGbG9hdFF1
YWQocmVzdWx0KS5ib3VuZGluZ0JveCgpKSk7Ci0vLyAgICBpZiAoZW5jbG9zaW5nSW50UmVjdChy
ZW5kZXJlck1hcHBlZFJlc3VsdCkgIT0gZW5jbG9zaW5nSW50UmVjdChGbG9hdFF1YWQocmVzdWx0
KS5ib3VuZGluZ0JveCgpKSkKLS8vICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIk1pc21hdGNoZWQg
cmVjdHNcbiIpOwogI2VuZGlmCiAKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMTg3LDExICsxODMs
OCBAQCB2b2lkIFJlbmRlckdlb21ldHJ5TWFwOjpwdXNoTWFwcGluZ3NUb0FuY2VzdG9yKGNvbnN0
IFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgUgogICAgIC8vIGZyb20gbWFwcGluZyB2aWEgbGF5
ZXJzLgogICAgIGJvb2wgY2FuQ29udmVydEluTGF5ZXJUcmVlID0gYW5jZXN0b3JMYXllciA/IGNh
bk1hcEJldHdlZW5SZW5kZXJlcnMobGF5ZXItPnJlbmRlcmVyKCksIGFuY2VzdG9yTGF5ZXItPnJl
bmRlcmVyKCkpIDogZmFsc2U7CiAKLS8vICAgIGZwcmludGYoc3RkZXJyLCAiUmVuZGVyR2VvbWV0
cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IgZnJvbSBsYXllciAlcCB0byBsYXllciAlcCwg
Y2FuQ29udmVydEluTGF5ZXJUcmVlPSVkXG4iLCBsYXllciwgYW5jZXN0b3JMYXllciwgY2FuQ29u
dmVydEluTGF5ZXJUcmVlKTsKLQogICAgIGlmIChjYW5Db252ZXJ0SW5MYXllclRyZWUpIHsKLSAg
ICAgICAgTGF5b3V0UG9pbnQgbGF5ZXJPZmZzZXQ7Ci0gICAgICAgIGxheWVyLT5jb252ZXJ0VG9M
YXllckNvb3JkcyhhbmNlc3RvckxheWVyLCBsYXllck9mZnNldCk7CisgICAgICAgIExheW91dFBv
aW50IGxheWVyT2Zmc2V0ID0gbGF5ZXItPm9mZnNldEZyb21BbmNlc3RvckxheWVyKGFuY2VzdG9y
TGF5ZXIpOwogICAgICAgICAKICAgICAgICAgLy8gVGhlIFJlbmRlclZpZXcgbXVzdCBiZSBwdXNo
ZWQgZmlyc3QuCiAgICAgICAgIGlmICghbV9tYXBwaW5nLnNpemUoKSkgewpAQCAtMjA5LDggKzIw
Miw2IEBAIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6OnB1c2hNYXBwaW5nc1RvQW5jZXN0b3IoY29u
c3QgUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBSCiAKIHZvaWQgUmVuZGVyR2VvbWV0cnlNYXA6
OnB1c2goY29uc3QgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgY29uc3QgTGF5b3V0U2l6ZSYgb2Zm
c2V0RnJvbUNvbnRhaW5lciwgYm9vbCBhY2N1bXVsYXRpbmdUcmFuc2Zvcm0sIGJvb2wgaXNOb25V
bmlmb3JtLCBib29sIGlzRml4ZWRQb3NpdGlvbiwgYm9vbCBoYXNUcmFuc2Zvcm0pCiB7Ci0vLyAg
ICBmcHJpbnRmKHN0ZGVyciwgIlJlbmRlckdlb21ldHJ5TWFwOjpwdXNoICVwICVkLCVkIGlzTm9u
VW5pZm9ybT0lZFxuIiwgcmVuZGVyZXIsIG9mZnNldEZyb21Db250YWluZXIud2lkdGgoKS50b0lu
dCgpLCBvZmZzZXRGcm9tQ29udGFpbmVyLmhlaWdodCgpLnRvSW50KCksIGlzTm9uVW5pZm9ybSk7
Ci0KICAgICBBU1NFUlQobV9pbnNlcnRpb25Qb3NpdGlvbiAhPSBub3RGb3VuZCk7CiAKICAgICBt
X21hcHBpbmcuaW5zZXJ0KG1faW5zZXJ0aW9uUG9zaXRpb24sIFJlbmRlckdlb21ldHJ5TWFwU3Rl
cChyZW5kZXJlciwgYWNjdW11bGF0aW5nVHJhbnNmb3JtLCBpc05vblVuaWZvcm0sIGlzRml4ZWRQ
b3NpdGlvbiwgaGFzVHJhbnNmb3JtKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmNwcAppbmRleCA0YjViYzBiMGRhMWY5YTkzYTE3MzQ4ZTE1ZmM5MzFlZmU0ZTI5MjI1Li44
M2Q5ZTQ2YTM2YTZkZWQ0MzFmYTQ0MDMxMDE3OWUxMjI1MGFlYTU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKQEAgLTM2MywxMCArMzYzLDcgQEAgTGF5b3V0UG9p
bnQgUmVuZGVyTGF5ZXI6OmNvbXB1dGVPZmZzZXRGcm9tUm9vdChib29sJiBoYXNMYXllck9mZnNl
dCkgY29uc3QKICAgICAgICAgICAgIHJldHVybiBMYXlvdXRQb2ludCgpOwogICAgIH0KICAgICBB
U1NFUlQocm9vdExheWVyID09IHJvb3QoKSk7Ci0KLSAgICBMYXlvdXRQb2ludCBvZmZzZXQ7Ci0g
ICAgcGFyZW50KCktPmNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RMYXllciwgb2Zmc2V0KTsKLSAg
ICByZXR1cm4gb2Zmc2V0OworICAgIHJldHVybiBwYXJlbnQoKS0+b2Zmc2V0RnJvbUFuY2VzdG9y
TGF5ZXIocm9vdExheWVyKTsKIH0KIAogdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlTGF5ZXJQb3Np
dGlvbnNBZnRlckxheW91dChjb25zdCBSZW5kZXJMYXllciogcm9vdExheWVyLCBVcGRhdGVMYXll
clBvc2l0aW9uc0ZsYWdzIGZsYWdzKQpAQCAtMzk1LDcgKzM5Miw3IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZUxheWVyUG9zaXRpb25zKFJlbmRlckdlb21ldHJ5TWFwKiBnZW9tZXRyeU1hcCwg
VXBkYXRlTGF5CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gRklYTUU6IEl0IGxvb2tz
IHN1c3BpY2lvdXMgdG8gY2FsbCBjb252ZXJ0VG9MYXllckNvb3JkcyBoZXJlCiAgICAgICAgICAg
ICAvLyBhcyBjYW5Vc2VDb252ZXJ0VG9MYXllckNvb3JkcyBtYXkgYmUgdHJ1ZSBmb3IgYW4gYW5j
ZXN0b3IgbGF5ZXIuCi0gICAgICAgICAgICBjb252ZXJ0VG9MYXllckNvb3Jkcyhyb290KCksIG9m
ZnNldEZyb21Sb290KTsKKyAgICAgICAgICAgIG9mZnNldEZyb21Sb290ID0gb2Zmc2V0RnJvbUFu
Y2VzdG9yTGF5ZXIocm9vdCgpKTsKICAgICAgICAgfQogICAgICAgICBwb3NpdGlvbk92ZXJmbG93
Q29udHJvbHModG9JbnRTaXplKHJvdW5kZWRJbnRQb2ludChvZmZzZXRGcm9tUm9vdCkpKTsKICAg
ICB9CkBAIC0xNTgyLDExICsxNTc5LDcgQEAgc3RhdGljIHZvaWQgZXhwYW5kQ2xpcFJlY3RGb3JS
ZWdpb25BbmRSZWZsZWN0aW9uKExheW91dFJlY3QmIGNsaXBSZWN0LCBjb25zdCBSZW4KICAgICAg
ICAgUmVuZGVyTGF5ZXIqIGZsb3dUaHJlYWRMYXllciA9IHJlZ2lvbi0+Zmxvd1RocmVhZCgpLT5s
YXllcigpOwogICAgICAgICBpZiAoIWxheWVyLT5yZWZsZWN0aW9uKCkgfHwgbGF5ZXItPnJlZmxl
Y3Rpb25MYXllcigpICE9IGZsb3dUaHJlYWRMYXllcikgewogICAgICAgICAgICAgTGF5b3V0UmVj
dCBmbG93VGhyZWFkQ2xpcFJlY3QgPSB0cmFuc3BhcmVuY3lDbGlwQm94KGZsb3dUaHJlYWRMYXll
ciwgcm9vdExheWVyLCB0cmFuc3BhcmVuY3lCZWhhdmlvciwgRGVzY2VuZGFudHNPZlRyYW5zcGFy
ZW5jeUNsaXBCb3gsIHBhaW50QmVoYXZpb3IpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBM
YXlvdXRQb2ludCBvZmZzZXRGcm9tUm9vdDsKLSAgICAgICAgICAgIGxheWVyLT5jb252ZXJ0VG9M
YXllckNvb3JkcyhmbG93VGhyZWFkTGF5ZXIsIG9mZnNldEZyb21Sb290KTsKLQotICAgICAgICAg
ICAgTGF5b3V0U2l6ZSBtb3ZlT2Zmc2V0ID0gKG9mZnNldEZyb21Sb290ICsgcmVnaW9uQ29udGFp
bmVyLT5jb250ZW50Qm94UmVjdCgpLmxvY2F0aW9uKCkpIC0gcmVnaW9uLT5mbG93VGhyZWFkUG9y
dGlvblJlY3QoKS5sb2NhdGlvbigpOworICAgICAgICAgICAgTGF5b3V0U2l6ZSBtb3ZlT2Zmc2V0
ID0gKGxheWVyLT5vZmZzZXRGcm9tQW5jZXN0b3JMYXllcihmbG93VGhyZWFkTGF5ZXIpICsgcmVn
aW9uQ29udGFpbmVyLT5jb250ZW50Qm94UmVjdCgpLmxvY2F0aW9uKCkpIC0gcmVnaW9uLT5mbG93
VGhyZWFkUG9ydGlvblJlY3QoKS5sb2NhdGlvbigpOwogICAgICAgICAgICAgZmxvd1RocmVhZENs
aXBSZWN0Lm1vdmUobW92ZU9mZnNldCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNsaXBS
ZWN0LnVuaXRlKGZsb3dUaHJlYWRDbGlwUmVjdCk7CkBAIC0xNjE1LDggKzE2MDgsNyBAQCBzdGF0
aWMgdm9pZCBleHBhbmRDbGlwUmVjdEZvckRlc2NlbmRhbnRzQW5kUmVmbGVjdGlvbihMYXlvdXRS
ZWN0JiBjbGlwUmVjdCwgY29ucwogICAgIC8vIEZJWE1FOiBBY2NlbGVyYXRlZCBjb21wb3NpdGlu
ZyB3aWxsIGV2ZW50dWFsbHkgd2FudCB0byBkbyBzb21ldGhpbmcgc21hcnQgaGVyZSB0byBhdm9p
ZCBpbmNvcnBvcmF0aW5nIHRoaXMKICAgICAvLyBzaXplIGludG8gdGhlIHBhcmVudCBsYXllci4K
ICAgICBpZiAobGF5ZXItPnJlbmRlcmVyKCkuaGFzUmVmbGVjdGlvbigpKSB7Ci0gICAgICAgIExh
eW91dFBvaW50IGRlbHRhOwotICAgICAgICBsYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocm9v
dExheWVyLCBkZWx0YSk7CisgICAgICAgIExheW91dFBvaW50IGRlbHRhID0gbGF5ZXItPm9mZnNl
dEZyb21BbmNlc3RvckxheWVyKHJvb3RMYXllcik7CiAgICAgICAgIGNsaXBSZWN0Lm1vdmUoLWRl
bHRhLngoKSwgLWRlbHRhLnkoKSk7CiAgICAgICAgIGNsaXBSZWN0LnVuaXRlKGxheWVyLT5yZW5k
ZXJCb3goKS0+cmVmbGVjdGVkUmVjdChjbGlwUmVjdCkpOwogICAgICAgICBjbGlwUmVjdC5tb3Zl
QnkoZGVsdGEpOwpAQCAtMTYzNyw4ICsxNjI5LDcgQEAgc3RhdGljIExheW91dFJlY3QgdHJhbnNw
YXJlbmN5Q2xpcEJveChjb25zdCBSZW5kZXJMYXllciogbGF5ZXIsIGNvbnN0IFJlbmRlckxheWUK
ICAgICAgICAgUmVuZGVyTGF5ZXI6OlBhZ2luYXRpb25JbmNsdXNpb25Nb2RlIG1vZGUgPSB0cmFu
c3BhcmVuY3lCZWhhdmlvciA9PSBIaXRUZXN0aW5nVHJhbnNwYXJlbmN5Q2xpcEJveCA/IFJlbmRl
ckxheWVyOjpJbmNsdWRlQ29tcG9zaXRlZFBhZ2luYXRlZExheWVycyA6IFJlbmRlckxheWVyOjpF
eGNsdWRlQ29tcG9zaXRlZFBhZ2luYXRlZExheWVyczsKICAgICAgICAgY29uc3QgUmVuZGVyTGF5
ZXIqIHBhZ2luYXRpb25MYXllciA9IHRyYW5zcGFyZW5jeU1vZGUgPT0gRGVzY2VuZGFudHNPZlRy
YW5zcGFyZW5jeUNsaXBCb3ggPyBsYXllci0+ZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKG1vZGUp
IDogMDsKICAgICAgICAgY29uc3QgUmVuZGVyTGF5ZXIqIHJvb3RMYXllckZvclRyYW5zZm9ybSA9
IHBhZ2luYXRpb25MYXllciA/IHBhZ2luYXRpb25MYXllciA6IHJvb3RMYXllcjsKLSAgICAgICAg
TGF5b3V0UG9pbnQgZGVsdGE7Ci0gICAgICAgIGxheWVyLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhy
b290TGF5ZXJGb3JUcmFuc2Zvcm0sIGRlbHRhKTsKKyAgICAgICAgTGF5b3V0UG9pbnQgZGVsdGEg
PSBsYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yTGF5ZXIocm9vdExheWVyRm9yVHJhbnNmb3JtKTsK
IAogICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUoZGVsdGEueCgpLCBkZWx0YS55KCkpOwpAQCAtMTY2MCwxMCArMTY1MSw3
IEBAIHN0YXRpYyBMYXlvdXRSZWN0IHRyYW5zcGFyZW5jeUNsaXBCb3goY29uc3QgUmVuZGVyTGF5
ZXIqIGxheWVyLCBjb25zdCBSZW5kZXJMYXllCiAgICAgICAgIC8vIGdldCBvdXIgdHJ1ZSBib3Vu
ZGluZyBib3guCiAgICAgICAgIFJlbmRlckZsb3dUaHJlYWQmIGVuY2xvc2luZ0Zsb3dUaHJlYWQg
PSB0b1JlbmRlckZsb3dUaHJlYWQocGFnaW5hdGlvbkxheWVyLT5yZW5kZXJlcigpKTsKICAgICAg
ICAgcmVzdWx0ID0gZW5jbG9zaW5nRmxvd1RocmVhZC5mcmFnbWVudHNCb3VuZGluZ0JveChyZXN1
bHQpOwotICAgICAgICAKLSAgICAgICAgTGF5b3V0UG9pbnQgcm9vdExheWVyRGVsdGE7Ci0gICAg
ICAgIHBhZ2luYXRpb25MYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCByb290
TGF5ZXJEZWx0YSk7Ci0gICAgICAgIHJlc3VsdC5tb3ZlQnkocm9vdExheWVyRGVsdGEpOworICAg
ICAgICByZXN1bHQubW92ZUJ5KHBhZ2luYXRpb25MYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yTGF5
ZXIocm9vdExheWVyKSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIApAQCAt
MTg3NiwxNSArMTg2NCwxMyBAQCB2b2lkIFJlbmRlckxheWVyOjppbnNlcnRPbmx5VGhpc0xheWVy
KCkKIAogdm9pZCBSZW5kZXJMYXllcjo6Y29udmVydFRvUGl4ZWxTbmFwcGVkTGF5ZXJDb29yZHMo
Y29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIEludFBvaW50JiByb3VuZGVkTG9jYXRp
b24sIENvbHVtbk9mZnNldEFkanVzdG1lbnQgYWRqdXN0Rm9yQ29sdW1ucykgY29uc3QKIHsKLSAg
ICBMYXlvdXRQb2ludCBsb2NhdGlvbiA9IHJvdW5kZWRMb2NhdGlvbjsKLSAgICBjb252ZXJ0VG9M
YXllckNvb3JkcyhhbmNlc3RvckxheWVyLCBsb2NhdGlvbiwgYWRqdXN0Rm9yQ29sdW1ucyk7Cisg
ICAgTGF5b3V0UG9pbnQgbG9jYXRpb24gPSBjb252ZXJ0VG9MYXllckNvb3JkcyhhbmNlc3Rvckxh
eWVyLCByb3VuZGVkTG9jYXRpb24sIGFkanVzdEZvckNvbHVtbnMpOwogICAgIHJvdW5kZWRMb2Nh
dGlvbiA9IHJvdW5kZWRJbnRQb2ludChsb2NhdGlvbik7CiB9CiAKIHZvaWQgUmVuZGVyTGF5ZXI6
OmNvbnZlcnRUb1BpeGVsU25hcHBlZExheWVyQ29vcmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNl
c3RvckxheWVyLCBJbnRSZWN0JiByb3VuZGVkUmVjdCwgQ29sdW1uT2Zmc2V0QWRqdXN0bWVudCBh
ZGp1c3RGb3JDb2x1bW5zKSBjb25zdAogewotICAgIExheW91dFJlY3QgcmVjdCA9IHJvdW5kZWRS
ZWN0OwotICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKGFuY2VzdG9yTGF5ZXIsIHJlY3QsIGFkanVz
dEZvckNvbHVtbnMpOworICAgIExheW91dFJlY3QgcmVjdCA9IGNvbnZlcnRUb0xheWVyQ29vcmRz
KGFuY2VzdG9yTGF5ZXIsIHJvdW5kZWRSZWN0LCBhZGp1c3RGb3JDb2x1bW5zKTsKICAgICByb3Vu
ZGVkUmVjdCA9IHBpeGVsU25hcHBlZEludFJlY3QocmVjdCk7CiB9CiAKQEAgLTE5MTksNyArMTkw
NSw3IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgUmVuZGVyTGF5ZXIqIGFjY3VtdWxhdGVPZmZzZXRU
b3dhcmRzQW5jZXN0b3IoY29uc3QgUmVuZGVyTGF5CiAgICAgLy8gZWxlbWVudCBpbiByZW5kZXIg
ZmxvdyB0aHJlYWQsIHdlIHdpbGwgaGl0IHRoZSBmaXhlZCBwb3NpdGlvbmVkIGNvbnRhaW5lciBi
ZWZvcmUgaGl0dGluZyB0aGUgYW5jZXN0b3IgbGF5ZXIuCiAgICAgaWYgKHBvc2l0aW9uID09IEZp
eGVkUG9zaXRpb24gJiYgIWZpeGVkRmxvd1RocmVhZENvbnRhaW5lcikgewogICAgICAgICAvLyBG
b3IgYSBmaXhlZCBsYXllcnMsIHdlIG5lZWQgdG8gd2FsayB1cCB0byB0aGUgcm9vdCB0byBzZWUg
aWYgdGhlcmUncyBhIGZpeGVkIHBvc2l0aW9uIGNvbnRhaW5lcgotICAgICAgICAvLyAoZS5nLiBh
IHRyYW5zZm9ybWVkIGxheWVyKS4gSXQncyBhbiBlcnJvciB0byBjYWxsIGNvbnZlcnRUb0xheWVy
Q29vcmRzKCkgYWNyb3NzIGEgbGF5ZXIgd2l0aCBhIHRyYW5zZm9ybSwKKyAgICAgICAgLy8gKGUu
Zy4gYSB0cmFuc2Zvcm1lZCBsYXllcikuIEl0J3MgYW4gZXJyb3IgdG8gY2FsbCBvZmZzZXRGcm9t
QW5jZXN0b3JMYXllcigpIGFjcm9zcyBhIGxheWVyIHdpdGggYSB0cmFuc2Zvcm0sCiAgICAgICAg
IC8vIHNvIHdlIHNob3VsZCBhbHdheXMgZmluZCB0aGUgYW5jZXN0b3IgYXQgb3IgYmVmb3JlIHdl
IGZpbmQgdGhlIGZpeGVkIHBvc2l0aW9uIGNvbnRhaW5lci4KICAgICAgICAgUmVuZGVyTGF5ZXIq
IGZpeGVkUG9zaXRpb25Db250YWluZXJMYXllciA9IDA7CiAgICAgICAgIGJvb2wgZm91bmRBbmNl
c3RvciA9IGZhbHNlOwpAQCAtMTkzNywxMiArMTkyMyw4IEBAIHN0YXRpYyBpbmxpbmUgY29uc3Qg
UmVuZGVyTGF5ZXIqIGFjY3VtdWxhdGVPZmZzZXRUb3dhcmRzQW5jZXN0b3IoY29uc3QgUmVuZGVy
TGF5CiAgICAgICAgIEFTU0VSVChmaXhlZFBvc2l0aW9uQ29udGFpbmVyTGF5ZXIpOyAvLyBXZSBz
aG91bGQgaGF2ZSBoaXQgdGhlIFJlbmRlclZpZXcncyBsYXllciBhdCBsZWFzdC4KIAogICAgICAg
ICBpZiAoZml4ZWRQb3NpdGlvbkNvbnRhaW5lckxheWVyICE9IGFuY2VzdG9yTGF5ZXIpIHsKLSAg
ICAgICAgICAgIExheW91dFBvaW50IGZpeGVkQ29udGFpbmVyQ29vcmRzOwotICAgICAgICAgICAg
bGF5ZXItPmNvbnZlcnRUb0xheWVyQ29vcmRzKGZpeGVkUG9zaXRpb25Db250YWluZXJMYXllciwg
Zml4ZWRDb250YWluZXJDb29yZHMpOwotCi0gICAgICAgICAgICBMYXlvdXRQb2ludCBhbmNlc3Rv
ckNvb3JkczsKLSAgICAgICAgICAgIGFuY2VzdG9yTGF5ZXItPmNvbnZlcnRUb0xheWVyQ29vcmRz
KGZpeGVkUG9zaXRpb25Db250YWluZXJMYXllciwgYW5jZXN0b3JDb29yZHMpOwotCisgICAgICAg
ICAgICBMYXlvdXRQb2ludCBmaXhlZENvbnRhaW5lckNvb3JkcyA9IGxheWVyLT5vZmZzZXRGcm9t
QW5jZXN0b3JMYXllcihmaXhlZFBvc2l0aW9uQ29udGFpbmVyTGF5ZXIpOworICAgICAgICAgICAg
TGF5b3V0UG9pbnQgYW5jZXN0b3JDb29yZHMgPSBhbmNlc3RvckxheWVyLT5vZmZzZXRGcm9tQW5j
ZXN0b3JMYXllcihmaXhlZFBvc2l0aW9uQ29udGFpbmVyTGF5ZXIpOwogICAgICAgICAgICAgbG9j
YXRpb24gKz0gKGZpeGVkQ29udGFpbmVyQ29vcmRzIC0gYW5jZXN0b3JDb29yZHMpOwogICAgICAg
ICAgICAgcmV0dXJuIGFuY2VzdG9yTGF5ZXI7CiAgICAgICAgIH0KQEAgLTE5OTUsMTMgKzE5Nzcs
OCBAQCBzdGF0aWMgaW5saW5lIGNvbnN0IFJlbmRlckxheWVyKiBhY2N1bXVsYXRlT2Zmc2V0VG93
YXJkc0FuY2VzdG9yKGNvbnN0IFJlbmRlckxheQogICAgICAgICAgICAgLy8gRm91bmQgYW5jZXN0
b3JMYXllciBiZWZvcmUgdGhlIGFicy4gcG9zaXRpb25lZCBjb250YWluZXIsIHNvIGNvbXB1dGUg
b2Zmc2V0IG9mIGJvdGggcmVsYXRpdmUKICAgICAgICAgICAgIC8vIHRvIGVuY2xvc2luZ1Bvc2l0
aW9uZWRBbmNlc3RvciBhbmQgc3VidHJhY3QuCiAgICAgICAgICAgICBSZW5kZXJMYXllciogcG9z
aXRpb25lZEFuY2VzdG9yID0gcGFyZW50TGF5ZXItPmVuY2xvc2luZ1Bvc2l0aW9uZWRBbmNlc3Rv
cigpOwotCi0gICAgICAgICAgICBMYXlvdXRQb2ludCB0aGlzQ29vcmRzOwotICAgICAgICAgICAg
bGF5ZXItPmNvbnZlcnRUb0xheWVyQ29vcmRzKHBvc2l0aW9uZWRBbmNlc3RvciwgdGhpc0Nvb3Jk
cyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIExheW91dFBvaW50IGFuY2VzdG9yQ29vcmRz
OwotICAgICAgICAgICAgYW5jZXN0b3JMYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocG9zaXRp
b25lZEFuY2VzdG9yLCBhbmNlc3RvckNvb3Jkcyk7Ci0KKyAgICAgICAgICAgIExheW91dFBvaW50
IHRoaXNDb29yZHMgPSBsYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yTGF5ZXIocG9zaXRpb25lZEFu
Y2VzdG9yKTsKKyAgICAgICAgICAgIExheW91dFBvaW50IGFuY2VzdG9yQ29vcmRzID0gYW5jZXN0
b3JMYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yTGF5ZXIocG9zaXRpb25lZEFuY2VzdG9yKTsKICAg
ICAgICAgICAgIGxvY2F0aW9uICs9ICh0aGlzQ29vcmRzIC0gYW5jZXN0b3JDb29yZHMpOwogICAg
ICAgICAgICAgcmV0dXJuIGFuY2VzdG9yTGF5ZXI7CiAgICAgICAgIH0KQEAgLTIwMjYsMjEgKzIw
MDMsMjkgQEAgc3RhdGljIGlubGluZSBjb25zdCBSZW5kZXJMYXllciogYWNjdW11bGF0ZU9mZnNl
dFRvd2FyZHNBbmNlc3Rvcihjb25zdCBSZW5kZXJMYXkKICAgICByZXR1cm4gcGFyZW50TGF5ZXI7
CiB9CiAKLXZvaWQgUmVuZGVyTGF5ZXI6OmNvbnZlcnRUb0xheWVyQ29vcmRzKGNvbnN0IFJlbmRl
ckxheWVyKiBhbmNlc3RvckxheWVyLCBMYXlvdXRQb2ludCYgbG9jYXRpb24sIENvbHVtbk9mZnNl
dEFkanVzdG1lbnQgYWRqdXN0Rm9yQ29sdW1ucykgY29uc3QKK0xheW91dFBvaW50IFJlbmRlckxh
eWVyOjpjb252ZXJ0VG9MYXllckNvb3Jkcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXll
ciwgY29uc3QgTGF5b3V0UG9pbnQmIGxvY2F0aW9uLCBDb2x1bW5PZmZzZXRBZGp1c3RtZW50IGFk
anVzdEZvckNvbHVtbnMpIGNvbnN0CiB7CiAgICAgaWYgKGFuY2VzdG9yTGF5ZXIgPT0gdGhpcykK
LSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gbG9jYXRpb247CiAKICAgICBjb25zdCBS
ZW5kZXJMYXllciogY3VyckxheWVyID0gdGhpczsKKyAgICBMYXlvdXRQb2ludCBsb2NhdGlvbklu
TGF5ZXJDb29yZHMgPSBsb2NhdGlvbjsKICAgICB3aGlsZSAoY3VyckxheWVyICYmIGN1cnJMYXll
ciAhPSBhbmNlc3RvckxheWVyKQotICAgICAgICBjdXJyTGF5ZXIgPSBhY2N1bXVsYXRlT2Zmc2V0
VG93YXJkc0FuY2VzdG9yKGN1cnJMYXllciwgYW5jZXN0b3JMYXllciwgbG9jYXRpb24sIGFkanVz
dEZvckNvbHVtbnMpOworICAgICAgICBjdXJyTGF5ZXIgPSBhY2N1bXVsYXRlT2Zmc2V0VG93YXJk
c0FuY2VzdG9yKGN1cnJMYXllciwgYW5jZXN0b3JMYXllciwgbG9jYXRpb25JbkxheWVyQ29vcmRz
LCBhZGp1c3RGb3JDb2x1bW5zKTsKKyAgICByZXR1cm4gbG9jYXRpb25JbkxheWVyQ29vcmRzOwog
fQogCi12b2lkIFJlbmRlckxheWVyOjpjb252ZXJ0VG9MYXllckNvb3Jkcyhjb25zdCBSZW5kZXJM
YXllciogYW5jZXN0b3JMYXllciwgTGF5b3V0UmVjdCYgcmVjdCwgQ29sdW1uT2Zmc2V0QWRqdXN0
bWVudCBhZGp1c3RGb3JDb2x1bW5zKSBjb25zdAorTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6Y29u
dmVydFRvTGF5ZXJDb29yZHMoY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9yTGF5ZXIsIGNvbnN0
IExheW91dFJlY3QmIHJlY3QsIENvbHVtbk9mZnNldEFkanVzdG1lbnQgYWRqdXN0Rm9yQ29sdW1u
cykgY29uc3QKIHsKLSAgICBMYXlvdXRQb2ludCBkZWx0YTsKLSAgICBjb252ZXJ0VG9MYXllckNv
b3JkcyhhbmNlc3RvckxheWVyLCBkZWx0YSwgYWRqdXN0Rm9yQ29sdW1ucyk7Ci0gICAgcmVjdC5t
b3ZlKC1kZWx0YS54KCksIC1kZWx0YS55KCkpOworICAgIExheW91dFBvaW50IGRlbHRhID0gY29u
dmVydFRvTGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgTGF5b3V0UG9pbnQoKSwgYWRqdXN0Rm9y
Q29sdW1ucyk7CisgICAgTGF5b3V0UmVjdCByZWN0SW5MYXllckNvb3JkcyA9IHJlY3Q7CisgICAg
cmVjdEluTGF5ZXJDb29yZHMubW92ZSgtZGVsdGEueCgpLCAtZGVsdGEueSgpKTsKKyAgICByZXR1
cm4gcmVjdEluTGF5ZXJDb29yZHM7Cit9CisKK0xheW91dFBvaW50IFJlbmRlckxheWVyOjpvZmZz
ZXRGcm9tQW5jZXN0b3JMYXllcihjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllcikgY29u
c3QKK3sKKyAgICByZXR1cm4gY29udmVydFRvTGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgTGF5
b3V0UG9pbnQoKSk7CiB9CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0zNTkzLDkgKzM1NzgsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpjbGlwVG9SZWN0KFJlbmRlckxheWVyKiByb290TGF5ZXIsIEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgYwogICAgIC8vIGNvbnRhaW5pbmcgYmxvY2sgY2hhaW4g
c28gd2UgY2hlY2sgdGhhdCBhbHNvLgogICAgIGZvciAoUmVuZGVyTGF5ZXIqIGxheWVyID0gcnVs
ZSA9PSBJbmNsdWRlU2VsZkZvckJvcmRlclJhZGl1cyA/IHRoaXMgOiBwYXJlbnQoKTsgbGF5ZXI7
IGxheWVyID0gbGF5ZXItPnBhcmVudCgpKSB7CiAgICAgICAgIGlmIChsYXllci0+cmVuZGVyZXIo
KS5oYXNPdmVyZmxvd0NsaXAoKSAmJiBsYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLmhhc0JvcmRl
clJhZGl1cygpICYmIGluQ29udGFpbmluZ0Jsb2NrQ2hhaW4odGhpcywgbGF5ZXIpKSB7Ci0gICAg
ICAgICAgICAgICAgTGF5b3V0UG9pbnQgZGVsdGE7Ci0gICAgICAgICAgICAgICAgbGF5ZXItPmNv
bnZlcnRUb0xheWVyQ29vcmRzKHJvb3RMYXllciwgZGVsdGEpOwotICAgICAgICAgICAgICAgIGNv
bnRleHQtPmNsaXBSb3VuZGVkUmVjdChsYXllci0+cmVuZGVyZXIoKS5zdHlsZSgpLmdldFJvdW5k
ZWRJbm5lckJvcmRlckZvcihMYXlvdXRSZWN0KGRlbHRhLCBsYXllci0+c2l6ZSgpKSkucGl4ZWxT
bmFwcGVkUm91bmRlZFJlY3RGb3JQYWludGluZyhkZXZpY2VTY2FsZUZhY3RvcikpOworICAgICAg
ICAgICAgY29udGV4dC0+Y2xpcFJvdW5kZWRSZWN0KGxheWVyLT5yZW5kZXJlcigpLnN0eWxlKCku
Z2V0Um91bmRlZElubmVyQm9yZGVyRm9yKExheW91dFJlY3QobGF5ZXItPm9mZnNldEZyb21BbmNl
c3RvckxheWVyKHJvb3RMYXllciksIGxheWVyLT5zaXplKCkpKS5waXhlbFNuYXBwZWRSb3VuZGVk
UmVjdEZvclBhaW50aW5nKGRldmljZVNjYWxlRmFjdG9yKSk7CiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAobGF5ZXIgPT0gcm9vdExheWVyKQpAQCAtMzk5OSw5ICszOTgyLDcgQEAgdm9pZCBSZW5k
ZXJMYXllcjo6cGFpbnRMYXllckNvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29u
c3QgTGF5ZXJQYWludGkKICAgICAgICAgJiYgcmVuZGVyZXIoKS5maXhlZFBvc2l0aW9uZWRXaXRo
TmFtZWRGbG93Q29udGFpbmluZ0Jsb2NrKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIExheW91
dFBvaW50IG9mZnNldEZyb21Sb290OwotICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKHBhaW50aW5n
SW5mby5yb290TGF5ZXIsIG9mZnNldEZyb21Sb290KTsKLQorICAgIExheW91dFBvaW50IG9mZnNl
dEZyb21Sb290ID0gb2Zmc2V0RnJvbUFuY2VzdG9yTGF5ZXIocGFpbnRpbmdJbmZvLnJvb3RMYXll
cik7CiAgICAgTGF5b3V0UmVjdCByb290UmVsYXRpdmVCb3VuZHM7CiAgICAgYm9vbCByb290UmVs
YXRpdmVCb3VuZHNDb21wdXRlZCA9IGZhbHNlOwogCkBAIC00MTM3LDggKzQxMTgsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwYWludExheWVyQnlBcHBseWluZ1RyYW5zZm9ybShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0CiAgICAgLy8gVGhpcyBpbnZvbHZlcyBzdWJ0cmFjdGluZyBvdXQg
dGhlIHBvc2l0aW9uIG9mIHRoZSBsYXllciBpbiBvdXIgY3VycmVudCBjb29yZGluYXRlIHNwYWNl
LCBidXQgcHJlc2VydmluZwogICAgIC8vIHRoZSBhY2N1bXVsYXRlZCBlcnJvciBmb3Igc3ViLXBp
eGVsIGxheW91dC4KICAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IHJlbmRlcmVyKCkuZG9j
dW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpOwotICAgIExheW91dFBvaW50IG9mZnNldEZyb21Q
YXJlbnQ7Ci0gICAgY29udmVydFRvTGF5ZXJDb29yZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwg
b2Zmc2V0RnJvbVBhcmVudCk7CisgICAgTGF5b3V0UG9pbnQgb2Zmc2V0RnJvbVBhcmVudCA9IG9m
ZnNldEZyb21BbmNlc3RvckxheWVyKHBhaW50aW5nSW5mby5yb290TGF5ZXIpOwogICAgIG9mZnNl
dEZyb21QYXJlbnQubW92ZUJ5KHRyYW5zbGF0aW9uT2Zmc2V0KTsKICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCB0cmFuc2Zvcm0ocmVuZGVyYWJsZVRyYW5zZm9ybShwYWludGluZ0luZm8ucGFpbnRC
ZWhhdmlvcikpOwogICAgIEZsb2F0UG9pbnQgZGV2aWNlUGl4ZWxTbmFwcGVkT2Zmc2V0RnJvbVBh
cmVudCA9IHJvdW5kZWRGb3JQYWludGluZyhvZmZzZXRGcm9tUGFyZW50LCBkZXZpY2VTY2FsZUZh
Y3Rvcik7CkBAIC00MjE4LDggKzQxOTgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpjb2xsZWN0RnJh
Z21lbnRzKExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMsIGNvbnN0IFJlbmRlckxheWVyKgogICAg
IH0KICAgICAKICAgICAvLyBDb21wdXRlIG91ciBvZmZzZXQgd2l0aGluIHRoZSBlbmNsb3Npbmcg
cGFnaW5hdGlvbiBsYXllci4KLSAgICBMYXlvdXRQb2ludCBvZmZzZXRXaXRoaW5QYWdpbmF0ZWRM
YXllcjsKLSAgICBjb252ZXJ0VG9MYXllckNvb3JkcyhwYWdpbmF0aW9uTGF5ZXIsIG9mZnNldFdp
dGhpblBhZ2luYXRlZExheWVyKTsKKyAgICBMYXlvdXRQb2ludCBvZmZzZXRXaXRoaW5QYWdpbmF0
ZWRMYXllciA9IG9mZnNldEZyb21BbmNlc3RvckxheWVyKHBhZ2luYXRpb25MYXllcik7CiAgICAg
CiAgICAgLy8gQ2FsY3VsYXRlIGNsaXAgcmVjdHMgcmVsYXRpdmUgdG8gdGhlIGVuY2xvc2luZ1Bh
Z2luYXRpb25MYXllci4gVGhlIHB1cnBvc2Ugb2YgdGhpcyBjYWxsIGlzIHRvIGRldGVybWluZSBv
dXIgYm91bmRzIGNsaXBwZWQgdG8gaW50ZXJtZWRpYXRlCiAgICAgLy8gbGF5ZXJzIGJldHdlZW4g
dXMgYW5kIHRoZSBwYWdpbmF0aW9uIGNvbnRleHQuIEl0J3MgaW1wb3J0YW50IHRvIG1pbmltaXpl
IHRoZSBudW1iZXIgb2YgZnJhZ21lbnRzIHdlIG5lZWQgdG8gY3JlYXRlIGFuZCB0aGlzIGhlbHBz
IHdpdGggdGhhdC4KQEAgLTQyNDMsOCArNDIyMiw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNvbGxl
Y3RGcmFnbWVudHMoTGF5ZXJGcmFnbWVudHMmIGZyYWdtZW50cywgY29uc3QgUmVuZGVyTGF5ZXIq
CiAgICAgICAgIExheW91dFJlY3QgbGF5ZXJGcmFnbWVudEJvdW5kaW5nQm94SW5QYXJlbnRQYWdp
bmF0aW9uTGF5ZXIgPSBlbmNsb3NpbmdGbG93VGhyZWFkLmZyYWdtZW50c0JvdW5kaW5nQm94KGxh
eWVyQm91bmRpbmdCb3hJbkZsb3dUaHJlYWQpOwogICAgICAgICAKICAgICAgICAgLy8gQ29udmVy
dCB0byBiZSBpbiB0aGUgYW5jZXN0b3IgcGFnaW5hdGlvbiBjb250ZXh0J3MgY29vcmRpbmF0ZSBz
cGFjZS4KLSAgICAgICAgTGF5b3V0UG9pbnQgb2Zmc2V0V2l0aGluUGFyZW50UGFnaW5hdGVkTGF5
ZXI7Ci0gICAgICAgIHBhZ2luYXRpb25MYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocGFyZW50
UGFnaW5hdGlvbkxheWVyLCBvZmZzZXRXaXRoaW5QYXJlbnRQYWdpbmF0ZWRMYXllcik7CisgICAg
ICAgIExheW91dFBvaW50IG9mZnNldFdpdGhpblBhcmVudFBhZ2luYXRlZExheWVyID0gcGFnaW5h
dGlvbkxheWVyLT5vZmZzZXRGcm9tQW5jZXN0b3JMYXllcihwYXJlbnRQYWdpbmF0aW9uTGF5ZXIp
OwogICAgICAgICBsYXllckZyYWdtZW50Qm91bmRpbmdCb3hJblBhcmVudFBhZ2luYXRpb25MYXll
ci5tb3ZlQnkob2Zmc2V0V2l0aGluUGFyZW50UGFnaW5hdGVkTGF5ZXIpOwogICAgICAgICAKICAg
ICAgICAgLy8gTm93IGNvbGxlY3QgYW5jZXN0b3IgZnJhZ21lbnRzLgpAQCAtNDI5NSw4ICs0Mjcz
LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29sbGVjdEZyYWdtZW50cyhMYXllckZyYWdtZW50cyYg
ZnJhZ21lbnRzLCBjb25zdCBSZW5kZXJMYXllcioKICAgICB9CiAgICAgCiAgICAgLy8gU2hpZnQg
dGhlIGRpcnR5IHJlY3QgaW50byBmbG93IHRocmVhZCBjb29yZGluYXRlcy4KLSAgICBMYXlvdXRQ
b2ludCBvZmZzZXRPZlBhZ2luYXRpb25MYXllckZyb21Sb290OwotICAgIGVuY2xvc2luZ1BhZ2lu
YXRpb25MYXllcihpbmNsdXNpb25Nb2RlKS0+Y29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVy
LCBvZmZzZXRPZlBhZ2luYXRpb25MYXllckZyb21Sb290KTsKKyAgICBMYXlvdXRQb2ludCBvZmZz
ZXRPZlBhZ2luYXRpb25MYXllckZyb21Sb290ID0gZW5jbG9zaW5nUGFnaW5hdGlvbkxheWVyKGlu
Y2x1c2lvbk1vZGUpLT5vZmZzZXRGcm9tQW5jZXN0b3JMYXllcihyb290TGF5ZXIpOwogICAgIExh
eW91dFJlY3QgZGlydHlSZWN0SW5GbG93VGhyZWFkKGRpcnR5UmVjdCk7CiAgICAgZGlydHlSZWN0
SW5GbG93VGhyZWFkLm1vdmVCeSgtb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdCk7CiAK
QEAgLTQzNzAsNyArNDM0Nyw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnBhaW50VHJhbnNmb3JtZWRM
YXllckludG9GcmFnbWVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjCiAgICAgICAgIAog
ICAgICAgICAvLyBOb3cgY29tcHV0ZSB0aGUgY2xpcHMgd2l0aGluIGEgZ2l2ZW4gZnJhZ21lbnQK
ICAgICAgICAgaWYgKHBhcmVudCgpICE9IHBhZ2luYXRlZExheWVyKSB7Ci0gICAgICAgICAgICBw
YWdpbmF0ZWRMYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocGFpbnRpbmdJbmZvLnJvb3RMYXll
ciwgb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdCk7CisgICAgICAgICAgICBvZmZzZXRP
ZlBhZ2luYXRpb25MYXllckZyb21Sb290ID0gcGFnaW5hdGVkTGF5ZXItPmNvbnZlcnRUb0xheWVy
Q29vcmRzKHBhaW50aW5nSW5mby5yb290TGF5ZXIsIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJv
bVJvb3QpOwogICAgIAogICAgICAgICAgICAgQ2xpcFJlY3RzQ29udGV4dCBjbGlwUmVjdHNDb250
ZXh0KHBhZ2luYXRlZExheWVyLCAocGFpbnRGbGFncyAmIFBhaW50TGF5ZXJUZW1wb3JhcnlDbGlw
UmVjdHMpID8gVGVtcG9yYXJ5Q2xpcFJlY3RzIDogUGFpbnRpbmdDbGlwUmVjdHMsCiAgICAgICAg
ICAgICAgICAgSWdub3JlT3ZlcmxheVNjcm9sbGJhclNpemUsIChwYWludEZsYWdzICYgUGFpbnRM
YXllclBhaW50aW5nT3ZlcmZsb3dDb250ZW50cykgPyBJZ25vcmVPdmVyZmxvd0NsaXAgOiBSZXNw
ZWN0T3ZlcmZsb3dDbGlwKTsKQEAgLTQ2MjYsMTIgKzQ2MDMsMTIgQEAgUGFzc1JlZlB0cjxIaXRU
ZXN0aW5nVHJhbnNmb3JtU3RhdGU+IFJlbmRlckxheWVyOjpjcmVhdGVMb2NhbFRyYW5zZm9ybVN0
YXRlKFJlbmQKICAgICBpZiAoY29udGFpbmVyVHJhbnNmb3JtU3RhdGUpIHsKICAgICAgICAgLy8g
SWYgd2UncmUgYWxyZWFkeSBjb21wdXRpbmcgdHJhbnNmb3JtIHN0YXRlLCB0aGVuIGl0J3MgcmVs
YXRpdmUgdG8gdGhlIGNvbnRhaW5lciAod2hpY2ggd2Uga25vdyBpcyBub24tbnVsbCkuCiAgICAg
ICAgIHRyYW5zZm9ybVN0YXRlID0gSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlOjpjcmVhdGUoKmNv
bnRhaW5lclRyYW5zZm9ybVN0YXRlKTsKLSAgICAgICAgY29udmVydFRvTGF5ZXJDb29yZHMoY29u
dGFpbmVyTGF5ZXIsIG9mZnNldCk7CisgICAgICAgIG9mZnNldCA9IG9mZnNldEZyb21BbmNlc3Rv
ckxheWVyKGNvbnRhaW5lckxheWVyKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBJZiB0aGlz
IGlzIHRoZSBmaXJzdCB0aW1lIHdlIG5lZWQgdG8gbWFrZSB0cmFuc2Zvcm0gc3RhdGUsIHRoZW4g
YmFzZSBpdCBvZmYgb2YgaGl0VGVzdExvY2F0aW9uLAogICAgICAgICAvLyB3aGljaCBpcyByZWxh
dGl2ZSB0byByb290TGF5ZXIuCiAgICAgICAgIHRyYW5zZm9ybVN0YXRlID0gSGl0VGVzdGluZ1Ry
YW5zZm9ybVN0YXRlOjpjcmVhdGUoaGl0VGVzdExvY2F0aW9uLnRyYW5zZm9ybWVkUG9pbnQoKSwg
aGl0VGVzdExvY2F0aW9uLnRyYW5zZm9ybWVkUmVjdCgpLCBGbG9hdFF1YWQoaGl0VGVzdFJlY3Qp
KTsKLSAgICAgICAgY29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVyLCBvZmZzZXQpOworICAg
ICAgICBvZmZzZXQgPSBvZmZzZXRGcm9tQW5jZXN0b3JMYXllcihyb290TGF5ZXIpOwogICAgIH0K
ICAgICBvZmZzZXQubW92ZUJ5KHRyYW5zbGF0aW9uT2Zmc2V0KTsKIApAQCAtNDk2OSw3ICs0OTQ2
LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0VHJhbnNmb3JtZWRMYXllcklu
RnJhZ21lbnRzKFJlbmRlckxheWVyKiByb290TGEKICAgICAgICAgCiAgICAgICAgIC8vIE5vdyBj
b21wdXRlIHRoZSBjbGlwcyB3aXRoaW4gYSBnaXZlbiBmcmFnbWVudAogICAgICAgICBpZiAocGFy
ZW50KCkgIT0gcGFnaW5hdGVkTGF5ZXIpIHsKLSAgICAgICAgICAgIHBhZ2luYXRlZExheWVyLT5j
b252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIG9mZnNldE9mUGFnaW5hdGlvbkxheWVyRnJv
bVJvb3QpOworICAgICAgICAgICAgb2Zmc2V0T2ZQYWdpbmF0aW9uTGF5ZXJGcm9tUm9vdCA9IHBh
Z2luYXRlZExheWVyLT5jb252ZXJ0VG9MYXllckNvb3Jkcyhyb290TGF5ZXIsIG9mZnNldE9mUGFn
aW5hdGlvbkxheWVyRnJvbVJvb3QpOwogICAgIAogICAgICAgICAgICAgQ2xpcFJlY3RzQ29udGV4
dCBjbGlwUmVjdHNDb250ZXh0KHBhZ2luYXRlZExheWVyLCBSb290UmVsYXRpdmVDbGlwUmVjdHMs
IEluY2x1ZGVPdmVybGF5U2Nyb2xsYmFyU2l6ZSk7CiAgICAgICAgICAgICBMYXlvdXRSZWN0IHBh
cmVudENsaXBSZWN0ID0gYmFja2dyb3VuZENsaXBSZWN0KGNsaXBSZWN0c0NvbnRleHQpLnJlY3Qo
KTsKQEAgLTUzMDUsNyArNTI4Miw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OmNhbGN1bGF0ZVJlY3Rz
KGNvbnN0IENsaXBSZWN0c0NvbnRleHQmIGNsaXBSZWN0c0NvbnRleHQsIGNvbnN0CiAgICAgaWYg
KG9mZnNldEZyb21Sb290KQogICAgICAgICBvZmZzZXQgPSAqb2Zmc2V0RnJvbVJvb3Q7CiAgICAg
ZWxzZQotICAgICAgICBjb252ZXJ0VG9MYXllckNvb3JkcyhjbGlwUmVjdHNDb250ZXh0LnJvb3RM
YXllciwgb2Zmc2V0KTsKKyAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0RnJvbUFuY2VzdG9yTGF5ZXIo
Y2xpcFJlY3RzQ29udGV4dC5yb290TGF5ZXIpOwogCiAKICAgICBSZW5kZXJOYW1lZEZsb3dGcmFn
bWVudCogbmFtZWRGbG93RnJhZ21lbnQgPSBjdXJyZW50UmVuZGVyTmFtZWRGbG93RnJhZ21lbnQo
KTsKQEAgLTU0MzcsOSArNTQxNCw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5ZXI6OmxvY2FsQ2xp
cFJlY3QoYm9vbCYgY2xpcEV4Y2VlZHNCb3VuZHMpIGNvbnN0CiAgICAgLy8gRklYTUU6IGJvcmRl
ci1yYWRpdXMgbm90IGFjY291bnRlZCBmb3IuCiAgICAgLy8gRklYTUU6IFJlZ2lvbnMgbm90IGFj
Y291bnRlZCBmb3IuCiAgICAgUmVuZGVyTGF5ZXIqIGNsaXBwaW5nUm9vdExheWVyID0gY2xpcHBp
bmdSb290Rm9yUGFpbnRpbmcoKTsKLQotICAgIExheW91dFBvaW50IG9mZnNldEZyb21Sb290Owot
ICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKGNsaXBwaW5nUm9vdExheWVyLCBvZmZzZXRGcm9tUm9v
dCk7CisgICAgTGF5b3V0UG9pbnQgb2Zmc2V0RnJvbVJvb3QgPSBvZmZzZXRGcm9tQW5jZXN0b3JM
YXllcihjbGlwcGluZ1Jvb3RMYXllcik7CiAKICAgICBMYXlvdXRSZWN0IGxheWVyQm91bmRzOwog
ICAgIENsaXBSZWN0IGJhY2tncm91bmRSZWN0LCBmb3JlZ3JvdW5kUmVjdCwgb3V0bGluZVJlY3Q7
CkBAIC01NDU2LDEwICs1NDMxLDcgQEAgTGF5b3V0UmVjdCBSZW5kZXJMYXllcjo6bG9jYWxDbGlw
UmVjdChib29sJiBjbGlwRXhjZWVkc0JvdW5kcykgY29uc3QKICAgICAgICAgY2xpcEV4Y2VlZHNC
b3VuZHMgPSAhY2xpcFJlY3QuY29udGFpbnMoY3NzQ2xpcFJlY3QpOwogICAgIH0KIAotICAgIExh
eW91dFBvaW50IGNsaXBwaW5nUm9vdE9mZnNldDsKLSAgICBjb252ZXJ0VG9MYXllckNvb3Jkcyhj
bGlwcGluZ1Jvb3RMYXllciwgY2xpcHBpbmdSb290T2Zmc2V0KTsKLSAgICBjbGlwUmVjdC5tb3Zl
QnkoLWNsaXBwaW5nUm9vdE9mZnNldCk7Ci0KKyAgICBjbGlwUmVjdC5tb3ZlQnkoLW9mZnNldEZy
b21BbmNlc3RvckxheWVyKGNsaXBwaW5nUm9vdExheWVyKSk7CiAgICAgcmV0dXJuIGNsaXBSZWN0
OwogfQogCkBAIC01NTk1LDkgKzU1NjcsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpib3Vu
ZGluZ0JveChjb25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgQ2FsY3VsYXRlTAogICAg
IHdoaWxlIChwYWdpbmF0aW9uTGF5ZXIpIHsKICAgICAgICAgLy8gU3BsaXQgb3VyIGJveCB1cCBp
bnRvIHRoZSBhY3R1YWwgZnJhZ21lbnQgYm94ZXMgdGhhdCByZW5kZXIgaW4gdGhlIGNvbHVtbnMv
cGFnZXMgYW5kIHVuaXRlIHRob3NlIHRvZ2V0aGVyIHRvCiAgICAgICAgIC8vIGdldCBvdXIgdHJ1
ZSBib3VuZGluZyBib3guCi0gICAgICAgIExheW91dFBvaW50IG9mZnNldFdpdGhpblBhZ2luYXRp
b25MYXllcjsKLSAgICAgICAgY2hpbGRMYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMocGFnaW5h
dGlvbkxheWVyLCBvZmZzZXRXaXRoaW5QYWdpbmF0aW9uTGF5ZXIpOwotICAgICAgICByZXN1bHQu
bW92ZUJ5KG9mZnNldFdpdGhpblBhZ2luYXRpb25MYXllcik7CisgICAgICAgIHJlc3VsdC5tb3Zl
QnkoY2hpbGRMYXllci0+b2Zmc2V0RnJvbUFuY2VzdG9yTGF5ZXIocGFnaW5hdGlvbkxheWVyKSk7
CiAKICAgICAgICAgUmVuZGVyRmxvd1RocmVhZCYgZW5jbG9zaW5nRmxvd1RocmVhZCA9IHRvUmVu
ZGVyRmxvd1RocmVhZChwYWdpbmF0aW9uTGF5ZXItPnJlbmRlcmVyKCkpOwogICAgICAgICByZXN1
bHQgPSBlbmNsb3NpbmdGbG93VGhyZWFkLmZyYWdtZW50c0JvdW5kaW5nQm94KHJlc3VsdCk7CkBA
IC01NjA3LDkgKzU1NzcsNyBAQCBMYXlvdXRSZWN0IFJlbmRlckxheWVyOjpib3VuZGluZ0JveChj
b25zdCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciwgQ2FsY3VsYXRlTAogICAgIH0KIAogICAg
IGlmIChpc1BhZ2luYXRlZCkgewotICAgICAgICBMYXlvdXRQb2ludCBkZWx0YTsKLSAgICAgICAg
Y2hpbGRMYXllci0+Y29udmVydFRvTGF5ZXJDb29yZHMoYW5jZXN0b3JMYXllciwgZGVsdGEpOwot
ICAgICAgICByZXN1bHQubW92ZUJ5KGRlbHRhKTsKKyAgICAgICAgcmVzdWx0Lm1vdmVCeShjaGls
ZExheWVyLT5vZmZzZXRGcm9tQW5jZXN0b3JMYXllcihhbmNlc3RvckxheWVyKSk7CiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIApAQCAtNTYxNyw3ICs1NTg1LDcgQEAgTGF5b3V0
UmVjdCBSZW5kZXJMYXllcjo6Ym91bmRpbmdCb3goY29uc3QgUmVuZGVyTGF5ZXIqIGFuY2VzdG9y
TGF5ZXIsIENhbGN1bGF0ZUwKICAgICBpZiAob2Zmc2V0RnJvbVJvb3QpCiAgICAgICAgIGRlbHRh
ID0gKm9mZnNldEZyb21Sb290OwogICAgIGVsc2UKLSAgICAgICAgY29udmVydFRvTGF5ZXJDb29y
ZHMoYW5jZXN0b3JMYXllciwgZGVsdGEpOworICAgICAgICBkZWx0YSA9IG9mZnNldEZyb21BbmNl
c3RvckxheWVyKGFuY2VzdG9yTGF5ZXIpOwogICAgIAogICAgIHJlc3VsdC5tb3ZlQnkoZGVsdGEp
OwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01NjcyLDkgKzU2NDAsNyBAQCBMYXlvdXRSZWN0IFJl
bmRlckxheWVyOjpjYWxjdWxhdGVMYXllckJvdW5kcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0
b3JMYXllciwgYwogICAgICAgICAgICAgaWYgKChmbGFncyAmIEluY2x1ZGVTZWxmVHJhbnNmb3Jt
KSAmJiBwYWludHNXaXRoVHJhbnNmb3JtKFBhaW50QmVoYXZpb3JOb3JtYWwpKQogICAgICAgICAg
ICAgICAgIGxvY2FsQ2xpcFJlY3QgPSB0cmFuc2Zvcm0oKS0+bWFwUmVjdChsb2NhbENsaXBSZWN0
KTsKIAotICAgICAgICAgICAgTGF5b3V0UG9pbnQgYW5jZXN0b3JSZWxPZmZzZXQ7Ci0gICAgICAg
ICAgICBjb252ZXJ0VG9MYXllckNvb3JkcyhhbmNlc3RvckxheWVyLCBhbmNlc3RvclJlbE9mZnNl
dCk7Ci0gICAgICAgICAgICBsb2NhbENsaXBSZWN0Lm1vdmVCeShhbmNlc3RvclJlbE9mZnNldCk7
CisgICAgICAgICAgICBsb2NhbENsaXBSZWN0Lm1vdmVCeShvZmZzZXRGcm9tQW5jZXN0b3JMYXll
cihhbmNlc3RvckxheWVyKSk7CiAgICAgICAgICAgICByZXR1cm4gbG9jYWxDbGlwUmVjdDsKICAg
ICAgICAgfQogICAgIH0KQEAgLTU3NTIsNyArNTcxOCw3IEBAIExheW91dFJlY3QgUmVuZGVyTGF5
ZXI6OmNhbGN1bGF0ZUxheWVyQm91bmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVy
LCBjCiAgICAgaWYgKG9mZnNldEZyb21Sb290KQogICAgICAgICBhbmNlc3RvclJlbE9mZnNldCA9
ICpvZmZzZXRGcm9tUm9vdDsKICAgICBlbHNlCi0gICAgICAgIGNvbnZlcnRUb0xheWVyQ29vcmRz
KGFuY2VzdG9yTGF5ZXIsIGFuY2VzdG9yUmVsT2Zmc2V0KTsKKyAgICAgICAgYW5jZXN0b3JSZWxP
ZmZzZXQgPSBvZmZzZXRGcm9tQW5jZXN0b3JMYXllcihhbmNlc3RvckxheWVyKTsKICAgICB1bmlv
bkJvdW5kcy5tb3ZlQnkoYW5jZXN0b3JSZWxPZmZzZXQpOwogICAgIAogICAgIHJldHVybiB1bmlv
bkJvdW5kczsKQEAgLTU4OTYsMTAgKzU4NjIsOCBAQCBib29sIFJlbmRlckxheWVyOjpsaXN0QmFj
a2dyb3VuZElzS25vd25Ub0JlT3BhcXVlSW5SZWN0KGNvbnN0IFZlY3RvcjxSZW5kZXJMYXllcgog
ICAgICAgICBpZiAoIWNoaWxkTGF5ZXItPmNhblVzZUNvbnZlcnRUb0xheWVyQ29vcmRzKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBMYXlvdXRQb2ludCBjaGlsZE9mZnNldDsK
ICAgICAgICAgTGF5b3V0UmVjdCBjaGlsZExvY2FsUmVjdChsb2NhbFJlY3QpOwotICAgICAgICBj
aGlsZExheWVyLT5jb252ZXJ0VG9MYXllckNvb3Jkcyh0aGlzLCBjaGlsZE9mZnNldCk7Ci0gICAg
ICAgIGNoaWxkTG9jYWxSZWN0Lm1vdmVCeSgtY2hpbGRPZmZzZXQpOworICAgICAgICBjaGlsZExv
Y2FsUmVjdC5tb3ZlQnkoLWNoaWxkTGF5ZXItPm9mZnNldEZyb21BbmNlc3RvckxheWVyKHRoaXMp
KTsKIAogICAgICAgICBpZiAoY2hpbGRMYXllci0+YmFja2dyb3VuZElzS25vd25Ub0JlT3BhcXVl
SW5SZWN0KGNoaWxkTG9jYWxSZWN0KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNjE0
NSw5ICs2MTA5LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2V0QmFja2luZ05lZWRzUmVwYWludElu
UmVjdChjb25zdCBMYXlvdXRSZWN0JiByLCBHcmFwaGljc0xheWUKICAgICAgICAgLy8gSWYgd2Un
cmUgdHJ5aW5nIHRvIHJlcGFpbnQgdGhlIHBsYWNlaG9sZGVyIGRvY3VtZW50IGxheWVyLCBwcm9w
YWdhdGUgdGhlCiAgICAgICAgIC8vIHJlcGFpbnQgdG8gdGhlIG5hdGl2ZSB2aWV3IHN5c3RlbS4K
ICAgICAgICAgTGF5b3V0UmVjdCBhYnNSZWN0KHIpOwotICAgICAgICBMYXlvdXRQb2ludCBkZWx0
YTsKLSAgICAgICAgY29udmVydFRvTGF5ZXJDb29yZHMocm9vdCgpLCBkZWx0YSk7Ci0gICAgICAg
IGFic1JlY3QubW92ZUJ5KGRlbHRhKTsKKyAgICAgICAgYWJzUmVjdC5tb3ZlQnkob2Zmc2V0RnJv
bUFuY2VzdG9yTGF5ZXIocm9vdCgpKSk7CiAKICAgICAgICAgcmVuZGVyZXIoKS52aWV3KCkucmVw
YWludFZpZXdSZWN0YW5nbGUoYWJzUmVjdCk7CiAgICAgfSBlbHNlCkBAIC02NzM0LDExICs2Njk2
LDggQEAgdm9pZCBSZW5kZXJMYXllcjo6cGFpbnRGbG93VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVu
dHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGZyYWcKICAgICAgICAgLy8gR3JhcGhpY3NMYXllciBj
b29yZGluYXRlcyBpbiB3aGljaCB0aGUgZnJhZ21lbnQgZ2V0cyBwYWludGVkLiBTbyB3aGF0IGlz
IGNvbXB1dGVkIHNvIGZhciBpcyBlbm91Z2guCiAgICAgICAgIC8vIElmIHRoZSBsYXllciBvZiB0
aGUgZmxvd0ZyYWdtZW50IGlzIG5vdCBjb21wb3NpdGVkLCB0aGVuIHdlIGNoYW5nZSB0aGUgY29v
cmRpbmF0ZXMgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIGZsb3cKICAgICAgICAgLy8gdGhyZWFkJ3Mg
bGF5ZXIuCi0gICAgICAgIGlmICghaXNDb21wb3NpdGVkKCkpIHsKLSAgICAgICAgICAgIExheW91
dFBvaW50IHJlZ2lvbk9mZnNldEZyb21Sb290OwotICAgICAgICAgICAgY29udmVydFRvTGF5ZXJD
b29yZHMocGFpbnRpbmdJbmZvLnJvb3RMYXllciwgcmVnaW9uT2Zmc2V0RnJvbVJvb3QpOwotICAg
ICAgICAgICAgcmVnaW9uQ2xpcFJlY3QubW92ZUJ5KHJlZ2lvbk9mZnNldEZyb21Sb290KTsKLSAg
ICAgICAgfQorICAgICAgICBpZiAoIWlzQ29tcG9zaXRlZCgpKQorICAgICAgICAgICAgcmVnaW9u
Q2xpcFJlY3QubW92ZUJ5KG9mZnNldEZyb21BbmNlc3RvckxheWVyKHBhaW50aW5nSW5mby5yb290
TGF5ZXIpKTsKICAgICB9CiAgICAgCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmcmFnbWVu
dHMuc2l6ZSgpOyArK2kpIHsKQEAgLTY3NjAsNyArNjcxOSw3IEBAIHZvaWQgUmVuZGVyTGF5ZXI6
OnBhaW50Rmxvd1RocmVhZElmUmVnaW9uRm9yRnJhZ21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRz
JiBmcmFnCiAgICAgfQogfQogCi1SZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6OmhpdFRlc3RGbG93
VGhyZWFkSWZSZWdpb25Gb3JGcmFnbWVudHMoY29uc3QgTGF5ZXJGcmFnbWVudHMmIGZyYWdtZW50
cywgUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3QgTGF5b3V0UmVjdCYgaGl0VGVzdFJlY3QsIAor
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0Rmxvd1RocmVhZElmUmVnaW9uRm9yRnJh
Z21lbnRzKGNvbnN0IExheWVyRnJhZ21lbnRzJiBmcmFnbWVudHMsIFJlbmRlckxheWVyKiwgY29u
c3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgY29uc3Qg
TGF5b3V0UmVjdCYgaGl0VGVzdFJlY3QsCiAgICAgY29uc3QgSGl0VGVzdExvY2F0aW9uJiBoaXRU
ZXN0TG9jYXRpb24sCiAgICAgY29uc3QgSGl0VGVzdGluZ1RyYW5zZm9ybVN0YXRlKiB0cmFuc2Zv
cm1TdGF0ZSwgCiAgICAgZG91YmxlKiB6T2Zmc2V0Rm9yRGVzY2VuZGFudHMsIGRvdWJsZSogek9m
ZnNldCwKQEAgLTY3NzQsOSArNjczMyw2IEBAIFJlbmRlckxheWVyKiBSZW5kZXJMYXllcjo6aGl0
VGVzdEZsb3dUaHJlYWRJZlJlZ2lvbkZvckZyYWdtZW50cyhjb25zdCBMYXllckZyYWdtCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgUmVuZGVyRmxvd1RocmVhZCogZmxvd1RocmVhZCA9IHJlZ2lv
bi0+Zmxvd1RocmVhZCgpOwotICAgIExheW91dFBvaW50IHJlZ2lvbk9mZnNldEZyb21Sb290Owot
ICAgIGNvbnZlcnRUb0xheWVyQ29vcmRzKHJvb3RMYXllciwgcmVnaW9uT2Zmc2V0RnJvbVJvb3Qp
OwotCiAgICAgTGF5b3V0UG9pbnQgcG9ydGlvbkxvY2F0aW9uID0gcmVnaW9uLT5mbG93VGhyZWFk
UG9ydGlvblJlY3QoKS5sb2NhdGlvbigpOwogICAgIGlmIChmbG93VGhyZWFkLT5zdHlsZSgpLmlz
RmxpcHBlZEJsb2Nrc1dyaXRpbmdNb2RlKCkpIHsKICAgICAgICAgLy8gVGhlIHBvcnRpb24gbG9j
YXRpb24gY29vcmRpbmF0ZSBtdXN0IGJlIHRyYW5zbGF0ZWQgaW50byBwaHlzaWNhbCBjb29yZGlu
YXRlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5o
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKaW5kZXggYzQ1YTAzOTRm
ZDIxNzI2YjEzZmI3NmMxZDU4MmNkZTE3ZjMxOGQ0Yy4uMjc3ZDNlYmQxMjRjZmVjYjg2OWQxYmRl
MmI1NWUwMDBjZGJiMmEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgK
QEAgLTY0Niw4ICs2NDYsMTAgQEAgcHVibGljOgogICAgIGVudW0gQ29sdW1uT2Zmc2V0QWRqdXN0
bWVudCB7IERvbnRBZGp1c3RGb3JDb2x1bW5zLCBBZGp1c3RGb3JDb2x1bW5zIH07CiAgICAgdm9p
ZCBjb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3Jkcyhjb25zdCBSZW5kZXJMYXllciogYW5j
ZXN0b3JMYXllciwgSW50UG9pbnQmIGxvY2F0aW9uLCBDb2x1bW5PZmZzZXRBZGp1c3RtZW50IGFk
anVzdEZvckNvbHVtbnMgPSBEb250QWRqdXN0Rm9yQ29sdW1ucykgY29uc3Q7CiAgICAgdm9pZCBj
b252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3Jkcyhjb25zdCBSZW5kZXJMYXllciogYW5jZXN0
b3JMYXllciwgSW50UmVjdCYsIENvbHVtbk9mZnNldEFkanVzdG1lbnQgYWRqdXN0Rm9yQ29sdW1u
cyA9IERvbnRBZGp1c3RGb3JDb2x1bW5zKSBjb25zdDsKLSAgICB2b2lkIGNvbnZlcnRUb0xheWVy
Q29vcmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBMYXlvdXRQb2ludCYsIENv
bHVtbk9mZnNldEFkanVzdG1lbnQgYWRqdXN0Rm9yQ29sdW1ucyA9IERvbnRBZGp1c3RGb3JDb2x1
bW5zKSBjb25zdDsKLSAgICB2b2lkIGNvbnZlcnRUb0xheWVyQ29vcmRzKGNvbnN0IFJlbmRlckxh
eWVyKiBhbmNlc3RvckxheWVyLCBMYXlvdXRSZWN0JiwgQ29sdW1uT2Zmc2V0QWRqdXN0bWVudCBh
ZGp1c3RGb3JDb2x1bW5zID0gRG9udEFkanVzdEZvckNvbHVtbnMpIGNvbnN0OworICAgIExheW91
dFBvaW50IGNvbnZlcnRUb0xheWVyQ29vcmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3Rvckxh
eWVyLCBjb25zdCBMYXlvdXRQb2ludCYsIENvbHVtbk9mZnNldEFkanVzdG1lbnQgYWRqdXN0Rm9y
Q29sdW1ucyA9IERvbnRBZGp1c3RGb3JDb2x1bW5zKSBjb25zdDsKKyAgICBMYXlvdXRSZWN0IGNv
bnZlcnRUb0xheWVyQ29vcmRzKGNvbnN0IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyLCBjb25z
dCBMYXlvdXRSZWN0JiwgQ29sdW1uT2Zmc2V0QWRqdXN0bWVudCBhZGp1c3RGb3JDb2x1bW5zID0g
RG9udEFkanVzdEZvckNvbHVtbnMpIGNvbnN0OworCisgICAgTGF5b3V0UG9pbnQgb2Zmc2V0RnJv
bUFuY2VzdG9yTGF5ZXIoY29uc3QgUmVuZGVyTGF5ZXIqKSBjb25zdDsKIAogICAgIGludCB6SW5k
ZXgoKSBjb25zdCB7IHJldHVybiByZW5kZXJlcigpLnN0eWxlKCkuekluZGV4KCk7IH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAppbmRleCBl
MDYzNmM5ZGMwNzVhYzU5NjRjYThiMWQxMzExNmUxZGI3NTA2MDRhLi41Mzg2MTYyODJmOTMyNjAz
NDk3NmFhMzVkZmE5ZmQzYTE4YzE4Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtNDU4LDggKzQ1OCw3IEBAIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVDb21wb3NpdGVkQm91bmRzKCkKICAgICAgICAgaWYgKCZtX293
bmluZ0xheWVyICE9IHJvb3RMYXllcikKICAgICAgICAgICAgIGNsaXBwaW5nQm91bmRzLmludGVy
c2VjdChtX293bmluZ0xheWVyLmJhY2tncm91bmRDbGlwUmVjdChSZW5kZXJMYXllcjo6Q2xpcFJl
Y3RzQ29udGV4dChyb290TGF5ZXIsIEFic29sdXRlQ2xpcFJlY3RzKSkucmVjdCgpKTsgLy8gRklY
TUU6IEluY29ycmVjdCBmb3IgQ1NTIHJlZ2lvbnMuCiAKLSAgICAgICAgTGF5b3V0UG9pbnQgZGVs
dGE7Ci0gICAgICAgIG1fb3duaW5nTGF5ZXIuY29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVy
LCBkZWx0YSwgUmVuZGVyTGF5ZXI6OkFkanVzdEZvckNvbHVtbnMpOworICAgICAgICBMYXlvdXRQ
b2ludCBkZWx0YSA9IG1fb3duaW5nTGF5ZXIuY29udmVydFRvTGF5ZXJDb29yZHMocm9vdExheWVy
LCBMYXlvdXRQb2ludCgpLCBSZW5kZXJMYXllcjo6QWRqdXN0Rm9yQ29sdW1ucyk7CiAgICAgICAg
IGNsaXBwaW5nQm91bmRzLm1vdmUoLWRlbHRhLngoKSwgLWRlbHRhLnkoKSk7CiAKICAgICAgICAg
bGF5ZXJCb3VuZHMuaW50ZXJzZWN0KGNsaXBwaW5nQm91bmRzKTsKQEAgLTcxMiw4ICs3MTEsNyBA
QCB2b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR2VvbWV0cnkoKQogICAgIExheW91dFJl
Y3QgbG9jYWxDb21wb3NpdGluZ0JvdW5kcyA9IGNvbXBvc2l0ZWRCb3VuZHMoKTsKICAgICBMYXlv
dXRSZWN0IHJlbGF0aXZlQ29tcG9zaXRpbmdCb3VuZHMobG9jYWxDb21wb3NpdGluZ0JvdW5kcyk7
CiAKLSAgICBMYXlvdXRQb2ludCBvZmZzZXRGcm9tUGFyZW50OwotICAgIG1fb3duaW5nTGF5ZXIu
Y29udmVydFRvTGF5ZXJDb29yZHMoY29tcEFuY2VzdG9yLCBvZmZzZXRGcm9tUGFyZW50LCBSZW5k
ZXJMYXllcjo6QWRqdXN0Rm9yQ29sdW1ucyk7CisgICAgTGF5b3V0UG9pbnQgb2Zmc2V0RnJvbVBh
cmVudCA9IG1fb3duaW5nTGF5ZXIuY29udmVydFRvTGF5ZXJDb29yZHMoY29tcEFuY2VzdG9yLCBM
YXlvdXRQb2ludCgpLCBSZW5kZXJMYXllcjo6QWRqdXN0Rm9yQ29sdW1ucyk7CiAgICAgLy8gRGV2
aWNlIHBpeGVsIGZyYWN0aW9ucyBnZXQgYWNjdW11bGF0ZWQgdGhyb3VnaCBhbmNlc3RvciBsYXll
cnMuIE91ciBwYWludGluZyBvZmZzZXQgaXMgbGF5b3V0IG9mZnNldCArIHBhcmVudCdzIHBhaW50
aW5nIG9mZnNldC4KICAgICBvZmZzZXRGcm9tUGFyZW50ID0gb2Zmc2V0RnJvbVBhcmVudCArIChj
b21wQW5jZXN0b3IgPyBjb21wQW5jZXN0b3ItPmJhY2tpbmcoKS0+ZGV2aWNlUGl4ZWxGcmFjdGlv
bkZyb21SZW5kZXJlcigpIDogTGF5b3V0U2l6ZSgpKTsKICAgICByZWxhdGl2ZUNvbXBvc2l0aW5n
Qm91bmRzLm1vdmVCeShvZmZzZXRGcm9tUGFyZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5kZXggZTIzMWVkMDhiMjU0N2Ri
ZTQ1ZDFiMjU3YTZlNWJiNWM0ZGNlYTBjNS4uNThmZjJlZjI2YzRlZDQ2NGIyNjU0NWVlNjI1ZDg0
MzFmMDUyYTM4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQ29tcG9zaXRvci5jcHAKQEAgLTk1OCwxMyArOTU4LDggQEAgdm9pZCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OnJlcGFpbnRJbkNvbXBvc2l0ZWRBbmNlc3RvcihSZW5kZXJMYXllciYgbGF5ZXIs
IGNvbnMKICAgICBSZW5kZXJMYXllciogY29tcG9zaXRlZEFuY2VzdG9yID0gbGF5ZXIuZW5jbG9z
aW5nQ29tcG9zaXRpbmdMYXllckZvclJlcGFpbnQoRXhjbHVkZVNlbGYpOwogICAgIGlmIChjb21w
b3NpdGVkQW5jZXN0b3IpIHsKICAgICAgICAgQVNTRVJUKGNvbXBvc2l0ZWRBbmNlc3Rvci0+YmFj
a2luZygpKTsKLQotICAgICAgICBMYXlvdXRQb2ludCBvZmZzZXQ7Ci0gICAgICAgIGxheWVyLmNv
bnZlcnRUb0xheWVyQ29vcmRzKGNvbXBvc2l0ZWRBbmNlc3Rvciwgb2Zmc2V0KTsKLQogICAgICAg
ICBMYXlvdXRSZWN0IHJlcGFpbnRSZWN0ID0gcmVjdDsKLSAgICAgICAgcmVwYWludFJlY3QubW92
ZUJ5KG9mZnNldCk7Ci0KKyAgICAgICAgcmVwYWludFJlY3QubW92ZUJ5KGxheWVyLm9mZnNldEZy
b21BbmNlc3RvckxheWVyKGNvbXBvc2l0ZWRBbmNlc3RvcikpOwogICAgICAgICBjb21wb3NpdGVk
QW5jZXN0b3ItPnNldEJhY2tpbmdOZWVkc1JlcGFpbnRJblJlY3QocmVwYWludFJlY3QpOwogICAg
IH0KIAo=
</data>
<flag name="review"
          id="257909"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>