<?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>154691</bug_id>
          
          <creation_ts>2016-02-25 13:49:56 -0800</creation_ts>
          <short_desc>Should template RefCounter instead of RefCounter::Token</short_desc>
          <delta_ts>2016-02-25 16:45:48 -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>Web Template Framework</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1168205</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-02-25 13:49:56 -0800</bug_when>
    <thetext>My real goal here is to make the counter accurate. Currently returning a Token from token&lt;&gt;() results in ref-count churn. Fixing this either means changing the return value, or improving Token (which will probably mean replacing it with RefPtr). Either way would break the current type checking. Move type tag to RefCount so this can still be enforced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168207</commentid>
    <comment_count>1</comment_count>
      <attachid>272235</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-02-25 13:57:24 -0800</bug_when>
    <thetext>Created attachment 272235
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168214</commentid>
    <comment_count>2</comment_count>
      <attachid>272235</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-02-25 14:15:33 -0800</bug_when>
    <thetext>Comment on attachment 272235
Fix

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

&gt; Source/WTF/wtf/RefCounter.h:172
&gt; +inline typename RefCounter&lt;T&gt;::Token&amp; RefCounter&lt;T&gt;::Token::operator=(const RefCounter&lt;T&gt;::Token&amp; token)

I think this can be

inline auto RefCounter&lt;T&gt;::Token::operator=(const RefCounter&lt;T&gt;::Token&amp; token) -&gt; Token&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168247</commentid>
    <comment_count>3</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-02-25 14:58:02 -0800</bug_when>
    <thetext>Transmitting file data ................
Committed revision 197132.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168296</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2016-02-25 16:45:48 -0800</bug_when>
    <thetext>Speculative windows fix:
Transmitting file data ..
Committed revision 197146.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272235</attachid>
            <date>2016-02-25 13:57:24 -0800</date>
            <delta_ts>2016-02-25 14:15:33 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>154691.1.patch</filename>
            <type>text/plain</type>
            <size>27397</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxOTcxMzApCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDM5IEBACisyMDE2LTAyLTI1ICBHYXZpbiBCYXJyYWNsb3VnaCAg
PGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQgdGVtcGxhdGUgUmVmQ291
bnRlciBpbnN0ZWFkIG9mIFJlZkNvdW50ZXI6OlRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNeSByZWFsIGdvYWwgaGVyZSBpcyB0byBtYWtlIHRo
ZSBjb3VudGVyIGFjY3VyYXRlLiBDdXJyZW50bHkgcmV0dXJuaW5nIGEgVG9rZW4gZnJvbSB0b2tl
bjw+KCkKKyAgICAgICAgcmVzdWx0cyBpbiByZWYtY291bnQgY2h1cm4uIEZpeGluZyB0aGlzIGVp
dGhlciBtZWFucyBjaGFuZ2luZyB0aGUgcmV0dXJuIHZhbHVlLCBvciBpbXByb3ZpbmcKKyAgICAg
ICAgVG9rZW4gKHdoaWNoIHdpbGwgcHJvYmFibHkgbWVhbiByZXBsYWNpbmcgaXQgd2l0aCBSZWZQ
dHIpLiBFaXRoZXIgd2F5IHdvdWxkIGJyZWFrIHRoZSBjdXJyZW50CisgICAgICAgIHR5cGUgY2hl
Y2tpbmcuIE1vdmUgdHlwZSB0YWcgdG8gUmVmQ291bnQgc28gdGhpcyBjYW4gc3RpbGwgYmUgZW5m
b3JjZWQuCisKKyAgICAgICAgKiBXVEYudmN4cHJvai9XVEYudmN4cHJvajoKKyAgICAgICAgKiBX
VEYudmN4cHJvai9XVEYudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIFdURi54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIHd0Zi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAg
KiB3dGYvUmVmQ291bnRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICAgICAtIFJlbW92ZWQgUmVm
Q291bnRlci5jcHAuCisgICAgICAgICogd3RmL1JlZkNvdW50ZXIuaDoKKyAgICAgICAgKFdURjo6
UmVmQ291bnRlcjo6VG9rZW46OlRva2VuKToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlcjo6VG9r
ZW46Om9wZXJhdG9yIGJvb2wpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpSZWZDb3VudGVy
KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlcjo6Y291bnQpOgorICAgICAgICAoV1RGOjpSZWZD
b3VudGVyOjp2YWx1ZSk6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZXI8VD46OkNvdW50OjpyZWYp
OgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyPFQ+OjpDb3VudDo6ZGVyZWYpOgorICAgICAgICAo
V1RGOjpSZWZDb3VudGVyPFQ+OjpSZWZDb3VudGVyKToKKyAgICAgICAgKFdURjo6UmVmQ291bnRl
cjxUPjo6flJlZkNvdW50ZXIpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyPFQ+OjpUb2tlbjo6
VG9rZW4pOgorICAgICAgICAoV1RGOjo9KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlcjo6dG9r
ZW4pOiBEZWxldGVkLgorICAgICAgICAoV1RGOjpSZWZDb3VudGVyOjpUb2tlbjxUPjo6VG9rZW4p
OiBEZWxldGVkLgorICAgICAgICAgICAgLSBSZWZDb3VudGVyIC0+IFJlZkNvdW50ZXI8VD4sCisg
ICAgICAgICAgICAtIFRva2VuPFQ+IC0+IFRva2VuLAorICAgICAgICAgICAgLSByZW5hbWVkIHRv
a2VuPD4oKSAtPiBjb3VudCgpLgorCiAyMDE2LTAyLTI1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgSGFzaE1hcDo6ZW5zdXJlKCkgc2hvdWxkIHJldHVybiBhbiBBZGRS
ZXN1bHQgbGlrZSBhbGwgdGhlIG90aGVyIGFkZC1saWtlIGZ1bmN0aW9ucy4KSW5kZXg6IFNvdXJj
ZS9XVEYvV1RGLnZjeHByb2ovV1RGLnZjeHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9X
VEYudmN4cHJvai9XVEYudmN4cHJvagkocmV2aXNpb24gMTk3MDUzKQorKysgU291cmNlL1dURi9X
VEYudmN4cHJvai9XVEYudmN4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTExLDcgKzExMSw2IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcUkFNU2l6ZS5jcHAiIC8+CiAgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlx3dGZcUmFuZG9tTnVtYmVyLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHd0ZlxSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwIiAvPgotICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFJlZkNvdW50ZXIuY3BwIiAvPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cd3RmXFJ1bkxvb3AuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5cd3RmXFNIQTEuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cd3RmXFNp
eENoYXJhY3Rlckhhc2guY3BwIiAvPgpJbmRleDogU291cmNlL1dURi9XVEYudmN4cHJvai9XVEYu
dmN4cHJvai5maWx0ZXJzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnZjeHByb2ovV1RG
LnZjeHByb2ouZmlsdGVycwkocmV2aXNpb24gMTk3MDUzKQorKysgU291cmNlL1dURi9XVEYudmN4
cHJvai9XVEYudmN4cHJvai5maWx0ZXJzCSh3b3JraW5nIGNvcHkpCkBAIC0yNDMsNyArMjQzLDYg
QEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHd0ZlxGYXN0Qml0VmVjdG9yLmNwcCI+CiAg
ICAgICA8RmlsdGVyPnd0ZjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgotICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5cd3RmXFJlZkNvdW50ZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5cd3RmXHdpblxXVEZETEwuY3BwIj4KICAgICAgIDxGaWx0ZXI+d3RmXHdpbjwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgpJbmRleDogU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxOTcwNTMpCisrKyBTb3VyY2UvV1RGL1dURi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDYgQEAKIAkJ
ODEzNDAxMzgxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjggLyog
QmFzZTY0LmNwcCAqLzsgfTsKIAkJODEzNDAxMzkxNUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODEzNDAxMzcx
NUIwOTJGRDAwMUZGMEI4IC8qIEJhc2U2NC5oICovOyB9OwogCQk4M0ZCQTkzMjE5REY0NTk3MDBG
MzBBREIgLyogVHlwZUNhc3RzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4M0ZCQTkzMTE5REY0NTk3MDBGMzBBREIgLyogVHlwZUNhc3RzLmggKi87IH07
Ci0JCTg2RjQ2RjYwMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2RjQ2RjVFMUEyODQwRUUwMEND
QkYyMiAvKiBSZWZDb3VudGVyLmNwcCAqLzsgfTsKIAkJODZGNDZGNjExQTI4NDBFRTAwQ0NCRjIy
IC8qIFJlZkNvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2RjQ2RjVGMUEyODQwRUUwMENDQkYyMiAvKiBSZWZDb3VudGVyLmggKi87IH07CiAJ
CTkzOTM0QkQzMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzOTM0QkQyMThBMUU4QzMwMEQw
RDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSAqLzsgfTsKIAkJOTM5MzRCRDUxOEExRjE2OTAwRDBE
NkExIC8qIFN0cmluZ1ZpZXdDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5MzkzNEJENDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNw
cCAqLzsgfTsKQEAgLTQyNSw3ICs0MjQsNiBAQAogCQk4MTM0MDEzNjE1QjA5MkZEMDAxRkYwQjgg
LyogQmFzZTY0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2U2
NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgxMzQwMTM3MTVCMDkyRkQwMDFG
RjBCOCAvKiBCYXNlNjQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmFzZTY0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzRkJBOTMxMTlERjQ1OTcwMEYzMEFE
QiAvKiBUeXBlQ2FzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVHlwZUNh
c3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2RjQ2RjVFMUEyODQwRUUwMEND
QkYyMiAvKiBSZWZDb3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFJlZkNvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NkY0NkY1
RjFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZWZDb3VudGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkz
OTM0QkQyMThBMUU4QzMwMEQwRDZBMSAvKiBTdHJpbmdWaWV3T2JqQy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFN0cmluZ1ZpZXdPYmpDLm1tOyBwYXRoID0gbWFj
L1N0cmluZ1ZpZXdPYmpDLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzkzNEJE
NDE4QTFGMTY5MDBEMEQ2QTEgLyogU3RyaW5nVmlld0NGLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IFN0cmluZ1ZpZXdDRi5jcHA7IHBhdGggPSBjZi9TdHJpbmdWaWV3
Q0YuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg5LDcgKzg4Nyw2IEBACiAJ
CQkJQThBNDczMDAxNTFBODI1QjAwNDEyM0ZGIC8qIFJlZkNvdW50ZWRBcnJheS5oICovLAogCQkJ
CUE4QTQ3MzAxMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIuY3BwICov
LAogCQkJCUE4QTQ3MzAyMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0NvdW50ZXIu
aCAqLywKLQkJCQk4NkY0NkY1RTFBMjg0MEVFMDBDQ0JGMjIgLyogUmVmQ291bnRlci5jcHAgKi8s
CiAJCQkJODZGNDZGNUYxQTI4NDBFRTAwQ0NCRjIyIC8qIFJlZkNvdW50ZXIuaCAqLywKIAkJCQlB
OEE0NzMwMzE1MUE4MjVCMDA0MTIzRkYgLyogUmVmUHRyLmggKi8sCiAJCQkJQThBNDczMDUxNTFB
ODI1QjAwNDEyM0ZGIC8qIFJldGFpblB0ci5oICovLApAQCAtMTQ2Myw3ICsxNDYwLDYgQEAKIAkJ
CQkxNDNGNjExRjE1NjVGMEY5MDBEQjUxNEEgLyogUkFNU2l6ZS5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlBOEE0NzQxNDE1MUE4MjVCMDA0MTIzRkYgLyogUmFuZG9tTnVtYmVyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE4QTQ3NDFBMTUxQTgyNUIwMDQxMjNGRiAvKiBSZWZDb3VudGVkTGVha0Nv
dW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODZGNDZGNjAxQTI4NDBFRTAwQ0NCRjIyIC8q
IFJlZkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkNERUQwRjMxODExNUM4NTAwNERC
QTcwIC8qIFJ1bkxvb3AuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkNERUQwRUYxODExNUMzODAw
NERCQTcwIC8qIFJ1bkxvb3BDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxNDY5NDE5MzE2RUFB
RjZEMDAyNEUxNDYgLyogUnVuTG9vcFRpbWVyQ0YuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTk3MDUzKQorKysgU291cmNlL1dURi93dGYvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNiBAQCBzZXQoV1RGX1NP
VVJDRVMKICAgICBSQU1TaXplLmNwcAogICAgIFJhbmRvbU51bWJlci5jcHAKICAgICBSZWZDb3Vu
dGVkTGVha0NvdW50ZXIuY3BwCi0gICAgUmVmQ291bnRlci5jcHAKICAgICBSdW5Mb29wLmNwcAog
ICAgIFNIQTEuY3BwCiAgICAgU2l4Q2hhcmFjdGVySGFzaC5jcHAKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1JlZkNvdW50ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50
ZXIuY3BwCShyZXZpc2lvbiAxOTcwNTMpCisrKyBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlJlZkNvdW50ZXIuaCIKLQotbmFtZXNwYWNlIFdURiB7Ci0K
LXZvaWQgUmVmQ291bnRlcjo6Q291bnQ6OnJlZigpCi17Ci0gICAgYm9vbCB2YWx1ZVdhc1plcm8g
PSAhbV92YWx1ZTsKLSAgICArK21fdmFsdWU7Ci0gICAgCi0gICAgaWYgKHZhbHVlV2FzWmVybyAm
JiBtX3JlZkNvdW50ZXIpCi0gICAgICAgIG1fcmVmQ291bnRlci0+bV92YWx1ZURpZENoYW5nZSh0
cnVlKTsKLX0KLQotdm9pZCBSZWZDb3VudGVyOjpDb3VudDo6ZGVyZWYoKQotewotICAgIEFTU0VS
VChtX3ZhbHVlKTsKLSAgICAtLW1fdmFsdWU7Ci0KLSAgICBpZiAobV92YWx1ZSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgLy8gVGhlIENvdW50IG9iamVjdCBpcyBrZXB0IGFsaXZlIHNvIGxvbmcg
YXMgZWl0aGVyIHRoZSBSZWZDb3VudGVyIHRoYXQgY3JlYXRlZCBpdCByZW1haW5zCi0gICAgLy8g
YWxsb2NhdGVkLCBvciBzbyBsb25nIGFzIGl0cyByZWZlcmVuY2UgY291bnQgaXMgbm9uLXplcm8u
Ci0gICAgLy8gSWYgdGhlIFJlZkNvdW50ZXIgaGFzIGFscmVhZHkgYmVlbiBkZWFsbG9jdGVkIHRo
ZW4gZGVsZXRlIHRoZSBDb3VudCB3aGVuIGl0cyByZWZlcmVuY2UKLSAgICAvLyBjb3VudCByZWFj
aGVzIHplcm8uCi0gICAgaWYgKG1fcmVmQ291bnRlcikKLSAgICAgICAgbV9yZWZDb3VudGVyLT5t
X3ZhbHVlRGlkQ2hhbmdlKGZhbHNlKTsKLSAgICBlbHNlCi0gICAgICAgIGRlbGV0ZSB0aGlzOwot
fQotCi1SZWZDb3VudGVyOjpSZWZDb3VudGVyKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gdmFs
dWVEaWRDaGFuZ2UpCi0gICAgOiBtX3ZhbHVlRGlkQ2hhbmdlKHZhbHVlRGlkQ2hhbmdlKQotICAg
ICwgbV9jb3VudChuZXcgQ291bnQoKnRoaXMpKQotewotfQotCi1SZWZDb3VudGVyOjp+UmVmQ291
bnRlcigpCi17Ci0gICAgLy8gVGhlIENvdW50IG9iamVjdCBpcyBrZXB0IGFsaXZlIHNvIGxvbmcg
YXMgZWl0aGVyIHRoZSBSZWZDb3VudGVyIHRoYXQgY3JlYXRlZCBpdCByZW1haW5zCi0gICAgLy8g
YWxsb2NhdGVkLCBvciBzbyBsb25nIGFzIGl0cyByZWZlcmVuY2UgY291bnQgaXMgbm9uLXplcm8u
Ci0gICAgLy8gSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgQ291bnQgaXMgYWxyZWFkeSB6
ZXJvIHRoZW4gZGVsZXRlIGl0IG5vdywgb3RoZXJ3aXNlCi0gICAgLy8gY2xlYXIgaXRzIG1fcmVm
Q291bnRlciBwb2ludGVyLgotICAgIGlmIChtX2NvdW50LT5tX3ZhbHVlKQotICAgICAgICBtX2Nv
dW50LT5tX3JlZkNvdW50ZXIgPSBudWxscHRyOwotICAgIGVsc2UKLSAgICAgICAgZGVsZXRlIG1f
Y291bnQ7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XVEYvd3Rm
L1JlZkNvdW50ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVyLmgJ
KHJldmlzaW9uIDE5NzA1MykKKysrIFNvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogCiBuYW1lc3BhY2UgV1RGIHsKIAordGVtcGxhdGU8
dHlwZW5hbWUgVD4KIGNsYXNzIFJlZkNvdW50ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlZkNvdW50ZXIpOwogCkBAIC01NSwxNyArNTYsMTYgQEAgY2xhc3MgUmVmQ291bnRlciB7CiAg
ICAgfTsKIAogcHVibGljOgotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiAgICAgY2xhc3MgVG9r
ZW4gIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFRva2VuKCkgeyB9CiAgICAgICAgIFRva2VuKHN0
ZDo6bnVsbHB0cl90KSB7IH0KLSAgICAgICAgaW5saW5lIFRva2VuKGNvbnN0IFRva2VuPFQ+Jik7
Ci0gICAgICAgIGlubGluZSBUb2tlbihUb2tlbjxUPiYmKTsKKyAgICAgICAgaW5saW5lIFRva2Vu
KGNvbnN0IFRva2VuJik7CisgICAgICAgIGlubGluZSBUb2tlbihUb2tlbiYmKTsKIAotICAgICAg
ICBpbmxpbmUgVG9rZW48VD4mIG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCk7Ci0gICAgICAgIGlu
bGluZSBUb2tlbjxUPiYgb3BlcmF0b3I9KGNvbnN0IFRva2VuPFQ+Jik7Ci0gICAgICAgIGlubGlu
ZSBUb2tlbjxUPiYgb3BlcmF0b3I9KFRva2VuPFQ+JiYpOworICAgICAgICBpbmxpbmUgVG9rZW4m
IG9wZXJhdG9yPShzdGQ6Om51bGxwdHJfdCk7CisgICAgICAgIGlubGluZSBUb2tlbiYgb3BlcmF0
b3I9KGNvbnN0IFRva2VuJik7CisgICAgICAgIGlubGluZSBUb2tlbiYgb3BlcmF0b3I9KFRva2Vu
JiYpOwogCiAgICAgICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiBt
X3B0cjsgfQogCkBAIC03OSwxMCArNzksOSBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFJlZkNvdW50ZXIoc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wpPiA9IFtdKGJvb2wpIHsgfSk7
CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIH5SZWZDb3VudGVyKCk7CiAKLSAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgotICAgIFRva2VuPFQ+IHRva2VuKCkgY29uc3QKKyAgICBUb2tlbiBjb3VudCgp
IGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gVG9rZW48VD4obV9jb3VudCk7CisgICAgICAg
IHJldHVybiBUb2tlbihtX2NvdW50KTsKICAgICB9CiAKICAgICB1bnNpZ25lZCB2YWx1ZSgpIGNv
bnN0CkBAIC05NSw0MCArOTQsODkgQEAgcHJpdmF0ZToKICAgICBDb3VudCogbV9jb3VudDsKIH07
CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgdm9pZCBSZWZDb3VudGVyPFQ+OjpDb3Vu
dDo6cmVmKCkKK3sKKyAgICBib29sIHZhbHVlV2FzWmVybyA9ICFtX3ZhbHVlOworICAgICsrbV92
YWx1ZTsKKyAgICAKKyAgICBpZiAodmFsdWVXYXNaZXJvICYmIG1fcmVmQ291bnRlcikKKyAgICAg
ICAgbV9yZWZDb3VudGVyLT5tX3ZhbHVlRGlkQ2hhbmdlKHRydWUpOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgoraW5saW5lIHZvaWQgUmVmQ291bnRlcjxUPjo6Q291bnQ6OmRlcmVmKCkKK3sK
KyAgICBBU1NFUlQobV92YWx1ZSk7CisgICAgLS1tX3ZhbHVlOworCisgICAgaWYgKG1fdmFsdWUp
CisgICAgICAgIHJldHVybjsKKworICAgIC8vIFRoZSBDb3VudCBvYmplY3QgaXMga2VwdCBhbGl2
ZSBzbyBsb25nIGFzIGVpdGhlciB0aGUgUmVmQ291bnRlciB0aGF0IGNyZWF0ZWQgaXQgcmVtYWlu
cworICAgIC8vIGFsbG9jYXRlZCwgb3Igc28gbG9uZyBhcyBpdHMgcmVmZXJlbmNlIGNvdW50IGlz
IG5vbi16ZXJvLgorICAgIC8vIElmIHRoZSBSZWZDb3VudGVyIGhhcyBhbHJlYWR5IGJlZW4gZGVh
bGxvY3RlZCB0aGVuIGRlbGV0ZSB0aGUgQ291bnQgd2hlbiBpdHMgcmVmZXJlbmNlCisgICAgLy8g
Y291bnQgcmVhY2hlcyB6ZXJvLgorICAgIGlmIChtX3JlZkNvdW50ZXIpCisgICAgICAgIG1fcmVm
Q291bnRlci0+bV92YWx1ZURpZENoYW5nZShmYWxzZSk7CisgICAgZWxzZQorICAgICAgICBkZWxl
dGUgdGhpczsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBSZWZDb3VudGVyPFQ+
OjpSZWZDb3VudGVyKHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gdmFsdWVEaWRDaGFuZ2UpCisg
ICAgOiBtX3ZhbHVlRGlkQ2hhbmdlKHZhbHVlRGlkQ2hhbmdlKQorICAgICwgbV9jb3VudChuZXcg
Q291bnQoKnRoaXMpKQoreworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIFJlZkNv
dW50ZXI8VD46On5SZWZDb3VudGVyKCkKK3sKKyAgICAvLyBUaGUgQ291bnQgb2JqZWN0IGlzIGtl
cHQgYWxpdmUgc28gbG9uZyBhcyBlaXRoZXIgdGhlIFJlZkNvdW50ZXIgdGhhdCBjcmVhdGVkIGl0
IHJlbWFpbnMKKyAgICAvLyBhbGxvY2F0ZWQsIG9yIHNvIGxvbmcgYXMgaXRzIHJlZmVyZW5jZSBj
b3VudCBpcyBub24temVyby4KKyAgICAvLyBJZiB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIHRoZSBD
b3VudCBpcyBhbHJlYWR5IHplcm8gdGhlbiBkZWxldGUgaXQgbm93LCBvdGhlcndpc2UKKyAgICAv
LyBjbGVhciBpdHMgbV9yZWZDb3VudGVyIHBvaW50ZXIuCisgICAgaWYgKG1fY291bnQtPm1fdmFs
dWUpCisgICAgICAgIG1fY291bnQtPm1fcmVmQ291bnRlciA9IG51bGxwdHI7CisgICAgZWxzZQor
ICAgICAgICBkZWxldGUgbV9jb3VudDsKK30KKwogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBS
ZWZDb3VudGVyOjpUb2tlbjxUPjo6VG9rZW4oQ291bnQqIGNvdW50KQoraW5saW5lIFJlZkNvdW50
ZXI8VD46OlRva2VuOjpUb2tlbihDb3VudCogY291bnQpCiAgICAgOiBtX3B0cihjb3VudCkKIHsK
IH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBSZWZDb3VudGVyOjpUb2tlbjxUPjo6VG9r
ZW4oY29uc3QgUmVmQ291bnRlcjo6VG9rZW48VD4mIHRva2VuKQoraW5saW5lIFJlZkNvdW50ZXI8
VD46OlRva2VuOjpUb2tlbihjb25zdCBSZWZDb3VudGVyOjpUb2tlbiYgdG9rZW4pCiAgICAgOiBt
X3B0cih0b2tlbi5tX3B0cikKIHsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGluZSBSZWZD
b3VudGVyOjpUb2tlbjxUPjo6VG9rZW4oUmVmQ291bnRlcjo6VG9rZW48VD4mJiB0b2tlbikKK2lu
bGluZSBSZWZDb3VudGVyPFQ+OjpUb2tlbjo6VG9rZW4oUmVmQ291bnRlcjo6VG9rZW4mJiB0b2tl
bikKICAgICA6IG1fcHRyKHRva2VuLm1fcHRyKQogewogfQogCiB0ZW1wbGF0ZTxjbGFzcyBUPgot
aW5saW5lIFJlZkNvdW50ZXI6OlRva2VuPFQ+JiBSZWZDb3VudGVyOjpUb2tlbjxUPjo6b3BlcmF0
b3I9KHN0ZDo6bnVsbHB0cl90KQoraW5saW5lIHR5cGVuYW1lIFJlZkNvdW50ZXI8VD46OlRva2Vu
JiBSZWZDb3VudGVyPFQ+OjpUb2tlbjo6b3BlcmF0b3I9KHN0ZDo6bnVsbHB0cl90KQogewogICAg
IG1fcHRyID0gbnVsbHB0cjsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKIHRlbXBsYXRlPGNsYXNz
IFQ+Ci1pbmxpbmUgUmVmQ291bnRlcjo6VG9rZW48VD4mIFJlZkNvdW50ZXI6OlRva2VuPFQ+Ojpv
cGVyYXRvcj0oY29uc3QgUmVmQ291bnRlcjo6VG9rZW48VD4mIHRva2VuKQoraW5saW5lIHR5cGVu
YW1lIFJlZkNvdW50ZXI8VD46OlRva2VuJiBSZWZDb3VudGVyPFQ+OjpUb2tlbjo6b3BlcmF0b3I9
KGNvbnN0IFJlZkNvdW50ZXI8VD46OlRva2VuJiB0b2tlbikKIHsKICAgICBtX3B0ciA9IHRva2Vu
Lm1fcHRyOwogICAgIHJldHVybiAqdGhpczsKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVD4KLWlubGlu
ZSBSZWZDb3VudGVyOjpUb2tlbjxUPiYgUmVmQ291bnRlcjo6VG9rZW48VD46Om9wZXJhdG9yPShS
ZWZDb3VudGVyOjpUb2tlbjxUPiYmIHRva2VuKQoraW5saW5lIHR5cGVuYW1lIFJlZkNvdW50ZXI8
VD46OlRva2VuJiBSZWZDb3VudGVyPFQ+OjpUb2tlbjo6b3BlcmF0b3I9KFJlZkNvdW50ZXI8VD46
OlRva2VuJiYgdG9rZW4pCiB7CiAgICAgbV9wdHIgPSB0b2tlbi5tX3B0cjsKICAgICByZXR1cm4g
KnRoaXM7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTcwNTMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxNi0wMi0yNSAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgU2hv
dWxkIHRlbXBsYXRlIFJlZkNvdW50ZXIgaW5zdGVhZCBvZiBSZWZDb3VudGVyOjpUb2tlbgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NjkxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWVjaGFuaWNhbCB1
cGRhdGUgcGVyIFJlZkNvdW50ZXIgaW50ZXJmYWNlIGNoYW5nZS4KKworICAgICAgICAqIHBhZ2Uv
UGFnZVRocm90dGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlVGhyb3R0bGVyOjptZWRp
YUFjdGl2aXR5VG9rZW4pOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVRocm90dGxlcjo6cGFnZUxv
YWRBY3Rpdml0eVRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VUaHJvdHRsZXI6OnNldEFj
dGl2aXR5RmxhZyk6CisgICAgICAgICogcGFnZS9QYWdlVGhyb3R0bGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vVk5vZGVUcmFja2VyLmg6CisKIDIwMTYtMDItMjQgIEFkYW0gQmVyZ2t2aXN0ICA8
YWRhbS5iZXJna3Zpc3RAZXJpY3Nzb24uY29tPgogCiAgICAgICAgIFdlYlJUQzogQWRkIE1lZGlh
RW5kcG9pbnQgaW50ZXJmYWNlIChXZWJSVEMgYmFja2VuZCBhYnN0cmFjdGlvbikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVRocm90dGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmNwcAkocmV2aXNpb24gMTk3MDUzKQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
MTIgKzQxLDEyIEBAIFBhZ2VUaHJvdHRsZXI6OlBhZ2VUaHJvdHRsZXIoUGFnZSYgcGFnZSkKIAog
UGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gUGFnZVRocm90dGxlcjo6bWVkaWFBY3Rpdml0eVRv
a2VuKCkKIHsKLSAgICByZXR1cm4gbV9tZWRpYUFjdGl2aXR5Q291bnRlci50b2tlbjxQYWdlQWN0
aXZpdHlBc3NlcnRpb25Ub2tlblR5cGU+KCk7CisgICAgcmV0dXJuIG1fbWVkaWFBY3Rpdml0eUNv
dW50ZXIuY291bnQoKTsKIH0KIAogUGFnZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW4gUGFnZVRocm90
dGxlcjo6cGFnZUxvYWRBY3Rpdml0eVRva2VuKCkKIHsKLSAgICByZXR1cm4gbV9wYWdlTG9hZEFj
dGl2aXR5Q291bnRlci50b2tlbjxQYWdlQWN0aXZpdHlBc3NlcnRpb25Ub2tlblR5cGU+KCk7Cisg
ICAgcmV0dXJuIG1fcGFnZUxvYWRBY3Rpdml0eUNvdW50ZXIuY291bnQoKTsKIH0KIAogdm9pZCBQ
YWdlVGhyb3R0bGVyOjpzZXRBY3Rpdml0eUZsYWcoUGFnZUFjdGl2aXR5U3RhdGU6OkZsYWdzIGZs
YWcsIGJvb2wgdmFsdWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VUaHJvdHRsZXIuaAkocmV2
aXNpb24gMTk3MDUzKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlVGhyb3R0bGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDggKzM2LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBQYWdlOwogCi1lbnVtIFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuVHlwZSB7IH07Ci10eXBl
ZGVmIFJlZkNvdW50ZXI6OlRva2VuPFBhZ2VBY3Rpdml0eUFzc2VydGlvblRva2VuVHlwZT4gUGFn
ZUFjdGl2aXR5QXNzZXJ0aW9uVG9rZW47CitlbnVtIFBhZ2VBY3Rpdml0eUNvdW50ZXJUeXBlIHsg
fTsKK3R5cGVkZWYgUmVmQ291bnRlcjxQYWdlQWN0aXZpdHlDb3VudGVyVHlwZT4gUGFnZUFjdGl2
aXR5Q291bnRlcjsKK3R5cGVkZWYgUGFnZUFjdGl2aXR5Q291bnRlcjo6VG9rZW4gUGFnZUFjdGl2
aXR5QXNzZXJ0aW9uVG9rZW47CiAKIHN0cnVjdCBQYWdlQWN0aXZpdHlTdGF0ZSB7CiAgICAgZW51
bSB7CkBAIC03MSw4ICs3Miw4IEBAIHByaXZhdGU6CiAgICAgUGFnZUFjdGl2aXR5U3RhdGU6OkZs
YWdzIG1fYWN0aXZpdHlTdGF0ZSB7IFBhZ2VBY3Rpdml0eVN0YXRlOjpOb0ZsYWdzIH07CiAgICAg
SHlzdGVyZXNpc0FjdGl2aXR5IG1fdXNlcklucHV0SHlzdGVyZXNpczsKICAgICBIeXN0ZXJlc2lz
QWN0aXZpdHkgbV9hdWRpYmxlUGx1Z2luSHlzdGVyZXNpczsKLSAgICBSZWZDb3VudGVyIG1fbWVk
aWFBY3Rpdml0eUNvdW50ZXI7Ci0gICAgUmVmQ291bnRlciBtX3BhZ2VMb2FkQWN0aXZpdHlDb3Vu
dGVyOworICAgIFBhZ2VBY3Rpdml0eUNvdW50ZXIgbV9tZWRpYUFjdGl2aXR5Q291bnRlcjsKKyAg
ICBQYWdlQWN0aXZpdHlDb3VudGVyIG1fcGFnZUxvYWRBY3Rpdml0eUNvdW50ZXI7CiB9OwogCiB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WTm9kZVRyYWNrZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9WTm9kZVRyYWNrZXIuaAkocmV2aXNpb24gMTk3
MDUzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVk5vZGVUcmFja2VyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDggKzM5LDkgQEAgY2xhc3MgVk5vZGVUcmFja2VyIHsKIHB1YmxpYzoKICAg
ICB1c2luZyBQcmVzc3VyZUhhbmRsZXIgPSBzdGQ6OmZ1bmN0aW9uPHZvaWQoQ3JpdGljYWwpPjsK
IAotICAgIGVudW0gVG9rZW5UeXBlIHsgfTsKLSAgICB1c2luZyBUb2tlbiA9IFJlZkNvdW50ZXI6
OlRva2VuPFRva2VuVHlwZT47CisgICAgZW51bSBWTm9kZUNvdW50ZXJUeXBlIHsgfTsKKyAgICB1
c2luZyBWTm9kZUNvdW50ZXIgPSBSZWZDb3VudGVyPFZOb2RlQ291bnRlclR5cGU+OworICAgIHVz
aW5nIFRva2VuID0gVk5vZGVDb3VudGVyOjpUb2tlbjsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBWTm9kZVRyYWNrZXImIHNpbmdsZXRvbigpOwogCkBAIC01OSw3ICs2MCw3IEBAIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9oYXJkVk5vZGVMaW1pdCB7IDQwMCB9OwogICAgIHVuc2lnbmVk
IG1fc29mdFZOb2RlTGltaXQgeyAzMDAgfTsKICAgICBQcmVzc3VyZUhhbmRsZXIgbV9wcmVzc3Vy
ZUhhbmRsZXI7Ci0gICAgUmVmQ291bnRlciBtX3Zub2RlQ291bnRlcjsKKyAgICBWTm9kZUNvdW50
ZXIgbV92bm9kZUNvdW50ZXI7CiAgICAgVGltZXIgbV9wcmVzc3VyZVdhcm5pbmdUaW1lcjsKICAg
ICBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjp0aW1lX3BvaW50IG1fbGFzdFdhcm5pbmdUaW1l
OwogfTsKQEAgLTc0LDcgKzc1LDcgQEAgaW5saW5lIGF1dG8gVk5vZGVUcmFja2VyOjp0b2tlbigp
IC0+IFRvawogICAgIGlmICghbV9wcmVzc3VyZUhhbmRsZXIpCiAgICAgICAgIHJldHVybiBUb2tl
bigpOwogCi0gICAgVG9rZW4gdG9rZW4obV92bm9kZUNvdW50ZXIudG9rZW48VG9rZW5UeXBlPigp
KTsKKyAgICBUb2tlbiB0b2tlbihtX3Zub2RlQ291bnRlci5jb3VudCgpKTsKICAgICBjaGVja1By
ZXNzdXJlU3RhdGUoKTsKICAgICByZXR1cm4gdG9rZW47CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxOTcwNTQpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAxNi0wMi0yNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNs
b3VnaEBhcHBsZS5jb20+CisKKyAgICAgICAgU2hvdWxkIHRlbXBsYXRlIFJlZkNvdW50ZXIgaW5z
dGVhZCBvZiBSZWZDb3VudGVyOjpUb2tlbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU0NjkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTWVjaGFuaWNhbCB1cGRhdGUgcGVyIFJlZkNvdW50ZXIgaW50ZXJm
YWNlIGNoYW5nZS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NN
YW5hZ2VyLmg6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NNYW5hZ2VyOjpwcm9jZXNz
U3VwcHJlc3Npb25EaXNhYmxlZFRva2VuKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vz
c01hbmFnZXI6OnByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5oOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVy
Ojpmb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbik6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJv
dHRsZXI6OmJhY2tncm91bmRBY3Rpdml0eVRva2VuKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuaDoKKwogMjAxNi0wMi0yNCAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNs
b3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIFdLUHJlZmVyZW5jZSBmb3IgSGlkZGVuUGFn
ZURPTVRpbWVyVGhyb3R0bGluZ0F1dG9JbmNyZWFzZXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAkocmV2aXNpb24gMTk3MDUzKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsMTkgKzM0LDIzIEBACiAKIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIAotZW51bSBVc2VyT2Jz
ZXJ2YWJsZVBhZ2VUb2tlblR5cGUgeyB9OwotdHlwZWRlZiBSZWZDb3VudGVyOjpUb2tlbjxVc2Vy
T2JzZXJ2YWJsZVBhZ2VUb2tlblR5cGU+IFVzZXJPYnNlcnZhYmxlUGFnZVRva2VuOwotZW51bSBQ
cm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuVHlwZSB7IH07Ci10eXBlZGVmIFJlZkNvdW50
ZXI6OlRva2VuPFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW5UeXBlPiBQcm9jZXNzU3Vw
cHJlc3Npb25EaXNhYmxlZFRva2VuOworZW51bSBVc2VyT2JzZXJ2YWJsZVBhZ2VDb3VudGVyVHlw
ZSB7IH07Cit0eXBlZGVmIFJlZkNvdW50ZXI8VXNlck9ic2VydmFibGVQYWdlQ291bnRlclR5cGU+
IFVzZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXI7Cit0eXBlZGVmIFVzZXJPYnNlcnZhYmxlUGFnZUNv
dW50ZXI6OlRva2VuIFVzZXJPYnNlcnZhYmxlUGFnZVRva2VuOworZW51bSBQcm9jZXNzU3VwcHJl
c3Npb25EaXNhYmxlZENvdW50ZXJUeXBlIHsgfTsKK3R5cGVkZWYgUmVmQ291bnRlcjxQcm9jZXNz
U3VwcHJlc3Npb25EaXNhYmxlZENvdW50ZXJUeXBlPiBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxl
ZENvdW50ZXI7Cit0eXBlZGVmIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkQ291bnRlcjo6VG9r
ZW4gUHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRUb2tlbjsKIAogY2xhc3MgUHJvY2Vzc1Rocm90
dGxlckNsaWVudDsKIAogY2xhc3MgUHJvY2Vzc1Rocm90dGxlciA6IHByaXZhdGUgUHJvY2Vzc0Fz
c2VydGlvbkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgZW51bSBGb3JlZ3JvdW5kQWN0aXZpdHlUb2tl
blR5cGUgeyB9OwotICAgIHR5cGVkZWYgUmVmQ291bnRlcjo6VG9rZW48Rm9yZWdyb3VuZEFjdGl2
aXR5VG9rZW5UeXBlPiBGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbjsKLSAgICBlbnVtIEJhY2tncm91
bmRBY3Rpdml0eVRva2VuVHlwZSB7IH07Ci0gICAgdHlwZWRlZiBSZWZDb3VudGVyOjpUb2tlbjxC
YWNrZ3JvdW5kQWN0aXZpdHlUb2tlblR5cGU+IEJhY2tncm91bmRBY3Rpdml0eVRva2VuOworICAg
IGVudW0gRm9yZWdyb3VuZEFjdGl2aXR5Q291bnRlclR5cGUgeyB9OworICAgIHR5cGVkZWYgUmVm
Q291bnRlcjxGb3JlZ3JvdW5kQWN0aXZpdHlDb3VudGVyVHlwZT4gRm9yZWdyb3VuZEFjdGl2aXR5
Q291bnRlcjsKKyAgICB0eXBlZGVmIEZvcmVncm91bmRBY3Rpdml0eUNvdW50ZXI6OlRva2VuIEZv
cmVncm91bmRBY3Rpdml0eVRva2VuOworICAgIGVudW0gQmFja2dyb3VuZEFjdGl2aXR5Q291bnRl
clR5cGUgeyB9OworICAgIHR5cGVkZWYgUmVmQ291bnRlcjxCYWNrZ3JvdW5kQWN0aXZpdHlDb3Vu
dGVyVHlwZT4gQmFja2dyb3VuZEFjdGl2aXR5Q291bnRlcjsKKyAgICB0eXBlZGVmIEJhY2tncm91
bmRBY3Rpdml0eUNvdW50ZXI6OlRva2VuIEJhY2tncm91bmRBY3Rpdml0eVRva2VuOwogCiAgICAg
UHJvY2Vzc1Rocm90dGxlcihQcm9jZXNzVGhyb3R0bGVyQ2xpZW50Jik7CiAKQEAgLTY5LDE5ICs3
MywxOSBAQCBwcml2YXRlOgogICAgIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQmIG1fcHJvY2VzczsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8UHJvY2Vzc0FuZFVJQXNzZXJ0aW9uPiBtX2Fzc2VydGlvbjsK
ICAgICBSdW5Mb29wOjpUaW1lcjxQcm9jZXNzVGhyb3R0bGVyPiBtX3N1c3BlbmRUaW1lcjsKLSAg
ICBSZWZDb3VudGVyIG1fZm9yZWdyb3VuZENvdW50ZXI7Ci0gICAgUmVmQ291bnRlciBtX2JhY2tn
cm91bmRDb3VudGVyOworICAgIEZvcmVncm91bmRBY3Rpdml0eUNvdW50ZXIgbV9mb3JlZ3JvdW5k
Q291bnRlcjsKKyAgICBCYWNrZ3JvdW5kQWN0aXZpdHlDb3VudGVyIG1fYmFja2dyb3VuZENvdW50
ZXI7CiAgICAgaW50IG1fc3VzcGVuZE1lc3NhZ2VDb3VudDsKIH07CiAKIGlubGluZSBQcm9jZXNz
VGhyb3R0bGVyOjpGb3JlZ3JvdW5kQWN0aXZpdHlUb2tlbiBQcm9jZXNzVGhyb3R0bGVyOjpmb3Jl
Z3JvdW5kQWN0aXZpdHlUb2tlbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEZvcmVncm91bmRBY3Rp
dml0eVRva2VuKG1fZm9yZWdyb3VuZENvdW50ZXIudG9rZW48Rm9yZWdyb3VuZEFjdGl2aXR5VG9r
ZW5UeXBlPigpKTsKKyAgICByZXR1cm4gRm9yZWdyb3VuZEFjdGl2aXR5VG9rZW4obV9mb3JlZ3Jv
dW5kQ291bnRlci5jb3VudCgpKTsKIH0KIAogaW5saW5lIFByb2Nlc3NUaHJvdHRsZXI6OkJhY2tn
cm91bmRBY3Rpdml0eVRva2VuIFByb2Nlc3NUaHJvdHRsZXI6OmJhY2tncm91bmRBY3Rpdml0eVRv
a2VuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQmFja2dyb3VuZEFjdGl2aXR5VG9rZW4obV9iYWNr
Z3JvdW5kQ291bnRlci50b2tlbjxCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlblR5cGU+KCkpOworICAg
IHJldHVybiBCYWNrZ3JvdW5kQWN0aXZpdHlUb2tlbihtX2JhY2tncm91bmRDb3VudGVyLmNvdW50
KCkpOwogfQogICAgIAogfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmgJKHJldmlzaW9uIDE5NzA1MykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsMTIgKzMzOCwxMiBAQCBwdWJs
aWM6CiAKICAgICBVc2VyT2JzZXJ2YWJsZVBhZ2VUb2tlbiB1c2VyT2JzZXJ2YWJsZVBhZ2VDb3Vu
dCgpCiAgICAgewotICAgICAgICByZXR1cm4gbV91c2VyT2JzZXJ2YWJsZVBhZ2VDb3VudGVyLnRv
a2VuPFVzZXJPYnNlcnZhYmxlUGFnZVRva2VuVHlwZT4oKTsKKyAgICAgICAgcmV0dXJuIG1fdXNl
ck9ic2VydmFibGVQYWdlQ291bnRlci5jb3VudCgpOwogICAgIH0KIAogICAgIFByb2Nlc3NTdXBw
cmVzc2lvbkRpc2FibGVkVG9rZW4gcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291
bnQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRG
b3JQYWdlQ291bnRlci50b2tlbjxQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuVHlwZT4o
KTsKKyAgICAgICAgcmV0dXJuIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291
bnRlci5jb3VudCgpOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBNb3ZlIHRoZXNlIHRvIEFQSTo6
V2Vic2l0ZURhdGFTdG9yZS4KQEAgLTUwNyw4ICs1MDcsOCBAQCBwcml2YXRlOgogCiAgICAgYm9v
bCBtX21lbW9yeUNhY2hlRGlzYWJsZWQ7CiAKLSAgICBSZWZDb3VudGVyIG1fdXNlck9ic2VydmFi
bGVQYWdlQ291bnRlcjsKLSAgICBSZWZDb3VudGVyIG1fcHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJs
ZWRGb3JQYWdlQ291bnRlcjsKKyAgICBVc2VyT2JzZXJ2YWJsZVBhZ2VDb3VudGVyIG1fdXNlck9i
c2VydmFibGVQYWdlQ291bnRlcjsKKyAgICBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZENvdW50
ZXIgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZEZvclBhZ2VDb3VudGVyOwogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgUmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IG1fYnVuZGxl
UGFyYW1ldGVyczsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NNYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAkocmV2aXNpb24gMTk3MDUzKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc01hbmFnZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsMTQgKzgyLDE0IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJlZlB0
cjxQbHVnaW5Qcm9jZXNzUHJveHk+PiBtX3BsdWdpblByb2Nlc3NlczsKIAogI2lmIFBMQVRGT1JN
KENPQ09BKQotICAgIFJlZkNvdW50ZXIgbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZEZvclBh
Z2VDb3VudGVyOworICAgIFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkQ291bnRlciBtX3Byb2Nl
c3NTdXBwcmVzc2lvbkRpc2FibGVkRm9yUGFnZUNvdW50ZXI7CiAjZW5kaWYKIH07CiAKICNpZiBQ
TEFURk9STShDT0NPQSkKIGlubGluZSBQcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuIFBs
dWdpblByb2Nlc3NNYW5hZ2VyOjpwcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZFRva2VuKCkKIHsK
LSAgICByZXR1cm4gbV9wcm9jZXNzU3VwcHJlc3Npb25EaXNhYmxlZEZvclBhZ2VDb3VudGVyLnRv
a2VuPFByb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkVG9rZW5UeXBlPigpOworICAgIHJldHVybiBt
X3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2FibGVkRm9yUGFnZUNvdW50ZXIuY291bnQoKTsKIH0KIAog
aW5saW5lIGJvb2wgUGx1Z2luUHJvY2Vzc01hbmFnZXI6OnByb2Nlc3NTdXBwcmVzc2lvbkRpc2Fi
bGVkKCkgY29uc3QKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE5NzEyNykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE2LTAyLTI1ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJh
cnJhY2xvdWdoQGFwcGxlLmNvbT4KKworICAgICAgICBTaG91bGQgdGVtcGxhdGUgUmVmQ291bnRl
ciBpbnN0ZWFkIG9mIFJlZkNvdW50ZXI6OlRva2VuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ2OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBNZWNoYW5pY2FsIHVwZGF0ZSBwZXIgUmVmQ291bnRlciBp
bnRlcmZhY2UgY2hhbmdlLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUmVm
Q291bnRlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAxNi0wMi0y
NSAgU2thY2hrb3YgQWxla3NhbmRyICA8Z3NrYWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkOiBBZGQgQWxla3NhbmRyIFNrYWNoa292IGFzIGEgY29tbWl0ZXIKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1JlZkNvdW50ZXIuY3BwCShyZXZpc2lvbiAx
OTcwNTMpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9SZWZDb3VudGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQsOSBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CiBzdGF0aWMgY29uc3QgaW50IENhbGxiYWNrRXhwZWN0ZWQgPSAweEMwRkZFRTsKIHN0YXRpYyBj
b25zdCBpbnQgQ2FsbGJhY2tOb3RFeHBlY3RlZCA9IDB4REVDQUY7CiAKLWVudW0gQ291bnRlclR5
cGUgeyB9OwotdHlwZWRlZiBSZWZDb3VudGVyOjpUb2tlbjxDb3VudGVyVHlwZT4gVG9rZW5UeXBl
OworZW51bSBUZXN0Q291bnRlclR5cGUgeyB9OwordHlwZWRlZiBSZWZDb3VudGVyPFRlc3RDb3Vu
dGVyVHlwZT4gVGVzdENvdW50ZXI7Cit0eXBlZGVmIFRlc3RDb3VudGVyOjpUb2tlbiBUb2tlblR5
cGU7CiAKIFRFU1QoV1RGLCBSZWZDb3VudGVyKQogewpAQCAtNzcsOCArNzgsOCBAQCBURVNUKFdU
RiwgUmVmQ291bnRlcikKIAogICAgIHsKICAgICAgICAgLy8gVGVzdGluZyAoMWEpIC0gQ29uc3Ry
dWN0aW9uIHdpdGggYSBjYWxsYmFjay4KLSAgICAgICAgUmVmQ291bnRlciogY291bnRlclB0ciA9
IG51bGxwdHI7Ci0gICAgICAgIFJlZkNvdW50ZXIgY291bnRlcihbJl0oYm9vbCB2YWx1ZSkgewor
ICAgICAgICBUZXN0Q291bnRlciogY291bnRlclB0ciA9IG51bGxwdHI7CisgICAgICAgIFRlc3RD
b3VudGVyIGNvdW50ZXIoWyZdKGJvb2wgdmFsdWUpIHsKICAgICAgICAgICAgIC8vIENoZWNrIHRo
YXQgdGhlIGNhbGxiYWNrIGlzIGNhbGxlZCBhdCB0aGUgZXhwZWN0ZWQgdGltZXMsIGFuZCB0aGUg
Y29ycmVjdCBudW1iZXIgb2YgdGltZXMuCiAgICAgICAgICAgICBFWFBFQ1RfRVEoY2FsbGJhY2tW
YWx1ZSwgQ2FsbGJhY2tFeHBlY3RlZCk7CiAgICAgICAgICAgICAvLyBWYWx1ZSBwcm92aWRlZCBz
aG91bGQgYmUgZXF1YWwgdG8gdGhlIGNvdW50ZXIgdmFsdWUuCkBAIC05Miw3ICs5Myw3IEBAIFRF
U1QoV1RGLCBSZWZDb3VudGVyKQogCiAgICAgICAgIC8vIFRlc3RpbmcgKDNhKSAtIHJlZiB3aXRo
IGNhbGxiYWNrIGZyb20gMCAtPiAxLgogICAgICAgICBjYWxsYmFja1ZhbHVlID0gQ2FsbGJhY2tF
eHBlY3RlZDsKLSAgICAgICAgVG9rZW5UeXBlIGluY1RvMShjb3VudGVyLnRva2VuPENvdW50ZXJU
eXBlPigpKTsKKyAgICAgICAgVG9rZW5UeXBlIGluY1RvMShjb3VudGVyLmNvdW50KCkpOwogICAg
ICAgICAvLyBUZXN0aW5nICg0YikgJiAoNGMpIC0gdmFsdWVzIHdpdGhpbiAmIGFmdGVyIGNhbGxi
YWNrLgogICAgICAgICBFWFBFQ1RfRVEodHJ1ZSwgY2FsbGJhY2tWYWx1ZSk7CiAgICAgICAgIEVY
UEVDVF9FUSgxLCBzdGF0aWNfY2FzdDxpbnQ+KGNvdW50ZXIudmFsdWUoKSkpOwpAQCAtMTA5LDcg
KzExMCw3IEBAIFRFU1QoV1RGLCBSZWZDb3VudGVyKQogCiAgICAgICAgIHsKICAgICAgICAgICAg
IC8vIFRlc3RpbmcgKDNqKSAtIHJlZiB1c2luZyBhIFJlZiByYXRoZXIgdGhhbiBhIFJlZlB0ci4K
LSAgICAgICAgICAgIFRva2VuVHlwZSBpbmNUbzJBZ2Fpbihjb3VudGVyLnRva2VuPENvdW50ZXJU
eXBlPigpKTsKKyAgICAgICAgICAgIFRva2VuVHlwZSBpbmNUbzJBZ2Fpbihjb3VudGVyLmNvdW50
KCkpOwogICAgICAgICAgICAgLy8gVGVzdGluZyAoNGIpICYgKDRjKSAtIHZhbHVlcyB3aXRoaW4g
JiBhZnRlciBjYWxsYmFjay4KICAgICAgICAgICAgIEVYUEVDVF9FUSgyLCBzdGF0aWNfY2FzdDxp
bnQ+KGNvdW50ZXIudmFsdWUoKSkpOwogICAgICAgICAgICAgLy8gVGVzdGluZyAoM2spIC0gZGVy
ZWYgdXNpbmcgYSBSZWYgcmF0aGVyIHRoYW4gYSBSZWZQdHIuCkBAIC0xMjQsOSArMTI1LDkgQEAg
VEVTVChXVEYsIFJlZkNvdW50ZXIpCiAgICAgICAgIEVYUEVDVF9FUSgwLCBjYWxsYmFja1ZhbHVl
KTsKICAgICAgICAgRVhQRUNUX0VRKDAsIHN0YXRpY19jYXN0PGludD4oY291bnRlci52YWx1ZSgp
KSk7CiAKLSAgICAgICAgLy8gVGVzdGluZyAoMmEpIC0gRGVzdHJ1Y3Rpb24gd2hlcmUgdGhlIFJl
ZkNvdW50ZXI6OkNvdW50IGhhcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudC4KKyAgICAgICAg
Ly8gVGVzdGluZyAoMmEpIC0gRGVzdHJ1Y3Rpb24gd2hlcmUgdGhlIFRlc3RDb3VudGVyOjpDb3Vu
dCBoYXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQuCiAgICAgICAgIGNhbGxiYWNrVmFsdWUg
PSBDYWxsYmFja0V4cGVjdGVkOwotICAgICAgICBpbmNUbzFBZ2FpbiA9IGNvdW50ZXIudG9rZW48
Q291bnRlclR5cGU+KCk7CisgICAgICAgIGluY1RvMUFnYWluID0gY291bnRlci5jb3VudCgpOwog
ICAgICAgICBFWFBFQ1RfRVEoMSwgY2FsbGJhY2tWYWx1ZSk7CiAgICAgICAgIEVYUEVDVF9FUSgx
LCBzdGF0aWNfY2FzdDxpbnQ+KGNvdW50ZXIudmFsdWUoKSkpOwogICAgICAgICBjYWxsYmFja1Zh
bHVlID0gQ2FsbGJhY2tOb3RFeHBlY3RlZDsKQEAgLTE0MCwxMSArMTQxLDExIEBAIFRFU1QoV1RG
LCBSZWZDb3VudGVyKQogICAgIGluY1RvMkFnYWluID0gbnVsbHB0cjsKIAogICAgIC8vIFRlc3Rp
bmcgKDFiKSAtIENvbnN0cnVjdGlvbiB3aXRob3V0IGEgY2FsbGJhY2suCi0gICAgUmVmQ291bnRl
ciBjb3VudGVyOworICAgIFRlc3RDb3VudGVyIGNvdW50ZXI7CiAgICAgLy8gVGVzdGluZyAoNGEp
IC0gYWZ0ZXIgY29uc3RydWN0aW9uIHZhbHVlKCkgaXMgMC4KICAgICBFWFBFQ1RfRVEoMCwgc3Rh
dGljX2Nhc3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKICAgICAvLyBUZXN0aW5nICgzaCkgLSBy
ZWYgd2l0aG91dCBjYWxsYmFjawotICAgIFRva2VuVHlwZSBpbmNUbzEoY291bnRlci50b2tlbjxD
b3VudGVyVHlwZT4oKSk7CisgICAgVG9rZW5UeXBlIGluY1RvMShjb3VudGVyLmNvdW50KCkpOwog
ICAgIC8vIFRlc3RpbmcgKDRjKSAtIHZhbHVlIGFzIHJlYWQgYWZ0ZXIgdGhlIHJlZi4KICAgICBF
WFBFQ1RfRVEoMSwgc3RhdGljX2Nhc3Q8aW50Pihjb3VudGVyLnZhbHVlKCkpKTsKICAgICAvLyBU
ZXN0aW5nICgzaSkgLSBkZXJlZiB3aXRob3V0IGNhbGxiYWNrCg==
</data>
<flag name="review"
          id="297012"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>