<?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>6490</bug_id>
          
          <creation_ts>2006-01-11 00:58:20 -0800</creation_ts>
          <short_desc>Rename KHTMLView to FrameView and KHTMLPartPrivate FramePrivate</short_desc>
          <delta_ts>2006-01-11 13:10:20 -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>Frames</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>28228</commentid>
    <comment_count>0</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-11 00:58:20 -0800</bug_when>
    <thetext>I have a patch KHTMLView to FrameView and KHTMLPartPrivate FramePrivate, plus remove some 
unnecessary includes of the headers for these.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28229</commentid>
    <comment_count>1</comment_count>
      <attachid>5605</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-01-11 01:02:31 -0800</bug_when>
    <thetext>Created attachment 5605
the rename patch (plus extras)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>28230</commentid>
    <comment_count>2</comment_count>
      <attachid>5605</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2006-01-11 01:14:35 -0800</bug_when>
    <thetext>Comment on attachment 5605
the rename patch (plus extras)

r=me</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>5605</attachid>
            <date>2006-01-11 01:02:31 -0800</date>
            <delta_ts>2006-01-11 01:14:35 -0800</delta_ts>
            <desc>the rename patch (plus extras)</desc>
            <filename>more-rename.patch.txt</filename>
            <type>text/plain</type>
            <size>95466</size>
            <attacher name="Maciej Stachowiak">mjs</attacher>
            
              <data encoding="base64">SW5kZXg6IGtodG1sL3htbC9kb20yX2V2ZW50c2ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1s
L3htbC9kb20yX2V2ZW50c2ltcGwuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1sL3htbC9k
b20yX2V2ZW50c2ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw3IEBACiAjaW5j
bHVkZSAieG1sL2RvbTJfZXZlbnRzaW1wbC5oIgogCiAjaW5jbHVkZSAiZG9tL2RvbTJfZXZlbnRz
LmgiCi0jaW5jbHVkZSAia2h0bWx2aWV3LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5j
bHVkZSAicmVuZGVyaW5nL3JlbmRlcl9sYXllci5oIgogI2luY2x1ZGUgInhtbC9FdmVudE5hbWVz
LmgiCiAjaW5jbHVkZSAieG1sL2RvbTJfdmlld3NpbXBsLmgiCkluZGV4OiBraHRtbC94bWwvZG9t
X2RvY2ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC94bWwvZG9tX2RvY2ltcGwuaAkocmV2aXNp
b24gMTE5OTQpCisrKyBraHRtbC94bWwvZG9tX2RvY2ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
Njc5LDYgKzY3OSw3IEBAIHByb3RlY3RlZDoKICAgICBRQ29sb3IgbV9hY3RpdmVMaW5rQ29sb3I7
CiAKICAgICBET01TdHJpbmcgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0OworICAgIERPTVN0cmlu
ZyBtX3NlbGVjdGVkU3R5bGVzaGVldFNldDsKIAogICAgIGJvb2wgbV9sb2FkaW5nU2hlZXQ7CiAg
ICAgYm9vbCB2aXN1YWxseU9yZGVyZWQ7CkluZGV4OiBraHRtbC94bWwvZG9tX25vZGVpbXBsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBraHRtbC94bWwvZG9tX25vZGVpbXBsLmNwcAkocmV2aXNpb24gMTE5
OTQpCisrKyBraHRtbC94bWwvZG9tX25vZGVpbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NyArNDcsNyBAQAogCiAjaW5jbHVkZSAiZWNtYS9ranNfYmluZGluZy5oIgogI2luY2x1ZGUgImVj
bWEva2pzX3Byb3h5LmgiCi0jaW5jbHVkZSAia2h0bWx2aWV3LmgiCisjaW5jbHVkZSAiRnJhbWVW
aWV3LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKIAogLy8gRklYTUU6IFNob3VsZCBub3QgaGF2ZSB0
byBpbmNsdWRlIHRoaXMuICBDdXQgdGhlIEhUTUwgZGVwZW5kZW5jeSEKSW5kZXg6IGtodG1sL3ht
bC9kb21fZWxlbWVudGltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL3htbC9kb21fZWxlbWVu
dGltcGwuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1sL3htbC9kb21fZWxlbWVudGltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAieG1sL2RvbV9l
bGVtZW50aW1wbC5oIgogCiAjaW5jbHVkZSAiTWFjRnJhbWUuaCIKLSNpbmNsdWRlICJraHRtbHZp
ZXcuaCIKIAogI2luY2x1ZGUgImh0bWwvaHRtbHBhcnNlci5oIgogCkluZGV4OiBraHRtbC94bWwv
ZG9tX2RvY2ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL3htbC9kb21fZG9jaW1wbC5jcHAJ
KHJldmlzaW9uIDExOTk0KQorKysga2h0bWwveG1sL2RvbV9kb2NpbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTYsMTEgKzU2LDExIEBACiAjaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl9vYmpl
Y3QuaCIKICNpbmNsdWRlICJyZW5kZXJfYXJlbmEuaCIKIAotI2luY2x1ZGUgImtodG1sdmlldy5o
IgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkZyYW1lUHJpdmF0ZS5oIgogCiAj
aW5jbHVkZSA8a2dsb2JhbHNldHRpbmdzLmg+CiAjaW5jbHVkZSAia2h0bWxfc2V0dGluZ3MuaCIK
LSNpbmNsdWRlICJraHRtbHBhcnRfcC5oIgogCiAvLyBGSVhNRTogV2Ugd2FudCB0byBjdXQgdGhl
IHJlbWFpbmluZyBIVE1MIGRlcGVuZGVuY2llcyBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gaW5j
bHVkZSB0aGVzZSBmaWxlcy4KICNpbmNsdWRlICJodG1sL2h0bWxfZG9jdW1lbnRpbXBsLmgiCkBA
IC0xODM1LDcgKzE4MzUsNyBAQCB2b2lkIERvY3VtZW50SW1wbDo6cHJvY2Vzc0h0dHBFcXVpdihj
b25zCiAgICAgICAgIC8vIEZvciBtb3JlIGluZm8sIHNlZSB0aGUgdGVzdCBhdDoKICAgICAgICAg
Ly8gaHR0cDovL3d3dy5oaXhpZS5jaC90ZXN0cy9ldmlsL2Nzcy9pbXBvcnQvbWFpbi9wcmVmZXJy
ZWQuaHRtbAogICAgICAgICAvLyAtZHdoCi0gICAgICAgIGZyYW1lLT5kLT5tX3NoZWV0VXNlZCA9
IGNvbnRlbnQucXN0cmluZygpOworICAgICAgICBtX3NlbGVjdGVkU3R5bGVzaGVldFNldCA9IGNv
bnRlbnQ7CiAgICAgICAgIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldCA9IGNvbnRlbnQ7CiAgICAg
ICAgIHVwZGF0ZVN0eWxlU2VsZWN0b3IoKTsKICAgICB9CkBAIC0xOTg2LDE4ICsxOTg2LDE1IEBA
IERPTVN0cmluZyBEb2N1bWVudEltcGw6OnByZWZlcnJlZFN0eWxlc2gKIAogRE9NU3RyaW5nIERv
Y3VtZW50SW1wbDo6c2VsZWN0ZWRTdHlsZXNoZWV0U2V0KCkKIHsKLSAgcmV0dXJuIHZpZXcoKSA/
IHZpZXcoKS0+ZnJhbWUoKS0+ZC0+bV9zaGVldFVzZWQgOiBET01TdHJpbmcoKTsKKyAgcmV0dXJu
IG1fc2VsZWN0ZWRTdHlsZXNoZWV0U2V0OwogfQogCi12b2lkIAotRG9jdW1lbnRJbXBsOjpzZXRT
ZWxlY3RlZFN0eWxlc2hlZXRTZXQoY29uc3QgRE9NU3RyaW5nJiBhU3RyaW5nKQordm9pZCBEb2N1
bWVudEltcGw6OnNldFNlbGVjdGVkU3R5bGVzaGVldFNldChjb25zdCBET01TdHJpbmcmIGFTdHJp
bmcpCiB7Ci0gIGlmICh2aWV3KCkpIHsKLSAgICB2aWV3KCktPmZyYW1lKCktPmQtPm1fc2hlZXRV
c2VkID0gYVN0cmluZy5xc3RyaW5nKCk7Ci0gICAgdXBkYXRlU3R5bGVTZWxlY3RvcigpOwotICAg
IGlmIChyZW5kZXJlcigpKQotICAgICAgcmVuZGVyZXIoKS0+cmVwYWludCgpOwotICB9CisgIG1f
c2VsZWN0ZWRTdHlsZXNoZWV0U2V0ID0gYVN0cmluZzsKKyAgdXBkYXRlU3R5bGVTZWxlY3Rvcigp
OworICBpZiAocmVuZGVyZXIoKSkKKyAgICByZW5kZXJlcigpLT5yZXBhaW50KCk7CiB9CiAKIC8v
IFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuZXZlciBhIHRvcC1sZXZlbCBzdHlsZXNoZWV0IGhh
cyBmaW5pc2hlZCBsb2FkaW5nLgpAQCAtMjEyOSw3ICsyMTI2LDcgQEAgdm9pZCBEb2N1bWVudElt
cGw6OnJlY2FsY1N0eWxlU2VsZWN0b3IoKQogICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHNo
ZWV0LgogICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIHJlbCA9IGUtPmdldEF0dHJpYnV0ZShy
ZWxBdHRyKS5xc3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChlLT5oYXNMb2NhbE5h
bWUoc3R5bGVUYWcpIHx8ICFyZWwuY29udGFpbnMoImFsdGVybmF0ZSIpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0ID0gdmlldygpLT5mcmFtZSgpLT5k
LT5tX3NoZWV0VXNlZCA9IHRpdGxlOworICAgICAgICAgICAgICAgICAgICAgICAgbV9wcmVmZXJy
ZWRTdHlsZXNoZWV0U2V0ID0gbV9zZWxlY3RlZFN0eWxlc2hlZXRTZXQgPSB0aXRsZTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYg
KCFtX2F2YWlsYWJsZVNoZWV0cy5jb250YWlucyggdGl0bGUgKSApCkBAIC0yMTUxLDcgKzIxNDgs
NyBAQCB2b2lkIERvY3VtZW50SW1wbDo6cmVjYWxjU3R5bGVTZWxlY3RvcigpCiAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgIGlmICghdGl0bGUuaXNFbXB0eSgpICYmIG1fcHJlZmVycmVkU3R5
bGVzaGVldFNldC5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgbV9wcmVmZXJyZWRTdHlsZXNo
ZWV0U2V0ID0gdmlldygpLT5mcmFtZSgpLT5kLT5tX3NoZWV0VXNlZCA9IHRpdGxlOworICAgICAg
ICAgICAgICAgIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldCA9IG1fc2VsZWN0ZWRTdHlsZXNoZWV0
U2V0ID0gdGl0bGU7CiAKICAgICAgICAgICAgIGlmICghdGl0bGUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHRpdGxlICE9IG1fcHJlZmVycmVkU3R5bGVzaGVldFNldCkKSW5kZXg6
IGtodG1sL3htbC94bWxfdG9rZW5pemVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC94bWwveG1s
X3Rva2VuaXplci5jcHAJKHJldmlzaW9uIDExOTk0KQorKysga2h0bWwveG1sL3htbF90b2tlbml6
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiRG9jTG9h
ZGVyLmgiCiAjaW5jbHVkZSA8a3htbGNvcmUvSGFzaE1hcC5oPgogCi0jaW5jbHVkZSAia2h0bWx2
aWV3LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNs
dWRlIDxrZGVidWcuaD4KICNpbmNsdWRlIDxrbG9jYWxlLmg+CkluZGV4OiBraHRtbC9lZGl0aW5n
L2h0bWxlZGl0aW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lZGl0aW5nL2h0bWxlZGl0aW5n
LmNwcAkocmV2aXNpb24gMTE5OTQpCisrKyBraHRtbC9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgImh0bWxfaW1hZ2VpbXBs
LmgiCiAjaW5jbHVkZSAiaHRtbF9pbnRlcmNoYW5nZS5oIgogI2luY2x1ZGUgImh0bWxuYW1lcy5o
IgotI2luY2x1ZGUgImtodG1sdmlldy5oIgogI2luY2x1ZGUgInFjb2xvci5oIgogI2luY2x1ZGUg
InFwdHJsaXN0LmgiCiAjaW5jbHVkZSAicmVuZGVyX29iamVjdC5oIgpJbmRleDoga2h0bWwvZWRp
dGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9lZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1sL2VkaXRp
bmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDcg
QEAKICNpbmNsdWRlICJkb20vZG9tX25vZGUuaCIKICNpbmNsdWRlICJkb20vZG9tX3N0cmluZy5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAia2h0bWx2aWV3LmgiCisjaW5jbHVkZSAi
RnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuaCIKICNpbmNs
dWRlICJyZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmgiCiAjaW5jbHVkZSAiSW5saW5lVGV4dEJveC5o
IgpJbmRleDoga2h0bWwvaHRtbC9odG1sX2hlYWRpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRt
bC9odG1sL2h0bWxfaGVhZGltcGwuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1sL2h0bWwv
aHRtbF9oZWFkaW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNs
dWRlICJ4bWwvZG9tX3RleHRpbXBsLmgiCiAjaW5jbHVkZSAieG1sL0V2ZW50TmFtZXMuaCIKIAot
I2luY2x1ZGUgImtodG1sdmlldy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAia2pz
X3Byb3h5LmgiCiAKSW5kZXg6IGtodG1sL2h0bWwvaHRtbF9iYXNlaW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0ga2h0bWwvaHRtbC9odG1sX2Jhc2VpbXBsLmNwcAkocmV2aXNpb24gMTE5OTQpCisrKyBr
aHRtbC9odG1sL2h0bWxfYmFzZWltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3
IEBACiAKICNpbmNsdWRlICJodG1sL2h0bWxfZG9jdW1lbnRpbXBsLmgiCiAKLSNpbmNsdWRlICJr
aHRtbHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
CiAjaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl9mcmFtZXMuaCIKSW5kZXg6IGtodG1sL2h0bWwv
aHRtbF9pbWFnZWltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2h0bWwvaHRtbF9pbWFnZWlt
cGwuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiaHRtbC9odG1sX2Rv
Y3VtZW50aW1wbC5oIgogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudEltcGwuaCIKIAotI2luY2x1
ZGUgImtodG1sdmlldy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAKICNpbmNsdWRlIDxrZGVidWcu
aD4KSW5kZXg6IGtodG1sL2h0bWwvaHRtbF9lbGVtZW50aW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2h0bWwvaHRtbC9odG1sX2VsZW1lbnRpbXBsLmNwcAkocmV2aXNpb24gMTE5OTQpCisrKyBraHRt
bC9odG1sL2h0bWxfZWxlbWVudGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2
IEBACiAjaW5jbHVkZSA8a3htbGNvcmUvSGFzaFNldC5oPgogI2luY2x1ZGUgImVkaXRpbmcvdmlz
aWJsZV90ZXh0LmgiCiAKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogCiAjaW5jbHVkZSAiZG9tL2RvbV9leGNlcHRpb24uaCIKSW5kZXg6IGtodG1sL2h0bWwvaHRt
bHBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvaHRtbC9odG1scGFyc2VyLmNwcAkocmV2
aXNpb24gMTE5OTQpCisrKyBraHRtbC9odG1sL2h0bWxwYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC01MSw3ICs1MSw3IEBACiAjaW5jbHVkZSAieG1sL2RvbV9ub2RlaW1wbC5oIgogI2luY2x1
ZGUgPGt4bWxjb3JlL0hhc2hTZXQuaD4KICNpbmNsdWRlICJodG1sL2h0bWx0b2tlbml6ZXIuaCIK
LSNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRl
ICJGcmFtZS5oIgogI2luY2x1ZGUgImNzc3Byb3BlcnRpZXMuaCIKICNpbmNsdWRlICJjc3N2YWx1
ZXMuaCIKSW5kZXg6IGtodG1sL2h0bWwvaHRtbF9pbmxpbmVpbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBraHRtbC9odG1sL2h0bWxfaW5saW5laW1wbC5jcHAJKHJldmlzaW9uIDExOTk0KQorKysga2h0
bWwvaHRtbC9odG1sX2lubGluZWltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiaHRtbC9odG1sX2RvY3VtZW50aW1wbC5oIgogI2luY2x1ZGUgImh0bWwv
aHRtbF9pbWFnZWltcGwuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgImtodG1sdmll
dy5oIgogI2luY2x1ZGUgInJlbmRlcmluZy9yZW5kZXJfYnIuaCIKICNpbmNsdWRlICJyZW5kZXJp
bmcvcmVuZGVyX2Zsb3cuaCIKICNpbmNsdWRlICJyZW5kZXJpbmcvcmVuZGVyX2ltYWdlLmgiCkBA
IC0yMDMsNyArMjAyLDcgQEAgdm9pZCBIVE1MQW5jaG9yRWxlbWVudEltcGw6OmRlZmF1bHRFdmVu
dAogICAgICAgICAgICAgICAgIHN0YXRlIHw9IFF0OjpDb250cm9sQnV0dG9uOwogCSAgICB9CiAK
LSAgICAgICAgICAgIGlmIChnZXREb2N1bWVudCgpICYmIGdldERvY3VtZW50KCktPnZpZXcoKSAm
JiBnZXREb2N1bWVudCgpLT5mcmFtZSgpKSB7CisgICAgICAgICAgICBpZiAoZ2V0RG9jdW1lbnQo
KSAmJiBnZXREb2N1bWVudCgpLT5mcmFtZSgpKSB7CiAgICAgICAgICAgICAgICAgZ2V0RG9jdW1l
bnQoKS0+ZnJhbWUoKS0+CiAgICAgICAgICAgICAgICAgICAgIHVybFNlbGVjdGVkKCB1cmwsIGJ1
dHRvbiwgc3RhdGUsIHV0YXJnZXQgKTsKICAgICAgICAgICAgIH0KSW5kZXg6IGtodG1sL2h0bWwv
aHRtbHRva2VuaXplci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvaHRtbC9odG1sdG9rZW5pemVy
LmNwcAkocmV2aXNpb24gMTE5OTQpCisrKyBraHRtbC9odG1sL2h0bWx0b2tlbml6ZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MSw3ICs0MSw3IEBACiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAj
aW5jbHVkZSAiQ2FjaGVkU2NyaXB0LmgiCiAKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNs
dWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgInhtbC9kb21f
ZG9jaW1wbC5oIgogI2luY2x1ZGUgInhtbC9FdmVudE5hbWVzLmgiCkluZGV4OiBraHRtbC9odG1s
L2h0bWxfb2JqZWN0aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvaHRtbC9odG1sX29iamVj
dGltcGwuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1sL2h0bWwvaHRtbF9vYmplY3RpbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogCiAjaW5jbHVkZSAiRnJhbWUu
aCIKICNpbmNsdWRlICJkb20vZG9tX3N0cmluZy5oIgotI2luY2x1ZGUgImtodG1sdmlldy5oIgog
I2luY2x1ZGUgPHFzdHJpbmcuaD4KICNpbmNsdWRlIDxxbWFwLmg+CiAjaW5jbHVkZSA8a2RlYnVn
Lmg+CkluZGV4OiBraHRtbC9odG1sL2h0bWxfY2FudmFzaW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a2h0bWwvaHRtbC9odG1sX2NhbnZhc2ltcGwuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1s
L2h0bWwvaHRtbF9jYW52YXNpbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsOCArMjcsNiBA
QAogI2luY2x1ZGUgImh0bWwvaHRtbF9jYW52YXNpbXBsLmgiCiAjaW5jbHVkZSAiaHRtbC9odG1s
X2RvY3VtZW50aW1wbC5oIgogCi0jaW5jbHVkZSAia2h0bWx2aWV3LmgiCi0KICNpbmNsdWRlIDxr
ZGVidWcuaD4KIAogI2luY2x1ZGUgInJlbmRlcmluZy9yZW5kZXJfY2FudmFzaW1hZ2UuaCIKSW5k
ZXg6IGtodG1sL2h0bWwvaHRtbF9kb2N1bWVudGltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1s
L2h0bWwvaHRtbF9kb2N1bWVudGltcGwuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1sL2h0
bWwvaHRtbF9kb2N1bWVudGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Miw5ICs2Miw3IEBA
CiAjaW5jbHVkZSAiaHRtbC9odG1sX2ltYWdlaW1wbC5oIgogI2luY2x1ZGUgImh0bWxmYWN0b3J5
LmgiCiAKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1
ZGUgImtodG1scGFydF9wLmgiCiAjaW5jbHVkZSAia2h0bWxfc2V0dGluZ3MuaCIKIAogI2luY2x1
ZGUgInhtbC94bWxfdG9rZW5pemVyLmgiCkluZGV4OiBraHRtbC9odG1sL2h0bWxfdGFibGVpbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9odG1sL2h0bWxfdGFibGVpbXBsLmNwcAkocmV2aXNp
b24gMTE5OTQpCisrKyBraHRtbC9odG1sL2h0bWxfdGFibGVpbXBsLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsOCArMzEsNiBAQAogI2luY2x1ZGUgImRvbS9kb21fZXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiZG9tL2RvbV9ub2RlLmgiCiAKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKLQogI2luY2x1
ZGUgImNzcy9jc3NzdHlsZXNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiY3NzcHJvcGVydGllcy5oIgog
I2luY2x1ZGUgImNzc3ZhbHVlcy5oIgpJbmRleDoga2h0bWwvZWNtYS94bWxodHRwcmVxdWVzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS94bWxodHRwcmVxdWVzdC5jcHAJKHJldmlzaW9u
IDExOTk0KQorKysga2h0bWwvZWNtYS94bWxodHRwcmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJ4bWwvRXZlbnROYW1lcy5oIgogCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKIAogI2luY2x1ZGUgPGtkZWJ1Zy5o
PgogI2luY2x1ZGUgPGtpby9qb2IuaD4KSW5kZXg6IGtodG1sL2VjbWEva2pzX3RyYXZlcnNhbC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0ga2h0bWwvZWNtYS9ranNfdHJhdmVyc2FsLmNwcAkocmV2aXNpb24g
MTE5OTQpCisrKyBraHRtbC9lY21hL2tqc190cmF2ZXJzYWwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNCw3ICsyNCw2IEBACiAjaW5jbHVkZSAia2pzX3Byb3h5LmgiCiAjaW5jbHVkZSA8eG1sL2Rv
bV9ub2RlaW1wbC5oPgogI2luY2x1ZGUgPHhtbC9kb21fZG9jaW1wbC5oPgotI2luY2x1ZGUgPGto
dG1sdmlldy5oPgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSA8a2RlYnVnLmg+CiAjaW5j
bHVkZSA8a2pzL3Byb3RlY3QuaD4KSW5kZXg6IGtodG1sL2VjbWEva2pzX2h0bWwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtodG1sL2VjbWEva2pzX2h0bWwuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGto
dG1sL2VjbWEva2pzX2h0bWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw3IEBACiAj
aW5jbHVkZSAiSFRNTE9wdGlvbnNDb2xsZWN0aW9uSW1wbC5oIgogCiAjaW5jbHVkZSAiRnJhbWUu
aCIKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKIAogI2lu
Y2x1ZGUgImtqc19jc3MuaCIKICNpbmNsdWRlICJranNfd2luZG93LmgiCkluZGV4OiBraHRtbC9l
Y21hL2tqc193aW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL2VjbWEva2pzX3dpbmRvdy5j
cHAJKHJldmlzaW9uIDExOTk0KQorKysga2h0bWwvZWNtYS9ranNfd2luZG93LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiZG9tcGFyc2VyLmgi
CiAKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJGcmFtZS5oIgogI2luY2x1ZGUgImtodG1sX2V4dC5oIgogI2luY2x1ZGUgImRvbS9kb21f
c3RyaW5nLmgiCkluZGV4OiBraHRtbC9lY21hL2tqc19kb20uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGto
dG1sL2VjbWEva2pzX2RvbS5jcHAJKHJldmlzaW9uIDExOTk0KQorKysga2h0bWwvZWNtYS9ranNf
ZG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNyArMjMsNiBAQAogCiAjaW5jbHVkZSA8a2Rl
YnVnLmg+CiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlIDxraHRtbHZpZXcuaD4KICNpbmNs
dWRlICJ4bWwvZG9tMl9ldmVudHNpbXBsLmgiCiAjaW5jbHVkZSAieG1sL2RvbTJfdmlld3NpbXBs
LmgiCiAjaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl9jYW52YXMuaCIKQEAgLTQ0LDcgKzQzLDYg
QEAKICNpbmNsdWRlICJranNfdmlld3MuaCIKICNpbmNsdWRlICJranNfd2luZG93LmgiCiAjaW5j
bHVkZSAiZG9tL2RvbV9leGNlcHRpb24uaCIKLSNpbmNsdWRlICJraHRtbHBhcnRfcC5oIgogCiAj
aW5jbHVkZSAiaHRtbF9vYmplY3RpbXBsLmgiCiAKQEAgLTk3Nyw3ICs5NzUsNyBAQCBKU1ZhbHVl
ICpET01Eb2N1bWVudDo6Z2V0VmFsdWVQcm9wZXJ0eShFCiAgICAgcmV0dXJuIGpzU3RyaW5nT3JO
dWxsKGRvYy5zZWxlY3RlZFN0eWxlc2hlZXRTZXQoKSk7CiAgIGNhc2UgUmVhZHlTdGF0ZToKICAg
ICBpZiAoRnJhbWUgKmZyYW1lID0gZG9jLmZyYW1lKCkpIHsKLSAgICAgIGlmIChmcmFtZS0+ZC0+
bV9iQ29tcGxldGUpIHJldHVybiBqc1N0cmluZygiY29tcGxldGUiKTsKKyAgICAgIGlmIChmcmFt
ZS0+aXNDb21wbGV0ZSgpKSByZXR1cm4ganNTdHJpbmcoImNvbXBsZXRlIik7CiAgICAgICBpZiAo
ZG9jLnBhcnNpbmcoKSkgcmV0dXJuIGpzU3RyaW5nKCJsb2FkaW5nIik7CiAgICAgICByZXR1cm4g
anNTdHJpbmcoImxvYWRlZCIpOwogICAgICAgLy8gV2hhdCBkb2VzIHRoZSBpbnRlcmFjdGl2ZSB2
YWx1ZSBtZWFuID8KQEAgLTE2NTMsOCArMTY1MSw4IEBAIEpTVmFsdWUgKmdldERPTURvY3VtZW50
Tm9kZShFeGVjU3RhdGUgKmUKIAogICAvLyBNYWtlIHN1cmUgdGhlIGRvY3VtZW50IGlzIGtlcHQg
YXJvdW5kIGJ5IHRoZSB3aW5kb3cgb2JqZWN0LCBhbmQgd29ya3MgcmlnaHQgd2l0aCB0aGUKICAg
Ly8gYmFjay9mb3J3YXJkIGNhY2hlLgotICBpZiAobi0+dmlldygpKQotICAgIFdpbmRvdzo6cmV0
cmlldmVXaW5kb3cobi0+dmlldygpLT5mcmFtZSgpKS0+cHV0RGlyZWN0KCJkb2N1bWVudCIsIHJl
dCwgRG9udERlbGV0ZXxSZWFkT25seSk7CisgIGlmIChuLT5mcmFtZSgpKQorICAgIFdpbmRvdzo6
cmV0cmlldmVXaW5kb3cobi0+ZnJhbWUoKSktPnB1dERpcmVjdCgiZG9jdW1lbnQiLCByZXQsIERv
bnREZWxldGV8UmVhZE9ubHkpOwogCiAgIGludGVycC0+cHV0RE9NT2JqZWN0KG4sIHJldCk7CiAK
SW5kZXg6IGtodG1sL3hzbC94c2x0X3Byb2Nlc3NvcmltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGto
dG1sL3hzbC94c2x0X3Byb2Nlc3NvcmltcGwuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1s
L3hzbC94c2x0X3Byb2Nlc3NvcmltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw3ICszMiw3
IEBACiAjaW5jbHVkZSAiQ2FjaGUuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRl
ICJtYXJrdXAuaCIKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIktXUUxvYWRlci5oIgogCkluZGV4OiBr
aHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvY3NzL2Nz
c3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1sL2Nzcy9jc3NzdHls
ZXNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsNiBAQAogI2luY2x1ZGUg
ImRvbS9jc3NfcnVsZS5oIgogI2luY2x1ZGUgImRvbS9jc3NfdmFsdWUuaCIKICNpbmNsdWRlICJr
aHRtbF9mYWN0b3J5LmgiCi0jaW5jbHVkZSAia2h0bWxwYXJ0X3AuaCIKIAogI2luY2x1ZGUgImNz
c3Byb3BlcnRpZXMuaCIKICNpbmNsdWRlICJjc3N2YWx1ZXMuaCIKQEAgLTQ5LDcgKzQ4LDcgQEAK
ICNpbmNsdWRlICJyZW5kZXJpbmcvZm9udC5oIgogI2luY2x1ZGUgInJlbmRlcl90aGVtZS5oIgog
Ci0jaW5jbHVkZSAia2h0bWx2aWV3LmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKIAogI2luY2x1ZGUgPGtzdGFuZGFyZGRpcnMuaD4KSW5kZXg6IGtodG1sL3Jl
bmRlcmluZy9iaWRpLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9yZW5kZXJpbmcvYmlkaS5jcHAJ
KHJldmlzaW9uIDExOTk0KQorKysga2h0bWwvcmVuZGVyaW5nL2JpZGkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiYmlk
aS5oIgogI2luY2x1ZGUgImJyZWFrX2xpbmVzLmgiCi0jaW5jbHVkZSAia2h0bWx2aWV3LmgiCisj
aW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSA8a3htbGNvcmUvQWx3YXlzSW5saW5lLmg+
CiAjaW5jbHVkZSAicmVuZGVyX2FyZW5hLmgiCiAjaW5jbHVkZSAicmVuZGVyX2Jsb2NrLmgiCklu
ZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2xpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1s
L3JlbmRlcmluZy9yZW5kZXJfbGluZS5jcHAJKHJldmlzaW9uIDExOTk0KQorKysga2h0bWwvcmVu
ZGVyaW5nL3JlbmRlcl9saW5lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsNiBAQAog
I2luY2x1ZGUgInJlbmRlcl9hcmVuYS5oIgogI2luY2x1ZGUgInJlbmRlcl9saW5lLmgiCiAKLSNp
bmNsdWRlICJraHRtbHZpZXcuaCIKLQogdXNpbmcgbmFtZXNwYWNlIERPTTsKIAogI2lmbmRlZiBO
REVCVUcKSW5kZXg6IGtodG1sL3JlbmRlcmluZy9yZW5kZXJfbGF5ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfbGF5ZXIuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysr
IGtodG1sL3JlbmRlcmluZy9yZW5kZXJfbGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Niw3
ICs0Niw3IEBACiAKICNpbmNsdWRlIDxrZGVidWcuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KLSNp
bmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJy
ZW5kZXJfY2FudmFzLmgiCiAjaW5jbHVkZSAicmVuZGVyX2FyZW5hLmgiCiAjaW5jbHVkZSAicmVu
ZGVyX3RoZW1lLmgiCkluZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2ZyYW1lcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0ga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9mcmFtZXMuY3BwCShyZXZpc2lvbiAx
MTk5NCkKKysrIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfZnJhbWVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgInhtbC9kb21fZG9jaW1wbC5oIgogI2luY2x1
ZGUgInhtbC9kb21fdGV4dGltcGwuaCIKICNpbmNsdWRlICJ4bWwvRXZlbnROYW1lcy5oIgotI2lu
Y2x1ZGUgImtodG1sdmlldy5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZy
YW1lLmgiCiAjaW5jbHVkZSAicmVuZGVyX2FyZW5hLmgiCiAKSW5kZXg6IGtodG1sL3JlbmRlcmlu
Zy9yZW5kZXJfdGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJf
dGFibGUuY3BwCShyZXZpc2lvbiAxMTk5NCkKKysrIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfdGFi
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw4ICs0MSw2IEBACiAjaW5jbHVkZSA8a2RlYnVn
Lmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKLQogdXNp
bmcgbmFtZXNwYWNlIGtodG1sOwogdXNpbmcgbmFtZXNwYWNlIERPTTsKIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CkluZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2JveC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0ga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwCShyZXZpc2lvbiAxMTk5NCkK
KysrIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfYm94LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDYs
NyArNDYsNyBAQAogCiAjaW5jbHVkZSAicmVuZGVyX2xpbmUuaCIKIAotI2luY2x1ZGUgPGtodG1s
dmlldy5oPgorI2luY2x1ZGUgPEZyYW1lVmlldy5oPgogI2luY2x1ZGUgPGtkZWJ1Zy5oPgogI2lu
Y2x1ZGUgPGFzc2VydC5oPgogCkluZGV4OiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2Zsb3cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfZmxvdy5jcHAJKHJldmlzaW9u
IDExOTk0KQorKysga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9mbG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzksOCArMzksNiBAQAogI2luY2x1ZGUgInJlbmRlcl9saW5lLmgiCiAjaW5jbHVkZSAi
aHRtbG5hbWVzLmgiCiAKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKLQogdXNpbmcgbmFtZXNwYWNl
IERPTTsKIHVzaW5nIG5hbWVzcGFjZSBET006OkhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBr
aHRtbDsKSW5kZXg6IGtodG1sL3JlbmRlcmluZy9yZW5kZXJfdGhlbWVfbWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfdGhlbWVfbWFjLm1tCShyZXZpc2lvbiAxMTk5
NCkKKysrIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfdGhlbWVfbWFjLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw3ICsyNyw3IEBACiAjaW1wb3J0ICJyZW5kZXJfc3R5bGUuaCIKICNpbXBvcnQgInJl
bmRlcl9jYW52YXMuaCIKICNpbXBvcnQgImRvbV9lbGVtZW50aW1wbC5oIgotI2ltcG9ydCAia2h0
bWx2aWV3LmgiCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKIAogLy8gVGhlIG1ldGhvZHMgaW4gdGhp
cyBmaWxlIGFyZSBzcGVjaWZpYyB0byB0aGUgTWFjIE9TIFggcGxhdGZvcm0uCiAKSW5kZXg6IGto
dG1sL3JlbmRlcmluZy9yZW5kZXJfZm9ybS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvcmVuZGVy
aW5nL3JlbmRlcl9mb3JtLmNwcAkocmV2aXNpb24gMTE5OTQpCisrKyBraHRtbC9yZW5kZXJpbmcv
cmVuZGVyX2Zvcm0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVk
ZSAicmVuZGVyaW5nL3JlbmRlcl9mb3JtLmgiCiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAKLSNpbmNs
dWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJraHRt
bF9leHQuaCIKICNpbmNsdWRlICJ4bWwvZG9tX2RvY2ltcGwuaCIKICNpbmNsdWRlICJ4bWwvRXZl
bnROYW1lcy5oIgpJbmRleDoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfb2JqZWN0LmNwcAkocmV2aXNpb24gMTE5
OTQpCisrKyBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX29iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlIDxrZGVidWcuaD4KICNpbmNsdWRlIDxxcGFpbnRl
ci5oPgogI2luY2x1ZGUgPHFwZW4uaD4KLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRl
ICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgInJlbmRlcl9hcmVu
YS5oIgogI2luY2x1ZGUgInJlbmRlcl9pbmxpbmUuaCIKSW5kZXg6IGtodG1sL3JlbmRlcmluZy9y
ZW5kZXJfY2FudmFzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2Nh
bnZhcy5jcHAJKHJldmlzaW9uIDExOTk0KQorKysga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9jYW52
YXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAicmVuZGVy
X2xheWVyLmgiCiAjaW5jbHVkZSAieG1sL2RvbV9kb2NpbXBsLmgiCiAKLSNpbmNsdWRlICJraHRt
bHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlIDxrZGVidWcuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIGtodG1sOwpJbmRleDoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9yZXBs
YWNlZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0ga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9yZXBsYWNlZC5j
cHAJKHJldmlzaW9uIDExOTk0KQorKysga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9yZXBsYWNlZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxxYXBwbGljYXRp
b24uaD4KIAogI2luY2x1ZGUgImtodG1sX2V4dC5oIgotI2luY2x1ZGUgImtodG1sdmlldy5oIgor
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgInhtbC9kb20yX2V2ZW50c2ltcGwuaCIK
ICNpbmNsdWRlICJ4bWwvZG9tX2RvY2ltcGwuaCIgLy8gIyMjIHJlbW92ZSBkZXBlbmRlbmN5CiAj
aW5jbHVkZSAieG1sL2RvbV9wb3NpdGlvbi5oIgpJbmRleDoga2h0bWwvcmVuZGVyaW5nL3JlbmRl
cl9hcHBsZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfYXBwbGV0
LmNwcAkocmV2aXNpb24gMTE5OTQpCisrKyBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2FwcGxldC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJyZW5kZXJpbmcv
cmVuZGVyX2FwcGxldC5oIgogI2luY2x1ZGUgInJlbmRlcmluZy9yZW5kZXJfY2FudmFzLmgiCiAj
aW5jbHVkZSAieG1sL2RvbV9kb2NpbXBsLmgiCi0jaW5jbHVkZSAia2h0bWx2aWV3LmgiCiAjaW5j
bHVkZSAiRnJhbWUuaCIKIAogI2lmbmRlZiBRX1dTX1FXUyAvLyBXZSBkb24ndCBoYXZlIEphdmEg
aW4gUXQgRW1iZWRkZWQKSW5kZXg6IGtodG1sL3JlbmRlcmluZy9yZW5kZXJfYmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfYmxvY2suY3BwCShyZXZpc2lvbiAx
MTk5NCkKKysrIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfYmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw3ICszNiw3IEBACiAjaW5jbHVkZSAicmVuZGVyX3RoZW1lLmgiCiAjaW5jbHVkZSAi
aHRtbG5hbWVzLmgiCiAKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZp
ZXcuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogCiB1c2luZyBuYW1lc3BhY2UgRE9NOwpJbmRleDog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTE5OTQpCisrKyBXZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc3LDkgKzc3LDcgQEAK
IAkJNjVBQzc5QUEwODMxRjAwNjAwOTM4NUNFIC8qIGFwcGx5X3N0eWxlX2NvbW1hbmQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QUM3OUE4MDgzMUYw
MDYwMDkzODVDRSAvKiBhcHBseV9zdHlsZV9jb21tYW5kLmggKi87IH07CiAJCTY1QkYwMjJFMDk3
NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIyOTA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuY3BwICov
OyB9OwogCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5
NiAvKiBGcmFtZS5oICovOyB9OwotCQk2NUJGMDIzMDA5NzQ4MTYzMDBDNDMxOTYgLyoga2h0bWxw
YXJ0X3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1
QkYwMjJCMDk3NDgxNjMwMEM0MzE5NiAvKiBraHRtbHBhcnRfcC5oICovOyB9OwotCQk2NUJGMDIz
MTA5NzQ4MTYzMDBDNDMxOTYgLyoga2h0bWx2aWV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QkYwMjJDMDk3NDgxNjMwMEM0MzE5NiAvKiBraHRt
bHZpZXcuY3BwICovOyB9OwotCQk2NUJGMDIzMjA5NzQ4MTYzMDBDNDMxOTYgLyoga2h0bWx2aWV3
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJGMDIy
RDA5NzQ4MTYzMDBDNDMxOTYgLyoga2h0bWx2aWV3LmggKi87IH07CisJCTY1QkYwMjMwMDk3NDgx
NjMwMEM0MzE5NiAvKiBGcmFtZVByaXZhdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1QkYwMjJCMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZVByaXZh
dGUuaCAqLzsgfTsKIAkJNjVCRjAyM0YwOTc0ODE5MDAwQzQzMTk2IC8qIEtXUUtIVE1MUGFydEJy
b3dzZXJFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1QkYwMjM2MDk3NDgxOTAwMEM0MzE5NiAvKiBLV1FLSFRNTFBhcnRCcm93c2VyRXh0
ZW5zaW9uLmggKi87IH07CiAJCTY1QkYwMjQwMDk3NDgxOTAwMEM0MzE5NiAvKiBLV1FLSFRNTFBh
cnRCcm93c2VyRXh0ZW5zaW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjVCRjAyMzcwOTc0ODE5MDAwQzQzMTk2IC8qIEtXUUtIVE1MUGFydEJyb3dz
ZXJFeHRlbnNpb24ubW0gKi87IH07CiAJCTY1QkYwMjQxMDk3NDgxOTAwMEM0MzE5NiAvKiBLV1FL
SFRNTFZpZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjVCRjAyMzgwOTc0ODE5MDAwQzQzMTk2IC8qIEtXUUtIVE1MVmlldy5jcHAgKi87IH07CkBA
IC05MCw2ICs4OCw4IEBACiAJCTY1QkYwMjQ2MDk3NDgxOTAwMEM0MzE5NiAvKiBXZWJDb3JlQnJp
ZGdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUJG
MDIzRDA5NzQ4MTkwMDBDNDMxOTYgLyogV2ViQ29yZUJyaWRnZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTY1QkYwMjQ3MDk3NDgxOTAwMEM0MzE5
NiAvKiBXZWJDb3JlQnJpZGdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNjVCRjAyM0UwOTc0ODE5MDAwQzQzMTk2IC8qIFdlYkNvcmVCcmlkZ2UubW0g
Ki87IH07CiAJCTY1Qzk3QUYzMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1Qzk3QUYyMDhFQTkwODgwMEFD
RDI3MyAvKiBjb25maWcuaCAqLzsgfTsKKwkJNjVDQkZFRjkwOTc0RjYwNzAwMURBQzI1IC8qIEZy
YW1lVmlldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLzsgfTsKKwkJNjVD
QkZFRkEwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZy
YW1lVmlldy5oICovOyB9OwogCQk2NURDMTZDNDA4MzFERDZGMDAyMjc0NEUgLyogY29tcG9zaXRl
X2VkaXRfY29tbWFuZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA2NURDMTZDMjA4MzFERDZGMDAyMjc0NEUgLyogY29tcG9zaXRlX2VkaXRfY29tbWFu
ZC5jcHAgKi87IH07CiAJCTY1REMxNkM1MDgzMURENkYwMDIyNzQ0RSAvKiBjb21wb3NpdGVfZWRp
dF9jb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA2NURDMTZDMzA4MzFERDZGMDAyMjc0NEUgLyogY29tcG9zaXRlX2VkaXRfY29tbWFuZC5oICov
OyB9OwogCQk3RTZGRUVEODA4OTg1ODIzMDBDNDRDM0YgLyogV2ViQ29yZVNjcmlwdERlYnVnZ2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3RTZGRUVE
NjA4OTg1ODIzMDBDNDRDM0YgLyogV2ViQ29yZVNjcmlwdERlYnVnZ2VyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3NzQsOSArMTc3NCw3IEBA
CiAJCTY1QUM3OUE4MDgzMUYwMDYwMDkzODVDRSAvKiBhcHBseV9zdHlsZV9jb21tYW5kLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGFwcGx5X3N0
eWxlX2NvbW1hbmQuaDsgcGF0aCA9IGVkaXRpbmcvYXBwbHlfc3R5bGVfY29tbWFuZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVC
RjAyMjkwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBGcmFtZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRnJhbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNjVC
RjAyMkIwOTc0ODE2MzAwQzQzMTk2IC8qIGtodG1scGFydF9wLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBraHRtbHBhcnRfcC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQk2NUJGMDIyQzA5NzQ4MTYzMDBDNDMxOTYgLyoga2h0bWx2aWV3LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBraHRtbHZpZXcuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQk2NUJGMDIyRDA5NzQ4MTYzMDBDNDMxOTYgLyoga2h0bWx2aWV3Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBraHRtbHZpZXcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVCRjAyMkIwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lUHJp
dmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVQcml2YXRlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1QkYwMjM2MDk3NDgxOTAwMEM0MzE5NiAv
KiBLV1FLSFRNTFBhcnRCcm93c2VyRXh0ZW5zaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBLV1FLSFRNTFBhcnRCcm93c2VyRXh0ZW5zaW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTY1QkYwMjM3MDk3NDgxOTAwMEM0MzE5NiAvKiBLV1FLSFRNTFBhcnRC
cm93c2VyRXh0ZW5zaW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEtXUUtIVE1MUGFydEJyb3dzZXJFeHRlbnNpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTY1QkYwMjM4MDk3NDgxOTAwMEM0MzE5NiAvKiBLV1FLSFRNTFZpZXcuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtXUUtIVE1MVmlldy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzg3LDYgKzE3ODUsOCBAQAogCQk2NUJGMDIz
RDA5NzQ4MTkwMDBDNDMxOTYgLyogV2ViQ29yZUJyaWRnZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViQ29yZUJyaWRnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk2NUJGMDIzRTA5NzQ4MTkwMDBDNDMxOTYgLyogV2ViQ29yZUJyaWRnZS5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlQnJpZGdlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NUM5N0FGMjA4RUE5MDg4MDBBQ0QyNzMgLyogY29u
ZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IGNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJz
ID0gMDsgfTsKKwkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRnJhbWVWaWV3LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1l
Vmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRnJhbWVWaWV3Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1REMxNkMyMDgzMURENkYwMDIyNzQ0RSAvKiBj
b21wb3NpdGVfZWRpdF9jb21tYW5kLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGNvbXBvc2l0ZV9lZGl0X2NvbW1hbmQuY3BwOyBwYXRo
ID0gZWRpdGluZy9jb21wb3NpdGVfZWRpdF9jb21tYW5kLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTY1REMxNkMzMDgzMURENkYw
MDIyNzQ0RSAvKiBjb21wb3NpdGVfZWRpdF9jb21tYW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IGNvbXBvc2l0ZV9lZGl0X2NvbW1hbmQuaDsg
cGF0aCA9IGVkaXRpbmcvY29tcG9zaXRlX2VkaXRfY29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNjVGODA2OTcwNTREOUY4
NjAwOEJGNzc2IC8qIEtXUUV4Y2VwdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBLV1FFeGNlcHRpb25zLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTI5MjMs
OSArMjkyMyw5IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQk2NUJGMDIyOTA5NzQ4MTYzMDBDNDMx
OTYgLyogRnJhbWUuY3BwICovLAogCQkJCTY1QkYwMjJBMDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFt
ZS5oICovLAotCQkJCTY1QkYwMjJCMDk3NDgxNjMwMEM0MzE5NiAvKiBraHRtbHBhcnRfcC5oICov
LAotCQkJCTY1QkYwMjJDMDk3NDgxNjMwMEM0MzE5NiAvKiBraHRtbHZpZXcuY3BwICovLAotCQkJ
CTY1QkYwMjJEMDk3NDgxNjMwMEM0MzE5NiAvKiBraHRtbHZpZXcuaCAqLywKKwkJCQk2NUJGMDIy
QjA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWVQcml2YXRlLmggKi8sCisJCQkJNjVDQkZFRjcwOTc0
RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCisJCQkJNjVDQkZFRjgwOTc0RjYwNzAw
MURBQzI1IC8qIEZyYW1lVmlldy5oICovLAogCQkJKTsKIAkJCXBhdGggPSBwYWdlOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTQ4NzAsMTIgKzQ4NzAsMTIgQEAKIAkJCQlBODEzNjlF
NDA5NzM3NEY2MDBENzQ0NjMgLyogSFRNTEtleWdlbkVsZW1lbnRJbXBsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlBODEzNkQzODA5NzNBOEU3MDBENzQ0NjMgLyogRm9ybURhdGFMaXN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NUJGMDIyRjA5NzQ4MTYzMDBDNDMxOTYgLyogRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAotCQkJCTY1QkYwMjMwMDk3NDgxNjMwMEM0MzE5NiAvKiBraHRtbHBhcnRfcC5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJNjVCRjAyMzIwOTc0ODE2MzAwQzQzMTk2IC8qIGtodG1sdmlldy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNjVCRjAyMzAwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lUHJp
dmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVCRjAyM0YwOTc0ODE5MDAwQzQzMTk2IC8qIEtX
UUtIVE1MUGFydEJyb3dzZXJFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1QkYwMjQy
MDk3NDgxOTAwMEM0MzE5NiAvKiBLV1FLUGFydHNCcm93c2VyRXh0ZW5zaW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2NUJGMDI0NDA5NzQ4MTkwMDBDNDMxOTYgLyogTWFjRnJhbWUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTY1QkYwMjQ2MDk3NDgxOTAwMEM0MzE5NiAvKiBXZWJDb3JlQnJpZGdlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk2NUNCRkVGQTA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTY3NDIsMTIgKzY3NDIsMTIgQEAKIAkJCQlBODEzNjlFNTA5
NzM3NEY2MDBENzQ0NjMgLyogSFRNTEtleWdlbkVsZW1lbnRJbXBsLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUE4MTM2RDM5MDk3M0E4RTcwMEQ3NDQ2MyAvKiBGb3JtRGF0YUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNjVCRjAyMkUwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmNwcCBpbiBT
b3VyY2VzICovLAotCQkJCTY1QkYwMjMxMDk3NDgxNjMwMEM0MzE5NiAvKiBraHRtbHZpZXcuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNjVCRjAyNDAwOTc0ODE5MDAwQzQzMTk2IC8qIEtXUUtIVE1M
UGFydEJyb3dzZXJFeHRlbnNpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk2NUJGMDI0MTA5NzQ4
MTkwMDBDNDMxOTYgLyogS1dRS0hUTUxWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1QkYw
MjQzMDk3NDgxOTAwMEM0MzE5NiAvKiBLV1FLUGFydHNCcm93c2VySW50ZXJmYWNlLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNjVCRjAyNDUwOTc0ODE5MDAwQzQzMTk2IC8qIE1hY0ZyYW1lLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNjVCRjAyNDcwOTc0ODE5MDAwQzQzMTk2IC8qIFdlYkNvcmVCcmlk
Z2UubW0gaW4gU291cmNlcyAqLywKKwkJCQk2NUNCRkVGOTA5NzRGNjA3MDAxREFDMjUgLyogRnJh
bWVWaWV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IENoYW5nZUxvZwkocmV2aXNpb24gMTE5OTUpCisrKyBDaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSw5MSBAQAorMjAwNi0wMS0xMSAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBw
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IC0gcmVuYW1lZCBLSFRNTFBhcnRQcml2YXRlIHRvIEZyYW1lUHJpdmF0ZSBhbmQgS0hUTUxWaWV3
IHRvIEZyYW1lVmlldworICAgICAgICBodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hv
d19idWcuY2dpP2lkPTY0OTAKKworICAgICAgICAoYWxzbyBjb3JyZXNwb25kaW5nIGhlYWRlciBy
ZW5hbWVzLCByZW1vdmUgaGVhZGVycyB3aGVyZSBub3QKKyAgICAgICAgbmVlZGVkLCBhbmQgYSBm
ZXcgc3Vic3RhbnRpdmUgY2hhbmdlcyB0byBhbGxvdyBtb3JlIGhlYWRlciByZW1vdmFsKQorCisg
ICAgICAgICoga2h0bWwveG1sL2RvbV9kb2NpbXBsLmg6IG1vdmVkIG1fc2VsZWN0ZWRTdHlsZXNo
ZWV0U2V0IGhlcmUgZnJvbQorICAgICAgICBLSFRNTFBhcnRQcml2YXRlLCBzaW5jZSB0aGlzIHdh
cyB0aGUgb25seSBjbGFzcyB1c2luZyBpdC4KKyAgICAgICAgKiBraHRtbC94bWwvZG9tX2RvY2lt
cGwuY3BwOgorICAgICAgICAoRG9jdW1lbnRJbXBsOjpwcm9jZXNzSHR0cEVxdWl2KTogZGl0dG8K
KyAgICAgICAgKERvY3VtZW50SW1wbDo6c2VsZWN0ZWRTdHlsZXNoZWV0U2V0KTogZGl0dG8KKyAg
ICAgICAgKERvY3VtZW50SW1wbDo6c2V0U2VsZWN0ZWRTdHlsZXNoZWV0U2V0KTogZGl0dG8KKyAg
ICAgICAgKERvY3VtZW50SW1wbDo6cmVjYWxjU3R5bGVTZWxlY3Rvcik6IGRpdHRvCisgICAgICAg
ICoga2h0bWwvZWNtYS9ranNfZG9tLmNwcDoKKyAgICAgICAgKEtKUzo6RE9NRG9jdW1lbnQ6Omdl
dFZhbHVlUHJvcGVydHkpOiBVc2UgbmV3IGlzQ29tcGxldGVkIG1ldGhvZAorICAgICAgICBvbiBG
cmFtZSBpbnN0ZWFkIG9mIGFjY2Vzc2luZyBwcml2YXRlIGZpZWxkIGRpcmVjdGx5LgorICAgICAg
ICAoS0pTOjpnZXRET01Eb2N1bWVudE5vZGUpOiByZW1vdmUgZ3JhdHVpdG91cyB1c2Ugb2Ygdmll
dygpCisgICAgICAgIAorICAgICAgICBKdXN0IHRoZSByZW5hbWVzOgorICAgICAgICAKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnJpZGdl
L21hYy9LV1FLSFRNTFZpZXcuY3BwOgorICAgICAgICAqIGJyaWRnZS9tYWMvTWFjRnJhbWUuaDoK
KyAgICAgICAgKiBicmlkZ2UvbWFjL01hY0ZyYW1lLm1tOgorICAgICAgICAqIGJyaWRnZS9tYWMv
V2ViQ29yZUJyaWRnZS5tbToKKyAgICAgICAgKiBraHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5j
cHA6CisgICAgICAgICoga2h0bWwvZWNtYS9ranNfaHRtbC5jcHA6CisgICAgICAgICoga2h0bWwv
ZWNtYS9ranNfdHJhdmVyc2FsLmNwcDoKKyAgICAgICAgKiBraHRtbC9lY21hL2tqc193aW5kb3cu
Y3BwOgorICAgICAgICAqIGtodG1sL2VjbWEveG1saHR0cHJlcXVlc3QuY3BwOgorICAgICAgICAq
IGtodG1sL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHA6CisgICAgICAgICoga2h0bWwv
ZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX2Jhc2Vp
bXBsLmNwcDoKKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfY2FudmFzaW1wbC5jcHA6CisgICAg
ICAgICoga2h0bWwvaHRtbC9odG1sX2RvY3VtZW50aW1wbC5jcHA6CisgICAgICAgICoga2h0bWwv
aHRtbC9odG1sX2VsZW1lbnRpbXBsLmNwcDoKKyAgICAgICAgKiBraHRtbC9odG1sL2h0bWxfaGVh
ZGltcGwuY3BwOgorICAgICAgICAqIGtodG1sL2h0bWwvaHRtbF9pbWFnZWltcGwuY3BwOgorICAg
ICAgICAqIGtodG1sL2h0bWwvaHRtbF9pbmxpbmVpbXBsLmNwcDoKKyAgICAgICAgKERPTTo6SFRN
TEFuY2hvckVsZW1lbnRJbXBsOjpkZWZhdWx0RXZlbnRIYW5kbGVyKToKKyAgICAgICAgKiBraHRt
bC9odG1sL2h0bWxfb2JqZWN0aW1wbC5jcHA6CisgICAgICAgICoga2h0bWwvaHRtbC9odG1sX3Rh
YmxlaW1wbC5jcHA6CisgICAgICAgICoga2h0bWwvaHRtbC9odG1scGFyc2VyLmNwcDoKKyAgICAg
ICAgKiBraHRtbC9odG1sL2h0bWx0b2tlbml6ZXIuY3BwOgorICAgICAgICAqIGtodG1sL3JlbmRl
cmluZy9iaWRpLmNwcDoKKyAgICAgICAgKiBraHRtbC9yZW5kZXJpbmcvcmVuZGVyX2FwcGxldC5j
cHA6CisgICAgICAgICoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9ibG9jay5jcHA6CisgICAgICAg
ICoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9ib3guY3BwOgorICAgICAgICAqIGtodG1sL3JlbmRl
cmluZy9yZW5kZXJfY2FudmFzLmNwcDoKKyAgICAgICAgKiBraHRtbC9yZW5kZXJpbmcvcmVuZGVy
X2Zsb3cuY3BwOgorICAgICAgICAqIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfZm9ybS5jcHA6Cisg
ICAgICAgICoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9mcmFtZXMuY3BwOgorICAgICAgICAqIGto
dG1sL3JlbmRlcmluZy9yZW5kZXJfbGF5ZXIuY3BwOgorICAgICAgICAqIGtodG1sL3JlbmRlcmlu
Zy9yZW5kZXJfbGluZS5jcHA6CisgICAgICAgICoga2h0bWwvcmVuZGVyaW5nL3JlbmRlcl9vYmpl
Y3QuY3BwOgorICAgICAgICAqIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfcmVwbGFjZWQuY3BwOgor
ICAgICAgICAqIGtodG1sL3JlbmRlcmluZy9yZW5kZXJfdGFibGUuY3BwOgorICAgICAgICAqIGto
dG1sL3JlbmRlcmluZy9yZW5kZXJfdGhlbWVfbWFjLm1tOgorICAgICAgICAqIGtodG1sL3htbC9k
b20yX2V2ZW50c2ltcGwuY3BwOgorICAgICAgICAqIGtodG1sL3htbC9kb21fZWxlbWVudGltcGwu
Y3BwOgorICAgICAgICAqIGtodG1sL3htbC9kb21fbm9kZWltcGwuY3BwOgorICAgICAgICAqIGto
dG1sL3htbC94bWxfdG9rZW5pemVyLmNwcDoKKyAgICAgICAgKiBraHRtbC94c2wveHNsdF9wcm9j
ZXNzb3JpbXBsLmNwcDoKKyAgICAgICAgKiBrd3EvS1dRQWNjT2JqZWN0Lm1tOgorICAgICAgICAq
IGt3cS9LV1FGcmFtZS5tbToKKyAgICAgICAgKiBrd3EvS1dRS0phdmFBcHBsZXRXaWRnZXQubW06
CisgICAgICAgICoga3dxL0tXUVBhZ2VTdGF0ZS5tbToKKyAgICAgICAgKiBrd3EvS1dRUmVuZGVy
VHJlZURlYnVnLmNwcDoKKyAgICAgICAgKiBrd3EvS1dRU2lnbmFsU3R1YnMubW06CisgICAgICAg
ICoga3dxL0tXUVdpZGdldC5tbToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAg
KEZyYW1lOjppbml0KToKKyAgICAgICAgKEZyYW1lOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKEZy
YW1lOjppc0NvbXBsZXRlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmg6CisgICAgICAgICogcGFn
ZS9GcmFtZVByaXZhdGUuaDogQWRkZWQuCisgICAgICAgIChGcmFtZVByaXZhdGU6OkZyYW1lUHJp
dmF0ZSk6CisgICAgICAgIChGcmFtZVByaXZhdGU6On5GcmFtZVByaXZhdGUpOgorICAgICAgICAq
IHBhZ2UvRnJhbWVWaWV3LmNwcDogQWRkZWQuCisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuaDog
QWRkZWQuCisgICAgICAgICogcGFnZS9raHRtbHBhcnRfcC5oOiBSZW1vdmVkLgorICAgICAgICAq
IHBhZ2Uva2h0bWx2aWV3LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwYWdlL2todG1sdmlldy5o
OiBSZW1vdmVkLgorCiAyMDA2LTAxLTEwICBNYWNpZWogU3RhY2hvd2lhayAgPG1qc0BhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBicmlkZ2UvbWFjL01hY0Zy
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9NYWNGcmFtZS5oCShyZXZpc2lvbiAxMTk5
NCkKKysrIGJyaWRnZS9tYWMvTWFjRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIs
NyBAQAogI2luY2x1ZGUgIktXUUNsaXBib2FyZC5oIgogI2luY2x1ZGUgIktXUVNjcm9sbEJhci5o
IgogCi1jbGFzcyBLSFRNTFBhcnRQcml2YXRlOworY2xhc3MgRnJhbWVQcml2YXRlOwogY2xhc3Mg
S1dRV2luZG93V2lkZ2V0OwogY2xhc3MgTlBPYmplY3Q7CiAKSW5kZXg6IGJyaWRnZS9tYWMvTWFj
RnJhbWUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gYnJpZGdlL21hYy9NYWNGcmFtZS5tbQkocmV2aXNpb24g
MTE5OTQpCisrKyBicmlkZ2UvbWFjL01hY0ZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OSw4
ICs1OSw4IEBACiAjaW1wb3J0ICJIVE1MRm9ybUVsZW1lbnRJbXBsLmgiCiAjaW1wb3J0ICJIVE1M
R2VuZXJpY0Zvcm1FbGVtZW50SW1wbC5oIgogI2ltcG9ydCAiaHRtbF90YWJsZWltcGwuaCIKLSNp
bXBvcnQgImtodG1scGFydF9wLmgiCi0jaW1wb3J0ICJraHRtbHZpZXcuaCIKKyNpbXBvcnQgIkZy
YW1lUHJpdmF0ZS5oIgorI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJranNfYmluZGlu
Zy5oIgogI2ltcG9ydCAia2pzX3dpbmRvdy5oIgogI2ltcG9ydCAicmVuZGVyX2NhbnZhcy5oIgpJ
bmRleDogYnJpZGdlL21hYy9XZWJDb3JlQnJpZGdlLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJyaWRnZS9t
YWMvV2ViQ29yZUJyaWRnZS5tbQkocmV2aXNpb24gMTE5OTQpCisrKyBicmlkZ2UvbWFjL1dlYkNv
cmVCcmlkZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAKICNpbXBvcnQgImh0
bWxfaW1hZ2VpbXBsLmgiCiAjaW1wb3J0ICJodG1sZWRpdGluZy5oIgogI2ltcG9ydCAiTWFjRnJh
bWUuaCIKLSNpbXBvcnQgImtodG1sdmlldy5oIgorI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1w
b3J0ICJranNfcHJveHkuaCIKICNpbXBvcnQgImtqc193aW5kb3cuaCIKICNpbXBvcnQgImxvYWRl
ci5oIgpJbmRleDogYnJpZGdlL21hYy9LV1FLSFRNTFZpZXcuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGJy
aWRnZS9tYWMvS1dRS0hUTUxWaWV3LmNwcAkocmV2aXNpb24gMTE5OTQpCisrKyBicmlkZ2UvbWFj
L0tXUUtIVE1MVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW1wb3J0ICJraHRtbHZpZXcuaCIKKyNpbXBvcnQgIkZy
YW1lVmlldy5oIgogCiAjaW1wb3J0ICJNYWNGcmFtZS5oIgogI2ltcG9ydCAiS1dRV2luZG93V2lk
Z2V0LmgiCkluZGV4OiBrd3EvS1dRS0phdmFBcHBsZXRXaWRnZXQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a3dxL0tXUUtKYXZhQXBwbGV0V2lkZ2V0Lm1tCShyZXZpc2lvbiAxMTk5NCkKKysrIGt3cS9LV1FL
SmF2YUFwcGxldFdpZGdldC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNyBAQAogI2lt
cG9ydCAiS1dRS0phdmFBcHBsZXRXaWRnZXQuaCIKIAogI2ltcG9ydCAiZG9tX2RvY2ltcGwuaCIK
LSNpbXBvcnQgImtodG1sdmlldy5oIgorI2ltcG9ydCAiRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJL
V1FFeGNlcHRpb25zLmgiCiAjaW1wb3J0ICJXZWJDb3JlQnJpZGdlLmgiCiAjaW1wb3J0ICJNYWNG
cmFtZS5oIgpJbmRleDoga3dxL0tXUVJlbmRlclRyZWVEZWJ1Zy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
a3dxL0tXUVJlbmRlclRyZWVEZWJ1Zy5jcHAJKHJldmlzaW9uIDExOTk0KQorKysga3dxL0tXUVJl
bmRlclRyZWVEZWJ1Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNs
dWRlICJkb21fZG9jaW1wbC5oIgogI2luY2x1ZGUgImRvbV9wb3NpdGlvbi5oIgogI2luY2x1ZGUg
ImpzZWRpdGluZy5oIgotI2luY2x1ZGUgImtodG1sdmlldy5oIgorI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogI2luY2x1ZGUgInJlbmRlcl9jYW52YXMuaCIKICNpbmNsdWRlICJyZW5kZXJfcmVwbGFj
ZWQuaCIKICNpbmNsdWRlICJyZW5kZXJfdGFibGUuaCIKSW5kZXg6IGt3cS9LV1FXaWRnZXQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3dxL0tXUVdpZGdldC5tbQkocmV2aXNpb24gMTE5OTQpCisrKyBrd3Ev
S1dRV2lkZ2V0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw3ICszNiw2IEBACiAjaW1wb3J0ICJX
ZWJDb3JlQnJpZGdlLmgiCiAjaW1wb3J0ICJXZWJDb3JlRnJhbWVWaWV3LmgiCiAjaW1wb3J0ICJX
ZWJDb3JlVmlldy5oIgotI2ltcG9ydCAia2h0bWx2aWV3LmgiCiAjaW1wb3J0ICJyZW5kZXJfY2Fu
dmFzLmgiCiAjaW1wb3J0ICJyZW5kZXJfcmVwbGFjZWQuaCIKICNpbXBvcnQgInJlbmRlcl9zdHls
ZS5oIgpJbmRleDoga3dxL0tXUVBhZ2VTdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBrd3EvS1dRUGFn
ZVN0YXRlLm1tCShyZXZpc2lvbiAxMTk5NCkKKysrIGt3cS9LV1FQYWdlU3RhdGUubW0JKHdvcmtp
bmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL3Byb3Bl
cnR5X21hcC5oPgogCiAjaW1wb3J0ICJkb21fZG9jaW1wbC5oIgotI2ltcG9ydCAia2h0bWx2aWV3
LmgiCisjaW1wb3J0ICJGcmFtZVZpZXcuaCIKICNpbXBvcnQgImtqc193aW5kb3cuaCIKIAogI2lt
cG9ydCA8a3htbGNvcmUvQXNzZXJ0aW9ucy5oPgpJbmRleDoga3dxL0tXUUZyYW1lLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGt3cS9LV1FGcmFtZS5tbQkocmV2aXNpb24gMTE5OTQpCisrKyBrd3EvS1dRRnJh
bWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcgQEAKICNpbXBvcnQgIktXUUV4Y2Vw
dGlvbnMuaCIKICNpbXBvcnQgIk1hY0ZyYW1lLmgiCiAjaW1wb3J0ICJXZWJDb3JlQnJpZGdlLmgi
Ci0jaW1wb3J0ICJraHRtbHZpZXcuaCIKKyNpbXBvcnQgIkZyYW1lVmlldy5oIgogCiB2b2lkIFFG
cmFtZTo6c2V0RnJhbWVTdHlsZShpbnQgcykKIHsKSW5kZXg6IGt3cS9LV1FBY2NPYmplY3QubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0ga3dxL0tXUUFjY09iamVjdC5tbQkocmV2aXNpb24gMTE5OTQpCisrKyBr
d3EvS1dRQWNjT2JqZWN0Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBACiAjaW1w
b3J0ICJkb21fc3RyaW5nLmgiCiAjaW1wb3J0ICJkb20yX2V2ZW50c2ltcGwuaCIKICNpbXBvcnQg
ImRvbTJfcmFuZ2UuaCIKLSNpbXBvcnQgImtodG1sdmlldy5oIgorI2ltcG9ydCAiRnJhbWVWaWV3
LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAicmVuZGVyX2NhbnZhcy5oIgogI2ltcG9y
dCAicmVuZGVyX2ltYWdlLmgiCkluZGV4OiBrd3EvS1dRU2lnbmFsU3R1YnMubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0ga3dxL0tXUVNpZ25hbFN0dWJzLm1tCShyZXZpc2lvbiAxMTk5NCkKKysrIGt3cS9LV1FT
aWduYWxTdHVicy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAgCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW1wb3J0ICJraHRtbHZpZXcuaCIKKyNpbXBvcnQgIkZyYW1l
Vmlldy5oIgogI2ltcG9ydCAibG9hZGVyLmgiCiAjaW1wb3J0ICJ4bWxfdG9rZW5pemVyLmgiCiAK
SW5kZXg6IHBhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lLmgJKHJldmlzaW9u
IDExOTk0KQorKysgcGFnZS9GcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBA
CiAjaW5jbHVkZSA8cXNjcm9sbGJhci5oPgogI2luY2x1ZGUgPHFjb2xvci5oPgogCi1jbGFzcyBL
SFRNTFBhcnRQcml2YXRlOworY2xhc3MgRnJhbWVQcml2YXRlOwogY2xhc3MgS0hUTUxQYXJ0QnJv
d3NlckV4dGVuc2lvbjsKIGNsYXNzIEtKU1Byb3h5SW1wbDsKIGNsYXNzIEtIVE1MVmlldzsKQEAg
LTEwMjAsNiArMTAyMCw4IEBAIHByaXZhdGU6CiAgIERPTTo6Tm9kZUltcGwgKm1vdXNlUHJlc3NO
b2RlKCk7CiAgIHZpcnR1YWwgdm9pZCBzYXZlRG9jdW1lbnRTdGF0ZSgpID0gMDsKIAorICBib29s
IGlzQ29tcGxldGUoKTsKKwogcHJvdGVjdGVkOgogICBtdXRhYmxlIFJlZlB0cjxET006Ok5vZGVJ
bXBsPiBfZWxlbWVudFRvRHJhdzsKICAgbXV0YWJsZSBib29sIF9kcmF3U2VsZWN0aW9uT25seTsK
QEAgLTEwNTMsOCArMTA1NSw4IEBAIHByb3RlY3RlZDoKIAogICBET006OkNTU0NvbXB1dGVkU3R5
bGVEZWNsYXJhdGlvbkltcGwgKnNlbGVjdGlvbkNvbXB1dGVkU3R5bGUoRE9NOjpOb2RlSW1wbCAq
Jm5vZGVUb1JlbW92ZSkgY29uc3Q7CiAKLSAgS0hUTUxQYXJ0UHJpdmF0ZSAqZDsKLSAgZnJpZW5k
IGNsYXNzIEtIVE1MUGFydFByaXZhdGU7CisgIEZyYW1lUHJpdmF0ZSAqZDsKKyAgZnJpZW5kIGNs
YXNzIEZyYW1lUHJpdmF0ZTsKICAgZnJpZW5kIGNsYXNzIGtodG1sOjpTZWxlY3Rpb25Db250cm9s
bGVyOwogCiBwdWJsaWM6ICAKSW5kZXg6IHBhZ2Uva2h0bWx2aWV3LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
cGFnZS9raHRtbHZpZXcuaAkocmV2aXNpb24gMTE5OTQpCisrKyBwYWdlL2todG1sdmlldy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDI4OCArMCwwIEBACi0vKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgS0RFIHByb2plY3QKLQotICAgQ29weXJpZ2h0IChDKSAxOTk3IE1hcnRpbiBKb25lcyAobWpv
bmVzQGtkZS5vcmcpCi0gICAgICAgICAgICAgKEMpIDE5OTggV2FsZG8gQmFzdGlhbiAoYmFzdGlh
bkBrZGUub3JnKQotICAgICAgICAgICAgIChDKSAxOTk4LCAxOTk5IFRvcmJlbiBXZWlzICh3ZWlz
QGtkZS5vcmcpCi0gICAgICAgICAgICAgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKLSAgICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKLSAgIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgotCi0gICBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
Ci0gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwotICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KLQotICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAg
IEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKi8KLQotI2lmbmRlZiBLSFRNTF9ICi0jZGVm
aW5lIEtIVE1MX0gKLQotLy8gcXQgaW5jbHVkZXMgYW5kIGNsYXNzZXMKLSNpbmNsdWRlIDxxc2Ny
b2xsdmlldy5oPgotCi1jbGFzcyBRUGFpbnRlcjsKLWNsYXNzIFFSZWN0OwotCi1uYW1lc3BhY2Ug
RE9NIHsKLSAgICBjbGFzcyBIVE1MRG9jdW1lbnRJbXBsOwotICAgIGNsYXNzIERvY3VtZW50SW1w
bDsKLSAgICBjbGFzcyBDbGlwYm9hcmRJbXBsOwotICAgIGNsYXNzIEVsZW1lbnRJbXBsOwotICAg
IGNsYXNzIEhUTUxFbGVtZW50SW1wbDsKLSAgICBjbGFzcyBIVE1MVGl0bGVFbGVtZW50SW1wbDsK
LSAgICBjbGFzcyBIVE1MR2VuZXJpY0Zvcm1FbGVtZW50SW1wbDsKLSAgICBjbGFzcyBIVE1MRm9y
bUVsZW1lbnRJbXBsOwotICAgIGNsYXNzIEhUTUxBbmNob3JFbGVtZW50SW1wbDsKLSAgICBjbGFz
cyBOb2RlSW1wbDsKLSAgICBjbGFzcyBDU1NQcm9wZXJ0eTsKLX07Ci0KLW5hbWVzcGFjZSBraHRt
bCB7Ci0gICAgY2xhc3MgUmVuZGVyT2JqZWN0OwotICAgIGNsYXNzIFJlbmRlckJveDsKLSAgICBj
bGFzcyBSZW5kZXJDYW52YXM7Ci0gICAgY2xhc3MgUmVuZGVyU3R5bGU7Ci0gICAgY2xhc3MgUmVu
ZGVyTGluZUVkaXQ7Ci0gICAgY2xhc3MgUmVuZGVyUGFydDsKLSAgICBjbGFzcyBSZW5kZXJQYXJ0
T2JqZWN0OwotICAgIGNsYXNzIFJlbmRlcldpZGdldDsKLSAgICBjbGFzcyBDU1NTdHlsZVNlbGVj
dG9yOwotICAgIGNsYXNzIElubGluZUJveDsKLSAgICB2b2lkIGFwcGx5UnVsZShET006OkNTU1By
b3BlcnR5ICpwcm9wKTsKLX07Ci0KLWNsYXNzIEZyYW1lOwotY2xhc3MgS0hUTUxWaWV3UHJpdmF0
ZTsKLQotLyoqCi0gKiBSZW5kZXJzIGFuZCBkaXNwbGF5cyBIVE1MIGluIGEgQHJlZiBRU2Nyb2xs
Vmlldy4KLSAqCi0gKiBTdWl0YWJsZSBmb3IgdXNlIGFzIGFuIGFwcGxpY2F0aW9uJ3MgbWFpbiB2
aWV3LgotICoqLwotY2xhc3MgS0hUTUxWaWV3IDogcHVibGljIFFTY3JvbGxWaWV3Ci17Ci0gICAg
UV9PQkpFQ1QKLQotICAgIGZyaWVuZCBjbGFzcyBET006OkhUTUxEb2N1bWVudEltcGw7Ci0gICAg
ZnJpZW5kIGNsYXNzIERPTTo6SFRNTFRpdGxlRWxlbWVudEltcGw7Ci0gICAgZnJpZW5kIGNsYXNz
IERPTTo6SFRNTEdlbmVyaWNGb3JtRWxlbWVudEltcGw7Ci0gICAgZnJpZW5kIGNsYXNzIERPTTo6
SFRNTEZvcm1FbGVtZW50SW1wbDsKLSAgICBmcmllbmQgY2xhc3MgRE9NOjpIVE1MQW5jaG9yRWxl
bWVudEltcGw7Ci0gICAgZnJpZW5kIGNsYXNzIERPTTo6RG9jdW1lbnRJbXBsOwotICAgIGZyaWVu
ZCBjbGFzcyBGcmFtZTsKLSAgICBmcmllbmQgY2xhc3Mga2h0bWw6OlJlbmRlckNhbnZhczsKLSAg
ICBmcmllbmQgY2xhc3Mga2h0bWw6OlJlbmRlck9iamVjdDsKLSAgICBmcmllbmQgY2xhc3Mga2h0
bWw6OlJlbmRlckJveDsKLSAgICBmcmllbmQgY2xhc3Mga2h0bWw6OlJlbmRlckxpbmVFZGl0Owot
ICAgIGZyaWVuZCBjbGFzcyBraHRtbDo6UmVuZGVyUGFydDsKLSAgICBmcmllbmQgY2xhc3Mga2h0
bWw6OlJlbmRlclBhcnRPYmplY3Q7Ci0gICAgZnJpZW5kIGNsYXNzIGtodG1sOjpSZW5kZXJXaWRn
ZXQ7Ci0gICAgZnJpZW5kIGNsYXNzIGtodG1sOjpDU1NTdHlsZVNlbGVjdG9yOwotICAgIGZyaWVu
ZCB2b2lkIGtodG1sOjphcHBseVJ1bGUoRE9NOjpDU1NQcm9wZXJ0eSAqcHJvcCk7Ci0gICAgZnJp
ZW5kIGNsYXNzIE1hY0ZyYW1lOwotCi1wdWJsaWM6Ci0gICAgLyoqCi0gICAgICogQ29uc3RydWN0
cyBhIEtIVE1MVmlldy4KLSAgICAgKi8KLSAgICBLSFRNTFZpZXcoIEZyYW1lICpmcmFtZSwgUVdp
ZGdldCAqcGFyZW50LCBjb25zdCBjaGFyICpuYW1lPTAgKTsKLSAgICB2aXJ0dWFsIH5LSFRNTFZp
ZXcoKTsKLQotICAgIC8qKgotICAgICAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBGcmFtZSB0
aGF0IGlzCi0gICAgICogcmVuZGVyaW5nIHRoZSBwYWdlLgotICAgICAqKi8KLSAgICBGcmFtZSAq
ZnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9Ci0KLSAgICBpbnQgZnJhbWVXaWR0aCgp
IGNvbnN0IHsgcmV0dXJuIF93aWR0aDsgfQotCi0gICAgLyoqCi0gICAgICogU2V0cyBhIG1hcmdp
biBpbiB4IGRpcmVjdGlvbi4KLSAgICAgKi8KLSAgICB2b2lkIHNldE1hcmdpbldpZHRoKGludCB4
KTsKLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIG1hcmdpbiB3aWR0aC4KLSAgICAgKgot
ICAgICAqIEEgcmV0dXJuIHZhbHVlIG9mIC0xIG1lYW5zIHRoZSBkZWZhdWx0IHZhbHVlIHdpbGwg
YmUgdXNlZC4KLSAgICAgKi8KLSAgICBpbnQgbWFyZ2luV2lkdGgoKSBjb25zdCB7IHJldHVybiBf
bWFyZ2luV2lkdGg7IH0KLQotICAgIC8qCi0gICAgICogU2V0cyBhIG1hcmdpbiBpbiB5IGRpcmVj
dGlvbi4KLSAgICAgKi8KLSAgICB2b2lkIHNldE1hcmdpbkhlaWdodChpbnQgeSk7Ci0KLSAgICAv
KioKLSAgICAgKiBSZXR1cm5zIHRoZSBtYXJnaW4gaGVpZ2h0LgotICAgICAqCi0gICAgICogQSBy
ZXR1cm4gdmFsdWUgb2YgLTEgbWVhbnMgdGhlIGRlZmF1bHQgdmFsdWUgd2lsbCBiZSB1c2VkLgot
ICAgICAqLwotICAgIGludCBtYXJnaW5IZWlnaHQoKSB7IHJldHVybiBfbWFyZ2luSGVpZ2h0OyB9
Ci0KLSAgICAvKioKLSAgICAgKiBTZXRzIHZlcnRpY2FscyBzY3JvbGxiYXIgbW9kZS4gUmVpbXBs
ZW1lbnRlZCBmb3IgaW50ZXJuYWwgcmVhc29ucy4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0VlNjcm9sbEJhck1vZGUgKCBTY3JvbGxCYXJNb2RlIG1vZGUgKTsKLQotICAgIC8qKgotICAg
ICAqIFNldHMgaG9yaXpvbnRhbCBzY3JvbGxiYXIgbW9kZS4gUmVpbXBsZW1lbnRlZCBmb3IgaW50
ZXJuYWwgcmVhc29ucy4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgc2V0SFNjcm9sbEJhck1v
ZGUgKCBTY3JvbGxCYXJNb2RlIG1vZGUgKTsKLQotICAgIC8vIFNldHMgYm90aCBob3Jpem9udGFs
IGFuZCB2ZXJ0aWNhbCBtb2Rlcy4KLSAgICB2aXJ0dWFsIHZvaWQgc2V0U2Nyb2xsQmFyc01vZGUo
U2Nyb2xsQmFyTW9kZSBtb2RlKTsKLSAgICAKLSAgICAvKioKLSAgICAgKiBQcmludHMgdGhlIEhU
TUwgZG9jdW1lbnQuCi0gICAgICovCi0gICAgdm9pZCBwcmludCgpOwotCi0gICAgLyoqCi0gICAg
ICogZW5zdXJlIHRoZSBkaXNwbGF5IGlzIHVwIHRvIGRhdGUKLSAgICAgKi8KLSAgICB2b2lkIGxh
eW91dCgpOwotCi0gICAgYm9vbCBpbkxheW91dCgpIGNvbnN0OwotICAgIGludCBsYXlvdXRDb3Vu
dCgpIGNvbnN0OwotCi0gICAgYm9vbCBuZWVkc0Z1bGxSZXBhaW50KCkgY29uc3Q7Ci0gICAgCi0g
ICAgdm9pZCBhZGRSZXBhaW50SW5mbyhraHRtbDo6UmVuZGVyT2JqZWN0KiBvLCBjb25zdCBRUmVj
dCYgcik7Ci0KLSAgICB2b2lkIHJlc2V0U2Nyb2xsQmFycygpOwotCi0gICAgIHZvaWQgY2xlYXIo
KTsKLQotc2lnbmFsczoKLSAgICB2b2lkIGNsZWFyZWQoKTsKLQotcHVibGljOgotICAgIHZvaWQg
Y2xlYXJQYXJ0KCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlc2l6ZUV2ZW50ICggUVJlc2l6ZUV2ZW50
ICogZXZlbnQgKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnRNb3VzZVByZXNzRXZlbnQoIFFN
b3VzZUV2ZW50ICogKTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9jdXNJbkV2ZW50KCBRRm9jdXNFdmVu
dCAqICk7Ci0gICAgdmlydHVhbCB2b2lkIGZvY3VzT3V0RXZlbnQoIFFGb2N1c0V2ZW50ICogKTsK
LSAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnRNb3VzZURvdWJsZUNsaWNrRXZlbnQoIFFNb3VzZUV2
ZW50ICogKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnRNb3VzZU1vdmVFdmVudChRTW91c2VF
dmVudCAqKTsKLSAgICB2aXJ0dWFsIHZvaWQgdmlld3BvcnRNb3VzZVJlbGVhc2VFdmVudChRTW91
c2VFdmVudCAqKTsKLSNpZm5kZWYgUVRfTk9fV0hFRUxFVkVOVAotICAgIHZpcnR1YWwgdm9pZCB2
aWV3cG9ydFdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqKTsKLSNlbmRpZgotCi0gICAgdm9pZCBrZXlQ
cmVzc0V2ZW50KCBRS2V5RXZlbnQgKl9rZSApOwotICAgIHZvaWQgZG9BdXRvU2Nyb2xsKCk7Ci0K
LSAgICBib29sIHVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFFQb2ludCAmLCBET006OkNsaXBib2Fy
ZEltcGwgKmNsaXBib2FyZCk7Ci0gICAgdm9pZCBjYW5jZWxEcmFnQW5kRHJvcChjb25zdCBRUG9p
bnQgJiwgRE9NOjpDbGlwYm9hcmRJbXBsICpjbGlwYm9hcmQpOwotICAgIGJvb2wgcGVyZm9ybURy
YWdBbmREcm9wKGNvbnN0IFFQb2ludCAmLCBET006OkNsaXBib2FyZEltcGwgKmNsaXBib2FyZCk7
Ci0KLSAgICB2b2lkIHRpbWVyRXZlbnQgKCBRVGltZXJFdmVudCAqICk7Ci0KLSAgICB2b2lkIHJl
cGFpbnRSZWN0YW5nbGUoY29uc3QgUVJlY3QmIHIsIGJvb2wgaW1tZWRpYXRlKTsKLQotICAgIGJv
b2wgaXNUcmFuc3BhcmVudCgpIGNvbnN0OwotICAgIHZvaWQgc2V0VHJhbnNwYXJlbnQoYm9vbCBp
c1RyYW5zcGFyZW50KTsKLSAgICAKLSAgICB2b2lkIHNjaGVkdWxlUmVsYXlvdXQoKTsKLSAgICB2
b2lkIHVuc2NoZWR1bGVSZWxheW91dCgpOwotICAgIGJvb2wgaGF2ZURlbGF5ZWRMYXlvdXRTY2hl
ZHVsZWQoKTsKLSAgICBib29sIGxheW91dFBlbmRpbmcoKTsKLQotICAgIFFXaWRnZXQgKnRvcExl
dmVsV2lkZ2V0KCkgY29uc3Q7Ci0gICAgUVBvaW50IG1hcFRvR2xvYmFsKGNvbnN0IFFQb2ludCAm
KSBjb25zdDsKLSAgICAvLyBtYXBzICJ2aWV3cG9ydCIgKGFjdHVhbGx5IENvY29hIHdpbmRvdyBj
b29yZHMpIHRvIHNjcmVlbiBjb29yZHMKLSAgICBRUG9pbnQgdmlld3BvcnRUb0dsb2JhbChjb25z
dCBRUG9pbnQgJikgY29uc3Q7Ci0gICAgdm9pZCBhZGp1c3RWaWV3U2l6ZSgpOwotICAgIHZvaWQg
aW5pdFNjcm9sbEJhcnMoKTsKLSAgICAKLSAgICB2b2lkIHVwZGF0ZURhc2hib2FyZFJlZ2lvbnMo
KTsKLQotICAgIHZvaWQgcmVmKCkgeyArK19yZWZDb3VudDsgfQotICAgIHZvaWQgZGVyZWYoKSB7
IGlmICghLS1fcmVmQ291bnQpIGRlbGV0ZSB0aGlzOyB9Ci0gICAgCi1wcm90ZWN0ZWQgc2xvdHM6
Ci0gICAgdm9pZCBzbG90UGFsZXR0ZUNoYW5nZWQoKTsKLSAgICB2b2lkIHNsb3RTY3JvbGxCYXJN
b3ZlZCgpOwotCi1wcml2YXRlOgotCi0gICAgdm9pZCByZXNldEN1cnNvcigpOwotICAgIHZvaWQg
aW52YWxpZGF0ZUNsaWNrKCk7Ci0KLSAgICAvKioKLSAgICAgKiBQYWludHMgdGhlIEhUTUwgZG9j
dW1lbnQgdG8gYSBRUGFpbnRlci4KLSAgICAgKiBUaGUgZG9jdW1lbnQgd2lsbCBiZSBzY2FsZWQg
dG8gbWF0Y2ggdGhlIHdpZHRoIG9mCi0gICAgICogcmMgYW5kIGNsaXBwZWQgdG8gZml0IGluIHRo
ZSBoZWlnaHQuCi0gICAgICogeU9mZiBkZXRlcm1pbmVzIHRoZSB2ZXJ0aWNhbCBvZmZzZXQgaW4g
dGhlIGRvY3VtZW50IHRvIHN0YXJ0IHdpdGguCi0gICAgICogbW9yZSwgaWYgbm9uemVybyB3aWxs
IGJlIHNldCB0byB0cnVlIGlmIHRoZSBkb2N1bWVudHMgZXh0ZW5kcwotICAgICAqIGJleW9uZCB0
aGUgcmMgb3IgZmFsc2UgaWYgZXZlcnl0aGluZyBiZWxvdyB5T2ZmIHdhcyBwYWludGVkLgotICAg
ICAqKi8KLSAgICB2b2lkIHBhaW50KFFQYWludGVyICpwLCBjb25zdCBRUmVjdCAmcmMsIGludCB5
T2ZmID0gMCwgYm9vbCAqbW9yZSA9IDApOwotCi0gICAgLyoqCi0gICAgICogR2V0L3NldCB0aGUg
Q1NTIE1lZGlhIFR5cGUuCi0gICAgICoKLSAgICAgKiBNZWRpYSB0eXBlIGlzIHNldCB0byAic2Ny
ZWVuIiBmb3Igb24tc2NyZWVuIHJlbmRlcmluZyBhbmQgInByaW50IgotICAgICAqIGR1cmluZyBw
cmludGluZy4gT3RoZXIgbWVkaWEgdHlwZXMgbGFjayB0aGUgcHJvcGVyIHN1cHBvcnQgaW4gdGhl
Ci0gICAgICogcmVuZGVyZXIgYW5kIGFyZSBub3QgYWN0aXZhdGVkLiBUaGUgRE9NIHRyZWUgYW5k
IHRoZSBwYXJzZXIgaXRzZWxmLAotICAgICAqIGhvd2V2ZXIsIHByb3Blcmx5IGhhbmRsZSBvdGhl
ciBtZWRpYSB0eXBlcy4gVG8gbWFrZSB0aGVtIGFjdHVhbGx5IHdvcmsKLSAgICAgKiB5b3Ugb25s
eSBuZWVkIHRvIGVuYWJsZSB0aGUgbWVkaWEgdHlwZSBpbiB0aGUgdmlldyBhbmQgaWYgbmVjZXNz
YXJ5Ci0gICAgICogYWRkIHRoZSBtZWRpYSB0eXBlIGRlcGVuZGVudCBjaGFuZ2VzIHRvIHRoZSBy
ZW5kZXJlci4KLSAgICAgKi8KLSAgICB2b2lkIHNldE1lZGlhVHlwZSggY29uc3QgUVN0cmluZyAm
bWVkaXVtICk7Ci0gICAgUVN0cmluZyBtZWRpYVR5cGUoKSBjb25zdDsKLQotICAgIGJvb2wgc2Ny
b2xsVG8oY29uc3QgUVJlY3QgJik7Ci0KLSAgICB2b2lkIGZvY3VzTmV4dFByZXZOb2RlKGJvb2wg
bmV4dCk7Ci0KLSAgICB2b2lkIHVzZVNsb3dSZXBhaW50cygpOwotCi0gICAgdm9pZCBzZXRJZ25v
cmVXaGVlbEV2ZW50cyhib29sIGUpOwotCi0gICAgdm9pZCBpbml0KCk7Ci0KLSAgICBET006Ok5v
ZGVJbXBsICpub2RlVW5kZXJNb3VzZSgpIGNvbnN0OwotCi0gICAgdm9pZCByZXN0b3JlU2Nyb2xs
QmFyKCk7Ci0KLSAgICBRU3RyaW5nTGlzdCBmb3JtQ29tcGxldGlvbkl0ZW1zKGNvbnN0IFFTdHJp
bmcgJm5hbWUpIGNvbnN0OwotICAgIHZvaWQgYWRkRm9ybUNvbXBsZXRpb25JdGVtKGNvbnN0IFFT
dHJpbmcgJm5hbWUsIGNvbnN0IFFTdHJpbmcgJnZhbHVlKTsKLQotICAgIGJvb2wgZGlzcGF0Y2hN
b3VzZUV2ZW50KGNvbnN0IERPTTo6QXRvbWljU3RyaW5nICZldmVudFR5cGUsIERPTTo6Tm9kZUlt
cGwgKnRhcmdldE5vZGUsIGJvb2wgY2FuY2VsYWJsZSwKLQkJCSAgICBpbnQgZGV0YWlsLFFNb3Vz
ZUV2ZW50ICpfbW91c2UsIGJvb2wgc2V0VW5kZXIsCi0JCQkgICAgaW50IG1vdXNlRXZlbnRUeXBl
KTsKLSAgICBib29sIGRpc3BhdGNoRHJhZ0V2ZW50KGNvbnN0IERPTTo6QXRvbWljU3RyaW5nICZl
dmVudFR5cGUsIERPTTo6Tm9kZUltcGwgKmRyYWdUYXJnZXQsIGNvbnN0IFFQb2ludCAmbG9jLCBE
T006OkNsaXBib2FyZEltcGwgKmNsaXBib2FyZCk7Ci0KLSAgICB2b2lkIGFwcGx5T3ZlcmZsb3dU
b1ZpZXdwb3J0KGtodG1sOjpSZW5kZXJPYmplY3QqIG8sIFNjcm9sbEJhck1vZGUmIGhNb2RlLCBT
Y3JvbGxCYXJNb2RlJiB2TW9kZSk7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXNLSFRNTFZpZXcoKSBj
b25zdDsKLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gbWVt
YmVyIHZhcmlhYmxlcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBwcml2
YXRlOgotICAgIHVuc2lnbmVkIF9yZWZDb3VudDsKLQotICAgIGludCBfd2lkdGg7Ci0gICAgaW50
IF9oZWlnaHQ7Ci0KLSAgICBpbnQgX21hcmdpbldpZHRoOwotICAgIGludCBfbWFyZ2luSGVpZ2h0
OwotCi0gICAgRnJhbWUgKm1fZnJhbWU7Ci0gICAgS0hUTUxWaWV3UHJpdmF0ZSAqZDsKLQotICAg
IFFTdHJpbmcgbV9tZWRpdW07ICAgLy8gbWVkaWEgdHlwZQotfTsKLQotI2VuZGlmCi0KSW5kZXg6
IHBhZ2UvRnJhbWVWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL0ZyYW1lVmlldy5jcHAJKHJl
dmlzaW9uIDExOTk0KQorKysgcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Miw3ICsyMiw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqLwogI2luY2x1
ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImtodG1sdmlldy5oIgorI2luY2x1ZGUgIkZyYW1lVmll
dy5oIgogCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJraHRtbF9ldmVudHMuaCIKQEAg
LTQzLDcgKzQzLDcgQEAKICNpbmNsdWRlICJjc3MvY3Nzc3R5bGVzZWxlY3Rvci5oIgogI2luY2x1
ZGUgIm1pc2MvaGVscGVyLmgiCiAjaW5jbHVkZSAia2h0bWxfc2V0dGluZ3MuaCIKLSNpbmNsdWRl
ICJraHRtbHBhcnRfcC5oIgorI2luY2x1ZGUgIk1hY0ZyYW1lLmgiCiAKICNpbmNsdWRlIDxrY3Vy
c29yLmg+CiAjaW5jbHVkZSA8a3N0YW5kYXJkZGlycy5oPgpJbmRleDogcGFnZS9GcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDExOTk0KQorKysgcGFnZS9G
cmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEyICs2OCwxMiBAQCB1c2luZyBuYW1lc3Bh
Y2UgRE9NOwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFjZSBLSlM7
CiAKLSNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNs
dWRlICJlY21hL2tqc19wcm94eS5oIgogI2luY2x1ZGUgImVjbWEva2pzX3dpbmRvdy5oIgogI2lu
Y2x1ZGUgImVjbWEveG1saHR0cHJlcXVlc3QuaCIKICNpbmNsdWRlICJraHRtbF9zZXR0aW5ncy5o
IgotI2luY2x1ZGUgImtodG1scGFydF9wLmgiCisjaW5jbHVkZSAiRnJhbWVQcml2YXRlLmgiCiAK
ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KQEAgLTE1Nyw3ICsx
NTcsNyBAQCB2b2lkIEZyYW1lOjppbml0KEtIVE1MVmlldyAqdmlldykKICAgCiAgIGZyYW1lQ291
bnQgPSAwOwogCi0gIGQgPSBuZXcgS0hUTUxQYXJ0UHJpdmF0ZShwYXJlbnQoKSk7CisgIGQgPSBu
ZXcgRnJhbWVQcml2YXRlKHBhcmVudCgpKTsKIAogICBkLT5tX3ZpZXcgPSB2aWV3OwogICBzZXRX
aWRnZXQoIGQtPm1fdmlldyApOwpAQCAtMTg2Niw3ICsxODY2LDcgQEAgdm9pZCBGcmFtZTo6c3Vi
bWl0Rm9ybSggY29uc3QgY2hhciAqYWN0aQogICAgICAga2REZWJ1Zyg2MDAwKSA8PCAiRnJhbWU6
OnN1Ym1pdEZvcm0gQUJPUlRJTkchIiA8PCBlbmRsOwogICAgICAgcmV0dXJuOwogICAgIH0KLSAg
ICBkLT5tX3N1Ym1pdEZvcm0gPSBuZXcgS0hUTUxQYXJ0UHJpdmF0ZTo6U3VibWl0Rm9ybTsKKyAg
ICBkLT5tX3N1Ym1pdEZvcm0gPSBuZXcgRnJhbWVQcml2YXRlOjpTdWJtaXRGb3JtOwogICAgIGQt
Pm1fc3VibWl0Rm9ybS0+c3VibWl0QWN0aW9uID0gYWN0aW9uOwogICAgIGQtPm1fc3VibWl0Rm9y
bS0+c3VibWl0VXJsID0gdXJsOwogICAgIGQtPm1fc3VibWl0Rm9ybS0+c3VibWl0Rm9ybURhdGEg
PSBmb3JtRGF0YTsKQEAgLTM4NDUsMyArMzg0NSw4IEBAIE5vZGVJbXBsICpGcmFtZTo6bW91c2VQ
cmVzc05vZGUoKQogewogICAgIHJldHVybiBkLT5tX21vdXNlUHJlc3NOb2RlLmdldCgpOwogfQor
Citib29sIEZyYW1lOjppc0NvbXBsZXRlKCkKK3sKKyAgICByZXR1cm4gZC0+bV9iQ29tcGxldGU7
Cit9CkluZGV4OiBwYWdlL2todG1scGFydF9wLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9raHRtbHBh
cnRfcC5oCShyZXZpc2lvbiAxMTk5NCkKKysrIHBhZ2Uva2h0bWxwYXJ0X3AuaAkod29ya2luZyBj
b3B5KQpAQCAtMSwyOTkgKzAsMCBAQAotLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0Ci0gKgotICogQ29weXJpZ2h0IChDKSAxOTk4LCAxOTk5IFRvcmJlbiBXZWlzIDx3ZWlz
QGtkZS5vcmc+Ci0gKiAgICAgICAgICAgICAgICAgICAgIDE5OTktMjAwMSBMYXJzIEtub2xsIDxr
bm9sbEBrZGUub3JnPgotICogICAgICAgICAgICAgICAgICAgICAxOTk5LTIwMDEgQW50dGkgS29p
dmlzdG8gPGtvaXZpc3RvQGtkZS5vcmc+Ci0gKiAgICAgICAgICAgICAgICAgICAgIDIwMDAtMjAw
MSBTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4KLSAqICAgICAgICAgICAgICAgICAg
ICAgMjAwMC0yMDAxIERpcmsgTXVlbGxlciA8bXVlbGxlckBrZGUub3JnPgotICogICAgICAgICAg
ICAgICAgICAgICAyMDAwIFN0ZWZhbiBTY2hpbWFuc2tpIDwxU3RlaW5AZ214LmRlPgotICogQ29w
eXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICogQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0gKi8KLQotI2lmbmRlZiBraHRtbHBhcnRfcF9oCi0j
ZGVmaW5lIGtodG1scGFydF9wX2gKLQotI2luY2x1ZGUgPGtjdXJzb3IuaD4KLSNpbmNsdWRlIDxr
aW8vZ2xvYmFsLmg+Ci0KLSNpbmNsdWRlICJraHRtbF9mYWN0b3J5LmgiCi0jaW5jbHVkZSAia2h0
bWxfZXZlbnRzLmgiCi0jaW5jbHVkZSAia2h0bWxfZXh0LmgiCi0jaW5jbHVkZSAia2h0bWxfc2V0
dGluZ3MuaCIKLSNpbmNsdWRlICJtaXNjL2RlY29kZXIuaCIKLSNpbmNsdWRlICJtaXNjL2Zvcm1k
YXRhLmgiCi0jaW5jbHVkZSAiZWNtYS9ranNfcHJveHkuaCIKLSNpbmNsdWRlICJjc3MvY3NzX3Zh
bHVlaW1wbC5oIgotI2luY2x1ZGUgImVkaXRpbmcvZWRpdF9jb21tYW5kLmgiCi0jaW5jbHVkZSAi
ZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmgiCi0KLW5hbWVzcGFjZSBLSU8KLXsKLSAgY2xh
c3MgSm9iOwotICBjbGFzcyBUcmFuc2ZlckpvYjsKLX0KLQotbmFtZXNwYWNlIGtodG1sCi17Ci0g
IHN0cnVjdCBDaGlsZEZyYW1lCi0gIHsKLSAgICAgIGVudW0gVHlwZSB7IEZyYW1lLCBJRnJhbWUs
IE9iamVjdCB9OwotCi0gICAgICBDaGlsZEZyYW1lKCkgeyBtX2JDb21wbGV0ZWQgPSBmYWxzZTsg
bV9iUHJlbG9hZGVkID0gZmFsc2U7IG1fdHlwZSA9IEZyYW1lOyBtX2JOb3RpZnkgPSBmYWxzZTsg
bV9oYXNGYWxsYmFja0NvbnRlbnQgPSBmYWxzZTsgfQotCi0KLSAgICBRR3VhcmRlZFB0cjxraHRt
bDo6UmVuZGVyUGFydD4gbV9yZW5kZXJlcjsKLSAgICBRR3VhcmRlZFB0cjxLUGFydHM6OlJlYWRP
bmx5UGFydD4gbV9mcmFtZTsKLSAgICBRR3VhcmRlZFB0cjxLUGFydHM6OkJyb3dzZXJFeHRlbnNp
b24+IG1fZXh0ZW5zaW9uOwotICAgIFFTdHJpbmcgbV9zZXJ2aWNlTmFtZTsKLSAgICBRU3RyaW5n
IG1fc2VydmljZVR5cGU7Ci0gICAgUVN0cmluZ0xpc3QgbV9zZXJ2aWNlczsKLSAgICBib29sIG1f
YkNvbXBsZXRlZDsKLSAgICBRU3RyaW5nIG1fbmFtZTsKLSAgICBLUGFydHM6OlVSTEFyZ3MgbV9h
cmdzOwotICAgIGJvb2wgbV9iUHJlbG9hZGVkOwotICAgIEtVUkwgbV93b3JraW5nVVJMOwotICAg
IFR5cGUgbV90eXBlOwotICAgIFFTdHJpbmdMaXN0IG1fcGFyYW1OYW1lczsKLSAgICBRU3RyaW5n
TGlzdCBtX3BhcmFtVmFsdWVzOwotICAgIGJvb2wgbV9iTm90aWZ5OwotICAgIGJvb2wgbV9oYXNG
YWxsYmFja0NvbnRlbnQ7Ci0gIH07Ci19Ci0KLWNsYXNzIEZyYW1lTGlzdCA6IHB1YmxpYyBRVmFs
dWVMaXN0PGtodG1sOjpDaGlsZEZyYW1lPgotewotcHVibGljOgotICAgIEl0ZXJhdG9yIGZpbmQo
IGNvbnN0IFFTdHJpbmcgJm5hbWUgKTsKLX07Ci0KLXR5cGVkZWYgRnJhbWVMaXN0OjpDb25zdEl0
ZXJhdG9yIENvbnN0RnJhbWVJdDsKLXR5cGVkZWYgRnJhbWVMaXN0OjpJdGVyYXRvciBGcmFtZUl0
OwotCi1lbnVtIFJlZGlyZWN0aW9uU2NoZWR1bGVkIHsKLSAgICBub1JlZGlyZWN0aW9uU2NoZWR1
bGVkLAotICAgIHJlZGlyZWN0aW9uU2NoZWR1bGVkLAotICAgIGxvY2F0aW9uQ2hhbmdlU2NoZWR1
bGVkLAotICAgIGhpc3RvcnlOYXZpZ2F0aW9uU2NoZWR1bGVkLAotICAgIGxvY2F0aW9uQ2hhbmdl
U2NoZWR1bGVkRHVyaW5nTG9hZAotfTsKLQotY2xhc3MgS0hUTUxQYXJ0UHJpdmF0ZQotewotcHVi
bGljOgotICBLSFRNTFBhcnRQcml2YXRlKFFPYmplY3QqIHBhcmVudCkKLSAgewotICAgIG1fZG9j
ID0gMEw7Ci0gICAgbV9qc2NyaXB0ID0gMEw7Ci0gICAgbV9ydW5uaW5nU2NyaXB0cyA9IDA7Ci0g
ICAgbV9qb2IgPSAwTDsKLSAgICBtX2JDb21wbGV0ZSA9IHRydWU7Ci0gICAgbV9iTG9hZGluZ01h
aW5SZXNvdXJjZSA9IGZhbHNlOwotICAgIG1fYkxvYWRFdmVudEVtaXR0ZWQgPSB0cnVlOwotICAg
IG1fYlVubG9hZEV2ZW50RW1pdHRlZCA9IHRydWU7Ci0gICAgbV9jYWNoZVBvbGljeSA9IEtJTzo6
Q0NfVmVyaWZ5OwotICAgIG1fYkNsZWFyaW5nID0gZmFsc2U7Ci0gICAgbV9iQ2xlYXJlZCA9IHRy
dWU7Ci0gICAgbV96b29tRmFjdG9yID0gMTAwOwotICAgIG1fYkRuZCA9IHRydWU7Ci0gICAgbV9o
YXZlRW5jb2RpbmcgPSBmYWxzZTsKLSAgICBtX2FjdGl2ZUZyYW1lID0gMEw7Ci0gICAgbV9mcmFt
ZU5hbWVJZCA9IDE7Ci0KLSAgICBtX3Jlc3RvcmVkID0gZmFsc2U7Ci0KLSAgICBtX2ZvY3VzTm9k
ZU51bWJlciA9IC0xOwotICAgIG1fZm9jdXNOb2RlUmVzdG9yZWQgPSBmYWxzZTsKLQotICAgIG1f
YkpTY3JpcHRGb3JjZSA9IGZhbHNlOwotICAgIG1fYkpTY3JpcHRPdmVycmlkZSA9IGZhbHNlOwot
ICAgIG1fYkphdmFGb3JjZSA9IGZhbHNlOwotICAgIG1fYkphdmFPdmVycmlkZSA9IGZhbHNlOwot
ICAgIG1fYlBsdWdpbnNGb3JjZSA9IGZhbHNlOwotICAgIG1fYlBsdWdpbnNPdmVycmlkZSA9IGZh
bHNlOwotICAgIG1fb25seUxvY2FsUmVmZXJlbmNlcyA9IGZhbHNlOwotCi0gICAgbV9jYXJldEJs
aW5rVGltZXIgPSAwOwotICAgIG1fY2FyZXRWaXNpYmxlID0gZmFsc2U7Ci0gICAgbV9jYXJldEJs
aW5rcyA9IHRydWU7Ci0gICAgbV9jYXJldFBhaW50ID0gdHJ1ZTsKLSAgICAKLSAgICBtX3R5cGlu
Z1N0eWxlID0gMDsKLQotICAgIG1fbWV0YVJlZnJlc2hFbmFibGVkID0gdHJ1ZTsKLSAgICBtX2JI
VFRQUmVmcmVzaCA9IGZhbHNlOwotCi0gICAgbV9iRmlyc3REYXRhID0gdHJ1ZTsKLSAgICBtX3N1
Ym1pdEZvcm0gPSAwOwotICAgIG1fc2NoZWR1bGVkUmVkaXJlY3Rpb24gPSBub1JlZGlyZWN0aW9u
U2NoZWR1bGVkOwotICAgIG1fZGVsYXlSZWRpcmVjdCA9IDA7Ci0KLSAgICBtX2JQZW5kaW5nQ2hp
bGRSZWRpcmVjdGlvbiA9IGZhbHNlOwotICAgIG1fZXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rp
b24gPSBmYWxzZTsKLQotICAgIG1fY2FuY2VsV2l0aExvYWRJblByb2dyZXNzID0gZmFsc2U7Ci0g
ICAgCi0gICAgLy8gaW5oZXJpdCBzZXR0aW5ncyBmcm9tIHBhcmVudAotICAgIGlmKHBhcmVudCAm
JiBwYXJlbnQtPmluaGVyaXRzKCJGcmFtZSIpKQotICAgIHsKLSAgICAgICAgRnJhbWUgKmZyYW1l
ID0gc3RhdGljX2Nhc3Q8RnJhbWUqPihwYXJlbnQpOwotICAgICAgICBpZihmcmFtZS0+ZCkKLSAg
ICAgICAgewotICAgICAgICAgICAgbV9iSlNjcmlwdEZvcmNlID0gZnJhbWUtPmQtPm1fYkpTY3Jp
cHRGb3JjZTsKLSAgICAgICAgICAgIG1fYkpTY3JpcHRPdmVycmlkZSA9IGZyYW1lLT5kLT5tX2JK
U2NyaXB0T3ZlcnJpZGU7Ci0gICAgICAgICAgICBtX2JKYXZhRm9yY2UgPSBmcmFtZS0+ZC0+bV9i
SmF2YUZvcmNlOwotICAgICAgICAgICAgbV9iSmF2YU92ZXJyaWRlID0gZnJhbWUtPmQtPm1fYkph
dmFPdmVycmlkZTsKLSAgICAgICAgICAgIG1fYlBsdWdpbnNGb3JjZSA9IGZyYW1lLT5kLT5tX2JQ
bHVnaW5zRm9yY2U7Ci0gICAgICAgICAgICBtX2JQbHVnaW5zT3ZlcnJpZGUgPSBmcmFtZS0+ZC0+
bV9iUGx1Z2luc092ZXJyaWRlOwotICAgICAgICAgICAgLy8gU2FtZSBmb3IgU1NMIHNldHRpbmdz
Ci0gICAgICAgICAgICBtX29ubHlMb2NhbFJlZmVyZW5jZXMgPSBmcmFtZS0+ZC0+bV9vbmx5TG9j
YWxSZWZlcmVuY2VzOwotICAgICAgICAgICAgbV96b29tRmFjdG9yID0gZnJhbWUtPmQtPm1fem9v
bUZhY3RvcjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIG1faXNGb2N1c2VkID0gZmFsc2U7Ci0g
ICAgbV9mb2N1c05vZGVOdW1iZXIgPSAtMTsKLSAgICBtX2ZvY3VzTm9kZVJlc3RvcmVkID0gZmFs
c2U7Ci0gICAgbV9vcGVuZXIgPSAwOwotICAgIG1fb3BlbmVkQnlKUyA9IGZhbHNlOwotICAgIG1f
bmV3SlNJbnRlcnByZXRlckV4aXN0cyA9IGZhbHNlOwotICB9Ci0gIH5LSFRNTFBhcnRQcml2YXRl
KCkKLSAgewotICAgIGRlbGV0ZSBtX2V4dGVuc2lvbjsKLSAgICBkZWxldGUgbV9qc2NyaXB0Owot
ICAgIGlmIChtX3R5cGluZ1N0eWxlKQotICAgICAgICBtX3R5cGluZ1N0eWxlLT5kZXJlZigpOwot
ICB9Ci0KLSAgRnJhbWVMaXN0IG1fZnJhbWVzOwotICBRVmFsdWVMaXN0PGtodG1sOjpDaGlsZEZy
YW1lPiBtX29iamVjdHM7Ci0KLSAgUUd1YXJkZWRQdHI8S0hUTUxWaWV3PiBtX3ZpZXc7Ci0gIEtI
VE1MUGFydEJyb3dzZXJFeHRlbnNpb24gKm1fZXh0ZW5zaW9uOwotICBET006OkRvY3VtZW50SW1w
bCAqbV9kb2M7Ci0gIFJlZlB0cjxraHRtbDo6RGVjb2Rlcj4gbV9kZWNvZGVyOwotICBRU3RyaW5n
IG1fZW5jb2Rpbmc7Ci0gIFFTdHJpbmcgbV9zaGVldFVzZWQ7Ci0gIFFTdHJpbmcgc2NoZWR1bGVk
U2NyaXB0OwotICBSZWZQdHI8RE9NOjpOb2RlSW1wbD4gc2NoZWR1bGVkU2NyaXB0Tm9kZTsKLQot
ICBLSlNQcm94eUltcGwgKm1fanNjcmlwdDsKLSAgaW50IG1fcnVubmluZ1NjcmlwdHM7Ci0gIGJv
b2wgbV9iSlNjcmlwdEVuYWJsZWQgOjE7Ci0gIGJvb2wgbV9iSmF2YUVuYWJsZWQgOjE7Ci0gIGJv
b2wgbV9iUGx1Z2luc0VuYWJsZWQgOjE7Ci0gIGJvb2wgbV9iSlNjcmlwdEZvcmNlIDoxOwotICBi
b29sIG1fYkpTY3JpcHRPdmVycmlkZSA6MTsKLSAgYm9vbCBtX2JKYXZhRm9yY2UgOjE7Ci0gIGJv
b2wgbV9iSmF2YU92ZXJyaWRlIDoxOwotICBib29sIG1fYlBsdWdpbnNGb3JjZSA6MTsKLSAgYm9v
bCBtX21ldGFSZWZyZXNoRW5hYmxlZCA6MTsKLSAgYm9vbCBtX2JQbHVnaW5zT3ZlcnJpZGUgOjE7
Ci0gIGJvb2wgbV9yZXN0b3JlZCA6MTsKLSAgaW50IG1fZnJhbWVOYW1lSWQ7Ci0KLSAgS0hUTUxT
ZXR0aW5ncyAqbV9zZXR0aW5nczsKLQotICBLSU86OlRyYW5zZmVySm9iICogbV9qb2I7Ci0KLSAg
UVN0cmluZyBtX2tqc1N0YXR1c0JhclRleHQ7Ci0gIFFTdHJpbmcgbV9ranNEZWZhdWx0U3RhdHVz
QmFyVGV4dDsKLSAgUVN0cmluZyBtX2xhc3RNb2RpZmllZDsKLQotCi0gIGJvb2wgbV9iQ29tcGxl
dGU6MTsKLSAgYm9vbCBtX2JMb2FkaW5nTWFpblJlc291cmNlOjE7Ci0gIGJvb2wgbV9iTG9hZEV2
ZW50RW1pdHRlZDoxOwotICBib29sIG1fYlVubG9hZEV2ZW50RW1pdHRlZDoxOwotICBib29sIG1f
aGF2ZUVuY29kaW5nOjE7Ci0gIGJvb2wgbV9iSFRUUFJlZnJlc2g6MTsKLSAgYm9vbCBtX29ubHlM
b2NhbFJlZmVyZW5jZXMgOjE7Ci0gIGJvb2wgbV9yZWRpcmVjdExvY2tIaXN0b3J5OjE7Ci0gIGJv
b2wgbV9yZWRpcmVjdFVzZXJHZXN0dXJlOjE7Ci0gIAotICBLVVJMIG1fd29ya2luZ1VSTDsKLQot
ICBLSU86OkNhY2hlQ29udHJvbCBtX2NhY2hlUG9saWN5OwotICBRVGltZXIgbV9yZWRpcmVjdGlv
blRpbWVyOwotICBRVGltZSBtX3BhcnNldGltZTsKLQotICBSZWRpcmVjdGlvblNjaGVkdWxlZCBt
X3NjaGVkdWxlZFJlZGlyZWN0aW9uOwotICBkb3VibGUgbV9kZWxheVJlZGlyZWN0OwotICBRU3Ry
aW5nIG1fcmVkaXJlY3RVUkw7Ci0gIFFTdHJpbmcgbV9yZWRpcmVjdFJlZmVycmVyOwotICBpbnQg
bV9zY2hlZHVsZWRIaXN0b3J5TmF2aWdhdGlvblN0ZXBzOwotCi0gIGludCBtX3pvb21GYWN0b3I7
Ci0KLSAgUVN0cmluZyBtX3N0clNlbGVjdGVkVVJMOwotICBRU3RyaW5nIG1fc3RyU2VsZWN0ZWRV
UkxUYXJnZXQ7Ci0gIFFTdHJpbmcgbV9yZWZlcnJlcjsKLQotICBzdHJ1Y3QgU3VibWl0Rm9ybSB7
Ci0gICAgY29uc3QgY2hhciAqc3VibWl0QWN0aW9uOwotICAgIFFTdHJpbmcgc3VibWl0VXJsOwot
ICAgIGtodG1sOjpGb3JtRGF0YSBzdWJtaXRGb3JtRGF0YTsKLSAgICBRU3RyaW5nIHRhcmdldDsK
LSAgICBRU3RyaW5nIHN1Ym1pdENvbnRlbnRUeXBlOwotICAgIFFTdHJpbmcgc3VibWl0Qm91bmRh
cnk7Ci0gIH07Ci0KLSAgU3VibWl0Rm9ybSAqbV9zdWJtaXRGb3JtOwotCi0gIGJvb2wgbV9iTW91
c2VQcmVzc2VkOwotICBSZWZQdHI8RE9NOjpOb2RlSW1wbD4gbV9tb3VzZVByZXNzTm9kZTsgLy9u
b2RlIHVuZGVyIHRoZSBtb3VzZSB3aGVuIHRoZSBtb3VzZSB3YXMgcHJlc3NlZCAoc2V0IGluIHRo
ZSBtb3VzZSBoYW5kbGVyKQotCi0gIGtodG1sOjpFVGV4dEdyYW51bGFyaXR5IG1fc2VsZWN0aW9u
R3JhbnVsYXJpdHk7Ci0gIGJvb2wgbV9iZWdhblNlbGVjdGluZ1RleHQ7Ci0KLSAga2h0bWw6OlNl
bGVjdGlvbkNvbnRyb2xsZXIgbV9zZWxlY3Rpb247Ci0gIGtodG1sOjpTZWxlY3Rpb25Db250cm9s
bGVyIG1fZHJhZ0NhcmV0OwotICBraHRtbDo6U2VsZWN0aW9uQ29udHJvbGxlciBtX21hcms7Ci0g
IGludCBtX2NhcmV0QmxpbmtUaW1lcjsKLQotICBib29sIG1fY2FyZXRWaXNpYmxlOjE7Ci0gIGJv
b2wgbV9jYXJldEJsaW5rczoxOwotICBib29sIG1fY2FyZXRQYWludDoxOwotICBib29sIG1fYkRu
ZDoxOwotICBib29sIG1fYkZpcnN0RGF0YToxOwotICBib29sIG1fYkNsZWFyaW5nOjE7Ci0gIGJv
b2wgbV9iQ2xlYXJlZDoxOwotICBib29sIG1fYlNlY3VyaXR5SW5RdWVzdGlvbjoxOwotICBib29s
IG1fZm9jdXNOb2RlUmVzdG9yZWQ6MTsKLSAgYm9vbCBtX2lzRm9jdXNlZDoxOwotCi0gIGtodG1s
OjpFZGl0Q29tbWFuZFB0ciBtX2xhc3RFZGl0Q29tbWFuZDsKLSAgaW50IG1feFBvc0ZvclZlcnRp
Y2FsQXJyb3dOYXZpZ2F0aW9uOwotICBET006OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1w
bCAqbV90eXBpbmdTdHlsZTsKLQotICBpbnQgbV9mb2N1c05vZGVOdW1iZXI7Ci0KLSAgUVBvaW50
IG1fZHJhZ1N0YXJ0UG9zOwotCi0gIEtQYXJ0czo6UGFydCAqIG1fYWN0aXZlRnJhbWU7Ci0gIFFH
dWFyZGVkUHRyPEZyYW1lPiBtX29wZW5lcjsKLSAgYm9vbCBtX29wZW5lZEJ5SlM7Ci0gIGJvb2wg
bV9uZXdKU0ludGVycHJldGVyRXhpc3RzOyAvLyBzZXQgdG8gMSBieSBzZXRPcGVuZWRCeUpTLCBm
b3Igd2luZG93Lm9wZW4KLSAgYm9vbCBtX2JQZW5kaW5nQ2hpbGRSZWRpcmVjdGlvbjsKLSAgYm9v
bCBtX2V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uOwotICBib29sIG1fY2FuY2VsV2l0aExv
YWRJblByb2dyZXNzOwotCi0gIFFUaW1lciBtX2xpZmVTdXBwb3J0VGltZXI7Ci19OwotCi0jZW5k
aWYKSW5kZXg6IHBhZ2Uva2h0bWx2aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBwYWdlL2todG1sdmll
dy5jcHAJKHJldmlzaW9uIDExOTk0KQorKysgcGFnZS9raHRtbHZpZXcuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDEyMjQgKzAsMCBAQAotLyogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBw
cm9qZWN0Ci0gKgotICogQ29weXJpZ2h0IChDKSAxOTk4LCAxOTk5IFRvcmJlbiBXZWlzIDx3ZWlz
QGtkZS5vcmc+Ci0gKiAgICAgICAgICAgICAgICAgICAgIDE5OTkgTGFycyBLbm9sbCA8a25vbGxA
a2RlLm9yZz4KLSAqICAgICAgICAgICAgICAgICAgICAgMTk5OSBBbnR0aSBLb2l2aXN0byA8a29p
dmlzdG9Aa2RlLm9yZz4KLSAqICAgICAgICAgICAgICAgICAgICAgMjAwMCBEaXJrIE11ZWxsZXIg
PG11ZWxsZXJAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwg
SW5jLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKLSAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotICovCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAia2h0bWx2aWV3LmgiCi0KLSNpbmNsdWRlICJG
cmFtZS5oIgotI2luY2x1ZGUgImtodG1sX2V2ZW50cy5oIgotCi0jaW5jbHVkZSAiaHRtbC9odG1s
X2RvY3VtZW50aW1wbC5oIgotI2luY2x1ZGUgImh0bWwvaHRtbF9pbmxpbmVpbXBsLmgiCi0jaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudEltcGwuaCIKLSNpbmNsdWRlICJyZW5kZXJpbmcvcmVuZGVy
X2FyZW5hLmgiCi0jaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl9vYmplY3QuaCIKLSNpbmNsdWRl
ICJyZW5kZXJpbmcvcmVuZGVyX2NhbnZhcy5oIgotI2luY2x1ZGUgInJlbmRlcmluZy9yZW5kZXJf
c3R5bGUuaCIKLSNpbmNsdWRlICJyZW5kZXJpbmcvcmVuZGVyX3JlcGxhY2VkLmgiCi0jaW5jbHVk
ZSAicmVuZGVyaW5nL3JlbmRlcl9saW5lLmgiCi0jaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgotI2lu
Y2x1ZGUgInhtbC9kb21fbm9kZWltcGwuaCIKLSNpbmNsdWRlICJ4bWwvZG9tMl9ldmVudHNpbXBs
LmgiCi0jaW5jbHVkZSAieG1sL0V2ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJjc3MvY3Nzc3R5bGVz
ZWxlY3Rvci5oIgotI2luY2x1ZGUgIm1pc2MvaGVscGVyLmgiCi0jaW5jbHVkZSAia2h0bWxfc2V0
dGluZ3MuaCIKLSNpbmNsdWRlICJraHRtbHBhcnRfcC5oIgotCi0jaW5jbHVkZSA8a2N1cnNvci5o
PgotI2luY2x1ZGUgPGtzdGFuZGFyZGRpcnMuaD4KLQotI2luY2x1ZGUgPHFwYWludGVyLmg+Ci0j
aW5jbHVkZSA8cXBhaW50ZGV2aWNlbWV0cmljcy5oPgotCi0jaW5jbHVkZSA8a2ltYWdlaW8uaD4K
LSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxrZGVidWcuaD4KLQotI2luY2x1ZGUgIktX
UUFjY09iamVjdENhY2hlLmgiCi0KLSNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgotCi0vLyAjZGVm
aW5lIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcgMQotCi11c2luZyBuYW1lc3BhY2UgRE9N
OwotdXNpbmcgbmFtZXNwYWNlIEV2ZW50TmFtZXM7Ci11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwotdXNpbmcgbmFtZXNwYWNlIGtodG1sOwotCi1jbGFzcyBLSFRNTFZpZXdQcml2YXRlIHsKLXB1
YmxpYzoKLSAgICBLSFRNTFZpZXdQcml2YXRlKCkKLSAgICB7Ci0gICAgICAgIHJlcGFpbnRSZWN0
cyA9IDA7Ci0gICAgICAgIHVuZGVyTW91c2UgPSAwOwotICAgICAgICBjbGlja05vZGUgPSAwOwot
ICAgICAgICByZXNldCgpOwotICAgICAgICBsYXlvdXRUaW1lcklkID0gMDsKLSAgICAgICAgZGVs
YXllZExheW91dCA9IGZhbHNlOwotICAgICAgICBtb3VzZVByZXNzZWQgPSBmYWxzZTsKLSAgICAg
ICAgZG9GdWxsUmVwYWludCA9IHRydWU7Ci0gICAgICAgIGlzVHJhbnNwYXJlbnQgPSBmYWxzZTsK
LSAgICAgICAgdm1vZGUgPSBobW9kZSA9IFFTY3JvbGxWaWV3OjpBdXRvOwotICAgICAgICBmaXJz
dExheW91dCA9IHRydWU7Ci0gICAgICAgIG5lZWRUb0luaXRTY3JvbGxCYXJzID0gdHJ1ZTsKLSAg
ICB9Ci0gICAgfktIVE1MVmlld1ByaXZhdGUoKQotICAgIHsKLSAgICAgICAgaWYgKHVuZGVyTW91
c2UpCi0JICAgIHVuZGVyTW91c2UtPmRlcmVmKCk7Ci0gICAgICAgIGlmIChjbGlja05vZGUpCi0J
ICAgIGNsaWNrTm9kZS0+ZGVyZWYoKTsKLSAgICAgICAgZGVsZXRlIHJlcGFpbnRSZWN0czsKLSAg
ICB9Ci0gICAgdm9pZCByZXNldCgpCi0gICAgewotICAgICAgICBpZiAodW5kZXJNb3VzZSkKLQkg
ICAgdW5kZXJNb3VzZS0+ZGVyZWYoKTsKLQl1bmRlck1vdXNlID0gMDsKLSAgICAgICAgbGlua1By
ZXNzZWQgPSBmYWxzZTsKLSAgICAgICAgdXNlU2xvd1JlcGFpbnRzID0gZmFsc2U7Ci0gICAgICAg
IGRyYWdUYXJnZXQgPSAwOwotCWJvcmRlclRvdWNoZWQgPSBmYWxzZTsKLSAgICAgICAgc2Nyb2xs
QmFyTW92ZWQgPSBmYWxzZTsKLSAgICAgICAgaWdub3JlV2hlZWxFdmVudHMgPSBmYWxzZTsKLQli
b3JkZXJYID0gMzA7Ci0JYm9yZGVyWSA9IDMwOwotICAgICAgICBwcmV2TW91c2VYID0gLTE7Ci0g
ICAgICAgIHByZXZNb3VzZVkgPSAtMTsKLQljbGlja0NvdW50ID0gMDsKLSAgICAgICAgaWYgKGNs
aWNrTm9kZSkKLQkgICAgY2xpY2tOb2RlLT5kZXJlZigpOwotICAgICAgICBjbGlja05vZGUgPSAw
OwotCXNjcm9sbGluZ1NlbGYgPSBmYWxzZTsKLQlsYXlvdXRUaW1lcklkID0gMDsKLSAgICAgICAg
ZGVsYXllZExheW91dCA9IGZhbHNlOwotICAgICAgICBtb3VzZVByZXNzZWQgPSBmYWxzZTsKLSAg
ICAgICAgZG9GdWxsUmVwYWludCA9IHRydWU7Ci0gICAgICAgIGxheW91dFNjaGVkdWxpbmdFbmFi
bGVkID0gdHJ1ZTsKLSAgICAgICAgbGF5b3V0U3VwcHJlc3NlZCA9IGZhbHNlOwotICAgICAgICBs
YXlvdXRDb3VudCA9IDA7Ci0gICAgICAgIGZpcnN0TGF5b3V0ID0gdHJ1ZTsKLSAgICAgICAgaWYg
KHJlcGFpbnRSZWN0cykKLSAgICAgICAgICAgIHJlcGFpbnRSZWN0cy0+Y2xlYXIoKTsKLSAgICB9
Ci0KLSAgICBOb2RlSW1wbCAqdW5kZXJNb3VzZTsKLQotICAgIGJvb2wgYm9yZGVyVG91Y2hlZDox
OwotICAgIGJvb2wgYm9yZGVyU3RhcnQ6MTsKLSAgICBib29sIHNjcm9sbEJhck1vdmVkOjE7Ci0g
ICAgYm9vbCBkb0Z1bGxSZXBhaW50OjE7Ci0gICAgCi0gICAgUVNjcm9sbFZpZXc6OlNjcm9sbEJh
ck1vZGUgdm1vZGU7Ci0gICAgUVNjcm9sbFZpZXc6OlNjcm9sbEJhck1vZGUgaG1vZGU7Ci0gICAg
Ym9vbCBsaW5rUHJlc3NlZDsKLSAgICBib29sIHVzZVNsb3dSZXBhaW50czsKLSAgICBib29sIGln
bm9yZVdoZWVsRXZlbnRzOwotCi0gICAgaW50IGJvcmRlclgsIGJvcmRlclk7Ci0gICAgaW50IGNs
aWNrQ291bnQ7Ci0gICAgTm9kZUltcGwgKmNsaWNrTm9kZTsKLQotICAgIGludCBwcmV2TW91c2VY
LCBwcmV2TW91c2VZOwotICAgIGJvb2wgc2Nyb2xsaW5nU2VsZjsKLSAgICBpbnQgbGF5b3V0VGlt
ZXJJZDsKLSAgICBib29sIGRlbGF5ZWRMYXlvdXQ7Ci0gICAgCi0gICAgYm9vbCBsYXlvdXRTY2hl
ZHVsaW5nRW5hYmxlZDsKLSAgICBib29sIGxheW91dFN1cHByZXNzZWQ7Ci0gICAgaW50IGxheW91
dENvdW50OwotCi0gICAgYm9vbCBmaXJzdExheW91dDsKLSAgICBib29sIG5lZWRUb0luaXRTY3Jv
bGxCYXJzOwotICAgIGJvb2wgbW91c2VQcmVzc2VkOwotICAgIGJvb2wgaXNUcmFuc3BhcmVudDsK
LSAgICAKLSAgICAvLyBVc2VkIGJ5IG9iamVjdHMgZHVyaW5nIGxheW91dCB0byBjb21tdW5pY2F0
ZSByZXBhaW50cyB0aGF0IG5lZWQgdG8gdGFrZSBwbGFjZSBvbmx5Ci0gICAgLy8gYWZ0ZXIgYWxs
IGxheW91dCBoYXMgYmVlbiBjb21wbGV0ZWQuCi0gICAgUVB0ckxpc3Q8UmVuZGVyT2JqZWN0OjpS
ZXBhaW50SW5mbz4qIHJlcGFpbnRSZWN0czsKLSAgICAKLSAgICBSZWZQdHI8Tm9kZUltcGw+IGRy
YWdUYXJnZXQ7Ci19OwotCi1LSFRNTFZpZXc6OktIVE1MVmlldyggRnJhbWUgKmZyYW1lLCBRV2lk
Z2V0ICpwYXJlbnQsIGNvbnN0IGNoYXIgKm5hbWUpCi0gICAgOiBRU2Nyb2xsVmlldyggcGFyZW50
LCBuYW1lLCBXUmVzaXplTm9FcmFzZSB8IFdSZXBhaW50Tm9FcmFzZSB8IFdQYWludFVuY2xpcHBl
ZCApLAotICAgICAgX3JlZkNvdW50KDEpCi17Ci0gICAgbV9tZWRpdW0gPSAic2NyZWVuIjsKLQot
ICAgIG1fZnJhbWUgPSBmcmFtZTsKLSAgICBtX2ZyYW1lLT5yZWYoKTsKLSAgICBkID0gbmV3IEtI
VE1MVmlld1ByaXZhdGU7Ci0KLSAgICBjb25uZWN0KHRoaXMsIFNJR05BTChjb250ZW50c01vdmlu
ZyhpbnQsIGludCkpLCB0aGlzLCBTTE9UKHNsb3RTY3JvbGxCYXJNb3ZlZCgpKSk7Ci0KLSAgICBL
SW1hZ2VJTzo6cmVnaXN0ZXJGb3JtYXRzKCk7Ci0KLSAgICBpbml0KCk7Ci0KLSAgICB2aWV3cG9y
dCgpLT5zaG93KCk7Ci19Ci0KLUtIVE1MVmlldzo6fktIVE1MVmlldygpCi17Ci0gICAgcmVzZXRT
Y3JvbGxCYXJzKCk7Ci0KLSAgICBhc3NlcnQoX3JlZkNvdW50ID09IDApOwotCi0gICAgaWYgKG1f
ZnJhbWUpCi0gICAgewotICAgICAgICAvL1dBQkE6IElzIHRoaXMgT2s/IERvIEkgbmVlZCB0byBk
ZXJlZiBpdCBhcyB3ZWxsPwotICAgICAgICAvL0RvZXMgdGhpcyBuZWVkIHRvIGJlIGRvbmUgc29t
ZXdoZXJlIGVsc2U/Ci0gICAgICAgIERvY3VtZW50SW1wbCAqZG9jID0gbV9mcmFtZS0+eG1sRG9j
SW1wbCgpOwotICAgICAgICBpZiAoZG9jKQotICAgICAgICAgICAgZG9jLT5kZXRhY2goKTsKLQot
ICAgICAgICBtX2ZyYW1lLT5kZXJlZigpOwotICAgIH0KLQotICAgIGRlbGV0ZSBkOyBkID0gMDsK
LX0KLQotdm9pZCBLSFRNTFZpZXc6OmNsZWFyUGFydCgpCi17Ci0gICAgaWYgKG1fZnJhbWUpewot
ICAgICAgICBtX2ZyYW1lLT5kZXJlZigpOwotICAgICAgICBtX2ZyYW1lID0gMDsKLSAgICB9Ci19
Ci0KLXZvaWQgS0hUTUxWaWV3OjpyZXNldFNjcm9sbEJhcnMoKQotewotICAgIC8vIFJlc2V0IHRo
ZSBkb2N1bWVudCdzIHNjcm9sbGJhcnMgYmFjayB0byBvdXIgZGVmYXVsdHMgYmVmb3JlIHdlIHlp
ZWxkIHRoZSBmbG9vci4KLSAgICBkLT5maXJzdExheW91dCA9IHRydWU7Ci0gICAgc3VwcHJlc3NT
Y3JvbGxCYXJzKHRydWUpOwotICAgIFFTY3JvbGxWaWV3OjpzZXRWU2Nyb2xsQmFyTW9kZShkLT52
bW9kZSk7Ci0gICAgUVNjcm9sbFZpZXc6OnNldEhTY3JvbGxCYXJNb2RlKGQtPmhtb2RlKTsKLSAg
ICBzdXBwcmVzc1Njcm9sbEJhcnMoZmFsc2UpOwotfQotCi12b2lkIEtIVE1MVmlldzo6aW5pdCgp
Ci17Ci0KLSAgICBzZXRGb2N1c1BvbGljeShRV2lkZ2V0OjpTdHJvbmdGb2N1cyk7Ci0gICAgdmll
d3BvcnQoKS0+c2V0Rm9jdXNQb2xpY3koIFFXaWRnZXQ6OldoZWVsRm9jdXMgKTsKLSAgICB2aWV3
cG9ydCgpLT5zZXRGb2N1c1Byb3h5KHRoaXMpOwotCi0gICAgX21hcmdpbldpZHRoID0gLTE7IC8v
IHVuZGVmaW5lZAotICAgIF9tYXJnaW5IZWlnaHQgPSAtMTsKLSAgICBfd2lkdGggPSAwOwotICAg
IF9oZWlnaHQgPSAwOwotfQotCi12b2lkIEtIVE1MVmlldzo6Y2xlYXIoKQotewotLy8gICAgdmll
d3BvcnQoKS0+ZXJhc2UoKTsKLQotICAgIHNldFN0YXRpY0JhY2tncm91bmQoZmFsc2UpOwotICAg
IAotICAgIG1fZnJhbWUtPmNsZWFyU2VsZWN0aW9uKCk7Ci0KLSAgICBkLT5yZXNldCgpOwotCi0j
aWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwotICAgIGlmIChkLT5sYXlvdXRUaW1l
cklkICYmIG1fZnJhbWUtPnhtbERvY0ltcGwoKSAmJiAhbV9mcmFtZS0+eG1sRG9jSW1wbCgpLT5v
d25lckVsZW1lbnQoKSkKLSAgICAgICAgcHJpbnRmKCJLaWxsaW5nIHRoZSBsYXlvdXQgdGltZXIg
ZnJvbSBhIGNsZWFyIGF0ICVkXG4iLCBtX2ZyYW1lLT54bWxEb2NJbXBsKCktPmVsYXBzZWRUaW1l
KCkpOwotI2VuZGlmCi0gICAgCi0gICAga2lsbFRpbWVycygpOwotICAgIGVtaXQgY2xlYXJlZCgp
OwotCi0gICAgc3VwcHJlc3NTY3JvbGxCYXJzKHRydWUpOwotfQotCi12b2lkIEtIVE1MVmlldzo6
cmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50KiBlKQotewotICAgIGlmIChtX2ZyYW1lICYmIG1fZnJh
bWUtPnhtbERvY0ltcGwoKSkKLSAgICAgICAgbV9mcmFtZS0+eG1sRG9jSW1wbCgpLT5kaXNwYXRj
aFdpbmRvd0V2ZW50KEV2ZW50TmFtZXM6OnJlc2l6ZUV2ZW50LCBmYWxzZSwgZmFsc2UpOwotfQot
Ci12b2lkIEtIVE1MVmlldzo6aW5pdFNjcm9sbEJhcnMoKQotewotICAgIGlmICghZC0+bmVlZFRv
SW5pdFNjcm9sbEJhcnMpCi0gICAgICAgIHJldHVybjsKLSAgICBkLT5uZWVkVG9Jbml0U2Nyb2xs
QmFycyA9IGZhbHNlOwotICAgIHNldFNjcm9sbEJhcnNNb2RlKGhTY3JvbGxCYXJNb2RlKCkpOwot
fQotCi12b2lkIEtIVE1MVmlldzo6c2V0TWFyZ2luV2lkdGgoaW50IHcpCi17Ci0gICAgLy8gbWFr
ZSBpdCB1cGRhdGUgdGhlIHJlbmRlcmluZyBhcmVhIHdoZW4gc2V0Ci0gICAgX21hcmdpbldpZHRo
ID0gdzsKLX0KLQotdm9pZCBLSFRNTFZpZXc6OnNldE1hcmdpbkhlaWdodChpbnQgaCkKLXsKLSAg
ICAvLyBtYWtlIGl0IHVwZGF0ZSB0aGUgcmVuZGVyaW5nIGFyZWEgd2hlbiBzZXQKLSAgICBfbWFy
Z2luSGVpZ2h0ID0gaDsKLX0KLQotdm9pZCBLSFRNTFZpZXc6OmFkanVzdFZpZXdTaXplKCkKLXsK
LSAgICBpZiggbV9mcmFtZS0+eG1sRG9jSW1wbCgpICkgewotICAgICAgICBEb2N1bWVudEltcGwg
KmRvY3VtZW50ID0gbV9mcmFtZS0+eG1sRG9jSW1wbCgpOwotCi0gICAgICAgIFJlbmRlckNhbnZh
cyogcm9vdCA9IHN0YXRpY19jYXN0PFJlbmRlckNhbnZhcyAqPihkb2N1bWVudC0+cmVuZGVyZXIo
KSk7Ci0gICAgICAgIGlmICggIXJvb3QgKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAK
LSAgICAgICAgaW50IGRvY3cgPSByb290LT5kb2NXaWR0aCgpOwotICAgICAgICBpbnQgZG9jaCA9
IHJvb3QtPmRvY0hlaWdodCgpOwotICAgIAotICAgICAgICByZXNpemVDb250ZW50cyhkb2N3LCBk
b2NoKTsKLSAgICB9Ci19Ci0KLXZvaWQgS0hUTUxWaWV3OjphcHBseU92ZXJmbG93VG9WaWV3cG9y
dChSZW5kZXJPYmplY3QqIG8sIFNjcm9sbEJhck1vZGUmIGhNb2RlLCBTY3JvbGxCYXJNb2RlJiB2
TW9kZSkKLXsKLSAgICAvLyBIYW5kbGUgdGhlIG92ZXJmbG93OmhpZGRlbi9zY3JvbGwgY2FzZSBm
b3IgdGhlIGJvZHkvaHRtbCBlbGVtZW50cy4gIFdpbklFIHRyZWF0cwotICAgIC8vIG92ZXJmbG93
OmhpZGRlbiBhbmQgb3ZlcmZsb3c6c2Nyb2xsIG9uIDxib2R5PiBhcyBhcHBseWluZyB0byB0aGUg
ZG9jdW1lbnQncwotICAgIC8vIHNjcm9sbGJhcnMuICBUaGUgQ1NTMi4xIGRyYWZ0IHN0YXRlcyB0
aGF0IEhUTUwgVUFzIHNob3VsZCB1c2UgdGhlIDxodG1sPiBvciA8Ym9keT4gZWxlbWVudCBhbmQg
WE1ML1hIVE1MIFVBcyBzaG91bGQKLSAgICAvLyB1c2UgdGhlIHJvb3QgZWxlbWVudC4KLSAgICBz
d2l0Y2goby0+c3R5bGUoKS0+b3ZlcmZsb3coKSkgewotICAgICAgICBjYXNlIE9ISURERU46Ci0g
ICAgICAgICAgICBoTW9kZSA9IHZNb2RlID0gQWx3YXlzT2ZmOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgT1NDUk9MTDoKLSAgICAgICAgICAgIGhNb2RlID0gdk1vZGUgPSBBbHdh
eXNPbjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE9BVVRPOgotCSAgICBoTW9k
ZSA9IHZNb2RlID0gQXV0bzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgLy8gRG9uJ3Qgc2V0IGl0IGF0IGFsbC4KLSAgICAgICAgICAgIDsKLSAgICB9
Ci19Ci0KLWJvb2wgS0hUTUxWaWV3OjppbkxheW91dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGQt
PmxheW91dFN1cHByZXNzZWQ7Ci19Ci0KLWludCBLSFRNTFZpZXc6OmxheW91dENvdW50KCkgY29u
c3QKLXsKLSAgICByZXR1cm4gZC0+bGF5b3V0Q291bnQ7Ci19Ci0KLWJvb2wgS0hUTUxWaWV3Ojpu
ZWVkc0Z1bGxSZXBhaW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gZC0+ZG9GdWxsUmVwYWludDsK
LX0KLQotdm9pZCBLSFRNTFZpZXc6OmFkZFJlcGFpbnRJbmZvKFJlbmRlck9iamVjdCogbywgY29u
c3QgUVJlY3QmIHIpCi17Ci0gICAgaWYgKCFkLT5yZXBhaW50UmVjdHMpIHsKLSAgICAgICAgZC0+
cmVwYWludFJlY3RzID0gbmV3IFFQdHJMaXN0PFJlbmRlck9iamVjdDo6UmVwYWludEluZm8+Owot
ICAgICAgICBkLT5yZXBhaW50UmVjdHMtPnNldEF1dG9EZWxldGUodHJ1ZSk7Ci0gICAgfQotICAg
IAotICAgIGQtPnJlcGFpbnRSZWN0cy0+YXBwZW5kKG5ldyBSZW5kZXJPYmplY3Q6OlJlcGFpbnRJ
bmZvKG8sIHIpKTsKLX0KLQotdm9pZCBLSFRNTFZpZXc6OmxheW91dCgpCi17Ci0gICAgaWYgKGQt
PmxheW91dFN1cHByZXNzZWQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBraWxsVGltZXIo
ZC0+bGF5b3V0VGltZXJJZCk7Ci0gICAgZC0+bGF5b3V0VGltZXJJZCA9IDA7Ci0gICAgZC0+ZGVs
YXllZExheW91dCA9IGZhbHNlOwotCi0gICAgaWYgKCFtX2ZyYW1lKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiBEbyB3ZSBuZWVkIHRvIHNldCBfd2lkdGggaGVyZT8KLSAgICAgICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSBzZXQgX2hlaWdodCBoZXJlIHRvbz8KLSAgICAgICAgX3dpZHRoID0gdmlzaWJsZVdp
ZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBEb2N1bWVudEltcGwqIGRvY3Vt
ZW50ID0gbV9mcmFtZS0+eG1sRG9jSW1wbCgpOwotICAgIGlmICghZG9jdW1lbnQpIHsKLSAgICAg
ICAgLy8gRklYTUU6IFNob3VsZCB3ZSBzZXQgX2hlaWdodCBoZXJlIHRvbz8KLSAgICAgICAgX3dp
ZHRoID0gdmlzaWJsZVdpZHRoKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkLT5s
YXlvdXRTY2hlZHVsaW5nRW5hYmxlZCA9IGZhbHNlOwotCi0gICAgLy8gQWx3YXlzIGVuc3VyZSBv
dXIgc3R5bGUgaW5mbyBpcyB1cC10by1kYXRlLiAgVGhpcyBjYW4gaGFwcGVuIGluIHNpdHVhdGlv
bnMgd2hlcmUKLSAgICAvLyB0aGUgbGF5b3V0IGJlYXRzIGFueSBzb3J0IG9mIHN0eWxlIHJlY2Fs
YyB1cGRhdGUgdGhhdCBuZWVkcyB0byBvY2N1ci4KLSAgICBpZiAoZG9jdW1lbnQtPmhhc0NoYW5n
ZWRDaGlsZCgpKQotICAgICAgICBkb2N1bWVudC0+cmVjYWxjU3R5bGUoKTsKLQotICAgIFJlbmRl
ckNhbnZhcyogcm9vdCA9IHN0YXRpY19jYXN0PFJlbmRlckNhbnZhcyo+KGRvY3VtZW50LT5yZW5k
ZXJlcigpKTsKLSAgICBpZiAoIXJvb3QpIHsKLSAgICAgICAgLy8gRklYTUU6IERvIHdlIG5lZWQg
dG8gc2V0IF93aWR0aCBvciBfaGVpZ2h0IGhlcmU/Ci0gICAgICAgIGQtPmxheW91dFNjaGVkdWxp
bmdFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFNjcm9sbEJh
ck1vZGUgaE1vZGUgPSBkLT5obW9kZTsKLSAgICBTY3JvbGxCYXJNb2RlIHZNb2RlID0gZC0+dm1v
ZGU7Ci0gICAgCi0gICAgUmVuZGVyT2JqZWN0KiByb290UmVuZGVyZXIgPSBkb2N1bWVudC0+ZG9j
dW1lbnRFbGVtZW50KCkgPyBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlcmVyKCkg
OiAwOwotICAgIGlmIChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSkgewotICAgICAgICBOb2Rl
SW1wbCAqYm9keSA9IHN0YXRpY19jYXN0PEhUTUxEb2N1bWVudEltcGwqPihkb2N1bWVudCktPmJv
ZHkoKTsKLSAgICAgICAgaWYgKGJvZHkgJiYgYm9keS0+cmVuZGVyZXIoKSkgewotICAgICAgICAg
ICAgaWYgKGJvZHktPmhhc1RhZ05hbWUoZnJhbWVzZXRUYWcpKSB7Ci0gICAgICAgICAgICAgICAg
Ym9keS0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAg
dk1vZGUgPSBBbHdheXNPZmY7Ci0gICAgICAgICAgICAgICAgaE1vZGUgPSBBbHdheXNPZmY7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChib2R5LT5oYXNUYWdOYW1lKGJvZHlU
YWcpKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiBvID0gKHJvb3RSZW5kZXJlci0+
c3R5bGUoKS0+b3ZlcmZsb3coKSA9PSBPVklTSUJMRSkgPyBib2R5LT5yZW5kZXJlcigpIDogcm9v
dFJlbmRlcmVyOwotICAgICAgICAgICAgICAgIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KG8sIGhN
b2RlLCB2TW9kZSk7IC8vIE9ubHkgYXBwbGllcyB0byBIVE1MIFVBcywgbm90IHRvIFhNTC9YSFRN
TCBVQXMKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlIGlmIChyb290
UmVuZGVyZXIpCi0gICAgICAgIGFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KHJvb3RSZW5kZXJlciwg
aE1vZGUsIHZNb2RlKTsgLy8gWE1ML1hIVE1MIFVBcyB1c2UgdGhlIHJvb3QgZWxlbWVudC4KLQot
I2lmZGVmIElOU1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKLSAgICBpZiAoZC0+Zmlyc3RMYXlv
dXQgJiYgIWRvY3VtZW50LT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgcHJpbnRmKCJFbGFwc2Vk
IHRpbWUgYmVmb3JlIGZpcnN0IGxheW91dDogJWRcbiIsIGRvY3VtZW50LT5lbGFwc2VkVGltZSgp
KTsKLSNlbmRpZgotCi0gICAgZC0+ZG9GdWxsUmVwYWludCA9IGQtPmZpcnN0TGF5b3V0IHx8IHJv
b3QtPnByaW50aW5nTW9kZSgpOwotICAgIGlmIChkLT5yZXBhaW50UmVjdHMpCi0gICAgICAgIGQt
PnJlcGFpbnRSZWN0cy0+Y2xlYXIoKTsKLQotICAgIC8vIE5vdyBzZXQgb3VyIHNjcm9sbGJhciBz
dGF0ZSBmb3IgdGhlIGxheW91dC4KLSAgICBTY3JvbGxCYXJNb2RlIGN1cnJlbnRITW9kZSA9IGhT
Y3JvbGxCYXJNb2RlKCk7Ci0gICAgU2Nyb2xsQmFyTW9kZSBjdXJyZW50Vk1vZGUgPSB2U2Nyb2xs
QmFyTW9kZSgpOwotCi0gICAgYm9vbCBkaWRGaXJzdExheW91dCA9IGZhbHNlOwotICAgIGlmIChk
LT5maXJzdExheW91dCB8fCAoaE1vZGUgIT0gY3VycmVudEhNb2RlIHx8IHZNb2RlICE9IGN1cnJl
bnRWTW9kZSkpIHsKLSAgICAgICAgc3VwcHJlc3NTY3JvbGxCYXJzKHRydWUpOwotICAgICAgICBp
ZiAoZC0+Zmlyc3RMYXlvdXQpIHsKLSAgICAgICAgICAgIGQtPmZpcnN0TGF5b3V0ID0gZmFsc2U7
Ci0gICAgICAgICAgICBkaWRGaXJzdExheW91dCA9IHRydWU7Ci0gICAgICAgICAgICAKLSAgICAg
ICAgICAgIC8vIFNldCB0aGUgaW5pdGlhbCB2TW9kZSB0byBBbHdheXNPbiBpZiB3ZSdyZSBhdXRv
LgotICAgICAgICAgICAgaWYgKHZNb2RlID09IEF1dG8pCi0gICAgICAgICAgICAgICAgUVNjcm9s
bFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKEFsd2F5c09uKTsgLy8gVGhpcyBjYXVzZXMgYSB2ZXJ0
aWNhbCBzY3JvbGxiYXIgdG8gYXBwZWFyLgotICAgICAgICAgICAgLy8gU2V0IHRoZSBpbml0aWFs
IGhNb2RlIHRvIEFsd2F5c09mZiBpZiB3ZSdyZSBhdXRvLgotICAgICAgICAgICAgaWYgKGhNb2Rl
ID09IEF1dG8pCi0gICAgICAgICAgICAgICAgUVNjcm9sbFZpZXc6OnNldEhTY3JvbGxCYXJNb2Rl
KEFsd2F5c09mZik7IC8vIFRoaXMgY2F1c2VzIGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIgdG8gZGlz
YXBwZWFyLgotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoaE1vZGUgPT0gdk1vZGUp
Ci0gICAgICAgICAgICBRU2Nyb2xsVmlldzo6c2V0U2Nyb2xsQmFyc01vZGUoaE1vZGUpOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIFFTY3JvbGxWaWV3OjpzZXRIU2Nyb2xsQmFyTW9kZSho
TW9kZSk7Ci0gICAgICAgICAgICBRU2Nyb2xsVmlldzo6c2V0VlNjcm9sbEJhck1vZGUodk1vZGUp
OwotICAgICAgICB9Ci0KLSAgICAgICAgc3VwcHJlc3NTY3JvbGxCYXJzKGZhbHNlLCB0cnVlKTsK
LSAgICB9Ci0KLSAgICBpbnQgb2xkSGVpZ2h0ID0gX2hlaWdodDsKLSAgICBpbnQgb2xkV2lkdGgg
PSBfd2lkdGg7Ci0gICAgCi0gICAgX2hlaWdodCA9IHZpc2libGVIZWlnaHQoKTsKLSAgICBfd2lk
dGggPSB2aXNpYmxlV2lkdGgoKTsKLQotICAgIGlmIChvbGRIZWlnaHQgIT0gX2hlaWdodCB8fCBv
bGRXaWR0aCAhPSBfd2lkdGgpCi0gICAgICAgIGQtPmRvRnVsbFJlcGFpbnQgPSB0cnVlOwotICAg
IAotICAgIFJlbmRlckxheWVyKiBsYXllciA9IHJvb3QtPmxheWVyKCk7Ci0gICAgIAotICAgIGlm
ICghZC0+ZG9GdWxsUmVwYWludCkgewotICAgICAgICBsYXllci0+Y29tcHV0ZVJlcGFpbnRSZWN0
cygpOwotICAgICAgICByb290LT5yZXBhaW50T2JqZWN0c0JlZm9yZUxheW91dCgpOwotICAgIH0K
LQotICAgIHJvb3QtPmxheW91dCgpOwotCi0gICAgbV9mcmFtZS0+aW52YWxpZGF0ZVNlbGVjdGlv
bigpOwotICAgCi0gICAgZC0+bGF5b3V0U2NoZWR1bGluZ0VuYWJsZWQ9dHJ1ZTsKLSAgICBkLT5s
YXlvdXRTdXBwcmVzc2VkID0gZmFsc2U7Ci0KLSAgICBpZiAoIXJvb3QtPnByaW50aW5nTW9kZSgp
KQotICAgICAgICByZXNpemVDb250ZW50cyhsYXllci0+d2lkdGgoKSwgbGF5ZXItPmhlaWdodCgp
KTsKLQotICAgIC8vIE5vdyB1cGRhdGUgdGhlIHBvc2l0aW9ucyBvZiBhbGwgbGF5ZXJzLgotICAg
IGxheWVyLT51cGRhdGVMYXllclBvc2l0aW9ucyhkLT5kb0Z1bGxSZXBhaW50KTsKLQotICAgIC8v
IFdlIHVwZGF0ZSBvdXIgd2lkZ2V0IHBvc2l0aW9ucyByaWdodCBhZnRlciBkb2luZyBhIGxheW91
dC4KLSAgICByb290LT51cGRhdGVXaWRnZXRQb3NpdGlvbnMoKTsKLSAgICAKLSAgICBpZiAoZC0+
cmVwYWludFJlY3RzICYmICFkLT5yZXBhaW50UmVjdHMtPmlzRW1wdHkoKSkgewotICAgICAgICAv
LyBGSVhNRTogQ291bGQgb3B0aW1pemUgdGhpcyBhbmQgaGF2ZSBvYmplY3RzIHJlbW92ZWQgZnJv
bSB0aGlzIGxpc3QKLSAgICAgICAgLy8gaWYgdGhleSBldmVyIGRvIGZ1bGwgcmVwYWludHMuCi0g
ICAgICAgIFJlbmRlck9iamVjdDo6UmVwYWludEluZm8qIHI7Ci0gICAgICAgIFFQdHJMaXN0SXRl
cmF0b3I8UmVuZGVyT2JqZWN0OjpSZXBhaW50SW5mbz4gaXQoKmQtPnJlcGFpbnRSZWN0cyk7Ci0g
ICAgICAgIGZvciAoIDsgKHIgPSBpdC5jdXJyZW50KCkpOyArK2l0KQotICAgICAgICAgICAgci0+
bV9vYmplY3QtPnJlcGFpbnRSZWN0YW5nbGUoci0+bV9yZXBhaW50UmVjdCk7Ci0gICAgICAgIGQt
PnJlcGFpbnRSZWN0cy0+Y2xlYXIoKTsKLSAgICB9Ci0gICAgCi0gICAgZC0+bGF5b3V0Q291bnQr
KzsKLSAgICBpZiAoS1dRQWNjT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCi0g
ICAgICAgIHJvb3QtPmRvY3VtZW50KCktPmdldEFjY09iamVjdENhY2hlKCktPnBvc3ROb3RpZmlj
YXRpb24ocm9vdCwgIkFYTGF5b3V0Q29tcGxldGUiKTsKLQotICAgIHVwZGF0ZURhc2hib2FyZFJl
Z2lvbnMoKTsKLQotICAgIGlmIChyb290LT5uZWVkc0xheW91dCgpKSB7Ci0gICAgICAgIC8vcURl
YnVnKCJuZWVkcyBsYXlvdXQsIGRlbGF5aW5nIHJlcGFpbnQiKTsKLSAgICAgICAgc2NoZWR1bGVS
ZWxheW91dCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHNldFN0YXRpY0JhY2tncm91
bmQoZC0+dXNlU2xvd1JlcGFpbnRzKTsKLQotICAgIGlmIChkaWRGaXJzdExheW91dCkgewotICAg
ICAgICBtX2ZyYW1lLT5kaWRGaXJzdExheW91dCgpOwotICAgIH0KLX0KLQotdm9pZCBLSFRNTFZp
ZXc6OnVwZGF0ZURhc2hib2FyZFJlZ2lvbnMoKQotewotICAgIERvY3VtZW50SW1wbCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT54bWxEb2NJbXBsKCk7Ci0gICAgaWYgKGRvY3VtZW50LT5oYXNEYXNoYm9h
cmRSZWdpb25zKCkpIHsKLSAgICAgICAgUVZhbHVlTGlzdDxEYXNoYm9hcmRSZWdpb25WYWx1ZT4g
bmV3UmVnaW9ucyA9IGRvY3VtZW50LT5yZW5kZXJlcigpLT5jb21wdXRlRGFzaGJvYXJkUmVnaW9u
cygpOwotICAgICAgICBRVmFsdWVMaXN0PERhc2hib2FyZFJlZ2lvblZhbHVlPiBjdXJyZW50UmVn
aW9ucyA9IGRvY3VtZW50LT5kYXNoYm9hcmRSZWdpb25zKCk7Ci0JZG9jdW1lbnQtPnNldERhc2hi
b2FyZFJlZ2lvbnMobmV3UmVnaW9ucyk7Ci0JTWFjKG1fZnJhbWUpLT5kYXNoYm9hcmRSZWdpb25z
Q2hhbmdlZCgpOwotICAgIH0KLX0KLQotLy8KLS8vIEV2ZW50IEhhbmRsaW5nCi0vLwotLy8vLy8v
Ly8vLy8vLy8vLy8KLQotdm9pZCBLSFRNTFZpZXc6OnZpZXdwb3J0TW91c2VQcmVzc0V2ZW50KCBR
TW91c2VFdmVudCAqX21vdXNlICkKLXsKLSAgICBpZighbV9mcmFtZS0+eG1sRG9jSW1wbCgpKSBy
ZXR1cm47Ci0KLSAgICBSZWZQdHI8S0hUTUxWaWV3PiBwcm90ZWN0b3IodGhpcyk7Ci0KLSAgICBp
bnQgeG0sIHltOwotICAgIHZpZXdwb3J0VG9Db250ZW50cyhfbW91c2UtPngoKSwgX21vdXNlLT55
KCksIHhtLCB5bSk7Ci0KLSAgICBkLT5tb3VzZVByZXNzZWQgPSB0cnVlOwotCi0gICAgTm9kZUlt
cGw6Ok1vdXNlRXZlbnQgbWV2KCBfbW91c2UtPnN0YXRlQWZ0ZXIoKSwgTm9kZUltcGw6Ok1vdXNl
UHJlc3MgKTsKLSAgICBtX2ZyYW1lLT54bWxEb2NJbXBsKCktPnByZXBhcmVNb3VzZUV2ZW50KCBm
YWxzZSwgeG0sIHltLCAmbWV2ICk7Ci0KLSAgICBpZiAoTWFjKG1fZnJhbWUpLT5wYXNzU3ViZnJh
bWVFdmVudFRvU3ViZnJhbWUobWV2KSkgewotICAgICAgICBpbnZhbGlkYXRlQ2xpY2soKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGQtPmNsaWNrQ291bnQgPSBfbW91c2UtPmNsaWNr
Q291bnQoKTsKLSAgICBpZiAoZC0+Y2xpY2tOb2RlKQotICAgICAgICBkLT5jbGlja05vZGUtPmRl
cmVmKCk7Ci0gICAgZC0+Y2xpY2tOb2RlID0gbWV2LmlubmVyTm9kZS5nZXQoKTsKLSAgICBpZiAo
ZC0+Y2xpY2tOb2RlKQotICAgICAgICBkLT5jbGlja05vZGUtPnJlZigpOwotCi0gICAgYm9vbCBz
d2FsbG93RXZlbnQgPSBkaXNwYXRjaE1vdXNlRXZlbnQobW91c2Vkb3duRXZlbnQsbWV2LmlubmVy
Tm9kZS5nZXQoKSx0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGQtPmNsaWNrQ291bnQsX21vdXNlLHRydWUsTm9kZUltcGw6Ok1vdXNlUHJlc3MpOwotCi0g
ICAgaWYgKCFzd2FsbG93RXZlbnQpIHsKLQlNb3VzZVByZXNzRXZlbnQgZXZlbnQoIF9tb3VzZSwg
eG0sIHltLCBtZXYudXJsLCBtZXYudGFyZ2V0LCBtZXYuaW5uZXJOb2RlLmdldCgpICk7Ci0JUUFw
cGxpY2F0aW9uOjpzZW5kRXZlbnQoIG1fZnJhbWUsICZldmVudCApOwotICAgICAgICAvLyBNYW55
IEFLIHdpZGdldHMgcnVuIHRoZWlyIG93biBldmVudCBsb29wcyBhbmQgY29uc3VtZSBldmVudHMg
d2hpbGUgdGhlIG1vdXNlIGlzIGRvd24uCi0gICAgICAgIC8vIFdoZW4gdGhleSBmaW5pc2gsIGN1
cnJlbnRFdmVudCBpcyB0aGUgbW91c2VVcCB0aGF0IHRoZXkgZXhpdGVkIG9uLiAgV2UgbmVlZCB0
byB1cGRhdGUKLSAgICAgICAgLy8gdGhlIGtodG1sIHN0YXRlIHdpdGggdGhpcyBtb3VzZVVwLCB3
aGljaCBraHRtbCBuZXZlciBzYXcuCi0gICAgICAgIC8vIElmIHRoaXMgZXZlbnQgaXNuJ3QgYSBt
b3VzZVVwLCB3ZSBhc3N1bWUgdGhhdCB0aGUgbW91c2VVcCB3aWxsIGJlIGNvbWluZyBsYXRlci4g
IFRoZXJlCi0gICAgICAgIC8vIGlzIGEgaG9sZSBoZXJlIGlmIHRoZSB3aWRnZXQgY29uc3VtZXMg
dGhlIG1vdXNlVXAgYW5kIHN1YnNlcXVlbnQgZXZlbnRzLgotICAgICAgICBpZiAoTWFjKG1fZnJh
bWUpLT5sYXN0RXZlbnRJc01vdXNlVXAoKSkgewotICAgICAgICAgICAgZC0+bW91c2VQcmVzc2Vk
ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgS0hUTUxWaWV3Ojp2aWV3cG9y
dE1vdXNlRG91YmxlQ2xpY2tFdmVudCggUU1vdXNlRXZlbnQgKl9tb3VzZSApCi17Ci0gICAgaWYo
IW1fZnJhbWUtPnhtbERvY0ltcGwoKSkgcmV0dXJuOwotCi0gICAgUmVmUHRyPEtIVE1MVmlldz4g
cHJvdGVjdG9yKHRoaXMpOwotCi0gICAgaW50IHhtLCB5bTsKLSAgICB2aWV3cG9ydFRvQ29udGVu
dHMoX21vdXNlLT54KCksIF9tb3VzZS0+eSgpLCB4bSwgeW0pOwotCi0gICAgLy8gV2UgZ2V0IHRo
aXMgaW5zdGVhZCBvZiBhIHNlY29uZCBtb3VzZS11cCAKLSAgICBkLT5tb3VzZVByZXNzZWQgPSBm
YWxzZTsKLQotICAgIE5vZGVJbXBsOjpNb3VzZUV2ZW50IG1ldiggX21vdXNlLT5zdGF0ZUFmdGVy
KCksIE5vZGVJbXBsOjpNb3VzZURibENsaWNrICk7Ci0gICAgbV9mcmFtZS0+eG1sRG9jSW1wbCgp
LT5wcmVwYXJlTW91c2VFdmVudCggZmFsc2UsIHhtLCB5bSwgJm1ldiApOwotCi0gICAgaWYgKE1h
YyhtX2ZyYW1lKS0+cGFzc1N1YmZyYW1lRXZlbnRUb1N1YmZyYW1lKG1ldikpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIGQtPmNsaWNrQ291bnQgPSBfbW91c2UtPmNsaWNrQ291bnQoKTsKLSAgICBi
b29sIHN3YWxsb3dFdmVudCA9IGRpc3BhdGNoTW91c2VFdmVudChtb3VzZXVwRXZlbnQsbWV2Lmlu
bmVyTm9kZS5nZXQoKSx0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGQtPmNsaWNrQ291bnQsX21vdXNlLGZhbHNlLE5vZGVJbXBsOjpNb3VzZVJlbGVhc2Up
OwotCi0gICAgaWYgKG1ldi5pbm5lck5vZGUgPT0gZC0+Y2xpY2tOb2RlKQotICAgICAgICBkaXNw
YXRjaE1vdXNlRXZlbnQoY2xpY2tFdmVudCxtZXYuaW5uZXJOb2RlLmdldCgpLHRydWUsCi0JCQkg
ICBkLT5jbGlja0NvdW50LF9tb3VzZSx0cnVlLE5vZGVJbXBsOjpNb3VzZVJlbGVhc2UpOwotCi0g
ICAgLy8gUXQgZGVsaXZlcnMgYSByZWxlYXNlIGV2ZW50IEFORCBhIGRvdWJsZSBjbGljayBldmVu
dC4KLSAgICBpZiAoIXN3YWxsb3dFdmVudCkgewotCU1vdXNlUmVsZWFzZUV2ZW50IGV2ZW50MSgg
X21vdXNlLCB4bSwgeW0sIG1ldi51cmwsIG1ldi50YXJnZXQsIG1ldi5pbm5lck5vZGUuZ2V0KCkg
KTsKLQlRQXBwbGljYXRpb246OnNlbmRFdmVudCggbV9mcmFtZSwgJmV2ZW50MSApOwotCi0JTW91
c2VEb3VibGVDbGlja0V2ZW50IGV2ZW50MiggX21vdXNlLCB4bSwgeW0sIG1ldi51cmwsIG1ldi50
YXJnZXQsIG1ldi5pbm5lck5vZGUuZ2V0KCkgKTsKLQlRQXBwbGljYXRpb246OnNlbmRFdmVudCgg
bV9mcmFtZSwgJmV2ZW50MiApOwotICAgIH0KLQotICAgIGludmFsaWRhdGVDbGljaygpOwotfQot
Ci1zdGF0aWMgYm9vbCBpc1N1Ym1pdEltYWdlKE5vZGVJbXBsICpub2RlKQotewotICAgIHJldHVy
biBub2RlICYmIG5vZGUtPmhhc1RhZ05hbWUoaW5wdXRUYWcpICYmIHN0YXRpY19jYXN0PEhUTUxJ
bnB1dEVsZW1lbnRJbXBsKj4obm9kZSktPmlucHV0VHlwZSgpID09IEhUTUxJbnB1dEVsZW1lbnRJ
bXBsOjpJTUFHRTsKLX0KLQotc3RhdGljIFFDdXJzb3Igc2VsZWN0Q3Vyc29yKGNvbnN0IE5vZGVJ
bXBsOjpNb3VzZUV2ZW50ICZldmVudCwgRnJhbWUgKmZyYW1lLCBib29sIG1vdXNlUHJlc3NlZCkK
LXsKLSAgICAvLyBEdXJpbmcgc2VsZWN0aW9uLCB1c2UgYW4gSS1iZWFtIG5vIG1hdHRlciB3aGF0
IHdlJ3JlIG92ZXIKLSAgICBpZiAobW91c2VQcmVzc2VkICYmIGZyYW1lLT5oYXNTZWxlY3Rpb24o
KSkKLSAgICAgICAgcmV0dXJuIEtDdXJzb3I6OmliZWFtQ3Vyc29yKCk7Ci0KLSAgICBOb2RlSW1w
bCAqbm9kZSA9IGV2ZW50LmlubmVyTm9kZS5nZXQoKTsKLSAgICBSZW5kZXJPYmplY3QgKnJlbmRl
cmVyID0gbm9kZSA/IG5vZGUtPnJlbmRlcmVyKCkgOiAwOwotICAgIFJlbmRlclN0eWxlICpzdHls
ZSA9IHJlbmRlcmVyID8gcmVuZGVyZXItPnN0eWxlKCkgOiAwOwotCi0gICAgaWYgKHN0eWxlICYm
IHN0eWxlLT5jdXJzb3JJbWFnZSgpICYmICFzdHlsZS0+Y3Vyc29ySW1hZ2UoKS0+cGl4bWFwKCku
aXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBRQ3Vyc29yKHN0eWxlLT5jdXJzb3JJbWFnZSgpLT5w
aXhtYXAoKSk7Ci0KLSAgICBzd2l0Y2ggKHN0eWxlID8gc3R5bGUtPmN1cnNvcigpIDogQ1VSU09S
X0FVVE8pIHsKLSAgICAgICAgY2FzZSBDVVJTT1JfQVVUTzoKLSAgICAgICAgICAgIGlmICghZXZl
bnQudXJsLmlzTnVsbCgpIHx8IGlzU3VibWl0SW1hZ2Uobm9kZSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZyYW1lLT51cmxDdXJzb3IoKTsKLSAgICAgICAgICAgIGlmICgobm9kZSAmJiBub2Rl
LT5pc0NvbnRlbnRFZGl0YWJsZSgpKSB8fCAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzVGV4dCgp
ICYmIHJlbmRlcmVyLT5jYW5TZWxlY3QoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEtDdXJz
b3I6OmliZWFtQ3Vyc29yKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDVVJT
T1JfQ1JPU1M6Ci0gICAgICAgICAgICByZXR1cm4gS0N1cnNvcjo6Y3Jvc3NDdXJzb3IoKTsKLSAg
ICAgICAgY2FzZSBDVVJTT1JfUE9JTlRFUjoKLSAgICAgICAgICAgIHJldHVybiBmcmFtZS0+dXJs
Q3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX01PVkU6Ci0gICAgICAgICAgICByZXR1cm4g
S0N1cnNvcjo6c2l6ZUFsbEN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9FX1JFU0laRToK
LSAgICAgICAgICAgIHJldHVybiBLQ3Vyc29yOjplYXN0UmVzaXplQ3Vyc29yKCk7Ci0gICAgICAg
IGNhc2UgQ1VSU09SX1dfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIEtDdXJzb3I6Ondlc3RS
ZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfTl9SRVNJWkU6Ci0gICAgICAgICAg
ICByZXR1cm4gS0N1cnNvcjo6bm9ydGhSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJT
T1JfU19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4gS0N1cnNvcjo6c291dGhSZXNpemVDdXJz
b3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1JfTkVfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJu
IEtDdXJzb3I6Om5vcnRoRWFzdFJlc2l6ZUN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9T
V19SRVNJWkU6Ci0gICAgICAgICAgICByZXR1cm4gS0N1cnNvcjo6c291dGhXZXN0UmVzaXplQ3Vy
c29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX05XX1JFU0laRToKLSAgICAgICAgICAgIHJldHVy
biBLQ3Vyc29yOjpub3J0aFdlc3RSZXNpemVDdXJzb3IoKTsKLSAgICAgICAgY2FzZSBDVVJTT1Jf
U0VfUkVTSVpFOgotICAgICAgICAgICAgcmV0dXJuIEtDdXJzb3I6OnNvdXRoRWFzdFJlc2l6ZUN1
cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9URVhUOgotICAgICAgICAgICAgcmV0dXJuIEtD
dXJzb3I6OmliZWFtQ3Vyc29yKCk7Ci0gICAgICAgIGNhc2UgQ1VSU09SX1dBSVQ6Ci0gICAgICAg
ICAgICByZXR1cm4gS0N1cnNvcjo6d2FpdEN1cnNvcigpOwotICAgICAgICBjYXNlIENVUlNPUl9I
RUxQOgotICAgICAgICAgICAgcmV0dXJuIEtDdXJzb3I6OndoYXRzVGhpc0N1cnNvcigpOwotICAg
ICAgICBjYXNlIENVUlNPUl9ERUZBVUxUOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IHJldHVybiBRQ3Vyc29yKCk7Ci19Ci0KLXZvaWQgS0hUTUxWaWV3Ojp2aWV3cG9ydE1vdXNlTW92
ZUV2ZW50KCBRTW91c2VFdmVudCAqIF9tb3VzZSApCi17Ci0gICAgLy8gaW4gUmFkYXIgMzcwMzc2
OCB3ZSBzYXcgZnJlcXVlbnQgY3Jhc2hlcyBhcHBhcmVudGx5IGR1ZSB0byB0aGUKLSAgICAvLyBw
YXJ0IGJlaW5nIG51bGwgaGVyZSwgd2hpY2ggc2VlbXMgaW1wb3NzaWJsZSwgc28gY2hlY2sgZm9y
IG5pbAotICAgIC8vIGJ1dCBhbHNvIGFzc2VydCBzbyB0aGF0IHdlIGNhbiB0cnkgdG8gZmlndXJl
IHRoaXMgb3V0IGluIGRlYnVnCi0gICAgLy8gYnVpbGRzLCBpZiBpdCBoYXBwZW5zLgotICAgIGFz
c2VydChtX2ZyYW1lKTsKLSAgICBpZighbV9mcmFtZSB8fCAhbV9mcmFtZS0+eG1sRG9jSW1wbCgp
KSByZXR1cm47Ci0KLSAgICBpbnQgeG0sIHltOwotICAgIHZpZXdwb3J0VG9Db250ZW50cyhfbW91
c2UtPngoKSwgX21vdXNlLT55KCksIHhtLCB5bSk7Ci0KLSAgICAvLyBUcmVhdCBtb3VzZSBtb3Zl
IGV2ZW50cyB3aGlsZSB0aGUgbW91c2UgaXMgcHJlc3NlZCBhcyAicmVhZC1vbmx5IiBpbiBwcmVw
YXJlTW91c2VFdmVudAotICAgIC8vIGlmIHdlIGFyZSBhbGxvd2VkIHRvIHNlbGVjdC4KLSAgICAv
LyBUaGlzIG1lYW5zIHRoYXQgOmhvdmVyIGFuZCA6YWN0aXZlIGZyZWV6ZSBpbiB0aGUgc3RhdGUg
dGhleSB3ZXJlIGluIHdoZW4gdGhlIG1vdXNlCi0gICAgLy8gd2FzIHByZXNzZWQsIHJhdGhlciB0
aGFuIHVwZGF0aW5nIGZvciBub2RlcyB0aGUgbW91c2UgbW92ZXMgb3ZlciBhcyB5b3UgaG9sZCB0
aGUgbW91c2UgZG93bi4KLSAgICBOb2RlSW1wbDo6TW91c2VFdmVudCBtZXYoIF9tb3VzZS0+c3Rh
dGVBZnRlcigpLCBOb2RlSW1wbDo6TW91c2VNb3ZlICk7Ci0gICAgbV9mcmFtZS0+eG1sRG9jSW1w
bCgpLT5wcmVwYXJlTW91c2VFdmVudChkLT5tb3VzZVByZXNzZWQgJiYgbV9mcmFtZS0+bW91c2VE
b3duTWF5U3RhcnRTZWxlY3QoKSwgZC0+bW91c2VQcmVzc2VkLCB4bSwgeW0sICZtZXYgKTsKLQot
ICAgIGlmICghTWFjKG1fZnJhbWUpLT5wYXNzU3ViZnJhbWVFdmVudFRvU3ViZnJhbWUobWV2KSkK
LSAgICAgICAgdmlld3BvcnQoKS0+c2V0Q3Vyc29yKHNlbGVjdEN1cnNvcihtZXYsIG1fZnJhbWUs
IGQtPm1vdXNlUHJlc3NlZCkpOwotICAgICAgICAKLSAgICBib29sIHN3YWxsb3dFdmVudCA9IGRp
c3BhdGNoTW91c2VFdmVudChtb3VzZW1vdmVFdmVudCxtZXYuaW5uZXJOb2RlLmdldCgpLGZhbHNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsX21vdXNlLHRy
dWUsTm9kZUltcGw6Ok1vdXNlTW92ZSk7Ci0KLSAgICAvLyBleGVjdXRlIHRoZSBzY2hlZHVsZWQg
c2NyaXB0LiBUaGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGUgbW91c2VvdmVyIGV2ZW50cyBjb21lIGFm
dGVyIHRoZSBtb3VzZW91dCBldmVudHMKLSAgICBtX2ZyYW1lLT5leGVjdXRlU2NoZWR1bGVkU2Ny
aXB0KCk7Ci0KLSAgICBkLT5wcmV2TW91c2VYID0geG07Ci0gICAgZC0+cHJldk1vdXNlWSA9IHlt
OwotCi0gICAgaWYgKCFzd2FsbG93RXZlbnQpIHsKLSAgICAgICAgTW91c2VNb3ZlRXZlbnQgZXZl
bnQoX21vdXNlLCB4bSwgeW0sIG1ldi51cmwsIG1ldi50YXJnZXQsIG1ldi5pbm5lck5vZGUuZ2V0
KCkpOwotICAgICAgICBRQXBwbGljYXRpb246OnNlbmRFdmVudChtX2ZyYW1lLCAmZXZlbnQpOwot
ICAgIH0KLX0KLQotdm9pZCBLSFRNTFZpZXc6OmludmFsaWRhdGVDbGljaygpCi17Ci0gICAgZC0+
Y2xpY2tDb3VudCA9IDA7Ci0gICAgaWYgKGQtPmNsaWNrTm9kZSkgewotICAgICAgICBkLT5jbGlj
a05vZGUtPmRlcmVmKCk7Ci0gICAgICAgIGQtPmNsaWNrTm9kZSA9IDA7Ci0gICAgfQotfQotCi12
b2lkIEtIVE1MVmlldzo6dmlld3BvcnRNb3VzZVJlbGVhc2VFdmVudCggUU1vdXNlRXZlbnQgKiBf
bW91c2UgKQotewotICAgIGlmICggIW1fZnJhbWUtPnhtbERvY0ltcGwoKSApIHJldHVybjsKLQot
ICAgIFJlZlB0cjxLSFRNTFZpZXc+IHByb3RlY3Rvcih0aGlzKTsKLQotICAgIGludCB4bSwgeW07
Ci0gICAgdmlld3BvcnRUb0NvbnRlbnRzKF9tb3VzZS0+eCgpLCBfbW91c2UtPnkoKSwgeG0sIHlt
KTsKLQotICAgIGQtPm1vdXNlUHJlc3NlZCA9IGZhbHNlOwotCi0gICAgTm9kZUltcGw6Ok1vdXNl
RXZlbnQgbWV2KCBfbW91c2UtPnN0YXRlQWZ0ZXIoKSwgTm9kZUltcGw6Ok1vdXNlUmVsZWFzZSAp
OwotICAgIG1fZnJhbWUtPnhtbERvY0ltcGwoKS0+cHJlcGFyZU1vdXNlRXZlbnQoIGZhbHNlLCB4
bSwgeW0sICZtZXYgKTsKLQotICAgIGlmIChNYWMobV9mcmFtZSktPnBhc3NTdWJmcmFtZUV2ZW50
VG9TdWJmcmFtZShtZXYpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIHN3YWxsb3dFdmVu
dCA9IGRpc3BhdGNoTW91c2VFdmVudChtb3VzZXVwRXZlbnQsbWV2LmlubmVyTm9kZS5nZXQoKSx0
cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmNsaWNr
Q291bnQsX21vdXNlLGZhbHNlLE5vZGVJbXBsOjpNb3VzZVJlbGVhc2UpOwotCi0gICAgaWYgKGQt
PmNsaWNrQ291bnQgPiAwICYmIG1ldi5pbm5lck5vZGUgPT0gZC0+Y2xpY2tOb2RlCi0gICAgICAg
ICkKLQlkaXNwYXRjaE1vdXNlRXZlbnQoY2xpY2tFdmVudCxtZXYuaW5uZXJOb2RlLmdldCgpLHRy
dWUsCi0JCQkgICBkLT5jbGlja0NvdW50LF9tb3VzZSx0cnVlLE5vZGVJbXBsOjpNb3VzZVJlbGVh
c2UpOwotCi0gICAgaWYgKCFzd2FsbG93RXZlbnQpIHsKLQlNb3VzZVJlbGVhc2VFdmVudCBldmVu
dCggX21vdXNlLCB4bSwgeW0sIG1ldi51cmwsIG1ldi50YXJnZXQsIG1ldi5pbm5lck5vZGUuZ2V0
KCkgKTsKLQlRQXBwbGljYXRpb246OnNlbmRFdmVudCggbV9mcmFtZSwgJmV2ZW50ICk7Ci0gICAg
fQotCi0gICAgaW52YWxpZGF0ZUNsaWNrKCk7Ci19Ci0KLXZvaWQgS0hUTUxWaWV3OjprZXlQcmVz
c0V2ZW50KCBRS2V5RXZlbnQgKl9rZSApCi17Ci0gICAgaWYgKG1fZnJhbWUtPnhtbERvY0ltcGwo
KSAmJiBtX2ZyYW1lLT54bWxEb2NJbXBsKCktPmZvY3VzTm9kZSgpKSB7Ci0gICAgICAgIGlmICht
X2ZyYW1lLT54bWxEb2NJbXBsKCktPmZvY3VzTm9kZSgpLT5kaXNwYXRjaEtleUV2ZW50KF9rZSkp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIF9rZS0+YWNjZXB0KCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLSAgICB9Ci0KLX0KLQotYm9vbCBLSFRNTFZpZXc6OmRpc3BhdGNoRHJh
Z0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyAmZXZlbnRUeXBlLCBOb2RlSW1wbCAqZHJhZ1Rhcmdl
dCwgY29uc3QgUVBvaW50ICZsb2MsIENsaXBib2FyZEltcGwgKmNsaXBib2FyZCkKLXsKLSAgICBp
bnQgY2xpZW50WCwgY2xpZW50WTsKLSAgICB2aWV3cG9ydFRvQ29udGVudHMobG9jLngoKSwgbG9j
LnkoKSwgY2xpZW50WCwgY2xpZW50WSk7Ci0gICAgUVBvaW50IHNjcmVlbkxvYyA9IHZpZXdwb3J0
VG9HbG9iYWwobG9jKTsKLSAgICBpbnQgc2NyZWVuWCA9IHNjcmVlbkxvYy54KCk7Ci0gICAgaW50
IHNjcmVlblkgPSBzY3JlZW5Mb2MueSgpOwotICAgIGJvb2wgY3RybEtleSA9IDA7ICAgLy8gRklY
TUUgLSBzZXQgdXAgbW9kaWZpZXJzLCBncmFiIGZyb20gQUsgb3IgQ0cKLSAgICBib29sIGFsdEtl
eSA9IDA7Ci0gICAgYm9vbCBzaGlmdEtleSA9IDA7Ci0gICAgYm9vbCBtZXRhS2V5ID0gMDsKLSAg
ICAKLSAgICBNb3VzZUV2ZW50SW1wbCAqbWUgPSBuZXcgTW91c2VFdmVudEltcGwoZXZlbnRUeXBl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLCB0cnVl
LCBtX2ZyYW1lLT54bWxEb2NJbXBsKCktPmRlZmF1bHRWaWV3KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHNjcmVlblgsIHNjcmVlblksIGNsaWVudFgs
IGNsaWVudFksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0
cmxLZXksIGFsdEtleSwgc2hpZnRLZXksIG1ldGFLZXksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIDAsIDAsIGNsaXBib2FyZCk7Ci0gICAgbWUtPnJlZigpOwot
ICAgIGludCBleGNlcHRpb25jb2RlID0gMDsKLSAgICBkcmFnVGFyZ2V0LT5kaXNwYXRjaEV2ZW50
KG1lLCBleGNlcHRpb25jb2RlLCB0cnVlKTsKLSAgICBib29sIGFjY2VwdCA9IG1lLT5kZWZhdWx0
UHJldmVudGVkKCk7Ci0gICAgbWUtPmRlcmVmKCk7Ci0gICAgcmV0dXJuIGFjY2VwdDsKLX0KLQot
Ym9vbCBLSFRNTFZpZXc6OnVwZGF0ZURyYWdBbmREcm9wKGNvbnN0IFFQb2ludCAmbG9jLCBDbGlw
Ym9hcmRJbXBsICpjbGlwYm9hcmQpCi17Ci0gICAgYm9vbCBhY2NlcHQgPSBmYWxzZTsKLSAgICBp
bnQgeG0sIHltOwotICAgIHZpZXdwb3J0VG9Db250ZW50cyhsb2MueCgpLCBsb2MueSgpLCB4bSwg
eW0pOwotICAgIE5vZGVJbXBsOjpNb3VzZUV2ZW50IG1ldigwLCBOb2RlSW1wbDo6TW91c2VNb3Zl
KTsKLSAgICBtX2ZyYW1lLT54bWxEb2NJbXBsKCktPnByZXBhcmVNb3VzZUV2ZW50KHRydWUsIHht
LCB5bSwgJm1ldik7Ci0gICAgTm9kZUltcGwgKm5ld1RhcmdldCA9IG1ldi5pbm5lck5vZGUuZ2V0
KCk7Ci0KLSAgICAvLyBEcmFnIGV2ZW50cyBzaG91bGQgbmV2ZXIgZ28gdG8gdGV4dCBub2RlcyAo
Zm9sbG93aW5nIElFLCBhbmQgcHJvcGVyIG1vdXNlb3Zlci9vdXQgZGlzcGF0Y2gpCi0gICAgaWYg
KG5ld1RhcmdldCAmJiBuZXdUYXJnZXQtPmlzVGV4dE5vZGUoKSkgewotICAgICAgICBuZXdUYXJn
ZXQgPSBuZXdUYXJnZXQtPnBhcmVudE5vZGUoKTsKLSAgICB9Ci0KLSAgICBpZiAoZC0+ZHJhZ1Rh
cmdldCAhPSBuZXdUYXJnZXQpIHsKLSAgICAgICAgLy8gbm90ZSB0aGlzIG9yZGVyaW5nIGlzIGV4
cGxpY2l0bHkgY2hvc2VuIHRvIG1hdGNoIFdpbklFCi0gICAgICAgIGlmIChuZXdUYXJnZXQpIHsK
LSAgICAgICAgICAgIGFjY2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGRyYWdlbnRlckV2ZW50LCBu
ZXdUYXJnZXQsIGxvYywgY2xpcGJvYXJkKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoZC0+ZHJh
Z1RhcmdldCkgewotICAgICAgICAgICAgZGlzcGF0Y2hEcmFnRXZlbnQoZHJhZ2xlYXZlRXZlbnQs
IGQtPmRyYWdUYXJnZXQuZ2V0KCksIGxvYywgY2xpcGJvYXJkKTsKLSAgICAgICAgfQotICAgIH0g
ZWxzZSBpZiAobmV3VGFyZ2V0KSB7Ci0gICAgICAgIGFjY2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50
KGRyYWdvdmVyRXZlbnQsIG5ld1RhcmdldCwgbG9jLCBjbGlwYm9hcmQpOwotICAgIH0KLSAgICBk
LT5kcmFnVGFyZ2V0ID0gbmV3VGFyZ2V0OwotCi0gICAgcmV0dXJuIGFjY2VwdDsKLX0KLQotdm9p
ZCBLSFRNTFZpZXc6OmNhbmNlbERyYWdBbmREcm9wKGNvbnN0IFFQb2ludCAmbG9jLCBDbGlwYm9h
cmRJbXBsICpjbGlwYm9hcmQpCi17Ci0gICAgaWYgKGQtPmRyYWdUYXJnZXQpIHsKLSAgICAgICAg
ZGlzcGF0Y2hEcmFnRXZlbnQoZHJhZ2xlYXZlRXZlbnQsIGQtPmRyYWdUYXJnZXQuZ2V0KCksIGxv
YywgY2xpcGJvYXJkKTsKLSAgICB9Ci0gICAgZC0+ZHJhZ1RhcmdldCA9IDA7Ci19Ci0KLWJvb2wg
S0hUTUxWaWV3OjpwZXJmb3JtRHJhZ0FuZERyb3AoY29uc3QgUVBvaW50ICZsb2MsIENsaXBib2Fy
ZEltcGwgKmNsaXBib2FyZCkKLXsKLSAgICBib29sIGFjY2VwdCA9IGZhbHNlOwotICAgIGlmIChk
LT5kcmFnVGFyZ2V0KSB7Ci0gICAgICAgIGFjY2VwdCA9IGRpc3BhdGNoRHJhZ0V2ZW50KGRyb3BF
dmVudCwgZC0+ZHJhZ1RhcmdldC5nZXQoKSwgbG9jLCBjbGlwYm9hcmQpOwotICAgIH0KLSAgICBk
LT5kcmFnVGFyZ2V0ID0gMDsKLSAgICByZXR1cm4gYWNjZXB0OwotfQotCi0KLU5vZGVJbXBsICpL
SFRNTFZpZXc6Om5vZGVVbmRlck1vdXNlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gZC0+dW5kZXJN
b3VzZTsKLX0KLQotYm9vbCBLSFRNTFZpZXc6OnNjcm9sbFRvKGNvbnN0IFFSZWN0ICZib3VuZHMp
Ci17Ci0gICAgZC0+c2Nyb2xsaW5nU2VsZiA9IHRydWU7IC8vIHNvIHNjcm9sbCBldmVudHMgZ2V0
IGlnbm9yZWQKLQotICAgIGludCB4LCB5LCB4ZSwgeWU7Ci0gICAgeCA9IGJvdW5kcy5sZWZ0KCk7
Ci0gICAgeSA9IGJvdW5kcy50b3AoKTsKLSAgICB4ZSA9IGJvdW5kcy5yaWdodCgpOwotICAgIHll
ID0gYm91bmRzLmJvdHRvbSgpOwotICAgIAotICAgIGludCBkZWx0YXg7Ci0gICAgaW50IGRlbHRh
eTsKLQotICAgIGludCBjdXJIZWlnaHQgPSB2aXNpYmxlSGVpZ2h0KCk7Ci0gICAgaW50IGN1cldp
ZHRoID0gdmlzaWJsZVdpZHRoKCk7Ci0KLSAgICBpZiAoeWUteT5jdXJIZWlnaHQtZC0+Ym9yZGVy
WSkKLQl5ZSAgPSB5ICsgY3VySGVpZ2h0IC0gZC0+Ym9yZGVyWTsKLQotICAgIGlmICh4ZS14PmN1
cldpZHRoLWQtPmJvcmRlclgpCi0JeGUgPSB4ICsgY3VyV2lkdGggLSBkLT5ib3JkZXJYOwotCi0g
ICAgLy8gaXMgeHBvcyBvZiB0YXJnZXQgbGVmdCBvZiB0aGUgdmlldydzIGJvcmRlcj8KLSAgICBp
ZiAoeCA8IGNvbnRlbnRzWCgpICsgZC0+Ym9yZGVyWCApCi0gICAgICAgICAgICBkZWx0YXggPSB4
IC0gY29udGVudHNYKCkgLSBkLT5ib3JkZXJYOwotICAgIC8vIGlzIHhwb3Mgb2YgdGFyZ2V0IHJp
Z2h0IG9mIHRoZSB2aWV3J3MgcmlnaHQgYm9yZGVyPwotICAgIGVsc2UgaWYgKHhlICsgZC0+Ym9y
ZGVyWCA+IGNvbnRlbnRzWCgpICsgY3VyV2lkdGgpCi0gICAgICAgICAgICBkZWx0YXggPSB4ZSAr
IGQtPmJvcmRlclggLSAoIGNvbnRlbnRzWCgpICsgY3VyV2lkdGggKTsKLSAgICBlbHNlCi0gICAg
ICAgIGRlbHRheCA9IDA7Ci0KLSAgICAvLyBpcyB5cG9zIG9mIHRhcmdldCBhYm92ZSB1cHBlciBi
b3JkZXI/Ci0gICAgaWYgKHkgPCBjb250ZW50c1koKSArIGQtPmJvcmRlclkpCi0gICAgICAgICAg
ICBkZWx0YXkgPSB5IC0gY29udGVudHNZKCkgLSBkLT5ib3JkZXJZOwotICAgIC8vIGlzIHlwb3Mg
b2YgdGFyZ2V0IGJlbG93IGxvd2VyIGJvcmRlcj8KLSAgICBlbHNlIGlmICh5ZSArIGQtPmJvcmRl
clkgPiBjb250ZW50c1koKSArIGN1ckhlaWdodCkKLSAgICAgICAgICAgIGRlbHRheSA9IHllICsg
ZC0+Ym9yZGVyWSAtICggY29udGVudHNZKCkgKyBjdXJIZWlnaHQgKTsKLSAgICBlbHNlCi0gICAg
ICAgIGRlbHRheSA9IDA7Ci0KLSAgICBpbnQgbWF4eCA9IGN1cldpZHRoLWQtPmJvcmRlclg7Ci0g
ICAgaW50IG1heHkgPSBjdXJIZWlnaHQtZC0+Ym9yZGVyWTsKLQotICAgIGludCBzY3JvbGxYLHNj
cm9sbFk7Ci0KLSAgICBzY3JvbGxYID0gZGVsdGF4ID4gMCA/IChkZWx0YXggPiBtYXh4ID8gbWF4
eCA6IGRlbHRheCkgOiBkZWx0YXggPT0gMCA/IDAgOiAoZGVsdGF4Pi1tYXh4ID8gZGVsdGF4IDog
LW1heHgpOwotICAgIHNjcm9sbFkgPSBkZWx0YXkgPiAwID8gKGRlbHRheSA+IG1heHkgPyBtYXh5
IDogZGVsdGF5KSA6IGRlbHRheSA9PSAwID8gMCA6IChkZWx0YXk+LW1heHkgPyBkZWx0YXkgOiAt
bWF4eSk7Ci0KLSAgICBpZiAoY29udGVudHNYKCkgKyBzY3JvbGxYIDwgMCkKLQlzY3JvbGxYID0g
LWNvbnRlbnRzWCgpOwotICAgIGVsc2UgaWYgKGNvbnRlbnRzV2lkdGgoKSAtIHZpc2libGVXaWR0
aCgpIC0gY29udGVudHNYKCkgPCBzY3JvbGxYKQotCXNjcm9sbFggPSBjb250ZW50c1dpZHRoKCkg
LSB2aXNpYmxlV2lkdGgoKSAtIGNvbnRlbnRzWCgpOwotCi0gICAgaWYgKGNvbnRlbnRzWSgpICsg
c2Nyb2xsWSA8IDApCi0Jc2Nyb2xsWSA9IC1jb250ZW50c1koKTsKLSAgICBlbHNlIGlmIChjb250
ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpIC0gY29udGVudHNZKCkgPCBzY3JvbGxZKQot
CXNjcm9sbFkgPSBjb250ZW50c0hlaWdodCgpIC0gdmlzaWJsZUhlaWdodCgpIC0gY29udGVudHNZ
KCk7Ci0KLSAgICBzY3JvbGxCeShzY3JvbGxYLCBzY3JvbGxZKTsKLQotICAgIC8vIGdlbmVyYXRl
IGFicyhzY3JvbGwuKQotICAgIGlmIChzY3JvbGxYPDApCi0gICAgICAgIHNjcm9sbFg9LXNjcm9s
bFg7Ci0gICAgaWYgKHNjcm9sbFk8MCkKLSAgICAgICAgc2Nyb2xsWT0tc2Nyb2xsWTsKLQotICAg
IGQtPnNjcm9sbGluZ1NlbGYgPSBmYWxzZTsKLQotICAgIGlmICggKHNjcm9sbFghPW1heHgpICYm
IChzY3JvbGxZIT1tYXh5KSApCi0JcmV0dXJuIHRydWU7Ci0gICAgZWxzZSByZXR1cm4gZmFsc2U7
Ci0KLX0KLQotdm9pZCBLSFRNTFZpZXc6OmZvY3VzTmV4dFByZXZOb2RlKGJvb2wgbmV4dCkKLXsK
LSAgICAvLyBTZXRzIHRoZSBmb2N1cyBub2RlIG9mIHRoZSBkb2N1bWVudCB0byBiZSB0aGUgbm9k
ZSBhZnRlciAob3IgaWYgbmV4dCBpcyBmYWxzZSwgYmVmb3JlKSB0aGUgY3VycmVudCBmb2N1cyBu
b2RlLgotICAgIC8vIE9ubHkgbm9kZXMgdGhhdCBhcmUgc2VsZWN0YWJsZSAoaS5lLiBmb3Igd2hp
Y2ggaXNTZWxlY3RhYmxlKCkgcmV0dXJucyB0cnVlKSBhcmUgdGFrZW4gaW50byBhY2NvdW50LCBh
bmQgdGhlIG9yZGVyCi0gICAgLy8gdXNlZCBpcyB0aGF0IHNwZWNpZmllZCBpbiB0aGUgSFRNTCBz
cGVjIChzZWUgRG9jdW1lbnRJbXBsOjpuZXh0Rm9jdXNOb2RlKCkgYW5kIERvY3VtZW50SW1wbDo6
cHJldmlvdXNGb2N1c05vZGUoKQotICAgIC8vIGZvciBkZXRhaWxzKS4KLQotICAgIERvY3VtZW50
SW1wbCAqZG9jID0gbV9mcmFtZS0+eG1sRG9jSW1wbCgpOwotICAgIE5vZGVJbXBsICpvbGRGb2N1
c05vZGUgPSBkb2MtPmZvY3VzTm9kZSgpOwotICAgIE5vZGVJbXBsICpuZXdGb2N1c05vZGU7Ci0K
LSAgICAvLyBGaW5kIHRoZSBuZXh0L3ByZXZpb3VzIG5vZGUgZnJvbSB0aGUgY3VycmVudCBvbmUK
LSAgICBpZiAobmV4dCkKLSAgICAgICAgbmV3Rm9jdXNOb2RlID0gZG9jLT5uZXh0Rm9jdXNOb2Rl
KG9sZEZvY3VzTm9kZSk7Ci0gICAgZWxzZQotICAgICAgICBuZXdGb2N1c05vZGUgPSBkb2MtPnBy
ZXZpb3VzRm9jdXNOb2RlKG9sZEZvY3VzTm9kZSk7Ci0KLSAgICAvLyBJZiB0aGVyZSB3YXMgcHJl
dmlvdXNseSBubyBmb2N1cyBub2RlIGFuZCB0aGUgdXNlciBoYXMgc2Nyb2xsZWQgdGhlIGRvY3Vt
ZW50LCB0aGVuIGluc3RlYWQgb2YgcGlja2luZyB0aGUgZmlyc3QKLSAgICAvLyBmb2N1c2FibGUg
bm9kZSBpbiB0aGUgZG9jdW1lbnQsIHVzZSB0aGUgZmlyc3Qgb25lIHRoYXQgbGllcyB3aXRoaW4g
dGhlIHZpc2libGUgYXJlYSAoaWYgcG9zc2libGUpLgotICAgIGlmICghb2xkRm9jdXNOb2RlICYm
IG5ld0ZvY3VzTm9kZSAmJiBkLT5zY3JvbGxCYXJNb3ZlZCkgewotICAgICAgICBib29sIHZpc2li
bGUgPSBmYWxzZTsKLSAgICAgICAgTm9kZUltcGwgKnRvRm9jdXMgPSBuZXdGb2N1c05vZGU7Ci0g
ICAgICAgIHdoaWxlICghdmlzaWJsZSAmJiB0b0ZvY3VzKSB7Ci0gICAgICAgICAgICBRUmVjdCBm
b2N1c05vZGVSZWN0ID0gdG9Gb2N1cy0+Z2V0UmVjdCgpOwotICAgICAgICAgICAgaWYgKChmb2N1
c05vZGVSZWN0LmxlZnQoKSA+IGNvbnRlbnRzWCgpKSAmJiAoZm9jdXNOb2RlUmVjdC5yaWdodCgp
IDwgY29udGVudHNYKCkgKyB2aXNpYmxlV2lkdGgoKSkgJiYKLSAgICAgICAgICAgICAgICAoZm9j
dXNOb2RlUmVjdC50b3AoKSA+IGNvbnRlbnRzWSgpKSAmJiAoZm9jdXNOb2RlUmVjdC5ib3R0b20o
KSA8IGNvbnRlbnRzWSgpICsgdmlzaWJsZUhlaWdodCgpKSkgewotICAgICAgICAgICAgICAgIC8v
IHRvRm9jdXMgaXMgdmlzaWJsZSBpbiB0aGUgY29udGVudHMgYXJlYQotICAgICAgICAgICAgICAg
IHZpc2libGUgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgLy8gdG9Gb2N1cyBpcyBfbm90XyB2aXNpYmxlIGluIHRoZSBjb250ZW50cyBh
cmVhLCBwaWNrIHRoZSBuZXh0IG5vZGUKLSAgICAgICAgICAgICAgICBpZiAobmV4dCkKLSAgICAg
ICAgICAgICAgICAgICAgdG9Gb2N1cyA9IGRvYy0+bmV4dEZvY3VzTm9kZSh0b0ZvY3VzKTsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHRvRm9jdXMgPSBkb2MtPnBy
ZXZpb3VzRm9jdXNOb2RlKHRvRm9jdXMpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg
ICAgICAgaWYgKHRvRm9jdXMpCi0gICAgICAgICAgICBuZXdGb2N1c05vZGUgPSB0b0ZvY3VzOwot
ICAgIH0KLQotICAgIGQtPnNjcm9sbEJhck1vdmVkID0gZmFsc2U7Ci0KLSAgICBpZiAoIW5ld0Zv
Y3VzTm9kZSkKLSAgICAgIHsKLSAgICAgICAgLy8gTm8gbmV3IGZvY3VzIG5vZGUsIHNjcm9sbCB0
byBib3R0b20gb3IgdG9wIGRlcGVuZGluZyBvbiBuZXh0Ci0gICAgICAgIGlmIChuZXh0KQotICAg
ICAgICAgICAgc2Nyb2xsVG8oUVJlY3QoY29udGVudHNYKCkrdmlzaWJsZVdpZHRoKCkvMixjb250
ZW50c0hlaWdodCgpLDAsMCkpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzY3JvbGxUbyhR
UmVjdChjb250ZW50c1goKSt2aXNpYmxlV2lkdGgoKS8yLDAsMCwwKSk7Ci0gICAgfQotICAgIGVs
c2UgewotICAgICAgICAvLyBFRElUIEZJWE1FOiBpZiBpdCdzIGFuIGVkaXRhYmxlIGVsZW1lbnQs
IGFjdGl2YXRlIHRoZSBjYXJldAotICAgICAgICAvLyBvdGhlcndpc2UsIGhpZGUgaXQKLSAgICAg
ICAgaWYgKG5ld0ZvY3VzTm9kZS0+aXNDb250ZW50RWRpdGFibGUoKSkgewotICAgICAgICAgICAg
Ly8gbWFrZSBjYXJldCB2aXNpYmxlCi0gICAgICAgIH0gCi0gICAgICAgIGVsc2UgewotICAgICAg
ICAgICAgLy8gaGlkZSBjYXJldAotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU2Nyb2xsIHRoZSB2
aWV3IGFzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IGZvY3VzIG5vZGUgaXMgdmlz
aWJsZQotICAgICAgICBpZiAob2xkRm9jdXNOb2RlKSB7Ci0gICAgICAgICAgICBpZiAoIXNjcm9s
bFRvKG5ld0ZvY3VzTm9kZS0+Z2V0UmVjdCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZG9jLT5yZW5kZXJlcigp
KSB7Ci0gICAgICAgICAgICAgICAgZG9jLT5yZW5kZXJlcigpLT5lbmNsb3NpbmdMYXllcigpLT5z
Y3JvbGxSZWN0VG9WaXNpYmxlKFFSZWN0KGNvbnRlbnRzWCgpLCBuZXh0ID8gMDogY29udGVudHNI
ZWlnaHQoKSwgMCwgMCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIC8v
IFNldCBmb2N1cyBub2RlIG9uIHRoZSBkb2N1bWVudAotICAgIG1fZnJhbWUtPnhtbERvY0ltcGwo
KS0+c2V0Rm9jdXNOb2RlKG5ld0ZvY3VzTm9kZSk7Ci19Ci0KLXZvaWQgS0hUTUxWaWV3OjpzZXRN
ZWRpYVR5cGUoIGNvbnN0IFFTdHJpbmcgJm1lZGl1bSApCi17Ci0gICAgbV9tZWRpdW0gPSBtZWRp
dW07Ci19Ci0KLVFTdHJpbmcgS0hUTUxWaWV3OjptZWRpYVR5cGUoKSBjb25zdAotewotICAgIC8v
IFNlZSBpZiB3ZSBoYXZlIGFuIG92ZXJyaWRlIHR5cGUuCi0gICAgUVN0cmluZyBvdmVycmlkZVR5
cGUgPSBNYWMobV9mcmFtZSktPm92ZXJyaWRlTWVkaWFUeXBlKCk7Ci0gICAgaWYgKCFvdmVycmlk
ZVR5cGUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBvdmVycmlkZVR5cGU7Ci0gICAgcmV0dXJu
IG1fbWVkaXVtOwotfQotCi0KLXZvaWQgS0hUTUxWaWV3Ojp1c2VTbG93UmVwYWludHMoKQotewot
ICAgIGtkRGVidWcoMCkgPDwgInNsb3cgcmVwYWludHMgcmVxdWVzdGVkIiA8PCBlbmRsOwotICAg
IGQtPnVzZVNsb3dSZXBhaW50cyA9IHRydWU7Ci0gICAgc2V0U3RhdGljQmFja2dyb3VuZCh0cnVl
KTsKLX0KLQotdm9pZCBLSFRNTFZpZXc6OnNldFNjcm9sbEJhcnNNb2RlICggU2Nyb2xsQmFyTW9k
ZSBtb2RlICkKLXsKLSNpZm5kZWYgS0hUTUxfTk9fU0NST0xMQkFSUwotICAgIGQtPnZtb2RlID0g
bW9kZTsKLSAgICBkLT5obW9kZSA9IG1vZGU7Ci0gICAgCi0gICAgUVNjcm9sbFZpZXc6OnNldFNj
cm9sbEJhcnNNb2RlKG1vZGUpOwotI2Vsc2UKLSAgICBRX1VOVVNFRCggbW9kZSApOwotI2VuZGlm
Ci19Ci0KLXZvaWQgS0hUTUxWaWV3OjpzZXRWU2Nyb2xsQmFyTW9kZSAoIFNjcm9sbEJhck1vZGUg
bW9kZSApCi17Ci0jaWZuZGVmIEtIVE1MX05PX1NDUk9MTEJBUlMKLSAgICBkLT52bW9kZSA9IG1v
ZGU7Ci0gICAgUVNjcm9sbFZpZXc6OnNldFZTY3JvbGxCYXJNb2RlKG1vZGUpOwotI2Vsc2UKLSAg
ICBRX1VOVVNFRCggbW9kZSApOwotI2VuZGlmCi19Ci0KLXZvaWQgS0hUTUxWaWV3OjpzZXRIU2Ny
b2xsQmFyTW9kZSAoIFNjcm9sbEJhck1vZGUgbW9kZSApCi17Ci0jaWZuZGVmIEtIVE1MX05PX1ND
Uk9MTEJBUlMKLSAgICBkLT5obW9kZSA9IG1vZGU7Ci0gICAgUVNjcm9sbFZpZXc6OnNldEhTY3Jv
bGxCYXJNb2RlKG1vZGUpOwotI2Vsc2UKLSAgICBRX1VOVVNFRCggbW9kZSApOwotI2VuZGlmCi19
Ci0KLXZvaWQgS0hUTUxWaWV3OjpyZXN0b3JlU2Nyb2xsQmFyICggKQotewotICAgIHN1cHByZXNz
U2Nyb2xsQmFycyhmYWxzZSk7Ci19Ci0KLQotYm9vbCBLSFRNTFZpZXc6OmRpc3BhdGNoTW91c2VF
dmVudChjb25zdCBBdG9taWNTdHJpbmcgJmV2ZW50VHlwZSwgTm9kZUltcGwgKnRhcmdldE5vZGUs
IGJvb2wgY2FuY2VsYWJsZSwKLQkJCQkgICBpbnQgZGV0YWlsLFFNb3VzZUV2ZW50ICpfbW91c2Us
IGJvb2wgc2V0VW5kZXIsCi0JCQkJICAgaW50IG1vdXNlRXZlbnRUeXBlKQotewotICAgIC8vIGlm
IHRoZSB0YXJnZXQgbm9kZSBpcyBhIHRleHQgbm9kZSwgZGlzcGF0Y2ggb24gdGhlIHBhcmVudCBu
b2RlIC0gcmRhcjovLzQxOTY2NDYKLSAgICBpZiAodGFyZ2V0Tm9kZSAmJiB0YXJnZXROb2RlLT5p
c1RleHROb2RlKCkpCi0gICAgICAgIHRhcmdldE5vZGUgPSB0YXJnZXROb2RlLT5wYXJlbnROb2Rl
KCk7Ci0gICAgaWYgKGQtPnVuZGVyTW91c2UpCi0JZC0+dW5kZXJNb3VzZS0+ZGVyZWYoKTsKLSAg
ICBkLT51bmRlck1vdXNlID0gdGFyZ2V0Tm9kZTsKLSAgICBpZiAoZC0+dW5kZXJNb3VzZSkKLQlk
LT51bmRlck1vdXNlLT5yZWYoKTsKLQotICAgIC8vIG1vdXNlb3V0L21vdXNlb3ZlcgotICAgIGlm
IChzZXRVbmRlcikgewotICAgICAgICBpbnQgY2xpZW50WCwgY2xpZW50WTsKLSAgICAgICAgdmll
d3BvcnRUb0NvbnRlbnRzKF9tb3VzZS0+eCgpLCBfbW91c2UtPnkoKSwgY2xpZW50WCwgY2xpZW50
WSk7Ci0gICAgICAgIGlmIChkLT5wcmV2TW91c2VYICE9IGNsaWVudFggfHwgZC0+cHJldk1vdXNl
WSAhPSBjbGllbnRZKSB7Ci0gICAgICAgICAgICAvLyAjIyMgdGhpcyBjb2RlIHN1Y2tzLiB3ZSBz
aG91bGQgc2F2ZSB0aGUgb2xkVW5kZXIgaW5zdGVhZCBvZiBjYWxjdWxhdGluZwotICAgICAgICAg
ICAgLy8gaXQgYWdhaW4uIGNhbGN1bGF0aW5nIGlzIGV4cGVuc2l2ZSEgKERpcmspCi0gICAgICAg
ICAgICAvLyBBbHNvLCB0aGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBvbGQgdW5kZXIgbm9k
ZSBpcyBldmVuIGFyb3VuZCBhbnkgbW9yZSwKLSAgICAgICAgICAgIC8vIHNvIHdlIGNvdWxkIGJl
IHNlbmRpbmcgYSBtb3VzZW91dCB0byBhIG5vZGUgdGhhdCBuZXZlciBnb3QgYSBtb3VzZW92ZXIu
Ci0gICAgICAgICAgICBSZWZQdHI8Tm9kZUltcGw+IG9sZFVuZGVyOwotICAgICAgICAgICAgaWYg
KGQtPnByZXZNb3VzZVggPj0gMCAmJiBkLT5wcmV2TW91c2VZID49IDApIHsKLSAgICAgICAgICAg
ICAgICBOb2RlSW1wbDo6TW91c2VFdmVudCBtZXYoIF9tb3VzZS0+c3RhdGVBZnRlcigpLCBzdGF0
aWNfY2FzdDxOb2RlSW1wbDo6TW91c2VFdmVudFR5cGU+KG1vdXNlRXZlbnRUeXBlKSk7Ci0gICAg
ICAgICAgICAgICAgbV9mcmFtZS0+eG1sRG9jSW1wbCgpLT5wcmVwYXJlTW91c2VFdmVudCggdHJ1
ZSwgZC0+cHJldk1vdXNlWCwgZC0+cHJldk1vdXNlWSwgJm1ldiApOwotICAgICAgICAgICAgICAg
IG9sZFVuZGVyID0gbWV2LmlubmVyTm9kZTsKLSAgICAgICAgICAgICAgICBpZiAob2xkVW5kZXIg
JiYgb2xkVW5kZXItPmlzVGV4dE5vZGUoKSkKLSAgICAgICAgICAgICAgICAgICAgb2xkVW5kZXIg
PSBvbGRVbmRlci0+cGFyZW50Tm9kZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KG9sZFVuZGVyICE9IHRhcmdldE5vZGUpIHsKLSAgICAgICAgICAgICAgICAvLyBzZW5kIG1vdXNl
b3V0IGV2ZW50IHRvIHRoZSBvbGQgbm9kZQotICAgICAgICAgICAgICAgIGlmIChvbGRVbmRlcikK
LSAgICAgICAgICAgICAgICAgICAgb2xkVW5kZXItPmRpc3BhdGNoTW91c2VFdmVudChfbW91c2Us
IG1vdXNlb3V0RXZlbnQpOwotICAgICAgICAgICAgICAgIC8vIHNlbmQgbW91c2VvdmVyIGV2ZW50
IHRvIHRoZSBuZXcgbm9kZQotICAgICAgICAgICAgICAgIGlmICh0YXJnZXROb2RlKQotICAgICAg
ICAgICAgICAgICAgICB0YXJnZXROb2RlLT5kaXNwYXRjaE1vdXNlRXZlbnQoX21vdXNlLCBtb3Vz
ZW92ZXJFdmVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBib29s
IHN3YWxsb3dFdmVudCA9IGZhbHNlOwotCi0gICAgaWYgKHRhcmdldE5vZGUpCi0gICAgICAgIHN3
YWxsb3dFdmVudCA9IHRhcmdldE5vZGUtPmRpc3BhdGNoTW91c2VFdmVudChfbW91c2UsIGV2ZW50
VHlwZSwgZGV0YWlsKTsKLSAgICAKLSAgICBpZiAoIXN3YWxsb3dFdmVudCAmJiBldmVudFR5cGUg
PT0gbW91c2Vkb3duRXZlbnQpIHsKLSAgICAgICAgLy8gRm9jdXMgc2hvdWxkIGJlIHNoaWZ0ZWQg
b24gbW91c2UgZG93biwgbm90IG9uIGEgY2xpY2suICAtZHdoCi0gICAgICAgIC8vIEJsdXIgY3Vy
cmVudCBmb2N1cyBub2RlIHdoZW4gYSBsaW5rL2J1dHRvbiBpcyBjbGlja2VkOyB0aGlzCi0gICAg
ICAgIC8vIGlzIGV4cGVjdGVkIGJ5IHNvbWUgc2l0ZXMgdGhhdCByZWx5IG9uIG9uQ2hhbmdlIGhh
bmRsZXJzIHJ1bm5pbmcKLSAgICAgICAgLy8gZnJvbSBmb3JtIGZpZWxkcyBiZWZvcmUgdGhlIGJ1
dHRvbiBjbGljayBpcyBwcm9jZXNzZWQuCi0gICAgICAgIE5vZGVJbXBsKiBub2RlID0gdGFyZ2V0
Tm9kZTsKLSAgICAgICAgZm9yICggOyBub2RlICYmICFub2RlLT5pc0ZvY3VzYWJsZSgpOyBub2Rl
ID0gbm9kZS0+cGFyZW50Tm9kZSgpKTsKLSAgICAgICAgLy8gSWYgZm9jdXMgc2hpZnQgaXMgYmxv
Y2tlZCwgd2UgZWF0IHRoZSBldmVudC4gIE5vdGUgd2Ugc2hvdWxkIG5ldmVyIGNsZWFyIHN3YWxs
b3dFdmVudAotICAgICAgICAvLyBpZiB0aGUgcGFnZSBhbHJlYWR5IHNldCBpdCAoZS5nLiwgYnkg
Y2FuY2VsaW5nIGRlZmF1bHQgYmVoYXZpb3IpLgotICAgICAgICBpZiAobm9kZSAmJiBub2RlLT5p
c01vdXNlRm9jdXNhYmxlKCkpIHsKLSAgICAgICAgICAgIGlmICghbV9mcmFtZS0+eG1sRG9jSW1w
bCgpLT5zZXRGb2N1c05vZGUobm9kZSkpCi0gICAgICAgICAgICAgICAgc3dhbGxvd0V2ZW50ID0g
dHJ1ZTsKLSAgICAgICAgfSBlbHNlIGlmICghbm9kZSB8fCAhbm9kZS0+Zm9jdXNlZCgpKSB7Ci0g
ICAgICAgICAgICBpZiAoIW1fZnJhbWUtPnhtbERvY0ltcGwoKS0+c2V0Rm9jdXNOb2RlKDApKQot
ICAgICAgICAgICAgc3dhbGxvd0V2ZW50ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IHJldHVybiBzd2FsbG93RXZlbnQ7Ci19Ci0KLXZvaWQgS0hUTUxWaWV3OjpzZXRJZ25vcmVXaGVl
bEV2ZW50cyggYm9vbCBlICkKLXsKLSAgICBkLT5pZ25vcmVXaGVlbEV2ZW50cyA9IGU7Ci19Ci0K
LXZvaWQgS0hUTUxWaWV3Ojp2aWV3cG9ydFdoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGUpCi17Ci0g
ICAgRG9jdW1lbnRJbXBsICpkb2MgPSBtX2ZyYW1lLT54bWxEb2NJbXBsKCk7Ci0gICAgaWYgKGRv
YykgewotICAgICAgICBSZW5kZXJPYmplY3QgKmRvY1JlbmRlcmVyID0gZG9jLT5yZW5kZXJlcigp
OwotICAgICAgICBpZiAoZG9jUmVuZGVyZXIpIHsKLSAgICAgICAgICAgIGludCB4LCB5OwotICAg
ICAgICAgICAgdmlld3BvcnRUb0NvbnRlbnRzKGUtPngoKSwgZS0+eSgpLCB4LCB5KTsKLQotICAg
ICAgICAgICAgUmVuZGVyT2JqZWN0OjpOb2RlSW5mbyBoaXRUZXN0UmVzdWx0KHRydWUsIGZhbHNl
KTsKLSAgICAgICAgICAgIGRvYy0+cmVuZGVyZXIoKS0+bGF5ZXIoKS0+aGl0VGVzdChoaXRUZXN0
UmVzdWx0LCB4LCB5KTsgCi0gICAgICAgICAgICBOb2RlSW1wbCAqbm9kZSA9IGhpdFRlc3RSZXN1
bHQuaW5uZXJOb2RlKCk7Ci0KLSAgICAgICAgICAgaWYgKE1hYyhtX2ZyYW1lKS0+cGFzc1doZWVs
RXZlbnRUb0NoaWxkV2lkZ2V0KG5vZGUpKSB7Ci0gICAgICAgICAgICAgICAgZS0+YWNjZXB0KCk7
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KG5vZGUpIHsKLSAgICAgICAgICAgICAgICBub2RlLT5kaXNwYXRjaFdoZWVsRXZlbnQoZSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKGUtPmlzQWNjZXB0ZWQoKSkKLSAgICAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi12b2lkIEtIVE1M
Vmlldzo6Zm9jdXNJbkV2ZW50KCBRRm9jdXNFdmVudCAqZSApCi17Ci0gICAgbV9mcmFtZS0+c2V0
Q2FyZXRWaXNpYmxlKCk7Ci19Ci0KLXZvaWQgS0hUTUxWaWV3Ojpmb2N1c091dEV2ZW50KCBRRm9j
dXNFdmVudCAqZSApCi17Ci0gICAgbV9mcmFtZS0+c2V0Q2FyZXRWaXNpYmxlKGZhbHNlKTsKLX0K
LQotdm9pZCBLSFRNTFZpZXc6OnNsb3RTY3JvbGxCYXJNb3ZlZCgpCi17Ci0gICAgaWYgKCFkLT5z
Y3JvbGxpbmdTZWxmKQotICAgICAgICBkLT5zY3JvbGxCYXJNb3ZlZCA9IHRydWU7Ci19Ci0KLXZv
aWQgS0hUTUxWaWV3OjpyZXBhaW50UmVjdGFuZ2xlKGNvbnN0IFFSZWN0JiByLCBib29sIGltbWVk
aWF0ZSkKLXsKLSAgICB1cGRhdGVDb250ZW50cyhyLCBpbW1lZGlhdGUpOwotfQotCi12b2lkIEtI
VE1MVmlldzo6dGltZXJFdmVudCAoIFFUaW1lckV2ZW50ICplICkKLXsKLSAgICBpZiAoZS0+dGlt
ZXJJZCgpPT1kLT5sYXlvdXRUaW1lcklkKSB7Ci0jaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NI
RURVTElORwotICAgICAgICBpZiAobV9mcmFtZS0+eG1sRG9jSW1wbCgpICYmICFtX2ZyYW1lLT54
bWxEb2NJbXBsKCktPm93bmVyRWxlbWVudCgpKQotICAgICAgICAgICAgcHJpbnRmKCJMYXlvdXQg
dGltZXIgZmlyZWQgYXQgJWRcbiIsIG1fZnJhbWUtPnhtbERvY0ltcGwoKS0+ZWxhcHNlZFRpbWUo
KSk7Ci0jZW5kaWYKLSAgICAgICAgbGF5b3V0KCk7Ci0gICAgfQotfQotCi12b2lkIEtIVE1MVmll
dzo6c2NoZWR1bGVSZWxheW91dCgpCi17Ci0gICAgaWYgKCFkLT5sYXlvdXRTY2hlZHVsaW5nRW5h
YmxlZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFtX2ZyYW1lLT54bWxEb2NJbXBsKCkg
fHwgIW1fZnJhbWUtPnhtbERvY0ltcGwoKS0+c2hvdWxkU2NoZWR1bGVMYXlvdXQoKSkKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgaW50IGRlbGF5ID0gbV9mcmFtZS0+eG1sRG9jSW1wbCgpLT5taW5p
bXVtTGF5b3V0RGVsYXkoKTsKLSAgICBpZiAoZC0+bGF5b3V0VGltZXJJZCAmJiBkLT5kZWxheWVk
TGF5b3V0ICYmICFkZWxheSkKLSAgICAgICAgdW5zY2hlZHVsZVJlbGF5b3V0KCk7Ci0gICAgaWYg
KGQtPmxheW91dFRpbWVySWQpCi0gICAgICAgIHJldHVybjsKLQotICAgIGQtPmRlbGF5ZWRMYXlv
dXQgPSBkZWxheSAhPSAwOwotCi0jaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwot
ICAgIGlmICghbV9mcmFtZS0+eG1sRG9jSW1wbCgpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAg
cHJpbnRmKCJTY2hlZHVsaW5nIGxheW91dCBmb3IgJWRcbiIsIGRlbGF5KTsKLSNlbmRpZgotCi0g
ICAgZC0+bGF5b3V0VGltZXJJZCA9IHN0YXJ0VGltZXIoZGVsYXkpOwotfQotCi1ib29sIEtIVE1M
Vmlldzo6bGF5b3V0UGVuZGluZygpCi17Ci0gICAgcmV0dXJuIGQtPmxheW91dFRpbWVySWQ7Ci19
Ci0KLWJvb2wgS0hUTUxWaWV3OjpoYXZlRGVsYXllZExheW91dFNjaGVkdWxlZCgpCi17Ci0gICAg
cmV0dXJuIGQtPmxheW91dFRpbWVySWQgJiYgZC0+ZGVsYXllZExheW91dDsKLX0KLQotdm9pZCBL
SFRNTFZpZXc6OnVuc2NoZWR1bGVSZWxheW91dCgpCi17Ci0gICAgaWYgKCFkLT5sYXlvdXRUaW1l
cklkKQotICAgICAgICByZXR1cm47Ci0KLSNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVM
SU5HCi0gICAgaWYgKG1fZnJhbWUtPnhtbERvY0ltcGwoKSAmJiAhbV9mcmFtZS0+eG1sRG9jSW1w
bCgpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgcHJpbnRmKCJMYXlvdXQgdGltZXIgdW5zY2hl
ZHVsZWQgYXQgJWRcbiIsIG1fZnJhbWUtPnhtbERvY0ltcGwoKS0+ZWxhcHNlZFRpbWUoKSk7Ci0j
ZW5kaWYKLSAgICAKLSAgICBraWxsVGltZXIoZC0+bGF5b3V0VGltZXJJZCk7Ci0gICAgZC0+bGF5
b3V0VGltZXJJZCA9IDA7Ci0gICAgZC0+ZGVsYXllZExheW91dCA9IGZhbHNlOwotfQotCi1ib29s
IEtIVE1MVmlldzo6aXNUcmFuc3BhcmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGQtPmlzVHJh
bnNwYXJlbnQ7Ci19Ci0KLXZvaWQgS0hUTUxWaWV3OjpzZXRUcmFuc3BhcmVudChib29sIGlzVHJh
bnNwYXJlbnQpCi17Ci0gICAgZC0+aXNUcmFuc3BhcmVudCA9IGlzVHJhbnNwYXJlbnQ7Ci19Cklu
ZGV4OiBwYWdlL0ZyYW1lUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRnJhbWVQcml2YXRl
LmgJKHJldmlzaW9uIDExOTk0KQorKysgcGFnZS9GcmFtZVByaXZhdGUuaAkod29ya2luZyBjb3B5
KQpAQCAtOTIsMTAgKzkyLDEwIEBAIGVudW0gUmVkaXJlY3Rpb25TY2hlZHVsZWQgewogICAgIGxv
Y2F0aW9uQ2hhbmdlU2NoZWR1bGVkRHVyaW5nTG9hZAogfTsKIAotY2xhc3MgS0hUTUxQYXJ0UHJp
dmF0ZQorY2xhc3MgRnJhbWVQcml2YXRlCiB7CiBwdWJsaWM6Ci0gIEtIVE1MUGFydFByaXZhdGUo
UU9iamVjdCogcGFyZW50KQorICBGcmFtZVByaXZhdGUoUU9iamVjdCogcGFyZW50KQogICB7CiAg
ICAgbV9kb2MgPSAwTDsKICAgICBtX2pzY3JpcHQgPSAwTDsKQEAgLTE3Miw3ICsxNzIsNyBAQCBw
dWJsaWM6CiAgICAgbV9vcGVuZWRCeUpTID0gZmFsc2U7CiAgICAgbV9uZXdKU0ludGVycHJldGVy
RXhpc3RzID0gZmFsc2U7CiAgIH0KLSAgfktIVE1MUGFydFByaXZhdGUoKQorICB+RnJhbWVQcml2
YXRlKCkKICAgewogICAgIGRlbGV0ZSBtX2V4dGVuc2lvbjsKICAgICBkZWxldGUgbV9qc2NyaXB0
OwpAQCAtMTg4LDcgKzE4OCw2IEBAIHB1YmxpYzoKICAgRE9NOjpEb2N1bWVudEltcGwgKm1fZG9j
OwogICBSZWZQdHI8a2h0bWw6OkRlY29kZXI+IG1fZGVjb2RlcjsKICAgUVN0cmluZyBtX2VuY29k
aW5nOwotICBRU3RyaW5nIG1fc2hlZXRVc2VkOwogICBRU3RyaW5nIHNjaGVkdWxlZFNjcmlwdDsK
ICAgUmVmUHRyPERPTTo6Tm9kZUltcGw+IHNjaGVkdWxlZFNjcmlwdE5vZGU7CiAK
</data>
<flag name="review"
          id="1239"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>