<?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>179810</bug_id>
          
          <creation_ts>2017-11-16 18:21:36 -0800</creation_ts>
          <short_desc>[Web Animations] Allow KeyframeEffect to support CSS property animation blending</short_desc>
          <delta_ts>2017-11-16 19:29:01 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=122912</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>dino</cc>
    
    <cc>dstockwell</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1372937</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-16 18:21:36 -0800</bug_when>
    <thetext>[Web Animations] Allow KeyframeEffect to support CSS property animation blending</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372940</commentid>
    <comment_count>1</comment_count>
      <attachid>327142</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-16 18:25:37 -0800</bug_when>
    <thetext>Created attachment 327142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372956</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2017-11-16 19:25:13 -0800</bug_when>
    <thetext>Committed r224957: &lt;https://trac.webkit.org/changeset/224957&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372957</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-16 19:29:01 -0800</bug_when>
    <thetext>&lt;rdar://problem/35606877&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327142</attachid>
            <date>2017-11-16 18:25:37 -0800</date>
            <delta_ts>2017-11-16 19:22:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179810-20171116182536.patch</filename>
            <type>text/plain</type>
            <size>38986</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0OTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDg4NTFmOGExM2NlODk4
ZjE3MWNjNzQwMWEzZjVmM2I3MzZjNTY0MC4uY2ZjNjBmZmNlMGFlZjQ3OTk4OGEyNTRkN2M5OGM5
YTU0MDk5NWQyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE3LTExLTE2ICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0BhcHBsZS5jb20+CiAKKyAgICAgICAgW1dlYiBBbmltYXRpb25z
XSBBbGxvdyBLZXlmcmFtZUVmZmVjdCB0byBzdXBwb3J0IENTUyBwcm9wZXJ0eSBhbmltYXRpb24g
YmxlbmRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3OTgxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIHVzZWQgdG8gcGFzcyBudWxscHRyIGluc3RlYWQgb2YgYSB2YWxpZCBBbmltYXRpb25CYXNl
IHdoZW4gY2FsbGluZyBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVzKCkKKyAg
ICAgICAgaW4gS2V5ZnJhbWVFZmZlY3Q6OmFwcGx5QXRMb2NhbFRpbWUoKSB3aGVuIGJsZW5kaW5n
IENTUyBzdHlsZXMgZHVyaW5nIGEga2V5ZnJhbWUgYW5pbWF0aW9uLiBXaXRob3V0IHRoaXMKKyAg
ICAgICAgQW5pbWF0aW9uQmFzZSwgc29tZSBibGVuZGluZyBmdW5jdGlvbnMgd291bGQgY3Jhc2gg
YXMgY2VydGFpbiBzdXBwb3J0aW5nIGNhbGxzIGNvdWxkbid0IGJlIG1hZGUuCisKKyAgICAgICAg
V2Ugbm93IGFkZCBhIG5ldyBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50IHZpcnR1YWwgaW50ZXJm
YWNlIHRoYXQgYm90aCBLZXlmcmFtZUVmZmVjdCBhbmQgQW5pbWF0aW9uQmFzZQorICAgICAgICBp
bXBsZW1lbnQgYW5kIHRoYXQgQ1NTUHJvcGVydHlBbmltYXRpb246OmJsZW5kUHJvcGVydGllcygp
IHRha2UgYXMgYSBwYXJhbWV0ZXIgaW4gb3JkZXIgdG8gc3VwcG9ydAorICAgICAgICBibGVuZGlu
ZyBjb2RlLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGFuaW1hdGlvbi9DU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50Lmg6IEFkZGVkLgor
ICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6YXBwbHlBdExvY2FsVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUVmZmVjdDo6cmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJh
bWVFZmZlY3Q6OmN1cnJlbnRTdHlsZSBjb25zdCk6CisgICAgICAgICogYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0Lmg6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6aXNBY2NlbGVyYXRlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25CYXNlOjp0cmFuc2Zvcm1GdW5jdGlvbkxpc3RzTWF0
Y2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uQmFzZTo6ZmlsdGVyRnVuY3Rp
b25MaXN0c01hdGNoIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvbkJhc2U6OmJh
Y2tkcm9wRmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoIGNvbnN0KToKKyAgICAgICAgKiBwYWdlL2Fu
aW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpibGVu
ZEZ1bmMpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGaWx0ZXJPcGVyYXRpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OmJsZW5kRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNyb3NzZmFkZUJs
ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBlckFjY2VsZXJhdGVkQmFja2Ry
b3BGaWx0ZXI6OmJsZW5kIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5V3JhcHBl
clNoYWRvdzo6YmxlbmRTaW1wbGVPck1hdGNoZWRTaGFkb3dMaXN0cyBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpQcm9wZXJ0eVdyYXBwZXJTaGFkb3c6OmJsZW5kTWlzbWF0Y2hlZFNoYWRvd0xp
c3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVu
ZFByb3BlcnRpZXMpOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmg6CisKKzIwMTctMTEtMTYgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQGFwcGxlLmNvbT4K
KwogICAgICAgICBbV2ViIEFuaW1hdGlvbnNdIEV4cHJlc3MgdGltZSBpbiBtaWxsaXNlY29uZHMg
dGhyb3VnaCB0aGUgQVBJCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzk3OTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCmluZGV4IGNlOTU4OWEwN2Y1ZWY3ZjRiOGEyZGQxNmZiNzY0OTQ1NjZl
ZTgwMjguLmI1MDY3NzU1NDdmN2RjMTk2NGYxZTYyMmVkNDM2YmYwMDUyNDBhMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4
NTUsNiArMTg1NSw3IEBACiAJCTcxMDI1RUUyMUY5OUYxRUMwMDRBMjUwQyAvKiBKU1dlYkFuaW1h
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEw
MjVFRDgxRjk5RjFBNjAwNEEyNTBDIC8qIEpTV2ViQW5pbWF0aW9uLmggKi87IH07CiAJCTcxMTc0
NDU5MTRCQzM0RUMwMEVFNUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMTc0NDU3MTRCQzM0RTIwMEVF
NUZDOCAvKiBTVkdUZXh0TWV0cmljc0J1aWxkZXIuaCAqLzsgfTsKIAkJNzExOEZFRDUxNTY4NUND
NjAwMzBCNzlBIC8qIEpTU1ZHVmlld1NwZWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDcxMThGRUQzMTU2ODVDQzYwMDMwQjc5QSAvKiBKU1NWR1ZpZXdT
cGVjLmggKi87IH07CisJCTcxMzE3MTM0MUZCRTc4REIwMEY3NThERSAvKiBDU1NQcm9wZXJ0eUJs
ZW5kaW5nQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3MTMxNzEzMjFGQkU3OEM1MDBGNzU4REUgLyogQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVu
dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcx
MzQ0OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0NDk2QzE0Njk0MUIzMDA3MjAz
MTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTcxNTM3QTAxMTQ2QkQ5RDcwMDhCRDYxNSAvKiBTVkdQYXRoRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzE1Mzc5
RkYxNDZCRDlENjAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmggKi87IH07CiAJCTcxNTU2Q0IyMUY5
RjA5QkEwMEU3OEQwOCAvKiBBbmltYXRpb25FZmZlY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxNTU2Q0FEMUY5RjA5OUQwMEU3OEQwOCAvKiBBbmlt
YXRpb25FZmZlY3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtODU3MSw2ICs4NTcyLDcgQEAKIAkJNzEyMTU3QzAxRENDQ0EwNzAwQUE3QTkyIC8q
IG1hY29zLWZ1bGxzY3JlZW4tbWVkaWEtY29udHJvbHMuY3NzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7
IHBhdGggPSAibWFjb3MtZnVsbHNjcmVlbi1tZWRpYS1jb250cm9scy5jc3MiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk3MTIxNTdDMTFEQ0NDQTA3MDBBQTdBOTIgLyogbWFjb3MtZnVs
bHNjcmVlbi1tZWRpYS1jb250cm9scy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlw
dDsgcGF0aCA9ICJtYWNvcy1mdWxsc2NyZWVuLW1lZGlhLWNvbnRyb2xzLmpzIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzMDE0MUQxREM5QzA4NjAwQ0EzQTg4IC8qIHBpcC1zdXBw
b3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInBpcC1zdXBw
b3J0LmpzIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzEzMTcxMzIxRkJFNzhDNTAw
Rjc1OERFIC8qIENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MTM0NDk2QjE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29u
dGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhD
b250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFC
MzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU1ZHTGVuZ3RoQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk3MTNFNzBBRjE3MzNFOEIzMDBBMjJEMDAgLyogcGx1Z0lucy5qcyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsg
cGF0aCA9IHBsdWdJbnMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTg0OCwx
MiArMTU4NTAsMTIgQEAKIAkJCQlBOTFDOUZCRDFCNjU4NkRFMDBBRkZENTQgLyogQWNjZXNzaWJp
bGl0eVRyZWUuaCAqLywKIAkJCQlBOTFDOUZDMDFCNjU5QTY3MDBBRkZENTQgLyogQWNjZXNzaWJp
bGl0eVRyZWVJdGVtLmNwcCAqLywKIAkJCQlBOTFDOUZDMTFCNjU5QTY3MDBBRkZENTQgLyogQWNj
ZXNzaWJpbGl0eVRyZWVJdGVtLmggKi8sCi0JCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8q
IEFYT2JqZWN0Q2FjaGUuY3BwICovLAotCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBB
WE9iamVjdENhY2hlLmggKi8sCi0JCQkJOTFDOUYyRjgxQUUzQkUyNDAwOTVCNjFDIC8qIEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50LmggKi8sCiAJCQkJQTk0MUFFNkIxRkI2MkJFNTAwMEY2RjcxIC8q
IEFjY2Vzc2libGVOb2RlLmNwcCAqLywKIAkJCQlBOTQxQUU2RDFGQjYyQkU3MDAwRjZGNzEgLyog
QWNjZXNzaWJsZU5vZGUuaCAqLywKIAkJCQlBOTQxQUU2RTFGQjYyQkVDMDAwRjZGNzEgLyogQWNj
ZXNzaWJsZU5vZGUuaWRsICovLAorCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9i
amVjdENhY2hlLmNwcCAqLywKKwkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmpl
Y3RDYWNoZS5oICovLAorCQkJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBhY2Nlc3NpYmlsaXR5OwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE4NjQyLDYgKzE4NjQ0LDcgQEAKIAkJCQk3MTAy
NUVDNjFGOTlGMDk2MDA0QTI1MEMgLyogQW5pbWF0aW9uVGltZWxpbmUuY3BwICovLAogCQkJCTcx
MDI1RUM3MUY5OUYwOTYwMDRBMjUwQyAvKiBBbmltYXRpb25UaW1lbGluZS5oICovLAogCQkJCTcx
MDI1RUM5MUY5OUYwOTYwMDRBMjUwQyAvKiBBbmltYXRpb25UaW1lbGluZS5pZGwgKi8sCisJCQkJ
NzEzMTcxMzIxRkJFNzhDNTAwRjc1OERFIC8qIENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaCAq
LywKIAkJCQk3MTAyNUVDNDFGOTlGMDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5jcHAg
Ki8sCiAJCQkJNzEwMjVFQzUxRjk5RjA5NjAwNEEyNTBDIC8qIERvY3VtZW50VGltZWxpbmUuaCAq
LywKIAkJCQk3MTAyNUVDQTFGOTlGMDk2MDA0QTI1MEMgLyogRG9jdW1lbnRUaW1lbGluZS5pZGwg
Ki8sCkBAIC0yNjQ2OCw2ICsyNjQ3MSw3IEBACiAJCQkJRTFFRDhBQzMwQ0M0OUJFMDAwQkZDNTU3
IC8qIENTU1ByaW1pdGl2ZVZhbHVlTWFwcGluZ3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEU2
Q0ZGMEExOTg5Q0EwMDdGQjhDNSAvKiBDU1NQcm9wZXJ0eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzhEMDJCQzYxNTRBMThERjAwQjYyRDA1IC8qIENTU1Byb3BlcnR5QW5pbWF0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MTMxNzEzNDFGQkU3OERCMDBGNzU4REUgLyogQ1NTUHJvcGVydHlCbGVu
ZGluZ0NsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjU2NTgwRjQwOUQxMkIyMDAwMEU2MUQ3
IC8qIENTU1Byb3BlcnR5TmFtZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTk0NkQzNzQ2MUQ2RDAx
RDQwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTQ5
Qzc3MDUxRDZFMzlFQTAwQzBERTRGIC8qIENTU1Byb3BlcnR5UGFyc2VySGVscGVycy5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTUHJvcGVy
dHlCbGVuZGluZ0NsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Byb3BlcnR5
QmxlbmRpbmdDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjljM2JiMWE3NzE5YzU1N2FhYTlkMGRhYTBh
NGMxOWE0NWE5Y2NhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUmVuZGVyRWxlbWVudDsKK2NsYXNzIFJlbmRlclN0eWxl
OworCitjbGFzcyBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50IHsKK3B1YmxpYzoKKworICAgIHZp
cnR1YWwgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBj
b25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBmaWx0ZXJG
dW5jdGlvbkxpc3RzTWF0Y2goKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHRyYW5zZm9y
bUZ1bmN0aW9uTGlzdHNNYXRjaCgpIGNvbnN0ID0gMDsKKyNpZiBFTkFCTEUoRklMVEVSU19MRVZF
TF8yKQorICAgIHZpcnR1YWwgYm9vbCBiYWNrZHJvcEZpbHRlckZ1bmN0aW9uTGlzdHNNYXRjaCgp
IGNvbnN0ID0gMDsKKyNlbmRpZgorCisgICAgdmlydHVhbCB+Q1NTUHJvcGVydHlCbGVuZGluZ0Ns
aWVudCgpID0gZGVmYXVsdDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IDNiZTVmYjQzYTViYjdi
MGMyYjkwNGUwYmIzMmY2Yzk3ZmFkY2M5MzAuLjQ4ZDlmNGM5MzdjNzBkOGI5NjA3YTNiOGZjZjg2
YTNjMzgwZjhmNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcApAQCAtMTM4LDcgKzEzOCwxOSBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseUF0TG9j
YWxUaW1lKFNlY29uZHMgbG9jYWxUaW1lLCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bAogCiAgICAg
Ly8gRklYTUU6IFRoaXMgd2lsbCBjcmFzaCBpZiB3ZSBhdHRlbXB0IHRvIGFuaW1hdGUgcHJvcGVy
dGllcyB0aGF0IHJlcXVpcmUgYW4gQW5pbWF0aW9uQmFzZS4KICAgICBmb3IgKGF1dG8gcHJvcGVy
dHlJZCA6IG1fa2V5ZnJhbWVzWzBdLnByb3BlcnRpZXMpCi0gICAgICAgIENTU1Byb3BlcnR5QW5p
bWF0aW9uOjpibGVuZFByb3BlcnRpZXMobnVsbHB0ciwgcHJvcGVydHlJZCwgJnRhcmdldFN0eWxl
LCAmbV9rZXlmcmFtZXNbMF0uc3R5bGUsICZtX2tleWZyYW1lc1sxXS5zdHlsZSwgcHJvZ3Jlc3Mp
OworICAgICAgICBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVzKHRoaXMsIHBy
b3BlcnR5SWQsICZ0YXJnZXRTdHlsZSwgJm1fa2V5ZnJhbWVzWzBdLnN0eWxlLCAmbV9rZXlmcmFt
ZXNbMV0uc3R5bGUsIHByb2dyZXNzKTsKK30KKworUmVuZGVyRWxlbWVudCogS2V5ZnJhbWVFZmZl
Y3Q6OnJlbmRlcmVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90YXJnZXQgPyBtX3RhcmdldC0+
cmVuZGVyZXIoKSA6IG51bGxwdHI7Cit9CisKK2NvbnN0IFJlbmRlclN0eWxlJiBLZXlmcmFtZUVm
ZmVjdDo6Y3VycmVudFN0eWxlKCkgY29uc3QKK3sKKyAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpKQorICAgICAgICByZXR1cm4gcmVuZGVyZXItPnN0eWxlKCk7CisgICAg
cmV0dXJuIFJlbmRlclN0eWxlOjpkZWZhdWx0U3R5bGUoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZm
ZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRleCA2
MGU5YzIzMzZjOWFkMmVhMzU4OGQ3N2NjNTk3ZjJmOGVkMmE4YTVmLi5kNGQzM2RhNWFlZGQ3OGJl
ZDY3ODZjYmJmNWY4Njk4ODQxNDYxN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3QuaApAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
ICJBbmltYXRpb25FZmZlY3QuaCIKKyNpbmNsdWRlICJDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAg
LTM4LDcgKzM5LDggQEAgc3RydWN0IEtleWZyYW1lIHsKICAgICBWZWN0b3I8Q1NTUHJvcGVydHlJ
RD4gcHJvcGVydGllczsKIH07CiAKLWNsYXNzIEtleWZyYW1lRWZmZWN0IGZpbmFsIDogcHVibGlj
IEFuaW1hdGlvbkVmZmVjdCB7CitjbGFzcyBLZXlmcmFtZUVmZmVjdCBmaW5hbCA6IHB1YmxpYyBB
bmltYXRpb25FZmZlY3QKKyAgICAsIHB1YmxpYyBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50IHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgRXhjZXB0aW9uT3I8UmVmPEtleWZyYW1lRWZmZWN0Pj4gY3Jl
YXRlKEpTQzo6RXhlY1N0YXRlJiwgRWxlbWVudCosIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+
JiYpOwogICAgIH5LZXlmcmFtZUVmZmVjdCgpIHsgfQpAQCAtNDcsNiArNDksMTUgQEAgcHVibGlj
OgogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEtleWZyYW1lcyhKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+JiYpOwogICAgIHZvaWQgYXBwbHlBdExvY2FsVGltZShT
ZWNvbmRzLCBSZW5kZXJTdHlsZSYpIG92ZXJyaWRlOwogCisgICAgUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIoKSBjb25zdCBvdmVycmlkZTsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0
eWxlKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKyAgICBib29sIGZpbHRlckZ1bmN0aW9uTGlzdHNNYXRj
aCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgYm9vbCB0cmFuc2Zvcm1G
dW5jdGlvbkxpc3RzTWF0Y2goKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQorI2lm
IEVOQUJMRShGSUxURVJTX0xFVkVMXzIpCisgICAgYm9vbCBiYWNrZHJvcEZpbHRlckZ1bmN0aW9u
TGlzdHNNYXRjaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBLZXlmcmFtZUVmZmVjdChFbGVtZW50Kik7CiAgICAgRXhjZXB0aW9uT3I8
dm9pZD4gcHJvY2Vzc0tleWZyYW1lcyhKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6U3Ryb25nPEpTQzo6
SlNPYmplY3Q+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9u
QmFzZS5oCmluZGV4IDE0NDJkZGZlNWY1YmQ0YmE5NTA3YjQyNWZlMTQzN2E0ODAyZGM1NWEuLjk0
Y2YwYzQ3ZDk0NmExYjdjODVlYTgwOGNlZGViNDZkZjM5NzQyZmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVy
dHlCbGVuZGluZ0NsaWVudC5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgogCkBAIC00Myw3ICs0NCw4IEBAIGNsYXNzIFJl
bmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFRpbWluZ0Z1bmN0aW9uOwog
Ci1jbGFzcyBBbmltYXRpb25CYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uQmFzZT4g
eworY2xhc3MgQW5pbWF0aW9uQmFzZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvbkJhc2U+
CisgICAgLCBwdWJsaWMgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCB7CiAgICAgZnJpZW5kIGNs
YXNzIENvbXBvc2l0ZUFuaW1hdGlvbjsKICAgICBmcmllbmQgY2xhc3MgQ1NTUHJvcGVydHlBbmlt
YXRpb247CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBAIC01Miw4ICs1NCw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5BbmltYXRpb25CYXNlKCk7CiAKICAgICBFbGVtZW50KiBlbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50LmdldCgpOyB9Ci0gICAgY29uc3QgUmVuZGVy
U3R5bGUmIGN1cnJlbnRTdHlsZSgpIGNvbnN0OwotICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
KCkgY29uc3Q7CisgICAgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSgpIGNvbnN0IG92
ZXJyaWRlOworICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAg
ICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGNvbXBvc2l0ZWRSZW5kZXJlcigpIGNvbnN0OwogICAg
IHZvaWQgY2xlYXIoKTsKIApAQCAtMTI1LDcgKzEyNyw3IEBAIHB1YmxpYzoKICAgICBib29sIHdh
aXRpbmdGb3JTdGFydFRpbWUoKSBjb25zdCB7IHJldHVybiBtX2FuaW1hdGlvblN0YXRlID09IEFu
aW1hdGlvblN0YXRlOjpTdGFydFdhaXRSZXNwb25zZTsgfQogICAgIGJvb2wgd2FpdGluZ0ZvclN0
eWxlQXZhaWxhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9hbmltYXRpb25TdGF0ZSA9PSBBbmltYXRp
b25TdGF0ZTo6U3RhcnRXYWl0U3R5bGVBdmFpbGFibGU7IH0KIAotICAgIGJvb2wgaXNBY2NlbGVy
YXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNBY2NlbGVyYXRlZDsgfQorICAgIGJvb2wgaXNBY2Nl
bGVyYXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNBY2NlbGVyYXRlZDsgfQogCiAg
ICAgdmlydHVhbCBzdGQ6Om9wdGlvbmFsPFNlY29uZHM+IHRpbWVUb05leHRTZXJ2aWNlKCk7CiAK
QEAgLTE3OSwxMCArMTgxLDEwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAotICAgIGJvb2wgdHJhbnNmb3JtRnVuY3Rpb25MaXN0c01hdGNoKCkgY29uc3QgeyByZXR1
cm4gbV90cmFuc2Zvcm1GdW5jdGlvbkxpc3RzTWF0Y2g7IH0KLSAgICBib29sIGZpbHRlckZ1bmN0
aW9uTGlzdHNNYXRjaCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyRnVuY3Rpb25MaXN0c01hdGNo
OyB9CisgICAgYm9vbCB0cmFuc2Zvcm1GdW5jdGlvbkxpc3RzTWF0Y2goKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiBtX3RyYW5zZm9ybUZ1bmN0aW9uTGlzdHNNYXRjaDsgfQorICAgIGJvb2wgZmls
dGVyRnVuY3Rpb25MaXN0c01hdGNoKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9maWx0ZXJG
dW5jdGlvbkxpc3RzTWF0Y2g7IH0KICNpZiBFTkFCTEUoRklMVEVSU19MRVZFTF8yKQotICAgIGJv
b2wgYmFja2Ryb3BGaWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2goKSBjb25zdCB7IHJldHVybiBtX2Jh
Y2tkcm9wRmlsdGVyRnVuY3Rpb25MaXN0c01hdGNoOyB9CisgICAgYm9vbCBiYWNrZHJvcEZpbHRl
ckZ1bmN0aW9uTGlzdHNNYXRjaCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fYmFja2Ryb3BG
aWx0ZXJGdW5jdGlvbkxpc3RzTWF0Y2g7IH0KICNlbmRpZgogCiAgICAgLy8gRnJlZXplIHRoZSBh
bmltYXRpb247IHVzZWQgYnkgRHVtcFJlbmRlclRyZWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5jcHAKaW5kZXggMDIwNGI5
NjcwZDQ4ODJkN2I5ZjE2Y2QyYWM4ZDg5YjU2MjM3Y2QxYS4uOWU1ZGMyYzhiOWIwMTUwYWMzOGJi
MjM0MmNjNGYxNmMyYWMwYTRlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQ1NTUHJvcGVydHlBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
YW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcApAQCAtMzAsMTMgKzMwLDEzIEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlBbmltYXRpb24uaCIKIAot
I2luY2x1ZGUgIkFuaW1hdGlvbkJhc2UuaCIKICNpbmNsdWRlICJDU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NDcm9zc2ZhZGVWYWx1ZS5oIgogI2luY2x1ZGUgIkNT
U0ZpbHRlckltYWdlVmFsdWUuaCIKICNpbmNsdWRlICJDU1NJbWFnZUdlbmVyYXRvclZhbHVlLmgi
CiAjaW5jbHVkZSAiQ1NTSW1hZ2VWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
LmgiCisjaW5jbHVkZSAiQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudC5oIgogI2luY2x1ZGUgIkNT
U1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkNh
bGN1bGF0aW9uVmFsdWUuaCIKQEAgLTY1LDM3ICs2NSwzNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBpbmxpbmUgaW50IGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwg
aW50IGZyb20sIGludCB0bywgZG91YmxlIHByb2dyZXNzKQorc3RhdGljIGlubGluZSBpbnQgYmxl
bmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLCBpbnQgZnJvbSwgaW50IHRv
LCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0dXJuIGJsZW5kKGZyb20sIHRvLCBwcm9ncmVz
cyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZG91YmxlIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25C
YXNlKiwgZG91YmxlIGZyb20sIGRvdWJsZSB0bywgZG91YmxlIHByb2dyZXNzKQorc3RhdGljIGlu
bGluZSBkb3VibGUgYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLCBk
b3VibGUgZnJvbSwgZG91YmxlIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgcmV0dXJuIGJs
ZW5kKGZyb20sIHRvLCBwcm9ncmVzcyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgZmxvYXQgYmxlbmRG
dW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBmbG9hdCBmcm9tLCBmbG9hdCB0bywgZG91YmxlIHBy
b2dyZXNzKQorc3RhdGljIGlubGluZSBmbG9hdCBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlC
bGVuZGluZ0NsaWVudCosIGZsb2F0IGZyb20sIGZsb2F0IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7
CiAgICAgcmV0dXJuIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoZnJvbSArICh0byAtIGZyb20pICog
cHJvZ3Jlc3MpOwogfQogCi1zdGF0aWMgaW5saW5lIENvbG9yIGJsZW5kRnVuYyhjb25zdCBBbmlt
YXRpb25CYXNlKiwgY29uc3QgQ29sb3ImIGZyb20sIGNvbnN0IENvbG9yJiB0bywgZG91YmxlIHBy
b2dyZXNzKQorc3RhdGljIGlubGluZSBDb2xvciBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlC
bGVuZGluZ0NsaWVudCosIGNvbnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRvdWJs
ZSBwcm9ncmVzcykKIHsKICAgICByZXR1cm4gYmxlbmQoZnJvbSwgdG8sIHByb2dyZXNzKTsKIH0K
IAotc3RhdGljIGlubGluZSBMZW5ndGggYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBj
b25zdCBMZW5ndGgmIGZyb20sIGNvbnN0IExlbmd0aCYgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3N0
YXRpYyBpbmxpbmUgTGVuZ3RoIGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xp
ZW50KiwgY29uc3QgTGVuZ3RoJiBmcm9tLCBjb25zdCBMZW5ndGgmIHRvLCBkb3VibGUgcHJvZ3Jl
c3MpCiB7CiAgICAgcmV0dXJuIGJsZW5kKGZyb20sIHRvLCBwcm9ncmVzcyk7CiB9CiAKLXN0YXRp
YyBpbmxpbmUgTGVuZ3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwg
Y29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVuZ3RoU2l6ZSYgdG8sIGRvdWJsZSBwcm9n
cmVzcykKK3N0YXRpYyBpbmxpbmUgTGVuZ3RoU2l6ZSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVy
dHlCbGVuZGluZ0NsaWVudCogYW5pbSwgY29uc3QgTGVuZ3RoU2l6ZSYgZnJvbSwgY29uc3QgTGVu
Z3RoU2l6ZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICByZXR1cm4geyBibGVuZEZ1bmMo
YW5pbSwgZnJvbS53aWR0aCwgdG8ud2lkdGgsIHByb2dyZXNzKSwgYmxlbmRGdW5jKGFuaW0sIGZy
b20uaGVpZ2h0LCB0by5oZWlnaHQsIHByb2dyZXNzKSB9OwogfQogCi1zdGF0aWMgaW5saW5lIFNo
YWRvd1N0eWxlIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBTaGFkb3dTdHls
ZSBmcm9tLCBTaGFkb3dTdHlsZSB0bywgZG91YmxlIHByb2dyZXNzKQorc3RhdGljIGlubGluZSBT
aGFkb3dTdHlsZSBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5p
bSwgU2hhZG93U3R5bGUgZnJvbSwgU2hhZG93U3R5bGUgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsK
ICAgICBpZiAoZnJvbSA9PSB0bykKICAgICAgICAgcmV0dXJuIHRvOwpAQCAtMTA2LDcgKzEwNiw3
IEBAIHN0YXRpYyBpbmxpbmUgU2hhZG93U3R5bGUgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJh
c2UqIGFuaW0sIFNoYWRvd1N0eWxlIGZyb20sCiAgICAgcmV0dXJuIHJlc3VsdCA+IDAgPyBOb3Jt
YWwgOiBJbnNldDsKIH0KIAotc3RhdGljIGlubGluZSBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0
YT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IFNoYWRvd0RhdGEq
IGZyb20sIGNvbnN0IFNoYWRvd0RhdGEqIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitzdGF0aWMgaW5s
aW5lIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVy
dHlCbGVuZGluZ0NsaWVudCogYW5pbSwgY29uc3QgU2hhZG93RGF0YSogZnJvbSwgY29uc3QgU2hh
ZG93RGF0YSogdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBBU1NFUlQoZnJvbSAmJiB0byk7
CiAgICAgaWYgKGZyb20tPnN0eWxlKCkgIT0gdG8tPnN0eWxlKCkpCkBAIC0xMjAsMTQgKzEyMCwx
NCBAQCBzdGF0aWMgaW5saW5lIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZEZ1bmMo
Y29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgYwogICAgICAgICBibGVuZChmcm9tLT5jb2xvcigp
LCB0by0+Y29sb3IoKSwgcHJvZ3Jlc3MpKTsKIH0KIAotc3RhdGljIGlubGluZSBUcmFuc2Zvcm1P
cGVyYXRpb25zIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltYXRpb24sIGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbnMmIGZyb20sIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHRv
LCBkb3VibGUgcHJvZ3Jlc3MpCitzdGF0aWMgaW5saW5lIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxl
bmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW1hdGlvbiwgY29uc3Qg
VHJhbnNmb3JtT3BlcmF0aW9ucyYgZnJvbSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdG8s
IGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBpZiAoYW5pbWF0aW9uLT50cmFuc2Zvcm1GdW5jdGlv
bkxpc3RzTWF0Y2goKSkKICAgICAgICAgcmV0dXJuIHRvLmJsZW5kQnlNYXRjaGluZ09wZXJhdGlv
bnMoZnJvbSwgcHJvZ3Jlc3MpOwogICAgIHJldHVybiB0by5ibGVuZEJ5VXNpbmdNYXRyaXhJbnRl
cnBvbGF0aW9uKGZyb20sIHByb2dyZXNzLCBpczxSZW5kZXJCb3g+KGFuaW1hdGlvbi0+cmVuZGVy
ZXIoKSkgPyBkb3duY2FzdDxSZW5kZXJCb3g+KCphbmltYXRpb24tPnJlbmRlcmVyKCkpLmJvcmRl
ckJveFJlY3QoKS5zaXplKCkgOiBMYXlvdXRTaXplKCkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJl
ZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBD
bGlwUGF0aE9wZXJhdGlvbiogZnJvbSwgQ2xpcFBhdGhPcGVyYXRpb24qIHRvLCBkb3VibGUgcHJv
Z3Jlc3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxDbGlwUGF0aE9wZXJhdGlvbj4gYmxlbmRGdW5j
KGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLCBDbGlwUGF0aE9wZXJhdGlvbiogZnJv
bSwgQ2xpcFBhdGhPcGVyYXRpb24qIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAgICAgaWYgKCFm
cm9tIHx8ICF0bykKICAgICAgICAgcmV0dXJuIHRvOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRp
YyBpbmxpbmUgUmVmUHRyPENsaXBQYXRoT3BlcmF0aW9uPiBibGVuZEZ1bmMoY29uc3QgQW5pbWF0
aW9uQmFzZSosIENsaXBQYXRoCiAgICAgcmV0dXJuIFNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OmNy
ZWF0ZSh0b1NoYXBlLmJsZW5kKGZyb21TaGFwZSwgcHJvZ3Jlc3MpKTsKIH0KIAotc3RhdGljIGlu
bGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBT
aGFwZVZhbHVlKiBmcm9tLCBTaGFwZVZhbHVlKiB0bywgZG91YmxlIHByb2dyZXNzKQorc3RhdGlj
IGlubGluZSBSZWZQdHI8U2hhcGVWYWx1ZT4gYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5Qmxl
bmRpbmdDbGllbnQqLCBTaGFwZVZhbHVlKiBmcm9tLCBTaGFwZVZhbHVlKiB0bywgZG91YmxlIHBy
b2dyZXNzKQogewogICAgIGlmICghZnJvbSB8fCAhdG8pCiAgICAgICAgIHJldHVybiB0bzsKQEAg
LTE2NSwxMyArMTY1LDEzIEBAIHN0YXRpYyBpbmxpbmUgUmVmUHRyPFNoYXBlVmFsdWU+IGJsZW5k
RnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgU2hhcGVWYWx1ZSogZnJvCiAgICAgcmV0dXJuIFNo
YXBlVmFsdWU6OmNyZWF0ZSh0b1NoYXBlLmJsZW5kKGZyb21TaGFwZSwgcHJvZ3Jlc3MpLCB0by0+
Y3NzQm94KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJs
ZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiwgRmlsdGVyT3BlcmF0aW9uKiBmcm9tT3AsIEZp
bHRlck9wZXJhdGlvbiogdG9PcCwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhy
b3VnaCA9IGZhbHNlKQorc3RhdGljIGlubGluZSBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVu
ZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCosIEZpbHRlck9wZXJhdGlvbiog
ZnJvbU9wLCBGaWx0ZXJPcGVyYXRpb24qIHRvT3AsIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVu
ZFRvUGFzc3Rocm91Z2ggPSBmYWxzZSkKIHsKICAgICBBU1NFUlQodG9PcCk7CiAgICAgcmV0dXJu
IHRvT3AtPmJsZW5kKGZyb21PcCwgcHJvZ3Jlc3MsIGJsZW5kVG9QYXNzdGhyb3VnaCk7CiB9CiAK
LXN0YXRpYyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVuZEZpbHRlck9wZXJhdGlvbnMoY29u
c3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIGZyb20sIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitzdGF0aWMgaW5saW5l
IEZpbHRlck9wZXJhdGlvbnMgYmxlbmRGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IENTU1Byb3BlcnR5
QmxlbmRpbmdDbGllbnQqIGFuaW0sICBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIEZpbHRlck9w
ZXJhdGlvbnMgcmVzdWx0OwogICAgIHNpemVfdCBmcm9tU2l6ZSA9IGZyb20ub3BlcmF0aW9ucygp
LnNpemUoKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJhdGlv
bnMgYmxlbmRGaWx0ZXJPcGVyYXRpb25zKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sCiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGluZSBGaWx0ZXJPcGVyYXRpb25zIGJsZW5k
RnVuYyhjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
cm9tLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzLCBib29sIGFu
aW1hdGluZ0JhY2tkcm9wRmlsdGVyID0gZmFsc2UpCitzdGF0aWMgaW5saW5lIEZpbHRlck9wZXJh
dGlvbnMgYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIGNv
bnN0IEZpbHRlck9wZXJhdGlvbnMmIGZyb20sIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIHRvLCBk
b3VibGUgcHJvZ3Jlc3MsIGJvb2wgYW5pbWF0aW5nQmFja2Ryb3BGaWx0ZXIgPSBmYWxzZSkKIHsK
ICAgICBGaWx0ZXJPcGVyYXRpb25zIHJlc3VsdDsKIApAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRp
YyBpbmxpbmUgRmlsdGVyT3BlcmF0aW9ucyBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSog
YW5pbSwgY29uc3QgRmlsdGVyCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGlu
ZSBSZWZQdHI8U3R5bGVJbWFnZT4gYmxlbmRGaWx0ZXIoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5p
bSwgQ2FjaGVkSW1hZ2UqIGltYWdlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBmcm9tLCBjb25z
dCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQorc3RhdGljIGlubGluZSBS
ZWZQdHI8U3R5bGVJbWFnZT4gYmxlbmRGaWx0ZXIoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0Ns
aWVudCogYW5pbSwgQ2FjaGVkSW1hZ2UqIGltYWdlLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
cm9tLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAg
IEFTU0VSVChpbWFnZSk7CiAgICAgRmlsdGVyT3BlcmF0aW9ucyBmaWx0ZXJSZXN1bHQgPSBibGVu
ZEZpbHRlck9wZXJhdGlvbnMoYW5pbSwgZnJvbSwgdG8sIHByb2dyZXNzKTsKQEAgLTIyOSw3ICsy
MjksNyBAQCBzdGF0aWMgaW5saW5lIFJlZlB0cjxTdHlsZUltYWdlPiBibGVuZEZpbHRlcihjb25z
dCBBbmltYXRpb25CYXNlKiBhbmltLCBDYWNoZWRJbQogICAgIHJldHVybiBTdHlsZUdlbmVyYXRl
ZEltYWdlOjpjcmVhdGUoV1RGTW92ZShyZXN1bHQpKTsKIH0KIAotc3RhdGljIGlubGluZSBFVmlz
aWJpbGl0eSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgRVZpc2liaWxpdHkg
ZnJvbSwgRVZpc2liaWxpdHkgdG8sIGRvdWJsZSBwcm9ncmVzcykKK3N0YXRpYyBpbmxpbmUgRVZp
c2liaWxpdHkgYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0s
IEVWaXNpYmlsaXR5IGZyb20sIEVWaXNpYmlsaXR5IHRvLCBkb3VibGUgcHJvZ3Jlc3MpCiB7CiAg
ICAgLy8gQW55IG5vbi16ZXJvIHJlc3VsdCBtZWFucyB3ZSBjb25zaWRlciB0aGUgb2JqZWN0IHRv
IGJlIHZpc2libGUuIE9ubHkgYXQgMCBkbyB3ZSBjb25zaWRlciB0aGUgb2JqZWN0IHRvIGJlCiAg
ICAgLy8gaW52aXNpYmxlLiBUaGUgaW52aXNpYmxlIHZhbHVlIHdlIHVzZSAoSElEREVOIHZzLiBD
T0xMQVBTRSkgZGVwZW5kcyBvbiB0aGUgc3BlY2lmaWVkIGZyb20vdG8gdmFsdWVzLgpAQCAtMjQx
LDcgKzI0MSw3IEBAIHN0YXRpYyBpbmxpbmUgRVZpc2liaWxpdHkgYmxlbmRGdW5jKGNvbnN0IEFu
aW1hdGlvbkJhc2UqIGFuaW0sIEVWaXNpYmlsaXR5IGZyb20sCiAgICAgcmV0dXJuIHJlc3VsdCA+
IDAuID8gVklTSUJMRSA6ICh0byAhPSBWSVNJQkxFID8gdG8gOiBmcm9tKTsKIH0KIAotc3RhdGlj
IGlubGluZSBMZW5ndGhCb3ggYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNv
bnN0IExlbmd0aEJveCYgZnJvbSwgY29uc3QgTGVuZ3RoQm94JiB0bywgZG91YmxlIHByb2dyZXNz
KQorc3RhdGljIGlubGluZSBMZW5ndGhCb3ggYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5Qmxl
bmRpbmdDbGllbnQqIGFuaW0sIGNvbnN0IExlbmd0aEJveCYgZnJvbSwgY29uc3QgTGVuZ3RoQm94
JiB0bywgZG91YmxlIHByb2dyZXNzKQogewogICAgIExlbmd0aEJveCByZXN1bHQoYmxlbmRGdW5j
KGFuaW0sIGZyb20udG9wKCksIHRvLnRvcCgpLCBwcm9ncmVzcyksCiAgICAgICAgICAgICAgICAg
ICAgICBibGVuZEZ1bmMoYW5pbSwgZnJvbS5yaWdodCgpLCB0by5yaWdodCgpLCBwcm9ncmVzcyks
CkBAIC0yNTAsMTIgKzI1MCwxMiBAQCBzdGF0aWMgaW5saW5lIExlbmd0aEJveCBibGVuZEZ1bmMo
Y29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgTGVuZ3RoQm94JiBmcgogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgU1ZHTGVuZ3RoVmFsdWUgYmxlbmRGdW5jKGNv
bnN0IEFuaW1hdGlvbkJhc2UqLCBjb25zdCBTVkdMZW5ndGhWYWx1ZSYgZnJvbSwgY29uc3QgU1ZH
TGVuZ3RoVmFsdWUmIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitzdGF0aWMgaW5saW5lIFNWR0xlbmd0
aFZhbHVlIGJsZW5kRnVuYyhjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiwgY29uc3Qg
U1ZHTGVuZ3RoVmFsdWUmIGZyb20sIGNvbnN0IFNWR0xlbmd0aFZhbHVlJiB0bywgZG91YmxlIHBy
b2dyZXNzKQogewogICAgIHJldHVybiB0by5ibGVuZChmcm9tLCBuYXJyb3dQcmVjaXNpb25Ub0Zs
b2F0KHByb2dyZXNzKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgVmVjdG9yPFNWR0xlbmd0aFZhbHVl
PiBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhW
YWx1ZT4mIGZyb20sIGNvbnN0IFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4mIHRvLCBkb3VibGUgcHJv
Z3Jlc3MpCitzdGF0aWMgaW5saW5lIFZlY3RvcjxTVkdMZW5ndGhWYWx1ZT4gYmxlbmRGdW5jKGNv
bnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLCBjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFs
dWU+JiBmcm9tLCBjb25zdCBWZWN0b3I8U1ZHTGVuZ3RoVmFsdWU+JiB0bywgZG91YmxlIHByb2dy
ZXNzKQogewogICAgIHNpemVfdCBmcm9tTGVuZ3RoID0gZnJvbS5zaXplKCk7CiAgICAgc2l6ZV90
IHRvTGVuZ3RoID0gdG8uc2l6ZSgpOwpAQCAtMjc2LDcgKzI3Niw3IEBAIHN0YXRpYyBpbmxpbmUg
VmVjdG9yPFNWR0xlbmd0aFZhbHVlPiBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIGNv
bnN0IFZlY3RvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8
U3R5bGVJbWFnZT4gY3Jvc3NmYWRlQmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIFN0eWxlQ2Fj
aGVkSW1hZ2UqIGZyb21TdHlsZUltYWdlLCBTdHlsZUNhY2hlZEltYWdlKiB0b1N0eWxlSW1hZ2Us
IGRvdWJsZSBwcm9ncmVzcykKK3N0YXRpYyBpbmxpbmUgUmVmUHRyPFN0eWxlSW1hZ2U+IGNyb3Nz
ZmFkZUJsZW5kKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLCBTdHlsZUNhY2hlZElt
YWdlKiBmcm9tU3R5bGVJbWFnZSwgU3R5bGVDYWNoZWRJbWFnZSogdG9TdHlsZUltYWdlLCBkb3Vi
bGUgcHJvZ3Jlc3MpCiB7CiAgICAgLy8gSWYgcHJvZ3Jlc3MgaXMgYXQgb25lIG9mIHRoZSBleHRy
ZW1lcywgd2Ugd2FudCBnZXRDb21wdXRlZFN0eWxlIHRvIHNob3cgdGhlIGltYWdlLAogICAgIC8v
IG5vdCBhIGNvbXBsZXRlZCBjcm9zcy1mYWRlLCBzbyB3ZSBoYW5kIGJhY2sgb25lIG9mIHRoZSBl
eGlzdGluZyBpbWFnZXMuCkBAIC0yOTUsNyArMjk1LDcgQEAgc3RhdGljIGlubGluZSBSZWZQdHI8
U3R5bGVJbWFnZT4gY3Jvc3NmYWRlQmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSosIFN0eWxlQ2Fj
aGUKICAgICByZXR1cm4gU3R5bGVHZW5lcmF0ZWRJbWFnZTo6Y3JlYXRlKFdURk1vdmUoY3Jvc3Nm
YWRlVmFsdWUpKTsKIH0KIAotc3RhdGljIGlubGluZSBSZWZQdHI8U3R5bGVJbWFnZT4gYmxlbmRG
dW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFN0eWxlSW1hZ2UqIGZyb20sIFN0eWxlSW1h
Z2UqIHRvLCBkb3VibGUgcHJvZ3Jlc3MpCitzdGF0aWMgaW5saW5lIFJlZlB0cjxTdHlsZUltYWdl
PiBibGVuZEZ1bmMoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgU3R5bGVJ
bWFnZSogZnJvbSwgU3R5bGVJbWFnZSogdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBpZiAo
IWZyb20gfHwgIXRvKQogICAgICAgICByZXR1cm4gdG87CkBAIC0zNTEsNyArMzUxLDcgQEAgc3Rh
dGljIGlubGluZSBSZWZQdHI8U3R5bGVJbWFnZT4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJh
c2UqIGFuaW0sIFN0eWxlSW1hZ2UKICAgICByZXR1cm4gdG87CiB9CiAKLXN0YXRpYyBpbmxpbmUg
TmluZVBpZWNlSW1hZ2UgYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0
IE5pbmVQaWVjZUltYWdlJiBmcm9tLCBjb25zdCBOaW5lUGllY2VJbWFnZSYgdG8sIGRvdWJsZSBw
cm9ncmVzcykKK3N0YXRpYyBpbmxpbmUgTmluZVBpZWNlSW1hZ2UgYmxlbmRGdW5jKGNvbnN0IENT
U1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIGNvbnN0IE5pbmVQaWVjZUltYWdlJiBmcm9t
LCBjb25zdCBOaW5lUGllY2VJbWFnZSYgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBpZiAo
IWZyb20uaGFzSW1hZ2UoKSB8fCAhdG8uaGFzSW1hZ2UoKSkKICAgICAgICAgcmV0dXJuIHRvOwpA
QCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBpbmxpbmUgTmluZVBpZWNlSW1hZ2UgYmxlbmRGdW5j
KGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIGNvbnN0IE5pbmVQaWVjCiAKICNpZiBFTkFCTEUo
VkFSSUFUSU9OX0ZPTlRTKQogCi1zdGF0aWMgaW5saW5lIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBi
bGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgY29uc3QgRm9udFZhcmlhdGlvblNl
dHRpbmdzJiBmcm9tLCBjb25zdCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHRvLCBkb3VibGUgcHJv
Z3Jlc3MpCitzdGF0aWMgaW5saW5lIEZvbnRWYXJpYXRpb25TZXR0aW5ncyBibGVuZEZ1bmMoY29u
c3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgY29uc3QgRm9udFZhcmlhdGlvblNl
dHRpbmdzJiBmcm9tLCBjb25zdCBGb250VmFyaWF0aW9uU2V0dGluZ3MmIHRvLCBkb3VibGUgcHJv
Z3Jlc3MpCiB7CiAgICAgaWYgKGZyb20uc2l6ZSgpICE9IHRvLnNpemUoKSkKICAgICAgICAgcmV0
dXJuIEZvbnRWYXJpYXRpb25TZXR0aW5ncygpOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHN0YXRpYyBp
bmxpbmUgRm9udFZhcmlhdGlvblNldHRpbmdzIGJsZW5kRnVuYyhjb25zdCBBbmltYXRpb25CYXNl
KiBhbmltLCBjb25zdCBGCiAKICNlbmRpZgogCi1zdGF0aWMgaW5saW5lIEZvbnRTZWxlY3Rpb25W
YWx1ZSBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgRm9udFNlbGVjdGlvblZh
bHVlIGZyb20sIEZvbnRTZWxlY3Rpb25WYWx1ZSB0bywgZG91YmxlIHByb2dyZXNzKQorc3RhdGlj
IGlubGluZSBGb250U2VsZWN0aW9uVmFsdWUgYmxlbmRGdW5jKGNvbnN0IENTU1Byb3BlcnR5Qmxl
bmRpbmdDbGllbnQqIGFuaW0sIEZvbnRTZWxlY3Rpb25WYWx1ZSBmcm9tLCBGb250U2VsZWN0aW9u
VmFsdWUgdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICByZXR1cm4gRm9udFNlbGVjdGlvblZh
bHVlKGJsZW5kRnVuYyhhbmltLCBzdGF0aWNfY2FzdDxmbG9hdD4oZnJvbSksIHN0YXRpY19jYXN0
PGZsb2F0Pih0byksIHByb2dyZXNzKSk7CiB9CkBAIC00MDgsNyArNDA4LDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGlzU2hvcnRoYW5kV3JhcHBlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiAgICAgdmlydHVhbCBib29sIGVxdWFscyhjb25zdCBSZW5kZXJTdHlsZSogYSwgY29u
c3QgUmVuZGVyU3R5bGUqIGIpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29u
c3QgQW5pbWF0aW9uQmFzZSosIFJlbmRlclN0eWxlKiwgY29uc3QgUmVuZGVyU3R5bGUqLCBjb25z
dCBSZW5kZXJTdHlsZSosIGRvdWJsZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBibGVu
ZChjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50KiwgUmVuZGVyU3R5bGUqLCBjb25zdCBS
ZW5kZXJTdHlsZSosIGNvbnN0IFJlbmRlclN0eWxlKiwgZG91YmxlKSBjb25zdCA9IDA7CiAgICAg
CiAjaWYgIUxPR19ESVNBQkxFRAogICAgIHZpcnR1YWwgdm9pZCBsb2dCbGVuZChjb25zdCBSZW5k
ZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGNvbnN0IFJlbmRlclN0eWxlKiByZXN1
bHQsIGRvdWJsZSkgY29uc3QgPSAwOwpAQCAtNDY3LDcgKzQ2Nyw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgfQogCi0gICAgdm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5k
ZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIs
IGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3ZlcnJpZGUKKyAgICB2b2lkIGJsZW5kKGNvbnN0IENT
U1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJl
bmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25z
dCBvdmVycmlkZQogICAgIHsKICAgICAgICAgKGRzdC0+Km1fc2V0dGVyKShibGVuZEZ1bmMoYW5p
bSwgKGEtPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VD46Om1fZ2V0dGVyKSgpLCAoYi0+KlByb3Bl
cnR5V3JhcHBlckdldHRlcjxUPjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CiAgICAgfQpAQCAt
NDg2LDcgKzQ4Niw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdm9pZCBibGVuZChj
b25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJT
dHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3Zl
cnJpZGUKKyAgICB2b2lkIGJsZW5kKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFu
aW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJT
dHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAg
KGRzdC0+Km1fc2V0dGVyKShibGVuZEZ1bmMoYW5pbSwgKGEtPipQcm9wZXJ0eVdyYXBwZXJHZXR0
ZXI8VCo+OjptX2dldHRlcikoKSwgKGItPipQcm9wZXJ0eVdyYXBwZXJHZXR0ZXI8VCo+OjptX2dl
dHRlcikoKSwgcHJvZ3Jlc3MpKTsKICAgICB9CkBAIC01MDUsNyArNTA1LDcgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAKLSAgICB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0s
IFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHls
ZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQorICAgIHZvaWQgYmxlbmQoY29u
c3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29u
c3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3Mp
IGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVu
YyhhbmltLCAoYS0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxjb25zdCBUJj46Om1fZ2V0dGVyKSgp
LCAoYi0+KlByb3BlcnR5V3JhcHBlckdldHRlcjxjb25zdCBUJj46Om1fZ2V0dGVyKSgpLCBwcm9n
cmVzcykpOwogICAgIH0KQEAgLTYyMyw3ICs2MjMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0K
IAotICAgIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVyU3R5bGUq
IGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUg
cHJvZ3Jlc3MpIGNvbnN0IG92ZXJyaWRlCisgICAgdm9pZCBibGVuZChjb25zdCBDU1NQcm9wZXJ0
eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHls
ZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3ZlcnJp
ZGUKICAgICB7CiAgICAgICAgIChkc3QtPiptX3NldHRlcikoYmxlbmRGdW5jKGFuaW0sIChhLT4q
UHJvcGVydHlXcmFwcGVyR2V0dGVyPGNvbnN0IENvbG9yJj46Om1fZ2V0dGVyKSgpLCAoYi0+KlBy
b3BlcnR5V3JhcHBlckdldHRlcjxjb25zdCBDb2xvciY+OjptX2dldHRlcikoKSwgcHJvZ3Jlc3Mp
KTsKICAgICB9CkBAIC02NDIsNyArNjQyLDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBhbmltYXRp
b25Jc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAg
dm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBj
b25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVz
cykgY29uc3Qgb3ZlcnJpZGUKKyAgICB2b2lkIGJsZW5kKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRp
bmdDbGllbnQqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBj
b25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgZHN0LT5zZXRPcGFjaXR5KGJsZW5kRnVuYyhhbmltLCBhLT5vcGFjaXR5KCks
IGItPm9wYWNpdHkoKSwgcHJvZ3Jlc3MpKTsKICAgICB9CkBAIC02NTgsNyArNjU4LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBhbmltYXRpb25Jc0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBh
bmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVy
U3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3ZlcnJpZGUKKyAgICB2b2lkIGJsZW5k
KGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3Qs
IGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dy
ZXNzKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgZHN0LT5zZXRUcmFuc2Zvcm0oYmxl
bmRGdW5jKGFuaW0sIGEtPnRyYW5zZm9ybSgpLCBiLT50cmFuc2Zvcm0oKSwgcHJvZ3Jlc3MpKTsK
ICAgICB9CkBAIC02NzQsNyArNjc0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBhbmltYXRpb25J
c0FjY2VsZXJhdGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdm9p
ZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25z
dCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykg
Y29uc3Qgb3ZlcnJpZGUKKyAgICB2b2lkIGJsZW5kKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdD
bGllbnQqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25z
dCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgZHN0LT5zZXRGaWx0ZXIoYmxlbmRGdW5jKGFuaW0sIGEtPmZpbHRlcigpLCBiLT5m
aWx0ZXIoKSwgcHJvZ3Jlc3MpKTsKICAgICB9CkBAIC02OTEsNyArNjkxLDcgQEAgcHVibGljOgog
CiAgICAgdmlydHVhbCBib29sIGFuaW1hdGlvbklzQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVy
biB0cnVlOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSog
YW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRl
clN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CisgICAgdmlydHVhbCB2b2lkIGJsZW5k
KGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3Qs
IGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dy
ZXNzKSBjb25zdAogICAgIHsKICAgICAgICAgZHN0LT5zZXRCYWNrZHJvcEZpbHRlcihibGVuZEZ1
bmMoYW5pbSwgYS0+YmFja2Ryb3BGaWx0ZXIoKSwgYi0+YmFja2Ryb3BGaWx0ZXIoKSwgcHJvZ3Jl
c3MsIHRydWUpKTsKICAgICB9CkBAIC03NjEsNyArNzYxLDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2Uq
IGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5k
ZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQorICAgIHZvaWQgYmxl
bmQoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgUmVuZGVyU3R5bGUqIGRz
dCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJv
Z3Jlc3MpIGNvbnN0IG92ZXJyaWRlCiAgICAgewogICAgICAgICBjb25zdCBTaGFkb3dEYXRhKiBz
aGFkb3dBID0gKGEtPiptX2dldHRlcikoKTsKICAgICAgICAgY29uc3QgU2hhZG93RGF0YSogc2hh
ZG93QiA9IChiLT4qbV9nZXR0ZXIpKCk7CkBAIC03ODYsNyArNzg2LDcgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByaXZhdGU6Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFNoYWRvd0RhdGE+IGJsZW5kU2lt
cGxlT3JNYXRjaGVkU2hhZG93TGlzdHMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgZG91Ymxl
IHByb2dyZXNzLCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dBLCBjb25zdCBTaGFkb3dEYXRhKiBz
aGFkb3dCKSBjb25zdAorICAgIHN0ZDo6dW5pcXVlX3B0cjxTaGFkb3dEYXRhPiBibGVuZFNpbXBs
ZU9yTWF0Y2hlZFNoYWRvd0xpc3RzKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFu
aW0sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgU2hhZG93RGF0YSogc2hhZG93QSwgY29uc3QgU2hh
ZG93RGF0YSogc2hhZG93QikgY29uc3QKICAgICB7CiAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxT
aGFkb3dEYXRhPiBuZXdTaGFkb3dEYXRhOwogICAgICAgICBTaGFkb3dEYXRhKiBsYXN0U2hhZG93
ID0gMDsKQEAgLTgxMiw3ICs4MTIsNyBAQCBwcml2YXRlOgogICAgICAgICByZXR1cm4gbmV3U2hh
ZG93RGF0YTsKICAgICB9CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8U2hhZG93RGF0YT4gYmxlbmRN
aXNtYXRjaGVkU2hhZG93TGlzdHMoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgZG91YmxlIHBy
b2dyZXNzLCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3dBLCBjb25zdCBTaGFkb3dEYXRhKiBzaGFk
b3dCLCBpbnQgZnJvbUxlbmd0aCwgaW50IHRvTGVuZ3RoKSBjb25zdAorICAgIHN0ZDo6dW5pcXVl
X3B0cjxTaGFkb3dEYXRhPiBibGVuZE1pc21hdGNoZWRTaGFkb3dMaXN0cyhjb25zdCBDU1NQcm9w
ZXJ0eUJsZW5kaW5nQ2xpZW50KiBhbmltLCBkb3VibGUgcHJvZ3Jlc3MsIGNvbnN0IFNoYWRvd0Rh
dGEqIHNoYWRvd0EsIGNvbnN0IFNoYWRvd0RhdGEqIHNoYWRvd0IsIGludCBmcm9tTGVuZ3RoLCBp
bnQgdG9MZW5ndGgpIGNvbnN0CiAgICAgewogICAgICAgICAvLyBUaGUgc2hhZG93cyBpbiBTaGFk
b3dEYXRhIGFyZSBzdG9yZWQgaW4gcmV2ZXJzZSBvcmRlciwgc28gd2hlbiBhbmltYXRpbmcgbWlz
bWF0Y2hlZCBsaXN0cywKICAgICAgICAgLy8gcmV2ZXJzZSB0aGVtIGFuZCBtYXRjaCBmcm9tIHRo
ZSBlbmQuCkBAIC04ODIsNyArODgyLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gZnJvbUNv
bG9yID09IHRvQ29sb3I7CiAgICAgfQogCi0gICAgdm9pZCBibGVuZChjb25zdCBBbmltYXRpb25C
YXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3Qg
UmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3ZlcnJpZGUKKyAgICB2b2lk
IGJsZW5kKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFuaW0sIFJlbmRlclN0eWxl
KiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91Ymxl
IHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAgQ29sb3IgZnJvbUNvbG9y
ID0gdmFsdWUoYSk7CiAgICAgICAgIENvbG9yIHRvQ29sb3IgPSB2YWx1ZShiKTsKQEAgLTkzOCw3
ICs5MzgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICByZXR1cm4gbV93cmFwcGVyLT5lcXVh
bHMoYSwgYikgJiYgbV92aXNpdGVkV3JhcHBlci0+ZXF1YWxzKGEsIGIpOwogICAgIH0KLSAgICB2
b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNv
bnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNz
KSBjb25zdCBvdmVycmlkZQorICAgIHZvaWQgYmxlbmQoY29uc3QgQ1NTUHJvcGVydHlCbGVuZGlu
Z0NsaWVudCogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNv
bnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBtX3dyYXBwZXItPmJsZW5kKGFuaW0sIGRzdCwgYSwgYiwgcHJvZ3Jlc3MpOwog
ICAgICAgICBtX3Zpc2l0ZWRXcmFwcGVyLT5ibGVuZChhbmltLCBkc3QsIGEsIGIsIHByb2dyZXNz
KTsKQEAgLTk3MCw3ICs5NzAsNyBAQCBwdWJsaWM6CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBlcXVh
bHMoY29uc3QgRmlsbExheWVyKiwgY29uc3QgRmlsbExheWVyKikgY29uc3QgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiwgRmlsbExheWVyKiwgY29uc3Qg
RmlsbExheWVyKiwgY29uc3QgRmlsbExheWVyKiwgZG91YmxlKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGJsZW5kKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLCBGaWxsTGF5
ZXIqLCBjb25zdCBGaWxsTGF5ZXIqLCBjb25zdCBGaWxsTGF5ZXIqLCBkb3VibGUpIGNvbnN0ID0g
MDsKIAogI2lmICFMT0dfRElTQUJMRUQKICAgICB2aXJ0dWFsIHZvaWQgbG9nQmxlbmQoY29uc3Qg
RmlsbExheWVyKiByZXN1bHQsIGNvbnN0IEZpbGxMYXllciosIGNvbnN0IEZpbGxMYXllciosIGRv
dWJsZSkgY29uc3QgPSAwOwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgcHVibGljOgogICAgIHsKICAg
ICB9CiAKLSAgICB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIEZpbGxMYXll
ciogZHN0LCBjb25zdCBGaWxsTGF5ZXIqIGEsIGNvbnN0IEZpbGxMYXllciogYiwgZG91YmxlIHBy
b2dyZXNzKSBjb25zdCBvdmVycmlkZQorICAgIHZvaWQgYmxlbmQoY29uc3QgQ1NTUHJvcGVydHlC
bGVuZGluZ0NsaWVudCogYW5pbSwgRmlsbExheWVyKiBkc3QsIGNvbnN0IEZpbGxMYXllciogYSwg
Y29uc3QgRmlsbExheWVyKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ewogICAgICAgICAoZHN0LT4qbV9zZXR0ZXIpKGJsZW5kRnVuYyhhbmltLCAoYS0+KkZpbGxMYXll
clByb3BlcnR5V3JhcHBlckdldHRlcjxjb25zdCBUJj46Om1fZ2V0dGVyKSgpLCAoYi0+KkZpbGxM
YXllclByb3BlcnR5V3JhcHBlckdldHRlcjxjb25zdCBUJj46Om1fZ2V0dGVyKSgpLCBwcm9ncmVz
cykpOwogICAgIH0KQEAgLTEwNzIsNyArMTA3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IGZyb21MZW5ndGggPT0gdG9MZW5ndGggJiYgZnJvbUVkZ2UgPT0gdG9FZGdlOwogICAgIH0KIAot
ICAgIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgRmlsbExheWVyKiBkc3Qs
IGNvbnN0IEZpbGxMYXllciogYSwgY29uc3QgRmlsbExheWVyKiBiLCBkb3VibGUgcHJvZ3Jlc3Mp
IGNvbnN0IG92ZXJyaWRlCisgICAgdm9pZCBibGVuZChjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5n
Q2xpZW50KiBhbmltLCBGaWxsTGF5ZXIqIGRzdCwgY29uc3QgRmlsbExheWVyKiBhLCBjb25zdCBG
aWxsTGF5ZXIqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIExlbmd0aCBmcm9tTGVuZ3RoID0gKGEtPipGaWxsTGF5ZXJQcm9wZXJ0eVdyYXBwZXJHZXR0
ZXI8Y29uc3QgTGVuZ3RoJj46Om1fZ2V0dGVyKSgpOwogICAgICAgICBMZW5ndGggdG9MZW5ndGgg
PSAoYi0+KkZpbGxMYXllclByb3BlcnR5V3JhcHBlckdldHRlcjxjb25zdCBMZW5ndGgmPjo6bV9n
ZXR0ZXIpKCk7CkBAIC0xMTE3LDcgKzExMTcsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
ICAgIHZvaWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgRmlsbExheWVyKiBkc3Qs
IGNvbnN0IEZpbGxMYXllciogYSwgY29uc3QgRmlsbExheWVyKiBiLCBkb3VibGUgcHJvZ3Jlc3Mp
IGNvbnN0IG92ZXJyaWRlCisgICAgdm9pZCBibGVuZChjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5n
Q2xpZW50KiBhbmltLCBGaWxsTGF5ZXIqIGRzdCwgY29uc3QgRmlsbExheWVyKiBhLCBjb25zdCBG
aWxsTGF5ZXIqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIChkc3QtPiptX3NldHRlcikoYmxlbmRGdW5jKGFuaW0sIChhLT4qRmlsbExheWVyUHJvcGVy
dHlXcmFwcGVyR2V0dGVyPFQqPjo6bV9nZXR0ZXIpKCksIChiLT4qRmlsbExheWVyUHJvcGVydHlX
cmFwcGVyR2V0dGVyPFQqPjo6bV9nZXR0ZXIpKCksIHByb2dyZXNzKSk7CiAgICAgfQpAQCAtMTIx
OCw3ICsxMjE4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAg
ICB2b2lkIGJsZW5kKGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3Qs
IGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dy
ZXNzKSBjb25zdCBvdmVycmlkZQorICAgIHZvaWQgYmxlbmQoY29uc3QgQ1NTUHJvcGVydHlCbGVu
ZGluZ0NsaWVudCogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEs
IGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0IG92ZXJyaWRlCiAg
ICAgewogICAgICAgICBhdXRvKiBhTGF5ZXIgPSAmKGEtPiptX2xheWVyc0dldHRlcikoKTsKICAg
ICAgICAgYXV0byogYkxheWVyID0gJihiLT4qbV9sYXllcnNHZXR0ZXIpKCk7CkBAIC0xMjgwLDcg
KzEyODAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHZv
aWQgYmxlbmQoY29uc3QgQW5pbWF0aW9uQmFzZSogYW5pbSwgUmVuZGVyU3R5bGUqIGRzdCwgY29u
c3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3VibGUgcHJvZ3Jlc3Mp
IGNvbnN0IG92ZXJyaWRlCisgICAgdm9pZCBibGVuZChjb25zdCBDU1NQcm9wZXJ0eUJsZW5kaW5n
Q2xpZW50KiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29u
c3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIGZvciAoYXV0byYgd3JhcHBlciA6IG1fcHJvcGVydHlXcmFwcGVycykKICAgICAg
ICAgICAgIHdyYXBwZXItPmJsZW5kKGFuaW0sIGRzdCwgYSwgYiwgcHJvZ3Jlc3MpOwpAQCAtMTMx
OCw3ICsxMzE4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYS0+ZmxleEJhc2lzKCkgPT0g
Yi0+ZmxleEJhc2lzKCkgJiYgYS0+ZmxleEdyb3coKSA9PSBiLT5mbGV4R3JvdygpICYmIGEtPmZs
ZXhTaHJpbmsoKSA9PSBiLT5mbGV4U2hyaW5rKCk7CiAgICAgfQogCi0gICAgdm9pZCBibGVuZChj
b25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJT
dHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykgY29uc3Qgb3Zl
cnJpZGUKKyAgICB2b2lkIGJsZW5kKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqIGFu
aW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBjb25zdCBSZW5kZXJT
dHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQogICAgIHsKICAgICAgICAg
ZHN0LT5zZXRGbGV4QmFzaXMoYmxlbmRGdW5jKGFuaW0sIGEtPmZsZXhCYXNpcygpLCBiLT5mbGV4
QmFzaXMoKSwgcHJvZ3Jlc3MpKTsKICAgICAgICAgZHN0LT5zZXRGbGV4R3JvdyhibGVuZEZ1bmMo
YW5pbSwgYS0+ZmxleEdyb3coKSwgYi0+ZmxleEdyb3coKSwgcHJvZ3Jlc3MpKTsKQEAgLTEzNzUs
NyArMTM3NSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAg
dm9pZCBibGVuZChjb25zdCBBbmltYXRpb25CYXNlKiBhbmltLCBSZW5kZXJTdHlsZSogZHN0LCBj
b25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVz
cykgY29uc3Qgb3ZlcnJpZGUKKyAgICB2b2lkIGJsZW5kKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRp
bmdDbGllbnQqIGFuaW0sIFJlbmRlclN0eWxlKiBkc3QsIGNvbnN0IFJlbmRlclN0eWxlKiBhLCBj
b25zdCBSZW5kZXJTdHlsZSogYiwgZG91YmxlIHByb2dyZXNzKSBjb25zdCBvdmVycmlkZQogICAg
IHsKICAgICAgICAgaWYgKChhLT4qbV9wYWludFR5cGVHZXR0ZXIpKCkgIT0gU1ZHX1BBSU5UVFlQ
RV9SR0JDT0xPUgogICAgICAgICAgICAgfHwgKGItPiptX3BhaW50VHlwZUdldHRlcikoKSAhPSBT
VkdfUEFJTlRUWVBFX1JHQkNPTE9SKQpAQCAtMTcwMSw3ICsxNzAxLDcgQEAgc3RhdGljIGJvb2wg
Z2F0aGVyRW5jbG9zaW5nU2hvcnRoYW5kUHJvcGVydGllcyhDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
LCBBbmltYXRpb24KIH0KIAogLy8gUmV0dXJucyB0cnVlIGlmIHdlIG5lZWQgdG8gc3RhcnQgYW5p
bWF0aW9uIHRpbWVycwotYm9vbCBDU1NQcm9wZXJ0eUFuaW1hdGlvbjo6YmxlbmRQcm9wZXJ0aWVz
KGNvbnN0IEFuaW1hdGlvbkJhc2UqIGFuaW0sIENTU1Byb3BlcnR5SUQgcHJvcCwgUmVuZGVyU3R5
bGUqIGRzdCwgY29uc3QgUmVuZGVyU3R5bGUqIGEsIGNvbnN0IFJlbmRlclN0eWxlKiBiLCBkb3Vi
bGUgcHJvZ3Jlc3MpCitib29sIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpibGVuZFByb3BlcnRpZXMo
Y29uc3QgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudCogYW5pbSwgQ1NTUHJvcGVydHlJRCBwcm9w
LCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5
bGUqIGIsIGRvdWJsZSBwcm9ncmVzcykKIHsKICAgICBBU1NFUlQocHJvcCAhPSBDU1NQcm9wZXJ0
eUludmFsaWQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9D
U1NQcm9wZXJ0eUFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NT
UHJvcGVydHlBbmltYXRpb24uaAppbmRleCA2MWZiZjZlNzliZmE2NGFhMTljYjExNTViYjQ2ZTZi
ZTIyMDE4MDE4Li5mZDk0ZGQxNjJmNzY5MDVjZmI0OGYyNzQwYTI5Y2M0MjA2MTEwYTMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0
aW9uLmgKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBB
bmltYXRpb25CYXNlOworY2xhc3MgQ1NTUHJvcGVydHlCbGVuZGluZ0NsaWVudDsKIGNsYXNzIFJl
bmRlclN0eWxlOwogCiBjbGFzcyBDU1NQcm9wZXJ0eUFuaW1hdGlvbiB7CkBAIC00Niw3ICs0Niw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBhbmltYXRhYmxl
U2hvcnRoYW5kc0FmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5SUQpOwogCiAgICAgLy8gUmV0
dXJuIHRydWUgaWYgd2UgbmVlZCB0byBzdGFydCBzb2Z0d2FyZSBhbmltYXRpb24gdGltZXJzCi0g
ICAgc3RhdGljIGJvb2wgYmxlbmRQcm9wZXJ0aWVzKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBDU1NQ
cm9wZXJ0eUlELCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3Qg
UmVuZGVyU3R5bGUqIGIsIGRvdWJsZSBwcm9ncmVzcyk7CisgICAgc3RhdGljIGJvb2wgYmxlbmRQ
cm9wZXJ0aWVzKGNvbnN0IENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQqLCBDU1NQcm9wZXJ0eUlE
LCBSZW5kZXJTdHlsZSogZHN0LCBjb25zdCBSZW5kZXJTdHlsZSogYSwgY29uc3QgUmVuZGVyU3R5
bGUqIGIsIGRvdWJsZSBwcm9ncmVzcyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="346389"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>