<?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>131286</bug_id>
          
          <creation_ts>2014-04-06 17:46:27 -0700</creation_ts>
          <short_desc>Clean up WKGestureTypes.h</short_desc>
          <delta_ts>2014-04-06 17:55:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>mitz</reporter>
          <assigned_to>mitz</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>998048</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-04-06 17:46:27 -0700</bug_when>
    <thetext>Clean up WKGestureTypes.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998049</commentid>
    <comment_count>1</comment_count>
      <attachid>228710</attachid>
    <who name="">mitz</who>
    <bug_when>2014-04-06 17:50:05 -0700</bug_when>
    <thetext>Created attachment 228710
Rename the header, drop WK prefixes, and use scoped enums</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>998050</commentid>
    <comment_count>2</comment_count>
    <who name="">mitz</who>
    <bug_when>2014-04-06 17:55:01 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r166861&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228710</attachid>
            <date>2014-04-06 17:50:05 -0700</date>
            <delta_ts>2014-04-06 17:53:58 -0700</delta_ts>
            <desc>Rename the header, drop WK prefixes, and use scoped enums</desc>
            <filename>bug-131286-20140406174944.patch</filename>
            <type>text/plain</type>
            <size>63827</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2Njg2MCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU0IEBACisyMDE0LTA0LTA2ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CisKKyAgICAgICAgQ2xlYW4gdXAgV0tHZXN0dXJlVHlw
ZXMuaAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMx
Mjg2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVu
YW1lZCBXS0dlc3R1cmVUeXBlcy5oIHRvIEdlc3R1cmVUeXBlcy5oLCBkcm9wcGVkIHRoZSB1c2Vs
ZXNzIOKAnFdL4oCdIHByZWZpeGVzIGFuZCBjaGFuZ2VkCisgICAgICAgIGludG8gc2NvcGVkIGVu
dW1zLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgU2VsZWN0aW9uRmxhZ3MuCisKKyAgICAgICAgKiBT
aGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvaW9zL1dLR2VzdHVyZVR5cGVzLmguCisgICAgICAgICogU2hhcmVkL2lvcy9XS0dlc3R1cmVU
eXBlcy5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLRWxlbWVu
dEFjdGlvbi5tbToKKyAgICAgICAgKGNvcHlFbGVtZW50KToKKyAgICAgICAgKHNhdmVJbWFnZSk6
CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbToKKyAgICAgICAg
KFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNo
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLm1tOgorICAg
ICAgICAoLVtXS0NvbnRlbnRWaWV3IF9wZXJmb3JtQWN0aW9uOl0pOgorICAgICAgICAodG9HZXN0
dXJlVHlwZSk6CisgICAgICAgICh0b1VJV0tHZXN0dXJlVHlwZSk6CisgICAgICAgICh0b1NlbGVj
dGlvblRvdWNoKToKKyAgICAgICAgKHRvVUlXS1NlbGVjdGlvblRvdWNoKToKKyAgICAgICAgKHRv
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSk6CisgICAgICAgICh0b1VJR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZSk6CisgICAgICAgICh0b1VJV0tTZWxlY3Rpb25GbGFncyk6CisgICAgICAgICh0b1NlbGVj
dGlvbkhhbmRsZVBvc2l0aW9uKToKKyAgICAgICAgKHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVy
ZSk6CisgICAgICAgIChzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKToKKyAgICAgICAgKC1bV0tD
b250ZW50VmlldyBfZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2g6d2l0aEZsYWdzOmdy
b3dUaHJlc2hvbGQ6c2hyaW5rVGhyZXNob2xkOl0pOgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3
IGNoYW5nZVNlbGVjdGlvbldpdGhHZXN0dXJlQXQ6d2l0aEdlc3R1cmU6d2l0aFN0YXRlOl0pOgor
ICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNoYW5nZVNlbGVjdGlvbldpdGhUb3VjaEF0OndpdGhT
ZWxlY3Rpb25Ub3VjaDpiYXNlSXNTdGFydDpdKToKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBj
aGFuZ2VTZWxlY3Rpb25XaXRoVG91Y2hlc0Zyb206dG86d2l0aEdlc3R1cmU6d2l0aFN0YXRlOl0p
OgorICAgICAgICAoLVtXS0NvbnRlbnRWaWV3IGNoYW5nZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNo
QXQ6d2l0aFNlbGVjdGlvblRvdWNoOmZvckhhbmRsZTpdKToKKyAgICAgICAgKiBXZWJLaXQyLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW06
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJhbmdlRm9yV2ViU2VsZWN0aW9uQXRQb3NpdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKToKKyAgICAg
ICAgKFdlYktpdDo6ZGlzdGFuY2VCZXR3ZWVuUmVjdHNGb3JQb3NpdGlvbik6CisgICAgICAgIChX
ZWJLaXQ6OmNvbXB1dGVFZGdlQ2VudGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZXhw
YW5kZWRSYW5nZUZyb21IYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb250cmFj
dGVkUmFuZ2VGcm9tSGFuZGxlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y29tcHV0ZUV4
cGFuZEFuZFNocmlua1RocmVzaG9sZHNGb3JIYW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpzaG91
bGRFeHBhbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjaGFuZ2VCbG9ja1NlbGVjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRv
dWNoKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNo
ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KToK
KwogMjAxNC0wNC0wNiAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIERv
Y3VtZW50IHVzZXIgY29udGVudCByZWxhdGVkIEFQSXMuLgpJbmRleDogU291cmNlL1dlYktpdDIv
U2hhcmVkL2lvcy9HZXN0dXJlVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oCShyZXZpc2lvbiAxNjY4NTkpCShmcm9tIFNvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9pb3MvV0tHZXN0dXJlVHlwZXMuaDoxNjY4NTkpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdLR2VzdHVyZVR5cGVzX2gKKyNkZWZpbmUgV0tH
ZXN0dXJlVHlwZXNfaAorCituYW1lc3BhY2UgV2ViS2l0IHsKKwordHlwZWRlZiBlbnVtIHsKKyAg
ICBXS0dlc3R1cmVMb3VwZSwKKyAgICBXS0dlc3R1cmVPbmVGaW5nZXJUYXAsCisgICAgV0tHZXN0
dXJlVGFwQW5kQUhhbGYsCisgICAgV0tHZXN0dXJlRG91YmxlVGFwLAorICAgIFdLR2VzdHVyZVRh
cEFuZEhhbGYsCisgICAgV0tHZXN0dXJlRG91YmxlVGFwSW5VbmVkaXRhYmxlLAorICAgIFdLR2Vz
dHVyZU9uZUZpbmdlclRhcEluVW5lZGl0YWJsZSwKKyAgICBXS0dlc3R1cmVPbmVGaW5nZXJUYXBT
ZWxlY3RzQWxsLAorICAgIFdLR2VzdHVyZU9uZUZpbmdlckRvdWJsZVRhcCwKKyAgICBXS0dlc3R1
cmVPbmVGaW5nZXJUcmlwbGVUYXAsCisgICAgV0tHZXN0dXJlVHdvRmluZ2VyU2luZ2xlVGFwLAor
ICAgIFdLR2VzdHVyZVR3b0ZpbmdlclJhbmdlZFNlbGVjdEdlc3R1cmUsCisgICAgV0tHZXN0dXJl
VGFwT25MaW5rV2l0aEdlc3R1cmUsCisgICAgV0tHZXN0dXJlTWFrZVdlYlNlbGVjdGlvbgorfSBX
S0dlc3R1cmVUeXBlOworCit0eXBlZGVmIGVudW0geworICAgIFdLU2VsZWN0aW9uVG91Y2hTdGFy
dGVkLAorICAgIFdLU2VsZWN0aW9uVG91Y2hNb3ZlZCwKKyAgICBXS1NlbGVjdGlvblRvdWNoRW5k
ZWQsCisgICAgV0tTZWxlY3Rpb25Ub3VjaEVuZGVkTW92aW5nRm9yd2FyZCwKKyAgICBXS1NlbGVj
dGlvblRvdWNoRW5kZWRNb3ZpbmdCYWNrd2FyZCwKKyAgICBXS1NlbGVjdGlvblRvdWNoRW5kZWRO
b3RNb3ZpbmcKK30gV0tTZWxlY3Rpb25Ub3VjaDsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBXS0dl
c3R1cmVSZWNvZ25pemVyU3RhdGVQb3NzaWJsZSwKKyAgICBXS0dlc3R1cmVSZWNvZ25pemVyU3Rh
dGVCZWdhbiwKKyAgICBXS0dlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2VkLAorICAgIFdLR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkLAorICAgIFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNh
bmNlbGxlZCwKKyAgICBXS0dlc3R1cmVSZWNvZ25pemVyU3RhdGVGYWlsZWQsCisgICAgV0tHZXN0
dXJlUmVjb2duaXplclN0YXRlUmVjb2duaXplZCA9IFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVu
ZGVkCit9IFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBX
S1NoZWV0QWN0aW9uQ29weSwKKyAgICBXS1NoZWV0QWN0aW9uU2F2ZUltYWdlCit9IFdLU2hlZXRB
Y3Rpb25zOworCit0eXBlZGVmIGVudW0geworICAgIFdLTm9uZSA9IDAsCisgICAgV0tXb3JkSXNO
ZWFyVGFwID0gMSwKKyAgICBXS0lzQmxvY2tTZWxlY3Rpb24gPSAyCit9IFdLU2VsZWN0aW9uRmxh
Z3M7CisKK3R5cGVkZWYgZW51bSB7CisgICAgV0tIYW5kbGVUb3AsCisgICAgV0tIYW5kbGVSaWdo
dCwKKyAgICBXS0hhbmRsZUJvdHRvbSwKKyAgICBXS0hhbmRsZUxlZnQKK30gV0tIYW5kbGVQb3Np
dGlvbjsKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYgLy8gV0tHZXN0dXJlVHlwZXNf
aApJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9HZXN0dXJlVHlwZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oCSh3b3JraW5n
IGNvcHkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL0dlc3R1cmVUeXBlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMyw2NCArMjMsNjUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdLR2VzdHVyZVR5cGVzX2gKLSNkZWZpbmUgV0tHZXN0
dXJlVHlwZXNfaAorI2lmbmRlZiBHZXN0dXJlVHlwZXNfaAorI2RlZmluZSBHZXN0dXJlVHlwZXNf
aAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdHlwZWRlZiBlbnVtIHsKLSAgICBXS0dlc3R1cmVM
b3VwZSwKLSAgICBXS0dlc3R1cmVPbmVGaW5nZXJUYXAsCi0gICAgV0tHZXN0dXJlVGFwQW5kQUhh
bGYsCi0gICAgV0tHZXN0dXJlRG91YmxlVGFwLAotICAgIFdLR2VzdHVyZVRhcEFuZEhhbGYsCi0g
ICAgV0tHZXN0dXJlRG91YmxlVGFwSW5VbmVkaXRhYmxlLAotICAgIFdLR2VzdHVyZU9uZUZpbmdl
clRhcEluVW5lZGl0YWJsZSwKLSAgICBXS0dlc3R1cmVPbmVGaW5nZXJUYXBTZWxlY3RzQWxsLAot
ICAgIFdLR2VzdHVyZU9uZUZpbmdlckRvdWJsZVRhcCwKLSAgICBXS0dlc3R1cmVPbmVGaW5nZXJU
cmlwbGVUYXAsCi0gICAgV0tHZXN0dXJlVHdvRmluZ2VyU2luZ2xlVGFwLAotICAgIFdLR2VzdHVy
ZVR3b0ZpbmdlclJhbmdlZFNlbGVjdEdlc3R1cmUsCi0gICAgV0tHZXN0dXJlVGFwT25MaW5rV2l0
aEdlc3R1cmUsCi0gICAgV0tHZXN0dXJlTWFrZVdlYlNlbGVjdGlvbgotfSBXS0dlc3R1cmVUeXBl
OwotCi10eXBlZGVmIGVudW0gewotICAgIFdLU2VsZWN0aW9uVG91Y2hTdGFydGVkLAotICAgIFdL
U2VsZWN0aW9uVG91Y2hNb3ZlZCwKLSAgICBXS1NlbGVjdGlvblRvdWNoRW5kZWQsCi0gICAgV0tT
ZWxlY3Rpb25Ub3VjaEVuZGVkTW92aW5nRm9yd2FyZCwKLSAgICBXS1NlbGVjdGlvblRvdWNoRW5k
ZWRNb3ZpbmdCYWNrd2FyZCwKLSAgICBXS1NlbGVjdGlvblRvdWNoRW5kZWROb3RNb3ZpbmcKLX0g
V0tTZWxlY3Rpb25Ub3VjaDsKLQotdHlwZWRlZiBlbnVtIHsKLSAgICBXS0dlc3R1cmVSZWNvZ25p
emVyU3RhdGVQb3NzaWJsZSwKLSAgICBXS0dlc3R1cmVSZWNvZ25pemVyU3RhdGVCZWdhbiwKLSAg
ICBXS0dlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2VkLAotICAgIFdLR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZUVuZGVkLAotICAgIFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxlZCwKLSAg
ICBXS0dlc3R1cmVSZWNvZ25pemVyU3RhdGVGYWlsZWQsCi0gICAgV0tHZXN0dXJlUmVjb2duaXpl
clN0YXRlUmVjb2duaXplZCA9IFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkCi19IFdLR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZTsKLQotdHlwZWRlZiBlbnVtIHsKLSAgICBXS1NoZWV0QWN0aW9u
Q29weSwKLSAgICBXS1NoZWV0QWN0aW9uU2F2ZUltYWdlCi19IFdLU2hlZXRBY3Rpb25zOwotCi10
eXBlZGVmIGVudW0gewotICAgIFdLTm9uZSA9IDAsCi0gICAgV0tXb3JkSXNOZWFyVGFwID0gMSwK
LSAgICBXS0lzQmxvY2tTZWxlY3Rpb24gPSAyCi19IFdLU2VsZWN0aW9uRmxhZ3M7Ci0KLXR5cGVk
ZWYgZW51bSB7Ci0gICAgV0tIYW5kbGVUb3AsCi0gICAgV0tIYW5kbGVSaWdodCwKLSAgICBXS0hh
bmRsZUJvdHRvbSwKLSAgICBXS0hhbmRsZUxlZnQKLX0gV0tIYW5kbGVQb3NpdGlvbjsKK2VudW0g
Y2xhc3MgR2VzdHVyZVR5cGUgeworICAgIExvdXBlLAorICAgIE9uZUZpbmdlclRhcCwKKyAgICBU
YXBBbmRBSGFsZiwKKyAgICBEb3VibGVUYXAsCisgICAgVGFwQW5kSGFsZiwKKyAgICBEb3VibGVU
YXBJblVuZWRpdGFibGUsCisgICAgT25lRmluZ2VyVGFwSW5VbmVkaXRhYmxlLAorICAgIE9uZUZp
bmdlclRhcFNlbGVjdHNBbGwsCisgICAgT25lRmluZ2VyRG91YmxlVGFwLAorICAgIE9uZUZpbmdl
clRyaXBsZVRhcCwKKyAgICBUd29GaW5nZXJTaW5nbGVUYXAsCisgICAgVHdvRmluZ2VyUmFuZ2Vk
U2VsZWN0R2VzdHVyZSwKKyAgICBUYXBPbkxpbmtXaXRoR2VzdHVyZSwKKyAgICBNYWtlV2ViU2Vs
ZWN0aW9uCit9OworCitlbnVtIGNsYXNzIFNlbGVjdGlvblRvdWNoIHsKKyAgICBTdGFydGVkLAor
ICAgIE1vdmVkLAorICAgIEVuZGVkLAorICAgIEVuZGVkTW92aW5nRm9yd2FyZCwKKyAgICBFbmRl
ZE1vdmluZ0JhY2t3YXJkLAorICAgIEVuZGVkTm90TW92aW5nCit9OworCitlbnVtIGNsYXNzIEdl
c3R1cmVSZWNvZ25pemVyU3RhdGUgeworICAgIFBvc3NpYmxlLAorICAgIEJlZ2FuLAorICAgIENo
YW5nZWQsCisgICAgRW5kZWQsCisgICAgQ2FuY2VsbGVkLAorICAgIEZhaWxlZCwKKyAgICBSZWNv
Z25pemVkID0gRW5kZWQKK307CisKK2VudW0gY2xhc3MgU2hlZXRBY3Rpb24geworICAgIENvcHks
CisgICAgU2F2ZUltYWdlCit9OworCitlbnVtIFNlbGVjdGlvbkZsYWdzIHsKKyAgICBOb25lID0g
MCwKKyAgICBXb3JkSXNOZWFyVGFwID0gMSA8PCAwLAorICAgIElzQmxvY2tTZWxlY3Rpb24gPSAx
IDw8IDEsCit9OworCitlbnVtIGNsYXNzIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uIHsKKyAgICBU
b3AsCisgICAgUmlnaHQsCisgICAgQm90dG9tLAorICAgIExlZnQKK307CisKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCi0jZW5kaWYgLy8gV0tHZXN0dXJlVHlwZXNfaAorI2VuZGlmIC8vIEdlc3R1
cmVUeXBlc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1dLR2VzdHVyZVR5cGVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL2lvcy9XS0dlc3R1cmVUeXBl
cy5oCShyZXZpc2lvbiAxNjY4NTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvaW9zL1dLR2Vz
dHVyZVR5cGVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsODYgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpZm5kZWYgV0tHZXN0dXJlVHlwZXNfaAotI2RlZmluZSBXS0dlc3R1cmVUeXBlc19oCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotCi10eXBlZGVmIGVudW0gewotICAgIFdLR2VzdHVyZUxvdXBlLAot
ICAgIFdLR2VzdHVyZU9uZUZpbmdlclRhcCwKLSAgICBXS0dlc3R1cmVUYXBBbmRBSGFsZiwKLSAg
ICBXS0dlc3R1cmVEb3VibGVUYXAsCi0gICAgV0tHZXN0dXJlVGFwQW5kSGFsZiwKLSAgICBXS0dl
c3R1cmVEb3VibGVUYXBJblVuZWRpdGFibGUsCi0gICAgV0tHZXN0dXJlT25lRmluZ2VyVGFwSW5V
bmVkaXRhYmxlLAotICAgIFdLR2VzdHVyZU9uZUZpbmdlclRhcFNlbGVjdHNBbGwsCi0gICAgV0tH
ZXN0dXJlT25lRmluZ2VyRG91YmxlVGFwLAotICAgIFdLR2VzdHVyZU9uZUZpbmdlclRyaXBsZVRh
cCwKLSAgICBXS0dlc3R1cmVUd29GaW5nZXJTaW5nbGVUYXAsCi0gICAgV0tHZXN0dXJlVHdvRmlu
Z2VyUmFuZ2VkU2VsZWN0R2VzdHVyZSwKLSAgICBXS0dlc3R1cmVUYXBPbkxpbmtXaXRoR2VzdHVy
ZSwKLSAgICBXS0dlc3R1cmVNYWtlV2ViU2VsZWN0aW9uCi19IFdLR2VzdHVyZVR5cGU7Ci0KLXR5
cGVkZWYgZW51bSB7Ci0gICAgV0tTZWxlY3Rpb25Ub3VjaFN0YXJ0ZWQsCi0gICAgV0tTZWxlY3Rp
b25Ub3VjaE1vdmVkLAotICAgIFdLU2VsZWN0aW9uVG91Y2hFbmRlZCwKLSAgICBXS1NlbGVjdGlv
blRvdWNoRW5kZWRNb3ZpbmdGb3J3YXJkLAotICAgIFdLU2VsZWN0aW9uVG91Y2hFbmRlZE1vdmlu
Z0JhY2t3YXJkLAotICAgIFdLU2VsZWN0aW9uVG91Y2hFbmRlZE5vdE1vdmluZwotfSBXS1NlbGVj
dGlvblRvdWNoOwotCi10eXBlZGVmIGVudW0gewotICAgIFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0
ZVBvc3NpYmxlLAotICAgIFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuLAotICAgIFdLR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQsCi0gICAgV0tHZXN0dXJlUmVjb2duaXplclN0YXRl
RW5kZWQsCi0gICAgV0tHZXN0dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkLAotICAgIFdLR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUZhaWxlZCwKLSAgICBXS0dlc3R1cmVSZWNvZ25pemVyU3RhdGVS
ZWNvZ25pemVkID0gV0tHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQKLX0gV0tHZXN0dXJlUmVj
b2duaXplclN0YXRlOwotCi10eXBlZGVmIGVudW0gewotICAgIFdLU2hlZXRBY3Rpb25Db3B5LAot
ICAgIFdLU2hlZXRBY3Rpb25TYXZlSW1hZ2UKLX0gV0tTaGVldEFjdGlvbnM7Ci0KLXR5cGVkZWYg
ZW51bSB7Ci0gICAgV0tOb25lID0gMCwKLSAgICBXS1dvcmRJc05lYXJUYXAgPSAxLAotICAgIFdL
SXNCbG9ja1NlbGVjdGlvbiA9IDIKLX0gV0tTZWxlY3Rpb25GbGFnczsKLQotdHlwZWRlZiBlbnVt
IHsKLSAgICBXS0hhbmRsZVRvcCwKLSAgICBXS0hhbmRsZVJpZ2h0LAotICAgIFdLSGFuZGxlQm90
dG9tLAotICAgIFdLSGFuZGxlTGVmdAotfSBXS0hhbmRsZVBvc2l0aW9uOwotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXS0dlc3R1cmVUeXBlc19oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0VsZW1lbnRBY3Rpb24ubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tFbGVtZW50QWN0aW9uLm1t
CShyZXZpc2lvbiAxNjY4NTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS0VsZW1lbnRBY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTMwLDkgKzMwLDkgQEAKIAog
I2lmIFBMQVRGT1JNKElPUykKIAotI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRl
cm5hbC5oIgorI2ltcG9ydCAiR2VzdHVyZVR5cGVzLmgiCiAjaW1wb3J0ICJXS0NvbnRlbnRWaWV3
SW50ZXJhY3Rpb24uaCIKLSNpbXBvcnQgIldLR2VzdHVyZVR5cGVzLmgiCisjaW1wb3J0ICJfV0tB
Y3RpdmF0ZWRFbGVtZW50SW5mb0ludGVybmFsLmgiCiAjaW1wb3J0IDxTYWZhcmlTZXJ2aWNlcy9T
U1JlYWRpbmdMaXN0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0xvY2FsaXplZFN0cmluZ3MuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KQEAgLTc1LDEyICs3NSwxMiBAQCArIChpbnN0
YW5jZXR5cGUpZWxlbWVudEFjdGlvbldpdGhUaXRsZTooCiAKIHN0YXRpYyB2b2lkIGNvcHlFbGVt
ZW50KFdLQ29udGVudFZpZXcgKnZpZXcpCiB7Ci0gICAgW3ZpZXcgX3BlcmZvcm1BY3Rpb246V2Vi
S2l0OjpXS1NoZWV0QWN0aW9uQ29weV07CisgICAgW3ZpZXcgX3BlcmZvcm1BY3Rpb246V2ViS2l0
OjpTaGVldEFjdGlvbjo6Q29weV07CiB9CiAKIHN0YXRpYyB2b2lkIHNhdmVJbWFnZShXS0NvbnRl
bnRWaWV3ICp2aWV3KQogewotICAgIFt2aWV3IF9wZXJmb3JtQWN0aW9uOldlYktpdDo6V0tTaGVl
dEFjdGlvblNhdmVJbWFnZV07CisgICAgW3ZpZXcgX3BlcmZvcm1BY3Rpb246V2ViS2l0OjpTaGVl
dEFjdGlvbjo6U2F2ZUltYWdlXTsKIH0KIAogc3RhdGljIHZvaWQgYWRkVG9SZWFkaW5nTGlzdChO
U1VSTCAqdGFyZ2V0VVJMLCBOU1N0cmluZyAqdGl0bGUpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0JKHJldmlzaW9uIDE2Njg1
OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpz
dG9wQXNzaXN0aW5nTm9kZSgpCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZFVwZGF0ZUJsb2Nr
U2VsZWN0aW9uV2l0aFRvdWNoKHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQg
Z3Jvd1RocmVzaG9sZCwgZmxvYXQgc2hyaW5rVGhyZXNob2xkKQogewotICAgIFttX2NvbnRlbnRW
aWV3IF9kaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaDooV0tTZWxlY3Rpb25Ub3VjaCl0
b3VjaCB3aXRoRmxhZ3M6KFdLU2VsZWN0aW9uRmxhZ3MpZmxhZ3MgZ3Jvd1RocmVzaG9sZDpncm93
VGhyZXNob2xkIHNocmlua1RocmVzaG9sZDpzaHJpbmtUaHJlc2hvbGRdOworICAgIFttX2NvbnRl
bnRWaWV3IF9kaWRVcGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaDooU2VsZWN0aW9uVG91Y2gp
dG91Y2ggd2l0aEZsYWdzOihTZWxlY3Rpb25GbGFncylmbGFncyBncm93VGhyZXNob2xkOmdyb3dU
aHJlc2hvbGQgc2hyaW5rVGhyZXNob2xkOnNocmlua1RocmVzaG9sZF07CiB9CiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OnNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25z
dCBJbnRSZWN0JiBlbGVtZW50UmVjdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9p
b3MvV0tDb250ZW50Vmlld0ludGVyYWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24uaAkocmV2aXNpb24gMTY2
ODU5KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJh
Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTkgKzI4LDE5IEBACiAjaW1wb3J0ICJXS0Nv
bnRlbnRWaWV3LmgiCiAKICNpbXBvcnQgIkFzc2lzdGVkTm9kZUluZm9ybWF0aW9uLmgiCisjaW1w
b3J0ICJHZXN0dXJlVHlwZXMuaCIKICNpbXBvcnQgIkludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBv
c2l0aW9uLmgiCiAjaW1wb3J0ICJXS0FpclBsYXlSb3V0ZVBpY2tlci5oIgogI2ltcG9ydCAiV0tG
b3JtUGVyaXBoZXJhbC5oIgotI2ltcG9ydCAiV0tHZXN0dXJlVHlwZXMuaCIKICNpbXBvcnQgPFVJ
S2l0L1VJVGV4dElucHV0X1ByaXZhdGUuaD4KICNpbXBvcnQgPFVJS2l0L1VJVmlldy5oPgotI2lt
cG9ydCA8VUlLaXQvVUlXZWJGb3JtQWNjZXNzb3J5Lmg+Ci0jaW1wb3J0IDxVSUtpdC9VSVdlYlRv
dWNoRXZlbnRzR2VzdHVyZVJlY29nbml6ZXIuaD4KICNpbXBvcnQgPFVJS2l0L1VJV0tTZWxlY3Rp
b25Bc3Npc3RhbnQuaD4KICNpbXBvcnQgPFVJS2l0L1VJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3Rh
bnQuaD4KKyNpbXBvcnQgPFVJS2l0L1VJV2ViRm9ybUFjY2Vzc29yeS5oPgorI2ltcG9ydCA8VUlL
aXQvVUlXZWJUb3VjaEV2ZW50c0dlc3R1cmVSZWNvZ25pemVyLmg+CiAjaW1wb3J0IDx3dGYvRm9y
d2FyZC5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAjaW1wb3J0IDx3dGYvVmVj
dG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgQ29sb3I7CkBAIC0xMzcsMTEgKzEzNywxMSBAQCBzdHJ1Y3QgV0tBdXRvQ29y
cmVjdGlvbkRhdGEgewogLSAodm9pZClfcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZTooY29u
c3QgV2ViS2l0OjpJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpaW5mbzsKIC0gKHZv
aWQpX2F0dGVtcHRDbGlja0F0TG9jYXRpb246KENHUG9pbnQpbG9jYXRpb247CiAtICh2b2lkKV91
cGRhdGVQb3NpdGlvbkluZm9ybWF0aW9uOwotLSAodm9pZClfcGVyZm9ybUFjdGlvbjooV2ViS2l0
OjpXS1NoZWV0QWN0aW9ucylhY3Rpb247CistICh2b2lkKV9wZXJmb3JtQWN0aW9uOihXZWJLaXQ6
OlNoZWV0QWN0aW9uKWFjdGlvbjsKIC0gKHZvaWQpX3dpbGxTdGFydFNjcm9sbGluZ09yWm9vbWlu
ZzsKIC0gKHZvaWQpX3dpbGxTdGFydFVzZXJUcmlnZ2VyZWRTY3JvbGxpbmdPclpvb21pbmc7CiAt
ICh2b2lkKV9kaWRFbmRTY3JvbGxpbmdPclpvb21pbmc7Ci0tICh2b2lkKV9kaWRVcGRhdGVCbG9j
a1NlbGVjdGlvbldpdGhUb3VjaDooV2ViS2l0OjpXS1NlbGVjdGlvblRvdWNoKXRvdWNoIHdpdGhG
bGFnczooV2ViS2l0OjpXS1NlbGVjdGlvbkZsYWdzKWZsYWdzIGdyb3dUaHJlc2hvbGQ6KENHRmxv
YXQpZ3Jvd1RocmVzaG9sZCBzaHJpbmtUaHJlc2hvbGQ6KENHRmxvYXQpc2hyaW5rVGhyZXNob2xk
OworLSAodm9pZClfZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2g6KFdlYktpdDo6U2Vs
ZWN0aW9uVG91Y2gpdG91Y2ggd2l0aEZsYWdzOihXZWJLaXQ6OlNlbGVjdGlvbkZsYWdzKWZsYWdz
IGdyb3dUaHJlc2hvbGQ6KENHRmxvYXQpZ3Jvd1RocmVzaG9sZCBzaHJpbmtUaHJlc2hvbGQ6KENH
RmxvYXQpc2hyaW5rVGhyZXNob2xkOwogLSAodm9pZClfc2hvd1BsYXliYWNrVGFyZ2V0UGlja2Vy
OihCT09MKWhhc1ZpZGVvIGZyb21SZWN0Oihjb25zdCBXZWJDb3JlOjpJbnRSZWN0JillbGVtZW50
UmVjdDsKIC0gKHZvaWQpYWNjZXNzb3J5RG9uZTsKIC0gKFZlY3RvcjxXZWJLaXQ6OldLT3B0aW9u
SXRlbT4mKSBhc3Npc3RlZE5vZGVTZWxlY3RPcHRpb25zOwpJbmRleDogU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRWaWV3SW50ZXJhY3Rpb24ubW0J
KHJldmlzaW9uIDE2Njg1OSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tDb250
ZW50Vmlld0ludGVyYWN0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04ODIsNyArODgyLDcgQEAg
LSAodm9pZClfcmVzZXRTaG93aW5nVGV4dFN0eWxlOihOU05vdGlmaQogICAgIFtfdGV4dFNlbGVj
dGlvbkFzc2lzdGFudCBoaWRlVGV4dFN0eWxlT3B0aW9uc107CiB9CiAKLS0gKHZvaWQpX3BlcmZv
cm1BY3Rpb246KFdLU2hlZXRBY3Rpb25zKWFjdGlvbgorLSAodm9pZClfcGVyZm9ybUFjdGlvbjoo
U2hlZXRBY3Rpb24pYWN0aW9uCiB7CiAgICAgX3BhZ2UtPnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQo
KHVpbnQzMl90KWFjdGlvbik7CiB9CkBAIC05NzcsMTczICs5NzcsMTcyIEBAIC0gKHZvaWQpX2Rl
ZmluZTooaWQpc2VuZGVyCiAKIC8vIFVJV0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbAogCi1zdGF0
aWMgaW5saW5lIFdLR2VzdHVyZVR5cGUgdG9XS0dlc3R1cmVUeXBlKFVJV0tHZXN0dXJlVHlwZSBn
ZXN0dXJlVHlwZSkKK3N0YXRpYyBpbmxpbmUgR2VzdHVyZVR5cGUgdG9HZXN0dXJlVHlwZShVSVdL
R2VzdHVyZVR5cGUgZ2VzdHVyZVR5cGUpCiB7CiAgICAgc3dpdGNoIChnZXN0dXJlVHlwZSkgewog
ICAgIGNhc2UgVUlXS0dlc3R1cmVMb3VwZToKLSAgICAgICAgcmV0dXJuIFdLR2VzdHVyZUxvdXBl
OworICAgICAgICByZXR1cm4gR2VzdHVyZVR5cGU6OkxvdXBlOwogICAgIGNhc2UgVUlXS0dlc3R1
cmVPbmVGaW5nZXJUYXA6Ci0gICAgICAgIHJldHVybiBXS0dlc3R1cmVPbmVGaW5nZXJUYXA7Cisg
ICAgICAgIHJldHVybiBHZXN0dXJlVHlwZTo6T25lRmluZ2VyVGFwOwogICAgIGNhc2UgVUlXS0dl
c3R1cmVUYXBBbmRBSGFsZjoKLSAgICAgICAgcmV0dXJuIFdLR2VzdHVyZVRhcEFuZEFIYWxmOwor
ICAgICAgICByZXR1cm4gR2VzdHVyZVR5cGU6OlRhcEFuZEFIYWxmOwogICAgIGNhc2UgVUlXS0dl
c3R1cmVEb3VibGVUYXA6Ci0gICAgICAgIHJldHVybiBXS0dlc3R1cmVEb3VibGVUYXA7CisgICAg
ICAgIHJldHVybiBHZXN0dXJlVHlwZTo6RG91YmxlVGFwOwogICAgIGNhc2UgVUlXS0dlc3R1cmVU
YXBBbmRIYWxmOgotICAgICAgICByZXR1cm4gV0tHZXN0dXJlVGFwQW5kSGFsZjsKKyAgICAgICAg
cmV0dXJuIEdlc3R1cmVUeXBlOjpUYXBBbmRIYWxmOwogICAgIGNhc2UgVUlXS0dlc3R1cmVEb3Vi
bGVUYXBJblVuZWRpdGFibGU6Ci0gICAgICAgIHJldHVybiBXS0dlc3R1cmVEb3VibGVUYXBJblVu
ZWRpdGFibGU7CisgICAgICAgIHJldHVybiBHZXN0dXJlVHlwZTo6RG91YmxlVGFwSW5VbmVkaXRh
YmxlOwogICAgIGNhc2UgVUlXS0dlc3R1cmVPbmVGaW5nZXJUYXBJblVuZWRpdGFibGU6Ci0gICAg
ICAgIHJldHVybiBXS0dlc3R1cmVPbmVGaW5nZXJUYXBJblVuZWRpdGFibGU7CisgICAgICAgIHJl
dHVybiBHZXN0dXJlVHlwZTo6T25lRmluZ2VyVGFwSW5VbmVkaXRhYmxlOwogICAgIGNhc2UgVUlX
S0dlc3R1cmVPbmVGaW5nZXJUYXBTZWxlY3RzQWxsOgotICAgICAgICByZXR1cm4gV0tHZXN0dXJl
T25lRmluZ2VyVGFwU2VsZWN0c0FsbDsKKyAgICAgICAgcmV0dXJuIEdlc3R1cmVUeXBlOjpPbmVG
aW5nZXJUYXBTZWxlY3RzQWxsOwogICAgIGNhc2UgVUlXS0dlc3R1cmVPbmVGaW5nZXJEb3VibGVU
YXA6Ci0gICAgICAgIHJldHVybiBXS0dlc3R1cmVPbmVGaW5nZXJEb3VibGVUYXA7CisgICAgICAg
IHJldHVybiBHZXN0dXJlVHlwZTo6T25lRmluZ2VyRG91YmxlVGFwOwogICAgIGNhc2UgVUlXS0dl
c3R1cmVPbmVGaW5nZXJUcmlwbGVUYXA6Ci0gICAgICAgIHJldHVybiBXS0dlc3R1cmVPbmVGaW5n
ZXJUcmlwbGVUYXA7CisgICAgICAgIHJldHVybiBHZXN0dXJlVHlwZTo6T25lRmluZ2VyVHJpcGxl
VGFwOwogICAgIGNhc2UgVUlXS0dlc3R1cmVUd29GaW5nZXJTaW5nbGVUYXA6Ci0gICAgICAgIHJl
dHVybiBXS0dlc3R1cmVUd29GaW5nZXJTaW5nbGVUYXA7CisgICAgICAgIHJldHVybiBHZXN0dXJl
VHlwZTo6VHdvRmluZ2VyU2luZ2xlVGFwOwogICAgIGNhc2UgVUlXS0dlc3R1cmVUd29GaW5nZXJS
YW5nZWRTZWxlY3RHZXN0dXJlOgotICAgICAgICByZXR1cm4gV0tHZXN0dXJlVHdvRmluZ2VyUmFu
Z2VkU2VsZWN0R2VzdHVyZTsKKyAgICAgICAgcmV0dXJuIEdlc3R1cmVUeXBlOjpUd29GaW5nZXJS
YW5nZWRTZWxlY3RHZXN0dXJlOwogICAgIGNhc2UgVUlXS0dlc3R1cmVUYXBPbkxpbmtXaXRoR2Vz
dHVyZToKLSAgICAgICAgcmV0dXJuIFdLR2VzdHVyZVRhcE9uTGlua1dpdGhHZXN0dXJlOworICAg
ICAgICByZXR1cm4gR2VzdHVyZVR5cGU6OlRhcE9uTGlua1dpdGhHZXN0dXJlOwogICAgIGNhc2Ug
VUlXS0dlc3R1cmVNYWtlV2ViU2VsZWN0aW9uOgotICAgICAgICByZXR1cm4gV0tHZXN0dXJlTWFr
ZVdlYlNlbGVjdGlvbjsKKyAgICAgICAgcmV0dXJuIEdlc3R1cmVUeXBlOjpNYWtlV2ViU2VsZWN0
aW9uOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gV0tHZXN0
dXJlTG91cGU7CisgICAgcmV0dXJuIEdlc3R1cmVUeXBlOjpMb3VwZTsKIH0KIAotc3RhdGljIGlu
bGluZSBVSVdLR2VzdHVyZVR5cGUgdG9VSVdLR2VzdHVyZVR5cGUoV0tHZXN0dXJlVHlwZSBnZXN0
dXJlVHlwZSkKK3N0YXRpYyBpbmxpbmUgVUlXS0dlc3R1cmVUeXBlIHRvVUlXS0dlc3R1cmVUeXBl
KEdlc3R1cmVUeXBlIGdlc3R1cmVUeXBlKQogewogICAgIHN3aXRjaCAoZ2VzdHVyZVR5cGUpIHsK
LSAgICBjYXNlIFdLR2VzdHVyZUxvdXBlOgorICAgIGNhc2UgR2VzdHVyZVR5cGU6OkxvdXBlOgog
ICAgICAgICByZXR1cm4gVUlXS0dlc3R1cmVMb3VwZTsKLSAgICBjYXNlIFdLR2VzdHVyZU9uZUZp
bmdlclRhcDoKKyAgICBjYXNlIEdlc3R1cmVUeXBlOjpPbmVGaW5nZXJUYXA6CiAgICAgICAgIHJl
dHVybiBVSVdLR2VzdHVyZU9uZUZpbmdlclRhcDsKLSAgICBjYXNlIFdLR2VzdHVyZVRhcEFuZEFI
YWxmOgorICAgIGNhc2UgR2VzdHVyZVR5cGU6OlRhcEFuZEFIYWxmOgogICAgICAgICByZXR1cm4g
VUlXS0dlc3R1cmVUYXBBbmRBSGFsZjsKLSAgICBjYXNlIFdLR2VzdHVyZURvdWJsZVRhcDoKKyAg
ICBjYXNlIEdlc3R1cmVUeXBlOjpEb3VibGVUYXA6CiAgICAgICAgIHJldHVybiBVSVdLR2VzdHVy
ZURvdWJsZVRhcDsKLSAgICBjYXNlIFdLR2VzdHVyZVRhcEFuZEhhbGY6CisgICAgY2FzZSBHZXN0
dXJlVHlwZTo6VGFwQW5kSGFsZjoKICAgICAgICAgcmV0dXJuIFVJV0tHZXN0dXJlVGFwQW5kSGFs
ZjsKLSAgICBjYXNlIFdLR2VzdHVyZURvdWJsZVRhcEluVW5lZGl0YWJsZToKKyAgICBjYXNlIEdl
c3R1cmVUeXBlOjpEb3VibGVUYXBJblVuZWRpdGFibGU6CiAgICAgICAgIHJldHVybiBVSVdLR2Vz
dHVyZURvdWJsZVRhcEluVW5lZGl0YWJsZTsKLSAgICBjYXNlIFdLR2VzdHVyZU9uZUZpbmdlclRh
cEluVW5lZGl0YWJsZToKKyAgICBjYXNlIEdlc3R1cmVUeXBlOjpPbmVGaW5nZXJUYXBJblVuZWRp
dGFibGU6CiAgICAgICAgIHJldHVybiBVSVdLR2VzdHVyZU9uZUZpbmdlclRhcEluVW5lZGl0YWJs
ZTsKLSAgICBjYXNlIFdLR2VzdHVyZU9uZUZpbmdlclRhcFNlbGVjdHNBbGw6CisgICAgY2FzZSBH
ZXN0dXJlVHlwZTo6T25lRmluZ2VyVGFwU2VsZWN0c0FsbDoKICAgICAgICAgcmV0dXJuIFVJV0tH
ZXN0dXJlT25lRmluZ2VyVGFwU2VsZWN0c0FsbDsKLSAgICBjYXNlIFdLR2VzdHVyZU9uZUZpbmdl
ckRvdWJsZVRhcDoKKyAgICBjYXNlIEdlc3R1cmVUeXBlOjpPbmVGaW5nZXJEb3VibGVUYXA6CiAg
ICAgICAgIHJldHVybiBVSVdLR2VzdHVyZU9uZUZpbmdlckRvdWJsZVRhcDsKLSAgICBjYXNlIFdL
R2VzdHVyZU9uZUZpbmdlclRyaXBsZVRhcDoKKyAgICBjYXNlIEdlc3R1cmVUeXBlOjpPbmVGaW5n
ZXJUcmlwbGVUYXA6CiAgICAgICAgIHJldHVybiBVSVdLR2VzdHVyZU9uZUZpbmdlclRyaXBsZVRh
cDsKLSAgICBjYXNlIFdLR2VzdHVyZVR3b0ZpbmdlclNpbmdsZVRhcDoKKyAgICBjYXNlIEdlc3R1
cmVUeXBlOjpUd29GaW5nZXJTaW5nbGVUYXA6CiAgICAgICAgIHJldHVybiBVSVdLR2VzdHVyZVR3
b0ZpbmdlclNpbmdsZVRhcDsKLSAgICBjYXNlIFdLR2VzdHVyZVR3b0ZpbmdlclJhbmdlZFNlbGVj
dEdlc3R1cmU6CisgICAgY2FzZSBHZXN0dXJlVHlwZTo6VHdvRmluZ2VyUmFuZ2VkU2VsZWN0R2Vz
dHVyZToKICAgICAgICAgcmV0dXJuIFVJV0tHZXN0dXJlVHdvRmluZ2VyUmFuZ2VkU2VsZWN0R2Vz
dHVyZTsKLSAgICBjYXNlIFdLR2VzdHVyZVRhcE9uTGlua1dpdGhHZXN0dXJlOgorICAgIGNhc2Ug
R2VzdHVyZVR5cGU6OlRhcE9uTGlua1dpdGhHZXN0dXJlOgogICAgICAgICByZXR1cm4gVUlXS0dl
c3R1cmVUYXBPbkxpbmtXaXRoR2VzdHVyZTsKLSAgICBjYXNlIFdLR2VzdHVyZU1ha2VXZWJTZWxl
Y3Rpb246CisgICAgY2FzZSBHZXN0dXJlVHlwZTo6TWFrZVdlYlNlbGVjdGlvbjoKICAgICAgICAg
cmV0dXJuIFVJV0tHZXN0dXJlTWFrZVdlYlNlbGVjdGlvbjsKICAgICB9CiB9CiAKLXN0YXRpYyBp
bmxpbmUgV0tTZWxlY3Rpb25Ub3VjaCB0b1dLU2VsZWN0aW9uVG91Y2goVUlXS1NlbGVjdGlvblRv
dWNoIHRvdWNoKQorc3RhdGljIGlubGluZSBTZWxlY3Rpb25Ub3VjaCB0b1NlbGVjdGlvblRvdWNo
KFVJV0tTZWxlY3Rpb25Ub3VjaCB0b3VjaCkKIHsKICAgICBzd2l0Y2ggKHRvdWNoKSB7CiAgICAg
Y2FzZSBVSVdLU2VsZWN0aW9uVG91Y2hTdGFydGVkOgotICAgICAgICByZXR1cm4gV0tTZWxlY3Rp
b25Ub3VjaFN0YXJ0ZWQ7CisgICAgICAgIHJldHVybiBTZWxlY3Rpb25Ub3VjaDo6U3RhcnRlZDsK
ICAgICBjYXNlIFVJV0tTZWxlY3Rpb25Ub3VjaE1vdmVkOgotICAgICAgICByZXR1cm4gV0tTZWxl
Y3Rpb25Ub3VjaE1vdmVkOworICAgICAgICByZXR1cm4gU2VsZWN0aW9uVG91Y2g6Ok1vdmVkOwog
ICAgIGNhc2UgVUlXS1NlbGVjdGlvblRvdWNoRW5kZWQ6Ci0gICAgICAgIHJldHVybiBXS1NlbGVj
dGlvblRvdWNoRW5kZWQ7CisgICAgICAgIHJldHVybiBTZWxlY3Rpb25Ub3VjaDo6RW5kZWQ7CiAg
ICAgY2FzZSBVSVdLU2VsZWN0aW9uVG91Y2hFbmRlZE1vdmluZ0ZvcndhcmQ6Ci0gICAgICAgIHJl
dHVybiBXS1NlbGVjdGlvblRvdWNoRW5kZWRNb3ZpbmdGb3J3YXJkOworICAgICAgICByZXR1cm4g
U2VsZWN0aW9uVG91Y2g6OkVuZGVkTW92aW5nRm9yd2FyZDsKICAgICBjYXNlIFVJV0tTZWxlY3Rp
b25Ub3VjaEVuZGVkTW92aW5nQmFja3dhcmQ6Ci0gICAgICAgIHJldHVybiBXS1NlbGVjdGlvblRv
dWNoRW5kZWRNb3ZpbmdCYWNrd2FyZDsKKyAgICAgICAgcmV0dXJuIFNlbGVjdGlvblRvdWNoOjpF
bmRlZE1vdmluZ0JhY2t3YXJkOwogICAgIGNhc2UgVUlXS1NlbGVjdGlvblRvdWNoRW5kZWROb3RN
b3Zpbmc6Ci0gICAgICAgIHJldHVybiBXS1NlbGVjdGlvblRvdWNoRW5kZWROb3RNb3Zpbmc7Cisg
ICAgICAgIHJldHVybiBTZWxlY3Rpb25Ub3VjaDo6RW5kZWROb3RNb3Zpbmc7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBXS1NlbGVjdGlvblRvdWNoRW5kZWQ7
CisgICAgcmV0dXJuIFNlbGVjdGlvblRvdWNoOjpFbmRlZDsKIH0KIAotc3RhdGljIGlubGluZSBV
SVdLU2VsZWN0aW9uVG91Y2ggdG9VSVdLU2VsZWN0aW9uVG91Y2goV0tTZWxlY3Rpb25Ub3VjaCB0
b3VjaCkKK3N0YXRpYyBpbmxpbmUgVUlXS1NlbGVjdGlvblRvdWNoIHRvVUlXS1NlbGVjdGlvblRv
dWNoKFNlbGVjdGlvblRvdWNoIHRvdWNoKQogewogICAgIHN3aXRjaCAodG91Y2gpIHsKLSAgICBj
YXNlIFdLU2VsZWN0aW9uVG91Y2hTdGFydGVkOgorICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OlN0
YXJ0ZWQ6CiAgICAgICAgIHJldHVybiBVSVdLU2VsZWN0aW9uVG91Y2hTdGFydGVkOwotICAgIGNh
c2UgV0tTZWxlY3Rpb25Ub3VjaE1vdmVkOgorICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6Ok1vdmVk
OgogICAgICAgICByZXR1cm4gVUlXS1NlbGVjdGlvblRvdWNoTW92ZWQ7Ci0gICAgY2FzZSBXS1Nl
bGVjdGlvblRvdWNoRW5kZWQ6CisgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6RW5kZWQ6CiAgICAg
ICAgIHJldHVybiBVSVdLU2VsZWN0aW9uVG91Y2hFbmRlZDsKLSAgICBjYXNlIFdLU2VsZWN0aW9u
VG91Y2hFbmRlZE1vdmluZ0ZvcndhcmQ6CisgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6RW5kZWRN
b3ZpbmdGb3J3YXJkOgogICAgICAgICByZXR1cm4gVUlXS1NlbGVjdGlvblRvdWNoRW5kZWRNb3Zp
bmdGb3J3YXJkOwotICAgIGNhc2UgV0tTZWxlY3Rpb25Ub3VjaEVuZGVkTW92aW5nQmFja3dhcmQ6
CisgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6RW5kZWRNb3ZpbmdCYWNrd2FyZDoKICAgICAgICAg
cmV0dXJuIFVJV0tTZWxlY3Rpb25Ub3VjaEVuZGVkTW92aW5nQmFja3dhcmQ7Ci0gICAgY2FzZSBX
S1NlbGVjdGlvblRvdWNoRW5kZWROb3RNb3Zpbmc6CisgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6
RW5kZWROb3RNb3Zpbmc6CiAgICAgICAgIHJldHVybiBVSVdLU2VsZWN0aW9uVG91Y2hFbmRlZE5v
dE1vdmluZzsKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgV0tHZXN0dXJlUmVjb2duaXplclN0
YXRlIHRvV0tHZXN0dXJlUmVjb2duaXplclN0YXRlKFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBz
dGF0ZSkKK3N0YXRpYyBpbmxpbmUgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSB0b0dlc3R1cmVSZWNv
Z25pemVyU3RhdGUoVUlHZXN0dXJlUmVjb2duaXplclN0YXRlIHN0YXRlKQogewogICAgIHN3aXRj
aCAoc3RhdGUpIHsKICAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZVBvc3NpYmxlOgot
ICAgICAgICByZXR1cm4gV0tHZXN0dXJlUmVjb2duaXplclN0YXRlUG9zc2libGU7CisgICAgICAg
IHJldHVybiBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpQb3NzaWJsZTsKICAgICBjYXNlIFVJR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuOgotICAgICAgICByZXR1cm4gV0tHZXN0dXJlUmVjb2du
aXplclN0YXRlQmVnYW47CisgICAgICAgIHJldHVybiBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpC
ZWdhbjsKICAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNoYW5nZWQ6Ci0gICAgICAg
IHJldHVybiBXS0dlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFuZ2VkOworICAgICAgICByZXR1cm4g
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2hhbmdlZDsKICAgICBjYXNlIFVJR2VzdHVyZVJlY29n
bml6ZXJTdGF0ZUNhbmNlbGxlZDoKLSAgICAgICAgcmV0dXJuIFdLR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZUNhbmNlbGxlZDsKKyAgICAgICAgcmV0dXJuIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkNh
bmNlbGxlZDsKICAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkOgotICAgICAg
ICByZXR1cm4gV0tHZXN0dXJlUmVjb2duaXplclN0YXRlRW5kZWQ7CisgICAgICAgIHJldHVybiBH
ZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZDsKICAgICBjYXNlIFVJR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZUZhaWxlZDoKLSAgICAgICAgcmV0dXJuIFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUZh
aWxlZDsKKyAgICAgICAgcmV0dXJuIEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6OkZhaWxlZDsKICAg
ICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlIHRvVUlHZXN0
dXJlUmVjb2duaXplclN0YXRlKFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSBzdGF0ZSkKK3N0YXRp
YyBpbmxpbmUgVUlHZXN0dXJlUmVjb2duaXplclN0YXRlIHRvVUlHZXN0dXJlUmVjb2duaXplclN0
YXRlKEdlc3R1cmVSZWNvZ25pemVyU3RhdGUgc3RhdGUpCiB7CiAgICAgc3dpdGNoIChzdGF0ZSkg
ewotICAgIGNhc2UgV0tHZXN0dXJlUmVjb2duaXplclN0YXRlUG9zc2libGU6CisgICAgY2FzZSBH
ZXN0dXJlUmVjb2duaXplclN0YXRlOjpQb3NzaWJsZToKICAgICAgICAgcmV0dXJuIFVJR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZVBvc3NpYmxlOwotICAgIGNhc2UgV0tHZXN0dXJlUmVjb2duaXplclN0
YXRlQmVnYW46CisgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpCZWdhbjoKICAgICAg
ICAgcmV0dXJuIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuOwotICAgIGNhc2UgV0tHZXN0
dXJlUmVjb2duaXplclN0YXRlQ2hhbmdlZDoKKyAgICBjYXNlIEdlc3R1cmVSZWNvZ25pemVyU3Rh
dGU6OkNoYW5nZWQ6CiAgICAgICAgIHJldHVybiBVSUdlc3R1cmVSZWNvZ25pemVyU3RhdGVDaGFu
Z2VkOwotICAgIGNhc2UgV0tHZXN0dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkOgorICAgIGNh
c2UgR2VzdHVyZVJlY29nbml6ZXJTdGF0ZTo6Q2FuY2VsbGVkOgogICAgICAgICByZXR1cm4gVUlH
ZXN0dXJlUmVjb2duaXplclN0YXRlQ2FuY2VsbGVkOwotICAgIGNhc2UgV0tHZXN0dXJlUmVjb2du
aXplclN0YXRlRW5kZWQ6CisgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZDoK
ICAgICAgICAgcmV0dXJuIFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUVuZGVkOwotICAgIGNhc2Ug
V0tHZXN0dXJlUmVjb2duaXplclN0YXRlRmFpbGVkOgorICAgIGNhc2UgR2VzdHVyZVJlY29nbml6
ZXJTdGF0ZTo6RmFpbGVkOgogICAgICAgICByZXR1cm4gVUlHZXN0dXJlUmVjb2duaXplclN0YXRl
RmFpbGVkOwogICAgIH0KIH0KIAotc3RhdGljIGlubGluZSBVSVdLU2VsZWN0aW9uRmxhZ3MgdG9V
SVdLU2VsZWN0aW9uRmxhZ3MoV0tTZWxlY3Rpb25GbGFncyBmbGFnKQorc3RhdGljIGlubGluZSBV
SVdLU2VsZWN0aW9uRmxhZ3MgdG9VSVdLU2VsZWN0aW9uRmxhZ3MoU2VsZWN0aW9uRmxhZ3MgZmxh
Z3MpCiB7Ci0gICAgc3dpdGNoIChmbGFnKSB7Ci0gICAgY2FzZSBXS05vbmU6Ci0gICAgICAgIHJl
dHVybiBVSVdLTm9uZTsKLSAgICBjYXNlIFdLV29yZElzTmVhclRhcDoKLSAgICAgICAgcmV0dXJu
IFVJV0tXb3JkSXNOZWFyVGFwOwotICAgIGNhc2UgV0tJc0Jsb2NrU2VsZWN0aW9uOgotICAgICAg
ICByZXR1cm4gVUlXS0lzQmxvY2tTZWxlY3Rpb247Ci0gICAgfQorICAgIE5TSW50ZWdlciB1aUZs
YWdzID0gVUlXS05vbmU7CisgICAgaWYgKGZsYWdzICYgV29yZElzTmVhclRhcCkKKyAgICAgICAg
dWlGbGFncyB8PSBVSVdLV29yZElzTmVhclRhcDsKKyAgICBpZiAoZmxhZ3MgJiBJc0Jsb2NrU2Vs
ZWN0aW9uKQorICAgICAgICB1aUZsYWdzIHw9IFVJV0tJc0Jsb2NrU2VsZWN0aW9uOworCisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFVJV0tTZWxlY3Rpb25GbGFncz4odWlGbGFncyk7CiB9CiAKLXN0
YXRpYyBpbmxpbmUgV0tIYW5kbGVQb3NpdGlvbiB0b1dLSGFuZGxlUG9zaXRpb24oVUlXS0hhbmRs
ZVBvc2l0aW9uIHBvc2l0aW9uKQorc3RhdGljIGlubGluZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlv
biB0b1NlbGVjdGlvbkhhbmRsZVBvc2l0aW9uKFVJV0tIYW5kbGVQb3NpdGlvbiBwb3NpdGlvbikK
IHsKICAgICBzd2l0Y2ggKHBvc2l0aW9uKSB7CiAgICAgY2FzZSBVSVdLSGFuZGxlVG9wOgotICAg
ICAgICByZXR1cm4gV0tIYW5kbGVUb3A7CisgICAgICAgIHJldHVybiBTZWxlY3Rpb25IYW5kbGVQ
b3NpdGlvbjo6VG9wOwogICAgIGNhc2UgVUlXS0hhbmRsZVJpZ2h0OgotICAgICAgICByZXR1cm4g
V0tIYW5kbGVSaWdodDsKKyAgICAgICAgcmV0dXJuIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpS
aWdodDsKICAgICBjYXNlIFVJV0tIYW5kbGVCb3R0b206Ci0gICAgICAgIHJldHVybiBXS0hhbmRs
ZUJvdHRvbTsKKyAgICAgICAgcmV0dXJuIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpCb3R0b207
CiAgICAgY2FzZSBVSVdLSGFuZGxlTGVmdDoKLSAgICAgICAgcmV0dXJuIFdLSGFuZGxlTGVmdDsK
KyAgICAgICAgcmV0dXJuIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OwogICAgIH0KIH0K
IApAQCAtMTE1NCw5ICsxMTUzLDkgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhH
ZXN0dXJlKAogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChbdmlldyB3ZWJTZWxlY3Rp
b25Bc3Npc3RhbnRdKQotICAgICAgICBbKFVJV0tTZWxlY3Rpb25Bc3Npc3RhbnQgKilbdmlldyB3
ZWJTZWxlY3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZUF0OihDR1Bv
aW50KXBvaW50IHdpdGhHZXN0dXJlOnRvVUlXS0dlc3R1cmVUeXBlKChXS0dlc3R1cmVUeXBlKWdl
c3R1cmVUeXBlKSB3aXRoU3RhdGU6dG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoc3RhdGljX2Nh
c3Q8V0tHZXN0dXJlUmVjb2duaXplclN0YXRlPihnZXN0dXJlU3RhdGUpKSB3aXRoRmxhZ3M6KHRv
VUlXS1NlbGVjdGlvbkZsYWdzKChXS1NlbGVjdGlvbkZsYWdzKWZsYWdzKSldOworICAgICAgICBb
KFVJV0tTZWxlY3Rpb25Bc3Npc3RhbnQgKilbdmlldyB3ZWJTZWxlY3Rpb25Bc3Npc3RhbnRdIHNl
bGVjdGlvbkNoYW5nZWRXaXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOnRv
VUlXS0dlc3R1cmVUeXBlKChHZXN0dXJlVHlwZSlnZXN0dXJlVHlwZSkgd2l0aFN0YXRlOnRvVUlH
ZXN0dXJlUmVjb2duaXplclN0YXRlKHN0YXRpY19jYXN0PEdlc3R1cmVSZWNvZ25pemVyU3RhdGU+
KGdlc3R1cmVTdGF0ZSkpIHdpdGhGbGFnczoodG9VSVdLU2VsZWN0aW9uRmxhZ3MoKFNlbGVjdGlv
bkZsYWdzKWZsYWdzKSldOwogICAgIGVsc2UKLSAgICAgICAgWyhVSVdLVGV4dEludGVyYWN0aW9u
QXNzaXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlvbkNoYW5nZWRX
aXRoR2VzdHVyZUF0OihDR1BvaW50KXBvaW50IHdpdGhHZXN0dXJlOnRvVUlXS0dlc3R1cmVUeXBl
KChXS0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBlKSB3aXRoU3RhdGU6dG9VSUdlc3R1cmVSZWNvZ25p
emVyU3RhdGUoc3RhdGljX2Nhc3Q8V0tHZXN0dXJlUmVjb2duaXplclN0YXRlPihnZXN0dXJlU3Rh
dGUpKSB3aXRoRmxhZ3M6KHRvVUlXS1NlbGVjdGlvbkZsYWdzKChXS1NlbGVjdGlvbkZsYWdzKWZs
YWdzKSldOworICAgICAgICBbKFVJV0tUZXh0SW50ZXJhY3Rpb25Bc3Npc3RhbnQgKilbdmlldyBp
bnRlcmFjdGlvbkFzc2lzdGFudF0gc2VsZWN0aW9uQ2hhbmdlZFdpdGhHZXN0dXJlQXQ6KENHUG9p
bnQpcG9pbnQgd2l0aEdlc3R1cmU6dG9VSVdLR2VzdHVyZVR5cGUoKEdlc3R1cmVUeXBlKWdlc3R1
cmVUeXBlKSB3aXRoU3RhdGU6dG9VSUdlc3R1cmVSZWNvZ25pemVyU3RhdGUoc3RhdGljX2Nhc3Q8
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKSkgd2l0aEZsYWdzOih0b1VJV0tT
ZWxlY3Rpb25GbGFncygoU2VsZWN0aW9uRmxhZ3MpZmxhZ3MpKV07CiB9CiAKIHN0YXRpYyB2b2lk
IHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2goYm9vbCBlcnJvciwgV0tDb250ZW50VmlldyAqdmll
dywgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0b3VjaCkKQEAgLTEx
NjYsNDAgKzExNjUsNDAgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uQ2hhbmdlZFdpdGhUb3VjaChi
bwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChbdmlldyB3ZWJTZWxlY3Rpb25Bc3Np
c3RhbnRdKQotICAgICAgICBbKFVJV0tTZWxlY3Rpb25Bc3Npc3RhbnQgKilbdmlldyB3ZWJTZWxl
Y3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlvbkNoYW5nZWRXaXRoVG91Y2hBdDooQ0dQb2ludClwb2lu
dCB3aXRoU2VsZWN0aW9uVG91Y2g6dG9VSVdLU2VsZWN0aW9uVG91Y2goKFdLU2VsZWN0aW9uVG91
Y2gpdG91Y2gpXTsKKyAgICAgICAgWyhVSVdLU2VsZWN0aW9uQXNzaXN0YW50ICopW3ZpZXcgd2Vi
U2VsZWN0aW9uQXNzaXN0YW50XSBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoQXQ6KENHUG9pbnQp
cG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOnRvVUlXS1NlbGVjdGlvblRvdWNoKChTZWxlY3Rpb25U
b3VjaCl0b3VjaCldOwogICAgIGVsc2UKLSAgICAgICAgWyhVSVdLVGV4dEludGVyYWN0aW9uQXNz
aXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlvbkNoYW5nZWRXaXRo
VG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6dG9VSVdLU2VsZWN0aW9u
VG91Y2goKFdLU2VsZWN0aW9uVG91Y2gpdG91Y2gpXTsKKyAgICAgICAgWyhVSVdLVGV4dEludGVy
YWN0aW9uQXNzaXN0YW50ICopW3ZpZXcgaW50ZXJhY3Rpb25Bc3Npc3RhbnRdIHNlbGVjdGlvbkNo
YW5nZWRXaXRoVG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6dG9VSVdL
U2VsZWN0aW9uVG91Y2goKFNlbGVjdGlvblRvdWNoKXRvdWNoKV07CiB9CiAKLS0gKHZvaWQpX2Rp
ZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoOihXZWJLaXQ6OldLU2VsZWN0aW9uVG91Y2gp
dG91Y2ggd2l0aEZsYWdzOihXZWJLaXQ6OldLU2VsZWN0aW9uRmxhZ3MpZmxhZ3MgZ3Jvd1RocmVz
aG9sZDooQ0dGbG9hdClncm93VGhyZXNob2xkIHNocmlua1RocmVzaG9sZDooQ0dGbG9hdClzaHJp
bmtUaHJlc2hvbGQKKy0gKHZvaWQpX2RpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoOihT
ZWxlY3Rpb25Ub3VjaCl0b3VjaCB3aXRoRmxhZ3M6KFNlbGVjdGlvbkZsYWdzKWZsYWdzIGdyb3dU
aHJlc2hvbGQ6KENHRmxvYXQpZ3Jvd1RocmVzaG9sZCBzaHJpbmtUaHJlc2hvbGQ6KENHRmxvYXQp
c2hyaW5rVGhyZXNob2xkCiB7Ci0gICAgW193ZWJTZWxlY3Rpb25Bc3Npc3RhbnQgYmxvY2tTZWxl
Y3Rpb25DaGFuZ2VkV2l0aFRvdWNoOnRvVUlXS1NlbGVjdGlvblRvdWNoKChXS1NlbGVjdGlvblRv
dWNoKXRvdWNoKSB3aXRoRmxhZ3M6dG9VSVdLU2VsZWN0aW9uRmxhZ3MoKFdLU2VsZWN0aW9uRmxh
Z3MpZmxhZ3MpIGdyb3dUaHJlc2hvbGQ6Z3Jvd1RocmVzaG9sZCBzaHJpbmtUaHJlc2hvbGQ6c2hy
aW5rVGhyZXNob2xkXTsKKyAgICBbX3dlYlNlbGVjdGlvbkFzc2lzdGFudCBibG9ja1NlbGVjdGlv
bkNoYW5nZWRXaXRoVG91Y2g6dG9VSVdLU2VsZWN0aW9uVG91Y2godG91Y2gpIHdpdGhGbGFnczp0
b1VJV0tTZWxlY3Rpb25GbGFncyhmbGFncykgZ3Jvd1RocmVzaG9sZDpncm93VGhyZXNob2xkIHNo
cmlua1RocmVzaG9sZDpzaHJpbmtUaHJlc2hvbGRdOwogfQogCiAtICh2b2lkKWNoYW5nZVNlbGVj
dGlvbldpdGhHZXN0dXJlQXQ6KENHUG9pbnQpcG9pbnQgd2l0aEdlc3R1cmU6KFVJV0tHZXN0dXJl
VHlwZSlnZXN0dXJlVHlwZSB3aXRoU3RhdGU6KFVJR2VzdHVyZVJlY29nbml6ZXJTdGF0ZSlzdGF0
ZQogewotICAgIF9wYWdlLT5zZWxlY3RXaXRoR2VzdHVyZShXZWJDb3JlOjpJbnRQb2ludChwb2lu
dCksIENoYXJhY3RlckdyYW51bGFyaXR5LCB0b1dLR2VzdHVyZVR5cGUoZ2VzdHVyZVR5cGUpLCB0
b1dLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShzdGF0ZSksIEdlc3R1cmVDYWxsYmFjazo6Y3JlYXRl
KFtzZWxmXShib29sIGVycm9yLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgcG9pbnQsIHVpbnQz
Ml90IGdlc3R1cmVUeXBlLCB1aW50MzJfdCBnZXN0dXJlU3RhdGUsIHVpbnQzMl90IGZsYWdzKSB7
CisgICAgX3BhZ2UtPnNlbGVjdFdpdGhHZXN0dXJlKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwg
Q2hhcmFjdGVyR3JhbnVsYXJpdHksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVUeXBl
KGdlc3R1cmVUeXBlKSksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b0dlc3R1cmVSZWNvZ25pemVy
U3RhdGUoc3RhdGUpKSwgR2VzdHVyZUNhbGxiYWNrOjpjcmVhdGUoW3NlbGZdKGJvb2wgZXJyb3Is
IGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBwb2ludCwgdWludDMyX3QgZ2VzdHVyZVR5cGUsIHVp
bnQzMl90IGdlc3R1cmVTdGF0ZSwgdWludDMyX3QgZmxhZ3MpIHsKICAgICAgICAgc2VsZWN0aW9u
Q2hhbmdlZFdpdGhHZXN0dXJlKGVycm9yLCBzZWxmLCBwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1
cmVTdGF0ZSwgZmxhZ3MpOwogICAgIH0pKTsKIH0KIAogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25X
aXRoVG91Y2hBdDooQ0dQb2ludClwb2ludCB3aXRoU2VsZWN0aW9uVG91Y2g6KFVJV0tTZWxlY3Rp
b25Ub3VjaCl0b3VjaCBiYXNlSXNTdGFydDooQk9PTCliYXNlSXNTdGFydAogewotICAgIF9wYWdl
LT51cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhXZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHRv
V0tTZWxlY3Rpb25Ub3VjaCh0b3VjaCksIGJhc2VJc1N0YXJ0LCBUb3VjaGVzQ2FsbGJhY2s6OmNy
ZWF0ZShbc2VsZl0oYm9vbCBlcnJvciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1
aW50MzJfdCB0b3VjaCkgeworICAgIF9wYWdlLT51cGRhdGVTZWxlY3Rpb25XaXRoVG91Y2hlcyhX
ZWJDb3JlOjpJbnRQb2ludChwb2ludCksIHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b1NlbGVjdGlv
blRvdWNoKHRvdWNoKSksIGJhc2VJc1N0YXJ0LCBUb3VjaGVzQ2FsbGJhY2s6OmNyZWF0ZShbc2Vs
Zl0oYm9vbCBlcnJvciwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCB0
b3VjaCkgewogICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aFRvdWNoKGVycm9yLCBzZWxmLCBw
b2ludCwgdG91Y2gpOwogICAgIH0pKTsKIH0KIAogLSAodm9pZCljaGFuZ2VTZWxlY3Rpb25XaXRo
VG91Y2hlc0Zyb206KENHUG9pbnQpZnJvbSB0bzooQ0dQb2ludCl0byB3aXRoR2VzdHVyZTooVUlX
S0dlc3R1cmVUeXBlKWdlc3R1cmVUeXBlIHdpdGhTdGF0ZTooVUlHZXN0dXJlUmVjb2duaXplclN0
YXRlKWdlc3R1cmVTdGF0ZQogewotICAgIF9wYWdlLT5zZWxlY3RXaXRoVHdvVG91Y2hlcyhXZWJD
b3JlOjpJbnRQb2ludChmcm9tKSwgV2ViQ29yZTo6SW50UG9pbnQodG8pLCB0b1dLR2VzdHVyZVR5
cGUoZ2VzdHVyZVR5cGUpLCB0b1dLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZShnZXN0dXJlU3RhdGUp
LCBHZXN0dXJlQ2FsbGJhY2s6OmNyZWF0ZShbc2VsZl0oYm9vbCBlcnJvciwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVy
ZVN0YXRlLCB1aW50MzJfdCBmbGFncykgeworICAgIF9wYWdlLT5zZWxlY3RXaXRoVHdvVG91Y2hl
cyhXZWJDb3JlOjpJbnRQb2ludChmcm9tKSwgV2ViQ29yZTo6SW50UG9pbnQodG8pLCBzdGF0aWNf
Y2FzdDx1aW50MzJfdD4odG9HZXN0dXJlVHlwZShnZXN0dXJlVHlwZSkpLCBzdGF0aWNfY2FzdDx1
aW50MzJfdD4odG9HZXN0dXJlUmVjb2duaXplclN0YXRlKGdlc3R1cmVTdGF0ZSkpLCBHZXN0dXJl
Q2FsbGJhY2s6OmNyZWF0ZShbc2VsZl0oYm9vbCBlcnJvciwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmIHBvaW50LCB1aW50MzJfdCBnZXN0dXJlVHlwZSwgdWludDMyX3QgZ2VzdHVyZVN0YXRlLCB1
aW50MzJfdCBmbGFncykgewogICAgICAgICBzZWxlY3Rpb25DaGFuZ2VkV2l0aEdlc3R1cmUoZXJy
b3IsIHNlbGYsIHBvaW50LCBnZXN0dXJlVHlwZSwgZ2VzdHVyZVN0YXRlLCBmbGFncyk7CiAgICAg
fSkpOwogfQogCiAtICh2b2lkKWNoYW5nZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoQXQ6KENHUG9p
bnQpcG9pbnQgd2l0aFNlbGVjdGlvblRvdWNoOihVSVdLU2VsZWN0aW9uVG91Y2gpdG91Y2ggZm9y
SGFuZGxlOihVSVdLSGFuZGxlUG9zaXRpb24paGFuZGxlCiB7Ci0gICAgX3BhZ2UtPnVwZGF0ZUJs
b2NrU2VsZWN0aW9uV2l0aFRvdWNoKFdlYkNvcmU6OkludFBvaW50KHBvaW50KSwgdG9XS1NlbGVj
dGlvblRvdWNoKHRvdWNoKSwgdG9XS0hhbmRsZVBvc2l0aW9uKGhhbmRsZSkpOworICAgIF9wYWdl
LT51cGRhdGVCbG9ja1NlbGVjdGlvbldpdGhUb3VjaChXZWJDb3JlOjpJbnRQb2ludChwb2ludCks
IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0b1NlbGVjdGlvblRvdWNoKHRvdWNoKSksIHN0YXRpY19j
YXN0PHVpbnQzMl90Pih0b1NlbGVjdGlvbkhhbmRsZVBvc2l0aW9uKGhhbmRsZSkpKTsKIH0KIAog
LSAoY29uc3QgV0tBdXRvQ29ycmVjdGlvbkRhdGEmKWF1dG9jb3JyZWN0aW9uRGF0YQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTY2ODU5KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NDYsNyArNTQ2LDcgQEAKIAkJMkRBOTQ0
QTExODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDlBMTg4NEU0RjAwMEVEODZE
QiAvKiBXZWJJT1NFdmVudEZhY3RvcnkubW0gKi87IH07CiAJCTJEQTk0NEEyMTg4NEU0RjAwMEVE
ODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0OUIxODg0RTRGMDAwRUQ4NkRCIC8qIFdl
YlBsYXRmb3JtVG91Y2hQb2ludElPUy5jcHAgKi87IH07CiAJCTJEQTk0NEEzMTg4NEU0RjAwMEVE
ODZEQiAvKiBXZWJUb3VjaEV2ZW50SU9TLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NDlDMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJUb3VjaEV2
ZW50SU9TLmNwcCAqLzsgfTsKLQkJMkRBOTQ0QTQxODg0RTRGMDAwRUQ4NkRCIC8qIFdLR2VzdHVy
ZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
REE5NDQ5RDE4ODRFNEYwMDBFRDg2REIgLyogV0tHZXN0dXJlVHlwZXMuaCAqLzsgfTsKKwkJMkRB
OTQ0QTQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0OUQxODg0RTRGMDAwRUQ4NkRCIC8q
IEdlc3R1cmVUeXBlcy5oICovOyB9OwogCQkyREE5NDRBNzE4ODRFOTQ4MDBFRDg2REIgLyogRG93
bmxvYWRJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREE5NDRBNjE4ODRFOTQ4MDBFRDg2REIgLyogRG93bmxvYWRJT1MubW0gKi87IH07CiAJCTJE
QTk0NEFEMTg4NEU5QkEwMEVEODZEQiAvKiBUZXh0Q2hlY2tlcklPUy5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQTk0NEE5MTg4NEU5QkEwMEVEODZE
QiAvKiBUZXh0Q2hlY2tlcklPUy5tbSAqLzsgfTsKIAkJMkRBOTQ0QUUxODg0RTlCQTAwRUQ4NkRC
IC8qIFdlYkluc3BlY3RvclByb3h5SU9TLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMkRBOTQ0QUExODg0RTlCQTAwRUQ4NkRCIC8qIFdlYkluc3BlY3Rv
clByb3h5SU9TLm1tICovOyB9OwpAQCAtMjM1NCw3ICsyMzU0LDcgQEAKIAkJMkRBOTQ0OUExODg0
RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdlYklPU0V2ZW50RmFjdG9yeS5tbTsgcGF0aCA9IGlvcy9X
ZWJJT1NFdmVudEZhY3RvcnkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQTk0
NDlCMTg4NEU0RjAwMEVEODZEQiAvKiBXZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9T
LmNwcDsgcGF0aCA9IGlvcy9XZWJQbGF0Zm9ybVRvdWNoUG9pbnRJT1MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkyREE5NDQ5QzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hF
dmVudElPUy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJUb3Vj
aEV2ZW50SU9TLmNwcDsgcGF0aCA9IGlvcy9XZWJUb3VjaEV2ZW50SU9TLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMkRBOTQ0OUQxODg0RTRGMDAwRUQ4NkRCIC8qIFdLR2VzdHVy
ZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdLR2VzdHVyZVR5cGVz
Lmg7IHBhdGggPSBpb3MvV0tHZXN0dXJlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkRBOTQ0OUQxODg0RTRGMDAwRUQ4NkRCIC8qIEdlc3R1cmVUeXBlcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBHZXN0dXJlVHlwZXMuaDsgcGF0aCA9IGlvcy9HZXN0
dXJlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QTYxODg0RTk0
ODAwRUQ4NkRCIC8qIERvd25sb2FkSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gRG93bmxvYWRJT1MubW07IHBhdGggPSBEb3dubG9hZHMvaW9zL0Rvd25sb2Fk
SU9TLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREE5NDRBOTE4ODRFOUJBMDBF
RDg2REIgLyogVGV4dENoZWNrZXJJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBUZXh0Q2hlY2tlcklPUy5tbTsgcGF0aCA9IGlvcy9UZXh0Q2hlY2tlcklPUy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRBOTQ0QUExODg0RTlCQTAwRUQ4NkRC
IC8qIFdlYkluc3BlY3RvclByb3h5SU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gV2ViSW5zcGVjdG9yUHJveHlJT1MubW07IHBhdGggPSBpb3MvV2ViSW5zcGVj
dG9yUHJveHlJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NDU3LDEzICs0
NDU3LDEzIEBACiAJCTJEQTk0NDk2MTg4NEU0REEwMEVEODZEQiAvKiBpb3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTJEQTk0NDlEMTg4NEU0RjAwMEVE
ODZEQiAvKiBHZXN0dXJlVHlwZXMuaCAqLywKIAkJCQkyREE5NDQ5NzE4ODRFNEYwMDBFRDg2REIg
LyogTmF0aXZlV2ViS2V5Ym9hcmRFdmVudElPUy5tbSAqLywKIAkJCQkyREE5NDQ5ODE4ODRFNEYw
MDBFRDg2REIgLyogTmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSAqLywKIAkJCQkyREE5NDQ5OTE4
ODRFNEYwMDBFRDg2REIgLyogV2ViSU9TRXZlbnRGYWN0b3J5LmggKi8sCiAJCQkJMkRBOTQ0OUEx
ODg0RTRGMDAwRUQ4NkRCIC8qIFdlYklPU0V2ZW50RmFjdG9yeS5tbSAqLywKIAkJCQkyREE5NDQ5
QjE4ODRFNEYwMDBFRDg2REIgLyogV2ViUGxhdGZvcm1Ub3VjaFBvaW50SU9TLmNwcCAqLywKIAkJ
CQkyREE5NDQ5QzE4ODRFNEYwMDBFRDg2REIgLyogV2ViVG91Y2hFdmVudElPUy5jcHAgKi8sCi0J
CQkJMkRBOTQ0OUQxODg0RTRGMDAwRUQ4NkRCIC8qIFdLR2VzdHVyZVR5cGVzLmggKi8sCiAJCQkp
OwogCQkJbmFtZSA9IGlvczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC03MTM4LDcg
KzcxMzgsNyBAQAogCQkJCTUxMjE3NDY1MTY0QzIxMzcwMDM3QTVDMSAvKiBXZWJSZXNvdXJjZUJ1
ZmZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMzNjc2MzAxMzBDOTk5ODAwNkM5REUyIC8qIFdl
YlJlc291cmNlQ2FjaGVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzM2NzY1NjEzMEM5
RUNBMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMkRBOTQ0QTQxODg0RTRGMDAwRUQ4NkRCIC8qIFdLR2VzdHVyZVR5cGVzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkyREE5NDRBNDE4ODRFNEYwMDBFRDg2REIgLyogR2VzdHVyZVR5
cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzM2NzYzNjEzMEM5OUIyMDA2QzlERTIgLyogV2Vi
UmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzMzNjc2NTgx
MzBDOUVDQjAwNkM5REUyIC8qIFdlYlJlc291cmNlQ2FjaGVNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY5MzFDMUMxOEM1NzExOTAwREJBN0MzIC8qIFNjcm9sbGlu
Z1RyZWVPdmVyZmxvd1Njcm9sbGluZ05vZGVJT1MuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShyZXZpc2lvbiAxNjY4
NTkpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBACiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPUykK
LSNpbmNsdWRlICJXS0dlc3R1cmVUeXBlcy5oIgorI2luY2x1ZGUgIkdlc3R1cmVUeXBlcy5oIgog
I2VuZGlmCiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtNzkyLDEyICs3OTIsMTIgQEAg
cHJpdmF0ZToKIAogI2lmIFBMQVRGT1JNKElPUykKICAgICBzdGF0aWMgdm9pZCBjb252ZXJ0U2Vs
ZWN0aW9uUmVjdHNUb1Jvb3RWaWV3KFdlYkNvcmU6OkZyYW1lVmlldyosIFZlY3RvcjxXZWJDb3Jl
OjpTZWxlY3Rpb25SZWN0PiYpOwotICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdl
Rm9yV2ViU2VsZWN0aW9uQXRQb3NpdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0
IFdlYkNvcmU6OlZpc2libGVQb3NpdGlvbiYsIFdLU2VsZWN0aW9uRmxhZ3MmKTsKKyAgICBQYXNz
UmVmUHRyPFdlYkNvcmU6OlJhbmdlPiByYW5nZUZvcldlYlNlbGVjdGlvbkF0UG9zaXRpb24oY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mLCBT
ZWxlY3Rpb25GbGFncyYpOwogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IHJhbmdlRm9y
QmxvY2tBdFBvaW50KGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7Ci0gICAgdm9pZCBjb21wdXRl
RXhwYW5kQW5kU2hyaW5rVGhyZXNob2xkc0ZvckhhbmRsZShjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYsIFdLSGFuZGxlUG9zaXRpb24sIGZsb2F0JiBncm93VGhyZXNob2xkLCBmbG9hdCYgc2hyaW5r
VGhyZXNob2xkKTsKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBjaGFuZ2VCbG9ja1Nl
bGVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdLSGFuZGxlUG9zaXRpb24sIGZsb2F0
JiBncm93VGhyZXNob2xkLCBmbG9hdCYgc2hyaW5rVGhyZXNob2xkLCBXS1NlbGVjdGlvbkZsYWdz
Jik7Ci0gICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpSYW5nZT4gZXhwYW5kZWRSYW5nZUZyb21IYW5k
bGUoV2ViQ29yZTo6UmFuZ2UqLCBXS0hhbmRsZVBvc2l0aW9uKTsKLSAgICBQYXNzUmVmUHRyPFdl
YkNvcmU6OlJhbmdlPiBjb250cmFjdGVkUmFuZ2VGcm9tSGFuZGxlKFdlYkNvcmU6OlJhbmdlKiBj
dXJyZW50UmFuZ2UsIFdLSGFuZGxlUG9zaXRpb24sIFdLU2VsZWN0aW9uRmxhZ3MmKTsKKyAgICB2
b2lkIGNvbXB1dGVFeHBhbmRBbmRTaHJpbmtUaHJlc2hvbGRzRm9ySGFuZGxlKGNvbnN0IFdlYkNv
cmU6OkludFBvaW50JiwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24sIGZsb2F0JiBncm93VGhyZXNo
b2xkLCBmbG9hdCYgc2hyaW5rVGhyZXNob2xkKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJh
bmdlPiBjaGFuZ2VCbG9ja1NlbGVjdGlvbihjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFNlbGVj
dGlvbkhhbmRsZVBvc2l0aW9uLCBmbG9hdCYgZ3Jvd1RocmVzaG9sZCwgZmxvYXQmIHNocmlua1Ro
cmVzaG9sZCwgU2VsZWN0aW9uRmxhZ3MmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdl
PiBleHBhbmRlZFJhbmdlRnJvbUhhbmRsZShXZWJDb3JlOjpSYW5nZSosIFNlbGVjdGlvbkhhbmRs
ZVBvc2l0aW9uKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiBjb250cmFjdGVkUmFu
Z2VGcm9tSGFuZGxlKFdlYkNvcmU6OlJhbmdlKiBjdXJyZW50UmFuZ2UsIFNlbGVjdGlvbkhhbmRs
ZVBvc2l0aW9uLCBTZWxlY3Rpb25GbGFncyYpOwogICAgIHZvaWQgZ2V0QXNzaXN0ZWROb2RlSW5m
b3JtYXRpb24oQXNzaXN0ZWROb2RlSW5mb3JtYXRpb24mKTsKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZUFjY2Vzc2liaWxpdHkoKTsKICAgICBSZWZQdHI8V2ViQ29yZTo6UmFuZ2U+IG1fY3Vy
cmVudEJsb2NrU2VsZWN0aW9uOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2lvcy9XZWJQYWdlSU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQkocmV2aXNpb24gMTY2ODU5KQorKysgU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0zMiwzNyArMzIsMzcgQEAKICNpbXBvcnQgIkRhdGFSZWZlcmVuY2UuaCIKICNp
bXBvcnQgIkVkaXRpbmdSYW5nZS5oIgogI2ltcG9ydCAiRWRpdG9yU3RhdGUuaCIKKyNpbXBvcnQg
Ikdlc3R1cmVUeXBlcy5oIgogI2ltcG9ydCAiSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24uaCIKLSNpbXBvcnQgIlBsdWdpblZpZXcuaCIKICNpbXBvcnQgIkxheWVyVHJlZUhvc3QuaCIK
KyNpbXBvcnQgIlBsdWdpblZpZXcuaCIKICNpbXBvcnQgIlZpc2libGVDb250ZW50UmVjdFVwZGF0
ZUluZm8uaCIKKyNpbXBvcnQgIldLQWNjZXNzaWJpbGl0eVdlYlBhZ2VPYmplY3RJT1MuaCIKICNp
bXBvcnQgIldlYkNocm9tZUNsaWVudC5oIgogI2ltcG9ydCAiV2ViQ29yZUFyZ3VtZW50Q29kZXJz
LmgiCisjaW1wb3J0ICJXZWJGcmFtZS5oIgogI2ltcG9ydCAiV2ViS2l0U3lzdGVtSW50ZXJmYWNl
LmgiCiAjaW1wb3J0ICJXZWJLaXRTeXN0ZW1JbnRlcmZhY2VJT1MuaCIKLSNpbXBvcnQgIldlYkZy
YW1lLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2ltcG9ydCAiV2ViUHJv
Y2Vzcy5oIgotI2ltcG9ydCAiV0tBY2Nlc3NpYmlsaXR5V2ViUGFnZU9iamVjdElPUy5oIgotI2lt
cG9ydCAiV0tHZXN0dXJlVHlwZXMuaCIKICNpbXBvcnQgPENvcmVUZXh0L0NURm9udC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9DaHJvbWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvRWxlbWVudC5oPgogI2lt
cG9ydCA8V2ViQ29yZS9FdmVudEhhbmRsZXIuaD4KLSNpbXBvcnQgPFdlYkNvcmUvRm9jdXNDb250
cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL0Zsb2F0UXVhZC5oPgorI2ltcG9ydCA8V2ViQ29y
ZS9Gb2N1c0NvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvRnJhbWUuaD4KICNpbXBvcnQg
PFdlYkNvcmUvRnJhbWVWaWV3Lmg+Ci0jaW1wb3J0IDxXZWJDb3JlL0hpdFRlc3RSZXN1bHQuaD4K
ICNpbXBvcnQgPFdlYkNvcmUvSFRNTEVsZW1lbnRUeXBlSGVscGVycy5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MRm9ybUVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTElucHV0RWxlbWVu
dC5oPgotI2ltcG9ydCA8V2ViQ29yZS9IVE1MT3B0aW9uRWxlbWVudC5oPgogI2ltcG9ydCA8V2Vi
Q29yZS9IVE1MT3B0R3JvdXBFbGVtZW50Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0hUTUxPcHRpb25F
bGVtZW50Lmg+CisjaW1wb3J0IDxXZWJDb3JlL0hUTUxPcHRpb25FbGVtZW50Lmg+CiAjaW1wb3J0
IDxXZWJDb3JlL0hUTUxQYXJzZXJJZGlvbXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFNlbGVj
dEVsZW1lbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvSFRNTFRleHRBcmVhRWxlbWVudC5oPgorI2lt
cG9ydCA8V2ViQ29yZS9IaXRUZXN0UmVzdWx0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL0tleWJvYXJk
RXZlbnQuaD4KICNpbXBvcnQgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CiAjaW1wb3J0IDxXZWJDb3Jl
L01lZGlhU2Vzc2lvbk1hbmFnZXJJT1MuaD4KQEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0aWMgSW50
UG9pbnQgY29uc3RyYWluUG9pbnQoY29uc3QgSW50CiAgICAgcmV0dXJuIGNvbnN0cmFpbmVkUG9p
bnQ7CiB9CiAKLVBhc3NSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OnJhbmdlRm9yV2ViU2VsZWN0aW9u
QXRQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYg
cG9zaXRpb24sIFdLU2VsZWN0aW9uRmxhZ3MmIGZsYWdzKQorUGFzc1JlZlB0cjxSYW5nZT4gV2Vi
UGFnZTo6cmFuZ2VGb3JXZWJTZWxlY3Rpb25BdFBvc2l0aW9uKGNvbnN0IEludFBvaW50JiBwb2lu
dCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3NpdGlvbiwgU2VsZWN0aW9uRmxhZ3MmIGZsYWdz
KQogewogICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5ldmVu
dEhhbmRsZXIoKS5oaXRUZXN0UmVzdWx0QXRQb2ludCgocG9pbnQpLCBIaXRUZXN0UmVxdWVzdDo6
UmVhZE9ubHkgfCBIaXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2Fs
bG93U2hhZG93Q29udGVudCB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJhbWVDb250ZW50
KTsKIApAQCAtNDkxLDcgKzQ5MSw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OnJhbmdl
Rm9yV2ViU2UKICAgICAgICAgaWYgKHJhbmdlICYmICFyYW5nZS0+Y29sbGFwc2VkKEFTU0VSVF9O
T19FWENFUFRJT04pKQogICAgICAgICAgICAgcmV0dXJuIHJhbmdlOwogICAgIH0KLSAgICBmbGFn
cyA9IFdLSXNCbG9ja1NlbGVjdGlvbjsKKyAgICBmbGFncyA9IElzQmxvY2tTZWxlY3Rpb247CiAg
ICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGJlc3RDaG9pY2UtPmRvY3VtZW50KCkpOwogICAgIHJh
bmdlLT5zZWxlY3ROb2RlQ29udGVudHMoYmVzdENob2ljZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7
CiAgICAgcmV0dXJuIHJhbmdlLT5jb2xsYXBzZWQoQVNTRVJUX05PX0VYQ0VQVElPTikgPyBudWxs
cHRyIDogcmFuZ2U7CkBAIC01MzMsMTAgKzUzMywxMCBAQCB2b2lkIFdlYlBhZ2U6OnNlbGVjdFdp
dGhHZXN0dXJlKGNvbnN0IEluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZTsKLSAgICBXS1NlbGVjdGlvbkZsYWdzIGZsYWdzID0gV0tOb25lOwotICAgIFdL
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZSB3a0dlc3R1cmVTdGF0ZSA9IHN0YXRpY19jYXN0PFdLR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKTsKLSAgICBzd2l0Y2ggKHN0YXRpY19j
YXN0PFdLR2VzdHVyZVR5cGU+KGdlc3R1cmVUeXBlKSkgewotICAgIGNhc2UgV0tHZXN0dXJlT25l
RmluZ2VyVGFwOgorICAgIFNlbGVjdGlvbkZsYWdzIGZsYWdzID0gTm9uZTsKKyAgICBHZXN0dXJl
UmVjb2duaXplclN0YXRlIHdrR2VzdHVyZVN0YXRlID0gc3RhdGljX2Nhc3Q8R2VzdHVyZVJlY29n
bml6ZXJTdGF0ZT4oZ2VzdHVyZVN0YXRlKTsKKyAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PEdlc3R1
cmVUeXBlPihnZXN0dXJlVHlwZSkpIHsKKyAgICBjYXNlIEdlc3R1cmVUeXBlOjpPbmVGaW5nZXJU
YXA6CiAgICAgewogICAgICAgICBWaXNpYmxlUG9zaXRpb24gcmVzdWx0OwogICAgICAgICAvLyBt
b3ZlIHRoZSB0aGUgcG9zaXRpb24gYXQgdGhlIGVuZCBvZiB0aGUgd29yZApAQCAtNTY5LDM0ICs1
NjksMzQgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogICAgIH0K
ICAgICAgICAgYnJlYWs7CiAKLSAgICBjYXNlIFdLR2VzdHVyZUxvdXBlOgorICAgIGNhc2UgR2Vz
dHVyZVR5cGU6OkxvdXBlOgogICAgICAgICByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKmZyYW1lLmRv
Y3VtZW50KCksIHBvc2l0aW9uLCBwb3NpdGlvbik7CiAgICAgICAgIGJyZWFrOwogCi0gICAgY2Fz
ZSBXS0dlc3R1cmVUYXBBbmRBSGFsZjoKKyAgICBjYXNlIEdlc3R1cmVUeXBlOjpUYXBBbmRBSGFs
ZjoKICAgICAgICAgc3dpdGNoICh3a0dlc3R1cmVTdGF0ZSkgewotICAgICAgICBjYXNlIFdLR2Vz
dHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuOgorICAgICAgICBjYXNlIEdlc3R1cmVSZWNvZ25pemVy
U3RhdGU6OkJlZ2FuOgogICAgICAgICAgICAgcmFuZ2UgPSB3b3JkUmFuZ2VGcm9tUG9zaXRpb24o
cG9zaXRpb24pOwogICAgICAgICAgICAgbV9jdXJyZW50V29yZFJhbmdlID0gUmFuZ2U6OmNyZWF0
ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgcmFuZ2UtPmVuZFBv
c2l0aW9uKCkpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0tHZXN0dXJlUmVj
b2duaXplclN0YXRlQ2hhbmdlZDoKKyAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRl
OjpDaGFuZ2VkOgogICAgICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFtZS5kb2N1
bWVudCgpLCBtX2N1cnJlbnRXb3JkUmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgbV9jdXJyZW50V29y
ZFJhbmdlLT5lbmRQb3NpdGlvbigpKTsKICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA8IHJhbmdl
LT5zdGFydFBvc2l0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmFuZ2UtPnNldFN0YXJ0KHBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCksIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAgICAgICAgICAg
aWYgKHBvc2l0aW9uID4gcmFuZ2UtPmVuZFBvc2l0aW9uKCkpCiAgICAgICAgICAgICAgICAgcmFu
Z2UtPnNldEVuZChwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFdLR2VzdHVyZVJlY29nbml6ZXJT
dGF0ZUVuZGVkOgotICAgICAgICBjYXNlIFdLR2VzdHVyZVJlY29nbml6ZXJTdGF0ZUNhbmNlbGxl
ZDoKKyAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpFbmRlZDoKKyAgICAgICAg
Y2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpDYW5jZWxsZWQ6CiAgICAgICAgICAgICBtX2N1
cnJlbnRXb3JkUmFuZ2UgPSBudWxscHRyOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgV0tHZXN0dXJlUmVjb2duaXplclN0YXRlRmFpbGVkOgotICAgICAgICBjYXNlIFdLR2VzdHVy
ZVJlY29nbml6ZXJTdGF0ZVBvc3NpYmxlOgorICAgICAgICBjYXNlIEdlc3R1cmVSZWNvZ25pemVy
U3RhdGU6OkZhaWxlZDoKKyAgICAgICAgY2FzZSBHZXN0dXJlUmVjb2duaXplclN0YXRlOjpQb3Nz
aWJsZToKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9CiAgICAg
ICAgIGJyZWFrOwogCi0gICAgY2FzZSBXS0dlc3R1cmVPbmVGaW5nZXJEb3VibGVUYXA6CisgICAg
Y2FzZSBHZXN0dXJlVHlwZTo6T25lRmluZ2VyRG91YmxlVGFwOgogICAgICAgICBpZiAoYXRCb3Vu
ZGFyeU9mR3JhbnVsYXJpdHkocG9zaXRpb24sIExpbmVHcmFudWxhcml0eSwgRGlyZWN0aW9uRm9y
d2FyZCkpIHsKICAgICAgICAgICAgIC8vIERvdWJsZS10YXAgYXQgZW5kIG9mIGxpbmUgb25seSBw
bGFjZXMgaW5zZXJ0aW9uIHBvaW50IHRoZXJlLgogICAgICAgICAgICAgLy8gVGhpcyBoZWxwcyB0
byBnZXQgdGhlIGNhbGxvdXQgZm9yIHBhc3RpbmcgYXQgZW5kcyBvZiBsaW5lcywKQEAgLTYwNiwx
MiArNjA2LDEyIEBAIHZvaWQgV2ViUGFnZTo6c2VsZWN0V2l0aEdlc3R1cmUoY29uc3QgSW4KICAg
ICAgICAgICAgIHJhbmdlID0gd29yZFJhbmdlRnJvbVBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICAg
ICAgYnJlYWs7CiAKLSAgICBjYXNlIFdLR2VzdHVyZVR3b0ZpbmdlclNpbmdsZVRhcDoKKyAgICBj
YXNlIEdlc3R1cmVUeXBlOjpUd29GaW5nZXJTaW5nbGVUYXA6CiAgICAgICAgIC8vIFNpbmdsZSB0
YXAgd2l0aCB0d28gZmluZ2VycyBzZWxlY3RzIHRoZSBlbnRpcmUgcGFyYWdyYXBoLgogICAgICAg
ICByYW5nZSA9IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgUGFyYWdy
YXBoR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpOwogICAgICAgICBicmVhazsKIAotICAg
IGNhc2UgV0tHZXN0dXJlT25lRmluZ2VyVHJpcGxlVGFwOgorICAgIGNhc2UgR2VzdHVyZVR5cGU6
Ok9uZUZpbmdlclRyaXBsZVRhcDoKICAgICAgICAgaWYgKGF0Qm91bmRhcnlPZkdyYW51bGFyaXR5
KHBvc2l0aW9uLCBMaW5lR3JhbnVsYXJpdHksIERpcmVjdGlvbkZvcndhcmQpKSB7CiAgICAgICAg
ICAgICAvLyBUcmlwbGUtdGFwIGF0IGVuZCBvZiBsaW5lIG9ubHkgcGxhY2VzIGluc2VydGlvbiBw
b2ludCB0aGVyZS4KICAgICAgICAgICAgIC8vIFRoaXMgaGVscHMgdG8gZ2V0IHRoZSBjYWxsb3V0
IGZvciBwYXN0aW5nIGF0IGVuZHMgb2YgbGluZXMsCkBAIC02MjEsMTQgKzYyMSwxNCBAQCB2b2lk
IFdlYlBhZ2U6OnNlbGVjdFdpdGhHZXN0dXJlKGNvbnN0IEluCiAgICAgICAgICAgICByYW5nZSA9
IGVuY2xvc2luZ1RleHRVbml0T2ZHcmFudWxhcml0eShwb3NpdGlvbiwgUGFyYWdyYXBoR3JhbnVs
YXJpdHksIERpcmVjdGlvbkZvcndhcmQpOwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgV0tH
ZXN0dXJlTWFrZVdlYlNlbGVjdGlvbjoKLSAgICAgICAgaWYgKHdrR2VzdHVyZVN0YXRlID09IFdL
R2VzdHVyZVJlY29nbml6ZXJTdGF0ZUJlZ2FuKSB7CisgICAgY2FzZSBHZXN0dXJlVHlwZTo6TWFr
ZVdlYlNlbGVjdGlvbjoKKyAgICAgICAgaWYgKHdrR2VzdHVyZVN0YXRlID09IEdlc3R1cmVSZWNv
Z25pemVyU3RhdGU6OkJlZ2FuKSB7CiAgICAgICAgICAgICBtX2Jsb2NrU2VsZWN0aW9uRGVzaXJl
ZFNpemUuc2V0V2lkdGgoYmxvY2tTZWxlY3Rpb25TdGFydFdpZHRoKTsKICAgICAgICAgICAgIG1f
YmxvY2tTZWxlY3Rpb25EZXNpcmVkU2l6ZS5zZXRIZWlnaHQoYmxvY2tTZWxlY3Rpb25TdGFydEhl
aWdodCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRCbG9ja1NlbGVjdGlvbiA9IG51bGxwdHI7CiAg
ICAgICAgIH0KICAgICAgICAgcmFuZ2UgPSByYW5nZUZvcldlYlNlbGVjdGlvbkF0UG9zaXRpb24o
cG9pbnQsIHBvc2l0aW9uLCBmbGFncyk7Ci0gICAgICAgIGlmICh3a0dlc3R1cmVTdGF0ZSA9PSBX
S0dlc3R1cmVSZWNvZ25pemVyU3RhdGVFbmRlZCAmJiBmbGFncyAmIFdLSXNCbG9ja1NlbGVjdGlv
bikKKyAgICAgICAgaWYgKHdrR2VzdHVyZVN0YXRlID09IEdlc3R1cmVSZWNvZ25pemVyU3RhdGU6
OkVuZGVkICYmIGZsYWdzICYgSXNCbG9ja1NlbGVjdGlvbikKICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrU2VsZWN0aW9uID0gcmFuZ2U7CiAgICAgICAgIGJyZWFrOwogCkBAIC02MzgsNyArNjM4
LDcgQEAgdm9pZCBXZWJQYWdlOjpzZWxlY3RXaXRoR2VzdHVyZShjb25zdCBJbgogICAgIGlmIChy
YW5nZSkKICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0ZWRSYW5nZShyYW5nZS5n
ZXQoKSwgcG9zaXRpb24uYWZmaW5pdHkoKSwgdHJ1ZSk7CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVT
dGF0ZSwgZmxhZ3MsIGNhbGxiYWNrSUQpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6Okdlc3R1cmVDYWxsYmFjayhwb2ludCwgZ2VzdHVyZVR5cGUsIGdlc3R1cmVTdGF0ZSwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KGZsYWdzKSwgY2FsbGJhY2tJRCkpOwogICAgIG1fc2hvdWxkUmV0
dXJuV29yZEF0U2VsZWN0aW9uID0gZmFsc2U7CiB9CiAKQEAgLTcyMiwxNiArNzIyLDE2IEBAIHN0
YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiByYW5nZUF0V29yZEJvdW4KIAogc3RhdGljIGNvbnN0IGlu
dCBtYXhIaXRUZXN0cyA9IDEwOwogCi1zdGF0aWMgaW5saW5lIGZsb2F0IGRpc3RhbmNlQmV0d2Vl
blJlY3RzRm9yUG9zaXRpb24oSW50UmVjdCYgZmlyc3QsIEludFJlY3QmIHNlY29uZCwgV0tIYW5k
bGVQb3NpdGlvbiBoYW5kbGVQb3NpdGlvbikKK3N0YXRpYyBpbmxpbmUgZmxvYXQgZGlzdGFuY2VC
ZXR3ZWVuUmVjdHNGb3JQb3NpdGlvbihJbnRSZWN0JiBmaXJzdCwgSW50UmVjdCYgc2Vjb25kLCBT
ZWxlY3Rpb25IYW5kbGVQb3NpdGlvbiBoYW5kbGVQb3NpdGlvbikKIHsKICAgICBzd2l0Y2ggKGhh
bmRsZVBvc2l0aW9uKSB7Ci0gICAgY2FzZSBXS0hhbmRsZVRvcDoKKyAgICBjYXNlIFNlbGVjdGlv
bkhhbmRsZVBvc2l0aW9uOjpUb3A6CiAgICAgICAgIHJldHVybiBhYnMoZmlyc3QueSgpIC0gc2Vj
b25kLnkoKSk7Ci0gICAgY2FzZSBXS0hhbmRsZVJpZ2h0OgorICAgIGNhc2UgU2VsZWN0aW9uSGFu
ZGxlUG9zaXRpb246OlJpZ2h0OgogICAgICAgICByZXR1cm4gYWJzKGZpcnN0Lm1heFgoKSAtIHNl
Y29uZC5tYXhYKCkpOwotICAgIGNhc2UgV0tIYW5kbGVCb3R0b206CisgICAgY2FzZSBTZWxlY3Rp
b25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgogICAgICAgICByZXR1cm4gYWJzKGZpcnN0Lm1heFko
KSAtIHNlY29uZC5tYXhZKCkpOwotICAgIGNhc2UgV0tIYW5kbGVMZWZ0OgorICAgIGNhc2UgU2Vs
ZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6CiAgICAgICAgIHJldHVybiBhYnMoZmlyc3QueCgp
IC0gc2Vjb25kLngoKSk7CiAgICAgfQogfQpAQCAtNzcyLDIxICs3NzIsMjEgQEAgc3RhdGljIGlu
bGluZSBSZWZQdHI8UmFuZ2U+IHVuaW9uRE9NUmFuZwogICAgIHJldHVybiBSYW5nZTo6Y3JlYXRl
KHJhbmdlQS0+b3duZXJEb2N1bWVudCgpLCBzdGFydC0+c3RhcnRDb250YWluZXIoKSwgc3RhcnQt
PnN0YXJ0T2Zmc2V0KCksIGVuZC0+ZW5kQ29udGFpbmVyKCksIGVuZC0+ZW5kT2Zmc2V0KCkpOwog
fQogCi1zdGF0aWMgaW5saW5lIEludFBvaW50IGNvbXB1dGVFZGdlQ2VudGVyKGNvbnN0IEludFJl
Y3QmIGJveCwgV0tIYW5kbGVQb3NpdGlvbiBoYW5kbGVQb3NpdGlvbikKK3N0YXRpYyBpbmxpbmUg
SW50UG9pbnQgY29tcHV0ZUVkZ2VDZW50ZXIoY29uc3QgSW50UmVjdCYgYm94LCBTZWxlY3Rpb25I
YW5kbGVQb3NpdGlvbiBoYW5kbGVQb3NpdGlvbikKIHsKICAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0
aW9uKSB7Ci0gICAgY2FzZSBXS0hhbmRsZVRvcDoKKyAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBv
c2l0aW9uOjpUb3A6CiAgICAgICAgIHJldHVybiBJbnRQb2ludChib3gueCgpICsgYm94LndpZHRo
KCkgLyAyLCBib3gueSgpKTsKLSAgICBjYXNlIFdLSGFuZGxlUmlnaHQ6CisgICAgY2FzZSBTZWxl
Y3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6CiAgICAgICAgIHJldHVybiBJbnRQb2ludChib3gu
bWF4WCgpLCBib3gueSgpICsgYm94LmhlaWdodCgpIC8gMik7Ci0gICAgY2FzZSBXS0hhbmRsZUJv
dHRvbToKKyAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpCb3R0b206CiAgICAgICAg
IHJldHVybiBJbnRQb2ludChib3gueCgpICsgYm94LndpZHRoKCkgLyAyLCBib3gubWF4WSgpKTsK
LSAgICBjYXNlIFdLSGFuZGxlTGVmdDoKKyAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9u
OjpMZWZ0OgogICAgICAgICByZXR1cm4gSW50UG9pbnQoYm94LngoKSwgYm94LnkoKSArIGJveC5o
ZWlnaHQoKSAvIDIpOwogICAgIH0KIH0KIAotUGFzc1JlZlB0cjxSYW5nZT4gV2ViUGFnZTo6ZXhw
YW5kZWRSYW5nZUZyb21IYW5kbGUoUmFuZ2UqIGN1cnJlbnRSYW5nZSwgV0tIYW5kbGVQb3NpdGlv
biBoYW5kbGVQb3NpdGlvbikKK1Bhc3NSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OmV4cGFuZGVkUmFu
Z2VGcm9tSGFuZGxlKFJhbmdlKiBjdXJyZW50UmFuZ2UsIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9u
IGhhbmRsZVBvc2l0aW9uKQogewogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIGJvdW5kaW5n
UmVjdCgpIGluc3RlYWQgb2YgYm91bmRpbmdCb3goKSBpbiB0aGlzIGZ1bmN0aW9uIHdoZW4gPHJk
YXI6Ly9wcm9ibGVtLzE2MDYzNzIzPiBpcyBmaXhlZC4KICAgICBJbnRSZWN0IGN1cnJlbnRCb3gg
PSBjdXJyZW50UmFuZ2UtPmJvdW5kaW5nQm94KCk7CkBAIC04MDgsMTYgKzgwOCwxNiBAQCBQYXNz
UmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpleHBhbmRlZFJhbmdlCiAKICAgICAgICAgSW50UG9pbnQg
dGVzdFBvaW50ID0gZWRnZUNlbnRlcjsKICAgICAgICAgc3dpdGNoIChoYW5kbGVQb3NpdGlvbikg
ewotICAgICAgICBjYXNlIFdLSGFuZGxlVG9wOgorICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRs
ZVBvc2l0aW9uOjpUb3A6CiAgICAgICAgICAgICB0ZXN0UG9pbnQubW92ZSgwLCAtZGlzdGFuY2Up
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0tIYW5kbGVSaWdodDoKKyAgICAg
ICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6CiAgICAgICAgICAgICB0ZXN0
UG9pbnQubW92ZShkaXN0YW5jZSwgMCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBXS0hhbmRsZUJvdHRvbToKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6
Qm90dG9tOgogICAgICAgICAgICAgdGVzdFBvaW50Lm1vdmUoMCwgZGlzdGFuY2UpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0tIYW5kbGVMZWZ0OgorICAgICAgICBjYXNlIFNl
bGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgogICAgICAgICAgICAgdGVzdFBvaW50Lm1vdmUo
LWRpc3RhbmNlLCAwKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC04MzcsMTIg
KzgzNywxMiBAQCBQYXNzUmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpleHBhbmRlZFJhbmdlCiAgICAg
ICAgIGJvb2wgaXNCZXR0ZXJDaG9pY2UgPSAhKHJlY3RzRXNzZW50aWFsbHlUaGVTYW1lKGNvcHlS
ZWN0LCBjdXJyZW50Qm94LCAuMDUpKTsKICAgICAgICAgaWYgKGlzQmV0dGVyQ2hvaWNlKSB7CiAg
ICAgICAgICAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBjYXNlIFdL
SGFuZGxlVG9wOgotICAgICAgICAgICAgY2FzZSBXS0hhbmRsZUJvdHRvbToKKyAgICAgICAgICAg
IGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRvcDoKKyAgICAgICAgICAgIGNhc2UgU2Vs
ZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKICAgICAgICAgICAgICAgICBpc0JldHRlckNo
b2ljZSA9IChjb3B5UmVjdC5oZWlnaHQoKSA+IGN1cnJlbnRCb3guaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXS0hhbmRsZVJpZ2h0OgotICAgICAg
ICAgICAgY2FzZSBXS0hhbmRsZUxlZnQ6CisgICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRs
ZVBvc2l0aW9uOjpSaWdodDoKKyAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRp
b246OkxlZnQ6CiAgICAgICAgICAgICAgICAgaXNCZXR0ZXJDaG9pY2UgPSAoY29weVJlY3Qud2lk
dGgoKSA+IGN1cnJlbnRCb3gud2lkdGgoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICB9CkBAIC04NTIsMTIgKzg1MiwxMiBAQCBQYXNzUmVmUHRyPFJhbmdlPiBXZWJQYWdl
OjpleHBhbmRlZFJhbmdlCiAgICAgICAgIGlmIChiZXN0UmFuZ2UgJiYgaXNCZXR0ZXJDaG9pY2Up
IHsKICAgICAgICAgICAgIC8vIEZ1cnRoZXJvcmUsIGlzIGl0IHNtYWxsZXIgdGhhbiB0aGUgYmVz
dCB3ZSd2ZSBmb3VuZCBzbyBmYXI/CiAgICAgICAgICAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0aW9u
KSB7Ci0gICAgICAgICAgICBjYXNlIFdLSGFuZGxlVG9wOgotICAgICAgICAgICAgY2FzZSBXS0hh
bmRsZUJvdHRvbToKKyAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRv
cDoKKyAgICAgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKICAg
ICAgICAgICAgICAgICBpc0JldHRlckNob2ljZSA9IChjb3B5UmVjdC5oZWlnaHQoKSA8IGJlc3RS
ZWN0LmhlaWdodCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
V0tIYW5kbGVSaWdodDoKLSAgICAgICAgICAgIGNhc2UgV0tIYW5kbGVMZWZ0OgorICAgICAgICAg
ICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6UmlnaHQ6CisgICAgICAgICAgICBjYXNl
IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OgogICAgICAgICAgICAgICAgIGlzQmV0dGVy
Q2hvaWNlID0gKGNvcHlSZWN0LndpZHRoKCkgPCBiZXN0UmVjdC53aWR0aCgpKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTg3Nyw3ICs4NzcsNyBAQCBQYXNzUmVm
UHRyPFJhbmdlPiBXZWJQYWdlOjpleHBhbmRlZFJhbmdlCiAgICAgcmV0dXJuIGN1cnJlbnRSYW5n
ZTsKIH0KIAotUGFzc1JlZlB0cjxSYW5nZT4gV2ViUGFnZTo6Y29udHJhY3RlZFJhbmdlRnJvbUhh
bmRsZShSYW5nZSogY3VycmVudFJhbmdlLCBXS0hhbmRsZVBvc2l0aW9uIGhhbmRsZVBvc2l0aW9u
LCBXS1NlbGVjdGlvbkZsYWdzJiBmbGFncykKK1Bhc3NSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OmNv
bnRyYWN0ZWRSYW5nZUZyb21IYW5kbGUoUmFuZ2UqIGN1cnJlbnRSYW5nZSwgU2VsZWN0aW9uSGFu
ZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24sIFNlbGVjdGlvbkZsYWdzJiBmbGFncykKIHsKICAg
ICAvLyBTaHJpbmtpbmcgd2l0aCBhIGJhc2UgYW5kIGV4dGVudCB3aWxsIGFsd2F5cyBnaXZlIGJl
dHRlciByZXN1bHRzLiBJZiB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUgZWxlbWVudCwKICAgICAvLyBz
ZWUgaWYgd2UgY2FuIGJyZWFrIHRoYXQgZG93biB0byBhIGJhc2UgYW5kIGV4dGVudC4gU2hyaW5r
aW5nIGJhc2UgYW5kIGV4dGVudCBpcyBjb21wYXJhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZC4KQEAg
LTg4NiwxNyArODg2LDE3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OmNvbnRyYWN0ZWRS
YW4KICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIHVzZSBib3VuZGluZ1JlY3QoKSBpbnN0ZWFkIG9m
IGJvdW5kaW5nQm94KCkgaW4gdGhpcyBmdW5jdGlvbiB3aGVuIDxyZGFyOi8vcHJvYmxlbS8xNjA2
MzcyMz4gaXMgZml4ZWQuCiAgICAgSW50UmVjdCBjdXJyZW50Qm94ID0gY3VycmVudFJhbmdlLT5i
b3VuZGluZ0JveCgpOwogICAgIEludFBvaW50IGVkZ2VDZW50ZXIgPSBjb21wdXRlRWRnZUNlbnRl
cihjdXJyZW50Qm94LCBoYW5kbGVQb3NpdGlvbik7Ci0gICAgZmxhZ3MgPSBXS0lzQmxvY2tTZWxl
Y3Rpb247CisgICAgZmxhZ3MgPSBJc0Jsb2NrU2VsZWN0aW9uOwogCiAgICAgZmxvYXQgbWF4RGlz
dGFuY2U7CiAKICAgICBzd2l0Y2ggKGhhbmRsZVBvc2l0aW9uKSB7Ci0gICAgY2FzZSBXS0hhbmRs
ZVRvcDoKLSAgICBjYXNlIFdLSGFuZGxlQm90dG9tOgorICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxl
UG9zaXRpb246OlRvcDoKKyAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpCb3R0b206
CiAgICAgICAgIG1heERpc3RhbmNlID0gY3VycmVudEJveC5oZWlnaHQoKTsKICAgICAgICAgYnJl
YWs7Ci0gICAgY2FzZSBXS0hhbmRsZVJpZ2h0OgotICAgIGNhc2UgV0tIYW5kbGVMZWZ0OgorICAg
IGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgorICAgIGNhc2UgU2VsZWN0aW9u
SGFuZGxlUG9zaXRpb246OkxlZnQ6CiAgICAgICAgIG1heERpc3RhbmNlID0gY3VycmVudEJveC53
aWR0aCgpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC05MTAsMTIgKzkxMCwxMiBAQCBQYXNz
UmVmUHRyPFJhbmdlPiBXZWJQYWdlOjpjb250cmFjdGVkUmFuCiAgICAgICAgIGlmIChiZXN0UmFu
Z2UpIHsKICAgICAgICAgICAgIGZsb2F0IHNocmFua0Rpc3RhbmNlOwogICAgICAgICAgICAgc3dp
dGNoIChoYW5kbGVQb3NpdGlvbikgewotICAgICAgICAgICAgY2FzZSBXS0hhbmRsZVRvcDoKLSAg
ICAgICAgICAgIGNhc2UgV0tIYW5kbGVCb3R0b206CisgICAgICAgICAgICBjYXNlIFNlbGVjdGlv
bkhhbmRsZVBvc2l0aW9uOjpUb3A6CisgICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBv
c2l0aW9uOjpCb3R0b206CiAgICAgICAgICAgICAgICAgc2hyYW5rRGlzdGFuY2UgPSBhYnMoY3Vy
cmVudEJveC5oZWlnaHQoKSAtIGJlc3RSZWN0LmhlaWdodCgpKTsKICAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgV0tIYW5kbGVSaWdodDoKLSAgICAgICAgICAgIGNhc2Ug
V0tIYW5kbGVMZWZ0OgorICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6
UmlnaHQ6CisgICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0Ogog
ICAgICAgICAgICAgICAgIHNocmFua0Rpc3RhbmNlID0gYWJzKGN1cnJlbnRCb3gud2lkdGgoKSAt
IGJlc3RSZWN0LndpZHRoKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtOTI3LDIyICs5MjcsMjIgQEAgUGFzc1JlZlB0cjxSYW5nZT4gV2ViUGFnZTo6Y29udHJh
Y3RlZFJhbgogCiAgICAgICAgIEludFBvaW50IHRlc3RQb2ludCA9IGVkZ2VDZW50ZXI7CiAgICAg
ICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICAgICAgY2FzZSBXS0hhbmRsZVRvcDoK
KyAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgogICAgICAgICAgICAg
dGVzdFBvaW50Lm1vdmUoMCwgZGlzdGFuY2UpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgV0tIYW5kbGVSaWdodDoKKyAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlv
bjo6UmlnaHQ6CiAgICAgICAgICAgICB0ZXN0UG9pbnQubW92ZSgtZGlzdGFuY2UsIDApOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0tIYW5kbGVCb3R0b206CisgICAgICAgIGNh
c2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKICAgICAgICAgICAgIHRlc3RQb2lu
dC5tb3ZlKDAsIC1kaXN0YW5jZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBX
S0hhbmRsZUxlZnQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6
CiAgICAgICAgICAgICB0ZXN0UG9pbnQubW92ZShkaXN0YW5jZSwgMCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogCiAgICAgICAgIFJlZlB0cjxSYW5nZT4gbmV3UmFuZ2UgPSByYW5n
ZUZvckJsb2NrQXRQb2ludCh0ZXN0UG9pbnQpOwotICAgICAgICBpZiAoaGFuZGxlUG9zaXRpb24g
PT0gV0tIYW5kbGVUb3AgfHwgaGFuZGxlUG9zaXRpb24gPT0gV0tIYW5kbGVMZWZ0KQorICAgICAg
ICBpZiAoaGFuZGxlUG9zaXRpb24gPT0gU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRvcCB8fCBo
YW5kbGVQb3NpdGlvbiA9PSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdCkKICAgICAgICAg
ICAgIG5ld1JhbmdlID0gUmFuZ2U6OmNyZWF0ZShuZXdSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+
ZG9jdW1lbnQoKSwgbmV3UmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSwgY3VycmVudFJhbmdlLT5lbmRQ
b3NpdGlvbigpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbmV3UmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKG5ld1JhbmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLCBjdXJyZW50UmFu
Z2UtPnN0YXJ0UG9zaXRpb24oKSwgbmV3UmFuZ2UtPmVuZFBvc2l0aW9uKCkpOwpAQCAtOTUwLDEy
ICs5NTAsMTIgQEAgUGFzc1JlZlB0cjxSYW5nZT4gV2ViUGFnZTo6Y29udHJhY3RlZFJhbgogICAg
ICAgICBJbnRSZWN0IGNvcHlSZWN0ID0gbmV3UmFuZ2UtPmJvdW5kaW5nQm94KCk7CiAgICAgICAg
IGJvb2wgaXNCZXR0ZXJDaG9pY2U7CiAgICAgICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsK
LSAgICAgICAgY2FzZSBXS0hhbmRsZVRvcDoKLSAgICAgICAgY2FzZSBXS0hhbmRsZUJvdHRvbToK
KyAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgorICAgICAgICBjYXNl
IFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpCb3R0b206CiAgICAgICAgICAgICBpc0JldHRlckNo
b2ljZSA9IChjb3B5UmVjdC5oZWlnaHQoKSA8IGN1cnJlbnRCb3guaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgV0tIYW5kbGVMZWZ0OgotICAgICAgICBjYXNlIFdL
SGFuZGxlUmlnaHQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkxlZnQ6
CisgICAgICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgogICAgICAgICAg
ICAgaXNCZXR0ZXJDaG9pY2UgPSAoY29weVJlY3Qud2lkdGgoKSA+IGJlc3RSZWN0LndpZHRoKCkp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTk2MywxMiArOTYzLDEyIEBAIFBh
c3NSZWZQdHI8UmFuZ2U+IFdlYlBhZ2U6OmNvbnRyYWN0ZWRSYW4KICAgICAgICAgaXNCZXR0ZXJD
aG9pY2UgPSBpc0JldHRlckNob2ljZSAmJiAhYXJlUmFuZ2VzRXF1YWwobmV3UmFuZ2UuZ2V0KCks
IGN1cnJlbnRSYW5nZSk7CiAgICAgICAgIGlmIChiZXN0UmFuZ2UgJiYgaXNCZXR0ZXJDaG9pY2Up
IHsKICAgICAgICAgICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGNh
c2UgV0tIYW5kbGVUb3A6Ci0gICAgICAgICAgICBjYXNlIFdLSGFuZGxlQm90dG9tOgorICAgICAg
ICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9wOgorICAgICAgICAgICAgY2Fz
ZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6Qm90dG9tOgogICAgICAgICAgICAgICAgIGlzQmV0
dGVyQ2hvaWNlID0gKGNvcHlSZWN0LmhlaWdodCgpID4gYmVzdFJlY3QuaGVpZ2h0KCkpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBXS0hhbmRsZUxlZnQ6Ci0gICAg
ICAgICAgICBjYXNlIFdLSGFuZGxlUmlnaHQ6CisgICAgICAgICAgICBjYXNlIFNlbGVjdGlvbkhh
bmRsZVBvc2l0aW9uOjpMZWZ0OgorICAgICAgICAgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3Np
dGlvbjo6UmlnaHQ6CiAgICAgICAgICAgICAgICAgaXNCZXR0ZXJDaG9pY2UgPSAoY29weVJlY3Qu
d2lkdGgoKSA+IGJlc3RSZWN0LndpZHRoKCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtOTkyLDIxICs5OTIsMjEgQEAgUGFzc1JlZlB0cjxSYW5nZT4gV2ViUGFn
ZTo6Y29udHJhY3RlZFJhbgogCiAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2Rl
LT5yZW5kZXJlcigpOwogICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmNoaWxkcmVu
SW5saW5lKCkgJiYgKHJlbmRlcmVyLT5pc1JlbmRlckJsb2NrKCkgJiYgIXRvUmVuZGVyQmxvY2so
cmVuZGVyZXIpLT5pbmxpbmVFbGVtZW50Q29udGludWF0aW9uKCkpICYmICFyZW5kZXJlci0+aXNU
YWJsZSgpKSB7Ci0gICAgICAgICAgICBmbGFncyA9IFdLTm9uZTsKKyAgICAgICAgICAgIGZsYWdz
ID0gTm9uZTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBiZXN0UmFuZ2U7CiB9CiAK
LXZvaWQgV2ViUGFnZTo6Y29tcHV0ZUV4cGFuZEFuZFNocmlua1RocmVzaG9sZHNGb3JIYW5kbGUo
Y29uc3QgSW50UG9pbnQmIHBvaW50LCBXS0hhbmRsZVBvc2l0aW9uIGhhbmRsZVBvc2l0aW9uLCBm
bG9hdCYgZ3Jvd1RocmVzaG9sZCwgZmxvYXQmIHNocmlua1RocmVzaG9sZCkKK3ZvaWQgV2ViUGFn
ZTo6Y29tcHV0ZUV4cGFuZEFuZFNocmlua1RocmVzaG9sZHNGb3JIYW5kbGUoY29uc3QgSW50UG9p
bnQmIHBvaW50LCBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbiBoYW5kbGVQb3NpdGlvbiwgZmxvYXQm
IGdyb3dUaHJlc2hvbGQsIGZsb2F0JiBzaHJpbmtUaHJlc2hvbGQpCiB7CiAgICAgRnJhbWUmIGZy
YW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKICAg
ICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRSYW5nZSA9IG1fY3VycmVudEJsb2NrU2VsZWN0aW9uID8g
bV9jdXJyZW50QmxvY2tTZWxlY3Rpb24uZ2V0KCkgOiBmcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwogICAgIEFTU0VSVChjdXJyZW50UmFuZ2UpOwogCiAg
ICAgUmVmUHRyPFJhbmdlPiBleHBhbmRlZFJhbmdlID0gZXhwYW5kZWRSYW5nZUZyb21IYW5kbGUo
Y3VycmVudFJhbmdlLmdldCgpLCBoYW5kbGVQb3NpdGlvbik7Ci0gICAgV0tTZWxlY3Rpb25GbGFn
cyBmbGFnczsKKyAgICBTZWxlY3Rpb25GbGFncyBmbGFnczsKICAgICBSZWZQdHI8UmFuZ2U+IGNv
bnRyYWN0ZWRSYW5nZSA9IGNvbnRyYWN0ZWRSYW5nZUZyb21IYW5kbGUoY3VycmVudFJhbmdlLmdl
dCgpLCBoYW5kbGVQb3NpdGlvbiwgZmxhZ3MpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCB1
c2UgYm91bmRpbmdSZWN0KCkgaW5zdGVhZCBvZiBib3VuZGluZ0JveCgpIGluIHRoaXMgZnVuY3Rp
b24gd2hlbiA8cmRhcjovL3Byb2JsZW0vMTYwNjM3MjM+IGlzIGZpeGVkLgpAQCAtMTAyMSw3ICsx
MDIxLDcgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhyZQogICAgIGZs
b2F0IG1pblRocmVzaG9sZDsKIAogICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICBj
YXNlIFdLSGFuZGxlVG9wOiB7CisgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6VG9w
OiB7CiAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Qm91bmRzLnkoKTsKICAgICAgICAgZXhwYW5k
ZWQgPSBleHBhbmRlZEJvdW5kcy55KCk7CiAgICAgICAgIGNvbnRyYWN0ZWQgPSBjb250cmFjdGVk
Qm91bmRzLnkoKTsKQEAgLTEwMjksNyArMTAyOSw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZUV4
cGFuZEFuZFNocmlua1RocmUKICAgICAgICAgbWluVGhyZXNob2xkID0gRkxUX01BWDsKICAgICAg
ICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgV0tIYW5kbGVSaWdodDogeworICAgIGNhc2UgU2Vs
ZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OiB7CiAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50
Qm91bmRzLm1heFgoKTsKICAgICAgICAgZXhwYW5kZWQgPSBleHBhbmRlZEJvdW5kcy5tYXhYKCk7
CiAgICAgICAgIGNvbnRyYWN0ZWQgPSBjb250cmFjdGVkQm91bmRzLm1heFgoKTsKQEAgLTEwMzcs
NyArMTAzNyw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcHV0ZUV4cGFuZEFuZFNocmlua1RocmUKICAg
ICAgICAgbWluVGhyZXNob2xkID0gRkxUX01JTjsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAg
IGNhc2UgV0tIYW5kbGVCb3R0b206IHsKKyAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9u
OjpCb3R0b206IHsKICAgICAgICAgY3VycmVudCA9IGN1cnJlbnRCb3VuZHMubWF4WSgpOwogICAg
ICAgICBleHBhbmRlZCA9IGV4cGFuZGVkQm91bmRzLm1heFkoKTsKICAgICAgICAgY29udHJhY3Rl
ZCA9IGNvbnRyYWN0ZWRCb3VuZHMubWF4WSgpOwpAQCAtMTA0NSw3ICsxMDQ1LDcgQEAgdm9pZCBX
ZWJQYWdlOjpjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhyZQogICAgICAgICBtaW5UaHJlc2hvbGQg
PSBGTFRfTUlOOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgY2FzZSBXS0hhbmRsZUxlZnQ6
IHsKKyAgICBjYXNlIFNlbGVjdGlvbkhhbmRsZVBvc2l0aW9uOjpMZWZ0OiB7CiAgICAgICAgIGN1
cnJlbnQgPSBjdXJyZW50Qm91bmRzLngoKTsKICAgICAgICAgZXhwYW5kZWQgPSBleHBhbmRlZEJv
dW5kcy54KCk7CiAgICAgICAgIGNvbnRyYWN0ZWQgPSBjb250cmFjdGVkQm91bmRzLngoKTsKQEAg
LTEwNjIsMjUgKzEwNjIsMjUgQEAgdm9pZCBXZWJQYWdlOjpjb21wdXRlRXhwYW5kQW5kU2hyaW5r
VGhyZQogICAgIGlmIChhcmVSYW5nZXNFcXVhbChleHBhbmRlZFJhbmdlLmdldCgpLCBjdXJyZW50
UmFuZ2UuZ2V0KCkpKQogICAgICAgICBncm93VGhyZXNob2xkID0gbWF4VGhyZXNob2xkOwogCi0g
ICAgaWYgKChmbGFncyAmIFdLSXNCbG9ja1NlbGVjdGlvbikgJiYgYXJlUmFuZ2VzRXF1YWwoY29u
dHJhY3RlZFJhbmdlLmdldCgpLCBjdXJyZW50UmFuZ2UuZ2V0KCkpKQorICAgIGlmIChmbGFncyAm
IElzQmxvY2tTZWxlY3Rpb24gJiYgYXJlUmFuZ2VzRXF1YWwoY29udHJhY3RlZFJhbmdlLmdldCgp
LCBjdXJyZW50UmFuZ2UuZ2V0KCkpKQogICAgICAgICBzaHJpbmtUaHJlc2hvbGQgPSBtaW5UaHJl
c2hvbGQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRFeHBhbmQoV0tIYW5kbGVQb3Np
dGlvbiBoYW5kbGVQb3NpdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UG9pbnQm
IHBvaW50KQorc3RhdGljIGlubGluZSBib29sIHNob3VsZEV4cGFuZChTZWxlY3Rpb25IYW5kbGVQ
b3NpdGlvbiBoYW5kbGVQb3NpdGlvbiwgY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3QgSW50UG9p
bnQmIHBvaW50KQogewogICAgIHN3aXRjaCAoaGFuZGxlUG9zaXRpb24pIHsKLSAgICBjYXNlIFdL
SGFuZGxlVG9wOgorICAgIGNhc2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlRvcDoKICAgICAg
ICAgcmV0dXJuIChwb2ludC55KCkgPCByZWN0LnkoKSk7Ci0gICAgY2FzZSBXS0hhbmRsZUxlZnQ6
CisgICAgY2FzZSBTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbjo6TGVmdDoKICAgICAgICAgcmV0dXJu
IChwb2ludC54KCkgPCByZWN0LngoKSk7Ci0gICAgY2FzZSBXS0hhbmRsZVJpZ2h0OgorICAgIGNh
c2UgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OlJpZ2h0OgogICAgICAgICByZXR1cm4gKHBvaW50
LngoKSA+IHJlY3QubWF4WCgpKTsKLSAgICBjYXNlIFdLSGFuZGxlQm90dG9tOgorICAgIGNhc2Ug
U2VsZWN0aW9uSGFuZGxlUG9zaXRpb246OkJvdHRvbToKICAgICAgICAgcmV0dXJuIChwb2ludC55
KCkgPiByZWN0Lm1heFkoKSk7CiAgICAgfQogfQogCi1QYXNzUmVmUHRyPFdlYkNvcmU6OlJhbmdl
PiBXZWJQYWdlOjpjaGFuZ2VCbG9ja1NlbGVjdGlvbihjb25zdCBJbnRQb2ludCYgcG9pbnQsIFdL
SGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24sIGZsb2F0JiBncm93VGhyZXNob2xkLCBmbG9h
dCYgc2hyaW5rVGhyZXNob2xkLCBXS1NlbGVjdGlvbkZsYWdzJiBmbGFncykKK1Bhc3NSZWZQdHI8
V2ViQ29yZTo6UmFuZ2U+IFdlYlBhZ2U6OmNoYW5nZUJsb2NrU2VsZWN0aW9uKGNvbnN0IEludFBv
aW50JiBwb2ludCwgU2VsZWN0aW9uSGFuZGxlUG9zaXRpb24gaGFuZGxlUG9zaXRpb24sIGZsb2F0
JiBncm93VGhyZXNob2xkLCBmbG9hdCYgc2hyaW5rVGhyZXNob2xkLCBTZWxlY3Rpb25GbGFncyYg
ZmxhZ3MpCiB7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5m
b2N1c2VkT3JNYWluRnJhbWUoKTsKICAgICBSZWZQdHI8UmFuZ2U+IGN1cnJlbnRSYW5nZSA9IG1f
Y3VycmVudEJsb2NrU2VsZWN0aW9uID8gbV9jdXJyZW50QmxvY2tTZWxlY3Rpb24uZ2V0KCkgOiBm
cmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6ZWRSYW5nZSgpOwpAQCAtMTEw
NSwyMiArMTEwNSwyMiBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRv
CiAKICAgICBmbG9hdCBncm93VGhyZXNob2xkID0gMDsKICAgICBmbG9hdCBzaHJpbmtUaHJlc2hv
bGQgPSAwOwotICAgIFdLU2VsZWN0aW9uRmxhZ3MgZmxhZ3MgPSBXS0lzQmxvY2tTZWxlY3Rpb247
CisgICAgU2VsZWN0aW9uRmxhZ3MgZmxhZ3MgPSBJc0Jsb2NrU2VsZWN0aW9uOwogCi0gICAgc3dp
dGNoIChzdGF0aWNfY2FzdDxXS1NlbGVjdGlvblRvdWNoPih0b3VjaCkpIHsKLSAgICBjYXNlIFdL
U2VsZWN0aW9uVG91Y2hTdGFydGVkOgotICAgICAgICBjb21wdXRlRXhwYW5kQW5kU2hyaW5rVGhy
ZXNob2xkc0ZvckhhbmRsZShhZGp1c3RlZFBvaW50LCBzdGF0aWNfY2FzdDxXS0hhbmRsZVBvc2l0
aW9uPihoYW5kbGVQb3NpdGlvbiksIGdyb3dUaHJlc2hvbGQsIHNocmlua1RocmVzaG9sZCk7Cisg
ICAgc3dpdGNoIChzdGF0aWNfY2FzdDxTZWxlY3Rpb25Ub3VjaD4odG91Y2gpKSB7CisgICAgY2Fz
ZSBTZWxlY3Rpb25Ub3VjaDo6U3RhcnRlZDoKKyAgICAgICAgY29tcHV0ZUV4cGFuZEFuZFNocmlu
a1RocmVzaG9sZHNGb3JIYW5kbGUoYWRqdXN0ZWRQb2ludCwgc3RhdGljX2Nhc3Q8U2VsZWN0aW9u
SGFuZGxlUG9zaXRpb24+KGhhbmRsZVBvc2l0aW9uKSwgZ3Jvd1RocmVzaG9sZCwgc2hyaW5rVGhy
ZXNob2xkKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXS1NlbGVjdGlvblRvdWNoRW5kZWQ6
CisgICAgY2FzZSBTZWxlY3Rpb25Ub3VjaDo6RW5kZWQ6CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgV0tTZWxlY3Rpb25Ub3VjaE1vdmVkOgotICAgICAgICBjaGFuZ2VCbG9ja1NlbGVjdGlvbihh
ZGp1c3RlZFBvaW50LCBzdGF0aWNfY2FzdDxXS0hhbmRsZVBvc2l0aW9uPihoYW5kbGVQb3NpdGlv
biksIGdyb3dUaHJlc2hvbGQsIHNocmlua1RocmVzaG9sZCwgZmxhZ3MpOworICAgIGNhc2UgU2Vs
ZWN0aW9uVG91Y2g6Ok1vdmVkOgorICAgICAgICBjaGFuZ2VCbG9ja1NlbGVjdGlvbihhZGp1c3Rl
ZFBvaW50LCBzdGF0aWNfY2FzdDxTZWxlY3Rpb25IYW5kbGVQb3NpdGlvbj4oaGFuZGxlUG9zaXRp
b24pLCBncm93VGhyZXNob2xkLCBzaHJpbmtUaHJlc2hvbGQsIGZsYWdzKTsKICAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2godG91
Y2gsIGZsYWdzLCBncm93VGhyZXNob2xkLCBzaHJpbmtUaHJlc2hvbGQpKTsKKyAgICBzZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHRv
dWNoLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4oZmxhZ3MpLCBncm93VGhyZXNob2xkLCBzaHJpbmtU
aHJlc2hvbGQpKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpjbGVhclNlbGVjdGlvbigpCkBAIC0xMTQx
LDEyICsxMTQxLDEyIEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNoZXMK
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlOwogICAgIFZpc2libGVQb3NpdGlvbiByZXN1bHQ7CiAg
ICAgCi0gICAgc3dpdGNoIChzdGF0aWNfY2FzdDxXS1NlbGVjdGlvblRvdWNoPih0b3VjaGVzKSkg
ewotICAgICAgICBjYXNlIFdLU2VsZWN0aW9uVG91Y2hTdGFydGVkOgotICAgICAgICBjYXNlIFdL
U2VsZWN0aW9uVG91Y2hFbmRlZE5vdE1vdmluZzoKKyAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PFNl
bGVjdGlvblRvdWNoPih0b3VjaGVzKSkgeworICAgICAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpT
dGFydGVkOgorICAgICAgICBjYXNlIFNlbGVjdGlvblRvdWNoOjpFbmRlZE5vdE1vdmluZzoKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAKLSAgICAgICAgY2FzZSBXS1NlbGVjdGlvblRvdWNo
RW5kZWQ6CisgICAgICAgIGNhc2UgU2VsZWN0aW9uVG91Y2g6OkVuZGVkOgogICAgICAgICAgICAg
aWYgKGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzQ29udGVudEVkaXRhYmxlKCkpIHsK
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBjbG9zZXN0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24o
cG9zaXRpb24pOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNOb3ROdWxsKCkpCkBAIC0x
MTU1LDE1ICsxMTU1LDE1IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlU2VsZWN0aW9uV2l0aFRvdWNo
ZXMKICAgICAgICAgICAgICAgICByYW5nZSA9IHJhbmdlRm9yUG9zaXRpb24oJmZyYW1lLCBwb3Np
dGlvbiwgYmFzZUlzU3RhcnQpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBX
S1NlbGVjdGlvblRvdWNoRW5kZWRNb3ZpbmdGb3J3YXJkOgorICAgICAgICBjYXNlIFNlbGVjdGlv
blRvdWNoOjpFbmRlZE1vdmluZ0ZvcndhcmQ6CiAgICAgICAgICAgICByYW5nZSA9IHJhbmdlQXRX
b3JkQm91bmRhcnlGb3JQb3NpdGlvbigmZnJhbWUsIHBvc2l0aW9uLCBiYXNlSXNTdGFydCwgRGly
ZWN0aW9uRm9yd2FyZCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIAotICAgICAg
ICBjYXNlIFdLU2VsZWN0aW9uVG91Y2hFbmRlZE1vdmluZ0JhY2t3YXJkOgorICAgICAgICBjYXNl
IFNlbGVjdGlvblRvdWNoOjpFbmRlZE1vdmluZ0JhY2t3YXJkOgogICAgICAgICAgICAgcmFuZ2Ug
PSByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oJmZyYW1lLCBwb3NpdGlvbiwgYmFzZUlz
U3RhcnQsIERpcmVjdGlvbkJhY2t3YXJkKTsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAg
IGNhc2UgV0tTZWxlY3Rpb25Ub3VjaE1vdmVkOgorICAgICAgICBjYXNlIFNlbGVjdGlvblRvdWNo
OjpNb3ZlZDoKICAgICAgICAgICAgIHJhbmdlID0gcmFuZ2VGb3JQb3NpdGlvbigmZnJhbWUsIHBv
c2l0aW9uLCBiYXNlSXNTdGFydCk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xNTI5
LDcgKzE1MjksNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rpb25PbkVsZW1lbnQodWluCiAg
ICAgaWYgKCFlbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
c3RhdGljX2Nhc3Q8V0tTaGVldEFjdGlvbnM+KGFjdGlvbikgPT0gV0tTaGVldEFjdGlvbkNvcHkp
IHsKKyAgICBpZiAoc3RhdGljX2Nhc3Q8U2hlZXRBY3Rpb24+KGFjdGlvbikgPT0gU2hlZXRBY3Rp
b246OkNvcHkpIHsKICAgICAgICAgaWYgKGVsZW1lbnQtPnJlbmRlcmVyKCktPmlzUmVuZGVySW1h
Z2UoKSkgewogICAgICAgICAgICAgRWxlbWVudCogbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlu
a0VsZW1lbnQoZWxlbWVudCk7CiAgICAgICAgIApAQCAtMTU0MCw3ICsxNTQwLDcgQEAgdm9pZCBX
ZWJQYWdlOjpwZXJmb3JtQWN0aW9uT25FbGVtZW50KHVpbgogICAgICAgICB9IGVsc2UgaWYgKGVs
ZW1lbnQtPmlzTGluaygpKSB7CiAgICAgICAgICAgICBtX2ludGVyYWN0aW9uTm9kZS0+ZG9jdW1l
bnQoKS5mcmFtZSgpLT5lZGl0b3IoKS5jb3B5VVJMKGVsZW1lbnQtPmRvY3VtZW50KCkuY29tcGxl
dGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGVsZW1lbnQtPmdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyKSkpLCBlbGVtZW50LT50ZXh0Q29udGVudCgpKTsKICAg
ICAgICAgfQotICAgIH0gZWxzZSBpZiAoc3RhdGljX2Nhc3Q8V0tTZWxlY3Rpb25Ub3VjaD4oYWN0
aW9uKSA9PSBXS1NoZWV0QWN0aW9uU2F2ZUltYWdlKSB7CisgICAgfSBlbHNlIGlmIChzdGF0aWNf
Y2FzdDxTaGVldEFjdGlvbj4oYWN0aW9uKSA9PSBTaGVldEFjdGlvbjo6U2F2ZUltYWdlKSB7CiAg
ICAgICAgIGlmICghZWxlbWVudC0+cmVuZGVyZXIoKS0+aXNSZW5kZXJJbWFnZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSB0b1JlbmRl
ckltYWdlKGVsZW1lbnQtPnJlbmRlcmVyKCkpLT5jYWNoZWRJbWFnZSgpOwo=
</data>
<flag name="review"
          id="253031"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>