<?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>86132</bug_id>
          
          <creation_ts>2012-05-10 13:26:15 -0700</creation_ts>
          <short_desc>DFG should be able to inline functions that use arguments reflectively</short_desc>
          <delta_ts>2012-05-23 13:53:27 -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="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>620900</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-10 13:26:15 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>620903</commentid>
    <comment_count>1</comment_count>
      <attachid>141237</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-10 13:30:50 -0700</bug_when>
    <thetext>Created attachment 141237
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>622227</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-11 21:14:17 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/116838</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>632014</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-05-23 13:53:27 -0700</bug_when>
    <thetext>Merged in http://trac.webkit.org/changeset/118240</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>141237</attachid>
            <date>2012-05-10 13:30:50 -0700</date>
            <delta_ts>2012-05-10 17:01:26 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>inline_arguments_patch_1.diff</filename>
            <type>text/plain</type>
            <size>49551</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE2NjgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY5IEBA
CisyMDEyLTA1LTEwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBiZSBhYmxlIHRvIGlubGluZSBmdW5jdGlvbnMgdGhhdCB1c2UgYXJndW1lbnRz
IHJlZmxlY3RpdmVseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODYxMzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFRoaXMgdHVybnMgb24gaW5saW5pbmcgb2YgZnVuY3Rpb25zIHRoYXQgdXNl
IGFyZ3VtZW50cyByZWZsZWN0aXZlbHksIGJ1dCBpdAorICAgICAgICBkb2VzIG5vdCBkbyBhbnkg
b2YgdGhlIG9idmlvdXMgb3B0aW1pemF0aW9ucyB0aGF0IHRoaXMgZXhwb3Nlcy4gSSdsbCBzYXZl
IHRoYXQKKyAgICAgICAgZm9yIGFub3RoZXIgcGF0Y2ggLSB0aGUgaW1wb3J0YW50IHRoaW5nIGZv
ciBub3cgaXMgdGhhdCB0aGlzIGNvbnRhaW5zIGFsbCBvZgorICAgICAgICB0aGUgcGx1bWJpbmcg
bmVjZXNzYXJ5IHRvIG1ha2UgdGhpcyBraW5kIG9mIGlubGluaW5nIHNvdW5kIGV2ZW4gaW4gYml6
YXJybworICAgICAgICBjYXNlcyBsaWtlIGFuIGlubGluZSBjYWxsZWUgZXNjYXBpbmcgdGhlIGFy
Z3VtZW50cyBvYmplY3QgdG8gcGFydHMgb2YgdGhlCisgICAgICAgIGlubGluZSBjYWxsZXIgd2hl
cmUgdGhlIGFyZ3VtZW50cyBhcmUgb3RoZXJ3aXNlIGRlYWQuIE9yIGV2ZW4gbW9yZSBmdW4gY2Fz
ZXMKKyAgICAgICAgbGlrZSB3aGVyZSB5b3UndmUgaW5saW5lZCB0byBhbiBpbmxpbmUgc3RhY2sg
dGhhdCBpcyB0aHJlZS1kZWVwLCBhbmQgdGhlCisgICAgICAgIGZ1bmN0aW9uIG9uIHRvcCBvZiB0
aGUgaW5saW5lIHN0YWNrIHJlZmxlY3RpdmVseSBhY2Nlc3NlcyB0aGUgYXJndW1lbnRzIG9mIGEK
KyAgICAgICAgZnVuY3Rpb24gdGhhdCBpcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBpbmxpbmUgc3Rh
Y2suIEFueSBzdWJzZXF1ZW50CisgICAgICAgIG9wdGltaXphdGlvbnMgdGhhdCB3ZSBkbyBmb3Ig
dGhlIG9idmlvdXMgY2FzZXMgb2YgYXJndW1lbnRzIHVzYWdlIGluIGlubGluZQorICAgICAgICBm
dW5jdGlvbnMgd2lsbCBoYXZlIHRvIHRha2UgY2FyZSBub3QgdG8gYnJlYWsgdGhlIGJhc2VsaW5l
IGZ1bmN0aW9uYWxpdHkgdGhhdAorICAgICAgICB0aGlzIHBhdGNoIHBsdW1icyB0b2dldGhlci4K
KworICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6cHJpbnRDYWxsT3ApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAg
ICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhl
bHBlcnMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OmFyZ3VtZW50c1Jl
Z2lzdGVyRm9yKToKKyAgICAgICAgKEFzc2VtYmx5SGVscGVycyk6CisgICAgICAgICogZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKElubGluZVN0YWNrRW50cnkpOgorICAgICAg
ICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKKyAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmVTdGFja0VudHJ5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIGRmZy9E
RkdDQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpDQ2FsbEhlbHBlcnM6OnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgIChDQ2FsbEhlbHBlcnMpOgorICAgICAg
ICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5JbmxpbmVP
cGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdEcml2ZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OkNhbGxGcmFtZTo6c29tZUNvZGVCbG9ja0ZvclBvc3NpYmx5SW5saW5lZENvZGUp
OgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoRXhlY1N0YXRl
KToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzb21lQ29kZUJsb2NrRm9yUG9zc2libHlJbmxp
bmVkQ29kZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6cmV0cmlldmVBcmd1bWVudHNGcm9tVk1Db2RlKToKKyAgICAg
ICAgKiBydW50aW1lL0FyZ3VtZW50cy5jcHA6CisgICAgICAgIChKU0M6OkFyZ3VtZW50czo6dGVh
ck9mZik6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OnRlYXJPZmZG
b3JJbmxpbmVDYWxsRnJhbWUpOgorICAgICAgICAqIHJ1bnRpbWUvQXJndW1lbnRzLmg6CisgICAg
ICAgIChBcmd1bWVudHMpOgorICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmNyZWF0ZSk6CisgICAg
ICAgIChKU0M6OkFyZ3VtZW50czo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDKToKKwog
MjAxMi0wNS0wOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIERG
RyBzaG91bGQgYWxsb3cgaW5saW5pbmcgaW4gY2FzZSBvZiBjZXJ0YWluIGFyaXR5IG1pc21hdGNo
ZXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAxMTY2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcwLDEyICszNzAsMzEgQEAgdm9pZCBDb2Rl
QmxvY2s6OnByaW50R2V0QnlJZENhY2hlU3RhdHVzKAogI2VuZGlmCiB9CiAKLXZvaWQgQ29kZUJs
b2NrOjpwcmludENhbGxPcChFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgVmVjdG9yPElu
c3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGl0LCBjb25zdCBjaGFyKiBvcCkKK3ZvaWQgQ29k
ZUJsb2NrOjpwcmludENhbGxPcChFeGVjU3RhdGUqIGV4ZWMsIGludCBsb2NhdGlvbiwgVmVjdG9y
PEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGl0LCBjb25zdCBjaGFyKiBvcCwgQ2FjaGVE
dW1wTW9kZSBjYWNoZUR1bXBNb2RlKQogewogICAgIGludCBmdW5jID0gKCsraXQpLT51Lm9wZXJh
bmQ7CiAgICAgaW50IGFyZ0NvdW50ID0gKCsraXQpLT51Lm9wZXJhbmQ7CiAgICAgaW50IHJlZ2lz
dGVyT2Zmc2V0ID0gKCsraXQpLT51Lm9wZXJhbmQ7Ci0gICAgZGF0YUxvZygiWyU0ZF0gJXNcdCAl
cywgJWQsICVkXG4iLCBsb2NhdGlvbiwgb3AsIHJlZ2lzdGVyTmFtZShleGVjLCBmdW5jKS5kYXRh
KCksIGFyZ0NvdW50LCByZWdpc3Rlck9mZnNldCk7CisgICAgZGF0YUxvZygiWyU0ZF0gJXNcdCAl
cywgJWQsICVkIiwgbG9jYXRpb24sIG9wLCByZWdpc3Rlck5hbWUoZXhlYywgZnVuYykuZGF0YSgp
LCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQpOworICAgIGlmIChjYWNoZUR1bXBNb2RlID09IER1
bXBDYWNoZXMpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSBpdFsxXS51LmNhbGxMaW5rSW5mbzsKKyAgICAgICAgaWYgKGNhbGxM
aW5rSW5mby0+bGFzdFNlZW5DYWxsZWUpIHsKKyAgICAgICAgICAgIGRhdGFMb2coIiBsbGludCgl
cCwgZXhlYyAlcCkiLAorICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVu
Q2FsbGVlLmdldCgpLAorICAgICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVu
Q2FsbGVlLT5leGVjdXRhYmxlKCkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGRhdGFM
b2coIiBsbGludChub3Qgc2V0KSIpOworI2VuZGlmCisjaWYgRU5BQkxFKEpJVCkKKyAgICAgICAg
SlNGdW5jdGlvbiogdGFyZ2V0ID0gZ2V0Q2FsbExpbmtJbmZvKGxvY2F0aW9uKS5sYXN0U2VlbkNh
bGxlZS5nZXQoKTsKKyAgICAgICAgaWYgKHRhcmdldCkKKyAgICAgICAgICAgIGRhdGFMb2coIiBq
aXQoJXAsIGV4ZWMgJXApIiwgdGFyZ2V0LCB0YXJnZXQtPmV4ZWN1dGFibGUoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGRhdGFMb2coIiBqaXQobm90IHNldCkiKTsKKyNlbmRpZgorICAg
IH0KKyAgICBkYXRhTG9nKCJcbiIpOwogICAgIGl0ICs9IDI7CiB9CiAKQEAgLTEyNTUsMTEgKzEy
NzQsMTEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jYWxsOiB7Ci0gICAgICAg
ICAgICBwcmludENhbGxPcChleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsIik7CisgICAgICAgICAg
ICBwcmludENhbGxPcChleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsIiwgRHVtcENhY2hlcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX2NhbGxfZXZhbDog
ewotICAgICAgICAgICAgcHJpbnRDYWxsT3AoZXhlYywgbG9jYXRpb24sIGl0LCAiY2FsbF9ldmFs
Iik7CisgICAgICAgICAgICBwcmludENhbGxPcChleGVjLCBsb2NhdGlvbiwgaXQsICJjYWxsX2V2
YWwiLCBEb250RHVtcENhY2hlcyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIG9wX2NhbGxfdmFyYXJnczogewpAQCAtMTI5OSw3ICsxMzE4LDcgQEAgdm9pZCBD
b2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3Q6IHsKLSAgICAgICAgICAgIHByaW50
Q2FsbE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgImNvbnN0cnVjdCIpOworICAgICAgICAgICAgcHJp
bnRDYWxsT3AoZXhlYywgbG9jYXRpb24sIGl0LCAiY29uc3RydWN0IiwgRHVtcENhY2hlcyk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3N0cmNhdDogewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNp
b24gMTE2NjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTI3LDcgKzExMjcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBwcmludENvbmRpdGlvbmFsSnVtcChFeGVjU3RhdGUqLCBjb25zdCBWZWN0b3I8
SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0
X2l0ZXJhdG9yJiwgaW50IGxvY2F0aW9uLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgICAgIHZvaWQg
cHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rp
b24+Ojpjb25zdF9pdGVyYXRvciYpOwogICAgICAgICB2b2lkIHByaW50R2V0QnlJZENhY2hlU3Rh
dHVzKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbik7Ci0gICAgICAgIHZvaWQgcHJpbnRDYWxsT3Ao
RXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVy
YXRvciYsIGNvbnN0IGNoYXIqIG9wKTsKKyAgICAgICAgZW51bSBDYWNoZUR1bXBNb2RlIHsgRHVt
cENhY2hlcywgRG9udER1bXBDYWNoZXMgfTsKKyAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVj
U3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9y
JiwgY29uc3QgY2hhciogb3AsIENhY2hlRHVtcE1vZGUpOwogICAgICAgICB2b2lkIHByaW50UHV0
QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29u
c3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCk7CiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1
cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQyk7CiAgICAgICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVycy5oCShyZXZpc2lv
biAxMTY2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2VtYmx5SGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMDksNiArMzA5LDE2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIG1fYmFzZWxpbmVDb2RlQmxvY2s7CiAgICAgfQogICAgIAorICAgIGludCBhcmd1bWVu
dHNSZWdpc3RlckZvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQorICAgIHsKKyAgICAg
ICAgaWYgKCFjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkKKyAgICAgICAgICAgIHJldHVybiBj
b2RlQmxvY2soKS0+YXJndW1lbnRzUmVnaXN0ZXIoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVy
biBiYXNlbGluZUNvZGVCbG9ja0ZvcklubGluZUNhbGxGcmFtZSgKKyAgICAgICAgICAgIGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lKS0+YXJndW1lbnRzUmVnaXN0ZXIoKSArCisgICAgICAgICAg
ICBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQ7CisgICAgfQorICAgIAog
ICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+JiBkZWNvZGVkQ29kZU1hcEZvcihD
b2RlQmxvY2sqKTsKICAgICAKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIHR3b1RvVGhlMzI7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkocmV2aXNpb24gMTE2NjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk3OSw3ICs5NzksMTcgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIElubGluZVN0YWNrRW50cnkqIG1fY2FsbGVyOwogICAgICAg
ICAKLSAgICAgICAgSW5saW5lU3RhY2tFbnRyeShCeXRlQ29kZVBhcnNlciosIENvZGVCbG9jayos
IENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgQmxvY2tJbmRleCBjYWxsc2l0ZUJsb2NrSGVhZCwg
VmlydHVhbFJlZ2lzdGVyIGNhbGxlZVZSLCBKU0Z1bmN0aW9uKiBjYWxsZWUsIFZpcnR1YWxSZWdp
c3RlciByZXR1cm5WYWx1ZVZSLCBWaXJ0dWFsUmVnaXN0ZXIgaW5saW5lQ2FsbEZyYW1lU3RhcnQs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQpOworICAgICAgICBJbmxpbmVTdGFja0VudHJ5KAorICAg
ICAgICAgICAgQnl0ZUNvZGVQYXJzZXIqLAorICAgICAgICAgICAgQ29kZUJsb2NrKiwKKyAgICAg
ICAgICAgIENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywKKyAgICAgICAgICAgIEJsb2NrSW5kZXgg
Y2FsbHNpdGVCbG9ja0hlYWQsCisgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgY2FsbGVlVlIs
CisgICAgICAgICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUsCisgICAgICAgICAgICBWaXJ0dWFsUmVn
aXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBpbmxpbmVD
YWxsRnJhbWVTdGFydCwKKyAgICAgICAgICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cywKKyAgICAgICAgICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOwogICAgICAgICAKICAgICAg
ICAgfklubGluZVN0YWNrRW50cnkoKQogICAgICAgICB7CkBAIC0xMDM3LDEzICsxMDQ3LDI5IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW50ZXJwcmUKICAgICBDYWxsTGlua1N0
YXR1cyBjYWxsTGlua1N0YXR1cyA9IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKAogICAgICAg
ICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAg
ICAKLSAgICBpZiAobV9ncmFwaC5pc0Z1bmN0aW9uQ29uc3RhbnQoY2FsbFRhcmdldCkpCisgICAg
aWYgKG1fZ3JhcGguaXNGdW5jdGlvbkNvbnN0YW50KGNhbGxUYXJnZXQpKSB7CiAgICAgICAgIGNh
bGxUeXBlID0gQ29uc3RhbnRGdW5jdGlvbjsKLSAgICBlbHNlIGlmIChjYWxsTGlua1N0YXR1cy5p
c1NldCgpICYmICFjYWxsTGlua1N0YXR1cy5jb3VsZFRha2VTbG93UGF0aCgpCi0gICAgICAgICAg
ICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJy
ZW50SW5kZXgsIEJhZENhY2hlKSkKKyNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCisgICAg
ICAgIGRhdGFMb2coIkNhbGwgYXQgW0AlbHUsIGJjIyV1XSBoYXMgYSBmdW5jdGlvbiBjb25zdGFu
dDogJXAsIGV4ZWMgJXAuXG4iLAorICAgICAgICAgICAgICAgIG1fZ3JhcGguc2l6ZSgpLCBtX2N1
cnJlbnRJbmRleCwKKyAgICAgICAgICAgICAgICBtX2dyYXBoLnZhbHVlT2ZGdW5jdGlvbkNvbnN0
YW50KGNhbGxUYXJnZXQpLAorICAgICAgICAgICAgICAgIG1fZ3JhcGgudmFsdWVPZkZ1bmN0aW9u
Q29uc3RhbnQoY2FsbFRhcmdldCktPmV4ZWN1dGFibGUoKSk7CisjZW5kaWYKKyAgICB9IGVsc2Ug
aWYgKGNhbGxMaW5rU3RhdHVzLmlzU2V0KCkgJiYgIWNhbGxMaW5rU3RhdHVzLmNvdWxkVGFrZVNs
b3dQYXRoKCkKKyAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgY2Fs
bFR5cGUgPSBMaW5rZWRGdW5jdGlvbjsKLSAgICBlbHNlCisjaWYgREZHX0VOQUJMRShERUJVR19W
RVJCT1NFKQorICAgICAgICBkYXRhTG9nKCJDYWxsIGF0IFtAJWx1LCBiYyMldV0gaXMgbGlua2Vk
IHRvOiAlcCwgZXhlYyAlcC5cbiIsCisgICAgICAgICAgICAgICAgbV9ncmFwaC5zaXplKCksIG1f
Y3VycmVudEluZGV4LCBjYWxsTGlua1N0YXR1cy5jYWxsVGFyZ2V0KCksCisgICAgICAgICAgICAg
ICAgY2FsbExpbmtTdGF0dXMuY2FsbFRhcmdldCgpLT5leGVjdXRhYmxlKCkpOworI2VuZGlmCisg
ICAgfSBlbHNlIHsKICAgICAgICAgY2FsbFR5cGUgPSBVbmtub3duRnVuY3Rpb247CisjaWYgREZH
X0VOQUJMRShERUJVR19WRVJCT1NFKQorICAgICAgICBkYXRhTG9nKCJDYWxsIGF0IFtAJWx1LCBi
YyMldV0gaXMgaGFzIGFuIHVua25vd24gb3IgYW1iaWd1b3VzIHRhcmdldC5cbiIsCisgICAgICAg
ICAgICAgICAgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4KTsKKyNlbmRpZgorICAgIH0K
ICAgICBpZiAoY2FsbFR5cGUgIT0gVW5rbm93bkZ1bmN0aW9uKSB7CiAgICAgICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGN1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmQ7
CiAgICAgICAgIGludCByZWdpc3Rlck9mZnNldCA9IGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9w
ZXJhbmQ7CkBAIC0xMTgxLDcgKzEyMDcsMTIgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxl
SW5saW5pbmcoYm9vbAogICAgICAgICAgICAgbV9ncmFwaC5tX2Jsb2Nrc1tpXS0+ZW5zdXJlTG9j
YWxzKG5ld051bUxvY2Fscyk7CiAgICAgfQogCi0gICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVT
dGFja0VudHJ5KHRoaXMsIGNvZGVCbG9jaywgcHJvZmlsZWRCbG9jaywgbV9ncmFwaC5tX2Jsb2Nr
cy5zaXplKCkgLSAxLCAoVmlydHVhbFJlZ2lzdGVyKW1faW5saW5lU3RhY2tUb3AtPnJlbWFwT3Bl
cmFuZChjYWxsVGFyZ2V0KSwgZXhwZWN0ZWRGdW5jdGlvbiwgKFZpcnR1YWxSZWdpc3RlciltX2lu
bGluZVN0YWNrVG9wLT5yZW1hcE9wZXJhbmQodXNlc1Jlc3VsdCA/IHJlc3VsdE9wZXJhbmQgOiBJ
bnZhbGlkVmlydHVhbFJlZ2lzdGVyKSwgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxsRnJhbWVT
dGFydCwga2luZCk7CisgICAgSW5saW5lU3RhY2tFbnRyeSBpbmxpbmVTdGFja0VudHJ5KAorICAg
ICAgICB0aGlzLCBjb2RlQmxvY2ssIHByb2ZpbGVkQmxvY2ssIG1fZ3JhcGgubV9ibG9ja3Muc2l6
ZSgpIC0gMSwKKyAgICAgICAgKFZpcnR1YWxSZWdpc3RlciltX2lubGluZVN0YWNrVG9wLT5yZW1h
cE9wZXJhbmQoY2FsbFRhcmdldCksIGV4cGVjdGVkRnVuY3Rpb24sCisgICAgICAgIChWaXJ0dWFs
UmVnaXN0ZXIpbV9pbmxpbmVTdGFja1RvcC0+cmVtYXBPcGVyYW5kKAorICAgICAgICAgICAgdXNl
c1Jlc3VsdCA/IHJlc3VsdE9wZXJhbmQgOiBJbnZhbGlkVmlydHVhbFJlZ2lzdGVyKSwKKyAgICAg
ICAgKFZpcnR1YWxSZWdpc3RlcilpbmxpbmVDYWxsRnJhbWVTdGFydCwgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMsIGtpbmQpOwogICAgIAogICAgIC8vIExpbmsgdXAgdGhlIGFyZ3VtZW50IHZh
cmlhYmxlIGFjY2VzcyBkYXRhcyB0byB0aGVpciBhcmd1bWVudCBwb3NpdGlvbnMuCiAgICAgZm9y
IChpbnQgaSA9IDE7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKSB7CkBAIC0y
NjQ2LDcgKzI2NzcsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6YnVpbGRPcGVyYW5kTWFwc0lm
TgogICAgIG1faGF2ZUJ1aWx0T3BlcmFuZE1hcHMgPSB0cnVlOwogfQogCi1CeXRlQ29kZVBhcnNl
cjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeShCeXRlQ29kZVBhcnNlciogYnl0
ZUNvZGVQYXJzZXIsIENvZGVCbG9jayogY29kZUJsb2NrLCBDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIEJsb2NrSW5kZXggY2FsbHNpdGVCbG9ja0hlYWQsIFZpcnR1YWxSZWdpc3RlciBjYWxsZWVW
UiwgSlNGdW5jdGlvbiogY2FsbGVlLCBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwgVmly
dHVhbFJlZ2lzdGVyIGlubGluZUNhbGxGcmFtZVN0YXJ0LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCitCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRy
eSgKKyAgICBCeXRlQ29kZVBhcnNlciogYnl0ZUNvZGVQYXJzZXIsCisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2ssCisgICAgQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLAorICAgIEJsb2NrSW5kZXgg
Y2FsbHNpdGVCbG9ja0hlYWQsCisgICAgVmlydHVhbFJlZ2lzdGVyIGNhbGxlZVZSLAorICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSwKKyAgICBWaXJ0dWFsUmVnaXN0ZXIgcmV0dXJuVmFsdWVWUiwKKyAg
ICBWaXJ0dWFsUmVnaXN0ZXIgaW5saW5lQ2FsbEZyYW1lU3RhcnQsCisgICAgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzLAorICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKICAg
ICA6IG1fYnl0ZUNvZGVQYXJzZXIoYnl0ZUNvZGVQYXJzZXIpCiAgICAgLCBtX2NvZGVCbG9jayhj
b2RlQmxvY2spCiAgICAgLCBtX3Byb2ZpbGVkQmxvY2socHJvZmlsZWRCbG9jaykKQEAgLTI2Nzks
NyArMjcyMCw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAg
ICAgICAgaW5saW5lQ2FsbEZyYW1lLnN0YWNrT2Zmc2V0ID0gaW5saW5lQ2FsbEZyYW1lU3RhcnQg
KyBSZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemU7CiAgICAgICAgIGlubGluZUNhbGxG
cmFtZS5jYWxsZWUuc2V0KCpieXRlQ29kZVBhcnNlci0+bV9nbG9iYWxEYXRhLCBieXRlQ29kZVBh
cnNlci0+bV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOwogICAgICAgICBp
bmxpbmVDYWxsRnJhbWUuY2FsbGVyID0gYnl0ZUNvZGVQYXJzZXItPmN1cnJlbnRDb2RlT3JpZ2lu
KCk7Ci0gICAgICAgIGlubGluZUNhbGxGcmFtZS5hcmd1bWVudHMucmVzaXplKGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluY2x1ZGlu
ZyB0aGlzLCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLCB5ZXQuCisg
ICAgICAgIGlubGluZUNhbGxGcmFtZS5hcmd1bWVudHMucmVzaXplKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsgLy8gU2V0IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGluY2x1ZGluZyB0aGlz
LCBidXQgZG9uJ3QgY29uZmlndXJlIHRoZSB2YWx1ZSByZWNvdmVyaWVzLCB5ZXQuCiAgICAgICAg
IGlubGluZUNhbGxGcmFtZS5pc0NhbGwgPSBpc0NhbGwoa2luZCk7CiAgICAgICAgIAogICAgICAg
ICBpZiAoaW5saW5lQ2FsbEZyYW1lLmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpCkBAIC0yNjkwLDcg
KzI3MzEsMTMgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gY29kZUJsb2NrLT5tX251bUNh
cHR1cmVkVmFyczsgaS0tOykKLSAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZS5jYXB0dXJlZFZh
cnMuc2V0KGkgKyBpbmxpbmVDYWxsRnJhbWVTdGFydCk7CisgICAgICAgICAgICBpbmxpbmVDYWxs
RnJhbWUuY2FwdHVyZWRWYXJzLnNldChpICsgaW5saW5lQ2FsbEZyYW1lLnN0YWNrT2Zmc2V0KTsK
KyAgICAgICAgCisjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQorICAgICAgICBkYXRhTG9n
KCJDdXJyZW50IGNhcHR1cmVkIHZhcmlhYmxlczogIik7CisgICAgICAgIGlubGluZUNhbGxGcmFt
ZS5jYXB0dXJlZFZhcnMuZHVtcChXVEY6OmRhdGFGaWxlKCkpOworICAgICAgICBkYXRhTG9nKCJc
biIpOworI2VuZGlmCiAgICAgICAgIAogICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxv
Y2stPmlubGluZUNhbGxGcmFtZXMoKS5hcHBlbmQoaW5saW5lQ2FsbEZyYW1lKTsKICAgICAgICAg
bV9pbmxpbmVDYWxsRnJhbWUgPSAmYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrLT5pbmxpbmVD
YWxsRnJhbWVzKCkubGFzdCgpOwpAQCAtMjg0Niw3ICsyODkzLDEwIEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlKCkKICAgICBBU1NFUlQobV9ncmFwaC5uZWVkc0FjdGl2YXRpb24oKSk7CiAj
ZW5kaWYKICAgICAKLSAgICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkodGhpcywg
bV9jb2RlQmxvY2ssIG1fcHJvZmlsZWRCbG9jaywgTm9CbG9jaywgSW52YWxpZFZpcnR1YWxSZWdp
c3RlciwgMCwgSW52YWxpZFZpcnR1YWxSZWdpc3RlciwgSW52YWxpZFZpcnR1YWxSZWdpc3Rlciwg
Q29kZUZvckNhbGwpOworICAgIElubGluZVN0YWNrRW50cnkgaW5saW5lU3RhY2tFbnRyeSgKKyAg
ICAgICAgdGhpcywgbV9jb2RlQmxvY2ssIG1fcHJvZmlsZWRCbG9jaywgTm9CbG9jaywgSW52YWxp
ZFZpcnR1YWxSZWdpc3RlciwgMCwKKyAgICAgICAgSW52YWxpZFZpcnR1YWxSZWdpc3RlciwgSW52
YWxpZFZpcnR1YWxSZWdpc3RlciwgbV9jb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwKKyAgICAg
ICAgQ29kZUZvckNhbGwpOwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2aXNpb24gMTE2
NjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE1LDYgKzExNSwxMyBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENhbGxB
cmd1bWVudChhcmcxKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxKQorICAgIHsKKyAgICAgICAgcmVz
ZXRDYWxsQXJndW1lbnRzKCk7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChHUFJJbmZvOjpjYWxs
RnJhbWVSZWdpc3Rlcik7CisgICAgICAgIGFkZENhbGxBcmd1bWVudChhcmcxKTsKKyAgICB9CisK
ICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygp
OwpAQCAtMTM5LDYgKzE0NiwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGFkZENhbGxBcmd1bWVudChh
cmcyKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAg
IHJlc2V0Q2FsbEFyZ3VtZW50cygpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMSk7CisgICAg
ICAgIGFkZENhbGxBcmd1bWVudChhcmcyKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBUcnVzdGVk
SW1tMzIgYXJnMikKICAgICB7CiAgICAgICAgIHJlc2V0Q2FsbEFyZ3VtZW50cygpOwpAQCAtNDI3
LDYgKzQ0MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1vdmUoR1BSSW5mbzo6Y2FsbEZyYW1lUmVn
aXN0ZXIsIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CiAgICAgfQogCisgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tMzIgYXJnMSkKKyAg
ICB7CisgICAgICAgIG1vdmUoYXJnMSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKTsKKyAgICAgICAg
bW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsK
KyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0
YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIHNldHVwU3R1YkFy
Z3VtZW50cyhhcmcxLCBhcmcyKTsKQEAgLTQ2MSw2ICs0ODIsMTMgQEAgcHVibGljOgogICAgICAg
ICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjAp
OwogICAgIH0KICAgICAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRo
RXhlY1N0YXRlKFRydXN0ZWRJbW0zMiBhcmcxLCBHUFJSZWcgYXJnMikKKyAgICB7CisgICAgICAg
IG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsgLy8gTW92ZSB0aGlzIGZpcnN0LCBz
byBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKKyAgICAgICAgbW92ZShhcmcxLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjEpOworICAgICAgICBtb3ZlKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lz
dGVyLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIH0KKyAgICAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEltbVB0ciBhcmcxLCBHUFJSZWcg
YXJnMikKICAgICB7CiAgICAgICAgIG1vdmUoYXJnMiwgR1BSSW5mbzo6YXJndW1lbnRHUFIyKTsg
Ly8gTW92ZSB0aGlzIGZpcnN0LCBzbyBzZXR0aW5nIGFyZzEgZG9lcyBub3QgdHJhbXBsZSEKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNp
b24gMTE2NjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk4LDE1ICsxOTgsMTAgQEAgaW5saW5lIGJvb2wgY2FuSW5s
aW5lT3Bjb2RlKE9wY29kZUlEIG9wYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAog
ICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgaW5saW5pbmcgY29kZSB0aGF0IGNyZWF0ZXMgYWN0aXZh
dGlvbnMgb3IgaGFzIG5lc3RlZCBmdW5jdGlvbnMuCi0gICAgY2FzZSBvcF9pbml0X2xhenlfcmVn
OgogICAgIGNhc2Ugb3BfY3JlYXRlX2FjdGl2YXRpb246CiAgICAgY2FzZSBvcF90ZWFyX29mZl9h
Y3RpdmF0aW9uOgogICAgIGNhc2Ugb3BfbmV3X2Z1bmM6CiAgICAgY2FzZSBvcF9uZXdfZnVuY19l
eHA6Ci0gICAgY2FzZSBvcF9jcmVhdGVfYXJndW1lbnRzOgotICAgIGNhc2Ugb3BfdGVhcl9vZmZf
YXJndW1lbnRzOgotICAgIGNhc2Ugb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoKLSAgICBjYXNlIG9w
X2dldF9hcmd1bWVudHNfbGVuZ3RoOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAog
ICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3Bw
CShyZXZpc2lvbiAxMTY2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgaW5saW5lIGJvb2wgY29tcGls
ZShDb21waWxlTW9kZSBjb21waWxlTQogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZl
KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CiAKICNpZiBERkdfRU5B
QkxFKERFQlVHX1ZFUkJPU0UpCi0gICAgZGF0YUxvZygiREZHIGNvbXBpbGluZyBjb2RlIGJsb2Nr
ICVwKCVwKSwgbnVtYmVyIG9mIGluc3RydWN0aW9ucyA9ICV1LlxuIiwgY29kZUJsb2NrLCBjb2Rl
QmxvY2stPmFsdGVybmF0aXZlKCksIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25Db3VudCgpKTsKKyAg
ICBkYXRhTG9nKCJERkcgY29tcGlsaW5nIGNvZGUgYmxvY2sgJXAoJXApIGZvciBleGVjdXRhYmxl
ICVwLCBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zID0gJXUuXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9j
ay0+YWx0ZXJuYXRpdmUoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbkNvdW50KCkpOwogI2VuZGlmCiAgICAgCiAgICAgR3JhcGggZGZnKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTE2NjIwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyNyw2
ICsxMDI3LDEyIEBAIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25DcmVhdGVBcmcKICAg
ICByZXR1cm4gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKTsKIH0K
IAorSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZUlubGluZWRBcmd1bWVudHMo
CisgICAgRXhlY1N0YXRlKiBleGVjLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkK
K3sKKyAgICByZXR1cm4gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVj
LCBpbmxpbmVDYWxsRnJhbWUpOworfQorCiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVGVh
ck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGFjdGl2YXRpb25DZWxsLCBp
bnQzMl90IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcikKIHsKICAgICBpZiAoIWFjdGl2YXRp
b25DZWxsKSB7CkBAIC0xMDQzLDIyICsxMDQ5LDM0IEBAIHZvaWQgREZHX09QRVJBVElPTiBvcGVy
YXRpb25UZWFyT2ZmQWN0aXYKIAogdm9pZCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJPZmZB
cmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKU0NlbGwqIGFyZ3VtZW50c0NlbGwpCiB7Ci0gICAg
QVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVC
bG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEFTU0VSVChleGVjLT5jb2RlQmxv
Y2soKS0+dXNlc0FyZ3VtZW50cygpKTsKKyAgICBBU1NFUlQoIWV4ZWMtPmNvZGVCbG9jaygpLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkpOwogICAgIGFzQXJndW1lbnRzKGFyZ3VtZW50c0NlbGwpLT50
ZWFyT2ZmKGV4ZWMpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkdldEFyZ3VtZW50c0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCit2b2lkIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uVGVhck9mZklubGluZWRBcmd1bWVudHMoCisgICAgRXhlY1N0YXRlKiBleGVjLCBK
U0NlbGwqIGFyZ3VtZW50c0NlbGwsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQor
eworICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gdGhlIGlubGluZSBjb2Rl
IGJsb2NrIHVzZXMgYXJndW1lbnRzIGJ1dCBkb2VzIG5vdAorICAgIC8vIG5lZWQgYSBmdWxsIHNj
b3BlIGNoYWluLiBXZSBjb3VsZCBhc3NlcnQgaXQsIGV4Y2VwdCB0aGF0IHRoZSBhc3NlcnRpb24g
d291bGQgYmUKKyAgICAvLyByYXRoZXIgZXhwZW5zaXZlIGFuZCBtYXkgY2F1c2Ugc2lkZSBlZmZl
Y3RzIHRoYXQgd291bGQgZ3JlYXRseSBkaXZlcmdlIGRlYnVnLW1vZGUKKyAgICAvLyBiZWhhdmlv
ciBmcm9tIHJlbGVhc2UtbW9kZSBiZWhhdmlvciwgc2luY2UgZ2V0dGluZyB0aGUgY29kZSBibG9j
ayBvZiBhbiBpbmxpbmUKKyAgICAvLyBjYWxsIGZyYW1lIGltcGxpZXMgY2FsbCBmcmFtZSByZWlm
aWNhdGlvbi4KKyAgICBhc0FyZ3VtZW50cyhhcmd1bWVudHNDZWxsKS0+dGVhck9mZihleGVjLCBp
bmxpbmVDYWxsRnJhbWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkdldEFyZ3VtZW50c0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgYXJndW1lbnRz
UmVnaXN0ZXIpCiB7CiAgICAgSWRlbnRpZmllciBpZGVudCgmZXhlYy0+Z2xvYmFsRGF0YSgpLCAi
bGVuZ3RoIik7Ci0gICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBleGVjLT51bmNoZWNrZWRSKGV4ZWMt
PmNvZGVCbG9jaygpLT5hcmd1bWVudHNSZWdpc3RlcigpKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBleGVjLT51bmNoZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVl
KCk7CiAgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBvcGVyYXRpb25HZXRBcmd1bWVudEJ5VmFsKEV4ZWNTdGF0
ZSogZXhlYywgaW50MzJfdCBpbmRleCkKK0VuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uR2V0QXJndW1lbnRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIGludDMyX3QgYXJndW1lbnRz
UmVnaXN0ZXIsIGludDMyX3QgaW5kZXgpCiB7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSgK
LSAgICAgICAgZXhlYy0+dW5jaGVja2VkUihleGVjLT5jb2RlQmxvY2soKS0+YXJndW1lbnRzUmVn
aXN0ZXIoKSkuanNWYWx1ZSgpLmdldChleGVjLCBpbmRleCkpOworICAgICAgICBleGVjLT51bmNo
ZWNrZWRSKGFyZ3VtZW50c1JlZ2lzdGVyKS5qc1ZhbHVlKCkuZ2V0KGV4ZWMsIGluZGV4KSk7CiB9
CiAKIEpTQ2VsbCogREZHX09QRVJBVElPTiBvcGVyYXRpb25OZXdGdW5jdGlvbihFeGVjU3RhdGUq
IGV4ZWMsIEpTQ2VsbCogZnVuY3Rpb25FeGVjdXRhYmxlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgJKHJldmlzaW9uIDExNjYyMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw5
ICs3NywxMSBAQCB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKCiB0eXBl
ZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9FUFMpKEV4
ZWNTdGF0ZSosIHZvaWQqLCBzaXplX3QpOwogdHlwZWRlZiBFbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OICgqSl9ERkdPcGVyYXRpb25fRVNTKShFeGVjU3RhdGUqLCBzaXplX3QsIHNpemVfdCk7
CiB0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gKCpKX0RGR09wZXJhdGlvbl9F
WikoRXhlY1N0YXRlKiwgaW50MzJfdCk7Cit0eXBlZGVmIEVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gKCpKX0RGR09wZXJhdGlvbl9FWlopKEV4ZWNTdGF0ZSosIGludDMyX3QsIGludDMyX3Qp
OwogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FKShFeGVj
U3RhdGUqKTsKIHR5cGVkZWYgSlNDZWxsKiBERkdfT1BFUkFUSU9OICgqQ19ERkdPcGVyYXRpb25f
RUMpKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogdHlwZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04g
KCpDX0RGR09wZXJhdGlvbl9FQ0MpKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEpTQ2VsbCopOwordHlw
ZWRlZiBKU0NlbGwqIERGR19PUEVSQVRJT04gKCpDX0RGR09wZXJhdGlvbl9FSWNmKShFeGVjU3Rh
dGUqLCBJbmxpbmVDYWxsRnJhbWUqKTsKIHR5cGVkZWYgZG91YmxlIERGR19PUEVSQVRJT04gKCpE
X0RGR09wZXJhdGlvbl9ERCkoZG91YmxlLCBkb3VibGUpOwogdHlwZWRlZiBkb3VibGUgREZHX09Q
RVJBVElPTiAoKkRfREZHT3BlcmF0aW9uX1paKShpbnQzMl90LCBpbnQzMl90KTsKIHR5cGVkZWYg
ZG91YmxlIERGR19PUEVSQVRJT04gKCpEX0RGR09wZXJhdGlvbl9FSikoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUpOwpAQCAtODksMTMgKzkxLDE0IEBAIHR5cGVkZWYgc2l6ZV90IERGR19PUEVS
QVRJT04gKCpTX0RGR09wZXIKIHR5cGVkZWYgc2l6ZV90IERGR19PUEVSQVRJT04gKCpTX0RGR09w
ZXJhdGlvbl9FSkopKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7
CiB0eXBlZGVmIHNpemVfdCBERkdfT1BFUkFUSU9OICgqU19ERkdPcGVyYXRpb25fSikoRW5jb2Rl
ZEpTVmFsdWUpOwogdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9F
QVpKKShFeGVjU3RhdGUqLCBKU0FycmF5KiwgaW50MzJfdCwgRW5jb2RlZEpTVmFsdWUpOwordHlw
ZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKCpWX0RGR09wZXJhdGlvbl9FQykoRXhlY1N0YXRlKiwg
SlNDZWxsKik7Cit0eXBlZGVmIHZvaWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VD
SWNmKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBJbmxpbmVDYWxsRnJhbWUqKTsKIHR5cGVkZWYgdm9p
ZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUNKSikoRXhlY1N0YXRlKiwgSlNDZWxs
KiwgRW5jb2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlKTsKIHR5cGVkZWYgdm9pZCBERkdfT1BF
UkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUNaKShFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90
KTsKIHR5cGVkZWYgdm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpDSSkoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUsIEpTQ2VsbCosIElkZW50aWZpZXIqKTsKIHR5cGVkZWYg
dm9pZCBERkdfT1BFUkFUSU9OICgqVl9ERkdPcGVyYXRpb25fRUpKSikoRXhlY1N0YXRlKiwgRW5j
b2RlZEpTVmFsdWUsIEVuY29kZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSk7CiB0eXBlZGVmIHZv
aWQgREZHX09QRVJBVElPTiAoKlZfREZHT3BlcmF0aW9uX0VKUFApKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSwgdm9pZCopOwogdHlwZWRlZiB2b2lkIERGR19PUEVS
QVRJT04gKCpWX0RGR09wZXJhdGlvbl9FUFpKKShFeGVjU3RhdGUqLCB2b2lkKiwgaW50MzJfdCwg
RW5jb2RlZEpTVmFsdWUpOwotdHlwZWRlZiB2b2lkIERGR19PUEVSQVRJT04gKFZfREZHT3BlcmF0
aW9uX0VDKShFeGVjU3RhdGUqLCBKU0NlbGwqKTsKIHR5cGVkZWYgdm9pZCogREZHX09QRVJBVElP
TiAoKlBfREZHT3BlcmF0aW9uX0UpKEV4ZWNTdGF0ZSopOwogCiAvLyBUaGVzZSByb3V0aW5lcyBh
cmUgcHJvdmlkZSBjYWxsYmFja3Mgb3V0IHRvIEMrKyBpbXBsZW1lbnRhdGlvbnMgb2Ygb3BlcmF0
aW9ucyB0b28gY29tcGxleCB0byBKSVQuCkBAIC0xNTgsMTAgKzE2MSwxMiBAQCB2b2lkKiBERkdf
T1BFUkFUSU9OIG9wZXJhdGlvblZpcnR1YWxDb25zCiB2b2lkKiBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkxpbmtDb25zdHJ1Y3QoRXhlY1N0YXRlKik7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3Bl
cmF0aW9uQ3JlYXRlQWN0aXZhdGlvbihFeGVjU3RhdGUqKTsKIEpTQ2VsbCogREZHX09QRVJBVElP
TiBvcGVyYXRpb25DcmVhdGVBcmd1bWVudHMoRXhlY1N0YXRlKik7CitKU0NlbGwqIERGR19PUEVS
QVRJT04gb3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50cyhFeGVjU3RhdGUqLCBJbmxpbmVD
YWxsRnJhbWUqKTsKIHZvaWQgREZHX09QRVJBVElPTiBvcGVyYXRpb25UZWFyT2ZmQWN0aXZhdGlv
bihFeGVjU3RhdGUqLCBKU0NlbGwqLCBpbnQzMl90IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cik7CiB2b2lkIERGR19PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZkFyZ3VtZW50cyhFeGVjU3Rh
dGUqLCBKU0NlbGwqKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uR2V0
QXJndW1lbnRzTGVuZ3RoKEV4ZWNTdGF0ZSopOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25HZXRBcmd1bWVudEJ5VmFsKEV4ZWNTdGF0ZSosIGludDMyX3QpOwordm9pZCBE
RkdfT1BFUkFUSU9OIG9wZXJhdGlvblRlYXJPZmZJbmxpbmVkQXJndW1lbnRzKEV4ZWNTdGF0ZSos
IEpTQ2VsbCosIElubGluZUNhbGxGcmFtZSopOworRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBvcGVyYXRpb25HZXRBcmd1bWVudHNMZW5ndGgoRXhlY1N0YXRlKiwgaW50MzJfdCk7CitFbmNv
ZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEFyZ3VtZW50QnlWYWwoRXhlY1N0
YXRlKiwgaW50MzJfdCwgaW50MzJfdCk7CiBKU0NlbGwqIERGR19PUEVSQVRJT04gb3BlcmF0aW9u
TmV3RnVuY3Rpb24oRXhlY1N0YXRlKiwgSlNDZWxsKik7CiBKU0NlbGwqIERGR19PUEVSQVRJT04g
b3BlcmF0aW9uTmV3RnVuY3Rpb25FeHByZXNzaW9uKEV4ZWNTdGF0ZSosIEpTQ2VsbCopOwogZG91
YmxlIERGR19PUEVSQVRJT04gb3BlcmF0aW9uRk1vZE9uSW50cyhpbnQzMl90LCBpbnQzMl90KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTE2NjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgyOSw4
ICszODI5LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENyZWF0ZWQgPSBtX2ppdC5icmFu
Y2gzMihKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlVGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6RW1wdHlWYWx1ZVRhZykpOwogICAgICAgICAKLSAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0
b3IoCi0gICAgICAgICAgICBzbG93UGF0aENhbGwobm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9u
Q3JlYXRlQXJndW1lbnRzLCByZXN1bHRHUFIpKTsKKyAgICAgICAgaWYgKG5vZGUuY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAor
ICAgICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgKKyAgICAgICAgICAgICAgICAgICAgbm90Q3Jl
YXRlZCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRlSW5saW5lZEFyZ3VtZW50cywgcmVzdWx0R1BSLAor
ICAgICAgICAgICAgICAgICAgICBub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSk7Cisg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAg
ICAgICAgICAgICBzbG93UGF0aENhbGwobm90Q3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uQ3JlYXRl
QXJndW1lbnRzLCByZXN1bHRHUFIpKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgY2Vs
bFJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0z
ODY1LDkgKzM4NzIsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBjcmVhdGVkID0gbV9qaXQuYnJhbmNoMzIoCiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6Tm90RXF1YWwsIGFyZ3VtZW50c1ZhbHVlVGFnR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpOwogICAgICAgICAKLSAgICAgICAg
YWRkU2xvd1BhdGhHZW5lcmF0b3IoCi0gICAgICAgICAgICBzbG93UGF0aENhbGwoCi0gICAgICAg
ICAgICAgICAgY3JlYXRlZCwgdGhpcywgb3BlcmF0aW9uVGVhck9mZkFyZ3VtZW50cywgTm9SZXN1
bHQsIGFyZ3VtZW50c1ZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICBpZiAobm9kZS5jb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3Io
CisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBjcmVh
dGVkLCB0aGlzLCBvcGVyYXRpb25UZWFyT2ZmSW5saW5lZEFyZ3VtZW50cywgTm9SZXN1bHQsCisg
ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1ZhbHVlUGF5bG9hZEdQUiwgbm9kZS5jb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYWRk
U2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAg
ICAgICAgICAgICAgICBjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25UZWFyT2ZmQXJndW1lbnRzLCBO
b1Jlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgYXJndW1lbnRzVmFsdWVQYXlsb2FkR1BSKSk7
CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsK
ICAgICAgICAgYnJlYWs7CkBAIC0zODgxLDExICszODk2LDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGNyZWF0ZWQgPSBtX2ppdC5icmFuY2gzMigKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpO
b3RFcXVhbCwKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjp0YWdGb3IobV9qaXQuY29kZUJsb2Nr
KCktPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLAorICAgICAgICAgICAgSklUQ29tcGlsZXI6OnRhZ0Zv
cihtX2ppdC5hcmd1bWVudHNSZWdpc3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSwKICAgICAgICAg
ICAgIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpFbXB0eVZhbHVlVGFnKSk7CiAgICAgICAgIAotICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpB
cmd1bWVudENvdW50KSwgcmVzdWx0UGF5bG9hZEdQUik7Ci0gICAgICAgIG1faml0LnN1YjMyKFRy
dXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CisgICAgICAgIGlmIChub2RlLmNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAgICBtX2ppdC5tb3ZlKAorICAgICAg
ICAgICAgICAgIEltbTMyKG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50
cy5zaXplKCkgLSAxKSwKKyAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9h
ZEZvcihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLCByZXN1bHRQYXlsb2FkR1BSKTsKKyAg
ICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7
CisgICAgICAgIH0KICAgICAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50
MzJUYWcpLCByZXN1bHRUYWdHUFIpOwogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IHRoZSBz
bG93IHBhdGggZ2VuZXJhdG9yIHNob3VsZCBwZXJmb3JtIGEgZm9yd2FyZCBzcGVjdWxhdGlvbiB0
aGF0IHRoZQpAQCAtMzg5NSw3ICszOTE2LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlJiBub2RlKQogICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAg
IHNsb3dQYXRoQ2FsbCgKICAgICAgICAgICAgICAgICBjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25H
ZXRBcmd1bWVudHNMZW5ndGgsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFn
R1BSLCByZXN1bHRQYXlsb2FkR1BSKSkpOworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHJl
c3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiksCisgICAgICAgICAgICAgICAgbV9qaXQuYXJn
dW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSkpOwogICAgICAgICAKICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIsIG1fY29tcGlsZUlu
ZGV4KTsKICAgICAgICAgYnJlYWs7CkBAIC0zOTEzLDM1ICszOTM1LDQ2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgc2xvd1BhdGguYXBwZW5kKAog
ICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6
Ok5vdEVxdWFsLAotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjp0YWdGb3IobV9qaXQuY29k
ZUJsb2NrKCktPmFyZ3VtZW50c1JlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEpJVENvbXBp
bGVyOjp0YWdGb3IobV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2luKSks
CiAgICAgICAgICAgICAgICAgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcpKSk7
CiAgICAgICAgIAogICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIGluZGV4R1BS
LCByZXN1bHRQYXlsb2FkR1BSKTsKLSAgICAgICAgc2xvd1BhdGguYXBwZW5kKAotICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoMzIoCi0gICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3ZlT3JF
cXVhbCwKLSAgICAgICAgICAgICAgICByZXN1bHRQYXlsb2FkR1BSLAotICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkpKTsK
KyAgICAgICAgaWYgKG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAg
ICAgIHNsb3dQYXRoLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKKyAg
ICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwKKyAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUiwKKyAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9k
ZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCgKKyAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3Zl
T3JFcXVhbCwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UGF5bG9hZEdQUiwKKyAgICAgICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OnBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVu
dENvdW50KSkpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBtX2ppdC5uZWczMihyZXN1
bHRQYXlsb2FkR1BSKTsKICAgICAgICAgCisgICAgICAgIHNpemVfdCBiYXNlT2Zmc2V0ID0KKyAg
ICAgICAgICAgICgobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZQorICAgICAgICAgICAg
ICA/IG5vZGUuY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0CisgICAgICAg
ICAgICAgIDogMCkgKyBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSkg
KiBzaXplb2YoUmVnaXN0ZXIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoCiAgICAgICAgICAgICBK
SVRDb21waWxlcjo6QmFzZUluZGV4KAogICAgICAgICAgICAgICAgIEdQUkluZm86OmNhbGxGcmFt
ZVJlZ2lzdGVyLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwKLSAg
ICAgICAgICAgICAgICBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSAq
IHNpemVvZihSZWdpc3RlcikgKwotICAgICAgICAgICAgICAgIE9CSkVDVF9PRkZTRVRPRihFbmNv
ZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSksCisgICAgICAgICAgICAgICAgYmFzZU9m
ZnNldCArIE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFn
KSksCiAgICAgICAgICAgICByZXN1bHRUYWdHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoCiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QmFzZUluZGV4KAogICAgICAgICAgICAgICAgIEdQUklu
Zm86OmNhbGxGcmFtZVJlZ2lzdGVyLCByZXN1bHRQYXlsb2FkR1BSLCBKSVRDb21waWxlcjo6VGlt
ZXNFaWdodCwKLSAgICAgICAgICAgICAgICBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVk
aW5nVGhpcygwKSAqIHNpemVvZihSZWdpc3RlcikgKwotICAgICAgICAgICAgICAgIE9CSkVDVF9P
RkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkpLAorICAgICAg
ICAgICAgICAgIGJhc2VPZmZzZXQgKyBPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3Jp
cHRvciwgYXNCaXRzLnBheWxvYWQpKSwKICAgICAgICAgICAgIHJlc3VsdFBheWxvYWRHUFIpOwog
ICAgICAgICAKICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCiAgICAgICAgICAgICBzbG93
UGF0aENhbGwoCiAgICAgICAgICAgICAgICAgc2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkdldEFy
Z3VtZW50QnlWYWwsCi0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MocmVzdWx0VGFnR1BSLCBy
ZXN1bHRQYXlsb2FkR1BSKSwgaW5kZXhHUFIpKTsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRHUFIpLAorICAgICAgICAgICAgICAgIG1faml0
LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbiksIGluZGV4R1BSKSk7CiAgICAg
ICAgIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQ
UiwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTE2
NjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzc5MSw2ICszNzkxLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOiB7CisgICAgICAgIEFTU0VSVCghbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZSk7CisgICAgICAgIAogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2Rl
LmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCB2YWx1ZSk7CiAg
ICAgICAgIApAQCAtMzgxOSwxNCArMzgyMSwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RD
cmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6WmVybywgcmVzdWx0R1BS
KTsKICAgICAgICAgCi0gICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywg
cmVzdWx0R1BSKSk7CisgICAgICAgIGlmIChub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
KSB7CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgICAgICBz
bG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAgIG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJh
dGlvbkNyZWF0ZUlubGluZWRBcmd1bWVudHMsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAg
ICAgbm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkpOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAgICAgICAgICAgc2xvd1Bh
dGhDYWxsKG5vdENyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvbkNyZWF0ZUFyZ3VtZW50cywgcmVzdWx0
R1BSKSk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BS
LCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCiAgICAg
Y2FzZSBUZWFyT2ZmQWN0aXZhdGlvbjogeworICAgICAgICBBU1NFUlQoIW5vZGUuY29kZU9yaWdp
bi5pbmxpbmVDYWxsRnJhbWUpOworCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIGFjdGl2YXRpb25W
YWx1ZSh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYXJndW1l
bnRzVmFsdWUodGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgICAgIEdQUlJlZyBhY3RpdmF0aW9u
VmFsdWVHUFIgPSBhY3RpdmF0aW9uVmFsdWUuZ3ByKCk7CkBAIC0zODUxLDkgKzM4NjIsMTYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgY3JlYXRlZCA9IG1faml0LmJyYW5jaFRlc3RQdHIoSklUQ29t
cGlsZXI6Ok5vblplcm8sIGFyZ3VtZW50c1ZhbHVlR1BSKTsKICAgICAgICAgCi0gICAgICAgIGFk
ZFNsb3dQYXRoR2VuZXJhdG9yKAotICAgICAgICAgICAgc2xvd1BhdGhDYWxsKAotICAgICAgICAg
ICAgICAgIGNyZWF0ZWQsIHRoaXMsIG9wZXJhdGlvblRlYXJPZmZBcmd1bWVudHMsIE5vUmVzdWx0
LCBhcmd1bWVudHNWYWx1ZUdQUikpOworICAgICAgICBpZiAobm9kZS5jb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoCisgICAgICAg
ICAgICAgICAgc2xvd1BhdGhDYWxsKAorICAgICAgICAgICAgICAgICAgICBjcmVhdGVkLCB0aGlz
LCBvcGVyYXRpb25UZWFyT2ZmSW5saW5lZEFyZ3VtZW50cywgTm9SZXN1bHQsCisgICAgICAgICAg
ICAgICAgICAgIGFyZ3VtZW50c1ZhbHVlR1BSLCBub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRv
cigKKyAgICAgICAgICAgICAgICBzbG93UGF0aENhbGwoCisgICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZWQsIHRoaXMsIG9wZXJhdGlvblRlYXJPZmZBcmd1bWVudHMsIE5vUmVzdWx0LCBhcmd1bWVu
dHNWYWx1ZUdQUikpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBub1Jlc3VsdChtX2Nv
bXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzg2NCwxMSArMzg4MiwyMiBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1
bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVt
cCBjcmVhdGVkID0gbV9qaXQuYnJhbmNoVGVzdFB0cigKLSAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb25aZXJvLCBKSVRDb21waWxlcjo6YWRkcmVzc0ZvcihtX2ppdC5jb2RlQmxvY2soKS0+YXJn
dW1lbnRzUmVnaXN0ZXIoKSkpOwotICAgICAgICAKLSAgICAgICAgbV9qaXQubG9hZDMyKEpJVENv
bXBpbGVyOjpwYXlsb2FkRm9yKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCksIHJlc3VsdEdQ
Uik7Ci0gICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0R1BSKTsKLSAg
ICAgICAgbV9qaXQub3JQdHIoR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyLCByZXN1bHRH
UFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCisgICAgICAgICAgICBKSVRD
b21waWxlcjo6YWRkcmVzc0ZvcigKKyAgICAgICAgICAgICAgICBtX2ppdC5hcmd1bWVudHNSZWdp
c3RlckZvcihub2RlLmNvZGVPcmlnaW4pKSk7CisgICAgICAgIAorICAgICAgICBpZiAobm9kZS5j
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgbV9qaXQubW92ZSgKKyAg
ICAgICAgICAgICAgICBJbW1QdHIoCisgICAgICAgICAgICAgICAgICAgIGJpdHdpc2VfY2FzdDx2
b2lkKj4oCisgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlOjplbmNvZGUoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAganNOdW1iZXIobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDEpKSkpLAorICAgICAgICAgICAgICAgIHJlc3VsdEdQ
Uik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGls
ZXI6OnBheWxvYWRGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KSwgcmVzdWx0R1BSKTsK
KyAgICAgICAgICAgIG1faml0LnN1YjMyKFRydXN0ZWRJbW0zMigxKSwgcmVzdWx0R1BSKTsKKyAg
ICAgICAgICAgIG1faml0Lm9yUHRyKEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgcmVz
dWx0R1BSKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IHRoZSBzbG93
IHBhdGggZ2VuZXJhdG9yIHNob3VsZCBwZXJmb3JtIGEgZm9yd2FyZCBzcGVjdWxhdGlvbiB0aGF0
IHRoZQogICAgICAgICAvLyByZXN1bHQgaXMgYW4gaW50ZWdlci4gRm9yIG5vdyB3ZSBwb3N0cG9u
ZSB0aGUgc3BlY3VsYXRpb24gYnkgaGF2aW5nIHRoaXMgcmV0dXJuCkBAIC0zODc2LDcgKzM5MDUs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAog
ICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKICAgICAgICAgICAgIHNsb3dQYXRoQ2FsbCgK
LSAgICAgICAgICAgICAgICBjcmVhdGVkLCB0aGlzLCBvcGVyYXRpb25HZXRBcmd1bWVudHNMZW5n
dGgsIHJlc3VsdEdQUikpOworICAgICAgICAgICAgICAgIGNyZWF0ZWQsIHRoaXMsIG9wZXJhdGlv
bkdldEFyZ3VtZW50c0xlbmd0aCwgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgIG1faml0LmFy
Z3VtZW50c1JlZ2lzdGVyRm9yKG5vZGUuY29kZU9yaWdpbikpKTsKICAgICAgICAgCiAgICAgICAg
IGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFr
OwpAQCAtMzg5MiwxNCArMzkyMiwyMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCgKICAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3RQdHIoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sCi0gICAg
ICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IobV9qaXQuY29kZUJsb2NrKCktPmFy
Z3VtZW50c1JlZ2lzdGVyKCkpKSk7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OmFkZHJl
c3NGb3IoCisgICAgICAgICAgICAgICAgICAgIG1faml0LmFyZ3VtZW50c1JlZ2lzdGVyRm9yKG5v
ZGUuY29kZU9yaWdpbikpKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVk
SW1tMzIoMSksIGluZGV4R1BSLCByZXN1bHRHUFIpOwotICAgICAgICBzbG93UGF0aC5hcHBlbmQo
Ci0gICAgICAgICAgICBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6QWJvdmVPckVxdWFsLAotICAgICAgICAgICAgICAgIHJlc3VsdEdQUiwKLSAgICAgICAgICAg
ICAgICBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQp
KSk7CisgICAgICAgIGlmIChub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lKSB7CisgICAg
ICAgICAgICBzbG93UGF0aC5hcHBlbmQoCisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIo
CisgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCisgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgSW1tMzIobm9kZS5j
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSkpKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHNsb3dQYXRoLmFwcGVuZCgKKyAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2gzMigKKyAgICAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFib3ZlT3JF
cXVhbCwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0R1BSLAorICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6cGF5bG9hZEZvcihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpKSk7
CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIG1faml0Lm5lZzMyKHJlc3VsdEdQUik7CiAg
ICAgICAgIG1faml0LnNpZ25FeHRlbmQzMlRvUHRyKHJlc3VsdEdQUiwgcmVzdWx0R1BSKTsKQEAg
LTM5MDcsMTIgKzM5NDYsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogICAgICAgICBtX2ppdC5sb2FkUHRyKAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkJh
c2VJbmRleCgKICAgICAgICAgICAgICAgICBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgcmVz
dWx0R1BSLCBKSVRDb21waWxlcjo6VGltZXNFaWdodCwKLSAgICAgICAgICAgICAgICBDYWxsRnJh
bWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSAqIHNpemVvZihSZWdpc3RlcikpLAor
ICAgICAgICAgICAgICAgICgobm9kZS5jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZQorICAgICAg
ICAgICAgICAgICAgPyBub2RlLmNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNl
dAorICAgICAgICAgICAgICAgICAgOiAwKSArIENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNs
dWRpbmdUaGlzKDApKSAqIHNpemVvZihSZWdpc3RlcikpLAogICAgICAgICAgICAgcmVzdWx0R1BS
KTsKICAgICAgICAgCiAgICAgICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKAogICAgICAgICAgICAg
c2xvd1BhdGhDYWxsKAotICAgICAgICAgICAgICAgIHNsb3dQYXRoLCB0aGlzLCBvcGVyYXRpb25H
ZXRBcmd1bWVudEJ5VmFsLCByZXN1bHRHUFIsIGluZGV4R1BSKSk7CisgICAgICAgICAgICAgICAg
c2xvd1BhdGgsIHRoaXMsIG9wZXJhdGlvbkdldEFyZ3VtZW50QnlWYWwsIHJlc3VsdEdQUiwgCisg
ICAgICAgICAgICAgICAgbV9qaXQuYXJndW1lbnRzUmVnaXN0ZXJGb3Iobm9kZS5jb2RlT3JpZ2lu
KSwKKyAgICAgICAgICAgICAgICBpbmRleEdQUikpOwogICAgICAgICAKICAgICAgICAganNWYWx1
ZVJlc3VsdChyZXN1bHRHUFIsIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZp
c2lvbiAxMTY2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTEyOTUsNiArMTI5NSwxNiBAQCBwdWJsaWM6CiAgICAg
ICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0
dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1
bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfREZHT3Bl
cmF0aW9uX0VaIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgaW50MzJfdCBhcmcxKQorICAgIHsK
KyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihh
cmcxKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FWlogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBp
bnQzMl90IGFyZzEsIEdQUlJlZyBhcmcyKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1
bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSwgYXJnMik7CisgICAgICAgIHJl
dHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVz
dWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09w
ZXJhdGlvbl9FIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCkKICAgICB7CiAgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzRXhlY1N0YXRlKCk7CkBAIC0xMzE1LDYgKzEzMjUsMTEgQEAgcHVibGlj
OgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3Rl
ZEltbVB0cihjZWxsKSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihDX0RGR09wZXJhdGlvbl9FSWNmIG9wZXJhdGlvbiwgR1BSUmVn
IHJlc3VsdCwgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCisgICAgeworICAgICAg
ICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihpbmxpbmVD
YWxsRnJhbWUpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tT
ZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2Fs
bCBjYWxsT3BlcmF0aW9uKFNfREZHT3BlcmF0aW9uX0ogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
LCBHUFJSZWcgYXJnMSkKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzKGFyZzEp
OwpAQCAtMTM2NSwxMCArMTM4MCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJn
dW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxKTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxXaXRo
RXhjZXB0aW9uQ2hlY2sob3BlcmF0aW9uKTsKICAgICB9Ci0gICAgSklUQ29tcGlsZXI6OkNhbGwg
Y2FsbE9wZXJhdGlvbihWX0RGR09wZXJhdGlvbl9FQyBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQs
IEdQUlJlZyBhcmcxKQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdP
cGVyYXRpb25fRUNJY2Ygb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgSW5saW5lQ2FsbEZyYW1lKiBh
cmcyKQogICAgIHsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBJbnZh
bGlkR1BSUmVnKTsKLSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBhcmcx
KTsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0
ZWRJbW1QdHIoYXJnMikpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25D
aGVjayhvcGVyYXRpb24pOwogICAgIH0KICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKFZfREZHT3BlcmF0aW9uX0VKUFAgb3BlcmF0aW9uLCBHUFJSZWcgYXJnMSwgR1BSUmVnIGFy
ZzIsIHZvaWQqIHBvaW50ZXIpCiAgICAgewpAQCAtMTUyOCw2ICsxNTQzLDE2IEBAIHB1YmxpYzoK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24s
IHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oSl9ERkdPcGVyYXRpb25fRVogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxKQorICAgIHsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW0zMihhcmcxKSk7Cisg
ICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0UGF5bG9hZCwgcmVzdWx0VGFnKTsKKyAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihKX0RGR09wZXJhdGlvbl9FWlogb3BlcmF0aW9uLCBHUFJSZWcg
cmVzdWx0VGFnLCBHUFJSZWcgcmVzdWx0UGF5bG9hZCwgaW50MzJfdCBhcmcxLCBHUFJSZWcgYXJn
MikKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVz
dGVkSW1tMzIoYXJnMSksIGFyZzIpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNl
cHRpb25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdFBheWxvYWQsIHJlc3VsdFRhZyk7
CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRp
b25fRSBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQpCiAgICAgewogICAgICAgICBtX2ppdC5zZXR1
cEFyZ3VtZW50c0V4ZWNTdGF0ZSgpOwpAQCAtMTU0OCw2ICsxNTczLDExIEBAIHB1YmxpYzoKICAg
ICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1Q
dHIoY2VsbCkpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1Nl
dFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxs
IGNhbGxPcGVyYXRpb24oQ19ERkdPcGVyYXRpb25fRUljZiBvcGVyYXRpb24sIEdQUlJlZyByZXN1
bHQsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQorICAgIHsKKyAgICAgICAgbV9q
aXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIoaW5saW5lQ2FsbEZy
YW1lKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVz
dWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAgICAgSklUQ29tcGlsZXI6OkNhbGwgY2Fs
bE9wZXJhdGlvbihTX0RGR09wZXJhdGlvbl9KIG9wZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BS
UmVnIGFyZzFUYWcsIEdQUlJlZyBhcmcxUGF5bG9hZCkKICAgICB7CiAgICAgICAgIG1faml0LnNl
dHVwQXJndW1lbnRzKGFyZzFQYXlsb2FkLCBhcmcxVGFnKTsKQEAgLTE1OTgsMTAgKzE2MjgsMTAg
QEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJn
MSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNoZWNrKG9wZXJhdGlv
bik7CiAgICAgfQotICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oVl9ERkdPcGVy
YXRpb25fRUMgb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBHUFJSZWcgYXJnMSkKKyAgICBKSVRD
b21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFZfREZHT3BlcmF0aW9uX0VDSWNmIG9wZXJhdGlv
biwgR1BSUmVnIGFyZzEsIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsK
LSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCA9PSBJbnZhbGlkR1BSUmVnKTsK
LSAgICAgICAgcmV0dXJuIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCBhcmcxKTsKKyAgICAgICAg
bV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIFRydXN0ZWRJbW1QdHIoaW5s
aW5lQ2FsbEZyYW1lKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsV2l0aEV4Y2VwdGlvbkNo
ZWNrKG9wZXJhdGlvbik7CiAgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oVl9ERkdPcGVyYXRpb25fRUpQUCBvcGVyYXRpb24sIEdQUlJlZyBhcmcxVGFnLCBHUFJSZWcg
YXJnMVBheWxvYWQsIEdQUlJlZyBhcmcyLCB2b2lkKiBwb2ludGVyKQogICAgIHsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZp
c2lvbiAxMTY2MjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgxLDYgKzE4MSwxNiBAQCBDYWxsRnJhbWUqIENh
bGxGcmFtZTo6dHJ1ZUNhbGxlckZyYW1lKCkKICAgICAKICAgICByZXR1cm4gbWFjaGluZUNhbGxl
ci0+dHJ1ZUNhbGxGcmFtZShyZXR1cm5QQygpKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsK
IH0KKworQ29kZUJsb2NrKiBDYWxsRnJhbWU6OnNvbWVDb2RlQmxvY2tGb3JQb3NzaWJseUlubGlu
ZWRDb2RlKCkKK3sKKyAgICBpZiAoIWlzSW5saW5lQ2FsbEZyYW1lKCkpCisgICAgICAgIHJldHVy
biBjb2RlQmxvY2soKTsKKyAgICAKKyAgICByZXR1cm4ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGlubGluZUNhbGxGcmFtZSgpLT5leGVjdXRhYmxlLmdldCgpKS0+YmFzZWxpbmVDb2RlQmxv
Y2tGb3IoCisgICAgICAgIGlubGluZUNhbGxGcmFtZSgpLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6
IENvZGVGb3JDb25zdHJ1Y3QpOworfQorCiAjZW5kaWYKIAogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTE2NjIwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjgsMTEgKzIyOCwxNSBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAgICAgIC8v
IHRvIHRoZSBjYWxsZXIuIFRoaXMgcmVzb2x2ZXMgaXNzdWVzIHN1cnJvdW5kaW5nIGlubGluaW5n
IGFuZCB0aGUKICAgICAgICAgLy8gSG9zdENhbGxGcmFtZUZsYWcgc3R1ZmYuCiAgICAgICAgIENh
bGxGcmFtZSogdHJ1ZUNhbGxlckZyYW1lKCk7CisgICAgICAgIAorICAgICAgICBDb2RlQmxvY2sq
IHNvbWVDb2RlQmxvY2tGb3JQb3NzaWJseUlubGluZWRDb2RlKCk7CiAjZWxzZQogICAgICAgICBi
b29sIGlzSW5saW5lQ2FsbEZyYW1lKCkgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgCiAgICAg
ICAgIENhbGxGcmFtZSogdHJ1ZUNhbGxGcmFtZShBYnN0cmFjdFBDKSB7IHJldHVybiB0aGlzOyB9
CiAgICAgICAgIENhbGxGcmFtZSogdHJ1ZUNhbGxlckZyYW1lKCkgeyByZXR1cm4gY2FsbGVyRnJh
bWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsgfQorICAgICAgICAKKyAgICAgICAgQ29k
ZUJsb2NrKiBzb21lQ29kZUJsb2NrRm9yUG9zc2libHlJbmxpbmVkQ29kZSgpIHsgcmV0dXJuIGNv
ZGVCbG9jaygpOyB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIC8vIENhbGwgdGhpcyB0byBn
ZXQgdGhlIHRydWUgY2FsbCBmcmFtZSAoYWNjb3VudGVkIGZvciBpbmxpbmluZyBhbmQgYW55Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHJldmlzaW9uIDExNjYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyNjUsNyArNTI2NSw3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnJldHJpZXZlQXJndW1lbnRzRnIKICAgICBpZiAoIWZ1bmN0
aW9uQ2FsbEZyYW1lKQogICAgICAgICByZXR1cm4ganNOdWxsKCk7CiAKLSAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGZ1bmN0aW9uQ2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGZ1bmN0aW9uQ2FsbEZyYW1lLT5zb21lQ29kZUJsb2NrRm9yUG9zc2li
bHlJbmxpbmVkQ29kZSgpOwogICAgIGlmIChjb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgewog
ICAgICAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpID09IEZ1bmN0aW9uQ29kZSk7CiAg
ICAgICAgIGludCBhcmd1bWVudHNSZWdpc3RlciA9IGNvZGVCbG9jay0+YXJndW1lbnRzUmVnaXN0
ZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNw
cAkocmV2aXNpb24gMTE2NjIwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJn
dW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDYgKzM1NSw5IEBAIHZvaWQgQXJndW1l
bnRzOjp0ZWFyT2ZmKENhbGxGcmFtZSogY2FsbEYKICAgICBpZiAoIWQtPm51bUFyZ3VtZW50cykK
ICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gTXVzdCBiZSBjYWxsZWQgZm9yIHRoZSBzYW1lIGNh
bGwgZnJhbWUgZnJvbSB3aGljaCBpdCB3YXMgY3JlYXRlZC4KKyAgICBBU1NFUlQoYml0d2lzZV9j
YXN0PFdyaXRlQmFycmllcjxVbmtub3duPio+KGNhbGxGcmFtZSkgPT0gZC0+cmVnaXN0ZXJzKTsK
KyAgICAKICAgICBkLT5yZWdpc3RlckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJy
aWVyPFVua25vd24+W2QtPm51bUFyZ3VtZW50c10pOwogICAgIGQtPnJlZ2lzdGVycyA9IGQtPnJl
Z2lzdGVyQXJyYXkuZ2V0KCkgKyBDYWxsRnJhbWU6Om9mZnNldEZvcihkLT5udW1Bcmd1bWVudHMg
KyAxKTsKIApAQCAtMzY0LDcgKzM2NywyOCBAQCB2b2lkIEFyZ3VtZW50czo6dGVhck9mZihDYWxs
RnJhbWUqIGNhbGxGCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBJbmxpbmVDYWxsRnJh
bWUqIGlubGluZUNhbGxGcmFtZSA9IGNhbGxGcmFtZS0+aW5saW5lQ2FsbEZyYW1lKCk7CisgICAg
dGVhck9mZkZvcklubGluZUNhbGxGcmFtZSgKKyAgICAgICAgY2FsbEZyYW1lLT5nbG9iYWxEYXRh
KCksIGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCksIGNhbGxGcmFtZS0+aW5saW5lQ2FsbEZyYW1lKCkp
OworfQorCit2b2lkIEFyZ3VtZW50czo6dGVhck9mZihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCit7CisgICAgaWYgKGlzVG9ybk9mZigpKQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFkLT5udW1Bcmd1bWVudHMpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBkLT5yZWdpc3RlckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcg
V3JpdGVCYXJyaWVyPFVua25vd24+W2QtPm51bUFyZ3VtZW50c10pOworICAgIGQtPnJlZ2lzdGVy
cyA9IGQtPnJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyBDYWxsRnJhbWU6Om9mZnNldEZvcihkLT5udW1B
cmd1bWVudHMgKyAxKTsKKworICAgIHRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUoCisgICAgICAg
IGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCwKKyAgICAgICAgaW5saW5lQ2FsbEZyYW1lKTsKK30KKwor
dm9pZCBBcmd1bWVudHM6OnRlYXJPZmZGb3JJbmxpbmVDYWxsRnJhbWUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBSZWdpc3RlciogcmVnaXN0ZXJzLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNh
bGxGcmFtZSkKK3sKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGQtPm51bUFyZ3VtZW50czsg
KytpKSB7CiAgICAgICAgIFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHNbaSArIDFdOwogICAgICAgICAvLyBJbiB0aGUgZnV0dXJlIHdlJ2xsIHN1cHBv
cnQgZGlzcGxhY2VkIHJlY292ZXJpZXMgKGluZGljYXRpbmcgdGhhdCB0aGUKQEAgLTM3Myw3ICsz
OTcsNyBAQCB2b2lkIEFyZ3VtZW50czo6dGVhck9mZihDYWxsRnJhbWUqIGNhbGxGCiAgICAgICAg
IC8vIGl0J3MgbXVjaCBsZXNzIGxpa2VseSB0aGF0IHdlJ2xsIHN1cHBvcnQgaW4tcmVnaXN0ZXIg
cmVjb3ZlcmllcyBzaW5jZQogICAgICAgICAvLyB0aGlzIGNvZGUgZG9lcyBub3QgKGVhc2lseSkg
aGF2ZSBhY2Nlc3MgdG8gcmVnaXN0ZXJzLgogICAgICAgICBKU1ZhbHVlIHZhbHVlOwotICAgICAg
ICBSZWdpc3RlciogbG9jYXRpb24gPSAmY2FsbEZyYW1lLT5yZWdpc3RlcnMoKVtDYWxsRnJhbWU6
OmFyZ3VtZW50T2Zmc2V0KGkpXTsKKyAgICAgICAgUmVnaXN0ZXIqIGxvY2F0aW9uID0gJnJlZ2lz
dGVyc1tDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkpXTsKICAgICAgICAgc3dpdGNoIChyZWNv
dmVyeS50ZWNobmlxdWUoKSkgewogICAgICAgICBjYXNlIEFscmVhZHlJblJlZ2lzdGVyRmlsZToK
ICAgICAgICAgICAgIHZhbHVlID0gbG9jYXRpb24tPmpzVmFsdWUoKTsKQEAgLTQwMSw3ICs0MjUs
NyBAQCB2b2lkIEFyZ3VtZW50czo6dGVhck9mZihDYWxsRnJhbWUqIGNhbGxGCiAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0g
ICAgICAgIGFyZ3VtZW50KGkpLnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgdGhpcywgdmFs
dWUpOworICAgICAgICBhcmd1bWVudChpKS5zZXQoZ2xvYmFsRGF0YSwgdGhpcywgdmFsdWUpOwog
ICAgIH0KIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmgJKHJldmlzaW9uIDExNjYyMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
Z3VtZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywxMyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIGFyZ3VtZW50cy0+ZmluaXNoQ3JlYXRpb24oY2FsbEZyYW1lKTsKICAg
ICAgICAgICAgIHJldHVybiBhcmd1bWVudHM7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHN0YXRpYyBBcmd1bWVudHMqIGNyZWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgQXJndW1lbnRzKiBhcmd1bWVudHMgPSBuZXcgKE5vdE51bGwsIGFs
bG9jYXRlQ2VsbDxBcmd1bWVudHM+KGdsb2JhbERhdGEuaGVhcCkpIEFyZ3VtZW50cyhjYWxsRnJh
bWUpOworICAgICAgICAgICAgYXJndW1lbnRzLT5maW5pc2hDcmVhdGlvbihjYWxsRnJhbWUsIGlu
bGluZUNhbGxGcmFtZSk7CisgICAgICAgICAgICByZXR1cm4gYXJndW1lbnRzOworICAgICAgICB9
CiAKICAgICAgICAgZW51bSB7IE1heEFyZ3VtZW50cyA9IDB4MTAwMDAgfTsKIApAQCAtNzUsNiAr
ODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIEFyZ3VtZW50cyhDYWxs
RnJhbWUqKTsKICAgICAgICAgQXJndW1lbnRzKENhbGxGcmFtZSosIE5vUGFyYW1ldGVyc1R5cGUp
OworICAgICAgICAKKyAgICAgICAgdm9pZCB0ZWFyT2ZmRm9ySW5saW5lQ2FsbEZyYW1lKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgUmVnaXN0ZXIqLCBJbmxpbmVDYWxsRnJhbWUqKTsKIAogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CkBAIC05Miw2
ICsxMDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIHZvaWQgY29weVRv
QXJndW1lbnRzKEV4ZWNTdGF0ZSosIENhbGxGcmFtZSosIHVpbnQzMl90IGxlbmd0aCk7CiAgICAg
ICAgIHZvaWQgdGVhck9mZihDYWxsRnJhbWUqKTsKKyAgICAgICAgdm9pZCB0ZWFyT2ZmKENhbGxG
cmFtZSosIElubGluZUNhbGxGcmFtZSopOwogICAgICAgICBib29sIGlzVG9ybk9mZigpIGNvbnN0
IHsgcmV0dXJuIGQtPnJlZ2lzdGVyQXJyYXk7IH0KICAgICAgICAgdm9pZCBkaWRUZWFyT2ZmQWN0
aXZhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
bikKICAgICAgICAgewpAQCAtMTEyLDYgKzEyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Q
cm9wZXJ0eVNsb3QgfCBPdmVycmlkZXNWaXNpdENoaWxkcmVuIHwgT3ZlcnJpZGVzR2V0UHJvcGVy
dHlOYW1lcyB8IEpTT2JqZWN0OjpTdHJ1Y3R1cmVGbGFnczsKIAogICAgICAgICB2b2lkIGZpbmlz
aENyZWF0aW9uKENhbGxGcmFtZSopOworICAgICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKENhbGxG
cmFtZSosIElubGluZUNhbGxGcmFtZSopOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKQEAgLTE3OSw2ICsxOTAsMjYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICB0ZWFyT2ZmKGNhbGxGcmFtZSk7CiAgICAgfQogCisgICAgaW5saW5l
IHZvaWQgQXJndW1lbnRzOjpmaW5pc2hDcmVhdGlvbihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCisgICAgeworICAgICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSk7CisgICAgICAgIEFTU0VSVChpbmhl
cml0cygmc19pbmZvKSk7CisKKyAgICAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gaW5saW5lQ2Fs
bEZyYW1lLT5jYWxsZWUuZ2V0KCk7CisgICAgICAgIGQtPm51bUFyZ3VtZW50cyA9IGlubGluZUNh
bGxGcmFtZS0+YXJndW1lbnRzLnNpemUoKSAtIDE7CisgICAgICAgIGQtPnJlZ2lzdGVycyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8V3JpdGVCYXJyaWVyPFVua25vd24+Kj4oY2FsbEZyYW1lLT5yZWdpc3Rl
cnMoKSkgKyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0OworICAgICAgICBkLT5jYWxsZWUu
c2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCB0aGlzLCBjYWxsZWUpOworICAgICAgICBkLT5v
dmVycm9kZUxlbmd0aCA9IGZhbHNlOworICAgICAgICBkLT5vdmVycm9kZUNhbGxlZSA9IGZhbHNl
OworICAgICAgICBkLT5vdmVycm9kZUNhbGxlciA9IGZhbHNlOworICAgICAgICBkLT5pc1N0cmlj
dE1vZGUgPSBqc0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oaW5saW5lQ2FsbEZyYW1lLT5leGVj
dXRhYmxlLmdldCgpKS0+aXNTdHJpY3RNb2RlKCk7CisKKyAgICAgICAgLy8gVGhlIGJ5dGVjb2Rl
IGdlbmVyYXRvciBvbWl0cyBvcF90ZWFyX29mZl9hY3RpdmF0aW9uIGluIGNhc2VzIG9mIG5vCisg
ICAgICAgIC8vIGRlY2xhcmVkIHBhcmFtZXRlcnMsIHNvIHdlIG5lZWQgdG8gdGVhciBvZmYgaW1t
ZWRpYXRlbHkuCisgICAgICAgIGlmIChkLT5pc1N0cmljdE1vZGUgfHwgIWNhbGxlZS0+anNFeGVj
dXRhYmxlKCktPnBhcmFtZXRlckNvdW50KCkpCisgICAgICAgICAgICB0ZWFyT2ZmKGNhbGxGcmFt
ZSwgaW5saW5lQ2FsbEZyYW1lKTsKKyAgICB9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5k
aWYgLy8gQXJndW1lbnRzX2gK
</data>
<flag name="review"
          id="147339"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>