<?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>7618</bug_id>
          
          <creation_ts>2006-03-05 17:53:19 -0800</creation_ts>
          <short_desc>use unsigned bitfields when storing enums in them, to avoid mangling on win32 (was causing all layout to be RTL)</short_desc>
          <delta_ts>2006-03-05 20:23:36 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</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="Maciej Stachowiak">mjs</reporter>
          <assigned_to name="Maciej Stachowiak">mjs</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>35188</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-03-05 17:53:19 -0800</bug_when>
    <thetext>In MSVC, enums are signed, as are bitfields containing them. This often makes values at the extreme end of the enum range go negative, so they fail equality comparisons.

I fixed this by always using unsigned for bitfields that hold enums, unless the enum actually uses negative values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35189</commentid>
    <comment_count>1</comment_count>
      <attachid>6880</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-03-05 17:55:24 -0800</bug_when>
    <thetext>Created attachment 6880
take 1 (kinda ugly)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35201</commentid>
    <comment_count>2</comment_count>
      <attachid>6880</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-05 20:17:57 -0800</bug_when>
    <thetext>Comment on attachment 6880
take 1 (kinda ugly)

r=me

I didn&apos;t spot any problems. The trick with a change like this is to do enough testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35202</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-03-05 20:23:36 -0800</bug_when>
    <thetext>Maciej landed this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6880</attachid>
            <date>2006-03-05 17:55:24 -0800</date>
            <delta_ts>2006-03-05 20:17:57 -0800</delta_ts>
            <desc>take 1 (kinda ugly)</desc>
            <filename>unsigned-enums.patch.txt</filename>
            <type>text/plain</type>
            <size>89999</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnRJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2h0bWwvaHRtbC9IVE1MQnV0dG9uRWxlbWVudEltcGwuaAkocmV2aXNpb24gMTMxMzQpCisrKyBr
aHRtbC9odG1sL0hUTUxCdXR0b25FbGVtZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw5
ICs2Niw5IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBET01TdHJpbmcgbV92YWx1ZTsKICAg
ICBET01TdHJpbmcgbV9jdXJyVmFsdWU7Ci0gICAgdHlwZUVudW0gIG1fdHlwZSA6IDI7Ci0gICAg
Ym9vbCAgICAgIG1fZGlydHkgOiAxOwotICAgIGJvb2wgICAgICBtX2FjdGl2ZVN1Ym1pdCA6IDE7
CisgICAgdW5zaWduZWQgbV90eXBlIDogMjsgLy8gdHlwZUVudW0KKyAgICBib29sIG1fZGlydHkg
OiAxOworICAgIGJvb2wgbV9hY3RpdmVTdWJtaXQgOiAxOwogfTsKIAogfSAvL25hbWVzcGFjZQpJ
bmRleDoga2h0bWwvaHRtbC9IVE1MSW5wdXRFbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2h0bWwvaHRtbC9IVE1MSW5wdXRFbGVtZW50SW1wbC5jcHAJKHJldmlzaW9uIDEzMTM0KQorKysg
a2h0bWwvaHRtbC9IVE1MSW5wdXRFbGVtZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4
OCwxMyArMTg4LDEzIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudEltcGw6OnNldElucHV0VHlwZSgK
ICAgICAvLyAjIyMgSU1QT1JUQU5UOiBEb24ndCBhbGxvdyB0aGUgdHlwZSB0byBiZSBjaGFuZ2Vk
IHRvIEZJTEUgYWZ0ZXIgdGhlIGZpcnN0CiAgICAgLy8gdHlwZSBjaGFuZ2UsIG90aGVyd2lzZSBh
IEphdmFTY3JpcHQgcHJvZ3JhbW1lciB3b3VsZCBiZSBhYmxlIHRvIHNldCBhIHRleHQKICAgICAv
LyBmaWVsZCdzIHZhbHVlIHRvIHNvbWV0aGluZyBsaWtlIC9ldGMvcGFzc3dkIGFuZCB0aGVuIGNo
YW5nZSBpdCB0byBhIGZpbGUgZmllbGQuCi0gICAgaWYgKG1fdHlwZSAhPSBuZXdUeXBlKSB7Cisg
ICAgaWYgKGlucHV0VHlwZSgpICE9IG5ld1R5cGUpIHsKICAgICAgICAgaWYgKG5ld1R5cGUgPT0g
RklMRSAmJiBtX2hhdmVUeXBlKSB7CiAgICAgICAgICAgICAvLyBTZXQgdGhlIGF0dHJpYnV0ZSBi
YWNrIHRvIHRoZSBvbGQgdmFsdWUuCiAgICAgICAgICAgICAvLyBVc2VmdWwgaW4gY2FzZSB3ZSB3
ZXJlIGNhbGxlZCBmcm9tIGluc2lkZSBwYXJzZU1hcHBlZEF0dHJpYnV0ZS4KICAgICAgICAgICAg
IHNldEF0dHJpYnV0ZSh0eXBlQXR0ciwgdHlwZSgpKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAg
ICAgICAgIGlmIChtX3R5cGUgPT0gUkFESU8gJiYgIW5hbWUoKS5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIGlmIChpbnB1dFR5cGUoKSA9PSBSQURJTyAmJiAhbmFtZSgpLmlzRW1wdHkoKSkgewog
ICAgICAgICAgICAgICAgIGlmIChnZXREb2N1bWVudCgpLT5jaGVja2VkUmFkaW9CdXR0b25Gb3JH
cm91cChuYW1lKCkuaW1wbCgpLCBtX2Zvcm0pID09IHRoaXMpCiAgICAgICAgICAgICAgICAgICAg
IGdldERvY3VtZW50KCktPnJlbW92ZVJhZGlvQnV0dG9uR3JvdXAobmFtZSgpLmltcGwoKSwgbV9m
b3JtKTsKICAgICAgICAgICAgIH0KSW5kZXg6IGtodG1sL2h0bWwvaHRtbF90YWJsZWltcGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBraHRtbC9odG1sL2h0bWxfdGFibGVpbXBsLmgJKHJldmlzaW9uIDEzMTM0
KQorKysga2h0bWwvaHRtbC9odG1sX3RhYmxlaW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEs
OCArMTQxLDggQEAgcHJvdGVjdGVkOgogCiAgICAgYm9vbCBtX25vQm9yZGVyICAgICA6IDE7CiAg
ICAgYm9vbCBtX3NvbGlkICAgICAgICA6IDE7Ci0gICAgdWludCB1bnVzZWQgICAgICAgICA6IDE0
OwotICAgIHVuc2lnbmVkIHBhZGRpbmcgICAgOiAxNjsKKyAgICAvLyAxNCBiaXRzIHVudXNlZAor
ICAgIHVuc2lnbmVkIHNob3J0IHBhZGRpbmc7CiAgICAgZnJpZW5kIGNsYXNzIEhUTUxUYWJsZUNl
bGxFbGVtZW50SW1wbDsKIH07CiAKSW5kZXg6IGtodG1sL2h0bWwvSFRNTElucHV0RWxlbWVudElt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9odG1sL0hUTUxJbnB1dEVsZW1lbnRJbXBsLmgJKHJl
dmlzaW9uIDEzMTM0KQorKysga2h0bWwvaHRtbC9IVE1MSW5wdXRFbGVtZW50SW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzYsNyArMTM2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBp
c0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmF0ZWRT
dWJtaXQoYm9vbCBmbGFnKTsKIAotICAgIHR5cGVFbnVtIGlucHV0VHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZTsgfQorICAgIHR5cGVFbnVtIGlucHV0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PHR5cGVFbnVtPihtX3R5cGUpOyB9CiAgICAgdm9pZCBzZXRJbnB1dFR5cGUoY29u
c3QgRE9NU3RyaW5nJiB2YWx1ZSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoKTsKQEAgLTE5
OCw3ICsxOTgsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICBIVE1MSW1hZ2VMb2FkZXIqIG1faW1hZ2VM
b2FkZXI7CiAKLSAgICB0eXBlRW51bSBtX3R5cGUgOiA0OworICAgIHVuc2lnbmVkIG1fdHlwZSA6
IDQ7IC8vIHR5cGVFbnVtIAogICAgIGJvb2wgbV9jaGVja2VkIDogMTsKICAgICBib29sIG1fZGVm
YXVsdENoZWNrZWQgOiAxOwogICAgIGJvb2wgbV91c2VEZWZhdWx0Q2hlY2tlZCA6IDE7CkluZGV4
OiBraHRtbC94YmwveGJsX3Byb3RvaGFuZGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwveGJs
L3hibF9wcm90b2hhbmRsZXIuY3BwCShyZXZpc2lvbiAxMzEzNCkKKysrIGtodG1sL3hibC94Ymxf
cHJvdG9oYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNyBAQCBYQkxQcm90
b3R5cGVIYW5kbGVyOjpYQkxQcm90b3R5cGVIYW5kbGVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IERPTVN0cmluZyYgcHJldmVudGRlZmF1bHQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhCTFByb3RvdHlwZUJpbmRpbmcq
IGJpbmRpbmcpCiA6bV9iaW5kaW5nKGJpbmRpbmcpLCBtX25leHQoMCksIG1fZXZlbnROYW1lKGV2
ZW50KSwgCi0gbV9waGFzZShidWJibGluZ1BoYXNlKSwgbV9wcmV2ZW50RGVmYXVsdChmYWxzZSks
IG1fa2V5TWFzaygwKSwgbV9taXNjKDApLCBtX2J1dHRvbigtMSksIG1fdW51c2VkKDApCisgbV9w
aGFzZShidWJibGluZ1BoYXNlKSwgbV9wcmV2ZW50RGVmYXVsdChmYWxzZSksIG1fa2V5TWFzaygw
KSwgbV9taXNjKDApLCBtX2J1dHRvbigtMSkKIHsKICAgICBpZiAoZXZlbnQuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CkluZGV4OiBraHRtbC94YmwveGJsX3Byb3RvaGFuZGxlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtodG1sL3hibC94YmxfcHJvdG9oYW5kbGVyLmgJKHJldmlzaW9uIDEzMTM0KQor
Kysga2h0bWwveGJsL3hibF9wcm90b2hhbmRsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTYg
KzQ4LDE2IEBAIHByaXZhdGU6CiAgICAgRE9NOjpET01TdHJpbmcgbV9ldmVudE5hbWU7IC8vIFRo
ZSBuYW1lIG9mIHRoZSBldmVudC4KIAogICAgIC8vIFRoZSBmb2xsb3dpbmcgdmFsdWVzIG1ha2Ug
dXAgMzIgYml0cy4KLSAgICBpbnQgbV9waGFzZSA6IDI7ICAgICAgICAgICAgLy8gVGhlIHBoYXNl
IChjYXB0dXJpbmcsIGJ1YmJsaW5nLCB0YXJnZXQpCisgICAgdW5zaWduZWQgbV9waGFzZSA6IDI7
ICAgICAgIC8vIFRoZSBwaGFzZSAoY2FwdHVyaW5nLCBidWJibGluZywgdGFyZ2V0KQogICAgIGJv
b2wgbV9wcmV2ZW50RGVmYXVsdCA6IDE7ICAvLyBXaGV0aGVyIG9yIG5vdCB0byBwcmV2ZW50RGVm
YXVsdCBhZnRlciBleGVjdXRpbmcgdGhlIGV2ZW50IGhhbmRsZXIuCi0gICAgaW50IG1fa2V5TWFz
ayA6IDQ7ICAgICAgICAgIC8vIFdoaWNoIG1vZGlmaWVyIGtleXMgdGhpcyBldmVudCBoYW5kbGVy
IGV4cGVjdHMgdG8gaGF2ZSBkb3duCisgICAgdW5zaWduZWQgbV9rZXlNYXNrIDogNDsgICAgIC8v
IFdoaWNoIG1vZGlmaWVyIGtleXMgdGhpcyBldmVudCBoYW5kbGVyIGV4cGVjdHMgdG8gaGF2ZSBk
b3duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGJlIG1h
dGNoZWQuCi0gICAgaW50IG1fbWlzYyA6IDg7ICAgICAgICAgICAgIC8vIE1pc2NlbGxhbmVvdXMg
ZXh0cmEgaW5mb3JtYXRpb24uICBGb3Iga2V5IGV2ZW50cywKKyAgICB1bnNpZ25lZCBtX21pc2Mg
OiA4OyAgICAgICAgLy8gTWlzY2VsbGFuZW91cyBleHRyYSBpbmZvcm1hdGlvbi4gIEZvciBrZXkg
ZXZlbnRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdG9yZXMgd2hldGhl
ciBvciBub3Qgd2UncmUgYSBrZXkgY29kZSBvciBjaGFyIGNvZGUuCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEZvciBtb3VzZSBldmVudHMsIHN0b3JlcyB0aGUgY2xpY2tDb3Vu
dC4KKyAgICAvLyAxIGJpdCB1bnVzZWQKICAgICAvLyBUaGUgcHJpbWFyeSBmaWx0ZXIgaW5mb3Jt
YXRpb24gZm9yIG1vdXNlL2tleSBldmVudHMuCiAgICAgc2hvcnQgbV9idXR0b247ICAgICAgICAg
ICAgIC8vIEZvciBtb3VzZSBldmVudHMsIHN0b3JlcyB0aGUgYnV0dG9uIGluZm8uCi0gICAgaW50
IG1fdW51c2VkOiAxOwogICAgIERPTTo6RE9NU3RyaW5nIG1fa2V5OyAgICAgICAgICAgIC8vIFRo
ZSBrZXljb2RlL2NoYXJjb2RlIHdlIHdhbnQgdG8gbWF0Y2ggZm9yIGtleSBldmVudHMKIH07CiAK
SW5kZXg6IGtodG1sL2VjbWEva2pzX2h0bWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lY21hL2tq
c19odG1sLmgJKHJldmlzaW9uIDEzMTM0KQorKysga2h0bWwvZWNtYS9ranNfaHRtbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDksOCArNTA5LDggQEAgcHJpdmF0ZTogICAgCiAgICAgQ29sb3JTdG9w
ICpzdG9wczsKICAgICBtdXRhYmxlIGludCBhZGp1c3RlZFN0b3BDb3VudDsKICAgICBtdXRhYmxl
IENvbG9yU3RvcCAqYWRqdXN0ZWRTdG9wczsKLSAgICBtdXRhYmxlIHVuc2lnbmVkIHN0b3BzTmVl
ZEFkanVzdGluZzoxOwotICAgIG11dGFibGUgdW5zaWduZWQgcmVnZW5lcmF0ZVNoYWRpbmc6MTsK
KyAgICBtdXRhYmxlIGJvb2wgc3RvcHNOZWVkQWRqdXN0aW5nIDogMTsKKyAgICBtdXRhYmxlIGJv
b2wgcmVnZW5lcmF0ZVNoYWRpbmcgOiAxOwogICB9OwogCiAgIGNsYXNzIEltYWdlUGF0dGVybiA6
IHB1YmxpYyBET01PYmplY3QsIHB1YmxpYyBXZWJDb3JlOjpDYWNoZWRPYmplY3RDbGllbnQgewpJ
bmRleDogcGxhdGZvcm0vRm9udERlc2NyaXB0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGxhdGZvcm0v
Rm9udERlc2NyaXB0aW9uLmgJKHJldmlzaW9uIDEzMTM0KQorKysgcGxhdGZvcm0vRm9udERlc2Ny
aXB0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGljOgogICAgIGJv
b2wgc21hbGxDYXBzKCkgY29uc3QgeyByZXR1cm4gbV9zbWFsbENhcHM7IH0KICAgICBib29sIGlz
QWJzb2x1dGVTaXplKCkgY29uc3QgeyByZXR1cm4gbV9pc0Fic29sdXRlU2l6ZTsgfQogICAgIHVu
c2lnbmVkIHdlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fd2VpZ2h0OyB9Ci0gICAgR2VuZXJpY0Zh
bWlseVR5cGUgZ2VuZXJpY0ZhbWlseSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VuZXJpY0ZhbWlseTsg
fQorICAgIEdlbmVyaWNGYW1pbHlUeXBlIGdlbmVyaWNGYW1pbHkoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxHZW5lcmljRmFtaWx5VHlwZT4obV9nZW5lcmljRmFtaWx5KTsgfQogICAgIGJv
b2wgdXNlUHJpbnRlckZvbnQoKSBjb25zdCB7IHJldHVybiBtX3VzZVByaW50ZXJGb250OyB9CiAK
ICAgICB2b2lkIHNldEZhbWlseShjb25zdCBGb250RmFtaWx5JiBmYW1pbHkpIHsgbV9mYW1pbHlM
aXN0ID0gZmFtaWx5OyB9CkBAIC03OSw3ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lz
QWJzb2x1dGVTaXplIDogMTsgICAvLyBXaGV0aGVyIG9yIG5vdCBDU1Mgc3BlY2lmaWVkIGFuIGV4
cGxpY2l0IHNpemUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChsb2dpY2Fs
IHNpemVzIGxpa2UgIm1lZGl1bSIgZG9uJ3QgY291bnQpLgogICAgIHVuc2lnbmVkIG1fd2VpZ2h0
IDogODsKLSAgICBHZW5lcmljRmFtaWx5VHlwZSBtX2dlbmVyaWNGYW1pbHkgOiAzOworICAgIHVu
c2lnbmVkIG1fZ2VuZXJpY0ZhbWlseSA6IDM7IC8vIEdlbmVyaWNGYW1pbHlUeXBlCiAgICAgYm9v
bCBtX3VzZVByaW50ZXJGb250IDogMTsKIH07CiAKSW5kZXg6IHBsYXRmb3JtL1FTdHJpbmcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIHBsYXRmb3JtL1FTdHJpbmcuY3BwCShyZXZpc2lvbiAxMzEzNCkKKysr
IHBsYXRmb3JtL1FTdHJpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTA4LDggKzI1MDgsOCBA
QCBzdHJ1Y3QgSGFuZGxlUGFnZU5vZGUKIHN0cnVjdCBIYW5kbGVOb2RlIHsKICAgICB1bmlvbiB7
CiAgICAgICAgIHN0cnVjdCB7Ci0gICAgICAgICAgICB1aW50IG5leHQ6MTY7Ci0gICAgICAgICAg
ICB1aW50IHByZXZpb3VzOjE2OworICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgbmV4dDsKKyAg
ICAgICAgICAgIHVuc2lnbmVkIHNob3J0IHByZXZpb3VzOwogICAgICAgICB9IGludGVybmFsTm9k
ZTsKICAgICAgICAgCiAgICAgICAgIEhhbmRsZU5vZGUgKmZyZWVOb2RlczsgIC8vIEFsd2F5cyBh
dCBibG9ja1swXSBpbiBwYWdlLgpJbmRleDogcGxhdGZvcm0vUVN0cmluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHBsYXRmb3JtL1FTdHJpbmcuaAkocmV2aXNpb24gMTMxMzQpCisrKyBwbGF0Zm9ybS9RU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5MSwxMSArMzkxLDExIEBAIHN0cnVjdCBLV1FTdHJp
bmdEYXRhICAKICAgICB1aW50IF9sZW5ndGg7CiAgICAgbXV0YWJsZSBRQ2hhciAqX3VuaWNvZGU7
CiAgICAgbXV0YWJsZSBjaGFyICpfYXNjaWk7Ci0gICAgdWludCBfbWF4VW5pY29kZTozMDsKLSAg
ICB1aW50IF9pc1VuaWNvZGVWYWxpZDoxOwotICAgIHVpbnQgX2lzSGVhcEFsbG9jYXRlZDoxOyAv
LyBGcmFnaWxlLCBidXQgdGhlIG9ubHkgd2F5IHdlIGNhbiBiZSBzdXJlIHRoZSBpbnN0YW5jZSB3
YXMgY3JlYXRlZCB3aXRoICduZXcnLgotICAgIHVpbnQgX21heEFzY2lpOjMxOwotICAgIHVpbnQg
X2lzQXNjaWlWYWxpZDoxOworICAgIHVuc2lnbmVkIF9tYXhVbmljb2RlIDogMzA7CisgICAgYm9v
bCBfaXNVbmljb2RlVmFsaWQgOiAxOworICAgIGJvb2wgX2lzSGVhcEFsbG9jYXRlZCA6IDE7IC8v
IEZyYWdpbGUsIGJ1dCB0aGUgb25seSB3YXkgd2UgY2FuIGJlIHN1cmUgdGhlIGluc3RhbmNlIHdh
cyBjcmVhdGVkIHdpdGggJ25ldycuCisgICAgdW5zaWduZWQgX21heEFzY2lpIDogMzE7CisgICAg
Ym9vbCBfaXNBc2NpaVZhbGlkIDogMTsKICAgICAKICAgICBjaGFyIF9pbnRlcm5hbEJ1ZmZlcltR
U19JTlRFUk5BTF9CVUZGRVJfU0laRV07IC8vIFBhZCBvdXQgdG8gYSAoKChzaXplICsgMSkgJiB+
MTUpICsgMTQpIHNpemUKIApJbmRleDogcmVuZGVyaW5nL2JpZGkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IHJlbmRlcmluZy9iaWRpLmNwcAkocmV2aXNpb24gMTMxMzQpCisrKyByZW5kZXJpbmcvYmlkaS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCwxNCArMjAwLDE0IEBAIHN0YXRpYyB2b2lkIGRlbGV0
ZUJpZGlSdW5zKFJlbmRlckFyZW5hKiAKICAgIHJlbGF5b3V0aW5nCiAqLwogQmlkaUNvbnRleHQ6
OkJpZGlDb250ZXh0KHVuc2lnbmVkIGNoYXIgbCwgUUNoYXI6OkRpcmVjdGlvbiBlLCBCaWRpQ29u
dGV4dCAqcCwgYm9vbCBvKQotICAgIDogbGV2ZWwobCksIG92ZXJyaWRlKG8pLCBkaXIoZSkKKyAg
ICA6IGxldmVsKGwpLCBvdmVycmlkZShvKSwgbV9kaXIoZSkKIHsKICAgICBwYXJlbnQgPSBwOwog
ICAgIGlmIChwKSB7CiAgICAgICAgIHAtPnJlZigpOwotICAgICAgICBiYXNpY0RpciA9IHAtPmJh
c2ljRGlyOworICAgICAgICBtX2Jhc2ljRGlyID0gcC0+YmFzaWNEaXIoKTsKICAgICB9IGVsc2UK
LSAgICAgICAgYmFzaWNEaXIgPSBlOworICAgICAgICBtX2Jhc2ljRGlyID0gZTsKICAgICBjb3Vu
dCA9IDA7CiB9CiAKQEAgLTIzMyw3ICsyMzMsNyBAQCBib29sIG9wZXJhdG9yPT0oY29uc3QgQmlk
aUNvbnRleHQmIGMxLCBjCiB7CiAgICAgaWYgKCZjMSA9PSAmYzIpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGlmIChjMS5sZXZlbCAhPSBjMi5sZXZlbCB8fCBjMS5vdmVycmlkZSAhPSBjMi5v
dmVycmlkZSB8fCBjMS5kaXIgIT0gYzIuZGlyIHx8IGMxLmJhc2ljRGlyICE9IGMyLmJhc2ljRGly
KQorICAgIGlmIChjMS5sZXZlbCAhPSBjMi5sZXZlbCB8fCBjMS5vdmVycmlkZSAhPSBjMi5vdmVy
cmlkZSB8fCBjMS5kaXIoKSAhPSBjMi5kaXIoKSB8fCBjMS5iYXNpY0RpcigpICE9IGMyLmJhc2lj
RGlyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoIWMxLnBhcmVudCkKICAgICAg
ICAgcmV0dXJuICFjMi5wYXJlbnQ7CkBAIC02NDIsOCArNjQyLDggQEAgc3RhdGljIHZvaWQgZW1i
ZWQoUUNoYXI6OkRpcmVjdGlvbiBkLCBCaQogICAgICAgICAgICAgICAgIC8vIGJpZGkuc29yIC4u
LiBiaWRpLmVvciAuLi4gYmlkaS5sYXN0IGVvcjsgbmVlZCB0byBhcHBlbmQgdGhlIGJpZGkuc29y
LWJpZGkuZW9yIHJ1biBvciBleHRlbmQgaXQgdGhyb3VnaCBiaWRpLmxhc3QKICAgICAgICAgICAg
ICAgICBhc3NlcnQoYmlkaS5zdGF0dXMubGFzdCA9PSBRQ2hhcjo6RGlyRVMgfHwgYmlkaS5zdGF0
dXMubGFzdCA9PSBRQ2hhcjo6RGlyRVQgfHwgYmlkaS5zdGF0dXMubGFzdCA9PSBRQ2hhcjo6RGly
Q1MgfHwgYmlkaS5zdGF0dXMubGFzdCA9PSBRQ2hhcjo6RGlyQk4gfHwgYmlkaS5zdGF0dXMubGFz
dCA9PSBRQ2hhcjo6RGlyQiB8fCBiaWRpLnN0YXR1cy5sYXN0ID09IFFDaGFyOjpEaXJTIHx8IGJp
ZGkuc3RhdHVzLmxhc3QgPT0gUUNoYXI6OkRpcldTIHx8IGJpZGkuc3RhdHVzLmxhc3QgPT0gUUNo
YXI6OkRpck9OKTsKICAgICAgICAgICAgICAgICBpZiAoYmlkaS5kaXIgPT0gUUNoYXI6OkRpck9O
KQotICAgICAgICAgICAgICAgICAgICBiaWRpLmRpciA9IGJpZGkuY29udGV4dC0+ZGlyOwotICAg
ICAgICAgICAgICAgIGlmIChiaWRpLmNvbnRleHQtPmRpciA9PSBRQ2hhcjo6RGlyTCkgeworICAg
ICAgICAgICAgICAgICAgICBiaWRpLmRpciA9IGJpZGkuY29udGV4dC0+ZGlyKCk7CisgICAgICAg
ICAgICAgICAgaWYgKGJpZGkuY29udGV4dC0+ZGlyKCkgPT0gUUNoYXI6OkRpckwpIHsKICAgICAg
ICAgICAgICAgICAgICAgLy8gYmlkaS5zb3IgLi4uIGJpZGkuZW9yIC4uLiBiaWRpLmxhc3QgTAog
ICAgICAgICAgICAgICAgICAgICBpZiAoYmlkaS5zdGF0dXMuZW9yID09IFFDaGFyOjpEaXJFTikg
ewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpZGkuc3RhdHVzLmxhc3RTdHJvbmcgIT0g
UUNoYXI6OkRpckwpIHsKQEAgLTY2MiwxMCArNjYyLDEwIEBAIHN0YXRpYyB2b2lkIGVtYmVkKFFD
aGFyOjpEaXJlY3Rpb24gZCwgQmkKICAgICAgICAgICAgIGFwcGVuZFJ1bihiaWRpKTsKICAgICAg
ICAgICAgIGVtcHR5UnVuID0gdHJ1ZTsKICAgICAgICAgICAgIC8vIHNvciBmb3IgdGhlIG5ldyBy
dW4gaXMgZGV0ZXJtaW5lZCBieSB0aGUgaGlnaGVyIGxldmVsIChydWxlIFgxMCkKLSAgICAgICAg
ICAgIGJpZGkuc3RhdHVzLmxhc3QgPSBiaWRpLmNvbnRleHQtPmRpcjsKLSAgICAgICAgICAgIGJp
ZGkuc3RhdHVzLmxhc3RTdHJvbmcgPSBiaWRpLmNvbnRleHQtPmRpcjsKKyAgICAgICAgICAgIGJp
ZGkuc3RhdHVzLmxhc3QgPSBiaWRpLmNvbnRleHQtPmRpcigpOworICAgICAgICAgICAgYmlkaS5z
dGF0dXMubGFzdFN0cm9uZyA9IGJpZGkuY29udGV4dC0+ZGlyKCk7CiAgICAgICAgICAgICBiaWRp
LmNvbnRleHQgPSBjOwotICAgICAgICAgICAgYmlkaS5zdGF0dXMuZW9yID0gYmlkaS5jb250ZXh0
LT5kaXI7CisgICAgICAgICAgICBiaWRpLnN0YXR1cy5lb3IgPSBiaWRpLmNvbnRleHQtPmRpcigp
OwogICAgICAgICAgICAgYmlkaS5lb3Iub2JqID0gMDsKICAgICAgICAgfQogICAgIH0gZWxzZSB7
CkBAIC03MDIsMjYgKzcwMiwyNiBAQCBzdGF0aWMgdm9pZCBlbWJlZChRQ2hhcjo6RGlyZWN0aW9u
IGQsIEJpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmlkaS5zdGF0dXMubGFzdFN0cm9u
ZyAhPSBRQ2hhcjo6RGlyTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZGkuZGly
ID0gUUNoYXI6OkRpckVOOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bihi
aWRpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmlkaS5jb250ZXh0LT5kaXIg
IT0gUUNoYXI6OkRpckwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpZGkuY29u
dGV4dC0+ZGlyKCkgIT0gUUNoYXI6OkRpckwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJpZGkuZGlyID0gUUNoYXI6OkRpclI7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmlkaS5zdGF0dXMuZW9yID09IFFDaGFyOjpE
aXJBTikgewogICAgICAgICAgICAgICAgICAgICAgICAgYmlkaS5kaXIgPSBRQ2hhcjo6RGlyQU47
CiAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oYmlkaSk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYmlkaS5jb250ZXh0LT5kaXIgIT0gUUNoYXI6OkRpckwpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChiaWRpLmNvbnRleHQtPmRpcigpICE9IFFDaGFyOjpEaXJM
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlkaS5lb3IgPSBiaWRpLmxhc3Q7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlkaS5kaXIgPSBRQ2hhcjo6RGlyUjsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oYmlkaSk7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYmlkaS5zdGF0dXMuZW9y
ICE9IFFDaGFyOjpEaXJMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmlkaS5jb250
ZXh0LT5kaXIgPT0gUUNoYXI6OkRpckwgfHwgYmlkaS5zdGF0dXMubGFzdFN0cm9uZyA9PSBRQ2hh
cjo6RGlyTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaWRpLmNvbnRleHQtPmRpcigp
ID09IFFDaGFyOjpEaXJMIHx8IGJpZGkuc3RhdHVzLmxhc3RTdHJvbmcgPT0gUUNoYXI6OkRpckwp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kUnVuKGJpZGkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZGkuZGly
ID0gUUNoYXI6OkRpclI7IAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChiaWRpLnN0YXR1cy5lb3IgIT0gUUNoYXI6OkRpclIgJiYgYmlkaS5zdGF0dXMu
ZW9yICE9IFFDaGFyOjpEaXJBTCkgewogICAgICAgICAgICAgICAgICAgICAvLyBiaWRpLnNvciAu
Li4gYmlkaS5lb3IgLi4uIGJpZGkubGFzdCBSOyBiaWRpLmVvcj1ML0VOL0FOOyBFTixBTiBiZWhh
dmUgbGlrZSBSIChydWxlIE4xKQotICAgICAgICAgICAgICAgICAgICBpZiAoYmlkaS5jb250ZXh0
LT5kaXIgPT0gUUNoYXI6OkRpclIgfHwgYmlkaS5zdGF0dXMubGFzdFN0cm9uZyA9PSBRQ2hhcjo6
RGlyUiB8fCBiaWRpLnN0YXR1cy5sYXN0U3Ryb25nID09IFFDaGFyOjpEaXJBTCkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGJpZGkuY29udGV4dC0+ZGlyKCkgPT0gUUNoYXI6OkRpclIgfHwgYmlk
aS5zdGF0dXMubGFzdFN0cm9uZyA9PSBRQ2hhcjo6RGlyUiB8fCBiaWRpLnN0YXR1cy5sYXN0U3Ry
b25nID09IFFDaGFyOjpEaXJBTCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFJ1bihi
aWRpKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAg
YmlkaS5kaXIgPSBRQ2hhcjo6RGlyTDsgCkBAIC05MDcsNyArOTA3LDcgQEAgdm9pZCBSZW5kZXJC
bG9jazo6Y29tcHV0ZUhvcml6b250YWxQb3NpdAogICAgICAgICBjYXNlIFRBQVVUTzoKICAgICAg
ICAgICAgIG51bVNwYWNlcyA9IDA7CiAgICAgICAgICAgICAvLyBmb3IgcmlnaHQgdG8gbGVmdCBm
YWxsIHRocm91Z2ggdG8gcmlnaHQgYWxpZ25lZAotICAgICAgICAgICAgaWYgKGJpZGkuY29udGV4
dC0+YmFzaWNEaXIgPT0gUUNoYXI6OkRpckwpCisgICAgICAgICAgICBpZiAoYmlkaS5jb250ZXh0
LT5iYXNpY0RpcigpID09IFFDaGFyOjpEaXJMKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFJJR0hUOgogICAgICAgICBjYXNlIEtIVE1MX1JJR0hUOgpAQCAtMTAyMSw3ICsx
MDIxLDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YmlkaVJlb3JkZXJMaW5lKGNvbnN0IAogICAgICAg
ICAgICAgQmlkaUNvbnRleHQgKmMgPSBiaWRpLmNvbnRleHQuZ2V0KCk7CiAgICAgICAgICAgICB3
aGlsZSAoYy0+cGFyZW50KQogICAgICAgICAgICAgICAgIGMgPSBjLT5wYXJlbnQ7Ci0gICAgICAg
ICAgICBkaXJDdXJyZW50ID0gYy0+ZGlyOworICAgICAgICAgICAgZGlyQ3VycmVudCA9IGMtPmRp
cigpOwogICAgICAgICAgICAgaWYgKHByZXZpb3VzTGluZUJyb2tlQ2xlYW5seSkgewogICAgICAg
ICAgICAgICAgIC8vIEEgZGV2aWF0aW9uIGZyb20gdGhlIFVuaWNvZGUgQmlkaSBBbGdvcml0aG0g
aW4gb3JkZXIgdG8gbWF0Y2gKICAgICAgICAgICAgICAgICAvLyBNYWMgT1MgWCB0ZXh0IGFuZCBX
aW5JRTogYSBoYXJkIGxpbmUgYnJlYWsgcmVzZXRzIGJpZGkgc3RhdGUuCkBAIC0xMDMzLDcgKzEw
MzMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpiaWRpUmVvcmRlckxpbmUoY29uc3QgCiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBkaXJDdXJyZW50ID0gYmlkaS5jdXJyZW50LmRpcmVjdGlv
bigpOwogICAgICAgICAgICAgaWYgKGJpZGkuY29udGV4dC0+b3ZlcnJpZGUgJiYgZGlyQ3VycmVu
dCAhPSBRQ2hhcjo6RGlyUkxFICYmIGRpckN1cnJlbnQgIT0gUUNoYXI6OkRpckxSRSAmJiBkaXJD
dXJyZW50ICE9IFFDaGFyOjpEaXJSTE8gJiYgZGlyQ3VycmVudCAhPSBRQ2hhcjo6RGlyTFJPICYm
IGRpckN1cnJlbnQgIT0gUUNoYXI6OkRpclBERikKLSAgICAgICAgICAgICAgICBkaXJDdXJyZW50
ID0gYmlkaS5jb250ZXh0LT5kaXI7CisgICAgICAgICAgICAgICAgZGlyQ3VycmVudCA9IGJpZGku
Y29udGV4dC0+ZGlyKCk7CiAgICAgICAgICAgICBlbHNlIGlmIChkaXJDdXJyZW50ID09IFFDaGFy
OjpEaXJOU00pCiAgICAgICAgICAgICAgICAgZGlyQ3VycmVudCA9IGJpZGkuc3RhdHVzLmxhc3Q7
CiAgICAgICAgIH0KQEAgLTEwNzUsNyArMTA3NSw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmJpZGlS
ZW9yZGVyTGluZShjb25zdCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbnVt
YmVycyBuZWVkIHRvIGJlIG9uIGEgaGlnaGVyIGVtYmVkZGluZyBsZXZlbCwgc28gbGV0J3MgY2xv
c2UgdGhhdCBydW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWRpLmRpciA9IFFDaGFy
OjpEaXJFTjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRSdW4oYmlkaSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpZGkuY29udGV4dC0+ZGlyICE9IFFDaGFy
OjpEaXJMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJpZGkuY29udGV4dC0+
ZGlyKCkgIT0gUUNoYXI6OkRpckwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gdGhlIG5ldXRyYWxzIHRha2UgdGhlIGVtYmVkZGluZyBkaXJlY3Rpb24sIHdoaWNoIGlzIFIK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlkaS5lb3IgPSBiaWRpLmxhc3Q7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpZGkuZGlyID0gUUNoYXI6OkRpclI7CkBA
IC0xMDg2LDcgKzEwODYsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjpiaWRpUmVvcmRlckxpbmUoY29u
c3QgCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBcmFiaWMgbnVtYmVycyBhcmUgYWx3YXlz
IG9uIGEgaGlnaGVyIGVtYmVkZGluZyBsZXZlbCwgc28gbGV0J3MgY2xvc2UgdGhhdCBydW4KICAg
ICAgICAgICAgICAgICAgICAgICAgIGJpZGkuZGlyID0gUUNoYXI6OkRpckFOOwogICAgICAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kUnVuKGJpZGkpOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKGJpZGkuY29udGV4dC0+ZGlyICE9IFFDaGFyOjpEaXJMKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoYmlkaS5jb250ZXh0LT5kaXIoKSAhPSBRQ2hhcjo6RGlyTCkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBuZXV0cmFscyB0YWtlIHRoZSBlbWJlZGRpbmcg
ZGlyZWN0aW9uLCB3aGljaCBpcyBSCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlkaS5l
b3IgPSBiaWRpLmxhc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmlkaS5kaXIgPSBR
Q2hhcjo6RGlyUjsKQEAgLTEwOTQsNyArMTA5NCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmJpZGlS
ZW9yZGVyTGluZShjb25zdCAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfSBlbHNlIGlmKGJpZGkuc3RhdHVzLmVvciAhPSBRQ2hhcjo6RGlyTCkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgLy9sYXN0IHN0dWZmIHRha2VzIGVtYmVkZGluZyBkaXIKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChiaWRpLmNvbnRleHQtPmRpciAhPSBRQ2hhcjo6RGly
TCAmJiBiaWRpLnN0YXR1cy5sYXN0U3Ryb25nICE9IFFDaGFyOjpEaXJMKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoYmlkaS5jb250ZXh0LT5kaXIoKSAhPSBRQ2hhcjo6RGlyTCAmJiBi
aWRpLnN0YXR1cy5sYXN0U3Ryb25nICE9IFFDaGFyOjpEaXJMKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYmlkaS5lb3IgPSBiaWRpLmxhc3Q7IAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJpZGkuZGlyID0gUUNoYXI6OkRpclI7IAogICAgICAgICAgICAgICAgICAgICAgICAg
fQpAQCAtMTEyOCw3ICsxMTI4LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6YmlkaVJlb3JkZXJMaW5l
KGNvbnN0IAogICAgICAgICAgICAgICAgIGNhc2UgUUNoYXI6OkRpck9OOgogICAgICAgICAgICAg
ICAgICAgICBpZiAoYmlkaS5zdGF0dXMuZW9yICE9IFFDaGFyOjpEaXJSICYmIGJpZGkuc3RhdHVz
LmVvciAhPSBRQ2hhcjo6RGlyQUwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vbGFzdCBz
dHVmZiB0YWtlcyBlbWJlZGRpbmcgZGlyCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmlk
aS5jb250ZXh0LT5kaXIgIT0gUUNoYXI6OkRpclIgJiYgYmlkaS5zdGF0dXMubGFzdFN0cm9uZyAh
PSBRQ2hhcjo6RGlyUiAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaWRpLmNvbnRleHQt
PmRpcigpICE9IFFDaGFyOjpEaXJSICYmIGJpZGkuc3RhdHVzLmxhc3RTdHJvbmcgIT0gUUNoYXI6
OkRpclIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgYmlkaS5zdGF0dXMubGFzdFN0
cm9uZyAhPSBRQ2hhcjo6RGlyQUwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWRp
LmVvciA9IGJpZGkubGFzdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaWRpLmRpciA9
IFFDaGFyOjpEaXJMOyAKQEAgLTExOTgsNyArMTE5OCw3IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmJp
ZGlSZW9yZGVyTGluZShjb25zdCAKICAgICAgICAgICAgIGRpckN1cnJlbnQgPSBRQ2hhcjo6RGly
QU47CiAgICAgICAgICAgICBzd2l0Y2ggKGJpZGkuc3RhdHVzLmxhc3QpIHsKICAgICAgICAgICAg
ICAgICBjYXNlIFFDaGFyOjpEaXJMOgotICAgICAgICAgICAgICAgICAgICBpZiAoYmlkaS5jb250
ZXh0LT5kaXIgPT0gUUNoYXI6OkRpckwpCisgICAgICAgICAgICAgICAgICAgIGlmIChiaWRpLmNv
bnRleHQtPmRpcigpID09IFFDaGFyOjpEaXJMKQogICAgICAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kUnVuKGJpZGkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICBjYXNlIFFDaGFyOjpEaXJBTjoKQEAgLTEyMjEsNyArMTIyMSw3IEBAIHZvaWQgUmVuZGVyQmxv
Y2s6OmJpZGlSZW9yZGVyTGluZShjb25zdCAKICAgICAgICAgICAgICAgICBjYXNlIFFDaGFyOjpE
aXJPTjoKICAgICAgICAgICAgICAgICAgICAgaWYgKGJpZGkuc3RhdHVzLmVvciAhPSBRQ2hhcjo6
RGlyUiAmJiBiaWRpLnN0YXR1cy5lb3IgIT0gUUNoYXI6OkRpckFMKSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAvLyBydW4gb2YgTCBiZWZvcmUgbmV1dHJhbHMsIG5ldXRyYWxzIHRha2UgZW1i
ZWRkaW5nIGRpciAoTjIpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmlkaS5jb250ZXh0
LT5kaXIgPT0gUUNoYXI6OkRpclIgfHwgYmlkaS5zdGF0dXMubGFzdFN0cm9uZyA9PSBRQ2hhcjo6
RGlyUiAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaWRpLmNvbnRleHQtPmRpcigpID09
IFFDaGFyOjpEaXJSIHx8IGJpZGkuc3RhdHVzLmxhc3RTdHJvbmcgPT0gUUNoYXI6OkRpclIgCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYmlkaS5zdGF0dXMubGFzdFN0cm9uZyA9PSBR
Q2hhcjo6RGlyQUwpIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGVtYmVk
ZGluZyBkaXJlY3Rpb24gaXMgUgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsb3Nl
IHRoZSBMIHJ1bgpAQCAtMTU0MCw5ICsxNTQwLDkgQEAgSW50UmVjdCBSZW5kZXJCbG9jazo6bGF5
b3V0SW5saW5lQ2hpbGRyZQogICAgICAgICAgICAgYmlkaS5zdGF0dXMuZW9yID0gUUNoYXI6OkRp
clI7CiAgICAgICAgIH0KIAotICAgICAgICBiaWRpLnN0YXR1cy5sYXN0U3Ryb25nID0gc3RhcnRF
bWJlZC0+ZGlyOwotICAgICAgICBiaWRpLnN0YXR1cy5sYXN0ID0gc3RhcnRFbWJlZC0+ZGlyOwot
ICAgICAgICBiaWRpLnN0YXR1cy5lb3IgPSBzdGFydEVtYmVkLT5kaXI7CisgICAgICAgIGJpZGku
c3RhdHVzLmxhc3RTdHJvbmcgPSBzdGFydEVtYmVkLT5kaXIoKTsKKyAgICAgICAgYmlkaS5zdGF0
dXMubGFzdCA9IHN0YXJ0RW1iZWQtPmRpcigpOworICAgICAgICBiaWRpLnN0YXR1cy5lb3IgPSBz
dGFydEVtYmVkLT5kaXIoKTsKICAgICAgICAgYmlkaS5jb250ZXh0ID0gc3RhcnRFbWJlZDsKICAg
ICAgICAgYmlkaS5kaXIgPSBRQ2hhcjo6RGlyT047CiAgICAgICAgIApJbmRleDogcmVuZGVyaW5n
L3JlbmRlcl9sYXllci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJfbGF5ZXIuaAko
cmV2aXNpb24gMTMxMzQpCisrKyByZW5kZXJpbmcvcmVuZGVyX2xheWVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExNSwxMyArMTE1LDE0IEBAIHB1YmxpYzoKIAogICAgIGludCBzcGVlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3BlZWQ7IH0KICAgICBpbnQgbWFycXVlZVNwZWVkKCkgY29uc3Q7Ci0gICAg
RU1hcnF1ZWVEaXJlY3Rpb24gZGlyZWN0aW9uKCkgY29uc3Q7CiAgICAgRU1hcnF1ZWVEaXJlY3Rp
b24gcmV2ZXJzZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJxdWVl
RGlyZWN0aW9uPigtZGlyZWN0aW9uKCkpOyB9CisgICAgRU1hcnF1ZWVEaXJlY3Rpb24gZGlyZWN0
aW9uKCkgY29uc3Q7CisKICAgICBib29sIGlzSG9yaXpvbnRhbCgpIGNvbnN0OwogICAgIGJvb2wg
aXNVbmZ1cmxNYXJxdWVlKCkgY29uc3Q7CiAgICAgaW50IHVuZnVybFBvcygpIGNvbnN0IHsgcmV0
dXJuIG1fdW5mdXJsUG9zOyB9CiAKLSAgICBFV2hpdGVTcGFjZSB3aGl0ZVNwYWNlKCkgeyByZXR1
cm4gbV93aGl0ZVNwYWNlOyB9CisgICAgRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSgpIHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVXaGl0ZVNwYWNlPihtX3doaXRlU3BhY2UpOyB9CiAgICAgCiAgICAgaW50
IGNvbXB1dGVQb3NpdGlvbihFTWFycXVlZURpcmVjdGlvbiBkaXIsIGJvb2wgc3RvcEF0Q2xpZW50
RWRnZSk7CiAKQEAgLTE0OSw3ICsxNTAsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXNldDog
MTsKICAgICBib29sIG1fc3VzcGVuZGVkIDogMTsKICAgICBib29sIG1fc3RvcHBlZCA6IDE7Ci0g
ICAgRVdoaXRlU3BhY2UgbV93aGl0ZVNwYWNlIDogMzsKKyAgICB1bnNpZ25lZCBtX3doaXRlU3Bh
Y2UgOiAzOyAvLyBFV2hpdGVTcGFjZQogICAgIEVNYXJxdWVlRGlyZWN0aW9uIG1fZGlyZWN0aW9u
IDogNDsKIH07CiAKSW5kZXg6IHJlbmRlcmluZy9yZW5kZXJfcmVwbGFjZWQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSByZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2VkLmgJKHJldmlzaW9uIDEzMTM0KQorKysgcmVu
ZGVyaW5nL3JlbmRlcl9yZXBsYWNlZC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFZpc2libGVQb3NpdGlvbiBwb3NpdGlvbkZvckNvb3JkaW5h
dGVzKGludCB4LCBpbnQgeSk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGNhbkJlU2VsZWN0aW9u
TGVhZigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0dWFsIFNlbGVjdGlvblN0YXRl
IHNlbGVjdGlvblN0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25TdGF0ZTsgfQorICAg
IHZpcnR1YWwgU2VsZWN0aW9uU3RhdGUgc2VsZWN0aW9uU3RhdGUoKSBjb25zdCB7IHJldHVybiBz
dGF0aWNfY2FzdDxTZWxlY3Rpb25TdGF0ZT4obV9zZWxlY3Rpb25TdGF0ZSk7IH0KICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUpOwogICAgIHZpcnR1YWwg
SW50UmVjdCBzZWxlY3Rpb25SZWN0KCk7CiAgICAgYm9vbCBpc1NlbGVjdGVkKCk7CkBAIC03MCw3
ICs3MCw3IEBAIHByb3RlY3RlZDoKICAgICBpbnQgbV9pbnRyaW5zaWNXaWR0aDsKICAgICBpbnQg
bV9pbnRyaW5zaWNIZWlnaHQ7CiAgICAgCi0gICAgU2VsZWN0aW9uU3RhdGUgbV9zZWxlY3Rpb25T
dGF0ZSA6IDM7CisgICAgdW5zaWduZWQgbV9zZWxlY3Rpb25TdGF0ZSA6IDM7IC8vIFNlbGVjdGlv
blN0YXRlCiB9OwogCiAKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJUYWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIHJlbmRlcmluZy9SZW5kZXJUYWJsZS5oCShyZXZpc2lvbiAxMzEzNCkKKysrIHJlbmRlcmlu
Zy9SZW5kZXJUYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoK
ICAgICBpbnQgYm9yZGVyVG9wKCkgY29uc3Q7CiAgICAgaW50IGJvcmRlckJvdHRvbSgpIGNvbnN0
OwogICAgIAotICAgIFJ1bGVzIGdldFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gcnVsZXM7IH0KKyAg
ICBSdWxlcyBnZXRSdWxlcygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFJ1bGVzPihydWxl
cyk7IH0KIAogICAgIGNvbnN0IENvbG9yJiBiZ0NvbG9yKCkgY29uc3QgeyByZXR1cm4gc3R5bGUo
KS0+YmFja2dyb3VuZENvbG9yKCk7IH0KIApAQCAtMTczLDEyICsxNzMsMTIgQEAgcHJpdmF0ZToK
IAogICAgIENvbGxhcHNlZEJvcmRlclZhbHVlKiBtX2N1cnJlbnRCb3JkZXI7CiAgICAgCi0gICAg
RnJhbWUgZnJhbWUgICAgICAgICAgICAgICAgIDogNDsKLSAgICBSdWxlcyBydWxlcyAgICAgICAg
ICAgICAgICAgOiA0OworICAgIHVuc2lnbmVkIGZyYW1lIDogNDsgLy8gRnJhbWUKKyAgICB1bnNp
Z25lZCBydWxlcyA6IDQ7IC8vIFJ1bGVzCiAKLSAgICBib29sIGhhc19jb2xfZWxlbXMgICAgICAg
ICAgOiAxOwotICAgIHVuc2lnbmVkIHBhZGRpbmcgICAgICAgICAgICA6IDIyOwotICAgIHVpbnQg
bmVlZFNlY3Rpb25SZWNhbGMgICAgICA6IDE7CisgICAgYm9vbCBoYXNfY29sX2VsZW1zIDogMTsK
KyAgICB1bnNpZ25lZCBwYWRkaW5nIDogMjI7CisgICAgYm9vbCBuZWVkU2VjdGlvblJlY2FsYyA6
IDE7CiAgICAgCiAgICAgc2hvcnQgaHNwYWNpbmc7CiAgICAgc2hvcnQgdnNwYWNpbmc7CkluZGV4
OiByZW5kZXJpbmcvUmVuZGVyQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvUmVuZGVy
QmxvY2suaAkocmV2aXNpb24gMTMxMzQpCisrKyByZW5kZXJpbmcvUmVuZGVyQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMjE4LDcgKzIxOCw3IEBAIHB1YmxpYzoKICAgICBib29sIGhhc01hcmt1
cFRydW5jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2hhc01hcmt1cFRydW5jYXRpb247IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNTZWxlY3RlZENoaWxkcmVuKCkgY29uc3QgeyByZXR1cm4gbV9z
ZWxlY3Rpb25TdGF0ZSAhPSBTZWxlY3Rpb25Ob25lOyB9Ci0gICAgdmlydHVhbCBTZWxlY3Rpb25T
dGF0ZSBzZWxlY3Rpb25TdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0aW9uU3RhdGU7IH0K
KyAgICB2aXJ0dWFsIFNlbGVjdGlvblN0YXRlIHNlbGVjdGlvblN0YXRlKCkgY29uc3QgeyByZXR1
cm4gc3RhdGljX2Nhc3Q8U2VsZWN0aW9uU3RhdGU+KG1fc2VsZWN0aW9uU3RhdGUpOyB9CiAgICAg
dmlydHVhbCB2b2lkIHNldFNlbGVjdGlvblN0YXRlKFNlbGVjdGlvblN0YXRlIHMpOwogCiAgICAg
c3RydWN0IEJsb2NrU2VsZWN0aW9uSW5mbyB7CkBAIC0yODIsMjIgKzI4MiwyNCBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgICAgICBGbG9hdFJpZ2h0CiAgICAgICAgIH07CiAKLSAgICAgICAgRmxvYXRp
bmdPYmplY3QoVHlwZSBfdHlwZSkgeworICAgICAgICBGbG9hdGluZ09iamVjdChUeXBlIHR5cGUp
IHsKICAgICAgICAgICAgIG5vZGUgPSAwOwogICAgICAgICAgICAgc3RhcnRZID0gMDsKICAgICAg
ICAgICAgIGVuZFkgPSAwOwotICAgICAgICAgICAgdHlwZSA9IF90eXBlOworICAgICAgICAgICAg
bV90eXBlID0gdHlwZTsKICAgICAgICAgICAgIGxlZnQgPSAwOwogICAgICAgICAgICAgd2lkdGgg
PSAwOwogICAgICAgICAgICAgbm9QYWludCA9IGZhbHNlOwogICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBUeXBlIHR5cGUoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxUeXBlPihtX3R5cGUpOyB9
CiAKICAgICAgICAgUmVuZGVyT2JqZWN0KiBub2RlOwogICAgICAgICBpbnQgc3RhcnRZOwogICAg
ICAgICBpbnQgZW5kWTsKICAgICAgICAgaW50IGxlZnQ7CiAgICAgICAgIGludCB3aWR0aDsKLSAg
ICAgICAgVHlwZSB0eXBlIDogMTsgLy8gbGVmdCBvciByaWdodCBhbGlnbmVkCisgICAgICAgIHVu
c2lnbmVkIG1fdHlwZSA6IDE7IC8vIFR5cGUgKGxlZnQgb3IgcmlnaHQgYWxpZ25lZCkKICAgICAg
ICAgYm9vbCBub1BhaW50IDogMTsKICAgICB9OwogICAgIApAQCAtNDA3LDEyICs0MDksMTIgQEAg
cHJvdGVjdGVkOgogICAgIFFQdHJMaXN0PFJlbmRlck9iamVjdD4qIG1fcG9zaXRpb25lZE9iamVj
dHM7CiAgICAgCiAgICAgYm9vbCBtX2NoaWxkcmVuSW5saW5lIDogMTsKLSAgICBib29sIG1fZmly
c3RMaW5lICAgICAgOiAxOwotICAgIEVDbGVhciBtX2NsZWFyU3RhdHVzICA6IDI7CisgICAgYm9v
bCBtX2ZpcnN0TGluZSA6IDE7CisgICAgdW5zaWduZWQgbV9jbGVhclN0YXR1cyAgOiAyOyAvLyBF
Q2xlYXIKICAgICBib29sIG1fdG9wTWFyZ2luUXVpcmsgOiAxOwogICAgIGJvb2wgbV9ib3R0b21N
YXJnaW5RdWlyayA6IDE7CiAgICAgYm9vbCBtX2hhc01hcmt1cFRydW5jYXRpb24gOiAxOwotICAg
IFNlbGVjdGlvblN0YXRlIG1fc2VsZWN0aW9uU3RhdGUgOiAzOworICAgIHVuc2lnbmVkIG1fc2Vs
ZWN0aW9uU3RhdGUgOiAzOyAvLyBTZWxlY3Rpb25TdGF0ZQogCiAgICAgaW50IG1fbWF4VG9wUG9z
TWFyZ2luOwogICAgIGludCBtX21heFRvcE5lZ01hcmdpbjsKSW5kZXg6IHJlbmRlcmluZy9yZW5k
ZXJfc3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmgJKHJldmlz
aW9uIDEzMTM0KQorKysgcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OCw4ICs0OCw4IEBACiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKICNlbmRpZgogCi0j
ZGVmaW5lIFNFVF9WQVIoZ3JvdXAsdmFyaWFibGUsdmFsdWUpIFwKLSAgICBpZiAoIShncm91cC0+
dmFyaWFibGUgPT0gdmFsdWUpKSBcCisjZGVmaW5lIFNFVF9WQVIoZ3JvdXAsIHZhcmlhYmxlLCB2
YWx1ZSkgXAorICAgIGlmICghKGdyb3VwLT52YXJpYWJsZSA9PSBzdGF0aWNfY2FzdDx0eXBlb2Yo
Z3JvdXAtPnZhcmlhYmxlKT4odmFsdWUpKSkgXAogICAgICAgICBncm91cC5hY2Nlc3MoKS0+dmFy
aWFibGUgPSB2YWx1ZTsKIAogY2xhc3MgUmVuZGVyQXJlbmE7CkBAIC0xMjEsMTUgKzEyMSwxNyBA
QCBjbGFzcyBCb3JkZXJWYWx1ZQogcHVibGljOgogICAgIEJvcmRlclZhbHVlKCkgewogICAgICAg
ICB3aWR0aCA9IDM7IC8vIG1lZGl1bSBpcyBkZWZhdWx0IHZhbHVlCi0gICAgICAgIHN0eWxlID0g
Qk5PTkU7CisgICAgICAgIG1fc3R5bGUgPSBCTk9ORTsKICAgICB9CiAKICAgICBDb2xvciBjb2xv
cjsKLSAgICB1bnNpZ25lZCBzaG9ydCB3aWR0aCA6IDEyOwotICAgIEVCb3JkZXJTdHlsZSBzdHls
ZSA6IDQ7CisgICAgdW5zaWduZWQgd2lkdGggOiAxMjsKKyAgICB1bnNpZ25lZCBtX3N0eWxlIDog
NDsgLy8gRUJvcmRlclN0eWxlIAogCisgICAgRUJvcmRlclN0eWxlIHN0eWxlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlclN0eWxlPihtX3N0eWxlKTsgfQorICAgIAogICAgIGJv
b2wgbm9uWmVybyhib29sIGNoZWNrU3R5bGUgPSB0cnVlKSBjb25zdCB7Ci0gICAgICAgIHJldHVy
biB3aWR0aCAhPSAwICYmICghY2hlY2tTdHlsZSB8fCBzdHlsZSAhPSBCTk9ORSk7CisgICAgICAg
IHJldHVybiB3aWR0aCAhPSAwICYmICghY2hlY2tTdHlsZSB8fCBtX3N0eWxlICE9IEJOT05FKTsK
ICAgICB9CiAKICAgICBib29sIGlzVHJhbnNwYXJlbnQoKSBjb25zdCB7CkBAIC0xMzgsNyArMTQw
LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBCb3JkZXJWYWx1
ZSYgbykgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiB3aWR0aD09by53aWR0aCAmJiBzdHls
ZT09by5zdHlsZSAmJiBjb2xvcj09by5jb2xvcjsKKyAgICAgICAgcmV0dXJuIHdpZHRoID09IG8u
d2lkdGggJiYgbV9zdHlsZSA9PSBvLm1fc3R5bGUgJiYgY29sb3IgPT0gby5jb2xvcjsKICAgICB9
CiAKICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgQm9yZGVyVmFsdWUmIG8pIGNvbnN0CkBAIC0x
NTgsNyArMTYwLDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBP
dXRsaW5lVmFsdWUmIG8pIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gd2lkdGg9PW8ud2lk
dGggJiYgc3R5bGU9PW8uc3R5bGUgJiYgY29sb3I9PW8uY29sb3IgJiYgX29mZnNldCA9PSBvLl9v
ZmZzZXQgJiYgX2F1dG8gPT0gby5fYXV0bzsKKyAgICAgICAgcmV0dXJuIHdpZHRoID09IG8ud2lk
dGggJiYgbV9zdHlsZSA9PSBvLm1fc3R5bGUgJiYgY29sb3IgPT0gby5jb2xvciAmJiBfb2Zmc2V0
ID09IG8uX29mZnNldCAmJiBfYXV0byA9PSBvLl9hdXRvOwogICAgIH0KICAgICAKICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgT3V0bGluZVZhbHVlJiBvKSBjb25zdApAQCAtMTc4LDcgKzE4MCw3
IEBAIHN0cnVjdCBDb2xsYXBzZWRCb3JkZXJWYWx1ZQogICAgIENvbGxhcHNlZEJvcmRlclZhbHVl
KGNvbnN0IEJvcmRlclZhbHVlKiBiLCBFQm9yZGVyUHJlY2VkZW5jZSBwKSA6Ym9yZGVyKGIpLCBw
cmVjZWRlbmNlKHApIHt9CiAgICAgCiAgICAgaW50IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gYm9y
ZGVyICYmIGJvcmRlci0+bm9uWmVybygpID8gYm9yZGVyLT53aWR0aCA6IDA7IH0KLSAgICBFQm9y
ZGVyU3R5bGUgc3R5bGUoKSBjb25zdCB7IHJldHVybiBib3JkZXIgPyBib3JkZXItPnN0eWxlIDog
QkhJRERFTjsgfQorICAgIEVCb3JkZXJTdHlsZSBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIGJvcmRl
ciA/IGJvcmRlci0+c3R5bGUoKSA6IEJISURERU47IH0KICAgICBib29sIGV4aXN0cygpIGNvbnN0
IHsgcmV0dXJuIGJvcmRlcjsgfQogICAgIENvbG9yIGNvbG9yKCkgY29uc3QgeyByZXR1cm4gYm9y
ZGVyID8gYm9yZGVyLT5jb2xvciA6IENvbG9yKCk7IH0KICAgICBib29sIGlzVHJhbnNwYXJlbnQo
KSBjb25zdCB7IHJldHVybiBib3JkZXIgPyBib3JkZXItPmlzVHJhbnNwYXJlbnQoKSA6IHRydWU7
IH0KQEAgLTIxMywxMSArMjE1LDE0IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzSW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlICE9IDA7IH0KICAgICBDYWNoZWRJbWFnZSogaW1hZ2UoKSBj
b25zdCB7IHJldHVybiBtX2ltYWdlOyB9Ci0KKyAgICAKKyAgICBFQm9yZGVySW1hZ2VSdWxlIGhv
cml6b250YWxSdWxlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJvcmRlckltYWdlUnVs
ZT4obV9ob3Jpem9udGFsUnVsZSk7IH0KKyAgICBFQm9yZGVySW1hZ2VSdWxlIHZlcnRpY2FsUnVs
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3JkZXJJbWFnZVJ1bGU+KG1fdmVydGlj
YWxSdWxlKTsgfQorICAgIAogICAgIENhY2hlZEltYWdlKiBtX2ltYWdlOwogICAgIExlbmd0aEJv
eCBtX3NsaWNlczsKLSAgICBFQm9yZGVySW1hZ2VSdWxlIG1faG9yaXpvbnRhbFJ1bGUgOiAyOwot
ICAgIEVCb3JkZXJJbWFnZVJ1bGUgbV92ZXJ0aWNhbFJ1bGUgOiAyOworICAgIHVuc2lnbmVkIG1f
aG9yaXpvbnRhbFJ1bGUgOiAyOyAvLyBFQm9yZGVySW1hZ2VSdWxlCisgICAgdW5zaWduZWQgbV92
ZXJ0aWNhbFJ1bGUgOiAyOyAvLyBFQm9yZGVySW1hZ2VSdWxlCiB9OwogCiBjbGFzcyBCb3JkZXJE
YXRhCkBAIC0yNTQsMjUgKzI1OSwyNSBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHVuc2ln
bmVkIHNob3J0IGJvcmRlckxlZnRXaWR0aCgpIGNvbnN0IHsKLSAgICAgICAgaWYgKCFpbWFnZS5o
YXNJbWFnZSgpICYmIChsZWZ0LnN0eWxlID09IEJOT05FIHx8IGxlZnQuc3R5bGUgPT0gQkhJRERF
TikpCisgICAgICAgIGlmICghaW1hZ2UuaGFzSW1hZ2UoKSAmJiAobGVmdC5zdHlsZSgpID09IEJO
T05FIHx8IGxlZnQuc3R5bGUoKSA9PSBCSElEREVOKSkKICAgICAgICAgICAgIHJldHVybiAwOyAK
ICAgICAgICAgcmV0dXJuIGxlZnQud2lkdGg7CiAgICAgfQogICAgIAogICAgIHVuc2lnbmVkIHNo
b3J0IGJvcmRlclJpZ2h0V2lkdGgoKSBjb25zdCB7Ci0gICAgICAgIGlmICghaW1hZ2UuaGFzSW1h
Z2UoKSAmJiAocmlnaHQuc3R5bGUgPT0gQk5PTkUgfHwgcmlnaHQuc3R5bGUgPT0gQkhJRERFTikp
CisgICAgICAgIGlmICghaW1hZ2UuaGFzSW1hZ2UoKSAmJiAocmlnaHQuc3R5bGUoKSA9PSBCTk9O
RSB8fCByaWdodC5zdHlsZSgpID09IEJISURERU4pKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgICAgIHJldHVybiByaWdodC53aWR0aDsKICAgICB9CiAgICAgCiAgICAgdW5zaWduZWQgc2hv
cnQgYm9yZGVyVG9wV2lkdGgoKSBjb25zdCB7Ci0gICAgICAgIGlmICghaW1hZ2UuaGFzSW1hZ2Uo
KSAmJiAodG9wLnN0eWxlID09IEJOT05FIHx8IHRvcC5zdHlsZSA9PSBCSElEREVOKSkKKyAgICAg
ICAgaWYgKCFpbWFnZS5oYXNJbWFnZSgpICYmICh0b3Auc3R5bGUoKSA9PSBCTk9ORSB8fCB0b3Au
c3R5bGUoKSA9PSBCSElEREVOKSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1
cm4gdG9wLndpZHRoOwogICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBzaG9ydCBib3JkZXJCb3R0
b21XaWR0aCgpIGNvbnN0IHsKLSAgICAgICAgaWYgKCFpbWFnZS5oYXNJbWFnZSgpICYmIChib3R0
b20uc3R5bGUgPT0gQk5PTkUgfHwgYm90dG9tLnN0eWxlID09IEJISURERU4pKQorICAgICAgICBp
ZiAoIWltYWdlLmhhc0ltYWdlKCkgJiYgKGJvdHRvbS5zdHlsZSgpID09IEJOT05FIHx8IGJvdHRv
bS5zdHlsZSgpID09IEJISURERU4pKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJl
dHVybiBib3R0b20ud2lkdGg7CiAgICAgfQpAQCAtMzQxLDcgKzM0Niw3IEBAIHB1YmxpYzoKIAog
ICAgIGludCB6X2luZGV4OwogICAgIGJvb2wgel9hdXRvIDogMTsKLSAgICBFQm94U2l6aW5nIGJv
eFNpemluZyA6IDE7CisgICAgdW5zaWduZWQgYm94U2l6aW5nIDogMTsgLy8gRUJveFNpemluZwog
fTsKIAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
QEAgLTQxMCw3ICs0MTUsNyBAQCBwdWJsaWM6CiAKICAgICBMZW5ndGhCb3ggY2xpcDsKICAgICBi
b29sIGhhc0NsaXAgOiAxOwotICAgIGludCB0ZXh0RGVjb3JhdGlvbiA6IDQ7IC8vIFRleHQgZGVj
b3JhdGlvbnMgZGVmaW5lZCAqb25seSogYnkgdGhpcyBlbGVtZW50LgorICAgIHVuc2lnbmVkIHRl
eHREZWNvcmF0aW9uIDogNDsgLy8gVGV4dCBkZWNvcmF0aW9ucyBkZWZpbmVkICpvbmx5KiBieSB0
aGlzIGVsZW1lbnQuCiAgICAgCiAgICAgc2hvcnQgY29sc3BhbjsgLy8gZm9yIGh0bWwsIG5vdCBh
IGNzczIgYXR0cmlidXRlCiAKQEAgLTQzNyw5ICs0NDIsOSBAQCBwdWJsaWM6CiAgICAgTGVuZ3Ro
IGJhY2tncm91bmRYUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3hQb3NpdGlvbjsgfQogICAg
IExlbmd0aCBiYWNrZ3JvdW5kWVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV95UG9zaXRpb247
IH0KICAgICBib29sIGJhY2tncm91bmRBdHRhY2htZW50KCkgY29uc3QgeyByZXR1cm4gbV9iZ0F0
dGFjaG1lbnQ7IH0KLSAgICBFQmFja2dyb3VuZEJveCBiYWNrZ3JvdW5kQ2xpcCgpIGNvbnN0IHsg
cmV0dXJuIG1fYmdDbGlwOyB9Ci0gICAgRUJhY2tncm91bmRCb3ggYmFja2dyb3VuZE9yaWdpbigp
IGNvbnN0IHsgcmV0dXJuIG1fYmdPcmlnaW47IH0KLSAgICBFQmFja2dyb3VuZFJlcGVhdCBiYWNr
Z3JvdW5kUmVwZWF0KCkgY29uc3QgeyByZXR1cm4gbV9iZ1JlcGVhdDsgfQorICAgIEVCYWNrZ3Jv
dW5kQm94IGJhY2tncm91bmRDbGlwKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJhY2tn
cm91bmRCb3g+KG1fYmdDbGlwKTsgfQorICAgIEVCYWNrZ3JvdW5kQm94IGJhY2tncm91bmRPcmln
aW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQmFja2dyb3VuZEJveD4obV9iZ09yaWdp
bik7IH0KKyAgICBFQmFja2dyb3VuZFJlcGVhdCBiYWNrZ3JvdW5kUmVwZWF0KCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUJhY2tncm91bmRSZXBlYXQ+KG1fYmdSZXBlYXQpOyB9CiAKICAg
ICBCYWNrZ3JvdW5kTGF5ZXIqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0KICAgICBC
YWNrZ3JvdW5kTGF5ZXIqIG5leHQoKSB7IHJldHVybiBtX25leHQ7IH0KQEAgLTUwMCw5ICs1MDUs
OSBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIG1feVBvc2l0aW9uOwogCiAgICAgYm9vbCBtX2JnQXR0
YWNobWVudCA6IDE7Ci0gICAgRUJhY2tncm91bmRCb3ggbV9iZ0NsaXAgOiAyOwotICAgIEVCYWNr
Z3JvdW5kQm94IG1fYmdPcmlnaW4gOiAyOwotICAgIEVCYWNrZ3JvdW5kUmVwZWF0IG1fYmdSZXBl
YXQgOiAyOworICAgIHVuc2lnbmVkIG1fYmdDbGlwIDogMjsgLy8gRUJhY2tncm91bmRCb3gKKyAg
ICB1bnNpZ25lZCBtX2JnT3JpZ2luIDogMjsgLy8gRUJhY2tncm91bmRCb3gKKyAgICB1bnNpZ25l
ZCBtX2JnUmVwZWF0IDogMjsgLy8gRUJhY2tncm91bmRSZXBlYXQKIAogICAgIGJvb2wgbV9pbWFn
ZVNldCA6IDE7CiAgICAgYm9vbCBtX2F0dGFjaG1lbnRTZXQgOiAxOwpAQCAtNTU0LDggKzU1OSw4
IEBAIHB1YmxpYzoKICAgICAKICAgICBpbnQgbG9vcHM7IC8vIC0xIG1lYW5zIGluZmluaXRlLgog
ICAgIAotICAgIEVNYXJxdWVlQmVoYXZpb3IgYmVoYXZpb3IgOiAzOwotICAgIEVNYXJxdWVlRGly
ZWN0aW9uIGRpcmVjdGlvbiA6IDM7CisgICAgdW5zaWduZWQgYmVoYXZpb3IgOiAzOyAvLyBFTWFy
cXVlZUJlaGF2aW9yIAorICAgIEVNYXJxdWVlRGlyZWN0aW9uIGRpcmVjdGlvbiA6IDM7IC8vIG5v
dCB1bnNpZ25lZCBiZWNhdXNlIEVNYXJxdWVlRGlyZWN0aW9uIGhhcyBuZWdhdGl2ZSB2YWx1ZXMK
IH07CiAgICAgCiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQpAQCAtNTgxLDEwICs1ODYsMTAgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGludCBmbGV4
X2dyb3VwOwogICAgIHVuc2lnbmVkIGludCBvcmRpbmFsX2dyb3VwOwogCi0gICAgRUJveEFsaWdu
bWVudCBhbGlnbiA6IDM7Ci0gICAgRUJveEFsaWdubWVudCBwYWNrOiAzOwotICAgIEVCb3hPcmll
bnQgb3JpZW50OiAxOwotICAgIEVCb3hMaW5lcyBsaW5lcyA6IDE7CisgICAgdW5zaWduZWQgYWxp
Z24gOiAzOyAvLyBFQm94QWxpZ25tZW50CisgICAgdW5zaWduZWQgcGFjazogMzsgLy8gRUJveEFs
aWdubWVudAorICAgIHVuc2lnbmVkIG9yaWVudDogMTsgLy8gRUJveE9yaWVudAorICAgIHVuc2ln
bmVkIGxpbmVzIDogMTsgLy8gRUJveExpbmVzCiB9OwogCiAvLyBUaGlzIHN0cnVjdCBob2xkcyBp
bmZvcm1hdGlvbiBhYm91dCBzaGFkb3dzIGZvciB0aGUgdGV4dC1zaGFkb3cgYW5kIGJveC1zaGFk
b3cgcHJvcGVydGllcy4KQEAgLTcwNCwxNCArNzA5LDE0IEBAIHB1YmxpYzoKICAgICBmbG9hdCBv
cGFjaXR5OyAgICAgICAgIC8vIFdoZXRoZXIgb3Igbm90IHdlJ3JlIHRyYW5zcGFyZW50LgogICAg
IERhdGFSZWY8U3R5bGVGbGV4aWJsZUJveERhdGE+IGZsZXhpYmxlQm94OyAvLyBGbGV4aWJsZSBi
b3ggcHJvcGVydGllcyAKICAgICBEYXRhUmVmPFN0eWxlTWFycXVlZURhdGE+IG1hcnF1ZWU7IC8v
IE1hcnF1ZWUgcHJvcGVydGllcwotICAgIEVVc2VyRHJhZyB1c2VyRHJhZyA6IDI7IC8vIFdoZXRo
ZXIgb3Igbm90IGEgZHJhZyBjYW4gYmUgaW5pdGlhdGVkIGJ5IHRoaXMgZWxlbWVudC4KLSAgICBF
VXNlclNlbGVjdCB1c2VyU2VsZWN0IDogMjsgIC8vIFdoZXRoZXIgb3Igbm90IHRoZSBlbGVtZW50
IGlzIHNlbGVjdGFibGUuCisgICAgdW5zaWduZWQgdXNlckRyYWcgOiAyOyAvLyBFVXNlckRyYWcK
KyAgICB1bnNpZ25lZCB1c2VyU2VsZWN0IDogMjsgIC8vIEVVc2VyU2VsZWN0CiAgICAgYm9vbCB0
ZXh0T3ZlcmZsb3cgOiAxOyAvLyBXaGV0aGVyIG9yIG5vdCBsaW5lcyB0aGF0IHNwaWxsIG91dCBz
aG91bGQgYmUgdHJ1bmNhdGVkIHdpdGggIi4uLiIKLSAgICBFTWFyZ2luQ29sbGFwc2UgbWFyZ2lu
VG9wQ29sbGFwc2UgOiAyOwotICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5Cb3R0b21Db2xsYXBz
ZSA6IDI7Ci0gICAgRU1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IgbWF0Y2hOZWFyZXN0
TWFpbEJsb2NrcXVvdGVDb2xvciA6IDE7ICAgIAorICAgIHVuc2lnbmVkIG1hcmdpblRvcENvbGxh
cHNlIDogMjsgLy8gRU1hcmdpbkNvbGxhcHNlCisgICAgdW5zaWduZWQgbWFyZ2luQm90dG9tQ29s
bGFwc2UgOiAyOyAvLyBFTWFyZ2luQ29sbGFwc2UKKyAgICB1bnNpZ25lZCBtYXRjaE5lYXJlc3RN
YWlsQmxvY2txdW90ZUNvbG9yIDogMTsgLy8gRU1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29s
b3IKIAotICAgIEVBcHBlYXJhbmNlIG1fYXBwZWFyYW5jZSA6IDU7CisgICAgdW5zaWduZWQgbV9h
cHBlYXJhbmNlIDogNTsgLy8gRUFwcGVhcmFuY2UKIAogI2lmbmRlZiBLSFRNTF9OT19YQkwKICAg
ICBCaW5kaW5nVVJJKiBiaW5kaW5nVVJJOyAvLyBUaGUgWEJMIGJpbmRpbmcgVVJJIGxpc3QuCkBA
IC03MzUsMTAgKzc0MCwxMCBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaGFkb3dEYXRhRXF1aXZhbGVu
dChjb25zdCBTdHlsZUNTUzNJbmhlcml0ZWREYXRhJiBvKSBjb25zdDsKIAogICAgIFNoYWRvd0Rh
dGEqIHRleHRTaGFkb3c7ICAvLyBPdXIgdGV4dCBzaGFkb3cgaW5mb3JtYXRpb24gZm9yIHNoYWRv
d2VkIHRleHQgZHJhd2luZy4KLSAgICBFVXNlck1vZGlmeSB1c2VyTW9kaWZ5IDogMjsgLy8gRmxh
ZyB1c2VkIGZvciBlZGl0aW5nIHN0YXRlCi0gICAgRVdvcmRXcmFwIHdvcmRXcmFwIDogMTsgICAg
Ly8gRmxhZyB1c2VkIGZvciB3b3JkIHdyYXAKLSAgICBFTkJTUE1vZGUgbmJzcE1vZGUgOiAxOyAg
ICAKLSAgICBFS0hUTUxMaW5lQnJlYWsga2h0bWxMaW5lQnJlYWsgOiAxOyAgICAKKyAgICB1bnNp
Z25lZCB1c2VyTW9kaWZ5IDogMjsgLy8gRVVzZXJNb2RpZnkgIChlZGl0aW5nKQorICAgIHVuc2ln
bmVkIHdvcmRXcmFwIDogMTsgLy8gRVdvcmRXcmFwIAorICAgIHVuc2lnbmVkIG5ic3BNb2RlIDog
MTsgLy8gRU5CU1BNb2RlCisgICAgdW5zaWduZWQga2h0bWxMaW5lQnJlYWsgOiAxOyAvLyBFS0hU
TUxMaW5lQnJlYWsKICAgICBib29sIHRleHRTaXplQWRqdXN0IDogMTsgICAgLy8gQW4gQXBwbGUg
ZXh0ZW5zaW9uLiAgTm90IHJlYWxseSBDU1MzIGJ1dCBub3Qgd29ydGggbWFraW5nIGEgbmV3IHN0
cnVjdCBvdmVyLgogICAgIAogcHJpdmF0ZToKQEAgLTc5OCw3ICs4MDMsNyBAQCBwdWJsaWM6CiAg
ICAgLy8gUGFnZWQgbWVkaWEgcHJvcGVydGllcy4KICAgICBzaG9ydCB3aWRvd3M7CiAgICAgc2hv
cnQgb3JwaGFuczsKLSAgICBFUGFnZUJyZWFrIHBhZ2VfYnJlYWtfaW5zaWRlIDogMjsKKyAgICB1
bnNpZ25lZCBwYWdlX2JyZWFrX2luc2lkZSA6IDI7IC8vIEVQYWdlQnJlYWsKIH07CiAKIApAQCAt
OTIzLDE5ICs5MjgsMTkgQEAgcHJvdGVjdGVkOgogICAgICAgICAgICAgcmV0dXJuICEoKnRoaXMg
PT0gb3RoZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgRUVtcHR5Q2VsbCBfZW1wdHlfY2VsbHMg
OiAxIDsKLSAgICAgICAgRUNhcHRpb25TaWRlIF9jYXB0aW9uX3NpZGUgOiAyOwotICAgICAgICBF
TGlzdFN0eWxlVHlwZSBfbGlzdF9zdHlsZV90eXBlIDogNSA7Ci0gICAgICAgIEVMaXN0U3R5bGVQ
b3NpdGlvbiBfbGlzdF9zdHlsZV9wb3NpdGlvbiA6MTsKLSAgICAgICAgRVZpc2liaWxpdHkgX3Zp
c2liaWxpdHkgOiAyOwotICAgICAgICBFVGV4dEFsaWduIF90ZXh0X2FsaWduIDogNDsKLSAgICAg
ICAgRVRleHRUcmFuc2Zvcm0gX3RleHRfdHJhbnNmb3JtIDogMjsKLSAgICAgICAgaW50IF90ZXh0
X2RlY29yYXRpb25zIDogNDsKLSAgICAgICAgRUN1cnNvciBfY3Vyc29yX3N0eWxlIDogNDsKLSAg
ICAgICAgVGV4dERpcmVjdGlvbiBfZGlyZWN0aW9uIDogMTsKKyAgICAgICAgdW5zaWduZWQgX2Vt
cHR5X2NlbGxzIDogMTsgLy8gRUVtcHR5Q2VsbCAKKyAgICAgICAgdW5zaWduZWQgX2NhcHRpb25f
c2lkZSA6IDI7IC8vIEVDYXB0aW9uU2lkZQorICAgICAgICB1bnNpZ25lZCBfbGlzdF9zdHlsZV90
eXBlIDogNSA7IC8vIEVMaXN0U3R5bGVUeXBlCisgICAgICAgIHVuc2lnbmVkIF9saXN0X3N0eWxl
X3Bvc2l0aW9uIDogMTsgLy8gRUxpc3RTdHlsZVBvc2l0aW9uCisgICAgICAgIHVuc2lnbmVkIF92
aXNpYmlsaXR5IDogMjsgLy8gRVZpc2liaWxpdHkKKyAgICAgICAgdW5zaWduZWQgX3RleHRfYWxp
Z24gOiA0OyAvLyBFVGV4dEFsaWduCisgICAgICAgIHVuc2lnbmVkIF90ZXh0X3RyYW5zZm9ybSA6
IDI7IC8vIEVUZXh0VHJhbnNmb3JtCisgICAgICAgIHVuc2lnbmVkIF90ZXh0X2RlY29yYXRpb25z
IDogNDsKKyAgICAgICAgdW5zaWduZWQgX2N1cnNvcl9zdHlsZSA6IDQ7IC8vIEVDdXJzb3IKKyAg
ICAgICAgdW5zaWduZWQgX2RpcmVjdGlvbiA6IDE7IC8vIFRleHREaXJlY3Rpb24KICAgICAgICAg
Ym9vbCBfYm9yZGVyX2NvbGxhcHNlIDogMSA7Ci0gICAgICAgIEVXaGl0ZVNwYWNlIF93aGl0ZV9z
cGFjZSA6IDM7Ci0gICAgICAgIEVCb3hEaXJlY3Rpb24gX2JveF9kaXJlY3Rpb24gOiAxOyAvLyBD
U1MzIGJveF9kaXJlY3Rpb24gcHJvcGVydHkgKGZsZXhpYmxlIGJveCBsYXlvdXQgbW9kdWxlKQor
ICAgICAgICB1bnNpZ25lZCBfd2hpdGVfc3BhY2UgOiAzOyAvLyBFV2hpdGVTcGFjZQorICAgICAg
ICB1bnNpZ25lZCBfYm94X2RpcmVjdGlvbiA6IDE7IC8vIEVCb3hEaXJlY3Rpb24gKENTUzMgYm94
X2RpcmVjdGlvbiBwcm9wZXJ0eSwgZmxleGlibGUgYm94IGxheW91dCBtb2R1bGUpCiAgICAgICAg
IAogICAgICAgICAvLyBub24gQ1NTMiBpbmhlcml0ZWQKICAgICAgICAgYm9vbCBfdmlzdWFsbHlP
cmRlcmVkIDogMTsKQEAgLTk2OSwyNSArOTc0LDI1IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAg
IHJldHVybiAhKCp0aGlzID09IG90aGVyKTsKICAgICAgICAgfQogICAgICAgICAKLSAgICAgICAg
RURpc3BsYXkgX2VmZmVjdGl2ZURpc3BsYXkgOiA1OwotICAgICAgICBFRGlzcGxheSBfb3JpZ2lu
YWxEaXNwbGF5IDogNTsKLSAgICAgICAgRUJhY2tncm91bmRSZXBlYXQgX2JnX3JlcGVhdCA6IDI7
Ci0gICAgICAgIEVPdmVyZmxvdyBfb3ZlcmZsb3cgOiA0IDsKLSAgICAgICAgRVZlcnRpY2FsQWxp
Z24gX3ZlcnRpY2FsX2FsaWduIDogNDsKLSAgICAgICAgRUNsZWFyIF9jbGVhciA6IDI7Ci0gICAg
ICAgIEVQb3NpdGlvbiBfcG9zaXRpb24gOiAyOwotICAgICAgICBFRmxvYXQgX2Zsb2F0aW5nIDog
MjsKLSAgICAgICAgRVRhYmxlTGF5b3V0IF90YWJsZV9sYXlvdXQgOiAxOworICAgICAgICB1bnNp
Z25lZCBfZWZmZWN0aXZlRGlzcGxheSA6IDU7IC8vIEVEaXNwbGF5CisgICAgICAgIHVuc2lnbmVk
IF9vcmlnaW5hbERpc3BsYXkgOiA1OyAvLyBFRGlzcGxheQorICAgICAgICB1bnNpZ25lZCBfYmdf
cmVwZWF0IDogMjsgLy8gRUJhY2tncm91bmRSZXBlYXQKKyAgICAgICAgdW5zaWduZWQgX292ZXJm
bG93IDogNDsgLy8gRU92ZXJmbG93CisgICAgICAgIHVuc2lnbmVkIF92ZXJ0aWNhbF9hbGlnbiA6
IDQ7IC8vIEVWZXJ0aWNhbEFsaWduCisgICAgICAgIHVuc2lnbmVkIF9jbGVhciA6IDI7IC8vIEVD
bGVhcgorICAgICAgICB1bnNpZ25lZCBfcG9zaXRpb24gOiAyOyAvLyBFUG9zaXRpb24KKyAgICAg
ICAgdW5zaWduZWQgX2Zsb2F0aW5nIDogMjsgLy8gRUZsb2F0CisgICAgICAgIHVuc2lnbmVkIF90
YWJsZV9sYXlvdXQgOiAxOyAvLyBFVGFibGVMYXlvdXQKICAgICAgICAgCi0gICAgICAgIEVQYWdl
QnJlYWsgX3BhZ2VfYnJlYWtfYmVmb3JlIDogMjsKLSAgICAgICAgRVBhZ2VCcmVhayBfcGFnZV9i
cmVha19hZnRlciA6IDI7CisgICAgICAgIHVuc2lnbmVkIF9wYWdlX2JyZWFrX2JlZm9yZSA6IDI7
IC8vIEVQYWdlQnJlYWsKKyAgICAgICAgdW5zaWduZWQgX3BhZ2VfYnJlYWtfYWZ0ZXIgOiAyOyAv
LyBFUGFnZUJyZWFrCiAKLSAgICAgICAgUHNldWRvSWQgX3N0eWxlVHlwZSA6IDM7CisgICAgICAg
IHVuc2lnbmVkIF9zdHlsZVR5cGUgOiAzOyAvLyBQc2V1ZG9JZAogICAgICAgICBib29sIF9hZmZl
Y3RlZEJ5SG92ZXIgOiAxOwogICAgICAgICBib29sIF9hZmZlY3RlZEJ5QWN0aXZlIDogMTsKICAg
ICAgICAgYm9vbCBfYWZmZWN0ZWRCeURyYWcgOiAxOwotICAgICAgICBpbnQgX3BzZXVkb0JpdHMg
OiA2OwotICAgICAgICBFVW5pY29kZUJpZGkgX3VuaWNvZGVCaWRpIDogMjsKKyAgICAgICAgdW5z
aWduZWQgX3BzZXVkb0JpdHMgOiA2OworICAgICAgICB1bnNpZ25lZCBfdW5pY29kZUJpZGkgOiAy
OyAvLyBFVW5pY29kZUJpZGkKICAgICB9IG5vbmluaGVyaXRlZF9mbGFnczsKIAogLy8gbm9uLWlu
aGVyaXRlZCBhdHRyaWJ1dGVzCkBAIC0xMDA4LDcgKzEwMTMsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
Ly8gbWFrZXMgdXAgZm9yIHRoZSBzYW1lIHNpemUuCiAgICAgQ29udGVudERhdGEgKmNvbnRlbnQ7
CiAKLSAgICBQc2V1ZG9TdGF0ZSBtX3BzZXVkb1N0YXRlIDogMzsKKyAgICB1bnNpZ25lZCBtX3Bz
ZXVkb1N0YXRlIDogMzsgLy8gUHNldWRvU3RhdGUKICAgICBib29sIG1fYWZmZWN0ZWRCeUF0dHJp
YnV0ZVNlbGVjdG9ycyA6IDE7CiAgICAgCiAgICAgaW50IG1fcmVmOwpAQCAtMTA2Nyw3ICsxMDcy
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBpbmhlcml0RnJvbShjb25zdCBSZW5kZXJTdHlsZSog
aW5oZXJpdFBhcmVudCk7CiAKLSAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSB7IHJldHVybiAgbm9u
aW5oZXJpdGVkX2ZsYWdzLl9zdHlsZVR5cGU7IH0KKyAgICBQc2V1ZG9JZCBzdHlsZVR5cGUoKSB7
IHJldHVybiAgc3RhdGljX2Nhc3Q8UHNldWRvSWQ+KG5vbmluaGVyaXRlZF9mbGFncy5fc3R5bGVU
eXBlKTsgfQogCiAgICAgUmVuZGVyU3R5bGUqIGdldFBzZXVkb1N0eWxlKFBzZXVkb0lkIHBpKTsK
ICAgICB2b2lkIGFkZFBzZXVkb1N0eWxlKFJlbmRlclN0eWxlKiBwc2V1ZG8pOwpAQCAtMTEwMiwx
NiArMTEwNywxNiBAQCBwdWJsaWM6CiAgICAgCiAvLyBhdHRyaWJ1dGUgZ2V0dGVyIG1ldGhvZHMK
IAotICAgIEVEaXNwbGF5ICAgIGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRf
ZmxhZ3MuX2VmZmVjdGl2ZURpc3BsYXk7IH0KLSAgICBFRGlzcGxheSAgICBvcmlnaW5hbERpc3Bs
YXkoKSBjb25zdCB7IHJldHVybiBub25pbmhlcml0ZWRfZmxhZ3MuX29yaWdpbmFsRGlzcGxheTsg
fQorICAgIEVEaXNwbGF5ICAgIGRpc3BsYXkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxF
RGlzcGxheT4obm9uaW5oZXJpdGVkX2ZsYWdzLl9lZmZlY3RpdmVEaXNwbGF5KTsgfQorICAgIEVE
aXNwbGF5ICAgIG9yaWdpbmFsRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVE
aXNwbGF5Pihub25pbmhlcml0ZWRfZmxhZ3MuX29yaWdpbmFsRGlzcGxheSk7IH0KICAgICAKICAg
ICBMZW5ndGggICAgICBsZWZ0KCkgY29uc3QgeyAgcmV0dXJuIHN1cnJvdW5kLT5vZmZzZXQubGVm
dDsgfQogICAgIExlbmd0aCAgICAgIHJpZ2h0KCkgY29uc3QgeyAgcmV0dXJuIHN1cnJvdW5kLT5v
ZmZzZXQucmlnaHQ7IH0KICAgICBMZW5ndGggICAgICB0b3AoKSBjb25zdCB7ICByZXR1cm4gc3Vy
cm91bmQtPm9mZnNldC50b3A7IH0KICAgICBMZW5ndGggICAgICBib3R0b20oKSBjb25zdCB7ICBy
ZXR1cm4gc3Vycm91bmQtPm9mZnNldC5ib3R0b207IH0KIAotICAgIEVQb3NpdGlvbiAgIHBvc2l0
aW9uKCkgY29uc3QgeyByZXR1cm4gIG5vbmluaGVyaXRlZF9mbGFncy5fcG9zaXRpb247IH0KLSAg
ICBFRmxvYXQgICAgICBmbG9hdGluZygpIGNvbnN0IHsgcmV0dXJuICBub25pbmhlcml0ZWRfZmxh
Z3MuX2Zsb2F0aW5nOyB9CisgICAgRVBvc2l0aW9uICAgcG9zaXRpb24oKSBjb25zdCB7IHJldHVy
biAgc3RhdGljX2Nhc3Q8RVBvc2l0aW9uPihub25pbmhlcml0ZWRfZmxhZ3MuX3Bvc2l0aW9uKTsg
fQorICAgIEVGbG9hdCAgICAgIGZsb2F0aW5nKCkgY29uc3QgeyByZXR1cm4gIHN0YXRpY19jYXN0
PEVGbG9hdD4obm9uaW5oZXJpdGVkX2ZsYWdzLl9mbG9hdGluZyk7IH0KIAogICAgIExlbmd0aCAg
ICAgIHdpZHRoKCkgY29uc3QgeyByZXR1cm4gYm94LT53aWR0aDsgfQogICAgIExlbmd0aCAgICAg
IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIGJveC0+aGVpZ2h0OyB9CkBAIC0xMTM1LDMxICsxMTQw
LDMxIEBAIHB1YmxpYzoKICAgICBib29sIGhhc0JvcmRlclJhZGl1cygpIGNvbnN0IHsgcmV0dXJu
IHN1cnJvdW5kLT5ib3JkZXIuaGFzQm9yZGVyUmFkaXVzKCk7IH0KIAogICAgIHVuc2lnbmVkIHNo
b3J0ICBib3JkZXJMZWZ0V2lkdGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJv
cmRlckxlZnRXaWR0aCgpOyB9Ci0gICAgRUJvcmRlclN0eWxlICAgIGJvcmRlckxlZnRTdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdC5zdHlsZTsgfQotICAgIGNvbnN0
IENvbG9yICYgIGJvcmRlckxlZnRDb2xvcigpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3Jk
ZXIubGVmdC5jb2xvcjsgfQorICAgIEVCb3JkZXJTdHlsZSAgICBib3JkZXJMZWZ0U3R5bGUoKSBj
b25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmxlZnQuc3R5bGUoKTsgfQorICAgIGNvbnN0
IENvbG9yJiAgYm9yZGVyTGVmdENvbG9yKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRl
ci5sZWZ0LmNvbG9yOyB9CiAgICAgYm9vbCBib3JkZXJMZWZ0SXNUcmFuc3BhcmVudCgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIubGVmdC5pc1RyYW5zcGFyZW50KCk7IH0KICAgICB1
bnNpZ25lZCBzaG9ydCAgYm9yZGVyUmlnaHRXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5k
LT5ib3JkZXIuYm9yZGVyUmlnaHRXaWR0aCgpOyB9Ci0gICAgRUJvcmRlclN0eWxlICAgIGJvcmRl
clJpZ2h0U3R5bGUoKSBjb25zdCB7ICByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5yaWdodC5zdHls
ZTsgfQotICAgIGNvbnN0IENvbG9yICYgICBib3JkZXJSaWdodENvbG9yKCkgY29uc3QgeyAgcmV0
dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQuY29sb3I7IH0KKyAgICBFQm9yZGVyU3R5bGUgICAg
Ym9yZGVyUmlnaHRTdHlsZSgpIGNvbnN0IHsgIHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnJpZ2h0
LnN0eWxlKCk7IH0KKyAgICBjb25zdCBDb2xvciYgICBib3JkZXJSaWdodENvbG9yKCkgY29uc3Qg
eyAgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmlnaHQuY29sb3I7IH0KICAgICBib29sIGJvcmRl
clJpZ2h0SXNUcmFuc3BhcmVudCgpIGNvbnN0IHsgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIucmln
aHQuaXNUcmFuc3BhcmVudCgpOyB9CiAgICAgdW5zaWduZWQgc2hvcnQgIGJvcmRlclRvcFdpZHRo
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3JkZXJUb3BXaWR0aCgpOyB9Ci0g
ICAgRUJvcmRlclN0eWxlICAgIGJvcmRlclRvcFN0eWxlKCkgY29uc3Qge3JldHVybiBzdXJyb3Vu
ZC0+Ym9yZGVyLnRvcC5zdHlsZTsgfQotICAgIGNvbnN0IENvbG9yICYgIGJvcmRlclRvcENvbG9y
KCkgY29uc3QgeyAgcmV0dXJuIHN1cnJvdW5kLT5ib3JkZXIudG9wLmNvbG9yOyB9CisgICAgRUJv
cmRlclN0eWxlICAgIGJvcmRlclRvcFN0eWxlKCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJv
cmRlci50b3Auc3R5bGUoKTsgfQorICAgIGNvbnN0IENvbG9yJiAgYm9yZGVyVG9wQ29sb3IoKSBj
b25zdCB7ICByZXR1cm4gc3Vycm91bmQtPmJvcmRlci50b3AuY29sb3I7IH0KICAgICBib29sIGJv
cmRlclRvcElzVHJhbnNwYXJlbnQoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLnRv
cC5pc1RyYW5zcGFyZW50KCk7IH0KICAgICB1bnNpZ25lZCBzaG9ydCAgYm9yZGVyQm90dG9tV2lk
dGgoKSBjb25zdCB7IHJldHVybiBzdXJyb3VuZC0+Ym9yZGVyLmJvcmRlckJvdHRvbVdpZHRoKCk7
IH0KLSAgICBFQm9yZGVyU3R5bGUgICAgYm9yZGVyQm90dG9tU3R5bGUoKSBjb25zdCB7ICByZXR1
cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20uc3R5bGU7IH0KLSAgICBjb25zdCBDb2xvciAmICAg
Ym9yZGVyQm90dG9tQ29sb3IoKSBjb25zdCB7ICByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0
b20uY29sb3I7IH0KKyAgICBFQm9yZGVyU3R5bGUgICAgYm9yZGVyQm90dG9tU3R5bGUoKSBjb25z
dCB7ICByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20uc3R5bGUoKTsgfQorICAgIGNvbnN0
IENvbG9yJiAgIGJvcmRlckJvdHRvbUNvbG9yKCkgY29uc3QgeyAgcmV0dXJuIHN1cnJvdW5kLT5i
b3JkZXIuYm90dG9tLmNvbG9yOyB9CiAgICAgYm9vbCBib3JkZXJCb3R0b21Jc1RyYW5zcGFyZW50
KCkgY29uc3QgeyByZXR1cm4gc3Vycm91bmQtPmJvcmRlci5ib3R0b20uaXNUcmFuc3BhcmVudCgp
OyB9CiAgICAgCiAgICAgdW5zaWduZWQgc2hvcnQgb3V0bGluZVNpemUoKSBjb25zdCB7IHJldHVy
biBvdXRsaW5lV2lkdGgoKSArIG91dGxpbmVPZmZzZXQoKTsgfQotICAgIHVuc2lnbmVkIHNob3J0
IG91dGxpbmVXaWR0aCgpIGNvbnN0IHsgaWYgKGJhY2tncm91bmQtPm1fb3V0bGluZS5zdHlsZSA9
PSBCTk9ORSB8fCBiYWNrZ3JvdW5kLT5tX291dGxpbmUuc3R5bGUgPT0gQkhJRERFTikgcmV0dXJu
IDA7IHJldHVybiBiYWNrZ3JvdW5kLT5tX291dGxpbmUud2lkdGg7IH0KLSAgICBFQm9yZGVyU3R5
bGUgICBvdXRsaW5lU3R5bGUoKSBjb25zdCB7ICByZXR1cm4gYmFja2dyb3VuZC0+bV9vdXRsaW5l
LnN0eWxlOyB9CisgICAgdW5zaWduZWQgc2hvcnQgb3V0bGluZVdpZHRoKCkgY29uc3QgeyBpZiAo
YmFja2dyb3VuZC0+bV9vdXRsaW5lLnN0eWxlKCkgPT0gQk5PTkUgfHwgYmFja2dyb3VuZC0+bV9v
dXRsaW5lLnN0eWxlKCkgPT0gQkhJRERFTikgcmV0dXJuIDA7IHJldHVybiBiYWNrZ3JvdW5kLT5t
X291dGxpbmUud2lkdGg7IH0KKyAgICBFQm9yZGVyU3R5bGUgICBvdXRsaW5lU3R5bGUoKSBjb25z
dCB7ICByZXR1cm4gYmFja2dyb3VuZC0+bV9vdXRsaW5lLnN0eWxlKCk7IH0KICAgICBib29sIG91
dGxpbmVTdHlsZUlzQXV0bygpIGNvbnN0IHsgcmV0dXJuIGJhY2tncm91bmQtPm1fb3V0bGluZS5f
YXV0bzsgfQogICAgIGNvbnN0IENvbG9yICYgIG91dGxpbmVDb2xvcigpIGNvbnN0IHsgIHJldHVy
biBiYWNrZ3JvdW5kLT5tX291dGxpbmUuY29sb3I7IH0KIAotICAgIEVPdmVyZmxvdyBvdmVyZmxv
dygpIGNvbnN0IHsgcmV0dXJuICBub25pbmhlcml0ZWRfZmxhZ3MuX292ZXJmbG93OyB9Ci0gICAg
RVZpc2liaWxpdHkgdmlzaWJpbGl0eSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFncy5f
dmlzaWJpbGl0eTsgfQotICAgIEVWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7
IHJldHVybiAgbm9uaW5oZXJpdGVkX2ZsYWdzLl92ZXJ0aWNhbF9hbGlnbjsgfQorICAgIEVPdmVy
ZmxvdyBvdmVyZmxvdygpIGNvbnN0IHsgcmV0dXJuICBzdGF0aWNfY2FzdDxFT3ZlcmZsb3c+KG5v
bmluaGVyaXRlZF9mbGFncy5fb3ZlcmZsb3cpOyB9CisgICAgRVZpc2liaWxpdHkgdmlzaWJpbGl0
eSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVWaXNpYmlsaXR5Pihpbmhlcml0ZWRfZmxh
Z3MuX3Zpc2liaWxpdHkpOyB9CisgICAgRVZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNv
bnN0IHsgcmV0dXJuICBzdGF0aWNfY2FzdDxFVmVydGljYWxBbGlnbj4obm9uaW5oZXJpdGVkX2Zs
YWdzLl92ZXJ0aWNhbF9hbGlnbik7IH0KICAgICBMZW5ndGggdmVydGljYWxBbGlnbkxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIGJveC0+dmVydGljYWxfYWxpZ247IH0KIAogICAgIExlbmd0aCBjbGlw
TGVmdCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y2xpcC5sZWZ0OyB9CkBAIC0xMTY5LDEwICsx
MTc0LDEwIEBAIHB1YmxpYzoKICAgICBMZW5ndGhCb3ggY2xpcCgpIGNvbnN0IHsgcmV0dXJuIHZp
c3VhbC0+Y2xpcDsgfQogICAgIGJvb2wgaGFzQ2xpcCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+
aGFzQ2xpcDsgfQogICAgIAotICAgIEVVbmljb2RlQmlkaSB1bmljb2RlQmlkaSgpIGNvbnN0IHsg
cmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29kZUJpZGk7IH0KKyAgICBFVW5pY29kZUJp
ZGkgdW5pY29kZUJpZGkoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVW5pY29kZUJpZGk+
KG5vbmluaGVyaXRlZF9mbGFncy5fdW5pY29kZUJpZGkpOyB9CiAKLSAgICBFQ2xlYXIgY2xlYXIo
KSBjb25zdCB7IHJldHVybiAgbm9uaW5oZXJpdGVkX2ZsYWdzLl9jbGVhcjsgfQotICAgIEVUYWJs
ZUxheW91dCB0YWJsZUxheW91dCgpIGNvbnN0IHsgcmV0dXJuICBub25pbmhlcml0ZWRfZmxhZ3Mu
X3RhYmxlX2xheW91dDsgfQorICAgIEVDbGVhciBjbGVhcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PEVDbGVhcj4obm9uaW5oZXJpdGVkX2ZsYWdzLl9jbGVhcik7IH0KKyAgICBFVGFibGVM
YXlvdXQgdGFibGVMYXlvdXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVGFibGVMYXlv
dXQ+KG5vbmluaGVyaXRlZF9mbGFncy5fdGFibGVfbGF5b3V0KTsgfQogCiAgICAgc2hvcnQgY29s
U3BhbigpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y29sc3BhbjsgfQogCkBAIC0xMTgyLDE3ICsx
MTg3LDE3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IENvbG9yICYgY29sb3IoKSBjb25zdCB7IHJl
dHVybiBpbmhlcml0ZWQtPmNvbG9yOyB9CiAgICAgTGVuZ3RoIHRleHRJbmRlbnQoKSBjb25zdCB7
IHJldHVybiBpbmhlcml0ZWQtPmluZGVudDsgfQotICAgIEVUZXh0QWxpZ24gdGV4dEFsaWduKCkg
Y29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLl90ZXh0X2FsaWduOyB9Ci0gICAgRVRleHRU
cmFuc2Zvcm0gdGV4dFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFncy5f
dGV4dF90cmFuc2Zvcm07IH0KKyAgICBFVGV4dEFsaWduIHRleHRBbGlnbigpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVUZXh0QWxpZ24+KGluaGVyaXRlZF9mbGFncy5fdGV4dF9hbGlnbik7
IH0KKyAgICBFVGV4dFRyYW5zZm9ybSB0ZXh0VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8RVRleHRUcmFuc2Zvcm0+KGluaGVyaXRlZF9mbGFncy5fdGV4dF90cmFuc2Zvcm0p
OyB9CiAgICAgaW50IHRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkgY29uc3QgeyByZXR1cm4gaW5o
ZXJpdGVkX2ZsYWdzLl90ZXh0X2RlY29yYXRpb25zOyB9CiAgICAgaW50IHRleHREZWNvcmF0aW9u
KCkgY29uc3QgeyByZXR1cm4gdmlzdWFsLT50ZXh0RGVjb3JhdGlvbjsgfQogICAgIGludCB3b3Jk
U3BhY2luZygpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Zm9udC53b3JkU3BhY2luZygpOyB9
CiAgICAgaW50IGxldHRlclNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmZvbnQu
bGV0dGVyU3BhY2luZygpOyB9CiAKLSAgICBUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbigpIGNvbnN0
IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFncy5fZGlyZWN0aW9uOyB9CisgICAgVGV4dERpcmVjdGlv
biBkaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0RGlyZWN0aW9uPihp
bmhlcml0ZWRfZmxhZ3MuX2RpcmVjdGlvbik7IH0KICAgICBMZW5ndGggbGluZUhlaWdodCgpIGNv
bnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+bGluZV9oZWlnaHQ7IH0KIAotICAgIEVXaGl0ZVNwYWNl
IHdoaXRlU3BhY2UoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNl
OyB9CisgICAgRVdoaXRlU3BhY2Ugd2hpdGVTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19j
YXN0PEVXaGl0ZVNwYWNlPihpbmhlcml0ZWRfZmxhZ3MuX3doaXRlX3NwYWNlKTsgfQogICAgIHN0
YXRpYyBib29sIGF1dG9XcmFwKEVXaGl0ZVNwYWNlIHdzKSB7CiAgICAgICAgIC8vIE5vd3JhcCBh
bmQgcHJlIGRvbid0IGF1dG9tYXRpY2FsbHkgd3JhcC4KICAgICAgICAgcmV0dXJuIHdzICE9IE5P
V1JBUCAmJiB3cyAhPSBQUkU7CkBAIC0xMjMwLDEwICsxMjM1LDEwIEBAIHB1YmxpYzoKIAogICAg
IGNvbnN0IENvbG9yICYgYmFja2dyb3VuZENvbG9yKCkgY29uc3QgeyByZXR1cm4gYmFja2dyb3Vu
ZC0+bV9jb2xvcjsgfQogICAgIENhY2hlZEltYWdlICpiYWNrZ3JvdW5kSW1hZ2UoKSBjb25zdCB7
IHJldHVybiBiYWNrZ3JvdW5kLT5tX2JhY2tncm91bmQubV9pbWFnZTsgfQotICAgIEVCYWNrZ3Jv
dW5kUmVwZWF0IGJhY2tncm91bmRSZXBlYXQoKSBjb25zdCB7IHJldHVybiBiYWNrZ3JvdW5kLT5t
X2JhY2tncm91bmQubV9iZ1JlcGVhdDsgfQorICAgIEVCYWNrZ3JvdW5kUmVwZWF0IGJhY2tncm91
bmRSZXBlYXQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQmFja2dyb3VuZFJlcGVhdD4o
YmFja2dyb3VuZC0+bV9iYWNrZ3JvdW5kLm1fYmdSZXBlYXQpOyB9CiAgICAgYm9vbCBiYWNrZ3Jv
dW5kQXR0YWNobWVudCgpIGNvbnN0IHsgcmV0dXJuIGJhY2tncm91bmQtPm1fYmFja2dyb3VuZC5t
X2JnQXR0YWNobWVudDsgfQotICAgIEVCYWNrZ3JvdW5kQm94IGJhY2tncm91bmRDbGlwKCkgY29u
c3QgeyByZXR1cm4gYmFja2dyb3VuZC0+bV9iYWNrZ3JvdW5kLm1fYmdDbGlwOyB9Ci0gICAgRUJh
Y2tncm91bmRCb3ggYmFja2dyb3VuZE9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIGJhY2tncm91bmQt
Pm1fYmFja2dyb3VuZC5tX2JnT3JpZ2luOyB9CisgICAgRUJhY2tncm91bmRCb3ggYmFja2dyb3Vu
ZENsaXAoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQmFja2dyb3VuZEJveD4oYmFja2dy
b3VuZC0+bV9iYWNrZ3JvdW5kLm1fYmdDbGlwKTsgfQorICAgIEVCYWNrZ3JvdW5kQm94IGJhY2tn
cm91bmRPcmlnaW4oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQmFja2dyb3VuZEJveD4o
YmFja2dyb3VuZC0+bV9iYWNrZ3JvdW5kLm1fYmdPcmlnaW4pOyB9CiAgICAgTGVuZ3RoIGJhY2tn
cm91bmRYUG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBiYWNrZ3JvdW5kLT5tX2JhY2tncm91bmQu
bV94UG9zaXRpb247IH0KICAgICBMZW5ndGggYmFja2dyb3VuZFlQb3NpdGlvbigpIGNvbnN0IHsg
cmV0dXJuIGJhY2tncm91bmQtPm1fYmFja2dyb3VuZC5tX3lQb3NpdGlvbjsgfQogICAgIEJhY2tn
cm91bmRMYXllciogYWNjZXNzQmFja2dyb3VuZExheWVycygpIHsgcmV0dXJuICYoYmFja2dyb3Vu
ZC5hY2Nlc3MoKS0+bV9iYWNrZ3JvdW5kKTsgfQpAQCAtMTI0MywxNSArMTI0OCwxNSBAQCBwdWJs
aWM6CiAgICAgYm9vbCBib3JkZXJDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9m
bGFncy5fYm9yZGVyX2NvbGxhcHNlOyB9CiAgICAgc2hvcnQgaG9yaXpvbnRhbEJvcmRlclNwYWNp
bmcoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPmhvcml6b250YWxfYm9yZGVyX3NwYWNpbmc7
IH0KICAgICBzaG9ydCB2ZXJ0aWNhbEJvcmRlclNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBpbmhl
cml0ZWQtPnZlcnRpY2FsX2JvcmRlcl9zcGFjaW5nOyB9Ci0gICAgRUVtcHR5Q2VsbCBlbXB0eUNl
bGxzKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxsczsgfQotICAg
IEVDYXB0aW9uU2lkZSBjYXB0aW9uU2lkZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFn
cy5fY2FwdGlvbl9zaWRlOyB9CisgICAgRUVtcHR5Q2VsbCBlbXB0eUNlbGxzKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RUVtcHR5Q2VsbD4oaW5oZXJpdGVkX2ZsYWdzLl9lbXB0eV9jZWxs
cyk7IH0KKyAgICBFQ2FwdGlvblNpZGUgY2FwdGlvblNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFQ2FwdGlvblNpZGU+KGluaGVyaXRlZF9mbGFncy5fY2FwdGlvbl9zaWRlKTsgfQog
CiAgICAgc2hvcnQgY291bnRlckluY3JlbWVudCgpIGNvbnN0IHsgcmV0dXJuIHZpc3VhbC0+Y291
bnRlcl9pbmNyZW1lbnQ7IH0KICAgICBzaG9ydCBjb3VudGVyUmVzZXQoKSBjb25zdCB7IHJldHVy
biB2aXN1YWwtPmNvdW50ZXJfcmVzZXQ7IH0KIAotICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RTdHls
ZVR5cGUoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWRfZmxhZ3MuX2xpc3Rfc3R5bGVfdHlwZTsg
fQorICAgIEVMaXN0U3R5bGVUeXBlIGxpc3RTdHlsZVR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0
aWNfY2FzdDxFTGlzdFN0eWxlVHlwZT4oaW5oZXJpdGVkX2ZsYWdzLl9saXN0X3N0eWxlX3R5cGUp
OyB9CiAgICAgQ2FjaGVkSW1hZ2UgKmxpc3RTdHlsZUltYWdlKCkgY29uc3QgeyByZXR1cm4gaW5o
ZXJpdGVkLT5zdHlsZV9pbWFnZTsgfQotICAgIEVMaXN0U3R5bGVQb3NpdGlvbiBsaXN0U3R5bGVQ
b3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZF9mbGFncy5fbGlzdF9zdHlsZV9wb3Np
dGlvbjsgfQorICAgIEVMaXN0U3R5bGVQb3NpdGlvbiBsaXN0U3R5bGVQb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVMaXN0U3R5bGVQb3NpdGlvbj4oaW5oZXJpdGVkX2ZsYWdz
Ll9saXN0X3N0eWxlX3Bvc2l0aW9uKTsgfQogCiAgICAgTGVuZ3RoIG1hcmdpblRvcCgpIGNvbnN0
IHsgcmV0dXJuIHN1cnJvdW5kLT5tYXJnaW4udG9wOyB9CiAgICAgTGVuZ3RoIG1hcmdpbkJvdHRv
bSgpIGNvbnN0IHsgIHJldHVybiBzdXJyb3VuZC0+bWFyZ2luLmJvdHRvbTsgfQpAQCAtMTI2Myw1
MCArMTI2OCw1MCBAQCBwdWJsaWM6CiAgICAgTGVuZ3RoIHBhZGRpbmdMZWZ0KCkgY29uc3QgeyBy
ZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcubGVmdDsgfQogICAgIExlbmd0aCBwYWRkaW5nUmlnaHQo
KSBjb25zdCB7ICByZXR1cm4gc3Vycm91bmQtPnBhZGRpbmcucmlnaHQ7IH0KIAotICAgIEVDdXJz
b3IgY3Vyc29yKCkgY29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLl9jdXJzb3Jfc3R5bGU7
IH0KKyAgICBFQ3Vyc29yIGN1cnNvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVDdXJz
b3I+KGluaGVyaXRlZF9mbGFncy5fY3Vyc29yX3N0eWxlKTsgfQogICAgIAogICAgIENhY2hlZElt
YWdlICpjdXJzb3JJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGluaGVyaXRlZC0+Y3Vyc29yX2ltYWdl
OyB9CiAKICAgICBzaG9ydCB3aWRvd3MoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPndpZG93
czsgfQogICAgIHNob3J0IG9ycGhhbnMoKSBjb25zdCB7IHJldHVybiBpbmhlcml0ZWQtPm9ycGhh
bnM7IH0KLSAgICBFUGFnZUJyZWFrIHBhZ2VCcmVha0luc2lkZSgpIGNvbnN0IHsgcmV0dXJuIGlu
aGVyaXRlZC0+cGFnZV9icmVha19pbnNpZGU7IH0KLSAgICBFUGFnZUJyZWFrIHBhZ2VCcmVha0Jl
Zm9yZSgpIGNvbnN0IHsgcmV0dXJuIG5vbmluaGVyaXRlZF9mbGFncy5fcGFnZV9icmVha19iZWZv
cmU7IH0KLSAgICBFUGFnZUJyZWFrIHBhZ2VCcmVha0FmdGVyKCkgY29uc3QgeyByZXR1cm4gbm9u
aW5oZXJpdGVkX2ZsYWdzLl9wYWdlX2JyZWFrX2FmdGVyOyB9CisgICAgRVBhZ2VCcmVhayBwYWdl
QnJlYWtJbnNpZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFUGFnZUJyZWFrPihpbmhl
cml0ZWQtPnBhZ2VfYnJlYWtfaW5zaWRlKTsgfQorICAgIEVQYWdlQnJlYWsgcGFnZUJyZWFrQmVm
b3JlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBhZ2VCcmVhaz4obm9uaW5oZXJpdGVk
X2ZsYWdzLl9wYWdlX2JyZWFrX2JlZm9yZSk7IH0KKyAgICBFUGFnZUJyZWFrIHBhZ2VCcmVha0Fm
dGVyKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVBhZ2VCcmVhaz4obm9uaW5oZXJpdGVk
X2ZsYWdzLl9wYWdlX2JyZWFrX2FmdGVyKTsgfQogICAgIAogICAgIC8vIENTUzMgR2V0dGVyIE1l
dGhvZHMKICNpZm5kZWYgS0hUTUxfTk9fWEJMCiAgICAgQmluZGluZ1VSSSogYmluZGluZ1VSSXMo
KSBjb25zdCB7IHJldHVybiBjc3MzTm9uSW5oZXJpdGVkRGF0YS0+YmluZGluZ1VSSTsgfQogI2Vu
ZGlmCiAgICAgaW50IG91dGxpbmVPZmZzZXQoKSBjb25zdCB7IAotICAgICAgICBpZiAoYmFja2dy
b3VuZC0+bV9vdXRsaW5lLnN0eWxlID09IEJOT05FIHx8IGJhY2tncm91bmQtPm1fb3V0bGluZS5z
dHlsZSA9PSBCSElEREVOKSByZXR1cm4gMDsgcmV0dXJuIGJhY2tncm91bmQtPm1fb3V0bGluZS5f
b2Zmc2V0OworICAgICAgICBpZiAoYmFja2dyb3VuZC0+bV9vdXRsaW5lLnN0eWxlKCkgPT0gQk5P
TkUgfHwgYmFja2dyb3VuZC0+bV9vdXRsaW5lLnN0eWxlKCkgPT0gQkhJRERFTikgcmV0dXJuIDA7
IHJldHVybiBiYWNrZ3JvdW5kLT5tX291dGxpbmUuX29mZnNldDsKICAgICB9CiAgICAgU2hhZG93
RGF0YSogdGV4dFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGNzczNJbmhlcml0ZWREYXRhLT50ZXh0
U2hhZG93OyB9CiAgICAgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IHsgcmV0dXJuIGNzczNOb25Jbmhl
cml0ZWREYXRhLT5vcGFjaXR5OyB9Ci0gICAgRUFwcGVhcmFuY2UgYXBwZWFyYW5jZSgpIGNvbnN0
IHsgcmV0dXJuIGNzczNOb25Jbmhlcml0ZWREYXRhLT5tX2FwcGVhcmFuY2U7IH0KLSAgICBFQm94
QWxpZ25tZW50IGJveEFsaWduKCkgY29uc3QgeyByZXR1cm4gY3NzM05vbkluaGVyaXRlZERhdGEt
PmZsZXhpYmxlQm94LT5hbGlnbjsgfQotICAgIEVCb3hEaXJlY3Rpb24gYm94RGlyZWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uOyB9CisgICAgRUFw
cGVhcmFuY2UgYXBwZWFyYW5jZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVBcHBlYXJh
bmNlPihjc3MzTm9uSW5oZXJpdGVkRGF0YS0+bV9hcHBlYXJhbmNlKTsgfQorICAgIEVCb3hBbGln
bm1lbnQgYm94QWxpZ24oKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFQm94QWxpZ25tZW50
Pihjc3MzTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gtPmFsaWduKTsgfQorICAgIEVCb3hE
aXJlY3Rpb24gYm94RGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RUJveERp
cmVjdGlvbj4oaW5oZXJpdGVkX2ZsYWdzLl9ib3hfZGlyZWN0aW9uKTsgfQogICAgIGZsb2F0IGJv
eEZsZXgoKSB7IHJldHVybiBjc3MzTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGlibGVCb3gtPmZsZXg7
IH0KICAgICB1bnNpZ25lZCBpbnQgYm94RmxleEdyb3VwKCkgY29uc3QgeyByZXR1cm4gY3NzM05v
bkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5mbGV4X2dyb3VwOyB9Ci0gICAgRUJveExpbmVz
IGJveExpbmVzKCkgeyByZXR1cm4gY3NzM05vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5s
aW5lczsgfQorICAgIEVCb3hMaW5lcyBib3hMaW5lcygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEVC
b3hMaW5lcz4oY3NzM05vbkluaGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5saW5lcyk7IH0KICAg
ICB1bnNpZ25lZCBpbnQgYm94T3JkaW5hbEdyb3VwKCkgY29uc3QgeyByZXR1cm4gY3NzM05vbklu
aGVyaXRlZERhdGEtPmZsZXhpYmxlQm94LT5vcmRpbmFsX2dyb3VwOyB9Ci0gICAgRUJveE9yaWVu
dCBib3hPcmllbnQoKSBjb25zdCB7IHJldHVybiBjc3MzTm9uSW5oZXJpdGVkRGF0YS0+ZmxleGli
bGVCb3gtPm9yaWVudDsgfQotICAgIEVCb3hBbGlnbm1lbnQgYm94UGFjaygpIGNvbnN0IHsgcmV0
dXJuIGNzczNOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+cGFjazsgfQotICAgIEVCb3hT
aXppbmcgYm94U2l6aW5nKCkgY29uc3QgeyByZXR1cm4gYm94LT5ib3hTaXppbmc7IH0KKyAgICBF
Qm94T3JpZW50IGJveE9yaWVudCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hPcmll
bnQ+KGNzczNOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+b3JpZW50KTsgfQorICAgIEVC
b3hBbGlnbm1lbnQgYm94UGFjaygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hBbGln
bm1lbnQ+KGNzczNOb25Jbmhlcml0ZWREYXRhLT5mbGV4aWJsZUJveC0+cGFjayk7IH0KKyAgICBF
Qm94U2l6aW5nIGJveFNpemluZygpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVCb3hTaXpp
bmc+KGJveC0+Ym94U2l6aW5nKTsgfQogICAgIExlbmd0aCBtYXJxdWVlSW5jcmVtZW50KCkgY29u
c3QgeyByZXR1cm4gY3NzM05vbkluaGVyaXRlZERhdGEtPm1hcnF1ZWUtPmluY3JlbWVudDsgfQog
ICAgIGludCBtYXJxdWVlU3BlZWQoKSBjb25zdCB7IHJldHVybiBjc3MzTm9uSW5oZXJpdGVkRGF0
YS0+bWFycXVlZS0+c3BlZWQ7IH0KICAgICBpbnQgbWFycXVlZUxvb3BDb3VudCgpIGNvbnN0IHsg
cmV0dXJuIGNzczNOb25Jbmhlcml0ZWREYXRhLT5tYXJxdWVlLT5sb29wczsgfQotICAgIEVNYXJx
dWVlQmVoYXZpb3IgbWFycXVlZUJlaGF2aW9yKCkgY29uc3QgeyByZXR1cm4gY3NzM05vbkluaGVy
aXRlZERhdGEtPm1hcnF1ZWUtPmJlaGF2aW9yOyB9Ci0gICAgRU1hcnF1ZWVEaXJlY3Rpb24gbWFy
cXVlZURpcmVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIGNzczNOb25Jbmhlcml0ZWREYXRhLT5tYXJx
dWVlLT5kaXJlY3Rpb247IH0KLSAgICBFVXNlck1vZGlmeSB1c2VyTW9kaWZ5KCkgY29uc3QgeyBy
ZXR1cm4gY3NzM0luaGVyaXRlZERhdGEtPnVzZXJNb2RpZnk7IH0KLSAgICBFVXNlckRyYWcgdXNl
ckRyYWcoKSBjb25zdCB7IHJldHVybiBjc3MzTm9uSW5oZXJpdGVkRGF0YS0+dXNlckRyYWc7IH0K
LSAgICBFVXNlclNlbGVjdCB1c2VyU2VsZWN0KCkgY29uc3QgeyByZXR1cm4gY3NzM05vbkluaGVy
aXRlZERhdGEtPnVzZXJTZWxlY3Q7IH0KKyAgICBFTWFycXVlZUJlaGF2aW9yIG1hcnF1ZWVCZWhh
dmlvcigpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJxdWVlQmVoYXZpb3I+KGNzczNO
b25Jbmhlcml0ZWREYXRhLT5tYXJxdWVlLT5iZWhhdmlvcik7IH0KKyAgICBFTWFycXVlZURpcmVj
dGlvbiBtYXJxdWVlRGlyZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RU1hcnF1
ZWVEaXJlY3Rpb24+KGNzczNOb25Jbmhlcml0ZWREYXRhLT5tYXJxdWVlLT5kaXJlY3Rpb24pOyB9
CisgICAgRVVzZXJNb2RpZnkgdXNlck1vZGlmeSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PEVVc2VyTW9kaWZ5Pihjc3MzSW5oZXJpdGVkRGF0YS0+dXNlck1vZGlmeSk7IH0KKyAgICBFVXNl
ckRyYWcgdXNlckRyYWcoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFVXNlckRyYWc+KGNz
czNOb25Jbmhlcml0ZWREYXRhLT51c2VyRHJhZyk7IH0KKyAgICBFVXNlclNlbGVjdCB1c2VyU2Vs
ZWN0KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RVVzZXJTZWxlY3Q+KGNzczNOb25Jbmhl
cml0ZWREYXRhLT51c2VyU2VsZWN0KTsgfQogICAgIGJvb2wgdGV4dE92ZXJmbG93KCkgY29uc3Qg
eyByZXR1cm4gY3NzM05vbkluaGVyaXRlZERhdGEtPnRleHRPdmVyZmxvdzsgfQotICAgIEVNYXJn
aW5Db2xsYXBzZSBtYXJnaW5Ub3BDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIGNzczNOb25Jbmhl
cml0ZWREYXRhLT5tYXJnaW5Ub3BDb2xsYXBzZTsgfQotICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJn
aW5Cb3R0b21Db2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJuIGNzczNOb25Jbmhlcml0ZWREYXRhLT5t
YXJnaW5Cb3R0b21Db2xsYXBzZTsgfQotICAgIEVXb3JkV3JhcCB3b3JkV3JhcCgpIGNvbnN0IHsg
cmV0dXJuIGNzczNJbmhlcml0ZWREYXRhLT53b3JkV3JhcDsgfQotICAgIEVOQlNQTW9kZSBuYnNw
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIGNzczNJbmhlcml0ZWREYXRhLT5uYnNwTW9kZTsgfQotICAg
IEVLSFRNTExpbmVCcmVhayBraHRtbExpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIGNzczNJbmhl
cml0ZWREYXRhLT5raHRtbExpbmVCcmVhazsgfQotICAgIEVNYXRjaE5lYXJlc3RNYWlsQmxvY2tx
dW90ZUNvbG9yIG1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IoKSBjb25zdCB7IHJldHVy
biBjc3MzTm9uSW5oZXJpdGVkRGF0YS0+bWF0Y2hOZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcjsg
fQorICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5Ub3BDb2xsYXBzZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4oY3NzM05vbkluaGVyaXRlZERhdGEtPm1hcmdp
blRvcENvbGxhcHNlKTsgfQorICAgIEVNYXJnaW5Db2xsYXBzZSBtYXJnaW5Cb3R0b21Db2xsYXBz
ZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVNYXJnaW5Db2xsYXBzZT4oY3NzM05vbklu
aGVyaXRlZERhdGEtPm1hcmdpbkJvdHRvbUNvbGxhcHNlKTsgfQorICAgIEVXb3JkV3JhcCB3b3Jk
V3JhcCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEVXb3JkV3JhcD4oY3NzM0luaGVyaXRl
ZERhdGEtPndvcmRXcmFwKTsgfQorICAgIEVOQlNQTW9kZSBuYnNwTW9kZSgpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEVOQlNQTW9kZT4oY3NzM0luaGVyaXRlZERhdGEtPm5ic3BNb2RlKTsg
fQorICAgIEVLSFRNTExpbmVCcmVhayBraHRtbExpbmVCcmVhaygpIGNvbnN0IHsgcmV0dXJuIHN0
YXRpY19jYXN0PEVLSFRNTExpbmVCcmVhaz4oY3NzM0luaGVyaXRlZERhdGEtPmtodG1sTGluZUJy
ZWFrKTsgfQorICAgIEVNYXRjaE5lYXJlc3RNYWlsQmxvY2txdW90ZUNvbG9yIG1hdGNoTmVhcmVz
dE1haWxCbG9ja3F1b3RlQ29sb3IoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFTWF0Y2hO
ZWFyZXN0TWFpbEJsb2NrcXVvdGVDb2xvcj4oY3NzM05vbkluaGVyaXRlZERhdGEtPm1hdGNoTmVh
cmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpOyB9CiAgICAgLy8gRW5kIENTUzMgR2V0dGVycwogCiAg
ICAgLy8gQXBwbGUtc3BlY2lmaWMgcHJvcGVydHkgZ2V0dGVyIG1ldGhvZHMKQEAgLTEzNzUsMjMg
KzEzODAsMjMgQEAgcHVibGljOgogICAgICAgICBzZXRCb3JkZXJUb3BMZWZ0UmFkaXVzKHMpOyBz
ZXRCb3JkZXJUb3BSaWdodFJhZGl1cyhzKTsgc2V0Qm9yZGVyQm90dG9tTGVmdFJhZGl1cyhzKTsg
c2V0Qm9yZGVyQm90dG9tUmlnaHRSYWRpdXMocyk7CiAgICAgfQogCi0gICAgdm9pZCBzZXRCb3Jk
ZXJMZWZ0V2lkdGgodW5zaWduZWQgc2hvcnQgdikgICB7ICBTRVRfVkFSKHN1cnJvdW5kLGJvcmRl
ci5sZWZ0LndpZHRoLHYpIH0KLSAgICB2b2lkIHNldEJvcmRlckxlZnRTdHlsZShFQm9yZGVyU3R5
bGUgdikgICAgIHsgIFNFVF9WQVIoc3Vycm91bmQsYm9yZGVyLmxlZnQuc3R5bGUsdikgfQotICAg
IHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yICYgdikgICB7ICBTRVRfVkFSKHN1
cnJvdW5kLGJvcmRlci5sZWZ0LmNvbG9yLHYpIH0KLSAgICB2b2lkIHNldEJvcmRlclJpZ2h0V2lk
dGgodW5zaWduZWQgc2hvcnQgdikgIHsgIFNFVF9WQVIoc3Vycm91bmQsYm9yZGVyLnJpZ2h0Lndp
ZHRoLHYpIH0KLSAgICB2b2lkIHNldEJvcmRlclJpZ2h0U3R5bGUoRUJvcmRlclN0eWxlIHYpICAg
IHsgIFNFVF9WQVIoc3Vycm91bmQsYm9yZGVyLnJpZ2h0LnN0eWxlLHYpIH0KLSAgICB2b2lkIHNl
dEJvcmRlclJpZ2h0Q29sb3IoY29uc3QgQ29sb3IgJiB2KSAgeyAgU0VUX1ZBUihzdXJyb3VuZCxi
b3JkZXIucmlnaHQuY29sb3IsdikgfQotICAgIHZvaWQgc2V0Qm9yZGVyVG9wV2lkdGgodW5zaWdu
ZWQgc2hvcnQgdikgICAgeyAgU0VUX1ZBUihzdXJyb3VuZCxib3JkZXIudG9wLndpZHRoLHYpIH0K
LSAgICB2b2lkIHNldEJvcmRlclRvcFN0eWxlKEVCb3JkZXJTdHlsZSB2KSAgICAgIHsgIFNFVF9W
QVIoc3Vycm91bmQsYm9yZGVyLnRvcC5zdHlsZSx2KSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJUb3BD
b2xvcihjb25zdCBDb2xvciAmIHYpICAgIHsgIFNFVF9WQVIoc3Vycm91bmQsYm9yZGVyLnRvcC5j
b2xvcix2KSB9ICAgIAotICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tV2lkdGgodW5zaWduZWQgc2hv
cnQgdikgeyAgU0VUX1ZBUihzdXJyb3VuZCxib3JkZXIuYm90dG9tLndpZHRoLHYpIH0KLSAgICB2
b2lkIHNldEJvcmRlckJvdHRvbVN0eWxlKEVCb3JkZXJTdHlsZSB2KSAgIHsgIFNFVF9WQVIoc3Vy
cm91bmQsYm9yZGVyLmJvdHRvbS5zdHlsZSx2KSB9Ci0gICAgdm9pZCBzZXRCb3JkZXJCb3R0b21D
b2xvcihjb25zdCBDb2xvciAmIHYpIHsgIFNFVF9WQVIoc3Vycm91bmQsYm9yZGVyLmJvdHRvbS5j
b2xvcix2KSB9Ci0gICAgdm9pZCBzZXRPdXRsaW5lV2lkdGgodW5zaWduZWQgc2hvcnQgdikgeyAg
U0VUX1ZBUihiYWNrZ3JvdW5kLG1fb3V0bGluZS53aWR0aCx2KSB9CisgICAgdm9pZCBzZXRCb3Jk
ZXJMZWZ0V2lkdGgodW5zaWduZWQgc2hvcnQgdikgICB7ICBTRVRfVkFSKHN1cnJvdW5kLCBib3Jk
ZXIubGVmdC53aWR0aCwgdikgfQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdFN0eWxlKEVCb3JkZXJT
dHlsZSB2KSAgICAgeyAgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLmxlZnQubV9zdHlsZSwgdikg
fQorICAgIHZvaWQgc2V0Qm9yZGVyTGVmdENvbG9yKGNvbnN0IENvbG9yICYgdikgICB7ICBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIubGVmdC5jb2xvciwgdikgfQorICAgIHZvaWQgc2V0Qm9yZGVy
UmlnaHRXaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSAgeyAgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
LnJpZ2h0LndpZHRoLCB2KSB9CisgICAgdm9pZCBzZXRCb3JkZXJSaWdodFN0eWxlKEVCb3JkZXJT
dHlsZSB2KSAgICB7ICBTRVRfVkFSKHN1cnJvdW5kLCBib3JkZXIucmlnaHQubV9zdHlsZSwgdikg
fQorICAgIHZvaWQgc2V0Qm9yZGVyUmlnaHRDb2xvcihjb25zdCBDb2xvciAmIHYpICB7ICBTRVRf
VkFSKHN1cnJvdW5kLCBib3JkZXIucmlnaHQuY29sb3IsIHYpIH0KKyAgICB2b2lkIHNldEJvcmRl
clRvcFdpZHRoKHVuc2lnbmVkIHNob3J0IHYpICAgIHsgIFNFVF9WQVIoc3Vycm91bmQsIGJvcmRl
ci50b3Aud2lkdGgsIHYpIH0KKyAgICB2b2lkIHNldEJvcmRlclRvcFN0eWxlKEVCb3JkZXJTdHls
ZSB2KSAgICAgIHsgIFNFVF9WQVIoc3Vycm91bmQsIGJvcmRlci50b3AubV9zdHlsZSwgdikgfQor
ICAgIHZvaWQgc2V0Qm9yZGVyVG9wQ29sb3IoY29uc3QgQ29sb3IgJiB2KSAgICB7ICBTRVRfVkFS
KHN1cnJvdW5kLCBib3JkZXIudG9wLmNvbG9yLCB2KSB9ICAgIAorICAgIHZvaWQgc2V0Qm9yZGVy
Qm90dG9tV2lkdGgodW5zaWduZWQgc2hvcnQgdikgeyAgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVy
LmJvdHRvbS53aWR0aCwgdikgfQorICAgIHZvaWQgc2V0Qm9yZGVyQm90dG9tU3R5bGUoRUJvcmRl
clN0eWxlIHYpICAgeyAgU0VUX1ZBUihzdXJyb3VuZCwgYm9yZGVyLmJvdHRvbS5tX3N0eWxlLCB2
KSB9CisgICAgdm9pZCBzZXRCb3JkZXJCb3R0b21Db2xvcihjb25zdCBDb2xvciAmIHYpIHsgIFNF
VF9WQVIoc3Vycm91bmQsIGJvcmRlci5ib3R0b20uY29sb3IsIHYpIH0KKyAgICB2b2lkIHNldE91
dGxpbmVXaWR0aCh1bnNpZ25lZCBzaG9ydCB2KSB7ICBTRVRfVkFSKGJhY2tncm91bmQsIG1fb3V0
bGluZS53aWR0aCwgdikgfQogICAgIHZvaWQgc2V0T3V0bGluZVN0eWxlKEVCb3JkZXJTdHlsZSB2
LCBib29sIGlzQXV0byA9IGZhbHNlKSAgIAogICAgIHsgIAotICAgICAgICBTRVRfVkFSKGJhY2tn
cm91bmQsbV9vdXRsaW5lLnN0eWxlLHYpCi0gICAgICAgIFNFVF9WQVIoYmFja2dyb3VuZCxtX291
dGxpbmUuX2F1dG8sIGlzQXV0bykKKyAgICAgICAgU0VUX1ZBUihiYWNrZ3JvdW5kLCBtX291dGxp
bmUubV9zdHlsZSwgdikKKyAgICAgICAgU0VUX1ZBUihiYWNrZ3JvdW5kLCBtX291dGxpbmUuX2F1
dG8sIGlzQXV0bykKICAgICB9CiAgICAgdm9pZCBzZXRPdXRsaW5lQ29sb3IoY29uc3QgQ29sb3Ig
JiB2KSB7ICBTRVRfVkFSKGJhY2tncm91bmQsbV9vdXRsaW5lLmNvbG9yLHYpIH0KIApAQCAtMTU2
Myw3ICsxNTY4LDcgQEAgcHVibGljOgogICAgIH0KICAgICAKICAgICAvLyBUbyBvYnRhaW4gYXQg
YW55IHRpbWUgdGhlIHBzZXVkbyBzdGF0ZSBmb3IgYSBnaXZlbiBsaW5rLgotICAgIFBzZXVkb1N0
YXRlIHBzZXVkb1N0YXRlKCkgY29uc3QgeyByZXR1cm4gbV9wc2V1ZG9TdGF0ZTsgfQorICAgIFBz
ZXVkb1N0YXRlIHBzZXVkb1N0YXRlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UHNldWRv
U3RhdGU+KG1fcHNldWRvU3RhdGUpOyB9CiAgICAgdm9pZCBzZXRQc2V1ZG9TdGF0ZShQc2V1ZG9T
dGF0ZSBzKSB7IG1fcHNldWRvU3RhdGUgPSBzOyB9CiAgICAgCiAgICAgLy8gVG8gdGVsbCBpZiB0
aGlzIHN0eWxlIG1hdGNoZWQgYXR0cmlidXRlIHNlbGVjdG9ycy4gVGhpcyBtYWtlcyBpdCBpbXBv
c3NpYmxlIHRvIHNoYXJlLgpJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9jYW52YXNpbWFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIHJlbmRlcmluZy9yZW5kZXJfY2FudmFzaW1hZ2UuaAkocmV2aXNpb24gMTMx
MzQpCisrKyByZW5kZXJpbmcvcmVuZGVyX2NhbnZhc2ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkICpfZHJhd2luZ0NvbnRleHREYXRhOwog
ICAgIENHSW1hZ2VSZWYgX2RyYXduSW1hZ2U7CiAgICAgCi0gICAgdW5zaWduZWQgX25lZWRzSW1h
Z2VVcGRhdGUgOiAxOworICAgIGJvb2wgX25lZWRzSW1hZ2VVcGRhdGUgOiAxOwogfTsKIAogfSAv
L25hbWVzcGFjZQpJbmRleDogcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gcmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5jcHAJKHJldmlzaW9uIDEzMTM0KQorKysgcmVuZGVy
aW5nL3JlbmRlcl9zdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY1MCw3ICs2NTAsNyBAQCBS
ZW5kZXJTdHlsZSogUmVuZGVyU3R5bGU6OmdldFBzZXVkb1N0eWxlCiAgICAgaWYgKG5vbmluaGVy
aXRlZF9mbGFncy5fc3R5bGVUeXBlPT1OT1BTRVVETykgewogCXBzID0gcHNldWRvU3R5bGU7CiAg
ICAgICAgIHdoaWxlIChwcykgewotICAgICAgICAgICAgaWYgKHBzLT5ub25pbmhlcml0ZWRfZmxh
Z3MuX3N0eWxlVHlwZT09cGlkKQorICAgICAgICAgICAgaWYgKHN0eWxlVHlwZSgpID09IHBpZCkK
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgCiAgICAgICAgICAgICBwcyA9IHBzLT5w
c2V1ZG9TdHlsZTsKSW5kZXg6IHJlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSByZW5kZXJpbmcvcmVuZGVyX29iamVjdC5jcHAJKHJldmlzaW9uIDEzMTM0KQorKysgcmVu
ZGVyaW5nL3JlbmRlcl9vYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI3LDggKzEwMjcs
OCBAQCBib29sIFJlbmRlck9iamVjdDo6cGFpbnRCb3JkZXJJbWFnZShHcmFwCiAgICAgaW50IGxl
ZnRTbGljZSA9IGtNaW4oaW1hZ2VXaWR0aCwgc3R5bGUtPmJvcmRlckltYWdlKCkubV9zbGljZXMu
bGVmdC5jYWxjVmFsdWUoYm9yZGVySW1hZ2UtPmltYWdlKCktPndpZHRoKCkpKTsgICAgCiAgICAg
aW50IHJpZ2h0U2xpY2UgPSBrTWluKGltYWdlV2lkdGgsIHN0eWxlLT5ib3JkZXJJbWFnZSgpLm1f
c2xpY2VzLnJpZ2h0LmNhbGNWYWx1ZShib3JkZXJJbWFnZS0+aW1hZ2UoKS0+d2lkdGgoKSkpOwog
Ci0gICAgRUJvcmRlckltYWdlUnVsZSBoUnVsZSA9IHN0eWxlLT5ib3JkZXJJbWFnZSgpLm1faG9y
aXpvbnRhbFJ1bGU7Ci0gICAgRUJvcmRlckltYWdlUnVsZSB2UnVsZSA9IHN0eWxlLT5ib3JkZXJJ
bWFnZSgpLm1fdmVydGljYWxSdWxlOworICAgIEVCb3JkZXJJbWFnZVJ1bGUgaFJ1bGUgPSBzdHls
ZS0+Ym9yZGVySW1hZ2UoKS5ob3Jpem9udGFsUnVsZSgpOworICAgIEVCb3JkZXJJbWFnZVJ1bGUg
dlJ1bGUgPSBzdHlsZS0+Ym9yZGVySW1hZ2UoKS52ZXJ0aWNhbFJ1bGUoKTsKICAgICAKICAgICBi
b29sIGRyYXdMZWZ0ID0gbGVmdFNsaWNlID4gMCAmJiBzdHlsZS0+Ym9yZGVyTGVmdFdpZHRoKCkg
PiAwOwogICAgIGJvb2wgZHJhd1RvcCA9IHRvcFNsaWNlID4gMCAmJiBzdHlsZS0+Ym9yZGVyVG9w
V2lkdGgoKSA+IDA7CkluZGV4OiByZW5kZXJpbmcvYmlkaS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHJlbmRl
cmluZy9iaWRpLmgJKHJldmlzaW9uIDEzMTM0KQorKysgcmVuZGVyaW5nL2JpZGkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsMTQgKzQ4LDE2IEBAIG5hbWVzcGFjZSBraHRtbCB7CiAJdm9pZCByZWYo
KSBjb25zdDsKIAl2b2lkIGRlcmVmKCkgY29uc3Q7CiAKKyAgICAgICAgUUNoYXI6OkRpcmVjdGlv
biBkaXIoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxRQ2hhcjo6RGlyZWN0aW9uPihtX2Rp
cik7IH0KKyAgICAgICAgUUNoYXI6OkRpcmVjdGlvbiBiYXNpY0RpcigpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PFFDaGFyOjpEaXJlY3Rpb24+KG1fYmFzaWNEaXIpOyB9CisKIAl1bnNpZ25l
ZCBjaGFyIGxldmVsOwogCWJvb2wgb3ZlcnJpZGUgOiAxOwotCVFDaGFyOjpEaXJlY3Rpb24gZGly
IDogNTsKLQlRQ2hhcjo6RGlyZWN0aW9uIGJhc2ljRGlyIDogNTsKKwl1bnNpZ25lZCBtX2RpciA6
IDU7IC8vIFFDaGFyOjpEaXJlY3Rpb24KKwl1bnNpZ25lZCBtX2Jhc2ljRGlyIDogNTsgLy8gUUNo
YXI6OkRpcmVjdGlvbgogCQogCUJpZGlDb250ZXh0ICpwYXJlbnQ7CiAKLQogCS8vIHJlZmNvdW50
aW5nLi4uLgogCW11dGFibGUgaW50IGNvdW50OwogICAgIH07CkBAIC02NCw3ICs2Niw4IEBAIG5h
bWVzcGFjZSBraHRtbCB7CiAJQmlkaVJ1bihpbnQgX3N0YXJ0LCBpbnQgX3N0b3AsIFJlbmRlck9i
amVjdCAqX29iaiwgQmlkaUNvbnRleHQgKmNvbnRleHQsIFFDaGFyOjpEaXJlY3Rpb24gZGlyKQog
CSAgICA6ICBzdGFydCggX3N0YXJ0ICksIHN0b3AoIF9zdG9wICksIG9iaiggX29iaiApLCBib3go
MCksIG92ZXJyaWRlKGNvbnRleHQtPm92ZXJyaWRlKSwgbmV4dFJ1bigwKQogCXsKLQkgICAgaWYo
ZGlyID09IFFDaGFyOjpEaXJPTikgZGlyID0gY29udGV4dC0+ZGlyOworCSAgICBpZiAoZGlyID09
IFFDaGFyOjpEaXJPTikgCisgICAgICAgICAgICAgICAgZGlyID0gY29udGV4dC0+ZGlyKCk7CiAK
IAkgICAgbGV2ZWwgPSBjb250ZXh0LT5sZXZlbDsKIApAQCAtMTAyLDcgKzEwNSw2IEBAIHB1Ymxp
YzoKIAkvLyBleHBsaWNpdCArIGltcGxpY2l0IGxldmVscyBoZXJlCiAJdW5zaWduZWQgY2hhciBs
ZXZlbDsKICAgICAgICAgYm9vbCBvdmVycmlkZSA6IDE7Ci0KICAgICAgICAgYm9vbCBjb21wYWN0
IDogMTsKICAgICAgICAgCiAgICAgICAgIEJpZGlSdW4qIG5leHRSdW47CkluZGV4OiByZW5kZXJp
bmcvcmVuZGVyX3JlcGxhY2VkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSByZW5kZXJpbmcvcmVuZGVyX3Jl
cGxhY2VkLmNwcAkocmV2aXNpb24gMTMxMzQpCisrKyByZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2Vk
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgUmVuZGVyV2lkZ2V0
Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbigKIAogdm9pZCBSZW5kZXJXaWRnZXQ6OnNldFNlbGVjdGlv
blN0YXRlKFNlbGVjdGlvblN0YXRlIHMpIAogewotICAgIGlmIChtX3NlbGVjdGlvblN0YXRlICE9
IHMpIHsKKyAgICBpZiAoc2VsZWN0aW9uU3RhdGUoKSAhPSBzKSB7CiAgICAgICAgIFJlbmRlclJl
cGxhY2VkOjpzZXRTZWxlY3Rpb25TdGF0ZShzKTsKICAgICAgICAgbV9zZWxlY3Rpb25TdGF0ZSA9
IHM7CiAgICAgICAgIGlmIChtX3dpZGdldCkKSW5kZXg6IHJlbmRlcmluZy9SZW5kZXJCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkocmV2aXNpb24gMTMx
MzQpCisrKyByZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDA0
LDE0ICsxNDA0LDE0IEBAIHZvaWQgUmVuZGVyQmxvY2s6OnBhaW50RWxsaXBzaXNCb3hlcyhQYWkK
IAogdm9pZCBSZW5kZXJCbG9jazo6c2V0U2VsZWN0aW9uU3RhdGUoU2VsZWN0aW9uU3RhdGUgcykK
IHsKLSAgICBpZiAobV9zZWxlY3Rpb25TdGF0ZSA9PSBzKQorICAgIGlmIChzZWxlY3Rpb25TdGF0
ZSgpID09IHMpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBpZiAocyA9PSBTZWxlY3Rpb25J
bnNpZGUgJiYgbV9zZWxlY3Rpb25TdGF0ZSAhPSBTZWxlY3Rpb25Ob25lKQorICAgIGlmIChzID09
IFNlbGVjdGlvbkluc2lkZSAmJiBzZWxlY3Rpb25TdGF0ZSgpICE9IFNlbGVjdGlvbk5vbmUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICgocyA9PSBTZWxlY3Rpb25TdGFydCAmJiBtX3NlbGVj
dGlvblN0YXRlID09IFNlbGVjdGlvbkVuZCkgfHwKLSAgICAgICAgKHMgPT0gU2VsZWN0aW9uRW5k
ICYmIG1fc2VsZWN0aW9uU3RhdGUgPT0gU2VsZWN0aW9uU3RhcnQpKQorICAgIGlmICgocyA9PSBT
ZWxlY3Rpb25TdGFydCAmJiBzZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvbkVuZCkgfHwKKyAg
ICAgICAgKHMgPT0gU2VsZWN0aW9uRW5kICYmIHNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9u
U3RhcnQpKQogICAgICAgICBtX3NlbGVjdGlvblN0YXRlID0gU2VsZWN0aW9uQm90aDsKICAgICBl
bHNlCiAgICAgICAgIG1fc2VsZWN0aW9uU3RhdGUgPSBzOwpAQCAtMTk2NCw3ICsxOTY0LDcgQEAg
UmVuZGVyQmxvY2s6OmxlZnRSZWxPZmZzZXQoaW50IHksIGludCBmaQogICAgICAgICB7CiAgICAg
ICAgICAgICAvL2tkRGVidWcoIDYwNDAgKSA8PCh2b2lkICopdGhpcyA8PCAiIGxlZnQ6IHN5LCBl
eSwgeCwgdyAiIDw8IHItPnN0YXJ0WSA8PCAiLCIgPDwgci0+ZW5kWSA8PCAiLCIgPDwgci0+bGVm
dCA8PCAiLCIgPDwgci0+d2lkdGggPDwgIiAiIDw8IGVuZGw7CiAgICAgICAgICAgICBpZiAoci0+
c3RhcnRZIDw9IHkgJiYgci0+ZW5kWSA+IHkgJiYKLSAgICAgICAgICAgICAgICByLT50eXBlID09
IEZsb2F0aW5nT2JqZWN0OjpGbG9hdExlZnQgJiYKKyAgICAgICAgICAgICAgICByLT50eXBlKCkg
PT0gRmxvYXRpbmdPYmplY3Q6OkZsb2F0TGVmdCAmJgogICAgICAgICAgICAgICAgIHItPmxlZnQg
KyByLT53aWR0aCA+IGxlZnQpIHsKICAgICAgICAgICAgICAgICBsZWZ0ID0gci0+bGVmdCArIHIt
PndpZHRoOwogICAgICAgICAgICAgICAgIGlmICggaGVpZ2h0UmVtYWluaW5nICkgKmhlaWdodFJl
bWFpbmluZyA9IHItPmVuZFkgLSB5OwpAQCAtMjAwNiw3ICsyMDA2LDcgQEAgUmVuZGVyQmxvY2s6
OnJpZ2h0UmVsT2Zmc2V0KGludCB5LCBpbnQgZgogICAgICAgICB7CiAgICAgICAgICAgICAvL2tk
RGVidWcoIDYwNDAgKSA8PCAicmlnaHQ6IHN5LCBleSwgeCwgdyAiIDw8IHItPnN0YXJ0WSA8PCAi
LCIgPDwgci0+ZW5kWSA8PCAiLCIgPDwgci0+bGVmdCA8PCAiLCIgPDwgci0+d2lkdGggPDwgIiAi
IDw8IGVuZGw7CiAgICAgICAgICAgICBpZiAoci0+c3RhcnRZIDw9IHkgJiYgci0+ZW5kWSA+IHkg
JiYKLSAgICAgICAgICAgICAgICByLT50eXBlID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0
ICYmCisgICAgICAgICAgICAgICAgci0+dHlwZSgpID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJp
Z2h0ICYmCiAgICAgICAgICAgICAgICAgci0+bGVmdCA8IHJpZ2h0KSB7CiAgICAgICAgICAgICAg
ICAgcmlnaHQgPSByLT5sZWZ0OwogICAgICAgICAgICAgICAgIGlmICggaGVpZ2h0UmVtYWluaW5n
ICkgKmhlaWdodFJlbWFpbmluZyA9IHItPmVuZFkgLSB5OwpAQCAtMjIxMCw3ICsyMjEwLDcgQEAg
UmVuZGVyQmxvY2s6OmxlZnRCb3R0b20oKQogICAgIEZsb2F0aW5nT2JqZWN0KiByOwogICAgIFFQ
dHJMaXN0SXRlcmF0b3I8RmxvYXRpbmdPYmplY3Q+IGl0KCptX2Zsb2F0aW5nT2JqZWN0cyk7CiAg
ICAgZm9yICggOyAociA9IGl0LmN1cnJlbnQoKSk7ICsraXQgKQotICAgICAgICBpZiAoci0+ZW5k
WT5ib3R0b20gJiYgci0+dHlwZSA9PSBGbG9hdGluZ09iamVjdDo6RmxvYXRMZWZ0KQorICAgICAg
ICBpZiAoci0+ZW5kWSA+IGJvdHRvbSAmJiByLT50eXBlKCkgPT0gRmxvYXRpbmdPYmplY3Q6OkZs
b2F0TGVmdCkKICAgICAgICAgICAgIGJvdHRvbT1yLT5lbmRZOwogCiAgICAgcmV0dXJuIGJvdHRv
bTsKQEAgLTIyMjQsNyArMjIyNCw3IEBAIFJlbmRlckJsb2NrOjpyaWdodEJvdHRvbSgpCiAgICAg
RmxvYXRpbmdPYmplY3QqIHI7CiAgICAgUVB0ckxpc3RJdGVyYXRvcjxGbG9hdGluZ09iamVjdD4g
aXQoKm1fZmxvYXRpbmdPYmplY3RzKTsKICAgICBmb3IgKCA7IChyID0gaXQuY3VycmVudCgpKTsg
KytpdCApCi0gICAgICAgIGlmIChyLT5lbmRZPmJvdHRvbSAmJiByLT50eXBlID09IEZsb2F0aW5n
T2JqZWN0OjpGbG9hdFJpZ2h0KQorICAgICAgICBpZiAoci0+ZW5kWT5ib3R0b20gJiYgci0+dHlw
ZSgpID09IEZsb2F0aW5nT2JqZWN0OjpGbG9hdFJpZ2h0KQogICAgICAgICAgICAgYm90dG9tPXIt
PmVuZFk7CiAKICAgICByZXR1cm4gYm90dG9tOwpAQCAtMjI5Niw3ICsyMjk2LDcgQEAgdm9pZCBS
ZW5kZXJCbG9jazo6YWRkT3ZlcmhhbmdpbmdGbG9hdHMoUgogCiAgICAgICAgICAgICAvLyBJZiB0
aGUgb2JqZWN0IGlzIG5vdCBpbiB0aGUgbGlzdCwgd2UgYWRkIGl0IG5vdy4KICAgICAgICAgICAg
IGlmICghZikgewotICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0ICpmbG9hdGluZ09iaiA9
IG5ldyBGbG9hdGluZ09iamVjdChyLT50eXBlKTsKKyAgICAgICAgICAgICAgICBGbG9hdGluZ09i
amVjdCAqZmxvYXRpbmdPYmogPSBuZXcgRmxvYXRpbmdPYmplY3Qoci0+dHlwZSgpKTsKICAgICAg
ICAgICAgICAgICBmbG9hdGluZ09iai0+c3RhcnRZID0gci0+c3RhcnRZIC0geW9mZjsKICAgICAg
ICAgICAgICAgICBmbG9hdGluZ09iai0+ZW5kWSA9IHItPmVuZFkgLSB5b2ZmOwogICAgICAgICAg
ICAgICAgIGZsb2F0aW5nT2JqLT5sZWZ0ID0gci0+bGVmdCAtIHhvZmY7CkBAIC0yMzQzLDcgKzIz
NDMsNyBAQCB2b2lkIFJlbmRlckJsb2NrOjphZGRJbnRydWRpbmdGbG9hdHMoUmVuCiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFmKSB7Ci0gICAgICAg
ICAgICAgICAgRmxvYXRpbmdPYmplY3QgKmZsb2F0aW5nT2JqID0gbmV3IEZsb2F0aW5nT2JqZWN0
KHItPnR5cGUpOworICAgICAgICAgICAgICAgIEZsb2F0aW5nT2JqZWN0ICpmbG9hdGluZ09iaiA9
IG5ldyBGbG9hdGluZ09iamVjdChyLT50eXBlKCkpOwogICAgICAgICAgICAgICAgIGZsb2F0aW5n
T2JqLT5zdGFydFkgPSByLT5zdGFydFkgLSB5b2ZmOwogICAgICAgICAgICAgICAgIGZsb2F0aW5n
T2JqLT5lbmRZID0gci0+ZW5kWSAtIHlvZmY7CiAgICAgICAgICAgICAgICAgZmxvYXRpbmdPYmot
PmxlZnQgPSByLT5sZWZ0IC0geG9mZjsKSW5kZXg6IGtjYW52YXMvS0NhbnZhc1BhdGguY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtjYW52YXMvS0NhbnZhc1BhdGguY3BwCShyZXZpc2lvbiAxMzEzNCkKKysr
IGtjYW52YXMvS0NhbnZhc1BhdGguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBA
IFFUZXh0U3RyZWFtICZvcGVyYXRvcjw8KFFUZXh0U3RyZWFtICZ0cywKIC8vS0NDbGlwRGF0YQog
UVRleHRTdHJlYW0gJm9wZXJhdG9yPDwoUVRleHRTdHJlYW0gJnRzLCBjb25zdCBLQ0NsaXBEYXRh
ICZkKQogewotICAgIHRzIDw8ICJbd2luZGluZz0iIDw8IGQud2luZFJ1bGUgIDw8ICJdIjsKKyAg
ICB0cyA8PCAiW3dpbmRpbmc9IiA8PCBkLndpbmRSdWxlKCkgPDwgIl0iOwogICAgIGlmIChkLmJi
b3hVbml0cykKICAgICAgICAgdHMgPDwgIiBbYm91bmRpbmcgYm94IG1vZGU9IiA8PCBkLmJib3hV
bml0cyAgPDwgIl0iOyAgICAKICAgICB0cyA8PCAiIFtwYXRoPSIgPDwgcmVuZGVyaW5nRGV2aWNl
KCktPnN0cmluZ0ZvclBhdGgoZC5wYXRoLmdldCgpKSA8PCAiXSI7CkluZGV4OiBrY2FudmFzL0tD
YW52YXNQYXRoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9LQ2FudmFzUGF0aC5oCShyZXZpc2lv
biAxMzEzNCkKKysrIGtjYW52YXMvS0NhbnZhc1BhdGguaAkod29ya2luZyBjb3B5KQpAQCAtNzMs
NyArNzMsOCBAQCBwdWJsaWM6CiAvLyBDbGlwcGluZyBwYXRocwogc3RydWN0IEtDQ2xpcERhdGEK
IHsKLSAgICBLQ1dpbmRSdWxlIHdpbmRSdWxlIDogMTsKKyAgICBLQ1dpbmRSdWxlIHdpbmRSdWxl
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8S0NXaW5kUnVsZT4obV93aW5kUnVsZSk7IH0K
KyAgICB1bnNpZ25lZCBtX3dpbmRSdWxlIDogMTsgLy8gS0NXaW5kUnVsZQogICAgIGJvb2wgYmJv
eFVuaXRzIDogMTsKICAgICBSZWZQdHI8S0NhbnZhc1BhdGg+IHBhdGg7CiB9OwpAQCAtODcsNyAr
ODgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlQocGF0aERhdGEpOwogICAgICAg
ICBLQ0NsaXBEYXRhIGNsaXBEYXRhOwotICAgICAgICBjbGlwRGF0YS53aW5kUnVsZSA9IHdpbmRS
dWxlOworICAgICAgICBjbGlwRGF0YS5tX3dpbmRSdWxlID0gd2luZFJ1bGU7CiAgICAgICAgIGNs
aXBEYXRhLmJib3hVbml0cyA9IGJib3hVbml0czsKICAgICAgICAgY2xpcERhdGEucGF0aCA9IHBh
dGhEYXRhOwogICAgICAgICBhcHBlbmQoY2xpcERhdGEpOwpJbmRleDoga2NhbnZhcy9kZXZpY2Uv
cXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHoubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2NhbnZhcy9k
ZXZpY2UvcXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHoubW0JKHJldmlzaW9uIDEzMTM0KQor
Kysga2NhbnZhcy9kZXZpY2UvcXVhcnR6L0tDYW52YXNSZXNvdXJjZXNRdWFydHoubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIzNCw3ICsyMzQsNyBAQCB2b2lkIEtDYW52YXNDbGlwcGVyUXVhcnR6Ojph
cHBseUNsaXAoY29uCiAgICAgICAgIHJldHVybjsKIAogICAgIEJPT0wgaGV0ZXJvZ2Vub3VzQ2xp
cFJ1bGVzID0gTk87Ci0gICAgS0NXaW5kUnVsZSBjbGlwUnVsZSA9IG1fY2xpcERhdGFbMF0ud2lu
ZFJ1bGU7CisgICAgS0NXaW5kUnVsZSBjbGlwUnVsZSA9IG1fY2xpcERhdGFbMF0ud2luZFJ1bGUo
KTsKIAogICAgIGNvbnRleHQtPmNsZWFyUGF0aCgpOwogCkBAIC0yNDIsNyArMjQyLDcgQEAgdm9p
ZCBLQ2FudmFzQ2xpcHBlclF1YXJ0ejo6YXBwbHlDbGlwKGNvbgogCiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgeCA9IDA7IHggPCBtX2NsaXBEYXRhLmNvdW50KCk7IHgrKykgewogICAgICAgICBLQ0Ns
aXBEYXRhIGRhdGEgPSBtX2NsaXBEYXRhW3hdOwotICAgICAgICBpZiAoZGF0YS53aW5kUnVsZSAh
PSBjbGlwUnVsZSkKKyAgICAgICAgaWYgKGRhdGEud2luZFJ1bGUoKSAhPSBjbGlwUnVsZSkKICAg
ICAgICAgICAgIGhldGVyb2dlbm91c0NsaXBSdWxlcyA9IFlFUzsKICAgICAgICAgCiAgICAgICAg
IEtDYW52YXNQYXRoUXVhcnR6ICpwYXRoID0gc3RhdGljX2Nhc3Q8S0NhbnZhc1BhdGhRdWFydHoq
PihkYXRhLnBhdGguZ2V0KCkpOyAgICAgICAgCkluZGV4OiBDaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzE0OCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE4NSBAQAorMjAwNi0wMy0wNSAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIC0gdXNlIHVuc2lnbmVkIGJpdGZpZWxkcyB3aGVuIHN0b3JpbmcgZW51bXMgaW4gdGhlbSwg
dG8gYXZvaWQgbWFuZ2xpbmcgb24gd2luMzIgKHdhcyBjYXVzaW5nIGFsbCBsYXlvdXQgdG8gYmUg
UlRMKQorICAgICAgICBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dp
P2lkPTc2MTgKKworICAgICAgICAqIGNzcy9jc3NfYmFzZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTZWxlY3Rvcjo6b3BlcmF0b3IgPT0gKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVj
dG9yOjpzZWxlY3RvclRleHQpOgorICAgICAgICAqIGNzcy9jc3NfYmFzZS5oOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU2VsZWN0b3I6OkNTU1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1NlbGVjdG9yOjpwc2V1ZG9UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpy
ZWxhdGlvbik6CisgICAgICAgICogY3NzL2Nzc19ncmFtbWFyLnk6CisgICAgICAgICogY3NzL2Nz
c3N0eWxlc2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6
Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVj
a09uZVNlbGVjdG9yKToKKyAgICAgICAgKiBrY2FudmFzL0tDYW52YXNQYXRoLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAqIGtjYW52YXMvS0NhbnZhc1BhdGgu
aDoKKyAgICAgICAgKFdlYkNvcmU6OktDQ2xpcERhdGE6OndpbmRSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6OktDQ2xpcERhdGFMaXN0OjphZGRQYXRoKToKKyAgICAgICAgKiBrY2FudmFzL2Rldmlj
ZS9xdWFydHovS0NhbnZhc1Jlc291cmNlc1F1YXJ0ei5tbToKKyAgICAgICAgKFdlYkNvcmU6OktD
YW52YXNDbGlwcGVyUXVhcnR6OjphcHBseUNsaXApOgorICAgICAgICAqIGtodG1sL2VjbWEva2pz
X2h0bWwuaDoKKyAgICAgICAgKiBraHRtbC9odG1sL0hUTUxCdXR0b25FbGVtZW50SW1wbC5oOgor
ICAgICAgICAqIGtodG1sL2h0bWwvSFRNTElucHV0RWxlbWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudEltcGw6OnNldElucHV0VHlwZSk6CisgICAgICAgICog
a2h0bWwvaHRtbC9IVE1MSW5wdXRFbGVtZW50SW1wbC5oOgorICAgICAgICAoRE9NOjpIVE1MSW5w
dXRFbGVtZW50SW1wbDo6aW5wdXRUeXBlKToKKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfdGFi
bGVpbXBsLmg6CisgICAgICAgICoga2h0bWwveGJsL3hibF9wcm90b2hhbmRsZXIuY3BwOgorICAg
ICAgICAoWEJMOjptX2J1dHRvbik6CisgICAgICAgICoga2h0bWwveGJsL3hibF9wcm90b2hhbmRs
ZXIuaDoKKyAgICAgICAgKiBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlclN0eWxlOjpJbmhlcml0ZWRGbGFnczo6KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlclN0eWxlOjpOb25Jbmhlcml0ZWRGbGFnczo6KToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1JlbmRlclN0eWxlOjpzZXRCaXREZWZhdWx0cyk6CisgICAgICAgICoga3N2ZzIvc3Zn
L1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50SW1wbC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9T
VkdBbmltYXRpb25FbGVtZW50SW1wbC5jcHA6CisgICAgICAgIChTVkdBbmltYXRpb25FbGVtZW50
SW1wbDo6dGFyZ2V0QXR0cmlidXRlKToKKyAgICAgICAgKFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBs
OjpzZXRUYXJnZXRBdHRyaWJ1dGUpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdBbmltYXRpb25F
bGVtZW50SW1wbC5oOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdMZW5ndGhJbXBsLmNwcDoKKyAg
ICAgICAgKFNWR0xlbmd0aEltcGw6OnZhbHVlKToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHTGVu
Z3RoSW1wbC5oOgorICAgICAgICAqIGt3cS9LV1FLSFRNTFNldHRpbmdzLmg6CisgICAgICAgICog
bG9hZGVyL0NhY2hlZEltYWdlLmg6CisgICAgICAgICogbG9hZGVyL0RvY0xvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2NMb2FkZXI6OnNldENhY2hlUG9saWN5KToKKyAgICAgICAgKFdl
YkNvcmU6OkRvY0xvYWRlcjo6c2V0U2hvd0FuaW1hdGlvbnMpOgorICAgICAgICAqIGxvYWRlci9E
b2NMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY0xvYWRlcjo6c2hvd0FuaW1hdGlvbnMp
OgorICAgICAgICAqIHBsYXRmb3JtL0ZvbnREZXNjcmlwdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udERlc2NyaXB0aW9uOjpnZW5lcmljRmFtaWx5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9R
U3RyaW5nLmNwcDoKKyAgICAgICAgKEhhbmRsZU5vZGU6Oik6CisgICAgICAgICogcGxhdGZvcm0v
UVN0cmluZy5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCbG9jazo6c2V0U2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyQmxvY2s6OmxlZnRSZWxPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyQmxvY2s6OnJpZ2h0UmVsT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2Nr
OjpsZWZ0Qm90dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpyaWdodEJvdHRv
bSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6YWRkT3ZlcmhhbmdpbmdGbG9hdHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6OmFkZEludHJ1ZGluZ0Zsb2F0cyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2s6
OkZsb2F0aW5nT2JqZWN0OjpGbG9hdGluZ09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCbG9jazo6RmxvYXRpbmdPYmplY3Q6OnR5cGUpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJUYWJsZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGU6OmdldFJ1bGVzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvYmlkaS5jcHA6CisgICAgICAgIChraHRtbDo6QmlkaUNvbnRleHQ6
OkJpZGlDb250ZXh0KToKKyAgICAgICAgKGtodG1sOjpvcGVyYXRvcj09KToKKyAgICAgICAgKGto
dG1sOjplbWJlZCk6CisgICAgICAgIChraHRtbDo6UmVuZGVyQmxvY2s6OmNvbXB1dGVIb3Jpem9u
dGFsUG9zaXRpb25zRm9yTGluZSk6CisgICAgICAgIChraHRtbDo6UmVuZGVyQmxvY2s6OmJpZGlS
ZW9yZGVyTGluZSk6CisgICAgICAgIChraHRtbDo6UmVuZGVyQmxvY2s6OmxheW91dElubGluZUNo
aWxkcmVuKToKKyAgICAgICAgKiByZW5kZXJpbmcvYmlkaS5oOgorICAgICAgICAoa2h0bWw6OkJp
ZGlDb250ZXh0OjpkaXIpOgorICAgICAgICAoa2h0bWw6OkJpZGlDb250ZXh0OjpiYXNpY0Rpcik6
CisgICAgICAgIChraHRtbDo6QmlkaVJ1bjo6QmlkaVJ1bik6CisgICAgICAgICogcmVuZGVyaW5n
L3JlbmRlcl9jYW52YXNpbWFnZS5oOgorICAgICAgICAqIHJlbmRlcmluZy9yZW5kZXJfbGF5ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcnF1ZWU6OndoaXRlU3BhY2UpOgorICAgICAgICAqIHJl
bmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVj
dDo6cGFpbnRCb3JkZXJJbWFnZSk6CisgICAgICAgICogcmVuZGVyaW5nL3JlbmRlcl9yZXBsYWNl
ZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnNldFNlbGVjdGlvblN0YXRl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2VkLmg6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJSZXBsYWNlZDo6c2VsZWN0aW9uU3RhdGUpOgorICAgICAgICAqIHJlbmRlcmlu
Zy9yZW5kZXJfc3R5bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OmdldFBz
ZXVkb1N0eWxlKToKKyAgICAgICAgKiByZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmg6CisgICAgICAg
IChraHRtbDo6Qm9yZGVyVmFsdWU6OkJvcmRlclZhbHVlKToKKyAgICAgICAgKGtodG1sOjpCb3Jk
ZXJWYWx1ZTo6c3R5bGUpOgorICAgICAgICAoa2h0bWw6OkJvcmRlclZhbHVlOjpub25aZXJvKToK
KyAgICAgICAgKGtodG1sOjpCb3JkZXJWYWx1ZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChraHRt
bDo6T3V0bGluZVZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKGtodG1sOjpDb2xsYXBzZWRC
b3JkZXJWYWx1ZTo6c3R5bGUpOgorICAgICAgICAoa2h0bWw6OkJvcmRlckltYWdlOjpob3Jpem9u
dGFsUnVsZSk6CisgICAgICAgIChraHRtbDo6Qm9yZGVySW1hZ2U6OnZlcnRpY2FsUnVsZSk6Cisg
ICAgICAgIChraHRtbDo6Qm9yZGVyRGF0YTo6Ym9yZGVyTGVmdFdpZHRoKToKKyAgICAgICAgKGto
dG1sOjpCb3JkZXJEYXRhOjpib3JkZXJSaWdodFdpZHRoKToKKyAgICAgICAgKGtodG1sOjpCb3Jk
ZXJEYXRhOjpib3JkZXJUb3BXaWR0aCk6CisgICAgICAgIChraHRtbDo6Qm9yZGVyRGF0YTo6Ym9y
ZGVyQm90dG9tV2lkdGgpOgorICAgICAgICAoa2h0bWw6OkJhY2tncm91bmRMYXllcjo6YmFja2dy
b3VuZENsaXApOgorICAgICAgICAoa2h0bWw6OkJhY2tncm91bmRMYXllcjo6YmFja2dyb3VuZE9y
aWdpbik6CisgICAgICAgIChraHRtbDo6QmFja2dyb3VuZExheWVyOjpiYWNrZ3JvdW5kUmVwZWF0
KToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6c3R5bGVUeXBlKToKKyAgICAgICAgKGto
dG1sOjpSZW5kZXJTdHlsZTo6ZGlzcGxheSk6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6
Om9yaWdpbmFsRGlzcGxheSk6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OnBvc2l0aW9u
KToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6ZmxvYXRpbmcpOgorICAgICAgICAoa2h0
bWw6OlJlbmRlclN0eWxlOjpib3JkZXJMZWZ0U3R5bGUpOgorICAgICAgICAoa2h0bWw6OlJlbmRl
clN0eWxlOjpib3JkZXJMZWZ0Q29sb3IpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjpi
b3JkZXJSaWdodFN0eWxlKToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6Ym9yZGVyUmln
aHRDb2xvcik6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OmJvcmRlclRvcFN0eWxlKToK
KyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6Ym9yZGVyVG9wQ29sb3IpOgorICAgICAgICAo
a2h0bWw6OlJlbmRlclN0eWxlOjpib3JkZXJCb3R0b21TdHlsZSk6CisgICAgICAgIChraHRtbDo6
UmVuZGVyU3R5bGU6OmJvcmRlckJvdHRvbUNvbG9yKToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJT
dHlsZTo6b3V0bGluZVdpZHRoKToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6b3V0bGlu
ZVN0eWxlKToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6b3ZlcmZsb3cpOgorICAgICAg
ICAoa2h0bWw6OlJlbmRlclN0eWxlOjp2aXNpYmlsaXR5KToKKyAgICAgICAgKGtodG1sOjpSZW5k
ZXJTdHlsZTo6dmVydGljYWxBbGlnbik6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OnVu
aWNvZGVCaWRpKToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6Y2xlYXIpOgorICAgICAg
ICAoa2h0bWw6OlJlbmRlclN0eWxlOjp0YWJsZUxheW91dCk6CisgICAgICAgIChraHRtbDo6UmVu
ZGVyU3R5bGU6OnRleHRBbGlnbik6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OnRleHRU
cmFuc2Zvcm0pOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjpkaXJlY3Rpb24pOgorICAg
ICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjp3aGl0ZVNwYWNlKToKKyAgICAgICAgKGtodG1sOjpS
ZW5kZXJTdHlsZTo6YmFja2dyb3VuZFJlcGVhdCk6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5
bGU6OmJhY2tncm91bmRDbGlwKToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6YmFja2dy
b3VuZE9yaWdpbik6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OmVtcHR5Q2VsbHMpOgor
ICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjpjYXB0aW9uU2lkZSk6CisgICAgICAgIChraHRt
bDo6UmVuZGVyU3R5bGU6Omxpc3RTdHlsZVR5cGUpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0
eWxlOjpsaXN0U3R5bGVQb3NpdGlvbik6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OmN1
cnNvcik6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OnBhZ2VCcmVha0luc2lkZSk6Cisg
ICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OnBhZ2VCcmVha0JlZm9yZSk6CisgICAgICAgIChr
aHRtbDo6UmVuZGVyU3R5bGU6OnBhZ2VCcmVha0FmdGVyKToKKyAgICAgICAgKGtodG1sOjpSZW5k
ZXJTdHlsZTo6b3V0bGluZU9mZnNldCk6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OmFw
cGVhcmFuY2UpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjpib3hBbGlnbik6CisgICAg
ICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OmJveERpcmVjdGlvbik6CisgICAgICAgIChraHRtbDo6
UmVuZGVyU3R5bGU6OmJveExpbmVzKToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6Ym94
T3JpZW50KToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6Ym94UGFjayk6CisgICAgICAg
IChraHRtbDo6UmVuZGVyU3R5bGU6OmJveFNpemluZyk6CisgICAgICAgIChraHRtbDo6UmVuZGVy
U3R5bGU6Om1hcnF1ZWVCZWhhdmlvcik6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6Om1h
cnF1ZWVEaXJlY3Rpb24pOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjp1c2VyTW9kaWZ5
KToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6dXNlckRyYWcpOgorICAgICAgICAoa2h0
bWw6OlJlbmRlclN0eWxlOjp1c2VyU2VsZWN0KToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHls
ZTo6bWFyZ2luVG9wQ29sbGFwc2UpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjptYXJn
aW5Cb3R0b21Db2xsYXBzZSk6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OndvcmRXcmFw
KToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6bmJzcE1vZGUpOgorICAgICAgICAoa2h0
bWw6OlJlbmRlclN0eWxlOjpraHRtbExpbmVCcmVhayk6CisgICAgICAgIChraHRtbDo6UmVuZGVy
U3R5bGU6Om1hdGNoTmVhcmVzdE1haWxCbG9ja3F1b3RlQ29sb3IpOgorICAgICAgICAoa2h0bWw6
OlJlbmRlclN0eWxlOjpzZXRCb3JkZXJMZWZ0V2lkdGgpOgorICAgICAgICAoa2h0bWw6OlJlbmRl
clN0eWxlOjpzZXRCb3JkZXJMZWZ0U3R5bGUpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxl
OjpzZXRCb3JkZXJMZWZ0Q29sb3IpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjpzZXRC
b3JkZXJSaWdodFdpZHRoKToKKyAgICAgICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6c2V0Qm9yZGVy
UmlnaHRTdHlsZSk6CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OnNldEJvcmRlclJpZ2h0
Q29sb3IpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjpzZXRCb3JkZXJUb3BXaWR0aCk6
CisgICAgICAgIChraHRtbDo6UmVuZGVyU3R5bGU6OnNldEJvcmRlclRvcFN0eWxlKToKKyAgICAg
ICAgKGtodG1sOjpSZW5kZXJTdHlsZTo6c2V0Qm9yZGVyVG9wQ29sb3IpOgorICAgICAgICAoa2h0
bWw6OlJlbmRlclN0eWxlOjpzZXRCb3JkZXJCb3R0b21XaWR0aCk6CisgICAgICAgIChraHRtbDo6
UmVuZGVyU3R5bGU6OnNldEJvcmRlckJvdHRvbVN0eWxlKToKKyAgICAgICAgKGtodG1sOjpSZW5k
ZXJTdHlsZTo6c2V0Qm9yZGVyQm90dG9tQ29sb3IpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0
eWxlOjpzZXRPdXRsaW5lV2lkdGgpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjpzZXRP
dXRsaW5lU3R5bGUpOgorICAgICAgICAoa2h0bWw6OlJlbmRlclN0eWxlOjpwc2V1ZG9TdGF0ZSk6
CisKIDIwMDYtMDMtMDUgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICAtIFJvbGxlZCBvdXQgdGhlIGZpeCBmb3IgPHJkYXI6Ly9wcm9ibGVtLzQ0NjcxNDM+IGJl
Y2F1c2UgaXQncyB0aGUKSW5kZXg6IGNzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHJldmlzaW9uIDEzMTM0KQorKysgY3NzL2Nz
c3N0eWxlc2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDkyLDcgKzEwOTIsNyBAQCBi
b29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IoQ1NTCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIGNoZWNrIHRoZSBzdWJzZWxlY3RvcnMKLSAgICBDU1NTZWxlY3Rvcjo6
UmVsYXRpb24gcmVsYXRpb24gPSBzZWwtPnJlbGF0aW9uOworICAgIENTU1NlbGVjdG9yOjpSZWxh
dGlvbiByZWxhdGlvbiA9IHNlbC0+cmVsYXRpb24oKTsKICAgICB3aGlsZSgoc2VsID0gc2VsLT50
YWdIaXN0b3J5KSkgewogICAgICAgICBpZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKQEAgLTExNjEsNyArMTE2MSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxl
Y3Rvcjo6Y2hlY2tTZWxlY3RvcihDU1MKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgcmVsYXRpb24gPSBzZWwtPnJlbGF0aW9uOworICAgICAgICByZWxh
dGlvbiA9IHNlbC0+cmVsYXRpb24oKTsKICAgICB9CiAKICAgICBpZiAoc3ViamVjdCAmJiBoYXZl
UHNldWRvICYmIGR5bmFtaWNQc2V1ZG8gIT0gcHNldWRvU3R5bGUpCkBAIC0xMzkyLDcgKzEzOTIs
NyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlcjogewogICAgICAgICAgICAgICAgIC8vIElm
IHdlJ3JlIGluIHF1aXJrcyBtb2RlLCB0aGVuIGhvdmVyIHNob3VsZCBuZXZlciBtYXRjaCBhbmNo
b3JzIHdpdGggbm8KICAgICAgICAgICAgICAgICAvLyBocmVmIGFuZCAqOmhvdmVyIHNob3VsZCBu
b3QgbWF0Y2ggYW55dGhpbmcuICBUaGlzIGlzIGltcG9ydGFudCBmb3Igc2l0ZXMgbGlrZSB3c2ou
Y29tLgotICAgICAgICAgICAgICAgIGlmIChzdHJpY3RQYXJzaW5nIHx8IGlzU3ViU2VsZWN0b3Ig
fHwgc2VsLT5yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IgfHwgKHNlbC0+aGFz
VGFnKCkgJiYgIWUtPmhhc1RhZ05hbWUoYVRhZykpIHx8IGUtPmlzTGluaygpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHN0cmljdFBhcnNpbmcgfHwgaXNTdWJTZWxlY3RvciB8fCBzZWwtPnJlbGF0
aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yIHx8IChzZWwtPmhhc1RhZygpICYmICFl
LT5oYXNUYWdOYW1lKGFUYWcpKSB8fCBlLT5pc0xpbmsoKSkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoZWxlbWVudCA9PSBlICYmIHN0eWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgc3R5
bGUtPnNldEFmZmVjdGVkQnlIb3ZlclJ1bGVzKHRydWUpOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoZS0+cmVuZGVyZXIoKSkgewpAQCAtMTQyMyw3ICsxNDIzLDcgQEAgYm9vbCBDU1NTdHlsZVNl
bGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKAogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvQWN0aXZlOgogICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIHF1aXJrcyBtb2Rl
LCB0aGVuIDphY3RpdmUgc2hvdWxkIG5ldmVyIG1hdGNoIGFuY2hvcnMgd2l0aCBubwogICAgICAg
ICAgICAgICAgIC8vIGhyZWYgYW5kICo6YWN0aXZlIHNob3VsZCBub3QgbWF0Y2ggYW55dGhpbmcu
IAotICAgICAgICAgICAgICAgIGlmIChzdHJpY3RQYXJzaW5nIHx8IGlzU3ViU2VsZWN0b3IgfHwg
c2VsLT5yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3IgfHwgKHNlbC0+aGFzVGFn
KCkgJiYgIWUtPmhhc1RhZ05hbWUoYVRhZykpIHx8IGUtPmlzTGluaygpKSB7CisgICAgICAgICAg
ICAgICAgaWYgKHN0cmljdFBhcnNpbmcgfHwgaXNTdWJTZWxlY3RvciB8fCBzZWwtPnJlbGF0aW9u
KCkgPT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yIHx8IChzZWwtPmhhc1RhZygpICYmICFlLT5o
YXNUYWdOYW1lKGFUYWcpKSB8fCBlLT5pc0xpbmsoKSkgewogICAgICAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudCA9PSBlICYmIHN0eWxlKQogICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUt
PnNldEFmZmVjdGVkQnlBY3RpdmVSdWxlcyh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgZWxz
ZSBpZiAoZS0+cmVuZGVyZXIoKSkKSW5kZXg6IGNzcy9jc3NfYmFzZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gY3NzL2Nzc19iYXNlLmNwcAkocmV2aXNpb24gMTMxMzQpCisrKyBjc3MvY3NzX2Jhc2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNyArMjQ1LDcgQEAgYm9vbCBDU1NTZWxlY3Rvcjo6b3Bl
cmF0b3IgPT0gKCBjb25zdCBDUwogCiAgICAgd2hpbGUgKCBzZWwxICYmIHNlbDIgKSB7CiAJaWYg
KCBzZWwxLT50YWcgIT0gc2VsMi0+dGFnIHx8IHNlbDEtPmF0dHIgIT0gc2VsMi0+YXR0ciB8fAot
CSAgICAgc2VsMS0+cmVsYXRpb24gIT0gc2VsMi0+cmVsYXRpb24gfHwgc2VsMS0+bWF0Y2ggIT0g
c2VsMi0+bWF0Y2ggfHwKKwkgICAgIHNlbDEtPnJlbGF0aW9uKCkgIT0gc2VsMi0+cmVsYXRpb24o
KSB8fCBzZWwxLT5tYXRjaCAhPSBzZWwyLT5tYXRjaCB8fAogCSAgICAgc2VsMS0+dmFsdWUgIT0g
c2VsMi0+dmFsdWUgfHwKICAgICAgICAgICAgICBzZWwxLT5wc2V1ZG9UeXBlKCkgIT0gc2VsMi0+
cHNldWRvVHlwZSgpKQogCSAgICByZXR1cm4gZmFsc2U7CkBAIC0zMTUsMTcgKzMxNSwxNyBAQCBE
T01TdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvCiAgICAgICAgICAgICAgICAg
c3RyICs9ICJcIl0iOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChjcy0+
cmVsYXRpb24gIT0gQ1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yIHx8ICFjcy0+dGFnSGlzdG9yeSkK
KyAgICAgICAgaWYgKGNzLT5yZWxhdGlvbigpICE9IENTU1NlbGVjdG9yOjpTdWJTZWxlY3RvciB8
fCAhY3MtPnRhZ0hpc3RvcnkpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY3MgPSBjcy0+
dGFnSGlzdG9yeTsKICAgICB9CiAgICAgaWYgKGNzLT50YWdIaXN0b3J5KSB7CiAgICAgICAgIERP
TVN0cmluZyB0YWdIaXN0b3J5VGV4dCA9IGNzLT50YWdIaXN0b3J5LT5zZWxlY3RvclRleHQoKTsK
LSAgICAgICAgaWYgKGNzLT5yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQp
CisgICAgICAgIGlmIChjcy0+cmVsYXRpb24oKSA9PSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNl
bnQpCiAgICAgICAgICAgICBzdHIgPSB0YWdIaXN0b3J5VGV4dCArICIgKyAiICsgc3RyOwotICAg
ICAgICBlbHNlIGlmIChjcy0+cmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNl
bnQpCisgICAgICAgIGVsc2UgaWYgKGNzLT5yZWxhdGlvbigpID09IENTU1NlbGVjdG9yOjpJbmRp
cmVjdEFkamFjZW50KQogICAgICAgICAgICAgc3RyID0gdGFnSGlzdG9yeVRleHQgKyAiIH4gIiAr
IHN0cjsKLSAgICAgICAgZWxzZSBpZiAoY3MtPnJlbGF0aW9uID09IENTU1NlbGVjdG9yOjpDaGls
ZCkKKyAgICAgICAgZWxzZSBpZiAoY3MtPnJlbGF0aW9uKCkgPT0gQ1NTU2VsZWN0b3I6OkNoaWxk
KQogICAgICAgICAgICAgc3RyID0gdGFnSGlzdG9yeVRleHQgKyAiID4gIiArIHN0cjsKICAgICAg
ICAgZWxzZSAvLyBEZXNjZW5kYW50CiAgICAgICAgICAgICBzdHIgPSB0YWdIaXN0b3J5VGV4dCAr
ICIgIiArIHN0cjsKSW5kZXg6IGNzcy9jc3NfZ3JhbW1hci55Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNzcy9j
c3NfZ3JhbW1hci55CShyZXZpc2lvbiAxMzEzNCkKKysrIGNzcy9jc3NfZ3JhbW1hci55CSh3b3Jr
aW5nIGNvcHkpCkBAIC01MDQsNyArNTA0LDcgQEAgc2VsZWN0b3I6CiAgICAgICAgICAgICBDU1NT
ZWxlY3RvciogZW5kID0gJCQ7CiAgICAgICAgICAgICB3aGlsZSAoZW5kLT50YWdIaXN0b3J5KQog
ICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9yeTsKLSAgICAgICAgICAgIGVuZC0+
cmVsYXRpb24gPSAkMjsKKyAgICAgICAgICAgIGVuZC0+bV9yZWxhdGlvbiA9ICQyOwogICAgICAg
ICAgICAgZW5kLT50YWdIaXN0b3J5ID0gcC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpOwogICAg
ICAgICAgICAgaWYgKCQyID09IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50IHx8ICQyID09IENTU1Nl
bGVjdG9yOjpDaGlsZCkgewogICAgICAgICAgICAgICAgIGlmIChXZWJDb3JlOjpEb2N1bWVudElt
cGwqIGRvYyA9IHAtPmRvY3VtZW50KCkpCkBAIC02MDksNyArNjA5LDcgQEAgc3BlY2lmaWVyX2xp
c3Q6CiAgICAgICAgICAgICBDU1NTZWxlY3RvciogZW5kID0gJDE7CiAgICAgICAgICAgICB3aGls
ZSAoZW5kLT50YWdIaXN0b3J5KQogICAgICAgICAgICAgICAgIGVuZCA9IGVuZC0+dGFnSGlzdG9y
eTsKLSAgICAgICAgICAgIGVuZC0+cmVsYXRpb24gPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I7
CisgICAgICAgICAgICBlbmQtPm1fcmVsYXRpb24gPSBDU1NTZWxlY3Rvcjo6U3ViU2VsZWN0b3I7
CiAgICAgICAgICAgICBlbmQtPnRhZ0hpc3RvcnkgPSBwLT5zaW5rRmxvYXRpbmdTZWxlY3Rvcigk
Mik7CiAgICAgICAgIH0KICAgICB9CkluZGV4OiBjc3MvY3NzX2Jhc2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBjc3MvY3NzX2Jhc2UuaAkocmV2aXNpb24gMTMxMzQpCisrKyBjc3MvY3NzX2Jhc2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNzUsMTIgKzc1LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIENTU1NlbGVjdG9yKCkKICAgICAgICAgICAgIDogdGFnSGlzdG9yeSgw
KSwgc2ltcGxlU2VsZWN0b3IoMCksIG5leHRTZWxlY3RvcigwKSwgYXR0cihhbnlRTmFtZSgpKSwg
dGFnKGFueVFOYW1lKCkpLAotICAgICAgICAgICAgICByZWxhdGlvbihEZXNjZW5kYW50KSwgbWF0
Y2goTm9uZSksIHBzZXVkb0lkKDApLCBfcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCisgICAg
ICAgICAgICAgIG1fcmVsYXRpb24oRGVzY2VuZGFudCksIG1hdGNoKE5vbmUpLCBwc2V1ZG9JZCgw
KSwgX3BzZXVkb1R5cGUoUHNldWRvTm90UGFyc2VkKQogICAgICAgICB7fQogICAgICAgICAKICAg
ICAgICAgQ1NTU2VsZWN0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUpCiAgICAgICAgICAg
ICA6IHRhZ0hpc3RvcnkoMCksIHNpbXBsZVNlbGVjdG9yKDApLCBuZXh0U2VsZWN0b3IoMCksIGF0
dHIoYW55UU5hbWUoKSksIHRhZyhxTmFtZSksCi0gICAgICAgICAgICAgIHJlbGF0aW9uKERlc2Nl
bmRhbnQpLCBtYXRjaChOb25lKSwgcHNldWRvSWQoMCksIF9wc2V1ZG9UeXBlKFBzZXVkb05vdFBh
cnNlZCkKKyAgICAgICAgICAgICAgbV9yZWxhdGlvbihEZXNjZW5kYW50KSwgbWF0Y2goTm9uZSks
IHBzZXVkb0lkKDApLCBfcHNldWRvVHlwZShQc2V1ZG9Ob3RQYXJzZWQpCiAgICAgICAgIHt9CiAK
ICAgICAgICAgfkNTU1NlbGVjdG9yKCkgewpAQCAtMTc0LDcgKzE3NCw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICAgICAgaWYgKF9wc2V1ZG9UeXBlID09IFBzZXVk
b05vdFBhcnNlZCkKICAgICAgICAgICAgICAgICBleHRyYWN0UHNldWRvVHlwZSgpOwotICAgICAg
ICAgICAgcmV0dXJuIF9wc2V1ZG9UeXBlOworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFBzZXVkb1R5cGU+KF9wc2V1ZG9UeXBlKTsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaGFz
VGFnKCkgY29uc3QgeyByZXR1cm4gdGFnICE9IGFueVFOYW1lKCk7IH0KQEAgLTE4OCwxMCArMTg4
LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgUXVhbGlmaWVkTmFtZSBhdHRyOwog
ICAgICAgICBRdWFsaWZpZWROYW1lIHRhZzsKICAgICAgICAgCi0gICAgICAgIFJlbGF0aW9uIHJl
bGF0aW9uICAgICAgICAgICAgICA6IDM7Ci0gICAgICAgIG11dGFibGUgTWF0Y2ggIG1hdGNoICAg
ICAgICAgICA6IDQ7Ci0gICAgICAgIHVuc2lnbmVkIGludCBwc2V1ZG9JZCAgICAgICAgICA6IDM7
Ci0gICAgICAgIG11dGFibGUgUHNldWRvVHlwZSBfcHNldWRvVHlwZSA6IDU7CisgICAgICAgIFJl
bGF0aW9uIHJlbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8UmVsYXRpb24+KG1f
cmVsYXRpb24pOyB9CisKKyAgICAgICAgdW5zaWduZWQgbV9yZWxhdGlvbiAgICAgICAgICA6IDM7
IC8vIGVudW0gUmVsYXRpb24KKyAgICAgICAgbXV0YWJsZSB1bnNpZ25lZCBtYXRjaCAgICAgICA6
IDQ7IC8vIGVudW0gTWF0Y2gKKyAgICAgICAgdW5zaWduZWQgcHNldWRvSWQgICAgICAgICAgICA6
IDM7CisgICAgICAgIG11dGFibGUgdW5zaWduZWQgX3BzZXVkb1R5cGUgOiA1OyAvLyBQc2V1ZG9U
eXBlCiAKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGV4dHJhY3RQc2V1ZG9UeXBlKCkgY29u
c3Q7CkluZGV4OiBrc3ZnMi9zdmcvU1ZHTGVuZ3RoSW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcy
L3N2Zy9TVkdMZW5ndGhJbXBsLmgJKHJldmlzaW9uIDEzMTM0KQorKysga3N2ZzIvc3ZnL1NWR0xl
bmd0aEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsOSArNzIsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZQogICAgICAgICBmbG9hdCBtX3ZhbHVlOwogICAgICAgICBmbG9hdCBtX3ZhbHVlSW5TcGVj
aWZpZWRVbml0czsKIAotICAgICAgICBMZW5ndGhNb2RlIG1fbW9kZSA6IDI7CisgICAgICAgIHVu
c2lnbmVkIG1fbW9kZSA6IDI7IC8vIExlbmd0aE1vZGUKICAgICAgICAgYm9vbCBtX2Jib3hSZWxh
dGl2ZSA6IDE7Ci0gICAgICAgIHVuc2lnbmVkIHNob3J0IG1fdW5pdFR5cGUgOiA0OworICAgICAg
ICB1bnNpZ25lZCBtX3VuaXRUeXBlIDogNDsKICAgICAgICAgYm9vbCBtX3JlcXVpcmVzTGF5b3V0
IDogMTsKIAogICAgICAgICBjb25zdCBTVkdTdHlsZWRFbGVtZW50SW1wbCAqbV9jb250ZXh0OwpJ
bmRleDoga3N2ZzIvc3ZnL1NWR0xlbmd0aEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtzdmcyL3N2
Zy9TVkdMZW5ndGhJbXBsLmNwcAkocmV2aXNpb24gMTMxMzQpCisrKyBrc3ZnMi9zdmcvU1ZHTGVu
Z3RoSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgZmxvYXQgU1ZHTGVu
Z3RoSW1wbDo6dmFsdWUoKSBjb25zdAogICAgICAgICByZXR1cm4gdmFsdWU7CiAKICAgICAvLyBV
c2UgdGhlIG1hbnVhbCBvdmVycmlkZSAibV92aWV3cG9ydEVsZW1lbnQiIHdoZW4gdGhlcmUgaXMg
bm8gY29udGV4dCBlbGVtZW50IG9mZiBvZiB3aGljaCB0byBlc3RhYmxpc2ggdGhlIHZpZXdwb3J0
LgotICAgIHJldHVybiBTVkdIZWxwZXI6OlBlcmNlbnRhZ2VPZlZpZXdwb3J0KHZhbHVlLCBtX2Nv
bnRleHQgPyBtX2NvbnRleHQtPnZpZXdwb3J0RWxlbWVudCgpIDogbV92aWV3cG9ydEVsZW1lbnQs
IG1fbW9kZSk7CisgICAgcmV0dXJuIFNWR0hlbHBlcjo6UGVyY2VudGFnZU9mVmlld3BvcnQodmFs
dWUsIG1fY29udGV4dCA/IG1fY29udGV4dC0+dmlld3BvcnRFbGVtZW50KCkgOiBtX3ZpZXdwb3J0
RWxlbWVudCwgc3RhdGljX2Nhc3Q8TGVuZ3RoTW9kZT4obV9tb2RlKSk7CiB9CiAKIHZvaWQgU1ZH
TGVuZ3RoSW1wbDo6c2V0VmFsdWVJblNwZWNpZmllZFVuaXRzKGZsb2F0IHZhbHVlSW5TcGVjaWZp
ZWRVbml0cykKSW5kZXg6IGtzdmcyL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudEltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnRJbXBs
LmgJKHJldmlzaW9uIDEzMTM0KQorKysga3N2ZzIvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVt
ZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC02MSw3ICs2MSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlCiAgICAgICAgIFJlZlB0cjxTVkdNYXRyaXhJbXBsPiBtX3RyYW5zZm9ybU1hdHJpeDsKIAog
ICAgICAgICBtdXRhYmxlIGJvb2wgbV9yb3RhdGVTcGVjaWFsQ2FzZSA6IDE7Ci0gICAgICAgIGJv
b2wgbV90b1JvdGF0ZVNwZWNpYWxDYXNlIDogMSwgbV9mcm9tUm90YXRlU3BlY2lhbENhc2UgOiAx
OworICAgICAgICBib29sIG1fdG9Sb3RhdGVTcGVjaWFsQ2FzZSA6IDE7CisgICAgICAgIGJvb2wg
bV9mcm9tUm90YXRlU3BlY2lhbENhc2UgOiAxOwogICAgIH07CiB9OwogCkluZGV4OiBrc3ZnMi9z
dmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudEltcGwuaAkocmV2aXNpb24gMTMxMzQpCisrKyBrc3ZnMi9zdmcvU1ZH
QW5pbWF0aW9uRWxlbWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEyICsxNDIsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUKICAgICAgICAgZG91YmxlIG1fc2ltcGxlRHVyYXRpb247CiAK
ICAgICAgICAgLy8gU2hhcmVkIGFuaW1hdGlvbiBwcm9wZXJ0aWVzCi0gICAgICAgIEVGaWxsTW9k
ZSBtX2ZpbGwgOiAxOwotICAgICAgICBFUmVzdGFydCBtX3Jlc3RhcnQgOiAyOwotICAgICAgICBF
Q2FsY01vZGUgbV9jYWxjTW9kZSA6IDI7Ci0gICAgICAgIEVBZGRpdGl2ZU1vZGUgbV9hZGRpdGl2
ZSA6IDE7Ci0gICAgICAgIEVBY2N1bXVsYXRlTW9kZSBtX2FjY3VtdWxhdGUgOiAxOwotICAgICAg
ICBFQXR0cmlidXRlVHlwZSBtX2F0dHJpYnV0ZVR5cGUgOiAyOworICAgICAgICB1bnNpZ25lZCBt
X2ZpbGwgOiAxOyAvLyBFRmlsbE1vZGUgbV9maWxsCisgICAgICAgIHVuc2lnbmVkIG1fcmVzdGFy
dCA6IDI7IC8vIEVSZXN0YXJ0CisgICAgICAgIHVuc2lnbmVkIG1fY2FsY01vZGUgOiAyOyAvLyBF
Q2FsY01vZGUKKyAgICAgICAgdW5zaWduZWQgbV9hZGRpdGl2ZSA6IDE7IC8vIEVBZGRpdGl2ZU1v
ZGUKKyAgICAgICAgdW5zaWduZWQgbV9hY2N1bXVsYXRlIDogMTsgLy8gRUFjY3VtdWxhdGVNb2Rl
CisgICAgICAgIHVuc2lnbmVkIG1fYXR0cmlidXRlVHlwZSA6IDI7IC8vIEVBdHRyaWJ1dGVUeXBl
CiAgICAgICAgIAogICAgICAgICBRU3RyaW5nIG1fdG87CiAgICAgICAgIFFTdHJpbmcgbV9ieTsK
SW5kZXg6IGtzdmcyL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0ga3N2ZzIvc3ZnL1NWR0FuaW1hdGlvbkVsZW1lbnRJbXBsLmNwcAkocmV2aXNpb24gMTMxMzQp
CisrKyBrc3ZnMi9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00MzIsOSArNDMyLDggQEAgRE9NU3RyaW5nIFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsOjp0
YXJnZQogICAgIAogICAgIERPTVN0cmluZyByZXQ7CiAKLSAgICBFQXR0cmlidXRlVHlwZSBhdHRy
aWJ1dGVUeXBlID0gbV9hdHRyaWJ1dGVUeXBlOwotICAgIGlmKGF0dHJpYnV0ZVR5cGUgPT0gQVRU
UklCVVRFVFlQRV9BVVRPKQotICAgIHsKKyAgICBFQXR0cmlidXRlVHlwZSBhdHRyaWJ1dGVUeXBl
ID0gc3RhdGljX2Nhc3Q8RUF0dHJpYnV0ZVR5cGU+KG1fYXR0cmlidXRlVHlwZSk7CisgICAgaWYg
KGF0dHJpYnV0ZVR5cGUgPT0gQVRUUklCVVRFVFlQRV9BVVRPKSB7CiAgICAgICAgIGF0dHJpYnV0
ZVR5cGUgPSBBVFRSSUJVVEVUWVBFX1hNTDsKIAogICAgICAgICAvLyBTcGVjOiBUaGUgaW1wbGVt
ZW50YXRpb24gc2hvdWxkIG1hdGNoIHRoZSBhdHRyaWJ1dGVOYW1lIHRvIGFuIGF0dHJpYnV0ZQpA
QCAtNDYwLDcgKzQ1OSw3IEBAIERPTVN0cmluZyBTVkdBbmltYXRpb25FbGVtZW50SW1wbDo6dGFy
Z2UKIAogdm9pZCBTVkdBbmltYXRpb25FbGVtZW50SW1wbDo6c2V0VGFyZ2V0QXR0cmlidXRlKERP
TVN0cmluZ0ltcGwgKnZhbHVlKQogewotICAgIFNWR0FuaW1hdGlvbkVsZW1lbnRJbXBsOjpzZXRU
YXJnZXRBdHRyaWJ1dGUodGFyZ2V0RWxlbWVudCgpLCBET01TdHJpbmcobV9hdHRyaWJ1dGVOYW1l
KS5pbXBsKCksIHZhbHVlLCBtX2F0dHJpYnV0ZVR5cGUpOworICAgIFNWR0FuaW1hdGlvbkVsZW1l
bnRJbXBsOjpzZXRUYXJnZXRBdHRyaWJ1dGUodGFyZ2V0RWxlbWVudCgpLCBET01TdHJpbmcobV9h
dHRyaWJ1dGVOYW1lKS5pbXBsKCksIHZhbHVlLCBzdGF0aWNfY2FzdDxFQXR0cmlidXRlVHlwZT4o
bV9hdHRyaWJ1dGVUeXBlKSk7CiB9CiAKIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudEltcGw6OnNl
dFRhcmdldEF0dHJpYnV0ZShTVkdFbGVtZW50SW1wbCAqdGFyZ2V0LCBET01TdHJpbmdJbXBsICpu
YW1lSW1wbCwgRE9NU3RyaW5nSW1wbCAqdmFsdWUsIEVBdHRyaWJ1dGVUeXBlIHR5cGUpCkluZGV4
OiBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrc3ZnMi9jc3MvU1ZH
UmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTMxMzQpCisrKyBrc3ZnMi9jc3MvU1ZHUmVuZGVyU3R5
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTMwLDI0ICsxMzAsMjIgQEAgbmFtZXNwYWNlIFdlYkNv
cmUKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBzdHJ1Y3QKICAgICAgICAgICAgICAg
ICB7Ci0gICAgICAgICAgICAgICAgICAgIEVDb2xvclJlbmRlcmluZyBfY29sb3JSZW5kZXJpbmcg
OiAyOwotICAgICAgICAgICAgICAgICAgICBFSW1hZ2VSZW5kZXJpbmcgX2ltYWdlUmVuZGVyaW5n
IDogMjsKLSAgICAgICAgICAgICAgICAgICAgRVNoYXBlUmVuZGVyaW5nIF9zaGFwZVJlbmRlcmlu
ZyA6IDI7Ci0gICAgICAgICAgICAgICAgICAgIEVUZXh0UmVuZGVyaW5nICBfdGV4dFJlbmRlcmlu
ZyA6IDI7Ci0gICAgICAgICAgICAgICAgICAgIEVXaW5kUnVsZSBfY2xpcFJ1bGUgOiAxOyAKLSAg
ICAgICAgICAgICAgICAgICAgRVdpbmRSdWxlIF9maWxsUnVsZSA6IDE7Ci0gICAgICAgICAgICAg
ICAgICAgIEVDYXBTdHlsZSBfY2FwU3R5bGUgOiAyOwotICAgICAgICAgICAgICAgICAgICBFSm9p
blN0eWxlIF9qb2luU3R5bGUgOiAyOwotICAgICAgICAgICAgICAgICAgICBFVGV4dEFuY2hvciBf
dGV4dEFuY2hvciA6IDI7Ci0gICAgICAgICAgICAgICAgICAgIEVDb2xvckludGVycG9sYXRpb24g
X2NvbG9ySW50ZXJwb2xhdGlvbiA6IDI7Ci0gICAgICAgICAgICAgICAgICAgIEVDb2xvckludGVy
cG9sYXRpb24gX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnMgOiAyOwotICAgICAgICAgICAgICAg
ICAgICBFUG9pbnRlckV2ZW50cyBfcG9pbnRlckV2ZW50cyA6IDQ7Ci0gICAgICAgICAgICAgICAg
ICAgIEVXcml0aW5nTW9kZSBfd3JpdGluZ01vZGUgOiAzOwotCi0gICAgICAgICAgICAgICAgICAg
IHVuc2lnbmVkIGludCB1bnVzZWQgOiAzMjsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg
aW50IHVudXNlZDIgOiA1OworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfY29sb3JSZW5k
ZXJpbmcgOiAyOyAvLyBFQ29sb3JSZW5kZXJpbmcKKyAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgX2ltYWdlUmVuZGVyaW5nIDogMjsgLy8gRUltYWdlUmVuZGVyaW5nIAorICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBfc2hhcGVSZW5kZXJpbmcgOiAyOyAvLyBFU2hhcGVSZW5kZXJpbmcg
CisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF90ZXh0UmVuZGVyaW5nIDogMjsgLy8gRVRl
eHRSZW5kZXJpbmcKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX2NsaXBSdWxlIDogMTsg
Ly8gRVdpbmRSdWxlCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIF9maWxsUnVsZSA6IDE7
IC8vIEVXaW5kUnVsZQorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfY2FwU3R5bGUgOiAy
OyAvLyBFQ2FwU3R5bGUKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX2pvaW5TdHlsZSA6
IDI7IC8vIEVKb2luU3R5bGUKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX3RleHRBbmNo
b3IgOiAyOyAvLyBFVGV4dEFuY2hvcgorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBfY29s
b3JJbnRlcnBvbGF0aW9uIDogMjsgLy8gRUNvbG9ySW50ZXJwb2xhdGlvbgorICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBfY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyA6IDI7IC8vIEVDb2xv
ckludGVycG9sYXRpb24KKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX3BvaW50ZXJFdmVu
dHMgOiA0OyAvLyBFUG9pbnRlckV2ZW50cworICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBf
d3JpdGluZ01vZGUgOiAzOyAvLyBFV3JpdGluZ01vZGUKKyAgICAgICAgICAgICAgICAgICAgLy8g
NSBiaXRzIHVudXNlZAogICAgICAgICAgICAgICAgIH0gZjsKLSAgICAgICAgICAgICAgICB1aW50
NjRfdCBfaWZsYWdzOworICAgICAgICAgICAgICAgIHVpbnQzMl90IF9pZmxhZ3M7CiAgICAgICAg
ICAgICB9OwogICAgICAgICB9IHN2Z19pbmhlcml0ZWRfZmxhZ3M7CiAKQEAgLTE2MiwxMyArMTYw
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAg
c3RydWN0CiAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBFQWxpZ25tZW50
QmFzZWxpbmUgX2FsaWdubWVudEJhc2VsaW5lIDogNDsKLSAgICAgICAgICAgICAgICAgICAgRURv
bWluYW50QmFzZWxpbmUgX2RvbWluYW50QmFzZWxpbmUgOiA0OwotCi0gICAgICAgICAgICAgICAg
ICAgIHVuc2lnbmVkIGludCB1bnVzZWQgOiAzMjsKLSAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW50IHVudXNlZDIgOiAyNDsKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgX2FsaWdu
bWVudEJhc2VsaW5lIDogNDsgLy8gRUFsaWdubWVudEJhc2VsaW5lIAorICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBfZG9taW5hbnRCYXNlbGluZSA6IDQ7IC8vIEVEb21pbmFudEJhc2VsaW5l
CisgICAgICAgICAgICAgICAgICAgIC8vIDI0IGJpdHMgdW51c2VkCiAgICAgICAgICAgICAgICAg
fSBmOwotICAgICAgICAgICAgICAgIHVpbnQ2NF90IF9uaWZsYWdzOworICAgICAgICAgICAgICAg
IHVpbnQzMl90IF9uaWZsYWdzOwogICAgICAgICAgICAgfTsKICAgICAgICAgfSBzdmdfbm9uaW5o
ZXJpdGVkX2ZsYWdzOwogCkBAIC0yMDQsMTMgKzIwMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlCiAg
ICAgICAgICAgICBzdmdfaW5oZXJpdGVkX2ZsYWdzLmYuX2NvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnMgPSBpbml0aWFsQ29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycygpOwogICAgICAgICAgICAgc3Zn
X2luaGVyaXRlZF9mbGFncy5mLl9wb2ludGVyRXZlbnRzID0gaW5pdGlhbFBvaW50ZXJFdmVudHMo
KTsKICAgICAgICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuZi5fd3JpdGluZ01vZGUgPSBpbml0
aWFsV3JpdGluZ01vZGUoKTsKLSAgICAgICAgICAgIHN2Z19pbmhlcml0ZWRfZmxhZ3MuZi51bnVz
ZWQgPSAwOwotICAgICAgICAgICAgc3ZnX2luaGVyaXRlZF9mbGFncy5mLnVudXNlZDIgPSAwOwog
CiAgICAgICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYuX2FsaWdubWVudEJhc2VsaW5l
ID0gaW5pdGlhbEFsaWdubWVudEJhc2VsaW5lKCk7CiAgICAgICAgICAgICBzdmdfbm9uaW5oZXJp
dGVkX2ZsYWdzLmYuX2RvbWluYW50QmFzZWxpbmUgPSBpbml0aWFsRG9taW5hbnRCYXNlbGluZSgp
OwotICAgICAgICAgICAgc3ZnX25vbmluaGVyaXRlZF9mbGFncy5mLnVudXNlZCA9IDA7Ci0gICAg
ICAgICAgICBzdmdfbm9uaW5oZXJpdGVkX2ZsYWdzLmYudW51c2VkMiA9IDA7CiAgICAgICAgIH0K
ICAgICB9OwogfTsKSW5kZXg6IGt3cS9LV1FLSFRNTFNldHRpbmdzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a3dxL0tXUUtIVE1MU2V0dGluZ3MuaAkocmV2aXNpb24gMTMxMzQpCisrKyBrd3EvS1dRS0hUTUxT
ZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTMgKzExMywxMyBAQCBwcml2YXRlOgog
ICAgIGludCBfbWluaW11bUxvZ2ljYWxGb250U2l6ZTsKICAgICBpbnQgX2RlZmF1bHRGb250U2l6
ZTsKICAgICBpbnQgX2RlZmF1bHRGaXhlZEZvbnRTaXplOwotICAgIHVpbnQgX0phdmFFbmFibGVk
OjE7Ci0gICAgdWludCBfd2lsbExvYWRJbWFnZXNBdXRvbWF0aWNhbGx5OjE7Ci0gICAgdWludCBf
cGx1Z2luc0VuYWJsZWQ6MTsKLSAgICB1aW50IF9KYXZhU2NyaXB0RW5hYmxlZDoxOwotICAgIHVp
bnQgX0phdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk6MTsKLSAgICB1aW50IF9z
aG91bGRQcmludEJhY2tncm91bmRzOjE7Ci0gICAgdWludCBfdGV4dEFyZWFzQXJlUmVzaXphYmxl
OjE7CisgICAgYm9vbCBfSmF2YUVuYWJsZWQgOiAxOworICAgIGJvb2wgX3dpbGxMb2FkSW1hZ2Vz
QXV0b21hdGljYWxseSA6IDE7CisgICAgYm9vbCBfcGx1Z2luc0VuYWJsZWQgOiAxOworICAgIGJv
b2wgX0phdmFTY3JpcHRFbmFibGVkIDogMTsKKyAgICBib29sIF9KYXZhU2NyaXB0Q2FuT3Blbldp
bmRvd3NBdXRvbWF0aWNhbGx5IDogMTsKKyAgICBib29sIF9zaG91bGRQcmludEJhY2tncm91bmRz
IDogMTsKKyAgICBib29sIF90ZXh0QXJlYXNBcmVSZXNpemFibGUgOiAxOwogICAgIAogfTsKIApJ
bmRleDogbG9hZGVyL0RvY0xvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxvYWRlci9Eb2NMb2FkZXIu
aAkocmV2aXNpb24gMTMxMzQpCisrKyBsb2FkZXIvRG9jTG9hZGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTY2LDcgKzY2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgYXV0
b2xvYWRJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX2JhdXRvbG9hZEltYWdlczsgfQogICAgICAg
ICBLSU86OkNhY2hlQ29udHJvbCBjYWNoZVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGVQ
b2xpY3k7IH0KLSAgICAgICAgS0hUTUxTZXR0aW5nczo6S0FuaW1hdGlvbkFkdmljZSBzaG93QW5p
bWF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvd0FuaW1hdGlvbnM7IH0KKyAgICAgICAgS0hU
TUxTZXR0aW5nczo6S0FuaW1hdGlvbkFkdmljZSBzaG93QW5pbWF0aW9ucygpIGNvbnN0IHsgcmV0
dXJuIHN0YXRpY19jYXN0PEtIVE1MU2V0dGluZ3M6OktBbmltYXRpb25BZHZpY2U+KG1fc2hvd0Fu
aW1hdGlvbnMpOyB9CiAgICAgICAgIHRpbWVfdCBleHBpcmVEYXRlKCkgY29uc3QgeyByZXR1cm4g
bV9leHBpcmVEYXRlOyB9CiAgICAgICAgIEZyYW1lKiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZnJhbWU7IH0KICAgICAgICAgRE9NOjpEb2N1bWVudEltcGwqIGRvYygpIGNvbnN0IHsgcmV0dXJu
IG1fZG9jOyB9CkBAIC05MSw3ICs5MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dGltZV90IG1fZXhwaXJlRGF0ZTsKICAgICAgICAgS0lPOjpDYWNoZUNvbnRyb2wgbV9jYWNoZVBv
bGljeTsKICAgICAgICAgYm9vbCBtX2JhdXRvbG9hZEltYWdlcyA6IDE7Ci0gICAgICAgIEtIVE1M
U2V0dGluZ3M6OktBbmltYXRpb25BZHZpY2UgbV9zaG93QW5pbWF0aW9ucyA6IDI7CisgICAgICAg
IHVuc2lnbmVkIG1fc2hvd0FuaW1hdGlvbnMgOiAyOyAvLyBLSFRNTFNldHRpbmdzOjpLQW5pbWF0
aW9uQWR2aWNlCiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBET006OkRvY3VtZW50
SW1wbCAqbV9kb2M7CiAgICAgICAgIGJvb2wgbV9sb2FkSW5Qcm9ncmVzczsKSW5kZXg6IGxvYWRl
ci9DYWNoZWRJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxvYWRlci9DYWNoZWRJbWFnZS5oCShyZXZp
c2lvbiAxMzEzNCkKKysrIGxvYWRlci9DYWNoZWRJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgaW50IG1fZGF0YVNpemU7CiAgICAgCiAgICAgYm9v
bCBtX2Vycm9yT2NjdXJyZWQgOiAxOwotICAgIEtIVE1MU2V0dGluZ3M6OktBbmltYXRpb25BZHZp
Y2UgbV9zaG93QW5pbWF0aW9ucyA6IDI7CisgICAgdW5zaWduZWQgbV9zaG93QW5pbWF0aW9ucyA6
IDI7IC8vIEtIVE1MU2V0dGluZ3M6OktBbmltYXRpb25BZHZpY2UKIAogICAgIGZyaWVuZCBjbGFz
cyBDYWNoZTsKIH07CkluZGV4OiBsb2FkZXIvRG9jTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs
b2FkZXIvRG9jTG9hZGVyLmNwcAkocmV2aXNpb24gMTMxMzQpCisrKyBsb2FkZXIvRG9jTG9hZGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDIzICsxOTksMjQgQEAgdm9pZCBEb2NMb2FkZXI6
OnNldEF1dG9sb2FkSW1hZ2VzKCBib29sIAogICAgICAgICB9CiB9CiAKLXZvaWQgRG9jTG9hZGVy
OjpzZXRDYWNoZVBvbGljeSggS0lPOjpDYWNoZUNvbnRyb2wgY2FjaGVQb2xpY3kgKQordm9pZCBE
b2NMb2FkZXI6OnNldENhY2hlUG9saWN5KEtJTzo6Q2FjaGVDb250cm9sIGNhY2hlUG9saWN5KQog
ewogICAgIG1fY2FjaGVQb2xpY3kgPSBjYWNoZVBvbGljeTsKIH0KIAotdm9pZCBEb2NMb2FkZXI6
OnNldFNob3dBbmltYXRpb25zKCBLSFRNTFNldHRpbmdzOjpLQW5pbWF0aW9uQWR2aWNlIHNob3dB
bmltYXRpb25zICkKK3ZvaWQgRG9jTG9hZGVyOjpzZXRTaG93QW5pbWF0aW9ucyhLSFRNTFNldHRp
bmdzOjpLQW5pbWF0aW9uQWR2aWNlIHNob3dBbmltYXRpb25zKQogewotICAgIGlmICggc2hvd0Fu
aW1hdGlvbnMgPT0gbV9zaG93QW5pbWF0aW9ucyApIHJldHVybjsKKyAgICBpZiAoc2hvd0FuaW1h
dGlvbnMgPT0gc3RhdGljX2Nhc3Q8S0hUTUxTZXR0aW5nczo6S0FuaW1hdGlvbkFkdmljZT4obV9z
aG93QW5pbWF0aW9ucykpCisgICAgICAgIHJldHVybjsKICAgICBtX3Nob3dBbmltYXRpb25zID0g
c2hvd0FuaW1hdGlvbnM7CiAKICAgICBjb25zdCBDYWNoZWRPYmplY3QqIGNvOwotICAgIGZvciAo
IGNvPW1fZG9jT2JqZWN0cy5maXJzdCgpOyBjbzsgY289bV9kb2NPYmplY3RzLm5leHQoKSApCi0g
ICAgICAgIGlmICggY28tPnR5cGUoKSA9PSBDYWNoZWRPYmplY3Q6OkltYWdlUmVzb3VyY2UgKQor
ICAgIGZvciAoY289bV9kb2NPYmplY3RzLmZpcnN0KCk7IGNvOyBjbyA9IG1fZG9jT2JqZWN0cy5u
ZXh0KCkpCisgICAgICAgIGlmIChjby0+dHlwZSgpID09IENhY2hlZE9iamVjdDo6SW1hZ2VSZXNv
dXJjZSkKICAgICAgICAgewotICAgICAgICAgICAgQ2FjaGVkSW1hZ2UgKmltZyA9IGNvbnN0X2Nh
c3Q8Q2FjaGVkSW1hZ2UqPiggc3RhdGljX2Nhc3Q8Y29uc3QgQ2FjaGVkSW1hZ2UgKj4oIGNvICkg
KTsKKyAgICAgICAgICAgIENhY2hlZEltYWdlICppbWcgPSBjb25zdF9jYXN0PENhY2hlZEltYWdl
Kj4oc3RhdGljX2Nhc3Q8Y29uc3QgQ2FjaGVkSW1hZ2UqPihjbykpOwogCi0gICAgICAgICAgICBp
bWctPnNldFNob3dBbmltYXRpb25zKCBzaG93QW5pbWF0aW9ucyApOworICAgICAgICAgICAgaW1n
LT5zZXRTaG93QW5pbWF0aW9ucyhzaG93QW5pbWF0aW9ucyk7CiAgICAgICAgIH0KIH0KIAo=
</data>
<flag name="review"
          id="1775"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>