<?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>206443</bug_id>
          
          <creation_ts>2020-01-17 14:07:52 -0800</creation_ts>
          <short_desc>[bmalloc] Define alias for std::unique_lock and std::lock_guard for better readability</short_desc>
          <delta_ts>2020-01-17 16:44:19 -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>bmalloc</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=206451</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Basuke Suzuki">basuke</reporter>
          <assigned_to name="Basuke Suzuki">basuke</assigned_to>
          <cc>basuke</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1608197</commentid>
    <comment_count>0</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-17 14:07:52 -0800</bug_when>
    <thetext>std::unique_lock and std::lock_guard are long name and a bit harder to distinguish them each other. Define simple type name for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608200</commentid>
    <comment_count>1</comment_count>
      <attachid>388089</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-17 14:14:33 -0800</bug_when>
    <thetext>Created attachment 388089
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608214</commentid>
    <comment_count>2</comment_count>
      <attachid>388089</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-17 14:50:07 -0800</bug_when>
    <thetext>Comment on attachment 388089
PATCH

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

Loks good overall.

&gt; Source/bmalloc/bmalloc/Mutex.h:41
&gt; +using SimpleLock = std::lock_guard&lt;Mutex&gt;;

Rename it to UniqueLockHolder and LockHolder. The name “Lock” means the lock itself instead of RAII styled locking class.
And consider using scoped_lock instead of lock_guard. Maybe we can use it now? (C++17)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608234</commentid>
    <comment_count>3</comment_count>
      <attachid>388096</attachid>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-17 15:27:41 -0800</bug_when>
    <thetext>Created attachment 388096
PATCH</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608238</commentid>
    <comment_count>4</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-17 15:32:35 -0800</bug_when>
    <thetext>A bug for scoped_lock was filed. https://bugs.webkit.org/show_bug.cgi?id=206451</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608251</commentid>
    <comment_count>5</comment_count>
      <attachid>388096</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-01-17 15:42:01 -0800</bug_when>
    <thetext>Comment on attachment 388096
PATCH

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608296</commentid>
    <comment_count>6</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2020-01-17 16:39:34 -0800</bug_when>
    <thetext>Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608304</commentid>
    <comment_count>7</comment_count>
      <attachid>388096</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-17 16:43:05 -0800</bug_when>
    <thetext>Comment on attachment 388096
PATCH

Clearing flags on attachment: 388096

Committed r254781: &lt;https://trac.webkit.org/changeset/254781&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608305</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-17 16:43:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1608307</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-17 16:44:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/58700706&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388089</attachid>
            <date>2020-01-17 14:14:33 -0800</date>
            <delta_ts>2020-01-17 15:27:41 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>bug-206044.diff</filename>
            <type>text/plain</type>
            <size>73056</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCAxYWU2NmY3YzIwNC4uYzQ4Y2MxZTBiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNjggQEAKKzIwMjAtMDEtMTcgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNv
bnkuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBEZWZpbmUgYWxpYXMgZm9yIHN0ZDo6dW5pcXVl
X2xvY2sgYW5kIHN0ZDo6bG9ja19ndWFyZCBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0NDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJtYWxsb2MvQWxsSXNv
SGVhcHMuY3BwOgorICAgICAgICAoYm1hbGxvYzo6QWxsSXNvSGVhcHM6OkFsbElzb0hlYXBzKToK
KyAgICAgICAgKGJtYWxsb2M6OkFsbElzb0hlYXBzOjphZGQpOgorICAgICAgICAoYm1hbGxvYzo6
QWxsSXNvSGVhcHM6OmhlYWQpOgorICAgICAgICAqIGJtYWxsb2MvQWxsSXNvSGVhcHMuaDoKKyAg
ICAgICAgKiBibWFsbG9jL0FsbG9jYXRvci5jcHA6CisgICAgICAgIChibWFsbG9jOjpBbGxvY2F0
b3I6OnJlYWxsb2NhdGVJbXBsKToKKyAgICAgICAgKGJtYWxsb2M6OkFsbG9jYXRvcjo6cmVmaWxs
QWxsb2NhdG9yU2xvd0Nhc2UpOgorICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjphbGxvY2F0
ZUxhcmdlKToKKyAgICAgICAgKiBibWFsbG9jL0NyeXB0b1JhbmRvbS5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpBUkM0UmFuZG9tTnVtYmVyR2VuZXJhdG9yOjpBUkM0UmFuZG9tTnVtYmVyR2VuZXJh
dG9yKToKKyAgICAgICAgKGJtYWxsb2M6OkFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3I6OnJhbmRv
bVZhbHVlcyk6CisgICAgICAgICogYm1hbGxvYy9EZWFsbG9jYXRvci5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpEZWFsbG9jYXRvcjo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxv
Y2F0b3I6OnByb2Nlc3NPYmplY3RMb2cpOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0b3I6
OmRlYWxsb2NhdGVTbG93Q2FzZSk6CisgICAgICAgICogYm1hbGxvYy9EZWFsbG9jYXRvci5oOgor
ICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0b3I6OmxpbmVDYWNoZSk6CisgICAgICAgICogYm1h
bGxvYy9EZWJ1Z0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6RGVidWdIZWFwOjpEZWJ1Z0hl
YXApOgorICAgICAgICAoYm1hbGxvYzo6RGVidWdIZWFwOjptZW1hbGlnbkxhcmdlKToKKyAgICAg
ICAgKGJtYWxsb2M6OkRlYnVnSGVhcDo6ZnJlZUxhcmdlKToKKyAgICAgICAgKiBibWFsbG9jL0Rl
YnVnSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmg6CisgICAgICAg
ICogYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpE
ZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmRpZEJlY29tZSk6CisgICAgICAgIChibWFsbG9jOjpE
ZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmhhbmRsZURlZmVycmFsKToKKyAgICAgICAgKiBibWFs
bG9jL0Vudmlyb25tZW50LmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkVudmlyb25tZW50OjpFbnZp
cm9ubWVudCk6CisgICAgICAgICogYm1hbGxvYy9FbnZpcm9ubWVudC5oOgorICAgICAgICAqIGJt
YWxsb2MvR2lnYWNhZ2UuY3BwOgorICAgICAgICAoYm1hbGxvYzo6UHJpbWl0aXZlRGlzYWJsZUNh
bGxiYWNrczo6UHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyk6CisgICAgICAgIChHaWdhY2FnZTo6
ZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKToKKyAgICAgICAgKEdpZ2FjYWdlOjphZGRQcmltaXRp
dmVEaXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAoR2lnYWNhZ2U6OnJlbW92ZVByaW1pdGl2ZURp
c2FibGVDYWxsYmFjayk6CisgICAgICAgICogYm1hbGxvYy9IZWFwLmNwcDoKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OkhlYXApOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZnJlZWFibGVNZW1v
cnkpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUpOgor
ICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OnNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNjYXZlbmdl
VG9IaWdoV2F0ZXJtYXJrKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVMaW5l
Q2FjaGUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVTbWFsbENodW5rKToKKyAg
ICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKToKKyAgICAgICAgKGJtYWxs
b2M6OkhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6
YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU1ldGFkYXRhKToKKyAgICAgICAgKGJtYWxsb2M6Okhl
YXA6OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6
SGVhcDo6c3BsaXRBbmRBbGxvY2F0ZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0
ZUxhcmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmlzTGFyZ2UpOgorICAgICAgICAoYm1h
bGxvYzo6SGVhcDo6bGFyZ2VTaXplKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNocmlua0xh
cmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlYWxsb2NhdGVMYXJnZSk6CisgICAgICAg
IChibWFsbG9jOjpIZWFwOjpleHRlcm5hbENvbW1pdCk6CisgICAgICAgIChibWFsbG9jOjpIZWFw
OjpleHRlcm5hbERlY29tbWl0KToKKyAgICAgICAgKiBibWFsbG9jL0hlYXAuaDoKKyAgICAgICAg
KGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzKToKKyAgICAgICAgKGJtYWxs
b2M6OkhlYXA6OmRlcmVmU21hbGxMaW5lKToKKyAgICAgICAgKiBibWFsbG9jL0hlYXBDb25zdGFu
dHMuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SGVhcENvbnN0YW50czo6SGVhcENvbnN0YW50cyk6
CisgICAgICAgICogYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmg6CisgICAgICAgICogYm1hbGxvYy9J
c29BbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29BbGxvY2F0b3I8Q29u
ZmlnPjo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0FsbG9jYXRvcjxDb25m
aWc+OjpzY2F2ZW5nZSk6CisgICAgICAgICogYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklubGluZXMu
aDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb0RlYWxsb2NhdG9yPENvbmZpZz46OmRlYWxsb2NhdGUp
OgorICAgICAgICAoYm1hbGxvYzo6SXNvRGVhbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UpOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvRGlyZWN0b3J5Lmg6CisgICAgICAgICogYm1hbGxvYy9Jc29E
aXJlY3RvcnlJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OnRh
a2VGaXJzdEVsaWdpYmxlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6ZGlk
QmVjb21lKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6ZGlkRGVjb21taXQp
OgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVBhZ2UpOgorICAg
ICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZSk6CisgICAgICAgIChibWFs
bG9jOjpwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKToKKyAgICAgICAg
KGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UpOgorICAgICAg
ICAqIGJtYWxsb2MvSXNvSGVhcEltcGwuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbXBs
SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6dGFrZUZp
cnN0RWxpZ2libGUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlk
QmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcElt
cGw8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29u
ZmlnPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmspOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVh
cEltcGw8Q29uZmlnPjo6bnVtTGl2ZU9iamVjdHMpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVh
cEltcGw8Q29uZmlnPjo6bnVtQ29tbWl0dGVkUGFnZXMpOgorICAgICAgICAoYm1hbGxvYzo6SXNv
SGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaERpcmVjdG9yeSk6CisgICAgICAgIChibWFsbG9jOjpJ
c29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoQ29tbWl0dGVkUGFnZSk6CisgICAgICAgIChibWFs
bG9jOjpJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdCk6CisgICAgICAgIChi
bWFsbG9jOjpJc29IZWFwSW1wbDxDb25maWc+OjphbGxvY2F0ZUZyb21TaGFyZWQpOgorICAgICAg
ICAqIGJtYWxsb2MvSXNvUGFnZS5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZUlubGluZXMu
aDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1BhZ2U8Q29uZmlnPjo6ZnJlZSk6CisgICAgICAgIChi
bWFsbG9jOjpJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGluZyk6CisgICAgICAgIChibWFs
bG9jOjpJc29QYWdlPENvbmZpZz46OnN0b3BBbGxvY2F0aW5nKToKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QpOgorICAgICAgICAqIGJtYWxsb2Mv
SXNvU2hhcmVkSGVhcC5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6SXNvU2hh
cmVkSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oOgorICAg
ICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVOZXcpOgorICAgICAgICAoYm1h
bGxvYzo6SXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVTbG93KToKKyAgICAgICAgKiBibWFsbG9jL0lz
b1NoYXJlZFBhZ2UuaDoKKyAgICAgICAgKiBibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmg6
CisgICAgICAgIChibWFsbG9jOjpJc29TaGFyZWRQYWdlOjpmcmVlKToKKyAgICAgICAgKGJtYWxs
b2M6Oklzb1NoYXJlZFBhZ2U6OnN0YXJ0QWxsb2NhdGluZyk6CisgICAgICAgIChibWFsbG9jOjpJ
c29TaGFyZWRQYWdlOjpzdG9wQWxsb2NhdGluZyk6CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNE
ZWFsbG9jYXRvckVudHJ5Lmg6CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVu
dHJ5SW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxD
b25maWc+OjpJc29UTFNEZWFsbG9jYXRvckVudHJ5KToKKyAgICAgICAgKiBibWFsbG9jL0lzb1RM
U0lubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1RMUzo6ZW5zdXJlSGVhcCk6CisgICAg
ICAgICogYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExT
TGF5b3V0OjpJc29UTFNMYXlvdXQpOgorICAgICAgICAoYm1hbGxvYzo6SXNvVExTTGF5b3V0Ojph
ZGQpOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTTGF5b3V0Lmg6CisgICAgICAgICogYm1hbGxv
Yy9NdXRleC5oOgorICAgICAgICAoYm1hbGxvYzo6c2xlZXApOgorICAgICAgICAoYm1hbGxvYzo6
d2FpdFVudGlsRmFsc2UpOgorICAgICAgICAqIGJtYWxsb2MvT2JqZWN0VHlwZS5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpvYmplY3RUeXBlKToKKyAgICAgICAgKiBibWFsbG9jL1BlclByb2Nlc3Mu
Y3BwOgorICAgICAgICAoYm1hbGxvYzo6Z2V0UGVyUHJvY2Vzc0RhdGEpOgorICAgICAgICAqIGJt
YWxsb2MvUGVyUHJvY2Vzcy5oOgorICAgICAgICAoYm1hbGxvYzo6UGVyUHJvY2Vzczo6Z2V0U2xv
d0Nhc2UpOgorICAgICAgICAqIGJtYWxsb2MvU2NhdmVuZ2VyLmNwcDoKKyAgICAgICAgKGJtYWxs
b2M6OlNjYXZlbmdlcjo6U2NhdmVuZ2VyKToKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6
cnVuKToKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6cnVuU29vbik6CisgICAgICAgIChi
bWFsbG9jOjpTY2F2ZW5nZXI6OnNjaGVkdWxlSWZVbmRlck1lbW9yeVByZXNzdXJlKToKKyAgICAg
ICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6c2NoZWR1bGUpOgorICAgICAgICAoYm1hbGxvYzo6U2Nh
dmVuZ2VyOjp0aW1lU2luY2VMYXN0RnVsbFNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OlNj
YXZlbmdlcjo6dGltZVNpbmNlTGFzdFBhcnRpYWxTY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9j
OjpTY2F2ZW5nZXI6OnNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6cGFy
dGlhbFNjYXZlbmdlKToKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6ZnJlZWFibGVNZW1v
cnkpOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjp0aHJlYWRSdW5Mb29wKToKKyAgICAg
ICAgKiBibWFsbG9jL1NjYXZlbmdlci5oOgorICAgICAgICAqIGJtYWxsb2MvU21hbGxMaW5lLmg6
CisgICAgICAgIChibWFsbG9jOjpTbWFsbExpbmU6OnJlZkNvdW50KToKKyAgICAgICAgKGJtYWxs
b2M6OlNtYWxsTGluZTo6cmVmKToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsTGluZTo6ZGVyZWYp
OgorICAgICAgICAqIGJtYWxsb2MvU21hbGxQYWdlLmg6CisgICAgICAgIChibWFsbG9jOjpTbWFs
bFBhZ2U6OnJlZkNvdW50KToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsUGFnZTo6aGFzRnJlZUxp
bmVzIGNvbnN0KToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsUGFnZTo6c2V0SGFzRnJlZUxpbmVz
KToKKyAgICAgICAgKGJtYWxsb2M6OlNtYWxsUGFnZTo6cmVmKToKKyAgICAgICAgKGJtYWxsb2M6
OlNtYWxsUGFnZTo6ZGVyZWYpOgorICAgICAgICAqIGJtYWxsb2MvU3RhdGljUGVyUHJvY2Vzcy5o
OgorICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OlZNSGVh
cDo6Vk1IZWFwKToKKyAgICAgICAgKiBibWFsbG9jL1ZNSGVhcC5oOgorICAgICAgICAqIGJtYWxs
b2MvWm9uZS5jcHA6CisgICAgICAgIChibWFsbG9jOjpab25lOjpab25lKToKKyAgICAgICAgKiBi
bWFsbG9jL1pvbmUuaDoKKyAgICAgICAgKiBibWFsbG9jL2JtYWxsb2MuY3BwOgorICAgICAgICAo
Ym1hbGxvYzo6YXBpOjp0cnlMYXJnZVplcm9lZE1lbWFsaWduVmlydHVhbCk6CisgICAgICAgIChi
bWFsbG9jOjphcGk6OmZyZWVMYXJnZVZpcnR1YWwpOgorICAgICAgICAoYm1hbGxvYzo6YXBpOjpz
ZXRTY2F2ZW5nZXJUaHJlYWRRT1NDbGFzcyk6CisKIDIwMjAtMDEtMTcgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbYm1hbGxvY10gRml4IElzb0hlYXBJbXBs
J3MgYXNzZXJ0aW9uIGludHJvZHVjZWQgaW4gcjI1NDcwOApkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9BbGxJc29IZWFwcy5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Fs
bElzb0hlYXBzLmNwcAppbmRleCBjYTQyMGU1Njc1Mi4uMGZmMWZjYWFhMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsSXNvSGVhcHMuY3BwCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvQWxsSXNvSGVhcHMuY3BwCkBAIC0yOSwyMCArMjksMjAgQEAgbmFtZXNwYWNl
IGJtYWxsb2MgewogCiBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoQWxsSXNvSGVh
cHMpOwogCi1BbGxJc29IZWFwczo6QWxsSXNvSGVhcHMoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYpCitBbGxJc29IZWFwczo6QWxsSXNvSGVhcHMoY29uc3QgU2ltcGxlTG9jayYpCiB7CiB9
CiAKIHZvaWQgQWxsSXNvSGVhcHM6OmFkZChJc29IZWFwSW1wbEJhc2UqIGhlYXApCiB7Ci0gICAg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIobXV0ZXgoKSk7CisgICAgU2ltcGxlTG9jayBs
b2NrZXIobXV0ZXgoKSk7CiAgICAgaGVhcC0+bV9uZXh0ID0gbV9oZWFkOwogICAgIG1faGVhZCA9
IGhlYXA7CiB9CiAKIElzb0hlYXBJbXBsQmFzZSogQWxsSXNvSGVhcHM6OmhlYWQoKQogewotICAg
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKG11dGV4KCkpOworICAgIFNpbXBsZUxvY2sg
bG9ja2VyKG11dGV4KCkpOwogICAgIHJldHVybiBtX2hlYWQ7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsSXNvSGVhcHMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvQWxsSXNvSGVhcHMuaAppbmRleCA2ZmI5YzA2ZDI4NC4uYjExNzBmNGU3NjkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsSXNvSGVhcHMuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0FsbElzb0hlYXBzLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIGJt
YWxsb2MgewogCiBjbGFzcyBCRVhQT1JUIEFsbElzb0hlYXBzIDogcHVibGljIFN0YXRpY1BlclBy
b2Nlc3M8QWxsSXNvSGVhcHM+IHsKIHB1YmxpYzoKLSAgICBBbGxJc29IZWFwcyhjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgQWxsSXNvSGVhcHMoY29uc3QgU2ltcGxlTG9jayYp
OwogICAgIAogICAgIHZvaWQgYWRkKElzb0hlYXBJbXBsQmFzZSopOwogICAgIElzb0hlYXBJbXBs
QmFzZSogaGVhZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0
b3IuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxvY2F0b3IuY3BwCmluZGV4IDBjZGRk
NjllZWU4Li44YWFlNDM3OTYyOSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9B
bGxvY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcApA
QCAtNzYsNyArNzYsNyBAQCB2b2lkKiBBbGxvY2F0b3I6OnJlYWxsb2NhdGVJbXBsKHZvaWQqIG9i
amVjdCwgc2l6ZV90IG5ld1NpemUsIEZhaWx1cmVBY3Rpb24gYWN0aQogICAgICAgICBicmVhazsK
ICAgICB9CiAgICAgY2FzZSBPYmplY3RUeXBlOjpMYXJnZTogewotICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPE11dGV4PiBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICBMb2NrIGxvY2soSGVh
cDo6bXV0ZXgoKSk7CiAgICAgICAgIG9sZFNpemUgPSBtX2hlYXAubGFyZ2VTaXplKGxvY2ssIG9i
amVjdCk7CiAKICAgICAgICAgaWYgKG5ld1NpemUgPCBvbGRTaXplICYmIG5ld1NpemUgPiBzbWFs
bE1heCkgewpAQCAtMTIyLDcgKzEyMiw3IEBAIEJOT19JTkxJTkUgdm9pZCBBbGxvY2F0b3I6OnJl
ZmlsbEFsbG9jYXRvclNsb3dDYXNlKEJ1bXBBbGxvY2F0b3ImIGFsbG9jYXRvciwgc2l6CiB7CiAg
ICAgQnVtcFJhbmdlQ2FjaGUmIGJ1bXBSYW5nZUNhY2hlID0gbV9idW1wUmFuZ2VDYWNoZXNbc2l6
ZUNsYXNzXTsKIAotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgo
KSk7CisgICAgTG9jayBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgIG1fZGVhbGxvY2F0b3IucHJv
Y2Vzc09iamVjdExvZyhsb2NrKTsKICAgICBtX2hlYXAuYWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXMo
bG9jaywgc2l6ZUNsYXNzLCBhbGxvY2F0b3IsIGJ1bXBSYW5nZUNhY2hlLCBtX2RlYWxsb2NhdG9y
LmxpbmVDYWNoZShsb2NrKSwgYWN0aW9uKTsKIH0KQEAgLTEzNyw3ICsxMzcsNyBAQCBCSU5MSU5F
IHZvaWQgQWxsb2NhdG9yOjpyZWZpbGxBbGxvY2F0b3IoQnVtcEFsbG9jYXRvciYgYWxsb2NhdG9y
LCBzaXplX3Qgc2l6ZUNsYQogCiBCTk9fSU5MSU5FIHZvaWQqIEFsbG9jYXRvcjo6YWxsb2NhdGVM
YXJnZShzaXplX3Qgc2l6ZSwgRmFpbHVyZUFjdGlvbiBhY3Rpb24pCiB7Ci0gICAgc3RkOjp1bmlx
dWVfbG9jazxNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKKyAgICBMb2NrIGxvY2soSGVhcDo6
bXV0ZXgoKSk7CiAgICAgcmV0dXJuIG1faGVhcC5hbGxvY2F0ZUxhcmdlKGxvY2ssIGFsaWdubWVu
dCwgc2l6ZSwgYWN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9DcnlwdG9SYW5kb20uY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9DcnlwdG9SYW5kb20u
Y3BwCmluZGV4IDkxYzM1ZmMwODhjLi40ZDQ1ZjAwMjYyMCAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9DcnlwdG9SYW5kb20uY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvQ3J5cHRvUmFuZG9tLmNwcApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAKIGNsYXNzIEFS
QzRSYW5kb21OdW1iZXJHZW5lcmF0b3IgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxBUkM0UmFu
ZG9tTnVtYmVyR2VuZXJhdG9yPiB7CiBwdWJsaWM6Ci0gICAgQVJDNFJhbmRvbU51bWJlckdlbmVy
YXRvcihjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgQVJDNFJhbmRvbU51bWJl
ckdlbmVyYXRvcihjb25zdCBTaW1wbGVMb2NrJik7CiAKICAgICB1aW50MzJfdCByYW5kb21OdW1i
ZXIoKTsKICAgICB2b2lkIHJhbmRvbVZhbHVlcyh2b2lkKiBidWZmZXIsIHNpemVfdCBsZW5ndGgp
OwpAQCAtODYsNyArODYsNyBAQCBBUkM0U3RyZWFtOjpBUkM0U3RyZWFtKCkKICAgICBqID0gMDsK
IH0KIAotQVJDNFJhbmRvbU51bWJlckdlbmVyYXRvcjo6QVJDNFJhbmRvbU51bWJlckdlbmVyYXRv
cihjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0FSQzRSYW5kb21OdW1iZXJHZW5lcmF0
b3I6OkFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3IoY29uc3QgU2ltcGxlTG9jayYpCiAgICAgOiBt
X2NvdW50KDApCiB7CiB9CkBAIC0xNjQsNyArMTY0LDcgQEAgdWludDhfdCBBUkM0UmFuZG9tTnVt
YmVyR2VuZXJhdG9yOjpnZXRCeXRlKCkKIAogdm9pZCBBUkM0UmFuZG9tTnVtYmVyR2VuZXJhdG9y
OjpyYW5kb21WYWx1ZXModm9pZCogYnVmZmVyLCBzaXplX3QgbGVuZ3RoKQogewotICAgIHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4gbG9jayhtdXRleCgpKTsKKyAgICBTaW1wbGVMb2NrIGxvY2sobXV0
ZXgoKSk7CiAKICAgICB1bnNpZ25lZCBjaGFyKiByZXN1bHQgPSByZWludGVycHJldF9jYXN0PHVu
c2lnbmVkIGNoYXIqPihidWZmZXIpOwogICAgIHN0aXJJZk5lZWRlZCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0RlYWxsb2NhdG9yLmNwcAppbmRleCAzNzcyMjcwYTQwZi4uMDI4ZDNhMzkzMzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwCkBAIC01MCwxMyArNTAsMTMgQEAg
RGVhbGxvY2F0b3I6On5EZWFsbG9jYXRvcigpCiAgICAgCiB2b2lkIERlYWxsb2NhdG9yOjpzY2F2
ZW5nZSgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhIZWFwOjptdXRleCgp
KTsKKyAgICBMb2NrIGxvY2soSGVhcDo6bXV0ZXgoKSk7CiAKICAgICBwcm9jZXNzT2JqZWN0TG9n
KGxvY2spOwogICAgIG1faGVhcC5kZWFsbG9jYXRlTGluZUNhY2hlKGxvY2ssIGxpbmVDYWNoZShs
b2NrKSk7CiB9CiAKLXZvaWQgRGVhbGxvY2F0b3I6OnByb2Nlc3NPYmplY3RMb2coc3RkOjp1bmlx
dWVfbG9jazxNdXRleD4mIGxvY2spCit2b2lkIERlYWxsb2NhdG9yOjpwcm9jZXNzT2JqZWN0TG9n
KExvY2smIGxvY2spCiB7CiAgICAgZm9yIChPYmplY3Qgb2JqZWN0IDogbV9vYmplY3RMb2cpCiAg
ICAgICAgIG1faGVhcC5kZXJlZlNtYWxsTGluZShsb2NrLCBvYmplY3QsIGxpbmVDYWNoZShsb2Nr
KSk7CkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgRGVhbGxvY2F0b3I6OmRlYWxsb2NhdGVTbG93Q2Fz
ZSh2b2lkKiBvYmplY3QpCiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgTG9jayBs
b2NrKEhlYXA6Om11dGV4KCkpOwogICAgIGlmIChtX2hlYXAuaXNMYXJnZShsb2NrLCBvYmplY3Qp
KSB7CiAgICAgICAgIG1faGVhcC5kZWFsbG9jYXRlTGFyZ2UobG9jaywgb2JqZWN0KTsKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWFsbG9jYXRv
ci5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWFsbG9jYXRvci5oCmluZGV4IDEzNDJjNGNh
ZmRjLi5mNjI5NTFjZjg0ZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWFs
bG9jYXRvci5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuaApAQCAt
NDYsOSArNDYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWFsbG9jYXRlKHZvaWQqKTsKICAgICB2
b2lkIHNjYXZlbmdlKCk7CiAgICAgCi0gICAgdm9pZCBwcm9jZXNzT2JqZWN0TG9nKHN0ZDo6dW5p
cXVlX2xvY2s8TXV0ZXg+Jik7CisgICAgdm9pZCBwcm9jZXNzT2JqZWN0TG9nKExvY2smKTsKICAg
ICAKLSAgICBMaW5lQ2FjaGUmIGxpbmVDYWNoZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYpIHsg
cmV0dXJuIG1fbGluZUNhY2hlOyB9CisgICAgTGluZUNhY2hlJiBsaW5lQ2FjaGUoTG9jayYpIHsg
cmV0dXJuIG1fbGluZUNhY2hlOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBkZWFsbG9jYXRlRmFz
dENhc2Uodm9pZCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hl
YXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuY3BwCmluZGV4IDJjOWY1
YjQ1ODBhLi5hYmI4YjNmYzc5MiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9E
ZWJ1Z0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNwcApA
QCAtNDAsNyArNDAsNyBAQCBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoRGVidWdI
ZWFwKTsKIAogI2lmIEJPUyhEQVJXSU4pCiAKLURlYnVnSGVhcDo6RGVidWdIZWFwKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorRGVidWdIZWFwOjpEZWJ1Z0hlYXAoY29uc3QgU2ltcGxl
TG9jayYpCiAgICAgOiBtX3pvbmUobWFsbG9jX2NyZWF0ZV96b25lKDAsIDApKQogICAgICwgbV9w
YWdlU2l6ZSh2bVBhZ2VTaXplKCkpCiB7CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgRGVidWdIZWFw
OjpkdW1wKCkKIAogI2Vsc2UKIAotRGVidWdIZWFwOjpEZWJ1Z0hlYXAoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpCitEZWJ1Z0hlYXA6OkRlYnVnSGVhcChjb25zdCBTaW1wbGVMb2NrJikK
ICAgICA6IG1fcGFnZVNpemUodm1QYWdlU2l6ZSgpKQogewogfQpAQCAtMTQxLDcgKzE0MSw3IEBA
IHZvaWQqIERlYnVnSGVhcDo6bWVtYWxpZ25MYXJnZShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qg
c2l6ZSkKICAgICBpZiAoIXJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgewot
ICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihtdXRleCgpKTsKKyAgICAgICAg
U2ltcGxlTG9jayBsb2NrZXIobXV0ZXgoKSk7CiAgICAgICAgIG1fc2l6ZU1hcFtyZXN1bHRdID0g
c2l6ZTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE1NCw3ICsxNTQsNyBAQCB2b2lk
IERlYnVnSGVhcDo6ZnJlZUxhcmdlKHZvaWQqIGJhc2UpCiAgICAgCiAgICAgc2l6ZV90IHNpemU7
CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihtdXRleCgpKTsK
KyAgICAgICAgU2ltcGxlTG9jayBsb2NrZXIobXV0ZXgoKSk7CiAgICAgICAgIHNpemUgPSBtX3Np
emVNYXBbYmFzZV07CiAgICAgICAgIHNpemVfdCBudW1FcmFzZWQgPSBtX3NpemVNYXAuZXJhc2Uo
YmFzZSk7CiAgICAgICAgIFJFTEVBU0VfQkFTU0VSVChudW1FcmFzZWQgPT0gMSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9EZWJ1Z0hlYXAuaAppbmRleCA5ZGI4NTUyM2JlZS4uNjNjN2I4ZjQ4NGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaApAQCAtNDAsNyArNDAsNyBAQCBuYW1lc3BhY2UgYm1h
bGxvYyB7CiAgICAgCiBjbGFzcyBEZWJ1Z0hlYXAgOiBwcml2YXRlIFN0YXRpY1BlclByb2Nlc3M8
RGVidWdIZWFwPiB7CiBwdWJsaWM6Ci0gICAgRGVidWdIZWFwKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKTsKKyAgICBEZWJ1Z0hlYXAoY29uc3QgU2ltcGxlTG9jayYpOwogICAgIAogICAg
IHZvaWQqIG1hbGxvYyhzaXplX3QsIEZhaWx1cmVBY3Rpb24pOwogICAgIHZvaWQqIG1lbWFsaWdu
KHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCwgRmFpbHVyZUFjdGlvbik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlci5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9EZWZlcnJlZFRyaWdnZXIuaAppbmRleCAyOWZiMTk3NjllZC4uYTdiM2VkNDE4NjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmgKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIuaApAQCAtMzksMTAgKzM5
LDEwIEBAIHB1YmxpYzoKICAgICBEZWZlcnJlZFRyaWdnZXIoKSB7IH0KICAgICAKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb25maWc+Ci0gICAgdm9pZCBkaWRCZWNvbWUoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIElzb1BhZ2U8Q29uZmlnPiYpOworICAgIHZvaWQgZGlkQmVjb21lKGNv
bnN0IFNpbXBsZUxvY2smLCBJc29QYWdlPENvbmZpZz4mKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWc+Ci0gICAgdm9pZCBoYW5kbGVEZWZlcnJhbChjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JiwgSXNvUGFnZTxDb25maWc+Jik7CisgICAgdm9pZCBoYW5kbGVEZWZlcnJh
bChjb25zdCBTaW1wbGVMb2NrJiwgSXNvUGFnZTxDb25maWc+Jik7CiAgICAgCiBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYXNCZWVuRGVmZXJyZWQgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dlcklubGluZXMuaAppbmRleCA3MWVhNzI2OGJiMS4uMzcx
MTczMDRiMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmln
Z2VySW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2Vy
SW5saW5lcy5oCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogdGVtcGxh
dGU8SXNvUGFnZVRyaWdnZXIgdHJpZ2dlcj4KIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZv
aWQgRGVmZXJyZWRUcmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYgbG9ja2VyLCBJc29QYWdlPENvbmZpZz4mIHBhZ2UpCit2b2lkIERlZmVycmVk
VHJpZ2dlcjx0cmlnZ2VyPjo6ZGlkQmVjb21lKGNvbnN0IFNpbXBsZUxvY2smIGxvY2tlciwgSXNv
UGFnZTxDb25maWc+JiBwYWdlKQogewogICAgIGlmIChwYWdlLmlzSW5Vc2VGb3JBbGxvY2F0aW9u
KCkpCiAgICAgICAgIG1faGFzQmVlbkRlZmVycmVkID0gdHJ1ZTsKQEAgLTQyLDcgKzQyLDcgQEAg
dm9pZCBEZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIEkKIAogdGVtcGxhdGU8SXNvUGFnZVRyaWdnZXIgdHJpZ2dl
cj4KIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgRGVmZXJyZWRUcmlnZ2VyPHRyaWdn
ZXI+OjpoYW5kbGVEZWZlcnJhbChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIs
IElzb1BhZ2U8Q29uZmlnPiYgcGFnZSkKK3ZvaWQgRGVmZXJyZWRUcmlnZ2VyPHRyaWdnZXI+Ojpo
YW5kbGVEZWZlcnJhbChjb25zdCBTaW1wbGVMb2NrJiBsb2NrZXIsIElzb1BhZ2U8Q29uZmlnPiYg
cGFnZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoIXBhZ2UuaXNJblVzZUZvckFsbG9jYXRpb24o
KSk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50
LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuY3BwCmluZGV4IDg3N2E2
YzI5ZTVmLi5mYTRkMTBkNTY0MCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9F
bnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5j
cHAKQEAgLTEyNyw3ICsxMjcsNyBAQCBzdGF0aWMgYm9vbCBpc05hbm9NYWxsb2NFbmFibGVkKCkK
IAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKEVudmlyb25tZW50KTsKIAotRW52
aXJvbm1lbnQ6OkVudmlyb25tZW50KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorRW52
aXJvbm1lbnQ6OkVudmlyb25tZW50KGNvbnN0IFNpbXBsZUxvY2smKQogICAgIDogbV9pc0RlYnVn
SGVhcEVuYWJsZWQoY29tcHV0ZUlzRGVidWdIZWFwRW5hYmxlZCgpKQogewogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5oIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9FbnZpcm9ubWVudC5oCmluZGV4IDdiMjhkZTkyNzNlLi40MjQ3ZTczNDdkNCAxMDA2
NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZpcm9ubWVudC5oCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3Bh
Y2UgYm1hbGxvYyB7CiAKIGNsYXNzIEVudmlyb25tZW50IDogcHVibGljIFN0YXRpY1BlclByb2Nl
c3M8RW52aXJvbm1lbnQ+IHsKIHB1YmxpYzoKLSAgICBCRVhQT1JUIEVudmlyb25tZW50KGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBCRVhQT1JUIEVudmlyb25tZW50KGNvbnN0
IFNpbXBsZUxvY2smKTsKICAgICAKICAgICBib29sIGlzRGVidWdIZWFwRW5hYmxlZCgpIHsgcmV0
dXJuIG1faXNEZWJ1Z0hlYXBFbmFibGVkOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvR2lnYWNhZ2UuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5j
cHAKaW5kZXggNDIwMTk1OWY2MGIuLmUwOGEyZDg3NWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0dp
Z2FjYWdlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgQ2FsbGJhY2sgewogbmFtZXNwYWNl
IGJtYWxsb2MgewogCiBzdHJ1Y3QgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyA6IHB1YmxpYyBT
dGF0aWNQZXJQcm9jZXNzPFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M+IHsKLSAgICBQcmltaXRp
dmVEaXNhYmxlQ2FsbGJhY2tzKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKSB7IH0KKyAg
ICBQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzKGNvbnN0IFNpbXBsZUxvY2smKSB7IH0KICAgICAK
ICAgICBWZWN0b3I8R2lnYWNhZ2U6OkNhbGxiYWNrPiBjYWxsYmFja3M7CiB9OwpAQCAtMjU3LDcg
KzI1Nyw3IEBAIHZvaWQgZGlzYWJsZVByaW1pdGl2ZUdpZ2FjYWdlKCkKICAgICB9CiAgICAgCiAg
ICAgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyYgY2FsbGJhY2tzID0gKlByaW1pdGl2ZURpc2Fi
bGVDYWxsYmFja3M6OmdldCgpOwotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soUHJp
bWl0aXZlRGlzYWJsZUNhbGxiYWNrczo6bXV0ZXgoKSk7CisgICAgTG9jayBsb2NrKFByaW1pdGl2
ZURpc2FibGVDYWxsYmFja3M6Om11dGV4KCkpOwogICAgIGZvciAoQ2FsbGJhY2smIGNhbGxiYWNr
IDogY2FsbGJhY2tzLmNhbGxiYWNrcykKICAgICAgICAgY2FsbGJhY2suZnVuY3Rpb24oY2FsbGJh
Y2suYXJndW1lbnQpOwogICAgIGNhbGxiYWNrcy5jYWxsYmFja3Muc2hyaW5rKDApOwpAQCAtMjc1
LDE0ICsyNzUsMTQgQEAgdm9pZCBhZGRQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKmZ1
bmN0aW9uKSh2b2lkKiksIHZvaWQqIGFyZ3VtZW50KQogICAgIH0KICAgICAKICAgICBQcmltaXRp
dmVEaXNhYmxlQ2FsbGJhY2tzJiBjYWxsYmFja3MgPSAqUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNr
czo6Z2V0KCk7Ci0gICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhQcmltaXRpdmVEaXNh
YmxlQ2FsbGJhY2tzOjptdXRleCgpKTsKKyAgICBMb2NrIGxvY2soUHJpbWl0aXZlRGlzYWJsZUNh
bGxiYWNrczo6bXV0ZXgoKSk7CiAgICAgY2FsbGJhY2tzLmNhbGxiYWNrcy5wdXNoKENhbGxiYWNr
KGZ1bmN0aW9uLCBhcmd1bWVudCkpOwogfQogCiB2b2lkIHJlbW92ZVByaW1pdGl2ZURpc2FibGVD
YWxsYmFjayh2b2lkICgqZnVuY3Rpb24pKHZvaWQqKSwgdm9pZCogYXJndW1lbnQpCiB7CiAgICAg
UHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyYgY2FsbGJhY2tzID0gKlByaW1pdGl2ZURpc2FibGVD
YWxsYmFja3M6OmdldCgpOwotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soUHJpbWl0
aXZlRGlzYWJsZUNhbGxiYWNrczo6bXV0ZXgoKSk7CisgICAgTG9jayBsb2NrKFByaW1pdGl2ZURp
c2FibGVDYWxsYmFja3M6Om11dGV4KCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Fs
bGJhY2tzLmNhbGxiYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBpZiAoY2FsbGJhY2tzLmNh
bGxiYWNrc1tpXS5mdW5jdGlvbiA9PSBmdW5jdGlvbgogICAgICAgICAgICAgJiYgY2FsbGJhY2tz
LmNhbGxiYWNrc1tpXS5hcmd1bWVudCA9PSBhcmd1bWVudCkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9IZWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5j
cHAKaW5kZXggM2FhZTQzYTIxN2EuLjlkMjllOTVlMjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0hlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5j
cHAKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIGJtYWxsb2MgewogCi1IZWFwOjpIZWFw
KEhlYXBLaW5kIGtpbmQsIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorSGVhcDo6SGVhcChIZWFw
S2luZCBraW5kLCBTaW1wbGVMb2NrJikKICAgICA6IG1fa2luZCB7IGtpbmQgfSwgbV9jb25zdGFu
dHMgeyAqSGVhcENvbnN0YW50czo6Z2V0KCkgfQogewogICAgIEJBU1NFUlQoIUVudmlyb25tZW50
OjpnZXQoKS0+aXNEZWJ1Z0hlYXBFbmFibGVkKCkpOwpAQCAtODEsNyArODEsNyBAQCBzaXplX3Qg
SGVhcDo6Z2lnYWNhZ2VTaXplKCkKICAgICByZXR1cm4gR2lnYWNhZ2U6OnNpemUoZ2lnYWNhZ2VL
aW5kKG1fa2luZCkpOwogfQogCi1zaXplX3QgSGVhcDo6ZnJlZWFibGVNZW1vcnkoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYpCitzaXplX3QgSGVhcDo6ZnJlZWFibGVNZW1vcnkoY29uc3Qg
U2ltcGxlTG9jayYpCiB7CiAgICAgcmV0dXJuIG1fZnJlZWFibGVNZW1vcnk7CiB9CkBAIC05MSwx
NCArOTEsMTQgQEAgc2l6ZV90IEhlYXA6OmZvb3RwcmludCgpCiAgICAgcmV0dXJuIG1fZm9vdHBy
aW50OwogfQogCi12b2lkIEhlYXA6Om1hcmtBbGxMYXJnZUFzRWxpZ2liaWxlKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKQordm9pZCBIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShj
b25zdCBTaW1wbGVMb2NrJikKIHsKICAgICBtX2xhcmdlRnJlZS5tYXJrQWxsQXNFbGlnaWJpbGUo
KTsKICAgICBtX2hhc1BlbmRpbmdEZWNvbW1pdHMgPSBmYWxzZTsKICAgICBtX2NvbmRpdGlvbi5u
b3RpZnlfYWxsKCk7CiB9CiAKLXZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBk
ZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6ZGVjb21taXRMYXJnZVJhbmdlKGNvbnN0IFNpbXBsZUxv
Y2smLCBMYXJnZVJhbmdlJiByYW5nZSwgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKIHsKICAg
ICBtX2Zvb3RwcmludCAtPSByYW5nZS50b3RhbFBoeXNpY2FsU2l6ZSgpOwogICAgIG1fZnJlZWFi
bGVNZW1vcnkgLT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKQEAgLTExNCw5ICsxMTQsOSBA
QCB2b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiwgTGFyZ2VSYW5nZSYgcmFuZ2UsCiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0Up
Ci12b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ss
IEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2b2lkIEhlYXA6OnNjYXZlbmdlKGNvbnN0IFNp
bXBsZUxvY2smIGxvY2ssIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiAjZWxzZQotdm9pZCBI
ZWFwOjpzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVj
b21taXQmIGRlY29tbWl0dGVyLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKQordm9pZCBIZWFw
OjpzY2F2ZW5nZShjb25zdCBTaW1wbGVMb2NrJiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0
dGVyLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKQogI2VuZGlmCiB7CiAgICAgZm9yIChhdXRv
JiBsaXN0IDogbV9mcmVlUGFnZXMpIHsKQEAgLTE2OSw3ICsxNjksNyBAQCB2b2lkIEhlYXA6OnNj
YXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtEZWNvbW1pdCYg
ZGVjb21taXR0ZQogfQogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotdm9pZCBIZWFwOjpz
Y2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2Nr
LCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQordm9pZCBIZWFwOjpzY2F2ZW5nZVRvSGlnaFdh
dGVybWFyayhjb25zdCBTaW1wbGVMb2NrJiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVy
KQogewogICAgIHZvaWQqIG5ld0hpZ2hXYXRlck1hcmsgPSBudWxscHRyOwogICAgIGZvciAoTGFy
Z2VSYW5nZSYgcmFuZ2UgOiBtX2xhcmdlRnJlZSkgewpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQg
SGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYgbG9jaywgQnVsa0RlY29tCiB9CiAjZW5kaWYKIAotdm9pZCBIZWFwOjpkZWFsbG9jYXRlTGlu
ZUNhY2hlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgTGluZUNhY2hlJiBsaW5lQ2FjaGUpCit2
b2lkIEhlYXA6OmRlYWxsb2NhdGVMaW5lQ2FjaGUoTG9jayYsIExpbmVDYWNoZSYgbGluZUNhY2hl
KQogewogICAgIGZvciAoYXV0byYgbGlzdCA6IGxpbmVDYWNoZSkgewogICAgICAgICB3aGlsZSAo
IWxpc3QuaXNFbXB0eSgpKSB7CkBAIC0xOTIsNyArMTkyLDcgQEAgdm9pZCBIZWFwOjpkZWFsbG9j
YXRlTGluZUNhY2hlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgTGluZUNhY2hlJiBsaW5lQ2Fj
aGUpCiAgICAgfQogfQogCi12b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhzdGQ6OnVuaXF1
ZV9sb2NrPE11dGV4PiYgbG9jaywgc2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUFjdGlvbiBhY3Rp
b24pCit2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxDaHVuayhMb2NrJiBsb2NrLCBzaXplX3QgcGFn
ZUNsYXNzLCBGYWlsdXJlQWN0aW9uIGFjdGlvbikKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoaXNB
Y3RpdmVIZWFwS2luZChtX2tpbmQpKTsKICAgICAKQEAgLTI2Nyw3ICsyNjcsNyBAQCB2b2lkIEhl
YXA6OmRlYWxsb2NhdGVTbWFsbENodW5rKENodW5rKiBjaHVuaywgc2l6ZV90IHBhZ2VDbGFzcykK
ICAgICBtX2xhcmdlRnJlZS5hZGQoTGFyZ2VSYW5nZShjaHVuaywgc2l6ZSwgc3RhcnRQaHlzaWNh
bFNpemUsIHRvdGFsUGh5c2ljYWxTaXplKSk7CiB9CiAKLVNtYWxsUGFnZSogSGVhcDo6YWxsb2Nh
dGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIHNpemVfdCBzaXplQ2xh
c3MsIExpbmVDYWNoZSYgbGluZUNhY2hlLCBGYWlsdXJlQWN0aW9uIGFjdGlvbikKK1NtYWxsUGFn
ZSogSGVhcDo6YWxsb2NhdGVTbWFsbFBhZ2UoTG9jayYgbG9jaywgc2l6ZV90IHNpemVDbGFzcywg
TGluZUNhY2hlJiBsaW5lQ2FjaGUsIEZhaWx1cmVBY3Rpb24gYWN0aW9uKQogewogICAgIFJFTEVB
U0VfQkFTU0VSVChpc0FjdGl2ZUhlYXBLaW5kKG1fa2luZCkpOwogCkBAIC0zMjMsNyArMzIzLDcg
QEAgU21hbGxQYWdlKiBIZWFwOjphbGxvY2F0ZVNtYWxsUGFnZShzdGQ6OnVuaXF1ZV9sb2NrPE11
dGV4PiYgbG9jaywgc2l6ZV90IHNpemVDbGEKICAgICByZXR1cm4gcGFnZTsKIH0KIAotdm9pZCBI
ZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5lKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBP
YmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUmIGxpbmVDYWNoZSkKK3ZvaWQgSGVhcDo6ZGVhbGxvY2F0
ZVNtYWxsTGluZShMb2NrJiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUmIGxpbmVDYWNo
ZSkKIHsKICAgICBCQVNTRVJUKCFvYmplY3QubGluZSgpLT5yZWZDb3VudChsb2NrKSk7CiAgICAg
U21hbGxQYWdlKiBwYWdlID0gb2JqZWN0LnBhZ2UoKTsKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lk
IEhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ss
IE9iamVjdCBvYmplY3QsIExpbgogfQogCiB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFu
Z2VzQnlNZXRhZGF0YSgKLSAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYgbG9jaywgc2l6ZV90
IHNpemVDbGFzcywKKyAgICBMb2NrJiBsb2NrLCBzaXplX3Qgc2l6ZUNsYXNzLAogICAgIEJ1bXBB
bGxvY2F0b3ImIGFsbG9jYXRvciwgQnVtcFJhbmdlQ2FjaGUmIHJhbmdlQ2FjaGUsCiAgICAgTGlu
ZUNhY2hlJiBsaW5lQ2FjaGUsIEZhaWx1cmVBY3Rpb24gYWN0aW9uKQogewpAQCAtNDMxLDcgKzQz
MSw3IEBAIHZvaWQgSGVhcDo6YWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU1ldGFkYXRhKAogfQog
CiB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlPYmplY3QoCi0gICAgc3RkOjp1
bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIHNpemVfdCBzaXplQ2xhc3MsCisgICAgTG9jayYgbG9j
aywgc2l6ZV90IHNpemVDbGFzcywKICAgICBCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IsIEJ1bXBS
YW5nZUNhY2hlJiByYW5nZUNhY2hlLAogICAgIExpbmVDYWNoZSYgbGluZUNhY2hlLCBGYWlsdXJl
QWN0aW9uIGFjdGlvbikKIHsKQEAgLTQ5Miw3ICs0OTIsNyBAQCB2b2lkIEhlYXA6OmFsbG9jYXRl
U21hbGxCdW1wUmFuZ2VzQnlPYmplY3QoCiAgICAgfQogfQogCi1MYXJnZVJhbmdlIEhlYXA6OnNw
bGl0QW5kQWxsb2NhdGUoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBMYXJnZVJhbmdlJiByYW5n
ZSwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCitMYXJnZVJhbmdlIEhlYXA6OnNwbGl0
QW5kQWxsb2NhdGUoTG9jayYsIExhcmdlUmFuZ2UmIHJhbmdlLCBzaXplX3QgYWxpZ25tZW50LCBz
aXplX3Qgc2l6ZSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3RpdmVIZWFwS2luZChtX2tp
bmQpKTsKIApAQCAtNTQwLDcgKzU0MCw3IEBAIExhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxv
Y2F0ZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIExhcmdlUmFuZ2UmIHJhbmdlLCBzCiAgICAg
cmV0dXJuIHJhbmdlOwogfQogCi12b2lkKiBIZWFwOjphbGxvY2F0ZUxhcmdlKHN0ZDo6dW5pcXVl
X2xvY2s8TXV0ZXg+JiBsb2NrLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgRmFpbHVy
ZUFjdGlvbiBhY3Rpb24pCit2b2lkKiBIZWFwOjphbGxvY2F0ZUxhcmdlKExvY2smIGxvY2ssIHNp
emVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCBGYWlsdXJlQWN0aW9uIGFjdGlvbikKIHsKICNk
ZWZpbmUgQVNTRVJUX09SX1JFVFVSTl9PTl9GQUlMVVJFKGNvbmQpIGRvIHsgXAogICAgICAgICBp
ZiAoYWN0aW9uID09IEZhaWx1cmVBY3Rpb246OkNyYXNoKSBcCkBAIC01OTMsMTcgKzU5MywxNyBA
QCB2b2lkKiBIZWFwOjphbGxvY2F0ZUxhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2Nr
LCBzaXplX3QgYWxpZ25tZW50LCBzaXplXwogI3VuZGVmIEFTU0VSVF9PUl9SRVRVUk5fT05fRkFJ
TFVSRQogfQogCi1ib29sIEhlYXA6OmlzTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2
b2lkKiBvYmplY3QpCitib29sIEhlYXA6OmlzTGFyZ2UoTG9jayYsIHZvaWQqIG9iamVjdCkKIHsK
ICAgICByZXR1cm4gbV9vYmplY3RUeXBlcy5nZXQoT2JqZWN0KG9iamVjdCkuY2h1bmsoKSkgPT0g
T2JqZWN0VHlwZTo6TGFyZ2U7CiB9CiAKLXNpemVfdCBIZWFwOjpsYXJnZVNpemUoc3RkOjp1bmlx
dWVfbG9jazxNdXRleD4mLCB2b2lkKiBvYmplY3QpCitzaXplX3QgSGVhcDo6bGFyZ2VTaXplKExv
Y2smLCB2b2lkKiBvYmplY3QpCiB7CiAgICAgcmV0dXJuIG1fbGFyZ2VBbGxvY2F0ZWQuZ2V0KG9i
amVjdCk7CiB9CiAKLXZvaWQgSGVhcDo6c2hyaW5rTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRl
eD4mIGxvY2ssIGNvbnN0IFJhbmdlJiBvYmplY3QsIHNpemVfdCBuZXdTaXplKQordm9pZCBIZWFw
OjpzaHJpbmtMYXJnZShMb2NrJiBsb2NrLCBjb25zdCBSYW5nZSYgb2JqZWN0LCBzaXplX3QgbmV3
U2l6ZSkKIHsKICAgICBCQVNTRVJUKG9iamVjdC5zaXplKCkgPiBuZXdTaXplKTsKIApAQCAtNjE0
LDcgKzYxNCw3IEBAIHZvaWQgSGVhcDo6c2hyaW5rTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRl
eD4mIGxvY2ssIGNvbnN0IFJhbmdlJiBvYmplY3QsIHNpemVfCiAgICAgbV9zY2F2ZW5nZXItPnNj
aGVkdWxlKHNpemUpOwogfQogCi12b2lkIEhlYXA6OmRlYWxsb2NhdGVMYXJnZShzdGQ6OnVuaXF1
ZV9sb2NrPE11dGV4PiYsIHZvaWQqIG9iamVjdCkKK3ZvaWQgSGVhcDo6ZGVhbGxvY2F0ZUxhcmdl
KExvY2smLCB2b2lkKiBvYmplY3QpCiB7CiAgICAgc2l6ZV90IHNpemUgPSBtX2xhcmdlQWxsb2Nh
dGVkLnJlbW92ZShvYmplY3QpOwogICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKG9iamVj
dCwgc2l6ZSwgc2l6ZSwgc2l6ZSkpOwpAQCAtNjI0LDExICs2MjQsMTEgQEAgdm9pZCBIZWFwOjpk
ZWFsbG9jYXRlTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKiBvYmplY3QpCiAK
IHZvaWQgSGVhcDo6ZXh0ZXJuYWxDb21taXQodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKIHsKLSAg
ICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgIExvY2sg
bG9jayhIZWFwOjptdXRleCgpKTsKICAgICBleHRlcm5hbENvbW1pdChsb2NrLCBwdHIsIHNpemUp
OwogfQogCi12b2lkIEhlYXA6OmV4dGVybmFsQ29tbWl0KHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+
Jiwgdm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKK3ZvaWQgSGVhcDo6ZXh0ZXJuYWxDb21taXQoTG9j
ayYsIHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCiB7CiAgICAgQlVOVVNFRF9QQVJBTShwdHIpOwog
CkBAIC02NDAsMTEgKzY0MCwxMSBAQCB2b2lkIEhlYXA6OmV4dGVybmFsQ29tbWl0KHN0ZDo6dW5p
cXVlX2xvY2s8TXV0ZXg+Jiwgdm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKIAogdm9pZCBIZWFwOjpl
eHRlcm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCiB7Ci0gICAgc3RkOjp1bmlx
dWVfbG9jazxNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKKyAgICBMb2NrIGxvY2soSGVhcDo6
bXV0ZXgoKSk7CiAgICAgZXh0ZXJuYWxEZWNvbW1pdChsb2NrLCBwdHIsIHNpemUpOwogfQogCi12
b2lkIEhlYXA6OmV4dGVybmFsRGVjb21taXQoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lk
KiBwdHIsIHNpemVfdCBzaXplKQordm9pZCBIZWFwOjpleHRlcm5hbERlY29tbWl0KExvY2smLCB2
b2lkKiBwdHIsIHNpemVfdCBzaXplKQogewogICAgIEJVTlVTRURfUEFSQU0ocHRyKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0hlYXAuaAppbmRleCA1OWM3NWYyN2I5Yy4uNGU4ZTM3ZjBmNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcC5oCkBAIC01Nyw0NCArNTcsNDQgQEAgY2xhc3MgU2NhdmVuZ2VyOwogCiBjbGFzcyBI
ZWFwIHsKIHB1YmxpYzoKLSAgICBIZWFwKEhlYXBLaW5kLCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
Jik7CisgICAgSGVhcChIZWFwS2luZCwgU2ltcGxlTG9jayYpOwogICAgIAogICAgIHN0YXRpYyBN
dXRleCYgbXV0ZXgoKSB7IHJldHVybiBQZXJQcm9jZXNzPFBlckhlYXBLaW5kPEhlYXA+Pjo6bXV0
ZXgoKTsgfQogICAgIAogICAgIEhlYXBLaW5kIGtpbmQoKSBjb25zdCB7IHJldHVybiBtX2tpbmQ7
IH0KICAgICAKLSAgICB2b2lkIGFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzKHN0ZDo6dW5pcXVlX2xv
Y2s8TXV0ZXg+Jiwgc2l6ZV90IHNpemVDbGFzcywKKyAgICB2b2lkIGFsbG9jYXRlU21hbGxCdW1w
UmFuZ2VzKExvY2smLCBzaXplX3Qgc2l6ZUNsYXNzLAogICAgICAgICBCdW1wQWxsb2NhdG9yJiwg
QnVtcFJhbmdlQ2FjaGUmLCBMaW5lQ2FjaGUmLCBGYWlsdXJlQWN0aW9uKTsKLSAgICB2b2lkIGRl
cmVmU21hbGxMaW5lKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgT2JqZWN0LCBMaW5lQ2FjaGUm
KTsKLSAgICB2b2lkIGRlYWxsb2NhdGVMaW5lQ2FjaGUoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4m
LCBMaW5lQ2FjaGUmKTsKKyAgICB2b2lkIGRlcmVmU21hbGxMaW5lKExvY2smLCBPYmplY3QsIExp
bmVDYWNoZSYpOworICAgIHZvaWQgZGVhbGxvY2F0ZUxpbmVDYWNoZShMb2NrJiwgTGluZUNhY2hl
Jik7CiAKLSAgICB2b2lkKiBhbGxvY2F0ZUxhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwg
c2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsKLSAgICB2b2lkIGRlYWxs
b2NhdGVMYXJnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHZvaWQqKTsKKyAgICB2b2lkKiBh
bGxvY2F0ZUxhcmdlKExvY2smLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3QsIEZhaWx1cmVBY3Rp
b24pOworICAgIHZvaWQgZGVhbGxvY2F0ZUxhcmdlKExvY2smLCB2b2lkKik7CiAKLSAgICBib29s
IGlzTGFyZ2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKik7Ci0gICAgc2l6ZV90IGxh
cmdlU2l6ZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHZvaWQqKTsKLSAgICB2b2lkIHNocmlu
a0xhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgY29uc3QgUmFuZ2UmLCBzaXplX3QpOwor
ICAgIGJvb2wgaXNMYXJnZShMb2NrJiwgdm9pZCopOworICAgIHNpemVfdCBsYXJnZVNpemUoTG9j
ayYsIHZvaWQqKTsKKyAgICB2b2lkIHNocmlua0xhcmdlKExvY2smLCBjb25zdCBSYW5nZSYsIHNp
emVfdCk7CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCi0gICAgdm9pZCBzY2F2ZW5nZVRv
SGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0
Jik7Ci0gICAgdm9pZCBzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVs
a0RlY29tbWl0Jik7CisgICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBTaW1w
bGVMb2NrJiwgQnVsa0RlY29tbWl0Jik7CisgICAgdm9pZCBzY2F2ZW5nZShjb25zdCBTaW1wbGVM
b2NrJiwgQnVsa0RlY29tbWl0Jik7CiAjZWxzZQotICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZGVmZXJyZWREZWNv
bW1pdHMpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgU2ltcGxlTG9jayYsIEJ1bGtEZWNvbW1p
dCYsIHNpemVfdCYgZGVmZXJyZWREZWNvbW1pdHMpOwogI2VuZGlmCi0gICAgdm9pZCBzY2F2ZW5n
ZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgQnVsa0RlY29tbWl0Jiwgc2l6ZV90JiBm
cmVlZCwgc2l6ZV90IGdvYWwpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgU2ltcGxlTG9jayYs
IEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVfdCBnb2FsKTsKIAotICAgIHNpemVf
dCBmcmVlYWJsZU1lbW9yeShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgc2l6
ZV90IGZyZWVhYmxlTWVtb3J5KGNvbnN0IFNpbXBsZUxvY2smKTsKICAgICBzaXplX3QgZm9vdHBy
aW50KCk7CiAKICAgICB2b2lkIGV4dGVybmFsRGVjb21taXQodm9pZCogcHRyLCBzaXplX3QpOwot
ICAgIHZvaWQgZXh0ZXJuYWxEZWNvbW1pdChzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHZvaWQq
IHB0ciwgc2l6ZV90KTsKKyAgICB2b2lkIGV4dGVybmFsRGVjb21taXQoTG9jayYsIHZvaWQqIHB0
ciwgc2l6ZV90KTsKICAgICB2b2lkIGV4dGVybmFsQ29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsK
LSAgICB2b2lkIGV4dGVybmFsQ29tbWl0KHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgdm9pZCog
cHRyLCBzaXplX3QpOworICAgIHZvaWQgZXh0ZXJuYWxDb21taXQoTG9jayYsIHZvaWQqIHB0ciwg
c2l6ZV90KTsKIAotICAgIHZvaWQgbWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYpOworICAgIHZvaWQgbWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29u
c3QgU2ltcGxlTG9jayYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZGVjb21taXRMYXJnZVJhbmdl
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBMYXJnZVJhbmdlJiwgQnVsa0RlY29tbWl0
Jik7CisgICAgdm9pZCBkZWNvbW1pdExhcmdlUmFuZ2UoY29uc3QgU2ltcGxlTG9jayYsIExhcmdl
UmFuZ2UmLCBCdWxrRGVjb21taXQmKTsKIAogICAgIHN0cnVjdCBMYXJnZU9iamVjdEhhc2ggewog
ICAgICAgICBzdGF0aWMgdW5zaWduZWQgaGFzaCh2b2lkKiBrZXkpCkBAIC0xMTAsMjIgKzExMCwy
MiBAQCBwcml2YXRlOgogICAgIHZvaWQqIGdpZ2FjYWdlQmFzZVB0cigpOyAvLyBNYXkgY3Jhc2gg
aWYgIXVzaW5nR2lnYWNhZ2UoKS4KICAgICBzaXplX3QgZ2lnYWNhZ2VTaXplKCk7CiAKLSAgICB2
b2lkIGFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlNZXRhZGF0YShzdGQ6OnVuaXF1ZV9sb2NrPE11
dGV4PiYsCisgICAgdm9pZCBhbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5TWV0YWRhdGEoTG9jayYs
CiAgICAgICAgIHNpemVfdCBzaXplQ2xhc3MsIEJ1bXBBbGxvY2F0b3ImLCBCdW1wUmFuZ2VDYWNo
ZSYsIExpbmVDYWNoZSYsIEZhaWx1cmVBY3Rpb24pOwotICAgIHZvaWQgYWxsb2NhdGVTbWFsbEJ1
bXBSYW5nZXNCeU9iamVjdChzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsCisgICAgdm9pZCBhbGxv
Y2F0ZVNtYWxsQnVtcFJhbmdlc0J5T2JqZWN0KExvY2smLAogICAgICAgICBzaXplX3Qgc2l6ZUNs
YXNzLCBCdW1wQWxsb2NhdG9yJiwgQnVtcFJhbmdlQ2FjaGUmLCBMaW5lQ2FjaGUmLCBGYWlsdXJl
QWN0aW9uKTsKIAotICAgIFNtYWxsUGFnZSogYWxsb2NhdGVTbWFsbFBhZ2Uoc3RkOjp1bmlxdWVf
bG9jazxNdXRleD4mLCBzaXplX3Qgc2l6ZUNsYXNzLCBMaW5lQ2FjaGUmLCBGYWlsdXJlQWN0aW9u
KTsKLSAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbExpbmUoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4m
LCBPYmplY3QsIExpbmVDYWNoZSYpOworICAgIFNtYWxsUGFnZSogYWxsb2NhdGVTbWFsbFBhZ2Uo
TG9jayYsIHNpemVfdCBzaXplQ2xhc3MsIExpbmVDYWNoZSYsIEZhaWx1cmVBY3Rpb24pOworICAg
IHZvaWQgZGVhbGxvY2F0ZVNtYWxsTGluZShMb2NrJiwgT2JqZWN0LCBMaW5lQ2FjaGUmKTsKIAot
ICAgIHZvaWQgYWxsb2NhdGVTbWFsbENodW5rKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgc2l6
ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUFjdGlvbik7CisgICAgdm9pZCBhbGxvY2F0ZVNtYWxsQ2h1
bmsoTG9jayYsIHNpemVfdCBwYWdlQ2xhc3MsIEZhaWx1cmVBY3Rpb24pOwogICAgIHZvaWQgZGVh
bGxvY2F0ZVNtYWxsQ2h1bmsoQ2h1bmsqLCBzaXplX3QgcGFnZUNsYXNzKTsKIAogICAgIHZvaWQg
bWVyZ2VMYXJnZShCZWdpblRhZyomLCBFbmRUYWcqJiwgUmFuZ2UmKTsKICAgICB2b2lkIG1lcmdl
TGFyZ2VMZWZ0KEVuZFRhZyomLCBCZWdpblRhZyomLCBSYW5nZSYsIGJvb2wmIGluVk1IZWFwKTsK
ICAgICB2b2lkIG1lcmdlTGFyZ2VSaWdodChFbmRUYWcqJiwgQmVnaW5UYWcqJiwgUmFuZ2UmLCBi
b29sJiBpblZNSGVhcCk7CiAKLSAgICBMYXJnZVJhbmdlIHNwbGl0QW5kQWxsb2NhdGUoc3RkOjp1
bmlxdWVfbG9jazxNdXRleD4mLCBMYXJnZVJhbmdlJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90
KTsKKyAgICBMYXJnZVJhbmdlIHNwbGl0QW5kQWxsb2NhdGUoTG9jayYsIExhcmdlUmFuZ2UmLCBz
aXplX3QgYWxpZ25tZW50LCBzaXplX3QpOwogCiAgICAgSGVhcEtpbmQgbV9raW5kOwogICAgIEhl
YXBDb25zdGFudHMmIG1fY29uc3RhbnRzOwpAQCAtMTU3LDcgKzE1Nyw3IEBAIHByaXZhdGU6CiB9
OwogCiBpbmxpbmUgdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlcygKLSAgICBzdGQ6
OnVuaXF1ZV9sb2NrPE11dGV4PiYgbG9jaywgc2l6ZV90IHNpemVDbGFzcywKKyAgICBMb2NrJiBs
b2NrLCBzaXplX3Qgc2l6ZUNsYXNzLAogICAgIEJ1bXBBbGxvY2F0b3ImIGFsbG9jYXRvciwgQnVt
cFJhbmdlQ2FjaGUmIHJhbmdlQ2FjaGUsCiAgICAgTGluZUNhY2hlJiBsaW5lQ2FjaGUsIEZhaWx1
cmVBY3Rpb24gYWN0aW9uKQogewpAQCAtMTY2LDcgKzE2Niw3IEBAIGlubGluZSB2b2lkIEhlYXA6
OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzKAogICAgIHJldHVybiBhbGxvY2F0ZVNtYWxsQnVtcFJh
bmdlc0J5T2JqZWN0KGxvY2ssIHNpemVDbGFzcywgYWxsb2NhdG9yLCByYW5nZUNhY2hlLCBsaW5l
Q2FjaGUsIGFjdGlvbik7CiB9CiAKLWlubGluZSB2b2lkIEhlYXA6OmRlcmVmU21hbGxMaW5lKHN0
ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW5lQ2FjaGUmIGxp
bmVDYWNoZSkKK2lubGluZSB2b2lkIEhlYXA6OmRlcmVmU21hbGxMaW5lKExvY2smIGxvY2ssIE9i
amVjdCBvYmplY3QsIExpbmVDYWNoZSYgbGluZUNhY2hlKQogewogICAgIGlmICghb2JqZWN0Lmxp
bmUoKS0+ZGVyZWYobG9jaykpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9j
L0hlYXBDb25zdGFudHMuY3BwCmluZGV4IGYzODRhNTRjNmE4Li5jNmEzMGZmMDBkNyAxMDA2NDQK
LS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwCkBAIC0zMCw3ICszMCw3IEBAIG5h
bWVzcGFjZSBibWFsbG9jIHsKIAogREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdFKEhl
YXBDb25zdGFudHMpOwogCi1IZWFwQ29uc3RhbnRzOjpIZWFwQ29uc3RhbnRzKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mKQorSGVhcENvbnN0YW50czo6SGVhcENvbnN0YW50cyhjb25zdCBT
aW1wbGVMb2NrJikKICAgICA6IG1fdm1QYWdlU2l6ZVBoeXNpY2FsIHsgdm1QYWdlU2l6ZVBoeXNp
Y2FsKCkgfQogewogICAgIFJFTEVBU0VfQkFTU0VSVChtX3ZtUGFnZVNpemVQaHlzaWNhbCA+PSBz
bWFsbFBhZ2VTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENv
bnN0YW50cy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmgKaW5kZXgg
MGViYzk1MGU5ZDYuLmE0NDc0NmI2ZmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0hlYXBDb25zdGFudHMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25z
dGFudHMuaApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIGNsYXNzIEhl
YXBDb25zdGFudHMgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxIZWFwQ29uc3RhbnRzPiB7CiBw
dWJsaWM6Ci0gICAgSGVhcENvbnN0YW50cyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7
CisgICAgSGVhcENvbnN0YW50cyhjb25zdCBTaW1wbGVMb2NrJik7CiAgICAgfkhlYXBDb25zdGFu
dHMoKSA9IGRlbGV0ZTsKIAogICAgIGlubGluZSBzaXplX3QgcGFnZUNsYXNzKHNpemVfdCBzaXpl
Q2xhc3MpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUNsYXNzZXNbc2l6ZUNsYXNzXTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvcklubGluZXMuaAppbmRleCBkNzlmNDI0MTNk
Ny4uZjNhMmJlYzBiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxs
b2NhdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9y
SW5saW5lcy5oCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQqIElzb0FsbG9jYXRvcjxDb25maWc+Ojph
bGxvY2F0ZShJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwLCBib29sIGFib3J0T25GYWlsCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb25maWc+CiBCTk9fSU5MSU5FIHZvaWQqIElzb0FsbG9jYXRvcjxDb25m
aWc+OjphbGxvY2F0ZVNsb3coSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCwgYm9vbCBhYm9ydE9u
RmFpbHVyZSkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihoZWFwLmxvY2sp
OworICAgIFNpbXBsZUxvY2sgbG9ja2VyKGhlYXAubG9jayk7CiAKICAgICBBbGxvY2F0aW9uTW9k
ZSBhbGxvY2F0aW9uTW9kZSA9IGhlYXAudXBkYXRlQWxsb2NhdGlvbk1vZGUoKTsKICAgICBpZiAo
YWxsb2NhdGlvbk1vZGUgPT0gQWxsb2NhdGlvbk1vZGU6OlNoYXJlZCkgewpAQCAtOTMsNyArOTMs
NyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB2b2lkIElzb0FsbG9jYXRvcjxDb25maWc+
OjpzY2F2ZW5nZShJc29IZWFwSW1wbDxDb25maWc+JiBoZWFwKQogewogICAgIGlmIChtX2N1cnJl
bnRQYWdlKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGhlYXAubG9j
ayk7CisgICAgICAgIFNpbXBsZUxvY2sgbG9ja2VyKGhlYXAubG9jayk7CiAgICAgICAgIG1fY3Vy
cmVudFBhZ2UtPnN0b3BBbGxvY2F0aW5nKGxvY2tlciwgbV9mcmVlTGlzdCk7CiAgICAgICAgIG1f
Y3VycmVudFBhZ2UgPSBudWxscHRyOwogICAgICAgICBtX2ZyZWVMaXN0LmNsZWFyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RlYWxsb2NhdG9ySW5saW5lcy5oIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklubGluZXMuaAppbmRleCAwMzJm
Yjc3MTlhYS4uYzE5YzNlNDE4N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvRGVhbGxvY2F0b3JJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29E
ZWFsbG9jYXRvcklubGluZXMuaApAQCAtNTksNyArNTksNyBAQCB2b2lkIElzb0RlYWxsb2NhdG9y
PENvbmZpZz46OmRlYWxsb2NhdGUoYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUsIHZvaWQqIHB0
cikKICAgICAvLyBzaG91bGQgYmUgcmFyZWx5IHRha2VuLiBJZiB3ZSBzZWUgZnJlcXVlbnQgbWFs
bG9jLWFuZC1mcmVlIHBhdHRlcm4sIHdlIHRpZXIgdXAgdGhlIGFsbG9jYXRvciBmcm9tIHNoYXJl
ZCBtb2RlIHRvIGZhc3QgbW9kZS4KICAgICBJc29QYWdlQmFzZSogcGFnZSA9IElzb1BhZ2VCYXNl
OjpwYWdlRm9yKHB0cik7CiAgICAgaWYgKHBhZ2UtPmlzU2hhcmVkKCkpIHsKLSAgICAgICAgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoKm1fbG9jayk7CisgICAgICAgIFNpbXBsZUxvY2sg
bG9ja2VyKCptX2xvY2spOwogICAgICAgICBzdGF0aWNfY2FzdDxJc29TaGFyZWRQYWdlKj4ocGFn
ZSktPmZyZWU8Q29uZmlnPihsb2NrZXIsIGhhbmRsZSwgcHRyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTczLDcgKzczLDcgQEAgdm9pZCBJc29EZWFsbG9jYXRvcjxDb25maWc+OjpkZWFs
bG9jYXRlKGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCB2b2lkKiBwdHIpCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBDb25maWc+CiBCTk9fSU5MSU5FIHZvaWQgSXNvRGVhbGxvY2F0b3I8Q29uZmlnPjo6
c2NhdmVuZ2UoKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKCptX2xvY2sp
OworICAgIFNpbXBsZUxvY2sgbG9ja2VyKCptX2xvY2spOwogICAgIAogICAgIGZvciAodm9pZCog
cHRyIDogbV9vYmplY3RMb2cpCiAgICAgICAgIElzb1BhZ2U8Q29uZmlnPjo6cGFnZUZvcihwdHIp
LT5mcmVlKGxvY2tlciwgcHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
SXNvRGlyZWN0b3J5LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeS5oCmlu
ZGV4IGU3MmIyZDE2MTIxLi4wZmJmYTZlOTgxOCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29EaXJlY3RvcnkuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0Rp
cmVjdG9yeS5oCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAKICAgICBJc29IZWFwSW1w
bDxDb25maWc+JiBoZWFwKCkgeyByZXR1cm4gbV9oZWFwOyB9CiAgICAgCi0gICAgdmlydHVhbCB2
b2lkIGRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvUGFnZTxDb25m
aWc+KiwgSXNvUGFnZVRyaWdnZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVjb21lKGNv
bnN0IFNpbXBsZUxvY2smLCBJc29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJpZ2dlcikgPSAwOwog
ICAgIAogcHJvdGVjdGVkOgogICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIG1faGVhcDsKQEAgLTY1
LDkgKzY1LDkgQEAgcHVibGljOgogICAgIAogICAgIC8vIEZpbmQgdGhlIGZpcnN0IHBhZ2UgdGhh
dCBpcyBlbGlnaWJsZSBmb3IgYWxsb2NhdGlvbiBhbmQgcmV0dXJuIGl0LiBNYXkgcmV0dXJuIG51
bGwgaWYgdGhlcmUgaXMgbm8KICAgICAvLyBzdWNoIHRoaW5nLiBNYXkgYWxsb2NhdGUgYSBuZXcg
cGFnZSBpZiB3ZSBoYXZlIGFuIHVuY29tbWl0dGVkIHBhZ2UuCi0gICAgRWxpZ2liaWxpdHlSZXN1
bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
Jik7CisgICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZShjb25z
dCBTaW1wbGVMb2NrJik7CiAgICAgCi0gICAgdm9pZCBkaWRCZWNvbWUoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIElzb1BhZ2U8Q29uZmlnPiosIElzb1BhZ2VUcmlnZ2VyKSBvdmVycmlk
ZTsKKyAgICB2b2lkIGRpZEJlY29tZShjb25zdCBTaW1wbGVMb2NrJiwgSXNvUGFnZTxDb25maWc+
KiwgSXNvUGFnZVRyaWdnZXIpIG92ZXJyaWRlOwogICAgIAogICAgIC8vIFRoaXMgZ2V0cyBjYWxs
ZWQgZnJvbSBhIGJ1bGsgZGVjb21taXQgZnVuY3Rpb24gaW4gdGhlIFNjYXZlbmdlciwgc28gbm8g
bG9ja3MgYXJlIGhlbGQuIFRoaXMgZnVuY3Rpb24KICAgICAvLyBuZWVkcyB0byBnZXQgdGhlIGhl
YXAgbG9jay4KQEAgLTc1LDE2ICs3NSwxNiBAQCBwdWJsaWM6CiAgICAgCiAgICAgLy8gSXRlcmF0
ZSBvdmVyIGFsbCBlbXB0eSBhbmQgY29tbWl0dGVkIHBhZ2VzLCBhbmQgcHV0IHRoZW0gaW50byB0
aGUgdmVjdG9yLiBUaGlzIGFsc28gcmVjb3JkcyB0aGUKICAgICAvLyBwYWdlcyBhcyBiZWluZyBk
ZWNvbW1pdHRlZC4gSXQncyB0aGUgY2FsbGVyJ3Mgam9iIHRvIGRvIHRoZSBhY3R1YWwgZGVjb21t
aXR0aW5nLgotICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYs
IFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgU2lt
cGxlTG9jayYsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYpOwogI2lmIEJVU0UoUEFSVElBTF9T
Q0FWRU5HRSkKLSAgICB2b2lkIHNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNj
YXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IFNpbXBsZUxvY2smLCBWZWN0b3I8RGVmZXJyZWRE
ZWNvbW1pdD4mKTsKICNlbmRpZgogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2
b2lkIGZvckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBj
b25zdCBGdW5jJik7CisgICAgdm9pZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBTaW1wbGVM
b2NrJiwgY29uc3QgRnVuYyYpOwogICAgIAogcHJpdmF0ZToKLSAgICB2b2lkIHNjYXZlbmdlUGFn
ZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jiwgc2l6ZV90LCBWZWN0b3I8RGVmZXJyZWRE
ZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNjYXZlbmdlUGFnZShjb25zdCBTaW1wbGVMb2NrJiwgc2l6
ZV90LCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKIAogICAgIHN0ZDo6YXJyYXk8UGFja2Vk
QWxpZ25lZFB0cjxJc29QYWdlPENvbmZpZz4sIElzb1BhZ2U8Q29uZmlnPjo6cGFnZVNpemU+LCBu
dW1QYWdlcz4gbV9wYWdlcyB7IH07CiAgICAgLy8gTk9URTogSSBzdXBwb3NlIHRoYXQgdGhpcyBj
b3VsZCBiZSB0d28gYml0dmVjdG9ycy4gQnV0IGZyb20gd29ya2luZyBvbiB0aGUgR0MsIEkgZm91
bmQgdGhhdCB0aGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0
b3J5SW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVz
LmgKaW5kZXggODU1NDJkZjk4NTIuLmE2OTA5OTgwYzFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0lzb0RpcmVjdG9yeUlubGluZXMuaApAQCAtNDIsNyArNDIsNyBAQCBJc29EaXJlY3Rv
cnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46Oklzb0RpcmVjdG9yeShJc29IZWFwSW1wbDxDb25m
aWc+JiBoZWFwKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3Nl
ZE51bVBhZ2VzPgotRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmln
LCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKQorRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29EaXJlY3Rvcnk8Q29uZmln
LCBwYXNzZWROdW1QYWdlcz46OnRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IFNpbXBsZUxvY2smKQog
ewogICAgIHVuc2lnbmVkIHBhZ2VJbmRleCA9IChtX2VsaWdpYmxlIHwgfm1fY29tbWl0dGVkKS5m
aW5kQml0KG1fZmlyc3RFbGlnaWJsZU9yRGVjb21taXR0ZWQsIHRydWUpOwogICAgIG1fZmlyc3RF
bGlnaWJsZU9yRGVjb21taXR0ZWQgPSBwYWdlSW5kZXg7CkBAIC05MSw3ICs5MSw3IEBAIEVsaWdp
YmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+
Ojp0YWtlRmlyc3RFbGlnaWJsCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5zaWdu
ZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBh
Z2VzPjo6ZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgSXNv
UGFnZTxDb25maWc+KiBwYWdlLCBJc29QYWdlVHJpZ2dlciB0cmlnZ2VyKQordm9pZCBJc29EaXJl
Y3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZEJlY29tZShjb25zdCBTaW1wbGVMb2Nr
JiBsb2NrZXIsIElzb1BhZ2U8Q29uZmlnPiogcGFnZSwgSXNvUGFnZVRyaWdnZXIgdHJpZ2dlcikK
IHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIHVuc2ln
bmVkIHBhZ2VJbmRleCA9IHBhZ2UtPmluZGV4KCk7CkBAIC0xMjEsNyArMTIxLDcgQEAgdm9pZCBJ
c29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmRpZERlY29tbWl0KHVuc2lnbmVk
IGluZGV4KQogICAgIC8vIEZJWE1FOiBXZSBjb3VsZCBkbyB0aGlzIHdpdGhvdXQgZ3JhYmJpbmcg
dGhlIGxvY2suIEkganVzdCBkb3VidCB0aGF0IGl0IG1hdHRlcnMuIFRoaXMgaXMgbm90IGdvaW5n
CiAgICAgLy8gdG8gYmUgYSBmcmVxdWVudGx5IGV4ZWN1dGVkIHBhdGgsIGluIHRoZSBzZW5zZSB0
aGF0IGRlY29tbWl0dGluZyBwZXJmIHdpbGwgYmUgZG9taW5hdGVkIGJ5IHRoZQogICAgIC8vIHN5
c2NhbGwgaXRzZWxmICh3aGljaCBoYXMgdG8gZG8gbWFueSBoYXJkIHRoaW5ncykuCi0gICAgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bV9oZWFwLmxvY2spOworICAgIFNpbXBs
ZUxvY2sgbG9ja2VyKHRoaXMtPm1faGVhcC5sb2NrKTsKICAgICBCQVNTRVJUKCEhbV9jb21taXR0
ZWRbaW5kZXhdKTsKICAgICB0aGlzLT5tX2hlYXAuaXNOb0xvbmdlckZyZWVhYmxlKG1fcGFnZXNb
aW5kZXhdLmdldCgpLCBJc29QYWdlQmFzZTo6cGFnZVNpemUpOwogICAgIG1fY29tbWl0dGVkW2lu
ZGV4XSA9IGZhbHNlOwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgSXNvRGlyZWN0b3J5PENvbmZp
ZywgcGFzc2VkTnVtUGFnZXM+OjpkaWREZWNvbW1pdCh1bnNpZ25lZCBpbmRleCkKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KLXZvaWQgSXNv
RGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVBhZ2UoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIHNpemVfdCBpbmRleCwgVmVjdG9yPERlZmVycmVkRGVjb21t
aXQ+JiBkZWNvbW1pdHMpCit2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2Vz
Pjo6c2NhdmVuZ2VQYWdlKGNvbnN0IFNpbXBsZUxvY2smLCBzaXplX3QgaW5kZXgsIFZlY3RvcjxE
ZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRo
aXMgcGFnZSBpcyBub3cgb2ZmIGxpbWl0cy4KICAgICBtX2VtcHR5W2luZGV4XSA9IGZhbHNlOwpA
QCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFn
ZXM+OjpzY2F2ZW5nZVBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11CiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElzb0RpcmVj
dG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiYgbG9ja2VyLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykK
K3ZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZShjb25z
dCBTaW1wbGVMb2NrJiBsb2NrZXIsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRz
KQogewogICAgIChtX2VtcHR5ICYgbV9jb21taXR0ZWQpLmZvckVhY2hTZXRCaXQoCiAgICAgICAg
IFsmXSAoc2l6ZV90IGluZGV4KSB7CkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBJc29EaXJlY3Rv
cnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4KIAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKIHRlbXBsYXRlPHR5cGVuYW1l
IENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElzb0RpcmVjdG9yeTxDb25m
aWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29t
bWl0cykKK3ZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5n
ZVRvSGlnaFdhdGVybWFyayhjb25zdCBTaW1wbGVMb2NrJiBsb2NrZXIsIFZlY3RvcjxEZWZlcnJl
ZERlY29tbWl0PiYgZGVjb21taXRzKQogewogICAgIChtX2VtcHR5ICYgbV9jb21taXR0ZWQpLmZv
ckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CkBAIC0xNjYsNyArMTY2
LDcgQEAgdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdl
VG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG8KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmln
LCB1bnNpZ25lZCBwYXNzZWROdW1QYWdlcz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lk
IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6Zm9yRWFjaENvbW1pdHRlZFBh
Z2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmIGZ1bmMpCit2b2lk
IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6Zm9yRWFjaENvbW1pdHRlZFBh
Z2UoY29uc3QgU2ltcGxlTG9jayYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgbV9jb21taXR0
ZWQuZm9yRWFjaFNldEJpdCgKICAgICAgICAgWyZdIChzaXplX3QgaW5kZXgpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaCBiL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvSGVhcEltcGwuaAppbmRleCAwYmFhODA4ODg2Yi4uZTY1YzAwMGVmYmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGwuaAorKysgYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKQEAgLTEwNSwxMSArMTA1LDExIEBAIGNs
YXNzIElzb0hlYXBJbXBsIGZpbmFsIDogcHVibGljIElzb0hlYXBJbXBsQmFzZSB7CiBwdWJsaWM6
CiAgICAgSXNvSGVhcEltcGwoKTsKICAgICAKLSAgICBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+
IHRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBF
bGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IHRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IFNpbXBsZUxv
Y2smKTsKICAgICAKICAgICAvLyBDYWxsYmFja3MgZnJvbSBkaXJlY3RvcnkuCi0gICAgdm9pZCBk
aWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JiwgSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklubGluZURpcmVjdG9yeT4qKTsKLSAg
ICB2b2lkIGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46
Om51bVBhZ2VzPiopOworICAgIHZvaWQgZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29u
c3QgU2ltcGxlTG9jayYsIElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJl
Y3Rvcnk+Kik7CisgICAgdm9pZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBT
aW1wbGVMb2NrJiwgSXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+
OjpudW1QYWdlcz4qKTsKICAgICAKICAgICB2b2lkIHNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERl
Y29tbWl0PiYpIG92ZXJyaWRlOwogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKQEAgLTEyNCwx
NyArMTI0LDE3IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBudW1Db21taXR0ZWRQYWdlcygpOwog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoRGlyZWN0
b3J5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJik7CisgICAgdm9p
ZCBmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IFNpbXBsZUxvY2smLCBjb25zdCBGdW5jJik7CiAgICAg
CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hDb21taXR0ZWRQ
YWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJik7CisgICAgdm9p
ZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBTaW1wbGVMb2NrJiwgY29uc3QgRnVuYyYpOwog
ICAgIAogICAgIC8vIFRoaXMgaXMgb25seSBhY2N1cmF0ZSB3aGVuIGFsbCB0aHJlYWRzIGFyZSBz
Y2F2ZW5nZWQuIE90aGVyd2lzZSBpdCB3aWxsIG92ZXJlc3RpbWF0ZS4KICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaExpdmVPYmplY3QoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmKTsKKyAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0
KGNvbnN0IFNpbXBsZUxvY2smLCBjb25zdCBGdW5jJik7CiAKICAgICBBbGxvY2F0aW9uTW9kZSB1
cGRhdGVBbGxvY2F0aW9uTW9kZSgpOwotICAgIHZvaWQqIGFsbG9jYXRlRnJvbVNoYXJlZChjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CisgICAgdm9p
ZCogYWxsb2NhdGVGcm9tU2hhcmVkKGNvbnN0IFNpbXBsZUxvY2smLCBib29sIGFib3J0T25GYWls
dXJlKTsKIAogcHJpdmF0ZToKICAgICBQYWNrZWRQdHI8SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+
PiBtX2hlYWREaXJlY3RvcnkgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9J
c29IZWFwSW1wbElubGluZXMuaAppbmRleCA3ZjBmYzMxMWNhNC4uMTNjMmNmYjY4YjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmgKKysrIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaApAQCAtNDEsNyArNDEs
NyBAQCBJc29IZWFwSW1wbDxDb25maWc+OjpJc29IZWFwSW1wbCgpCiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZz4KLUVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvSGVhcEltcGw8Q29u
ZmlnPjo6dGFrZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9j
a2VyKQorRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiBJc29IZWFwSW1wbDxDb25maWc+Ojp0YWtl
Rmlyc3RFbGlnaWJsZShjb25zdCBTaW1wbGVMb2NrJiBsb2NrZXIpCiB7CiAgICAgaWYgKG1faXNJ
bmxpbmVEaXJlY3RvcnlFbGlnaWJsZU9yRGVjb21taXR0ZWQpIHsKICAgICAgICAgRWxpZ2liaWxp
dHlSZXN1bHQ8Q29uZmlnPiByZXN1bHQgPSBtX2lubGluZURpcmVjdG9yeS50YWtlRmlyc3RFbGln
aWJsZShsb2NrZXIpOwpAQCAtOTQsMTQgKzk0LDE0IEBAIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZp
Zz4gSXNvSGVhcEltcGw8Q29uZmlnPjo6dGFrZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2Nr
CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmln
Pjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiYsIElzb0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+KiBk
aXJlY3RvcnkpCit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JE
ZWNvbW1pdGVkKGNvbnN0IFNpbXBsZUxvY2smLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdl
c0luSW5saW5lRGlyZWN0b3J5PiogZGlyZWN0b3J5KQogewogICAgIFJFTEVBU0VfQkFTU0VSVChk
aXJlY3RvcnkgPT0gJm1faW5saW5lRGlyZWN0b3J5KTsKICAgICBtX2lzSW5saW5lRGlyZWN0b3J5
RWxpZ2libGVPckRlY29tbWl0dGVkID0gdHJ1ZTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21t
aXRlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgSXNvRGlyZWN0b3J5PENvbmZpZywg
SXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1QYWdlcz4qIGRpcmVjdG9yeSkKK3ZvaWQgSXNv
SGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29uc3QgU2lt
cGxlTG9jayYsIElzb0RpcmVjdG9yeTxDb25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6
bnVtUGFnZXM+KiBkaXJlY3RvcnkpCiB7CiAgICAgUkVMRUFTRV9CQVNTRVJUKG1fZmlyc3RFbGln
aWJsZU9yRGVjb21taXRlZERpcmVjdG9yeSk7CiAgICAgYXV0byogZGlyZWN0b3J5UGFnZSA9IElz
b0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6cGFnZUZvcihkaXJlY3RvcnkpOwpAQCAtMTEyLDcgKzEx
Miw3IEBAIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29t
bWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+
CiB2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlKFZlY3RvcjxEZWZlcnJlZERlY29t
bWl0PiYgZGVjb21taXRzKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKHRo
aXMtPmxvY2spOworICAgIFNpbXBsZUxvY2sgbG9ja2VyKHRoaXMtPmxvY2spOwogICAgIGZvckVh
Y2hEaXJlY3RvcnkoCiAgICAgICAgIGxvY2tlciwKICAgICAgICAgWyZdIChhdXRvJiBkaXJlY3Rv
cnkpIHsKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZl
bmdlKFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYgZGVjb21taXRzKQogdGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnPgogdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpzY2F2ZW5nZVRvSGlnaFdhdGVy
bWFyayhWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHsKLSAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5sb2NrKTsKKyAgICBTaW1wbGVMb2NrIGxvY2tl
cih0aGlzLT5sb2NrKTsKICAgICBpZiAoIW1fZGlyZWN0b3J5SGlnaFdhdGVybWFyaykKICAgICAg
ICAgbV9pbmxpbmVEaXJlY3Rvcnkuc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsobG9ja2VyLCBkZWNv
bW1pdHMpOwogICAgIGZvciAoSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFk
RGlyZWN0b3J5LmdldCgpOyBwYWdlOyBwYWdlID0gcGFnZS0+bmV4dCkgewpAQCAtMTU2LDcgKzE1
Niw3IEBAIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46OmRlYWxsb2NhdG9yT2Zmc2V0KCkK
IHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46
Om51bUxpdmVPYmplY3RzKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0
aGlzLT5sb2NrKTsKKyAgICBTaW1wbGVMb2NrIGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICB1bnNp
Z25lZCByZXN1bHQgPSAwOwogICAgIGZvckVhY2hMaXZlT2JqZWN0KAogICAgICAgICBsb2NrZXIs
CkBAIC0xNjksNyArMTY5LDcgQEAgdW5zaWduZWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6bnVtTGl2
ZU9iamVjdHMoKQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdW5zaWduZWQgSXNvSGVhcElt
cGw8Q29uZmlnPjo6bnVtQ29tbWl0dGVkUGFnZXMoKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4gbG9ja2VyKHRoaXMtPmxvY2spOworICAgIFNpbXBsZUxvY2sgbG9ja2VyKHRoaXMtPmxv
Y2spOwogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgZm9yRWFjaENvbW1pdHRlZFBhZ2Uo
CiAgICAgICAgIGxvY2tlciwKQEAgLTE4MSw3ICsxODEsNyBAQCB1bnNpZ25lZCBJc29IZWFwSW1w
bDxDb25maWc+OjpudW1Db21taXR0ZWRQYWdlcygpCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZp
Zz4KIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZv
ckVhY2hEaXJlY3RvcnkoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMm
IGZ1bmMpCit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkoY29uc3Qg
U2ltcGxlTG9jayYsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAgZnVuYyhtX2lubGluZURpcmVj
dG9yeSk7CiAgICAgZm9yIChJc29EaXJlY3RvcnlQYWdlPENvbmZpZz4qIHBhZ2UgPSBtX2hlYWRE
aXJlY3RvcnkuZ2V0KCk7IHBhZ2U7IHBhZ2UgPSBwYWdlLT5uZXh0KQpAQCAtMTkwLDcgKzE5MCw3
IEBAIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaERpcmVjdG9yeShjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgog
dGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFj
aENvbW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBjb25z
dCBGdW5jJiBmdW5jKQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoQ29tbWl0dGVk
UGFnZShjb25zdCBTaW1wbGVMb2NrJiBsb2NrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMpCiB7CiAgICAg
Zm9yRWFjaERpcmVjdG9yeSgKICAgICAgICAgbG9ja2VyLApAQCAtMjAxLDcgKzIwMSw3IEBAIHZv
aWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYgbG9jCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hMaXZl
T2JqZWN0KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgY29uc3QgRnVuYyYg
ZnVuYykKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29uc3Qg
U2ltcGxlTG9jayYgbG9ja2VyLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGZvckVhY2hDb21t
aXR0ZWRQYWdlKAogICAgICAgICBsb2NrZXIsCkBAIC0zMDUsNyArMzA1LDcgQEAgQWxsb2NhdGlv
bk1vZGUgSXNvSGVhcEltcGw8Q29uZmlnPjo6dXBkYXRlQWxsb2NhdGlvbk1vZGUoKQogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkKiBJc29IZWFwSW1wbDxDb25maWc+OjphbGxv
Y2F0ZUZyb21TaGFyZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGJvb2wgYWJvcnRP
bkZhaWx1cmUpCit2b2lkKiBJc29IZWFwSW1wbDxDb25maWc+OjphbGxvY2F0ZUZyb21TaGFyZWQo
Y29uc3QgU2ltcGxlTG9jayYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7CiAgICAgc3RhdGljIGNv
bnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29QYWdlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuaApp
bmRleCBhMTUxY2Y5ODc5MS4uZDkxMDhjOTBmMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvUGFnZS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5o
CkBAIC03NywxOSArNzcsMTkgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQgaW5kZXgoKSBjb25z
dCB7IHJldHVybiBtX2luZGV4OyB9CiAgICAgCi0gICAgdm9pZCBmcmVlKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCB2b2lkKik7CisgICAgdm9pZCBmcmVlKGNvbnN0IFNpbXBsZUxvY2sm
LCB2b2lkKik7CiAKICAgICAvLyBDYWxsZWQgYWZ0ZXIgdGhpcyBwYWdlIGlzIGFscmVhZHkgc2Vs
ZWN0ZWQgZm9yIGFsbG9jYXRpb24uCi0gICAgRnJlZUxpc3Qgc3RhcnRBbGxvY2F0aW5nKGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBGcmVlTGlzdCBzdGFydEFsbG9jYXRpbmco
Y29uc3QgU2ltcGxlTG9jayYpOwogICAgIAogICAgIC8vIENhbGxlZCBhZnRlciB0aGUgYWxsb2Nh
dG9yIHBpY2tzIGFub3RoZXIgcGFnZSB0byByZXBsYWNlIHRoaXMgb25lLgotICAgIHZvaWQgc3Rv
cEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEZyZWVMaXN0KTsKKyAg
ICB2b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IFNpbXBsZUxvY2smLCBGcmVlTGlzdCk7CiAKICAg
ICBJc29EaXJlY3RvcnlCYXNlPENvbmZpZz4mIGRpcmVjdG9yeSgpIHsgcmV0dXJuIG1fZGlyZWN0
b3J5OyB9CiAgICAgYm9vbCBpc0luVXNlRm9yQWxsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1f
aXNJblVzZUZvckFsbG9jYXRpb247IH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5j
PgotICAgIHZvaWQgZm9yRWFjaExpdmVPYmplY3QoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYsIGNvbnN0IEZ1bmMmKTsKKyAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IFNpbXBs
ZUxvY2smLCBjb25zdCBGdW5jJik7CiAgICAgCiAgICAgSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVh
cCgpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5s
aW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlSW5saW5lcy5oCmluZGV4IGM1
Y2U4NzEyMDkxLi4wNzkwODUzZjE3ZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29QYWdlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlu
bGluZXMuaApAQCAtNjUsNyArNjUsNyBAQCBJc29QYWdlPENvbmZpZz4qIElzb1BhZ2U8Q29uZmln
Pjo6cGFnZUZvcih2b2lkKiBwdHIpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLXZv
aWQgSXNvUGFnZTxDb25maWc+OjpmcmVlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxv
Y2tlciwgdm9pZCogcGFzc2VkUHRyKQordm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUoY29uc3Qg
U2ltcGxlTG9jayYgbG9ja2VyLCB2b2lkKiBwYXNzZWRQdHIpCiB7CiAgICAgQkFTU0VSVCghbV9p
c1NoYXJlZCk7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0gc3RhdGljX2Nhc3Q8Y2hhcio+KHBhc3Nl
ZFB0cikgLSByZWludGVycHJldF9jYXN0PGNoYXIqPih0aGlzKTsKQEAgLTg3LDcgKzg3LDcgQEAg
dm9pZCBJc29QYWdlPENvbmZpZz46OmZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYg
bG9ja2VyLCB2b2lkKiBwYXNzZWRQdHIKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgot
RnJlZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpCitGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46OnN0YXJ0QWxsb2NhdGlu
Zyhjb25zdCBTaW1wbGVMb2NrJikKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9z
ZSA9IGZhbHNlOwogICAgIApAQCAtMjA4LDcgKzIwOCw3IEBAIEZyZWVMaXN0IElzb1BhZ2U8Q29u
ZmlnPjo6c3RhcnRBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb1BhZ2U8Q29uZmlnPjo6c3RvcEFs
bG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBGcmVlTGlzdCBm
cmVlTGlzdCkKK3ZvaWQgSXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyhjb25zdCBTaW1w
bGVMb2NrJiBsb2NrZXIsIEZyZWVMaXN0IGZyZWVMaXN0KQogewogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgCkBAIC0yMjksNyArMjI5LDcgQEAgdm9pZCBJ
c29QYWdlPENvbmZpZz46OnN0b3BBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRl
eD4mIGxvY2tlciwgRnJlZUwKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdGVtcGxhdGU8
dHlwZW5hbWUgRnVuYz4KLXZvaWQgSXNvUGFnZTxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYgZnVuYykKK3ZvaWQgSXNv
UGFnZTxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBTaW1wbGVMb2NrJiwgY29uc3Qg
RnVuYyYgZnVuYykKIHsKICAgICBmb3IgKHVuc2lnbmVkIHdvcmRJbmRleCA9IDA7IHdvcmRJbmRl
eCA8IGJpdHNBcnJheUxlbmd0aChudW1PYmplY3RzKTsgKyt3b3JkSW5kZXgpIHsKICAgICAgICAg
dW5zaWduZWQgd29yZCA9IG1fYWxsb2NCaXRzW3dvcmRJbmRleF07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXAuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvU2hhcmVkSGVhcC5oCmluZGV4IDVlYTUxZTVkMWZkLi5iZGFiN2E2MzE3NCAxMDA2NDQK
LS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwLmgKKysrIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwLmgKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0
ZToKIAogY2xhc3MgSXNvU2hhcmVkSGVhcCA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPElzb1No
YXJlZEhlYXA+IHsKIHB1YmxpYzoKLSAgICBJc29TaGFyZWRIZWFwKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mKQorICAgIElzb1NoYXJlZEhlYXAoY29uc3QgU2ltcGxlTG9jayYpCiAgICAg
ewogICAgIH0KIApAQCAtNjIsNyArNjIsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdGVt
cGxhdGU8dW5zaWduZWQ+Ci0gICAgdm9pZCogYWxsb2NhdGVTbG93KGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mLCBib29sIGFib3J0T25GYWlsdXJlKTsKKyAgICB2b2lkKiBhbGxvY2F0ZVNs
b3coY29uc3QgU2ltcGxlTG9jayYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOwogCiAgICAgSXNvU2hh
cmVkUGFnZSogbV9jdXJyZW50UGFnZSB7IG51bGxwdHIgfTsKICAgICBWYXJpYWRpY0J1bXBBbGxv
Y2F0b3IgbV9hbGxvY2F0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1NoYXJlZEhlYXBJbmxpbmVzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhl
YXBJbmxpbmVzLmgKaW5kZXggZGExOGU2ZTdiODYuLmVjYmMwZTkyOGE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZEhlYXBJbmxpbmVzLmgKKysrIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oCkBAIC01MSw3ICs1MSw3IEBA
IGlubGluZSBjb25zdGV4cHIgdW5zaWduZWQgY29tcHV0ZU9iamVjdFNpemVGb3JTaGFyZWRDZWxs
KHVuc2lnbmVkIG9iamVjdFNpemUpCiB0ZW1wbGF0ZTx1bnNpZ25lZCBwYXNzZWRPYmplY3RTaXpl
Pgogdm9pZCogSXNvU2hhcmVkSGVhcDo6YWxsb2NhdGVOZXcoYm9vbCBhYm9ydE9uRmFpbHVyZSkK
IHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihtdXRleCgpKTsKKyAgICBTaW1w
bGVMb2NrIGxvY2tlcihtdXRleCgpKTsKICAgICBjb25zdGV4cHIgdW5zaWduZWQgb2JqZWN0U2l6
ZSA9IGNvbXB1dGVPYmplY3RTaXplRm9yU2hhcmVkQ2VsbChwYXNzZWRPYmplY3RTaXplKTsKICAg
ICByZXR1cm4gbV9hbGxvY2F0b3IudGVtcGxhdGUgYWxsb2NhdGU8b2JqZWN0U2l6ZT4oCiAgICAg
ICAgIFsmXSAoKSAtPiB2b2lkKiB7CkBAIC02MCw3ICs2MCw3IEBAIHZvaWQqIElzb1NoYXJlZEhl
YXA6OmFsbG9jYXRlTmV3KGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB9CiAKIHRlbXBsYXRlPHVuc2ln
bmVkIHBhc3NlZE9iamVjdFNpemU+Ci1CTk9fSU5MSU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFs
bG9jYXRlU2xvdyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIGJvb2wgYWJv
cnRPbkZhaWx1cmUpCitCTk9fSU5MSU5FIHZvaWQqIElzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xv
dyhjb25zdCBTaW1wbGVMb2NrJiBsb2NrZXIsIGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7CiAgICAg
U2NhdmVuZ2VyJiBzY2F2ZW5nZXIgPSAqU2NhdmVuZ2VyOjpnZXQoKTsKICAgICBzY2F2ZW5nZXIu
ZGlkU3RhcnRHcm93aW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1NoYXJlZFBhZ2UuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZS5oCmlu
ZGV4IGJmZjcwYzI0YWNiLi4yYmU2YTA1YzMxYiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29TaGFyZWRQYWdlLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29T
aGFyZWRQYWdlLmgKQEAgLTM4LDkgKzM4LDkgQEAgcHVibGljOgogICAgIEJFWFBPUlQgc3RhdGlj
IElzb1NoYXJlZFBhZ2UqIHRyeUNyZWF0ZSgpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29u
ZmlnLCB0eXBlbmFtZSBUeXBlPgotICAgIHZvaWQgZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JiwgYXBpOjpJc29IZWFwPFR5cGU+Jiwgdm9pZCopOwotICAgIFZhcmlhZGljQnVtcEFs
bG9jYXRvciBzdGFydEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwot
ICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwor
ICAgIHZvaWQgZnJlZShjb25zdCBTaW1wbGVMb2NrJiwgYXBpOjpJc29IZWFwPFR5cGU+Jiwgdm9p
ZCopOworICAgIFZhcmlhZGljQnVtcEFsbG9jYXRvciBzdGFydEFsbG9jYXRpbmcoY29uc3QgU2lt
cGxlTG9jayYpOworICAgIHZvaWQgc3RvcEFsbG9jYXRpbmcoY29uc3QgU2ltcGxlTG9jayYpOwog
CiBwcml2YXRlOgogICAgIElzb1NoYXJlZFBhZ2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oCmluZGV4IGU0NDEwYmFkNjAwLi40YjE5MGIyMzMxZCAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRQYWdlSW5saW5lcy5o
CisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaApAQCAt
MzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAvLyBUaGlzIGlzIGJlY2F1c2UgZW1w
dHkgSXNvU2hhcmVkUGFnZSBpcyBzdGlsbCBzcGxpdCBpbnRvIHZhcmlvdXMgZGlmZmVyZW50IG9i
amVjdHMgdGhhdCBzaG91bGQga2VlcCBzb21lIHBhcnQgb2YgdmlydHVhbCBtZW1vcnkgcmVnaW9u
IGRlZGljYXRlZC4KIC8vIFdlIGNhbm5vdCBzZXQgdXAgYnVtcCBhbGxvY2F0aW9uIGZvciBzdWNo
IGEgcGFnZS4gTm90IGZyZWVpbmcgSXNvU2hhcmVkUGFnZXMgYXJlIE9LIHNpbmNlIElzb1NoYXJl
ZFBhZ2UgaXMgb25seSB1c2VkIGZvciB0aGUgbG93ZXIgdGllciBvZiBJc29IZWFwLgogdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnLCB0eXBlbmFtZSBUeXBlPgotdm9pZCBJc29TaGFyZWRQYWdlOjpm
cmVlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBhcGk6Oklzb0hlYXA8VHlwZT4mIGhh
bmRsZSwgdm9pZCogcHRyKQordm9pZCBJc29TaGFyZWRQYWdlOjpmcmVlKGNvbnN0IFNpbXBsZUxv
Y2smLCBhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmRsZSwgdm9pZCogcHRyKQogewogICAgIGF1dG8m
IGhlYXBJbXBsID0gaGFuZGxlLmltcGwoKTsKICAgICB1aW50OF90IGluZGV4ID0gKmluZGV4U2xv
dEZvcjxDb25maWc+KHB0cikgJiBJc29IZWFwSW1wbEJhc2U6Om1heEFsbG9jYXRpb25Gcm9tU2hh
cmVkTWFzazsKQEAgLTQ2LDcgKzQ2LDcgQEAgdm9pZCBJc29TaGFyZWRQYWdlOjpmcmVlKGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmQKICAgICBo
ZWFwSW1wbC5tX2F2YWlsYWJsZVNoYXJlZCB8PSAoMVUgPDwgaW5kZXgpOwogfQogCi1pbmxpbmUg
VmFyaWFkaWNCdW1wQWxsb2NhdG9yIElzb1NoYXJlZFBhZ2U6OnN0YXJ0QWxsb2NhdGluZyhjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK2lubGluZSBWYXJpYWRpY0J1bXBBbGxvY2F0b3Ig
SXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5nKGNvbnN0IFNpbXBsZUxvY2smKQogewogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKQEAgLTYxLDcgKzYxLDcg
QEAgaW5saW5lIFZhcmlhZGljQnVtcEFsbG9jYXRvciBJc29TaGFyZWRQYWdlOjpzdGFydEFsbG9j
YXRpbmcoY29uc3Qgc3RkOjpsb2NrX2d1YXIKICAgICByZXR1cm4gVmFyaWFkaWNCdW1wQWxsb2Nh
dG9yKHBheWxvYWRFbmQsIHJlbWFpbmluZyk7CiB9CiAKLWlubGluZSB2b2lkIElzb1NoYXJlZFBh
Z2U6OnN0b3BBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQoraW5saW5l
IHZvaWQgSXNvU2hhcmVkUGFnZTo6c3RvcEFsbG9jYXRpbmcoY29uc3QgU2ltcGxlTG9jayYpCiB7
CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5LmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnkuaAppbmRleCBhMGRiYzMw
Mzc0NC4uOGVmNDMxMTc0Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
VExTRGVhbGxvY2F0b3JFbnRyeS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExT
RGVhbGxvY2F0b3JFbnRyeS5oCkBAIC00Myw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICBNdXRleCBs
b2NrOwogICAgIAogcHJpdmF0ZToKLSAgICBJc29UTFNEZWFsbG9jYXRvckVudHJ5KGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBJc29UTFNEZWFsbG9jYXRvckVudHJ5KGNvbnN0
IFNpbXBsZUxvY2smKTsKIAogICAgIHZvaWQgY29uc3RydWN0KHZvaWQqIGVudHJ5KSBvdmVycmlk
ZTsKICAgICB2b2lkIHNjYXZlbmdlKHZvaWQqIGVudHJ5KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaApp
bmRleCBjOTUzNDI4MGNlOC4uNTMyYTZjMmVhYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9j
L2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmgKQEAgLTI4LDcgKzI4
LDcgQEAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgot
SXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25maWc+OjpJc29UTFNEZWFsbG9jYXRvckVudHJ5KGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorSXNvVExTRGVhbGxvY2F0b3JFbnRyeTxDb25m
aWc+OjpJc29UTFNEZWFsbG9jYXRvckVudHJ5KGNvbnN0IFNpbXBsZUxvY2smKQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTSW5saW5lcy5oCmluZGV4IDBkNGIyMDE5NGUwLi4xODIy
ZTZiYWVkYSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVz
LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmgKQEAgLTE4NCw3
ICsxODQsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogdm9pZCBJc29UTFM6OmVuc3VyZUhl
YXAoYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUpCiB7CiAgICAgaWYgKCFoYW5kbGUuaXNJbml0
aWFsaXplZCgpKSB7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKGhhbmRs
ZS5tX2luaXRpYWxpemF0aW9uTG9jayk7CisgICAgICAgIFNpbXBsZUxvY2sgbG9ja2VyKGhhbmRs
ZS5tX2luaXRpYWxpemF0aW9uTG9jayk7CiAgICAgICAgIGlmICghaGFuZGxlLmlzSW5pdGlhbGl6
ZWQoKSkKICAgICAgICAgICAgIGhhbmRsZS5pbml0aWFsaXplKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCmluZGV4IDBiYWU2MDc3MDFlLi5iZTJlOGQzZmE2
ZCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuY3BwCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmNwcApAQCAtMzEsNyArMzEs
NyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIERFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RP
UkFHRShJc29UTFNMYXlvdXQpOwogCi1Jc29UTFNMYXlvdXQ6Oklzb1RMU0xheW91dChjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0lzb1RMU0xheW91dDo6SXNvVExTTGF5b3V0KGNvbnN0
IFNpbXBsZUxvY2smKQogewogfQogCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgSXNvVExTTGF5b3V0
OjphZGQoSXNvVExTRW50cnkqIGVudHJ5KQogICAgIFJFTEVBU0VfQkFTU0VSVCghZW50cnktPm1f
bmV4dCk7CiAgICAgLy8gSXNvVExTTGF5b3V0OjpoZWFkKCkgZG9lcyBub3QgdGFrZSBhIGxvY2su
IFNvIHdlIHNob3VsZCBlbWl0IG1lbW9yeSBmZW5jZSB0byBtYWtlIHN1cmUgdGhhdCBuZXdseSBh
ZGRlZCBlbnRyeSBpcyBpbml0aWFsaXplZCB3aGVuIGl0IGlzIGNoYWluZWQgdG8gdGhpcyBsaW5r
ZWQtbGlzdC4KICAgICAvLyBFbWl0dGluZyBtZW1vcnkgZmVuY2UgaGVyZSBpcyBPSyBzaW5jZSB0
aGlzIGZ1bmN0aW9uIGlzIG5vdCBmcmVxdWVudGx5IGNhbGxlZC4KLSAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+IGxvY2tpbmcoYWRkaW5nTXV0ZXgpOworICAgIFNpbXBsZUxvY2sgbG9ja2luZyhh
ZGRpbmdNdXRleCk7CiAgICAgaWYgKG1faGVhZCkgewogICAgICAgICBSRUxFQVNFX0JBU1NFUlQo
bV90YWlsKTsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHJvdW5kVXBUb011bHRpcGxlT2YoZW50
cnktPmFsaWdubWVudCgpLCBtX3RhaWwtPmV4dGVudCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1RMU0xheW91dC5oCmluZGV4IDUwYzUwOTYzNjdlLi4xZDhhMzJhYzY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNMYXlvdXQuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1RMU0xheW91dC5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIElzb1RMU0Vu
dHJ5OwogCiBjbGFzcyBJc29UTFNMYXlvdXQgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxJc29U
TFNMYXlvdXQ+IHsKIHB1YmxpYzoKLSAgICBCRVhQT1JUIElzb1RMU0xheW91dChjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgQkVYUE9SVCBJc29UTFNMYXlvdXQoY29uc3QgU2lt
cGxlTG9jayYpOwogICAgIAogICAgIEJFWFBPUlQgdm9pZCBhZGQoSXNvVExTRW50cnkqKTsKICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTXV0ZXguaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvTXV0ZXguaAppbmRleCBlMThkZTg0MDhmYi4uZjZkYzY0YzgzMDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvTXV0ZXguaAorKysgYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL011dGV4LmgKQEAgLTM1LDYgKzM1LDExIEBACiAKIG5hbWVzcGFjZSBibWFs
bG9jIHsKIAorY2xhc3MgTXV0ZXg7CisKK3VzaW5nIExvY2sgPSBzdGQ6OnVuaXF1ZV9sb2NrPE11
dGV4PjsKK3VzaW5nIFNpbXBsZUxvY2sgPSBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+OworCiBjbGFz
cyBNdXRleCB7CiBwdWJsaWM6CiAgICAgY29uc3RleHByIE11dGV4KCkgPSBkZWZhdWx0OwpAQCAt
NTEsNyArNTYsNyBAQCBwcml2YXRlOgogfTsKIAogc3RhdGljIGlubGluZSB2b2lkIHNsZWVwKAot
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNv
bmRzIGR1cmF0aW9uKQorICAgIExvY2smIGxvY2ssIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMg
ZHVyYXRpb24pCiB7CiAgICAgaWYgKGR1cmF0aW9uID09IHN0ZDo6Y2hyb25vOjptaWxsaXNlY29u
ZHMoMCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYyLDcgKzY3LDcgQEAgc3RhdGljIGlubGluZSB2
b2lkIHNsZWVwKAogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgd2FpdFVudGlsRmFsc2UoCi0gICAg
c3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMg
c2xlZXBEdXJhdGlvbiwKKyAgICBMb2NrJiBsb2NrLCBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRz
IHNsZWVwRHVyYXRpb24sCiAgICAgYm9vbCYgY29uZGl0aW9uKQogewogICAgIHdoaWxlIChjb25k
aXRpb24pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5j
cHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwCmluZGV4IDE2ODc2MTk4
MGZhLi4zNDI2ZjYzM2U0OCAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9PYmpl
Y3RUeXBlLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwCkBA
IC0zOCw3ICszOCw3IEBAIE9iamVjdFR5cGUgb2JqZWN0VHlwZShIZWFwJiBoZWFwLCB2b2lkKiBv
YmplY3QpCiAgICAgICAgIGlmICghb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFR5
cGU6OlNtYWxsOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soSGVhcDo6
bXV0ZXgoKSk7CisgICAgICAgIExvY2sgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgaWYg
KGhlYXAuaXNMYXJnZShsb2NrLCBvYmplY3QpKQogICAgICAgICAgICAgcmV0dXJuIE9iamVjdFR5
cGU6OkxhcmdlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGVy
UHJvY2Vzcy5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BlclByb2Nlc3MuY3BwCmluZGV4
IDI5MmI5ZjU3ZWVkLi5jZWIxZGFjNzEwMSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9QZXJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BlclByb2Nl
c3MuY3BwCkBAIC02MCw3ICs2MCw3IEBAIHN0YXRpYyB2b2lkKiBhbGxvY2F0ZShzaXplX3Qgc2l6
ZSwgc2l6ZV90IGFsaWdubWVudCkKIAogUGVyUHJvY2Vzc0RhdGEqIGdldFBlclByb2Nlc3NEYXRh
KHVuc2lnbmVkIGhhc2gsIGNvbnN0IGNoYXIqIGRpc2FtYmlndWF0b3IsIHNpemVfdCBzaXplLCBz
aXplX3QgYWxpZ25tZW50KQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9jayhzX211
dGV4KTsKKyAgICBTaW1wbGVMb2NrIGxvY2soc19tdXRleCk7CiAKICAgICBQZXJQcm9jZXNzRGF0
YSomIGJ1Y2tldCA9IHNfdGFibGVbaGFzaCAlIHRhYmxlU2l6ZV07CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BlclByb2Nlc3MuaCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvUGVyUHJvY2Vzcy5oCmluZGV4IGQyNjM4MDE1NzgwLi4yZDU5Yzc5ZmZjNCAxMDA2NDQK
LS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9QZXJQcm9jZXNzLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9QZXJQcm9jZXNzLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIGJt
YWxsb2MgewogLy8geCA9IG9iamVjdC0+bV9maWVsZDsgLy8gT0sKIC8vIGlmIChnbG9iYWxGbGFn
KSB7IC4uLiB9IC8vIFVuZGVmaW5lZCBiZWhhdmlvci4KIC8vCi0vLyBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+IGxvY2soUGVyUHJvY2VzczxPYmplY3Q+OjptdXRleCgpKTsKKy8vIFNpbXBsZUxvY2sg
bG9jayhQZXJQcm9jZXNzPE9iamVjdD46Om11dGV4KCkpOwogLy8gT2JqZWN0KiBvYmplY3QgPSBQ
ZXJQcm9jZXNzPE9iamVjdD46OmdldChsb2NrKTsKIC8vIGlmIChnbG9iYWxGbGFnKSB7IC4uLiB9
IC8vIE9LLgogCkBAIC0xMDUsNyArMTA1LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBCTk9fSU5M
SU5FIHN0YXRpYyBUKiBnZXRTbG93Q2FzZSgpCiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+IGxvY2sobXV0ZXgoKSk7CisgICAgICAgIFNpbXBsZUxvY2sgbG9jayhtdXRleCgp
KTsKICAgICAgICAgaWYgKCFzX29iamVjdC5sb2FkKCkpIHsKICAgICAgICAgICAgIGlmIChzX2Rh
dGEtPmlzSW5pdGlhbGl6ZWQpCiAgICAgICAgICAgICAgICAgc19vYmplY3Quc3RvcmUoc3RhdGlj
X2Nhc3Q8VCo+KHNfZGF0YS0+bWVtb3J5KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1NjYXZlbmdlci5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZlbmdlci5j
cHAKaW5kZXggNjBmMDY3NmJmMzAuLjBlYjE0ZDhiMzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL1NjYXZlbmdlci5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9T
Y2F2ZW5nZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHN0cnVjdCBQcmludFRpbWUgewogCiBERUZJ
TkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0UoU2NhdmVuZ2VyKTsKIAotU2NhdmVuZ2VyOjpT
Y2F2ZW5nZXIoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitTY2F2ZW5nZXI6OlNjYXZl
bmdlcihjb25zdCBTaW1wbGVMb2NrJikKIHsKICAgICBCQVNTRVJUKCFFbnZpcm9ubWVudDo6Z2V0
KCktPmlzRGVidWdIZWFwRW5hYmxlZCgpKTsKIApAQCAtOTIsNyArOTIsNyBAQCBTY2F2ZW5nZXI6
OlNjYXZlbmdlcihjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIAogdm9pZCBTY2F2ZW5n
ZXI6OnJ1bigpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrKG11dGV4KCkpOwor
ICAgIFNpbXBsZUxvY2sgbG9jayhtdXRleCgpKTsKICAgICBydW5Ib2xkaW5nTG9jaygpOwogfQog
CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OnJ1bkhvbGRpbmdMb2NrKCkKIAog
dm9pZCBTY2F2ZW5nZXI6OnJ1blNvb24oKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4g
bG9jayhtdXRleCgpKTsKKyAgICBTaW1wbGVMb2NrIGxvY2sobXV0ZXgoKSk7CiAgICAgcnVuU29v
bkhvbGRpbmdMb2NrKCk7CiB9CiAKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFNjYXZlbmdlcjo6
ZGlkU3RhcnRHcm93aW5nKCkKIAogdm9pZCBTY2F2ZW5nZXI6OnNjaGVkdWxlSWZVbmRlck1lbW9y
eVByZXNzdXJlKHNpemVfdCBieXRlcykKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxv
Y2sobXV0ZXgoKSk7CisgICAgU2ltcGxlTG9jayBsb2NrKG11dGV4KCkpOwogICAgIHNjaGVkdWxl
SWZVbmRlck1lbW9yeVByZXNzdXJlSG9sZGluZ0xvY2soYnl0ZXMpOwogfQogCkBAIC0xNDgsNyAr
MTQ4LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OnNjaGVkdWxlSWZVbmRlck1lbW9yeVByZXNzdXJlSG9s
ZGluZ0xvY2soc2l6ZV90IGJ5dGVzKQogCiB2b2lkIFNjYXZlbmdlcjo6c2NoZWR1bGUoc2l6ZV90
IGJ5dGVzKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9jayhtdXRleCgpKTsKKyAg
ICBTaW1wbGVMb2NrIGxvY2sobXV0ZXgoKSk7CiAgICAgc2NoZWR1bGVJZlVuZGVyTWVtb3J5UHJl
c3N1cmVIb2xkaW5nTG9jayhieXRlcyk7CiAgICAgCiAgICAgaWYgKHdpbGxSdW5Tb29uKCkpCkBA
IC0xNzksMTQgKzE3OSwxNCBAQCBpbmxpbmUgdm9pZCBkdW1wU3RhdHMoKQogCiBzdGQ6OmNocm9u
bzo6bWlsbGlzZWNvbmRzIFNjYXZlbmdlcjo6dGltZVNpbmNlTGFzdEZ1bGxTY2F2ZW5nZSgpCiB7
Ci0gICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhtdXRleCgpKTsKKyAgICBMb2NrIGxv
Y2sobXV0ZXgoKSk7CiAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJhdGlvbl9jYXN0PHN0ZDo6
Y2hyb25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpIC0g
bV9sYXN0RnVsbFNjYXZlbmdlVGltZSk7CiB9CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0Up
CiBzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzIFNjYXZlbmdlcjo6dGltZVNpbmNlTGFzdFBhcnRp
YWxTY2F2ZW5nZSgpCiB7Ci0gICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhtdXRleCgp
KTsKKyAgICBMb2NrIGxvY2sobXV0ZXgoKSk7CiAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjpkdXJh
dGlvbl9jYXN0PHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHM+KHN0ZDo6Y2hyb25vOjpzdGVhZHlf
Y2xvY2s6Om5vdygpIC0gbV9sYXN0UGFydGlhbFNjYXZlbmdlVGltZSk7CiB9CiAjZW5kaWYKQEAg
LTIwMCw3ICsyMDAsNyBAQCB2b2lkIFNjYXZlbmdlcjo6ZW5hYmxlTWluaU1vZGUoKQogCiB2b2lk
IFNjYXZlbmdlcjo6c2NhdmVuZ2UoKQogewotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxv
Y2sobV9zY2F2ZW5naW5nTXV0ZXgpOworICAgIExvY2sgbG9jayhtX3NjYXZlbmdpbmdNdXRleCk7
CiAKICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIFNj
YXZlbmdlcjo6c2NhdmVuZ2UoKQogI2lmICFCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiAgICAgICAg
ICAgICBzaXplX3QgZGVmZXJyZWREZWNvbW1pdHMgPSAwOwogI2VuZGlmCi0gICAgICAgICAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgICAgICBT
aW1wbGVMb2NrIGxvY2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSBudW1IZWFwczsgaS0tOykgewogICAgICAgICAgICAgICAgIGlmICghaXNBY3RpdmVIZWFw
S2luZChzdGF0aWNfY2FzdDxIZWFwS2luZD4oaSkpKQogICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFNjYXZlbmdlcjo6c2NhdmVuZ2UoKQogCiAg
ICAgICAgIHsKICAgICAgICAgICAgIFByaW50VGltZSBwcmludFRpbWUoImZ1bGwgc2NhdmVuZ2Ug
bWFyayBhbGwgYXMgZWxpZ2libGUgdGltZSIpOwotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAgU2ltcGxlTG9jayBsb2Nr
KEhlYXA6Om11dGV4KCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSGVhcHM7
IGktLTspIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGljX2Nh
c3Q8SGVhcEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yNjcs
NyArMjY3LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OnNjYXZlbmdlKCkKICAgICB9CiAKICAgICB7Ci0g
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2sobXV0ZXgoKSk7CisgICAgICAgIExv
Y2sgbG9jayhtdXRleCgpKTsKICAgICAgICAgbV9sYXN0RnVsbFNjYXZlbmdlVGltZSA9IHN0ZDo6
Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwogICAgIH0KIH0KQEAgLTI3NSw3ICsyNzUsNyBA
QCB2b2lkIFNjYXZlbmdlcjo6c2NhdmVuZ2UoKQogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkK
IHZvaWQgU2NhdmVuZ2VyOjpwYXJ0aWFsU2NhdmVuZ2UoKQogewotICAgIHN0ZDo6dW5pcXVlX2xv
Y2s8TXV0ZXg+IGxvY2sobV9zY2F2ZW5naW5nTXV0ZXgpOworICAgIExvY2sgbG9jayhtX3NjYXZl
bmdpbmdNdXRleCk7CiAKICAgICBpZiAodmVyYm9zZSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVy
ciwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKQEAgLTI4Nyw3ICsyODcs
NyBAQCB2b2lkIFNjYXZlbmdlcjo6cGFydGlhbFNjYXZlbmdlKCkKICAgICAgICAgQnVsa0RlY29t
bWl0IGRlY29tbWl0dGVyOwogICAgICAgICB7CiAgICAgICAgICAgICBQcmludFRpbWUgcHJpbnRU
aW1lKCJcbnBhcnRpYWxTY2F2ZW5nZSB1bmRlciBsb2NrIHRpbWUiKTsKLSAgICAgICAgICAgIHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKKyAgICAgICAgICAgIFNp
bXBsZUxvY2sgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IG51bUhlYXBzOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0FjdGl2ZUhlYXBL
aW5kKHN0YXRpY19jYXN0PEhlYXBLaW5kPihpKSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgU2NhdmVuZ2VyOjpwYXJ0aWFsU2NhdmVuZ2Uo
KQogCiAgICAgICAgIHsKICAgICAgICAgICAgIFByaW50VGltZSBwcmludFRpbWUoInBhcnRpYWxT
Y2F2ZW5nZSBtYXJrIGFsbCBhcyBlbGlnaWJsZSB0aW1lIik7Ci0gICAgICAgICAgICBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgICAgICBTaW1wbGVM
b2NrIGxvY2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBu
dW1IZWFwczsgaS0tOykgewogICAgICAgICAgICAgICAgIGlmICghaXNBY3RpdmVIZWFwS2luZChz
dGF0aWNfY2FzdDxIZWFwS2luZD4oaSkpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
QEAgLTMzNSw3ICszMzUsNyBAQCB2b2lkIFNjYXZlbmdlcjo6cGFydGlhbFNjYXZlbmdlKCkKICAg
ICB9CiAKICAgICB7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2sobXV0ZXgo
KSk7CisgICAgICAgIExvY2sgbG9jayhtdXRleCgpKTsKICAgICAgICAgbV9sYXN0UGFydGlhbFNj
YXZlbmdlVGltZSA9IHN0ZDo6Y2hyb25vOjpzdGVhZHlfY2xvY2s6Om5vdygpOwogICAgIH0KIH0K
QEAgLTM0NSw3ICszNDUsNyBAQCBzaXplX3QgU2NhdmVuZ2VyOjpmcmVlYWJsZU1lbW9yeSgpCiB7
CiAgICAgc2l6ZV90IHJlc3VsdCA9IDA7CiAgICAgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgIFNpbXBsZUxvY2sgbG9jayhIZWFw
OjptdXRleCgpKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSGVhcHM7IGktLTspIHsK
ICAgICAgICAgICAgIGlmICghaXNBY3RpdmVIZWFwS2luZChzdGF0aWNfY2FzdDxIZWFwS2luZD4o
aSkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNDAyLDEyICs0MDIsMTIgQEAgdm9p
ZCBTY2F2ZW5nZXI6OnRocmVhZFJ1bkxvb3AoKQogICAgIAogICAgIHdoaWxlICh0cnVlKSB7CiAg
ICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpTbGVlcCkgewotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxNdXRleD4gbG9jayhtdXRleCgpKTsKKyAgICAgICAgICAgIExvY2sgbG9jayht
dXRleCgpKTsKICAgICAgICAgICAgIG1fY29uZGl0aW9uLndhaXQobG9jaywgWyZdKCkgeyByZXR1
cm4gbV9zdGF0ZSAhPSBTdGF0ZTo6U2xlZXA7IH0pOwogICAgICAgICB9CiAgICAgICAgIAogICAg
ICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6UnVuU29vbikgewotICAgICAgICAgICAgc3RkOjp1
bmlxdWVfbG9jazxNdXRleD4gbG9jayhtdXRleCgpKTsKKyAgICAgICAgICAgIExvY2sgbG9jayht
dXRleCgpKTsKICAgICAgICAgICAgIG1fY29uZGl0aW9uLndhaXRfZm9yKGxvY2ssIG1fd2FpdFRp
bWUsIFsmXSgpIHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OlJ1blNvb247IH0pOwogICAgICAg
ICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5n
ZXIuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmgKaW5kZXggNzI4YTc1ZTNi
ZGYuLmJjMTQ0YWRmNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NjYXZl
bmdlci5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmgKQEAgLTQyLDcg
KzQyLDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBTY2F2ZW5nZXIgOiBwdWJsaWMg
U3RhdGljUGVyUHJvY2VzczxTY2F2ZW5nZXI+IHsKIHB1YmxpYzoKLSAgICBCRVhQT1JUIFNjYXZl
bmdlcihjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgQkVYUE9SVCBTY2F2ZW5n
ZXIoY29uc3QgU2ltcGxlTG9jayYpOwogICAgIAogICAgIH5TY2F2ZW5nZXIoKSA9IGRlbGV0ZTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxMaW5lLmggYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsTGluZS5oCmluZGV4IDZiZTg1ZDNjNzM2Li45ZTcy
YTRkMzI3NiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbExpbmUuaAor
KysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsTGluZS5oCkBAIC0zNSw5ICszNSw5IEBA
IG5hbWVzcGFjZSBibWFsbG9jIHsKIAogY2xhc3MgU21hbGxMaW5lIHsKIHB1YmxpYzoKLSAgICB2
b2lkIHJlZihzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHVuc2lnbmVkIGNoYXIgPSAxKTsKLSAg
ICBib29sIGRlcmVmKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jik7Ci0gICAgdW5zaWduZWQgcmVm
Q291bnQoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mKSB7IHJldHVybiBtX3JlZkNvdW50OyB9Cisg
ICAgdm9pZCByZWYoTG9jayYsIHVuc2lnbmVkIGNoYXIgPSAxKTsKKyAgICBib29sIGRlcmVmKExv
Y2smKTsKKyAgICB1bnNpZ25lZCByZWZDb3VudChMb2NrJikgeyByZXR1cm4gbV9yZWZDb3VudDsg
fQogICAgIAogICAgIGNoYXIqIGJlZ2luKCk7CiAgICAgY2hhciogZW5kKCk7CkBAIC01MSwxMyAr
NTEsMTMgQEAgc3RhdGljX2Fzc2VydCgKIAogfTsKIAotaW5saW5lIHZvaWQgU21hbGxMaW5lOjpy
ZWYoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB1bnNpZ25lZCBjaGFyIHJlZkNvdW50KQoraW5s
aW5lIHZvaWQgU21hbGxMaW5lOjpyZWYoTG9jayYsIHVuc2lnbmVkIGNoYXIgcmVmQ291bnQpCiB7
CiAgICAgQkFTU0VSVCghbV9yZWZDb3VudCk7CiAgICAgbV9yZWZDb3VudCA9IHJlZkNvdW50Owog
fQogCi1pbmxpbmUgYm9vbCBTbWFsbExpbmU6OmRlcmVmKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+
JikKK2lubGluZSBib29sIFNtYWxsTGluZTo6ZGVyZWYoTG9jayYpCiB7CiAgICAgQkFTU0VSVCht
X3JlZkNvdW50KTsKICAgICAtLW1fcmVmQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1NtYWxsUGFnZS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbFBhZ2Uu
aAppbmRleCA2ZWFiNDMzNjA2MS4uZDM3NmNiYzFmZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvU21hbGxQYWdlLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFs
bFBhZ2UuaApAQCAtMzgsMTUgKzM4LDE1IEBAIGNsYXNzIFNtYWxsTGluZTsKIAogY2xhc3MgU21h
bGxQYWdlIDogcHVibGljIExpc3ROb2RlPFNtYWxsUGFnZT4gewogcHVibGljOgotICAgIHZvaWQg
cmVmKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jik7Ci0gICAgYm9vbCBkZXJlZihzdGQ6OnVuaXF1
ZV9sb2NrPE11dGV4PiYpOwotICAgIHVuc2lnbmVkIHJlZkNvdW50KHN0ZDo6dW5pcXVlX2xvY2s8
TXV0ZXg+JikgeyByZXR1cm4gbV9yZWZDb3VudDsgfQorICAgIHZvaWQgcmVmKExvY2smKTsKKyAg
ICBib29sIGRlcmVmKExvY2smKTsKKyAgICB1bnNpZ25lZCByZWZDb3VudChMb2NrJikgeyByZXR1
cm4gbV9yZWZDb3VudDsgfQogICAgIAogICAgIHNpemVfdCBzaXplQ2xhc3MoKSB7IHJldHVybiBt
X3NpemVDbGFzczsgfQogICAgIHZvaWQgc2V0U2l6ZUNsYXNzKHNpemVfdCBzaXplQ2xhc3MpIHsg
bV9zaXplQ2xhc3MgPSBzaXplQ2xhc3M7IH0KICAgICAKLSAgICBib29sIGhhc0ZyZWVMaW5lcyhz
dGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYpIGNvbnN0IHsgcmV0dXJuIG1faGFzRnJlZUxpbmVzOyB9
Ci0gICAgdm9pZCBzZXRIYXNGcmVlTGluZXMoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBib29s
IGhhc0ZyZWVMaW5lcykgeyBtX2hhc0ZyZWVMaW5lcyA9IGhhc0ZyZWVMaW5lczsgfQorICAgIGJv
b2wgaGFzRnJlZUxpbmVzKExvY2smKSBjb25zdCB7IHJldHVybiBtX2hhc0ZyZWVMaW5lczsgfQor
ICAgIHZvaWQgc2V0SGFzRnJlZUxpbmVzKExvY2smLCBib29sIGhhc0ZyZWVMaW5lcykgeyBtX2hh
c0ZyZWVMaW5lcyA9IGhhc0ZyZWVMaW5lczsgfQogICAgIAogICAgIGJvb2wgaGFzUGh5c2ljYWxQ
YWdlcygpIHsgcmV0dXJuIG1faGFzUGh5c2ljYWxQYWdlczsgfQogICAgIHZvaWQgc2V0SGFzUGh5
c2ljYWxQYWdlcyhib29sIGhhc1BoeXNpY2FsUGFnZXMpIHsgbV9oYXNQaHlzaWNhbFBhZ2VzID0g
aGFzUGh5c2ljYWxQYWdlczsgfQpAQCAtNzksMTQgKzc5LDE0IEBAIHN0YXRpY19hc3NlcnQoCiAK
IHVzaW5nIExpbmVDYWNoZSA9IHN0ZDo6YXJyYXk8TGlzdDxTbWFsbFBhZ2U+LCBzaXplQ2xhc3ND
b3VudD47CiAKLWlubGluZSB2b2lkIFNtYWxsUGFnZTo6cmVmKHN0ZDo6dW5pcXVlX2xvY2s8TXV0
ZXg+JikKK2lubGluZSB2b2lkIFNtYWxsUGFnZTo6cmVmKExvY2smKQogewogICAgIEJBU1NFUlQo
IW1fc2xpZGUpOwogICAgICsrbV9yZWZDb3VudDsKICAgICBCQVNTRVJUKG1fcmVmQ291bnQpOwog
fQogCi1pbmxpbmUgYm9vbCBTbWFsbFBhZ2U6OmRlcmVmKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+
JikKK2lubGluZSBib29sIFNtYWxsUGFnZTo6ZGVyZWYoTG9jayYpCiB7CiAgICAgQkFTU0VSVCgh
bV9zbGlkZSk7CiAgICAgQkFTU0VSVChtX3JlZkNvdW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvU3RhdGljUGVyUHJvY2Vzcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9TdGF0aWNQZXJQcm9jZXNzLmgKaW5kZXggNzk0YjA2OWUzODAuLmIyMzkwNWRlNjc0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1N0YXRpY1BlclByb2Nlc3MuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1N0YXRpY1BlclByb2Nlc3MuaApAQCAtNzksNyArNzksNyBA
QCBwcml2YXRlOgogICAgIEJOT19JTkxJTkUgc3RhdGljIFQqIGdldFNsb3dDYXNlKCkKICAgICB7
CiAgICAgICAgIHVzaW5nIFN0b3JhZ2UgPSB0eXBlbmFtZSBTdGF0aWNQZXJQcm9jZXNzU3RvcmFn
ZVRyYWl0czxUPjo6U3RvcmFnZTsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2Nr
KFN0b3JhZ2U6OnNfbXV0ZXgpOworICAgICAgICBTaW1wbGVMb2NrIGxvY2soU3RvcmFnZTo6c19t
dXRleCk7CiAgICAgICAgIGlmICghU3RvcmFnZTo6c19vYmplY3QubG9hZChzdGQ6Om1lbW9yeV9v
cmRlcl9jb25zdW1lKSkgewogICAgICAgICAgICAgVCogdCA9IG5ldyAoJlN0b3JhZ2U6OnNfbWVt
b3J5KSBUKGxvY2spOwogICAgICAgICAgICAgU3RvcmFnZTo6c19vYmplY3Quc3RvcmUodCwgc3Rk
OjptZW1vcnlfb3JkZXJfcmVsZWFzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1ZNSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5jcHAKaW5kZXgg
YWRmMjE2NzFlYmQuLjk1NWJkMDk0N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1ZNSGVhcC5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCkBA
IC0zMSw3ICszMSw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogREVGSU5FX1NUQVRJQ19QRVJf
UFJPQ0VTU19TVE9SQUdFKFZNSGVhcCk7CiAKLVZNSGVhcDo6Vk1IZWFwKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mKQorVk1IZWFwOjpWTUhlYXAoY29uc3QgU2ltcGxlTG9jayYpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmggYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCmluZGV4IDY4ZjBhYmU2YWQ1Li44MjQyYzM1ZTY2OCAx
MDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaAorKysgYi9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oCkBAIC00Nyw3ICs0Nyw3IEBAIHR5cGVkZWYgZW51bSB7
IFN5bmMsIEFzeW5jIH0gU2NhdmVuZ2VNb2RlOwogCiBjbGFzcyBWTUhlYXAgOiBwdWJsaWMgU3Rh
dGljUGVyUHJvY2VzczxWTUhlYXA+IHsKIHB1YmxpYzoKLSAgICBWTUhlYXAoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYpOworICAgIFZNSGVhcChjb25zdCBTaW1wbGVMb2NrJik7CiAgICAg
CiAgICAgTGFyZ2VSYW5nZSB0cnlBbGxvY2F0ZUxhcmdlQ2h1bmsoc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3Bw
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcAppbmRleCAwYmI4Mjk2OTJhYy4uNTFm
ZDMwOTcxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5jcHAKKysr
IGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHN0
YXRpYyBjb25zdCBtYWxsb2NfaW50cm9zcGVjdGlvbl90IHpvbmVJbnRyb3NwZWN0ID0gewogICAg
IC5zdGF0aXN0aWNzID0gYm1hbGxvYzo6c3RhdGlzdGljcwogfTsKIAotWm9uZTo6Wm9uZShjb25z
dCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK1pvbmU6OlpvbmUoY29uc3QgU2ltcGxlTG9jayYp
CiB7CiAgICAgbWFsbG9jX3pvbmVfdDo6c2l6ZSA9ICZibWFsbG9jOjp6b25lU2l6ZTsKICAgICBt
YWxsb2Nfem9uZV90Ojp6b25lX25hbWUgPSAiV2ViS2l0IE1hbGxvYyI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9u
ZS5oCmluZGV4IGY1ZDY0OTVhNDFlLi45NjkyMDkwZmI1MiAxMDA2NDQKLS0tIGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9ab25lLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmgK
QEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIC8vIEVub3VnaCBjYXBhY2l0eSB0byB0cmFj
ayBhIDY0R0IgaGVhcCwgc28gcHJvYmFibHkgZW5vdWdoIGZvciBhbnl0aGluZy4KICAgICBzdGF0
aWMgY29uc3RleHByIHNpemVfdCBjYXBhY2l0eSA9IDIwNDg7CiAKLSAgICBab25lKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICBab25lKGNvbnN0IFNpbXBsZUxvY2smKTsKICAg
ICBab25lKHRhc2tfdCwgbWVtb3J5X3JlYWRlcl90LCB2bV9hZGRyZXNzX3QpOwogCiAgICAgdm9p
ZCBhZGRSYW5nZShSYW5nZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL2Jt
YWxsb2MuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ibWFsbG9jLmNwcAppbmRleCAxNmJl
MzU4OWIzOS4uNmIxZjgzNGVhMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
Ym1hbGxvYy5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ibWFsbG9jLmNwcApAQCAt
NTgsNyArNTgsNyBAQCB2b2lkKiB0cnlMYXJnZVplcm9lZE1lbWFsaWduVmlydHVhbChzaXplX3Qg
cmVxdWlyZWRBbGlnbm1lbnQsIHNpemVfdCByZXF1ZXN0ZWRTaQogICAgICAgICBraW5kID0gbWFw
VG9BY3RpdmVIZWFwS2luZChraW5kKTsKICAgICAgICAgSGVhcCYgaGVhcCA9IFBlclByb2Nlc3M8
UGVySGVhcEtpbmQ8SGVhcD4+OjpnZXQoKS0+YXQoa2luZCk7CiAKLSAgICAgICAgc3RkOjp1bmlx
dWVfbG9jazxNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKKyAgICAgICAgTG9jayBsb2NrKEhl
YXA6Om11dGV4KCkpOwogICAgICAgICByZXN1bHQgPSBoZWFwLmFsbG9jYXRlTGFyZ2UobG9jaywg
YWxpZ25tZW50LCBzaXplLCBGYWlsdXJlQWN0aW9uOjpSZXR1cm5OdWxsKTsKICAgICAgICAgaWYg
KHJlc3VsdCkgewogICAgICAgICAgICAgLy8gRG9uJ3QgdHJhY2sgdGhpcyBhcyBkaXJ0eSBtZW1v
cnkgdGhhdCBkaWN0YXRlcyBob3cgd2UgZHJpdmUgdGhlIHNjYXZlbmdlci4KQEAgLTgyLDcgKzgy
LDcgQEAgdm9pZCBmcmVlTGFyZ2VWaXJ0dWFsKHZvaWQqIG9iamVjdCwgc2l6ZV90IHNpemUsIEhl
YXBLaW5kIGtpbmQpCiAgICAgfQogICAgIGtpbmQgPSBtYXBUb0FjdGl2ZUhlYXBLaW5kKGtpbmQp
OwogICAgIEhlYXAmIGhlYXAgPSBQZXJQcm9jZXNzPFBlckhlYXBLaW5kPEhlYXA+Pjo6Z2V0KCkt
PmF0KGtpbmQpOwotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgo
KSk7CisgICAgTG9jayBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgIC8vIEJhbGFuY2Ugb3V0IHRo
ZSBleHRlcm5hbERlY29tbWl0IHdoZW4gd2UgYWxsb2NhdGVkIHRoZSB6ZXJvZWQgdmlydHVhbCBt
ZW1vcnkuCiAgICAgaGVhcC5leHRlcm5hbENvbW1pdChsb2NrLCBvYmplY3QsIHNpemUpOwogICAg
IGhlYXAuZGVhbGxvY2F0ZUxhcmdlKGxvY2ssIG9iamVjdCk7CkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBzZXRTY2F2ZW5nZXJUaHJlYWRRT1NDbGFzcyhxb3NfY2xhc3NfdCBvdmVycmlkZUNsYXNz
KQogewogICAgIGlmIChEZWJ1Z0hlYXA6OnRyeUdldCgpKQogICAgICAgICByZXR1cm47Ci0gICAg
c3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKKyAgICBMb2NrIGxv
Y2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgU2NhdmVuZ2VyOjpnZXQoKS0+c2V0U2NhdmVuZ2VyVGhy
ZWFkUU9TQ2xhc3Mob3ZlcnJpZGVDbGFzcyk7CiB9CiAjZW5kaWYK
</data>
<flag name="review"
          id="403864"
          type_id="1"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>388096</attachid>
            <date>2020-01-17 15:27:41 -0800</date>
            <delta_ts>2020-01-17 16:43:05 -0800</delta_ts>
            <desc>PATCH</desc>
            <filename>bug-206044.diff</filename>
            <type>text/plain</type>
            <size>74173</size>
            <attacher name="Basuke Suzuki">basuke</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZyBiL1NvdXJjZS9ibWFsbG9jL0No
YW5nZUxvZwppbmRleCAxYWU2NmY3YzIwNC4uMmM3NTkxM2VmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzEgQEAKKzIwMjAtMDEtMTcgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNv
bnkuY29tPgorCisgICAgICAgIFtibWFsbG9jXSBEZWZpbmUgYWxpYXMgZm9yIHN0ZDo6bG9ja19n
dWFyZCBhbmQgc3RkOjp1bmlxdWVfbG9jayBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5CisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY0NDMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGVyZSBhcmUgdHdvIHR5
cGVzIG9mIGxvY2sgaG9sZGVyIGluIGJtYWxsb2M6IHN0ZDo6bG9ja19ndWFyZCBhbmQgc3RkOjp1
bmlxdWVfbG9jay4gVGhlaXIgbmFtZXMgYXJlIHJlbGF0aXZlbHkgbG9uZworICAgICAgICBhbmQg
YSBiaXQgaGFyZGVyIHRvIGRpc3Rpbmd1aXNoIHRoZW0gZWFjaCBvdGhlci4gRGVmaW5lIHNpbXBs
ZSB0eXBlIG5hbWUgZm9yIHRoZW0sIExvY2tIb2xkZXIgYW5kIFVuaXF1ZUxvY2tIb2xkZXIuCisK
KyAgICAgICAgKiBibWFsbG9jL0FsbElzb0hlYXBzLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkFs
bElzb0hlYXBzOjpBbGxJc29IZWFwcyk6CisgICAgICAgIChibWFsbG9jOjpBbGxJc29IZWFwczo6
YWRkKToKKyAgICAgICAgKGJtYWxsb2M6OkFsbElzb0hlYXBzOjpoZWFkKToKKyAgICAgICAgKiBi
bWFsbG9jL0FsbElzb0hlYXBzLmg6CisgICAgICAgICogYm1hbGxvYy9BbGxvY2F0b3IuY3BwOgor
ICAgICAgICAoYm1hbGxvYzo6QWxsb2NhdG9yOjpyZWFsbG9jYXRlSW1wbCk6CisgICAgICAgIChi
bWFsbG9jOjpBbGxvY2F0b3I6OnJlZmlsbEFsbG9jYXRvclNsb3dDYXNlKToKKyAgICAgICAgKGJt
YWxsb2M6OkFsbG9jYXRvcjo6YWxsb2NhdGVMYXJnZSk6CisgICAgICAgICogYm1hbGxvYy9Dcnlw
dG9SYW5kb20uY3BwOgorICAgICAgICAoYm1hbGxvYzo6QVJDNFJhbmRvbU51bWJlckdlbmVyYXRv
cjo6QVJDNFJhbmRvbU51bWJlckdlbmVyYXRvcik6CisgICAgICAgIChibWFsbG9jOjpBUkM0UmFu
ZG9tTnVtYmVyR2VuZXJhdG9yOjpyYW5kb21WYWx1ZXMpOgorICAgICAgICAqIGJtYWxsb2MvRGVh
bGxvY2F0b3IuY3BwOgorICAgICAgICAoYm1hbGxvYzo6RGVhbGxvY2F0b3I6OnNjYXZlbmdlKToK
KyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjpwcm9jZXNzT2JqZWN0TG9nKToKKyAgICAg
ICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjpkZWFsbG9jYXRlU2xvd0Nhc2UpOgorICAgICAgICAq
IGJtYWxsb2MvRGVhbGxvY2F0b3IuaDoKKyAgICAgICAgKGJtYWxsb2M6OkRlYWxsb2NhdG9yOjps
aW5lQ2FjaGUpOgorICAgICAgICAqIGJtYWxsb2MvRGVidWdIZWFwLmNwcDoKKyAgICAgICAgKGJt
YWxsb2M6OkRlYnVnSGVhcDo6RGVidWdIZWFwKToKKyAgICAgICAgKGJtYWxsb2M6OkRlYnVnSGVh
cDo6bWVtYWxpZ25MYXJnZSk6CisgICAgICAgIChibWFsbG9jOjpEZWJ1Z0hlYXA6OmZyZWVMYXJn
ZSk6CisgICAgICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAuaDoKKyAgICAgICAgKiBibWFsbG9jL0Rl
ZmVycmVkVHJpZ2dlci5oOgorICAgICAgICAqIGJtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5l
cy5oOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRUcmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNv
bWUpOgorICAgICAgICAoYm1hbGxvYzo6RGVmZXJyZWRUcmlnZ2VyPHRyaWdnZXI+OjpoYW5kbGVE
ZWZlcnJhbCk6CisgICAgICAgICogYm1hbGxvYy9FbnZpcm9ubWVudC5jcHA6CisgICAgICAgIChi
bWFsbG9jOjpFbnZpcm9ubWVudDo6RW52aXJvbm1lbnQpOgorICAgICAgICAqIGJtYWxsb2MvRW52
aXJvbm1lbnQuaDoKKyAgICAgICAgKiBibWFsbG9jL0dpZ2FjYWdlLmNwcDoKKyAgICAgICAgKGJt
YWxsb2M6OlByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6OlByaW1pdGl2ZURpc2FibGVDYWxsYmFj
a3MpOgorICAgICAgICAoR2lnYWNhZ2U6OmRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSk6CisgICAg
ICAgIChHaWdhY2FnZTo6YWRkUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrKToKKyAgICAgICAgKEdp
Z2FjYWdlOjpyZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2spOgorICAgICAgICAqIGJtYWxs
b2MvSGVhcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpIZWFwKToKKyAgICAgICAgKGJt
YWxsb2M6OkhlYXA6OmZyZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6Om1h
cmtBbGxMYXJnZUFzRWxpZ2liaWxlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmRlY29tbWl0
TGFyZ2VSYW5nZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpzY2F2ZW5nZSk6CisgICAgICAg
IChibWFsbG9jOjpIZWFwOjpzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayk6CisgICAgICAgIChibWFs
bG9jOjpIZWFwOjpkZWFsbG9jYXRlTGluZUNhY2hlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6
OmFsbG9jYXRlU21hbGxDaHVuayk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNt
YWxsUGFnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9jYXRlU21hbGxMaW5lKToK
KyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlNZXRhZGF0
YSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5T2Jq
ZWN0KToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OnNwbGl0QW5kQWxsb2NhdGUpOgorICAgICAg
ICAoYm1hbGxvYzo6SGVhcDo6YWxsb2NhdGVMYXJnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFw
Ojppc0xhcmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkhlYXA6OmxhcmdlU2l6ZSk6CisgICAgICAg
IChibWFsbG9jOjpIZWFwOjpzaHJpbmtMYXJnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpk
ZWFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZXh0ZXJuYWxDb21taXQp
OgorICAgICAgICAoYm1hbGxvYzo6SGVhcDo6ZXh0ZXJuYWxEZWNvbW1pdCk6CisgICAgICAgICog
Ym1hbGxvYy9IZWFwLmg6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjphbGxvY2F0ZVNtYWxsQnVt
cFJhbmdlcyk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZXJlZlNtYWxsTGluZSk6CisgICAg
ICAgICogYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OkhlYXBD
b25zdGFudHM6OkhlYXBDb25zdGFudHMpOgorICAgICAgICAqIGJtYWxsb2MvSGVhcENvbnN0YW50
cy5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oOgorICAgICAgICAo
Ym1hbGxvYzo6SXNvQWxsb2NhdG9yPENvbmZpZz46OmFsbG9jYXRlU2xvdyk6CisgICAgICAgIChi
bWFsbG9jOjpJc29BbGxvY2F0b3I8Q29uZmlnPjo6c2NhdmVuZ2UpOgorICAgICAgICAqIGJtYWxs
b2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29EZWFsbG9j
YXRvcjxDb25maWc+OjpkZWFsbG9jYXRlKToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0RlYWxsb2Nh
dG9yPENvbmZpZz46OnNjYXZlbmdlKToKKyAgICAgICAgKiBibWFsbG9jL0lzb0RpcmVjdG9yeS5o
OgorICAgICAgICAqIGJtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oOgorICAgICAgICAoYm1h
bGxvYzo6cGFzc2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZSk6CisgICAgICAgIChibWFs
bG9jOjpwYXNzZWROdW1QYWdlcz46OmRpZEJlY29tZSk6CisgICAgICAgIChibWFsbG9jOjpwYXNz
ZWROdW1QYWdlcz46OmRpZERlY29tbWl0KToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBh
Z2VzPjo6c2NhdmVuZ2VQYWdlKToKKyAgICAgICAgKGJtYWxsb2M6OnBhc3NlZE51bVBhZ2VzPjo6
c2NhdmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6cGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVRv
SGlnaFdhdGVybWFyayk6CisgICAgICAgIChibWFsbG9jOjpwYXNzZWROdW1QYWdlcz46OmZvckVh
Y2hDb21taXR0ZWRQYWdlKToKKyAgICAgICAgKiBibWFsbG9jL0lzb0hlYXBJbXBsLmg6CisgICAg
ICAgICogYm1hbGxvYy9Jc29IZWFwSW1wbElubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklz
b0hlYXBJbXBsPENvbmZpZz46OnRha2VGaXJzdEVsaWdpYmxlKToKKyAgICAgICAgKGJtYWxsb2M6
Oklzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKToKKyAg
ICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlKToKKyAgICAgICAg
KGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKToK
KyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46Om51bUxpdmVPYmplY3RzKToK
KyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46Om51bUNvbW1pdHRlZFBhZ2Vz
KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hEaXJlY3Rv
cnkpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1p
dHRlZFBhZ2UpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFj
aExpdmVPYmplY3QpOgorICAgICAgICAoYm1hbGxvYzo6SXNvSGVhcEltcGw8Q29uZmlnPjo6YWxs
b2NhdGVGcm9tU2hhcmVkKToKKyAgICAgICAgKiBibWFsbG9jL0lzb1BhZ2UuaDoKKyAgICAgICAg
KiBibWFsbG9jL0lzb1BhZ2VJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlPENv
bmZpZz46OmZyZWUpOgorICAgICAgICAoYm1hbGxvYzo6SXNvUGFnZTxDb25maWc+OjpzdGFydEFs
bG9jYXRpbmcpOgorICAgICAgICAoYm1hbGxvYzo6SXNvUGFnZTxDb25maWc+OjpzdG9wQWxsb2Nh
dGluZyk6CisgICAgICAgIChibWFsbG9jOjpJc29QYWdlPENvbmZpZz46OmZvckVhY2hMaXZlT2Jq
ZWN0KToKKyAgICAgICAgKiBibWFsbG9jL0lzb1NoYXJlZEhlYXAuaDoKKyAgICAgICAgKGJtYWxs
b2M6Oklzb1NoYXJlZEhlYXA6Oklzb1NoYXJlZEhlYXApOgorICAgICAgICAqIGJtYWxsb2MvSXNv
U2hhcmVkSGVhcElubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6Oklzb1NoYXJlZEhlYXA6OmFs
bG9jYXRlTmV3KToKKyAgICAgICAgKGJtYWxsb2M6Oklzb1NoYXJlZEhlYXA6OmFsbG9jYXRlU2xv
dyk6CisgICAgICAgICogYm1hbGxvYy9Jc29TaGFyZWRQYWdlLmg6CisgICAgICAgICogYm1hbGxv
Yy9Jc29TaGFyZWRQYWdlSW5saW5lcy5oOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkUGFn
ZTo6ZnJlZSk6CisgICAgICAgIChibWFsbG9jOjpJc29TaGFyZWRQYWdlOjpzdGFydEFsbG9jYXRp
bmcpOgorICAgICAgICAoYm1hbGxvYzo6SXNvU2hhcmVkUGFnZTo6c3RvcEFsbG9jYXRpbmcpOgor
ICAgICAgICAqIGJtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oOgorICAgICAgICAqIGJt
YWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeUlubGluZXMuaDoKKyAgICAgICAgKGJtYWxsb2M6
Oklzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6SXNvVExTRGVhbGxvY2F0b3JFbnRyeSk6
CisgICAgICAgICogYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmg6CisgICAgICAgIChibWFsbG9jOjpJ
c29UTFM6OmVuc3VyZUhlYXApOgorICAgICAgICAqIGJtYWxsb2MvSXNvVExTTGF5b3V0LmNwcDoK
KyAgICAgICAgKGJtYWxsb2M6Oklzb1RMU0xheW91dDo6SXNvVExTTGF5b3V0KToKKyAgICAgICAg
KGJtYWxsb2M6Oklzb1RMU0xheW91dDo6YWRkKToKKyAgICAgICAgKiBibWFsbG9jL0lzb1RMU0xh
eW91dC5oOgorICAgICAgICAqIGJtYWxsb2MvTXV0ZXguaDoKKyAgICAgICAgKGJtYWxsb2M6OnNs
ZWVwKToKKyAgICAgICAgKGJtYWxsb2M6OndhaXRVbnRpbEZhbHNlKToKKyAgICAgICAgKiBibWFs
bG9jL09iamVjdFR5cGUuY3BwOgorICAgICAgICAoYm1hbGxvYzo6b2JqZWN0VHlwZSk6CisgICAg
ICAgICogYm1hbGxvYy9QZXJQcm9jZXNzLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OmdldFBlclBy
b2Nlc3NEYXRhKToKKyAgICAgICAgKiBibWFsbG9jL1BlclByb2Nlc3MuaDoKKyAgICAgICAgKGJt
YWxsb2M6OlBlclByb2Nlc3M6OmdldFNsb3dDYXNlKToKKyAgICAgICAgKiBibWFsbG9jL1NjYXZl
bmdlci5jcHA6CisgICAgICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OlNjYXZlbmdlcik6CisgICAg
ICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OnJ1bik6CisgICAgICAgIChibWFsbG9jOjpTY2F2ZW5n
ZXI6OnJ1blNvb24pOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjpzY2hlZHVsZUlmVW5k
ZXJNZW1vcnlQcmVzc3VyZSk6CisgICAgICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OnNjaGVkdWxl
KToKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdlcjo6dGltZVNpbmNlTGFzdEZ1bGxTY2F2ZW5n
ZSk6CisgICAgICAgIChibWFsbG9jOjpTY2F2ZW5nZXI6OnRpbWVTaW5jZUxhc3RQYXJ0aWFsU2Nh
dmVuZ2UpOgorICAgICAgICAoYm1hbGxvYzo6U2NhdmVuZ2VyOjpzY2F2ZW5nZSk6CisgICAgICAg
IChibWFsbG9jOjpTY2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSk6CisgICAgICAgIChibWFsbG9j
OjpTY2F2ZW5nZXI6OmZyZWVhYmxlTWVtb3J5KToKKyAgICAgICAgKGJtYWxsb2M6OlNjYXZlbmdl
cjo6dGhyZWFkUnVuTG9vcCk6CisgICAgICAgICogYm1hbGxvYy9TY2F2ZW5nZXIuaDoKKyAgICAg
ICAgKiBibWFsbG9jL1NtYWxsTGluZS5oOgorICAgICAgICAoYm1hbGxvYzo6U21hbGxMaW5lOjpy
ZWZDb3VudCk6CisgICAgICAgIChibWFsbG9jOjpTbWFsbExpbmU6OnJlZik6CisgICAgICAgIChi
bWFsbG9jOjpTbWFsbExpbmU6OmRlcmVmKToKKyAgICAgICAgKiBibWFsbG9jL1NtYWxsUGFnZS5o
OgorICAgICAgICAoYm1hbGxvYzo6U21hbGxQYWdlOjpyZWZDb3VudCk6CisgICAgICAgIChibWFs
bG9jOjpTbWFsbFBhZ2U6Omhhc0ZyZWVMaW5lcyBjb25zdCk6CisgICAgICAgIChibWFsbG9jOjpT
bWFsbFBhZ2U6OnNldEhhc0ZyZWVMaW5lcyk6CisgICAgICAgIChibWFsbG9jOjpTbWFsbFBhZ2U6
OnJlZik6CisgICAgICAgIChibWFsbG9jOjpTbWFsbFBhZ2U6OmRlcmVmKToKKyAgICAgICAgKiBi
bWFsbG9jL1N0YXRpY1BlclByb2Nlc3MuaDoKKyAgICAgICAgKiBibWFsbG9jL1ZNSGVhcC5jcHA6
CisgICAgICAgIChibWFsbG9jOjpWTUhlYXA6OlZNSGVhcCk6CisgICAgICAgICogYm1hbGxvYy9W
TUhlYXAuaDoKKyAgICAgICAgKiBibWFsbG9jL1pvbmUuY3BwOgorICAgICAgICAoYm1hbGxvYzo6
Wm9uZTo6Wm9uZSk6CisgICAgICAgICogYm1hbGxvYy9ab25lLmg6CisgICAgICAgICogYm1hbGxv
Yy9ibWFsbG9jLmNwcDoKKyAgICAgICAgKGJtYWxsb2M6OmFwaTo6dHJ5TGFyZ2VaZXJvZWRNZW1h
bGlnblZpcnR1YWwpOgorICAgICAgICAoYm1hbGxvYzo6YXBpOjpmcmVlTGFyZ2VWaXJ0dWFsKToK
KyAgICAgICAgKGJtYWxsb2M6OmFwaTo6c2V0U2NhdmVuZ2VyVGhyZWFkUU9TQ2xhc3MpOgorCiAy
MDIwLTAxLTE3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W2JtYWxsb2NdIEZpeCBJc29IZWFwSW1wbCdzIGFzc2VydGlvbiBpbnRyb2R1Y2VkIGluIHIyNTQ3
MDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsSXNvSGVhcHMuY3BwIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxJc29IZWFwcy5jcHAKaW5kZXggY2E0MjBlNTY3NTIu
Ljc3OTBhMWFiYTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbElzb0hl
YXBzLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbElzb0hlYXBzLmNwcApAQCAt
MjksMjAgKzI5LDIwIEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogREVGSU5FX1NUQVRJQ19QRVJf
UFJPQ0VTU19TVE9SQUdFKEFsbElzb0hlYXBzKTsKIAotQWxsSXNvSGVhcHM6OkFsbElzb0hlYXBz
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorQWxsSXNvSGVhcHM6OkFsbElzb0hlYXBz
KGNvbnN0IExvY2tIb2xkZXImKQogewogfQogCiB2b2lkIEFsbElzb0hlYXBzOjphZGQoSXNvSGVh
cEltcGxCYXNlKiBoZWFwKQogewotICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9ja2VyKG11
dGV4KCkpOworICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4KCkpOwogICAgIGhlYXAtPm1fbmV4
dCA9IG1faGVhZDsKICAgICBtX2hlYWQgPSBoZWFwOwogfQogCiBJc29IZWFwSW1wbEJhc2UqIEFs
bElzb0hlYXBzOjpoZWFkKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlciht
dXRleCgpKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcihtdXRleCgpKTsKICAgICByZXR1cm4gbV9o
ZWFkOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbElzb0hlYXBz
LmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbElzb0hlYXBzLmgKaW5kZXggNmZiOWMwNmQy
ODQuLjQyZGRjMTEyODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0FsbElz
b0hlYXBzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BbGxJc29IZWFwcy5oCkBAIC0z
Myw3ICszMyw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAogY2xhc3MgQkVYUE9SVCBBbGxJc29I
ZWFwcyA6IHB1YmxpYyBTdGF0aWNQZXJQcm9jZXNzPEFsbElzb0hlYXBzPiB7CiBwdWJsaWM6Ci0g
ICAgQWxsSXNvSGVhcHMoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIEFsbElz
b0hlYXBzKGNvbnN0IExvY2tIb2xkZXImKTsKICAgICAKICAgICB2b2lkIGFkZChJc29IZWFwSW1w
bEJhc2UqKTsKICAgICBJc29IZWFwSW1wbEJhc2UqIGhlYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
QWxsb2NhdG9yLmNwcAppbmRleCAwY2RkZDY5ZWVlOC4uNTA2ZDJkODc2YWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0FsbG9jYXRvci5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCogQWxsb2NhdG9y
OjpyZWFsbG9jYXRlSW1wbCh2b2lkKiBvYmplY3QsIHNpemVfdCBuZXdTaXplLCBGYWlsdXJlQWN0
aW9uIGFjdGkKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgT2JqZWN0VHlwZTo6TGFy
Z2U6IHsKLSAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhIZWFwOjptdXRleCgp
KTsKKyAgICAgICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAgICAg
ICBvbGRTaXplID0gbV9oZWFwLmxhcmdlU2l6ZShsb2NrLCBvYmplY3QpOwogCiAgICAgICAgIGlm
IChuZXdTaXplIDwgb2xkU2l6ZSAmJiBuZXdTaXplID4gc21hbGxNYXgpIHsKQEAgLTEyMiw3ICsx
MjIsNyBAQCBCTk9fSU5MSU5FIHZvaWQgQWxsb2NhdG9yOjpyZWZpbGxBbGxvY2F0b3JTbG93Q2Fz
ZShCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IsIHNpegogewogICAgIEJ1bXBSYW5nZUNhY2hlJiBi
dW1wUmFuZ2VDYWNoZSA9IG1fYnVtcFJhbmdlQ2FjaGVzW3NpemVDbGFzc107CiAKLSAgICBzdGQ6
OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgIFVuaXF1ZUxvY2tI
b2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICBtX2RlYWxsb2NhdG9yLnByb2Nlc3NPYmpl
Y3RMb2cobG9jayk7CiAgICAgbV9oZWFwLmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzKGxvY2ssIHNp
emVDbGFzcywgYWxsb2NhdG9yLCBidW1wUmFuZ2VDYWNoZSwgbV9kZWFsbG9jYXRvci5saW5lQ2Fj
aGUobG9jayksIGFjdGlvbik7CiB9CkBAIC0xMzcsNyArMTM3LDcgQEAgQklOTElORSB2b2lkIEFs
bG9jYXRvcjo6cmVmaWxsQWxsb2NhdG9yKEJ1bXBBbGxvY2F0b3ImIGFsbG9jYXRvciwgc2l6ZV90
IHNpemVDbGEKIAogQk5PX0lOTElORSB2b2lkKiBBbGxvY2F0b3I6OmFsbG9jYXRlTGFyZ2Uoc2l6
ZV90IHNpemUsIEZhaWx1cmVBY3Rpb24gYWN0aW9uKQogewotICAgIHN0ZDo6dW5pcXVlX2xvY2s8
TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKEhl
YXA6Om11dGV4KCkpOwogICAgIHJldHVybiBtX2hlYXAuYWxsb2NhdGVMYXJnZShsb2NrLCBhbGln
bm1lbnQsIHNpemUsIGFjdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvQ3J5cHRvUmFuZG9tLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFu
ZG9tLmNwcAppbmRleCA5MWMzNWZjMDg4Yy4uZGM4MzFjODk1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvQ3J5cHRvUmFuZG9tLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0NyeXB0b1JhbmRvbS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogCiBjbGFz
cyBBUkM0UmFuZG9tTnVtYmVyR2VuZXJhdG9yIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8QVJD
NFJhbmRvbU51bWJlckdlbmVyYXRvcj4gewogcHVibGljOgotICAgIEFSQzRSYW5kb21OdW1iZXJH
ZW5lcmF0b3IoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIEFSQzRSYW5kb21O
dW1iZXJHZW5lcmF0b3IoY29uc3QgTG9ja0hvbGRlciYpOwogCiAgICAgdWludDMyX3QgcmFuZG9t
TnVtYmVyKCk7CiAgICAgdm9pZCByYW5kb21WYWx1ZXModm9pZCogYnVmZmVyLCBzaXplX3QgbGVu
Z3RoKTsKQEAgLTg2LDcgKzg2LDcgQEAgQVJDNFN0cmVhbTo6QVJDNFN0cmVhbSgpCiAgICAgaiA9
IDA7CiB9CiAKLUFSQzRSYW5kb21OdW1iZXJHZW5lcmF0b3I6OkFSQzRSYW5kb21OdW1iZXJHZW5l
cmF0b3IoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitBUkM0UmFuZG9tTnVtYmVyR2Vu
ZXJhdG9yOjpBUkM0UmFuZG9tTnVtYmVyR2VuZXJhdG9yKGNvbnN0IExvY2tIb2xkZXImKQogICAg
IDogbV9jb3VudCgwKQogewogfQpAQCAtMTY0LDcgKzE2NCw3IEBAIHVpbnQ4X3QgQVJDNFJhbmRv
bU51bWJlckdlbmVyYXRvcjo6Z2V0Qnl0ZSgpCiAKIHZvaWQgQVJDNFJhbmRvbU51bWJlckdlbmVy
YXRvcjo6cmFuZG9tVmFsdWVzKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKIHsKLSAgICBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2sobXV0ZXgoKSk7CisgICAgTG9ja0hvbGRlciBsb2Nr
KG11dGV4KCkpOwogCiAgICAgdW5zaWduZWQgY2hhciogcmVzdWx0ID0gcmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZCBjaGFyKj4oYnVmZmVyKTsKICAgICBzdGlySWZOZWVkZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuY3BwIGIvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9EZWFsbG9jYXRvci5jcHAKaW5kZXggMzc3MjI3MGE0MGYuLmQxNDE0MDdiYmI3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmNwcApAQCAtNTAsMTMgKzUwLDEz
IEBAIERlYWxsb2NhdG9yOjp+RGVhbGxvY2F0b3IoKQogICAgIAogdm9pZCBEZWFsbG9jYXRvcjo6
c2NhdmVuZ2UoKQogewotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soSGVhcDo6bXV0
ZXgoKSk7CisgICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogCiAgICAg
cHJvY2Vzc09iamVjdExvZyhsb2NrKTsKICAgICBtX2hlYXAuZGVhbGxvY2F0ZUxpbmVDYWNoZShs
b2NrLCBsaW5lQ2FjaGUobG9jaykpOwogfQogCi12b2lkIERlYWxsb2NhdG9yOjpwcm9jZXNzT2Jq
ZWN0TG9nKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrKQordm9pZCBEZWFsbG9jYXRvcjo6
cHJvY2Vzc09iamVjdExvZyhVbmlxdWVMb2NrSG9sZGVyJiBsb2NrKQogewogICAgIGZvciAoT2Jq
ZWN0IG9iamVjdCA6IG1fb2JqZWN0TG9nKQogICAgICAgICBtX2hlYXAuZGVyZWZTbWFsbExpbmUo
bG9jaywgb2JqZWN0LCBsaW5lQ2FjaGUobG9jaykpOwpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIERl
YWxsb2NhdG9yOjpkZWFsbG9jYXRlU2xvd0Nhc2Uodm9pZCogb2JqZWN0KQogICAgIGlmICghb2Jq
ZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2Nr
KEhlYXA6Om11dGV4KCkpOworICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgp
KTsKICAgICBpZiAobV9oZWFwLmlzTGFyZ2UobG9jaywgb2JqZWN0KSkgewogICAgICAgICBtX2hl
YXAuZGVhbGxvY2F0ZUxhcmdlKGxvY2ssIG9iamVjdCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuaCBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuaAppbmRleCAxMzQyYzRjYWZkYy4uZjE0ZmVlYTVjYzAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVhbGxvY2F0b3IuaAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYWxsb2NhdG9yLmgKQEAgLTQ2LDkgKzQ2LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgZGVhbGxvY2F0ZSh2b2lkKik7CiAgICAgdm9pZCBzY2F2ZW5nZSgpOwog
ICAgIAotICAgIHZvaWQgcHJvY2Vzc09iamVjdExvZyhzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYp
OworICAgIHZvaWQgcHJvY2Vzc09iamVjdExvZyhVbmlxdWVMb2NrSG9sZGVyJik7CiAgICAgCi0g
ICAgTGluZUNhY2hlJiBsaW5lQ2FjaGUoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mKSB7IHJldHVy
biBtX2xpbmVDYWNoZTsgfQorICAgIExpbmVDYWNoZSYgbGluZUNhY2hlKFVuaXF1ZUxvY2tIb2xk
ZXImKSB7IHJldHVybiBtX2xpbmVDYWNoZTsgfQogCiBwcml2YXRlOgogICAgIGJvb2wgZGVhbGxv
Y2F0ZUZhc3RDYXNlKHZvaWQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
RGVidWdIZWFwLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNwcAppbmRl
eCAyYzlmNWI0NTgwYS4uZTg5YTQyNzUzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvRGVidWdIZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVh
cC5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgREVGSU5FX1NUQVRJQ19QRVJfUFJPQ0VTU19TVE9SQUdF
KERlYnVnSGVhcCk7CiAKICNpZiBCT1MoREFSV0lOKQogCi1EZWJ1Z0hlYXA6OkRlYnVnSGVhcChj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0RlYnVnSGVhcDo6RGVidWdIZWFwKGNvbnN0
IExvY2tIb2xkZXImKQogICAgIDogbV96b25lKG1hbGxvY19jcmVhdGVfem9uZSgwLCAwKSkKICAg
ICAsIG1fcGFnZVNpemUodm1QYWdlU2l6ZSgpKQogewpAQCAtODgsNyArODgsNyBAQCB2b2lkIERl
YnVnSGVhcDo6ZHVtcCgpCiAKICNlbHNlCiAKLURlYnVnSGVhcDo6RGVidWdIZWFwKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorRGVidWdIZWFwOjpEZWJ1Z0hlYXAoY29uc3QgTG9ja0hv
bGRlciYpCiAgICAgOiBtX3BhZ2VTaXplKHZtUGFnZVNpemUoKSkKIHsKIH0KQEAgLTE0MSw3ICsx
NDEsNyBAQCB2b2lkKiBEZWJ1Z0hlYXA6Om1lbWFsaWduTGFyZ2Uoc2l6ZV90IGFsaWdubWVudCwg
c2l6ZV90IHNpemUpCiAgICAgaWYgKCFyZXN1bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIobXV0ZXgoKSk7Cisg
ICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4KCkpOwogICAgICAgICBtX3NpemVNYXBbcmVz
dWx0XSA9IHNpemU7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xNTQsNyArMTU0LDcg
QEAgdm9pZCBEZWJ1Z0hlYXA6OmZyZWVMYXJnZSh2b2lkKiBiYXNlKQogICAgIAogICAgIHNpemVf
dCBzaXplOwogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIobXV0
ZXgoKSk7CisgICAgICAgIExvY2tIb2xkZXIgbG9ja2VyKG11dGV4KCkpOwogICAgICAgICBzaXpl
ID0gbV9zaXplTWFwW2Jhc2VdOwogICAgICAgICBzaXplX3QgbnVtRXJhc2VkID0gbV9zaXplTWFw
LmVyYXNlKGJhc2UpOwogICAgICAgICBSRUxFQVNFX0JBU1NFUlQobnVtRXJhc2VkID09IDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmgKaW5kZXggOWRiODU1MjNiZWUuLjM1ZGM1MzQzMWI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oCisrKyBiL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNw
YWNlIGJtYWxsb2MgewogICAgIAogY2xhc3MgRGVidWdIZWFwIDogcHJpdmF0ZSBTdGF0aWNQZXJQ
cm9jZXNzPERlYnVnSGVhcD4gewogcHVibGljOgotICAgIERlYnVnSGVhcChjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgRGVidWdIZWFwKGNvbnN0IExvY2tIb2xkZXImKTsKICAg
ICAKICAgICB2b2lkKiBtYWxsb2Moc2l6ZV90LCBGYWlsdXJlQWN0aW9uKTsKICAgICB2b2lkKiBt
ZW1hbGlnbihzaXplX3QgYWxpZ25tZW50LCBzaXplX3QsIEZhaWx1cmVBY3Rpb24pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXIuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmgKaW5kZXggMjlmYjE5NzY5ZWQuLmQzMzdh
MTMyNmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVkVHJpZ2dl
ci5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VyLmgKQEAgLTM5
LDEwICszOSwxMCBAQCBwdWJsaWM6CiAgICAgRGVmZXJyZWRUcmlnZ2VyKCkgeyB9CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0
ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4mKTsKKyAgICB2b2lkIGRpZEJl
Y29tZShjb25zdCBMb2NrSG9sZGVyJiwgSXNvUGFnZTxDb25maWc+Jik7CiAgICAgCiAgICAgdGVt
cGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotICAgIHZvaWQgaGFuZGxlRGVmZXJyYWwoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIElzb1BhZ2U8Q29uZmlnPiYpOworICAgIHZvaWQgaGFuZGxl
RGVmZXJyYWwoY29uc3QgTG9ja0hvbGRlciYsIElzb1BhZ2U8Q29uZmlnPiYpOwogICAgIAogcHJp
dmF0ZToKICAgICBib29sIG1faGFzQmVlbkRlZmVycmVkIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVmZXJyZWRUcmlnZ2VySW5saW5lcy5oIGIvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9EZWZlcnJlZFRyaWdnZXJJbmxpbmVzLmgKaW5kZXggNzFlYTcyNjhi
YjEuLjQyNzI5ODI5ZDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVy
cmVkVHJpZ2dlcklubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlZmVycmVk
VHJpZ2dlcklubGluZXMuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAK
IHRlbXBsYXRlPElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXI+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWc+Ci12b2lkIERlZmVycmVkVHJpZ2dlcjx0cmlnZ2VyPjo6ZGlkQmVjb21lKGNvbnN0IHN0ZDo6
bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgSXNvUGFnZTxDb25maWc+JiBwYWdlKQordm9pZCBE
ZWZlcnJlZFRyaWdnZXI8dHJpZ2dlcj46OmRpZEJlY29tZShjb25zdCBMb2NrSG9sZGVyJiBsb2Nr
ZXIsIElzb1BhZ2U8Q29uZmlnPiYgcGFnZSkKIHsKICAgICBpZiAocGFnZS5pc0luVXNlRm9yQWxs
b2NhdGlvbigpKQogICAgICAgICBtX2hhc0JlZW5EZWZlcnJlZCA9IHRydWU7CkBAIC00Miw3ICs0
Miw3IEBAIHZvaWQgRGVmZXJyZWRUcmlnZ2VyPHRyaWdnZXI+OjpkaWRCZWNvbWUoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBJCiAKIHRlbXBsYXRlPElzb1BhZ2VUcmlnZ2Vy
IHRyaWdnZXI+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIERlZmVycmVkVHJpZ2dl
cjx0cmlnZ2VyPjo6aGFuZGxlRGVmZXJyYWwoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYg
bG9ja2VyLCBJc29QYWdlPENvbmZpZz4mIHBhZ2UpCit2b2lkIERlZmVycmVkVHJpZ2dlcjx0cmln
Z2VyPjo6aGFuZGxlRGVmZXJyYWwoY29uc3QgTG9ja0hvbGRlciYgbG9ja2VyLCBJc29QYWdlPENv
bmZpZz4mIHBhZ2UpCiB7CiAgICAgUkVMRUFTRV9CQVNTRVJUKCFwYWdlLmlzSW5Vc2VGb3JBbGxv
Y2F0aW9uKCkpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9FbnZp
cm9ubWVudC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmNwcAppbmRl
eCA4NzdhNmMyOWU1Zi4uNWExZDgxNWY4YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJv
bm1lbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgc3RhdGljIGJvb2wgaXNOYW5vTWFsbG9jRW5h
YmxlZCgpCiAKIERFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFHRShFbnZpcm9ubWVudCk7
CiAKLUVudmlyb25tZW50OjpFbnZpcm9ubWVudChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
JikKK0Vudmlyb25tZW50OjpFbnZpcm9ubWVudChjb25zdCBMb2NrSG9sZGVyJikKICAgICA6IG1f
aXNEZWJ1Z0hlYXBFbmFibGVkKGNvbXB1dGVJc0RlYnVnSGVhcEVuYWJsZWQoKSkKIHsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaAppbmRleCA3YjI4ZGU5MjczZS4uMzdlNWZiMjAy
N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRW52aXJvbm1lbnQuaAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0Vudmlyb25tZW50LmgKQEAgLTMzLDcgKzMzLDcgQEAg
bmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBFbnZpcm9ubWVudCA6IHB1YmxpYyBTdGF0aWNQ
ZXJQcm9jZXNzPEVudmlyb25tZW50PiB7CiBwdWJsaWM6Ci0gICAgQkVYUE9SVCBFbnZpcm9ubWVu
dChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgQkVYUE9SVCBFbnZpcm9ubWVu
dChjb25zdCBMb2NrSG9sZGVyJik7CiAgICAgCiAgICAgYm9vbCBpc0RlYnVnSGVhcEVuYWJsZWQo
KSB7IHJldHVybiBtX2lzRGVidWdIZWFwRW5hYmxlZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
Ym1hbGxvYy9ibWFsbG9jL0dpZ2FjYWdlLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvR2ln
YWNhZ2UuY3BwCmluZGV4IDQyMDE5NTlmNjBiLi5mMDQ2NTFiNDkzNSAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9HaWdhY2FnZS5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9HaWdhY2FnZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RydWN0IENhbGxiYWNrIHsKIG5h
bWVzcGFjZSBibWFsbG9jIHsKIAogc3RydWN0IFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MgOiBw
dWJsaWMgU3RhdGljUGVyUHJvY2VzczxQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzPiB7Ci0gICAg
UHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jikg
eyB9CisgICAgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyhjb25zdCBMb2NrSG9sZGVyJikgeyB9
CiAgICAgCiAgICAgVmVjdG9yPEdpZ2FjYWdlOjpDYWxsYmFjaz4gY2FsbGJhY2tzOwogfTsKQEAg
LTI1Nyw3ICsyNTcsNyBAQCB2b2lkIGRpc2FibGVQcmltaXRpdmVHaWdhY2FnZSgpCiAgICAgfQog
ICAgIAogICAgIFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3MmIGNhbGxiYWNrcyA9ICpQcmltaXRp
dmVEaXNhYmxlQ2FsbGJhY2tzOjpnZXQoKTsKLSAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBs
b2NrKFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6Om11dGV4KCkpOworICAgIFVuaXF1ZUxvY2tI
b2xkZXIgbG9jayhQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzOjptdXRleCgpKTsKICAgICBmb3Ig
KENhbGxiYWNrJiBjYWxsYmFjayA6IGNhbGxiYWNrcy5jYWxsYmFja3MpCiAgICAgICAgIGNhbGxi
YWNrLmZ1bmN0aW9uKGNhbGxiYWNrLmFyZ3VtZW50KTsKICAgICBjYWxsYmFja3MuY2FsbGJhY2tz
LnNocmluaygwKTsKQEAgLTI3NSwxNCArMjc1LDE0IEBAIHZvaWQgYWRkUHJpbWl0aXZlRGlzYWJs
ZUNhbGxiYWNrKHZvaWQgKCpmdW5jdGlvbikodm9pZCopLCB2b2lkKiBhcmd1bWVudCkKICAgICB9
CiAgICAgCiAgICAgUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrcyYgY2FsbGJhY2tzID0gKlByaW1p
dGl2ZURpc2FibGVDYWxsYmFja3M6OmdldCgpOwotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+
IGxvY2soUHJpbWl0aXZlRGlzYWJsZUNhbGxiYWNrczo6bXV0ZXgoKSk7CisgICAgVW5pcXVlTG9j
a0hvbGRlciBsb2NrKFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6Om11dGV4KCkpOwogICAgIGNh
bGxiYWNrcy5jYWxsYmFja3MucHVzaChDYWxsYmFjayhmdW5jdGlvbiwgYXJndW1lbnQpKTsKIH0K
IAogdm9pZCByZW1vdmVQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2sodm9pZCAoKmZ1bmN0aW9uKSh2
b2lkKiksIHZvaWQqIGFyZ3VtZW50KQogewogICAgIFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3Mm
IGNhbGxiYWNrcyA9ICpQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tzOjpnZXQoKTsKLSAgICBzdGQ6
OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKFByaW1pdGl2ZURpc2FibGVDYWxsYmFja3M6Om11dGV4
KCkpOworICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9jayhQcmltaXRpdmVEaXNhYmxlQ2FsbGJhY2tz
OjptdXRleCgpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxiYWNrcy5jYWxsYmFj
a3Muc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaWYgKGNhbGxiYWNrcy5jYWxsYmFja3NbaV0uZnVu
Y3Rpb24gPT0gZnVuY3Rpb24KICAgICAgICAgICAgICYmIGNhbGxiYWNrcy5jYWxsYmFja3NbaV0u
YXJndW1lbnQgPT0gYXJndW1lbnQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcC5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCmluZGV4IDNhYWU0
M2EyMTdhLi42ZDcxNGYwYjdmMiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwLmNwcAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCkBAIC00NSw3ICs0
NSw3IEBACiAKIG5hbWVzcGFjZSBibWFsbG9jIHsKIAotSGVhcDo6SGVhcChIZWFwS2luZCBraW5k
LCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0hlYXA6OkhlYXAoSGVhcEtpbmQga2luZCwgTG9j
a0hvbGRlciYpCiAgICAgOiBtX2tpbmQgeyBraW5kIH0sIG1fY29uc3RhbnRzIHsgKkhlYXBDb25z
dGFudHM6OmdldCgpIH0KIHsKICAgICBCQVNTRVJUKCFFbnZpcm9ubWVudDo6Z2V0KCktPmlzRGVi
dWdIZWFwRW5hYmxlZCgpKTsKQEAgLTgxLDcgKzgxLDcgQEAgc2l6ZV90IEhlYXA6OmdpZ2FjYWdl
U2l6ZSgpCiAgICAgcmV0dXJuIEdpZ2FjYWdlOjpzaXplKGdpZ2FjYWdlS2luZChtX2tpbmQpKTsK
IH0KIAotc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mKQorc2l6ZV90IEhlYXA6OmZyZWVhYmxlTWVtb3J5KGNvbnN0IExvY2tIb2xkZXImKQog
ewogICAgIHJldHVybiBtX2ZyZWVhYmxlTWVtb3J5OwogfQpAQCAtOTEsMTQgKzkxLDE0IEBAIHNp
emVfdCBIZWFwOjpmb290cHJpbnQoKQogICAgIHJldHVybiBtX2Zvb3RwcmludDsKIH0KIAotdm9p
ZCBIZWFwOjptYXJrQWxsTGFyZ2VBc0VsaWdpYmlsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JikKK3ZvaWQgSGVhcDo6bWFya0FsbExhcmdlQXNFbGlnaWJpbGUoY29uc3QgTG9ja0hvbGRl
ciYpCiB7CiAgICAgbV9sYXJnZUZyZWUubWFya0FsbEFzRWxpZ2liaWxlKCk7CiAgICAgbV9oYXNQ
ZW5kaW5nRGVjb21taXRzID0gZmFsc2U7CiAgICAgbV9jb25kaXRpb24ubm90aWZ5X2FsbCgpOwog
fQogCi12b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JiwgTGFyZ2VSYW5nZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCit2
b2lkIEhlYXA6OmRlY29tbWl0TGFyZ2VSYW5nZShjb25zdCBMb2NrSG9sZGVyJiwgTGFyZ2VSYW5n
ZSYgcmFuZ2UsIEJ1bGtEZWNvbW1pdCYgZGVjb21taXR0ZXIpCiB7CiAgICAgbV9mb290cHJpbnQg
LT0gcmFuZ2UudG90YWxQaHlzaWNhbFNpemUoKTsKICAgICBtX2ZyZWVhYmxlTWVtb3J5IC09IHJh
bmdlLnRvdGFsUGh5c2ljYWxTaXplKCk7CkBAIC0xMTQsOSArMTE0LDkgQEAgdm9pZCBIZWFwOjpk
ZWNvbW1pdExhcmdlUmFuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIExhcmdlUmFu
Z2UmIHJhbmdlLAogfQogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotdm9pZCBIZWFwOjpz
Y2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQm
IGRlY29tbWl0dGVyKQordm9pZCBIZWFwOjpzY2F2ZW5nZShjb25zdCBMb2NrSG9sZGVyJiBsb2Nr
LCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGVyKQogI2Vsc2UKLXZvaWQgSGVhcDo6c2NhdmVuZ2Uo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1p
dHRlciwgc2l6ZV90JiBkZWZlcnJlZERlY29tbWl0cykKK3ZvaWQgSGVhcDo6c2NhdmVuZ2UoY29u
c3QgTG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlciwgc2l6ZV90JiBk
ZWZlcnJlZERlY29tbWl0cykKICNlbmRpZgogewogICAgIGZvciAoYXV0byYgbGlzdCA6IG1fZnJl
ZVBhZ2VzKSB7CkBAIC0xNjksNyArMTY5LDcgQEAgdm9pZCBIZWFwOjpzY2F2ZW5nZShjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrLCBCdWxrRGVjb21taXQmIGRlY29tbWl0dGUKIH0K
IAogI2lmIEJVU0UoUEFSVElBTF9TQ0FWRU5HRSkKLXZvaWQgSGVhcDo6c2NhdmVuZ2VUb0hpZ2hX
YXRlcm1hcmsoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9jaywgQnVsa0RlY29tbWl0
JiBkZWNvbW1pdHRlcikKK3ZvaWQgSGVhcDo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3Qg
TG9ja0hvbGRlciYgbG9jaywgQnVsa0RlY29tbWl0JiBkZWNvbW1pdHRlcikKIHsKICAgICB2b2lk
KiBuZXdIaWdoV2F0ZXJNYXJrID0gbnVsbHB0cjsKICAgICBmb3IgKExhcmdlUmFuZ2UmIHJhbmdl
IDogbV9sYXJnZUZyZWUpIHsKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIEhlYXA6OnNjYXZlbmdl
VG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2ssIEJ1bGtE
ZWNvbQogfQogI2VuZGlmCiAKLXZvaWQgSGVhcDo6ZGVhbGxvY2F0ZUxpbmVDYWNoZShzdGQ6OnVu
aXF1ZV9sb2NrPE11dGV4PiYsIExpbmVDYWNoZSYgbGluZUNhY2hlKQordm9pZCBIZWFwOjpkZWFs
bG9jYXRlTGluZUNhY2hlKFVuaXF1ZUxvY2tIb2xkZXImLCBMaW5lQ2FjaGUmIGxpbmVDYWNoZSkK
IHsKICAgICBmb3IgKGF1dG8mIGxpc3QgOiBsaW5lQ2FjaGUpIHsKICAgICAgICAgd2hpbGUgKCFs
aXN0LmlzRW1wdHkoKSkgewpAQCAtMTkyLDcgKzE5Miw3IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0
ZUxpbmVDYWNoZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIExpbmVDYWNoZSYgbGluZUNhY2hl
KQogICAgIH0KIH0KIAotdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQ2h1bmsoc3RkOjp1bmlxdWVf
bG9jazxNdXRleD4mIGxvY2ssIHNpemVfdCBwYWdlQ2xhc3MsIEZhaWx1cmVBY3Rpb24gYWN0aW9u
KQordm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQ2h1bmsoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywg
c2l6ZV90IHBhZ2VDbGFzcywgRmFpbHVyZUFjdGlvbiBhY3Rpb24pCiB7CiAgICAgUkVMRUFTRV9C
QVNTRVJUKGlzQWN0aXZlSGVhcEtpbmQobV9raW5kKSk7CiAgICAgCkBAIC0yNjcsNyArMjY3LDcg
QEAgdm9pZCBIZWFwOjpkZWFsbG9jYXRlU21hbGxDaHVuayhDaHVuayogY2h1bmssIHNpemVfdCBw
YWdlQ2xhc3MpCiAgICAgbV9sYXJnZUZyZWUuYWRkKExhcmdlUmFuZ2UoY2h1bmssIHNpemUsIHN0
YXJ0UGh5c2ljYWxTaXplLCB0b3RhbFBoeXNpY2FsU2l6ZSkpOwogfQogCi1TbWFsbFBhZ2UqIEhl
YXA6OmFsbG9jYXRlU21hbGxQYWdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBzaXpl
X3Qgc2l6ZUNsYXNzLCBMaW5lQ2FjaGUmIGxpbmVDYWNoZSwgRmFpbHVyZUFjdGlvbiBhY3Rpb24p
CitTbWFsbFBhZ2UqIEhlYXA6OmFsbG9jYXRlU21hbGxQYWdlKFVuaXF1ZUxvY2tIb2xkZXImIGxv
Y2ssIHNpemVfdCBzaXplQ2xhc3MsIExpbmVDYWNoZSYgbGluZUNhY2hlLCBGYWlsdXJlQWN0aW9u
IGFjdGlvbikKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoaXNBY3RpdmVIZWFwS2luZChtX2tpbmQp
KTsKIApAQCAtMzIzLDcgKzMyMyw3IEBAIFNtYWxsUGFnZSogSGVhcDo6YWxsb2NhdGVTbWFsbFBh
Z2Uoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIHNpemVfdCBzaXplQ2xhCiAgICAgcmV0
dXJuIHBhZ2U7CiB9CiAKLXZvaWQgSGVhcDo6ZGVhbGxvY2F0ZVNtYWxsTGluZShzdGQ6OnVuaXF1
ZV9sb2NrPE11dGV4PiYgbG9jaywgT2JqZWN0IG9iamVjdCwgTGluZUNhY2hlJiBsaW5lQ2FjaGUp
Cit2b2lkIEhlYXA6OmRlYWxsb2NhdGVTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywg
T2JqZWN0IG9iamVjdCwgTGluZUNhY2hlJiBsaW5lQ2FjaGUpCiB7CiAgICAgQkFTU0VSVCghb2Jq
ZWN0LmxpbmUoKS0+cmVmQ291bnQobG9jaykpOwogICAgIFNtYWxsUGFnZSogcGFnZSA9IG9iamVj
dC5wYWdlKCk7CkBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBIZWFwOjpkZWFsbG9jYXRlU21hbGxM
aW5lKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBPYmplY3Qgb2JqZWN0LCBMaW4KIH0K
IAogdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5TWV0YWRhdGEoCi0gICAgc3Rk
Ojp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIHNpemVfdCBzaXplQ2xhc3MsCisgICAgVW5pcXVl
TG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IHNpemVDbGFzcywKICAgICBCdW1wQWxsb2NhdG9yJiBh
bGxvY2F0b3IsIEJ1bXBSYW5nZUNhY2hlJiByYW5nZUNhY2hlLAogICAgIExpbmVDYWNoZSYgbGlu
ZUNhY2hlLCBGYWlsdXJlQWN0aW9uIGFjdGlvbikKIHsKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lk
IEhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlNZXRhZGF0YSgKIH0KIAogdm9pZCBIZWFw
OjphbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5T2JqZWN0KAotICAgIHN0ZDo6dW5pcXVlX2xvY2s8
TXV0ZXg+JiBsb2NrLCBzaXplX3Qgc2l6ZUNsYXNzLAorICAgIFVuaXF1ZUxvY2tIb2xkZXImIGxv
Y2ssIHNpemVfdCBzaXplQ2xhc3MsCiAgICAgQnVtcEFsbG9jYXRvciYgYWxsb2NhdG9yLCBCdW1w
UmFuZ2VDYWNoZSYgcmFuZ2VDYWNoZSwKICAgICBMaW5lQ2FjaGUmIGxpbmVDYWNoZSwgRmFpbHVy
ZUFjdGlvbiBhY3Rpb24pCiB7CkBAIC00OTIsNyArNDkyLDcgQEAgdm9pZCBIZWFwOjphbGxvY2F0
ZVNtYWxsQnVtcFJhbmdlc0J5T2JqZWN0KAogICAgIH0KIH0KIAotTGFyZ2VSYW5nZSBIZWFwOjpz
cGxpdEFuZEFsbG9jYXRlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYgcmFu
Z2UsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQorTGFyZ2VSYW5nZSBIZWFwOjpzcGxp
dEFuZEFsbG9jYXRlKFVuaXF1ZUxvY2tIb2xkZXImLCBMYXJnZVJhbmdlJiByYW5nZSwgc2l6ZV90
IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiB7CiAgICAgUkVMRUFTRV9CQVNTRVJUKGlzQWN0aXZl
SGVhcEtpbmQobV9raW5kKSk7CiAKQEAgLTU0MCw3ICs1NDAsNyBAQCBMYXJnZVJhbmdlIEhlYXA6
OnNwbGl0QW5kQWxsb2NhdGUoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCBMYXJnZVJhbmdlJiBy
YW5nZSwgcwogICAgIHJldHVybiByYW5nZTsKIH0KIAotdm9pZCogSGVhcDo6YWxsb2NhdGVMYXJn
ZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYgbG9jaywgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90
IHNpemUsIEZhaWx1cmVBY3Rpb24gYWN0aW9uKQordm9pZCogSGVhcDo6YWxsb2NhdGVMYXJnZShV
bmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgRmFp
bHVyZUFjdGlvbiBhY3Rpb24pCiB7CiAjZGVmaW5lIEFTU0VSVF9PUl9SRVRVUk5fT05fRkFJTFVS
RShjb25kKSBkbyB7IFwKICAgICAgICAgaWYgKGFjdGlvbiA9PSBGYWlsdXJlQWN0aW9uOjpDcmFz
aCkgXApAQCAtNTkzLDE3ICs1OTMsMTcgQEAgdm9pZCogSGVhcDo6YWxsb2NhdGVMYXJnZShzdGQ6
OnVuaXF1ZV9sb2NrPE11dGV4PiYgbG9jaywgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV8KICN1bmRl
ZiBBU1NFUlRfT1JfUkVUVVJOX09OX0ZBSUxVUkUKIH0KIAotYm9vbCBIZWFwOjppc0xhcmdlKHN0
ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgdm9pZCogb2JqZWN0KQorYm9vbCBIZWFwOjppc0xhcmdl
KFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKiBvYmplY3QpCiB7CiAgICAgcmV0dXJuIG1fb2JqZWN0
VHlwZXMuZ2V0KE9iamVjdChvYmplY3QpLmNodW5rKCkpID09IE9iamVjdFR5cGU6OkxhcmdlOwog
fQogCi1zaXplX3QgSGVhcDo6bGFyZ2VTaXplKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgdm9p
ZCogb2JqZWN0KQorc2l6ZV90IEhlYXA6OmxhcmdlU2l6ZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9p
ZCogb2JqZWN0KQogewogICAgIHJldHVybiBtX2xhcmdlQWxsb2NhdGVkLmdldChvYmplY3QpOwog
fQogCi12b2lkIEhlYXA6OnNocmlua0xhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2Nr
LCBjb25zdCBSYW5nZSYgb2JqZWN0LCBzaXplX3QgbmV3U2l6ZSkKK3ZvaWQgSGVhcDo6c2hyaW5r
TGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgY29uc3QgUmFuZ2UmIG9iamVjdCwgc2l6ZV90
IG5ld1NpemUpCiB7CiAgICAgQkFTU0VSVChvYmplY3Quc2l6ZSgpID4gbmV3U2l6ZSk7CiAKQEAg
LTYxNCw3ICs2MTQsNyBAQCB2b2lkIEhlYXA6OnNocmlua0xhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8
TXV0ZXg+JiBsb2NrLCBjb25zdCBSYW5nZSYgb2JqZWN0LCBzaXplXwogICAgIG1fc2NhdmVuZ2Vy
LT5zY2hlZHVsZShzaXplKTsKIH0KIAotdm9pZCBIZWFwOjpkZWFsbG9jYXRlTGFyZ2Uoc3RkOjp1
bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKiBvYmplY3QpCit2b2lkIEhlYXA6OmRlYWxsb2NhdGVM
YXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCogb2JqZWN0KQogewogICAgIHNpemVfdCBzaXpl
ID0gbV9sYXJnZUFsbG9jYXRlZC5yZW1vdmUob2JqZWN0KTsKICAgICBtX2xhcmdlRnJlZS5hZGQo
TGFyZ2VSYW5nZShvYmplY3QsIHNpemUsIHNpemUsIHNpemUpKTsKQEAgLTYyNCwxMSArNjI0LDEx
IEBAIHZvaWQgSGVhcDo6ZGVhbGxvY2F0ZUxhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwg
dm9pZCogb2JqZWN0KQogCiB2b2lkIEhlYXA6OmV4dGVybmFsQ29tbWl0KHZvaWQqIHB0ciwgc2l6
ZV90IHNpemUpCiB7Ci0gICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4gbG9jayhIZWFwOjptdXRl
eCgpKTsKKyAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgZXh0
ZXJuYWxDb21taXQobG9jaywgcHRyLCBzaXplKTsKIH0KIAotdm9pZCBIZWFwOjpleHRlcm5hbENv
bW1pdChzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCit2
b2lkIEhlYXA6OmV4dGVybmFsQ29tbWl0KFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKiBwdHIsIHNp
emVfdCBzaXplKQogewogICAgIEJVTlVTRURfUEFSQU0ocHRyKTsKIApAQCAtNjQwLDExICs2NDAs
MTEgQEAgdm9pZCBIZWFwOjpleHRlcm5hbENvbW1pdChzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYs
IHZvaWQqIHB0ciwgc2l6ZV90IHNpemUpCiAKIHZvaWQgSGVhcDo6ZXh0ZXJuYWxEZWNvbW1pdCh2
b2lkKiBwdHIsIHNpemVfdCBzaXplKQogewotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxv
Y2soSGVhcDo6bXV0ZXgoKSk7CisgICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4
KCkpOwogICAgIGV4dGVybmFsRGVjb21taXQobG9jaywgcHRyLCBzaXplKTsKIH0KIAotdm9pZCBI
ZWFwOjpleHRlcm5hbERlY29tbWl0KHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgdm9pZCogcHRy
LCBzaXplX3Qgc2l6ZSkKK3ZvaWQgSGVhcDo6ZXh0ZXJuYWxEZWNvbW1pdChVbmlxdWVMb2NrSG9s
ZGVyJiwgdm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkKIHsKICAgICBCVU5VU0VEX1BBUkFNKHB0cik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9IZWFwLmgKaW5kZXggNTljNzVmMjdiOWMuLjI2ZDc3NDNlMjg2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuaAorKysgYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0hlYXAuaApAQCAtNTcsNDQgKzU3LDQ0IEBAIGNsYXNzIFNjYXZlbmdlcjsKIAog
Y2xhc3MgSGVhcCB7CiBwdWJsaWM6Ci0gICAgSGVhcChIZWFwS2luZCwgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiYpOworICAgIEhlYXAoSGVhcEtpbmQsIExvY2tIb2xkZXImKTsKICAgICAKICAgICBz
dGF0aWMgTXV0ZXgmIG11dGV4KCkgeyByZXR1cm4gUGVyUHJvY2VzczxQZXJIZWFwS2luZDxIZWFw
Pj46Om11dGV4KCk7IH0KICAgICAKICAgICBIZWFwS2luZCBraW5kKCkgY29uc3QgeyByZXR1cm4g
bV9raW5kOyB9CiAgICAgCi0gICAgdm9pZCBhbGxvY2F0ZVNtYWxsQnVtcFJhbmdlcyhzdGQ6OnVu
aXF1ZV9sb2NrPE11dGV4PiYsIHNpemVfdCBzaXplQ2xhc3MsCisgICAgdm9pZCBhbGxvY2F0ZVNt
YWxsQnVtcFJhbmdlcyhVbmlxdWVMb2NrSG9sZGVyJiwgc2l6ZV90IHNpemVDbGFzcywKICAgICAg
ICAgQnVtcEFsbG9jYXRvciYsIEJ1bXBSYW5nZUNhY2hlJiwgTGluZUNhY2hlJiwgRmFpbHVyZUFj
dGlvbik7Ci0gICAgdm9pZCBkZXJlZlNtYWxsTGluZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYs
IE9iamVjdCwgTGluZUNhY2hlJik7Ci0gICAgdm9pZCBkZWFsbG9jYXRlTGluZUNhY2hlKHN0ZDo6
dW5pcXVlX2xvY2s8TXV0ZXg+JiwgTGluZUNhY2hlJik7CisgICAgdm9pZCBkZXJlZlNtYWxsTGlu
ZShVbmlxdWVMb2NrSG9sZGVyJiwgT2JqZWN0LCBMaW5lQ2FjaGUmKTsKKyAgICB2b2lkIGRlYWxs
b2NhdGVMaW5lQ2FjaGUoVW5pcXVlTG9ja0hvbGRlciYsIExpbmVDYWNoZSYpOwogCi0gICAgdm9p
ZCogYWxsb2NhdGVMYXJnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHNpemVfdCBhbGlnbm1l
bnQsIHNpemVfdCwgRmFpbHVyZUFjdGlvbik7Ci0gICAgdm9pZCBkZWFsbG9jYXRlTGFyZ2Uoc3Rk
Ojp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKik7CisgICAgdm9pZCogYWxsb2NhdGVMYXJnZShV
bmlxdWVMb2NrSG9sZGVyJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBGYWlsdXJlQWN0aW9u
KTsKKyAgICB2b2lkIGRlYWxsb2NhdGVMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgdm9pZCopOwog
Ci0gICAgYm9vbCBpc0xhcmdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgdm9pZCopOwotICAg
IHNpemVfdCBsYXJnZVNpemUoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKik7Ci0gICAg
dm9pZCBzaHJpbmtMYXJnZShzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIGNvbnN0IFJhbmdlJiwg
c2l6ZV90KTsKKyAgICBib29sIGlzTGFyZ2UoVW5pcXVlTG9ja0hvbGRlciYsIHZvaWQqKTsKKyAg
ICBzaXplX3QgbGFyZ2VTaXplKFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKik7CisgICAgdm9pZCBz
aHJpbmtMYXJnZShVbmlxdWVMb2NrSG9sZGVyJiwgY29uc3QgUmFuZ2UmLCBzaXplX3QpOwogCiAj
aWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQotICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1h
cmsoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYpOwotICAgIHZv
aWQgc2NhdmVuZ2UoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYp
OworICAgIHZvaWQgc2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmsoY29uc3QgTG9ja0hvbGRlciYsIEJ1
bGtEZWNvbW1pdCYpOworICAgIHZvaWQgc2NhdmVuZ2UoY29uc3QgTG9ja0hvbGRlciYsIEJ1bGtE
ZWNvbW1pdCYpOwogI2Vsc2UKLSAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mLCBCdWxrRGVjb21taXQmLCBzaXplX3QmIGRlZmVycmVkRGVjb21taXRzKTsKKyAg
ICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXImLCBCdWxrRGVjb21taXQmLCBzaXplX3Qm
IGRlZmVycmVkRGVjb21taXRzKTsKICNlbmRpZgotICAgIHZvaWQgc2NhdmVuZ2UoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIEJ1bGtEZWNvbW1pdCYsIHNpemVfdCYgZnJlZWQsIHNpemVf
dCBnb2FsKTsKKyAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xkZXImLCBCdWxrRGVjb21t
aXQmLCBzaXplX3QmIGZyZWVkLCBzaXplX3QgZ29hbCk7CiAKLSAgICBzaXplX3QgZnJlZWFibGVN
ZW1vcnkoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAgIHNpemVfdCBmcmVlYWJs
ZU1lbW9yeShjb25zdCBMb2NrSG9sZGVyJik7CiAgICAgc2l6ZV90IGZvb3RwcmludCgpOwogCiAg
ICAgdm9pZCBleHRlcm5hbERlY29tbWl0KHZvaWQqIHB0ciwgc2l6ZV90KTsKLSAgICB2b2lkIGV4
dGVybmFsRGVjb21taXQoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mLCB2b2lkKiBwdHIsIHNpemVf
dCk7CisgICAgdm9pZCBleHRlcm5hbERlY29tbWl0KFVuaXF1ZUxvY2tIb2xkZXImLCB2b2lkKiBw
dHIsIHNpemVfdCk7CiAgICAgdm9pZCBleHRlcm5hbENvbW1pdCh2b2lkKiBwdHIsIHNpemVfdCk7
Ci0gICAgdm9pZCBleHRlcm5hbENvbW1pdChzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYsIHZvaWQq
IHB0ciwgc2l6ZV90KTsKKyAgICB2b2lkIGV4dGVybmFsQ29tbWl0KFVuaXF1ZUxvY2tIb2xkZXIm
LCB2b2lkKiBwdHIsIHNpemVfdCk7CiAKLSAgICB2b2lkIG1hcmtBbGxMYXJnZUFzRWxpZ2liaWxl
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICB2b2lkIG1hcmtBbGxMYXJnZUFz
RWxpZ2liaWxlKGNvbnN0IExvY2tIb2xkZXImKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGRlY29t
bWl0TGFyZ2VSYW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYs
IEJ1bGtEZWNvbW1pdCYpOworICAgIHZvaWQgZGVjb21taXRMYXJnZVJhbmdlKGNvbnN0IExvY2tI
b2xkZXImLCBMYXJnZVJhbmdlJiwgQnVsa0RlY29tbWl0Jik7CiAKICAgICBzdHJ1Y3QgTGFyZ2VP
YmplY3RIYXNoIHsKICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2godm9pZCoga2V5KQpAQCAt
MTEwLDIyICsxMTAsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkKiBnaWdhY2FnZUJhc2VQdHIoKTsg
Ly8gTWF5IGNyYXNoIGlmICF1c2luZ0dpZ2FjYWdlKCkuCiAgICAgc2l6ZV90IGdpZ2FjYWdlU2l6
ZSgpOwogCi0gICAgdm9pZCBhbGxvY2F0ZVNtYWxsQnVtcFJhbmdlc0J5TWV0YWRhdGEoc3RkOjp1
bmlxdWVfbG9jazxNdXRleD4mLAorICAgIHZvaWQgYWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU1l
dGFkYXRhKFVuaXF1ZUxvY2tIb2xkZXImLAogICAgICAgICBzaXplX3Qgc2l6ZUNsYXNzLCBCdW1w
QWxsb2NhdG9yJiwgQnVtcFJhbmdlQ2FjaGUmLCBMaW5lQ2FjaGUmLCBGYWlsdXJlQWN0aW9uKTsK
LSAgICB2b2lkIGFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlPYmplY3Qoc3RkOjp1bmlxdWVfbG9j
azxNdXRleD4mLAorICAgIHZvaWQgYWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU9iamVjdChVbmlx
dWVMb2NrSG9sZGVyJiwKICAgICAgICAgc2l6ZV90IHNpemVDbGFzcywgQnVtcEFsbG9jYXRvciYs
IEJ1bXBSYW5nZUNhY2hlJiwgTGluZUNhY2hlJiwgRmFpbHVyZUFjdGlvbik7CiAKLSAgICBTbWFs
bFBhZ2UqIGFsbG9jYXRlU21hbGxQYWdlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jiwgc2l6ZV90
IHNpemVDbGFzcywgTGluZUNhY2hlJiwgRmFpbHVyZUFjdGlvbik7Ci0gICAgdm9pZCBkZWFsbG9j
YXRlU21hbGxMaW5lKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgT2JqZWN0LCBMaW5lQ2FjaGUm
KTsKKyAgICBTbWFsbFBhZ2UqIGFsbG9jYXRlU21hbGxQYWdlKFVuaXF1ZUxvY2tIb2xkZXImLCBz
aXplX3Qgc2l6ZUNsYXNzLCBMaW5lQ2FjaGUmLCBGYWlsdXJlQWN0aW9uKTsKKyAgICB2b2lkIGRl
YWxsb2NhdGVTbWFsbExpbmUoVW5pcXVlTG9ja0hvbGRlciYsIE9iamVjdCwgTGluZUNhY2hlJik7
CiAKLSAgICB2b2lkIGFsbG9jYXRlU21hbGxDaHVuayhzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYs
IHNpemVfdCBwYWdlQ2xhc3MsIEZhaWx1cmVBY3Rpb24pOworICAgIHZvaWQgYWxsb2NhdGVTbWFs
bENodW5rKFVuaXF1ZUxvY2tIb2xkZXImLCBzaXplX3QgcGFnZUNsYXNzLCBGYWlsdXJlQWN0aW9u
KTsKICAgICB2b2lkIGRlYWxsb2NhdGVTbWFsbENodW5rKENodW5rKiwgc2l6ZV90IHBhZ2VDbGFz
cyk7CiAKICAgICB2b2lkIG1lcmdlTGFyZ2UoQmVnaW5UYWcqJiwgRW5kVGFnKiYsIFJhbmdlJik7
CiAgICAgdm9pZCBtZXJnZUxhcmdlTGVmdChFbmRUYWcqJiwgQmVnaW5UYWcqJiwgUmFuZ2UmLCBi
b29sJiBpblZNSGVhcCk7CiAgICAgdm9pZCBtZXJnZUxhcmdlUmlnaHQoRW5kVGFnKiYsIEJlZ2lu
VGFnKiYsIFJhbmdlJiwgYm9vbCYgaW5WTUhlYXApOwogCi0gICAgTGFyZ2VSYW5nZSBzcGxpdEFu
ZEFsbG9jYXRlKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgTGFyZ2VSYW5nZSYsIHNpemVfdCBh
bGlnbm1lbnQsIHNpemVfdCk7CisgICAgTGFyZ2VSYW5nZSBzcGxpdEFuZEFsbG9jYXRlKFVuaXF1
ZUxvY2tIb2xkZXImLCBMYXJnZVJhbmdlJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKIAog
ICAgIEhlYXBLaW5kIG1fa2luZDsKICAgICBIZWFwQ29uc3RhbnRzJiBtX2NvbnN0YW50czsKQEAg
LTE1Nyw3ICsxNTcsNyBAQCBwcml2YXRlOgogfTsKIAogaW5saW5lIHZvaWQgSGVhcDo6YWxsb2Nh
dGVTbWFsbEJ1bXBSYW5nZXMoCi0gICAgc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mIGxvY2ssIHNp
emVfdCBzaXplQ2xhc3MsCisgICAgVW5pcXVlTG9ja0hvbGRlciYgbG9jaywgc2l6ZV90IHNpemVD
bGFzcywKICAgICBCdW1wQWxsb2NhdG9yJiBhbGxvY2F0b3IsIEJ1bXBSYW5nZUNhY2hlJiByYW5n
ZUNhY2hlLAogICAgIExpbmVDYWNoZSYgbGluZUNhY2hlLCBGYWlsdXJlQWN0aW9uIGFjdGlvbikK
IHsKQEAgLTE2Niw3ICsxNjYsNyBAQCBpbmxpbmUgdm9pZCBIZWFwOjphbGxvY2F0ZVNtYWxsQnVt
cFJhbmdlcygKICAgICByZXR1cm4gYWxsb2NhdGVTbWFsbEJ1bXBSYW5nZXNCeU9iamVjdChsb2Nr
LCBzaXplQ2xhc3MsIGFsbG9jYXRvciwgcmFuZ2VDYWNoZSwgbGluZUNhY2hlLCBhY3Rpb24pOwog
fQogCi1pbmxpbmUgdm9pZCBIZWFwOjpkZXJlZlNtYWxsTGluZShzdGQ6OnVuaXF1ZV9sb2NrPE11
dGV4PiYgbG9jaywgT2JqZWN0IG9iamVjdCwgTGluZUNhY2hlJiBsaW5lQ2FjaGUpCitpbmxpbmUg
dm9pZCBIZWFwOjpkZXJlZlNtYWxsTGluZShVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBPYmplY3Qg
b2JqZWN0LCBMaW5lQ2FjaGUmIGxpbmVDYWNoZSkKIHsKICAgICBpZiAoIW9iamVjdC5saW5lKCkt
PmRlcmVmKGxvY2spKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0hlYXBDb25zdGFudHMuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFw
Q29uc3RhbnRzLmNwcAppbmRleCBmMzg0YTU0YzZhOC4uNDYwMWQyZmIwMTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRzLmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3Bh
Y2UgYm1hbGxvYyB7CiAKIERFRklORV9TVEFUSUNfUEVSX1BST0NFU1NfU1RPUkFHRShIZWFwQ29u
c3RhbnRzKTsKIAotSGVhcENvbnN0YW50czo6SGVhcENvbnN0YW50cyhjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JikKK0hlYXBDb25zdGFudHM6OkhlYXBDb25zdGFudHMoY29uc3QgTG9ja0hv
bGRlciYpCiAgICAgOiBtX3ZtUGFnZVNpemVQaHlzaWNhbCB7IHZtUGFnZVNpemVQaHlzaWNhbCgp
IH0KIHsKICAgICBSRUxFQVNFX0JBU1NFUlQobV92bVBhZ2VTaXplUGh5c2ljYWwgPj0gc21hbGxQ
YWdlU2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXBDb25zdGFu
dHMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcENvbnN0YW50cy5oCmluZGV4IDBlYmM5
NTBlOWQ2Li5mYjQwNzM4OGQzYyAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9I
ZWFwQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwQ29uc3RhbnRz
LmgKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogCiBjbGFzcyBIZWFwQ29u
c3RhbnRzIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8SGVhcENvbnN0YW50cz4gewogcHVibGlj
OgotICAgIEhlYXBDb25zdGFudHMoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOworICAg
IEhlYXBDb25zdGFudHMoY29uc3QgTG9ja0hvbGRlciYpOwogICAgIH5IZWFwQ29uc3RhbnRzKCkg
PSBkZWxldGU7CiAKICAgICBpbmxpbmUgc2l6ZV90IHBhZ2VDbGFzcyhzaXplX3Qgc2l6ZUNsYXNz
KSBjb25zdCB7IHJldHVybiBtX3BhZ2VDbGFzc2VzW3NpemVDbGFzc107IH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvQWxsb2NhdG9ySW5saW5lcy5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29BbGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggZDc5ZjQyNDEzZDcuLjM3
Zjc2MTFmMGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRv
cklubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0FsbG9jYXRvcklubGlu
ZXMuaApAQCAtNTksNyArNTksNyBAQCB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6YWxsb2Nh
dGUoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCwgYm9vbCBhYm9ydE9uRmFpbAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29uZmlnPgogQk5PX0lOTElORSB2b2lkKiBJc29BbGxvY2F0b3I8Q29uZmlnPjo6
YWxsb2NhdGVTbG93KElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAsIGJvb2wgYWJvcnRPbkZhaWx1
cmUpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIoaGVhcC5sb2NrKTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcihoZWFwLmxvY2spOwogCiAgICAgQWxsb2NhdGlvbk1vZGUgYWxs
b2NhdGlvbk1vZGUgPSBoZWFwLnVwZGF0ZUFsbG9jYXRpb25Nb2RlKCk7CiAgICAgaWYgKGFsbG9j
YXRpb25Nb2RlID09IEFsbG9jYXRpb25Nb2RlOjpTaGFyZWQpIHsKQEAgLTkzLDcgKzkzLDcgQEAg
dGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdm9pZCBJc29BbGxvY2F0b3I8Q29uZmlnPjo6c2Nh
dmVuZ2UoSXNvSGVhcEltcGw8Q29uZmlnPiYgaGVhcCkKIHsKICAgICBpZiAobV9jdXJyZW50UGFn
ZSkgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihoZWFwLmxvY2spOwor
ICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihoZWFwLmxvY2spOwogICAgICAgICBtX2N1cnJlbnRQ
YWdlLT5zdG9wQWxsb2NhdGluZyhsb2NrZXIsIG1fZnJlZUxpc3QpOwogICAgICAgICBtX2N1cnJl
bnRQYWdlID0gbnVsbHB0cjsKICAgICAgICAgbV9mcmVlTGlzdC5jbGVhcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EZWFsbG9jYXRvcklubGluZXMuaCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxvY2F0b3JJbmxpbmVzLmgKaW5kZXggMDMyZmI3NzE5
YWEuLjNmNDllZTYxNThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0Rl
YWxsb2NhdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGVhbGxv
Y2F0b3JJbmxpbmVzLmgKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBJc29EZWFsbG9jYXRvcjxDb25m
aWc+OjpkZWFsbG9jYXRlKGFwaTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlLCB2b2lkKiBwdHIpCiAg
ICAgLy8gc2hvdWxkIGJlIHJhcmVseSB0YWtlbi4gSWYgd2Ugc2VlIGZyZXF1ZW50IG1hbGxvYy1h
bmQtZnJlZSBwYXR0ZXJuLCB3ZSB0aWVyIHVwIHRoZSBhbGxvY2F0b3IgZnJvbSBzaGFyZWQgbW9k
ZSB0byBmYXN0IG1vZGUuCiAgICAgSXNvUGFnZUJhc2UqIHBhZ2UgPSBJc29QYWdlQmFzZTo6cGFn
ZUZvcihwdHIpOwogICAgIGlmIChwYWdlLT5pc1NoYXJlZCgpKSB7Ci0gICAgICAgIHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4gbG9ja2VyKCptX2xvY2spOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tl
cigqbV9sb2NrKTsKICAgICAgICAgc3RhdGljX2Nhc3Q8SXNvU2hhcmVkUGFnZSo+KHBhZ2UpLT5m
cmVlPENvbmZpZz4obG9ja2VyLCBoYW5kbGUsIHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgSXNvRGVhbGxvY2F0b3I8Q29uZmlnPjo6ZGVhbGxvY2F0
ZShhcGk6Oklzb0hlYXA8VHlwZT4mIGhhbmRsZSwgdm9pZCogcHRyKQogdGVtcGxhdGU8dHlwZW5h
bWUgQ29uZmlnPgogQk5PX0lOTElORSB2b2lkIElzb0RlYWxsb2NhdG9yPENvbmZpZz46OnNjYXZl
bmdlKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcigqbV9sb2NrKTsKKyAg
ICBMb2NrSG9sZGVyIGxvY2tlcigqbV9sb2NrKTsKICAgICAKICAgICBmb3IgKHZvaWQqIHB0ciA6
IG1fb2JqZWN0TG9nKQogICAgICAgICBJc29QYWdlPENvbmZpZz46OnBhZ2VGb3IocHRyKS0+ZnJl
ZShsb2NrZXIsIHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0Rp
cmVjdG9yeS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3RvcnkuaAppbmRleCBl
NzJiMmQxNjEyMS4uNWEyNzExMTIxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvRGlyZWN0b3J5LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29EaXJlY3Rv
cnkuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgSXNvSGVhcEltcGw8Q29u
ZmlnPiYgaGVhcCgpIHsgcmV0dXJuIG1faGVhcDsgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBk
aWRCZWNvbWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb1BhZ2U8Q29uZmlnPios
IElzb1BhZ2VUcmlnZ2VyKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEJlY29tZShjb25zdCBM
b2NrSG9sZGVyJiwgSXNvUGFnZTxDb25maWc+KiwgSXNvUGFnZVRyaWdnZXIpID0gMDsKICAgICAK
IHByb3RlY3RlZDoKICAgICBJc29IZWFwSW1wbDxDb25maWc+JiBtX2hlYXA7CkBAIC02NSw5ICs2
NSw5IEBAIHB1YmxpYzoKICAgICAKICAgICAvLyBGaW5kIHRoZSBmaXJzdCBwYWdlIHRoYXQgaXMg
ZWxpZ2libGUgZm9yIGFsbG9jYXRpb24gYW5kIHJldHVybiBpdC4gTWF5IHJldHVybiBudWxsIGlm
IHRoZXJlIGlzIG5vCiAgICAgLy8gc3VjaCB0aGluZy4gTWF5IGFsbG9jYXRlIGEgbmV3IHBhZ2Ug
aWYgd2UgaGF2ZSBhbiB1bmNvbW1pdHRlZCBwYWdlLgotICAgIEVsaWdpYmlsaXR5UmVzdWx0PENv
bmZpZz4gdGFrZUZpcnN0RWxpZ2libGUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpOwor
ICAgIEVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gdGFrZUZpcnN0RWxpZ2libGUoY29uc3QgTG9j
a0hvbGRlciYpOwogICAgIAotICAgIHZvaWQgZGlkQmVjb21lKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mLCBJc29QYWdlPENvbmZpZz4qLCBJc29QYWdlVHJpZ2dlcikgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkaWRCZWNvbWUoY29uc3QgTG9ja0hvbGRlciYsIElzb1BhZ2U8Q29uZmlnPiosIElz
b1BhZ2VUcmlnZ2VyKSBvdmVycmlkZTsKICAgICAKICAgICAvLyBUaGlzIGdldHMgY2FsbGVkIGZy
b20gYSBidWxrIGRlY29tbWl0IGZ1bmN0aW9uIGluIHRoZSBTY2F2ZW5nZXIsIHNvIG5vIGxvY2tz
IGFyZSBoZWxkLiBUaGlzIGZ1bmN0aW9uCiAgICAgLy8gbmVlZHMgdG8gZ2V0IHRoZSBoZWFwIGxv
Y2suCkBAIC03NSwxNiArNzUsMTYgQEAgcHVibGljOgogICAgIAogICAgIC8vIEl0ZXJhdGUgb3Zl
ciBhbGwgZW1wdHkgYW5kIGNvbW1pdHRlZCBwYWdlcywgYW5kIHB1dCB0aGVtIGludG8gdGhlIHZl
Y3Rvci4gVGhpcyBhbHNvIHJlY29yZHMgdGhlCiAgICAgLy8gcGFnZXMgYXMgYmVpbmcgZGVjb21t
aXR0ZWQuIEl0J3MgdGhlIGNhbGxlcidzIGpvYiB0byBkbyB0aGUgYWN0dWFsIGRlY29tbWl0dGlu
Zy4KLSAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBWZWN0
b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKKyAgICB2b2lkIHNjYXZlbmdlKGNvbnN0IExvY2tIb2xk
ZXImLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mKTsKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVO
R0UpCi0gICAgdm9pZCBzY2F2ZW5nZVRvSGlnaFdhdGVybWFyayhjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+JiwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+Jik7CisgICAgdm9pZCBzY2F2ZW5n
ZVRvSGlnaFdhdGVybWFyayhjb25zdCBMb2NrSG9sZGVyJiwgVmVjdG9yPERlZmVycmVkRGVjb21t
aXQ+Jik7CiAjZW5kaWYKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBm
b3JFYWNoQ29tbWl0dGVkUGFnZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3Qg
RnVuYyYpOworICAgIHZvaWQgZm9yRWFjaENvbW1pdHRlZFBhZ2UoY29uc3QgTG9ja0hvbGRlciYs
IGNvbnN0IEZ1bmMmKTsKICAgICAKIHByaXZhdGU6Ci0gICAgdm9pZCBzY2F2ZW5nZVBhZ2UoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIHNpemVfdCwgVmVjdG9yPERlZmVycmVkRGVjb21t
aXQ+Jik7CisgICAgdm9pZCBzY2F2ZW5nZVBhZ2UoY29uc3QgTG9ja0hvbGRlciYsIHNpemVfdCwg
VmVjdG9yPERlZmVycmVkRGVjb21taXQ+Jik7CiAKICAgICBzdGQ6OmFycmF5PFBhY2tlZEFsaWdu
ZWRQdHI8SXNvUGFnZTxDb25maWc+LCBJc29QYWdlPENvbmZpZz46OnBhZ2VTaXplPiwgbnVtUGFn
ZXM+IG1fcGFnZXMgeyB9OwogICAgIC8vIE5PVEU6IEkgc3VwcG9zZSB0aGF0IHRoaXMgY291bGQg
YmUgdHdvIGJpdHZlY3RvcnMuIEJ1dCBmcm9tIHdvcmtpbmcgb24gdGhlIEdDLCBJIGZvdW5kIHRo
YXQgdGhlCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0RpcmVjdG9yeUlu
bGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvRGlyZWN0b3J5SW5saW5lcy5oCmlu
ZGV4IDg1NTQyZGY5ODUyLi45Y2Y1NDAxYWE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9Jc29EaXJlY3RvcnlJbmxpbmVzLmgKQEAgLTQyLDcgKzQyLDcgQEAgSXNvRGlyZWN0b3J5PENv
bmZpZywgcGFzc2VkTnVtUGFnZXM+OjpJc29EaXJlY3RvcnkoSXNvSGVhcEltcGw8Q29uZmlnPiYg
aGVhcCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnLCB1bnNpZ25lZCBwYXNzZWROdW1Q
YWdlcz4KLUVsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PENvbmZpZywgcGFz
c2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JikKK0VsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvRGlyZWN0b3J5PENvbmZpZywgcGFz
c2VkTnVtUGFnZXM+Ojp0YWtlRmlyc3RFbGlnaWJsZShjb25zdCBMb2NrSG9sZGVyJikKIHsKICAg
ICB1bnNpZ25lZCBwYWdlSW5kZXggPSAobV9lbGlnaWJsZSB8IH5tX2NvbW1pdHRlZCkuZmluZEJp
dChtX2ZpcnN0RWxpZ2libGVPckRlY29tbWl0dGVkLCB0cnVlKTsKICAgICBtX2ZpcnN0RWxpZ2li
bGVPckRlY29tbWl0dGVkID0gcGFnZUluZGV4OwpAQCAtOTEsNyArOTEsNyBAQCBFbGlnaWJpbGl0
eVJlc3VsdDxDb25maWc+IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6dGFr
ZUZpcnN0RWxpZ2libAogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWcsIHVuc2lnbmVkIHBh
c3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46
OmRpZEJlY29tZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIElzb1BhZ2U8
Q29uZmlnPiogcGFnZSwgSXNvUGFnZVRyaWdnZXIgdHJpZ2dlcikKK3ZvaWQgSXNvRGlyZWN0b3J5
PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpkaWRCZWNvbWUoY29uc3QgTG9ja0hvbGRlciYgbG9j
a2VyLCBJc29QYWdlPENvbmZpZz4qIHBhZ2UsIElzb1BhZ2VUcmlnZ2VyIHRyaWdnZXIpCiB7CiAg
ICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBmYWxzZTsKICAgICB1bnNpZ25lZCBw
YWdlSW5kZXggPSBwYWdlLT5pbmRleCgpOwpAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSXNvRGly
ZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpkaWREZWNvbW1pdCh1bnNpZ25lZCBpbmRl
eCkKICAgICAvLyBGSVhNRTogV2UgY291bGQgZG8gdGhpcyB3aXRob3V0IGdyYWJiaW5nIHRoZSBs
b2NrLiBJIGp1c3QgZG91YnQgdGhhdCBpdCBtYXR0ZXJzLiBUaGlzIGlzIG5vdCBnb2luZwogICAg
IC8vIHRvIGJlIGEgZnJlcXVlbnRseSBleGVjdXRlZCBwYXRoLCBpbiB0aGUgc2Vuc2UgdGhhdCBk
ZWNvbW1pdHRpbmcgcGVyZiB3aWxsIGJlIGRvbWluYXRlZCBieSB0aGUKICAgICAvLyBzeXNjYWxs
IGl0c2VsZiAod2hpY2ggaGFzIHRvIGRvIG1hbnkgaGFyZCB0aGluZ3MpLgotICAgIHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4gbG9ja2VyKHRoaXMtPm1faGVhcC5sb2NrKTsKKyAgICBMb2NrSG9sZGVy
IGxvY2tlcih0aGlzLT5tX2hlYXAubG9jayk7CiAgICAgQkFTU0VSVCghIW1fY29tbWl0dGVkW2lu
ZGV4XSk7CiAgICAgdGhpcy0+bV9oZWFwLmlzTm9Mb25nZXJGcmVlYWJsZShtX3BhZ2VzW2luZGV4
XS5nZXQoKSwgSXNvUGFnZUJhc2U6OnBhZ2VTaXplKTsKICAgICBtX2NvbW1pdHRlZFtpbmRleF0g
PSBmYWxzZTsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBh
c3NlZE51bVBhZ2VzPjo6ZGlkRGVjb21taXQodW5zaWduZWQgaW5kZXgpCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENvbmZpZywgdW5zaWduZWQgcGFzc2VkTnVtUGFnZXM+Ci12b2lkIElzb0RpcmVj
dG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VQYWdlKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mLCBzaXplX3QgaW5kZXgsIFZlY3RvcjxEZWZlcnJlZERlY29tbWl0PiYg
ZGVjb21taXRzKQordm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNj
YXZlbmdlUGFnZShjb25zdCBMb2NrSG9sZGVyJiwgc2l6ZV90IGluZGV4LCBWZWN0b3I8RGVmZXJy
ZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHsKICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGlzIHBh
Z2UgaXMgbm93IG9mZiBsaW1pdHMuCiAgICAgbV9lbXB0eVtpbmRleF0gPSBmYWxzZTsKQEAgLTE0
MCw3ICsxNDAsNyBAQCB2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6
c2NhdmVuZ2VQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb25maWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rvcnk8
Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OnNjYXZlbmdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxN
dXRleD4mIGxvY2tlciwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCit2b2lk
IElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2UoY29uc3QgTG9j
a0hvbGRlciYgbG9ja2VyLCBWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHsK
ICAgICAobV9lbXB0eSAmIG1fY29tbWl0dGVkKS5mb3JFYWNoU2V0Qml0KAogICAgICAgICBbJl0g
KHNpemVfdCBpbmRleCkgewpAQCAtMTUzLDcgKzE1Myw3IEBAIHZvaWQgSXNvRGlyZWN0b3J5PENv
bmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+CiAKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25m
aWcsIHVuc2lnbmVkIHBhc3NlZE51bVBhZ2VzPgotdm9pZCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBw
YXNzZWROdW1QYWdlcz46OnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mIGxvY2tlciwgVmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMp
Cit2b2lkIElzb0RpcmVjdG9yeTxDb25maWcsIHBhc3NlZE51bVBhZ2VzPjo6c2NhdmVuZ2VUb0hp
Z2hXYXRlcm1hcmsoY29uc3QgTG9ja0hvbGRlciYgbG9ja2VyLCBWZWN0b3I8RGVmZXJyZWREZWNv
bW1pdD4mIGRlY29tbWl0cykKIHsKICAgICAobV9lbXB0eSAmIG1fY29tbWl0dGVkKS5mb3JFYWNo
U2V0Qml0KAogICAgICAgICBbJl0gKHNpemVfdCBpbmRleCkgewpAQCAtMTY2LDcgKzE2Niw3IEBA
IHZvaWQgSXNvRGlyZWN0b3J5PENvbmZpZywgcGFzc2VkTnVtUGFnZXM+OjpzY2F2ZW5nZVRvSGln
aFdhdGVybWFyayhjb25zdCBzdGQ6OmxvCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywgdW5z
aWduZWQgcGFzc2VkTnVtUGFnZXM+CiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29E
aXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmZvckVhY2hDb21taXR0ZWRQYWdlKGNv
bnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJiBmdW5jKQordm9pZCBJc29E
aXJlY3Rvcnk8Q29uZmlnLCBwYXNzZWROdW1QYWdlcz46OmZvckVhY2hDb21taXR0ZWRQYWdlKGNv
bnN0IExvY2tIb2xkZXImLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIG1fY29tbWl0dGVkLmZv
ckVhY2hTZXRCaXQoCiAgICAgICAgIFsmXSAoc2l6ZV90IGluZGV4KSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb0hlYXBJbXBsLmgKaW5kZXggMGJhYTgwODg4NmIuLjhkMDZiMDdiMDAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29IZWFwSW1wbC5oCkBAIC0xMDUsMTEgKzEwNSwxMSBAQCBjbGFzcyBJ
c29IZWFwSW1wbCBmaW5hbCA6IHB1YmxpYyBJc29IZWFwSW1wbEJhc2UgewogcHVibGljOgogICAg
IElzb0hlYXBJbXBsKCk7CiAgICAgCi0gICAgRWxpZ2liaWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtl
Rmlyc3RFbGlnaWJsZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgRWxpZ2li
aWxpdHlSZXN1bHQ8Q29uZmlnPiB0YWtlRmlyc3RFbGlnaWJsZShjb25zdCBMb2NrSG9sZGVyJik7
CiAgICAgCiAgICAgLy8gQ2FsbGJhY2tzIGZyb20gZGlyZWN0b3J5LgotICAgIHZvaWQgZGlkQmVj
b21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElz
b0RpcmVjdG9yeTxDb25maWcsIG51bVBhZ2VzSW5JbmxpbmVEaXJlY3Rvcnk+Kik7Ci0gICAgdm9p
ZCBkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21taXRlZChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0
ZXg+JiwgSXNvRGlyZWN0b3J5PENvbmZpZywgSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+OjpudW1Q
YWdlcz4qKTsKKyAgICB2b2lkIGRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IExv
Y2tIb2xkZXImLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5
PiopOworICAgIHZvaWQgZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQoY29uc3QgTG9ja0hv
bGRlciYsIElzb0RpcmVjdG9yeTxDb25maWcsIElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVt
UGFnZXM+Kik7CiAgICAgCiAgICAgdm9pZCBzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1p
dD4mKSBvdmVycmlkZTsKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCkBAIC0xMjQsMTcgKzEy
NCwxNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgbnVtQ29tbWl0dGVkUGFnZXMoKTsKICAgICAK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotICAgIHZvaWQgZm9yRWFjaERpcmVjdG9yeShj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9y
RWFjaERpcmVjdG9yeShjb25zdCBMb2NrSG9sZGVyJiwgY29uc3QgRnVuYyYpOwogICAgIAogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmM+Ci0gICAgdm9pZCBmb3JFYWNoQ29tbWl0dGVkUGFnZShj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgY29uc3QgRnVuYyYpOworICAgIHZvaWQgZm9y
RWFjaENvbW1pdHRlZFBhZ2UoY29uc3QgTG9ja0hvbGRlciYsIGNvbnN0IEZ1bmMmKTsKICAgICAK
ICAgICAvLyBUaGlzIGlzIG9ubHkgYWNjdXJhdGUgd2hlbiBhbGwgdGhyZWFkcyBhcmUgc2NhdmVu
Z2VkLiBPdGhlcndpc2UgaXQgd2lsbCBvdmVyZXN0aW1hdGUuCiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuYz4KLSAgICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mLCBjb25zdCBGdW5jJik7CisgICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVjdChjb25z
dCBMb2NrSG9sZGVyJiwgY29uc3QgRnVuYyYpOwogCiAgICAgQWxsb2NhdGlvbk1vZGUgdXBkYXRl
QWxsb2NhdGlvbk1vZGUoKTsKLSAgICB2b2lkKiBhbGxvY2F0ZUZyb21TaGFyZWQoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYsIGJvb2wgYWJvcnRPbkZhaWx1cmUpOworICAgIHZvaWQqIGFs
bG9jYXRlRnJvbVNoYXJlZChjb25zdCBMb2NrSG9sZGVyJiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7
CiAKIHByaXZhdGU6CiAgICAgUGFja2VkUHRyPElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPj4gbV9o
ZWFkRGlyZWN0b3J5IHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29IZWFwSW1wbElubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVh
cEltcGxJbmxpbmVzLmgKaW5kZXggN2YwZmMzMTFjYTQuLjYxZTllMjYwZmM2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb0hlYXBJbXBsSW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvSGVhcEltcGxJbmxpbmVzLmgKQEAgLTQxLDcgKzQxLDcgQEAg
SXNvSGVhcEltcGw8Q29uZmlnPjo6SXNvSGVhcEltcGwoKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb25maWc+Ci1FbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElzb0hlYXBJbXBsPENvbmZpZz46
OnRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlcikK
K0VsaWdpYmlsaXR5UmVzdWx0PENvbmZpZz4gSXNvSGVhcEltcGw8Q29uZmlnPjo6dGFrZUZpcnN0
RWxpZ2libGUoY29uc3QgTG9ja0hvbGRlciYgbG9ja2VyKQogewogICAgIGlmIChtX2lzSW5saW5l
RGlyZWN0b3J5RWxpZ2libGVPckRlY29tbWl0dGVkKSB7CiAgICAgICAgIEVsaWdpYmlsaXR5UmVz
dWx0PENvbmZpZz4gcmVzdWx0ID0gbV9pbmxpbmVEaXJlY3RvcnkudGFrZUZpcnN0RWxpZ2libGUo
bG9ja2VyKTsKQEAgLTk0LDE0ICs5NCwxNCBAQCBFbGlnaWJpbGl0eVJlc3VsdDxDb25maWc+IElz
b0hlYXBJbXBsPENvbmZpZz46OnRha2VGaXJzdEVsaWdpYmxlKGNvbnN0IHN0ZDo6bG9jawogfQog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRp
ZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4m
LCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBudW1QYWdlc0luSW5saW5lRGlyZWN0b3J5PiogZGlyZWN0
b3J5KQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpkaWRCZWNvbWVFbGlnaWJsZU9yRGVjb21t
aXRlZChjb25zdCBMb2NrSG9sZGVyJiwgSXNvRGlyZWN0b3J5PENvbmZpZywgbnVtUGFnZXNJbklu
bGluZURpcmVjdG9yeT4qIGRpcmVjdG9yeSkKIHsKICAgICBSRUxFQVNFX0JBU1NFUlQoZGlyZWN0
b3J5ID09ICZtX2lubGluZURpcmVjdG9yeSk7CiAgICAgbV9pc0lubGluZURpcmVjdG9yeUVsaWdp
YmxlT3JEZWNvbW1pdHRlZCA9IHRydWU7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4K
LXZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6ZGlkQmVjb21lRWxpZ2libGVPckRlY29tbWl0ZWQo
Y29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIElzb0RpcmVjdG9yeTxDb25maWcsIElzb0Rp
cmVjdG9yeVBhZ2U8Q29uZmlnPjo6bnVtUGFnZXM+KiBkaXJlY3RvcnkpCit2b2lkIElzb0hlYXBJ
bXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVkKGNvbnN0IExvY2tIb2xk
ZXImLCBJc29EaXJlY3Rvcnk8Q29uZmlnLCBJc29EaXJlY3RvcnlQYWdlPENvbmZpZz46Om51bVBh
Z2VzPiogZGlyZWN0b3J5KQogewogICAgIFJFTEVBU0VfQkFTU0VSVChtX2ZpcnN0RWxpZ2libGVP
ckRlY29tbWl0ZWREaXJlY3RvcnkpOwogICAgIGF1dG8qIGRpcmVjdG9yeVBhZ2UgPSBJc29EaXJl
Y3RvcnlQYWdlPENvbmZpZz46OnBhZ2VGb3IoZGlyZWN0b3J5KTsKQEAgLTExMiw3ICsxMTIsNyBA
QCB2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmRpZEJlY29tZUVsaWdpYmxlT3JEZWNvbW1pdGVk
KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdQogdGVtcGxhdGU8dHlwZW5hbWUgQ29uZmlnPgogdm9p
ZCBJc29IZWFwSW1wbDxDb25maWc+OjpzY2F2ZW5nZShWZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4m
IGRlY29tbWl0cykKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcih0aGlzLT5s
b2NrKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcih0aGlzLT5sb2NrKTsKICAgICBmb3JFYWNoRGly
ZWN0b3J5KAogICAgICAgICBsb2NrZXIsCiAgICAgICAgIFsmXSAoYXV0byYgZGlyZWN0b3J5KSB7
CkBAIC0xMjUsNyArMTI1LDcgQEAgdm9pZCBJc29IZWFwSW1wbDxDb25maWc+OjpzY2F2ZW5nZShW
ZWN0b3I8RGVmZXJyZWREZWNvbW1pdD4mIGRlY29tbWl0cykKIHRlbXBsYXRlPHR5cGVuYW1lIENv
bmZpZz4KIHZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6c2NhdmVuZ2VUb0hpZ2hXYXRlcm1hcmso
VmVjdG9yPERlZmVycmVkRGVjb21taXQ+JiBkZWNvbW1pdHMpCiB7Ci0gICAgc3RkOjpsb2NrX2d1
YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+bG9jayk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIodGhp
cy0+bG9jayk7CiAgICAgaWYgKCFtX2RpcmVjdG9yeUhpZ2hXYXRlcm1hcmspCiAgICAgICAgIG1f
aW5saW5lRGlyZWN0b3J5LnNjYXZlbmdlVG9IaWdoV2F0ZXJtYXJrKGxvY2tlciwgZGVjb21taXRz
KTsKICAgICBmb3IgKElzb0RpcmVjdG9yeVBhZ2U8Q29uZmlnPiogcGFnZSA9IG1faGVhZERpcmVj
dG9yeS5nZXQoKTsgcGFnZTsgcGFnZSA9IHBhZ2UtPm5leHQpIHsKQEAgLTE1Niw3ICsxNTYsNyBA
QCB1bnNpZ25lZCBJc29IZWFwSW1wbDxDb25maWc+OjpkZWFsbG9jYXRvck9mZnNldCgpCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb25maWc+CiB1bnNpZ25lZCBJc29IZWFwSW1wbDxDb25maWc+OjpudW1M
aXZlT2JqZWN0cygpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIodGhpcy0+
bG9jayk7CisgICAgTG9ja0hvbGRlciBsb2NrZXIodGhpcy0+bG9jayk7CiAgICAgdW5zaWduZWQg
cmVzdWx0ID0gMDsKICAgICBmb3JFYWNoTGl2ZU9iamVjdCgKICAgICAgICAgbG9ja2VyLApAQCAt
MTY5LDcgKzE2OSw3IEBAIHVuc2lnbmVkIElzb0hlYXBJbXBsPENvbmZpZz46Om51bUxpdmVPYmpl
Y3RzKCkKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHVuc2lnbmVkIElzb0hlYXBJbXBsPENv
bmZpZz46Om51bUNvbW1pdHRlZFBhZ2VzKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+
IGxvY2tlcih0aGlzLT5sb2NrKTsKKyAgICBMb2NrSG9sZGVyIGxvY2tlcih0aGlzLT5sb2NrKTsK
ICAgICB1bnNpZ25lZCByZXN1bHQgPSAwOwogICAgIGZvckVhY2hDb21taXR0ZWRQYWdlKAogICAg
ICAgICBsb2NrZXIsCkBAIC0xODEsNyArMTgxLDcgQEAgdW5zaWduZWQgSXNvSGVhcEltcGw8Q29u
ZmlnPjo6bnVtQ29tbWl0dGVkUGFnZXMoKQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNo
RGlyZWN0b3J5KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBjb25zdCBGdW5jJiBmdW5j
KQordm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoRGlyZWN0b3J5KGNvbnN0IExvY2tI
b2xkZXImLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGZ1bmMobV9pbmxpbmVEaXJlY3Rvcnkp
OwogICAgIGZvciAoSXNvRGlyZWN0b3J5UGFnZTxDb25maWc+KiBwYWdlID0gbV9oZWFkRGlyZWN0
b3J5LmdldCgpOyBwYWdlOyBwYWdlID0gcGFnZS0+bmV4dCkKQEAgLTE5MCw3ICsxOTAsNyBAQCB2
b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hEaXJlY3RvcnkoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYsIGNvbnN0CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmM+Ci12b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hDb21t
aXR0ZWRQYWdlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgY29uc3QgRnVu
YyYgZnVuYykKK3ZvaWQgSXNvSGVhcEltcGw8Q29uZmlnPjo6Zm9yRWFjaENvbW1pdHRlZFBhZ2Uo
Y29uc3QgTG9ja0hvbGRlciYgbG9ja2VyLCBjb25zdCBGdW5jJiBmdW5jKQogewogICAgIGZvckVh
Y2hEaXJlY3RvcnkoCiAgICAgICAgIGxvY2tlciwKQEAgLTIwMSw3ICsyMDEsNyBAQCB2b2lkIElz
b0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hDb21taXR0ZWRQYWdlKGNvbnN0IHN0ZDo6bG9ja19n
dWFyZDxNdXRleD4mIGxvYwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+CiB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jPgotdm9pZCBJc29IZWFwSW1wbDxDb25maWc+Ojpmb3JFYWNoTGl2ZU9iamVj
dChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIsIGNvbnN0IEZ1bmMmIGZ1bmMp
Cit2b2lkIElzb0hlYXBJbXBsPENvbmZpZz46OmZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IExvY2tI
b2xkZXImIGxvY2tlciwgY29uc3QgRnVuYyYgZnVuYykKIHsKICAgICBmb3JFYWNoQ29tbWl0dGVk
UGFnZSgKICAgICAgICAgbG9ja2VyLApAQCAtMzA1LDcgKzMwNSw3IEBAIEFsbG9jYXRpb25Nb2Rl
IElzb0hlYXBJbXBsPENvbmZpZz46OnVwZGF0ZUFsbG9jYXRpb25Nb2RlKCkKIH0KIAogdGVtcGxh
dGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCogSXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVG
cm9tU2hhcmVkKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBib29sIGFib3J0T25GYWls
dXJlKQordm9pZCogSXNvSGVhcEltcGw8Q29uZmlnPjo6YWxsb2NhdGVGcm9tU2hhcmVkKGNvbnN0
IExvY2tIb2xkZXImLCBib29sIGFib3J0T25GYWlsdXJlKQogewogICAgIHN0YXRpYyBjb25zdGV4
cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvUGFnZS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmgKaW5kZXgg
YTE1MWNmOTg3OTEuLmNmNWI1NTMxZjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1BhZ2UuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2UuaApAQCAt
NzcsMTkgKzc3LDE5IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGluZGV4KCkgY29uc3QgeyBy
ZXR1cm4gbV9pbmRleDsgfQogICAgIAotICAgIHZvaWQgZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+Jiwgdm9pZCopOworICAgIHZvaWQgZnJlZShjb25zdCBMb2NrSG9sZGVyJiwgdm9p
ZCopOwogCiAgICAgLy8gQ2FsbGVkIGFmdGVyIHRoaXMgcGFnZSBpcyBhbHJlYWR5IHNlbGVjdGVk
IGZvciBhbGxvY2F0aW9uLgotICAgIEZyZWVMaXN0IHN0YXJ0QWxsb2NhdGluZyhjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgRnJlZUxpc3Qgc3RhcnRBbGxvY2F0aW5nKGNvbnN0
IExvY2tIb2xkZXImKTsKICAgICAKICAgICAvLyBDYWxsZWQgYWZ0ZXIgdGhlIGFsbG9jYXRvciBw
aWNrcyBhbm90aGVyIHBhZ2UgdG8gcmVwbGFjZSB0aGlzIG9uZS4KLSAgICB2b2lkIHN0b3BBbGxv
Y2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBGcmVlTGlzdCk7CisgICAgdm9p
ZCBzdG9wQWxsb2NhdGluZyhjb25zdCBMb2NrSG9sZGVyJiwgRnJlZUxpc3QpOwogCiAgICAgSXNv
RGlyZWN0b3J5QmFzZTxDb25maWc+JiBkaXJlY3RvcnkoKSB7IHJldHVybiBtX2RpcmVjdG9yeTsg
fQogICAgIGJvb2wgaXNJblVzZUZvckFsbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2lzSW5V
c2VGb3JBbGxvY2F0aW9uOyB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuYz4KLSAg
ICB2b2lkIGZvckVhY2hMaXZlT2JqZWN0KGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mLCBj
b25zdCBGdW5jJik7CisgICAgdm9pZCBmb3JFYWNoTGl2ZU9iamVjdChjb25zdCBMb2NrSG9sZGVy
JiwgY29uc3QgRnVuYyYpOwogICAgIAogICAgIElzb0hlYXBJbXBsPENvbmZpZz4mIGhlYXAoKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMu
aCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZUlubGluZXMuaAppbmRleCBjNWNlODcx
MjA5MS4uZTM5NzYyYWI4NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
UGFnZUlubGluZXMuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1BhZ2VJbmxpbmVz
LmgKQEAgLTY1LDcgKzY1LDcgQEAgSXNvUGFnZTxDb25maWc+KiBJc29QYWdlPENvbmZpZz46OnBh
Z2VGb3Iodm9pZCogcHRyKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb25maWc+Ci12b2lkIElz
b1BhZ2U8Q29uZmlnPjo6ZnJlZShjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBsb2NrZXIs
IHZvaWQqIHBhc3NlZFB0cikKK3ZvaWQgSXNvUGFnZTxDb25maWc+OjpmcmVlKGNvbnN0IExvY2tI
b2xkZXImIGxvY2tlciwgdm9pZCogcGFzc2VkUHRyKQogewogICAgIEJBU1NFUlQoIW1faXNTaGFy
ZWQpOwogICAgIHVuc2lnbmVkIG9mZnNldCA9IHN0YXRpY19jYXN0PGNoYXIqPihwYXNzZWRQdHIp
IC0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odGhpcyk7CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQg
SXNvUGFnZTxDb25maWc+OjpmcmVlKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tl
ciwgdm9pZCogcGFzc2VkUHRyCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUZyZWVM
aXN0IElzb1BhZ2U8Q29uZmlnPjo6c3RhcnRBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFy
ZDxNdXRleD4mKQorRnJlZUxpc3QgSXNvUGFnZTxDb25maWc+OjpzdGFydEFsbG9jYXRpbmcoY29u
c3QgTG9ja0hvbGRlciYpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBib29sIHZlcmJvc2UgPSBm
YWxzZTsKICAgICAKQEAgLTIwOCw3ICsyMDgsNyBAQCBGcmVlTGlzdCBJc29QYWdlPENvbmZpZz46
OnN0YXJ0QWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29uZmlnPgotdm9pZCBJc29QYWdlPENvbmZpZz46OnN0b3BBbGxvY2F0
aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mIGxvY2tlciwgRnJlZUxpc3QgZnJlZUxp
c3QpCit2b2lkIElzb1BhZ2U8Q29uZmlnPjo6c3RvcEFsbG9jYXRpbmcoY29uc3QgTG9ja0hvbGRl
ciYgbG9ja2VyLCBGcmVlTGlzdCBmcmVlTGlzdCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIApAQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgSXNvUGFn
ZTxDb25maWc+OjpzdG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiBs
b2NrZXIsIEZyZWVMCiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmM+Ci12b2lkIElzb1BhZ2U8Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29uc3Qg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYsIGNvbnN0IEZ1bmMmIGZ1bmMpCit2b2lkIElzb1BhZ2U8
Q29uZmlnPjo6Zm9yRWFjaExpdmVPYmplY3QoY29uc3QgTG9ja0hvbGRlciYsIGNvbnN0IEZ1bmMm
IGZ1bmMpCiB7CiAgICAgZm9yICh1bnNpZ25lZCB3b3JkSW5kZXggPSAwOyB3b3JkSW5kZXggPCBi
aXRzQXJyYXlMZW5ndGgobnVtT2JqZWN0cyk7ICsrd29yZEluZGV4KSB7CiAgICAgICAgIHVuc2ln
bmVkIHdvcmQgPSBtX2FsbG9jQml0c1t3b3JkSW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lz
b1NoYXJlZEhlYXAuaAppbmRleCA1ZWE1MWU1ZDFmZC4uOTZjNDE0ZDU5NjUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcC5oCkBAIC01Myw3ICs1Myw3IEBAIHByaXZhdGU6CiAK
IGNsYXNzIElzb1NoYXJlZEhlYXAgOiBwdWJsaWMgU3RhdGljUGVyUHJvY2VzczxJc29TaGFyZWRI
ZWFwPiB7CiBwdWJsaWM6Ci0gICAgSXNvU2hhcmVkSGVhcChjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JikKKyAgICBJc29TaGFyZWRIZWFwKGNvbnN0IExvY2tIb2xkZXImKQogICAgIHsKICAg
ICB9CiAKQEAgLTYyLDcgKzYyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHRlbXBsYXRl
PHVuc2lnbmVkPgotICAgIHZvaWQqIGFsbG9jYXRlU2xvdyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8
TXV0ZXg+JiwgYm9vbCBhYm9ydE9uRmFpbHVyZSk7CisgICAgdm9pZCogYWxsb2NhdGVTbG93KGNv
bnN0IExvY2tIb2xkZXImLCBib29sIGFib3J0T25GYWlsdXJlKTsKIAogICAgIElzb1NoYXJlZFBh
Z2UqIG1fY3VycmVudFBhZ2UgeyBudWxscHRyIH07CiAgICAgVmFyaWFkaWNCdW1wQWxsb2NhdG9y
IG1fYWxsb2NhdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFy
ZWRIZWFwSW5saW5lcy5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5s
aW5lcy5oCmluZGV4IGRhMThlNmU3Yjg2Li43NDQzMDQzMDMwZCAxMDA2NDQKLS0tIGEvU291cmNl
L2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFyZWRIZWFwSW5saW5lcy5oCisrKyBiL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvSXNvU2hhcmVkSGVhcElubGluZXMuaApAQCAtNTEsNyArNTEsNyBAQCBpbmxp
bmUgY29uc3RleHByIHVuc2lnbmVkIGNvbXB1dGVPYmplY3RTaXplRm9yU2hhcmVkQ2VsbCh1bnNp
Z25lZCBvYmplY3RTaXplKQogdGVtcGxhdGU8dW5zaWduZWQgcGFzc2VkT2JqZWN0U2l6ZT4KIHZv
aWQqIElzb1NoYXJlZEhlYXA6OmFsbG9jYXRlTmV3KGJvb2wgYWJvcnRPbkZhaWx1cmUpCiB7Ci0g
ICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrZXIobXV0ZXgoKSk7CisgICAgTG9ja0hvbGRl
ciBsb2NrZXIobXV0ZXgoKSk7CiAgICAgY29uc3RleHByIHVuc2lnbmVkIG9iamVjdFNpemUgPSBj
b21wdXRlT2JqZWN0U2l6ZUZvclNoYXJlZENlbGwocGFzc2VkT2JqZWN0U2l6ZSk7CiAgICAgcmV0
dXJuIG1fYWxsb2NhdG9yLnRlbXBsYXRlIGFsbG9jYXRlPG9iamVjdFNpemU+KAogICAgICAgICBb
Jl0gKCkgLT4gdm9pZCogewpAQCAtNjAsNyArNjAsNyBAQCB2b2lkKiBJc29TaGFyZWRIZWFwOjph
bGxvY2F0ZU5ldyhib29sIGFib3J0T25GYWlsdXJlKQogfQogCiB0ZW1wbGF0ZTx1bnNpZ25lZCBw
YXNzZWRPYmplY3RTaXplPgotQk5PX0lOTElORSB2b2lkKiBJc29TaGFyZWRIZWFwOjphbGxvY2F0
ZVNsb3coY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYgbG9ja2VyLCBib29sIGFib3J0T25G
YWlsdXJlKQorQk5PX0lOTElORSB2b2lkKiBJc29TaGFyZWRIZWFwOjphbGxvY2F0ZVNsb3coY29u
c3QgTG9ja0hvbGRlciYgbG9ja2VyLCBib29sIGFib3J0T25GYWlsdXJlKQogewogICAgIFNjYXZl
bmdlciYgc2NhdmVuZ2VyID0gKlNjYXZlbmdlcjo6Z2V0KCk7CiAgICAgc2NhdmVuZ2VyLmRpZFN0
YXJ0R3Jvd2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29TaGFy
ZWRQYWdlLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2UuaAppbmRleCBi
ZmY3MGMyNGFjYi4uZWQ1OTQ4MTM4ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSXNvU2hhcmVkUGFnZS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVk
UGFnZS5oCkBAIC0zOCw5ICszOCw5IEBAIHB1YmxpYzoKICAgICBCRVhQT1JUIHN0YXRpYyBJc29T
aGFyZWRQYWdlKiB0cnlDcmVhdGUoKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZywg
dHlwZW5hbWUgVHlwZT4KLSAgICB2b2lkIGZyZWUoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYsIGFwaTo6SXNvSGVhcDxUeXBlPiYsIHZvaWQqKTsKLSAgICBWYXJpYWRpY0J1bXBBbGxvY2F0
b3Igc3RhcnRBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKLSAgICB2
b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKTsKKyAgICB2
b2lkIGZyZWUoY29uc3QgTG9ja0hvbGRlciYsIGFwaTo6SXNvSGVhcDxUeXBlPiYsIHZvaWQqKTsK
KyAgICBWYXJpYWRpY0J1bXBBbGxvY2F0b3Igc3RhcnRBbGxvY2F0aW5nKGNvbnN0IExvY2tIb2xk
ZXImKTsKKyAgICB2b2lkIHN0b3BBbGxvY2F0aW5nKGNvbnN0IExvY2tIb2xkZXImKTsKIAogcHJp
dmF0ZToKICAgICBJc29TaGFyZWRQYWdlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNv
U2hhcmVkUGFnZUlubGluZXMuaAppbmRleCBlNDQxMGJhZDYwMC4uMTViOWQwYTk2ZDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvU2hhcmVkUGFnZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1NoYXJlZFBhZ2VJbmxpbmVzLmgKQEAgLTM1LDcg
KzM1LDcgQEAgbmFtZXNwYWNlIGJtYWxsb2MgewogLy8gVGhpcyBpcyBiZWNhdXNlIGVtcHR5IElz
b1NoYXJlZFBhZ2UgaXMgc3RpbGwgc3BsaXQgaW50byB2YXJpb3VzIGRpZmZlcmVudCBvYmplY3Rz
IHRoYXQgc2hvdWxkIGtlZXAgc29tZSBwYXJ0IG9mIHZpcnR1YWwgbWVtb3J5IHJlZ2lvbiBkZWRp
Y2F0ZWQuCiAvLyBXZSBjYW5ub3Qgc2V0IHVwIGJ1bXAgYWxsb2NhdGlvbiBmb3Igc3VjaCBhIHBh
Z2UuIE5vdCBmcmVlaW5nIElzb1NoYXJlZFBhZ2VzIGFyZSBPSyBzaW5jZSBJc29TaGFyZWRQYWdl
IGlzIG9ubHkgdXNlZCBmb3IgdGhlIGxvd2VyIHRpZXIgb2YgSXNvSGVhcC4KIHRlbXBsYXRlPHR5
cGVuYW1lIENvbmZpZywgdHlwZW5hbWUgVHlwZT4KLXZvaWQgSXNvU2hhcmVkUGFnZTo6ZnJlZShj
b25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUs
IHZvaWQqIHB0cikKK3ZvaWQgSXNvU2hhcmVkUGFnZTo6ZnJlZShjb25zdCBMb2NrSG9sZGVyJiwg
YXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kbGUsIHZvaWQqIHB0cikKIHsKICAgICBhdXRvJiBoZWFw
SW1wbCA9IGhhbmRsZS5pbXBsKCk7CiAgICAgdWludDhfdCBpbmRleCA9ICppbmRleFNsb3RGb3I8
Q29uZmlnPihwdHIpICYgSXNvSGVhcEltcGxCYXNlOjptYXhBbGxvY2F0aW9uRnJvbVNoYXJlZE1h
c2s7CkBAIC00Niw3ICs0Niw3IEBAIHZvaWQgSXNvU2hhcmVkUGFnZTo6ZnJlZShjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+JiwgYXBpOjpJc29IZWFwPFR5cGU+JiBoYW5kCiAgICAgaGVhcElt
cGwubV9hdmFpbGFibGVTaGFyZWQgfD0gKDFVIDw8IGluZGV4KTsKIH0KIAotaW5saW5lIFZhcmlh
ZGljQnVtcEFsbG9jYXRvciBJc29TaGFyZWRQYWdlOjpzdGFydEFsbG9jYXRpbmcoY29uc3Qgc3Rk
Ojpsb2NrX2d1YXJkPE11dGV4PiYpCitpbmxpbmUgVmFyaWFkaWNCdW1wQWxsb2NhdG9yIElzb1No
YXJlZFBhZ2U6OnN0YXJ0QWxsb2NhdGluZyhjb25zdCBMb2NrSG9sZGVyJikKIHsKICAgICBzdGF0
aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOwogCkBAIC02MSw3ICs2MSw3IEBAIGlu
bGluZSBWYXJpYWRpY0J1bXBBbGxvY2F0b3IgSXNvU2hhcmVkUGFnZTo6c3RhcnRBbGxvY2F0aW5n
KGNvbnN0IHN0ZDo6bG9ja19ndWFyCiAgICAgcmV0dXJuIFZhcmlhZGljQnVtcEFsbG9jYXRvcihw
YXlsb2FkRW5kLCByZW1haW5pbmcpOwogfQogCi1pbmxpbmUgdm9pZCBJc29TaGFyZWRQYWdlOjpz
dG9wQWxsb2NhdGluZyhjb25zdCBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK2lubGluZSB2b2lk
IElzb1NoYXJlZFBhZ2U6OnN0b3BBbGxvY2F0aW5nKGNvbnN0IExvY2tIb2xkZXImKQogewogICAg
IHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTRGVhbGxvY2F0b3JFbnRyeS5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5LmgKaW5kZXggYTBkYmMzMDM3NDQu
LjY1OGVjNGVkMmM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0Rl
YWxsb2NhdG9yRW50cnkuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxs
b2NhdG9yRW50cnkuaApAQCAtNDMsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgTXV0ZXggbG9jazsK
ICAgICAKIHByaXZhdGU6Ci0gICAgSXNvVExTRGVhbGxvY2F0b3JFbnRyeShjb25zdCBzdGQ6Omxv
Y2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgSXNvVExTRGVhbGxvY2F0b3JFbnRyeShjb25zdCBMb2Nr
SG9sZGVyJik7CiAKICAgICB2b2lkIGNvbnN0cnVjdCh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBzY2F2ZW5nZSh2b2lkKiBlbnRyeSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmggYi9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmgKaW5kZXgg
Yzk1MzQyODBjZTguLjVkOTRkZGRiMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL0lzb1RMU0RlYWxsb2NhdG9yRW50cnlJbmxpbmVzLmgKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9Jc29UTFNEZWFsbG9jYXRvckVudHJ5SW5saW5lcy5oCkBAIC0yOCw3ICsyOCw3IEBA
CiBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvbmZpZz4KLUlzb1RM
U0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6SXNvVExTRGVhbGxvY2F0b3JFbnRyeShjb25zdCBz
dGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+JikKK0lzb1RMU0RlYWxsb2NhdG9yRW50cnk8Q29uZmlnPjo6
SXNvVExTRGVhbGxvY2F0b3JFbnRyeShjb25zdCBMb2NrSG9sZGVyJikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNJbmxpbmVzLmggYi9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL0lzb1RMU0lubGluZXMuaAppbmRleCAwZDRiMjAxOTRlMC4uNjU2MzBhZjUw
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTSW5saW5lcy5oCisr
KyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTSW5saW5lcy5oCkBAIC0xODQsNyArMTg0
LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVHlwZT4KIHZvaWQgSXNvVExTOjplbnN1cmVIZWFwKGFw
aTo6SXNvSGVhcDxUeXBlPiYgaGFuZGxlKQogewogICAgIGlmICghaGFuZGxlLmlzSW5pdGlhbGl6
ZWQoKSkgewotICAgICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2tlcihoYW5kbGUubV9p
bml0aWFsaXphdGlvbkxvY2spOworICAgICAgICBMb2NrSG9sZGVyIGxvY2tlcihoYW5kbGUubV9p
bml0aWFsaXphdGlvbkxvY2spOwogICAgICAgICBpZiAoIWhhbmRsZS5pc0luaXRpYWxpemVkKCkp
CiAgICAgICAgICAgICBoYW5kbGUuaW5pdGlhbGl6ZSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmNwcCBiL1NvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvSXNvVExTTGF5b3V0LmNwcAppbmRleCAwYmFlNjA3NzAxZS4uZDkxYjgxOGE3ZjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmNwcAorKysgYi9T
b3VyY2UvYm1hbGxvYy9ibWFsbG9jL0lzb1RMU0xheW91dC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAg
bmFtZXNwYWNlIGJtYWxsb2MgewogCiBERUZJTkVfU1RBVElDX1BFUl9QUk9DRVNTX1NUT1JBR0Uo
SXNvVExTTGF5b3V0KTsKIAotSXNvVExTTGF5b3V0OjpJc29UTFNMYXlvdXQoY29uc3Qgc3RkOjps
b2NrX2d1YXJkPE11dGV4PiYpCitJc29UTFNMYXlvdXQ6Oklzb1RMU0xheW91dChjb25zdCBMb2Nr
SG9sZGVyJikKIHsKIH0KIApAQCAtNDEsNyArNDEsNyBAQCB2b2lkIElzb1RMU0xheW91dDo6YWRk
KElzb1RMU0VudHJ5KiBlbnRyeSkKICAgICBSRUxFQVNFX0JBU1NFUlQoIWVudHJ5LT5tX25leHQp
OwogICAgIC8vIElzb1RMU0xheW91dDo6aGVhZCgpIGRvZXMgbm90IHRha2UgYSBsb2NrLiBTbyB3
ZSBzaG91bGQgZW1pdCBtZW1vcnkgZmVuY2UgdG8gbWFrZSBzdXJlIHRoYXQgbmV3bHkgYWRkZWQg
ZW50cnkgaXMgaW5pdGlhbGl6ZWQgd2hlbiBpdCBpcyBjaGFpbmVkIHRvIHRoaXMgbGlua2VkLWxp
c3QuCiAgICAgLy8gRW1pdHRpbmcgbWVtb3J5IGZlbmNlIGhlcmUgaXMgT0sgc2luY2UgdGhpcyBm
dW5jdGlvbiBpcyBub3QgZnJlcXVlbnRseSBjYWxsZWQuCi0gICAgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiBsb2NraW5nKGFkZGluZ011dGV4KTsKKyAgICBMb2NrSG9sZGVyIGxvY2tpbmcoYWRkaW5n
TXV0ZXgpOwogICAgIGlmIChtX2hlYWQpIHsKICAgICAgICAgUkVMRUFTRV9CQVNTRVJUKG1fdGFp
bCk7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSByb3VuZFVwVG9NdWx0aXBsZU9mKGVudHJ5LT5h
bGlnbm1lbnQoKSwgbV90YWlsLT5leHRlbnQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0lzb1RMU0xheW91dC5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29UTFNM
YXlvdXQuaAppbmRleCA1MGM1MDk2MzY3ZS4uMWRhNWFkNTQ1YTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvSXNvVExTTGF5b3V0LmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9Jc29UTFNMYXlvdXQuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBJc29UTFNFbnRyeTsK
IAogY2xhc3MgSXNvVExTTGF5b3V0IDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8SXNvVExTTGF5
b3V0PiB7CiBwdWJsaWM6Ci0gICAgQkVYUE9SVCBJc29UTFNMYXlvdXQoY29uc3Qgc3RkOjpsb2Nr
X2d1YXJkPE11dGV4PiYpOworICAgIEJFWFBPUlQgSXNvVExTTGF5b3V0KGNvbnN0IExvY2tIb2xk
ZXImKTsKICAgICAKICAgICBCRVhQT1JUIHZvaWQgYWRkKElzb1RMU0VudHJ5Kik7CiAgICAgCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL011dGV4LmggYi9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL011dGV4LmgKaW5kZXggZTE4ZGU4NDA4ZmIuLjI0MGM4NWVmZmVhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL011dGV4LmgKKysrIGIvU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9NdXRleC5oCkBAIC0zNSw2ICszNSwxMSBAQAogCiBuYW1lc3BhY2UgYm1hbGxvYyB7
CiAKK2NsYXNzIE11dGV4OworCit1c2luZyBVbmlxdWVMb2NrSG9sZGVyID0gc3RkOjp1bmlxdWVf
bG9jazxNdXRleD47Cit1c2luZyBMb2NrSG9sZGVyID0gc3RkOjpsb2NrX2d1YXJkPE11dGV4PjsK
KwogY2xhc3MgTXV0ZXggewogcHVibGljOgogICAgIGNvbnN0ZXhwciBNdXRleCgpID0gZGVmYXVs
dDsKQEAgLTUxLDcgKzU2LDcgQEAgcHJpdmF0ZToKIH07CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBz
bGVlcCgKLSAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYgbG9jaywgc3RkOjpjaHJvbm86Om1p
bGxpc2Vjb25kcyBkdXJhdGlvbikKKyAgICBVbmlxdWVMb2NrSG9sZGVyJiBsb2NrLCBzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzIGR1cmF0aW9uKQogewogICAgIGlmIChkdXJhdGlvbiA9PSBzdGQ6
OmNocm9ubzo6bWlsbGlzZWNvbmRzKDApKQogICAgICAgICByZXR1cm47CkBAIC02Miw3ICs2Nyw3
IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbGVlcCgKIH0KIAogc3RhdGljIGlubGluZSB2b2lkIHdh
aXRVbnRpbEZhbHNlKAotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiBsb2NrLCBzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzIHNsZWVwRHVyYXRpb24sCisgICAgVW5pcXVlTG9ja0hvbGRlciYg
bG9jaywgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBzbGVlcER1cmF0aW9uLAogICAgIGJvb2wm
IGNvbmRpdGlvbikKIHsKICAgICB3aGlsZSAoY29uZGl0aW9uKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvYm1hbGxvYy9ibWFsbG9jL09iamVjdFR5cGUuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9PYmplY3RUeXBlLmNwcAppbmRleCAxNjg3NjE5ODBmYS4uMWUyZmQ1MzcwNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvT2JqZWN0VHlwZS5jcHAKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9PYmplY3RUeXBlLmNwcApAQCAtMzgsNyArMzgsNyBAQCBPYmplY3RUeXBl
IG9iamVjdFR5cGUoSGVhcCYgaGVhcCwgdm9pZCogb2JqZWN0KQogICAgICAgICBpZiAoIW9iamVj
dCkKICAgICAgICAgICAgIHJldHVybiBPYmplY3RUeXBlOjpTbWFsbDsKIAotICAgICAgICBzdGQ6
OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICBVbmlxdWVM
b2NrSG9sZGVyIGxvY2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgICAgIGlmIChoZWFwLmlzTGFyZ2Uo
bG9jaywgb2JqZWN0KSkKICAgICAgICAgICAgIHJldHVybiBPYmplY3RUeXBlOjpMYXJnZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BlclByb2Nlc3MuY3BwIGIv
U291cmNlL2JtYWxsb2MvYm1hbGxvYy9QZXJQcm9jZXNzLmNwcAppbmRleCAyOTJiOWY1N2VlZC4u
ZDgyZjI1YjVlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvUGVyUHJvY2Vz
cy5jcHAKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9QZXJQcm9jZXNzLmNwcApAQCAtNjAs
NyArNjAsNyBAQCBzdGF0aWMgdm9pZCogYWxsb2NhdGUoc2l6ZV90IHNpemUsIHNpemVfdCBhbGln
bm1lbnQpCiAKIFBlclByb2Nlc3NEYXRhKiBnZXRQZXJQcm9jZXNzRGF0YSh1bnNpZ25lZCBoYXNo
LCBjb25zdCBjaGFyKiBkaXNhbWJpZ3VhdG9yLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGFsaWdubWVu
dCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2soc19tdXRleCk7CisgICAgTG9j
a0hvbGRlciBsb2NrKHNfbXV0ZXgpOwogCiAgICAgUGVyUHJvY2Vzc0RhdGEqJiBidWNrZXQgPSBz
X3RhYmxlW2hhc2ggJSB0YWJsZVNpemVdOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxs
b2MvYm1hbGxvYy9QZXJQcm9jZXNzLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1BlclByb2Nl
c3MuaAppbmRleCBkMjYzODAxNTc4MC4uMWExZjdhOTc3YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9i
bWFsbG9jL2JtYWxsb2MvUGVyUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
UGVyUHJvY2Vzcy5oCkBAIC00Niw3ICs0Niw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIC8vIHgg
PSBvYmplY3QtPm1fZmllbGQ7IC8vIE9LCiAvLyBpZiAoZ2xvYmFsRmxhZykgeyAuLi4gfSAvLyBV
bmRlZmluZWQgYmVoYXZpb3IuCiAvLwotLy8gc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrKFBl
clByb2Nlc3M8T2JqZWN0Pjo6bXV0ZXgoKSk7CisvLyBMb2NrSG9sZGVyIGxvY2soUGVyUHJvY2Vz
czxPYmplY3Q+OjptdXRleCgpKTsKIC8vIE9iamVjdCogb2JqZWN0ID0gUGVyUHJvY2VzczxPYmpl
Y3Q+OjpnZXQobG9jayk7CiAvLyBpZiAoZ2xvYmFsRmxhZykgeyAuLi4gfSAvLyBPSy4KIApAQCAt
MTA1LDcgKzEwNSw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgQk5PX0lOTElORSBzdGF0aWMgVCog
Z2V0U2xvd0Nhc2UoKQogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2Nr
KG11dGV4KCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CiAgICAgICAgIGlm
ICghc19vYmplY3QubG9hZCgpKSB7CiAgICAgICAgICAgICBpZiAoc19kYXRhLT5pc0luaXRpYWxp
emVkKQogICAgICAgICAgICAgICAgIHNfb2JqZWN0LnN0b3JlKHN0YXRpY19jYXN0PFQqPihzX2Rh
dGEtPm1lbW9yeSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5n
ZXIuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuY3BwCmluZGV4IDYwZjA2
NzZiZjMwLi5kNTc1N2UyYTkwOSAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9T
Y2F2ZW5nZXIuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmNwcApA
QCAtNjgsNyArNjgsNyBAQCBzdHJ1Y3QgUHJpbnRUaW1lIHsKIAogREVGSU5FX1NUQVRJQ19QRVJf
UFJPQ0VTU19TVE9SQUdFKFNjYXZlbmdlcik7CiAKLVNjYXZlbmdlcjo6U2NhdmVuZ2VyKGNvbnN0
IHN0ZDo6bG9ja19ndWFyZDxNdXRleD4mKQorU2NhdmVuZ2VyOjpTY2F2ZW5nZXIoY29uc3QgTG9j
a0hvbGRlciYpCiB7CiAgICAgQkFTU0VSVCghRW52aXJvbm1lbnQ6OmdldCgpLT5pc0RlYnVnSGVh
cEVuYWJsZWQoKSk7CiAKQEAgLTkyLDcgKzkyLDcgQEAgU2NhdmVuZ2VyOjpTY2F2ZW5nZXIoY29u
c3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCiAKIHZvaWQgU2NhdmVuZ2VyOjpydW4oKQogewot
ICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9jayhtdXRleCgpKTsKKyAgICBMb2NrSG9sZGVy
IGxvY2sobXV0ZXgoKSk7CiAgICAgcnVuSG9sZGluZ0xvY2soKTsKIH0KIApAQCAtMTA0LDcgKzEw
NCw3IEBAIHZvaWQgU2NhdmVuZ2VyOjpydW5Ib2xkaW5nTG9jaygpCiAKIHZvaWQgU2NhdmVuZ2Vy
OjpydW5Tb29uKCkKIHsKLSAgICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2sobXV0ZXgoKSk7
CisgICAgTG9ja0hvbGRlciBsb2NrKG11dGV4KCkpOwogICAgIHJ1blNvb25Ib2xkaW5nTG9jaygp
OwogfQogCkBAIC0xMjQsNyArMTI0LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OmRpZFN0YXJ0R3Jvd2lu
ZygpCiAKIHZvaWQgU2NhdmVuZ2VyOjpzY2hlZHVsZUlmVW5kZXJNZW1vcnlQcmVzc3VyZShzaXpl
X3QgYnl0ZXMpCiB7Ci0gICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrKG11dGV4KCkpOwor
ICAgIExvY2tIb2xkZXIgbG9jayhtdXRleCgpKTsKICAgICBzY2hlZHVsZUlmVW5kZXJNZW1vcnlQ
cmVzc3VyZUhvbGRpbmdMb2NrKGJ5dGVzKTsKIH0KIApAQCAtMTQ4LDcgKzE0OCw3IEBAIHZvaWQg
U2NhdmVuZ2VyOjpzY2hlZHVsZUlmVW5kZXJNZW1vcnlQcmVzc3VyZUhvbGRpbmdMb2NrKHNpemVf
dCBieXRlcykKIAogdm9pZCBTY2F2ZW5nZXI6OnNjaGVkdWxlKHNpemVfdCBieXRlcykKIHsKLSAg
ICBzdGQ6OmxvY2tfZ3VhcmQ8TXV0ZXg+IGxvY2sobXV0ZXgoKSk7CisgICAgTG9ja0hvbGRlciBs
b2NrKG11dGV4KCkpOwogICAgIHNjaGVkdWxlSWZVbmRlck1lbW9yeVByZXNzdXJlSG9sZGluZ0xv
Y2soYnl0ZXMpOwogICAgIAogICAgIGlmICh3aWxsUnVuU29vbigpKQpAQCAtMTc5LDE0ICsxNzks
MTQgQEAgaW5saW5lIHZvaWQgZHVtcFN0YXRzKCkKIAogc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25k
cyBTY2F2ZW5nZXI6OnRpbWVTaW5jZUxhc3RGdWxsU2NhdmVuZ2UoKQogewotICAgIHN0ZDo6dW5p
cXVlX2xvY2s8TXV0ZXg+IGxvY2sobXV0ZXgoKSk7CisgICAgVW5pcXVlTG9ja0hvbGRlciBsb2Nr
KG11dGV4KCkpOwogICAgIHJldHVybiBzdGQ6OmNocm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNo
cm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKSAtIG1f
bGFzdEZ1bGxTY2F2ZW5nZVRpbWUpOwogfQogCiAjaWYgQlVTRShQQVJUSUFMX1NDQVZFTkdFKQog
c3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBTY2F2ZW5nZXI6OnRpbWVTaW5jZUxhc3RQYXJ0aWFs
U2NhdmVuZ2UoKQogewotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2sobXV0ZXgoKSk7
CisgICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKG11dGV4KCkpOwogICAgIHJldHVybiBzdGQ6OmNo
cm9ubzo6ZHVyYXRpb25fY2FzdDxzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzPihzdGQ6OmNocm9u
bzo6c3RlYWR5X2Nsb2NrOjpub3coKSAtIG1fbGFzdFBhcnRpYWxTY2F2ZW5nZVRpbWUpOwogfQog
I2VuZGlmCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBTY2F2ZW5nZXI6OmVuYWJsZU1pbmlNb2Rl
KCkKIAogdm9pZCBTY2F2ZW5nZXI6OnNjYXZlbmdlKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9sb2Nr
PE11dGV4PiBsb2NrKG1fc2NhdmVuZ2luZ011dGV4KTsKKyAgICBVbmlxdWVMb2NrSG9sZGVyIGxv
Y2sobV9zY2F2ZW5naW5nTXV0ZXgpOwogCiAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgZnBy
aW50ZihzdGRlcnIsICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CkBAIC0y
MTYsNyArMjE2LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OnNjYXZlbmdlKCkKICNpZiAhQlVTRShQQVJU
SUFMX1NDQVZFTkdFKQogICAgICAgICAgICAgc2l6ZV90IGRlZmVycmVkRGVjb21taXRzID0gMDsK
ICNlbmRpZgotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11dGV4PiBsb2NrKEhlYXA6Om11
dGV4KCkpOworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSGVhcHM7IGktLTspIHsKICAgICAgICAgICAg
ICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGljX2Nhc3Q8SGVhcEtpbmQ+KGkpKSkKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBTY2F2
ZW5nZXI6OnNjYXZlbmdlKCkKIAogICAgICAgICB7CiAgICAgICAgICAgICBQcmludFRpbWUgcHJp
bnRUaW1lKCJmdWxsIHNjYXZlbmdlIG1hcmsgYWxsIGFzIGVsaWdpYmxlIHRpbWUiKTsKLSAgICAg
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKKyAgICAg
ICAgICAgIExvY2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IG51bUhlYXBzOyBpLS07KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpc0Fj
dGl2ZUhlYXBLaW5kKHN0YXRpY19jYXN0PEhlYXBLaW5kPihpKSkpCiAgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgU2NhdmVuZ2VyOjpzY2F2ZW5n
ZSgpCiAgICAgfQogCiAgICAgewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2Nr
KG11dGV4KCkpOworICAgICAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CiAgICAg
ICAgIG1fbGFzdEZ1bGxTY2F2ZW5nZVRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpu
b3coKTsKICAgICB9CiB9CkBAIC0yNzUsNyArMjc1LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OnNjYXZl
bmdlKCkKICNpZiBCVVNFKFBBUlRJQUxfU0NBVkVOR0UpCiB2b2lkIFNjYXZlbmdlcjo6cGFydGlh
bFNjYXZlbmdlKCkKIHsKLSAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKG1fc2NhdmVu
Z2luZ011dGV4KTsKKyAgICBVbmlxdWVMb2NrSG9sZGVyIGxvY2sobV9zY2F2ZW5naW5nTXV0ZXgp
OwogCiAgICAgaWYgKHZlcmJvc2UpIHsKICAgICAgICAgZnByaW50ZihzdGRlcnIsICItLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIik7CkBAIC0yODcsNyArMjg3LDcgQEAgdm9pZCBT
Y2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSgpCiAgICAgICAgIEJ1bGtEZWNvbW1pdCBkZWNvbW1p
dHRlcjsKICAgICAgICAgewogICAgICAgICAgICAgUHJpbnRUaW1lIHByaW50VGltZSgiXG5wYXJ0
aWFsU2NhdmVuZ2UgdW5kZXIgbG9jayB0aW1lIik7Ci0gICAgICAgICAgICBzdGQ6OmxvY2tfZ3Vh
cmQ8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgICAgICBMb2NrSG9sZGVyIGxv
Y2soSGVhcDo6bXV0ZXgoKSk7CiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBudW1IZWFw
czsgaS0tOykgewogICAgICAgICAgICAgICAgIGlmICghaXNBY3RpdmVIZWFwS2luZChzdGF0aWNf
Y2FzdDxIZWFwS2luZD4oaSkpKQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMw
OCw3ICszMDgsNyBAQCB2b2lkIFNjYXZlbmdlcjo6cGFydGlhbFNjYXZlbmdlKCkKIAogICAgICAg
ICB7CiAgICAgICAgICAgICBQcmludFRpbWUgcHJpbnRUaW1lKCJwYXJ0aWFsU2NhdmVuZ2UgbWFy
ayBhbGwgYXMgZWxpZ2libGUgdGltZSIpOwotICAgICAgICAgICAgc3RkOjpsb2NrX2d1YXJkPE11
dGV4PiBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICAgICAgTG9ja0hvbGRlciBsb2NrKEhl
YXA6Om11dGV4KCkpOwogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbnVtSGVhcHM7IGkt
LTspIHsKICAgICAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGljX2Nhc3Q8
SGVhcEtpbmQ+KGkpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC0zMzUsNyAr
MzM1LDcgQEAgdm9pZCBTY2F2ZW5nZXI6OnBhcnRpYWxTY2F2ZW5nZSgpCiAgICAgfQogCiAgICAg
ewotICAgICAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKG11dGV4KCkpOworICAgICAg
ICBVbmlxdWVMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CiAgICAgICAgIG1fbGFzdFBhcnRpYWxT
Y2F2ZW5nZVRpbWUgPSBzdGQ6OmNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsKICAgICB9CiB9
CkBAIC0zNDUsNyArMzQ1LDcgQEAgc2l6ZV90IFNjYXZlbmdlcjo6ZnJlZWFibGVNZW1vcnkoKQog
ewogICAgIHNpemVfdCByZXN1bHQgPSAwOwogICAgIHsKLSAgICAgICAgc3RkOjpsb2NrX2d1YXJk
PE11dGV4PiBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICBMb2NrSG9sZGVyIGxvY2soSGVh
cDo6bXV0ZXgoKSk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IG51bUhlYXBzOyBpLS07KSB7
CiAgICAgICAgICAgICBpZiAoIWlzQWN0aXZlSGVhcEtpbmQoc3RhdGljX2Nhc3Q8SGVhcEtpbmQ+
KGkpKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQwMiwxMiArNDAyLDEyIEBAIHZv
aWQgU2NhdmVuZ2VyOjp0aHJlYWRSdW5Mb29wKCkKICAgICAKICAgICB3aGlsZSAodHJ1ZSkgewog
ICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6U2xlZXApIHsKLSAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2sobXV0ZXgoKSk7CisgICAgICAgICAgICBVbmlxdWVMb2Nr
SG9sZGVyIGxvY2sobXV0ZXgoKSk7CiAgICAgICAgICAgICBtX2NvbmRpdGlvbi53YWl0KGxvY2ss
IFsmXSgpIHsgcmV0dXJuIG1fc3RhdGUgIT0gU3RhdGU6OlNsZWVwOyB9KTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OlJ1blNvb24pIHsKLSAgICAg
ICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2sobXV0ZXgoKSk7CisgICAgICAgICAg
ICBVbmlxdWVMb2NrSG9sZGVyIGxvY2sobXV0ZXgoKSk7CiAgICAgICAgICAgICBtX2NvbmRpdGlv
bi53YWl0X2Zvcihsb2NrLCBtX3dhaXRUaW1lLCBbJl0oKSB7IHJldHVybiBtX3N0YXRlICE9IFN0
YXRlOjpSdW5Tb29uOyB9KTsKICAgICAgICAgfQogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU2NhdmVuZ2VyLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1Nj
YXZlbmdlci5oCmluZGV4IDcyOGE3NWUzYmRmLi5lODk3NTQ2NmNiOCAxMDA2NDQKLS0tIGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9TY2F2ZW5nZXIuaAorKysgYi9Tb3VyY2UvYm1hbGxvYy9ibWFs
bG9jL1NjYXZlbmdlci5oCkBAIC00Miw3ICs0Miw3IEBAIG5hbWVzcGFjZSBibWFsbG9jIHsKIAog
Y2xhc3MgU2NhdmVuZ2VyIDogcHVibGljIFN0YXRpY1BlclByb2Nlc3M8U2NhdmVuZ2VyPiB7CiBw
dWJsaWM6Ci0gICAgQkVYUE9SVCBTY2F2ZW5nZXIoY29uc3Qgc3RkOjpsb2NrX2d1YXJkPE11dGV4
PiYpOworICAgIEJFWFBPUlQgU2NhdmVuZ2VyKGNvbnN0IExvY2tIb2xkZXImKTsKICAgICAKICAg
ICB+U2NhdmVuZ2VyKCkgPSBkZWxldGU7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL1NtYWxsTGluZS5oIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbExpbmUu
aAppbmRleCA2YmU4NWQzYzczNi4uZDliNzRhYjhiOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvU21hbGxMaW5lLmgKKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFs
bExpbmUuaApAQCAtMzUsOSArMzUsOSBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIGNsYXNzIFNt
YWxsTGluZSB7CiBwdWJsaWM6Ci0gICAgdm9pZCByZWYoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4m
LCB1bnNpZ25lZCBjaGFyID0gMSk7Ci0gICAgYm9vbCBkZXJlZihzdGQ6OnVuaXF1ZV9sb2NrPE11
dGV4PiYpOwotICAgIHVuc2lnbmVkIHJlZkNvdW50KHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+Jikg
eyByZXR1cm4gbV9yZWZDb3VudDsgfQorICAgIHZvaWQgcmVmKFVuaXF1ZUxvY2tIb2xkZXImLCB1
bnNpZ25lZCBjaGFyID0gMSk7CisgICAgYm9vbCBkZXJlZihVbmlxdWVMb2NrSG9sZGVyJik7Cisg
ICAgdW5zaWduZWQgcmVmQ291bnQoVW5pcXVlTG9ja0hvbGRlciYpIHsgcmV0dXJuIG1fcmVmQ291
bnQ7IH0KICAgICAKICAgICBjaGFyKiBiZWdpbigpOwogICAgIGNoYXIqIGVuZCgpOwpAQCAtNTEs
MTMgKzUxLDEzIEBAIHN0YXRpY19hc3NlcnQoCiAKIH07CiAKLWlubGluZSB2b2lkIFNtYWxsTGlu
ZTo6cmVmKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+JiwgdW5zaWduZWQgY2hhciByZWZDb3VudCkK
K2lubGluZSB2b2lkIFNtYWxsTGluZTo6cmVmKFVuaXF1ZUxvY2tIb2xkZXImLCB1bnNpZ25lZCBj
aGFyIHJlZkNvdW50KQogewogICAgIEJBU1NFUlQoIW1fcmVmQ291bnQpOwogICAgIG1fcmVmQ291
bnQgPSByZWZDb3VudDsKIH0KIAotaW5saW5lIGJvb2wgU21hbGxMaW5lOjpkZXJlZihzdGQ6OnVu
aXF1ZV9sb2NrPE11dGV4PiYpCitpbmxpbmUgYm9vbCBTbWFsbExpbmU6OmRlcmVmKFVuaXF1ZUxv
Y2tIb2xkZXImKQogewogICAgIEJBU1NFUlQobV9yZWZDb3VudCk7CiAgICAgLS1tX3JlZkNvdW50
OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TbWFsbFBhZ2UuaCBiL1NvdXJj
ZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxQYWdlLmgKaW5kZXggNmVhYjQzMzYwNjEuLjQzNWU1Zjcw
OTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1NtYWxsUGFnZS5oCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvU21hbGxQYWdlLmgKQEAgLTM4LDE1ICszOCwxNSBAQCBj
bGFzcyBTbWFsbExpbmU7CiAKIGNsYXNzIFNtYWxsUGFnZSA6IHB1YmxpYyBMaXN0Tm9kZTxTbWFs
bFBhZ2U+IHsKIHB1YmxpYzoKLSAgICB2b2lkIHJlZihzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYp
OwotICAgIGJvb2wgZGVyZWYoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mKTsKLSAgICB1bnNpZ25l
ZCByZWZDb3VudChzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYpIHsgcmV0dXJuIG1fcmVmQ291bnQ7
IH0KKyAgICB2b2lkIHJlZihVbmlxdWVMb2NrSG9sZGVyJik7CisgICAgYm9vbCBkZXJlZihVbmlx
dWVMb2NrSG9sZGVyJik7CisgICAgdW5zaWduZWQgcmVmQ291bnQoVW5pcXVlTG9ja0hvbGRlciYp
IHsgcmV0dXJuIG1fcmVmQ291bnQ7IH0KICAgICAKICAgICBzaXplX3Qgc2l6ZUNsYXNzKCkgeyBy
ZXR1cm4gbV9zaXplQ2xhc3M7IH0KICAgICB2b2lkIHNldFNpemVDbGFzcyhzaXplX3Qgc2l6ZUNs
YXNzKSB7IG1fc2l6ZUNsYXNzID0gc2l6ZUNsYXNzOyB9CiAgICAgCi0gICAgYm9vbCBoYXNGcmVl
TGluZXMoc3RkOjp1bmlxdWVfbG9jazxNdXRleD4mKSBjb25zdCB7IHJldHVybiBtX2hhc0ZyZWVM
aW5lczsgfQotICAgIHZvaWQgc2V0SGFzRnJlZUxpbmVzKHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+
JiwgYm9vbCBoYXNGcmVlTGluZXMpIHsgbV9oYXNGcmVlTGluZXMgPSBoYXNGcmVlTGluZXM7IH0K
KyAgICBib29sIGhhc0ZyZWVMaW5lcyhVbmlxdWVMb2NrSG9sZGVyJikgY29uc3QgeyByZXR1cm4g
bV9oYXNGcmVlTGluZXM7IH0KKyAgICB2b2lkIHNldEhhc0ZyZWVMaW5lcyhVbmlxdWVMb2NrSG9s
ZGVyJiwgYm9vbCBoYXNGcmVlTGluZXMpIHsgbV9oYXNGcmVlTGluZXMgPSBoYXNGcmVlTGluZXM7
IH0KICAgICAKICAgICBib29sIGhhc1BoeXNpY2FsUGFnZXMoKSB7IHJldHVybiBtX2hhc1BoeXNp
Y2FsUGFnZXM7IH0KICAgICB2b2lkIHNldEhhc1BoeXNpY2FsUGFnZXMoYm9vbCBoYXNQaHlzaWNh
bFBhZ2VzKSB7IG1faGFzUGh5c2ljYWxQYWdlcyA9IGhhc1BoeXNpY2FsUGFnZXM7IH0KQEAgLTc5
LDE0ICs3OSwxNCBAQCBzdGF0aWNfYXNzZXJ0KAogCiB1c2luZyBMaW5lQ2FjaGUgPSBzdGQ6OmFy
cmF5PExpc3Q8U21hbGxQYWdlPiwgc2l6ZUNsYXNzQ291bnQ+OwogCi1pbmxpbmUgdm9pZCBTbWFs
bFBhZ2U6OnJlZihzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYpCitpbmxpbmUgdm9pZCBTbWFsbFBh
Z2U6OnJlZihVbmlxdWVMb2NrSG9sZGVyJikKIHsKICAgICBCQVNTRVJUKCFtX3NsaWRlKTsKICAg
ICArK21fcmVmQ291bnQ7CiAgICAgQkFTU0VSVChtX3JlZkNvdW50KTsKIH0KIAotaW5saW5lIGJv
b2wgU21hbGxQYWdlOjpkZXJlZihzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiYpCitpbmxpbmUgYm9v
bCBTbWFsbFBhZ2U6OmRlcmVmKFVuaXF1ZUxvY2tIb2xkZXImKQogewogICAgIEJBU1NFUlQoIW1f
c2xpZGUpOwogICAgIEJBU1NFUlQobV9yZWZDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1h
bGxvYy9ibWFsbG9jL1N0YXRpY1BlclByb2Nlc3MuaCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
U3RhdGljUGVyUHJvY2Vzcy5oCmluZGV4IDc5NGIwNjllMzgwLi5iODA1YTc0YWIzNCAxMDA2NDQK
LS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9TdGF0aWNQZXJQcm9jZXNzLmgKKysrIGIvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9TdGF0aWNQZXJQcm9jZXNzLmgKQEAgLTc5LDcgKzc5LDcgQEAg
cHJpdmF0ZToKICAgICBCTk9fSU5MSU5FIHN0YXRpYyBUKiBnZXRTbG93Q2FzZSgpCiAgICAgewog
ICAgICAgICB1c2luZyBTdG9yYWdlID0gdHlwZW5hbWUgU3RhdGljUGVyUHJvY2Vzc1N0b3JhZ2VU
cmFpdHM8VD46OlN0b3JhZ2U7Ci0gICAgICAgIHN0ZDo6bG9ja19ndWFyZDxNdXRleD4gbG9jayhT
dG9yYWdlOjpzX211dGV4KTsKKyAgICAgICAgTG9ja0hvbGRlciBsb2NrKFN0b3JhZ2U6OnNfbXV0
ZXgpOwogICAgICAgICBpZiAoIVN0b3JhZ2U6OnNfb2JqZWN0LmxvYWQoc3RkOjptZW1vcnlfb3Jk
ZXJfY29uc3VtZSkpIHsKICAgICAgICAgICAgIFQqIHQgPSBuZXcgKCZTdG9yYWdlOjpzX21lbW9y
eSkgVChsb2NrKTsKICAgICAgICAgICAgIFN0b3JhZ2U6OnNfb2JqZWN0LnN0b3JlKHQsIHN0ZDo6
bWVtb3J5X29yZGVyX3JlbGVhc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9WTUhlYXAuY3BwIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCmluZGV4IGFk
ZjIxNjcxZWJkLi5kZjYwNWZmNDY2YiAxMDA2NDQKLS0tIGEvU291cmNlL2JtYWxsb2MvYm1hbGxv
Yy9WTUhlYXAuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmNwcApAQCAt
MzEsNyArMzEsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIERFRklORV9TVEFUSUNfUEVSX1BS
T0NFU1NfU1RPUkFHRShWTUhlYXApOwogCi1WTUhlYXA6OlZNSGVhcChjb25zdCBzdGQ6OmxvY2tf
Z3VhcmQ8TXV0ZXg+JikKK1ZNSGVhcDo6Vk1IZWFwKGNvbnN0IExvY2tIb2xkZXImKQogewogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1ZNSGVhcC5oIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9WTUhlYXAuaAppbmRleCA2OGYwYWJlNmFkNS4uMTFmMTBlMzlkMjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvVk1IZWFwLmgKKysrIGIvU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9WTUhlYXAuaApAQCAtNDcsNyArNDcsNyBAQCB0eXBlZGVmIGVudW0geyBT
eW5jLCBBc3luYyB9IFNjYXZlbmdlTW9kZTsKIAogY2xhc3MgVk1IZWFwIDogcHVibGljIFN0YXRp
Y1BlclByb2Nlc3M8Vk1IZWFwPiB7CiBwdWJsaWM6Ci0gICAgVk1IZWFwKGNvbnN0IHN0ZDo6bG9j
a19ndWFyZDxNdXRleD4mKTsKKyAgICBWTUhlYXAoY29uc3QgTG9ja0hvbGRlciYpOwogICAgIAog
ICAgIExhcmdlUmFuZ2UgdHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmNwcCBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5jcHAKaW5kZXggMGJiODI5NjkyYWMuLjM3ZWRk
MjQ5ZjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUuY3BwCisrKyBi
L1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0
aWMgY29uc3QgbWFsbG9jX2ludHJvc3BlY3Rpb25fdCB6b25lSW50cm9zcGVjdCA9IHsKICAgICAu
c3RhdGlzdGljcyA9IGJtYWxsb2M6OnN0YXRpc3RpY3MKIH07CiAKLVpvbmU6OlpvbmUoY29uc3Qg
c3RkOjpsb2NrX2d1YXJkPE11dGV4PiYpCitab25lOjpab25lKGNvbnN0IExvY2tIb2xkZXImKQog
ewogICAgIG1hbGxvY196b25lX3Q6OnNpemUgPSAmYm1hbGxvYzo6em9uZVNpemU7CiAgICAgbWFs
bG9jX3pvbmVfdDo6em9uZV9uYW1lID0gIldlYktpdCBNYWxsb2MiOwpkaWZmIC0tZ2l0IGEvU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9ab25lLmggYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL1pvbmUu
aAppbmRleCBmNWQ2NDk1YTQxZS4uNjVkOGVhZWFmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvWm9uZS5oCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvWm9uZS5oCkBA
IC00Miw3ICs0Miw3IEBAIHB1YmxpYzoKICAgICAvLyBFbm91Z2ggY2FwYWNpdHkgdG8gdHJhY2sg
YSA2NEdCIGhlYXAsIHNvIHByb2JhYmx5IGVub3VnaCBmb3IgYW55dGhpbmcuCiAgICAgc3RhdGlj
IGNvbnN0ZXhwciBzaXplX3QgY2FwYWNpdHkgPSAyMDQ4OwogCi0gICAgWm9uZShjb25zdCBzdGQ6
OmxvY2tfZ3VhcmQ8TXV0ZXg+Jik7CisgICAgWm9uZShjb25zdCBMb2NrSG9sZGVyJik7CiAgICAg
Wm9uZSh0YXNrX3QsIG1lbW9yeV9yZWFkZXJfdCwgdm1fYWRkcmVzc190KTsKIAogICAgIHZvaWQg
YWRkUmFuZ2UoUmFuZ2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ibWFs
bG9jLmNwcCBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvYm1hbGxvYy5jcHAKaW5kZXggMTZiZTM1
ODliMzkuLmExMjBkNmVmMGZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL2Jt
YWxsb2MuY3BwCisrKyBiL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvYm1hbGxvYy5jcHAKQEAgLTU4
LDcgKzU4LDcgQEAgdm9pZCogdHJ5TGFyZ2VaZXJvZWRNZW1hbGlnblZpcnR1YWwoc2l6ZV90IHJl
cXVpcmVkQWxpZ25tZW50LCBzaXplX3QgcmVxdWVzdGVkU2kKICAgICAgICAga2luZCA9IG1hcFRv
QWN0aXZlSGVhcEtpbmQoa2luZCk7CiAgICAgICAgIEhlYXAmIGhlYXAgPSBQZXJQcm9jZXNzPFBl
ckhlYXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGtpbmQpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVl
X2xvY2s8TXV0ZXg+IGxvY2soSGVhcDo6bXV0ZXgoKSk7CisgICAgICAgIFVuaXF1ZUxvY2tIb2xk
ZXIgbG9jayhIZWFwOjptdXRleCgpKTsKICAgICAgICAgcmVzdWx0ID0gaGVhcC5hbGxvY2F0ZUxh
cmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSwgRmFpbHVyZUFjdGlvbjo6UmV0dXJuTnVsbCk7CiAg
ICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgIC8vIERvbid0IHRyYWNrIHRoaXMgYXMg
ZGlydHkgbWVtb3J5IHRoYXQgZGljdGF0ZXMgaG93IHdlIGRyaXZlIHRoZSBzY2F2ZW5nZXIuCkBA
IC04Miw3ICs4Miw3IEBAIHZvaWQgZnJlZUxhcmdlVmlydHVhbCh2b2lkKiBvYmplY3QsIHNpemVf
dCBzaXplLCBIZWFwS2luZCBraW5kKQogICAgIH0KICAgICBraW5kID0gbWFwVG9BY3RpdmVIZWFw
S2luZChraW5kKTsKICAgICBIZWFwJiBoZWFwID0gUGVyUHJvY2VzczxQZXJIZWFwS2luZDxIZWFw
Pj46OmdldCgpLT5hdChraW5kKTsKLSAgICBzdGQ6OnVuaXF1ZV9sb2NrPE11dGV4PiBsb2NrKEhl
YXA6Om11dGV4KCkpOworICAgIFVuaXF1ZUxvY2tIb2xkZXIgbG9jayhIZWFwOjptdXRleCgpKTsK
ICAgICAvLyBCYWxhbmNlIG91dCB0aGUgZXh0ZXJuYWxEZWNvbW1pdCB3aGVuIHdlIGFsbG9jYXRl
ZCB0aGUgemVyb2VkIHZpcnR1YWwgbWVtb3J5LgogICAgIGhlYXAuZXh0ZXJuYWxDb21taXQobG9j
aywgb2JqZWN0LCBzaXplKTsKICAgICBoZWFwLmRlYWxsb2NhdGVMYXJnZShsb2NrLCBvYmplY3Qp
OwpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgc2V0U2NhdmVuZ2VyVGhyZWFkUU9TQ2xhc3MocW9z
X2NsYXNzX3Qgb3ZlcnJpZGVDbGFzcykKIHsKICAgICBpZiAoRGVidWdIZWFwOjp0cnlHZXQoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIHN0ZDo6dW5pcXVlX2xvY2s8TXV0ZXg+IGxvY2soSGVhcDo6
bXV0ZXgoKSk7CisgICAgVW5pcXVlTG9ja0hvbGRlciBsb2NrKEhlYXA6Om11dGV4KCkpOwogICAg
IFNjYXZlbmdlcjo6Z2V0KCktPnNldFNjYXZlbmdlclRocmVhZFFPU0NsYXNzKG92ZXJyaWRlQ2xh
c3MpOwogfQogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>