<?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>128964</bug_id>
          
          <creation_ts>2014-02-18 02:38:03 -0800</creation_ts>
          <short_desc>Move IndexedDB module, LevelDB code to std::unique_ptr</short_desc>
          <delta_ts>2014-02-18 14:03:43 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981858</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-18 02:38:03 -0800</bug_when>
    <thetext>Move IndexedDB module, LevelDB code to std::unique_ptr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981859</commentid>
    <comment_count>1</comment_count>
      <attachid>224488</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-18 02:39:11 -0800</bug_when>
    <thetext>Created attachment 224488
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981977</commentid>
    <comment_count>2</comment_count>
      <attachid>224488</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-18 10:32:34 -0800</bug_when>
    <thetext>Comment on attachment 224488
Patch

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

r=me

&gt; Source/WebCore/Modules/indexeddb/IDBPendingDeleteCall.h:38
&gt; +    IDBPendingDeleteCall(PassRefPtr&lt;IDBCallbacks&gt; callbacks)

explicit

&gt; Source/WebCore/platform/leveldb/LevelDBDatabase.cpp:266
&gt; +    IteratorImpl(std::unique_ptr&lt;leveldb::Iterator&gt;);

explicit

&gt; Source/WebCore/platform/leveldb/LevelDBTransaction.h:102
&gt; +        TreeIterator(LevelDBTransaction*);

explicit

&gt; Source/WebCore/platform/leveldb/LevelDBTransaction.h:124
&gt; +        TransactionIterator(PassRefPtr&lt;LevelDBTransaction&gt;);

explicit

&gt; Source/WebCore/platform/leveldb/LevelDBTransaction.h:174
&gt; +    LevelDBWriteOnlyTransaction(LevelDBDatabase*);

explicit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>982083</commentid>
    <comment_count>3</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2014-02-18 14:03:43 -0800</bug_when>
    <thetext>Committed r164314: &lt;http://trac.webkit.org/changeset/164314&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224488</attachid>
            <date>2014-02-18 02:39:11 -0800</date>
            <delta_ts>2014-02-18 10:32:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128964-20140218023910.patch</filename>
            <type>text/plain</type>
            <size>46378</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzODcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4NGJiZGRiNzg0NTlj
YjUzMjIzZjIyOWY3YTAyODQyNDg5NzY0Zi4uMDU3MDMyOWY1YjU5YTlkMzAyMDM2YjA5ZWYwN2Ex
YThkZWQzYzA2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDE0LTAyLTE4ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBNb3ZlIEluZGV4ZWRE
QiBtb2R1bGUsIExldmVsREIgY29kZSB0byBzdGQ6OnVuaXF1ZV9wdHIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODk2NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBPd25QdHIg
YW5kIFBhc3NPd25QdHIgaW4gdGhlIEluZGV4ZWREQiBtb2R1bGUgYW5kIExldmVsREIgcGxhdGZv
cm0gY29kZSB3aXRoIHN0ZDo6dW5pcXVlX3B0ci4KKworICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkN1cnNvckJhY2tlbmQuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5k
OjpJREJEYXRhYmFzZUJhY2tlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNr
ZW5kOjp0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQWJvcnRGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmQ6OnByb2Nlc3NQZW5kaW5nQ2FsbHMpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpwcm9jZXNzUGVuZGluZ09wZW5DYWxscyk6CisgICAg
ICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6Om9wZW5Db25uZWN0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZDo6ZGVsZXRlRGF0
YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kOjpjbG9zZSk6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmg6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6Omhhc1BlbmRpbmdTZWNvbmRIYWxmT3Blbik6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6OnNldFBlbmRpbmdTZWNvbmRI
YWxmT3Blbik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ0RlbGV0ZUNh
bGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OklEQlBlbmRpbmdEZWxldGVDYWxsOjpJREJQZW5kaW5n
RGVsZXRlQ2FsbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCUGVuZGluZ09wZW5D
YWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJQZW5kaW5nT3BlbkNhbGw6OklEQlBlbmRpbmdP
cGVuQ2FsbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kT3BlcmF0aW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmQ6
OlZlcnNpb25DaGFuZ2VPcGVyYXRpb246OnBlcmZvcm0pOgorICAgICAgICAqIE1vZHVsZXMvaW5k
ZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAqIE1vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBNb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6c2V0VXBNZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWZhdWx0TGV2ZWxEQkZhY3Rvcnk6Om9wZW5MZXZlbERCKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkJhY2tpbmdTdG9yZUxldmVsREI6OklEQkJhY2tpbmdTdG9yZUxldmVsREIpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6fklEQkJhY2tpbmdTdG9yZUxldmVsREIp
OgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3Blbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJCYWNraW5nU3RvcmVMZXZlbERCOjpvcGVuSW5NZW1vcnkpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQkJhY2tpbmdTdG9yZUxldmVsREI6OmdldERhdGFiYXNlTmFtZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGVsZXRlUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFja2lu
Z1N0b3JlTGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6SURCQmFj
a2luZ1N0b3JlTGV2ZWxEQjo6Z2V0T2JqZWN0U3RvcmVzKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkJhY2tpbmdTdG9yZUxldmVsREI6OmdldEtleUdlbmVyYXRvckN1cnJlbnROdW1iZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2V0SW5kZXhlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpmaW5kR3JlYXRlc3RLZXlMZXNzVGhhbk9yRXF1YWwpOgorICAgICAgICAo
V2ViQ29yZTo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZmluZEtleUluSW5kZXgpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxldmVsREJEYXRhYmFzZTo6fkxldmVsREJEYXRhYmFzZSk6CisgICAgICAgIChX
ZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U6Om9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxE
QkRhdGFiYXNlOjpvcGVuSW5NZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6SXRlcmF0b3JJbXBs
OjpJdGVyYXRvckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TGV2ZWxEQkRhdGFiYXNlOjpjcmVh
dGVJdGVyYXRvcik6CisgICAgICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2Uu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpMZXZlbERCVHJhbnNhY3Rpb246OmNvbW1pdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZUl0ZXJhdG9yKToKKyAgICAgICAgKFdl
YkNvcmU6OkxldmVsREJUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6VHJhbnNhY3Rp
b25JdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpMZXZlbERCVHJhbnNhY3Rpb246OlRyYW5z
YWN0aW9uSXRlcmF0b3I6OnJlZnJlc2hUcmVlSXRlcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
TGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uOjpMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24p
OgorICAgICAgICAqIHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQlRyYW5zYWN0aW9uLmg6CisgICAg
ICAgICogcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCV3JpdGVCYXRjaC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMZXZlbERCV3JpdGVCYXRjaDo6TGV2ZWxEQldyaXRlQmF0Y2gpOgorICAgICAgICAq
IHBsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guaDoKKwogMjAxNC0wMi0xMSAgQmVu
amFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CiAKICAgICAgICAgcXVlcnlTZWxl
Y3RvcigpIGRvZXMgbm90IHVzZSB0aGUgY29tcGlsZXIgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kLmgKaW5kZXggOThm
Y2MyNjY4NDc4NmFlZjQwMjM2YTY1YzcyMmEwNTRiNjc0YmZlNi4uNDEzYWRkZjFjZDIzYmUzNTRj
ODY2YzFiMGQ2ODQ1NDUxN2UxNWI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmQuaApAQCAtMzIsOCArMzIsNiBAQAogI2luY2x1
ZGUgIklEQkRhdGFiYXNlQmFja2VuZC5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2Vu
ZC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5jcHAKaW5kZXggMjRkMzFmMDA4ZWRiM2MxNjE2
OTk2NTljNDA2MzRlYmE4YTM4ZjZiOS4uNzdhZjI2NzlhODY2ODFjNWJjOGM5Yzg3M2VhMWE0Y2Ni
ZjJkNDQyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
RGF0YWJhc2VCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJEYXRhYmFzZUJhY2tlbmQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIElEQkRhdGFiYXNlQmFj
a2VuZDo6SURCRGF0YWJhc2VCYWNrZW5kKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB1bmlxdWVJCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1f
ZmFjdG9yeShmYWN0b3J5KQogICAgICwgbV9zZXJ2ZXJDb25uZWN0aW9uKHNlcnZlckNvbm5lY3Rp
b24pCi0gICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcjo6Y3JlYXRlKCkpCisgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3Ioc3RkOjptYWtl
X3VuaXF1ZTxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPigpKQogICAgICwgbV9jbG9zaW5nQ29u
bmVjdGlvbihmYWxzZSkKICAgICAsIG1fZGlkT3BlbkludGVybmFsKGZhbHNlKQogewpAQCAtMzQ2
LDcgKzM0Niw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjp0cmFuc2FjdGlvbkZpbmlzaGVk
QW5kQWJvcnRGaXJlZChJREJUcmFuc2FjdGlvbkJhY2tlbmQqCiAgICAgICAgIC8vIEZJWE1FOiBX
aGVuIHdlIG5vIGxvbmdlciBzdXBwb3J0IHNldFZlcnNpb24sIGFzc2VydCBzdWNoIGEgdGhpbmcu
CiAgICAgICAgIGlmIChtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbikgewogICAgICAgICAgICAgbV9w
ZW5kaW5nU2Vjb25kSGFsZk9wZW4tPmNhbGxiYWNrcygpLT5vbkVycm9yKElEQkRhdGFiYXNlRXJy
b3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6QWJvcnRFcnJvciwgIlZlcnNpb24gY2hh
bmdlIHRyYW5zYWN0aW9uIHdhcyBhYm9ydGVkIGluIHVwZ3JhZGVuZWVkZWQgZXZlbnQgaGFuZGxl
ci4iKSk7Ci0gICAgICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi5yZWxlYXNlKCk7Cisg
ICAgICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbiA9IG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICAgICAgcHJvY2Vzc1BlbmRpbmdDYWxscygpOwogICAgIH0KQEAgLTM3NSw3ICszNzUsNyBA
QCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiAgICAgICAg
IEFTU0VSVChtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi0+dmVyc2lvbigpID09IG1fbWV0YWRhdGEu
dmVyc2lvbik7CiAgICAgICAgIEFTU0VSVChtX21ldGFkYXRhLmlkICE9IEludmFsaWRJZCk7CiAg
ICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuLT5jYWxsYmFja3MoKS0+b25TdWNjZXNzKHRo
aXMsIHRoaXMtPm1ldGFkYXRhKCkpOwotICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi5y
ZWxlYXNlKCk7CisgICAgICAgIG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuID0gbnVsbHB0cjsKICAg
ICAgICAgLy8gRmFsbCB0aHJvdWdoIHdoZW4gY29tcGxldGUsIGFzIHBlbmRpbmcgZGVsZXRlcyBt
YXkgYmUgKHBhcnRpYWxseSkgdW5ibG9ja2VkLgogICAgIH0KIApAQCAtMzg4LDcgKzM4OCw3IEBA
IHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kOjpwcm9jZXNzUGVuZGluZ0NhbGxzKCkKICAgICBpZiAo
IW1fcGVuZGluZ0RlbGV0ZUNhbGxzLmlzRW1wdHkoKSAmJiBpc0RlbGV0ZURhdGFiYXNlQmxvY2tl
ZCgpKQogICAgICAgICByZXR1cm47CiAgICAgd2hpbGUgKCFtX3BlbmRpbmdEZWxldGVDYWxscy5p
c0VtcHR5KCkpIHsKLSAgICAgICAgT3duUHRyPElEQlBlbmRpbmdEZWxldGVDYWxsPiBwZW5kaW5n
RGVsZXRlQ2FsbCA9IG1fcGVuZGluZ0RlbGV0ZUNhbGxzLnRha2VGaXJzdCgpOworICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8SURCUGVuZGluZ0RlbGV0ZUNhbGw+IHBlbmRpbmdEZWxldGVDYWxsID0g
bV9wZW5kaW5nRGVsZXRlQ2FsbHMudGFrZUZpcnN0KCk7CiAgICAgICAgIG1fZGVsZXRlQ2FsbGJh
Y2tzV2FpdGluZ0NvbXBsZXRpb24uYWRkKHBlbmRpbmdEZWxldGVDYWxsLT5jYWxsYmFja3MoKSk7
CiAgICAgICAgIGRlbGV0ZURhdGFiYXNlQXN5bmMocGVuZGluZ0RlbGV0ZUNhbGwtPmNhbGxiYWNr
cygpKTsKICAgICB9CkBAIC00MTAsMTYgKzQxMCwxNiBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2Vu
ZDo6cHJvY2Vzc1BlbmRpbmdDYWxscygpCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6cHJvY2Vz
c1BlbmRpbmdPcGVuQ2FsbHMoYm9vbCBzdWNjZXNzKQogewogICAgIC8vIE9wZW4gY2FsbHMgY2Fu
IGJlIHJlcXVldWVkIGlmIGFuIG9wZW4gY2FsbCBzdGFydGVkIGEgdmVyc2lvbiBjaGFuZ2UgdHJh
bnNhY3Rpb24gb3IgZGVsZXRlcyB0aGUgZGF0YWJhc2UuCi0gICAgRGVxdWU8T3duUHRyPElEQlBl
bmRpbmdPcGVuQ2FsbD4+IHBlbmRpbmdPcGVuQ2FsbHM7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVf
cHRyPElEQlBlbmRpbmdPcGVuQ2FsbD4+IHBlbmRpbmdPcGVuQ2FsbHM7CiAgICAgbV9wZW5kaW5n
T3BlbkNhbGxzLnN3YXAocGVuZGluZ09wZW5DYWxscyk7CiAKICAgICB3aGlsZSAoIXBlbmRpbmdP
cGVuQ2FsbHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIE93blB0cjxJREJQZW5kaW5nT3BlbkNhbGw+
IHBlbmRpbmdPcGVuQ2FsbCA9IHBlbmRpbmdPcGVuQ2FsbHMudGFrZUZpcnN0KCk7CisgICAgICAg
IHN0ZDo6dW5pcXVlX3B0cjxJREJQZW5kaW5nT3BlbkNhbGw+IHBlbmRpbmdPcGVuQ2FsbCA9IHBl
bmRpbmdPcGVuQ2FsbHMudGFrZUZpcnN0KCk7CiAgICAgICAgIGlmIChzdWNjZXNzKSB7CiAgICAg
ICAgICAgICBpZiAobV9tZXRhZGF0YS5pZCA9PSBJbnZhbGlkSWQpIHsKICAgICAgICAgICAgICAg
ICAvLyBUaGlzIGRhdGFiYXNlIHdhcyBkZWxldGVkIHRoZW4gcXVpY2tseSByZS1vcGVuZWQuCiAg
ICAgICAgICAgICAgICAgLy8gb3BlbkludGVybmFsQXN5bmMoKSB3aWxsIHJlY3JlYXRlIGl0IGlu
IHRoZSBiYWNraW5nIHN0b3JlIGFuZCB0aGVuIHJlc3VtZSBwcm9jZXNzaW5nIHBlbmRpbmcgY2Fs
bGJhY2tzLgotICAgICAgICAgICAgICAgIHBlbmRpbmdPcGVuQ2FsbHMucHJlcGVuZChwZW5kaW5n
T3BlbkNhbGwucmVsZWFzZSgpKTsKKyAgICAgICAgICAgICAgICBwZW5kaW5nT3BlbkNhbGxzLnBy
ZXBlbmQoc3RkOjptb3ZlKHBlbmRpbmdPcGVuQ2FsbCkpOwogICAgICAgICAgICAgICAgIHBlbmRp
bmdPcGVuQ2FsbHMuc3dhcChtX3BlbmRpbmdPcGVuQ2FsbHMpOwogCiAgICAgICAgICAgICAgICAg
b3BlbkludGVybmFsQXN5bmMoKTsKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxi
YWNrcywgUAogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcyA9IHBycENhbGxiYWNr
czsKICAgICBSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+IGRhdGFiYXNlQ2FsbGJhY2tzID0g
cHJwRGF0YWJhc2VDYWxsYmFja3M7CiAKLSAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKElE
QlBlbmRpbmdPcGVuQ2FsbDo6Y3JlYXRlKCpjYWxsYmFja3MsICpkYXRhYmFzZUNhbGxiYWNrcywg
dHJhbnNhY3Rpb25JZCwgdmVyc2lvbikpOworICAgIG1fcGVuZGluZ09wZW5DYWxscy5hcHBlbmQo
c3RkOjptYWtlX3VuaXF1ZTxJREJQZW5kaW5nT3BlbkNhbGw+KCpjYWxsYmFja3MsICpkYXRhYmFz
ZUNhbGxiYWNrcywgdHJhbnNhY3Rpb25JZCwgdmVyc2lvbikpOwogCiAgICAgcHJvY2Vzc1BlbmRp
bmdDYWxscygpOwogfQpAQCAtNTEzLDcgKzUxMyw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5k
OjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
CiAgICAgICAgIGNhbGxiYWNrcy0+b25CbG9ja2VkKG1fbWV0YWRhdGEudmVyc2lvbik7CiAgICAg
Ly8gRklYTUU6IEFkZCB0ZXN0IGZvciBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24u
CiAgICAgaWYgKG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9u
Q291bnQoKSkgewotICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKElEQlBlbmRpbmdP
cGVuQ2FsbDo6Y3JlYXRlKCpjYWxsYmFja3MsICpkYXRhYmFzZUNhbGxiYWNrcywgdHJhbnNhY3Rp
b25JZCwgcmVxdWVzdGVkVmVyc2lvbikpOworICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBw
ZW5kKHN0ZDo6bWFrZV91bmlxdWU8SURCUGVuZGluZ09wZW5DYWxsPigqY2FsbGJhY2tzLCAqZGF0
YWJhc2VDYWxsYmFja3MsIHRyYW5zYWN0aW9uSWQsIHJlcXVlc3RlZFZlcnNpb24pKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgSURCRGF0YWJhc2VC
YWNrZW5kOjpkZWxldGVEYXRhYmFzZShQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJh
Y2tzKQogICAgICAgICAvLyBWZXJzaW9uQ2hhbmdlRXZlbnRzIGFyZSByZWNlaXZlZCwgbm90IGp1
c3Qgc2V0IHVwIHRvIGZpcmUuCiAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03MTEzMAogICAgICAgICBjYWxsYmFja3MtPm9uQmxvY2tlZChtX21ldGFk
YXRhLnZlcnNpb24pOwotICAgICAgICBtX3BlbmRpbmdEZWxldGVDYWxscy5hcHBlbmQoSURCUGVu
ZGluZ0RlbGV0ZUNhbGw6OmNyZWF0ZShjYWxsYmFja3MucmVsZWFzZSgpKSk7CisgICAgICAgIG1f
cGVuZGluZ0RlbGV0ZUNhbGxzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPElEQlBlbmRpbmdEZWxl
dGVDYWxsPihjYWxsYmFja3MucmVsZWFzZSgpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAg
ICAgZGVsZXRlRGF0YWJhc2VBc3luYyhjYWxsYmFja3MucmVsZWFzZSgpKTsKQEAgLTU4Myw3ICs1
ODMsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZDo6Y2xvc2UoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUNhbGxiYWNrcz4gcHJwQ2FsbGJhY2tzKQogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQu
cmVtb3ZlKGNhbGxiYWNrcyk7CiAgICAgaWYgKG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuICYmIG1f
cGVuZGluZ1NlY29uZEhhbGZPcGVuLT5kYXRhYmFzZUNhbGxiYWNrcygpID09IGNhbGxiYWNrcykg
ewogICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Blbi0+Y2FsbGJhY2tzKCktPm9uRXJyb3Io
SURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpBYm9ydEVycm9y
LCAiVGhlIGNvbm5lY3Rpb24gd2FzIGNsb3NlZC4iKSk7Ci0gICAgICAgIG1fcGVuZGluZ1NlY29u
ZEhhbGZPcGVuLnJlbGVhc2UoKTsKKyAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4gPSBu
dWxscHRyOwogICAgIH0KIAogICAgIGlmIChjb25uZWN0aW9uQ291bnQoKSA+IDEpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmQu
aCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5o
CmluZGV4IDc1OGQ1Y2JjZjc5YjM4OWE3NDI5MjVmN2JkNTRiYTQ3MzlmZmJjMzcuLjIxNGQyZjVk
N2M1NmRmODcxNmUwNjllMTI1MWJiNTBhZjY0YWJjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZC5oCkBAIC0xMTgsOCAr
MTE4LDggQEAgcHVibGljOgogICAgIGNvbnN0IElEQkRhdGFiYXNlTWV0YWRhdGEmIG1ldGFkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9tZXRhZGF0YTsgfQogICAgIHZvaWQgc2V0Q3VycmVudFZlcnNp
b24odWludDY0X3QgdmVyc2lvbikgeyBtX21ldGFkYXRhLnZlcnNpb24gPSB2ZXJzaW9uOyB9CiAK
LSAgICBib29sIGhhc1BlbmRpbmdTZWNvbmRIYWxmT3BlbigpIHsgcmV0dXJuIG1fcGVuZGluZ1Nl
Y29uZEhhbGZPcGVuOyB9Ci0gICAgdm9pZCBzZXRQZW5kaW5nU2Vjb25kSGFsZk9wZW4oUGFzc093
blB0cjxJREJQZW5kaW5nT3BlbkNhbGw+IHBlbmRpbmdPcGVuQ2FsbCkgeyBtX3BlbmRpbmdTZWNv
bmRIYWxmT3BlbiA9IHBlbmRpbmdPcGVuQ2FsbDsgfQorICAgIGJvb2wgaGFzUGVuZGluZ1NlY29u
ZEhhbGZPcGVuKCkgeyByZXR1cm4gbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4uZ2V0KCk7IH0KKyAg
ICB2b2lkIHNldFBlbmRpbmdTZWNvbmRIYWxmT3BlbihzdGQ6OnVuaXF1ZV9wdHI8SURCUGVuZGlu
Z09wZW5DYWxsPiBwZW5kaW5nT3BlbkNhbGwpIHsgbV9wZW5kaW5nU2Vjb25kSGFsZk9wZW4gPSBz
dGQ6Om1vdmUocGVuZGluZ09wZW5DYWxsKTsgfQogCiAgICAgSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UmIGZhY3RvcnlCYWNrZW5kKCkgeyByZXR1cm4gKm1fZmFjdG9yeTsgfQogCkBAIC0xNDks
MTYgKzE0OSwxNiBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZT4gbV9mYWN0b3J5OwogICAgIFJlZjxJREJTZXJ2ZXJDb25uZWN0aW9uPiBtX3NlcnZlckNv
bm5lY3Rpb247CiAKLSAgICBPd25QdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gbV90cmFu
c2FjdGlvbkNvb3JkaW5hdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZD4gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uOwogCiAgICAg
dHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZCo+IFRyYW5zYWN0
aW9uTWFwOwogICAgIFRyYW5zYWN0aW9uTWFwIG1fdHJhbnNhY3Rpb25zOwogCi0gICAgRGVxdWU8
T3duUHRyPElEQlBlbmRpbmdPcGVuQ2FsbD4+IG1fcGVuZGluZ09wZW5DYWxsczsKLSAgICBPd25Q
dHI8SURCUGVuZGluZ09wZW5DYWxsPiBtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbjsKKyAgICBEZXF1
ZTxzdGQ6OnVuaXF1ZV9wdHI8SURCUGVuZGluZ09wZW5DYWxsPj4gbV9wZW5kaW5nT3BlbkNhbGxz
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJREJQZW5kaW5nT3BlbkNhbGw+IG1fcGVuZGluZ1NlY29u
ZEhhbGZPcGVuOwogCi0gICAgRGVxdWU8T3duUHRyPElEQlBlbmRpbmdEZWxldGVDYWxsPj4gbV9w
ZW5kaW5nRGVsZXRlQ2FsbHM7CisgICAgRGVxdWU8c3RkOjp1bmlxdWVfcHRyPElEQlBlbmRpbmdE
ZWxldGVDYWxsPj4gbV9wZW5kaW5nRGVsZXRlQ2FsbHM7CiAgICAgSGFzaFNldDxSZWZQdHI8SURC
Q2FsbGJhY2tzPj4gbV9kZWxldGVDYWxsYmFja3NXYWl0aW5nQ29tcGxldGlvbjsKIAogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPj4gRGF0YWJhc2VD
YWxsYmFja3NTZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJQZW5kaW5nRGVsZXRlQ2FsbC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUGVuZGluZ0RlbGV0ZUNhbGwuaAppbmRleCAyMmJkYTVkNDkyYTU0ZmYwNGNlY2I2OGMz
ZDU1ZTU2OGU1NmRkNDhkLi5lZmI2MjNlNzJjOTM0MWY2ZDFjYjYwY2VhNTdmMDZjMGI5NmU2M2E1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5n
RGVsZXRlQ2FsbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlBl
bmRpbmdEZWxldGVDYWxsLmgKQEAgLTI3LDcgKzI3LDYgQEAKICNkZWZpbmUgSURCUGVuZGluZ0Rl
bGV0ZUNhbGxfaAogCiAjaW5jbHVkZSAiSURCQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhF
RF9EQVRBQkFTRSkKQEAgLTM2LDE3ICszNSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIElEQlBlbmRpbmdEZWxldGVDYWxsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxJREJQZW5kaW5nRGVsZXRlQ2FsbD4gY3JlYXRlKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBj
YWxsYmFja3MpCisgICAgSURCUGVuZGluZ0RlbGV0ZUNhbGwoUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+IGNhbGxiYWNrcykKKyAgICAgICAgOiBtX2NhbGxiYWNrcyhjYWxsYmFja3MpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IElEQlBlbmRpbmdEZWxldGVDYWxsKGNhbGxiYWNr
cykpOwogICAgIH0KKwogICAgIElEQkNhbGxiYWNrcyogY2FsbGJhY2tzKCkgeyByZXR1cm4gbV9j
YWxsYmFja3MuZ2V0KCk7IH0KIAogcHJpdmF0ZToKLSAgICBJREJQZW5kaW5nRGVsZXRlQ2FsbChQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzKQotICAgICAgICA6IG1fY2FsbGJhY2tz
KGNhbGxiYWNrcykKLSAgICB7Ci0gICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+IG1fY2Fs
bGJhY2tzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSURCUGVuZGluZ09wZW5DYWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJQZW5kaW5nT3BlbkNhbGwuaAppbmRleCAxOTNjZWVhZGFlMmQ1ZDNlNTI4OTAwM2UwYjY2
NDRhMjUyMDRhOGNhLi45YjUzZWY5NDJlZmJkMmUyZjNlZjViYjJiNjAzNWRhZjI4Y2IzZmU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5nT3Bl
bkNhbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJQZW5kaW5n
T3BlbkNhbGwuaApAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBJREJQZW5kaW5nT3BlbkNhbGxf
aAogI2RlZmluZSBJREJQZW5kaW5nT3BlbkNhbGxfaAogCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRB
QkFTRSkKQEAgLTM4LDIzICszNywyMCBAQCBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsKIAog
Y2xhc3MgSURCUGVuZGluZ09wZW5DYWxsIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxJREJQZW5kaW5nT3BlbkNhbGw+IGNyZWF0ZShJREJDYWxsYmFja3MmIGNhbGxiYWNrcywgSURC
RGF0YWJhc2VDYWxsYmFja3MmIGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRyYW5zYWN0aW9u
SWQsIHVpbnQ2NF90IHZlcnNpb24pCisgICAgSURCUGVuZGluZ09wZW5DYWxsKElEQkNhbGxiYWNr
cyYgY2FsbGJhY2tzLCBJREJEYXRhYmFzZUNhbGxiYWNrcyYgZGF0YWJhc2VDYWxsYmFja3MsIGlu
dDY0X3QgdHJhbnNhY3Rpb25JZCwgdWludDY0X3QgdmVyc2lvbikKKyAgICAgICAgOiBtX2NhbGxi
YWNrcygmY2FsbGJhY2tzKQorICAgICAgICAsIG1fZGF0YWJhc2VDYWxsYmFja3MoJmRhdGFiYXNl
Q2FsbGJhY2tzKQorICAgICAgICAsIG1fdmVyc2lvbih2ZXJzaW9uKQorICAgICAgICAsIG1fdHJh
bnNhY3Rpb25JZCh0cmFuc2FjdGlvbklkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBJREJQZW5kaW5nT3BlbkNhbGwoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgdHJh
bnNhY3Rpb25JZCwgdmVyc2lvbikpOwogICAgIH0KKwogICAgIElEQkNhbGxiYWNrcyogY2FsbGJh
Y2tzKCkgeyByZXR1cm4gbV9jYWxsYmFja3MuZ2V0KCk7IH0KICAgICBJREJEYXRhYmFzZUNhbGxi
YWNrcyogZGF0YWJhc2VDYWxsYmFja3MoKSB7IHJldHVybiBtX2RhdGFiYXNlQ2FsbGJhY2tzLmdl
dCgpOyB9CiAgICAgdWludDY0X3QgdmVyc2lvbigpIHsgcmV0dXJuIG1fdmVyc2lvbjsgfQogICAg
IGludDY0X3QgdHJhbnNhY3Rpb25JZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25JZDsg
fQogCiBwcml2YXRlOgotICAgIElEQlBlbmRpbmdPcGVuQ2FsbChJREJDYWxsYmFja3MmIGNhbGxi
YWNrcywgSURCRGF0YWJhc2VDYWxsYmFja3MmIGRhdGFiYXNlQ2FsbGJhY2tzLCBpbnQ2NF90IHRy
YW5zYWN0aW9uSWQsIHVpbnQ2NF90IHZlcnNpb24pCi0gICAgICAgIDogbV9jYWxsYmFja3MoJmNh
bGxiYWNrcykKLSAgICAgICAgLCBtX2RhdGFiYXNlQ2FsbGJhY2tzKCZkYXRhYmFzZUNhbGxiYWNr
cykKLSAgICAgICAgLCBtX3ZlcnNpb24odmVyc2lvbikKLSAgICAgICAgLCBtX3RyYW5zYWN0aW9u
SWQodHJhbnNhY3Rpb25JZCkKLSAgICB7Ci0gICAgfQogICAgIFJlZlB0cjxJREJDYWxsYmFja3M+
IG1fY2FsbGJhY2tzOwogICAgIFJlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4gbV9kYXRhYmFz
ZUNhbGxiYWNrczsKICAgICB1aW50NjRfdCBtX3ZlcnNpb247CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRPcGVyYXRpb25z
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZE9wZXJhdGlvbnMuY3BwCmluZGV4IDgxZjMzYzEwMjNjNjE0ZGFkOTJjN2Y0MjVjMmUwNDQ4
NjkzYWE2ODQuLjFmZTQyNWMyZDMzOGY0ZGQ1YmU1YjRkZDg2ZDU3MWI5OTNkOWY3NzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFj
a2VuZE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQmFja2VuZE9wZXJhdGlvbnMuY3BwCkBAIC0yNDksNyArMjQ5LDcgQEAg
dm9pZCBJREJEYXRhYmFzZUJhY2tlbmQ6OlZlcnNpb25DaGFuZ2VPcGVyYXRpb246OnBlcmZvcm0o
c3RkOjpmdW5jdGlvbjx2b2lkKCk+IGMKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFT
U0VSVCghbV90cmFuc2FjdGlvbi0+ZGF0YWJhc2UoKS5oYXNQZW5kaW5nU2Vjb25kSGFsZk9wZW4o
KSk7CiAgICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNldEN1cnJlbnRWZXJz
aW9uKG1fdmVyc2lvbik7Ci0gICAgICAgICAgICBtX3RyYW5zYWN0aW9uLT5kYXRhYmFzZSgpLnNl
dFBlbmRpbmdTZWNvbmRIYWxmT3BlbihJREJQZW5kaW5nT3BlbkNhbGw6OmNyZWF0ZSgqbV9jYWxs
YmFja3MsICptX2RhdGFiYXNlQ2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uLT5pZCgpLCBtX3ZlcnNp
b24pKTsKKyAgICAgICAgICAgIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCkuc2V0UGVuZGluZ1Nl
Y29uZEhhbGZPcGVuKHN0ZDo6bWFrZV91bmlxdWU8SURCUGVuZGluZ09wZW5DYWxsPigqbV9jYWxs
YmFja3MsICptX2RhdGFiYXNlQ2FsbGJhY2tzLCBtX3RyYW5zYWN0aW9uLT5pZCgpLCBtX3ZlcnNp
b24pKTsKICAgICAgICAgICAgIG1fY2FsbGJhY2tzLT5vblVwZ3JhZGVOZWVkZWQob2xkVmVyc2lv
biwgJm1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCksIG1fdHJhbnNhY3Rpb24tPmRhdGFiYXNlKCku
bWV0YWRhdGEoKSk7CiAgICAgICAgIH0KICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCmluZGV4IGRkNGY4NmZiZjFkMTNkNTFmNzlmNmYxNDJk
ZmY0NWY1M2Y3NmMxYjUuLmJlYzI5ZGNlNmVhMTQ1MTE3YzQzMWE3OTczOTQyYjQ1NDYzN2IwZjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0zMywxMSArMzMsNiBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4g
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSk7Ci19Ci0KIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3I6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oCmluZGV4IDE5ODc4MDkxYmYxYjUwYjk5ODY0YTAwYjQ3Y2U1NzJmYzZiM2Mz
YWEuLjk0NTU0Mzg4OGE4NTFlZDA0ODQ4NWRkNzk4NTg4Nzc4Njk3ZDk3ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmgKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShJTkRFWEVEX0RB
VEFCQVNFKQogCisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAt
MzksNyArNDAsNyBAQCBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmQ7CiAvLyBUcmFuc2FjdGlv
bnMgYXJlIGV4ZWN1dGVkIGluIHRoZSBvcmRlciB0aGUgd2VyZSBjcmVhdGVkLgogY2xhc3MgSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gY3JlYXRlKCk7CisgICAgSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvcigpOwogICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsK
IAogICAgIC8vIENhbGxlZCBieSB0cmFuc2FjdGlvbnMgYXMgdGhleSBzdGFydCBhbmQgZmluaXNo
LgpAQCAtNTMsOCArNTQsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICBJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7Ci0KICAgICB2b2lkIHByb2Nlc3NTdGFydGVkVHJhbnNh
Y3Rpb25zKCk7CiAgICAgYm9vbCBjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tl
bmQqKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2
ZWxkYi9JREJCYWNraW5nU3RvcmVDdXJzb3JMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuaAppbmRl
eCA5NzIwODg0Nzg2ZDEwOWFmZWNjNTM0MjE3MTliMmVjMzM0Y2Q1MGU5Li5iOTA0NDhhMjNkODNk
ZDJjZDE0MTk4ZmE1ZjZlNWQ2MTdlZGEwMGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUN1cnNvckxldmVsREIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJhY2tpbmdT
dG9yZUN1cnNvckxldmVsREIuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIklEQktleS5o
IgogI2luY2x1ZGUgIklEQlJlY29yZElkZW50aWZpZXIuaCIKICNpbmNsdWRlICJMZXZlbERCSXRl
cmF0b3IuaCIKKyNpbmNsdWRlIDxtZW1vcnk+CiAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKICNpZiBVU0UoTEVWRUxEQikKQEAgLTg4LDcgKzg5LDcgQEAgcHJvdGVjdGVkOgogICAgIGlu
dDY0X3QgbV9jdXJzb3JJRDsKICAgICBMZXZlbERCVHJhbnNhY3Rpb24qIG1fdHJhbnNhY3Rpb247
CiAgICAgY29uc3QgQ3Vyc29yT3B0aW9ucyBtX2N1cnNvck9wdGlvbnM7Ci0gICAgT3duUHRyPExl
dmVsREJJdGVyYXRvcj4gbV9pdGVyYXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGV2ZWxEQkl0
ZXJhdG9yPiBtX2l0ZXJhdG9yOwogICAgIFJlZlB0cjxJREJLZXk+IG1fY3VycmVudEtleTsKICAg
ICBSZWZQdHI8SURCUmVjb3JkSWRlbnRpZmllcj4gbV9yZWNvcmRJZGVudGlmaWVyOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCQmFj
a2luZ1N0b3JlTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQkJhY2tpbmdTdG9yZUxldmVsREIuY3BwCmluZGV4IDA3MTJiZGYzODg1MDYyYWZk
MDUxYWU0MjI4YmExZTcyNjFkOWIwY2UuLjMxOGFlOGIxMzRhM2E4MTdmNTM1OGNhN2Q5YTVjNmY2
MDk5MzE3MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJCYWNraW5nU3RvcmVMZXZlbERCLmNwcApAQCAtMjUw
LDcgKzI1MCw3IEBAIFdBUk5fVU5VU0VEX1JFVFVSTiBzdGF0aWMgYm9vbCBzZXRVcE1ldGFkYXRh
KExldmVsREJEYXRhYmFzZSogZGIsIGNvbnN0IFN0cmluZyYKICAgICAgICAgICAgIHB1dEludCh0
cmFuc2FjdGlvbi5nZXQoKSwgc2NoZW1hVmVyc2lvbktleSwgZGJTY2hlbWFWZXJzaW9uKTsKICAg
ICAgICAgICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTmFtZUtleTo6
ZW5jb2RlTWluS2V5Rm9yT3JpZ2luKG9yaWdpbik7CiAgICAgICAgICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gc3RvcEtleSA9IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlU3RvcEtleUZvck9yaWdpbihv
cmlnaW4pOwotICAgICAgICAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBkYi0+Y3Jl
YXRlSXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxMZXZlbERCSXRlcmF0
b3I+IGl0ID0gZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgICAgICAgICBmb3IgKGl0LT5zZWVr
KHN0YXJ0S2V5KTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIHN0b3BL
ZXkpIDwgMDsgaXQtPm5leHQoKSkgewogICAgICAgICAgICAgICAgIGludDY0X3QgZGF0YWJhc2VJ
ZCA9IDA7CiAgICAgICAgICAgICAgICAgZm91bmQgPSBmYWxzZTsKQEAgLTMyNiw3ICszMjYsNyBA
QCBXQVJOX1VOVVNFRF9SRVRVUk4gc3RhdGljIGJvb2wgZ2V0TWF4T2JqZWN0U3RvcmVJZChEQk9y
VHJhbnNhY3Rpb24qIGRiLCBjb25zdCBWZQogCiBjbGFzcyBEZWZhdWx0TGV2ZWxEQkZhY3Rvcnkg
OiBwdWJsaWMgTGV2ZWxEQkZhY3RvcnkgewogcHVibGljOgotICAgIHZpcnR1YWwgUGFzc093blB0
cjxMZXZlbERCRGF0YWJhc2U+IG9wZW5MZXZlbERCKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNv
bnN0IExldmVsREJDb21wYXJhdG9yKiBjb21wYXJhdG9yKQorICAgIHZpcnR1YWwgc3RkOjp1bmlx
dWVfcHRyPExldmVsREJEYXRhYmFzZT4gb3BlbkxldmVsREIoY29uc3QgU3RyaW5nJiBmaWxlTmFt
ZSwgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IpCiAgICAgewogICAgICAgICBy
ZXR1cm4gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKGZpbGVOYW1lLCBjb21wYXJhdG9yKTsKICAgICB9
CkBAIC0zMzYsMTAgKzMzNiwxMCBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6SURCQmFja2luZ1N0b3JlTGV2ZWxEQihjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIsIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBkYiwgUGFzc093blB0cjxMZXZlbERCQ29t
cGFyYXRvcj4gY29tcGFyYXRvcikKK0lEQkJhY2tpbmdTdG9yZUxldmVsREI6OklEQkJhY2tpbmdT
dG9yZUxldmVsREIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9wdHI8TGV2
ZWxEQkRhdGFiYXNlPiBkYiwgc3RkOjp1bmlxdWVfcHRyPExldmVsREJDb21wYXJhdG9yPiBjb21w
YXJhdG9yKQogICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgLCBtX2RiKGRiKQot
ICAgICwgbV9jb21wYXJhdG9yKGNvbXBhcmF0b3IpCisgICAgLCBtX2RiKHN0ZDo6bW92ZShkYikp
CisgICAgLCBtX2NvbXBhcmF0b3Ioc3RkOjptb3ZlKGNvbXBhcmF0b3IpKQogICAgICwgbV93ZWFr
RmFjdG9yeSh0aGlzKQogewogfQpAQCAtMzQ3LDggKzM0Nyw4IEBAIElEQkJhY2tpbmdTdG9yZUxl
dmVsREI6OklEQkJhY2tpbmdTdG9yZUxldmVsREIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBQ
YXNzT3duCiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjp+SURCQmFja2luZ1N0b3JlTGV2ZWxEQigp
CiB7CiAgICAgLy8gbV9kYidzIGRlc3RydWN0b3IgdXNlcyBtX2NvbXBhcmF0b3IuIFRoZSBvcmRl
ciBvZiBkZXN0cnVjdGlvbiBpcyBpbXBvcnRhbnQuCi0gICAgbV9kYi5jbGVhcigpOwotICAgIG1f
Y29tcGFyYXRvci5jbGVhcigpOworICAgIG1fZGIgPSBudWxscHRyOworICAgIG1fY29tcGFyYXRv
ciA9IG51bGxwdHI7CiB9CiAKIGVudW0gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZU9wZW5SZXN1bHQg
ewpAQCAtMzc4LDggKzM3OCw4IEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4g
SURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6b3Blbihjb25zdCBTZWN1cml0eU9yCiAgICAgQVNTRVJU
KCFwYXRoQmFzZUFyZy5pc0VtcHR5KCkpOwogICAgIFN0cmluZyBwYXRoQmFzZSA9IHBhdGhCYXNl
QXJnOwogCi0gICAgT3duUHRyPExldmVsREJDb21wYXJhdG9yPiBjb21wYXJhdG9yID0gYWRvcHRQ
dHIobmV3IENvbXBhcmF0b3IoKSk7Ci0gICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gZGI7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPExldmVsREJDb21wYXJhdG9yPiBjb21wYXJhdG9yID0gc3RkOjpt
YWtlX3VuaXF1ZTxDb21wYXJhdG9yPigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZXZlbERCRGF0
YWJhc2U+IGRiOwogCiAgICAgaWYgKCFwYXRoQmFzZS5jb250YWluc09ubHlBU0NJSSgpKQogICAg
ICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIldlYkNvcmUu
SW5kZXhlZERCLkJhY2tpbmdTdG9yZS5PcGVuU3RhdHVzIiwgSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZU9wZW5BdHRlbXB0Tm9uQVNDSUksIElEQkxldmVsREJCYWNraW5nU3RvcmVPcGVuTWF4KTsKQEAg
LTM5OCwxMSArMzk4LDExIEBAIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gSURC
QmFja2luZ1N0b3JlTGV2ZWxEQjo6b3Blbihjb25zdCBTZWN1cml0eU9yCiAgICAgICAgIGlmICgh
b2spIHsKICAgICAgICAgICAgIExPR19FUlJPUigiSW5kZXhlZERCIGhhZCBJTyBlcnJvciBjaGVj
a2luZyBzY2hlbWEsIHRyZWF0aW5nIGl0IGFzIGZhaWx1cmUgdG8gb3BlbiIpOwogICAgICAgICAg
ICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIldlYkNvcmUuSW5kZXhl
ZERCLkJhY2tpbmdTdG9yZS5PcGVuU3RhdHVzIiwgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZU9wZW5G
YWlsZWRJT0VyckNoZWNraW5nU2NoZW1hLCBJREJMZXZlbERCQmFja2luZ1N0b3JlT3Blbk1heCk7
Ci0gICAgICAgICAgICBkYi5jbGVhcigpOworICAgICAgICAgICAgZGIgPSBudWxscHRyOwogICAg
ICAgICB9IGVsc2UgaWYgKCFrbm93bikgewogICAgICAgICAgICAgTE9HX0VSUk9SKCJJbmRleGVk
REIgYmFja2luZyBzdG9yZSBoYWQgdW5rbm93biBzY2hlbWEsIHRyZWF0aW5nIGl0IGFzIGZhaWx1
cmUgdG8gb3BlbiIpOwogICAgICAgICAgICAgSGlzdG9ncmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51
bWVyYXRpb24oIldlYkNvcmUuSW5kZXhlZERCLkJhY2tpbmdTdG9yZS5PcGVuU3RhdHVzIiwgSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZU9wZW5GYWlsZWRVbmtub3duU2NoZW1hLCBJREJMZXZlbERCQmFj
a2luZ1N0b3JlT3Blbk1heCk7Ci0gICAgICAgICAgICBkYi5jbGVhcigpOworICAgICAgICAgICAg
ZGIgPSBudWxscHRyOwogICAgICAgICB9CiAgICAgfQogCkBAIC00MzMsNyArNDMzLDcgQEAgUGFz
c1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpv
cGVuKGNvbnN0IFNlY3VyaXR5T3IKICAgICAgICAgcmV0dXJuIFBhc3NSZWZQdHI8SURCQmFja2lu
Z1N0b3JlTGV2ZWxEQj4oKTsKICAgICB9CiAKLSAgICByZXR1cm4gY3JlYXRlKGZpbGVJZGVudGlm
aWVyLCBkYi5yZWxlYXNlKCksIGNvbXBhcmF0b3IucmVsZWFzZSgpKTsKKyAgICByZXR1cm4gY3Jl
YXRlKGZpbGVJZGVudGlmaWVyLCBzdGQ6Om1vdmUoZGIpLCBzdGQ6Om1vdmUoY29tcGFyYXRvcikp
OwogfQogCiBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IElEQkJhY2tpbmdTdG9y
ZUxldmVsREI6Om9wZW5Jbk1lbW9yeShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpCkBAIC00NDYs
OCArNDQ2LDggQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJCYWNraW5n
U3RvcmVMZXZlbERCOjpvcGVuSW5NZW1vcnkoY29uc3QgU3QKIHsKICAgICBMT0coU3RvcmFnZUFQ
SSwgIklEQkJhY2tpbmdTdG9yZUxldmVsREI6Om9wZW5Jbk1lbW9yeSIpOwogCi0gICAgT3duUHRy
PExldmVsREJDb21wYXJhdG9yPiBjb21wYXJhdG9yID0gYWRvcHRQdHIobmV3IENvbXBhcmF0b3Io
KSk7Ci0gICAgT3duUHRyPExldmVsREJEYXRhYmFzZT4gZGIgPSBMZXZlbERCRGF0YWJhc2U6Om9w
ZW5Jbk1lbW9yeShjb21wYXJhdG9yLmdldCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TGV2ZWxE
QkNvbXBhcmF0b3I+IGNvbXBhcmF0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbXBhcmF0b3I+KCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPExldmVsREJEYXRhYmFzZT4gZGIgPSBMZXZlbERCRGF0YWJh
c2U6Om9wZW5Jbk1lbW9yeShjb21wYXJhdG9yLmdldCgpKTsKICAgICBpZiAoIWRiKSB7CiAgICAg
ICAgIExPR19FUlJPUigiTGV2ZWxEQkRhdGFiYXNlOjpvcGVuSW5NZW1vcnkgZmFpbGVkLiIpOwog
ICAgICAgICBIaXN0b2dyYW1TdXBwb3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbigiV2ViQ29yZS5J
bmRleGVkREIuQmFja2luZ1N0b3JlLk9wZW5TdGF0dXMiLCBJREJMZXZlbERCQmFja2luZ1N0b3Jl
T3Blbk1lbW9yeUZhaWxlZCwgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZU9wZW5NYXgpOwpAQCAtNDU1
LDEzICs0NTUsMTMgQEAgUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJCYWNr
aW5nU3RvcmVMZXZlbERCOjpvcGVuSW5NZW1vcnkoY29uc3QgU3QKICAgICB9CiAgICAgSGlzdG9n
cmFtU3VwcG9ydDo6aGlzdG9ncmFtRW51bWVyYXRpb24oIldlYkNvcmUuSW5kZXhlZERCLkJhY2tp
bmdTdG9yZS5PcGVuU3RhdHVzIiwgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZU9wZW5NZW1vcnlTdWNj
ZXNzLCBJREJMZXZlbERCQmFja2luZ1N0b3JlT3Blbk1heCk7CiAKLSAgICByZXR1cm4gY3JlYXRl
KGlkZW50aWZpZXIsIGRiLnJlbGVhc2UoKSwgY29tcGFyYXRvci5yZWxlYXNlKCkpOworICAgIHJl
dHVybiBjcmVhdGUoaWRlbnRpZmllciwgc3RkOjptb3ZlKGRiKSwgc3RkOjptb3ZlKGNvbXBhcmF0
b3IpKTsKIH0KIAotUGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBJREJCYWNraW5n
U3RvcmVMZXZlbERCOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBQYXNzT3duUHRy
PExldmVsREJEYXRhYmFzZT4gZGIsIFBhc3NPd25QdHI8TGV2ZWxEQkNvbXBhcmF0b3I+IGNvbXBh
cmF0b3IpCitQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+IElEQkJhY2tpbmdTdG9y
ZUxldmVsREI6OmNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIHN0ZDo6dW5pcXVlX3B0
cjxMZXZlbERCRGF0YWJhc2U+IGRiLCBzdGQ6OnVuaXF1ZV9wdHI8TGV2ZWxEQkNvbXBhcmF0b3I+
IGNvbXBhcmF0b3IpCiB7CiAgICAgLy8gRklYTUU6IEhhbmRsZSBjb21wYXJhdG9yIG5hbWUgY2hh
bmdlcy4KLSAgICBSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gYmFja2luZ1N0b3JlKGFk
b3B0UmVmKG5ldyBJREJCYWNraW5nU3RvcmVMZXZlbERCKGlkZW50aWZpZXIsIGRiLCBjb21wYXJh
dG9yKSkpOworICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmVMZXZlbERCPiBiYWNraW5nU3RvcmUo
YWRvcHRSZWYobmV3IElEQkJhY2tpbmdTdG9yZUxldmVsREIoaWRlbnRpZmllciwgc3RkOjptb3Zl
KGRiKSwgc3RkOjptb3ZlKGNvbXBhcmF0b3IpKSkpOwogCiAgICAgaWYgKCFzZXRVcE1ldGFkYXRh
KGJhY2tpbmdTdG9yZS0+bV9kYi5nZXQoKSwgaWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBQ
YXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZUxldmVsREI+KCk7CkBAIC00NzcsNyArNDc3LDcgQEAg
VmVjdG9yPFN0cmluZz4gSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6Z2V0RGF0YWJhc2VOYW1lcygp
CiAKICAgICBBU1NFUlQoZm91bmROYW1lcy5pc0VtcHR5KCkpOwogCi0gICAgT3duUHRyPExldmVs
REJJdGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOworICAgIHN0ZDo6dW5pcXVl
X3B0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsKICAgICBm
b3IgKGl0LT5zZWVrKHN0YXJ0S2V5KTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+
a2V5KCksIHN0b3BLZXkpIDwgMDsgaXQtPm5leHQoKSkgewogICAgICAgICBjb25zdCBjaGFyKiBw
ID0gaXQtPmtleSgpLmJlZ2luKCk7CiAgICAgICAgIGNvbnN0IGNoYXIqIGxpbWl0ID0gaXQtPmtl
eSgpLmVuZCgpOwpAQCAtNjU1LDcgKzY1NSw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6dXBkYXRlSURCRGF0YWJhc2VWZXJzaW9uKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uCiAK
IHN0YXRpYyB2b2lkIGRlbGV0ZVJhbmdlKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24s
IGNvbnN0IFZlY3RvcjxjaGFyPiYgYmVnaW4sIGNvbnN0IFZlY3RvcjxjaGFyPiYgZW5kKQogewot
ICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJh
dG9yKCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSB0cmFuc2Fj
dGlvbi0+Y3JlYXRlSXRlcmF0b3IoKTsKICAgICBmb3IgKGl0LT5zZWVrKGJlZ2luKTsgaXQtPmlz
VmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIGVuZCkgPCAwOyBpdC0+bmV4dCgpKQog
ICAgICAgICB0cmFuc2FjdGlvbi0+cmVtb3ZlKGl0LT5rZXkoKSk7CiB9CkBAIC02NjMsNyArNjYz
LDcgQEAgc3RhdGljIHZvaWQgZGVsZXRlUmFuZ2UoTGV2ZWxEQlRyYW5zYWN0aW9uKiB0cmFuc2Fj
dGlvbiwgY29uc3QgVmVjdG9yPGNoYXI+JiBiZWcKIHZvaWQgSURCQmFja2luZ1N0b3JlTGV2ZWxE
Qjo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KGJvb2wgc3VjY2Vzcyk+IGJvb2xDYWxsYmFja0Z1bmN0aW9uKQogewogICAgIExPRyhTdG9yYWdl
QVBJLCAiSURCQmFja2luZ1N0b3JlTGV2ZWxEQjo6ZGVsZXRlRGF0YWJhc2UiKTsKLSAgICBPd25Q
dHI8TGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlvbiA9IExldmVsREJXcml0
ZU9ubHlUcmFuc2FjdGlvbjo6Y3JlYXRlKG1fZGIuZ2V0KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0gc3RkOjptYWtlX3Vu
aXF1ZTxMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24+KG1fZGIuZ2V0KCkpOwogCiAgICAgSURC
RGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YTsKICAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKQEAg
LTY4MCw3ICs2ODAsNyBAQCB2b2lkIElEQkJhY2tpbmdTdG9yZUxldmVsREI6OmRlbGV0ZURhdGFi
YXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjpmdW5jdGlvbjx2bwogCiAgICAgY29uc3QgVmVj
dG9yPGNoYXI+IHN0YXJ0S2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRh
LmlkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpPcmlnaW5OYW1lKTsKICAgICBjb25zdCBWZWN0b3I8
Y2hhcj4gc3RvcEtleSA9IERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS5pZCAr
IDEsIERhdGFiYXNlTWV0YURhdGFLZXk6Ok9yaWdpbk5hbWUpOwotICAgIE93blB0cjxMZXZlbERC
SXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IG1fZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgZm9y
IChpdC0+c2VlayhzdGFydEtleSk7IGl0LT5pc1ZhbGlkKCkgJiYgY29tcGFyZUtleXMoaXQtPmtl
eSgpLCBzdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpCiAgICAgICAgIHRyYW5zYWN0aW9uLT5yZW1v
dmUoaXQtPmtleSgpKTsKIApAQCAtNzIxLDcgKzcyMSw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6Z2V0T2JqZWN0U3RvcmVzKGludDY0X3QgZGF0YWJhc2VJZCwgSURCRGF0YWJhc2VN
ZXRhCiAKICAgICBBU1NFUlQob2JqZWN0U3RvcmVzLT5pc0VtcHR5KCkpOwogCi0gICAgT3duUHRy
PExldmVsREJJdGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsK
ICAgICBpdC0+c2VlayhzdGFydEtleSk7CiAgICAgd2hpbGUgKGl0LT5pc1ZhbGlkKCkgJiYgY29t
cGFyZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDApIHsKICAgICAgICAgY29uc3QgY2hhciog
cCA9IGl0LT5rZXkoKS5iZWdpbigpOwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAgYm9vbCBJREJCYWNr
aW5nU3RvcmVMZXZlbERCOjpnZXRLZXlHZW5lcmF0b3JDdXJyZW50TnVtYmVyKElEQkJhY2tpbmdT
dG9yZVRyYW5zYWMKICAgICAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gT2JqZWN0
U3RvcmVEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgb2JqZWN0U3RvcmVJZCwgbWluSURCS2V5
KCkpOwogICAgICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IE9iamVjdFN0b3JlRGF0
YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQsIG1heElEQktleSgpKTsKIAot
ICAgICAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IGxldmVsREJUcmFuc2FjdGlvbi0+
Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICAgICAgc3RkOjp1bmlxdWVfcHRyPExldmVsREJJdGVyYXRv
cj4gaXQgPSBsZXZlbERCVHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAgICAgIGlu
dDY0X3QgbWF4TnVtZXJpY0tleSA9IDA7CiAKICAgICAgICAgZm9yIChpdC0+c2VlayhzdGFydEtl
eSk7IGl0LT5pc1ZhbGlkKCkgJiYgY29tcGFyZUtleXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDA7
IGl0LT5uZXh0KCkpIHsKQEAgLTExMjcsNyArMTEyNyw3IEBAIGJvb2wgSURCQmFja2luZ1N0b3Jl
TGV2ZWxEQjo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3Rv
cmVJCiAKICAgICBBU1NFUlQoaW5kZXhlcy0+aXNFbXB0eSgpKTsKIAotICAgIE93blB0cjxMZXZl
bERCSXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IG1fZGItPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAg
aXQtPnNlZWsoc3RhcnRLZXkpOwogICAgIHdoaWxlIChpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVL
ZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBp
dC0+a2V5KCkuYmVnaW4oKTsKQEAgLTEyNTQsNyArMTI1NCw3IEBAIGJvb2wgSURCQmFja2luZ1N0
b3JlTGV2ZWxEQjo6cHV0SW5kZXhEYXRhRm9yUmVjb3JkKElEQkJhY2tpbmdTdG9yZVRyYW5zYWN0
aW9uTGV2CiAKIHN0YXRpYyBib29sIGZpbmRHcmVhdGVzdEtleUxlc3NUaGFuT3JFcXVhbChMZXZl
bERCVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBjb25zdCBWZWN0b3I8Y2hhcj4mIHRhcmdldCwg
VmVjdG9yPGNoYXI+JiBmb3VuZEtleSkKIHsKLSAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBp
dCA9IHRyYW5zYWN0aW9uLT5jcmVhdGVJdGVyYXRvcigpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxM
ZXZlbERCSXRlcmF0b3I+IGl0ID0gdHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CiAgICAg
aXQtPnNlZWsodGFyZ2V0KTsKIAogICAgIGlmICghaXQtPmlzVmFsaWQoKSkgewpAQCAtMTMwNyw3
ICsxMzA3LDcgQEAgYm9vbCBJREJCYWNraW5nU3RvcmVMZXZlbERCOjpmaW5kS2V5SW5JbmRleChJ
REJCYWNraW5nU3RvcmVUcmFuc2FjdGlvbkxldmVsREImIHQKIAogICAgIExldmVsREJUcmFuc2Fj
dGlvbiogbGV2ZWxEQlRyYW5zYWN0aW9uID0gSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZl
bERCOjpsZXZlbERCVHJhbnNhY3Rpb25Gcm9tKHRyYW5zYWN0aW9uKTsKICAgICBjb25zdCBWZWN0
b3I8Y2hhcj4gbGV2ZWxkYktleSA9IEluZGV4RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9i
amVjdFN0b3JlSWQsIGluZGV4SWQsIGtleSk7Ci0gICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4g
aXQgPSBsZXZlbERCVHJhbnNhY3Rpb24tPmNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBsZXZlbERCVHJhbnNhY3Rpb24tPmNyZWF0ZUl0
ZXJhdG9yKCk7CiAgICAgaXQtPnNlZWsobGV2ZWxkYktleSk7CiAKICAgICBmb3IgKDs7KSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkJh
Y2tpbmdTdG9yZUxldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oCmluZGV4IDllZjc1ZTQ1Y2M4ZjliMDhjMmM0
YWRhZTcxNWUzNWIyZjQzMWZiOTcuLmUyMGVkYzkyYzc2NjUxYWJkOWYyNGZhMTQ5YTY3Zjc2N2Q4
ODY0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCQmFja2luZ1N0b3JlTGV2ZWxEQi5oCkBAIC0zNyw3ICszNyw3
IEBACiAjaW5jbHVkZSAiTGV2ZWxEQkl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQlRyYW5z
YWN0aW9uLmgiCiAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVk
ZSA8d3RmL1dlYWtQdHIuaD4KIApAQCAtNTYsNyArNTYsNyBAQCBjbGFzcyBTaGFyZWRCdWZmZXI7
CiBjbGFzcyBMZXZlbERCRmFjdG9yeSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB+TGV2ZWxEQkZh
Y3RvcnkoKSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBvcGVu
TGV2ZWxEQihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29tcGFyYXRvciop
ID0gMDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxMZXZlbERCRGF0YWJhc2U+IG9wZW5M
ZXZlbERCKGNvbnN0IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0IExldmVsREJDb21wYXJhdG9yKikg
PSAwOwogICAgIHZpcnR1YWwgYm9vbCBkZXN0cm95TGV2ZWxEQihjb25zdCBTdHJpbmcmIGZpbGVO
YW1lKSA9IDA7CiB9OwogCkBAIC0xMTYsOCArMTE2LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVt
b3ZlQmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oSURCQmFja2luZ1N0b3JlVHJhbnNhY3Rpb25MZXZl
bERCKik7CiAKIHByaXZhdGU6Ci0gICAgSURCQmFja2luZ1N0b3JlTGV2ZWxEQihjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiwgUGFzc093blB0cjxM
ZXZlbERCQ29tcGFyYXRvcj4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9y
ZUxldmVsREI+IGNyZWF0ZShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIFBhc3NPd25QdHI8TGV2
ZWxEQkRhdGFiYXNlPiwgUGFzc093blB0cjxMZXZlbERCQ29tcGFyYXRvcj4pOworICAgIElEQkJh
Y2tpbmdTdG9yZUxldmVsREIoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBzdGQ6OnVuaXF1ZV9w
dHI8TGV2ZWxEQkRhdGFiYXNlPiwgc3RkOjp1bmlxdWVfcHRyPExldmVsREJDb21wYXJhdG9yPik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgaWRlbnRpZmllciwgc3RkOjp1bmlxdWVfcHRyPExldmVsREJEYXRhYmFzZT4s
IHN0ZDo6dW5pcXVlX3B0cjxMZXZlbERCQ29tcGFyYXRvcj4pOwogCiAgICAgLy8gRklYTUU6IExl
dmVsREIgbmVlZHMgdG8gc3VwcG9ydCB1aW50NjRfdCBhcyB0aGUgdmVyc2lvbiB0eXBlLgogICAg
IGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShJREJEYXRhYmFzZU1ldGFkYXRhJik7CkBA
IC0xMjksOCArMTI5LDggQEAgcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7CiAK
LSAgICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBtX2RiOwotICAgIE93blB0cjxMZXZlbERCQ29t
cGFyYXRvcj4gbV9jb21wYXJhdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZXZlbERCRGF0YWJh
c2U+IG1fZGI7CisgICAgc3RkOjp1bmlxdWVfcHRyPExldmVsREJDb21wYXJhdG9yPiBtX2NvbXBh
cmF0b3I7CiAgICAgV2Vha1B0ckZhY3Rvcnk8SURCQmFja2luZ1N0b3JlTGV2ZWxEQj4gbV93ZWFr
RmFjdG9yeTsKIAogICAgIEhhc2hNYXA8aW50NjRfdCwgUmVmUHRyPElEQkJhY2tpbmdTdG9yZVRy
YW5zYWN0aW9uTGV2ZWxEQj4+IG1fYmFja2luZ1N0b3JlVHJhbnNhY3Rpb25zOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuY3BwCmluZGV4
IDMzNjg4ZTI5MGYwMWUxY2RkZTNjOGViYjk3NTVmZTdmNjIzZmRmYzQuLjg4YWNmZDFjY2U5YmM0
YmQ0Y2Y1ZDQ1NDM5N2E1NmQyOGU2ZGQ5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2xldmVsZGIvTGV2ZWxEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5jcHAKQEAgLTQxLDcgKzQxLDYgQEAKICNp
bmNsdWRlIDxsZXZlbGRiL2Vudi5oPgogI2luY2x1ZGUgPGxldmVsZGIvc2xpY2UuaD4KICNpbmNs
dWRlIDxzdHJpbmc+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEx
MSw5ICsxMTAsOSBAQCBMZXZlbERCRGF0YWJhc2U6OkxldmVsREJEYXRhYmFzZSgpCiBMZXZlbERC
RGF0YWJhc2U6On5MZXZlbERCRGF0YWJhc2UoKQogewogICAgIC8vIG1fZGIncyBkZXN0cnVjdG9y
IHVzZXMgbV9jb21wYXJhdG9yQWRhcHRlcjsgb3JkZXIgb2YgZGVsZXRpb24gaXMgaW1wb3J0YW50
LgotICAgIG1fZGIuY2xlYXIoKTsKLSAgICBtX2NvbXBhcmF0b3JBZGFwdGVyLmNsZWFyKCk7Ci0g
ICAgbV9lbnYuY2xlYXIoKTsKKyAgICBtX2RiID0gbnVsbHB0cjsKKyAgICBtX2NvbXBhcmF0b3JB
ZGFwdGVyID0gbnVsbHB0cjsKKyAgICBtX2VudiA9IG51bGxwdHI7CiB9CiAKIHN0YXRpYyBsZXZl
bGRiOjpTdGF0dXMgb3BlbkRCKGxldmVsZGI6OkNvbXBhcmF0b3IqIGNvbXBhcmF0b3IsIGxldmVs
ZGI6OkVudiogZW52LCBjb25zdCBTdHJpbmcmIHBhdGgsIGxldmVsZGI6OkRCKiogZGIpCkBAIC0x
NTcsOSArMTU2LDkgQEAgc3RhdGljIHZvaWQgaGlzdG9ncmFtTGV2ZWxEQkVycm9yKGNvbnN0IGNo
YXIqIGhpc3RvZ3JhbU5hbWUsIGNvbnN0IGxldmVsZGI6OlN0YXQKICAgICBIaXN0b2dyYW1TdXBw
b3J0OjpoaXN0b2dyYW1FbnVtZXJhdGlvbihoaXN0b2dyYW1OYW1lLCBsZXZlbERCRXJyb3IsIExl
dmVsREJNYXhFcnJvcik7CiB9CiAKLVBhc3NPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiBMZXZlbERC
RGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgTGV2ZWxEQkNvbXBh
cmF0b3IqIGNvbXBhcmF0b3IpCitzdGQ6OnVuaXF1ZV9wdHI8TGV2ZWxEQkRhdGFiYXNlPiBMZXZl
bERCRGF0YWJhc2U6Om9wZW4oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3QgTGV2ZWxEQkNv
bXBhcmF0b3IqIGNvbXBhcmF0b3IpCiB7Ci0gICAgT3duUHRyPENvbXBhcmF0b3JBZGFwdGVyPiBj
b21wYXJhdG9yQWRhcHRlciA9IGFkb3B0UHRyKG5ldyBDb21wYXJhdG9yQWRhcHRlcihjb21wYXJh
dG9yKSk7CisgICAgYXV0byBjb21wYXJhdG9yQWRhcHRlciA9IHN0ZDo6bWFrZV91bmlxdWU8Q29t
cGFyYXRvckFkYXB0ZXI+KGNvbXBhcmF0b3IpOwogCiAgICAgbGV2ZWxkYjo6REIqIGRiOwogICAg
IGNvbnN0IGxldmVsZGI6OlN0YXR1cyBzID0gb3BlbkRCKGNvbXBhcmF0b3JBZGFwdGVyLmdldCgp
LCBsZXZlbGRiOjpJREJFbnYoKSwgZmlsZU5hbWUsICZkYik7CkBAIC0xNzEsMTggKzE3MCwxOCBA
QCBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuKGNvbnN0
IFN0cmluZyYgZmlsZU5hbWUsIGNvbnN0CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
IAotICAgIE93blB0cjxMZXZlbERCRGF0YWJhc2U+IHJlc3VsdCA9IGFkb3B0UHRyKG5ldyBMZXZl
bERCRGF0YWJhc2UpOwotICAgIHJlc3VsdC0+bV9kYiA9IGFkb3B0UHRyKGRiKTsKLSAgICByZXN1
bHQtPm1fY29tcGFyYXRvckFkYXB0ZXIgPSBjb21wYXJhdG9yQWRhcHRlci5yZWxlYXNlKCk7Cisg
ICAgYXV0byByZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPExldmVsREJEYXRhYmFzZT4oKTsKKyAg
ICByZXN1bHQtPm1fZGIgPSBzdGQ6OnVuaXF1ZV9wdHI8bGV2ZWxkYjo6REI+KGRiKTsKKyAgICBy
ZXN1bHQtPm1fY29tcGFyYXRvckFkYXB0ZXIgPSBzdGQ6Om1vdmUoY29tcGFyYXRvckFkYXB0ZXIp
OwogICAgIHJlc3VsdC0+bV9jb21wYXJhdG9yID0gY29tcGFyYXRvcjsKIAotICAgIHJldHVybiBy
ZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLVBhc3NPd25QdHI8TGV2
ZWxEQkRhdGFiYXNlPiBMZXZlbERCRGF0YWJhc2U6Om9wZW5Jbk1lbW9yeShjb25zdCBMZXZlbERC
Q29tcGFyYXRvciogY29tcGFyYXRvcikKK3N0ZDo6dW5pcXVlX3B0cjxMZXZlbERCRGF0YWJhc2U+
IExldmVsREJEYXRhYmFzZTo6b3BlbkluTWVtb3J5KGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBj
b21wYXJhdG9yKQogewotICAgIE93blB0cjxDb21wYXJhdG9yQWRhcHRlcj4gY29tcGFyYXRvckFk
YXB0ZXIgPSBhZG9wdFB0cihuZXcgQ29tcGFyYXRvckFkYXB0ZXIoY29tcGFyYXRvcikpOwotICAg
IE93blB0cjxsZXZlbGRiOjpFbnY+IGluTWVtb3J5RW52ID0gYWRvcHRQdHIobGV2ZWxkYjo6TmV3
TWVtRW52KGxldmVsZGI6OklEQkVudigpKSk7CisgICAgYXV0byBjb21wYXJhdG9yQWRhcHRlciA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29tcGFyYXRvckFkYXB0ZXI+KGNvbXBhcmF0b3IpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxsZXZlbGRiOjpFbnY+IGluTWVtb3J5RW52KGxldmVsZGI6Ok5ld01lbUVu
dihsZXZlbGRiOjpJREJFbnYoKSkpOwogCiAgICAgbGV2ZWxkYjo6REIqIGRiOwogICAgIGNvbnN0
IGxldmVsZGI6OlN0YXR1cyBzID0gb3BlbkRCKGNvbXBhcmF0b3JBZGFwdGVyLmdldCgpLCBpbk1l
bW9yeUVudi5nZXQoKSwgU3RyaW5nKCksICZkYik7CkBAIC0xOTIsMTMgKzE5MSwxMyBAQCBQYXNz
T3duUHRyPExldmVsREJEYXRhYmFzZT4gTGV2ZWxEQkRhdGFiYXNlOjpvcGVuSW5NZW1vcnkoY29u
c3QgTGV2ZWxEQkNvbXBhcmF0bwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAg
ICBPd25QdHI8TGV2ZWxEQkRhdGFiYXNlPiByZXN1bHQgPSBhZG9wdFB0cihuZXcgTGV2ZWxEQkRh
dGFiYXNlKTsKLSAgICByZXN1bHQtPm1fZW52ID0gaW5NZW1vcnlFbnYucmVsZWFzZSgpOwotICAg
IHJlc3VsdC0+bV9kYiA9IGFkb3B0UHRyKGRiKTsKLSAgICByZXN1bHQtPm1fY29tcGFyYXRvckFk
YXB0ZXIgPSBjb21wYXJhdG9yQWRhcHRlci5yZWxlYXNlKCk7CisgICAgYXV0byByZXN1bHQgPSBz
dGQ6Om1ha2VfdW5pcXVlPExldmVsREJEYXRhYmFzZT4oKTsKKyAgICByZXN1bHQtPm1fZW52ID0g
c3RkOjptb3ZlKGluTWVtb3J5RW52KTsKKyAgICByZXN1bHQtPm1fZGIgPSBzdGQ6OnVuaXF1ZV9w
dHI8bGV2ZWxkYjo6REI+KGRiKTsKKyAgICByZXN1bHQtPm1fY29tcGFyYXRvckFkYXB0ZXIgPSBz
dGQ6Om1vdmUoY29tcGFyYXRvckFkYXB0ZXIpOwogICAgIHJlc3VsdC0+bV9jb21wYXJhdG9yID0g
Y29tcGFyYXRvcjsKIAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgIHJldHVybiBy
ZXN1bHQ7CiB9CiAKIGJvb2wgTGV2ZWxEQkRhdGFiYXNlOjpwdXQoY29uc3QgTGV2ZWxEQlNsaWNl
JiBrZXksIGNvbnN0IFZlY3RvcjxjaGFyPiYgdmFsdWUpCkBAIC0yNjQsNiArMjYzLDcgQEAgYm9v
bCBMZXZlbERCRGF0YWJhc2U6OndyaXRlKExldmVsREJXcml0ZUJhdGNoJiB3cml0ZUJhdGNoKQog
bmFtZXNwYWNlIHsKIGNsYXNzIEl0ZXJhdG9ySW1wbCA6IHB1YmxpYyBMZXZlbERCSXRlcmF0b3Ig
ewogcHVibGljOgorICAgIEl0ZXJhdG9ySW1wbChzdGQ6OnVuaXF1ZV9wdHI8bGV2ZWxkYjo6SXRl
cmF0b3I+KTsKICAgICB+SXRlcmF0b3JJbXBsKCkgeyB9OwogCiAgICAgdmlydHVhbCBib29sIGlz
VmFsaWQoKSBjb25zdDsKQEAgLTI3NSwxNiArMjc1LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IExldmVsREJTbGljZSB2YWx1ZSgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFz
cyBXZWJDb3JlOjpMZXZlbERCRGF0YWJhc2U7Ci0gICAgSXRlcmF0b3JJbXBsKFBhc3NPd25QdHI8
bGV2ZWxkYjo6SXRlcmF0b3I+KTsKICAgICB2b2lkIGNoZWNrU3RhdHVzKCk7CiAKLSAgICBPd25Q
dHI8bGV2ZWxkYjo6SXRlcmF0b3I+IG1faXRlcmF0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPGxl
dmVsZGI6Okl0ZXJhdG9yPiBtX2l0ZXJhdG9yOwogfTsKIH0KIAotSXRlcmF0b3JJbXBsOjpJdGVy
YXRvckltcGwoUGFzc093blB0cjxsZXZlbGRiOjpJdGVyYXRvcj4gaXQpCi0gICAgOiBtX2l0ZXJh
dG9yKGl0KQorSXRlcmF0b3JJbXBsOjpJdGVyYXRvckltcGwoc3RkOjp1bmlxdWVfcHRyPGxldmVs
ZGI6Okl0ZXJhdG9yPiBpdCkKKyAgICA6IG1faXRlcmF0b3Ioc3RkOjptb3ZlKGl0KSkKIHsKIH0K
IApAQCAtMzM4LDE1ICszMzYsMTUgQEAgTGV2ZWxEQlNsaWNlIEl0ZXJhdG9ySW1wbDo6dmFsdWUo
KSBjb25zdAogICAgIHJldHVybiBtYWtlTGV2ZWxEQlNsaWNlKG1faXRlcmF0b3ItPnZhbHVlKCkp
OwogfQogCi1QYXNzT3duUHRyPExldmVsREJJdGVyYXRvcj4gTGV2ZWxEQkRhdGFiYXNlOjpjcmVh
dGVJdGVyYXRvcihjb25zdCBMZXZlbERCU25hcHNob3QqIHNuYXBzaG90KQorc3RkOjp1bmlxdWVf
cHRyPExldmVsREJJdGVyYXRvcj4gTGV2ZWxEQkRhdGFiYXNlOjpjcmVhdGVJdGVyYXRvcihjb25z
dCBMZXZlbERCU25hcHNob3QqIHNuYXBzaG90KQogewogICAgIGxldmVsZGI6OlJlYWRPcHRpb25z
IHJlYWRPcHRpb25zOwogICAgIHJlYWRPcHRpb25zLnZlcmlmeV9jaGVja3N1bXMgPSB0cnVlOyAv
LyBGSVhNRTogRGlzYWJsZSB0aGlzIGlmIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3QgaXMgdG9vIGdy
ZWF0LgogICAgIHJlYWRPcHRpb25zLnNuYXBzaG90ID0gc25hcHNob3QgPyBzbmFwc2hvdC0+bV9z
bmFwc2hvdCA6IDA7Ci0gICAgT3duUHRyPGxldmVsZGI6Okl0ZXJhdG9yPiBpID0gYWRvcHRQdHIo
bV9kYi0+TmV3SXRlcmF0b3IocmVhZE9wdGlvbnMpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8bGV2
ZWxkYjo6SXRlcmF0b3I+IGkobV9kYi0+TmV3SXRlcmF0b3IocmVhZE9wdGlvbnMpKTsKICAgICBp
ZiAoIWkpIC8vIEZJWE1FOiBEb3VibGUgY2hlY2sgaWYgd2UgYWN0dWFsbHkgbmVlZCB0byBjaGVj
ayB0aGlzLgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3
IEl0ZXJhdG9ySW1wbChpLnJlbGVhc2UoKSkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVl
PEl0ZXJhdG9ySW1wbD4oc3RkOjptb3ZlKGkpKTsKIH0KIAogY29uc3QgTGV2ZWxEQkNvbXBhcmF0
b3IqIExldmVsREJEYXRhYmFzZTo6Y29tcGFyYXRvcigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJEYXRhYmFzZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCRGF0YWJhc2UuaAppbmRleCAxMTI4M2NiZjNi
YWI2ZGNhZmUzMGY1NWZkZjIyZGE5OGMyNzM3ZTFlLi4yNzE5NjViMDk5M2NhM2YwMzliOWFiMDlk
NjMxNWExNDJlOWUyN2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZl
bGRiL0xldmVsREJEYXRhYmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVs
ZGIvTGV2ZWxEQkRhdGFiYXNlLmgKQEAgLTI4LDggKzI4LDcgQEAKIAogI2lmIFVTRShMRVZFTERC
KQogCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CisjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjIsOCArNjEsOSBAQCBwcml2YXRlOgogCiBjbGFz
cyBMZXZlbERCRGF0YWJhc2UgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPExldmVs
REJEYXRhYmFzZT4gb3Blbihjb25zdCBTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBMZXZlbERCQ29t
cGFyYXRvciopOwotICAgIHN0YXRpYyBQYXNzT3duUHRyPExldmVsREJEYXRhYmFzZT4gb3Blbklu
TWVtb3J5KGNvbnN0IExldmVsREJDb21wYXJhdG9yKik7CisgICAgc3RhdGljIHN0ZDo6dW5pcXVl
X3B0cjxMZXZlbERCRGF0YWJhc2U+IG9wZW4oY29uc3QgU3RyaW5nJiBmaWxlTmFtZSwgY29uc3Qg
TGV2ZWxEQkNvbXBhcmF0b3IqKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPExldmVsREJE
YXRhYmFzZT4gb3BlbkluTWVtb3J5KGNvbnN0IExldmVsREJDb21wYXJhdG9yKik7CisgICAgTGV2
ZWxEQkRhdGFiYXNlKCk7CiAgICAgc3RhdGljIGJvb2wgZGVzdHJveShjb25zdCBTdHJpbmcmIGZp
bGVOYW1lKTsKICAgICB2aXJ0dWFsIH5MZXZlbERCRGF0YWJhc2UoKTsKIApAQCAtNzEsMTggKzcx
LDE1IEBAIHB1YmxpYzoKICAgICBib29sIHJlbW92ZShjb25zdCBMZXZlbERCU2xpY2UmIGtleSk7
CiAgICAgdmlydHVhbCBib29sIHNhZmVHZXQoY29uc3QgTGV2ZWxEQlNsaWNlJiBrZXksIFZlY3Rv
cjxjaGFyPiYgdmFsdWUsIGJvb2wmIGZvdW5kLCBjb25zdCBMZXZlbERCU25hcHNob3QqID0gMCk7
CiAgICAgYm9vbCB3cml0ZShMZXZlbERCV3JpdGVCYXRjaCYpOwotICAgIFBhc3NPd25QdHI8TGV2
ZWxEQkl0ZXJhdG9yPiBjcmVhdGVJdGVyYXRvcihjb25zdCBMZXZlbERCU25hcHNob3QqID0gMCk7
CisgICAgc3RkOjp1bmlxdWVfcHRyPExldmVsREJJdGVyYXRvcj4gY3JlYXRlSXRlcmF0b3IoY29u
c3QgTGV2ZWxEQlNuYXBzaG90KiA9IDApOwogICAgIGNvbnN0IExldmVsREJDb21wYXJhdG9yKiBj
b21wYXJhdG9yKCkgY29uc3Q7CiAKLXByb3RlY3RlZDoKLSAgICBMZXZlbERCRGF0YWJhc2UoKTsK
LQogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGV2ZWxEQlNuYXBzaG90OwogCi0gICAgT3du
UHRyPGxldmVsZGI6OkVudj4gbV9lbnY7Ci0gICAgT3duUHRyPGxldmVsZGI6OkNvbXBhcmF0b3I+
IG1fY29tcGFyYXRvckFkYXB0ZXI7Ci0gICAgT3duUHRyPGxldmVsZGI6OkRCPiBtX2RiOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxsZXZlbGRiOjpFbnY+IG1fZW52OworICAgIHN0ZDo6dW5pcXVlX3B0
cjxsZXZlbGRiOjpDb21wYXJhdG9yPiBtX2NvbXBhcmF0b3JBZGFwdGVyOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxsZXZlbGRiOjpEQj4gbV9kYjsKICAgICBjb25zdCBMZXZlbERCQ29tcGFyYXRvciog
bV9jb21wYXJhdG9yOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uY3BwCmluZGV4IGZkMzlmMTgzOTlhZTNiZTcxM2Q0
MGY2NDAxYjQ1Y2Q1ODBmYzRhYjUuLjU2YjQwYTYxZmE1NDc5ZjI4YTY2MmFlNTg3MzhjMmI4Zjlj
Nzc5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xl
dmVsREJUcmFuc2FjdGlvbi5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBib29sIExldmVsREJUcmFu
c2FjdGlvbjo6Y29tbWl0KCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgT3du
UHRyPExldmVsREJXcml0ZUJhdGNoPiB3cml0ZUJhdGNoID0gTGV2ZWxEQldyaXRlQmF0Y2g6OmNy
ZWF0ZSgpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxMZXZlbERCV3JpdGVCYXRjaD4gd3JpdGVCYXRj
aCA9IHN0ZDo6bWFrZV91bmlxdWU8TGV2ZWxEQldyaXRlQmF0Y2g+KCk7CiAKICAgICBUcmVlVHlw
ZTo6SXRlcmF0b3IgaXRlcmF0b3I7CiAgICAgaXRlcmF0b3Iuc3RhcnRfaXRlcl9sZWFzdChtX3Ry
ZWUpOwpAQCAtMTY4LDE0ICsxNjgsOSBAQCB2b2lkIExldmVsREJUcmFuc2FjdGlvbjo6cm9sbGJh
Y2soKQogICAgIGNsZWFyVHJlZSgpOwogfQogCi1QYXNzT3duUHRyPExldmVsREJJdGVyYXRvcj4g
TGV2ZWxEQlRyYW5zYWN0aW9uOjpjcmVhdGVJdGVyYXRvcigpCitzdGQ6OnVuaXF1ZV9wdHI8TGV2
ZWxEQkl0ZXJhdG9yPiBMZXZlbERCVHJhbnNhY3Rpb246OmNyZWF0ZUl0ZXJhdG9yKCkKIHsKLSAg
ICByZXR1cm4gVHJhbnNhY3Rpb25JdGVyYXRvcjo6Y3JlYXRlKHRoaXMpOwotfQotCi1QYXNzT3du
UHRyPExldmVsREJUcmFuc2FjdGlvbjo6VHJlZUl0ZXJhdG9yPiBMZXZlbERCVHJhbnNhY3Rpb246
OlRyZWVJdGVyYXRvcjo6Y3JlYXRlKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCi17
Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUcmVlSXRlcmF0b3IodHJhbnNhY3Rpb24pKTsKKyAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxUcmFuc2FjdGlvbkl0ZXJhdG9yPih0aGlzKTsKIH0K
IAogYm9vbCBMZXZlbERCVHJhbnNhY3Rpb246OlRyZWVJdGVyYXRvcjo6aXNWYWxpZCgpIGNvbnN0
CkBAIC0yNTcsMTUgKzI1MiwxMCBAQCBMZXZlbERCVHJhbnNhY3Rpb246OlRyZWVJdGVyYXRvcjo6
VHJlZUl0ZXJhdG9yKExldmVsREJUcmFuc2FjdGlvbiogdHJhbnNhY3Rpb24pCiB7CiB9CiAKLVBh
c3NPd25QdHI8TGV2ZWxEQlRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbkl0ZXJhdG9yPiBMZXZlbERC
VHJhbnNhY3Rpb246OlRyYW5zYWN0aW9uSXRlcmF0b3I6OmNyZWF0ZShQYXNzUmVmUHRyPExldmVs
REJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24pCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
cmFuc2FjdGlvbkl0ZXJhdG9yKHRyYW5zYWN0aW9uKSk7Ci19Ci0KIExldmVsREJUcmFuc2FjdGlv
bjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6VHJhbnNhY3Rpb25JdGVyYXRvcihQYXNzUmVmUHRyPExl
dmVsREJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb24pCiAgICAgOiBtX3RyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uKQogICAgICwgbV9jb21wYXJhdG9yKG1fdHJhbnNhY3Rpb24tPm1fY29tcGFyYXRvcikK
LSAgICAsIG1fdHJlZUl0ZXJhdG9yKFRyZWVJdGVyYXRvcjo6Y3JlYXRlKG1fdHJhbnNhY3Rpb24u
Z2V0KCkpKQorICAgICwgbV90cmVlSXRlcmF0b3Ioc3RkOjptYWtlX3VuaXF1ZTxUcmVlSXRlcmF0
b3I+KChtX3RyYW5zYWN0aW9uLmdldCgpKSkpCiAgICAgLCBtX2RiSXRlcmF0b3IobV90cmFuc2Fj
dGlvbi0+bV9kYi0+Y3JlYXRlSXRlcmF0b3IoJm1fdHJhbnNhY3Rpb24tPm1fc25hcHNob3QpKQog
ICAgICwgbV9jdXJyZW50KDApCiAgICAgLCBtX2RpcmVjdGlvbihrRm9yd2FyZCkKQEAgLTM4Nyw3
ICszNzcsNyBAQCB2b2lkIExldmVsREJUcmFuc2FjdGlvbjo6VHJhbnNhY3Rpb25JdGVyYXRvcjo6
cmVmcmVzaFRyZWVJdGVyYXRvcigpIGNvbnN0CiAKICAgICBtX3RyZWVDaGFuZ2VkID0gZmFsc2U7
CiAKLSAgICBpZiAobV90cmVlSXRlcmF0b3ItPmlzVmFsaWQoKSAmJiBtX3RyZWVJdGVyYXRvciA9
PSBtX2N1cnJlbnQpIHsKKyAgICBpZiAobV90cmVlSXRlcmF0b3ItPmlzVmFsaWQoKSAmJiBtX3Ry
ZWVJdGVyYXRvci5nZXQoKSA9PSBtX2N1cnJlbnQpIHsKICAgICAgICAgbV90cmVlSXRlcmF0b3It
PnJlc2V0KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00OTksMTQgKzQ4OSw5IEBAIHZv
aWQgTGV2ZWxEQlRyYW5zYWN0aW9uOjpub3RpZnlJdGVyYXRvcnNPZlRyZWVDaGFuZ2UoKQogICAg
IH0KIH0KIAotUGFzc093blB0cjxMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24+IExldmVsREJX
cml0ZU9ubHlUcmFuc2FjdGlvbjo6Y3JlYXRlKExldmVsREJEYXRhYmFzZSogZGIpCi17Ci0gICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24oZGIpKTsKLX0K
LQogTGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uOjpMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rp
b24oTGV2ZWxEQkRhdGFiYXNlKiBkYikKICAgICA6IG1fZGIoZGIpCi0gICAgLCBtX3dyaXRlQmF0
Y2goTGV2ZWxEQldyaXRlQmF0Y2g6OmNyZWF0ZSgpKQorICAgICwgbV93cml0ZUJhdGNoKHN0ZDo6
bWFrZV91bmlxdWU8TGV2ZWxEQldyaXRlQmF0Y2g+KCkpCiAgICAgLCBtX2ZpbmlzaGVkKGZhbHNl
KQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZl
bERCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxE
QlRyYW5zYWN0aW9uLmgKaW5kZXggMjZlYjY1Zjc3YjU3NDlhNDJhM2E4MGE3MGM3ZjBlMjJlNzQz
YTJiYy4uMDYxNzk1ZjNkYTdlNjJlY2NmYjZkNjRlNWNjM2M1ZTE5YmQ4NDEzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2ZWxkYi9MZXZlbERCVHJhbnNhY3Rpb24uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJUcmFuc2FjdGlvbi5o
CkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiTGV2ZWxEQlNsaWNlLmgiCiAjaW5jbHVkZSA8
d3RmL0FWTFRyZWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTU5LDcgKzU4LDcgQEAg
cHVibGljOgogICAgIGJvb2wgY29tbWl0KCk7CiAgICAgdm9pZCByb2xsYmFjaygpOwogCi0gICAg
UGFzc093blB0cjxMZXZlbERCSXRlcmF0b3I+IGNyZWF0ZUl0ZXJhdG9yKCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPExldmVsREJJdGVyYXRvcj4gY3JlYXRlSXRlcmF0b3IoKTsKIAogcHJpdmF0ZToK
ICAgICBMZXZlbERCVHJhbnNhY3Rpb24oTGV2ZWxEQkRhdGFiYXNlKik7CkBAIC0xMDAsNyArOTks
NyBAQCBwcml2YXRlOgogCiAgICAgY2xhc3MgVHJlZUl0ZXJhdG9yIDogcHVibGljIExldmVsREJJ
dGVyYXRvciB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc093blB0cjxUcmVlSXRl
cmF0b3I+IGNyZWF0ZShMZXZlbERCVHJhbnNhY3Rpb24qKTsKKyAgICAgICAgVHJlZUl0ZXJhdG9y
KExldmVsREJUcmFuc2FjdGlvbiopOwogICAgICAgICB+VHJlZUl0ZXJhdG9yKCk7CiAKICAgICAg
ICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdDsKQEAgLTExNCw3ICsxMTMsNiBAQCBwcml2
YXRlOgogICAgICAgICB2b2lkIHJlc2V0KCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBUcmVl
SXRlcmF0b3IoTGV2ZWxEQlRyYW5zYWN0aW9uKik7CiAgICAgICAgIG11dGFibGUgVHJlZVR5cGU6
Okl0ZXJhdG9yIG1faXRlcmF0b3I7IC8vIERlcmVmZXJlbmNpbmcgdGhpcyBpcyBub24tY29uc3Qu
CiAgICAgICAgIFRyZWVUeXBlKiBtX3RyZWU7CiAgICAgICAgIExldmVsREJUcmFuc2FjdGlvbiog
bV90cmFuc2FjdGlvbjsKQEAgLTEyMyw4ICsxMjEsOCBAQCBwcml2YXRlOgogCiAgICAgY2xhc3Mg
VHJhbnNhY3Rpb25JdGVyYXRvciA6IHB1YmxpYyBMZXZlbERCSXRlcmF0b3IgewogICAgIHB1Ymxp
YzoKKyAgICAgICAgVHJhbnNhY3Rpb25JdGVyYXRvcihQYXNzUmVmUHRyPExldmVsREJUcmFuc2Fj
dGlvbj4pOwogICAgICAgICB+VHJhbnNhY3Rpb25JdGVyYXRvcigpOwotICAgICAgICBzdGF0aWMg
UGFzc093blB0cjxUcmFuc2FjdGlvbkl0ZXJhdG9yPiBjcmVhdGUoUGFzc1JlZlB0cjxMZXZlbERC
VHJhbnNhY3Rpb24+KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0Owog
ICAgICAgICB2aXJ0dWFsIHZvaWQgc2Vla1RvTGFzdCgpOwpAQCAtMTM2LDcgKzEzNCw2IEBAIHBy
aXZhdGU6CiAgICAgICAgIHZvaWQgdHJlZUNoYW5nZWQoKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFRyYW5zYWN0aW9uSXRlcmF0b3IoUGFzc1JlZlB0cjxMZXZlbERCVHJhbnNhY3Rpb24+KTsK
ICAgICAgICAgdm9pZCBoYW5kbGVDb25mbGljdHNBbmREZWxldGVzKCk7CiAgICAgICAgIHZvaWQg
c2V0Q3VycmVudEl0ZXJhdG9yVG9TbWFsbGVzdEtleSgpOwogICAgICAgICB2b2lkIHNldEN1cnJl
bnRJdGVyYXRvclRvTGFyZ2VzdEtleSgpOwpAQCAtMTQ2LDggKzE0Myw4IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgUmVmUHRyPExldmVsREJUcmFuc2FjdGlvbj4gbV90cmFuc2FjdGlvbjsKICAgICAg
ICAgY29uc3QgTGV2ZWxEQkNvbXBhcmF0b3IqIG1fY29tcGFyYXRvcjsKLSAgICAgICAgbXV0YWJs
ZSBPd25QdHI8VHJlZUl0ZXJhdG9yPiBtX3RyZWVJdGVyYXRvcjsKLSAgICAgICAgT3duUHRyPExl
dmVsREJJdGVyYXRvcj4gbV9kYkl0ZXJhdG9yOworICAgICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVl
X3B0cjxUcmVlSXRlcmF0b3I+IG1fdHJlZUl0ZXJhdG9yOworICAgICAgICBzdGQ6OnVuaXF1ZV9w
dHI8TGV2ZWxEQkl0ZXJhdG9yPiBtX2RiSXRlcmF0b3I7CiAgICAgICAgIExldmVsREJJdGVyYXRv
ciogbV9jdXJyZW50OwogCiAgICAgICAgIGVudW0gRGlyZWN0aW9uIHsKQEAgLTE3NCwxNyArMTcx
LDE0IEBAIHByaXZhdGU6CiAKIGNsYXNzIExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbiB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8TGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9u
PiBjcmVhdGUoTGV2ZWxEQkRhdGFiYXNlKik7Ci0KKyAgICBMZXZlbERCV3JpdGVPbmx5VHJhbnNh
Y3Rpb24oTGV2ZWxEQkRhdGFiYXNlKik7CiAgICAgfkxldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlv
bigpOwogICAgIHZvaWQgcmVtb3ZlKGNvbnN0IExldmVsREJTbGljZSYga2V5KTsKICAgICBib29s
IGNvbW1pdCgpOwogCiBwcml2YXRlOgotICAgIExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbihM
ZXZlbERCRGF0YWJhc2UqKTsKLQogICAgIExldmVsREJEYXRhYmFzZSogbV9kYjsKLSAgICBPd25Q
dHI8TGV2ZWxEQldyaXRlQmF0Y2g+IG1fd3JpdGVCYXRjaDsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
TGV2ZWxEQldyaXRlQmF0Y2g+IG1fd3JpdGVCYXRjaDsKICAgICBib29sIG1fZmluaXNoZWQ7CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZlbGRiL0xldmVsREJX
cml0ZUJhdGNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldy
aXRlQmF0Y2guY3BwCmluZGV4IGQyOGViNmNkYzAwOGFkOWU5OTc3Nzk3ZjM5MDA5YjY4MjhlMTk4
ZWUuLjRiOTkyNTUxMDRjOTU2ZWYwNzFiZTg5YTQwZTE0M2FiZDlhMzExNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guY3Bw
CkBAIC0zNCwxMyArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8
TGV2ZWxEQldyaXRlQmF0Y2g+IExldmVsREJXcml0ZUJhdGNoOjpjcmVhdGUoKQotewotICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgTGV2ZWxEQldyaXRlQmF0Y2gpOwotfQotCiBMZXZlbERCV3JpdGVC
YXRjaDo6TGV2ZWxEQldyaXRlQmF0Y2goKQotICAgIDogbV93cml0ZUJhdGNoKGFkb3B0UHRyKG5l
dyBsZXZlbGRiOjpXcml0ZUJhdGNoKSkKKyAgICA6IG1fd3JpdGVCYXRjaChzdGQ6Om1ha2VfdW5p
cXVlPGxldmVsZGI6OldyaXRlQmF0Y2g+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xldmVsZGIvTGV2ZWxEQldyaXRlQmF0Y2guaAppbmRleCA3MzU5YzRjNTVm
ZGJiYzY3OGYyYjc3NGY1MGE0MGM4MjBmNGEzMjliLi40ZTdiZWU4MTZkOGRkZTBmNjQ0ZGMyZDMy
OTgyOWVkYTM1ZjdlYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9sZXZl
bGRiL0xldmVsREJXcml0ZUJhdGNoLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGV2
ZWxkYi9MZXZlbERCV3JpdGVCYXRjaC5oCkBAIC0yOCw4ICsyOCw3IEBACiAKICNpZiBVU0UoTEVW
RUxEQikKIAotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgorI2luY2x1ZGUgPG1lbW9yeT4KIAogbmFtZXNwYWNlIGxldmVsZGIgewogY2xhc3MgV3Jp
dGVCYXRjaDsKQEAgLTQzLDcgKzQyLDcgQEAgY2xhc3MgTGV2ZWxEQlNsaWNlOwogLy8gVGhpcyBj
bGFzcyBob2xkcyBhIGNvbGxlY3Rpb24gb2YgdXBkYXRlcyB0byBhcHBseSBhdG9taWNhbGx5IHRv
IGEgZGF0YWJhc2UuCiBjbGFzcyBMZXZlbERCV3JpdGVCYXRjaCB7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8TGV2ZWxEQldyaXRlQmF0Y2g+IGNyZWF0ZSgpOworICAgIExldmVsREJX
cml0ZUJhdGNoKCk7CiAgICAgfkxldmVsREJXcml0ZUJhdGNoKCk7CiAKICAgICB2b2lkIHB1dChj
b25zdCBMZXZlbERCU2xpY2UmIGtleSwgY29uc3QgTGV2ZWxEQlNsaWNlJiB2YWx1ZSk7CkBAIC01
Miw5ICs1MSw4IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgTGV2ZWxE
QkRhdGFiYXNlOwotICAgIExldmVsREJXcml0ZUJhdGNoKCk7CiAKLSAgICBPd25QdHI8bGV2ZWxk
Yjo6V3JpdGVCYXRjaD4gbV93cml0ZUJhdGNoOworICAgIHN0ZDo6dW5pcXVlX3B0cjxsZXZlbGRi
OjpXcml0ZUJhdGNoPiBtX3dyaXRlQmF0Y2g7CiB9OwogCiB9Cg==
</data>
<flag name="review"
          id="248578"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>