<?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>46547</bug_id>
          
          <creation_ts>2010-09-24 18:48:51 -0700</creation_ts>
          <short_desc>Add more adoptPtr</short_desc>
          <delta_ts>2011-12-25 19:39:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>41321</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Darin Adler">darin</reporter>
          <assigned_to name="Darin Adler">darin</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>284912</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-24 18:48:51 -0700</bug_when>
    <thetext>Add more adoptPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285515</commentid>
    <comment_count>1</comment_count>
      <attachid>68922</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-09-27 09:55:34 -0700</bug_when>
    <thetext>Created attachment 68922
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527112</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-12-25 19:39:27 -0800</bug_when>
    <thetext>Almost everything in the patch on this bug is fixed. No need to keep this open.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68922</attachid>
            <date>2010-09-27 09:55:34 -0700</date>
            <delta_ts>2010-09-27 09:55:57 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-46547-20100927095533.patch</filename>
            <type>text/plain</type>
            <size>136112</size>
            <attacher name="Darin Adler">darin</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY4MzE5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMDktMjQgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBtb3JlIGFkb3B0UHRyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjU0NworCisgICAgICAgICogQVBJL0pTU3RyaW5n
UmVmQ0YuY3BwOgorICAgICAgICAoSlNTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvQXJndW1lbnRzLmNwcDoKKyAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpkZWxl
dGVQcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9Bcmd1bWVudHMuaDoKKyAgICAgICAgKEpT
Qzo6QXJndW1lbnRzOjpjb3B5UmVnaXN0ZXJzKToKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
Ojpjb3B5UmVnaXN0ZXJzKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OmNv
cHlHbG9iYWxzRnJvbSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojpjb3B5R2xvYmFs
c1RvKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6
OkpTR2xvYmFsT2JqZWN0OjpzZXRSZWdpc3RlcnMpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6YWRkU3RhdGljR2xvYmFscyk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6SlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTVmFyaWFibGVPYmplY3Q6OmNvcHlSZWdpc3RlckFycmF5KToK
KyAgICAgICAgKEpTQzo6SlNWYXJpYWJsZU9iamVjdDo6c2V0UmVnaXN0ZXJzKToKKyAgICAgICAg
KiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlQ2hh
aW46OlN0cnVjdHVyZUNoYWluKToKKyAgICAgICAgKiB3dGYvTGlzdEhhc2hTZXQuaDoKKyAgICAg
ICAgKFdURjo6OjpMaXN0SGFzaFNldCk6CisgICAgICAgICogd3RmL093bkFycmF5UHRyLmg6Cisg
ICAgICAgICogd3RmL093blB0ci5oOgorICAgICAgICAqIHd0Zi9QYXNzT3duQXJyYXlQdHIuaDoK
KyAgICAgICAgKiB3dGYvUGFzc093blB0ci5oOgorCiAyMDEwLTA5LTI0ICBQYXRyaWNrIEdhbnN0
ZXJlciAgPHBhcm9nYUBwYXJvZ2EuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJh
cnJhY2xvdWdoLgpJbmRleDogSmF2YVNjcmlwdENvcmUvQVBJL0pTU3RyaW5nUmVmQ0YuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU1N0cmluZ1JlZkNGLmNwcAkocmV2aXNp
b24gNjgyODIpCisrKyBKYXZhU2NyaXB0Q29yZS9BUEkvSlNTdHJpbmdSZWZDRi5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgSlNTdHJpbmdSZWYgSlNTdHJpbmdDcmVhdGVXaXRo
Q0ZTdHJpbmcoQwogICAgIC8vIGl0IGNhbiBob2xkLiAgKDxyZGFyOi8vcHJvYmxlbS82ODA2NDc4
PikKICAgICBzaXplX3QgbGVuZ3RoID0gQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKTsKICAgICBp
ZiAobGVuZ3RoKSB7Ci0gICAgICAgIE93bkFycmF5UHRyPFVuaUNoYXI+IGJ1ZmZlcihuZXcgVW5p
Q2hhcltsZW5ndGhdKTsKKyAgICAgICAgT3duQXJyYXlQdHI8VW5pQ2hhcj4gYnVmZmVyID0gYWRv
cHRBcnJheVB0cihuZXcgVW5pQ2hhcltsZW5ndGhdKTsKICAgICAgICAgQ0ZTdHJpbmdHZXRDaGFy
YWN0ZXJzKHN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgbGVuZ3RoKSwgYnVmZmVyLmdldCgpKTsKICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKFVuaUNoYXIpID09IHNpemVvZihVQ2hhciksIHVu
aWNoYXJfYW5kX3VjaGFyX211c3RfYmVfc2FtZV9zaXplKTsKICAgICAgICAgcmV0dXJuIE9wYXF1
ZUpTU3RyaW5nOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlci5nZXQoKSks
IGxlbmd0aCkucmVsZWFzZVJlZigpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1
bWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRz
LmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2MSw3ICsyNjEsNyBAQCBib29sIEFyZ3VtZW50czo6
ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlCiB7CiAgICAgaWYgKGkgPCBkLT5udW1Bcmd1bWVudHMp
IHsKICAgICAgICAgaWYgKCFkLT5kZWxldGVkQXJndW1lbnRzKSB7Ci0gICAgICAgICAgICBkLT5k
ZWxldGVkQXJndW1lbnRzLnNldChuZXcgYm9vbFtkLT5udW1Bcmd1bWVudHNdKTsKKyAgICAgICAg
ICAgIGQtPmRlbGV0ZWRBcmd1bWVudHMgPSBhZG9wdEFycmF5UHRyKG5ldyBib29sW2QtPm51bUFy
Z3VtZW50c10pOwogICAgICAgICAgICAgbWVtc2V0KGQtPmRlbGV0ZWRBcmd1bWVudHMuZ2V0KCks
IDAsIHNpemVvZihib29sKSAqIGQtPm51bUFyZ3VtZW50cyk7CiAgICAgICAgIH0KICAgICAgICAg
aWYgKCFkLT5kZWxldGVkQXJndW1lbnRzW2ldKSB7CkBAIC0yNzksNyArMjc5LDcgQEAgYm9vbCBB
cmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZQogICAgIHVuc2lnbmVkIGkgPSBwcm9w
ZXJ0eU5hbWUudG9BcnJheUluZGV4KGlzQXJyYXlJbmRleCk7CiAgICAgaWYgKGlzQXJyYXlJbmRl
eCAmJiBpIDwgZC0+bnVtQXJndW1lbnRzKSB7CiAgICAgICAgIGlmICghZC0+ZGVsZXRlZEFyZ3Vt
ZW50cykgewotICAgICAgICAgICAgZC0+ZGVsZXRlZEFyZ3VtZW50cy5zZXQobmV3IGJvb2xbZC0+
bnVtQXJndW1lbnRzXSk7CisgICAgICAgICAgICBkLT5kZWxldGVkQXJndW1lbnRzID0gYWRvcHRB
cnJheVB0cihuZXcgYm9vbFtkLT5udW1Bcmd1bWVudHNdKTsKICAgICAgICAgICAgIG1lbXNldChk
LT5kZWxldGVkQXJndW1lbnRzLmdldCgpLCAwLCBzaXplb2YoYm9vbCkgKiBkLT5udW1Bcmd1bWVu
dHMpOwogICAgICAgICB9CiAgICAgICAgIGlmICghZC0+ZGVsZXRlZEFyZ3VtZW50c1tpXSkgewpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5oCShyZXZpc2lvbiA2ODI4MikKKysrIEph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMywx
MCArMjEzLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBpbnQgcmVnaXN0ZXJPZmZzZXQg
PSBkLT5udW1QYXJhbWV0ZXJzICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplOwog
ICAgICAgICBzaXplX3QgcmVnaXN0ZXJBcnJheVNpemUgPSBkLT5udW1QYXJhbWV0ZXJzOwogCi0g
ICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlckFycmF5ID0gbmV3IFJlZ2lzdGVyW3JlZ2lzdGVyQXJy
YXlTaXplXTsKLSAgICAgICAgbWVtY3B5KHJlZ2lzdGVyQXJyYXksIGQtPnJlZ2lzdGVycyAtIHJl
Z2lzdGVyT2Zmc2V0LCByZWdpc3RlckFycmF5U2l6ZSAqIHNpemVvZihSZWdpc3RlcikpOwotICAg
ICAgICBkLT5yZWdpc3RlckFycmF5LnNldChyZWdpc3RlckFycmF5KTsKLSAgICAgICAgZC0+cmVn
aXN0ZXJzID0gcmVnaXN0ZXJBcnJheSArIHJlZ2lzdGVyT2Zmc2V0OworICAgICAgICBPd25BcnJh
eVB0cjxSZWdpc3Rlcj4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFJlZ2lzdGVy
W3JlZ2lzdGVyQXJyYXlTaXplXSk7CisgICAgICAgIG1lbWNweShyZWdpc3RlckFycmF5LmdldCgp
LCBkLT5yZWdpc3RlcnMgLSByZWdpc3Rlck9mZnNldCwgcmVnaXN0ZXJBcnJheVNpemUgKiBzaXpl
b2YoUmVnaXN0ZXIpKTsKKyAgICAgICAgZC0+cmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQo
KSArIHJlZ2lzdGVyT2Zmc2V0OworICAgICAgICBkLT5yZWdpc3RlckFycmF5ID0gcmVnaXN0ZXJB
cnJheS5yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgLy8gVGhpcyBKU0FjdGl2YXRpb24gZnVuY3Rp
b24gaXMgZGVmaW5lZCBoZXJlIHNvIGl0IGNhbiBnZXQgYXQgQXJndW1lbnRzOjpzZXRSZWdpc3Rl
cnMuCkBAIC0yMzQsOCArMjM0LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGludCByZWdp
c3Rlck9mZnNldCA9IG51bVBhcmFtZXRlcnNNaW51c1RoaXMgKyBSZWdpc3RlckZpbGU6OkNhbGxG
cmFtZUhlYWRlclNpemU7CiAgICAgICAgIHNpemVfdCByZWdpc3RlckFycmF5U2l6ZSA9IG51bUxv
Y2FscyArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsKIAotICAgICAgICBSZWdp
c3RlciogcmVnaXN0ZXJBcnJheSA9IGNvcHlSZWdpc3RlckFycmF5KGQoKS0+cmVnaXN0ZXJzIC0g
cmVnaXN0ZXJPZmZzZXQsIHJlZ2lzdGVyQXJyYXlTaXplKTsKLSAgICAgICAgc2V0UmVnaXN0ZXJz
KHJlZ2lzdGVyQXJyYXkgKyByZWdpc3Rlck9mZnNldCwgcmVnaXN0ZXJBcnJheSk7CisgICAgICAg
IE93bkFycmF5UHRyPFJlZ2lzdGVyPiByZWdpc3RlckFycmF5ID0gY29weVJlZ2lzdGVyQXJyYXko
ZCgpLT5yZWdpc3RlcnMgLSByZWdpc3Rlck9mZnNldCwgcmVnaXN0ZXJBcnJheVNpemUpOworICAg
ICAgICBSZWdpc3RlciogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVy
T2Zmc2V0OworICAgICAgICBzZXRSZWdpc3RlcnMocmVnaXN0ZXJzLCByZWdpc3RlckFycmF5LnJl
bGVhc2UoKSk7CiAgICAgfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsNyAr
MTgwLDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGlm
IChtX2NhblVzZUpJVCkKICAgICAgICAgbV9jYW5Vc2VKSVQgPSBleGVjdXRhYmxlQWxsb2NhdG9y
LmlzVmFsaWQoKTsKICNlbmRpZgotICAgIGppdFN0dWJzID0gbmV3IEpJVFRodW5rcyh0aGlzKTsK
KyAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwogI2VuZGlmCiB9
CiAKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZp
c2lvbiA2ODI4MikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00MjUsOCArNDI1LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
Y29weUdsb2JhbHNGcm9tKFJlZwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIFJl
Z2lzdGVyKiByZWdpc3RlckFycmF5ID0gY29weVJlZ2lzdGVyQXJyYXkocmVnaXN0ZXJGaWxlLmxh
c3RHbG9iYWwoKSwgbnVtR2xvYmFscyk7Ci0gICAgc2V0UmVnaXN0ZXJzKHJlZ2lzdGVyQXJyYXkg
KyBudW1HbG9iYWxzLCByZWdpc3RlckFycmF5LCBudW1HbG9iYWxzKTsKKyAgICBPd25BcnJheVB0
cjxSZWdpc3Rlcj4gcmVnaXN0ZXJBcnJheSA9IGNvcHlSZWdpc3RlckFycmF5KHJlZ2lzdGVyRmls
ZS5sYXN0R2xvYmFsKCksIG51bUdsb2JhbHMpOworICAgIFJlZ2lzdGVyKiByZWdpc3RlcnMgPSBy
ZWdpc3RlckFycmF5LmdldCgpICsgbnVtR2xvYmFsczsKKyAgICBzZXRSZWdpc3RlcnMocmVnaXN0
ZXJzLCByZWdpc3RlckFycmF5LnJlbGVhc2UoKSwgbnVtR2xvYmFscyk7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmNvcHlHbG9iYWxzVG8oUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUpCkBA
IC00NDAsNyArNDQxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6Y29weUdsb2JhbHNUbyhSZWdp
cwogCiAgICAgaWYgKGQoKS0+cmVnaXN0ZXJBcnJheSkgewogICAgICAgICBtZW1jcHkocmVnaXN0
ZXJGaWxlLnN0YXJ0KCkgLSBkKCktPnJlZ2lzdGVyQXJyYXlTaXplLCBkKCktPnJlZ2lzdGVyQXJy
YXkuZ2V0KCksIGQoKS0+cmVnaXN0ZXJBcnJheVNpemUgKiBzaXplb2YoUmVnaXN0ZXIpKTsKLSAg
ICAgICAgc2V0UmVnaXN0ZXJzKHJlZ2lzdGVyRmlsZS5zdGFydCgpLCAwLCAwKTsKKyAgICAgICAg
c2V0UmVnaXN0ZXJzKHJlZ2lzdGVyRmlsZS5zdGFydCgpLCBQYXNzT3duQXJyYXlQdHI8UmVnaXN0
ZXI+KCksIDApOwogICAgIH0KIH0KIApJbmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAkocmV2aXNpb24gNjgyODIpCisrKyBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxOSw3ICszMTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAg
ICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKIAotICAgICAgICB2b2lkIHNldFJlZ2lz
dGVycyhSZWdpc3RlciogcmVnaXN0ZXJzLCBSZWdpc3RlciogcmVnaXN0ZXJBcnJheSwgc2l6ZV90
IGNvdW50KTsKKyAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoUmVnaXN0ZXIqIHJlZ2lzdGVycywg
UGFzc093bkFycmF5UHRyPFJlZ2lzdGVyPiByZWdpc3RlckFycmF5LCBzaXplX3QgY291bnQpOwog
CiAgICAgICAgIHZvaWQqIG9wZXJhdG9yIG5ldyhzaXplX3QpOyAvLyBjYW4gb25seSBiZSBhbGxv
Y2F0ZWQgd2l0aCBKU0dsb2JhbERhdGEKICAgICB9OwpAQCAtMzMyLDcgKzMzMiw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3QqPihh
c09iamVjdCh2YWx1ZSkpOwogICAgIH0KIAotICAgIGlubGluZSB2b2lkIEpTR2xvYmFsT2JqZWN0
OjpzZXRSZWdpc3RlcnMoUmVnaXN0ZXIqIHJlZ2lzdGVycywgUmVnaXN0ZXIqIHJlZ2lzdGVyQXJy
YXksIHNpemVfdCBjb3VudCkKKyAgICBpbmxpbmUgdm9pZCBKU0dsb2JhbE9iamVjdDo6c2V0UmVn
aXN0ZXJzKFJlZ2lzdGVyKiByZWdpc3RlcnMsIFBhc3NPd25BcnJheVB0cjxSZWdpc3Rlcj4gcmVn
aXN0ZXJBcnJheSwgc2l6ZV90IGNvdW50KQogICAgIHsKICAgICAgICAgSlNWYXJpYWJsZU9iamVj
dDo6c2V0UmVnaXN0ZXJzKHJlZ2lzdGVycywgcmVnaXN0ZXJBcnJheSk7CiAgICAgICAgIGQoKS0+
cmVnaXN0ZXJBcnJheVNpemUgPSBjb3VudDsKQEAgLTM0MiwxMCArMzQyLDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHsKICAgICAgICAgc2l6ZV90IG9sZFNpemUgPSBkKCktPnJlZ2lzdGVyQXJy
YXlTaXplOwogICAgICAgICBzaXplX3QgbmV3U2l6ZSA9IG9sZFNpemUgKyBjb3VudDsKLSAgICAg
ICAgUmVnaXN0ZXIqIHJlZ2lzdGVyQXJyYXkgPSBuZXcgUmVnaXN0ZXJbbmV3U2l6ZV07CisgICAg
ICAgIE93bkFycmF5UHRyPFJlZ2lzdGVyPiByZWdpc3RlckFycmF5ID0gYWRvcHRBcnJheVB0cihu
ZXcgUmVnaXN0ZXJbbmV3U2l6ZV0pOwogICAgICAgICBpZiAoZCgpLT5yZWdpc3RlckFycmF5KQot
ICAgICAgICAgICAgbWVtY3B5KHJlZ2lzdGVyQXJyYXkgKyBjb3VudCwgZCgpLT5yZWdpc3RlckFy
cmF5LmdldCgpLCBvbGRTaXplICogc2l6ZW9mKFJlZ2lzdGVyKSk7Ci0gICAgICAgIHNldFJlZ2lz
dGVycyhyZWdpc3RlckFycmF5ICsgbmV3U2l6ZSwgcmVnaXN0ZXJBcnJheSwgbmV3U2l6ZSk7Cisg
ICAgICAgICAgICBtZW1jcHkocmVnaXN0ZXJBcnJheS5nZXQoKSArIGNvdW50LCBkKCktPnJlZ2lz
dGVyQXJyYXkuZ2V0KCksIG9sZFNpemUgKiBzaXplb2YoUmVnaXN0ZXIpKTsKKyAgICAgICAgUmVn
aXN0ZXIqIG5ld1JlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyBuZXdTaXplOworICAg
ICAgICBzZXRSZWdpc3RlcnMobmV3UmVnaXN0ZXJzLCByZWdpc3RlckFycmF5LnJlbGVhc2UoKSwg
bmV3U2l6ZSk7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDAsIGluZGV4ID0gLXN0YXRpY19jYXN0
PGludD4ob2xkU2l6ZSkgLSAxOyBpIDwgY291bnQ7ICsraSwgLS1pbmRleCkgewogICAgICAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvJiBnbG9iYWwgPSBnbG9iYWxzW2ldOwpJbmRleDogSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwCShyZXZp
c2lvbiA2ODI4MikKKysrIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDcgQEAgaW5saW5lIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I6OkpTUHJvcGVydAogICAgICwgbV9jYWNoZWRTdHJ1Y3R1cmUoMCkKICAg
ICAsIG1fbnVtQ2FjaGVhYmxlU2xvdHMobnVtQ2FjaGVhYmxlU2xvdHMpCiAgICAgLCBtX2pzU3Ry
aW5nc1NpemUocHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0b3IoKS5zaXpl
KCkpCi0gICAgLCBtX2pzU3RyaW5ncyhuZXcgSlNWYWx1ZVttX2pzU3RyaW5nc1NpemVdKQorICAg
ICwgbV9qc1N0cmluZ3MoYWRvcHRBcnJheVB0cihuZXcgSlNWYWx1ZVttX2pzU3RyaW5nc1NpemVd
KSkKIHsKICAgICBQcm9wZXJ0eU5hbWVBcnJheURhdGE6OlByb3BlcnR5TmFtZVZlY3RvciYgcHJv
cGVydHlOYW1lVmVjdG9yID0gcHJvcGVydHlOYW1lQXJyYXlEYXRhLT5wcm9wZXJ0eU5hbWVWZWN0
b3IoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fanNTdHJpbmdzU2l6ZTsgKytpKQpJ
bmRleDogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9u
IDY4MjgyKQorKysgSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDggQEAKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiU3ltYm9sVGFibGUuaCIKLSNpbmNsdWRlICJV
bnVzZWRQYXJhbS5oIgorCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25BcnJheVB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogCkBA
IC04OSw4ICs5MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgIH0KIAot
ICAgICAgICBSZWdpc3RlciogY29weVJlZ2lzdGVyQXJyYXkoUmVnaXN0ZXIqIHNyYywgc2l6ZV90
IGNvdW50KTsKLSAgICAgICAgdm9pZCBzZXRSZWdpc3RlcnMoUmVnaXN0ZXIqIHIsIFJlZ2lzdGVy
KiByZWdpc3RlckFycmF5KTsKKyAgICAgICAgUGFzc093bkFycmF5UHRyPFJlZ2lzdGVyPiBjb3B5
UmVnaXN0ZXJBcnJheShjb25zdCBSZWdpc3RlciosIHNpemVfdCBjb3VudCk7CisgICAgICAgIHZv
aWQgc2V0UmVnaXN0ZXJzKFJlZ2lzdGVyKiwgUGFzc093bkFycmF5UHRyPFJlZ2lzdGVyPik7CiAK
ICAgICAgICAgYm9vbCBzeW1ib2xUYWJsZUdldChjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlT
bG90Jik7CiAgICAgICAgIGJvb2wgc3ltYm9sVGFibGVHZXQoY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwpAQCAtMTQ5LDE4ICsxNTAsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlubGluZSBSZWdpc3RlciogSlNW
YXJpYWJsZU9iamVjdDo6Y29weVJlZ2lzdGVyQXJyYXkoUmVnaXN0ZXIqIHNyYywgc2l6ZV90IGNv
dW50KQorICAgIGlubGluZSBQYXNzT3duQXJyYXlQdHI8UmVnaXN0ZXI+IEpTVmFyaWFibGVPYmpl
Y3Q6OmNvcHlSZWdpc3RlckFycmF5KGNvbnN0IFJlZ2lzdGVyKiByZWdpc3RlcnMsIHNpemVfdCBj
b3VudCkKICAgICB7Ci0gICAgICAgIFJlZ2lzdGVyKiByZWdpc3RlckFycmF5ID0gbmV3IFJlZ2lz
dGVyW2NvdW50XTsKLSAgICAgICAgbWVtY3B5KHJlZ2lzdGVyQXJyYXksIHNyYywgY291bnQgKiBz
aXplb2YoUmVnaXN0ZXIpKTsKLQotICAgICAgICByZXR1cm4gcmVnaXN0ZXJBcnJheTsKKyAgICAg
ICAgT3duQXJyYXlQdHI8UmVnaXN0ZXI+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5l
dyBSZWdpc3Rlcltjb3VudF0pOworICAgICAgICBtZW1jcHkocmVnaXN0ZXJBcnJheS5nZXQoKSwg
cmVnaXN0ZXJzLCBjb3VudCAqIHNpemVvZihSZWdpc3RlcikpOworICAgICAgICByZXR1cm4gcmVn
aXN0ZXJBcnJheS5yZWxlYXNlKCk7CiAgICAgfQogCi0gICAgaW5saW5lIHZvaWQgSlNWYXJpYWJs
ZU9iamVjdDo6c2V0UmVnaXN0ZXJzKFJlZ2lzdGVyKiByZWdpc3RlcnMsIFJlZ2lzdGVyKiByZWdp
c3RlckFycmF5KQorICAgIGlubGluZSB2b2lkIEpTVmFyaWFibGVPYmplY3Q6OnNldFJlZ2lzdGVy
cyhSZWdpc3RlciogcmVnaXN0ZXJzLCBQYXNzT3duQXJyYXlQdHI8UmVnaXN0ZXI+IHJlZ2lzdGVy
QXJyYXkpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnaXN0ZXJBcnJheSAhPSBkLT5yZWdpc3Rl
ckFycmF5LmdldCgpKTsKLSAgICAgICAgZC0+cmVnaXN0ZXJBcnJheS5zZXQocmVnaXN0ZXJBcnJh
eSk7CisgICAgICAgIGQtPnJlZ2lzdGVyQXJyYXkgPSByZWdpc3RlckFycmF5OwogICAgICAgICBk
LT5yZWdpc3RlcnMgPSByZWdpc3RlcnM7CiAgICAgfQogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
KyNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM4LDcgKzM5LDcgQEAgU3RydWN0dXJlQ2hhaW46OlN0
cnVjdHVyZUNoYWluKFN0cnVjdHVyZQogICAgIGZvciAoU3RydWN0dXJlKiBjdXJyZW50ID0gaGVh
ZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpLmlzTnVsbCgp
ID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQtPnN0b3JlZFByb3RvdHlwZSgpKS0+c3RydWN0dXJlKCkp
CiAgICAgICAgICsrc2l6ZTsKICAgICAKLSAgICBtX3ZlY3Rvci5zZXQobmV3IFJlZlB0cjxTdHJ1
Y3R1cmU+W3NpemUgKyAxXSk7CisgICAgbV92ZWN0b3IgPSBhZG9wdEFycmF5UHRyKG5ldyBSZWZQ
dHI8U3RydWN0dXJlPltzaXplICsgMV0pOwogCiAgICAgc2l6ZV90IGkgPSAwOwogICAgIGZvciAo
U3RydWN0dXJlKiBjdXJyZW50ID0gaGVhZDsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPnN0
b3JlZFByb3RvdHlwZSgpLmlzTnVsbCgpID8gMCA6IGFzT2JqZWN0KGN1cnJlbnQtPnN0b3JlZFBy
b3RvdHlwZSgpKS0+c3RydWN0dXJlKCkpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhh
c2hTZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hTZXQuaAko
cmV2aXNpb24gNjgyODIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvTGlzdEhhc2hTZXQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzYwLDcgKzM2MCw3IEBAIG5hbWVzcGFjZSBXVEYgewogICAgIGlubGlu
ZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46Okxpc3RIYXNoU2V0KCkKICAgICAg
ICAgOiBtX2hlYWQoMCkKICAgICAgICAgLCBtX3RhaWwoMCkKLSAgICAgICAgLCBtX2FsbG9jYXRv
cihuZXcgTm9kZUFsbG9jYXRvcikKKyAgICAgICAgLCBtX2FsbG9jYXRvcihhZG9wdFB0cihuZXcg
Tm9kZUFsbG9jYXRvcikpCiAgICAgewogICAgIH0KIApAQCAtMzY4LDcgKzM2OCw3IEBAIG5hbWVz
cGFjZSBXVEYgewogICAgIGlubGluZSBMaXN0SGFzaFNldDxULCBpbmxpbmVDYXBhY2l0eSwgVT46
Okxpc3RIYXNoU2V0KGNvbnN0IExpc3RIYXNoU2V0JiBvdGhlcikKICAgICAgICAgOiBtX2hlYWQo
MCkKICAgICAgICAgLCBtX3RhaWwoMCkKLSAgICAgICAgLCBtX2FsbG9jYXRvcihuZXcgTm9kZUFs
bG9jYXRvcikKKyAgICAgICAgLCBtX2FsbG9jYXRvcihhZG9wdFB0cihuZXcgTm9kZUFsbG9jYXRv
cikpCiAgICAgewogICAgICAgICBjb25zdF9pdGVyYXRvciBlbmQgPSBvdGhlci5lbmQoKTsKICAg
ICAgICAgZm9yIChjb25zdF9pdGVyYXRvciBpdCA9IG90aGVyLmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9Pd25BcnJheVB0ci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9Pd25BcnJheVB0ci5oCShyZXZpc2lvbiA2ODI4MikKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9Pd25BcnJheVB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3
ICsyNyw3IEBACiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAvLyBSZW1vdmUgdGhpcyBvbmNlIHdl
IG1ha2UgYWxsIFdlYktpdCBjb2RlIGNvbXBhdGlibGUgd2l0aCBzdHJpY3RlciBydWxlcyBhYm91
dCBPd25BcnJheVB0ci4KLSNkZWZpbmUgTE9PU0VfT1dOX0FSUkFZX1BUUgorLy8jZGVmaW5lIExP
T1NFX09XTl9BUlJBWV9QVFIKIAogbmFtZXNwYWNlIFdURiB7CiAKSW5kZXg6IEphdmFTY3JpcHRD
b3JlL3d0Zi9Pd25QdHIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvT3duUHRy
LmgJKHJldmlzaW9uIDY4MjgyKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL093blB0ci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw3ICsyOSw3IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogCiAvLyBSZW1v
dmUgdGhpcyBvbmNlIHdlIG1ha2UgYWxsIFdlYktpdCBjb2RlIGNvbXBhdGlibGUgd2l0aCBzdHJp
Y3RlciBydWxlcyBhYm91dCBPd25QdHIuCi0jZGVmaW5lIExPT1NFX09XTl9QVFIKKy8vI2RlZmlu
ZSBMT09TRV9PV05fUFRSCiAKIG5hbWVzcGFjZSBXVEYgewogCkluZGV4OiBKYXZhU2NyaXB0Q29y
ZS93dGYvUGFzc093bkFycmF5UHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L1Bhc3NPd25BcnJheVB0ci5oCShyZXZpc2lvbiA2ODI4MikKKysrIEphdmFTY3JpcHRDb3JlL3d0
Zi9QYXNzT3duQXJyYXlQdHIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lu
Y2x1ZGUgIlR5cGVUcmFpdHMuaCIKIAogLy8gUmVtb3ZlIHRoaXMgb25jZSB3ZSBtYWtlIGFsbCBX
ZWJLaXQgY29kZSBjb21wYXRpYmxlIHdpdGggc3RyaWN0ZXIgcnVsZXMgYWJvdXQgUGFzc093bkFy
cmF5UHRyLgotI2RlZmluZSBMT09TRV9QQVNTX09XTl9BUlJBWV9QVFIKKy8vI2RlZmluZSBMT09T
RV9QQVNTX09XTl9BUlJBWV9QVFIKIAogbmFtZXNwYWNlIFdURiB7CiAKSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL3d0Zi9QYXNzT3duUHRyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L1Bhc3NPd25QdHIuaAkocmV2aXNpb24gNjgyODIpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGFz
c093blB0ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjaW5jbHVkZSAiVHlw
ZVRyYWl0cy5oIgogCiAvLyBSZW1vdmUgdGhpcyBvbmNlIHdlIG1ha2UgYWxsIFdlYktpdCBjb2Rl
IGNvbXBhdGlibGUgd2l0aCBzdHJpY3RlciBydWxlcyBhYm91dCBQYXNzT3duUHRyLgotI2RlZmlu
ZSBMT09TRV9QQVNTX09XTl9QVFIKKy8vI2RlZmluZSBMT09TRV9QQVNTX09XTl9QVFIKIAogbmFt
ZXNwYWNlIFdURiB7CiAKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2ODMxOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjM5IEBACisyMDEwLTA5LTI0ICBEYXJpbiBBZGxlciAg
PGRhcmluQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgbW9yZSBhZG9wdFB0cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDY1NDcKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BT
ISkKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBiaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVET01DYWxsYmFjayk6CisgICAgICAgICog
YmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlbGV0ZUNh
bGxiYWNrRGF0YVRhc2s6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNzYWdl
RXZlbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlRXZlbnQ6OmluaXRN
ZXNzYWdlRXZlbnQpOgorICAgICAgICAqIGJyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbToKKyAg
ICAgICAgKEpTQzo6QmluZGluZ3M6OmNhbGxPYmpDRmFsbGJhY2tPYmplY3QpOgorICAgICAgICAq
IGNzcy9DU1NGb250RmFjZVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NGb250RmFj
ZVNvdXJjZTo6Z2V0Rm9udERhdGEpOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhZ2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VSdWxl
OjpDU1NQYWdlUnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhZ2VSdWxlLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYWdlUnVsZTo6Y3JlYXRlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Q1NTUGFyc2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1BhcnNlcjo6fkNTU1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OmFkZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpCb3JkZXJJbWFnZVBhcnNlQ29udGV4dDo6Y29tbWl0Qm9y
ZGVySW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpzaW5rRmxvYXRpbmdTZWxl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ1ZhbHVlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ0Z1bmN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpwYXJzZVByb3BlcnR5V2l0aFJlc29sdmVkVmFyaWFibGVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6YWRkVW5yZXNvbHZlZFByb3BlcnR5KToKKyAgICAgICAgKiBj
c3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJldXNhYmxlU2Vs
ZWN0b3JWZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2V0VGFnSGlzdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NTZWxlY3Rvcjo6c2V0U2ltcGxlU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rv
ci5oOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAgKiBjc3Mv
Q1NTU2VsZWN0b3JMaXN0Lmg6CisgICAgICAgICogY3NzL0NTU1N0eWxlUnVsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVSdWxlOjphZG9wdFNlbGVjdG9yVmVjdG9yKToKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpyZXNvbHZlVmFyaWFibGVzRm9yRGVjbGFyYXRpb24pOgorICAgICAgICAqIGNzcy9D
U1NWYWx1ZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVmFsdWVMaXN0OjpjcmVhdGVQ
YXJzZXJWYWx1ZUxpc3QpOgorICAgICAgICAqIGNzcy9NZWRpYUxpc3QuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFMaXN0OjpkZWxldGVNZWRpdW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFMaXN0OjpzZXRNZWRpYVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0OjphcHBl
bmRNZWRpdW0pOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUXVlcnk6Ok1lZGlhUXVlcnkpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5Lmg6
CisgICAgICAgICogY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlTVkdQcm9wZXJ0eSk6CisgICAgICAgICogZG9tL0Fz
eW5jU2NyaXB0UnVubmVyLmg6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1NjcmlwdFJ1bm5lcjo6
Y3JlYXRlKToKKyAgICAgICAgKiBkb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDaGVja2VkUmFkaW9CdXR0b25zOjphZGRCdXR0b24pOgorICAgICAgICAqIGRv
bS9Dcm9zc1RocmVhZFRhc2suaDoKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzVGhyZWFkVGFzazE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcm9zc1RocmVhZFRhc2syOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRUYXNrMzo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNyb3NzVGhyZWFkVGFzazQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDcm9z
c1RocmVhZFRhc2s1OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3Jvc3NUaHJlYWRUYXNr
Njo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNyb3NzVGhyZWFkVGFzazc6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpDcm9zc1RocmVhZFRhc2s4OjpjcmVhdGUpOgorICAgICAgICAq
IGRvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmg6CisgICAgICAgIChXZWJDb3JlOjpEYXRhc2V0RE9N
U3RyaW5nTWFwOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmNyZWF0ZVN0eWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmF0
dGFjaCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cGFnZUdyb3VwVXNlclNoZWV0cyk6
CisgICAgICAgICogZG9tL0tleWJvYXJkRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5
Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCk6CisgICAgICAgICogZG9tL01lc3NhZ2VFdmVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6OmluaXRNZXNzYWdlRXZlbnQpOgor
ICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdl
UG9ydDo6TWVzc2FnZVBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmRpc2Vu
dGFuZ2xlUG9ydHMpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9y
dHMpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OmNyZWF0ZSk6CisgICAgICAgICog
ZG9tL05vZGVSYXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZUxpc3RzTm9kZURhdGE6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmFyZURhdGE6OmVuc3VyZUV2ZW50VGFy
Z2V0RGF0YSk6CisgICAgICAgICogZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQZW5kaW5nQ2FsbGJhY2tzOjpjYWxsQW5kUmVtb3ZlRmlyc3RDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6WE1MRG9jdW1lbnRQ
YXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OmRvRW5kKToKKyAg
ICAgICAgKiBkb20vZGVmYXVsdC9QbGF0Zm9ybU1lc3NhZ2VQb3J0Q2hhbm5lbC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZSk6CisgICAgICAgICogaGlz
dG9yeS9tYWMvSGlzdG9yeUl0ZW1NYWMubW06CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5SXRl
bTo6c2V0VHJhbnNpZW50UHJvcGVydHkpOgorICAgICAgICAqIGh0bWwvSFRNTEFyZWFFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxBcmVhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOgorICAgICAgICAqIGh0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVTZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6Cisg
ICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAqIGh0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEF0dGFjaGVkU2hhZGVycyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnNpbXVsYXRlVmVydGV4QXR0cmliMCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVy
Q2FjaGUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OnB1bXBUb2tlbml6ZXIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydEdyb3VwKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmVuZEdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuZCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFRpbWVsaW5lUHJvZmlsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFRpbWVsaW5lUHJvZmlsZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UG9zdFdvcmtlck5vdGlmaWNhdGlvblRvRnJvbnRlbmRUYXNrOjpj
cmVhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlV2ViU29ja2V0UmVxdWVzdCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZTo6dXBkYXRlV2ViU29ja2V0UmVz
cG9uc2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHRGYWls
dXJlKToKKyAgICAgICAgKiBsb2FkZXIvaWNvbi9JY29uRGF0YWJhc2UuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6cmVhZHlTUUxpdGVTdGF0ZW1lbnQpOgorICAgICAgICAqIHBhZ2UvQ29udGV4dE1l
bnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51Q29udHJvbGxl
cjo6Q29udGV4dE1lbnVDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRleHRNZW51
Q29udHJvbGxlcjo6Y2xlYXJDb250ZXh0TWVudSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0
TWVudUNvbnRyb2xsZXI6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpzaG93Q29udGV4dE1lbnUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjcmVhdGVDb250ZXh0TWVudSk6CisgICAgICAg
ICogcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRv
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3N0TWVzc2FnZVRpbWVyOjpmaXJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnBvc3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVdpbmRvdzo6cG9zdE1lc3NhZ2VUaW1lckZpcmVkKToKKyAgICAgICAgKiBwYWdlL0RPTVdp
bmRvdy5oOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Jl
YXRlUmVnRXhwRm9yTGFiZWxzKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmFkZFdpZGdldFRvVXBkYXRlKToKKyAgICAgICAgKiBw
YWdlL0dlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9s
b2NhdGlvbik6CisgICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OlBhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW5pdEdyb3VwKToKKyAgICAgICAg
KiBwYWdlL1BhZ2VHcm91cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlR3JvdXA6OmFkZFVz
ZXJTY3JpcHRUb1dvcmxkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VHcm91cDo6YWRkVXNlclN0
eWxlU2hlZXRUb1dvcmxkKToKKyAgICAgICAgKiBwYWdlL1BsdWdpbkhhbHRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpQbHVnaW5IYWx0ZXI6OlBsdWdpbkhhbHRlcik6CisgICAgICAgICogcGFn
ZS9QbHVnaW5IYWx0ZXIuaDoKKyAgICAgICAgKiBwYWdlL1hTU0F1ZGl0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6WFNTQXVkaXRvcjo6ZmluZEluUmVxdWVzdCk6CisgICAgICAgICogcGFnZS9t
YWMvUGFnZU1hYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphZGRTY2hlZHVsZVBhaXIp
OgorICAgICAgICAqIHBsYXRmb3JtL0NvbnRleHRNZW51LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnNlcGFyYXRvckl0ZW0pOgorICAgICAgICAqIHBsYXRmb3JtL0xlbmd0aC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpuZXdDb29yZHNBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpuZXdMZW5ndGhB
cnJheSk6CisgICAgICAgICogcGxhdGZvcm0vTGVuZ3RoLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VCdWZmZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpj
cmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZU51bGxNZWRpYVBsYXllcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6bG9hZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQ
bGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9JbWFnZUJ1ZmZlckNHLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzQ29udGV4dDNETWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzTGF5ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xheWVyQ0E6
OmVuc3VyZUNsb25lTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJDQTo6
cmVtb3ZlQ2xvbmVMYXllcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRp
YVBsYXllclByaXZhdGVRVEtpdC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZTo6Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3Jh
cGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0M0Q6OnBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRl
ck1hcDo6Y29weURhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1RleHRDb2RlY0lDVSk6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0Q29kZWNMYXRpbjEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV3U3RyZWFt
aW5nVGV4dERlY29kZXJXaW5kb3dzTGF0aW4xKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY1VURjE2LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5ld1N0cmVhbWluZ1RleHREZWNv
ZGVyVVRGMTZMRSk6CisgICAgICAgIChXZWJDb3JlOjpuZXdTdHJlYW1pbmdUZXh0RGVjb2RlclVU
RjE2QkUpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6bmV3U3RyZWFtaW5nVGV4dERlY29kZXJVc2VyRGVmaW5lZCk6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Om5ld1RleHRDb2RlY01hYyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrOjpSZW5kZXJCbG9jayk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9jazo6ZmluaXNoRGVsYXlVcGRhdGVTY3JvbGxJbmZv
KToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVzb3VyY2VzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1Jlc291cmNlczo6U1ZHUmVzb3VyY2VzKToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZH
UmVzb3VyY2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZXNvdXJjZXM6OkNsaXBwZXJGaWx0
ZXJNYXNrZXJEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpN
YXJrZXJEYXRhOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVzb3VyY2VzOjpGaWxs
U3Ryb2tlRGF0YTo6Y3JlYXRlKToKKyAgICAgICAgKiByZW5kZXJpbmcvVHJhbnNmb3JtU3RhdGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJhbnNmb3JtU3RhdGU6OmFwcGx5VHJhbnNmb3JtKToK
KyAgICAgICAgKiB3b3JrZXJzL0RlZmF1bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNoYXJlZFdvcmtlckNvbm5lY3RUYXNrOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKToKKyAgICAgICAgKiB3
b3JrZXJzL1dvcmtlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXI6Om5vdGlmeUZpbmlz
aGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2xvc2VXb3JrZXJDb250ZXh0VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlck1lc3NhZ2luZ1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3Jr
ZXJDb250ZXh0VGFzazo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VXb3JrZXJU
YXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyRXhjZXB0aW9uVGFzazo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNvbnRleHREZXN0cm95ZWRUYXNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGVybWluYXRlVGFzazo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZEFjdGl2aXR5UmVwb3J0VGFzazo6Y3JlYXRlKToK
KyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJS
dW5Mb29wOjpUYXNrOjpjcmVhdGUpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdExvYWRlcjo6Y3JlYXRlUmVz
b3VyY2VSZXF1ZXN0KToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlclRocmVhZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRTdGFydHVwRGF0YTo6Y3JlYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzazo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrOjpjcmVhdGUpOgorCiAy
MDEwLTA5LTI0ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjgyODIpCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
Mjc3Nyw3ICsyNzc3LDYgQEAKIAkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNl
TG9hZE5vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5j
cHAgKi87IH07CiAJCTk3M0UzMjU3MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3Rp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcz
RTMyNTUxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTc2RDZDNzcxMjJCOEEz
RDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNTgxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmls
ZVdyaXRlci5oICovOyB9OwotCQk5NzZENkM5MzEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxl
V3JpdGVyQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzZENkM3NDEyMkI4QTNEMDAxRkQxRjcgLyogQXN5bmNGaWxlV3JpdGVyQ2xpZW50Lmgg
Ki87IH07CiAJCTk3NkQ2Qzc4MTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2QzU5MTIyQjhBM0QwMDFG
RDFGNyAvKiBCbG9iLmNwcCAqLzsgfTsKIAkJOTc2RDZDNzkxMjJCOEEzRDAwMUZEMUY3IC8qIEJs
b2IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NkQ2
QzVBMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmggKi87IH07CiAJCTk3NkQ2QzdCMTIyQjhBM0Qw
MDFGRDFGNyAvKiBCbG9iQnVpbGRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM1QzEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYkJ1aWxkZXIu
Y3BwICovOyB9OwpAQCAtMjc5OCw2ICsyNzk3LDcgQEAKIAkJOTc2RDZDOEYxMjJCOEEzRDAwMUZE
MUY3IC8qIEZpbGVUaHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzZENkM3MDEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVRocmVhZFRhc2su
aCAqLzsgfTsKIAkJOTc2RDZDOTAxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVXcml0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZDNzExMjJC
OEEzRDAwMUZEMUY3IC8qIEZpbGVXcml0ZXIuY3BwICovOyB9OwogCQk5NzZENkM5MTEyMkI4QTNE
MDAxRkQxRjcgLyogRmlsZVdyaXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTc2RDZDNzIxMjJCOEEzRDAwMUZEMUY3IC8qIEZpbGVXcml0ZXIuaCAq
LzsgfTsKKwkJOTc2RDZDOTMxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlckNsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc2RDZD
NzQxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlckNsaWVudC5oICovOyB9OwogCQk5
NzZENkM5NDEyMkI4QTNEMDAxRkQxRjcgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM3NTEyMkI4
QTNEMDAxRkQxRjcgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgKi87IH07CiAJCTk3NkQ2
Qzk1MTIyQjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzZENkM3NjEyMkI4QTNEMDAx
RkQxRjcgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oICovOyB9OwogCQk5NzdCMzcyMzEyMjg3
MjE3MDBCODFGRjggLyogSFRNTEVsZW1lbnRTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzdCMzcxRjEyMjg3MjE3MDBCODFGRjggLyogSFRN
TEVsZW1lbnRTdGFjay5jcHAgKi87IH07CkBAIC04Njc3LDcgKzg2NzcsNiBAQAogCQk5NzNFMzI1
NDEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3VyY2VMb2FkTm90aWZpZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzNFMzI1NTEwODgzQjdDMDA1QkM0OTMgLyogUmVz
b3VyY2VMb2FkTm90aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVz
b3VyY2VMb2FkTm90aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZD
NTgxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBBc3luY0ZpbGVXcml0ZXIuaDsgcGF0aCA9IGZpbGVhcGkvQXN5bmNG
aWxlV3JpdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3NkQ2Qzc0MTIyQjhB
M0QwMDFGRDFGNyAvKiBBc3luY0ZpbGVXcml0ZXJDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gQXN5bmNGaWxlV3JpdGVyQ2xpZW50Lmg7IHBhdGggPSBmaWxlYXBpL0Fz
eW5jRmlsZVdyaXRlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZE
NkM1OTEyMkI4QTNEMDAxRkQxRjcgLyogQmxvYi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBCbG9iLmNwcDsgcGF0aCA9IGZpbGVhcGkvQmxvYi5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3NkQ2QzVBMTIyQjhBM0QwMDFGRDFGNyAvKiBCbG9iLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEJsb2IuaDsgcGF0aCA9IGZpbGVhcGkv
QmxvYi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZENkM1QzEyMkI4QTNEMDAx
RkQxRjcgLyogQmxvYkJ1aWxkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQmxvYkJ1aWxkZXIuY3BwOyBwYXRoID0gZmlsZWFwaS9CbG9iQnVpbGRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04Njk4LDYgKzg2OTcsNyBAQAogCQk5NzZENkM3
MDEyMkI4QTNEMDAxRkQxRjcgLyogRmlsZVRocmVhZFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gRmlsZVRocmVhZFRhc2suaDsgcGF0aCA9IGZpbGVhcGkvRmlsZVRocmVh
ZFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNzExMjJCOEEzRDAw
MUZEMUY3IC8qIEZpbGVXcml0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gRmlsZVdyaXRlci5jcHA7IHBhdGggPSBmaWxlYXBpL0ZpbGVXcml0ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzZENkM3MjEyMkI4QTNEMDAxRkQxRjcgLyogRmls
ZVdyaXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBGaWxlV3JpdGVyLmg7
IHBhdGggPSBmaWxlYXBpL0ZpbGVXcml0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJOTc2RDZDNzQxMjJCOEEzRDAwMUZEMUY3IC8qIEFzeW5jRmlsZVdyaXRlckNsaWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBBc3luY0ZpbGVXcml0ZXJDbGllbnQuaDsg
cGF0aCA9IGZpbGVhcGkvQXN5bmNGaWxlV3JpdGVyQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk3NkQ2Qzc1MTIyQjhBM0QwMDFGRDFGNyAvKiBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRocmVhZGFi
bGVCbG9iUmVnaXN0cnkuY3BwOyBwYXRoID0gZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc2RDZDNzYxMjJCOEEzRDAwMUZE
MUY3IC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOyBwYXRoID0gZmlsZWFwaS9UaHJlYWRh
YmxlQmxvYlJlZ2lzdHJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3N0IzNzFG
MTIyODcyMTcwMEI4MUZGOCAvKiBIVE1MRWxlbWVudFN0YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEhUTUxFbGVtZW50U3RhY2suY3BwOyBwYXRoID0gcGFyc2Vy
L0hUTUxFbGVtZW50U3RhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpJbmRleDog
V2ViQ29yZS9iaW5kaW5ncy9nZW5lcmljL0FjdGl2ZURPTUNhbGxiYWNrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2dlbmVyaWMvQWN0aXZlRE9NQ2FsbGJhY2suY3BwCShyZXZp
c2lvbiA2ODI4MikKKysrIFdlYkNvcmUvYmluZGluZ3MvZ2VuZXJpYy9BY3RpdmVET01DYWxsYmFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgdm9pZCBkZXN0
cm95T25Db250ZXh0VGhyZWFkKFBhc3NPCiB9CiAKIEFjdGl2ZURPTUNhbGxiYWNrOjpBY3RpdmVE
T01DYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQotICAgIDogbV9pbXBs
KG5ldyBBY3RpdmVET01PYmplY3RDYWxsYmFja0ltcGwoY29udGV4dCkpCisgICAgOiBtX2ltcGwo
YWRvcHRQdHIobmV3IEFjdGl2ZURPTU9iamVjdENhbGxiYWNrSW1wbChjb250ZXh0KSkpCiB7CiB9
CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmgJKHJldmlzaW9uIDY4Mjgy
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC03Nyw3ICs3Nyw3IEBAIGNsYXNzIERlbGV0ZUNhbGxiYWNrRGF0YVRhc2sgOiBwdWJsaWMg
U2MKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxEZWxldGVDYWxsYmFja0RhdGFUYXNr
PiBjcmVhdGUoSlNDYWxsYmFja0RhdGEqIGRhdGEpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3
IERlbGV0ZUNhbGxiYWNrRGF0YVRhc2soZGF0YSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgRGVsZXRlQ2FsbGJhY2tEYXRhVGFzayhkYXRhKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDY4MjgyKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU01lc3NhZ2VFdmVudEN1c3RvbS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY1LDcgKzY1LDcgQEAgSlNDOjpKU1ZhbHVlIEpTTWVzc2FnZUV2ZW50Ojppbml0
TWVzc2FnZQogICAgIERPTVdpbmRvdyogc291cmNlQXJnID0gdG9ET01XaW5kb3coZXhlYy0+YXJn
dW1lbnQoNikpOwogICAgIE93blB0cjxNZXNzYWdlUG9ydEFycmF5PiBtZXNzYWdlUG9ydHM7CiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudCg3KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Ci0gICAgICAg
IG1lc3NhZ2VQb3J0cyA9IG5ldyBNZXNzYWdlUG9ydEFycmF5KCk7CisgICAgICAgIG1lc3NhZ2VQ
b3J0cyA9IGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydEFycmF5KTsKICAgICAgICAgZmlsbE1lc3Nh
Z2VQb3J0QXJyYXkoZXhlYywgZXhlYy0+YXJndW1lbnQoNyksICptZXNzYWdlUG9ydHMpOwogICAg
ICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKSW5kZXg6IFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCShyZXZpc2lvbiA2
ODI4MikKKysrIFdlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY2FsbAogICAgIAogICAgIGlmIChbdGFyZ2V0T2JqZWN0IHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoaW52b2tlVW5kZWZpbmVkTWV0aG9kRnJvbVdlYlNjcmlwdDp3aXRoQXJndW1lbnRz
OildKXsKICAgICAgICAgT2JqY0NsYXNzKiBvYmpjQ2xhc3MgPSBzdGF0aWNfY2FzdDxPYmpjQ2xh
c3MqPihvYmpjSW5zdGFuY2UtPmdldENsYXNzKCkpOwotICAgICAgICBPd25QdHI8T2JqY01ldGhv
ZD4gZmFsbGJhY2tNZXRob2QobmV3IE9iamNNZXRob2Qob2JqY0NsYXNzLT5pc2EoKSwgQHNlbGVj
dG9yKGludm9rZVVuZGVmaW5lZE1ldGhvZEZyb21XZWJTY3JpcHQ6d2l0aEFyZ3VtZW50czopKSk7
CisgICAgICAgIE93blB0cjxPYmpjTWV0aG9kPiBmYWxsYmFja01ldGhvZCA9IGFkb3B0UHRyKG5l
dyBPYmpjTWV0aG9kKG9iamNDbGFzcy0+aXNhKCksIEBzZWxlY3RvcihpbnZva2VVbmRlZmluZWRN
ZXRob2RGcm9tV2ViU2NyaXB0OndpdGhBcmd1bWVudHM6KSkpOwogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBuYW1lSWRlbnRpZmllciA9IHN0YXRpY19jYXN0PE9iamNGYWxsYmFja09iamVjdElt
cCo+KGV4ZWMtPmNhbGxlZSgpKS0+cHJvcGVydHlOYW1lKCk7CiAgICAgICAgIFJldGFpblB0cjxD
RlN0cmluZ1JlZj4gbmFtZShBZG9wdENGLCBDRlN0cmluZ0NyZWF0ZVdpdGhDaGFyYWN0ZXJzKDAs
IG5hbWVJZGVudGlmaWVyLmNoYXJhY3RlcnMoKSwgbmFtZUlkZW50aWZpZXIubGVuZ3RoKCkpKTsK
ICAgICAgICAgZmFsbGJhY2tNZXRob2QtPnNldEphdmFTY3JpcHROYW1lKG5hbWUuZ2V0KCkpOwpJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL0NTU0ZvbnRGYWNlU291cmNlLmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJD
b3JlL2Nzcy9DU1NGb250RmFjZVNvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1Myw3ICsx
NTMsNyBAQCBTaW1wbGVGb250RGF0YSogQ1NTRm9udEZhY2VTb3VyY2U6OmdldEZvCiAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3N2Z0ZvbnRGYWNlRWxlbWVudCA9IGZvbnRGYWNlRWxlbWVudDsK
ICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGZvbnREYXRhLnNl
dChuZXcgU2ltcGxlRm9udERhdGEoYWRvcHRQdHIobmV3IFNWR0ZvbnREYXRhKGZvbnRGYWNlRWxl
bWVudCkpLCBmb250RGVzY3JpcHRpb24uY29tcHV0ZWRQaXhlbFNpemUoKSwgc3ludGhldGljQm9s
ZCwgc3ludGhldGljSXRhbGljKSk7CisgICAgICAgICAgICAgICAgICAgIGZvbnREYXRhID0gYWRv
cHRQdHIobmV3IFNpbXBsZUZvbnREYXRhKGFkb3B0UHRyKG5ldyBTVkdGb250RGF0YShmb250RmFj
ZUVsZW1lbnQpKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXRp
Y0JvbGQsIHN5bnRoZXRpY0l0YWxpYykpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0gZWxzZQogI2VuZGlmCkBAIC0xNjIsMTMgKzE2MiwxMyBAQCBTaW1wbGVGb250RGF0YSogQ1NT
Rm9udEZhY2VTb3VyY2U6OmdldEZvCiAgICAgICAgICAgICAgICAgaWYgKCFtX2ZvbnQtPmVuc3Vy
ZUN1c3RvbUZvbnREYXRhKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogCi0gICAg
ICAgICAgICAgICAgZm9udERhdGEuc2V0KG5ldyBTaW1wbGVGb250RGF0YShtX2ZvbnQtPnBsYXRm
b3JtRGF0YUZyb21DdXN0b21EYXRhKGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgp
LCBzeW50aGV0aWNCb2xkLCBzeW50aGV0aWNJdGFsaWMsIGZvbnREZXNjcmlwdGlvbi5yZW5kZXJp
bmdNb2RlKCkpLCB0cnVlLCBmYWxzZSkpOworICAgICAgICAgICAgICAgIGZvbnREYXRhID0gYWRv
cHRQdHIobmV3IFNpbXBsZUZvbnREYXRhKG1fZm9udC0+cGxhdGZvcm1EYXRhRnJvbUN1c3RvbURh
dGEoZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRoZXRpY0JvbGQsIHN5
bnRoZXRpY0l0YWxpYywgZm9udERlc2NyaXB0aW9uLnJlbmRlcmluZ01vZGUoKSksIHRydWUsIGZh
bHNlKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAjaWYgRU5BQkxFKFNWR19G
T05UUykKICAgICAgICAgICAgIC8vIEluLURvY3VtZW50IFNWRyBGb250cwogICAgICAgICAgICAg
aWYgKG1fc3ZnRm9udEZhY2VFbGVtZW50KQotICAgICAgICAgICAgICAgIGZvbnREYXRhLnNldChu
ZXcgU2ltcGxlRm9udERhdGEoYWRvcHRQdHIobmV3IFNWR0ZvbnREYXRhKG1fc3ZnRm9udEZhY2VF
bGVtZW50KSksIGZvbnREZXNjcmlwdGlvbi5jb21wdXRlZFBpeGVsU2l6ZSgpLCBzeW50aGV0aWNC
b2xkLCBzeW50aGV0aWNJdGFsaWMpKTsKKyAgICAgICAgICAgICAgICBmb250RGF0YSA9IGFkb3B0
UHRyKG5ldyBTaW1wbGVGb250RGF0YShhZG9wdFB0cihuZXcgU1ZHRm9udERhdGEobV9zdmdGb250
RmFjZUVsZW1lbnQpKSwgZm9udERlc2NyaXB0aW9uLmNvbXB1dGVkUGl4ZWxTaXplKCksIHN5bnRo
ZXRpY0JvbGQsIHN5bnRoZXRpY0l0YWxpYykpOwogI2VuZGlmCiAgICAgICAgIH0KICAgICB9IGVs
c2UgewpAQCAtMTgwLDcgKzE4MCw3IEBAIFNpbXBsZUZvbnREYXRhKiBDU1NGb250RmFjZVNvdXJj
ZTo6Z2V0Rm8KICAgICAgICAgaWYgKCF0ZW1wRGF0YSkKICAgICAgICAgICAgIHRlbXBEYXRhID0g
Zm9udENhY2hlKCktPmdldExhc3RSZXNvcnRGYWxsYmFja0ZvbnQoZm9udERlc2NyaXB0aW9uKTsK
IAotICAgICAgICBmb250RGF0YS5zZXQobmV3IFNpbXBsZUZvbnREYXRhKHRlbXBEYXRhLT5wbGF0
Zm9ybURhdGEoKSwgdHJ1ZSwgdHJ1ZSkpOworICAgICAgICBmb250RGF0YSA9IGFkb3B0UHRyKG5l
dyBTaW1wbGVGb250RGF0YSh0ZW1wRGF0YS0+cGxhdGZvcm1EYXRhKCksIHRydWUsIHRydWUpKTsK
ICAgICB9CiAKICAgICBTaW1wbGVGb250RGF0YSogZm9udERhdGFSYXdQdHIgPSBmb250RGF0YS5s
ZWFrUHRyKCk7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueQkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNyBAQCB1c2luZyBuYW1l
c3BhY2UgSFRNTE5hbWVzOwogICAgIENTU1J1bGUqIHJ1bGU7CiAgICAgQ1NTUnVsZUxpc3QqIHJ1
bGVMaXN0OwogICAgIENTU1NlbGVjdG9yKiBzZWxlY3RvcjsKLSAgICBWZWN0b3I8Q1NTU2VsZWN0
b3IqPiogc2VsZWN0b3JMaXN0OworICAgIFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+ID4qIHNl
bGVjdG9yTGlzdDsKICAgICBDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSBtYXJnaW5Cb3g7CiAg
ICAgQ1NTU2VsZWN0b3I6OlJlbGF0aW9uIHJlbGF0aW9uOwogICAgIE1lZGlhTGlzdCogbWVkaWFM
aXN0OwpAQCAtMzMzLDggKzMzMyw3IEBAIHdlYmtpdF92YWx1ZToKICAgICAgICAgICAgIGludCBv
bGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzOwogICAgICAgICAg
ICAgaWYgKCFwLT5wYXJzZVZhbHVlKHAtPm1faWQsIHAtPm1faW1wb3J0YW50KSkKICAgICAgICAg
ICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1fbnVtUGFyc2VkUHJvcGVydGll
cyAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwotICAgICAgICAgICAgZGVsZXRlIHAtPm1fdmFsdWVM
aXN0OwotICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSAwOworICAgICAgICAgICAgcC0+bV92
YWx1ZUxpc3QuY2xlYXIoKTsKICAgICAgICAgfQogICAgIH0KIDsKQEAgLTkyMiw3ICs5MjEsNiBA
QCBzZWxlY3Rvcl9saXN0OgogICAgICAgICBpZiAoJDEpIHsKICAgICAgICAgICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICAkJCA9
IHAtPnJldXNhYmxlU2VsZWN0b3JWZWN0b3IoKTsKLSAgICAgICAgICAgIGRlbGV0ZUFsbFZhbHVl
cygqJCQpOwogICAgICAgICAgICAgJCQtPnNocmluaygwKTsKICAgICAgICAgICAgICQkLT5hcHBl
bmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoJDEpKTsKICAgICAgICAgICAgIHAtPnVwZGF0ZUxh
c3RTZWxlY3RvckxpbmVBbmRQb3NpdGlvbigpOwpAQCAtMTQxMCwyMiArMTQwOCwyMCBAQCBkZWNs
YXJhdGlvbjoKICAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1f
bnVtUGFyc2VkUHJvcGVydGllcyAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICAgICAgaXNQcm9wZXJ0eVBhcnNlZCA9IHRydWU7Ci0gICAgICAg
ICAgICBkZWxldGUgcC0+bV92YWx1ZUxpc3Q7Ci0gICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9
IDA7CisgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdC5jbGVhcigpOwogICAgICAgICB9CiAgICAg
ICAgIHAtPm1hcmtQcm9wZXJ0eUVuZCgkNSwgaXNQcm9wZXJ0eVBhcnNlZCk7CiAgICAgfQogICAg
IHwKICAgICB2YXJpYWJsZV9yZWZlcmVuY2UgbWF5YmVfc3BhY2UgewogICAgICAgICBDU1NQYXJz
ZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICBwLT5tX3Zh
bHVlTGlzdCA9IG5ldyBDU1NQYXJzZXJWYWx1ZUxpc3Q7CisgICAgICAgIHAtPm1fdmFsdWVMaXN0
ID0gYWRvcHRQdHIobmV3IENTU1BhcnNlclZhbHVlTGlzdCk7CiAgICAgICAgIHAtPm1fdmFsdWVM
aXN0LT5hZGRWYWx1ZShwLT5zaW5rRmxvYXRpbmdWYWx1ZSgkMSkpOwogICAgICAgICBpbnQgb2xk
UGFyc2VkUHJvcGVydGllcyA9IHAtPm1fbnVtUGFyc2VkUHJvcGVydGllczsKICAgICAgICAgJCQg
PSBwLT5wYXJzZVZhbHVlKENTU1Byb3BlcnR5V2Via2l0VmFyaWFibGVEZWNsYXJhdGlvbkJsb2Nr
LCBmYWxzZSk7CiAgICAgICAgIGlmICghJCQpCiAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQ
cm9wZXJ0aWVzKHAtPm1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG9sZFBhcnNlZFByb3BlcnRpZXMp
OwotICAgICAgICBkZWxldGUgcC0+bV92YWx1ZUxpc3Q7Ci0gICAgICAgIHAtPm1fdmFsdWVMaXN0
ID0gMDsKKyAgICAgICAgcC0+bV92YWx1ZUxpc3QuY2xlYXIoKTsKICAgICB9CiAgICAgfAogICAg
IHByb3BlcnR5IGVycm9yIHsKQEAgLTE2MDgsNyArMTYwNCw2IEBAIGZ1bmN0aW9uOgogICAgICAg
ICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAg
ICBDU1NQYXJzZXJGdW5jdGlvbiogZiA9IHAtPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKICAg
ICAgICAgZi0+bmFtZSA9ICQxOwotICAgICAgICBmLT5hcmdzID0gMDsKICAgICAgICAgJCQuaWQg
PSAwOwogICAgICAgICAkJC51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwogICAgICAg
ICAkJC5mdW5jdGlvbiA9IGY7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCShyZXZpc2lvbiA2ODI4MikK
KysrIFdlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTAg
KzI3LDEwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ1NTUGFnZVJ1bGU6OkNTU1BhZ2VS
dWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBpbnQgc291
cmNlTGluZSkKK0NTU1BhZ2VSdWxlOjpDU1NQYWdlUnVsZShDU1NTdHlsZVNoZWV0KiBwYXJlbnQs
IFBhc3NPd25QdHI8Q1NTU2VsZWN0b3I+IHNlbGVjdG9yLCBpbnQgc291cmNlTGluZSkKICAgICA6
IENTU1N0eWxlUnVsZShwYXJlbnQsIHNvdXJjZUxpbmUpCiB7Ci0gICAgVmVjdG9yPENTU1NlbGVj
dG9yKj4gc2VsZWN0b3JzOworICAgIFZlY3RvcjxPd25QdHI8Q1NTU2VsZWN0b3I+ID4gc2VsZWN0
b3JzOwogICAgIHNlbGVjdG9ycy5hcHBlbmQoc2VsZWN0b3IpOwogICAgIGFkb3B0U2VsZWN0b3JW
ZWN0b3Ioc2VsZWN0b3JzKTsKIH0KSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuaAkocmV2aXNpb24gNjgyODIpCisr
KyBXZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3
IEBAIGNsYXNzIENTU1NlbGVjdG9yTGlzdDsKIAogY2xhc3MgQ1NTUGFnZVJ1bGUgOiBwdWJsaWMg
Q1NTU3R5bGVSdWxlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQYWdlUnVs
ZT4gY3JlYXRlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBp
bnQgc291cmNlTGluZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NQYWdlUnVsZT4gY3JlYXRl
KENTU1N0eWxlU2hlZXQqIHBhcmVudCwgUGFzc093blB0cjxDU1NTZWxlY3Rvcj4gc2VsZWN0b3Is
IGludCBzb3VyY2VMaW5lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU1NQ
YWdlUnVsZShwYXJlbnQsIHNlbGVjdG9yLCBzb3VyY2VMaW5lKSk7CiAgICAgfQpAQCAtNDQsNyAr
NDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgc2VsZWN0b3JUZXh0KCkgY29uc3Q7
CiAKIHByaXZhdGU6Ci0gICAgQ1NTUGFnZVJ1bGUoQ1NTU3R5bGVTaGVldCogcGFyZW50LCBDU1NT
ZWxlY3Rvciogc2VsZWN0b3IsIGludCBzb3VyY2VMaW5lKTsKKyAgICBDU1NQYWdlUnVsZShDU1NT
dHlsZVNoZWV0KiBwYXJlbnQsIFBhc3NPd25QdHI8Q1NTU2VsZWN0b3I+LCBpbnQgc291cmNlTGlu
ZSk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNQYWdlUnVsZSgpIHsgcmV0dXJuIHRydWU7IH0KIApJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNSw3ICsxMzUsNiBAQCBDU1NQYXJzZXI6OkNTU1Bh
cnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2ltcG9ydGFudChmYWxzZSkKICAgICAs
IG1faWQoMCkKICAgICAsIG1fc3R5bGVTaGVldCgwKQotICAgICwgbV92YWx1ZUxpc3QoMCkKICAg
ICAsIG1fcGFyc2VkUHJvcGVydGllcyhzdGF0aWNfY2FzdDxDU1NQcm9wZXJ0eSoqPihmYXN0TWFs
bG9jKDMyICogc2l6ZW9mKENTU1Byb3BlcnR5KikpKSkKICAgICAsIG1fbnVtUGFyc2VkUHJvcGVy
dGllcygwKQogICAgICwgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzKDMyKQpAQCAtMTczLDE0ICsxNzIs
MTEgQEAgQ1NTUGFyc2VyOjp+Q1NTUGFyc2VyKCkKIAogICAgIGNsZWFyVmFyaWFibGVzKCk7CiAK
LSAgICBkZWxldGUgbV92YWx1ZUxpc3Q7Ci0KICAgICBmYXN0RnJlZShtX2RhdGEpOwogCiAgICAg
ZmFzdERlbGV0ZUFsbFZhbHVlcyhtX2Zsb2F0aW5nU2VsZWN0b3JzKTsKICAgICBkZWxldGVBbGxW
YWx1ZXMobV9mbG9hdGluZ1ZhbHVlTGlzdHMpOwogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX2Zsb2F0
aW5nRnVuY3Rpb25zKTsKLSAgICBkZWxldGVBbGxWYWx1ZXMobV9yZXVzYWJsZVNlbGVjdG9yVmVj
dG9yKTsKIH0KIAogdm9pZCBDU1NQYXJzZXJTdHJpbmc6Omxvd2VyKCkKQEAgLTM5NSwxNSArMzkx
LDEzIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXMKIAogdm9pZCBD
U1NQYXJzZXI6OmFkZFByb3BlcnR5KGludCBwcm9wSWQsIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IHZh
bHVlLCBib29sIGltcG9ydGFudCkKIHsKLSAgICBPd25QdHI8Q1NTUHJvcGVydHk+IHByb3AobmV3
IENTU1Byb3BlcnR5KHByb3BJZCwgdmFsdWUsIGltcG9ydGFudCwgbV9jdXJyZW50U2hvcnRoYW5k
LCBtX2ltcGxpY2l0U2hvcnRoYW5kKSk7CiAgICAgaWYgKG1fbnVtUGFyc2VkUHJvcGVydGllcyA+
PSBtX21heFBhcnNlZFByb3BlcnRpZXMpIHsKICAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVz
ICs9IDMyOwogICAgICAgICBpZiAobV9tYXhQYXJzZWRQcm9wZXJ0aWVzID4gVUlOVF9NQVggLyBz
aXplb2YoQ1NTUHJvcGVydHkqKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgbV9wYXJz
ZWRQcm9wZXJ0aWVzID0gc3RhdGljX2Nhc3Q8Q1NTUHJvcGVydHkqKj4oZmFzdFJlYWxsb2MobV9w
YXJzZWRQcm9wZXJ0aWVzLAotICAgICAgICAgICAgbV9tYXhQYXJzZWRQcm9wZXJ0aWVzICogc2l6
ZW9mKENTU1Byb3BlcnR5KikpKTsKKyAgICAgICAgbV9wYXJzZWRQcm9wZXJ0aWVzID0gc3RhdGlj
X2Nhc3Q8Q1NTUHJvcGVydHkqKj4oZmFzdFJlYWxsb2MobV9wYXJzZWRQcm9wZXJ0aWVzLCBtX21h
eFBhcnNlZFByb3BlcnRpZXMgKiBzaXplb2YoQ1NTUHJvcGVydHkqKSkpOwogICAgIH0KLSAgICBt
X3BhcnNlZFByb3BlcnRpZXNbbV9udW1QYXJzZWRQcm9wZXJ0aWVzKytdID0gcHJvcC5sZWFrUHRy
KCk7CisgICAgbV9wYXJzZWRQcm9wZXJ0aWVzW21fbnVtUGFyc2VkUHJvcGVydGllcysrXSA9IGFk
b3B0UHRyKG5ldyBDU1NQcm9wZXJ0eShwcm9wSWQsIHZhbHVlLCBpbXBvcnRhbnQsIG1fY3VycmVu
dFNob3J0aGFuZCwgbV9pbXBsaWNpdFNob3J0aGFuZCkpLmxlYWtQdHIoKTsKIH0KIAogdm9pZCBD
U1NQYXJzZXI6OnJvbGxiYWNrTGFzdFByb3BlcnRpZXMoaW50IG51bSkKQEAgLTU5NCw3ICs1ODgs
NyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgLy8gSWYg
d2UgaGF2ZSBhbnkgdmFyaWFibGVzLCB0aGVuIHdlIGRvbid0IHBhcnNlIHRoZSBsaXN0IG9mIHZh
bHVlcyB5ZXQuICBXZSBhZGQgdGhlbSB0byB0aGUgZGVjbGFyYXRpb24KICAgICAvLyBhcyB1bnJl
c29sdmVkLCBhbmQgYWxsb3cgdGhlbSB0byBiZSBwYXJzZWQgbGF0ZXIuICBUaGUgcGFyc2UgaXMg
Y29uc2lkZXJlZCAic3VjY2Vzc2Z1bCIgZm9yIG5vdywgZXZlbiB0aG91Z2gKICAgICAvLyBpdCBt
aWdodCB1bHRpbWF0ZWx5IGZhaWwgb25jZSB0aGUgdmFyaWFibGUgaGFzIGJlZW4gcmVzb2x2ZWQu
Ci0gICAgaWYgKCFpblNob3J0aGFuZCgpICYmIGNoZWNrRm9yVmFyaWFibGVzKG1fdmFsdWVMaXN0
KSkgeworICAgIGlmICghaW5TaG9ydGhhbmQoKSAmJiBjaGVja0ZvclZhcmlhYmxlcyhtX3ZhbHVl
TGlzdC5nZXQoKSkpIHsKICAgICAgICAgYWRkVW5yZXNvbHZlZFByb3BlcnR5KHByb3BJZCwgaW1w
b3J0YW50KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtOTQwLDcgKzkzNCw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKGludCBwcm9wSWQsIGIKICAgICAgICAgICAgICAg
ICBwcm9wSWQgPT0gQ1NTUHJvcGVydHlCYWNrZ3JvdW5kUmVwZWF0IHx8CiAgICAgICAgICAgICAg
ICAgcHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0TWFza1Bvc2l0aW9uIHx8CiAgICAgICAgICAg
ICAgICAgcHJvcElkID09IENTU1Byb3BlcnR5V2Via2l0TWFza1JlcGVhdCkgewotICAgICAgICAg
ICAgICAgIHNob3J0aGFuZFNjb3BlLnNldChuZXcgU2hvcnRoYW5kU2NvcGUodGhpcywgcHJvcElk
KSk7CisgICAgICAgICAgICAgICAgc2hvcnRoYW5kU2NvcGUgPSBhZG9wdFB0cihuZXcgU2hvcnRo
YW5kU2NvcGUodGhpcywgcHJvcElkKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhZGRQ
cm9wZXJ0eShwcm9wSWQxLCB2YWwxLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsKICAgICAgICAgICAg
IGlmICh2YWwyKQpAQCAtNDQxOCwxOCArNDQxMiwxOCBAQCBzdHJ1Y3QgQm9yZGVySW1hZ2VQYXJz
ZUNvbnRleHQgewogICAgICAgICAvLyBOb3cgd2UgaGF2ZSB0byBkZWFsIHdpdGggdGhlIGJvcmRl
ciB3aWR0aHMuICBUaGUgYmVzdCB3YXkgdG8gZGVhbCB3aXRoIHRoZXNlIGlzIHRvIGFjdHVhbGx5
IHB1dCB0aGVzZSB2YWx1ZXMgaW50byBhIHZhbHVlCiAgICAgICAgIC8vIGxpc3QgYW5kIHRoZW4g
bWFrZSBvdXIgcGFyc2luZyBtYWNoaW5lcnkgZG8gdGhlIHBhcnNpbmcuCiAgICAgICAgIGlmICht
X2JvcmRlclRvcCkgewotICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0IG5ld0xpc3Q7Ci0g
ICAgICAgICAgICBuZXdMaXN0LmFkZFZhbHVlKCptX2JvcmRlclRvcCk7CisgICAgICAgICAgICBP
d25QdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBuZXdMaXN0ID0gYWRvcHRQdHIobmV3IENTU1BhcnNl
clZhbHVlTGlzdCk7CisgICAgICAgICAgICBuZXdMaXN0LT5hZGRWYWx1ZSgqbV9ib3JkZXJUb3Ap
OwogICAgICAgICAgICAgaWYgKG1fYm9yZGVyUmlnaHQpCi0gICAgICAgICAgICAgICAgbmV3TGlz
dC5hZGRWYWx1ZSgqbV9ib3JkZXJSaWdodCk7CisgICAgICAgICAgICAgICAgbmV3TGlzdC0+YWRk
VmFsdWUoKm1fYm9yZGVyUmlnaHQpOwogICAgICAgICAgICAgaWYgKG1fYm9yZGVyQm90dG9tKQot
ICAgICAgICAgICAgICAgIG5ld0xpc3QuYWRkVmFsdWUoKm1fYm9yZGVyQm90dG9tKTsKKyAgICAg
ICAgICAgICAgICBuZXdMaXN0LT5hZGRWYWx1ZSgqbV9ib3JkZXJCb3R0b20pOwogICAgICAgICAg
ICAgaWYgKG1fYm9yZGVyTGVmdCkKLSAgICAgICAgICAgICAgICBuZXdMaXN0LmFkZFZhbHVlKCpt
X2JvcmRlckxlZnQpOwotICAgICAgICAgICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBvbGRMaXN0ID0g
cC0+bV92YWx1ZUxpc3Q7Ci0gICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9ICZuZXdMaXN0Owor
ICAgICAgICAgICAgICAgIG5ld0xpc3QtPmFkZFZhbHVlKCptX2JvcmRlckxlZnQpOworICAgICAg
ICAgICAgT3duUHRyPENTU1BhcnNlclZhbHVlTGlzdD4gb2xkTGlzdCA9IHAtPm1fdmFsdWVMaXN0
LnJlbGVhc2UoKTsKKyAgICAgICAgICAgIHAtPm1fdmFsdWVMaXN0ID0gbmV3TGlzdC5yZWxlYXNl
KCk7CiAgICAgICAgICAgICBwLT5wYXJzZVZhbHVlKENTU1Byb3BlcnR5Qm9yZGVyV2lkdGgsIGlt
cG9ydGFudCk7Ci0gICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IG9sZExpc3Q7CisgICAgICAg
ICAgICBwLT5tX3ZhbHVlTGlzdCA9IG9sZExpc3QucmVsZWFzZSgpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gTWFrZSBvdXIgbmV3IGJvcmRlciBpbWFnZSB2YWx1ZSBub3cuCkBAIC01MzE3LDEz
ICs1MzExLDEzIEBAIENTU1NlbGVjdG9yKiBDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nU2UKICAg
ICByZXR1cm4gc2VsZWN0b3I7CiB9CiAKLUNTU1NlbGVjdG9yKiBDU1NQYXJzZXI6OnNpbmtGbG9h
dGluZ1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWxlY3RvcikKK1Bhc3NPd25QdHI8Q1NTU2VsZWN0
b3I+IENTU1BhcnNlcjo6c2lua0Zsb2F0aW5nU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
KQogewogICAgIGlmIChzZWxlY3RvcikgewogICAgICAgICBBU1NFUlQobV9mbG9hdGluZ1NlbGVj
dG9ycy5jb250YWlucyhzZWxlY3RvcikpOwogICAgICAgICBtX2Zsb2F0aW5nU2VsZWN0b3JzLnJl
bW92ZShzZWxlY3Rvcik7CiAgICAgfQotICAgIHJldHVybiBzZWxlY3RvcjsKKyAgICByZXR1cm4g
YWRvcHRQdHIoc2VsZWN0b3IpOwogfQogCiBDU1NQYXJzZXJWYWx1ZUxpc3QqIENTU1BhcnNlcjo6
Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKQpAQCAtNTMzMywxMyArNTMyNywxMyBAQCBDU1NQYXJz
ZXJWYWx1ZUxpc3QqIENTU1BhcnNlcjo6Y3JlYXRlRmxvCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAK
LUNTU1BhcnNlclZhbHVlTGlzdCogQ1NTUGFyc2VyOjpzaW5rRmxvYXRpbmdWYWx1ZUxpc3QoQ1NT
UGFyc2VyVmFsdWVMaXN0KiBsaXN0KQorUGFzc093blB0cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+IENT
U1BhcnNlcjo6c2lua0Zsb2F0aW5nVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlzdCogbGlzdCkK
IHsKICAgICBpZiAobGlzdCkgewogICAgICAgICBBU1NFUlQobV9mbG9hdGluZ1ZhbHVlTGlzdHMu
Y29udGFpbnMobGlzdCkpOwogICAgICAgICBtX2Zsb2F0aW5nVmFsdWVMaXN0cy5yZW1vdmUobGlz
dCk7CiAgICAgfQotICAgIHJldHVybiBsaXN0OworICAgIHJldHVybiBhZG9wdFB0cihsaXN0KTsK
IH0KIAogQ1NTUGFyc2VyRnVuY3Rpb24qIENTU1BhcnNlcjo6Y3JlYXRlRmxvYXRpbmdGdW5jdGlv
bigpCkBAIC01MzQ5LDEzICs1MzQzLDEzIEBAIENTU1BhcnNlckZ1bmN0aW9uKiBDU1NQYXJzZXI6
OmNyZWF0ZUZsb2EKICAgICByZXR1cm4gZnVuY3Rpb247CiB9CiAKLUNTU1BhcnNlckZ1bmN0aW9u
KiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ0Z1bmN0aW9uKENTU1BhcnNlckZ1bmN0aW9uKiBmdW5j
dGlvbikKK1Bhc3NPd25QdHI8Q1NTUGFyc2VyRnVuY3Rpb24+IENTU1BhcnNlcjo6c2lua0Zsb2F0
aW5nRnVuY3Rpb24oQ1NTUGFyc2VyRnVuY3Rpb24qIGZ1bmN0aW9uKQogewogICAgIGlmIChmdW5j
dGlvbikgewogICAgICAgICBBU1NFUlQobV9mbG9hdGluZ0Z1bmN0aW9ucy5jb250YWlucyhmdW5j
dGlvbikpOwogICAgICAgICBtX2Zsb2F0aW5nRnVuY3Rpb25zLnJlbW92ZShmdW5jdGlvbik7CiAg
ICAgfQotICAgIHJldHVybiBmdW5jdGlvbjsKKyAgICByZXR1cm4gYWRvcHRQdHIoZnVuY3Rpb24p
OwogfQogCiBDU1NQYXJzZXJWYWx1ZSYgQ1NTUGFyc2VyOjpzaW5rRmxvYXRpbmdWYWx1ZShDU1NQ
YXJzZXJWYWx1ZSYgdmFsdWUpCkBAIC01NDY1LDcgKzU0NTksNyBAQCBXZWJLaXRDU1NLZXlmcmFt
ZXNSdWxlKiBDU1NQYXJzZXI6OmNyZWF0CiAgICAgcmV0dXJuIHJ1bGVQdHI7CiB9CiAKLUNTU1J1
bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3RvcjxDU1NTZWxlY3Rvcio+KiBzZWxl
Y3RvcnMpCitDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8T3duUHRy
PENTU1NlbGVjdG9yPiA+KiBzZWxlY3RvcnMpCiB7CiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0g
bV9hbGxvd05hbWVzcGFjZURlY2xhcmF0aW9ucyA9IG1fYWxsb3dWYXJpYWJsZXNSdWxlcyA9IGZh
bHNlOwogICAgIENTU1N0eWxlUnVsZSogcmVzdWx0ID0gMDsKQEAgLTU1NzUsNyArNTU2OSw3IEBA
IGJvb2wgQ1NTUGFyc2VyOjphZGRWYXJpYWJsZURlY2xhcmF0aW9uQmwKIAogI2VuZGlmCiAKLUNT
U1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUoQ1NTU2VsZWN0b3IqIHBhZ2VTZWxlY3Rv
cikKK0NTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlUGFnZVJ1bGUoUGFzc093blB0cjxDU1NTZWxl
Y3Rvcj4gcGFnZVNlbGVjdG9yKQogewogICAgIC8vIEZJWE1FOiBNYXJnaW4gYXQtcnVsZXMgYXJl
IGlnbm9yZWQuCiAgICAgbV9hbGxvd0ltcG9ydFJ1bGVzID0gbV9hbGxvd05hbWVzcGFjZURlY2xh
cmF0aW9ucyA9IG1fYWxsb3dWYXJpYWJsZXNSdWxlcyA9IGZhbHNlOwpAQCAtNTY0MSw3ICs1NjM1
LDcgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFyaWFibGUoQ1NTVmFyaWFibAogICAgIHJldHVy
biBvazsKIH0KIAotdm9pZCBDU1NQYXJzZXI6OnBhcnNlUHJvcGVydHlXaXRoUmVzb2x2ZWRWYXJp
YWJsZXMoaW50IHByb3BJZCwgYm9vbCBpc0ltcG9ydGFudCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qIGRlY2xhcmF0aW9uLCBDU1NQYXJzZXJWYWx1ZUxpc3QqIGxpc3QpCit2b2lkIENTU1Bh
cnNlcjo6cGFyc2VQcm9wZXJ0eVdpdGhSZXNvbHZlZFZhcmlhYmxlcyhpbnQgcHJvcElkLCBib29s
IGlzSW1wb3J0YW50LCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24sIFBh
c3NPd25QdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBsaXN0KQogewogICAgIG1fdmFsdWVMaXN0ID0g
bGlzdDsKICAgICBtX3N0eWxlU2hlZXQgPSBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oZGVj
bGFyYXRpb24tPnN0eWxlc2hlZXQoKSk7CkBAIC01NjUwLDcgKzU2NDQsNyBAQCB2b2lkIENTU1Bh
cnNlcjo6cGFyc2VQcm9wZXJ0eVdpdGhSZXNvbHZlCiAgICAgICAgIGRlY2xhcmF0aW9uLT5hZGRQ
YXJzZWRQcm9wZXJ0aWVzKG1fcGFyc2VkUHJvcGVydGllcywgbV9udW1QYXJzZWRQcm9wZXJ0aWVz
KTsKIAogICAgIGNsZWFyUHJvcGVydGllcygpOwotICAgIG1fdmFsdWVMaXN0ID0gMDsKKyAgICBt
X3ZhbHVlTGlzdC5jbGVhcigpOwogfQogCiBib29sIENTU1BhcnNlcjo6Y2hlY2tGb3JWYXJpYWJs
ZXMoQ1NTUGFyc2VyVmFsdWVMaXN0KiB2YWx1ZUxpc3QpCkBAIC01Njc0LDEwICs1NjY4LDkgQEAg
Ym9vbCBDU1NQYXJzZXI6OmNoZWNrRm9yVmFyaWFibGVzKENTU1BhcgogICAgIHJldHVybiBoYXNW
YXJpYWJsZXM7CiB9CiAKLXZvaWQgQ1NTUGFyc2VyOjphZGRVbnJlc29sdmVkUHJvcGVydHkoaW50
IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpCit2b2lkIENTU1BhcnNlcjo6YWRkVW5yZXNvbHZlZFBy
b3BlcnR5KGludCBwcm9wZXJ0eUlkLCBib29sIGltcG9ydGFudCkKIHsKLSAgICBSZWZQdHI8Q1NT
VmFyaWFibGVEZXBlbmRlbnRWYWx1ZT4gdmFsID0gQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZTo6
Y3JlYXRlKENTU1ZhbHVlTGlzdDo6Y3JlYXRlRnJvbVBhcnNlclZhbHVlTGlzdChtX3ZhbHVlTGlz
dCkpOwotICAgIGFkZFByb3BlcnR5KHByb3BJZCwgdmFsLnJlbGVhc2UoKSwgaW1wb3J0YW50KTsK
KyAgICBhZGRQcm9wZXJ0eShwcm9wZXJ0eUlkLCBDU1NWYXJpYWJsZURlcGVuZGVudFZhbHVlOjpj
cmVhdGUoQ1NTVmFsdWVMaXN0OjpjcmVhdGVGcm9tUGFyc2VyVmFsdWVMaXN0KG1fdmFsdWVMaXN0
LmdldCgpKSksIGltcG9ydGFudCk7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjpkZWxldGVGb250RmFj
ZU9ubHlWYWx1ZXMoKQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2MiwxOCArMTYyLDE4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBwYXJzZVRyYW5zZm9ybU9yaWdpbihpbnQgcHJv
cElkLCBpbnQmIHByb3BJZDEsIGludCYgcHJvcElkMiwgaW50JiBwcm9wSWQzLCBSZWZQdHI8Q1NT
VmFsdWU+JiwgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICAgICAg
Ym9vbCBwYXJzZVBlcnNwZWN0aXZlT3JpZ2luKGludCBwcm9wSWQsIGludCYgcHJvcElkMSwgaW50
JiBwcm9wSWQyLCAgUmVmUHRyPENTU1ZhbHVlPiYsIFJlZlB0cjxDU1NWYWx1ZT4mKTsKICAgICAg
ICAgYm9vbCBwYXJzZVZhcmlhYmxlKENTU1ZhcmlhYmxlc0RlY2xhcmF0aW9uKiwgY29uc3QgU3Ry
aW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVWYWx1ZSk7Ci0gICAgICAg
IHZvaWQgcGFyc2VQcm9wZXJ0eVdpdGhSZXNvbHZlZFZhcmlhYmxlcyhpbnQgcHJvcElkLCBib29s
IGltcG9ydGFudCwgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBDU1NQYXJzZXJWYWx1ZUxp
c3QqKTsKKyAgICAgICAgdm9pZCBwYXJzZVByb3BlcnR5V2l0aFJlc29sdmVkVmFyaWFibGVzKGlu
dCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50LCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIFBh
c3NPd25QdHI8Q1NTUGFyc2VyVmFsdWVMaXN0Pik7CiAKICAgICAgICAgaW50IHl5cGFyc2UoKTsK
IAogICAgICAgICBDU1NTZWxlY3RvciogY3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAg
ICBDU1NTZWxlY3Rvciogc2lua0Zsb2F0aW5nU2VsZWN0b3IoQ1NTU2VsZWN0b3IqKTsKKyAgICAg
ICAgUGFzc093blB0cjxDU1NTZWxlY3Rvcj4gc2lua0Zsb2F0aW5nU2VsZWN0b3IoQ1NTU2VsZWN0
b3IqKTsKIAogICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGNyZWF0ZUZsb2F0aW5nVmFsdWVM
aXN0KCk7Ci0gICAgICAgIENTU1BhcnNlclZhbHVlTGlzdCogc2lua0Zsb2F0aW5nVmFsdWVMaXN0
KENTU1BhcnNlclZhbHVlTGlzdCopOworICAgICAgICBQYXNzT3duUHRyPENTU1BhcnNlclZhbHVl
TGlzdD4gc2lua0Zsb2F0aW5nVmFsdWVMaXN0KENTU1BhcnNlclZhbHVlTGlzdCopOwogCiAgICAg
ICAgIENTU1BhcnNlckZ1bmN0aW9uKiBjcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAg
IENTU1BhcnNlckZ1bmN0aW9uKiBzaW5rRmxvYXRpbmdGdW5jdGlvbihDU1NQYXJzZXJGdW5jdGlv
biopOworICAgICAgICBQYXNzT3duUHRyPENTU1BhcnNlckZ1bmN0aW9uPiBzaW5rRmxvYXRpbmdG
dW5jdGlvbihDU1NQYXJzZXJGdW5jdGlvbiopOwogCiAgICAgICAgIENTU1BhcnNlclZhbHVlJiBz
aW5rRmxvYXRpbmdWYWx1ZShDU1NQYXJzZXJWYWx1ZSYpOwogCkBAIC0xODQsMTAgKzE4NCwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFdlYktpdENTU0tleWZyYW1lc1J1bGUqIGNy
ZWF0ZUtleWZyYW1lc1J1bGUoKTsKICAgICAgICAgQ1NTUnVsZSogY3JlYXRlTWVkaWFSdWxlKE1l
ZGlhTGlzdCosIENTU1J1bGVMaXN0Kik7CiAgICAgICAgIENTU1J1bGVMaXN0KiBjcmVhdGVSdWxl
TGlzdCgpOwotICAgICAgICBDU1NSdWxlKiBjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPENTU1NlbGVj
dG9yKj4qIHNlbGVjdG9ycyk7CisgICAgICAgIENTU1J1bGUqIGNyZWF0ZVN0eWxlUnVsZShWZWN0
b3I8T3duUHRyPENTU1NlbGVjdG9yPiA+Kik7CiAgICAgICAgIENTU1J1bGUqIGNyZWF0ZUZvbnRG
YWNlUnVsZSgpOwogICAgICAgICBDU1NSdWxlKiBjcmVhdGVWYXJpYWJsZXNSdWxlKE1lZGlhTGlz
dCosIGJvb2wgdmFyaWFibGVzS2V5d29yZCk7Ci0gICAgICAgIENTU1J1bGUqIGNyZWF0ZVBhZ2VS
dWxlKENTU1NlbGVjdG9yKiBwYWdlU2VsZWN0b3IpOworICAgICAgICBDU1NSdWxlKiBjcmVhdGVQ
YWdlUnVsZShQYXNzT3duUHRyPENTU1NlbGVjdG9yPiBwYWdlU2VsZWN0b3IpOwogICAgICAgICBD
U1NSdWxlKiBjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdpbkJveFR5cGUgbWFy
Z2luQm94KTsKICAgICAgICAgdm9pZCBzdGFydERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpOwog
ICAgICAgICB2b2lkIGVuZERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpOwpAQCAtMjA4LDcgKzIw
OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhZGRVbnJlc29sdmVkUHJv
cGVydHkoaW50IHByb3BJZCwgYm9vbCBpbXBvcnRhbnQpOwogICAgICAgICB2b2lkIGludmFsaWRC
bG9ja0hpdCgpOwogCi0gICAgICAgIFZlY3RvcjxDU1NTZWxlY3Rvcio+KiByZXVzYWJsZVNlbGVj
dG9yVmVjdG9yKCkgeyByZXR1cm4gJm1fcmV1c2FibGVTZWxlY3RvclZlY3RvcjsgfQorICAgICAg
ICBWZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yPiA+KiByZXVzYWJsZVNlbGVjdG9yVmVjdG9yKCkg
eyByZXR1cm4gJm1fcmV1c2FibGVTZWxlY3RvclZlY3RvcjsgfQogCiAgICAgICAgIHZvaWQgdXBk
YXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCk7CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxDU1NSdWxlPiBtX3J1bGU7CiAgICAg
ICAgIFJlZlB0cjxDU1NSdWxlPiBtX2tleWZyYW1lOwogICAgICAgICBPd25QdHI8TWVkaWFRdWVy
eT4gbV9tZWRpYVF1ZXJ5OwotICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIG1fdmFsdWVMaXN0
OworICAgICAgICBPd25QdHI8Q1NTUGFyc2VyVmFsdWVMaXN0PiBtX3ZhbHVlTGlzdDsKICAgICAg
ICAgQ1NTUHJvcGVydHkqKiBtX3BhcnNlZFByb3BlcnRpZXM7CiAgICAgICAgIENTU1NlbGVjdG9y
TGlzdCogbV9zZWxlY3Rvckxpc3RGb3JQYXJzZVNlbGVjdG9yOwogICAgICAgICB1bnNpZ25lZCBt
X251bVBhcnNlZFByb3BlcnRpZXM7CkBAIC0zMTAsNyArMzEwLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBPd25QdHI8TWVkaWFRdWVyeUV4cD4gbV9mbG9hdGluZ01lZGlhUXVlcnlF
eHA7CiAgICAgICAgIE93blB0cjxWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4gPiBtX2Zs
b2F0aW5nTWVkaWFRdWVyeUV4cExpc3Q7CiAKLSAgICAgICAgVmVjdG9yPENTU1NlbGVjdG9yKj4g
bV9yZXVzYWJsZVNlbGVjdG9yVmVjdG9yOworICAgICAgICBWZWN0b3I8T3duUHRyPENTU1NlbGVj
dG9yPiA+IG1fcmV1c2FibGVTZWxlY3RvclZlY3RvcjsKIAogICAgICAgICAvLyBkZWZpbmVzIHVu
aXRzIGFsbG93ZWQgZm9yIGEgY2VydGFpbiBwcm9wZXJ0eSwgdXNlZCBpbiBwYXJzZVVuaXQKICAg
ICAgICAgZW51bSBVbml0cyB7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA2ODI4MikK
KysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI5LDEy
ICs4MjksMTQgQEAgU3RyaW5nIENTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQoKSBjb25zdAogICAg
IHJldHVybiBzdHI7CiB9CiAgICAgCi12b2lkIENTU1NlbGVjdG9yOjpzZXRUYWdIaXN0b3J5KENT
U1NlbGVjdG9yKiB0YWdIaXN0b3J5KSAKK3ZvaWQgQ1NTU2VsZWN0b3I6OnNldFRhZ0hpc3Rvcnko
UGFzc093blB0cjxDU1NTZWxlY3Rvcj4gdGFnSGlzdG9yeSkgCiB7IAogICAgIGlmIChtX2hhc1Jh
cmVEYXRhKSAKLSAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fdGFnSGlzdG9yeS5zZXQodGFn
SGlzdG9yeSk7IAotICAgIGVsc2UgCi0gICAgICAgIG1fZGF0YS5tX3RhZ0hpc3RvcnkgPSB0YWdI
aXN0b3J5OyAKKyAgICAgICAgbV9kYXRhLm1fcmFyZURhdGEtPm1fdGFnSGlzdG9yeSA9IHRhZ0hp
c3Rvcnk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVCghbV9kYXRhLm1fdGFnSGlzdG9yeSk7
CisgICAgICAgIG1fZGF0YS5tX3RhZ0hpc3RvcnkgPSB0YWdIaXN0b3J5LmxlYWtQdHIoKTsKKyAg
ICB9CiB9CiAKIGNvbnN0IFF1YWxpZmllZE5hbWUmIENTU1NlbGVjdG9yOjphdHRyaWJ1dGUoKSBj
b25zdApAQCAtODYxLDEwICs4NjMsMTAgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6c2V0QXJndW1lbnQo
Y29uc3QgQXRvbQogICAgIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2FyZ3VtZW50ID0gdmFsdWU7IAog
fQogCi12b2lkIENTU1NlbGVjdG9yOjpzZXRTaW1wbGVTZWxlY3RvcihDU1NTZWxlY3RvciogdmFs
dWUpCit2b2lkIENTU1NlbGVjdG9yOjpzZXRTaW1wbGVTZWxlY3RvcihQYXNzT3duUHRyPENTU1Nl
bGVjdG9yPiB2YWx1ZSkKIHsKICAgICBjcmVhdGVSYXJlRGF0YSgpOyAKLSAgICBtX2RhdGEubV9y
YXJlRGF0YS0+bV9zaW1wbGVTZWxlY3Rvci5zZXQodmFsdWUpOyAKKyAgICBtX2RhdGEubV9yYXJl
RGF0YS0+bV9zaW1wbGVTZWxlY3RvciA9IHZhbHVlOyAKIH0KIAogYm9vbCBDU1NTZWxlY3Rvcjo6
cGFyc2VOdGgoKQpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1Myw3ICsyNTMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQc2V1ZG9JZCBwc2V1ZG9JZChQc2V1ZG9U
eXBlKTsKIAogICAgICAgICBDU1NTZWxlY3RvciogdGFnSGlzdG9yeSgpIGNvbnN0IHsgcmV0dXJu
IG1faGFzUmFyZURhdGEgPyBtX2RhdGEubV9yYXJlRGF0YS0+bV90YWdIaXN0b3J5LmdldCgpIDog
bV9kYXRhLm1fdGFnSGlzdG9yeTsgfQotICAgICAgICB2b2lkIHNldFRhZ0hpc3RvcnkoQ1NTU2Vs
ZWN0b3IqIHRhZ0hpc3RvcnkpOworICAgICAgICB2b2lkIHNldFRhZ0hpc3RvcnkoUGFzc093blB0
cjxDU1NTZWxlY3Rvcj4gdGFnSGlzdG9yeSk7CiAKICAgICAgICAgYm9vbCBoYXNUYWcoKSBjb25z
dCB7IHJldHVybiBtX3RhZyAhPSBhbnlRTmFtZSgpOyB9CiAgICAgICAgIGJvb2wgaGFzQXR0cmli
dXRlKCkgY29uc3QgeyByZXR1cm4gbV9tYXRjaCA9PSBJZCB8fCBtX21hdGNoID09IENsYXNzIHx8
IChtX2hhc1JhcmVEYXRhICYmIG1fZGF0YS5tX3JhcmVEYXRhLT5tX2F0dHJpYnV0ZSAhPSBhbnlR
TmFtZSgpKTsgfQpAQCAtMjY0LDcgKzI2NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgCiAgICAgICAgIHZvaWQgc2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHZhbHVl
KTsKICAgICAgICAgdm9pZCBzZXRBcmd1bWVudChjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsK
LSAgICAgICAgdm9pZCBzZXRTaW1wbGVTZWxlY3RvcihDU1NTZWxlY3RvciogdmFsdWUpOworICAg
ICAgICB2b2lkIHNldFNpbXBsZVNlbGVjdG9yKFBhc3NPd25QdHI8Q1NTU2VsZWN0b3I+IHZhbHVl
KTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgcGFyc2VOdGgoKTsKICAgICAgICAgYm9vbCBtYXRj
aE50aChpbnQgY291bnQpOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCShyZXZpc2lvbiA2
ODI4MikKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQxLDIzICs0MSwyNCBAQCB2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHQoQ1NTU2VsZWN0
b3JMCiAgICAgbGlzdC5tX3NlbGVjdG9yQXJyYXkgPSAwOwogfQogCi12b2lkIENTU1NlbGVjdG9y
TGlzdDo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8Q1NTU2VsZWN0b3IqPiYgc2VsZWN0b3JW
ZWN0b3IpCit2b2lkIENTU1NlbGVjdG9yTGlzdDo6YWRvcHRTZWxlY3RvclZlY3RvcihWZWN0b3I8
T3duUHRyPENTU1NlbGVjdG9yPiA+JiBzZWxlY3RvclZlY3RvcikKIHsKICAgICBkZWxldGVTZWxl
Y3RvcnMoKTsKICAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IHNlbGVjdG9yVmVjdG9yLnNpemUoKTsK
ICAgICBBU1NFUlQoc2l6ZSk7CiAgICAgaWYgKHNpemUgPT0gMSkgewotICAgICAgICBtX3NlbGVj
dG9yQXJyYXkgPSBzZWxlY3RvclZlY3RvclswXTsKKyAgICAgICAgbV9zZWxlY3RvckFycmF5ID0g
c2VsZWN0b3JWZWN0b3JbMF0ucmVsZWFzZSgpLmxlYWtQdHIoKTsKICAgICAgICAgbV9zZWxlY3Rv
ckFycmF5LT5zZXRMYXN0SW5TZWxlY3Rvckxpc3QoKTsKICAgICAgICAgc2VsZWN0b3JWZWN0b3Iu
c2hyaW5rKDApOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1fc2VsZWN0b3JBcnJheSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Q1NTU2VsZWN0b3IqPihmYXN0TWFsbG9jKHNpemVvZihDU1NTZWxl
Y3RvcikgKiBzZWxlY3RvclZlY3Rvci5zaXplKCkpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICBtZW1jcHkoJm1fc2VsZWN0b3JBcnJheVtpXSwgc2Vs
ZWN0b3JWZWN0b3JbaV0sIHNpemVvZihDU1NTZWxlY3RvcikpOworICAgICAgICBDU1NTZWxlY3Rv
ciogc291cmNlU2VsZWN0b3IgPSBzZWxlY3RvclZlY3RvcltpXS5yZWxlYXNlKCkubGVha1B0cigp
OworICAgICAgICBtZW1jcHkoJm1fc2VsZWN0b3JBcnJheVtpXSwgc291cmNlU2VsZWN0b3IsIHNp
emVvZihDU1NTZWxlY3RvcikpOwogICAgICAgICAvLyBXZSB3YW50IHRvIGZyZWUgdGhlIG1lbW9y
eSAod2hpY2ggd2FzIGFsbG9jYXRlZCB3aXRoIGZhc3ROZXcpLCBidXQgd2UKICAgICAgICAgLy8g
ZG9uJ3Qgd2FudCB0aGUgZGVzdHJ1Y3RvciB0byBydW4gc2luY2UgaXQgd2lsbCBhZmZlY3QgdGhl
IGNvcHkgd2UndmUganVzdCBtYWRlLgotICAgICAgICBmYXN0RGVsZXRlU2tpcHBpbmdEZXN0cnVj
dG9yKHNlbGVjdG9yVmVjdG9yW2ldKTsKKyAgICAgICAgZmFzdERlbGV0ZVNraXBwaW5nRGVzdHJ1
Y3Rvcihzb3VyY2VTZWxlY3Rvcik7CiAgICAgICAgIEFTU0VSVCghbV9zZWxlY3RvckFycmF5W2ld
LmlzTGFzdEluU2VsZWN0b3JMaXN0KCkpOwogICAgIH0KICAgICBtX3NlbGVjdG9yQXJyYXlbc2l6
ZSAtIDFdLnNldExhc3RJblNlbGVjdG9yTGlzdCgpOwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3JMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgJ
KHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgcHVibGljOgogICAgIH5DU1NTZWxlY3Rvckxpc3Qo
KTsKIAogICAgIHZvaWQgYWRvcHQoQ1NTU2VsZWN0b3JMaXN0JiBsaXN0KTsKLSAgICB2b2lkIGFk
b3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPENTU1NlbGVjdG9yKj4mIHNlbGVjdG9yVmVjdG9yKTsK
KyAgICB2b2lkIGFkb3B0U2VsZWN0b3JWZWN0b3IoVmVjdG9yPE93blB0cjxDU1NTZWxlY3Rvcj4g
PiYgc2VsZWN0b3JWZWN0b3IpOwogICAgIAogICAgIENTU1NlbGVjdG9yKiBmaXJzdCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VsZWN0b3JBcnJheSA/IG1fc2VsZWN0b3JBcnJheSA6IDA7IH0KICAgICBz
dGF0aWMgQ1NTU2VsZWN0b3IqIG5leHQoQ1NTU2VsZWN0b3IqIHByZXZpb3VzKSB7IHJldHVybiBw
cmV2aW91cy0+aXNMYXN0SW5TZWxlY3Rvckxpc3QoKSA/IDAgOiBwcmV2aW91cyArIDE7IH0KSW5k
ZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU1N0eWxlUnVsZS5oCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxl
UnVsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoKICAgICAvLyBO
b3QgcGFydCBvZiB0aGUgQ1NTT00KICAgICB2aXJ0dWFsIGJvb2wgcGFyc2VTdHJpbmcoY29uc3Qg
U3RyaW5nJiwgYm9vbCA9IGZhbHNlKTsKIAotICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihW
ZWN0b3I8Q1NTU2VsZWN0b3IqPiYgc2VsZWN0b3JzKSB7IG1fc2VsZWN0b3JMaXN0LmFkb3B0U2Vs
ZWN0b3JWZWN0b3Ioc2VsZWN0b3JzKTsgfQorICAgIHZvaWQgYWRvcHRTZWxlY3RvclZlY3RvcihW
ZWN0b3I8T3duUHRyPENTU1NlbGVjdG9yPiA+JiBzZWxlY3RvcnMpIHsgbV9zZWxlY3Rvckxpc3Qu
YWRvcHRTZWxlY3RvclZlY3RvcihzZWxlY3RvcnMpOyB9CiAgICAgdm9pZCBzZXREZWNsYXJhdGlv
bihQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPik7CiAKICAgICBjb25zdCBD
U1NTZWxlY3Rvckxpc3QmIHNlbGVjdG9yTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2VsZWN0b3JM
aXN0OyB9CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNjgyODIpCisr
KyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA5
LDcgKzYwOSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6cmVzb2x2ZVZhcmlhYmxlc0YKICAg
ICAgICAgQ1NTVmFsdWVMaXN0KiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYXJpYWJsZURl
cGVuZGVudFZhbHVlKj4oY3VycmVudC52YWx1ZSgpKS0+dmFsdWVMaXN0KCk7CiAgICAgICAgIGlm
ICghdmFsdWVMaXN0KQogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIENTU1BhcnNlclZh
bHVlTGlzdCByZXNvbHZlZFZhbHVlTGlzdDsKKyAgICAgICAgT3duUHRyPENTU1BhcnNlclZhbHVl
TGlzdD4gcmVzb2x2ZWRWYWx1ZUxpc3QgPSBhZG9wdFB0cihuZXcgQ1NTUGFyc2VyVmFsdWVMaXN0
KTsKICAgICAgICAgdW5zaWduZWQgcyA9IHZhbHVlTGlzdC0+bGVuZ3RoKCk7CiAgICAgICAgIGJv
b2wgZnVsbHlSZXNvbHZlZCA9IHRydWU7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBzOyArK2kpIHsKQEAgLTY0MCw5ICs2NDAsOSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnJl
c29sdmVWYXJpYWJsZXNGCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHVuc2ln
bmVkIHZhbHVlU2l6ZSA9IHJlc29sdmVkVmFyaWFibGUtPmxlbmd0aCgpOwogICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCB2YWx1ZVNpemU7ICsraikKLSAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZWRWYWx1ZUxpc3QuYWRkVmFsdWUocmVzb2x2ZWRWYXJpYWJsZS0+aXRl
bShqKS0+cGFyc2VyVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWVM
aXN0LT5hZGRWYWx1ZShyZXNvbHZlZFZhcmlhYmxlLT5pdGVtKGopLT5wYXJzZXJWYWx1ZSgpKTsK
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlc29sdmVkVmFsdWVMaXN0LmFk
ZFZhbHVlKHZhbC0+cGFyc2VyVmFsdWUoKSk7CisgICAgICAgICAgICAgICAgcmVzb2x2ZWRWYWx1
ZUxpc3QtPmFkZFZhbHVlKHZhbC0+cGFyc2VyVmFsdWUoKSk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGlmICghZnVsbHlSZXNvbHZlZCkKQEAgLTY1MCw3ICs2NTAsNyBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OnJlc29sdmVWYXJpYWJsZXNGCiAKICAgICAgICAgLy8gV2Ugbm93IGhh
dmUgYSBmdWxseSByZXNvbHZlZCBuZXcgdmFsdWUgbGlzdC4gIFdlIHdhbnQgdGhlIHBhcnNlciB0
byB1c2UgdGhpcyB2YWx1ZSBsaXN0CiAgICAgICAgIC8vIGFuZCBwYXJzZSBvdXIgbmV3IGRlY2xh
cmF0aW9uLgotICAgICAgICBDU1NQYXJzZXIobV9jaGVja2VyLm1fc3RyaWN0UGFyc2luZykucGFy
c2VQcm9wZXJ0eVdpdGhSZXNvbHZlZFZhcmlhYmxlcyhjdXJyZW50LmlkKCksIGN1cnJlbnQuaXNJ
bXBvcnRhbnQoKSwgbmV3RGVjbCwgJnJlc29sdmVkVmFsdWVMaXN0KTsKKyAgICAgICAgQ1NTUGFy
c2VyKG1fY2hlY2tlci5tX3N0cmljdFBhcnNpbmcpLnBhcnNlUHJvcGVydHlXaXRoUmVzb2x2ZWRW
YXJpYWJsZXMoY3VycmVudC5pZCgpLCBjdXJyZW50LmlzSW1wb3J0YW50KCksIG5ld0RlY2wsIHJl
c29sdmVkVmFsdWVMaXN0LnJlbGVhc2UoKSk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL2Nz
cy9DU1NWYWx1ZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1ZhbHVlTGlz
dC5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIFBhc3NPd25QdHI8Q1NTUGFyc2VyVmFs
dWVMaXN0PiBDU1NWYWx1ZUwKIHsKICAgICBzaXplX3Qgc2l6ZSA9IG1fdmFsdWVzLnNpemUoKTsK
ICAgICBpZiAoIXNpemUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gUGFzc093
blB0cjxDU1NQYXJzZXJWYWx1ZUxpc3Q+KCk7CiAgICAgT3duUHRyPENTU1BhcnNlclZhbHVlTGlz
dD4gcmVzdWx0ID0gYWRvcHRQdHIobmV3IENTU1BhcnNlclZhbHVlTGlzdCk7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIHJlc3VsdC0+YWRkVmFsdWUobV92
YWx1ZXNbaV0tPnBhcnNlclZhbHVlKCkpOwpJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9NZWRpYUxpc3QuY3BwCShyZXZpc2lvbiA2ODI4
MikKKysrIFdlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMSw3
ICsxMzEsNyBAQCB2b2lkIE1lZGlhTGlzdDo6ZGVsZXRlTWVkaXVtKGNvbnN0IFN0cmluCiAgICAg
fSBlbHNlIGlmIChtX2ZhbGxiYWNrKSB7CiAgICAgICAgIFN0cmluZyBtZWRpdW0gPSBwYXJzZU1l
ZGlhRGVzY3JpcHRvcihvbGRNZWRpdW0pOwogICAgICAgICBpZiAoIW1lZGl1bS5pc051bGwoKSkg
ewotICAgICAgICAgICAgY3JlYXRlZFF1ZXJ5ID0gYWRvcHRQdHIobmV3IE1lZGlhUXVlcnkoTWVk
aWFRdWVyeTo6Tm9uZSwgbWVkaXVtLCAwKSk7CisgICAgICAgICAgICBjcmVhdGVkUXVlcnkgPSBh
ZG9wdFB0cihuZXcgTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCBtZWRpdW0pKTsKICAgICAg
ICAgICAgIG9sZFF1ZXJ5ID0gY3JlYXRlZFF1ZXJ5LmdldCgpOwogICAgICAgICB9CiAgICAgfQpA
QCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgTWVkaWFMaXN0OjpzZXRNZWRpYVRleHQoY29uc3QgU3Ry
aW4KICAgICAgICAgICAgICAgICBpZiAobV9mYWxsYmFjaykgewogICAgICAgICAgICAgICAgICAg
ICBTdHJpbmcgbWVkaWFEZXNjcmlwdG9yID0gcGFyc2VNZWRpYURlc2NyaXB0b3IobWVkaXVtKTsK
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFtZWRpYURlc2NyaXB0b3IuaXNOdWxsKCkpCi0gICAg
ICAgICAgICAgICAgICAgICAgICB0ZW1wTWVkaWFMaXN0LT5tX3F1ZXJpZXMuYXBwZW5kKG5ldyBN
ZWRpYVF1ZXJ5KE1lZGlhUXVlcnk6Ok5vbmUsIG1lZGlhRGVzY3JpcHRvciwgMCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgdGVtcE1lZGlhTGlzdC0+bV9xdWVyaWVzLmFwcGVuZChuZXcgTWVk
aWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCBtZWRpYURlc2NyaXB0b3IpKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIE1lZGlhTGlz
dDo6YXBwZW5kTWVkaXVtKGNvbnN0IFN0cmluCiAgICAgfSBlbHNlIGlmIChtX2ZhbGxiYWNrKSB7
CiAgICAgICAgIFN0cmluZyBtZWRpdW0gPSBwYXJzZU1lZGlhRGVzY3JpcHRvcihuZXdNZWRpdW0p
OwogICAgICAgICBpZiAoIW1lZGl1bS5pc051bGwoKSkgewotICAgICAgICAgICAgbV9xdWVyaWVz
LmFwcGVuZChuZXcgTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCBtZWRpdW0sIDApKTsKKyAg
ICAgICAgICAgIG1fcXVlcmllcy5hcHBlbmQobmV3IE1lZGlhUXVlcnkoTWVkaWFRdWVyeTo6Tm9u
ZSwgbWVkaXVtKSk7CiAgICAgICAgICAgICBlYyA9IDA7CiAgICAgICAgIH0KICAgICB9CkluZGV4
OiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9N
ZWRpYVF1ZXJ5LmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsMTQgKzc1LDE0IEBAIHN0YXRpYyBib29sIGV4cHJl
c3Npb25Db21wYXJlKGNvbnN0IE93blAKIH0KIAogCi1NZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5KFJl
c3RyaWN0b3IgciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIFBhc3NPd25QdHI8VmVjdG9yPE93
blB0cjxNZWRpYVF1ZXJ5RXhwPiA+ID4gZXhwcnMpCitNZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5KFJl
c3RyaWN0b3IgciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIFBhc3NPd25QdHI8RXhwcmVzc2lv
blZlY3Rvcj4gZXhwcnMpCiAgICAgOiBtX3Jlc3RyaWN0b3IocikKICAgICAsIG1fbWVkaWFUeXBl
KG1lZGlhVHlwZS5sb3dlcigpKQogICAgICwgbV9leHByZXNzaW9ucyhleHBycykKICAgICAsIG1f
aWdub3JlZChmYWxzZSkKIHsKICAgICBpZiAoIW1fZXhwcmVzc2lvbnMpIHsKLSAgICAgICAgbV9l
eHByZXNzaW9ucyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4p
OworICAgICAgICBtX2V4cHJlc3Npb25zID0gYWRvcHRQdHIobmV3IEV4cHJlc3Npb25WZWN0b3Ip
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oCShyZXZpc2lvbiA2ODI4
MikKKysrIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiAr
MzUsNyBAQAogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgeworCiBjbGFzcyBNZWRpYVF1ZXJ5RXhwOwogCiBjbGFzcyBNZWRpYVF1ZXJ5IDogcHVi
bGljIE5vbmNvcHlhYmxlIHsKQEAgLTQzLDcgKzQ0LDkgQEAgcHVibGljOgogICAgICAgICBPbmx5
LCBOb3QsIE5vbmUKICAgICB9OwogCi0gICAgTWVkaWFRdWVyeShSZXN0cmljdG9yLCBjb25zdCBT
dHJpbmcmIG1lZGlhVHlwZSwgUGFzc093blB0cjxWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+
ID4gPiBleHBycyk7CisgICAgdHlwZWRlZiBWZWN0b3I8T3duUHRyPE1lZGlhUXVlcnlFeHA+ID4g
RXhwcmVzc2lvblZlY3RvcjsKKyAgICBNZWRpYVF1ZXJ5KFJlc3RyaWN0b3IsIGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlLCBQYXNzT3duUHRyPEV4cHJlc3Npb25WZWN0b3I+KTsKKyAgICBNZWRpYVF1
ZXJ5KFJlc3RyaWN0b3IsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKICAgICB+TWVkaWFRdWVy
eSgpOwogCiAgICAgUmVzdHJpY3RvciByZXN0cmljdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZXN0
cmljdG9yOyB9CkBAIC01Niw3ICs1OSw3IEBAIHB1YmxpYzoKICBwcml2YXRlOgogICAgIFJlc3Ry
aWN0b3IgbV9yZXN0cmljdG9yOwogICAgIFN0cmluZyBtX21lZGlhVHlwZTsKLSAgICBPd25QdHI8
VmVjdG9yPE93blB0cjxNZWRpYVF1ZXJ5RXhwPiA+ID4gbV9leHByZXNzaW9uczsKKyAgICBPd25Q
dHI8RXhwcmVzc2lvblZlY3Rvcj4gbV9leHByZXNzaW9uczsKICAgICBib29sIG1faWdub3JlZDsK
ICAgICBTdHJpbmcgbV9zZXJpYWxpemF0aW9uQ2FjaGU7CiAKSW5kZXg6IFdlYkNvcmUvY3NzL1NW
R0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL1NWR0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvY3NzL1NWR0NTU1N0
eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDEsOSArNTQxLDkgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVNWR1Byb3BlcnR5KAogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRTdmdTaGFkb3c6IHsKICAgICAgICAgICAgIGlm
IChpc0luaGVyaXQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHN2Z3N0eWxlLT5zZXRTaGFkb3co
bV9wYXJlbnRTdHlsZS0+c3ZnU3R5bGUoKS0+c2hhZG93KCkgPyBuZXcgU2hhZG93RGF0YSgqbV9w
YXJlbnRTdHlsZS0+c3ZnU3R5bGUoKS0+c2hhZG93KCkpIDogMCk7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN2Z3N0eWxlLT5zZXRTaGFkb3cobV9wYXJlbnRTdHlsZS0+c3ZnU3R5bGUoKS0+c2hh
ZG93KCkgPyBhZG9wdFB0cihuZXcgU2hhZG93RGF0YSgqbV9wYXJlbnRTdHlsZS0+c3ZnU3R5bGUo
KS0+c2hhZG93KCkpKSA6IFBhc3NPd25QdHI8U2hhZG93RGF0YT4oKSk7CiAgICAgICAgICAgICBp
ZiAoaXNJbml0aWFsIHx8IHByaW1pdGl2ZVZhbHVlKSAvLyBpbml0aWFsIHwgbm9uZQotICAgICAg
ICAgICAgICAgIHJldHVybiBzdmdzdHlsZS0+c2V0U2hhZG93KDApOworICAgICAgICAgICAgICAg
IHJldHVybiBzdmdzdHlsZS0+c2V0U2hhZG93KFBhc3NPd25QdHI8U2hhZG93RGF0YT4oKSk7CiAK
ICAgICAgICAgICAgIGlmICghdmFsdWUtPmlzVmFsdWVMaXN0KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtNTYyLDggKzU2Miw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlT
VkdQcm9wZXJ0eSgKICAgICAgICAgICAgIEFTU0VSVCghaXRlbS0+c3ByZWFkKTsKICAgICAgICAg
ICAgIEFTU0VSVCghaXRlbS0+c3R5bGUpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
U2hhZG93RGF0YSogc2hhZG93RGF0YSA9IG5ldyBTaGFkb3dEYXRhKHgsIHksIGJsdXIsIDAsIE5v
cm1hbCwgY29sb3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQpOwotICAg
ICAgICAgICAgc3Znc3R5bGUtPnNldFNoYWRvdyhzaGFkb3dEYXRhKTsKKyAgICAgICAgICAgIHN2
Z3N0eWxlLT5zZXRTaGFkb3coYWRvcHRQdHIobmV3IFNoYWRvd0RhdGEoeCwgeSwgYmx1ciwgMCwg
Tm9ybWFsLCBjb2xvci5pc1ZhbGlkKCkgPyBjb2xvciA6IENvbG9yOjp0cmFuc3BhcmVudCkpKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU1Byb3BlcnR5
VmVjdG9yRWZmZWN0OiB7CkluZGV4OiBXZWJDb3JlL2RvbS9Bc3luY1NjcmlwdFJ1bm5lci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0FzeW5jU2NyaXB0UnVubmVyLmgJKHJldmlzaW9uIDY4
MjgyKQorKysgV2ViQ29yZS9kb20vQXN5bmNTY3JpcHRSdW5uZXIuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNyArNDAsNyBAQCBjbGFzcyBTY3JpcHRFbGVtZW50RGF0YTsKICAgICAKIGNsYXNzIEFz
eW5jU2NyaXB0UnVubmVyIDogcHVibGljIE5vbmNvcHlhYmxlIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxBc3luY1NjcmlwdFJ1bm5lcj4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCkgeyByZXR1cm4gbmV3IEFzeW5jU2NyaXB0UnVubmVyKGRvY3VtZW50KTsgfQorICAgIHN0YXRp
YyBQYXNzT3duUHRyPEFzeW5jU2NyaXB0UnVubmVyPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgQXN5bmNTY3JpcHRSdW5uZXIoZG9jdW1lbnQpKTsgfQog
ICAgIH5Bc3luY1NjcmlwdFJ1bm5lcigpOwogCiAgICAgdm9pZCBleGVjdXRlU2NyaXB0U29vbihT
Y3JpcHRFbGVtZW50RGF0YSosIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFNjcmlwdD4pOwpJ
bmRleDogV2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysg
V2ViQ29yZS9kb20vQ2hlY2tlZFJhZGlvQnV0dG9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDcgKzQyLDcgQEAgdm9pZCBDaGVja2VkUmFkaW9CdXR0b25zOjphZGRCdXR0b24oSFRNTAogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbmFtZVRvQ2hlY2tlZFJhZGlvQnV0dG9uTWFwKQot
ICAgICAgICBtX25hbWVUb0NoZWNrZWRSYWRpb0J1dHRvbk1hcC5zZXQobmV3IE5hbWVUb0lucHV0
TWFwKTsKKyAgICAgICAgbV9uYW1lVG9DaGVja2VkUmFkaW9CdXR0b25NYXAgPSBhZG9wdFB0cihu
ZXcgTmFtZVRvSW5wdXRNYXApOwogCiAgICAgcGFpcjxOYW1lVG9JbnB1dE1hcDo6aXRlcmF0b3Is
IGJvb2w+IHJlc3VsdCA9IG1fbmFtZVRvQ2hlY2tlZFJhZGlvQnV0dG9uTWFwLT5hZGQoZWxlbWVu
dC0+bmFtZSgpLmltcGwoKSwgaW5wdXRFbGVtZW50KTsKICAgICBpZiAocmVzdWx0LnNlY29uZCkK
SW5kZXg6IFdlYkNvcmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0Nyb3NzVGhyZWFkVGFzay5oCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvZG9t
L0Nyb3NzVGhyZWFkVGFzay5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPENyb3NzVGhyZWFkVGFzaz4gY3JlYXRlKE1ldGhv
ZCBtZXRob2QsIFBhcmFtMSBwYXJhbWV0ZXIxKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBD
cm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxKSk7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc093blB0
cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVy
MSwgUGFyYW0yIHBhcmFtZXRlcjIpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IENyb3NzVGhy
ZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIpOworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRl
cjIpKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMjksNyArMTI5LDcgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhv
ZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVy
MykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFy
YW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMyk7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFy
YW1ldGVyMykpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE2NSw3ICsxNjUsNyBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2Qg
bWV0aG9kLCBQYXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJh
bWV0ZXIzLCBQYXJhbTQgcGFyYW1ldGVyNCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ3Jv
c3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywg
cGFyYW1ldGVyNCk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNr
KG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCkp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTIwNCw3ICsyMDQsNyBAQCBwdWJsaWM6CiAKICAgICBz
dGF0aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQ
YXJhbTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQ
YXJhbTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUpCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBh
cmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUpOworICAgICAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IENyb3NzVGhyZWFkVGFzayhtZXRob2QsIHBhcmFtZXRlcjEsIHBhcmFtZXRlcjIsIHBh
cmFtZXRlcjMsIHBhcmFtZXRlcjQsIHBhcmFtZXRlcjUpKTsKICAgICB9CiAKIHByaXZhdGU6CkBA
IC0yNDYsNyArMjQ2LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NU
aHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1ldGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFt
MiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1ldGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFt
NSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1ldGVyNikKICAgICB7Ci0gICAgICAgIHJldHVybiBu
ZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1l
dGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNik7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1l
dGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNikpOwog
ICAgIH0KIAogcHJpdmF0ZToKQEAgLTI5MSw3ICsyOTEsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgUGFzc093blB0cjxDcm9zc1RocmVhZFRhc2s+IGNyZWF0ZShNZXRob2QgbWV0aG9kLCBQYXJh
bTEgcGFyYW1ldGVyMSwgUGFyYW0yIHBhcmFtZXRlcjIsIFBhcmFtMyBwYXJhbWV0ZXIzLCBQYXJh
bTQgcGFyYW1ldGVyNCwgUGFyYW01IHBhcmFtZXRlcjUsIFBhcmFtNiBwYXJhbWV0ZXI2LCBQYXJh
bTcgcGFyYW1ldGVyNykKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ3Jvc3NUaHJlYWRUYXNr
KG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwgcGFyYW1ldGVyMywgcGFyYW1ldGVyNCwg
cGFyYW1ldGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1ldGVyNyk7CisgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgQ3Jvc3NUaHJlYWRUYXNrKG1ldGhvZCwgcGFyYW1ldGVyMSwgcGFyYW1ldGVyMiwg
cGFyYW1ldGVyMywgcGFyYW1ldGVyNCwgcGFyYW1ldGVyNSwgcGFyYW1ldGVyNiwgcGFyYW1ldGVy
NykpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTMzOSw3ICszMzksNyBAQCBwdWJsaWM6CiAgICAg
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q3Jvc3NUaHJlYWRUYXNrPiBjcmVhdGUoTWV0aG9kIG1l
dGhvZCwgUGFyYW0xIHBhcmFtZXRlcjEsIFBhcmFtMiBwYXJhbWV0ZXIyLCBQYXJhbTMgcGFyYW1l
dGVyMywgUGFyYW00IHBhcmFtZXRlcjQsIFBhcmFtNSBwYXJhbWV0ZXI1LCBQYXJhbTYgcGFyYW1l
dGVyNiwgUGFyYW03IHBhcmFtZXRlcjcsIFBhcmFtOCBwYXJhbWV0ZXI4KQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIG5ldyBDcm9zc1RocmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0
ZXIyLCBwYXJhbWV0ZXIzLCBwYXJhbWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2LCBwYXJh
bWV0ZXI3LCBwYXJhbWV0ZXI4KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDcm9zc1Ro
cmVhZFRhc2sobWV0aG9kLCBwYXJhbWV0ZXIxLCBwYXJhbWV0ZXIyLCBwYXJhbWV0ZXIzLCBwYXJh
bWV0ZXI0LCBwYXJhbWV0ZXI1LCBwYXJhbWV0ZXI2LCBwYXJhbWV0ZXI3LCBwYXJhbWV0ZXI4KSk7
CiAgICAgfQogICAgIAogcHJpdmF0ZToKSW5kZXg6IFdlYkNvcmUvZG9tL0RhdGFzZXRET01TdHJp
bmdNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9EYXRhc2V0RE9NU3RyaW5nTWFwLmgJ
KHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9kb20vRGF0YXNldERPTVN0cmluZ01hcC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIERhdGFzZXRET01TdHJpbmdNYXAg
OiBwdWJsaWMgRE9NU3QKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxEYXRhc2V0RE9N
U3RyaW5nTWFwPiBjcmVhdGUoRWxlbWVudCogZWxlbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgRGF0YXNldERPTVN0cmluZ01hcChlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBEYXRhc2V0RE9NU3RyaW5nTWFwKGVsZW1lbnQpKTsKICAgICB9CiAKICAgICB2aXJ0
dWFsIHZvaWQgcmVmKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc5LDkgKzM3OSw2IEBAIERv
Y3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEsKICAgICAsIG1fc2F2ZWRSZW5k
ZXJlcigwKQogICAgICwgbV9kZXNpZ25Nb2RlKGluaGVyaXQpCiAgICAgLCBtX3NlbGZPbmx5UmVm
Q291bnQoMCkKLSNpZiBFTkFCTEUoU1ZHKQotICAgICwgbV9zdmdFeHRlbnNpb25zKDApCi0jZW5k
aWYKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpCiAgICAgLCBtX2hhc0Rhc2hib2FyZFJl
Z2lvbnMoZmFsc2UpCiAgICAgLCBtX2Rhc2hib2FyZFJlZ2lvbnNEaXJ0eShmYWxzZSkKQEAgLTQz
MCw5ICs0MjcsOSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLCiAK
ICAgICBtX2F4T2JqZWN0Q2FjaGUgPSAwOwogCi0gICAgbV9tYXJrZXJzID0gbmV3IERvY3VtZW50
TWFya2VyQ29udHJvbGxlcigpOworICAgIG1fbWFya2VycyA9IGFkb3B0UHRyKG5ldyBEb2N1bWVu
dE1hcmtlckNvbnRyb2xsZXIpOwogCi0gICAgbV9jYWNoZWRSZXNvdXJjZUxvYWRlciA9IG5ldyBD
YWNoZWRSZXNvdXJjZUxvYWRlcih0aGlzKTsKKyAgICBtX2NhY2hlZFJlc291cmNlTG9hZGVyID0g
YWRvcHRQdHIobmV3IENhY2hlZFJlc291cmNlTG9hZGVyKHRoaXMpKTsKIAogICAgIG1fdmlzdWFs
bHlPcmRlcmVkID0gZmFsc2U7CiAgICAgbV9iUGFyc2luZyA9IGZhbHNlOwpAQCAtMTY2Nyw4ICsx
NjY0LDggQEAgdm9pZCBEb2N1bWVudDo6Y3JlYXRlU3R5bGVTZWxlY3RvcigpCiAgICAgYm9vbCBt
YXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgPSB0cnVlOwogICAgIGlmIChTZXR0aW5ncyogZG9jU2V0
dGluZ3MgPSBzZXR0aW5ncygpKQogICAgICAgICBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgPSBk
b2NTZXR0aW5ncy0+YXV0aG9yQW5kVXNlclN0eWxlc0VuYWJsZWQoKTsKLSAgICBtX3N0eWxlU2Vs
ZWN0b3Iuc2V0KG5ldyBDU1NTdHlsZVNlbGVjdG9yKHRoaXMsIG1fc3R5bGVTaGVldHMuZ2V0KCks
IG1fbWFwcGVkRWxlbWVudFNoZWV0LmdldCgpLCBwYWdlVXNlclNoZWV0KCksIHBhZ2VHcm91cFVz
ZXJTaGVldHMoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAhaW5RdWlya3NNb2RlKCksIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykpOworICAgIG1fc3R5
bGVTZWxlY3RvciA9IGFkb3B0UHRyKG5ldyBDU1NTdHlsZVNlbGVjdG9yKHRoaXMsIG1fc3R5bGVT
aGVldHMuZ2V0KCksIG1fbWFwcGVkRWxlbWVudFNoZWV0LmdldCgpLCBwYWdlVXNlclNoZWV0KCks
IHBhZ2VHcm91cFVzZXJTaGVldHMoKSwgCisgICAgICAgICFpblF1aXJrc01vZGUoKSwgbWF0Y2hB
dXRob3JBbmRVc2VyU3R5bGVzKSk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OmF0dGFjaCgpCkBAIC0x
Njc4LDcgKzE2NzUsNyBAQCB2b2lkIERvY3VtZW50OjphdHRhY2goKQogICAgIEFTU0VSVCghbV9h
eE9iamVjdENhY2hlKTsKIAogICAgIGlmICghbV9yZW5kZXJBcmVuYSkKLSAgICAgICAgbV9yZW5k
ZXJBcmVuYSA9IG5ldyBSZW5kZXJBcmVuYSgpOworICAgICAgICBtX3JlbmRlckFyZW5hID0gYWRv
cHRQdHIobmV3IFJlbmRlckFyZW5hKTsKICAgICAKICAgICAvLyBDcmVhdGUgdGhlIHJlbmRlcmlu
ZyB0cmVlCiAgICAgc2V0UmVuZGVyZXIobmV3IChtX3JlbmRlckFyZW5hLmdldCgpKSBSZW5kZXJW
aWV3KHRoaXMsIHZpZXcoKSkpOwpAQCAtMjMxMSw3ICsyMzA4LDcgQEAgY29uc3QgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+KiBEbwogICAgICAgICAgICAgcGFyc2VkU2hlZXQtPnNldElz
VXNlclN0eWxlU2hlZXQoc2hlZXQtPmxldmVsKCkgPT0gVXNlclN0eWxlVXNlckxldmVsKTsKICAg
ICAgICAgICAgIHBhcnNlZFNoZWV0LT5wYXJzZVN0cmluZyhzaGVldC0+c291cmNlKCksICFpblF1
aXJrc01vZGUoKSk7CiAgICAgICAgICAgICBpZiAoIW1fcGFnZUdyb3VwVXNlclNoZWV0cykKLSAg
ICAgICAgICAgICAgICBtX3BhZ2VHcm91cFVzZXJTaGVldHMuc2V0KG5ldyBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+ID4pOworICAgICAgICAgICAgICAgIG1fcGFnZUdyb3VwVXNlclNoZWV0
cyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4pOwogICAgICAg
ICAgICAgbV9wYWdlR3JvdXBVc2VyU2hlZXRzLT5hcHBlbmQocGFyc2VkU2hlZXQucmVsZWFzZSgp
KTsKICAgICAgICAgfQogICAgIH0KSW5kZXg6IFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCShyZXZpc2lvbiA2
ODI4MikKKysrIFdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw4ICs1MSw3IEBAIHN0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFQK
IH0KIAogS2V5Ym9hcmRFdmVudDo6S2V5Ym9hcmRFdmVudCgpCi0gICAgOiBtX2tleUV2ZW50KDAp
Ci0gICAgLCBtX2tleUxvY2F0aW9uKERPTV9LRVlfTE9DQVRJT05fU1RBTkRBUkQpCisgICAgOiBt
X2tleUxvY2F0aW9uKERPTV9LRVlfTE9DQVRJT05fU1RBTkRBUkQpCiAgICAgLCBtX2FsdEdyYXBo
S2V5KGZhbHNlKQogewogfQpAQCAtNjAsNyArNTksNyBAQCBLZXlib2FyZEV2ZW50OjpLZXlib2Fy
ZEV2ZW50KCkKIEtleWJvYXJkRXZlbnQ6OktleWJvYXJkRXZlbnQoY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50JiBrZXksIEFic3RyYWN0VmlldyogdmlldykKICAgICA6IFVJRXZlbnRXaXRoS2V5
U3RhdGUoZXZlbnRUeXBlRm9yS2V5Ym9hcmRFdmVudFR5cGUoa2V5LnR5cGUoKSksCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUsIHZpZXcsIDAsIGtleS5jdHJsS2V5KCksIGtl
eS5hbHRLZXkoKSwga2V5LnNoaWZ0S2V5KCksIGtleS5tZXRhS2V5KCkpCi0gICAgLCBtX2tleUV2
ZW50KG5ldyBQbGF0Zm9ybUtleWJvYXJkRXZlbnQoa2V5KSkKKyAgICAsIG1fa2V5RXZlbnQoYWRv
cHRQdHIobmV3IFBsYXRmb3JtS2V5Ym9hcmRFdmVudChrZXkpKSkKICAgICAsIG1fa2V5SWRlbnRp
ZmllcihrZXkua2V5SWRlbnRpZmllcigpKQogICAgICwgbV9rZXlMb2NhdGlvbihrZXkuaXNLZXlw
YWQoKSA/IERPTV9LRVlfTE9DQVRJT05fTlVNUEFEIDogRE9NX0tFWV9MT0NBVElPTl9TVEFOREFS
RCkgLy8gRklYTUU6IGRpZmZlcmVudGlhdGUgcmlnaHQvbGVmdCwgdG9vCiAgICAgLCBtX2FsdEdy
YXBoS2V5KGZhbHNlKQpAQCAtNzEsNyArNzAsNiBAQCBLZXlib2FyZEV2ZW50OjpLZXlib2FyZEV2
ZW50KGNvbnN0IEF0b21pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyAma2V5SWRlbnRpZmllciwgIHVuc2lnbmVkIGtleUxvY2F0aW9uLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGN0cmxLZXksIGJvb2wgYWx0S2V5LCBib29sIHNoaWZ0S2V5LCBi
b29sIG1ldGFLZXksIGJvb2wgYWx0R3JhcGhLZXkpCiAgICAgOiBVSUV2ZW50V2l0aEtleVN0YXRl
KGV2ZW50VHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCB2aWV3LCAwLCBjdHJsS2V5LCBhbHRL
ZXksIHNoaWZ0S2V5LCBtZXRhS2V5KQotICAgICwgbV9rZXlFdmVudCgwKQogICAgICwgbV9rZXlJ
ZGVudGlmaWVyKGtleUlkZW50aWZpZXIpCiAgICAgLCBtX2tleUxvY2F0aW9uKGtleUxvY2F0aW9u
KQogICAgICwgbV9hbHRHcmFwaEtleShhbHRHcmFwaEtleSkKSW5kZXg6IFdlYkNvcmUvZG9tL01l
c3NhZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNw
cAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03NywxMiArNzcsMTIgQEAgTWVzc2FnZVBvcnQqIE1lc3NhZ2VFdmVudDo6
bWVzc2FnZVBvcnQoKQogCiB2b2lkIE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBib29sIGNhbmNlbGFibGUsIFBh
c3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHJpbmcmIG9yaWdp
biwgY29uc3QgU3RyaW5nJiBsYXN0RXZlbnRJZCwgRE9NV2luZG93KiBzb3VyY2UsIE1lc3NhZ2VQ
b3J0KiBwb3J0KQogewotICAgIE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzID0gMDsKKyAgICBPd25Q
dHI8TWVzc2FnZVBvcnRBcnJheT4gcG9ydHM7CiAgICAgaWYgKHBvcnQpIHsKLSAgICAgICAgcG9y
dHMgPSBuZXcgTWVzc2FnZVBvcnRBcnJheSgpOworICAgICAgICBwb3J0cyA9IGFkb3B0UHRyKG5l
dyBNZXNzYWdlUG9ydEFycmF5KTsKICAgICAgICAgcG9ydHMtPmFwcGVuZChwb3J0KTsKICAgICB9
Ci0gICAgaW5pdE1lc3NhZ2VFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUsIGRhdGEs
IG9yaWdpbiwgbGFzdEV2ZW50SWQsIHNvdXJjZSwgcG9ydHMpOworICAgIGluaXRNZXNzYWdlRXZl
bnQodHlwZSwgY2FuQnViYmxlLCBjYW5jZWxhYmxlLCBkYXRhLCBvcmlnaW4sIGxhc3RFdmVudElk
LCBzb3VyY2UsIHBvcnRzLnJlbGVhc2UoKSk7CiB9CiAKIGJvb2wgTWVzc2FnZUV2ZW50Ojppc01l
c3NhZ2VFdmVudCgpIGNvbnN0IApJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAkocmV2aXNpb24gNjgyODIp
CisrKyBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDgg
KzM5LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogTWVzc2FnZVBvcnQ6Ok1lc3NhZ2VQb3J0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCi0gICAgOiBt
X2VudGFuZ2xlZENoYW5uZWwoMCkKLSAgICAsIG1fc3RhcnRlZChmYWxzZSkKKyAgICA6IG1fc3Rh
cnRlZChmYWxzZSkKICAgICAsIG1fY2xvc2VkKGZhbHNlKQogICAgICwgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KQogewpAQCAtMTk1LDcgKzE5NCw3IEBA
IE1lc3NhZ2VQb3J0KiBNZXNzYWdlUG9ydDo6bG9jYWxseUVudGFuZ2wKIFBhc3NPd25QdHI8TWVz
c2FnZVBvcnRDaGFubmVsQXJyYXk+IE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZVBvcnRzKGNvbnN0
IE1lc3NhZ2VQb3J0QXJyYXkqIHBvcnRzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAo
IXBvcnRzIHx8ICFwb3J0cy0+c2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0
dXJuIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+KCk7CiAKICAgICAvLyBIYXNo
U2V0IHVzZWQgdG8gZWZmaWNpZW50bHkgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgaW4gdGhlIHBhc3Nl
ZC1pbiBhcnJheS4KICAgICBIYXNoU2V0PE1lc3NhZ2VQb3J0Kj4gcG9ydFNldDsKQEAgLTIwNSwz
MyArMjA0LDMzIEBAIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IE1lc3MKICAg
ICAgICAgTWVzc2FnZVBvcnQqIHBvcnQgPSAoKnBvcnRzKVtpXS5nZXQoKTsKICAgICAgICAgaWYg
KCFwb3J0IHx8IHBvcnQtPmlzQ2xvbmVkKCkgfHwgcG9ydFNldC5jb250YWlucyhwb3J0KSkgewog
ICAgICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKLSAgICAgICAgICAgIHJldHVybiAw
OworICAgICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+
KCk7CiAgICAgICAgIH0KICAgICAgICAgcG9ydFNldC5hZGQocG9ydCk7CiAgICAgfQogCiAgICAg
Ly8gUGFzc2VkLWluIHBvcnRzIHBhc3NlZCB2YWxpZGl0eSBjaGVja3MsIHNvIHdlIGNhbiBkaXNl
bnRhbmdsZSB0aGVtLgotICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBwb3J0QXJyYXkgPSBu
ZXcgTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkocG9ydHMtPnNpemUoKSk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpbnQgaSA9IDAgOyBpIDwgcG9ydHMtPnNpemUoKSA7ICsraSkgeworICAgIE93blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gcG9ydEFycmF5ID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQ
b3J0Q2hhbm5lbEFycmF5KHBvcnRzLT5zaXplKCkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
IDsgaSA8IHBvcnRzLT5zaXplKCkgOyArK2kpIHsKICAgICAgICAgT3duUHRyPE1lc3NhZ2VQb3J0
Q2hhbm5lbD4gY2hhbm5lbCA9ICgqcG9ydHMpW2ldLT5kaXNlbnRhbmdsZShlYyk7CiAgICAgICAg
IEFTU0VSVCghZWMpOyAvLyBDYW4ndCBnZW5lcmF0ZSBleGNlcHRpb24gaGVyZSBpZiBwYXNzZWQg
YWJvdmUgY2hlY2tzLgogICAgICAgICAoKnBvcnRBcnJheSlbaV0gPSBjaGFubmVsLnJlbGVhc2Uo
KTsKICAgICB9Ci0gICAgcmV0dXJuIHBvcnRBcnJheTsKKyAgICByZXR1cm4gcG9ydEFycmF5LnJl
bGVhc2UoKTsKIH0KIAogUGFzc093blB0cjxNZXNzYWdlUG9ydEFycmF5PiBNZXNzYWdlUG9ydDo6
ZW50YW5nbGVQb3J0cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzT3duUHRy
PE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsKICAgICBpZiAoIWNoYW5uZWxz
IHx8ICFjaGFubmVscy0+c2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IFBhc3NPd25QdHI8TWVzc2FnZVBvcnRBcnJheT4oKTsKIAotICAgIE1lc3NhZ2VQb3J0QXJyYXkq
IHBvcnRBcnJheSA9IG5ldyBNZXNzYWdlUG9ydEFycmF5KGNoYW5uZWxzLT5zaXplKCkpOwotICAg
IGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY2hhbm5lbHMtPnNpemUoKTsgKytpKSB7Cisg
ICAgT3duUHRyPE1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRBcnJheSA9IGFkb3B0UHRyKG5ldyBNZXNz
YWdlUG9ydEFycmF5KGNoYW5uZWxzLT5zaXplKCkpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgY2hhbm5lbHMtPnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxNZXNzYWdlUG9y
dD4gcG9ydCA9IE1lc3NhZ2VQb3J0OjpjcmVhdGUoY29udGV4dCk7CiAgICAgICAgIHBvcnQtPmVu
dGFuZ2xlKCgqY2hhbm5lbHMpW2ldLnJlbGVhc2UoKSk7CiAgICAgICAgICgqcG9ydEFycmF5KVtp
XSA9IHBvcnQucmVsZWFzZSgpOwogICAgIH0KLSAgICByZXR1cm4gcG9ydEFycmF5OworICAgIHJl
dHVybiBwb3J0QXJyYXkucmVsZWFzZSgpOwogfQogCiBFdmVudFRhcmdldERhdGEqIE1lc3NhZ2VQ
b3J0OjpldmVudFRhcmdldERhdGEoKQpJbmRleDogV2ViQ29yZS9kb20vTWVzc2FnZVBvcnRDaGFu
bmVsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9NZXNzYWdlUG9ydENoYW5uZWwuY3Bw
CShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvZG9tL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQ
YXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbDo6RXZlbnREYXRhPiBNZXNzYWdlUG9ydENoYW5u
ZWw6OkV2ZW50RGF0YTo6Y3JlYXRlKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBt
ZXNzYWdlLCBQYXNzT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKIHsK
LSAgICByZXR1cm4gbmV3IEV2ZW50RGF0YShtZXNzYWdlLCBjaGFubmVscyk7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBFdmVudERhdGEobWVzc2FnZSwgY2hhbm5lbHMpKTsKIH0KIAogTWVzc2Fn
ZVBvcnRDaGFubmVsOjpFdmVudERhdGE6OkV2ZW50RGF0YShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4g
Y2hhbm5lbHMpCkluZGV4OiBXZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Ob2RlUmFyZURhdGEuaAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3Jl
L2RvbS9Ob2RlUmFyZURhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsNyArNTMsNyBAQCBzdHJ1
Y3QgTm9kZUxpc3RzTm9kZURhdGEgOiBOb25jb3B5YWJsZSB7CiAgICAgCiAgICAgc3RhdGljIFBh
c3NPd25QdHI8Tm9kZUxpc3RzTm9kZURhdGE+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IE5vZGVMaXN0c05vZGVEYXRhOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IE5v
ZGVMaXN0c05vZGVEYXRhKTsKICAgICB9CiAgICAgCiAgICAgdm9pZCBpbnZhbGlkYXRlQ2FjaGVz
KCk7CkBAIC0xMDYsNyArMTA2LDcgQEAgcHVibGljOiAgICAKICAgICBFdmVudFRhcmdldERhdGEq
IGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAgICAgewogICAgICAgICBpZiAoIW1fZXZlbnRUYXJn
ZXREYXRhKQotICAgICAgICAgICAgbV9ldmVudFRhcmdldERhdGEuc2V0KG5ldyBFdmVudFRhcmdl
dERhdGEpOworICAgICAgICAgICAgbV9ldmVudFRhcmdldERhdGEgPSBhZG9wdFB0cihuZXcgRXZl
bnRUYXJnZXREYXRhKTsKICAgICAgICAgcmV0dXJuIG1fZXZlbnRUYXJnZXREYXRhLmdldCgpOwog
ICAgIH0KIApJbmRleDogV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCShy
ZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw4ICsxODIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IGNhbGxBbmRSZW1vdmVGaXJzdENhbGxiYWNrKFhNTERvY3VtZW50UGFyc2VyKiBwYXJzZXIpCiAg
ICAgewotICAgICAgICBPd25QdHI8UGVuZGluZ0NhbGxiYWNrPiBjYWxsYmFjayhtX2NhbGxiYWNr
cy50YWtlRmlyc3QoKSk7Ci0gICAgICAgIGNhbGxiYWNrLT5jYWxsKHBhcnNlcik7CisgICAgICAg
IGFkb3B0UHRyKG1fY2FsbGJhY2tzLnRha2VGaXJzdCgpKS0+Y2FsbChwYXJzZXIpOwogICAgIH0K
IAogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tzLmlzRW1wdHko
KTsgfQpAQCAtNTQxLDcgKzU0MCw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBh
cnNlcihEb2MKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKICAgICAs
IG1fdmlldyhmcmFtZVZpZXcpCiAgICAgLCBtX2NvbnRleHQoMCkKLSAgICAsIG1fcGVuZGluZ0Nh
bGxiYWNrcyhuZXcgUGVuZGluZ0NhbGxiYWNrcykKKyAgICAsIG1fcGVuZGluZ0NhbGxiYWNrcyhh
ZG9wdFB0cihuZXcgUGVuZGluZ0NhbGxiYWNrcykpCiAgICAgLCBtX2N1cnJlbnROb2RlKGRvY3Vt
ZW50KQogICAgICwgbV9zYXdFcnJvcihmYWxzZSkKICAgICAsIG1fc2F3WFNMVHJhbnNmb3JtKGZh
bHNlKQpAQCAtNTY4LDcgKzU2Nyw3IEBAIFhNTERvY3VtZW50UGFyc2VyOjpYTUxEb2N1bWVudFBh
cnNlcihEb2MKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC0+ZG9jdW1l
bnQoKSkKICAgICAsIG1fdmlldygwKQogICAgICwgbV9jb250ZXh0KDApCi0gICAgLCBtX3BlbmRp
bmdDYWxsYmFja3MobmV3IFBlbmRpbmdDYWxsYmFja3MpCisgICAgLCBtX3BlbmRpbmdDYWxsYmFj
a3MoYWRvcHRQdHIobmV3IFBlbmRpbmdDYWxsYmFja3MpKQogICAgICwgbV9jdXJyZW50Tm9kZShm
cmFnbWVudCkKICAgICAsIG1fc2F3RXJyb3IoZmFsc2UpCiAgICAgLCBtX3Nhd1hTTFRyYW5zZm9y
bShmYWxzZSkKQEAgLTEzMjIsNyArMTMyMSw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRv
RW5kKCkKICNpZiBFTkFCTEUoWFNMVCkKICAgICBpZiAobV9zYXdYU0xUcmFuc2Zvcm0pIHsKICAg
ICAgICAgdm9pZCogZG9jID0geG1sRG9jUHRyRm9yU3RyaW5nKGRvY3VtZW50KCktPmNhY2hlZFJl
c291cmNlTG9hZGVyKCksIG1fb3JpZ2luYWxTb3VyY2VGb3JUcmFuc2Zvcm0sIGRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0VHJhbnNmb3JtU291cmNl
KG5ldyBUcmFuc2Zvcm1Tb3VyY2UoZG9jKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFRyYW5z
Zm9ybVNvdXJjZShhZG9wdFB0cihuZXcgVHJhbnNmb3JtU291cmNlKGRvYykpKTsKIAogICAgICAg
ICBkb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsgLy8gTWFrZSB0aGUgZG9jIHRoaW5rIGl0
J3MgZG9uZSwgc28gaXQgd2lsbCBhcHBseSB4c2wgc2hlZXRzLgogICAgICAgICBkb2N1bWVudCgp
LT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKSW5kZXg6IFdl
YkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWwuY3Bw
CShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvZG9tL2RlZmF1bHQvUGxhdGZvcm1NZXNzYWdl
UG9ydENoYW5uZWwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIHZvaWQgTWVz
c2FnZVBvcnRDaGFubmVsOjpjcmVhdGVDaGFubmVsKFAKIAogUGFzc093blB0cjxNZXNzYWdlUG9y
dENoYW5uZWw+IE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y3JlYXRlKFBhc3NSZWZQdHI8UGxhdGZvcm1N
ZXNzYWdlUG9ydENoYW5uZWw+IGNoYW5uZWwpCiB7Ci0gICAgcmV0dXJuIG5ldyBNZXNzYWdlUG9y
dENoYW5uZWwoY2hhbm5lbCk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlUG9ydENo
YW5uZWwoY2hhbm5lbCkpOwogfQogCiBNZXNzYWdlUG9ydENoYW5uZWw6Ok1lc3NhZ2VQb3J0Q2hh
bm5lbChQYXNzUmVmUHRyPFBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQpJbmRl
eDogV2ViQ29yZS9oaXN0b3J5L21hYy9IaXN0b3J5SXRlbU1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2hpc3RvcnkvbWFjL0hpc3RvcnlJdGVtTWFjLm1tCShyZXZpc2lvbiA2ODI4MikKKysr
IFdlYkNvcmUvaGlzdG9yeS9tYWMvSGlzdG9yeUl0ZW1NYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTU5LDcgKzU5LDcgQEAgdm9pZCBIaXN0b3J5SXRlbTo6c2V0VHJhbnNpZW50UHJvcGVydHkoYwog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCFtX3RyYW5zaWVudFByb3BlcnRp
ZXMpCi0gICAgICAgICAgICBtX3RyYW5zaWVudFByb3BlcnRpZXMuc2V0KG5ldyBIYXNoTWFwPFN0
cmluZywgUmV0YWluUHRyPGlkPiA+KTsKKyAgICAgICAgICAgIG1fdHJhbnNpZW50UHJvcGVydGll
cyA9IGFkb3B0UHRyKG5ldyBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPGlkPiA+KTsKICAgICAg
ICAgbV90cmFuc2llbnRQcm9wZXJ0aWVzLT5zZXQoa2V5LCB2YWx1ZSk7CiAgICAgfQogfQpJbmRl
eDogV2ViQ29yZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxBcmVhRWxlbWVudC5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9o
dG1sL0hUTUxBcmVhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAK
ICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCiAjaW5jbHVkZSAiUGF0aC5oIgogI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNjIsNyArNjMsNyBAQCB2b2lkIEhUTUxBcmVhRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIGVsc2UgaWYgKGVxdWFsSWdub3JpbmdDYXNl
KGF0dHItPnZhbHVlKCksICJyZWN0IikpCiAgICAgICAgICAgICBtX3NoYXBlID0gUmVjdDsKICAg
ICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBjb29yZHNBdHRyKSB7Ci0gICAgICAgIG1fY29v
cmRzLnNldChuZXdDb29yZHNBcnJheShhdHRyLT52YWx1ZSgpLnN0cmluZygpLCBtX2Nvb3Jkc0xl
bikpOworICAgICAgICBtX2Nvb3JkcyA9IG5ld0Nvb3Jkc0FycmF5KGF0dHItPnZhbHVlKCkuc3Ry
aW5nKCksIG1fY29vcmRzTGVuKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBhbHRB
dHRyIHx8IGF0dHItPm5hbWUoKSA9PSBhY2Nlc3NrZXlBdHRyKSB7CiAgICAgICAgIC8vIERvIG5v
dGhpbmcuCiAgICAgfSBlbHNlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNzMsMTIgKzczLDEyIEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHQKIHsKICAgICBpZiAoYXR0ci0+bmFtZSgpID09IHJvd3NBdHRy
KSB7CiAgICAgICAgIGlmICghYXR0ci0+aXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fcm93TGVu
Z3Rocy5zZXQobmV3TGVuZ3RoQXJyYXkoYXR0ci0+dmFsdWUoKS5zdHJpbmcoKSwgbV90b3RhbFJv
d3MpKTsKKyAgICAgICAgICAgIG1fcm93TGVuZ3RocyA9IG5ld0xlbmd0aEFycmF5KGF0dHItPnZh
bHVlKCkuc3RyaW5nKCksIG1fdG90YWxSb3dzKTsKICAgICAgICAgICAgIHNldE5lZWRzU3R5bGVS
ZWNhbGMoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGNvbHNB
dHRyKSB7CiAgICAgICAgIGlmICghYXR0ci0+aXNOdWxsKCkpIHsKLSAgICAgICAgICAgIG1fY29s
TGVuZ3Rocy5zZXQobmV3TGVuZ3RoQXJyYXkoYXR0ci0+dmFsdWUoKS5zdHJpbmcoKSwgbV90b3Rh
bENvbHMpKTsKKyAgICAgICAgICAgIG1fY29sTGVuZ3RocyA9IG5ld0xlbmd0aEFycmF5KGF0dHIt
PnZhbHVlKCkuc3RyaW5nKCksIG1fdG90YWxDb2xzKTsKICAgICAgICAgICAgIHNldE5lZWRzU3R5
bGVSZWNhbGMoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IGZy
YW1lYm9yZGVyQXR0cikgewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNp
b24gNjgyODIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNiw3ICsxMjYsNiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVt
ZW50KGNvbnN0CiAgICAgLCBtX2xhc3RUaW1lVXBkYXRlRXZlbnRNb3ZpZVRpbWUobnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSkKICAgICAsIG1fbG9hZFN0YXRlKFdhaXRpbmdGb3JTb3VyY2Up
CiAgICAgLCBtX2N1cnJlbnRTb3VyY2VOb2RlKDApCi0gICAgLCBtX3BsYXllcigwKQogI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgICwgbV9wcm94eVdpZGdldCgwKQogI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsOSArOTEsOSBAQCBQYXNzT3duUHRy
PFdlYkdMUmVuZGVyaW5nQ29udGV4dD4gV2ViR0xSCiAgICAgT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoYXR0cnMgPyBhdHRycy0+YXR0
cmlidXRlcygpIDogZW1wdHlBdHRyaWJ1dGVzLCBob3N0V2luZG93KSk7CiAKICAgICBpZiAoIWNv
bnRleHQpCi0gICAgICAgIHJldHVybiAwOwotICAgICAgICAKLSAgICByZXR1cm4gbmV3IFdlYkdM
UmVuZGVyaW5nQ29udGV4dChjYW52YXMsIGNvbnRleHQucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0
dXJuIFBhc3NPd25QdHI8V2ViR0xSZW5kZXJpbmdDb250ZXh0PigpOworCisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBXZWJHTFJlbmRlcmluZ0NvbnRleHQoY2FudmFzLCBjb250ZXh0LnJlbGVhc2Uo
KSkpOwogfQogCiBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OldlYkdMUmVuZGVyaW5nQ29udGV4dChI
VE1MQ2FudmFzRWxlbWVudCogcGFzc2VkQ2FudmFzLCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBjb250ZXh0KQpAQCAtMTE2MSw3ICsxMTYxLDcgQEAgYm9vbCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEF0dGFjaGVkUwogICAgIGludCBudW1TaGFkZXJzID0gMDsKICAgICBtX2NvbnRl
eHQtPmdldFByb2dyYW1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIEdyYXBoaWNzQ29udGV4dDNE
OjpBVFRBQ0hFRF9TSEFERVJTLCAmbnVtU2hhZGVycyk7CiAgICAgaWYgKG51bVNoYWRlcnMpIHsK
LSAgICAgICAgT3duQXJyYXlQdHI8dW5zaWduZWQgaW50PiBzaGFkZXJzKG5ldyB1bnNpZ25lZCBp
bnRbbnVtU2hhZGVyc10pOworICAgICAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBpbnQ+IHNoYWRl
cnMgPSBhZG9wdEFycmF5UHRyKG5ldyB1bnNpZ25lZCBpbnRbbnVtU2hhZGVyc10pOwogICAgICAg
ICBpbnQgY291bnQ7CiAgICAgICAgIG1fY29udGV4dC0+Z2V0QXR0YWNoZWRTaGFkZXJzKG9iamVj
dE9yWmVybyhwcm9ncmFtKSwgbnVtU2hhZGVycywgJmNvdW50LCBzaGFkZXJzLmdldCgpKTsKICAg
ICAgICAgaWYgKGNvdW50ICE9IG51bVNoYWRlcnMpCkBAIC0zNTQ1LDcgKzM1NDUsNyBAQCBib29s
IFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6c2ltdWxhdGVWZXJ0CiAgICAgICAgIHx8IHN0YXRlLnZh
bHVlWzFdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzFdCiAgICAgICAgIHx8IHN0YXRl
LnZhbHVlWzJdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzJdCiAgICAgICAgIHx8IHN0
YXRlLnZhbHVlWzNdICE9IG1fdmVydGV4QXR0cmliMEJ1ZmZlclZhbHVlWzNdKSB7Ci0gICAgICAg
IE93bkFycmF5UHRyPGZsb2F0PiBidWZmZXJEYXRhKG5ldyBmbG9hdFsobnVtVmVydGV4ICsgMSkg
KiA0XSk7CisgICAgICAgIE93bkFycmF5UHRyPGZsb2F0PiBidWZmZXJEYXRhID0gYWRvcHRBcnJh
eVB0cihuZXcgZmxvYXRbKG51bVZlcnRleCArIDEpICogNF0pOwogICAgICAgICBmb3IgKGxvbmcg
aWkgPSAwOyBpaSA8IG51bVZlcnRleCArIDE7ICsraWkpIHsKICAgICAgICAgICAgIGJ1ZmZlckRh
dGFbaWkgKiA0XSA9IHN0YXRlLnZhbHVlWzBdOwogICAgICAgICAgICAgYnVmZmVyRGF0YVtpaSAq
IDQgKyAxXSA9IHN0YXRlLnZhbHVlWzFdOwpAQCAtMzU3NCw3ICszNTc0LDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnJlc3RvcmVTdGF0ZQogfQogCiBXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OkxSVUltYWdlQnVmZmVyQ2FjaGU6OkxSVUltYWdlQnVmZmVyQ2FjaGUoaW50IGNhcGFjaXR5
KQotICAgIDogbV9idWZmZXJzKG5ldyBPd25QdHI8SW1hZ2VCdWZmZXI+W2NhcGFjaXR5XSkKKyAg
ICA6IG1fYnVmZmVycyhhZG9wdEFycmF5UHRyKG5ldyBPd25QdHI8SW1hZ2VCdWZmZXI+W2NhcGFj
aXR5XSkpCiAgICAgLCBtX2NhcGFjaXR5KGNhcGFjaXR5KQogewogfQpJbmRleDogV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBX
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI1MCw3ICsyNTAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cHVtcFRva2VuaXpl
cihTCiAgICAgaWYgKGlzV2FpdGluZ0ZvclNjcmlwdHMoKSkgewogICAgICAgICBBU1NFUlQobV90
b2tlbml6ZXItPnN0YXRlKCkgPT0gSFRNTFRva2VuaXplcjo6RGF0YVN0YXRlKTsKICAgICAgICAg
aWYgKCFtX3ByZWxvYWRTY2FubmVyKSB7Ci0gICAgICAgICAgICBtX3ByZWxvYWRTY2FubmVyLnNl
dChuZXcgSFRNTFByZWxvYWRTY2FubmVyKGRvY3VtZW50KCkpKTsKKyAgICAgICAgICAgIG1fcHJl
bG9hZFNjYW5uZXIgPSBhZG9wdFB0cihuZXcgSFRNTFByZWxvYWRTY2FubmVyKGRvY3VtZW50KCkp
KTsKICAgICAgICAgICAgIG1fcHJlbG9hZFNjYW5uZXItPmFwcGVuZFRvRW5kKG1faW5wdXQuY3Vy
cmVudCgpKTsKICAgICAgICAgfQogICAgICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2FuKCk7Cklu
ZGV4OiBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
NjgyODIpCisrKyBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTYwLDcgKzE2MCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3Bl
Y3RvckNvbnRyb2xsZXIKICAgICA6IG1faW5zcGVjdGVkUGFnZShwYWdlKQogICAgICwgbV9jbGll
bnQoY2xpZW50KQogICAgICwgbV9vcGVuaW5nRnJvbnRlbmQoZmFsc2UpCi0gICAgLCBtX2Nzc1N0
b3JlKG5ldyBJbnNwZWN0b3JDU1NTdG9yZSh0aGlzKSkKKyAgICAsIG1fY3NzU3RvcmUoYWRvcHRQ
dHIobmV3IEluc3BlY3RvckNTU1N0b3JlKHRoaXMpKSkKICAgICAsIG1fZXhwaXJlZENvbnNvbGVN
ZXNzYWdlQ291bnQoMCkKICAgICAsIG1fc2hvd0FmdGVyVmlzaWJsZShsYXN0QWN0aXZlUGFuZWwp
CiAgICAgLCBtX3Nlc3Npb25TZXR0aW5ncyhJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKQpAQCAt
MTcxLDcgKzE3MSw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIK
ICAgICAsIG1fcmVzb3VyY2VUcmFja2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3NldHRpbmdz
TG9hZGVkKGZhbHNlKQogICAgICwgbV9pbnNwZWN0b3JCYWNrZW5kKEluc3BlY3RvckJhY2tlbmQ6
OmNyZWF0ZSh0aGlzKSkKLSAgICAsIG1faW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIobmV3IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKHRoaXMpKQorICAgICwgbV9pbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hlcihhZG9wdFB0cihuZXcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIodGhpcykp
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdEhvc3QoSW5qZWN0ZWRTY3JpcHRIb3N0OjpjcmVhdGUo
dGhpcykpCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgLCBtX2F0dGFjaERl
YnVnZ2VyV2hlblNob3duKGZhbHNlKQpAQCAtMzYxLDcgKzM2MSw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ28KICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBz
dG9yZVN0YWNrVHJhY2UgPSB0eXBlID09IFRyYWNlTWVzc2FnZVR5cGUgfHwgdHlwZSA9PSBVbmNh
dWdodEV4Y2VwdGlvbk1lc3NhZ2VUeXBlIHx8IHR5cGUgPT0gQXNzZXJ0TWVzc2FnZVR5cGU7Ci0g
ICAgYWRkQ29uc29sZU1lc3NhZ2UoY2FsbFN0YWNrLT5zdGF0ZSgpLCBuZXcgQ29uc29sZU1lc3Nh
Z2Uoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCBtX2dyb3VwTGV2ZWws
IHN0b3JlU3RhY2tUcmFjZSkpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKGNhbGxTdGFjay0+c3Rh
dGUoKSwgYWRvcHRQdHIobmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2UsIGNhbGxTdGFjaywgbV9ncm91cExldmVsLCBzdG9yZVN0YWNrVHJhY2UpKSk7CiB9CiAK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291
cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNl
SUQpCkBAIC0zNjksNyArMzY5LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjphZGRNZXNz
YWdlVG9DbwogICAgIGlmICghZW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhZGRD
b25zb2xlTWVzc2FnZSgwLCBuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCB0eXBlLCBsZXZlbCwg
bWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlSUQsIG1fZ3JvdXBMZXZlbCkpOworICAgIGFkZENv
bnNvbGVNZXNzYWdlKDAsIGFkb3B0UHRyKG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3VyY2VJRCwgbV9ncm91cExldmVsKSkpOwog
fQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmFkZENvbnNvbGVNZXNzYWdlKFNjcmlwdFN0
YXRlKiBzY3JpcHRTdGF0ZSwgUGFzc093blB0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3Nh
Z2UpCkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydEdy
b3VwKE1lcwogewogICAgICsrbV9ncm91cExldmVsOwogCi0gICAgYWRkQ29uc29sZU1lc3NhZ2Uo
Y2FsbFN0YWNrLT5zdGF0ZSgpLCBuZXcgQ29uc29sZU1lc3NhZ2Uoc291cmNlLCBjb2xsYXBzZWQg
PyBTdGFydEdyb3VwQ29sbGFwc2VkTWVzc2FnZVR5cGUgOiBTdGFydEdyb3VwTWVzc2FnZVR5cGUs
IExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGNhbGxTdGFjaywgbV9ncm91cExldmVsKSk7Cisg
ICAgYWRkQ29uc29sZU1lc3NhZ2UoY2FsbFN0YWNrLT5zdGF0ZSgpLCBhZG9wdFB0cihuZXcgQ29u
c29sZU1lc3NhZ2Uoc291cmNlLCBjb2xsYXBzZWQgPyBTdGFydEdyb3VwQ29sbGFwc2VkTWVzc2Fn
ZVR5cGUgOiBTdGFydEdyb3VwTWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCks
IGNhbGxTdGFjaywgbV9ncm91cExldmVsKSkpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xs
ZXI6OmVuZEdyb3VwKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OmVuZEdyb3VwKE1lc3NhCiAKICAgICAtLW1fZ3JvdXBMZXZlbDsKIAotICAg
IGFkZENvbnNvbGVNZXNzYWdlKDAsIG5ldyBDb25zb2xlTWVzc2FnZShzb3VyY2UsIEVuZEdyb3Vw
TWVzc2FnZVR5cGUsIExvZ01lc3NhZ2VMZXZlbCwgU3RyaW5nKCksIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCwgbV9ncm91cExldmVsKSk7CisgICAgYWRkQ29uc29sZU1lc3NhZ2UoMCwgYWRvcHRQdHIo
bmV3IENvbnNvbGVNZXNzYWdlKHNvdXJjZSwgRW5kR3JvdXBNZXNzYWdlVHlwZSwgTG9nTWVzc2Fn
ZUxldmVsLCBTdHJpbmcoKSwgbGluZU51bWJlciwgc291cmNlVVJMLCBtX2dyb3VwTGV2ZWwpKSk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6bWFya1RpbWVsaW5lKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKQEAgLTUxOSw3ICs1MTksNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmNvbm5lY3RGcm9udGVuCiB7CiAgICAgbV9vcGVuaW5nRnJvbnRlbmQgPSBmYWxzZTsKICAgICBy
ZWxlYXNlRnJvbnRlbmRMaWZldGltZUFnZW50cygpOwotICAgIG1fZnJvbnRlbmQgPSBuZXcgSW5z
cGVjdG9yRnJvbnRlbmQobV9jbGllbnQpOworICAgIG1fZnJvbnRlbmQgPSBhZG9wdFB0cihuZXcg
SW5zcGVjdG9yRnJvbnRlbmQobV9jbGllbnQpKTsKICAgICBtX2RvbUFnZW50ID0gSW5zcGVjdG9y
RE9NQWdlbnQ6OmNyZWF0ZShtX2Nzc1N0b3JlLmdldCgpLCBtX2Zyb250ZW5kLmdldCgpKTsKIAog
I2lmIEVOQUJMRShEQVRBQkFTRSkKQEAgLTUzMyw3ICs1MzMsNyBAQCB2b2lkIEluc3BlY3RvckNv
bnRyb2xsZXI6OmNvbm5lY3RGcm9udGVuCiAgICAgbV9mcm9udGVuZC0+aW5zcGVjdGVkVVJMQ2hh
bmdlZChtX2luc3BlY3RlZFBhZ2UtPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5n
KCkpOwogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKLSAgICBtX2FwcGxp
Y2F0aW9uQ2FjaGVBZ2VudCA9IG5ldyBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQodGhp
cywgbV9mcm9udGVuZC5nZXQoKSk7CisgICAgbV9hcHBsaWNhdGlvbkNhY2hlQWdlbnQgPSBhZG9w
dFB0cihuZXcgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50KHRoaXMsIG1fZnJvbnRlbmQu
Z2V0KCkpKTsKICNlbmRpZgogCiAgICAgaWYgKCFjb25uZWN0ZWRGcm9udGVuZENvdW50KQpAQCAt
MTIxNiw3ICsxMjE2LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdGFydFRpbWVsaW5l
UAogICAgIGlmIChtX3RpbWVsaW5lQWdlbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGlt
ZWxpbmVBZ2VudCA9IG5ldyBJbnNwZWN0b3JUaW1lbGluZUFnZW50KG1fZnJvbnRlbmQuZ2V0KCkp
OworICAgIG1fdGltZWxpbmVBZ2VudCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KG1fZnJvbnRlbmQuZ2V0KCkpKTsKICAgICBpZiAobV9mcm9udGVuZCkKICAgICAgICAgbV9m
cm9udGVuZC0+dGltZWxpbmVQcm9maWxlcldhc1N0YXJ0ZWQoKTsKIApAQCAtMTIzMSw3ICsxMjMx
LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVGltZWxpbmVQcgogICAgIGlmICgh
bV90aW1lbGluZUFnZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RpbWVsaW5lQWdlbnQg
PSAwOworICAgIG1fdGltZWxpbmVBZ2VudC5jbGVhcigpOwogICAgIGlmIChtX2Zyb250ZW5kKQog
ICAgICAgICBtX2Zyb250ZW5kLT50aW1lbGluZVByb2ZpbGVyV2FzU3RvcHBlZCgpOwogCkBAIC0x
MjQzLDcgKzEyNDMsNyBAQCBjbGFzcyBQb3N0V29ya2VyTm90aWZpY2F0aW9uVG9Gcm9udGVuZFRh
CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UG9zdFdvcmtlck5vdGlmaWNhdGlvblRv
RnJvbnRlbmRUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxJbnNwZWN0b3JXb3JrZXJSZXNvdXJjZT4g
d29ya2VyLCBJbnNwZWN0b3JDb250cm9sbGVyOjpXb3JrZXJBY3Rpb24gYWN0aW9uKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIG5ldyBQb3N0V29ya2VyTm90aWZpY2F0aW9uVG9Gcm9udGVuZFRhc2so
d29ya2VyLCBhY3Rpb24pOworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFBvc3RXb3JrZXJO
b3RpZmljYXRpb25Ub0Zyb250ZW5kVGFzayh3b3JrZXIsIGFjdGlvbikpOwogICAgIH0KIAogcHJp
dmF0ZToKSW5kZXg6IFdlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZS5jcHAJKHJldmlz
aW9uIDY4MjgyKQorKysgV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZTo6
dXBkYXRlV2ViU29ja2V0UgogewogICAgIG1fcmVxdWVzdEhlYWRlckZpZWxkcyA9IHJlcXVlc3Qu
aGVhZGVyRmllbGRzKCk7CiAgICAgbV9yZXF1ZXN0TWV0aG9kID0gIkdFVCI7IC8vIEN1cnJlbnRs
eSB3ZSBhbHdheXMgdXNlICJHRVQiIHRvIHJlcXVlc3QgaGFuZHNoYWtlLgotICAgIG1fd2ViU29j
a2V0UmVxdWVzdEtleTMuc2V0KG5ldyBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpLZXkzKHJl
cXVlc3Qua2V5MygpKSk7CisgICAgbV93ZWJTb2NrZXRSZXF1ZXN0S2V5MyA9IGFkb3B0UHRyKG5l
dyBXZWJTb2NrZXRIYW5kc2hha2VSZXF1ZXN0OjpLZXkzKHJlcXVlc3Qua2V5MygpKSk7CiAgICAg
bV9jaGFuZ2VzLnNldChSZXF1ZXN0Q2hhbmdlKTsKICAgICBtX2NoYW5nZXMuc2V0KFR5cGVDaGFu
Z2UpOwogfQpAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2U6OnVwZGF0
ZVdlYlNvY2tldFIKICAgICBtX3Jlc3BvbnNlU3RhdHVzQ29kZSA9IHJlc3BvbnNlLnN0YXR1c0Nv
ZGUoKTsKICAgICBtX3Jlc3BvbnNlU3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQoKTsK
ICAgICBtX3Jlc3BvbnNlSGVhZGVyRmllbGRzID0gcmVzcG9uc2UuaGVhZGVyRmllbGRzKCk7Ci0g
ICAgbV93ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZS5zZXQobmV3IFdlYlNvY2tldEhhbmRzaGFr
ZVJlc3BvbnNlOjpDaGFsbGVuZ2VSZXNwb25zZShyZXNwb25zZS5jaGFsbGVuZ2VSZXNwb25zZSgp
KSk7CisgICAgbV93ZWJTb2NrZXRDaGFsbGVuZ2VSZXNwb25zZSA9IGFkb3B0UHRyKG5ldyBXZWJT
b2NrZXRIYW5kc2hha2VSZXNwb25zZTo6Q2hhbGxlbmdlUmVzcG9uc2UocmVzcG9uc2UuY2hhbGxl
bmdlUmVzcG9uc2UoKSkpOwogICAgIG1fY2hhbmdlcy5zZXQoUmVzcG9uc2VDaGFuZ2UpOwogICAg
IG1fY2hhbmdlcy5zZXQoVHlwZUNoYW5nZSk7CiB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAx
LDcgKzMwMSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpwcmVmbGlnaHQKIAog
dm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OnByZWZsaWdodEZhaWx1cmUoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZXJyb3JEZXNjcmlwdGlvbikKIHsKLSAgICBtX2FjdHVh
bFJlcXVlc3QgPSAwOyAvLyBQcmV2ZW50IGRpZEZpbmlzaExvYWRpbmcoKSBmcm9tIGJ5cGFzc2lu
ZyBhY2Nlc3MgY2hlY2suCisgICAgbV9hY3R1YWxSZXF1ZXN0LmNsZWFyKCk7IC8vIFByZXZlbnQg
ZGlkRmluaXNoTG9hZGluZygpIGZyb20gYnlwYXNzaW5nIGFjY2VzcyBjaGVjay4KICAgICBtX2Ns
aWVudC0+ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAs
IHVybCwgZXJyb3JEZXNjcmlwdGlvbikpOwogfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9pY29u
L0ljb25EYXRhYmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
RGF0YWJhc2UuY3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkRhdGFiYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzOSw3ICsxODM5LDcgQEAgaW5saW5l
IHZvaWQgcmVhZHlTUUxpdGVTdGF0ZW1lbnQoT3duUHRyPAogICAgIGlmIChzdGF0ZW1lbnQgJiYg
KHN0YXRlbWVudC0+ZGF0YWJhc2UoKSAhPSAmZGIgfHwgc3RhdGVtZW50LT5pc0V4cGlyZWQoKSkp
IHsKICAgICAgICAgaWYgKHN0YXRlbWVudC0+aXNFeHBpcmVkKCkpCiAgICAgICAgICAgICBMT0co
SWNvbkRhdGFiYXNlLCAiU1FMaXRlU3RhdGVtZW50IGFzc29jaWF0ZWQgd2l0aCAlcyBpcyBleHBp
cmVkIiwgc3RyLmFzY2lpKCkuZGF0YSgpKTsKLSAgICAgICAgc3RhdGVtZW50LnNldCgwKTsKKyAg
ICAgICAgc3RhdGVtZW50LmNsZWFyKCk7CiAgICAgfQogICAgIGlmICghc3RhdGVtZW50KSB7CiAg
ICAgICAgIHN0YXRlbWVudCA9IGFkb3B0UHRyKG5ldyBTUUxpdGVTdGF0ZW1lbnQoZGIsIHN0cikp
OwpJbmRleDogV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDY4
MjgyKQorKysgV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY3LDcgKzY3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogQ29udGV4dE1lbnVD
b250cm9sbGVyOjpDb250ZXh0TWVudUNvbnRyb2xsZXIoUGFnZSogcGFnZSwgQ29udGV4dE1lbnVD
bGllbnQqIGNsaWVudCkKICAgICA6IG1fcGFnZShwYWdlKQogICAgICwgbV9jbGllbnQoY2xpZW50
KQotICAgICwgbV9jb250ZXh0TWVudSgwKQogewogICAgIEFTU0VSVF9BUkcocGFnZSwgcGFnZSk7
CiAgICAgQVNTRVJUX0FSRyhjbGllbnQsIGNsaWVudCk7CkBAIC04MCw3ICs3OSw3IEBAIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6fkNvbnRleHRNZW51Q29udHIKIAogdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OmNsZWFyQ29udGV4dE1lbnUoKQogewotICAgIG1fY29udGV4dE1lbnUuc2V0KDAp
OworICAgIG1fY29udGV4dE1lbnUuY2xlYXIoKTsKICAgICBpZiAobV9tZW51UHJvdmlkZXIpCiAg
ICAgICAgIG1fbWVudVByb3ZpZGVyLT5jb250ZXh0TWVudUNsZWFyZWQoKTsKICAgICBtX21lbnVQ
cm92aWRlciA9IDA7CkBAIC04OCw3ICs4Nyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVy
OjpjbGVhckNvbnRleHQKIAogdm9pZCBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmhhbmRsZUNvbnRl
eHRNZW51RXZlbnQoRXZlbnQqIGV2ZW50KQogewotICAgIG1fY29udGV4dE1lbnUuc2V0KGNyZWF0
ZUNvbnRleHRNZW51KGV2ZW50KSk7CisgICAgbV9jb250ZXh0TWVudSA9IGNyZWF0ZUNvbnRleHRN
ZW51KGV2ZW50KTsKICAgICBpZiAoIW1fY29udGV4dE1lbnUpCiAgICAgICAgIHJldHVybjsKICAg
ICBtX2NvbnRleHRNZW51LT5wb3B1bGF0ZSgpOwpAQCAtOTksNyArOTgsNyBAQCB2b2lkIENvbnRl
eHRNZW51Q29udHJvbGxlcjo6c2hvd0NvbnRleHRNCiB7CiAgICAgbV9tZW51UHJvdmlkZXIgPSBt
ZW51UHJvdmlkZXI7CiAKLSAgICBtX2NvbnRleHRNZW51LnNldChjcmVhdGVDb250ZXh0TWVudShl
dmVudCkpOworICAgIG1fY29udGV4dE1lbnUgPSBjcmVhdGVDb250ZXh0TWVudShldmVudCk7CiAg
ICAgaWYgKCFtX2NvbnRleHRNZW51KSB7CiAgICAgICAgIGNsZWFyQ29udGV4dE1lbnUoKTsKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTA5LDEwICsxMDgsMTAgQEAgdm9pZCBDb250ZXh0TWVudUNvbnRy
b2xsZXI6OnNob3dDb250ZXh0TQogICAgIHNob3dDb250ZXh0TWVudShldmVudCk7CiB9CiAKLUNv
bnRleHRNZW51KiBDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNyZWF0ZUNvbnRleHRNZW51KEV2ZW50
KiBldmVudCkKK1Bhc3NPd25QdHI8Q29udGV4dE1lbnU+IENvbnRleHRNZW51Q29udHJvbGxlcjo6
Y3JlYXRlQ29udGV4dE1lbnUoRXZlbnQqIGV2ZW50KQogewogICAgaWYgKCFldmVudC0+aXNNb3Vz
ZUV2ZW50KCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gUGFzc093blB0cjxD
b250ZXh0TWVudT4oKTsKICAgICBNb3VzZUV2ZW50KiBtb3VzZUV2ZW50ID0gc3RhdGljX2Nhc3Q8
TW91c2VFdmVudCo+KGV2ZW50KTsKICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtb3VzZUV2ZW50
LT5hYnNvbHV0ZUxvY2F0aW9uKCkpOwogCkBAIC0xMjAsOCArMTE5LDggQEAgQ29udGV4dE1lbnUq
IENvbnRleHRNZW51Q29udHJvbGxlcjo6Y3JlYQogICAgICAgICByZXN1bHQgPSBmcmFtZS0+ZXZl
bnRIYW5kbGVyKCktPmhpdFRlc3RSZXN1bHRBdFBvaW50KG1vdXNlRXZlbnQtPmFic29sdXRlTG9j
YXRpb24oKSwgZmFsc2UpOwogCiAgICAgaWYgKCFyZXN1bHQuaW5uZXJOb25TaGFyZWROb2RlKCkp
Ci0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBuZXcgQ29udGV4dE1lbnUocmVzdWx0KTsK
KyAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8Q29udGV4dE1lbnU+KCk7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBDb250ZXh0TWVudShyZXN1bHQpKTsKIH0KIAogdm9pZCBDb250ZXh0TWVudUNv
bnRyb2xsZXI6OnNob3dDb250ZXh0TWVudShFdmVudCogZXZlbnQpCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nv
bnRleHRNZW51Q29udHJvbGxlci5oCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvcGFnZS9D
b250ZXh0TWVudUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOSArMjYsOSBAQAog
I2lmbmRlZiBDb250ZXh0TWVudUNvbnRyb2xsZXJfaAogI2RlZmluZSBDb250ZXh0TWVudUNvbnRy
b2xsZXJfaAogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAg
LTU2LDcgKzU2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGNvbnRleHRN
ZW51SXRlbVNlbGVjdGVkKENvbnRleHRNZW51SXRlbSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgQ29udGV4dE1lbnUqIGNyZWF0ZUNvbnRleHRNZW51KEV2ZW50Kik7CisgICAgICAgIFBhc3NP
d25QdHI8Q29udGV4dE1lbnU+IGNyZWF0ZUNvbnRleHRNZW51KEV2ZW50Kik7CiAgICAgICAgIHZv
aWQgc2hvd0NvbnRleHRNZW51KEV2ZW50Kik7CiAKICAgICAgICAgUGFnZSogbV9wYWdlOwpJbmRl
eDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsxMjMsNyBAQCBwdWJsaWM6CiBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBmaXJlZCgpCiAgICAgewotICAgICAgICBtX3dpbmRvdy0+cG9z
dE1lc3NhZ2VUaW1lckZpcmVkKHRoaXMpOworICAgICAgICBtX3dpbmRvdy0+cG9zdE1lc3NhZ2VU
aW1lckZpcmVkKGFkb3B0UHRyKHRoaXMpKTsKICAgICB9CiAKICAgICBSZWZQdHI8RE9NV2luZG93
PiBtX3dpbmRvdzsKQEAgLTc3NiwxNCArNzc2LDExIEBAIHZvaWQgRE9NV2luZG93Ojpwb3N0TWVz
c2FnZShQYXNzUmVmUHRyPFMKICAgICBTdHJpbmcgc291cmNlT3JpZ2luID0gc291cmNlRG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7CiAKICAgICAvLyBTY2hlZHVsZSB0aGUg
bWVzc2FnZS4KLSAgICBQb3N0TWVzc2FnZVRpbWVyKiB0aW1lciA9IG5ldyBQb3N0TWVzc2FnZVRp
bWVyKHRoaXMsIG1lc3NhZ2UsIHNvdXJjZU9yaWdpbiwgc291cmNlLCBjaGFubmVscy5yZWxlYXNl
KCksIHRhcmdldC5nZXQoKSk7Ci0gICAgdGltZXItPnN0YXJ0T25lU2hvdCgwKTsKKyAgICBhZG9w
dFB0cihuZXcgUG9zdE1lc3NhZ2VUaW1lcih0aGlzLCBtZXNzYWdlLCBzb3VyY2VPcmlnaW4sIHNv
dXJjZSwgY2hhbm5lbHMucmVsZWFzZSgpLCB0YXJnZXQuZ2V0KCkpKS5sZWFrUHRyKCktPnN0YXJ0
T25lU2hvdCgwKTsKIH0KIAotdm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJlZChQ
b3N0TWVzc2FnZVRpbWVyKiB0KQordm9pZCBET01XaW5kb3c6OnBvc3RNZXNzYWdlVGltZXJGaXJl
ZChQYXNzT3duUHRyPFBvc3RNZXNzYWdlVGltZXI+IHRpbWVyKQogewotICAgIE93blB0cjxQb3N0
TWVzc2FnZVRpbWVyPiB0aW1lcih0KTsKLQogICAgIGlmICghZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuaAkod29ya2luZyBjb3B5KQpAQCAtMjUwLDcgKzI1MCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRBcnJheSosIGNvbnN0IFN0
cmluZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoaXMgd2hlbiB3ZSB1cGRhdGUgdGhlIE9iakMgYmlu
ZGluZ3MgKGJ1ZyAjMjg3NzQpLgogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKFBhc3NSZWZQdHI8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdlLCBNZXNzYWdlUG9ydCosIGNvbnN0IFN0cmlu
ZyYgdGFyZ2V0T3JpZ2luLCBET01XaW5kb3cqIHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwotICAg
ICAgICB2b2lkIHBvc3RNZXNzYWdlVGltZXJGaXJlZChQb3N0TWVzc2FnZVRpbWVyKik7CisgICAg
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUaW1lckZpcmVkKFBhc3NPd25QdHI8UG9zdE1lc3NhZ2VUaW1l
cj4pOwogCiAgICAgICAgIHZvaWQgc2Nyb2xsQnkoaW50IHgsIGludCB5KSBjb25zdDsKICAgICAg
ICAgdm9pZCBzY3JvbGxUbyhpbnQgeCwgaW50IHkpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lv
biA2ODI4MikKKysrIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMw
NCw3ICszMDQsNyBAQCBTZXR0aW5ncyogRnJhbWU6OnNldHRpbmdzKCkgY29uc3QKICAgICByZXR1
cm4gbV9wYWdlID8gbV9wYWdlLT5zZXR0aW5ncygpIDogMDsKIH0KIAotc3RhdGljIFJlZ3VsYXJF
eHByZXNzaW9uKiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxh
YmVscykKK3N0YXRpYyBQYXNzT3duUHRyPFJlZ3VsYXJFeHByZXNzaW9uPiBjcmVhdGVSZWdFeHBG
b3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIGxhYmVscykKIHsKICAgICAvLyBSRVZJRVct
IHZlcnNpb24gb2YgdGhpcyBjYWxsIGluIEZyYW1lTWFjLm1tIGNhY2hlcyBiYXNlZCBvbiB0aGUg
TlNBcnJheSBwdHJzIGJlaW5nCiAgICAgLy8gdGhlIHNhbWUgYWNyb3NzIGNhbGxzLiAgV2UgY2Fu
J3QgZG8gdGhhdC4KQEAgLTMzNSw3ICszMzUsNyBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24q
IGNyZWF0ZVJlZ0V4cEZvCiAgICAgICAgICAgICBwYXR0ZXJuLmFwcGVuZCgiXFxiIik7CiAgICAg
fQogICAgIHBhdHRlcm4uYXBwZW5kKCIpIik7Ci0gICAgcmV0dXJuIG5ldyBSZWd1bGFyRXhwcmVz
c2lvbihwYXR0ZXJuLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKTsKKyAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFJlZ3VsYXJFeHByZXNzaW9uKHBhdHRlcm4sIFRleHRDYXNlSW5zZW5zaXRpdmUpKTsKIH0K
IAogU3RyaW5nIEZyYW1lOjpzZWFyY2hGb3JMYWJlbHNBYm92ZUNlbGwoUmVndWxhckV4cHJlc3Np
b24qIHJlZ0V4cCwgSFRNTFRhYmxlQ2VsbEVsZW1lbnQqIGNlbGwsIHNpemVfdCogcmVzdWx0RGlz
dGFuY2VGcm9tU3RhcnRPZkNlbGwpCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gNjgyODIp
CisrKyBXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUxLDcg
Kzg1MSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUKIHZvaWQg
RnJhbWVWaWV3OjphZGRXaWRnZXRUb1VwZGF0ZShSZW5kZXJFbWJlZGRlZE9iamVjdCogb2JqZWN0
KQogewogICAgIGlmICghbV93aWRnZXRVcGRhdGVTZXQpCi0gICAgICAgIG1fd2lkZ2V0VXBkYXRl
U2V0LnNldChuZXcgUmVuZGVyRW1iZWRkZWRPYmplY3RTZXQpOworICAgICAgICBtX3dpZGdldFVw
ZGF0ZVNldCA9IGFkb3B0UHRyKG5ldyBSZW5kZXJFbWJlZGRlZE9iamVjdFNldCk7CiAKICAgICBt
X3dpZGdldFVwZGF0ZVNldC0+YWRkKG9iamVjdCk7CiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJ
KHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjE5LDcgKzIxOSw3IEBAIEdlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbihGcmFt
ZSogZnJhbWUpCiAgICAgLCBtX3NlcnZpY2UoR2VvbG9jYXRpb25TZXJ2aWNlOjpjcmVhdGUodGhp
cykpCiAjZW5kaWYKICAgICAsIG1fYWxsb3dHZW9sb2NhdGlvbihVbmtub3duKQotICAgICwgbV9w
b3NpdGlvbkNhY2hlKG5ldyBHZW9sb2NhdGlvblBvc2l0aW9uQ2FjaGUpCisgICAgLCBtX3Bvc2l0
aW9uQ2FjaGUoYWRvcHRQdHIobmV3IEdlb2xvY2F0aW9uUG9zaXRpb25DYWNoZSkpCiB7CiAgICAg
aWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CkluZGV4OiBXZWJDb3JlL3BhZ2UvUGFnZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShyZXZpc2lvbiA2ODI4MikK
KysrIFdlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDIwICsxMjYs
MjAgQEAgc3RhdGljIHZvaWQgbmV0d29ya1N0YXRlQ2hhbmdlZCgpCiB9CiAKIFBhZ2U6OlBhZ2Uo
Y29uc3QgUGFnZUNsaWVudHMmIHBhZ2VDbGllbnRzKQotICAgIDogbV9jaHJvbWUobmV3IENocm9t
ZSh0aGlzLCBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQpKQotICAgICwgbV9kcmFnQ2FyZXRDb250
cm9sbGVyKG5ldyBTZWxlY3Rpb25Db250cm9sbGVyKDAsIHRydWUpKQorICAgIDogbV9jaHJvbWUo
YWRvcHRQdHIobmV3IENocm9tZSh0aGlzLCBwYWdlQ2xpZW50cy5jaHJvbWVDbGllbnQpKSkKKyAg
ICAsIG1fZHJhZ0NhcmV0Q29udHJvbGxlcihhZG9wdFB0cihuZXcgU2VsZWN0aW9uQ29udHJvbGxl
cigwLCB0cnVlKSkpCiAjaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAgICAsIG1fZHJhZ0NvbnRy
b2xsZXIobmV3IERyYWdDb250cm9sbGVyKHRoaXMsIHBhZ2VDbGllbnRzLmRyYWdDbGllbnQpKQor
ICAgICwgbV9kcmFnQ29udHJvbGxlcihhZG9wdFB0cihuZXcgRHJhZ0NvbnRyb2xsZXIodGhpcywg
cGFnZUNsaWVudHMuZHJhZ0NsaWVudCkpKQogI2VuZGlmCi0gICAgLCBtX2ZvY3VzQ29udHJvbGxl
cihuZXcgRm9jdXNDb250cm9sbGVyKHRoaXMpKQorICAgICwgbV9mb2N1c0NvbnRyb2xsZXIoYWRv
cHRQdHIobmV3IEZvY3VzQ29udHJvbGxlcih0aGlzKSkpCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVO
VVMpCi0gICAgLCBtX2NvbnRleHRNZW51Q29udHJvbGxlcihuZXcgQ29udGV4dE1lbnVDb250cm9s
bGVyKHRoaXMsIHBhZ2VDbGllbnRzLmNvbnRleHRNZW51Q2xpZW50KSkKKyAgICAsIG1fY29udGV4
dE1lbnVDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBDb250ZXh0TWVudUNvbnRyb2xsZXIodGhpcywg
cGFnZUNsaWVudHMuY29udGV4dE1lbnVDbGllbnQpKSkKICNlbmRpZgogI2lmIEVOQUJMRShJTlNQ
RUNUT1IpCi0gICAgLCBtX2luc3BlY3RvckNvbnRyb2xsZXIobmV3IEluc3BlY3RvckNvbnRyb2xs
ZXIodGhpcywgcGFnZUNsaWVudHMuaW5zcGVjdG9yQ2xpZW50KSkKKyAgICAsIG1faW5zcGVjdG9y
Q29udHJvbGxlcihhZG9wdFB0cihuZXcgSW5zcGVjdG9yQ29udHJvbGxlcih0aGlzLCBwYWdlQ2xp
ZW50cy5pbnNwZWN0b3JDbGllbnQpKSkKICNlbmRpZgogI2lmIEVOQUJMRShDTElFTlRfQkFTRURf
R0VPTE9DQVRJT04pCi0gICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihuZXcgR2VvbG9jYXRp
b25Db250cm9sbGVyKHRoaXMsIHBhZ2VDbGllbnRzLmdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dCkpCisgICAgLCBtX2dlb2xvY2F0aW9uQ29udHJvbGxlcihhZG9wdFB0cihuZXcgR2VvbG9jYXRp
b25Db250cm9sbGVyKHRoaXMsIHBhZ2VDbGllbnRzLmdlb2xvY2F0aW9uQ29udHJvbGxlckNsaWVu
dCkpKQogI2VuZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICAsIG1fZGV2
aWNlTW90aW9uQ29udHJvbGxlcihSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpkZXZpY2VNb3Rpb25F
bmFibGVkKCkgPyBuZXcgRGV2aWNlTW90aW9uQ29udHJvbGxlcihwYWdlQ2xpZW50cy5kZXZpY2VN
b3Rpb25DbGllbnQpIDogMCkKQEAgLTE0OCw5ICsxNDgsOSBAQCBQYWdlOjpQYWdlKGNvbnN0IFBh
Z2VDbGllbnRzJiBwYWdlQ2xpZW50CiAjaWYgRU5BQkxFKElOUFVUX1NQRUVDSCkKICAgICAsIG1f
c3BlZWNoSW5wdXRDbGllbnQocGFnZUNsaWVudHMuc3BlZWNoSW5wdXRDbGllbnQpCiAjZW5kaWYK
LSAgICAsIG1fc2V0dGluZ3MobmV3IFNldHRpbmdzKHRoaXMpKQotICAgICwgbV9wcm9ncmVzcyhu
ZXcgUHJvZ3Jlc3NUcmFja2VyKQotICAgICwgbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIobmV3IEJh
Y2tGb3J3YXJkQ29udHJvbGxlcih0aGlzLCBwYWdlQ2xpZW50cy5iYWNrRm9yd2FyZENvbnRyb2xs
ZXJDbGllbnQpKQorICAgICwgbV9zZXR0aW5ncyhhZG9wdFB0cihuZXcgU2V0dGluZ3ModGhpcykp
KQorICAgICwgbV9wcm9ncmVzcyhhZG9wdFB0cihuZXcgUHJvZ3Jlc3NUcmFja2VyKSkKKyAgICAs
IG1fYmFja0ZvcndhcmRDb250cm9sbGVyKGFkb3B0UHRyKG5ldyBCYWNrRm9yd2FyZENvbnRyb2xs
ZXIodGhpcywgcGFnZUNsaWVudHMuYmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50KSkpCiAgICAg
LCBtX3RoZW1lKFJlbmRlclRoZW1lOjp0aGVtZUZvclBhZ2UodGhpcykpCiAgICAgLCBtX2VkaXRv
ckNsaWVudChwYWdlQ2xpZW50cy5lZGl0b3JDbGllbnQpCiAgICAgLCBtX2ZyYW1lQ291bnQoMCkK
QEAgLTE4MSw3ICsxODEsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBwYWdlQ2xp
ZW50CiAgICAgYWxsUGFnZXMtPmFkZCh0aGlzKTsKIAogICAgIGlmIChwYWdlQ2xpZW50cy5wbHVn
aW5IYWx0ZXJDbGllbnQpIHsKLSAgICAgICAgbV9wbHVnaW5IYWx0ZXIuc2V0KG5ldyBQbHVnaW5I
YWx0ZXIocGFnZUNsaWVudHMucGx1Z2luSGFsdGVyQ2xpZW50KSk7CisgICAgICAgIG1fcGx1Z2lu
SGFsdGVyID0gYWRvcHRQdHIobmV3IFBsdWdpbkhhbHRlcihhZG9wdFB0cihwYWdlQ2xpZW50cy5w
bHVnaW5IYWx0ZXJDbGllbnQpKSk7CiAgICAgICAgIG1fcGx1Z2luSGFsdGVyLT5zZXRQbHVnaW5B
bGxvd2VkUnVuVGltZShtX3NldHRpbmdzLT5wbHVnaW5BbGxvd2VkUnVuVGltZSgpKTsKICAgICB9
CiAKQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIFBhZ2U6OmluaXRHcm91cCgpCiB7CiAgICAgQVNT
RVJUKCFtX3NpbmdsZVBhZ2VHcm91cCk7CiAgICAgQVNTRVJUKCFtX2dyb3VwKTsKLSAgICBtX3Np
bmdsZVBhZ2VHcm91cC5zZXQobmV3IFBhZ2VHcm91cCh0aGlzKSk7CisgICAgbV9zaW5nbGVQYWdl
R3JvdXAgPSBhZG9wdFB0cihuZXcgUGFnZUdyb3VwKHRoaXMpKTsKICAgICBtX2dyb3VwID0gbV9z
aW5nbGVQYWdlR3JvdXAuZ2V0KCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCShyZXZpc2lvbiA2
ODI4MikKKysrIFdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjgsOSArMjI4LDkgQEAgdm9pZCBQYWdlR3JvdXA6OmFkZFVzZXJTY3JpcHRUb1dvcmxkKERPTQog
ewogICAgIEFTU0VSVF9BUkcod29ybGQsIHdvcmxkKTsKIAotICAgIE93blB0cjxVc2VyU2NyaXB0
PiB1c2VyU2NyaXB0KG5ldyBVc2VyU2NyaXB0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNr
bGlzdCwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpKTsKKyAgICBPd25QdHI8VXNlclNj
cmlwdD4gdXNlclNjcmlwdCA9IGFkb3B0UHRyKG5ldyBVc2VyU2NyaXB0KHNvdXJjZSwgdXJsLCB3
aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0aW9uVGltZSwgaW5qZWN0ZWRGcmFtZXMpKTsKICAg
ICBpZiAoIW1fdXNlclNjcmlwdHMpCi0gICAgICAgIG1fdXNlclNjcmlwdHMuc2V0KG5ldyBVc2Vy
U2NyaXB0TWFwKTsKKyAgICAgICAgbV91c2VyU2NyaXB0cyA9IGFkb3B0UHRyKG5ldyBVc2VyU2Ny
aXB0TWFwKTsKICAgICBVc2VyU2NyaXB0VmVjdG9yKiYgc2NyaXB0c0luV29ybGQgPSBtX3VzZXJT
Y3JpcHRzLT5hZGQod29ybGQsIDApLmZpcnN0LT5zZWNvbmQ7CiAgICAgaWYgKCFzY3JpcHRzSW5X
b3JsZCkKICAgICAgICAgc2NyaXB0c0luV29ybGQgPSBuZXcgVXNlclNjcmlwdFZlY3RvcjsKQEAg
LTI0NSw5ICsyNDUsOSBAQCB2b2lkIFBhZ2VHcm91cDo6YWRkVXNlclN0eWxlU2hlZXRUb1dvcmxk
CiB7CiAgICAgQVNTRVJUX0FSRyh3b3JsZCwgd29ybGQpOwogCi0gICAgT3duUHRyPFVzZXJTdHls
ZVNoZWV0PiB1c2VyU3R5bGVTaGVldChuZXcgVXNlclN0eWxlU2hlZXQoc291cmNlLCB1cmwsIHdo
aXRlbGlzdCwgYmxhY2tsaXN0LCBpbmplY3RlZEZyYW1lcywgbGV2ZWwpKTsKKyAgICBPd25QdHI8
VXNlclN0eWxlU2hlZXQ+IHVzZXJTdHlsZVNoZWV0ID0gYWRvcHRQdHIobmV3IFVzZXJTdHlsZVNo
ZWV0KHNvdXJjZSwgdXJsLCB3aGl0ZWxpc3QsIGJsYWNrbGlzdCwgaW5qZWN0ZWRGcmFtZXMsIGxl
dmVsKSk7CiAgICAgaWYgKCFtX3VzZXJTdHlsZVNoZWV0cykKLSAgICAgICAgbV91c2VyU3R5bGVT
aGVldHMuc2V0KG5ldyBVc2VyU3R5bGVTaGVldE1hcCk7CisgICAgICAgIG1fdXNlclN0eWxlU2hl
ZXRzID0gYWRvcHRQdHIobmV3IFVzZXJTdHlsZVNoZWV0TWFwKTsKICAgICBVc2VyU3R5bGVTaGVl
dFZlY3RvciomIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG1fdXNlclN0eWxlU2hlZXRzLT5hZGQod29y
bGQsIDApLmZpcnN0LT5zZWNvbmQ7CiAgICAgaWYgKCFzdHlsZVNoZWV0c0luV29ybGQpCiAgICAg
ICAgIHN0eWxlU2hlZXRzSW5Xb3JsZCA9IG5ldyBVc2VyU3R5bGVTaGVldFZlY3RvcjsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9QbHVnaW5IYWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9QbHVnaW5IYWx0ZXIuY3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvcGFnZS9QbHVn
aW5IYWx0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxOCArMzAsMTkgQEAKICNpbmNsdWRl
ICJIYWx0YWJsZVBsdWdpbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSA8d3RmL0N1cnJlbnRUaW1lLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotUGx1Z2luSGFsdGVyOjpQbHVnaW5IYWx0ZXIoUGx1Z2luSGFsdGVyQ2xpZW50
KiBjbGllbnQpCitQbHVnaW5IYWx0ZXI6OlBsdWdpbkhhbHRlcihQYXNzT3duUHRyPFBsdWdpbkhh
bHRlckNsaWVudD4gY2xpZW50KQogICAgIDogbV9jbGllbnQoY2xpZW50KQogICAgICwgbV90aW1l
cih0aGlzLCAmUGx1Z2luSGFsdGVyOjp0aW1lckZpcmVkKQogICAgICwgbV9wbHVnaW5BbGxvd2Vk
UnVuVGltZShudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKQogewotICAgIEFTU0VSVF9B
UkcoY2xpZW50LCBjbGllbnQpOworICAgIEFTU0VSVChtX2NsaWVudCk7CiB9CiAKIHZvaWQgUGx1
Z2luSGFsdGVyOjpkaWRTdGFydFBsdWdpbihIYWx0YWJsZVBsdWdpbiogb2JqKQpJbmRleDogV2Vi
Q29yZS9wYWdlL1BsdWdpbkhhbHRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9QbHVn
aW5IYWx0ZXIuaAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL3BhZ2UvUGx1Z2luSGFsdGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgSGFsdGFibGVQbHVnaW47
CiAKIGNsYXNzIFBsdWdpbkhhbHRlciA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CiBwdWJsaWM6Ci0g
ICAgUGx1Z2luSGFsdGVyKFBsdWdpbkhhbHRlckNsaWVudCopOworICAgIFBsdWdpbkhhbHRlcihQ
YXNzT3duUHRyPFBsdWdpbkhhbHRlckNsaWVudD4pOwogCiAgICAgdm9pZCBkaWRTdGFydFBsdWdp
bihIYWx0YWJsZVBsdWdpbiopOwogICAgIHZvaWQgZGlkU3RvcFBsdWdpbihIYWx0YWJsZVBsdWdp
biopOwpJbmRleDogV2ViQ29yZS9wYWdlL1hTU0F1ZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9YU1NBdWRpdG9yLmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL3Bh
Z2UvWFNTQXVkaXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxNCw3ICs0MTQsNyBAQCBib29s
IFhTU0F1ZGl0b3I6OmZpbmRJblJlcXVlc3QoRnJhbWUqIGZyCiAgICAgICAgIFN0cmluZyBkZWNv
ZGVkRm9ybURhdGEgPSBtX2Zvcm1EYXRhQ2FjaGUuY2Fub25pY2FsaXplVVJMKGZvcm1EYXRhT2Jq
LCBmcmFtZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpLT5lbmNvZGluZygpLCB0YXNrLmRlY29kZUVu
dGl0aWVzLCB0YXNrLmRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc1R3aWNlKTsKIAogICAgICAgICBp
ZiAobV9nZW5lcmF0aW9uT2ZTdWZmaXhUcmVlICE9IG1fZm9ybURhdGFDYWNoZS5nZW5lcmF0aW9u
KCkpIHsKLSAgICAgICAgICAgIG1fZm9ybURhdGFTdWZmaXhUcmVlID0gbmV3IFN1ZmZpeFRyZWU8
QVNDSUlDb2RlYm9vaz4oZGVjb2RlZEZvcm1EYXRhLCA1KTsKKyAgICAgICAgICAgIG1fZm9ybURh
dGFTdWZmaXhUcmVlID0gYWRvcHRQdHIobmV3IFN1ZmZpeFRyZWU8QVNDSUlDb2RlYm9vaz4oZGVj
b2RlZEZvcm1EYXRhLCA1KSk7CiAgICAgICAgICAgICBtX2dlbmVyYXRpb25PZlN1ZmZpeFRyZWUg
PSBtX2Zvcm1EYXRhQ2FjaGUuZ2VuZXJhdGlvbigpOwogICAgICAgICB9CiAKSW5kZXg6IFdlYkNv
cmUvcGFnZS9tYWMvUGFnZU1hYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9Q
YWdlTWFjLmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL3BhZ2UvbWFjL1BhZ2VNYWMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw3ICs0MCw3IEBAIHZvaWQgUGFnZTo6YWRkU2NoZWR1
bGVQYWlyKFBhc3NSZWZQdHI8U2MKICAgICBSZWZQdHI8U2NoZWR1bGVQYWlyPiBwYWlyID0gcHJw
UGFpcjsKIAogICAgIGlmICghbV9zY2hlZHVsZWRSdW5Mb29wUGFpcnMpCi0gICAgICAgIG1fc2No
ZWR1bGVkUnVuTG9vcFBhaXJzLnNldChuZXcgU2NoZWR1bGVQYWlySGFzaFNldCk7CisgICAgICAg
IG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzID0gYWRvcHRQdHIobmV3IFNjaGVkdWxlUGFpckhhc2hT
ZXQpOwogICAgIG1fc2NoZWR1bGVkUnVuTG9vcFBhaXJzLT5hZGQocGFpcik7CiAKICNpZm5kZWYg
QlVJTERJTkdfT05fVElHRVIKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCShyZXZpc2lv
biA2ODI4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vQ29udGV4dE1lbnUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02OCw3ICs2OCw3IEBAIENvbnRleHRNZW51Q29udHJvbGxlciogQ29udGV4dE1lbnU6
OmNvbnQKIAogc3RhdGljIFBhc3NPd25QdHI8Q29udGV4dE1lbnVJdGVtPiBzZXBhcmF0b3JJdGVt
KCkKIHsKLSAgICByZXR1cm4gbmV3IENvbnRleHRNZW51SXRlbShTZXBhcmF0b3JUeXBlLCBDb250
ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbiwgU3RyaW5nKCkpOworICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgQ29udGV4dE1lbnVJdGVtKFNlcGFyYXRvclR5cGUsIENvbnRleHRNZW51SXRlbVRhZ05vQWN0
aW9uLCBTdHJpbmcoKSkpOwogfQogCiBzdGF0aWMgdm9pZCBjcmVhdGVBbmRBcHBlbmRGb250U3Vi
TWVudShjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQsIENvbnRleHRNZW51SXRlbSYgZm9udE1l
bnVJdGVtKQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGxhdGZvcm0vTGVuZ3RoLmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL0xlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUGFzc093bkFycmF5UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVmZmVyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CkBAIC04Myw3ICs4NSw3IEBAIHN0
YXRpYyBpbnQgY291bnRDaGFyYWN0ZXIoY29uc3QgVUNoYXIqIGQKICAgICByZXR1cm4gY291bnQ7
CiB9CiAKLUxlbmd0aCogbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYg
bGVuKQorUGFzc093bkFycmF5UHRyPExlbmd0aD4gbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGludCYgbGVuKQogewogICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGgoKTsKICAgICBjb25zdCBVQ2hhciogZGF0YSA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7CkBAIC0x
MDAsNyArMTAyLDcgQEAgTGVuZ3RoKiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmIHN0cgog
ICAgIHN0ciA9IHN0ci0+c2ltcGxpZnlXaGl0ZVNwYWNlKCk7CiAKICAgICBsZW4gPSBjb3VudENo
YXJhY3RlcihzdHItPmNoYXJhY3RlcnMoKSwgc3RyLT5sZW5ndGgoKSwgJyAnKSArIDE7Ci0gICAg
TGVuZ3RoKiByID0gbmV3IExlbmd0aFtsZW5dOworICAgIE93bkFycmF5UHRyPExlbmd0aD4gciA9
IGFkb3B0QXJyYXlQdHIobmV3IExlbmd0aFtsZW5dKTsKIAogICAgIGludCBpID0gMDsKICAgICB1
bnNpZ25lZCBwb3MgPSAwOwpAQCAtMTE0LDE5ICsxMTYsMTkgQEAgTGVuZ3RoKiBuZXdDb29yZHNB
cnJheShjb25zdCBTdHJpbmcmIHN0cgogCiAgICAgQVNTRVJUKGkgPT0gbGVuIC0gMSk7CiAKLSAg
ICByZXR1cm4gcjsKKyAgICByZXR1cm4gci5yZWxlYXNlKCk7CiB9CiAKLUxlbmd0aCogbmV3TGVu
Z3RoQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQorUGFzc093bkFycmF5UHRy
PExlbmd0aD4gbmV3TGVuZ3RoQXJyYXkoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCYgbGVuKQog
ewogICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBzdHIgPSBzdHJpbmcuaW1wbCgpLT5zaW1wbGlmeVdo
aXRlU3BhY2UoKTsKICAgICBpZiAoIXN0ci0+bGVuZ3RoKCkpIHsKICAgICAgICAgbGVuID0gMTsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBQYXNzT3duQXJyYXlQdHI8TGVuZ3Ro
PigpOwogICAgIH0KIAogICAgIGxlbiA9IGNvdW50Q2hhcmFjdGVyKHN0ci0+Y2hhcmFjdGVycygp
LCBzdHItPmxlbmd0aCgpLCAnLCcpICsgMTsKLSAgICBMZW5ndGgqIHIgPSBuZXcgTGVuZ3RoW2xl
bl07CisgICAgT3duQXJyYXlQdHI8TGVuZ3RoPiByID0gYWRvcHRBcnJheVB0cihuZXcgTGVuZ3Ro
W2xlbl0pOwogCiAgICAgaW50IGkgPSAwOwogICAgIHVuc2lnbmVkIHBvcyA9IDA7CkBAIC0xNDUs
NyArMTQ3LDcgQEAgTGVuZ3RoKiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmIHN0cgogICAg
IGVsc2UKICAgICAgICAgbGVuLS07CiAKLSAgICByZXR1cm4gcjsKKyAgICByZXR1cm4gci5yZWxl
YXNlKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vTGVuZ3RoLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9MZW5ndGguaAkocmV2
aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL0xlbmd0aC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTEsOCArMTkxLDggQEAgcHJpdmF0ZToKICAgICBpbnQgbV92YWx1ZTsKIH07CiAKLUxl
bmd0aCogbmV3Q29vcmRzQXJyYXkoY29uc3QgU3RyaW5nJiwgaW50JiBsZW4pOwotTGVuZ3RoKiBu
ZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbik7CitQYXNzT3duQXJyYXlQdHI8
TGVuZ3RoPiBuZXdDb29yZHNBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbik7CitQYXNzT3du
QXJyYXlQdHI8TGVuZ3RoPiBuZXdMZW5ndGhBcnJheShjb25zdCBTdHJpbmcmLCBpbnQmIGxlbik7
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2VCdWZmZXIuaAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDEwICs2MywxMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBQYXNzT3duUHRyPEltYWdlQnVmZmVy
PiBjcmVhdGUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSW1hZ2VDb2xvclNwYWNlIGNvbG9yU3BhY2Ug
PSBEZXZpY2VSR0IpCiAgICAgICAgIHsKICAgICAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNl
OwotICAgICAgICAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBidWYobmV3IEltYWdlQnVmZmVyKHNp
emUsIGNvbG9yU3BhY2UsIHN1Y2Nlc3MpKTsKLSAgICAgICAgICAgIGlmIChzdWNjZXNzKQotICAg
ICAgICAgICAgICAgIHJldHVybiBidWYucmVsZWFzZSgpOwotICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGJ1ZmZlciA9IGFkb3B0UHRyKG5ldyBJ
bWFnZUJ1ZmZlcihzaXplLCBjb2xvclNwYWNlLCBzdWNjZXNzKSk7CisgICAgICAgICAgICBpZiAo
IXN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgcmV0dXJuIFBhc3NPd25QdHI8SW1hZ2VCdWZmZXI+
KCk7CisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLnJlbGVhc2UoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIH5JbWFnZUJ1ZmZlcigpOwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVBsYXllci5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw5ICsxMzQsOSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogfTsKIAotc3RhdGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZSogY3JlYXRlTnVsbE1lZGlhUGxheWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpIAorc3RhdGljIFBh
c3NPd25QdHI8TWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlPiBjcmVhdGVOdWxsTWVkaWFQbGF5
ZXIoTWVkaWFQbGF5ZXIqIHBsYXllcikgCiB7IAotICAgIHJldHVybiBuZXcgTnVsbE1lZGlhUGxh
eWVyUHJpdmF0ZShwbGF5ZXIpOyAKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IE51bGxNZWRpYVBs
YXllclByaXZhdGUocGxheWVyKSk7CiB9CiAKIApAQCAtMzAyLDcgKzMwMiw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXI6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwKICAgICB9IGVsc2UgaWYgKG1fY3VycmVu
dE1lZGlhRW5naW5lICE9IGVuZ2luZSkgewogICAgICAgICBtX2N1cnJlbnRNZWRpYUVuZ2luZSA9
IGVuZ2luZTsKICAgICAgICAgbV9wcml2YXRlLmNsZWFyKCk7Ci0gICAgICAgIG1fcHJpdmF0ZS5z
ZXQoZW5naW5lLT5jb25zdHJ1Y3Rvcih0aGlzKSk7CisgICAgICAgIG1fcHJpdmF0ZSA9IGVuZ2lu
ZS0+Y29uc3RydWN0b3IodGhpcyk7CiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8p
CiAgICAgICAgIG1fcHJpdmF0ZS0+c2V0TWVkaWFQbGF5ZXJQcm94eShtX3BsYXllclByb3h5KTsK
ICNlbmRpZgpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgTWVkaWFQbGF5ZXI6OmxvYWQoY29uc3Qg
U3RyaW5nJiB1cmwKICAgICBpZiAobV9wcml2YXRlKQogICAgICAgICBtX3ByaXZhdGUtPmxvYWQo
dXJsKTsKICAgICBlbHNlCi0gICAgICAgIG1fcHJpdmF0ZS5zZXQoY3JlYXRlTnVsbE1lZGlhUGxh
eWVyKHRoaXMpKTsKKyAgICAgICAgbV9wcml2YXRlID0gY3JlYXRlTnVsbE1lZGlhUGxheWVyKHRo
aXMpOwogfSAgICAKIAogYm9vbCBNZWRpYVBsYXllcjo6aGFzQXZhaWxhYmxlVmlkZW9GcmFtZSgp
IGNvbnN0CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5oCShyZXZp
c2lvbiA2ODI4MikKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMjk1LDcgKzI5NSw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIH07CiAK
LXR5cGVkZWYgTWVkaWFQbGF5ZXJQcml2YXRlSW50ZXJmYWNlKiAoKkNyZWF0ZU1lZGlhRW5naW5l
UGxheWVyKShNZWRpYVBsYXllciopOwordHlwZWRlZiBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJp
dmF0ZUludGVyZmFjZT4gKCpDcmVhdGVNZWRpYUVuZ2luZVBsYXllcikoTWVkaWFQbGF5ZXIqKTsK
IHR5cGVkZWYgdm9pZCAoKk1lZGlhRW5naW5lU3VwcG9ydGVkVHlwZXMpKEhhc2hTZXQ8U3RyaW5n
PiYgdHlwZXMpOwogdHlwZWRlZiBNZWRpYVBsYXllcjo6U3VwcG9ydHNUeXBlICgqTWVkaWFFbmdp
bmVTdXBwb3J0c1R5cGUpKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBjb2RlY3Mp
OwogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0ltYWdlQnVmZmVyQ0cuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvSW1hZ2VCdWZmZXJD
Ry5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9J
bWFnZUJ1ZmZlckNHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA0LDcgKzEwNCw3IEBAIEltYWdl
QnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJiAKICAgICBpZiAoIWNnQ29udGV4dCkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9jb250ZXh0LnNldChuZXcgR3JhcGhpY3NDb250ZXh0
KGNnQ29udGV4dC5nZXQoKSkpOworICAgIG1fY29udGV4dCA9IGFkb3B0UHRyKG5ldyBHcmFwaGlj
c0NvbnRleHQoY2dDb250ZXh0LmdldCgpKSk7CiAgICAgbV9jb250ZXh0LT5zY2FsZShGbG9hdFNp
emUoMSwgLTEpKTsKICAgICBtX2NvbnRleHQtPnRyYW5zbGF0ZSgwLCAtc2l6ZS5oZWlnaHQoKSk7
CiAgICAgc3VjY2VzcyA9IHRydWU7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21h
Yy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQkocmV2aXNpb24gNjgyODIpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0NvbnRleHQzRE1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtODEsOSArODEsOSBAQCBQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4
dDNEPiBHcmFwaGljc0NvCiB7CiAgICAgLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0IGN1
cnJlbnRseSBzdXBwb3J0IHJlbmRlcmluZyBkaXJlY3RseSB0byB0aGUgSG9zdFdpbmRvdy4KICAg
ICBpZiAocmVuZGVyU3R5bGUgPT0gUmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3cpCi0gICAgICAg
IHJldHVybiAwOwotICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4dChuZXcgR3Jh
cGhpY3NDb250ZXh0M0QoYXR0cnMsIGhvc3RXaW5kb3csIGZhbHNlKSk7Ci0gICAgcmV0dXJuIGNv
bnRleHQtPm1fY29udGV4dE9iaiA/IGNvbnRleHQucmVsZWFzZSgpIDogMDsKKyAgICAgICAgcmV0
dXJuIFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+KCk7CisgICAgT3duUHRyPEdyYXBoaWNz
Q29udGV4dDNEPiBjb250ZXh0ID0gYWRvcHRQdHIobmV3IEdyYXBoaWNzQ29udGV4dDNEKGF0dHJz
LCBob3N0V2luZG93LCBmYWxzZSkpOworICAgIHJldHVybiBjb250ZXh0LT5tX2NvbnRleHRPYmog
PyBjb250ZXh0LnJlbGVhc2UoKSA6IFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q+KCk7CiB9
CiAKIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFwaGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQz
RDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgYm9vbCkKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0dyYXBoaWNzTGF5ZXJDQS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9HcmFwaGljc0xheWVyQ0EubW0J
KHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvR3JhcGhp
Y3NMYXllckNBLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNTIsNyArMzUyLDcgQEAgc3RhdGljIGJv
b2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdAogCiBQYXNzT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2xpZW50KiBjbGllbnQpCiB7
Ci0gICAgcmV0dXJuIG5ldyBHcmFwaGljc0xheWVyQ0EoY2xpZW50KTsKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IEdyYXBoaWNzTGF5ZXJDQShjbGllbnQpKTsKIH0KIAogR3JhcGhpY3NMYXllckNB
OjpHcmFwaGljc0xheWVyQ0EoR3JhcGhpY3NMYXllckNsaWVudCogY2xpZW50KQpAQCAtMjI2Mywx
MyArMjI2MywxMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMoCiAg
ICAgY29udGVudHNMYXllciA9IG5pbDsKIAogICAgIGlmICghbV9sYXllckNsb25lcykKLSAgICAg
ICAgbV9sYXllckNsb25lcyA9IG5ldyBMYXllck1hcDsKKyAgICAgICAgbV9sYXllckNsb25lcyA9
IGFkb3B0UHRyKG5ldyBMYXllck1hcCk7CiAKICAgICBpZiAoIW1fc3RydWN0dXJhbExheWVyQ2xv
bmVzICYmIG1fc3RydWN0dXJhbExheWVyKQotICAgICAgICBtX3N0cnVjdHVyYWxMYXllckNsb25l
cyA9IG5ldyBMYXllck1hcDsKKyAgICAgICAgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgPSBhZG9w
dFB0cihuZXcgTGF5ZXJNYXApOwogCiAgICAgaWYgKCFtX2NvbnRlbnRzTGF5ZXJDbG9uZXMgJiYg
bV9jb250ZW50c0xheWVyKQotICAgICAgICBtX2NvbnRlbnRzTGF5ZXJDbG9uZXMgPSBuZXcgTGF5
ZXJNYXA7CisgICAgICAgIG1fY29udGVudHNMYXllckNsb25lcyA9IGFkb3B0UHRyKG5ldyBMYXll
ck1hcCk7CiAKICAgICBwcmltYXJ5TGF5ZXIgPSBmaW5kT3JNYWtlQ2xvbmUoY2xvbmVJRCwgbV9s
YXllci5nZXQoKSwgbV9sYXllckNsb25lcy5nZXQoKSwgY2xvbmVMZXZlbCk7CiAgICAgc3RydWN0
dXJhbExheWVyID0gZmluZE9yTWFrZUNsb25lKGNsb25lSUQsIG1fc3RydWN0dXJhbExheWVyLmdl
dCgpLCBtX3N0cnVjdHVyYWxMYXllckNsb25lcy5nZXQoKSwgY2xvbmVMZXZlbCk7CkBAIC0yMjc4
LDkgKzIyNzgsOSBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDQTo6ZW5zdXJlQ2xvbmVMYXllcnMoCiAK
IHZvaWQgR3JhcGhpY3NMYXllckNBOjpyZW1vdmVDbG9uZUxheWVycygpCiB7Ci0gICAgbV9sYXll
ckNsb25lcyA9IDA7Ci0gICAgbV9zdHJ1Y3R1cmFsTGF5ZXJDbG9uZXMgPSAwOwotICAgIG1fY29u
dGVudHNMYXllckNsb25lcyA9IDA7CisgICAgbV9sYXllckNsb25lcy5jbGVhcigpOworICAgIG1f
c3RydWN0dXJhbExheWVyQ2xvbmVzLmNsZWFyKCk7CisgICAgbV9jb250ZW50c0xheWVyQ2xvbmVz
LmNsZWFyKCk7CiB9CiAKIEZsb2F0UG9pbnQgR3JhcGhpY3NMYXllckNBOjpwb3NpdGlvbkZvckNs
b25lUm9vdExheWVyKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFj
L01lZGlhUGxheWVyUHJpdmF0ZVFUS2l0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaAkocmV2aXNpb24gNjgyODIp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OSw2ICs1OSw4IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJp
dmF0ZSA6IHB1YmxpYyBNZWRpYVAKIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCByZWdpc3Rlck1l
ZGlhRW5naW5lKE1lZGlhRW5naW5lUmVnaXN0cmFyKTsKIAorICAgIHZpcnR1YWwgfk1lZGlhUGxh
eWVyUHJpdmF0ZSgpOworCiAgICAgdm9pZCByZXBhaW50KCk7CiAgICAgdm9pZCBsb2FkU3RhdGVD
aGFuZ2VkKCk7CiAgICAgdm9pZCByYXRlQ2hhbmdlZCgpOwpAQCAtNjgsMTAgKzcwLDkgQEAgcHVi
bGljOgogCiBwcml2YXRlOgogICAgIE1lZGlhUGxheWVyUHJpdmF0ZShNZWRpYVBsYXllciopOwot
ICAgIH5NZWRpYVBsYXllclByaXZhdGUoKTsKIAogICAgIC8vIGVuZ2luZSBzdXBwb3J0Ci0gICAg
c3RhdGljIE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFjZSogY3JlYXRlKE1lZGlhUGxheWVyKiBw
bGF5ZXIpOworICAgIHN0YXRpYyBQYXNzT3duUHRyPE1lZGlhUGxheWVyUHJpdmF0ZUludGVyZmFj
ZT4gY3JlYXRlKE1lZGlhUGxheWVyKik7CiAgICAgc3RhdGljIHZvaWQgZ2V0U3VwcG9ydGVkVHlw
ZXMoSGFzaFNldDxTdHJpbmc+JiB0eXBlcyk7CiAgICAgc3RhdGljIE1lZGlhUGxheWVyOjpTdXBw
b3J0c1R5cGUgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBj
b2RlY3MpOwogICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9NZWRpYVBsYXllclByaXZhdGVRVEtp
dC5tbQkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9N
ZWRpYVBsYXllclByaXZhdGVRVEtpdC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksMTAgKzI5LDYg
QEAKIAogI2ltcG9ydCAiTWVkaWFQbGF5ZXJQcml2YXRlUVRLaXQuaCIKIAotI2lmZGVmIEJVSUxE
SU5HX09OX1RJR0VSCi0jaW1wb3J0ICJBdXRvZHJhaW5lZFBvb2wuaCIKLSNlbmRpZgotCiAjaW1w
b3J0ICJCbG9ja0V4Y2VwdGlvbnMuaCIKICNpbXBvcnQgIkZyYW1lVmlldy5oIgogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0LmgiCkBAIC00NSwxNCArNDEsMTggQEAKICNpbXBvcnQgPG9iamMvb2Jq
Yy1ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvVW51c2VkUGFyYW0uaD4KIAorI2lmZGVmIEJVSUxE
SU5HX09OX1RJR0VSCisjaW1wb3J0ICJBdXRvZHJhaW5lZFBvb2wuaCIKKyNlbmRpZgorCiAjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIK
KyNpbXBvcnQgIkdyYXBoaWNzTGF5ZXIuaCIKICNlbmRpZgogCiAjaWYgRFJBV19GUkFNRV9SQVRF
CisjaW1wb3J0ICJEb2N1bWVudC5oIgogI2ltcG9ydCAiRm9udC5oIgogI2ltcG9ydCAiRnJhbWUu
aCIKLSNpbXBvcnQgIkRvY3VtZW50LmgiCiAjaW1wb3J0ICJSZW5kZXJPYmplY3QuaCIKICNpbXBv
cnQgIlJlbmRlclN0eWxlLmgiCiAjZW5kaWYKQEAgLTE5Miw5ICsxOTIsOSBAQCBzdGF0aWMgY29u
c3QgbG9uZyBtaW5pbXVtUXVpY2tUaW1lVmVyc2lvCiAjZW5kaWYKIAogCi1NZWRpYVBsYXllclBy
aXZhdGVJbnRlcmZhY2UqIE1lZGlhUGxheWVyUHJpdmF0ZTo6Y3JlYXRlKE1lZGlhUGxheWVyKiBw
bGF5ZXIpIAorUGFzc093blB0cjxNZWRpYVBsYXllclByaXZhdGVJbnRlcmZhY2U+IE1lZGlhUGxh
eWVyUHJpdmF0ZTo6Y3JlYXRlKE1lZGlhUGxheWVyKiBwbGF5ZXIpIAogeyAKLSAgICByZXR1cm4g
bmV3IE1lZGlhUGxheWVyUHJpdmF0ZShwbGF5ZXIpOworICAgIHJldHVybiBhZG9wdFB0cihuZXcg
TWVkaWFQbGF5ZXJQcml2YXRlKHBsYXllcikpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZTo6cmVnaXN0ZXJNZWRpYUVuZ2luZShNZWRpYUVuZ2luZVJlZ2lzdHJhciByZWdpc3RyYXIpCklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9w
ZW5HTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0M0RPcGVuR0wuY3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNiBAQAogCiAjaW5jbHVkZSAiQXJyYXlCdWZmZXIuaCIK
ICNpbmNsdWRlICJBcnJheUJ1ZmZlclZpZXcuaCIKLSNpbmNsdWRlICJXZWJHTE9iamVjdC5oIgog
I2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJGbG9hdDMyQXJy
YXkuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKQEAgLTQwLDE0ICszOSwxNSBAQAog
I2luY2x1ZGUgIkludDMyQXJyYXkuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2lu
Y2x1ZGUgIlVpbnQ4QXJyYXkuaCIKKyNpbmNsdWRlICJXZWJHTE9iamVjdC5oIgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duQXJyYXlQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KKyNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShNQUMpCiAjaW5jbHVk
ZSA8T3BlbkdML2dsLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2
b2lkIEdyYXBoaWNzQ29udGV4dDNEOjp2YWxpZGF0ZUF0dHJpYnV0ZXMoKQpAQCAtODIsNyArODIs
NyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpwYWludFJlbmRlcmluZ1JlCiAgICAgaW50IHJv
d0J5dGVzID0gbV9jdXJyZW50V2lkdGggKiA0OwogICAgIGludCB0b3RhbEJ5dGVzID0gcm93Qnl0
ZXMgKiBtX2N1cnJlbnRIZWlnaHQ7CiAKLSAgICBPd25BcnJheVB0cjx1bnNpZ25lZCBjaGFyPiBw
aXhlbHMobmV3IHVuc2lnbmVkIGNoYXJbdG90YWxCeXRlc10pOworICAgIE93bkFycmF5UHRyPHVu
c2lnbmVkIGNoYXI+IHBpeGVscyA9IGFkb3B0QXJyYXlQdHIobmV3IHVuc2lnbmVkIGNoYXJbdG90
YWxCeXRlc10pOwogICAgIGlmICghcGl4ZWxzKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAJKHJldmlzaW9uIDY4Mjgy
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc093blB0
cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBIVFRQSGVhZGVyTWFwOjpjb3B5RGF0YSgp
IGNvbnN0CiB7Ci0gICAgT3duUHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IGRhdGEo
bmV3IENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGEoKSk7CisgICAgT3duUHRyPENyb3NzVGhy
ZWFkSFRUUEhlYWRlck1hcERhdGE+IGRhdGEgPSBhZG9wdFB0cihuZXcgQ3Jvc3NUaHJlYWRIVFRQ
SGVhZGVyTWFwRGF0YSk7CiAgICAgZGF0YS0+cmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShzaXplKCkp
OwogCiAgICAgSFRUUEhlYWRlck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kX2l0ID0gZW5kKCk7Cklu
ZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAkocmV2aXNpb24gNjgyODIp
CisrKyBXZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENvZGVjSUNVLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTcsNyArNTcsNyBAQCBzdGF0aWMgVUNvbnZlcnRlciomIGNhY2hlZENvbnZlcnRlcklD
VSgpCiAKIHN0YXRpYyBQYXNzT3duUHRyPFRleHRDb2RlYz4gbmV3VGV4dENvZGVjSUNVKGNvbnN0
IFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IHZvaWQqKQogewotICAgIHJldHVybiBuZXcg
VGV4dENvZGVjSUNVKGVuY29kaW5nKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHRDb2Rl
Y0lDVShlbmNvZGluZykpOwogfQogCiB2b2lkIFRleHRDb2RlY0lDVTo6cmVnaXN0ZXJCYXNlRW5j
b2RpbmdOYW1lcyhFbmNvZGluZ05hbWVSZWdpc3RyYXIgcmVnaXN0cmFyKQpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGluMS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIFRleHRDb2RlY0xhdGluMTo6cmVnaXN0ZXJFbmNvZGlu
Z05hCiAKIHN0YXRpYyBQYXNzT3duUHRyPFRleHRDb2RlYz4gbmV3U3RyZWFtaW5nVGV4dERlY29k
ZXJXaW5kb3dzTGF0aW4xKGNvbnN0IFRleHRFbmNvZGluZyYsIGNvbnN0IHZvaWQqKQogewotICAg
IHJldHVybiBuZXcgVGV4dENvZGVjTGF0aW4xOworICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4
dENvZGVjTGF0aW4xKTsKIH0KIAogdm9pZCBUZXh0Q29kZWNMYXRpbjE6OnJlZ2lzdGVyQ29kZWNz
KFRleHRDb2RlY1JlZ2lzdHJhciByZWdpc3RyYXIpCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvVGV4dENvZGVjVVRGMTYuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0Q29kZWNVVEYxNi5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDb2RlY1VURjE2LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTIgKzUwLDEy
IEBAIHZvaWQgVGV4dENvZGVjVVRGMTY6OnJlZ2lzdGVyRW5jb2RpbmdOYW0KIAogc3RhdGljIFBh
c3NPd25QdHI8VGV4dENvZGVjPiBuZXdTdHJlYW1pbmdUZXh0RGVjb2RlclVURjE2TEUoY29uc3Qg
VGV4dEVuY29kaW5nJiwgY29uc3Qgdm9pZCopCiB7Ci0gICAgcmV0dXJuIG5ldyBUZXh0Q29kZWNV
VEYxNih0cnVlKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHRDb2RlY1VURjE2KHRydWUp
KTsKIH0KIAogc3RhdGljIFBhc3NPd25QdHI8VGV4dENvZGVjPiBuZXdTdHJlYW1pbmdUZXh0RGVj
b2RlclVURjE2QkUoY29uc3QgVGV4dEVuY29kaW5nJiwgY29uc3Qgdm9pZCopCiB7Ci0gICAgcmV0
dXJuIG5ldyBUZXh0Q29kZWNVVEYxNihmYWxzZSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
ZXh0Q29kZWNVVEYxNihmYWxzZSkpOwogfQogCiB2b2lkIFRleHRDb2RlY1VURjE2OjpyZWdpc3Rl
ckNvZGVjcyhUZXh0Q29kZWNSZWdpc3RyYXIgcmVnaXN0cmFyKQpJbmRleDogV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDb2RlY1VzZXJEZWZpbmVkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENvZGVjVXNlckRlZmluZWQuY3BwCShyZXZpc2lvbiA2ODI4MikK
KysrIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q29kZWNVc2VyRGVmaW5lZC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQxLDcgKzQxLDcgQEAgdm9pZCBUZXh0Q29kZWNVc2VyRGVmaW5lZDo6cmVn
aXN0ZXJFbmNvZAogCiBzdGF0aWMgUGFzc093blB0cjxUZXh0Q29kZWM+IG5ld1N0cmVhbWluZ1Rl
eHREZWNvZGVyVXNlckRlZmluZWQoY29uc3QgVGV4dEVuY29kaW5nJiwgY29uc3Qgdm9pZCopCiB7
Ci0gICAgcmV0dXJuIG5ldyBUZXh0Q29kZWNVc2VyRGVmaW5lZDsKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IFRleHRDb2RlY1VzZXJEZWZpbmVkKTsKIH0KIAogdm9pZCBUZXh0Q29kZWNVc2VyRGVm
aW5lZDo6cmVnaXN0ZXJDb2RlY3MoVGV4dENvZGVjUmVnaXN0cmFyIHJlZ2lzdHJhcikKSW5kZXg6
IFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvVGV4dENvZGVjTWFjLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL1RleHRDb2RlY01hYy5jcHAJKHJldmlzaW9uIDY4
MjgyKQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21hYy9UZXh0Q29kZWNNYWMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgVGV4dENvZGVjTWFjOjpyZWdpc3RlckVu
Y29kaW5nTmFtZXMKIAogc3RhdGljIFBhc3NPd25QdHI8VGV4dENvZGVjPiBuZXdUZXh0Q29kZWNN
YWMoY29uc3QgVGV4dEVuY29kaW5nJiwgY29uc3Qgdm9pZCogYWRkaXRpb25hbERhdGEpCiB7Ci0g
ICAgcmV0dXJuIG5ldyBUZXh0Q29kZWNNYWMoKnN0YXRpY19jYXN0PGNvbnN0IFRFQ1RleHRFbmNv
ZGluZ0lEKj4oYWRkaXRpb25hbERhdGEpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRleHRD
b2RlY01hYygqc3RhdGljX2Nhc3Q8Y29uc3QgVEVDVGV4dEVuY29kaW5nSUQqPihhZGRpdGlvbmFs
RGF0YSkpKTsKIH0KIAogdm9pZCBUZXh0Q29kZWNNYWM6OnJlZ2lzdGVyQ29kZWNzKFRleHRDb2Rl
Y1JlZ2lzdHJhciByZWdpc3RyYXIpCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCShy
ZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTEwLDEyICsxMTAsMTEgQEAgUmVuZGVyQmxvY2s6Ok1hcmdpbkluZm86
Ok1hcmdpbkluZm8oUmVuZAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiBSZW5kZXJCbG9jazo6UmVuZGVyQmxvY2soTm9kZSogbm9kZSkKLSAgICAg
IDogUmVuZGVyQm94KG5vZGUpCi0gICAgICAsIG1fZmxvYXRpbmdPYmplY3RzKDApCi0gICAgICAs
IG1fcG9zaXRpb25lZE9iamVjdHMoMCkKLSAgICAgICwgbV9jb250aW51YXRpb24oMCkKLSAgICAg
ICwgbV9yYXJlRGF0YSgwKQotICAgICAgLCBtX2xpbmVIZWlnaHQoLTEpCisgICAgOiBSZW5kZXJC
b3gobm9kZSkKKyAgICAsIG1fZmxvYXRpbmdPYmplY3RzKDApCisgICAgLCBtX3Bvc2l0aW9uZWRP
YmplY3RzKDApCisgICAgLCBtX2NvbnRpbnVhdGlvbigwKQorICAgICwgbV9saW5lSGVpZ2h0KC0x
KQogewogICAgIHNldENoaWxkcmVuSW5saW5lKHRydWUpOwogfQpAQCAtMTA3MSw3ICsxMDcwLDcg
QEAgdm9pZCBSZW5kZXJCbG9jazo6ZmluaXNoRGVsYXlVcGRhdGVTY3JvbAogICAgIGlmIChnRGVs
YXlVcGRhdGVTY3JvbGxJbmZvID09IDApIHsKICAgICAgICAgQVNTRVJUKGdEZWxheWVkVXBkYXRl
U2Nyb2xsSW5mb1NldCk7CiAKLSAgICAgICAgT3duUHRyPERlbGF5ZWRVcGRhdGVTY3JvbGxJbmZv
U2V0PiBpbmZvU2V0KGdEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldCk7CisgICAgICAgIE93blB0
cjxEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldD4gaW5mb1NldCA9IGFkb3B0UHRyKGdEZWxheWVk
VXBkYXRlU2Nyb2xsSW5mb1NldCk7CiAgICAgICAgIGdEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1Nl
dCA9IDA7CiAKICAgICAgICAgZm9yIChEZWxheWVkVXBkYXRlU2Nyb2xsSW5mb1NldDo6aXRlcmF0
b3IgaXQgPSBpbmZvU2V0LT5iZWdpbigpOyBpdCAhPSBpbmZvU2V0LT5lbmQoKTsgKytpdCkgewpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVzb3VyY2VzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9TVkdSZXNvdXJjZXMuY3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1NWR1Jlc291cmNlcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDEw
ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNWR1Jlc291cmNlczo6U1ZHUmVzb3Vy
Y2VzKCkKLSAgICA6IG1fY2xpcHBlckZpbHRlck1hc2tlckRhdGEoMCkKLSAgICAsIG1fbWFya2Vy
RGF0YSgwKQotICAgICwgbV9maWxsU3Ryb2tlRGF0YSgwKQotICAgICwgbV9saW5rZWRSZXNvdXJj
ZSgwKQorICAgIDogbV9saW5rZWRSZXNvdXJjZSgwKQogewogfQogCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9TVkdSZXNvdXJjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9T
VkdSZXNvdXJjZXMuaAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9TVkdS
ZXNvdXJjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAK
ICAgICAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2xpcHBlckZpbHRlck1hc2tlckRhdGE+IGNyZWF0
ZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBuZXcgQ2xpcHBlckZpbHRlck1hc2tl
ckRhdGE7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENsaXBwZXJGaWx0ZXJNYXNr
ZXJEYXRhKTsKICAgICAgICAgfQogCiAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciog
Y2xpcHBlcjsKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogCiAgICAgICAgIHN0YXRpYyBQ
YXNzT3duUHRyPE1hcmtlckRhdGE+IGNyZWF0ZSgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBuZXcgTWFya2VyRGF0YTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTWFy
a2VyRGF0YSk7CiAgICAgICAgIH0KIAogICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZU1hcmtlciog
bWFya2VyU3RhcnQ7CkBAIC0xNjAsNyArMTYwLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICBzdGF0
aWMgUGFzc093blB0cjxGaWxsU3Ryb2tlRGF0YT4gY3JlYXRlKCkKICAgICAgICAgewotICAgICAg
ICAgICAgcmV0dXJuIG5ldyBGaWxsU3Ryb2tlRGF0YTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgRmlsbFN0cm9rZURhdGEpOwogICAgICAgICB9CiAKICAgICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2VDb250YWluZXIqIGZpbGw7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9UcmFuc2Zv
cm1TdGF0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvVHJhbnNmb3JtU3Rh
dGUuY3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1RyYW5zZm9ybVN0
YXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybVN0YXRlLmgiCiAKKyNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgVHJhbnNmb3JtU3RhdGU6Om1v
dmUoaW50IHgsIGludCB5LCBUcmFuc2Zvcm1BY2N1bXVsYXRpb24gYWNjdW11bGF0ZSkKQEAgLTY1
LDcgKzY3LDcgQEAgdm9pZCBUcmFuc2Zvcm1TdGF0ZTo6YXBwbHlUcmFuc2Zvcm0oY29ucwogICAg
ICAgICAgICAgbV9hY2N1bXVsYXRlZFRyYW5zZm9ybS0+bXVsdExlZnQodHJhbnNmb3JtRnJvbUNv
bnRhaW5lcik7CiAgICAgfSBlbHNlIGlmIChhY2N1bXVsYXRlID09IEFjY3VtdWxhdGVUcmFuc2Zv
cm0pIHsKICAgICAgICAgLy8gTWFrZSBvbmUgaWYgd2Ugc3RhcnRlZCB0byBhY2N1bXVsYXRlCi0g
ICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zvcm0uc2V0KG5ldyBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCh0cmFuc2Zvcm1Gcm9tQ29udGFpbmVyKSk7CisgICAgICAgIG1fYWNjdW11bGF0ZWRUcmFuc2Zv
cm0gPSBhZG9wdFB0cihuZXcgVHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3JtRnJvbUNvbnRh
aW5lcikpOwogICAgIH0KICAgICAKICAgICBpZiAoYWNjdW11bGF0ZSA9PSBGbGF0dGVuVHJhbnNm
b3JtKSB7CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvRGVmYXVsdFNoYXJlZFdvcmtlclJlcG9zaXRv
cnkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvd29ya2Vycy9EZWZhdWx0U2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS93b3JrZXJzL0RlZmF1
bHRTaGFyZWRXb3JrZXJSZXBvc2l0b3J5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI0LDcgKzIy
NCw3IEBAIGNsYXNzIFNoYXJlZFdvcmtlckNvbm5lY3RUYXNrIDogcHVibGljIFMKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc093blB0cjxTaGFyZWRXb3JrZXJDb25uZWN0VGFzaz4gY3JlYXRlKFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiBjaGFubmVsKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIG5ldyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayhjaGFubmVsKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBTaGFyZWRXb3JrZXJDb25uZWN0VGFzayhjaGFubmVsKSk7CiAgICAgfQog
CiBwcml2YXRlOgpAQCAtMjc0LDcgKzI3NCw3IEBAIFNoYXJlZFdvcmtlclNjcmlwdExvYWRlcjo6
U2hhcmVkV29ya2VyU2MKIHZvaWQgU2hhcmVkV29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkKGNvbnN0
IEtVUkwmIHVybCkKIHsKICAgICAvLyBNYXJrIHRoaXMgb2JqZWN0IGFzIGFjdGl2ZSBmb3IgdGhl
IGR1cmF0aW9uIG9mIHRoZSBsb2FkLgotICAgIG1fc2NyaXB0TG9hZGVyID0gbmV3IFdvcmtlclNj
cmlwdExvYWRlcihSZXNvdXJjZVJlcXVlc3RCYXNlOjpUYXJnZXRJc1NoYXJlZFdvcmtlcik7Cisg
ICAgbV9zY3JpcHRMb2FkZXIgPSBhZG9wdFB0cihuZXcgV29ya2VyU2NyaXB0TG9hZGVyKFJlc291
cmNlUmVxdWVzdEJhc2U6OlRhcmdldElzU2hhcmVkV29ya2VyKSk7CiAgICAgbV9zY3JpcHRMb2Fk
ZXItPmxvYWRBc3luY2hyb25vdXNseShtX3dvcmtlci0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCB1cmwsIERlbnlDcm9zc09yaWdpblJlcXVlc3RzLCB0aGlzKTsKIAogICAgIC8vIFN0YXkgYWxp
dmUgKGFuZCBrZWVwIHRoZSBTaGFyZWRXb3JrZXIgYW5kIEpTIHdyYXBwZXIgYWxpdmUpIHVudGls
IHRoZSBsb2FkIGZpbmlzaGVzLgpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAJKHJldmlzaW9uIDY4MjgyKQor
KysgV2ViQ29yZS93b3JrZXJzL1dvcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsx
NDAsNyBAQCB2b2lkIFdvcmtlcjo6bm90aWZ5RmluaXNoZWQoKQogICAgICAgICAgICAgaW5zcGVj
dG9yLT5zY3JpcHRJbXBvcnRlZChtX3NjcmlwdExvYWRlci0+aWRlbnRpZmllcigpLCBtX3Njcmlw
dExvYWRlci0+c2NyaXB0KCkpOwogI2VuZGlmCiAgICAgfQotICAgIG1fc2NyaXB0TG9hZGVyID0g
MDsKKyAgICBtX3NjcmlwdExvYWRlci5jbGVhcigpOwogCiAgICAgdW5zZXRQZW5kaW5nQWN0aXZp
dHkodGhpcyk7CiB9CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCShyZXZpc2lvbiA2
ODI4MikKKysrIFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzgsNyArNzgsNyBAQCBjbGFzcyBDbG9zZVdvcmtlckNvbnRleHRUYXNrIDogcHVibGlj
IFNjCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8Q2xvc2VXb3JrZXJDb250ZXh0VGFz
az4gY3JlYXRlKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ2xvc2VXb3JrZXJDb250ZXh0
VGFzazsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDbG9zZVdvcmtlckNvbnRleHRUYXNr
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCAqY29udGV4dCkKSW5kZXg6IFdlYkNvcmUvd29ya2Vycy9Xb3JrZXJNZXNzYWdpbmdQ
cm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlck1lc3NhZ2luZ1By
b3h5LmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL3dvcmtlcnMvV29ya2VyTWVzc2Fn
aW5nUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIE1lc3Nh
Z2VXb3JrZXJDb250ZXh0VGFzayA6IHB1YmxpYyAKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093
blB0cjxNZXNzYWdlV29ya2VyQ29udGV4dFRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJh
eT4gY2hhbm5lbHMpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IE1lc3NhZ2VXb3JrZXJDb250
ZXh0VGFzayhtZXNzYWdlLCBjaGFubmVscyk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcg
TWVzc2FnZVdvcmtlckNvbnRleHRUYXNrKG1lc3NhZ2UsIGNoYW5uZWxzKSk7CiAgICAgfQogCiBw
cml2YXRlOgpAQCAtNzcsNyArNzcsNyBAQCBjbGFzcyBNZXNzYWdlV29ya2VyVGFzayA6IHB1Ymxp
YyBTY3JpcHRFCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8TWVzc2FnZVdvcmtlclRh
c2s+IGNyZWF0ZShQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2FnZSwgUGFz
c093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMsIFdvcmtlck1lc3NhZ2lu
Z1Byb3h5KiBtZXNzYWdpbmdQcm94eSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgTWVzc2Fn
ZVdvcmtlclRhc2sobWVzc2FnZSwgY2hhbm5lbHMsIG1lc3NhZ2luZ1Byb3h5KTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBNZXNzYWdlV29ya2VyVGFzayhtZXNzYWdlLCBjaGFubmVscywg
bWVzc2FnaW5nUHJveHkpKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0xMDgsNyArMTA4LDcgQEAg
Y2xhc3MgV29ya2VyRXhjZXB0aW9uVGFzayA6IHB1YmxpYyBTY3JpcAogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzT3duUHRyPFdvcmtlckV4Y2VwdGlvblRhc2s+IGNyZWF0ZShjb25zdCBTdHJpbmcm
IGVycm9yTWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBX
b3JrZXJNZXNzYWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IFdvcmtlckV4Y2VwdGlvblRhc2soZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLCBzb3Vy
Y2VVUkwsIG1lc3NhZ2luZ1Byb3h5KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3Jr
ZXJFeGNlcHRpb25UYXNrKGVycm9yTWVzc2FnZSwgbGluZU51bWJlciwgc291cmNlVVJMLCBtZXNz
YWdpbmdQcm94eSkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE0NCw3ICsxNDQsNyBAQCBjbGFz
cyBXb3JrZXJDb250ZXh0RGVzdHJveWVkVGFzayA6IHB1YmxpCiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8V29ya2VyQ29udGV4dERlc3Ryb3llZFRhc2s+IGNyZWF0ZShXb3JrZXJNZXNz
YWdpbmdQcm94eSogbWVzc2FnaW5nUHJveHkpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdv
cmtlckNvbnRleHREZXN0cm95ZWRUYXNrKG1lc3NhZ2luZ1Byb3h5KTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBXb3JrZXJDb250ZXh0RGVzdHJveWVkVGFzayhtZXNzYWdpbmdQcm94eSkp
OwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE2NSw3ICsxNjUsNyBAQCBjbGFzcyBXb3JrZXJUZXJt
aW5hdGVUYXNrIDogcHVibGljIFNjcmlwCiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8
V29ya2VyVGVybWluYXRlVGFzaz4gY3JlYXRlKFdvcmtlck1lc3NhZ2luZ1Byb3h5KiBtZXNzYWdp
bmdQcm94eSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV29ya2VyVGVybWluYXRlVGFzayht
ZXNzYWdpbmdQcm94eSk7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGVybWlu
YXRlVGFzayhtZXNzYWdpbmdQcm94eSkpOwogICAgIH0KIAogcHJpdmF0ZToKQEAgLTE4Niw3ICsx
ODYsNyBAQCBjbGFzcyBXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2sgOiBwCiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrPiBj
cmVhdGUoV29ya2VyTWVzc2FnaW5nUHJveHkqIG1lc3NhZ2luZ1Byb3h5LCBib29sIGNvbmZpcm1p
bmdNZXNzYWdlLCBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKICAgICB7Ci0gICAgICAgIHJldHVy
biBuZXcgV29ya2VyVGhyZWFkQWN0aXZpdHlSZXBvcnRUYXNrKG1lc3NhZ2luZ1Byb3h5LCBjb25m
aXJtaW5nTWVzc2FnZSwgaGFzUGVuZGluZ0FjdGl2aXR5KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0
UHRyKG5ldyBXb3JrZXJUaHJlYWRBY3Rpdml0eVJlcG9ydFRhc2sobWVzc2FnaW5nUHJveHksIGNv
bmZpcm1pbmdNZXNzYWdlLCBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKICAgICB9CiAKIHByaXZhdGU6
CkluZGV4OiBXZWJDb3JlL3dvcmtlcnMvV29ya2VyUnVuTG9vcC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS93b3JrZXJzL1dvcmtlclJ1bkxvb3AuY3BwCShyZXZpc2lvbiA2ODI4MikKKysrIFdl
YkNvcmUvd29ya2Vycy9Xb3JrZXJSdW5Mb29wLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyAr
ODgsNyBAQCBwcml2YXRlOgogfTsKIAogV29ya2VyUnVuTG9vcDo6V29ya2VyUnVuTG9vcCgpCi0g
ICAgOiBtX3NoYXJlZFRpbWVyKG5ldyBXb3JrZXJTaGFyZWRUaW1lcikKKyAgICA6IG1fc2hhcmVk
VGltZXIoYWRvcHRQdHIobmV3IFdvcmtlclNoYXJlZFRpbWVyKSkKICAgICAsIG1fbmVzdGVkQ291
bnQoMCkKICAgICAsIG1fdW5pcXVlSWQoMCkKIHsKQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFdv
cmtlclJ1bkxvb3A6OnBvc3RUYXNrRm9yTW9kZShQYXNzCiAKIFBhc3NPd25QdHI8V29ya2VyUnVu
TG9vcDo6VGFzaz4gV29ya2VyUnVuTG9vcDo6VGFzazo6Y3JlYXRlKFBhc3NPd25QdHI8U2NyaXB0
RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaywgY29uc3QgU3RyaW5nJiBtb2RlKQogewotICAg
IHJldHVybiBuZXcgVGFzayh0YXNrLCBtb2RlKTsKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFRh
c2sodGFzaywgbW9kZSkpOwogfQogCiB2b2lkIFdvcmtlclJ1bkxvb3A6OlRhc2s6OnBlcmZvcm1U
YXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkluZGV4OiBXZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcAkocmV2aXNpb24gNjgyODIpCisrKyBXZWJDb3JlL3dvcmtl
cnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODksNyArODksNyBA
QCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9hZEFzeW5jaHJvbm91CiAKIFBhc3NPd25QdHI8
UmVzb3VyY2VSZXF1ZXN0PiBXb3JrZXJTY3JpcHRMb2FkZXI6OmNyZWF0ZVJlc291cmNlUmVxdWVz
dCgpCiB7Ci0gICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdChuZXcgUmVzb3VyY2VS
ZXF1ZXN0KG1fdXJsKSk7CisgICAgT3duUHRyPFJlc291cmNlUmVxdWVzdD4gcmVxdWVzdCA9IGFk
b3B0UHRyKG5ldyBSZXNvdXJjZVJlcXVlc3QobV91cmwpKTsKICAgICByZXF1ZXN0LT5zZXRIVFRQ
TWV0aG9kKCJHRVQiKTsKICAgICByZXF1ZXN0LT5zZXRUYXJnZXRUeXBlKG1fdGFyZ2V0VHlwZSk7
CiAgICAgcmV0dXJuIHJlcXVlc3QucmVsZWFzZSgpOwpJbmRleDogV2ViQ29yZS93b3JrZXJzL1dv
cmtlclRocmVhZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVh
ZC5jcHAJKHJldmlzaW9uIDY4MjgyKQorKysgV2ViQ29yZS93b3JrZXJzL1dvcmtlclRocmVhZC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY1LDEyICs2NSwxMyBAQCBzdHJ1Y3QgV29ya2VyVGhyZWFk
U3RhcnR1cERhdGEgOiBOb25jb3B5CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V29y
a2VyVGhyZWFkU3RhcnR1cERhdGE+IGNyZWF0ZShjb25zdCBLVVJMJiBzY3JpcHRVUkwsIGNvbnN0
IFN0cmluZyYgdXNlckFnZW50LCBjb25zdCBTdHJpbmcmIHNvdXJjZUNvZGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gbmV3IFdvcmtlclRocmVhZFN0YXJ0dXBEYXRhKHNjcmlwdFVSTCwgdXNlckFn
ZW50LCBzb3VyY2VDb2RlKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBXb3JrZXJUaHJl
YWRTdGFydHVwRGF0YShzY3JpcHRVUkwsIHVzZXJBZ2VudCwgc291cmNlQ29kZSkpOwogICAgIH0K
IAogICAgIEtVUkwgbV9zY3JpcHRVUkw7CiAgICAgU3RyaW5nIG1fdXNlckFnZW50OwogICAgIFN0
cmluZyBtX3NvdXJjZUNvZGU7CisKIHByaXZhdGU6CiAgICAgV29ya2VyVGhyZWFkU3RhcnR1cERh
dGEoY29uc3QgS1VSTCYgc2NyaXB0VVJMLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VDb2RlKTsKIH07CkBAIC0xNjYsNyArMTY3LDcgQEAgY2xhc3MgV29ya2Vy
VGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrIDogcAogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPFdvcmtlclRocmVhZFNodXRkb3duRmluaXNoVGFzaz4gY3JlYXRlKCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgV29ya2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrKCk7CisgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgV29ya2VyVGhyZWFkU2h1dGRvd25GaW5pc2hUYXNrKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCAqY29udGV4dCkKQEAgLTE4NSw3ICsxODYsNyBAQCBjbGFzcyBXb3JrZXJUaHJlYWRTaHV0ZG93
blN0YXJ0VGFzayA6IHB1CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8V29ya2VyVGhy
ZWFkU2h1dGRvd25TdGFydFRhc2s+IGNyZWF0ZSgpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3
IFdvcmtlclRocmVhZFNodXRkb3duU3RhcnRUYXNrKCk7CisgICAgICAgIHJldHVybiBhZG9wdFB0
cihuZXcgV29ya2VyVGhyZWFkU2h1dGRvd25TdGFydFRhc2spOwogICAgIH0KIAogICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0ICpjb250ZXh0KQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>