<?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>127206</bug_id>
          
          <creation_ts>2014-01-17 17:05:17 -0800</creation_ts>
          <short_desc>Run clang-modernize and let it add a bunch of missing overrides in WebCore/inspector</short_desc>
          <delta_ts>2014-01-20 13:50:02 -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>WebCore Misc.</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="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>969327</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-17 17:05:17 -0800</bug_when>
    <thetext>Add missing overrides to WebCore/inspector with clang-modernize:

    shell&gt; clang-modernize -add-override -p compile_commands.json -include ./inspector -summary
    Parse: /Users/pecoraro/Code/webkit/Source/WebCore/inspector
    Transform: AddOverride - Accepted: 1488</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969328</commentid>
    <comment_count>1</comment_count>
      <attachid>221514</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-17 17:07:05 -0800</bug_when>
    <thetext>Created attachment 221514
[PATCH] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>969329</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-17 17:08:25 -0800</bug_when>
    <thetext>Attachment 221514 did not pass style-queue:


ERROR: Source/WebCore/inspector/InspectorRuntimeAgent.h:77:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/inspector/InspectorStyleSheet.h:276:  The parameter type should use PassRefPtr instead of RefPtr.  [readability/pass_ptr] [5]
ERROR: Source/WebCore/inspector/InspectorCSSAgent.h:116:  The parameter name &quot;pseudoIdMatches&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/inspector/InspectorDebuggerAgent.h:107:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 4 in 37 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>969995</commentid>
    <comment_count>3</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-20 13:50:02 -0800</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/changeset/162369&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>221514</attachid>
            <date>2014-01-17 17:07:05 -0800</date>
            <delta_ts>2014-01-17 18:50:37 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>override.patch</filename>
            <type>text/plain</type>
            <size>86833</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNDZiYjk2Li41MWZlMzhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTEg
QEAKKzIwMTQtMDEtMTcgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBSdW4gY2xhbmctbW9kZXJuaXplIGFuZCBsZXQgaXQgYWRkIGEgYnVuY2ggb2YgbWlz
c2luZyBvdmVycmlkZXMgaW4gV2ViQ29yZS9pbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzIwNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIExldCBjbGFuZy1tb2Rlcm5pemUgYWRkIG92ZXJy
aWRlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0b3IuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRh
YmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldEhlYXBTbmFwc2hvdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDo6dGFrZUhlYXBTbmFw
c2hvdCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
cklucHV0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcldvcmtl
ckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
UGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJDb25zb2xlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHA6CisgICAg
ICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaDoKKwogMjAxNC0wMS0xNiAgQW5kZXJzIENh
cmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJ1biBjbGFuZy1tb2Rlcm5p
emUgYW5kIGxldCBpdCBhZGQgYSBidW5jaCBvZiBtaXNzaW5nIG92ZXJyaWRlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKaW5kZXggNDViMjg5Zi4uMmFiMGRkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTU2LDE4ICs1NiwxOCBAQCBwdWJs
aWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNv
ZGUmIGVjKQorICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVy
cmlkZQogICAgIHsKICAgICAgICAgbV9hbmNob3JOb2RlID0gbV9ub2RlLT5uZXh0U2libGluZygp
OwogICAgICAgICByZXR1cm4gcmVkbyhlYyk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHVu
ZG8oRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgdmlydHVhbCBib29sIHVuZG8oRXhjZXB0aW9uQ29k
ZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9wYXJlbnROb2RlLT5pbnNl
cnRCZWZvcmUobV9ub2RlLmdldCgpLCBtX2FuY2hvck5vZGUuZ2V0KCksIGVjKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykKKyAgICB2aXJ0dWFsIGJv
b2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIHJldHVy
biBtX3BhcmVudE5vZGUtPnJlbW92ZUNoaWxkKG1fbm9kZS5nZXQoKSwgZWMpOwogICAgIH0KQEAg
LTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wg
cGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykKKyAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNl
cHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUtPnBhcmVu
dE5vZGUoKSkgewogICAgICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IGFkb3B0UHRyKG5l
dyBSZW1vdmVDaGlsZEFjdGlvbihtX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlLmdldCgpKSk7
CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fcGFyZW50Tm9kZS0+
aW5zZXJ0QmVmb3JlKG1fbm9kZS5nZXQoKSwgbV9hbmNob3JOb2RlLmdldCgpLCBlYyk7CiAgICAg
fQogCi0gICAgdmlydHVhbCBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgdmlydHVh
bCBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBp
ZiAoIW1fcGFyZW50Tm9kZS0+cmVtb3ZlQ2hpbGQobV9ub2RlLmdldCgpLCBlYykpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMDgsNyArMTA4LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVkbyhFeGNlcHRpb25Db2Rl
JiBlYykKKyAgICB2aXJ0dWFsIGJvb2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIGlmIChtX3JlbW92ZUNoaWxkQWN0aW9uICYmICFtX3JlbW92ZUNoaWxk
QWN0aW9uLT5yZWRvKGVjKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEzMiwxOSAr
MTMyLDE5IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHBlcmZv
cm0oRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0aW9u
Q29kZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBtX3ZhbHVlID0gbV9lbGVtZW50LT5n
ZXRBdHRyaWJ1dGUobV9uYW1lKTsKICAgICAgICAgcmV0dXJuIHJlZG8oZWMpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHZpcnR1YWwgYm9v
bCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9lbGVt
ZW50LT5zZXRBdHRyaWJ1dGUobV9uYW1lLCBtX3ZhbHVlLCBlYyk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmKQorICAg
IHZpcnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlkZQogICAgIHsKICAgICAg
ICAgbV9lbGVtZW50LT5yZW1vdmVBdHRyaWJ1dGUobV9uYW1lKTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xNjgsNyArMTY4LDcgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJiBlYykKKyAgICB2aXJ0dWFsIGJvb2wgcGVy
Zm9ybShFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1faGFkQXR0
cmlidXRlID0gbV9lbGVtZW50LT5oYXNBdHRyaWJ1dGUobV9uYW1lKTsKICAgICAgICAgaWYgKG1f
aGFkQXR0cmlidXRlKQpAQCAtMTc2LDcgKzE3Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJu
IHJlZG8oZWMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUm
IGVjKQorICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQog
ICAgIHsKICAgICAgICAgaWYgKG1faGFkQXR0cmlidXRlKQogICAgICAgICAgICAgbV9lbGVtZW50
LT5zZXRBdHRyaWJ1dGUobV9uYW1lLCBtX29sZFZhbHVlLCBlYyk7CkBAIC0xODUsNyArMTg1LDcg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIGJv
b2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykKKyAgICB2aXJ0dWFsIGJvb2wgcmVkbyhFeGNlcHRp
b25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fZWxlbWVudC0+c2V0QXR0cmli
dXRlKG1fbmFtZSwgbV92YWx1ZSwgZWMpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTIxMyw3
ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCBwZXJm
b3JtKEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlv
bkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9vbGRIVE1MID0gY3JlYXRlTWFy
a3VwKG1fbm9kZS5nZXQoKSk7CiAgICAgICAgIERPTVBhdGNoU3VwcG9ydCBkb21QYXRjaFN1cHBv
cnQobV9kb21FZGl0b3IuZ2V0KCksICZtX25vZGUtPmRvY3VtZW50KCkpOwpAQCAtMjIxLDEyICsy
MjEsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gIWVjOwogICAgIH0KIAotICAgIHZpcnR1
YWwgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4
Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIG1faGlzdG9y
eS0+dW5kbyhlYyk7CiAgICAgfQogCi0gICAgdmlydHVhbCBib29sIHJlZG8oRXhjZXB0aW9uQ29k
ZSYgZWMpCisgICAgdmlydHVhbCBib29sIHJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICByZXR1cm4gbV9oaXN0b3J5LT5yZWRvKGVjKTsKICAgICB9CkBAIC0y
NTYsMTkgKzI1NiwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgYm9v
bCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4
Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9vbGRUZXh0ID0gbV90
ZXh0Tm9kZS0+d2hvbGVUZXh0KCk7CiAgICAgICAgIHJldHVybiByZWRvKGVjKTsKICAgICB9CiAK
LSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJiBlYykKKyAgICB2aXJ0dWFsIGJv
b2wgdW5kbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1fdGV4
dE5vZGUtPnJlcGxhY2VXaG9sZVRleHQobV9vbGRUZXh0LCBlYyk7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKQor
ICAgIHZpcnR1YWwgYm9vbCByZWRvKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsK
ICAgICAgICAgbV90ZXh0Tm9kZS0+cmVwbGFjZVdob2xlVGV4dChtX3RleHQsIGVjKTsKICAgICAg
ICAgcmV0dXJuIHRydWU7CkBAIC0yOTEsMTcgKzI5MSwxNyBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAotICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHZp
cnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHJlZG8oZWMpOwogICAgIH0KIAotICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4
Y2VwdGlvbkNvZGUmIGVjKQorICAgIHZpcnR1YWwgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmIGVj
KSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmV0dXJuIG1fcGFyZW50Tm9kZS0+cmVwbGFjZUNo
aWxkKG1fb2xkTm9kZSwgbV9uZXdOb2RlLmdldCgpLCBlYyk7CiAgICAgfQogCi0gICAgdmlydHVh
bCBib29sIHJlZG8oRXhjZXB0aW9uQ29kZSYgZWMpCisgICAgdmlydHVhbCBib29sIHJlZG8oRXhj
ZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICByZXR1cm4gbV9wYXJlbnRO
b2RlLT5yZXBsYWNlQ2hpbGQobV9uZXdOb2RlLCBtX29sZE5vZGUuZ2V0KCksIGVjKTsKICAgICB9
CkBAIC0zMjIsMTkgKzMyMiwxOSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAotICAgIHZpcnR1
YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmIGVjKQorICAgIHZpcnR1YWwgYm9vbCBwZXJm
b3JtKEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgbV9vbGRWYWx1
ZSA9IG1fbm9kZS0+bm9kZVZhbHVlKCk7CiAgICAgICAgIHJldHVybiByZWRvKGVjKTsKICAgICB9
CiAKLSAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJiBlYykKKyAgICB2aXJ0dWFs
IGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIG1f
bm9kZS0+c2V0Tm9kZVZhbHVlKG1fb2xkVmFsdWUsIGVjKTsKICAgICAgICAgcmV0dXJuICFlYzsK
ICAgICB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykKKyAgICB2
aXJ0dWFsIGJvb2wgcmVkbyhFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIG1fbm9kZS0+c2V0Tm9kZVZhbHVlKG1fdmFsdWUsIGVjKTsKICAgICAgICAgcmV0dXJuICFl
YzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBs
aWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCBlNGFjYWExLi40Yjg2MmFhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVB
Z2VudC5oCkBAIC02MiwxMCArNjIsMTAgQEAgcHVibGljOgogICAgIHZvaWQgdXBkYXRlQXBwbGlj
YXRpb25DYWNoZVN0YXR1cyhGcmFtZSopOwogICAgIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgp
OwogCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRGcmFtZXNXaXRoTWFuaWZlc3RzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9u
Q2FjaGU6OkZyYW1lV2l0aE1hbmlmZXN0Pj4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdl
dE1hbmlmZXN0Rm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFN0
cmluZyogbWFuaWZlc3RVUkwpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRBcHBsaWNhdGlvbkNhY2hl
Rm9yRnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBsaWNhdGlvbkNhY2hlOjpBcHBsaWNhdGlvbkNhY2hlPiYp
OworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0RnJhbWVzV2l0aE1hbmlmZXN0cyhFcnJvclN0cmluZyosIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcHBs
aWNhdGlvbkNhY2hlOjpGcmFtZVdpdGhNYW5pZmVzdD4+JiByZXN1bHQpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBnZXRNYW5pZmVzdEZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBTdHJpbmcqIG1hbmlmZXN0VVJMKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0QXBwbGljYXRpb25DYWNoZUZvckZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBmcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXBwbGljYXRpb25D
YWNoZTo6QXBwbGljYXRpb25DYWNoZT4mKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFwcGxpY2F0aW9uQ2FjaGU6OkFwcGxpY2F0
aW9uQ2FjaGU+IGJ1aWxkT2JqZWN0Rm9yQXBwbGljYXRpb25DYWNoZShjb25zdCBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6UmVzb3VyY2VJbmZvTGlzdCYsIGNvbnN0IEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpDYWNoZUluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKaW5kZXggM2VhOTUzNS4uZGNiYTkxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTk3LDkgKzk3LDkgQEAgcHVibGljOgogICAgIGJv
b2wgZm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JGcm9udGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVyKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRB
bmRCYWNrZW5kKCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpOwot
ICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZShFcnJvclN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkQWdlbnQoKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2
b2lkIHJlc2V0KCk7CiAgICAgdm9pZCBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdlZCgpOwogICAgIHZv
aWQgZGlkQ3JlYXRlTmFtZWRGbG93KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93Kik7CkBAIC0x
MTEsMjEgKzExMSwyMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRSZWdpc3Rlck5hbWVkRmxvd0Nv
bnRlbnRFbGVtZW50KERvY3VtZW50KiwgV2ViS2l0TmFtZWRGbG93KiwgTm9kZSogY29udGVudEVs
ZW1lbnQsIE5vZGUqIG5leHRDb250ZW50RWxlbWVudCA9IG51bGxwdHIpOwogICAgIHZvaWQgZGlk
VW5yZWdpc3Rlck5hbWVkRmxvd0NvbnRlbnRFbGVtZW50KERvY3VtZW50KiwgV2ViS2l0TmFtZWRG
bG93KiwgTm9kZSogY29udGVudEVsZW1lbnQpOwogCi0gICAgdmlydHVhbCB2b2lkIGdldENvbXB1
dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29t
cHV0ZWRTdHlsZVByb3BlcnR5Pj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVz
Rm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgYXR0cmlidXRlcyk7Ci0gICAgdmlydHVhbCB2b2lk
IGdldE1hdGNoZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3Qg
Ym9vbCogaW5jbHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNT
Uzo6UnVsZU1hdGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVz
Pj4mIHBzZXVkb0lkTWF0Y2hlcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhl
cml0ZWRFbnRyaWVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcyk7
Ci0gICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGVTaGVldEJvZHk+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTdHlsZVNoZWV0
VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElkLCBTdHJpbmcqIHJl
c3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0cmluZyYgdGV4dCk7Ci0gICAgdmly
dHVhbCB2b2lkIHNldFN0eWxlVGV4dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29u
c3QgU3RyaW5nJiB0ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpOwotICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQ
cm9wZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KTsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KTsKLSAg
ICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBjb250ZXh0Tm9kZUlkLCBj
b25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NT
OjpDU1NSdWxlPiYgcmVzdWx0KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJv
cGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1Byb3BlcnR5SW5mbz4+JiByZXN1bHQp
OwotICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5v
ZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBmb3JjZWRQc2V1
ZG9DbGFzc2VzKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJv
clN0cmluZyosIGludCBkb2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3Vs
dCk7CisgICAgdmlydHVhbCB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTQ29tcHV0ZWRTdHlsZVByb3BlcnR5Pj4mKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5saW5lU3R5bGVzRm9yTm9kZShFcnJvclN0cmlu
ZyosIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0
eWxlPiYgaW5saW5lU3R5bGUsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiYgYXR0cmlidXRlcykgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldE1hdGNo
ZWRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgYm9vbCogaW5j
bHVkZVBzZXVkbywgY29uc3QgYm9vbCogaW5jbHVkZUluaGVyaXRlZCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UnVsZU1h
dGNoPj4mIG1hdGNoZWRDU1NSdWxlcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFy
cmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6UHNldWRvSWRNYXRjaGVzPj4mIHBzZXVk
b0lkTWF0Y2hlcywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNTUzo6SW5oZXJpdGVkU3R5bGVFbnRyeT4+JiBpbmhlcml0ZWRFbnRy
aWVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0QWxsU3R5bGVTaGVldHMoRXJyb3JT
dHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZVNoZWV0SGVhZGVyPj4mIHN0eWxlU2hlZXRJbmZvcykg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc3R5bGVT
aGVldElkLCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFN0
eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNv
bnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlVGV4
dChFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
IHN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiBzdHlsZUlkLCBpbnQgcHJvcGVydHlJbmRleCwgY29uc3QgU3RyaW5nJiB0
ZXh0LCBib29sIG92ZXJ3cml0ZSwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6
Q1NTU3R5bGU+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCB0b2dnbGVQcm9w
ZXJ0eShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mIHN0eWxlSWQsIGludCBwcm9wZXJ0eUluZGV4LCBib29sIGRpc2FibGUsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVj
dG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUnVsZShFcnJvclN0cmluZyosIGludCBj
b250ZXh0Tm9kZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0U3VwcG9ydGVkQ1NTUHJvcGVydGllcyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1Byb3BlcnR5SW5mbz4+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmb3Jj
ZVBzZXVkb1N0YXRlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZ2V0TmFtZWRGbG93Q29sbGVjdGlvbihFcnJvclN0cmluZyosIGludCBk
b2N1bWVudE5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6TmFtZWRGbG93Pj4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAK
IHByaXZhdGU6CiAgICAgY2xhc3MgU3R5bGVTaGVldEFjdGlvbjsKQEAgLTE2MiwxMiArMTYyLDEy
IEBAIHByaXZhdGU6CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6
Ok5hbWVkRmxvdz4gYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coRXJyb3JTdHJpbmcqLCBXZWJLaXRO
YW1lZEZsb3cqLCBpbnQgZG9jdW1lbnROb2RlSWQpOwogCiAgICAgLy8gSW5zcGVjdG9yRE9NQWdl
bnQ6OkRPTUxpc3RlbmVyIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlbW92
ZURvY3VtZW50KERvY3VtZW50Kik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZURPTU5vZGUo
Tm9kZSopOwotICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRE9NTm9kZShOb2RlKikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGRpZE1vZGlmeURPTUF0dHIoRWxlbWVudCopIG92ZXJyaWRlOwogCiAgICAgLy8g
SW5zcGVjdG9yQ1NTQWdlbnQ6Okxpc3RlbmVyIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCB2
b2lkIHN0eWxlU2hlZXRDaGFuZ2VkKEluc3BlY3RvclN0eWxlU2hlZXQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3R5bGVTaGVldENoYW5nZWQoSW5zcGVjdG9yU3R5bGVTaGVldCopIG92ZXJyaWRlOwog
CiAgICAgdm9pZCByZXNldFBzZXVkb1N0YXRlcygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IDE4MzljZmQuLjNiYzdiMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBA
IC03OSwxNyArNzksMTcgQEAgcHVibGljOgogI2VuZGlmCiAKICAgICAvLyBDYWxsZWQgZnJvbSB0
aGUgZnJvbnQtZW5kLgotICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBk
cm9wVHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpD
YW52YXM6OlRyYWNlTG9nSWQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgaGFzVW5pbnN0cnVtZW50ZWRD
YW52YXNlcyhFcnJvclN0cmluZyosIGJvb2wqKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FwdHVyZUZy
YW1lKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6
RnJhbWVJZCosIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCopOwot
ICAgIHZpcnR1YWwgdm9pZCBzdGFydENhcHR1cmluZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQqLCBJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcENhcHR1cmlu
ZyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJh
Y2VMb2dJZCYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRUcmFjZUxvZyhFcnJvclN0cmluZyosIGNv
bnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGNvbnN0IGlu
dCosIGNvbnN0IGludCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRy
YWNlTG9nPiYpOwotICAgIHZpcnR1YWwgdm9pZCByZXBsYXlUcmFjZUxvZyhFcnJvclN0cmluZyos
IGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJhY2VMb2dJZCYsIGludCwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VTdGF0ZT4mKTsK
LSAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VJbmZvKEVycm9yU3RyaW5nKiwgY29uc3QgSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJbmZvPiYpOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRSZXNvdXJjZVN0YXRlKEVycm9yU3RyaW5nKiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJiwgY29uc3QgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpSZXNvdXJjZUlkJiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VTdGF0ZT4mKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5n
Kikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJvcFRyYWNlTG9nKEVycm9yU3RyaW5nKiwgY29uc3Qg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q2FudmFzOjpUcmFjZUxvZ0lkJikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGhhc1VuaW5zdHJ1bWVudGVkQ2FudmFzZXMoRXJyb3JTdHJpbmcqLCBi
b29sKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNhcHR1cmVGcmFtZShFcnJvclN0cmlu
ZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkZyYW1lSWQqLCBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9nSWQqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpGcmFtZUlkKiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q2FudmFzOjpUcmFjZUxvZ0lkKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BDYXB0
dXJpbmcoRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6
OlRyYWNlTG9nSWQmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VHJhY2VMb2coRXJy
b3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlRyYWNlTG9n
SWQmLCBjb25zdCBpbnQqLCBjb25zdCBpbnQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6Q2FudmFzOjpUcmFjZUxvZz4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5
VHJhY2VMb2coRXJyb3JTdHJpbmcqLCBjb25zdCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52
YXM6OlRyYWNlTG9nSWQmLCBpbnQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52
YXM6OlJlc291cmNlU3RhdGU+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFJlc291
cmNlSW5mbyhFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZh
czo6UmVzb3VyY2VJZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJl
c291cmNlSW5mbz4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VTdGF0
ZShFcnJvclN0cmluZyosIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6VHJh
Y2VMb2dJZCYsIGNvbnN0IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNhbnZhczo6UmVzb3VyY2VJ
ZCYsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDYW52YXM6OlJlc291cmNlU3RhdGU+
Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUg
aW5qZWN0ZWRTY3JpcHRDYW52YXNNb2R1bGUoRXJyb3JTdHJpbmcqLCBKU0M6OkV4ZWNTdGF0ZSop
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnNvbGVBZ2VudC5o
CmluZGV4IDRiNDM0NDkuLjNhOThmMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTU5LDkgKzU5LDkgQEAgcHVibGljOgogICAg
IEluc3BlY3RvckNvbnNvbGVBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZUluamVjdGVk
U2NyaXB0TWFuYWdlciopOwogICAgIHZpcnR1YWwgfkluc3BlY3RvckNvbnNvbGVBZ2VudCgpOwog
Ci0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyTWVzc2FnZXMo
RXJyb3JTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyopIG92ZXJyaWRlOwog
ICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIHZvaWQg
cmVzZXQoKTsKIApAQCAtODksOSArODksOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQcm9maWxl
RmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIHVuc2ln
bmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3Vy
Y2VVUkwpOwogICAgIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0
IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogI2VuZGlmCi0gICAgdmlydHVhbCB2b2lkIHNl
dE1vbml0b3JpbmdYSFJFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0TW9uaXRvcmluZ1hIUkVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sIGVu
YWJsZWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKEVycm9y
U3RyaW5nKiwgaW50IG5vZGVJZCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBhZGRJbnNwZWN0ZWRI
ZWFwT2JqZWN0KEVycm9yU3RyaW5nKiwgaW50IGluc3BlY3RlZEhlYXBPYmplY3RJZCk7CisgICAg
dmlydHVhbCB2b2lkIGFkZEluc3BlY3RlZEhlYXBPYmplY3QoRXJyb3JTdHJpbmcqLCBpbnQgaW5z
cGVjdGVkSGVhcE9iamVjdElkKSBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc1dvcmtl
ckFnZW50KCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5oCmluZGV4IDlhN2NhOTIuLmFiMjk5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC0xMTgsNDAgKzExOCw0MCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXNldCgpOwogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUgZnJvbnRl
bmQgZm9yIERPTSBub2RlcyBpbnNwZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBxdWVyeVNlbGVj
dG9yKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvcnMsIGlu
dCogZWxlbWVudElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcXVlcnlTZWxlY3RvckFsbChFcnJvclN0
cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3JzLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lk
IGdldERvY3VtZW50KEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRPTTo6Tm9kZT4mIHJvb3QpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hpbGROb2RlcyhF
cnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IGludCogZGVwdGgpOwotICAgIHZpcnR1YWwg
dm9pZCBzZXRBdHRyaWJ1dGVWYWx1ZShFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dEF0dHJpYnV0ZXNBc1RleHQoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJp
bmcmIHRleHQsIGNvbnN0IFN0cmluZyogbmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUF0
dHJpYnV0ZShFcnJvclN0cmluZyosIGludCBlbGVtZW50SWQsIGNvbnN0IFN0cmluZyYgbmFtZSk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZU5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZU5hbWUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGludCogbmV3SWQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRPdXRl
ckhUTUwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBXVEY6OlN0cmluZyogb3V0ZXJIVE1MKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwg
Y29uc3QgU3RyaW5nJiBvdXRlckhUTUwpOwotICAgIHZpcnR1YWwgdm9pZCBzZXROb2RlVmFsdWUo
RXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgV1RGOjpTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpFdmVudExpc3RlbmVy
Pj4mIGxpc3RlbmVyc0FycmF5KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+KiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElk
LCBpbnQqIHJlc3VsdENvdW50KTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0
b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8aW50Pj4mKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHNlYXJjaElkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgZ2V0QXR0cmlidXRlcyhFcnJvclN0cmluZyosIGludCBub2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+PiYgcmVzdWx0KTsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFi
bGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRD
b25maWcpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcHVzaE5v
ZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQq
IG5vZGVJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHB1c2hOb2RlQnlCYWNrZW5kSWRUb0Zyb250ZW5k
KEVycm9yU3RyaW5nKiwgQmFja2VuZE5vZGVJZCwgaW50KiBub2RlSWQpOwotICAgIHZpcnR1YWwg
dm9pZCByZWxlYXNlQmFja2VuZE5vZGVJZHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG5v
ZGVHcm91cCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcqKTsK
LSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQg
eSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwotICAgIHZp
cnR1YWwgdm9pZCBoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiBxdWFkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwotICAg
IHZpcnR1YWwgdm9pZCBoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0Q29uZmlnLCBjb25zdCBpbnQqIG5v
ZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RJZCk7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdo
dEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yKTsKLQotICAgIHZpcnR1YWwgdm9pZCBt
b3ZlVG8oRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBpbnQgdGFyZ2V0Tm9kZUlkLCBjb25zdCBp
bnQqIGFuY2hvck5vZGVJZCwgaW50KiBuZXdOb2RlSWQpOwotICAgIHZpcnR1YWwgdm9pZCB1bmRv
KEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIHJlZG8oRXJyb3JTdHJpbmcqKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgbWFya1VuZG9hYmxlU3RhdGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0
dWFsIHZvaWQgZm9jdXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcXVlcnlTZWxlY3RvcihFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3JzLCBpbnQqIGVsZW1lbnRJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHF1
ZXJ5U2VsZWN0b3JBbGwoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHNl
bGVjdG9ycywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PGludD4+JiByZXN1
bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXREb2N1bWVudChFcnJvclN0cmluZyos
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+JiByb290KSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoaWxkTm9kZXMoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkLCBjb25zdCBpbnQqIGRlcHRoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QXR0cmlidXRlVmFsdWUoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRBdHRyaWJ1dGVzQXNUZXh0KEVycm9yU3RyaW5nKiwgaW50IGVsZW1lbnRJZCwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcqIG5hbWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVBdHRyaWJ1dGUoRXJyb3JTdHJpbmcqLCBpbnQgZWxlbWVudElkLCBjb25zdCBTdHJp
bmcmIG5hbWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOb2RlKEVycm9yU3Ry
aW5nKiwgaW50IG5vZGVJZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldE5vZGVOYW1l
KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBpbnQqIG5ld0lk
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0T3V0ZXJIVE1MKEVycm9yU3RyaW5nKiwg
aW50IG5vZGVJZCwgV1RGOjpTdHJpbmcqIG91dGVySFRNTCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIHNldE91dGVySFRNTChFcnJvclN0cmluZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmlu
ZyYgb3V0ZXJIVE1MKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZVZhbHVlKEVy
cm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyosIGlu
dCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6RXZlbnRM
aXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1TZWFyY2goRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVk
UXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5Piogbm9kZUlkcywg
U3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3VudCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGdldFNlYXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlYXJj
aElkLCBpbnQgZnJvbUluZGV4LCBpbnQgdG9JbmRleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PGludD4+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2NhcmRT
ZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHJlc29sdmVOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJ
ZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGdldEF0dHJpYnV0ZXMoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIHJlc3VsdCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wg
ZW5hYmxlZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogaGlnaGxp
Z2h0Q29uZmlnKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdE5vZGUoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgcGF0aCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCBwdXNoTm9kZUJ5QmFja2VuZElkVG9Gcm9udGVuZChFcnJvclN0cmluZyosIEJhY2tlbmROb2Rl
SWQsIGludCogbm9kZUlkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZUJhY2tl
bmROb2RlSWRzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBub2RlR3JvdXApIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBoaWRlSGlnaGxpZ2h0KEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyosIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgcXVhZCwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5h
dGVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodENv
bmZpZywgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgZnJhbWVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piog
Y29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVD
b2xvcikgb3ZlcnJpZGU7CisKKyAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nKiwg
aW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBhbmNob3JOb2RlSWQsIGlu
dCogbmV3Tm9kZUlkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5kbyhFcnJvclN0cmlu
ZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZWRvKEVycm9yU3RyaW5nKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIG1hcmtVbmRvYWJsZVN0YXRlKEVycm9yU3RyaW5nKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGZvY3VzKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCkg
b3ZlcnJpZGU7CiAKICAgICB2b2lkIGdldEV2ZW50TGlzdGVuZXJzKE5vZGUqLCBWZWN0b3I8RXZl
bnRMaXN0ZW5lckluZm8+JiBsaXN0ZW5lcnNBcnJheSwgYm9vbCBpbmNsdWRlQW5jZXN0b3JzKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmgKaW5kZXggN2U3YWNhNS4uYTU4ZjQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC02MiwxNCArNjIs
MTQgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKTsK
IAogICAgIC8vIERPTURlYnVnZ2VyIEFQSQotICAgIHZpcnR1YWwgdm9pZCBzZXRYSFJCcmVha3Bv
aW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVYSFJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgZXZlbnROYW1lKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRXZlbnRMaXN0
ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEluc3RydW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGV2ZW50TmFtZSk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUluc3Ry
dW1lbnRhdGlvbkJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV2ZW50TmFt
ZSk7Ci0gICAgdmlydHVhbCB2b2lkIHNldERPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01C
cmVha3BvaW50KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0WEhSQnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgdXJsKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlWEhSQnJlYWtwb2lu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIGV2ZW50TmFtZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlz
dGVuZXJCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVJbnN0cnVtZW50YXRpb25CcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBldmVudE5hbWUpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRET01C
cmVha3BvaW50KEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmlu
ZyosIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJCiAgICAgdm9pZCB3aWxsSW5zZXJ0RE9NTm9kZShO
b2RlKiBwYXJlbnQpOwpAQCAtODMsMTQgKzgzLDE0IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
dm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2NhcmRBZ2VudCgpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNjYXJkQWdlbnQoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICAvLyBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciBpbXBsZW1lbnRhdGlvbi4KLSAgICB2aXJ0dWFsIHZv
aWQgZGVidWdnZXJXYXNFbmFibGVkKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRlYnVnZ2VyV2FzRGlz
YWJsZWQoKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RlcEludG8oKTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGF1c2UoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVidWdnZXJXYXNFbmFibGVkKCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQoKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RlcEludG8oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
UGF1c2UoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoKTsKIAogICAgIHZvaWQgZGVzY3Jp
cHRpb25Gb3JET01FdmVudChOb2RlKiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBp
bnNlcnRpb24sIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBkZXNjcmlwdGlvbik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgK
aW5kZXggZjQ3Y2JiZS4uYzYyYWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtNjEsMTEgKzYxLDExIEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoKSBvdmVy
cmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCi0gICAgdmlydHVhbCB2
b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9y
U3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9y
YWdlSXRlbShFcnJvclN0cmluZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUp
OwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIHN0b3JhZ2VJZCwgY29uc3Qg
U3RyaW5nJiBrZXkpOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcqLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxT
dHJpbmc+Pj4mIGl0ZW1zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RE9NU3RvcmFn
ZUl0ZW0oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBzdG9yYWdlSWQs
IGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBp
bmplY3RlZCBzY3JpcHQuCiAgICAgU3RyaW5nIHN0b3JhZ2VJZChTdG9yYWdlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKaW5k
ZXggNDkxYzg0OS4uNDJiMzZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmNwcApAQCAtNzYsNyArNzYsNyBAQCBwdWJsaWM6CiAK
ICAgICB2aXJ0dWFsIH5TdGF0ZW1lbnRDYWxsYmFjaygpIHsgfQogCi0gICAgdmlydHVhbCBib29s
IGhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiwgU1FMUmVzdWx0U2V0KiByZXN1bHRTZXQpCisg
ICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiwgU1FMUmVzdWx0U2V0
KiByZXN1bHRTZXQpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBTUUxSZXN1bHRTZXRSb3dMaXN0
KiByb3dMaXN0ID0gcmVzdWx0U2V0LT5yb3dzKCk7CiAKQEAgLTExNCw3ICsxMTQsNyBAQCBwdWJs
aWM6CiAKICAgICB2aXJ0dWFsIH5TdGF0ZW1lbnRFcnJvckNhbGxiYWNrKCkgeyB9CiAKLSAgICB2
aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qLCBTUUxFcnJvciogZXJyb3Ip
CisgICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KFNRTFRyYW5zYWN0aW9uKiwgU1FMRXJyb3Iq
IGVycm9yKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgcmVwb3J0VHJhbnNhY3Rpb25GYWlsZWQo
bV9yZXF1ZXN0Q2FsbGJhY2suZ2V0KCksIGVycm9yKTsKICAgICAgICAgcmV0dXJuIHRydWU7ICAK
QEAgLTEzNSw3ICsxMzUsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UcmFuc2FjdGlvbkNh
bGxiYWNrKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rp
b24qIHRyYW5zYWN0aW9uKQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxUcmFuc2Fj
dGlvbiogdHJhbnNhY3Rpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAoIW1fcmVxdWVz
dENhbGxiYWNrLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjMs
NyArMTYzLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrKCkgeyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoU1FMRXJyb3IqIGVycm9y
KQorICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVFdmVudChTUUxFcnJvciogZXJyb3IpIG92ZXJyaWRl
CiAgICAgewogICAgICAgICByZXBvcnRUcmFuc2FjdGlvbkZhaWxlZChtX3JlcXVlc3RDYWxsYmFj
ay5nZXQoKSwgZXJyb3IpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4Myw3ICsxODMsNyBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5UcmFuc2FjdGlvblN1Y2Nlc3NDYWxsYmFjaygpIHsg
fQogCi0gICAgdmlydHVhbCBib29sIGhhbmRsZUV2ZW50KCkgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIGJvb2wgaGFuZGxlRXZlbnQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
CiBwcml2YXRlOgogICAgIFRyYW5zYWN0aW9uU3VjY2Vzc0NhbGxiYWNrKCkgeyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAppbmRleCA5
NzhmODA0Li42ZmI3MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTYxLDEwICs2MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjbGVhclJlc291cmNlcygpOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4K
LSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lk
IGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VUYWJs
ZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVzKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VJZCwg
Y29uc3QgU3RyaW5nJiBxdWVyeSwgUGFzc1JlZlB0cjxFeGVjdXRlU1FMQ2FsbGJhY2s+KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0RGF0YWJhc2VUYWJsZU5hbWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8U3RyaW5nPj4mIG5hbWVz
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVNRTChFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VJZCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgUGFzc1JlZlB0cjxF
eGVjdXRlU1FMQ2FsbGJhY2s+KSBvdmVycmlkZTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBp
bmplY3RlZCBzY3JpcHQuCiAgICAgU3RyaW5nIGRhdGFiYXNlSWQoRGF0YWJhc2UqKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4
IGQxYzVlMzAuLmY5OWFhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNzcsMjQgKzc3LDI0IEBAIHB1YmxpYzoKICAgICB2
b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSwgTWVzc2FnZVR5cGUpOwogCiAg
ICAgLy8gUGFydCBvZiB0aGUgcHJvdG9jb2wuCi0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJv
clN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAg
dmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nKiwgYm9vbCBhY3Rp
dmUpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyos
IGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcq
IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPj4mIGxvY2F0aW9ucywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uSWRlbnRpZmll
cj4+JiBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnMpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRC
cmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50
SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiYg
YWN0dWFsTG9jYXRpb24sIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXI+
PiYgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXJzKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
QnJlYWtwb2ludChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZp
ZXIpOwotICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbik7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6
OlNlYXJjaE1hdGNoPj4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2UpOwot
ICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6RnVuY3Rpb25EZXRhaWxzPiYpOwotICAgIHZpcnR1YWwgdm9pZCBwYXVzZShFcnJvclN0cmlu
ZyopOwotICAgIHZpcnR1YWwgdm9pZCByZXN1bWUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc3RlcE92ZXIoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RlcEludG8o
RXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RlcE91dChFcnJvclN0cmluZyopOwot
ICAgIHZpcnR1YWwgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgcGF1c2VTdGF0ZSk7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmlu
ZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5n
KiwgYm9vbCBhY3RpdmUpIG92ZXJyaWRlOworCisgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9p
bnRCeVVybChFcnJvclN0cmluZyosIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlv
bmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9u
YWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4q
IG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQq
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucywgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50QWN0aW9uSWRlbnRpZmllcj4+JiBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnMpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24sIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24sIFJlZlB0cjxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXI+PiYgYnJlYWtwb2ludEFjdGlvbklkZW50aWZp
ZXJzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbikgb3ZlcnJpZGU7CisKKyAg
ICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6
OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291
cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRT
b3VyY2UpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBwYXVzZShFcnJvclN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9p
ZCByZXN1bWUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RlcE92
ZXIoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RlcEludG8oRXJy
b3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RlcE91dChFcnJvclN0cmlu
ZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgcGF1c2VTdGF0ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sCkBAIC0xMDQsOCArMTA0LDgg
QEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiByZXR1
cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBnZW5l
cmF0ZVByZXZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJy
b3JTdHJpbmcqLCBjb25zdCBTdHJpbmcqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyosIGNv
bnN0IFN0cmluZyopIG92ZXJyaWRlOwogCiAgICAgdm9pZCBzY2hlZHVsZVBhdXNlT25OZXh0U3Rh
dGVtZW50KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4gZGF0YSk7CiAgICAgdm9pZCBjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOwpAQCAt
MTM2LDggKzEzNiw4IEBAIHByb3RlY3RlZDoKIAogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZSgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShK
U0M6OkV4ZWNTdGF0ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVz
LCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29udGludWUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpFeGVj
U3RhdGUqLCBjb25zdCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3Qg
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIGV4Y2VwdGlvbikgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIGRpZENvbnRpbnVlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDbGVhckdsb2JhbE9i
amVjdCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRIb3N0LmNwcAppbmRleCA3ZDdiMWIxLi4zYzc0YWM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcApAQCAt
OTAsMTMgKzkwLDEzIEBAIHByaXZhdGU6CiAgICAgICAgIGNvbnRleHRNZW51Q2xlYXJlZCgpOwog
ICAgIH0KICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudShDb250ZXh0
TWVudSogbWVudSkKKyAgICB2aXJ0dWFsIHZvaWQgcG9wdWxhdGVDb250ZXh0TWVudShDb250ZXh0
TWVudSogbWVudSkgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9pdGVtcy5zaXplKCk7ICsraSkKICAgICAgICAgICAgIG1lbnUtPmFwcGVuZEl0ZW0obV9p
dGVtc1tpXSk7CiAgICAgfQogICAgIAotICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUl0ZW1T
ZWxlY3RlZChDb250ZXh0TWVudUl0ZW0qIGl0ZW0pCisgICAgdmlydHVhbCB2b2lkIGNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSogaXRlbSkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIGlmIChtX2Zyb250ZW5kSG9zdCkgewogICAgICAgICAgICAgVXNlckdlc3R1cmVJbmRp
Y2F0b3IgZ2VzdHVyZUluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsK
QEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0TWVudUNsZWFyZWQoKQorICAgIHZpcnR1YWwgdm9pZCBjb250
ZXh0TWVudUNsZWFyZWQoKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fZnJvbnRlbmRI
b3N0KSB7CiAgICAgICAgICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24obV9mcm9udGVuZEFwaU9iamVjdCwgImNvbnRleHRNZW51Q2xlYXJlZCIsIFdlYkNvcmU6OmZ1
bmN0aW9uQ2FsbEhhbmRsZXJGcm9tQW55VGhyZWFkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGUyMjA2
NjkuLmExODA5ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JIZWFwUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckhlYXBQcm9maWxlckFnZW50LmNwcApAQCAtMTI4LDggKzEyOCw4IEBAIHZvaWQgSW5z
cGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQ6OmdldEhlYXBTbmFwc2hvdChFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGludCByCiAgICAgcHVibGljOgogICAgICAgICBPdXRwdXRTdHJlYW0oSW5zcGVj
dG9ySGVhcFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyKiBmcm9udGVuZCwgdW5zaWduZWQgdWlk
KQogICAgICAgICAgICAgOiBtX2Zyb250ZW5kRGlzcGF0Y2hlcihmcm9udGVuZCksIG1fdWlkKHVp
ZCkgeyB9Ci0gICAgICAgIHZvaWQgV3JpdGUoY29uc3QgU3RyaW5nJiBjaHVuaykgeyBtX2Zyb250
ZW5kRGlzcGF0Y2hlci0+YWRkSGVhcFNuYXBzaG90Q2h1bmsobV91aWQsIGNodW5rKTsgfQotICAg
ICAgICB2b2lkIENsb3NlKCkgeyBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+ZmluaXNoSGVhcFNuYXBz
aG90KG1fdWlkKTsgfQorICAgICAgICB2b2lkIFdyaXRlKGNvbnN0IFN0cmluZyYgY2h1bmspIG92
ZXJyaWRlIHsgbV9mcm9udGVuZERpc3BhdGNoZXItPmFkZEhlYXBTbmFwc2hvdENodW5rKG1fdWlk
LCBjaHVuayk7IH0KKyAgICAgICAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlIHsgbV9mcm9udGVuZERp
c3BhdGNoZXItPmZpbmlzaEhlYXBTbmFwc2hvdChtX3VpZCk7IH0KICAgICBwcml2YXRlOgogICAg
ICAgICBJbnNwZWN0b3JIZWFwUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXIqIG1fZnJvbnRlbmRE
aXNwYXRjaGVyOwogICAgICAgICBpbnQgbV91aWQ7CkBAIC0xNjEsMTYgKzE2MSwxNiBAQCB2b2lk
IEluc3BlY3RvckhlYXBQcm9maWxlckFnZW50Ojp0YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5n
KiwgY29uc3QgYm9vbCogcmVwbwogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgSGVhcFNu
YXBzaG90UHJvZ3Jlc3MoSW5zcGVjdG9ySGVhcFByb2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyKiBm
cm9udGVuZCkKICAgICAgICAgICAgIDogbV9mcm9udGVuZERpc3BhdGNoZXIoZnJvbnRlbmQpIHsg
fQotICAgICAgICB2b2lkIFN0YXJ0KGludCB0b3RhbFdvcmspCisgICAgICAgIHZvaWQgU3RhcnQo
aW50IHRvdGFsV29yaykgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgbV90b3RhbFdv
cmsgPSB0b3RhbFdvcms7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCBXb3JrZWQoaW50IHdvcmtE
b25lKQorICAgICAgICB2b2lkIFdvcmtlZChpbnQgd29ya0RvbmUpIG92ZXJyaWRlCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAgICAgICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVwb3J0SGVhcFNuYXBzaG90UHJvZ3Jlc3Mod29ya0Rv
bmUsIG1fdG90YWxXb3JrKTsKICAgICAgICAgfQotICAgICAgICB2b2lkIERvbmUoKSB7IH0KKyAg
ICAgICAgdm9pZCBEb25lKCkgb3ZlcnJpZGUgeyB9CiAgICAgICAgIGJvb2wgaXNDYW5jZWxlZCgp
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyRnJvbnRlbmREaXNwYXRjaGVyKiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgK
aW5kZXggYzRmNGRmZS4uOTgwNGZlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKQEAgLTU2LDIzICs1NiwyMyBAQCBw
dWJsaWM6CiAgICAgSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50
cyosIFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGNvbGxlY3RHYXJiYWdlKEVy
cm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFyUHJvZmlsZXMoRXJyb3JTdHJpbmcq
KSB7IHJlc2V0U3RhdGUoKTsgfQorICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0R2FyYmFnZShFcnJv
clN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjbGVhclByb2ZpbGVzKEVycm9y
U3RyaW5nKikgb3ZlcnJpZGUgeyByZXNldFN0YXRlKCk7IH0KICAgICB2b2lkIHJlc2V0U3RhdGUo
KTsKIAotICAgIHZpcnR1YWwgdm9pZCBoYXNIZWFwUHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBib29s
Kik7CisgICAgdmlydHVhbCB2b2lkIGhhc0hlYXBQcm9maWxlcihFcnJvclN0cmluZyosIGJvb2wq
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0
cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlByb2ZpbGVIZWFkZXI+PiYpOwotICAgIHZpcnR1YWwg
dm9pZCBnZXRIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKTsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGludCB1aWQpOworICAgIHZpcnR1YWwg
dm9pZCBnZXRQcm9maWxlSGVhZGVycyhFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpIZWFwUHJvZmlsZXI6OlBy
b2ZpbGVIZWFkZXI+PiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwU25hcHNo
b3QoRXJyb3JTdHJpbmcqLCBpbnQgdWlkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVt
b3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGludCB1aWQpIG92ZXJyaWRlOwogCiAgICAgdmlydHVh
bCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZy
b250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQo
KSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9yU3Ry
aW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOworICAgIHZpcnR1YWwgdm9pZCB0YWtl
SGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJl
bW90ZU9iamVjdD4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEhlYXBPYmplY3RJZChF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFN0cmluZyogaGVhcFNuYXBzaG90
T2JqZWN0SWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpS
ZW1vdGVPYmplY3Q+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFw
T2JqZWN0SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBTdHJpbmcqIGhl
YXBTbmFwc2hvdE9iamVjdElkKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhh
c2hNYXA8dW5zaWduZWQsIFJlZlB0cjxTY3JpcHRIZWFwU25hcHNob3Q+PiBJZFRvSGVhcFNuYXBz
aG90TWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3Bw
CmluZGV4IDA3ZDYxODkuLmJjZmVmNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySGlzdG9yeS5jcHAKQEAgLTQ1LDEzICs0NSwxMyBAQCBjbGFzcyBVbmRvYWJsZVN0
YXRlTWFyayA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewogcHVibGljOgogICAg
IFVuZG9hYmxlU3RhdGVNYXJrKCkgOiBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24oIltVbmRvYWJs
ZVN0YXRlXSIpIHsgfQogCi0gICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYp
IHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2Rl
Jikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29sIHVuZG8oRXhj
ZXB0aW9uQ29kZSYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgdW5kbyhFeGNl
cHRpb25Db2RlJikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmlydHVhbCBib29s
IHJlZG8oRXhjZXB0aW9uQ29kZSYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wg
cmVkbyhFeGNlcHRpb25Db2RlJikgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdmly
dHVhbCBib29sIGlzVW5kb2FibGVTdGF0ZU1hcmsoKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmly
dHVhbCBib29sIGlzVW5kb2FibGVTdGF0ZU1hcmsoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
ZGV4ZWREQkFnZW50LmNwcAppbmRleCBiOThkNjI1Li40N2Y0MjU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTI3
Niw3ICsyNzYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5EYXRhYmFzZUxvYWRlcigpIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gcHJw
RGF0YWJhc2UpCisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZT4gcHJwRGF0YWJhc2UpIG92ZXJyaWRlCiAgICAgewogI2lmIFBMQVRGT1JNKE1BQykKICAgICAg
ICAgQVNTRVJUX1VOVVNFRChwcnBEYXRhYmFzZSwgcHJwRGF0YWJhc2UpOwpAQCAtMzIyLDcgKzMy
Miw3IEBAIHB1YmxpYzoKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAgICAgfQogCi0gICAgdmly
dHVhbCBSZXF1ZXN0Q2FsbGJhY2sqIHJlcXVlc3RDYWxsYmFjaygpIHsgcmV0dXJuIG1fcmVxdWVz
dENhbGxiYWNrLmdldCgpOyB9CisgICAgdmlydHVhbCBSZXF1ZXN0Q2FsbGJhY2sqIHJlcXVlc3RD
YWxsYmFjaygpIG92ZXJyaWRlIHsgcmV0dXJuIG1fcmVxdWVzdENhbGxiYWNrLmdldCgpOyB9CiBw
cml2YXRlOgogICAgIERhdGFiYXNlTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykK
ICAgICAgICAgOiBFeGVjdXRhYmxlV2l0aERhdGFiYXNlKGNvbnRleHQpCkBAIC01MDQsNyArNTA0
LDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+RGF0YUxvYWRlcigpIHsgfQogCi0gICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gcHJwRGF0YWJhc2UpCisg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gcHJwRGF0YWJh
c2UpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRhdGFi
YXNlID0gcHJwRGF0YWJhc2U7CiAgICAgICAgIGlmICghcmVxdWVzdENhbGxiYWNrKCktPmlzQWN0
aXZlKCkpCkBAIC01MzcsNyArNTM3LDcgQEAgcHVibGljOgogICAgICAgICBpZGJSZXF1ZXN0LT5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIG9wZW5DdXJzb3JDYWxs
YmFjaywgZmFsc2UpOwogICAgIH0KIAotICAgIHZpcnR1YWwgUmVxdWVzdENhbGxiYWNrKiByZXF1
ZXN0Q2FsbGJhY2soKSB7IHJldHVybiBtX3JlcXVlc3RDYWxsYmFjay5nZXQoKTsgfQorICAgIHZp
cnR1YWwgUmVxdWVzdENhbGxiYWNrKiByZXF1ZXN0Q2FsbGJhY2soKSBvdmVycmlkZSB7IHJldHVy
biBtX3JlcXVlc3RDYWxsYmFjay5nZXQoKTsgfQogICAgIERhdGFMb2FkZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0
YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmplY3Rl
ZFNjcmlwdCwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5k
ZXhOYW1lLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSwgaW50IHNraXBDb3Vu
dCwgdW5zaWduZWQgcGFnZVNpemUpCiAgICAgICAgIDogRXhlY3V0YWJsZVdpdGhEYXRhYmFzZShz
Y3JpcHRFeGVjdXRpb25Db250ZXh0KQogICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKHJlcXVl
c3RDYWxsYmFjaykKQEAgLTcyMCw3ICs3MjAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHBycERhdGFi
YXNlKQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHBy
cERhdGFiYXNlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBp
ZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOwogICAgICAgICBpZiAoIXJlcXVlc3RDYWxsYmFjaygp
LT5pc0FjdGl2ZSgpKQpAQCAtNzQ2LDcgKzc0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgaWRiVHJh
bnNhY3Rpb24tPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmNvbXBsZXRlRXZlbnQsIENs
ZWFyT2JqZWN0U3RvcmVMaXN0ZW5lcjo6Y3JlYXRlKG1fcmVxdWVzdENhbGxiYWNrKSwgZmFsc2Up
OwogICAgIH0KIAotICAgIHZpcnR1YWwgUmVxdWVzdENhbGxiYWNrKiByZXF1ZXN0Q2FsbGJhY2so
KSB7IHJldHVybiBtX3JlcXVlc3RDYWxsYmFjay5nZXQoKTsgfQorICAgIHZpcnR1YWwgUmVxdWVz
dENhbGxiYWNrKiByZXF1ZXN0Q2FsbGJhY2soKSBvdmVycmlkZSB7IHJldHVybiBtX3JlcXVlc3RD
YWxsYmFjay5nZXQoKTsgfQogcHJpdmF0ZToKICAgICBjb25zdCBTdHJpbmcgbV9vYmplY3RTdG9y
ZU5hbWU7CiAgICAgUmVmUHRyPENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4gbV9yZXF1ZXN0Q2Fs
bGJhY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5oCmluZGV4IDhjNTBlMjkuLmFlNjE5ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC01NywxMiArNTcsMTIg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2Vu
ZCgpIG92ZXJyaWRlOwogCiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KLSAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlTmFtZXMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBQYXNzUmVmUHRyPFJl
cXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERh
dGFiYXNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3Ry
aW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENv
dW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4qIGtleVJhbmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KTsKLSAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5f
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGluX29iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJh
Y2s+KTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHNlY3VyaXR5T3JpZ2luLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzQ2FsbGJhY2s+
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5h
bWUsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNlY3Vy
aXR5T3JpZ2luLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQg
cGFnZVNpemUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGtleVJh
bmdlLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+KSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgaW5f
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgaW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGluX29iamVjdFN0b3JlTmFtZSwgUGFzc1JlZlB0cjxDbGVhck9iamVjdFN0b3JlQ2FsbGJh
Y2s+KSBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0
TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaAppbmRleCA4MWE2NmM2Li44OGViOTMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKQEAgLTU0
LDggKzU0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5k
QW5kQmFja2VuZCgpIG92ZXJyaWRlOwogCiAgICAgLy8gTWV0aG9kcyBjYWxsZWQgZnJvbSB0aGUg
ZnJvbnRlbmQgZm9yIHNpbXVsYXRpbmcgaW5wdXQuCi0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
S2V5RXZlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IGludCogbW9k
aWZpZXJzLCBjb25zdCBkb3VibGUqIHRpbWVzdGFtcCwgY29uc3QgU3RyaW5nKiB0ZXh0LCBjb25z
dCBTdHJpbmcqIHVubW9kaWZpZWRUZXh0LCBjb25zdCBTdHJpbmcqIGtleUlkZW50aWZpZXIsIGNv
bnN0IGludCogd2luZG93c1ZpcnR1YWxLZXlDb2RlLCBjb25zdCBpbnQqIG5hdGl2ZVZpcnR1YWxL
ZXlDb2RlLCBjb25zdCBpbnQqIG1hY0NoYXJDb2RlLCBjb25zdCBib29sKiBhdXRvUmVwZWF0LCBj
b25zdCBib29sKiBpc0tleXBhZCwgY29uc3QgYm9vbCogaXNTeXN0ZW1LZXkpOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaE1vdXNlRXZlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5
cGUsIGludCB4LCBpbnQgeSwgY29uc3QgaW50KiBtb2RpZmllcnMsIGNvbnN0IGRvdWJsZSogdGlt
ZXN0YW1wLCBjb25zdCBTdHJpbmcqIGJ1dHRvbiwgY29uc3QgaW50KiBjbGlja0NvdW50KTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hLZXlFdmVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgdHlwZSwgY29uc3QgaW50KiBtb2RpZmllcnMsIGNvbnN0IGRvdWJsZSogdGltZXN0YW1wLCBj
b25zdCBTdHJpbmcqIHRleHQsIGNvbnN0IFN0cmluZyogdW5tb2RpZmllZFRleHQsIGNvbnN0IFN0
cmluZyoga2V5SWRlbnRpZmllciwgY29uc3QgaW50KiB3aW5kb3dzVmlydHVhbEtleUNvZGUsIGNv
bnN0IGludCogbmF0aXZlVmlydHVhbEtleUNvZGUsIGNvbnN0IGludCogbWFjQ2hhckNvZGUsIGNv
bnN0IGJvb2wqIGF1dG9SZXBlYXQsIGNvbnN0IGJvb2wqIGlzS2V5cGFkLCBjb25zdCBib29sKiBp
c1N5c3RlbUtleSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTW91c2VFdmVu
dChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdHlwZSwgaW50IHgsIGludCB5LCBjb25zdCBp
bnQqIG1vZGlmaWVycywgY29uc3QgZG91YmxlKiB0aW1lc3RhbXAsIGNvbnN0IFN0cmluZyogYnV0
dG9uLCBjb25zdCBpbnQqIGNsaWNrQ291bnQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFBh
Z2UqIG1fcGFnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckxh
eWVyVHJlZUFnZW50LmgKaW5kZXggYWZiMTUxZi4uNzIxYjMxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTYxLDEwICs2
MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBwc2V1ZG9FbGVtZW50RGVzdHJveWVkKFBzZXVkb0Vs
ZW1lbnQqKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIHRoZSBmcm9udC1lbmQuCi0gICAgdmlydHVh
bCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVy
cm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlYXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBs
YXllcklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpDb21wb3Np
dGluZ1JlYXNvbnM+Jik7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCB2b2lkIGxheWVyc0Zvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6TGF5ZXJUcmVlOjpMYXllcj4+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJl
YXNvbnNGb3JDb21wb3NpdGluZ0xheWVyKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBsYXll
cklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TGF5ZXJUcmVlOjpDb21wb3NpdGlu
Z1JlYXNvbnM+Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgLy8gUmVuZGVyTGF5ZXItcmVs
YXRlZCBtZXRob2RzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuaAppbmRleCAwZTY2YjUyLi5jNWMxMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaApAQCAtNTQsNyArNTQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0
b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9u
dGVuZEFuZEJhY2tlbmQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCBnZXRET01Db3Vu
dGVycyhFcnJvclN0cmluZyosIGludCogZG9jdW1lbnRzLCBpbnQqIG5vZGVzLCBpbnQqIGpzRXZl
bnRMaXN0ZW5lcnMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRET01Db3VudGVycyhFcnJvclN0cmlu
ZyosIGludCogZG9jdW1lbnRzLCBpbnQqIG5vZGVzLCBpbnQqIGpzRXZlbnRMaXN0ZW5lcnMpIG92
ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck1lbW9y
eUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5oCmluZGV4IDQ4MjBlZDYuLjc3NDE1M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUGFnZUFnZW50LmgKQEAg
LTk1LDM2ICs5NSwzNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlBhZ2U6OlJlc291cmNlVHlwZTo6RW51bSBjYWNoZWRSZXNvdXJjZVR5cGVKc29uKGNvbnN0
IENhY2hlZFJlc291cmNlJik7CiAKICAgICAvLyBQYWdlIEFQSSBmb3IgSW5zcGVjdG9yRnJvbnRl
bmQKLSAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgYWRkU2NyaXB0VG9F
dmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc291cmNlLCBTdHJpbmcq
IHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZVNjcmlwdFRvRXZhbHVhdGVPbkxvYWQo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpOwotICAgIHZpcnR1YWwgdm9p
ZCByZWxvYWQoRXJyb3JTdHJpbmcqLCBjb25zdCBib29sKiBvcHRpb25hbElnbm9yZUNhY2hlLCBj
b25zdCBTdHJpbmcqIG9wdGlvbmFsU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZCk7Ci0gICAgdmlydHVh
bCB2b2lkIG5hdmlnYXRlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiB1cmwpOwotICAgIHZp
cnR1YWwgdm9pZCBnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkNvb2tpZT4+JiBj
b29raWVzKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQ29va2llKEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBjb29raWVOYW1lLCBjb25zdCBTdHJpbmcmIHVybCk7Ci0gICAgdmlydHVhbCB2
b2lkIGdldFJlc291cmNlVHJlZShFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpGcmFtZVJlc291cmNlVHJlZT4mKTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0
UmVzb3VyY2VDb250ZW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25z
dCBTdHJpbmcmIHVybCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJjZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmlu
ZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0
IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4
LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNl
YXJjaEluUmVzb3VyY2VzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCog
Y2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OlNlYXJjaFJlc3Vs
dD4+Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldERvY3VtZW50Q29udGVudChFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgU3RyaW5nJiBodG1sKTsKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvd1BhaW50UmVjdHMoRXJyb3JTdHJpbmcqLCBib29sIHNob3cpOwotICAgIHZp
cnR1YWwgdm9pZCBjYW5TaG93RGVidWdCb3JkZXJzKEVycm9yU3RyaW5nKiwgYm9vbCopOwotICAg
IHZpcnR1YWwgdm9pZCBzZXRTaG93RGVidWdCb3JkZXJzKEVycm9yU3RyaW5nKiwgYm9vbCBzaG93
KTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuU2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29s
Kik7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3dGUFNDb3VudGVyKEVycm9yU3RyaW5nKiwgYm9v
bCBzaG93KTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FuQ29udGludW91c2x5UGFpbnQoRXJyb3JTdHJp
bmcqLCBib29sKik7Ci0gICAgdmlydHVhbCB2b2lkIHNldENvbnRpbnVvdXNQYWludGluZ0VuYWJs
ZWQoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRTY3Jp
cHRFeGVjdXRpb25TdGF0dXMoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6Okluc3BlY3RvclBhZ2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlJlc3VsdDo6RW51bSopOwotICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY3JpcHRFeGVjdXRpb25EaXNhYmxlZChFcnJvclN0cmluZyosIGJvb2wpOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRUb3VjaEVtdWxhdGlvbkVuYWJsZWQoRXJyb3JTdHJpbmcqLCBib29sKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDb21wb3NpdGluZ0JvcmRlcnNWaXNpYmxlKEVy
cm9yU3RyaW5nKiwgYm9vbCogb3V0X3BhcmFtKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q29tcG9z
aXRpbmdCb3JkZXJzVmlzaWJsZShFcnJvclN0cmluZyosIGJvb2wpOwotICAgIHZpcnR1YWwgdm9p
ZCBzbmFwc2hvdE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBTdHJpbmcqIG91dERhdGFV
UkwpOwotICAgIHZpcnR1YWwgdm9pZCBzbmFwc2hvdFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgU3RyaW5nJiBjb29yZGluYXRlU3lz
dGVtLCBTdHJpbmcqIG91dERhdGFVUkwpOwotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVKYXZhU2Ny
aXB0RGlhbG9nKEVycm9yU3RyaW5nKiwgYm9vbCBhY2NlcHQsIGNvbnN0IFN0cmluZyogcHJvbXB0
VGV4dCk7Ci0gICAgdmlydHVhbCB2b2lkIGFyY2hpdmUoRXJyb3JTdHJpbmcqLCBTdHJpbmcqIGRh
dGEpOworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBhZGRTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKEVycm9yU3RyaW5nKiwgY29uc3QgU3Ry
aW5nJiBzb3VyY2UsIFN0cmluZyogcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlU2NyaXB0VG9FdmFsdWF0ZU9uTG9hZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
aWRlbnRpZmllcikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbG9hZChFcnJvclN0cmlu
ZyosIGNvbnN0IGJvb2wqIG9wdGlvbmFsSWdub3JlQ2FjaGUsIGNvbnN0IFN0cmluZyogb3B0aW9u
YWxTY3JpcHRUb0V2YWx1YXRlT25Mb2FkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgbmF2
aWdhdGUoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHVybCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPj4mIGNv
b2tpZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVDb29raWUoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIGNvb2tpZU5hbWUsIGNvbnN0IFN0cmluZyYgdXJsKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwgUmVmUHRy
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNvdXJjZUNvbnRlbnQoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmluZyYgdXJsLCBTdHJpbmcqIGNvbnRlbnQs
IGJvb2wqIGJhc2U2NEVuY29kZWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJ
blJlc291cmNlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJp
bmcmIHVybCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNlU2Vu
c2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNl
YXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5SZXNvdXJj
ZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZl
LCBjb25zdCBib29sKiBpc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6U2VhcmNoUmVzdWx0Pj4mKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3RyaW5nKiwgY29u
c3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGh0bWwpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgdm9pZCBzZXRTaG93UGFpbnRSZWN0cyhFcnJvclN0cmluZyosIGJvb2wgc2hvdykgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNhblNob3dEZWJ1Z0JvcmRlcnMoRXJyb3JTdHJpbmcq
LCBib29sKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3dEZWJ1Z0JvcmRlcnMo
RXJyb3JTdHJpbmcqLCBib29sIHNob3cpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjYW5T
aG93RlBTQ291bnRlcihFcnJvclN0cmluZyosIGJvb2wqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvd0ZQU0NvdW50ZXIoRXJyb3JTdHJpbmcqLCBib29sIHNob3cpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBjYW5Db250aW51b3VzbHlQYWludChFcnJvclN0cmluZyosIGJv
b2wqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Q29udGludW91c1BhaW50aW5nRW5h
YmxlZChFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIGdldFNjcmlwdEV4ZWN1dGlvblN0YXR1cyhFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6SW5z
cGVjdG9yUGFnZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UmVzdWx0OjpFbnVtKikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFNjcmlwdEV4ZWN1dGlvbkRpc2FibGVkKEVycm9yU3Ry
aW5nKiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldFRvdWNoRW11bGF0aW9u
RW5hYmxlZChFcnJvclN0cmluZyosIGJvb2wpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRFbXVsYXRlZE1lZGlhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGdldENvbXBvc2l0aW5nQm9yZGVyc1Zpc2libGUoRXJyb3JTdHJpbmcq
LCBib29sKiBvdXRfcGFyYW0pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRDb21wb3Np
dGluZ0JvcmRlcnNWaXNpYmxlKEVycm9yU3RyaW5nKiwgYm9vbCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHNuYXBzaG90Tm9kZShFcnJvclN0cmluZyosIGludCBub2RlSWQsIFN0cmluZyog
b3V0RGF0YVVSTCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNuYXBzaG90UmVjdChFcnJv
clN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBTdHJp
bmcmIGNvb3JkaW5hdGVTeXN0ZW0sIFN0cmluZyogb3V0RGF0YVVSTCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIGhhbmRsZUphdmFTY3JpcHREaWFsb2coRXJyb3JTdHJpbmcqLCBib29sIGFj
Y2VwdCwgY29uc3QgU3RyaW5nKiBwcm9tcHRUZXh0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgYXJjaGl2ZShFcnJvclN0cmluZyosIFN0cmluZyogZGF0YSkgb3ZlcnJpZGU7CiAKICAgICAv
LyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24gQVBJCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09i
amVjdEluV29ybGQoRnJhbWUqLCBET01XcmFwcGVyV29ybGQmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRleCBiOTZiZmRj
Li4zNjkzMmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clByb2ZpbGVyQWdlbnQuY3BwCkBAIC03MSwxNyArNzEsMTcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgflBhZ2VQcm9maWxlckFnZW50KCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2b2lk
IHJlY29tcGlsZVNjcmlwdCgpCisgICAgdmlydHVhbCB2b2lkIHJlY29tcGlsZVNjcmlwdCgpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNoYXJlZCgpLnJl
Y29tcGlsZUFsbEpTRnVuY3Rpb25zU29vbigpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBz
dGFydFByb2ZpbGluZyhjb25zdCBTdHJpbmcmIHRpdGxlKQorICAgIHZpcnR1YWwgdm9pZCBzdGFy
dFByb2ZpbGluZyhjb25zdCBTdHJpbmcmIHRpdGxlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAg
U2NyaXB0UHJvZmlsZXI6OnN0YXJ0Rm9yUGFnZShtX2luc3BlY3RlZFBhZ2UsIHRpdGxlKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4gc3RvcFByb2ZpbGlu
Zyhjb25zdCBTdHJpbmcmIHRpdGxlKQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTY3JpcHRQcm9m
aWxlPiBzdG9wUHJvZmlsaW5nKGNvbnN0IFN0cmluZyYgdGl0bGUpIG92ZXJyaWRlCiAgICAgewog
ICAgICAgICByZXR1cm4gU2NyaXB0UHJvZmlsZXI6OnN0b3BGb3JQYWdlKG1faW5zcGVjdGVkUGFn
ZSwgdGl0bGUpOwogICAgIH0KQEAgLTEwMSwxNCArMTAxLDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIH5Xb3JrZXJQcm9maWxlckFnZW50KCkgeyB9CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCB2
b2lkIHJlY29tcGlsZVNjcmlwdCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCByZWNvbXBpbGVTY3Jp
cHQoKSBvdmVycmlkZSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2ZpbGluZyhjb25z
dCBTdHJpbmcmIHRpdGxlKQorICAgIHZpcnR1YWwgdm9pZCBzdGFydFByb2ZpbGluZyhjb25zdCBT
dHJpbmcmIHRpdGxlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgU2NyaXB0UHJvZmlsZXI6OnN0
YXJ0Rm9yV29ya2VyR2xvYmFsU2NvcGUobV93b3JrZXJHbG9iYWxTY29wZSwgdGl0bGUpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTY3JpcHRQcm9maWxlPiBzdG9wUHJvZmlsaW5n
KGNvbnN0IFN0cmluZyYgdGl0bGUpCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNjcmlwdFByb2Zp
bGU+IHN0b3BQcm9maWxpbmcoY29uc3QgU3RyaW5nJiB0aXRsZSkgb3ZlcnJpZGUKICAgICB7CiAg
ICAgICAgIHJldHVybiBTY3JpcHRQcm9maWxlcjo6c3RvcEZvcldvcmtlckdsb2JhbFNjb3BlKG1f
d29ya2VyR2xvYmFsU2NvcGUsIHRpdGxlKTsKICAgICB9CkBAIC0yNTcsOCArMjU3LDggQEAgY2xh
c3MgT3V0cHV0U3RyZWFtIDogcHVibGljIFNjcmlwdEhlYXBTbmFwc2hvdDo6T3V0cHV0U3RyZWFt
IHsKIHB1YmxpYzoKICAgICBPdXRwdXRTdHJlYW0oSW5zcGVjdG9yUHJvZmlsZXJGcm9udGVuZERp
c3BhdGNoZXIqIGZyb250ZW5kLCB1bnNpZ25lZCB1aWQpCiAgICAgICAgIDogbV9mcm9udGVuZERp
c3BhdGNoZXIoZnJvbnRlbmQpLCBtX3VpZCh1aWQpIHsgfQotICAgIHZvaWQgV3JpdGUoY29uc3Qg
U3RyaW5nJiBjaHVuaykgeyBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YWRkSGVhcFNuYXBzaG90Q2h1
bmsobV91aWQsIGNodW5rKTsgfQotICAgIHZvaWQgQ2xvc2UoKSB7IG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5maW5pc2hIZWFwU25hcHNob3QobV91aWQpOyB9CisgICAgdm9pZCBXcml0ZShjb25zdCBT
dHJpbmcmIGNodW5rKSBvdmVycmlkZSB7IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5hZGRIZWFwU25h
cHNob3RDaHVuayhtX3VpZCwgY2h1bmspOyB9CisgICAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlIHsg
bV9mcm9udGVuZERpc3BhdGNoZXItPmZpbmlzaEhlYXBTbmFwc2hvdChtX3VpZCk7IH0KIHByaXZh
dGU6CiAgICAgSW5zcGVjdG9yUHJvZmlsZXJGcm9udGVuZERpc3BhdGNoZXIqIG1fZnJvbnRlbmRE
aXNwYXRjaGVyOwogICAgIGludCBtX3VpZDsKQEAgLTM3NiwxNiArMzc2LDE2IEBAIGNsYXNzIEhl
YXBTbmFwc2hvdFByb2dyZXNzOiBwdWJsaWMgU2NyaXB0UHJvZmlsZXI6OkhlYXBTbmFwc2hvdFBy
b2dyZXNzIHsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBIZWFwU25hcHNob3RQcm9ncmVzcyhJbnNw
ZWN0b3JQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlciogZnJvbnRlbmQpCiAgICAgICAgIDogbV9m
cm9udGVuZERpc3BhdGNoZXIoZnJvbnRlbmQpIHsgfQotICAgIHZvaWQgU3RhcnQoaW50IHRvdGFs
V29yaykKKyAgICB2b2lkIFN0YXJ0KGludCB0b3RhbFdvcmspIG92ZXJyaWRlCiAgICAgewogICAg
ICAgICBtX3RvdGFsV29yayA9IHRvdGFsV29yazsKICAgICB9Ci0gICAgdm9pZCBXb3JrZWQoaW50
IHdvcmtEb25lKQorICAgIHZvaWQgV29ya2VkKGludCB3b3JrRG9uZSkgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlcikKICAgICAgICAgICAgIG1fZnJvbnRl
bmREaXNwYXRjaGVyLT5yZXBvcnRIZWFwU25hcHNob3RQcm9ncmVzcyh3b3JrRG9uZSwgbV90b3Rh
bFdvcmspOwogICAgIH0KLSAgICB2b2lkIERvbmUoKSB7IH0KKyAgICB2b2lkIERvbmUoKSBvdmVy
cmlkZSB7IH0KICAgICBib29sIGlzQ2FuY2VsZWQoKSB7IHJldHVybiBmYWxzZTsgfQogcHJpdmF0
ZToKICAgICBJbnNwZWN0b3JQcm9maWxlckZyb250ZW5kRGlzcGF0Y2hlciogbV9mcm9udGVuZERp
c3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuaAppbmRleCAwZDhmMzRiLi5iOGMwZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKQEAgLTY5LDM2ICs2OSwzNiBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGRQcm9maWxlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4g
cHJwUHJvZmlsZSwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgdm9pZCBhZGRQcm9maWxlRmluaXNoZWRNZXNz
YWdlVG9Db25zb2xlKFBhc3NSZWZQdHI8U2NyaXB0UHJvZmlsZT4sIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAg
IHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYgdGl0
bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpOwotICAgIHZpcnR1YWwgdm9pZCBjb2xsZWN0R2FyYmFnZShFcnJvclN0
cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhclByb2ZpbGVzKEVycm9yU3RyaW5nKikgeyBy
ZXNldFN0YXRlKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdEdhcmJhZ2UoRXJyb3JTdHJp
bmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJQcm9maWxlcyhFcnJvclN0cmlu
ZyopIG92ZXJyaWRlIHsgcmVzZXRTdGF0ZSgpOyB9CiAgICAgdm9pZCByZXNldFN0YXRlKCk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlU2NyaXB0KCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBpc1NhbXBsaW5nKEVycm9yU3RyaW5nKiwgYm9vbCopOwotICAgIHZpcnR1YWwgdm9pZCBoYXNI
ZWFwUHJvZmlsZXIoRXJyb3JTdHJpbmcqLCBib29sKik7CisgICAgdmlydHVhbCB2b2lkIGlzU2Ft
cGxpbmcoRXJyb3JTdHJpbmcqLCBib29sKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGhh
c0hlYXBQcm9maWxlcihFcnJvclN0cmluZyosIGJvb2wqKSBvdmVycmlkZTsKIAotICAgIHZpcnR1
YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShF
cnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBzdGFydChFcnJvclN0cmluZyogPSAwKTsK
LSAgICB2aXJ0dWFsIHZvaWQgc3RvcChFcnJvclN0cmluZyogPSAwKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoRXJyb3JT
dHJpbmcqID0gMCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0b3AoRXJyb3JTdHJpbmcq
ID0gMCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpc2FibGUoKTsKICAgICB2b2lkIGVuYWJsZShi
b29sIHNraXBSZWNvbXBpbGUpOwogICAgIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5hYmxlZDsgfQogICAgIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1l
KGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIHZvaWQg
Z2V0UHJvZmlsZUhlYWRlcnMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UHJvZmlsZXI6OlByb2ZpbGVIZWFk
ZXI+PiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRDUFVQcm9maWxlKEVycm9yU3RyaW5nKiwgaW50
IHVpZCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpDUFVQcm9maWxl
PiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwU25hcHNob3QoRXJyb3JTdHJpbmcqLCBpbnQg
dWlkKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlUHJvZmlsZShFcnJvclN0cmluZyosIGNvbnN0
IFN0cmluZyYgdHlwZSwgaW50IHVpZCk7CisgICAgdmlydHVhbCB2b2lkIGdldFByb2ZpbGVIZWFk
ZXJzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PElu
c3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlByb2ZpbGVyOjpQcm9maWxlSGVhZGVyPj4mKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0Q1BVUHJvZmlsZShFcnJvclN0cmluZyosIGludCB1aWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4mKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwg
aW50IHVpZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZVByb2ZpbGUoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHR5cGUsIGludCB1aWQpIG92ZXJyaWRlOwogCiAgICAgdmly
dHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIq
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tl
bmQoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgdm9pZCB0YWtlSGVhcFNuYXBzaG90KEVycm9y
U3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3MpOworICAgIHZpcnR1YWwgdm9pZCB0
YWtlSGVhcFNuYXBzaG90KEVycm9yU3RyaW5nKiwgY29uc3QgYm9vbCogcmVwb3J0UHJvZ3Jlc3Mp
IG92ZXJyaWRlOwogICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcp
OwogCi0gICAgdmlydHVhbCB2b2lkIGdldE9iamVjdEJ5SGVhcE9iamVjdElkKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBoZWFwU25hcHNob3RPYmplY3RJZCwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4mIHJlc3VsdCk7Ci0gICAgdmlydHVhbCB2b2lkIGdldEhlYXBPYmplY3RJZChFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFN0cmluZyogaGVhcFNuYXBzaG90T2JqZWN0
SWQpOworICAgIHZpcnR1YWwgdm9pZCBnZXRPYmplY3RCeUhlYXBPYmplY3RJZChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgaGVhcFNuYXBzaG90T2JqZWN0SWQsIGNvbnN0IFN0cmluZyogb2Jq
ZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRIZWFwT2JqZWN0
SWQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBTdHJpbmcqIGhlYXBTbmFw
c2hvdE9iamVjdElkKSBvdmVycmlkZTsKIAogcHJvdGVjdGVkOgogICAgIEluc3BlY3RvclByb2Zp
bGVyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckNvbnNvbGVBZ2VudCosIFBh
Z2VJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IDFlMmU3ZTguLmM5NTBiNzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApA
QCAtMTI1LDE4ICsxMjUsMTggQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmVzb3VyY2VzRGF0YVNp
emVMaW1pdHNGcm9tSW50ZXJuYWxzKGludCBtYXhpbXVtUmVzb3VyY2VzQ29udGVudFNpemUsIGlu
dCBtYXhpbXVtU2luZ2xlUmVzb3VyY2VDb250ZW50U2l6ZSk7CiAKICAgICAvLyBDYWxsZWQgZnJv
bSBmcm9udGVuZAotICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKLSAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBzZXRF
eHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nKiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRSZXNwb25zZUJvZHkoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBi
YXNlNjRFbmNvZGVkKTsKLQotICAgIHZpcnR1YWwgdm9pZCByZXBsYXlYSFIoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJC
cm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqLCBib29sKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
QnJvd3NlckNhY2hlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbkNsZWFyQnJv
d3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqLCBib29sKik7Ci0gICAgdmlydHVhbCB2b2lkIGNsZWFy
QnJvd3NlckNvb2tpZXMoRXJyb3JTdHJpbmcqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FjaGVE
aXNhYmxlZChFcnJvclN0cmluZyosIGJvb2wgY2FjaGVEaXNhYmxlZCk7CisgICAgdmlydHVhbCB2
b2lkIGVuYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNh
YmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRU
UEhlYWRlcnMoRXJyb3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGdldFJlc3BvbnNlQm9keShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wq
IGJhc2U2NEVuY29kZWQpIG92ZXJyaWRlOworCisgICAgdmlydHVhbCB2b2lkIHJlcGxheVhIUihF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVxdWVzdElkKSBvdmVycmlkZTsKKworICAgIHZp
cnR1YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyosIGJvb2wqKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcqKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ29va2llcyhFcnJvclN0
cmluZyosIGJvb2wqKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2VyQ29v
a2llcyhFcnJvclN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRDYWNoZURp
c2FibGVkKEVycm9yU3RyaW5nKiwgYm9vbCBjYWNoZURpc2FibGVkKSBvdmVycmlkZTsKIAogcHJp
dmF0ZToKICAgICB2b2lkIGVuYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGNhODc0NWUuLmM4NDBlMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTYy
LDkgKzYyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkluc3BlY3RvclJ1bnRpbWVBZ2VudCgp
OwogCiAgICAgLy8gUGFydCBvZiB0aGUgcHJvdG9jb2wuCi0gICAgdmlydHVhbCB2b2lkIGVuYWJs
ZShFcnJvclN0cmluZyopIHsgbV9lbmFibGVkID0gdHJ1ZTsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKEVycm9yU3RyaW5nKikgeyBtX2VuYWJsZWQgPSBmYWxzZTsgfQotICAgIHZpcnR1YWwg
dm9pZCBwYXJzZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6U3ludGF4RXJyb3JUeXBlOjpFbnVtKiByZXN1bHQs
IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBtZXNzYWdlLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6RXJyb3JSYW5nZT4mKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGUgeyBtX2VuYWJsZWQgPSB0
cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZSB7
IG1fZW5hYmxlZCA9IGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIHBhcnNlKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50
aW1lOjpTeW50YXhFcnJvclR5cGU6OkVudW0qIHJlc3VsdCwgSW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6T3B0T3V0cHV0PFN0cmluZz4qIG1lc3NhZ2UsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpSdW50aW1lOjpFcnJvclJhbmdlPiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBl
dmFsdWF0ZShFcnJvclN0cmluZyosCiAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sCiAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLApA
QCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBy
ZXR1cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2
aWV3LAogICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKKyAgICAgICAgICAg
ICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcq
LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwKICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKQEAgLTgzLDExICs4
MywxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sKiByZXR1
cm5CeVZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZ2VuZXJhdGVQ
cmV2aWV3LAogICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU9iamVjdChFcnJvclN0cmluZyosIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQpOwotICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVydGllcywg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0
b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpJ
bnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3BlcnRpZXMpOwotICAgIHZp
cnR1YWwgdm9pZCByZWxlYXNlT2JqZWN0R3JvdXAoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IG9iamVjdEdyb3VwKTsKLSAgICB2aXJ0dWFsIHZvaWQgcnVuKEVycm9yU3RyaW5nKik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9v
bD4qIHdhc1Rocm93bikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3Qo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IGJvb2wqIG93blByb3BlcnRpZXMsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWls
ZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpQcm9wZXJ0eURlc2Ny
aXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+
PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFz
ZU9iamVjdEdyb3VwKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyopIG92ZXJyaWRlOwogCiAj
aWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgdm9pZCBzZXRTY3JpcHREZWJ1Z1Nl
cnZlcihTY3JpcHREZWJ1Z1NlcnZlciopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXggMmIzMTZjMy4uMGFjZDExZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0yNjIsMjMgKzI2
MiwyMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGVTaGVl
dEZvcklubGluZVN0eWxlPiBjcmVhdGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5n
JiBpZCwgUGFzc1JlZlB0cjxFbGVtZW50PiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpT
dHlsZVNoZWV0T3JpZ2luOjpFbnVtLCBMaXN0ZW5lciopOwogCiAgICAgdm9pZCBkaWRNb2RpZnlF
bGVtZW50QXR0cmlidXRlKCk7Ci0gICAgdmlydHVhbCBib29sIGdldFRleHQoU3RyaW5nKiByZXN1
bHQpIGNvbnN0OwotICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVGb3JJZChj
b25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0IHsgQVNTRVJUX1VOVVNFRChpZCwgIWlkLm9y
ZGluYWwoKSk7IHJldHVybiBpbmxpbmVTdHlsZSgpOyB9CisgICAgdmlydHVhbCBib29sIGdldFRl
eHQoU3RyaW5nKiByZXN1bHQpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGVGb3JJZChjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQpIGNvbnN0IG92
ZXJyaWRlIHsgQVNTRVJUX1VOVVNFRChpZCwgIWlkLm9yZGluYWwoKSk7IHJldHVybiBpbmxpbmVT
dHlsZSgpOyB9CiAKIHByb3RlY3RlZDoKICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5l
U3R5bGUoSW5zcGVjdG9yUGFnZUFnZW50KiwgY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxF
bGVtZW50PiwgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpTdHlsZVNoZWV0T3JpZ2luOjpF
bnVtLCBMaXN0ZW5lciopOwogCi0gICAgdmlydHVhbCBEb2N1bWVudCogb3duZXJEb2N1bWVudCgp
IGNvbnN0OwotICAgIHZpcnR1YWwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNl
RGF0YUZvcihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkgY29uc3QgeyBBU1NFUlRfVU5VU0VE
KHN0eWxlLCBzdHlsZSA9PSBpbmxpbmVTdHlsZSgpKTsgcmV0dXJuIG1fcnVsZVNvdXJjZURhdGE7
IH0KLSAgICB2aXJ0dWFsIHVuc2lnbmVkIHJ1bGVJbmRleEJ5U3R5bGUoQ1NTU3R5bGVEZWNsYXJh
dGlvbiopIGNvbnN0IHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0dWFsIGJvb2wgZW5zdXJlUGFyc2Vk
RGF0YVJlYWR5KCk7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlPiBpbnNw
ZWN0b3JTdHlsZUZvcklkKGNvbnN0IEluc3BlY3RvckNTU0lkJik7Ci0gICAgdmlydHVhbCB2b2lk
IHJlbWVtYmVySW5zcGVjdG9yU3R5bGUoUmVmUHRyPEluc3BlY3RvclN0eWxlPikgeyB9Ci0gICAg
dmlydHVhbCB2b2lkIGZvcmdldEluc3BlY3RvclN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qKSB7
IH0KKyAgICB2aXJ0dWFsIERvY3VtZW50KiBvd25lckRvY3VtZW50KCkgY29uc3Qgb3ZlcnJpZGU7
CisgICAgdmlydHVhbCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhRm9y
KENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKSBjb25zdCBvdmVycmlkZSB7IEFTU0VSVF9VTlVT
RUQoc3R5bGUsIHN0eWxlID09IGlubGluZVN0eWxlKCkpOyByZXR1cm4gbV9ydWxlU291cmNlRGF0
YTsgfQorICAgIHZpcnR1YWwgdW5zaWduZWQgcnVsZUluZGV4QnlTdHlsZShDU1NTdHlsZURlY2xh
cmF0aW9uKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBl
bnN1cmVQYXJzZWREYXRhUmVhZHkoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8
SW5zcGVjdG9yU3R5bGU+IGluc3BlY3RvclN0eWxlRm9ySWQoY29uc3QgSW5zcGVjdG9yQ1NTSWQm
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtZW1iZXJJbnNwZWN0b3JTdHlsZShSZWZQ
dHI8SW5zcGVjdG9yU3R5bGU+KSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZm9yZ2V0
SW5zcGVjdG9yU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiopIG92ZXJyaWRlIHsgfQogCiAgICAg
Ly8gQWxzbyBhY2Nlc3NlZCBieSBmcmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5bGUuCi0gICAgdmly
dHVhbCBib29sIHNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90
Pj4gbGluZUVuZGluZ3MoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2V0U3R5bGVUZXh0KENT
U1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncygp
IGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAgIENTU1N0eWxlRGVjbGFyYXRpb24qIGlu
bGluZVN0eWxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBlMzk5OTkzLi4yZjRmN2RlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTEzNCwx
MCArMTM0LDEwIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRB
bmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIG92ZXJyaWRlOwogCi0gICAgdmlydHVh
bCB2b2lkIHN0YXJ0KEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCwg
Y29uc3QgYm9vbCogaW5jbHVkZURvbUNvdW50ZXJzKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcChF
cnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9pZCBjYW5Nb25pdG9yTWFpblRocmVhZChFcnJv
clN0cmluZyosIGJvb2wqKTsKLSAgICB2aXJ0dWFsIHZvaWQgc3VwcG9ydHNGcmFtZUluc3RydW1l
bnRhdGlvbihFcnJvclN0cmluZyosIGJvb2wqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RhcnQoRXJy
b3JTdHJpbmcqLCBjb25zdCBpbnQqIG1heENhbGxTdGFja0RlcHRoLCBjb25zdCBib29sKiBpbmNs
dWRlRG9tQ291bnRlcnMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdG9wKEVycm9yU3Ry
aW5nKikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGNhbk1vbml0b3JNYWluVGhyZWFkKEVy
cm9yU3RyaW5nKiwgYm9vbCopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzdXBwb3J0c0Zy
YW1lSW5zdHJ1bWVudGF0aW9uKEVycm9yU3RyaW5nKiwgYm9vbCopIG92ZXJyaWRlOwogCiAgICAg
aW50IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAppbmRleCBhZjllODZjLi5kZTlkOGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIFdvcmtl
ckdsb2JhbFNjb3BlUHJveHk6OlBhZ2VJbnNwZWN0b3IgaW1wbGVtZW50YXRpb24KLSAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRnJvbVdvcmtlcihjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoTWVzc2FnZUZyb21Xb3JrZXIoY29uc3QgU3RyaW5n
JiBtZXNzYWdlKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVl
PiB2YWx1ZSA9IEluc3BlY3RvclZhbHVlOjpwYXJzZUpTT04obWVzc2FnZSk7CiAgICAgICAgIGlm
ICghdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJB
Z2VudC5oCmluZGV4IDFmMDlkZjEuLjNhOTUxNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC02MiwxMyArNjIsMTMgQEAgcHVibGlj
OgogICAgIHZvaWQgd29ya2VyR2xvYmFsU2NvcGVUZXJtaW5hdGVkKFdvcmtlckdsb2JhbFNjb3Bl
UHJveHkqKTsKIAogICAgIC8vIENhbGxlZCBmcm9tIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
Ci0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1YWwgdm9p
ZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7Ci0gICAgdmlydHVhbCB2b2lkIGNhbkluc3BlY3RXb3Jr
ZXJzKEVycm9yU3RyaW5nKiwgYm9vbCopOwotICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0VG9Xb3Jr
ZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQpOwotICAgIHZpcnR1YWwgdm9pZCBkaXNjb25u
ZWN0RnJvbVdvcmtlcihFcnJvclN0cmluZyosIGludCB3b3JrZXJJZCk7Ci0gICAgdmlydHVhbCB2
b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcqLCBpbnQgd29ya2VySWQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIG1lc3NhZ2UpOwotICAgIHZpcnR1
YWwgdm9pZCBzZXRBdXRvY29ubmVjdFRvV29ya2VycyhFcnJvclN0cmluZyosIGJvb2wgdmFsdWUp
OworICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBjYW5JbnNwZWN0V29ya2VycyhFcnJvclN0cmluZyosIGJvb2wqKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgY29ubmVjdFRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklk
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzY29ubmVjdEZyb21Xb3JrZXIoRXJyb3JT
dHJpbmcqLCBpbnQgd29ya2VySWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZW5kTWVz
c2FnZVRvV29ya2VyKEVycm9yU3RyaW5nKiwgaW50IHdvcmtlcklkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBtZXNzYWdlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0QXV0b2Nvbm5lY3RUb1dvcmtlcnMoRXJyb3JTdHJpbmcqLCBib29sIHZhbHVlKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGNyZWF0ZVdvcmtlckZyb250ZW5kQ2hhbm5l
bHNGb3JFeGlzdGluZ1dvcmtlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNv
bnNvbGVBZ2VudC5oCmluZGV4IGUxYzc2Y2YuLmQ1NTdmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuaApAQCAtNDksOCArNDksOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzV29ya2VyQWdlbnQoKSBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBjbGVhck1lc3NhZ2VzKEVycm9yU3RyaW5n
Kik7Ci0gICAgdmlydHVhbCB2b2lkIGFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQg
bm9kZUlkKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNZXNzYWdlcyhFcnJvclN0cmluZyopIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBhZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiwg
aW50IG5vZGVJZCkgb3ZlcnJpZGU7CiAKICAgICBJbnNwZWN0b3JET01BZ2VudCogbV9pbnNwZWN0
b3JET01BZ2VudDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJB
Z2VudC5oCmluZGV4IGE0NGU2NTIuLjBhNTc5YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oCkBAIC01MywxOCArNTMsMTggQEAgcHVibGljOgogICAg
IHZvaWQgZGlkQ2xlYXJNYWluRnJhbWVXaW5kb3dPYmplY3QoKTsKIAogcHJvdGVjdGVkOgotICAg
IHZpcnR1YWwgdm9pZCBlbmFibGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZSgpOworICAg
IHZpcnR1YWwgdm9pZCBlbmFibGUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJs
ZSgpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3Rlbmlu
Z1NjcmlwdERlYnVnU2VydmVyKCk7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3Jp
cHREZWJ1Z1NlcnZlcigpOwotICAgIHZpcnR1YWwgUGFnZVNjcmlwdERlYnVnU2VydmVyJiBzY3Jp
cHREZWJ1Z1NlcnZlcigpOwotICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpOwotICAgIHZp
cnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCk7CisgICAgdmlydHVhbCB2b2lkIHN0YXJ0TGlzdGVu
aW5nU2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcExp
c3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGU7CisgICAgdmlydHVh
bCB2b2lkIG11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHVubXV0ZUNv
bnNvbGUoKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlw
dCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlv
bkNvbnRleHRJZCk7Ci0gICAgdmlydHVhbCB2b2lkIHNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nKik7CisgICAgdmlydHVhbCBJbnNwZWN0b3I6OkluamVjdGVkU2Ny
aXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyosIGNvbnN0IGludCogZXhlY3V0
aW9uQ29udGV4dElkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3Nh
Z2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcqKSBvdmVycmlkZTsKIAogICAgIEluc3BlY3Rv
clBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yT3ZlcmxheSogbV9vdmVybGF5
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKaW5kZXggOTg4
NThjOC4uZjBjYmE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVB
Z2VudC5oCkBAIC01NSwxNiArNTUsMTYgQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVu
ZENoYW5uZWwqLCBJbnNwZWN0b3I6Okluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyopOwotICAgIHZpcnR1
YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nKik7CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZShF
cnJvclN0cmluZyopIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3Ry
aW5nKikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRpZENyZWF0ZU1haW5Xb3JsZENvbnRleHQoRnJh
bWUqKTsKICAgICB2b2lkIGRpZENyZWF0ZUlzb2xhdGVkQ29udGV4dChGcmFtZSosIEpTQzo6RXhl
Y1N0YXRlKiwgU2VjdXJpdHlPcmlnaW4qKTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiwg
Y29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpOwotICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29u
c29sZSgpOwotICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCk7CisgICAgdmlydHVhbCBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmlu
ZyosIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29u
c29sZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVwb3J0RXhlY3V0aW9uQ29udGV4dENyZWF0aW9u
KCk7CiAgICAgdm9pZCBub3RpZnlDb250ZXh0Q3JlYXRlZChjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IEpTQzo6RXhlY1N0YXRlKiwgU2VjdXJpdHlPcmlnaW4qLCBib29sIGlzUGFnZUNvbnRleHQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmgKaW5kZXgg
ZjY2ZDAyNS4uOTlhZDU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJD
b25zb2xlQWdlbnQuaApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IGlzV29ya2VyQWdlbnQoKSBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKIHByaXZhdGU6Ci0g
ICAgdmlydHVhbCB2b2lkIGFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlk
KTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkSW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyosIGludCBu
b2RlSWQpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDY2Nzk3
NzAuLjU1OGY5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJE
ZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVi
dWdnZXJBZ2VudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fdGhy
ZWFkKHRocmVhZCkKICAgICAgICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKHdvcmtlckdsb2JhbFNj
b3BlKSB7IH0KICAgICB2aXJ0dWFsIH5SdW5JbnNwZWN0b3JDb21tYW5kc1Rhc2soKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgcnVuKCkKKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgb3ZlcnJpZGUKICAg
ICB7CiAgICAgICAgIC8vIFByb2Nlc3MgYWxsIHF1ZXVlZCBkZWJ1Z2dlciBjb21tYW5kcy4gSXQg
aXMgc2FmZSB0byB1c2UgbV93b3JrZXJHbG9iYWxTY29wZSBoZXJlCiAgICAgICAgIC8vIGJlY2F1
c2UgaXQgaXMgYWxpdmUgaWYgUnVuV29ya2VyTG9vcCBpcyBub3QgdGVybWluYXRlZCwgb3RoZXJ3
aXNlIGl0IHdpbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJ
bnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBjOGU0MTQwLi4wMjNlNDY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC02OSw3ICs2OSw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBQYWdlSW5zcGVjdG9y
UHJveHkoV29ya2VyR2xvYmFsU2NvcGUqIHdvcmtlckdsb2JhbFNjb3BlKSA6IG1fd29ya2VyR2xv
YmFsU2NvcGUod29ya2VyR2xvYmFsU2NvcGUpIHsgfQogICAgIHZpcnR1YWwgflBhZ2VJbnNwZWN0
b3JQcm94eSgpIHsgfQogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3NhZ2VUb0Zy
b250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKKyAgICB2aXJ0dWFsIGJvb2wgc2VuZE1lc3Nh
Z2VUb0Zyb250ZW5kKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgb3ZlcnJpZGUKICAgICB7CiAgICAg
ICAgIG1fd29ya2VyR2xvYmFsU2NvcGUtPnRocmVhZCgpLT53b3JrZXJSZXBvcnRpbmdQcm94eSgp
LnBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yKG1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gdHJ1
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAppbmRl
eCBhZGNlZGUzLi5lOTAyMmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
clJ1bnRpbWVBZ2VudC5oCkBAIC00OSwxNiArNDksMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZCgpIG92ZXJyaWRlOwogCiAgICAgLy8g
UHJvdG9jb2wgY29tbWFuZHMuCi0gICAgdmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyopOwor
ICAgIHZpcnR1YWwgdm9pZCBydW4oRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKIAogI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQogICAgIHZvaWQgcGF1c2VXb3JrZXJHbG9iYWxTY29wZShX
b3JrZXJHbG9iYWxTY29wZSopOwogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VS
KQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRl
eHRJZCk7Ci0gICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xlKCk7Ci0gICAgdmlydHVhbCB2b2lk
IHVubXV0ZUNvbnNvbGUoKTsKKyAgICB2aXJ0dWFsIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBleGVjdXRpb25D
b250ZXh0SWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpIG92ZXJy
aWRlOworICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAgICAgV29y
a2VyR2xvYmFsU2NvcGUqIG1fd29ya2VyR2xvYmFsU2NvcGU7CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yUnVudGltZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OwogICAgIGJvb2wgbV9wYXVzZWQ7Cg==
</data>
<flag name="review"
          id="245447"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>