<?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>78224</bug_id>
          
          <creation_ts>2012-02-09 05:13:08 -0800</creation_ts>
          <short_desc>Code generators should support multiple values for the [CallWith=] attribute</short_desc>
          <delta_ts>2012-02-09 17:22:56 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</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>
          
          <blocked>77393</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>553078</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-09 05:13:08 -0800</bug_when>
    <thetext>Currently we can specify only one value for one [CallWith=], like [CallWith=ScriptExecutionContext] or [CallWith=ScriptState].

To reduce redundant IDL attributes, we are planning to support multiple values for [CallWith=], like [CallWith=ScriptExecutionContext|ScriptArguments|CallStack]. In this bug, we make a change on code generators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553085</commentid>
    <comment_count>1</comment_count>
      <attachid>126287</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-09 05:29:30 -0800</bug_when>
    <thetext>Created attachment 126287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553086</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-09 05:30:41 -0800</bug_when>
    <thetext>Attachment 126287 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:326:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:341:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1202:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1215:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1229:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1246:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1264:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:1277:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 8 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553331</commentid>
    <comment_count>3</comment_count>
      <attachid>126287</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-02-09 11:04:59 -0800</bug_when>
    <thetext>Comment on attachment 126287
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=126287&amp;action=review

&gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:641
&gt; +sub CallWithContains

This doesn&apos;t seem specific to CallWith.  Should we give this a more general name like &quot;ExtendedAttributeContains&quot; or &quot;AttributeContains&quot;?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1457
&gt;  sub GenerateCallWith

Should this function error out if there&apos;s something in the CallWith attribute that we don&apos;t understand?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553624</commentid>
    <comment_count>4</comment_count>
      <attachid>126407</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-09 17:08:54 -0800</bug_when>
    <thetext>Created attachment 126407
rebased patch for commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553627</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-09 17:10:52 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 126287 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=126287&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGenerator.pm:641
&gt; &gt; +sub CallWithContains
&gt; 
&gt; This doesn&apos;t seem specific to CallWith.  Should we give this a more general name like &quot;ExtendedAttributeContains&quot; or &quot;AttributeContains&quot;?

Makes sense. Renamed to &quot;ExtendedAttributeContains&quot;.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:1457
&gt; &gt;  sub GenerateCallWith
&gt; 
&gt; Should this function error out if there&apos;s something in the CallWith attribute that we don&apos;t understand?

For now I would like to skip it. I am planning to implement &quot;IDL attribute checker&quot; after cleaning up all IDLs, and include the CallWith values check there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553628</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-09 17:12:05 -0800</bug_when>
    <thetext>Committed r107314: &lt;http://trac.webkit.org/changeset/107314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>553635</commentid>
    <comment_count>7</comment_count>
      <attachid>126287</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-02-09 17:22:56 -0800</bug_when>
    <thetext>Comment on attachment 126287
Patch

Landed manually to avoid style check errors in generated code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126287</attachid>
            <date>2012-02-09 05:29:30 -0800</date>
            <delta_ts>2012-02-09 17:22:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78224-20120209222928.patch</filename>
            <type>text/plain</type>
            <size>76405</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MjA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYThmMjgwZTAyYjRjYjE5
MGQxM2EzM2EzZTU2NDdlOWE5Nzk5OTc1OC4uMjVmNThkMjZkYTdjYTZlZDZlYThhYTA3ZWJkNjVi
MDdkZDhhNWM4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDEyLTAyLTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBDb2RlIGdlbmVyYXRv
cnMgc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgW0NhbGxXaXRoPV0gYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
ODIyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1
cnJlbnRseSB3ZSBjYW4gc3BlY2lmeSBvbmx5IG9uZSB2YWx1ZSBmb3Igb25lIFtDYWxsV2l0aD1d
LAorICAgICAgICBsaWtlIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBvciBbQ2Fs
bFdpdGg9U2NyaXB0U3RhdGVdLgorICAgICAgICBUbyByZWR1Y2UgcmVkdW5kYW50IElETCBhdHRy
aWJ1dGVzLCB3ZSBhcmUgcGxhbm5pbmcgdG8gc3VwcG9ydCBtdWx0aXBsZQorICAgICAgICB2YWx1
ZXMgZm9yIFtDYWxsV2l0aD1dLCBsaWtlIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0
fFNjcmlwdEFyZ3VtZW50c3xDYWxsU3RhY2tdLgorICAgICAgICBUaGlzIHBhdGNoIG1ha2VzIGEg
Y2hhbmdlIG9uIGNvZGUgZ2VuZXJhdG9ycyB0byBzdXBwb3J0IGl0LgorCisgICAgICAgIFRlc3Q6
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbAorICAgICAgICBObyBjaGFuZ2UgaW4g
V2ViS2l0IGJlaGF2aW9yIHNpbmNlIElETCBmaWxlcyBoYXZlIG5vdCB5ZXQgdXNlZCBbQ2FsbFdp
dGg9WHxZfFpdLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBt
OiBNb2RpZmllZCB0byBzdXBwb3J0IFtDYWxsV2l0aD1YfFl8Wl0uCisgICAgICAgIChDYWxsV2l0
aENvbnRhaW5zKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5w
bToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAoR2VuZXJhdGVD
YWxsV2l0aCk6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjayk6CisgICAgICAgIChH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEdlbmVyYXRlQ29u
c3RydWN0b3JEZWNsYXJhdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5p
dGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06Cisg
ICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJHZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVOb3Jt
YWxBdHRyU2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbFdpdGgpOgorICAgICAgICAoR2Vu
ZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcpOgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RPYmouaWRsOiBBZGRlZCB0ZXN0IGNhc2VzIGZvciBbQ2FsbFdpdGg9WHxZfFpdLgor
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmNwcDog
VXBkYXRlZCBydW4tYmluZGluZ3MtdGVzdHMgcmVzdWx0cy4KKyAgICAgICAgKFdlYkRPTVRlc3RP
Ymo6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViRE9NVGVzdE9iajo6c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJET01UZXN0T2JqOjp3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAg
KFdlYkRPTVRlc3RPYmo6OnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAg
ICAoV2ViRE9NVGVzdE9iajo6c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSk6CisgICAgICAgIChXZWJET01UZXN0
T2JqOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9u
KToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
Q1BQL1dlYkRPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcDoKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpf
d2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZSk6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9z
Y3JpcHRfc3RhdGVfb2JqX2V4Y2VwdGlvbik6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfd2l0aF9zcGFj
ZXMpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0
aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3Njcmlw
dF9zdGF0ZV9hdHRyaWJ1dGUpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0
aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFp
c2VzKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1
dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyk6CisgICAgICAg
ICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9h
bmRfc2NyaXB0X3N0YXRlX3dpdGhfc3BhY2VzX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0
X3N0YXRlX3dpdGhfc3BhY2VzX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2NsYXNzX2lu
aXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNw
cDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlUmFpc2VzKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAg
ICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaDoKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tOgorICAgICAgICAoLVtET01UZXN0T2Jq
IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVdKToKKyAg
ICAgICAgKC1bRE9NVGVzdE9iaiBzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNdKToKKyAgICAgICAgKC1b
RE9NVGVzdE9iaiBzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlUmFpc2VzOl0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlXSk6CisgICAgICAgICgt
W0RPTVRlc3RPYmogc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZV0pOgorICAgICAgICAoLVtET01UZXN0T2JqIHdp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25dKToKKyAg
ICAgICAgKC1bRE9NVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc10pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAg
ICAgIChUZXN0T2JqSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFs
Ojp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlQXR0clNl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyR2V0dGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZUF0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
akludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEy
LTAyLTA5ICBSb2xhbmQgU3RlaW5lciAgPHJvbGFuZHN0ZWluZXJAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDcxOTcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KaW5kZXggZDViNmJkZjE5ODg5
NjFiMWJjMDFiZjE0MDdiOTNiYmEwNmJlZWI5Mi4uMTgyMDcxNzI2ZTNjY2UzMjRhOWQ1YjlhNzVm
Mjc4ZDY4MTFhNzZmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvci5wbQpAQCAtNjM4LDQgKzYzOCwxNSBAQCBzdWIgR2VuZXJhdGVDb21waWxl
VGltZUNoZWNrRm9yRW51bXNJZk5lZWRlZAogICAgIHJldHVybiBAY2hlY2tzOwogfQogCitzdWIg
Q2FsbFdpdGhDb250YWlucworeworICAgIG15ICRvYmplY3QgPSBzaGlmdDsKKyAgICBteSAkY2Fs
bFdpdGggPSBzaGlmdDsKKyAgICByZXR1cm4gMCB1bmxlc3MgJGNhbGxXaXRoOworICAgIG15ICRr
ZXl3b3JkID0gc2hpZnQ7CisKKyAgICBteSBAY2FsbFdpdGhLZXl3b3JkcyA9IHNwbGl0IC9ccypc
fFxzKi8sICRjYWxsV2l0aDsKKyAgICByZXR1cm4gZ3JlcCB7ICRfIGVxICRrZXl3b3JkIH0gQGNh
bGxXaXRoS2V5d29yZHM7Cit9CisKIDE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDJlOTE0MjYyZjcwNWQ4NWM0ZGMwNzIw
N2Y1OTIwYWRlNmNjNzM0ZWUuLmNiNDBiZTU0ZGUwZDI0YzhkMmQ4NjEzNThiYTM2ZGFlNGQ2NTIy
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCkBAIC0zMCw3ICszMCw3IEBAIHVzZSBzdHJpY3Q7CiAKIHVzZSBjb25zdGFudCBG
aWxlTmFtZVByZWZpeCA9PiAiSlMiOwogCi1teSAoJGNvZGVHZW5lcmF0b3IpOworbXkgJGNvZGVH
ZW5lcmF0b3I7CiAKIG15ICRtb2R1bGUgPSAiIjsKIG15ICRvdXRwdXREaXIgPSAiIjsKQEAgLTE3
MTYsMTAgKzE3MTYsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAg
ICAgICAgICAjIE9uY2UgSlNET01XcmFwcGVycyBoYXZlIGEgYmFjay1wb2ludGVyIHRvIHRoZSBn
bG9iYWxPYmplY3Qgd2UgY2FuIHBhc3MgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkKICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTIiAuICRjb25z
dHJ1Y3RvclR5cGUgLiAiOjpnZXRDb25zdHJ1Y3RvcihleGVjLCBjYXN0ZWRUaGlzKTtcbiIpOwog
ICAgICAgICAgICAgICAgIH0gZWxzaWYgKCFAeyRhdHRyaWJ1dGUtPmdldHRlckV4Y2VwdGlvbnN9
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG15ICRjYWxsV2l0aCA9ICRhdHRyaWJ1dGUtPnNpZ25h
dHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07Ci0gICAgICAgICAgICAgICAg
ICAgIG15ICRjYWxsV2l0aEFyZyA9ICIiOwotCi0gICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIFVOVVNFRF9QQVJBTShleGVjKTtcbiIpIGlmICghJGNhbGxXaXRoKTsK
KyAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpO1xuIikgaWYgISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNhbGxXaXRoIn07CiAKICAgICAgICAgICAgICAgICAgICAgbXkgJGNhY2hlSW5kZXggPSAw
OwogICAgICAgICAgICAgICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2FjaGVkQXR0cmlidXRlIn0pIHsKQEAgLTE3MjksMTggKzE3MjYsMTYg
QEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gY2FjaGVkVmFsdWU7XG4iKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlmICgkY2FsbFdpdGgpIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICRjYWxsV2l0aEFyZyA9IEdlbmVyYXRlQ2FsbFdpdGgo
JGNhbGxXaXRoLCBcQGltcGxDb250ZW50LCAianNVbmRlZmluZWQoKSIpOwotICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG15IEBjYWxsV2l0aEFyZ3MgPSBHZW5lcmF0
ZUNhbGxXaXRoKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNh
bGxXaXRoIn0sIFxAaW1wbENvbnRlbnQsICJqc1VuZGVmaW5lZCgpIik7CiAKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCRzdmdMaXN0UHJvcGVydHlUeXBlKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZl
VG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJjYXN0
ZWRUaGlzLT5pbXBsKCktPiRpbXBsR2V0dGVyRnVuY3Rpb25OYW1lKCRjYWxsV2l0aEFyZykiLCAi
Y2FzdGVkVGhpcyIpIC4gIjtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0
cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiY2FzdGVkVGhpcy0+aW1wbCgp
LT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwgIiwgQGNhbGxXaXRoQXJncykg
LiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxz
aWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSkgewogICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlU
eXBlJiBpbXBsID0gY2FzdGVkVGhpcy0+aW1wbCgpLT5wcm9wZXJ0eVJlZmVyZW5jZSgpO1xuIik7
CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlU
eXBlIGVxICJmbG9hdCIpIHsgIyBTcGVjaWFsIGNhc2UgZm9yIEpTU1ZHTnVtYmVyCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSByZXN1
bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRpbXBs
Q2xhc3NOYW1lLCAiaW1wbCIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0
dHJpYnV0ZS0+c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgImltcGwuJGltcGxHZXR0ZXJG
dW5jdGlvbk5hbWUoJGNhbGxXaXRoQXJnKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1ZSBy
ZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAsICRp
bXBsQ2xhc3NOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgiIC4gKGpvaW4gIiwg
IiwgQGNhbGxXaXRoQXJncykgLiAiKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAKICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTE3
NTQsOSArMTc0OSw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBsLT4ke2Z1bmN0aW9uTmFtZX0iOwog
ICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAo
JGNhbGxXaXRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1l
bnRzLCAkY2FsbFdpdGhBcmcpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBAY2FsbFdpdGhBcmdzKTsKIAogICAg
ICAgICAgICAgICAgICAgICAgICAgbXkgJGpzVHlwZSA9IE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmli
dXRlLT5zaWduYXR1cmUsIDAsICRpbXBsQ2xhc3NOYW1lLCAiJHtmdW5jdGlvbk5hbWV9KCIgLiBq
b2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiLCAiY2FzdGVkVGhpcyIpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgJGltcGxDbGFzc05hbWUqIGltcGwg
PSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KGNhc3RlZFRoaXMtPmltcGwoKSk7XG4iKTsK
QEAgLTE3NzIsMTQgKzE3NjUsMTAgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHJlc3VsdDtcbiIp
OwogCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGNh
bGxXaXRoID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2Fs
bFdpdGgifTsKICAgICAgICAgICAgICAgICAgICAgbXkgQGFyZ3VtZW50cyA9ICgiZWMiKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7XG4iKTsKIAotICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOyAgICAgICAgICAgICAgICAgICAgCi0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCRjYWxsV2l0aCkgewotICAgICAgICAgICAgICAgICAgICAgICAg
dW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRjYWxsV2l0aCwgXEBpbXBsQ29u
dGVudCwgImpzVW5kZWZpbmVkKCkiKSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1
dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1wbENv
bnRlbnQsICJqc1VuZGVmaW5lZCgpIikpOwogCiAgICAgICAgICAgICAgICAgICAgIGlmICgkc3Zn
UHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgICRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5VHlwZSBpbXBs
KCpjYXN0ZWRUaGlzLT5pbXBsKCkpO1xuIik7CkBAIC0xOTgzLDEwICsxOTcyLDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICRmdW5jdGlvbk5hbWUgPSAiaW1wbC0+JHtmdW5jdGlvbk5hbWV9IjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15
ICRjYWxsV2l0aCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkNhbGxXaXRoIn07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY2FsbFdp
dGgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2hpZnQoQGFyZ3Vt
ZW50cywgR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsIFxAaW1wbENvbnRlbnQsICIiKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRyaWJ1dGUt
PnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1wbENvbnRl
bnQsICIiKSk7CiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAYXJndW1l
bnRzLCAiZWMiKSBpZiBAeyRhdHRyaWJ1dGUtPnNldHRlckV4Y2VwdGlvbnN9OwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2Z1bmN0aW9u
TmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykgLiAiKTtcbiIpOwpAQCAtMjM0MywyMCAr
MjMyOSwyMSBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogc3ViIEdlbmVyYXRlQ2FsbFdp
dGgKIHsKICAgICBteSAkY2FsbFdpdGggPSBzaGlmdDsKKyAgICByZXR1cm4gKCkgdW5sZXNzICRj
YWxsV2l0aDsKICAgICBteSAkb3V0cHV0QXJyYXkgPSBzaGlmdDsKICAgICBteSAkcmV0dXJuVmFs
dWUgPSBzaGlmdDsKLSAgICBteSAkY2FsbFdpdGhBcmcgPSAiQ09NUElMRV9BU1NFUlQoZmFsc2Up
IjsKIAotICAgIGlmICgkY2FsbFdpdGggZXEgIlNjcmlwdFN0YXRlIikgewotICAgICAgICAkY2Fs
bFdpdGhBcmcgPSAiZXhlYyI7Ci0gICAgfSBlbHNpZiAoJGNhbGxXaXRoIGVxICJTY3JpcHRFeGVj
dXRpb25Db250ZXh0IikgeworICAgIG15IEBjYWxsV2l0aEFyZ3M7CisgICAgaWYgKCRjb2RlR2Vu
ZXJhdG9yLT5DYWxsV2l0aENvbnRhaW5zKCRjYWxsV2l0aCwgIlNjcmlwdFN0YXRlIikpIHsKKyAg
ICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAiZXhlYyIpOworICAgIH0KKyAgICBpZiAoJGNvZGVH
ZW5lcmF0b3ItPkNhbGxXaXRoQ29udGFpbnMoJGNhbGxXaXRoLCAiU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCIpKSB7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmICghc2NyaXB0Q29udGV4
dClcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiIgLiAo
JHJldHVyblZhbHVlID8gIiAiIC4gJHJldHVyblZhbHVlIDogIiIpIC4gIjtcbiIpOwotICAgICAg
ICAkY2FsbFdpdGhBcmcgPSAic2NyaXB0Q29udGV4dCI7CisgICAgICAgIHB1c2goQGNhbGxXaXRo
QXJncywgInNjcmlwdENvbnRleHQiKTsKICAgICB9Ci0KLSAgICByZXR1cm4gJGNhbGxXaXRoQXJn
OworICAgIHJldHVybiBAY2FsbFdpdGhBcmdzOwogfQogCiBzdWIgR2VuZXJhdGVBcmd1bWVudHND
b3VudENoZWNrCkBAIC0yNDE4LDkgKzI0MDUsOCBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hl
Y2sKICAgICAgICAgJGltcGxJbmNsdWRlc3siU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIn0gPSAx
OwogICAgIH0KIAotICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRl
bmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKLSAgICBpZiAoJGNhbGxXaXRoIGFuZCAhJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3RvciJ9KSB7
Ci0gICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsIFxA
JG91dHB1dEFycmF5LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpIikpOworICAgIGlm
ICghJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDb25zdHJ1Y3Rv
ciJ9KSB7CisgICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aCgkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAJG91dHB1
dEFycmF5LCAiSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpIikpOwogICAgIH0KIAogICAg
ICRpbXBsSW5jbHVkZXN7IkV4Y2VwdGlvbkNvZGUuaCJ9ID0gMTsKQEAgLTI3MzIsOCArMjcxOCw3
IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKCkKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJcbiIgLiAkaW5kZW50IC4gIkpTQzo6SlNWYWx1ZSByZXN1bHQgPSAi
IC4gTmF0aXZlVG9KU1ZhbHVlKCRmdW5jdGlvbi0+c2lnbmF0dXJlLCAxLCAkaW1wbENsYXNzTmFt
ZSwgJGZ1bmN0aW9uU3RyaW5nLCAiY2FzdGVkVGhpcyIpIC4gIjtcbiIpOwogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgJGluZGVudCAuICJzZXRET01FeGNlcHRpb24oZXhlYywgZWMpO1xuIikg
aWYgQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9OwogCi0gICAgICAgIG15ICRjYWxsV2l0
aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgi
fTsKLSAgICAgICAgaWYgKCRjYWxsV2l0aCBhbmQgJGNhbGxXaXRoIGVxICJTY3JpcHRTdGF0ZSIp
IHsKKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5DYWxsV2l0aENvbnRhaW5zKCRmdW5jdGlv
bi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgIlNjcmlwdFN0
YXRlIikpIHsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAkaW5kZW50IC4gImlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSlcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICRpbmRlbnQgLiAiICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7XG4i
KTsKICAgICAgICAgfQpAQCAtMzI5OCw3ICszMjgzLDYgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JEZWNsYXJhdGlvbgogICAgIG15ICRpbnRlcmZhY2VOYW1lID0gc2hpZnQ7CiAKICAgICBteSAk
Y29uc3RydWN0b3JDbGFzc05hbWUgPSAiJHtjbGFzc05hbWV9Q29uc3RydWN0b3IiOwotICAgIG15
ICRjYWxsV2l0aCA9ICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07
CiAKICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICJjbGFzcyAke2NvbnN0cnVjdG9yQ2xhc3NOYW1l
fSA6IHB1YmxpYyBET01Db25zdHJ1Y3Rvck9iamVjdCB7XG4iKTsKICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICJwcml2YXRlOlxuIik7CkBAIC0zNTI2LDcgKzM1MTAsNyBAQCBFTkQKICAgICAgICAg
ICAgIG15ICRudW1QYXJhbWV0ZXJzID0gQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9OwogICAgICAg
ICAgICAgbXkgKCRkdW1teSwgJHBhcmFtSW5kZXgpID0gR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2so
JG91dHB1dEFycmF5LCAkZnVuY3Rpb24sICRkYXRhTm9kZSwgJG51bVBhcmFtZXRlcnMsICRpbnRl
cmZhY2VOYW1lLCAiY29uc3RydWN0b3JDYWxsYmFjayIsIHVuZGVmLCB1bmRlZiwgdW5kZWYpOwog
Ci0gICAgICAgICAgICBpZiAoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdp
dGgifSAmJiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9IGVxICJT
Y3JpcHRFeGVjdXRpb25Db250ZXh0IikgeworICAgICAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9y
LT5DYWxsV2l0aENvbnRhaW5zKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxX
aXRoIn0sICJTY3JpcHRFeGVjdXRpb25Db250ZXh0IikpIHsKICAgICAgICAgICAgICAgICBwdXNo
KEBjb25zdHJ1Y3RvckFyZ0xpc3QsICJjb250ZXh0Iik7CiAgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBqc0Nv
bnN0cnVjdG9yLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAgICAgICAgICAgICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxuIik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDEw
MDE1YWQzZWFlZDE5ZGQ3ZWFiODI3YTRiNTYyZjJiMDYzNzQyYjAuLjMzYzU1NTFkNzMwNDQ0NTg5
Mjg5ZGRjOGI5ODQwYWM2YTYyZDNlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zMiw3ICszMiw3IEBAIHVzZSBEaWdl
c3Q6Ok1ENTsKIAogdXNlIGNvbnN0YW50IEZpbGVOYW1lUHJlZml4ID0+ICJWOCI7CiAKLW15ICgk
Y29kZUdlbmVyYXRvcik7CitteSAkY29kZUdlbmVyYXRvcjsKIAogbXkgJG1vZHVsZSA9ICIiOwog
bXkgJG91dHB1dERpciA9ICIiOwpAQCAtODY2LDE0ICs4NjYsMTEgQEAgRU5ECiAKICAgICBteSAk
cmV0dXJuVHlwZSA9IEdldFR5cGVGcm9tU2lnbmF0dXJlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSk7
CiAgICAgbXkgJGdldHRlclN0cmluZzsKLSAgICBteSAkY2FsbFdpdGggPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9IHx8ICIiOwogCiAgICAg
aWYgKCRnZXR0ZXJTdHJpbmdVc2VzSW1wKSB7CiAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBA
YXJndW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5HZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1
ZGVzLCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgaWYgKCRjYWxsV2l0
aCkgewotICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRjYWxs
V2l0aCwgXEBpbXBsQ29udGVudERlY2xzLCAiICAgICIsIDAsIDApKTsKLSAgICAgICAgfQorICAg
ICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudERlY2xz
LCAiICAgICIsIDAsIDApKTsKIAogICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICR1
c2VFeGNlcHRpb25zOwogICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiSW1wbGVtZW50ZWRCeSJ9KSB7CkBAIC05MDUsNyArOTAyLDcgQEAgRU5E
CiAgICAgICAgIH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgR2VuZXJhdGVTZXRE
T01FeGNlcHRpb24oIiAgICAiKSk7CiAKLSAgICAgICAgaWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0
U3RhdGUiKSB7CisgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+Q2FsbFdpdGhDb250YWlucygk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCAi
U2NyaXB0U3RhdGUiKSkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAg
ICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigp
KTtcbiIpOwogICAgICAgICB9CkBAIC0xMTE4LDggKzExMTUsNiBAQCBFTkQKICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnREZWNscywgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogICAg
IH0KIAotICAgIG15ICRjYWxsV2l0aCA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0gfHwgIiI7Ci0KICAgICBpZiAoJGltcGxDbGFzc05hbWUg
ZXEgIlNWR051bWJlciIpIHsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAq
aW1wID0gJHJlc3VsdDtcbiIpOwogICAgIH0gZWxzZSB7CkBAIC0xMTQ1LDkgKzExNDAsNyBAQCBF
TkQKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG15ICgkZnVuY3Rpb25OYW1lLCBAYXJn
dW1lbnRzKSA9ICRjb2RlR2VuZXJhdG9yLT5TZXR0ZXJFeHByZXNzaW9uKFwlaW1wbEluY2x1ZGVz
LCAkaW50ZXJmYWNlTmFtZSwgJGF0dHJpYnV0ZSk7CiAKLSAgICAgICAgICAgIGlmICgkY2FsbFdp
dGgpIHsKLSAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgo
JGNhbGxXaXRoLCBcQGltcGxDb250ZW50RGVjbHMsICIgICAgIiwgMSwgMCkpOwotICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRhdHRy
aWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0sIFxAaW1w
bENvbnRlbnREZWNscywgIiAgICAiLCAxLCAwKSk7CiAKICAgICAgICAgICAgIHB1c2goQGFyZ3Vt
ZW50cywgJHJlc3VsdCk7CiAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmICR1
c2VFeGNlcHRpb25zOwpAQCAtMTE2OCw3ICsxMTYxLDcgQEAgRU5ECiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50RGVjbHMsICIgICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7XG4i
KTsKICAgICB9CiAKLSAgICBpZiAoJGNhbGxXaXRoIGVxICJTY3JpcHRTdGF0ZSIpIHsKKyAgICBp
ZiAoJGNvZGVHZW5lcmF0b3ItPkNhbGxXaXRoQ29udGFpbnMoJGF0dHJpYnV0ZS0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgIlNjcmlwdFN0YXRlIikpIHsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9u
KCkpXG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgdGhyb3dF
cnJvcihzdGF0ZS5leGNlcHRpb24oKSk7XG4iKTsKICAgICB9CkBAIC0xNDY0LDMwICsxNDU3LDMx
IEBAIEVORAogc3ViIEdlbmVyYXRlQ2FsbFdpdGgKIHsKICAgICBteSAkY2FsbFdpdGggPSBzaGlm
dDsKKyAgICByZXR1cm4gKCkgdW5sZXNzICRjYWxsV2l0aDsKICAgICBteSAkb3V0cHV0QXJyYXkg
PSBzaGlmdDsKICAgICBteSAkaW5kZW50ID0gc2hpZnQ7CiAgICAgbXkgJHJldHVyblZvaWQgPSBz
aGlmdDsKICAgICBteSAkZW1wdHlDb250ZXh0ID0gc2hpZnQ7Ci0gICAgbXkgJGNhbGxXaXRoQXJn
ID0gIkNPTVBJTEVfQVNTRVJUKGZhbHNlKSI7CiAKLSAgICBpZiAoJGNhbGxXaXRoIGVxICJTY3Jp
cHRTdGF0ZSIpIHsKKyAgICBteSBAY2FsbFdpdGhBcmdzOworICAgIGlmICgkY29kZUdlbmVyYXRv
ci0+Q2FsbFdpdGhDb250YWlucygkY2FsbFdpdGgsICJTY3JpcHRTdGF0ZSIpKSB7CiAgICAgICAg
IGlmICgkZW1wdHlDb250ZXh0KSB7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRp
bmRlbnQgLiAiRW1wdHlTY3JpcHRTdGF0ZSBzdGF0ZTtcbiIpOwotICAgICAgICAgICAgJGNhbGxX
aXRoQXJnID0gIiZzdGF0ZSI7CisgICAgICAgICAgICBwdXNoKEBjYWxsV2l0aEFyZ3MsICImc3Rh
dGUiKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
JGluZGVudCAuICJTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpO1xu
Iik7CiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiaWYgKCFzdGF0
ZSlcbiIpOwogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIiAgICBy
ZXR1cm4iIC4gKCRyZXR1cm5Wb2lkID8gIiIgOiAiIHY4OjpVbmRlZmluZWQoKSIpIC4gIjtcbiIp
OwotICAgICAgICAgICAgJGNhbGxXaXRoQXJnID0gInN0YXRlIjsKKyAgICAgICAgICAgIHB1c2go
QGNhbGxXaXRoQXJncywgInN0YXRlIik7CiAgICAgICAgIH0KLSAgICB9IGVsc2lmICgkY2FsbFdp
dGggZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CisgICAgfQorICAgIGlmICgkY29kZUdl
bmVyYXRvci0+Q2FsbFdpdGhDb250YWlucygkY2FsbFdpdGgsICJTY3JpcHRFeGVjdXRpb25Db250
ZXh0IikpIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0
KCk7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gImlmICghc2Ny
aXB0Q29udGV4dClcbiIpOwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAi
ICAgIHJldHVybiIgLiAoJHJldHVyblZvaWQgPyAiIiA6ICIgdjg6OlVuZGVmaW5lZCgpIikgLiAi
O1xuIik7Ci0gICAgICAgICRjYWxsV2l0aEFyZyA9ICJzY3JpcHRDb250ZXh0IjsKKyAgICAgICAg
cHVzaChAY2FsbFdpdGhBcmdzLCAic2NyaXB0Q29udGV4dCIpOwogICAgIH0KLQotICAgIHJldHVy
biAkY2FsbFdpdGhBcmc7CisgICAgcmV0dXJuIEBjYWxsV2l0aEFyZ3M7CiB9CiAKIHN1YiBHZW5l
cmF0ZUFyZ3VtZW50c0NvdW50Q2hlY2sKQEAgLTMyMDAsMTQgKzMxOTQsMTMgQEAgc3ViIEdlbmVy
YXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkKICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXAtPiR7
bmFtZX0iOwogICAgIH0KIAotICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSB8fCAiIjsKLSAgICBpZiAoJGNhbGxX
aXRoKSB7Ci0gICAgICAgIG15IEBjYWxsV2l0aE91dHB1dCA9ICgpOwotICAgICAgICBwdXNoKEBh
cmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGNhbGxXaXRoLCBcQGNhbGxXaXRoT3V0cHV0LCAk
aW5kZW50LCAwLCAxKSk7Ci0gICAgICAgICRyZXN1bHQgLj0gam9pbigiIiwgQGNhbGxXaXRoT3V0
cHV0KTsKLSAgICAgICAgJGluZGV4Kys7Ci0gICAgICAgICRudW1iZXJPZlBhcmFtZXRlcnMrKwot
ICAgIH0KKyAgICBteSAkY2FsbFdpdGggPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57IkNhbGxXaXRoIn07CisgICAgbXkgQGNhbGxXaXRoT3V0cHV0ID0gKCk7Cisg
ICAgbXkgQGNhbGxXaXRoQXJncyA9IEdlbmVyYXRlQ2FsbFdpdGgoJGNhbGxXaXRoLCBcQGNhbGxX
aXRoT3V0cHV0LCAkaW5kZW50LCAwLCAxKTsKKyAgICAkcmVzdWx0IC49IGpvaW4oIiIsIEBjYWxs
V2l0aE91dHB1dCk7CisgICAgcHVzaChAYXJndW1lbnRzLCBAY2FsbFdpdGhBcmdzKTsKKyAgICAk
aW5kZXggKz0gQGNhbGxXaXRoQXJnczsKKyAgICAkbnVtYmVyT2ZQYXJhbWV0ZXJzICs9IEBjYWxs
V2l0aEFyZ3M7CiAKICAgICBmb3JlYWNoIG15ICRwYXJhbWV0ZXIgKEB7JGZ1bmN0aW9uLT5wYXJh
bWV0ZXJzfSkgewogICAgICAgICBpZiAoJGluZGV4IGVxICRudW1iZXJPZlBhcmFtZXRlcnMpIHsK
QEAgLTMyNDcsMTMgKzMyNDAsMTMgQEAgc3ViIEdlbmVyYXRlRnVuY3Rpb25DYWxsU3RyaW5nKCkK
IAogICAgIGlmICgkcmV0dXJuVHlwZSBlcSAidm9pZCIpIHsKICAgICAgICAgJHJlc3VsdCAuPSAk
aW5kZW50IC4gIiRmdW5jdGlvblN0cmluZztcbiI7Ci0gICAgfSBlbHNpZiAoJGNhbGxXaXRoIGVx
ICJTY3JpcHRTdGF0ZSIgb3IgQHskZnVuY3Rpb24tPnJhaXNlc0V4Y2VwdGlvbnN9KSB7CisgICAg
fSBlbHNpZiAoJGNvZGVHZW5lcmF0b3ItPkNhbGxXaXRoQ29udGFpbnMoJGNhbGxXaXRoLCAiU2Ny
aXB0U3RhdGUiKSBvciBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKICAgICAgICAg
JHJlc3VsdCAuPSAkaW5kZW50IC4gJG5hdGl2ZVJldHVyblR5cGUgLiAiIHJlc3VsdCA9ICRmdW5j
dGlvblN0cmluZztcbiI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgIyBDYW4gaW5saW5lIHRoZSBm
dW5jdGlvbiBjYWxsIGludG8gdGhlIHJldHVybiBzdGF0ZW1lbnQgdG8gYXZvaWQgb3ZlcmhlYWQg
b2YgdXNpbmcgYSBSZWY8PiB0ZW1wb3JhcnkKICAgICAgICAgJHJldHVybiA9ICRmdW5jdGlvblN0
cmluZzsKICAgICAgICAgJHJldHVybklzUmVmID0gMDsKLSAgICAKKwogICAgICAgICBpZiAoJGlt
cGxDbGFzc05hbWUgZXEgIlNWR1RyYW5zZm9ybUxpc3QiIGFuZCBJc1JlZlB0clR5cGUoJHJldHVy
blR5cGUpKSB7CiAgICAgICAgICAgICAkcmV0dXJuID0gIldURjo6Z2V0UHRyKCIgLiAkcmV0dXJu
IC4gIikiOwogICAgICAgICB9CkBAIC0zMjY0LDcgKzMyNTcsNyBAQCBzdWIgR2VuZXJhdGVGdW5j
dGlvbkNhbGxTdHJpbmcoKQogICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAiICAgIGdvdG8g
ZmFpbDtcbiI7CiAgICAgfQogCi0gICAgaWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0U3RhdGUiKSB7
CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5DYWxsV2l0aENvbnRhaW5zKCRjYWxsV2l0aCwgIlNj
cmlwdFN0YXRlIikpIHsKICAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50IC4gImlmIChzdGF0ZS5o
YWRFeGNlcHRpb24oKSlcbiI7CiAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICIgICAgcmV0
dXJuIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCkpO1xuIgogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RP
YmouY3BwCmluZGV4IGQ4MTg3MWZhNmM4NjdlMWI0NDU3NzY0ZTRiNGE3YmRkN2RlOGI1NzUuLjgz
ZTA5YmEwZWYxOGRlMTY0ZGI3ZTJiM2UyNmU5NTE4MWU4ODczNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2Jq
LmNwcApAQCAtNTYxLDYgKzU2MSw1OSBAQCB2b2lkIFdlYkRPTVRlc3RPYmo6OnNldFdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKGNvbnN0IFdlYkRPTVRlcwogICAgIHdl
YkRPTVJhaXNlRXJyb3Ioc3RhdGljX2Nhc3Q8V2ViRE9NRXhjZXB0aW9uQ29kZT4oZWMpKTsKIH0K
IAorV2ViRE9NVGVzdE9iaiBXZWJET01UZXN0T2JqOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKCkgY29uc3QKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAg
ICAgICAgcmV0dXJuIFdlYkRPTVRlc3RPYmooKTsKKworICAgIHJldHVybiB0b1dlYktpdChXVEY6
OmdldFB0cihpbXBsKCktPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGUoKSkpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldFdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoY29uc3QgV2ViRE9NVGVzdE9iaiYg
bmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSkKK3sK
KyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaW1wbCgpLT5zZXRXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKHRvV2ViQ29yZShu
ZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKSk7Cit9
CisKK1dlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcygpIGNvbnN0Cit7CisgICAgaWYgKCFpbXBs
KCkpCisgICAgICAgIHJldHVybiBXZWJET01UZXN0T2JqKCk7CisKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJET01UZXN0T2JqIHJlc3VsdCA9IHRvV2ViS2l0KFdU
Rjo6Z2V0UHRyKGltcGwoKS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcyhlYykpKTsKKyAgICB3ZWJET01SYWlzZUVycm9yKHN0YXRpY19jYXN0
PFdlYkRPTUV4Y2VwdGlvbkNvZGU+KGVjKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9p
ZCBXZWJET01UZXN0T2JqOjpzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzKGNvbnN0IFdlYkRPTVRlc3RPYmomIG5ld1dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpCit7CisgICAgaWYgKCFp
bXBsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIGltcGwoKS0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlcyh0b1dlYkNvcmUobmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyksIGVjKTsKKyAgICB3ZWJET01SYWlzZUVy
cm9yKHN0YXRpY19jYXN0PFdlYkRPTUV4Y2VwdGlvbkNvZGU+KGVjKSk7Cit9CisKK1dlYkRPTVRl
c3RPYmogV2ViRE9NVGVzdE9iajo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIGlmICghaW1wbCgpKQorICAg
ICAgICByZXR1cm4gV2ViRE9NVGVzdE9iaigpOworCisgICAgcmV0dXJuIHRvV2ViS2l0KFdURjo6
Z2V0UHRyKGltcGwoKS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGUoKSkpOworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldFdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKGNv
bnN0IFdlYkRPTVRlc3RPYmomIG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBpbXBsKCktPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKHRvV2ViQ29yZShuZXdXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSkpOworfQorCiBXZWJE
T01TdHJpbmcgV2ViRE9NVGVzdE9iajo6c2NyaXB0U3RyaW5nQXR0cigpIGNvbnN0CiB7CiAgICAg
aWYgKCFpbXBsKCkpCkBAIC05MTksNiArOTcyLDMzIEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6d2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQogICAgIGltcGwoKS0+d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKTsKIH0KIAordm9pZCBXZWJET01UZXN0T2JqOjp3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlKCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaW1wbCgpLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlKCk7Cit9CisKK1dlYkRPTVRlc3RPYmogV2ViRE9NVGVzdE9iajo6d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigpCit7CisgICAgaWYgKCFpbXBs
KCkpCisgICAgICAgIHJldHVybiBXZWJET01UZXN0T2JqKCk7CisKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBXZWJET01UZXN0T2JqIHJlc3VsdCA9IHRvV2ViS2l0KFdU
Rjo6Z2V0UHRyKGltcGwoKS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZU9iakV4Y2VwdGlvbihlYykpKTsKKyAgICB3ZWJET01SYWlzZUVycm9yKHN0YXRpY19jYXN0PFdl
YkRPTUV4Y2VwdGlvbkNvZGU+KGVjKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworV2ViRE9N
VGVzdE9iaiBXZWJET01UZXN0T2JqOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlcygpCit7CisgICAgaWYgKCFpbXBsKCkpCisgICAgICAgIHJldHVybiBX
ZWJET01UZXN0T2JqKCk7CisKKyAgICByZXR1cm4gdG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgp
LT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcygpKSk7
Cit9CisKIHZvaWQgV2ViRE9NVGVzdE9iajo6bWV0aG9kV2l0aE9wdGlvbmFsQXJnKGludCBvcHQp
CiB7CiAgICAgaWYgKCFpbXBsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCmluZGV4IDZmOTEwMWQxMjNmYzJm
MTQ1YjNjOWU2Zjk4ZGU5MmUyNWJlOGE2ZTEuLmE3N2IyOWQ3Y2UyMDQ5ZjM5ZDZhMWM0NTA1MzUx
ZDJlZmQwNmY5ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oCkBAIC0xMjgsNiArMTI4LDEyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhjb25zdCBXZWJE
T01UZXN0T2JqJik7CiAgICAgV2ViRE9NVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlcygpIGNvbnN0OwogICAgIHZvaWQgc2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoY29uc3QgV2ViRE9NVGVzdE9iaiYpOworICAgIFdlYkRP
TVRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZShjb25zdCBXZWJET01UZXN0T2JqJik7CisgICAgV2ViRE9NVGVzdE9i
aiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKGNvbnN0IFdlYkRPTVRlc3RPYmomKTsKKyAgICBXZWJET01U
ZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QXR0cmlidXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShjb25zdCBXZWJET01UZXN0T2JqJik7
CiAgICAgV2ViRE9NU3RyaW5nIHNjcmlwdFN0cmluZ0F0dHIoKSBjb25zdDsKICNpZiBFTkFCTEUo
Q29uZGl0aW9uMSkKICAgICBpbnQgY29uZGl0aW9uYWxBdHRyMSgpIGNvbnN0OwpAQCAtMTgzLDYg
KzE4OSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24o
KTsKICAgICBXZWJET01UZXN0T2JqIHdpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigpOwogICAg
IHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICB2b2lkIHdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoKTsKKyAgICBXZWJET01UZXN0T2JqIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKTsKKyAgICBX
ZWJET01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzKCk7CiAgICAgdm9pZCBtZXRob2RXaXRoT3B0aW9uYWxBcmcoaW50IG9wdCk7CiAgICAg
dm9pZCBtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyhpbnQgbm9uT3B0LCBp
bnQgb3B0KTsKICAgICB2b2lkIG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFs
QXJncyhpbnQgbm9uT3B0LCBpbnQgb3B0MSwgaW50IG9wdDIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcAppbmRleCA1ZjlmOTVmNDRmMzhhYjY2MmY4ZDcyMDdiZTM4YTkxYWU2YzAw
ODk2Li43ZDA1OGY3ZDg2ZmRkMzg0YTFlZDBhZTgyYzU2YTU3ZjNmNzI5MDJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09i
amVjdC9XZWJLaXRET01UZXN0T2JqLmNwcApAQCAtMzA4LDYgKzMwOCw0MiBAQCB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0KFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpCiB9CiAKIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0
aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQorewor
ICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVs
bFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3Jl
KHNlbGYpOworICAgIGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGUoKTsKK30KKworV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9z
Y3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9vYmpfZXhjZXB0aW9uKFdl
YktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvciAqKmVycm9yKQoreworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKHNlbGYsIDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsK
KyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBQYXNzUmVmUHRyPFdlYkNv
cmU6OlRlc3RPYmo+IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihlYykpOworICAgIGlmIChlYykgewor
ICAgICAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAg
ICAgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VC
S0lUX0RPTSIpLCBlY2Rlc2MuY29kZSwgZWNkZXNjLm5hbWUpOworICAgIH0KKyAgICBXZWJLaXRE
T01UZXN0T2JqKiByZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7CisgICAgcmV0dXJuIHJl
czsKK30KKworV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3Jp
cHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRoX3NwYWNlcyhXZWJLaXRE
T01UZXN0T2JqKiBzZWxmKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpU
ZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBQYXNzUmVmUHRyPFdlYkNv
cmU6OlRlc3RPYmo+IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoKSk7CisgICAgV2ViS2l0RE9NVGVzdE9i
aiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOworICAgIHJldHVybiByZXM7Cit9CisK
K3ZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfbWV0aG9kX3dpdGhfb3B0aW9uYWxfYXJnKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIGdsb25nIG9wdCkKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKHNl
bGYpOwpAQCAtMTE1Nyw2ICsxMTkzLDk0IEBAIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhf
c2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NCiAgICAg
fQogfQogCitXZWJLaXRET01UZXN0T2JqKgord2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9z
Y3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsK
KyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6
VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgUGFzc1JlZlB0cjxXZWJD
b3JlOjpUZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKSk7CisgICAgV2ViS2l0RE9NVGVzdE9i
aiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOworICAgIHJldHVybiByZXM7Cit9CisK
K3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250
ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdl
YktpdERPTVRlc3RPYmoqIHZhbHVlKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7Cisg
ICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRl
c3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwo
dmFsdWUpOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBjb252ZXJ0ZWRfdmFsdWUgPSBOVUxMOwor
ICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgIGNvbnZlcnRlZF92YWx1ZSA9IFdlYktp
dDo6Y29yZSh2YWx1ZSk7CisgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwoY29udmVydGVkX3ZhbHVl
KTsKKyAgICB9CisgICAgaXRlbS0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZShjb252ZXJ0ZWRfdmFsdWUpOworfQorCitXZWJLaXRET01UZXN0T2Jq
Kgord2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRf
YW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYs
IEdFcnJvciAqKmVycm9yKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYsIDApOwor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpU
ZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBXZWJDb3JlOjpFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdfcmVzID0g
V1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcyhlYykpOworICAgIGlmIChlYykgeworICAgICAgICBXZWJDb3JlOjpF
eGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZWNkZXNjKGVjKTsKKyAgICAgICAgZ19zZXRfZXJyb3Jf
bGl0ZXJhbChlcnJvciwgZ19xdWFya19mcm9tX3N0cmluZygiV0VCS0lUX0RPTSIpLCBlY2Rlc2Mu
Y29kZSwgZWNkZXNjLm5hbWUpOworICAgIH0KKyAgICBXZWJLaXRET01UZXN0T2JqKiByZXMgPSBX
ZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7CisgICAgcmV0dXJuIHJlczsKK30KKwordm9pZAord2Vi
a2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3Nj
cmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktp
dERPTVRlc3RPYmoqIHZhbHVlLCBHRXJyb3IgKiplcnJvcikKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKHNlbGYpOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnX3Jl
dHVybl9pZl9mYWlsKHZhbHVlKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogY29udmVydGVkX3Zh
bHVlID0gTlVMTDsKKyAgICBpZiAodmFsdWUgIT0gTlVMTCkgeworICAgICAgICBjb252ZXJ0ZWRf
dmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOworICAgICAgICBnX3JldHVybl9pZl9mYWlsKGNv
bnZlcnRlZF92YWx1ZSk7CisgICAgfQorICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGl0ZW0tPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVB
dHRyaWJ1dGVSYWlzZXMoY29udmVydGVkX3ZhbHVlLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAg
ICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgICAg
ICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRf
RE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgfQorfQorCitXZWJLaXRET01U
ZXN0T2JqKgord2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2Nv
bnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRoX3NwYWNlc19hdHRyaWJ1dGUoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChzZWxmLCAwKTsKKyAgICBX
ZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9i
aiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpU
ZXN0T2JqPiBnX3JlcyA9IFdURjo6Z2V0UHRyKGl0ZW0tPndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCkpOworICAgIFdlYktpdERPTVRl
c3RPYmoqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKTsKKyAgICByZXR1cm4gcmVzOwor
fQorCit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25f
Y29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX3dpdGhfc3BhY2VzX2F0dHJpYnV0ZShXZWJLaXRET01U
ZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSkKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKHNlbGYpOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsK
KyAgICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBn
X3JldHVybl9pZl9mYWlsKHZhbHVlKTsKKyAgICBXZWJDb3JlOjpUZXN0T2JqICogY29udmVydGVk
X3ZhbHVlID0gTlVMTDsKKyAgICBpZiAodmFsdWUgIT0gTlVMTCkgeworICAgICAgICBjb252ZXJ0
ZWRfdmFsdWUgPSBXZWJLaXQ6OmNvcmUodmFsdWUpOworICAgICAgICBnX3JldHVybl9pZl9mYWls
KGNvbnZlcnRlZF92YWx1ZSk7CisgICAgfQorICAgIGl0ZW0tPnNldFdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKGNvbnZlcnRlZF92YWx1
ZSk7Cit9CisKIGdjaGFyKgogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfc2NyaXB0X3N0cmluZ19h
dHRyKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCiB7CkBAIC0xNDEwLDYgKzE1MzQsOSBAQCBlbnVt
IHsKICAgICBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FUVFJJQlVURSwKICAg
ICBQUk9QX1dJVEhfU0NSSVBUX1NUQVRFX0FUVFJJQlVURV9SQUlTRVMsCiAgICAgUFJPUF9XSVRI
X1NDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9BVFRSSUJVVEVfUkFJU0VTLAorICAgIFBST1BfV0lU
SF9TQ1JJUFRfRVhFQ1VUSU9OX0NPTlRFWFRfQU5EX1NDUklQVF9TVEFURV9BVFRSSUJVVEUsCisg
ICAgUFJPUF9XSVRIX1NDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9BTkRfU0NSSVBUX1NUQVRFX0FU
VFJJQlVURV9SQUlTRVMsCisgICAgUFJPUF9XSVRIX1NDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9B
TkRfU0NSSVBUX1NUQVRFX1dJVEhfU1BBQ0VTX0FUVFJJQlVURSwKICAgICBQUk9QX1NDUklQVF9T
VFJJTkdfQVRUUiwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICBQUk9QX0NPTkRJVElPTkFM
X0FUVFIxLApAQCAtMTc1MCw2ICsxODc3LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAg
ICAgICAgIGdfdmFsdWVfc2V0X29iamVjdCh2YWx1ZSwgV2ViS2l0OjpraXQocHRyLmdldCgpKSk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBST1BfV0lUSF9TQ1JJUFRfRVhFQ1VU
SU9OX0NPTlRFWFRfQU5EX1NDUklQVF9TVEFURV9BVFRSSUJVVEU6CisgICAgeworICAgICAgICBS
ZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gcHRyID0gY29yZVNlbGYtPndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKTsKKyAgICAgICAgZ192YWx1ZV9zZXRf
b2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChwdHIuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgUFJPUF9XSVRIX1NDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9BTkRfU0NS
SVBUX1NUQVRFX0FUVFJJQlVURV9SQUlTRVM6CisgICAgeworICAgICAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IHB0ciA9
IGNvcmVTZWxmLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlUmFpc2VzKGVjKTsKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6
OmtpdChwdHIuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9X
SVRIX1NDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9BTkRfU0NSSVBUX1NUQVRFX1dJVEhfU1BBQ0VT
X0FUVFJJQlVURToKKyAgICB7CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBwdHIg
PSBjb3JlU2VsZi0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUoKTsKKyAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJL
aXQ6OmtpdChwdHIuZ2V0KCkpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGNhc2UgUFJP
UF9TQ1JJUFRfU1RSSU5HX0FUVFI6CiAgICAgewogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5n
KHZhbHVlLCBjb252ZXJ0VG9VVEY4U3RyaW5nKGNvcmVTZWxmLT5zY3JpcHRTdHJpbmdBdHRyKCkp
KTsKQEAgLTIwNjQsNiArMjIxMCwyNyBAQCBHX01BWExPTkcsIC8qIG1heCAqLwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRf
VFlQRV9ET01fVEVTVF9PQkosIC8qIGdvYmplY3QgdHlwZSAqLwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVB
RFdSSVRFKSk7CiAgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xh
c3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQUk9QX1dJVEhfU0NSSVBU
X0VYRUNVVElPTl9DT05URVhUX0FORF9TQ1JJUFRfU1RBVEVfQVRUUklCVVRFLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2l0aC1zY3Jp
cHQtZXhlY3V0aW9uLWNvbnRleHQtYW5kLXNjcmlwdC1zdGF0ZS1hdHRyaWJ1dGUiLCAvKiBuYW1l
ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0ZXN0X29ial93aXRoLXNjcmlwdC1leGVjdXRpb24tY29udGV4dC1hbmQtc2NyaXB0
LXN0YXRlLWF0dHJpYnV0ZSIsIC8qIHNob3J0IGRlc2NyaXB0aW9uICovCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWFkLXdyaXRl
ICBXZWJLaXRET01UZXN0T2JqKiBUZXN0T2JqLndpdGgtc2NyaXB0LWV4ZWN1dGlvbi1jb250ZXh0
LWFuZC1zY3JpcHQtc3RhdGUtYXR0cmlidXRlIiwgLyogbG9uZ2VyIC0gY291bGQgZG8gd2l0aCBz
b21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0RPTV9URVNUX09CSiwg
LyogZ29iamVjdCB0eXBlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsKKyAgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFBST1BfV0lUSF9TQ1JJUFRfRVhFQ1VUSU9OX0NPTlRFWFRf
QU5EX1NDUklQVF9TVEFURV9BVFRSSUJVVEVfUkFJU0VTLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCgid2l0aC1zY3JpcHQtZXhlY3V0aW9u
LWNvbnRleHQtYW5kLXNjcmlwdC1zdGF0ZS1hdHRyaWJ1dGUtcmFpc2VzIiwgLyogbmFtZSAqLwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidGVzdF9vYmpfd2l0aC1zY3JpcHQtZXhlY3V0aW9uLWNvbnRleHQtYW5kLXNjcmlwdC1zdGF0
ZS1hdHRyaWJ1dGUtcmFpc2VzIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlYWQtd3Jp
dGUgIFdlYktpdERPTVRlc3RPYmoqIFRlc3RPYmoud2l0aC1zY3JpcHQtZXhlY3V0aW9uLWNvbnRl
eHQtYW5kLXNjcmlwdC1zdGF0ZS1hdHRyaWJ1dGUtcmFpc2VzIiwgLyogbG9uZ2VyIC0gY291bGQg
ZG8gd2l0aCBzb21lIGV4dHJhIGRvYyBzdHVmZiBoZXJlICovCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9UWVBFX0RPTV9U
RVNUX09CSiwgLyogZ29iamVjdCB0eXBlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEV1JJVEUpKTsK
KyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RDbGFzcywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1BfV0lUSF9TQ1JJUFRfRVhFQ1VUSU9O
X0NPTlRFWFRfQU5EX1NDUklQVF9TVEFURV9XSVRIX1NQQUNFU19BVFRSSUJVVEUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJ3aXRoLXNj
cmlwdC1leGVjdXRpb24tY29udGV4dC1hbmQtc2NyaXB0LXN0YXRlLXdpdGgtc3BhY2VzLWF0dHJp
YnV0ZSIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX3dpdGgtc2NyaXB0LWV4ZWN1dGlvbi1jb250
ZXh0LWFuZC1zY3JpcHQtc3RhdGUtd2l0aC1zcGFjZXMtYXR0cmlidXRlIiwgLyogc2hvcnQgZGVz
Y3JpcHRpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInJlYWQtd3JpdGUgIFdlYktpdERPTVRlc3RPYmoqIFRlc3RPYmoud2l0
aC1zY3JpcHQtZXhlY3V0aW9uLWNvbnRleHQtYW5kLXNjcmlwdC1zdGF0ZS13aXRoLXNwYWNlcy1h
dHRyaWJ1dGUiLCAvKiBsb25nZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZm
IGhlcmUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfT0JKLCAvKiBnb2JqZWN0IHR5cGUgKi8K
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxf
cHJvcGVydHkoZ29iamVjdENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUFJPUF9TQ1JJUFRfU1RSSU5HX0FUVFIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKCJzY3JpcHQtc3RyaW5nLWF0dHIiLCAvKiBuYW1l
ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJ0ZXN0X29ial9zY3JpcHQtc3RyaW5nLWF0dHIiLCAvKiBzaG9ydCBkZXNjcmlwdGlv
biAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dP
YmplY3QvV2ViS2l0RE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCmluZGV4IGYxMThkZDg4MGQwZTU0NzFj
NzVmZDVlNjM3ZTZhODgxNGZmNTVkMTQuLjlkYmViNzljZTRjMzcxNThkMWZmM2ZiMWMzZjdmMTBh
NWE5ZjllNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKQEAgLTIyNiw2ICsyMjYs
MzcgQEAgV0VCS0lUX0FQSSB2b2lkCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X2V4
ZWN1dGlvbl9jb250ZXh0KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOwogCiAvKioKKyAqIHdlYmtp
dF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9z
dGF0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczoKKyAq
CisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9l
eGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYp
OworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2Nv
bnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9vYmpfZXhjZXB0aW9uOgorICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RPYmoKKyAqIEBlcnJvcjogI0dFcnJvcgorICoKKyAqIFJldHVybnM6ICh0cmFuc2Zl
ciBub25lKToKKyAqCisqKi8KK1dFQktJVF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9k
b21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0
ZV9vYmpfZXhjZXB0aW9uKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvciAqKmVycm9yKTsK
KworLyoqCisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250
ZXh0X2FuZF9zY3JpcHRfc3RhdGVfd2l0aF9zcGFjZXM6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9N
VGVzdE9iagorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisqKi8KK1dFQktJ
VF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRf
ZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRoX3NwYWNlcyhXZWJLaXRET01U
ZXN0T2JqKiBzZWxmKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX21ldGhvZF93aXRo
X29wdGlvbmFsX2FyZzoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCiAgKiBAb3B0OiBB
ICNnbG9uZwpAQCAtMTAyMCw2ICsxMDUxLDcxIEBAIFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2Rv
bV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRlX3Jh
aXNlcyhXZWJLaXRET01UZXN0T2JqKiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSwgR0Vy
cm9yICoqZXJyb3IpOwogCiAvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2Ny
aXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlOgorICogQHNl
bGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6
CisgKgorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rlc3Rf
b2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX2F0
dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9tX3Rl
c3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRl
X2F0dHJpYnV0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEg
I1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgor
KiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0
X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlKFdlYktpdERPTVRl
c3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlKTsKKworLyoqCisgKiB3ZWJraXRf
ZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0
X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXM6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagor
ICogQGVycm9yOiAjR0Vycm9yCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgorICoK
KyoqLworV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgord2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1
dGVfcmFpc2VzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIEdFcnJvciAqKmVycm9yKTsKKworLyoq
CisgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4
dF9hbmRfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXM6CisgKiBAc2VsZjogQSAjV2ViS2l0
RE9NVGVzdE9iagorICogQHZhbHVlOiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAZXJyb3I6ICNH
RXJyb3IKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRf
QVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9j
b250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlcyhXZWJLaXRET01UZXN0T2Jq
KiBzZWxmLCBXZWJLaXRET01UZXN0T2JqKiB2YWx1ZSwgR0Vycm9yICoqZXJyb3IpOworCisvKioK
KyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0
X2FuZF9zY3JpcHRfc3RhdGVfd2l0aF9zcGFjZXNfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dl
YktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6CisgKgorKiov
CitXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93
aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX3dpdGhfc3BhY2Vz
X2F0dHJpYnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKTsKKworLyoqCisgKiB3ZWJraXRfZG9t
X3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0
YXRlX3dpdGhfc3BhY2VzX2F0dHJpYnV0ZToKKyAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2Jq
CisgKiBAdmFsdWU6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNm
ZXIgbm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIHZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpf
c2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfd2l0aF9z
cGFjZXNfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoq
IHZhbHVlKTsKKworLyoqCiAgKiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zY3JpcHRfc3RyaW5n
X2F0dHI6CiAgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagogICoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXgg
OThlNzliM2UwNzFiZTgwOGQ3ZThhZDk4YmNhNDkzYTk5OWY0ZGFmMC4uOWQwNGE5ZTE1NDU4N2Nj
NjIwZGQzNGNjMTg1N2E0ODNiYzk5M2NiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTEwOSw2ICsxMDksOSBA
QCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqVGFibGVWYWx1ZXNbXSA9CiAg
ICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUiLCBEb250RGVsZXRlLCAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9i
aldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlKSwgKGludHB0cl90KXNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlLCBOb0ludHJpbnNpYyB9LAog
ICAgIHsgIndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsIERvbnREZWxldGUsIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqV2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSwgKGludHB0cl90KXNldEpTVGVzdE9ialdpdGhT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcywgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyIsIERvbnREZWxldGUsIChpbnRwdHJf
dClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMpLCAoaW50cHRyX3Qpc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMsIE5vSW50cmluc2lj
IH0sCisgICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMiLCBE
b250RGVsZXRlLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcywgTm9JbnRyaW5zaWMgfSwKKyAgICB7
ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZSIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpLCAoaW50cHRyX3Qpc2V0SlNUZXN0T2JqV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUsIE5vSW50
cmluc2ljIH0sCiAgICAgeyAic2NyaXB0U3RyaW5nQXR0ciIsIERvbnREZWxldGUgfCBSZWFkT25s
eSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpTY3JpcHRTdHJpbmdBdHRyKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjEpCiAgICAgeyAiY29uZGl0aW9uYWxBdHRyMSIsIERvbnREZWxldGUs
IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0
T2JqQ29uZGl0aW9uYWxBdHRyMSksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpDb25kaXRpb25hbEF0
dHIxLCBOb0ludHJpbnNpYyB9LApAQCAtMjY2LDYgKzI2OSw5IEBAIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlc1tdID0KICAgICB7ICJ3aXRo
U2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25XaXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uKSwgKGludHB0cl90KTAsIE5vSW50cmlu
c2ljIH0sCiAgICAgeyAid2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIiwgRG9udERlbGV0ZSB8
IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24pLCAoaW50
cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0
aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJ3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rp
b24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKSwgKGlu
dHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9u
LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2Vw
dGlvbiksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsgIndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIiwgRG9udERlbGV0ZSB8IEpTQzo6
RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2Jq
UHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlcyksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIm1ldGhvZFdp
dGhPcHRpb25hbEFyZyIsIERvbnREZWxldGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3Rh
dGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9k
V2l0aE9wdGlvbmFsQXJnKSwgKGludHB0cl90KTEsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibWV0
aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmciLCBEb250RGVsZXRlIHwgSlNDOjpG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKSwg
KGludHB0cl90KTIsIE5vSW50cmluc2ljIH0sCiAgICAgeyAibWV0aG9kV2l0aE5vbk9wdGlvbmFs
QXJnQW5kVHdvT3B0aW9uYWxBcmdzIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRw
dHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25NZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MpLCAoaW50cHRyX3Qp
MywgTm9JbnRyaW5zaWMgfSwKQEAgLTI5NSw3ICszMDEsNyBAQCBzdGF0aWMgY29uc3QgSGFzaFRh
YmxlVmFsdWUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAwLCAwLCAw
LCAwLCBOb0ludHJpbnNpYyB9CiB9OwogCi1zdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE9i
alByb3RvdHlwZVRhYmxlID0geyAxMzgsIDEyNywgSlNUZXN0T2JqUHJvdG90eXBlVGFibGVWYWx1
ZXMsIDAgfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0T2JqUHJvdG90eXBlVGFibGUg
PSB7IDI2NSwgMjU1LCBKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZVZhbHVlcywgMCB9OwogY29uc3Qg
Q2xhc3NJbmZvIEpTVGVzdE9ialByb3RvdHlwZTo6c19pbmZvID0geyAiVGVzdE9ialByb3RvdHlw
ZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3RPYmpQcm90b3R5cGVUYWJsZSwgMCwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RPYmpQcm90b3R5cGUpIH07CiAKIEpTT2JqZWN0KiBKU1Rlc3RPYmpQ
cm90b3R5cGU6OnNlbGYoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQpAQCAtNjU5LDYgKzY2NSw0NCBAQCBKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYQogfQogCiAK
K0pTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50
aWZpZXImKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVz
dE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0Q29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICgh
c2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgVGVzdE9i
aiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwg
V1RGOjpnZXRQdHIoaW1wbC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZShleGVjLCBzY3JpcHRDb250ZXh0KSkpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKKworSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwg
Y29uc3QgSWRlbnRpZmllciYpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGlj
X2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJhc2UpKTsKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3Rh
dGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nh
c3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgSlNDOjpKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGlt
cGwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXMoZXhlYywgc2NyaXB0Q29udGV4dCwgZWMpKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMs
IGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK0pTVmFsdWUganNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKK3sKKyAg
ICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVj
dChzbG90QmFzZSkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQg
PSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0
aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGlt
cGwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlKGV4ZWMsIHNjcmlwdENvbnRleHQpKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
CiBKU1ZhbHVlIGpzVGVzdE9ialNjcmlwdFN0cmluZ0F0dHIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikKIHsKICAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOwpAQCAt
MTA3MSw2ICsxMTE1LDQxIEBAIHZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBleGVjLCBKU09iCiB9CiAKIAordm9pZCBz
ZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmli
dXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUp
Cit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4o
dGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENv
bnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENv
bnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBsLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKGV4ZWMsIHNjcmlwdENvbnRleHQsIHRvVGVz
dE9iaih2YWx1ZSkpOworfQorCisKK3ZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIEpTVGVzdE9iaiogY2Fz
dGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KHRoaXNPYmplY3QpOworICAgIFRlc3RP
YmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgaW1wbC0+c2V0V2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhleGVjLCBzY3JpcHRDb250
ZXh0LCB0b1Rlc3RPYmoodmFsdWUpLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVj
KTsKK30KKworCit2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlz
ID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1w
bCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBp
bXBsLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZShleGVjLCBzY3JpcHRDb250ZXh0LCB0b1Rlc3RPYmoodmFsdWUpKTsKK30KKwor
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiB2b2lkIHNldEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0
cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
IHsKQEAgLTE1MjAsNiArMTU5OSw1OSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5p
bmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rl
c3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVS
SVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5mbyk7CisgICAgVGVzdE9iaiogaW1wbCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaW1wbC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZShleGVjLCBzY3JpcHRDb250ZXh0KTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1
ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVlKCk7CisgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNU
ZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7CisgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhF
UklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2luZm8pOworICAgIFRlc3RPYmoqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0
ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0
KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworCisgICAg
SlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0
KCksIFdURjo6Z2V0UHRyKGltcGwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVPYmpFeGNlcHRpb24oZXhlYywgc2NyaXB0Q29udGV4dCwgZWMpKSk7CisgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZVdpdGhTcGFjZXMoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9i
aio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMo
Y2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsKKyAgICBUZXN0T2JqKiBpbXBsID0gc3Rh
dGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CisgICAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0
Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
OworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMs
IGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihpbXBsLT53aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyhleGVjLCBzY3JpcHRDb250
ZXh0KSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHJlc3VsdCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4
IDg5Y2M5MzIyNmZjOTZiNjgzNzJkODM0NzcyZjYxMzRiN2QzNWY5N2UuLjdmOWMyMmNjMzFlOTFj
ZjYzNjE2NjA0NzhlMzFhNmZjYzVkYzU0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmgKQEAgLTE3MSw2ICsxNzEsOSBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25XaXRoU2NyaXB0U3RhdGVPYmooSgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlVm9pZEV4Y2VwdGlvbihK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKEpTQzo6RXhl
Y1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJv
dG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dChKU0M6OkV4ZWNTdGF0ZSop
OworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNT
dGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3Rv
dHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4
Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhP
cHRpb25hbEFyZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJn
QW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25h
bEFyZ0FuZFR3b09wdGlvbmFsQXJncyhKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMjUzLDYgKzI1Niwx
MiBAQCBKU0M6OkpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbAogdm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlND
OjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3Qg
SlNDOjpJZGVudGlmaWVyJik7CiB2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpT
Qzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1
ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cit2b2lkIHNldEpTVGVzdE9ialdpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBK
U0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK3ZvaWQg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUp
OworSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK3ZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoSlNDOjpFeGVj
U3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rl
c3RPYmpTY3JpcHRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25z
dCBKU0M6OklkZW50aWZpZXImKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0
dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
KTsKIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxBdHRyMShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oCmluZGV4IDU0NzQ1NTY3NGRm
MTkyMjhmZmRiZDhiNDAxNzFjYTY0YjdiYmNjYjMuLjU1NDY3OGVmOWRiYjU1ODUwNzA1ZmI2Yjhj
MWJlZjRhZGJiYTc3N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAgLTEyMyw2ICsxMjMsMTIgQEAgZW51bSB7
CiAtICh2b2lkKXNldFdpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczooRE9NVGVzdE9iaiAq
KW5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczsKIC0gKERPTVRlc3RPYmogKil3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlczsKIC0gKHZvaWQpc2V0V2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RPYmogKiluZXdXaXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlczsKKy0gKERPTVRlc3RPYmogKil3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlOworLSAodm9p
ZClzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlOihE
T01UZXN0T2JqICopbmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZTsKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzOworLSAodm9pZClzZXRXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzOihET01UZXN0T2JqICopbmV3V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlczsKKy0g
KERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0F0dHJpYnV0ZTsKKy0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGU6KERPTVRlc3RPYmogKiluZXdXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZTsKIC0g
KE5TU3RyaW5nICopc2NyaXB0U3RyaW5nQXR0cjsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKIC0g
KGludCljb25kaXRpb25hbEF0dHIxOwpAQCAtMTgwLDYgKzE4Niw5IEBAIGVudW0gewogLSAodm9p
ZCl3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uOwogLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3Jp
cHRTdGF0ZU9iakV4Y2VwdGlvbjsKIC0gKHZvaWQpd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CistICh2b2lkKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGU7CistIChE
T01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4
Y2VwdGlvbjsKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlczsKIC0gKHZvaWQpbWV0aG9kV2l0aE9wdGlvbmFsQXJnOihpbnQp
b3B0OwogLSAodm9pZCltZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZzooaW50
KW5vbk9wdCBvcHQ6KGludClvcHQ7CiAtICh2b2lkKW1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZFR3b09wdGlvbmFsQXJnczooaW50KW5vbk9wdCBvcHQxOihpbnQpb3B0MSBvcHQyOihpbnQpb3B0
MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpD
L0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2Jq
Qy9ET01UZXN0T2JqLm1tCmluZGV4IGI0ZmY2MzhjN2JiMWFhNGEwYTMyZmYxNmJhOGFhMzU1YmE4
M2U5NjQuLmM2NmNkOGIzZjExNTdhNDJjOTVmYjhkYmY5YmIwNTgyMTcyYjAxYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmou
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5tbQpAQCAtNDc2LDYgKzQ3Niw1MyBAQAogICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJv
cihlYyk7CiB9CiAKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpnZXRQdHIoSU1QTC0+d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpKSk7Cit9CisKKy0gKHZvaWQp
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZTooRE9N
VGVzdE9iaiAqKW5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
QVNTRVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1
dGUpOworCisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZShjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGUpKTsKK30KKworLSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMKK3sKKyAgICBXZWJDb3JlOjpK
U01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7CisgICAgRE9NVGVzdE9iaiAqcmVzdWx0ID0ga2l0KFdURjo6Z2V0UHRyKElNUEwtPndp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMp
KSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9yKGVjKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCistICh2b2lkKXNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RPYmogKiluZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzCit7CisgICAgV2ViQ29yZTo6SlNNYWlu
VGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKTsKKworICAgIFdlYkNvcmU6OkV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIElNUEwtPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoY29yZShuZXdXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSwgZWMpOworICAgIFdlYkNv
cmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZQoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdU
Rjo6Z2V0UHRyKElNUEwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVX
aXRoU3BhY2VzQXR0cmlidXRlKCkpKTsKK30KKworLSAodm9pZClzZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZTooRE9NVGVzdE9iaiAq
KW5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0
cmlidXRlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNw
YWNlc0F0dHJpYnV0ZSk7CisKKyAgICBJTVBMLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShjb3JlKG5ld1dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSk7Cit9CisKIC0g
KE5TU3RyaW5nICopc2NyaXB0U3RyaW5nQXR0cgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTc4Miw2ICs4MjksMjcgQEAKICAgICBJTVBMLT53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQogCistICh2b2lkKXdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3Rh
dGUgc3RhdGU7CisgICAgSU1QTC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZSgpOworfQorCistIChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbgoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBE
T01UZXN0T2JqICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQdHIoSU1QTC0+d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihlYykpKTsKKyAgICBXZWJDb3Jl
OjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy0gKERPTVRl
c3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
cworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1
cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzKCkpKTsKK30KKwogLSAodm9pZCltZXRob2RXaXRoT3B0aW9uYWxB
cmc6KGludClvcHQKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9i
ai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwK
aW5kZXggOTRlODllMWEwNWIwOGRhMGUxYTAyNDBiYTk2YWZhYmRlZDIyN2FkNC4uMGMzYjQ4MDg5
ZTQ4OTNkOGNjOTQ2Y2IyNWI4MmFjMGVlZTgwYTFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMTA2LDYgKzEwNiwxMCBAQCBt
b2R1bGUgdGVzdCB7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRTdGF0ZV0gVGVzdE9iaiB3aXRo
U2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKQogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSB2b2lkIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0fFNjcmlwdFN0YXRlXSB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGUoKTsKKyAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHR8
U2NyaXB0U3RhdGVdIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZU9iakV4Y2VwdGlvbigpCisgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAg
ICAgICAgW0NhbGxXaXRoPSAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAgfCAgU2NyaXB0U3RhdGUg
IF0gVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNw
YWNlcygpOwogCiAgICAgICAgIGF0dHJpYnV0ZSBbQ2FsbFdpdGg9U2NyaXB0U3RhdGVdIGxvbmcg
d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlOwogICAgICAgICBhdHRyaWJ1dGUgW0NhbGxXaXRoPVNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRdIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
dHRyaWJ1dGU7CkBAIC0xMTMsNiArMTE3LDEwIEBAIG1vZHVsZSB0ZXN0IHsKICAgICAgICAgICAg
IGdldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgYXR0cmlidXRlIFtDYWxsV2l0
aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBUZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzCiAgICAgICAgICAgICBnZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CisgICAgICAgIGF0dHJpYnV0ZSBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dHxT
Y3JpcHRTdGF0ZV0gVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlOworICAgICAgICBhdHRyaWJ1dGUgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlv
bkNvbnRleHR8U2NyaXB0U3RhdGVdIFRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcworICAgICAgICAgICAgZ2V0dGVyIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICBhdHRyaWJ1dGUgW0NhbGxXaXRoPSAgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCAgfCAgU2NyaXB0U3RhdGUgIF0gVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZTsKIAogICAgICAgICAvLyAn
T3B0aW9uYWwnIGV4dGVuZGVkIGF0dHJpYnV0ZQogICAgICAgICB2b2lkICAgIG1ldGhvZFdpdGhP
cHRpb25hbEFyZyhpbiBbT3B0aW9uYWxdIGxvbmcgb3B0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggMmVjZTU4
MjQ4MzMzZDdkOTFmNmFkNmYzNDgyNTJhYTJiODk0MmFiYi4uYjMzNjA1MzZlMWIzNGZlNWIzYTU1
ZGYyYjJjMTk0NGE4MGRlMjYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTU5NCw2ICs1OTQsMTA3IEBAIHN0
YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNl
dHRlcih2ODo6TG9jYWw8djg6OlN0CiAgICAgcmV0dXJuOwogfQogCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNj
ZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZS5fZ2V0Iik7CisgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKKyAgICBTY3Jp
cHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlmICghc3RhdGUp
CisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBp
ZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CisgICAg
cmV0dXJuIHRvVjgoaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
QXR0cmlidXRlKHN0YXRlLCBzY3JpcHRDb250ZXh0KSk7Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29u
c3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2Jq
LndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUuX3NldCIp
OworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7
CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUpID8gVjhUZXN0
T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwor
ICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYg
KCFzdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKHN0YXRlLCBzY3JpcHRDb250ZXh0LCBX
VEY6OmdldFB0cih2KSk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICB0
aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVz
dE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzLl9nZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFNjcmlwdFN0YXRlKiBz
dGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFzdGF0ZSkKKyAgICAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBSZWZQdHI8VGVz
dE9iaj4gdiA9IGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZVJhaXNlcyhzdGF0ZSwgc2NyaXB0Q29udGV4dCwgZWMpOworICAgIGlmIChVTkxJS0VM
WShlYykpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9NRXhjZXB0aW9uKGVjKTsKKyAgICAgICAg
cmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOworICAgIH0KKyAgICBpZiAoc3RhdGUuaGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigp
KTsKKyAgICByZXR1cm4gdG9WOCh2LnJlbGVhc2UoKSk7Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1
ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5U
ZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMuX3NldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFs
dWUpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZh
bHVlKSkgOiAwOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFNjcmlwdFN0YXRlKiBz
dGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFzdGF0ZSkKKyAgICAgICAg
cmV0dXJuOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAg
ICByZXR1cm47CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlUmFpc2VzKHN0YXRlLCBzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2
KSwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIFY4UHJveHk6OnNldERPTUV4
Y2VwdGlvbihlYyk7CisgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQorICAgICAgICB0aHJv
d0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm47Cit9CisKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1l
LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFUUygiRE9NLlRl
c3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUuX2dldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
aW5mby5Ib2xkZXIoKSk7CisgICAgU2NyaXB0U3RhdGUqIHN0YXRlID0gU2NyaXB0U3RhdGU6OmN1
cnJlbnQoKTsKKyAgICBpZiAoIXN0YXRlKQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgp
OworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRF
eGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB0b1Y4KGltcC0+d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoc3RhdGUsIHNjcmlw
dENvbnRleHQpKTsKK30KKworc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6
U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vz
c29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlLl9zZXQiKTsK
KyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwor
ICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlKSA/IFY4VGVzdE9i
ajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAg
ICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOworICAgIGlmICgh
c3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIGltcC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoc3RhdGUsIHNjcmlwdENv
bnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisg
ICAgICAgIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCkpOworICAgIHJldHVybjsKK30KKwog
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzY3JpcHRTdHJpbmdBdHRyQXR0ckdldHRlcih2
ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnNjcmlwdFN0cmluZ0F0dHIuX2dldCIpOwpA
QCAtMTEyMyw2ICsxMjI0LDU2IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lCiAgICAgcmV0dXJu
IHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSIpOworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgRW1wdHlTY3JpcHRT
dGF0ZSBzdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0g
Z2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAg
ICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBpbXAtPndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGUoJnN0YXRlLCBzY3JpcHRDb250ZXh0KTsKKyAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4
Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6VmFsdWU+KCk7Cit9CisKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICB7CisgICAgRW1wdHlTY3JpcHRTdGF0ZSBzdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAg
IGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAg
ICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKCZzdGF0ZSwgc2NyaXB0Q29udGV4dCwgZWMpOwor
ICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIGdvdG8gZmFpbDsKKyAgICBpZiAoc3RhdGUu
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlv
bigpKTsKKyAgICByZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpKTsKKyAgICB9CisgICAgZmFp
bDoKKyAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24oZWMpOworICAgIHJldHVybiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4oKTsKK30KKworc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0NhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyIpOworICAg
IFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAg
RW1wdHlTY3JpcHRTdGF0ZSBzdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0
Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBSZWZQdHI8VGVz
dE9iaj4gcmVzdWx0ID0gaW1wLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlcygmc3RhdGUsIHNjcmlwdENvbnRleHQpOworICAgIGlmIChzdGF0ZS5oYWRF
eGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCkp
OworICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNlKCkpOworfQorCiBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai5tZXRob2RXaXRo
T3B0aW9uYWxBcmciKTsKQEAgLTE2MTYsNiArMTc2NywxMiBAQCBzdGF0aWMgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsKICAgICB7IndpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlcyIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXNBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3ND
b250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4o
djg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzJyAoVHlwZTogJ2F0dHJpYnV0ZScg
RXh0QXR0cjogJ0NhbGxXaXRoJykKICAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0
cmlidXRlUmFpc2VzIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
KyAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnQ2FsbFdpdGgnKQorICAg
IHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSIsIFRl
c3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZUF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAor
ICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZUF0dHJpYnV0ZVJhaXNlcycgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcp
CisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjp3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNl
dHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZScgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSIsIFRlc3RPYmpJbnRlcm5hbDo6
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1
dGVBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlciwgMCAvKiBubyBkYXRh
ICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNf
Y2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAq
L30sCiAgICAgLy8gQXR0cmlidXRlICdzY3JpcHRTdHJpbmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5
IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbnZlcnRTY3JpcHRTdHJpbmcnKQogICAgIHsic2NyaXB0
U3RyaW5nQXR0ciIsIFRlc3RPYmpJbnRlcm5hbDo6c2NyaXB0U3RyaW5nQXR0ckF0dHJHZXR0ZXIs
IDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpE
RUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAg
Lyogb24gaW5zdGFuY2UgKi99LAogI2lmIEVOQUJMRShDb25kaXRpb24xKQpAQCAtMTY4Myw2ICsx
ODQwLDkgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayBUZXN0T2JqQ2FsbGJhY2tzW10g
PSB7CiAgICAgeyJ3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uIiwgVGVzdE9iakludGVybmFs
Ojp3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uQ2FsbGJhY2t9LAogICAgIHsid2l0aFNjcmlw
dFN0YXRlT2JqRXhjZXB0aW9uIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVPYmpF
eGNlcHRpb25DYWxsYmFja30sCiAgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIsIFRl
c3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRDYWxsYmFja30sCisgICAg
eyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlIiwgVGVzdE9iakludGVy
bmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQ2FsbGJhY2t9LAor
ICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlv
biIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZU9iakV4Y2VwdGlvbkNhbGxiYWNrfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0NhbGxiYWNrfSwKICAgICB7
Im1ldGhvZFdpdGhPcHRpb25hbEFyZyIsIFRlc3RPYmpJbnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlv
bmFsQXJnQ2FsbGJhY2t9LAogICAgIHsibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9u
YWxBcmciLCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlv
bmFsQXJnQ2FsbGJhY2t9LAogICAgIHsibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0
aW9uYWxBcmdzIiwgVGVzdE9iakludGVybmFsOjptZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRU
d29PcHRpb25hbEFyZ3NDYWxsYmFja30sCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126407</attachid>
            <date>2012-02-09 17:08:54 -0800</date>
            <delta_ts>2012-02-09 17:08:54 -0800</delta_ts>
            <desc>rebased patch for commit</desc>
            <filename>bug-78224-20120210100853.patch</filename>
            <type>text/plain</type>
            <size>76030</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA3MzEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGExMmI4NWJhNmZhMDY0
NTJjNmIxZTgzYjA2ZmM3ZGYyM2RlYzg3NS4uYzlkN2EwNGFmNzQwMzllNDU0NDAzYTE0MzdhZGMw
OTI5NWZhYzk1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk5IEBACiAyMDEyLTAyLTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBDb2RlIGdlbmVyYXRv
cnMgc2hvdWxkIHN1cHBvcnQgbXVsdGlwbGUgdmFsdWVzIGZvciB0aGUgW0NhbGxXaXRoPV0gYXR0
cmlidXRlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
ODIyNAorCisgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCisKKyAgICAgICAgQ3VycmVu
dGx5IHdlIGNhbiBzcGVjaWZ5IG9ubHkgb25lIHZhbHVlIGZvciBvbmUgW0NhbGxXaXRoPV0sCisg
ICAgICAgIGxpa2UgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIG9yIFtDYWxsV2l0
aD1TY3JpcHRTdGF0ZV0uCisgICAgICAgIFRvIHJlZHVjZSByZWR1bmRhbnQgSURMIGF0dHJpYnV0
ZXMsIHdlIGFyZSBwbGFubmluZyB0byBzdXBwb3J0IG11bHRpcGxlCisgICAgICAgIHZhbHVlcyBm
b3IgW0NhbGxXaXRoPV0sIGxpa2UgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHR8U2Ny
aXB0QXJndW1lbnRzfENhbGxTdGFja10uCisgICAgICAgIFRoaXMgcGF0Y2ggbWFrZXMgYSBjaGFu
Z2Ugb24gY29kZSBnZW5lcmF0b3JzIHRvIHN1cHBvcnQgaXQuCisKKyAgICAgICAgVGVzdDogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisgICAgICAgIE5vIGNoYW5nZSBpbiBXZWJL
aXQgYmVoYXZpb3Igc2luY2UgSURMIGZpbGVzIGhhdmUgbm90IHlldCB1c2VkIFtDYWxsV2l0aD1Y
fFl8Wl0uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG06IE1v
ZGlmaWVkIHRvIHN1cHBvcnQgW0NhbGxXaXRoPVh8WXxaXS4KKyAgICAgICAgKEV4dGVuZGVkQXR0
cmlidXRlQ29udGFpbnMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUNhbGxXaXRoKToKKyAgICAgICAgKEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNrKToKKyAgICAg
ICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwpOgorICAgICAgICAoR2VuZXJh
dGVDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29uc3RydWN0b3JE
ZWZpbml0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bToKKyAgICAgICAgKEdlbmVyYXRlTm9ybWFsQXR0ckdldHRlcik6CisgICAgICAgIChHZW5lcmF0
ZU5vcm1hbEF0dHJTZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVDYWxsV2l0aCk6CisgICAgICAg
IChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbFN0cmluZyk6CisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdE9iai5pZGw6IEFkZGVkIHRlc3QgY2FzZXMgZm9yIFtDYWxsV2l0aD1YfFl8
Wl0uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3RPYmou
Y3BwOiBVcGRhdGVkIHJ1bi1iaW5kaW5ncy10ZXN0cyByZXN1bHRzLgorICAgICAgICAoV2ViRE9N
VGVzdE9iajo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJET01UZXN0T2JqOjpzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkRPTVRlc3RPYmo6OndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAg
ICAgICAoV2ViRE9NVGVzdE9iajo6c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyk6CisgICAgICAgIChXZWJET01UZXN0T2JqOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6Cisg
ICAgICAgIChXZWJET01UZXN0T2JqOjpzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk6CisgICAgICAgIChXZWJET01UZXN0T2JqOjp3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKToKKyAgICAgICAgKFdlYkRP
TVRlc3RPYmo6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNl
cHRpb24pOgorICAgICAgICAoV2ViRE9NVGVzdE9iajo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0
X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlKToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRf
YW5kX3NjcmlwdF9zdGF0ZV9vYmpfZXhjZXB0aW9uKToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVz
dF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRo
X3NwYWNlcyk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9l
eGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZSk6CisgICAgICAgICh3
ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRf
c2NyaXB0X3N0YXRlX2F0dHJpYnV0ZSk6CisgICAgICAgICh3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dl
dF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX2F0dHJpYnV0
ZV9yYWlzZXMpOgorICAgICAgICAod2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRf
ZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKToKKyAg
ICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250
ZXh0X2FuZF9zY3JpcHRfc3RhdGVfd2l0aF9zcGFjZXNfYXR0cmlidXRlKToKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9z
Y3JpcHRfc3RhdGVfd2l0aF9zcGFjZXNfYXR0cmlidXRlKToKKyAgICAgICAgKHdlYmtpdF9kb21f
dGVzdF9vYmpfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF9kb21fdGVzdF9vYmpfY2xh
c3NfaW5pdCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0
RE9NVGVzdE9iai5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RP
YmouY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0T2JqV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRKU1Rlc3RPYmpX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OnNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcyk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5oOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW06CisgICAgICAgICgtW0RPTVRl
c3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZV0p
OgorICAgICAgICAoLVtET01UZXN0T2JqIHNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc10pOgorICAgICAg
ICAoLVtET01UZXN0T2JqIHNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXM6XSk6CisgICAgICAgICgtW0RPTVRlc3RPYmogd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVdKToKKyAgICAg
ICAgKC1bRE9NVGVzdE9iaiBzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZTpdKToKKyAgICAgICAgKC1bRE9NVGVzdE9iaiB3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlXSk6CisgICAgICAgICgtW0RPTVRlc3RP
Ymogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbl0p
OgorICAgICAgICAoLVtET01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVXaXRoU3BhY2VzXSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyKToK
KyAgICAgICAgKFRlc3RPYmpJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50
ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVB
dHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVD
YWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25DYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqSW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisK
KzIwMTItMDItMDkgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIFJlbmFtZSBbQ29udmVydE51bGxTdHJpbmdUbz1dIHRvIFtUcmVhdFJldHVybmVkTnVsbFN0
cmluZ0FzPV0KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc4MTA4CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvci5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvci5wbQppbmRleCBkNWI2YmRmMTk4ODk2MWIxYmMwMWJmMTQwN2I5M2JiYTA2YmVlYjkyLi4x
MTNlZWIyNmUxZGQ1NTNmYTY2ZTlhZDZiNzkzYjIzZDg1ZGIxZmVjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3IucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCkBAIC02MzgsNCArNjM4
LDE1IEBAIHN1YiBHZW5lcmF0ZUNvbXBpbGVUaW1lQ2hlY2tGb3JFbnVtc0lmTmVlZGVkCiAgICAg
cmV0dXJuIEBjaGVja3M7CiB9CiAKK3N1YiBFeHRlbmRlZEF0dHJpYnV0ZUNvbnRhaW5zCit7Cisg
ICAgbXkgJG9iamVjdCA9IHNoaWZ0OworICAgIG15ICRjYWxsV2l0aCA9IHNoaWZ0OworICAgIHJl
dHVybiAwIHVubGVzcyAkY2FsbFdpdGg7CisgICAgbXkgJGtleXdvcmQgPSBzaGlmdDsKKworICAg
IG15IEBjYWxsV2l0aEtleXdvcmRzID0gc3BsaXQgL1xzKlx8XHMqLywgJGNhbGxXaXRoOworICAg
IHJldHVybiBncmVwIHsgJF8gZXEgJGtleXdvcmQgfSBAY2FsbFdpdGhLZXl3b3JkczsKK30KKwog
MTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0KaW5kZXggNDNkMzVjMjc0ZDBlNGI2YWE5NzFmZmMzOGZmZTUzMDc5MWU2MjlmZS4uY2Jj
MTUzYWZkZDhlMzhlNWE2ODg3MDE0ZGQxYzlhOTM0Y2MxZmQ3OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTMwLDcgKzMw
LDcgQEAgdXNlIHN0cmljdDsKIAogdXNlIGNvbnN0YW50IEZpbGVOYW1lUHJlZml4ID0+ICJKUyI7
CiAKLW15ICgkY29kZUdlbmVyYXRvcik7CitteSAkY29kZUdlbmVyYXRvcjsKIAogbXkgJG1vZHVs
ZSA9ICIiOwogbXkgJG91dHB1dERpciA9ICIiOwpAQCAtMTcxNiwxMCArMTcxNiw3IEBAIHN1YiBH
ZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICMgT25jZSBKU0RPTVdy
YXBwZXJzIGhhdmUgYSBiYWNrLXBvaW50ZXIgdG8gdGhlIGdsb2JhbE9iamVjdCB3ZSBjYW4gcGFz
cyBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKQogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gSlMiIC4gJGNvbnN0cnVjdG9yVHlwZSAuICI6OmdldENv
bnN0cnVjdG9yKGV4ZWMsIGNhc3RlZFRoaXMpO1xuIik7CiAgICAgICAgICAgICAgICAgfSBlbHNp
ZiAoIUB7JGF0dHJpYnV0ZS0+Z2V0dGVyRXhjZXB0aW9uc30pIHsKLSAgICAgICAgICAgICAgICAg
ICAgbXkgJGNhbGxXaXRoID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2FsbFdpdGgifTsKLSAgICAgICAgICAgICAgICAgICAgbXkgJGNhbGxXaXRoQXJnID0g
IiI7Ci0KLSAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpO1xuIikgaWYgKCEkY2FsbFdpdGgpOworICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBVTlVTRURfUEFSQU0oZXhlYyk7XG4iKSBpZiAhJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKIAogICAg
ICAgICAgICAgICAgICAgICBteSAkY2FjaGVJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAg
IGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWNoZWRB
dHRyaWJ1dGUifSkgewpAQCAtMTcyOSwxOCArMTcyNiwxNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1l
bnRhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
ICAgIHJldHVybiBjYWNoZWRWYWx1ZTtcbiIpOwogICAgICAgICAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKCRjYWxsV2l0aCkgewotICAgICAgICAgICAgICAgICAgICAg
ICAgJGNhbGxXaXRoQXJnID0gR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsIFxAaW1wbENvbnRl
bnQsICJqc1VuZGVmaW5lZCgpIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgbXkgQGNhbGxXaXRoQXJncyA9IEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVu
dCwgImpzVW5kZWZpbmVkKCkiKTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoJHN2Z0xpc3RQ
cm9wZXJ0eVR5cGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEpTVmFsdWUgcmVzdWx0ID0gICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJpYnV0ZS0+
c2lnbmF0dXJlLCAwLCAkaW1wbENsYXNzTmFtZSwgImNhc3RlZFRoaXMtPmltcGwoKS0+JGltcGxH
ZXR0ZXJGdW5jdGlvbk5hbWUoJGNhbGxXaXRoQXJnKSIsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7
CisgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVl
IHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwg
JGltcGxDbGFzc05hbWUsICJjYXN0ZWRUaGlzLT5pbXBsKCktPiRpbXBsR2V0dGVyRnVuY3Rpb25O
YW1lKCIgLiAoam9pbiAiLCAiLCBAY2FsbFdpdGhBcmdzKSAuICIpIiwgImNhc3RlZFRoaXMiKSAu
ICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHN2Z1Byb3BlcnR5T3JMaXN0
UHJvcGVydHlUeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgIiAgICAkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUmIGltcGwgPSBjYXN0ZWRUaGlz
LT5pbXBsKCktPnByb3BlcnR5UmVmZXJlbmNlKCk7XG4iKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICgkc3ZnUHJvcGVydHlPckxpc3RQcm9wZXJ0eVR5cGUgZXEgImZsb2F0IikgeyAjIFNw
ZWNpYWwgY2FzZSBmb3IgSlNTVkdOdW1iZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9KU1Zh
bHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXBsIiwgImNh
c3RlZFRoaXMiKSAuICI7XG4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNWYWx1
ZSByZXN1bHQgPSAgIiAuIE5hdGl2ZVRvSlNWYWx1ZSgkYXR0cmlidXRlLT5zaWduYXR1cmUsIDAs
ICRpbXBsQ2xhc3NOYW1lLCAiaW1wbC4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgkY2FsbFdpdGhB
cmcpIiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBKU1ZhbHVlIHJlc3VsdCA9ICAiIC4gTmF0aXZlVG9K
U1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGltcGxDbGFzc05hbWUsICJpbXBsLiRp
bXBsR2V0dGVyRnVuY3Rpb25OYW1lKCIgLiAoam9pbiAiLCAiLCBAY2FsbFdpdGhBcmdzKSAuICIp
IiwgImNhc3RlZFRoaXMiKSAuICI7XG4iKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTc1NCw5ICsxNzQ5LDcgQEAgc3ViIEdl
bmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZnVuY3Rp
b25OYW1lID0gImltcGwtPiR7ZnVuY3Rpb25OYW1lfSI7CiAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkY2FsbFdpdGgpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsICRjYWxsV2l0aEFyZyk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0
KEBhcmd1bWVudHMsIEBjYWxsV2l0aEFyZ3MpOwogCiAgICAgICAgICAgICAgICAgICAgICAgICBt
eSAkanNUeXBlID0gTmF0aXZlVG9KU1ZhbHVlKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZSwgMCwgJGlt
cGxDbGFzc05hbWUsICIke2Z1bmN0aW9uTmFtZX0oIiAuIGpvaW4oIiwgIiwgQGFyZ3VtZW50cykg
LiAiKSIsICJjYXN0ZWRUaGlzIik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICAkaW1wbENsYXNzTmFtZSogaW1wbCA9IHN0YXRpY19jYXN0PCRpbXBsQ2xh
c3NOYW1lKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTtcbiIpOwpAQCAtMTc3MiwxNCArMTc2NSwxMCBA
QCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICByZXR1cm4gcmVzdWx0O1xuIik7CiAKICAgICAgICAgICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBteSAkY2FsbFdpdGggPSAkYXR0cmlidXRlLT5z
aWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwogICAgICAgICAgICAg
ICAgICAgICBteSBAYXJndW1lbnRzID0gKCJlYyIpOworICAgICAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBFeGNlcHRpb25Db2RlIGVjID0gMDtcbiIpOwogCi0gICAgICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
O1xuIik7ICAgICAgICAgICAgICAgICAgICAKLQotICAgICAgICAgICAgICAgICAgICBpZiAoJGNh
bGxXaXRoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdl
bmVyYXRlQ2FsbFdpdGgoJGNhbGxXaXRoLCBcQGltcGxDb250ZW50LCAianNVbmRlZmluZWQoKSIp
KTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBh
cmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRl
ZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwgImpzVW5kZWZpbmVkKCki
KSk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCRzdmdQcm9wZXJ0eU9yTGlzdFByb3BlcnR5
VHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
JHN2Z1Byb3BlcnR5T3JMaXN0UHJvcGVydHlUeXBlIGltcGwoKmNhc3RlZFRoaXMtPmltcGwoKSk7
XG4iKTsKQEAgLTE5ODMsMTAgKzE5NzIsNyBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bmN0aW9uTmFtZSA9ICJpbXBs
LT4ke2Z1bmN0aW9uTmFtZX0iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNhbGxXaXRoID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRjYWxsV2l0aCkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdW5zaGlmdChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRo
KCRjYWxsV2l0aCwgXEBpbXBsQ29udGVudCwgIiIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNoaWZ0KEBhcmd1
bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudCwgIiIpKTsKIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsICJlYyIpIGlmIEB7JGF0dHJp
YnV0ZS0+c2V0dGVyRXhjZXB0aW9uc307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50LCAiICAgICR7ZnVuY3Rpb25OYW1lfSgiIC4gam9pbigiLCAiLCBA
YXJndW1lbnRzKSAuICIpO1xuIik7CkBAIC0yMzQzLDIwICsyMzI5LDIxIEBAIHN1YiBHZW5lcmF0
ZUltcGxlbWVudGF0aW9uCiBzdWIgR2VuZXJhdGVDYWxsV2l0aAogewogICAgIG15ICRjYWxsV2l0
aCA9IHNoaWZ0OworICAgIHJldHVybiAoKSB1bmxlc3MgJGNhbGxXaXRoOwogICAgIG15ICRvdXRw
dXRBcnJheSA9IHNoaWZ0OwogICAgIG15ICRyZXR1cm5WYWx1ZSA9IHNoaWZ0OwotICAgIG15ICRj
YWxsV2l0aEFyZyA9ICJDT01QSUxFX0FTU0VSVChmYWxzZSkiOwogCi0gICAgaWYgKCRjYWxsV2l0
aCBlcSAiU2NyaXB0U3RhdGUiKSB7Ci0gICAgICAgICRjYWxsV2l0aEFyZyA9ICJleGVjIjsKLSAg
ICB9IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CisgICAg
bXkgQGNhbGxXaXRoQXJnczsKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmli
dXRlQ29udGFpbnMoJGNhbGxXaXRoLCAiU2NyaXB0U3RhdGUiKSkgeworICAgICAgICBwdXNoKEBj
YWxsV2l0aEFyZ3MsICJleGVjIik7CisgICAgfQorICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0
ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJTY3JpcHRFeGVjdXRpb25Db250ZXh0
IikpIHsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFzY3JpcHRDb250ZXh0KVxu
Iik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgcmV0dXJuIiAuICgkcmV0
dXJuVmFsdWUgPyAiICIgLiAkcmV0dXJuVmFsdWUgOiAiIikgLiAiO1xuIik7Ci0gICAgICAgICRj
YWxsV2l0aEFyZyA9ICJzY3JpcHRDb250ZXh0IjsKKyAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdz
LCAic2NyaXB0Q29udGV4dCIpOwogICAgIH0KLQotICAgIHJldHVybiAkY2FsbFdpdGhBcmc7Cisg
ICAgcmV0dXJuIEBjYWxsV2l0aEFyZ3M7CiB9CiAKIHN1YiBHZW5lcmF0ZUFyZ3VtZW50c0NvdW50
Q2hlY2sKQEAgLTI0MTgsOSArMjQwNSw4IEBAIHN1YiBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawog
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgifSA9IDE7CiAg
ICAgfQogCi0gICAgbXkgJGNhbGxXaXRoID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9OwotICAgIGlmICgkY2FsbFdpdGggYW5kICEkZnVuY3Rp
b24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0pIHsKLSAg
ICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRjYWxsV2l0aCwgXEAkb3V0
cHV0QXJyYXksICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiKSk7CisgICAgaWYgKCEk
ZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yIn0p
IHsKKyAgICAgICAgcHVzaChAYXJndW1lbnRzLCBHZW5lcmF0ZUNhbGxXaXRoKCRmdW5jdGlvbi0+
c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSwgXEAkb3V0cHV0QXJy
YXksICJKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkiKSk7CiAgICAgfQogCiAgICAgJGlt
cGxJbmNsdWRlc3siRXhjZXB0aW9uQ29kZS5oIn0gPSAxOwpAQCAtMjcyOSw4ICsyNzE1LDcgQEAg
c3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5jdGlvbkNhbGwoKQogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIlxuIiAuICRpbmRlbnQgLiAiSlNDOjpKU1ZhbHVlIHJlc3VsdCA9ICIgLiBO
YXRpdmVUb0pTVmFsdWUoJGZ1bmN0aW9uLT5zaWduYXR1cmUsIDEsICRpbXBsQ2xhc3NOYW1lLCAk
ZnVuY3Rpb25TdHJpbmcsICJjYXN0ZWRUaGlzIikgLiAiO1xuIik7CiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAkaW5kZW50IC4gInNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7XG4iKSBpZiBA
eyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc307CiAKLSAgICAgICAgbXkgJGNhbGxXaXRoID0g
JGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9Owot
ICAgICAgICBpZiAoJGNhbGxXaXRoIGFuZCAkY2FsbFdpdGggZXEgIlNjcmlwdFN0YXRlIikgewor
ICAgICAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGZ1
bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCAiU2Ny
aXB0U3RhdGUiKSkgewogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICRpbmRlbnQgLiAi
aWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgJGluZGVudCAuICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTtcbiIpOwogICAgICAgICB9CkBAIC0zMjk1LDcgKzMyODAsNiBAQCBzdWIgR2VuZXJhdGVDb25z
dHJ1Y3RvckRlY2xhcmF0aW9uCiAgICAgbXkgJGludGVyZmFjZU5hbWUgPSBzaGlmdDsKIAogICAg
IG15ICRjb25zdHJ1Y3RvckNsYXNzTmFtZSA9ICIke2NsYXNzTmFtZX1Db25zdHJ1Y3RvciI7Ci0g
ICAgbXkgJGNhbGxXaXRoID0gJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdp
dGgifTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgImNsYXNzICR7Y29uc3RydWN0b3JDbGFz
c05hbWV9IDogcHVibGljIERPTUNvbnN0cnVjdG9yT2JqZWN0IHtcbiIpOwogICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgInByaXZhdGU6XG4iKTsKQEAgLTM1MjMsNyArMzUwNyw3IEBAIEVORAogICAg
ICAgICAgICAgbXkgJG51bVBhcmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAg
ICAgICAgICAgICBteSAoJGR1bW15LCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnND
aGVjaygkb3V0cHV0QXJyYXksICRmdW5jdGlvbiwgJGRhdGFOb2RlLCAkbnVtUGFyYW1ldGVycywg
JGludGVyZmFjZU5hbWUsICJjb25zdHJ1Y3RvckNhbGxiYWNrIiwgdW5kZWYsIHVuZGVmLCB1bmRl
Zik7CiAKLSAgICAgICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YWxsV2l0aCJ9ICYmICRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0g
ZXEgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSB7CisgICAgICAgICAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiQ2FsbFdpdGgifSwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSkgewogICAgICAg
ICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgImNvbnRleHQiKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCA9IGpzQ29uc3RydWN0b3ItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIpOwog
ICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoIWNvbnRleHQpXG4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KaW5kZXggYjFkMDIzNWY0NGM2ZDhlOGZmNzExNDQ4ZWYyN2E5MGZlYzA3YmJmNi4uODU0
YjQ4YjgxNDkwZmZlZWIxMmZmOTU2NzJiOWM4NTU2NmE5ZmFlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTMyLDcgKzMy
LDcgQEAgdXNlIERpZ2VzdDo6TUQ1OwogCiB1c2UgY29uc3RhbnQgRmlsZU5hbWVQcmVmaXggPT4g
IlY4IjsKIAotbXkgKCRjb2RlR2VuZXJhdG9yKTsKK215ICRjb2RlR2VuZXJhdG9yOwogCiBteSAk
bW9kdWxlID0gIiI7CiBteSAkb3V0cHV0RGlyID0gIiI7CkBAIC04NjYsMTQgKzg2NiwxMSBAQCBF
TkQKIAogICAgIG15ICRyZXR1cm5UeXBlID0gR2V0VHlwZUZyb21TaWduYXR1cmUoJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlKTsKICAgICBteSAkZ2V0dGVyU3RyaW5nOwotICAgIG15ICRjYWxsV2l0aCA9
ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNhbGxXaXRoIn0g
fHwgIiI7CiAKICAgICBpZiAoJGdldHRlclN0cmluZ1VzZXNJbXApIHsKICAgICAgICAgbXkgKCRm
dW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPkdldHRlckV4cHJlc3Np
b24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKIAotICAgICAg
ICBpZiAoJGNhbGxXaXRoKSB7Ci0gICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMsIEdlbmVyYXRl
Q2FsbFdpdGgoJGNhbGxXaXRoLCBcQGltcGxDb250ZW50RGVjbHMsICIgICAgIiwgMCwgMCkpOwot
ICAgICAgICB9CisgICAgICAgIHB1c2goQGFyZ3VtZW50cywgR2VuZXJhdGVDYWxsV2l0aCgkYXR0
cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9LCBcQGlt
cGxDb250ZW50RGVjbHMsICIgICAgIiwgMCwgMCkpOwogCiAgICAgICAgIHB1c2goQGFyZ3VtZW50
cywgImVjIikgaWYgJHVzZUV4Y2VwdGlvbnM7CiAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWdu
YXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0pIHsKQEAgLTkwNSw3
ICs5MDIsNyBAQCBFTkQKICAgICAgICAgfQogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCBHZW5lcmF0ZVNldERPTUV4Y2VwdGlvbigiICAgICIpKTsKIAotICAgICAgICBpZiAoJGNhbGxX
aXRoIGVxICJTY3JpcHRTdGF0ZSIpIHsKKyAgICAgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRl
bmRlZEF0dHJpYnV0ZUNvbnRhaW5zKCRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57IkNhbGxXaXRoIn0sICJTY3JpcHRTdGF0ZSIpKSB7CiAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSlcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgcmV0dXJuIHRocm93
RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCkpO1xuIik7CiAgICAgICAgIH0KQEAgLTExMTgsOCArMTEx
NSw2IEBAIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwO1xuIik7CiAgICAgfQogCi0gICAgbXkgJGNhbGxXaXRoID0gJGF0dHJpYnV0
ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2FsbFdpdGgifSB8fCAiIjsKLQog
ICAgIGlmICgkaW1wbENsYXNzTmFtZSBlcSAiU1ZHTnVtYmVyIikgewogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgICppbXAgPSAkcmVzdWx0O1xuIik7CiAgICAgfSBlbHNlIHsK
QEAgLTExNDUsOSArMTE0MCw3IEBAIEVORAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bXkgKCRmdW5jdGlvbk5hbWUsIEBhcmd1bWVudHMpID0gJGNvZGVHZW5lcmF0b3ItPlNldHRlckV4
cHJlc3Npb24oXCVpbXBsSW5jbHVkZXMsICRpbnRlcmZhY2VOYW1lLCAkYXR0cmlidXRlKTsKIAot
ICAgICAgICAgICAgaWYgKCRjYWxsV2l0aCkgewotICAgICAgICAgICAgICAgIHB1c2goQGFyZ3Vt
ZW50cywgR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsIFxAaW1wbENvbnRlbnREZWNscywgIiAg
ICAiLCAxLCAwKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBwdXNoKEBhcmd1bWVudHMs
IEdlbmVyYXRlQ2FsbFdpdGgoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2FsbFdpdGgifSwgXEBpbXBsQ29udGVudERlY2xzLCAiICAgICIsIDEsIDApKTsKIAog
ICAgICAgICAgICAgcHVzaChAYXJndW1lbnRzLCAkcmVzdWx0KTsKICAgICAgICAgICAgIHB1c2go
QGFyZ3VtZW50cywgImVjIikgaWYgJHVzZUV4Y2VwdGlvbnM7CkBAIC0xMTY4LDcgKzExNjEsNyBA
QCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywgIiAgICAgICAgVjhQcm94eTo6
c2V0RE9NRXhjZXB0aW9uKGVjKTtcbiIpOwogICAgIH0KIAotICAgIGlmICgkY2FsbFdpdGggZXEg
IlNjcmlwdFN0YXRlIikgeworICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1
dGVDb250YWlucygkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJD
YWxsV2l0aCJ9LCAiU2NyaXB0U3RhdGUiKSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERl
Y2xzLCAiICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSlcbiIpOwogICAgICAgICBwdXNoKEBp
bXBsQ29udGVudERlY2xzLCAiICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTtc
biIpOwogICAgIH0KQEAgLTE0NjQsMzAgKzE0NTcsMzEgQEAgRU5ECiBzdWIgR2VuZXJhdGVDYWxs
V2l0aAogewogICAgIG15ICRjYWxsV2l0aCA9IHNoaWZ0OworICAgIHJldHVybiAoKSB1bmxlc3Mg
JGNhbGxXaXRoOwogICAgIG15ICRvdXRwdXRBcnJheSA9IHNoaWZ0OwogICAgIG15ICRpbmRlbnQg
PSBzaGlmdDsKICAgICBteSAkcmV0dXJuVm9pZCA9IHNoaWZ0OwogICAgIG15ICRlbXB0eUNvbnRl
eHQgPSBzaGlmdDsKLSAgICBteSAkY2FsbFdpdGhBcmcgPSAiQ09NUElMRV9BU1NFUlQoZmFsc2Up
IjsKIAotICAgIGlmICgkY2FsbFdpdGggZXEgIlNjcmlwdFN0YXRlIikgeworICAgIG15IEBjYWxs
V2l0aEFyZ3M7CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRlZEF0dHJpYnV0ZUNvbnRh
aW5zKCRjYWxsV2l0aCwgIlNjcmlwdFN0YXRlIikpIHsKICAgICAgICAgaWYgKCRlbXB0eUNvbnRl
eHQpIHsKICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJFbXB0eVNj
cmlwdFN0YXRlIHN0YXRlO1xuIik7Ci0gICAgICAgICAgICAkY2FsbFdpdGhBcmcgPSAiJnN0YXRl
IjsKKyAgICAgICAgICAgIHB1c2goQGNhbGxXaXRoQXJncywgIiZzdGF0ZSIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIlNjcmlw
dFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7XG4iKTsKICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJpZiAoIXN0YXRlKVxuIik7CiAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiICAgIHJldHVybiIgLiAoJHJldHVy
blZvaWQgPyAiIiA6ICIgdjg6OlVuZGVmaW5lZCgpIikgLiAiO1xuIik7Ci0gICAgICAgICAgICAk
Y2FsbFdpdGhBcmcgPSAic3RhdGUiOworICAgICAgICAgICAgcHVzaChAY2FsbFdpdGhBcmdzLCAi
c3RhdGUiKTsKICAgICAgICAgfQotICAgIH0gZWxzaWYgKCRjYWxsV2l0aCBlcSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCIpIHsKKyAgICB9CisgICAgaWYgKCRjb2RlR2VuZXJhdG9yLT5FeHRlbmRl
ZEF0dHJpYnV0ZUNvbnRhaW5zKCRjYWxsV2l0aCwgIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQiKSkg
ewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTtcbiIp
OwogICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiaWYgKCFzY3JpcHRDb250
ZXh0KVxuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICIgICAgcmV0
dXJuIiAuICgkcmV0dXJuVm9pZCA/ICIiIDogIiB2ODo6VW5kZWZpbmVkKCkiKSAuICI7XG4iKTsK
LSAgICAgICAgJGNhbGxXaXRoQXJnID0gInNjcmlwdENvbnRleHQiOworICAgICAgICBwdXNoKEBj
YWxsV2l0aEFyZ3MsICJzY3JpcHRDb250ZXh0Iik7CiAgICAgfQotCi0gICAgcmV0dXJuICRjYWxs
V2l0aEFyZzsKKyAgICByZXR1cm4gQGNhbGxXaXRoQXJnczsKIH0KIAogc3ViIEdlbmVyYXRlQXJn
dW1lbnRzQ291bnRDaGVjawpAQCAtMzIwMywxNCArMzE5NywxMyBAQCBzdWIgR2VuZXJhdGVGdW5j
dGlvbkNhbGxTdHJpbmcoKQogICAgICAgICAkZnVuY3Rpb25OYW1lID0gImltcC0+JHtuYW1lfSI7
CiAgICAgfQogCi0gICAgbXkgJGNhbGxXaXRoID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJDYWxsV2l0aCJ9IHx8ICIiOwotICAgIGlmICgkY2FsbFdpdGgpIHsK
LSAgICAgICAgbXkgQGNhbGxXaXRoT3V0cHV0ID0gKCk7Ci0gICAgICAgIHB1c2goQGFyZ3VtZW50
cywgR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsIFxAY2FsbFdpdGhPdXRwdXQsICRpbmRlbnQs
IDAsIDEpKTsKLSAgICAgICAgJHJlc3VsdCAuPSBqb2luKCIiLCBAY2FsbFdpdGhPdXRwdXQpOwot
ICAgICAgICAkaW5kZXgrKzsKLSAgICAgICAgJG51bWJlck9mUGFyYW1ldGVycysrCi0gICAgfQor
ICAgIG15ICRjYWxsV2l0aCA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPnsiQ2FsbFdpdGgifTsKKyAgICBteSBAY2FsbFdpdGhPdXRwdXQgPSAoKTsKKyAgICBteSBA
Y2FsbFdpdGhBcmdzID0gR2VuZXJhdGVDYWxsV2l0aCgkY2FsbFdpdGgsIFxAY2FsbFdpdGhPdXRw
dXQsICRpbmRlbnQsIDAsIDEpOworICAgICRyZXN1bHQgLj0gam9pbigiIiwgQGNhbGxXaXRoT3V0
cHV0KTsKKyAgICBwdXNoKEBhcmd1bWVudHMsIEBjYWxsV2l0aEFyZ3MpOworICAgICRpbmRleCAr
PSBAY2FsbFdpdGhBcmdzOworICAgICRudW1iZXJPZlBhcmFtZXRlcnMgKz0gQGNhbGxXaXRoQXJn
czsKIAogICAgIGZvcmVhY2ggbXkgJHBhcmFtZXRlciAoQHskZnVuY3Rpb24tPnBhcmFtZXRlcnN9
KSB7CiAgICAgICAgIGlmICgkaW5kZXggZXEgJG51bWJlck9mUGFyYW1ldGVycykgewpAQCAtMzI1
MCwxMyArMzI0MywxMyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxTdHJpbmcoKQogCiAgICAg
aWYgKCRyZXR1cm5UeXBlIGVxICJ2b2lkIikgewogICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQg
LiAiJGZ1bmN0aW9uU3RyaW5nO1xuIjsKLSAgICB9IGVsc2lmICgkY2FsbFdpdGggZXEgIlNjcmlw
dFN0YXRlIiBvciBAeyRmdW5jdGlvbi0+cmFpc2VzRXhjZXB0aW9uc30pIHsKKyAgICB9IGVsc2lm
ICgkY29kZUdlbmVyYXRvci0+RXh0ZW5kZWRBdHRyaWJ1dGVDb250YWlucygkY2FsbFdpdGgsICJT
Y3JpcHRTdGF0ZSIpIG9yIEB7JGZ1bmN0aW9uLT5yYWlzZXNFeGNlcHRpb25zfSkgewogICAgICAg
ICAkcmVzdWx0IC49ICRpbmRlbnQgLiAkbmF0aXZlUmV0dXJuVHlwZSAuICIgcmVzdWx0ID0gJGZ1
bmN0aW9uU3RyaW5nO1xuIjsKICAgICB9IGVsc2UgewogICAgICAgICAjIENhbiBpbmxpbmUgdGhl
IGZ1bmN0aW9uIGNhbGwgaW50byB0aGUgcmV0dXJuIHN0YXRlbWVudCB0byBhdm9pZCBvdmVyaGVh
ZCBvZiB1c2luZyBhIFJlZjw+IHRlbXBvcmFyeQogICAgICAgICAkcmV0dXJuID0gJGZ1bmN0aW9u
U3RyaW5nOwogICAgICAgICAkcmV0dXJuSXNSZWYgPSAwOwotICAgIAorCiAgICAgICAgIGlmICgk
aW1wbENsYXNzTmFtZSBlcSAiU1ZHVHJhbnNmb3JtTGlzdCIgYW5kIElzUmVmUHRyVHlwZSgkcmV0
dXJuVHlwZSkpIHsKICAgICAgICAgICAgICRyZXR1cm4gPSAiV1RGOjpnZXRQdHIoIiAuICRyZXR1
cm4gLiAiKSI7CiAgICAgICAgIH0KQEAgLTMyNjcsNyArMzI2MCw3IEBAIHN1YiBHZW5lcmF0ZUZ1
bmN0aW9uQ2FsbFN0cmluZygpCiAgICAgICAgICRyZXN1bHQgLj0gJGluZGVudCAuICIgICAgZ290
byBmYWlsO1xuIjsKICAgICB9CiAKLSAgICBpZiAoJGNhbGxXaXRoIGVxICJTY3JpcHRTdGF0ZSIp
IHsKKyAgICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGNh
bGxXaXRoLCAiU2NyaXB0U3RhdGUiKSkgewogICAgICAgICAkcmVzdWx0IC49ICRpbmRlbnQgLiAi
aWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKVxuIjsKICAgICAgICAgJHJlc3VsdCAuPSAkaW5kZW50
IC4gIiAgICByZXR1cm4gdGhyb3dFcnJvcihzdGF0ZS5leGNlcHRpb24oKSk7XG4iCiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJE
T01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAv
V2ViRE9NVGVzdE9iai5jcHAKaW5kZXggNjY1NzNkOWY4YzI3ZWE4MDI4NmY0NTA0ZGU3OGZkMmZl
MWNiMzMzYy4uNGY5MjZkZjI2ZmVhZjdkMTZlOTJmMWU1YTJkNWE0ZjQxYTUyOGM3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0
T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dl
YkRPTVRlc3RPYmouY3BwCkBAIC01NjEsNiArNTYxLDU5IEBAIHZvaWQgV2ViRE9NVGVzdE9iajo6
c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoY29uc3QgV2ViRE9N
VGVzCiAgICAgd2ViRE9NUmFpc2VFcnJvcihzdGF0aWNfY2FzdDxXZWJET01FeGNlcHRpb25Db2Rl
PihlYykpOwogfQogCitXZWJET01UZXN0T2JqIFdlYkRPTVRlc3RPYmo6OndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUoKSBjb25zdAoreworICAgIGlmICgh
aW1wbCgpKQorICAgICAgICByZXR1cm4gV2ViRE9NVGVzdE9iaigpOworCisgICAgcmV0dXJuIHRv
V2ViS2l0KFdURjo6Z2V0UHRyKGltcGwoKS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSgpKSk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9iajo6c2V0V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShjb25zdCBXZWJE
T01UZXN0T2JqJiBuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlKQoreworICAgIGlmICghaW1wbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpbXBs
KCktPnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUo
dG9XZWJDb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUpKTsKK30KKworV2ViRE9NVGVzdE9iaiBXZWJET01UZXN0T2JqOjp3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKCkgY29uc3QKK3sKKyAg
ICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTVRlc3RPYmooKTsKKworICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkRPTVRlc3RPYmogcmVzdWx0ID0g
dG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGVjKSkpOworICAgIHdlYkRPTVJhaXNlRXJyb3Io
c3RhdGljX2Nhc3Q8V2ViRE9NRXhjZXB0aW9uQ29kZT4oZWMpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCit2b2lkIFdlYkRPTVRlc3RPYmo6OnNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoY29uc3QgV2ViRE9NVGVzdE9iaiYgbmV3V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcykKK3sK
KyAgICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViQ29yZTo6RXhjZXB0
aW9uQ29kZSBlYyA9IDA7CisgICAgaW1wbCgpLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKHRvV2ViQ29yZShuZXdXaXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKSwgZWMpOworICAgIHdl
YkRPTVJhaXNlRXJyb3Ioc3RhdGljX2Nhc3Q8V2ViRE9NRXhjZXB0aW9uQ29kZT4oZWMpKTsKK30K
KworV2ViRE9NVGVzdE9iaiBXZWJET01UZXN0T2JqOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgaWYgKCFp
bXBsKCkpCisgICAgICAgIHJldHVybiBXZWJET01UZXN0T2JqKCk7CisKKyAgICByZXR1cm4gdG9X
ZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgpKSk7Cit9CisKK3ZvaWQgV2ViRE9NVGVzdE9i
ajo6c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUoY29uc3QgV2ViRE9NVGVzdE9iaiYgbmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUpCit7CisgICAgaWYgKCFpbXBsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGltcGwoKS0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUodG9XZWJDb3JlKG5ld1dpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKSk7
Cit9CisKIFdlYkRPTVN0cmluZyBXZWJET01UZXN0T2JqOjpzY3JpcHRTdHJpbmdBdHRyKCkgY29u
c3QKIHsKICAgICBpZiAoIWltcGwoKSkKQEAgLTkxOSw2ICs5NzIsMzMgQEAgdm9pZCBXZWJET01U
ZXN0T2JqOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpCiAgICAgaW1wbCgpLT53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQogCit2b2lkIFdlYkRPTVRlc3RPYmo6OndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoKQoreworICAgIGlmICghaW1wbCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpbXBsKCktPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGUoKTsKK30KKworV2ViRE9NVGVzdE9iaiBXZWJET01UZXN0T2JqOjp3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKCkKK3sKKyAg
ICBpZiAoIWltcGwoKSkKKyAgICAgICAgcmV0dXJuIFdlYkRPTVRlc3RPYmooKTsKKworICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFdlYkRPTVRlc3RPYmogcmVzdWx0ID0g
dG9XZWJLaXQoV1RGOjpnZXRQdHIoaW1wbCgpLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKGVjKSkpOworICAgIHdlYkRPTVJhaXNlRXJyb3Ioc3Rh
dGljX2Nhc3Q8V2ViRE9NRXhjZXB0aW9uQ29kZT4oZWMpKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitXZWJET01UZXN0T2JqIFdlYkRPTVRlc3RPYmo6OndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKCkKK3sKKyAgICBpZiAoIWltcGwoKSkKKyAgICAg
ICAgcmV0dXJuIFdlYkRPTVRlc3RPYmooKTsKKworICAgIHJldHVybiB0b1dlYktpdChXVEY6Omdl
dFB0cihpbXBsKCktPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzKCkpKTsKK30KKwogdm9pZCBXZWJET01UZXN0T2JqOjptZXRob2RXaXRoT3B0aW9uYWxB
cmcoaW50IG9wdCkKIHsKICAgICBpZiAoIWltcGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE9iai5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKaW5kZXggZjUz
NWQyMGQ0NTgwNjhmZWYyMWI0OGU1NTM2MjVkNGRjZDZmMDA4Ny4uNzQzOGM1ZGM0ZDEzNzljNTU5
NjIyYmIzNzNkMzY4MGQ5NDJlZjFlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0T2JqLmgKQEAgLTEyOCw2ICsxMjgs
MTIgQEAgcHVibGljOgogICAgIHZvaWQgc2V0V2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
KGNvbnN0IFdlYkRPTVRlc3RPYmomKTsKICAgICBXZWJET01UZXN0T2JqIHdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRXaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhjb25zdCBXZWJET01UZXN0T2JqJik7
CisgICAgV2ViRE9NVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKGNvbnN0IFdlYkRPTVRlc3RPYmomKTsKKyAgICBX
ZWJET01UZXN0T2JqIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGVSYWlzZXMoKSBjb25zdDsKKyAgICB2b2lkIHNldFdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoY29uc3QgV2ViRE9NVGVzdE9iaiYpOwor
ICAgIFdlYkRPTVRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKSBjb25zdDsKKyAgICB2b2lkIHNldFdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKGNvbnN0IFdlYkRP
TVRlc3RPYmomKTsKICAgICBXZWJET01TdHJpbmcgc2NyaXB0U3RyaW5nQXR0cigpIGNvbnN0Owog
I2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIGludCBjb25kaXRpb25hbEF0dHIxKCkgY29uc3Q7
CkBAIC0xODMsNiArMTg5LDkgQEAgcHVibGljOgogICAgIHZvaWQgd2l0aFNjcmlwdFN0YXRlVm9p
ZEV4Y2VwdGlvbigpOwogICAgIFdlYkRPTVRlc3RPYmogd2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0
aW9uKCk7CiAgICAgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIHZvaWQg
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSgpOworICAgIFdlYkRPTVRl
c3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlv
bigpOworICAgIFdlYkRPTVRlc3RPYmogd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXMoKTsKICAgICB2b2lkIG1ldGhvZFdpdGhPcHRpb25hbEFyZyhpbnQg
b3B0KTsKICAgICB2b2lkIG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnKGlu
dCBub25PcHQsIGludCBvcHQpOwogICAgIHZvaWQgbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5k
VHdvT3B0aW9uYWxBcmdzKGludCBub25PcHQsIGludCBvcHQxLCBpbnQgb3B0Mik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRE
T01UZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2Jq
ZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCmluZGV4IGFmZjcyNmE1NTNhMDg4ZDg5MTk0MGM3ZDVi
ZjhiZWM1NjExYTk2MzEuLmRmMmY0OTM3MjEyY2UxNThmNjg1YzVkNzAyZWYzMGFhNjVlYTkzZTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0
L1dlYktpdERPTVRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouY3BwCkBAIC0zMDgsNiArMzA4LDQyIEBA
IHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHQoV2ViS2l0
RE9NVGVzdE9iaiogc2VsZikKIH0KIAogdm9pZAord2Via2l0X2RvbV90ZXN0X29ial93aXRoX3Nj
cmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlKFdlYktpdERPTVRlc3RPYmoq
IHNlbGYpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZWxmKTsKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBX
ZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgaXRlbS0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZSgpOworfQorCitXZWJLaXRET01UZXN0T2JqKgord2Via2l0X2RvbV90ZXN0
X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX29ial9l
eGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoc2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFk
TnVsbFN0YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpj
b3JlKHNlbGYpOworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKGVjKSk7CisgICAg
aWYgKGVjKSB7CisgICAgICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rl
c2MoZWMpOworICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21f
c3RyaW5nKCJXRUJLSVRfRE9NIiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgfQor
ICAgIFdlYktpdERPTVRlc3RPYmoqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKTsKKyAg
ICByZXR1cm4gcmVzOworfQorCitXZWJLaXRET01UZXN0T2JqKgord2Via2l0X2RvbV90ZXN0X29i
al93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX3dpdGhfc3Bh
Y2VzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
c2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFBhc3NS
ZWZQdHI8V2ViQ29yZTo6VGVzdE9iaj4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT53aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcygpKTsKKyAgICBXZWJL
aXRET01UZXN0T2JqKiByZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7CisgICAgcmV0dXJu
IHJlczsKK30KKwordm9pZAogd2Via2l0X2RvbV90ZXN0X29ial9tZXRob2Rfd2l0aF9vcHRpb25h
bF9hcmcoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgZ2xvbmcgb3B0KQogewogICAgIGdfcmV0dXJu
X2lmX2ZhaWwoc2VsZik7CkBAIC0xMTkwLDYgKzEyMjYsOTQgQEAgd2Via2l0X2RvbV90ZXN0X29i
al9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYXR0cmlidXRlX3JhaXNlcyhXZWJL
aXRET00KICAgICB9CiB9CiAKK1dlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rlc3Rfb2Jq
X2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX2F0dHJp
YnV0ZShXZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KHNlbGYsIDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAg
ICBXZWJDb3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBQYXNz
UmVmUHRyPFdlYkNvcmU6OlRlc3RPYmo+IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpKTsKKyAgICBXZWJL
aXRET01UZXN0T2JqKiByZXMgPSBXZWJLaXQ6OmtpdChnX3Jlcy5nZXQoKSk7CisgICAgcmV0dXJu
IHJlczsKK30KKwordm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhl
Y3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9i
aiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUpCit7CisgICAgZ19yZXR1cm5faWZfZmFp
bChzZWxmKTsKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
V2ViQ29yZTo6VGVzdE9iaiAqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgZ19yZXR1
cm5faWZfZmFpbCh2YWx1ZSk7CisgICAgV2ViQ29yZTo6VGVzdE9iaiAqIGNvbnZlcnRlZF92YWx1
ZSA9IE5VTEw7CisgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgY29udmVydGVkX3Zh
bHVlID0gV2ViS2l0Ojpjb3JlKHZhbHVlKTsKKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbChjb252
ZXJ0ZWRfdmFsdWUpOworICAgIH0KKyAgICBpdGVtLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKGNvbnZlcnRlZF92YWx1ZSk7Cit9CisKK1dlYktp
dERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRp
b25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZiwgR0Vycm9yICoqZXJyb3IpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
c2VsZiwgMCk7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAg
IFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYpOworICAgIFdlYkNv
cmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6VGVzdE9i
aj4gZ19yZXMgPSBXVEY6OmdldFB0cihpdGVtLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKGVjKSk7CisgICAgaWYgKGVjKSB7CisgICAgICAg
IFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbiBlY2Rlc2MoZWMpOworICAgICAgICBn
X3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJLSVRfRE9N
IiksIGVjZGVzYy5jb2RlLCBlY2Rlc2MubmFtZSk7CisgICAgfQorICAgIFdlYktpdERPTVRlc3RP
YmoqIHJlcyA9IFdlYktpdDo6a2l0KGdfcmVzLmdldCgpKTsKKyAgICByZXR1cm4gcmVzOworfQor
Cit2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29u
dGV4dF9hbmRfc2NyaXB0X3N0YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiog
c2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUsIEdFcnJvciAqKmVycm9yKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRl
IHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNlbGYp
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBj
b252ZXJ0ZWRfdmFsdWUgPSBOVUxMOworICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAgICAg
IGNvbnZlcnRlZF92YWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAgICAgIGdfcmV0dXJu
X2lmX2ZhaWwoY29udmVydGVkX3ZhbHVlKTsKKyAgICB9CisgICAgV2ViQ29yZTo6RXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgaXRlbS0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhjb252ZXJ0ZWRfdmFsdWUsIGVjKTsKKyAgICBpZiAo
ZWMpIHsKKyAgICAgICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZURlc2NyaXB0aW9uIGVjZGVzYyhl
Yyk7CisgICAgICAgIGdfc2V0X2Vycm9yX2xpdGVyYWwoZXJyb3IsIGdfcXVhcmtfZnJvbV9zdHJp
bmcoIldFQktJVF9ET00iKSwgZWNkZXNjLmNvZGUsIGVjZGVzYy5uYW1lKTsKKyAgICB9Cit9CisK
K1dlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9l
eGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX3dpdGhfc3BhY2VzX2F0dHJpYnV0ZShX
ZWJLaXRET01UZXN0T2JqKiBzZWxmKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKHNlbGYs
IDApOworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJD
b3JlOjpUZXN0T2JqICogaXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBQYXNzUmVmUHRy
PFdlYkNvcmU6OlRlc3RPYmo+IGdfcmVzID0gV1RGOjpnZXRQdHIoaXRlbS0+d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoKSk7CisgICAg
V2ViS2l0RE9NVGVzdE9iaiogcmVzID0gV2ViS2l0OjpraXQoZ19yZXMuZ2V0KCkpOworICAgIHJl
dHVybiByZXM7Cit9CisKK3ZvaWQKK3dlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0
X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfd2l0aF9zcGFjZXNfYXR0cmlidXRl
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlKQoreworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoc2VsZik7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIFdlYkNvcmU6OlRlc3RPYmogKiBpdGVtID0gV2ViS2l0Ojpjb3JlKHNl
bGYpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOworICAgIFdlYkNvcmU6OlRlc3RPYmog
KiBjb252ZXJ0ZWRfdmFsdWUgPSBOVUxMOworICAgIGlmICh2YWx1ZSAhPSBOVUxMKSB7CisgICAg
ICAgIGNvbnZlcnRlZF92YWx1ZSA9IFdlYktpdDo6Y29yZSh2YWx1ZSk7CisgICAgICAgIGdfcmV0
dXJuX2lmX2ZhaWwoY29udmVydGVkX3ZhbHVlKTsKKyAgICB9CisgICAgaXRlbS0+c2V0V2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoY29u
dmVydGVkX3ZhbHVlKTsKK30KKwogZ2NoYXIqCiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX2dldF9zY3Jp
cHRfc3RyaW5nX2F0dHIoV2ViS2l0RE9NVGVzdE9iaiogc2VsZikKIHsKQEAgLTE0NDMsNiArMTU2
Nyw5IEBAIGVudW0gewogICAgIFBST1BfV0lUSF9TQ1JJUFRfRVhFQ1VUSU9OX0NPTlRFWFRfQVRU
UklCVVRFLAogICAgIFBST1BfV0lUSF9TQ1JJUFRfU1RBVEVfQVRUUklCVVRFX1JBSVNFUywKICAg
ICBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FUVFJJQlVURV9SQUlTRVMsCisg
ICAgUFJPUF9XSVRIX1NDUklQVF9FWEVDVVRJT05fQ09OVEVYVF9BTkRfU0NSSVBUX1NUQVRFX0FU
VFJJQlVURSwKKyAgICBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FORF9TQ1JJ
UFRfU1RBVEVfQVRUUklCVVRFX1JBSVNFUywKKyAgICBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElP
Tl9DT05URVhUX0FORF9TQ1JJUFRfU1RBVEVfV0lUSF9TUEFDRVNfQVRUUklCVVRFLAogICAgIFBS
T1BfU0NSSVBUX1NUUklOR19BVFRSLAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIFBST1Bf
Q09ORElUSU9OQUxfQVRUUjEsCkBAIC0xNzgzLDYgKzE5MTAsMjUgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X29ial9nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9w
X2lkLCBHVmEKICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCBXZWJLaXQ6OmtpdChw
dHIuZ2V0KCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgUFJPUF9XSVRIX1ND
UklQVF9FWEVDVVRJT05fQ09OVEVYVF9BTkRfU0NSSVBUX1NUQVRFX0FUVFJJQlVURToKKyAgICB7
CisgICAgICAgIFJlZlB0cjxXZWJDb3JlOjpUZXN0T2JqPiBwdHIgPSBjb3JlU2VsZi0+d2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZSgpOworICAgICAgICBn
X3ZhbHVlX3NldF9vYmplY3QodmFsdWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOworICAgICAg
ICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05U
RVhUX0FORF9TQ1JJUFRfU1RBVEVfQVRUUklCVVRFX1JBSVNFUzoKKyAgICB7CisgICAgICAgIFdl
YkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBSZWZQdHI8V2ViQ29yZTo6VGVz
dE9iaj4gcHRyID0gY29yZVNlbGYtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMpOworICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QodmFs
dWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
Y2FzZSBQUk9QX1dJVEhfU0NSSVBUX0VYRUNVVElPTl9DT05URVhUX0FORF9TQ1JJUFRfU1RBVEVf
V0lUSF9TUEFDRVNfQVRUUklCVVRFOgorICAgIHsKKyAgICAgICAgUmVmUHRyPFdlYkNvcmU6OlRl
c3RPYmo+IHB0ciA9IGNvcmVTZWxmLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSgpOworICAgICAgICBnX3ZhbHVlX3NldF9vYmplY3Qo
dmFsdWUsIFdlYktpdDo6a2l0KHB0ci5nZXQoKSkpOworICAgICAgICBicmVhazsKKyAgICB9CiAg
ICAgY2FzZSBQUk9QX1NDUklQVF9TVFJJTkdfQVRUUjoKICAgICB7CiAgICAgICAgIGdfdmFsdWVf
dGFrZV9zdHJpbmcodmFsdWUsIGNvbnZlcnRUb1VURjhTdHJpbmcoY29yZVNlbGYtPnNjcmlwdFN0
cmluZ0F0dHIoKSkpOwpAQCAtMjA5Nyw2ICsyMjQzLDI3IEBAIEdfTUFYTE9ORywgLyogbWF4ICov
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdFQktJVF9UWVBFX0RPTV9URVNUX09CSiwgLyogZ29iamVjdCB0eXBlICovCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJ
VF9QQVJBTV9SRUFEV1JJVEUpKTsKICAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5
KGdvYmplY3RDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBST1Bf
V0lUSF9TQ1JJUFRfRVhFQ1VUSU9OX0NPTlRFWFRfQU5EX1NDUklQVF9TVEFURV9BVFRSSUJVVEUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0
KCJ3aXRoLXNjcmlwdC1leGVjdXRpb24tY29udGV4dC1hbmQtc2NyaXB0LXN0YXRlLWF0dHJpYnV0
ZSIsIC8qIG5hbWUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX3dpdGgtc2NyaXB0LWV4ZWN1dGlvbi1jb250ZXh0
LWFuZC1zY3JpcHQtc3RhdGUtYXR0cmlidXRlIiwgLyogc2hvcnQgZGVzY3JpcHRpb24gKi8KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InJlYWQtd3JpdGUgIFdlYktpdERPTVRlc3RPYmoqIFRlc3RPYmoud2l0aC1zY3JpcHQtZXhlY3V0
aW9uLWNvbnRleHQtYW5kLXNjcmlwdC1zdGF0ZS1hdHRyaWJ1dGUiLCAvKiBsb25nZXIgLSBjb3Vs
ZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1RZUEVfRE9N
X1RFU1RfT0JKLCAvKiBnb2JqZWN0IHR5cGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkp
OworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENsYXNzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSVRIX1NDUklQVF9FWEVDVVRJ
T05fQ09OVEVYVF9BTkRfU0NSSVBUX1NUQVRFX0FUVFJJQlVURV9SQUlTRVMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3BhcmFtX3NwZWNfb2JqZWN0KCJ3aXRoLXNjcmlw
dC1leGVjdXRpb24tY29udGV4dC1hbmQtc2NyaXB0LXN0YXRlLWF0dHJpYnV0ZS1yYWlzZXMiLCAv
KiBuYW1lICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0ZXN0X29ial93aXRoLXNjcmlwdC1leGVjdXRpb24tY29udGV4dC1hbmQt
c2NyaXB0LXN0YXRlLWF0dHJpYnV0ZS1yYWlzZXMiLCAvKiBzaG9ydCBkZXNjcmlwdGlvbiAqLwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAicmVhZC13cml0ZSAgV2ViS2l0RE9NVGVzdE9iaiogVGVzdE9iai53aXRoLXNjcmlwdC1leGVj
dXRpb24tY29udGV4dC1hbmQtc2NyaXB0LXN0YXRlLWF0dHJpYnV0ZS1yYWlzZXMiLCAvKiBsb25n
ZXIgLSBjb3VsZCBkbyB3aXRoIHNvbWUgZXh0cmEgZG9jIHN0dWZmIGhlcmUgKi8KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lU
X1RZUEVfRE9NX1RFU1RfT0JKLCAvKiBnb2JqZWN0IHR5cGUgKi8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JF
QURXUklURSkpOworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdENs
YXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPUF9XSVRIX1NDUklQ
VF9FWEVDVVRJT05fQ09OVEVYVF9BTkRfU0NSSVBUX1NUQVRFX1dJVEhfU1BBQ0VTX0FUVFJJQlVU
RSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19vYmpl
Y3QoIndpdGgtc2NyaXB0LWV4ZWN1dGlvbi1jb250ZXh0LWFuZC1zY3JpcHQtc3RhdGUtd2l0aC1z
cGFjZXMtYXR0cmlidXRlIiwgLyogbmFtZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdF9vYmpfd2l0aC1zY3JpcHQtZXhl
Y3V0aW9uLWNvbnRleHQtYW5kLXNjcmlwdC1zdGF0ZS13aXRoLXNwYWNlcy1hdHRyaWJ1dGUiLCAv
KiBzaG9ydCBkZXNjcmlwdGlvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAicmVhZC13cml0ZSAgV2ViS2l0RE9NVGVzdE9iaiog
VGVzdE9iai53aXRoLXNjcmlwdC1leGVjdXRpb24tY29udGV4dC1hbmQtc2NyaXB0LXN0YXRlLXdp
dGgtc3BhY2VzLWF0dHJpYnV0ZSIsIC8qIGxvbmdlciAtIGNvdWxkIGRvIHdpdGggc29tZSBleHRy
YSBkb2Mgc3R1ZmYgaGVyZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBXRUJLSVRfVFlQRV9ET01fVEVTVF9PQkosIC8qIGdvYmpl
Y3QgdHlwZSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisgICAgZ19vYmplY3RfY2xh
c3NfaW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0Q2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBQUk9QX1NDUklQVF9TVFJJTkdfQVRUUiwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoInNjcmlwdC1zdHJpbmctYXR0
ciIsIC8qIG5hbWUgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInRlc3Rfb2JqX3NjcmlwdC1zdHJpbmctYXR0ciIsIC8qIHNob3J0
IGRlc2NyaXB0aW9uICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0T2JqLmgKaW5kZXggYzZkYzY5
Y2UzZDRiMTIxNzY4MjZiMDU2ODAwNGM4MWYxZjlhM2ZhMC4uMzY3YjcxNjE1NzBhY2Q2NWEyNjQ1
Njc0MzZhZDk2OWYwOGYwOTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE9iai5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RPYmouaApAQCAt
MjI2LDYgKzIyNiwzNyBAQCBXRUJLSVRfQVBJIHZvaWQKIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0
aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHQoV2ViS2l0RE9NVGVzdE9iaiogc2VsZik7CiAKIC8q
KgorICogd2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9h
bmRfc2NyaXB0X3N0YXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAqCisgKiBS
ZXR1cm5zOgorICoKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3Rfb2JqX3dp
dGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGUoV2ViS2l0RE9NVGVz
dE9iaiogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9l
eGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX29ial9leGNlcHRpb246CisgKiBAc2Vs
ZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICogQGVycm9yOiAjR0Vycm9yCisgKgorICogUmV0dXJu
czogKHRyYW5zZmVyIG5vbmUpOgorICoKKyoqLworV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2Jq
Kgord2Via2l0X2RvbV90ZXN0X29ial93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRf
c2NyaXB0X3N0YXRlX29ial9leGNlcHRpb24oV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9y
ICoqZXJyb3IpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfd2l0aF9zY3JpcHRfZXhl
Y3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRoX3NwYWNlczoKKyAqIEBzZWxmOiBB
ICNXZWJLaXRET01UZXN0T2JqCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOgorICoK
KyoqLworV0VCS0lUX0FQSSBXZWJLaXRET01UZXN0T2JqKgord2Via2l0X2RvbV90ZXN0X29ial93
aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0YXRlX3dpdGhfc3BhY2Vz
KFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpf
bWV0aG9kX3dpdGhfb3B0aW9uYWxfYXJnOgogICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoK
ICAqIEBvcHQ6IEEgI2dsb25nCkBAIC0xMDUzLDYgKzEwODQsNzEgQEAgV0VCS0lUX0FQSSB2b2lk
CiB3ZWJraXRfZG9tX3Rlc3Rfb2JqX3NldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9h
dHRyaWJ1dGVfcmFpc2VzKFdlYktpdERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoq
IHZhbHVlLCBHRXJyb3IgKiplcnJvcik7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9n
ZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1
dGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6ICh0cmFu
c2ZlciBub25lKToKKyAqCisqKi8KK1dFQktJVF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtp
dF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3Jp
cHRfc3RhdGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKKyAqIHdl
YmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9z
Y3JpcHRfc3RhdGVfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAq
IEB2YWx1ZTogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBu
b25lKToKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRf
d2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGUo
V2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0RE9NVGVzdE9iaiogdmFsdWUpOworCisvKioK
KyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0
X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlczoKKyAqIEBzZWxmOiBBICNXZWJLaXRE
T01UZXN0T2JqCisgKiBAZXJyb3I6ICNHRXJyb3IKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIg
bm9uZSk6CisgKgorKiovCitXRUJLSVRfQVBJIFdlYktpdERPTVRlc3RPYmoqCit3ZWJraXRfZG9t
X3Rlc3Rfb2JqX2dldF93aXRoX3NjcmlwdF9leGVjdXRpb25fY29udGV4dF9hbmRfc2NyaXB0X3N0
YXRlX2F0dHJpYnV0ZV9yYWlzZXMoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgR0Vycm9yICoqZXJy
b3IpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1
dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVfYXR0cmlidXRlX3JhaXNlczoKKyAqIEBzZWxm
OiBBICNXZWJLaXRET01UZXN0T2JqCisgKiBAdmFsdWU6IEEgI1dlYktpdERPTVRlc3RPYmoKKyAq
IEBlcnJvcjogI0dFcnJvcgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisq
Ki8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRf
ZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV9hdHRyaWJ1dGVfcmFpc2VzKFdlYktp
dERPTVRlc3RPYmoqIHNlbGYsIFdlYktpdERPTVRlc3RPYmoqIHZhbHVlLCBHRXJyb3IgKiplcnJv
cik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X29ial9nZXRfd2l0aF9zY3JpcHRfZXhlY3V0
aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9zdGF0ZV93aXRoX3NwYWNlc19hdHRyaWJ1dGU6CisgKiBA
c2VsZjogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25l
KToKKyAqCisqKi8KK1dFQktJVF9BUEkgV2ViS2l0RE9NVGVzdE9iaioKK3dlYmtpdF9kb21fdGVz
dF9vYmpfZ2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2FuZF9zY3JpcHRfc3RhdGVf
d2l0aF9zcGFjZXNfYXR0cmlidXRlKFdlYktpdERPTVRlc3RPYmoqIHNlbGYpOworCisvKioKKyAq
IHdlYmtpdF9kb21fdGVzdF9vYmpfc2V0X3dpdGhfc2NyaXB0X2V4ZWN1dGlvbl9jb250ZXh0X2Fu
ZF9zY3JpcHRfc3RhdGVfd2l0aF9zcGFjZXNfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RPYmoKKyAqIEB2YWx1ZTogQSAjV2ViS2l0RE9NVGVzdE9iagorICoKKyAqIFJldHVy
bnM6ICh0cmFuc2ZlciBub25lKToKKyAqCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2Rv
bV90ZXN0X29ial9zZXRfd2l0aF9zY3JpcHRfZXhlY3V0aW9uX2NvbnRleHRfYW5kX3NjcmlwdF9z
dGF0ZV93aXRoX3NwYWNlc19hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdE9iaiogc2VsZiwgV2ViS2l0
RE9NVGVzdE9iaiogdmFsdWUpOworCisvKioKICAqIHdlYmtpdF9kb21fdGVzdF9vYmpfZ2V0X3Nj
cmlwdF9zdHJpbmdfYXR0cjoKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0T2JqCiAgKgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmNwcAppbmRleCBkMmYzNzVhMzVlMzcwYjhmN2FhN2I2MTViOTkxNmUzNzEzMTQwZjQwLi5hODZk
MzBlZTdlNWExNWRiZmI5NjdlYjRiZDQyMTUwZjY5MmY4YTI5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAtMTA5
LDYgKzEwOSw5IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RPYmpUYWJsZVZh
bHVlc1tdID0KICAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZSIsIERv
bnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
Yz4oanNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUpLCAoaW50cHRy
X3Qpc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGUsIE5vSW50
cmluc2ljIH0sCiAgICAgeyAid2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgRG9udERl
bGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMpLCAoaW50cHRyX3Qpc2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzLCBOb0ludHJpbnNpYyB9LAogICAg
IHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgRG9udERlbGV0
ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyksIChpbnRwdHJf
dClzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcywg
Tm9JbnRyaW5zaWMgfSwKKyAgICB7ICJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKSwgKGludHB0cl90KXNldEpTVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUsIE5vSW50cmluc2ljIH0s
CisgICAgeyAid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcyIsIERvbnREZWxldGUsIChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyksIChpbnRwdHJfdClzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzLCBOb0ludHJpbnNp
YyB9LAorICAgIHsgIndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlIiwgRG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSksIChpbnRwdHJfdClzZXRKU1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZSwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJzY3JpcHRTdHJpbmdBdHRyIiwgRG9udERlbGV0
ZSB8IFJlYWRPbmx5LCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1
ZUZ1bmM+KGpzVGVzdE9ialNjcmlwdFN0cmluZ0F0dHIpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5z
aWMgfSwKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICB7ICJjb25kaXRpb25hbEF0dHIxIiwg
RG9udERlbGV0ZSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKSwgKGludHB0cl90KXNldEpTVGVzdE9iakNv
bmRpdGlvbmFsQXR0cjEsIE5vSW50cmluc2ljIH0sCkBAIC0yNjYsNiArMjY5LDkgQEAgc3RhdGlj
IGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9ialByb3RvdHlwZVRhYmxlVmFsdWVzW10gPQog
ICAgIHsgIndpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24iLCBEb250RGVsZXRlIHwgSlNDOjpG
dW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb24pLCAoaW50cHRyX3Qp
MCwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iLCBE
b250RGVsZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1
bmN0aW9uPihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRTdGF0ZU9iakV4Y2Vw
dGlvbiksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAogICAgIHsgIndpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0IiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0
aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCksIChpbnRwdHJfdCkwLCBOb0ludHJpbnNpYyB9LAorICAgIHsg
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUiLCBEb250RGVsZXRlIHwg
SlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rl
c3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGUpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7ICJ3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIiwgRG9udERlbGV0ZSB8IEpT
Qzo6RnVuY3Rpb24sIChpbnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0
T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlT2JqRXhjZXB0aW9uKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCisgICAgeyAid2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMiLCBEb250RGVs
ZXRlIHwgSlNDOjpGdW5jdGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzKSwgKGludHB0cl90KTAsIE5vSW50cmluc2ljIH0sCiAgICAg
eyAibWV0aG9kV2l0aE9wdGlvbmFsQXJnIiwgRG9udERlbGV0ZSB8IEpTQzo6RnVuY3Rpb24sIChp
bnRwdHJfdClzdGF0aWNfY2FzdDxOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqUHJvdG90eXBlRnVu
Y3Rpb25NZXRob2RXaXRoT3B0aW9uYWxBcmcpLCAoaW50cHRyX3QpMSwgTm9JbnRyaW5zaWMgfSwK
ICAgICB7ICJtZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRpb25hbEFyZyIsIERvbnREZWxl
dGUgfCBKU0M6OkZ1bmN0aW9uLCAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+
KGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0
aW9uYWxBcmcpLCAoaW50cHRyX3QpMiwgTm9JbnRyaW5zaWMgfSwKICAgICB7ICJtZXRob2RXaXRo
Tm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3MiLCBEb250RGVsZXRlIHwgSlNDOjpGdW5j
dGlvbiwgKGludHB0cl90KXN0YXRpY19jYXN0PE5hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyks
IChpbnRwdHJfdCkzLCBOb0ludHJpbnNpYyB9LApAQCAtNjYyLDYgKzY2OCw0NCBAQCBKU1ZhbHVl
IGpzVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYQogfQogCiAKK0pTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImKQoreworICAgIEpTVGVzdE9iaiogY2FzdGVk
VGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHNsb3RCYXNlKSk7CisgICAg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IHN0YXRpY19jYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihj
YXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUyhleGVjLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoaW1wbC0+d2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShleGVjLCBzY3JpcHRDb250ZXh0KSkp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworSlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYpCit7CisgICAgSlNUZXN0
T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3Qoc2xvdEJh
c2UpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
aWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBU
ZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7
CisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZXhlYywgc2NyaXB0Q29udGV4dCwgZWMpKSk7Cisg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisK
K0pTVmFsdWUganNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0
ZVdpdGhTcGFjZXNBdHRyaWJ1dGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVudGlmaWVyJikKK3sKKyAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNf
Y2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+
KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
KyAgICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1w
bCgpKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKGV4ZWMsIHNjcmlwdENvbnRleHQpKSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworCiBKU1ZhbHVlIGpzVGVzdE9ialNjcmlwdFN0cmluZ0F0
dHIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVudGlmaWVyJikK
IHsKICAgICBKU1Rlc3RPYmoqIGNhc3RlZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihh
c09iamVjdChzbG90QmFzZSkpOwpAQCAtMTA3NCw2ICsxMTE4LDQxIEBAIHZvaWQgc2V0SlNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXMoRXhlY1N0YXRlKiBl
eGVjLCBKU09iCiB9CiAKIAordm9pZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRo
aXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0g
c3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09iamVjdCk7CisgICAgVGVzdE9iaiogaW1wbCA9
IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOworICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVybjsKKyAgICBpbXBs
LT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKGV4
ZWMsIHNjcmlwdENvbnRleHQsIHRvVGVzdE9iaih2YWx1ZSkpOworfQorCisKK3ZvaWQgc2V0SlNU
ZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJh
aXNlcyhFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0aGlzT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQoreworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhpcyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+
KHRoaXNPYmplY3QpOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4o
Y2FzdGVkVGhpcy0+aW1wbCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAg
aW1wbC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlcyhleGVjLCBzY3JpcHRDb250ZXh0LCB0b1Rlc3RPYmoodmFsdWUpLCBlYyk7CisgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKK30KKworCit2b2lkIHNldEpTVGVzdE9ialdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHRoaXNPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7Cisg
ICAgSlNUZXN0T2JqKiBjYXN0ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4odGhpc09i
amVjdCk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRU
aGlzLT5pbXBsKCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQg
PSBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQp
CisgICAgICAgIHJldHVybjsKKyAgICBpbXBsLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZShleGVjLCBzY3JpcHRDb250ZXh0LCB0
b1Rlc3RPYmoodmFsdWUpKTsKK30KKworCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiB2b2lkIHNl
dEpTVGVzdE9iakNvbmRpdGlvbmFsQXR0cjEoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhp
c09iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKQEAgLTE1MjMsNiArMTYwMiw1OSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUo
KTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cygmSlNUZXN0T2JqOjpzX2luZm8pKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1Rlc3RPYmoqIGNhc3Rl
ZFRoaXMgPSBzdGF0aWNfY2FzdDxKU1Rlc3RPYmoqPihhc09iamVjdCh0aGlzVmFsdWUpKTsKKyAg
ICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKGNhc3RlZFRoaXMsICZKU1Rlc3RPYmo6OnNfaW5m
byk7CisgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RPYmoqPihjYXN0ZWRUaGlz
LT5pbXBsKCkpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBz
dGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQpCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaW1wbC0+
d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZShleGVjLCBzY3JpcHRDb250
ZXh0KTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5ob3N0VGhpc1ZhbHVl
KCk7CisgICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoJkpTVGVzdE9iajo6c19pbmZvKSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7CisgICAgSlNUZXN0T2JqKiBjYXN0
ZWRUaGlzID0gc3RhdGljX2Nhc3Q8SlNUZXN0T2JqKj4oYXNPYmplY3QodGhpc1ZhbHVlKSk7Cisg
ICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyhjYXN0ZWRUaGlzLCAmSlNUZXN0T2JqOjpzX2lu
Zm8pOworICAgIFRlc3RPYmoqIGltcGwgPSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhp
cy0+aW1wbCgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOworCisgICAgSlNDOjpKU1ZhbHVlIHJlc3VsdCA9IHRvSlMoZXhlYywg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCksIFdURjo6Z2V0UHRyKGltcGwtPndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oZXhlYywgc2NyaXB0Q29u
dGV4dCwgZWMpKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICBpZiAoZXhl
Yy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRl
ZmluZWQoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCitFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9zdFRoaXNWYWx1ZSgpOwor
ICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKCZKU1Rlc3RPYmo6OnNfaW5mbykpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTVGVzdE9iaiogY2FzdGVkVGhp
cyA9IHN0YXRpY19jYXN0PEpTVGVzdE9iaio+KGFzT2JqZWN0KHRoaXNWYWx1ZSkpOworICAgIEFT
U0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFMoY2FzdGVkVGhpcywgJkpTVGVzdE9iajo6c19pbmZvKTsK
KyAgICBUZXN0T2JqKiBpbXBsID0gc3RhdGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmlt
cGwoKSk7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IHN0YXRp
Y19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKworICAgIEpTQzo6SlNW
YWx1ZSByZXN1bHQgPSB0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpLCBXVEY6
OmdldFB0cihpbXBsLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlcyhleGVjLCBzY3JpcHRDb250ZXh0KSkpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoT3B0aW9uYWxB
cmcoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+aG9z
dFRoaXNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5oCmluZGV4IDAwZjYwM2RiNzRkY2VhZDllNGY0ZjMyMjUwNmUyZjZi
YzBkMWQ0YjcuLjQ3MDU5OWY5NDU1OTU4MTZjNmZmNjQ5MjYxYjJiOWUxOGYzY2RiODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmou
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2Jq
LmgKQEAgLTE3MSw2ICsxNzEsOSBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0U3RhdGVPYmooSgogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNj
cmlwdFN0YXRlVm9pZEV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdFN0
YXRlT2JqRXhjZXB0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25XaXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dChKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZShKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbihKU0M6OkV4ZWNTdGF0ZSopOworSlNDOjpF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXMoSlNDOjpFeGVj
U3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90
b3R5cGVGdW5jdGlvbk1ldGhvZFdpdGhPcHRpb25hbEFyZyhKU0M6OkV4ZWNTdGF0ZSopOwogSlND
OjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
TWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmcoSlNDOjpFeGVjU3RhdGUqKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5j
dGlvbk1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJncyhKU0M6OkV4ZWNT
dGF0ZSopOwpAQCAtMjU2LDYgKzI1OSwxMiBAQCBKU0M6OkpTVmFsdWUganNUZXN0T2JqV2l0aFNj
cmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbAogdm9p
ZCBzZXRKU1Rlc3RPYmpXaXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RP
YmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7CiB2b2lkIHNldEpTVGVz
dE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6SlNWYWx1ZSk7CitKU0M6OkpTVmFsdWUganNUZXN0
T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShKU0M6
OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7Cit2b2lk
IHNldEpTVGVzdE9ialdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRy
aWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1ZhbHVlKTsKK0pT
Qzo6SlNWYWx1ZSBqc1Rlc3RPYmpXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBK
U0M6OklkZW50aWZpZXImKTsKK3ZvaWQgc2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOworSlNDOjpKU1ZhbHVlIGpzVGVzdE9ialdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKK3ZvaWQg
c2V0SlNUZXN0T2JqV2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhT
cGFjZXNBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTT2JqZWN0KiwgSlNDOjpKU1Zh
bHVlKTsKIEpTQzo6SlNWYWx1ZSBqc1Rlc3RPYmpTY3JpcHRTdHJpbmdBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpKU1ZhbHVlLCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKIEpTQzo6SlNWYWx1
ZSBqc1Rlc3RPYmpDb25kaXRpb25hbEF0dHIxKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU1ZhbHVl
LCBjb25zdCBKU0M6OklkZW50aWZpZXImKTsKIHZvaWQgc2V0SlNUZXN0T2JqQ29uZGl0aW9uYWxB
dHRyMShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkpTVmFsdWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE9iai5oCmluZGV4IGNiM2JhM2RlOWVkMGRhMGU5YjI5ZDgzN2E4NzlmZTJhYjQ2NmZlNmUuLjMx
NWFmMzI1YmU3MjdhM2NjYWJkZTQyNTFlYjhmZTcwYzcxMjQ0NmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmouaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLmgKQEAg
LTEyMyw2ICsxMjMsMTIgQEAgZW51bSB7CiAtICh2b2lkKXNldFdpdGhTY3JpcHRTdGF0ZUF0dHJp
YnV0ZVJhaXNlczooRE9NVGVzdE9iaiAqKW5ld1dpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNl
czsKIC0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlczsKIC0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlz
ZXM6KERPTVRlc3RPYmogKiluZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJh
aXNlczsKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlOworLSAodm9pZClzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZTsKKy0gKERPTVRlc3RPYmogKil3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzOworLSAodm9p
ZClzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzOihET01UZXN0T2JqICopbmV3V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZUF0dHJpYnV0ZVJhaXNlczsKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZTsKKy0gKHZvaWQpc2V0V2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGU6
KERPTVRlc3RPYmogKiluZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc0F0dHJpYnV0ZTsKIC0gKE5TU3RyaW5nICopc2NyaXB0U3RyaW5nQXR0cjsKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkKIC0gKGludCljb25kaXRpb25hbEF0dHIxOwpAQCAtMTgwLDYg
KzE4Niw5IEBAIGVudW0gewogLSAodm9pZCl3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uOwog
LSAoRE9NVGVzdE9iaiAqKXdpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbjsKIC0gKHZvaWQpd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CistICh2b2lkKXdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGU7CistIChET01UZXN0T2JqICopd2l0aFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbjsKKy0gKERPTVRlc3RPYmogKil3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlczsKIC0gKHZvaWQpbWV0
aG9kV2l0aE9wdGlvbmFsQXJnOihpbnQpb3B0OwogLSAodm9pZCltZXRob2RXaXRoTm9uT3B0aW9u
YWxBcmdBbmRPcHRpb25hbEFyZzooaW50KW5vbk9wdCBvcHQ6KGludClvcHQ7CiAtICh2b2lkKW1l
dGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnczooaW50KW5vbk9wdCBvcHQx
OihpbnQpb3B0MSBvcHQyOihpbnQpb3B0MjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0T2JqLm1tCmluZGV4IDRmODViN2I4MDg2
N2ZhMDJjMTc1YjBlYjQyMmY0MzM1ODQ4MTMwYjQuLjkzMmI0OWRkMzA4MGNkN2E4YzZiYWU1NGQ3
ZDA2ZTBlNTdjNTE5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9PYmpDL0RPTVRlc3RPYmoubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE9iai5tbQpAQCAtNDc2LDYgKzQ3Niw1MyBAQAogICAg
IFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKKy0gKERPTVRlc3RPYmogKil3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlCit7CisgICAgV2Vi
Q29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIHJldHVybiBraXQoV1RGOjpn
ZXRQdHIoSU1QTC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJp
YnV0ZSgpKSk7Cit9CisKKy0gKHZvaWQpc2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZTooRE9NVGVzdE9iaiAqKW5ld1dpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJl
YWROdWxsU3RhdGUgc3RhdGU7CisgICAgQVNTRVJUKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpOworCisgICAgSU1QTC0+c2V0V2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZShjb3JlKG5ld1dpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUpKTsKK30KKworLSAoRE9NVGVz
dE9iaiAqKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVS
YWlzZXMKK3sKKyAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAg
V2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgRE9NVGVzdE9iaiAqcmVzdWx0ID0g
a2l0KFdURjo6Z2V0UHRyKElNUEwtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0
U3RhdGVBdHRyaWJ1dGVSYWlzZXMoZWMpKSk7CisgICAgV2ViQ29yZTo6cmFpc2VPbkRPTUVycm9y
KGVjKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCistICh2b2lkKXNldFdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXM6KERPTVRlc3RPYmogKilu
ZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2Vz
Cit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIEFTU0VS
VChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFp
c2VzKTsKKworICAgIFdlYkNvcmU6OkV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIElNUEwtPnNl
dFdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMo
Y29yZShuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
UmFpc2VzKSwgZWMpOworICAgIFdlYkNvcmU6OnJhaXNlT25ET01FcnJvcihlYyk7Cit9CisKKy0g
KERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0F0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBz
dGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlKCkpKTsKK30KKworLSAo
dm9pZClzZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZTooRE9NVGVzdE9iaiAqKW5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRlCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhy
ZWFkTnVsbFN0YXRlIHN0YXRlOworICAgIEFTU0VSVChuZXdXaXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0ZSk7CisKKyAgICBJTVBMLT5zZXRX
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJpYnV0
ZShjb3JlKG5ld1dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3Bh
Y2VzQXR0cmlidXRlKSk7Cit9CisKIC0gKE5TU3RyaW5nICopc2NyaXB0U3RyaW5nQXR0cgogewog
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKQEAgLTc4Miw2ICs4Mjks
MjcgQEAKICAgICBJTVBMLT53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogfQogCistICh2
b2lkKXdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUKK3sKKyAgICBXZWJD
b3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZSgpOworfQorCistIChET01UZXN0T2JqICopd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbgoreworICAg
IFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBXZWJDb3JlOjpFeGNl
cHRpb25Db2RlIGVjID0gMDsKKyAgICBET01UZXN0T2JqICpyZXN1bHQgPSBraXQoV1RGOjpnZXRQ
dHIoSU1QTC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2Vw
dGlvbihlYykpKTsKKyAgICBXZWJDb3JlOjpyYWlzZU9uRE9NRXJyb3IoZWMpOworICAgIHJldHVy
biByZXN1bHQ7Cit9CisKKy0gKERPTVRlc3RPYmogKil3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcworeworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51
bGxTdGF0ZSBzdGF0ZTsKKyAgICByZXR1cm4ga2l0KFdURjo6Z2V0UHRyKElNUEwtPndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzKCkpKTsKK30KKwogLSAo
dm9pZCltZXRob2RXaXRoT3B0aW9uYWxBcmc6KGludClvcHQKIHsKICAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggZjhiYTExNzRjOGQ0MDE3YWVhNDM1OWFhZDg4
NTcxNTAxMGVkMTVjYy4uYjQ5N2U0ZjI3OTQ1ZTkwYzY0NmIxY2EzMjhmMTY3MzBmNmI4Mzc0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmou
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bApAQCAtMTA2LDYgKzEwNiwxMCBAQCBtb2R1bGUgdGVzdCB7CiAgICAgICAgIFtDYWxsV2l0aD1T
Y3JpcHRTdGF0ZV0gVGVzdE9iaiB3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24oKQogICAgICAg
ICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIFtDYWxsV2l0aD1TY3JpcHRFeGVj
dXRpb25Db250ZXh0XSB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgICAg
IFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0fFNjcmlwdFN0YXRlXSB2b2lkIHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoKTsKKyAgICAgICAgW0NhbGxXaXRo
PVNjcmlwdEV4ZWN1dGlvbkNvbnRleHR8U2NyaXB0U3RhdGVdIFRlc3RPYmogd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbigpCisgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgW0NhbGxXaXRoPSAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCAgfCAgU2NyaXB0U3RhdGUgIF0gVGVzdE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcygpOwogCiAgICAgICAgIGF0dHJpYnV0ZSBbQ2Fs
bFdpdGg9U2NyaXB0U3RhdGVdIGxvbmcgd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlOwogICAgICAg
ICBhdHRyaWJ1dGUgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIFRlc3RPYmogd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGU7CkBAIC0xMTMsNiArMTE3LDEwIEBAIG1v
ZHVsZSB0ZXN0IHsKICAgICAgICAgICAgIGdldHRlciByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAg
ICAgICAgYXR0cmlidXRlIFtDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250ZXh0XSBUZXN0T2Jq
IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzCiAgICAgICAgICAgICBn
ZXR0ZXIgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIGF0dHJpYnV0ZSBbQ2FsbFdpdGg9
U2NyaXB0RXhlY3V0aW9uQ29udGV4dHxTY3JpcHRTdGF0ZV0gVGVzdE9iaiB3aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlOworICAgICAgICBhdHRyaWJ1dGUg
W0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHR8U2NyaXB0U3RhdGVdIFRlc3RPYmogd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcworICAg
ICAgICAgICAgZ2V0dGVyIHJhaXNlcyhET01FeGNlcHRpb24pOworICAgICAgICBhdHRyaWJ1dGUg
W0NhbGxXaXRoPSAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCAgfCAgU2NyaXB0U3RhdGUgIF0gVGVz
dE9iaiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0
dHJpYnV0ZTsKIAogICAgICAgICAvLyAnT3B0aW9uYWwnIGV4dGVuZGVkIGF0dHJpYnV0ZQogICAg
ICAgICB2b2lkICAgIG1ldGhvZFdpdGhPcHRpb25hbEFyZyhpbiBbT3B0aW9uYWxdIGxvbmcgb3B0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKaW5kZXggYmQ2N2RjYjBhYzQxZDZiODQ3MTg4ZGFkYWVhNmQyNTAyOTI2ZTVj
NC4uMjZjZjI2MDUxN2NjODM4YjI4OTBiYTZlNGE0OTdmMTliZjQyMDU3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAK
QEAgLTU5NCw2ICs1OTQsMTA3IEBAIHN0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QXR0cmlidXRlUmFpc2VzQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0CiAgICAgcmV0dXJu
OwogfQogCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3Ry
aW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQoreworICAgIElOQ19TVEFU
UygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0
dHJpYnV0ZS5fZ2V0Iik7CisgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKKyAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3Vy
cmVudCgpOworICAgIGlmICghc3RhdGUpCisgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7
CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIXNjcmlwdENvbnRleHQpCisgICAgICAgIHJldHVy
biB2ODo6VW5kZWZpbmVkKCk7CisgICAgcmV0dXJuIHRvVjgoaW1wLT53aXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlKHN0YXRlLCBzY3JpcHRDb250ZXh0KSk7
Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9j
YWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAg
ICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2Ny
aXB0U3RhdGVBdHRyaWJ1dGUuX3NldCIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UodmFsdWUpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0
YXRlOjpjdXJyZW50KCk7CisgICAgaWYgKCFzdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25D
b250ZXh0KCk7CisgICAgaWYgKCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAg
aW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRl
KHN0YXRlLCBzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7CisgICAgaWYgKHN0YXRlLmhh
ZEV4Y2VwdGlvbigpKQorICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTsKKyAg
ICByZXR1cm47Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIodjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCit7
CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzLl9nZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7Cisg
ICAgaWYgKCFzdGF0ZSkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKKyAgICBSZWZQdHI8VGVzdE9iaj4gdiA9IGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyhzdGF0ZSwgc2NyaXB0Q29udGV4
dCwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpIHsKKyAgICAgICAgVjhQcm94eTo6c2V0RE9N
RXhjZXB0aW9uKGVjKTsKKyAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwor
ICAgIH0KKyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gdG9WOCh2LnJlbGVhc2UoKSk7
Cit9CisKK3N0YXRpYyB2b2lkIHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
K3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXMuX3NldCIpOworICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgVGVzdE9iaiogdiA9IFY4
VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOworICAgIFNjcmlwdFN0YXRlKiBzdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7Cisg
ICAgaWYgKCFzdGF0ZSkKKyAgICAgICAgcmV0dXJuOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYg
KCFzY3JpcHRDb250ZXh0KQorICAgICAgICByZXR1cm47CisgICAgaW1wLT5zZXRXaXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzKHN0YXRlLCBzY3Jp
cHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisg
ICAgICAgIFY4UHJveHk6OnNldERPTUV4Y2VwdGlvbihlYyk7CisgICAgaWYgKHN0YXRlLmhhZEV4
Y2VwdGlvbigpKQorICAgICAgICB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTsKKyAgICBy
ZXR1cm47Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyKHY4
OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQor
eworICAgIElOQ19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGUuX2dldCIpOworICAgIFRlc3RPYmoqIGlt
cCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CisgICAgU2NyaXB0U3RhdGUq
IHN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKKyAgICBpZiAoIXN0YXRlKQorICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNj
cmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgaWYgKCFzY3Jp
cHRDb250ZXh0KQorICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOworICAgIHJldHVybiB0
b1Y4KGltcC0+d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXNBdHRyaWJ1dGUoc3RhdGUsIHNjcmlwdENvbnRleHQpKTsKK30KKworc3RhdGljIHZvaWQgd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVB
dHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVl
PiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKK3sKKyAgICBJTkNfU1RBVFMo
IkRPTS5UZXN0T2JqLndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRo
U3BhY2VzQXR0cmlidXRlLl9zZXQiKTsKKyAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRv
TmF0aXZlKGluZm8uSG9sZGVyKCkpOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0lu
c3RhbmNlKHZhbHVlKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBTY3JpcHRTdGF0ZSogc3RhdGUgPSBTY3JpcHRTdGF0
ZTo6Y3VycmVudCgpOworICAgIGlmICghc3RhdGUpCisgICAgICAgIHJldHVybjsKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuOworICAgIGlt
cC0+c2V0V2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFjZXNB
dHRyaWJ1dGUoc3RhdGUsIHNjcmlwdENvbnRleHQsIFdURjo6Z2V0UHRyKHYpKTsKKyAgICBpZiAo
c3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHRocm93RXJyb3Ioc3RhdGUuZXhjZXB0aW9u
KCkpOworICAgIHJldHVybjsKK30KKwogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzY3Jp
cHRTdHJpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qg
djg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBJTkNfU1RBVFMoIkRPTS5UZXN0T2JqLnNj
cmlwdFN0cmluZ0F0dHIuX2dldCIpOwpAQCAtMTEyMyw2ICsxMjI0LDU2IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lCiAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwogfQogCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5k
U2NyaXB0U3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElO
Q19TVEFUUygiRE9NLlRlc3RPYmoud2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRT
dGF0ZSIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CisgICAgRW1wdHlTY3JpcHRTdGF0ZSBzdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAg
IGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAg
ICBpbXAtPndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGUoJnN0YXRlLCBz
Y3JpcHRDb250ZXh0KTsKKyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+KCk7Cit9CisKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSU5DX1NUQVRTKCJET00uVGVzdE9iai53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIik7Cisg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICB7CisgICAgRW1wdHlTY3JpcHRTdGF0ZSBzdGF0
ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKKyAgICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gaW1wLT53
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uKCZzdGF0
ZSwgc2NyaXB0Q29udGV4dCwgZWMpOworICAgIGlmIChVTkxJS0VMWShlYykpCisgICAgICAgIGdv
dG8gZmFpbDsKKyAgICBpZiAoc3RhdGUuaGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiB0
aHJvd0Vycm9yKHN0YXRlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gdG9WOChyZXN1bHQucmVs
ZWFzZSgpKTsKKyAgICB9CisgICAgZmFpbDoKKyAgICBWOFByb3h5OjpzZXRET01FeGNlcHRpb24o
ZWMpOworICAgIHJldHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKK30KKworc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlV2l0aFNwYWNlc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAg
SU5DX1NUQVRTKCJET00uVGVzdE9iai53aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlV2l0aFNwYWNlcyIpOworICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CisgICAgRW1wdHlTY3JpcHRTdGF0ZSBzdGF0ZTsKKyAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRDb250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpOworICAgIGlmICghc2NyaXB0Q29udGV4dCkKKyAgICAgICAgcmV0dXJuIHY4OjpVbmRl
ZmluZWQoKTsKKyAgICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gaW1wLT53aXRoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlcygmc3RhdGUsIHNjcmlwdENvbnRl
eHQpOworICAgIGlmIChzdGF0ZS5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIHRocm93
RXJyb3Ioc3RhdGUuZXhjZXB0aW9uKCkpOworICAgIHJldHVybiB0b1Y4KHJlc3VsdC5yZWxlYXNl
KCkpOworfQorCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25h
bEFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSU5DX1NUQVRT
KCJET00uVGVzdE9iai5tZXRob2RXaXRoT3B0aW9uYWxBcmciKTsKQEAgLTE2NDcsNiArMTc5OCwx
MiBAQCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsKICAg
ICB7IndpdGhTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcyIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0
aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRlciwgVGVzdE9iakludGVybmFsOjp3
aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8s
IHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0
PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwK
ICAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFp
c2VzJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ0NhbGxXaXRoJykKICAgICB7IndpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlUmFpc2VzIiwgVGVzdE9iakludGVybmFsOjp3
aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJHZXR0ZXIsIFRlc3RP
YmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRy
U2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2
ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUp
LCAwIC8qIG9uIGluc3RhbmNlICovfSwKKyAgICAvLyBBdHRyaWJ1dGUgJ3dpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGUnIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnQ2FsbFdpdGgnKQorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRT
Y3JpcHRTdGF0ZUF0dHJpYnV0ZSIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJHZXR0ZXIsIFRlc3RPYmpJbnRlcm5h
bDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0dHJT
ZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4
OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSks
IDAgLyogb24gaW5zdGFuY2UgKi99LAorICAgIC8vIEF0dHJpYnV0ZSAnd2l0aFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlcycgKFR5cGU6ICdhdHRyaWJ1
dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdldHRl
ciwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0
YXRlQXR0cmlidXRlUmFpc2VzQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCisgICAgLy8gQXR0
cmlidXRlICd3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNl
c0F0dHJpYnV0ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDYWxsV2l0aCcpCisgICAg
eyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNwYWNlc0F0dHJp
YnV0ZSIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNBdHRyaWJ1dGVBdHRyR2V0dGVyLCBUZXN0T2JqSW50ZXJuYWw6Ondp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmlidXRl
QXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJv
bD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpO
b25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdzY3JpcHRTdHJp
bmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbnZlcnRTY3Jp
cHRTdHJpbmcnKQogICAgIHsic2NyaXB0U3RyaW5nQXR0ciIsIFRlc3RPYmpJbnRlcm5hbDo6c2Ny
aXB0U3RyaW5nQXR0ckF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8
djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5
QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogI2lmIEVOQUJMRShD
b25kaXRpb24xKQpAQCAtMTcxNCw2ICsxODcxLDkgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRDYWxs
YmFjayBUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJ3aXRoU2NyaXB0U3RhdGVWb2lkRXhj
ZXB0aW9uIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uQ2Fs
bGJhY2t9LAogICAgIHsid2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIiwgVGVzdE9iakludGVy
bmFsOjp3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25DYWxsYmFja30sCiAgICAgeyJ3aXRoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRDYWxsYmFja30sCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlIiwgVGVzdE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFu
ZFNjcmlwdFN0YXRlQ2FsbGJhY2t9LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRB
bmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIsIFRlc3RPYmpJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxiYWNrfSwKKyAgICB7
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzIiwgVGVz
dE9iakludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0
aFNwYWNlc0NhbGxiYWNrfSwKICAgICB7Im1ldGhvZFdpdGhPcHRpb25hbEFyZyIsIFRlc3RPYmpJ
bnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlvbmFsQXJnQ2FsbGJhY2t9LAogICAgIHsibWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmciLCBUZXN0T2JqSW50ZXJuYWw6Om1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGJhY2t9LAogICAgIHsibWV0aG9kV2l0
aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIiwgVGVzdE9iakludGVybmFsOjptZXRo
b2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRUd29PcHRpb25hbEFyZ3NDYWxsYmFja30sCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>