<?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>139994</bug_id>
          
          <creation_ts>2014-12-29 11:36:01 -0800</creation_ts>
          <short_desc>Remove the old user message coder code</short_desc>
          <delta_ts>2022-10-09 06:02:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>ahmad.saleem792</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1058121</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-29 11:36:01 -0800</bug_when>
    <thetext>Remove the old user message coder code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058122</commentid>
    <comment_count>1</comment_count>
      <attachid>243804</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-12-29 11:36:23 -0800</bug_when>
    <thetext>Created attachment 243804
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1058123</commentid>
    <comment_count>2</comment_count>
      <attachid>243804</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-12-29 11:37:10 -0800</bug_when>
    <thetext>Comment on attachment 243804
Patch

Farewell beautiful code!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1904339</commentid>
    <comment_count>3</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-10-09 06:02:03 -0700</bug_when>
    <thetext>Landed in this - https://github.com/WebKit/WebKit/commit/5586edc4f42955f40b356a10433bc505a56b3cc5

and didn&apos;t backed out.

Marking this as &quot;RESOLVED FIXED&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>243804</attachid>
            <date>2014-12-29 11:36:23 -0800</date>
            <delta_ts>2014-12-29 11:37:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-139994-20141229113629.patch</filename>
            <type>text/plain</type>
            <size>81382</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc3ODAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZDA5NDI0NDViYjc1Mzli
MmYzODQ5MDZlMTFlY2Q0ODBjM2RmN2VmNi4uMzllMzBhYzQzMDQzMDhkNjY4ZmY0ZjgwY2QwZmI2
ZjM4YmExNGNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDE0LTEyLTI5ICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVtb3ZlIHRoZSBv
bGQgdXNlciBtZXNzYWdlIGNvZGVyIGNvZGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzOTk5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaDoKKyAgICAg
ICAgKElQQzo6Y2FsbE1lbWJlckZ1bmN0aW9uSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIChJUEM6
OmNhbGxNZW1iZXJGdW5jdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChJUEM6OmhhbmRsZU1lc3Nh
Z2VWYXJpYWRpYyk6IERlbGV0ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMu
cHk6CisgICAgICAgIChkZWNvZGVfdHlwZSk6CisgICAgICAgIChhc3luY19tZXNzYWdlX3N0YXRl
bWVudCk6CisgICAgICAgIChzeW5jX21lc3NhZ2Vfc3RhdGVtZW50KToKKyAgICAgICAgKiBTaGFy
ZWQvVXNlck1lc3NhZ2VDb2RlcnMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL09i
akNPYmplY3RHcmFwaENvZGVycy5oOiBSZW1vdmVkLgorICAgICAgICAqIFNoYXJlZC9tYWMvT2Jq
Q09iamVjdEdyYXBoQ29kZXJzLm1tOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJD
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQ29udGV4
dFVzZXJNZXNzYWdlQ29kZXJzLmg6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcDoKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmg6
IFJlbW92ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb25uZWN0aW9uVG9VSVByb2Nlc3Mu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50
LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUu
Y3BwOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcDoKKworMjAxNC0xMi0yOSAgQW5kZXJzIENhcmxzc29uICA8YW5k
ZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIENvbnZlcnQgaW5qZWN0ZWQgYnVuZGxlIG1lc3Nh
Z2UgcG9zdGluZyB0byBVc2VyRGF0YQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM5OTkzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsYXRm
b3JtL0lQQy9IYW5kbGVNZXNzYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9JUEMvSGFu
ZGxlTWVzc2FnZS5oCmluZGV4IGNhNWI3NDY3ZGZlMjMyZGYwZDkyMmEyYWFjOTUwNjdhNDRmOWU2
NWMuLmIwZjlkYWE0NjE0ZGM3NmJjNzc0NmJiMmRiNWJkNTFmODQ4YmNiYTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL0lQQy9IYW5kbGVNZXNzYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGxhdGZvcm0vSVBDL0hhbmRsZU1lc3NhZ2UuaApAQCAtNzgsMzQgKzc4LDYgQEAg
dm9pZCBjYWxsTWVtYmVyRnVuY3Rpb24oQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgQXJnc1R1cGxl
JiYgYXJncywgUmVwbHlBcmdzVHVwbGUKICAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVj
dCwgZnVuY3Rpb24sIGNvbm5lY3Rpb24sIHN0ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpLCBy
ZXBseUFyZ3MsIEFyZ3NJbmRpY2llcygpLCBSZXBseUFyZ3NJbmRpY2llcygpKTsKIH0KIAotLy8g
VmFyaWFkaWMgZGlzcGF0Y2ggZnVuY3Rpb25zLgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlw
ZW5hbWUgTUYsIHR5cGVuYW1lIEFyZ3NUdXBsZSwgc2l6ZV90Li4uIEFyZ3NJbmRleD4KLXZvaWQg
Y2FsbE1lbWJlckZ1bmN0aW9uSW1wbChDKiBvYmplY3QsIE1GIGZ1bmN0aW9uLCBNZXNzYWdlRGVj
b2RlciYgZGVjb2RlciwgQXJnc1R1cGxlJiYgYXJncywgc3RkOjppbmRleF9zZXF1ZW5jZTxBcmdz
SW5kZXguLi4+KQotewotICAgIChvYmplY3QtPipmdW5jdGlvbikoc3RkOjpnZXQ8QXJnc0luZGV4
PihzdGQ6OmZvcndhcmQ8QXJnc1R1cGxlPihhcmdzKSkuLi4sIGRlY29kZXIpOwotfQotCi10ZW1w
bGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRiwgdHlwZW5hbWUgQXJnc1R1cGxlLCB0eXBlbmFt
ZSBBcmdzSW5kaWNpZXMgPSBzdGQ6Om1ha2VfaW5kZXhfc2VxdWVuY2U8c3RkOjp0dXBsZV9zaXpl
PEFyZ3NUdXBsZT46OnZhbHVlPj4KLXZvaWQgY2FsbE1lbWJlckZ1bmN0aW9uKEFyZ3NUdXBsZSYm
IGFyZ3MsIE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQot
ewotICAgIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwob2JqZWN0LCBmdW5jdGlvbiwgZGVjb2Rlciwg
c3RkOjpmb3J3YXJkPEFyZ3NUdXBsZT4oYXJncyksIEFyZ3NJbmRpY2llcygpKTsKLX0KLQotLy8g
VmFyaWFkaWMgZGlzcGF0Y2ggZnVuY3Rpb25zIHdpdGggbm9uLXZhcmlhZGljIHJlcGx5IGFyZ3Vt
ZW50cy4KLQotdGVtcGxhdGUgPHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GLCB0eXBlbmFtZSBBcmdz
VHVwbGUsIHNpemVfdC4uLiBBcmdzSW5kZXgsIHR5cGVuYW1lIFJlcGx5QXJnc1R1cGxlLCBzaXpl
X3QuLi4gUmVwbHlBcmdzSW5kZXg+Ci12b2lkIGNhbGxNZW1iZXJGdW5jdGlvbkltcGwoQyogb2Jq
ZWN0LCBNRiBmdW5jdGlvbiwgTWVzc2FnZURlY29kZXImIGRlY29kZXIsIEFyZ3NUdXBsZSYmIGFy
Z3MsIFJlcGx5QXJnc1R1cGxlJiByZXBseUFyZ3MsIHN0ZDo6aW5kZXhfc2VxdWVuY2U8QXJnc0lu
ZGV4Li4uPiwgc3RkOjppbmRleF9zZXF1ZW5jZTxSZXBseUFyZ3NJbmRleC4uLj4pCi17Ci0gICAg
KG9iamVjdC0+KmZ1bmN0aW9uKShzdGQ6OmdldDxBcmdzSW5kZXg+KHN0ZDo6Zm9yd2FyZDxBcmdz
VHVwbGU+KGFyZ3MpKS4uLiwgZGVjb2Rlciwgc3RkOjpnZXQ8UmVwbHlBcmdzSW5kZXg+KHJlcGx5
QXJncykuLi4pOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQywgdHlwZW5hbWUgTUYsIHR5cGVu
YW1lIEFyZ3NUdXBsZSwgdHlwZW5hbWUgQXJnc0luZGljaWVzID0gc3RkOjptYWtlX2luZGV4X3Nl
cXVlbmNlPHN0ZDo6dHVwbGVfc2l6ZTxBcmdzVHVwbGU+Ojp2YWx1ZT4sIHR5cGVuYW1lIFJlcGx5
QXJnc1R1cGxlLCB0eXBlbmFtZSBSZXBseUFyZ3NJbmRpY2llcyA9IHN0ZDo6bWFrZV9pbmRleF9z
ZXF1ZW5jZTxzdGQ6OnR1cGxlX3NpemU8UmVwbHlBcmdzVHVwbGU+Ojp2YWx1ZT4+Ci12b2lkIGNh
bGxNZW1iZXJGdW5jdGlvbihBcmdzVHVwbGUmJiBhcmdzLCBNZXNzYWdlRGVjb2RlciYgZGVjb2Rl
ciwgUmVwbHlBcmdzVHVwbGUmIHJlcGx5QXJncywgQyogb2JqZWN0LCBNRiBmdW5jdGlvbikKLXsK
LSAgICBjYWxsTWVtYmVyRnVuY3Rpb25JbXBsKG9iamVjdCwgZnVuY3Rpb24sIGRlY29kZXIsIHN0
ZDo6Zm9yd2FyZDxBcmdzVHVwbGU+KGFyZ3MpLCByZXBseUFyZ3MsIEFyZ3NJbmRpY2llcygpLCBS
ZXBseUFyZ3NJbmRpY2llcygpKTsKLX0KLQogLy8gTWFpbiBkaXNwYXRjaCBmdW5jdGlvbnMKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+CkBAIC0xNjAsMzEg
KzEzMiw2IEBAIHZvaWQgaGFuZGxlTWVzc2FnZShDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBNZXNz
YWdlRGVjb2RlciYgZGVjb2RlciwgQyogb2JqZWN0LCBNCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IFQsIHR5cGVuYW1lIEMsIHR5cGVuYW1lIE1GPgotdm9pZCBoYW5kbGVNZXNzYWdlVmFyaWFkaWMo
TWVzc2FnZURlY29kZXImIGRlY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCi17Ci0gICAg
dHlwZW5hbWUgVDo6RGVjb2RlVHlwZSBhcmd1bWVudHM7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShhcmd1bWVudHMpKSB7Ci0gICAgICAgIEFTU0VSVChkZWNvZGVyLmlzSW52YWxpZCgpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjYWxsTWVtYmVyRnVuY3Rpb24oV1RGOjptb3ZlKGFy
Z3VtZW50cyksIGRlY29kZXIsIG9iamVjdCwgZnVuY3Rpb24pOwotfQotCi10ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDLCB0eXBlbmFtZSBNRj4KLXZvaWQgaGFuZGxlTWVzc2FnZVZhcmlh
ZGljKE1lc3NhZ2VEZWNvZGVyJiBkZWNvZGVyLCBNZXNzYWdlRW5jb2RlciYgcmVwbHlFbmNvZGVy
LCBDKiBvYmplY3QsIE1GIGZ1bmN0aW9uKQotewotICAgIHR5cGVuYW1lIFQ6OkRlY29kZVR5cGUg
YXJndW1lbnRzOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYXJndW1lbnRzKSkgewotICAgICAg
ICBBU1NFUlQoZGVjb2Rlci5pc0ludmFsaWQoKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICB0eXBlbmFtZSBUOjpSZXBseTo6VmFsdWVUeXBlIHJlcGx5QXJndW1lbnRzOwotICAgIGNh
bGxNZW1iZXJGdW5jdGlvbihXVEY6Om1vdmUoYXJndW1lbnRzKSwgZGVjb2RlciwgcmVwbHlBcmd1
bWVudHMsIG9iamVjdCwgZnVuY3Rpb24pOwotICAgIHJlcGx5RW5jb2RlciA8PCByZXBseUFyZ3Vt
ZW50czsKLX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQywgdHlwZW5hbWUgTUY+
CiB2b2lkIGhhbmRsZU1lc3NhZ2VEZWxheWVkKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIE1lc3Nh
Z2VEZWNvZGVyJiBkZWNvZGVyLCBzdGQ6OnVuaXF1ZV9wdHI8TWVzc2FnZUVuY29kZXI+JiByZXBs
eUVuY29kZXIsIEMqIG9iamVjdCwgTUYgZnVuY3Rpb24pCiB7CiAgICAgdHlwZW5hbWUgVDo6RGVj
b2RlVHlwZSBhcmd1bWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TY3JpcHRzL3dl
YmtpdC9tZXNzYWdlcy5weSBiL1NvdXJjZS9XZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2Vz
LnB5CmluZGV4IDExYzJmNTFhZGJhNzllM2I1MTk2YjRhNDViMzAwZmY2NGU2N2RjODQuLjM2ZTY3
ODc4MzkyOTI0MDFmMzkzZmUzYTBiNGE0NTQyYTNjM2UzODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CisrKyBiL1NvdXJjZS9XZWJLaXQyL1Nj
cmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CkBAIC0yOCw3ICsyOCw2IEBAIGZyb20gd2Via2l0IGlt
cG9ydCBwYXJzZXIKIFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFID0gJ1dhbnRzQ29ubmVjdGlv
bicKIExFR0FDWV9SRUNFSVZFUl9BVFRSSUJVVEUgPSAnTGVnYWN5UmVjZWl2ZXInCiBERUxBWUVE
X0FUVFJJQlVURSA9ICdEZWxheWVkJwotVkFSSUFESUNfQVRUUklCVVRFID0gJ1ZhcmlhZGljJwog
CiBfbGljZW5zZV9oZWFkZXIgPSAiIiIvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTEwMiwxMiArMTAxLDcgQEAgZGVmIHJlcGx5X3R5
cGUobWVzc2FnZSk6CiAKIAogZGVmIGRlY29kZV90eXBlKG1lc3NhZ2UpOgotICAgIHBhcmFtZXRl
cnMgPSBtZXNzYWdlLnBhcmFtZXRlcnMKLQotICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShW
QVJJQURJQ19BVFRSSUJVVEUpOgotICAgICAgICBwYXJhbWV0ZXJzID0gcGFyYW1ldGVyc1s6LTFd
Ci0KLSAgICByZXR1cm4gJ3N0ZDo6dHVwbGU8JXM+JyAlICcsICcuam9pbihwYXJhbWV0ZXIudHlw
ZSBmb3IgcGFyYW1ldGVyIGluIHBhcmFtZXRlcnMpCisgICAgcmV0dXJuICdzdGQ6OnR1cGxlPCVz
PicgJSAnLCAnLmpvaW4ocGFyYW1ldGVyLnR5cGUgZm9yIHBhcmFtZXRlciBpbiBtZXNzYWdlLnBh
cmFtZXRlcnMpCiAKIAogZGVmIG1lc3NhZ2VfdG9fc3RydWN0X2RlY2xhcmF0aW9uKG1lc3NhZ2Up
OgpAQCAtMjY5LDggKzI2Myw2IEBAIGRlZiBhc3luY19tZXNzYWdlX3N0YXRlbWVudChyZWNlaXZl
ciwgbWVzc2FnZSk6CiAgICAgZGlzcGF0Y2hfZnVuY3Rpb25fYXJncyA9IFsnZGVjb2RlcicsICd0
aGlzJywgJyYlcycgJSBoYW5kbGVyX2Z1bmN0aW9uKHJlY2VpdmVyLCBtZXNzYWdlKV0KIAogICAg
IGRpc3BhdGNoX2Z1bmN0aW9uID0gJ2hhbmRsZU1lc3NhZ2UnCi0gICAgaWYgbWVzc2FnZS5oYXNf
YXR0cmlidXRlKFZBUklBRElDX0FUVFJJQlVURSk6Ci0gICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9u
ICs9ICdWYXJpYWRpYycKIAogICAgIGlmIG1lc3NhZ2UuaGFzX2F0dHJpYnV0ZShXQU5UU19DT05O
RUNUSU9OX0FUVFJJQlVURSk6CiAgICAgICAgIGRpc3BhdGNoX2Z1bmN0aW9uX2FyZ3MuaW5zZXJ0
KDAsICdjb25uZWN0aW9uJykKQEAgLTI4Nyw4ICsyNzksNiBAQCBkZWYgc3luY19tZXNzYWdlX3N0
YXRlbWVudChyZWNlaXZlciwgbWVzc2FnZSk6CiAgICAgZGlzcGF0Y2hfZnVuY3Rpb24gPSAnaGFu
ZGxlTWVzc2FnZScKICAgICBpZiBtZXNzYWdlLmhhc19hdHRyaWJ1dGUoREVMQVlFRF9BVFRSSUJV
VEUpOgogICAgICAgICBkaXNwYXRjaF9mdW5jdGlvbiArPSAnRGVsYXllZCcKLSAgICBpZiBtZXNz
YWdlLmhhc19hdHRyaWJ1dGUoVkFSSUFESUNfQVRUUklCVVRFKToKLSAgICAgICAgZGlzcGF0Y2hf
ZnVuY3Rpb24gKz0gJ1ZhcmlhZGljJwogCiAgICAgd2FudHNfY29ubmVjdGlvbiA9IG1lc3NhZ2Uu
aGFzX2F0dHJpYnV0ZShERUxBWUVEX0FUVFJJQlVURSkgb3IgbWVzc2FnZS5oYXNfYXR0cmlidXRl
KFdBTlRTX0NPTk5FQ1RJT05fQVRUUklCVVRFKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvVXNlck1lc3NhZ2VDb2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2Vy
TWVzc2FnZUNvZGVycy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTk4NWY2MmU3
MTlkYWRjNjllNTU1NmU0MDc5YWE0Y2JkMThkZmI1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Vc2VyTWVzc2FnZUNv
ZGVycy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTU3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIFVzZXJNZXNzYWdlQ29kZXJzX2gKLSNkZWZpbmUgVXNlck1lc3NhZ2VDb2RlcnNfaAotCi0j
aW5jbHVkZSAiQVBJQXJyYXkuaCIKLSNpbmNsdWRlICJBUElEYXRhLmgiCi0jaW5jbHVkZSAiQVBJ
RGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIkFQSUVycm9yLmgiCi0jaW5jbHVkZSAiQVBJR2VvbWV0
cnkuaCIKLSNpbmNsdWRlICJBUElOdW1iZXIuaCIKLSNpbmNsdWRlICJBUElTZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaCIKLSNpbmNsdWRlICJBUElTdHJpbmcuaCIKLSNpbmNsdWRlICJBUElVUkwuaCIK
LSNpbmNsdWRlICJBUElVUkxSZXF1ZXN0LmgiCi0jaW5jbHVkZSAiQVBJVVJMUmVzcG9uc2UuaCIK
LSNpbmNsdWRlICJBUElVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKLSNpbmNsdWRlICJBcmd1bWVu
dERlY29kZXIuaCIKLSNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKLSNpbmNsdWRlICJEYXRh
UmVmZXJlbmNlLmgiCi0jaW5jbHVkZSAiU2hhcmVhYmxlQml0bWFwLmgiCi0jaW5jbHVkZSAiV2Vi
Q2VydGlmaWNhdGVJbmZvLmgiCi0jaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCi0j
aW5jbHVkZSAiV2ViSW1hZ2UuaCIKLSNpbmNsdWRlICJXZWJSZW5kZXJMYXllci5oIgotI2luY2x1
ZGUgIldlYlJlbmRlck9iamVjdC5oIgotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gICAtIE51
bGwgLT4gTnVsbAotLy8gICAtIEFQSTo6QXJyYXkgLT4gQVBJOjpBcnJheQotLy8gICAtIEFQSTo6
RGljdGlvbmFyeSAtPiBBUEk6OkRpY3Rpb25hcnkKLS8vICAgLSBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgLT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlCi0vLyAgIC0gQVBJOjpTdHJpbmcgLT4gQVBJOjpT
dHJpbmcKLS8vICAgLSBVc2VyQ29udGVudFVSTFBhdHRlcm4gLT4gVXNlckNvbnRlbnRVUkxQYXR0
ZXJuCi0vLyAgIC0gV2ViQ2VydGlmaWNhdGVJbmZvIC0+IFdlYkNlcnRpZmljYXRlSW5mbwotLy8g
ICAtIEFQSTo6RGF0YSAtPiBBUEk6OkRhdGEKLS8vICAgLSBBUEk6OkRvdWJsZSAtPiBBUEk6OkRv
dWJsZQotLy8gICAtIFdlYkltYWdlIC0+IFdlYkltYWdlCi0vLyAgIC0gV2ViUmVuZGVyTGF5ZXIg
LT4gV2ViUmVuZGVyTGF5ZXIKLS8vICAgLSBXZWJSZW5kZXJPYmplY3QgLT4gV2ViUmVuZGVyT2Jq
ZWN0Ci0vLyAgIC0gQVBJOjpVSW50NjQgLT4gQVBJOjpVSW50NjQKLS8vICAgLSBBUEk6OlVSTCAt
PiBBUEk6OlVSTAotLy8gICAtIEFQSTo6VVJMUmVxdWVzdCAtPiBBUEk6OlVSTFJlcXVlc3QKLS8v
ICAgLSBBUEk6OlVSTFJlc3BvbnNlIC0+IEFQSTo6VVJMUmVzcG9uc2UKLS8vICAgLSBBUEk6OkVy
cm9yIC0+IEFQSTo6RXJyb3IKLQotdGVtcGxhdGU8dHlwZW5hbWUgT3duZXI+Ci1jbGFzcyBVc2Vy
TWVzc2FnZUVuY29kZXIgewotcHVibGljOgotICAgIGJvb2wgYmFzZUVuY29kZShJUEM6OkFyZ3Vt
ZW50RW5jb2RlciYgZW5jb2RlciwgY29uc3QgT3duZXImIGNvZGVyLCBBUEk6Ok9iamVjdDo6VHlw
ZSYgdHlwZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIGlmICghbV9yb290KSB7Ci0gICAgICAgICAg
ICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihBUEk6Ok9iamVjdDo6VHlwZTo6TnVs
bCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHR5cGUg
PSBtX3Jvb3QtPnR5cGUoKTsKLSAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4odHlwZSk7Ci0KLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgQVBJOjpP
YmplY3Q6OlR5cGU6OkFycmF5OiB7Ci0gICAgICAgICAgICBBUEk6OkFycmF5KiBhcnJheSA9IHN0
YXRpY19jYXN0PEFQSTo6QXJyYXkqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oYXJyYXktPnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGFycmF5LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICBlbmNv
ZGVyIDw8IE93bmVyKGNvZGVyLCBhcnJheS0+YXQoaSkpOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6RGljdGlvbmFy
eTogewotICAgICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5KiBkaWN0aW9uYXJ5ID0gc3RhdGljX2Nh
c3Q8QVBJOjpEaWN0aW9uYXJ5Kj4obV9yb290KTsKLSAgICAgICAgICAgIGNvbnN0IEFQSTo6RGlj
dGlvbmFyeTo6TWFwVHlwZSYgbWFwID0gZGljdGlvbmFyeS0+bWFwKCk7Ci0gICAgICAgICAgICBl
bmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtYXAuc2l6ZSgpKTsKLQotICAgICAgICAg
ICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlOjpjb25zdF9pdGVyYXRvciBpdCA9IG1hcC5iZWdp
bigpOwotICAgICAgICAgICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBtYXAuZW5kKCk7Ci0gICAgICAgICAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KSB7
Ci0gICAgICAgICAgICAgICAgZW5jb2RlciA8PCBpdC0+a2V5OwotICAgICAgICAgICAgICAgIGVu
Y29kZXIgPDwgT3duZXIoY29kZXIsIGl0LT52YWx1ZS5nZXQoKSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpTdHJpbmc6IHsKLSAgICAgICAgICAgIEFQSTo6U3RyaW5nKiBzdHJpbmcgPSBz
dGF0aWNfY2FzdDxBUEk6OlN0cmluZyo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8
IHN0cmluZy0+c3RyaW5nKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6IHsK
LSAgICAgICAgICAgIEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzY3JpcHRWYWx1ZSA9IHN0
YXRpY19jYXN0PEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKj4obV9yb290KTsKLSAgICAgICAg
ICAgIGVuY29kZXIgPDwgc2NyaXB0VmFsdWUtPmRhdGFSZWZlcmVuY2UoKTsKLSAgICAgICAgICAg
IHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6
OkJvb2xlYW46IHsKLSAgICAgICAgICAgIEFQSTo6Qm9vbGVhbiogYm9vbGVhbk9iamVjdCA9IHN0
YXRpY19jYXN0PEFQSTo6Qm9vbGVhbio+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8
IGJvb2xlYW5PYmplY3QtPnZhbHVlKCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg
ICAgfQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpEb3VibGU6IHsKLSAgICAgICAg
ICAgIEFQSTo6RG91YmxlKiBkb3VibGVPYmplY3QgPSBzdGF0aWNfY2FzdDxBUEk6OkRvdWJsZSo+
KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IGRvdWJsZU9iamVjdC0+dmFsdWUoKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJOjpP
YmplY3Q6OlR5cGU6OlVJbnQ2NDogewotICAgICAgICAgICAgQVBJOjpVSW50NjQqIHVpbnQ2NE9i
amVjdCA9IHN0YXRpY19jYXN0PEFQSTo6VUludDY0Kj4obV9yb290KTsKLSAgICAgICAgICAgIGVu
Y29kZXIgPDwgdWludDY0T2JqZWN0LT52YWx1ZSgpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6UG9pbnQ6IHsKLSAg
ICAgICAgICAgIEFQSTo6UG9pbnQqIHBvaW50T2JqZWN0ID0gc3RhdGljX2Nhc3Q8QVBJOjpQb2lu
dCo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHBvaW50T2JqZWN0LT5wb2ludCgp
Lng7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHBvaW50T2JqZWN0LT5wb2ludCgpLnk7Ci0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0
OjpUeXBlOjpTaXplOiB7Ci0gICAgICAgICAgICBBUEk6OlNpemUqIHNpemVPYmplY3QgPSBzdGF0
aWNfY2FzdDxBUEk6OlNpemUqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2RlciA8PCBzaXpl
T2JqZWN0LT5zaXplKCkud2lkdGg7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHNpemVPYmplY3Qt
PnNpemUoKS5oZWlnaHQ7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpSZWN0OiB7Ci0gICAgICAgICAgICBBUEk6OlJl
Y3QqIHJlY3RPYmplY3QgPSBzdGF0aWNfY2FzdDxBUEk6OlJlY3QqPihtX3Jvb3QpOwotICAgICAg
ICAgICAgZW5jb2RlciA8PCByZWN0T2JqZWN0LT5yZWN0KCkub3JpZ2luLng7Ci0gICAgICAgICAg
ICBlbmNvZGVyIDw8IHJlY3RPYmplY3QtPnJlY3QoKS5vcmlnaW4ueTsKLSAgICAgICAgICAgIGVu
Y29kZXIgPDwgcmVjdE9iamVjdC0+cmVjdCgpLnNpemUud2lkdGg7Ci0gICAgICAgICAgICBlbmNv
ZGVyIDw8IHJlY3RPYmplY3QtPnJlY3QoKS5zaXplLmhlaWdodDsKLSAgICAgICAgICAgIHJldHVy
biB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OlJlbmRl
ckxheWVyOiB7Ci0gICAgICAgICAgICBXZWJSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSBzdGF0
aWNfY2FzdDxXZWJSZW5kZXJMYXllcio+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8
IE93bmVyKGNvZGVyLCByZW5kZXJMYXllci0+cmVuZGVyZXIoKSk7Ci0gICAgICAgICAgICBlbmNv
ZGVyIDw8IHJlbmRlckxheWVyLT5pc1JlZmxlY3Rpb24oKTsKLSAgICAgICAgICAgIGVuY29kZXIg
PDwgcmVuZGVyTGF5ZXItPmlzQ2xpcHBpbmcoKTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgcmVu
ZGVyTGF5ZXItPmlzQ2xpcHBlZCgpOwotICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4ocmVuZGVyTGF5ZXItPmNvbXBvc2l0aW5nTGF5ZXJUeXBlKCkpOwotICAgICAg
ICAgICAgZW5jb2RlciA8PCByZW5kZXJMYXllci0+YWJzb2x1dGVCb3VuZGluZ0JveCgpOwotICAg
ICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJMYXllci0+YmFja2luZ1N0b3JlTWVtb3J5RXN0aW1h
dGUoKTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgT3duZXIoY29kZXIsIHJlbmRlckxheWVyLT5u
ZWdhdGl2ZVpPcmRlckxpc3QoKSk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKGNvZGVy
LCByZW5kZXJMYXllci0+bm9ybWFsRmxvd0xpc3QoKSk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8
IE93bmVyKGNvZGVyLCByZW5kZXJMYXllci0+cG9zaXRpdmVaT3JkZXJMaXN0KCkpOwotICAgICAg
ICAgICAgZW5jb2RlciA8PCBPd25lcihjb2RlciwgcmVuZGVyTGF5ZXItPmZyYW1lQ29udGVudHNM
YXllcigpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgQVBJOjpPYmplY3Q6OlR5cGU6OlJlbmRlck9iamVjdDogewotICAgICAgICAgICAgV2ViUmVu
ZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSBzdGF0aWNfY2FzdDxXZWJSZW5kZXJPYmplY3QqPiht
X3Jvb3QpOwotICAgICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJPYmplY3QtPm5hbWUoKTsKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyT2JqZWN0LT5lbGVtZW50VGFnTmFtZSgpOwotICAg
ICAgICAgICAgZW5jb2RlciA8PCByZW5kZXJPYmplY3QtPmVsZW1lbnRJRCgpOwotICAgICAgICAg
ICAgZW5jb2RlciA8PCBPd25lcihjb2RlciwgcmVuZGVyT2JqZWN0LT5lbGVtZW50Q2xhc3NOYW1l
cygpKTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyT2JqZWN0LT5hYnNvbHV0ZVBvc2l0
aW9uKCk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+ZnJhbWVSZWN0KCk7
Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHJlbmRlck9iamVjdC0+dGV4dFNuaXBwZXQoKTsKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgcmVuZGVyT2JqZWN0LT50ZXh0TGVuZ3RoKCk7Ci0gICAgICAg
ICAgICBlbmNvZGVyIDw8IE93bmVyKGNvZGVyLCByZW5kZXJPYmplY3QtPmNoaWxkcmVuKCkpOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9i
amVjdDo6VHlwZTo6VVJMOiB7Ci0gICAgICAgICAgICBBUEk6OlVSTCogdXJsT2JqZWN0ID0gc3Rh
dGljX2Nhc3Q8QVBJOjpVUkwqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2RlciA8PCB1cmxP
YmplY3QtPnN0cmluZygpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAg
ICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6VVJMUmVxdWVzdDogewotICAgICAgICAgICAg
QVBJOjpVUkxSZXF1ZXN0KiB1cmxSZXF1ZXN0T2JqZWN0ID0gc3RhdGljX2Nhc3Q8QVBJOjpVUkxS
ZXF1ZXN0Kj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgdXJsUmVxdWVzdE9iamVj
dC0+cmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpVUkxSZXNwb25zZTogewotICAgICAg
ICAgICAgQVBJOjpVUkxSZXNwb25zZSogdXJsUmVzcG9uc2VPYmplY3QgPSBzdGF0aWNfY2FzdDxB
UEk6OlVSTFJlc3BvbnNlKj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgdXJsUmVz
cG9uc2VPYmplY3QtPnJlc291cmNlUmVzcG9uc2UoKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50
VVJMUGF0dGVybjogewotICAgICAgICAgICAgQVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm4qIHVy
bFBhdHRlcm4gPSBzdGF0aWNfY2FzdDxBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybio+KG1fcm9v
dCk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IHVybFBhdHRlcm4tPnBhdHRlcm5TdHJpbmcoKTsK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJOjpP
YmplY3Q6OlR5cGU6OkltYWdlOiB7Ci0gICAgICAgICAgICBXZWJJbWFnZSogaW1hZ2UgPSBzdGF0
aWNfY2FzdDxXZWJJbWFnZSo+KG1fcm9vdCk7Ci0KLSAgICAgICAgICAgIFNoYXJlYWJsZUJpdG1h
cDo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgICAgIEFTU0VSVCghaW1hZ2UtPmJpdG1hcCgpIHx8
IGltYWdlLT5iaXRtYXAoKS0+aXNCYWNrZWRCeVNoYXJlZE1lbW9yeSgpKTsgICAgICAgICAgICAK
LSAgICAgICAgICAgIGlmICghaW1hZ2UtPmJpdG1hcCgpIHx8ICFpbWFnZS0+Yml0bWFwKCktPmlz
QmFja2VkQnlTaGFyZWRNZW1vcnkoKSB8fCAhaW1hZ2UtPmJpdG1hcCgpLT5jcmVhdGVIYW5kbGUo
aGFuZGxlKSkgewotICAgICAgICAgICAgICAgIC8vIEluaXRpYWwgZmFsc2UgaW5kaWNhdGVzIG5v
IGFsbG9jYXRlZCBiaXRtYXAgb3IgaXMgbm90IHNoYXJlYWJsZS4KLSAgICAgICAgICAgICAgICBl
bmNvZGVyIDw8IGZhbHNlOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAvLyBJbml0aWFsIHRydWUgaW5kaWNhdGVzIGEgYml0bWFwIHdh
cyBhbGxvY2F0ZWQgYW5kIGlzIHNoYXJlYWJsZS4KLSAgICAgICAgICAgIGVuY29kZXIgPDwgdHJ1
ZTsKLQotICAgICAgICAgICAgZW5jb2RlciA8PCBoYW5kbGU7Ci0gICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpEYXRhOiB7
Ci0gICAgICAgICAgICBBUEk6OkRhdGEqIGRhdGEgPSBzdGF0aWNfY2FzdDxBUEk6OkRhdGEqPiht
X3Jvb3QpOwotICAgICAgICAgICAgZW5jb2RlciA8PCBkYXRhLT5kYXRhUmVmZXJlbmNlKCk7Ci0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFQSTo6T2Jq
ZWN0OjpUeXBlOjpDZXJ0aWZpY2F0ZUluZm86IHsKLSAgICAgICAgICAgIFdlYkNlcnRpZmljYXRl
SW5mbyogY2VydGlmaWNhdGVJbmZvID0gc3RhdGljX2Nhc3Q8V2ViQ2VydGlmaWNhdGVJbmZvKj4o
bV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgY2VydGlmaWNhdGVJbmZvLT5jZXJ0aWZp
Y2F0ZUluZm8oKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkVycm9yOiB7Ci0gICAgICAgICAgICBBUEk6OkVycm9y
KiBlcnJvck9iamVjdCA9IHN0YXRpY19jYXN0PEFQSTo6RXJyb3IqPihtX3Jvb3QpOwotICAgICAg
ICAgICAgZW5jb2RlciA8PCBlcnJvck9iamVjdC0+cGxhdGZvcm1FcnJvcigpOwotICAgICAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotcHJv
dGVjdGVkOgotICAgIFVzZXJNZXNzYWdlRW5jb2RlcihBUEk6Ok9iamVjdCogcm9vdCkgCi0gICAg
ICAgIDogbV9yb290KHJvb3QpCi0gICAgewotICAgIH0KLQotICAgIEFQSTo6T2JqZWN0KiBtX3Jv
b3Q7Ci19OwotCi0KLS8vIEhhbmRsZXMKLS8vICAgLSBOdWxsIC0+IE51bGwKLS8vICAgLSBBUEk6
OkFycmF5IC0+IEFQSTo6QXJyYXkKLS8vICAgLSBEaWN0aW9uYXJ5IC0+IERpY3Rpb25hcnkKLS8v
ICAgLSBTZXJpYWxpemVkU2NyaXB0VmFsdWUgLT4gU2VyaWFsaXplZFNjcmlwdFZhbHVlCi0vLyAg
IC0gQVBJOjpTdHJpbmcgLT4gQVBJOjpTdHJpbmcKLS8vICAgLSBVc2VyQ29udGVudFVSTFBhdHRl
cm4gLT4gVXNlckNvbnRlbnRVUkxQYXR0ZXJuCi0vLyAgIC0gV2ViQ2VydGlmaWNhdGVJbmZvIC0+
IFdlYkNlcnRpZmljYXRlSW5mbwotLy8gICAtIEFQSTo6RGF0YSAtPiBBUEk6OkRhdGEKLS8vICAg
LSBBUEk6OkRvdWJsZSAtPiBBUEk6OkRvdWJsZQotLy8gICAtIFdlYkltYWdlIC0+IFdlYkltYWdl
Ci0vLyAgIC0gQVBJOjpVSW50NjQgLT4gQVBJOjpVSW50NjQKLS8vICAgLSBBUEk6OlVSTCAtPiBB
UEk6OlVSTAotLy8gICAtIEFQSTo6VVJMUmVxdWVzdCAtPiBBUEk6OlVSTFJlcXVlc3QKLS8vICAg
LSBBUEk6OlVSTFJlc3BvbnNlIC0+IEFQSTo6VVJMUmVzcG9uc2UKLS8vICAgLSBBUEk6OkVycm9y
IC0+IEFQSTo6RXJyb3IKLQotdGVtcGxhdGU8dHlwZW5hbWUgT3duZXI+Ci1jbGFzcyBVc2VyTWVz
c2FnZURlY29kZXIgewotcHVibGljOgotICAgIHN0YXRpYyBib29sIGJhc2VEZWNvZGUoSVBDOjpB
cmd1bWVudERlY29kZXImIGRlY29kZXIsIE93bmVyJiBjb2RlciwgQVBJOjpPYmplY3Q6OlR5cGUm
IHR5cGUpCi0gICAgewotICAgICAgICB1aW50MzJfdCB0eXBlQXNVSW50MzI7Ci0gICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUodHlwZUFzVUludDMyKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8QVBJOjpPYmplY3Q6OlR5cGU+KHR5cGVB
c1VJbnQzMik7Ci0KLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgQVBJOjpP
YmplY3Q6OlR5cGU6OkFycmF5OiB7Ci0gICAgICAgICAgICB1aW50NjRfdCBzaXplOwotICAgICAg
ICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8QVBJOjpPYmplY3Q+PiB2ZWN0b3I7
Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewotICAgICAg
ICAgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gZWxlbWVudDsKLSAgICAgICAgICAgICAgICBP
d25lciBtZXNzYWdlQ29kZXIoY29kZXIsIGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUobWVzc2FnZUNvZGVyKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgICAgIHZlY3Rvci5hcHBlbmQoZWxlbWVudC5yZWxlYXNlKCkp
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBBUEk6OkFycmF5
OjpjcmVhdGUoV1RGOjptb3ZlKHZlY3RvcikpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6RGljdGlvbmFyeTogewotICAgICAg
ICAgICAgdWludDY0X3Qgc2l6ZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6
ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBBUEk6OkRp
Y3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcga2V5OwotICAgICAgICAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5KSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBlbGVtZW50Owot
ICAgICAgICAgICAgICAgIE93bmVyIG1lc3NhZ2VDb2Rlcihjb2RlciwgZWxlbWVudCk7Ci0gICAg
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShtZXNzYWdlQ29kZXIpKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgICAgICBBUEk6OkRpY3Rpb25h
cnk6Ok1hcFR5cGU6OkFkZFJlc3VsdCByZXN1bHQgPSBtYXAuc2V0KGtleSwgZWxlbWVudC5yZWxl
YXNlKCkpOwotICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzTmV3RW50cnkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAg
Y29kZXIubV9yb290ID0gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RGOjptb3ZlKG1hcCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6
VHlwZTo6U3RyaW5nOiB7Ci0gICAgICAgICAgICBTdHJpbmcgc3RyaW5nOwotICAgICAgICAgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoc3RyaW5n
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgQVBJOjpPYmpl
Y3Q6OlR5cGU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTogewotICAgICAgICAgICAgSVBDOjpEYXRh
UmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGRhdGFSZWZlcmVuY2UpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIAotICAgICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZlY3RvciA9IGRhdGFSZWZlcmVuY2Uu
dmVjdG9yKCk7Ci0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZTo6YWRvcHQodmVjdG9yKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0g
ICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkRvdWJsZTogewotICAgICAgICAgICAgZG91
YmxlIHZhbHVlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZXIubV9yb290ID0gQVBJ
OjpEb3VibGU6OmNyZWF0ZSh2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpVSW50NjQ6IHsKLSAgICAgICAgICAgIHVp
bnQ2NF90IHZhbHVlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZXIubV9yb290ID0g
QVBJOjpVSW50NjQ6OmNyZWF0ZSh2YWx1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
fQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpCb29sZWFuOiB7Ci0gICAgICAgICAg
ICBib29sIHZhbHVlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh2YWx1ZSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZXIubV9yb290ID0g
QVBJOjpCb29sZWFuOjpjcmVhdGUodmFsdWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6U2l6ZTogewotICAgICAgICAgICAg
ZG91YmxlIHdpZHRoOwotICAgICAgICAgICAgZG91YmxlIGhlaWdodDsKLSAgICAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUod2lkdGgpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGVpZ2h0KSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBBUEk6OlNpemU6OmNy
ZWF0ZShXS1NpemVNYWtlKHdpZHRoLCBoZWlnaHQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OlBvaW50OiB7Ci0gICAgICAg
ICAgICBkb3VibGUgeDsKLSAgICAgICAgICAgIGRvdWJsZSB5OwotICAgICAgICAgICAgaWYgKCFk
ZWNvZGVyLmRlY29kZSh4KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHkpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IEFQSTo6UG9pbnQ6OmNyZWF0ZShXS1BvaW50
TWFrZSh4LCB5KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNl
IEFQSTo6T2JqZWN0OjpUeXBlOjpSZWN0OiB7Ci0gICAgICAgICAgICBkb3VibGUgeDsKLSAgICAg
ICAgICAgIGRvdWJsZSB5OwotICAgICAgICAgICAgZG91YmxlIHdpZHRoOwotICAgICAgICAgICAg
ZG91YmxlIGhlaWdodDsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoeCkpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZSh5KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHdpZHRoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGhlaWdodCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZXIubV9yb290ID0gQVBJOjpSZWN0OjpjcmVhdGUo
V0tSZWN0TWFrZSh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgfQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpSZW5kZXJMYXllcjogewot
ICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiByZW5kZXJlcjsKLSAgICAgICAgICAgIGJv
b2wgaXNSZWZsZWN0aW9uOwotICAgICAgICAgICAgYm9vbCBpc0NsaXBwaW5nOwotICAgICAgICAg
ICAgYm9vbCBpc0NsaXBwZWQ7Ci0gICAgICAgICAgICB1aW50MzJfdCBjb21wb3NpdGluZ0xheWVy
VHlwZUFzVUludDMyOwotICAgICAgICAgICAgV2ViQ29yZTo6SW50UmVjdCBhYnNvbHV0ZUJvdW5k
aW5nQm94OwotICAgICAgICAgICAgZG91YmxlIGJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlOwot
ICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBuZWdhdGl2ZVpPcmRlckxpc3Q7Ci0gICAg
ICAgICAgICBSZWZQdHI8QVBJOjpPYmplY3Q+IG5vcm1hbEZsb3dMaXN0OwotICAgICAgICAgICAg
UmVmUHRyPEFQSTo6T2JqZWN0PiBwb3NpdGl2ZVpPcmRlckxpc3Q7Ci0gICAgICAgICAgICBSZWZQ
dHI8QVBJOjpPYmplY3Q+IGZyYW1lQ29udGVudHNMYXllcjsKLQotICAgICAgICAgICAgT3duZXIg
cmVuZGVyZXJDb2Rlcihjb2RlciwgcmVuZGVyZXIpOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZW5kZXJlckNvZGVyKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgICAgICBpZiAocmVuZGVyZXItPnR5cGUoKSAhPSBBUEk6Ok9iamVjdDo6VHlwZTo6UmVu
ZGVyT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoaXNSZWZsZWN0aW9uKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGlzQ2xpcHBpbmcpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoaXNDbGlwcGVkKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKGNvbXBvc2l0aW5nTGF5ZXJUeXBlQXNVSW50MzIpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoYWJzb2x1dGVCb3VuZGluZ0JveCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0
ZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgT3duZXIgbmVn
YXRpdmVaT3JkZXJMaXN0Q29kZXIoY29kZXIsIG5lZ2F0aXZlWk9yZGVyTGlzdCk7Ci0gICAgICAg
ICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG5lZ2F0aXZlWk9yZGVyTGlzdENvZGVyKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBPd25lciBub3JtYWxGbG93TGlz
dENvZGVyKGNvZGVyLCBub3JtYWxGbG93TGlzdCk7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKG5vcm1hbEZsb3dMaXN0Q29kZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgICAgIE93bmVyIHBvc2l0aXZlWk9yZGVyTGlzdENvZGVyKGNvZGVyLCBwb3Np
dGl2ZVpPcmRlckxpc3QpOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShwb3NpdGl2
ZVpPcmRlckxpc3RDb2RlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
ICAgICAgICBPd25lciBmcmFtZUNvbnRlbnRzTGF5ZXJDb2Rlcihjb2RlciwgZnJhbWVDb250ZW50
c0xheWVyKTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoZnJhbWVDb250ZW50c0xh
eWVyQ29kZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAg
Y29kZXIubV9yb290ID0gV2ViUmVuZGVyTGF5ZXI6OmNyZWF0ZShzdGF0aWNfcG9pbnRlcl9jYXN0
PFdlYlJlbmRlck9iamVjdD4ocmVuZGVyZXIpLCBpc1JlZmxlY3Rpb24sIGlzQ2xpcHBpbmcsIGlz
Q2xpcHBlZCwgc3RhdGljX2Nhc3Q8V2ViUmVuZGVyTGF5ZXI6OkNvbXBvc2l0aW5nTGF5ZXJUeXBl
Pihjb21wb3NpdGluZ0xheWVyVHlwZUFzVUludDMyKSwKLSAgICAgICAgICAgICAgICBhYnNvbHV0
ZUJvdW5kaW5nQm94LCBiYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSwgc3RhdGljX3BvaW50ZXJf
Y2FzdDxBUEk6OkFycmF5PihuZWdhdGl2ZVpPcmRlckxpc3QpLCBzdGF0aWNfcG9pbnRlcl9jYXN0
PEFQSTo6QXJyYXk+KG5vcm1hbEZsb3dMaXN0KSwKLSAgICAgICAgICAgICAgICBzdGF0aWNfcG9p
bnRlcl9jYXN0PEFQSTo6QXJyYXk+KHBvc2l0aXZlWk9yZGVyTGlzdCksIHN0YXRpY19wb2ludGVy
X2Nhc3Q8V2ViUmVuZGVyTGF5ZXI+KGZyYW1lQ29udGVudHNMYXllcikpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6UmVuZGVy
T2JqZWN0OiB7Ci0gICAgICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgICAgIFN0cmluZyB0
ZXh0U25pcHBldDsKLSAgICAgICAgICAgIFN0cmluZyBlbGVtZW50VGFnTmFtZTsKLSAgICAgICAg
ICAgIFN0cmluZyBlbGVtZW50SUQ7Ci0gICAgICAgICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoOwot
ICAgICAgICAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiBlbGVtZW50Q2xhc3NOYW1lczsKLSAgICAg
ICAgICAgIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb247Ci0gICAgICAgICAgICBX
ZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdDsKLSAgICAgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVj
dD4gY2hpbGRyZW47Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUobmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShlbGVtZW50VGFnTmFtZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShlbGVtZW50SUQpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIE93bmVyIGNsYXNzTmFtZXND
b2Rlcihjb2RlciwgZWxlbWVudENsYXNzTmFtZXMpOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShjbGFzc05hbWVzQ29kZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoYWJzb2x1dGVQb3NpdGlvbikpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShmcmFtZVJlY3QpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUodGV4dFNuaXBwZXQpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUodGV4dExlbmd0aCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgT3duZXIgbWVzc2FnZUNv
ZGVyKGNvZGVyLCBjaGlsZHJlbik7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG1l
c3NhZ2VDb2RlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
aWYgKGNoaWxkcmVuICYmIGNoaWxkcmVuLT50eXBlKCkgIT0gQVBJOjpPYmplY3Q6OlR5cGU6OkFy
cmF5KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGNvZGVyLm1f
cm9vdCA9IFdlYlJlbmRlck9iamVjdDo6Y3JlYXRlKG5hbWUsIGVsZW1lbnRUYWdOYW1lLCBlbGVt
ZW50SUQsIHN0YXRpY19wb2ludGVyX2Nhc3Q8QVBJOjpBcnJheT4oZWxlbWVudENsYXNzTmFtZXMp
LCBhYnNvbHV0ZVBvc2l0aW9uLCBmcmFtZVJlY3QsIHRleHRTbmlwcGV0LCB0ZXh0TGVuZ3RoLCBz
dGF0aWNfcG9pbnRlcl9jYXN0PEFQSTo6QXJyYXk+KGNoaWxkcmVuKSk7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpVUkw6IHsK
LSAgICAgICAgICAgIFN0cmluZyBzdHJpbmc7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHN0cmluZykpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAg
Y29kZXIubV9yb290ID0gQVBJOjpVUkw6OmNyZWF0ZShzdHJpbmcpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6VVJMUmVxdWVz
dDogewotICAgICAgICAgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Q7Ci0gICAg
ICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlcXVlc3QpKQotICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IEFQSTo6VVJMUmVxdWVzdDo6
Y3JlYXRlKHJlcXVlc3QpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAg
Y2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6VVJMUmVzcG9uc2U6IHsKLSAgICAgICAgICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3BvbnNlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBjb2Rlci5tX3Jvb3QgPSBBUEk6OlVSTFJlc3BvbnNlOjpjcmVhdGUocmVzcG9uc2UpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6
VHlwZTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOiB7Ci0gICAgICAgICAgICBTdHJpbmcgc3RyaW5n
OwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzdHJpbmcpKQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IEFQSTo6VXNlckNv
bnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGUoc3RyaW5nKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkltYWdlOiB7Ci0gICAgICAg
ICAgICBib29sIGRpZEVuY29kZSA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShkaWRFbmNvZGUpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICAgICAgaWYgKCFkaWRFbmNvZGUpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
ICAgIFNoYXJlYWJsZUJpdG1hcDo6SGFuZGxlIGhhbmRsZTsKLSAgICAgICAgICAgIGlmICghZGVj
b2Rlci5kZWNvZGUoaGFuZGxlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYkltYWdlOjpjcmVhdGUoU2hhcmVhYmxlQml0bWFw
OjpjcmVhdGUoaGFuZGxlKSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpEYXRhOiB7Ci0gICAgICAgICAgICBJUEM6
OkRhdGFSZWZlcmVuY2UgZGF0YVJlZmVyZW5jZTsKLSAgICAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoZGF0YVJlZmVyZW5jZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICAgICAgY29kZXIubV9yb290ID0gQVBJOjpEYXRhOjpjcmVhdGUoZGF0YVJlZmVyZW5jZS5k
YXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0gICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkNlcnRpZmljYXRlSW5mbzogewot
ICAgICAgICAgICAgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvIGNlcnRpZmljYXRlSW5mbzsKLSAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVJbmZvKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJDZXJ0
aWZpY2F0ZUluZm86OmNyZWF0ZShjZXJ0aWZpY2F0ZUluZm8pOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6RXJyb3I6IHsKLSAg
ICAgICAgICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgcmVzb3VyY2VFcnJvcjsKLSAgICAgICAg
ICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzb3VyY2VFcnJvcikpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZXIubV9yb290ID0gQVBJOjpFcnJvcjo6Y3Jl
YXRlKHJlc291cmNlRXJyb3IpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgVXNlck1lc3NhZ2VEZWNvZGVyKFJl
ZlB0cjxBUEk6Ok9iamVjdD4mIHJvb3QpCi0gICAgICAgIDogbV9yb290KHJvb3QpCi0gICAgewot
ICAgIH0KLQotICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4mIG1fcm9vdDsKLX07Ci0KLX0gLy8gbmFt
ZXNwYWNlIFdlYktpdAotCi0jZW5kaWYgLy8gVXNlck1lc3NhZ2VDb2RlcnNfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvT2JqQ09iamVjdEdyYXBoQ29kZXJzLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4Yzk0MDA0MTk2MDVhMTFhZWQ0ODM4NWVhOTRmZDVjNmZi
NGNjMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGhDb2RlcnMuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDgyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIE9iakNPYmplY3RHcmFw
aENvZGVyc19oCi0jZGVmaW5lIE9iakNPYmplY3RHcmFwaENvZGVyc19oCi0KLSNpbmNsdWRlICJB
cmd1bWVudERlY29kZXIuaCIKLSNpbmNsdWRlICJBcmd1bWVudEVuY29kZXIuaCIKLSNpbmNsdWRl
ICJPYmpDT2JqZWN0R3JhcGguaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFj
ZSBXZWJLaXQgewotCi1jbGFzcyBXZWJQcm9jZXNzOwotY2xhc3MgV2ViUHJvY2Vzc1Byb3h5Owot
Ci1jbGFzcyBXZWJDb250ZXh0T2JqQ09iamVjdEdyYXBoRW5jb2RlciB7Ci1wdWJsaWM6Ci0gICAg
ZXhwbGljaXQgV2ViQ29udGV4dE9iakNPYmplY3RHcmFwaEVuY29kZXIoT2JqQ09iamVjdEdyYXBo
KiwgV2ViUHJvY2Vzc1Byb3h5Jik7Ci0gICAgdm9pZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29k
ZXImKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBPYmpDT2JqZWN0R3JhcGgqIG1fb2JqZWN0R3Jh
cGg7Ci0gICAgV2ViUHJvY2Vzc1Byb3h5JiBtX3Byb2Nlc3M7Ci19OwotCi1jbGFzcyBXZWJDb250
ZXh0T2JqQ09iamVjdEdyYXBoRGVjb2RlciB7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViQ29u
dGV4dE9iakNPYmplY3RHcmFwaERlY29kZXIoUmVmUHRyPE9iakNPYmplY3RHcmFwaD4mLCBXZWJQ
cm9jZXNzUHJveHkmKTsKLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29k
ZXImLCBXZWJDb250ZXh0T2JqQ09iamVjdEdyYXBoRGVjb2RlciYpOwotCi1wcml2YXRlOgotICAg
IFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+JiBtX29iamVjdEdyYXBoOwotICAgIFdlYlByb2Nlc3NQ
cm94eSYgbV9wcm9jZXNzOwotfTsKLQotCi1jbGFzcyBJbmplY3RlZEJ1bmRsZU9iakNPYmplY3RH
cmFwaEVuY29kZXIgewotcHVibGljOgotICAgIGV4cGxpY2l0IEluamVjdGVkQnVuZGxlT2JqQ09i
amVjdEdyYXBoRW5jb2RlcihPYmpDT2JqZWN0R3JhcGgqLCBXZWJQcm9jZXNzJik7Ci0gICAgdm9p
ZCBlbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBP
YmpDT2JqZWN0R3JhcGgqIG1fb2JqZWN0R3JhcGg7Ci0gICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNz
OwotfTsKLQotY2xhc3MgSW5qZWN0ZWRCdW5kbGVPYmpDT2JqZWN0R3JhcGhEZWNvZGVyIHsKLXB1
YmxpYzoKLSAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZU9iakNPYmplY3RHcmFwaERlY29kZXIo
UmVmUHRyPE9iakNPYmplY3RHcmFwaD4mLCBXZWJQcm9jZXNzJik7Ci0gICAgc3RhdGljIGJvb2wg
ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiwgSW5qZWN0ZWRCdW5kbGVPYmpDT2JqZWN0R3Jh
cGhEZWNvZGVyJik7Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPE9iakNPYmplY3RHcmFwaD4mIG1f
b2JqZWN0R3JhcGg7Ci0gICAgV2ViUHJvY2VzcyYgbV9wcm9jZXNzOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBPYmpDT2JqZWN0R3JhcGhDb2RlcnNfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9PYmpDT2JqZWN0R3JhcGhDb2RlcnMubW0g
Yi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaENvZGVycy5tbQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg1NmU2OTE3OGNkY2IxNDRjODJjZWJlY2ZlMmE3
ZDYwNjhhMDRiNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL09iakNPYmplY3RHcmFwaENvZGVycy5tbQorKysg
L2Rldi9udWxsCkBAIC0xLDU0OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2ltcG9ydCAiY29uZmln
LmgiCi0jaW1wb3J0ICJPYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCIKLQotI2ltcG9ydCAiQXJndW1l
bnRDb2RlcnNNYWMuaCIKLSNpbXBvcnQgIldLVHlwZVJlZldyYXBwZXIuaCIKLQotLy8gRm9yIFVJ
UHJvY2VzcyBzaWRlIGVuY29kaW5nL2RlY29kaW5nCi0jaW1wb3J0ICJXS0FQSUNhc3QuaCIKLSNp
bXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlckludGVybmFsLmgiCi0jaW1wb3J0ICJX
ZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCIKLSNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgot
I2ltcG9ydCAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0KLS8vIEZvciBXZWJQcm9jZXNzIHNpZGUgZW5j
b2RpbmcvZGVjb2RpbmcKLSNpbXBvcnQgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMu
aCIKLSNpbXBvcnQgIldLQnVuZGxlQVBJQ2FzdC5oIgotI2ltcG9ydCAiV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCIKLSNpbXBvcnQgIldLV2ViUHJv
Y2Vzc1BsdWdJbkludGVybmFsLmgiCi0jaW1wb3J0ICJXZWJQYWdlLmgiCi0jaW1wb3J0ICJXZWJQ
cm9jZXNzLmgiCi0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1lbnVtIFdlYktpdE5TVHlwZSB7Ci0g
ICAgTnVsbFR5cGUsCi0gICAgTlNEaWN0aW9uYXJ5VHlwZSwKLSAgICBOU0FycmF5VHlwZSwKLSAg
ICBOU1N0cmluZ1R5cGUsCi0gICAgTlNOdW1iZXJUeXBlLAotICAgIE5TRGF0ZVR5cGUsCi0gICAg
TlNEYXRhVHlwZSwKLSNpZiBXS19BUElfRU5BQkxFRAotICAgIFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlclR5cGUsCi0gICAgV0tUeXBlUmVmV3JhcHBlclR5cGUsCi0jZW5kaWYKLSAgICBVbmtu
b3duVHlwZSwKLX07Ci0KLXN0YXRpYyBXZWJLaXROU1R5cGUgdHlwZUZyb21PYmplY3QoaWQgb2Jq
ZWN0KQotewotICAgIEFTU0VSVChvYmplY3QpOwotCi0gICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZD
bGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBOU0RpY3Rpb25hcnlU
eXBlOwotICAgIGlmIChbb2JqZWN0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0g
ICAgICAgIHJldHVybiBOU1N0cmluZ1R5cGU7Ci0gICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFz
czpbTlNBcnJheSBjbGFzc11dKQotICAgICAgICByZXR1cm4gTlNBcnJheVR5cGU7Ci0gICAgaWYg
KFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJu
IE5TTnVtYmVyVHlwZTsKLSAgICBpZiAoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU0RhdGUgY2xh
c3NdXSkKLSAgICAgICAgcmV0dXJuIE5TRGF0ZVR5cGU7Ci0gICAgaWYgKFtvYmplY3QgaXNLaW5k
T2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBOU0RhdGFUeXBlOwotI2lm
IFdLX0FQSV9FTkFCTEVECi0gICAgaWYgKFtvYmplY3QgaXNLaW5kT2ZDbGFzczpbV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIGNsYXNzXV0gfHwgW29iamVjdCBpc0tpbmRPZkNsYXNzOltXS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgY2xhc3NdXSkKLSAgICAgICAg
cmV0dXJuIFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlclR5cGU7Ci0gICAgaWYgKFtvYmplY3Qg
aXNLaW5kT2ZDbGFzczpbV0tUeXBlUmVmV3JhcHBlciBjbGFzc11dKQotICAgICAgICByZXR1cm4g
V0tUeXBlUmVmV3JhcHBlclR5cGU7Ci0jZW5kaWYKLQotICAgIHJldHVybiBVbmtub3duVHlwZTsK
LX0KLQotdGVtcGxhdGU8dHlwZW5hbWUgT3duZXI+Ci1jbGFzcyBPYmpDT2JqZWN0R3JhcGhFbmNv
ZGVyIHsKLXB1YmxpYzoKLSAgICBib29sIGJhc2VFbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXIm
IGVuY29kZXIsIGNvbnN0IE93bmVyJiBjb2RlciwgV2ViS2l0TlNUeXBlJiB0eXBlKSBjb25zdAot
ICAgIHsKLSAgICAgICAgaWYgKCFtX3Jvb3QpIHsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDMyX3Q+KE51bGxUeXBlKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgdHlwZSA9IHR5cGVGcm9tT2JqZWN0KG1fcm9vdCk7Ci0gICAg
ICAgIGlmICh0eXBlID09IFVua25vd25UeXBlKSB7Ci0gICAgICAgICAgICBbTlNFeGNlcHRpb24g
cmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiQ2FuIG5vdCBlbmNvZGUg
b2JqZWN0cyBvZiBjbGFzcyB0eXBlICclQCciLCBzdGF0aWNfY2FzdDxOU1N0cmluZyAqPihOU1N0
cmluZ0Zyb21DbGFzcyhbbV9yb290IGNsYXNzXSkpXTsKLSAgICAgICAgfQotCi0gICAgICAgIGVu
Y29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHR5cGUpOwotCi0gICAgICAgIHN3aXRjaCAo
dHlwZSkgewotICAgICAgICBjYXNlIE5TU3RyaW5nVHlwZTogewotICAgICAgICAgICAgSVBDOjpl
bmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8TlNTdHJpbmcgKj4obV9yb290KSk7Ci0gICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE5TQXJyYXlUeXBlOiB7
Ci0gICAgICAgICAgICBOU0FycmF5ICphcnJheSA9IHN0YXRpY19jYXN0PE5TQXJyYXkgKj4obV9y
b290KTsKLQotICAgICAgICAgICAgTlNVSW50ZWdlciBzaXplID0gW2FycmF5IGNvdW50XTsKLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNpemUpOwotCi0gICAg
ICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgICAg
ICAgICAgZW5jb2RlciA8PCBPd25lcihjb2RlciwgW2FycmF5IG9iamVjdEF0SW5kZXg6aV0pOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBOU0RpY3Rp
b25hcnlUeXBlOiB7Ci0gICAgICAgICAgICBOU0RpY3Rpb25hcnkqIGRpY3Rpb25hcnkgPSBzdGF0
aWNfY2FzdDxOU0RpY3Rpb25hcnkgKj4obV9yb290KTsKLQotICAgICAgICAgICAgTlNVSW50ZWdl
ciBzaXplID0gW2RpY3Rpb25hcnkgY291bnRdOwotICAgICAgICAgICAgZW5jb2RlciA8PCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4oc2l6ZSk7Ci0KLSAgICAgICAgICAgIE5TQXJyYXkgKmtleXMgPSBb
ZGljdGlvbmFyeSBhbGxLZXlzXTsKLSAgICAgICAgICAgIE5TQXJyYXkgKnZhbHVlcyA9IFtkaWN0
aW9uYXJ5IGFsbFZhbHVlc107Ci0gICAgICAgICAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVyKGNvZGVyLCBb
a2V5cyBvYmplY3RBdEluZGV4OmldKTsKLSAgICAgICAgICAgICAgICBlbmNvZGVyIDw8IE93bmVy
KGNvZGVyLCBbdmFsdWVzIG9iamVjdEF0SW5kZXg6aV0pOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE5TTnVtYmVyVHlw
ZTogewotICAgICAgICAgICAgSVBDOjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8TlNOdW1i
ZXIgKj4obV9yb290KSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAg
ICAgICBjYXNlIE5TRGF0ZVR5cGU6IHsKLSAgICAgICAgICAgIElQQzo6ZW5jb2RlKGVuY29kZXIs
IHN0YXRpY19jYXN0PE5TRGF0ZSAqPihtX3Jvb3QpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgTlNEYXRhVHlwZTogewotICAgICAgICAgICAgSVBD
OjplbmNvZGUoZW5jb2Rlciwgc3RhdGljX2Nhc3Q8TlNEYXRhICo+KG1fcm9vdCkpOwotICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQot
cHJvdGVjdGVkOgotICAgIE9iakNPYmplY3RHcmFwaEVuY29kZXIoaWQgcm9vdCkKLSAgICAgICAg
OiBtX3Jvb3Qocm9vdCkKLSAgICB7Ci0gICAgfQotCi0gICAgaWQgbV9yb290OwotfTsKLQotdGVt
cGxhdGU8dHlwZW5hbWUgT3duZXI+Ci1jbGFzcyBPYmpDT2JqZWN0R3JhcGhEZWNvZGVyIHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgYm9vbCBiYXNlRGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBk
ZWNvZGVyLCBPd25lciYgY29kZXIsIFdlYktpdE5TVHlwZSYgdHlwZSkKLSAgICB7Ci0gICAgICAg
IHVpbnQzMl90IHR5cGVBc1VJbnQzMjsKLSAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0eXBl
QXNVSW50MzIpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIHR5cGUgPSBz
dGF0aWNfY2FzdDxXZWJLaXROU1R5cGU+KHR5cGVBc1VJbnQzMik7Ci0KLSAgICAgICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgTlNTdHJpbmdUeXBlOiB7Ci0gICAgICAgICAgICBSZXRh
aW5QdHI8TlNTdHJpbmc+IHN0cmluZzsKLSAgICAgICAgICAgIGlmICghSVBDOjpkZWNvZGUoZGVj
b2Rlciwgc3RyaW5nKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAg
ICBjb2Rlci5tX3Jvb3QgPSBzdHJpbmc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIE5TQXJyYXlUeXBlOiB7Ci0gICAgICAgICAgICB1aW50NjRfdCBzaXplOwot
ICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gYXJy
YXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6c2l6
ZV0pOwotICAgICAgICAgICAgZm9yICh1aW50NjRfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgewot
ICAgICAgICAgICAgICAgIFJldGFpblB0cjxpZD4gdmFsdWU7Ci0gICAgICAgICAgICAgICAgT3du
ZXIgbWVzc2FnZUNvZGVyKGNvZGVyLCB2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShtZXNzYWdlQ29kZXIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0KLSAgICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OnZhbHVlLmdldCgpXTsKLSAg
ICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29kZXIubV9yb290ID0gYXJyYXk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIE5TRGljdGlvbmFyeVR5cGU6IHsK
LSAgICAgICAgICAgIHVpbnQ2NF90IHNpemU7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNpemUpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAg
UmV0YWluUHRyPE5TTXV0YWJsZURpY3Rpb25hcnk+IGRpY3Rpb25hcnkgPSBhZG9wdE5TKFtbTlNN
dXRhYmxlRGljdGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpzaXplXSk7Ci0gICAgICAg
ICAgICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAg
ICAgLy8gVHJ5IHRvIGRlY29kZSB0aGUga2V5IG5hbWUuCi0gICAgICAgICAgICAgICAgUmV0YWlu
UHRyPGlkPiBrZXk7Ci0gICAgICAgICAgICAgICAgT3duZXIga2V5TWVzc2FnZUNvZGVyKGNvZGVy
LCBrZXkpOwotICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoa2V5TWVzc2FnZUNv
ZGVyKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAg
ICAgUmV0YWluUHRyPGlkPiB2YWx1ZTsKLSAgICAgICAgICAgICAgICBPd25lciB2YWx1ZU1lc3Nh
Z2VDb2Rlcihjb2RlciwgdmFsdWUpOwotICAgICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUodmFsdWVNZXNzYWdlQ29kZXIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICAgICAgICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6dmFsdWUuZ2V0KCkgZm9y
S2V5OmtleS5nZXQoKV07Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvZGVyLm1fcm9v
dCA9IGRpY3Rpb25hcnk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIE5TTnVtYmVyVHlwZTogewotICAgICAgICAgICAgUmV0YWluUHRyPE5TTnVtYmVyPiBudW1i
ZXI7Ci0gICAgICAgICAgICBpZiAoIUlQQzo6ZGVjb2RlKGRlY29kZXIsIG51bWJlcikpCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZXIubV9yb290ID0gbnVt
YmVyOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBOU0RhdGVU
eXBlOiB7Ci0gICAgICAgICAgICBSZXRhaW5QdHI8TlNEYXRlPiBkYXRlOwotICAgICAgICAgICAg
aWYgKCFJUEM6OmRlY29kZShkZWNvZGVyLCBkYXRlKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBkYXRlOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBOU0RhdGFUeXBlOiB7Ci0gICAgICAgICAgICBS
ZXRhaW5QdHI8TlNEYXRhPiBkYXRhOwotICAgICAgICAgICAgaWYgKCFJUEM6OmRlY29kZShkZWNv
ZGVyLCBkYXRhKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBj
b2Rlci5tX3Jvb3QgPSBkYXRhOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi1wcm90ZWN0ZWQ6Ci0gICAgT2JqQ09iamVjdEdyYXBoRGVjb2Rl
cihSZXRhaW5QdHI8aWQ+JiByb290KQotICAgICAgICA6IG1fcm9vdChyb290KQotICAgIHsKLSAg
ICB9Ci0KLSAgICBSZXRhaW5QdHI8aWQ+JiBtX3Jvb3Q7Ci19OwotCi0KLS8vIFByb2Nlc3NQb29s
IEFkZGl0aW9ucwotCi1jbGFzcyBXZWJDb250ZXh0T2JqQ09iamVjdEdyYXBoRW5jb2RlckltcGwg
OiBwdWJsaWMgT2JqQ09iamVjdEdyYXBoRW5jb2RlcjxXZWJDb250ZXh0T2JqQ09iamVjdEdyYXBo
RW5jb2RlckltcGw+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIE9iakNPYmplY3RHcmFwaEVuY29k
ZXI8V2ViQ29udGV4dE9iakNPYmplY3RHcmFwaEVuY29kZXJJbXBsPiBCYXNlOwotCi0gICAgZXhw
bGljaXQgV2ViQ29udGV4dE9iakNPYmplY3RHcmFwaEVuY29kZXJJbXBsKGlkIHJvb3QsIFdlYlBy
b2Nlc3NQcm94eSYgcHJvY2VzcykKLSAgICAgICAgOiBCYXNlKHJvb3QpCi0gICAgICAgICwgbV9w
cm9jZXNzKHByb2Nlc3MpCi0gICAgewotICAgIH0KLQotICAgIFdlYkNvbnRleHRPYmpDT2JqZWN0
R3JhcGhFbmNvZGVySW1wbChjb25zdCBXZWJDb250ZXh0T2JqQ09iamVjdEdyYXBoRW5jb2Rlcklt
cGwmIHVzZXJNZXNzYWdlRW5jb2RlciwgaWQgcm9vdCkKLSAgICAgICAgOiBCYXNlKHJvb3QpCi0g
ICAgICAgICwgbV9wcm9jZXNzKHVzZXJNZXNzYWdlRW5jb2Rlci5tX3Byb2Nlc3MpCi0gICAgewot
ICAgIH0KLQotICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgV2ViS2l0TlNUeXBlIHR5cGUgPSBOdWxsVHlwZTsKLSAgICAg
ICAgaWYgKGJhc2VFbmNvZGUoZW5jb2RlciwgKnRoaXMsIHR5cGUpKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHN3aXRjaCAodHlwZSkgewotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAg
ICAgIGNhc2UgV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyVHlwZTogewotICAgICAgICAgICAg
V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICpicm93c2luZ0NvbnRleHRDb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8V0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICo+KG1fcm9vdCk7Ci0KLSAg
ICAgICAgICAgIGVuY29kZXIgPDwgdG9JbXBsKGJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuX3Bh
Z2VSZWYpLT5wYWdlSUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAg
IGNhc2UgV0tUeXBlUmVmV3JhcHBlclR5cGU6IHsKLSAgICAgICAgICAgIFdLVHlwZVJlZldyYXBw
ZXIgKndyYXBwZXIgPSBzdGF0aWNfY2FzdDxXS1R5cGVSZWZXcmFwcGVyICo+KG1fcm9vdCk7Ci0g
ICAgICAgICAgICBlbmNvZGVyIDw8IFdlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIodG9JbXBs
KHdyYXBwZXIub2JqZWN0KSwgbV9wcm9jZXNzKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6
Ci0gICAgV2ViUHJvY2Vzc1Byb3h5JiBtX3Byb2Nlc3M7Ci19OwotCi0KLWNsYXNzIFdlYkNvbnRl
eHRPYmpDT2JqZWN0R3JhcGhEZWNvZGVySW1wbCA6IHB1YmxpYyBPYmpDT2JqZWN0R3JhcGhEZWNv
ZGVyPFdlYkNvbnRleHRPYmpDT2JqZWN0R3JhcGhEZWNvZGVySW1wbD4gewotcHVibGljOgotICAg
IHR5cGVkZWYgT2JqQ09iamVjdEdyYXBoRGVjb2RlcjxXZWJDb250ZXh0T2JqQ09iamVjdEdyYXBo
RGVjb2RlckltcGw+IEJhc2U7Ci0KLSAgICBXZWJDb250ZXh0T2JqQ09iamVjdEdyYXBoRGVjb2Rl
ckltcGwoUmV0YWluUHRyPGlkPiYgcm9vdCwgV2ViUHJvY2Vzc1Byb3h5JiBwcm9jZXNzKQotICAg
ICAgICA6IEJhc2Uocm9vdCkKLSAgICAgICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKLSAgICB7Ci0g
ICAgfQotCi0gICAgV2ViQ29udGV4dE9iakNPYmplY3RHcmFwaERlY29kZXJJbXBsKFdlYkNvbnRl
eHRPYmpDT2JqZWN0R3JhcGhEZWNvZGVySW1wbCYgdXNlck1lc3NhZ2VEZWNvZGVyLCBSZXRhaW5Q
dHI8aWQ+JiByb290KQotICAgICAgICA6IEJhc2Uocm9vdCkKLSAgICAgICAgLCBtX3Byb2Nlc3Mo
dXNlck1lc3NhZ2VEZWNvZGVyLm1fcHJvY2VzcykKLSAgICB7Ci0gICAgfQotCi0gICAgc3RhdGlj
IGJvb2wgZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBXZWJDb250ZXh0T2Jq
Q09iamVjdEdyYXBoRGVjb2RlckltcGwmIGNvZGVyKQotICAgIHsKLSAgICAgICAgV2ViS2l0TlNU
eXBlIHR5cGUgPSBOdWxsVHlwZTsKLSAgICAgICAgaWYgKCFCYXNlOjpiYXNlRGVjb2RlKGRlY29k
ZXIsIGNvZGVyLCB0eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBp
ZiAoY29kZXIubV9yb290KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYg
KHR5cGUgPT0gTnVsbFR5cGUgfHwgdHlwZSA9PSBVbmtub3duVHlwZSkgewotICAgICAgICAgICAg
Y29kZXIubV9yb290ID0gW05TTnVsbCBudWxsXTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0jaWYgV0tfQVBJX0VOQUJMRUQK
LSAgICAgICAgY2FzZSBXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJUeXBlOiB7Ci0gICAgICAg
ICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
Z2VJRCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBXZWJQ
YWdlUHJveHkqIHdlYlBhZ2UgPSBjb2Rlci5tX3Byb2Nlc3Mud2ViUGFnZShwYWdlSUQpOwotICAg
ICAgICAgICAgaWYgKCF3ZWJQYWdlKQotICAgICAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFtO
U051bGwgbnVsbF07Ci0gICAgICAgICAgICBlbHNlIAotICAgICAgICAgICAgICAgIGNvZGVyLm1f
cm9vdCA9IFtXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgX2Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXJGb3JQYWdlUmVmOnRvQVBJKHdlYlBhZ2UpXTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgV0tUeXBlUmVmV3JhcHBlclR5cGU6IHsKLSAgICAgICAgICAg
IFJlZlB0cjxBUEk6Ok9iamVjdD4gb2JqZWN0OwotICAgICAgICAgICAgV2ViQ29udGV4dFVzZXJN
ZXNzYWdlRGVjb2RlciBvYmplY3REZWNvZGVyKG9iamVjdCwgY29kZXIubV9wcm9jZXNzKTsKLSAg
ICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUob2JqZWN0RGVjb2RlcikpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZXIubV9yb290ID0gYWRvcHROUyhb
W1dLVHlwZVJlZldyYXBwZXIgYWxsb2NdIGluaXRXaXRoT2JqZWN0OnRvQVBJKG9iamVjdC5nZXQo
KSldKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgZGVm
YXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotcHJpdmF0ZToKLSAgICBXZWJQcm9jZXNzUHJveHkmIG1fcHJv
Y2VzczsKLX07Ci0KLQotLy8gSW5qZWN0ZWRCdW5kbGUgQWRkaXRpb25zCi0KLWNsYXNzIEluamVj
dGVkQnVuZGxlT2JqQ09iamVjdEdyYXBoRW5jb2RlckltcGwgOiBwdWJsaWMgT2JqQ09iamVjdEdy
YXBoRW5jb2RlcjxJbmplY3RlZEJ1bmRsZU9iakNPYmplY3RHcmFwaEVuY29kZXJJbXBsPiB7Ci1w
dWJsaWM6Ci0gICAgdHlwZWRlZiBPYmpDT2JqZWN0R3JhcGhFbmNvZGVyPEluamVjdGVkQnVuZGxl
T2JqQ09iamVjdEdyYXBoRW5jb2RlckltcGw+IEJhc2U7Ci0KLSAgICBleHBsaWNpdCBJbmplY3Rl
ZEJ1bmRsZU9iakNPYmplY3RHcmFwaEVuY29kZXJJbXBsKGlkIHJvb3QsIFdlYlByb2Nlc3MmIHBy
b2Nlc3MpCi0gICAgICAgIDogQmFzZShyb290KQotICAgICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNz
KQotICAgIHsKLSAgICB9Ci0KLSAgICBleHBsaWNpdCBJbmplY3RlZEJ1bmRsZU9iakNPYmplY3RH
cmFwaEVuY29kZXJJbXBsKGNvbnN0IEluamVjdGVkQnVuZGxlT2JqQ09iamVjdEdyYXBoRW5jb2Rl
ckltcGwmIGVuY29kZXIsIGlkIHJvb3QpCi0gICAgICAgIDogQmFzZShyb290KQotICAgICAgICAs
IG1fcHJvY2VzcyhlbmNvZGVyLm1fcHJvY2VzcykKLSAgICB7Ci0gICAgfQotCi0gICAgdm9pZCBl
bmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNvbnN0Ci0gICAgewotICAgICAg
ICBXZWJLaXROU1R5cGUgdHlwZSA9IE51bGxUeXBlOwotICAgICAgICBpZiAoYmFzZUVuY29kZShl
bmNvZGVyLCAqdGhpcywgdHlwZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc3dp
dGNoICh0eXBlKSB7Ci0jaWYgV0tfQVBJX0VOQUJMRUQKLSAgICAgICAgY2FzZSBXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXJUeXBlOiB7Ci0gICAgICAgICAgICBXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIgKmJyb3dzZXJDb250ZXh0Q29udHJvbGxlciA9IHN0YXRp
Y19jYXN0PFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqPihtX3Jv
b3QpOwotCi0gICAgICAgICAgICBlbmNvZGVyIDw8IHRvSW1wbChicm93c2VyQ29udGV4dENvbnRy
b2xsZXIuX2J1bmRsZVBhZ2VSZWYpLT5wYWdlSUQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgV0tUeXBlUmVmV3JhcHBlclR5cGU6IHsKLSAgICAgICAgICAg
IFdLVHlwZVJlZldyYXBwZXIgKndyYXBwZXIgPSBzdGF0aWNfY2FzdDxXS1R5cGVSZWZXcmFwcGVy
ICo+KG1fcm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IEluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyKHRvSW1wbCh3cmFwcGVyLm9iamVjdCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQot
cHJpdmF0ZToKLSAgICBXZWJQcm9jZXNzJiBtX3Byb2Nlc3M7Ci19OwotCi1jbGFzcyBJbmplY3Rl
ZEJ1bmRsZU9iakNPYmplY3RHcmFwaERlY29kZXJJbXBsIDogcHVibGljIE9iakNPYmplY3RHcmFw
aERlY29kZXI8SW5qZWN0ZWRCdW5kbGVPYmpDT2JqZWN0R3JhcGhEZWNvZGVySW1wbD4gewotcHVi
bGljOgotICAgIHR5cGVkZWYgT2JqQ09iamVjdEdyYXBoRGVjb2RlcjxJbmplY3RlZEJ1bmRsZU9i
akNPYmplY3RHcmFwaERlY29kZXJJbXBsPiBCYXNlOwotCi0gICAgSW5qZWN0ZWRCdW5kbGVPYmpD
T2JqZWN0R3JhcGhEZWNvZGVySW1wbChSZXRhaW5QdHI8aWQ+JiByb290LCBXZWJQcm9jZXNzJiBw
cm9jZXNzKQotICAgICAgICA6IEJhc2Uocm9vdCkKLSAgICAgICAgLCBtX3Byb2Nlc3MocHJvY2Vz
cykKLSAgICB7Ci0gICAgfQotCi0gICAgSW5qZWN0ZWRCdW5kbGVPYmpDT2JqZWN0R3JhcGhEZWNv
ZGVySW1wbChJbmplY3RlZEJ1bmRsZU9iakNPYmplY3RHcmFwaERlY29kZXJJbXBsJiB1c2VyTWVz
c2FnZURlY29kZXIsIFJldGFpblB0cjxpZD4mIHJvb3QpCi0gICAgICAgIDogQmFzZShyb290KQot
ICAgICAgICAsIG1fcHJvY2Vzcyh1c2VyTWVzc2FnZURlY29kZXIubV9wcm9jZXNzKQotICAgIHsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgYm9vbCBkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRl
Y29kZXIsIEluamVjdGVkQnVuZGxlT2JqQ09iamVjdEdyYXBoRGVjb2RlckltcGwmIGNvZGVyKQot
ICAgIHsKLSAgICAgICAgV2ViS2l0TlNUeXBlIHR5cGUgPSBOdWxsVHlwZTsKLSAgICAgICAgaWYg
KCFCYXNlOjpiYXNlRGVjb2RlKGRlY29kZXIsIGNvZGVyLCB0eXBlKSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgICAgICBpZiAoY29kZXIubV9yb290KQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKHR5cGUgPT0gTnVsbFR5cGUgfHwgdHlwZSA9PSBVbmtu
b3duVHlwZSkgewotICAgICAgICAgICAgY29kZXIubV9yb290ID0gW05TTnVsbCBudWxsXTsKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc3dpdGNoICh0eXBl
KSB7Ci0jaWYgV0tfQVBJX0VOQUJMRUQKLSAgICAgICAgY2FzZSBXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXJUeXBlOiB7Ci0gICAgICAgICAgICB1aW50NjRfdCBwYWdlSUQ7Ci0gICAgICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VJRCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gY29kZXIubV9wcm9jZXNzLndl
YlBhZ2UocGFnZUlEKTsKLSAgICAgICAgICAgIGlmICghd2ViUGFnZSkKLSAgICAgICAgICAgICAg
ICBjb2Rlci5tX3Jvb3QgPSBbTlNOdWxsIG51bGxdOwotICAgICAgICAgICAgZWxzZSAKLSAgICAg
ICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSB3cmFwcGVyKCp3ZWJQYWdlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgV0tUeXBlUmVmV3JhcHBlclR5cGU6IHsK
LSAgICAgICAgICAgIFJlZlB0cjxBUEk6Ok9iamVjdD4gb2JqZWN0OwotICAgICAgICAgICAgSW5q
ZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIgb2JqZWN0RGVjb2RlcihvYmplY3QpOwotICAg
ICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShvYmplY3REZWNvZGVyKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBhZG9wdE5TKFtb
V0tUeXBlUmVmV3JhcHBlciBhbGxvY10gaW5pdFdpdGhPYmplY3Q6dG9BUEkob2JqZWN0LmdldCgp
KV0pOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFdlYlByb2Nlc3MmIG1fcHJvY2VzczsK
LX07Ci0KLQotLy8gQWRhcHRvcnMKLQotV2ViQ29udGV4dE9iakNPYmplY3RHcmFwaEVuY29kZXI6
OldlYkNvbnRleHRPYmpDT2JqZWN0R3JhcGhFbmNvZGVyKE9iakNPYmplY3RHcmFwaCogb2JqZWN0
R3JhcGgsIFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKLSAgICA6IG1fb2JqZWN0R3JhcGgob2Jq
ZWN0R3JhcGgpCi0gICAgLCBtX3Byb2Nlc3MocHJvY2VzcykKLXsKLX0KLQotdm9pZCBXZWJDb250
ZXh0T2JqQ09iamVjdEdyYXBoRW5jb2Rlcjo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAotewotICAgIGVuY29kZXIgPDwgV2ViQ29udGV4dE9iakNPYmplY3RHcmFw
aEVuY29kZXJJbXBsKG1fb2JqZWN0R3JhcGgtPnJvb3RPYmplY3QoKSwgbV9wcm9jZXNzKTsKLX0K
LQotV2ViQ29udGV4dE9iakNPYmplY3RHcmFwaERlY29kZXI6OldlYkNvbnRleHRPYmpDT2JqZWN0
R3JhcGhEZWNvZGVyKFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+JiBvYmplY3RHcmFwaCwgV2ViUHJv
Y2Vzc1Byb3h5JiBwcm9jZXNzKQotICAgIDogbV9vYmplY3RHcmFwaChvYmplY3RHcmFwaCkKLSAg
ICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQotewotfQotCi1ib29sIFdlYkNvbnRleHRPYmpDT2JqZWN0
R3JhcGhEZWNvZGVyOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYkNv
bnRleHRPYmpDT2JqZWN0R3JhcGhEZWNvZGVyJiBjb2RlcikKLXsKLSAgICBSZXRhaW5QdHI8aWQ+
IHJvb3Q7Ci0gICAgV2ViQ29udGV4dE9iakNPYmplY3RHcmFwaERlY29kZXJJbXBsIGNvZGVySW1w
bChyb290LCBjb2Rlci5tX3Byb2Nlc3MpOwotICAgIGlmICghZGVjb2Rlci5kZWNvZGUoY29kZXJJ
bXBsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29kZXIubV9vYmplY3RHcmFwaCA9
IE9iakNPYmplY3RHcmFwaDo6Y3JlYXRlKHJvb3QuZ2V0KCkpOwotICAgIHJldHVybiB0cnVlOwot
fQotCi1JbmplY3RlZEJ1bmRsZU9iakNPYmplY3RHcmFwaEVuY29kZXI6OkluamVjdGVkQnVuZGxl
T2JqQ09iamVjdEdyYXBoRW5jb2RlcihPYmpDT2JqZWN0R3JhcGgqIG9iamVjdEdyYXBoLCBXZWJQ
cm9jZXNzJiBwcm9jZXNzKQotICAgIDogbV9vYmplY3RHcmFwaChvYmplY3RHcmFwaCkKLSAgICAs
IG1fcHJvY2Vzcyhwcm9jZXNzKQotewotfQotCi12b2lkIEluamVjdGVkQnVuZGxlT2JqQ09iamVj
dEdyYXBoRW5jb2Rlcjo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAotewotICAgIGVuY29kZXIgPDwgSW5qZWN0ZWRCdW5kbGVPYmpDT2JqZWN0R3JhcGhFbmNvZGVy
SW1wbChtX29iamVjdEdyYXBoLT5yb290T2JqZWN0KCksIG1fcHJvY2Vzcyk7Ci19Ci0KLUluamVj
dGVkQnVuZGxlT2JqQ09iamVjdEdyYXBoRGVjb2Rlcjo6SW5qZWN0ZWRCdW5kbGVPYmpDT2JqZWN0
R3JhcGhEZWNvZGVyKFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+JiBvYmplY3RHcmFwaCwgV2ViUHJv
Y2VzcyYgcHJvY2VzcykKLSAgICA6IG1fb2JqZWN0R3JhcGgob2JqZWN0R3JhcGgpCi0gICAgLCBt
X3Byb2Nlc3MocHJvY2VzcykKLXsKLX0KLQotYm9vbCBJbmplY3RlZEJ1bmRsZU9iakNPYmplY3RH
cmFwaERlY29kZXI6OmRlY29kZShJUEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSW5qZWN0
ZWRCdW5kbGVPYmpDT2JqZWN0R3JhcGhEZWNvZGVyJiBjb2RlcikKLXsKLSAgICBSZXRhaW5QdHI8
aWQ+IHJvb3Q7Ci0gICAgSW5qZWN0ZWRCdW5kbGVPYmpDT2JqZWN0R3JhcGhEZWNvZGVySW1wbCBj
b2RlckltcGwocm9vdCwgY29kZXIubV9wcm9jZXNzKTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KGNvZGVySW1wbCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvZGVyLm1fb2JqZWN0
R3JhcGggPSBPYmpDT2JqZWN0R3JhcGg6OmNyZWF0ZShyb290LmdldCgpKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKaW5kZXggNjc1M2Nh
ZjhmNzM2MjM4NGRmNDBhNDkxNTYyNDc1OWFlNzE5Nzg3ZC4uZGVkNDY5MWNhYzU0NTlmYjQyZWQx
ZjdmNjEzMWQ1NGZiMDM1ODUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2lu
Y2x1ZGUgIldlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKIAogI2luY2x1ZGUgIldlYkNvbm5l
Y3Rpb25NZXNzYWdlcy5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5o
IgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0VXNlck1lc3NhZ2VD
b2RlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0VXNlck1lc3NhZ2VD
b2RlcnMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYxNDViZGQ4ZWRlMDRkMjE5
NzQyOGEzYzE2NTk2Mjk3MGY4ZGNkYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dFVzZXJNZXNz
YWdlQ29kZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzEgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0g
KgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0K
LSNpbmNsdWRlICJVc2VyTWVzc2FnZUNvZGVycy5oIgotI2luY2x1ZGUgIldlYkZyYW1lUHJveHku
aCIKLSNpbmNsdWRlICJXZWJQYWdlR3JvdXAuaCIKLSNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRh
LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0KLSNpZiBQTEFURk9STShDT0NPQSkKLSNp
bmNsdWRlICJPYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCIKLSNlbmRpZgotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotLy8gQWRkcwotLy8gLSBQYWdlIC0+IEJ1bmRsZVBhZ2UKLS8vIC0gRnJhbWUgLT4g
QnVuZGxlRnJhbWUKLS8vIC0gUGFnZUdyb3VwIC0+IEJ1bmRsZVBhZ2VHcm91cAotCi1jbGFzcyBX
ZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyIDogcHVibGljIFVzZXJNZXNzYWdlRW5jb2RlcjxX
ZWJDb250ZXh0VXNlck1lc3NhZ2VFbmNvZGVyPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBVc2Vy
TWVzc2FnZUVuY29kZXI8V2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2Rlcj4gQmFzZTsKLQotICAg
IGV4cGxpY2l0IFdlYkNvbnRleHRVc2VyTWVzc2FnZUVuY29kZXIoQVBJOjpPYmplY3QqIHJvb3Qs
IFdlYlByb2Nlc3NQcm94eSYgcHJvY2VzcykKLSAgICAgICAgOiBCYXNlKHJvb3QpCi0gICAgICAg
ICwgbV9wcm9jZXNzKHByb2Nlc3MpCi0gICAgewotICAgIH0KLQotICAgIFdlYkNvbnRleHRVc2Vy
TWVzc2FnZUVuY29kZXIoY29uc3QgV2ViQ29udGV4dFVzZXJNZXNzYWdlRW5jb2RlciYgdXNlck1l
c3NhZ2VFbmNvZGVyLCBBUEk6Ok9iamVjdCogcm9vdCkKLSAgICAgICAgOiBCYXNlKHJvb3QpCi0g
ICAgICAgICwgbV9wcm9jZXNzKHVzZXJNZXNzYWdlRW5jb2Rlci5tX3Byb2Nlc3MpCi0gICAgewot
ICAgIH0KLQotICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBj
b25zdAotICAgIHsKLSAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGUgdHlwZSA9IEFQSTo6T2JqZWN0
OjpUeXBlOjpOdWxsOwotICAgICAgICBpZiAoYmFzZUVuY29kZShlbmNvZGVyLCAqdGhpcywgdHlw
ZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAg
ICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OlBhZ2U6IHsKLSAgICAgICAgICAgIFdlYlBhZ2VQ
cm94eSogcGFnZSA9IHN0YXRpY19jYXN0PFdlYlBhZ2VQcm94eSo+KG1fcm9vdCk7Ci0gICAgICAg
ICAgICBlbmNvZGVyIDw8IHBhZ2UtPnBhZ2VJRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6RnJhbWU6IHsKLSAgICAgICAg
ICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVQcm94eSo+KG1f
cm9vdCk7Ci0gICAgICAgICAgICBlbmNvZGVyIDw8IGZyYW1lLT5mcmFtZUlEKCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpQ
YWdlR3JvdXA6IHsKLSAgICAgICAgICAgIFdlYlBhZ2VHcm91cCogcGFnZUdyb3VwID0gc3RhdGlj
X2Nhc3Q8V2ViUGFnZUdyb3VwKj4obV9yb290KTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgcGFn
ZUdyb3VwLT5kYXRhKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotI2lmIFBMQVRG
T1JNKENPQ09BKQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpPYmpDT2JqZWN0R3Jh
cGg6IHsKLSAgICAgICAgICAgIE9iakNPYmplY3RHcmFwaCogb2JqZWN0R3JhcGggPSBzdGF0aWNf
Y2FzdDxPYmpDT2JqZWN0R3JhcGgqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2RlciA8PCBX
ZWJDb250ZXh0T2JqQ09iamVjdEdyYXBoRW5jb2RlcihvYmplY3RHcmFwaCwgbV9wcm9jZXNzKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIH0KLSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgV2ViUHJvY2Vzc1Byb3h5JiBtX3Byb2Nl
c3M7Ci19OwotCi0vLyBBZGRzCi0vLyAgIC0gUGFnZSAtPiBCdW5kbGVQYWdlCi0vLyAgIC0gRnJh
bWUgLT4gQnVuZGxlRnJhbWUKLS8vICAgLSBQYWdlR3JvdXAgLT4gQnVuZGxlUGFnZUdyb3VwCi0K
LWNsYXNzIFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXIgOiBwdWJsaWMgVXNlck1lc3NhZ2VE
ZWNvZGVyPFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXI+IHsKLXB1YmxpYzoKLSAgICB0eXBl
ZGVmIFVzZXJNZXNzYWdlRGVjb2RlcjxXZWJDb250ZXh0VXNlck1lc3NhZ2VEZWNvZGVyPiBCYXNl
OwotCi0gICAgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlcihSZWZQdHI8QVBJOjpPYmplY3Q+
JiByb290LCBXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCi0gICAgICAgIDogQmFzZShyb290KQot
ICAgICAgICAsIG1fcHJvY2Vzcyhwcm9jZXNzKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJDb250
ZXh0VXNlck1lc3NhZ2VEZWNvZGVyKFdlYkNvbnRleHRVc2VyTWVzc2FnZURlY29kZXImIHVzZXJN
ZXNzYWdlRGVjb2RlciwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcm9vdCkKLSAgICAgICAgOiBCYXNl
KHJvb3QpCi0gICAgICAgICwgbV9wcm9jZXNzKHVzZXJNZXNzYWdlRGVjb2Rlci5tX3Byb2Nlc3Mp
Ci0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGRlY29kZShJUEM6OkFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgV2ViQ29udGV4dFVzZXJNZXNzYWdlRGVjb2RlciYgY29kZXIpCi0gICAg
ewotICAgICAgICBBUEk6Ok9iamVjdDo6VHlwZSB0eXBlID0gQVBJOjpPYmplY3Q6OlR5cGU6Ok51
bGw7Ci0gICAgICAgIGlmICghQmFzZTo6YmFzZURlY29kZShkZWNvZGVyLCBjb2RlciwgdHlwZSkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGNvZGVyLm1fcm9vdCB8
fCB0eXBlID09IEFQSTo6T2JqZWN0OjpUeXBlOjpOdWxsKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6
OlR5cGU6OkJ1bmRsZVBhZ2U6IHsKLSAgICAgICAgICAgIHVpbnQ2NF90IHBhZ2VJRDsKLSAgICAg
ICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFnZUlEKSkKLSAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBjb2Rlci5tX3Byb2Nlc3Mud2Vi
UGFnZShwYWdlSUQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlRnJhbWU6IHsKLSAgICAgICAgICAgIHVpbnQ2NF90
IGZyYW1lSUQ7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYW1lSUQpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IGNv
ZGVyLm1fcHJvY2Vzcy53ZWJGcmFtZShmcmFtZUlEKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICB9Ci0gICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2VHcm91cDog
ewotICAgICAgICAgICAgdWludDY0X3QgcGFnZUdyb3VwSUQ7Ci0gICAgICAgICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHBhZ2VHcm91cElEKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgICAgICBjb2Rlci5tX3Jvb3QgPSBXZWJQYWdlR3JvdXA6OmdldChwYWdlR3JvdXBJ
RCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotI2lmIFBMQVRGT1JNKENPQ09BKQot
ICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpPYmpDT2JqZWN0R3JhcGg6IHsKLSAgICAg
ICAgICAgIFJlZlB0cjxPYmpDT2JqZWN0R3JhcGg+IG9iamVjdEdyYXBoOwotICAgICAgICAgICAg
V2ViQ29udGV4dE9iakNPYmplY3RHcmFwaERlY29kZXIgb2JqZWN0R3JhcGhEZWNvZGVyKG9iamVj
dEdyYXBoLCBjb2Rlci5tX3Byb2Nlc3MpOwotICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29k
ZShvYmplY3RHcmFwaERlY29kZXIpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IG9iamVjdEdyYXBoLmdldCgpOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIH0KLSNlbmRpZgotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci1wcml2YXRlOgotICAgIFdlYlByb2Nlc3NQcm94eSYgbV9wcm9jZXNzOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGRmNWQ2ODEzY2UxYTFiMDM3MWEwNjM1YjVlMDJmNDgxMjk1ZTM2NzkuLjJjMjQ1YjQx
NTNhNjdjMzU2ZDZkMDc4ZDgwZGFhMmY3NjZkMThlY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQVBJQXJy
YXkuaCIKICNpbmNsdWRlICJBUElGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRm9ybUNsaWVu
dC5oIgorI2luY2x1ZGUgIkFQSUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiQVBJTGVnYWN5Q29udGV4
dEhpc3RvcnlDbGllbnQuaCIKICNpbmNsdWRlICJBUElMb2FkZXJDbGllbnQuaCIKICNpbmNsdWRl
ICJBUElQb2xpY3lDbGllbnQuaCIKQEAgLTYyLDcgKzYzLDYgQEAKICNpbmNsdWRlICJXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5j
bHVkZSAiV2ViQ29udGV4dE1lbnVQcm94eS5oIgotI2luY2x1ZGUgIldlYkNvbnRleHRVc2VyTWVz
c2FnZUNvZGVycy5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1
ZGUgIldlYkVkaXRDb21tYW5kUHJveHkuaCIKICNpbmNsdWRlICJXZWJFdmVudC5oIgpAQCAtNzEs
NiArNzEsNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYkZ1bGxTY3JlZW5NYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJGdWxsU2Ny
ZWVuTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgogI2luY2x1
ZGUgIldlYkluc3BlY3RvclByb3h5LmgiCiAjaW5jbHVkZSAiV2ViSW5zcGVjdG9yUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggY2I1ZWU0NmQ2OGNi
NjVkYzQ2MjZiNjVlNWNiNjhiMDY0MTAzNzgxMi4uYjhlZGFjNmZhMmZhY2MxNzE4NzIyZDM4OGY1
Zjg5OTNiZGEyZjBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuY3BwCkBAIC0zOCw4ICszOCw4IEBACiAjaW5jbHVkZSAiVGV4dENoZWNrZXIuaCIKICNpbmNs
dWRlICJXS0NvbnRleHRQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViQXBwbGljYXRpb25DYWNoZU1h
bmFnZXJQcm94eS5oIgorI2luY2x1ZGUgIldlYkNlcnRpZmljYXRlSW5mby5oIgogI2luY2x1ZGUg
IldlYkNvbnRleHRTdXBwbGVtZW50LmgiCi0jaW5jbHVkZSAiV2ViQ29udGV4dFVzZXJNZXNzYWdl
Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5LmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRGF0YWJhc2VNYW5hZ2VyUHJv
eHkuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCAwN2JlOGQ3YTZiOGM5NTNlMWEzY2JhMjVkNmFhMzMwMmI4ODRmMWYzLi43NWM0
MWE3Mjk2NTBjZjdjMDI2Y2JhYmMwMTMyY2UwYTJiMTIwZTcwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNDE1LDggKzE0MTUs
NiBAQAogCQlCQzhBNTAxNTExNzY1RjU2MDA3NTc1NzMgLyogV0tSZXRhaW5QdHIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEE1MDE0MTE3NjVGNTYw
MDc1NzU3MyAvKiBXS1JldGFpblB0ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUJDOEFDQTEzMTY2NzBEODkwMDRDMTk0MSAvKiBPYmpDT2JqZWN0
R3JhcGguaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJD
OEFDQTBGMTY2NzBEN0EwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGguaCAqLzsgfTsKIAkJQkM4
QUNBMTQxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEFDQTEwMTY2NzBEN0IwMDRDMTk0
MSAvKiBPYmpDT2JqZWN0R3JhcGgubW0gKi87IH07Ci0JCUJDOEFDQTE1MTY2NzBEODkwMDRDMTk0
MSAvKiBPYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDOEFDQTExMTY2NzBEN0UwMDRDMTk0MSAvKiBPYmpDT2JqZWN0
R3JhcGhDb2RlcnMuaCAqLzsgfTsKLQkJQkM4QUNBMTYxNjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNP
YmplY3RHcmFwaENvZGVycy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDOEFDQTEyMTY2NzBEODMwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGhDb2Rl
cnMubW0gKi87IH07CiAJCUJDOEYyRjJBMTYyNzNBMkMwMDVGQUNCNSAvKiBXS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhGMkYyODE2MjczQTJCMDA1RkFDQjUgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tICovOyB9OwogCQlCQzhGMkYy
QjE2MjczQTJDMDA1RkFDQjUgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
QzhGMkYyOTE2MjczQTJDMDA1RkFDQjUgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQkM4RjJGMkUxNjI3M0FDQzAwNUZBQ0I1IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkJy
b3dzZXJDb250ZXh0Q29udHJvbGxlckludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzhGMkYyRDE2MjczQUNCMDA1RkFDQjUgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCAqLzsgfTsKQEAg
LTE0NDksOSArMTQ0Nyw2IEBACiAJCUJDQUYzNjFGMTZDQTI4Q0QwMEQ0RTlGQyAvKiBGb3VuZGF0
aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDM0RFNDY4MTVBOTE3NjMwMDhEMjZGQyAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAq
LzsgfTsKIAkJQkNBRjM2MjAxNkNBMjhENjAwRDRFOUZDIC8qIEZvdW5kYXRpb24uZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzREU0
NjgxNUE5MTc2MzAwOEQyNkZDIC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQlCQ0FG
MzYyMjE2Q0EyOTJCMDBENEU5RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3Jr
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNERTQ2ODE1QTkxNzYzMDA4
RDI2RkMgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07Ci0JCUJDQjBCMERDMTIzMDVBMjUw
MEIxMzQxRSAvKiBXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjBCMERCMTIzMDVBMjUwMEIxMzQxRSAv
KiBXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCAqLzsgfTsKLQkJQkNCMEIwREUxMjMwNUE4
QzAwQjEzNDFFIC8qIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjBCMEREMTIzMDVBOEMwMEIx
MzQxRSAvKiBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmggKi87IH07Ci0JCUJDQjBC
MEUwMTIzMDVBQjEwMEIxMzQxRSAvKiBVc2VyTWVzc2FnZUNvZGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNCMEIwREYxMjMwNUFCMTAwQjEzNDFF
IC8qIFVzZXJNZXNzYWdlQ29kZXJzLmggKi87IH07CiAJCUJDQjYzNDc4MTE2QkYxMDYwMDYwMzIx
NSAvKiBXZWJLaXQyX0MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDQjYzNDc3MTE2QkYxMDYwMDYwMzIxNSAvKiBXZWJLaXQyX0MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlCQ0I5RTI0QjExMjBFMTVD
MDBBMTM3RTAgLyogV0tDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQ0I5RTI0OTExMjBFMTVDMDBBMTM3RTAgLyogV0tDb250ZXh0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkNCOUUyNEMx
MTIwRTE1QzAwQTEzN0UwIC8qIFdLQ29udGV4dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5RTI0QTExMjBFMTVDMDBBMTM3RTAgLyogV0tDb250
ZXh0LmNwcCAqLzsgfTsKQEAgLTM1MzYsOCArMzUzMSw2IEBACiAJCUJDOEE1MDE0MTE3NjVGNTYw
MDc1NzU3MyAvKiBXS1JldGFpblB0ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXS1JldGFpblB0ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzhBQ0EwRjE2
NjcwRDdBMDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE9iakNPYmplY3RHcmFwaC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzhBQ0ExMDE2NjcwRDdCMDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ09iamVjdEdyYXBoLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzhBQ0ExMTE2NjcwRDdFMDA0QzE5NDEgLyog
T2JqQ09iamVjdEdyYXBoQ29kZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE9iakNPYmplY3RHcmFwaENvZGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlC
QzhBQ0ExMjE2NjcwRDgzMDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoQ29kZXJzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gT2JqQ09iamVjdEdyYXBoQ29kZXJz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzhGMkYyODE2MjczQTJCMDA1RkFD
QjUgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
QzhGMkYyOTE2MjczQTJDMDA1RkFDQjUgLyogV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLV2ViUHJv
Y2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzhGMkYyRDE2MjczQUNCMDA1RkFDQjUgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVySW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVySW50
ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTM1NzAsOSArMzU2Myw2IEBA
CiAJCUJDQUNDNDQwMTZCMjRDQUEwMEI2RTA5MiAvKiBJbmZvLU9TWC5wbGlzdCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQucGxpc3QueG1sOyBwYXRoID0gIkluZm8tT1NYLnBsaXN0Ijsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkNBQ0M0NDMxNkIyNENBQTAwQjZFMDkyIC8qIEluZm8tT1NYLnBsaXN0
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5wbGlzdC54bWw7IHBhdGggPSAiSW5mby1PU1gucGxpc3QiOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0FFOURFOTE2MEMwOTc0MDBBMzMyMTcgLyogY29t
LmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3BtZW50LnhwYyAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gd3JhcHBlci5jZmJ1bmRsZTsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gY29tLmFwcGxlLldlYktpdC5XZWJDb250ZW50LkRldmVsb3Bt
ZW50LnhwYzsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJQkNCMEIwREIx
MjMwNUEyNTAwQjEzNDFFIC8qIFdlYkNvbnRleHRVc2VyTWVzc2FnZUNvZGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkNCMEIwREQxMjMwNUE4QzAwQjEzNDFFIC8q
IEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQ0IwQjBERjEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3Nh
Z2VDb2RlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVXNlck1lc3NhZ2VD
b2RlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCNjM0NzcxMTZCRjEwNjAw
NjAzMjE1IC8qIFdlYktpdDJfQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJLaXQyX0MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNCODZGNEIxMTZBQUFD
RDAwQ0UyMEI3IC8qIFdlYktpdC54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25maWc7IHBh
dGggPSBXZWJLaXQueGNjb25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjlF
MjQ5MTEyMEUxNUMwMEExMzdFMCAvKiBXS0NvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tDb250ZXh0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00
NTM3LDcgKzQ1MjcsNiBAQAogCQkJCTFBNjQyNDVDMTJERTI5QTEwMENBQUUyQyAvKiBVcGRhdGVJ
bmZvLmggKi8sCiAJCQkJMUFDMTMzNjUxODU2NUI1NzAwRjNFQzA1IC8qIFVzZXJEYXRhLmNwcCAq
LywKIAkJCQkxQUMxMzM2NjE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuaCAqLywKLQkJCQlC
Q0IwQjBERjEyMzA1QUIxMDBCMTM0MUUgLyogVXNlck1lc3NhZ2VDb2RlcnMuaCAqLywKIAkJCQky
Njg0MDU0QTE4Qjg2NkZGMDAyMkMzOEIgLyogVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mby5j
cHAgKi8sCiAJCQkJMjY4NDA1NDIxOEI4NUE2MzAwMjJDMzhCIC8qIFZpc2libGVDb250ZW50UmVj
dFVwZGF0ZUluZm8uaCAqLywKIAkJCQkxQTBGMjlDOTEyMEIzNzE2MDA1M0QxQjkgLyogVmlzaXRl
ZExpbmtUYWJsZS5jcHAgKi8sCkBAIC01OTQyLDcgKzU5MzEsNiBAQAogCQkJCTUxQTg0Q0UyMTI3
RjM4NkIwMENBNkVBNCAvKiBXZWJDb250ZXh0TWVudVByb3h5LmNwcCAqLywKIAkJCQk1MUFDQkI4
MTEyN0E4QkFEMDBEMjAzQjkgLyogV2ViQ29udGV4dE1lbnVQcm94eS5oICovLAogCQkJCUJDRjRE
RTI0MTY4RkE0NDgwMEM5NEFGQyAvKiBXZWJDb250ZXh0U3VwcGxlbWVudC5oICovLAotCQkJCUJD
QjBCMERCMTIzMDVBMjUwMEIxMzQxRSAvKiBXZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCAq
LywKIAkJCQkzMzA5MzQ1MjEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlclByb3h5
LmNwcCAqLywKIAkJCQkzMzA5MzQ1MzEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdl
clByb3h5LmggKi8sCiAJCQkJMzMwOTM0NTQxMzE1Qjk3NTAwOTdBN0JDIC8qIFdlYkNvb2tpZU1h
bmFnZXJQcm94eS5tZXNzYWdlcy5pbiAqLywKQEAgLTYyMjgsOCArNjIxNiw2IEBACiAJCQkJREY1
OEM2MzUxMzcxQUNBMDAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnRNYWMubW0gKi8sCiAJ
CQkJQkM4QUNBMEYxNjY3MEQ3QTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaC5oICovLAogCQkJ
CUJDOEFDQTEwMTY2NzBEN0IwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGgubW0gKi8sCi0JCQkJ
QkM4QUNBMTExNjY3MEQ3RTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaENvZGVycy5oICovLAot
CQkJCUJDOEFDQTEyMTY2NzBEODMwMDRDMTk0MSAvKiBPYmpDT2JqZWN0R3JhcGhDb2RlcnMubW0g
Ki8sCiAJCQkJQzU3NEE1N0YxMkU2NjY4MTAwMkRGRTk4IC8qIFBhc3RlYm9hcmRUeXBlcy5oICov
LAogCQkJCUM1NzRBNTgwMTJFNjY2ODEwMDJERkU5OCAvKiBQYXN0ZWJvYXJkVHlwZXMubW0gKi8s
CiAJCQkJRTE5NTgyRDIxNTNDQkZENzAwQjYwODc1IC8qIFBERktpdEltcG9ydHMuaCAqLywKQEAg
LTYzMTUsNyArNjMwMSw2IEBACiAJCQkJQkNBOEM2QUUxMUUzQzA4NzAwODEyRkI3IC8qIEluamVj
dGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggKi8sCiAJCQkJQkMxNERGNzYxMjBCNUI3OTAwODI2QzBD
IC8qIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQuY3BwICovLAogCQkJCUJDMTRERjc1MTIwQjVC
NzkwMDgyNkMwQyAvKiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLmggKi8sCi0JCQkJQkNCMEIw
REQxMjMwNUE4QzAwQjEzNDFFIC8qIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCAq
LywKIAkJCSk7CiAJCQlwYXRoID0gSW5qZWN0ZWRCdW5kbGU7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtNzM4MCw3ICs3MzY1LDYgQEAKIAkJCQlCQ0E4QzZCMDExRTNDMDg3MDA4MTJG
QjcgLyogSW5qZWN0ZWRCdW5kbGVQYWdlVUlDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
MzNFMEQxMTI0MDhFODYwMDM2MEYzRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE0REY3NzEyMEI1Qjc5MDA4MjZDMEMgLyogSW5qZWN0ZWRCdW5k
bGVTY3JpcHRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQkNCMEIwREUxMjMwNUE4QzAwQjEz
NDFFIC8qIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCBpbiBIZWFkZXJzICovLAog
CQkJCUM1OENERjJFMTg4NzYwOUYwMDg3MTUzNiAvKiBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQ
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzU4Q0RGMkExODg3NTQ4QjAwODcxNTM2IC8q
IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
QUU0OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNOUE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCkBA
IC03NDUwLDcgKzc0MzQsNiBAQAogCQkJCTFBMjE2MkIxMTFGMzg5NzEwMDhBRDBGNSAvKiBOUFJ1
bnRpbWVVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMkQ4NEEzMTI3RjZBRDEwMDFF
Qjk2MiAvKiBOUFZhcmlhbnREYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzhBQ0ExMzE2Njcw
RDg5MDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzhB
Q0ExNTE2NjcwRDg5MDA0QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoQ29kZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlCQ0NGNjcyRDEyQzdFREY3MDA4RjlDMzUgLyogT3JpZ2luQW5kRGF0YWJhc2Vz
LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Q0Y0N0ZGQjE3Mjc1QzU3MDA4QUNCOTEgLyogUGFnZUJh
bm5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM2RURBQTYxMTEyNzFDNjAwRTc2NzhCIC8qIFBh
Z2VDbGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNzU2Myw3ICs3NTQ2LDYgQEAKIAkJCQkxQUMx
MzM2ODE4NTY1QjU3MDBGM0VDMDUgLyogVXNlckRhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
M0NDMThCMTlCMDY0MEYwMEQxNEFFRiAvKiBVc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFn
ZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNEEzQ0MxOEQxOUIwNjQxOTAwRDE0QUVGIC8q
IFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0UHJveHkuaCBpbiBIZWFkZXJzICovLAotCQkJCUJD
QjBCMEUwMTIzMDVBQjEwMEIxMzQxRSAvKiBVc2VyTWVzc2FnZUNvZGVycy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMkQxMjVDNUUxODU3RUEwNTAwM0JBM0NCIC8qIFZpZXdHZXN0dXJlQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQxQjVENUUxODU4NjlDODAwNkM2NTk2IC8qIFZpZXdH
ZXN0dXJlQ29udHJvbGxlck1lc3NhZ2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRDgxOUJBMjE4
NjI4MDBFMDAxRjAzRDEgLyogVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKQEAgLTc2MDMsNyArNzU4NSw2IEBACiAJCQkJNTFBQ0JCODIxMjdBOEJB
RDAwRDIwM0I5IC8qIFdlYkNvbnRleHRNZW51UHJveHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
QUNCQkEwMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250ZXh0TWVudVByb3h5TWFjLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlCQ0Y0REUyNTE2OEZBNDQ4MDBDOTRBRkMgLyogV2ViQ29udGV4dFN1cHBs
ZW1lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCUJDQjBCMERDMTIzMDVBMjUwMEIxMzQxRSAvKiBX
ZWJDb250ZXh0VXNlck1lc3NhZ2VDb2RlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMDkzNDUw
MTMxNUI5NEQwMDk3QTdCQyAvKiBXZWJDb29raWVNYW5hZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkzMzA5MzQ0ODEzMTVCOTIyMDA5N0E3QkMgLyogV2ViQ29va2llTWFuYWdlck1lc3NhZ2VzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMzA5MzQ1NjEzMTVCOTc1MDA5N0E3QkMgLyogV2ViQ29va2ll
TWFuYWdlclByb3h5LmggaW4gSGVhZGVycyAqLywKQEAgLTkxNDUsNyArOTEyNiw2IEBACiAJCQkJ
MUEyRDg0QTQxMjdGNkFEMTAwMUVCOTYyIC8qIE5QVmFyaWFudERhdGEuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M0Njk0QzkxQTRCNEVBMTAwQUQ1ODQ1IC8qIFdlYlBhc3RlYm9hcmRQcm94eU1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzhBQ0ExNDE2NjcwRDg5MDA0
QzE5NDEgLyogT2JqQ09iamVjdEdyYXBoLm1tIGluIFNvdXJjZXMgKi8sCi0JCQkJQkM4QUNBMTYx
NjY3MEQ4OTAwNEMxOTQxIC8qIE9iakNPYmplY3RHcmFwaENvZGVycy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUJDQ0Y2NzMzMTJDN0YxNUMwMDhGOUMzNSAvKiBPcmlnaW5BbmREYXRhYmFzZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0MzODc0MzQxNzJGNTYxNTAwMUJEODhBIC8qIFBhZ2VCYW5u
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M2RDM3RkMxNzJGNTU1RjAwOUQyODQ3IC8qIFBh
Z2VCYW5uZXJNYWMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKaW5kZXgg
Y2MyMmFkODI2NWU1NDQ2ZTA3NzA0ZmIxNjA1NmYzZGI1ZjI5NzEwYy4uZDhhOGY5NzdlZGZjMWUw
MGZjY2E4NDQyZDIzZTRmMmY3OTAxODQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKQEAgLTI3
LDkgKzI3LDkgQEAKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZS5oIgogCiAjaW5jbHVkZSAiQVBJ
QXJyYXkuaCIKKyNpbmNsdWRlICJBUElEYXRhLmgiCiAjaW5jbHVkZSAiQXJndW1lbnRzLmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC5oIgotI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJOb3RpZmljYXRpb25QZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXIuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgogI2luY2x1
ZGUgIlVzZXJEYXRhLmgiCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViUGFn
ZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VHcm91cFByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVy
ZW5jZXNLZXlzLmgiCiAjaW5jbHVkZSAiV2ViUHJlZmVyZW5jZXNTdG9yZS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNvZGVycy5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
Q29kZXJzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMDdiNjEwYTU0MWNkZjQ1
YzU5N2NjMjZkMmEzMTllNWU3NTkwYTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
Ci0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
LSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0g
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUNv
ZGVyc19oCi0jZGVmaW5lIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnNfaAotCi0jaW5j
bHVkZSAiVXNlck1lc3NhZ2VDb2RlcnMuaCIKLSNpbmNsdWRlICJXZWJGcmFtZS5oIgotI2luY2x1
ZGUgIldlYlBhZ2UuaCIKLSNpbmNsdWRlICJXZWJQYWdlR3JvdXBEYXRhLmgiCi0jaW5jbHVkZSAi
V2ViUGFnZUdyb3VwUHJveHkuaCIKLSNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCi0KLSNpZiBQTEFU
Rk9STShDT0NPQSkKLSNpbmNsdWRlICJPYmpDT2JqZWN0R3JhcGhDb2RlcnMuaCIKLSNlbmRpZgot
Ci1uYW1lc3BhY2UgV2ViS2l0IHsKLQotLy8gQWRkcwotLy8gLSBCdW5kbGVQYWdlIC0+IFBhZ2UK
LS8vIC0gQnVuZGxlRnJhbWUgLT4gRnJhbWUKLS8vIC0gQnVuZGxlUGFnZUdyb3VwIC0+IFBhZ2VH
cm91cAotCi1jbGFzcyBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2RlciA6IHB1YmxpYyBV
c2VyTWVzc2FnZUVuY29kZXI8SW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXI+IHsKLXB1
YmxpYzoKLSAgICB0eXBlZGVmIFVzZXJNZXNzYWdlRW5jb2RlcjxJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2Rlcj4gQmFzZTsKLQotICAgIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNv
ZGVyKEFQSTo6T2JqZWN0KiByb290KQotICAgICAgICA6IEJhc2Uocm9vdCkKLSAgICB7Ci0gICAg
fQotCi0gICAgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIoY29uc3QgSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXImLCBBUEk6Ok9iamVjdCogcm9vdCkKLSAgICAgICAgOiBC
YXNlKHJvb3QpCi0gICAgewotICAgIH0KLQotICAgIHZvaWQgZW5jb2RlKElQQzo6QXJndW1lbnRF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAotICAgIHsKLSAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGUg
dHlwZSA9IEFQSTo6T2JqZWN0OjpUeXBlOjpOdWxsOwotICAgICAgICBpZiAoYmFzZUVuY29kZShl
bmNvZGVyLCAqdGhpcywgdHlwZSkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgQVBJOjpPYmplY3Q6OlR5cGU6OkJ1bmRsZVBhZ2U6
IHsKLSAgICAgICAgICAgIFdlYlBhZ2UqIHBhZ2UgPSBzdGF0aWNfY2FzdDxXZWJQYWdlKj4obV9y
b290KTsKLSAgICAgICAgICAgIGVuY29kZXIgPDwgcGFnZS0+cGFnZUlEKCk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5k
bGVGcmFtZTogewotICAgICAgICAgICAgV2ViRnJhbWUqIGZyYW1lID0gc3RhdGljX2Nhc3Q8V2Vi
RnJhbWUqPihtX3Jvb3QpOwotICAgICAgICAgICAgZW5jb2RlciA8PCBmcmFtZS0+ZnJhbWVJRCgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVj
dDo6VHlwZTo6QnVuZGxlUGFnZUdyb3VwOiB7Ci0gICAgICAgICAgICBXZWJQYWdlR3JvdXBQcm94
eSogcGFnZUdyb3VwID0gc3RhdGljX2Nhc3Q8V2ViUGFnZUdyb3VwUHJveHkqPihtX3Jvb3QpOwot
ICAgICAgICAgICAgZW5jb2RlciA8PCBwYWdlR3JvdXAtPnBhZ2VHcm91cElEKCk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgICAgICBjYXNl
IEFQSTo6T2JqZWN0OjpUeXBlOjpPYmpDT2JqZWN0R3JhcGg6IHsKLSAgICAgICAgICAgIE9iakNP
YmplY3RHcmFwaCogb2JqZWN0R3JhcGggPSBzdGF0aWNfY2FzdDxPYmpDT2JqZWN0R3JhcGgqPiht
X3Jvb3QpOwotICAgICAgICAgICAgZW5jb2RlciA8PCBJbmplY3RlZEJ1bmRsZU9iakNPYmplY3RH
cmFwaEVuY29kZXIob2JqZWN0R3JhcGgsIFdlYlByb2Nlc3M6OnNoYXJlZCgpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci19OwotCi0vLyBBZGRzCi0vLyAgIC0gUGFnZSAtPiBCdW5kbGVQYWdlCi0vLyAgIC0g
RnJhbWUgLT4gQnVuZGxlRnJhbWUKLS8vICAgLSBQYWdlR3JvdXAgLT4gQnVuZGxlUGFnZUdyb3Vw
Ci0KLWNsYXNzIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyIDogcHVibGljIFVzZXJN
ZXNzYWdlRGVjb2RlcjxJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRGVjb2Rlcj4gewotcHVibGlj
OgotICAgIHR5cGVkZWYgVXNlck1lc3NhZ2VEZWNvZGVyPEluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VEZWNvZGVyPiBCYXNlOwotCi0gICAgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURlY29kZXIo
UmVmUHRyPEFQSTo6T2JqZWN0PiYgcm9vdCkKLSAgICAgICAgOiBCYXNlKHJvb3QpCi0gICAgewot
ICAgIH0KLQotICAgIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VEZWNvZGVyKEluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VEZWNvZGVyJiwgUmVmUHRyPEFQSTo6T2JqZWN0PiYgcm9vdCkKLSAgICAg
ICAgOiBCYXNlKHJvb3QpCi0gICAgewotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGRlY29kZShJ
UEM6OkFyZ3VtZW50RGVjb2RlciYgZGVjb2RlciwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZURl
Y29kZXImIGNvZGVyKQotICAgIHsKLSAgICAgICAgQVBJOjpPYmplY3Q6OlR5cGUgdHlwZSA9IEFQ
STo6T2JqZWN0OjpUeXBlOjpOdWxsOwotICAgICAgICBpZiAoIUJhc2U6OmJhc2VEZWNvZGUoZGVj
b2RlciwgY29kZXIsIHR5cGUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAg
IGlmIChjb2Rlci5tX3Jvb3QgfHwgdHlwZSA9PSBBUEk6Ok9iamVjdDo6VHlwZTo6TnVsbCkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAg
ICBjYXNlIEFQSTo6T2JqZWN0OjpUeXBlOjpQYWdlOiB7Ci0gICAgICAgICAgICB1aW50NjRfdCBw
YWdlSUQ7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VJRCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgY29kZXIubV9yb290ID0gV2ViUHJv
Y2Vzczo6c2hhcmVkKCkud2ViUGFnZShwYWdlSUQpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6RnJhbWU6IHsKLSAgICAgICAg
ICAgIHVpbnQ2NF90IGZyYW1lSUQ7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZy
YW1lSUQpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGNvZGVy
Lm1fcm9vdCA9IFdlYlByb2Nlc3M6OnNoYXJlZCgpLndlYkZyYW1lKGZyYW1lSUQpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBBUEk6Ok9iamVjdDo6VHlwZTo6
UGFnZUdyb3VwOiB7Ci0gICAgICAgICAgICBXZWJQYWdlR3JvdXBEYXRhIHBhZ2VHcm91cERhdGE7
Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBhZ2VHcm91cERhdGEpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGNvZGVyLm1fcm9vdCA9IFdlYlBy
b2Nlc3M6OnNoYXJlZCgpLndlYlBhZ2VHcm91cChwYWdlR3JvdXBEYXRhKTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICB9Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgICAgIGNhc2UgQVBJ
OjpPYmplY3Q6OlR5cGU6Ok9iakNPYmplY3RHcmFwaDogewotICAgICAgICAgICAgUmVmUHRyPE9i
akNPYmplY3RHcmFwaD4gb2JqZWN0R3JhcGg7Ci0gICAgICAgICAgICBJbmplY3RlZEJ1bmRsZU9i
akNPYmplY3RHcmFwaERlY29kZXIgb2JqZWN0R3JhcGhEZWNvZGVyKG9iamVjdEdyYXBoLCBXZWJQ
cm9jZXNzOjpzaGFyZWQoKSk7Ci0gICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKG9iamVj
dEdyYXBoRGVjb2RlcikpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAg
ICAgY29kZXIubV9yb290ID0gb2JqZWN0R3JhcGguZ2V0KCk7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgfQotI2VuZGlmCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIEluamVjdGVkQnVuZGxlVXNlck1lc3Nh
Z2VDb2RlcnNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb25u
ZWN0aW9uVG9VSVByb2Nlc3MuY3BwCmluZGV4IDYxZTRmYzNkZTY1NjNjMjdhYTc0NDdmMTZlYWU4
MjkyYWJkMDQyNGUuLjlmNjlhMzMxYmFlNmUyNTYwZTdjYTcxN2I1ZDY4NTVmMzcwMDBmYWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29ubmVjdGlvblRvVUlQcm9j
ZXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1VJ
UHJvY2Vzcy5jcHAKQEAgLTI2LDcgKzI2LDYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJXZWJDb25uZWN0aW9uVG9VSVByb2Nlc3MuaCIKIAotI2luY2x1ZGUgIkluamVjdGVkQnVu
ZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uTWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRl
eCBiMzhiZjYyNmUwMDRhNzExMGM0YTU0MWUwMDcwZGY0MTA0M2IwNGE5Li40ZDU0YmFjMDZkZGY4
MGMxZTE1N2Q5ZTNjNTVmNDUxN2VjYWRjOTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCkBA
IC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQVBJU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJEcmF3aW5nQXJlYS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTmF2aWdhdGlvbkFjdGlv
bi5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIKICNpbmNs
dWRlICJMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIK
ICNpbmNsdWRlICJQYWdlQmFubmVyLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CmluZGV4IGNjMzhjNzRiN2RmY2YwYjMyMmM3ODliODY5NDg1ZjI2OGYwOWEyZTUuLmNkM2ZkNmU3
NjBiNjQ5NjNjNmIxNWFjMDlhN2M0MWVmNDQzZmRhMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVC
YWNrRm9yd2FyZExpc3RJdGVtLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVET01XaW5kb3dF
eHRlbnNpb24uaCIKICNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uaCIK
LSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAi
TmF2aWdhdGlvbkFjdGlvbkRhdGEuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3LmgiCiAjaW5jbHVk
ZSAiVXNlckRhdGEuaCIKQEAgLTQ5LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJXZWJJY29uRGF0YWJh
c2VNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYk5hdmlnYXRpb25EYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNs
dWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViQ29udGV4dE1lbnUuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkNvbnRleHRNZW51LmNwcAppbmRleCBjYWE4Nzc4ZDEyNGYx
YmUyNjdiNWE2OGM1ZWU2Y2UxZmU2YTEzYmYzLi4zMDg0ZWUyYzg4YTMyYzFkNGU3NjQxOGExYWJh
MDBjZWY0ZTY3MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViQ29udGV4dE1lbnUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJDb250ZXh0TWVudS5jcHAKQEAgLTI3LDEyICsyNywxMiBAQAogCiAjaW5jbHVkZSAi
Q29udGV4dE1lbnVDb250ZXh0RGF0YS5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlSGl0VGVz
dFJlc3VsdC5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VDb2RlcnMuaCIK
ICNpbmNsdWRlICJVc2VyRGF0YS5oIgogI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5o
IgogI2luY2x1ZGUgIldlYkhpdFRlc3RSZXN1bHQuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZXh0TWVudS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZS5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDM1NmIzMTY1
NDM4MjFmZWRjZDU0YmRkYzg5NDQzOTg5ZTBhMGI3ZmEuLjQxM2Y3Y2YxNDRmNDlmMjE4NGExMzYx
MTA4YTEzMDFiYWI0Mzk3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJXZWJQYWdlLmgiCiAKKyNpbmNsdWRlICJBUElHZW9tZXRyeS5oIgogI2luY2x1ZGUg
IkFyZ3VtZW50cy5oIgogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKICNpbmNsdWRlICJEcmFn
Q29udHJvbGxlckFjdGlvbi5oIgpAQCAtMzgsNyArMzksNiBAQAogI2luY2x1ZGUgIkV2ZW50RGlz
cGF0Y2hlci5oIgogI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlLmgiCiAjaW5jbHVkZSAiSW5qZWN0
ZWRCdW5kbGVCYWNrRm9yd2FyZExpc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlQ29kZXJzLmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmluZGV4IDJiMjEzOWI3
MzQxZTc4ZWM3OTg1MjMzNDM0NmVlNDcyNTNkMzc2N2EuLmFjNDFlYWU4NmM3ZmRkNzk0OGRhMzEz
OGZiNDJiMDI3N2ZlZjIzNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTM1LDcgKzM1LDYgQEAKICNpbXBvcnQgIkVk
aXRpbmdSYW5nZS5oIgogI2ltcG9ydCAiRWRpdG9yU3RhdGUuaCIKICNpbXBvcnQgIkluamVjdGVk
QnVuZGxlSGl0VGVzdFJlc3VsdC5oIgotI2ltcG9ydCAiSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2Fn
ZUNvZGVycy5oIgogI2ltcG9ydCAiUERGS2l0SW1wb3J0cy5oIgogI2ltcG9ydCAiUGFnZUJhbm5l
ci5oIgogI2ltcG9ydCAiUGx1Z2luVmlldy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5jcHAKaW5kZXggZTQ3MGM5M2MxNmQxYmY3NTY4NjA3M2Y2OGU5M2ZmYzhiZDE3YjM0
Ni4uMDAwYWI2ZDQ2NjhkZmNlODEwZTJhZDgzYjk5ZmJjY2ZjM2EzMDBjMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVk
ZSAiRHJhd2luZ0FyZWEuaCIKICNpbmNsdWRlICJFdmVudERpc3BhdGNoZXIuaCIKICNpbmNsdWRl
ICJJbmplY3RlZEJ1bmRsZS5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VD
b2RlcnMuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb25NYW5hZ2VyLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIKQEAgLTUzLDcg
KzUyLDcgQEAKICNpbmNsdWRlICJXZWJNZW1vcnlTYW1wbGVyLmgiCiAjaW5jbHVkZSAiV2ViT3Jp
Z2luRGF0YU1hbmFnZXIuaCIKICNpbmNsdWRlICJXZWJQYWdlLmgiCi0jaW5jbHVkZSAiV2ViUGFn
ZUdyb3VwLmgiCisjaW5jbHVkZSAiV2ViUGFnZUdyb3VwUHJveHkuaCIKICNpbmNsdWRlICJXZWJQ
YWdlR3JvdXBQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUGxhdGZvcm1TdHJhdGVnaWVz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtOTQsNiAr
OTMsMTAgQEAKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgIk9iakNPYmplY3RH
cmFwaC5oIgorI2VuZGlmCisKICNpZiBFTkFCTEUoTkVUV09SS19QUk9DRVNTKQogI2lmIFBMQVRG
T1JNKENPQ09BKQogI2luY2x1ZGUgIkNvb2tpZVN0b3JhZ2VTaGltLmgiCg==
</data>
<flag name="review"
          id="268717"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>