<?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>123139</bug_id>
          
          <creation_ts>2013-10-21 23:29:13 -0700</creation_ts>
          <short_desc>Remote Layer Tree: Support hardware accelerated filters</short_desc>
          <delta_ts>2013-10-25 02:49:02 -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>WebKit2</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>
          <dependson>123330</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>dino</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>rego+ews</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942166</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-21 23:29:13 -0700</bug_when>
    <thetext>I took the approach of serializing FilterOperation and FilterOperations and using existing PlatformCAFiltersMac code to apply them on the UI process side.

I haven&apos;t added custom filter support yet, that might be slightly more tricky.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942175</commentid>
    <comment_count>1</comment_count>
      <attachid>214823</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-22 00:07:10 -0700</bug_when>
    <thetext>Created attachment 214823
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942176</commentid>
    <comment_count>2</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-22 00:07:46 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; I took the approach of serializing FilterOperation and FilterOperations and using existing PlatformCAFiltersMac code to apply them on the UI process side.
&gt; 
&gt; I haven&apos;t added custom filter support yet, that might be slightly more tricky.

Actually it looks like we don&apos;t have accelerated custom filters so we don&apos;t need this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942178</commentid>
    <comment_count>3</comment_count>
      <attachid>214823</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-22 00:12:59 -0700</bug_when>
    <thetext>Comment on attachment 214823
patch

Attachment 214823 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/8848227</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942288</commentid>
    <comment_count>4</comment_count>
      <attachid>214823</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-10-22 07:06:51 -0700</bug_when>
    <thetext>Comment on attachment 214823
patch

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

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1183
&gt; +static void encodeFilterOperation(ArgumentEncoder&amp; encoder, FilterOperation* filter)

I think FilterOperation should be a const reference.

&gt; Source/WebKit2/Shared/WebCoreArgumentCoders.cpp:1318
&gt; +        filters.operations().append(filter);

Can use std::move(filter) here to avoid ref churn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942372</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-10-22 12:24:01 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/157803</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214823</attachid>
            <date>2013-10-22 00:07:10 -0700</date>
            <delta_ts>2013-10-22 07:06:51 -0700</delta_ts>
            <desc>patch</desc>
            <filename>filters.diff</filename>
            <type>text/plain</type>
            <size>27837</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwMzE3Y2ZmLi5lNGVmYmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQg
QEAKKzIwMTMtMTAtMjEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgUmVtb3RlIExheWVyIFRyZWU6IFN1cHBvcnQgaGFyZHdhcmUgYWNjZWxlcmF0ZWQg
ZmlsdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTIzMTM5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAgRXhwb3J0IGEgdmFyaWV0eSBvZiBmaWx0ZXItcmVs
YXRlZCB0aGluZ3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNB
RmlsdGVycy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNB
RmlsdGVyc01hYy5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZv
cm1DQUxheWVyTWFjLm1tOgorICAgICAgICAoUGxhdGZvcm1DQUxheWVyTWFjOjpzZXRGaWx0ZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUZpbHRlcnNX
aW4uY3BwOgorICAgICAgICAoUGxhdGZvcm1DQUZpbHRlcnM6OnNldEZpbHRlcnNPbkxheWVyKToK
KyAgICAgICAgc2V0RmlsdGVyc09uTGF5ZXIgc2hvdWxkIHRha2UgYSBQbGF0Zm9ybUxheWVyIGlu
c3RlYWQgb2YgYSBQbGF0Zm9ybUNBTGF5ZXIKKyAgICAgICAgYXMgaXRzIGFyZ3VtZW50LCBiZWNh
dXNlIGl0IGRvZXNuJ3QgbmVlZCBhIFBsYXRmb3JtQ0FMYXllciwgYW5kIHRoaXMgd2F5CisgICAg
ICAgIHdlIGNhbiBzaGFyZSBjb2RlIHdpdGggdGhlIFJlbW90ZUxheWVyVHJlZUhvc3QsIHdoaWNo
IG9ubHkgaGFzIFBsYXRmb3JtTGF5ZXJzCisgICAgICAgIGFuZCBub3QgUGxhdGZvcm1DQUxheWVy
cy4KKwogMjAxMy0xMC0yMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV0lOXSBQcm9wZXJseSBzdXBwb3J0IHJldmVyc2UgYW5pbWF0aW9ucyB3aXRob3V0
IG5lZWRpbmcgc29mdHdhcmUgZmFsbGJhY2suCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGM0MTFk
ZDcuLmZmMDg2OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC02MDMsNiArNjAzLDcgQEAgX19a
TjdXZWJDb3JlMTZEYXRhYmFzZVN0cmF0ZWd5MjNjcmVhdGVJREJGYWN0b3J5QmFja2VuZEV2CiBf
X1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGExMkFjY2VsZXJhdGlvbjZjcmVhdGVFYmRiZGJk
CiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGExMlJvdGF0aW9uUmF0ZTZjcmVhdGVFYmRi
ZGJkCiBfX1pON1dlYkNvcmUxNkRldmljZU1vdGlvbkRhdGE2Y3JlYXRlRU4zV1RGMTBQYXNzUmVm
UHRySU5TMF8xMkFjY2VsZXJhdGlvbkVFRVM0X05TMl9JTlMwXzEyUm90YXRpb25SYXRlRUVFYmQK
K19fWk43V2ViQ29yZTE2RmlsdGVyT3BlcmF0aW9uc0MxRXYKIF9fWk43V2ViQ29yZTE2Rm9udFBs
YXRmb3JtRGF0YUQxRXYKIF9fWk43V2ViQ29yZTE2RnJhbWVMb2FkUmVxdWVzdEMxRVBOU181RnJh
bWVFUktOU18xNVJlc291cmNlUmVxdWVzdEVSS05TXzE0U3Vic3RpdHV0ZURhdGFFCiBfX1pON1dl
YkNvcmUxNkhUTUxJbnB1dEVsZW1lbnQxM3NldEF1dG9maWxsZWRFYgpAQCAtNjczLDYgKzY3NCw3
IEBAIF9fWk43V2ViQ29yZTE3SGlzdG9yeUNvbnRyb2xsZXIzM3Jlc3RvcmVTY3JvbGxQb3NpdGlv
bkFuZFZpZXdTdGF0ZUV2CiBfX1pON1dlYkNvcmUxN0pTRE9NR2xvYmFsT2JqZWN0NnNfaW5mb0UK
IF9fWk43V2ViQ29yZTE3TW91c2VSZWxhdGVkRXZlbnQ3b2Zmc2V0WEV2CiBfX1pON1dlYkNvcmUx
N01vdXNlUmVsYXRlZEV2ZW50N29mZnNldFlFdgorX19aTjdXZWJDb3JlMTdQbGF0Zm9ybUNBRmls
dGVyczE3c2V0RmlsdGVyc09uTGF5ZXJFUDdDQUxheWVyUktOU18xNkZpbHRlck9wZXJhdGlvbnNF
CiBfX1pON1dlYkNvcmUxN1JlZ3VsYXJFeHByZXNzaW9uQzFFUktOM1dURjZTdHJpbmdFTlMxXzE5
VGV4dENhc2VTZW5zaXRpdml0eUVOU18xM011bHRpbGluZU1vZGVFCiBfX1pON1dlYkNvcmUxN1Jl
Z3VsYXJFeHByZXNzaW9uRDFFdgogX19aTjdXZWJDb3JlMTdTUUxpdGVUcmFuc2FjdGlvbjViZWdp
bkV2CkBAIC02ODksNiArNjkxLDcgQEAgX19aTjdXZWJDb3JlMTdzZXRDb29raWVzRnJvbURPTUVS
S05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTlNfM1VSTEVTNV9SS04zV1QKIF9fWk43V2Vi
Q29yZTE3dXNlclZpc2libGVTdHJpbmdFUDVOU1VSTAogX19aTjdXZWJDb3JlMThET01XaW5kb3dF
eHRlbnNpb25DMUVQTlNfNUZyYW1lRVJOU18xNURPTVdyYXBwZXJXb3JsZEUKIF9fWk43V2ViQ29y
ZTE4UGxhdGZvcm1DQUxheWVyTWFjMThzZXRHZW9tZXRyeUZsaXBwZWRFYgorX19aTjdXZWJDb3Jl
MThQbGF0Zm9ybUNBTGF5ZXJNYWMyMmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWRFUktOU18xNkZpbHRl
ck9wZXJhdGlvbnNFCiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEwdW5pcXVlTmFt
ZUV2CiBfX1pON1dlYkNvcmUxOFBsYXRmb3JtUGFzdGVib2FyZDEzYnVmZmVyRm9yVHlwZUVSS04z
V1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZTE4UGxhdGZvcm1QYXN0ZWJvYXJkMTNzdHJpbmdGb3JU
eXBlRVJLTjNXVEY2U3RyaW5nRQpAQCAtODUzLDYgKzg1Niw3IEBAIF9fWk43V2ViQ29yZTI0RnJh
bWVEZXN0cnVjdGlvbk9ic2VydmVyMTRmcmFtZURlc3Ryb3llZEV2CiBfX1pON1dlYkNvcmUyNEZy
YW1lRGVzdHJ1Y3Rpb25PYnNlcnZlcjE0d2lsbERldGFjaFBhZ2VFdgogX19aTjdXZWJDb3JlMjRG
cmFtZURlc3RydWN0aW9uT2JzZXJ2ZXJDMkVQTlNfNUZyYW1lRQogX19aTjdXZWJDb3JlMjRGcmFt
ZURlc3RydWN0aW9uT2JzZXJ2ZXJEMkV2CitfX1pON1dlYkNvcmUyNFJlZmVyZW5jZUZpbHRlck9w
ZXJhdGlvbkMxRVJLTjNXVEY2U3RyaW5nRVM0X05TXzE1RmlsdGVyT3BlcmF0aW9uMTNPcGVyYXRp
b25UeXBlRQogX19aTjdXZWJDb3JlMjRjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBFUk5TXzhEb2N1
bWVudEVSS04zV1RGNlN0cmluZ0VTNV9OU18xOVBhcnNlckNvbnRlbnRQb2xpY3lFCiBfX1pON1dl
YkNvcmUyNGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0VSS04zV1RGNlN0cmluZ0UKIF9fWk43V2Vi
Q29yZTI0ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Np
b25FUktOM1dURjZTdHJpbmdFCkBAIC0xNzE1LDYgKzE3MTksNyBAQCBfX1pOSzdXZWJDb3JlNkVk
aXRvcjdjYW5FZGl0RXYKIF9fWk5LN1dlYkNvcmU2RWRpdG9yOGNhblBhc3RlRXYKIF9fWk5LN1dl
YkNvcmU2RWRpdG9yOWNhbkRlbGV0ZUV2CiBfX1pOSzdXZWJDb3JlNkxlbmd0aDIyZGVjcmVtZW50
Q2FsY3VsYXRlZFJlZkV2CitfX1pOSzdXZWJDb3JlNkxlbmd0aDIyaW5jcmVtZW50Q2FsY3VsYXRl
ZFJlZkV2CiBfX1pOSzdXZWJDb3JlNlJlZ2lvbjVyZWN0c0V2CiBfX1pOSzdXZWJDb3JlNlJlZ2lv
bjhjb250YWluc0VSS1MwXwogX19aTks3V2ViQ29yZTZSZWdpb245dG90YWxBcmVhRXYKQEAgLTE4
MDgsNyArMTgxMywxMSBAQCBfX1pUVk43V2ViQ29yZTE1U3RvcmFnZVN0cmF0ZWd5RQogX19aVFZO
N1dlYkNvcmUxNkRhdGFiYXNlU3RyYXRlZ3lFCiBfX1pUVk43V2ViQ29yZTE2SWNvbkRhdGFiYXNl
QmFzZUUKIF9fWlRWTjdXZWJDb3JlMTdGcmFtZUxvYWRlckNsaWVudEUKK19fWlRWTjdXZWJDb3Jl
MTlCbHVyRmlsdGVyT3BlcmF0aW9uRQorX19aVFZON1dlYkNvcmUyNURyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb25FCiBfX1pUVk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDhT
ZXR0aW5nc0UKK19fWlRWTjdXZWJDb3JlMzFCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
RQorX19aVFZON1dlYkNvcmUzN0Jhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb25F
CiBfX1pUaG4/Pz9fTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EyOHBsYXRmb3JtQ0FMYXllclBh
aW50Q29udGVudHNFUk5TXzE1R3JhcGhpY3NDb250ZXh0RVJLTlNfN0ludFJlY3RFCiBfX1pUaG4/
Pz9fTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0EzMXBsYXRmb3JtQ0FMYXllckFuaW1hdGlvblN0
YXJ0ZWRFZAogX19aVGhuPz8/X043V2ViQ29yZTE1R3JhcGhpY3NMYXllckNBMzJwbGF0Zm9ybUNB
TGF5ZXJEZXZpY2VTY2FsZUZhY3RvckV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNGJkODdhYS4uMDZkYjY5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTQ4
LDcgKzk0OCw3IEBACiAJCTJENUE1OTMxMTUyNTI1RDAwMDM2RUU1MSAvKiBJbWFnZU9yaWVudGF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODc0
OEQ2NjEyQ0MzNzYzMDAxRkJBNDEgLyogSW1hZ2VPcmllbnRhdGlvbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTJENUJDNDI3MTZGODgyRUUwMDcw
NDhEMCAvKiBTZWN1cml0eVBvbGljeVZpb2xhdGlvbkV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDVCQzQyNTE2Rjg4MkJFMDA3MDQ4RDAgLyog
U2VjdXJpdHlQb2xpY3lWaW9sYXRpb25FdmVudC5oICovOyB9OwogCQkyRDZFNDY4NDE3RDY2MEY1
MDBFQ0Y4QkIgLyogUERGRG9jdW1lbnRJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENkU0NjgyMTdENjYwRjUwMEVDRjhCQiAvKiBQREZE
b2N1bWVudEltYWdlTWFjLm1tICovOyB9OwotCQkyRDcwQkExMzE4MDc0RERGMDAwMTkwOEEgLyog
UGxhdGZvcm1DQUxheWVyTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDcwQkExMjE4MDc0RERGMDAwMTkwOEEgLyogUGxhdGZvcm1DQUxheWVyTWFj
LmggKi87IH07CisJCTJENzBCQTEzMTgwNzREREYwMDAxOTA4QSAvKiBQbGF0Zm9ybUNBTGF5ZXJN
YWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzBC
QTEyMTgwNzREREYwMDAxOTA4QSAvKiBQbGF0Zm9ybUNBTGF5ZXJNYWMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkyRDcwQkExNTE4MDc0Rjg2MDAw
MTkwOEEgLyogUGxhdGZvcm1DQUxheWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJENzBCQTE0MTgwNzRGODUwMDAxOTA4QSAvKiBQbGF0Zm9ybUNB
TGF5ZXIuY3BwICovOyB9OwogCQkyRDgyODdGNjE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExv
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDJEODI4N0Y0MTZFNEEwMzgwMDg2QkQwMCAvKiBIaXRUZXN0TG9jYXRpb24uY3BwICovOyB9Owog
CQkyRDgyODdGNzE2RTRBMDM4MDA4NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDgyODdGNTE2RTRBMDM4MDA4
NkJEMDAgLyogSGl0VGVzdExvY2F0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL1BsYXRmb3JtQ0FGaWx0ZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS9QbGF0Zm9ybUNBRmlsdGVycy5oCmluZGV4IDY4YTNlZGIuLjI5Y2NlZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FG
aWx0ZXJzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZv
cm1DQUZpbHRlcnMuaApAQCAtMzAsNiArMzAsNyBAQAogI2lmIEVOQUJMRShDU1NfRklMVEVSUykK
IAogI2luY2x1ZGUgIkZpbHRlck9wZXJhdGlvbnMuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUxheWVy
LmgiCiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgogCiAjaWYgX19NQUNfT1NfWF9WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMDgwCkBAIC00MSwxMSArNDIsMTAgQEAKIE9CSkNfQ0xBU1MgTlNW
YWx1ZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotY2xhc3MgUGxhdGZvcm1DQUxheWVyOwogCiBj
bGFzcyBQbGF0Zm9ybUNBRmlsdGVycyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgc2V0Rmls
dGVyc09uTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOwor
ICAgIHN0YXRpYyB2b2lkIHNldEZpbHRlcnNPbkxheWVyKFBsYXRmb3JtTGF5ZXIqLCBjb25zdCBG
aWx0ZXJPcGVyYXRpb25zJik7CiAgICAgc3RhdGljIGludCBudW1BbmltYXRlZEZpbHRlclByb3Bl
cnRpZXMoRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlKTsKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogYW5pbWF0ZWRGaWx0ZXJQcm9wZXJ0eU5hbWUoRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRp
b25UeXBlLCBpbnQgaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FGaWx0ZXJz
TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3Jt
Q0FGaWx0ZXJzTWFjLm1tCmluZGV4IGJjM2Y2NTAuLmE5MTcyZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBRmlsdGVyc01hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1D
QUZpbHRlcnNNYWMubW0KQEAgLTgxLDEwICs4MSw4IEBAIHN0YXRpYyBkb3VibGUgc2VwaWFOb25l
Q29uc3RhbnRzWzNdWzNdID0gewogICAgIHsgMCwgMCwgMSB9CiB9OwogCi12b2lkIFBsYXRmb3Jt
Q0FGaWx0ZXJzOjpzZXRGaWx0ZXJzT25MYXllcihQbGF0Zm9ybUNBTGF5ZXIqIHBsYXRmb3JtQ0FM
YXllciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKK3ZvaWQgUGxhdGZvcm1DQUZp
bHRlcnM6OnNldEZpbHRlcnNPbkxheWVyKFBsYXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQogewotICAgIENBTGF5ZXIqIGxheWVyID0gcGxhdGZvcm1D
QUxheWVyLT5wbGF0Zm9ybUxheWVyKCk7Ci0KICAgICBpZiAoIWZpbHRlcnMuc2l6ZSgpKSB7CiAg
ICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUwogICAgICAgICBbbGF5ZXIgc2V0Rmls
dGVyczpuaWxdOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2EvbWFjL1BsYXRmb3JtQ0FMYXllck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBTGF5ZXJNYWMubW0KaW5kZXggZTY5NGZkOC4uMDVjZGIx
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1Bs
YXRmb3JtQ0FMYXllck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYS9tYWMvUGxhdGZvcm1DQUxheWVyTWFjLm1tCkBAIC02MzMsNyArNjMzLDcgQEAgdm9pZCBQ
bGF0Zm9ybUNBTGF5ZXJNYWM6OnNldE9wYWNpdHkoZmxvYXQgdmFsdWUpCiAjaWYgRU5BQkxFKENT
U19GSUxURVJTKQogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJNYWM6OnNldEZpbHRlcnMoY29uc3QgRmls
dGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKLSAgICBQbGF0Zm9ybUNBRmlsdGVyczo6c2V0Rmls
dGVyc09uTGF5ZXIodGhpcywgZmlsdGVycyk7CisgICAgUGxhdGZvcm1DQUZpbHRlcnM6OnNldEZp
bHRlcnNPbkxheWVyKHRoaXMtPnBsYXRmb3JtTGF5ZXIoKSwgZmlsdGVycyk7CiB9CiAKIHZvaWQg
UGxhdGZvcm1DQUxheWVyTWFjOjpjb3B5RmlsdGVyc0Zyb20oY29uc3QgUGxhdGZvcm1DQUxheWVy
KiBzb3VyY2VMYXllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL3dpbi9QbGF0Zm9ybUNBRmlsdGVyc1dpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vUGxhdGZvcm1DQUZpbHRlcnNXaW4uY3BwCmluZGV4IDNlYjM5
NTQuLjMwYzQwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9QbGF0Zm9ybUNBRmlsdGVyc1dpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Evd2luL1BsYXRmb3JtQ0FGaWx0ZXJzV2luLmNwcApAQCAtMzIsNyAr
MzIsNyBAQAogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAotdm9pZCBQbGF0Zm9ybUNBRmls
dGVyczo6c2V0RmlsdGVyc09uTGF5ZXIoUGxhdGZvcm1DQUxheWVyKiBwbGF0Zm9ybUNBTGF5ZXIs
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCit2b2lkIFBsYXRmb3JtQ0FGaWx0ZXJz
OjpzZXRGaWx0ZXJzT25MYXllcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyYgZmlsdGVycykKIHsKICAgICAvLyBIYXJkd2FyZSBmaWx0ZXIgYW5pbWF0aW9uIG5v
dCBpbXBsZW1lbnRlZCBvbiBXaW5kb3dzLgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGJkOGZhNDEuLmI5NmNk
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxMy0xMC0yMSAgVGltIEhvcnRvbiAg
PHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdGUgTGF5ZXIgVHJlZTog
U3VwcG9ydCBoYXJkd2FyZSBhY2NlbGVyYXRlZCBmaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjMxMzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2Rl
cnMuY3BwOgorICAgICAgICAoQ29yZUlQQzo6QXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUp
OgorICAgICAgICAoQ29yZUlQQzo6QXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUpOgorICAg
ICAgICBBZGQgc2ltcGxlIGNvZGVycyBmb3IgTGVuZ3RoLgorCisgICAgICAgIChDb3JlSVBDOjpl
bmNvZGVGaWx0ZXJPcGVyYXRpb24pOgorICAgICAgICAoQ29yZUlQQzo6ZGVjb2RlRmlsdGVyT3Bl
cmF0aW9uKToKKyAgICAgICAgU2VyaWFsaXplIGFuZCBkZXNlcmlhbGl6ZSBGaWx0ZXJPcGVyYXRp
b25zLCBleGNlcHQgZm9yIENVU1RPTSBhbmQgVkFMSURBVEVEX0NVU1RPTS4KKworICAgICAgICAo
Q29yZUlQQzo6QXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUpOgorICAgICAgICAoQ29yZUlQ
Qzo6QXJndW1lbnRDb2RlcjxMZW5ndGg+OjpkZWNvZGUpOgorICAgICAgICBBZGQgY29kZXJzIGZv
ciBGaWx0ZXJPcGVyYXRpb25zIHRoYXQgZGVsZWdhdGUgdG8ge2VuLGRlfWNvZGVGaWx0ZXJPcGVy
YXRpb24KKyAgICAgICAgZm9yIGVhY2ggb3BlcmF0aW9uIGluIHRoZSBsaXN0LgorCisgICAgICAg
ICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oOgorICAgICAgICBEcml2ZS1ieSBmaXgg
aW5kZW50YXRpb24uCisgICAgICAgIEV4cG9zZSB0aGUgTGVuZ3RoIGFuZCBGaWx0ZXJPcGVyYXRp
b25zIGNvZGVycy4KKworICAgICAgICAqIFNoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb24uaDoKKyAgICAgICAgQWRkIEZpbHRlcnNDaGFuZ2VkIGFuZCBMYXllclByb3BlcnRpZXM6
OmZpbHRlcnMuCisKKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5
ZXJQcm9wZXJ0aWVzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVzOjpkZWNvZGUpOgorICAgICAgICBFbmNvZGUgYW5k
IGRlY29kZSBvdXIgRmlsdGVyT3BlcmF0aW9ucy4KKworICAgICAgICAoV2ViS2l0OjpkdW1wQ2hh
bmdlZExheWVycyk6CisgICAgICAgIER1bXAgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxheWVycycg
ZmlsdGVycy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvUmVtb3RlTGF5ZXJUcmVlSG9zdC5t
bToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y29tbWl0KToKKyAgICAg
ICAgVXNlIFBsYXRmb3JtQ0FGaWx0ZXJzIGNvZGUgdG8gYXBwbHkgYSBGaWx0ZXJPcGVyYXRpb25z
IG9iamVjdCB0byBvdXIgQ0FMYXllci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvUGxhdGZvcm1DQUxheWVyUmVtb3RlLmNwcDoKKyAgICAgICAgKFBsYXRmb3JtQ0FMYXllclJl
bW90ZTo6c2V0RmlsdGVycyk6CisgICAgICAgIFJlcGxhY2UgZXhpc3RpbmcgZmlsdGVycyB3aXRo
IG91ciBuZXcgc2V0LCBhbmQgbm90ZSB0aGF0IHRoZXkndmUgY2hhbmdlZC4KKworICAgICAgICAo
UGxhdGZvcm1DQUxheWVyUmVtb3RlOjpjb3B5RmlsdGVyc0Zyb20pOgorICAgICAgICBOb3QgeWV0
IGltcGxlbWVudGVkLiBOb3QgY3JpdGljYWwgZm9yIHRoaXMgZmVhdHVyZSwgZWl0aGVyLgorCisg
ICAgICAgIChQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OmZpbHRlcnNDYW5CZUNvbXBvc2l0ZWQpOgor
ICAgICAgICBGb3Igbm93LCB0aGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBNYWMgdmVyc2lvbi4KKwog
MjAxMy0xMC0yMSAgTWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBh
IHZlcnNpb24gb2YgV2ViS2l0U3lzdGVtSW50ZXJmYWNlIGZvciBNYXZlcmlja3MuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCmluZGV4IGQ4Yjg5
NTAuLjYxYmFkNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJn
dW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1l
bnRDb2RlcnMuY3BwCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnU2Vz
c2lvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRWRpdG9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlQ2hvb3Nlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvRmlsdGVyT3BlcmF0aW9uLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9GaWx0ZXJPcGVyYXRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HcmFw
aGljc0NvbnRleHQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0ltYWdlLmg+CkBAIC0xNTgsNiArMTYwLDE3IEBAIGJvb2wgQXJndW1lbnRD
b2RlcjxJbnRTaXplPjo6ZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSW50U2l6ZSYg
aW50U2l6ZSkKIH0KIAogCit2b2lkIEFyZ3VtZW50Q29kZXI8TGVuZ3RoPjo6ZW5jb2RlKEFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgTGVuZ3RoJiBsZW5ndGgpCit7CisgICAgU2ltcGxl
QXJndW1lbnRDb2RlcjxMZW5ndGg+OjplbmNvZGUoZW5jb2RlciwgbGVuZ3RoKTsKK30KKworYm9v
bCBBcmd1bWVudENvZGVyPExlbmd0aD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIs
IExlbmd0aCYgbGVuZ3RoKQoreworICAgIHJldHVybiBTaW1wbGVBcmd1bWVudENvZGVyPExlbmd0
aD46OmRlY29kZShkZWNvZGVyLCBsZW5ndGgpOworfQorCisKIHZvaWQgQXJndW1lbnRDb2RlcjxW
aWV3cG9ydEF0dHJpYnV0ZXM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBWaWV3cG9ydEF0dHJpYnV0ZXMmIHZpZXdwb3J0QXR0cmlidXRlcykKIHsKICAgICBTaW1wbGVB
cmd1bWVudENvZGVyPFZpZXdwb3J0QXR0cmlidXRlcz46OmVuY29kZShlbmNvZGVyLCB2aWV3cG9y
dEF0dHJpYnV0ZXMpOwpAQCAtMTE2Nyw0ICsxMTgwLDE0NSBAQCBib29sIEFyZ3VtZW50Q29kZXI8
V2ViQ29yZTo6VXNlclNjcmlwdD46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdl
YkNvcgogICAgIHJldHVybiB0cnVlOwogfQogCitzdGF0aWMgdm9pZCBlbmNvZGVGaWx0ZXJPcGVy
YXRpb24oQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlcikK
K3sKKyAgICBlbmNvZGVyLmVuY29kZUVudW0oZmlsdGVyLT5nZXRPcGVyYXRpb25UeXBlKCkpOwor
CisgICAgc3dpdGNoIChmaWx0ZXItPmdldE9wZXJhdGlvblR5cGUoKSkgeworICAgIGNhc2UgRmls
dGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6IHsKKyAgICAgICAgYXV0byByZWZlcmVuY2VGaWx0ZXIg
PSBzdGF0aWNfY2FzdDxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpOworICAgICAg
ICBlbmNvZGVyIDw8IHJlZmVyZW5jZUZpbHRlci0+dXJsKCk7CisgICAgICAgIGVuY29kZXIgPDwg
cmVmZXJlbmNlRmlsdGVyLT5mcmFnbWVudCgpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6U0VQSUE6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgorICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOgorICAgICAgICBlbmNvZGVyIDw8IHN0YXRpY19j
YXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXIpLT5hbW91bnQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDoKKyAgICBj
YXNlIEZpbHRlck9wZXJhdGlvbjo6T1BBQ0lUWToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6
QlJJR0hUTkVTUzoKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6CisgICAgICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbio+KGZpbHRlciktPmFtb3VudCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDxCbHVyRmls
dGVyT3BlcmF0aW9uKj4oZmlsdGVyKS0+c3RkRGV2aWF0aW9uKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogeworICAgICAgICBhdXRvIGRy
b3BTaGFkb3dGaWx0ZXIgPSBzdGF0aWNfY2FzdDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyKTsKKyAgICAgICAgZW5jb2RlciA8PCBkcm9wU2hhZG93RmlsdGVyLT5sb2NhdGlvbigp
OworICAgICAgICBlbmNvZGVyIDw8IGRyb3BTaGFkb3dGaWx0ZXItPnN0ZERldmlhdGlvbigpOwor
ICAgICAgICBlbmNvZGVyIDw8IGRyb3BTaGFkb3dGaWx0ZXItPmNvbG9yKCk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkNVU1RPTToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6VkFMSURBVEVEX0NVU1RP
TToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworI2VuZGlm
CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlBBU1NUSFJPVUdIOgorICAgIGNhc2UgRmlsdGVy
T3BlcmF0aW9uOjpOT05FOgorICAgICAgICBicmVhazsKKyAgICB9OworfQorCitzdGF0aWMgYm9v
bCBkZWNvZGVGaWx0ZXJPcGVyYXRpb24oQXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8
RmlsdGVyT3BlcmF0aW9uPiYgZmlsdGVyKQoreworICAgIEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0
aW9uVHlwZSB0eXBlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKHR5cGUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6UkVGRVJFTkNFOiB7CisgICAgICAgIFN0cmluZyB1cmw7CisgICAgICAgIFN0cmlu
ZyBmcmFnbWVudDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh1cmwpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYWdtZW50KSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZmlsdGVyID0gUmVmZXJlbmNlRmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUodXJsLCBmcmFnbWVudCwgdHlwZSk7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOgorICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpTRVBJQToKKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJB
VEU6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKKyAgICAgICAgZG91
YmxlIGFtb3VudDsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShhbW91bnQpKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBmaWx0ZXIgPSBCYXNpY0NvbG9yTWF0cml4Rmls
dGVyT3BlcmF0aW9uOjpjcmVhdGUoYW1vdW50LCB0eXBlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6CisgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246Ok9QQUNJVFk6CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1M6Cisg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOiB7CisgICAgICAgIGRvdWJsZSBhbW91
bnQ7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYW1vdW50KSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgZmlsdGVyID0gQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbjo6Y3JlYXRlKGFtb3VudCwgdHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxVUjogeworICAgICAgICBMZW5ndGggc3RkRGV2
aWF0aW9uOworICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHN0ZERldmlhdGlvbikpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZpbHRlciA9IEJsdXJGaWx0ZXJPcGVyYXRp
b246OmNyZWF0ZShzdGREZXZpYXRpb24sIHR5cGUpOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CisgICAgICAgIEludFBvaW50
IGxvY2F0aW9uOworICAgICAgICBpbnQgc3RkRGV2aWF0aW9uOworICAgICAgICBDb2xvciBjb2xv
cjsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShsb2NhdGlvbikpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RkRGV2aWF0aW9uKSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShj
b2xvcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGZpbHRlciA9IERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb2xv
ciwgdHlwZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMp
CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNVU1RPTToKKyAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6VkFMSURBVEVEX0NVU1RPTToKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlBBU1NUSFJP
VUdIOgorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpOT05FOgorICAgICAgICBicmVhazsKKyAg
ICB9OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKKwordm9pZCBBcmd1bWVudENvZGVyPEZpbHRl
ck9wZXJhdGlvbnM+OjplbmNvZGUoQXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWlu
dDY0X3Q+KGZpbHRlcnMuc2l6ZSgpKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgZmlsdGVyIDog
ZmlsdGVycy5vcGVyYXRpb25zKCkpCisgICAgICAgIGVuY29kZUZpbHRlck9wZXJhdGlvbihlbmNv
ZGVyLCBmaWx0ZXIuZ2V0KCkpOworfQorCitib29sIEFyZ3VtZW50Q29kZXI8RmlsdGVyT3BlcmF0
aW9ucz46OmRlY29kZShBcmd1bWVudERlY29kZXImIGRlY29kZXIsIEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCit7CisgICAgdWludDY0X3QgZmlsdGVyQ291bnQ7CisgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShmaWx0ZXJDb3VudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAo
dWludDY0X3QgaSA9IDA7IGkgPCBmaWx0ZXJDb3VudDsgKytpKSB7CisgICAgICAgIFJlZlB0cjxG
aWx0ZXJPcGVyYXRpb24+IGZpbHRlcjsKKyAgICAgICAgaWYgKCFkZWNvZGVGaWx0ZXJPcGVyYXRp
b24oZGVjb2RlciwgZmlsdGVyKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ZmlsdGVycy5vcGVyYXRpb25zKCkuYXBwZW5kKGZpbHRlcik7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKIH0gLy8gbmFtZXNwYWNlIENvcmVJUEMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1No
YXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuaAppbmRleCBiOTNlZTgxLi42NzcxYTI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5oCkBAIC0yOSw1
MCArMjksNTIgQEAKICNpbmNsdWRlICJBcmd1bWVudENvZGVycy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotICAgIGNsYXNzIEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOwotICAgIGNsYXNzIENvbG9yOwotICAgIGNsYXNzIENyZWRlbnRpYWw7Ci0g
ICAgY2xhc3MgQ3Vyc29yOwotICAgIGNsYXNzIERhdGFiYXNlRGV0YWlsczsKLSAgICBjbGFzcyBG
bG9hdFBvaW50OwotICAgIGNsYXNzIEZsb2F0UG9pbnQzRDsKLSAgICBjbGFzcyBGbG9hdFJlY3Q7
Ci0gICAgY2xhc3MgRmxvYXRTaXplOwotICAgIGNsYXNzIEhUVFBIZWFkZXJNYXA7Ci0gICAgY2xh
c3MgSW50UG9pbnQ7Ci0gICAgY2xhc3MgSW50UmVjdDsKLSAgICBjbGFzcyBJbnRTaXplOwotICAg
IGNsYXNzIEtleWZyYW1lVmFsdWVMaXN0OwotICAgIGNsYXNzIFVSTDsKLSAgICBjbGFzcyBOb3Rp
ZmljYXRpb247Ci0gICAgY2xhc3MgQ2VydGlmaWNhdGVJbmZvOwotICAgIGNsYXNzIFByb3RlY3Rp
b25TcGFjZTsKLSAgICBjbGFzcyBSZXNvdXJjZUVycm9yOwotICAgIGNsYXNzIFJlc291cmNlUmVx
dWVzdDsKLSAgICBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotICAgIGNsYXNzIFRleHRDaGVja2lu
Z1JlcXVlc3REYXRhOwotICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwotICAgIGNsYXNz
IFVzZXJTdHlsZVNoZWV0OwotICAgIGNsYXNzIFVzZXJTY3JpcHQ7Ci0gICAgc3RydWN0IENvbXBv
c2l0aW9uVW5kZXJsaW5lOwotICAgIHN0cnVjdCBDb29raWU7Ci0gICAgc3RydWN0IERpY3RhdGlv
bkFsdGVybmF0aXZlOwotICAgIHN0cnVjdCBEcmFnU2Vzc2lvbjsKLSAgICBzdHJ1Y3QgRmlsZUNo
b29zZXJTZXR0aW5nczsKLSAgICBzdHJ1Y3QgR3JhbW1hckRldGFpbDsKLSAgICBzdHJ1Y3QgTWlt
ZUNsYXNzSW5mbzsKLSAgICBzdHJ1Y3QgUGFzdGVib2FyZEltYWdlOwotICAgIHN0cnVjdCBQYXN0
ZWJvYXJkV2ViQ29udGVudDsKLSAgICBzdHJ1Y3QgUGx1Z2luSW5mbzsKLSAgICBzdHJ1Y3QgVGV4
dENoZWNraW5nUmVzdWx0OwotICAgIHN0cnVjdCBWaWV3cG9ydEF0dHJpYnV0ZXM7Ci0gICAgc3Ry
dWN0IFdpbmRvd0ZlYXR1cmVzOworY2xhc3MgQWZmaW5lVHJhbnNmb3JtOworY2xhc3MgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U7CitjbGFzcyBDb2xvcjsKK2NsYXNzIENyZWRlbnRpYWw7CitjbGFz
cyBDdXJzb3I7CitjbGFzcyBEYXRhYmFzZURldGFpbHM7CitjbGFzcyBGaWx0ZXJPcGVyYXRpb25z
OworY2xhc3MgRmxvYXRQb2ludDsKK2NsYXNzIEZsb2F0UG9pbnQzRDsKK2NsYXNzIEZsb2F0UmVj
dDsKK2NsYXNzIEZsb2F0U2l6ZTsKK2NsYXNzIEhUVFBIZWFkZXJNYXA7CitjbGFzcyBJbnRQb2lu
dDsKK2NsYXNzIEludFJlY3Q7CitjbGFzcyBJbnRTaXplOworY2xhc3MgS2V5ZnJhbWVWYWx1ZUxp
c3Q7CitjbGFzcyBVUkw7CitjbGFzcyBOb3RpZmljYXRpb247CitjbGFzcyBDZXJ0aWZpY2F0ZUlu
Zm87CitjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CitjbGFzcyBSZXNvdXJjZUVycm9yOworY2xhc3Mg
UmVzb3VyY2VSZXF1ZXN0OworY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKK2NsYXNzIFRleHRDaGVj
a2luZ1JlcXVlc3REYXRhOworY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CitjbGFzcyBVc2Vy
U3R5bGVTaGVldDsKK2NsYXNzIFVzZXJTY3JpcHQ7CitzdHJ1Y3QgQ29tcG9zaXRpb25VbmRlcmxp
bmU7CitzdHJ1Y3QgQ29va2llOworc3RydWN0IERpY3RhdGlvbkFsdGVybmF0aXZlOworc3RydWN0
IERyYWdTZXNzaW9uOworc3RydWN0IEZpbGVDaG9vc2VyU2V0dGluZ3M7CitzdHJ1Y3QgTGVuZ3Ro
Oworc3RydWN0IEdyYW1tYXJEZXRhaWw7CitzdHJ1Y3QgTWltZUNsYXNzSW5mbzsKK3N0cnVjdCBQ
YXN0ZWJvYXJkSW1hZ2U7CitzdHJ1Y3QgUGFzdGVib2FyZFdlYkNvbnRlbnQ7CitzdHJ1Y3QgUGx1
Z2luSW5mbzsKK3N0cnVjdCBUZXh0Q2hlY2tpbmdSZXN1bHQ7CitzdHJ1Y3QgVmlld3BvcnRBdHRy
aWJ1dGVzOworc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwogfQogCiAjaWYgUExBVEZPUk0oTUFDKQog
bmFtZXNwYWNlIFdlYkNvcmUgewotICAgIHN0cnVjdCBLZXlwcmVzc0NvbW1hbmQ7CitzdHJ1Y3Qg
S2V5cHJlc3NDb21tYW5kOwogfQogI2VuZGlmCiAKQEAgLTEyMyw2ICsxMjUsMTEgQEAgdGVtcGxh
dGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxXZWJDb3JlOjpJbnRTaXplPiB7CiAgICAgc3RhdGlj
IGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OkludFNpemUmKTsKIH07CiAK
K3RlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6TGVuZ3RoPiB7CisgICAg
c3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5jb2RlciYsIGNvbnN0IFdlYkNvcmU6Okxlbmd0
aCYpOworICAgIHN0YXRpYyBib29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpM
ZW5ndGgmKTsKK307CisKIHRlbXBsYXRlPD4gc3RydWN0IEFyZ3VtZW50Q29kZXI8V2ViQ29yZTo6
Vmlld3BvcnRBdHRyaWJ1dGVzPiB7CiAgICAgc3RhdGljIHZvaWQgZW5jb2RlKEFyZ3VtZW50RW5j
b2RlciYsIGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpOwogICAgIHN0YXRpYyBi
b29sIGRlY29kZShBcmd1bWVudERlY29kZXImLCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMm
KTsKQEAgLTI5Miw2ICsyOTksMTIgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgQXJndW1lbnRDb2RlcjxX
ZWJDb3JlOjpVc2VyU2NyaXB0PiB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVj
b2RlciYsIFdlYkNvcmU6OlVzZXJTY3JpcHQmKTsKIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IEFy
Z3VtZW50Q29kZXI8V2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9ucz4geworICAgIHN0YXRpYyB2b2lk
IGVuY29kZShBcmd1bWVudEVuY29kZXImLCBjb25zdCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb25z
Jik7CisgICAgc3RhdGljIGJvb2wgZGVjb2RlKEFyZ3VtZW50RGVjb2RlciYsIFdlYkNvcmU6OkZp
bHRlck9wZXJhdGlvbnMmKTsKK307CisKKwogfSAvLyBuYW1lc3BhY2UgQ29yZUlQQwogCiAjZW5k
aWYgLy8gV2ViQ29yZUFyZ3VtZW50Q29kZXJzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24uaAppbmRleCAyYjIyNTUwLi44
NjFiYmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJSZW1v
dGVMYXllckJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0ZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0
UG9pbnQzRC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRTaXplLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9QbGF0Zm9ybUNBTGF5ZXIuaD4KQEAgLTczLDcgKzc0LDggQEAgcHVibGljOgogICAgICAg
ICBNYWduaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCA9IDEgPDwgMjEsCiAgICAgICAgIFNwZWVkQ2hh
bmdlZCA9IDEgPDwgMjIsCiAgICAgICAgIFRpbWVPZmZzZXRDaGFuZ2VkID0gMSA8PCAyMywKLSAg
ICAgICAgQmFja2luZ1N0b3JlQ2hhbmdlZCA9IDEgPDwgMjQKKyAgICAgICAgQmFja2luZ1N0b3Jl
Q2hhbmdlZCA9IDEgPDwgMjQsCisgICAgICAgIEZpbHRlcnNDaGFuZ2VkID0gMSA8PCAyNQogICAg
IH07CiAKICAgICBzdHJ1Y3QgTGF5ZXJDcmVhdGlvblByb3BlcnRpZXMgewpAQCAtMTIwLDYgKzEy
Miw3IEBAIHB1YmxpYzoKICAgICAgICAgZmxvYXQgc3BlZWQ7CiAgICAgICAgIGRvdWJsZSB0aW1l
T2Zmc2V0OwogICAgICAgICBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSBiYWNraW5nU3RvcmU7Cisg
ICAgICAgIFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKICAgICB9OwogCiAgICAg
ZXhwbGljaXQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0gYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCmluZGV4
IGRiYmQ2ODYuLjYyNWIzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMv
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpAQCAtMTQwLDYgKzE0MCw5IEBAIHZv
aWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZW5jb2RlKENv
cmVJUEM6OkFyZ3VtZW50RW5jb2RlCiAKICAgICBpZiAoY2hhbmdlZFByb3BlcnRpZXMgJiBCYWNr
aW5nU3RvcmVDaGFuZ2VkKQogICAgICAgICBlbmNvZGVyIDw8IGJhY2tpbmdTdG9yZTsKKworICAg
IGlmIChjaGFuZ2VkUHJvcGVydGllcyAmIEZpbHRlcnNDaGFuZ2VkKQorICAgICAgICBlbmNvZGVy
IDw8IGZpbHRlcnM7CiB9CiAKIGJvb2wgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVy
UHJvcGVydGllczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgTGF5
ZXJQcm9wZXJ0aWVzJiByZXN1bHQpCkBAIC0yNzIsNiArMjc1LDExIEBAIGJvb2wgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgaWYgKHJl
c3VsdC5jaGFuZ2VkUHJvcGVydGllcyAmIEZpbHRlcnNDaGFuZ2VkKSB7CisgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmZpbHRlcnMpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zNTUsNiArMzYzLDcgQEAgcHVi
bGljOgogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoRmxvYXRTaXpl
KTsKICAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KEZsb2F0UmVjdCk7
CiAgICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBWZWN0b3I8
UmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVySUQ+JiBsYXllcnMpOworICAgIFJlbW90
ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYp
OwogCiAgICAgdm9pZCBpbmNyZWFzZUluZGVudCgpIHsgKyttX2luZGVudDsgfQogICAgIHZvaWQg
ZGVjcmVhc2VJbmRlbnQoKSB7IC0tbV9pbmRlbnQ7IEFTU0VSVChtX2luZGVudCA+PSAwKTsgfQpA
QCAtNDAyLDYgKzQxMSw2NyBAQCBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXll
clRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KFBsYXRmb3JtQ0FMYXllcgogICAgIHJldHVybiB0
czsKIH0KIAorUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0
cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmaWx0ZXJzKQoreworICAg
IFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IGF1dG8gZmls
dGVyID0gZmlsdGVycy5hdChpKTsKKyAgICAgICAgc3dpdGNoIChmaWx0ZXItPmdldE9wZXJhdGlv
blR5cGUoKSkgeworICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOgorICAg
ICAgICAgICAgdHMgPDwgInJlZmVyZW5jZSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKKyAgICAgICAgICAgIHRzIDw8ICJncmF5
c2NhbGUiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpTRVBJQToKKyAgICAgICAgICAgIHRzIDw8ICJzZXBpYSI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOgorICAgICAgICAgICAgdHMg
PDwgInNhdHVyYXRlIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6SFVFX1JPVEFURToKKyAgICAgICAgICAgIHRzIDw8ICJodWUgcm90YXRlIjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOgor
ICAgICAgICAgICAgdHMgPDwgImludmVydCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6CisgICAgICAgICAgICB0cyA8PCAib3BhY2l0
eSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJS
SUdIVE5FU1M6CisgICAgICAgICAgICB0cyA8PCAiYnJpZ2h0bmVzcyI7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOgorICAgICAgICAg
ICAgdHMgPDwgImNvbnRyYXN0IjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZp
bHRlck9wZXJhdGlvbjo6QkxVUjoKKyAgICAgICAgICAgIHRzIDw8ICJibHVyIjsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6Cisg
ICAgICAgICAgICB0cyA8PCAiZHJvcCBzaGFkb3ciOworICAgICAgICAgICAgYnJlYWs7CisjaWYg
RU5BQkxFKENTU19TSEFERVJTKQorICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q1VTVE9N
OgorICAgICAgICAgICAgdHMgPDwgImN1c3RvbSI7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlZBTElEQVRFRF9DVVNUT006CisgICAgICAgICAgICB0
cyA8PCAiY3VzdG9tICh2YWxpZGF0ZWQpIjsKKyAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKKyAgICAgICAgICAgIHRz
IDw8ICJwYXNzdGhyb3VnaCI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246Ok5PTkU6CisgICAgICAgICAgICB0cyA8PCAibm9uZSI7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpIDwgZmlsdGVycy5zaXplKCkgLSAx
KQorICAgICAgICAgICAgdHMgPDwgIiAiOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKIFJl
bW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJh
dG9yPDwoRmxvYXRQb2ludDNEIHBvaW50KQogewogICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW0mIHRzID0gKnRoaXM7CkBAIC01NTQsNiArNjI0LDkgQEAgc3RhdGljIHZvaWQgZHVtcENoYW5n
ZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMsIGNvbnN0IEhhc2hNYXA8UmVt
b3QKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90
ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKQogICAgICAgICAgICAg
ZHVtcFByb3BlcnR5PFNoYXJlYWJsZUJpdG1hcCo+KHRzLCAiYmFja2luZ1N0b3JlIiwgbGF5ZXJQ
cm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5iaXRtYXAoKSk7CiAKKyAgICAgICAgaWYgKGxheWVyUHJv
cGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpG
aWx0ZXJzQ2hhbmdlZCkKKyAgICAgICAgICAgIGR1bXBQcm9wZXJ0eTxGaWx0ZXJPcGVyYXRpb25z
Pih0cywgImZpbHRlcnMiLCBsYXllclByb3BlcnRpZXMuZmlsdGVycyk7CisKICAgICAgICAgdHMg
PDwgIikiOwogCiAgICAgICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0gYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1JlbW90ZUxheWVyVHJlZUhvc3QubW0KaW5kZXggMTRkNTAy
OS4uODE0ZGJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9SZW1v
dGVMYXllclRyZWVIb3N0Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUmVt
b3RlTGF5ZXJUcmVlSG9zdC5tbQpAQCAtMzEsNiArMzEsNyBAQAogI2ltcG9ydCAiU2hhcmVhYmxl
Qml0bWFwLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBvcnQgIldlYlByb2Nlc3NQ
cm94eS5oIgorI2ltcG9ydCA8V2ViQ29yZS9QbGF0Zm9ybUNBRmlsdGVycy5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybUxheWVyLmg+CiAKICNpbXBvcnQgPFF1YXJ0ekNvcmUvUXVhcnR6Q29y
ZS5oPgpAQCAtMjAzLDYgKzIwNCw5IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlSG9zdDo6Y29tbWl0
KGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbikKICAgICAgICAg
ICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBpbWFnZSA9IHByb3BlcnRpZXMuYmFja2luZ1N0b3Jl
LmJpdG1hcCgpLT5tYWtlQ0dJbWFnZUNvcHkoKTsKICAgICAgICAgICAgIGxheWVyLmNvbnRlbnRz
ID0gKGlkKWltYWdlLmdldCgpOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKHByb3BlcnRpZXMu
Y2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RmlsdGVyc0No
YW5nZWQpCisgICAgICAgICAgICBQbGF0Zm9ybUNBRmlsdGVyczo6c2V0RmlsdGVyc09uTGF5ZXIo
bGF5ZXIsIHByb3BlcnRpZXMuZmlsdGVycyk7CiAgICAgfQogCiAgICAgZm9yIChhdXRvIGRlc3Ry
b3llZExheWVyIDogdHJhbnNhY3Rpb24uZGVzdHJveWVkTGF5ZXJzKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FMYXllclJlbW90
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FM
YXllclJlbW90ZS5jcHAKaW5kZXggM2FmYmQ1NS4uMWU3ZGFmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBTGF5ZXJSZW1vdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUxh
eWVyUmVtb3RlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGlj
c0xheWVyQ0EuaD4KICNpbXBvcnQgPFdlYkNvcmUvTGVuZ3RoRnVuY3Rpb25zLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1BsYXRmb3JtQ0FGaWx0ZXJzLmg+CisjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3Jt
Q0FMYXllck1hYy5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaWxlZEJhY2tpbmcuaD4KICNpbXBvcnQg
PHd0Zi9DdXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMzc1LDE1
ICszNzYsMTggQEAgdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1vdGU6OnNldE9wYWNpdHkoZmxvYXQg
dmFsdWUpCiAjaWYgRU5BQkxFKENTU19GSUxURVJTKQogdm9pZCBQbGF0Zm9ybUNBTGF5ZXJSZW1v
dGU6OnNldEZpbHRlcnMoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKIHsKKyAgICBt
X3Byb3BlcnRpZXMuZmlsdGVycyA9IGZpbHRlcnM7CisgICAgbV9wcm9wZXJ0aWVzLm5vdGVQcm9w
ZXJ0aWVzQ2hhbmdlZChSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6RmlsdGVyc0NoYW5nZWQp
OwogfQogCiB2b2lkIFBsYXRmb3JtQ0FMYXllclJlbW90ZTo6Y29weUZpbHRlcnNGcm9tKGNvbnN0
IFBsYXRmb3JtQ0FMYXllciogc291cmNlTGF5ZXIpCiB7CisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKIGJvb2wgUGxhdGZvcm1DQUxheWVyUmVtb3RlOjpmaWx0ZXJzQ2FuQmVDb21wb3Np
dGVkKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZpbHRlcnMpCiB7Ci0gICAgcmV0dXJuIGZhbHNl
OyAvLyBUaGlzIHdpbGwgcHJvYmFibHkgd29yayB0aGUgc2FtZSBhcyBNYWMgZXZlbnR1YWxseT8K
KyAgICByZXR1cm4gUGxhdGZvcm1DQUxheWVyTWFjOjpmaWx0ZXJzQ2FuQmVDb21wb3NpdGVkKGZp
bHRlcnMpOwogfQogI2VuZGlmCiAK
</data>
<flag name="review"
          id="237412"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="237413"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
      

    </bug>

</bugzilla>