<?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>136915</bug_id>
          
          <creation_ts>2014-09-18 02:14:59 -0700</creation_ts>
          <short_desc>Make it possible to make Modern WebKit API tests with injected bundles</short_desc>
          <delta_ts>2017-04-21 10:42:23 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>136910</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035877</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-09-18 02:14:59 -0700</bug_when>
    <thetext>Things that seem to be missing:

1. Ability to have one bundle for both APIs (there&apos;s a patch in bug 136910).
2. An InjectedBundle/InjectedBundleController/InjectedBundleTest for the modern API (and move the old ones to Legacy* or some such). I&apos;ve started hacking this up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035879</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-09-18 02:17:54 -0700</bug_when>
    <thetext>3. Some non-deprecated way to set the Injected Bundle initialization userdata (we have http://trac.webkit.org/changeset/148376/trunk/Source/WebKit2/UIProcess/API/mac/WKProcessGroup.h but I guess WKProcessGroup is deprecated?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035880</commentid>
    <comment_count>2</comment_count>
      <attachid>238299</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2014-09-18 02:21:08 -0700</bug_when>
    <thetext>Created attachment 238299
useless wip patch

attaching a useless WIP, because I&apos;m not sure what to do about #3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1299668</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-04-21 10:22:12 -0700</bug_when>
    <thetext>Hasn’t this been done?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238299</attachid>
            <date>2014-09-18 02:21:08 -0700</date>
            <delta_ts>2014-09-18 02:21:08 -0700</delta_ts>
            <desc>useless wip patch</desc>
            <filename>useless-wip.diff</filename>
            <type>text/plain</type>
            <size>124210</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNz
R3JvdXAubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc0dy
b3VwLm1tCmluZGV4IGFiNTEzZTYuLjE0NWQ1ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzR3JvdXAubW0KKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NHcm91cC5tbQpAQCAtOTgsNyArOTgsNyBA
QCBzdGF0aWMgV0tUeXBlUmVmIGdldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0
YShXS0NvbnRleHRSZWYsIGNvbnN0IHZvaQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9p
ZCBzZXRVcEluZWN0ZWRCdW5kbGVDbGllbnQoV0tQcm9jZXNzR3JvdXAgKnByb2Nlc3NHcm91cCwg
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCitzdGF0aWMgdm9pZCBzZXRVcEluamVjdGVkQnVuZGxl
Q2xpZW50KFdLUHJvY2Vzc0dyb3VwICpwcm9jZXNzR3JvdXAsIFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmKQogewogICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xpZW50VjEgaW5qZWN0ZWRCdW5k
bGVDbGllbnQ7CiAgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGlu
amVjdGVkQnVuZGxlQ2xpZW50KSk7CkBAIC0xOTcsNyArMTk3LDcgQEAgc3RhdGljIHZvaWQgc2V0
VXBIaXN0b3J5Q2xpZW50KFdLUHJvY2Vzc0dyb3VwICpwcm9jZXNzR3JvdXAsIFdLQ29udGV4dFJl
ZiBjb250ZXgKICAgICBfY29udGV4dCA9IFdlYkNvbnRleHQ6OmNyZWF0ZShXVEY6Om1vdmUod2Vi
Q29udGV4dENvbmZpZ3VyYXRpb24pKTsKIAogICAgIHNldFVwQ29ubmVjdGlvbkNsaWVudChzZWxm
LCB0b0FQSShfY29udGV4dC5nZXQoKSkpOwotICAgIHNldFVwSW5lY3RlZEJ1bmRsZUNsaWVudChz
ZWxmLCB0b0FQSShfY29udGV4dC5nZXQoKSkpOworICAgIHNldFVwSW5qZWN0ZWRCdW5kbGVDbGll
bnQoc2VsZiwgdG9BUEkoX2NvbnRleHQuZ2V0KCkpKTsKICAgICBzZXRVcEhpc3RvcnlDbGllbnQo
c2VsZiwgdG9BUEkoX2NvbnRleHQuZ2V0KCkpKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgX2Nv
bnRleHQtPnNldFVzZXNOZXR3b3JrUHJvY2Vzcyh0cnVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXggY2RkOWMxNi4uM2NjYzhkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
QEAgLTM1Miw4ICszNTIsOCBAQCBzdGF0aWMgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbigpCiAK
IC0gKHZvaWQpZGVhbGxvYwogewotICAgIGlmIChfcmVtb3RlT2JqZWN0UmVnaXN0cnkpCi0gICAg
ICAgIF9wYWdlLT5wcm9jZXNzKCkuY29udGV4dCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNz
YWdlczo6UmVtb3RlT2JqZWN0UmVnaXN0cnk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgX3BhZ2Ut
PnBhZ2VJRCgpKTsKKyAgICAvL2lmIChfcmVtb3RlT2JqZWN0UmVnaXN0cnkpCisgICAgLy8gICAg
X3BhZ2UtPnByb2Nlc3MoKS5jb250ZXh0KCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVPYmplY3RSZWdpc3RyeTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBfcGFnZS0+cGFn
ZUlEKCkpOwogCiAgICAgX3BhZ2UtPmNsb3NlKCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGUtSW5mby5wbGlzdCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
SW5qZWN0ZWRCdW5kbGUtSW5mby5wbGlzdAppbmRleCBjMjg1YTQ3Li5hYzdiYjI2IDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVuZGxlLUluZm8ucGxpc3QKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZS1JbmZvLnBsaXN0CkBAIC0xOCw1ICsx
OCw3IEBACiAJPHN0cmluZz4/Pz8/PC9zdHJpbmc+CiAJPGtleT5DRkJ1bmRsZVZlcnNpb248L2tl
eT4KIAk8c3RyaW5nPjE8L3N0cmluZz4KKwk8a2V5Pk5TUHJpbmNpcGFsQ2xhc3M8L2tleT4KKwk8
c3RyaW5nPkluamVjdGVkQnVuZGxlPC9zdHJpbmc+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMGI1MzRiLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IkluamVjdGVkQnVuZGxlQ29udHJvbGxlci5oIgotCi0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVU
ZXN0LmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDxhbGdvcml0
aG0+Ci0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQot
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyJiBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJl
ZCgpCi17Ci0gICAgc3RhdGljIEluamVjdGVkQnVuZGxlQ29udHJvbGxlciYgc2hhcmVkID0gKm5l
dyBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI7Ci0gICAgcmV0dXJuIHNoYXJlZDsKLX0KLQotSW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIoKQotICAgIDog
bV9idW5kbGUoMCkKLSAgICAsIG1fY3VycmVudFRlc3QoMCkKLXsKLX0KLQotdm9pZCBJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXI6OmluaXRpYWxpemUoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS1R5cGVS
ZWYgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKLXsKLSAgICBwbGF0Zm9ybUluaXRpYWxpemUoKTsK
LQotICAgIG1fYnVuZGxlID0gYnVuZGxlOwotCi0gICAgaWYgKCFpbml0aWFsaXphdGlvblVzZXJE
YXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICBXS0J1bmRsZUNsaWVudFYxIGNsaWVudCA9IHsK
LSAgICAgICAgeyAwLCB0aGlzIH0sCi0gICAgICAgIGRpZENyZWF0ZVBhZ2UsCi0gICAgICAgIHdp
bGxEZXN0cm95UGFnZSwKLSAgICAgICAgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cCwKLSAgICAgICAg
ZGlkUmVjZWl2ZU1lc3NhZ2UsCi0gICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlCi0gICAg
fTsKLSAgICBXS0J1bmRsZVNldENsaWVudChtX2J1bmRsZSwgJmNsaWVudC5iYXNlKTsKLQotICAg
IC8vIEluaXRpYWxpemUgdGhlIHRlc3QgZnJvbSB0aGUgImluaXRpYWxpemF0aW9uVXNlckRhdGEi
LgotCi0gICAgYXNzZXJ0KFdLR2V0VHlwZUlEKGluaXRpYWxpemF0aW9uVXNlckRhdGEpID09IFdL
RGljdGlvbmFyeUdldFR5cGVJRCgpKTsKLSAgICBXS0RpY3Rpb25hcnlSZWYgaW5pdGlhbGl6YXRp
b25EaWN0aW9uYXJ5ID0gc3RhdGljX2Nhc3Q8V0tEaWN0aW9uYXJ5UmVmPihpbml0aWFsaXphdGlv
blVzZXJEYXRhKTsKLQotICAgIFdLUmV0YWluUHRyPFdLU3RyaW5nUmVmPiB0ZXN0TmFtZUtleShB
ZG9wdFdLLCBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiVGVzdE5hbWUiKSk7Ci0gICAg
V0tTdHJpbmdSZWYgdGVzdE5hbWUgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1JlZj4oV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShpbml0aWFsaXphdGlvbkRpY3Rpb25hcnksIHRlc3ROYW1lS2V5Lmdl
dCgpKSk7Ci0KLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdXNlckRhdGFLZXkoQWRvcHRX
SywgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlVzZXJEYXRhIikpOwotICAgIFdLVHlw
ZVJlZiB1c2VyRGF0YSA9IFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoaW5pdGlhbGl6YXRpb25E
aWN0aW9uYXJ5LCB1c2VyRGF0YUtleS5nZXQoKSk7Ci0gICAgaW5pdGlhbGl6ZVRlc3ROYW1lZChi
dW5kbGUsIFV0aWw6OnRvU1REKHRlc3ROYW1lKSwgdXNlckRhdGEpOwotfQotCi12b2lkIEluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6ZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdL
QnVuZGxlUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIEluamVj
dGVkQnVuZGxlQ29udHJvbGxlciogc2VsZiA9IHN0YXRpY19jYXN0PEluamVjdGVkQnVuZGxlQ29u
dHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKLSAgICBhc3NlcnQoc2Vs
Zi0+bV9jdXJyZW50VGVzdCk7Ci0gICAgc2VsZi0+bV9jdXJyZW50VGVzdC0+ZGlkQ3JlYXRlUGFn
ZShidW5kbGUsIHBhZ2UpOwotfQotCi12b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6d2ls
bERlc3Ryb3lQYWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKiBz
ZWxmID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2
b2lkKj4oY2xpZW50SW5mbykpOwotICAgIGFzc2VydChzZWxmLT5tX2N1cnJlbnRUZXN0KTsKLSAg
ICBzZWxmLT5tX2N1cnJlbnRUZXN0LT53aWxsRGVzdHJveVBhZ2UoYnVuZGxlLCBwYWdlKTsKLX0K
LQotdm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZEluaXRpYWxpemVQYWdlR3JvdXAo
V0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VHcm91cFJlZiBwYWdlR3JvdXAsIGNvbnN0
IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKiBzZWxm
ID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lk
Kj4oY2xpZW50SW5mbykpOwotICAgIGFzc2VydChzZWxmLT5tX2N1cnJlbnRUZXN0KTsKLSAgICBz
ZWxmLT5tX2N1cnJlbnRUZXN0LT5kaWRJbml0aWFsaXplUGFnZUdyb3VwKGJ1bmRsZSwgcGFnZUdy
b3VwKTsKLX0KLQotdm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNz
YWdlKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJl
ZiBtZXNzYWdlQm9keSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxJbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7Ci0gICAgYXNzZXJ0KHNlbGYtPm1f
Y3VycmVudFRlc3QpOwotICAgIHNlbGYtPm1fY3VycmVudFRlc3QtPmRpZFJlY2VpdmVNZXNzYWdl
KGJ1bmRsZSwgbWVzc2FnZU5hbWUsIG1lc3NhZ2VCb2R5KTsKLX0KLQotdm9pZCBJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXI6OmRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUmVmIGJ1bmRs
ZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgSW5qZWN0ZWRC
dW5kbGVDb250cm9sbGVyKiBzZWxmID0gc3RhdGljX2Nhc3Q8SW5qZWN0ZWRCdW5kbGVDb250cm9s
bGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOwotICAgIGFzc2VydChzZWxmLT5t
X2N1cnJlbnRUZXN0KTsKLSAgICBzZWxmLT5tX2N1cnJlbnRUZXN0LT5kaWRSZWNlaXZlTWVzc2Fn
ZVRvUGFnZShidW5kbGUsIHBhZ2UsIG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7Ci19Ci0KLXZv
aWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkdW1wVGVzdE5hbWVzKCkKLXsKLSAgICBzdGQ6
Om1hcDxzdGQ6OnN0cmluZywgQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG1fY3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb25zLmJlZ2lu
KCk7Ci0gICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1
bmN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9jcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RG
dW5jdGlvbnMuZW5kKCk7Ci0gICAgZm9yICg7IGl0ICE9IGVuZDsgKytpdCkKLSAgICAgICAgcHJp
bnRmKCIlc1xuIiwgKCppdCkuZmlyc3QuY19zdHIoKSk7Ci19Ci0KLXZvaWQgSW5qZWN0ZWRCdW5k
bGVDb250cm9sbGVyOjppbml0aWFsaXplVGVzdE5hbWVkKFdLQnVuZGxlUmVmIGJ1bmRsZSwgY29u
c3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIsIFdLVHlwZVJlZiB1c2VyRGF0YSkKLXsKLSAgICBD
cmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbiBjcmVhdGVUZXN0RnVuY3Rpb24gPSBtX2Ny
ZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uc1tpZGVudGlmaWVyXTsKLSAgICBpZiAoIWNy
ZWF0ZVRlc3RGdW5jdGlvbikgewotICAgICAgICBwcmludGYoIkVSUk9SOiBJbmplY3RlZEJ1bmRs
ZSB0ZXN0IG5vdCBmb3VuZCAtICVzXG4iLCBpZGVudGlmaWVyLmNfc3RyKCkpOwotICAgICAgICBl
eGl0KDEpOwotICAgIH0KLQotICAgIG1fY3VycmVudFRlc3QgPSBjcmVhdGVUZXN0RnVuY3Rpb24o
aWRlbnRpZmllcik7Ci0gICAgbV9jdXJyZW50VGVzdC0+aW5pdGlhbGl6ZShidW5kbGUsIHVzZXJE
YXRhKTsKLX0KLQotdm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnJlZ2lzdGVyQ3JlYXRl
SW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIs
IENyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9uIGZ1bmN0aW9uKQotewotICAgIG1fY3Jl
YXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb25zW2lkZW50aWZpZXJdID0gZnVuY3Rpb247Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L0luamVjdGVkQnVuZGxlQ29udHJvbGxlci5oCmluZGV4IDYxYTA5NmMuLjNiM2E5ODcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaApAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyAr
MjYsNyBAQAogI2lmbmRlZiBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJfaAogI2RlZmluZSBJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXJfaAogCi0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlLmg+Cisj
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKICNpbmNsdWRlIDxtYXA+CiAjaW5jbHVkZSA8c3Ry
aW5nPgogCkBAIC0zOCwxNSArMzgsMTUgQEAgY2xhc3MgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVy
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyJiBzaGFyZWQo
KTsKIAotICAgIHZvaWQgaW5pdGlhbGl6ZShXS0J1bmRsZVJlZiwgV0tUeXBlUmVmKTsKKyAgICB2
b2lkIGluaXRpYWxpemUoV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKTsKIAogICAgIHZv
aWQgZHVtcFRlc3ROYW1lcygpOwotICAgIHZvaWQgaW5pdGlhbGl6ZVRlc3ROYW1lZChXS0J1bmRs
ZVJlZiBidW5kbGUsIGNvbnN0IHN0ZDo6c3RyaW5nJiwgV0tUeXBlUmVmIHVzZXJEYXRhKTsKKyAg
ICB2b2lkIGluaXRpYWxpemVUZXN0TmFtZWQoV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAq
YnVuZGxlLCBjb25zdCBzdGQ6OnN0cmluZyYpOwogCiAgICAgdHlwZWRlZiBJbmplY3RlZEJ1bmRs
ZVRlc3QqICgqQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24pKGNvbnN0IHN0ZDo6c3Ry
aW5nJik7CiAgICAgdm9pZCByZWdpc3RlckNyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9u
KGNvbnN0IHN0ZDo6c3RyaW5nJiwgQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24pOwog
Ci0gICAgV0tCdW5kbGVSZWYgYnVuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9idW5kbGU7IH0KKyAg
ICBXS1dlYlByb2Nlc3NQbHVnSW5Db250cm9sbGVyICpidW5kbGUoKSBjb25zdCB7IHJldHVybiBt
X2J1bmRsZTsgfQogICAgIAogcHJpdmF0ZToKICAgICBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIo
KTsKQEAgLTU0LDE0ICs1NCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlh
bGl6ZSgpOwogCi0gICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tC
dW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLSAgICBzdGF0aWMgdm9pZCB3
aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiwgY29uc3Qgdm9pZCog
Y2xpZW50SW5mbyk7Ci0gICAgc3RhdGljIHZvaWQgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXS0J1
bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwot
ICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQnVuZGxlUmVmLCBXS1N0cmluZ1Jl
ZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRsZVJl
ZiwgV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1l
c3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKLQogICAgIHN0ZDo6bWFwPHN0ZDo6
c3RyaW5nLCBDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbj4gbV9jcmVhdGVJbmplY3Rl
ZEJ1bmRsZVRlc3RGdW5jdGlvbnM7Ci0gICAgV0tCdW5kbGVSZWYgbV9idW5kbGU7CisgICAgV0tX
ZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqbV9idW5kbGU7CiAgICAgSW5qZWN0ZWRCdW5kbGVU
ZXN0KiBtX2N1cnJlbnRUZXN0OwogfTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9JbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVj
dGVkQnVuZGxlQ29udHJvbGxlci5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li41MDIwN2I1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXIubW0KQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIu
aCIKKworI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorI2luY2x1ZGUgPGFzc2VydC5oPgor
CituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK0luamVjdGVkQnVuZGxlQ29udHJvbGxlciYg
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXImIHNoYXJlZCA9ICpuZXcgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVy
OworICAgIHJldHVybiBzaGFyZWQ7Cit9CisKK0luamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6SW5q
ZWN0ZWRCdW5kbGVDb250cm9sbGVyKCkKKyAgICA6IG1fYnVuZGxlKG51bGxwdHIpCisgICAgLCBt
X2N1cnJlbnRUZXN0KG51bGxwdHIpCit7Cit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9s
bGVyOjppbml0aWFsaXplKFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKmJ1bmRsZSwgaWQg
aW5pdGlhbGl6YXRpb25PYmplY3QpCit7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisKKyAg
ICBtX2J1bmRsZSA9IGJ1bmRsZTsKKworICAgIGlmICghaW5pdGlhbGl6YXRpb25PYmplY3QpCisg
ICAgICAgIHJldHVybjsKKworICAgIGFzc2VydChbaW5pdGlhbGl6YXRpb25PYmplY3QgaXNLaW5k
T2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pOworICAgIE5TRGljdGlvbmFyeSAqaW5pdGlh
bGl6YXRpb25EaWN0aW9uYXJ5ID0gKE5TRGljdGlvbmFyeSAqKWluaXRpYWxpemF0aW9uT2JqZWN0
OworCisgICAgaW5pdGlhbGl6ZVRlc3ROYW1lZChidW5kbGUsIFV0aWw6OnRvU1REKChOU1N0cmlu
ZyAqKVtpbml0aWFsaXphdGlvbkRpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OkAiVGVzdE5hbWUiXSkp
OworfQorCisvKnZvaWQgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRDcmVhdGVQYWdlKFdL
QnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVu
dEluZm8pCit7CisgICAgSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKiBzZWxmID0gc3RhdGljX2Nh
c3Q8SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5m
bykpOworICAgIGFzc2VydChzZWxmLT5tX2N1cnJlbnRUZXN0KTsKKyAgICBzZWxmLT5tX2N1cnJl
bnRUZXN0LT5kaWRDcmVhdGVQYWdlKGJ1bmRsZSwgcGFnZSk7Cit9Ki8KKwordm9pZCBJbmplY3Rl
ZEJ1bmRsZUNvbnRyb2xsZXI6OmR1bXBUZXN0TmFtZXMoKQoreworICAgIHN0ZDo6bWFwPHN0ZDo6
c3RyaW5nLCBDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9jcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbnMuYmVnaW4oKTsKKyAgICBz
dGQ6Om1hcDxzdGQ6OnN0cmluZywgQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb24+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX2NyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9ucy5l
bmQoKTsKKyAgICBmb3IgKDsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBwcmludGYoIiVzXG4i
LCAoKml0KS5maXJzdC5jX3N0cigpKTsKK30KKwordm9pZCBJbmplY3RlZEJ1bmRsZUNvbnRyb2xs
ZXI6OmluaXRpYWxpemVUZXN0TmFtZWQoV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqYnVu
ZGxlLCBjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKK3sKKyAgICBDcmVhdGVJbmplY3Rl
ZEJ1bmRsZVRlc3RGdW5jdGlvbiBjcmVhdGVUZXN0RnVuY3Rpb24gPSBtX2NyZWF0ZUluamVjdGVk
QnVuZGxlVGVzdEZ1bmN0aW9uc1tpZGVudGlmaWVyXTsKKyAgICBpZiAoIWNyZWF0ZVRlc3RGdW5j
dGlvbikgeworICAgICAgICBwcmludGYoIkVSUk9SOiBJbmplY3RlZEJ1bmRsZSB0ZXN0IG5vdCBm
b3VuZCAtICVzXG4iLCBpZGVudGlmaWVyLmNfc3RyKCkpOworICAgICAgICBleGl0KDEpOworICAg
IH0KKworICAgIG1fY3VycmVudFRlc3QgPSBjcmVhdGVUZXN0RnVuY3Rpb24oaWRlbnRpZmllcik7
CisgICAgbV9jdXJyZW50VGVzdC0+aW5pdGlhbGl6ZShidW5kbGUpOworfQorCit2b2lkIEluamVj
dGVkQnVuZGxlQ29udHJvbGxlcjo6cmVnaXN0ZXJDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5j
dGlvbihjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllciwgQ3JlYXRlSW5qZWN0ZWRCdW5kbGVU
ZXN0RnVuY3Rpb24gZnVuY3Rpb24pCit7CisgICAgbV9jcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RG
dW5jdGlvbnNbaWRlbnRpZmllcl0gPSBmdW5jdGlvbjsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRs
ZU1haW4uY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZU1haW4uY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzE1ZWY5Li4wMDAwMDAwCi0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVNYWluLmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDM4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAi
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5p
dGlhbGl6ZS5oPgotCi0jaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfV0lOMzIpCi1leHRl
cm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSAKLSNlbHNlCi1leHRlcm4gIkMiCi0jZW5kaWYK
LXZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGlu
aXRpYWxpemF0aW9uVXNlckRhdGEpCi17Ci0gICAgVGVzdFdlYktpdEFQSTo6SW5qZWN0ZWRCdW5k
bGVDb250cm9sbGVyOjpzaGFyZWQoKS5pbml0aWFsaXplKGJ1bmRsZSwgaW5pdGlhbGl6YXRpb25V
c2VyRGF0YSk7Ci19CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVjdGVkQnVu
ZGxlVGVzdC5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9JbmplY3RlZEJ1bmRsZVRlc3QuaAppbmRl
eCBkMGY5OTZhLi5kZWEwYzgxIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0luamVj
dGVkQnVuZGxlVGVzdC5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvSW5qZWN0ZWRCdW5kbGVU
ZXN0LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTM0LDEzICszNCwxMCBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVRlc3QgewogcHVibGljOgogICAg
IHZpcnR1YWwgfkluamVjdGVkQnVuZGxlVGVzdCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemUoV0tCdW5kbGVSZWYsIFdLVHlwZVJlZikgeyB9CisgICAgdmlydHVhbCB2b2lkIGlu
aXRpYWxpemUoV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKSB7IH0KIAotICAgIHZpcnR1
YWwgdm9pZCBkaWRDcmVhdGVQYWdlKFdLQnVuZGxlUmVmLCBXS0J1bmRsZVBhZ2VSZWYpIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFn
ZVJlZikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEluaXRpYWxpemVQYWdlR3JvdXAoV0tCdW5k
bGVSZWYsIFdLQnVuZGxlUGFnZUdyb3VwUmVmKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHkpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZVRv
UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
QnJvd3NlckNvbnRleHRDb250cm9sbGVyKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0
cm95QnJvd3NlckNvbnRleHRDb250cm9sbGVyKCkgeyB9CiAKICAgICBzdGQ6OnN0cmluZyBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgCkBAIC01Miw3ICs0OSw3IEBA
IHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIEluamVj
dGVkQnVuZGxlVGVzdCogY3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKSAKKyAg
ICAgICAgc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdCogY3JlYXRlKGNvbnN0IHN0ZDo6c3RyaW5n
JiBpZGVudGlmaWVyKQogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFRlc3RDbGFz
c1R5KGlkZW50aWZpZXIpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL0xlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0xlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMmQ4NTVlZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcApAQCAtMCwwICsxLDE0
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMZWdhY3lJ
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaCIKKworI2luY2x1ZGUgIkxlZ2FjeUluamVjdGVkQnVu
ZGxlVGVzdC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8YWxn
b3JpdGhtPgorI2luY2x1ZGUgPGFzc2VydC5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7
CisKK0xlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlciYgTGVnYWN5SW5qZWN0ZWRCdW5kbGVD
b250cm9sbGVyOjpzaGFyZWQoKQoreworICAgIHN0YXRpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXImIHNoYXJlZCA9ICpuZXcgTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOwor
ICAgIHJldHVybiBzaGFyZWQ7Cit9CisKK0xlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6
TGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKCkKKyAgICA6IG1fYnVuZGxlKDApCisgICAg
LCBtX2N1cnJlbnRUZXN0KDApCit7Cit9CisKK3ZvaWQgTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyOjppbml0aWFsaXplKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxp
emF0aW9uVXNlckRhdGEpCit7CisgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CisKKyAgICBtX2J1
bmRsZSA9IGJ1bmRsZTsKKworICAgIGlmICghaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgV0tCdW5kbGVDbGllbnRWMSBjbGllbnQgPSB7CisgICAgICAgIHsg
MCwgdGhpcyB9LAorICAgICAgICBkaWRDcmVhdGVQYWdlLAorICAgICAgICB3aWxsRGVzdHJveVBh
Z2UsCisgICAgICAgIGRpZEluaXRpYWxpemVQYWdlR3JvdXAsCisgICAgICAgIGRpZFJlY2VpdmVN
ZXNzYWdlLAorICAgICAgICBkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZQorICAgIH07CisgICAgV0tC
dW5kbGVTZXRDbGllbnQobV9idW5kbGUsICZjbGllbnQuYmFzZSk7CisKKyAgICAvLyBJbml0aWFs
aXplIHRoZSB0ZXN0IGZyb20gdGhlICJpbml0aWFsaXphdGlvblVzZXJEYXRhIi4KKworICAgIGFz
c2VydChXS0dldFR5cGVJRChpbml0aWFsaXphdGlvblVzZXJEYXRhKSA9PSBXS0RpY3Rpb25hcnlH
ZXRUeXBlSUQoKSk7CisgICAgV0tEaWN0aW9uYXJ5UmVmIGluaXRpYWxpemF0aW9uRGljdGlvbmFy
eSA9IHN0YXRpY19jYXN0PFdLRGljdGlvbmFyeVJlZj4oaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7
CisKKyAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gdGVzdE5hbWVLZXkoQWRvcHRXSywgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIlRlc3ROYW1lIikpOworICAgIFdLU3RyaW5nUmVm
IHRlc3ROYW1lID0gc3RhdGljX2Nhc3Q8V0tTdHJpbmdSZWY+KFdLRGljdGlvbmFyeUdldEl0ZW1G
b3JLZXkoaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5LCB0ZXN0TmFtZUtleS5nZXQoKSkpOworCisg
ICAgV0tSZXRhaW5QdHI8V0tTdHJpbmdSZWY+IHVzZXJEYXRhS2V5KEFkb3B0V0ssIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKCJVc2VyRGF0YSIpKTsKKyAgICBXS1R5cGVSZWYgdXNlckRh
dGEgPSBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KGluaXRpYWxpemF0aW9uRGljdGlvbmFyeSwg
dXNlckRhdGFLZXkuZ2V0KCkpOworICAgIGluaXRpYWxpemVUZXN0TmFtZWQoYnVuZGxlLCBVdGls
Ojp0b1NURCh0ZXN0TmFtZSksIHVzZXJEYXRhKTsKK30KKwordm9pZCBMZWdhY3lJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXI6OmRpZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRs
ZVBhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBMZWdhY3lJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXIqIHNlbGYgPSBzdGF0aWNfY2FzdDxMZWdhY3lJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXIqPihjb25zdF9jYXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgYXNz
ZXJ0KHNlbGYtPm1fY3VycmVudFRlc3QpOworICAgIHNlbGYtPm1fY3VycmVudFRlc3QtPmRpZENy
ZWF0ZVBhZ2UoYnVuZGxlLCBwYWdlKTsKK30KKwordm9pZCBMZWdhY3lJbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXI6OndpbGxEZXN0cm95UGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAgIExlZ2FjeUluamVjdGVk
QnVuZGxlQ29udHJvbGxlciogc2VsZiA9IHN0YXRpY19jYXN0PExlZ2FjeUluamVjdGVkQnVuZGxl
Q29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8pKTsKKyAgICBhc3NlcnQo
c2VsZi0+bV9jdXJyZW50VGVzdCk7CisgICAgc2VsZi0+bV9jdXJyZW50VGVzdC0+d2lsbERlc3Ry
b3lQYWdlKGJ1bmRsZSwgcGFnZSk7Cit9CisKK3ZvaWQgTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyOjpkaWRJbml0aWFsaXplUGFnZUdyb3VwKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5k
bGVQYWdlR3JvdXBSZWYgcGFnZUdyb3VwLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IExlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlciogc2VsZiA9IHN0YXRpY19jYXN0PExlZ2Fj
eUluamVjdGVkQnVuZGxlQ29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KTsKKyAgICBhc3NlcnQoc2VsZi0+bV9jdXJyZW50VGVzdCk7CisgICAgc2VsZi0+bV9jdXJyZW50
VGVzdC0+ZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChidW5kbGUsIHBhZ2VHcm91cCk7Cit9CisKK3Zv
aWQgTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZShXS0J1
bmRsZVJlZiBidW5kbGUsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2Fn
ZUJvZHksIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCit7CisgICAgTGVnYWN5SW5qZWN0ZWRCdW5k
bGVDb250cm9sbGVyKiBzZWxmID0gc3RhdGljX2Nhc3Q8TGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyKj4oY29uc3RfY2FzdDx2b2lkKj4oY2xpZW50SW5mbykpOworICAgIGFzc2VydChzZWxm
LT5tX2N1cnJlbnRUZXN0KTsKKyAgICBzZWxmLT5tX2N1cnJlbnRUZXN0LT5kaWRSZWNlaXZlTWVz
c2FnZShidW5kbGUsIG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7Cit9CisKK3ZvaWQgTGVnYWN5
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpkaWRSZWNlaXZlTWVzc2FnZVRvUGFnZShXS0J1bmRs
ZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFt
ZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQoreworICAg
IExlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlciogc2VsZiA9IHN0YXRpY19jYXN0PExlZ2Fj
eUluamVjdGVkQnVuZGxlQ29udHJvbGxlcio+KGNvbnN0X2Nhc3Q8dm9pZCo+KGNsaWVudEluZm8p
KTsKKyAgICBhc3NlcnQoc2VsZi0+bV9jdXJyZW50VGVzdCk7CisgICAgc2VsZi0+bV9jdXJyZW50
VGVzdC0+ZGlkUmVjZWl2ZU1lc3NhZ2VUb1BhZ2UoYnVuZGxlLCBwYWdlLCBtZXNzYWdlTmFtZSwg
bWVzc2FnZUJvZHkpOworfQorCit2b2lkIExlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6
ZHVtcFRlc3ROYW1lcygpCit7CisgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIENyZWF0ZUluamVj
dGVkQnVuZGxlVGVzdEZ1bmN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2NyZWF0ZUluamVj
dGVkQnVuZGxlVGVzdEZ1bmN0aW9ucy5iZWdpbigpOworICAgIHN0ZDo6bWFwPHN0ZDo6c3RyaW5n
LCBDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fY3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0RnVuY3Rpb25zLmVuZCgpOworICAgIGZvciAoOyBp
dCAhPSBlbmQ7ICsraXQpCisgICAgICAgIHByaW50ZigiJXNcbiIsICgqaXQpLmZpcnN0LmNfc3Ry
KCkpOworfQorCit2b2lkIExlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6aW5pdGlhbGl6
ZVRlc3ROYW1lZChXS0J1bmRsZVJlZiBidW5kbGUsIGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlm
aWVyLCBXS1R5cGVSZWYgdXNlckRhdGEpCit7CisgICAgQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0
RnVuY3Rpb24gY3JlYXRlVGVzdEZ1bmN0aW9uID0gbV9jcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RG
dW5jdGlvbnNbaWRlbnRpZmllcl07CisgICAgaWYgKCFjcmVhdGVUZXN0RnVuY3Rpb24pIHsKKyAg
ICAgICAgcHJpbnRmKCJFUlJPUjogSW5qZWN0ZWRCdW5kbGUgdGVzdCBub3QgZm91bmQgLSAlc1xu
IiwgaWRlbnRpZmllci5jX3N0cigpKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBt
X2N1cnJlbnRUZXN0ID0gY3JlYXRlVGVzdEZ1bmN0aW9uKGlkZW50aWZpZXIpOworICAgIG1fY3Vy
cmVudFRlc3QtPmluaXRpYWxpemUoYnVuZGxlLCB1c2VyRGF0YSk7Cit9CisKK3ZvaWQgTGVnYWN5
SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpyZWdpc3RlckNyZWF0ZUluamVjdGVkQnVuZGxlVGVz
dEZ1bmN0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyLCBDcmVhdGVJbmplY3RlZEJ1
bmRsZVRlc3RGdW5jdGlvbiBmdW5jdGlvbikKK3sKKyAgICBtX2NyZWF0ZUluamVjdGVkQnVuZGxl
VGVzdEZ1bmN0aW9uc1tpZGVudGlmaWVyXSA9IGZ1bmN0aW9uOworfQorCit9IC8vIG5hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0xlZ2FjeUlu
amVjdGVkQnVuZGxlQ29udHJvbGxlci5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9MZWdhY3lJbmpl
Y3RlZEJ1bmRsZUNvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5kMzgwNjJjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9MZWdhY3lJ
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBMZWdhY3lJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJfaAorI2RlZmluZSBMZWdhY3lJ
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJfaAorCisjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlLmg+
CisjaW5jbHVkZSA8bWFwPgorI2luY2x1ZGUgPHN0cmluZz4KKworbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgeworCitjbGFzcyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q7CisKK2NsYXNzIExlZ2Fj
eUluamVjdGVkQnVuZGxlQ29udHJvbGxlciB7CitwdWJsaWM6CisgICAgc3RhdGljIExlZ2FjeUlu
amVjdGVkQnVuZGxlQ29udHJvbGxlciYgc2hhcmVkKCk7CisKKyAgICB2b2lkIGluaXRpYWxpemUo
V0tCdW5kbGVSZWYsIFdLVHlwZVJlZik7CisKKyAgICB2b2lkIGR1bXBUZXN0TmFtZXMoKTsKKyAg
ICB2b2lkIGluaXRpYWxpemVUZXN0TmFtZWQoV0tCdW5kbGVSZWYgYnVuZGxlLCBjb25zdCBzdGQ6
OnN0cmluZyYsIFdLVHlwZVJlZiB1c2VyRGF0YSk7CisKKyAgICB0eXBlZGVmIExlZ2FjeUluamVj
dGVkQnVuZGxlVGVzdCogKCpDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbikoY29uc3Qg
c3RkOjpzdHJpbmcmKTsKKyAgICB2b2lkIHJlZ2lzdGVyQ3JlYXRlSW5qZWN0ZWRCdW5kbGVUZXN0
RnVuY3Rpb24oY29uc3Qgc3RkOjpzdHJpbmcmLCBDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5j
dGlvbik7CisKKyAgICBXS0J1bmRsZVJlZiBidW5kbGUoKSBjb25zdCB7IHJldHVybiBtX2J1bmRs
ZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBMZWdhY3lJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIo
KTsKKyAgICB+TGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyKCk7CisKKyAgICB2b2lkIHBs
YXRmb3JtSW5pdGlhbGl6ZSgpOworCisgICAgc3RhdGljIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1
bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKyAgICBz
dGF0aWMgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZiwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisgICAgc3RhdGljIHZvaWQgZGlkSW5pdGlhbGl6ZVBh
Z2VHcm91cChXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3JvdXBSZWYsIGNvbnN0IHZvaWQqIGNs
aWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQnVuZGxlUmVm
LCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZVRvUGFn
ZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwg
V0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKKworICAgIHN0
ZDo6bWFwPHN0ZDo6c3RyaW5nLCBDcmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbj4gbV9j
cmVhdGVJbmplY3RlZEJ1bmRsZVRlc3RGdW5jdGlvbnM7CisgICAgV0tCdW5kbGVSZWYgbV9idW5k
bGU7CisgICAgTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KiBtX2N1cnJlbnRUZXN0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gTGVnYWN5SW5qZWN0ZWRC
dW5kbGVDb250cm9sbGVyX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvTGVnYWN5
SW5qZWN0ZWRCdW5kbGVNYWluLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvTGVnYWN5SW5qZWN0
ZWRCdW5kbGVNYWluLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTg3
NGM5Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9MZWdhY3lJbmplY3Rl
ZEJ1bmRsZU1haW4uY3BwCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmgiCisj
aW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlSW5pdGlhbGl6ZS5oPgorCisjaWYgZGVmaW5lZChXSU4z
MikgfHwgZGVmaW5lZChfV0lOMzIpCitleHRlcm4gIkMiIF9fZGVjbHNwZWMoZGxsZXhwb3J0KSAK
KyNlbHNlCitleHRlcm4gIkMiCisjZW5kaWYKK3ZvaWQgV0tCdW5kbGVJbml0aWFsaXplKFdLQnVu
ZGxlUmVmIGJ1bmRsZSwgV0tUeXBlUmVmIGluaXRpYWxpemF0aW9uVXNlckRhdGEpCit7CisgICAg
VGVzdFdlYktpdEFQSTo6TGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5p
bml0aWFsaXplKGJ1bmRsZSwgaW5pdGlhbGl6YXRpb25Vc2VyRGF0YSk7Cit9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0xlZ2FjeUluamVjdGVkQnVuZGxlVGVzdC5oIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9MZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5mZjI1ZmEzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9MZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaApAQCAtMCwwICsxLDcyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3RfaAorI2RlZmluZSBM
ZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3RfaAorCisjaW5jbHVkZSAiTGVnYWN5SW5qZWN0ZWRCdW5k
bGVDb250cm9sbGVyLmgiCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY2xhc3MgTGVn
YWN5SW5qZWN0ZWRCdW5kbGVUZXN0IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5MZWdhY3lJbmpl
Y3RlZEJ1bmRsZVRlc3QoKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKFdLQnVu
ZGxlUmVmLCBXS1R5cGVSZWYpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZVBhZ2Uo
V0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZikgeyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxE
ZXN0cm95UGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkSW5pdGlhbGl6ZVBhZ2VHcm91cChXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlR3Jv
dXBSZWYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShXS0J1bmRsZVJl
ZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWUsIFdLVHlwZVJlZiBtZXNzYWdlQm9keSkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlVG9QYWdlKFdLQnVuZGxlUmVmLCBXS0J1
bmRsZVBhZ2VSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYgbWVzc2FnZUJv
ZHkpIHsgfQorCisgICAgc3RkOjpzdHJpbmcgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRp
ZmllcjsgfQorICAgIAorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRlc3RDbGFzc1R5PiBjbGFzcyBS
ZWdpc3RlciB7CisgICAgcHVibGljOgorICAgICAgICBSZWdpc3Rlcihjb25zdCBzdGQ6OnN0cmlu
ZyYgdGVzdCkKKyAgICAgICAgeworICAgICAgICAgICAgTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250
cm9sbGVyOjpzaGFyZWQoKS5yZWdpc3RlckNyZWF0ZUluamVjdGVkQnVuZGxlVGVzdEZ1bmN0aW9u
KHRlc3QsIFJlZ2lzdGVyOjpjcmVhdGUpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBzdGF0aWMgTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KiBjcmVhdGUoY29uc3Qgc3RkOjpz
dHJpbmcmIGlkZW50aWZpZXIpIAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRl
c3RDbGFzc1R5KGlkZW50aWZpZXIpOworICAgICAgICB9CisgICAgfTsKKworcHJvdGVjdGVkOgor
ICAgIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmll
cikKKyAgICAgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICB7CisgICAgfQorCisg
ICAgc3RkOjpzdHJpbmcgbV9pZGVudGlmaWVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgVGVzdFdl
YktpdEFQSQorCisjZW5kaWYgLy8gTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0X2gKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMuY3BwIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKaW5kZXggY2ViZmY3Yi4uNTQyNWE1YSAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5jcHAKQEAgLTMxLDcgKzMx
LDcgQEAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIG5hbWVzcGFjZSBVdGlsIHsKIAotV0tD
b250ZXh0UmVmIGNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKQorV0tDb250ZXh0UmVm
IGNyZWF0ZUxlZ2FjeUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKQogewogICAgIFdLUmV0YWlu
UHRyPFdLU3RyaW5nUmVmPiBpbmplY3RlZEJ1bmRsZVBhdGgoQWRvcHRXSywgY3JlYXRlSW5qZWN0
ZWRCdW5kbGVQYXRoKCkpOwogICAgIFdLQ29udGV4dFJlZiBjb250ZXh0ID0gV0tDb250ZXh0Q3Jl
YXRlV2l0aEluamVjdGVkQnVuZGxlUGF0aChpbmplY3RlZEJ1bmRsZVBhdGguZ2V0KCkpOwpAQCAt
MzksNyArMzksNyBAQCBXS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRs
ZSgpCiAgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKLVdLRGljdGlvbmFyeVJlZiBjcmVhdGVJbml0
aWFsaXphdGlvbkRpY3Rpb25hcnlGb3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3RkOjpzdHJp
bmcmIHRlc3ROYW1lLCBXS1R5cGVSZWYgdXNlckRhdGEpCitXS0RpY3Rpb25hcnlSZWYgY3JlYXRl
SW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5Rm9yTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nJiB0ZXN0TmFtZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQogewogICAgIFdLTXV0
YWJsZURpY3Rpb25hcnlSZWYgaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5ID0gV0tNdXRhYmxlRGlj
dGlvbmFyeUNyZWF0ZSgpOwogCkBAIC01MywxMSArNTMsMTEgQEAgV0tEaWN0aW9uYXJ5UmVmIGNy
ZWF0ZUluaXRpYWxpemF0aW9uRGljdGlvbmFyeUZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBz
dGQ6OnMKICAgICByZXR1cm4gaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5OwogfQogCi1XS0NvbnRl
eHRSZWYgY3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmlu
ZyYgdGVzdE5hbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSkKK1dLQ29udGV4dFJlZiBjcmVhdGVDb250
ZXh0Rm9yTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiB0ZXN0TmFt
ZSwgV0tUeXBlUmVmIHVzZXJEYXRhKQogewotICAgIFdLQ29udGV4dFJlZiBjb250ZXh0ID0gY3Jl
YXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpOworICAgIFdLQ29udGV4dFJlZiBjb250ZXh0
ID0gY3JlYXRlTGVnYWN5Q29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpOwogCi0gICAgV0tSZXRh
aW5QdHI8V0tEaWN0aW9uYXJ5UmVmPiBpbml0aWFsaXphdGlvbkRpY3Rpb25hcnkoQWRvcHRXSywg
Y3JlYXRlSW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KHRlc3RO
YW1lLCB1c2VyRGF0YSkpOworICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gaW5pdGlh
bGl6YXRpb25EaWN0aW9uYXJ5KEFkb3B0V0ssIGNyZWF0ZUluaXRpYWxpemF0aW9uRGljdGlvbmFy
eUZvckxlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCh0ZXN0TmFtZSwgdXNlckRhdGEpKTsKICAgICBX
S0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUoY29udGV4
dCwgaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5LmdldCgpKTsKIAogICAgIHJldHVybiBjb250ZXh0
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9QbGF0Zm9ybVV0aWxpdGllcy5oCmluZGV4IGYwM2E3NGUuLmJl
OWRmMmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvUGxhdGZvcm1VdGlsaXRpZXMu
aAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1BsYXRmb3JtVXRpbGl0aWVzLmgKQEAgLTQyLDkg
KzQyLDkgQEAgdm9pZCBydW4oYm9vbCogZG9uZSk7CiAKIHZvaWQgc2xlZXAoZG91YmxlIHNlY29u
ZHMpOwogCi1XS0NvbnRleHRSZWYgY3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpOwot
V0tDb250ZXh0UmVmIGNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3Rk
OjpzdHJpbmcmLCBXS1R5cGVSZWYgdXNlckRhdGEgPSAwKTsKLVdLRGljdGlvbmFyeVJlZiBjcmVh
dGVJbml0aWFsaXphdGlvbkRpY3Rpb25hcnlGb3JJbmplY3RlZEJ1bmRsZVRlc3QoY29uc3Qgc3Rk
OjpzdHJpbmcmLCBXS1R5cGVSZWYgdXNlckRhdGEpOworV0tDb250ZXh0UmVmIGNyZWF0ZUxlZ2Fj
eUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKTsKK1dLQ29udGV4dFJlZiBjcmVhdGVDb250ZXh0
Rm9yTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiwgV0tUeXBlUmVm
IHVzZXJEYXRhID0gMCk7CitXS0RpY3Rpb25hcnlSZWYgY3JlYXRlSW5pdGlhbGl6YXRpb25EaWN0
aW9uYXJ5Rm9yTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiwgV0tU
eXBlUmVmIHVzZXJEYXRhKTsKIAogV0tTdHJpbmdSZWYgY3JlYXRlSW5qZWN0ZWRCdW5kbGVQYXRo
KCk7CiBXS1VSTFJlZiBjcmVhdGVVUkxGb3JSZXNvdXJjZShjb25zdCBjaGFyKiByZXNvdXJjZSwg
Y29uc3QgY2hhciogZXh0ZW5zaW9uKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggOWRiOTg0
OC4uNDcxY2Q3ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJ
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU5LDcgKzU5LDEwIEBACiAJ
CTI5NzIzNEI3MTczQUZBQzcwMDk4MzYwMSAvKiBDdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1l
X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyOTcyMzRCNTE3M0FGQUM3MDA5ODM2MDEgLyogQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVt
ZV9CdW5kbGUuY3BwICovOyB9OwogCQkyOUFCOEFBMTE2NEM3MzU4MDBENDlCRUMgLyogQ3VzdG9t
UHJvdG9jb2xzVGVzdC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5QUI4QTlGMTY0QzczNTgwMEQ0OUJFQyAvKiBDdXN0b21Qcm90b2NvbHNUZXN0Lm1t
ICovOyB9OwogCQkyOUFCOEFBNDE2NEM3QTkzMDBENDlCRUMgLyogVGVzdEJyb3dzaW5nQ29udGV4
dExvYWREZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDI5QUI4QUEyMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlLm1tICovOyB9OworCQkyRDVDOUQzQTE5Q0FDRUVGMDBCM0M1QzEgLyogSW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ1QzlEMzcxOUNBQ0VFOTAwQjNDNUMxIC8qIEluamVjdGVkQnVuZGxlQ29u
dHJvbGxlci5tbSAqLzsgfTsKIAkJMkQ2NDBCNTUxNzg3NURGRjAwQkZBRjk5IC8qIFNjcm9sbFBp
bm5pbmdCZWhhdmlvcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMkQ2NDBCNTQxNzg3NURGRjAwQkZBRjk5IC8qIFNjcm9sbFBpbm5pbmdCZWhhdmlv
cnMuY3BwICovOyB9OworCQkyRDg4RDc3NTE5Q0E2OENGMDA4MDVDNTQgLyogUmVtb3RlT2JqZWN0
SW50ZXJmYWNlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkQ4OEQ3NzQxOUNBNjhDRjAwODA1QzU0IC8qIFJlbW90ZU9iamVjdEludGVyZmFjZS5tbSAq
LzsgfTsKKwkJMkQ4OEQ3NzgxOUNBNkFCNzAwODA1QzU0IC8qIEluamVjdGVkQnVuZGxlLm0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDg4RDc3NzE5Q0E2
QUI3MDA4MDVDNTQgLyogSW5qZWN0ZWRCdW5kbGUubSAqLzsgfTsKIAkJMkREN0QzQUExNzgyMDVE
MDAwMjZFMUUzIC8qIFJlc2l6ZVJldmVyc2VQYWdpbmF0ZWRXZWJWaWV3LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJERDdEM0E5MTc4MjA1RDAwMDI2
RTFFMyAvKiBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHAgKi87IH07CiAJCTJERDdE
M0FGMTc4MjI3QjMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREQ3RDNB
RTE3ODIyN0FDMDAyNkUxRTMgLyogbG90cy1vZi10ZXh0LXZlcnRpY2FsLWxyLmh0bWwgKi87IH07
CiAJCTJFNzc2NUNEMTZDNEQ4MEEwMEJBMkJCMSAvKiBtYWluSU9TLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkU3NzY1Q0MxNkM0RDgwQTAwQkEyQkIx
IC8qIG1haW5JT1MubW0gKi87IH07CkBAIC0xODYsOCArMTg5LDggQEAKIAkJQkM1NzVBOTAxMjZF
NzREMzAwNkYwRjEyIC8qIENvY29hLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjlFOUYwMTEyMzVCREUwMEExMzdFMCAvKiBDb2Nv
YS5mcmFtZXdvcmsgKi87IH07CiAJCUJDNTc1QTkxMTI2RTc0RDMwMDZGMEYxMiAvKiBXZWJLaXQy
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDQTYxREI0MTE3MDBFRkQwMDQ2MEQxRSAvKiBXZWJLaXQyLmZyYW1ld29yayAqLzsgfTsK
IAkJQkM1NzVBOTIxMjZFNzREMzAwNkYwRjEyIC8qIEphdmFTY3JpcHRDb3JlLmZyYW1ld29yayBp
biBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTA5NjRE
MTI1NTYyMEMwMDA4Mzc1NiAvKiBKYXZhU2NyaXB0Q29yZS5mcmFtZXdvcmsgKi87IH07Ci0JCUJD
NTc1QTk3MTI2RTc0RjEwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZU1haW4uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzU5NDYxMjZFNzM1MTAw
NkYwRjEyIC8qIEluamVjdGVkQnVuZGxlTWFpbi5jcHAgKi87IH07Ci0JCUJDNTc1QUEyMTI2RTc2
NjAwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzVBQTAxMjZFNzY1NzAwNkYwRjEy
IC8qIEluamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAgKi87IH07CisJCUJDNTc1QTk3MTI2RTc0
RjEwMDZGMEYxMiAvKiBMZWdhY3lJbmplY3RlZEJ1bmRsZU1haW4uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzU5NDYxMjZFNzM1MTAwNkYwRjEy
IC8qIExlZ2FjeUluamVjdGVkQnVuZGxlTWFpbi5jcHAgKi87IH07CisJCUJDNTc1QUEyMTI2RTc2
NjAwMDZGMEYxMiAvKiBMZWdhY3lJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM1NzVBQTAxMjZFNzY1NzAw
NkYwRjEyIC8qIExlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHAgKi87IH07CiAJCUJD
NTc1QUFEMTI2RTgzQjkwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2ljLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc1QUFDMTI2RTgzQjkw
MDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2ljLmNwcCAqLzsgfTsKIAkJQkM1NzVBQjAxMjZF
ODNDODAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlQmFzaWNfQnVuZGxlLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNTc1QUFGMTI2RTgzQzgwMDZG
MEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2ljX0J1bmRsZS5jcHAgKi87IH07CiAJCUJDNTc1QkMw
MTI2RjU3NTIwMDZGMEYxMiAvKiBQbGF0Zm9ybVV0aWxpdGllcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzU3NUJCRjEyNkY1NzUyMDA2RjBGMTIg
LyogUGxhdGZvcm1VdGlsaXRpZXMuY3BwICovOyB9OwpAQCAtNDAyLDcgKzQwNSwxMyBAQAogCQky
OUFCOEE5RjE2NEM3MzU4MDBENDlCRUMgLyogQ3VzdG9tUHJvdG9jb2xzVGVzdC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEN1c3RvbVByb3RvY29sc1Rlc3QubW07
IHBhdGggPSBXZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNUZXN0Lm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyOUFCOEFBMjE2NEM3QTkzMDBENDlCRUMgLyogVGVzdEJyb3dzaW5n
Q29udGV4dExvYWREZWxlZ2F0ZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFRlc3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTI5QUI4QUEzMTY0QzdBOTMwMEQ0OUJFQyAvKiBUZXN0QnJvd3NpbmdD
b250ZXh0TG9hZERlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
c3RCcm93c2luZ0NvbnRleHRMb2FkRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMkQ1QzlEMzYxOUNBQ0I3QzAwQjNDNUMxIC8qIEluamVjdGVkQnVuZGxlVGVzdC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVRlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMkQ1QzlEMzcxOUNBQ0VFOTAwQjNDNUMxIC8qIEluamVjdGVkQnVuZGxlQ29udHJv
bGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEluamVjdGVk
QnVuZGxlQ29udHJvbGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkQ1QzlE
MzgxOUNBQ0VFOTAwQjNDNUMxIC8qIEluamVjdGVkQnVuZGxlQ29udHJvbGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkQ2NDBCNTQxNzg3NURGRjAwQkZBRjk5IC8qIFNj
cm9sbFBpbm5pbmdCZWhhdmlvcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2Nyb2xsUGlubmluZ0JlaGF2aW9ycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTJEODhENzc0MTlDQTY4Q0YwMDgwNUM1NCAvKiBSZW1vdGVPYmplY3RJbnRlcmZhY2Uu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZW1vdGVPYmplY3RJ
bnRlcmZhY2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEODhENzc2MTlDQTZB
QjcwMDgwNUM1NCAvKiBJbmplY3RlZEJ1bmRsZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBJbmplY3RlZEJ1bmRsZS5oOyBwYXRoID0gbWFjL0luamVjdGVkQnVuZGxlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEODhENzc3MTlDQTZBQjcwMDgwNUM1NCAvKiBJ
bmplY3RlZEJ1bmRsZS5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IG5hbWUgPSBJbmpl
Y3RlZEJ1bmRsZS5tOyBwYXRoID0gbWFjL0luamVjdGVkQnVuZGxlLm07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTJERDdEM0E5MTc4MjA1RDAwMDI2RTFFMyAvKiBSZXNpemVSZXZlcnNl
UGFnaW5hdGVkV2ViVmlldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBSZXNpemVSZXZlcnNlUGFnaW5hdGVkV2ViVmlldy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTJERDdEM0FFMTc4MjI3QUMwMDI2RTFFMyAvKiBsb3RzLW9mLXRleHQtdmVydGlj
YWwtbHIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJsb3RzLW9mLXRleHQtdmVydGljYWwtbHIuaHRtbCI7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJFNzc2NUNDMTZDNEQ4MEEwMEJBMkJCMSAvKiBt
YWluSU9TLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gbWFpbklP
Uy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTUzMSwxMiArNTQwLDEyIEBACiAJ
CUJDM0M0QzcwMTQ1NzVCNkEwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0
ZVRlc3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS0Jyb3dz
aW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW07IHBhdGggPSBXZWJLaXQyT2JqQy9XS0Jyb3dz
aW5nQ29udGV4dExvYWREZWxlZ2F0ZVRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDM0M0QzdEMTQ1ODdBQTYwMDI1RkI2MiAvKiBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwVGVz
dC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IFdLQnJvd3NpbmdD
b250ZXh0R3JvdXBUZXN0Lm1tOyBwYXRoID0gV2ViS2l0Mk9iakMvV0tCcm93c2luZ0NvbnRleHRH
cm91cFRlc3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTVGNUY4MTRBRDc4
RUUwMDQ4NEJFMSAvKiBWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gVmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkM1NzU5NDYx
MjZFNzM1MTAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlTWFpbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1haW4uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQzU3NTk0NjEyNkU3MzUxMDA2RjBGMTIgLyogTGVnYWN5SW5q
ZWN0ZWRCdW5kbGVNYWluLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IExlZ2FjeUluamVjdGVkQnVuZGxlTWFpbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDNTc1OTgwMTI2RTc0QUYwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZVRlc3RXZWJLaXRB
UEkuYnVuZGxlICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSB3cmFwcGVyLmNmYnVuZGxlOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBJbmplY3RlZEJ1
bmRsZVRlc3RXZWJLaXRBUEkuYnVuZGxlOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQlCQzU3NTk4MTEyNkU3NEFGMDA2RjBGMTIgLyogSW5qZWN0ZWRCdW5kbGUtSW5mby5w
bGlzdCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQucGxpc3QueG1sOyBwYXRoID0gIkluamVjdGVkQnVuZGxlLUluZm8ucGxpc3QiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlCQzU3NUE5RTEyNkU3NUZCMDA2RjBGMTIgLyogSW5qZWN0
ZWRCdW5kbGVUZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVk
QnVuZGxlVGVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQzU3NUE5RjEyNkU3
NjU3MDA2RjBGMTIgLyogSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEluamVjdGVkQnVuZGxlQ29udHJvbGxlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQzU3NUFBMDEyNkU3NjU3MDA2RjBGMTIgLyogSW5qZWN0ZWRC
dW5kbGVDb250cm9sbGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEluamVjdGVkQnVuZGxlQ29udHJvbGxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUJDNTc1QTlFMTI2RTc1RkIwMDZGMEYxMiAvKiBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Qu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5SW5qZWN0ZWRCdW5kbGVU
ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNTc1QTlGMTI2RTc2NTcwMDZG
MEYxMiAvKiBMZWdhY3lJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDNTc1QUEwMTI2RTc2NTcwMDZGMEYxMiAvKiBMZWdh
Y3lJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM1NzVBQUMxMjZFODNCOTAwNkYwRjEyIC8qIEluamVjdGVk
QnVuZGxlQmFzaWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5q
ZWN0ZWRCdW5kbGVCYXNpYy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTc1
QUFGMTI2RTgzQzgwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZUJhc2ljX0J1bmRsZS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbmplY3RlZEJ1bmRsZUJhc2ljX0J1
bmRsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTc1QUUyMTI2RTg4QjEw
MDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBJbmplY3RlZEJ1bmRsZS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTcxMSwxMiArNzIwLDI0IEBACiAJCQkJQTFBNEZFNUQxOEREM0RCNzAwQjVFQThB
IC8qIERvd25sb2FkLm1tICovLAogCQkJCTFBQkMzREVEMTg5OUJFNkQwMDRGMDYyNiAvKiBOYXZp
Z2F0aW9uLm1tICovLAogCQkJCUM5NTUwMUJFMTlBRDJGQUYwMDQ5QkUzRSAvKiBQcmVmZXJlbmNl
cy5tbSAqLywKKwkJCQkyRDg4RDc3NDE5Q0E2OENGMDA4MDVDNTQgLyogUmVtb3RlT2JqZWN0SW50
ZXJmYWNlLm1tICovLAogCQkJCTdDQzNFMUZBMTk3RTIzNDEwMEJFNjI1MiAvKiBVc2VyQ29udGVu
dENvbnRyb2xsZXIubW0gKi8sCiAJCQkpOwogCQkJbmFtZSA9ICJXZWJLaXQyIENvY29hIjsKIAkJ
CXBhdGggPSBXZWJLaXQyQ29jb2E7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9Owor
CQkyRDVDOUQzQjE5Q0FDRUZBMDBCM0M1QzEgLyogTGVnYWN5ICovID0geworCQkJaXNhID0gUEJY
R3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlCQzU3NUFBMDEyNkU3NjU3MDA2RjBGMTIgLyog
TGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcCAqLywKKwkJCQlCQzU3NUE5RjEyNkU3
NjU3MDA2RjBGMTIgLyogTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmggKi8sCisJCQkJ
QkM1NzVBOUUxMjZFNzVGQjAwNkYwRjEyIC8qIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdC5oICov
LAorCQkJCUJDNTc1OTQ2MTI2RTczNTEwMDZGMEYxMiAvKiBMZWdhY3lJbmplY3RlZEJ1bmRsZU1h
aW4uY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBMZWdhY3k7CisJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOworCQl9OwogCQkyRTk2NjBEQzE2QzA3RDdCMDAzNzFCNDIgLyogaW9zICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTc4NywxMSArODA4LDEzIEBA
CiAJCUJDNTc1OTQ0MTI2RTczM0MwMDZGMEYxMiAvKiBJbmplY3RlZEJ1bmRsZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMkQ1QzlEM0IxOUNBQ0VGQTAw
QjNDNUMxIC8qIExlZ2FjeSAqLywKIAkJCQlCQzU3NTk4MTEyNkU3NEFGMDA2RjBGMTIgLyogSW5q
ZWN0ZWRCdW5kbGUtSW5mby5wbGlzdCAqLywKLQkJCQlCQzU3NUFBMDEyNkU3NjU3MDA2RjBGMTIg
LyogSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcCAqLywKLQkJCQlCQzU3NUE5RjEyNkU3NjU3
MDA2RjBGMTIgLyogSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmggKi8sCi0JCQkJQkM1NzU5NDYx
MjZFNzM1MTAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlTWFpbi5jcHAgKi8sCi0JCQkJQkM1NzVB
OUUxMjZFNzVGQjAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlVGVzdC5oICovLAorCQkJCTJEODhE
Nzc2MTlDQTZBQjcwMDgwNUM1NCAvKiBJbmplY3RlZEJ1bmRsZS5oICovLAorCQkJCTJEODhENzc3
MTlDQTZBQjcwMDgwNUM1NCAvKiBJbmplY3RlZEJ1bmRsZS5tICovLAorCQkJCTJENUM5RDM3MTlD
QUNFRTkwMEIzQzVDMSAvKiBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIubW0gKi8sCisJCQkJMkQ1
QzlEMzgxOUNBQ0VFOTAwQjNDNUMxIC8qIEluamVjdGVkQnVuZGxlQ29udHJvbGxlci5oICovLAor
CQkJCTJENUM5RDM2MTlDQUNCN0MwMEIzQzVDMSAvKiBJbmplY3RlZEJ1bmRsZVRlc3QuaCAqLywK
IAkJCSk7CiAJCQluYW1lID0gSW5qZWN0ZWRCdW5kbGU7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOwpAQCAtMTMxMSw2ICsxMzM0LDcgQEAKIAkJCQlCQzkwOTc3QTEyNTU3MUFCMDAwODM3NTYg
LyogUGFnZUxvYWRCYXNpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzJEMDA0OTEyQTlGREZB
MDBFNzMyQTMgLyogUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5MzMxNDA3QzE3QjQ0MTkwMDBGMDgzQjEgLyogRGlkTm90
SGFuZGxlS2V5RG93bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDg4RDc3NTE5Q0E2OENGMDA4
MDVDNTQgLyogUmVtb3RlT2JqZWN0SW50ZXJmYWNlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZG
NTJFQUIxODI4NzI2MDAwMjNENDEyIC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUE1N0EzNEYwMTZBRjY3NzIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdp
bmRvd0NoYW5nZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MkU1Q0U0NjE0RDIxRTlEMDAzQjJC
RDggLyogUGFyZW50RnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xMzk1LDYgKzE0MTksNyBA
QAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCUJD
MjQ2RDlDMTMyRjFGRjAwMEI1NkQ3QyAvKiBDYW5IYW5kbGVSZXF1ZXN0X0J1bmRsZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkyRDg4RDc3ODE5Q0E2QUI3MDA4MDVDNTQgLyogSW5qZWN0ZWRCdW5k
bGUubSBpbiBTb3VyY2VzICovLAogCQkJCUJDQjY4MDQyMTI2RkJGRjEwMDY0MkE2MSAvKiBEb2N1
bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxMzkzRTIyMTUyMzk1MkQwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19C
dW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjZGNDlDNkIxNTU0NUNBNzAwMDdGMzlEIC8q
IERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLApAQCAt
MTQwMywxMyArMTQyOCwxNCBAQAogCQkJCUY2NjBBQTExMTVBNUY2MzEwMDNBMTI0MyAvKiBHZXRJ
bmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja19CdW5kbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNEJGREZGQTcxMzE0Nzc2QzAwNjFGMjRCIC8qIEhpdFRlc3RSZXN1
bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzU3NUFCMDEyNkU4
M0M4MDA2RjBGMTIgLyogSW5qZWN0ZWRCdW5kbGVCYXNpY19CdW5kbGUuY3BwIGluIFNvdXJjZXMg
Ki8sCi0JCQkJQkM1NzVBQTIxMjZFNzY2MDAwNkYwRjEyIC8qIEluamVjdGVkQnVuZGxlQ29udHJv
bGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzU3NUFBMjEyNkU3NjYwMDA2RjBGMTIgLyog
TGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFB
RURFMjI2MTNFNUU3RTcwMEU2MkZFOCAvKiBJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXJNYWMubW0g
aW4gU291cmNlcyAqLywKIAkJCQkzNzhFNjQ3NzE2MzI2NTVFMDBCNkM2NzYgLyogSW5qZWN0ZWRC
dW5kbGVGcmFtZUhpdFRlc3RfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5NzIzNEI3
MTczQUZBQzcwMDk4MzYwMSAvKiBDdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkyRDVDOUQzQTE5Q0FDRUVGMDBCM0M1QzEgLyogSW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNzY3MzQ5OUQxOTMwQzVC
QjAwRTQ0REY5IC8qIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9idW5k
bGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjY2MEFBMTUxNUE2MUFCRjAwM0ExMjQzIC8qIElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19CdW5kbGUuY3Bw
IGluIFNvdXJjZXMgKi8sCi0JCQkJQkM1NzVBOTcxMjZFNzRGMTAwNkYwRjEyIC8qIEluamVjdGVk
QnVuZGxlTWFpbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzU3NUE5NzEyNkU3NEYxMDA2RjBG
MTIgLyogTGVnYWN5SW5qZWN0ZWRCdW5kbGVNYWluLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMz
REM4OTE0MTQxOTU3OUYwMDc0N0VGNyAvKiBMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2Fs
bGJhY2tfQnVuZGxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTMzQkU1QUY5MTM3QjVBQUUwMDcw
NTgxMyAvKiBNb3VzZU1vdmVBZnRlckNyYXNoX0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk5M0YxREIzNDE0REEyMDg3MDAyNEMzNjIgLyogTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0X0J1bmRsZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9DYW5IYW5kbGVSZXF1ZXN0LmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9DYW5IYW5kbGVSZXF1ZXN0LmNwcAppbmRleCAwMDVmOWZmLi5h
MDQyZjczIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ2Fu
SGFuZGxlUmVxdWVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0NhbkhhbmRsZVJlcXVlc3QuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyB2b2lkIHNldElu
amVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQogCiBURVNUKFdlYktpdDIs
IENhbkhhbmRsZVJlcXVlc3QpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250
ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJD
YW5IYW5kbGVSZXF1ZXN0VGVzdCIpKTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNv
bnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JMZWdhY3lJbmplY3RlZEJ1bmRs
ZVRlc3QoIkNhbkhhbmRsZVJlcXVlc3RUZXN0IikpOwogICAgIHNldEluamVjdGVkQnVuZGxlQ2xp
ZW50KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgV0tDb250ZXh0UmVnaXN0ZXJVUkxTY2hlbWVBc0Vt
cHR5RG9jdW1lbnQoY29udGV4dC5nZXQoKSwgVXRpbDo6dG9XSygiZW1wdHlzY2hlbWUiKS5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ2FuSGFu
ZGxlUmVxdWVzdF9CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0NhbkhhbmRsZVJlcXVlc3RfQnVuZGxlLmNwcAppbmRleCBkZGJlOWYyLi5jNmVlOGUyIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvQ2FuSGFuZGxlUmVxdWVz
dF9CdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9DYW5I
YW5kbGVSZXF1ZXN0X0J1bmRsZS5jcHAKQEAgLTI0LDE0ICsyNCwxNCBAQAogICovCiAKICNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRl
ICJMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgogCiBuYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CiAKLWNsYXNzIENhbkhhbmRsZVJlcXVlc3RUZXN0IDogcHVibGljIEluamVj
dGVkQnVuZGxlVGVzdCB7CitjbGFzcyBDYW5IYW5kbGVSZXF1ZXN0VGVzdCA6IHB1YmxpYyBMZWdh
Y3lJbmplY3RlZEJ1bmRsZVRlc3QgewogcHVibGljOgogICAgIENhbkhhbmRsZVJlcXVlc3RUZXN0
KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKTsKIApAQCAtMzksMTAgKzM5LDEwIEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKFdLQnVuZGxlUmVmLCBX
S1N0cmluZ1JlZiBtZXNzYWdlTmFtZSwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5KTsKIH07CiAKLXN0
YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPENhbkhhbmRsZVJlcXVlc3RUZXN0PiBy
ZWdpc3RyYXIoIkNhbkhhbmRsZVJlcXVlc3RUZXN0Iik7CitzdGF0aWMgTGVnYWN5SW5qZWN0ZWRC
dW5kbGVUZXN0OjpSZWdpc3RlcjxDYW5IYW5kbGVSZXF1ZXN0VGVzdD4gcmVnaXN0cmFyKCJDYW5I
YW5kbGVSZXF1ZXN0VGVzdCIpOwogCiBDYW5IYW5kbGVSZXF1ZXN0VGVzdDo6Q2FuSGFuZGxlUmVx
dWVzdFRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgOiBJbmplY3RlZEJ1
bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICA6IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChpZGVu
dGlmaWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcAppbmRleCAwMzJkZTZmLi4z
OWRiNzdmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9N
V2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgVEVT
VChXZWJLaXQyLCBESVNBQkxFRF9ET01XaW5kb3dFeHRlbnNpb25CYXNpYykKIHsKICAgICBXS1Jl
dGFpblB0cjxXS1BhZ2VHcm91cFJlZj4gcGFnZUdyb3VwKEFkb3B0V0ssIFdLUGFnZUdyb3VwQ3Jl
YXRlV2l0aElkZW50aWZpZXIoV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRPTVdpbmRv
d0V4dGVuc2lvbkJhc2ljUGFnZUdyb3VwIikpKTsgCiAKLSAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVu
ZGxlVGVzdCgiRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMiLCBwYWdlR3JvdXAuZ2V0KCkpKTsKKyAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRl
Q29udGV4dEZvckxlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCgiRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWMiLCBwYWdlR3JvdXAuZ2V0KCkpKTsKIAogICAgIFdLQ29udGV4dEluamVjdGVkQnVuZGxlQ2xp
ZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiAgICAgbWVtc2V0KCZpbmplY3RlZEJ1bmRsZUNs
aWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVu
ZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRl
bnNpb25CYXNpY19CdW5kbGUuY3BwCmluZGV4IDAwMDRmMjcuLjg5MTE5ZDkgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25CYXNp
Y19CdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01X
aW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2lu
Y2x1ZGUgIkxlZ2FjeUluamVjdGVkQnVuZGxlVGVzdC5oIgogI2luY2x1ZGUgPFdlYktpdC9XS0J1
bmRsZURPTVdpbmRvd0V4dGVuc2lvbi5oPgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZUZyYW1l
Lmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgpAQCAtNjEsNyArNjEsNyBAQCB0
eXBlZGVmIHN0cnVjdCB7CiAgICAgRXh0ZW5zaW9uU3RhdGUgc3RhdGU7CiB9IEV4dGVuc2lvblJl
Y29yZDsKICAgICAKLWNsYXNzIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljIDogcHVibGljIEluamVj
dGVkQnVuZGxlVGVzdCB7CitjbGFzcyBET01XaW5kb3dFeHRlbnNpb25CYXNpYyA6IHB1YmxpYyBM
ZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QgewogcHVibGljOgogICAgIERPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKTsKICAgICAKQEAgLTg3LDEwICs4
NywxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9maW5pc2hlZE9uZU1haW5GcmFtZUxvYWQ7CiB9
OwogCi1zdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxET01XaW5kb3dFeHRlbnNp
b25CYXNpYz4gcmVnaXN0cmFyKCJET01XaW5kb3dFeHRlbnNpb25CYXNpYyIpOworc3RhdGljIExl
Z2FjeUluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8RE9NV2luZG93RXh0ZW5zaW9uQmFzaWM+
IHJlZ2lzdHJhcigiRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMiKTsKIAogRE9NV2luZG93RXh0ZW5z
aW9uQmFzaWM6OkRPTVdpbmRvd0V4dGVuc2lvbkJhc2ljKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVu
dGlmaWVyKQotICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgOiBMZWdh
Y3lJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKICAgICAsIG1fZmluaXNoZWRPbmVNYWlu
RnJhbWVMb2FkKGZhbHNlKQogewogICAgIG1fZXh0ZW5zaW9uUmVjb3Jkc1swXS5uYW1lID0gIkZp
cnN0IHBhZ2UsIG1haW4gZnJhbWUsIHN0YW5kYXJkIHdvcmxkIjsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25O
b0NhY2hlLmNwcAppbmRleCBjNWY2MTA0Li5iYjgwNzA0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZS5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lvbk5v
Q2FjaGUuY3BwCkBAIC04Miw3ICs4Miw3IEBAIFRFU1QoV2ViS2l0MiwgRElTQUJMRURfRE9NV2lu
ZG93RXh0ZW5zaW9uTm9DYWNoZSkKIHsKICAgICBXS1JldGFpblB0cjxXS1BhZ2VHcm91cFJlZj4g
cGFnZUdyb3VwKEFkb3B0V0ssIFdLUGFnZUdyb3VwQ3JlYXRlV2l0aElkZW50aWZpZXIoV0tTdHJp
bmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoIkRPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGVQYWdlR3Jv
dXAiKSkpOwogCi0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ss
IFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkRPTVdpbmRvd0V4dGVu
c2lvbk5vQ2FjaGUiLCBwYWdlR3JvdXAuZ2V0KCkpKTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRl
eHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckxlZ2FjeUluamVj
dGVkQnVuZGxlVGVzdCgiRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZSIsIHBhZ2VHcm91cC5nZXQo
KSkpOwogCiAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBpbmplY3RlZEJ1bmRs
ZUNsaWVudDsKICAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5q
ZWN0ZWRCdW5kbGVDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZV9CdW5k
bGUuY3BwCmluZGV4IGY3ZTBkMGYuLjIxMzQxZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9ET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlX0J1bmRsZS5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RPTVdpbmRvd0V4dGVuc2lv
bk5vQ2FjaGVfQnVuZGxlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlICJMZWdh
Y3lJbmplY3RlZEJ1bmRsZVRlc3QuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVET01XaW5k
b3dFeHRlbnNpb24uaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVGcmFtZS5oPgogI2luY2x1
ZGUgPFdlYktpdC9XS0J1bmRsZVBhZ2UuaD4KQEAgLTYwLDcgKzYwLDcgQEAgdHlwZWRlZiBzdHJ1
Y3QgewogICAgIEV4dGVuc2lvblN0YXRlIHN0YXRlOwogfSBFeHRlbnNpb25SZWNvcmQ7CiAKLWNs
YXNzIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0
IHsKK2NsYXNzIERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUgOiBwdWJsaWMgTGVnYWN5SW5qZWN0
ZWRCdW5kbGVUZXN0IHsKIHB1YmxpYzoKICAgICBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlKGNv
bnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKTsKIApAQCAtODYsMTAgKzg2LDEwIEBAIHByaXZh
dGU6CiAgICAgaW50IG1fbnVtYmVyTWFpbkZyYW1lTG9hZHM7CiB9OwogCi1zdGF0aWMgSW5qZWN0
ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlPiByZWdpc3Ry
YXIoIkRPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGUiKTsKK3N0YXRpYyBMZWdhY3lJbmplY3RlZEJ1
bmRsZVRlc3Q6OlJlZ2lzdGVyPERPTVdpbmRvd0V4dGVuc2lvbk5vQ2FjaGU+IHJlZ2lzdHJhcigi
RE9NV2luZG93RXh0ZW5zaW9uTm9DYWNoZSIpOwogCiBET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hl
OjpET01XaW5kb3dFeHRlbnNpb25Ob0NhY2hlKGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVy
KQotICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgOiBMZWdhY3lJbmpl
Y3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKICAgICAsIG1fbnVtYmVyTWFpbkZyYW1lTG9hZHMo
MCkKIHsKICAgICBtX2V4dGVuc2lvblJlY29yZHNbMF0ubmFtZSA9ICJGaXJzdCBwYWdlLCBtYWlu
IGZyYW1lLCBzdGFuZGFyZCB3b3JsZCI7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9EaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMuY3BwCmluZGV4
IGE3OGI4ODYuLmU0YWNkMTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9EaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9EaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMuY3BwCkBAIC03NCw3
ICs3NCw3IEBAIHN0YXRpYyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJl
ZiBjb250ZXh0KQogCiBURVNUKFdlYktpdDIsIERpZEFzc29jaWF0ZUZvcm1Db250cm9scykKIHsK
LSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNy
ZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkRpZEFzc29jaWF0ZUZvcm1Db250cm9s
c1Rlc3QiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRX
SyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9yTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KCJEaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHNUZXN0IikpOwogICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNv
bnRleHQuZ2V0KCkpOwogCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQo
KSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRGlkQXNz
b2NpYXRlRm9ybUNvbnRyb2xzX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xzX0J1bmRsZS5jcHAKaW5kZXggNTk4OTg1
MC4uYTEyMGZmYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
L0RpZEFzc29jaWF0ZUZvcm1Db250cm9sc19CdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9EaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNfQnVuZGxlLmNwcApA
QCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJ
bmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Qu
aCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dL
QnVuZGxlLmg+CkBAIC0zMiwxNCArMzIsMTQgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCi1jbGFzcyBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUZXN0IDogcHVibGljIEluamVjdGVk
QnVuZGxlVGVzdCB7CitjbGFzcyBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUZXN0IDogcHVibGlj
IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgRGlkQXNzb2NpYXRlRm9y
bUNvbnRyb2xzVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcik7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQYWdlUmVmKSBvdmVy
cmlkZTsKIH07CiAKLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPERpZEFzc29j
aWF0ZUZvcm1Db250cm9sc1Rlc3Q+IHJlZ2lzdHJhcigiRGlkQXNzb2NpYXRlRm9ybUNvbnRyb2xz
VGVzdCIpOworc3RhdGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8RGlkQXNz
b2NpYXRlRm9ybUNvbnRyb2xzVGVzdD4gcmVnaXN0cmFyKCJEaWRBc3NvY2lhdGVGb3JtQ29udHJv
bHNUZXN0Iik7CiAKIHN0YXRpYyBib29sIHNob3VsZE5vdGlmeU9uRm9ybUNoYW5nZXMoV0tCdW5k
bGVQYWdlUmVmLCBjb25zdCB2b2lkKikKIHsKQEAgLTU0LDExICs1NCwxMSBAQCBzdGF0aWMgdm9p
ZCBkaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQXJyYXlS
ZWYgZWxlbWVudEhhbgogICAgIFdLUmV0YWluUHRyPFdLVUludDY0UmVmPiBudW1iZXJPZkVsZW1l
bnRzID0gYWRvcHRXSyhXS1VJbnQ2NENyZWF0ZShXS0FycmF5R2V0U2l6ZShlbGVtZW50SGFuZGxl
cykpKTsKICAgICBXS0RpY3Rpb25hcnlTZXRJdGVtKG1lc3NhZ2VCb2R5LmdldCgpLCBVdGlsOjp0
b1dLKCJOdW1iZXJPZkNvbnRyb2xzIikuZ2V0KCksIG51bWJlck9mRWxlbWVudHMuZ2V0KCkpOwog
Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJl
ZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJEaWRSZWNlaXZlRGlkQXNzb2NpYXRlRm9ybUNvbnRy
b2xzIikuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICBXS0J1bmRsZVBvc3RNZXNzYWdl
KExlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2hhcmVkKCkuYnVuZGxlKCksIFV0aWw6
OnRvV0soIkRpZFJlY2VpdmVEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHMiKS5nZXQoKSwgbWVzc2Fn
ZUJvZHkuZ2V0KCkpOwogfQogCiBEaWRBc3NvY2lhdGVGb3JtQ29udHJvbHNUZXN0OjpEaWRBc3Nv
Y2lhdGVGb3JtQ29udHJvbHNUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAg
IDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgOiBMZWdhY3lJbmplY3RlZEJ1
bmRsZVRlc3QoaWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL0RpZE5vdEhhbmRsZUtleURvd24uY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0RpZE5vdEhhbmRsZUtleURvd24uY3BwCmluZGV4IGE4NzE2
ZjYuLjIwMTI3MWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9EaWROb3RIYW5kbGVLZXlEb3duLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvRGlkTm90SGFuZGxlS2V5RG93bi5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGlj
IHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnRDYWxsYmFjayhXS1BhZ2VSZWYsIFdLTmF0aXZlRXZl
bnRQdHIgZXZlbnQsIGNvbnMKIAogVEVTVChXZWJLaXQyLCBEaWROb3RIYW5kbGVLZXlEb3duKQog
ewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpj
cmVhdGVDb250ZXh0V2l0aEluamVjdGVkQnVuZGxlKCkpOworICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVMZWdhY3lDb250ZXh0V2l0aElu
amVjdGVkQnVuZGxlKCkpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0
KCkpOwogCiAgICAgV0tQYWdlTG9hZGVyQ2xpZW50VjAgbG9hZGVyQ2xpZW50OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3RhcnRVc2VyU2Ny
aXB0QWxlcnRDcmFzaC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9j
dW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoLmNwcAppbmRleCAzOTIwOTgyLi5iYzVhMTg3
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRT
dGFydFVzZXJTY3JpcHRBbGVydENyYXNoLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoLmNwcApAQCAtNDcs
NyArNDcsNyBAQCBURVNUKFdlYktpdDIsIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFz
aFRlc3QpCiB7CiAgICAgV0tSZXRhaW5QdHI8V0tQYWdlR3JvdXBSZWY+IHBhZ2VHcm91cChBZG9w
dFdLLCBXS1BhZ2VHcm91cENyZWF0ZVdpdGhJZGVudGlmaWVyKFdLU3RyaW5nQ3JlYXRlV2l0aFVU
RjhDU3RyaW5nKCJEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hUZXN0UGFnZUdyb3Vw
IikpKTsgCiAKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywg
VXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiRG9jdW1lbnRTdGFydFVz
ZXJTY3JpcHRBbGVydENyYXNoVGVzdCIsIHBhZ2VHcm91cC5nZXQoKSkpOworICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9y
TGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KCJEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jh
c2hUZXN0IiwgcGFnZUdyb3VwLmdldCgpKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXco
Y29udGV4dC5nZXQoKSwgcGFnZUdyb3VwLmdldCgpKTsKIAogICAgIFdLUGFnZVVJQ2xpZW50VjAg
dWlDbGllbnQ7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
RG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvRG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNo
X0J1bmRsZS5jcHAKaW5kZXggMDRhMDQ2Ny4uYmFmNTcwZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0RvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFz
aF9CdW5kbGUuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Eb2N1
bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hfQnVuZGxlLmNwcApAQCAtMjQsNyArMjQsNyBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRl
c3QuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaCIKICNpbmNsdWRlIDxX
ZWJLaXQvV0tCdW5kbGVQYWdlR3JvdXAuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQcml2
YXRlLmg+CiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlU2NyaXB0V29ybGQuaD4KQEAgLTMzLDEw
ICszMywxMCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIERvY3VtZW50
U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0
IHsKK2NsYXNzIERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3QgOiBwdWJsaWMg
TGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0IHsKIHB1YmxpYzoKICAgICBEb2N1bWVudFN0YXJ0VXNl
clNjcmlwdEFsZXJ0Q3Jhc2hUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAg
ICAgICA6IEluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQorICAgICAgICA6IExlZ2FjeUlu
amVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKQEAgLTUwLDYgKzUw
LDYgQEAgcHVibGljOgogICAgIH0KIH07CiAKLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJl
Z2lzdGVyPERvY3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaFRlc3Q+IHJlZ2lzdHJhcigi
RG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENyYXNoVGVzdCIpOworc3RhdGljIExlZ2FjeUlu
amVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8RG9jdW1lbnRTdGFydFVzZXJTY3JpcHRBbGVydENy
YXNoVGVzdD4gcmVnaXN0cmFyKCJEb2N1bWVudFN0YXJ0VXNlclNjcmlwdEFsZXJ0Q3Jhc2hUZXN0
Iik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9HZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9u
VXNlckRhdGFDYWxsYmFjay5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
R2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2suY3BwCmluZGV4
IDAzN2RlOTguLmNmNzczM2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9HZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFjay5j
cHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0dldEluamVjdGVkQnVu
ZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrLmNwcApAQCAtNDAsMTIgKzQwLDEyIEBA
IHN0YXRpYyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKFdLQ29udGV4
dFJlZiBjb250ZXh0LCBXS1N0cmluZ1JlCiAKIHN0YXRpYyBXS1R5cGVSZWYgZ2V0SW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhKFdLQ29udGV4dFJlZiBjb250ZXh0LCBjb25zdCB2
b2lkKiBjbGllbnRJbmZvKQogewotICAgIHJldHVybiBVdGlsOjpjcmVhdGVJbml0aWFsaXphdGlv
bkRpY3Rpb25hcnlGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkdldEluamVjdGVkQnVuZGxlSW5pdGlh
bGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrVGVzdCIsICBVdGlsOjp0b1dLKCJFeHRyYSBpbml0aWFs
aXphdGlvbiBkYXRhIikuZ2V0KCkpOworICAgIHJldHVybiBVdGlsOjpjcmVhdGVJbml0aWFsaXph
dGlvbkRpY3Rpb25hcnlGb3JMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoIkdldEluamVjdGVkQnVu
ZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrVGVzdCIsICBVdGlsOjp0b1dLKCJFeHRy
YSBpbml0aWFsaXphdGlvbiBkYXRhIikuZ2V0KCkpOwogfQogCiBURVNUKFdlYktpdDIsIEdldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrKQogewotICAgIFdLUmV0
YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0
V2l0aEluamVjdGVkQnVuZGxlKCkpOworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29u
dGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVMZWdhY3lDb250ZXh0V2l0aEluamVjdGVkQnVuZGxl
KCkpOwogCiAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVDbGllbnRWMSBpbmplY3RlZEJ1bmRs
ZUNsaWVudDsKICAgICBtZW1zZXQoJmluamVjdGVkQnVuZGxlQ2xpZW50LCAwLCBzaXplb2YoaW5q
ZWN0ZWRCdW5kbGVDbGllbnQpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9HZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFj
a19CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0dldEluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAKaW5kZXgg
YjMwNGY0ZS4uMWNlODgxYSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0dldEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1
bmRsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0dldEluamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrX0J1bmRsZS5jcHAKQEAgLTI0
LDE2ICsyNCwxNiBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlICJMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaCIK
ICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYktpdC9XS1JldGFp
blB0ci5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIEdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrVGVzdCA6IHB1YmxpYyBJbmplY3Rl
ZEJ1bmRsZVRlc3QgeworY2xhc3MgR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhQ2FsbGJhY2tUZXN0IDogcHVibGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCB7CiBwdWJs
aWM6CiAgICAgR2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tU
ZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAgICAgICA6IEluamVjdGVkQnVu
ZGxlVGVzdChpZGVudGlmaWVyKQorICAgICAgICA6IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChp
ZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKQEAgLTQzLDYgKzQzLDYgQEAgcHVibGljOgogICAg
IH0KIH07CiAKLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPEdldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrVGVzdD4gcmVnaXN0cmFyKCJHZXRJ
bmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1Rlc3QiKTsKK3N0YXRp
YyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPEdldEluamVjdGVkQnVuZGxlSW5p
dGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrVGVzdD4gcmVnaXN0cmFyKCJHZXRJbmplY3RlZEJ1
bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1Rlc3QiKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0hpdFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9IaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZS5jcHAKaW5kZXggNDg4NDE4My4u
M2MzZGFhZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hp
dFRlc3RSZXN1bHROb2RlSGFuZGxlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGUuY3BwCkBAIC03MCw3ICs3MCw3IEBAIHN0
YXRpYyB2b2lkIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KFdLQ29udGV4dFJlZiBjb250ZXh0KQog
CiBURVNUKFdlYktpdDIsIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlKQogewotICAgIFdLUmV0YWlu
UHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9y
SW5qZWN0ZWRCdW5kbGVUZXN0KCJIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3QiKSk7CisgICAg
V0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoIkhpdFRlc3RSZXN1bHROb2RlSGFuZGxl
VGVzdCIpKTsKICAgICAKICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0hpdFRl
c3RSZXN1bHROb2RlSGFuZGxlX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcAppbmRleCA3NmExODJl
Li40MWJmMjNlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
SGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvSGl0VGVzdFJlc3VsdE5vZGVIYW5kbGVfQnVuZGxlLmNwcApAQCAt
MjQsOCArMjQsOCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmpl
Y3RlZEJ1bmRsZVRlc3QuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaCIK
KyNpbmNsdWRlICJMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlICJMZWdhY3lJ
bmplY3RlZEJ1bmRsZUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVBhZ2UuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tC
dW5kbGVIaXRUZXN0UmVzdWx0Lmg+CkBAIC0zMywxMCArMzMsMTAgQEAKIAogbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkgewogCi1jbGFzcyBIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3QgOiBwdWJs
aWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK2NsYXNzIEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVz
dCA6IHB1YmxpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QgewogcHVibGljOgogICAgIEhpdFRl
c3RSZXN1bHROb2RlSGFuZGxlVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKLSAg
ICAgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICAgICAgOiBMZWdhY3lJ
bmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCkBAIC00Niw3ICs0
Niw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFub2RlSGFuZGxlKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAKLSAgICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRs
ZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJIaXRUZXN0UmVzdWx0
Tm9kZUhhbmRsZVRlc3REb25lTWVzc2FnZU5hbWUiKS5nZXQoKSwgVXRpbDo6dG9XSygiSGl0VGVz
dFJlc3VsdE5vZGVIYW5kbGVUZXN0RG9uZU1lc3NhZ2VCb2R5IikuZ2V0KCkpOworICAgICAgICBX
S0J1bmRsZVBvc3RNZXNzYWdlKExlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2hhcmVk
KCkuYnVuZGxlKCksIFV0aWw6OnRvV0soIkhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdERvbmVN
ZXNzYWdlTmFtZSIpLmdldCgpLCBVdGlsOjp0b1dLKCJIaXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRl
c3REb25lTWVzc2FnZUJvZHkiKS5nZXQoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZENyZWF0ZVBhZ2UoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSkKQEAg
LTYxLDYgKzYxLDYgQEAgcHVibGljOgogICAgIH0KIH07CiAKLXN0YXRpYyBJbmplY3RlZEJ1bmRs
ZVRlc3Q6OlJlZ2lzdGVyPEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdD4gcmVnaXN0cmFyKCJI
aXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3QiKTsKK3N0YXRpYyBMZWdhY3lJbmplY3RlZEJ1bmRs
ZVRlc3Q6OlJlZ2lzdGVyPEhpdFRlc3RSZXN1bHROb2RlSGFuZGxlVGVzdD4gcmVnaXN0cmFyKCJI
aXRUZXN0UmVzdWx0Tm9kZUhhbmRsZVRlc3QiKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktp
dEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVj
dGVkQnVuZGxlQmFzaWMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0lu
amVjdGVkQnVuZGxlQmFzaWMuY3BwCmluZGV4IGUzODIyOGQuLjI0OTkwMGIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljLmNw
cAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVC
YXNpYy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZy
YW1lKFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS1R5cGVSZWYgdXMKIAogVEVT
VChXZWJLaXQyLCBJbmplY3RlZEJ1bmRsZUJhc2ljKQogewotICAgIFdLUmV0YWluUHRyPFdLQ29u
dGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRC
dW5kbGVUZXN0KCJJbmplY3RlZEJ1bmRsZUJhc2ljVGVzdCIpKTsKKyAgICBXS1JldGFpblB0cjxX
S0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dEZvckxlZ2Fj
eUluamVjdGVkQnVuZGxlVGVzdCgiSW5qZWN0ZWRCdW5kbGVCYXNpY1Rlc3QiKSk7CiAKICAgICBX
S0NvbnRleHRJbmplY3RlZEJ1bmRsZUNsaWVudFYwIGluamVjdGVkQnVuZGxlQ2xpZW50OwogICAg
IG1lbXNldCgmaW5qZWN0ZWRCdW5kbGVDbGllbnQsIDAsIHNpemVvZihpbmplY3RlZEJ1bmRsZUNs
aWVudCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0lu
amVjdGVkQnVuZGxlQmFzaWNfQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUJhc2ljX0J1bmRsZS5jcHAKaW5kZXggNWNjN2E0Zi4uNzY1
MDg0NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVj
dGVkQnVuZGxlQmFzaWNfQnVuZGxlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVCYXNpY19CdW5kbGUuY3BwCkBAIC0yNCwxNSArMjQsMTUg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVU
ZXN0LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0LmgiCiAjaW5jbHVkZSA8
V2ViS2l0L1dLUmV0YWluUHRyLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xh
c3MgSW5qZWN0ZWRCdW5kbGVCYXNpY1Rlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsK
K2NsYXNzIEluamVjdGVkQnVuZGxlQmFzaWNUZXN0IDogcHVibGljIExlZ2FjeUluamVjdGVkQnVu
ZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgSW5qZWN0ZWRCdW5kbGVCYXNpY1Rlc3QoY29uc3Qgc3Rk
OjpzdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50
aWZpZXIpCisgICAgICAgIDogTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCiAg
ICAgewogICAgIH0KIApAQCAtNDQsNiArNDQsNiBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAotc3Rh
dGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8SW5qZWN0ZWRCdW5kbGVCYXNpY1Rlc3Q+
IHJlZ2lzdHJhcigiSW5qZWN0ZWRCdW5kbGVCYXNpY1Rlc3QiKTsKK3N0YXRpYyBMZWdhY3lJbmpl
Y3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPEluamVjdGVkQnVuZGxlQmFzaWNUZXN0PiByZWdpc3Ry
YXIoIkluamVjdGVkQnVuZGxlQmFzaWNUZXN0Iik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Jbmpl
Y3RlZEJ1bmRsZUZyYW1lSGl0VGVzdC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3QuY3BwCmluZGV4IGI2MzVkM2UuLjJjN2Ex
NmYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3Rl
ZEJ1bmRsZUZyYW1lSGl0VGVzdC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL0luamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0LmNwcApAQCAtNTQsNyArNTQsNyBAQCBz
dGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCkK
IAogVEVTVChXZWJLaXQyLCBJbmplY3RlZEJ1bmRsZUZyYW1lSGl0VGVzdCkKIHsKLSAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4
dEZvckluamVjdGVkQnVuZGxlVGVzdCgiSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3RUZXN0Iikp
OworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpj
cmVhdGVDb250ZXh0Rm9yTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KCJJbmplY3RlZEJ1bmRsZUZy
YW1lSGl0VGVzdFRlc3QiKSk7CiAgICAgCiAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29u
dGV4dC5nZXQoKSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9JbmplY3RlZEJ1bmRsZUZyYW1lSGl0VGVzdF9CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0X0J1bmRsZS5j
cHAKaW5kZXggODAwODdmMi4uMzJhMTc4YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0X0J1bmRsZS5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlRnJhbWVI
aXRUZXN0X0J1bmRsZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSAiTGVnYWN5
SW5qZWN0ZWRCdW5kbGVUZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bmNsdWRlIDxXZWJLaXQvV0tCdW5kbGUuaD4KICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVGcmFt
ZVByaXZhdGUuaD4KQEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKLWNsYXNzIEluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0VGVzdCA6IHB1YmxpYyBJbmpl
Y3RlZEJ1bmRsZVRlc3QgeworY2xhc3MgSW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3RUZXN0IDog
cHVibGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgSW5qZWN0ZWRC
dW5kbGVGcmFtZUhpdFRlc3RUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAg
ICAgICA6IEluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQorICAgICAgICA6IExlZ2FjeUlu
amVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAKQEAgLTQ3LDcgKzQ3
LDcgQEAgcHVibGljOgogICAgIFdLQnVuZGxlUmVmIG1fYnVuZGxlOwogfTsKIAotc3RhdGljIElu
amVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8SW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRlc3RUZXN0
PiByZWdpc3RyYXIoIkluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0VGVzdCIpOworc3RhdGljIExl
Z2FjeUluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8SW5qZWN0ZWRCdW5kbGVGcmFtZUhpdFRl
c3RUZXN0PiByZWdpc3RyYXIoIkluamVjdGVkQnVuZGxlRnJhbWVIaXRUZXN0VGVzdCIpOwogCiBz
dGF0aWMgdm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWVDYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYg
cGFnZSwgV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiB1c2VyRGF0YSwgY29uc3Qg
dm9pZCAqY2xpZW50SW5mbykKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dp
bnMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxl
SW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2lucy5jcHAKaW5kZXggYzNkMjkwOC4uYTQ3
MGFjNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVj
dGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2lucy5jcHAKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL0luamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRp
b25Vc2VyRGF0YUNhbGxiYWNrV2lucy5jcHAKQEAgLTQwLDEzICs0MCwxMyBAQCBzdGF0aWMgdm9p
ZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4
dCwgV0tTdHJpbmdSZQogCiBzdGF0aWMgV0tUeXBlUmVmIGdldEluamVjdGVkQnVuZGxlSW5pdGlh
bGl6YXRpb25Vc2VyRGF0YShXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3Qgdm9pZCogY2xpZW50
SW5mbykKIHsKLSAgICByZXR1cm4gVXRpbDo6Y3JlYXRlSW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5
Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRh
dGFDYWxsYmFja1dpbnNUZXN0IiwgIFV0aWw6OnRvV0soIlNldCBpbiB0aGUgZ2V0SW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhIGNhbGxiYWNrIikuZ2V0KCkpOworICAgIHJldHVy
biBVdGlsOjpjcmVhdGVJbml0aWFsaXphdGlvbkRpY3Rpb25hcnlGb3JMZWdhY3lJbmplY3RlZEJ1
bmRsZVRlc3QoIkluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2lu
c1Rlc3QiLCAgVXRpbDo6dG9XSygiU2V0IGluIHRoZSBnZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGEgY2FsbGJhY2siKS5nZXQoKSk7CiB9CiAKIFRFU1QoV2ViS2l0MiwgSW5q
ZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zKQogewotICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250
ZXh0V2l0aEluamVjdGVkQnVuZGxlKCkpOwotICAgIFdLUmV0YWluUHRyPFdLRGljdGlvbmFyeVJl
Zj4gaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUluaXRpYWxp
emF0aW9uRGljdGlvbmFyeUZvckluamVjdGVkQnVuZGxlVGVzdCgiSW5qZWN0ZWRCdW5kbGVJbml0
aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zVGVzdCIsICBVdGlsOjp0b1dLKCJTZXQgd2l0
aCBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVzZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUiKS5n
ZXQoKSkpOworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBV
dGlsOjpjcmVhdGVMZWdhY3lDb250ZXh0V2l0aEluamVjdGVkQnVuZGxlKCkpOworICAgIFdLUmV0
YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gaW5pdGlhbGl6YXRpb25EaWN0aW9uYXJ5KEFkb3B0V0ss
IFV0aWw6OmNyZWF0ZUluaXRpYWxpemF0aW9uRGljdGlvbmFyeUZvckxlZ2FjeUluamVjdGVkQnVu
ZGxlVGVzdCgiSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5z
VGVzdCIsICBVdGlsOjp0b1dLKCJTZXQgd2l0aCBXS0NvbnRleHRTZXRJbml0aWFsaXphdGlvblVz
ZXJEYXRhRm9ySW5qZWN0ZWRCdW5kbGUiKS5nZXQoKSkpOwogICAgIFdLQ29udGV4dFNldEluaXRp
YWxpemF0aW9uVXNlckRhdGFGb3JJbmplY3RlZEJ1bmRsZShjb250ZXh0LmdldCgpLCBpbml0aWFs
aXphdGlvbkRpY3Rpb25hcnkuZ2V0KCkpOwogCiAgICAgV0tDb250ZXh0SW5qZWN0ZWRCdW5kbGVD
bGllbnRWMSBpbmplY3RlZEJ1bmRsZUNsaWVudDsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9JbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFD
YWxsYmFja1dpbnNfQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9JbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNfQnVuZGxl
LmNwcAppbmRleCA3ODhiNmFlLi5mZWY4YjdlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2Fs
bGJhY2tXaW5zX0J1bmRsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL0luamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc19CdW5k
bGUuY3BwCkBAIC0yNCwxNiArMjQsMTYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5qZWN0ZWRC
dW5kbGVUZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxX
ZWJLaXQvV0tSZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFz
cyBJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNUZXN0IDog
cHVibGljIEluamVjdGVkQnVuZGxlVGVzdCB7CitjbGFzcyBJbmplY3RlZEJ1bmRsZUluaXRpYWxp
emF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNUZXN0IDogcHVibGljIExlZ2FjeUluamVjdGVkQnVu
ZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJE
YXRhQ2FsbGJhY2tXaW5zVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKLSAgICAg
ICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICAgICAgOiBMZWdhY3lJbmpl
Y3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCkBAIC00Myw2ICs0Myw2
IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi1zdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdp
c3RlcjxJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGFDYWxsYmFja1dpbnNUZXN0
PiByZWdpc3RyYXIoIkluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNr
V2luc1Rlc3QiKTsKK3N0YXRpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YUNhbGxiYWNrV2luc1Rlc3Q+IHJlZ2lz
dHJhcigiSW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhQ2FsbGJhY2tXaW5zVGVz
dCIpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTG9hZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENh
bGxiYWNrLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2FkQ2FuY2Vs
ZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3BwCmluZGV4IGFjNDAxMjYuLjZlYTJiOTQgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2FkQ2FuY2VsZWRO
b1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9Mb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2suY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIHN0YXRpYyB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXS0NvbnRl
eHRSZWYgY29udGV4dCwgV0tQYWdlUmVmIHBhZ2UsIFdLVVJMCiAKIFRFU1QoV2ViS2l0MiwgTG9h
ZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrKQogewotICAgIFdLUmV0YWluUHRyPFdL
Q29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0
ZWRCdW5kbGVUZXN0KCJMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2tUZXN0Iikp
OworICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dChBZG9wdFdLLCBVdGlsOjpj
cmVhdGVDb250ZXh0Rm9yTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KCJMb2FkQ2FuY2VsZWROb1Nl
cnZlclJlZGlyZWN0Q2FsbGJhY2tUZXN0IikpOwogICAgIAogICAgIFdLQ29udGV4dEluamVjdGVk
QnVuZGxlQ2xpZW50VjAgaW5qZWN0ZWRCdW5kbGVDbGllbnQ7CiAgICAgbWVtc2V0KCZpbmplY3Rl
ZEJ1bmRsZUNsaWVudCwgMCwgc2l6ZW9mKGluamVjdGVkQnVuZGxlQ2xpZW50KSk7CmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTG9hZENhbmNlbGVkTm9TZXJ2
ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvTG9hZENhbmNlbGVkTm9TZXJ2ZXJSZWRpcmVjdENhbGxiYWNrX0J1bmRsZS5jcHAK
aW5kZXggN2E4MGFkOS4uOWE2NWNiOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL0xvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja19CdW5kbGUu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Mb2FkQ2FuY2VsZWRO
b1NlcnZlclJlZGlyZWN0Q2FsbGJhY2tfQnVuZGxlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIK
KyNpbmNsdWRlICJMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlRlc3QuaCIKIApAQCAtMzYsMTAgKzM2LDEwIEBACiAK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKICAgICAKLWNsYXNzIExvYWRDYW5jZWxlZE5vU2Vy
dmVyUmVkaXJlY3RDYWxsYmFja1Rlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK2Ns
YXNzIExvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja1Rlc3QgOiBwdWJsaWMgTGVn
YWN5SW5qZWN0ZWRCdW5kbGVUZXN0IHsKIHB1YmxpYzoKICAgICBMb2FkQ2FuY2VsZWROb1NlcnZl
clJlZGlyZWN0Q2FsbGJhY2tUZXN0KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAg
ICAgICA6IEluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQorICAgICAgICA6IExlZ2FjeUlu
amVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQogICAgIHsKICAgICB9CiAgICAgCkBAIC02Nyw2
ICs2Nyw2IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCi1zdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0
OjpSZWdpc3RlcjxMb2FkQ2FuY2VsZWROb1NlcnZlclJlZGlyZWN0Q2FsbGJhY2tUZXN0PiByZWdp
c3RyYXIoIkxvYWRDYW5jZWxlZE5vU2VydmVyUmVkaXJlY3RDYWxsYmFja1Rlc3QiKTsKK3N0YXRp
YyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPExvYWRDYW5jZWxlZE5vU2VydmVy
UmVkaXJlY3RDYWxsYmFja1Rlc3Q+IHJlZ2lzdHJhcigiTG9hZENhbmNlbGVkTm9TZXJ2ZXJSZWRp
cmVjdENhbGxiYWNrVGVzdCIpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW91c2VNb3ZlQWZ0ZXJD
cmFzaC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW91c2VNb3ZlQWZ0
ZXJDcmFzaC5jcHAKaW5kZXggNDYzYTg1ZC4uNTc5MTNkOCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vdXNlTW92ZUFmdGVyQ3Jhc2guY3BwCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb3VzZU1vdmVBZnRlckNyYXNoLmNwcApA
QCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJl
ZiBwYWdlKQogCiBURVNUKFdlYktpdDIsIE1vdXNlTW92ZUFmdGVyQ3Jhc2gpCiB7Ci0gICAgV0tS
ZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250
ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJNb3VzZU1vdmVBZnRlckNyYXNoVGVzdCIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0
ZUNvbnRleHRGb3JMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoIk1vdXNlTW92ZUFmdGVyQ3Jhc2hU
ZXN0IikpOwogCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAg
ICAgc2V0UGFnZUxvYWRlckNsaWVudCh3ZWJWaWV3LnBhZ2UoKSk7CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL01vdXNlTW92ZUFmdGVyQ3Jh
c2hfQnVuZGxlLmNwcAppbmRleCBhMDc1NjIwLi5jZDE0ZmM5IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTW91c2VNb3ZlQWZ0ZXJDcmFzaF9CdW5kbGUuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Nb3VzZU1vdmVBZnRlckNy
YXNoX0J1bmRsZS5jcHAKQEAgLTI0LDEzICsyNCwxMyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlICJMZWdhY3lJ
bmplY3RlZEJ1bmRsZVRlc3QuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAK
IG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgTW91c2VNb3ZlQWZ0ZXJDcmFzaFRl
c3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK2NsYXNzIE1vdXNlTW92ZUFmdGVyQ3Jh
c2hUZXN0IDogcHVibGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAg
TW91c2VNb3ZlQWZ0ZXJDcmFzaFRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpOwog
CkBAIC0zOCwxMCArMzgsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVSZWYg
bWVzc2FnZUJvZHkpOwogfTsKIAotc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8
TW91c2VNb3ZlQWZ0ZXJDcmFzaFRlc3Q+IHJlZ2lzdHJhcigiTW91c2VNb3ZlQWZ0ZXJDcmFzaFRl
c3QiKTsKK3N0YXRpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPE1vdXNlTW92
ZUFmdGVyQ3Jhc2hUZXN0PiByZWdpc3RyYXIoIk1vdXNlTW92ZUFmdGVyQ3Jhc2hUZXN0Iik7CiAK
IE1vdXNlTW92ZUFmdGVyQ3Jhc2hUZXN0OjpNb3VzZU1vdmVBZnRlckNyYXNoVGVzdChjb25zdCBz
dGQ6OnN0cmluZyYgaWRlbnRpZmllcikKLSAgICA6IEluamVjdGVkQnVuZGxlVGVzdChpZGVudGlm
aWVyKQorICAgIDogTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXQuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHAKaW5kZXggOTEzN2IwMS4uNjQ5
MjA2MSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dC5jcHAKQEAgLTcyLDcg
KzcyLDcgQEAgc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVudChXS1BhZ2VSZWYgcGFnZSkK
IC8vIHRoaXMgdGVzdCBoYXZlIGEgbG9uZy1ydW5uaW5nIHJlc291cmNlLgogVEVTVChXZWJLaXQy
LCBESVNBQkxFRF9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXQpCiB7Ci0gICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRG
b3JJbmplY3RlZEJ1bmRsZVRlc3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFRlc3Qi
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6
OmNyZWF0ZUNvbnRleHRGb3JMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoIk5ld0ZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dFRlc3QiKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhj
b250ZXh0LmdldCgpKTsKICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlscy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHMuY3BwCmluZGV4IDZj
NTcxMTEuLmU2NjZlYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlscy5jcHAKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91
dEZhaWxzLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdlTG9hZGVyQ2xp
ZW50KFdLUGFnZVJlZiBwYWdlKQogCiBURVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZhaWxzKQogewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4
dChBZG9wdFdLLCBVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVUZXN0KCJOZXdG
aXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlsc1Rlc3QiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JMZWdh
Y3lJbmplY3RlZEJ1bmRsZVRlc3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZhaWxz
VGVzdCIpKTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwog
ICAgIHNldFBhZ2VMb2FkZXJDbGllbnQod2ViVmlldy5wYWdlKCkpOwpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxh
eW91dEZhaWxzX0J1bmRsZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHNfQnVuZGxlLmNwcAppbmRleCA2ODJj
YzE1Li40OTZhNzFjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHNfQnVuZGxlLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0RmFpbHNfQnVuZGxlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNpbmNsdWRlICJM
ZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgpAQCAtMzIsMTAgKzMyLDEwIEBA
CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgTmV3Rmlyc3RWaXN1YWxseU5v
bkVtcHR5TGF5b3V0RmFpbHNUZXN0IDogcHVibGljIEluamVjdGVkQnVuZGxlVGVzdCB7CitjbGFz
cyBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlsc1Rlc3QgOiBwdWJsaWMgTGVnYWN5
SW5qZWN0ZWRCdW5kbGVUZXN0IHsKIHB1YmxpYzoKICAgICBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGYWlsc1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgICAg
IDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAgICAgIDogTGVnYWN5SW5qZWN0
ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCiAgICAgewogICAgIH0KIApAQCAtNDYsNiArNDYsNiBA
QCBwdWJsaWM6CiAgICAgCiB9OwogCi1zdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3Rl
cjxOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGYWlsc1Rlc3Q+IHJlZ2lzdHJhcigiTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHNUZXN0Iik7CitzdGF0aWMgTGVnYWN5SW5q
ZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
YWlsc1Rlc3Q+IHJlZ2lzdHJhcigiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RmFpbHNU
ZXN0Iik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JJbWFnZXMuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAKaW5kZXggZDQ1ODIwYS4uZmE1
NTgxZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0Zp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcy5jcHAKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvcklt
YWdlcy5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc3RhdGljIHZvaWQgc2V0UGFnZUxvYWRlckNsaWVu
dChXS1BhZ2VSZWYgcGFnZSkKIC8vIHRoaXMgdGVzdCBoYXZlIGEgbG9uZy1ydW5uaW5nIHJlc291
cmNlLgogVEVTVChXZWJLaXQyLCBESVNBQkxFRF9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlv
dXRGb3JJbWFnZXMpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFk
b3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIk5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc1Rlc3QiKSk7CisgICAgV0tSZXRhaW5QdHI8
V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JMZWdh
Y3lJbmplY3RlZEJ1bmRsZVRlc3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvcklt
YWdlc1Rlc3QiKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgp
KTsKICAgICBzZXRQYWdlTG9hZGVyQ2xpZW50KHdlYlZpZXcucGFnZSgpKTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNfQnVuZGxlLmNw
cAppbmRleCBkNWJmYTUzLi43NjkyZmIzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzX0J1
bmRsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlc19CdW5kbGUuY3BwCkBAIC0yNCw3ICsyNCw3
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxl
VGVzdC5oIgorI2luY2x1ZGUgIkxlZ2FjeUluamVjdGVkQnVuZGxlVGVzdC5oIgogCiAjaW5jbHVk
ZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+
CkBAIC0zMiwxMCArMzIsMTAgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFz
cyBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNUZXN0IDogcHVibGljIElu
amVjdGVkQnVuZGxlVGVzdCB7CitjbGFzcyBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JJbWFnZXNUZXN0IDogcHVibGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCB7CiBwdWJsaWM6
CiAgICAgTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzVGVzdChjb25zdCBz
dGQ6OnN0cmluZyYgaWRlbnRpZmllcikKLSAgICAgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRl
bnRpZmllcikKKyAgICAgICAgOiBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikK
ICAgICB7CiAgICAgfQogCkBAIC00Niw2ICs0Niw2IEBAIHB1YmxpYzoKICAgICAKIH07CiAKLXN0
YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckltYWdlc1Rlc3Q+IHJlZ2lzdHJhcigiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Rm9ySW1hZ2VzVGVzdCIpOworc3RhdGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdDo6
UmVnaXN0ZXI8TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzVGVzdD4gcmVn
aXN0cmFyKCJOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXNUZXN0Iik7CiAK
IH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMu
Y3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlO
b25FbXB0eUxheW91dEZyYW1lcy5jcHAKaW5kZXggYmU2ODgwYi4uZDk0NWQ1MTcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGcmFtZXMuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMuY3BwCkBAIC03NCw3ICs3
NCw3IEBAIHN0YXRpYyB2b2lkIHNldFBhZ2VMb2FkZXJDbGllbnQoV0tQYWdlUmVmIHBhZ2UpCiBU
RVNUKFdlYktpdDIsIE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcykKIHsKICAg
ICBkaWRIaXRSZWxldmFudFJlcGFpbnRlZE9iamVjdHNBcmVhVGhyZXNob2xkQ291bnRlciA9IDA7
Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNy
ZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZyYW1lc1Rlc3QiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250
ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JMZWdhY3lJbmplY3RlZEJ1bmRsZVRl
c3QoIk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc1Rlc3QiKSk7CiAKICAgICBQ
bGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKICAgICBzZXRQYWdlTG9hZGVy
Q2xpZW50KHdlYlZpZXcucGFnZSgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxl
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGcmFtZXNfQnVuZGxlLmNwcAppbmRleCA4YjVjMDY5Li5lZTgzMjliIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzX0J1bmRsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc19C
dW5kbGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgIkxlZ2FjeUluamVjdGVk
QnVuZGxlVGVzdC5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRl
IDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+CkBAIC0zMiwxMCArMzIsMTAgQEAKIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
cmFtZXNUZXN0IDogcHVibGljIEluamVjdGVkQnVuZGxlVGVzdCB7CitjbGFzcyBOZXdGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNUZXN0IDogcHVibGljIExlZ2FjeUluamVjdGVkQnVu
ZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJh
bWVzVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKLSAgICAgICAgOiBJbmplY3Rl
ZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICAgICAgOiBMZWdhY3lJbmplY3RlZEJ1bmRsZVRl
c3QoaWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCkBAIC00Niw2ICs0Niw2IEBAIHB1YmxpYzoK
ICAgICAKIH07CiAKLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPE5ld0ZpcnN0
VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lc1Rlc3Q+IHJlZ2lzdHJhcigiTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzVGVzdCIpOworc3RhdGljIExlZ2FjeUluamVjdGVkQnVu
ZGxlVGVzdDo6UmVnaXN0ZXI8TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzVGVz
dD4gcmVnaXN0cmFyKCJOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXNUZXN0Iik7
CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRfQnVu
ZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9OZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRfQnVuZGxlLmNwcAppbmRleCAyMjZmOWVjLi5lN2ZmMzA2IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0X0J1bmRsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL05ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dF9CdW5kbGUuY3BwCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgIkxlZ2FjeUluamVjdGVkQnVuZGxlVGVzdC5oIgog
CiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5k
bGVQYWdlLmg+CkBAIC0zMiwxMCArMzIsMTAgQEAKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewogCi1jbGFzcyBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRUZXN0IDogcHVibGljIElu
amVjdGVkQnVuZGxlVGVzdCB7CitjbGFzcyBOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRU
ZXN0IDogcHVibGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgTmV3
Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0VGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRp
ZmllcikKLSAgICAgICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICAgICAg
OiBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKICAgICB7CiAgICAgfQogCkBA
IC00Niw2ICs0Niw2IEBAIHB1YmxpYzoKICAgICAKIH07CiAKLXN0YXRpYyBJbmplY3RlZEJ1bmRs
ZVRlc3Q6OlJlZ2lzdGVyPE5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dFRlc3Q+IHJlZ2lz
dHJhcigiTmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0VGVzdCIpOworc3RhdGljIExlZ2Fj
eUluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8TmV3Rmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0VGVzdD4gcmVnaXN0cmFyKCJOZXdGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRUZXN0Iik7
CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYXJlbnRGcmFtZS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvUGFyZW50RnJhbWUuY3BwCmluZGV4IGM4MmI5OTEuLjU3MjNkNGEg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYXJlbnRGcmFt
ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhcmVudEZyYW1l
LmNwcApAQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUNsaWVu
dChXS0NvbnRleHRSZWYgY29udGV4dCkKIAogVEVTVChXZWJLaXQyLCBQYXJlbnRGcmFtZSkKIHsK
LSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNy
ZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlBhcmVudEZyYW1lVGVzdCIpKTsKKyAg
ICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0
ZUNvbnRleHRGb3JMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoIlBhcmVudEZyYW1lVGVzdCIpKTsK
ICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKIAogICAgIFBsYXRm
b3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1BhcmVudEZyYW1lX0J1bmRsZS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFyZW50RnJhbWVfQnVuZGxlLmNwcAppbmRleCBi
MDhlOTM1Li42N2FhZmY1IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdDIvUGFyZW50RnJhbWVfQnVuZGxlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvUGFyZW50RnJhbWVfQnVuZGxlLmNwcApAQCAtMjQsNyArMjQsNyBAQAogICov
CiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIK
KyNpbmNsdWRlICJMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaCIKIAogI2luY2x1ZGUgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgpAQCAtMzYs
NyArMzYsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBzdGF0aWMgV0tSZXRhaW5QdHI8
V0tCdW5kbGVSZWY+IHRlc3RCdW5kbGU7CiBzdGF0aWMgV0tSZXRhaW5QdHI8V0tCdW5kbGVGcmFt
ZVJlZj4gY2hpbGRGcmFtZTsKIAotY2xhc3MgUGFyZW50RnJhbWVUZXN0IDogcHVibGljIEluamVj
dGVkQnVuZGxlVGVzdCB7CitjbGFzcyBQYXJlbnRGcmFtZVRlc3QgOiBwdWJsaWMgTGVnYWN5SW5q
ZWN0ZWRCdW5kbGVUZXN0IHsKIHB1YmxpYzoKICAgICBQYXJlbnRGcmFtZVRlc3QoY29uc3Qgc3Rk
OjpzdHJpbmcmIGlkZW50aWZpZXIpOwogCkBAIC00NSwxMCArNDUsMTAgQEAgcHJpdmF0ZToKICAg
ICAKIH07CiAKLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFBhcmVudEZyYW1l
VGVzdD4gcmVnaXN0cmFyKCJQYXJlbnRGcmFtZVRlc3QiKTsKK3N0YXRpYyBMZWdhY3lJbmplY3Rl
ZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFBhcmVudEZyYW1lVGVzdD4gcmVnaXN0cmFyKCJQYXJlbnRG
cmFtZVRlc3QiKTsKIAogUGFyZW50RnJhbWVUZXN0OjpQYXJlbnRGcmFtZVRlc3QoY29uc3Qgc3Rk
OjpzdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmll
cikKKyAgICA6IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQogewogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFzdGVib2FyZE5v
dGlmaWNhdGlvbnMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFzdGVi
b2FyZE5vdGlmaWNhdGlvbnMubW0KaW5kZXggNDBjNzVhMS4uMWM1MDcyNCAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Bhc3RlYm9hcmROb3RpZmljYXRpb25z
Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9QYXN0ZWJvYXJkTm90
aWZpY2F0aW9ucy5tbQpAQCAtNTksNyArNTksNyBAQCBURVNUKFdlYktpdDIsIFBhc3RlYm9hcmRO
b3RpZmljYXRpb25zKQogewogICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBj
bGVhckNvbnRlbnRzXTsKICAgICAKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRl
eHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIlBh
c3RlYm9hcmROb3RpZmljYXRpb25zVGVzdCIpKTsKKyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRS
ZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JMZWdhY3lJbmplY3Rl
ZEJ1bmRsZVRlc3QoIlBhc3RlYm9hcmROb3RpZmljYXRpb25zVGVzdCIpKTsKICAgICBzZXRJbmpl
Y3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpKTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3
ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyL1Bhc3RlYm9hcmROb3RpZmljYXRpb25zX0J1bmRsZS5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNfQnVuZGxl
LmNwcAppbmRleCA4ZjgyZmNmLi5hZTc4N2Y2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL1Bhc3RlYm9hcmROb3RpZmljYXRpb25zX0J1bmRsZS5jcHAKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Bhc3RlYm9hcmROb3RpZmljYXRp
b25zX0J1bmRsZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5q
ZWN0ZWRCdW5kbGVUZXN0LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2lu
Y2x1ZGUgPFdlYktpdC9XS0FycmF5Lmg+CkBAIC0zNCwxOSArMzQsMTkgQEAKIAogbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBQYXN0ZWJvYXJkTm90aWZpY2F0aW9uc1Rlc3QgOiBw
dWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK2NsYXNzIFBhc3RlYm9hcmROb3RpZmljYXRpb25z
VGVzdCA6IHB1YmxpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QgewogcHVibGljOgogICAgIFBh
c3RlYm9hcmROb3RpZmljYXRpb25zVGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcik7
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlUGFnZShXS0J1bmRsZVJlZiwgV0tCdW5kbGVQ
YWdlUmVmKTsKIH07CiAKLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFBhc3Rl
Ym9hcmROb3RpZmljYXRpb25zVGVzdD4gcmVnaXN0cmFyKCJQYXN0ZWJvYXJkTm90aWZpY2F0aW9u
c1Rlc3QiKTsKK3N0YXRpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFBhc3Rl
Ym9hcmROb3RpZmljYXRpb25zVGVzdD4gcmVnaXN0cmFyKCJQYXN0ZWJvYXJkTm90aWZpY2F0aW9u
c1Rlc3QiKTsKIAogc3RhdGljIHZvaWQgd2lsbFdyaXRlVG9QYXN0ZWJvYXJkKFdLQnVuZGxlUGFn
ZVJlZiBwYWdlLCBXS0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlLCAgY29uc3Qgdm9pZCopCiB7
CiAgICAgaWYgKCFyYW5nZSkKLSAgICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJQYXN0ZWJvYXJk
Tm90aWZpY2F0aW9uVGVzdERvbmVNZXNzYWdlTmFtZSIpLmdldCgpLCBVdGlsOjp0b1dLKCJ3aWxs
V3JpdGV0b1Bhc3RlYm9hcmRGYWlsIikuZ2V0KCkpOworICAgICAgICBXS0J1bmRsZVBvc3RNZXNz
YWdlKExlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6c2hhcmVkKCkuYnVuZGxlKCksIFV0
aWw6OnRvV0soIlBhc3RlYm9hcmROb3RpZmljYXRpb25UZXN0RG9uZU1lc3NhZ2VOYW1lIikuZ2V0
KCksIFV0aWw6OnRvV0soIndpbGxXcml0ZXRvUGFzdGVib2FyZEZhaWwiKS5nZXQoKSk7CiB9CiAK
IHN0YXRpYyB2b2lkIGdldFBhc3RlYm9hcmREYXRhRm9yUmFuZ2UoV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZVJhbmdlSGFuZGxlUmVmIHJhbmdlLCBXS0FycmF5UmVmKiBwYXN0ZWJvYXJkVHlwZXMs
IFdLQXJyYXlSZWYqIHBhc3RlYm9hcmREYXRhLCBjb25zdCB2b2lkKikKQEAgLTU5LDExICs1OSwx
MSBAQCBzdGF0aWMgdm9pZCBnZXRQYXN0ZWJvYXJkRGF0YUZvclJhbmdlKFdLQnVuZGxlUGFnZVJl
ZiwgV0tCdW5kbGVSYW5nZUhhbmRsZVJlZiByYQogCiBzdGF0aWMgdm9pZCBkaWRXcml0ZVRvUGFz
dGVib2FyZChXS0J1bmRsZVBhZ2VSZWYsIGNvbnN0IHZvaWQqKQogewotICAgIFdLQnVuZGxlUG9z
dE1lc3NhZ2UoSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRp
bDo6dG9XSygiUGFzdGVib2FyZE5vdGlmaWNhdGlvblRlc3REb25lTWVzc2FnZU5hbWUiKS5nZXQo
KSwgVXRpbDo6dG9XSygiZGlkV3JpdGVUb1Bhc3RlYm9hcmQiKS5nZXQoKSk7CisgICAgV0tCdW5k
bGVQb3N0TWVzc2FnZShMZWdhY3lJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1
bmRsZSgpLCBVdGlsOjp0b1dLKCJQYXN0ZWJvYXJkTm90aWZpY2F0aW9uVGVzdERvbmVNZXNzYWdl
TmFtZSIpLmdldCgpLCBVdGlsOjp0b1dLKCJkaWRXcml0ZVRvUGFzdGVib2FyZCIpLmdldCgpKTsK
IH0KIAogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnNUZXN0OjpQYXN0ZWJvYXJkTm90aWZpY2F0aW9u
c1Rlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgOiBJbmplY3RlZEJ1bmRs
ZVRlc3QoaWRlbnRpZmllcikKKyAgICA6IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChpZGVudGlm
aWVyKQogewogfQogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseS5j
cHAKaW5kZXggOWRlMTFhMi4uOWQ3ZDlmMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHkuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9SZXNwb25zaXZlbmVzc1RpbWVy
RG9lc250RmlyZUVhcmx5LmNwcApAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgdm9pZCBzZXRQYWdl
TG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQogCiBURVNUKFdlYktpdDIsIFJlc3BvbnNpdmVu
ZXNzVGltZXJEb2VzbnRGaXJlRWFybHkpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVm
PiBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9ySW5qZWN0ZWRCdW5kbGVU
ZXN0KCJSZXNwb25zaXZlbmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdCIpKTsKKyAgICBXS1Jl
dGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRl
eHRGb3JMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoIlJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRG
aXJlRWFybHlUZXN0IikpOwogICAgIHNldEluamVjdGVkQnVuZGxlQ2xpZW50KGNvbnRleHQuZ2V0
KCkpOwogCiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvUmVzcG9uc2l2ZW5lc3NU
aW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1Jlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlfQnVuZGxlLmNwcApp
bmRleCA1MGQ2NjRmLi4yM2ZjZjIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvUmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseV9CdW5kbGUuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9SZXNwb25zaXZlbmVzc1Rp
bWVyRG9lc250RmlyZUVhcmx5X0J1bmRsZS5jcHAKQEAgLTI0LDEzICsyNCwxMyBAQAogICovCiAK
ICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZVRlc3QuaCIKKyNp
bmNsdWRlICJMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QuaCIKIAogI2luY2x1ZGUgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgUmVzcG9u
c2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseVRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVU
ZXN0IHsKK2NsYXNzIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlUZXN0IDogcHVi
bGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgUmVzcG9uc2l2ZW5l
c3NUaW1lckRvZXNudEZpcmVFYXJseVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIp
OwogCkBAIC0zOCwxMCArMzgsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHkpOwogfTsKIAotc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0
ZXI8UmVzcG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseVRlc3Q+IHJlZ2lzdHJhcigiUmVz
cG9uc2l2ZW5lc3NUaW1lckRvZXNudEZpcmVFYXJseVRlc3QiKTsKK3N0YXRpYyBMZWdhY3lJbmpl
Y3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFy
bHlUZXN0PiByZWdpc3RyYXIoIlJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlUZXN0
Iik7CiAKIFJlc3BvbnNpdmVuZXNzVGltZXJEb2VzbnRGaXJlRWFybHlUZXN0OjpSZXNwb25zaXZl
bmVzc1RpbWVyRG9lc250RmlyZUVhcmx5VGVzdChjb25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmll
cikKLSAgICA6IEluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQorICAgIDogTGVnYWN5SW5q
ZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbS5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU2hvdWxkR29Ub0JhY2tGb3J3
YXJkTGlzdEl0ZW0uY3BwCmluZGV4IGYwYmFhY2MuLmE2MjczY2UgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRl
bS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Nob3VsZEdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtLmNwcApAQCAtNjgsNyArNjgsNyBAQCBzdGF0aWMgdm9pZCBzZXRQ
YWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZiBwYWdlKQogCiBURVNUKFdlYktpdDIsIFNob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtKQogewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4g
Y29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVz
dCgiU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0IikpOworICAgIFdLUmV0YWluUHRy
PFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckxl
Z2FjeUluamVjdGVkQnVuZGxlVGVzdCgiU2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1UZXN0
IikpOwogICAgIC8vIEVuYWJsZSB0aGUgcGFnZSBjYWNoZSBzbyB3ZSBjYW4gdGVzdCB0aGUgV0tC
dW5kbGVCYWNrRm9yd2FyZExpc3RJdGVtSXNJblBhZ2VDYWNoZSBBUEkKICAgICBXS0NvbnRleHRT
ZXRDYWNoZU1vZGVsKGNvbnRleHQuZ2V0KCksIGtXS0NhY2hlTW9kZWxEb2N1bWVudEJyb3dzZXIp
OwogCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU2hvdWxk
R29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1fQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwCmlu
ZGV4IGEzOTQ2MzkuLjY0NjkyZDMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9TaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbV9CdW5kbGUuY3BwCisrKyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TaG91bGRHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbV9CdW5kbGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNv
bmZpZy5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgIkxlZ2Fj
eUluamVjdGVkQnVuZGxlVGVzdC5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
ICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+CkBAIC0zMiwxNCArMzIsMTQgQEAKIAog
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCi1jbGFzcyBTaG91bGRHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbVRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK2NsYXNzIFNob3VsZEdv
VG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdCA6IHB1YmxpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRl
c3QgewogcHVibGljOgogICAgIFNob3VsZEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtVGVzdChjb25z
dCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRl
UGFnZShXS0J1bmRsZVJlZiBidW5kbGUsIFdLQnVuZGxlUGFnZVJlZiBwYWdlKTsKIH07CiAKLXN0
YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFNob3VsZEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtVGVzdD4gcmVnaXN0cmFyKCJTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3Qi
KTsKK3N0YXRpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFNob3VsZEdvVG9C
YWNrRm9yd2FyZExpc3RJdGVtVGVzdD4gcmVnaXN0cmFyKCJTaG91bGRHb1RvQmFja0ZvcndhcmRM
aXN0SXRlbVRlc3QiKTsKIAogc3RhdGljIGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0
ZW1DYWxsYmFjayhXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZiBpdGVtLCBXS1R5cGVSZWYqIHVzZXJEYXRhLCBjb25zdCB2b2lkKikKIHsKQEAgLTUxLDcgKzUx
LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW1DYWxsYmFjayhX
S0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlQmFja0YKIH0KIAogU2hvdWxkR29Ub0JhY2tGb3J3YXJk
TGlzdEl0ZW1UZXN0OjpTaG91bGRHb1RvQmFja0ZvcndhcmRMaXN0SXRlbVRlc3QoY29uc3Qgc3Rk
OjpzdHJpbmcmIGlkZW50aWZpZXIpCi0gICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmll
cikKKyAgICA6IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQogewogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3BhY2ViYXJTY3Jv
bGxpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1NwYWNlYmFyU2Ny
b2xsaW5nLmNwcAppbmRleCBlMTYzZDUzLi4xZGRlODgzIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3BhY2ViYXJTY3JvbGxpbmcuY3BwCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TcGFjZWJhclNjcm9sbGluZy5jcHAKQEAgLTQ4
LDcgKzQ4LDcgQEAgc3RhdGljIHZvaWQgZGlkTm90SGFuZGxlS2V5RXZlbnRDYWxsYmFjayhXS1Bh
Z2VSZWYsIFdLTmF0aXZlRXZlbnRQdHIgZXZlbnQsIGNvbnMKIAogVEVTVChXZWJLaXQyLCBTcGFj
ZWJhclNjcm9sbGluZykKIHsKLSAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQo
QWRvcHRXSywgVXRpbDo6Y3JlYXRlQ29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKKyAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQoQWRvcHRXSywgVXRpbDo6Y3JlYXRlTGVn
YWN5Q29udGV4dFdpdGhJbmplY3RlZEJ1bmRsZSgpKTsKIAogICAgIC8vIFR1cm4gb2ZmIHRocmVh
ZGVkIHNjcm9sbGluZzsgc3luY2hyb25vdXNseSB3YWl0aW5nIGZvciB0aGUgbWFpbiB0aHJlYWQg
c2Nyb2xsIHBvc2l0aW9uIHRvCiAgICAgLy8gdXBkYXRlIHVzaW5nIFdLUGFnZUZvcmNlUmVwYWlu
dCB3b3VsZCBiZSBiZXR0ZXIsIGJ1dCBmb3Igc29tZSByZWFzb24gdGhlIHRlc3Qgc3RpbGwgZmFp
bHMgb2NjYXNpb25hbGx5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1N0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkLmNwcAppbmRleCBiNjEzZGQ0Li45YzI4ZmE4IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
U3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkLmNwcApAQCAtNTksNyArNTks
NyBAQCBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0VycgogCiBURVNUKFdlYktpdDIsIFN0b3BMb2FkaW5n
RHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZFRlc3QpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tD
b250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3Rl
ZEJ1bmRsZVRlc3QoIlN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZFRlc3Qi
KSk7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6
OmNyZWF0ZUNvbnRleHRGb3JMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoIlN0b3BMb2FkaW5nRHVy
aW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZFRlc3QiKSk7CiAgICAgc2V0SW5qZWN0ZWRCdW5kbGVD
bGllbnQoY29udGV4dC5nZXQoKSk7CiAKICAgICBQbGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250
ZXh0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9TdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWRfYnVuZGxlLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9TdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQ
cm92aXNpb25hbExvYWRfYnVuZGxlLmNwcAppbmRleCAwODQwM2E2Li45M2U2OTYyIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvU3RvcExvYWRpbmdEdXJpbmdE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkX2J1bmRsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL1N0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZF9i
dW5kbGUuY3BwCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgIkxlZ2FjeUluamVjdGVk
QnVuZGxlVGVzdC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8
V2ViS2l0Mi9XS0J1bmRsZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCdW5kbGVGcmFtZVByaXZh
dGUuaD4KQEAgLTMzLDEwICszMywxMCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAK
LWNsYXNzIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZFRlc3QgOiBwdWJs
aWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK2NsYXNzIFN0b3BMb2FkaW5nRHVyaW5nRGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZFRlc3QgOiBwdWJsaWMgTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0IHsKIHB1
YmxpYzoKICAgICBTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWRUZXN0KGNv
bnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAgICAgICA6IEluamVjdGVkQnVuZGxlVGVz
dChpZGVudGlmaWVyKQorICAgICAgICA6IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChpZGVudGlm
aWVyKQogICAgIHsKICAgICB9CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIFdLQnVu
ZGxlUmVmIG1fYnVuZGxlOwogfTsKIAotc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0
ZXI8U3RvcExvYWRpbmdEdXJpbmdEaWRGYWlsUHJvdmlzaW9uYWxMb2FkVGVzdD4gcmVnaXN0cmFy
KCJTdG9wTG9hZGluZ0R1cmluZ0RpZEZhaWxQcm92aXNpb25hbExvYWRUZXN0Iik7CitzdGF0aWMg
TGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxTdG9wTG9hZGluZ0R1cmluZ0RpZEZh
aWxQcm92aXNpb25hbExvYWRUZXN0PiByZWdpc3RyYXIoIlN0b3BMb2FkaW5nRHVyaW5nRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZFRlc3QiKTsKIAogc3RhdGljIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZFdpdGhFcnJvckZvckZyYW1lQ2FsbGJhY2soV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLQnVu
ZGxlRnJhbWVSZWYgZnJhbWUsIFdLRXJyb3JSZWYsIFdLVHlwZVJlZiosIGNvbnN0IHZvaWQgKmNs
aWVudEluZm8pCiB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDIvVXNlck1lc3NhZ2UuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1Vz
ZXJNZXNzYWdlLmNwcAppbmRleCAyNTg1YTA2Li4wZDM3ZWE3IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvVXNlck1lc3NhZ2UuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Vc2VyTWVzc2FnZS5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKICAgICB7Ci0gICAgICAgIGNv
bnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3Qo
IlVzZXJNZXNzYWdlVGVzdCIpKTsKKyAgICAgICAgY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3Jl
YXRlQ29udGV4dEZvckxlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCgiVXNlck1lc3NhZ2VUZXN0Iikp
OwogICAgICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0LmdldCgpLCB0aGlzKTsK
IAogICAgICAgICB3ZWJWaWV3ID0gYWRvcHRQdHIobmV3IFBsYXRmb3JtV2ViVmlldyhjb250ZXh0
LmdldCgpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
VXNlck1lc3NhZ2VfQnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9Vc2VyTWVzc2FnZV9CdW5kbGUuY3BwCmluZGV4IDI5ZWRlM2QuLjRjYzE0Y2MgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Vc2VyTWVzc2FnZV9CdW5kbGUu
Y3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9Vc2VyTWVzc2FnZV9C
dW5kbGUuY3BwCkBAIC0yNCwxNiArMjQsMTYgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5qZWN0
ZWRCdW5kbGVUZXN0LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogCiBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIFVzZXJNZXNzYWdlVGVzdCA6IHB1YmxpYyBJ
bmplY3RlZEJ1bmRsZVRlc3QgeworY2xhc3MgVXNlck1lc3NhZ2VUZXN0IDogcHVibGljIExlZ2Fj
eUluamVjdGVkQnVuZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgVXNlck1lc3NhZ2VUZXN0KGNvbnN0
IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAgICAgICA6IEluamVjdGVkQnVuZGxlVGVzdChp
ZGVudGlmaWVyKQorICAgICAgICA6IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVy
KQogICAgIHsKICAgICB9CiAKQEAgLTQ3LDYgKzQ3LDYgQEAgcHJpdmF0ZToKICAgICB9CiB9Owog
Ci1zdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxVc2VyTWVzc2FnZVRlc3Q+IHJl
Z2lzdHJhcigiVXNlck1lc3NhZ2VUZXN0Iik7CitzdGF0aWMgTGVnYWN5SW5qZWN0ZWRCdW5kbGVU
ZXN0OjpSZWdpc3RlcjxVc2VyTWVzc2FnZVRlc3Q+IHJlZ2lzdHJhcigiVXNlck1lc3NhZ2VUZXN0
Iik7CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJBcmNoaXZlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJBcmNoaXZlLmNwcAppbmRleCAwNGU3MjA2Li42Y2VkNjQ4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViQXJjaGl2
ZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYkFyY2hpdmUu
Y3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1l
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYsIGNvbnN0IHYKIAogVEVTVChX
ZWJLaXQyLCBXZWJBcmNoaXZlKQogewotICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29u
dGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgi
V2ViQXJjaGl2ZVRlc3QiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0
ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9yTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0
KCJXZWJBcmNoaXZlVGVzdCIpKTsKICAgICBzZXRJbmplY3RlZEJ1bmRsZUNsaWVudChjb250ZXh0
LmdldCgpKTsKIAogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNvbnRleHQuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYkFyY2hpdmVf
QnVuZGxlLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XZWJBcmNoaXZl
X0J1bmRsZS5jcHAKaW5kZXggOGVlNzliMS4uYzI5ZTZlZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dlYkFyY2hpdmVfQnVuZGxlLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2ViQXJjaGl2ZV9CdW5kbGUuY3BwCkBAIC0y
NCw3ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkluamVj
dGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgIkxlZ2FjeUluamVjdGVkQnVuZGxlVGVzdC5oIgog
CiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlIDxXZWJLaXQvV0tCdW5k
bGVQYWdlLmg+CkBAIC0zMiw3ICszMiw3IEBACiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsK
IAotY2xhc3MgV2ViQXJjaGl2ZVRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK2Ns
YXNzIFdlYkFyY2hpdmVUZXN0IDogcHVibGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCB7CiBw
dWJsaWM6CiAgICAgV2ViQXJjaGl2ZVRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIp
OwogCkBAIC00MCwxMCArNDAsMTAgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZU1lc3NhZ2UoV0tCdW5kbGVSZWYsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHkpOwogfTsKIAotc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0
ZXI8V2ViQXJjaGl2ZVRlc3Q+IHJlZ2lzdHJhcigiV2ViQXJjaGl2ZVRlc3QiKTsKK3N0YXRpYyBM
ZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFdlYkFyY2hpdmVUZXN0PiByZWdpc3Ry
YXIoIldlYkFyY2hpdmVUZXN0Iik7CiAKIFdlYkFyY2hpdmVUZXN0OjpXZWJBcmNoaXZlVGVzdChj
b25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKLSAgICA6IEluamVjdGVkQnVuZGxlVGVzdChp
ZGVudGlmaWVyKQorICAgIDogTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxs
TG9hZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2lsbExvYWQuY3Bw
CmluZGV4IDBmMGJmNGMuLjA2Yzg5OGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Mi9XaWxsTG9hZC5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1dpbGxMb2FkLmNwcApAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIHZvaWQgU2V0VXAoKQogICAgIHsKLSAgICAgICAgY29udGV4dCA9IGFkb3B0V0soVXRp
bDo6Y3JlYXRlQ29udGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiV2lsbExvYWRUZXN0IikpOwor
ICAgICAgICBjb250ZXh0ID0gYWRvcHRXSyhVdGlsOjpjcmVhdGVDb250ZXh0Rm9yTGVnYWN5SW5q
ZWN0ZWRCdW5kbGVUZXN0KCJXaWxsTG9hZFRlc3QiKSk7CiAgICAgICAgIHNldEluamVjdGVkQnVu
ZGxlQ2xpZW50KGNvbnRleHQuZ2V0KCksIHRoaXMpOwogCiAgICAgICAgIHdlYlZpZXcgPSBhZG9w
dFB0cihuZXcgUGxhdGZvcm1XZWJWaWV3KGNvbnRleHQuZ2V0KCkpKTsKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxsTG9hZF9CdW5kbGUuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dpbGxMb2FkX0J1bmRsZS5jcHAKaW5kZXgg
MDQwMzljMy4uMTkyMTFiMSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL1dpbGxMb2FkX0J1bmRsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL1dpbGxMb2FkX0J1bmRsZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAj
aW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5j
bHVkZSAiTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0LmgiCiAKICNpbmNsdWRlICJQbGF0Zm9ybVV0
aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYktpdC9XS0J1bmRsZVBhZ2UuaD4KQEAgLTMyLDEwICsz
MiwxMCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKLWNsYXNzIFdpbGxMb2FkVGVz
dCA6IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgeworY2xhc3MgV2lsbExvYWRUZXN0IDogcHVi
bGljIExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgV2lsbExvYWRUZXN0
KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAgICAgICA6IEluamVjdGVkQnVuZGxl
VGVzdChpZGVudGlmaWVyKQorICAgICAgICA6IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChpZGVu
dGlmaWVyKQogICAgIHsKICAgICB9CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgV0tEaWN0aW9uYXJ5U2V0SXRlbShtZXNzYWdlQm9keS5nZXQoKSwgVXRpbDo6dG9XSygiVVJM
UmVxdWVzdFJldHVybiIpLmdldCgpLCByZXF1ZXN0KTsKICAgICAgICAgV0tEaWN0aW9uYXJ5U2V0
SXRlbShtZXNzYWdlQm9keS5nZXQoKSwgVXRpbDo6dG9XSygiVXNlckRhdGFSZXR1cm4iKS5nZXQo
KSwgdXNlckRhdGEpOwogCi0gICAgICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoSW5qZWN0ZWRCdW5k
bGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiV2lsbExvYWRVUkxS
ZXF1ZXN0UmV0dXJuIikuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICAgICAgV0tCdW5k
bGVQb3N0TWVzc2FnZShMZWdhY3lJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1
bmRsZSgpLCBVdGlsOjp0b1dLKCJXaWxsTG9hZFVSTFJlcXVlc3RSZXR1cm4iKS5nZXQoKSwgbWVz
c2FnZUJvZHkuZ2V0KCkpOwogICAgIH0KIAogICAgIHN0YXRpYyB2b2lkIHdpbGxMb2FkRGF0YVJl
cXVlc3QoV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0LCBXS0Rh
dGFSZWYgZGF0YSwgV0tTdHJpbmdSZWYgTUlNRVR5cGUsIFdLU3RyaW5nUmVmIGVuY29kaW5nTmFt
ZSwgV0tVUkxSZWYgdW5yZWFjaGFibGVVUkwsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9p
ZCAqY2xpZW50SW5mbykKQEAgLTYxLDcgKzYxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgV0tEaWN0
aW9uYXJ5U2V0SXRlbShtZXNzYWdlQm9keS5nZXQoKSwgVXRpbDo6dG9XSygiVW5yZWFjaGFibGVV
UkxSZXR1cm4iKS5nZXQoKSwgdW5yZWFjaGFibGVVUkwpOwogICAgICAgICBXS0RpY3Rpb25hcnlT
ZXRJdGVtKG1lc3NhZ2VCb2R5LmdldCgpLCBVdGlsOjp0b1dLKCJVc2VyRGF0YVJldHVybiIpLmdl
dCgpLCB1c2VyRGF0YSk7CiAKLSAgICAgICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1
bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJXaWxsTG9hZERh
dGFSZXF1ZXN0UmV0dXJuIikuZ2V0KCksIG1lc3NhZ2VCb2R5LmdldCgpKTsKKyAgICAgICAgV0tC
dW5kbGVQb3N0TWVzc2FnZShMZWdhY3lJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNoYXJlZCgp
LmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJXaWxsTG9hZERhdGFSZXF1ZXN0UmV0dXJuIikuZ2V0KCks
IG1lc3NhZ2VCb2R5LmdldCgpKTsKIAogICAgIH0KIApAQCAtNzksNiArNzksNiBAQCBwcml2YXRl
OgogICAgIH0KIH07CiAKLXN0YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFdpbGxM
b2FkVGVzdD4gcmVnaXN0cmFyKCJXaWxsTG9hZFRlc3QiKTsKK3N0YXRpYyBMZWdhY3lJbmplY3Rl
ZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPFdpbGxMb2FkVGVzdD4gcmVnaXN0cmFyKCJXaWxsTG9hZFRl
c3QiKTsKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dpbGxTZW5kU3VibWl0RXZlbnQuY3BwIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dpbGxTZW5kU3VibWl0RXZlbnQuY3BwCmlu
ZGV4IGVlNTkzNDYuLmRhZTQzZGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9XaWxsU2VuZFN1Ym1pdEV2ZW50LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvV2lsbFNlbmRTdWJtaXRFdmVudC5jcHAKQEAgLTY4LDcgKzY4LDcg
QEAgc3RhdGljIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRl
eHQpCiAKIFRFU1QoV2ViS2l0MiwgV2lsbFNlbmRTdWJtaXRFdmVudCkKIHsKLSAgICBXS1JldGFp
blB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNvbnRleHRG
b3JJbmplY3RlZEJ1bmRsZVRlc3QoIldpbGxTZW5kU3VibWl0RXZlbnRUZXN0IikpOworICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29u
dGV4dEZvckxlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCgiV2lsbFNlbmRTdWJtaXRFdmVudFRlc3Qi
KSk7CiAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSk7CiAKICAgICBQ
bGF0Zm9ybVdlYlZpZXcgd2ViVmlldyhjb250ZXh0LmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5j
cHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvV2lsbFNlbmRTdWJtaXRFdmVu
dF9CdW5kbGUuY3BwCmluZGV4IDM3ZGIyNzQuLmJkM2NmYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9XaWxsU2VuZFN1Ym1pdEV2ZW50X0J1bmRsZS5jcHAK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL1dpbGxTZW5kU3VibWl0RXZl
bnRfQnVuZGxlLmNwcApAQCAtMjQsMjkgKzI0LDI5IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2luY2x1ZGUgIkxlZ2FjeUlu
amVjdGVkQnVuZGxlVGVzdC5oIgogCiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNp
bmNsdWRlIDxXZWJLaXQvV0tCdW5kbGVQYWdlLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAotY2xhc3MgV2lsbFNlbmRTdWJtaXRFdmVudFRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5k
bGVUZXN0IHsKK2NsYXNzIFdpbGxTZW5kU3VibWl0RXZlbnRUZXN0IDogcHVibGljIExlZ2FjeUlu
amVjdGVkQnVuZGxlVGVzdCB7CiBwdWJsaWM6CiAgICAgV2lsbFNlbmRTdWJtaXRFdmVudFRlc3Qo
Y29uc3Qgc3RkOjpzdHJpbmcmIGlkZW50aWZpZXIpOwogCiAgICAgdmlydHVhbCB2b2lkIGRpZENy
ZWF0ZVBhZ2UoV0tCdW5kbGVSZWYsIFdLQnVuZGxlUGFnZVJlZik7CiB9OwogCi1zdGF0aWMgSW5q
ZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxXaWxsU2VuZFN1Ym1pdEV2ZW50VGVzdD4gcmVnaXN0
cmFyKCJXaWxsU2VuZFN1Ym1pdEV2ZW50VGVzdCIpOworc3RhdGljIExlZ2FjeUluamVjdGVkQnVu
ZGxlVGVzdDo6UmVnaXN0ZXI8V2lsbFNlbmRTdWJtaXRFdmVudFRlc3Q+IHJlZ2lzdHJhcigiV2ls
bFNlbmRTdWJtaXRFdmVudFRlc3QiKTsKIAogc3RhdGljIHZvaWQgd2lsbFNlbmRTdWJtaXRFdmVu
dChXS0J1bmRsZVBhZ2VSZWYsIFdLQnVuZGxlTm9kZUhhbmRsZVJlZiwgV0tCdW5kbGVGcmFtZVJl
ZiwgV0tCdW5kbGVGcmFtZVJlZiwgV0tEaWN0aW9uYXJ5UmVmIHZhbHVlcywgY29uc3Qgdm9pZCop
CiB7Ci0gICAgV0tCdW5kbGVQb3N0TWVzc2FnZShJbmplY3RlZEJ1bmRsZUNvbnRyb2xsZXI6OnNo
YXJlZCgpLmJ1bmRsZSgpLCBVdGlsOjp0b1dLKCJEaWRSZWNlaXZlV2lsbFNlbmRTdWJtaXRFdmVu
dCIpLmdldCgpLCB2YWx1ZXMpOworICAgIFdLQnVuZGxlUG9zdE1lc3NhZ2UoTGVnYWN5SW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5idW5kbGUoKSwgVXRpbDo6dG9XSygiRGlkUmVj
ZWl2ZVdpbGxTZW5kU3VibWl0RXZlbnQiKS5nZXQoKSwgdmFsdWVzKTsKIH0KIAogV2lsbFNlbmRT
dWJtaXRFdmVudFRlc3Q6OldpbGxTZW5kU3VibWl0RXZlbnRUZXN0KGNvbnN0IHN0ZDo6c3RyaW5n
JiBpZGVudGlmaWVyKQotICAgIDogSW5qZWN0ZWRCdW5kbGVUZXN0KGlkZW50aWZpZXIpCisgICAg
OiBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9FZGl0b3JDb21tYW5kcy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvRWRpdG9yQ29tbWFuZHMu
bW0KaW5kZXggZjQ2YWQ5YS4uMzYyYmE1NCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyL21hYy9FZGl0b3JDb21tYW5kcy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0VkaXRvckNvbW1hbmRzLm1tCkBAIC00Miw3ICs0Miw3
IEBAIHN0YXRpYyB2b2lkIGRpZEZpbmlzaExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVS
ZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCopCiAKIFRFU1QoV2ViS2l0MiwgU2Nyb2xsQnlMaW5l
Q29tbWFuZHMpCiB7Ci0gICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0
V0ssIFV0aWw6OmNyZWF0ZUNvbnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CisgICAgV0tSZXRh
aW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0KEFkb3B0V0ssIFV0aWw6OmNyZWF0ZUxlZ2FjeUNv
bnRleHRXaXRoSW5qZWN0ZWRCdW5kbGUoKSk7CiAKICAgICAvLyBUdXJuIG9mZiB0aHJlYWRlZCBz
Y3JvbGxpbmc7IHN5bmNocm9ub3VzbHkgd2FpdGluZyBmb3IgdGhlIG1haW4gdGhyZWFkIHNjcm9s
bCBwb3NpdGlvbiB0bwogICAgIC8vIHVwZGF0ZSB1c2luZyBXS1BhZ2VGb3JjZVJlcGFpbnQgd291
bGQgYmUgYmV0dGVyLCBidXQgZm9yIHNvbWUgcmVhc29uIHRoZSB0ZXN0IHN0aWxsIGZhaWxzIG9j
Y2FzaW9uYWxseS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Mi9tYWMvR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL21hYy9HZXRCYWNraW5nU2NhbGVGYWN0b3IubW0KaW5kZXggZjk0N2E4Yy4uZDlk
M2ExNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9H
ZXRCYWNraW5nU2NhbGVGYWN0b3IubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyL21hYy9HZXRCYWNraW5nU2NhbGVGYWN0b3IubW0KQEAgLTY1LDcgKzY1LDcgQEAgc3Rh
dGljIFJldGFpblB0cjxTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0b3JXaW5kb3c+IGNyZWF0ZVdp
bmRvdygpCiAKIFRFU1QoV2ViS2l0MiwgR2V0QmFja2luZ1NjYWxlRmFjdG9yKQogewotICAgIFdL
UmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3JlYXRlQ29u
dGV4dEZvckluamVjdGVkQnVuZGxlVGVzdCgiR2V0QmFja2luZ1NjYWxlRmFjdG9yVGVzdCIpKTsK
KyAgICBXS1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNy
ZWF0ZUNvbnRleHRGb3JMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoIkdldEJhY2tpbmdTY2FsZUZh
Y3RvclRlc3QiKSk7CiAgICAgc2V0SW5qZWN0ZWRCdW5kbGVDbGllbnQoY29udGV4dC5nZXQoKSk7
CiAgICAgUmV0YWluUHRyPFdLVmlldz4gdmlldyA9IGFkb3B0TlMoW1tXS1ZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29udGV4dFJlZjpjb250ZXh0
LmdldCgpIHBhZ2VHcm91cFJlZjowXSk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0QmFja2luZ1NjYWxlRmFjdG9yX0J1bmRsZS5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvR2V0QmFja2luZ1NjYWxlRmFjdG9y
X0J1bmRsZS5tbQppbmRleCA1N2VlNWQwLi5kODk2NmYwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvbWFjL0dldEJhY2tpbmdTY2FsZUZhY3Rvcl9CdW5kbGUu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9HZXRCYWNraW5n
U2NhbGVGYWN0b3JfQnVuZGxlLm1tCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI2ltcG9ydCAiY29u
ZmlnLmgiCiAKLSNpbXBvcnQgIkluamVjdGVkQnVuZGxlVGVzdC5oIgorI2ltcG9ydCAiTGVnYWN5
SW5qZWN0ZWRCdW5kbGVUZXN0LmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2lt
cG9ydCA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgogI2ltcG9ydCA8YXNzZXJ0Lmg+CiAKIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJIHsKIAotY2xhc3MgR2V0QmFja2luZ1NjYWxlRmFjdG9yVGVzdCA6
IHB1YmxpYyBJbmplY3RlZEJ1bmRsZVRlc3QgeworY2xhc3MgR2V0QmFja2luZ1NjYWxlRmFjdG9y
VGVzdCA6IHB1YmxpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QgewogcHVibGljOgogICAgIEdl
dEJhY2tpbmdTY2FsZUZhY3RvclRlc3QoY29uc3Qgc3RkOjpzdHJpbmcmKTsKIApAQCAtNDMsMTAg
KzQzLDEwIEBAIHByaXZhdGU6CiAgICAgV0tCdW5kbGVQYWdlUmVmIG1fcGFnZTsKIH07CiAKLXN0
YXRpYyBJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPEdldEJhY2tpbmdTY2FsZUZhY3RvclRl
c3Q+IHJlZ2lzdHJhcigiR2V0QmFja2luZ1NjYWxlRmFjdG9yVGVzdCIpOworc3RhdGljIExlZ2Fj
eUluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8R2V0QmFja2luZ1NjYWxlRmFjdG9yVGVzdD4g
cmVnaXN0cmFyKCJHZXRCYWNraW5nU2NhbGVGYWN0b3JUZXN0Iik7CiAKIEdldEJhY2tpbmdTY2Fs
ZUZhY3RvclRlc3Q6OkdldEJhY2tpbmdTY2FsZUZhY3RvclRlc3QoY29uc3Qgc3RkOjpzdHJpbmcm
IGlkZW50aWZpZXIpCi0gICAgOiBJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRpZmllcikKKyAgICA6
IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChpZGVudGlmaWVyKQogICAgICwgbV9wYWdlKDApCiB7
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9S
ZW1vdGVPYmplY3RJbnRlcmZhY2UubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dDJDb2NvYS9SZW1vdGVPYmplY3RJbnRlcmZhY2UubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMWJmMmRmNgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0MkNvY29hL1JlbW90ZU9iamVjdEludGVyZmFjZS5tbQpAQCAtMCwwICsx
LDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRm
b3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBvcnQgPFdl
YktpdC9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKKy8vc3RhdGljIGJvb2wgdGhpbmcgPSBmYWxz
ZTsKKworVEVTVChXS1JlbW90ZU9iamVjdEludGVyZmFjZSwgTWVzc2FnZVJlZ2lzdHJhdGlvbkNy
YXNoKQoreworICAgIFJldGFpblB0cjxfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24+IHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEluamVj
dGVkQnVuZGxlVVJMOltbW05TQnVuZGxlIG1haW5CdW5kbGVdIGJ1bmRsZVVSTF0gVVJMQnlBcHBl
bmRpbmdQYXRoQ29tcG9uZW50OkAiSW5qZWN0ZWRCdW5kbGVUZXN0V2ViS2l0QVBJLmJ1bmRsZSJd
XTsKKworICAgIFJldGFpblB0cjxXS1Byb2Nlc3NQb29sPiBwcm9jZXNzUG9vbCA9IGFkb3B0TlMo
W1tXS1Byb2Nlc3NQb29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQ
b29sLmdldCgpXTsKKworICAgIFJldGFpblB0cjxXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5T
KFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2
MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgTlNVUkxSZXF1
ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIg
c3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIC8vVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZ0aGluZyk7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2No
ZW1lLm1tCmluZGV4IGU5ZDNiYTQuLjM1NTMxM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZS5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL0N1c3RvbVByb3RvY29s
c0ludmFsaWRTY2hlbWUubW0KQEAgLTQ2LDcgKzQ2LDcgQEAgVEVTVChXZWJLaXQyQ3VzdG9tUHJv
dG9jb2xzVGVzdCwgUmVnaXN0ZXJOaWxTY2hlbWUpCiBURVNUKFdlYktpdDJDdXN0b21Qcm90b2Nv
bHNUZXN0LCBMb2FkSW52YWxpZFNjaGVtZSkKIHsKICAgICBbV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyIHJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6QCJjdXN0b20iXTsKLSAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkN1c3RvbVByb3RvY29sSW52YWxpZFNjaGVtZVRl
c3QiKSk7CisgICAgV0tSZXRhaW5QdHI8V0tDb250ZXh0UmVmPiBjb250ZXh0ID0gYWRvcHRXSyhV
dGlsOjpjcmVhdGVDb250ZXh0Rm9yTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0KCJDdXN0b21Qcm90
b2NvbEludmFsaWRTY2hlbWVUZXN0IikpOwogICAgIFBsYXRmb3JtV2ViVmlldyB3ZWJWaWV3KGNv
bnRleHQuZ2V0KCkpOwogCiAgICAgd2ViVmlldy5wbGF0Zm9ybVZpZXcoKS5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLmxvYWREZWxlZ2F0ZSA9IFtbVGVzdEJyb3dzaW5nQ29udGV4dExvYWREZWxl
Z2F0ZSBhbGxvY10gaW5pdFdpdGhCbG9ja1RvUnVuT25Mb2FkOl4oV0tCcm93c2luZ0NvbnRleHRD
b250cm9sbGVyICpzZW5kZXIpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mk9iakMvQ3VzdG9tUHJvdG9jb2xzSW52YWxpZFNjaGVtZV9CdW5kbGUuY3BwIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNJbnZh
bGlkU2NoZW1lX0J1bmRsZS5jcHAKaW5kZXggZjliZDcyNy4uMTA0NDMzMyAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9DdXN0b21Qcm90b2NvbHNJbnZh
bGlkU2NoZW1lX0J1bmRsZS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXQyT2JqQy9DdXN0b21Qcm90b2NvbHNJbnZhbGlkU2NoZW1lX0J1bmRsZS5jcHAKQEAgLTI1LDcg
KzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaW5jbHVkZSAiSW5qZWN0ZWRCdW5k
bGVUZXN0LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5qZWN0ZWRCdW5kbGVUZXN0LmgiCiAjaW5jbHVk
ZSA8V2ViS2l0L1dLQnVuZGxlUGFnZS5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CkBA
IC0zNywxMCArMzcsMTAgQEAgc3RhdGljIFdLQnVuZGxlUGFnZVBvbGljeUFjdGlvbiBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdLQnVuZGxlUGFnZVJlZiwKICAgICByZXR1cm4gV0tC
dW5kbGVQYWdlUG9saWN5QWN0aW9uUGFzc1Rocm91Z2g7CiB9CiAKLWNsYXNzIEN1c3RvbVByb3Rv
Y29sSW52YWxpZFNjaGVtZVRlc3QgOiBwdWJsaWMgSW5qZWN0ZWRCdW5kbGVUZXN0IHsKK2NsYXNz
IEN1c3RvbVByb3RvY29sSW52YWxpZFNjaGVtZVRlc3QgOiBwdWJsaWMgTGVnYWN5SW5qZWN0ZWRC
dW5kbGVUZXN0IHsKIHB1YmxpYzoKICAgICBDdXN0b21Qcm90b2NvbEludmFsaWRTY2hlbWVUZXN0
KGNvbnN0IHN0ZDo6c3RyaW5nJiBpZGVudGlmaWVyKQotICAgICAgICA6IEluamVjdGVkQnVuZGxl
VGVzdChpZGVudGlmaWVyKQorICAgICAgICA6IExlZ2FjeUluamVjdGVkQnVuZGxlVGVzdChpZGVu
dGlmaWVyKQogICAgIHsKICAgICB9CiAKQEAgLTU3LDYgKzU3LDYgQEAgcHJpdmF0ZToKICAgICB9
CiB9OwogCi1zdGF0aWMgSW5qZWN0ZWRCdW5kbGVUZXN0OjpSZWdpc3RlcjxDdXN0b21Qcm90b2Nv
bEludmFsaWRTY2hlbWVUZXN0PiByZWdpc3RyYXIoIkN1c3RvbVByb3RvY29sSW52YWxpZFNjaGVt
ZVRlc3QiKTsKK3N0YXRpYyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPEN1c3Rv
bVByb3RvY29sSW52YWxpZFNjaGVtZVRlc3Q+IHJlZ2lzdHJhcigiQ3VzdG9tUHJvdG9jb2xJbnZh
bGlkU2NoZW1lVGVzdCIpOwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpDL1ByZXZlbnRJbWFnZUxv
YWRXaXRoQXV0b1Jlc2l6aW5nLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQy
T2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZy5tbQppbmRleCBmM2VhNzQ4Li4x
Y2RlMTEyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJPYmpD
L1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmcu
bW0KQEAgLTQ0LDcgKzQ0LDcgQEAgVEVTVChXZWJLaXQyLCBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1
dG9SZXNpemluZ1Rlc3QpCiAgICAgW05TVVJMUHJvdG9jb2wgcmVnaXN0ZXJDbGFzczpbVGVzdFBy
b3RvY29sIGNsYXNzXV07CiAgICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWdpc3Rl
clNjaGVtZUZvckN1c3RvbVByb3RvY29sOltUZXN0UHJvdG9jb2wgc2NoZW1lXV07CiAKLSAgICBX
S1JldGFpblB0cjxXS0NvbnRleHRSZWY+IGNvbnRleHQgPSBhZG9wdFdLKFV0aWw6OmNyZWF0ZUNv
bnRleHRGb3JJbmplY3RlZEJ1bmRsZVRlc3QoIkRlbnlXaWxsU2VuZFJlcXVlc3RUZXN0IikpOwor
ICAgIFdLUmV0YWluUHRyPFdLQ29udGV4dFJlZj4gY29udGV4dCA9IGFkb3B0V0soVXRpbDo6Y3Jl
YXRlQ29udGV4dEZvckxlZ2FjeUluamVjdGVkQnVuZGxlVGVzdCgiRGVueVdpbGxTZW5kUmVxdWVz
dFRlc3QiKSk7CiAgICAgUGxhdGZvcm1XZWJWaWV3IHdlYlZpZXcoY29udGV4dC5nZXQoKSk7CiAK
ICAgICB3ZWJWaWV3LnBsYXRmb3JtVmlldygpLm1pbmltdW1TaXplRm9yQXV0b0xheW91dCA9IE5T
TWFrZVNpemUoNDAwLCAzMDApOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyT2JqQy9QcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemluZ19CdW5kbGUuY3Bw
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyT2JqQy9QcmV2ZW50SW1hZ2VMb2Fk
V2l0aEF1dG9SZXNpemluZ19CdW5kbGUuY3BwCmluZGV4IDllNDc3ODAuLjNjOWEyOWMgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mk9iakMvUHJldmVudEltYWdl
TG9hZFdpdGhBdXRvUmVzaXppbmdfQnVuZGxlLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJPYmpDL1ByZXZlbnRJbWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1bmRs
ZS5jcHAKQEAgLTI0LDcgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiSW5qZWN0ZWRCdW5kbGVUZXN0LmgiCisjaW5jbHVkZSAiTGVnYWN5SW5qZWN0ZWRCdW5k
bGVUZXN0LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbmNsdWRlICJUZXN0
LmgiCiAKQEAgLTM0LDEwICszNCwxMCBAQAogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAg
ICAgCi1jbGFzcyBEZW55V2lsbFNlbmRSZXF1ZXN0VGVzdCA6IHB1YmxpYyBJbmplY3RlZEJ1bmRs
ZVRlc3QgeworY2xhc3MgRGVueVdpbGxTZW5kUmVxdWVzdFRlc3QgOiBwdWJsaWMgTGVnYWN5SW5q
ZWN0ZWRCdW5kbGVUZXN0IHsKIHB1YmxpYzoKICAgICBEZW55V2lsbFNlbmRSZXF1ZXN0VGVzdChj
b25zdCBzdGQ6OnN0cmluZyYgaWRlbnRpZmllcikKLSAgICAgICAgOiBJbmplY3RlZEJ1bmRsZVRl
c3QoaWRlbnRpZmllcikKKyAgICAgICAgOiBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3QoaWRlbnRp
ZmllcikKICAgICB7CiAgICAgfQogICAgIApAQCAtNTksNiArNTksNiBAQCBwdWJsaWM6CiAgICAg
fQogfTsKIAotc3RhdGljIEluamVjdGVkQnVuZGxlVGVzdDo6UmVnaXN0ZXI8RGVueVdpbGxTZW5k
UmVxdWVzdFRlc3Q+IHJlZ2lzdHJhcigiRGVueVdpbGxTZW5kUmVxdWVzdFRlc3QiKTsKK3N0YXRp
YyBMZWdhY3lJbmplY3RlZEJ1bmRsZVRlc3Q6OlJlZ2lzdGVyPERlbnlXaWxsU2VuZFJlcXVlc3RU
ZXN0PiByZWdpc3RyYXIoIkRlbnlXaWxsU2VuZFJlcXVlc3RUZXN0Iik7CiAKIH0gLy8gbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0lu
amVjdGVkQnVuZGxlLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZS5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYTI5YTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZS5oCkBAIC0wLDAg
KzEsMTQgQEAKKy8vCisvLyAgSW5qZWN0ZWRCdW5kbGVDb2NvYS5oCisvLyAgVGVzdFdlYktpdEFQ
SQorLy8KKy8vICBDcmVhdGVkIGJ5IFRpbSBIb3J0b24gb24gOS8xNy8xNC4KKy8vCisvLworCisj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlBy
b2Nlc3NQbHVnSW4uaD4KKworQGludGVyZmFjZSBJbmplY3RlZEJ1bmRsZSA6IE5TT2JqZWN0IDxX
S1dlYlByb2Nlc3NQbHVnSW4+CisKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvbWFjL0luamVjdGVkQnVuZGxlLm0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3Rl
ZEJ1bmRsZS5tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NDIwOTMKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL21hYy9JbmplY3RlZEJ1bmRsZS5t
CkBAIC0wLDAgKzEsNTEgQEAKKy8vCisvLyAgSW5qZWN0ZWRCdW5kbGVDb2NvYS5tCisvLyAgVGVz
dFdlYktpdEFQSQorLy8KKy8vICBDcmVhdGVkIGJ5IFRpbSBIb3J0b24gb24gOS8xNy8xNC4KKy8v
CisvLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkluamVjdGVkQnVuZGxlLmgiCisK
KyNpbXBvcnQgIkluamVjdGVkQnVuZGxlQ29udHJvbGxlci5oIgorI2ltcG9ydCA8V2ViS2l0L1dL
V2ViUHJvY2Vzc1BsdWdJblBhZ2VHcm91cC5oPgorI2ltcG9ydCA8d3RmL0Fzc2VydGlvbnMuaD4K
KworQGltcGxlbWVudGF0aW9uIEluamVjdGVkQnVuZGxlCisKKy0gKHZvaWQpd2ViUHJvY2Vzc1Bs
dWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBsdWdJbkNvbnRyb2xsZXIgaW5p
dGlhbGl6ZVdpdGhPYmplY3Q6KGlkKWluaXRpYWxpemF0aW9uT2JqZWN0Cit7CisgICAgSW5qZWN0
ZWRCdW5kbGVDb250cm9sbGVyOjpzaGFyZWQoKS5pbml0aWFsaXplKHBsdWdJbkNvbnRyb2xsZXIs
IGluaXRpYWxpemF0aW9uT2JqZWN0KTsKKworICAgIE5TTG9nKEAiYXNkZiIpOworfQorCistICh2
b2lkKXdlYlByb2Nlc3NQbHVnSW46KFdLV2ViUHJvY2Vzc1BsdWdJbkNvbnRyb2xsZXIgKilwbHVn
SW5Db250cm9sbGVyIGRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopYnJvd3NlckNvbnRleHRDb250cm9s
bGVyCit7CisgICAgQVNTRVJUX0FSRyhwbHVnSW5Db250cm9sbGVyLCBwbHVnSW5Db250cm9sbGVy
ID09IF9jb250cm9sbGVyKTsKKworICAgIC8qV2ViUHJvY2Vzc1BsdWdJblBhZ2VDb250cm9sbGVy
ICpwYWdlQ29udHJvbGxlcjsKKyAgICBXS1dlYlByb2Nlc3NQbHVnSW5QYWdlR3JvdXAgKnBhZ2VH
cm91cCA9IFticm93c2VyQ29udGV4dENvbnRyb2xsZXIgcGFnZUdyb3VwXTsKKyAgICBpZiAoW1tw
YWdlR3JvdXAgaWRlbnRpZmllcl0gaXNFcXVhbFRvU3RyaW5nOkAiUmVhZGVyIl0pCisgICAgICAg
IHBhZ2VDb250cm9sbGVyID0gW1tSZWFkZXJXZWJQcm9jZXNzUGx1Z0luUGFnZUNvbnRyb2xsZXIg
YWxsb2NdIGluaXRXaXRoUGx1Z0luOnNlbGYgY29udGV4dENvbnRyb2xsZXI6YnJvd3NlckNvbnRl
eHRDb250cm9sbGVyXTsKKyAgICBlbHNlIGlmIChbW3BhZ2VHcm91cCBpZGVudGlmaWVyXSBpc0Vx
dWFsVG9TdHJpbmc6QCJTaXRlSWNvbkRvd25sb2FkZXIiXSkKKyAgICAgICAgcGFnZUNvbnRyb2xs
ZXIgPSBbW1NpdGVJY29uRG93bmxvYWRlcldlYlByb2Nlc3NQbHVnSW5QYWdlQ29udHJvbGxlciBh
bGxvY10gaW5pdFdpdGhQbHVnSW46c2VsZiBjb250ZXh0Q29udHJvbGxlcjpicm93c2VyQ29udGV4
dENvbnRyb2xsZXJdOworICAgIGVsc2UKKyAgICAgICAgcGFnZUNvbnRyb2xsZXIgPSBbW1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyUGFnZUNvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUGx1Z0luOnNl
bGYgY29udGV4dENvbnRyb2xsZXI6YnJvd3NlckNvbnRleHRDb250cm9sbGVyXTsKKyAgICBvYmpj
X3NldEFzc29jaWF0ZWRPYmplY3QoYnJvd3NlckNvbnRleHRDb250cm9sbGVyLCBrQ29udGV4dENv
bnRyb2xsZXJUb1BsdWdJblBhZ2VDb250cm9sbGVyQXNzb2NpYXRpb25LZXksIHBhZ2VDb250cm9s
bGVyLCBPQkpDX0FTU09DSUFUSU9OX1JFVEFJTik7Ki8KK30KKworLSAodm9pZCl3ZWJQcm9jZXNz
UGx1Z0luOihXS1dlYlByb2Nlc3NQbHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciB3
aWxsRGVzdHJveUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJv
d3NlckNvbnRleHRDb250cm9sbGVyICopYnJvd3NlckNvbnRleHRDb250cm9sbGVyCit7CisgICAg
QVNTRVJUX0FSRyhwbHVnSW5Db250cm9sbGVyLCBwbHVnSW5Db250cm9sbGVyID09IF9jb250cm9s
bGVyKTsKKworICAgIC8qV2ViUHJvY2Vzc1BsdWdJblBhZ2VDb250cm9sbGVyICpwYWdlQ29udHJv
bGxlciA9IFtXZWJQcm9jZXNzUGx1Z0luUGFnZUNvbnRyb2xsZXIgcGFnZUNvbnRyb2xsZXJGb3JC
cm93c2VyQ29udGV4dENvbnRyb2xsZXI6YnJvd3NlckNvbnRleHRDb250cm9sbGVyXTsKKyAgICBp
ZiAocGFnZUNvbnRyb2xsZXIpIHsKKyAgICAgICAgW3BhZ2VDb250cm9sbGVyIHdpbGxEZXN0cm95
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOmJyb3dzZXJDb250ZXh0Q29udHJvbGxlcl07CisgICAg
ICAgIG9iamNfc2V0QXNzb2NpYXRlZE9iamVjdChicm93c2VyQ29udGV4dENvbnRyb2xsZXIsIGtD
b250ZXh0Q29udHJvbGxlclRvUGx1Z0luUGFnZUNvbnRyb2xsZXJBc3NvY2lhdGlvbktleSwgbmls
LCBPQkpDX0FTU09DSUFUSU9OX1JFVEFJTik7CisgICAgfSovCit9CisKK0BlbmQKZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5t
bQppbmRleCA1ZDY3MTJhLi4zNTRiYjVjNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9tYWMvSW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyTWFjLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvbWFjL0luamVjdGVkQnVuZGxlQ29udHJvbGxlck1hYy5tbQpAQCAtMjQsMTMgKzI0LDEz
IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCi0jaW1wb3J0ICJJbmplY3RlZEJ1bmRsZUNv
bnRyb2xsZXIuaCIKKyNpbXBvcnQgIkxlZ2FjeUluamVjdGVkQnVuZGxlQ29udHJvbGxlci5oIgog
CiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KIAogbmFtZXNwYWNlIFRlc3RXZWJL
aXRBUEkgewogCi12b2lkIEluamVjdGVkQnVuZGxlQ29udHJvbGxlcjo6cGxhdGZvcm1Jbml0aWFs
aXplKCkKK3ZvaWQgTGVnYWN5SW5qZWN0ZWRCdW5kbGVDb250cm9sbGVyOjpwbGF0Zm9ybUluaXRp
YWxpemUoKQogewogICAgIC8vIFNldCB1cCB1c2VyIGRlZmF1bHRzLgogICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKmFyZ3VtZW50RG9tYWluID0gW1tbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHZvbGF0aWxlRG9tYWluRm9yTmFtZTpOU0FyZ3VtZW50RG9tYWluXSBtdXRhYmxl
Q29weV07Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>