<?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>20754</bug_id>
          
          <creation_ts>2008-09-09 15:16:40 -0700</creation_ts>
          <short_desc>Remove emit prefix from assembler opcode methods</short_desc>
          <delta_ts>2008-09-09 15:36:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Cameron Zwarich (cpst)">zwarich</reporter>
          <assigned_to name="Cameron Zwarich (cpst)">zwarich</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>90695</commentid>
    <comment_count>0</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-09 15:16:40 -0700</bug_when>
    <thetext>I have a patch to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90696</commentid>
    <comment_count>1</comment_count>
      <attachid>23304</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-09 15:22:43 -0700</bug_when>
    <thetext>Created attachment 23304
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>90697</commentid>
    <comment_count>2</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-09-09 15:36:02 -0700</bug_when>
    <thetext>Landed in r36301.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23304</attachid>
            <date>2008-09-09 15:22:43 -0700</date>
            <delta_ts>2008-09-09 15:25:28 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>emit.diff</filename>
            <type>text/plain</type>
            <size>104494</size>
            <attacher name="Cameron Zwarich (cpst)">zwarich</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM2MzAw
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA3IEBACisyMDA4LTA5
LTA5ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNhPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyMDc1NDogUmVtb3Zl
IGVtaXQgcHJlZml4IGZyb20gYXNzZW1ibGVyIG9wY29kZSBtZXRob2RzCisgICAgICAgIDxodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3NTQ+CisKKyAgICAgICAgKiBW
TS9DVEkuY3BwOgorICAgICAgICAoSlNDOjpDVEk6OmVtaXRHZXRBcmcpOgorICAgICAgICAoSlND
OjpDVEk6OmVtaXRHZXRQdXRBcmcpOgorICAgICAgICAoSlNDOjpDVEk6OmVtaXRQdXRBcmcpOgor
ICAgICAgICAoSlNDOjpDVEk6OmVtaXRQdXRBcmdDb25zdGFudCk6CisgICAgICAgIChKU0M6OkNU
STo6ZW1pdFB1dENUSVBhcmFtKToKKyAgICAgICAgKEpTQzo6Q1RJOjplbWl0R2V0Q1RJUGFyYW0p
OgorICAgICAgICAoSlNDOjpDVEk6OmVtaXRQdXRUb0NhbGxGcmFtZUhlYWRlcik6CisgICAgICAg
IChKU0M6OkNUSTo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIpOgorICAgICAgICAoSlNDOjpD
VEk6OmVtaXRQdXRSZXN1bHQpOgorICAgICAgICAoSlNDOjpDVEk6OmVtaXREZWJ1Z0V4Y2VwdGlv
bkNoZWNrKToKKyAgICAgICAgKEpTQzo6Q1RJOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkNU
STo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKToKKyAgICAgICAgKEpTQzo6Q1RJOjplbWl0SnVt
cFNsb3dDYXNlSWZOb3RJbW1zKToKKyAgICAgICAgKEpTQzo6Q1RJOjplbWl0RmFzdEFyaXRoRGVU
YWdJbW1lZGlhdGUpOgorICAgICAgICAoSlNDOjpDVEk6OmVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVk
aWF0ZSk6CisgICAgICAgIChKU0M6OkNUSTo6ZW1pdEZhc3RBcml0aFBvdGVudGlhbGx5UmVUYWdJ
bW1lZGlhdGUpOgorICAgICAgICAoSlNDOjpDVEk6OmVtaXRGYXN0QXJpdGhJbW1Ub0ludCk6Cisg
ICAgICAgIChKU0M6OkNUSTo6ZW1pdEZhc3RBcml0aEludFRvSW1tT3JTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNUSTo6ZW1pdEZhc3RBcml0aEludFRvSW1tTm9DaGVjayk6CisgICAgICAgIChK
U0M6OkNUSTo6Y29tcGlsZU9wQ2FsbCk6CisgICAgICAgIChKU0M6OkNUSTo6ZW1pdFNsb3dTY3Jp
cHRDaGVjayk6CisgICAgICAgIChKU0M6OkNUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkNUSTo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlND
OjpDVEk6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwcml2YXRlQ29tcGls
ZUdldEJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90byk6CisgICAgICAgIChKU0M6OkNUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4pOgor
ICAgICAgICAoSlNDOjpDVEk6OnByaXZhdGVDb21waWxlUHV0QnlJZFJlcGxhY2UpOgorICAgICAg
ICAoSlNDOjpDVEk6OnByaXZhdGVBcnJheUxlbmd0aFRyYW1wb2xpbmUpOgorICAgICAgICAoSlND
OjpDVEk6OnByaXZhdGVTdHJpbmdMZW5ndGhUcmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6Q1RJ
Ojpjb21waWxlUmVnRXhwKToKKyAgICAgICAgKiBtYXNtL01hY3JvQXNzZW1ibGVyV2luLmNwcDoK
KyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OmVtaXRDb252ZXJ0VG9GYXN0Q2FsbCk6Cisg
ICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyOjplbWl0UmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNl
KToKKyAgICAgICAgKiBtYXNtL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3Nl
bWJsZXI6OnB1c2hsX3IpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnB1c2hsX20pOgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnBvcGxfcik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6cG9wbF9tKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX3JyKToK
KyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjphZGRsX3JyKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjphZGRsX2k4cik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6YWRkbF9p
MzJyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjphZGRsX21yKToKKyAgICAgICAgKEpT
Qzo6WDg2QXNzZW1ibGVyOjphbmRsX3JyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjph
bmRsX2kzMnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcGxfaThyKToKKyAgICAg
ICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXBsX3JyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpjbXBsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpjbXBsX2kzMnIpOgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmNtcGxfaTMybSk6CisgICAgICAgIChKU0M6Olg4
NkFzc2VtYmxlcjo6Y21wd19ybSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6b3JsX3Jy
KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX3JyKToKKyAgICAgICAgKEpTQzo6
WDg2QXNzZW1ibGVyOjpzdWJsX2k4cik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c3Vi
bF9pMzJyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzdWJsX21yKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjp0ZXN0bF9pMzJyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjp0ZXN0bF9ycik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6eG9ybF9pOHIpOgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OnhvcmxfcnIpOgorICAgICAgICAoSlNDOjpYODZB
c3NlbWJsZXI6OnNhcmxfaThyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpzYXJsX0NM
cik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6c2hsX2k4cik6CisgICAgICAgIChKU0M6
Olg4NkFzc2VtYmxlcjo6c2hsbF9DTHIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om11
bGxfcnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmlkaXZsX3IpOgorICAgICAgICAo
SlNDOjpYODZBc3NlbWJsZXI6OmNkcSk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92
bF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92endsX21yKToKKyAgICAgICAg
KEpTQzo6WDg2QXNzZW1ibGVyOjptb3ZsX3JtKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVy
Ojptb3ZsX2kzMnIpOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdmxfaTMybSk6Cisg
ICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bGVhbF9tcik6CisgICAgICAgIChKU0M6Olg4NkFz
c2VtYmxlcjo6cmV0KToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpqbXBfcik6CisgICAg
ICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6am1wX20pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJs
ZXI6OmNhbGxfcik6CisgICAgICAgICogd3JlYy9XUkVDLmNwcDoKKyAgICAgICAgKEpTQzo6V1JF
Q0dlbmVyYXRvcjo6Z2VuZXJhdGVCYWNrdHJhY2sxKToKKyAgICAgICAgKEpTQzo6V1JFQ0dlbmVy
YXRvcjo6Z2VuZXJhdGVCYWNrdHJhY2tCYWNrcmVmZXJlbmNlKToKKyAgICAgICAgKEpTQzo6V1JF
Q0dlbmVyYXRvcjo6Z2VuZXJhdGVCYWNrcmVmZXJlbmNlUXVhbnRpZmllcik6CisgICAgICAgIChK
U0M6OldSRUNHZW5lcmF0b3I6OmdlbmVyYXRlTm9uR3JlZWR5UXVhbnRpZmllcik6CisgICAgICAg
IChKU0M6OldSRUNHZW5lcmF0b3I6OmdlbmVyYXRlR3JlZWR5UXVhbnRpZmllcik6CisgICAgICAg
IChKU0M6OldSRUNHZW5lcmF0b3I6OmdlbmVyYXRlUGF0dGVybkNoYXJhY3Rlcik6CisgICAgICAg
IChKU0M6OldSRUNHZW5lcmF0b3I6OmdlbmVyYXRlQ2hhcmFjdGVyQ2xhc3NJbnZlcnRlZFJhbmdl
KToKKyAgICAgICAgKEpTQzo6V1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVDaGFyYWN0ZXJDbGFzc0lu
dmVydGVkKToKKyAgICAgICAgKEpTQzo6V1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVDaGFyYWN0ZXJD
bGFzcyk6CisgICAgICAgIChKU0M6OldSRUNHZW5lcmF0b3I6OmdlbmVyYXRlUGFyZW50aGVzZXMp
OgorICAgICAgICAoSlNDOjpXUkVDR2VuZXJhdG9yOjpnZXJlcmF0ZVBhcmVudGhlc2VzUmVzZXRU
cmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6V1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVBc3NlcnRp
b25CT0wpOgorICAgICAgICAoSlNDOjpXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZUFzc2VydGlvbkVP
TCk6CisgICAgICAgIChKU0M6OldSRUNHZW5lcmF0b3I6OmdlbmVyYXRlQXNzZXJ0aW9uV29yZEJv
dW5kYXJ5KToKKyAgICAgICAgKEpTQzo6V1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVCYWNrcmVmZXJl
bmNlKToKKyAgICAgICAgKEpTQzo6V1JFQ0dlbmVyYXRvcjo6Z2VybmVyYXRlRGlzanVuY3Rpb24p
OgorCiAyMDA4LTA5LTA5ICBDYW1lcm9uIFp3YXJpY2ggIDxjd3p3YXJpY2hAdXdhdGVybG9vLmNh
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hY2llaiBTdGFjaG93aWFrLgpJbmRleDogVk0vQ1RJ
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBWTS9DVEkuY3BwCShyZXZpc2lvbiAzNjMwMCkKKysrIFZNL0NU
SS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMiw5ICsxMTIsOSBAQCBBTFdBWVNfSU5MSU5FIHZv
aWQgQ1RJOjplbWl0R2V0QXJnKHVuc2lnCiAgICAgLy8gVE9ETzogd2Ugd2FudCB0byByZXVzZSB2
YWx1ZXMgdGhhdCBhcmUgYWxyZWFkeSBpbiByZWdpc3RlcnMgaWYgd2UgY2FuIC0gYWRkIGEgcmVn
aXN0ZXIgYWxsb2NhdG9yIQogICAgIGlmIChzcmMgPCBtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdp
c3RlcnMuc2l6ZSgpKSB7CiAgICAgICAgIEpTVmFsdWUqIGpzID0gbV9jb2RlQmxvY2stPmNvbnN0
YW50UmVnaXN0ZXJzW3NyY10uanNWYWx1ZShtX2V4ZWMpOwotICAgICAgICBtX2ppdC5lbWl0TW92
bF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KGpzKSwgZHN0KTsKKyAgICAgICAgbV9q
aXQubW92bF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KGpzKSwgZHN0KTsKICAgICB9
IGVsc2UKLSAgICAgICAgbV9qaXQuZW1pdE1vdmxfbXIoc3JjICogc2l6ZW9mKFJlZ2lzdGVyKSwg
TWFjcm9Bc3NlbWJsZXI6OmVkaSwgZHN0KTsKKyAgICAgICAgbV9qaXQubW92bF9tcihzcmMgKiBz
aXplb2YoUmVnaXN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6ZWRpLCBkc3QpOwogfQogCiAvLyBnZXQg
YXJnIHB1dHMgYW4gYXJnIGZyb20gdGhlIFNGIHJlZ2lzdGVyIGFycmF5IG9udG8gdGhlIHN0YWNr
LCBhcyBhbiBhcmcgdG8gYSBjb250ZXh0IHRocmVhZGVkIGZ1bmN0aW9uLgpAQCAtMTIyLDIyICsx
MjIsMjIgQEAgQUxXQVlTX0lOTElORSB2b2lkIENUSTo6ZW1pdEdldFB1dEFyZyh1bgogewogICAg
IGlmIChzcmMgPCBtX2NvZGVCbG9jay0+Y29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpKSB7CiAgICAg
ICAgIEpTVmFsdWUqIGpzID0gbV9jb2RlQmxvY2stPmNvbnN0YW50UmVnaXN0ZXJzW3NyY10uanNW
YWx1ZShtX2V4ZWMpOwotICAgICAgICBtX2ppdC5lbWl0TW92bF9pMzJtKHJlaW50ZXJwcmV0X2Nh
c3Q8dW5zaWduZWQ+KGpzKSwgb2Zmc2V0ICsgc2l6ZW9mKHZvaWQqKSwgTWFjcm9Bc3NlbWJsZXI6
OmVzcCk7CisgICAgICAgIG1faml0Lm1vdmxfaTMybShyZWludGVycHJldF9jYXN0PHVuc2lnbmVk
PihqcyksIG9mZnNldCArIHNpemVvZih2b2lkKiksIE1hY3JvQXNzZW1ibGVyOjplc3ApOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIG1faml0LmVtaXRNb3ZsX21yKHNyYyAqIHNpemVvZihSZWdpc3Rl
ciksIE1hY3JvQXNzZW1ibGVyOjplZGksIHNjcmF0Y2gpOwotICAgICAgICBtX2ppdC5lbWl0TW92
bF9ybShzY3JhdGNoLCBvZmZzZXQgKyBzaXplb2Yodm9pZCopLCBNYWNyb0Fzc2VtYmxlcjo6ZXNw
KTsKKyAgICAgICAgbV9qaXQubW92bF9tcihzcmMgKiBzaXplb2YoUmVnaXN0ZXIpLCBNYWNyb0Fz
c2VtYmxlcjo6ZWRpLCBzY3JhdGNoKTsKKyAgICAgICAgbV9qaXQubW92bF9ybShzY3JhdGNoLCBv
ZmZzZXQgKyBzaXplb2Yodm9pZCopLCBNYWNyb0Fzc2VtYmxlcjo6ZXNwKTsKICAgICB9CiB9CiAK
IC8vIHB1dHMgYW4gYXJnIG9udG8gdGhlIHN0YWNrLCBhcyBhbiBhcmcgdG8gYSBjb250ZXh0IHRo
cmVhZGVkIGZ1bmN0aW9uLgogQUxXQVlTX0lOTElORSB2b2lkIENUSTo6ZW1pdFB1dEFyZyhNYWNy
b0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBzcmMsIHVuc2lnbmVkIG9mZnNldCkKIHsKLSAgICBtX2pp
dC5lbWl0TW92bF9ybShzcmMsIG9mZnNldCArIHNpemVvZih2b2lkKiksIE1hY3JvQXNzZW1ibGVy
Ojplc3ApOworICAgIG1faml0Lm1vdmxfcm0oc3JjLCBvZmZzZXQgKyBzaXplb2Yodm9pZCopLCBN
YWNyb0Fzc2VtYmxlcjo6ZXNwKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIENUSTo6ZW1pdFB1
dEFyZ0NvbnN0YW50KHVuc2lnbmVkIHZhbHVlLCB1bnNpZ25lZCBvZmZzZXQpCiB7Ci0gICAgbV9q
aXQuZW1pdE1vdmxfaTMybSh2YWx1ZSwgb2Zmc2V0ICsgc2l6ZW9mKHZvaWQqKSwgTWFjcm9Bc3Nl
bWJsZXI6OmVzcCk7CisgICAgbV9qaXQubW92bF9pMzJtKHZhbHVlLCBvZmZzZXQgKyBzaXplb2Yo
dm9pZCopLCBNYWNyb0Fzc2VtYmxlcjo6ZXNwKTsKIH0KIAogQUxXQVlTX0lOTElORSBKU1ZhbHVl
KiBDVEk6OmdldENvbnN0YW50SW1tZWRpYXRlTnVtZXJpY0FyZyh1bnNpZ25lZCBzcmMpCkBAIC0x
NTEsMjcgKzE1MSwyNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUqIENUSTo6Z2V0Q29uc3RhbnRJ
CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRQdXRDVElQYXJhbShNYWNyb0Fzc2VtYmxl
cjo6UmVnaXN0ZXJJRCBmcm9tLCB1bnNpZ25lZCBuYW1lKQogewotICAgIG1faml0LmVtaXRNb3Zs
X3JtKGZyb20sIG5hbWUgKiBzaXplb2Yodm9pZCopLCBNYWNyb0Fzc2VtYmxlcjo6ZXNwKTsKKyAg
ICBtX2ppdC5tb3ZsX3JtKGZyb20sIG5hbWUgKiBzaXplb2Yodm9pZCopLCBNYWNyb0Fzc2VtYmxl
cjo6ZXNwKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIENUSTo6ZW1pdEdldENUSVBhcmFtKHVu
c2lnbmVkIG5hbWUsIE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHRvKQogewotICAgIG1faml0
LmVtaXRNb3ZsX21yKG5hbWUgKiBzaXplb2Yodm9pZCopLCBNYWNyb0Fzc2VtYmxlcjo6ZXNwLCB0
byk7CisgICAgbV9qaXQubW92bF9tcihuYW1lICogc2l6ZW9mKHZvaWQqKSwgTWFjcm9Bc3NlbWJs
ZXI6OmVzcCwgdG8pOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0UHV0VG9DYWxs
RnJhbWVIZWFkZXIoTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgZnJvbSwgUmVnaXN0ZXJGaWxl
OjpDYWxsRnJhbWVIZWFkZXJFbnRyeSBlbnRyeSkKIHsKLSAgICBtX2ppdC5lbWl0TW92bF9ybShm
cm9tLCAtKChtX2NvZGVCbG9jay0+bnVtTG9jYWxzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVI
ZWFkZXJTaXplKSAtIGVudHJ5KSAqIHNpemVvZihSZWdpc3RlciksIE1hY3JvQXNzZW1ibGVyOjpl
ZGkpOworICAgIG1faml0Lm1vdmxfcm0oZnJvbSwgLSgobV9jb2RlQmxvY2stPm51bUxvY2FscyAr
IFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkgLSBlbnRyeSkgKiBzaXplb2YoUmVn
aXN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIENU
STo6ZW1pdEdldEZyb21DYWxsRnJhbWVIZWFkZXIoUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFk
ZXJFbnRyeSBlbnRyeSwgTWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgdG8pCiB7Ci0gICAgbV9q
aXQuZW1pdE1vdmxfbXIoLSgobV9jb2RlQmxvY2stPm51bUxvY2FscyArIFJlZ2lzdGVyRmlsZTo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZSkgLSBlbnRyeSkgKiBzaXplb2YoUmVnaXN0ZXIpLCBNYWNyb0Fz
c2VtYmxlcjo6ZWRpLCB0byk7CisgICAgbV9qaXQubW92bF9tcigtKChtX2NvZGVCbG9jay0+bnVt
TG9jYWxzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplKSAtIGVudHJ5KSAqIHNp
emVvZihSZWdpc3RlciksIE1hY3JvQXNzZW1ibGVyOjplZGksIHRvKTsKIH0KIAogQUxXQVlTX0lO
TElORSB2b2lkIENUSTo6ZW1pdFB1dFJlc3VsdCh1bnNpZ25lZCBkc3QsIE1hY3JvQXNzZW1ibGVy
OjpSZWdpc3RlcklEIGZyb20pCiB7Ci0gICAgbV9qaXQuZW1pdE1vdmxfcm0oZnJvbSwgZHN0ICog
c2l6ZW9mKFJlZ2lzdGVyKSwgTWFjcm9Bc3NlbWJsZXI6OmVkaSk7CisgICAgbV9qaXQubW92bF9y
bShmcm9tLCBkc3QgKiBzaXplb2YoUmVnaXN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKICAg
ICAvLyBGSVhNRTogI2lmbmRlZiBOREVCVUcsIFdyaXRlIHRoZSBjb3JyZWN0IG1fdHlwZSB0byB0
aGUgcmVnaXN0ZXIuCiB9CiAKQEAgLTIwMCw3ICsyMDAsNyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQg
Q1RJOjplbWl0RGVidWdFeGNlcHRpCiBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0RGVidWdF
eGNlcHRpb25DaGVjaygpCiB7CiAgICAgZW1pdEdldENUSVBhcmFtKENUSV9BUkdTX2V4ZWMsIE1h
Y3JvQXNzZW1ibGVyOjplY3gpOwotICAgIG1faml0LmVtaXRDbXBsX2kzMm0oMCwgT0JKRUNUX09G
RlNFVChFeGVjU3RhdGUsIG1fZXhjZXB0aW9uKSwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAg
bV9qaXQuY21wbF9pMzJtKDAsIE9CSkVDVF9PRkZTRVQoRXhlY1N0YXRlLCBtX2V4Y2VwdGlvbiks
IE1hY3JvQXNzZW1ibGVyOjplY3gpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgbm9FeGNl
cHRpb24gPSBtX2ppdC5lbWl0VW5saW5rZWRKZSgpOwogICAgIG1faml0LmVtaXRJbnQzKCk7CiAg
ICAgbV9qaXQubGluayhub0V4Y2VwdGlvbiwgbV9qaXQubGFiZWwoKSk7CkBAIC0yNDUsNzMgKzI0
NSw3MyBAQCB2b2lkIENUSTo6cHJpbnRPcGNvZGVPcGVyYW5kVHlwZXModW5zaWduCiBBTFdBWVNf
SU5MSU5FIHZvaWQgQ1RJOjplbWl0Q2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwgQ1RJSGVscGVy
X2ogaGVscGVyKQogewogI2lmIEVOQUJMRShTQU1QTElOR19UT09MKQotICAgIG1faml0LmVtaXRN
b3ZsX2kzMm0oMSwgJmluY2FsbCk7CisgICAgbV9qaXQubW92bF9pMzJtKDEsICZpbmNhbGwpOwog
I2VuZGlmCiAgICAgbV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChtX2ppdC5lbWl0Q2FsbCgpLCBo
ZWxwZXIsIG9wY29kZUluZGV4KSk7CiAgICAgZW1pdERlYnVnRXhjZXB0aW9uQ2hlY2soKTsKICNp
ZiBFTkFCTEUoU0FNUExJTkdfVE9PTCkKLSAgICBtX2ppdC5lbWl0TW92bF9pMzJtKDAsICZpbmNh
bGwpOworICAgIG1faml0Lm1vdmxfaTMybSgwLCAmaW5jYWxsKTsKICNlbmRpZgogfQogCiBBTFdB
WVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0Q2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwgQ1RJSGVs
cGVyX3AgaGVscGVyKQogewogI2lmIEVOQUJMRShTQU1QTElOR19UT09MKQotICAgIG1faml0LmVt
aXRNb3ZsX2kzMm0oMSwgJmluY2FsbCk7CisgICAgbV9qaXQubW92bF9pMzJtKDEsICZpbmNhbGwp
OwogI2VuZGlmCiAgICAgbV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChtX2ppdC5lbWl0Q2FsbCgp
LCBoZWxwZXIsIG9wY29kZUluZGV4KSk7CiAgICAgZW1pdERlYnVnRXhjZXB0aW9uQ2hlY2soKTsK
ICNpZiBFTkFCTEUoU0FNUExJTkdfVE9PTCkKLSAgICBtX2ppdC5lbWl0TW92bF9pMzJtKDAsICZp
bmNhbGwpOworICAgIG1faml0Lm1vdmxfaTMybSgwLCAmaW5jYWxsKTsKICNlbmRpZgogfQogCiBB
TFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0Q2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwgQ1RJ
SGVscGVyX2IgaGVscGVyKQogewogI2lmIEVOQUJMRShTQU1QTElOR19UT09MKQotICAgIG1faml0
LmVtaXRNb3ZsX2kzMm0oMSwgJmluY2FsbCk7CisgICAgbV9qaXQubW92bF9pMzJtKDEsICZpbmNh
bGwpOwogI2VuZGlmCiAgICAgbV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChtX2ppdC5lbWl0Q2Fs
bCgpLCBoZWxwZXIsIG9wY29kZUluZGV4KSk7CiAgICAgZW1pdERlYnVnRXhjZXB0aW9uQ2hlY2so
KTsKICNpZiBFTkFCTEUoU0FNUExJTkdfVE9PTCkKLSAgICBtX2ppdC5lbWl0TW92bF9pMzJtKDAs
ICZpbmNhbGwpOworICAgIG1faml0Lm1vdmxfaTMybSgwLCAmaW5jYWxsKTsKICNlbmRpZgogfQog
CiBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0Q2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwg
Q1RJSGVscGVyX3YgaGVscGVyKQogewogI2lmIEVOQUJMRShTQU1QTElOR19UT09MKQotICAgIG1f
aml0LmVtaXRNb3ZsX2kzMm0oMSwgJmluY2FsbCk7CisgICAgbV9qaXQubW92bF9pMzJtKDEsICZp
bmNhbGwpOwogI2VuZGlmCiAgICAgbV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChtX2ppdC5lbWl0
Q2FsbCgpLCBoZWxwZXIsIG9wY29kZUluZGV4KSk7CiAgICAgZW1pdERlYnVnRXhjZXB0aW9uQ2hl
Y2soKTsKICNpZiBFTkFCTEUoU0FNUExJTkdfVE9PTCkKLSAgICBtX2ppdC5lbWl0TW92bF9pMzJt
KDAsICZpbmNhbGwpOworICAgIG1faml0Lm1vdmxfaTMybSgwLCAmaW5jYWxsKTsKICNlbmRpZgog
fQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0Q2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRl
eCwgQ1RJSGVscGVyX3MgaGVscGVyKQogewogI2lmIEVOQUJMRShTQU1QTElOR19UT09MKQotICAg
IG1faml0LmVtaXRNb3ZsX2kzMm0oMSwgJmluY2FsbCk7CisgICAgbV9qaXQubW92bF9pMzJtKDEs
ICZpbmNhbGwpOwogI2VuZGlmCiAgICAgbV9jYWxscy5hcHBlbmQoQ2FsbFJlY29yZChtX2ppdC5l
bWl0Q2FsbCgpLCBoZWxwZXIsIG9wY29kZUluZGV4KSk7CiAgICAgZW1pdERlYnVnRXhjZXB0aW9u
Q2hlY2soKTsKICNpZiBFTkFCTEUoU0FNUExJTkdfVE9PTCkKLSAgICBtX2ppdC5lbWl0TW92bF9p
MzJtKDAsICZpbmNhbGwpOworICAgIG1faml0Lm1vdmxfaTMybSgwLCAmaW5jYWxsKTsKICNlbmRp
ZgogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0o
TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQgcmVnLCB1bnNpZ25lZCBvcGNvZGVJbmRleCkKIHsK
LSAgICBtX2ppdC5lbWl0VGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIs
IHJlZyk7CisgICAgbV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVn
ZXIsIHJlZyk7CiAgICAgbV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9qaXQuZW1p
dFVubGlua2VkSmUoKSwgb3Bjb2RlSW5kZXgpKTsKIH0KIAogQUxXQVlTX0lOTElORSB2b2lkIENU
STo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tcyhNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCBy
ZWcxLCBNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcyLCB1bnNpZ25lZCBvcGNvZGVJbmRl
eCkKIHsKLSAgICBtX2ppdC5lbWl0TW92bF9ycihyZWcxLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsK
LSAgICBtX2ppdC5lbWl0QW5kbF9ycihyZWcyLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICBt
X2ppdC5tb3ZsX3JyKHJlZzEsIE1hY3JvQXNzZW1ibGVyOjplY3gpOworICAgIG1faml0LmFuZGxf
cnIocmVnMiwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CiAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90
SW1tKE1hY3JvQXNzZW1ibGVyOjplY3gsIG9wY29kZUluZGV4KTsKIH0KIApAQCAtMzI0LDM0ICsz
MjQsMzQgQEAgQUxXQVlTX0lOTElORSB1bnNpZ25lZCBDVEk6OmdldERlVGFnZ2VkQwogQUxXQVlT
X0lOTElORSB2b2lkIENUSTo6ZW1pdEZhc3RBcml0aERlVGFnSW1tZWRpYXRlKE1hY3JvQXNzZW1i
bGVyOjpSZWdpc3RlcklEIHJlZykKIHsKICAgICAvLyBvcF9tb2QgcmVsaWVzIG9uIHRoaXMgYmVp
bmcgYSBzdWIgLSBzZXR0aW5nIHpmIGlmIHJlc3VsdCBpcyAwLgotICAgIG1faml0LmVtaXRTdWJs
X2k4cihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIsIHJlZyk7CisgICAgbV9qaXQuc3Vi
bF9pOHIoSlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2VyLCByZWcpOwogfQogCiBBTFdBWVNf
SU5MSU5FIHZvaWQgQ1RJOjplbWl0RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoTWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQgcmVnKQogewotICAgIG1faml0LmVtaXRBZGRsX2k4cihKU0ltbWVkaWF0
ZTo6VGFnQml0VHlwZUludGVnZXIsIHJlZyk7CisgICAgbV9qaXQuYWRkbF9pOHIoSlNJbW1lZGlh
dGU6OlRhZ0JpdFR5cGVJbnRlZ2VyLCByZWcpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJ
OjplbWl0RmFzdEFyaXRoUG90ZW50aWFsbHlSZVRhZ0ltbWVkaWF0ZShNYWNyb0Fzc2VtYmxlcjo6
UmVnaXN0ZXJJRCByZWcpCiB7Ci0gICAgbV9qaXQuZW1pdE9ybF9pOHIoSlNJbW1lZGlhdGU6OlRh
Z0JpdFR5cGVJbnRlZ2VyLCByZWcpOworICAgIG1faml0Lm9ybF9ycihKU0ltbWVkaWF0ZTo6VGFn
Qml0VHlwZUludGVnZXIsIHJlZyk7CiB9CiAKIEFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRG
YXN0QXJpdGhJbW1Ub0ludChNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcpCiB7Ci0gICAg
bV9qaXQuZW1pdFNhcmxfaThyKDEsIHJlZyk7CisgICAgbV9qaXQuc2FybF9pOHIoMSwgcmVnKTsK
IH0KIAogQUxXQVlTX0lOTElORSB2b2lkIENUSTo6ZW1pdEZhc3RBcml0aEludFRvSW1tT3JTbG93
Q2FzZShNYWNyb0Fzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcsIHVuc2lnbmVkIG9wY29kZUluZGV4
KQogewotICAgIG1faml0LmVtaXRBZGRsX3JyKHJlZywgcmVnKTsKKyAgICBtX2ppdC5hZGRsX3Jy
KHJlZywgcmVnKTsKICAgICBtX3Nsb3dDYXNlcy5hcHBlbmQoU2xvd0Nhc2VFbnRyeShtX2ppdC5l
bWl0VW5saW5rZWRKbygpLCBvcGNvZGVJbmRleCkpOwogICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0lt
bWVkaWF0ZShyZWcpOwogfQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0RmFzdEFyaXRo
SW50VG9JbW1Ob0NoZWNrKE1hY3JvQXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZykKIHsKLSAgICBt
X2ppdC5lbWl0QWRkbF9ycihyZWcsIHJlZyk7CisgICAgbV9qaXQuYWRkbF9ycihyZWcsIHJlZyk7
CiAgICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKHJlZyk7CiB9CiAKQEAgLTQwNCw3ICs0
MDQsNyBAQCB2b2lkIENUSTo6Y29tcGlsZU9wQ2FsbChJbnN0cnVjdGlvbiogaW5zCiAKICAgICAg
ICBlbWl0R2V0Q1RJUGFyYW0oQ1RJX0FSR1NfciwgTWFjcm9Bc3NlbWJsZXI6OmVkaSk7IC8vIGVk
aSA6PSByCiAKLSAgICAgICAgbV9qaXQuZW1pdENtcGxfaTMycihyZWludGVycHJldF9jYXN0PHVu
c2lnbmVkPihKU0ltbWVkaWF0ZTo6aW1wb3NzaWJsZVZhbHVlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6
ZWF4KTsKKyAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+
KEpTSW1tZWRpYXRlOjppbXBvc3NpYmxlVmFsdWUoKSksIE1hY3JvQXNzZW1ibGVyOjplYXgpOwog
ICAgICAgICB3YXNFdmFsID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7CiAgICAgCiAgICAgICAg
IC8vIHRoaXMgcmVsb2FkcyB0aGUgZmlyc3QgYXJnIGludG8gZWN4IChjaGVja2VkIGp1c3QgYmVs
b3cpLgpAQCAtNDE2LDkgKzQxNiw5IEBAIHZvaWQgQ1RJOjpjb21waWxlT3BDYWxsKEluc3RydWN0
aW9uKiBpbnMKICAgICB9CiAKICAgICAvLyBGYXN0IGNoZWNrIGZvciBKUyBmdW5jdGlvbi4KLSAg
ICBtX2ppdC5lbWl0VGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywgTWFjcm9Bc3NlbWJs
ZXI6OmVjeCk7CisgICAgbV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywgTWFj
cm9Bc3NlbWJsZXI6OmVjeCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBpc05vdE9iamVj
dCA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOwotICAgIG1faml0LmVtaXRDbXBsX2kzMm0ocmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obV9tYWNoaW5lLT5tX2pzRnVuY3Rpb25WcHRyKSwgTWFj
cm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgbV9qaXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQ+KG1fbWFjaGluZS0+bV9qc0Z1bmN0aW9uVnB0ciksIE1hY3JvQXNzZW1ibGVyOjpl
Y3gpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgaXNKU0Z1bmN0aW9uID0gbV9qaXQuZW1p
dFVubGlua2VkSmUoKTsKICAgICBtX2ppdC5saW5rKGlzTm90T2JqZWN0LCBtX2ppdC5sYWJlbCgp
KTsKIApAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgQ1RJOjpjb21waWxlT3BDYWxsKEluc3RydWN0
aW9uKiBpbnMKIAogICAgIC8vIFRoaXMgaGFuZGxlcyBKU0Z1bmN0aW9ucwogICAgIGVtaXRDYWxs
KGksICgodHlwZSA9PSBPcENvbnN0cnVjdCkgPyBNYWNoaW5lOjpjdGlfb3BfY29uc3RydWN0X0pT
Q29uc3RydWN0IDogTWFjaGluZTo6Y3RpX29wX2NhbGxfSlNGdW5jdGlvbikpOwotICAgIG1faml0
LmVtaXRDYWxsTl9yKE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0LmNhbGxfcihNYWNy
b0Fzc2VtYmxlcjo6ZWF4KTsKICAgICBlbWl0R2V0Q1RJUGFyYW0oQ1RJX0FSR1NfciwgTWFjcm9B
c3NlbWJsZXI6OmVkaSk7IC8vIGVkaSA6PSByCiAKICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wRHN0
IGVuZCA9IG1faml0LmxhYmVsKCk7CkBAIC00NDQsMTQgKzQ0NCwxNCBAQCB2b2lkIENUSTo6Y29t
cGlsZU9wQ2FsbChJbnN0cnVjdGlvbiogaW5zCiAKIHZvaWQgQ1RJOjplbWl0U2xvd1NjcmlwdENo
ZWNrKHVuc2lnbmVkIG9wY29kZUluZGV4KQogewotICAgIG1faml0LmVtaXRTdWJsX2k4cigxLCBN
YWNyb0Fzc2VtYmxlcjo6ZXNpKTsKKyAgICBtX2ppdC5zdWJsX2k4cigxLCBNYWNyb0Fzc2VtYmxl
cjo6ZXNpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIHNraXBUaW1lb3V0ID0gbV9qaXQu
ZW1pdFVubGlua2VkSm5lKCk7CiAgICAgZW1pdENhbGwob3Bjb2RlSW5kZXgsIE1hY2hpbmU6OmN0
aV90aW1lb3V0X2NoZWNrKTsKIAogICAgIGVtaXRHZXRDVElQYXJhbShDVElfQVJHU19leGVjLCBN
YWNyb0Fzc2VtYmxlcjo6ZWN4KTsKLSAgICBtX2ppdC5lbWl0TW92bF9tcihPQkpFQ1RfT0ZGU0VU
KEV4ZWNTdGF0ZSwgbV9nbG9iYWxEYXRhKSwgTWFjcm9Bc3NlbWJsZXI6OmVjeCwgTWFjcm9Bc3Nl
bWJsZXI6OmVjeCk7Ci0gICAgbV9qaXQuZW1pdE1vdmxfbXIoT0JKRUNUX09GRlNFVChKU0dsb2Jh
bERhdGEsIG1hY2hpbmUpLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4LCBNYWNyb0Fzc2VtYmxlcjo6ZWN4
KTsKLSAgICBtX2ppdC5lbWl0TW92bF9tcihPQkpFQ1RfT0ZGU0VUKE1hY2hpbmUsIG1fdGlja3NV
bnRpbE5leHRUaW1lb3V0Q2hlY2spLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4LCBNYWNyb0Fzc2VtYmxl
cjo6ZXNpKTsKKyAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoRXhlY1N0YXRlLCBtX2ds
b2JhbERhdGEpLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4LCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAg
ICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNHbG9iYWxEYXRhLCBtYWNoaW5lKSwgTWFj
cm9Bc3NlbWJsZXI6OmVjeCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgbV9qaXQubW92bF9t
cihPQkpFQ1RfT0ZGU0VUKE1hY2hpbmUsIG1fdGlja3NVbnRpbE5leHRUaW1lb3V0Q2hlY2spLCBN
YWNyb0Fzc2VtYmxlcjo6ZWN4LCBNYWNyb0Fzc2VtYmxlcjo6ZXNpKTsKICAgICBtX2ppdC5saW5r
KHNraXBUaW1lb3V0LCBtX2ppdC5sYWJlbCgpKTsKIH0KIApAQCAtNDY0LDcgKzQ2NCw3IEBAIHZv
aWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgbV9sYWJlbHNbaV0gPSBt
X2ppdC5sYWJlbCgpOwogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX1RPT0wpCi0gICAgICAgIG1faml0
LmVtaXRNb3ZsX2kzMm0obV9tYWNoaW5lLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbltpXS51Lm9w
Y29kZSksICZ3aGF0KTsKKyAgICAgICAgbV9qaXQubW92bF9pMzJtKG1fbWFjaGluZS0+Z2V0T3Bj
b2RlSUQoaW5zdHJ1Y3Rpb25baV0udS5vcGNvZGUpLCAmd2hhdCk7CiAjZW5kaWYKIAogICAgICAg
ICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fbWFjaGluZS0+aXNPcGNvZGUoaW5zdHJ1Y3Rpb25baV0u
dS5vcGNvZGUpLCAicHJpdmF0ZUNvbXBpbGVNYWluUGFzcyBnb25lIGJhZCBAICVkIiwgaSk7CkBA
IC00NzMsNyArNDczLDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICBjYXNlIG9wX21vdjogewogICAgICAgICAgICAgdW5zaWduZWQgc3JjID0gaW5zdHJ1Y3Rp
b25baSArIDJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGlmIChzcmMgPCBtX2NvZGVCbG9jay0+
Y29uc3RhbnRSZWdpc3RlcnMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIG1faml0LmVtaXRNb3Zs
X2kzMnIocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obV9jb2RlQmxvY2stPmNvbnN0YW50UmVn
aXN0ZXJzW3NyY10uanNWYWx1ZShtX2V4ZWMpKSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7CisgICAg
ICAgICAgICAgICAgbV9qaXQubW92bF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KG1f
Y29kZUJsb2NrLT5jb25zdGFudFJlZ2lzdGVyc1tzcmNdLmpzVmFsdWUobV9leGVjKSksIE1hY3Jv
QXNzZW1ibGVyOjplZHgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGVtaXRH
ZXRBcmcoc3JjLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1
bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7CkBA
IC00ODksNyArNDg5LDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAg
ICAgICAgICAgICAgIGlmIChKU0ltbWVkaWF0ZTo6aXNOdW1iZXIodmFsdWUpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjMSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAg
ICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fzc2VtYmxlcjo6
ZWF4LCBpKTsKLSAgICAgICAgICAgICAgICAgICAgbV9qaXQuZW1pdEFkZGxfaTMycihnZXREZVRh
Z2dlZENvbnN0YW50SW1tZWRpYXRlKHZhbHVlKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAg
ICAgICAgICAgICAgICAgIG1faml0LmFkZGxfaTMycihnZXREZVRhZ2dlZENvbnN0YW50SW1tZWRp
YXRlKHZhbHVlKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICAgICAgICAgIG1f
c2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpvKCksIGkp
KTsKICAgICAgICAgICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChkc3QpOwogICAgICAgICAgICAg
ICAgICAgICBpICs9IDQ7CkBAIC01MDAsNyArNTAwLDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MoKQogICAgICAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjMiwgTWFjcm9Bc3Nl
bWJsZXI6OmVkeCk7CiAgICAgICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tcyhN
YWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBpKTsKICAgICAgICAgICAg
ICAgICBlbWl0RmFzdEFyaXRoRGVUYWdJbW1lZGlhdGUoTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0g
ICAgICAgICAgICAgICAgbV9qaXQuZW1pdEFkZGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgTWFj
cm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICAgICAgbV9qaXQuYWRkbF9ycihNYWNyb0Fz
c2VtYmxlcjo6ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgICAgICBtX3Ns
b3dDYXNlcy5hcHBlbmQoU2xvd0Nhc2VFbnRyeShtX2ppdC5lbWl0VW5saW5rZWRKbygpLCBpKSk7
CiAgICAgICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChkc3QpOwogICAgICAgICAgICAgICAgIGkg
Kz0gNDsKQEAgLTUxOCwxMCArNTE4LDEwIEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5Q
YXNzKCkKICAgICAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfZW5kKTsK
ICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCwgTWFj
cm9Bc3NlbWJsZXI6OmVheCk7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX1RPT0wpCi0gICAgICAgICAg
ICBtX2ppdC5lbWl0TW92bF9pMzJtKC0xLCAmd2hhdCk7CisgICAgICAgICAgICBtX2ppdC5tb3Zs
X2kzMm0oLTEsICZ3aGF0KTsKICNlbmRpZgotICAgICAgICAgICAgbV9qaXQuZW1pdFB1c2hsX20o
LSgobV9jb2RlQmxvY2stPm51bUxvY2FscyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVy
U2l6ZSkgLSBSZWdpc3RlckZpbGU6OkNUSVJldHVybkVJUCkgKiBzaXplb2YoUmVnaXN0ZXIpLCBN
YWNyb0Fzc2VtYmxlcjo6ZWRpKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRSZXQoKTsKKyAgICAg
ICAgICAgIG1faml0LnB1c2hsX20oLSgobV9jb2RlQmxvY2stPm51bUxvY2FscyArIFJlZ2lzdGVy
RmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkgLSBSZWdpc3RlckZpbGU6OkNUSVJldHVybkVJUCkg
KiBzaXplb2YoUmVnaXN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKKyAgICAgICAgICAgIG1f
aml0LnJldCgpOwogICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KQEAgLTUzNSw3ICs1MzUsNyBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgICAgICBpbnQgc3JjRHN0ID0gaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFu
ZDsKICAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjRHN0LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsK
ICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fzc2VtYmxlcjo6ZWF4
LCBpKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRBZGRsX2k4cihnZXREZVRhZ2dlZENvbnN0YW50
SW1tZWRpYXRlKEpTSW1tZWRpYXRlOjpvbmVJbW1lZGlhdGUoKSksIE1hY3JvQXNzZW1ibGVyOjpl
YXgpOworICAgICAgICAgICAgbV9qaXQuYWRkbF9pOHIoZ2V0RGVUYWdnZWRDb25zdGFudEltbWVk
aWF0ZShKU0ltbWVkaWF0ZTo6b25lSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsK
ICAgICAgICAgICAgIG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRV
bmxpbmtlZEpvKCksIGkpKTsKICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoc3JjRHN0LCBNYWNy
b0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIGkgKz0gMjsKQEAgLTU1NywxNCArNTU3LDE0
IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGlmIChz
cmMyaW1tKSB7CiAgICAgICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMV0u
dS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKICAgICAgICAgICAgICAgICBlbWl0SnVt
cFNsb3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVkeCwgaSk7Ci0gICAgICAgICAgICAg
ICAgbV9qaXQuZW1pdENtcGxfaTMycihyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihzcmMyaW1t
KSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7CisgICAgICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJy
KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHNyYzJpbW0pLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4
KTsKICAgICAgICAgICAgICAgICBtX2ptcFRhYmxlLmFwcGVuZChKbXBUYWJsZShtX2ppdC5lbWl0
VW5saW5rZWRKbCgpLCBpICsgMyArIHRhcmdldCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIE1h
Y3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rp
b25baSArIDJdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7CiAgICAgICAgICAgICAg
ICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKE1hY3JvQXNzZW1ibGVyOjplYXgsIGkpOwogICAg
ICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fzc2VtYmxlcjo6ZWR4
LCBpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5lbWl0Q21wbF9ycihNYWNyb0Fzc2VtYmxlcjo6
ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jbXBsX3Jy
KE1hY3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAg
ICAgIG1fam1wVGFibGUuYXBwZW5kKEptcFRhYmxlKG1faml0LmVtaXRVbmxpbmtlZEpsKCksIGkg
KyAzICsgdGFyZ2V0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpICs9IDQ7CkBAIC02
MzMsMTIgKzYzMywxMiBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAKICAg
ICAgICAgICAgIGVtaXRHZXRDVElQYXJhbShDVElfQVJHU19zY29wZUNoYWluLCBNYWNyb0Fzc2Vt
Ymxlcjo6ZWF4KTsKICAgICAgICAgICAgIHdoaWxlIChza2lwLS0pCi0gICAgICAgICAgICAgICAg
bV9qaXQuZW1pdE1vdmxfbXIoT0JKRUNUX09GRlNFVChTY29wZUNoYWluTm9kZSwgbmV4dCksIE1h
Y3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgICAg
IG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChTY29wZUNoYWluTm9kZSwgbmV4dCksIE1hY3Jv
QXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogCi0gICAgICAgICAgICBtX2pp
dC5lbWl0TW92bF9tcihPQkpFQ1RfT0ZGU0VUKFNjb3BlQ2hhaW5Ob2RlLCBvYmplY3QpLCBNYWNy
b0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgIG1faml0
LmVtaXRNb3ZsX21yKEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mX2QoKSwgTWFjcm9Bc3NlbWJs
ZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0TW92
bF9tcihKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZl9EYXRhX3JlZ2lzdGVycygpLCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgIG1faml0LmVt
aXRNb3ZsX21yKChpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kKSAqIHNpemVvZihSZWdpc3Rl
ciksIE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAg
ICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKFNjb3BlQ2hhaW5Ob2RlLCBvYmplY3QpLCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1f
aml0Lm1vdmxfbXIoSlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZfZCgpLCBNYWNyb0Fzc2VtYmxl
cjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmxfbXIo
SlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZfRGF0YV9yZWdpc3RlcnMoKSwgTWFjcm9Bc3NlbWJs
ZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX21y
KChpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kKSAqIHNpemVvZihSZWdpc3RlciksIE1hY3Jv
QXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgZW1pdFB1
dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0g
NDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNjQ5LDEyICs2NDksMTIgQEAgdm9pZCBDVEk6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICAgICAgZW1pdEdldENUSVBhcmFtKENUSV9B
UkdTX3Njb3BlQ2hhaW4sIE1hY3JvQXNzZW1ibGVyOjplZHgpOwogICAgICAgICAgICAgZW1pdEdl
dEFyZyhpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsK
ICAgICAgICAgICAgIHdoaWxlIChza2lwLS0pCi0gICAgICAgICAgICAgICAgbV9qaXQuZW1pdE1v
dmxfbXIoT0JKRUNUX09GRlNFVChTY29wZUNoYWluTm9kZSwgbmV4dCksIE1hY3JvQXNzZW1ibGVy
OjplZHgsIE1hY3JvQXNzZW1ibGVyOjplZHgpOworICAgICAgICAgICAgICAgIG1faml0Lm1vdmxf
bXIoT0JKRUNUX09GRlNFVChTY29wZUNoYWluTm9kZSwgbmV4dCksIE1hY3JvQXNzZW1ibGVyOjpl
ZHgsIE1hY3JvQXNzZW1ibGVyOjplZHgpOwogCi0gICAgICAgICAgICBtX2ppdC5lbWl0TW92bF9t
cihPQkpFQ1RfT0ZGU0VUKFNjb3BlQ2hhaW5Ob2RlLCBvYmplY3QpLCBNYWNyb0Fzc2VtYmxlcjo6
ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKLSAgICAgICAgICAgIG1faml0LmVtaXRNb3ZsX21y
KEpTVmFyaWFibGVPYmplY3Q6Om9mZnNldE9mX2QoKSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCwgTWFj
cm9Bc3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0TW92bF9tcihKU1Zhcmlh
YmxlT2JqZWN0OjpvZmZzZXRPZl9EYXRhX3JlZ2lzdGVycygpLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4
LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKLSAgICAgICAgICAgIG1faml0LmVtaXRNb3ZsX3JtKE1h
Y3JvQXNzZW1ibGVyOjplYXgsIChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKSAqIHNpemVv
ZihSZWdpc3RlciksIE1hY3JvQXNzZW1ibGVyOjplZHgpOworICAgICAgICAgICAgbV9qaXQubW92
bF9tcihPQkpFQ1RfT0ZGU0VUKFNjb3BlQ2hhaW5Ob2RlLCBvYmplY3QpLCBNYWNyb0Fzc2VtYmxl
cjo6ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmxfbXIo
SlNWYXJpYWJsZU9iamVjdDo6b2Zmc2V0T2ZfZCgpLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBNYWNy
b0Fzc2VtYmxlcjo6ZWR4KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmxfbXIoSlNWYXJpYWJsZU9i
amVjdDo6b2Zmc2V0T2ZfRGF0YV9yZWdpc3RlcnMoKSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCwgTWFj
cm9Bc3NlbWJsZXI6OmVkeCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX3JtKE1hY3JvQXNzZW1i
bGVyOjplYXgsIChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKSAqIHNpemVvZihSZWdpc3Rl
ciksIE1hY3JvQXNzZW1ibGVyOjplZHgpOwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTY2MiwxMyArNjYyLDEzIEBAIHZvaWQgQ1RJOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rp
b25baSArIDFdLnUub3BlcmFuZCwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CiAgICAgICAgICAg
ICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfcmV0KTsKIAotICAgICAgICAgICAgbV9qaXQu
ZW1pdFB1c2hsX20oLSgobV9jb2RlQmxvY2stPm51bUxvY2FscyArIFJlZ2lzdGVyRmlsZTo6Q2Fs
bEZyYW1lSGVhZGVyU2l6ZSkgLSBSZWdpc3RlckZpbGU6OkNUSVJldHVybkVJUCkgKiBzaXplb2Yo
UmVnaXN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRS
ZXQoKTsKKyAgICAgICAgICAgIG1faml0LnB1c2hsX20oLSgobV9jb2RlQmxvY2stPm51bUxvY2Fs
cyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkgLSBSZWdpc3RlckZpbGU6OkNU
SVJldHVybkVJUCkgKiBzaXplb2YoUmVnaXN0ZXIpLCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKKyAg
ICAgICAgICAgIG1faml0LnJldCgpOwogICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9uZXdfYXJyYXk6IHsKLSAgICAgICAg
ICAgIG1faml0LmVtaXRMZWFsX21yKHNpemVvZihSZWdpc3RlcikgKiBpbnN0cnVjdGlvbltpICsg
Ml0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6ZWRpLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsK
KyAgICAgICAgICAgIG1faml0LmxlYWxfbXIoc2l6ZW9mKFJlZ2lzdGVyKSAqIGluc3RydWN0aW9u
W2kgKyAyXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplZGksIE1hY3JvQXNzZW1ibGVyOjpl
ZHgpOwogICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWR4LCAwKTsKICAg
ICAgICAgICAgIGVtaXRQdXRBcmdDb25zdGFudChpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5k
LCA0KTsKICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9uZXdfYXJyYXkp
OwpAQCAtNjk0LDE1ICs2OTQsMTUgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3Mo
KQogICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCBN
YWNyb0Fzc2VtYmxlcjo6ZWR4KTsKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdElt
bShNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBpKTsKICAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJbW1U
b0ludChNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKLSAgICAgICAgICAgIG1faml0LmVtaXRUZXN0bF9p
MzJyKEpTSW1tZWRpYXRlOjpUYWdNYXNrLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAg
ICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIE1hY3JvQXNzZW1ibGVy
OjplYXgpOwogICAgICAgICAgICAgbV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9q
aXQuZW1pdFVubGlua2VkSm5lKCksIGkpKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRDbXBsX2kz
Mm0ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obV9tYWNoaW5lLT5tX2pzQXJyYXlWcHRyKSwg
TWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRl
cnByZXRfY2FzdDx1bnNpZ25lZD4obV9tYWNoaW5lLT5tX2pzQXJyYXlWcHRyKSwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CiAgICAgICAgICAgICBtX3Nsb3dDYXNlcy5hcHBlbmQoU2xvd0Nhc2VFbnRy
eShtX2ppdC5lbWl0VW5saW5rZWRKbmUoKSwgaSkpOwotICAgICAgICAgICAgbV9qaXQuZW1pdENt
cGxfcm0oTWFjcm9Bc3NlbWJsZXI6OmVkeCwgT0JKRUNUX09GRlNFVChKU0FycmF5LCBtX2Zhc3RB
Y2Nlc3NDdXRvZmYpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LmNt
cGxfcm0oTWFjcm9Bc3NlbWJsZXI6OmVkeCwgT0JKRUNUX09GRlNFVChKU0FycmF5LCBtX2Zhc3RB
Y2Nlc3NDdXRvZmYpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIG1fc2xvd0Nh
c2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpiZSgpLCBpKSk7CiAK
LSAgICAgICAgICAgIG1faml0LmVtaXRNb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNBcnJheSwgbV9z
dG9yYWdlKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Ci0gICAg
ICAgICAgICBtX2ppdC5lbWl0TW92bF9tcihPQkpFQ1RfT0ZGU0VUKEFycmF5U3RvcmFnZSwgbV92
ZWN0b3JbMF0pLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBzaXpl
b2YoSlNWYWx1ZSopLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0Lm1v
dmxfbXIoT0JKRUNUX09GRlNFVChKU0FycmF5LCBtX3N0b3JhZ2UpLCBNYWNyb0Fzc2VtYmxlcjo6
ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmxfbXIoT0JK
RUNUX09GRlNFVChBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSwgTWFjcm9Bc3NlbWJsZXI6OmVh
eCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCwgc2l6ZW9mKEpTVmFsdWUqKSwgTWFjcm9Bc3NlbWJsZXI6
OmVheCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9w
ZXJhbmQpOwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC03MjEs
NyArNzIxLDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICAg
ICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxl
cjo6ZWF4KTsKICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3Bl
cmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7CiAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNl
SWZOb3RJbW1zKE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplZHgsIGkpOwot
ICAgICAgICAgICAgbV9qaXQuZW1pdFN1YmxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgTWFjcm9B
c3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5zdWJsX3JyKE1hY3JvQXNzZW1ibGVy
OjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgbV9zbG93Q2FzZXMuYXBw
ZW5kKFNsb3dDYXNlRW50cnkobV9qaXQuZW1pdFVubGlua2VkSm8oKSwgaSkpOwogICAgICAgICAg
ICAgZW1pdEZhc3RBcml0aFJlVGFnSW1tZWRpYXRlKE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAg
ICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKQEAg
LTczNCwxNSArNzM0LDE1IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFuZCwgTWFjcm9B
c3NlbWJsZXI6OmVjeCk7CiAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oTWFj
cm9Bc3NlbWJsZXI6OmVkeCwgaSk7CiAgICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW1tVG9JbnQo
TWFjcm9Bc3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0VGVzdGxfaTMycihK
U0ltbWVkaWF0ZTo6VGFnTWFzaywgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBt
X2ppdC50ZXN0bF9pMzJyKEpTSW1tZWRpYXRlOjpUYWdNYXNrLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4
KTsKICAgICAgICAgICAgIG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVt
aXRVbmxpbmtlZEpuZSgpLCBpKSk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJtKHJl
aW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KG1fbWFjaGluZS0+bV9qc0FycmF5VnB0ciksIE1hY3Jv
QXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQ+KG1fbWFjaGluZS0+bV9qc0FycmF5VnB0ciksIE1hY3JvQXNzZW1ibGVy
OjplYXgpOwogICAgICAgICAgICAgbV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9q
aXQuZW1pdFVubGlua2VkSm5lKCksIGkpKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRDbXBsX3Jt
KE1hY3JvQXNzZW1ibGVyOjplZHgsIE9CSkVDVF9PRkZTRVQoSlNBcnJheSwgbV9mYXN0QWNjZXNz
Q3V0b2ZmKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5jbXBsX3Jt
KE1hY3JvQXNzZW1ibGVyOjplZHgsIE9CSkVDVF9PRkZTRVQoSlNBcnJheSwgbV9mYXN0QWNjZXNz
Q3V0b2ZmKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICBtX3Nsb3dDYXNlcy5h
cHBlbmQoU2xvd0Nhc2VFbnRyeShtX2ppdC5lbWl0VW5saW5rZWRKYmUoKSwgaSkpOwogCi0gICAg
ICAgICAgICBtX2ppdC5lbWl0TW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTQXJyYXksIG1fc3RvcmFn
ZSksIE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgICAgICAg
ICAgbV9qaXQuZW1pdE1vdmxfcm0oTWFjcm9Bc3NlbWJsZXI6OmVjeCwgT0JKRUNUX09GRlNFVChB
cnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3Nl
bWJsZXI6OmVkeCwgc2l6ZW9mKEpTVmFsdWUqKSk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX21y
KE9CSkVDVF9PRkZTRVQoSlNBcnJheSwgbV9zdG9yYWdlKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwg
TWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX3JtKE1hY3JvQXNz
ZW1ibGVyOjplY3gsIE9CSkVDVF9PRkZTRVQoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSksIE1h
Y3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplZHgsIHNpemVvZihKU1ZhbHVlKikp
OwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAg
LTc1MywxNCArNzUzLDE0IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIE1h
Y3JvQXNzZW1ibGVyOjplYXgpOwogCi0gICAgICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJyKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KEpTSW1tZWRpYXRlOjp6ZXJvSW1tZWRpYXRlKCkpLCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LmNtcGxfaTMycihyZWludGVy
cHJldF9jYXN0PHVpbnQzMl90PihKU0ltbWVkaWF0ZTo6emVyb0ltbWVkaWF0ZSgpKSwgTWFjcm9B
c3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGlzWmVy
byA9IG1faml0LmVtaXRVbmxpbmtlZEplKCk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0VGVzdGxf
aTMycihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIsIE1hY3JvQXNzZW1ibGVyOjplYXgp
OworICAgICAgICAgICAgbV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUlu
dGVnZXIsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgbV9qbXBUYWJsZS5hcHBl
bmQoSm1wVGFibGUobV9qaXQuZW1pdFVubGlua2VkSm5lKCksIGkgKyAyICsgdGFyZ2V0KSk7CiAK
LSAgICAgICAgICAgIG1faml0LmVtaXRDbXBsX2kzMnIocmVpbnRlcnByZXRfY2FzdDx1aW50MzJf
dD4oSlNJbW1lZGlhdGU6OnRydWVJbW1lZGlhdGUoKSksIE1hY3JvQXNzZW1ibGVyOjplYXgpOwor
ICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KEpT
SW1tZWRpYXRlOjp0cnVlSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAg
ICAgICAgIG1fam1wVGFibGUuYXBwZW5kKEptcFRhYmxlKG1faml0LmVtaXRVbmxpbmtlZEplKCks
IGkgKyAyICsgdGFyZ2V0KSk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJyKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KEpTSW1tZWRpYXRlOjpmYWxzZUltbWVkaWF0ZSgpKSwgTWFj
cm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdD4oSlNJbW1lZGlhdGU6OmZhbHNlSW1tZWRpYXRlKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVu
dHJ5KG1faml0LmVtaXRVbmxpbmtlZEpuZSgpLCBpKSk7CiAKICAgICAgICAgICAgIG1faml0Lmxp
bmsoaXNaZXJvLCBtX2ppdC5sYWJlbCgpKTsKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lkIENUSTo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBpbnQgc3JjRHN0ID0gaW5zdHJ1
Y3Rpb25baSArIDFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjRHN0LCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdElt
bShNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBpKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRTdWJsX2k4
cihnZXREZVRhZ2dlZENvbnN0YW50SW1tZWRpYXRlKEpTSW1tZWRpYXRlOjpvbmVJbW1lZGlhdGUo
KSksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQuc3VibF9pOHIoZ2V0
RGVUYWdnZWRDb25zdGFudEltbWVkaWF0ZShKU0ltbWVkaWF0ZTo6b25lSW1tZWRpYXRlKCkpLCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93
Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpvKCksIGkpKTsKICAgICAgICAgICAgIGVtaXRQ
dXRSZXN1bHQoc3JjRHN0LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIGkgKz0g
MjsKQEAgLTgwOCwxNCArODA4LDE0IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgICAgIGlmIChzcmMyaW1tKSB7CiAgICAgICAgICAgICAgICAgZW1pdEdldEFy
ZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKICAg
ICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVk
eCwgaSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuZW1pdENtcGxfaTMycihyZWludGVycHJldF9j
YXN0PHVuc2lnbmVkPihzcmMyaW1tKSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7CisgICAgICAgICAg
ICAgICAgbV9qaXQuY21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHNyYzJpbW0p
LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKICAgICAgICAgICAgICAgICBtX2ptcFRhYmxlLmFwcGVu
ZChKbXBUYWJsZShtX2ppdC5lbWl0VW5saW5rZWRKZ2UoKSwgaSArIDMgKyB0YXJnZXQpKTsKICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlv
bltpICsgMV0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgICAg
ICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVy
OjplZHgpOwogICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShNYWNyb0Fz
c2VtYmxlcjo6ZWF4LCBpKTsKICAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW0oTWFjcm9Bc3NlbWJsZXI6OmVkeCwgaSk7Ci0gICAgICAgICAgICAgICAgbV9qaXQuZW1pdENt
cGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAg
ICAgICAgICAgbV9qaXQuY21wbF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBNYWNyb0Fzc2VtYmxl
cjo6ZWF4KTsKICAgICAgICAgICAgICAgICBtX2ptcFRhYmxlLmFwcGVuZChKbXBUYWJsZShtX2pp
dC5lbWl0VW5saW5rZWRKZ2UoKSwgaSArIDMgKyB0YXJnZXQpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGkgKz0gNDsKQEAgLTgyMywxMCArODIzLDEwIEBAIHZvaWQgQ1RJOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25vdDogewogICAg
ICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kLCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgIG1faml0LmVtaXRYb3JsX2k4cihKU0ltbWVkaWF0
ZTo6RnVsbFRhZ1R5cGVCb29sLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAgICAgICAgIG1f
aml0LmVtaXRUZXN0bF9pMzJyKEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZU1hc2ssIE1hY3JvQXNz
ZW1ibGVyOjplYXgpOyAvLyBpOD8KKyAgICAgICAgICAgIG1faml0LnhvcmxfaThyKEpTSW1tZWRp
YXRlOjpGdWxsVGFnVHlwZUJvb2wsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAg
bV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVNYXNrLCBNYWNyb0Fzc2Vt
Ymxlcjo6ZWF4KTsgLy8gaTg/CiAgICAgICAgICAgICBtX3Nsb3dDYXNlcy5hcHBlbmQoU2xvd0Nh
c2VFbnRyeShtX2ppdC5lbWl0VW5saW5rZWRKbmUoKSwgaSkpOwotICAgICAgICAgICAgbV9qaXQu
ZW1pdFhvcmxfaThyKChKU0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVCb29sIHwgSlNJbW1lZGlhdGU6
OkV4dGVuZGVkUGF5bG9hZEJpdEJvb2xWYWx1ZSksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAg
ICAgICAgICAgbV9qaXQueG9ybF9pOHIoKEpTSW1tZWRpYXRlOjpGdWxsVGFnVHlwZUJvb2wgfCBK
U0ltbWVkaWF0ZTo6RXh0ZW5kZWRQYXlsb2FkQml0Qm9vbFZhbHVlKSwgTWFjcm9Bc3NlbWJsZXI6
OmVheCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9w
ZXJhbmQpOwogICAgICAgICAgICAgaSArPSAzOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04MzUs
MTQgKzgzNSwxNCBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAg
ICAgICB1bnNpZ25lZCB0YXJnZXQgPSBpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kOwogICAg
ICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kLCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4KTsKIAotICAgICAgICAgICAgbV9qaXQuZW1pdENtcGxfaTMycihyZWludGVy
cHJldF9jYXN0PHVpbnQzMl90PihKU0ltbWVkaWF0ZTo6emVyb0ltbWVkaWF0ZSgpKSwgTWFjcm9B
c3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnByZXRf
Y2FzdDx1aW50MzJfdD4oSlNJbW1lZGlhdGU6Onplcm9JbW1lZGlhdGUoKSksIE1hY3JvQXNzZW1i
bGVyOjplYXgpOwogICAgICAgICAgICAgbV9qbXBUYWJsZS5hcHBlbmQoSm1wVGFibGUobV9qaXQu
ZW1pdFVubGlua2VkSmUoKSwgaSArIDIgKyB0YXJnZXQpKTsKLSAgICAgICAgICAgIG1faml0LmVt
aXRUZXN0bF9pMzJyKEpTSW1tZWRpYXRlOjpUYWdCaXRUeXBlSW50ZWdlciwgTWFjcm9Bc3NlbWJs
ZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC50ZXN0bF9pMzJyKEpTSW1tZWRpYXRlOjpUYWdC
aXRUeXBlSW50ZWdlciwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Sm1wU3JjIGlzTm9uWmVybyA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOwogCi0g
ICAgICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+
KEpTSW1tZWRpYXRlOjpmYWxzZUltbWVkaWF0ZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7Cisg
ICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oSlNJ
bW1lZGlhdGU6OmZhbHNlSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAg
ICAgICAgIG1fam1wVGFibGUuYXBwZW5kKEptcFRhYmxlKG1faml0LmVtaXRVbmxpbmtlZEplKCks
IGkgKyAyICsgdGFyZ2V0KSk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJyKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KEpTSW1tZWRpYXRlOjp0cnVlSW1tZWRpYXRlKCkpLCBNYWNy
b0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LmNtcGxfaTMycihyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90PihKU0ltbWVkaWF0ZTo6dHJ1ZUltbWVkaWF0ZSgpKSwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CiAgICAgICAgICAgICBtX3Nsb3dDYXNlcy5hcHBlbmQoU2xvd0Nhc2VFbnRy
eShtX2ppdC5lbWl0VW5saW5rZWRKbmUoKSwgaSkpOwogCiAgICAgICAgICAgICBtX2ppdC5saW5r
KGlzTm9uWmVybywgbV9qaXQubGFiZWwoKSk7CkBAIC04NTIsOSArODUyLDkgQEAgdm9pZCBDVEk6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBjYXNlIG9wX3Bvc3RfaW5jOiB7CiAg
ICAgICAgICAgICBpbnQgc3JjRHN0ID0gaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZDsKICAg
ICAgICAgICAgIGVtaXRHZXRBcmcoc3JjRHN0LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICAg
ICAgICAgIG1faml0LmVtaXRNb3ZsX3JyKE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1i
bGVyOjplZHgpOworICAgICAgICAgICAgbV9qaXQubW92bF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWF4
LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5v
dEltbShNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBpKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRBZGRs
X2k4cihnZXREZVRhZ2dlZENvbnN0YW50SW1tZWRpYXRlKEpTSW1tZWRpYXRlOjpvbmVJbW1lZGlh
dGUoKSksIE1hY3JvQXNzZW1ibGVyOjplZHgpOworICAgICAgICAgICAgbV9qaXQuYWRkbF9pOHIo
Z2V0RGVUYWdnZWRDb25zdGFudEltbWVkaWF0ZShKU0ltbWVkaWF0ZTo6b25lSW1tZWRpYXRlKCkp
LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKICAgICAgICAgICAgIG1fc2xvd0Nhc2VzLmFwcGVuZChT
bG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpvKCksIGkpKTsKICAgICAgICAgICAgIGVt
aXRQdXRSZXN1bHQoc3JjRHN0LCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKICAgICAgICAgICAgIGVt
aXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CkBAIC04NjMsNyArODYz
LDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICB9CiAgICAg
ICAgIGNhc2Ugb3BfdW5leHBlY3RlZF9sb2FkOiB7CiAgICAgICAgICAgICBKU1ZhbHVlKiB2ID0g
bV9jb2RlQmxvY2stPnVuZXhwZWN0ZWRDb25zdGFudHNbaW5zdHJ1Y3Rpb25baSArIDJdLnUub3Bl
cmFuZF07Ci0gICAgICAgICAgICBtX2ppdC5lbWl0TW92bF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8
dW5zaWduZWQ+KHYpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0Lm1v
dmxfaTMycihyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPih2KSwgTWFjcm9Bc3NlbWJsZXI6OmVh
eCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgaSArPSAzOwogICAgICAgICAgICAgYnJlYWs7CkBAIC04NzEsNyAr
ODcxLDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBjYXNl
IG9wX2pzcjogewogICAgICAgICAgICAgaW50IHJldEFkZHJEc3QgPSBpbnN0cnVjdGlvbltpICsg
MV0udS5vcGVyYW5kOwogICAgICAgICAgICAgaW50IHRhcmdldCA9IGluc3RydWN0aW9uW2kgKyAy
XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0TW92bF9pMzJtKDAsIHNpemVvZihS
ZWdpc3RlcikgKiByZXRBZGRyRHN0LCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKKyAgICAgICAgICAg
IG1faml0Lm1vdmxfaTMybSgwLCBzaXplb2YoUmVnaXN0ZXIpICogcmV0QWRkckRzdCwgTWFjcm9B
c3NlbWJsZXI6OmVkaSk7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wRHN0IGFkZHJQ
b3NpdGlvbiA9IG1faml0LmxhYmVsKCk7CiAgICAgICAgICAgICBtX2ptcFRhYmxlLmFwcGVuZChK
bXBUYWJsZShtX2ppdC5lbWl0VW5saW5rZWRKbXAoKSwgaSArIDIgKyB0YXJnZXQpKTsKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBEc3Qgc3JldFRhcmdldCA9IG1faml0LmxhYmVsKCk7
CkBAIC04ODAsNyArODgwLDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9zcmV0OiB7Ci0g
ICAgICAgICAgICBtX2ppdC5lbWl0Sm1wTl9tKHNpemVvZihSZWdpc3RlcikgKiBpbnN0cnVjdGlv
bltpICsgMV0udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKKyAgICAgICAgICAgIG1f
aml0LmptcF9tKHNpemVvZihSZWdpc3RlcikgKiBpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5k
LCBNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKICAgICAgICAgICAgIGkgKz0gMjsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBDVEk6OnByaXZhdGVD
b21waWxlTWFpblBhc3MoKQogICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKE1h
Y3JvQXNzZW1ibGVyOjplY3gsIGkpOwogICAgICAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50
KE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgZW1pdEZhc3RBcml0aEltbVRvSW50
KE1hY3JvQXNzZW1ibGVyOjplY3gpOwotICAgICAgICAgICAgbV9qaXQuZW1pdFNobGxfQ0xyKE1h
Y3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQuc2hsbF9DTHIoTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CiAgICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1PclNsb3dDYXNl
KE1hY3JvQXNzZW1ibGVyOjplYXgsIGkpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0
cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIGkgKz0gNDsKQEAgLTkwNSwx
NyArOTA1LDE3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
ICAgIGlmIChKU1ZhbHVlKiB2YWx1ZSA9IGdldENvbnN0YW50SW1tZWRpYXRlTnVtZXJpY0FyZyhz
cmMxKSkgewogICAgICAgICAgICAgICAgIGVtaXRHZXRBcmcoc3JjMiwgTWFjcm9Bc3NlbWJsZXI6
OmVheCk7CiAgICAgICAgICAgICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKE1hY3JvQXNz
ZW1ibGVyOjplYXgsIGkpOwotICAgICAgICAgICAgICAgIG1faml0LmVtaXRBbmRsX2kzMnIocmVp
bnRlcnByZXRfY2FzdDx1bnNpZ25lZD4odmFsdWUpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsgLy8g
RklYTUU6IG1ha2UgaXQgbW9yZSBvYnZpb3VzIHRoaXMgaXMgcmVseWluZyBvbiB0aGUgZm9ybWF0
IG9mIEpTSW1tZWRpYXRlCisgICAgICAgICAgICAgICAgbV9qaXQuYW5kbF9pMzJyKHJlaW50ZXJw
cmV0X2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7IC8vIEZJWE1F
OiBtYWtlIGl0IG1vcmUgb2J2aW91cyB0aGlzIGlzIHJlbHlpbmcgb24gdGhlIGZvcm1hdCBvZiBK
U0ltbWVkaWF0ZQogICAgICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoZHN0KTsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoSlNWYWx1ZSogdmFsdWUgPSBnZXRDb25zdGFudEltbWVkaWF0ZU51bWVy
aWNBcmcoc3JjMikpIHsKICAgICAgICAgICAgICAgICBlbWl0R2V0QXJnKHNyYzEsIE1hY3JvQXNz
ZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbShN
YWNyb0Fzc2VtYmxlcjo6ZWF4LCBpKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5lbWl0QW5kbF9p
MzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KHZhbHVlKSwgTWFjcm9Bc3NlbWJsZXI6OmVh
eCk7CisgICAgICAgICAgICAgICAgbV9qaXQuYW5kbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dW5z
aWduZWQ+KHZhbHVlKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICAgICAgZW1p
dFB1dFJlc3VsdChkc3QpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBl
bWl0R2V0QXJnKHNyYzEsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgICAgIGVt
aXRHZXRBcmcoc3JjMiwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7Ci0gICAgICAgICAgICAgICAgbV9q
aXQuZW1pdEFuZGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7
CisgICAgICAgICAgICAgICAgbV9qaXQuYW5kbF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBNYWNy
b0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJ
bW0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgaSk7CiAgICAgICAgICAgICAgICAgZW1pdFB1dFJlc3Vs
dChkc3QpOwogICAgICAgICAgICAgfQpAQCAtOTI4LDcgKzkyOCw3IEBAIHZvaWQgQ1RJOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdElt
bShNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBpKTsKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJ
Zk5vdEltbShNYWNyb0Fzc2VtYmxlcjo6ZWN4LCBpKTsKICAgICAgICAgICAgIGVtaXRGYXN0QXJp
dGhJbW1Ub0ludChNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKLSAgICAgICAgICAgIG1faml0LmVtaXRT
YXJsX0NMcihNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnNhcmxfQ0xy
KE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgZW1pdEZhc3RBcml0aFBvdGVudGlh
bGx5UmVUYWdJbW1lZGlhdGUoTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICBlbWl0
UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgaSAr
PSA0OwpAQCAtOTM3LDcgKzkzNyw3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KCkKICAgICAgICAgY2FzZSBvcF9iaXRub3Q6IHsKICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5z
dHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAg
ICAgICBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgaSk7Ci0g
ICAgICAgICAgICBtX2ppdC5lbWl0WG9ybF9pOHIofkpTSW1tZWRpYXRlOjpUYWdCaXRUeXBlSW50
ZWdlciwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC54b3JsX2k4cih+
SlNJbW1lZGlhdGU6OlRhZ0JpdFR5cGVJbnRlZ2VyLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAg
ICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAg
ICAgICAgICAgICBpICs9IDM7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk2OCwxMCArOTY4LDEw
IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGVtaXRG
YXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZShNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAg
IGVtaXRGYXN0QXJpdGhEZVRhZ0ltbWVkaWF0ZShNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKICAgICAg
ICAgICAgIG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtl
ZEplKCksIGkpKTsgLy8gVGhpcyBpcyBjaGVja2luZyBpZiB0aGUgbGFzdCBkZXRhZyByZXN1bHRl
ZCBpbiBhIHZhbHVlIDAuCi0gICAgICAgICAgICBtX2ppdC5lbWl0Q2RxKCk7Ci0gICAgICAgICAg
ICBtX2ppdC5lbWl0SWRpdmxfcihNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIG1f
aml0LmNkcSgpOworICAgICAgICAgICAgbV9qaXQuaWRpdmxfcihNYWNyb0Fzc2VtYmxlcjo6ZWN4
KTsKICAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShNYWNyb0Fzc2VtYmxl
cjo6ZWR4KTsKLSAgICAgICAgICAgIG1faml0LmVtaXRNb3ZsX3JyKE1hY3JvQXNzZW1ibGVyOjpl
ZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQubW92bF9ycihNYWNy
b0Fzc2VtYmxlcjo6ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIGVtaXRQ
dXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBpICs9
IDQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTk4MCwxNCArOTgwLDE0IEBAIHZvaWQgQ1RJOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9IGlu
c3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3Ry
dWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogCi0gICAgICAg
ICAgICBtX2ppdC5lbWl0Q21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KEpTSW1t
ZWRpYXRlOjp6ZXJvSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAg
ICAgIG1faml0LmNtcGxfaTMycihyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihKU0ltbWVkaWF0
ZTo6emVyb0ltbWVkaWF0ZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGlzWmVybyA9IG1faml0LmVtaXRVbmxpbmtlZEplKCk7Ci0g
ICAgICAgICAgICBtX2ppdC5lbWl0VGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUlu
dGVnZXIsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQudGVzdGxfaTMy
cihKU0ltbWVkaWF0ZTo6VGFnQml0VHlwZUludGVnZXIsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwog
ICAgICAgICAgICAgbV9qbXBUYWJsZS5hcHBlbmQoSm1wVGFibGUobV9qaXQuZW1pdFVubGlua2Vk
Sm5lKCksIGkgKyAyICsgdGFyZ2V0KSk7CiAKLSAgICAgICAgICAgIG1faml0LmVtaXRDbXBsX2kz
MnIocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oSlNJbW1lZGlhdGU6OnRydWVJbW1lZGlhdGUo
KSksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KEpTSW1tZWRpYXRlOjp0cnVlSW1tZWRpYXRlKCkpLCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIG1fam1wVGFibGUuYXBwZW5kKEptcFRh
YmxlKG1faml0LmVtaXRVbmxpbmtlZEplKCksIGkgKyAyICsgdGFyZ2V0KSk7Ci0gICAgICAgICAg
ICBtX2ppdC5lbWl0Q21wbF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KEpTSW1tZWRp
YXRlOjpmYWxzZUltbWVkaWF0ZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAg
ICBtX2ppdC5jbXBsX2kzMnIocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oSlNJbW1lZGlhdGU6
OmZhbHNlSW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIG1f
c2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpuZSgpLCBp
KSk7CiAKICAgICAgICAgICAgIG1faml0LmxpbmsoaXNaZXJvLCBtX2ppdC5sYWJlbCgpKTsKQEAg
LTk5OSw5ICs5OTksOSBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIGNhc2Ugb3BfcG9zdF9kZWM6IHsKICAgICAgICAgICAgIGludCBzcmNEc3QgPSBpbnN0cnVj
dGlvbltpICsgMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgZW1pdEdldEFyZyhzcmNEc3QsIE1h
Y3JvQXNzZW1ibGVyOjplYXgpOwotICAgICAgICAgICAgbV9qaXQuZW1pdE1vdmxfcnIoTWFjcm9B
c3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7CisgICAgICAgICAgICBtX2ppdC5t
b3ZsX3JyKE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplZHgpOwogICAgICAg
ICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tKE1hY3JvQXNzZW1ibGVyOjplYXgsIGkpOwot
ICAgICAgICAgICAgbV9qaXQuZW1pdFN1YmxfaThyKGdldERlVGFnZ2VkQ29uc3RhbnRJbW1lZGlh
dGUoSlNJbW1lZGlhdGU6Om9uZUltbWVkaWF0ZSgpKSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCk7Cisg
ICAgICAgICAgICBtX2ppdC5zdWJsX2k4cihnZXREZVRhZ2dlZENvbnN0YW50SW1tZWRpYXRlKEpT
SW1tZWRpYXRlOjpvbmVJbW1lZGlhdGUoKSksIE1hY3JvQXNzZW1ibGVyOjplZHgpOwogICAgICAg
ICAgICAgbV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9qaXQuZW1pdFVubGlua2Vk
Sm8oKSwgaSkpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChzcmNEc3QsIE1hY3JvQXNzZW1i
bGVyOjplZHgpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0u
dS5vcGVyYW5kKTsKQEAgLTEwMTMsNyArMTAxMyw3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUu
b3BlcmFuZCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICBlbWl0R2V0QXJnKGlu
c3RydWN0aW9uW2kgKyAzXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplZHgpOwogICAgICAg
ICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SW1tcyhNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNy
b0Fzc2VtYmxlcjo6ZWR4LCBpKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRYb3JsX3JyKE1hY3Jv
QXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQu
eG9ybF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAg
ICAgICAgIGVtaXRGYXN0QXJpdGhSZVRhZ0ltbWVkaWF0ZShNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsK
ICAgICAgICAgICAgIGVtaXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICBpICs9IDQ7CkBAIC0xMDMxLDcgKzEwMzEsNyBAQCB2b2lkIENUSTo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9u
W2kgKyAyXS51Lm9wZXJhbmQsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgZW1p
dEdldEFyZyhpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4
KTsKICAgICAgICAgICAgIGVtaXRKdW1wU2xvd0Nhc2VJZk5vdEltbXMoTWFjcm9Bc3NlbWJsZXI6
OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVkeCwgaSk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0T3Js
X3JyKE1hY3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAg
ICAgbV9qaXQub3JsX3JyKE1hY3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgp
OwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIGkgKz0gNDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTA0NCwxMCAr
MTA0NCwxMCBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIGNh
c2Ugb3BfdGhyb3c6IHsKICAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSAr
IDFdLnUub3BlcmFuZCwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CiAgICAgICAgICAgICBlbWl0
Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfdGhyb3cpOwotICAgICAgICAgICAgbV9qaXQuZW1pdEFk
ZGxfaThyKDB4MjQsIE1hY3JvQXNzZW1ibGVyOjplc3ApOwotICAgICAgICAgICAgbV9qaXQuZW1p
dFBvcGxfcihNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRQb3Bs
X3IoTWFjcm9Bc3NlbWJsZXI6OmVzaSk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0UmV0KCk7Cisg
ICAgICAgICAgICBtX2ppdC5hZGRsX2k4cigweDI0LCBNYWNyb0Fzc2VtYmxlcjo6ZXNwKTsKKyAg
ICAgICAgICAgIG1faml0LnBvcGxfcihNYWNyb0Fzc2VtYmxlcjo6ZWRpKTsKKyAgICAgICAgICAg
IG1faml0LnBvcGxfcihNYWNyb0Fzc2VtYmxlcjo6ZXNpKTsKKyAgICAgICAgICAgIG1faml0LnJl
dCgpOwogICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
QEAgLTEwNjIsNyArMTA2Miw3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgICAgIGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwg
MCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSBp
bnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFj
aGluZTo6Y3RpX29wX25leHRfcG5hbWUpOwotICAgICAgICAgICAgbV9qaXQuZW1pdFRlc3RsX3Jy
KE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAg
bV9qaXQudGVzdGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGVuZE9mSXRlciA9IG1faml0LmVt
aXRVbmxpbmtlZEplKCk7CiAgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kg
KyAxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgbV9qbXBUYWJsZS5hcHBlbmQoSm1wVGFibGUo
bV9qaXQuZW1pdFVubGlua2VkSm1wKCksIGkgKyAzICsgdGFyZ2V0KSk7CkBAIC0xMTE3LDggKzEx
MTcsOCBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIGNhc2Ug
b3BfY2F0Y2g6IHsKICAgICAgICAgICAgIGVtaXRHZXRDVElQYXJhbShDVElfQVJHU19yLCBNYWNy
b0Fzc2VtYmxlcjo6ZWRpKTsgLy8gZWRpIDo9IHIKICAgICAgICAgICAgIGVtaXRHZXRDVElQYXJh
bShDVElfQVJHU19leGVjLCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKLSAgICAgICAgICAgIG1faml0
LmVtaXRNb3ZsX21yKE9CSkVDVF9PRkZTRVQoRXhlY1N0YXRlLCBtX2V4Y2VwdGlvbiksIE1hY3Jv
QXNzZW1ibGVyOjplY3gsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgICAgICAgICAgbV9qaXQu
ZW1pdE1vdmxfaTMybSgwLCBPQkpFQ1RfT0ZGU0VUKEV4ZWNTdGF0ZSwgbV9leGNlcHRpb24pLCBN
YWNyb0Fzc2VtYmxlcjo6ZWN4KTsKKyAgICAgICAgICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09G
RlNFVChFeGVjU3RhdGUsIG1fZXhjZXB0aW9uKSwgTWFjcm9Bc3NlbWJsZXI6OmVjeCwgTWFjcm9B
c3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX2kzMm0oMCwgT0JKRUNUX09G
RlNFVChFeGVjU3RhdGUsIG1fZXhjZXB0aW9uKSwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CiAgICAg
ICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOwogICAg
ICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMTUzLDcgKzExNTMsNyBA
QCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBlbWl0R2V0
UHV0QXJnKHNjcnV0aW5lZSwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CiAgICAgICAgICAgICBl
bWl0UHV0QXJnQ29uc3RhbnQodGFibGVJbmRleCwgNCk7CiAgICAgICAgICAgICBlbWl0Q2FsbChp
LCBNYWNoaW5lOjpjdGlfb3Bfc3dpdGNoX2ltbSk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0Sm1w
Tl9yKE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQuam1wX3IoTWFjcm9B
c3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICBpICs9IDQ7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQpAQCAtMTE3MCw3ICsxMTcwLDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhzY3J1dGluZWUsIDAsIE1hY3Jv
QXNzZW1ibGVyOjplY3gpOwogICAgICAgICAgICAgZW1pdFB1dEFyZ0NvbnN0YW50KHRhYmxlSW5k
ZXgsIDQpOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3N3aXRjaF9j
aGFyKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRKbXBOX3IoTWFjcm9Bc3NlbWJsZXI6OmVheCk7
CisgICAgICAgICAgICBtX2ppdC5qbXBfcihNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAg
ICAgIGkgKz0gNDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTg2LDcgKzEx
ODYsNyBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgICAgICBl
bWl0R2V0UHV0QXJnKHNjcnV0aW5lZSwgMCwgTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CiAgICAgICAg
ICAgICBlbWl0UHV0QXJnQ29uc3RhbnQodGFibGVJbmRleCwgNCk7CiAgICAgICAgICAgICBlbWl0
Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3Bfc3dpdGNoX3N0cmluZyk7Ci0gICAgICAgICAgICBtX2pp
dC5lbWl0Sm1wTl9yKE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQuam1w
X3IoTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICBpICs9IDQ7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMTI4NSw3ICsxMjg1LDcgQEAgdm9pZCBDVEk6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgICAgICBpZiAoSlNJbW1lZGlhdGU6Omlz
TnVtYmVyKHZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1w
U3JjIG5vdEltbSA9IGl0ZXItPmZyb207CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lmxpbmso
KCsraXRlciktPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAgICAgICAgICAgICAgICAgICBtX2pp
dC5lbWl0U3VibF9pMzJyKGdldERlVGFnZ2VkQ29uc3RhbnRJbW1lZGlhdGUodmFsdWUpLCBNYWNy
b0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3VibF9pMzJyKGdl
dERlVGFnZ2VkQ29uc3RhbnRJbW1lZGlhdGUodmFsdWUpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsK
ICAgICAgICAgICAgICAgICAgICAgbV9qaXQubGluayhub3RJbW0sIG1faml0LmxhYmVsKCkpOwog
ICAgICAgICAgICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOwog
ICAgICAgICAgICAgICAgICAgICBlbWl0R2V0UHV0QXJnKHNyYzIsIDQsIE1hY3JvQXNzZW1ibGVy
OjplY3gpOwpAQCAtMTMwMCw3ICsxMzAwLDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKIAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBub3RJbW0gPSBp
dGVyLT5mcm9tOwogICAgICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQu
bGFiZWwoKSk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0U3VibF9ycihNYWNyb0Fzc2VtYmxlcjo6
ZWR4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnN1YmxfcnIoTWFj
cm9Bc3NlbWJsZXI6OmVkeCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICBlbWl0
RmFzdEFyaXRoUmVUYWdJbW1lZGlhdGUoTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAg
ICBtX2ppdC5saW5rKG5vdEltbSwgbV9qaXQubGFiZWwoKSk7CiAgICAgICAgICAgICBlbWl0UHV0
QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOwpAQCAtMTMyNyw3ICsxMzI3LDcgQEAgdm9pZCBD
VEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgY2FzZSBvcF9zdWI6IHsKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgbm90SW1tID0gaXRlci0+ZnJvbTsKICAg
ICAgICAgICAgIG1faml0LmxpbmsoKCsraXRlciktPmZyb20sIG1faml0LmxhYmVsKCkpOwotICAg
ICAgICAgICAgbV9qaXQuZW1pdEFkZGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5hZGRsX3JyKE1hY3JvQXNzZW1ibGVyOjpl
ZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgbV9qaXQubGluayhub3RJbW0s
IG1faml0LmxhYmVsKCkpOwogICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6
ZWF4LCAwKTsKICAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgNCk7
CkBAIC0xMzcxLDcgKzEzNzEsNyBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgICAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgMCk7CiAg
ICAgICAgICAgICAgICAgZW1pdEdldFB1dEFyZyhpbnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5k
LCA0LCBNYWNyb0Fzc2VtYmxlcjo6ZWN4KTsKICAgICAgICAgICAgICAgICBlbWl0Q2FsbChpLCBN
YWNoaW5lOjpjdGlfb3BfbG9vcF9pZl9sZXNzKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5lbWl0
VGVzdGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAg
ICAgICAgICAgICAgbV9qaXQudGVzdGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CiAgICAgICAgICAgICAgICAgbV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5r
ZWRKbmUoKSwgbV9sYWJlbHNbaSArIDMgKyB0YXJnZXRdKTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgbV9qaXQubGluayhpdGVyLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsK
QEAgLTEzNzksNyArMTM3OSw3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygp
CiAgICAgICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWF4LCAwKTsKICAg
ICAgICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplZHgsIDQpOwogICAgICAg
ICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9sb29wX2lmX2xlc3MpOwotICAg
ICAgICAgICAgICAgIG1faml0LmVtaXRUZXN0bF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNy
b0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgICAgICBtX2ppdC50ZXN0bF9ycihNYWNyb0Fz
c2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgICAgICBtX2pp
dC5saW5rKG1faml0LmVtaXRVbmxpbmtlZEpuZSgpLCBtX2xhYmVsc1tpICsgMyArIHRhcmdldF0p
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaSArPSA0OwpAQCAtMTM4OSw3ICsxMzg5LDcg
QEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgIHVuc2ln
bmVkIHNyY0RzdCA9IGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIG5vdEltbSA9IGl0ZXItPmZyb207CiAgICAgICAgICAgICBt
X2ppdC5saW5rKCgrK2l0ZXIpLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAgICAgICAgIG1f
aml0LmVtaXRTdWJsX2k4cihnZXREZVRhZ2dlZENvbnN0YW50SW1tZWRpYXRlKEpTSW1tZWRpYXRl
OjpvbmVJbW1lZGlhdGUoKSksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgICAgICAgICAgbV9q
aXQuc3VibF9pOHIoZ2V0RGVUYWdnZWRDb25zdGFudEltbWVkaWF0ZShKU0ltbWVkaWF0ZTo6b25l
SW1tZWRpYXRlKCkpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIG1faml0Lmxp
bmsobm90SW1tLCBtX2ppdC5sYWJlbCgpKTsKICAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9B
c3NlbWJsZXI6OmVheCwgMCk7CiAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlf
b3BfcHJlX2luYyk7CkBAIC0xNDE3LDcgKzE0MTcsNyBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBp
bGVTbG93Q2FzZXMoKQogICAgICAgICAgICAgbV9qaXQubGluayhpdGVyLT5mcm9tLCBtX2ppdC5s
YWJlbCgpKTsKICAgICAgICAgICAgIGVtaXRQdXRBcmcoTWFjcm9Bc3NlbWJsZXI6OmVheCwgMCk7
CiAgICAgICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfanRydWUpOwotICAgICAg
ICAgICAgbV9qaXQuZW1pdFRlc3RsX3JyKE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1i
bGVyOjplYXgpOworICAgICAgICAgICAgbV9qaXQudGVzdGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVh
eCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAgICAgICB1bnNpZ25lZCB0YXJnZXQgPSBp
bnN0cnVjdGlvbltpICsgMl0udS5vcGVyYW5kOwogICAgICAgICAgICAgbV9qaXQubGluayhtX2pp
dC5lbWl0VW5saW5rZWRKbmUoKSwgbV9sYWJlbHNbaSArIDIgKyB0YXJnZXRdKTsKICAgICAgICAg
ICAgIGkgKz0gMzsKQEAgLTE0MjcsNyArMTQyNyw3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgICAgICB1bnNpZ25lZCBzcmNEc3QgPSBpbnN0cnVjdGlvbltp
ICsgMV0udS5vcGVyYW5kOwogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBub3RJ
bW0gPSBpdGVyLT5mcm9tOwogICAgICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwg
bV9qaXQubGFiZWwoKSk7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0QWRkbF9pOHIoZ2V0RGVUYWdn
ZWRDb25zdGFudEltbWVkaWF0ZShKU0ltbWVkaWF0ZTo6b25lSW1tZWRpYXRlKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LmFkZGxfaThyKGdldERlVGFnZ2VkQ29u
c3RhbnRJbW1lZGlhdGUoSlNJbW1lZGlhdGU6Om9uZUltbWVkaWF0ZSgpKSwgTWFjcm9Bc3NlbWJs
ZXI6OmVheCk7CiAgICAgICAgICAgICBtX2ppdC5saW5rKG5vdEltbSwgbV9qaXQubGFiZWwoKSk7
CiAgICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOwogICAgICAg
ICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3ByZV9kZWMpOwpAQCAtMTQ0Myw3ICsx
NDQzLDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAg
ICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplZHgsIDApOwogICAgICAgICAgICAgICAg
IGVtaXRHZXRQdXRBcmcoaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZCwgNCwgTWFjcm9Bc3Nl
bWJsZXI6OmVjeCk7CiAgICAgICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29w
X2psZXNzKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5lbWl0VGVzdGxfcnIoTWFjcm9Bc3NlbWJs
ZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAgICAgICAgbV9qaXQudGVz
dGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgICAg
ICAgICAgICAgbV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5rZWRKZSgpLCBtX2xhYmVsc1tpICsg
MyArIHRhcmdldF0pOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBtX2pp
dC5saW5rKGl0ZXItPmZyb20sIG1faml0LmxhYmVsKCkpOwpAQCAtMTQ1MSw3ICsxNDUxLDcgQEAg
dm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgICAgICBlbWl0
UHV0QXJnKE1hY3JvQXNzZW1ibGVyOjplYXgsIDApOwogICAgICAgICAgICAgICAgIGVtaXRQdXRB
cmcoTWFjcm9Bc3NlbWJsZXI6OmVkeCwgNCk7CiAgICAgICAgICAgICAgICAgZW1pdENhbGwoaSwg
TWFjaGluZTo6Y3RpX29wX2psZXNzKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5lbWl0VGVzdGxf
cnIoTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgICAgICAg
ICAgICAgbV9qaXQudGVzdGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6
OmVheCk7CiAgICAgICAgICAgICAgICAgbV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5rZWRKZSgp
LCBtX2xhYmVsc1tpICsgMyArIHRhcmdldF0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aSArPSA0OwpAQCAtMTQ1OSw3ICsxNDU5LDcgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX25vdDogewogICAgICAgICAgICAg
bV9qaXQubGluayhpdGVyLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKLSAgICAgICAgICAgIG1faml0
LmVtaXRYb3JsX2k4cihKU0ltbWVkaWF0ZTo6RnVsbFRhZ1R5cGVCb29sLCBNYWNyb0Fzc2VtYmxl
cjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnhvcmxfaThyKEpTSW1tZWRpYXRlOjpGdWxsVGFn
VHlwZUJvb2wsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgZW1pdFB1dEFyZyhN
YWNyb0Fzc2VtYmxlcjo6ZWF4LCAwKTsKICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6
OmN0aV9vcF9ub3QpOwogICAgICAgICAgICAgZW1pdFB1dFJlc3VsdChpbnN0cnVjdGlvbltpICsg
MV0udS5vcGVyYW5kKTsKQEAgLTE0NzAsNyArMTQ3MCw3IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAgICBtX2ppdC5saW5rKGl0ZXItPmZyb20sIG1faml0
LmxhYmVsKCkpOwogICAgICAgICAgICAgZW1pdFB1dEFyZyhNYWNyb0Fzc2VtYmxlcjo6ZWF4LCAw
KTsKICAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9qdHJ1ZSk7Ci0gICAg
ICAgICAgICBtX2ppdC5lbWl0VGVzdGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CisgICAgICAgICAgICBtX2ppdC50ZXN0bF9ycihNYWNyb0Fzc2VtYmxlcjo6
ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAgICAgICAgIHVuc2lnbmVkIHRhcmdldCA9
IGluc3RydWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICBtX2ppdC5saW5rKG1f
aml0LmVtaXRVbmxpbmtlZEplKCksIG1fbGFiZWxzW2kgKyAyICsgdGFyZ2V0XSk7IC8vIGludmVy
dGVkIQogICAgICAgICAgICAgaSArPSAzOwpAQCAtMTUyNiw3ICsxNTI2LDcgQEAgdm9pZCBDVEk6
OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgIG1faml0LmxpbmsoaXRlci0+
ZnJvbSwgbV9qaXQubGFiZWwoKSk7CiAgICAgICAgICAgICBlbWl0UHV0QXJnKE1hY3JvQXNzZW1i
bGVyOjplYXgsIDApOwogICAgICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX2p0
cnVlKTsKLSAgICAgICAgICAgIG1faml0LmVtaXRUZXN0bF9ycihNYWNyb0Fzc2VtYmxlcjo6ZWF4
LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICAgICAgICAgIG1faml0LnRlc3RsX3JyKE1hY3Jv
QXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgICAgICAgICAgdW5zaWdu
ZWQgdGFyZ2V0ID0gaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZDsKICAgICAgICAgICAgIG1f
aml0LmxpbmsobV9qaXQuZW1pdFVubGlua2VkSm5lKCksIG1fbGFiZWxzW2kgKyAyICsgdGFyZ2V0
XSk7CiAgICAgICAgICAgICBpICs9IDM7CkBAIC0xNTg4LDggKzE1ODgsOCBAQCB2b2lkIENUSTo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGUoKQog
ewotICAgIC8vIENvdWxkIHVzZSBhIGVtaXRQb3BsX20sIGJ1dCB3b3VsZCBuZWVkIHRvIG9mZnNl
dCB0aGUgZm9sbG93aW5nIGluc3RydWN0aW9uIGlmIHNvLgotICAgIG1faml0LmVtaXRQb3BsX3Io
TWFjcm9Bc3NlbWJsZXI6OmVjeCk7CisgICAgLy8gQ291bGQgdXNlIGEgcG9wbF9tLCBidXQgd291
bGQgbmVlZCB0byBvZmZzZXQgdGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbiBpZiBzby4KKyAgICBt
X2ppdC5wb3BsX3IoTWFjcm9Bc3NlbWJsZXI6OmVjeCk7CiAgICAgZW1pdEdldENUSVBhcmFtKENU
SV9BUkdTX3IsIE1hY3JvQXNzZW1ibGVyOjplZGkpOyAvLyBlZGkgOj0gcgogICAgIGVtaXRQdXRU
b0NhbGxGcmFtZUhlYWRlcihNYWNyb0Fzc2VtYmxlcjo6ZWN4LCBSZWdpc3RlckZpbGU6OkNUSVJl
dHVybkVJUCk7CiAKQEAgLTE2NTEsMTUgKzE2NTEsMTUgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21w
aWxlKCkKIHZvaWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZihTdHJ1Y3R1cmVJRCog
c3RydWN0dXJlSUQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCiB7CiAgICAgLy8gQ2hlY2sgZWF4IGlz
IGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlSUQuCi0gICAgbV9qaXQuZW1pdFRlc3Rs
X2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1f
aml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIE1hY3JvQXNzZW1ibGVyOjplYXgp
OwogICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgZmFpbHVyZUNhc2VzMSA9IG1faml0LmVtaXRV
bmxpbmtlZEpuZSgpOwotICAgIG1faml0LmVtaXRDbXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1
aW50MzJfdD4oc3RydWN0dXJlSUQpLCBPQkpFQ1RfT0ZGU0VUKEpTQ2VsbCwgbV9zdHJ1Y3R1cmVJ
RCksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0LmNtcGxfaTMybShyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVJRCksIE9CSkVDVF9PRkZTRVQoSlNDZWxsLCBtX3N0
cnVjdHVyZUlEKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okpt
cFNyYyBmYWlsdXJlQ2FzZXMyID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7CiAKICAgICAvLyBD
aGVja3Mgb3V0IG9rYXkhIC0gZ2V0RGlyZWN0T2Zmc2V0Ci0gICAgbV9qaXQuZW1pdE1vdmxfbXIo
T0JKRUNUX09GRlNFVChKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpLCBNYWNyb0Fzc2VtYmxl
cjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICBtX2ppdC5lbWl0TW92bF9tcihjYWNo
ZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSopLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4KTsKLSAgICBtX2ppdC5lbWl0UmV0KCk7CisgICAgbV9qaXQubW92bF9tcihP
QkpFQ1RfT0ZGU0VUKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSksIE1hY3JvQXNzZW1ibGVy
OjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0Lm1vdmxfbXIoY2FjaGVkT2Zm
c2V0ICogc2l6ZW9mKEpTVmFsdWUqKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJs
ZXI6OmVheCk7CisgICAgbV9qaXQucmV0KCk7CiAKICAgICB2b2lkKiBjb2RlID0gbV9qaXQuY29w
eSgpOwogICAgIEFTU0VSVChjb2RlKTsKQEAgLTE2NzgsMjMgKzE2NzgsMjMgQEAgdm9pZCogQ1RJ
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdAogICAgIC8vIHJlZmVyZW5jaW5nIHRoZSBw
cm90b3R5cGUgb2JqZWN0IC0gbGV0J3Mgc3BlY3VsYXRpdmVseSBsb2FkIGl0J3MgdGFibGUgbmlj
ZSBhbmQgZWFybHkhKQogICAgIEpTT2JqZWN0KiBwcm90b09iamVjdCA9IHN0YXRpY19jYXN0PEpT
T2JqZWN0Kj4oc3RydWN0dXJlSUQtPnByb3RvdHlwZSgpKTsKICAgICBPd25BcnJheVB0cjxKU1Zh
bHVlKj4qIHByb3RvUHJvcGVydHlTdG9yYWdlID0gJnByb3RvT2JqZWN0LT5tX3Byb3BlcnR5U3Rv
cmFnZTsKLSAgICBtX2ppdC5lbWl0TW92bF9tcihzdGF0aWNfY2FzdDx2b2lkKj4ocHJvdG9Qcm9w
ZXJ0eVN0b3JhZ2UpLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKKyAgICBtX2ppdC5tb3ZsX21yKHN0
YXRpY19jYXN0PHZvaWQqPihwcm90b1Byb3BlcnR5U3RvcmFnZSksIE1hY3JvQXNzZW1ibGVyOjpl
ZHgpOwogCiAgICAgLy8gY2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0
dXJlSUQuCi0gICAgbV9qaXQuZW1pdFRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIE1h
Y3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRh
Z01hc2ssIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMg
ZmFpbHVyZUNhc2VzMSA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOwotICAgIG1faml0LmVtaXRD
bXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdD4oc3RydWN0dXJlSUQpLCBPQkpFQ1Rf
T0ZGU0VUKEpTQ2VsbCwgbV9zdHJ1Y3R1cmVJRCksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAg
IG1faml0LmNtcGxfaTMybShyZWludGVycHJldF9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVJRCks
IE9CSkVDVF9PRkZTRVQoSlNDZWxsLCBtX3N0cnVjdHVyZUlEKSwgTWFjcm9Bc3NlbWJsZXI6OmVh
eCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBmYWlsdXJlQ2FzZXMyID0gbV9qaXQuZW1p
dFVubGlua2VkSm5lKCk7CiAKICAgICAvLyBDaGVjayB0aGUgcHJvdG90eXBlIG9iamVjdCdzIFN0
cnVjdHVyZUlEIGhhZCBub3QgY2hhbmdlZC4KICAgICBTdHJ1Y3R1cmVJRCoqIHByb3RvU3RydWN0
dXJlSURBZGRyZXNzID0gJihwcm90b09iamVjdC0+bV9zdHJ1Y3R1cmVJRCk7Ci0gICAgbV9qaXQu
ZW1pdENtcGxfaTMybShyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pihwcm90b3R5cGVTdHJ1Y3R1
cmVJRCksIHN0YXRpY19jYXN0PHZvaWQqPihwcm90b1N0cnVjdHVyZUlEQWRkcmVzcykpOworICAg
IG1faml0LmNtcGxfaTMybShyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pihwcm90b3R5cGVTdHJ1
Y3R1cmVJRCksIHN0YXRpY19jYXN0PHZvaWQqPihwcm90b1N0cnVjdHVyZUlEQWRkcmVzcykpOwog
ICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgZmFpbHVyZUNhc2VzMyA9IG1faml0LmVtaXRVbmxp
bmtlZEpuZSgpOwogCiAgICAgLy8gQ2hlY2tzIG91dCBva2F5ISAtIGdldERpcmVjdE9mZnNldAot
ICAgIG1faml0LmVtaXRNb3ZsX21yKGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKiksIE1h
Y3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0Lm1vdmxf
bXIoY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUqKSwgTWFjcm9Bc3NlbWJsZXI6OmVkeCwg
TWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAKLSAgICBtX2ppdC5lbWl0UmV0KCk7CisgICAgbV9qaXQu
cmV0KCk7CiAKICAgICB2b2lkKiBjb2RlID0gbV9qaXQuY29weSgpOwogICAgIEFTU0VSVChjb2Rl
KTsKQEAgLTE3MTUsOSArMTcxNSw5IEBAIHZvaWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlk
Q2hhaW4oU3QKICAgICBWZWN0b3I8TWFjcm9Bc3NlbWJsZXI6OkptcFNyYz4gYnVja2V0c09mRmFp
bDsKIAogICAgIC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVy
ZUlELgotICAgIG1faml0LmVtaXRUZXN0bF9pMzJyKEpTSW1tZWRpYXRlOjpUYWdNYXNrLCBNYWNy
b0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC50ZXN0bF9pMzJyKEpTSW1tZWRpYXRlOjpUYWdN
YXNrLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICBidWNrZXRzT2ZGYWlsLmFwcGVuZChtX2pp
dC5lbWl0VW5saW5rZWRKbmUoKSk7Ci0gICAgbV9qaXQuZW1pdENtcGxfaTMybShyZWludGVycHJl
dF9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVJRCksIE9CSkVDVF9PRkZTRVQoSlNDZWxsLCBtX3N0
cnVjdHVyZUlEKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgbV9qaXQuY21wbF9pMzJtKHJl
aW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+KHN0cnVjdHVyZUlEKSwgT0JKRUNUX09GRlNFVChKU0Nl
bGwsIG1fc3RydWN0dXJlSUQpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICBidWNrZXRzT2ZG
YWlsLmFwcGVuZChtX2ppdC5lbWl0VW5saW5rZWRKbmUoKSk7CiAKICAgICBTdHJ1Y3R1cmVJRCog
Y3VyclN0cnVjdHVyZUlEID0gc3RydWN0dXJlSUQ7CkBAIC0xNzI5LDE1ICsxNzI5LDE1IEBAIHZv
aWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oU3QKIAogICAgICAgICAvLyBDaGVj
ayB0aGUgcHJvdG90eXBlIG9iamVjdCdzIFN0cnVjdHVyZUlEIGhhZCBub3QgY2hhbmdlZC4KICAg
ICAgICAgU3RydWN0dXJlSUQqKiBwcm90b1N0cnVjdHVyZUlEQWRkcmVzcyA9ICYocHJvdG9PYmpl
Y3QtPm1fc3RydWN0dXJlSUQpOwotICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJtKHJlaW50ZXJw
cmV0X2Nhc3Q8dWludDMyX3Q+KGN1cnJTdHJ1Y3R1cmVJRCksIHN0YXRpY19jYXN0PHZvaWQqPihw
cm90b1N0cnVjdHVyZUlEQWRkcmVzcykpOworICAgICAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRl
cnByZXRfY2FzdDx1aW50MzJfdD4oY3VyclN0cnVjdHVyZUlEKSwgc3RhdGljX2Nhc3Q8dm9pZCo+
KHByb3RvU3RydWN0dXJlSURBZGRyZXNzKSk7CiAgICAgICAgIGJ1Y2tldHNPZkZhaWwuYXBwZW5k
KG1faml0LmVtaXRVbmxpbmtlZEpuZSgpKTsKICAgICB9CiAgICAgQVNTRVJUKHByb3RvT2JqZWN0
KTsKICAKICAgICBPd25BcnJheVB0cjxKU1ZhbHVlKj4qIHByb3RvUHJvcGVydHlTdG9yYWdlID0g
JnN0YXRpY19jYXN0PEpTT2JqZWN0Kj4ocHJvdG9PYmplY3QpLT5tX3Byb3BlcnR5U3RvcmFnZTsK
LSAgICBtX2ppdC5lbWl0TW92bF9tcihzdGF0aWNfY2FzdDx2b2lkKj4ocHJvdG9Qcm9wZXJ0eVN0
b3JhZ2UpLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4KTsKLSAgICBtX2ppdC5lbWl0TW92bF9tcihjYWNo
ZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSopLCBNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBNYWNyb0Fz
c2VtYmxlcjo6ZWF4KTsKLSAgICBtX2ppdC5lbWl0UmV0KCk7CisgICAgbV9qaXQubW92bF9tcihz
dGF0aWNfY2FzdDx2b2lkKj4ocHJvdG9Qcm9wZXJ0eVN0b3JhZ2UpLCBNYWNyb0Fzc2VtYmxlcjo6
ZWR4KTsKKyAgICBtX2ppdC5tb3ZsX21yKGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKiks
IE1hY3JvQXNzZW1ibGVyOjplZHgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0LnJl
dCgpOwogCiAgICAgYnVja2V0c09mRmFpbC5hcHBlbmQobV9qaXQuZW1pdFVubGlua2VkSm1wKCkp
OwogCkBAIC0xNzUzLDE1ICsxNzUzLDE1IEBAIHZvaWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVHZXRC
eUlkQ2hhaW4oU3QKIHZvaWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkUmVwbGFjZShTdHJ1
Y3R1cmVJRCogc3RydWN0dXJlSUQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCiB7CiAgICAgLy8gY2hl
Y2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlSUQuCi0gICAgbV9qaXQu
ZW1pdFRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIE1hY3JvQXNzZW1ibGVyOjplYXgp
OworICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIE1hY3JvQXNzZW1i
bGVyOjplYXgpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKbXBTcmMgZmFpbHVyZUNhc2VzMSA9IG1f
aml0LmVtaXRVbmxpbmtlZEpuZSgpOwotICAgIG1faml0LmVtaXRDbXBsX2kzMm0ocmVpbnRlcnBy
ZXRfY2FzdDx1aW50MzJfdD4oc3RydWN0dXJlSUQpLCBPQkpFQ1RfT0ZGU0VUKEpTQ2VsbCwgbV9z
dHJ1Y3R1cmVJRCksIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0LmNtcGxfaTMybShy
ZWludGVycHJldF9jYXN0PHVpbnQzMl90PihzdHJ1Y3R1cmVJRCksIE9CSkVDVF9PRkZTRVQoSlND
ZWxsLCBtX3N0cnVjdHVyZUlEKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgTWFjcm9Bc3Nl
bWJsZXI6OkptcFNyYyBmYWlsdXJlQ2FzZXMyID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7CiAK
ICAgICAvLyBjaGVja3Mgb3V0IG9rYXkhIC0gcHV0RGlyZWN0T2Zmc2V0Ci0gICAgbV9qaXQuZW1p
dE1vdmxfbXIoT0JKRUNUX09GRlNFVChKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpLCBNYWNy
b0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICBtX2ppdC5lbWl0TW92
bF9ybShNYWNyb0Fzc2VtYmxlcjo6ZWR4LCBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSop
LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICBtX2ppdC5lbWl0UmV0KCk7CisgICAgbV9qaXQu
bW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTT2JqZWN0LCBtX3Byb3BlcnR5U3RvcmFnZSksIE1hY3Jv
QXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0Lm1vdmxfcm0o
TWFjcm9Bc3NlbWJsZXI6OmVkeCwgY2FjaGVkT2Zmc2V0ICogc2l6ZW9mKEpTVmFsdWUqKSwgTWFj
cm9Bc3NlbWJsZXI6OmVheCk7CisgICAgbV9qaXQucmV0KCk7CiAKICAgICB2b2lkKiBjb2RlID0g
bV9qaXQuY29weSgpOwogICAgIEFTU0VSVChjb2RlKTsKQEAgLTE3NzcsMjAgKzE3NzcsMjAgQEAg
dm9pZCogQ1RJOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRSZXBsYWNlKAogdm9pZCogQ1RJOjpwcml2
YXRlQXJyYXlMZW5ndGhUcmFtcG9saW5lKCkKIHsKICAgICAvLyBDaGVjayBlYXggaXMgYW4gYXJy
YXkKLSAgICBtX2ppdC5lbWl0VGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywgTWFjcm9B
c3NlbWJsZXI6OmVheCk7CisgICAgbV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFz
aywgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBmYWls
dXJlQ2FzZXMxID0gbV9qaXQuZW1pdFVubGlua2VkSm5lKCk7Ci0gICAgbV9qaXQuZW1pdENtcGxf
aTMybShyZWludGVycHJldF9jYXN0PHVuc2lnbmVkPihtX21hY2hpbmUtPm1fanNBcnJheVZwdHIp
LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRf
Y2FzdDx1bnNpZ25lZD4obV9tYWNoaW5lLT5tX2pzQXJyYXlWcHRyKSwgTWFjcm9Bc3NlbWJsZXI6
OmVheCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBmYWlsdXJlQ2FzZXMyID0gbV9qaXQu
ZW1pdFVubGlua2VkSm5lKCk7CiAKICAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0IHRoZSBs
ZW5ndGggZnJvbSB0aGUgc3RvcmFnZQotICAgIG1faml0LmVtaXRNb3ZsX21yKE9CSkVDVF9PRkZT
RVQoSlNBcnJheSwgbV9zdG9yYWdlKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJs
ZXI6OmVheCk7Ci0gICAgbV9qaXQuZW1pdE1vdmxfbXIoT0JKRUNUX09GRlNFVChBcnJheVN0b3Jh
Z2UsIG1fbGVuZ3RoKSwgTWFjcm9Bc3NlbWJsZXI6OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7
CisgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTQXJyYXksIG1fc3RvcmFnZSksIE1h
Y3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0Lm1vdmxf
bXIoT0JKRUNUX09GRlNFVChBcnJheVN0b3JhZ2UsIG1fbGVuZ3RoKSwgTWFjcm9Bc3NlbWJsZXI6
OmVheCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CiAKLSAgICBtX2ppdC5lbWl0QWRkbF9ycihNYWNy
b0Fzc2VtYmxlcjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC5hZGRsX3Jy
KE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgIE1hY3JvQXNz
ZW1ibGVyOjpKbXBTcmMgZmFpbHVyZUNhc2VzMyA9IG1faml0LmVtaXRVbmxpbmtlZEpvKCk7Ci0g
ICAgbV9qaXQuZW1pdEFkZGxfaThyKDEsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0
LmFkZGxfaThyKDEsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwogICAgIAotICAgIG1faml0LmVtaXRS
ZXQoKTsKKyAgICBtX2ppdC5yZXQoKTsKIAogICAgIHZvaWQqIGNvZGUgPSBtX2ppdC5jb3B5KCk7
CiAgICAgQVNTRVJUKGNvZGUpOwpAQCAtMTgwNSwyMCArMTgwNSwyMCBAQCB2b2lkKiBDVEk6OnBy
aXZhdGVBcnJheUxlbmd0aFRyYW1wb2xpbmUoCiB2b2lkKiBDVEk6OnByaXZhdGVTdHJpbmdMZW5n
dGhUcmFtcG9saW5lKCkKIHsKICAgICAvLyBDaGVjayBlYXggaXMgYSBzdHJpbmcKLSAgICBtX2pp
dC5lbWl0VGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywgTWFjcm9Bc3NlbWJsZXI6OmVh
eCk7CisgICAgbV9qaXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6OkptcFNyYyBmYWlsdXJlQ2FzZXMxID0g
bV9qaXQuZW1pdFVubGlua2VkSm5lKCk7Ci0gICAgbV9qaXQuZW1pdENtcGxfaTMybShyZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkPihtX21hY2hpbmUtPm1fanNTdHJpbmdWcHRyKSwgTWFjcm9Bc3Nl
bWJsZXI6OmVheCk7CisgICAgbV9qaXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQ+KG1fbWFjaGluZS0+bV9qc1N0cmluZ1ZwdHIpLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAg
ICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVDYXNlczIgPSBtX2ppdC5lbWl0VW5saW5r
ZWRKbmUoKTsKIAogICAgIC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXQgdGhlIGxlbmd0aCBmcm9t
IHRoZSBVc3RyaW5nLgotICAgIG1faml0LmVtaXRNb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNTdHJp
bmcsIG1fdmFsdWUpICsgT0JKRUNUX09GRlNFVChVU3RyaW5nLCBtX3JlcCksIE1hY3JvQXNzZW1i
bGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOwotICAgIG1faml0LmVtaXRNb3ZsX21yKE9C
SkVDVF9PRkZTRVQoVVN0cmluZzo6UmVwLCBsZW4pLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4LCBNYWNy
b0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNTdHJp
bmcsIG1fdmFsdWUpICsgT0JKRUNUX09GRlNFVChVU3RyaW5nLCBtX3JlcCksIE1hY3JvQXNzZW1i
bGVyOjplYXgsIE1hY3JvQXNzZW1ibGVyOjplYXgpOworICAgIG1faml0Lm1vdmxfbXIoT0JKRUNU
X09GRlNFVChVU3RyaW5nOjpSZXAsIGxlbiksIE1hY3JvQXNzZW1ibGVyOjplYXgsIE1hY3JvQXNz
ZW1ibGVyOjplYXgpOwogCi0gICAgbV9qaXQuZW1pdEFkZGxfcnIoTWFjcm9Bc3NlbWJsZXI6OmVh
eCwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgbV9qaXQuYWRkbF9ycihNYWNyb0Fzc2VtYmxl
cjo6ZWF4LCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6Sm1wU3Jj
IGZhaWx1cmVDYXNlczMgPSBtX2ppdC5lbWl0VW5saW5rZWRKbygpOwotICAgIG1faml0LmVtaXRB
ZGRsX2k4cigxLCBNYWNyb0Fzc2VtYmxlcjo6ZWF4KTsKKyAgICBtX2ppdC5hZGRsX2k4cigxLCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4KTsKICAgICAKLSAgICBtX2ppdC5lbWl0UmV0KCk7CisgICAgbV9q
aXQucmV0KCk7CiAKICAgICB2b2lkKiBjb2RlID0gbV9qaXQuY29weSgpOwogICAgIEFTU0VSVChj
b2RlKTsKQEAgLTE4NDYsMTIgKzE4NDYsMTIgQEAgdm9pZCogQ1RJOjpjb21waWxlUmVnRXhwKEV4
ZWNTdGF0ZSogZXhlYwogICAgIGppdC5lbWl0Q29udmVydFRvRmFzdENhbGwoKTsKICAgICAvLyAo
MCkgU2V0dXA6CiAgICAgLy8gICAgIFByZXNlcnZlIHJlZ3MgJiBpbml0aWFsaXplIG91dHB1dFJl
Z2lzdGVyLgotICAgIGppdC5lbWl0UHVzaGxfcihXUkVDR2VuZXJhdG9yOjpvdXRwdXRSZWdpc3Rl
cik7Ci0gICAgaml0LmVtaXRQdXNobF9yKFdSRUNHZW5lcmF0b3I6OmN1cnJlbnRWYWx1ZVJlZ2lz
dGVyKTsKKyAgICBqaXQucHVzaGxfcihXUkVDR2VuZXJhdG9yOjpvdXRwdXRSZWdpc3Rlcik7Cisg
ICAgaml0LnB1c2hsX3IoV1JFQ0dlbmVyYXRvcjo6Y3VycmVudFZhbHVlUmVnaXN0ZXIpOwogICAg
IC8vIHB1c2ggcG9zIG9udG8gdGhlIHN0YWNrLCBib3RoIHRvIHByZXNlcnZlIGFuZCBhcyBhIHBh
cmFtZXRlciBhdmFpbGFibGUgdG8gcGFyc2VEaXNqdW5jdGlvbgotICAgIGppdC5lbWl0UHVzaGxf
cihXUkVDR2VuZXJhdG9yOjpjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgaml0LnB1c2hs
X3IoV1JFQ0dlbmVyYXRvcjo6Y3VycmVudFBvc2l0aW9uUmVnaXN0ZXIpOwogICAgIC8vIGxvYWQg
b3V0cHV0IHBvaW50ZXIKLSAgICBqaXQuZW1pdE1vdmxfbXIoMTYKKyAgICBqaXQubW92bF9tcigx
NgogI2lmIENPTVBJTEVSKE1TVkMpCiAgICAgICAgICAgICAgICAgICAgICsgMyAqIHNpemVvZih2
b2lkKikKICNlbmRpZgpAQCAtMTg3NywyMyArMTg3NywyMyBAQCB2b2lkKiBDVEk6OmNvbXBpbGVS
ZWdFeHAoRXhlY1N0YXRlKiBleGVjCiAgICAgLy8gKDIpIFN1Y2Nlc3M6CiAgICAgLy8gICAgIFNl
dCByZXR1cm4gdmFsdWUgJiBwb3AgcmVnaXN0ZXJzIGZyb20gdGhlIHN0YWNrLgogCi0gICAgaml0
LmVtaXRUZXN0bF9ycihXUkVDR2VuZXJhdG9yOjpvdXRwdXRSZWdpc3RlciwgV1JFQ0dlbmVyYXRv
cjo6b3V0cHV0UmVnaXN0ZXIpOworICAgIGppdC50ZXN0bF9ycihXUkVDR2VuZXJhdG9yOjpvdXRw
dXRSZWdpc3RlciwgV1JFQ0dlbmVyYXRvcjo6b3V0cHV0UmVnaXN0ZXIpOwogICAgIFdSRUNHZW5l
cmF0b3I6OkptcFNyYyBub091dHB1dCA9IGppdC5lbWl0VW5saW5rZWRKZSgpOwogCi0gICAgaml0
LmVtaXRNb3ZsX3JtKFdSRUNHZW5lcmF0b3I6OmN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyLCA0LCBX
UkVDR2VuZXJhdG9yOjpvdXRwdXRSZWdpc3Rlcik7Ci0gICAgaml0LmVtaXRQb3BsX3IoTWFjcm9B
c3NlbWJsZXI6OmVheCk7Ci0gICAgaml0LmVtaXRNb3ZsX3JtKE1hY3JvQXNzZW1ibGVyOjplYXgs
IFdSRUNHZW5lcmF0b3I6Om91dHB1dFJlZ2lzdGVyKTsKLSAgICBqaXQuZW1pdFBvcGxfcihXUkVD
R2VuZXJhdG9yOjpjdXJyZW50VmFsdWVSZWdpc3Rlcik7Ci0gICAgaml0LmVtaXRQb3BsX3IoV1JF
Q0dlbmVyYXRvcjo6b3V0cHV0UmVnaXN0ZXIpOwotICAgIGppdC5lbWl0UmV0KCk7CisgICAgaml0
Lm1vdmxfcm0oV1JFQ0dlbmVyYXRvcjo6Y3VycmVudFBvc2l0aW9uUmVnaXN0ZXIsIDQsIFdSRUNH
ZW5lcmF0b3I6Om91dHB1dFJlZ2lzdGVyKTsKKyAgICBqaXQucG9wbF9yKE1hY3JvQXNzZW1ibGVy
OjplYXgpOworICAgIGppdC5tb3ZsX3JtKE1hY3JvQXNzZW1ibGVyOjplYXgsIFdSRUNHZW5lcmF0
b3I6Om91dHB1dFJlZ2lzdGVyKTsKKyAgICBqaXQucG9wbF9yKFdSRUNHZW5lcmF0b3I6OmN1cnJl
bnRWYWx1ZVJlZ2lzdGVyKTsKKyAgICBqaXQucG9wbF9yKFdSRUNHZW5lcmF0b3I6Om91dHB1dFJl
Z2lzdGVyKTsKKyAgICBqaXQucmV0KCk7CiAgICAgCiAgICAgaml0Lmxpbmsobm9PdXRwdXQsIGpp
dC5sYWJlbCgpKTsKICAgICAKLSAgICBqaXQuZW1pdFBvcGxfcihNYWNyb0Fzc2VtYmxlcjo6ZWF4
KTsKLSAgICBqaXQuZW1pdE1vdmxfcm0oTWFjcm9Bc3NlbWJsZXI6OmVheCwgV1JFQ0dlbmVyYXRv
cjo6b3V0cHV0UmVnaXN0ZXIpOwotICAgIGppdC5lbWl0UG9wbF9yKFdSRUNHZW5lcmF0b3I6OmN1
cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKLSAgICBqaXQuZW1pdFBvcGxfcihXUkVDR2VuZXJhdG9yOjpv
dXRwdXRSZWdpc3Rlcik7Ci0gICAgaml0LmVtaXRSZXQoKTsKKyAgICBqaXQucG9wbF9yKE1hY3Jv
QXNzZW1ibGVyOjplYXgpOworICAgIGppdC5tb3ZsX3JtKE1hY3JvQXNzZW1ibGVyOjplYXgsIFdS
RUNHZW5lcmF0b3I6Om91dHB1dFJlZ2lzdGVyKTsKKyAgICBqaXQucG9wbF9yKFdSRUNHZW5lcmF0
b3I6OmN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKKyAgICBqaXQucG9wbF9yKFdSRUNHZW5lcmF0b3I6
Om91dHB1dFJlZ2lzdGVyKTsKKyAgICBqaXQucmV0KCk7CiAKICAgICAvLyAoMykgRmFpbHVyZToK
ICAgICAvLyAgICAgQWxsIGZhaWxzIGxpbmsgdG8gaGVyZS4gIFByb2dyZXNzIHRoZSBzdGFydCBw
b2ludCAmIGlmIGl0IGlzIHdpdGhpbiBzY29wZSwgbG9vcC4KQEAgLTE5MDMsMTggKzE5MDMsMTgg
QEAgdm9pZCogQ1RJOjpjb21waWxlUmVnRXhwKEV4ZWNTdGF0ZSogZXhlYwogICAgICAgICBqaXQu
bGluayhmYWlsdXJlc1tpXSwgaGVyZSk7CiAgICAgZmFpbHVyZXMuY2xlYXIoKTsKIAotICAgIGpp
dC5lbWl0TW92bF9tcihNYWNyb0Fzc2VtYmxlcjo6ZXNwLCBXUkVDR2VuZXJhdG9yOjpjdXJyZW50
UG9zaXRpb25SZWdpc3Rlcik7Ci0gICAgaml0LmVtaXRBZGRsX2k4cigxLCBXUkVDR2VuZXJhdG9y
OjpjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7Ci0gICAgaml0LmVtaXRNb3ZsX3JtKFdSRUNHZW5l
cmF0b3I6OmN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyLCBNYWNyb0Fzc2VtYmxlcjo6ZXNwKTsKLSAg
ICBqaXQuZW1pdENtcGxfcnIoV1JFQ0dlbmVyYXRvcjo6bGVuZ3RoUmVnaXN0ZXIsIFdSRUNHZW5l
cmF0b3I6OmN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsKKyAgICBqaXQubW92bF9tcihNYWNyb0Fz
c2VtYmxlcjo6ZXNwLCBXUkVDR2VuZXJhdG9yOjpjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7Cisg
ICAgaml0LmFkZGxfaThyKDEsIFdSRUNHZW5lcmF0b3I6OmN1cnJlbnRQb3NpdGlvblJlZ2lzdGVy
KTsKKyAgICBqaXQubW92bF9ybShXUkVDR2VuZXJhdG9yOjpjdXJyZW50UG9zaXRpb25SZWdpc3Rl
ciwgTWFjcm9Bc3NlbWJsZXI6OmVzcCk7CisgICAgaml0LmNtcGxfcnIoV1JFQ0dlbmVyYXRvcjo6
bGVuZ3RoUmVnaXN0ZXIsIFdSRUNHZW5lcmF0b3I6OmN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsK
ICAgICBqaXQubGluayhqaXQuZW1pdFVubGlua2VkSmxlKCksIG5leHRMYWJlbCk7CiAKLSAgICBq
aXQuZW1pdEFkZGxfaThyKDQsIE1hY3JvQXNzZW1ibGVyOjplc3ApOworICAgIGppdC5hZGRsX2k4
cig0LCBNYWNyb0Fzc2VtYmxlcjo6ZXNwKTsKIAotICAgIGppdC5lbWl0TW92bF9pMzJyKC0xLCBN
YWNyb0Fzc2VtYmxlcjo6ZWF4KTsKLSAgICBqaXQuZW1pdFBvcGxfcihXUkVDR2VuZXJhdG9yOjpj
dXJyZW50VmFsdWVSZWdpc3Rlcik7Ci0gICAgaml0LmVtaXRQb3BsX3IoV1JFQ0dlbmVyYXRvcjo6
b3V0cHV0UmVnaXN0ZXIpOwotICAgIGppdC5lbWl0UmV0KCk7CisgICAgaml0Lm1vdmxfaTMycigt
MSwgTWFjcm9Bc3NlbWJsZXI6OmVheCk7CisgICAgaml0LnBvcGxfcihXUkVDR2VuZXJhdG9yOjpj
dXJyZW50VmFsdWVSZWdpc3Rlcik7CisgICAgaml0LnBvcGxfcihXUkVDR2VuZXJhdG9yOjpvdXRw
dXRSZWdpc3Rlcik7CisgICAgaml0LnJldCgpOwogCiAgICAgKm51bVN1YnBhdHRlcm5zX3B0ciA9
IHBhcnNlci5tX251bVN1YnBhdHRlcm5zOwogCkluZGV4OiBtYXNtL01hY3JvQXNzZW1ibGVyV2lu
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBtYXNtL01hY3JvQXNzZW1ibGVyV2luLmNwcAkocmV2aXNpb24g
MzYyOTUpCisrKyBtYXNtL01hY3JvQXNzZW1ibGVyV2luLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMTQgKzMzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiB2b2lkIE1hY3JvQXNzZW1ibGVyOjpl
bWl0Q29udmVydFRvRmFzdENhbGwoKQogewotICAgIGVtaXRNb3ZsX21yKDQsIGVzcCwgZWF4KTsK
LSAgICBlbWl0TW92bF9tcig4LCBlc3AsIGVkeCk7Ci0gICAgZW1pdE1vdmxfbXIoMTIsIGVzcCwg
ZWN4KTsKKyAgICBtb3ZsX21yKDQsIGVzcCwgZWF4KTsKKyAgICBtb3ZsX21yKDgsIGVzcCwgZWR4
KTsKKyAgICBtb3ZsX21yKDEyLCBlc3AsIGVjeCk7CiB9CiAKIHZvaWQgTWFjcm9Bc3NlbWJsZXI6
OmVtaXRSZXN0b3JlQXJndW1lbnRSZWZlcmVuY2UoKQogewotICAgIGVtaXRNb3ZsX3JtKGVzcCwg
MCwgZXNwKTsKKyAgICBtb3ZsX3JtKGVzcCwgMCwgZXNwKTsKIH0KIAogfQpJbmRleDogbWFzbS9Y
ODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtYXNtL1g4NkFzc2VtYmxlci5oCShyZXZpc2lv
biAzNjI5NSkKKysrIG1hc20vWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NSwx
NjcgKzI0NSwxNjcgQEAgcHVibGljOgogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9JTlQz
KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBlbWl0UHVzaGxfcihSZWdpc3RlcklEIHJlZykKKyAg
ICB2b2lkIHB1c2hsX3IoUmVnaXN0ZXJJRCByZWcpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+
cHV0Qnl0ZShPUF9QVVNIX0VBWCArIHJlZyk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZW1pdFB1
c2hsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHZvaWQgcHVzaGxfbShpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0
ZShPUF9HUk9VUDVfRXYpOwogICAgICAgICBlbWl0TW9kUm1fb3BtKEdST1VQNV9PUF9QVVNILCBi
YXNlLCBvZmZzZXQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGVtaXRQb3BsX3IoUmVnaXN0ZXJJ
RCByZWcpCisgICAgdm9pZCBwb3BsX3IoUmVnaXN0ZXJJRCByZWcpCiAgICAgewogICAgICAgICBt
X2J1ZmZlci0+cHV0Qnl0ZShPUF9QT1BfRUFYICsgcmVnKTsKICAgICB9CiAKLSAgICB2b2lkIGVt
aXRQb3BsX20oaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHZvaWQgcG9wbF9tKGlu
dCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkKICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRC
eXRlKE9QX0dST1VQMUFfRXYpOwogICAgICAgICBlbWl0TW9kUm1fb3BtKEdST1VQMUFfT1BfUE9Q
LCBiYXNlLCBvZmZzZXQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGVtaXRNb3ZsX3JyKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB2b2lkIG1vdmxfcnIoUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1Bf
TU9WX0V2R3YpOwogICAgICAgICBlbWl0TW9kUm1fcnIoc3JjLCBkc3QpOwogICAgIH0KICAgICAK
LSAgICB2b2lkIGVtaXRBZGRsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB2b2lkIGFkZGxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfQUREX0V2R3YpOwogICAgICAgICBlbWl0TW9kUm1f
cnIoc3JjLCBkc3QpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFkZGxfaThyKGludCBpbW0sIFJl
Z2lzdGVySUQgZHN0KQorICAgIHZvaWQgYWRkbF9pOHIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3Qp
CiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9HUk9VUDFfRXZJYik7CiAgICAg
ICAgIGVtaXRNb2RSbV9vcHIoR1JPVVAxX09QX0FERCwgZHN0KTsKICAgICAgICAgbV9idWZmZXIt
PnB1dEJ5dGUoaW1tKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRBZGRsX2kzMnIoaW50IGltbSwg
UmVnaXN0ZXJJRCBkc3QpCisgICAgdm9pZCBhZGRsX2kzMnIoaW50IGltbSwgUmVnaXN0ZXJJRCBk
c3QpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9HUk9VUDFfRXZJeik7CiAg
ICAgICAgIGVtaXRNb2RSbV9vcHIoR1JPVVAxX09QX0FERCwgZHN0KTsKICAgICAgICAgbV9idWZm
ZXItPnB1dEludChpbW0pOwogICAgIH0KIAotICAgIHZvaWQgZW1pdEFkZGxfbXIoaW50IG9mZnNl
dCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB2b2lkIGFkZGxfbXIoaW50
IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAg
IG1fYnVmZmVyLT5wdXRCeXRlKE9QX0FERF9HdkV2KTsKICAgICAgICAgZW1pdE1vZFJtX3JtKGRz
dCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRBbmRsX3JyKFJlZ2lzdGVy
SUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKKyAgICB2b2lkIGFuZGxfcnIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfQU5E
X0V2R3YpOwogICAgICAgICBlbWl0TW9kUm1fcnIoc3JjLCBkc3QpOwogICAgIH0KIAotICAgIHZv
aWQgZW1pdEFuZGxfaTMycihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICB2b2lkIGFuZGxf
aTMycihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5w
dXRCeXRlKE9QX0dST1VQMV9Fdkl6KTsKICAgICAgICAgZW1pdE1vZFJtX29wcihHUk9VUDFfT1Bf
QU5ELCBkc3QpOwogICAgICAgICBtX2J1ZmZlci0+cHV0SW50KGltbSk7CiAgICAgfQogCi0gICAg
dm9pZCBlbWl0Q21wbF9pOHIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgdm9pZCBjbXBs
X2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5w
dXRCeXRlKE9QX0dST1VQMV9FdkliKTsKICAgICAgICAgZW1pdE1vZFJtX29wcihHUk9VUDFfT1Bf
Q01QLCBkc3QpOwogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShpbW0pOwogICAgIH0KIAotICAg
IHZvaWQgZW1pdENtcGxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQorICAgIHZv
aWQgY21wbF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAg
ICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9DTVBfRXZHdik7CiAgICAgICAgIGVtaXRNb2RSbV9ycihz
cmMsIGRzdCk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0Q21wbF9ybShSZWdpc3RlcklEIHNyYywg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHZvaWQgY21wbF9ybShSZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAgbV9idWZm
ZXItPnB1dEJ5dGUoT1BfQ01QX0V2R3YpOwogICAgICAgICBlbWl0TW9kUm1fcm0oc3JjLCBiYXNl
LCBvZmZzZXQpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdENtcGxfaTMycihpbnQgaW1tLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB2b2lkIGNtcGxfaTMycihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE9QX0dST1VQMV9Fdkl6KTsKICAgICAg
ICAgZW1pdE1vZFJtX29wcihHUk9VUDFfT1BfQ01QLCBkc3QpOwogICAgICAgICBtX2J1ZmZlci0+
cHV0SW50KGltbSk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0Q21wbF9pMzJtKGludCBpbW0sIFJl
Z2lzdGVySUQgZHN0KQorICAgIHZvaWQgY21wbF9pMzJtKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0
KQogICAgIHsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfR1JPVVAxX0V2SXopOwogICAg
ICAgICBlbWl0TW9kUm1fb3BtKEdST1VQMV9PUF9DTVAsIGRzdCk7CiAgICAgICAgIG1fYnVmZmVy
LT5wdXRJbnQoaW1tKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRDbXBsX2kzMm0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBkc3QpCisgICAgdm9pZCBjbXBsX2kzMm0oaW50IGltbSwg
aW50IG9mZnNldCwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0
Qnl0ZShPUF9HUk9VUDFfRXZJeik7CiAgICAgICAgIGVtaXRNb2RSbV9vcG0oR1JPVVAxX09QX0NN
UCwgZHN0LCBvZmZzZXQpOwogICAgICAgICBtX2J1ZmZlci0+cHV0SW50KGltbSk7CiAgICAgfQog
Ci0gICAgdm9pZCBlbWl0Q21wbF9pMzJtKGludCBpbW0sIHZvaWQqIGFkZHIpCisgICAgdm9pZCBj
bXBsX2kzMm0oaW50IGltbSwgdm9pZCogYWRkcikKICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5w
dXRCeXRlKE9QX0dST1VQMV9Fdkl6KTsKICAgICAgICAgZW1pdE1vZFJtX29wbShHUk9VUDFfT1Bf
Q01QLCBhZGRyKTsKICAgICAgICAgbV9idWZmZXItPnB1dEludChpbW0pOwogICAgIH0KIAotICAg
IHZvaWQgZW1pdENtcHdfcm0oUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0
ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHZvaWQgY21wd19ybShSZWdpc3RlcklEIHNyYywg
UmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewogICAg
ICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShQUkVfT1BFUkFORF9TSVpFKTsKICAgICAgICAgbV9idWZm
ZXItPnB1dEJ5dGUoT1BfQ01QX0V2R3YpOwogICAgICAgICBlbWl0TW9kUm1fcm1zaWIoc3JjLCBi
YXNlLCBpbmRleCwgc2NhbGUpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdE9ybF9ycihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgdm9pZCBvcmxfcnIoUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfT1Jf
RXZHdik7CiAgICAgICAgIGVtaXRNb2RSbV9ycihzcmMsIGRzdCk7CiAgICAgfQogCi0gICAgdm9p
ZCBlbWl0T3JsX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICB2b2lkIG9ybF9ycihp
bnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRl
KE9QX0dST1VQMV9FdkliKTsKICAgICAgICAgZW1pdE1vZFJtX29wcihHUk9VUDFfT1BfT1IsIGRz
dCk7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKGltbSk7CiAgICAgfQogCi0gICAgdm9pZCBl
bWl0U3VibF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgdm9pZCBzdWJs
X3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYnVm
ZmVyLT5wdXRCeXRlKE9QX1NVQl9Fdkd2KTsKICAgICAgICAgZW1pdE1vZFJtX3JyKHNyYywgZHN0
KTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRTdWJsX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRz
dCkKKyAgICB2b2lkIHN1YmxfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAg
ICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfR1JPVVAxX0V2SWIpOwogICAgICAgICBlbWl0TW9k
Um1fb3ByKEdST1VQMV9PUF9TVUIsIGRzdCk7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKGlt
bSk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0U3VibF9pMzJyKGludCBpbW0sIFJlZ2lzdGVySUQg
ZHN0KQorICAgIHZvaWQgc3VibF9pMzJyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfR1JPVVAxX0V2SXopOwogICAgICAgICBlbWl0
TW9kUm1fb3ByKEdST1VQMV9PUF9TVUIsIGRzdCk7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRJbnQo
aW1tKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRTdWJsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgdm9pZCBzdWJsX21yKGludCBvZmZzZXQsIFJl
Z2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+
cHV0Qnl0ZShPUF9TVUJfR3ZFdik7CiAgICAgICAgIGVtaXRNb2RSbV9ybShkc3QsIGJhc2UsIG9m
ZnNldCk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0VGVzdGxfaTMycihpbnQgaW1tLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB2b2lkIHRlc3RsX2kzMnIoaW50IGltbSwgUmVnaXN0ZXJJRCBkc3QpCiAg
ICAgewogICAgICAgICBtX2J1ZmZlci0+ZW5zdXJlU3BhY2UoTUFYX0lOU1RSVUNUSU9OX1NJWkUp
OwogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZVVuY2hlY2tlZChPUF9HUk9VUDNfRXZJeik7CkBA
IC00MTMsMjYgKzQxMywyNiBAQCBwdWJsaWM6CiAgICAgICAgIG1fYnVmZmVyLT5wdXRJbnRVbmNo
ZWNrZWQoaW1tKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRUZXN0bF9ycihSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkc3QpCisgICAgdm9pZCB0ZXN0bF9ycihSZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9URVNUX0V2
R3YpOwogICAgICAgICBlbWl0TW9kUm1fcnIoc3JjLCBkc3QpOwogICAgIH0KICAgICAKLSAgICB2
b2lkIGVtaXRYb3JsX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAgICB2b2lkIHhvcmxf
aThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9idWZmZXItPnB1
dEJ5dGUoT1BfR1JPVVAxX0V2SWIpOwogICAgICAgICBlbWl0TW9kUm1fb3ByKEdST1VQMV9PUF9Y
T1IsIGRzdCk7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKGltbSk7CiAgICAgfQogCi0gICAg
dm9pZCBlbWl0WG9ybF9ycihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkc3QpCisgICAgdm9p
ZCB4b3JsX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAg
IG1fYnVmZmVyLT5wdXRCeXRlKE9QX1hPUl9Fdkd2KTsKICAgICAgICAgZW1pdE1vZFJtX3JyKHNy
YywgZHN0KTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRTYXJsX2k4cihpbnQgaW1tLCBSZWdpc3Rl
cklEIGRzdCkKKyAgICB2b2lkIHNhcmxfaThyKGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQogICAg
IHsKICAgICAgICAgaWYgKGltbSA9PSAxKSB7CiAgICAgICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0
ZShPUF9HUk9VUDJfRXYxKTsKQEAgLTQ0NCwxMyArNDQ0LDEzIEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAotICAgIHZvaWQgZW1pdFNhcmxfQ0xyKFJlZ2lzdGVySUQgZHN0KQorICAgIHZv
aWQgc2FybF9DTHIoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0
Qnl0ZShPUF9HUk9VUDJfRXZDTCk7CiAgICAgICAgIGVtaXRNb2RSbV9vcHIoR1JPVVAyX09QX1NB
UiwgZHN0KTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRTaGxfaThyKGludCBpbW0sIFJlZ2lzdGVy
SUQgZHN0KQorICAgIHZvaWQgc2hsX2k4cihpbnQgaW1tLCBSZWdpc3RlcklEIGRzdCkKICAgICB7
CiAgICAgICAgIGlmIChpbW0gPT0gMSkgewogICAgICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUo
T1BfR1JPVVAyX0V2MSk7CkBAIC00NjIsMTAzICs0NjIsMTAzIEBAIHB1YmxpYzoKICAgICAgICAg
fQogICAgIH0KIAotICAgIHZvaWQgZW1pdFNobGxfQ0xyKFJlZ2lzdGVySUQgZHN0KQorICAgIHZv
aWQgc2hsbF9DTHIoUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0
Qnl0ZShPUF9HUk9VUDJfRXZDTCk7CiAgICAgICAgIGVtaXRNb2RSbV9vcHIoR1JPVVAyX09QX1NI
TCwgZHN0KTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRNdWxsX3JyKFJlZ2lzdGVySUQgc3JjLCBS
ZWdpc3RlcklEIGRzdCkKKyAgICB2b2lkIG11bGxfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZHN0KQogICAgIHsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfMkJZVEVfRVNDQVBF
KTsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1AyX01VTF9HdkV2KTsKICAgICAgICAgZW1p
dE1vZFJtX3JyKGRzdCwgc3JjKTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRJZGl2bF9yKFJlZ2lz
dGVySUQgZHN0KQorICAgIHZvaWQgaWRpdmxfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAg
ICAgIG1fYnVmZmVyLT5wdXRCeXRlKE9QX0dST1VQM19Fdik7CiAgICAgICAgIGVtaXRNb2RSbV9v
cHIoR1JPVVAzX09QX0lESVYsIGRzdCk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0Q2RxKCkKKyAg
ICB2b2lkIGNkcSgpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9DRFEpOwog
ICAgIH0KIAotICAgIHZvaWQgZW1pdE1vdmxfbXIoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGRzdCkKKyAgICB2b2lkIG1vdmxfbXIoUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGRzdCkK
ICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE9QX01PVl9HdkV2KTsKICAgICAgICAg
ZW1pdE1vZFJtX3JtKGRzdCwgYmFzZSk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0TW92bF9tcihp
bnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHZvaWQgbW92
bF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsK
ICAgICAgICAgbV9idWZmZXItPmVuc3VyZVNwYWNlKE1BWF9JTlNUUlVDVElPTl9TSVpFKTsKICAg
ICAgICAgbV9idWZmZXItPnB1dEJ5dGVVbmNoZWNrZWQoT1BfTU9WX0d2RXYpOwogICAgICAgICBl
bWl0TW9kUm1fcm1fVW5jaGVja2VkKGRzdCwgYmFzZSwgb2Zmc2V0KTsKICAgICB9CiAKLSAgICB2
b2lkIGVtaXRNb3ZsX21yKHZvaWQqIGFkZHIsIFJlZ2lzdGVySUQgZHN0KQorICAgIHZvaWQgbW92
bF9tcih2b2lkKiBhZGRyLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYnVmZmVy
LT5wdXRCeXRlKE9QX01PVl9HdkV2KTsKICAgICAgICAgZW1pdE1vZFJtX3JtKGRzdCwgYWRkcik7
CiAgICAgfQogCi0gICAgdm9pZCBlbWl0TW92bF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJh
c2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCisgICAgdm9p
ZCBtb3ZsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwg
aW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRC
eXRlKE9QX01PVl9HdkV2KTsKICAgICAgICAgZW1pdE1vZFJtX3Jtc2liKGRzdCwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpOwogICAgIH0KIAotICAgIHZvaWQgZW1pdE1vdnp3bF9tcihpbnQg
b2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgZHN0KQorICAgIHZvaWQgbW92ends
X21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewog
ICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF8yQllURV9FU0NBUEUpOwogICAgICAgICBtX2J1
ZmZlci0+cHV0Qnl0ZShPUDJfTU9WWlhfR3ZFdyk7CiAgICAgICAgIGVtaXRNb2RSbV9ybShkc3Qs
IGJhc2UsIG9mZnNldCk7CiAgICAgfQogCi0gICAgdm9pZCBlbWl0TW92endsX21yKFJlZ2lzdGVy
SUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB2b2lkIG1vdnp3bF9tcihSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBz
Y2FsZSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShP
UF8yQllURV9FU0NBUEUpOwogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUDJfTU9WWlhfR3ZF
dyk7CiAgICAgICAgIGVtaXRNb2RSbV9ybXNpYihkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSk7CiAg
ICAgfQogCi0gICAgdm9pZCBlbWl0TW92endsX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFz
ZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlLCBSZWdpc3RlcklEIGRzdCkKKyAgICB2b2lk
IG1vdnp3bF9tcihpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgs
IGludCBzY2FsZSwgUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0
Qnl0ZShPUF8yQllURV9FU0NBUEUpOwogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUDJfTU9W
WlhfR3ZFdyk7CiAgICAgICAgIGVtaXRNb2RSbV9ybXNpYihkc3QsIGJhc2UsIGluZGV4LCBzY2Fs
ZSwgb2Zmc2V0KTsKICAgICB9CiAKLSAgICB2b2lkIGVtaXRNb3ZsX3JtKFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGJhc2UpCisgICAgdm9pZCBtb3ZsX3JtKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9NT1ZfRXZH
dik7CiAgICAgICAgIGVtaXRNb2RSbV9ybShzcmMsIGJhc2UpOwogICAgIH0KIAotICAgIHZvaWQg
ZW1pdE1vdmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSkK
KyAgICB2b2lkIG1vdmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZzZXQsIFJlZ2lzdGVySUQg
YmFzZSkKICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5lbnN1cmVTcGFjZShNQVhfSU5TVFJVQ1RJ
T05fU0laRSk7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlVW5jaGVja2VkKE9QX01PVl9Fdkd2
KTsKICAgICAgICAgZW1pdE1vZFJtX3JtX1VuY2hlY2tlZChzcmMsIGJhc2UsIG9mZnNldCk7CiAg
ICAgfQogICAgIAotICAgIHZvaWQgZW1pdE1vdmxfcm0oUmVnaXN0ZXJJRCBzcmMsIGludCBvZmZz
ZXQsIFJlZ2lzdGVySUQgYmFzZSwgUmVnaXN0ZXJJRCBpbmRleCwgaW50IHNjYWxlKQorICAgIHZv
aWQgbW92bF9ybShSZWdpc3RlcklEIHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBS
ZWdpc3RlcklEIGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0
Qnl0ZShPUF9NT1ZfRXZHdik7CiAgICAgICAgIGVtaXRNb2RSbV9ybXNpYihzcmMsIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCBlbWl0TW92bF9pMzJy
KGludCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHZvaWQgbW92bF9pMzJyKGludCBpbW0sIFJl
Z2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfR1JPVVAx
MV9Fdkl6KTsKICAgICAgICAgZW1pdE1vZFJtX29wcihHUk9VUDExX01PViwgZHN0KTsKICAgICAg
ICAgbV9idWZmZXItPnB1dEludChpbW0pOwogICAgIH0KIAotICAgIHZvaWQgZW1pdE1vdmxfaTMy
bShpbnQgaW1tLCBpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgdm9pZCBtb3ZsX2kz
Mm0oaW50IGltbSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQogICAgIHsKICAgICAgICAg
bV9idWZmZXItPmVuc3VyZVNwYWNlKE1BWF9JTlNUUlVDVElPTl9TSVpFKTsKICAgICAgICAgbV9i
dWZmZXItPnB1dEJ5dGVVbmNoZWNrZWQoT1BfR1JPVVAxMV9Fdkl6KTsKQEAgLTU2NiwzNyArNTY2
LDM3IEBAIHB1YmxpYzoKICAgICAgICAgbV9idWZmZXItPnB1dEludFVuY2hlY2tlZChpbW0pOwog
ICAgIH0KIAotICAgIHZvaWQgZW1pdE1vdmxfaTMybShpbnQgaW1tLCB2b2lkKiBhZGRyKQorICAg
IHZvaWQgbW92bF9pMzJtKGludCBpbW0sIHZvaWQqIGFkZHIpCiAgICAgewogICAgICAgICBtX2J1
ZmZlci0+cHV0Qnl0ZShPUF9HUk9VUDExX0V2SXopOwogICAgICAgICBlbWl0TW9kUm1fb3BtKEdS
T1VQMTFfTU9WLCBhZGRyKTsKICAgICAgICAgbV9idWZmZXItPnB1dEludChpbW0pOwogICAgIH0K
IAotICAgIHZvaWQgZW1pdExlYWxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdp
c3RlcklEIGRzdCkKKyAgICB2b2lkIGxlYWxfbXIoaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNl
LCBSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAgICAgIG1fYnVmZmVyLT5wdXRCeXRlKE9QX0xF
QSk7CiAgICAgICAgIGVtaXRNb2RSbV9ybShkc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCi0g
ICAgdm9pZCBlbWl0UmV0KCkKKyAgICB2b2lkIHJldCgpCiAgICAgewogICAgICAgICBtX2J1ZmZl
ci0+cHV0Qnl0ZShPUF9SRVQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGVtaXRKbXBOX3IoUmVn
aXN0ZXJJRCBkc3QpCisgICAgdm9pZCBqbXBfcihSZWdpc3RlcklEIGRzdCkKICAgICB7CiAgICAg
ICAgIG1fYnVmZmVyLT5wdXRCeXRlKE9QX0dST1VQNV9Fdik7CiAgICAgICAgIGVtaXRNb2RSbV9v
cHIoR1JPVVA1X09QX0pNUE4sIGRzdCk7CiAgICAgfQogICAgIAotICAgIHZvaWQgZW1pdEptcE5f
bShpbnQgb2Zmc2V0LCBSZWdpc3RlcklEIGJhc2UpCisgICAgdm9pZCBqbXBfbShpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9H
Uk9VUDVfRXYpOwogICAgICAgICBlbWl0TW9kUm1fb3BtKEdST1VQNV9PUF9KTVBOLCBiYXNlLCBv
ZmZzZXQpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGVtaXRDYWxsTl9yKFJlZ2lzdGVySUQgZHN0
KQorICAgIHZvaWQgY2FsbF9yKFJlZ2lzdGVySUQgZHN0KQogICAgIHsKICAgICAgICAgbV9idWZm
ZXItPnB1dEJ5dGUoT1BfR1JPVVA1X0V2KTsKICAgICAgICAgZW1pdE1vZFJtX29wcihHUk9VUDVf
T1BfQ0FMTE4sIGRzdCk7CkluZGV4OiB3cmVjL1dSRUMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHdyZWMv
V1JFQy5jcHAJKHJldmlzaW9uIDM2MzAwKQorKysgd3JlYy9XUkVDLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDkyLDIxICs0OTIsMjEgQEAgdm9pZCBHZW5lcmF0ZVBhcmVudGhlc2VzTm9uR3JlZWR5
RnVuY3RvcgogCiB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlQmFja3RyYWNrMSgpCiB7Ci0g
ICAgbV9qaXQuZW1pdFN1YmxfaThyKDEsIGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsKKyAgICBt
X2ppdC5zdWJsX2k4cigxLCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CiB9CiAKIHZvaWQgV1JF
Q0dlbmVyYXRvcjo6Z2VuZXJhdGVCYWNrdHJhY2tCYWNrcmVmZXJlbmNlKHVuc2lnbmVkIHN1YnBh
dHRlcm5JZCkKIHsKLSAgICBtX2ppdC5lbWl0U3VibF9tcigoMiAqIHN1YnBhdHRlcm5JZCArIDEp
ICogc2l6ZW9mKGludCksIG91dHB1dFJlZ2lzdGVyLCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7
Ci0gICAgbV9qaXQuZW1pdEFkZGxfbXIoKDIgKiBzdWJwYXR0ZXJuSWQpICogc2l6ZW9mKGludCks
IG91dHB1dFJlZ2lzdGVyLCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQuc3Vi
bF9tcigoMiAqIHN1YnBhdHRlcm5JZCArIDEpICogc2l6ZW9mKGludCksIG91dHB1dFJlZ2lzdGVy
LCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQuYWRkbF9tcigoMiAqIHN1YnBh
dHRlcm5JZCkgKiBzaXplb2YoaW50KSwgb3V0cHV0UmVnaXN0ZXIsIGN1cnJlbnRQb3NpdGlvblJl
Z2lzdGVyKTsKIH0KIAogdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZUJhY2tyZWZlcmVuY2VR
dWFudGlmaWVyKEptcFNyY1ZlY3RvciYgZmFpbHVyZXMsIFF1YW50aWZpZXI6OlR5cGUgcXVhbnRp
ZmllclR5cGUsIHVuc2lnbmVkIHN1YnBhdHRlcm5JZCwgdW5zaWduZWQgbWluLCB1bnNpZ25lZCBt
YXgpCiB7CiAgICAgR2VuZXJhdGVCYWNrcmVmZXJlbmNlRnVuY3RvciBmdW5jdG9yKHN1YnBhdHRl
cm5JZCk7CiAKLSAgICBtX2ppdC5lbWl0TW92bF9tcigoMiAqIHN1YnBhdHRlcm5JZCkgKiBzaXpl
b2YoaW50KSwgb3V0cHV0UmVnaXN0ZXIsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKLSAgICBtX2pp
dC5lbWl0Q21wbF9ybShjdXJyZW50VmFsdWVSZWdpc3RlciwgKCgyICogc3VicGF0dGVybklkKSAr
IDEpICogc2l6ZW9mKGludCksIG91dHB1dFJlZ2lzdGVyKTsKKyAgICBtX2ppdC5tb3ZsX21yKCgy
ICogc3VicGF0dGVybklkKSAqIHNpemVvZihpbnQpLCBvdXRwdXRSZWdpc3RlciwgY3VycmVudFZh
bHVlUmVnaXN0ZXIpOworICAgIG1faml0LmNtcGxfcm0oY3VycmVudFZhbHVlUmVnaXN0ZXIsICgo
MiAqIHN1YnBhdHRlcm5JZCkgKyAxKSAqIHNpemVvZihpbnQpLCBvdXRwdXRSZWdpc3Rlcik7CiAg
ICAgSm1wU3JjIHNraXBJZkVtcHR5ID0gbV9qaXQuZW1pdFVubGlua2VkSmUoKTsKIAogICAgIEFT
U0VSVChxdWFudGlmaWVyVHlwZSA9PSBRdWFudGlmaWVyOjpHcmVlZHkgfHwgcXVhbnRpZmllclR5
cGUgPT0gUXVhbnRpZmllcjo6Tm9uR3JlZWR5KTsKQEAgLTUyNSwyNSArNTI1LDI1IEBAIHZvaWQg
V1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVOb25HcmVlZHlRdWEKIAogICAgIC8vICgwKSBTZXR1cDoK
ICAgICAvLyAgICAgaW5pdCBxdWFudGlmaWVyQ291bnRSZWdpc3RlcgotICAgIG1faml0LmVtaXRQ
dXNobF9yKHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyKTsKLSAgICBtX2ppdC5lbWl0WG9ybF9ycihx
dWFudGlmaWVyQ291bnRSZWdpc3RlciwgcXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOworICAgIG1f
aml0LnB1c2hsX3IocXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOworICAgIG1faml0LnhvcmxfcnIo
cXVhbnRpZmllckNvdW50UmVnaXN0ZXIsIHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyKTsKICAgICBK
bXBTcmMgZ290b1N0YXJ0ID0gbV9qaXQuZW1pdFVubGlua2VkSm1wKCk7CiAKICAgICAvLyAoNCkg
RmFpbHVyZSBjYXNlCiAKICAgICBKbXBEc3QgcXVhbnRpZmllckZhaWxlZCA9IG1faml0LmxhYmVs
KCk7CiAgICAgLy8gKDQuMSkgUmVzdG9yZSBvcmlnaW5hbCB2YWx1ZSBvZiBxdWFudGlmaWVyQ291
bnRSZWdpc3RlciBmcm9tIHRoZSBzdGFjawotICAgIG1faml0LmVtaXRQb3BsX3IocXVhbnRpZmll
ckNvdW50UmVnaXN0ZXIpOworICAgIG1faml0LnBvcGxfcihxdWFudGlmaWVyQ291bnRSZWdpc3Rl
cik7CiAgICAgZmFpbHVyZXMuYXBwZW5kKG1faml0LmVtaXRVbmxpbmtlZEptcCgpKTsgCiAKICAg
ICAvLyAoMykgV2UganVzdCB0cmllZCBhbiBhbHRlcm5hdGl2ZSwgYW5kIGl0IGZhaWxlZCAtIGNo
ZWNrIHdlIGNhbiB0cnkgbW9yZS4KICAgICAKICAgICBKbXBEc3QgYWx0ZXJuYXRpdmVGYWlsZWQg
PSBtX2ppdC5sYWJlbCgpOwogICAgIC8vICgzLjEpIHJlbW92ZSB0aGUgdmFsdWUgcHVzaGVkIHBy
aW9yIHRvIHRlc3RpbmcgdGhlIGFsdGVybmF0aXZlCi0gICAgbV9qaXQuZW1pdFBvcGxfcihjdXJy
ZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQucG9wbF9yKGN1cnJlbnRQb3NpdGlvblJl
Z2lzdGVyKTsKICAgICAvLyAoMy4yKSBpZiB0aGVyZSBpcyBhIGxpbWl0LCBhbmQgd2UgaGF2ZSBy
ZWFjaGVkIGl0LCBnYW1lIG92ZXIuIAogICAgIGlmIChtYXggIT0gUXVhbnRpZmllcjo6bm9NYXhT
cGVjaWZpZWQpIHsKLSAgICAgICAgbV9qaXQuZW1pdENtcGxfaTMycihtYXgsIHF1YW50aWZpZXJD
b3VudFJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuY21wbF9pMzJyKG1heCwgcXVhbnRpZmllckNv
dW50UmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5saW5rKG1faml0LmVtaXRVbmxpbmtlZEplKCks
IHF1YW50aWZpZXJGYWlsZWQpOwogICAgIH0KIApAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgV1JF
Q0dlbmVyYXRvcjo6Z2VuZXJhdGVOb25HcmVlZHlRdWEKICAgICAvLyAoMS4xKSBEbyBhIGNoZWNr
IGZvciB0aGUgYXRvbSBjaGVjay4KICAgICBmdW5jdG9yLmdlbmVyYXRlQXRvbSh0aGlzLCBuZXdG
YWlsdXJlcyk7CiAgICAgLy8gKDEuMikgSWYgd2UgZ2V0IGhlcmUsIHN1Y2Nlc3NmdWwgbWF0Y2gh
Ci0gICAgbV9qaXQuZW1pdEFkZGxfaThyKDEsIHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyKTsKKyAg
ICBtX2ppdC5hZGRsX2k4cigxLCBxdWFudGlmaWVyQ291bnRSZWdpc3Rlcik7CiAgICAgLy8gKDEu
MykgV2UgbmVlZGVkIHRvIHJlYWQgdGhlIGF0b20sIGFuZCB3ZSBmYWlsZWQgLSB0aGF0J3MgdGVy
bWluYWxseSAgYmFkIG5ld3MuCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5ld0ZhaWx1
cmVzLnNpemUoKTsgKytpKQogICAgICAgICBtX2ppdC5saW5rKG5ld0ZhaWx1cmVzW2ldLCBxdWFu
dGlmaWVyRmFpbGVkKTsKQEAgLTU2NSw3ICs1NjUsNyBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6Omdl
bmVyYXRlTm9uR3JlZWR5UXVhCiAgICAgaWYgKG1pbikgewogICAgICAgICAvLyAuLi4gZXhjZXB0
IGlmIG1pbiB3YXMgMSBubyBuZWVkIHRvIGtlZXAgY2hlY2tpbmchCiAgICAgICAgIGlmIChtaW4g
IT0gMSkgewotICAgICAgICAgICAgbV9qaXQuZW1pdENtcGxfaTMycihtaW4sIHF1YW50aWZpZXJD
b3VudFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1faml0LmNtcGxfaTMycihtaW4sIHF1YW50aWZp
ZXJDb3VudFJlZ2lzdGVyKTsKICAgICAgICAgICAgIG1faml0LmxpbmsobV9qaXQuZW1pdFVubGlu
a2VkSmwoKSwgdGVzdFF1YW50aWZpZWRBdG9tKTsKICAgICAgICAgfQogICAgIH0gZWxzZQpAQCAt
NTc1LDEwICs1NzUsMTAgQEAgdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZU5vbkdyZWVkeVF1
YQogICAgIC8vICgyKSBQbGFudCBhbiBhbHRlcm5hdGl2ZSBjaGVjayBmb3IgdGhlIHJlbWFpbmRl
ciBvZiB0aGUgZXhwcmVzc2lvbgogICAgIAogICAgIC8vICgyLjEpIHJlY3Vyc2l2ZWx5IGNhbGwg
dG8gcGFyc2VBbHRlcm5hdGl2ZSwgaWYgaXQgZmFsbHMgdGhyb3VnaCwgc3VjY2VzcyEKLSAgICBt
X2ppdC5lbWl0UHVzaGxfcihjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQucHVz
aGxfcihjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CiAgICAgbV9wYXJzZXIucGFyc2VBbHRlcm5h
dGl2ZShuZXdGYWlsdXJlcyk7Ci0gICAgbV9qaXQuZW1pdEFkZGxfaThyKDQsIFg4NkFzc2VtYmxl
cjo6ZXNwKTsKLSAgICBtX2ppdC5lbWl0UG9wbF9yKHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyKTsK
KyAgICBtX2ppdC5hZGRsX2k4cig0LCBYODZBc3NlbWJsZXI6OmVzcCk7CisgICAgbV9qaXQucG9w
bF9yKHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyKTsKICAgICAvLyAoMi4yKSBsaW5rIGZhaWx1cmUg
Y2FzZXMgdG8ganVtcCBiYWNrIHVwIHRvIGFsdGVybmF0aXZlRmFpbGVkLgogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBuZXdGYWlsdXJlcy5zaXplKCk7ICsraSkKICAgICAgICAgbV9qaXQu
bGluayhuZXdGYWlsdXJlc1tpXSwgYWx0ZXJuYXRpdmVGYWlsZWQpOwpAQCAtNTk1LDggKzU5NSw4
IEBAIHZvaWQgV1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVHcmVlZHlRdWFudGkKIAogICAgIC8vICgw
KSBTZXR1cDoKICAgICAvLyAgICAgaW5pdCBxdWFudGlmaWVyQ291bnRSZWdpc3RlcgotICAgIG1f
aml0LmVtaXRQdXNobF9yKHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyKTsKLSAgICBtX2ppdC5lbWl0
WG9ybF9ycihxdWFudGlmaWVyQ291bnRSZWdpc3RlciwgcXVhbnRpZmllckNvdW50UmVnaXN0ZXIp
OworICAgIG1faml0LnB1c2hsX3IocXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOworICAgIG1faml0
LnhvcmxfcnIocXVhbnRpZmllckNvdW50UmVnaXN0ZXIsIHF1YW50aWZpZXJDb3VudFJlZ2lzdGVy
KTsKIAogICAgIC8vICgxKSBHcmVlZGlseSByZWFkIGFzIG1hbnkgb2YgdGhlIGF0b20gYXMgcG9z
c2libGUKIApAQCAtNjA1LDEyICs2MDUsMTIgQEAgdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0
ZUdyZWVkeVF1YW50aQogICAgIC8vICgxLjEpIERvIGEgY2hhcmFjdGVyIGNsYXNzIGNoZWNrLgog
ICAgIGZ1bmN0b3IuZ2VuZXJhdGVBdG9tKHRoaXMsIG5ld0ZhaWx1cmVzKTsKICAgICAvLyAoMS4y
KSBJZiB3ZSBnZXQgaGVyZSwgc3VjY2Vzc2Z1bCBtYXRjaCEKLSAgICBtX2ppdC5lbWl0QWRkbF9p
OHIoMSwgcXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOworICAgIG1faml0LmFkZGxfaThyKDEsIHF1
YW50aWZpZXJDb3VudFJlZ2lzdGVyKTsKICAgICAvLyAoMS4zKSBsb29wLCB1bmxlc3Mgd2UndmUg
cmVhZCBtYXggbGltaXQuCiAgICAgaWYgKG1heCAhPSBRdWFudGlmaWVyOjpub01heFNwZWNpZmll
ZCkgewogICAgICAgICBpZiAobWF4ICE9IDEpIHsKICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGlz
IGEgbGltaXQsIG9ubHkgbG9vcCB3aGlsZSBsZXNzIHRoYW4gbGltaXQsIG90aGVyd2lzZSBmYWxs
IHRocm91Z2h0IHRvLi4uCi0gICAgICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJyKG1heCwgcXVh
bnRpZmllckNvdW50UmVnaXN0ZXIpOworICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKG1heCwg
cXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOwogICAgICAgICAgICAgbV9qaXQubGluayhtX2ppdC5l
bWl0VW5saW5rZWRKbmUoKSwgcmVhZE1vcmUpOwogICAgICAgICB9CiAgICAgICAgIC8vIC4uLmlm
IHRoZXJlIGlzIG5vIG1pbiB3ZSBuZWVkIGp1bXAgdG8gdGhlIGFsdGVybmF0aXZlIHRlc3QsIGlm
IHRoZXJlIGlzIHdlIGNhbiBqdXN0IGZhbGwgdGhyb3VnaCB0byBpdC4KQEAgLTYyNyw3ICs2Mjcs
NyBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlR3JlZWR5UXVhbnRpCiAgICAgICAgICAg
ICBtX2ppdC5saW5rKG5ld0ZhaWx1cmVzW2ldLCBtaW5pbXVtVGVzdCk7CiAgICAgICAgIG5ld0Zh
aWx1cmVzLmNsZWFyKCk7CiAgICAgICAgIC8vIAotICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJy
KG1pbiwgcXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOworICAgICAgICBtX2ppdC5jbXBsX2kzMnIo
bWluLCBxdWFudGlmaWVyQ291bnRSZWdpc3Rlcik7CiAgICAgICAgIG5ld0ZhaWx1cmVzLmFwcGVu
ZChtX2ppdC5lbWl0VW5saW5rZWRKYWUoKSk7CiAgICAgfQogCkBAIC02MzUsMjAgKzYzNSwyMCBA
QCB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlR3JlZWR5UXVhbnRpCiAKICAgICBKbXBEc3Qg
cXVhbnRpZmllckZhaWxlZCA9IG1faml0LmxhYmVsKCk7CiAgICAgLy8gKDQuMSkgUmVzdG9yZSBv
cmlnaW5hbCB2YWx1ZSBvZiBxdWFudGlmaWVyQ291bnRSZWdpc3RlciBmcm9tIHRoZSBzdGFjawot
ICAgIG1faml0LmVtaXRQb3BsX3IocXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOworICAgIG1faml0
LnBvcGxfcihxdWFudGlmaWVyQ291bnRSZWdpc3Rlcik7CiAgICAgZmFpbHVyZXMuYXBwZW5kKG1f
aml0LmVtaXRVbmxpbmtlZEptcCgpKTsgCiAKICAgICAvLyAoMykgQmFja3RyYWNrCiAKICAgICBK
bXBEc3QgYmFja3RyYWNrID0gbV9qaXQubGFiZWwoKTsKICAgICAvLyAoMy4xKSB0aGlzIHdhcyBw
cmVzZXJ2ZWQgcHJpb3IgdG8gZXhlY3V0aW5nIHRoZSBhbHRlcm5hdGl2ZQotICAgIG1faml0LmVt
aXRQb3BsX3IoY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIpOworICAgIG1faml0LnBvcGxfcihjdXJy
ZW50UG9zaXRpb25SZWdpc3Rlcik7CiAgICAgLy8gKDMuMikgY2hlY2sgd2UgY2FuIHJldHJ5IHdp
dGggZmV3ZXIgbWF0Y2hlcyAtIGJhY2t0cmFja2luZyBmYWlscyBpZiBhbHJlYWR5IGF0IHRoZSBt
aW5pbXVtCi0gICAgbV9qaXQuZW1pdENtcGxfaTMycihtaW4sIHF1YW50aWZpZXJDb3VudFJlZ2lz
dGVyKTsKKyAgICBtX2ppdC5jbXBsX2kzMnIobWluLCBxdWFudGlmaWVyQ291bnRSZWdpc3Rlcik7
CiAgICAgbV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5rZWRKZSgpLCBxdWFudGlmaWVyRmFpbGVk
KTsKICAgICAvLyAoMy4zKSByb2xsIG9mZiBvbmUgbWF0Y2gsIGFuZCByZXRyeS4KICAgICBmdW5j
dG9yLmJhY2t0cmFjayh0aGlzKTsKLSAgICBtX2ppdC5lbWl0U3VibF9pOHIoMSwgcXVhbnRpZmll
ckNvdW50UmVnaXN0ZXIpOworICAgIG1faml0LnN1YmxfaThyKDEsIHF1YW50aWZpZXJDb3VudFJl
Z2lzdGVyKTsKIAogICAgIC8vICgyKSBUcnkgYW4gYWx0ZXJuYXRpdmUuCiAKQEAgLTY1OCwxMCAr
NjU4LDEwIEBAIHZvaWQgV1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVHcmVlZHlRdWFudGkKICAgICAg
ICAgbV9qaXQubGluayhuZXdGYWlsdXJlc1tpXSwgdHJ5QWx0ZXJuYXRpdmUpOwogICAgIG5ld0Zh
aWx1cmVzLmNsZWFyKCk7CiAgICAgLy8gKDIuMikgcmVjdXJzaXZlbHkgY2FsbCB0byBwYXJzZUFs
dGVybmF0aXZlLCBpZiBpdCBmYWxscyB0aHJvdWdoLCBzdWNjZXNzIQotICAgIG1faml0LmVtaXRQ
dXNobF9yKGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsKKyAgICBtX2ppdC5wdXNobF9yKGN1cnJl
bnRQb3NpdGlvblJlZ2lzdGVyKTsKICAgICBtX3BhcnNlci5wYXJzZUFsdGVybmF0aXZlKG5ld0Zh
aWx1cmVzKTsKLSAgICBtX2ppdC5lbWl0QWRkbF9pOHIoNCwgWDg2QXNzZW1ibGVyOjplc3ApOwot
ICAgIG1faml0LmVtaXRQb3BsX3IocXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOworICAgIG1faml0
LmFkZGxfaThyKDQsIFg4NkFzc2VtYmxlcjo6ZXNwKTsKKyAgICBtX2ppdC5wb3BsX3IocXVhbnRp
ZmllckNvdW50UmVnaXN0ZXIpOwogICAgIC8vICgyLjMpIGxpbmsgZmFpbHVyZSBjYXNlcyB0byBo
ZXJlLgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZXdGYWlsdXJlcy5zaXplKCk7ICsr
aSkKICAgICAgICAgbV9qaXQubGluayhuZXdGYWlsdXJlc1tpXSwgYmFja3RyYWNrKTsKQEAgLTY3
MSw5ICs2NzEsOSBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlR3JlZWR5UXVhbnRpCiB2
b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlUGF0dGVybkNoYXJhY3RlcihKbXBTcmNWZWN0b3Im
IGZhaWx1cmVzLCBpbnQgY2gpCiB7CiAgICAgLy8gY2hlY2sgdGhlcmUgaXMgbW9yZSBpbnB1dCwg
cmVhZCBhIGNoYXIuCi0gICAgbV9qaXQuZW1pdENtcGxfcnIobGVuZ3RoUmVnaXN0ZXIsIGN1cnJl
bnRQb3NpdGlvblJlZ2lzdGVyKTsKKyAgICBtX2ppdC5jbXBsX3JyKGxlbmd0aFJlZ2lzdGVyLCBj
dXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CiAgICAgZmFpbHVyZXMuYXBwZW5kKG1faml0LmVtaXRV
bmxpbmtlZEplKCkpOwotICAgIG1faml0LmVtaXRNb3Z6d2xfbXIoaW5wdXRSZWdpc3RlciwgY3Vy
cmVudFBvc2l0aW9uUmVnaXN0ZXIsIDIsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKKyAgICBtX2pp
dC5tb3Z6d2xfbXIoaW5wdXRSZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIsIDIsIGN1
cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKIAogICAgIC8vIHVzZWQgZm9yIHVuaWNvZGUgY2FzZSBpbnNl
bnNpdGl2ZQogICAgIGJvb2wgaGFzVXBwZXIgPSBmYWxzZTsKQEAgLTY4NSwxMSArNjg1LDExIEBA
IHZvaWQgV1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVQYXR0ZXJuQ2hhcmEKICAgICAgICAgCiAgICAg
ICAgIC8vIGNoZWNrIGZvciBhc2NpaSBjYXNlIHNlbnNpdGl2ZSBjaGFyYWN0ZXJzCiAgICAgICAg
IGlmIChpc0FTQ0lJQWxwaGEoY2gpKSB7Ci0gICAgICAgICAgICBtX2ppdC5lbWl0T3JsX2k4cigz
MiwgY3VycmVudFZhbHVlUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9qaXQub3JsX3JyKDMyLCBj
dXJyZW50VmFsdWVSZWdpc3Rlcik7CiAgICAgICAgICAgICBjaCB8PSAzMjsKICAgICAgICAgfSBl
bHNlIGlmICgoY2ggPiAweDdmKSAmJiAoKGxvd2VyID0gVW5pY29kZTo6dG9Mb3dlcihjaCkpICE9
ICh1cHBlciA9IFVuaWNvZGU6OnRvVXBwZXIoY2gpKSkpIHsKICAgICAgICAgICAgIC8vIGhhbmRs
ZSB1bmljb2RlIGNhc2Ugc2VudGl0aXZlIGNoYXJhY3RlcnMgLSBicmFuY2ggdG8gc3VjY2VzcyBv
biB1cHBlcgotICAgICAgICAgICAgbV9qaXQuZW1pdENtcGxfaTMycih1cHBlciwgY3VycmVudFZh
bHVlUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9qaXQuY21wbF9pMzJyKHVwcGVyLCBjdXJyZW50
VmFsdWVSZWdpc3Rlcik7CiAgICAgICAgICAgICBpc1VwcGVyID0gbV9qaXQuZW1pdFVubGlua2Vk
SmUoKTsKICAgICAgICAgICAgIGhhc1VwcGVyID0gdHJ1ZTsKICAgICAgICAgICAgIGNoID0gbG93
ZXI7CkBAIC02OTcsNyArNjk3LDcgQEAgdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZVBhdHRl
cm5DaGFyYQogICAgIH0KICAgICAKICAgICAvLyBjaGVja3MgZm9yIGNoLCBvciBsb3dlciBjYXNl
IHZlcnNpb24gb2YgY2gsIGlmIGluc2Vuc2l0aXZlCi0gICAgbV9qaXQuZW1pdENtcGxfaTMycigo
dW5zaWduZWQgc2hvcnQpY2gsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKKyAgICBtX2ppdC5jbXBs
X2kzMnIoKHVuc2lnbmVkIHNob3J0KWNoLCBjdXJyZW50VmFsdWVSZWdpc3Rlcik7CiAgICAgZmFp
bHVyZXMuYXBwZW5kKG1faml0LmVtaXRVbmxpbmtlZEpuZSgpKTsKIAogICAgIGlmIChtX3BhcnNl
ci5tX2lnbm9yZUNhc2UgJiYgaGFzVXBwZXIpIHsKQEAgLTcwNiw3ICs3MDYsNyBAQCB2b2lkIFdS
RUNHZW5lcmF0b3I6OmdlbmVyYXRlUGF0dGVybkNoYXJhCiAgICAgfQogICAgIAogICAgIC8vIG9u
IHN1Y2Nlc3MgY29uc3VtZSB0aGUgY2hhcgotICAgIG1faml0LmVtaXRBZGRsX2k4cigxLCBjdXJy
ZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQuYWRkbF9pOHIoMSwgY3VycmVudFBvc2l0
aW9uUmVnaXN0ZXIpOwogfQogCiB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlQ2hhcmFjdGVy
Q2xhc3NJbnZlcnRlZFJhbmdlKEptcFNyY1ZlY3RvciYgZmFpbHVyZXMsIEptcFNyY1ZlY3RvciYg
bWF0Y2hEZXN0LCBjb25zdCBDaGFyYWN0ZXJDbGFzc1JhbmdlKiByYW5nZXMsIHVuc2lnbmVkIGNv
dW50LCB1bnNpZ25lZCogbWF0Y2hJbmRleCwgY29uc3QgVUNoYXIqIG1hdGNoZXMsIHVuc2lnbmVk
IG1hdGNoQ291bnQpCkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5l
cmF0ZUNoYXJhY3RlckNsYQogICAgICAgICBjaGFyIGxvID0gcmFuZ2VzW3doaWNoXS5iZWdpbjsK
ICAgICAgICAgY2hhciBoaSA9IHJhbmdlc1t3aGljaF0uZW5kOwogICAgICAgICAKLSAgICAgICAg
bV9qaXQuZW1pdENtcGxfaTMycigodW5zaWduZWQgc2hvcnQpbG8sIGN1cnJlbnRWYWx1ZVJlZ2lz
dGVyKTsKKyAgICAgICAgbV9qaXQuY21wbF9pMzJyKCh1bnNpZ25lZCBzaG9ydClsbywgY3VycmVu
dFZhbHVlUmVnaXN0ZXIpOwogCiAgICAgICAgIC8vIGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgcmFu
Z2VzIG9yIG1hdGNoZXMgYmVsb3cgbG8uICBJZiBub3QsIGp1c3QgamwgdG8gZmFpbHVyZSAtCiAg
ICAgICAgIC8vIGlmIHRoZXJlIGlzIGFueXRoaW5nIGVsc2UgdG8gY2hlY2ssIGNoZWNrIHRoYXQg
Zmlyc3QsIGlmIGl0IGZhbGxzIHRocm91Z2ggam1wIHRvIGZhaWx1cmUuCkBAIC03MjksNyArNzI5
LDcgQEAgdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZUNoYXJhY3RlckNsYQogICAgICAgICAg
ICAgICAgIGdlbmVyYXRlQ2hhcmFjdGVyQ2xhc3NJbnZlcnRlZFJhbmdlKGZhaWx1cmVzLCBtYXRj
aERlc3QsIHJhbmdlcywgd2hpY2gsIG1hdGNoSW5kZXgsIG1hdGNoZXMsIG1hdGNoQ291bnQpOwog
ICAgICAgICAgICAgCiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgbV9qaXQuZW1p
dENtcGxfaTMycigodW5zaWduZWQgc2hvcnQpbWF0Y2hlc1sqbWF0Y2hJbmRleF0sIGN1cnJlbnRW
YWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIoKHVuc2lnbmVk
IHNob3J0KW1hdGNoZXNbKm1hdGNoSW5kZXhdLCBjdXJyZW50VmFsdWVSZWdpc3Rlcik7CiAgICAg
ICAgICAgICAgICAgbWF0Y2hEZXN0LmFwcGVuZChtX2ppdC5lbWl0VW5saW5rZWRKZSgpKTsKICAg
ICAgICAgICAgICAgICArKyptYXRjaEluZGV4OwogICAgICAgICAgICAgfSB3aGlsZSAoKCptYXRj
aEluZGV4IDwgbWF0Y2hDb3VudCkgJiYgKG1hdGNoZXNbKm1hdGNoSW5kZXhdIDwgbG8pKTsKQEAg
LTc0OSw3ICs3NDksNyBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlQ2hhcmFjdGVyQ2xh
CiAgICAgICAgIHdoaWxlICgoKm1hdGNoSW5kZXggPCBtYXRjaENvdW50KSAmJiAobWF0Y2hlc1sq
bWF0Y2hJbmRleF0gPD0gaGkpKQogICAgICAgICAgICAgKysqbWF0Y2hJbmRleDsKIAotICAgICAg
ICBtX2ppdC5lbWl0Q21wbF9pMzJyKCh1bnNpZ25lZCBzaG9ydCloaSwgY3VycmVudFZhbHVlUmVn
aXN0ZXIpOworICAgICAgICBtX2ppdC5jbXBsX2kzMnIoKHVuc2lnbmVkIHNob3J0KWhpLCBjdXJy
ZW50VmFsdWVSZWdpc3Rlcik7CiAgICAgICAgIG1hdGNoRGVzdC5hcHBlbmQobV9qaXQuZW1pdFVu
bGlua2VkSmxlKCkpOwogICAgICAgICAvLyBmYWxsIHRocm91Z2ggdG8gaGVyZSwgdGhlIHZhbHVl
IGlzIGFib3ZlIGhpLgogCkBAIC03NjQsMTMgKzc2NCwxMyBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6
OmdlbmVyYXRlQ2hhcmFjdGVyQ2xhCiB7CiAgICAgSm1wU3JjIHVuaWNvZGVGYWlsOwogICAgIGlm
IChjaGFyQ2xhc3MubnVtTWF0Y2hlc1VuaWNvZGUgfHwgY2hhckNsYXNzLm51bVJhbmdlc1VuaWNv
ZGUpIHsKLSAgICAgICAgbV9qaXQuZW1pdENtcGxfaThyKDB4N2YsIGN1cnJlbnRWYWx1ZVJlZ2lz
dGVyKTsKKyAgICAgICAgbV9qaXQuY21wbF9pOHIoMHg3ZiwgY3VycmVudFZhbHVlUmVnaXN0ZXIp
OwogICAgICAgICBKbXBTcmMgaXNBc2NpaSA9IG1faml0LmVtaXRVbmxpbmtlZEpsZSgpOwogICAg
IAogICAgICAgICBpZiAoY2hhckNsYXNzLm51bU1hdGNoZXNVbmljb2RlKSB7CiAgICAgICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY2hhckNsYXNzLm51bU1hdGNoZXNVbmljb2RlOyAr
K2kpIHsKICAgICAgICAgICAgICAgICBVQ2hhciBjaCA9IGNoYXJDbGFzcy5tYXRjaGVzVW5pY29k
ZVtpXTsKLSAgICAgICAgICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJyKCh1bnNpZ25lZCBzaG9y
dCljaCwgY3VycmVudFZhbHVlUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1faml0LmNtcGxf
aTMycigodW5zaWduZWQgc2hvcnQpY2gsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKICAgICAgICAg
ICAgICAgICBtYXRjaERlc3QuYXBwZW5kKG1faml0LmVtaXRVbmxpbmtlZEplKCkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CkBAIC03ODAsOSArNzgwLDkgQEAgdm9pZCBXUkVDR2VuZXJhdG9y
OjpnZW5lcmF0ZUNoYXJhY3RlckNsYQogICAgICAgICAgICAgICAgIFVDaGFyIGxvID0gY2hhckNs
YXNzLnJhbmdlc1VuaWNvZGVbaV0uYmVnaW47CiAgICAgICAgICAgICAgICAgVUNoYXIgaGkgPSBj
aGFyQ2xhc3MucmFuZ2VzVW5pY29kZVtpXS5lbmQ7CiAgICAgICAgICAgICAgICAgCi0gICAgICAg
ICAgICAgICAgbV9qaXQuZW1pdENtcGxfaTMycigodW5zaWduZWQgc2hvcnQpbG8sIGN1cnJlbnRW
YWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIoKHVuc2lnbmVk
IHNob3J0KWxvLCBjdXJyZW50VmFsdWVSZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgSm1wU3Jj
IGJlbG93ID0gbV9qaXQuZW1pdFVubGlua2VkSmwoKTsKLSAgICAgICAgICAgICAgICBtX2ppdC5l
bWl0Q21wbF9pMzJyKCh1bnNpZ25lZCBzaG9ydCloaSwgY3VycmVudFZhbHVlUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgICAgIG1faml0LmNtcGxfaTMycigodW5zaWduZWQgc2hvcnQpaGksIGN1cnJl
bnRWYWx1ZVJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBtYXRjaERlc3QuYXBwZW5kKG1faml0
LmVtaXRVbmxpbmtlZEpsZSgpKTsKICAgICAgICAgICAgICAgICBtX2ppdC5saW5rKGJlbG93LCBt
X2ppdC5sYWJlbCgpKTsKICAgICAgICAgICAgIH0KQEAgLTc5Nyw3ICs3OTcsNyBAQCB2b2lkIFdS
RUNHZW5lcmF0b3I6OmdlbmVyYXRlQ2hhcmFjdGVyQ2xhCiAgICAgICAgIEptcFNyY1ZlY3RvciBm
YWlsdXJlczsgCiAgICAgICAgIGdlbmVyYXRlQ2hhcmFjdGVyQ2xhc3NJbnZlcnRlZFJhbmdlKGZh
aWx1cmVzLCBtYXRjaERlc3QsIGNoYXJDbGFzcy5yYW5nZXMsIGNoYXJDbGFzcy5udW1SYW5nZXMs
ICZtYXRjaEluZGV4LCBjaGFyQ2xhc3MubWF0Y2hlcywgY2hhckNsYXNzLm51bU1hdGNoZXMpOwog
ICAgICAgICB3aGlsZSAobWF0Y2hJbmRleCA8IGNoYXJDbGFzcy5udW1NYXRjaGVzKSB7Ci0gICAg
ICAgICAgICBtX2ppdC5lbWl0Q21wbF9pMzJyKCh1bnNpZ25lZCBzaG9ydCljaGFyQ2xhc3MubWF0
Y2hlc1ttYXRjaEluZGV4XSwgY3VycmVudFZhbHVlUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9q
aXQuY21wbF9pMzJyKCh1bnNpZ25lZCBzaG9ydCljaGFyQ2xhc3MubWF0Y2hlc1ttYXRjaEluZGV4
XSwgY3VycmVudFZhbHVlUmVnaXN0ZXIpOwogICAgICAgICAgICAgbWF0Y2hEZXN0LmFwcGVuZCht
X2ppdC5lbWl0VW5saW5rZWRKZSgpKTsKICAgICAgICAgICAgICsrbWF0Y2hJbmRleDsKICAgICAg
ICAgfQpAQCAtODE5LDE2ICs4MTksMTYgQEAgdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZUNo
YXJhY3RlckNsYQogICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJVXBwZXIoY2gpKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1faml0
LmVtaXRDbXBsX2kzMnIoKHVuc2lnbmVkIHNob3J0KWNoLCBjdXJyZW50VmFsdWVSZWdpc3Rlcik7
CisgICAgICAgICAgICBtX2ppdC5jbXBsX2kzMnIoKHVuc2lnbmVkIHNob3J0KWNoLCBjdXJyZW50
VmFsdWVSZWdpc3Rlcik7CiAgICAgICAgICAgICBtYXRjaERlc3QuYXBwZW5kKG1faml0LmVtaXRV
bmxpbmtlZEplKCkpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHVuc2lnbmVkIGNvdW50QVph
eiA9IG1hdGNoZXNBWmF6LnNpemUoKSkgewotICAgICAgICAgICAgbV9qaXQuZW1pdE9ybF9pOHIo
MzIsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1faml0Lm9ybF9ycigzMiwg
Y3VycmVudFZhbHVlUmVnaXN0ZXIpOwogCiAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY291bnRBWmF6OyArK2kpIHsKICAgICAgICAgICAgICAgICBjaGFyIGNoID0gbWF0Y2hl
c0FaYXpbaV07Ci0gICAgICAgICAgICAgICAgbV9qaXQuZW1pdENtcGxfaTMycigodW5zaWduZWQg
c2hvcnQpY2gsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5j
bXBsX2kzMnIoKHVuc2lnbmVkIHNob3J0KWNoLCBjdXJyZW50VmFsdWVSZWdpc3Rlcik7CiAgICAg
ICAgICAgICAgICAgbWF0Y2hEZXN0LmFwcGVuZChtX2ppdC5lbWl0VW5saW5rZWRKZSgpKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODQwLDkgKzg0MCw5IEBAIHZvaWQgV1JFQ0dlbmVy
YXRvcjo6Z2VuZXJhdGVDaGFyYWN0ZXJDbGEKIAogdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0
ZUNoYXJhY3RlckNsYXNzKEptcFNyY1ZlY3RvciYgZmFpbHVyZXMsIENoYXJhY3RlckNsYXNzJiBj
aGFyQ2xhc3MsIGJvb2wgaW52ZXJ0KQogewotICAgIG1faml0LmVtaXRDbXBsX3JyKGxlbmd0aFJl
Z2lzdGVyLCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQuY21wbF9ycihsZW5n
dGhSZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIpOwogICAgIGZhaWx1cmVzLmFwcGVu
ZChtX2ppdC5lbWl0VW5saW5rZWRKZSgpKTsKLSAgICBtX2ppdC5lbWl0TW92endsX21yKGlucHV0
UmVnaXN0ZXIsIGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyLCAyLCBjdXJyZW50VmFsdWVSZWdpc3Rl
cik7CisgICAgbV9qaXQubW92endsX21yKGlucHV0UmVnaXN0ZXIsIGN1cnJlbnRQb3NpdGlvblJl
Z2lzdGVyLCAyLCBjdXJyZW50VmFsdWVSZWdpc3Rlcik7CiAKICAgICBpZiAoaW52ZXJ0KQogICAg
ICAgICBnZW5lcmF0ZUNoYXJhY3RlckNsYXNzSW52ZXJ0ZWQoZmFpbHVyZXMsIGNoYXJDbGFzcyk7
CkBAIC04NTUsNyArODU1LDcgQEAgdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZUNoYXJhY3Rl
ckNsYQogICAgICAgICAgICAgbV9qaXQubGluayhzdWNjZXNzZXNbaV0sIGhlcmUpOwogICAgIH0K
ICAgICAKLSAgICBtX2ppdC5lbWl0QWRkbF9pOHIoMSwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIp
OworICAgIG1faml0LmFkZGxfaThyKDEsIGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsKIH0KIAog
V1JFQ0dlbmVyYXRvcjo6Sm1wU3JjIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlUGFyZW50aGVzZXMo
UGFyZW50aGVzZXNUeXBlIHR5cGUpCkBAIC04NjMsMjAgKzg2MywyMCBAQCBXUkVDR2VuZXJhdG9y
OjpKbXBTcmMgV1JFQ0dlbmVyYXRvcjo6Z2VuCiAgICAgdW5zaWduZWQgc3VicGF0dGVybklkID0g
KHR5cGUgPT0gY2FwdHVyaW5nKSA/ICsrbV9wYXJzZXIubV9udW1TdWJwYXR0ZXJucyA6IG1fcGFy
c2VyLm1fbnVtU3VicGF0dGVybnM7CiAKICAgICAvLyBwdXNoIHBvcywgYm90aCB0byBwcmVzZXJ2
ZSBmb3IgZmFpbCArIHJlbG9hZGVkIGluIHBhcnNlRGlzanVuY3Rpb24KLSAgICBtX2ppdC5lbWl0
UHVzaGxfcihjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQucHVzaGxfcihjdXJy
ZW50UG9zaXRpb25SZWdpc3Rlcik7CiAKICAgICAvLyBQbGFudCBhIGRpc2p1bmN0aW9uLCB3cmFw
cGVkIHRvIGludmVydCBiZWhhdmlvdXIgLSAKICAgICBKbXBTcmNWZWN0b3IgbmV3RmFpbHVyZXM7
CiAgICAgbV9wYXJzZXIucGFyc2VEaXNqdW5jdGlvbihuZXdGYWlsdXJlcyk7CiAgICAgCiAgICAg
aWYgKHR5cGUgPT0gY2FwdHVyaW5nKSB7Ci0gICAgICAgIG1faml0LmVtaXRQb3BsX3IoY3VycmVu
dFZhbHVlUmVnaXN0ZXIpOwotICAgICAgICBtX2ppdC5lbWl0TW92bF9ybShjdXJyZW50VmFsdWVS
ZWdpc3RlciwgKDIgKiBzdWJwYXR0ZXJuSWQpICogc2l6ZW9mKGludCksIG91dHB1dFJlZ2lzdGVy
KTsKLSAgICAgICAgbV9qaXQuZW1pdE1vdmxfcm0oY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIsICgy
ICogc3VicGF0dGVybklkICsgMSkgKiBzaXplb2YoaW50KSwgb3V0cHV0UmVnaXN0ZXIpOworICAg
ICAgICBtX2ppdC5wb3BsX3IoY3VycmVudFZhbHVlUmVnaXN0ZXIpOworICAgICAgICBtX2ppdC5t
b3ZsX3JtKGN1cnJlbnRWYWx1ZVJlZ2lzdGVyLCAoMiAqIHN1YnBhdHRlcm5JZCkgKiBzaXplb2Yo
aW50KSwgb3V0cHV0UmVnaXN0ZXIpOworICAgICAgICBtX2ppdC5tb3ZsX3JtKGN1cnJlbnRQb3Np
dGlvblJlZ2lzdGVyLCAoMiAqIHN1YnBhdHRlcm5JZCArIDEpICogc2l6ZW9mKGludCksIG91dHB1
dFJlZ2lzdGVyKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gbm9uX2NhcHR1cmluZykKLSAgICAg
ICAgbV9qaXQuZW1pdEFkZGxfaThyKDQsIFg4NkFzc2VtYmxlcjo6ZXNwKTsKKyAgICAgICAgbV9q
aXQuYWRkbF9pOHIoNCwgWDg2QXNzZW1ibGVyOjplc3ApOwogICAgIGVsc2UKLSAgICAgICAgbV9q
aXQuZW1pdFBvcGxfcihjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgICAgIG1faml0LnBv
cGxfcihjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CiAKICAgICAvLyBUaGlzIGlzIGEgbGl0dGxl
IGxhbWUgLSBqdW1wIHRvIGp1bXAgaWYgdGhlcmUgaXMgYSBuZXN0ZWQgZGlzanVuY3Rpb24uCiAg
ICAgLy8gKHN1Z2dlc3Rpb24gdG8gZml4OiBtYWtlIHBhcnNlRGlzanVuY3Rpb24gcG9wdWxhdGUg
YSBKbXBTcmNWZWN0b3Igb2YKQEAgLTg4OSw3ICs4ODksNyBAQCBXUkVDR2VuZXJhdG9yOjpKbXBT
cmMgV1JFQ0dlbmVyYXRvcjo6Z2VuCiAgICAgICAgIG1faml0LmxpbmsobmV3RmFpbHVyZXNbaV0s
IG9yaWdpbmFsRmFpbHVyZSk7CiAgICAgbmV3RmFpbHVyZXMuY2xlYXIoKTsKICAgICAvLyBmYWls
OiByZXN0b3JlIGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyCi0gICAgbV9qaXQuZW1pdFBvcGxfcihj
dXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQucG9wbF9yKGN1cnJlbnRQb3NpdGlv
blJlZ2lzdGVyKTsKIAogICAgIEptcFNyYyBqdW1wVG9GYWlsOwogICAgIC8vIElmIHRoaXMgd2Fz
IGFuIGludmVydGVkIGFzc2VydCwgZmFpbCA9IHN1Y2Nlc3MhIC0ganVzdCBsZXQgdGhlIGZhaWx1
cmUgY2FzZSBkcm9wIHRocm91Z2gsCkBAIC05MjIsOCArOTIyLDggQEAgV1JFQ0dlbmVyYXRvcjo6
Sm1wU3JjIFdSRUNHZW5lcmF0b3I6OmdlcgogICAgICAgICBtX2ppdC5saW5rKG5ld0ZhaWx1cmVz
W2ldLCBzdWJQYXR0ZXJuUmVzZXRUcmFtcG9saW5lKTsKICAgICBuZXdGYWlsdXJlcy5jbGVhcigp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IHN1YnBhdHRlcm5JZEJlZm9yZSArIDE7IGkgPD0gc3Vi
cGF0dGVybklkQWZ0ZXI7ICsraSkgewotICAgICAgICBtX2ppdC5lbWl0TW92bF9pMzJtKC0xLCAo
MiAqIGkpICogc2l6ZW9mKGludCksIG91dHB1dFJlZ2lzdGVyKTsKLSAgICAgICAgbV9qaXQuZW1p
dE1vdmxfaTMybSgtMSwgKDIgKiBpICsgMSkgKiBzaXplb2YoaW50KSwgb3V0cHV0UmVnaXN0ZXIp
OworICAgICAgICBtX2ppdC5tb3ZsX2kzMm0oLTEsICgyICogaSkgKiBzaXplb2YoaW50KSwgb3V0
cHV0UmVnaXN0ZXIpOworICAgICAgICBtX2ppdC5tb3ZsX2kzMm0oLTEsICgyICogaSArIDEpICog
c2l6ZW9mKGludCksIG91dHB1dFJlZ2lzdGVyKTsKICAgICB9CiAgICAgCiAgICAgSm1wU3JjIG5l
d0ZhaWxKdW1wID0gbV9qaXQuZW1pdFVubGlua2VkSm1wKCk7CkBAIC05MzgsMTEgKzkzOCwxMSBA
QCB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlQXNzZXJ0aW9uQk9MCiAgICAgICAgIEptcFNy
Y1ZlY3RvciBwcmV2aW91c0lzTmV3bGluZTsKIAogICAgICAgICAvLyBiZWdpbiBvZiBpbnB1dCA9
PSBzdWNjZXNzCi0gICAgICAgIG1faml0LmVtaXRDbXBsX2k4cigwLCBjdXJyZW50UG9zaXRpb25S
ZWdpc3Rlcik7CisgICAgICAgIG1faml0LmNtcGxfaThyKDAsIGN1cnJlbnRQb3NpdGlvblJlZ2lz
dGVyKTsKICAgICAgICAgcHJldmlvdXNJc05ld2xpbmUuYXBwZW5kKG1faml0LmVtaXRVbmxpbmtl
ZEplKCkpOwogCiAgICAgICAgIC8vIG5vdyBjaGVjayBwcmV2IGNoYXIgYWdhaW5zdCBuZXdsaW5l
IGNoYXJhY3RlcnMuCi0gICAgICAgIG1faml0LmVtaXRNb3Z6d2xfbXIoLTIsIGlucHV0UmVnaXN0
ZXIsIGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyLCAyLCBjdXJyZW50VmFsdWVSZWdpc3Rlcik7Cisg
ICAgICAgIG1faml0Lm1vdnp3bF9tcigtMiwgaW5wdXRSZWdpc3RlciwgY3VycmVudFBvc2l0aW9u
UmVnaXN0ZXIsIDIsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKICAgICAgICAgZ2VuZXJhdGVDaGFy
YWN0ZXJDbGFzc0ludmVydGVkKHByZXZpb3VzSXNOZXdsaW5lLCBnZXRDaGFyYWN0ZXJDbGFzc05l
d2xpbmUoKSk7CiAKICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKG1faml0LmVtaXRVbmxpbmtlZEpt
cCgpKTsKQEAgLTk1Miw3ICs5NTIsNyBAQCB2b2lkIFdSRUNHZW5lcmF0b3I6OmdlbmVyYXRlQXNz
ZXJ0aW9uQk9MCiAgICAgICAgICAgICBtX2ppdC5saW5rKHByZXZpb3VzSXNOZXdsaW5lW2ldLCBz
dWNjZXNzKTsKICAgICAgICAgcHJldmlvdXNJc05ld2xpbmUuY2xlYXIoKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBtX2ppdC5lbWl0Q21wbF9pOHIoMCwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIp
OworICAgICAgICBtX2ppdC5jbXBsX2k4cigwLCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CiAg
ICAgICAgIGZhaWx1cmVzLmFwcGVuZChtX2ppdC5lbWl0VW5saW5rZWRKbmUoKSk7CiAgICAgfQog
fQpAQCAtOTYzLDExICs5NjMsMTEgQEAgdm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZUFzc2Vy
dGlvbkVPTAogICAgICAgICBKbXBTcmNWZWN0b3IgbmV4dElzTmV3bGluZTsKIAogICAgICAgICAv
LyBlbmQgb2YgaW5wdXQgPT0gc3VjY2VzcwotICAgICAgICBtX2ppdC5lbWl0Q21wbF9ycihsZW5n
dGhSZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIpOworICAgICAgICBtX2ppdC5jbXBs
X3JyKGxlbmd0aFJlZ2lzdGVyLCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CiAgICAgICAgIG5l
eHRJc05ld2xpbmUuYXBwZW5kKG1faml0LmVtaXRVbmxpbmtlZEplKCkpOwogCiAgICAgICAgIC8v
IG5vdyBjaGVjayBuZXh0IGNoYXIgYWdhaW5zdCBuZXdsaW5lIGNoYXJhY3RlcnMuCi0gICAgICAg
IG1faml0LmVtaXRNb3Z6d2xfbXIoaW5wdXRSZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0
ZXIsIDIsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQubW92endsX21yKGlu
cHV0UmVnaXN0ZXIsIGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyLCAyLCBjdXJyZW50VmFsdWVSZWdp
c3Rlcik7CiAgICAgICAgIGdlbmVyYXRlQ2hhcmFjdGVyQ2xhc3NJbnZlcnRlZChuZXh0SXNOZXds
aW5lLCBnZXRDaGFyYWN0ZXJDbGFzc05ld2xpbmUoKSk7CiAKICAgICAgICAgZmFpbHVyZXMuYXBw
ZW5kKG1faml0LmVtaXRVbmxpbmtlZEptcCgpKTsKQEAgLTk3Nyw3ICs5NzcsNyBAQCB2b2lkIFdS
RUNHZW5lcmF0b3I6OmdlbmVyYXRlQXNzZXJ0aW9uRU9MCiAgICAgICAgICAgICBtX2ppdC5saW5r
KG5leHRJc05ld2xpbmVbaV0sIHN1Y2Nlc3MpOwogICAgICAgICBuZXh0SXNOZXdsaW5lLmNsZWFy
KCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgbV9qaXQuZW1pdENtcGxfcnIobGVuZ3RoUmVnaXN0
ZXIsIGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsKKyAgICAgICAgbV9qaXQuY21wbF9ycihsZW5n
dGhSZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIpOwogICAgICAgICBmYWlsdXJlcy5h
cHBlbmQobV9qaXQuZW1pdFVubGlua2VkSm5lKCkpOwogICAgIH0KIH0KQEAgLTk5MCwxMCArOTkw
LDEwIEBAIHZvaWQgV1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVBc3NlcnRpb25Xb3IKICAgICAvLyAo
MSkgQ2hlY2sgaWYgdGhlIHByZXZpb3VzIHZhbHVlIHdhcyBhIHdvcmQgY2hhcgogCiAgICAgLy8g
KDEuMSkgY2hlY2sgZm9yIGJlZ2luIG9mIGlucHV0Ci0gICAgbV9qaXQuZW1pdENtcGxfaThyKDAs
IGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsKKyAgICBtX2ppdC5jbXBsX2k4cigwLCBjdXJyZW50
UG9zaXRpb25SZWdpc3Rlcik7CiAgICAgSm1wU3JjIGF0QmVnaW4gPSBtX2ppdC5lbWl0VW5saW5r
ZWRKZSgpOwogICAgIC8vICgxLjIpIGxvYWQgdGhlIGxhc3QgY2hhciwgYW5kIGNoY2sgaWYgaXMg
d29yZCBjaGFyYWN0ZXIKLSAgICBtX2ppdC5lbWl0TW92endsX21yKC0yLCBpbnB1dFJlZ2lzdGVy
LCBjdXJyZW50UG9zaXRpb25SZWdpc3RlciwgMiwgY3VycmVudFZhbHVlUmVnaXN0ZXIpOworICAg
IG1faml0Lm1vdnp3bF9tcigtMiwgaW5wdXRSZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0
ZXIsIDIsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKICAgICBKbXBTcmNWZWN0b3IgcHJldmlvdXNJ
c1dvcmQ7CiAgICAgZ2VuZXJhdGVDaGFyYWN0ZXJDbGFzc0ludmVydGVkKHByZXZpb3VzSXNXb3Jk
LCBnZXRDaGFyYWN0ZXJDbGFzc1dvcmRjaGFyKCkpOwogICAgIC8vICgxLjMpIGlmIHdlIGdldCBo
ZXJlLCBwcmV2aW91cyBpcyBub3QgYSB3b3JkIGNoYXIKQEAgLTEwMDIsMTAgKzEwMDIsMTAgQEAg
dm9pZCBXUkVDR2VuZXJhdG9yOjpnZW5lcmF0ZUFzc2VydGlvbldvcgogICAgIC8vICgyKSBIYW5k
bGUgc2l0dWF0aW9uIHdoZXJlIHByZXZpb3VzIHdhcyBOT1QgYSBcdwogCiAgICAgLy8gKDIuMSkg
Y2hlY2sgZm9yIGVuZCBvZiBpbnB1dAotICAgIG1faml0LmVtaXRDbXBsX3JyKGxlbmd0aFJlZ2lz
dGVyLCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQuY21wbF9ycihsZW5ndGhS
ZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIpOwogICAgIG5vdFdvcmRCb3VuZGFyeS5h
cHBlbmQobV9qaXQuZW1pdFVubGlua2VkSmUoKSk7CiAgICAgLy8gKDIuMikgbG9hZCB0aGUgbmV4
dCBjaGFyLCBhbmQgY2hjayBpZiBpcyB3b3JkIGNoYXJhY3RlcgotICAgIG1faml0LmVtaXRNb3Z6
d2xfbXIoaW5wdXRSZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIsIDIsIGN1cnJlbnRW
YWx1ZVJlZ2lzdGVyKTsKKyAgICBtX2ppdC5tb3Z6d2xfbXIoaW5wdXRSZWdpc3RlciwgY3VycmVu
dFBvc2l0aW9uUmVnaXN0ZXIsIDIsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKICAgICBnZW5lcmF0
ZUNoYXJhY3RlckNsYXNzSW52ZXJ0ZWQod29yZEJvdW5kYXJ5LCBnZXRDaGFyYWN0ZXJDbGFzc1dv
cmRjaGFyKCkpOwogICAgIC8vICgyLjMpIElmIHdlIGdldCBoZXJlLCBuZWl0aGVyIGNoYXJzIGFy
ZSB3b3JkIGNoYXJzCiAgICAgbm90V29yZEJvdW5kYXJ5LmFwcGVuZChtX2ppdC5lbWl0VW5saW5r
ZWRKbXAoKSk7CkBAIC0xMDE4LDEwICsxMDE4LDEwIEBAIHZvaWQgV1JFQ0dlbmVyYXRvcjo6Z2Vu
ZXJhdGVBc3NlcnRpb25Xb3IKICAgICAgICAgbV9qaXQubGluayhwcmV2aW91c0lzV29yZFtpXSwg
c2VjdGlvbjMpOwogICAgIHByZXZpb3VzSXNXb3JkLmNsZWFyKCk7CiAgICAgLy8gKDMuMSkgY2hl
Y2sgZm9yIGVuZCBvZiBpbnB1dAotICAgIG1faml0LmVtaXRDbXBsX3JyKGxlbmd0aFJlZ2lzdGVy
LCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9qaXQuY21wbF9ycihsZW5ndGhSZWdp
c3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIpOwogICAgIHdvcmRCb3VuZGFyeS5hcHBlbmQo
bV9qaXQuZW1pdFVubGlua2VkSmUoKSk7CiAgICAgLy8gKDMuMikgbG9hZCB0aGUgbmV4dCBjaGFy
LCBhbmQgY2hjayBpZiBpcyB3b3JkIGNoYXJhY3RlcgotICAgIG1faml0LmVtaXRNb3Z6d2xfbXIo
aW5wdXRSZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0ZXIsIDIsIGN1cnJlbnRWYWx1ZVJl
Z2lzdGVyKTsKKyAgICBtX2ppdC5tb3Z6d2xfbXIoaW5wdXRSZWdpc3RlciwgY3VycmVudFBvc2l0
aW9uUmVnaXN0ZXIsIDIsIGN1cnJlbnRWYWx1ZVJlZ2lzdGVyKTsKICAgICBnZW5lcmF0ZUNoYXJh
Y3RlckNsYXNzSW52ZXJ0ZWQobm90V29yZEJvdW5kYXJ5LCBnZXRDaGFyYWN0ZXJDbGFzc1dvcmRj
aGFyKCkpOwogICAgIC8vICgzLjMpIElmIHdlIGdldCBoZXJlLCB0aGlzIGlzIGFuIGVuZCBvZiBh
IHdvcmQsIHdpdGhpbiB0aGUgaW5wdXQuCiAgICAgCkBAIC0xMDUxLDQxICsxMDUxLDQxIEBAIHZv
aWQgV1JFQ0dlbmVyYXRvcjo6Z2VuZXJhdGVBc3NlcnRpb25Xb3IKIAogdm9pZCBXUkVDR2VuZXJh
dG9yOjpnZW5lcmF0ZUJhY2tyZWZlcmVuY2UoSm1wU3JjVmVjdG9yJiBmYWlsdXJlcywgdW5zaWdu
ZWQgc3VicGF0dGVybklkKQogewotICAgIG1faml0LmVtaXRQdXNobF9yKGN1cnJlbnRQb3NpdGlv
blJlZ2lzdGVyKTsKLSAgICBtX2ppdC5lbWl0UHVzaGxfcihxdWFudGlmaWVyQ291bnRSZWdpc3Rl
cik7CisgICAgbV9qaXQucHVzaGxfcihjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CisgICAgbV9q
aXQucHVzaGxfcihxdWFudGlmaWVyQ291bnRSZWdpc3Rlcik7CiAKICAgICAvLyBnZXQgdGhlIHN0
YXJ0IHBvcyBvZiB0aGUgYmFja3JlZiBpbnRvIHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyIChtdWx0
aXB1cnBvc2UhKQotICAgIG1faml0LmVtaXRNb3ZsX21yKCgyICogc3VicGF0dGVybklkKSAqIHNp
emVvZihpbnQpLCBvdXRwdXRSZWdpc3RlciwgcXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOworICAg
IG1faml0Lm1vdmxfbXIoKDIgKiBzdWJwYXR0ZXJuSWQpICogc2l6ZW9mKGludCksIG91dHB1dFJl
Z2lzdGVyLCBxdWFudGlmaWVyQ291bnRSZWdpc3Rlcik7CiAKICAgICBKbXBTcmMgc2tpcEluY3Jl
bWVudCA9IG1faml0LmVtaXRVbmxpbmtlZEptcCgpOwogICAgIEptcERzdCB0b3BPZkxvb3AgPSBt
X2ppdC5sYWJlbCgpOwotICAgIG1faml0LmVtaXRBZGRsX2k4cigxLCBjdXJyZW50UG9zaXRpb25S
ZWdpc3Rlcik7Ci0gICAgbV9qaXQuZW1pdEFkZGxfaThyKDEsIHF1YW50aWZpZXJDb3VudFJlZ2lz
dGVyKTsKKyAgICBtX2ppdC5hZGRsX2k4cigxLCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7Cisg
ICAgbV9qaXQuYWRkbF9pOHIoMSwgcXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOwogICAgIG1faml0
Lmxpbmsoc2tpcEluY3JlbWVudCwgbV9qaXQubGFiZWwoKSk7CiAKICAgICAvLyBjaGVjayBpZiB3
ZSdyZSBhdCB0aGUgZW5kIG9mIGJhY2tyZWYgKGlmIHdlIGFyZSwgc3VjY2VzcyEpCi0gICAgbV9q
aXQuZW1pdENtcGxfcm0ocXVhbnRpZmllckNvdW50UmVnaXN0ZXIsICgoMiAqIHN1YnBhdHRlcm5J
ZCkgKyAxKSAqIHNpemVvZihpbnQpLCBvdXRwdXRSZWdpc3Rlcik7CisgICAgbV9qaXQuY21wbF9y
bShxdWFudGlmaWVyQ291bnRSZWdpc3RlciwgKCgyICogc3VicGF0dGVybklkKSArIDEpICogc2l6
ZW9mKGludCksIG91dHB1dFJlZ2lzdGVyKTsKICAgICBKbXBTcmMgZW5kT2ZCYWNrUmVmID0gbV9q
aXQuZW1pdFVubGlua2VkSmUoKTsKICAgICAKLSAgICBtX2ppdC5lbWl0TW92endsX21yKGlucHV0
UmVnaXN0ZXIsIHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyLCAyLCBjdXJyZW50VmFsdWVSZWdpc3Rl
cik7CisgICAgbV9qaXQubW92endsX21yKGlucHV0UmVnaXN0ZXIsIHF1YW50aWZpZXJDb3VudFJl
Z2lzdGVyLCAyLCBjdXJyZW50VmFsdWVSZWdpc3Rlcik7CiAgICAgCiAgICAgLy8gY2hlY2sgaWYg
d2UndmUgcnVuIG91dCBvZiBpbnB1dCAodGhpcyB3b3VsZCBiZSBhIGNhbiBvJ2ZhaWwpCi0gICAg
bV9qaXQuZW1pdENtcGxfcnIobGVuZ3RoUmVnaXN0ZXIsIGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVy
KTsKKyAgICBtX2ppdC5jbXBsX3JyKGxlbmd0aFJlZ2lzdGVyLCBjdXJyZW50UG9zaXRpb25SZWdp
c3Rlcik7CiAgICAgSm1wU3JjIGVuZE9mSW5wdXQgPSBtX2ppdC5lbWl0VW5saW5rZWRKZSgpOwog
ICAgIAotICAgIG1faml0LmVtaXRDbXB3X3JtKGN1cnJlbnRWYWx1ZVJlZ2lzdGVyLCBpbnB1dFJl
Z2lzdGVyLCBjdXJyZW50UG9zaXRpb25SZWdpc3RlciwgMik7CisgICAgbV9qaXQuY21wd19ybShj
dXJyZW50VmFsdWVSZWdpc3RlciwgaW5wdXRSZWdpc3RlciwgY3VycmVudFBvc2l0aW9uUmVnaXN0
ZXIsIDIpOwogICAgIG1faml0LmxpbmsobV9qaXQuZW1pdFVubGlua2VkSmUoKSwgdG9wT2ZMb29w
KTsKICAgICAKICAgICBtX2ppdC5saW5rKGVuZE9mSW5wdXQsIG1faml0LmxhYmVsKCkpOwogICAg
IC8vIEZhaWx1cmUKLSAgICBtX2ppdC5lbWl0UG9wbF9yKHF1YW50aWZpZXJDb3VudFJlZ2lzdGVy
KTsKLSAgICBtX2ppdC5lbWl0UG9wbF9yKGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsKKyAgICBt
X2ppdC5wb3BsX3IocXVhbnRpZmllckNvdW50UmVnaXN0ZXIpOworICAgIG1faml0LnBvcGxfcihj
dXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CiAgICAgZmFpbHVyZXMuYXBwZW5kKG1faml0LmVtaXRV
bmxpbmtlZEptcCgpKTsKICAgICAKICAgICAvLyBTdWNjZXNzCiAgICAgbV9qaXQubGluayhlbmRP
ZkJhY2tSZWYsIG1faml0LmxhYmVsKCkpOwotICAgIG1faml0LmVtaXRQb3BsX3IocXVhbnRpZmll
ckNvdW50UmVnaXN0ZXIpOwotICAgIG1faml0LmVtaXRBZGRsX2k4cig0LCBYODZBc3NlbWJsZXI6
OmVzcCk7CisgICAgbV9qaXQucG9wbF9yKHF1YW50aWZpZXJDb3VudFJlZ2lzdGVyKTsKKyAgICBt
X2ppdC5hZGRsX2k4cig0LCBYODZBc3NlbWJsZXI6OmVzcCk7CiB9CiAKIHZvaWQgV1JFQ0dlbmVy
YXRvcjo6Z2VybmVyYXRlRGlzanVuY3Rpb24oSm1wU3JjVmVjdG9yJiBzdWNjZXNzZXMsIEptcFNy
Y1ZlY3RvciYgZmFpbHVyZXMpCkBAIC0xMDk4LDcgKzEwOTgsNyBAQCB2b2lkIFdSRUNHZW5lcmF0
b3I6Omdlcm5lcmF0ZURpc2p1bmN0aW9uCiAgICAgICAgIG1faml0LmxpbmsoZmFpbHVyZXNbaV0s
IGhlcmUpOwogICAgIGZhaWx1cmVzLmNsZWFyKCk7CiAgICAgCi0gICAgbV9qaXQuZW1pdE1vdmxf
bXIoWDg2QXNzZW1ibGVyOjplc3AsIGN1cnJlbnRQb3NpdGlvblJlZ2lzdGVyKTsKKyAgICBtX2pp
dC5tb3ZsX21yKFg4NkFzc2VtYmxlcjo6ZXNwLCBjdXJyZW50UG9zaXRpb25SZWdpc3Rlcik7CiB9
CiAKIHZvaWQgV1JFQ0dlbmVyYXRvcjo6dGVybWluYXRlRGlzanVuY3Rpb24oSm1wU3JjVmVjdG9y
JiBzdWNjZXNzZXMpCg==
</data>
<flag name="review"
          id="10381"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>