<?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>131275</bug_id>
          
          <creation_ts>2014-04-05 21:19:45 -0700</creation_ts>
          <short_desc>Improve the access time of the NodeList and HTMLCollection caches</short_desc>
          <delta_ts>2014-08-19 22:32:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>997979</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-05 21:19:45 -0700</bug_when>
    <thetext>Improve the access time of the NodeList and HTMLCollection caches</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997980</commentid>
    <comment_count>1</comment_count>
      <attachid>228693</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-04-05 21:29:12 -0700</bug_when>
    <thetext>Created attachment 228693
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000449</commentid>
    <comment_count>2</comment_count>
      <attachid>228693</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-14 01:52:48 -0700</bug_when>
    <thetext>Comment on attachment 228693
Patch

This needs to build on Windows. It&apos;d also be nice with some justification for why we are taking the complexity hit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1000450</commentid>
    <comment_count>3</comment_count>
      <attachid>228693</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-14 01:52:48 -0700</bug_when>
    <thetext>Comment on attachment 228693
Patch

This needs to build on Windows. It&apos;d also be nice with some justification for why we are taking the complexity hit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228693</attachid>
            <date>2014-04-05 21:29:12 -0700</date>
            <delta_ts>2014-04-14 01:52:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131275-20140405212850.patch</filename>
            <type>text/plain</type>
            <size>36864</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2ODMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDhmNjRiMjQ1MzFkOGU1NDBkNDZiNTU0
YjFlNmM2NzJjMWJkNzI3NDMuLjAxOThkYjFiZGZjMWE2Zjk1YTIzNDA4YTAyYjgyMTk4YzRmNGZh
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTQtMDQtMDUgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIEltcHJvdmUgdGhlIGFjY2VzcyB0aW1lIG9m
IHRoZSBOb2RlTGlzdCBhbmQgSFRNTENvbGxlY3Rpb24gY2FjaGVzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzEyNzUKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmFsaXplIEhhc2hUYWJsZSdzIGFk
ZCgpIHRvIGhhbmRsZSBkaWZmZXJlbnQga2luZCBvZiB0cmFuc2xhdG9ycy4KKworICAgICAgICBB
ZGQgYSB2ZXJzaW9uIHdpdGggdHJhbnNsYXRvciBmb3IgSGFzaE1hcCdzIHJlbW92ZSgpIGFuZCBn
ZXQoKS4KKworICAgICAgICAqIHd0Zi9IYXNoTWFwLmg6CisgICAgICAgIChXVEY6Okhhc2hNYXBU
cmFuc2xhdG9yQWRhcHRlcjo6dHJhbnNsYXRlKToKKyAgICAgICAgKFdURjo6WD46OnJlbW92ZSk6
CisgICAgICAgICogd3RmL0hhc2hTZXQuaDoKKyAgICAgICAgKFdURjo6SGFzaFNldFRyYW5zbGF0
b3JBZGFwdGVyVHJhbnNsYXRlU3BlY2lhbGl6YXRpb246OnRyYW5zbGF0ZSk6CisgICAgICAgIChX
VEY6Okhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlcjo6dHJhbnNsYXRlKToKKyAgICAgICAgKiB3dGYv
SGFzaFRhYmxlLmg6CisgICAgICAgIChXVEY6Okhhc2hUcmFuc2xhdG9yVHJhbnNsYXRlU3BlY2lh
bGl6YXRpb246OnRyYW5zbGF0ZSk6CisgICAgICAgIChXVEY6OktleVRyYWl0cz46OmFsbG9jYXRl
VGFibGUpOgorICAgICAgICAoV1RGOjpLZXlUcmFpdHM+OjpjbGVhcik6CisgICAgICAgIChXVEY6
OktleVRyYWl0cz46OmludmFsaWRhdGVJdGVyYXRvcnMpOgorICAgICAgICAoV1RGOjpyZW1vdmVJ
dGVyYXRvcik6CisgICAgICAgIChXVEY6Okhhc2hUYWJsZTo6bWFrZUxvb2t1cFJlc3VsdCk6IERl
bGV0ZWQuCisgICAgICAgICogd3RmL0xpc3RIYXNoU2V0Lmg6CisgICAgICAgIChXVEY6Okxpc3RI
YXNoU2V0VHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXVEY6Okxpc3RIYXNoU2V0VHJhbnNs
YXRvcjo6ZXF1YWwpOgorICAgICAgICAoV1RGOjpMaXN0SGFzaFNldFRyYW5zbGF0b3I6OnRyYW5z
bGF0ZSk6CisKIDIwMTQtMDQtMDMgIFpzb2x0IEJvcmJlbHkgIDx6c2JvcmJlbHkudS1zemVnZWRA
cGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBFbmFibGUgQ1NTIEpJVCBhZ2Fp
biwgaXQgd29ya3MgZmluZSBhZnRlciByMTY2NjY2LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDI1NjEwMjMyZDk0
NGJiMDQwMzk3ZWEzZWQyMTFmY2NlYWRiZmEyZDAuLmFhZmEzMzA1ZTUzMmRiMjYzYzc5NmU0ZjFi
Y2Q1MDM3ZDE5MzcxYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NiBAQAorMjAxNC0wNC0wNSAg
QmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSW1wcm92
ZSB0aGUgYWNjZXNzIHRpbWUgb2YgdGhlIE5vZGVMaXN0IGFuZCBIVE1MQ29sbGVjdGlvbiBjYWNo
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTI3
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluc3Rl
YWQgb2YgdXNpbmcgYSBwYWlyIDxwb2ludGVyLCB1aW50OF90PiBhcyB0aGUga2V5IGZvciB0aGUg
Y2FjaGUsIHVzZSBhIHRhZ2dlZAorICAgICAgICBwb2ludGVyIHdoZW4gcG9zc2libGUgKEFSTTY0
IGFuZCB4ODZfNjQpLgorCisgICAgICAgICogZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlV2l0aEF0b21pY05hbWUpOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OmFkZENhY2hlZENvbGxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OmNhY2hlZENvbGxlY3Rpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OnJlbW92ZUNhY2hlV2l0aEF0b21p
Y05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OnJlbW92ZUNhY2hl
ZENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6Om5hbWVk
Q29sbGVjdGlvbktleSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6UGFz
c0F0b21pY1N0cmluZ0FuZFR5cGU6OlBhc3NBdG9taWNTdHJpbmdBbmRUeXBlKToKKyAgICAgICAg
KFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpQYXNzQXRvbWljU3RyaW5nQW5kVHlwZTo6aGFz
aCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6UGFzc0F0b21pY1N0cmlu
Z0FuZFR5cGU6OnRhZ2dlZFBvaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9k
ZURhdGE6OkF0b21pY1N0cmluZ0FuZFR5cGU6OkF0b21pY1N0cmluZ0FuZFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OkF0b21pY1N0cmluZ0FuZFR5cGU6On5BdG9t
aWNTdHJpbmdBbmRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpB
dG9taWNTdHJpbmdBbmRUeXBlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxp
c3RzTm9kZURhdGE6OkF0b21pY1N0cmluZ0FuZFR5cGU6Omhhc2gpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZUxpc3RzTm9kZURhdGE6OkF0b21pY1N0cmluZ0FuZFR5cGU6Om9wZXJhdG9yPT0pOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OkF0b21pY1N0cmluZ0FuZFR5cGU6
OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05v
ZGVEYXRhOjpBdG9taWNTdHJpbmdBbmRUeXBlOjpvcmlnaW5hbFBvaW50ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OkF0b21pY1N0cmluZ0FuZFR5cGVIYXNoOjpoYXNo
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVMaXN0c05vZGVEYXRhOjpBdG9taWNTdHJpbmdBbmRU
eXBlSGFzaDo6ZXF1YWwpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6OlBh
c3NBdG9taWNTdHJpbmdBbmRUeXBlVHJhbnNsYXRvcjo6aGFzaCk6CisgICAgICAgIChXZWJDb3Jl
OjpOb2RlTGlzdHNOb2RlRGF0YTo6UGFzc0F0b21pY1N0cmluZ0FuZFR5cGVUcmFuc2xhdG9yOjpl
cXVhbCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlTGlzdHNOb2RlRGF0YTo6UGFzc0F0b21pY1N0
cmluZ0FuZFR5cGVUcmFuc2xhdG9yOjp0cmFuc2xhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZUxpc3RzTm9kZURhdGE6OmF0b21pY1N0cmluZ0FuZFR5cGVLZXkpOgorICAgICAgICAoV2ViQ29y
ZTo6Tm9kZUxpc3RzTm9kZURhdGE6Ok5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2g6Omhhc2gpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6Ok5vZGVMaXN0Q2FjaGVNYXBFbnRy
eUhhc2g6OmVxdWFsKToKKworICAgICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlFOYW1lQ29tcG9uZW50c1RyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNhc2VGb2xkaW5nQ1N0cmluZ1RyYW5zbGF0b3I6OnRyYW5zbGF0ZSk6CisgICAgICAgIENs
ZWFuIHVwIHRoZSB0cmFuc2xhdGUoKSBmdW5jdGlvbiBvZiB0aGUgdHJhbnNsYXRvciBub3cgdGhh
dCB0aGUgaGFzaCBhcmd1bWVudAorICAgICAgICBpcyBubyBsb25nZXIgbWFuZGF0b3J5LgorCiAy
MDE0LTA0LTA1ICBKZW9uZ2V1biBLaW0gIDxqZV9qdWxpZS5raW1Ac2Ftc3VuZy5jb20+CiAKICAg
ICAgICAgYmFkIHZhbHVlcyBmcm9tIEhUTUxJbWFnZUVsZW1lbnQgeCBhbmQgeSBhdHRyaWJ1dGVz
IChDU1NPTS1WaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvSGFzaE1hcC5oIGIvU291
cmNlL1dURi93dGYvSGFzaE1hcC5oCmluZGV4IGJlMzAwMTQwMzBkM2Q2NGEzOTIyNTAyNmEwNWI4
MTk1MjZhMDdkYWEuLmJjMjdkYTcxMmZmNTA4ODkxZWM5ZTU0NTU0ZWMwZWNlNGFlYzQ0ZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hNYXAuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9I
YXNoTWFwLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgY29uc3RfaXRlcmF0b3Ig
ZmluZChjb25zdCBLZXlUeXBlJikgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhjb25zdCBLZXlU
eXBlJikgY29uc3Q7CiAgICAgTWFwcGVkUGVla1R5cGUgZ2V0KGNvbnN0IEtleVR5cGUmKSBjb25z
dDsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVD4gTWFw
cGVkUGVla1R5cGUgZ2V0KGNvbnN0IFQmKSBjb25zdDsKIAogICAgIC8vIFJlcGxhY2VzIHRoZSB2
YWx1ZSBidXQgbm90IHRoZSBrZXkgaWYgdGhlIGtleSBpcyBhbHJlYWR5IHByZXNlbnQuCiAgICAg
Ly8gUmV0dXJuIHZhbHVlIGluY2x1ZGVzIGJvdGggYW4gaXRlcmF0b3IgdG8gdGhlIGtleSBsb2Nh
dGlvbiwKQEAgLTExNSw2ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
Vj4gQWRkUmVzdWx0IGFkZChLZXlUeXBlJiYsIFYmJik7CiAKICAgICBib29sIHJlbW92ZShjb25z
dCBLZXlUeXBlJik7CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVu
YW1lIFQ+IGJvb2wgcmVtb3ZlKGNvbnN0IFQmKTsKICAgICBib29sIHJlbW92ZShpdGVyYXRvcik7
CiAgICAgdm9pZCBjbGVhcigpOwogCkBAIC0xNjYsOSArMTY4LDkgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVmFsdWVUcmFpdHMsIHR5cGVuYW1lIFRyYW5zbGF0b3I+CiBzdHJ1Y3QgSGFzaE1hcFRyYW5z
bGF0b3JBZGFwdGVyIHsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgdW5zaWduZWQg
aGFzaChjb25zdCBUJiBrZXkpIHsgcmV0dXJuIFRyYW5zbGF0b3I6Omhhc2goa2V5KTsgfQogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0
IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIFRyYW5zbGF0b3I6OmVxdWFsKGEsIGIpOyB9Ci0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZv
aWQgdHJhbnNsYXRlKFQmIGxvY2F0aW9uLCBVJiYga2V5LCBWJiYgbWFwcGVkLCB1bnNpZ25lZCBo
YXNoQ29kZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBW
PiBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoVCYgbG9jYXRpb24sIFUmJiBrZXksIFYmJiBtYXBwZWQs
IHVuc2lnbmVkKQogICAgIHsKLSAgICAgICAgVHJhbnNsYXRvcjo6dHJhbnNsYXRlKGxvY2F0aW9u
LmtleSwga2V5LCBoYXNoQ29kZSk7CisgICAgICAgIFRyYW5zbGF0b3I6OnRyYW5zbGF0ZShsb2Nh
dGlvbi5rZXksIGtleSk7CiAgICAgICAgIGxvY2F0aW9uLnZhbHVlID0gc3RkOjpmb3J3YXJkPFY+
KG1hcHBlZCk7CiAgICAgfQogfTsKQEAgLTI5OSw3ICszMDEsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBLZXlBcmcsIHR5cGVuYW1lIE1hcHBlZEFyZywgdHlwZW5hbWUgSGFzaEFyZywgdHlwZW5hbWUg
S2V5VHJhaQogdGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIEssIHR5
cGVuYW1lIFY+CiBhdXRvIEhhc2hNYXA8S2V5QXJnLCBNYXBwZWRBcmcsIEhhc2hBcmcsIEtleVRy
YWl0c0FyZywgTWFwcGVkVHJhaXRzQXJnPjo6YWRkKEsmJiBrZXksIFYmJiB2YWx1ZSkgLT4gQWRk
UmVzdWx0CiB7Ci0gICAgcmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGRQYXNzaW5nSGFzaENvZGU8
SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0
b3I+PihzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3RkOjpmb3J3YXJkPFY+KHZhbHVlKSk7CisgICAg
cmV0dXJuIG1faW1wbC50ZW1wbGF0ZSBhZGQ8SGFzaE1hcFRyYW5zbGF0b3JBZGFwdGVyPEtleVZh
bHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0b3I+PihzdGQ6OmZvcndhcmQ8Sz4oa2V5KSwgc3Rk
Ojpmb3J3YXJkPFY+KHZhbHVlKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEtleUFyZywgdHlw
ZW5hbWUgTWFwcGVkQXJnLCB0eXBlbmFtZSBIYXNoQXJnLCB0eXBlbmFtZSBLZXlUcmFpdHNBcmcs
IHR5cGVuYW1lIE1hcHBlZFRyYWl0c0FyZz4KQEAgLTMyNSw2ICszMjcsMTYgQEAgYXV0byBIYXNo
TWFwPFQsIFUsIFYsIFcsIE1hcHBlZFRyYWl0cz46OmdldChjb25zdCBLZXlUeXBlJiBrZXkpIGNv
bnN0IC0+IE1hcHBlZFAKICAgICByZXR1cm4gTWFwcGVkVHJhaXRzOjpwZWVrKGVudHJ5LT52YWx1
ZSk7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFUsIHR5cGVuYW1lIFYsIHR5
cGVuYW1lIFcsIHR5cGVuYW1lIE1hcHBlZFRyYWl0cz4KK3RlbXBsYXRlPHR5cGVuYW1lIEhhc2hU
cmFuc2xhdG9yLCB0eXBlbmFtZSBPdGhlcktleVR5cGU+CithdXRvIEhhc2hNYXA8VCwgVSwgViwg
VywgTWFwcGVkVHJhaXRzPjo6Z2V0KGNvbnN0IE90aGVyS2V5VHlwZSYga2V5KSBjb25zdCAtPiBN
YXBwZWRQZWVrVHlwZQoreworICAgIEtleVZhbHVlUGFpclR5cGUqIGVudHJ5ID0gY29uc3RfY2Fz
dDxIYXNoVGFibGVUeXBlJj4obV9pbXBsKS50ZW1wbGF0ZSBsb29rdXA8SGFzaE1hcFRyYW5zbGF0
b3JBZGFwdGVyPEtleVZhbHVlUGFpclRyYWl0cywgSGFzaFRyYW5zbGF0b3I+PihrZXkpOworICAg
IGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoTWFwcGVkVHJh
aXRzOjplbXB0eVZhbHVlKCkpOworICAgIHJldHVybiBNYXBwZWRUcmFpdHM6OnBlZWsoZW50cnkt
PnZhbHVlKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVSwgdHlwZW5hbWUg
ViwgdHlwZW5hbWUgVywgdHlwZW5hbWUgWD4KIGlubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwg
VywgWD46OnJlbW92ZShpdGVyYXRvciBpdCkKIHsKQEAgLTMzNiw2ICszNDgsMTMgQEAgaW5saW5l
IGJvb2wgSGFzaE1hcDxULCBVLCBWLCBXLCBYPjo6cmVtb3ZlKGl0ZXJhdG9yIGl0KQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0
eXBlbmFtZSBYPgordGVtcGxhdGU8dHlwZW5hbWUgSGFzaFRyYW5zbGF0b3IsIHR5cGVuYW1lIE90
aGVyS2V5VHlwZT4KK2lubGluZSBib29sIEhhc2hNYXA8VCwgVSwgViwgVywgWD46OnJlbW92ZShj
b25zdCBPdGhlcktleVR5cGUmIGtleSkKK3sKKyAgICByZXR1cm4gcmVtb3ZlKGZpbmQ8SGFzaFRy
YW5zbGF0b3I+KGtleSkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWLCB0eXBlbmFtZSBXLCB0eXBlbmFtZSBYPgogaW5saW5lIGJvb2wgSGFzaE1hcDxU
LCBVLCBWLCBXLCBYPjo6cmVtb3ZlKGNvbnN0IEtleVR5cGUmIGtleSkKIHsKICAgICByZXR1cm4g
cmVtb3ZlKGZpbmQoa2V5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9IYXNoU2V0LmgKaW5kZXggNDZjM2ZlNWQxODg0MzBjZDM2YmUwNjZm
ZDFmYmU5YmFiZjgyYzlkNC4uYjdiMGEyZmNmMmJjYWUwMGU1ODkzNzdjOTllMzAxOGNjNDM0MzYz
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvSGFzaFNldC5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL0hhc2hTZXQuaApAQCAtMTE2LDEzICsxMTYsMjYgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBjb25zdCBUJiBleHRyYWN0KGNvbnN0IFQm
IHQpIHsgcmV0dXJuIHQ7IH0KICAgICB9OwogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgRW50cnlU
eXBlLCB0eXBlbmFtZSBLZXlUeXBlPgorICAgIHN0cnVjdCBIYXNoU2V0VHJhbnNsYXRvckFkYXB0
ZXJUcmFuc2xhdGVTcGVjaWFsaXphdGlvbiB7CisgICAgICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0
ZSh2b2lkICgqZnVuY3Rpb24pKEVudHJ5VHlwZSYsIGNvbnN0IEtleVR5cGUmLCB1bnNpZ25lZCks
IEVudHJ5VHlwZSYgZW50cnksIGNvbnN0IEtleVR5cGUmIGtleSwgdW5zaWduZWQgaGFzaCkKKyAg
ICAgICAgeworICAgICAgICAgICAgZnVuY3Rpb24oZW50cnksIGtleSwgaGFzaCk7CisgICAgICAg
IH0KKworICAgICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUodm9pZCAoKmZ1bmN0aW9uKShFbnRy
eVR5cGUmLCBjb25zdCBLZXlUeXBlJiksIEVudHJ5VHlwZSYgZW50cnksIGNvbnN0IEtleVR5cGUm
IGtleSwgdW5zaWduZWQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uKGVudHJ5LCBr
ZXkpOworICAgICAgICB9CisgICAgfTsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRyYW5zbGF0
b3I+CiAgICAgc3RydWN0IEhhc2hTZXRUcmFuc2xhdG9yQWRhcHRlciB7CiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFQmIGtleSkgeyByZXR1
cm4gVHJhbnNsYXRvcjo6aGFzaChrZXkpOyB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIFU+IHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsg
cmV0dXJuIFRyYW5zbGF0b3I6OmVxdWFsKGEsIGIpOyB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShUJiBsb2NhdGlvbiwgY29u
c3QgVSYga2V5LCBjb25zdCBVJiwgdW5zaWduZWQgaGFzaENvZGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIFRyYW5zbGF0b3I6OnRyYW5zbGF0ZShsb2NhdGlvbiwga2V5LCBoYXNoQ29kZSk7Cisg
ICAgICAgICAgICBIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXJUcmFuc2xhdGVTcGVjaWFsaXphdGlv
bjxULCBVPjo6dHJhbnNsYXRlKFRyYW5zbGF0b3I6OnRyYW5zbGF0ZSwgbG9jYXRpb24sIGtleSwg
aGFzaENvZGUpOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtMjA0LDcgKzIxNyw3IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFt
ZSBUPgogICAgIGlubGluZSBhdXRvIEhhc2hTZXQ8VmFsdWUsIEhhc2hGdW5jdGlvbnMsIFRyYWl0
cz46OmFkZChjb25zdCBUJiB2YWx1ZSkgLT4gQWRkUmVzdWx0CiAgICAgewotICAgICAgICByZXR1
cm4gbV9pbXBsLnRlbXBsYXRlIGFkZFBhc3NpbmdIYXNoQ29kZTxIYXNoU2V0VHJhbnNsYXRvckFk
YXB0ZXI8SGFzaFRyYW5zbGF0b3I+Pih2YWx1ZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gbV9p
bXBsLnRlbXBsYXRlIGFkZDxIYXNoU2V0VHJhbnNsYXRvckFkYXB0ZXI8SGFzaFRyYW5zbGF0b3I+
Pih2YWx1ZSwgdmFsdWUpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVu
YW1lIFUsIHR5cGVuYW1lIFY+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9IYXNoVGFibGUu
aCBiL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCmluZGV4IDVhMTdlMGVkODFmMGYzM2Q3YTlm
NWFiZjRhMDk1MmFlZjZlMThhZjYuLjEyZWZkZWQyYWY5NzYzMTEzNTNmNTAxOTE2YjNmNmQxODNj
YTEyMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0hhc2hUYWJsZS5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL0hhc2hUYWJsZS5oCkBAIC0xMDAsNiArMTAwLDE5IEBAIG5hbWVzcGFjZSBXVEYg
ewogCiAgICAgdHlwZWRlZiBlbnVtIHsgSGFzaEl0ZW1Lbm93bkdvb2QgfSBIYXNoSXRlbUtub3du
R29vZFRhZzsKIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVudHJ5VHlwZSwgdHlwZW5hbWUgS2V5
VHlwZSwgdHlwZW5hbWUgRXh0cmFUeXBlPgorICAgIHN0cnVjdCBIYXNoVHJhbnNsYXRvclRyYW5z
bGF0ZVNwZWNpYWxpemF0aW9uIHsKKyAgICAgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKHZvaWQg
KCpmdW5jdGlvbikoRW50cnlUeXBlJiwgS2V5VHlwZSYmLCBFeHRyYVR5cGUmJiwgdW5zaWduZWQp
LCBFbnRyeVR5cGUmIGVudHJ5LCBLZXlUeXBlJiYga2V5LCBFeHRyYVR5cGUmJiBleHRyYSwgdW5z
aWduZWQgaGFzaCkKKyAgICAgICAgeworICAgICAgICAgICAgZnVuY3Rpb24oZW50cnksIHN0ZDo6
Zm9yd2FyZDxLZXlUeXBlPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmFUeXBlPihleHRyYSksIGhh
c2gpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIHZvaWQgdHJhbnNsYXRlKHZvaWQgKCpm
dW5jdGlvbikoRW50cnlUeXBlJiwgS2V5VHlwZSYmLCBFeHRyYVR5cGUmJiksIEVudHJ5VHlwZSYg
ZW50cnksIEtleVR5cGUmJiBrZXksIEV4dHJhVHlwZSYmIGV4dHJhLCB1bnNpZ25lZCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZnVuY3Rpb24oZW50cnksIHN0ZDo6Zm9yd2FyZDxLZXlUeXBlPihr
ZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmFUeXBlPihleHRyYSkpOworICAgICAgICB9CisgICAgfTsK
KwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4
dHJhY3RvciwgdHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFt
ZSBLZXlUcmFpdHM+CiAgICAgY2xhc3MgSGFzaFRhYmxlQ29uc3RJdGVyYXRvciB7CiAgICAgcHJp
dmF0ZToKQEAgLTM3OSw3ICszOTIsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgLy8gd2l0
aCBzb21lIG90aGVyIHR5cGUsIHRvIGF2b2lkIHRoZSBjb3N0IG9mIHR5cGUgY29udmVyc2lvbiBp
ZiB0aGUgb2JqZWN0IGlzIGFscmVhZHkKICAgICAgICAgLy8gaW4gdGhlIHRhYmxlLgogICAgICAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUg
RXh0cmE+IEFkZFJlc3VsdCBhZGQoVCYmIGtleSwgRXh0cmEmJik7Ci0gICAgICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4gQWRk
UmVzdWx0IGFkZFBhc3NpbmdIYXNoQ29kZShUJiYga2V5LCBFeHRyYSYmKTsKIAogICAgICAgICBp
dGVyYXRvciBmaW5kKGNvbnN0IEtleVR5cGUmIGtleSkgeyByZXR1cm4gZmluZDxJZGVudGl0eVRy
YW5zbGF0b3JUeXBlPihrZXkpOyB9CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIGZpbmQoY29uc3Qg
S2V5VHlwZSYga2V5KSBjb25zdCB7IHJldHVybiBmaW5kPElkZW50aXR5VHJhbnNsYXRvclR5cGU+
KGtleSk7IH0KQEAgLTQxNiwxNCArNDI4LDEyIEBAIG5hbWVzcGFjZSBXVEYgewogI2VuZGlmCiAK
ICAgICBwcml2YXRlOgotICAgICAgICBzdGF0aWMgVmFsdWVUeXBlKiBhbGxvY2F0ZVRhYmxlKGlu
dCBzaXplKTsKKyAgICAgICAgdm9pZCBhbGxvY2F0ZVRhYmxlKGludCBzaXplKTsKICAgICAgICAg
c3RhdGljIHZvaWQgZGVhbGxvY2F0ZVRhYmxlKFZhbHVlVHlwZSogdGFibGUsIGludCBzaXplKTsK
IAogICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxWYWx1ZVR5cGUqLCBib29sPiBMb29rdXBUeXBl
OwotICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxMb29rdXBUeXBlLCB1bnNpZ25lZD4gRnVsbExv
b2t1cFR5cGU7CiAKICAgICAgICAgTG9va3VwVHlwZSBsb29rdXBGb3JXcml0aW5nKGNvbnN0IEtl
eSYga2V5KSB7IHJldHVybiBsb29rdXBGb3JXcml0aW5nPElkZW50aXR5VHJhbnNsYXRvclR5cGU+
KGtleSk7IH07Ci0gICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBl
bmFtZSBUPiBGdWxsTG9va3VwVHlwZSBmdWxsTG9va3VwRm9yV3JpdGluZyhjb25zdCBUJik7CiAg
ICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiBMb29r
dXBUeXBlIGxvb2t1cEZvcldyaXRpbmcoY29uc3QgVCYpOwogCiAgICAgICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBUPiB2b2lkIGNoZWNrS2V5KGNvbnN0IFQm
KTsKQEAgLTQ0NCw5ICs0NTQsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgc3RhdGljIHZv
aWQgaW5pdGlhbGl6ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCk7CiAgICAgICAgIHN0YXRpYyB2
b2lkIGRlbGV0ZUJ1Y2tldChWYWx1ZVR5cGUmIGJ1Y2tldCkgeyBidWNrZXQuflZhbHVlVHlwZSgp
OyBUcmFpdHM6OmNvbnN0cnVjdERlbGV0ZWRWYWx1ZShidWNrZXQpOyB9CiAKLSAgICAgICAgRnVs
bExvb2t1cFR5cGUgbWFrZUxvb2t1cFJlc3VsdChWYWx1ZVR5cGUqIHBvc2l0aW9uLCBib29sIGZv
dW5kLCB1bnNpZ25lZCBoYXNoKQotICAgICAgICAgICAgeyByZXR1cm4gRnVsbExvb2t1cFR5cGUo
TG9va3VwVHlwZShwb3NpdGlvbiwgZm91bmQpLCBoYXNoKTsgfQotCiAgICAgICAgIGl0ZXJhdG9y
IG1ha2VJdGVyYXRvcihWYWx1ZVR5cGUqIHBvcykgeyByZXR1cm4gaXRlcmF0b3IodGhpcywgcG9z
LCBtX3RhYmxlICsgbV90YWJsZVNpemUpOyB9CiAgICAgICAgIGNvbnN0X2l0ZXJhdG9yIG1ha2VD
b25zdEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSBjb25zdCB7IHJldHVybiBjb25zdF9pdGVyYXRv
cih0aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSk7IH0KICAgICAgICAgaXRlcmF0b3Ig
bWFrZUtub3duR29vZEl0ZXJhdG9yKFZhbHVlVHlwZSogcG9zKSB7IHJldHVybiBpdGVyYXRvcih0
aGlzLCBwb3MsIG1fdGFibGUgKyBtX3RhYmxlU2l6ZSwgSGFzaEl0ZW1Lbm93bkdvb2QpOyB9CkBA
IC02OTUsNjcgKzcwMiw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICB9CiAgICAgfQogCi0g
ICAgdGVtcGxhdGU8dHlwZW5hbWUgS2V5LCB0eXBlbmFtZSBWYWx1ZSwgdHlwZW5hbWUgRXh0cmFj
dG9yLCB0eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBUcmFpdHMsIHR5cGVuYW1lIEtl
eVRyYWl0cz4KLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBIYXNoVHJhbnNsYXRvciwgdHlwZW5hbWUg
VD4KLSAgICBpbmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNo
RnVuY3Rpb25zLCBUcmFpdHMsIEtleVRyYWl0cz46OmZ1bGxMb29rdXBGb3JXcml0aW5nKGNvbnN0
IFQmIGtleSkgLT4gRnVsbExvb2t1cFR5cGUKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3RhYmxl
KTsKLSAgICAgICAgY2hlY2tLZXk8SGFzaFRyYW5zbGF0b3I+KGtleSk7Ci0KLSAgICAgICAgaW50
IGsgPSAwOwotICAgICAgICBWYWx1ZVR5cGUqIHRhYmxlID0gbV90YWJsZTsKLSAgICAgICAgaW50
IHNpemVNYXNrID0gbV90YWJsZVNpemVNYXNrOwotICAgICAgICB1bnNpZ25lZCBoID0gSGFzaFRy
YW5zbGF0b3I6Omhhc2goa2V5KTsKLSAgICAgICAgaW50IGkgPSBoICYgc2l6ZU1hc2s7Ci0KLSNp
ZiBEVU1QX0hBU0hUQUJMRV9TVEFUUwotICAgICAgICArK0hhc2hUYWJsZVN0YXRzOjpudW1BY2Nl
c3NlczsKLSAgICAgICAgdW5zaWduZWQgcHJvYmVDb3VudCA9IDA7Ci0jZW5kaWYKLQotI2lmIERV
TVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQotICAgICAgICArK21fc3RhdHMtPm51bUFjY2Vz
c2VzOwotI2VuZGlmCi0KLSAgICAgICAgVmFsdWVUeXBlKiBkZWxldGVkRW50cnkgPSAwOwotCi0g
ICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBWYWx1ZVR5cGUqIGVudHJ5ID0gdGFibGUg
KyBpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyB3ZSBjb3VudCBvbiB0aGUgY29tcGls
ZXIgdG8gb3B0aW1pemUgb3V0IHRoaXMgYnJhbmNoCi0gICAgICAgICAgICBpZiAoSGFzaEZ1bmN0
aW9uczo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWFr
ZUxvb2t1cFJlc3VsdChkZWxldGVkRW50cnkgPyBkZWxldGVkRW50cnkgOiBlbnRyeSwgZmFsc2Us
IGgpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChIYXNoVHJhbnNsYXRv
cjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlTG9va3VwUmVzdWx0KGVudHJ5LCB0cnVlLCBoKTsKLSAgICAgICAg
ICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoaXNEZWxldGVkQnVja2V0KCplbnRyeSkpCi0g
ICAgICAgICAgICAgICAgICAgIGRlbGV0ZWRFbnRyeSA9IGVudHJ5OwotICAgICAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eUJ1Y2tldCgqZW50cnkpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gbWFrZUxvb2t1cFJlc3VsdChkZWxldGVkRW50cnkgPyBkZWxl
dGVkRW50cnkgOiBlbnRyeSwgZmFsc2UsIGgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAg
ICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkpKQotICAgICAgICAgICAgICAgICAgICBkZWxl
dGVkRW50cnkgPSBlbnRyeTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChIYXNoVHJhbnNsYXRv
cjo6ZXF1YWwoRXh0cmFjdG9yOjpleHRyYWN0KCplbnRyeSksIGtleSkpCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiBtYWtlTG9va3VwUmVzdWx0KGVudHJ5LCB0cnVlLCBoKTsKLSAgICAgICAg
ICAgIH0KLSNpZiBEVU1QX0hBU0hUQUJMRV9TVEFUUwotICAgICAgICAgICAgKytwcm9iZUNvdW50
OwotICAgICAgICAgICAgSGFzaFRhYmxlU3RhdHM6OnJlY29yZENvbGxpc2lvbkF0Q291bnQocHJv
YmVDb3VudCk7Ci0jZW5kaWYKLQotI2lmIERVTVBfSEFTSFRBQkxFX1NUQVRTX1BFUl9UQUJMRQot
ICAgICAgICAgICAgbV9zdGF0cy0+cmVjb3JkQ29sbGlzaW9uQXRDb3VudChwcm9iZUNvdW50KTsK
LSNlbmRpZgotCi0gICAgICAgICAgICBpZiAoayA9PSAwKQotICAgICAgICAgICAgICAgIGsgPSAx
IHwgZG91YmxlSGFzaChoKTsKLSAgICAgICAgICAgIGkgPSAoaSArIGspICYgc2l6ZU1hc2s7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KICAgICB0ZW1wbGF0ZTxib29sIGVtcHR5VmFsdWVJc1plcm8+IHN0
cnVjdCBIYXNoVGFibGVCdWNrZXRJbml0aWFsaXplcjsKIAogICAgIHRlbXBsYXRlPD4gc3RydWN0
IEhhc2hUYWJsZUJ1Y2tldEluaXRpYWxpemVyPGZhbHNlPiB7CkBAIC03OTAsNyArNzM2LDcgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKIAogICAgICAg
ICBpZiAoIW1fdGFibGUpCi0gICAgICAgICAgICBleHBhbmQobnVsbHB0cik7CisgICAgICAgICAg
ICBhbGxvY2F0ZVRhYmxlKEtleVRyYWl0czo6bWluaW11bVRhYmxlU2l6ZSk7CiAKICAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKIApAQCAtODU1LDcgKzgwMSw3IEBAIG5h
bWVzcGFjZSBXVEYgewogICAgICAgICAgICAgLS1tX2RlbGV0ZWRDb3VudDsgCiAgICAgICAgIH0K
IAotICAgICAgICBIYXNoVHJhbnNsYXRvcjo6dHJhbnNsYXRlKCplbnRyeSwgc3RkOjpmb3J3YXJk
PFQ+KGtleSksIHN0ZDo6Zm9yd2FyZDxFeHRyYT4oZXh0cmEpKTsKKyAgICAgICAgSGFzaFRyYW5z
bGF0b3JUcmFuc2xhdGVTcGVjaWFsaXphdGlvbjxWYWx1ZVR5cGUsIFQsIEV4dHJhPjo6dHJhbnNs
YXRlKEhhc2hUcmFuc2xhdG9yOjp0cmFuc2xhdGUsICplbnRyeSwgc3RkOjpmb3J3YXJkPFQ+KGtl
eSksIHN0ZDo6Zm9yd2FyZDxFeHRyYT4oZXh0cmEpLCBoKTsKICAgICAgICAgKyttX2tleUNvdW50
OwogICAgICAgICAKICAgICAgICAgaWYgKHNob3VsZEV4cGFuZCgpKQpAQCAtODY3LDQ0ICs4MTMs
NiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXks
IHR5cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlv
bnMsIHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgotICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hUcmFuc2xhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBFeHRyYT4KLSAgICBp
bmxpbmUgYXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25z
LCBUcmFpdHMsIEtleVRyYWl0cz46OmFkZFBhc3NpbmdIYXNoQ29kZShUJiYga2V5LCBFeHRyYSYm
IGV4dHJhKSAtPiBBZGRSZXN1bHQKLSAgICB7Ci0gICAgICAgIGNoZWNrS2V5PEhhc2hUcmFuc2xh
dG9yPihrZXkpOwotCi0gICAgICAgIGludmFsaWRhdGVJdGVyYXRvcnMoKTsKLQotICAgICAgICBp
ZiAoIW1fdGFibGUpCi0gICAgICAgICAgICBleHBhbmQoKTsKLQotICAgICAgICBpbnRlcm5hbENo
ZWNrVGFibGVDb25zaXN0ZW5jeSgpOwotCi0gICAgICAgIEZ1bGxMb29rdXBUeXBlIGxvb2t1cFJl
c3VsdCA9IGZ1bGxMb29rdXBGb3JXcml0aW5nPEhhc2hUcmFuc2xhdG9yPihrZXkpOwotCi0gICAg
ICAgIFZhbHVlVHlwZSogZW50cnkgPSBsb29rdXBSZXN1bHQuZmlyc3QuZmlyc3Q7Ci0gICAgICAg
IGJvb2wgZm91bmQgPSBsb29rdXBSZXN1bHQuZmlyc3Quc2Vjb25kOwotICAgICAgICB1bnNpZ25l
ZCBoID0gbG9va3VwUmVzdWx0LnNlY29uZDsKLSAgICAgICAgCi0gICAgICAgIGlmIChmb3VuZCkK
LSAgICAgICAgICAgIHJldHVybiBBZGRSZXN1bHQobWFrZUtub3duR29vZEl0ZXJhdG9yKGVudHJ5
KSwgZmFsc2UpOwotICAgICAgICAKLSAgICAgICAgaWYgKGlzRGVsZXRlZEJ1Y2tldCgqZW50cnkp
KSB7Ci0gICAgICAgICAgICBpbml0aWFsaXplQnVja2V0KCplbnRyeSk7Ci0gICAgICAgICAgICAt
LW1fZGVsZXRlZENvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgSGFzaFRyYW5zbGF0b3I6OnRy
YW5zbGF0ZSgqZW50cnksIHN0ZDo6Zm9yd2FyZDxUPihrZXkpLCBzdGQ6OmZvcndhcmQ8RXh0cmE+
KGV4dHJhKSwgaCk7Ci0gICAgICAgICsrbV9rZXlDb3VudDsKLQotICAgICAgICBpZiAoc2hvdWxk
RXhwYW5kKCkpCi0gICAgICAgICAgICBlbnRyeSA9IGV4cGFuZChlbnRyeSk7Ci0KLSAgICAgICAg
aW50ZXJuYWxDaGVja1RhYmxlQ29uc2lzdGVuY3koKTsKLQotICAgICAgICByZXR1cm4gQWRkUmVz
dWx0KG1ha2VLbm93bkdvb2RJdGVyYXRvcihlbnRyeSksIHRydWUpOwotICAgIH0KLQotICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3Rvciwg
dHlwZW5hbWUgSGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFp
dHM+CiAgICAgaW5saW5lIGF1dG8gSGFzaFRhYmxlPEtleSwgVmFsdWUsIEV4dHJhY3RvciwgSGFz
aEZ1bmN0aW9ucywgVHJhaXRzLCBLZXlUcmFpdHM+OjpyZWluc2VydChWYWx1ZVR5cGUmJiBlbnRy
eSkgLT4gVmFsdWVUeXBlKgogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdGFibGUpOwpAQCAtMTAz
MSwxNiArOTM5LDE5IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEtleSwgdHlwZW5hbWUgVmFsdWUsIHR5cGVuYW1lIEV4dHJhY3RvciwgdHlwZW5hbWUg
SGFzaEZ1bmN0aW9ucywgdHlwZW5hbWUgVHJhaXRzLCB0eXBlbmFtZSBLZXlUcmFpdHM+Ci0gICAg
YXV0byBIYXNoVGFibGU8S2V5LCBWYWx1ZSwgRXh0cmFjdG9yLCBIYXNoRnVuY3Rpb25zLCBUcmFp
dHMsIEtleVRyYWl0cz46OmFsbG9jYXRlVGFibGUoaW50IHNpemUpIC0+IFZhbHVlVHlwZSoKKyAg
ICB2b2lkIEhhc2hUYWJsZTxLZXksIFZhbHVlLCBFeHRyYWN0b3IsIEhhc2hGdW5jdGlvbnMsIFRy
YWl0cywgS2V5VHJhaXRzPjo6YWxsb2NhdGVUYWJsZShpbnQgc2l6ZSkKICAgICB7CiAgICAgICAg
IC8vIHdvdWxkIHVzZSBhIHRlbXBsYXRlIG1lbWJlciBmdW5jdGlvbiB3aXRoIGV4cGxpY2l0IHNw
ZWNpYWxpemF0aW9ucyBoZXJlLCBidXQKICAgICAgICAgLy8gZ2NjIGRvZXNuJ3QgYXBwZWFyIHRv
IHN1cHBvcnQgdGhhdAogICAgICAgICBpZiAoVHJhaXRzOjplbXB0eVZhbHVlSXNaZXJvKQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFZhbHVlVHlwZSo+KGZhc3RaZXJvZWRNYWxsb2Mo
c2l6ZSAqIHNpemVvZihWYWx1ZVR5cGUpKSk7Ci0gICAgICAgIFZhbHVlVHlwZSogcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8VmFsdWVUeXBlKj4oZmFzdE1hbGxvYyhzaXplICogc2l6ZW9mKFZhbHVlVHlw
ZSkpKTsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgICAgICAg
ICBpbml0aWFsaXplQnVja2V0KHJlc3VsdFtpXSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgICAgICAgICBtX3RhYmxlID0gc3RhdGljX2Nhc3Q8VmFsdWVUeXBlKj4oZmFzdFplcm9lZE1h
bGxvYyhzaXplICogc2l6ZW9mKFZhbHVlVHlwZSkpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICBtX3RhYmxlID0gc3RhdGljX2Nhc3Q8VmFsdWVUeXBlKj4oZmFzdE1hbGxvYyhzaXplICog
c2l6ZW9mKFZhbHVlVHlwZSkpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6
ZTsgaSsrKQorICAgICAgICAgICAgICAgIGluaXRpYWxpemVCdWNrZXQobV90YWJsZVtpXSk7Cisg
ICAgICAgIH0KKyAgICAgICAgbV90YWJsZVNpemUgPSBzaXplOworICAgICAgICBtX3RhYmxlU2l6
ZU1hc2sgPSBzaXplIC0gMTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBLZXksIHR5
cGVuYW1lIFZhbHVlLCB0eXBlbmFtZSBFeHRyYWN0b3IsIHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMs
IHR5cGVuYW1lIFRyYWl0cywgdHlwZW5hbWUgS2V5VHJhaXRzPgpAQCAtMTA4NSw5ICs5OTYsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgICsrbV9zdGF0cy0+bnVtUmVoYXNoZXM7CiAj
ZW5kaWYKIAotICAgICAgICBtX3RhYmxlU2l6ZSA9IG5ld1RhYmxlU2l6ZTsKLSAgICAgICAgbV90
YWJsZVNpemVNYXNrID0gbmV3VGFibGVTaXplIC0gMTsKLSAgICAgICAgbV90YWJsZSA9IGFsbG9j
YXRlVGFibGUobmV3VGFibGVTaXplKTsKKyAgICAgICAgYWxsb2NhdGVUYWJsZShuZXdUYWJsZVNp
emUpOwogCiAgICAgICAgIFZhbHVlKiBuZXdFbnRyeSA9IG51bGxwdHI7CiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpICE9IG9sZFRhYmxlU2l6ZTsgKytpKSB7CkBAIC0xMTE5LDcgKzEwMjgsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBkZWFsbG9j
YXRlVGFibGUobV90YWJsZSwgbV90YWJsZVNpemUpOwotICAgICAgICBtX3RhYmxlID0gMDsKKyAg
ICAgICAgbV90YWJsZSA9IG51bGxwdHI7CiAgICAgICAgIG1fdGFibGVTaXplID0gMDsKICAgICAg
ICAgbV90YWJsZVNpemVNYXNrID0gMDsKICAgICAgICAgbV9rZXlDb3VudCA9IDA7CkBAIC0xMjI5
LDcgKzExMzgsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgY29uc3RfaXRlcmF0b3IqIG5l
eHQ7CiAgICAgICAgIGZvciAoY29uc3RfaXRlcmF0b3IqIHAgPSBtX2l0ZXJhdG9yczsgcDsgcCA9
IG5leHQpIHsKICAgICAgICAgICAgIG5leHQgPSBwLT5tX25leHQ7Ci0gICAgICAgICAgICBwLT5t
X3RhYmxlID0gMDsKKyAgICAgICAgICAgIHAtPm1fdGFibGUgPSBudWxscHRyOwogICAgICAgICAg
ICAgcC0+bV9uZXh0ID0gMDsKICAgICAgICAgICAgIHAtPm1fcHJldmlvdXMgPSAwOwogICAgICAg
ICB9CkBAIC0xMjg0LDcgKzExOTMsNyBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCi0gICAgICAgIGl0LT5tX3RhYmxlID0gMDsKKyAgICAgICAgaXQtPm1fdGFi
bGUgPSBudWxscHRyOwogICAgICAgICBpdC0+bV9uZXh0ID0gMDsKICAgICAgICAgaXQtPm1fcHJl
dmlvdXMgPSAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0
LmggYi9Tb3VyY2UvV1RGL3d0Zi9MaXN0SGFzaFNldC5oCmluZGV4IDRlNTQ1NGUxYjgyNTQ0ZGJl
ZDg0ZDhiNDYwMWY4OGJiNGJlMjkxMWIuLmUwMDk0YWIyYWY1NDA5OTY4ZTY2YjFjMTE3MTkxNjAx
ZGY4ODU3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xpc3RIYXNoU2V0LmgKKysrIGIv
U291cmNlL1dURi93dGYvTGlzdEhhc2hTZXQuaApAQCAtNDcsNyArNDcsNyBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5PiBzdHJ1Y3QgTGlzdEhhc2hT
ZXROb2RlOwogdGVtcGxhdGU8dHlwZW5hbWUgVmFsdWVBcmcsIHNpemVfdCBpbmxpbmVDYXBhY2l0
eT4gY2xhc3MgTGlzdEhhc2hTZXROb2RlQWxsb2NhdG9yOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBI
YXNoQXJnPiBzdHJ1Y3QgTGlzdEhhc2hTZXROb2RlSGFzaEZ1bmN0aW9uczsKLXRlbXBsYXRlPHR5
cGVuYW1lIEhhc2hBcmc+IHN0cnVjdCBMaXN0SGFzaFNldFRyYW5zbGF0b3I7Cit0ZW1wbGF0ZTx0
eXBlbmFtZSBIYXNoRnVuY3Rpb25zLCB0eXBlbmFtZSBOb2RlVHlwZSwgdHlwZW5hbWUgVmFsdWVU
eXBlLCB0eXBlbmFtZSBBbGxvY2F0b3JUeXBlPiBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9y
OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBWYWx1ZUFyZywgc2l6ZV90IGlubGluZUNhcGFjaXR5ID0g
MjU2LCB0eXBlbmFtZSBIYXNoQXJnID0gdHlwZW5hbWUgRGVmYXVsdEhhc2g8VmFsdWVBcmc+OjpI
YXNoPiBjbGFzcyBMaXN0SGFzaFNldCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CkBA
IC01Nyw3ICs1Nyw3IEBAIHByaXZhdGU6CiAKICAgICB0eXBlZGVmIEhhc2hUcmFpdHM8Tm9kZSo+
IE5vZGVUcmFpdHM7CiAgICAgdHlwZWRlZiBMaXN0SGFzaFNldE5vZGVIYXNoRnVuY3Rpb25zPEhh
c2hBcmc+IE5vZGVIYXNoOwotICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRUcmFuc2xhdG9yPEhhc2hB
cmc+IEJhc2VUcmFuc2xhdG9yOworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXRUcmFuc2xhdG9yPEhh
c2hBcmcsIE5vZGUsIFZhbHVlQXJnLCBOb2RlQWxsb2NhdG9yKj4gQmFzZVRyYW5zbGF0b3I7CiAK
ICAgICB0eXBlZGVmIEhhc2hBcmcgSGFzaEZ1bmN0aW9uczsKIApAQCAtMzg5LDEzICszODksMTcg
QEAgcHJpdmF0ZToKICAgICBOb2RlKiBtX3Bvc2l0aW9uOwogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgSGFzaEZ1bmN0aW9ucz4KK3RlbXBsYXRlPHR5cGVuYW1lIEhhc2hGdW5jdGlvbnMsIHR5cGVu
YW1lIE5vZGVUeXBlLCB0eXBlbmFtZSBWYWx1ZVR5cGUsIHR5cGVuYW1lIEFsbG9jYXRvclR5cGU+
CiBzdHJ1Y3QgTGlzdEhhc2hTZXRUcmFuc2xhdG9yIHsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PiBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBUJiBrZXkpIHsgcmV0dXJuIEhhc2hGdW5jdGlv
bnM6Omhhc2goa2V5KTsgfQotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+IHN0
YXRpYyBib29sIGVxdWFsKGNvbnN0IFQmIGEsIGNvbnN0IFUmIGIpIHsgcmV0dXJuIEhhc2hGdW5j
dGlvbnM6OmVxdWFsKGEtPm1fdmFsdWUsIGIpOyB9Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwg
dHlwZW5hbWUgVSwgdHlwZW5hbWUgVj4gc3RhdGljIHZvaWQgdHJhbnNsYXRlKFQqJiBsb2NhdGlv
biwgVSYmIGtleSwgY29uc3QgViYgYWxsb2NhdG9yKQorICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNo
KGNvbnN0IFZhbHVlVHlwZSYga2V5KSB7IHJldHVybiBIYXNoRnVuY3Rpb25zOjpoYXNoKGtleSk7
IH0KKyAgICBzdGF0aWMgYm9vbCBlcXVhbChOb2RlVHlwZSogY29uc3QmIGEsIGNvbnN0IFZhbHVl
VHlwZSYgYikgeyByZXR1cm4gSGFzaEZ1bmN0aW9uczo6ZXF1YWwoYS0+bV92YWx1ZSwgYik7IH0K
KyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoTm9kZVR5cGUqJiBsb2NhdGlvbiwgVmFsdWVUeXBl
JiYga2V5LCBBbGxvY2F0b3JUeXBlJiYgYWxsb2NhdG9yKQogICAgIHsKLSAgICAgICAgbG9jYXRp
b24gPSBuZXcgKGFsbG9jYXRvcikgVChzdGQ6OmZvcndhcmQ8VT4oa2V5KSk7CisgICAgICAgIGxv
Y2F0aW9uID0gbmV3IChhbGxvY2F0b3IpIE5vZGVUeXBlKHN0ZDo6Zm9yd2FyZDxWYWx1ZVR5cGU+
KGtleSkpOworICAgIH0KKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoTm9kZVR5cGUqJiBsb2Nh
dGlvbiwgY29uc3QgVmFsdWVUeXBlJiBrZXksIEFsbG9jYXRvclR5cGUmJiBhbGxvY2F0b3IpCisg
ICAgeworICAgICAgICBsb2NhdGlvbiA9IG5ldyAoYWxsb2NhdG9yKSBOb2RlVHlwZShrZXkpOwog
ICAgIH0KIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAppbmRleCBlNWI3MDYyM2VhMTQ1
M2MxZmQyYmI3ZTBmZGNjZmIxZmVmMzAwZDRkLi43MzM5NmUwOWVkNjlkZTNjMTI2ZWY5MmI1Mzhm
N2MzZGNiNWI0Y2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJhcmVEYXRh
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSYXJlRGF0YS5oCkBAIC01OSw2ICs1OSwx
OCBAQCB0ZW1wbGF0ZSA8PiBzdHJ1Y3QgTm9kZUxpc3RUeXBlSWRlbnRpZmllcjxMYWJlbHNOb2Rl
TGlzdD4geyBzdGF0aWMgaW50IHZhbHVlKCkgewogCiBjbGFzcyBOb2RlTGlzdHNOb2RlRGF0YSB7
CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTm9kZUxpc3RzTm9kZURhdGEpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKKworICAgIGNsYXNzIEF0b21pY1N0cmluZ0FuZFR5cGU7CisgICAgY2xh
c3MgUGFzc0F0b21pY1N0cmluZ0FuZFR5cGU7CisgICAgc3RydWN0IEF0b21pY1N0cmluZ0FuZFR5
cGVIYXNoOworICAgIHN0cnVjdCBQYXNzQXRvbWljU3RyaW5nQW5kVHlwZVRyYW5zbGF0b3I7Cisg
ICAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+IHN0cnVjdCBOb2RlTGlzdENhY2hlTWFw
RW50cnlIYXNoOworCisgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0FuZFR5cGUsIExp
dmVOb2RlTGlzdCosIEF0b21pY1N0cmluZ0FuZFR5cGVIYXNoLCBTaW1wbGVDbGFzc0hhc2hUcmFp
dHM8QXRvbWljU3RyaW5nQW5kVHlwZT4+IE5vZGVMaXN0QXRvbWljTmFtZUNhY2hlTWFwOworICAg
IHR5cGVkZWYgSGFzaE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgU3RyaW5nPiwgTGl2ZU5v
ZGVMaXN0KiwgTm9kZUxpc3RDYWNoZU1hcEVudHJ5SGFzaDxTdHJpbmc+PiBOb2RlTGlzdE5hbWVD
YWNoZU1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nQW5kVHlwZSwgSFRNTENv
bGxlY3Rpb24qLCBBdG9taWNTdHJpbmdBbmRUeXBlSGFzaCwgU2ltcGxlQ2xhc3NIYXNoVHJhaXRz
PEF0b21pY1N0cmluZ0FuZFR5cGU+PiBDb2xsZWN0aW9uQ2FjaGVNYXA7CisgICAgdHlwZWRlZiBI
YXNoTWFwPFF1YWxpZmllZE5hbWUsIFRhZ05vZGVMaXN0Kj4gVGFnTm9kZUxpc3RDYWNoZU5TOwor
CiBwdWJsaWM6CiAgICAgdm9pZCBjbGVhckNoaWxkTm9kZUxpc3RDYWNoZSgpCiAgICAgewpAQCAt
MTAyLDI1ICsxMTQsMTAgQEAgcHVibGljOgogICAgICAgICBtX2VtcHR5Q2hpbGROb2RlTGlzdCA9
IG51bGxwdHI7CiAgICAgfQogCi0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+Ci0g
ICAgc3RydWN0IE5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2ggewotICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaGFzaChjb25zdCBzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgU3RyaW5nVHlwZT4mIGVu
dHJ5KQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gRGVmYXVsdEhhc2g8U3RyaW5nVHlw
ZT46Okhhc2g6Omhhc2goZW50cnkuc2Vjb25kKSArIGVudHJ5LmZpcnN0OwotICAgICAgICB9Ci0g
ICAgICAgIHN0YXRpYyBib29sIGVxdWFsKGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBT
dHJpbmdUeXBlPiYgYSwgY29uc3Qgc3RkOjpwYWlyPHVuc2lnbmVkIGNoYXIsIFN0cmluZ1R5cGU+
JiBiKSB7IHJldHVybiBhID09IGI7IH0KLSAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRv
Q29tcGFyZVRvRW1wdHlPckRlbGV0ZWQgPSBEZWZhdWx0SGFzaDxTdHJpbmdUeXBlPjo6SGFzaDo6
c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQ7Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgSGFz
aE1hcDxzdGQ6OnBhaXI8dW5zaWduZWQgY2hhciwgQXRvbWljU3RyaW5nPiwgTGl2ZU5vZGVMaXN0
KiwgTm9kZUxpc3RDYWNoZU1hcEVudHJ5SGFzaDxBdG9taWNTdHJpbmc+PiBOb2RlTGlzdEF0b21p
Y05hbWVDYWNoZU1hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8c3RkOjpwYWlyPHVuc2lnbmVkIGNo
YXIsIFN0cmluZz4sIExpdmVOb2RlTGlzdCosIE5vZGVMaXN0Q2FjaGVNYXBFbnRyeUhhc2g8U3Ry
aW5nPj4gTm9kZUxpc3ROYW1lQ2FjaGVNYXA7Ci0gICAgdHlwZWRlZiBIYXNoTWFwPHN0ZDo6cGFp
cjx1bnNpZ25lZCBjaGFyLCBBdG9taWNTdHJpbmc+LCBIVE1MQ29sbGVjdGlvbiosIE5vZGVMaXN0
Q2FjaGVNYXBFbnRyeUhhc2g8QXRvbWljU3RyaW5nPj4gQ29sbGVjdGlvbkNhY2hlTWFwOwotICAg
IHR5cGVkZWYgSGFzaE1hcDxRdWFsaWZpZWROYW1lLCBUYWdOb2RlTGlzdCo+IFRhZ05vZGVMaXN0
Q2FjaGVOUzsKLQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnRhaW5lclR5
cGU+CiAgICAgUGFzc1JlZjxUPiBhZGRDYWNoZVdpdGhBdG9taWNOYW1lKENvbnRhaW5lclR5cGUm
IGNvbnRhaW5lciwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgTm9k
ZUxpc3RBdG9taWNOYW1lQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2F0b21pY05hbWVD
YWNoZXMuYWRkKG5hbWVkTm9kZUxpc3RLZXk8VD4obmFtZSksIG51bGxwdHIpOworICAgICAgICBO
b2RlTGlzdEF0b21pY05hbWVDYWNoZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fYXRvbWljTmFt
ZUNhY2hlcy5hZGQ8UGFzc0F0b21pY1N0cmluZ0FuZFR5cGVUcmFuc2xhdG9yPihhdG9taWNTdHJp
bmdBbmRUeXBlS2V5PFQ+KG5hbWUpLCBudWxscHRyKTsKICAgICAgICAgaWYgKCFyZXN1bHQuaXNO
ZXdFbnRyeSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUJj4oKnJlc3VsdC5pdGVy
YXRvci0+dmFsdWUpOwogCkBAIC0xNTYsNyArMTUzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIFQsIHR5cGVuYW1lIENvbnRhaW5lclR5cGU+CiAgICAgUGFzc1JlZjxUPiBhZGRD
YWNoZWRDb2xsZWN0aW9uKENvbnRhaW5lclR5cGUmIGNvbnRhaW5lciwgQ29sbGVjdGlvblR5cGUg
Y29sbGVjdGlvblR5cGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAg
IENvbGxlY3Rpb25DYWNoZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2FjaGVkQ29sbGVjdGlv
bnMuYWRkKG5hbWVkQ29sbGVjdGlvbktleShjb2xsZWN0aW9uVHlwZSwgbmFtZSksIG51bGxwdHIp
OworICAgICAgICBDb2xsZWN0aW9uQ2FjaGVNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBtX2NhY2hl
ZENvbGxlY3Rpb25zLmFkZDxQYXNzQXRvbWljU3RyaW5nQW5kVHlwZVRyYW5zbGF0b3I+KG5hbWVk
Q29sbGVjdGlvbktleShjb2xsZWN0aW9uVHlwZSwgbmFtZSksIG51bGxwdHIpOwogICAgICAgICBp
ZiAoIXJlc3VsdC5pc05ld0VudHJ5KQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQm
PigqcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiAKQEAgLTE2OCw3ICsxNjUsNyBAQCBwdWJsaWM6
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQ29udGFpbmVyVHlwZT4KICAgICBQ
YXNzUmVmPFQ+IGFkZENhY2hlZENvbGxlY3Rpb24oQ29udGFpbmVyVHlwZSYgY29udGFpbmVyLCBD
b2xsZWN0aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIENvbGxlY3Rpb25D
YWNoZU1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IG1fY2FjaGVkQ29sbGVjdGlvbnMuYWRkKG5hbWVk
Q29sbGVjdGlvbktleShjb2xsZWN0aW9uVHlwZSwgc3RhckF0b20pLCBudWxscHRyKTsKKyAgICAg
ICAgQ29sbGVjdGlvbkNhY2hlTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gbV9jYWNoZWRDb2xsZWN0
aW9ucy5hZGQ8UGFzc0F0b21pY1N0cmluZ0FuZFR5cGVUcmFuc2xhdG9yPihuYW1lZENvbGxlY3Rp
b25LZXkoY29sbGVjdGlvblR5cGUsIHN0YXJBdG9tKSwgbnVsbHB0cik7CiAgICAgICAgIGlmICgh
cmVzdWx0LmlzTmV3RW50cnkpCiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VCY+KCpy
ZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIApAQCAtMTgwLDE2ICsxNzcsMTcgQEAgcHVibGljOgog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgVCogY2FjaGVkQ29sbGVjdGlvbihDb2xsZWN0
aW9uVHlwZSBjb2xsZWN0aW9uVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxUKj4obV9jYWNoZWRDb2xsZWN0aW9ucy5nZXQobmFtZWRDb2xsZWN0aW9uS2V5KGNvbGxlY3Rp
b25UeXBlLCBzdGFyQXRvbSkpKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtX2Nh
Y2hlZENvbGxlY3Rpb25zLmdldDxQYXNzQXRvbWljU3RyaW5nQW5kVHlwZVRyYW5zbGF0b3I+KG5h
bWVkQ29sbGVjdGlvbktleShjb2xsZWN0aW9uVHlwZSwgc3RhckF0b20pKSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KICAgICB2b2lkIHJlbW92ZUNhY2hlV2l0
aEF0b21pY05hbWUoTm9kZUxpc3RUeXBlKiBsaXN0LCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUg
PSBzdGFyQXRvbSkKICAgICB7Ci0gICAgICAgIEFTU0VSVChsaXN0ID09IG1fYXRvbWljTmFtZUNh
Y2hlcy5nZXQobmFtZWROb2RlTGlzdEtleTxOb2RlTGlzdFR5cGU+KG5hbWUpKSk7CisgICAgICAg
IEFTU0VSVChsaXN0ID09IG1fYXRvbWljTmFtZUNhY2hlcy5nZXQ8UGFzc0F0b21pY1N0cmluZ0Fu
ZFR5cGVUcmFuc2xhdG9yPihhdG9taWNTdHJpbmdBbmRUeXBlS2V5PE5vZGVMaXN0VHlwZT4obmFt
ZSkpKTsKICAgICAgICAgaWYgKGRlbGV0ZVRoaXNBbmRVcGRhdGVOb2RlUmFyZURhdGFJZkFib3V0
VG9SZW1vdmVMYXN0TGlzdChsaXN0LT5vd25lck5vZGUoKSkpCiAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG1fYXRvbWljTmFtZUNhY2hlcy5yZW1vdmUobmFtZWROb2RlTGlzdEtleTxOb2Rl
TGlzdFR5cGU+KG5hbWUpKTsKKworICAgICAgICBtX2F0b21pY05hbWVDYWNoZXMucmVtb3ZlKG1f
YXRvbWljTmFtZUNhY2hlcy5maW5kPFBhc3NBdG9taWNTdHJpbmdBbmRUeXBlVHJhbnNsYXRvcj4o
YXRvbWljU3RyaW5nQW5kVHlwZUtleTxOb2RlTGlzdFR5cGU+KG5hbWUpKSk7CiAgICAgfQogCiAg
ICAgdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KQEAgLTIxMiwxMCArMjEwLDEwIEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgcmVtb3ZlQ2FjaGVkQ29sbGVjdGlvbihIVE1MQ29sbGVjdGlvbiog
Y29sbGVjdGlvbiwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lID0gc3RhckF0b20pCiAgICAgewot
ICAgICAgICBBU1NFUlQoY29sbGVjdGlvbiA9PSBtX2NhY2hlZENvbGxlY3Rpb25zLmdldChuYW1l
ZENvbGxlY3Rpb25LZXkoY29sbGVjdGlvbi0+dHlwZSgpLCBuYW1lKSkpOworICAgICAgICBBU1NF
UlQoY29sbGVjdGlvbiA9PSBtX2NhY2hlZENvbGxlY3Rpb25zLmdldDxQYXNzQXRvbWljU3RyaW5n
QW5kVHlwZVRyYW5zbGF0b3I+KG5hbWVkQ29sbGVjdGlvbktleShjb2xsZWN0aW9uLT50eXBlKCks
IG5hbWUpKSk7CiAgICAgICAgIGlmIChkZWxldGVUaGlzQW5kVXBkYXRlTm9kZVJhcmVEYXRhSWZB
Ym91dFRvUmVtb3ZlTGFzdExpc3QoY29sbGVjdGlvbi0+b3duZXJOb2RlKCkpKQogICAgICAgICAg
ICAgcmV0dXJuOwotICAgICAgICBtX2NhY2hlZENvbGxlY3Rpb25zLnJlbW92ZShuYW1lZENvbGxl
Y3Rpb25LZXkoY29sbGVjdGlvbi0+dHlwZSgpLCBuYW1lKSk7CisgICAgICAgIG1fY2FjaGVkQ29s
bGVjdGlvbnMucmVtb3ZlPFBhc3NBdG9taWNTdHJpbmdBbmRUeXBlVHJhbnNsYXRvcj4obmFtZWRD
b2xsZWN0aW9uS2V5KGNvbGxlY3Rpb24tPnR5cGUoKSwgbmFtZSkpOwogICAgIH0KIAogICAgIHN0
YXRpYyBQYXNzT3duUHRyPE5vZGVMaXN0c05vZGVEYXRhPiBjcmVhdGUoKQpAQCAtMjY0LDE3ICsy
NjIsMjE0IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIHN0ZDo6cGFpcjx1bnNpZ25l
ZCBjaGFyLCBBdG9taWNTdHJpbmc+IG5hbWVkQ29sbGVjdGlvbktleShDb2xsZWN0aW9uVHlwZSB0
eXBlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAgUGFzc0F0b21pY1N0cmluZ0FuZFR5
cGUgbmFtZWRDb2xsZWN0aW9uS2V5KENvbGxlY3Rpb25UeXBlIGNvbGxlY3Rpb25UeXBlLCBjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gc3RkOjpwYWlyPHVu
c2lnbmVkIGNoYXIsIEF0b21pY1N0cmluZz4odHlwZSwgbmFtZSk7CisgICAgICAgIHJldHVybiBQ
YXNzQXRvbWljU3RyaW5nQW5kVHlwZShjb2xsZWN0aW9uVHlwZSwgbmFtZSk7CiAgICAgfQogCi0g
ICAgdGVtcGxhdGUgPGNsYXNzIE5vZGVMaXN0VHlwZT4KKyNpZiBDUFUoWDg2XzY0KSB8fCBDUFUo
QVJNNjQpCisgICAgY2xhc3MgUGFzc0F0b21pY1N0cmluZ0FuZFR5cGUgIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIFBhc3NBdG9taWNTdHJpbmdBbmRUeXBlKHVpbnQ4X3QgdHlwZSwgY29uc3QgQXRv
bWljU3RyaW5nJiBzdHJpbmcpCisgICAgICAgICAgICA6IG1fdGFnZ2VkUG9pbnRlcihyZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oc3RyaW5nLmltcGwoKSkgPDwgOCB8IHR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVCghc3RyaW5nLmlzTnVsbCgpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBXVEY6OmludEhhc2goc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KG1fdGFnZ2VkUG9pbnRlcikpOyB9CisgICAgICAgIHVpbnRwdHJfdCB0
YWdnZWRQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV90YWdnZWRQb2ludGVyOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICB1aW50cHRyX3QgbV90YWdnZWRQb2ludGVyOworICAgIH07CisKKyAg
ICBjbGFzcyBBdG9taWNTdHJpbmdBbmRUeXBlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEF0b21p
Y1N0cmluZ0FuZFR5cGUoKQorICAgICAgICAgICAgOiBtX3RhZ2dlZFBvaW50ZXIoMCkKKyAgICAg
ICAgeworICAgICAgICB9CisKKyAgICAgICAgQXRvbWljU3RyaW5nQW5kVHlwZShBdG9taWNTdHJp
bmdBbmRUeXBlJiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgICp0aGlzID0gc3RkOjpt
b3ZlKG90aGVyKTsKKyAgICAgICAgfQorCisgICAgICAgIEF0b21pY1N0cmluZ0FuZFR5cGUoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQorICAgICAgICAgICAgOiBtX3RhZ2dlZFBvaW50
ZXIoLTEpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIH5BdG9taWNTdHJpbmdBbmRU
eXBlKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1fdGFnZ2VkUG9pbnRlciAmJiAhaXNI
YXNoVGFibGVEZWxldGVkVmFsdWUoKSkKKyAgICAgICAgICAgICAgICBvcmlnaW5hbFBvaW50ZXIo
KS0+ZGVyZWYoKTsKKyAgICAgICAgfQorCisgICAgICAgIEF0b21pY1N0cmluZ0FuZFR5cGUmIG9w
ZXJhdG9yPShBdG9taWNTdHJpbmdBbmRUeXBlJiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fdGFnZ2VkUG9pbnRlciA9IG90aGVyLm1fdGFnZ2VkUG9pbnRlcjsKKyAgICAgICAgICAg
IG90aGVyLm1fdGFnZ2VkUG9pbnRlciA9IDA7CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gV1RGOjpp
bnRIYXNoKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtX3RhZ2dlZFBvaW50ZXIpKTsgfQorCisgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmdBbmRUeXBlJiBvdGhlcikgY29u
c3QgeyByZXR1cm4gbV90YWdnZWRQb2ludGVyID09IG90aGVyLm1fdGFnZ2VkUG9pbnRlcjsgfQor
CisgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBQYXNzQXRvbWljU3RyaW5nQW5kVHlwZSBv
dGhlcikgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fdGFnZ2VkUG9pbnRl
ciA9PSBvdGhlci50YWdnZWRQb2ludGVyKCk7CisgICAgICAgIH0KKworICAgICAgICBBdG9taWNT
dHJpbmdBbmRUeXBlJiBvcGVyYXRvcj0oUGFzc0F0b21pY1N0cmluZ0FuZFR5cGUgcGFzc0F0b21p
Y1N0cmluZ0FuZFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fdGFnZ2VkUG9pbnRlciA9
IHBhc3NBdG9taWNTdHJpbmdBbmRUeXBlLnRhZ2dlZFBvaW50ZXIoKTsKKworICAgICAgICAgICAg
QVNTRVJUKG1fdGFnZ2VkUG9pbnRlcik7CisgICAgICAgICAgICBBU1NFUlQoIWlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkpOworCisgICAgICAgICAgICBvcmlnaW5hbFBvaW50ZXIoKS0+cmVmKCk7
CisgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAgIH0KKworICAgICAgICBib29sIGlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIG1fdGFnZ2VkUG9pbnRlciA9PSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KC0xKTsKKyAgICAg
ICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgQXRvbWljU3RyaW5nQW5kVHlwZShBdG9taWNT
dHJpbmdBbmRUeXBlJiBvdGhlcik7CisgICAgICAgIEF0b21pY1N0cmluZ0FuZFR5cGUmIG9wZXJh
dG9yPShjb25zdCBBdG9taWNTdHJpbmdBbmRUeXBlJik7CisKKyAgICAgICAgQXRvbWljU3RyaW5n
SW1wbCogb3JpZ2luYWxQb2ludGVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8QXRvbWljU3RyaW5nSW1wbCo+KG1fdGFnZ2VkUG9pbnRlciA+
PiA4KTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnRwdHJfdCBtX3RhZ2dlZFBvaW50ZXI7Cisg
ICAgfTsKKyNlbHNlCisgICAgY2xhc3MgUGFzc0F0b21pY1N0cmluZ0FuZFR5cGUgIHsKKyAgICBw
dWJsaWM6CisgICAgICAgIFBhc3NBdG9taWNTdHJpbmdBbmRUeXBlKHVpbnQ4X3QgdHlwZSwgY29u
c3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpCisgICAgICAgICAgICA6IG1fc3RyaW5nKHN0cmluZykK
KyAgICAgICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VCghc3RyaW5nLmlzTnVsbCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIGhhc2go
KSBjb25zdCB7IHJldHVybiBEZWZhdWx0SGFzaDxBdG9taWNTdHJpbmc+OjpIYXNoOjpoYXNoKG1f
c3RyaW5nKSArIG1fdHlwZTsgfQorCisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbV9zdHJp
bmc7CisgICAgICAgIHVpbnQ4X3QgbV90eXBlOworICAgIH07CisKKyAgICBjbGFzcyBBdG9taWNT
dHJpbmdBbmRUeXBlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEF0b21pY1N0cmluZ0FuZFR5cGUo
KQorICAgICAgICAgICAgOiBtX3R5cGUoMCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAg
ICAgQXRvbWljU3RyaW5nQW5kVHlwZShBdG9taWNTdHJpbmdBbmRUeXBlJiYgb3RoZXIpCisgICAg
ICAgIHsKKyAgICAgICAgICAgICp0aGlzID0gc3RkOjptb3ZlKG90aGVyKTsKKyAgICAgICAgfQor
CisgICAgICAgIEF0b21pY1N0cmluZ0FuZFR5cGUoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFsdWVU
eXBlKQorICAgICAgICAgICAgOiBtX3N0cmluZyhXVEY6Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5
cGUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIEF0b21pY1N0cmluZ0FuZFR5cGUm
IG9wZXJhdG9yPShBdG9taWNTdHJpbmdBbmRUeXBlJiYgb3RoZXIpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fc3RyaW5nID0gc3RkOjptb3ZlKG90aGVyLm1fc3RyaW5nKTsKKyAgICAgICAgICAg
IG1fdHlwZSA9IG90aGVyLm1fdHlwZTsKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAg
ICAgfQorCisgICAgICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCB7IHJldHVybiBEZWZhdWx0SGFz
aDxBdG9taWNTdHJpbmc+OjpIYXNoOjpoYXNoKG1fc3RyaW5nKSArIG1fdHlwZTsgfQorCisgICAg
ICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmdBbmRUeXBlJiBvdGhlcikgY29u
c3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fc3RyaW5nID09IG90aGVyLm1fc3Ry
aW5nICYmIG1fdHlwZSA9PSBvdGhlci5tX3R5cGU7CisgICAgICAgIH0KKworICAgICAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgUGFzc0F0b21pY1N0cmluZ0FuZFR5cGUgb3RoZXIpIGNvbnN0Cisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3N0cmluZyA9PSBvdGhlci5tX3N0cmluZyAm
JiBtX3R5cGUgPT0gb3RoZXIubV90eXBlOworICAgICAgICB9CisKKyAgICAgICAgQXRvbWljU3Ry
aW5nQW5kVHlwZSYgb3BlcmF0b3I9KFBhc3NBdG9taWNTdHJpbmdBbmRUeXBlIHBhc3NBdG9taWNT
dHJpbmdBbmRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBtX3N0cmluZyA9IHBhc3NBdG9t
aWNTdHJpbmdBbmRUeXBlLm1fc3RyaW5nOworICAgICAgICAgICAgbV90eXBlID0gcGFzc0F0b21p
Y1N0cmluZ0FuZFR5cGUubV90eXBlOworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX3N0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1
ZSgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBBdG9taWNTdHJpbmdBbmRU
eXBlKEF0b21pY1N0cmluZ0FuZFR5cGUmIG90aGVyKTsKKyAgICAgICAgQXRvbWljU3RyaW5nQW5k
VHlwZSYgb3BlcmF0b3I9KGNvbnN0IEF0b21pY1N0cmluZ0FuZFR5cGUmKTsKKworICAgICAgICBB
dG9taWNTdHJpbmcmIG1fc3RyaW5nOworICAgICAgICB1aW50OF90IG1fdHlwZTsKKyAgICB9Owor
I2VuZGlmCisKKyAgICBzdHJ1Y3QgQXRvbWljU3RyaW5nQW5kVHlwZUhhc2ggeworICAgICAgICBz
dGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBBdG9taWNTdHJpbmdBbmRUeXBlJiBhdG9taWNTdHJp
bmdBbmRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gYXRvbWljU3RyaW5nQW5k
VHlwZS5oYXNoKCk7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGljIGJvb2wgZXF1YWwoY29uc3Qg
QXRvbWljU3RyaW5nQW5kVHlwZSYgYSwgY29uc3QgQXRvbWljU3RyaW5nQW5kVHlwZSYgYikgeyBy
ZXR1cm4gYSA9PSBiOyB9CisgICAgICAgIHN0YXRpYyBjb25zdCBib29sIHNhZmVUb0NvbXBhcmVU
b0VtcHR5T3JEZWxldGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgc3RydWN0IFBhc3NBdG9taWNT
dHJpbmdBbmRUeXBlVHJhbnNsYXRvciB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNv
bnN0IFBhc3NBdG9taWNTdHJpbmdBbmRUeXBlJiB2YWx1ZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIHZhbHVlLmhhc2goKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyBib29s
IGVxdWFsKGNvbnN0IEF0b21pY1N0cmluZ0FuZFR5cGUmIGEsIGNvbnN0IFBhc3NBdG9taWNTdHJp
bmdBbmRUeXBlIGIpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBhID09IGI7CisgICAg
ICAgIH0KKworICAgICAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoQXRvbWljU3RyaW5nQW5kVHlw
ZSYgbG9jYXRpb24sIFBhc3NBdG9taWNTdHJpbmdBbmRUeXBlIHZhbHVlKQorICAgICAgICB7Cisg
ICAgICAgICAgICBsb2NhdGlvbiA9IHZhbHVlOworICAgICAgICB9CisgICAgfTsKKworICAgIHRl
bXBsYXRlIDx0eXBlbmFtZSBOb2RlTGlzdFR5cGU+CisgICAgUGFzc0F0b21pY1N0cmluZ0FuZFR5
cGUgYXRvbWljU3RyaW5nQW5kVHlwZUtleShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpCisgICAg
eworICAgICAgICByZXR1cm4gUGFzc0F0b21pY1N0cmluZ0FuZFR5cGUoTm9kZUxpc3RUeXBlSWRl
bnRpZmllcjxOb2RlTGlzdFR5cGU+Ojp2YWx1ZSgpLCBuYW1lKTsKKyAgICB9CisKKyAgICB0ZW1w
bGF0ZSA8dHlwZW5hbWUgTm9kZUxpc3RUeXBlPgogICAgIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFy
LCBTdHJpbmc+IG5hbWVkTm9kZUxpc3RLZXkoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBTdHJpbmc+KE5vZGVMaXN0VHlw
ZUlkZW50aWZpZXI8Tm9kZUxpc3RUeXBlPjo6dmFsdWUoKSwgbmFtZSk7CiAgICAgfQogCisgICAg
dGVtcGxhdGUgPHR5cGVuYW1lIFN0cmluZ1R5cGU+CisgICAgc3RydWN0IE5vZGVMaXN0Q2FjaGVN
YXBFbnRyeUhhc2ggeworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBzdGQ6OnBh
aXI8dW5zaWduZWQgY2hhciwgU3RyaW5nVHlwZT4mIGVudHJ5KQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gRGVmYXVsdEhhc2g8U3RyaW5nVHlwZT46Okhhc2g6Omhhc2goZW50cnkuc2Vj
b25kKSArIGVudHJ5LmZpcnN0OworICAgICAgICB9CisgICAgICAgIHN0YXRpYyBib29sIGVxdWFs
KGNvbnN0IHN0ZDo6cGFpcjx1bnNpZ25lZCBjaGFyLCBTdHJpbmdUeXBlPiYgYSwgY29uc3Qgc3Rk
OjpwYWlyPHVuc2lnbmVkIGNoYXIsIFN0cmluZ1R5cGU+JiBiKSB7IHJldHVybiBhID09IGI7IH0K
KyAgICAgICAgc3RhdGljIGNvbnN0IGJvb2wgc2FmZVRvQ29tcGFyZVRvRW1wdHlPckRlbGV0ZWQg
PSBEZWZhdWx0SGFzaDxTdHJpbmdUeXBlPjo6SGFzaDo6c2FmZVRvQ29tcGFyZVRvRW1wdHlPckRl
bGV0ZWQ7CisgICAgfTsKKwogICAgIGJvb2wgZGVsZXRlVGhpc0FuZFVwZGF0ZU5vZGVSYXJlRGF0
YUlmQWJvdXRUb1JlbW92ZUxhc3RMaXN0KE5vZGUmKTsKIAogICAgIC8vIFRoZXNlIHR3byBhcmUg
Y3VycmVudGx5IG11dHVhbGx5IGV4Y2x1c2l2ZSBhbmQgY291bGQgYmUgdW5pb25lZC4gTm90IHZl
cnkgaW1wb3J0YW50IGFzIHRoaXMgY2xhc3MgaXMgbGFyZ2UgYW55d2F5LgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L1F1YWxpZmllZE5hbWUuY3BwCmluZGV4IDM2ODFhMTRmNDdjYmUxMTQyMGJkNWNlY2MwMTU5MDk0
ZWQwMjc2Y2UuLmEyOTcyOTUwODM0YzQxMzQzNTlkNDg0NDdlM2RjMjNkMDVkM2ZiNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IFFO
YW1lQ29tcG9uZW50c1RyYW5zbGF0b3IgewogICAgIHsKICAgICAgICAgcmV0dXJuIGMubV9wcmVm
aXggPT0gbmFtZS0+bV9wcmVmaXguaW1wbCgpICYmIGMubV9sb2NhbE5hbWUgPT0gbmFtZS0+bV9s
b2NhbE5hbWUuaW1wbCgpICYmIGMubV9uYW1lc3BhY2UgPT0gbmFtZS0+bV9uYW1lc3BhY2UuaW1w
bCgpOwogICAgIH0KLSAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoUXVhbGlmaWVkTmFtZTo6UXVh
bGlmaWVkTmFtZUltcGwqJiBsb2NhdGlvbiwgY29uc3QgUXVhbGlmaWVkTmFtZUNvbXBvbmVudHMm
IGNvbXBvbmVudHMsIHVuc2lnbmVkKQorICAgIHN0YXRpYyB2b2lkIHRyYW5zbGF0ZShRdWFsaWZp
ZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbComIGxvY2F0aW9uLCBjb25zdCBRdWFsaWZpZWROYW1l
Q29tcG9uZW50cyYgY29tcG9uZW50cykKICAgICB7CiAgICAgICAgIGxvY2F0aW9uID0gUXVhbGlm
aWVkTmFtZTo6UXVhbGlmaWVkTmFtZUltcGw6OmNyZWF0ZShjb21wb25lbnRzLm1fcHJlZml4LCBj
b21wb25lbnRzLm1fbG9jYWxOYW1lLCBjb21wb25lbnRzLm1fbmFtZXNwYWNlKS5sZWFrUmVmKCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
SGVhZGVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRl
ck1hcC5jcHAKaW5kZXggYzZkNWM3ZGIxMzgyYmRmZDNiODVhMGRmZjc2OTA5MDI0N2RkZWZjZi4u
ODYyZGZmZTEyYjlmZDMxNTc3Yjc3YTk0ZjI4YmU3NzI3MGIwZGJlOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBAIC04Niw3ICs4
Niw3IEBAIHN0cnVjdCBDYXNlRm9sZGluZ0NTdHJpbmdUcmFuc2xhdG9yIHsKICAgICAgICAgcmV0
dXJuIGVxdWFsSWdub3JpbmdDYXNlKGtleSwgY1N0cmluZyk7CiAgICAgfQogICAgIAotICAgIHN0
YXRpYyB2b2lkIHRyYW5zbGF0ZShBdG9taWNTdHJpbmcmIGxvY2F0aW9uLCBjb25zdCBjaGFyKiBj
U3RyaW5nLCB1bnNpZ25lZCAvKmhhc2gqLykKKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGUoQXRv
bWljU3RyaW5nJiBsb2NhdGlvbiwgY29uc3QgY2hhciogY1N0cmluZykKICAgICB7CiAgICAgICAg
IGxvY2F0aW9uID0gQXRvbWljU3RyaW5nKGNTdHJpbmcpOwogICAgIH0K
</data>
<flag name="review"
          id="253011"
          type_id="1"
          status="-"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>