<?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>128274</bug_id>
          
          <creation_ts>2014-02-05 14:12:22 -0800</creation_ts>
          <short_desc>Get rid of WebUIClient</short_desc>
          <delta_ts>2014-02-05 15:35:32 -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>New Bugs</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 name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>977080</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-05 14:12:22 -0800</bug_when>
    <thetext>Get rid of WebUIClient</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977081</commentid>
    <comment_count>1</comment_count>
      <attachid>223265</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-05 14:14:57 -0800</bug_when>
    <thetext>Created attachment 223265
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977084</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-05 14:16:57 -0800</bug_when>
    <thetext>Attachment 223265 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1235:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1247:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1331:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Source/WebKit2/UIProcess/API/C/WKPage.cpp:1436:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 4 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977107</commentid>
    <comment_count>3</comment_count>
      <attachid>223265</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-02-05 15:33:36 -0800</bug_when>
    <thetext>Comment on attachment 223265
Patch

Code moving extravaganza!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977108</commentid>
    <comment_count>4</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-02-05 15:35:32 -0800</bug_when>
    <thetext>Committed r163480: &lt;http://trac.webkit.org/changeset/163480&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223265</attachid>
            <date>2014-02-05 14:14:57 -0800</date>
            <delta_ts>2014-02-05 15:33:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128274-20140205141455.patch</filename>
            <type>text/plain</type>
            <size>83247</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzNDY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMjNiYzI3YzI2ZjA1MTM2
M2JhY2E5NzU3NzVmYmYxNjhhZDIyZjAxMS4uMTUzM2YxNDM5NDJkN2U5NTBkN2QzZmFkZjJiZWJh
YjIwNzgwOGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExMSBAQAorMjAxNC0wMi0wNSAgQW5k
ZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCisgICAgICAgIEdldCByaWQgb2Yg
V2ViVUlDbGllbnQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyODI3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6
VUlDbGllbnQ6On5VSUNsaWVudCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpjcmVhdGVOZXdQ
YWdlKToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnNob3dQYWdlKToKKyAgICAgICAgKEFQSTo6
VUlDbGllbnQ6OmNsb3NlKToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnRha2VGb2N1cyk6Cisg
ICAgICAgIChBUEk6OlVJQ2xpZW50Ojpmb2N1cyk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50Ojp1
bmZvY3VzKToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1bkphdmFTY3JpcHRBbGVydCk6Cisg
ICAgICAgIChBUEk6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6CisgICAgICAgIChB
UEk6OlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KToKKyAgICAgICAgKEFQSTo6VUlDbGll
bnQ6OnNldFN0YXR1c1RleHQpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6bW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6dW5hdmFpbGFibGVQbHVnaW5C
dXR0b25DbGlja2VkKToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmltcGxlbWVudHNEaWROb3RI
YW5kbGVLZXlFdmVudCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkaWROb3RIYW5kbGVLZXlF
dmVudCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjppbXBsZW1lbnRzRGlkTm90SGFuZGxlV2hl
ZWxFdmVudCk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkaWROb3RIYW5kbGVXaGVlbEV2ZW50
KToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnRvb2xiYXJzQXJlVmlzaWJsZSk6CisgICAgICAg
IChBUEk6OlVJQ2xpZW50OjpzZXRUb29sYmFyc0FyZVZpc2libGUpOgorICAgICAgICAoQVBJOjpV
SUNsaWVudDo6bWVudUJhcklzVmlzaWJsZSk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpzZXRN
ZW51QmFySXNWaXNpYmxlKToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnN0YXR1c0JhcklzVmlz
aWJsZSk6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpzZXRTdGF0dXNCYXJJc1Zpc2libGUpOgor
ICAgICAgICAoQVBJOjpVSUNsaWVudDo6aXNSZXNpemFibGUpOgorICAgICAgICAoQVBJOjpVSUNs
aWVudDo6c2V0SXNSZXNpemFibGUpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6c2V0V2luZG93
RnJhbWUpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6d2luZG93RnJhbWUpOgorICAgICAgICAo
QVBJOjpVSUNsaWVudDo6Y2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAg
KEFQSTo6VUlDbGllbnQ6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCk6CisgICAgICAgIChB
UEk6OlVJQ2xpZW50OjpkaWREcmF3KToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnBhZ2VEaWRT
Y3JvbGwpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToK
KyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbCk6CisgICAgICAgIChBUEk6OlVJ
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KToKKyAg
ICAgICAgKEFQSTo6VUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KToKKyAgICAgICAgKEFQSTo6VUlDbGllbnQ6OmhlYWRlckhlaWdodCk6CisgICAg
ICAgIChBUEk6OlVJQ2xpZW50Ojpmb290ZXJIZWlnaHQpOgorICAgICAgICAoQVBJOjpVSUNsaWVu
dDo6ZHJhd0hlYWRlcik6CisgICAgICAgIChBUEk6OlVJQ2xpZW50OjpkcmF3Rm9vdGVyKToKKyAg
ICAgICAgKEFQSTo6VUlDbGllbnQ6OnByaW50RnJhbWUpOgorICAgICAgICAoQVBJOjpVSUNsaWVu
dDo6Y2FuUnVuTW9kYWwpOgorICAgICAgICAoQVBJOjpVSUNsaWVudDo6cnVuTW9kYWwpOgorICAg
ICAgICAoQVBJOjpVSUNsaWVudDo6c2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcik6Cisg
ICAgICAgIChBUEk6OlVJQ2xpZW50OjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KToKKyAgICAg
ICAgKEFQSTo6VUlDbGllbnQ6OnNob3dDb2xvclBpY2tlcik6CisgICAgICAgIChBUEk6OlVJQ2xp
ZW50OjpoaWRlQ29sb3JQaWNrZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2Uu
Y3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZVVJQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpXZWJQ
YWdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVJQ2xpZW50KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjbG9zZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6c2hvd1BhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNsb3NlUGFn
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0Q29uZmlybSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdFByb21wdCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0U3RhdHVzVGV4dCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0VG9vbGJhcnNBcmVWaXNpYmxlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRUb29sYmFyc0FyZVZpc2libGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE1lbnVCYXJJc1Zpc2libGUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmdldE1lbnVCYXJJc1Zpc2libGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFN0YXR1c0JhcklzVmlzaWJsZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6Z2V0U3RhdHVzQmFySXNWaXNpYmxlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpzZXRJc1Jlc2l6YWJsZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6Z2V0SXNSZXNpemFibGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldFdpbmRvd0ZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpnZXRX
aW5kb3dGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuQmVmb3JlVW5s
b2FkQ29uZmlybVBhbmVsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdlRGlk
U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5PcGVuUGFuZWwpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnByaW50RnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRpZERyYXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnNldEZvY3VzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp0YWtlRm9jdXMp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25Gb3JGcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVxdWVzdE5vdGlmaWNhdGlvblBl
cm1pc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmhlYWRlckhlaWdodCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zm9vdGVySGVpZ2h0KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpkcmF3SGVhZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkcmF3Rm9vdGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpy
dW5Nb2RhbCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2V0Q2FuUnVuTW9kYWwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9h
ZHNGb2xkZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9XZWJVSUNsaWVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViSW5z
cGVjdG9yUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybUNyZWF0ZUluc3BlY3RvclBhZ2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
UGFnZVByb3h5TWFjLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OndpbmRvd0Fu
ZFZpZXdGcmFtZXNDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2o6CisKIDIwMTQtMDItMDUgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dLMl0gW2lPU10gTm8gdmlkZW8gb24gZW1iZWRkZWQgWW91VHViZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElVSUNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg4MmIx
Yzc5ZThlNjNmMzcwYzQ3MjhiYWNkZTJlMzEwOTY5MzgzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVVJQ2xpZW50LmgKQEAgLTAsMCArMSwxMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEFQSVVJQ2xpZW50X2gKKyNkZWZpbmUgQVBJVUlDbGll
bnRfaAorCisjaW5jbHVkZSAiV0tQYWdlLmgiCisjaW5jbHVkZSAiV2ViRXZlbnQuaCIKKyNpbmNs
dWRlICJXZWJIaXRUZXN0UmVzdWx0LmgiCisjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFz
cyBSZXNvdXJjZVJlcXVlc3Q7CitzdHJ1Y3QgV2luZG93RmVhdHVyZXM7Cit9CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OworY2xh
c3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKK2NsYXNzIE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ7Citj
bGFzcyBOYXRpdmVXZWJXaGVlbEV2ZW50OworY2xhc3MgTm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q7CitjbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHk7CitjbGFzcyBX
ZWJGcmFtZVByb3h5OworY2xhc3MgV2ViT3BlblBhbmVsUGFyYW1ldGVyczsKK2NsYXNzIFdlYk9w
ZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHk7CitjbGFzcyBXZWJQYWdlUHJveHk7CitjbGFzcyBX
ZWJTZWN1cml0eU9yaWdpbjsKK30KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIERhdGE7Citj
bGFzcyBPYmplY3Q7CisKK2NsYXNzIFVJQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5V
SUNsaWVudCgpIHsgfQorCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdlYktpdDo6V2ViUGFnZVBy
b3h5PiBjcmVhdGVOZXdQYWdlKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2ViQ29yZTo6V2luZG93RmVhdHVyZXMmLCBXZWJLaXQ6
OldlYkV2ZW50OjpNb2RpZmllcnMsIFdlYktpdDo6V2ViTW91c2VFdmVudDo6QnV0dG9uKSB7IHJl
dHVybiBudWxscHRyOyB9CisgICAgdmlydHVhbCB2b2lkIHNob3dQYWdlKFdlYktpdDo6V2ViUGFn
ZVByb3h5KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGNsb3NlKFdlYktpdDo6V2ViUGFnZVByb3h5
KikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgdGFrZUZvY3VzKFdlYktpdDo6V2ViUGFnZVByb3h5
KiwgV0tGb2N1c0RpcmVjdGlvbikgeyB9CisgICAgdmlydHVhbCB2b2lkIGZvY3VzKFdlYktpdDo6
V2ViUGFnZVByb3h5KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVuZm9jdXMoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBydW5KYXZhU2NyaXB0QWxlcnQoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSopIHsgfQorICAgIHZpcnR1YWwgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIHJ1bkphdmFTY3Jp
cHRQcm9tcHQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYsIGNvbnN0
IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KikgeyByZXR1cm4gV1RGOjpTdHJp
bmcoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFN0YXR1c1RleHQoV2ViS2l0OjpXZWJQYWdl
UHJveHkqLCBjb25zdCBXVEY6OlN0cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBtb3VzZURp
ZE1vdmVPdmVyRWxlbWVudChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdlYktpdDo6V2Vi
SGl0VGVzdFJlc3VsdDo6RGF0YSYsIFdlYktpdDo6V2ViRXZlbnQ6Ok1vZGlmaWVycywgQVBJOjpP
YmplY3QqKSB7IH0KKyNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKKyAgICB2aXJ0dWFs
IHZvaWQgdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKFdlYktpdDo6V2ViUGFnZVByb3h5
KiwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwgV2ViS2l0OjpJbW11dGFibGVEaWN0aW9u
YXJ5KikgeyB9CisjZW5kaWYgLy8gRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCisKKyAgICB2
aXJ0dWFsIGJvb2wgaW1wbGVtZW50c0RpZE5vdEhhbmRsZUtleUV2ZW50KCkgY29uc3QgeyByZXR1
cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYktleWJvYXJkRXZlbnQmKSB7
IH0KKworICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1lbnRzRGlkTm90SGFuZGxlV2hlZWxFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZVdo
ZWVsRXZlbnQoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJLaXQ6Ok5hdGl2ZVdlYldo
ZWVsRXZlbnQmKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCB0b29sYmFyc0FyZVZpc2libGUoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHNl
dFRvb2xiYXJzQXJlVmlzaWJsZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGJvb2wpIHsgfQorICAg
IHZpcnR1YWwgYm9vbCBtZW51QmFySXNWaXNpYmxlKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyBy
ZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRNZW51QmFySXNWaXNpYmxlKFdlYktp
dDo6V2ViUGFnZVByb3h5KiwgYm9vbCkgeyB9CisgICAgdmlydHVhbCBib29sIHN0YXR1c0Jhcklz
VmlzaWJsZShXZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U3RhdHVzQmFySXNWaXNpYmxlKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgYm9v
bCkgeyB9CisgICAgdmlydHVhbCBib29sIGlzUmVzaXphYmxlKFdlYktpdDo6V2ViUGFnZVByb3h5
KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRJc1Jlc2l6YWJsZShXZWJL
aXQ6OldlYlBhZ2VQcm94eSosIGJvb2wpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIHNldFdpbmRv
d0ZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jikg
eyB9CisgICAgdmlydHVhbCBXZWJDb3JlOjpGbG9hdFJlY3Qgd2luZG93RnJhbWUoV2ViS2l0OjpX
ZWJQYWdlUHJveHkqKSB7IHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoKTsgfQorCisgICAgdmly
dHVhbCBib29sIGNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIHJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFt
ZVByb3h5KikgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZERyYXcoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFNjcm9sbChX
ZWJLaXQ6OldlYlBhZ2VQcm94eSopIHsgfQorCisgICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxv
bmcgZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiwgV2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiosIGNvbnN0IFdURjo6U3Ry
aW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFdURjo6U3RyaW5nJiBkYXRhYmFzZURpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25nIGxvbmcgY3Vy
cmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFiYXNlVXNhZ2Us
IHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlKSB7IHJldHVybiBjdXJyZW50UXVvdGE7
IH0KKworICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OldlYk9wZW5QYW5lbFBhcmFtZXRlcnMq
LCBXZWJLaXQ6OldlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKSB7IHJldHVybiBmYWxz
ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Np
b25SZXF1ZXN0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5Kiwg
V2ViS2l0OjpXZWJTZWN1cml0eU9yaWdpbiosIFdlYktpdDo6R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGVjaWRl
UG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBXZWJLaXQ6OldlYlNlY3VyaXR5T3JpZ2luKiwgV2ViS2l0OjpOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdCopIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAvLyBQcmludGluZy4KKyAg
ICB2aXJ0dWFsIGZsb2F0IGhlYWRlckhlaWdodChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktp
dDo6V2ViRnJhbWVQcm94eSopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IGZvb3Rl
ckhlaWdodChXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSopIHsg
cmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0hlYWRlcihXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkcmF3Rm9vdGVyKFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
V2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHByaW50RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkqKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBjYW5SdW5Nb2RhbCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsKFdlYktpdDo6
V2ViUGFnZVByb3h5KikgeyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgV1RGOjpTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBXVEY6
OlN0cmluZyYgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIEFQSTo6RGF0YSopIHsgfQorCisgICAgdmly
dHVhbCBib29sIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoV2ViS2l0OjpXZWJQYWdlUHJveHkq
KSB7IHJldHVybiBmYWxzZTsgfQorCisjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09MT1IpCisgICAg
dmlydHVhbCBib29sIHNob3dDb2xvclBpY2tlcihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0
IFdURjo6U3RyaW5nJiwgV2ViS2l0OjpXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkq
KSB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoaWRlQ29sb3JQaWNrZXIoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqKSB7IHJldHVybiBmYWxzZTsgfQorI2VuZGlmCit9OworCit9IC8v
IG5hbWVzcGFjZSBBUEkKKworI2VuZGlmIC8vIEFQSVVJQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKaW5kZXggMzg5MDRiODk5YzQ2NTQ4MjhhNTdiMjQx
MmQxMTI4Njc3YTA4ODYzNi4uYTk2MDgyZjZlMjZjZmRmZjU0ZDcxM2JjNjRhNzdlNzQ2ODg0M2I1
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAKQEAgLTMxLDcg
KzMxLDEwIEBACiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIkFQSUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkFQSVBvbGljeUNsaWVudC5oIgorI2luY2x1ZGUgIkFQSVVJQ2xpZW50
LmgiCiAjaW5jbHVkZSAiSW1tdXRhYmxlRGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIk5hdGl2ZVdl
YktleWJvYXJkRXZlbnQuaCIKKyNpbmNsdWRlICJOYXRpdmVXZWJXaGVlbEV2ZW50LmgiCiAjaW5j
bHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlv
bi5oIgogI2luY2x1ZGUgIlByaW50SW5mby5oIgpAQCAtNDMsNiArNDYsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvUGFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2luZG93RmVhdHVyZXMuaD4KIAog
I2lmZGVmIF9fQkxPQ0tTX18KICNpbmNsdWRlIDxCbG9jay5oPgpAQCAtNjMsNiArNjcsMTEgQEAg
dGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZUxvYWRlckNsaWVudEJhc2U+IHsK
IHRlbXBsYXRlPD4gc3RydWN0IENsaWVudFRyYWl0czxXS1BhZ2VQb2xpY3lDbGllbnRCYXNlPiB7
CiAgICAgdHlwZWRlZiBzdGQ6OnR1cGxlPFdLUGFnZVBvbGljeUNsaWVudFYwLCBXS1BhZ2VQb2xp
Y3lDbGllbnRWMSwgV0tQYWdlUG9saWN5Q2xpZW50SW50ZXJuYWw+IFZlcnNpb25zOwogfTsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVVJQ2xpZW50QmFzZT4geworICAg
IHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1BhZ2VVSUNsaWVudFYxLCBX
S1BhZ2VVSUNsaWVudFYyPiBWZXJzaW9uczsKK307CisKIH0KIAogV0tUeXBlSUQgV0tQYWdlR2V0
VHlwZUlEKCkKQEAgLTEwNTMsNyArMTA2Miw0MjcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5
Q2xpZW50KFdLUGFnZVJlZiBwYWdlUmVmLCBjb25zdCBXS1BhZ2VQb2xpY3lDbGllbnRCYXNlKgog
CiB2b2lkIFdLUGFnZVNldFBhZ2VVSUNsaWVudChXS1BhZ2VSZWYgcGFnZVJlZiwgY29uc3QgV0tQ
YWdlVUlDbGllbnRCYXNlKiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwocGFnZVJlZiktPmluaXRp
YWxpemVVSUNsaWVudCh3a0NsaWVudCk7CisgICAgY2xhc3MgVUlDbGllbnQgOiBwdWJsaWMgQVBJ
OjpDbGllbnQ8V0tQYWdlVUlDbGllbnRCYXNlPiwgcHVibGljIEFQSTo6VUlDbGllbnQgeworICAg
IHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgVUlDbGllbnQoY29uc3QgV0tQYWdlVUlDbGllbnRC
YXNlKiBjbGllbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRpYWxpemUoY2xpZW50KTsK
KyAgICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFdl
YlBhZ2VQcm94eT4gY3JlYXRlTmV3UGFnZShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXaW5kb3dGZWF0dXJlcyYgd2luZG93
RmVhdHVyZXMsIFdlYkV2ZW50OjpNb2RpZmllcnMgbW9kaWZpZXJzLCBXZWJNb3VzZUV2ZW50OjpC
dXR0b24gYnV0dG9uKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xp
ZW50LmJhc2UudmVyc2lvbiAmJiAhbV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9y
VXNlV2l0aFYwKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworCisgICAgICAgICAgICBpZiAo
bV9jbGllbnQuYmFzZS52ZXJzaW9uID4gMCAmJiAhbV9jbGllbnQuY3JlYXRlTmV3UGFnZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgSW1tdXRhYmxlRGljdGlvbmFy
eTo6TWFwVHlwZSBtYXA7CisgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMueFNldCkKKyAg
ICAgICAgICAgICAgICBtYXAuc2V0KCJ4IiwgQVBJOjpEb3VibGU6OmNyZWF0ZSh3aW5kb3dGZWF0
dXJlcy54KSk7CisgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMueVNldCkKKyAgICAgICAg
ICAgICAgICBtYXAuc2V0KCJ5IiwgQVBJOjpEb3VibGU6OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy55
KSk7CisgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMud2lkdGhTZXQpCisgICAgICAgICAg
ICAgICAgbWFwLnNldCgid2lkdGgiLCBBUEk6OkRvdWJsZTo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVz
LndpZHRoKSk7CisgICAgICAgICAgICBpZiAod2luZG93RmVhdHVyZXMuaGVpZ2h0U2V0KQorICAg
ICAgICAgICAgICAgIG1hcC5zZXQoImhlaWdodCIsIEFQSTo6RG91YmxlOjpjcmVhdGUod2luZG93
RmVhdHVyZXMuaGVpZ2h0KSk7CisgICAgICAgICAgICBtYXAuc2V0KCJtZW51QmFyVmlzaWJsZSIs
IEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1lbnVCYXJWaXNpYmxlKSk7Cisg
ICAgICAgICAgICBtYXAuc2V0KCJzdGF0dXNCYXJWaXNpYmxlIiwgQVBJOjpCb29sZWFuOjpjcmVh
dGUod2luZG93RmVhdHVyZXMuc3RhdHVzQmFyVmlzaWJsZSkpOworICAgICAgICAgICAgbWFwLnNl
dCgidG9vbEJhclZpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy50
b29sQmFyVmlzaWJsZSkpOworICAgICAgICAgICAgbWFwLnNldCgibG9jYXRpb25CYXJWaXNpYmxl
IiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxl
KSk7CisgICAgICAgICAgICBtYXAuc2V0KCJzY3JvbGxiYXJzVmlzaWJsZSIsIEFQSTo6Qm9vbGVh
bjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnNjcm9sbGJhcnNWaXNpYmxlKSk7CisgICAgICAgICAg
ICBtYXAuc2V0KCJyZXNpemFibGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJl
cy5yZXNpemFibGUpKTsKKyAgICAgICAgICAgIG1hcC5zZXQoImZ1bGxzY3JlZW4iLCBBUEk6OkJv
b2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5mdWxsc2NyZWVuKSk7CisgICAgICAgICAgICBt
YXAuc2V0KCJkaWFsb2ciLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5kaWFs
b2cpKTsKKyAgICAgICAgICAgIFJlZlB0cjxJbW11dGFibGVEaWN0aW9uYXJ5PiBmZWF0dXJlc01h
cCA9IEltbXV0YWJsZURpY3Rpb25hcnk6OmNyZWF0ZShzdGQ6Om1vdmUobWFwKSk7CisKKyAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuYmFzZS52ZXJzaW9uKQorICAgICAgICAgICAgICAgIHJldHVy
biBhZG9wdFJlZih0b0ltcGwobV9jbGllbnQuY3JlYXRlTmV3UGFnZV9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShmZWF0dXJlc01hcC5nZXQoKSksIHRvQVBJKG1vZGlm
aWVycyksIHRvQVBJKGJ1dHRvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKKworICAg
ICAgICAgICAgUmVmUHRyPEFQSTo6VVJMUmVxdWVzdD4gcmVxdWVzdCA9IEFQSTo6VVJMUmVxdWVz
dDo6Y3JlYXRlKHJlc291cmNlUmVxdWVzdCk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYo
dG9JbXBsKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2UodG9BUEkocGFnZSksIHRvQVBJKHJlcXVlc3Qu
Z2V0KCkpLCB0b0FQSShmZWF0dXJlc01hcC5nZXQoKSksIHRvQVBJKG1vZGlmaWVycyksIHRvQVBJ
KGJ1dHRvbiksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHZpcnR1YWwgdm9pZCBzaG93UGFnZShXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2hvd1BhZ2UpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5zaG93UGFnZSh0b0FQSShwYWdl
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1
YWwgdm9pZCBjbG9zZShXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuY2xvc2UpCisgICAgICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgICAgICBtX2NsaWVudC5jbG9zZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB0YWtlRm9jdXMo
V2ViUGFnZVByb3h5KiBwYWdlLCBXS0ZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikgb3ZlcnJpZGUK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC50YWtlRm9jdXMpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC50YWtlRm9jdXModG9BUEko
cGFnZSksIGRpcmVjdGlvbiwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRl
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZm9jdXMpCisgICAgICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5mb2N1cyh0b0FQSShwYWdlKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwg
dm9pZCB1bmZvY3VzKFdlYlBhZ2VQcm94eSogcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC51bmZvY3VzKQorICAgICAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICAgICAgbV9jbGllbnQudW5mb2N1cyh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBydW5KYXZh
U2NyaXB0QWxlcnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdl
YkZyYW1lUHJveHkqIGZyYW1lKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCh0b0FQSShwYWdlKSwgdG9B
UEkobWVzc2FnZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgcnVuSmF2YVNjcmlwdENvbmZp
cm0oV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIFdlYkZyYW1lUHJv
eHkqIGZyYW1lKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LnJ1bkphdmFTY3JpcHRDb25maXJtKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LnJ1bkphdmFTY3JpcHRDb25maXJtKHRvQVBJKHBh
Z2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgU3RyaW5nIHJ1bkphdmFT
Y3JpcHRQcm9tcHQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNv
bnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkgb3ZlcnJpZGUK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0
KQorICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgICAgICAgICAgQVBJOjpT
dHJpbmcqIHN0cmluZyA9IHRvSW1wbChtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KHRvQVBJ
KHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGRlZmF1bHRWYWx1ZS5pbXBsKCkp
LCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpOworICAgICAgICAgICAg
aWYgKCFzdHJpbmcpCisgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOworCisgICAgICAg
ICAgICBTdHJpbmcgcmVzdWx0ID0gc3RyaW5nLT5zdHJpbmcoKTsKKyAgICAgICAgICAgIHN0cmlu
Zy0+ZGVyZWYoKTsKKworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNUZXh0KFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiB0ZXh0KSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LnNldFN0YXR1c1RleHQpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
ICAgICBtX2NsaWVudC5zZXRTdGF0dXNUZXh0KHRvQVBJKHBhZ2UpLCB0b0FQSSh0ZXh0LmltcGwo
KSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25z
dCBXZWJIaXRUZXN0UmVzdWx0OjpEYXRhJiBkYXRhLCBXZWJFdmVudDo6TW9kaWZpZXJzIG1vZGlm
aWVycywgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50ICYmICFtX2NsaWVudC5t
b3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKG1fY2xpZW50LmJhc2UudmVyc2lvbiA+
IDAgJiYgIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KQorICAgICAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5iYXNlLnZlcnNpb24pIHsKKyAg
ICAgICAgICAgICAgICBtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwKHRvQVBJKHBhZ2UpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSSh1c2VyRGF0
YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZWZQdHI8V2ViSGl0VGVzdFJlc3VsdD4gd2Vi
SGl0VGVzdFJlc3VsdCA9IFdlYkhpdFRlc3RSZXN1bHQ6OmNyZWF0ZShkYXRhKTsKKyAgICAgICAg
ICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKHBhZ2UpLCB0b0FQSSh3
ZWJIaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEkodXNlckRhdGEp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKKyAgICAgICAgdmlydHVhbCB2b2lkIHVuYXZhaWxhYmxlUGx1Z2lu
QnV0dG9uQ2xpY2tlZChXZWJQYWdlUHJveHkqIHBhZ2UsIFdLUGx1Z2luVW5hdmFpbGFiaWxpdHlS
ZWFzb24gcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sIEltbXV0YWJsZURpY3Rpb25hcnkqIHBs
dWdpbkluZm9ybWF0aW9uKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAocGx1
Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gPT0ga1dLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25Q
bHVnaW5NaXNzaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fY2xpZW50Lm1pc3NpbmdQbHVn
aW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjApCisgICAgICAgICAgICAgICAg
ICAgIG1fY2xpZW50Lm1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAoCisgICAgICAgICAgICAgICAgICAgICAgICB0b0FQSShwYWdlKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8QVBJOjpTdHJpbmc+KHBs
dWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAg
dG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRp
b25QbHVnaW5VUkxLZXkoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgdG9BUEkocGx1Z2lu
SW5mb3JtYXRpb24tPmdldDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFn
ZUF0dHJpYnV0ZVVSTEtleSgpKSksCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobV9jbGll
bnQudW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEp
CisgICAgICAgICAgICAgICAgbV9jbGllbnQudW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2Vk
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEoCisgICAgICAgICAgICAgICAgICAgIHRvQVBJKHBhZ2Up
LAorICAgICAgICAgICAgICAgICAgICBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwKKyAgICAg
ICAgICAgICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxBUEk6OlN0cmluZz4o
cGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpKSksCisgICAgICAgICAgICAgICAgICAgIHRv
QVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9u
UGx1Z2luVVJMS2V5KCkpKSwKKyAgICAgICAgICAgICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3Jt
YXRpb24tPmdldDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJp
YnV0ZVVSTEtleSgpKSksCisgICAgICAgICAgICAgICAgICAgIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CisKKyAgICAgICAgICAgIGlmIChtX2NsaWVudC51bmF2YWlsYWJsZVBsdWdpbkJ1dHRv
bkNsaWNrZWQpCisgICAgICAgICAgICAgICAgbV9jbGllbnQudW5hdmFpbGFibGVQbHVnaW5CdXR0
b25DbGlja2VkKAorICAgICAgICAgICAgICAgICAgICB0b0FQSShwYWdlKSwKKyAgICAgICAgICAg
ICAgICAgICAgcGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24sCisgICAgICAgICAgICAgICAgICAg
IHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1lbnRzRGlkTm90SGFuZGxl
S2V5RXZlbnQoKSBjb25zdCBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
bV9jbGllbnQuZGlkTm90SGFuZGxlS2V5RXZlbnQ7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBO
YXRpdmVXZWJLZXlib2FyZEV2ZW50JiBldmVudCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5kaWROb3RIYW5kbGVLZXlFdmVudCkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5kaWROb3RIYW5kbGVLZXlFdmVudCh0b0FQ
SShwYWdlKSwgZXZlbnQubmF0aXZlRXZlbnQoKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBpbXBsZW1lbnRzRGlkTm90SGFuZGxl
V2hlZWxFdmVudCgpIGNvbnN0IG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBtX2NsaWVudC5kaWROb3RIYW5kbGVXaGVlbEV2ZW50OworICAgICAgICB9CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQoV2ViUGFnZVByb3h5KiBwYWdlLCBj
b25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50JiBldmVudCkgb3ZlcnJpZGUKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWROb3RIYW5kbGVXaGVlbEV2ZW50KQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZE5vdEhhbmRsZVdoZWVsRXZl
bnQodG9BUEkocGFnZSksIGV2ZW50Lm5hdGl2ZUV2ZW50KCksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgdG9vbGJhcnNBcmVWaXNp
YmxlKFdlYlBhZ2VQcm94eSogcGFnZSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC50b29sYmFyc0FyZVZpc2libGUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQudG9vbGJhcnNBcmVWaXNpYmxlKHRv
QVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAg
ICAgdmlydHVhbCB2b2lkIHNldFRvb2xiYXJzQXJlVmlzaWJsZShXZWJQYWdlUHJveHkqIHBhZ2Us
IGJvb2wgdmlzaWJsZSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2Ns
aWVudC5zZXRUb29sYmFyc0FyZVZpc2libGUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgbV9jbGllbnQuc2V0VG9vbGJhcnNBcmVWaXNpYmxlKHRvQVBJKHBhZ2UpLCB2aXNp
YmxlLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdmly
dHVhbCBib29sIG1lbnVCYXJJc1Zpc2libGUoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50Lm1lbnVCYXJJc1Zpc2libGUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQu
bWVudUJhcklzVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRNZW51QmFySXNWaXNpYmxlKFdl
YlBhZ2VQcm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKSBvdmVycmlkZQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LnNldE1lbnVCYXJJc1Zpc2libGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQuc2V0TWVudUJhcklzVmlzaWJsZSh0b0FQ
SShwYWdlKSwgdmlzaWJsZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQor
CisgICAgICAgIHZpcnR1YWwgYm9vbCBzdGF0dXNCYXJJc1Zpc2libGUoV2ViUGFnZVByb3h5KiBw
YWdlKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnN0YXR1
c0JhcklzVmlzaWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IHJldHVybiBtX2NsaWVudC5zdGF0dXNCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIG1fY2xpZW50
LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0
U3RhdHVzQmFySXNWaXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKSBvdmVy
cmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNldFN0YXR1c0Jhcklz
VmlzaWJsZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBtX2NsaWVudC5z
ZXRTdGF0dXNCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIHZpc2libGUsIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgaXNSZXNpemFi
bGUoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW1fY2xpZW50LmlzUmVzaXphYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgcmV0dXJuIG1fY2xpZW50LmlzUmVzaXphYmxlKHRvQVBJKHBhZ2UpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCB2b2lk
IHNldElzUmVzaXphYmxlKFdlYlBhZ2VQcm94eSogcGFnZSwgYm9vbCByZXNpemFibGUpIG92ZXJy
aWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2V0SXNSZXNpemFibGUp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgbV9jbGllbnQuc2V0SXNSZXNp
emFibGUodG9BUEkocGFnZSksIHJlc2l6YWJsZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRXaW5kb3dGcmFtZShXZWJQYWdl
UHJveHkqIHBhZ2UsIGNvbnN0IEZsb2F0UmVjdCYgZnJhbWUpIG92ZXJyaWRlCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbV9jbGllbnQuc2V0V2luZG93RnJhbWUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2NsaWVudC5zZXRXaW5kb3dGcmFtZSh0b0FQSShw
YWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICB9
CisKKyAgICAgICAgdmlydHVhbCBGbG9hdFJlY3Qgd2luZG93RnJhbWUoV2ViUGFnZVByb3h5KiBw
YWdlKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmdldFdp
bmRvd0ZyYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBGbG9hdFJlY3QoKTsKKworICAgICAg
ICAgICAgcmV0dXJuIHRvRmxvYXRSZWN0KG1fY2xpZW50LmdldFdpbmRvd0ZyYW1lKHRvQVBJKHBh
Z2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgfQorCisgICAgICAgIHZp
cnR1YWwgYm9vbCBjYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBjb25zdCBvdmVycmlk
ZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQucnVuQmVmb3JlVW5sb2Fk
Q29uZmlybVBhbmVsOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBib29sIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKQorICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQucnVuQmVm
b3JlVW5sb2FkQ29uZmlybVBhbmVsKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSks
IHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaWREcmF3KFdlYlBhZ2VQcm94eSogcGFnZSkgb3ZlcnJpZGUK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWREcmF3KQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuZGlkRHJhdyh0b0FQSShwYWdl
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1
YWwgdm9pZCBwYWdlRGlkU2Nyb2xsKFdlYlBhZ2VQcm94eSogcGFnZSkgb3ZlcnJpZGUKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wYWdlRGlkU2Nyb2xsKQorICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQucGFnZURpZFNjcm9sbCh0b0FQ
SShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIGV4Y2VlZGVkRGF0YWJhc2VRdW90YShXZWJQYWdl
UHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBXZWJTZWN1cml0eU9yaWdpbiogb3Jp
Z2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZURp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudFF1b3RhLCB1bnNpZ25lZCBsb25n
IGxvbmcgY3VycmVudE9yaWdpblVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgY3VycmVudERhdGFi
YXNlVXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlY3RlZFVzYWdlKSBvdmVycmlkZQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmV4Y2VlZGVkRGF0YWJhc2VRdW90YSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudFF1b3RhOworCisgICAgICAgICAgICByZXR1
cm4gbV9jbGllbnQuZXhjZWVkZWREYXRhYmFzZVF1b3RhKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFt
ZSksIHRvQVBJKG9yaWdpbiksIHRvQVBJKGRhdGFiYXNlTmFtZS5pbXBsKCkpLCB0b0FQSShkYXRh
YmFzZURpc3BsYXlOYW1lLmltcGwoKSksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdl
LCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9vbCBydW5PcGVuUGFuZWwo
V2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgV2ViT3BlblBhbmVsUGFy
YW1ldGVycyogcGFyYW1ldGVycywgV2ViT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJQcm94eSogbGlz
dGVuZXIpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQucnVu
T3BlblBhbmVsKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
bV9jbGllbnQucnVuT3BlblBhbmVsKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHBh
cmFtZXRlcnMpLCB0b0FQSShsaXN0ZW5lciksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgYm9v
bCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94
eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4s
IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eSogcGVybWlzc2lvblJlcXVlc3QpIG92
ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkob3JpZ2lu
KSwgdG9BUEkocGVybWlzc2lvblJlcXVlc3QpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJv
b2wgZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVBy
b3h5KiBwYWdlLCBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdCogcGVybWlzc2lvblJlcXVlc3QpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICBt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQ
SShwYWdlKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkocGVybWlzc2lvblJlcXVlc3QpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
KworICAgICAgICAvLyBQcmludGluZy4KKyAgICAgICAgdmlydHVhbCBmbG9hdCBoZWFkZXJIZWln
aHQoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkgb3ZlcnJpZGUKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5oZWFkZXJIZWlnaHQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5oZWFkZXJI
ZWlnaHQodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWwgZmxvYXQgZm9vdGVySGVpZ2h0KFdlYlBh
Z2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpIG92ZXJyaWRlCisgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZm9vdGVySGVpZ2h0KQorICAgICAgICAgICAgICAg
IHJldHVybiAwOworCisgICAgICAgICAgICByZXR1cm4gbV9jbGllbnQuZm9vdGVySGVpZ2h0KHRv
QVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhd0hlYWRlcihXZWJQYWdlUHJveHkqIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmIHJlY3Qp
IG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQuZHJhd0hlYWRl
cikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIG1fY2xpZW50LmRyYXdI
ZWFkZXIodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkocmVjdCksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZHJhd0Zv
b3RlcihXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmIHJlY3QpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZHJhd0Zvb3RlcikKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIG1fY2xpZW50LmRyYXdGb290ZXIodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9B
UEkocmVjdCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAg
ICB2aXJ0dWFsIHZvaWQgcHJpbnRGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJv
eHkqIGZyYW1lKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50
LnByaW50RnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtX2Ns
aWVudC5wcmludEZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuUnVuTW9k
YWwoKSBjb25zdCBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9jbGll
bnQucnVuTW9kYWw7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWwo
V2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LnJ1bk1vZGFsKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgbV9jbGllbnQucnVuTW9kYWwodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgc2F2ZURhdGFUb0ZpbGVJbkRv
d25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVk
RmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRp
bmdVUkxTdHJpbmcsIEFQSTo6RGF0YSogZGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKCFtX2NsaWVudC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKQorICAg
ICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgbV9jbGllbnQuc2F2ZURhdGFUb0Zp
bGVJbkRvd25sb2Fkc0ZvbGRlcih0b0FQSShwYWdlKSwgdG9BUEkoc3VnZ2VzdGVkRmlsZW5hbWUu
aW1wbCgpKSwgdG9BUEkobWltZVR5cGUuaW1wbCgpKSwgdG9VUkxSZWYob3JpZ2luYXRpbmdVUkxT
dHJpbmcuaW1wbCgpKSwgdG9BUEkoZGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgICAgIH0KKworICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlw
dChXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIHJldHVybiBtX2NsaWVudC5zaG91bGRJbnRlcnJ1
cHRKYXZhU2NyaXB0KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAg
ICAgICB9CisKKyNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKKyAgICAgICAgdmlydHVhbCBi
b29sIHNob3dDb2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgaW5p
dGlhbENvbG9yLCBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKSBv
dmVycmlkZQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW1fY2xpZW50LnNob3dDb2xvclBp
Y2tlcikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgIG1fY2xp
ZW50LnNob3dDb2xvclBpY2tlcih0b0FQSShwYWdlKSwgdG9BUEkoaW5pdGlhbENvbG9yLmltcGwo
KSksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgdmlydHVhbCBib29sIGhpZGVD
b2xvclBpY2tlcihXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJyaWRlCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbV9jbGllbnQuaGlkZUNvbG9yUGlja2VyKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAgICAgbV9jbGllbnQuaGlkZUNvbG9yUGlja2VyKHRvQVBJ
KHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKyNlbmRpZgorICAgIH07CisKKyAgICB0b0ltcGwocGFnZVJlZiktPnNl
dFVJQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8VUlDbGllbnQ+KHdrQ2xpZW50KSk7CiB9CiAKIHZv
aWQgV0tQYWdlU2V0U2Vzc2lvbihXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTZXNzaW9uUmVmIHNlc3Np
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGJmNTll
YzY3ZjQ3YTVmNWM0YjI5OWI4YWJiYWFiZDllZDMzMzJmNjkuLjg0NWEyOGZiYjI2M2RhZTUxM2Vj
OTQ4NDVhMmI5NDU1NzIzYjZiZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNs
dWRlICJBUElMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRlICJBUElQb2xpY3lDbGllbnQuaCIKKyNp
bmNsdWRlICJBUElVSUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSVVSTFJlcXVlc3QuaCIKICNpbmNs
dWRlICJBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmgiCiAjaW5jbHVkZSAiQXV0aGVudGlj
YXRpb25EZWNpc2lvbkxpc3RlbmVyLmgiCkBAIC03Miw2ICs3Myw3IEBACiAjaW5jbHVkZSAiV2Vi
SW5zcGVjdG9yUHJveHkuaCIKICNpbmNsdWRlICJXZWJJbnNwZWN0b3JQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
T3BlblBhbmVsUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIldlYk9wZW5QYW5lbFJlc3VsdExpc3Rl
bmVyUHJveHkuaCIKICNpbmNsdWRlICJXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5j
bHVkZSAiV2ViUGFnZUdyb3VwLmgiCkBAIC0yNDgsNiArMjUwLDcgQEAgV2ViUGFnZVByb3h5OjpX
ZWJQYWdlUHJveHkoUGFnZUNsaWVudCYgcGFnZUNsaWVudCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9j
ZXNzLCBXZWIKICAgICA6IG1fcGFnZUNsaWVudChwYWdlQ2xpZW50KQogICAgICwgbV9sb2FkZXJD
bGllbnQoc3RkOjptYWtlX3VuaXF1ZTxBUEk6OkxvYWRlckNsaWVudD4oKSkKICAgICAsIG1fcG9s
aWN5Q2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpQb2xpY3lDbGllbnQ+KCkpCisgICAgLCBt
X3VpQ2xpZW50KHN0ZDo6bWFrZV91bmlxdWU8QVBJOjpVSUNsaWVudD4oKSkKICAgICAsIG1fcHJv
Y2Vzcyhwcm9jZXNzKQogICAgICwgbV9wYWdlR3JvdXAocGFnZUdyb3VwKQogICAgICwgbV9tYWlu
RnJhbWUobnVsbHB0cikKQEAgLTQzNCwxNSArNDM3LDIwIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpp
bml0aWFsaXplRm9ybUNsaWVudChjb25zdCBXS1BhZ2VGb3JtQ2xpZW50QmFzZSogZm9ybUNsaWVu
dCkKICAgICBtX2Zvcm1DbGllbnQuaW5pdGlhbGl6ZShmb3JtQ2xpZW50KTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OmluaXRpYWxpemVVSUNsaWVudChjb25zdCBXS1BhZ2VVSUNsaWVudEJhc2Uq
IGNsaWVudCkKK3ZvaWQgV2ViUGFnZVByb3h5OjpzZXRVSUNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8
QVBJOjpVSUNsaWVudD4gdWlDbGllbnQpCiB7Ci0gICAgaWYgKCFpc1ZhbGlkKCkpCisgICAgaWYg
KCF1aUNsaWVudCkgeworICAgICAgICBtX3VpQ2xpZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxBUEk6
OlVJQ2xpZW50PigpOwogICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV91aUNsaWVudCA9
IHN0ZDo6bW92ZSh1aUNsaWVudCk7CiAKLSAgICBtX3VpQ2xpZW50LmluaXRpYWxpemUoY2xpZW50
KTsKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRDYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFu
ZWwobV91aUNsaWVudC5jYW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSksIG1fcGFnZUlE
KTsKLSAgICBzZXRDYW5SdW5Nb2RhbChtX3VpQ2xpZW50LmNhblJ1bk1vZGFsKCkpOworICAgIG1f
cHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6U2V0Q2FuUnVuQmVmb3JlVW5sb2FkQ29u
ZmlybVBhbmVsKG1fdWlDbGllbnQtPmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpKSwg
bV9wYWdlSUQpOworICAgIHNldENhblJ1bk1vZGFsKG1fdWlDbGllbnQtPmNhblJ1bk1vZGFsKCkp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5pdGlhbGl6ZUZpbmRDbGllbnQoY29uc3QgV0tQ
YWdlRmluZENsaWVudEJhc2UqIGNsaWVudCkKQEAgLTU2Nyw3ICs1NzUsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2xvc2UoKQogICAgIG1fbG9hZGVyQ2xpZW50ID0gbnVsbHB0cjsKICAgICBtX3Bv
bGljeUNsaWVudCA9IG51bGxwdHI7CiAgICAgbV9mb3JtQ2xpZW50LmluaXRpYWxpemUoMCk7Ci0g
ICAgbV91aUNsaWVudC5pbml0aWFsaXplKDApOworICAgIG1fdWlDbGllbnQgPSBudWxscHRyOwog
I2lmIFBMQVRGT1JNKEVGTCkKICAgICBtX3VpUG9wdXBNZW51Q2xpZW50LmluaXRpYWxpemUoMCk7
CiAjZW5kaWYKQEAgLTI1NTYsNyArMjU2NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp3aWxsU3Vi
bWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zCiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVOZXdQYWdlKGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgY29uc3QgV2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCB1aW50MzJfdCBv
cGFxdWVNb2RpZmllcnMsIGludDMyX3Qgb3BhcXVlTW91c2VCdXR0b24sIHVpbnQ2NF90JiBuZXdQ
YWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMmIG5ld1BhZ2VQYXJhbWV0ZXJzKQogewot
ICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IG5ld1BhZ2UgPSBtX3VpQ2xpZW50LmNyZWF0ZU5ld1Bh
Z2UodGhpcywgcmVxdWVzdCwgd2luZG93RmVhdHVyZXMsIHN0YXRpY19jYXN0PFdlYkV2ZW50OjpN
b2RpZmllcnM+KG9wYXF1ZU1vZGlmaWVycyksIHN0YXRpY19jYXN0PFdlYk1vdXNlRXZlbnQ6OkJ1
dHRvbj4ob3BhcXVlTW91c2VCdXR0b24pKTsKKyAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBuZXdQ
YWdlID0gbV91aUNsaWVudC0+Y3JlYXRlTmV3UGFnZSh0aGlzLCByZXF1ZXN0LCB3aW5kb3dGZWF0
dXJlcywgc3RhdGljX2Nhc3Q8V2ViRXZlbnQ6Ok1vZGlmaWVycz4ob3BhcXVlTW9kaWZpZXJzKSwg
c3RhdGljX2Nhc3Q8V2ViTW91c2VFdmVudDo6QnV0dG9uPihvcGFxdWVNb3VzZUJ1dHRvbikpOwog
ICAgIGlmICghbmV3UGFnZSkgewogICAgICAgICBuZXdQYWdlSUQgPSAwOwogICAgICAgICByZXR1
cm47CkBAIC0yNTY5LDcgKzI1NzcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlTmV3UGFn
ZShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdpbmRvd0ZlYQogICAgIAog
dm9pZCBXZWJQYWdlUHJveHk6OnNob3dQYWdlKCkKIHsKLSAgICBtX3VpQ2xpZW50LnNob3dQYWdl
KHRoaXMpOworICAgIG1fdWlDbGllbnQtPnNob3dQYWdlKHRoaXMpOwogfQogCiB2b2lkIFdlYlBh
Z2VQcm94eTo6Y2xvc2VQYWdlKGJvb2wgc3RvcFJlc3BvbnNpdmVuZXNzVGltZXIpCkBAIC0yNTc4
LDcgKzI1ODYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2VQYWdlKGJvb2wgc3RvcFJlc3Bv
bnNpdmVuZXNzVGltZXIpCiAgICAgICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigp
LT5zdG9wKCk7CiAKICAgICBtX3BhZ2VDbGllbnQuY2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKLSAg
ICBtX3VpQ2xpZW50LmNsb3NlKHRoaXMpOworICAgIG1fdWlDbGllbnQtPmNsb3NlKHRoaXMpOwog
fQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTI1ODksNyArMjU5Nyw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgIC8vIFNpbmNlIHJ1bkphdmFTY3JpcHRBbGVydCgpIGNhbiBzcGlu
IGEgbmVzdGVkIHJ1biBsb29wIHdlIG5lZWQgdG8gdHVybiBvZmYgdGhlIHJlc3BvbnNpdmVuZXNz
IHRpbWVyLgogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2ZW5lc3NUaW1lcigpLT5zdG9wKCk7CiAK
LSAgICBtX3VpQ2xpZW50LnJ1bkphdmFTY3JpcHRBbGVydCh0aGlzLCBtZXNzYWdlLCBmcmFtZSk7
CisgICAgbV91aUNsaWVudC0+cnVuSmF2YVNjcmlwdEFsZXJ0KHRoaXMsIG1lc3NhZ2UsIGZyYW1l
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgYm9vbCYgcmVzdWx0KQpAQCAtMjYwMCw3
ICsyNjA4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRDb25maXJtKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKICAgICAvLyBTaW5jZSBydW5KYXZh
U2NyaXB0Q29uZmlybSgpIGNhbiBzcGluIGEgbmVzdGVkIHJ1biBsb29wIHdlIG5lZWQgdG8gdHVy
biBvZmYgdGhlIHJlc3BvbnNpdmVuZXNzIHRpbWVyLgogICAgIG1fcHJvY2Vzcy0+cmVzcG9uc2l2
ZW5lc3NUaW1lcigpLT5zdG9wKCk7CiAKLSAgICByZXN1bHQgPSBtX3VpQ2xpZW50LnJ1bkphdmFT
Y3JpcHRDb25maXJtKHRoaXMsIG1lc3NhZ2UsIGZyYW1lKTsKKyAgICByZXN1bHQgPSBtX3VpQ2xp
ZW50LT5ydW5KYXZhU2NyaXB0Q29uZmlybSh0aGlzLCBtZXNzYWdlLCBmcmFtZSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KHVpbnQ2NF90IGZyYW1lSUQsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUsIFN0cmluZyYg
cmVzdWx0KQpAQCAtMjYxMSw3ICsyNjE5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRQcm9tcHQodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLAogICAg
IC8vIFNpbmNlIHJ1bkphdmFTY3JpcHRQcm9tcHQoKSBjYW4gc3BpbiBhIG5lc3RlZCBydW4gbG9v
cCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1lci4KICAgICBtX3By
b2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOwogCi0gICAgcmVzdWx0ID0gbV91
aUNsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KHRoaXMsIG1lc3NhZ2UsIGRlZmF1bHRWYWx1ZSwg
ZnJhbWUpOworICAgIHJlc3VsdCA9IG1fdWlDbGllbnQtPnJ1bkphdmFTY3JpcHRQcm9tcHQodGhp
cywgbWVzc2FnZSwgZGVmYXVsdFZhbHVlLCBmcmFtZSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KGJvb2wmIHJlc3VsdCkKQEAgLTI2MTksMTIgKzI2
MjcsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNob3VsZEludGVycnVwdEphdmFTY3JpcHQoYm9v
bCYgcmVzdWx0KQogICAgIC8vIFNpbmNlIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQoKSBjYW4g
c3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZl
bmVzcyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgp
OwogCi0gICAgcmVzdWx0ID0gbV91aUNsaWVudC5zaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KHRo
aXMpOworICAgIHJlc3VsdCA9IG1fdWlDbGllbnQtPnNob3VsZEludGVycnVwdEphdmFTY3JpcHQo
dGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTdGF0dXNUZXh0KGNvbnN0IFN0cmlu
ZyYgdGV4dCkKIHsKLSAgICBtX3VpQ2xpZW50LnNldFN0YXR1c1RleHQodGhpcywgdGV4dCk7Cisg
ICAgbV91aUNsaWVudC0+c2V0U3RhdHVzVGV4dCh0aGlzLCB0ZXh0KTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IFdlYkhpdFRlc3RSZXN1bHQ6
OkRhdGEmIGhpdFRlc3RSZXN1bHREYXRhLCB1aW50MzJfdCBvcGFxdWVNb2RpZmllcnMsIElQQzo6
TWVzc2FnZURlY29kZXImIGRlY29kZXIpCkBAIC0yNjM2LDcgKzI2NDQsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6bW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoY29uc3QgV2ViSGl0VGVzdFJlc3VsdDo6
RGF0YSYgaGl0VGVzdAogCiAgICAgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMgPSBzdGF0
aWNfY2FzdDxXZWJFdmVudDo6TW9kaWZpZXJzPihvcGFxdWVNb2RpZmllcnMpOwogCi0gICAgbV91
aUNsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudCh0aGlzLCBoaXRUZXN0UmVzdWx0RGF0YSwg
bW9kaWZpZXJzLCB1c2VyRGF0YS5nZXQoKSk7CisgICAgbV91aUNsaWVudC0+bW91c2VEaWRNb3Zl
T3ZlckVsZW1lbnQodGhpcywgaGl0VGVzdFJlc3VsdERhdGEsIG1vZGlmaWVycywgdXNlckRhdGEu
Z2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y29ubmVjdGlvbldpbGxPcGVuKElQQzo6
Q29ubmVjdGlvbiogY29ubmVjdGlvbikKQEAgLTI2ODEsNyArMjY4OSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWQodWludDMyX3Qgb3BhcXVlUGx1
Z2luVW5hdmFpbGFiCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KIAotICAg
IG1fdWlDbGllbnQudW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHRoaXMsIHBsdWdpblVu
YXZhaWxhYmlsaXR5UmVhc29uLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSk7CisgICAgbV91aUNs
aWVudC0+dW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkKHRoaXMsIHBsdWdpblVuYXZhaWxh
YmlsaXR5UmVhc29uLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKQEAgLTI2OTQsNTIgKzI3MDIsNTIgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OndlYkdMUG9saWN5Rm9yVVJMKGNvbnN0IFN0cmluZyYgdXJsLCB1aW50MzJf
dCYgbG9hZFBvbGljeSkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFRvb2xiYXJzQXJlVmlzaWJs
ZShib29sIHRvb2xiYXJzQXJlVmlzaWJsZSkKIHsKLSAgICBtX3VpQ2xpZW50LnNldFRvb2xiYXJz
QXJlVmlzaWJsZSh0aGlzLCB0b29sYmFyc0FyZVZpc2libGUpOworICAgIG1fdWlDbGllbnQtPnNl
dFRvb2xiYXJzQXJlVmlzaWJsZSh0aGlzLCB0b29sYmFyc0FyZVZpc2libGUpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6Z2V0VG9vbGJhcnNBcmVWaXNpYmxlKGJvb2wmIHRvb2xiYXJzQXJlVmlz
aWJsZSkKIHsKLSAgICB0b29sYmFyc0FyZVZpc2libGUgPSBtX3VpQ2xpZW50LnRvb2xiYXJzQXJl
VmlzaWJsZSh0aGlzKTsKKyAgICB0b29sYmFyc0FyZVZpc2libGUgPSBtX3VpQ2xpZW50LT50b29s
YmFyc0FyZVZpc2libGUodGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRNZW51QmFy
SXNWaXNpYmxlKGJvb2wgbWVudUJhcklzVmlzaWJsZSkKIHsKLSAgICBtX3VpQ2xpZW50LnNldE1l
bnVCYXJJc1Zpc2libGUodGhpcywgbWVudUJhcklzVmlzaWJsZSk7CisgICAgbV91aUNsaWVudC0+
c2V0TWVudUJhcklzVmlzaWJsZSh0aGlzLCBtZW51QmFySXNWaXNpYmxlKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OmdldE1lbnVCYXJJc1Zpc2libGUoYm9vbCYgbWVudUJhcklzVmlzaWJsZSkK
IHsKLSAgICBtZW51QmFySXNWaXNpYmxlID0gbV91aUNsaWVudC5tZW51QmFySXNWaXNpYmxlKHRo
aXMpOworICAgIG1lbnVCYXJJc1Zpc2libGUgPSBtX3VpQ2xpZW50LT5tZW51QmFySXNWaXNpYmxl
KHRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0U3RhdHVzQmFySXNWaXNpYmxlKGJv
b2wgc3RhdHVzQmFySXNWaXNpYmxlKQogewotICAgIG1fdWlDbGllbnQuc2V0U3RhdHVzQmFySXNW
aXNpYmxlKHRoaXMsIHN0YXR1c0JhcklzVmlzaWJsZSk7CisgICAgbV91aUNsaWVudC0+c2V0U3Rh
dHVzQmFySXNWaXNpYmxlKHRoaXMsIHN0YXR1c0JhcklzVmlzaWJsZSk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRTdGF0dXNCYXJJc1Zpc2libGUoYm9vbCYgc3RhdHVzQmFySXNWaXNpYmxl
KQogewotICAgIHN0YXR1c0JhcklzVmlzaWJsZSA9IG1fdWlDbGllbnQuc3RhdHVzQmFySXNWaXNp
YmxlKHRoaXMpOworICAgIHN0YXR1c0JhcklzVmlzaWJsZSA9IG1fdWlDbGllbnQtPnN0YXR1c0Jh
cklzVmlzaWJsZSh0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldElzUmVzaXphYmxl
KGJvb2wgaXNSZXNpemFibGUpCiB7Ci0gICAgbV91aUNsaWVudC5zZXRJc1Jlc2l6YWJsZSh0aGlz
LCBpc1Jlc2l6YWJsZSk7CisgICAgbV91aUNsaWVudC0+c2V0SXNSZXNpemFibGUodGhpcywgaXNS
ZXNpemFibGUpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0SXNSZXNpemFibGUoYm9vbCYg
aXNSZXNpemFibGUpCiB7Ci0gICAgaXNSZXNpemFibGUgPSBtX3VpQ2xpZW50LmlzUmVzaXphYmxl
KHRoaXMpOworICAgIGlzUmVzaXphYmxlID0gbV91aUNsaWVudC0+aXNSZXNpemFibGUodGhpcyk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRXaW5kb3dGcmFtZShjb25zdCBGbG9hdFJlY3Qm
IG5ld1dpbmRvd0ZyYW1lKQogewotICAgIG1fdWlDbGllbnQuc2V0V2luZG93RnJhbWUodGhpcywg
bV9wYWdlQ2xpZW50LmNvbnZlcnRUb0RldmljZVNwYWNlKG5ld1dpbmRvd0ZyYW1lKSk7CisgICAg
bV91aUNsaWVudC0+c2V0V2luZG93RnJhbWUodGhpcywgbV9wYWdlQ2xpZW50LmNvbnZlcnRUb0Rl
dmljZVNwYWNlKG5ld1dpbmRvd0ZyYW1lKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRX
aW5kb3dGcmFtZShGbG9hdFJlY3QmIG5ld1dpbmRvd0ZyYW1lKQogewotICAgIG5ld1dpbmRvd0Zy
YW1lID0gbV9wYWdlQ2xpZW50LmNvbnZlcnRUb1VzZXJTcGFjZShtX3VpQ2xpZW50LndpbmRvd0Zy
YW1lKHRoaXMpKTsKKyAgICBuZXdXaW5kb3dGcmFtZSA9IG1fcGFnZUNsaWVudC5jb252ZXJ0VG9V
c2VyU3BhY2UobV91aUNsaWVudC0+d2luZG93RnJhbWUodGhpcykpOwogfQogICAgIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNjcmVlblRvV2luZG93KGNvbnN0IEludFBvaW50JiBzY3JlZW5Qb2ludCwg
SW50UG9pbnQmIHdpbmRvd1BvaW50KQpAQCAtMjc2MCw3ICsyNzY4LDcgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbChjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IHVpbnQ2NF90IGYKICAgICAvLyBTaW5jZSBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwoKSBj
YW4gc3BpbiBhIG5lc3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25z
aXZlbmVzcyB0aW1lci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3Rv
cCgpOwogCi0gICAgc2hvdWxkQ2xvc2UgPSBtX3VpQ2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZp
cm1QYW5lbCh0aGlzLCBtZXNzYWdlLCBmcmFtZSk7CisgICAgc2hvdWxkQ2xvc2UgPSBtX3VpQ2xp
ZW50LT5ydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwodGhpcywgbWVzc2FnZSwgZnJhbWUpOwog
fQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCkBAIC0yNzg4LDcgKzI3OTYsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFZpZXdw
b3J0QXR0cmlidXRlcyYgYXR0cikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VEaWRTY3JvbGwo
KQogewotICAgIG1fdWlDbGllbnQucGFnZURpZFNjcm9sbCh0aGlzKTsKKyAgICBtX3VpQ2xpZW50
LT5wYWdlRGlkU2Nyb2xsKHRoaXMpOwogI2lmICFQTEFURk9STShJT1MpICYmIFBMQVRGT1JNKE1B
QykKICAgICBkaXNtaXNzQ29ycmVjdGlvblBhbmVsKFJlYXNvbkZvckRpc21pc3NpbmdBbHRlcm5h
dGl2ZVRleHRJZ25vcmVkKTsKICNlbmRpZgpAQCAtMjgxMCw3ICsyODE4LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJ1bk9wZW5QYW5lbCh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBGaWxlQ2hvb3Nl
clNldHRpbmdzJiBzZXQKICAgICAvLyBTaW5jZSBydW5PcGVuUGFuZWwoKSBjYW4gc3BpbiBhIG5l
c3RlZCBydW4gbG9vcCB3ZSBuZWVkIHRvIHR1cm4gb2ZmIHRoZSByZXNwb25zaXZlbmVzcyB0aW1l
ci4KICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS0+c3RvcCgpOwogCi0gICAg
aWYgKCFtX3VpQ2xpZW50LnJ1bk9wZW5QYW5lbCh0aGlzLCBmcmFtZSwgcGFyYW1ldGVycy5nZXQo
KSwgbV9vcGVuUGFuZWxSZXN1bHRMaXN0ZW5lci5nZXQoKSkpCisgICAgaWYgKCFtX3VpQ2xpZW50
LT5ydW5PcGVuUGFuZWwodGhpcywgZnJhbWUsIHBhcmFtZXRlcnMuZ2V0KCksIG1fb3BlblBhbmVs
UmVzdWx0TGlzdGVuZXIuZ2V0KCkpKQogICAgICAgICBkaWRDYW5jZWxGb3JPcGVuUGFuZWwoKTsK
IH0KIApAQCAtMjgyMiw3ICsyODMwLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByaW50RnJhbWUo
dWludDY0X3QgZnJhbWVJRCkKICAgICBXZWJGcmFtZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+
d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFtZSk7CiAKLSAgICBtX3Vp
Q2xpZW50LnByaW50RnJhbWUodGhpcywgZnJhbWUpOworICAgIG1fdWlDbGllbnQtPnByaW50RnJh
bWUodGhpcywgZnJhbWUpOwogCiAgICAgZW5kUHJpbnRpbmcoKTsgLy8gU2VuZCBhIG1lc3NhZ2Ug
c3luY2hyb25vdXNseSB3aGlsZSBtX2lzUGVyZm9ybWluZ0RPTVByaW50T3BlcmF0aW9uIGlzIHN0
aWxsIHRydWUuCiAgICAgbV9pc1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbiA9IGZhbHNlOwpA
QCAtMjkzMSw3ICsyOTM5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEVuZENvbG9yUGlja2Vy
KCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERyYXcoKQogewotICAgIG1fdWlDbGllbnQuZGlk
RHJhdyh0aGlzKTsKKyAgICBtX3VpQ2xpZW50LT5kaWREcmF3KHRoaXMpOwogfQogCiAvLyBJbnNw
ZWN0b3IKQEAgLTM0NTQsMTQgKzM0NjIsMTQgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENhbmNl
bENoZWNraW5nVGV4dCh1aW50NjRfdCByZXF1ZXN0SUQpCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
Rm9jdXMoYm9vbCBmb2N1c2VkKQogewogICAgIGlmIChmb2N1c2VkKQotICAgICAgICBtX3VpQ2xp
ZW50LmZvY3VzKHRoaXMpOworICAgICAgICBtX3VpQ2xpZW50LT5mb2N1cyh0aGlzKTsKICAgICBl
bHNlCi0gICAgICAgIG1fdWlDbGllbnQudW5mb2N1cyh0aGlzKTsKKyAgICAgICAgbV91aUNsaWVu
dC0+dW5mb2N1cyh0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRha2VGb2N1cyh1aW50
MzJfdCBkaXJlY3Rpb24pCiB7Ci0gICAgbV91aUNsaWVudC50YWtlRm9jdXModGhpcywgKHN0YXRp
Y19jYXN0PEZvY3VzRGlyZWN0aW9uPihkaXJlY3Rpb24pID09IEZvY3VzRGlyZWN0aW9uRm9yd2Fy
ZCkgPyBrV0tGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBrV0tGb2N1c0RpcmVjdGlvbkJhY2t3YXJk
KTsKKyAgICBtX3VpQ2xpZW50LT50YWtlRm9jdXModGhpcywgKHN0YXRpY19jYXN0PEZvY3VzRGly
ZWN0aW9uPihkaXJlY3Rpb24pID09IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCkgPyBrV0tGb2N1c0Rp
cmVjdGlvbkZvcndhcmQgOiBrV0tGb2N1c0RpcmVjdGlvbkJhY2t3YXJkKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnNldFRvb2xUaXAoY29uc3QgU3RyaW5nJiB0b29sVGlwKQpAQCAtMzUzMyw4
ICszNTQxLDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVFdmVudCh1aW50MzJfdCBv
cGFxdWVUeXBlLCBib29sIGhhbmRsZWQpCiAKICAgICAgICAgLy8gRklYTUU6IERpc3BhdGNoIGFk
ZGl0aW9uYWwgZXZlbnRzIHRvIHRoZSBkaWROb3RIYW5kbGVXaGVlbEV2ZW50IGNsaWVudCBmdW5j
dGlvbi4KICAgICAgICAgaWYgKCFoYW5kbGVkKSB7Ci0gICAgICAgICAgICBpZiAobV91aUNsaWVu
dC5pbXBsZW1lbnRzRGlkTm90SGFuZGxlV2hlZWxFdmVudCgpKQotICAgICAgICAgICAgICAgIG1f
dWlDbGllbnQuZGlkTm90SGFuZGxlV2hlZWxFdmVudCh0aGlzLCBvbGRlc3RDb2FsZXNjZWRFdmVu
dC0+bGFzdCgpKTsKKyAgICAgICAgICAgIGlmIChtX3VpQ2xpZW50LT5pbXBsZW1lbnRzRGlkTm90
SGFuZGxlV2hlZWxFdmVudCgpKQorICAgICAgICAgICAgICAgIG1fdWlDbGllbnQtPmRpZE5vdEhh
bmRsZVdoZWVsRXZlbnQodGhpcywgb2xkZXN0Q29hbGVzY2VkRXZlbnQtPmxhc3QoKSk7CiAjaWYg
UExBVEZPUk0oTUFDKQogICAgICAgICAgICAgbV9wYWdlQ2xpZW50LndoZWVsRXZlbnRXYXNOb3RI
YW5kbGVkQnlXZWJDb3JlKG9sZGVzdENvYWxlc2NlZEV2ZW50LT5sYXN0KCkpOwogI2VuZGlmCkBA
IC0zNTYzLDggKzM1NzEsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUV2ZW50KHVp
bnQzMl90IG9wYXF1ZVR5cGUsIGJvb2wgaGFuZGxlZCkKICAgICAgICAgaWYgKGhhbmRsZWQpCiAg
ICAgICAgICAgICBicmVhazsKIAotICAgICAgICBpZiAobV91aUNsaWVudC5pbXBsZW1lbnRzRGlk
Tm90SGFuZGxlS2V5RXZlbnQoKSkKLSAgICAgICAgICAgIG1fdWlDbGllbnQuZGlkTm90SGFuZGxl
S2V5RXZlbnQodGhpcywgZXZlbnQpOworICAgICAgICBpZiAobV91aUNsaWVudC0+aW1wbGVtZW50
c0RpZE5vdEhhbmRsZUtleUV2ZW50KCkpCisgICAgICAgICAgICBtX3VpQ2xpZW50LT5kaWROb3RI
YW5kbGVLZXlFdmVudCh0aGlzLCBldmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICNpZiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtMzkwOCw3ICszOTE2LDcgQEAgV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycygpCiAgICAgcGFyYW1l
dGVycy51c2VyQWdlbnQgPSB1c2VyQWdlbnQoKTsKICAgICBwYXJhbWV0ZXJzLnNlc3Npb25TdGF0
ZSA9IFNlc3Npb25TdGF0ZShtX2JhY2tGb3J3YXJkTGlzdC0+ZW50cmllcygpLCBtX2JhY2tGb3J3
YXJkTGlzdC0+Y3VycmVudEluZGV4KCkpOwogICAgIHBhcmFtZXRlcnMuaGlnaGVzdFVzZWRCYWNr
Rm9yd2FyZEl0ZW1JRCA9IFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW06OmhpZ2hlZFVzZWRJdGVtSUQo
KTsKLSAgICBwYXJhbWV0ZXJzLmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCA9IG1fdWlD
bGllbnQuY2FuUnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKCk7CisgICAgcGFyYW1ldGVycy5j
YW5SdW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwgPSBtX3VpQ2xpZW50LT5jYW5SdW5CZWZvcmVV
bmxvYWRDb25maXJtUGFuZWwoKTsKICAgICBwYXJhbWV0ZXJzLmNhblJ1bk1vZGFsID0gbV9jYW5S
dW5Nb2RhbDsKICAgICBwYXJhbWV0ZXJzLmRldmljZVNjYWxlRmFjdG9yID0gZGV2aWNlU2NhbGVG
YWN0b3IoKTsKICAgICBwYXJhbWV0ZXJzLm1lZGlhVm9sdW1lID0gbV9tZWRpYVZvbHVtZTsKQEAg
LTM5OTAsNyArMzk5OCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVv
dGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JCiAKICAgICAgICAgUmVm
UHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbURhdGFiYXNlSWRlbnRpZmllcihyZWNvcmQtPm9yaWdpbklkZW50aWZpZXIpOwogCi0gICAg
ICAgIHVpbnQ2NF90IG5ld1F1b3RhID0gbV91aUNsaWVudC5leGNlZWRlZERhdGFiYXNlUXVvdGEo
dGhpcywgZnJhbWUsIG9yaWdpbi5nZXQoKSwKKyAgICAgICAgdWludDY0X3QgbmV3UXVvdGEgPSBt
X3VpQ2xpZW50LT5leGNlZWRlZERhdGFiYXNlUXVvdGEodGhpcywgZnJhbWUsIG9yaWdpbi5nZXQo
KSwKICAgICAgICAgICAgIHJlY29yZC0+ZGF0YWJhc2VOYW1lLCByZWNvcmQtPmRpc3BsYXlOYW1l
LCByZWNvcmQtPmN1cnJlbnRRdW90YSwKICAgICAgICAgICAgIHJlY29yZC0+Y3VycmVudE9yaWdp
blVzYWdlLCByZWNvcmQtPmN1cnJlbnREYXRhYmFzZVVzYWdlLCByZWNvcmQtPmV4cGVjdGVkVXNh
Z2UpOwogCkBAIC00MDA4LDcgKzQwMTYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEdl
b2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsCiAgICAg
UmVmUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPSBXZWJTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKTsKICAgICBSZWZQdHI8
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiByZXF1ZXN0ID0gbV9nZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcmVhdGVSZXF1ZXN0KGdlb2xvY2F0aW9uSUQpOwog
Ci0gICAgaWYgKG1fdWlDbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdCh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLCByZXF1ZXN0LmdldCgpKSkKKyAgICBp
ZiAobV91aUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dCh0aGlzLCBmcmFtZSwgb3JpZ2luLmdldCgpLCByZXF1ZXN0LmdldCgpKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fcGFnZUNsaWVudC5kZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0KCpmcmFtZSwgKm9yaWdpbiwgKnJlcXVlc3QpKQpAQCAtNDAyNSw3ICs0
MDMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3ROb3RpZmljYXRpb25QZXJtaXNzaW9u
KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW4KICAgICBSZWZQdHI8V2ViU2VjdXJpdHlP
cmlnaW4+IG9yaWdpbiA9IFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKG9yaWdp
blN0cmluZyk7CiAgICAgUmVmUHRyPE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0PiByZXF1
ZXN0ID0gbV9ub3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3JlYXRlUmVxdWVz
dChyZXF1ZXN0SUQpOwogICAgIAotICAgIGlmICghbV91aUNsaWVudC5kZWNpZGVQb2xpY3lGb3JO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0aGlzLCBvcmlnaW4uZ2V0KCksIHJlcXVlc3Qu
Z2V0KCkpKQorICAgIGlmICghbV91aUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3QodGhpcywgb3JpZ2luLmdldCgpLCByZXF1ZXN0LmdldCgpKSkKICAg
ICAgICAgcmVxdWVzdC0+ZGVueSgpOwogfQogCkBAIC00MDUzLDI4ICs0MDYxLDI4IEBAIGZsb2F0
IFdlYlBhZ2VQcm94eTo6aGVhZGVySGVpZ2h0KFdlYkZyYW1lUHJveHkqIGZyYW1lKQogewogICAg
IGlmIChmcmFtZS0+aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgcmV0dXJuIG1fdWlDbGllbnQuaGVhZGVySGVpZ2h0KHRoaXMsIGZyYW1lKTsKKyAgICBy
ZXR1cm4gbV91aUNsaWVudC0+aGVhZGVySGVpZ2h0KHRoaXMsIGZyYW1lKTsKIH0KIAogZmxvYXQg
V2ViUGFnZVByb3h5Ojpmb290ZXJIZWlnaHQoV2ViRnJhbWVQcm94eSogZnJhbWUpCiB7CiAgICAg
aWYgKGZyYW1lLT5pc0Rpc3BsYXlpbmdQREZEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsK
LSAgICByZXR1cm4gbV91aUNsaWVudC5mb290ZXJIZWlnaHQodGhpcywgZnJhbWUpOworICAgIHJl
dHVybiBtX3VpQ2xpZW50LT5mb290ZXJIZWlnaHQodGhpcywgZnJhbWUpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZHJhd0hlYWRlcihXZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQogewogICAgIGlmIChmcmFtZS0+aXNEaXNwbGF5aW5nUERGRG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIG1fdWlDbGllbnQuZHJhd0hlYWRlcih0aGlzLCBmcmFtZSwg
cmVjdCk7CisgICAgbV91aUNsaWVudC0+ZHJhd0hlYWRlcih0aGlzLCBmcmFtZSwgcmVjdCk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkcmF3Rm9vdGVyKFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBGbG9hdFJlY3QmIHJlY3QpCiB7CiAgICAgaWYgKGZyYW1lLT5pc0Rpc3BsYXlpbmdQREZE
b2N1bWVudCgpKQogICAgICAgICByZXR1cm47Ci0gICAgbV91aUNsaWVudC5kcmF3Rm9vdGVyKHRo
aXMsIGZyYW1lLCByZWN0KTsKKyAgICBtX3VpQ2xpZW50LT5kcmF3Rm9vdGVyKHRoaXMsIGZyYW1l
LCByZWN0KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bk1vZGFsKCkKQEAgLTQwODgsNyAr
NDA5Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5Nb2RhbCgpCiAgICAgLy8gU2VlIGh0dHA6
Ly93ZWJraXQub3JnL2IvODk1OTAgZm9yIG1vcmUgZGlzY3Vzc2lvbi4KICAgICBtX3Byb2Nlc3Mt
PmNvbm5lY3Rpb24oKS0+d2FrZVVwUnVuTG9vcCgpOwogCi0gICAgbV91aUNsaWVudC5ydW5Nb2Rh
bCh0aGlzKTsKKyAgICBtX3VpQ2xpZW50LT5ydW5Nb2RhbCh0aGlzKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6Om5vdGlmeVNjcm9sbGVyVGh1bWJJc1Zpc2libGVJblJlY3QoY29uc3QgSW50UmVj
dCYgc2Nyb2xsZXJUaHVtYikKQEAgLTQxNjgsNyArNDE3Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRDYW5SdW5Nb2RhbChib29sIGNhblJ1bk1vZGFsKQogICAgIC8vIEl0J3Mgb25seSBwb3Nz
aWJsZSB0byBjaGFuZ2UgdGhlIHN0YXRlIGZvciBhIFdlYlBhZ2Ugd2hpY2gKICAgICAvLyBhbHJl
YWR5IHF1YWxpZmllcyBmb3IgcnVubmluZyBtb2RhbCBjaGlsZCB3ZWIgcGFnZXMsIG90aGVyd2lz
ZQogICAgIC8vIHRoZXJlJ3Mgbm8gb3RoZXIgcG9zc2liaWxpdHkgdGhhbiBub3QgYWxsb3dpbmcg
aXQuCi0gICAgbV9jYW5SdW5Nb2RhbCA9IG1fdWlDbGllbnQuY2FuUnVuTW9kYWwoKSAmJiBjYW5S
dW5Nb2RhbDsKKyAgICBtX2NhblJ1bk1vZGFsID0gbV91aUNsaWVudC0+Y2FuUnVuTW9kYWwoKSAm
JiBjYW5SdW5Nb2RhbDsKICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNl
dENhblJ1bk1vZGFsKG1fY2FuUnVuTW9kYWwpLCBtX3BhZ2VJRCk7CiB9CiAKQEAgLTQyNjcsNyAr
NDI3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJs
ZVN0YXRlKCkKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVEYXRhVG9GaWxlSW5Eb3dubG9hZHNG
b2xkZXIoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRGaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgU3RyaW5nJiBvcmlnaW5hdGluZ1VSTFN0cmluZywgQVBJOjpEYXRhKiBkYXRh
KQogewotICAgIG1fdWlDbGllbnQuc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcih0aGlz
LCBzdWdnZXN0ZWRGaWxlbmFtZSwgbWltZVR5cGUsIG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBkYXRh
KTsKKyAgICBtX3VpQ2xpZW50LT5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKHRoaXMs
IHN1Z2dlc3RlZEZpbGVuYW1lLCBtaW1lVHlwZSwgb3JpZ2luYXRpbmdVUkxTdHJpbmcsIGRhdGEp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2F2ZVBERlRvRmlsZUluRG93bmxvYWRzRm9sZGVy
KGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgb3JpZ2luYXRp
bmdVUkxTdHJpbmcsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YVJlZmVyZW5jZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA4ZWZmYWJmM2U1MTQ4NmRl
YzM0YzhlZjQxNmE1YTYwYjMxZWQyYzkzLi5iNDZjMDdjZjEyNzc4ZmEzNThhNmEzNjgzYjExNThk
NGZjNTViOTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC01
Nyw3ICs1Nyw2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9BbHRlcm5hdGl2ZVRleHRDbGllbnQuaD4g
Ly8gRklYTUU6IE5lZWRlZCBieSBXZWJQYWdlUHJveHlNZXNzYWdlcy5oIGZvciBESUNUQVRJT05f
QUxURVJOQVRJVkVTLgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSAiV2ViUG9wdXBNZW51UHJveHkuaCIKLSNpbmNsdWRlICJXZWJVSUNsaWVudC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9EcmFnU2Vzc2lvbi5oPgpAQCAtMTAwLDYgKzk5LDcgQEAKIG5hbWVz
cGFjZSBBUEkgewogY2xhc3MgTG9hZGVyQ2xpZW50OwogY2xhc3MgUG9saWN5Q2xpZW50OworY2xh
c3MgVUlDbGllbnQ7CiBjbGFzcyBVUkxSZXF1ZXN0OwogfQogCkBAIC0zNjksNyArMzY5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgaW5pdGlhbGl6ZUZvcm1DbGllbnQoY29uc3QgV0tQYWdlRm9ybUNs
aWVudEJhc2UqKTsKICAgICB2b2lkIHNldExvYWRlckNsaWVudChzdGQ6OnVuaXF1ZV9wdHI8QVBJ
OjpMb2FkZXJDbGllbnQ+KTsKICAgICB2b2lkIHNldFBvbGljeUNsaWVudChzdGQ6OnVuaXF1ZV9w
dHI8QVBJOjpQb2xpY3lDbGllbnQ+KTsKLSAgICB2b2lkIGluaXRpYWxpemVVSUNsaWVudChjb25z
dCBXS1BhZ2VVSUNsaWVudEJhc2UqKTsKKyAgICB2b2lkIHNldFVJQ2xpZW50KHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OlVJQ2xpZW50Pik7CiAjaWYgUExBVEZPUk0oRUZMKQogICAgIHZvaWQgaW5pdGlh
bGl6ZVVJUG9wdXBNZW51Q2xpZW50KGNvbnN0IFdLUGFnZVVJUG9wdXBNZW51Q2xpZW50QmFzZSop
OwogI2VuZGlmCkBAIC0xMTc2LDcgKzExNzYsNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVl
X3B0cjxBUEk6OkxvYWRlckNsaWVudD4gbV9sb2FkZXJDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFQSTo6UG9saWN5Q2xpZW50PiBtX3BvbGljeUNsaWVudDsKICAgICBXZWJGb3JtQ2xpZW50
IG1fZm9ybUNsaWVudDsKLSAgICBXZWJVSUNsaWVudCBtX3VpQ2xpZW50OworICAgIHN0ZDo6dW5p
cXVlX3B0cjxBUEk6OlVJQ2xpZW50PiBtX3VpQ2xpZW50OwogI2lmIFBMQVRGT1JNKEVGTCkKICAg
ICBXZWJVSVBvcHVwTWVudUNsaWVudCBtX3VpUG9wdXBNZW51Q2xpZW50OwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNTEzODg5YzNmZGUyMWZhYWY1NzBhYjFmZGJlNTY4MDE2ZjI5ZDM5NC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViVUlDbGllbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDU5ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViVUlD
bGllbnQuaCIKLQotI2luY2x1ZGUgIkFQSU51bWJlci5oIgotI2luY2x1ZGUgIkltbXV0YWJsZURp
Y3Rpb25hcnkuaCIKLSNpbmNsdWRlICJOYXRpdmVXZWJLZXlib2FyZEV2ZW50LmgiCi0jaW5jbHVk
ZSAiTmF0aXZlV2ViV2hlZWxFdmVudC5oIgotI2luY2x1ZGUgIk5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0LmgiCi0jaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24uaCIKLSNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKLSNpbmNsdWRlICJXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVyUHJveHku
aCIKLSNpbmNsdWRlICJXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5LmgiCi0jaW5jbHVk
ZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KLSNpbmNs
dWRlIDxXZWJDb3JlL0ludFNpemUuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1dpbmRvd0ZlYXR1cmVz
Lmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotUGFz
c1JlZlB0cjxXZWJQYWdlUHJveHk+IFdlYlVJQ2xpZW50OjpjcmVhdGVOZXdQYWdlKFdlYlBhZ2VQ
cm94eSogcGFnZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGNvbnN0
IFdpbmRvd0ZlYXR1cmVzJiB3aW5kb3dGZWF0dXJlcywgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2Rp
ZmllcnMsIFdlYk1vdXNlRXZlbnQ6OkJ1dHRvbiBidXR0b24pCi17Ci0gICAgaWYgKCFtX2NsaWVu
dC5iYXNlLnZlcnNpb24gJiYgIW1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVz
ZVdpdGhWMCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgaWYgKG1fY2xpZW50LmJhc2Uu
dmVyc2lvbiA+IDAgJiYgIW1fY2xpZW50LmNyZWF0ZU5ld1BhZ2UpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgSW1tdXRhYmxlRGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7Ci0gICAgaWYgKHdpbmRv
d0ZlYXR1cmVzLnhTZXQpCi0gICAgICAgIG1hcC5zZXQoIngiLCBBUEk6OkRvdWJsZTo6Y3JlYXRl
KHdpbmRvd0ZlYXR1cmVzLngpKTsKLSAgICBpZiAod2luZG93RmVhdHVyZXMueVNldCkKLSAgICAg
ICAgbWFwLnNldCgieSIsIEFQSTo6RG91YmxlOjpjcmVhdGUod2luZG93RmVhdHVyZXMueSkpOwot
ICAgIGlmICh3aW5kb3dGZWF0dXJlcy53aWR0aFNldCkKLSAgICAgICAgbWFwLnNldCgid2lkdGgi
LCBBUEk6OkRvdWJsZTo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLndpZHRoKSk7Ci0gICAgaWYgKHdp
bmRvd0ZlYXR1cmVzLmhlaWdodFNldCkKLSAgICAgICAgbWFwLnNldCgiaGVpZ2h0IiwgQVBJOjpE
b3VibGU6OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5oZWlnaHQpKTsKLSAgICBtYXAuc2V0KCJtZW51
QmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLm1lbnVCYXJW
aXNpYmxlKSk7Ci0gICAgbWFwLnNldCgic3RhdHVzQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6
Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnN0YXR1c0JhclZpc2libGUpKTsKLSAgICBtYXAuc2V0KCJ0
b29sQmFyVmlzaWJsZSIsIEFQSTo6Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnRvb2xC
YXJWaXNpYmxlKSk7Ci0gICAgbWFwLnNldCgibG9jYXRpb25CYXJWaXNpYmxlIiwgQVBJOjpCb29s
ZWFuOjpjcmVhdGUod2luZG93RmVhdHVyZXMubG9jYXRpb25CYXJWaXNpYmxlKSk7Ci0gICAgbWFw
LnNldCgic2Nyb2xsYmFyc1Zpc2libGUiLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0
dXJlcy5zY3JvbGxiYXJzVmlzaWJsZSkpOwotICAgIG1hcC5zZXQoInJlc2l6YWJsZSIsIEFQSTo6
Qm9vbGVhbjo6Y3JlYXRlKHdpbmRvd0ZlYXR1cmVzLnJlc2l6YWJsZSkpOwotICAgIG1hcC5zZXQo
ImZ1bGxzY3JlZW4iLCBBUEk6OkJvb2xlYW46OmNyZWF0ZSh3aW5kb3dGZWF0dXJlcy5mdWxsc2Ny
ZWVuKSk7Ci0gICAgbWFwLnNldCgiZGlhbG9nIiwgQVBJOjpCb29sZWFuOjpjcmVhdGUod2luZG93
RmVhdHVyZXMuZGlhbG9nKSk7Ci0gICAgUmVmUHRyPEltbXV0YWJsZURpY3Rpb25hcnk+IGZlYXR1
cmVzTWFwID0gSW1tdXRhYmxlRGljdGlvbmFyeTo6Y3JlYXRlKHN0ZDo6bW92ZShtYXApKTsKLQot
ICAgIGlmICghbV9jbGllbnQuYmFzZS52ZXJzaW9uKQotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
dG9JbXBsKG1fY2xpZW50LmNyZWF0ZU5ld1BhZ2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQ
SShwYWdlKSwgdG9BUEkoZmVhdHVyZXNNYXAuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQ
SShidXR0b24pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKSk7Ci0KLSAgICBSZWZQdHI8QVBJ
OjpVUkxSZXF1ZXN0PiByZXF1ZXN0ID0gQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVzb3VyY2VS
ZXF1ZXN0KTsgICAgCi0gICAgcmV0dXJuIGFkb3B0UmVmKHRvSW1wbChtX2NsaWVudC5jcmVhdGVO
ZXdQYWdlKHRvQVBJKHBhZ2UpLCB0b0FQSShyZXF1ZXN0LmdldCgpKSwgdG9BUEkoZmVhdHVyZXNN
YXAuZ2V0KCkpLCB0b0FQSShtb2RpZmllcnMpLCB0b0FQSShidXR0b24pLCBtX2NsaWVudC5iYXNl
LmNsaWVudEluZm8pKSk7Ci19IAotCi12b2lkIFdlYlVJQ2xpZW50OjpzaG93UGFnZShXZWJQYWdl
UHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5zaG93UGFnZSkKLSAgICAgICAgcmV0
dXJuOwotICAgIAotICAgIG1fY2xpZW50LnNob3dQYWdlKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYlVJQ2xpZW50OjpjbG9zZShXZWJQYWdlUHJv
eHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5jbG9zZSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIAotICAgIG1fY2xpZW50LmNsb3NlKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotfQotCi12b2lkIFdlYlVJQ2xpZW50Ojp0YWtlRm9jdXMoV2ViUGFnZVByb3h5KiBw
YWdlLCBXS0ZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBpZiAoIW1fY2xpZW50LnRh
a2VGb2N1cykKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fY2xpZW50LnRha2VGb2N1cyh0
b0FQSShwYWdlKSwgZGlyZWN0aW9uLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12
b2lkIFdlYlVJQ2xpZW50Ojpmb2N1cyhXZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFt
X2NsaWVudC5mb2N1cykKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIG1fY2xpZW50LmZvY3Vz
KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYlVJ
Q2xpZW50Ojp1bmZvY3VzKFdlYlBhZ2VQcm94eSogcGFnZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50
LnVuZm9jdXMpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LnVuZm9jdXModG9BUEko
cGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViVUlDbGllbnQ6
OnJ1bkphdmFTY3JpcHRBbGVydChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5ydW5KYXZh
U2NyaXB0QWxlcnQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2NsaWVudC5ydW5KYXZh
U2NyaXB0QWxlcnQodG9BUEkocGFnZSksIHRvQVBJKG1lc3NhZ2UuaW1wbCgpKSwgdG9BUEkoZnJh
bWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi1ib29sIFdlYlVJQ2xpZW50Ojpy
dW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5ydW5KYXZh
U2NyaXB0Q29uZmlybSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIG1fY2xp
ZW50LnJ1bkphdmFTY3JpcHRDb25maXJtKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwo
KSksIHRvQVBJKGZyYW1lKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotU3RyaW5n
IFdlYlVJQ2xpZW50OjpydW5KYXZhU2NyaXB0UHJvbXB0KFdlYlBhZ2VQcm94eSogcGFnZSwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSwgV2ViRnJhbWVQ
cm94eSogZnJhbWUpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5ydW5KYXZhU2NyaXB0UHJvbXB0KQot
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBBUEk6OlN0cmluZyogc3RyaW5nID0gdG9J
bXBsKG1fY2xpZW50LnJ1bkphdmFTY3JpcHRQcm9tcHQodG9BUEkocGFnZSksIHRvQVBJKG1lc3Nh
Z2UuaW1wbCgpKSwgdG9BUEkoZGVmYXVsdFZhbHVlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci0gICAgaWYgKCFzdHJpbmcpCi0gICAgICAgIHJldHVy
biBTdHJpbmcoKTsKLQotICAgIFN0cmluZyByZXN1bHQgPSBzdHJpbmctPnN0cmluZygpOwotICAg
IHN0cmluZy0+ZGVyZWYoKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXZvaWQgV2ViVUlD
bGllbnQ6OnNldFN0YXR1c1RleHQoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHRl
eHQpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5zZXRTdGF0dXNUZXh0KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBtX2NsaWVudC5zZXRTdGF0dXNUZXh0KHRvQVBJKHBhZ2UpLCB0b0FQSSh0ZXh0Lmlt
cGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViVUlDbGllbnQ6
Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgV2ViSGl0
VGVzdFJlc3VsdDo6RGF0YSYgZGF0YSwgV2ViRXZlbnQ6Ok1vZGlmaWVycyBtb2RpZmllcnMsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkKLXsKLSAgICBpZiAoIW1fY2xpZW50Lm1vdXNlRGlkTW92ZU92
ZXJFbGVtZW50ICYmICFtX2NsaWVudC5tb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9jbGllbnQuYmFzZS52
ZXJzaW9uID4gMCAmJiAhbV9jbGllbnQubW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQpCi0gICAgICAg
IHJldHVybjsKLQotICAgIGlmICghbV9jbGllbnQuYmFzZS52ZXJzaW9uKSB7Ci0gICAgICAgIG1f
Y2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAodG9B
UEkocGFnZSksIHRvQVBJKG1vZGlmaWVycyksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxXZWJI
aXRUZXN0UmVzdWx0PiB3ZWJIaXRUZXN0UmVzdWx0ID0gV2ViSGl0VGVzdFJlc3VsdDo6Y3JlYXRl
KGRhdGEpOwotICAgIG1fY2xpZW50Lm1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KHRvQVBJKHBhZ2Up
LCB0b0FQSSh3ZWJIaXRUZXN0UmVzdWx0LmdldCgpKSwgdG9BUEkobW9kaWZpZXJzKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi0jaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCi12b2lkIFdlYlVJQ2xpZW50Ojp1bmF2YWlsYWJsZVBsdWdpbkJ1
dHRvbkNsaWNrZWQoV2ViUGFnZVByb3h5KiBwYWdlLCBXS1BsdWdpblVuYXZhaWxhYmlsaXR5UmVh
c29uIHBsdWdpblVuYXZhaWxhYmlsaXR5UmVhc29uLCBJbW11dGFibGVEaWN0aW9uYXJ5KiBwbHVn
aW5JbmZvcm1hdGlvbikKLXsKLSAgICBpZiAocGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb24gPT0g
a1dLUGx1Z2luVW5hdmFpbGFiaWxpdHlSZWFzb25QbHVnaW5NaXNzaW5nKSB7Ci0gICAgICAgIGlm
IChtX2NsaWVudC5taXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0
aFYwKQotICAgICAgICAgICAgbV9jbGllbnQubWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNrZWRfZGVw
cmVjYXRlZEZvclVzZVdpdGhWMCgKLSAgICAgICAgICAgICAgICB0b0FQSShwYWdlKSwKLSAgICAg
ICAgICAgICAgICB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PEFQSTo6U3RyaW5nPihwbHVn
aW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwKLSAgICAgICAgICAgICAgICB0b0FQSShwbHVn
aW5JbmZvcm1hdGlvbi0+Z2V0PEFQSTo6U3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVS
TEtleSgpKSksCi0gICAgICAgICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxB
UEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgp
KSksCi0gICAgICAgICAgICAgICAgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICB9Ci0K
LSAgICBpZiAobV9jbGllbnQudW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjEpCi0gICAgICAgIG1fY2xpZW50LnVuYXZhaWxhYmxlUGx1Z2luQnV0dG9u
Q2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKAotICAgICAgICAgICAgdG9BUEkocGFnZSks
Ci0gICAgICAgICAgICBwbHVnaW5VbmF2YWlsYWJpbGl0eVJlYXNvbiwKLSAgICAgICAgICAgIHRv
QVBJKHBsdWdpbkluZm9ybWF0aW9uLT5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9u
TUlNRVR5cGVLZXkoKSkpLAotICAgICAgICAgICAgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdl
dDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKSkpLAotICAgICAg
ICAgICAgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxBUEk6OlN0cmluZz4ocGx1Z2luSW5m
b3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpKSksCi0gICAgICAgICAgICBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwotCi0gICAgaWYgKG1fY2xpZW50LnVuYXZhaWxhYmxlUGx1
Z2luQnV0dG9uQ2xpY2tlZCkKLSAgICAgICAgbV9jbGllbnQudW5hdmFpbGFibGVQbHVnaW5CdXR0
b25DbGlja2VkKAotICAgICAgICAgICAgdG9BUEkocGFnZSksCi0gICAgICAgICAgICBwbHVnaW5V
bmF2YWlsYWJpbGl0eVJlYXNvbiwKLSAgICAgICAgICAgIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9u
KSwKLSAgICAgICAgICAgIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0jZW5kaWYgLy8g
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0KLWJvb2wgV2ViVUlDbGllbnQ6OmltcGxlbWVu
dHNEaWROb3RIYW5kbGVLZXlFdmVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50LmRp
ZE5vdEhhbmRsZUtleUV2ZW50OwotfQotCi12b2lkIFdlYlVJQ2xpZW50OjpkaWROb3RIYW5kbGVL
ZXlFdmVudChXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQm
IGV2ZW50KQotewotICAgIGlmICghbV9jbGllbnQuZGlkTm90SGFuZGxlS2V5RXZlbnQpCi0gICAg
ICAgIHJldHVybjsKLSAgICBtX2NsaWVudC5kaWROb3RIYW5kbGVLZXlFdmVudCh0b0FQSShwYWdl
KSwgZXZlbnQubmF0aXZlRXZlbnQoKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQot
Ym9vbCBXZWJVSUNsaWVudDo6aW1wbGVtZW50c0RpZE5vdEhhbmRsZVdoZWVsRXZlbnQoKSBjb25z
dAotewotICAgIHJldHVybiBtX2NsaWVudC5kaWROb3RIYW5kbGVXaGVlbEV2ZW50OwotfQotCi12
b2lkIFdlYlVJQ2xpZW50OjpkaWROb3RIYW5kbGVXaGVlbEV2ZW50KFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYgZXZlbnQpCi17Ci0gICAgaWYgKCFtX2NsaWVu
dC5kaWROb3RIYW5kbGVXaGVlbEV2ZW50KQotICAgICAgICByZXR1cm47Ci0gICAgbV9jbGllbnQu
ZGlkTm90SGFuZGxlV2hlZWxFdmVudCh0b0FQSShwYWdlKSwgZXZlbnQubmF0aXZlRXZlbnQoKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotYm9vbCBXZWJVSUNsaWVudDo6dG9vbGJh
cnNBcmVWaXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnRv
b2xiYXJzQXJlVmlzaWJsZSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIG1fY2xp
ZW50LnRvb2xiYXJzQXJlVmlzaWJsZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLQotfQotdm9pZCBXZWJVSUNsaWVudDo6c2V0VG9vbGJhcnNBcmVWaXNpYmxlKFdlYlBh
Z2VQcm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKQotewotICAgIGlmICghbV9jbGllbnQuc2V0VG9v
bGJhcnNBcmVWaXNpYmxlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9jbGllbnQuc2V0VG9vbGJh
cnNBcmVWaXNpYmxlKHRvQVBJKHBhZ2UpLCB2aXNpYmxlLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwotfQotCi1ib29sIFdlYlVJQ2xpZW50OjptZW51QmFySXNWaXNpYmxlKFdlYlBhZ2VQcm94
eSogcGFnZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50Lm1lbnVCYXJJc1Zpc2libGUpCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX2NsaWVudC5tZW51QmFySXNWaXNpYmxlKHRvQVBJ
KHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYlVJQ2xpZW50
OjpzZXRNZW51QmFySXNWaXNpYmxlKFdlYlBhZ2VQcm94eSogcGFnZSwgYm9vbCB2aXNpYmxlKQot
ewotICAgIGlmICghbV9jbGllbnQuc2V0TWVudUJhcklzVmlzaWJsZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIG1fY2xpZW50LnNldE1lbnVCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIHZpc2libGUs
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLWJvb2wgV2ViVUlDbGllbnQ6OnN0YXR1
c0JhcklzVmlzaWJsZShXZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5z
dGF0dXNCYXJJc1Zpc2libGUpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBtX2Ns
aWVudC5zdGF0dXNCYXJJc1Zpc2libGUodG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50
SW5mbyk7Ci19Ci0KLXZvaWQgV2ViVUlDbGllbnQ6OnNldFN0YXR1c0JhcklzVmlzaWJsZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIGJvb2wgdmlzaWJsZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnNldFN0
YXR1c0JhcklzVmlzaWJsZSkKLSAgICAgICAgcmV0dXJuOwotICAgIG1fY2xpZW50LnNldFN0YXR1
c0JhcklzVmlzaWJsZSh0b0FQSShwYWdlKSwgdmlzaWJsZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLX0KLQotYm9vbCBXZWJVSUNsaWVudDo6aXNSZXNpemFibGUoV2ViUGFnZVByb3h5KiBw
YWdlKQotewotICAgIGlmICghbV9jbGllbnQuaXNSZXNpemFibGUpCi0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIHJldHVybiBtX2NsaWVudC5pc1Jlc2l6YWJsZSh0b0FQSShwYWdlKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJVSUNsaWVudDo6c2V0SXNSZXNpemFi
bGUoV2ViUGFnZVByb3h5KiBwYWdlLCBib29sIHJlc2l6YWJsZSkKLXsKLSAgICBpZiAoIW1fY2xp
ZW50LnNldElzUmVzaXphYmxlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9jbGllbnQuc2V0SXNS
ZXNpemFibGUodG9BUEkocGFnZSksIHJlc2l6YWJsZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZv
KTsKLX0KLQotdm9pZCBXZWJVSUNsaWVudDo6c2V0V2luZG93RnJhbWUoV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBGbG9hdFJlY3QmIGZyYW1lKQotewotICAgIGlmICghbV9jbGllbnQuc2V0V2lu
ZG93RnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LnNldFdpbmRvd0ZyYW1l
KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19
Ci0KLUZsb2F0UmVjdCBXZWJVSUNsaWVudDo6d2luZG93RnJhbWUoV2ViUGFnZVByb3h5KiBwYWdl
KQotewotICAgIGlmICghbV9jbGllbnQuZ2V0V2luZG93RnJhbWUpCi0gICAgICAgIHJldHVybiBG
bG9hdFJlY3QoKTsKLQotICAgIHJldHVybiB0b0Zsb2F0UmVjdChtX2NsaWVudC5nZXRXaW5kb3dG
cmFtZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7Ci19Ci0KLWJvb2wg
V2ViVUlDbGllbnQ6OmNhblJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbDsKLX0KLQotYm9v
bCBXZWJVSUNsaWVudDo6cnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsKFdlYlBhZ2VQcm94eSog
cGFnZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSkKLXsKLSAg
ICBpZiAoIW1fY2xpZW50LnJ1bkJlZm9yZVVubG9hZENvbmZpcm1QYW5lbCkKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICByZXR1cm4gbV9jbGllbnQucnVuQmVmb3JlVW5sb2FkQ29uZmlybVBh
bmVsKHRvQVBJKHBhZ2UpLCB0b0FQSShtZXNzYWdlLmltcGwoKSksIHRvQVBJKGZyYW1lKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJVSUNsaWVudDo6ZGlkRHJhdyhX
ZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5kaWREcmF3KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBtX2NsaWVudC5kaWREcmF3KHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYlVJQ2xpZW50OjpwYWdlRGlkU2Nyb2xsKFdl
YlBhZ2VQcm94eSogcGFnZSkKLXsKLSAgICBpZiAoIW1fY2xpZW50LnBhZ2VEaWRTY3JvbGwpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LnBhZ2VEaWRTY3JvbGwodG9BUEkocGFnZSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXVuc2lnbmVkIGxvbmcgbG9uZyBXZWJV
SUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJh
bWVQcm94eSogZnJhbWUsIFdlYlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFN0cmluZyYg
ZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlRGlzcGxheU5hbWUsIHVuc2lnbmVk
IGxvbmcgbG9uZyBjdXJyZW50UXVvdGEsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdW5zaWduZWQg
bG9uZyBsb25nIGV4cGVjdGVkVXNhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5leGNlZWRlZERh
dGFiYXNlUXVvdGEpCi0gICAgICAgIHJldHVybiBjdXJyZW50UXVvdGE7Ci0KLSAgICByZXR1cm4g
bV9jbGllbnQuZXhjZWVkZWREYXRhYmFzZVF1b3RhKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSks
IHRvQVBJKG9yaWdpbiksIHRvQVBJKGRhdGFiYXNlTmFtZS5pbXBsKCkpLCB0b0FQSShkYXRhYmFz
ZURpc3BsYXlOYW1lLmltcGwoKSksIGN1cnJlbnRRdW90YSwgY3VycmVudE9yaWdpblVzYWdlLCBj
dXJyZW50RGF0YWJhc2VVc2FnZSwgZXhwZWN0ZWRVc2FnZSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKLX0KLQotYm9vbCBXZWJVSUNsaWVudDo6cnVuT3BlblBhbmVsKFdlYlBhZ2VQcm94eSog
cGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYk9wZW5QYW5lbFBhcmFtZXRlcnMqIHBhcmFt
ZXRlcnMsIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqIGxpc3RlbmVyKQotewotICAg
IGlmICghbV9jbGllbnQucnVuT3BlblBhbmVsKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBtX2NsaWVudC5ydW5PcGVuUGFuZWwodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEko
cGFyYW1ldGVycyksIHRvQVBJKGxpc3RlbmVyKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
LSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBXZWJVSUNsaWVudDo6ZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1l
UHJveHkqIGZyYW1lLCBXZWJTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJveHkqIHBlcm1pc3Npb25SZXF1ZXN0KQotewotICAgIGlmICghbV9jbGll
bnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdCh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShvcmlnaW4p
LCB0b0FQSShwZXJtaXNzaW9uUmVxdWVzdCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci0g
ICAgcmV0dXJuIHRydWU7Ci19Ci0KLWJvb2wgV2ViVUlDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViU2VjdXJp
dHlPcmlnaW4qIG9yaWdpbiwgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3QqIHBlcm1pc3Np
b25SZXF1ZXN0KQotewotICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3QpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdCh0b0FQ
SShwYWdlKSwgdG9BUEkob3JpZ2luKSwgdG9BUEkocGVybWlzc2lvblJlcXVlc3QpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwotICAgIHJldHVybiB0cnVlOwotfQotCi1mbG9hdCBXZWJVSUNs
aWVudDo6aGVhZGVySGVpZ2h0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJh
bWUpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5oZWFkZXJIZWlnaHQpCi0gICAgICAgIHJldHVybiAw
OwotCi0gICAgcmV0dXJuIG1fY2xpZW50LmhlYWRlckhlaWdodCh0b0FQSShwYWdlKSwgdG9BUEko
ZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi1mbG9hdCBXZWJVSUNsaWVu
dDo6Zm9vdGVySGVpZ2h0KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUp
Ci17Ci0gICAgaWYgKCFtX2NsaWVudC5mb290ZXJIZWlnaHQpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgcmV0dXJuIG1fY2xpZW50LmZvb3RlckhlaWdodCh0b0FQSShwYWdlKSwgdG9BUEkoZnJh
bWUpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwotfQotCi12b2lkIFdlYlVJQ2xpZW50Ojpk
cmF3SGVhZGVyKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYgcmVjdCkKLXsKLSAgICBpZiAoIW1fY2xpZW50LmRyYXdIZWFk
ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fY2xpZW50LmRyYXdIZWFkZXIodG9BUEkocGFn
ZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkocmVjdCksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
Ci19Ci0KLXZvaWQgV2ViVUlDbGllbnQ6OmRyYXdGb290ZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBX
ZWJGcmFtZVByb3h5KiBmcmFtZSwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiByZWN0KQotewot
ICAgIGlmICghbV9jbGllbnQuZHJhd0Zvb3RlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9j
bGllbnQuZHJhd0Zvb3Rlcih0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShyZWN0KSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotdm9pZCBXZWJVSUNsaWVudDo6cHJpbnRG
cmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lKQotewotICAgIGlm
ICghbV9jbGllbnQucHJpbnRGcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQu
cHJpbnRGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwotfQotCi1ib29sIFdlYlVJQ2xpZW50OjpjYW5SdW5Nb2RhbCgpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fY2xpZW50LnJ1bk1vZGFsOwotfQotCi12b2lkIFdlYlVJQ2xpZW50OjpydW5N
b2RhbChXZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5ydW5Nb2RhbCkK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9jbGllbnQucnVuTW9kYWwodG9BUEkocGFnZSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Ci19Ci0KLXZvaWQgV2ViVUlDbGllbnQ6OnNhdmVEYXRh
VG9GaWxlSW5Eb3dubG9hZHNGb2xkZXIoV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmF0aW5nVVJMU3RyaW5nLCBBUEk6OkRhdGEqIGRhdGEpCi17Ci0gICAgaWYgKCFtX2Ns
aWVudC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX2NsaWVudC5zYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVyKHRvQVBJKHBhZ2Up
LCB0b0FQSShzdWdnZXN0ZWRGaWxlbmFtZS5pbXBsKCkpLCB0b0FQSShtaW1lVHlwZS5pbXBsKCkp
LCB0b1VSTFJlZihvcmlnaW5hdGluZ1VSTFN0cmluZy5pbXBsKCkpLCB0b0FQSShkYXRhKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotYm9vbCBXZWJVSUNsaWVudDo6c2hvdWxkSW50
ZXJydXB0SmF2YVNjcmlwdChXZWJQYWdlUHJveHkqIHBhZ2UpCi17Ci0gICAgaWYgKCFtX2NsaWVu
dC5zaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICByZXR1cm4gbV9jbGllbnQuc2hvdWxkSW50ZXJydXB0SmF2YVNjcmlwdCh0b0FQSShwYWdlKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLX0KLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQotYm9vbCBXZWJVSUNsaWVudDo6c2hvd0NvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFn
ZSwgY29uc3QgU3RyaW5nJiBpbml0aWFsQ29sb3IsIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVu
ZXJQcm94eSogbGlzdGVuZXIpCi17Ci0gICAgaWYgKCFtX2NsaWVudC5zaG93Q29sb3JQaWNrZXIp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIG1fY2xpZW50LnNob3dDb2xvclBpY2tlcih0
b0FQSShwYWdlKSwgdG9BUEkoaW5pdGlhbENvbG9yLmltcGwoKSksIHRvQVBJKGxpc3RlbmVyKSwg
bV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBX
ZWJVSUNsaWVudDo6aGlkZUNvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSogcGFnZSkKLXsKLSAgICBp
ZiAoIW1fY2xpZW50LmhpZGVDb2xvclBpY2tlcikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgbV9jbGllbnQuaGlkZUNvbG9yUGlja2VyKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwotICAgIHJldHVybiB0cnVlOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlVJQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMjdjNmJkZTQ5MDMxZmEwYjVjOTk5ZDg5Nzg2YTIzZTM1YWZkNDk5
Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViVUlDbGllbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNyAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBXZWJVSUNsaWVudF9oCi0jZGVmaW5l
IFdlYlVJQ2xpZW50X2gKLQotI2luY2x1ZGUgIkFQSUNsaWVudC5oIgotI2luY2x1ZGUgIldLUGFn
ZS5oIgotI2luY2x1ZGUgIldlYkV2ZW50LmgiCi0jaW5jbHVkZSAiV2ViSGl0VGVzdFJlc3VsdC5o
IgotI2luY2x1ZGUgIldlYk9wZW5QYW5lbFBhcmFtZXRlcnMuaCIKLSNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBBUEkgewot
Y2xhc3MgRGF0YTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgQ2xpZW50VHJhaXRzPFdLUGFnZVVJQ2xp
ZW50QmFzZT4gewotICAgIHR5cGVkZWYgc3RkOjp0dXBsZTxXS1BhZ2VVSUNsaWVudFYwLCBXS1Bh
Z2VVSUNsaWVudFYxLCBXS1BhZ2VVSUNsaWVudFYyPiBWZXJzaW9uczsKLX07Ci19Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBGbG9hdFJlY3Q7Ci0gICAgY2xhc3MgSW50U2l6ZTsK
LSAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7Ci0gICAgc3RydWN0IFdpbmRvd0ZlYXR1cmVzOwot
fQotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotY2xhc3MgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5OwotY2xhc3MgSW1tdXRhYmxlRGljdGlvbmFyeTsKLWNsYXNzIE5hdGl2ZVdlYktl
eWJvYXJkRXZlbnQ7Ci1jbGFzcyBOYXRpdmVXZWJXaGVlbEV2ZW50OwotY2xhc3MgTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3Q7Ci1jbGFzcyBXZWJDb2xvclBpY2tlclJlc3VsdExpc3RlbmVy
UHJveHk7Ci1jbGFzcyBXZWJGcmFtZVByb3h5OwotY2xhc3MgV2ViUGFnZVByb3h5OwotY2xhc3Mg
V2ViU2VjdXJpdHlPcmlnaW47Ci1jbGFzcyBXZWJPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclByb3h5
OwotCi1jbGFzcyBXZWJVSUNsaWVudCA6IHB1YmxpYyBBUEk6OkNsaWVudDxXS1BhZ2VVSUNsaWVu
dEJhc2U+IHsKLXB1YmxpYzoKLSAgICBQYXNzUmVmUHRyPFdlYlBhZ2VQcm94eT4gY3JlYXRlTmV3
UGFnZShXZWJQYWdlUHJveHkqLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25z
dCBXZWJDb3JlOjpXaW5kb3dGZWF0dXJlcyYsIFdlYkV2ZW50OjpNb2RpZmllcnMsIFdlYk1vdXNl
RXZlbnQ6OkJ1dHRvbik7Ci0gICAgdm9pZCBzaG93UGFnZShXZWJQYWdlUHJveHkqKTsKLSAgICB2
b2lkIGNsb3NlKFdlYlBhZ2VQcm94eSopOwotCi0gICAgdm9pZCB0YWtlRm9jdXMoV2ViUGFnZVBy
b3h5KiwgV0tGb2N1c0RpcmVjdGlvbik7Ci0gICAgdm9pZCBmb2N1cyhXZWJQYWdlUHJveHkqKTsK
LSAgICB2b2lkIHVuZm9jdXMoV2ViUGFnZVByb3h5Kik7Ci0KLSAgICB2b2lkIHJ1bkphdmFTY3Jp
cHRBbGVydChXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmLCBXZWJGcmFtZVByb3h5Kik7Ci0g
ICAgYm9vbCBydW5KYXZhU2NyaXB0Q29uZmlybShXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcm
LCBXZWJGcmFtZVByb3h5Kik7Ci0gICAgU3RyaW5nIHJ1bkphdmFTY3JpcHRQcm9tcHQoV2ViUGFn
ZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViRnJhbWVQcm94eSopOwot
Ci0gICAgdm9pZCBzZXRTdGF0dXNUZXh0KFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmluZyYpOwot
ICAgIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQoV2ViUGFnZVByb3h5KiwgY29uc3QgV2Vi
SGl0VGVzdFJlc3VsdDo6RGF0YSYsIFdlYkV2ZW50OjpNb2RpZmllcnMsIEFQSTo6T2JqZWN0Kik7
Ci0jaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgdm9pZCB1bmF2YWlsYWJsZVBs
dWdpbkJ1dHRvbkNsaWNrZWQoV2ViUGFnZVByb3h5KiwgV0tQbHVnaW5VbmF2YWlsYWJpbGl0eVJl
YXNvbiwgSW1tdXRhYmxlRGljdGlvbmFyeSopOwotI2VuZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQotCi0gICAgYm9vbCBpbXBsZW1lbnRzRGlkTm90SGFuZGxlS2V5RXZlbnQoKSBj
b25zdDsKLSAgICB2b2lkIGRpZE5vdEhhbmRsZUtleUV2ZW50KFdlYlBhZ2VQcm94eSosIGNvbnN0
IE5hdGl2ZVdlYktleWJvYXJkRXZlbnQmKTsKLQotICAgIGJvb2wgaW1wbGVtZW50c0RpZE5vdEhh
bmRsZVdoZWVsRXZlbnQoKSBjb25zdDsKLSAgICB2b2lkIGRpZE5vdEhhbmRsZVdoZWVsRXZlbnQo
V2ViUGFnZVByb3h5KiwgY29uc3QgTmF0aXZlV2ViV2hlZWxFdmVudCYpOwotCi0gICAgYm9vbCB0
b29sYmFyc0FyZVZpc2libGUoV2ViUGFnZVByb3h5Kik7Ci0gICAgdm9pZCBzZXRUb29sYmFyc0Fy
ZVZpc2libGUoV2ViUGFnZVByb3h5KiwgYm9vbCk7Ci0gICAgYm9vbCBtZW51QmFySXNWaXNpYmxl
KFdlYlBhZ2VQcm94eSopOwotICAgIHZvaWQgc2V0TWVudUJhcklzVmlzaWJsZShXZWJQYWdlUHJv
eHkqLCBib29sKTsKLSAgICBib29sIHN0YXR1c0JhcklzVmlzaWJsZShXZWJQYWdlUHJveHkqKTsK
LSAgICB2b2lkIHNldFN0YXR1c0JhcklzVmlzaWJsZShXZWJQYWdlUHJveHkqLCBib29sKTsKLSAg
ICBib29sIGlzUmVzaXphYmxlKFdlYlBhZ2VQcm94eSopOwotICAgIHZvaWQgc2V0SXNSZXNpemFi
bGUoV2ViUGFnZVByb3h5KiwgYm9vbCk7Ci0KLSAgICB2b2lkIHNldFdpbmRvd0ZyYW1lKFdlYlBh
Z2VQcm94eSosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwotICAgIFdlYkNvcmU6OkZsb2F0
UmVjdCB3aW5kb3dGcmFtZShXZWJQYWdlUHJveHkqKTsKLQotICAgIGJvb2wgY2FuUnVuQmVmb3Jl
VW5sb2FkQ29uZmlybVBhbmVsKCkgY29uc3Q7Ci0gICAgYm9vbCBydW5CZWZvcmVVbmxvYWRDb25m
aXJtUGFuZWwoV2ViUGFnZVByb3h5KiwgY29uc3QgU3RyaW5nJiwgV2ViRnJhbWVQcm94eSopOwot
Ci0gICAgdm9pZCBkaWREcmF3KFdlYlBhZ2VQcm94eSopOwotICAgIHZvaWQgcGFnZURpZFNjcm9s
bChXZWJQYWdlUHJveHkqKTsKLQotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBleGNlZWRlZERhdGFi
YXNlUXVvdGEoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSosIFdlYlNlY3VyaXR5T3JpZ2lu
KiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VEaXNw
bGF5TmFtZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnRRdW90YSwgdW5zaWduZWQgbG9uZyBs
b25nIGN1cnJlbnRPcmlnaW5Vc2FnZSwgdW5zaWduZWQgbG9uZyBsb25nIGN1cnJlbnREYXRhYmFz
ZVVzYWdlLCB1bnNpZ25lZCBsb25nIGxvbmcgZXhwZWN0ZWRVc2FnZSk7Ci0KLSAgICBib29sIHJ1
bk9wZW5QYW5lbChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgV2ViT3BlblBhbmVsUGFy
YW1ldGVycyosIFdlYk9wZW5QYW5lbFJlc3VsdExpc3RlbmVyUHJveHkqKTsKLSAgICBib29sIGRl
Y2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3QoV2ViUGFnZVByb3h5Kiwg
V2ViRnJhbWVQcm94eSosIFdlYlNlY3VyaXR5T3JpZ2luKiwgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5Kik7Ci0gICAgYm9vbCBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJt
aXNzaW9uUmVxdWVzdChXZWJQYWdlUHJveHkqLCBXZWJTZWN1cml0eU9yaWdpbiosIE5vdGlmaWNh
dGlvblBlcm1pc3Npb25SZXF1ZXN0Kik7Ci0KLSAgICAvLyBQcmludGluZy4KLSAgICBmbG9hdCBo
ZWFkZXJIZWlnaHQoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSopOwotICAgIGZsb2F0IGZv
b3RlckhlaWdodChXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kik7Ci0gICAgdm9pZCBkcmF3
SGVhZGVyKFdlYlBhZ2VQcm94eSosIFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJDb3JlOjpGbG9h
dFJlY3QmKTsKLSAgICB2b2lkIGRyYXdGb290ZXIoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94
eSosIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwotICAgIHZvaWQgcHJpbnRGcmFtZShXZWJQ
YWdlUHJveHkqLCBXZWJGcmFtZVByb3h5Kik7Ci0KLSAgICBib29sIGNhblJ1bk1vZGFsKCkgY29u
c3Q7Ci0gICAgdm9pZCBydW5Nb2RhbChXZWJQYWdlUHJveHkqKTsKLQotICAgIHZvaWQgc2F2ZURh
dGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRlcihXZWJQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZEZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmF0aW5nVVJMU3RyaW5nLCBBUEk6OkRhdGEqKTsKLQotICAgIGJvb2wgc2hvdWxkSW50ZXJy
dXB0SmF2YVNjcmlwdChXZWJQYWdlUHJveHkqKTsKLQotI2lmIEVOQUJMRShJTlBVVF9UWVBFX0NP
TE9SKQotICAgIGJvb2wgc2hvd0NvbG9yUGlja2VyKFdlYlBhZ2VQcm94eSosIGNvbnN0IFN0cmlu
ZyYsIFdlYkNvbG9yUGlja2VyUmVzdWx0TGlzdGVuZXJQcm94eSopOwotICAgIGJvb2wgaGlkZUNv
bG9yUGlja2VyKFdlYlBhZ2VQcm94eSopOwotI2VuZGlmCi19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKLQotI2VuZGlmIC8vIFdlYlVJQ2xpZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvV2ViSW5zcGVjdG9yUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1dlYkluc3BlY3RvclByb3h5TWFjLm1tCmluZGV4IDA4NTNhNTQxMzY3
YmE0ZTYxN2M0NTA5NTY2YzE2YmNkZjhkZWE5YjMuLmE2MzNhMWIxMmI5Y2NkY2Q4YjRhMGI5ZmZk
ZjRhYmY3NmIyZGQwZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMv
V2ViSW5zcGVjdG9yUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJJbnNwZWN0b3JQcm94eU1hYy5tbQpAQCAtNDQ5LDcgKzQ0OSw3IEBAIFdlYlBhZ2VQcm94
eSogV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQ3JlYXRlSW5zcGVjdG9yUGFnZSgpCiAgICAg
ICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAogICAgIH07CiAKLSAgICBp
bnNwZWN0b3JQYWdlLT5pbml0aWFsaXplVUlDbGllbnQocmVpbnRlcnByZXRfY2FzdDxjb25zdCBX
S1BhZ2VVSUNsaWVudEJhc2UqPigmdWlDbGllbnQpKTsKKyAgICBXS1BhZ2VTZXRQYWdlVUlDbGll
bnQodG9BUEkoaW5zcGVjdG9yUGFnZSksICZ1aUNsaWVudC5iYXNlKTsKIAogICAgIHJldHVybiBp
bnNwZWN0b3JQYWdlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCAyYzNlZGRkNzM2MmUzM2NjYzQ2MWZkODVhYjgxYTY1NzljOTZm
YzMxLi5mMjE5MWNkMzcwNmJhMmY3Y2I4ZDg1MGZhZGY2OWYyZTY4NjgxOTI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjYsNiAr
MjYsNyBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKIAor
I2ltcG9ydCAiQVBJVUlDbGllbnQuaCIKICNpbXBvcnQgIkF0dHJpYnV0ZWRTdHJpbmcuaCIKICNp
bXBvcnQgIkNvbG9yU3BhY2VEYXRhLmgiCiAjaW1wb3J0ICJEYXRhUmVmZXJlbmNlLmgiCkBAIC0x
MzMsNyArMTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OndpbmRvd0FuZFZpZXdGcmFtZXNDaGFu
Z2VkKGNvbnN0IEZsb2F0UmVjdCYgdmlld0ZyYW1lSW5XaW5kb3cKICAgICAgICAgcmV0dXJuOwog
CiAgICAgLy8gSW4gY2FzZSB0aGUgVUkgY2xpZW50IG92ZXJyaWRlcyBnZXRXaW5kb3dGcmFtZSgp
LCB3ZSBjYWxsIGl0IGhlcmUgdG8gbWFrZSBzdXJlIHdlIHNlbmQgdGhlIGFwcHJvcHJpYXRlIHdp
bmRvdyBmcmFtZS4KLSAgICBGbG9hdFJlY3Qgd2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5hdGVz
ID0gbV91aUNsaWVudC53aW5kb3dGcmFtZSh0aGlzKTsKKyAgICBGbG9hdFJlY3Qgd2luZG93RnJh
bWVJblNjcmVlbkNvb3JkaW5hdGVzID0gbV91aUNsaWVudC0+d2luZG93RnJhbWUodGhpcyk7CiAg
ICAgRmxvYXRSZWN0IHdpbmRvd0ZyYW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcyA9IG1f
cGFnZUNsaWVudC5jb252ZXJ0VG9Vc2VyU3BhY2Uod2luZG93RnJhbWVJblNjcmVlbkNvb3JkaW5h
dGVzKTsKIAogICAgIHByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpXaW5kb3dBbmRW
aWV3RnJhbWVzQ2hhbmdlZCh3aW5kb3dGcmFtZUluU2NyZWVuQ29vcmRpbmF0ZXMsIHdpbmRvd0Zy
YW1lSW5VbmZsaXBwZWRTY3JlZW5Db29yZGluYXRlcywgdmlld0ZyYW1lSW5XaW5kb3dDb29yZGlu
YXRlcywgYWNjZXNzaWJpbGl0eVZpZXdDb29yZGluYXRlcyksIG1fcGFnZUlEKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAyOGFm
ZDAxMmM0YzhhOGRlZDc1OTg1NzM0Nzk0NTE5NGFlN2ZlNDliLi5hMjQwMzhhNjNmNzE5NmIwNzk0
Yzk0ZTFlZDBmYWQ4ZWMyMmRlYmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdDIvV2ViS2l0Mi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzcsOSArMTc3LDggQEAKIAkJMUE0QTlDNTYx
MkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTRBOUM1NDEyQjgxNkNGMDA4RkU5ODQg
LyogTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCAqLzsgfTsKIAkJMUE0QTlDOUExMkI4MjFDRDAwOEZF
OTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0QTlDOTkxMkI4MjFDRDAwOEZFOTg0IC8qIE5ldHNj
YXBlUGx1Z2luTW9kdWxlTWFjLm1tICovOyB9OwogCQkxQTRBOUYzMzEyQjg0NEUyMDA4RkU5ODQg
LyogUGx1Z2luUXVpcmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAxQTRBOUYzMTEyQjg0NEUyMDA4RkU5ODQgLyogUGx1Z2luUXVpcmtzLmggKi87IH07
CisJCTFBNEQ2NjQ4MThBMkQ5MUEwMEQ4MkUyMSAvKiBBUElVSUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE0RDY2NDcxOEEyRDkxQTAwRDgy
RTIxIC8qIEFQSVVJQ2xpZW50LmggKi87IH07CiAJCTFBNTBEQjY2MTEwQTNENTcwMDBEM0ZFNSAv
KiBXZWJQcm9jZXNzLmFwcCBpbiBDb3B5IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDFBNTBEQjFFMTEwQTNCREMwMDBEM0ZFNSAvKiBXZWJQcm9jZXNzLmFwcCAqLzsg
fTsKLQkJMUE1OTRBQkExMTJBMUZCNjAwOURFN0M3IC8qIFdlYlVJQ2xpZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBNTk0QUI4MTEyQTFGQjYw
MDlERTdDNyAvKiBXZWJVSUNsaWVudC5jcHAgKi87IH07Ci0JCTFBNTk0QUJCMTEyQTFGQjYwMDlE
RTdDNyAvKiBXZWJVSUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMUE1OTRBQjkxMTJBMUZCNjAwOURFN0M3IC8qIFdlYlVJQ2xpZW50LmggKi87
IH07CiAJCTFBNUIxQzUwMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24ubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxQTVCMUM0RTE4OTg2MDZG
MDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLm1tICovOyB9OwogCQkxQTVCMUM1MTE4OTg2MDZGMDA0
RkNGOUIgLyogV0tOYXZpZ2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTVCMUM0RjE4OTg2MDZGMDA0RkNGOUIgLyogV0tOYXZpZ2F0aW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQkxQTVCMUM1
NDE4OTg3RURGMDA0RkNGOUIgLyogV2ViRG9jdW1lbnRMb2FkZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE1QjFDNTIxODk4N0VERjAwNEZDRjlC
IC8qIFdlYkRvY3VtZW50TG9hZGVyLmNwcCAqLzsgfTsKQEAgLTE4MjIsMTMgKzE4MjEsMTIgQEAK
IAkJMUE0QTlDNTQxMkI4MTZDRjAwOEZFOTg0IC8qIE5ldHNjYXBlUGx1Z2luTW9kdWxlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ldHNjYXBlUGx1Z2luTW9kdWxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNEE5Qzk5MTJCODIxQ0QwMDhGRTk4NCAvKiBO
ZXRzY2FwZVBsdWdpbk1vZHVsZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE5ldHNjYXBlUGx1Z2luTW9kdWxlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkxQTRBOUYzMTEyQjg0NEUyMDA4RkU5ODQgLyogUGx1Z2luUXVpcmtzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsdWdpblF1aXJrcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkxQTRENjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJVUlDbGll
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJVUlDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0Rjk3NkExMDBFN0I2NjAwNjM3QTE4IC8qIEJh
c2UueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gQmFzZS54Y2NvbmZp
Zzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0Rjk3NkIxMDBFN0I2NjAwNjM3QTE4
IC8qIERlYnVnUmVsZWFzZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBhdGgg
PSBEZWJ1Z1JlbGVhc2UueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFB
NEY5NzZDMTAwRTdCNjYwMDYzN0ExOCAvKiBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBGZWF0dXJlRGVmaW5lcy54Y2NvbmZpZzsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE0Rjk3NkUxMDBFN0I2NjAwNjM3QTE4IC8qIFZlcnNp
b24ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gVmVyc2lvbi54Y2Nv
bmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUE1MERCMUUxMTBBM0JEQzAwMEQz
RkU1IC8qIFdlYlByb2Nlc3MuYXBwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSB3cmFwcGVyLmFwcGxpY2F0aW9uOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBXZWJQcm9jZXNzLmFwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
LQkJMUE1OTRBQjgxMTJBMUZCNjAwOURFN0M3IC8qIFdlYlVJQ2xpZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYlVJQ2xpZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJMUE1OTRBQjkxMTJBMUZCNjAwOURFN0M3IC8qIFdlYlVJQ2xpZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlVJQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNUIxQzRFMTg5ODYwNkYwMDRGQ0Y5QiAvKiBXS05h
dmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS05h
dmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNUIxQzRGMTg5ODYw
NkYwMDRGQ0Y5QiAvKiBXS05hdmlnYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV0tOYXZpZ2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFBNUIx
QzUyMTg5ODdFREYwMDRGQ0Y5QiAvKiBXZWJEb2N1bWVudExvYWRlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJEb2N1bWVudExvYWRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01MDcyLDggKzUwNzAsNiBAQAogCQkJCTMzMzY3NjMyMTMw
Qzk5QjIwMDZDOURFMiAvKiBXZWJSZXNvdXJjZUNhY2hlTWFuYWdlclByb3h5LmNwcCAqLywKIAkJ
CQkzMzM2NzYzMzEzMEM5OUIyMDA2QzlERTIgLyogV2ViUmVzb3VyY2VDYWNoZU1hbmFnZXJQcm94
eS5oICovLAogCQkJCTMzMzY3NjM0MTMwQzk5QjIwMDZDOURFMiAvKiBXZWJSZXNvdXJjZUNhY2hl
TWFuYWdlclByb3h5Lm1lc3NhZ2VzLmluICovLAotCQkJCTFBNTk0QUI4MTEyQTFGQjYwMDlERTdD
NyAvKiBXZWJVSUNsaWVudC5jcHAgKi8sCi0JCQkJMUE1OTRBQjkxMTJBMUZCNjAwOURFN0M3IC8q
IFdlYlVJQ2xpZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IFVJUHJvY2VzczsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC01MDkwLDYgKzUwODYsNyBAQAogCQkJCUJDMTExQjQ3MTEy
RjYxNjkwMDMzN0JBQiAvKiBtYWMgKi8sCiAJCQkJMUEyNDY0RjIxODkxRTQ1MTAwMjM0QzVCIC8q
IEFQSUxvYWRlckNsaWVudC5oICovLAogCQkJCTFBRkREMzE0MTg5MUI1NDAwMDE1Mzk3MCAvKiBB
UElQb2xpY3lDbGllbnQuaCAqLywKKwkJCQkxQTRENjY0NzE4QTJEOTFBMDBEODJFMjEgLyogQVBJ
VUlDbGllbnQuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gQVBJOwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTY1MzgsNiArNjUzNSw3IEBACiAJCQkJQkMxQkUxRjIxMkQ1NERCRDAwMDRB
MjI4IC8qIFdlYkdlb2xvY2F0aW9uUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTc0
QUEzMTQyQTRDQjcwMDM5MjUwRiAvKiBBUElHZW9tZXRyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkNGNjlGODcxMTc2Q0Q2RjAwNDcxQTUyIC8qIFdlYkhpc3RvcnlDbGllbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTFBNEQ2NjQ4MThBMkQ5MUEwMEQ4MkUyMSAvKiBBUElVSUNsaWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNzgwMUMwOUExNDIyOTBDNDAwRkFGOUFGIC8qIFdlYkhpdFRlc3RSZXN1
bHQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUIyNEFCMTMyRTA5NzIwMDA2NUEwQyAvKiBXZWJJ
Y29uRGF0YWJhc2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODM0NTkzMTM0NTMyRTkwMDkyQjY5
NiAvKiBXZWJJY29uRGF0YWJhc2VDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNjYyOSw3ICs2
NjI3LDYgQEAKIAkJCQkxRkIwMEFDOTE4NUY3NjQ2MDAxOTE0MkUgLyogV0tXZWJQcm9jZXNzUGx1
Z0luUGFnZUdyb3VwSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUY2MzQ0NDU2MTJBODg1
QzgwMDA2MTJEOCAvKiBXZWJTZWN1cml0eU9yaWdpbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkND
NTcxNUIxMTVBREFFRjAwMUNDQUY5IC8qIFdlYlN5c3RlbUludGVyZmFjZS5oIGluIEhlYWRlcnMg
Ki8sCi0JCQkJMUE1OTRBQkIxMTJBMUZCNjAwOURFN0M3IC8qIFdlYlVJQ2xpZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0EwRUY3RjEyMzMxRTc4MDA3RDNDRkIgLyogV2ViVW5kb1N0ZXAuaCBp
biBIZWFkZXJzICovLAogCQkJCTFBQzEzMzZDMTg1NjVDN0EwMEYzRUMwNSAvKiBBUElQYWdlSGFu
ZGxlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQUI0NzRFODE4NEQ0NEQwMDA1MUI2MjIgLyogV0tC
dW5kbGVQYWdlRGlhZ25vc3RpY0xvZ2dpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtODAz
OCw3ICs4MDM1LDYgQEAKIAkJCQlEM0I5NDg0ODExRkY0QjY1MDAwMzJCMzkgLyogV2ViU2VhcmNo
UG9wdXBNZW51LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQzU3MTVDMTE1QURBRUYwMDFDQ0FG
OSAvKiBXZWJTeXN0ZW1JbnRlcmZhY2UubW0gaW4gU291cmNlcyAqLywKIAkJCQlDMDMzN0REODEy
N0E1MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVudC5jcHAgaW4gU291cmNlcyAqLywKLQkJCQkx
QTU5NEFCQTExMkExRkI2MDA5REU3QzcgLyogV2ViVUlDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkNBMEVGODAxMjMzMUU3ODAwN0QzQ0ZCIC8qIFdlYlVuZG9TdGVwLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTJEQTk0NEFGMTg4NEU5QkEwMEVEODZEQiAvKiBXZWJQYWdlUHJveHlJT1Mu
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQ0UyMzE1RTEyMkMzMENBMDBENUMzNUEgLyogQVBJVVJM
UmVxdWVzdC5jcHAgaW4gU291cmNlcyAqLywK
</data>
<flag name="review"
          id="247278"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>