<?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>20416</bug_id>
          
          <creation_ts>2008-08-17 01:54:09 -0700</creation_ts>
          <short_desc>Made room for a free word in JSCell</short_desc>
          <delta_ts>2008-08-17 13:24:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>zwarich</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>88662</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-08-17 01:54:09 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88663</commentid>
    <comment_count>1</comment_count>
      <attachid>22840</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-08-17 01:56:15 -0700</bug_when>
    <thetext>Created attachment 22840
patch

Mostly mechanical. SunSpider says no change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88664</commentid>
    <comment_count>2</comment_count>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-08-17 03:30:14 -0700</bug_when>
    <thetext>I&apos;ll review this soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88682</commentid>
    <comment_count>3</comment_count>
      <attachid>22840</attachid>
    <who name="Cameron Zwarich (cpst)">zwarich</who>
    <bug_when>2008-08-17 09:57:58 -0700</bug_when>
    <thetext>Comment on attachment 22840
patch

It seems to be our style for member variables of *Data structs to not have an &quot;m_&quot; prefix, so you should do that for JSCallbackObjectData, ArgumentsData, RegExpObjectData, and JSDOMWindowBaseData, unless we somehow reach an agreement that the existing style should be changed. There is also a stray WebCore xcodeproj change, although that seems to happen whenever you open it with the new version, so someone should check it in for all the projects.

Other than that, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88683</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-08-17 12:50:55 -0700</bug_when>
    <thetext>&gt; It seems to be our style for member variables of *Data structs to not have an
&gt; &quot;m_&quot; prefix

Yeah, I think that&apos;s generally the style I&apos;ve been using.

&gt; so you should do that for JSCallbackObjectData, ArgumentsData,
&gt; RegExpObjectData, and JSDOMWindowBaseData

Fixed.

&gt; unless we somehow reach an agreement
&gt; that the existing style should be changed.

I do think there&apos;s a lack of consensus in this area. We should probably talk it over and write something up in the style guidelines. One drawback to the &quot;no m_&quot; rule is that constructors, which have to differentiate between arguments and data members of the same name, get a little weird. I&apos;ve been using a trailing &quot;_&quot; to solve that problem, but that&apos;s actually the *inverse* of the traditional C++ style.

&gt; There is also a stray WebCore
&gt; xcodeproj change, although that seems to happen whenever you open it with the
&gt; new version, so someone should check it in for all the projects.

I&apos;ll take care of this in a separate patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88686</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2008-08-17 13:24:23 -0700</bug_when>
    <thetext>Committed revision 35807.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22840</attachid>
            <date>2008-08-17 01:56:15 -0700</date>
            <delta_ts>2008-08-17 09:57:58 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch-free-a-word.txt</filename>
            <type>text/plain</type>
            <size>128948</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1ODA2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMDgtMDgtMTcgIEdlb2ZmcmV5
IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIE1hZGUgcm9vbSBmb3IgYSBmcmVlIHdvcmQgaW4g
SlNDZWxsLgorICAgICAgICAKKyAgICAgICAgSSBjaGFuZ2VkIEpTQ2FsbGJhY2tPYmplY3REYXRh
LCBBcmd1bWVudHMsIEpTQXJyYXksIGFuZCBSZWdFeHBPYmplY3QgdG8KKyAgICAgICAgc3RvcmUg
YXV4aWxpYXJ5IGRhdGEgaW4gYSBzZWNvbmRhcnkgc3RydWN0dXJlLgorCisgICAgICAgIEkgY2hh
bmdlZCBJbnRlcm5hbEZ1bmN0aW9uIHRvIHN0b3JlIHRoZSBmdW5jdGlvbidzIG5hbWUgaW4gdGhl
IHByb3BlcnR5CisgICAgICAgIG1hcC4KKyAgICAgICAgCisgICAgICAgIEkgY2hhbmdlZCBKU0ds
b2JhbE9iamVjdERhdGEgdG8gdXNlIGEgdmlydHVhbCBkZXN0cnVjdG9yLCBzbyBXZWJDb3JlJ3MK
KyAgICAgICAgSlNET01XaW5kb3dCYXNlRGF0YSBjb3VsZCBpbmhlcml0IGZyb20gaXQgc2FmZWx5
LiAoSXQncyBhIHN0cmFuZ2UgZGVzaWduCisgICAgICAgIGZvciBKU0RPTVdpbmRvd0Jhc2UgdG8g
YWxsb2NhdGUgYW4gb2JqZWN0IHRoYXQgSlNHbG9iYWxPYmplY3QgZGVsZXRlcywKKyAgICAgICAg
YnV0IHRoYXQncyByZWFsbHkgb3VyIG9ubHkgb3B0aW9uLCBnaXZlbiB0aGUgc2l6ZSBjb25zdHJh
aW50LikKKyAgICAgICAgCisgICAgICAgIEkgYWxzbyBhZGRlZCBhIGJ1bmNoIG9mIGNvbXBpbGUt
dGltZSBBU1NFUlRzLCBhbmQgcmVtb3ZlZCBsb3RzIG9mIGNvbW1lbnRzCisgICAgICAgIGluIEpT
T2JqZWN0LmggYmVjYXVzZSB0aGV5IHdlcmUgb2Z0ZW4gb3V0IG9mIGRhdGUsIGFuZCB0aGV5IGdv
dCBpbiB0aGUKKyAgICAgICAgd2F5IG9mIHJlYWRpbmcgd2hhdCB3YXMgYWN0dWFsbHkgZ29pbmcg
b24uCisgICAgICAgIAorICAgICAgICBBbHNvIHJlbmFtZWQgSlNBcnJheTo6Z2V0TGVuZ3RoIHRv
IEpTQXJyYXk6Omxlbmd0aCwgdG8gbWF0Y2ggb3VyIHN0eWxlCisgICAgICAgIGd1aWRlbGluZXMu
CisKIDIwMDgtMDgtMTYgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5leHAJKHJldmlzaW9uIDM1ODA2KQorKysgSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
ZXhwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzEsMTEgKzEzMSw2IEBAIF9fWk4zS0pTMTRKU0dsb2Jh
bE9iamVjdEQyRXYKIF9fWk4zS0pTMTRKU0dsb2JhbE9iamVjdG53RW1QTlNfMTJKU0dsb2JhbERh
dGFFCiBfX1pOM0tKUzE0Y29uc3RydWN0QXJyYXlFUE5TXzlFeGVjU3RhdGVFUktOU183QXJnTGlz
dEUKIF9fWk4zS0pTMTVKU1dyYXBwZXJPYmplY3Q0bWFya0V2Ci1fX1pOM0tKUzE2SW50ZXJuYWxG
dW5jdGlvbjE0ZGVsZXRlUHJvcGVydHlFUE5TXzlFeGVjU3RhdGVFUktOU18xMElkZW50aWZpZXJF
Ci1fX1pOM0tKUzE2SW50ZXJuYWxGdW5jdGlvbjE4Z2V0T3duUHJvcGVydHlTbG90RVBOU185RXhl
Y1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVJOU18xMlByb3BlcnR5U2xvdEUKLV9fWk4zS0pTMTZJ
bnRlcm5hbEZ1bmN0aW9uM3B1dEVQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVQTlNf
N0pTVmFsdWVFCi1fX1pOM0tKUzE2SW50ZXJuYWxGdW5jdGlvbjRpbmZvRQotX19aTjNLSlMxNklu
dGVybmFsRnVuY3Rpb25DMkVQTlNfMTdGdW5jdGlvblByb3RvdHlwZUVSS05TXzEwSWRlbnRpZmll
ckUKIF9fWk4zS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MTRkZWxldGVQcm9wZXJ0eUVQTlNfOUV4ZWNT
dGF0ZUVSS05TXzEwSWRlbnRpZmllckUKIF9fWk4zS0pTMTZKU1ZhcmlhYmxlT2JqZWN0MTZnZXRQ
cm9wZXJ0eU5hbWVzRVBOU185RXhlY1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RQogX19a
TjNLSlMxNkpTVmFyaWFibGVPYmplY3QxNnNldFJlZ2lzdGVyQXJyYXlFUE5TXzhSZWdpc3RlckVt
CkBAIC0yMDgsNyArMjAzLDYgQEAgX19aTjNLSlM4SlNPYmplY3QxMmxvb2t1cFNldHRlckVQTlNf
OUV4ZQogX19aTjNLSlM4SlNPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185RXhlY1N0YXRlRVJL
TlNfMTBJZGVudGlmaWVyRQogX19aTjNLSlM4SlNPYmplY3QxNGRlbGV0ZVByb3BlcnR5RVBOU185
RXhlY1N0YXRlRWoKIF9fWk4zS0pTOEpTT2JqZWN0MTZnZXRQcm9wZXJ0eU5hbWVzRVBOU185RXhl
Y1N0YXRlRVJOU18xN1Byb3BlcnR5TmFtZUFycmF5RQotX19aTjNLSlM4SlNPYmplY3QxN3B1dERp
cmVjdEZ1bmN0aW9uRVBOU18xNkludGVybmFsRnVuY3Rpb25FagogX19aTjNLSlM4SlNPYmplY3Qx
N3B1dFdpdGhBdHRyaWJ1dGVzRVBOU185RXhlY1N0YXRlRVJLTlNfMTBJZGVudGlmaWVyRVBOU183
SlNWYWx1ZUVqCiBfX1pOM0tKUzhKU09iamVjdDE3cHV0V2l0aEF0dHJpYnV0ZXNFUE5TXzlFeGVj
U3RhdGVFalBOU183SlNWYWx1ZUVqCiBfX1pOM0tKUzhKU09iamVjdDE4Z2V0T3duUHJvcGVydHlT
bG90RVBOU185RXhlY1N0YXRlRWpSTlNfMTJQcm9wZXJ0eVNsb3RFCkBAIC0yNjgsNyArMjYyLDYg
QEAgX19aTkszS0pTMTJTdHJpbmdPYmplY3QxMnRvVGhpc1N0cmluZ0VQTgogX19aTkszS0pTMTJT
dHJpbmdPYmplY3Q4dG9TdHJpbmdFUE5TXzlFeGVjU3RhdGVFCiBfX1pOSzNLSlMxNEpTR2xvYmFs
T2JqZWN0MTRpc0R5bmFtaWNTY29wZUV2CiBfX1pOSzNLSlMxNEpTR2xvYmFsT2JqZWN0MTR0b0ds
b2JhbE9iamVjdEVQTlNfOUV4ZWNTdGF0ZUUKLV9fWk5LM0tKUzE2SW50ZXJuYWxGdW5jdGlvbjIx
aW1wbGVtZW50c0hhc0luc3RhbmNlRXYKIF9fWk5LM0tKUzE2SlNWYXJpYWJsZU9iamVjdDE2aXNW
YXJpYWJsZU9iamVjdEV2CiBfX1pOSzNLSlMxNkpTVmFyaWFibGVPYmplY3QyMWdldFByb3BlcnR5
QXR0cmlidXRlc0VQTlNfOUV4ZWNTdGF0ZUVSS05TXzEwSWRlbnRpZmllckVSagogX19aTkszS0pT
MTdEZWJ1Z2dlckNhbGxGcmFtZTEwdGhpc09iamVjdEV2CkBAIC0zMTYsOCArMzA5LDggQEAgX19a
VFZOM0tKUzEySlNOdW1iZXJDZWxsRQogX19aVFZOM0tKUzEyU3RyaW5nT2JqZWN0RQogX19aVFZO
M0tKUzE0SlNHbG9iYWxPYmplY3RFCiBfX1pUVk4zS0pTMTVKU1dyYXBwZXJPYmplY3RFCi1fX1pU
Vk4zS0pTMTZJbnRlcm5hbEZ1bmN0aW9uRQogX19aVFZOM0tKUzE2SlNWYXJpYWJsZU9iamVjdEUK
IF9fWlRWTjNLSlM4SlNPYmplY3RFCiBfanNjb3JlX2Zhc3RtYWxsb2NfaW50cm9zcGVjdGlvbgog
X2tKU0NsYXNzRGVmaW5pdGlvbkVtcHR5CitfX1pOM0tKUzhKU09iamVjdDE3cHV0RGlyZWN0RnVu
Y3Rpb25FUE5TXzlFeGVjU3RhdGVFUE5TXzE2SW50ZXJuYWxGdW5jdGlvbkVqCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMzU4MDUpCisr
KyBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsMTAgKzM2LDEyIEBACiAKIG5hbWVzcGFjZSBLSlMgewogCitBU1NFUlRfQ0xBU1Nf
RklUU19JTl9DRUxMKEpTQ2FsbGJhY2tGdW5jdGlvbik7CisKIGNvbnN0IENsYXNzSW5mbyBKU0Nh
bGxiYWNrRnVuY3Rpb246OmluZm8gPSB7ICJDYWxsYmFja0Z1bmN0aW9uIiwgJkludGVybmFsRnVu
Y3Rpb246OmluZm8sIDAsIDAgfTsKIAogSlNDYWxsYmFja0Z1bmN0aW9uOjpKU0NhbGxiYWNrRnVu
Y3Rpb24oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2Fs
bGJhY2ssIGNvbnN0IElkZW50aWZpZXImIG5hbWUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b3R5cGUoKSwgbmFtZSkKKyAg
ICA6IEludGVybmFsRnVuY3Rpb24oZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5m
dW5jdGlvblByb3RvdHlwZSgpLCBuYW1lKQogICAgICwgbV9jYWxsYmFjayhjYWxsYmFjaykKIHsK
IH0KSW5kZXg6IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5jcHAJKHJldmlzaW9u
IDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiwxMCArMzIsMTEgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKK0FTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoSlNDYWxsYmFja09iamVjdDxKU09iamVjdD4pOworQVNTRVJU
X0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pik7CisK
IC8vIERlZmluZSB0aGUgdHdvIHR5cGVzIG9mIEpTQ2FsbGJhY2tPYmplY3RzIHdlIHN1cHBvcnQu
CiB0ZW1wbGF0ZSA8PiBjb25zdCBDbGFzc0luZm8gSlNDYWxsYmFja09iamVjdDxKU09iamVjdD46
OmluZm8gPSB7ICJDYWxsYmFja09iamVjdCIsIDAsIDAsIDAgfTsKIHRlbXBsYXRlIDw+IGNvbnN0
IENsYXNzSW5mbyBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6aW5mbyA9IHsgIkNh
bGxiYWNrR2xvYmFsT2JqZWN0IiwgMCwgMCwgMCB9OwogCi1DT01QSUxFX0FTU0VSVChzaXplb2Yo
SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD4pIDw9IENFTExfU0laRSwgZ2xvYmFsX2Nh
bGxiYWNrX29iamVjdF9maXRzX2luX2NlbGwpOwotCiB9IC8vIG5hbWVzcGFjZSBLSlMKSW5kZXg6
IEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaAkocmV2aXNpb24gMzU4MDUpCisrKyBK
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Niw3ICs0Niw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsK
IAotICAgIEpTQ2xhc3NSZWYgY2xhc3NSZWYoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzOyB9Cisg
ICAgSlNDbGFzc1JlZiBjbGFzc1JlZigpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbGJhY2tPYmplY3RE
YXRhLT5tX2NsYXNzOyB9CiAgICAgYm9vbCBpbmhlcml0cyhKU0NsYXNzUmVmKSBjb25zdDsKIAog
cHJpdmF0ZToKQEAgLTgyLDkgKzgyLDI1IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIEpTVmFsdWUq
IHN0YXRpY1ZhbHVlR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQ
cm9wZXJ0eVNsb3QmKTsKICAgICBzdGF0aWMgSlNWYWx1ZSogc3RhdGljRnVuY3Rpb25HZXR0ZXIo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogICAg
IHN0YXRpYyBKU1ZhbHVlKiBjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7CisKKyAgICBzdHJ1Y3QgSlNDYWxsYmFja09iamVj
dERhdGEgeworICAgICAgICBKU0NhbGxiYWNrT2JqZWN0RGF0YSh2b2lkKiBwcml2YXRlRGF0YSwg
SlNDbGFzc1JlZiBqc0NsYXNzKQorICAgICAgICAgICAgOiBtX3ByaXZhdGVEYXRhKHByaXZhdGVE
YXRhKQorICAgICAgICAgICAgLCBtX2NsYXNzKGpzQ2xhc3MpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIEpTQ2xhc3NSZXRhaW4obV9jbGFzcyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IH5KU0NhbGxiYWNrT2JqZWN0RGF0YSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEpTQ2xhc3NS
ZWxlYXNlKG1fY2xhc3MpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkKiBtX3By
aXZhdGVEYXRhOworICAgICAgICBKU0NsYXNzUmVmIG1fY2xhc3M7CisgICAgfTsKICAgICAKLSAg
ICB2b2lkKiBtX3ByaXZhdGVEYXRhOwotICAgIEpTQ2xhc3NSZWYgbV9jbGFzczsKKyAgICBPd25Q
dHI8SlNDYWxsYmFja09iamVjdERhdGE+IG1fY2FsbGJhY2tPYmplY3REYXRhOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVj
dEZ1bmN0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmgJKHJldmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsOCArNDIs
NyBAQCBuYW1lc3BhY2UgS0pTIHsKIHRlbXBsYXRlIDxjbGFzcyBCYXNlPgogSlNDYWxsYmFja09i
amVjdDxCYXNlPjo6SlNDYWxsYmFja09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2xhc3NSZWYg
anNDbGFzcywgSlNWYWx1ZSogcHJvdG90eXBlLCB2b2lkKiBkYXRhKQogICAgIDogQmFzZShwcm90
b3R5cGUpCi0gICAgLCBtX3ByaXZhdGVEYXRhKGRhdGEpCi0gICAgLCBtX2NsYXNzKEpTQ2xhc3NS
ZXRhaW4oanNDbGFzcykpCisgICAgLCBtX2NhbGxiYWNrT2JqZWN0RGF0YShuZXcgSlNDYWxsYmFj
a09iamVjdERhdGEoZGF0YSwganNDbGFzcykpCiB7CiAgICAgaW5pdChleGVjKTsKIH0KQEAgLTUy
LDggKzUxLDcgQEAgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6SlNDYWxsYmFja09iamVjdAogLy8g
RklYTUU6IE1vdmUgdGhpcyBpbnRvIGEgc2VwYXJhdGUgSlNHbG9iYWxDYWxsYmFja09iamVjdCBj
bGFzcyBkZXJpdmVkIGZyb20gdGhpcyBvbmUuCiB0ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KIEpTQ2Fs
bGJhY2tPYmplY3Q8QmFzZT46OkpTQ2FsbGJhY2tPYmplY3QoSlNDbGFzc1JlZiBqc0NsYXNzKQot
ICAgIDogbV9wcml2YXRlRGF0YSgwKQotICAgICwgbV9jbGFzcyhKU0NsYXNzUmV0YWluKGpzQ2xh
c3MpKQorICAgIDogbV9jYWxsYmFja09iamVjdERhdGEobmV3IEpTQ2FsbGJhY2tPYmplY3REYXRh
KDAsIGpzQ2xhc3MpKQogewogICAgIEFTU0VSVChCYXNlOjppc0dsb2JhbE9iamVjdCgpKTsKICAg
ICBpbml0KHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odGhpcyktPmdsb2JhbEV4ZWMoKSk7
CkBAIC02NSw3ICs2Myw3IEBAIHZvaWQgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6aW5pdChFeGVj
U3QKICAgICBBU1NFUlQoZXhlYyk7CiAgICAgCiAgICAgVmVjdG9yPEpTT2JqZWN0SW5pdGlhbGl6
ZUNhbGxiYWNrLCAxNj4gaW5pdFJvdXRpbmVzOwotICAgIEpTQ2xhc3NSZWYganNDbGFzcyA9IG1f
Y2xhc3M7CisgICAgSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsKICAgICBkbyB7CiAg
ICAgICAgIGlmIChKU09iamVjdEluaXRpYWxpemVDYWxsYmFjayBpbml0aWFsaXplID0ganNDbGFz
cy0+aW5pdGlhbGl6ZSkKICAgICAgICAgICAgIGluaXRSb3V0aW5lcy5hcHBlbmQoaW5pdGlhbGl6
ZSk7CkBAIC04MywxOCArODEsMTUgQEAgSlNDYWxsYmFja09iamVjdDxCYXNlPjo6fkpTQ2FsbGJh
Y2tPYmplYwogewogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzKTsKICAgICAK
LSAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IG1fY2xhc3M7IGpzQ2xhc3M7IGpzQ2xhc3Mg
PSBqc0NsYXNzLT5wYXJlbnRDbGFzcykKLSAgICAgICAgaWYgKEpTT2JqZWN0RmluYWxpemVDYWxs
YmFjayBmaW5hbGl6ZSA9IGpzQ2xhc3MtPmZpbmFsaXplKSB7CisgICAgZm9yIChKU0NsYXNzUmVm
IGpzQ2xhc3MgPSBjbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50
Q2xhc3MpCisgICAgICAgIGlmIChKU09iamVjdEZpbmFsaXplQ2FsbGJhY2sgZmluYWxpemUgPSBq
c0NsYXNzLT5maW5hbGl6ZSkKICAgICAgICAgICAgIGZpbmFsaXplKHRoaXNSZWYpOwotICAgICAg
ICB9Ci0gICAgICAgICAgICAKLSAgICBKU0NsYXNzUmVsZWFzZShtX2NsYXNzKTsKIH0KIAogdGVt
cGxhdGUgPGNsYXNzIEJhc2U+CiBVU3RyaW5nIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OmNsYXNz
TmFtZSgpIGNvbnN0CiB7Ci0gICAgVVN0cmluZyB0aGlzQ2xhc3NOYW1lID0gbV9jbGFzcy0+Y2xh
c3NOYW1lKCk7CisgICAgVVN0cmluZyB0aGlzQ2xhc3NOYW1lID0gY2xhc3NSZWYoKS0+Y2xhc3NO
YW1lKCk7CiAgICAgaWYgKCF0aGlzQ2xhc3NOYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4g
dGhpc0NsYXNzTmFtZTsKICAgICAKQEAgLTEwOCw3ICsxMDMsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8QmFzZT46OmdldE93blByb3BlCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVm
KHRoaXMpOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAg
IAotICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gbV9jbGFzczsganNDbGFzczsganNDbGFz
cyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CisgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3Mg
PSBjbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsK
ICAgICAgICAgLy8gb3B0aW9uYWwgb3B0aW1pemF0aW9uIHRvIGJ5cGFzcyBnZXRQcm9wZXJ0eSBp
biBjYXNlcyB3aGVuIHdlIG9ubHkgbmVlZCB0byBrbm93IGlmIHRoZSBwcm9wZXJ0eSBleGlzdHMK
ICAgICAgICAgaWYgKEpTT2JqZWN0SGFzUHJvcGVydHlDYWxsYmFjayBoYXNQcm9wZXJ0eSA9IGpz
Q2xhc3MtPmhhc1Byb3BlcnR5KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikK
QEAgLTE2MSw3ICsxNTYsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OnB1dChFeGVj
U3RhCiAgICAgUmVmUHRyPE9wYXF1ZUpTU3RyaW5nPiBwcm9wZXJ0eU5hbWVSZWY7CiAgICAgSlNW
YWx1ZVJlZiB2YWx1ZVJlZiA9IHRvUmVmKHZhbHVlKTsKICAgICAKLSAgICBmb3IgKEpTQ2xhc3NS
ZWYganNDbGFzcyA9IG1fY2xhc3M7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRD
bGFzcykgeworICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsganNDbGFz
czsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVj
dFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9wZXJ0eSkg
ewogICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCiAgICAgICAgICAgICAgICAgcHJv
cGVydHlOYW1lUmVmID0gT3BhcXVlSlNTdHJpbmc6OmNyZWF0ZShwcm9wZXJ0eU5hbWUudXN0cmlu
ZygpKTsKQEAgLTIwOSw3ICsyMDQsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OmRl
bGV0ZVByb3BlCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwogICAgIFJl
ZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGZvciAoSlND
bGFzc1JlZiBqc0NsYXNzID0gbV9jbGFzczsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBh
cmVudENsYXNzKSB7CisgICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBjbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpT
T2JqZWN0RGVsZXRlUHJvcGVydHlDYWxsYmFjayBkZWxldGVQcm9wZXJ0eSA9IGpzQ2xhc3MtPmRl
bGV0ZVByb3BlcnR5KSB7CiAgICAgICAgICAgICBpZiAoIXByb3BlcnR5TmFtZVJlZikKICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6Y3JlYXRlKHByb3Bl
cnR5TmFtZS51c3RyaW5nKCkpOwpAQCAtMjQ2LDcgKzI0MSw3IEBAIGJvb2wgSlNDYWxsYmFja09i
amVjdDxCYXNlPjo6ZGVsZXRlUHJvcGUKIHRlbXBsYXRlIDxjbGFzcyBCYXNlPgogQ29uc3RydWN0
VHlwZSBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpnZXRDb25zdHJ1Y3REYXRhKENvbnN0cnVjdERh
dGEmIGNvbnN0cnVjdERhdGEpCiB7Ci0gICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBtX2Ns
YXNzOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKKyAgICBmb3Ig
KEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0Ns
YXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAoanNDbGFzcy0+Y2FsbEFzQ29uc3RydWN0
b3IpIHsKICAgICAgICAgICAgIGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uID0gY29uc3Ry
dWN0OwogICAgICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFR5cGVIb3N0OwpAQCAtMjc4LDcgKzI3
Myw3IEBAIEpTT2JqZWN0KiBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojpjb25zdHIKIHRlbXBsYXRl
IDxjbGFzcyBCYXNlPgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjppbXBsZW1lbnRzSGFz
SW5zdGFuY2UoKSBjb25zdAogewotICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gbV9jbGFz
czsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKQorICAgIGZvciAoSlND
bGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3Mt
PnBhcmVudENsYXNzKQogICAgICAgICBpZiAoanNDbGFzcy0+aGFzSW5zdGFuY2UpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKQEAgLTI5MSw3ICsyODYsNyBAQCBib29sIEpTQ2FsbGJh
Y2tPYmplY3Q8QmFzZT46Omhhc0luc3RhbmNlCiAgICAgSlNDb250ZXh0UmVmIGV4ZWNSZWYgPSB0
b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiB0aGlzUmVmID0gdG9SZWYodGhpcyk7CiAgICAg
Ci0gICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBtX2NsYXNzOyBqc0NsYXNzOyBqc0NsYXNz
ID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKKyAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9
IGNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewog
ICAgICAgICBpZiAoSlNPYmplY3RIYXNJbnN0YW5jZUNhbGxiYWNrIGhhc0luc3RhbmNlID0ganND
bGFzcy0+aGFzSW5zdGFuY2UpCiAgICAgICAgICAgICByZXR1cm4gaGFzSW5zdGFuY2UoZXhlY1Jl
ZiwgdGhpc1JlZiwgdG9SZWYodmFsdWUpLCB0b1JlZihleGVjLT5leGNlcHRpb25TbG90KCkpKTsK
ICAgICB9CkBAIC0zMDIsNyArMjk3LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojpo
YXNJbnN0YW5jZQogdGVtcGxhdGUgPGNsYXNzIEJhc2U+CiBDYWxsVHlwZSBKU0NhbGxiYWNrT2Jq
ZWN0PEJhc2U+OjpnZXRDYWxsRGF0YShDYWxsRGF0YSYgY2FsbERhdGEpCiB7Ci0gICAgZm9yIChK
U0NsYXNzUmVmIGpzQ2xhc3MgPSBtX2NsYXNzOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+
cGFyZW50Q2xhc3MpIHsKKyAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNzUmVmKCk7
IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykgewogICAgICAgICBpZiAo
anNDbGFzcy0+Y2FsbEFzRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGNhbGxEYXRhLm5hdGl2ZS5m
dW5jdGlvbiA9IGNhbGw7CiAgICAgICAgICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwpAQCAtMzE4
LDcgKzMxMyw3IEBAIEpTVmFsdWUqIEpTQ2FsbGJhY2tPYmplY3Q8QmFzZT46OmNhbGwoRXgKICAg
ICBKU09iamVjdFJlZiBmdW5jdGlvblJlZiA9IHRvUmVmKGZ1bmN0aW9uT2JqZWN0KTsKICAgICBK
U09iamVjdFJlZiB0aGlzT2JqUmVmID0gdG9SZWYodGhpc1ZhbHVlLT50b1RoaXNPYmplY3QoZXhl
YykpOwogICAgIAotICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gc3RhdGljX2Nhc3Q8SlND
YWxsYmFja09iamVjdDxCYXNlPio+KGZ1bmN0aW9uT2JqZWN0KS0+bV9jbGFzczsganNDbGFzczsg
anNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CisgICAgZm9yIChKU0NsYXNzUmVmIGpz
Q2xhc3MgPSBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Kj4oZnVuY3Rpb25PYmpl
Y3QpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3Mp
IHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzRnVuY3Rpb25DYWxsYmFjayBjYWxsQXNGdW5j
dGlvbiA9IGpzQ2xhc3MtPmNhbGxBc0Z1bmN0aW9uKSB7CiAgICAgICAgICAgICBpbnQgYXJndW1l
bnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oYXJncy5zaXplKCkpOwogICAgICAgICAgICAgVmVj
dG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVudHMoYXJndW1lbnRDb3VudCk7CkBAIC0zMzgsNyAr
MzMzLDcgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpnZXRQcm9wZXJ0eQogICAgIEpT
Q29udGV4dFJlZiBleGVjUmVmID0gdG9SZWYoZXhlYyk7CiAgICAgSlNPYmplY3RSZWYgdGhpc1Jl
ZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gbV9j
bGFzczsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CisgICAgZm9y
IChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBjbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganND
bGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlOYW1l
c0NhbGxiYWNrIGdldFByb3BlcnR5TmFtZXMgPSBqc0NsYXNzLT5nZXRQcm9wZXJ0eU5hbWVzKQog
ICAgICAgICAgICAgZ2V0UHJvcGVydHlOYW1lcyhleGVjUmVmLCB0aGlzUmVmLCB0b1JlZigmcHJv
cGVydHlOYW1lcykpOwogICAgICAgICAKQEAgLTM3OSw3ICszNzQsNyBAQCBkb3VibGUgSlNDYWxs
YmFja09iamVjdDxCYXNlPjo6dG9OdW1iZXIoCiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVm
KGV4ZWMpOwogICAgIEpTT2JqZWN0UmVmIHRoaXNSZWYgPSB0b1JlZih0aGlzKTsKICAgICAKLSAg
ICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IG1fY2xhc3M7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBq
c0NsYXNzLT5wYXJlbnRDbGFzcykKKyAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IGNsYXNz
UmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJlbnRDbGFzcykKICAgICAgICAg
aWYgKEpTT2JqZWN0Q29udmVydFRvVHlwZUNhbGxiYWNrIGNvbnZlcnRUb1R5cGUgPSBqc0NsYXNz
LT5jb252ZXJ0VG9UeXBlKSB7CiAgICAgICAgICAgICBpZiAoSlNWYWx1ZVJlZiB2YWx1ZSA9IGNv
bnZlcnRUb1R5cGUoY3R4LCB0aGlzUmVmLCBrSlNUeXBlTnVtYmVyLCB0b1JlZihleGVjLT5leGNl
cHRpb25TbG90KCkpKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdG9KUyh2YWx1ZSktPmdldE51
bWJlcigpOwpAQCAtMzk0LDcgKzM4OSw3IEBAIFVTdHJpbmcgSlNDYWxsYmFja09iamVjdDxCYXNl
Pjo6dG9TdHJpbmcKICAgICBKU0NvbnRleHRSZWYgY3R4ID0gdG9SZWYoZXhlYyk7CiAgICAgSlNP
YmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXMpOwogICAgIAotICAgIGZvciAoSlNDbGFzc1Jl
ZiBqc0NsYXNzID0gbV9jbGFzczsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENs
YXNzKQorICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gY2xhc3NSZWYoKTsganNDbGFzczsg
anNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKQogICAgICAgICBpZiAoSlNPYmplY3RDb252
ZXJ0VG9UeXBlQ2FsbGJhY2sgY29udmVydFRvVHlwZSA9IGpzQ2xhc3MtPmNvbnZlcnRUb1R5cGUp
IHsKICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWUgPSBjb252ZXJ0VG9UeXBlKGN0eCwgdGhp
c1JlZiwga0pTVHlwZVN0cmluZywgdG9SZWYoZXhlYy0+ZXhjZXB0aW9uU2xvdCgpKSk7CiAgICAg
ICAgICAgICBpZiAodmFsdWUpCkBAIC00MDcsMTkgKzQwMiwxOSBAQCBVU3RyaW5nIEpTQ2FsbGJh
Y2tPYmplY3Q8QmFzZT46OnRvU3RyaW5nCiB0ZW1wbGF0ZSA8Y2xhc3MgQmFzZT4KIHZvaWQgSlND
YWxsYmFja09iamVjdDxCYXNlPjo6c2V0UHJpdmF0ZSh2b2lkKiBkYXRhKQogewotICAgIG1fcHJp
dmF0ZURhdGEgPSBkYXRhOworICAgIG1fY2FsbGJhY2tPYmplY3REYXRhLT5tX3ByaXZhdGVEYXRh
ID0gZGF0YTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIEJhc2U+CiB2b2lkKiBKU0NhbGxiYWNrT2Jq
ZWN0PEJhc2U+OjpnZXRQcml2YXRlKCkKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlRGF0YTsKKyAg
ICByZXR1cm4gbV9jYWxsYmFja09iamVjdERhdGEtPm1fcHJpdmF0ZURhdGE7CiB9CiAKIHRlbXBs
YXRlIDxjbGFzcyBCYXNlPgogYm9vbCBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+Ojppbmhlcml0cyhK
U0NsYXNzUmVmIGMpIGNvbnN0CiB7Ci0gICAgZm9yIChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBtX2Ns
YXNzOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpCisgICAgZm9yIChK
U0NsYXNzUmVmIGpzQ2xhc3MgPSBjbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFz
cy0+cGFyZW50Q2xhc3MpCiAgICAgICAgIGlmIChqc0NsYXNzID09IGMpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKQEAgLTQ0Myw3ICs0MzgsNyBAQCBKU1ZhbHVlKiBKU0NhbGxiYWNr
T2JqZWN0PEJhc2U+OjpzdGF0aWNWCiAgICAgSlNPYmplY3RSZWYgdGhpc1JlZiA9IHRvUmVmKHRo
aXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4gcHJvcGVydHlOYW1lUmVmOwogICAg
IAotICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+bV9jbGFzczsganNDbGFz
czsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKQorICAgIGZvciAoSlNDbGFzc1JlZiBq
c0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3Mt
PnBhcmVudENsYXNzKQogICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRpY1ZhbHVlc1RhYmxl
KiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5zdGF0aWNWYWx1ZXMoZXhlYykpCiAgICAgICAgICAg
ICBpZiAoU3RhdGljVmFsdWVFbnRyeSogZW50cnkgPSBzdGF0aWNWYWx1ZXMtPmdldChwcm9wZXJ0
eU5hbWUudXN0cmluZygpLnJlcCgpKSkKICAgICAgICAgICAgICAgICBpZiAoSlNPYmplY3RHZXRQ
cm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0gZW50cnktPmdldFByb3BlcnR5KSB7CkBAIC00
NjcsNyArNDYyLDcgQEAgSlNWYWx1ZSogSlNDYWxsYmFja09iamVjdDxCYXNlPjo6c3RhdGljRgog
ICAgIGlmICh0aGlzT2JqLT5CYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90MikpCiAgICAgICAgIHJldHVybiBzbG90Mi5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0
eU5hbWUpOwogICAgIAotICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+bV9j
bGFzczsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CisgICAgZm9y
IChKU0NsYXNzUmVmIGpzQ2xhc3MgPSB0aGlzT2JqLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0Ns
YXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKE9wYXF1ZUpTQ2xhc3NT
dGF0aWNGdW5jdGlvbnNUYWJsZSogc3RhdGljRnVuY3Rpb25zID0ganNDbGFzcy0+c3RhdGljRnVu
Y3Rpb25zKGV4ZWMpKSB7CiAgICAgICAgICAgICBpZiAoU3RhdGljRnVuY3Rpb25FbnRyeSogZW50
cnkgPSBzdGF0aWNGdW5jdGlvbnMtPmdldChwcm9wZXJ0eU5hbWUudXN0cmluZygpLnJlcCgpKSkg
ewogICAgICAgICAgICAgICAgIGlmIChKU09iamVjdENhbGxBc0Z1bmN0aW9uQ2FsbGJhY2sgY2Fs
bEFzRnVuY3Rpb24gPSBlbnRyeS0+Y2FsbEFzRnVuY3Rpb24pIHsKQEAgLTQ5MSw3ICs0ODYsNyBA
QCBKU1ZhbHVlKiBKU0NhbGxiYWNrT2JqZWN0PEJhc2U+OjpjYWxsYmFjCiAgICAgSlNPYmplY3RS
ZWYgdGhpc1JlZiA9IHRvUmVmKHRoaXNPYmopOwogICAgIFJlZlB0cjxPcGFxdWVKU1N0cmluZz4g
cHJvcGVydHlOYW1lUmVmOwogICAgIAotICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhp
c09iai0+bV9jbGFzczsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKQor
ICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iai0+Y2xhc3NSZWYoKTsganNDbGFz
czsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKQogICAgICAgICBpZiAoSlNPYmplY3RH
ZXRQcm9wZXJ0eUNhbGxiYWNrIGdldFByb3BlcnR5ID0ganNDbGFzcy0+Z2V0UHJvcGVydHkpIHsK
ICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQogICAgICAgICAgICAgICAgIHByb3Bl
cnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjpjcmVhdGUocHJvcGVydHlOYW1lLnVzdHJpbmco
KSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmNw
cAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQAogCiBuYW1lc3BhY2Ug
S0pTIHsKIAotQ09NUElMRV9BU1NFUlQoc2l6ZW9mKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpIDw9
IENlbGxTaXplPHNpemVvZih2b2lkKik+OjptX3ZhbHVlLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
U2l6ZUFTU0VSVCk7CitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IpOwogCiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2KQogewpJbmRleDogSmF2YVNjcmlw
dENvcmUvVk0vTWFjaGluZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vTWFj
aGluZS5jcHAJKHJldmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0NSw3ICs2NDUsNyBAQCBORVZFUl9JTkxJTkUgYm9vbCBN
YWNoaW5lOjp1bndpbmRDYWxsRnJhCiAgICAgUmVnaXN0ZXIqIGNhbGxGcmFtZSA9IHIgLSBvbGRD
b2RlQmxvY2stPm51bUxvY2FscyAtIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZTsK
IAogICAgIGlmIChEZWJ1Z2dlciogZGVidWdnZXIgPSBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0
KCktPmRlYnVnZ2VyKCkpIHsKLSAgICAgICAgRGVidWdnZXJDYWxsRnJhbWUgZGVidWdnZXJDYWxs
RnJhbWUoZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLCBjb2RlQmxvY2ssIHNjb3BlQ2hhaW4s
IHIsIGV4Y2VwdGlvblZhbHVlKTsKKyAgICAgICAgRGVidWdnZXJDYWxsRnJhbWUgZGVidWdnZXJD
YWxsRnJhbWUoZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLCBjb2RlQmxvY2ssIHNj
b3BlQ2hhaW4sIHIsIGV4Y2VwdGlvblZhbHVlKTsKICAgICAgICAgaWYgKGNhbGxGcmFtZVtSZWdp
c3RlckZpbGU6OkNhbGxlZV0uanNWYWx1ZShleGVjKSkKICAgICAgICAgICAgIGRlYnVnZ2VyLT5y
ZXR1cm5FdmVudChkZWJ1Z2dlckNhbGxGcmFtZSwgY29kZUJsb2NrLT5vd25lck5vZGUtPnNvdXJj
ZUlkKCksIGNvZGVCbG9jay0+b3duZXJOb2RlLT5sYXN0TGluZSgpKTsKICAgICAgICAgZWxzZQpA
QCAtNzIzLDcgKzcyMyw3IEBAIE5FVkVSX0lOTElORSBJbnN0cnVjdGlvbiogTWFjaGluZTo6dGhy
b3cKICAgICB9CiAKICAgICBpZiAoRGVidWdnZXIqIGRlYnVnZ2VyID0gZXhlYy0+ZHluYW1pY0ds
b2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKSB7Ci0gICAgICAgIERlYnVnZ2VyQ2FsbEZyYW1lIGRl
YnVnZ2VyQ2FsbEZyYW1lKGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSwgY29kZUJsb2NrLCBz
Y29wZUNoYWluLCByLCBleGNlcHRpb25WYWx1ZSk7CisgICAgICAgIERlYnVnZ2VyQ2FsbEZyYW1l
IGRlYnVnZ2VyQ2FsbEZyYW1lKGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSwgY29k
ZUJsb2NrLCBzY29wZUNoYWluLCByLCBleGNlcHRpb25WYWx1ZSk7CiAgICAgICAgIGRlYnVnZ2Vy
LT5leGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUsIGNvZGVCbG9jay0+b3duZXJOb2RlLT5zb3Vy
Y2VJZCgpLCBjb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JWUEModlBDKSk7CiAgICAgfQogCkBAIC05
NTUsNyArOTU1LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgTWFjaGluZTo6ZGVidWcoRXhlY1N0YQog
ICAgIGlmICghZGVidWdnZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIERlYnVnZ2VyQ2FsbEZy
YW1lIGRlYnVnZ2VyQ2FsbEZyYW1lKGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSwgY29kZUJs
b2NrLCBzY29wZUNoYWluLCByLCAwKTsKKyAgICBEZWJ1Z2dlckNhbGxGcmFtZSBkZWJ1Z2dlckNh
bGxGcmFtZShleGVjLCBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCksIGNvZGVCbG9jaywgc2Nv
cGVDaGFpbiwgciwgMCk7CiAKICAgICBzd2l0Y2goKERlYnVnSG9va0lEKWRlYnVnSG9va0lEKSB7
CiAgICAgY2FzZSBEaWRFbnRlckNhbGxGcmFtZTogewpJbmRleDogSmF2YVNjcmlwdENvcmUva2pz
L0FyZ3VtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0FyZ3VtZW50
cy5jcHAJKHJldmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0FyZ3VtZW50cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDE0ICszMiwxNyBAQAogCiBuYW1lc3BhY2UgS0pTIHsK
IAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChBcmd1bWVudHMpOworCiBjb25zdCBDbGFzc0lu
Zm8gQXJndW1lbnRzOjppbmZvID0geyAiQXJndW1lbnRzIiwgMCwgMCwgMCB9OwogCiAvLyBFQ01B
IDEwLjEuOAogQXJndW1lbnRzOjpBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiwgY29uc3QgQXJnTGlzdCYgYXJncywgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9u
KQogICAgIDogSlNPYmplY3QoZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5vYmplY3RQcm90
b3R5cGUoKSkKLSAgICAsIG1fYWN0aXZhdGlvbk9iamVjdChhY3RpdmF0aW9uKQotICAgICwgbV9p
bmRleFRvTmFtZU1hcChmdW5jdGlvbiwgYXJncykKKyAgICAsIGQobmV3IEFyZ3VtZW50c0RhdGEo
YWN0aXZhdGlvbiwgZnVuY3Rpb24sIGFyZ3MpKQogeworICAgIEFTU0VSVChhY3RpdmF0aW9uKTsK
KwogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbGVlLCBmdW5jdGlvbiwg
RG9udEVudW0pOwogICAgIHB1dERpcmVjdChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoLCBhcmdzLnNpemUoKSwgRG9udEVudW0pOwogICAKQEAgLTQ3LDcgKzUwLDcgQEAgQXJndW1l
bnRzOjpBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBKUwogICAgIEFyZ0xpc3Q6OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGFyZ3MuZW5kKCk7CiAgICAgZm9yIChBcmdMaXN0Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGFyZ3MuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0LCArK2kpIHsKICAgICAgICAgSWRl
bnRpZmllciBuYW1lID0gSWRlbnRpZmllcjo6ZnJvbShleGVjLCBpKTsKLSAgICAgICAgaWYgKCFt
X2luZGV4VG9OYW1lTWFwLmlzTWFwcGVkKG5hbWUpKQorICAgICAgICBpZiAoIWQtPm1faW5kZXhU
b05hbWVNYXAuaXNNYXBwZWQobmFtZSkpCiAgICAgICAgICAgICBwdXREaXJlY3QobmFtZSwgKCpp
dCkuanNWYWx1ZShleGVjKSwgRG9udEVudW0pOwogICAgIH0KIH0KQEAgLTU1LDE5ICs1OCwxOSBA
QCBBcmd1bWVudHM6OkFyZ3VtZW50cyhFeGVjU3RhdGUqIGV4ZWMsIEpTCiB2b2lkIEFyZ3VtZW50
czo6bWFyaygpIAogewogICAgIEpTT2JqZWN0OjptYXJrKCk7Ci0gICAgaWYgKG1fYWN0aXZhdGlv
bk9iamVjdCAmJiAhbV9hY3RpdmF0aW9uT2JqZWN0LT5tYXJrZWQoKSkKLSAgICAgICAgbV9hY3Rp
dmF0aW9uT2JqZWN0LT5tYXJrKCk7CisgICAgaWYgKCFkLT5tX2FjdGl2YXRpb24tPm1hcmtlZCgp
KQorICAgICAgICBkLT5tX2FjdGl2YXRpb24tPm1hcmsoKTsKIH0KIAogSlNWYWx1ZSogQXJndW1l
bnRzOjptYXBwZWRJbmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgY29uc3QgUHJvcGVydHlTbG90JiBzbG90KQogewogICAgICAgQXJndW1l
bnRzKiB0aGlzT2JqID0gc3RhdGljX2Nhc3Q8QXJndW1lbnRzKj4oc2xvdC5zbG90QmFzZSgpKTsK
LSAgICAgIHJldHVybiB0aGlzT2JqLT5tX2FjdGl2YXRpb25PYmplY3QtPmdldChleGVjLCB0aGlz
T2JqLT5tX2luZGV4VG9OYW1lTWFwW3Byb3BlcnR5TmFtZV0pOworICAgICAgcmV0dXJuIHRoaXNP
YmotPmQtPm1fYWN0aXZhdGlvbi0+Z2V0KGV4ZWMsIHRoaXNPYmotPmQtPm1faW5kZXhUb05hbWVN
YXBbcHJvcGVydHlOYW1lXSk7CiB9CiAKIGJvb2wgQXJndW1lbnRzOjpnZXRPd25Qcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAobV9pbmRleFRvTmFtZU1hcC5pc01hcHBlZChwcm9w
ZXJ0eU5hbWUpKSB7CisgICAgaWYgKGQtPm1faW5kZXhUb05hbWVNYXAuaXNNYXBwZWQocHJvcGVy
dHlOYW1lKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzLCBtYXBwZWRJbmRleEdldHRl
cik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTc3LDE2ICs4MCwxNiBAQCBib29s
IEFyZ3VtZW50czo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTCiAKIHZvaWQgQXJndW1lbnRzOjpw
dXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFs
dWUqIHZhbHVlKQogewotICAgIGlmIChtX2luZGV4VG9OYW1lTWFwLmlzTWFwcGVkKHByb3BlcnR5
TmFtZSkpCi0gICAgICAgIG1fYWN0aXZhdGlvbk9iamVjdC0+cHV0KGV4ZWMsIG1faW5kZXhUb05h
bWVNYXBbcHJvcGVydHlOYW1lXSwgdmFsdWUpOworICAgIGlmIChkLT5tX2luZGV4VG9OYW1lTWFw
LmlzTWFwcGVkKHByb3BlcnR5TmFtZSkpCisgICAgICAgIGQtPm1fYWN0aXZhdGlvbi0+cHV0KGV4
ZWMsIGQtPm1faW5kZXhUb05hbWVNYXBbcHJvcGVydHlOYW1lXSwgdmFsdWUpOwogICAgIGVsc2UK
ICAgICAgICAgSlNPYmplY3Q6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKIH0KIAog
Ym9vbCBBcmd1bWVudHM6OmRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lKSAKIHsKLSAgICBpZiAobV9pbmRleFRvTmFtZU1hcC5pc01h
cHBlZChwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIG1faW5kZXhUb05hbWVNYXAudW5NYXAoZXhl
YywgcHJvcGVydHlOYW1lKTsKKyAgICBpZiAoZC0+bV9pbmRleFRvTmFtZU1hcC5pc01hcHBlZChw
cm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGQtPm1faW5kZXhUb05hbWVNYXAudW5NYXAoZXhlYywg
cHJvcGVydHlOYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvQXJndW1lbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL0FyZ3VtZW50cy5oCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9B
cmd1bWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsMTggQEAgbmFtZXNwYWNlIEtK
UyB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RhdGljIEpTVmFsdWUqIG1hcHBlZEluZGV4R2V0
dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNs
b3QpOwogCi0gICAgICAgIEpTQWN0aXZhdGlvbiogbV9hY3RpdmF0aW9uT2JqZWN0OwotICAgICAg
ICBtdXRhYmxlIEluZGV4VG9OYW1lTWFwIG1faW5kZXhUb05hbWVNYXA7CisgICAgICAgIHN0cnVj
dCBBcmd1bWVudHNEYXRhIHsKKyAgICAgICAgICAgIEFyZ3VtZW50c0RhdGEoSlNBY3RpdmF0aW9u
KiBhY3RpdmF0aW9uLCBKU0Z1bmN0aW9uKiBmdW5jdGlvbiwgY29uc3QgQXJnTGlzdCYgYXJncykK
KyAgICAgICAgICAgICAgICA6IG1fYWN0aXZhdGlvbihhY3RpdmF0aW9uKQorICAgICAgICAgICAg
ICAgICwgbV9pbmRleFRvTmFtZU1hcChmdW5jdGlvbiwgYXJncykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgSlNBY3RpdmF0aW9uKiBtX2FjdGl2YXRpb247Cisg
ICAgICAgICAgICBtdXRhYmxlIEluZGV4VG9OYW1lTWFwIG1faW5kZXhUb05hbWVNYXA7CisgICAg
ICAgIH07CisgICAgICAgIAorICAgICAgICBPd25QdHI8QXJndW1lbnRzRGF0YT4gZDsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBLSlMKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9BcnJheUNv
bnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQXJyYXlDb25z
dHJ1Y3Rvci5jcHAJKHJldmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0FycmF5
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw4ICszMSwxMCBAQAogCiBuYW1l
c3BhY2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChBcnJheUNvbnN0cnVjdG9y
KTsKKwogQXJyYXlDb25zdHJ1Y3Rvcjo6QXJyYXlDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMs
IEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSwgQXJyYXlQcm90b3R5cGUqIGFy
cmF5UHJvdG90eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbihmdW5jdGlvblByb3RvdHlwZSwg
SWRlbnRpZmllcihleGVjLCBhcnJheVByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkp
CisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCBJZGVudGlm
aWVyKGV4ZWMsIGFycmF5UHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAg
ICAvLyBFQ01BIDE1LjQuMy4xIEFycmF5LnByb3RvdHlwZQogICAgIHB1dERpcmVjdChleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBhcnJheVByb3RvdHlwZSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0FycmF5UHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvQXJyYXlQcm90b3R5cGUu
Y3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9BcnJheVByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEtKUyB7
CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoQXJyYXlQcm90b3R5cGUpOworCiBzdGF0aWMg
SlNWYWx1ZSogYXJyYXlQcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpT
VmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CiBzdGF0aWMgSlNWYWx1ZSogYXJyYXlQcm90b0Z1bmNU
b0xvY2FsZVN0cmluZyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdM
aXN0Jik7CiBzdGF0aWMgSlNWYWx1ZSogYXJyYXlQcm90b0Z1bmNDb25jYXQoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOwpAQCAtMjYyLDcgKzI2NCw3IEBA
IEpTVmFsdWUqIGFycmF5UHJvdG9GdW5jQ29uY2F0KEV4ZWNTdGF0ZSoKICAgICB3aGlsZSAoMSkg
ewogICAgICAgICBpZiAoY3VyQXJnLT5pc09iamVjdCgmSlNBcnJheTo6aW5mbykpIHsKICAgICAg
ICAgICAgIEpTQXJyYXkqIGN1ckFycmF5ID0gc3RhdGljX2Nhc3Q8SlNBcnJheSo+KGN1ckFyZyk7
Ci0gICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBjdXJBcnJheS0+Z2V0TGVuZ3RoKCk7Cisg
ICAgICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBjdXJBcnJheS0+bGVuZ3RoKCk7CiAgICAgICAg
ICAgICBmb3IgKHVuc2lnbmVkIGsgPSAwOyBrIDwgbGVuZ3RoOyArK2spIHsKICAgICAgICAgICAg
ICAgICBpZiAoSlNWYWx1ZSogdiA9IGdldFByb3BlcnR5KGV4ZWMsIGN1ckFycmF5LCBrKSkKICAg
ICAgICAgICAgICAgICAgICAgYXJyLT5wdXQoZXhlYywgbiwgdik7CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9ranMvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvQm9vbGVhbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsMTAgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lO
X0NFTEwoQm9vbGVhbkNvbnN0cnVjdG9yKTsKKwogQm9vbGVhbkNvbnN0cnVjdG9yOjpCb29sZWFu
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Q
cm90b3R5cGUsIEJvb2xlYW5Qcm90b3R5cGUqIGJvb2xlYW5Qcm90b3R5cGUpCi0gICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKGZ1bmN0aW9uUHJvdG90eXBlLCBJZGVudGlmaWVyKGV4ZWMsIGJvb2xlYW5Q
cm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQorICAgIDogSW50ZXJuYWxGdW5jdGlv
bihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgSWRlbnRpZmllcihleGVjLCBib29sZWFuUHJvdG90
eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICBwdXREaXJlY3QoZXhlYy0+cHJv
cGVydHlOYW1lcygpLnByb3RvdHlwZSwgYm9vbGVhblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250
RGVsZXRlIHwgUmVhZE9ubHkpOwogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvQm9vbGVhbk9i
amVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0Jvb2xlYW5PYmplY3Qu
Y3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9Cb29sZWFuT2JqZWN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjMsNiArMjMsOCBAQAogCiBuYW1lc3BhY2UgS0pTIHsK
IAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChCb29sZWFuT2JqZWN0KTsKKwogY29uc3QgQ2xh
c3NJbmZvIEJvb2xlYW5PYmplY3Q6OmluZm8gPSB7ICJCb29sZWFuIiwgMCwgMCwgMCB9OwogCiBC
b29sZWFuT2JqZWN0OjpCb29sZWFuT2JqZWN0KEpTT2JqZWN0KiBwcm90b3R5cGUpCkluZGV4OiBK
YXZhU2NyaXB0Q29yZS9ranMvQm9vbGVhblByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL0Jvb2xlYW5Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAzNTgwNSkKKysr
IEphdmFTY3JpcHRDb3JlL2tqcy9Cb29sZWFuUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksOCBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChCb29sZWFuUHJvdG90eXBlKTsKKwogLy8gRnVuY3Rpb25zCiBzdGF0aWMgSlNWYWx1
ZSogYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1
ZSosIGNvbnN0IEFyZ0xpc3QmKTsKIHN0YXRpYyBKU1ZhbHVlKiBib29sZWFuUHJvdG9GdW5jVmFs
dWVPZihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CkBA
IC00MCw4ICs0Miw4IEBAIEJvb2xlYW5Qcm90b3R5cGU6OkJvb2xlYW5Qcm90b3R5cGUoRXhlY1MK
IHsKICAgICBzZXRJbnRlcm5hbFZhbHVlKGpzQm9vbGVhbihmYWxzZSkpOwogCi0gICAgcHV0RGly
ZWN0RnVuY3Rpb24obmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblBy
b3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBib29sZWFuUHJvdG9G
dW5jVG9TdHJpbmcpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IChleGVj
KSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJv
cGVydHlOYW1lcygpLnZhbHVlT2YsIGJvb2xlYW5Qcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVudW0p
OworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rp
b24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0
cmluZywgYm9vbGVhblByb3RvRnVuY1RvU3RyaW5nKSwgRG9udEVudW0pOworICAgIHB1dERpcmVj
dEZ1bmN0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rp
b25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS52YWx1ZU9mLCBib29sZWFuUHJv
dG9GdW5jVmFsdWVPZiksIERvbnRFbnVtKTsKIH0KIAogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvRGF0ZUNvbnN0cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
RGF0ZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvRGF0ZUNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDUsMTggKzQ1LDIwIEBA
IG5hbWVzcGFjZSBLSlMgewogCiAvLyBUT0RPOiBNYWtlVGltZSAoMTUuOS4xMS4xKSBldGMuID8K
IAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChEYXRlQ29uc3RydWN0b3IpOworCiBzdGF0aWMg
SlNWYWx1ZSogZGF0ZVBhcnNlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0
IEFyZ0xpc3QmKTsKIHN0YXRpYyBKU1ZhbHVlKiBkYXRlTm93KEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKIHN0YXRpYyBKU1ZhbHVlKiBkYXRlVVRDKEV4
ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKIAogRGF0ZUNv
bnN0cnVjdG9yOjpEYXRlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblByb3Rv
dHlwZSogZnVuY3Rpb25Qcm90b3R5cGUsIERhdGVQcm90b3R5cGUqIGRhdGVQcm90b3R5cGUpCi0g
ICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGZ1bmN0aW9uUHJvdG90eXBlLCBJZGVudGlmaWVyKGV4ZWMs
IGRhdGVQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQorICAgIDogSW50ZXJuYWxG
dW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgSWRlbnRpZmllcihleGVjLCBkYXRlUHJv
dG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICAgIHB1dERpcmVjdChleGVj
LT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBkYXRlUHJvdG90eXBlLCBEb250RW51bXxEb250
RGVsZXRlfFJlYWRPbmx5KTsKIAotICAgICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IChleGVjKSBQ
cm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMSwgZXhlYy0+cHJvcGVy
dHlOYW1lcygpLnBhcnNlLCBkYXRlUGFyc2UpLCBEb250RW51bSk7Ci0gICAgICBwdXREaXJlY3RG
dW5jdGlvbihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90
eXBlLCA3LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuVVRDLCBkYXRlVVRDKSwgRG9udEVudW0pOwot
ICAgICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVj
LCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLm5vdywgZGF0ZU5v
dyksIERvbnRFbnVtKTsKKyAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
UHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wYXJzZSwgZGF0ZVBhcnNlKSwgRG9udEVudW0pOworICAgICAgcHV0RGlyZWN0
RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlv
blByb3RvdHlwZSwgNywgZXhlYy0+cHJvcGVydHlOYW1lcygpLlVUQywgZGF0ZVVUQyksIERvbnRF
bnVtKTsKKyAgICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBl
RnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5ub3csIGRhdGVOb3cpLCBEb250RW51bSk7CiAKICAgICAgIHB1dERpcmVjdChleGVjLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCA3LCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERl
bGV0ZSk7CiB9CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRGF0ZVByb3RvdHlwZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0RhdGVQcm90b3R5cGUuY3BwCShyZXZpc2lv
biAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9EYXRlUHJvdG90eXBlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTYsNiArNTYsOCBAQCB1c2luZyBuYW1lc3BhY2UgV1RGOwogCiBuYW1lc3Bh
Y2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChEYXRlUHJvdG90eXBlKTsKKwog
c3RhdGljIEpTVmFsdWUqIGRhdGVQcm90b0Z1bmNHZXREYXRlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0
KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKIHN0YXRpYyBKU1ZhbHVlKiBkYXRlUHJvdG9G
dW5jR2V0RGF5KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3Qm
KTsKIHN0YXRpYyBKU1ZhbHVlKiBkYXRlUHJvdG9GdW5jR2V0RnVsbFllYXIoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOwpJbmRleDogSmF2YVNjcmlwdENv
cmUva2pzL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvRGVidWdnZXJDYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3Jp
cHRDb3JlL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDcg
KzQ5LDcgQEAgY29uc3QgVVN0cmluZyogRGVidWdnZXJDYWxsRnJhbWU6OmZ1bmN0aQogICAgIEpT
RnVuY3Rpb24qIGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxGcmFtZSgp
W1JlZ2lzdGVyRmlsZTo6Q2FsbGVlXS5nZXRKU1ZhbHVlKCkpOwogICAgIGlmICghZnVuY3Rpb24p
CiAgICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiAmZnVuY3Rpb24tPmZ1bmN0aW9uTmFtZSgp
LnVzdHJpbmcoKTsKKyAgICByZXR1cm4gJmZ1bmN0aW9uLT5uYW1lKG1fZXhlYyk7CiB9CiAKIERl
YnVnZ2VyQ2FsbEZyYW1lOjpUeXBlIERlYnVnZ2VyQ2FsbEZyYW1lOjp0eXBlKCkgY29uc3QKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5oCShyZXZpc2lvbiAzNTgwNSkK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9EZWJ1Z2dlckNhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgS0pTIHsKICAgICAKICAgICBjbGFzcyBDb2Rl
QmxvY2s7CisgICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owog
ICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEpTVmFsdWU7CkBAIC00Nyw4ICs0OCw5IEBA
IG5hbWVzcGFjZSBLSlMgewogICAgICAgICAgICAgRnVuY3Rpb25UeXBlCiAgICAgICAgIH07CiAK
LSAgICAgICAgRGVidWdnZXJDYWxsRnJhbWUoSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxP
YmplY3QsIGNvbnN0IENvZGVCbG9jayogY29kZUJsb2NrLCBTY29wZUNoYWluTm9kZSogc2NvcGVD
aGFpbiwgUmVnaXN0ZXIqIHIsIEpTVmFsdWUqIGV4Y2VwdGlvbikKLSAgICAgICAgICAgIDogbV9k
eW5hbWljR2xvYmFsT2JqZWN0KGR5bmFtaWNHbG9iYWxPYmplY3QpCisgICAgICAgIERlYnVnZ2Vy
Q2FsbEZyYW1lKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxPYmplY3QqIGR5bmFtaWNHbG9iYWxP
YmplY3QsIGNvbnN0IENvZGVCbG9jayogY29kZUJsb2NrLCBTY29wZUNoYWluTm9kZSogc2NvcGVD
aGFpbiwgUmVnaXN0ZXIqIHIsIEpTVmFsdWUqIGV4Y2VwdGlvbikKKyAgICAgICAgICAgIDogbV9l
eGVjKGV4ZWMpCisgICAgICAgICAgICAsIG1fZHluYW1pY0dsb2JhbE9iamVjdChkeW5hbWljR2xv
YmFsT2JqZWN0KQogICAgICAgICAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgICAg
ICAgICAsIG1fc2NvcGVDaGFpbihzY29wZUNoYWluKQogICAgICAgICAgICAgLCBtX3JlZ2lzdGVy
cyhyKQpAQCAtNjcsNiArNjksNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICBwcml2YXRlOgogICAg
ICAgICBSZWdpc3RlciogY2FsbEZyYW1lKCkgY29uc3Q7CiAKKyAgICAgICAgRXhlY1N0YXRlKiBt
X2V4ZWM7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBtX2R5bmFtaWNHbG9iYWxPYmplY3Q7CiAg
ICAgICAgIGNvbnN0IENvZGVCbG9jayogbV9jb2RlQmxvY2s7CiAgICAgICAgIFNjb3BlQ2hhaW5O
b2RlKiBtX3Njb3BlQ2hhaW47CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JDb25zdHJ1
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yQ29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvckNvbnN0
cnVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksMTAgQEAKIAogbmFtZXNwYWNl
IEtKUyB7CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoRXJyb3JDb25zdHJ1Y3Rvcik7CisK
IEVycm9yQ29uc3RydWN0b3I6OkVycm9yQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBGdW5j
dGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUsIEVycm9yUHJvdG90eXBlKiBlcnJvclBy
b3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oZnVuY3Rpb25Qcm90b3R5cGUsIElkZW50
aWZpZXIoZXhlYywgZXJyb3JQcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFzc05hbWUpKQorICAg
IDogSW50ZXJuYWxGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgSWRlbnRpZmllcihl
eGVjLCBlcnJvclByb3RvdHlwZS0+Y2xhc3NJbmZvKCktPmNsYXNzTmFtZSkpCiB7CiAgICAgLy8g
RUNNQSAxNS4xMS4zLjEgRXJyb3IucHJvdG90eXBlCiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUsIGVycm9yUHJvdG90eXBlLCBEb250RW51bSB8IERvbnREZWxl
dGUgfCBSZWFkT25seSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRXJyb3JQcm90b3R5cGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9FcnJvclByb3RvdHlwZS5jcHAJ
KHJldmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0Vycm9yUHJvdG90eXBlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksOCBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAor
QVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChFcnJvclByb3RvdHlwZSk7CisKIHN0YXRpYyBKU1Zh
bHVlKiBlcnJvclByb3RvRnVuY1RvU3RyaW5nKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1
ZSosIGNvbnN0IEFyZ0xpc3QmKTsKIAogLy8gRUNNQSAxNS45LjQKQEAgLTQwLDcgKzQyLDcgQEAg
RXJyb3JQcm90b3R5cGU6OkVycm9yUHJvdG90eXBlKEV4ZWNTdGF0ZQogICAgIHB1dERpcmVjdChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSwganNTdHJpbmcoZXhlYywgIkVycm9yIiksIERvbnRF
bnVtKTsKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm1lc3NhZ2UsIGpzU3Ry
aW5nKGV4ZWMsICJVbmtub3duIGVycm9yIiksIERvbnRFbnVtKTsKIAotICAgIHB1dERpcmVjdEZ1
bmN0aW9uKG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5
cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgZXJyb3JQcm90b0Z1bmNUb1N0
cmluZyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihleGVjLCBuZXcgKGV4ZWMp
IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7
CiB9CiAKIEpTVmFsdWUqIGVycm9yUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYpCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNTgwNSkK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsOCArMzIsMTAgQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKK0FTU0VSVF9DTEFT
U19GSVRTX0lOX0NFTEwoRnVuY3Rpb25Db25zdHJ1Y3Rvcik7CisKIEZ1bmN0aW9uQ29uc3RydWN0
b3I6OkZ1bmN0aW9uQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblByb3RvdHlw
ZSogZnVuY3Rpb25Qcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGZ1bmN0aW9uUHJv
dG90eXBlLCBJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+
Y2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5
cGUsIElkZW50aWZpZXIoZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUtPmNsYXNzSW5mbygpLT5jbGFz
c05hbWUpKQogewogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBmdW5jdGlvblByb3RvdHlwZSwgRG9udEVudW0gfCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOwog
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvRnVuY3Rpb25Qcm90b3R5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9u
IDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksMTcgKzI5LDIwIEBACiAKIG5hbWVzcGFjZSBLSlMgewogCitBU1NF
UlRfQ0xBU1NfRklUU19JTl9DRUxMKEZ1bmN0aW9uUHJvdG90eXBlKTsKKwogc3RhdGljIEpTVmFs
dWUqIGZ1bmN0aW9uUHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1Zh
bHVlKiwgY29uc3QgQXJnTGlzdCYpOwogc3RhdGljIEpTVmFsdWUqIGZ1bmN0aW9uUHJvdG9GdW5j
QXBwbHkoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOwog
c3RhdGljIEpTVmFsdWUqIGZ1bmN0aW9uUHJvdG9GdW5jQ2FsbChFeGVjU3RhdGUqLCBKU09iamVj
dCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CiAKIEZ1bmN0aW9uUHJvdG90eXBlOjpGdW5j
dGlvblByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGV4
ZWMpCiB7CiAgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVt
YmVyKGV4ZWMsIDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CiAKLSAgICBw
dXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHRoaXMs
IDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgZnVuY3Rpb25Qcm90b0Z1bmNUb1N0
cmluZyksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFByb3Rv
dHlwZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIDIsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5hcHBseSwg
ZnVuY3Rpb25Qcm90b0Z1bmNBcHBseSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlv
bihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIHRoaXMsIDEsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5jYWxsLCBmdW5jdGlvblByb3RvRnVuY0NhbGwpLCBEb250RW51bSk7CisgICAg
cHV0RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVj
LCB0aGlzLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9TdHJpbmcsIGZ1bmN0aW9uUHJvdG9G
dW5jVG9TdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3
IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCB0aGlzLCAyLCBleGVjLT5wcm9wZXJ0eU5h
bWVzKCkuYXBwbHksIGZ1bmN0aW9uUHJvdG9GdW5jQXBwbHkpLCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCB0
aGlzLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuY2FsbCwgZnVuY3Rpb25Qcm90b0Z1bmNDYWxs
KSwgRG9udEVudW0pOwogfQogCiBzdGF0aWMgSlNWYWx1ZSogY2FsbEZ1bmN0aW9uUHJvdG90eXBl
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKQpAQCAtNTgs
MTcgKzYxLDE3IEBAIENhbGxUeXBlIEZ1bmN0aW9uUHJvdG90eXBlOjpnZXRDYWxsRGF0YSgKIAog
SlNWYWx1ZSogZnVuY3Rpb25Qcm90b0Z1bmNUb1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiwgSlNWYWx1ZSogdGhpc1ZhbHVlLCBjb25zdCBBcmdMaXN0JikKIHsKLSAgICBpZiAoIXRo
aXNWYWx1ZS0+aXNPYmplY3QoJkludGVybmFsRnVuY3Rpb246OmluZm8pKQotICAgICAgICByZXR1
cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwotCi0gICAgSW50ZXJuYWxGdW5jdGlvbiog
ZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxJbnRlcm5hbEZ1bmN0aW9uKj4odGhpc1ZhbHVlKTsKKyAg
ICBpZiAodGhpc1ZhbHVlLT5pc09iamVjdCgmSlNGdW5jdGlvbjo6aW5mbykpIHsKKyAgICAgICAg
SlNGdW5jdGlvbiogZnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4odGhpc1ZhbHVl
KTsKKyAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiICsgZnVuY3Rpb24t
Pm5hbWUoZXhlYykgKyAiKCIgKyBmdW5jdGlvbi0+bV9ib2R5LT5wYXJhbVN0cmluZygpICsgIikg
IiArIGZ1bmN0aW9uLT5tX2JvZHktPnRvU291cmNlU3RyaW5nKCkpOworICAgIH0KIAotICAgIGlm
IChmdW5jdGlvbi0+aW5oZXJpdHMoJkpTRnVuY3Rpb246OmluZm8pKSB7Ci0gICAgICAgIEpTRnVu
Y3Rpb24qIGZpID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KHRoaXNWYWx1ZSk7Ci0gICAgICAg
IHJldHVybiBqc1N0cmluZyhleGVjLCAiZnVuY3Rpb24gIiArIGZpLT5mdW5jdGlvbk5hbWUoKS51
c3RyaW5nKCkgKyAiKCIgKyBmaS0+bV9ib2R5LT5wYXJhbVN0cmluZygpICsgIikgIiArIGZpLT5t
X2JvZHktPnRvU291cmNlU3RyaW5nKCkpOworICAgIGlmICh0aGlzVmFsdWUtPmlzT2JqZWN0KCZJ
bnRlcm5hbEZ1bmN0aW9uOjppbmZvKSkgeworICAgICAgICBJbnRlcm5hbEZ1bmN0aW9uKiBmdW5j
dGlvbiA9IHN0YXRpY19jYXN0PEludGVybmFsRnVuY3Rpb24qPih0aGlzVmFsdWUpOworICAgICAg
ICByZXR1cm4ganNTdHJpbmcoZXhlYywgImZ1bmN0aW9uICIgKyBmdW5jdGlvbi0+bmFtZShleGVj
KSArICIoKSB7XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpOwogICAgIH0KIAotICAgIHJldHVybiBq
c1N0cmluZyhleGVjLCAiZnVuY3Rpb24gIiArIGZ1bmN0aW9uLT5mdW5jdGlvbk5hbWUoKS51c3Ry
aW5nKCkgKyAiKCkge1xuICAgIFtuYXRpdmUgY29kZV1cbn0iKTsKKyAgICByZXR1cm4gdGhyb3dF
cnJvcihleGVjLCBUeXBlRXJyb3IpOwogfQogCiBKU1ZhbHVlKiBmdW5jdGlvblByb3RvRnVuY0Fw
cGx5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvR2xvYmFsRXZhbEZ1bmN0
aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvR2xvYmFsRXZhbEZ1bmN0
aW9uLmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvR2xvYmFsRXZh
bEZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogCiBuYW1lc3Bh
Y2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9iYWxFdmFsRnVuY3Rpb24p
OworCiBHbG9iYWxFdmFsRnVuY3Rpb246Okdsb2JhbEV2YWxGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblByb3RvdHlwZSwgaW50IGxlbiwgY29uc3Qg
SWRlbnRpZmllciYgbmFtZSwgTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24sIEpTR2xvYmFsT2JqZWN0
KiBjYWNoZWRHbG9iYWxPYmplY3QpCiAgICAgOiBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5j
dGlvblByb3RvdHlwZSwgbGVuLCBuYW1lLCBmdW5jdGlvbikKICAgICAsIG1fY2FjaGVkR2xvYmFs
T2JqZWN0KGNhY2hlZEdsb2JhbE9iamVjdCkKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9JbnRl
cm5hbEZ1bmN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvSW50ZXJu
YWxGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0lu
dGVybmFsRnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw1MSArMjgsMzEgQEAKIAog
bmFtZXNwYWNlIEtKUyB7CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSW50ZXJuYWxGdW5j
dGlvbik7CisKIGNvbnN0IENsYXNzSW5mbyBJbnRlcm5hbEZ1bmN0aW9uOjppbmZvID0geyAiRnVu
Y3Rpb24iLCAwLCAwLCAwIH07CiAKLUludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24o
KQorSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7
CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5uYW1lLCBqc1N0cmluZyhleGVj
LCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubnVsbElkZW50aWZpZXIudXN0cmluZygpKSwgRG9udERl
bGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOwogfQogCi1JbnRlcm5hbEZ1bmN0aW9uOjpJbnRl
cm5hbEZ1bmN0aW9uKEZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUsIGNvbnN0IElkZW50aWZp
ZXImIG5hbWUpCitJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSwgY29uc3QgSWRlbnRpZmllciYgbmFt
ZSkKICAgICA6IEpTT2JqZWN0KHByb3RvdHlwZSkKLSAgICAsIG1fbmFtZShuYW1lKQotewotfQot
Ci1ib29sIEludGVybmFsRnVuY3Rpb246OmltcGxlbWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHRydWU7CisgICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5u
YW1lLCBqc1N0cmluZyhleGVjLCBuYW1lLnVzdHJpbmcoKSksIERvbnREZWxldGUgfCBSZWFkT25s
eSB8IERvbnRFbnVtKTsKIH0KIAotYm9vbCBJbnRlcm5hbEZ1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKK2NvbnN0IFVTdHJpbmcmIEludGVybmFsRnVuY3Rpb246Om5hbWUo
RXhlY1N0YXRlKiBleGVjKQogewotICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVy
dHlOYW1lcygpLm5hbWUpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpcywgbmFtZUdldHRl
cik7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CisgICAgSlNWYWx1
ZSogdiA9IGdldERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSk7CisgICAgQVNTRVJU
KHYtPmlzU3RyaW5nKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KHYpLT52
YWx1ZSgpOwogfQogCi12b2lkIEludGVybmFsRnVuY3Rpb246OnB1dChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSogdmFsdWUpCi17Ci0gICAg
aWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIEpTT2JqZWN0OjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSk7Ci19
Ci0KLWJvb2wgSW50ZXJuYWxGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIHJldHVybiBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKTsK
LX0KLQotSlNWYWx1ZSogSW50ZXJuYWxGdW5jdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCitib29sIElu
dGVybmFsRnVuY3Rpb246OmltcGxlbWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0CiB7Ci0gICAgSW50
ZXJuYWxGdW5jdGlvbiogdGhpc09iaiA9IHN0YXRpY19jYXN0PEludGVybmFsRnVuY3Rpb24qPihz
bG90LnNsb3RCYXNlKCkpOwotICAgIHJldHVybiBqc1N0cmluZyhleGVjLCB0aGlzT2JqLT5mdW5j
dGlvbk5hbWUoKS51c3RyaW5nKCkpOworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBLSlMKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9JbnRlcm5hbEZ1bmN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0ludGVybmFsRnVuY3Rpb24uaAkocmV2aXNp
b24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSW50ZXJuYWxGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSwyMyArMzUsMTYgQEAgbmFtZXNwYWNlIEtKUyB7CiAgICAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gJmluZm87IH0KICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwotCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0KEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSopOwotICAg
ICAgICB2aXJ0dWFsIGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKLQotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBmdW5jdGlv
bk5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICAgICAgCisgICAgICAgIGNvbnN0
IFVTdHJpbmcmIG5hbWUoRXhlY1N0YXRlKik7CiAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIElu
dGVybmFsRnVuY3Rpb24oKTsKLSAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihGdW5jdGlvblByb3Rv
dHlwZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihFeGVj
U3RhdGUqKTsKKyAgICAgICAgSW50ZXJuYWxGdW5jdGlvbihFeGVjU3RhdGUqLCBGdW5jdGlvblBy
b3RvdHlwZSosIGNvbnN0IElkZW50aWZpZXImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHN0
YXRpYyBKU1ZhbHVlKiBuYW1lR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBDYWxsVHlwZSBnZXRDYWxsRGF0
YShDYWxsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGltcGxlbWVudHNIYXNJbnN0
YW5jZSgpIGNvbnN0OwotCi0gICAgICAgIElkZW50aWZpZXIgbV9uYW1lOwogICAgIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEtKUwpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTQWN0aXZhdGlvbi5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTQWN0aXZhdGlvbi5jcHAJKHJl
dmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL0pTQWN0aXZhdGlvbi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDggQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKK0FTU0VS
VF9DTEFTU19GSVRTX0lOX0NFTEwoSlNBY3RpdmF0aW9uKTsKKwogY29uc3QgQ2xhc3NJbmZvIEpT
QWN0aXZhdGlvbjo6aW5mbyA9IHsgIkpTQWN0aXZhdGlvbiIsIDAsIDAsIDAgfTsKIAogSlNBY3Rp
dmF0aW9uOjpKU0FjdGl2YXRpb24oUGFzc1JlZlB0cjxGdW5jdGlvbkJvZHlOb2RlPiBmdW5jdGlv
bkJvZHksIFJlZ2lzdGVyKiByZWdpc3RlcnMpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNB
cnJheS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTQXJyYXkuY3BwCShy
ZXZpc2lvbiAzNTgwNikKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0FycmF5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3Bh
Y2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0FycmF5KTsKKwogLy8gT3Zl
cnZpZXcgb2YgSlNBcnJheQogLy8KIC8vIFByb3BlcnRpZXMgb2YgSlNBcnJheSBvYmplY3RzIG1h
eSBiZSBzdG9yZWQgaW4gb25lIG9mIHRocmVlIGxvY2F0aW9uczoKQEAgLTEyOCwxMCArMTMwLDEw
IEBAIEpTQXJyYXk6OkpTQXJyYXkoSlNWYWx1ZSogcHJvdG90eXBlLCB1bnMKIHsKICAgICB1bnNp
Z25lZCBpbml0aWFsQ2FwYWNpdHkgPSBtaW4oaW5pdGlhbExlbmd0aCwgTUlOX1NQQVJTRV9BUlJB
WV9JTkRFWCk7CiAKLSAgICBtX2xlbmd0aCA9IGluaXRpYWxMZW5ndGg7Ci0gICAgbV9mYXN0QWNj
ZXNzQ3V0b2ZmID0gMDsKICAgICBtX3N0b3JhZ2UgPSBzdGF0aWNfY2FzdDxBcnJheVN0b3JhZ2Uq
PihmYXN0WmVyb2VkTWFsbG9jKHN0b3JhZ2VTaXplKGluaXRpYWxDYXBhY2l0eSkpKTsKKyAgICBt
X2Zhc3RBY2Nlc3NDdXRvZmYgPSAwOwogICAgIG1fc3RvcmFnZS0+bV92ZWN0b3JMZW5ndGggPSBp
bml0aWFsQ2FwYWNpdHk7CisgICAgbV9zdG9yYWdlLT5tX2xlbmd0aCA9IGluaXRpYWxMZW5ndGg7
CiAKICAgICBIZWFwOjpoZWFwKHRoaXMpLT5yZXBvcnRFeHRyYU1lbW9yeUNvc3QoaW5pdGlhbENh
cGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUqKSk7CiAKQEAgLTE0Myw3ICsxNDUsNiBAQCBKU0FycmF5
OjpKU0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplCiB7CiAgICAgdW5zaWduZWQgbGVuZ3Ro
ID0gbGlzdC5zaXplKCk7CiAKLSAgICBtX2xlbmd0aCA9IGxlbmd0aDsKICAgICBtX2Zhc3RBY2Nl
c3NDdXRvZmYgPSBsZW5ndGg7CiAKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBzdGF0aWNf
Y2FzdDxBcnJheVN0b3JhZ2UqPihmYXN0TWFsbG9jKHN0b3JhZ2VTaXplKGxlbmd0aCkpKTsKQEAg
LTE1MSw2ICsxNTIsNyBAQCBKU0FycmF5OjpKU0FycmF5KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmpl
CiAgICAgc3RvcmFnZS0+bV92ZWN0b3JMZW5ndGggPSBsZW5ndGg7CiAgICAgc3RvcmFnZS0+bV9u
dW1WYWx1ZXNJblZlY3RvciA9IGxlbmd0aDsKICAgICBzdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFw
ID0gMDsKKyAgICBzdG9yYWdlLT5tX2xlbmd0aCA9IGxlbmd0aDsKIAogICAgIHNpemVfdCBpID0g
MDsKICAgICBBcmdMaXN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBsaXN0LmVuZCgpOwpAQCAtMTc3
LDcgKzE3OSw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGEKIHsK
ICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBtX3N0b3JhZ2U7CiAKLSAgICBpZiAoaSA+PSBt
X2xlbmd0aCkgeworICAgIGlmIChpID49IHN0b3JhZ2UtPm1fbGVuZ3RoKSB7CiAgICAgICAgIGlm
IChpID4gTUFYX0FSUkFZX0lOREVYKQogICAgICAgICAgICAgcmV0dXJuIGdldE93blByb3BlcnR5
U2xvdChleGVjLCBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGkpLCBzbG90KTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtMjA1LDcgKzIwNyw3IEBAIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVy
dHlTbG90KEV4ZWNTdGEKIGJvb2wgSlNBcnJheTo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNs
b3QpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVu
Z3RoKSB7Ci0gICAgICAgIHNsb3Quc2V0VmFsdWUoanNOdW1iZXIoZXhlYywgZ2V0TGVuZ3RoKCkp
KTsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZShqc051bWJlcihleGVjLCBsZW5ndGgoKSkpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTI0NCwxMCArMjQ2LDEwIEBAIHZvaWQgSlNB
cnJheTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgdW5zaWcKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5
KCk7CiAKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBtX2xlbmd0aDsKKyAgICB1bnNpZ25lZCBsZW5n
dGggPSBtX3N0b3JhZ2UtPm1fbGVuZ3RoOwogICAgIGlmIChpID49IGxlbmd0aCAmJiBpIDw9IE1B
WF9BUlJBWV9JTkRFWCkgewogICAgICAgICBsZW5ndGggPSBpICsgMTsKLSAgICAgICAgbV9sZW5n
dGggPSBsZW5ndGg7CisgICAgICAgIG1fc3RvcmFnZS0+bV9sZW5ndGggPSBsZW5ndGg7CiAgICAg
fQogCiAgICAgaWYgKGkgPCBtX3N0b3JhZ2UtPm1fdmVjdG9yTGVuZ3RoKSB7CkBAIC0yNTgsOCAr
MjYwLDggQEAgdm9pZCBKU0FycmF5OjpwdXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHZhbHVlU2xvdCA9IHZhbHVlOwotICAg
ICAgICBpZiAoKyttX3N0b3JhZ2UtPm1fbnVtVmFsdWVzSW5WZWN0b3IgPT0gbV9sZW5ndGgpCi0g
ICAgICAgICAgICBtX2Zhc3RBY2Nlc3NDdXRvZmYgPSBtX2xlbmd0aDsKKyAgICAgICAgaWYgKCsr
bV9zdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yID09IG1fc3RvcmFnZS0+bV9sZW5ndGgpCisg
ICAgICAgICAgICBtX2Zhc3RBY2Nlc3NDdXRvZmYgPSBtX3N0b3JhZ2UtPm1fbGVuZ3RoOwogICAg
ICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC00MTMs
NyArNDE1LDcgQEAgdm9pZCBKU0FycmF5OjpnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZQogCiAg
ICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9zdG9yYWdlOwogCi0gICAgdW5zaWduZWQgdXNl
ZFZlY3Rvckxlbmd0aCA9IG1pbihtX2xlbmd0aCwgc3RvcmFnZS0+bV92ZWN0b3JMZW5ndGgpOwor
ICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBtaW4oc3RvcmFnZS0+bV9sZW5ndGgsIHN0
b3JhZ2UtPm1fdmVjdG9yTGVuZ3RoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNl
ZFZlY3Rvckxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmIChzdG9yYWdlLT5tX3ZlY3RvcltpXSkK
ICAgICAgICAgICAgIHByb3BlcnR5TmFtZXMuYWRkKElkZW50aWZpZXI6OmZyb20oZXhlYywgaSkp
OwpAQCAtNDU5LDcgKzQ2MSw3IEBAIHZvaWQgSlNBcnJheTo6c2V0TGVuZ3RoKHVuc2lnbmVkIG5l
d0xlbmcKIAogICAgIEFycmF5U3RvcmFnZSogc3RvcmFnZSA9IG1fc3RvcmFnZTsKIAotICAgIHVu
c2lnbmVkIGxlbmd0aCA9IG1fbGVuZ3RoOworICAgIHVuc2lnbmVkIGxlbmd0aCA9IG1fc3RvcmFn
ZS0+bV9sZW5ndGg7CiAKICAgICBpZiAobmV3TGVuZ3RoIDwgbGVuZ3RoKSB7CiAgICAgICAgIGlm
IChtX2Zhc3RBY2Nlc3NDdXRvZmYgPiBuZXdMZW5ndGgpCkBAIC00ODcsNyArNDg5LDcgQEAgdm9p
ZCBKU0FycmF5OjpzZXRMZW5ndGgodW5zaWduZWQgbmV3TGVuZwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgbV9sZW5ndGggPSBuZXdMZW5ndGg7CisgICAgbV9zdG9yYWdlLT5tX2xlbmd0aCA9IG5l
d0xlbmd0aDsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KQEAgLTQ5OCw3ICs1MDAsNyBA
QCB2b2lkIEpTQXJyYXk6Om1hcmsoKQogCiAgICAgQXJyYXlTdG9yYWdlKiBzdG9yYWdlID0gbV9z
dG9yYWdlOwogCi0gICAgdW5zaWduZWQgdXNlZFZlY3Rvckxlbmd0aCA9IG1pbihtX2xlbmd0aCwg
c3RvcmFnZS0+bV92ZWN0b3JMZW5ndGgpOworICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGgg
PSBtaW4oc3RvcmFnZS0+bV9sZW5ndGgsIHN0b3JhZ2UtPm1fdmVjdG9yTGVuZ3RoKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdXNlZFZlY3Rvckxlbmd0aDsgKytpKSB7CiAgICAgICAg
IEpTVmFsdWUqIHZhbHVlID0gc3RvcmFnZS0+bV92ZWN0b3JbaV07CiAgICAgICAgIGlmICh2YWx1
ZSAmJiAhdmFsdWUtPm1hcmtlZCgpKQpAQCAtNjYxLDE0ICs2NjMsMTQgQEAgdm9pZCBKU0FycmF5
Ojpzb3J0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogCiAgICAgLy8gVGhlIG1heGltdW0gdHJlZSBk
ZXB0aCBpcyBjb21waWxlZCBpbiAtIGJ1dCB0aGUgY2FsbGVyIGlzIGNsZWFybHkgdXAgdG8gbm8g
Z29vZAogICAgIC8vIGlmIGEgbGFyZ2VyIGFycmF5IGlzIHBhc3NlZC4KLSAgICBBU1NFUlQobV9s
ZW5ndGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6
bWF4KCkpKTsKLSAgICBpZiAobV9sZW5ndGggPiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQ+OjptYXgoKSkpCisgICAgQVNTRVJUKG1fc3RvcmFnZS0+bV9sZW5n
dGggPD0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bnVtZXJpY19saW1pdHM8aW50Pjo6bWF4
KCkpKTsKKyAgICBpZiAobV9zdG9yYWdlLT5tX2xlbmd0aCA+IHN0YXRpY19jYXN0PHVuc2lnbmVk
PihzdGQ6Om51bWVyaWNfbGltaXRzPGludD46Om1heCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX2xlbmd0aCkKKyAgICBpZiAoIW1fc3RvcmFnZS0+bV9sZW5ndGgpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5ndGggPSBtaW4obV9sZW5ndGgs
IG1fc3RvcmFnZS0+bV92ZWN0b3JMZW5ndGgpOworICAgIHVuc2lnbmVkIHVzZWRWZWN0b3JMZW5n
dGggPSBtaW4obV9zdG9yYWdlLT5tX2xlbmd0aCwgbV9zdG9yYWdlLT5tX3ZlY3Rvckxlbmd0aCk7
CiAKICAgICBBVkxUcmVlPEFWTFRyZWVBYnN0cmFjdG9yRm9yQXJyYXlDb21wYXJlLCA0ND4gdHJl
ZTsgLy8gRGVwdGggNDQgaXMgZW5vdWdoIGZvciAyXjMxIGl0ZW1zCiAgICAgdHJlZS5hYnN0cmFj
dG9yKCkubV9leGVjID0gZXhlYzsKQEAgLTc2NSw3ICs3NjcsNyBAQCB1bnNpZ25lZCBKU0FycmF5
Ojpjb21wYWN0Rm9yU29ydGluZygpCiAKICAgICBBcnJheVN0b3JhZ2UqIHN0b3JhZ2UgPSBtX3N0
b3JhZ2U7CiAKLSAgICB1bnNpZ25lZCB1c2VkVmVjdG9yTGVuZ3RoID0gbWluKG1fbGVuZ3RoLCBz
dG9yYWdlLT5tX3ZlY3Rvckxlbmd0aCk7CisgICAgdW5zaWduZWQgdXNlZFZlY3Rvckxlbmd0aCA9
IG1pbihtX3N0b3JhZ2UtPm1fbGVuZ3RoLCBzdG9yYWdlLT5tX3ZlY3Rvckxlbmd0aCk7CiAKICAg
ICB1bnNpZ25lZCBudW1EZWZpbmVkID0gMDsKICAgICB1bnNpZ25lZCBudW1VbmRlZmluZWQgPSAw
OwpAQCAtODM1LDEzICs4MzcsMTMgQEAgdm9pZCBKU0FycmF5OjpjaGVja0NvbnNpc3RlbmN5KENv
bnNpc3RlbgogICAgIGlmICh0eXBlID09IFNvcnRDb25zaXN0ZW5jeUNoZWNrKQogICAgICAgICBB
U1NFUlQoIW1fc3RvcmFnZS0+bV9zcGFyc2VWYWx1ZU1hcCk7CiAKLSAgICBBU1NFUlQobV9mYXN0
QWNjZXNzQ3V0b2ZmIDw9IG1fbGVuZ3RoKTsKKyAgICBBU1NFUlQobV9mYXN0QWNjZXNzQ3V0b2Zm
IDw9IG1fc3RvcmFnZS0+bV9sZW5ndGgpOwogICAgIEFTU0VSVChtX2Zhc3RBY2Nlc3NDdXRvZmYg
PD0gbV9zdG9yYWdlLT5tX251bVZhbHVlc0luVmVjdG9yKTsKIAogICAgIHVuc2lnbmVkIG51bVZh
bHVlc0luVmVjdG9yID0gMDsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zdG9yYWdl
LT5tX3ZlY3Rvckxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmIChKU1ZhbHVlKiB2YWx1ZSA9IG1f
c3RvcmFnZS0+bV92ZWN0b3JbaV0pIHsKLSAgICAgICAgICAgIEFTU0VSVChpIDwgbV9sZW5ndGgp
OworICAgICAgICAgICAgQVNTRVJUKGkgPCBtX3N0b3JhZ2UtPm1fbGVuZ3RoKTsKICAgICAgICAg
ICAgIGlmICh0eXBlICE9IERlc3RydWN0b3JDb25zaXN0ZW5jeUNoZWNrKQogICAgICAgICAgICAg
ICAgIHZhbHVlLT50eXBlKCk7IC8vIExpa2VseSB0byBjcmFzaCBpZiB0aGUgb2JqZWN0IHdhcyBk
ZWFsbG9jYXRlZC4KICAgICAgICAgICAgICsrbnVtVmFsdWVzSW5WZWN0b3I7CkBAIC04NTcsNyAr
ODU5LDcgQEAgdm9pZCBKU0FycmF5OjpjaGVja0NvbnNpc3RlbmN5KENvbnNpc3RlbgogICAgICAg
ICBTcGFyc2VBcnJheVZhbHVlTWFwOjppdGVyYXRvciBlbmQgPSBtX3N0b3JhZ2UtPm1fc3BhcnNl
VmFsdWVNYXAtPmVuZCgpOwogICAgICAgICBmb3IgKFNwYXJzZUFycmF5VmFsdWVNYXA6Oml0ZXJh
dG9yIGl0ID0gbV9zdG9yYWdlLT5tX3NwYXJzZVZhbHVlTWFwLT5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gaXQtPmZpcnN0OwotICAgICAg
ICAgICAgQVNTRVJUKGluZGV4IDwgbV9sZW5ndGgpOworICAgICAgICAgICAgQVNTRVJUKGluZGV4
IDwgbV9zdG9yYWdlLT5tX2xlbmd0aCk7CiAgICAgICAgICAgICBBU1NFUlQoaW5kZXggPj0gbV9z
dG9yYWdlLT5tX3ZlY3Rvckxlbmd0aCk7CiAgICAgICAgICAgICBBU1NFUlQoaW5kZXggPD0gTUFY
X0FSUkFZX0lOREVYKTsKICAgICAgICAgICAgIEFTU0VSVChpdC0+c2Vjb25kKTsKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL2tqcy9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUv
a2pzL0pTQXJyYXkuaAkocmV2aXNpb24gMzU4MDYpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgSlNWYWx1ZSo+IFNwYXJzZUFycmF5VmFsdWVN
YXA7CiAKICAgICBzdHJ1Y3QgQXJyYXlTdG9yYWdlIHsKKyAgICAgICAgdW5zaWduZWQgbV9sZW5n
dGg7CiAgICAgICAgIHVuc2lnbmVkIG1fdmVjdG9yTGVuZ3RoOwogICAgICAgICB1bnNpZ25lZCBt
X251bVZhbHVlc0luVmVjdG9yOwogICAgICAgICBTcGFyc2VBcnJheVZhbHVlTWFwKiBtX3NwYXJz
ZVZhbHVlTWFwOwpAQCAtNDgsNyArNDksNyBAQCBuYW1lc3BhY2UgS0pTIHsKIAogICAgICAgICBz
dGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87CiAKLSAgICAgICAgdW5zaWduZWQgZ2V0TGVuZ3Ro
KCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKyAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLT5tX2xlbmd0aDsgfQogICAgICAgICB2b2lkIHNldExl
bmd0aCh1bnNpZ25lZCk7IC8vIE9LIHRvIHVzZSBvbiBuZXcgYXJyYXlzLCBidXQgbm90IGlmIGl0
IG1pZ2h0IGJlIGEgUmVnRXhwTWF0Y2hBcnJheS4KIAogICAgICAgICB2b2lkIHNvcnQoRXhlY1N0
YXRlKik7CkBAIC05MSw3ICs5Miw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICBlbnVtIENv
bnNpc3RlbmN5Q2hlY2tUeXBlIHsgTm9ybWFsQ29uc2lzdGVuY3lDaGVjaywgRGVzdHJ1Y3RvckNv
bnNpc3RlbmN5Q2hlY2ssIFNvcnRDb25zaXN0ZW5jeUNoZWNrIH07CiAgICAgICAgIHZvaWQgY2hl
Y2tDb25zaXN0ZW5jeShDb25zaXN0ZW5jeUNoZWNrVHlwZSA9IE5vcm1hbENvbnNpc3RlbmN5Q2hl
Y2spOwogCi0gICAgICAgIHVuc2lnbmVkIG1fbGVuZ3RoOwogICAgICAgICB1bnNpZ25lZCBtX2Zh
c3RBY2Nlc3NDdXRvZmY7CiAgICAgICAgIEFycmF5U3RvcmFnZSogbV9zdG9yYWdlOwogICAgIH07
CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNj
cmlwdENvcmUva2pzL0pTQ2VsbC5oCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3Jl
L2tqcy9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtOTYsNiArOTYsOCBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICAgICAgLy8gQmFzZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGZvciBub24tb2JqZWN0
IGNsYXNzZXMgaW1wbGVtZW50cyBnZXRQcm9wZXJ0eVNsb3QuCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKICAgICAgICAgdmlydHVhbCBib29sIGdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYp
OworICAgICAgICAKKyAgICAgICAgaW50cHRyX3QgcmVzZXJ2ZWQ7IC8vIFJlc2VydmVkIGZvciB3
b3JrIGluIHByb2dyZXNzLgogICAgIH07CiAKICAgICBpbmxpbmUgSlNDZWxsOjpKU0NlbGwoKQpJ
bmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9KU0Z1bmN0aW9uLmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvSlNGdW5jdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYgKzI1
LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAKKyNp
bmNsdWRlICJDb21tb25JZGVudGlmaWVycy5oIgogI2luY2x1ZGUgIkV4ZWNTdGF0ZS5oIgogI2lu
Y2x1ZGUgIkZ1bmN0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
QEAgLTM5LDEwICs0MCwxMiBAQCB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKIAogbmFtZXNwYWNl
IEtKUyB7CiAKLWNvbnN0IENsYXNzSW5mbyBKU0Z1bmN0aW9uOjppbmZvID0geyAiRnVuY3Rpb24i
LCAmSW50ZXJuYWxGdW5jdGlvbjo6aW5mbywgMCwgMCB9OworQVNTRVJUX0NMQVNTX0ZJVFNfSU5f
Q0VMTChKU0Z1bmN0aW9uKTsKKworY29uc3QgQ2xhc3NJbmZvIEpTRnVuY3Rpb246OmluZm8gPSB7
ICJGdW5jdGlvbiIsIDAsIDAsIDAgfTsKIAogSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIEZ1bmN0aW9uQm9keU5vZGUqIGJvZHks
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24o
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5mdW5jdGlvblByb3RvdHlwZSgpLCBuYW1lKQor
ICAgIDogQmFzZShleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uUHJv
dG90eXBlKCksIG5hbWUpCiAgICAgLCBtX2JvZHkoYm9keSkKICAgICAsIG1fc2NvcGVDaGFpbihz
Y29wZUNoYWluTm9kZSkKIHsKQEAgLTUwLDcgKzUzLDcgQEAgSlNGdW5jdGlvbjo6SlNGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIAogCiB2b2lkIEpTRnVuY3Rpb246Om1hcmsoKQogewotICAgIElu
dGVybmFsRnVuY3Rpb246Om1hcmsoKTsKKyAgICBCYXNlOjptYXJrKCk7CiAgICAgbV9ib2R5LT5t
YXJrKCk7CiAgICAgbV9zY29wZUNoYWluLm1hcmsoKTsKIH0KQEAgLTEwMiwyMSArMTA1LDIxIEBA
IGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWMKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCi0gICAgcmV0dXJuIEludGVybmFsRnVuY3Rpb246OmdldE93blByb3Bl
cnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworICAgIHJldHVybiBCYXNlOjpnZXRP
d25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAogdm9pZCBKU0Z1
bmN0aW9uOjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUqIHZhbHVlKQogewogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJv
cGVydHlOYW1lcygpLmFyZ3VtZW50cyB8fCBwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlO
YW1lcygpLmxlbmd0aCkKICAgICAgICAgcmV0dXJuOwotICAgIEludGVybmFsRnVuY3Rpb246OnB1
dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKTsKKyAgICBCYXNlOjpwdXQoZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSk7CiB9CiAKIGJvb2wgSlNGdW5jdGlvbjo6ZGVsZXRlUHJvcGVydHkoRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgaWYg
KHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuYXJndW1lbnRzIHx8IHByb3Bl
cnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIEludGVybmFsRnVuY3Rpb246OmRlbGV0ZVByb3BlcnR5KGV4ZWMs
IHByb3BlcnR5TmFtZSk7CisgICAgcmV0dXJuIEJhc2U6OmRlbGV0ZVByb3BlcnR5KGV4ZWMsIHBy
b3BlcnR5TmFtZSk7CiB9CiAKIC8qIFJldHVybnMgdGhlIHBhcmFtZXRlciBuYW1lIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIGdpdmVuIGluZGV4LiBlZzoKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9K
U0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL0pTRnVuY3Rpb24u
aAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNGdW5jdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBLSlMgewogICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogCiAgICAgY2xhc3MgSlNGdW5jdGlvbiA6IHB1YmxpYyBJbnRlcm5h
bEZ1bmN0aW9uIHsKKyAgICAgICAgdHlwZWRlZiBJbnRlcm5hbEZ1bmN0aW9uIEJhc2U7CiAgICAg
cHVibGljOgogICAgICAgICBKU0Z1bmN0aW9uKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXIm
LCBGdW5jdGlvbkJvZHlOb2RlKiwgU2NvcGVDaGFpbk5vZGUqKTsKIApJbmRleDogSmF2YVNjcmlw
dENvcmUva2pzL0pTR2xvYmFsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29y
ZS9ranMvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRD
b3JlL2tqcy9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYyLDYgKzYyLDgg
QEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNHbG9i
YWxPYmplY3QpOworCiAvLyBEZWZhdWx0IG51bWJlciBvZiB0aWNrcyBiZWZvcmUgYSB0aW1lb3V0
IGNoZWNrIHNob3VsZCBiZSBkb25lLgogc3RhdGljIGNvbnN0IGludCBpbml0aWFsVGlja0NvdW50
VGhyZXNob2xkID0gMjU1OwogCkBAIC0zMTEsMTkgKzMxMywxOSBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpyZXNldChKU1ZhbHVlKiBwcm90CiAgICAgLy8gU2V0IGdsb2JhbCBmdW5jdGlvbnMuCiAK
ICAgICBkKCktPmV2YWxGdW5jdGlvbiA9IG5ldyAoZXhlYykgR2xvYmFsRXZhbEZ1bmN0aW9uKGV4
ZWMsIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5ldmFs
LCBnbG9iYWxGdW5jRXZhbCwgdGhpcyk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24oZCgpLT5ldmFs
RnVuY3Rpb24sIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFBy
b3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUsIDIsIElkZW50aWZp
ZXIoZXhlYywgInBhcnNlSW50IiksIGdsb2JhbEZ1bmNQYXJzZUludCksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGQo
KS0+ZnVuY3Rpb25Qcm90b3R5cGUsIDEsIElkZW50aWZpZXIoZXhlYywgInBhcnNlRmxvYXQiKSwg
Z2xvYmFsRnVuY1BhcnNlRmxvYXQpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24o
bmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBl
LCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc05hTiIpLCBnbG9iYWxGdW5jSXNOYU4pLCBEb250RW51
bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihl
eGVjLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJpc0Zpbml0
ZSIpLCBnbG9iYWxGdW5jSXNGaW5pdGUpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rp
b24obmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBkKCktPmZ1bmN0aW9uUHJvdG90
eXBlLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJlc2NhcGUiKSwgZ2xvYmFsRnVuY0VzY2FwZSksIERv
bnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0
aW9uKGV4ZWMsIGQoKS0+ZnVuY3Rpb25Qcm90b3R5cGUsIDEsIElkZW50aWZpZXIoZXhlYywgInVu
ZXNjYXBlIiksIGdsb2JhbEZ1bmNVbmVzY2FwZSksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RG
dW5jdGlvbihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGQoKS0+ZnVuY3Rpb25Q
cm90b3R5cGUsIDEsIElkZW50aWZpZXIoZXhlYywgImRlY29kZVVSSSIpLCBnbG9iYWxGdW5jRGVj
b2RlVVJJKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyAoZXhlYykgUHJv
dG90eXBlRnVuY3Rpb24oZXhlYywgZCgpLT5mdW5jdGlvblByb3RvdHlwZSwgMSwgSWRlbnRpZmll
cihleGVjLCAiZGVjb2RlVVJJQ29tcG9uZW50IiksIGdsb2JhbEZ1bmNEZWNvZGVVUklDb21wb25l
bnQpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IChleGVjKSBQcm90b3R5
cGVGdW5jdGlvbihleGVjLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLCAxLCBJZGVudGlmaWVyKGV4
ZWMsICJlbmNvZGVVUkkiKSwgZ2xvYmFsRnVuY0VuY29kZVVSSSksIERvbnRFbnVtKTsKLSAgICBw
dXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGQoKS0+
ZnVuY3Rpb25Qcm90b3R5cGUsIDEsIElkZW50aWZpZXIoZXhlYywgImVuY29kZVVSSUNvbXBvbmVu
dCIpLCBnbG9iYWxGdW5jRW5jb2RlVVJJQ29tcG9uZW50KSwgRG9udEVudW0pOworICAgIHB1dERp
cmVjdEZ1bmN0aW9uKGV4ZWMsIGQoKS0+ZXZhbEZ1bmN0aW9uLCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBk
KCktPmZ1bmN0aW9uUHJvdG90eXBlLCAyLCBJZGVudGlmaWVyKGV4ZWMsICJwYXJzZUludCIpLCBn
bG9iYWxGdW5jUGFyc2VJbnQpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhl
YywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBkKCktPmZ1bmN0aW9uUHJvdG90
eXBlLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJwYXJzZUZsb2F0IiksIGdsb2JhbEZ1bmNQYXJzZUZs
b2F0KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMsIG5ldyAoZXhlYykg
UHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZCgpLT5mdW5jdGlvblByb3RvdHlwZSwgMSwgSWRlbnRp
ZmllcihleGVjLCAiaXNOYU4iKSwgZ2xvYmFsRnVuY0lzTmFOKSwgRG9udEVudW0pOworICAgIHB1
dERpcmVjdEZ1bmN0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywg
ZCgpLT5mdW5jdGlvblByb3RvdHlwZSwgMSwgSWRlbnRpZmllcihleGVjLCAiaXNGaW5pdGUiKSwg
Z2xvYmFsRnVuY0lzRmluaXRlKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZCgpLT5mdW5jdGlvblByb3Rv
dHlwZSwgMSwgSWRlbnRpZmllcihleGVjLCAiZXNjYXBlIiksIGdsb2JhbEZ1bmNFc2NhcGUpLCBE
b250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5
cGVGdW5jdGlvbihleGVjLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLCAxLCBJZGVudGlmaWVyKGV4
ZWMsICJ1bmVzY2FwZSIpLCBnbG9iYWxGdW5jVW5lc2NhcGUpLCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBk
KCktPmZ1bmN0aW9uUHJvdG90eXBlLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJkZWNvZGVVUkkiKSwg
Z2xvYmFsRnVuY0RlY29kZVVSSSksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihl
eGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGQoKS0+ZnVuY3Rpb25Qcm90
b3R5cGUsIDEsIElkZW50aWZpZXIoZXhlYywgImRlY29kZVVSSUNvbXBvbmVudCIpLCBnbG9iYWxG
dW5jRGVjb2RlVVJJQ29tcG9uZW50KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9u
KGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZCgpLT5mdW5jdGlvblBy
b3RvdHlwZSwgMSwgSWRlbnRpZmllcihleGVjLCAiZW5jb2RlVVJJIiksIGdsb2JhbEZ1bmNFbmNv
ZGVVUkkpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVj
KSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLCAxLCBJZGVu
dGlmaWVyKGV4ZWMsICJlbmNvZGVVUklDb21wb25lbnQiKSwgZ2xvYmFsRnVuY0VuY29kZVVSSUNv
bXBvbmVudCksIERvbnRFbnVtKTsKICNpZm5kZWYgTkRFQlVHCi0gICAgcHV0RGlyZWN0RnVuY3Rp
b24obmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBkKCktPmZ1bmN0aW9uUHJvdG90
eXBlLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJranNwcmludCIpLCBnbG9iYWxGdW5jS0pTUHJpbnQp
LCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90
b3R5cGVGdW5jdGlvbihleGVjLCBkKCktPmZ1bmN0aW9uUHJvdG90eXBlLCAxLCBJZGVudGlmaWVy
KGV4ZWMsICJranNwcmludCIpLCBnbG9iYWxGdW5jS0pTUHJpbnQpLCBEb250RW51bSk7CiAjZW5k
aWYKIAogICAgIC8vIFNldCBwcm90b3R5cGUsIGFuZCBhbHNvIGluc2VydCB0aGUgb2JqZWN0IHBy
b3RvdHlwZSBhdCB0aGUgZW5kIG9mIHRoZSBjaGFpbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tq
cy9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU0ds
b2JhbE9iamVjdC5oCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU0ds
b2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3NywxMCBAQCBuYW1lc3BhY2Ug
S0pTIHsKICAgICAgICAgICAgICAgICAsIGdsb2JhbFNjb3BlQ2hhaW4oZ2xvYmFsT2JqZWN0LCB0
aGlzVmFsdWUpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0RGF0YSgpCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBuZXh0OwogICAgICAg
ICAgICAgSlNHbG9iYWxPYmplY3QqIHByZXY7CkBAIC0xMzMsOCArMTM3LDggQEAgbmFtZXNwYWNl
IEtKUyB7CiAgICAgICAgIH0KIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgSlNHbG9iYWxPYmpl
Y3QoSlNWYWx1ZSogcHJvdG90eXBlLCBKU09iamVjdCogZ2xvYmFsVGhpc1ZhbHVlKQotICAgICAg
ICAgICAgOiBKU1ZhcmlhYmxlT2JqZWN0KHByb3RvdHlwZSwgbmV3IEpTR2xvYmFsT2JqZWN0RGF0
YSh0aGlzLCBnbG9iYWxUaGlzVmFsdWUpKQorICAgICAgICBKU0dsb2JhbE9iamVjdChKU1ZhbHVl
KiBwcm90b3R5cGUsIEpTR2xvYmFsT2JqZWN0RGF0YSogZCwgSlNPYmplY3QqIGdsb2JhbFRoaXNW
YWx1ZSkKKyAgICAgICAgICAgIDogSlNWYXJpYWJsZU9iamVjdChwcm90b3R5cGUsIGQpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGluaXQoZ2xvYmFsVGhpc1ZhbHVlKTsKICAgICAgICAgfQpJbmRl
eDogSmF2YVNjcmlwdENvcmUva2pzL0pTTm90QW5PYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEph
dmFTY3JpcHRDb3JlL2tqcy9KU05vdEFuT2JqZWN0LmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBK
YXZhU2NyaXB0Q29yZS9ranMvSlNOb3RBbk9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NF
TEwoSlNOb3RBbk9iamVjdCk7CisKIC8vIEpTVmFsdWUgbWV0aG9kcwogSlNWYWx1ZSogSlNOb3RB
bk9iamVjdDo6dG9QcmltaXRpdmUoRXhlY1N0YXRlKiBleGVjLCBKU1R5cGUpIGNvbnN0CiB7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU09iamVjdC5jcHAJKHJldmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlw
dENvcmUva2pzL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQAog
CiBuYW1lc3BhY2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU09iamVjdCk7
CisKIHZvaWQgSlNPYmplY3Q6Om1hcmsoKQogewogICAgIEpTQ2VsbDo6bWFyaygpOwpAQCAtNDYw
LDkgKzQ2Miw5IEBAIHZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChjb25zdCBJZGVudGkKICAg
ICBtX3Byb3BlcnR5TWFwLnJlbW92ZShwcm9wZXJ0eU5hbWUpOwogfQogCi12b2lkIEpTT2JqZWN0
OjpwdXREaXJlY3RGdW5jdGlvbihJbnRlcm5hbEZ1bmN0aW9uKiBmdW5jdGlvbiwgdW5zaWduZWQg
YXR0cikKK3ZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywg
SW50ZXJuYWxGdW5jdGlvbiogZnVuY3Rpb24sIHVuc2lnbmVkIGF0dHIpCiB7Ci0gICAgcHV0RGly
ZWN0KGZ1bmN0aW9uLT5mdW5jdGlvbk5hbWUoKSwgZnVuY3Rpb24sIGF0dHIpOworICAgIHB1dERp
cmVjdChJZGVudGlmaWVyKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKGV4ZWMpKSwgZnVuY3Rpb24sIGF0
dHIpOwogfQogCiBORVZFUl9JTkxJTkUgdm9pZCBKU09iamVjdDo6ZmlsbEdldHRlclByb3BlcnR5
U2xvdChQcm9wZXJ0eVNsb3QmIHNsb3QsIEpTVmFsdWUqKiBsb2NhdGlvbikKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tq
cy9KU09iamVjdC5oCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9KU09i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSwxMTUgKzY5LDEzIEBAIG5hbWVzcGFjZSBLSlMg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgbWFyaygpOwogICAgICAgICB2aXJ0dWFsIEpTVHlwZSB0
eXBlKCkgY29uc3Q7CiAKLSAgICAgICAgLyoqCi0gICAgICAgICAqIEEgcG9pbnRlciB0byBhIENs
YXNzSW5mbyBzdHJ1Y3QgZm9yIHRoaXMgY2xhc3MuIFRoaXMgcHJvdmlkZXMgYSBiYXNpYwotICAg
ICAgICAgKiBmYWNpbGl0eSBmb3IgcnVuLXRpbWUgdHlwZSBpbmZvcm1hdGlvbiwgYW5kIGNhbiBi
ZSB1c2VkIHRvIGNoZWNrIGFuCi0gICAgICAgICAqIG9iamVjdCdzIGNsYXNzIGFuIGluaGVyaXRh
bmNlIChzZWUgaW5oZXJpdHMoKSkuIFRoaXMgc2hvdWxkCi0gICAgICAgICAqIGFsd2F5cyByZXR1
cm4gYSBzdGF0aWNhbGx5IGRlY2xhcmVkIHBvaW50ZXIsIG9yIDAgdG8gaW5kaWNhdGUgdGhhdAot
ICAgICAgICAgKiB0aGVyZSBpcyBubyBjbGFzcyBpbmZvcm1hdGlvbi4KLSAgICAgICAgICoKLSAg
ICAgICAgICogVGhpcyBpcyBwcmltYXJpbHkgdXNlZnVsIGlmIHlvdSBoYXZlIGFwcGxpY2F0aW9u
LWRlZmluZWQgY2xhc3NlcyB0aGF0IHlvdQotICAgICAgICAgKiB3aXNoIHRvIGNoZWNrIGFnYWlu
c3QgZm9yIGNhc3RpbmcgcHVycG9zZXMuCi0gICAgICAgICAqCi0gICAgICAgICAqIEZvciBleGFt
cGxlLCB0byBzcGVjaWZ5IHRoZSBjbGFzcyBpbmZvIGZvciBjbGFzc2VzIEZvb0ltcCBhbmQgQmFy
SW1wLAotICAgICAgICAgKiB3aGVyZSBGb29JbXAgaW5oZXJpdHMgZnJvbSBCYXJJbXAsIHlvdSB3
b3VsZCBhZGQgdGhlIGZvbGxvd2luZyBpbiB5b3VyCi0gICAgICAgICAqIGNsYXNzIGRlY2xhcmF0
aW9uczoKLSAgICAgICAgICoKLSAgICAgICAgICogXGNvZGUKLSAgICAgICAgICogICBjbGFzcyBC
YXJJbXAgOiBwdWJsaWMgSlNPYmplY3QgewotICAgICAgICAgKiAgICAgdmlydHVhbCBjb25zdCBD
bGFzc0luZm8gKmNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZvOyB9Ci0gICAgICAgICAq
ICAgICBzdGF0aWMgY29uc3QgQ2xhc3NJbmZvIGluZm87Ci0gICAgICAgICAqICAgICAvLyAuLi4K
LSAgICAgICAgICogICB9OwotICAgICAgICAgKgotICAgICAgICAgKiAgIGNsYXNzIEZvb0ltcCA6
IHB1YmxpYyBKU09iamVjdCB7Ci0gICAgICAgICAqICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5m
byAqY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KLSAgICAgICAgICogICAgIHN0
YXRpYyBjb25zdCBDbGFzc0luZm8gaW5mbzsKLSAgICAgICAgICogICAgIC8vIC4uLgotICAgICAg
ICAgKiAgIH07Ci0gICAgICAgICAqIFxlbmRjb2RlCi0gICAgICAgICAqCi0gICAgICAgICAqIEFu
ZCBpbiB5b3VyIHNvdXJjZSBmaWxlOgotICAgICAgICAgKgotICAgICAgICAgKiBcY29kZQotICAg
ICAgICAgKiAgIGNvbnN0IENsYXNzSW5mbyBCYXJJbXA6OmluZm8gPSB7ICJCYXIiLCAwLCAwLCAw
IH07IC8vIG5vIHBhcmVudCBjbGFzcwotICAgICAgICAgKiAgIGNvbnN0IENsYXNzSW5mbyBGb29J
bXA6OmluZm8gPSB7ICJGb28iLCAmQmFySW1wOjppbmZvLCAwLCAwIH07Ci0gICAgICAgICAqIFxl
bmRjb2RlCi0gICAgICAgICAqCi0gICAgICAgICAqIEBzZWUgaW5oZXJpdHMoKQotICAgICAgICAg
Ki8KLQotICAgICAgICAvKioKLSAgICAgICAgICogQ2hlY2tzIHdoZXRoZXIgdGhpcyBvYmplY3Qg
aW5oZXJpdHMgZnJvbSB0aGUgY2xhc3Mgd2l0aCB0aGUgc3BlY2lmaWVkCi0gICAgICAgICAqIGNs
YXNzSW5mbygpIHBvaW50ZXIuIFRoaXMgcmVxdWlyZXMgdGhhdCBib3RoIHRoaXMgY2xhc3MgYW5k
IHRoZSBvdGhlcgotICAgICAgICAgKiBjbGFzcyByZXR1cm4gYSBub24tTlVMTCBwb2ludGVyIGZv
ciB0aGVpciBjbGFzc0luZm8oKSBtZXRob2RzIChvdGhlcndpc2UKLSAgICAgICAgICogaXQgd2ls
bCByZXR1cm4gZmFsc2UpLgotICAgICAgICAgKgotICAgICAgICAgKiBGb3IgZXhhbXBsZSwgZm9y
IHR3byBKU09iamVjdCBwb2ludGVycyBvYmoxIGFuZCBvYmoyLCB5b3UgY2FuIGNoZWNrCi0gICAg
ICAgICAqIGlmIG9iajEncyBjbGFzcyBpbmhlcml0cyBmcm9tIG9iajIncyBjbGFzcyB1c2luZyB0
aGUgZm9sbG93aW5nOgotICAgICAgICAgKgotICAgICAgICAgKiAgIGlmIChvYmoxLT5pbmhlcml0
cyhvYmoyLT5jbGFzc0luZm8oKSkpIHsKLSAgICAgICAgICogICAgIC8vIC4uLgotICAgICAgICAg
KiAgIH0KLSAgICAgICAgICoKLSAgICAgICAgICogSWYgeW91IGhhdmUgYSBoYW5kbGUgdG8gYSBz
dGF0aWNhbGx5IGRlY2xhcmVkIENsYXNzSW5mbywgc3VjaCBhcyBpbiB0aGUKLSAgICAgICAgICog
Y2xhc3NJbmZvKCkgZXhhbXBsZSwgeW91IGNhbiBjaGVjayBmb3IgaW5oZXJpdGFuY2Ugd2l0aG91
dCBuZWVkaW5nCi0gICAgICAgICAqIGFuIGluc3RhbmNlIG9mIHRoZSBvdGhlciBjbGFzczoKLSAg
ICAgICAgICoKLSAgICAgICAgICogICBpZiAob2JqMS0+aW5oZXJpdHMoRm9vSW1wOjppbmZvKSkg
ewotICAgICAgICAgKiAgICAgLy8gLi4uCi0gICAgICAgICAqICAgfQotICAgICAgICAgKgotICAg
ICAgICAgKiBAcGFyYW0gY2luZm8gVGhlIENsYXNzSW5mbyBwb2ludGVyIGZvciB0aGUgY2xhc3Mg
eW91IHdhbnQgdG8gY2hlY2sKLSAgICAgICAgICogaW5oZXJpdGFuY2UgYWdhaW5zdC4KLSAgICAg
ICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgb2JqZWN0J3MgY2xhc3MgaW5oZXJpdHMgZnJvbSBj
bGFzcyB3aXRoIHRoZQotICAgICAgICAgKiBDbGFzc0luZm8gcG9pbnRlciBzcGVjaWZpZWQgaW4g
Y2luZm8KLSAgICAgICAgICovCiAgICAgICAgIGJvb2wgaW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZv
KiBjbGFzc0luZm8pIGNvbnN0IHsgcmV0dXJuIGlzT2JqZWN0KGNsYXNzSW5mbyk7IH0gLy8gRklY
TUU6IE1lcmdlIHdpdGggaXNPYmplY3QuCiAKLSAgICAgICAgLy8gaW50ZXJuYWwgcHJvcGVydGll
cyAoRUNNQSAyNjItMyA4LjYuMikKLQotICAgICAgICAvKioKLSAgICAgICAgICogUmV0dXJucyB0
aGUgcHJvdG90eXBlIG9mIHRoaXMgb2JqZWN0LiBOb3RlIHRoYXQgdGhpcyBpcyBub3QgdGhlIHNh
bWUgYXMKLSAgICAgICAgICogdGhlICJwcm90b3R5cGUiIHByb3BlcnR5LgotICAgICAgICAgKgot
ICAgICAgICAgKiBTZWUgRUNNQSA4LjYuMgotICAgICAgICAgKgotICAgICAgICAgKiBAcmV0dXJu
IFRoZSBvYmplY3QncyBwcm90b3R5cGUKLSAgICAgICAgICovCiAgICAgICAgIEpTVmFsdWUqIHBy
b3RvdHlwZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZShKU1ZhbHVlKiBwcm90
b3R5cGUpOwogCi0gICAgICAgIC8qKgotICAgICAgICAgKiBSZXR1cm5zIHRoZSBjbGFzcyBuYW1l
IG9mIHRoZSBvYmplY3QKLSAgICAgICAgICoKLSAgICAgICAgICogU2VlIEVDTUEgOC42LjIKLSAg
ICAgICAgICoKLSAgICAgICAgICogQHJldHVybiBUaGUgb2JqZWN0J3MgY2xhc3MgbmFtZQotICAg
ICAgICAgKi8KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBb
W0NsYXNzXV0gaW50ZXJuYWwgcHJvcGVydHkgKGltcGxlbWVudGVkIGJ5IGFsbAotICAgICAgICAg
KiBPYmplY3RzKQotICAgICAgICAgKgotICAgICAgICAgKiBUaGUgZGVmYXVsdCBpbXBsZW1lbnRh
dGlvbiB1c2VzIGNsYXNzSW5mbygpLgotICAgICAgICAgKiBZb3Ugc2hvdWxkIGVpdGhlciBpbXBs
ZW1lbnQgY2xhc3NJbmZvKCksIG9yCi0gICAgICAgICAqIGlmIHlvdSBzaW1wbHkgbmVlZCBhIGNs
YXNzbmFtZSwgeW91IGNhbiByZWltcGxlbWVudCBjbGFzc05hbWUoKQotICAgICAgICAgKiBpbnN0
ZWFkLgotICAgICAgICAgKi8KICAgICAgICAgdmlydHVhbCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNv
bnN0OwogCi0gICAgICAgIC8qKgotICAgICAgICAgKiBSZXRyaWV2ZXMgdGhlIHNwZWNpZmllZCBw
cm9wZXJ0eSBmcm9tIHRoZSBvYmplY3QuIElmIG5laXRoZXIgdGhlIG9iamVjdAotICAgICAgICAg
KiBvciBhbnkgb3RoZXIgb2JqZWN0IGluIGl0cyBwcm90b3R5cGUgY2hhaW4gaGF2ZSB0aGUgcHJv
cGVydHksIHRoaXMKLSAgICAgICAgICogZnVuY3Rpb24gd2lsbCByZXR1cm4gVW5kZWZpbmVkLgot
ICAgICAgICAgKgotICAgICAgICAgKiBTZWUgRUNNQSA4LjYuMi4xCi0gICAgICAgICAqCi0gICAg
ICAgICAqIEBwYXJhbSBleGVjIFRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZQotICAgICAgICAg
KiBAcGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byByZXRyaWV2
ZQotICAgICAgICAgKgotICAgICAgICAgKiBAcmV0dXJuIFRoZSBzcGVjaWZpZWQgcHJvcGVydHks
IG9yIFVuZGVmaW5lZAotICAgICAgICAgKi8KICAgICAgICAgSlNWYWx1ZSogZ2V0KEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7CiAgICAgICAgIEpTVmFs
dWUqIGdldChFeGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogCkBAIC0x
ODcsOTcgKzg1LDI0IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0
T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgUHJvcGVydHlTbG90Jik7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiwgdW5zaWduZWQgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmKTsKIAot
ICAgICAgICAvKioKLSAgICAgICAgICogU2V0cyB0aGUgc3BlY2lmaWVkIHByb3BlcnR5LgotICAg
ICAgICAgKgotICAgICAgICAgKiBTZWUgRUNNQSA4LjYuMi4yCi0gICAgICAgICAqCi0gICAgICAg
ICAqIEBwYXJhbSBleGVjIFRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZQotICAgICAgICAgKiBA
cGFyYW0gcHJvcGVydHlOYW1lIFRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eSB0byBzZXQKLSAgICAg
ICAgICogQHBhcmFtIHByb3BlcnR5VmFsdWUgVGhlIHZhbHVlIHRvIHNldAotICAgICAgICAgKi8K
ICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHB1dChF
eGVjU3RhdGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHV0V2l0aEF0dHJpYnV0ZXMoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRl
cyk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwdXRXaXRoQXR0cmlidXRlcyhFeGVjU3RhdGUqLCB1
bnNpZ25lZCBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
KTsKIAotICAgICAgICAvKioKLSAgICAgICAgICogQ2hlY2tzIGlmIGEgcHJvcGVydHkgaXMgZW51
bWVyYWJsZSwgdGhhdCBpcyBpZiBpdCBkb2Vzbid0IGhhdmUgdGhlIERvbnRFbnVtCi0gICAgICAg
ICAqIGZsYWcgc2V0Ci0gICAgICAgICAqCi0gICAgICAgICAqIFNlZSBFQ01BIDE1LjIuNAotICAg
ICAgICAgKiBAcGFyYW0gZXhlYyBUaGUgY3VycmVudCBleGVjdXRpb24gc3RhdGUKLSAgICAgICAg
ICogQHBhcmFtIHByb3BlcnR5TmFtZSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkKLSAgICAgICAg
ICogQHJldHVybiB0cnVlIGlmIHRoZSBwcm9wZXJ0eSBpcyBlbnVtZXJhYmxlLCBvdGhlcndpc2Ug
ZmFsc2UKLSAgICAgICAgICovCiAgICAgICAgIGJvb2wgcHJvcGVydHlJc0VudW1lcmFibGUoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdDsKIAotICAgICAg
ICAvKioKLSAgICAgICAgICogQ2hlY2tzIHRvIHNlZSB3aGV0aGVyIHRoZSBvYmplY3QgKG9yIGFu
eSBvYmplY3QgaW4gaXRzIHByb3RvdHlwZSBjaGFpbikKLSAgICAgICAgICogaGFzIGEgcHJvcGVy
dHkgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuCi0gICAgICAgICAqCi0gICAgICAgICAqIFNlZSBF
Q01BIDguNi4yLjQKLSAgICAgICAgICoKLSAgICAgICAgICogQHBhcmFtIGV4ZWMgVGhlIGN1cnJl
bnQgZXhlY3V0aW9uIHN0YXRlCi0gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5h
bWUgb2YgdGhlIHByb3BlcnR5IHRvIGNoZWNrIGZvcgotICAgICAgICAgKiBAcmV0dXJuIHRydWUg
aWYgdGhlIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5LCBvdGhlcndpc2UgZmFsc2UKLSAgICAgICAg
ICovCiAgICAgICAgIGJvb2wgaGFzUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKSBjb25zdDsKICAgICAgICAgYm9vbCBoYXNQcm9wZXJ0eShFeGVjU3Rh
dGUqLCB1bnNpZ25lZCBwcm9wZXJ0eU5hbWUpIGNvbnN0OwogICAgICAgICBib29sIGhhc093blBy
b3BlcnR5KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3Q7
CiAKLSAgICAgICAgLyoqCi0gICAgICAgICAqIFJlbW92ZXMgdGhlIHNwZWNpZmllZCBwcm9wZXJ0
eSBmcm9tIHRoZSBvYmplY3QuCi0gICAgICAgICAqCi0gICAgICAgICAqIFNlZSBFQ01BIDguNi4y
LjUKLSAgICAgICAgICoKLSAgICAgICAgICogQHBhcmFtIGV4ZWMgVGhlIGN1cnJlbnQgZXhlY3V0
aW9uIHN0YXRlCi0gICAgICAgICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgVGhlIG5hbWUgb2YgdGhl
IHByb3BlcnR5IHRvIGRlbGV0ZQotICAgICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHByb3Bl
cnR5IHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZCBvciBkaWQgbm90Ci0gICAgICAgICAqIGV4aXN0
IG9uIHRoZSBvYmplY3QuIGZhbHNlIGlmIGRlbGV0aW5nIHRoZSBzcGVjaWZpZWQgcHJvcGVydHkg
aXMgbm90Ci0gICAgICAgICAqIGFsbG93ZWQuCi0gICAgICAgICAqLwogICAgICAgICB2aXJ0dWFs
IGJvb2wgZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgdmlydHVhbCBib29sIGRlbGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSos
IHVuc2lnbmVkIHByb3BlcnR5TmFtZSk7CiAKLSAgICAgICAgLyoqCi0gICAgICAgICAqIENvbnZl
cnRzIHRoZSBvYmplY3QgaW50byBhIHByaW1pdGl2ZSB2YWx1ZS4gVGhlIHZhbHVlIHJldHVybiBt
YXkgZGlmZmVyCi0gICAgICAgICAqIGRlcGVuZGluZyBvbiB0aGUgc3VwcGxpZWQgaGludAotICAg
ICAgICAgKgotICAgICAgICAgKiBTZWUgRUNNQSA4LjYuMi42Ci0gICAgICAgICAqCi0gICAgICAg
ICAqIEBwYXJhbSBleGVjIFRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZQotICAgICAgICAgKiBA
cGFyYW0gaGludCBUaGUgZGVzaXJlZCBwcmltaXRpdmUgdHlwZSB0byBjb252ZXJ0IHRvCi0gICAg
ICAgICAqIEByZXR1cm4gQSBwcmltaXRpdmUgdmFsdWUgY29udmVydGVkIGZyb20gdGhlIG9iamV0
Yy4gTm90ZSB0aGF0IHRoZQotICAgICAgICAgKiB0eXBlIG9mIHByaW1pdGl2ZSB2YWx1ZSByZXR1
cm5lZCBtYXkgbm90IGJlIHRoZSBzYW1lIGFzIHRoZSByZXF1ZXN0ZWQKLSAgICAgICAgICogaGlu
dC4KLSAgICAgICAgICovCi0gICAgICAgIC8qKgotICAgICAgICAgKiBJbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgW1tEZWZhdWx0VmFsdWVdXSBpbnRlcm5hbCBwcm9wZXJ0eSAoaW1wbGVtZW50ZWQgYnkK
LSAgICAgICAgICogYWxsIE9iamVjdHMpCi0gICAgICAgICAqLwogICAgICAgICB2aXJ0dWFsIEpT
VmFsdWUqIGRlZmF1bHRWYWx1ZShFeGVjU3RhdGUqLCBKU1R5cGUgaGludCkgY29uc3Q7CiAKLSAg
ICAgICAgLyoqCi0gICAgICAgICAqIFdoZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaW1wbGVtZW50
cyB0aGUgaGFzSW5zdGFuY2UoKSBtZXRob2QuIElmIHRoaXMKLSAgICAgICAgICogcmV0dXJucyBm
YWxzZSB5b3Ugc2hvdWxkIG5vdCBjYWxsIHRoZSBoYXNJbnN0YW5jZSgpIG1ldGhvZCBvbiB0aGlz
Ci0gICAgICAgICAqIG9iamVjdCAodHlwaWNhbGx5LCBhbiBhc3NlcnRpb24gd2lsbCBmYWlsIHRv
IGluZGljYXRlIHRoaXMpLgotICAgICAgICAgKgotICAgICAgICAgKiBAcmV0dXJuIHRydWUgaWYg
dGhpcyBvYmplY3QgaW1wbGVtZW50cyB0aGUgaGFzSW5zdGFuY2UoKSBtZXRob2QsCi0gICAgICAg
ICAqIG90aGVyd2lzZSBmYWxzZQotICAgICAgICAgKi8KICAgICAgICAgdmlydHVhbCBib29sIGlt
cGxlbWVudHNIYXNJbnN0YW5jZSgpIGNvbnN0OwotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBD
aGVja3Mgd2hldGhlciB2YWx1ZSBkZWxlZ2F0ZXMgYmVoYXZpb3IgdG8gdGhpcyBvYmplY3QuIFVz
ZWQgYnkgdGhlCi0gICAgICAgICAqIGluc3RhbmNlb2Ygb3BlcmF0b3IuCi0gICAgICAgICAqCi0g
ICAgICAgICAqIEBwYXJhbSBleGVjIFRoZSBjdXJyZW50IGV4ZWN1dGlvbiBzdGF0ZQotICAgICAg
ICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrCi0gICAgICAgICAqIEByZXR1cm4g
dHJ1ZSBpZiB2YWx1ZSBkZWxlZ2F0ZXMgYmVoYXZpb3IgdG8gdGhpcyBvYmplY3QsIG90aGVyd2lz
ZQotICAgICAgICAgKiBmYWxzZQotICAgICAgICAgKi8KICAgICAgICAgdmlydHVhbCBib29sIGhh
c0luc3RhbmNlKEV4ZWNTdGF0ZSosIEpTVmFsdWUqKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQg
Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYpOwpAQCAtMjk4
LDggKzEyMyw2IEBAIG5hbWVzcGFjZSBLSlMgewogICAgICAgICB2aXJ0dWFsIGJvb2wgbWFzcXVl
cmFkZUFzVW5kZWZpbmVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgICAgICAvLyBU
aGlzIGdldCBmdW5jdGlvbiBvbmx5IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCi0gICAgICAg
IC8vIFRoaXMgaXMgdXNlZCBlLmcuIGJ5IGxvb2t1cE9yQ3JlYXRlRnVuY3Rpb24gKHRvIGNhY2hl
IGEgZnVuY3Rpb24sIHdlIGRvbid0IHdhbnQKLSAgICAgICAgLy8gdG8gbG9vayB1cCBpbiB0aGUg
cHJvdG90eXBlLCBpdCBtaWdodCBhbHJlYWR5IGV4aXN0IHRoZXJlKQogICAgICAgICBKU1ZhbHVl
KiBnZXREaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdCB7IHJldHVy
biBtX3Byb3BlcnR5TWFwLmdldChwcm9wZXJ0eU5hbWUpOyB9CiAgICAgICAgIEpTVmFsdWUqKiBn
ZXREaXJlY3RMb2NhdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIHsgcmV0dXJu
IG1fcHJvcGVydHlNYXAuZ2V0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsgfQogICAgICAgICBKU1Zh
bHVlKiogZ2V0RGlyZWN0TG9jYXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBi
b29sJiBpc1dyaXRlYWJsZSkgeyByZXR1cm4gbV9wcm9wZXJ0eU1hcC5nZXRMb2NhdGlvbihwcm9w
ZXJ0eU5hbWUsIGlzV3JpdGVhYmxlKTsgfQpAQCAtMzA5LDcgKzEzMiw3IEBAIG5hbWVzcGFjZSBL
SlMgewogICAgICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiAhbV9wcm9w
ZXJ0eU1hcC5pc0VtcHR5KCk7IH0KIAogICAgICAgICAvLyBjb252ZW5pZW5jZSB0byBhZGQgYSBm
dW5jdGlvbiBwcm9wZXJ0eSB1bmRlciB0aGUgZnVuY3Rpb24ncyBvd24gYnVpbHQtaW4gbmFtZQot
ICAgICAgICB2b2lkIHB1dERpcmVjdEZ1bmN0aW9uKEludGVybmFsRnVuY3Rpb24qLCB1bnNpZ25l
ZCBhdHRyID0gMCk7CisgICAgICAgIHZvaWQgcHV0RGlyZWN0RnVuY3Rpb24oRXhlY1N0YXRlKiwg
SW50ZXJuYWxGdW5jdGlvbiosIHVuc2lnbmVkIGF0dHIgPSAwKTsKIAogICAgICAgICB2b2lkIGZp
bGxHZXR0ZXJQcm9wZXJ0eVNsb3QoUHJvcGVydHlTbG90JiwgSlNWYWx1ZSoqIGxvY2F0aW9uKTsK
IApJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL0pTU3RhdGljU2NvcGVPYmplY3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9KU1N0YXRpY1Njb3BlT2JqZWN0LmNwcAkocmV2
aXNpb24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvSlNTdGF0aWNTY29wZU9iamVjdC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAKIAogbmFtZXNwYWNlIEtKUyB7CiAK
K0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNTdGF0aWNTY29wZU9iamVjdCk7CisKIEpTT2Jq
ZWN0KiBKU1N0YXRpY1Njb3BlT2JqZWN0Ojp0b1RoaXNPYmplY3QoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAogewogICAgIHJldHVybiBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKTsKSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL2tqcy9KU1dyYXBwZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL2tqcy9KU1dyYXBwZXJPYmplY3QuY3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9KU1dyYXBwZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw4IEBACiAKIG5hbWVzcGFjZSBLSlMgewogCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KEpTV3JhcHBlck9iamVjdCk7CisKIHZvaWQgSlNXcmFwcGVyT2JqZWN0OjptYXJrKCkgCiB7CiAg
ICAgSlNPYmplY3Q6Om1hcmsoKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9NYXRoT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvTWF0aE9iamVjdC5jcHAJKHJl
dmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL01hdGhPYmplY3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw4IEBACiAKIG5hbWVzcGFjZSBLSlMgewogCitBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKE1hdGhPYmplY3QpOworCiBzdGF0aWMgSlNWYWx1ZSogbWF0aFBy
b3RvRnVuY0FicyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0
Jik7CiBzdGF0aWMgSlNWYWx1ZSogbWF0aFByb3RvRnVuY0FDb3MoRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOwogc3RhdGljIEpTVmFsdWUqIG1hdGhQcm90
b0Z1bmNBU2luKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3Qm
KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5j
cHAJKHJldmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUva2pzL05hdGl2ZUVycm9yQ29u
c3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMCArMjgsMTIgQEAKIAogbmFtZXNw
YWNlIEtKUyB7CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JDb25zdHJ1
Y3Rvcik7CisKIGNvbnN0IENsYXNzSW5mbyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOjppbmZvID0g
eyAiRnVuY3Rpb24iLCAmSW50ZXJuYWxGdW5jdGlvbjo6aW5mbywgMCwgMCB9OwogCiBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOjpOYXRpdmVFcnJvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywg
RnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlLCBOYXRpdmVFcnJvclByb3RvdHlw
ZSogbmF0aXZlRXJyb3JQcm90b3R5cGUpCi0gICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGZ1bmN0aW9u
UHJvdG90eXBlLCBJZGVudGlmaWVyKGV4ZWMsIG5hdGl2ZUVycm9yUHJvdG90eXBlLT5nZXREaXJl
Y3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUpLT5nZXRTdHJpbmcoKSkpCisgICAgOiBJbnRl
cm5hbEZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCBJZGVudGlmaWVyKGV4ZWMsIG5h
dGl2ZUVycm9yUHJvdG90eXBlLT5nZXREaXJlY3QoZXhlYy0+cHJvcGVydHlOYW1lcygpLm5hbWUp
LT5nZXRTdHJpbmcoKSkpCiAgICAgLCBtX3Byb3RvKG5hdGl2ZUVycm9yUHJvdG90eXBlKQogewog
ICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoLCBqc051bWJlcihleGVj
LCAxKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5IHwgRG9udEVudW0pOyAvLyBFQ01BIDE1LjExLjcu
NQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL05hdGl2ZUVycm9yUHJvdG90eXBlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvTmF0aXZlRXJyb3JQcm90b3R5cGUuY3BwCShy
ZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9OYXRpdmVFcnJvclByb3RvdHlw
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDggQEAKIAogbmFtZXNwYWNlIEtKUyB7
CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoTmF0aXZlRXJyb3JQcm90b3R5cGUpOworCiBO
YXRpdmVFcnJvclByb3RvdHlwZTo6TmF0aXZlRXJyb3JQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
LCBFcnJvclByb3RvdHlwZSogZXJyb3JQcm90b3R5cGUsIGNvbnN0IFVTdHJpbmcmIG5hbWUsIGNv
bnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiAgICAgOiBKU09iamVjdChlcnJvclByb3RvdHlwZSkKIHsK
SW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL051bWJlckNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvTnVtYmVyQ29uc3RydWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBLSlMgewogCitBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOworCiBjb25zdCBDbGFz
c0luZm8gTnVtYmVyQ29uc3RydWN0b3I6OmluZm8gPSB7ICJGdW5jdGlvbiIsICZJbnRlcm5hbEZ1
bmN0aW9uOjppbmZvLCAwLCBFeGVjU3RhdGU6Om51bWJlclRhYmxlIH07CiAKIC8qIFNvdXJjZSBm
b3IgTnVtYmVyT2JqZWN0Lmx1dC5oCkBAIC00MCw3ICs0Miw3IEBAIGNvbnN0IENsYXNzSW5mbyBO
dW1iZXJDb25zdHJ1Y3Rvcjo6aW5mbyAKIEBlbmQKICovCiBOdW1iZXJDb25zdHJ1Y3Rvcjo6TnVt
YmVyQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rp
b25Qcm90b3R5cGUsIE51bWJlclByb3RvdHlwZSogbnVtYmVyUHJvdG90eXBlKQotICAgIDogSW50
ZXJuYWxGdW5jdGlvbihmdW5jdGlvblByb3RvdHlwZSwgSWRlbnRpZmllcihleGVjLCBudW1iZXJQ
cm90b3R5cGUtPmluZm8uY2xhc3NOYW1lKSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZXhlYywg
ZnVuY3Rpb25Qcm90b3R5cGUsIElkZW50aWZpZXIoZXhlYywgbnVtYmVyUHJvdG90eXBlLT5pbmZv
LmNsYXNzTmFtZSkpCiB7CiAgICAgLy8gTnVtYmVyLlByb3RvdHlwZQogICAgIHB1dERpcmVjdChl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBudW1iZXJQcm90b3R5cGUsIERvbnRFbnVt
IHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9OdW1i
ZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9OdW1iZXJPYmpl
Y3QuY3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9OdW1iZXJPYmpl
Y3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAKIG5hbWVzcGFjZSBLSlMg
ewogCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE51bWJlck9iamVjdCk7CisKIGNvbnN0IENs
YXNzSW5mbyBOdW1iZXJPYmplY3Q6OmluZm8gPSB7ICJOdW1iZXIiLCAwLCAwLCAwIH07CiAKIE51
bWJlck9iamVjdDo6TnVtYmVyT2JqZWN0KEpTT2JqZWN0KiBwcm90b3R5cGUpCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9ranMvTnVtYmVyUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS9ranMvTnVtYmVyUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZh
U2NyaXB0Q29yZS9ranMvTnVtYmVyUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NiArMzUsOCBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChOdW1iZXJQcm90b3R5cGUpOworCiBzdGF0aWMgSlNWYWx1ZSogbnVtYmVyUHJvdG9GdW5jVG9T
dHJpbmcoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOwog
c3RhdGljIEpTVmFsdWUqIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5nKEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xpc3QmKTsKIHN0YXRpYyBKU1ZhbHVlKiBu
dW1iZXJQcm90b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNv
bnN0IEFyZ0xpc3QmKTsKQEAgLTUxLDEyICs1MywxMiBAQCBOdW1iZXJQcm90b3R5cGU6Ok51bWJl
clByb3RvdHlwZShFeGVjU3RhCiAKICAgICAvLyBUaGUgY29uc3RydWN0b3Igd2lsbCBiZSBhZGRl
ZCBsYXRlciwgYWZ0ZXIgTnVtYmVyQ29uc3RydWN0b3IgaGFzIGJlZW4gY29uc3RydWN0ZWQKIAot
ICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywg
ZnVuY3Rpb25Qcm90b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgbnVt
YmVyUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24o
bmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvTG9jYWxlU3RyaW5nLCBudW1iZXJQcm90b0Z1bmNUb0xv
Y2FsZVN0cmluZyksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMp
IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkudmFsdWVPZiwgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZiksIERvbnRFbnVtKTsK
LSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMs
IGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9GaXhlZCwgbnVt
YmVyUHJvdG9GdW5jVG9GaXhlZCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihu
ZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBl
eGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9FeHBvbmVudGlhbCwgbnVtYmVyUHJvdG9GdW5jVG9FeHBv
bmVudGlhbCksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFBy
b3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudG9QcmVjaXNpb24sIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKSwgRG9udEVu
dW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVu
Y3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50
b1N0cmluZywgbnVtYmVyUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5j
dGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvTG9jYWxlU3RyaW5nLCBu
dW1iZXJQcm90b0Z1bmNUb0xvY2FsZVN0cmluZyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RG
dW5jdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9u
UHJvdG90eXBlLCAwLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudmFsdWVPZiwgbnVtYmVyUHJvdG9G
dW5jVmFsdWVPZiksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihleGVjLCBuZXcg
KGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBleGVj
LT5wcm9wZXJ0eU5hbWVzKCkudG9GaXhlZCwgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZCksIERvbnRF
bnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1
bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
dG9FeHBvbmVudGlhbCwgbnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbCksIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RGdW5jdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9u
KGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkudG9QcmVj
aXNpb24sIG51bWJlclByb3RvRnVuY1RvUHJlY2lzaW9uKSwgRG9udEVudW0pOwogfQogCiAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL09iamVjdENvbnN0cnVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvT2JqZWN0Q29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDggKzI3LDEwIEBACiAKIG5hbWVzcGFjZSBLSlMg
ewogCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKE9iamVjdENvbnN0cnVjdG9yKTsKKwogT2Jq
ZWN0Q29uc3RydWN0b3I6Ok9iamVjdENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgT2JqZWN0
UHJvdG90eXBlKiBvYmplY3RQcm90b3R5cGUsIEZ1bmN0aW9uUHJvdG90eXBlKiBmdW5jdGlvblBy
b3RvdHlwZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oZnVuY3Rpb25Qcm90b3R5cGUsIElkZW50
aWZpZXIoZXhlYywgIk9iamVjdCIpKQorICAgIDogSW50ZXJuYWxGdW5jdGlvbihleGVjLCBmdW5j
dGlvblByb3RvdHlwZSwgSWRlbnRpZmllcihleGVjLCAiT2JqZWN0IikpCiB7CiAgICAgLy8gRUNN
QSAxNS4yLjMuMQogICAgIHB1dERpcmVjdChleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBl
LCBvYmplY3RQcm90b3R5cGUsIERvbnRFbnVtIHwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9PYmplY3RQcm90b3R5cGUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IEphdmFTY3JpcHRDb3JlL2tqcy9PYmplY3RQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAzNTgwNSkK
KysrIEphdmFTY3JpcHRDb3JlL2tqcy9PYmplY3RQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw4IEBACiAKIG5hbWVzcGFjZSBLSlMgewogCitBU1NFUlRfQ0xBU1NfRklU
U19JTl9DRUxMKE9iamVjdFByb3RvdHlwZSk7CisKIHN0YXRpYyBKU1ZhbHVlKiBvYmplY3RQcm90
b0Z1bmNWYWx1ZU9mKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0IEFyZ0xp
c3QmKTsKIHN0YXRpYyBKU1ZhbHVlKiBvYmplY3RQcm90b0Z1bmNIYXNPd25Qcm9wZXJ0eShFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CiBzdGF0aWMgSlNW
YWx1ZSogb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZihFeGVjU3RhdGUqLCBKU09iamVjdCos
IEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CkBAIC00MSwxOCArNDMsMTggQEAgc3RhdGljIEpT
VmFsdWUqIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlUwogT2JqZWN0UHJvdG90eXBlOjpPYmplY3RQ
cm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Qcm90
b3R5cGUpCiAgICAgOiBKU09iamVjdCgpIC8vIFtbUHJvdG90eXBlXV0gaXMgbnVsbAogewotICAg
IHB1dERpcmVjdEZ1bmN0aW9uKG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVu
Y3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50b1N0cmluZywgb2JqZWN0
UHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3
IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLnRvTG9jYWxlU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb0xvY2Fs
ZVN0cmluZyksIERvbnRFbnVtKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFBy
b3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBleGVjLT5wcm9wZXJ0
eU5hbWVzKCkudmFsdWVPZiwgb2JqZWN0UHJvdG9GdW5jVmFsdWVPZiksIERvbnRFbnVtKTsKLSAg
ICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1
bmN0aW9uUHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaGFzT3duUHJvcGVydHks
IG9iamVjdFByb3RvRnVuY0hhc093blByb3BlcnR5KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVj
dEZ1bmN0aW9uKG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90
b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSwgb2Jq
ZWN0UHJvdG9GdW5jUHJvcGVydHlJc0VudW1lcmFibGUpLCBEb250RW51bSk7Ci0gICAgcHV0RGly
ZWN0RnVuY3Rpb24obmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblBy
b3RvdHlwZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmlzUHJvdG90eXBlT2YsIG9iamVjdFBy
b3RvRnVuY0lzUHJvdG90eXBlT2YpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24o
ZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlw
ZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCBvYmplY3RQcm90b0Z1bmNUb1N0
cmluZyksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihleGVjLCBuZXcgKGV4ZWMp
IFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAwLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkudG9Mb2NhbGVTdHJpbmcsIG9iamVjdFByb3RvRnVuY1RvTG9jYWxlU3RyaW5n
KSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJv
dG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5
TmFtZXMoKS52YWx1ZU9mLCBvYmplY3RQcm90b0Z1bmNWYWx1ZU9mKSwgRG9udEVudW0pOworICAg
IHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhl
YywgZnVuY3Rpb25Qcm90b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5oYXNPd25Qcm9w
ZXJ0eSwgb2JqZWN0UHJvdG9GdW5jSGFzT3duUHJvcGVydHkpLCBEb250RW51bSk7CisgICAgcHV0
RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBm
dW5jdGlvblByb3RvdHlwZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3BlcnR5SXNFbnVt
ZXJhYmxlLCBvYmplY3RQcm90b0Z1bmNQcm9wZXJ0eUlzRW51bWVyYWJsZSksIERvbnRFbnVtKTsK
KyAgICBwdXREaXJlY3RGdW5jdGlvbihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9u
KGV4ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcm90
b3R5cGVPZiwgb2JqZWN0UHJvdG9GdW5jSXNQcm90b3R5cGVPZiksIERvbnRFbnVtKTsKIAogICAg
IC8vIE1vemlsbGEgZXh0ZW5zaW9ucwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyAoZXhlYykg
UHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDIsIGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5fX2RlZmluZUdldHRlcl9fLCBvYmplY3RQcm90b0Z1bmNEZWZpbmVHZXR0ZXIp
LCBEb250RW51bSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IChleGVjKSBQcm90b3R5cGVG
dW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygp
Ll9fZGVmaW5lU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlciksIERvbnRFbnVt
KTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4
ZWMsIGZ1bmN0aW9uUHJvdG90eXBlLCAxLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuX19sb29rdXBH
ZXR0ZXJfXywgb2JqZWN0UHJvdG9GdW5jTG9va3VwR2V0dGVyKSwgRG9udEVudW0pOwotICAgIHB1
dERpcmVjdEZ1bmN0aW9uKG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rp
b25Qcm90b3R5cGUsIDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2xvb2t1cFNldHRlcl9fLCBv
YmplY3RQcm90b0Z1bmNMb29rdXBTZXR0ZXIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVu
Y3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblBy
b3RvdHlwZSwgMiwgZXhlYy0+cHJvcGVydHlOYW1lcygpLl9fZGVmaW5lR2V0dGVyX18sIG9iamVj
dFByb3RvRnVuY0RlZmluZUdldHRlciksIERvbnRFbnVtKTsKKyAgICBwdXREaXJlY3RGdW5jdGlv
bihleGVjLCBuZXcgKGV4ZWMpIFByb3RvdHlwZUZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9uUHJvdG90
eXBlLCAyLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkuX19kZWZpbmVTZXR0ZXJfXywgb2JqZWN0UHJv
dG9GdW5jRGVmaW5lU2V0dGVyKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4
ZWMsIG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUs
IDEsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5fX2xvb2t1cEdldHRlcl9fLCBvYmplY3RQcm90b0Z1
bmNMb29rdXBHZXR0ZXIpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYywg
bmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMSwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLl9fbG9va3VwU2V0dGVyX18sIG9iamVjdFByb3RvRnVuY0xv
b2t1cFNldHRlciksIERvbnRFbnVtKTsKIH0KIAogCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMv
UHJvdG90eXBlRnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL2tqcy9Q
cm90b3R5cGVGdW5jdGlvbi5jcHAJKHJldmlzaW9uIDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUv
a2pzL1Byb3RvdHlwZUZ1bmN0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsOCArMzEsMTAg
QEAKIAogbmFtZXNwYWNlIEtKUyB7CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoUHJvdG90
eXBlRnVuY3Rpb24pOworCiBQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90eXBlRnVuY3Rpb24oRXhl
Y1N0YXRlKiBleGVjLCBpbnQgbGVuZ3RoLCBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBOYXRpdmVG
dW5jdGlvbiBmdW5jdGlvbikKLSAgICA6IEludGVybmFsRnVuY3Rpb24oZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5mdW5jdGlvblByb3RvdHlwZSgpLCBuYW1lKQorICAgIDogSW50ZXJuYWxG
dW5jdGlvbihleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uUHJvdG90
eXBlKCksIG5hbWUpCiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogewogICAgIEFTU0VSVF9B
UkcoZnVuY3Rpb24sIGZ1bmN0aW9uKTsKQEAgLTQwLDcgKzQyLDcgQEAgUHJvdG90eXBlRnVuY3Rp
b246OlByb3RvdHlwZUZ1bmN0aW9uKEV4ZQogfQogCiBQcm90b3R5cGVGdW5jdGlvbjo6UHJvdG90
eXBlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblByb3RvdHlwZSogZnVuY3Rpb25Q
cm90b3R5cGUsIGludCBsZW5ndGgsIGNvbnN0IElkZW50aWZpZXImIG5hbWUsIE5hdGl2ZUZ1bmN0
aW9uIGZ1bmN0aW9uKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbihmdW5jdGlvblByb3RvdHlwZSwg
bmFtZSkKKyAgICA6IEludGVybmFsRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIG5h
bWUpCiAgICAgLCBtX2Z1bmN0aW9uKGZ1bmN0aW9uKQogewogICAgIEFTU0VSVF9BUkcoZnVuY3Rp
b24sIGZ1bmN0aW9uKTsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL2tqcy9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwQ29uc3Ry
dWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw4IEBACiAKIG5hbWVzcGFjZSBL
SlMgewogCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFJlZ0V4cENvbnN0cnVjdG9yKTsKKwog
Y29uc3QgQ2xhc3NJbmZvIFJlZ0V4cENvbnN0cnVjdG9yOjppbmZvID0geyAiRnVuY3Rpb24iLCAm
SW50ZXJuYWxGdW5jdGlvbjo6aW5mbywgMCwgRXhlY1N0YXRlOjpyZWdFeHBDb25zdHJ1Y3RvclRh
YmxlIH07CiAKIC8qIFNvdXJjZSBmb3IgUmVnRXhwQ29uc3RydWN0b3IubHV0LmgKQEAgLTc2LDcg
Kzc4LDcgQEAgc3RydWN0IFJlZ0V4cENvbnN0cnVjdG9yUHJpdmF0ZSB7CiB9OwogCiBSZWdFeHBD
b25zdHJ1Y3Rvcjo6UmVnRXhwQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBGdW5jdGlvblBy
b3RvdHlwZSogZnVuY3Rpb25Qcm90b3R5cGUsIFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90
eXBlKQotICAgIDogSW50ZXJuYWxGdW5jdGlvbihmdW5jdGlvblByb3RvdHlwZSwgSWRlbnRpZmll
cihleGVjLCAiUmVnRXhwIikpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMsIGZ1bmN0aW9u
UHJvdG90eXBlLCBJZGVudGlmaWVyKGV4ZWMsICJSZWdFeHAiKSkKICAgICAsIGQobmV3IFJlZ0V4
cENvbnN0cnVjdG9yUHJpdmF0ZSkKIHsKICAgICAvLyBFQ01BIDE1LjEwLjUuMSBSZWdFeHAucHJv
dG90eXBlCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwT2JqZWN0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwT2JqZWN0LmNwcAkocmV2aXNpb24gMzU4
MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsOCBAQAogCiBuYW1lc3BhY2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJ
VFNfSU5fQ0VMTChSZWdFeHBPYmplY3QpOworCiBjb25zdCBDbGFzc0luZm8gUmVnRXhwT2JqZWN0
OjppbmZvID0geyAiUmVnRXhwIiwgMCwgMCwgRXhlY1N0YXRlOjpyZWdFeHBUYWJsZSB9OwogCiAv
KiBTb3VyY2UgZm9yIFJlZ0V4cE9iamVjdC5sdXQuaApAQCAtNDQsOCArNDYsNyBAQCBjb25zdCBD
bGFzc0luZm8gUmVnRXhwT2JqZWN0OjppbmZvID0geyAiCiAKIFJlZ0V4cE9iamVjdDo6UmVnRXhw
T2JqZWN0KFJlZ0V4cFByb3RvdHlwZSogcmVnRXhwUHJvdG90eXBlLCBQYXNzUmVmUHRyPFJlZ0V4
cD4gcmVnRXhwKQogICAgIDogSlNPYmplY3QocmVnRXhwUHJvdG90eXBlKQotICAgICwgbV9yZWdF
eHAocmVnRXhwKQotICAgICwgbV9sYXN0SW5kZXgoMCkKKyAgICAsIGQobmV3IFJlZ0V4cE9iamVj
dERhdGEocmVnRXhwLCAwKSkKIHsKIH0KIApAQCAtNjIsMTUgKzYzLDE1IEBAIEpTVmFsdWUqIFJl
Z0V4cE9iamVjdDo6Z2V0VmFsdWVQcm9wZXJ0eSgKIHsKICAgICBzd2l0Y2ggKHRva2VuKSB7CiAg
ICAgICAgIGNhc2UgR2xvYmFsOgotICAgICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihtX3JlZ0V4
cC0+Z2xvYmFsKCkpOworICAgICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihkLT5tX3JlZ0V4cC0+
Z2xvYmFsKCkpOwogICAgICAgICBjYXNlIElnbm9yZUNhc2U6Ci0gICAgICAgICAgICByZXR1cm4g
anNCb29sZWFuKG1fcmVnRXhwLT5pZ25vcmVDYXNlKCkpOworICAgICAgICAgICAgcmV0dXJuIGpz
Qm9vbGVhbihkLT5tX3JlZ0V4cC0+aWdub3JlQ2FzZSgpKTsKICAgICAgICAgY2FzZSBNdWx0aWxp
bmU6Ci0gICAgICAgICAgICByZXR1cm4ganNCb29sZWFuKG1fcmVnRXhwLT5tdWx0aWxpbmUoKSk7
CisgICAgICAgICAgICByZXR1cm4ganNCb29sZWFuKGQtPm1fcmVnRXhwLT5tdWx0aWxpbmUoKSk7
CiAgICAgICAgIGNhc2UgU291cmNlOgotICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IG1fcmVnRXhwLT5wYXR0ZXJuKCkpOworICAgICAgICAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMs
IGQtPm1fcmVnRXhwLT5wYXR0ZXJuKCkpOwogICAgICAgICBjYXNlIExhc3RJbmRleDoKLSAgICAg
ICAgICAgIHJldHVybiBqc051bWJlcihleGVjLCBtX2xhc3RJbmRleCk7CisgICAgICAgICAgICBy
ZXR1cm4ganNOdW1iZXIoZXhlYywgZC0+bV9sYXN0SW5kZXgpOwogICAgIH0KICAgICAKICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTg2LDcgKzg3LDcgQEAgdm9pZCBSZWdFeHBPYmplY3Q6
OnB1dFZhbHVlUHJvcGVydHkoRXhlYwogewogICAgIFVOVVNFRF9QQVJBTSh0b2tlbik7CiAgICAg
QVNTRVJUKHRva2VuID09IExhc3RJbmRleCk7Ci0gICAgbV9sYXN0SW5kZXggPSB2YWx1ZS0+dG9J
bnRlZ2VyKGV4ZWMpOworICAgIGQtPm1fbGFzdEluZGV4ID0gdmFsdWUtPnRvSW50ZWdlcihleGVj
KTsKIH0KIAogYm9vbCBSZWdFeHBPYmplY3Q6Om1hdGNoKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
QXJnTGlzdCYgYXJncykKQEAgLTEwNywyMCArMTA4LDIwIEBAIGJvb2wgUmVnRXhwT2JqZWN0Ojpt
YXRjaChFeGVjU3RhdGUqIGV4ZWMKICAgICBib29sIGdsb2JhbCA9IGdldChleGVjLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkuZ2xvYmFsKS0+dG9Cb29sZWFuKGV4ZWMpOwogICAgIGludCBsYXN0SW5k
ZXggPSAwOwogICAgIGlmIChnbG9iYWwpIHsKLSAgICAgICAgaWYgKG1fbGFzdEluZGV4IDwgMCB8
fCBtX2xhc3RJbmRleCA+IGlucHV0LnNpemUoKSkgewotICAgICAgICAgICAgbV9sYXN0SW5kZXgg
PSAwOworICAgICAgICBpZiAoZC0+bV9sYXN0SW5kZXggPCAwIHx8IGQtPm1fbGFzdEluZGV4ID4g
aW5wdXQuc2l6ZSgpKSB7CisgICAgICAgICAgICBkLT5tX2xhc3RJbmRleCA9IDA7CiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLSAgICAgICAgbGFzdEluZGV4ID0gc3RhdGlj
X2Nhc3Q8aW50PihtX2xhc3RJbmRleCk7CisgICAgICAgIGxhc3RJbmRleCA9IHN0YXRpY19jYXN0
PGludD4oZC0+bV9sYXN0SW5kZXgpOwogICAgIH0KIAogICAgIGludCBmb3VuZEluZGV4OwogICAg
IGludCBmb3VuZExlbmd0aDsKLSAgICByZWdFeHBPYmotPnBlcmZvcm1NYXRjaChtX3JlZ0V4cC5n
ZXQoKSwgaW5wdXQsIGxhc3RJbmRleCwgZm91bmRJbmRleCwgZm91bmRMZW5ndGgpOworICAgIHJl
Z0V4cE9iai0+cGVyZm9ybU1hdGNoKGQtPm1fcmVnRXhwLmdldCgpLCBpbnB1dCwgbGFzdEluZGV4
LCBmb3VuZEluZGV4LCBmb3VuZExlbmd0aCk7CiAKICAgICBpZiAoZ2xvYmFsKSB7CiAgICAgICAg
IGxhc3RJbmRleCA9IGZvdW5kSW5kZXggPCAwID8gMCA6IGZvdW5kSW5kZXggKyBmb3VuZExlbmd0
aDsKLSAgICAgICAgbV9sYXN0SW5kZXggPSBsYXN0SW5kZXg7CisgICAgICAgIGQtPm1fbGFzdElu
ZGV4ID0gbGFzdEluZGV4OwogICAgIH0KIAogICAgIHJldHVybiBmb3VuZEluZGV4ID49IDA7Cklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvUmVnRXhwT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2
YVNjcmlwdENvcmUva2pzL1JlZ0V4cE9iamVjdC5oCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9SZWdFeHBPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsOCArMzUs
OCBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgUmVnRXhwT2JqZWN0KFJlZ0V4cFByb3RvdHlw
ZSosIFBhc3NSZWZQdHI8UmVnRXhwPik7CiAgICAgICAgIHZpcnR1YWwgflJlZ0V4cE9iamVjdCgp
OwogCi0gICAgICAgIHZvaWQgc2V0UmVnRXhwKFBhc3NSZWZQdHI8UmVnRXhwPiByKSB7IG1fcmVn
RXhwID0gcjsgfQotICAgICAgICBSZWdFeHAqIHJlZ0V4cCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVn
RXhwLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0UmVnRXhwKFBhc3NSZWZQdHI8UmVnRXhwPiBy
KSB7IGQtPm1fcmVnRXhwID0gcjsgfQorICAgICAgICBSZWdFeHAqIHJlZ0V4cCgpIGNvbnN0IHsg
cmV0dXJuIGQtPm1fcmVnRXhwLmdldCgpOyB9CiAKICAgICAgICAgSlNWYWx1ZSogdGVzdChFeGVj
U3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAgICAgICAgIEpTVmFsdWUqIGV4ZWMoRXhlY1N0YXRl
KiwgY29uc3QgQXJnTGlzdCYpOwpAQCAtNDksMTUgKzQ5LDI1IEBAIG5hbWVzcGFjZSBLSlMgewog
ICAgICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1
cm4gJmluZm87IH0KICAgICAgICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwogCi0gICAg
ICAgIHZvaWQgc2V0TGFzdEluZGV4KGRvdWJsZSBsYXN0SW5kZXgpIHsgbV9sYXN0SW5kZXggPSBs
YXN0SW5kZXg7IH0KKyAgICAgICAgdm9pZCBzZXRMYXN0SW5kZXgoZG91YmxlIGxhc3RJbmRleCkg
eyBkLT5tX2xhc3RJbmRleCA9IGxhc3RJbmRleDsgfQogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
Ym9vbCBtYXRjaChFeGVjU3RhdGUqLCBjb25zdCBBcmdMaXN0Jik7CiAKICAgICAgICAgdmlydHVh
bCBDYWxsVHlwZSBnZXRDYWxsRGF0YShDYWxsRGF0YSYpOwotCi0gICAgICAgIFJlZlB0cjxSZWdF
eHA+IG1fcmVnRXhwOwotICAgICAgICBkb3VibGUgbV9sYXN0SW5kZXg7CisgICAgICAgIAorICAg
ICAgICBzdHJ1Y3QgUmVnRXhwT2JqZWN0RGF0YSB7CisgICAgICAgICAgICBSZWdFeHBPYmplY3RE
YXRhKFBhc3NSZWZQdHI8UmVnRXhwPiByZWdFeHAsIGRvdWJsZSBsYXN0SW5kZXgpCisgICAgICAg
ICAgICAgICAgOiBtX3JlZ0V4cChyZWdFeHApCisgICAgICAgICAgICAgICAgLCBtX2xhc3RJbmRl
eChsYXN0SW5kZXgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdFeHA+IG1fcmVnRXhwOworICAgICAgICAgICAgZG91YmxlIG1fbGFzdEluZGV4
OworICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgT3duUHRyPFJlZ0V4cE9iamVjdERhdGE+
IGQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgS0pTCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9r
anMvUmVnRXhwUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMv
UmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAog
CiBuYW1lc3BhY2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChSZWdFeHBQcm90
b3R5cGUpOworCiBzdGF0aWMgSlNWYWx1ZSogcmVnRXhwUHJvdG9GdW5jVGVzdChFeGVjU3RhdGUq
LCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CiBzdGF0aWMgSlNWYWx1ZSog
cmVnRXhwUHJvdG9GdW5jRXhlYyhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25z
dCBBcmdMaXN0Jik7CiBzdGF0aWMgSlNWYWx1ZSogcmVnRXhwUHJvdG9GdW5jQ29tcGlsZShFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CkBAIC00NiwxMCAr
NDgsMTAgQEAgY29uc3QgQ2xhc3NJbmZvIFJlZ0V4cFByb3RvdHlwZTo6aW5mbyA9IAogUmVnRXhw
UHJvdG90eXBlOjpSZWdFeHBQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjLCBPYmplY3RQcm90b3R5
cGUqIG9iamVjdFByb3RvdHlwZSwgRnVuY3Rpb25Qcm90b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBl
KQogICAgIDogSlNPYmplY3Qob2JqZWN0UHJvdG90eXBlKQogewotICAgIHB1dERpcmVjdEZ1bmN0
aW9uKG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUs
IDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5jb21waWxlLCByZWdFeHBQcm90b0Z1bmNDb21waWxl
KSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyAoZXhlYykgUHJvdG90eXBl
RnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMo
KS5leGVjLCByZWdFeHBQcm90b0Z1bmNFeGVjKSwgRG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1
bmN0aW9uKG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5
cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50ZXN0LCByZWdFeHBQcm90b0Z1bmNUZXN0KSwg
RG9udEVudW0pOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyAoZXhlYykgUHJvdG90eXBlRnVu
Y3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDAsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS50
b1N0cmluZywgcmVnRXhwUHJvdG9GdW5jVG9TdHJpbmcpLCBEb250RW51bSk7CisgICAgcHV0RGly
ZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5j
dGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbXBpbGUsIHJlZ0V4cFBy
b3RvRnVuY0NvbXBpbGUpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYywg
bmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwg
ZXhlYy0+cHJvcGVydHlOYW1lcygpLmV4ZWMsIHJlZ0V4cFByb3RvRnVuY0V4ZWMpLCBEb250RW51
bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5j
dGlvbihleGVjLCBmdW5jdGlvblByb3RvdHlwZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRl
c3QsIHJlZ0V4cFByb3RvRnVuY1Rlc3QpLCBEb250RW51bSk7CisgICAgcHV0RGlyZWN0RnVuY3Rp
b24oZXhlYywgbmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5jdGlvblByb3Rv
dHlwZSwgMCwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnRvU3RyaW5nLCByZWdFeHBQcm90b0Z1bmNU
b1N0cmluZyksIERvbnRFbnVtKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IEphdmFTY3Jp
cHRDb3JlL2tqcy9TaGVsbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUva2pzL1No
ZWxsLmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU2hlbGwuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsMTcgKzE2NSwxOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBVU3RyaW5nIGNsYXNzTmFtZSgpIGNvbnN0IHsgcmV0dXJuICJnbG9iYWwiOyB9CiB9OwogQ09N
UElMRV9BU1NFUlQoIUlzSW50ZWdlcjxHbG9iYWxPYmplY3Q+Ojp2YWx1ZSwgV1RGX0lzSW50ZWdl
cl9HbG9iYWxPYmplY3RfZmFsc2UpOworQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChHbG9iYWxP
YmplY3QpOwogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChWZWN0b3I8VVN0cmluZz4mIGFy
Z3VtZW50cykKIHsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGdsb2JhbEV4ZWMoKSkgUHJv
dG90eXBlRnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBmdW5jdGlvblByb3RvdHlwZSgpLCAxLCBJZGVu
dGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRlYnVnIiksIGZ1bmN0aW9uRGVidWcpKTsKLSAgICBwdXRE
aXJlY3RGdW5jdGlvbihuZXcgKGdsb2JhbEV4ZWMoKSkgUHJvdG90eXBlRnVuY3Rpb24oZ2xvYmFs
RXhlYygpLCBmdW5jdGlvblByb3RvdHlwZSgpLCAxLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwg
InByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKLSAgICBwdXREaXJlY3RGdW5jdGlvbihuZXcgKGds
b2JhbEV4ZWMoKSkgUHJvdG90eXBlRnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBmdW5jdGlvblByb3Rv
dHlwZSgpLCAwLCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInF1aXQiKSwgZnVuY3Rpb25RdWl0
KSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24obmV3IChnbG9iYWxFeGVjKCkpIFByb3RvdHlwZUZ1
bmN0aW9uKGdsb2JhbEV4ZWMoKSwgZnVuY3Rpb25Qcm90b3R5cGUoKSwgMCwgSWRlbnRpZmllcihn
bG9iYWxFeGVjKCksICJnYyIpLCBmdW5jdGlvbkdDKSk7Ci0gICAgcHV0RGlyZWN0RnVuY3Rpb24o
bmV3IChnbG9iYWxFeGVjKCkpIFByb3RvdHlwZUZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgZnVuY3Rp
b25Qcm90b3R5cGUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJ2ZXJzaW9uIiksIGZ1
bmN0aW9uVmVyc2lvbikpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyAoZ2xvYmFsRXhlYygp
KSBQcm90b3R5cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIGZ1bmN0aW9uUHJvdG90eXBlKCksIDEs
IElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicnVuIiksIGZ1bmN0aW9uUnVuKSk7Ci0gICAgcHV0
RGlyZWN0RnVuY3Rpb24obmV3IChnbG9iYWxFeGVjKCkpIFByb3RvdHlwZUZ1bmN0aW9uKGdsb2Jh
bEV4ZWMoKSwgZnVuY3Rpb25Qcm90b3R5cGUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCks
ICJsb2FkIiksIGZ1bmN0aW9uTG9hZCkpOwotICAgIHB1dERpcmVjdEZ1bmN0aW9uKG5ldyAoZ2xv
YmFsRXhlYygpKSBQcm90b3R5cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIGZ1bmN0aW9uUHJvdG90
eXBlKCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25S
ZWFkbGluZSkpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgbmV3IChnbG9i
YWxFeGVjKCkpIFByb3RvdHlwZUZ1bmN0aW9uKGdsb2JhbEV4ZWMoKSwgZnVuY3Rpb25Qcm90b3R5
cGUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJkZWJ1ZyIpLCBmdW5jdGlvbkRlYnVn
KSk7CisgICAgcHV0RGlyZWN0RnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBuZXcgKGdsb2JhbEV4ZWMo
KSkgUHJvdG90eXBlRnVuY3Rpb24oZ2xvYmFsRXhlYygpLCBmdW5jdGlvblByb3RvdHlwZSgpLCAx
LCBJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgInByaW50IiksIGZ1bmN0aW9uUHJpbnQpKTsKKyAg
ICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBQcm90
b3R5cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIGZ1bmN0aW9uUHJvdG90eXBlKCksIDAsIElkZW50
aWZpZXIoZ2xvYmFsRXhlYygpLCAicXVpdCIpLCBmdW5jdGlvblF1aXQpKTsKKyAgICBwdXREaXJl
Y3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFsRXhlYygpKSBQcm90b3R5cGVGdW5j
dGlvbihnbG9iYWxFeGVjKCksIGZ1bmN0aW9uUHJvdG90eXBlKCksIDAsIElkZW50aWZpZXIoZ2xv
YmFsRXhlYygpLCAiZ2MiKSwgZnVuY3Rpb25HQykpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGds
b2JhbEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkpIFByb3RvdHlwZUZ1bmN0aW9uKGdsb2JhbEV4
ZWMoKSwgZnVuY3Rpb25Qcm90b3R5cGUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJ2
ZXJzaW9uIiksIGZ1bmN0aW9uVmVyc2lvbikpOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGdsb2Jh
bEV4ZWMoKSwgbmV3IChnbG9iYWxFeGVjKCkpIFByb3RvdHlwZUZ1bmN0aW9uKGdsb2JhbEV4ZWMo
KSwgZnVuY3Rpb25Qcm90b3R5cGUoKSwgMSwgSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJydW4i
KSwgZnVuY3Rpb25SdW4pKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5l
dyAoZ2xvYmFsRXhlYygpKSBQcm90b3R5cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIGZ1bmN0aW9u
UHJvdG90eXBlKCksIDEsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAibG9hZCIpLCBmdW5jdGlv
bkxvYWQpKTsKKyAgICBwdXREaXJlY3RGdW5jdGlvbihnbG9iYWxFeGVjKCksIG5ldyAoZ2xvYmFs
RXhlYygpKSBQcm90b3R5cGVGdW5jdGlvbihnbG9iYWxFeGVjKCksIGZ1bmN0aW9uUHJvdG90eXBl
KCksIDAsIElkZW50aWZpZXIoZ2xvYmFsRXhlYygpLCAicmVhZGxpbmUiKSwgZnVuY3Rpb25SZWFk
bGluZSkpOwogCiAgICAgSlNPYmplY3QqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9i
YWxFeGVjKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsg
KytpKQpJbmRleDogSmF2YVNjcmlwdENvcmUva2pzL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nQ29uc3RydWN0b3IuY3BwCShyZXZp
c2lvbiAzNTgwNSkKKysrIEphdmFTY3JpcHRDb3JlL2tqcy9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDE0ICs0NCwxNiBAQCBzdGF0aWMgSlNWYWx1ZSogc3RyaW5n
RnJvbUNoYXJDb2RlKEV4ZWNTCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIHMpOwogfQogCitB
U1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFN0cmluZ0NvbnN0cnVjdG9yKTsKKwogU3RyaW5nQ29u
c3RydWN0b3I6OlN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRnVuY3Rpb25Qcm90
b3R5cGUqIGZ1bmN0aW9uUHJvdG90eXBlLCBTdHJpbmdQcm90b3R5cGUqIHN0cmluZ1Byb3RvdHlw
ZSkKLSAgICA6IEludGVybmFsRnVuY3Rpb24oZnVuY3Rpb25Qcm90b3R5cGUsIElkZW50aWZpZXIo
ZXhlYywgc3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKKyAgICA6IElu
dGVybmFsRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIElkZW50aWZpZXIoZXhlYywg
c3RyaW5nUHJvdG90eXBlLT5jbGFzc0luZm8oKS0+Y2xhc3NOYW1lKSkKIHsKICAgICAvLyBFQ01B
IDE1LjUuMy4xIFN0cmluZy5wcm90b3R5cGUKICAgICBwdXREaXJlY3QoZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgc3RyaW5nUHJvdG90eXBlLCBSZWFkT25seSB8IERvbnRFbnVtIHwg
RG9udERlbGV0ZSk7CiAKICAgICAvLyBFQ01BIDE1LjUuMy4yIGZyb21DaGFyQ29kZSgpCi0gICAg
cHV0RGlyZWN0RnVuY3Rpb24obmV3IChleGVjKSBQcm90b3R5cGVGdW5jdGlvbihleGVjLCBmdW5j
dGlvblByb3RvdHlwZSwgMSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmZyb21DaGFyQ29kZSwgc3Ry
aW5nRnJvbUNoYXJDb2RlKSwgRG9udEVudW0pOworICAgIHB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMs
IG5ldyAoZXhlYykgUHJvdG90eXBlRnVuY3Rpb24oZXhlYywgZnVuY3Rpb25Qcm90b3R5cGUsIDEs
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5mcm9tQ2hhckNvZGUsIHN0cmluZ0Zyb21DaGFyQ29kZSks
IERvbnRFbnVtKTsKIAogICAgIC8vIG5vLiBvZiBhcmd1bWVudHMgZm9yIGNvbnN0cnVjdG9yCiAg
ICAgcHV0RGlyZWN0KGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKGV4ZWMs
IDEpLCBSZWFkT25seSB8IERvbnRFbnVtIHwgRG9udERlbGV0ZSk7CkluZGV4OiBKYXZhU2NyaXB0
Q29yZS9ranMvU3RyaW5nT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9r
anMvU3RyaW5nT2JqZWN0LmNwcAkocmV2aXNpb24gMzU4MDYpCisrKyBKYXZhU2NyaXB0Q29yZS9r
anMvU3RyaW5nT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBAQAogCiBu
YW1lc3BhY2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJpbmdPYmplY3Qp
OworCiBjb25zdCBDbGFzc0luZm8gU3RyaW5nT2JqZWN0OjppbmZvID0geyAiU3RyaW5nIiwgMCwg
MCwgMCB9OwogCiBTdHJpbmdPYmplY3Q6OlN0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBwcm90b3R5cGUpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nUHJvdG90
eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nUHJvdG90eXBl
LmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBKYXZhU2NyaXB0Q29yZS9ranMvU3RyaW5nUHJvdG90
eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQCB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCiBuYW1lc3BhY2UgS0pTIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChTdHJp
bmdQcm90b3R5cGUpOworCiBzdGF0aWMgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5jVG9TdHJpbmco
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOwogc3RhdGlj
IEpTVmFsdWUqIHN0cmluZ1Byb3RvRnVuY0NoYXJBdChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpT
VmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7CiBzdGF0aWMgSlNWYWx1ZSogc3RyaW5nUHJvdG9GdW5j
Q2hhckNvZGVBdChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0
Jik7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9ranMvY29sbGVjdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
SmF2YVNjcmlwdENvcmUva2pzL2NvbGxlY3Rvci5oCShyZXZpc2lvbiAzNTgwNSkKKysrIEphdmFT
Y3JpcHRDb3JlL2tqcy9jb2xsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBA
QAogI2luY2x1ZGUgPHB0aHJlYWQuaD4KICNlbmRpZgogCisjZGVmaW5lIEFTU0VSVF9DTEFTU19G
SVRTX0lOX0NFTEwoY2xhc3MpIENPTVBJTEVfQVNTRVJUKHNpemVvZihjbGFzcykgPD0gQ0VMTF9T
SVpFLCBjbGFzc19maXRzX2luX2NlbGwpCisKIG5hbWVzcGFjZSBLSlMgewogCiAgICAgY2xhc3Mg
QXJnTGlzdDsKSW5kZXg6IEphdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlci5jcHAJKHJldmlzaW9u
IDM1ODA1KQorKysgSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAi
UHJvZmlsZXIuaCIKIAorI2luY2x1ZGUgIkNvbW1vbklkZW50aWZpZXJzLmgiCiAjaW5jbHVkZSAi
RXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTR2xvYmFs
T2JqZWN0LmgiCkBAIC00Myw5ICs0NCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBHbG9iYWxDb2Rl
RXhlY3V0aW9uID0KIHN0YXRpYyBjb25zdCBjaGFyKiBBbm9ueW1vdXNGdW5jdGlvbiA9ICIoYW5v
bnltb3VzIGZ1bmN0aW9uKSI7CiBzdGF0aWMgdW5zaWduZWQgUHJvZmlsZXNVSUQgPSAwOwogCi1z
dGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXIoSlNPYmplY3QqKTsKLXN0
YXRpYyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmllcihjb25zdCBVU3RyaW5nJiBz
b3VyY2VVUkwsIGludCBzdGFydGluZ0xpbmVOdW1iZXIpOwotc3RhdGljIENhbGxJZGVudGlmaWVy
IGNyZWF0ZUNhbGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEpTRnVuY3Rpb24qKTsKK3N0YXRp
YyBDYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmllcihFeGVjU3RhdGUqLCBKU09iamVj
dCopOworc3RhdGljIENhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0
ZSosIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcik7Citz
dGF0aWMgQ2FsbElkZW50aWZpZXIgY3JlYXRlQ2FsbElkZW50aWZpZXJGcm9tRnVuY3Rpb25JbXAo
RXhlY1N0YXRlKiwgSlNGdW5jdGlvbiopOwogCiBQcm9maWxlciogUHJvZmlsZXI6OnNfc2hhcmVk
UHJvZmlsZXIgPSAwOwogUHJvZmlsZXIqIFByb2ZpbGVyOjpzX3NoYXJlZEVuYWJsZWRQcm9maWxl
clJlZmVyZW5jZSA9IDA7CkBAIC0xMTUsMTQgKzExNiwxNCBAQCB2b2lkIFByb2ZpbGVyOjp3aWxs
RXhlY3V0ZShFeGVjU3RhdGUqIGV4CiB7CiAgICAgQVNTRVJUKCFtX2N1cnJlbnRQcm9maWxlcy5p
c0VtcHR5KCkpOwogCi0gICAgZGlzcGF0Y2hGdW5jdGlvblRvUHJvZmlsZXMobV9jdXJyZW50UHJv
ZmlsZXMsICZQcm9maWxlR2VuZXJhdG9yOjp3aWxsRXhlY3V0ZSwgY3JlYXRlQ2FsbElkZW50aWZp
ZXIoY2FsbGVkRnVuY3Rpb24pLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVH
cm91cCgpKTsKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9Qcm9maWxlcyhtX2N1cnJlbnRQcm9maWxl
cywgJlByb2ZpbGVHZW5lcmF0b3I6OndpbGxFeGVjdXRlLCBjcmVhdGVDYWxsSWRlbnRpZmllcihl
eGVjLCBjYWxsZWRGdW5jdGlvbiksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cHJvZmls
ZUdyb3VwKCkpOwogfQogCiB2b2lkIFByb2ZpbGVyOjp3aWxsRXhlY3V0ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcikKIHsK
ICAgICBBU1NFUlQoIW1fY3VycmVudFByb2ZpbGVzLmlzRW1wdHkoKSk7CiAKLSAgICBDYWxsSWRl
bnRpZmllciBjYWxsSWRlbnRpZmllciA9IGNyZWF0ZUNhbGxJZGVudGlmaWVyKHNvdXJjZVVSTCwg
c3RhcnRpbmdMaW5lTnVtYmVyKTsKKyAgICBDYWxsSWRlbnRpZmllciBjYWxsSWRlbnRpZmllciA9
IGNyZWF0ZUNhbGxJZGVudGlmaWVyKGV4ZWMsIHNvdXJjZVVSTCwgc3RhcnRpbmdMaW5lTnVtYmVy
KTsKIAogICAgIGRpc3BhdGNoRnVuY3Rpb25Ub1Byb2ZpbGVzKG1fY3VycmVudFByb2ZpbGVzLCAm
UHJvZmlsZUdlbmVyYXRvcjo6d2lsbEV4ZWN1dGUsIGNhbGxJZGVudGlmaWVyLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnByb2ZpbGVHcm91cCgpKTsKIH0KQEAgLTEzMSwzOSArMTMyLDM2
IEBAIHZvaWQgUHJvZmlsZXI6OmRpZEV4ZWN1dGUoRXhlY1N0YXRlKiBleGUKIHsKICAgICBBU1NF
UlQoIW1fY3VycmVudFByb2ZpbGVzLmlzRW1wdHkoKSk7CiAKLSAgICBkaXNwYXRjaEZ1bmN0aW9u
VG9Qcm9maWxlcyhtX2N1cnJlbnRQcm9maWxlcywgJlByb2ZpbGVHZW5lcmF0b3I6OmRpZEV4ZWN1
dGUsIGNyZWF0ZUNhbGxJZGVudGlmaWVyKGNhbGxlZEZ1bmN0aW9uKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSk7CisgICAgZGlzcGF0Y2hGdW5jdGlvblRvUHJv
ZmlsZXMobV9jdXJyZW50UHJvZmlsZXMsICZQcm9maWxlR2VuZXJhdG9yOjpkaWRFeGVjdXRlLCBj
cmVhdGVDYWxsSWRlbnRpZmllcihleGVjLCBjYWxsZWRGdW5jdGlvbiksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKS0+cHJvZmlsZUdyb3VwKCkpOwogfQogCiB2b2lkIFByb2ZpbGVyOjpkaWRF
eGVjdXRlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmluZyYgc291cmNlVVJMLCBpbnQgc3Rh
cnRpbmdMaW5lTnVtYmVyKQogewogICAgIEFTU0VSVCghbV9jdXJyZW50UHJvZmlsZXMuaXNFbXB0
eSgpKTsKIAotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub1Byb2ZpbGVzKG1fY3VycmVudFByb2ZpbGVz
LCAmUHJvZmlsZUdlbmVyYXRvcjo6ZGlkRXhlY3V0ZSwgY3JlYXRlQ2FsbElkZW50aWZpZXIoc291
cmNlVVJMLCBzdGFydGluZ0xpbmVOdW1iZXIpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PnByb2ZpbGVHcm91cCgpKTsKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9Qcm9maWxlcyhtX2N1cnJl
bnRQcm9maWxlcywgJlByb2ZpbGVHZW5lcmF0b3I6OmRpZEV4ZWN1dGUsIGNyZWF0ZUNhbGxJZGVu
dGlmaWVyKGV4ZWMsIHNvdXJjZVVSTCwgc3RhcnRpbmdMaW5lTnVtYmVyKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5wcm9maWxlR3JvdXAoKSk7CiB9CiAKLUNhbGxJZGVudGlmaWVyIGNy
ZWF0ZUNhbGxJZGVudGlmaWVyKEpTT2JqZWN0KiBjYWxsZWRGdW5jdGlvbikKK0NhbGxJZGVudGlm
aWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGNhbGxl
ZEZ1bmN0aW9uKQogewogICAgIGlmIChjYWxsZWRGdW5jdGlvbi0+aW5oZXJpdHMoJkpTRnVuY3Rp
b246OmluZm8pKQotICAgICAgICByZXR1cm4gY3JlYXRlQ2FsbElkZW50aWZpZXJGcm9tRnVuY3Rp
b25JbXAoc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxlZEZ1bmN0aW9uKSk7CisgICAgICAg
IHJldHVybiBjcmVhdGVDYWxsSWRlbnRpZmllckZyb21GdW5jdGlvbkltcChleGVjLCBzdGF0aWNf
Y2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVkRnVuY3Rpb24pKTsKICAgICBpZiAoY2FsbGVkRnVuY3Rp
b24tPmluaGVyaXRzKCZJbnRlcm5hbEZ1bmN0aW9uOjppbmZvKSkKLSAgICAgICAgcmV0dXJuIENh
bGxJZGVudGlmaWVyKHN0YXRpY19jYXN0PEludGVybmFsRnVuY3Rpb24qPihjYWxsZWRGdW5jdGlv
biktPmZ1bmN0aW9uTmFtZSgpLnVzdHJpbmcoKSwgIiIsIDApOworICAgICAgICByZXR1cm4gQ2Fs
bElkZW50aWZpZXIoc3RhdGljX2Nhc3Q8SW50ZXJuYWxGdW5jdGlvbio+KGNhbGxlZEZ1bmN0aW9u
KS0+bmFtZShleGVjKSwgIiIsIDApOwogCiAgICAgVVN0cmluZyBuYW1lID0gIigiICsgY2FsbGVk
RnVuY3Rpb24tPmNsYXNzTmFtZSgpICsgIiBvYmplY3QpIjsKICAgICByZXR1cm4gQ2FsbElkZW50
aWZpZXIobmFtZSwgMCwgMCk7CiB9CiAKLUNhbGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlm
aWVyKGNvbnN0IFVTdHJpbmcmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcikKK0Nh
bGxJZGVudGlmaWVyIGNyZWF0ZUNhbGxJZGVudGlmaWVyKEV4ZWNTdGF0ZSosIGNvbnN0IFVTdHJp
bmcmIHNvdXJjZVVSTCwgaW50IHN0YXJ0aW5nTGluZU51bWJlcikKIHsKICAgICByZXR1cm4gQ2Fs
bElkZW50aWZpZXIoR2xvYmFsQ29kZUV4ZWN1dGlvbiwgc291cmNlVVJMLCBzdGFydGluZ0xpbmVO
dW1iZXIpOwogfQogCi1DYWxsSWRlbnRpZmllciBjcmVhdGVDYWxsSWRlbnRpZmllckZyb21GdW5j
dGlvbkltcChKU0Z1bmN0aW9uKiBmdW5jdGlvbkltcCkKK0NhbGxJZGVudGlmaWVyIGNyZWF0ZUNh
bGxJZGVudGlmaWVyRnJvbUZ1bmN0aW9uSW1wKEV4ZWNTdGF0ZSogZXhlYywgSlNGdW5jdGlvbiog
ZnVuY3Rpb24pCiB7Ci0gICAgVVN0cmluZyBuYW1lID0gZnVuY3Rpb25JbXAtPmZ1bmN0aW9uTmFt
ZSgpLnVzdHJpbmcoKTsKLSAgICBpZiAobmFtZS5pc0VtcHR5KCkpCi0gICAgICAgIG5hbWUgPSBB
bm9ueW1vdXNGdW5jdGlvbjsKLQotICAgIHJldHVybiBDYWxsSWRlbnRpZmllcihuYW1lLCBmdW5j
dGlvbkltcC0+bV9ib2R5LT5zb3VyY2VVUkwoKSwgZnVuY3Rpb25JbXAtPm1fYm9keS0+bGluZU5v
KCkpOworICAgIGNvbnN0IFVTdHJpbmcmIG5hbWUgPSBmdW5jdGlvbi0+bmFtZShleGVjKTsKKyAg
ICByZXR1cm4gQ2FsbElkZW50aWZpZXIobmFtZS5pc0VtcHR5KCkgPyBBbm9ueW1vdXNGdW5jdGlv
biA6IG5hbWUsIGZ1bmN0aW9uLT5tX2JvZHktPnNvdXJjZVVSTCgpLCBmdW5jdGlvbi0+bV9ib2R5
LT5saW5lTm8oKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEtKUwpJbmRleDogV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1ODA1KQor
KysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAw
OC0wOC0xNyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgcm9vbSBmb3IgYSBmcmVl
IHdvcmQgaW4gSlNDZWxsLgorICAgICAgICAKKyAgICAgICAgQ2hhbmdlZCBKU0RPTVdpbmRvd0Jh
c2UgdG8gc3RvcmUgaXRzIGF1eGlsaWFyeSBkYXRhIGluIGEgc3ViY2xhc3Mgb2YKKyAgICAgICAg
SlNHbG9iYWxEYXRhLCBzbyB0aGUgdHdvIGNvdWxkIHNoYXJlIGEgcG9pbnRlci4KKyAgICAgICAg
CisgICAgICAgIEFkZGVkIGEgYnVuY2ggb2YgQVNTRVJUcywgdG8gaGVscCBjYXRjaCBvdmVyLXNp
emVkIG9iamVjdHMuCisKIDIwMDgtMDgtMTUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM1ODA1KQorKysgV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1
NDU2LDkgKzE1NDU2LDYgQEAKIAkJCXByb2R1Y3RSZWZHcm91cCA9IDAzNDc2OERGRkYzOEE1MDQx
MURCOUM4QiAvKiBQcm9kdWN0cyAqLzsKIAkJCXByb2plY3REaXJQYXRoID0gIiI7CiAJCQlwcm9q
ZWN0Um9vdCA9ICIiOwotCQkJcHJvamVjdFJvb3RzID0gKAotCQkJCSIiLAotCQkJKTsKIAkJCXRh
cmdldHMgPSAoCiAJCQkJOTNGMTk4QTUwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmUgKi8sCiAJ
CQkJREQwNDFGQkUwOUQ5RERCRTAwMTBBRjJBIC8qIERlcml2ZWQgU291cmNlcyAqLywKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAJKHJldmlzaW9uIDM1ODA1KQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTMsMTYgKzE5MywxNCBAQCBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpz
X2luZm8gCiAqLwogCiBKU0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShKU09iamVjdCog
cHJvdG90eXBlLCBET01XaW5kb3cqIHdpbmRvdywgSlNET01XaW5kb3dTaGVsbCogc2hlbGwpCi0g
ICAgOiBKU0dsb2JhbE9iamVjdChwcm90b3R5cGUsIHNoZWxsKQotICAgICwgbV9pbXBsKHdpbmRv
dykKLSAgICAsIGQobmV3IEpTRE9NV2luZG93QmFzZVByaXZhdGUoc2hlbGwpKQorICAgIDogSlNH
bG9iYWxPYmplY3QocHJvdG90eXBlLCBuZXcgSlNET01XaW5kb3dCYXNlRGF0YSh3aW5kb3csIHRo
aXMsIHNoZWxsKSwgc2hlbGwpCiB7CiAgICAgLy8gVGltZSBpbiBtaWxsaXNlY29uZHMgYmVmb3Jl
IHRoZSBzY3JpcHQgdGltZW91dCBoYW5kbGVyIGtpY2tzIGluLgogICAgIHNldFRpbWVvdXRUaW1l
KDEwMDAwKTsKIAogICAgIEdsb2JhbFByb3BlcnR5SW5mbyBzdGF0aWNHbG9iYWxzW10gPSB7CiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyhJZGVudGlmaWVyKGdsb2JhbEV4ZWMoKSwgImRvY3Vt
ZW50IiksIGpzTnVsbCgpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQ
cm9wZXJ0eUluZm8oSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJ3aW5kb3ciKSwgZC0+bV9zaGVs
bCwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KQorICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8oSWRl
bnRpZmllcihnbG9iYWxFeGVjKCksICJ3aW5kb3ciKSwgZCgpLT5tX3NoZWxsLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpCiAgICAgfTsKICAgICAKICAgICBhZGRTdGF0aWNHbG9iYWxzKHN0YXRpY0ds
b2JhbHMsIHNpemVvZihzdGF0aWNHbG9iYWxzKSAvIHNpemVvZihHbG9iYWxQcm9wZXJ0eUluZm8p
KTsKQEAgLTIxMCwzNSArMjA4LDM1IEBAIEpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dCYXNl
KEpTT2JqZWMKIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnVwZGF0ZURvY3VtZW50KCkKIHsKLSAg
ICBBU1NFUlQobV9pbXBsLT5kb2N1bWVudCgpKTsKKyAgICBBU1NFUlQoZCgpLT5tX2ltcGwtPmRv
Y3VtZW50KCkpOwogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbEV4ZWMoKTsKLSAgICBzeW1i
b2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKElkZW50aWZpZXIoZXhlYywgImRvY3VtZW50IiksIHRv
SlMoZXhlYywgbV9pbXBsLT5kb2N1bWVudCgpKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KTsKKyAg
ICBzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKElkZW50aWZpZXIoZXhlYywgImRvY3VtZW50
IiksIHRvSlMoZXhlYywgZCgpLT5tX2ltcGwtPmRvY3VtZW50KCkpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpOwogfQogCiBKU0RPTVdpbmRvd0Jhc2U6On5KU0RPTVdpbmRvd0Jhc2UoKQogewotICAg
IGlmIChtX2ltcGwtPmZyYW1lKCkpCi0gICAgICAgIG1faW1wbC0+ZnJhbWUoKS0+c2NyaXB0KCkt
PmNsZWFyRm9ybWVyV2luZG93KGFzSlNET01XaW5kb3codGhpcykpOworICAgIGlmIChkKCktPm1f
aW1wbC0+ZnJhbWUoKSkKKyAgICAgICAgZCgpLT5tX2ltcGwtPmZyYW1lKCktPnNjcmlwdCgpLT5j
bGVhckZvcm1lcldpbmRvdyhhc0pTRE9NV2luZG93KHRoaXMpKTsKIAogICAgIGNsZWFyQWxsVGlt
ZW91dHMoKTsKIAogICAgIC8vIENsZWFyIGFueSBiYWNrcG9pbnRlcnMgdG8gdGhlIHdpbmRvdwog
Ci0gICAgTGlzdGVuZXJzTWFwOjppdGVyYXRvciBpMiA9IGQtPmpzRXZlbnRMaXN0ZW5lcnMuYmVn
aW4oKTsKLSAgICBMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGUyID0gZC0+anNFdmVudExpc3RlbmVy
cy5lbmQoKTsKKyAgICBMaXN0ZW5lcnNNYXA6Oml0ZXJhdG9yIGkyID0gZCgpLT5qc0V2ZW50TGlz
dGVuZXJzLmJlZ2luKCk7CisgICAgTGlzdGVuZXJzTWFwOjppdGVyYXRvciBlMiA9IGQoKS0+anNF
dmVudExpc3RlbmVycy5lbmQoKTsKICAgICBmb3IgKDsgaTIgIT0gZTI7ICsraTIpCiAgICAgICAg
IGkyLT5zZWNvbmQtPmNsZWFyV2luZG93KCk7Ci0gICAgaTIgPSBkLT5qc0hUTUxFdmVudExpc3Rl
bmVycy5iZWdpbigpOwotICAgIGUyID0gZC0+anNIVE1MRXZlbnRMaXN0ZW5lcnMuZW5kKCk7Cisg
ICAgaTIgPSBkKCktPmpzSFRNTEV2ZW50TGlzdGVuZXJzLmJlZ2luKCk7CisgICAgZTIgPSBkKCkt
PmpzSFRNTEV2ZW50TGlzdGVuZXJzLmVuZCgpOwogICAgIGZvciAoOyBpMiAhPSBlMjsgKytpMikK
ICAgICAgICAgaTItPnNlY29uZC0+Y2xlYXJXaW5kb3coKTsKIAotICAgIFVucHJvdGVjdGVkTGlz
dGVuZXJzTWFwOjppdGVyYXRvciBpMSA9IGQtPmpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVycy5i
ZWdpbigpOwotICAgIFVucHJvdGVjdGVkTGlzdGVuZXJzTWFwOjppdGVyYXRvciBlMSA9IGQtPmpz
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVycy5lbmQoKTsKKyAgICBVbnByb3RlY3RlZExpc3RlbmVy
c01hcDo6aXRlcmF0b3IgaTEgPSBkKCktPmpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVycy5iZWdp
bigpOworICAgIFVucHJvdGVjdGVkTGlzdGVuZXJzTWFwOjppdGVyYXRvciBlMSA9IGQoKS0+anNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXJzLmVuZCgpOwogICAgIGZvciAoOyBpMSAhPSBlMTsgKytp
MSkKICAgICAgICAgaTEtPnNlY29uZC0+Y2xlYXJXaW5kb3coKTsKLSAgICBpMSA9IGQtPmpzVW5w
cm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsKLSAgICBlMSA9IGQtPmpzVW5wcm90
ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMuZW5kKCk7CisgICAgaTEgPSBkKCktPmpzVW5wcm90ZWN0
ZWRIVE1MRXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsKKyAgICBlMSA9IGQoKS0+anNVbnByb3RlY3Rl
ZEhUTUxFdmVudExpc3RlbmVycy5lbmQoKTsKICAgICBmb3IgKDsgaTEgIT0gZTE7ICsraTEpCiAg
ICAgICAgIGkxLT5zZWNvbmQtPmNsZWFyV2luZG93KCk7CiB9CkBAIC00MzEsOSArNDI5LDkgQEAg
SlNWYWx1ZSAqSlNET01XaW5kb3dCYXNlOjpnZXRWYWx1ZVByb3BlcgogICAgIGNhc2UgRXZlbnRf
OgogICAgICAgaWYgKCFhbGxvd3NBY2Nlc3NGcm9tKGV4ZWMpKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLSAgICAgIGlmICghZC0+bV9ldnQpCisgICAgICBpZiAoIWQoKS0+bV9ldnQp
CiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgICAgcmV0dXJuIHRvSlMoZXhlYywg
ZC0+bV9ldnQpOworICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZCgpLT5tX2V2dCk7CiAgICAgY2Fz
ZSBJbWFnZToKICAgICAgIGlmICghYWxsb3dzQWNjZXNzRnJvbShleGVjKSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CkBAIC04MzQsNyArODMyLDcgQEAgSlNFdmVudExpc3RlbmVyKiBK
U0RPTVdpbmRvd0Jhc2U6OmZpbmRKUwogICAgIGlmICghdmFsLT5pc09iamVjdCgpKQogICAgICAg
ICByZXR1cm4gMDsKICAgICBKU09iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8SlNPYmplY3Qq
Pih2YWwpOwotICAgIExpc3RlbmVyc01hcCYgbGlzdGVuZXJzID0gaHRtbCA/IGQtPmpzSFRNTEV2
ZW50TGlzdGVuZXJzIDogZC0+anNFdmVudExpc3RlbmVyczsKKyAgICBMaXN0ZW5lcnNNYXAmIGxp
c3RlbmVycyA9IGh0bWwgPyBkKCktPmpzSFRNTEV2ZW50TGlzdGVuZXJzIDogZCgpLT5qc0V2ZW50
TGlzdGVuZXJzOwogICAgIHJldHVybiBsaXN0ZW5lcnMuZ2V0KG9iamVjdCk7CiB9CiAKQEAgLTg1
Nyw3ICs4NTUsNyBAQCBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogSlNET01XaW5kb3dCCiAg
ICAgaWYgKCF2YWwtPmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+KHZhbCk7Ci0gICAgVW5wcm90ZWN0ZWRM
aXN0ZW5lcnNNYXAmIGxpc3RlbmVycyA9IGh0bWwgPyBkLT5qc1VucHJvdGVjdGVkSFRNTEV2ZW50
TGlzdGVuZXJzIDogZC0+anNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXJzOworICAgIFVucHJvdGVj
dGVkTGlzdGVuZXJzTWFwJiBsaXN0ZW5lcnMgPSBodG1sID8gZCgpLT5qc1VucHJvdGVjdGVkSFRN
TEV2ZW50TGlzdGVuZXJzIDogZCgpLT5qc1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnM7CiAgICAg
cmV0dXJuIGxpc3RlbmVycy5nZXQob2JqZWN0KTsKIH0KIApAQCAtODc2LDEzICs4NzQsMTMgQEAg
UGFzc1JlZlB0cjxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcj4gSgogCiB2b2lkIEpTRE9NV2lu
ZG93QmFzZTo6Y2xlYXJIZWxwZXJPYmplY3RQcm9wZXJ0aWVzKCkKIHsKLSAgICBkLT5tX2V2dCA9
IDA7CisgICAgZCgpLT5tX2V2dCA9IDA7CiB9CiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjpjbGVh
cigpCiB7Ci0gICAgaWYgKGQtPm1fcmV0dXJuVmFsdWVTbG90ICYmICEqZC0+bV9yZXR1cm5WYWx1
ZVNsb3QpCi0gICAgICAgICpkLT5tX3JldHVyblZhbHVlU2xvdCA9IGdldERpcmVjdChJZGVudGlm
aWVyKGdsb2JhbEV4ZWMoKSwgInJldHVyblZhbHVlIikpOworICAgIGlmIChkKCktPm1fcmV0dXJu
VmFsdWVTbG90ICYmICEqZCgpLT5tX3JldHVyblZhbHVlU2xvdCkKKyAgICAgICAgKmQoKS0+bV9y
ZXR1cm5WYWx1ZVNsb3QgPSBnZXREaXJlY3QoSWRlbnRpZmllcihnbG9iYWxFeGVjKCksICJyZXR1
cm5WYWx1ZSIpKTsKIAogICAgIGNsZWFyQWxsVGltZW91dHMoKTsKICAgICBjbGVhckhlbHBlck9i
amVjdFByb3BlcnRpZXMoKTsKQEAgLTg5MCwxMiArODg4LDEyIEBAIHZvaWQgSlNET01XaW5kb3dC
YXNlOjpjbGVhcigpCiAKIHZvaWQgSlNET01XaW5kb3dCYXNlOjpzZXRDdXJyZW50RXZlbnQoRXZl
bnQqIGV2dCkKIHsKLSAgICBkLT5tX2V2dCA9IGV2dDsKKyAgICBkKCktPm1fZXZ0ID0gZXZ0Owog
fQogCiBFdmVudCogSlNET01XaW5kb3dCYXNlOjpjdXJyZW50RXZlbnQoKQogewotICAgIHJldHVy
biBkLT5tX2V2dDsKKyAgICByZXR1cm4gZCgpLT5tX2V2dDsKIH0KIAogSlNPYmplY3QqIEpTRE9N
V2luZG93QmFzZTo6dG9UaGlzT2JqZWN0KEV4ZWNTdGF0ZSopIGNvbnN0CkBAIC05MDUsNyArOTAz
LDcgQEAgSlNPYmplY3QqIEpTRE9NV2luZG93QmFzZTo6dG9UaGlzT2JqZWN0KAogCiBKU0RPTVdp
bmRvd1NoZWxsKiBKU0RPTVdpbmRvd0Jhc2U6OnNoZWxsKCkgY29uc3QKIHsKLSAgICByZXR1cm4g
ZC0+bV9zaGVsbDsKKyAgICByZXR1cm4gZCgpLT5tX3NoZWxsOwogfQogCiBKU0dsb2JhbERhdGEq
IEpTRE9NV2luZG93QmFzZTo6Y29tbW9uSlNHbG9iYWxEYXRhKCkKQEAgLTExNTMsMTUgKzExNTEs
MTUgQEAgSlNWYWx1ZSogd2luZG93UHJvdG9GdW5jTm90SW1wbGVtZW50ZWQoRQogCiB2b2lkIEpT
RE9NV2luZG93QmFzZTo6c2V0UmV0dXJuVmFsdWVTbG90KEpTVmFsdWUqKiBzbG90KQogewotICAg
IGQtPm1fcmV0dXJuVmFsdWVTbG90ID0gc2xvdDsKKyAgICBkKCktPm1fcmV0dXJuVmFsdWVTbG90
ID0gc2xvdDsKIH0KIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyB0aW1lb3V0cyAvLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8KIAogdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNsZWFyQWxsVGltZW91dHMo
KQogewotICAgIGRlbGV0ZUFsbFZhbHVlcyhkLT5tX3RpbWVvdXRzKTsKLSAgICBkLT5tX3RpbWVv
dXRzLmNsZWFyKCk7CisgICAgZGVsZXRlQWxsVmFsdWVzKGQoKS0+bV90aW1lb3V0cyk7CisgICAg
ZCgpLT5tX3RpbWVvdXRzLmNsZWFyKCk7CiB9CiAKIGludCBKU0RPTVdpbmRvd0Jhc2U6Omluc3Rh
bGxUaW1lb3V0KFNjaGVkdWxlZEFjdGlvbiogYSwgaW50IHQsIGJvb2wgc2luZ2xlU2hvdCkKQEAg
LTExNzQsOCArMTE3Miw4IEBAIGludCBKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbGxUaW1lb3V0KFNj
aGUKIAogICAgIGludCBuZXN0TGV2ZWwgPSB0aW1lck5lc3RpbmdMZXZlbCArIDE7CiAgICAgRE9N
V2luZG93VGltZXIqIHRpbWVyID0gbmV3IERPTVdpbmRvd1RpbWVyKHRpbWVvdXRJZCwgbmVzdExl
dmVsLCB0aGlzLCBhKTsKLSAgICBBU1NFUlQoIWQtPm1fdGltZW91dHMuZ2V0KHRpbWVvdXRJZCkp
OwotICAgIGQtPm1fdGltZW91dHMuc2V0KHRpbWVvdXRJZCwgdGltZXIpOworICAgIEFTU0VSVCgh
ZCgpLT5tX3RpbWVvdXRzLmdldCh0aW1lb3V0SWQpKTsKKyAgICBkKCktPm1fdGltZW91dHMuc2V0
KHRpbWVvdXRJZCwgdGltZXIpOwogICAgIC8vIFVzZSBhIG1pbmltdW0gaW50ZXJ2YWwgb2YgMTAg
bXMgdG8gbWF0Y2ggb3RoZXIgYnJvd3NlcnMsIGJ1dCBvbmx5IG9uY2Ugd2UndmUKICAgICAvLyBu
ZXN0ZWQgZW5vdWdoIHRvIG5vdGljZSB0aGF0IHdlJ3JlIHJlcGVhdGluZy4KICAgICAvLyBGYXN0
ZXIgdGltZXJzIG1pZ2h0IGJlICJiZXR0ZXIiLCBidXQgdGhleSdyZSBpbmNvbXBhdGlibGUuCkBA
IC0xMjAxLDE0ICsxMTk5LDE0IEBAIGludCBKU0RPTVdpbmRvd0Jhc2U6Omluc3RhbGxUaW1lb3V0
KEV4ZWMKIAogUGF1c2VkVGltZW91dHMqIEpTRE9NV2luZG93QmFzZTo6cGF1c2VUaW1lb3V0cygp
CiB7Ci0gICAgc2l6ZV90IGNvdW50ID0gZC0+bV90aW1lb3V0cy5zaXplKCk7CisgICAgc2l6ZV90
IGNvdW50ID0gZCgpLT5tX3RpbWVvdXRzLnNpemUoKTsKICAgICBpZiAoY291bnQgPT0gMCkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBQYXVzZWRUaW1lb3V0KiB0ID0gbmV3IFBhdXNlZFRpbWVv
dXQgW2NvdW50XTsKICAgICBQYXVzZWRUaW1lb3V0cyogcmVzdWx0ID0gbmV3IFBhdXNlZFRpbWVv
dXRzKHQsIGNvdW50KTsKIAotICAgIEpTRE9NV2luZG93QmFzZVByaXZhdGU6OlRpbWVvdXRzTWFw
OjppdGVyYXRvciBpdCA9IGQtPm1fdGltZW91dHMuYmVnaW4oKTsKKyAgICBKU0RPTVdpbmRvd0Jh
c2VEYXRhOjpUaW1lb3V0c01hcDo6aXRlcmF0b3IgaXQgPSBkKCktPm1fdGltZW91dHMuYmVnaW4o
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSAhPSBjb3VudDsgKytpLCArK2l0KSB7CiAgICAg
ICAgIGludCB0aW1lb3V0SWQgPSBpdC0+Zmlyc3Q7CiAgICAgICAgIERPTVdpbmRvd1RpbWVyKiB0
aW1lciA9IGl0LT5zZWNvbmQ7CkBAIC0xMjE4LDEwICsxMjE2LDEwIEBAIFBhdXNlZFRpbWVvdXRz
KiBKU0RPTVdpbmRvd0Jhc2U6OnBhdXNlVGkKICAgICAgICAgdFtpXS5yZXBlYXRJbnRlcnZhbCA9
IHRpbWVyLT5yZXBlYXRJbnRlcnZhbCgpOwogICAgICAgICB0W2ldLmFjdGlvbiA9IHRpbWVyLT50
YWtlQWN0aW9uKCk7CiAgICAgfQotICAgIEFTU0VSVChpdCA9PSBkLT5tX3RpbWVvdXRzLmVuZCgp
KTsKKyAgICBBU1NFUlQoaXQgPT0gZCgpLT5tX3RpbWVvdXRzLmVuZCgpKTsKIAotICAgIGRlbGV0
ZUFsbFZhbHVlcyhkLT5tX3RpbWVvdXRzKTsKLSAgICBkLT5tX3RpbWVvdXRzLmNsZWFyKCk7Cisg
ICAgZGVsZXRlQWxsVmFsdWVzKGQoKS0+bV90aW1lb3V0cyk7CisgICAgZCgpLT5tX3RpbWVvdXRz
LmNsZWFyKCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTIzNSw3ICsxMjMzLDcgQEAg
dm9pZCBKU0RPTVdpbmRvd0Jhc2U6OnJlc3VtZVRpbWVvdXRzKFBhdQogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpICE9IGNvdW50OyArK2kpIHsKICAgICAgICAgaW50IHRpbWVvdXRJZCA9IGFycmF5
W2ldLnRpbWVvdXRJZDsKICAgICAgICAgRE9NV2luZG93VGltZXIqIHRpbWVyID0gbmV3IERPTVdp
bmRvd1RpbWVyKHRpbWVvdXRJZCwgYXJyYXlbaV0ubmVzdGluZ0xldmVsLCB0aGlzLCBhcnJheVtp
XS5hY3Rpb24pOwotICAgICAgICBkLT5tX3RpbWVvdXRzLnNldCh0aW1lb3V0SWQsIHRpbWVyKTsK
KyAgICAgICAgZCgpLT5tX3RpbWVvdXRzLnNldCh0aW1lb3V0SWQsIHRpbWVyKTsKICAgICAgICAg
dGltZXItPnN0YXJ0KGFycmF5W2ldLm5leHRGaXJlSW50ZXJ2YWwsIGFycmF5W2ldLnJlcGVhdElu
dGVydmFsKTsKICAgICB9CiAgICAgZGVsZXRlIFtdIGFycmF5OwpAQCAtMTI0OSw3ICsxMjQ3LDcg
QEAgdm9pZCBKU0RPTVdpbmRvd0Jhc2U6OmNsZWFyVGltZW91dChpbnQgdAogICAgIGlmICh0aW1l
b3V0SWQgPD0gMCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZGVsZXRlIGQtPm1fdGltZW91dHMu
dGFrZSh0aW1lb3V0SWQpOworICAgIGRlbGV0ZSBkKCktPm1fdGltZW91dHMudGFrZSh0aW1lb3V0
SWQpOwogfQogCiB2b2lkIEpTRE9NV2luZG93QmFzZTo6dGltZXJGaXJlZChET01XaW5kb3dUaW1l
ciogdGltZXIpCkBAIC0xMjYxLDcgKzEyNTksNyBAQCB2b2lkIEpTRE9NV2luZG93QmFzZTo6dGlt
ZXJGaXJlZChET01XaW5kCiAgICAgICAgIHRpbWVyLT5hY3Rpb24oKS0+ZXhlY3V0ZShzaGVsbCgp
KTsKICAgICAgICAgLy8gVGhlIERPTVdpbmRvd1RpbWVyIG9iamVjdCBtYXkgaGF2ZSBiZWVuIGRl
bGV0ZWQgb3IgcmVwbGFjZWQgZHVyaW5nIGV4ZWN1dGlvbiwKICAgICAgICAgLy8gc28gd2UgcmUt
ZmV0Y2ggaXQuCi0gICAgICAgIHRpbWVyID0gZC0+bV90aW1lb3V0cy5nZXQodGltZW91dElkKTsK
KyAgICAgICAgdGltZXIgPSBkKCktPm1fdGltZW91dHMuZ2V0KHRpbWVvdXRJZCk7CiAgICAgICAg
IGlmICghdGltZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEyNzUsNyArMTI3Myw3IEBA
IHZvaWQgSlNET01XaW5kb3dCYXNlOjp0aW1lckZpcmVkKERPTVdpbmQKIAogICAgIC8vIERlbGV0
ZSB0aW1lciBiZWZvcmUgZXhlY3V0aW5nIHRoZSBhY3Rpb24gZm9yIG9uZS1zaG90IHRpbWVycy4K
ICAgICBTY2hlZHVsZWRBY3Rpb24qIGFjdGlvbiA9IHRpbWVyLT50YWtlQWN0aW9uKCk7Ci0gICAg
ZC0+bV90aW1lb3V0cy5yZW1vdmUodGltZXItPnRpbWVvdXRJZCgpKTsKKyAgICBkKCktPm1fdGlt
ZW91dHMucmVtb3ZlKHRpbWVyLT50aW1lb3V0SWQoKSk7CiAgICAgZGVsZXRlIHRpbWVyOwogICAg
IGFjdGlvbi0+ZXhlY3V0ZShzaGVsbCgpKTsKIApAQCAtMTI4OSwyMiArMTI4NywyMiBAQCB2b2lk
IEpTRE9NV2luZG93QmFzZTo6ZGlzY29ubmVjdEZyYW1lKCkKIAogSlNET01XaW5kb3dCYXNlOjpM
aXN0ZW5lcnNNYXAmIEpTRE9NV2luZG93QmFzZTo6anNFdmVudExpc3RlbmVycygpCiB7Ci0gICAg
cmV0dXJuIGQtPmpzRXZlbnRMaXN0ZW5lcnM7CisgICAgcmV0dXJuIGQoKS0+anNFdmVudExpc3Rl
bmVyczsKIH0KIAogSlNET01XaW5kb3dCYXNlOjpMaXN0ZW5lcnNNYXAmIEpTRE9NV2luZG93QmFz
ZTo6anNIVE1MRXZlbnRMaXN0ZW5lcnMoKQogewotICAgIHJldHVybiBkLT5qc0hUTUxFdmVudExp
c3RlbmVyczsKKyAgICByZXR1cm4gZCgpLT5qc0hUTUxFdmVudExpc3RlbmVyczsKIH0KIAogSlNE
T01XaW5kb3dCYXNlOjpVbnByb3RlY3RlZExpc3RlbmVyc01hcCYgSlNET01XaW5kb3dCYXNlOjpq
c1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcnMoKQogewotICAgIHJldHVybiBkLT5qc1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lcnM7CisgICAgcmV0dXJuIGQoKS0+anNVbnByb3RlY3RlZEV2ZW50TGlz
dGVuZXJzOwogfQogCiBKU0RPTVdpbmRvd0Jhc2U6OlVucHJvdGVjdGVkTGlzdGVuZXJzTWFwJiBK
U0RPTVdpbmRvd0Jhc2U6OmpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnMoKQogewotICAg
IHJldHVybiBkLT5qc1VucHJvdGVjdGVkSFRNTEV2ZW50TGlzdGVuZXJzOworICAgIHJldHVybiBk
KCktPmpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRMaXN0ZW5lcnM7CiB9CiAKIHZvaWQgRE9NV2luZG93
VGltZXI6OmZpcmVkKCkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuaAko
cmV2aXNpb24gMzU4MDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC02MCw3ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIHVwZGF0ZURvY3VtZW50KCk7CiAKLSAgICAgICAgRE9NV2luZG93KiBpbXBs
KCkgY29uc3QgeyByZXR1cm4gbV9pbXBsLmdldCgpOyB9CisgICAgICAgIERPTVdpbmRvdyogaW1w
bCgpIGNvbnN0IHsgcmV0dXJuIGQoKS0+bV9pbXBsLmdldCgpOyB9CiAKICAgICAgICAgdm9pZCBk
aXNjb25uZWN0RnJhbWUoKTsKIApAQCAtMTQ2LDYgKzE0NiwzMCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIH07CiAKICAgICBwcml2YXRlOgorICAgICAgICBzdHJ1Y3QgSlNET01XaW5k
b3dCYXNlRGF0YSA6IHB1YmxpYyBKU0dsb2JhbE9iamVjdERhdGEgeworICAgICAgICAgICAgSlNE
T01XaW5kb3dCYXNlRGF0YShQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRv
d0Jhc2UqIGpzV2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKKyAgICAgICAgICAgICAg
ICA6IEpTR2xvYmFsT2JqZWN0RGF0YSgoSlNHbG9iYWxPYmplY3QqKWpzV2luZG93LCAoSlNPYmpl
Y3QqKXNoZWxsKQorICAgICAgICAgICAgICAgICwgbV9pbXBsKHdpbmRvdykKKyAgICAgICAgICAg
ICAgICAsIG1fZXZ0KDApCisgICAgICAgICAgICAgICAgLCBtX3JldHVyblZhbHVlU2xvdCgwKQor
ICAgICAgICAgICAgICAgICwgbV9zaGVsbChzaGVsbCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgUmVmUHRyPERPTVdpbmRvdz4gbV9pbXBsOworCisgICAgICAg
ICAgICBKU0RPTVdpbmRvd0Jhc2U6Okxpc3RlbmVyc01hcCBqc0V2ZW50TGlzdGVuZXJzOworICAg
ICAgICAgICAgSlNET01XaW5kb3dCYXNlOjpMaXN0ZW5lcnNNYXAganNIVE1MRXZlbnRMaXN0ZW5l
cnM7CisgICAgICAgICAgICBKU0RPTVdpbmRvd0Jhc2U6OlVucHJvdGVjdGVkTGlzdGVuZXJzTWFw
IGpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyczsKKyAgICAgICAgICAgIEpTRE9NV2luZG93QmFz
ZTo6VW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXAganNVbnByb3RlY3RlZEhUTUxFdmVudExpc3RlbmVy
czsKKyAgICAgICAgICAgIEV2ZW50KiBtX2V2dDsKKyAgICAgICAgICAgIEtKUzo6SlNWYWx1ZSoq
IG1fcmV0dXJuVmFsdWVTbG90OworICAgICAgICAgICAgSlNET01XaW5kb3dTaGVsbCogbV9zaGVs
bDsKKworICAgICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgRE9NV2luZG93VGltZXIqPiBU
aW1lb3V0c01hcDsKKyAgICAgICAgICAgIFRpbWVvdXRzTWFwIG1fdGltZW91dHM7CisgICAgICAg
IH07CisgICAgICAgIAogICAgICAgICBLSlM6OkpTVmFsdWUqIGdldExpc3RlbmVyKEtKUzo6RXhl
Y1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OwogICAgICAgICB2
b2lkIHNldExpc3RlbmVyKEtKUzo6RXhlY1N0YXRlKiwgY29uc3QgQXRvbWljU3RyaW5nJiBldmVu
dFR5cGUsIEtKUzo6SlNWYWx1ZSogZnVuY3Rpb24pOwogCkBAIC0xNTksOSArMTgzLDggQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgYWxsb3dzQWNjZXNzRnJvbVByaXZhdGUo
Y29uc3QgS0pTOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0OwogICAgICAgICBTdHJpbmcgY3Jvc3NE
b21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoY29uc3QgS0pTOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0
OwotCi0gICAgICAgIFJlZlB0cjxET01XaW5kb3c+IG1faW1wbDsKLSAgICAgICAgT3duUHRyPEpT
RE9NV2luZG93QmFzZVByaXZhdGU+IGQ7CisgICAgICAgIAorICAgICAgICBKU0RPTVdpbmRvd0Jh
c2VEYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNET01XaW5kb3dCYXNlRGF0
YSo+KEtKUzo6SlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0KICAgICB9OwogCiAgICAgLy8gUmV0dXJu
cyBhIEpTRE9NV2luZG93IG9yIGpzTnVsbCgpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NV2luZG93Q3VzdG9tLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5oCShyZXZpc2lvbiAzNTgwNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uaAkod29ya2luZyBjb3B5KQpAQCAtMjUsMjYgKzI1LDYgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdHJ1Y3QgSlNET01XaW5kb3dCYXNlUHJpdmF0ZSB7Ci0g
ICAgSlNET01XaW5kb3dCYXNlUHJpdmF0ZShKU0RPTVdpbmRvd1NoZWxsKiBzaGVsbCkKLSAgICAg
ICAgOiBtX2V2dCgwKQotICAgICAgICAsIG1fcmV0dXJuVmFsdWVTbG90KDApCi0gICAgICAgICwg
bV9zaGVsbChzaGVsbCkKLSAgICB7Ci0gICAgfQotCi0gICAgSlNET01XaW5kb3dCYXNlOjpMaXN0
ZW5lcnNNYXAganNFdmVudExpc3RlbmVyczsKLSAgICBKU0RPTVdpbmRvd0Jhc2U6Okxpc3RlbmVy
c01hcCBqc0hUTUxFdmVudExpc3RlbmVyczsKLSAgICBKU0RPTVdpbmRvd0Jhc2U6OlVucHJvdGVj
dGVkTGlzdGVuZXJzTWFwIGpzVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyczsKLSAgICBKU0RPTVdp
bmRvd0Jhc2U6OlVucHJvdGVjdGVkTGlzdGVuZXJzTWFwIGpzVW5wcm90ZWN0ZWRIVE1MRXZlbnRM
aXN0ZW5lcnM7Ci0gICAgRXZlbnQqIG1fZXZ0OwotICAgIEtKUzo6SlNWYWx1ZSoqIG1fcmV0dXJu
VmFsdWVTbG90OwotICAgIEpTRE9NV2luZG93U2hlbGwqIG1fc2hlbGw7Ci0KLSAgICB0eXBlZGVm
IEhhc2hNYXA8aW50LCBET01XaW5kb3dUaW1lcio+IFRpbWVvdXRzTWFwOwotICAgIFRpbWVvdXRz
TWFwIG1fdGltZW91dHM7Ci19OwotCiBpbmxpbmUgSlNET01XaW5kb3cqIGFzSlNET01XaW5kb3co
S0pTOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewogICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxKU0RPTVdpbmRvdyo+KGdsb2JhbE9iamVjdCk7CkBAIC0xODAsNyArMTYwLDcgQEAgaW5s
aW5lIGJvb2wgSlNET01XaW5kb3dCYXNlOjphbGxvd3NBY2NlcwogQUxXQVlTX0lOTElORSBib29s
IEpTRE9NV2luZG93QmFzZTo6YWxsb3dzQWNjZXNzRnJvbVByaXZhdGUoY29uc3QgSlNHbG9iYWxP
YmplY3QqIG90aGVyKSBjb25zdAogewogICAgIGNvbnN0IEpTRE9NV2luZG93KiBvcmlnaW5XaW5k
b3cgPSBhc0pTRE9NV2luZG93KG90aGVyKTsKLSAgICBjb25zdCBKU0RPTVdpbmRvdyogdGFyZ2V0
V2luZG93ID0gZC0+bV9zaGVsbC0+d2luZG93KCk7CisgICAgY29uc3QgSlNET01XaW5kb3cqIHRh
cmdldFdpbmRvdyA9IGQoKS0+bV9zaGVsbC0+d2luZG93KCk7CiAKICAgICBpZiAob3JpZ2luV2lu
ZG93ID09IHRhcmdldFdpbmRvdykKICAgICAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAJKHJldmlzaW9uIDM1ODA1KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksOCBAQCB1c2luZyBuYW1lc3BhY2UgS0pTOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNET01XaW5kb3dTaGVsbCkKKwogY29uc3Qg
Q2xhc3NJbmZvIEpTRE9NV2luZG93U2hlbGw6OnNfaW5mbyA9IHsgIkpTRE9NV2luZG93U2hlbGwi
LCAwLCAwLCAwIH07CiAKIEpTRE9NV2luZG93U2hlbGw6OkpTRE9NV2luZG93U2hlbGwoRE9NV2lu
ZG93KiBkb21XaW5kb3cpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5l
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBFdmVudE5hbWVzOwogCitBU1NFUlRfQ0xBU1NfRklUU19J
Tl9DRUxMKEpTQWJzdHJhY3RFdmVudExpc3RlbmVyKQorCiB2b2lkIEpTQWJzdHJhY3RFdmVudExp
c3RlbmVyOjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQsIGJvb2wgaXNXaW5kb3dFdmVudCkKIHsK
ICAgICBKU09iamVjdCogbGlzdGVuZXIgPSBsaXN0ZW5lck9iaigpOwpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZS5jcHAJKHJldmlzaW9uIDM1ODA1KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgS0pT
OwogCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTRXZlbnRUYXJnZXROb2RlKQorCiBKU0V2
ZW50VGFyZ2V0Tm9kZTo6SlNFdmVudFRhcmdldE5vZGUoSlNPYmplY3QqIHByb3RvdHlwZSwgTm9k
ZSogbm9kZSkKICAgICA6IEpTTm9kZShwcm90b3R5cGUsIG5vZGUpCiB7CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTElucHV0RWxlbWVudEJhc2UuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MSW5wdXRFbGVtZW50QmFzZS5jcHAJKHJldmlzaW9uIDM1
ODA1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxJbnB1dEVsZW1lbnRCYXNlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsNiArMjYsOCBAQCB1c2luZyBuYW1lc3BhY2UgS0pTOwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNIVE1MSW5w
dXRFbGVtZW50QmFzZSkKKwogc3RhdGljIEpTVmFsdWUqIGpzSFRNTElucHV0RWxlbWVudEJhc2VG
dW5jdGlvblNldFNlbGVjdGlvblJhbmdlKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSos
IGNvbnN0IEFyZ0xpc3QmKTsKIAogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxP
cHRpb25FbGVtZW50Q29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MT3B0aW9uRWxlbWVudENvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMzU4MDUp
CisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDggQEAgdXNpbmcgbmFtZXNwYWNlIEtKUzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTSFRN
TE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3RvcikKKwogY29uc3QgQ2xhc3NJbmZvIEpTSFRNTE9wdGlv
bkVsZW1lbnRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiT3B0aW9uQ29uc3RydWN0b3IiLCAwLCAw
LCAwIH07CiAKIEpTSFRNTE9wdGlvbkVsZW1lbnRDb25zdHJ1Y3Rvcjo6SlNIVE1MT3B0aW9uRWxl
bWVudENvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgRG9jdW1lbnQqIGRvY3VtZW50KQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0ltYWdlQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbWFnZUNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24g
MzU4MDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW1hZ2VDb25zdHJ1Y3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAgdXNpbmcgbmFtZXNwYWNlIEtKUzsKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTSW1hZ2VDb25z
dHJ1Y3RvcikKKwogY29uc3QgQ2xhc3NJbmZvIEpTSW1hZ2VDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiSW1hZ2VDb25zdHJ1Y3RvciIsIDAsIDAsIDAgfTsKIAogSlNJbWFnZUNvbnN0cnVjdG9yOjpK
U0ltYWdlQ29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjLCBEb2N1bWVudCogZG9jdW1lbnQpCklu
ZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5zcGVjdGVkT2JqZWN0V3JhcHBlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luc3BlY3RlZE9iamVjdFdyYXBwZXIu
Y3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0ZWRP
YmplY3RXcmFwcGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQCB1c2luZyBu
YW1lc3BhY2UgS0pTOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0FTU0VSVF9DTEFTU19GSVRT
X0lOX0NFTEwoSlNJbnNwZWN0ZWRPYmplY3RXcmFwcGVyKQorCiB0eXBlZGVmIEhhc2hNYXA8SlNP
YmplY3QqLCBKU0luc3BlY3RlZE9iamVjdFdyYXBwZXIqPiBXcmFwcGVyTWFwOwogdHlwZWRlZiBI
YXNoTWFwPEpTR2xvYmFsT2JqZWN0KiwgV3JhcHBlck1hcCo+IEdsb2JhbE9iamVjdFdyYXBwZXJN
YXA7CiAKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBw
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNJbnNwZWN0b3JDYWxs
YmFja1dyYXBwZXIuY3BwCShyZXZpc2lvbiAzNTgwNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw4IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQVNT
RVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0luc3BlY3RvckNhbGxiYWNrV3JhcHBlcikKKwogdHlw
ZWRlZiBIYXNoTWFwPEpTT2JqZWN0KiwgSlNJbnNwZWN0b3JDYWxsYmFja1dyYXBwZXIqPiBXcmFw
cGVyTWFwOwogCiBzdGF0aWMgV3JhcHBlck1hcCYgd3JhcHBlcnMoKQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU05TUmVzb2x2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNOU1Jlc29sdmVyLmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTlNSZXNvbHZlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAg
dXNpbmcgbmFtZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitBU1NFUlRfQ0xB
U1NfRklUU19JTl9DRUxMKEpTTlNSZXNvbHZlcikKKwogSlNOU1Jlc29sdmVyOjpKU05TUmVzb2x2
ZXIoSlNWYWx1ZSogcmVzb2x2ZXIpCiAgICAgOiBtX3Jlc29sdmVyKHJlc29sdmVyKQogewpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rpb24uY3BwCShy
ZXZpc2lvbiAzNTgwNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVzQ29sbGVj
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxM
KEpTTmFtZWROb2Rlc0NvbGxlY3Rpb24pCisKIGNvbnN0IENsYXNzSW5mbyBKU05hbWVkTm9kZXND
b2xsZWN0aW9uOjpzX2luZm8gPSB7ICJDb2xsZWN0aW9uIiwgMCwgMCwgMCB9OwogCiAvLyBTdWNo
IGEgY29sbGVjdGlvbiBpcyB1c3VhbGx5IHZlcnkgc2hvcnQtbGl2ZWQsIGl0IG9ubHkgZXhpc3Rz
CkBAIC00MiwyMCArNDQsMjAgQEAgY29uc3QgQ2xhc3NJbmZvIEpTTmFtZWROb2Rlc0NvbGxlY3Rp
b246OgogLy8gc28gaXQgc2hvdWxkbid0IGJlIGEgcHJvYmxlbSB0aGF0IGl0J3Mgc3RvcmluZyBh
bGwgdGhlIG5vZGVzICh3aXRoIHRoZSBzYW1lIG5hbWUpLiAoRGF2aWQpCiBKU05hbWVkTm9kZXND
b2xsZWN0aW9uOjpKU05hbWVkTm9kZXNDb2xsZWN0aW9uKEtKUzo6SlNPYmplY3QqIHByb3RvdHlw
ZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxOb2RlPiA+JiBub2RlcykKICAgICA6IERPTU9iamVjdChw
cm90b3R5cGUpCi0gICAgLCBtX25vZGVzKG5vZGVzKQorICAgICwgbV9ub2RlcyhuZXcgVmVjdG9y
PFJlZlB0cjxOb2RlPiA+KG5vZGVzKSkKIHsKIH0KIAogSlNWYWx1ZSogSlNOYW1lZE5vZGVzQ29s
bGVjdGlvbjo6bGVuZ3RoR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNOYW1lZE5v
ZGVzQ29sbGVjdGlvbiogdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTTmFtZWROb2Rlc0NvbGxlY3Rp
b24qPihzbG90LnNsb3RCYXNlKCkpOwotICAgIHJldHVybiBqc051bWJlcihleGVjLCB0aGlzT2Jq
LT5tX25vZGVzLnNpemUoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHRoaXNPYmotPm1f
bm9kZXMtPnNpemUoKSk7CiB9CiAKIEpTVmFsdWUqIEpTTmFtZWROb2Rlc0NvbGxlY3Rpb246Omlu
ZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBjb25zdCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNOYW1lZE5vZGVzQ29sbGVjdGlv
biAqdGhpc09iaiA9IHN0YXRpY19jYXN0PEpTTmFtZWROb2Rlc0NvbGxlY3Rpb24qPihzbG90LnNs
b3RCYXNlKCkpOwotICAgIHJldHVybiB0b0pTKGV4ZWMsIHRoaXNPYmotPm1fbm9kZXNbc2xvdC5p
bmRleCgpXS5nZXQoKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgKCp0aGlzT2JqLT5tX25vZGVz
KVtzbG90LmluZGV4KCldLmdldCgpKTsKIH0KIAogYm9vbCBKU05hbWVkTm9kZXNDb2xsZWN0aW9u
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYgc2xvdCkKQEAgLTY3LDcgKzY5LDcgQEAgYm9vbCBK
U05hbWVkTm9kZXNDb2xsZWN0aW9uOjpnZXRPd25Qcm9wZQogCiAgICAgYm9vbCBvazsKICAgICB1
bnNpZ25lZCBpbmRleCA9IHByb3BlcnR5TmFtZS50b1VJbnQzMigmb2spOwotICAgIGlmIChvayAm
JiBpbmRleCA8IG1fbm9kZXMuc2l6ZSgpKSB7CisgICAgaWYgKG9rICYmIGluZGV4IDwgbV9ub2Rl
cy0+c2l6ZSgpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgaW5kZXgsIGlu
ZGV4R2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtNzYsOCArNzgsOCBA
QCBib29sIEpTTmFtZWROb2Rlc0NvbGxlY3Rpb246OmdldE93blByb3BlCiAgICAgLy8gZG9jdW1l
bnQuZm9ybU5hbWUubmFtZSByZXN1bHQgYnkgaWQgYXMgd2VsbCBhcyBiZSBpbmRleC4KIAogICAg
IEF0b21pY1N0cmluZyBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWU7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9kZXMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgTm9k
ZSogbm9kZSA9IG1fbm9kZXNbaV0uZ2V0KCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IG1fbm9kZXMtPnNpemUoKTsgaSsrKSB7CisgICAgICAgIE5vZGUqIG5vZGUgPSAoKm1fbm9kZXMp
W2ldLmdldCgpOwogICAgICAgICBpZiAobm9kZS0+aGFzQXR0cmlidXRlcygpICYmIG5vZGUtPmF0
dHJpYnV0ZXMoKS0+aWQoKSA9PSBhdG9taWNQcm9wZXJ0eU5hbWUpIHsKICAgICAgICAgICAgIHNs
b3Quc2V0Q3VzdG9tSW5kZXgodGhpcywgaSwgaW5kZXhHZXR0ZXIpOwogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxlY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2Rlc0NvbGxl
Y3Rpb24uaAkocmV2aXNpb24gMzU4MDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWRO
b2Rlc0NvbGxlY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyBLSlM6OkpTVmFsdWUqIGxlbmd0aEdldHRlcihL
SlM6OkV4ZWNTdGF0ZSosIGNvbnN0IEtKUzo6SWRlbnRpZmllciYsIGNvbnN0IEtKUzo6UHJvcGVy
dHlTbG90Jik7CiAgICAgICAgIHN0YXRpYyBLSlM6OkpTVmFsdWUqIGluZGV4R2V0dGVyKEtKUzo6
RXhlY1N0YXRlKiwgY29uc3QgS0pTOjpJZGVudGlmaWVyJiwgY29uc3QgS0pTOjpQcm9wZXJ0eVNs
b3QmKTsKIAotICAgICAgICBWZWN0b3I8UmVmUHRyPE5vZGU+ID4gbV9ub2RlczsKKyAgICAgICAg
T3duUHRyPFZlY3RvcjxSZWZQdHI8Tm9kZT4gPiA+IG1fbm9kZXM7CiAgICAgfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJD
b25kaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmls
dGVyQ29uZGl0aW9uLmNwcAkocmV2aXNpb24gMzU4MDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTm9kZUZpbHRlckNvbmRpdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDgg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgS0pTOwogCitBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKEpTTm9kZUZpbHRlckNvbmRpdGlvbikKKwogSlNOb2RlRmlsdGVy
Q29uZGl0aW9uOjpKU05vZGVGaWx0ZXJDb25kaXRpb24oSlNWYWx1ZSogZmlsdGVyKQogICAgIDog
bV9maWx0ZXIoZmlsdGVyKQogewpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1F1YXJhbnRp
bmVkT2JqZWN0V3JhcHBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5jcHAJKHJldmlzaW9uIDM1ODA1KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1F1YXJhbnRpbmVkT2JqZWN0V3JhcHBlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDggQEAgdXNpbmcgbmFtZXNwYWNlIEtKUzsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTUXVhcmFudGluZWRPYmplY3RX
cmFwcGVyKQorCiBjb25zdCBDbGFzc0luZm8gSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OnNf
aW5mbyA9IHsgIkpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyIiwgMCwgMCwgMCB9OwogCiBKU1F1
YXJhbnRpbmVkT2JqZWN0V3JhcHBlciogSlNRdWFyYW50aW5lZE9iamVjdFdyYXBwZXI6OmFzV3Jh
cHBlcihKU1ZhbHVlKiB2YWx1ZSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNSR0JDb2xv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JHQkNvbG9yLmNwcAko
cmV2aXNpb24gMzU4MDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTUkdCQ29sb3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw4IEBAIHVzaW5nIG5hbWVzcGFjZSBLSlM7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU1JHQkNvbG9y
KQorCiBjb25zdCBDbGFzc0luZm8gSlNSR0JDb2xvcjo6c19pbmZvID0geyAiUkdCQ29sb3IiLCAw
LCAmSlNSR0JDb2xvclRhYmxlLCAwIH07CiAKIC8qCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAzNTgw
NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQCB1c2luZyBuYW1lc3BhY2UgS0pTOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK0FTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNYTUxI
dHRwUmVxdWVzdENvbnN0cnVjdG9yKQorCiBjb25zdCBDbGFzc0luZm8gSlNYTUxIdHRwUmVxdWVz
dENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJYTUxIdHRwUmVxdWVzdENvbnN0cnVjdG9yIiwgMCwg
MCwgMCB9OwogCiBKU1hNTEh0dHBSZXF1ZXN0Q29uc3RydWN0b3I6OkpTWE1MSHR0cFJlcXVlc3RD
b25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIERvY3VtZW50KiBkb2N1bWVudCkKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3IuY3Bw
CShyZXZpc2lvbiAzNTgwNSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29y
Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4IEBAIHVzaW5nIG5h
bWVzcGFjZSBLSlM7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorQVNTRVJUX0NMQVNTX0ZJVFNf
SU5fQ0VMTChKU1hTTFRQcm9jZXNzb3JDb25zdHJ1Y3RvcikKKwogY29uc3QgQ2xhc3NJbmZvIEpT
WFNMVFByb2Nlc3NvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJYU0xUUHJvY2Vzc29yQ29uc3J1
Y3RvciIsIDAsIDAsIDAgfTsKIAogSlNYU0xUUHJvY2Vzc29yQ29uc3RydWN0b3I6OkpTWFNMVFBy
b2Nlc3NvckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMzU4MDUpCisrKyBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC03MjcsNiArNzI3LDggQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxudXNpbmcgbmFtZXNwYWNlIEtKUztcblxuIik7CiAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJuYW1lc3BhY2UgV2ViQ29yZSB7XG5cbiIpOwogCisgICAgcHVzaChAaW1wbENv
bnRlbnQsICJBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKCRjbGFzc05hbWUpXG5cbiIpOworCiAg
ICAgIyAtIEFkZCBhbGwgYXR0cmlidXRlcyBpbiBhIGhhc2h0YWJsZSBkZWZpbml0aW9uCiAgICAg
bXkgJG51bUF0dHJpYnV0ZXMgPSBAeyRkYXRhTm9kZS0+YXR0cmlidXRlc307CiAgICAgJG51bUF0
dHJpYnV0ZXMrKyBpZiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJHZW5lcmF0ZUNv
bnN0cnVjdG9yIn07CkluZGV4OiBXZWJDb3JlL2JyaWRnZS9ydW50aW1lX21ldGhvZC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2UvcnVudGltZV9tZXRob2QuY3BwCShyZXZpc2lvbiAz
NTgwNSkKKysrIFdlYkNvcmUvYnJpZGdlL3J1bnRpbWVfbWV0aG9kLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzQsOCArMzQsMTAgQEAgbmFtZXNwYWNlIEtKUyB7CiAKIHVzaW5nIG5hbWVzcGFjZSBC
aW5kaW5nczsKIAorQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChSdW50aW1lTWV0aG9kKTsKKwog
UnVudGltZU1ldGhvZDo6UnVudGltZU1ldGhvZChFeGVjU3RhdGUgKmV4ZWMsIGNvbnN0IElkZW50
aWZpZXIgJmlkZW50LCBCaW5kaW5nczo6TWV0aG9kTGlzdCAmbSkgCi0gICAgOiBJbnRlcm5hbEZ1
bmN0aW9uKGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+ZnVuY3Rpb25Qcm90b3R5cGUoKSwg
aWRlbnQpCisgICAgOiBJbnRlcm5hbEZ1bmN0aW9uKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+ZnVuY3Rpb25Qcm90b3R5cGUoKSwgaWRlbnQpCiAgICAgLCBfbWV0aG9kTGlzdChu
ZXcgTWV0aG9kTGlzdChtKSkKIHsKIH0KSW5kZXg6IFdlYkNvcmUvYnJpZGdlL2puaS9qbmlfdXRp
bGl0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9icmlkZ2Uvam5pL2puaV91dGlsaXR5LmNw
cAkocmV2aXNpb24gMzU4MDUpCisrKyBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX3V0aWxpdHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIGpvYmplY3QgY29udmVy
dEFycmF5SW5zdGFuY2VUb0phdgogICAgIC8vIHRoZSByZXF1ZXN0ZWQgSmF2YSBBcnJheSB0eXBl
IHJlcXVlc3RlZCwgdW5sZXNzIHRoZSBhcnJheSB0eXBlIGlzIHNvbWUgb2JqZWN0IGFycmF5CiAg
ICAgLy8gb3RoZXIgdGhhbiBhIHN0cmluZy4KICAgICBKU0FycmF5ICpqc0FycmF5ID0gc3RhdGlj
X2Nhc3Q8SlNBcnJheSAqPih2YWx1ZSk7Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0ganNBcnJheS0+
Z2V0TGVuZ3RoKCk7CisgICAgdW5zaWduZWQgbGVuZ3RoID0ganNBcnJheS0+bGVuZ3RoKCk7CiAg
ICAgam9iamVjdEFycmF5IGphcnJheSA9IDA7CiAgICAgCiAgICAgLy8gQnVpbGQgdGhlIGNvcnJl
Y3QgYXJyYXkgdHlwZQpJbmRleDogV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM1ODA2KQorKysgV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMSBAQAorMjAwOC0wOC0xNyAgR2VvZmZy
ZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1hZGUgcm9vbSBmb3IgYSBmcmVlIHdvcmQgaW4gSlNDZWxs
LgorICAgICAgICAKKyAgICAgICAgKFVwZGF0ZWQgZm9yIEphdmFTY3JpcHRDb3JlIGNoYW5nZXMu
KQorCiAyMDA4LTA4LTE1ICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAg
UnViYmVyLXN0YW1wZWQgYnkgR2VvZmYgR2FyZW4uCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcv
V2ViU2NyaXB0RGVidWdnZXIubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlNjcmlwdERlYnVnZ2VyLm1tCShyZXZpc2lvbiAzNTgwNSkKKysrIFdlYktpdC9tYWMvV2ViVmll
dy9XZWJTY3JpcHREZWJ1Z2dlci5tbQkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBAQCBX
ZWJTY3JpcHREZWJ1Z2dlcjo6V2ViU2NyaXB0RGVidWdnZXIoSlNHCiAgICAgOiBtX2NhbGxpbmdE
ZWxlZ2F0ZShmYWxzZSkKIHsKICAgICBhdHRhY2goZ2xvYmFsT2JqZWN0KTsKLSAgICBEZWJ1Z2dl
ckNhbGxGcmFtZSBnbG9iYWxDYWxsRnJhbWUoZ2xvYmFsT2JqZWN0LCAwLCBnbG9iYWxPYmplY3Qt
Pmdsb2JhbFNjb3BlQ2hhaW4oKS5ub2RlKCksIDAsIDApOworICAgIERlYnVnZ2VyQ2FsbEZyYW1l
IGdsb2JhbENhbGxGcmFtZSgwLCBnbG9iYWxPYmplY3QsIDAsIGdsb2JhbE9iamVjdC0+Z2xvYmFs
U2NvcGVDaGFpbigpLm5vZGUoKSwgMCwgMCk7CiAgICAgY2FsbEV2ZW50KGdsb2JhbENhbGxGcmFt
ZSwgMCwgLTEpOwogfQogCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMzU4MDUp
CisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzI1
MCw3ICszMjUwLDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zybwog
ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgSlNBcnJheSogYXJyYXkg
PSBzdGF0aWNfY2FzdDxKU0FycmF5Kj4ob2JqZWN0KTsKICAgICAgICAgICAgICAgICAgICAgYWVE
ZXNjID0gW05TQXBwbGVFdmVudERlc2NyaXB0b3IgbGlzdERlc2NyaXB0b3JdOwotICAgICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBudW1JdGVtcyA9IGFycmF5LT5nZXRMZW5ndGgoKTsKKyAgICAg
ICAgICAgICAgICAgICAgdW5zaWduZWQgbnVtSXRlbXMgPSBhcnJheS0+bGVuZ3RoKCk7CiAgICAg
ICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1JdGVtczsgKytpKQog
ICAgICAgICAgICAgICAgICAgICAgICAgW2FlRGVzYyBpbnNlcnREZXNjcmlwdG9yOmFlRGVzY0Zy
b21KU1ZhbHVlKGV4ZWMsIGFycmF5LT5nZXQoZXhlYywgaSkpIGF0SW5kZXg6MF07CiAgICAgICAg
ICAgICAgICAgICAgIAo=
</data>
<flag name="review"
          id="10152"
          type_id="1"
          status="+"
          setter="zwarich"
    />
          </attachment>
      

    </bug>

</bugzilla>