<?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>181714</bug_id>
          
          <creation_ts>2018-01-16 19:42:18 -0800</creation_ts>
          <short_desc>Generated bindings for derived dictionaries are not regenerated when the base dictionary changes</short_desc>
          <delta_ts>2020-08-25 09:09:21 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>glenn</cc>
    
    <cc>jbedard</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1389840</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2018-01-16 19:42:18 -0800</bug_when>
    <thetext>Consider the following two IDL files:

Base.idl:
    dictionary Base {
        unsigned long baseField;
    }

Derived.idl
    dictionary Derived : Base {
        unsigned long derivedField;
    }

When JSDerived.cpp is generated, its convertDictionary() implementation contains the code to convert both baseField and derivedField. JSBase.cpp&apos;s convertDictionary() has its own convertDictionary() to convert baseField, but JSDerived.cpp does not rely on it.

If I add a second field to Base.idl and rebuild, JSBase.cpp is updated to convert the new field, but JSDerived.cpp is not updated, so it still only converts the original two fields.

It seems like JSDerived.cpp&apos;s convertDictionary() should be calling JSBase.cpp&apos;s convertDictionary() to convert the base class fields. Either that or the bindings generator should be regenerating all dictionaries that inherit from Base.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682282</commentid>
    <comment_count>1</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-24 00:20:51 -0700</bug_when>
    <thetext>We hit that issue in https://bugs.webkit.org/show_bug.cgi?id=215722</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682292</commentid>
    <comment_count>2</comment_count>
      <attachid>407094</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-24 03:32:18 -0700</bug_when>
    <thetext>Created attachment 407094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682307</commentid>
    <comment_count>3</comment_count>
      <attachid>407097</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-24 06:33:20 -0700</bug_when>
    <thetext>Created attachment 407097
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682419</commentid>
    <comment_count>4</comment_count>
      <attachid>407097</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-24 12:08:00 -0700</bug_when>
    <thetext>Comment on attachment 407097
Patch

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

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:244
&gt; +    my $makefileDeps = &quot;#Supplemental dependencies\n&quot;;

Normally we’d have a space after the &quot;#&quot; in a comment.

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:258
&gt; +    $makefileDeps .= &quot;#Dictionaries dependencies\n&quot;;

Ditto.

&gt; Source/WebCore/bindings/scripts/preprocess-idls.pl:261
&gt; +        my $dependencies = $dictionaryDependencies{$derivedDictionary};
&gt; +        $makefileDeps .= &quot;JS${derivedDictionary}.cpp: ${dependencies}\n&quot;;

Not sure we benefit from the local variable here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682649</commentid>
    <comment_count>5</comment_count>
      <attachid>407191</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-08-25 08:33:19 -0700</bug_when>
    <thetext>Created attachment 407191
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682665</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-25 09:08:25 -0700</bug_when>
    <thetext>Committed r266120: &lt;https://trac.webkit.org/changeset/266120&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407191.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682666</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-25 09:09:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/67740737&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407094</attachid>
            <date>2020-08-24 03:32:18 -0700</date>
            <delta_ts>2020-08-24 06:33:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181714-20200824123216.patch</filename>
            <type>text/plain</type>
            <size>3428</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU3NTgyZDBlYTZkYjFh
OGI4YmFiMDQ4MGE4NmIzMjA0NzgwYjE3OS4uYTVhMjRjMDRkMGRhMTcxYWY2YzM4M2MzOTU2M2Nj
MDc1MzU3MTUwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA4LTI0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZWQgYmluZGlu
Z3MgZm9yIGRlcml2ZWQgZGljdGlvbmFyaWVzIGFyZSBub3QgcmVnZW5lcmF0ZWQgd2hlbiB0aGUg
YmFzZSBkaWN0aW9uYXJ5IGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6Cisg
ICAgICAgICh1cGRhdGVCYXNlRGljdGlvbmFyeURlcGVuZGVuY2llcyk6CisgICAgICAgIEFkZCBk
aWN0aW9uYXJ5IGZpbGUgZGVwZW5kZW5jaWVzIHRvIFN1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5k
ZXAuCisgICAgICAgIFdlIGFkZCB0aGUgYmFzZSBkaWN0aW9uYXJ5IElETCBmaWxlIGFzIGEgZGVw
ZW5kZW5jeSB0byB0aGUgSlMgY3BwIGZpbGUgb2YgdGhlIGRlcml2ZWQgZGljdGlvbmFyeS4KKyAg
ICAgICAgV2UgZG8gc28gaWYgd2UgZGV0ZWN0IHRoYXQgYSBkaWN0aW9uYXJ5IGlzIGRlcml2aW5n
IGZyb20gYW5vdGhlciBhbmQgYm90aCBkaWN0aW9uYXJpZXMgYXJlIGluIHRoZWlyIG93biBJREwg
ZmlsZS4KKwogMjAyMC0wOC0yNCAgSnVzdGluIFViZXJ0aSAgPGp1c3RpbkB1YmVydGkubmFtZT4K
IAogICAgICAgICBSVENSdHBTeW5jaHJvbml6YXRpb25Tb3VyY2UucnRwVGltZXN0YW1wIGlzIG5v
dCBwcmVzZW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3By
ZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJv
Y2Vzcy1pZGxzLnBsCmluZGV4IGU4YjM3NWE0YWZkYWVjYTI4NjIyMTAwNDAxNmUzYmI1MTM1ODg0
NzAuLjA0ZGE0Mjc0NTIzYmU5Y2JmOTZlMDI1ZTc3N2UyMDdhNmFjMTg2NjAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCkBAIC04
Nyw2ICs4Nyw3IEBAIGNsb3NlKCRmaCkgb3IgZGllOwogbXkgJWludGVyZmFjZU5hbWVUb0lkbEZp
bGU7CiBteSAlaWRsRmlsZVRvSW50ZXJmYWNlTmFtZTsKIG15ICVzdXBwbGVtZW50YWxEZXBlbmRl
bmNpZXM7CitteSAlZGljdGlvbmFyeURlcGVuZGVuY2llczsKIG15ICVzdXBwbGVtZW50YWxzOwog
bXkgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUgPSAiIjsKIG15ICR3b3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9yc0NvZGUgPSAiIjsKQEAgLTEzNSw2ICsxMzYsOCBAQCBmb3JlYWNoIG15ICRpZGxG
aWxlIChzb3J0IGtleXMgJWlkbEZpbGVIYXNoKSB7CiAKICAgICAkc3VwcGxlbWVudGFsc3skZnVs
bFBhdGh9ID0gW107CiAKKyAgICB1cGRhdGVEaWN0aW9uYXJ5RGVwZW5kZW5jaWVzKCRpZGxGaWxl
Q29udGVudHMsICRpZGxGaWxlKTsKKwogICAgICMgU2tpcCBpZiB0aGUgSURMIGZpbGUgZG9lcyBu
b3QgY29udGFpbiBhbiBpbnRlcmZhY2UsIGEgY2FsbGJhY2sgaW50ZXJmYWNlIG9yIGFuIGV4Y2Vw
dGlvbi4KICAgICAjIFRoZSBJREwgbWF5IGNvbnRhaW4gYSBkaWN0aW9uYXJ5LgogICAgIG5leHQg
dW5sZXNzIGNvbnRhaW5zSW50ZXJmYWNlT3JFeGNlcHRpb25Gcm9tSURMKCRpZGxGaWxlQ29udGVu
dHMpOwpAQCAtMjM4LDcgKzI0MSw3IEBAIGZvcmVhY2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAl
c3VwcGxlbWVudGFscykgewogV3JpdGVGaWxlSWZDaGFuZ2VkKCRzdXBwbGVtZW50YWxEZXBlbmRl
bmN5RmlsZSwgJGRlcGVuZGVuY2llcyk7CiAKIGlmICgkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBz
KSB7Ci0gICAgbXkgJG1ha2VmaWxlRGVwcyA9ICIiOworICAgIG15ICRtYWtlZmlsZURlcHMgPSAi
I1N1cHBsZW1lbnRhbCBkZXBlbmRlbmNpZXNcbiI7CiAgICAgZm9yZWFjaCBteSAkaWRsRmlsZSAo
c29ydCBrZXlzICVzdXBwbGVtZW50YWxzKSB7CiAgICAgICAgIG15ICRiYXNlbmFtZSA9ICRpZGxG
aWxlVG9JbnRlcmZhY2VOYW1leyRpZGxGaWxlfTsKIApAQCAtMjUyLDYgKzI1NSwxMiBAQCBpZiAo
JHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcykgewogICAgICAgICB9CiAgICAgfQogCisgICAgJG1h
a2VmaWxlRGVwcyAuPSAiI0RpY3Rpb25hcmllcyBkZXBlbmRlbmNpZXNcbiI7CisgICAgZm9yZWFj
aCBteSAkZGVyaXZlZERpY3Rpb25hcnkgKHNvcnQga2V5cyAlZGljdGlvbmFyeURlcGVuZGVuY2ll
cykgeworICAgICAgICBteSAkZGVwZW5kZW5jaWVzID0gJGRpY3Rpb25hcnlEZXBlbmRlbmNpZXN7
JGRlcml2ZWREaWN0aW9uYXJ5fTsKKyAgICAgICAgJG1ha2VmaWxlRGVwcyAuPSAiSlMke2Rlcml2
ZWREaWN0aW9uYXJ5fS5jcHA6ICR7ZGVwZW5kZW5jaWVzfVxuIjsKKyAgICB9CisKICAgICBXcml0
ZUZpbGVJZkNoYW5nZWQoJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcywgJG1ha2VmaWxlRGVwcyk7
CiB9CiAKQEAgLTQ0NiwzICs0NTUsMTggQEAgc3ViIHNob3VsZEV4cG9zZUludGVyZmFjZQogCiAg
ICAgcmV0dXJuICEkZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Ik5vSW50ZXJmYWNlT2JqZWN0In07CiB9
CisKK3N1YiB1cGRhdGVEaWN0aW9uYXJ5RGVwZW5kZW5jaWVzCit7CisgICAgbXkgJGZpbGVDb250
ZW50cyA9IHNoaWZ0OworICAgIG15ICRpZGxGaWxlID0gc2hpZnQ7CisKKyAgICBteSAkZGljdGlv
bmFyeU5hbWUgPSBmaWxlcGFyc2UoYmFzZW5hbWUoJGlkbEZpbGUpLCAiLmlkbCIpOworCisgICAg
bXkgQGJhc2VEaWN0aW9uYXJpZXMgPSAoKTsKKyAgICB3aGlsZSAoJGZpbGVDb250ZW50cyA9fiAv
XHMqZGljdGlvbmFyeVxzKyhcdyspXHMrOlxzKyhcdyspXHMqL21nKSB7CisgICAgICAgIG5leHQg
aWYgISRpbnRlcmZhY2VOYW1lVG9JZGxGaWxleyQyfSB8fCAoZ3JlcCB7ICRfIGVxICQyIH0gQGJh
c2VEaWN0aW9uYXJpZXMpOworICAgICAgICBwdXNoKEBiYXNlRGljdGlvbmFyaWVzLCAkMik7Cisg
ICAgfQorICAgICRkaWN0aW9uYXJ5RGVwZW5kZW5jaWVzeyRkaWN0aW9uYXJ5TmFtZX0gPSAoam9p
bigiLmlkbCAiLCBAYmFzZURpY3Rpb25hcmllcykgLiAiLmlkbCIpIGlmIEBiYXNlRGljdGlvbmFy
aWVzOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407097</attachid>
            <date>2020-08-24 06:33:20 -0700</date>
            <delta_ts>2020-08-25 08:33:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181714-20200824153318.patch</filename>
            <type>text/plain</type>
            <size>51321</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDU3NTgyZDBlYTZkYjFh
OGI4YmFiMDQ4MGE4NmIzMjA0NzgwYjE3OS4uMTA0NjUwYjgyNmMxNGEyY2I0MjEzZTljMGRhMjRm
MWM4MTUxZDRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA4LTI0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZWQgYmluZGlu
Z3MgZm9yIGRlcml2ZWQgZGljdGlvbmFyaWVzIGFyZSBub3QgcmVnZW5lcmF0ZWQgd2hlbiB0aGUg
YmFzZSBkaWN0aW9uYXJ5IGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBkaWN0aW9uYXJ5IGZpbGUgZGVwZW5kZW5jaWVzIHRvIFN1cHBs
ZW1lbnRhbERlcGVuZGVuY2llcy5kZXAuCisgICAgICAgIFdlIGFkZCB0aGUgYmFzZSBkaWN0aW9u
YXJ5IElETCBmaWxlIGFzIGEgZGVwZW5kZW5jeSB0byB0aGUgSlMgY3BwIGZpbGUgb2YgdGhlIGRl
cml2ZWQgZGljdGlvbmFyeS4KKyAgICAgICAgV2UgZG8gc28gaWYgd2UgZGV0ZWN0IHRoYXQgYSBk
aWN0aW9uYXJ5IGlzIGRlcml2aW5nIGZyb20gYW5vdGhlciBhbmQgYm90aCBkaWN0aW9uYXJpZXMg
YXJlIGluIHRoZWlyIG93biBJREwgZmlsZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQg
YmluZGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1p
ZGxzLnBsOgorICAgICAgICAodXBkYXRlRGljdGlvbmFyeURlcGVuZGVuY2llcyk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6IEFk
ZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVyaXZlZERpY3Rpb25h
cnkyLmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmhl
cml0ZWREaWN0aW9uYXJ5Mi5pZGw6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeTI+KToKKyAgICAg
ICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5Pik6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5
Mi5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeTIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRE
aWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mj4pOgorICAgICAgICAoV2ViQ29yZTo6
Y29udmVydERpY3Rpb25hcnlUb0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuaDogQWRkZWQuCisKIDIwMjAtMDgtMjQgIEp1
c3RpbiBVYmVydGkgIDxqdXN0aW5AdWJlcnRpLm5hbWU+CiAKICAgICAgICAgUlRDUnRwU3luY2hy
b25pemF0aW9uU291cmNlLnJ0cFRpbWVzdGFtcCBpcyBub3QgcHJlc2VudApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAppbmRleCBlOGIz
NzVhNGFmZGFlY2EyODYyMjEwMDQwMTZlM2JiNTEzNTg4NDcwLi4wNGRhNDI3NDUyM2JlOWNiZjk2
ZTAyNWU3NzdlMjA3YTZhYzE4NjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbApAQCAtODcsNiArODcsNyBAQCBjbG9zZSgkZmgp
IG9yIGRpZTsKIG15ICVpbnRlcmZhY2VOYW1lVG9JZGxGaWxlOwogbXkgJWlkbEZpbGVUb0ludGVy
ZmFjZU5hbWU7CiBteSAlc3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzOworbXkgJWRpY3Rpb25hcnlE
ZXBlbmRlbmNpZXM7CiBteSAlc3VwcGxlbWVudGFsczsKIG15ICR3aW5kb3dDb25zdHJ1Y3RvcnND
b2RlID0gIiI7CiBteSAkd29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnNDb2RlID0gIiI7CkBA
IC0xMzUsNiArMTM2LDggQEAgZm9yZWFjaCBteSAkaWRsRmlsZSAoc29ydCBrZXlzICVpZGxGaWxl
SGFzaCkgewogCiAgICAgJHN1cHBsZW1lbnRhbHN7JGZ1bGxQYXRofSA9IFtdOwogCisgICAgdXBk
YXRlRGljdGlvbmFyeURlcGVuZGVuY2llcygkaWRsRmlsZUNvbnRlbnRzLCAkaWRsRmlsZSk7CisK
ICAgICAjIFNraXAgaWYgdGhlIElETCBmaWxlIGRvZXMgbm90IGNvbnRhaW4gYW4gaW50ZXJmYWNl
LCBhIGNhbGxiYWNrIGludGVyZmFjZSBvciBhbiBleGNlcHRpb24uCiAgICAgIyBUaGUgSURMIG1h
eSBjb250YWluIGEgZGljdGlvbmFyeS4KICAgICBuZXh0IHVubGVzcyBjb250YWluc0ludGVyZmFj
ZU9yRXhjZXB0aW9uRnJvbUlETCgkaWRsRmlsZUNvbnRlbnRzKTsKQEAgLTIzOCw3ICsyNDEsNyBA
QCBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJXN1cHBsZW1lbnRhbHMpIHsKIFdyaXRl
RmlsZUlmQ2hhbmdlZCgkc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGUsICRkZXBlbmRlbmNpZXMp
OwogCiBpZiAoJHN1cHBsZW1lbnRhbE1ha2VmaWxlRGVwcykgewotICAgIG15ICRtYWtlZmlsZURl
cHMgPSAiIjsKKyAgICBteSAkbWFrZWZpbGVEZXBzID0gIiNTdXBwbGVtZW50YWwgZGVwZW5kZW5j
aWVzXG4iOwogICAgIGZvcmVhY2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFs
cykgewogICAgICAgICBteSAkYmFzZW5hbWUgPSAkaWRsRmlsZVRvSW50ZXJmYWNlTmFtZXskaWRs
RmlsZX07CiAKQEAgLTI1Miw2ICsyNTUsMTIgQEAgaWYgKCRzdXBwbGVtZW50YWxNYWtlZmlsZURl
cHMpIHsKICAgICAgICAgfQogICAgIH0KIAorICAgICRtYWtlZmlsZURlcHMgLj0gIiNEaWN0aW9u
YXJpZXMgZGVwZW5kZW5jaWVzXG4iOworICAgIGZvcmVhY2ggbXkgJGRlcml2ZWREaWN0aW9uYXJ5
IChzb3J0IGtleXMgJWRpY3Rpb25hcnlEZXBlbmRlbmNpZXMpIHsKKyAgICAgICAgbXkgJGRlcGVu
ZGVuY2llcyA9ICRkaWN0aW9uYXJ5RGVwZW5kZW5jaWVzeyRkZXJpdmVkRGljdGlvbmFyeX07Cisg
ICAgICAgICRtYWtlZmlsZURlcHMgLj0gIkpTJHtkZXJpdmVkRGljdGlvbmFyeX0uY3BwOiAke2Rl
cGVuZGVuY2llc31cbiI7CisgICAgfQorCiAgICAgV3JpdGVGaWxlSWZDaGFuZ2VkKCRzdXBwbGVt
ZW50YWxNYWtlZmlsZURlcHMsICRtYWtlZmlsZURlcHMpOwogfQogCkBAIC00NDYsMyArNDU1LDE4
IEBAIHN1YiBzaG91bGRFeHBvc2VJbnRlcmZhY2UKIAogICAgIHJldHVybiAhJGV4dGVuZGVkQXR0
cmlidXRlcy0+eyJOb0ludGVyZmFjZU9iamVjdCJ9OwogfQorCitzdWIgdXBkYXRlRGljdGlvbmFy
eURlcGVuZGVuY2llcworeworICAgIG15ICRmaWxlQ29udGVudHMgPSBzaGlmdDsKKyAgICBteSAk
aWRsRmlsZSA9IHNoaWZ0OworCisgICAgbXkgJGRpY3Rpb25hcnlOYW1lID0gZmlsZXBhcnNlKGJh
c2VuYW1lKCRpZGxGaWxlKSwgIi5pZGwiKTsKKworICAgIG15IEBiYXNlRGljdGlvbmFyaWVzID0g
KCk7CisgICAgd2hpbGUgKCRmaWxlQ29udGVudHMgPX4gL1xzKmRpY3Rpb25hcnlccysoXHcrKVxz
KzpccysoXHcrKVxzKi9tZykgeworICAgICAgICBuZXh0IGlmICEkaW50ZXJmYWNlTmFtZVRvSWRs
RmlsZXskMn0gfHwgKGdyZXAgeyAkXyBlcSAkMiB9IEBiYXNlRGljdGlvbmFyaWVzKTsKKyAgICAg
ICAgcHVzaChAYmFzZURpY3Rpb25hcmllcywgJDIpOworICAgIH0KKyAgICAkZGljdGlvbmFyeURl
cGVuZGVuY2llc3skZGljdGlvbmFyeU5hbWV9ID0gKGpvaW4oIi5pZGwgIiwgQGJhc2VEaWN0aW9u
YXJpZXMpIC4gIi5pZGwiKSBpZiBAYmFzZURpY3Rpb25hcmllczsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlv
bmFyeTIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlcml2ZWREaWN0aW9uYXJ5Mi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2JhODRmMDNkYmE0ZGY5MGRkNDNi
NzA0MTU1YWEyMjQ1OGFmMmJkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwCkBAIC0w
LDAgKzEsMzE3IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3Bl
biBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdl
bmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJKU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuaCIKKworI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgorI2luY2x1ZGUgIkpT
RE9NQ29udmVydENhbGxiYWNrcy5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydE51bWJlcnMuaCIK
KyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVkZSAiSlNET01HbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU1ZvaWRDYWxsYmFjay5oIgorI2luY2x1ZGUgIlNldHRpbmdz
LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL09iamVjdENvbnN0cnVjdG9yLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUg
ewordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwordGVtcGxhdGU8PiBUZXN0RGVyaXZlZERpY3Rpb25h
cnkyIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeTI+KEpTR2xvYmFsT2Jq
ZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9
IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworICAgIGJvb2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2
YWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpOworICAgIGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5k
ZWZpbmVkID8gbnVsbHB0ciA6IHZhbHVlLmdldE9iamVjdCgpOworICAgIGlmIChVTkxJS0VMWSgh
aXNOdWxsT3JVbmRlZmluZWQgJiYgIW9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICBUZXN0RGVyaXZlZERpY3Rpb25hcnkyIHJlc3VsdDsKKyAgICBKU1ZhbHVlIGJv
b2xNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIGJvb2xN
ZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIGJvb2xNZW1i
ZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIWJvb2xNZW1iZXJWYWx1ZS5pc1Vu
ZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5ib29sTWVtYmVyID0gY29udmVydDxJRExCb29s
ZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBib29sTWVtYmVyVmFsdWUpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgY2Fs
bGJhY2tNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIGNh
bGxiYWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBj
YWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIWNhbGxi
YWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY2FsbGJhY2tN
ZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZh
bHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFs
dWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBzdHJpbmdNZW1iZXJWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAic3RyaW5nTWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghc3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICByZXN1bHQuc3RyaW5nTWVtYmVyID0gY29udmVydDxJRExET01T
dHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHN0cmluZ01lbWJlclZhbHVlKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVl
IGRlcml2ZWRCb29sTWVtYmVyMlZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAg
ICAgICAgZGVyaXZlZEJvb2xNZW1iZXIyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2Ug
eworICAgICAgICBkZXJpdmVkQm9vbE1lbWJlcjJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1i
ZXIyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Cisg
ICAgfQorICAgIGlmICghZGVyaXZlZEJvb2xNZW1iZXIyVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICByZXN1bHQuZGVyaXZlZEJvb2xNZW1iZXIyID0gY29udmVydDxJRExCb29sZWFuPihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBkZXJpdmVkQm9vbE1lbWJlcjJWYWx1ZSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIGNvbnN0IFRlc3REZXJpdmVkRGljdGlvbmFyeTImIGRpY3Rpb25hcnkpCit7Cisg
ICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKworICAgIGF1
dG8gcmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CisKKyAgICBpZiAoIUlETEJvb2xlYW46Omlz
TnVsbFZhbHVlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpIHsKKyAgICAgICAgYXV0byBib29sTWVt
YmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShkaWN0aW9uYXJ5LmJvb2xNZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJl
Y3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSwgYm9v
bE1lbWJlclZhbHVlKTsKKyAgICB9CisgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9p
ZENhbGxiYWNrPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpIHsKKyAg
ICAgICAgYXV0byBjYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9u
PEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJRExD
YWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIiksIGNh
bGxiYWNrTWVtYmVyVmFsdWUpOworICAgIH0KKyAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxs
VmFsdWUoZGljdGlvbmFyeS5zdHJpbmdNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gc3RyaW5nTWVt
YmVyVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURMRE9N
U3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zdHJpbmdNZW1iZXIp
KTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0
cmluZyh2bSwgInN0cmluZ01lbWJlciIpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgfQorICAg
IGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5kZXJpdmVkQm9vbE1lbWJl
cjIpKSB7CisgICAgICAgIGF1dG8gZGVyaXZlZEJvb2xNZW1iZXIyVmFsdWUgPSB0b0pTPElETEJv
b2xlYW4+KElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmRl
cml2ZWRCb29sTWVtYmVyMikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIyIiksIGRlcml2ZWRC
b29sTWVtYmVyMlZhbHVlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordGVtcGxh
dGU8PiBUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5
PFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnk+KEpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQoreworICAgIFZNJiB2bSA9IEpTQzo6Z2V0
Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworICAgIGJvb2wgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1ZS5pc1Vu
ZGVmaW5lZE9yTnVsbCgpOworICAgIGF1dG8qIG9iamVjdCA9IGlzTnVsbE9yVW5kZWZpbmVkID8g
bnVsbHB0ciA6IHZhbHVlLmdldE9iamVjdCgpOworICAgIGlmIChVTkxJS0VMWSghaXNOdWxsT3JV
bmRlZmluZWQgJiYgIW9iamVjdCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoJmxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAg
ICBUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5IHJlc3VsdDsKKyAgICBKU1ZhbHVl
IGJvb2xNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIGJv
b2xNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIGJvb2xN
ZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIWJvb2xNZW1iZXJWYWx1ZS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3VsdC5ib29sTWVtYmVyID0gY29udmVydDxJRExC
b29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBib29sTWVtYmVyVmFsdWUpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUg
Y2FsbGJhY2tNZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAg
IGNhbGxiYWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAg
ICBjYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3Qs
IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIWNh
bGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY2FsbGJh
Y2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+Pihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oJmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIHBhcnRpYWxCb29s
ZWFuTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0
aWFsQm9vbGVhbk1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXIi
KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9
CisgICAgaWYgKCFwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgcmVzdWx0LnBhcnRpYWxCb29sZWFuTWVtYmVyID0gY29udmVydDxJRExCb29sZWFuPihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQm9vbGVhbk1lbWJlclZhbHVlKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyNpZiBFTkFCTEUo
Q29uZGl0aW9uYWwxNSkKKyAgICBKU1ZhbHVlIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRp
dGlvbmFsVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFs
Qm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAicGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0
aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgcmVzdWx0LnBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsID0gY29udmVy
dDxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQm9vbGVhbk1lbWJlcldp
dGhDb25kaXRpb25hbFZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOworICAgIH0KKyNlbmRpZgorICAgIEpTVmFsdWUgcGFydGlhbENhbGxiYWNrTWVt
YmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFsQ2Fs
bGJhY2tNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIHBh
cnRpYWxDYWxsYmFja01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiKSk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9Cisg
ICAgaWYgKCFwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAg
ICAgIHJlc3VsdC5wYXJ0aWFsQ2FsbGJhY2tNZW1iZXIgPSBjb252ZXJ0PElETENhbGxiYWNrRnVu
Y3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsQ2FsbGJh
Y2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsK
KyAgICB9CisgICAgSlNWYWx1ZSBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWU7CisgICAg
aWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVy
VmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0aWFsUmVxdWly
ZWRMb25nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiKSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAg
aWYgKCFwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICByZXN1bHQucGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciA9IGNvbnZlcnQ8SURMTG9uZz4o
bGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0gZWxzZSB7
CisgICAgICAgIHRocm93UmVxdWlyZWRNZW1iZXJUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgInBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIiLCAiVGVzdERlcml2ZWRE
aWN0aW9uYXJ5IiwgImxvbmciKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgSlNW
YWx1ZSBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVk
KQorICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAg
IGVsc2UgeworICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxT
dHJpbmdNZW1iZXIiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
eyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICByZXN1bHQucGFydGlhbFN0cmluZ01lbWJlciA9IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFsdWUp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQor
ICAgIEpTVmFsdWUgcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWU7
CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVy
V2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7Cisg
ICAgICAgIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlID0gb2Jq
ZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0
aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7
CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmcg
PSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbFN0cmlu
Z01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgcGFydGlhbFVuc2ln
bmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5k
ZWZpbmVkKQorICAgICAgICBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVk
QXNWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIHBhcnRpYWxVbnNp
Z25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGlj
YWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWdu
ZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXMiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFwYXJ0aWFsVW5zaWduZWRM
b25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAg
IHJlc3VsdC5wYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyID0gY29udmVydDxJRExVbnNpZ25lZExv
bmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1w
bGVtZW50ZWRBc1ZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVlOworICAgIGlmIChp
c051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5l
ZCgpOworICAgIGVsc2UgeworICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5n
TWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgfQorICAgIGlmICghc3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICByZXN1bHQuc3RyaW5nTWVtYmVyID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxH
bG9iYWxPYmplY3QsIHN0cmluZ01lbWJlclZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIGRlcml2ZWRCb29sTWVt
YmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBkZXJpdmVkQm9v
bE1lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgZGVyaXZl
ZEJvb2xNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIiKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFkZXJp
dmVkQm9vbE1lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmRlcml2
ZWRCb29sTWVtYmVyID0gY29udmVydDxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBk
ZXJpdmVkQm9vbE1lbWJlclZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitKU0M6OkpTT2Jq
ZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCwgY29uc3QgVGVzdERl
cml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeSYgZGljdGlvbmFyeSkKK3sKKyAgICBhdXRvJiB2
bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworCisgICAgYXV0byByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
Lm9iamVjdFByb3RvdHlwZSgpKTsKKworICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUo
ZGljdGlvbmFyeS5ib29sTWVtYmVyKSkgeworICAgICAgICBhdXRvIGJvb2xNZW1iZXJWYWx1ZSA9
IHRvSlM8SURMQm9vbGVhbj4oSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRp
Y3Rpb25hcnkuYm9vbE1lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlND
OjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciIpLCBib29sTWVtYmVyVmFs
dWUpOworICAgIH0KKyAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+
Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSkgeworICAgICAgICBhdXRv
IGNhbGxiYWNrTWVtYmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2Fs
bGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIElETENhbGxiYWNrRnVu
Y3Rpb248SlNWb2lkQ2FsbGJhY2s+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFy
eS5jYWxsYmFja01lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJ
ZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSwgY2FsbGJhY2tNZW1i
ZXJWYWx1ZSk7CisgICAgfQorICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFsdWUoZGljdGlv
bmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJlcikpIHsKKyAgICAgICAgYXV0byBwYXJ0aWFsQm9vbGVh
bk1lbWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFuPihJRExCb29sZWFuOjpleHRyYWN0VmFsdWVG
cm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJlcikpOworICAgICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFy
dGlhbEJvb2xlYW5NZW1iZXIiKSwgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSk7CisgICAgfQor
I2lmIEVOQUJMRShDb25kaXRpb25hbDE1KQorICAgIGlmICghSURMQm9vbGVhbjo6aXNOdWxsVmFs
dWUoZGljdGlvbmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCkpIHsKKyAg
ICAgICAgYXV0byBwYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbFZhbHVlID0gdG9K
UzxJRExCb29sZWFuPihJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlv
bmFyeS5wYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCkpOworICAgICAgICByZXN1
bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlh
bEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwiKSwgcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRo
Q29uZGl0aW9uYWxWYWx1ZSk7CisgICAgfQorI2VuZGlmCisgICAgaWYgKCFJRExDYWxsYmFja0Z1
bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5wYXJ0aWFsQ2Fs
bGJhY2tNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUg
PSB0b0pTPElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBnbG9iYWxPYmplY3QsIElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsQ2FsbGJhY2tNZW1i
ZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxDYWxsYmFja01lbWJlciIpLCBwYXJ0aWFsQ2FsbGJhY2tNZW1i
ZXJWYWx1ZSk7CisgICAgfQorICAgIGF1dG8gcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVl
ID0gdG9KUzxJRExMb25nPihkaWN0aW9uYXJ5LnBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIpOwor
ICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIiksIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJW
YWx1ZSk7CisgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFy
dGlhbFN0cmluZ01lbWJlcikpIHsKKyAgICAgICAgYXV0byBwYXJ0aWFsU3RyaW5nTWVtYmVyVmFs
dWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURMRE9NU3RyaW5n
OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsU3RyaW5nTWVtYmVy
KSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sICJwYXJ0aWFsU3RyaW5nTWVtYmVyIiksIHBhcnRpYWxTdHJpbmdNZW1iZXJWYWx1
ZSk7CisgICAgfQorICAgIGlmIChkb3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oJmdsb2JhbE9iamVjdCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRp
bmdzKCkudGVzdFNldHRpbmdFbmFibGVkKCkpIHsKKyAgICAgICAgaWYgKCFJRExET01TdHJpbmc6
OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlT
ZXR0aW5nKSkgeworICAgICAgICAgICAgYXV0byBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJs
ZWRCeVNldHRpbmdWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRp
YWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZykpOworICAgICAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxT
dHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZyIpLCBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0
aEVuYWJsZWRCeVNldHRpbmdWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFJRExV
bnNpZ25lZExvbmc6OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbFVuc2lnbmVkTG9uZ01l
bWJlcikpIHsKKyAgICAgICAgYXV0byBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxl
bWVudGVkQXNWYWx1ZSA9IHRvSlM8SURMVW5zaWduZWRMb25nPihJRExVbnNpZ25lZExvbmc6OmV4
dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnBhcnRpYWxVbnNpZ25lZExvbmdNZW1i
ZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBcyIp
LCBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSk7CisgICAg
fQorICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnN0cmluZ01l
bWJlcikpIHsKKyAgICAgICAgYXV0byBzdHJpbmdNZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3Ry
aW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBJRExET01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIiks
IHN0cmluZ01lbWJlclZhbHVlKTsKKyAgICB9CisgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxW
YWx1ZShkaWN0aW9uYXJ5LmRlcml2ZWRCb29sTWVtYmVyKSkgeworICAgICAgICBhdXRvIGRlcml2
ZWRCb29sTWVtYmVyVmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KElETEJvb2xlYW46OmV4dHJhY3RW
YWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LmRlcml2ZWRCb29sTWVtYmVyKSk7CisgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJk
ZXJpdmVkQm9vbE1lbWJlciIpLCBkZXJpdmVkQm9vbE1lbWJlclZhbHVlKTsKKyAgICB9CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0
aW9uYXJ5Mi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dERlcml2ZWREaWN0aW9uYXJ5Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBiOTQyOTY1MmQ3M2Q0NzNhMjYzYTRm
MTJiZTVjNjYzYjNlNjNmNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmgKQEAgLTAsMCAr
MSwzNiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291
cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0
ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAg
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAg
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAg
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1
ZGUgIkpTRE9NQ29udmVydERpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJUZXN0RGVyaXZlZERpY3Rp
b25hcnkyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordGVtcGxhdGU8PiBUZXN0RGVyaXZl
ZERpY3Rpb25hcnkyIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeTI+KEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOworCitKU0M6OkpTT2JqZWN0KiBjb252
ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0
JiwgY29uc3QgVGVzdERlcml2ZWREaWN0aW9uYXJ5MiYpOworCit0ZW1wbGF0ZTw+IFRlc3REZXJp
dmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnkgY29udmVydERpY3Rpb25hcnk8VGVzdERlcml2ZWRE
aWN0aW9uYXJ5Mjo6RGljdGlvbmFyeT4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1
ZSk7CisKK0pTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNET01HbG9iYWxPYmplY3QmLCBjb25zdCBUZXN0RGVyaXZlZERpY3Rpb25hcnky
OjpEaWN0aW9uYXJ5Jik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmhlcml0ZWREaWN0
aW9uYXJ5Mi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNjZjODRlM2Q3OTRhMGZh
NzBkYzZkYjE2Y2E3YWY5YjQ0NmFiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuY3Bw
CkBAIC0wLDAgKzEsMTA0IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJL
aXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVk
IGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJy
YXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAg
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5
OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJKU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5oIgorCisjaW5j
bHVkZSAiSlNET01Db252ZXJ0Qm9vbGVhbi5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydENhbGxi
YWNrcy5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydFN0cmluZ3MuaCIKKyNpbmNsdWRlICJKU0RP
TUdsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTVm9pZENhbGxiYWNrLmgiCisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09i
amVjdENvbnN0cnVjdG9yLmg+CisKKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNw
YWNlIEpTQzsKKwordGVtcGxhdGU8PiBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIgY29udmVydERp
Y3Rpb25hcnk8VGVzdEluaGVyaXRlZERpY3Rpb25hcnkyPihKU0dsb2JhbE9iamVjdCYgbGV4aWNh
bEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBKU0M6OmdldFZN
KCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFsdWUuaXNVbmRl
ZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVmaW5lZCA/IG51
bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlzTnVsbE9yVW5k
ZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAg
VGVzdEluaGVyaXRlZERpY3Rpb25hcnkyIHJlc3VsdDsKKyAgICBKU1ZhbHVlIGJvb2xNZW1iZXJW
YWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIGJvb2xNZW1iZXJWYWx1
ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAgIGJvb2xNZW1iZXJWYWx1ZSA9
IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiYm9vbE1lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIWJvb2xNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIHJlc3VsdC5ib29sTWVtYmVyID0gY29udmVydDxJRExCb29sZWFuPihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBib29sTWVtYmVyVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgY2FsbGJhY2tNZW1i
ZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIGNhbGxiYWNrTWVt
YmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBjYWxsYmFja01l
bWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIWNhbGxiYWNrTWVtYmVy
VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuY2FsbGJhY2tNZW1iZXIgPSBj
b252ZXJ0PElETENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjYWxsYmFja01lbWJlclZhbHVlLCAqanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4o
JmxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIHN0cmluZ01lbWJlclZhbHVlOworICAg
IGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBqc1Vu
ZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBzdHJpbmdNZW1iZXJWYWx1ZSA9IG9iamVj
dC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAi
c3RyaW5nTWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CisgICAgfQorICAgIGlmICghc3RyaW5nTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkg
eworICAgICAgICByZXN1bHQuc3RyaW5nTWVtYmVyID0gY29udmVydDxJRExET01TdHJpbmc+KGxl
eGljYWxHbG9iYWxPYmplY3QsIHN0cmluZ01lbWJlclZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCwgY29uc3QgVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyJiBkaWN0aW9uYXJ5KQoreworICAgIGF1
dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisKKyAgICBhdXRvIHJl
c3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxP
YmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOworCisgICAgaWYgKCFJRExCb29sZWFuOjppc051bGxW
YWx1ZShkaWN0aW9uYXJ5LmJvb2xNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gYm9vbE1lbWJlclZh
bHVlID0gdG9KUzxJRExCb29sZWFuPihJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVyIiksIGJvb2xNZW1i
ZXJWYWx1ZSk7CisgICAgfQorICAgIGlmICghSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxs
YmFjaz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIpKSB7CisgICAgICAg
IGF1dG8gY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQ2FsbGJhY2tGdW5jdGlvbjxKU1Zv
aWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgSURMQ2FsbGJh
Y2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0
aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBK
U0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJlciIpLCBjYWxsYmFj
a01lbWJlclZhbHVlKTsKKyAgICB9CisgICAgaWYgKCFJRExET01TdHJpbmc6OmlzTnVsbFZhbHVl
KGRpY3Rpb25hcnkuc3RyaW5nTWVtYmVyKSkgeworICAgICAgICBhdXRvIHN0cmluZ01lbWJlclZh
bHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIElETERPTVN0cmlu
Zzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5nTWVtYmVyKSk7Cisg
ICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmco
dm0sICJzdHJpbmdNZW1iZXIiKSwgc3RyaW5nTWVtYmVyVmFsdWUpOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlv
bmFyeTIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJ
bmhlcml0ZWREaWN0aW9uYXJ5Mi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwNGVhNzAwZTU0ZTRhYWUxYTA4YTNl
MDMwZjQ5MmE2MmY2NDRlYzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuaApAQCAtMCww
ICsxLDMyIEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBz
b3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVy
YXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiSlNET01Db252ZXJ0RGljdGlvbmFyeS5oIgorI2luY2x1ZGUgIlRlc3RJbmhlcml0ZWRE
aWN0aW9uYXJ5Mi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPD4gVGVzdElu
aGVyaXRlZERpY3Rpb25hcnkyIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9u
YXJ5Mj4oSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CisKK0pTQzo6SlNPYmpl
Y3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNET01HbG9i
YWxPYmplY3QmLCBjb25zdCBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTImKTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xZTM0ZjE5YTIzOTZkMGVlNjI4ZDVhOGVkNjE0M2IyNzI2NzUzZGJlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERl
cGVuZGVuY2llcy5kZXAKQEAgLTAsMCArMSwyNDEgQEAKKyNTdXBwbGVtZW50YWwgZGVwZW5kZW5j
aWVzCitKU1Rlc3RDRVJlYWN0aW9ucy5oOiAKK0RPTVRlc3RDRVJlYWN0aW9ucy5oOiAKK1dlYkRP
TVRlc3RDRVJlYWN0aW9ucy5oOiAKK0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuaDogCitE
T01UZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllci5oOiAKK1dlYkRPTVRlc3RDRVJlYWN0aW9uc1N0
cmluZ2lmaWVyLmg6IAorSlNUZXN0Q2FsbFRyYWNlci5oOiAKK0RPTVRlc3RDYWxsVHJhY2VyLmg6
IAorV2ViRE9NVGVzdENhbGxUcmFjZXIuaDogCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmg6IAor
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb24uaDogCitXZWJET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5o
OiAKK0pTVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93Lmg6IAorRE9NVGVzdENhbGxiYWNrRnVu
Y3Rpb25SZXRocm93Lmg6IAorV2ViRE9NVGVzdENhbGxiYWNrRnVuY3Rpb25SZXRocm93Lmg6IAor
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0Lmg6IAorRE9NVGVzdENhbGxiYWNr
RnVuY3Rpb25XaXRoVGhpc09iamVjdC5oOiAKK1dlYkRPTVRlc3RDYWxsYmFja0Z1bmN0aW9uV2l0
aFRoaXNPYmplY3QuaDogCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmg6IAor
RE9NVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRlZnMuaDogCitXZWJET01UZXN0Q2FsbGJh
Y2tGdW5jdGlvbldpdGhUeXBlZGVmcy5oOiAKK0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmg6IAor
RE9NVGVzdENhbGxiYWNrSW50ZXJmYWNlLmg6IAorV2ViRE9NVGVzdENhbGxiYWNrSW50ZXJmYWNl
Lmg6IAorSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaDogCitET01UZXN0Q2xh
c3NXaXRoSlNCdWlsdGluQ29uc3RydWN0b3IuaDogCitXZWJET01UZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3IuaDogCitKU1Rlc3RET01KSVQuaDogCitET01UZXN0RE9NSklULmg6IAor
V2ViRE9NVGVzdERPTUpJVC5oOiAKK0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Lmg6IAorRE9NVGVz
dERlcml2ZWREaWN0aW9uYXJ5Lmg6IAorV2ViRE9NVGVzdERlcml2ZWREaWN0aW9uYXJ5Lmg6IAor
SlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmg6IAorRE9NVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5o
OiAKK1dlYkRPTVRlc3REZXJpdmVkRGljdGlvbmFyeTIuaDogCitKU1Rlc3REb21haW5TZWN1cml0
eS5oOiAKK0RPTVRlc3REb21haW5TZWN1cml0eS5oOiAKK1dlYkRPTVRlc3REb21haW5TZWN1cml0
eS5oOiAKK0pTVGVzdEVuYWJsZWRCeVNldHRpbmcuaDogCitET01UZXN0RW5hYmxlZEJ5U2V0dGlu
Zy5oOiAKK1dlYkRPTVRlc3RFbmFibGVkQnlTZXR0aW5nLmg6IAorSlNUZXN0RW5hYmxlZEZvckNv
bnRleHQuaDogCitET01UZXN0RW5hYmxlZEZvckNvbnRleHQuaDogCitXZWJET01UZXN0RW5hYmxl
ZEZvckNvbnRleHQuaDogCitKU1Rlc3RFdmVudENvbnN0cnVjdG9yLmg6IAorRE9NVGVzdEV2ZW50
Q29uc3RydWN0b3IuaDogCitXZWJET01UZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOiAKK0pTVGVzdEV2
ZW50VGFyZ2V0Lmg6IAorRE9NVGVzdEV2ZW50VGFyZ2V0Lmg6IAorV2ViRE9NVGVzdEV2ZW50VGFy
Z2V0Lmg6IAorSlNUZXN0RXhjZXB0aW9uLmg6IAorRE9NVGVzdEV4Y2VwdGlvbi5oOiAKK1dlYkRP
TVRlc3RFeGNlcHRpb24uaDogCitKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmg6IAorRE9NVGVz
dEdlbmVyYXRlSXNSZWFjaGFibGUuaDogCitXZWJET01UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5o
OiAKK0pTVGVzdEdsb2JhbE9iamVjdC5oOiBCaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5p
ZGwKK0RPTVRlc3RHbG9iYWxPYmplY3QuaDogQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMu
aWRsCitXZWJET01UZXN0R2xvYmFsT2JqZWN0Lmg6IEJpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0
b3JzLmlkbAorQmluZGluZ1Rlc3RHbG9iYWxDb25zdHJ1Y3RvcnMuaWRsOgorSlNUZXN0SW5kZXhl
ZFNldHRlck5vSWRlbnRpZmllci5oOiAKK0RPTVRlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Lmg6IAorV2ViRE9NVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDogCitKU1Rlc3RJbmRl
eGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDogCitET01UZXN0SW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uLmg6IAorV2ViRE9NVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oOiAKK0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOiAKK0RPTVRlc3RJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDogCitXZWJET01UZXN0SW5kZXhlZFNldHRlcldpdGhJ
ZGVudGlmaWVyLmg6IAorSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5oOiBUZXN0U3VwcGxlbWVu
dGFsLmlkbAorRE9NVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuaDogVGVzdFN1cHBsZW1lbnRhbC5p
ZGwKK1dlYkRPTVRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Lmg6IFRlc3RTdXBwbGVtZW50YWwuaWRs
CitUZXN0U3VwcGxlbWVudGFsLmlkbDoKK0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmg6IAor
RE9NVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmg6IAorV2ViRE9NVGVzdEluaGVyaXRlZERpY3Rp
b25hcnkyLmg6IAorSlNUZXN0SW50ZXJmYWNlLmg6IFRlc3RJbXBsZW1lbnRzLmlkbCBUZXN0U3Vw
cGxlbWVudGFsLmlkbAorRE9NVGVzdEludGVyZmFjZS5oOiBUZXN0SW1wbGVtZW50cy5pZGwgVGVz
dFN1cHBsZW1lbnRhbC5pZGwKK1dlYkRPTVRlc3RJbnRlcmZhY2UuaDogVGVzdEltcGxlbWVudHMu
aWRsIFRlc3RTdXBwbGVtZW50YWwuaWRsCitUZXN0SW1wbGVtZW50cy5pZGw6CitUZXN0U3VwcGxl
bWVudGFsLmlkbDoKK0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmg6IAorRE9NVGVz
dEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmg6IAorV2ViRE9NVGVzdEludGVyZmFjZUxlYWRp
bmdVbmRlcnNjb3JlLmg6IAorSlNUZXN0SXRlcmFibGUuaDogCitET01UZXN0SXRlcmFibGUuaDog
CitXZWJET01UZXN0SXRlcmFibGUuaDogCitKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAK
K0RPTVRlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKK1dlYkRPTVRlc3RKU0J1aWx0aW5Db25z
dHJ1Y3Rvci5oOiAKK0pTVGVzdE1hcExpa2UuaDogCitET01UZXN0TWFwTGlrZS5oOiAKK1dlYkRP
TVRlc3RNYXBMaWtlLmg6IAorSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVy
Lmg6IAorRE9NVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOiAKK1dlYkRP
TVRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDogCitKU1Rlc3ROYW1lZEFu
ZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOiAKK0RPTVRlc3ROYW1lZEFuZEluZGV4
ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOiAKK1dlYkRPTVRlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOiAKK0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldp
dGhJZGVudGlmaWVyLmg6IAorRE9NVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlm
aWVyLmg6IAorV2ViRE9NVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6
IAorSlNUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOiAKK0RPTVRlc3ROYW1lZENvbnN0cnVjdG9yLmg6
IAorV2ViRE9NVGVzdE5hbWVkQ29uc3RydWN0b3IuaDogCitKU1Rlc3ROYW1lZERlbGV0ZXJOb0lk
ZW50aWZpZXIuaDogCitET01UZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6IAorV2ViRE9N
VGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5oOiAKK0pTVGVzdE5hbWVkRGVsZXRlclRocm93
aW5nRXhjZXB0aW9uLmg6IAorRE9NVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmg6
IAorV2ViRE9NVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmg6IAorSlNUZXN0TmFt
ZWREZWxldGVyV2l0aElkZW50aWZpZXIuaDogCitET01UZXN0TmFtZWREZWxldGVyV2l0aElkZW50
aWZpZXIuaDogCitXZWJET01UZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuaDogCitKU1Rl
c3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5oOiAKK0RPTVRlc3ROYW1lZERlbGV0ZXJX
aXRoSW5kZXhlZEdldHRlci5oOiAKK1dlYkRPTVRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdl
dHRlci5oOiAKK0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaDogCitET01UZXN0TmFtZWRHZXR0
ZXJDYWxsV2l0aC5oOiAKK1dlYkRPTVRlc3ROYW1lZEdldHRlckNhbGxXaXRoLmg6IAorSlNUZXN0
TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuaDogCitET01UZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZp
ZXIuaDogCitXZWJET01UZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuaDogCitKU1Rlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyLmg6IAorRE9NVGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZp
ZXIuaDogCitXZWJET01UZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5oOiAKK0pTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVy
Lmg6IAorV2ViRE9NVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmg6IAorSlNUZXN0TmFtZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOiAKK0RPTVRlc3ROYW1lZFNldHRlclRocm93aW5nRXhj
ZXB0aW9uLmg6IAorV2ViRE9NVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uaDogCitK
U1Rlc3ROYW1lZFNldHRlcldpdGhJZGVudGlmaWVyLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0
aElkZW50aWZpZXIuaDogCitXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOiAK
K0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuaDogCitET01UZXN0TmFtZWRTZXR0
ZXJXaXRoSW5kZXhlZEdldHRlci5oOiAKK1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmg6IAorSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5o
OiAKK0RPTVRlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmg6IAorV2Vi
RE9NVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuaDogCitKU1Rlc3RO
YW1lZFNldHRlcldpdGhPdmVycmlkZUJ1aWx0aW5zLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0
aE92ZXJyaWRlQnVpbHRpbnMuaDogCitXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoT3ZlcnJpZGVC
dWlsdGlucy5oOiAKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmg6
IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmg6IAorV2ViRE9N
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzLmg6IAorSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlkZUJ1aWx0aW5zLmg6IAorRE9N
VGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0aWVzQW5kT3ZlcnJpZGVCdWlsdGlu
cy5oOiAKK1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92
ZXJyaWRlQnVpbHRpbnMuaDogCitKU1Rlc3ROb2RlLmg6IAorRE9NVGVzdE5vZGUuaDogCitXZWJE
T01UZXN0Tm9kZS5oOiAKK0pTVGVzdE9iai5oOiAKK0RPTVRlc3RPYmouaDogCitXZWJET01UZXN0
T2JqLmg6IAorSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuaDogVGVzdE9wZXJhdGlvbkJhc2Uu
aWRsCitET01UZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuaDogVGVzdE9wZXJhdGlvbkJhc2UuaWRs
CitXZWJET01UZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuaDogVGVzdE9wZXJhdGlvbkJhc2UuaWRs
CitUZXN0T3BlcmF0aW9uQmFzZS5pZGw6CitKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6
IAorRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDogCitXZWJET01UZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9ycy5oOiAKK0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UuaDogCitET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5oOiAKK1dl
YkRPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmg6IAorSlNUZXN0T3Zl
cnJpZGVCdWlsdGlucy5oOiAKK0RPTVRlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IAorV2ViRE9NVGVz
dE92ZXJyaWRlQnVpbHRpbnMuaDogCitKU1Rlc3RQbHVnaW5JbnRlcmZhY2UuaDogCitET01UZXN0
UGx1Z2luSW50ZXJmYWNlLmg6IAorV2ViRE9NVGVzdFBsdWdpbkludGVyZmFjZS5oOiAKK0pTVGVz
dFByb21pc2VSZWplY3Rpb25FdmVudC5oOiAKK0RPTVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQu
aDogCitXZWJET01UZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Lmg6IAorSlNUZXN0UmVhZE9ubHlN
YXBMaWtlLmg6IAorRE9NVGVzdFJlYWRPbmx5TWFwTGlrZS5oOiAKK1dlYkRPTVRlc3RSZWFkT25s
eU1hcExpa2UuaDogCitKU1Rlc3RSZWFkT25seVNldExpa2UuaDogCitET01UZXN0UmVhZE9ubHlT
ZXRMaWtlLmg6IAorV2ViRE9NVGVzdFJlYWRPbmx5U2V0TGlrZS5oOiAKK0pTVGVzdFJlcG9ydEV4
dHJhTWVtb3J5Q29zdC5oOiAKK0RPTVRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuaDogCitXZWJE
T01UZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0Lmg6IAorSlNUZXN0U2VyaWFsaXphdGlvbi5oOiAK
K0RPTVRlc3RTZXJpYWxpemF0aW9uLmg6IAorV2ViRE9NVGVzdFNlcmlhbGl6YXRpb24uaDogCitK
U1Rlc3RTZXJpYWxpemF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oOiAKK0RPTVRlc3RTZXJpYWxp
emF0aW9uSW5kaXJlY3RJbmhlcml0YW5jZS5oOiAKK1dlYkRPTVRlc3RTZXJpYWxpemF0aW9uSW5k
aXJlY3RJbmhlcml0YW5jZS5oOiAKK0pTVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Lmg6IAorRE9N
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0Lmg6IAorV2ViRE9NVGVzdFNlcmlhbGl6YXRpb25Jbmhl
cml0Lmg6IAorSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXRGaW5hbC5oOiAKK0RPTVRlc3RTZXJp
YWxpemF0aW9uSW5oZXJpdEZpbmFsLmg6IAorV2ViRE9NVGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0
RmluYWwuaDogCitKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDogCitET01U
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6IAorV2ViRE9NVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oOiAKK0pTVGVzdFNldExpa2UuaDogCitET01UZXN0U2V0
TGlrZS5oOiAKK1dlYkRPTVRlc3RTZXRMaWtlLmg6IAorSlNUZXN0U3RhbmRhbG9uZURpY3Rpb25h
cnkuaDogVGVzdFN1cHBsZW1lbnRhbC5pZGwKK0RPTVRlc3RTdGFuZGFsb25lRGljdGlvbmFyeS5o
OiBUZXN0U3VwcGxlbWVudGFsLmlkbAorV2ViRE9NVGVzdFN0YW5kYWxvbmVEaWN0aW9uYXJ5Lmg6
IFRlc3RTdXBwbGVtZW50YWwuaWRsCitUZXN0U3VwcGxlbWVudGFsLmlkbDoKK0pTVGVzdFN0YW5k
YWxvbmVFbnVtZXJhdGlvbi5oOiAKK0RPTVRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uaDogCitX
ZWJET01UZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmg6IAorSlNUZXN0U3RyaW5naWZpZXIuaDog
CitET01UZXN0U3RyaW5naWZpZXIuaDogCitXZWJET01UZXN0U3RyaW5naWZpZXIuaDogCitKU1Rl
c3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbi5oOiAKK0RPTVRlc3RTdHJpbmdpZmllckFu
b255bW91c09wZXJhdGlvbi5oOiAKK1dlYkRPTVRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJh
dGlvbi5oOiAKK0pTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uaDogCitET01UZXN0U3Ry
aW5naWZpZXJOYW1lZE9wZXJhdGlvbi5oOiAKK1dlYkRPTVRlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uLmg6IAorSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmg6IAor
RE9NVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5oOiAKK1dlYkRPTVRlc3RT
dHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMuaDogCitKU1Rlc3RTdHJpbmdpZmllck9w
ZXJhdGlvbk5hbWVkVG9TdHJpbmcuaDogCitET01UZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nLmg6IAorV2ViRE9NVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmlu
Zy5oOiAKK0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuaDogCitET01UZXN0U3Ry
aW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oOiAKK1dlYkRPTVRlc3RTdHJpbmdpZmllclJlYWRP
bmx5QXR0cmlidXRlLmg6IAorSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaDog
CitET01UZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaDogCitXZWJET01UZXN0U3Ry
aW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUuaDogCitKU1Rlc3RUeXBlZGVmcy5oOiAKK0RPTVRl
c3RUeXBlZGVmcy5oOiAKK1dlYkRPTVRlc3RUeXBlZGVmcy5oOiAKK0pTVGVzdFZvaWRDYWxsYmFj
a0Z1bmN0aW9uLmg6IAorRE9NVGVzdFZvaWRDYWxsYmFja0Z1bmN0aW9uLmg6IAorV2ViRE9NVGVz
dFZvaWRDYWxsYmFja0Z1bmN0aW9uLmg6IAorI0RpY3Rpb25hcmllcyBkZXBlbmRlbmNpZXMKK0pT
VGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcDogVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuaWRsCitK
U1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwOiBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5pZGwg
VGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuaWRsIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuaWRs
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmE1ODhmYjg3NTdiYWUxYzQ1MzNhNzc3ODg3MjVlNDNiODM4MTg2NDIKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dERlcml2ZWREaWN0aW9uYXJ5Mi5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1sK
KyAgICBKU0dlbmVyYXRlVG9KU09iamVjdAorXSBkaWN0aW9uYXJ5IFRlc3REZXJpdmVkRGljdGlv
bmFyeSA6IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IHsKKyAgICBib29sZWFuIGRlcml2ZWRCb29s
TWVtYmVyOworfTsKKworWworICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0CitdIGRpY3Rpb25hcnkg
VGVzdERlcml2ZWREaWN0aW9uYXJ5MiA6IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5MiB7CisgICAg
Ym9vbGVhbiBkZXJpdmVkQm9vbE1lbWJlcjI7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluaGVyaXRlZERpY3Rpb25h
cnkyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hZjI3Yjc2OGUyMTkwZDhhN2VlNGY4OWJiYjdkNmVmNDQwNDZk
NmEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdAorXQorZGljdGlvbmFyeSBUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeTIgeworICAgIGJvb2xlYW4gYm9vbE1lbWJlcjsKKyAgICBET01TdHJp
bmcgc3RyaW5nTWVtYmVyOworICAgIFZvaWRDYWxsYmFjayBjYWxsYmFja01lbWJlcjsKK307CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWE0MGM0
YTVkZjk4YjAyM2IzOGM5ZDVlZDkyNWY0YWZlM2JjYTMwOC4uZDhkMjdiY2I5N2E5Njg1ZDg5MzQz
Njc4YzI1MTAyOGRiZjU3ODM4MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA4LTI0ICBZb3Vlbm4gRmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZWQgYmluZGluZ3MgZm9yIGRl
cml2ZWQgZGljdGlvbmFyaWVzIGFyZSBub3QgcmVnZW5lcmF0ZWQgd2hlbiB0aGUgYmFzZSBkaWN0
aW9uYXJ5IGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE4MTcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCByZWdyZXNzaW9uIHRlc3RpbmcgY292ZXJhZ2UgZm9yIHRoZSBnZW5lcmF0aW9u
IG9mIHRoZSBtYWtlZmlsZSBkZXBlbmRlbmN5IGZpbGUuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2JpbmRpbmdzL21haW4ucHk6CisgICAgICAgIChCaW5kaW5nc1Rlc3RzLmdlbmVyYXRl
X3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KToKKyAgICAgICAgKEJpbmRpbmdzVGVzdHMuZGV0ZWN0
X2NoYW5nZXMpOgorICAgICAgICAoQmluZGluZ3NUZXN0cyk6CisgICAgICAgIChCaW5kaW5nc1Rl
c3RzLmRldGVjdF9maWxlX2NoYW5nZXMpOgorICAgICAgICAoQmluZGluZ3NUZXN0cy5tYWluKToK
KwogMjAyMC0wOC0yMyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQcm9ncmFtbWF0aWMgc2VsZWN0aW9uIG9mIHRleHQgaW4gYSB0ZXh0IGZpZWxkIGNh
dXNlcyB0aGUgaGlnaGxpZ2h0IG92ZXJsYXkgdG8gc3BpbGwgb3V0CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2JpbmRpbmdzL21haW4ucHkKaW5kZXggZWI1YTI4NzY2ZGNhMDJhNTE0YjQ3MThiMjgxNWRl
YTUyNzkyZjEwMi4uYTA3OGI4Yzk2MWFlYzgxNzYwMjNhMGUyMDFlYTdmZDM2ZmJkYWIwZSAxMDA2
NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQpAQCAtNzIsNyArNzIsNyBAQCBj
bGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAgICAgICAgZXhpdF9jb2RlID0gZS5leGl0X2NvZGUK
ICAgICAgICAgcmV0dXJuIGV4aXRfY29kZQogCi0gICAgZGVmIGdlbmVyYXRlX3N1cHBsZW1lbnRh
bF9kZXBlbmRlbmN5KHNlbGYsIGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVu
Y3lfZmlsZSwgd2luZG93X2NvbnN0cnVjdG9yc19maWxlLCB3b3JrZXJnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSwgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2Zp
bGUsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgd29ya2xldGds
b2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSwgdGVzdGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKToKKyAgICBk
ZWYgZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koc2VsZiwgaW5wdXRfZGlyZWN0b3J5
LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLCBzdXBwbGVtZW50YWxfbWFrZWZpbGVfZGVw
ZW5kZW5jeV9maWxlLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUsIHdvcmtlcmdsb2JhbHNjb3Bl
X2NvbnN0cnVjdG9yc19maWxlLCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3Rv
cnNfZmlsZSwgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCB3b3Jr
bGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIHBhaW50d29ya2xldGdsb2JhbHNjb3Bl
X2NvbnN0cnVjdG9yc19maWxlLCB0ZXN0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpOgog
ICAgICAgICBpZGxfZmlsZXNfbGlzdCA9IHRlbXBmaWxlLm1rc3RlbXAoKQogICAgICAgICBmb3Ig
aW5wdXRfZmlsZSBpbiBvcy5saXN0ZGlyKGlucHV0X2RpcmVjdG9yeSk6CiAgICAgICAgICAgICAo
bmFtZSwgZXh0ZW5zaW9uKSA9IG9zLnBhdGguc3BsaXRleHQoaW5wdXRfZmlsZSkKQEAgLTg4LDYg
Kzg4LDcgQEAgY2xhc3MgQmluZGluZ3NUZXN0czoKICAgICAgICAgICAgICAgICctLXRlc3RHbG9i
YWxDb250ZXh0TmFtZScsICdUZXN0R2xvYmFsT2JqZWN0JywKICAgICAgICAgICAgICAgICctLWRl
ZmluZXMnLCAnJywKICAgICAgICAgICAgICAgICctLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxl
Jywgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSwKKyAgICAgICAgICAgICAgICctLXN1cHBs
ZW1lbnRhbE1ha2VmaWxlRGVwcycsIHN1cHBsZW1lbnRhbF9tYWtlZmlsZV9kZXBlbmRlbmN5X2Zp
bGUsCiAgICAgICAgICAgICAgICAnLS13aW5kb3dDb25zdHJ1Y3RvcnNGaWxlJywgd2luZG93X2Nv
bnN0cnVjdG9yc19maWxlLAogICAgICAgICAgICAgICAgJy0td29ya2VyR2xvYmFsU2NvcGVDb25z
dHJ1Y3RvcnNGaWxlJywgd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsCiAgICAg
ICAgICAgICAgICAnLS1kZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUn
LCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwKQEAgLTEwOSwy
OSArMTEwLDM1IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAKICAgICBkZWYgZGV0ZWN0X2NoYW5n
ZXMoc2VsZiwgZ2VuZXJhdG9yLCB3b3JrX2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSk6
CiAgICAgICAgIGNoYW5nZXNfZm91bmQgPSBGYWxzZQotICAgICAgICBmb3Igb3V0cHV0X2ZpbGUg
aW4gb3MubGlzdGRpcih3b3JrX2RpcmVjdG9yeSk6Ci0gICAgICAgICAgICBjbWQgPSBbJ2RpZmYn
LAotICAgICAgICAgICAgICAgICAgICctdScsCi0gICAgICAgICAgICAgICAgICAgJy1OJywKLSAg
ICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ocmVmZXJlbmNlX2RpcmVjdG9yeSwgb3V0cHV0
X2ZpbGUpLAotICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbih3b3JrX2RpcmVjdG9yeSwg
b3V0cHV0X2ZpbGUpXQotCi0gICAgICAgICAgICBleGl0X2NvZGUgPSAwCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUucnVuX2NvbW1hbmQo
Y21kKQotICAgICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6Ci0gICAgICAgICAgICAg
ICAgb3V0cHV0ID0gZS5vdXRwdXQKLSAgICAgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmV4aXRf
Y29kZQotCi0gICAgICAgICAgICBpZiBleGl0X2NvZGUgb3Igb3V0cHV0OgotICAgICAgICAgICAg
ICAgIHByaW50KCdGQUlMOiAoJXMpICVzJyAlIChnZW5lcmF0b3IsIG91dHB1dF9maWxlKSkKLSAg
ICAgICAgICAgICAgICBwcmludChvdXRwdXQpCisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBvcy5s
aXN0ZGlyKHdvcmtfZGlyZWN0b3J5KToKKyAgICAgICAgICAgIGlmIHNlbGYuZGV0ZWN0X2ZpbGVf
Y2hhbmdlcyhnZW5lcmF0b3IsIHdvcmtfZGlyZWN0b3J5LCByZWZlcmVuY2VfZGlyZWN0b3J5LCBm
aWxlbmFtZSk6CiAgICAgICAgICAgICAgICAgY2hhbmdlc19mb3VuZCA9IFRydWUKLSAgICAgICAg
ICAgICAgICBpZiBzZWxmLmpzb25fZmlsZV9uYW1lOgotICAgICAgICAgICAgICAgICAgICBzZWxm
LmZhaWx1cmVzLmFwcGVuZCgiKCVzKSAlcyIgJSAoZ2VuZXJhdG9yLCBvdXRwdXRfZmlsZSkpCi0g
ICAgICAgICAgICBlbGlmIHNlbGYudmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgnUEFT
UzogKCVzKSAlcycgJSAoZ2VuZXJhdG9yLCBvdXRwdXRfZmlsZSkpCi0gICAgICAgICAgICBzeXMu
c3Rkb3V0LmZsdXNoKCkKKyAgICAgICAgcmV0dXJuIGNoYW5nZXNfZm91bmQKKworICAgIGRlZiBk
ZXRlY3RfZmlsZV9jaGFuZ2VzKHNlbGYsIGdlbmVyYXRvciwgd29ya19kaXJlY3RvcnksIHJlZmVy
ZW5jZV9kaXJlY3RvcnksIGZpbGVuYW1lKToKKyAgICAgICAgY2hhbmdlc19mb3VuZCA9IEZhbHNl
CisgICAgICAgIGNtZCA9IFsnZGlmZicsCisgICAgICAgICAgICAgICAnLXUnLAorICAgICAgICAg
ICAgICAgJy1OJywKKyAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihyZWZlcmVuY2VfZGlyZWN0
b3J5LCBmaWxlbmFtZSksCisgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4od29ya19kaXJlY3Rv
cnksIGZpbGVuYW1lKV0KKworICAgICAgICBleGl0X2NvZGUgPSAwCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIG91dHB1dCA9IHNlbGYuZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGNtZCkKKyAgICAg
ICAgZXhjZXB0IFNjcmlwdEVycm9yIGFzIGU6CisgICAgICAgICAgICBvdXRwdXQgPSBlLm91dHB1
dAorICAgICAgICAgICAgZXhpdF9jb2RlID0gZS5leGl0X2NvZGUKKworICAgICAgICBpZiBleGl0
X2NvZGUgb3Igb3V0cHV0OgorICAgICAgICAgICAgcHJpbnQoJ0ZBSUw6ICglcykgJXMnICUgKGdl
bmVyYXRvciwgZmlsZW5hbWUpKQorICAgICAgICAgICAgcHJpbnQob3V0cHV0KQorICAgICAgICAg
ICAgY2hhbmdlc19mb3VuZCA9IFRydWUKKyAgICAgICAgICAgIGlmIHNlbGYuanNvbl9maWxlX25h
bWU6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsdXJlcy5hcHBlbmQoIiglcykgJXMiICUgKGdl
bmVyYXRvciwgZmlsZW5hbWUpKQorICAgICAgICBlbGlmIHNlbGYudmVyYm9zZToKKyAgICAgICAg
ICAgIHByaW50KCdQQVNTOiAoJXMpICVzJyAlIChnZW5lcmF0b3IsIGZpbGVuYW1lKSkKKyAgICAg
ICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgIHJldHVybiBjaGFuZ2VzX2ZvdW5kCiAKICAg
ICBkZWYgdGVzdF9tYXRjaGVzX3BhdHRlcm5zKHNlbGYsIHRlc3QpOgpAQCAtMTgyLDkgKzE4OSwx
MyBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogCiAgICAgICAgIGFsbF90ZXN0c19wYXNzZWQgPSBU
cnVlCiAKKyAgICAgICAgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZW5hbWUgPSAnU3VwcGxl
bWVudGFsRGVwZW5kZW5jaWVzLnR4dCcKKyAgICAgICAgc3VwcGxlbWVudGFsX21ha2VmaWxlX2Rl
cGVuZGVuY3lfZmlsZW5hbWUgPSAnU3VwcGxlbWVudGFsRGVwZW5kZW5jaWVzLmRlcCcKKwogICAg
ICAgICB3b3JrX2RpcmVjdG9yeSA9IHRlbXBmaWxlLm1rZHRlbXAoKQogICAgICAgICBpbnB1dF9k
aXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnc2NyaXB0cycs
ICd0ZXN0JykKLSAgICAgICAgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSA9IG9zLnBhdGgu
am9pbih3b3JrX2RpcmVjdG9yeSwgJ3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5LnRtcCcpCisgICAg
ICAgIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUgPSBvcy5wYXRoLmpvaW4od29ya19kaXJl
Y3RvcnksIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGVuYW1lKQorICAgICAgICBzdXBwbGVt
ZW50YWxfbWFrZWZpbGVfZGVwZW5kZW5jeV9maWxlID0gb3MucGF0aC5qb2luKHdvcmtfZGlyZWN0
b3J5IGlmIG5vdCBzZWxmLnJlc2V0X3Jlc3VsdHMgZWxzZSBpbnB1dF9kaXJlY3RvcnksIHN1cHBs
ZW1lbnRhbF9tYWtlZmlsZV9kZXBlbmRlbmN5X2ZpbGVuYW1lKQogICAgICAgICB3aW5kb3dfY29u
c3RydWN0b3JzX2ZpbGUgPSBvcy5wYXRoLmpvaW4od29ya19kaXJlY3RvcnksICdET01XaW5kb3dD
b25zdHJ1Y3RvcnMuaWRsJykKICAgICAgICAgd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3Jz
X2ZpbGUgPSBvcy5wYXRoLmpvaW4od29ya19kaXJlY3RvcnksICdXb3JrZXJHbG9iYWxTY29wZUNv
bnN0cnVjdG9ycy5pZGwnKQogICAgICAgICBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSA9IG9zLnBhdGguam9pbih3b3JrX2RpcmVjdG9yeSwgJ0RlZGljYXRlZFdv
cmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCcpCkBAIC0xOTIsMTEgKzIwMywxNiBAQCBj
bGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAgICB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0
b3JzX2ZpbGUgPSBvcy5wYXRoLmpvaW4od29ya19kaXJlY3RvcnksICdXb3JrbGV0R2xvYmFsU2Nv
cGVDb25zdHJ1Y3RvcnMuaWRsJykKICAgICAgICAgcGFpbnR3b3JrbGV0Z2xvYmFsc2NvcGVfY29u
c3RydWN0b3JzX2ZpbGUgPSBvcy5wYXRoLmpvaW4od29ya19kaXJlY3RvcnksICdQYWludFdvcmts
ZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwnKQogICAgICAgICB0ZXN0Z2xvYmFsc2NvcGVf
Y29uc3RydWN0b3JzX2ZpbGUgPSBvcy5wYXRoLmpvaW4od29ya19kaXJlY3RvcnksICdCaW5kaW5n
VGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGwnKQotICAgICAgICBpZiBzZWxmLmdlbmVyYXRlX3N1
cHBsZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVu
ZGVuY3lfZmlsZSwgd2luZG93X2NvbnN0cnVjdG9yc19maWxlLCB3b3JrZXJnbG9iYWxzY29wZV9j
b25zdHJ1Y3RvcnNfZmlsZSwgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3Jz
X2ZpbGUsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgd29ya2xl
dGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBwYWludHdvcmtsZXRnbG9iYWxzY29wZV9j
b25zdHJ1Y3RvcnNfZmlsZSwgdGVzdGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlKToKKwor
ICAgICAgICBpZiBzZWxmLmdlbmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KGlucHV0X2Rp
cmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSwgc3VwcGxlbWVudGFsX21ha2Vm
aWxlX2RlcGVuZGVuY3lfZmlsZSwgd2luZG93X2NvbnN0cnVjdG9yc19maWxlLCB3b3JrZXJnbG9i
YWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgZGVkaWNhdGVkd29ya2VyZ2xvYmFsc2NvcGVfY29u
c3RydWN0b3JzX2ZpbGUsIHNlcnZpY2V3b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmls
ZSwgd29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBwYWludHdvcmtsZXRnbG9i
YWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgdGVzdGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19m
aWxlKToKICAgICAgICAgICAgIHByaW50KCdGYWlsZWQgdG8gZ2VuZXJhdGUgYSBzdXBwbGVtZW50
YWwgZGVwZW5kZW5jeSBmaWxlLicpCiAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHdvcmtfZGly
ZWN0b3J5KQogICAgICAgICAgICAgcmV0dXJuIC0xCiAKKyAgICAgICAgaWYgbm90IHNlbGYucmVz
ZXRfcmVzdWx0czoKKyAgICAgICAgICAgIGlmIHNlbGYuZGV0ZWN0X2ZpbGVfY2hhbmdlcygnZGVw
ZW5kZW5jaWVzJywgd29ya19kaXJlY3RvcnksIGlucHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFs
X21ha2VmaWxlX2RlcGVuZGVuY3lfZmlsZW5hbWUpOgorICAgICAgICAgICAgICAgIGFsbF90ZXN0
c19wYXNzZWQgPSBGYWxzZQorCiAgICAgICAgIGZvciBnZW5lcmF0b3IgaW4gc2VsZi5nZW5lcmF0
b3JzOgogICAgICAgICAgICAgaW5wdXRfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKCdXZWJDb3Jl
JywgJ2JpbmRpbmdzJywgJ3NjcmlwdHMnLCAndGVzdCcpCiAgICAgICAgICAgICByZWZlcmVuY2Vf
ZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKCdXZWJDb3JlJywgJ2JpbmRpbmdzJywgJ3NjcmlwdHMn
LCAndGVzdCcsIGdlbmVyYXRvcikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407191</attachid>
            <date>2020-08-25 08:33:19 -0700</date>
            <delta_ts>2020-08-25 09:08:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181714-20200825173317.patch</filename>
            <type>text/plain</type>
            <size>51227</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2MTEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VkMTkxYjIzMDY2ZDQ0
ZWIzNzMxOTFjMGYwNzA1YjQyNGUyYjI5Mi4uNmZlMzI5Yzg2NTIyZjFjYmUzMjU3NWZjMDFiNDI3
Mzk0N2YwZDg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDIwLTA4LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZWQgYmluZGlu
Z3MgZm9yIGRlcml2ZWQgZGljdGlvbmFyaWVzIGFyZSBub3QgcmVnZW5lcmF0ZWQgd2hlbiB0aGUg
YmFzZSBkaWN0aW9uYXJ5IGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIEFkZCBkaWN0aW9uYXJ5IGZpbGUgZGVwZW5kZW5jaWVzIHRvIFN1cHBsZW1l
bnRhbERlcGVuZGVuY2llcy5kZXAuCisgICAgICAgIFdlIGFkZCB0aGUgYmFzZSBkaWN0aW9uYXJ5
IElETCBmaWxlIGFzIGEgZGVwZW5kZW5jeSB0byB0aGUgSlMgY3BwIGZpbGUgb2YgdGhlIGRlcml2
ZWQgZGljdGlvbmFyeS4KKyAgICAgICAgV2UgZG8gc28gaWYgd2UgZGV0ZWN0IHRoYXQgYSBkaWN0
aW9uYXJ5IGlzIGRlcml2aW5nIGZyb20gYW5vdGhlciBhbmQgYm90aCBkaWN0aW9uYXJpZXMgYXJl
IGluIHRoZWlyIG93biBJREwgZmlsZS4KKworICAgICAgICBDb3ZlcmVkIGJ5IHVwZGF0ZWQgYmlu
ZGluZyB0ZXN0cy4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxz
LnBsOgorICAgICAgICAodXBkYXRlRGljdGlvbmFyeURlcGVuZGVuY2llcyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXA6IEFkZGVk
LgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0RGVyaXZlZERpY3Rpb25hcnky
LmlkbDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmhlcml0
ZWREaWN0aW9uYXJ5Mi5pZGw6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OmNvbnZlcnREaWN0aW9uYXJ5PFRlc3REZXJpdmVkRGljdGlvbmFyeTI+KToKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnZlcnREaWN0aW9uYXJ5VG9KUyk6CisgICAgICAgIChXZWJDb3JlOjpjb252
ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5Pik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5o
OiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJp
dGVkRGljdGlvbmFyeTIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnREaWN0
aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mj4pOgorICAgICAgICAoV2ViQ29yZTo6Y29u
dmVydERpY3Rpb25hcnlUb0pTKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuaDogQWRkZWQuCisKIDIwMjAtMDgtMjUgIFBoaWxp
cHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJd
W1dlYkF1ZGlvXSBGaWxsIGluIG91dHB1dCB0aW1lc3RhbXBzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IGU4YjM3NWE0YWZk
YWVjYTI4NjIyMTAwNDAxNmUzYmI1MTM1ODg0NzAuLjdiM2ZlY2FiZTc3ZmQyYmRhYWNlMjMxMTVk
OGYyNjM2ZjYyMTNhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvcHJlcHJvY2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvcHJlcHJvY2Vzcy1pZGxzLnBsCkBAIC04Nyw2ICs4Nyw3IEBAIGNsb3NlKCRmaCkgb3IgZGll
OwogbXkgJWludGVyZmFjZU5hbWVUb0lkbEZpbGU7CiBteSAlaWRsRmlsZVRvSW50ZXJmYWNlTmFt
ZTsKIG15ICVzdXBwbGVtZW50YWxEZXBlbmRlbmNpZXM7CitteSAlZGljdGlvbmFyeURlcGVuZGVu
Y2llczsKIG15ICVzdXBwbGVtZW50YWxzOwogbXkgJHdpbmRvd0NvbnN0cnVjdG9yc0NvZGUgPSAi
IjsKIG15ICR3b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0NvZGUgPSAiIjsKQEAgLTEzNSw2
ICsxMzYsOCBAQCBmb3JlYWNoIG15ICRpZGxGaWxlIChzb3J0IGtleXMgJWlkbEZpbGVIYXNoKSB7
CiAKICAgICAkc3VwcGxlbWVudGFsc3skZnVsbFBhdGh9ID0gW107CiAKKyAgICB1cGRhdGVEaWN0
aW9uYXJ5RGVwZW5kZW5jaWVzKCRpZGxGaWxlQ29udGVudHMsICRpZGxGaWxlKTsKKwogICAgICMg
U2tpcCBpZiB0aGUgSURMIGZpbGUgZG9lcyBub3QgY29udGFpbiBhbiBpbnRlcmZhY2UsIGEgY2Fs
bGJhY2sgaW50ZXJmYWNlIG9yIGFuIGV4Y2VwdGlvbi4KICAgICAjIFRoZSBJREwgbWF5IGNvbnRh
aW4gYSBkaWN0aW9uYXJ5LgogICAgIG5leHQgdW5sZXNzIGNvbnRhaW5zSW50ZXJmYWNlT3JFeGNl
cHRpb25Gcm9tSURMKCRpZGxGaWxlQ29udGVudHMpOwpAQCAtMjM4LDcgKzI0MSw3IEBAIGZvcmVh
Y2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFscykgewogV3JpdGVGaWxlSWZD
aGFuZ2VkKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSwgJGRlcGVuZGVuY2llcyk7CiAKIGlm
ICgkc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzKSB7Ci0gICAgbXkgJG1ha2VmaWxlRGVwcyA9ICIi
OworICAgIG15ICRtYWtlZmlsZURlcHMgPSAiIyBTdXBwbGVtZW50YWwgZGVwZW5kZW5jaWVzXG4i
OwogICAgIGZvcmVhY2ggbXkgJGlkbEZpbGUgKHNvcnQga2V5cyAlc3VwcGxlbWVudGFscykgewog
ICAgICAgICBteSAkYmFzZW5hbWUgPSAkaWRsRmlsZVRvSW50ZXJmYWNlTmFtZXskaWRsRmlsZX07
CiAKQEAgLTI1Miw2ICsyNTUsMTEgQEAgaWYgKCRzdXBwbGVtZW50YWxNYWtlZmlsZURlcHMpIHsK
ICAgICAgICAgfQogICAgIH0KIAorICAgICRtYWtlZmlsZURlcHMgLj0gIiMgRGljdGlvbmFyaWVz
IGRlcGVuZGVuY2llc1xuIjsKKyAgICBmb3JlYWNoIG15ICRkZXJpdmVkRGljdGlvbmFyeSAoc29y
dCBrZXlzICVkaWN0aW9uYXJ5RGVwZW5kZW5jaWVzKSB7CisgICAgICAgICRtYWtlZmlsZURlcHMg
Lj0gIkpTJHtkZXJpdmVkRGljdGlvbmFyeX0uY3BwOiAkZGljdGlvbmFyeURlcGVuZGVuY2llc3sk
ZGVyaXZlZERpY3Rpb25hcnl9XG4iOworICAgIH0KKwogICAgIFdyaXRlRmlsZUlmQ2hhbmdlZCgk
c3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzLCAkbWFrZWZpbGVEZXBzKTsKIH0KIApAQCAtNDQ2LDMg
KzQ1NCwxOCBAQCBzdWIgc2hvdWxkRXhwb3NlSW50ZXJmYWNlCiAKICAgICByZXR1cm4gISRleHRl
bmRlZEF0dHJpYnV0ZXMtPnsiTm9JbnRlcmZhY2VPYmplY3QifTsKIH0KKworc3ViIHVwZGF0ZURp
Y3Rpb25hcnlEZXBlbmRlbmNpZXMKK3sKKyAgICBteSAkZmlsZUNvbnRlbnRzID0gc2hpZnQ7Cisg
ICAgbXkgJGlkbEZpbGUgPSBzaGlmdDsKKworICAgIG15ICRkaWN0aW9uYXJ5TmFtZSA9IGZpbGVw
YXJzZShiYXNlbmFtZSgkaWRsRmlsZSksICIuaWRsIik7CisKKyAgICBteSBAYmFzZURpY3Rpb25h
cmllcyA9ICgpOworICAgIHdoaWxlICgkZmlsZUNvbnRlbnRzID1+IC9ccypkaWN0aW9uYXJ5XHMr
KFx3Kylccys6XHMrKFx3KylccyovbWcpIHsKKyAgICAgICAgbmV4dCBpZiAhJGludGVyZmFjZU5h
bWVUb0lkbEZpbGV7JDJ9IHx8IChncmVwIHsgJF8gZXEgJDIgfSBAYmFzZURpY3Rpb25hcmllcyk7
CisgICAgICAgIHB1c2goQGJhc2VEaWN0aW9uYXJpZXMsICQyKTsKKyAgICB9CisgICAgJGRpY3Rp
b25hcnlEZXBlbmRlbmNpZXN7JGRpY3Rpb25hcnlOYW1lfSA9IChqb2luKCIuaWRsICIsIEBiYXNl
RGljdGlvbmFyaWVzKSAuICIuaWRsIikgaWYgQGJhc2VEaWN0aW9uYXJpZXM7Cit9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZl
ZERpY3Rpb25hcnkyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiYTg0ZjAzZGJhNGRm
OTBkZDQzYjcwNDE1NWFhMjI0NThhZjJiZGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmNw
cApAQCAtMCwwICsxLDMxNyBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2Vi
S2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRl
ZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkyLmgiCisKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIKKyNpbmNs
dWRlICJKU0RPTUNvbnZlcnRDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnROdW1i
ZXJzLmgiCisjaW5jbHVkZSAiSlNET01Db252ZXJ0U3RyaW5ncy5oIgorI2luY2x1ZGUgIkpTRE9N
R2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWb2lkQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK3RlbXBsYXRlPD4gVGVzdERlcml2ZWRE
aWN0aW9uYXJ5MiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnkyPihKU0ds
b2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBW
TSYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93
U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZp
bmVkID0gdmFsdWUuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051
bGxPclVuZGVmaW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWlzTnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisgICAgVGVzdERlcml2ZWREaWN0aW9uYXJ5MiByZXN1bHQ7CisgICAgSlNW
YWx1ZSBib29sTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAg
ICBib29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBi
b29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFib29sTWVtYmVyVmFs
dWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuYm9vbE1lbWJlciA9IGNvbnZlcnQ8
SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgYm9vbE1lbWJlclZhbHVlKTsKKyAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1Zh
bHVlIGNhbGxiYWNrTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAg
ICAgICBjYWxsYmFja01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYg
KCFjYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmNh
bGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNr
Pj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBzdHJpbmdN
ZW1iZXJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHN0cmluZ01l
bWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3RyaW5nTWVt
YmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6
ZnJvbVN0cmluZyh2bSwgInN0cmluZ01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXN0cmluZ01lbWJlclZhbHVl
LmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnN0cmluZ01lbWJlciA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdHJpbmdNZW1iZXJWYWx1ZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAg
SlNWYWx1ZSBkZXJpdmVkQm9vbE1lbWJlcjJWYWx1ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmlu
ZWQpCisgICAgICAgIGRlcml2ZWRCb29sTWVtYmVyMlZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgZGVyaXZlZEJvb2xNZW1iZXIyVmFsdWUgPSBvYmplY3QtPmdldCgm
bGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRC
b29sTWVtYmVyMiIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7
IH0pOworICAgIH0KKyAgICBpZiAoIWRlcml2ZWRCb29sTWVtYmVyMlZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgcmVzdWx0LmRlcml2ZWRCb29sTWVtYmVyMiA9IGNvbnZlcnQ8SURMQm9v
bGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZGVyaXZlZEJvb2xNZW1iZXIyVmFsdWUpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK0pTQzo6SlNPYmplY3QqIGNvbnZlcnREaWN0aW9uYXJ5VG9KUyhK
U0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0RPTUdsb2JhbE9iamVj
dCYgZ2xvYmFsT2JqZWN0LCBjb25zdCBUZXN0RGVyaXZlZERpY3Rpb25hcnkyJiBkaWN0aW9uYXJ5
KQoreworICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisK
KyAgICBhdXRvIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3Qub2JqZWN0UHJvdG90eXBlKCkpOworCisgICAgaWYgKCFJRExCb29s
ZWFuOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmJvb2xNZW1iZXIpKSB7CisgICAgICAgIGF1dG8g
Ym9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFuPihJRExCb29sZWFuOjpleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+
cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJib29sTWVtYmVy
IiksIGJvb2xNZW1iZXJWYWx1ZSk7CisgICAgfQorICAgIGlmICghSURMQ2FsbGJhY2tGdW5jdGlv
bjxKU1ZvaWRDYWxsYmFjaz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIp
KSB7CisgICAgICAgIGF1dG8gY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IHRvSlM8SURMQ2FsbGJhY2tG
dW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz4+KGxleGljYWxHbG9iYWxPYmplY3QsIGdsb2JhbE9iamVj
dCwgSURMQ2FsbGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46OmV4dHJhY3RWYWx1ZUZyb21O
dWxsYWJsZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJjYWxsYmFja01lbWJl
ciIpLCBjYWxsYmFja01lbWJlclZhbHVlKTsKKyAgICB9CisgICAgaWYgKCFJRExET01TdHJpbmc6
OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuc3RyaW5nTWVtYmVyKSkgeworICAgICAgICBhdXRvIHN0
cmluZ01lbWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3Qs
IElETERPTVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkuc3RyaW5n
TWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sICJzdHJpbmdNZW1iZXIiKSwgc3RyaW5nTWVtYmVyVmFsdWUpOworICAg
IH0KKyAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkuZGVyaXZlZEJv
b2xNZW1iZXIyKSkgeworICAgICAgICBhdXRvIGRlcml2ZWRCb29sTWVtYmVyMlZhbHVlID0gdG9K
UzxJRExCb29sZWFuPihJRExCb29sZWFuOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlv
bmFyeS5kZXJpdmVkQm9vbE1lbWJlcjIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyMiIpLCBk
ZXJpdmVkQm9vbE1lbWJlcjJWYWx1ZSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3RlbXBsYXRlPD4gVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeSBjb252ZXJ0RGlj
dGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5PihKU0dsb2JhbE9iamVj
dCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBK
U0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvIHRocm93U2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKyAgICBib29sIGlzTnVsbE9yVW5kZWZpbmVkID0gdmFs
dWUuaXNVbmRlZmluZWRPck51bGwoKTsKKyAgICBhdXRvKiBvYmplY3QgPSBpc051bGxPclVuZGVm
aW5lZCA/IG51bGxwdHIgOiB2YWx1ZS5nZXRPYmplY3QoKTsKKyAgICBpZiAoVU5MSUtFTFkoIWlz
TnVsbE9yVW5kZWZpbmVkICYmICFvYmplY3QpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisgICAgVGVzdERlcml2ZWREaWN0aW9uYXJ5Mjo6RGljdGlvbmFyeSByZXN1bHQ7CisgICAg
SlNWYWx1ZSBib29sTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAg
ICAgICBib29sTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAg
ICBib29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFib29sTWVtYmVy
VmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICByZXN1bHQuYm9vbE1lbWJlciA9IGNvbnZl
cnQ8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgYm9vbE1lbWJlclZhbHVlKTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBK
U1ZhbHVlIGNhbGxiYWNrTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQor
ICAgICAgICBjYWxsYmFja01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgY2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAg
aWYgKCFjYWxsYmFja01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0
LmNhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxi
YWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBwYXJ0
aWFsQm9vbGVhbk1lbWJlclZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAg
ICAgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7
CisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNh
bEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFu
TWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7
CisgICAgfQorICAgIGlmICghcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQm9vbGVhbk1lbWJlciA9IGNvbnZlcnQ8SURMQm9v
bGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbEJvb2xlYW5NZW1iZXJWYWx1ZSk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisjaWYg
RU5BQkxFKENvbmRpdGlvbmFsMTUpCisgICAgSlNWYWx1ZSBwYXJ0aWFsQm9vbGVhbk1lbWJlcldp
dGhDb25kaXRpb25hbFZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAg
cGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7
CisgICAgZWxzZSB7CisgICAgICAgIHBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFs
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsIikpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlm
ICghcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZS5pc1VuZGVmaW5lZCgp
KSB7CisgICAgICAgIHJlc3VsdC5wYXJ0aWFsQm9vbGVhbk1lbWJlcldpdGhDb25kaXRpb25hbCA9
IGNvbnZlcnQ8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbEJvb2xlYW5N
ZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisjZW5kaWYKKyAgICBKU1ZhbHVlIHBhcnRpYWxDYWxs
YmFja01lbWJlclZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFy
dGlhbENhbGxiYWNrTWVtYmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAg
ICAgICBwYXJ0aWFsQ2FsbGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlhbENhbGxiYWNrTWVt
YmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7Cisg
ICAgfQorICAgIGlmICghcGFydGlhbENhbGxiYWNrTWVtYmVyVmFsdWUuaXNVbmRlZmluZWQoKSkg
eworICAgICAgICByZXN1bHQucGFydGlhbENhbGxiYWNrTWVtYmVyID0gY29udmVydDxJRExDYWxs
YmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlh
bENhbGxiYWNrTWVtYmVyVmFsdWUsICpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigmbGV4aWNh
bEdsb2JhbE9iamVjdCkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUs
IHsgfSk7CisgICAgfQorICAgIEpTVmFsdWUgcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVl
OworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbFJlcXVpcmVkTG9u
Z01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcGFydGlh
bFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlID0gb2JqZWN0LT5nZXQoJmxleGljYWxHbG9iYWxPYmpl
Y3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVy
IikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAg
fQorICAgIGlmICghcGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXIgPSBjb252ZXJ0PElE
TExvbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1iZXJWYWx1
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9
IGVsc2UgeworICAgICAgICB0aHJvd1JlcXVpcmVkTWVtYmVyVHlwZUVycm9yKGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsICJwYXJ0aWFsUmVxdWlyZWRMb25nTWVtYmVyIiwgIlRlc3RE
ZXJpdmVkRGljdGlvbmFyeSIsICJsb25nIik7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQor
ICAgIEpTVmFsdWUgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlOworICAgIGlmIChpc051bGxPclVu
ZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlID0ganNVbmRlZmluZWQo
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgcGFydGlhbFN0cmluZ01lbWJlclZhbHVlID0gb2JqZWN0
LT5nZXQoJmxleGljYWxHbG9iYWxPYmplY3QsIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsU3RyaW5nTWVtYmVyIikpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbFN0cmluZ01lbWJlclZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnBhcnRpYWxTdHJpbmdNZW1iZXIgPSBjb252
ZXJ0PElETERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgcGFydGlhbFN0cmluZ01lbWJl
clZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOwor
ICAgIH0KKyAgICBKU1ZhbHVlIHBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGlu
Z1ZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbFN0cmlu
Z01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVs
c2UgeworICAgICAgICBwYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmdWYWx1
ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nIikpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlm
ICghcGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUuaXNVbmRlZmlu
ZWQoKSkgeworICAgICAgICByZXN1bHQucGFydGlhbFN0cmluZ01lbWJlcldpdGhFbmFibGVkQnlT
ZXR0aW5nID0gY29udmVydDxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIHBhcnRp
YWxTdHJpbmdNZW1iZXJXaXRoRW5hYmxlZEJ5U2V0dGluZ1ZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIHBhcnRp
YWxVbnNpZ25lZExvbmdNZW1iZXJXaXRoSW1wbGVtZW50ZWRBc1ZhbHVlOworICAgIGlmIChpc051
bGxPclVuZGVmaW5lZCkKKyAgICAgICAgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBs
ZW1lbnRlZEFzVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBwYXJ0
aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVudGVkQXNWYWx1ZSA9IG9iamVjdC0+Z2V0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAicGFydGlh
bFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzIikpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlmICghcGFydGlhbFVu
c2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICByZXN1bHQucGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlciA9IGNvbnZlcnQ8SURMVW5z
aWduZWRMb25nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVy
V2l0aEltcGxlbWVudGVkQXNWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBzdHJpbmdNZW1iZXJWYWx1ZTsKKyAg
ICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHN0cmluZ01lbWJlclZhbHVlID0ganNV
bmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUgPSBvYmpl
Y3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InN0cmluZ01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCB7IH0pOworICAgIH0KKyAgICBpZiAoIXN0cmluZ01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkp
IHsKKyAgICAgICAgcmVzdWx0LnN0cmluZ01lbWJlciA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPihs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBzdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBkZXJpdmVk
Qm9vbE1lbWJlclZhbHVlOworICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKKyAgICAgICAgZGVy
aXZlZEJvb2xNZW1iZXJWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CisgICAgZWxzZSB7CisgICAgICAg
IGRlcml2ZWRCb29sTWVtYmVyVmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVj
dCwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlcml2ZWRCb29sTWVtYmVyIikpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIHsgfSk7CisgICAgfQorICAgIGlm
ICghZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHJlc3Vs
dC5kZXJpdmVkQm9vbE1lbWJlciA9IGNvbnZlcnQ8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9i
amVjdCwgZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlND
OjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxl
eGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIGNvbnN0
IFRlc3REZXJpdmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnkmIGRpY3Rpb25hcnkpCit7CisgICAg
YXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKworICAgIGF1dG8g
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoJmxleGljYWxHbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC5vYmplY3RQcm90b3R5cGUoKSk7CisKKyAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVs
bFZhbHVlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpIHsKKyAgICAgICAgYXV0byBib29sTWVtYmVy
VmFsdWUgPSB0b0pTPElETEJvb2xlYW4+KElETEJvb2xlYW46OmV4dHJhY3RWYWx1ZUZyb21OdWxs
YWJsZShkaWN0aW9uYXJ5LmJvb2xNZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qo
dm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSwgYm9vbE1l
bWJlclZhbHVlKTsKKyAgICB9CisgICAgaWYgKCFJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENh
bGxiYWNrPjo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpIHsKKyAgICAg
ICAgYXV0byBjYWxsYmFja01lbWJlclZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9uPEpT
Vm9pZENhbGxiYWNrPj4obGV4aWNhbEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJRExDYWxs
YmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRp
Y3Rpb25hcnkuY2FsbGJhY2tNZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0s
IEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImNhbGxiYWNrTWVtYmVyIiksIGNhbGxi
YWNrTWVtYmVyVmFsdWUpOworICAgIH0KKyAgICBpZiAoIUlETEJvb2xlYW46OmlzTnVsbFZhbHVl
KGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKSB7CisgICAgICAgIGF1dG8gcGFydGlh
bEJvb2xlYW5NZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4oSURMQm9vbGVhbjo6ZXh0cmFj
dFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXIpKTsKKyAg
ICAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgInBhcnRpYWxCb29sZWFuTWVtYmVyIiksIHBhcnRpYWxCb29sZWFuTWVtYmVyVmFsdWUpOwor
ICAgIH0KKyNpZiBFTkFCTEUoQ29uZGl0aW9uYWwxNSkKKyAgICBpZiAoIUlETEJvb2xlYW46Omlz
TnVsbFZhbHVlKGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwp
KSB7CisgICAgICAgIGF1dG8gcGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWxWYWx1
ZSA9IHRvSlM8SURMQm9vbGVhbj4oSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxl
KGRpY3Rpb25hcnkucGFydGlhbEJvb2xlYW5NZW1iZXJXaXRoQ29uZGl0aW9uYWwpKTsKKyAgICAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InBhcnRpYWxCb29sZWFuTWVtYmVyV2l0aENvbmRpdGlvbmFsIiksIHBhcnRpYWxCb29sZWFuTWVt
YmVyV2l0aENvbmRpdGlvbmFsVmFsdWUpOworICAgIH0KKyNlbmRpZgorICAgIGlmICghSURMQ2Fs
bGJhY2tGdW5jdGlvbjxKU1ZvaWRDYWxsYmFjaz46OmlzTnVsbFZhbHVlKGRpY3Rpb25hcnkucGFy
dGlhbENhbGxiYWNrTWVtYmVyKSkgeworICAgICAgICBhdXRvIHBhcnRpYWxDYWxsYmFja01lbWJl
clZhbHVlID0gdG9KUzxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENh
bGxiYWNrPjo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbENhbGxi
YWNrTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsQ2FsbGJhY2tNZW1iZXIiKSwgcGFydGlhbENhbGxi
YWNrTWVtYmVyVmFsdWUpOworICAgIH0KKyAgICBhdXRvIHBhcnRpYWxSZXF1aXJlZExvbmdNZW1i
ZXJWYWx1ZSA9IHRvSlM8SURMTG9uZz4oZGljdGlvbmFyeS5wYXJ0aWFsUmVxdWlyZWRMb25nTWVt
YmVyKTsKKyAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAicGFydGlhbFJlcXVpcmVkTG9uZ01lbWJlciIpLCBwYXJ0aWFsUmVxdWlyZWRMb25n
TWVtYmVyVmFsdWUpOworICAgIGlmICghSURMRE9NU3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9u
YXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gcGFydGlhbFN0cmluZ01l
bWJlclZhbHVlID0gdG9KUzxJRExET01TdHJpbmc+KGxleGljYWxHbG9iYWxPYmplY3QsIElETERP
TVN0cmluZzo6ZXh0cmFjdFZhbHVlRnJvbU51bGxhYmxlKGRpY3Rpb25hcnkucGFydGlhbFN0cmlu
Z01lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAicGFydGlhbFN0cmluZ01lbWJlciIpLCBwYXJ0aWFsU3RyaW5nTWVt
YmVyVmFsdWUpOworICAgIH0KKyAgICBpZiAoZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCZnbG9iYWxPYmplY3QpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkp
LT5zZXR0aW5ncygpLnRlc3RTZXR0aW5nRW5hYmxlZCgpKSB7CisgICAgICAgIGlmICghSURMRE9N
U3RyaW5nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxTdHJpbmdNZW1iZXJXaXRoRW5h
YmxlZEJ5U2V0dGluZykpIHsKKyAgICAgICAgICAgIGF1dG8gcGFydGlhbFN0cmluZ01lbWJlcldp
dGhFbmFibGVkQnlTZXR0aW5nVmFsdWUgPSB0b0pTPElETERPTVN0cmluZz4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFy
eS5wYXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmcpKTsKKyAgICAgICAgICAg
IHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJw
YXJ0aWFsU3RyaW5nTWVtYmVyV2l0aEVuYWJsZWRCeVNldHRpbmciKSwgcGFydGlhbFN0cmluZ01l
bWJlcldpdGhFbmFibGVkQnlTZXR0aW5nVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIGlm
ICghSURMVW5zaWduZWRMb25nOjppc051bGxWYWx1ZShkaWN0aW9uYXJ5LnBhcnRpYWxVbnNpZ25l
ZExvbmdNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldp
dGhJbXBsZW1lbnRlZEFzVmFsdWUgPSB0b0pTPElETFVuc2lnbmVkTG9uZz4oSURMVW5zaWduZWRM
b25nOjpleHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5wYXJ0aWFsVW5zaWduZWRM
b25nTWVtYmVyKSk7CisgICAgICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCBKU0M6OklkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJwYXJ0aWFsVW5zaWduZWRMb25nTWVtYmVyV2l0aEltcGxlbWVu
dGVkQXMiKSwgcGFydGlhbFVuc2lnbmVkTG9uZ01lbWJlcldpdGhJbXBsZW1lbnRlZEFzVmFsdWUp
OworICAgIH0KKyAgICBpZiAoIUlETERPTVN0cmluZzo6aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5z
dHJpbmdNZW1iZXIpKSB7CisgICAgICAgIGF1dG8gc3RyaW5nTWVtYmVyVmFsdWUgPSB0b0pTPElE
TERPTVN0cmluZz4obGV4aWNhbEdsb2JhbE9iamVjdCwgSURMRE9NU3RyaW5nOjpleHRyYWN0VmFs
dWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5zdHJpbmdNZW1iZXIpKTsKKyAgICAgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInN0cmluZ01l
bWJlciIpLCBzdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgfQorICAgIGlmICghSURMQm9vbGVhbjo6
aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5kZXJpdmVkQm9vbE1lbWJlcikpIHsKKyAgICAgICAgYXV0
byBkZXJpdmVkQm9vbE1lbWJlclZhbHVlID0gdG9KUzxJRExCb29sZWFuPihJRExCb29sZWFuOjpl
eHRyYWN0VmFsdWVGcm9tTnVsbGFibGUoZGljdGlvbmFyeS5kZXJpdmVkQm9vbE1lbWJlcikpOwor
ICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAiZGVyaXZlZEJvb2xNZW1iZXIiKSwgZGVyaXZlZEJvb2xNZW1iZXJWYWx1ZSk7CisgICAg
fQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZXJp
dmVkRGljdGlvbmFyeTIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjk0Mjk2NTJkNzNkNDcz
YTI2M2E0ZjEyYmU1YzY2M2IzZTYzZjZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5oCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBv
cGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkg
Z2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlv
bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkg
V0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg
R05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJKU0RPTUNvbnZlcnREaWN0aW9uYXJ5LmgiCisjaW5jbHVkZSAiVGVzdERlcml2
ZWREaWN0aW9uYXJ5Mi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3RlbXBsYXRlPD4gVGVz
dERlcml2ZWREaWN0aW9uYXJ5MiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0RGVyaXZlZERpY3Rpb25h
cnkyPihKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKKworSlNDOjpKU09iamVj
dCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0RPTUdsb2Jh
bE9iamVjdCYsIGNvbnN0IFRlc3REZXJpdmVkRGljdGlvbmFyeTImKTsKKwordGVtcGxhdGU8PiBU
ZXN0RGVyaXZlZERpY3Rpb25hcnkyOjpEaWN0aW9uYXJ5IGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RE
ZXJpdmVkRGljdGlvbmFyeTI6OkRpY3Rpb25hcnk+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6
OkpTVmFsdWUpOworCitKU0M6OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpK
U0dsb2JhbE9iamVjdCYsIEpTRE9NR2xvYmFsT2JqZWN0JiwgY29uc3QgVGVzdERlcml2ZWREaWN0
aW9uYXJ5Mjo6RGljdGlvbmFyeSYpOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5oZXJp
dGVkRGljdGlvbmFyeTIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTY2Yzg0ZTNk
Nzk0YTBmYTcwZGM2ZGIxNmNhN2FmOWI0NDZhYjRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25h
cnkyLmNwcApAQCAtMCwwICsxLDEwNCBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0
aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuaCIK
KworI2luY2x1ZGUgIkpTRE9NQ29udmVydEJvb2xlYW4uaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZl
cnRDYWxsYmFja3MuaCIKKyNpbmNsdWRlICJKU0RPTUNvbnZlcnRTdHJpbmdzLmgiCisjaW5jbHVk
ZSAiSlNET01HbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZvaWRDYWxsYmFjay5oIgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9PYmplY3RDb25zdHJ1Y3Rvci5oPgorCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK3RlbXBsYXRlPD4gVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyIGNv
bnZlcnREaWN0aW9uYXJ5PFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mj4oSlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCit7CisgICAgVk0mIHZtID0gSlND
OjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgYXV0byB0aHJvd1Njb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgYm9vbCBpc051bGxPclVuZGVmaW5lZCA9IHZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCk7CisgICAgYXV0byogb2JqZWN0ID0gaXNOdWxsT3JVbmRlZmlu
ZWQgPyBudWxscHRyIDogdmFsdWUuZ2V0T2JqZWN0KCk7CisgICAgaWYgKFVOTElLRUxZKCFpc051
bGxPclVuZGVmaW5lZCAmJiAhb2JqZWN0KSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcigmbGV4
aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSk7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
fQorICAgIFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5MiByZXN1bHQ7CisgICAgSlNWYWx1ZSBib29s
TWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBib29sTWVt
YmVyVmFsdWUgPSBqc1VuZGVmaW5lZCgpOworICAgIGVsc2UgeworICAgICAgICBib29sTWVtYmVy
VmFsdWUgPSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyh2bSwgImJvb2xNZW1iZXIiKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFib29sTWVtYmVyVmFsdWUuaXNVbmRl
ZmluZWQoKSkgeworICAgICAgICByZXN1bHQuYm9vbE1lbWJlciA9IGNvbnZlcnQ8SURMQm9vbGVh
bj4obGV4aWNhbEdsb2JhbE9iamVjdCwgYm9vbE1lbWJlclZhbHVlKTsKKyAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBKU1ZhbHVlIGNhbGxi
YWNrTWVtYmVyVmFsdWU7CisgICAgaWYgKGlzTnVsbE9yVW5kZWZpbmVkKQorICAgICAgICBjYWxs
YmFja01lbWJlclZhbHVlID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgY2Fs
bGJhY2tNZW1iZXJWYWx1ZSA9IG9iamVjdC0+Z2V0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgaWYgKCFjYWxsYmFj
a01lbWJlclZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LmNhbGxiYWNrTWVt
YmVyID0gY29udmVydDxJRExDYWxsYmFja0Z1bmN0aW9uPEpTVm9pZENhbGxiYWNrPj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgY2FsbGJhY2tNZW1iZXJWYWx1ZSwgKmpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KCZsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgSlNWYWx1ZSBzdHJpbmdNZW1iZXJWYWx1
ZTsKKyAgICBpZiAoaXNOdWxsT3JVbmRlZmluZWQpCisgICAgICAgIHN0cmluZ01lbWJlclZhbHVl
ID0ganNVbmRlZmluZWQoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3RyaW5nTWVtYmVyVmFsdWUg
PSBvYmplY3QtPmdldCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgSWRlbnRpZmllcjo6ZnJvbVN0cmlu
Zyh2bSwgInN0cmluZ01lbWJlciIpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCB7IH0pOworICAgIH0KKyAgICBpZiAoIXN0cmluZ01lbWJlclZhbHVlLmlzVW5kZWZp
bmVkKCkpIHsKKyAgICAgICAgcmVzdWx0LnN0cmluZ01lbWJlciA9IGNvbnZlcnQ8SURMRE9NU3Ry
aW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBzdHJpbmdNZW1iZXJWYWx1ZSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KKworSlNDOjpKU09iamVjdCogY29udmVydERpY3Rpb25hcnlUb0pTKEpTQzo6SlNH
bG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QsIGNvbnN0IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5MiYgZGljdGlvbmFyeSkKK3sK
KyAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOworCisgICAg
YXV0byByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0Lm9iamVjdFByb3RvdHlwZSgpKTsKKworICAgIGlmICghSURMQm9vbGVhbjo6
aXNOdWxsVmFsdWUoZGljdGlvbmFyeS5ib29sTWVtYmVyKSkgeworICAgICAgICBhdXRvIGJvb2xN
ZW1iZXJWYWx1ZSA9IHRvSlM8SURMQm9vbGVhbj4oSURMQm9vbGVhbjo6ZXh0cmFjdFZhbHVlRnJv
bU51bGxhYmxlKGRpY3Rpb25hcnkuYm9vbE1lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERp
cmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiYm9vbE1lbWJlciIpLCBi
b29sTWVtYmVyVmFsdWUpOworICAgIH0KKyAgICBpZiAoIUlETENhbGxiYWNrRnVuY3Rpb248SlNW
b2lkQ2FsbGJhY2s+Ojppc051bGxWYWx1ZShkaWN0aW9uYXJ5LmNhbGxiYWNrTWVtYmVyKSkgewor
ICAgICAgICBhdXRvIGNhbGxiYWNrTWVtYmVyVmFsdWUgPSB0b0pTPElETENhbGxiYWNrRnVuY3Rp
b248SlNWb2lkQ2FsbGJhY2s+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIElE
TENhbGxiYWNrRnVuY3Rpb248SlNWb2lkQ2FsbGJhY2s+OjpleHRyYWN0VmFsdWVGcm9tTnVsbGFi
bGUoZGljdGlvbmFyeS5jYWxsYmFja01lbWJlcikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVj
dCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiY2FsbGJhY2tNZW1iZXIiKSwg
Y2FsbGJhY2tNZW1iZXJWYWx1ZSk7CisgICAgfQorICAgIGlmICghSURMRE9NU3RyaW5nOjppc051
bGxWYWx1ZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJlcikpIHsKKyAgICAgICAgYXV0byBzdHJpbmdN
ZW1iZXJWYWx1ZSA9IHRvSlM8SURMRE9NU3RyaW5nPihsZXhpY2FsR2xvYmFsT2JqZWN0LCBJRExE
T01TdHJpbmc6OmV4dHJhY3RWYWx1ZUZyb21OdWxsYWJsZShkaWN0aW9uYXJ5LnN0cmluZ01lbWJl
cikpOworICAgICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgSlNDOjpJZGVudGlmaWVyOjpmcm9t
U3RyaW5nKHZtLCAic3RyaW5nTWVtYmVyIiksIHN0cmluZ01lbWJlclZhbHVlKTsKKyAgICB9Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRl
ZERpY3Rpb25hcnkyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kMDRlYTcwMGU1NGU0YWFl
MWEwOGEzZTAzMGY0OTJhNjJmNjQ0ZWM5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmgK
QEAgLTAsMCArMSwzMiBAQAorLyoKKyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0
IG9wZW4gc291cmNlIHByb2plY3QuCisgICAgVGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBi
eSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkpTRE9NQ29udmVydERpY3Rpb25hcnkuaCIKKyNpbmNsdWRlICJUZXN0SW5o
ZXJpdGVkRGljdGlvbmFyeTIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0ZW1wbGF0ZTw+
IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5MiBjb252ZXJ0RGljdGlvbmFyeTxUZXN0SW5oZXJpdGVk
RGljdGlvbmFyeTI+KEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUpOworCitKU0M6
OkpTT2JqZWN0KiBjb252ZXJ0RGljdGlvbmFyeVRvSlMoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpT
RE9NR2xvYmFsT2JqZWN0JiwgY29uc3QgVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyJik7CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9TdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMuZGVwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1N1cHBsZW1lbnRhbERlcGVuZGVuY2llcy5kZXAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMzc5NjFiYTBlZTU4ZjhlYTU2ZGVkN2I0OWM5MDhkY2E4MTJkZDVmZAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9TdXBwbGVt
ZW50YWxEZXBlbmRlbmNpZXMuZGVwCkBAIC0wLDAgKzEsMjQxIEBACisjIFN1cHBsZW1lbnRhbCBk
ZXBlbmRlbmNpZXMKK0pTVGVzdENFUmVhY3Rpb25zLmg6IAorRE9NVGVzdENFUmVhY3Rpb25zLmg6
IAorV2ViRE9NVGVzdENFUmVhY3Rpb25zLmg6IAorSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5oOiAKK0RPTVRlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmg6IAorV2ViRE9NVGVzdENFUmVh
Y3Rpb25zU3RyaW5naWZpZXIuaDogCitKU1Rlc3RDYWxsVHJhY2VyLmg6IAorRE9NVGVzdENhbGxU
cmFjZXIuaDogCitXZWJET01UZXN0Q2FsbFRyYWNlci5oOiAKK0pTVGVzdENhbGxiYWNrRnVuY3Rp
b24uaDogCitET01UZXN0Q2FsbGJhY2tGdW5jdGlvbi5oOiAKK1dlYkRPTVRlc3RDYWxsYmFja0Z1
bmN0aW9uLmg6IAorSlNUZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhyb3cuaDogCitET01UZXN0Q2Fs
bGJhY2tGdW5jdGlvblJldGhyb3cuaDogCitXZWJET01UZXN0Q2FsbGJhY2tGdW5jdGlvblJldGhy
b3cuaDogCitKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uV2l0aFRoaXNPYmplY3QuaDogCitET01UZXN0
Q2FsbGJhY2tGdW5jdGlvbldpdGhUaGlzT2JqZWN0Lmg6IAorV2ViRE9NVGVzdENhbGxiYWNrRnVu
Y3Rpb25XaXRoVGhpc09iamVjdC5oOiAKK0pTVGVzdENhbGxiYWNrRnVuY3Rpb25XaXRoVHlwZWRl
ZnMuaDogCitET01UZXN0Q2FsbGJhY2tGdW5jdGlvbldpdGhUeXBlZGVmcy5oOiAKK1dlYkRPTVRl
c3RDYWxsYmFja0Z1bmN0aW9uV2l0aFR5cGVkZWZzLmg6IAorSlNUZXN0Q2FsbGJhY2tJbnRlcmZh
Y2UuaDogCitET01UZXN0Q2FsbGJhY2tJbnRlcmZhY2UuaDogCitXZWJET01UZXN0Q2FsbGJhY2tJ
bnRlcmZhY2UuaDogCitKU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKK0RP
TVRlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKK1dlYkRPTVRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5oOiAKK0pTVGVzdERPTUpJVC5oOiAKK0RPTVRlc3RET01K
SVQuaDogCitXZWJET01UZXN0RE9NSklULmg6IAorSlNUZXN0RGVyaXZlZERpY3Rpb25hcnkuaDog
CitET01UZXN0RGVyaXZlZERpY3Rpb25hcnkuaDogCitXZWJET01UZXN0RGVyaXZlZERpY3Rpb25h
cnkuaDogCitKU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuaDogCitET01UZXN0RGVyaXZlZERpY3Rp
b25hcnkyLmg6IAorV2ViRE9NVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5oOiAKK0pTVGVzdERvbWFp
blNlY3VyaXR5Lmg6IAorRE9NVGVzdERvbWFpblNlY3VyaXR5Lmg6IAorV2ViRE9NVGVzdERvbWFp
blNlY3VyaXR5Lmg6IAorSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5oOiAKK0RPTVRlc3RFbmFibGVk
QnlTZXR0aW5nLmg6IAorV2ViRE9NVGVzdEVuYWJsZWRCeVNldHRpbmcuaDogCitKU1Rlc3RFbmFi
bGVkRm9yQ29udGV4dC5oOiAKK0RPTVRlc3RFbmFibGVkRm9yQ29udGV4dC5oOiAKK1dlYkRPTVRl
c3RFbmFibGVkRm9yQ29udGV4dC5oOiAKK0pTVGVzdEV2ZW50Q29uc3RydWN0b3IuaDogCitET01U
ZXN0RXZlbnRDb25zdHJ1Y3Rvci5oOiAKK1dlYkRPTVRlc3RFdmVudENvbnN0cnVjdG9yLmg6IAor
SlNUZXN0RXZlbnRUYXJnZXQuaDogCitET01UZXN0RXZlbnRUYXJnZXQuaDogCitXZWJET01UZXN0
RXZlbnRUYXJnZXQuaDogCitKU1Rlc3RFeGNlcHRpb24uaDogCitET01UZXN0RXhjZXB0aW9uLmg6
IAorV2ViRE9NVGVzdEV4Y2VwdGlvbi5oOiAKK0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuaDog
CitET01UZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5oOiAKK1dlYkRPTVRlc3RHZW5lcmF0ZUlzUmVh
Y2hhYmxlLmg6IAorSlNUZXN0R2xvYmFsT2JqZWN0Lmg6IEJpbmRpbmdUZXN0R2xvYmFsQ29uc3Ry
dWN0b3JzLmlkbAorRE9NVGVzdEdsb2JhbE9iamVjdC5oOiBCaW5kaW5nVGVzdEdsb2JhbENvbnN0
cnVjdG9ycy5pZGwKK1dlYkRPTVRlc3RHbG9iYWxPYmplY3QuaDogQmluZGluZ1Rlc3RHbG9iYWxD
b25zdHJ1Y3RvcnMuaWRsCitCaW5kaW5nVGVzdEdsb2JhbENvbnN0cnVjdG9ycy5pZGw6CitKU1Rl
c3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmg6IAorRE9NVGVzdEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuaDogCitXZWJET01UZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOiAKK0pT
VGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5oOiAKK0RPTVRlc3RJbmRleGVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uaDogCitXZWJET01UZXN0SW5kZXhlZFNldHRlclRocm93aW5n
RXhjZXB0aW9uLmg6IAorSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmg6IAorRE9N
VGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5oOiAKK1dlYkRPTVRlc3RJbmRleGVkU2V0
dGVyV2l0aElkZW50aWZpZXIuaDogCitKU1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Lmg6IFRlc3RT
dXBwbGVtZW50YWwuaWRsCitET01UZXN0SW5oZXJpdGVkRGljdGlvbmFyeS5oOiBUZXN0U3VwcGxl
bWVudGFsLmlkbAorV2ViRE9NVGVzdEluaGVyaXRlZERpY3Rpb25hcnkuaDogVGVzdFN1cHBsZW1l
bnRhbC5pZGwKK1Rlc3RTdXBwbGVtZW50YWwuaWRsOgorSlNUZXN0SW5oZXJpdGVkRGljdGlvbmFy
eTIuaDogCitET01UZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIuaDogCitXZWJET01UZXN0SW5oZXJp
dGVkRGljdGlvbmFyeTIuaDogCitKU1Rlc3RJbnRlcmZhY2UuaDogVGVzdEltcGxlbWVudHMuaWRs
IFRlc3RTdXBwbGVtZW50YWwuaWRsCitET01UZXN0SW50ZXJmYWNlLmg6IFRlc3RJbXBsZW1lbnRz
LmlkbCBUZXN0U3VwcGxlbWVudGFsLmlkbAorV2ViRE9NVGVzdEludGVyZmFjZS5oOiBUZXN0SW1w
bGVtZW50cy5pZGwgVGVzdFN1cHBsZW1lbnRhbC5pZGwKK1Rlc3RJbXBsZW1lbnRzLmlkbDoKK1Rl
c3RTdXBwbGVtZW50YWwuaWRsOgorSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuaDog
CitET01UZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuaDogCitXZWJET01UZXN0SW50ZXJm
YWNlTGVhZGluZ1VuZGVyc2NvcmUuaDogCitKU1Rlc3RJdGVyYWJsZS5oOiAKK0RPTVRlc3RJdGVy
YWJsZS5oOiAKK1dlYkRPTVRlc3RJdGVyYWJsZS5oOiAKK0pTVGVzdEpTQnVpbHRpbkNvbnN0cnVj
dG9yLmg6IAorRE9NVGVzdEpTQnVpbHRpbkNvbnN0cnVjdG9yLmg6IAorV2ViRE9NVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmg6IAorSlNUZXN0TWFwTGlrZS5oOiAKK0RPTVRlc3RNYXBMaWtlLmg6
IAorV2ViRE9NVGVzdE1hcExpa2UuaDogCitKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuaDogCitET01UZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmg6
IAorV2ViRE9NVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5oOiAKK0pTVGVz
dE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6IAorRE9NVGVzdE5hbWVk
QW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6IAorV2ViRE9NVGVzdE5hbWVkQW5k
SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6IAorSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuaDogCitET01UZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0
aElkZW50aWZpZXIuaDogCitXZWJET01UZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50
aWZpZXIuaDogCitKU1Rlc3ROYW1lZENvbnN0cnVjdG9yLmg6IAorRE9NVGVzdE5hbWVkQ29uc3Ry
dWN0b3IuaDogCitXZWJET01UZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOiAKK0pTVGVzdE5hbWVkRGVs
ZXRlck5vSWRlbnRpZmllci5oOiAKK0RPTVRlc3ROYW1lZERlbGV0ZXJOb0lkZW50aWZpZXIuaDog
CitXZWJET01UZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmg6IAorSlNUZXN0TmFtZWREZWxl
dGVyVGhyb3dpbmdFeGNlcHRpb24uaDogCitET01UZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNl
cHRpb24uaDogCitXZWJET01UZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uaDogCitK
U1Rlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5oOiAKK0RPTVRlc3ROYW1lZERlbGV0ZXJX
aXRoSWRlbnRpZmllci5oOiAKK1dlYkRPTVRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5o
OiAKK0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmg6IAorRE9NVGVzdE5hbWVk
RGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmg6IAorV2ViRE9NVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyLmg6IAorSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5oOiAKK0RPTVRlc3RO
YW1lZEdldHRlckNhbGxXaXRoLmg6IAorV2ViRE9NVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGguaDog
CitKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oOiAKK0RPTVRlc3ROYW1lZEdldHRlck5v
SWRlbnRpZmllci5oOiAKK1dlYkRPTVRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllci5oOiAKK0pT
VGVzdE5hbWVkR2V0dGVyV2l0aElkZW50aWZpZXIuaDogCitET01UZXN0TmFtZWRHZXR0ZXJXaXRo
SWRlbnRpZmllci5oOiAKK1dlYkRPTVRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmg6IAor
SlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDogCitET01UZXN0TmFtZWRTZXR0ZXJOb0lk
ZW50aWZpZXIuaDogCitXZWJET01UZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuaDogCitKU1Rl
c3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyVGhy
b3dpbmdFeGNlcHRpb24uaDogCitXZWJET01UZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5oOiAKK0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuaDogCitET01UZXN0TmFtZWRT
ZXR0ZXJXaXRoSWRlbnRpZmllci5oOiAKK1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhJZGVudGlm
aWVyLmg6IAorSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5oOiAKK0RPTVRlc3RO
YW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyLmg6IAorV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0
aEluZGV4ZWRHZXR0ZXIuaDogCitKU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5k
U2V0dGVyLmg6IAorRE9NVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIu
aDogCitXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlci5oOiAK
K0pTVGVzdE5hbWVkU2V0dGVyV2l0aE92ZXJyaWRlQnVpbHRpbnMuaDogCitET01UZXN0TmFtZWRT
ZXR0ZXJXaXRoT3ZlcnJpZGVCdWlsdGlucy5oOiAKK1dlYkRPTVRlc3ROYW1lZFNldHRlcldpdGhP
dmVycmlkZUJ1aWx0aW5zLmg6IAorSlNUZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3Bl
cnRpZXMuaDogCitET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDog
CitXZWJET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXMuaDogCitKU1Rl
c3ROYW1lZFNldHRlcldpdGhVbmZvcmdhYmxlUHJvcGVydGllc0FuZE92ZXJyaWRlQnVpbHRpbnMu
aDogCitET01UZXN0TmFtZWRTZXR0ZXJXaXRoVW5mb3JnYWJsZVByb3BlcnRpZXNBbmRPdmVycmlk
ZUJ1aWx0aW5zLmg6IAorV2ViRE9NVGVzdE5hbWVkU2V0dGVyV2l0aFVuZm9yZ2FibGVQcm9wZXJ0
aWVzQW5kT3ZlcnJpZGVCdWlsdGlucy5oOiAKK0pTVGVzdE5vZGUuaDogCitET01UZXN0Tm9kZS5o
OiAKK1dlYkRPTVRlc3ROb2RlLmg6IAorSlNUZXN0T2JqLmg6IAorRE9NVGVzdE9iai5oOiAKK1dl
YkRPTVRlc3RPYmouaDogCitKU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0T3BlcmF0
aW9uQmFzZS5pZGwKK0RPTVRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0T3BlcmF0aW9u
QmFzZS5pZGwKK1dlYkRPTVRlc3RPcGVyYXRpb25Db25kaXRpb25hbC5oOiBUZXN0T3BlcmF0aW9u
QmFzZS5pZGwKK1Rlc3RPcGVyYXRpb25CYXNlLmlkbDoKK0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMuaDogCitET01UZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOiAKK1dlYkRPTVRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmg6IAorSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1dp
dGhTZXF1ZW5jZS5oOiAKK0RPTVRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNl
Lmg6IAorV2ViRE9NVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UuaDogCitK
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmg6IAorRE9NVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDogCitX
ZWJET01UZXN0T3ZlcnJpZGVCdWlsdGlucy5oOiAKK0pTVGVzdFBsdWdpbkludGVyZmFjZS5oOiAK
K0RPTVRlc3RQbHVnaW5JbnRlcmZhY2UuaDogCitXZWJET01UZXN0UGx1Z2luSW50ZXJmYWNlLmg6
IAorSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Lmg6IAorRE9NVGVzdFByb21pc2VSZWplY3Rp
b25FdmVudC5oOiAKK1dlYkRPTVRlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnQuaDogCitKU1Rlc3RS
ZWFkT25seU1hcExpa2UuaDogCitET01UZXN0UmVhZE9ubHlNYXBMaWtlLmg6IAorV2ViRE9NVGVz
dFJlYWRPbmx5TWFwTGlrZS5oOiAKK0pTVGVzdFJlYWRPbmx5U2V0TGlrZS5oOiAKK0RPTVRlc3RS
ZWFkT25seVNldExpa2UuaDogCitXZWJET01UZXN0UmVhZE9ubHlTZXRMaWtlLmg6IAorSlNUZXN0
UmVwb3J0RXh0cmFNZW1vcnlDb3N0Lmg6IAorRE9NVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdC5o
OiAKK1dlYkRPTVRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QuaDogCitKU1Rlc3RTZXJpYWxpemF0
aW9uLmg6IAorRE9NVGVzdFNlcmlhbGl6YXRpb24uaDogCitXZWJET01UZXN0U2VyaWFsaXphdGlv
bi5oOiAKK0pTVGVzdFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmg6IAorRE9NVGVz
dFNlcmlhbGl6YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmg6IAorV2ViRE9NVGVzdFNlcmlhbGl6
YXRpb25JbmRpcmVjdEluaGVyaXRhbmNlLmg6IAorSlNUZXN0U2VyaWFsaXphdGlvbkluaGVyaXQu
aDogCitET01UZXN0U2VyaWFsaXphdGlvbkluaGVyaXQuaDogCitXZWJET01UZXN0U2VyaWFsaXph
dGlvbkluaGVyaXQuaDogCitKU1Rlc3RTZXJpYWxpemF0aW9uSW5oZXJpdEZpbmFsLmg6IAorRE9N
VGVzdFNlcmlhbGl6YXRpb25Jbmhlcml0RmluYWwuaDogCitXZWJET01UZXN0U2VyaWFsaXphdGlv
bkluaGVyaXRGaW5hbC5oOiAKK0pTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5o
OiAKK0RPTVRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDogCitXZWJET01UZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6IAorSlNUZXN0U2V0TGlrZS5oOiAKK0RP
TVRlc3RTZXRMaWtlLmg6IAorV2ViRE9NVGVzdFNldExpa2UuaDogCitKU1Rlc3RTdGFuZGFsb25l
RGljdGlvbmFyeS5oOiBUZXN0U3VwcGxlbWVudGFsLmlkbAorRE9NVGVzdFN0YW5kYWxvbmVEaWN0
aW9uYXJ5Lmg6IFRlc3RTdXBwbGVtZW50YWwuaWRsCitXZWJET01UZXN0U3RhbmRhbG9uZURpY3Rp
b25hcnkuaDogVGVzdFN1cHBsZW1lbnRhbC5pZGwKK1Rlc3RTdXBwbGVtZW50YWwuaWRsOgorSlNU
ZXN0U3RhbmRhbG9uZUVudW1lcmF0aW9uLmg6IAorRE9NVGVzdFN0YW5kYWxvbmVFbnVtZXJhdGlv
bi5oOiAKK1dlYkRPTVRlc3RTdGFuZGFsb25lRW51bWVyYXRpb24uaDogCitKU1Rlc3RTdHJpbmdp
Zmllci5oOiAKK0RPTVRlc3RTdHJpbmdpZmllci5oOiAKK1dlYkRPTVRlc3RTdHJpbmdpZmllci5o
OiAKK0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmg6IAorRE9NVGVzdFN0cmlu
Z2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmg6IAorV2ViRE9NVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uLmg6IAorSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5oOiAKK0RP
TVRlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmg6IAorV2ViRE9NVGVzdFN0cmluZ2lmaWVy
TmFtZWRPcGVyYXRpb24uaDogCitKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVk
QXMuaDogCitET01UZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1lbnRlZEFzLmg6IAorV2Vi
RE9NVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5oOiAKK0pTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZy5oOiAKK0RPTVRlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmcuaDogCitXZWJET01UZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1l
ZFRvU3RyaW5nLmg6IAorSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5oOiAKK0RP
TVRlc3RTdHJpbmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmg6IAorV2ViRE9NVGVzdFN0cmluZ2lm
aWVyUmVhZE9ubHlBdHRyaWJ1dGUuaDogCitKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJp
YnV0ZS5oOiAKK0RPTVRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oOiAKK1dlYkRP
TVRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5oOiAKK0pTVGVzdFR5cGVkZWZzLmg6
IAorRE9NVGVzdFR5cGVkZWZzLmg6IAorV2ViRE9NVGVzdFR5cGVkZWZzLmg6IAorSlNUZXN0Vm9p
ZENhbGxiYWNrRnVuY3Rpb24uaDogCitET01UZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uaDogCitX
ZWJET01UZXN0Vm9pZENhbGxiYWNrRnVuY3Rpb24uaDogCisjIERpY3Rpb25hcmllcyBkZXBlbmRl
bmNpZXMKK0pTVGVzdERlcml2ZWREaWN0aW9uYXJ5LmNwcDogVGVzdEluaGVyaXRlZERpY3Rpb25h
cnkuaWRsCitKU1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuY3BwOiBUZXN0SW5oZXJpdGVkRGljdGlv
bmFyeS5pZGwgVGVzdEluaGVyaXRlZERpY3Rpb25hcnkyLmlkbApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZXJpdmVkRGljdGlvbmFyeTIuaWRs
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3REZXJpdmVkRGljdGlv
bmFyeTIuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1ODhmYjg3NTdiYWUxYzQ1MzNhNzc3ODg3MjVlNDNiODM4
MTg2NDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVGVzdERlcml2ZWREaWN0aW9uYXJ5Mi5pZGwKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK1sKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdAorXSBkaWN0aW9uYXJ5IFRlc3REZXJp
dmVkRGljdGlvbmFyeSA6IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5IHsKKyAgICBib29sZWFuIGRl
cml2ZWRCb29sTWVtYmVyOworfTsKKworWworICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0CitdIGRp
Y3Rpb25hcnkgVGVzdERlcml2ZWREaWN0aW9uYXJ5MiA6IFRlc3RJbmhlcml0ZWREaWN0aW9uYXJ5
MiB7CisgICAgYm9vbGVhbiBkZXJpdmVkQm9vbE1lbWJlcjI7Cit9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5
Mi5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEluaGVyaXRl
ZERpY3Rpb25hcnkyLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjI3Yjc2OGUyMTkwZDhhN2VlNGY4OWJiYjdk
NmVmNDQwNDZkNmEyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RJbmhlcml0ZWREaWN0aW9uYXJ5Mi5pZGwKQEAgLTAsMCArMSwzMyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1sKKyAgICBKU0dlbmVyYXRlVG9KU09iamVjdAorXQorZGljdGlvbmFy
eSBUZXN0SW5oZXJpdGVkRGljdGlvbmFyeTIgeworICAgIGJvb2xlYW4gYm9vbE1lbWJlcjsKKyAg
ICBET01TdHJpbmcgc3RyaW5nTWVtYmVyOworICAgIFZvaWRDYWxsYmFjayBjYWxsYmFja01lbWJl
cjsKK307CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMWUzNDU1YjhjYjUxYWI5MGVkY2NjMjhmYzU5YzEwNWE1NDhlYzdkOC4uMGYzZjA2MDU0MDhi
ZGUzMjA2ZmIzMjEyOTEyNWI3ZTQzNzdhN2VjOCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA4LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBHZW5lcmF0ZWQgYmluZGlu
Z3MgZm9yIGRlcml2ZWQgZGljdGlvbmFyaWVzIGFyZSBub3QgcmVnZW5lcmF0ZWQgd2hlbiB0aGUg
YmFzZSBkaWN0aW9uYXJ5IGNoYW5nZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MTcxNAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgorCisgICAgICAgIEFkZCByZWdyZXNzaW9uIHRlc3RpbmcgY292ZXJhZ2UgZm9yIHRoZSBnZW5l
cmF0aW9uIG9mIHRoZSBtYWtlZmlsZSBkZXBlbmRlbmN5IGZpbGUuCisKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2JpbmRpbmdzL21haW4ucHk6CisgICAgICAgIChCaW5kaW5nc1Rlc3RzLmdl
bmVyYXRlX3N1cHBsZW1lbnRhbF9kZXBlbmRlbmN5KToKKyAgICAgICAgKEJpbmRpbmdzVGVzdHMu
ZGV0ZWN0X2NoYW5nZXMpOgorICAgICAgICAoQmluZGluZ3NUZXN0cyk6CisgICAgICAgIChCaW5k
aW5nc1Rlc3RzLmRldGVjdF9maWxlX2NoYW5nZXMpOgorICAgICAgICAoQmluZGluZ3NUZXN0cy5t
YWluKToKKwogMjAyMC0wOC0yNCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCBUTFNWZXJzaW9uLkRlZmF1bHRCZWhhdmlvciBvbiBNb2ph
dmUKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvYmluZGluZ3MvbWFpbi5weQppbmRleCBlYjVhMjg3NjZk
Y2EwMmE1MTRiNDcxOGIyODE1ZGVhNTI3OTJmMTAyLi5hMDc4YjhjOTYxYWVjODE3NjAyM2EwZTIw
MWVhN2ZkMzZmYmRhYjBlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2JpbmRp
bmdzL21haW4ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9iaW5kaW5ncy9tYWluLnB5
CkBAIC03Miw3ICs3Miw3IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAgICAgICAgICBleGl0
X2NvZGUgPSBlLmV4aXRfY29kZQogICAgICAgICByZXR1cm4gZXhpdF9jb2RlCiAKLSAgICBkZWYg
Z2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koc2VsZiwgaW5wdXRfZGlyZWN0b3J5LCBz
dXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUsIHdv
cmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBkZWRpY2F0ZWR3b3JrZXJnbG9iYWxz
Y29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVj
dG9yc19maWxlLCB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIHBhaW50d29y
a2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCB0ZXN0Z2xvYmFsc2NvcGVfY29uc3Ry
dWN0b3JzX2ZpbGUpOgorICAgIGRlZiBnZW5lcmF0ZV9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeShz
ZWxmLCBpbnB1dF9kaXJlY3RvcnksIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5X2ZpbGUsIHN1cHBs
ZW1lbnRhbF9tYWtlZmlsZV9kZXBlbmRlbmN5X2ZpbGUsIHdpbmRvd19jb25zdHJ1Y3RvcnNfZmls
ZSwgd29ya2VyZ2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIGRlZGljYXRlZHdvcmtlcmds
b2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBzZXJ2aWNld29ya2VyZ2xvYmFsc2NvcGVfY29u
c3RydWN0b3JzX2ZpbGUsIHdvcmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgcGFp
bnR3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIHRlc3RnbG9iYWxzY29wZV9j
b25zdHJ1Y3RvcnNfZmlsZSk6CiAgICAgICAgIGlkbF9maWxlc19saXN0ID0gdGVtcGZpbGUubWtz
dGVtcCgpCiAgICAgICAgIGZvciBpbnB1dF9maWxlIGluIG9zLmxpc3RkaXIoaW5wdXRfZGlyZWN0
b3J5KToKICAgICAgICAgICAgIChuYW1lLCBleHRlbnNpb24pID0gb3MucGF0aC5zcGxpdGV4dChp
bnB1dF9maWxlKQpAQCAtODgsNiArODgsNyBAQCBjbGFzcyBCaW5kaW5nc1Rlc3RzOgogICAgICAg
ICAgICAgICAgJy0tdGVzdEdsb2JhbENvbnRleHROYW1lJywgJ1Rlc3RHbG9iYWxPYmplY3QnLAog
ICAgICAgICAgICAgICAgJy0tZGVmaW5lcycsICcnLAogICAgICAgICAgICAgICAgJy0tc3VwcGxl
bWVudGFsRGVwZW5kZW5jeUZpbGUnLCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLAorICAg
ICAgICAgICAgICAgJy0tc3VwcGxlbWVudGFsTWFrZWZpbGVEZXBzJywgc3VwcGxlbWVudGFsX21h
a2VmaWxlX2RlcGVuZGVuY3lfZmlsZSwKICAgICAgICAgICAgICAgICctLXdpbmRvd0NvbnN0cnVj
dG9yc0ZpbGUnLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUsCiAgICAgICAgICAgICAgICAnLS13
b3JrZXJHbG9iYWxTY29wZUNvbnN0cnVjdG9yc0ZpbGUnLCB3b3JrZXJnbG9iYWxzY29wZV9jb25z
dHJ1Y3RvcnNfZmlsZSwKICAgICAgICAgICAgICAgICctLWRlZGljYXRlZFdvcmtlckdsb2JhbFNj
b3BlQ29uc3RydWN0b3JzRmlsZScsIGRlZGljYXRlZHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVj
dG9yc19maWxlLApAQCAtMTA5LDI5ICsxMTAsMzUgQEAgY2xhc3MgQmluZGluZ3NUZXN0czoKIAog
ICAgIGRlZiBkZXRlY3RfY2hhbmdlcyhzZWxmLCBnZW5lcmF0b3IsIHdvcmtfZGlyZWN0b3J5LCBy
ZWZlcmVuY2VfZGlyZWN0b3J5KToKICAgICAgICAgY2hhbmdlc19mb3VuZCA9IEZhbHNlCi0gICAg
ICAgIGZvciBvdXRwdXRfZmlsZSBpbiBvcy5saXN0ZGlyKHdvcmtfZGlyZWN0b3J5KToKLSAgICAg
ICAgICAgIGNtZCA9IFsnZGlmZicsCi0gICAgICAgICAgICAgICAgICAgJy11JywKLSAgICAgICAg
ICAgICAgICAgICAnLU4nLAotICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihyZWZlcmVu
Y2VfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSksCi0gICAgICAgICAgICAgICAgICAgb3MucGF0aC5q
b2luKHdvcmtfZGlyZWN0b3J5LCBvdXRwdXRfZmlsZSldCi0KLSAgICAgICAgICAgIGV4aXRfY29k
ZSA9IDAKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLmV4
ZWN1dGl2ZS5ydW5fY29tbWFuZChjbWQpCi0gICAgICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3Ig
YXMgZToKLSAgICAgICAgICAgICAgICBvdXRwdXQgPSBlLm91dHB1dAotICAgICAgICAgICAgICAg
IGV4aXRfY29kZSA9IGUuZXhpdF9jb2RlCi0KLSAgICAgICAgICAgIGlmIGV4aXRfY29kZSBvciBv
dXRwdXQ6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ0ZBSUw6ICglcykgJXMnICUgKGdlbmVyYXRv
ciwgb3V0cHV0X2ZpbGUpKQotICAgICAgICAgICAgICAgIHByaW50KG91dHB1dCkKKyAgICAgICAg
Zm9yIGZpbGVuYW1lIGluIG9zLmxpc3RkaXIod29ya19kaXJlY3RvcnkpOgorICAgICAgICAgICAg
aWYgc2VsZi5kZXRlY3RfZmlsZV9jaGFuZ2VzKGdlbmVyYXRvciwgd29ya19kaXJlY3RvcnksIHJl
ZmVyZW5jZV9kaXJlY3RvcnksIGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICBjaGFuZ2VzX2Zv
dW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgIGlmIHNlbGYuanNvbl9maWxlX25hbWU6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuZmFpbHVyZXMuYXBwZW5kKCIoJXMpICVzIiAlIChnZW5lcmF0
b3IsIG91dHB1dF9maWxlKSkKLSAgICAgICAgICAgIGVsaWYgc2VsZi52ZXJib3NlOgotICAgICAg
ICAgICAgICAgIHByaW50KCdQQVNTOiAoJXMpICVzJyAlIChnZW5lcmF0b3IsIG91dHB1dF9maWxl
KSkKLSAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICByZXR1cm4gY2hhbmdl
c19mb3VuZAorCisgICAgZGVmIGRldGVjdF9maWxlX2NoYW5nZXMoc2VsZiwgZ2VuZXJhdG9yLCB3
b3JrX2RpcmVjdG9yeSwgcmVmZXJlbmNlX2RpcmVjdG9yeSwgZmlsZW5hbWUpOgorICAgICAgICBj
aGFuZ2VzX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgY21kID0gWydkaWZmJywKKyAgICAgICAgICAg
ICAgICctdScsCisgICAgICAgICAgICAgICAnLU4nLAorICAgICAgICAgICAgICAgb3MucGF0aC5q
b2luKHJlZmVyZW5jZV9kaXJlY3RvcnksIGZpbGVuYW1lKSwKKyAgICAgICAgICAgICAgIG9zLnBh
dGguam9pbih3b3JrX2RpcmVjdG9yeSwgZmlsZW5hbWUpXQorCisgICAgICAgIGV4aXRfY29kZSA9
IDAKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0ID0gc2VsZi5leGVjdXRpdmUucnVu
X2NvbW1hbmQoY21kKQorICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IgYXMgZToKKyAgICAgICAg
ICAgIG91dHB1dCA9IGUub3V0cHV0CisgICAgICAgICAgICBleGl0X2NvZGUgPSBlLmV4aXRfY29k
ZQorCisgICAgICAgIGlmIGV4aXRfY29kZSBvciBvdXRwdXQ6CisgICAgICAgICAgICBwcmludCgn
RkFJTDogKCVzKSAlcycgJSAoZ2VuZXJhdG9yLCBmaWxlbmFtZSkpCisgICAgICAgICAgICBwcmlu
dChvdXRwdXQpCisgICAgICAgICAgICBjaGFuZ2VzX2ZvdW5kID0gVHJ1ZQorICAgICAgICAgICAg
aWYgc2VsZi5qc29uX2ZpbGVfbmFtZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWx1cmVzLmFw
cGVuZCgiKCVzKSAlcyIgJSAoZ2VuZXJhdG9yLCBmaWxlbmFtZSkpCisgICAgICAgIGVsaWYgc2Vs
Zi52ZXJib3NlOgorICAgICAgICAgICAgcHJpbnQoJ1BBU1M6ICglcykgJXMnICUgKGdlbmVyYXRv
ciwgZmlsZW5hbWUpKQorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgcmV0dXJu
IGNoYW5nZXNfZm91bmQKIAogICAgIGRlZiB0ZXN0X21hdGNoZXNfcGF0dGVybnMoc2VsZiwgdGVz
dCk6CkBAIC0xODIsOSArMTg5LDEzIEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAKICAgICAgICAg
YWxsX3Rlc3RzX3Bhc3NlZCA9IFRydWUKIAorICAgICAgICBzdXBwbGVtZW50YWxfZGVwZW5kZW5j
eV9maWxlbmFtZSA9ICdTdXBwbGVtZW50YWxEZXBlbmRlbmNpZXMudHh0JworICAgICAgICBzdXBw
bGVtZW50YWxfbWFrZWZpbGVfZGVwZW5kZW5jeV9maWxlbmFtZSA9ICdTdXBwbGVtZW50YWxEZXBl
bmRlbmNpZXMuZGVwJworCiAgICAgICAgIHdvcmtfZGlyZWN0b3J5ID0gdGVtcGZpbGUubWtkdGVt
cCgpCiAgICAgICAgIGlucHV0X2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbignV2ViQ29yZScsICdi
aW5kaW5ncycsICdzY3JpcHRzJywgJ3Rlc3QnKQotICAgICAgICBzdXBwbGVtZW50YWxfZGVwZW5k
ZW5jeV9maWxlID0gb3MucGF0aC5qb2luKHdvcmtfZGlyZWN0b3J5LCAnc3VwcGxlbWVudGFsX2Rl
cGVuZGVuY3kudG1wJykKKyAgICAgICAgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZSA9IG9z
LnBhdGguam9pbih3b3JrX2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3lfZmlsZW5h
bWUpCisgICAgICAgIHN1cHBsZW1lbnRhbF9tYWtlZmlsZV9kZXBlbmRlbmN5X2ZpbGUgPSBvcy5w
YXRoLmpvaW4od29ya19kaXJlY3RvcnkgaWYgbm90IHNlbGYucmVzZXRfcmVzdWx0cyBlbHNlIGlu
cHV0X2RpcmVjdG9yeSwgc3VwcGxlbWVudGFsX21ha2VmaWxlX2RlcGVuZGVuY3lfZmlsZW5hbWUp
CiAgICAgICAgIHdpbmRvd19jb25zdHJ1Y3RvcnNfZmlsZSA9IG9zLnBhdGguam9pbih3b3JrX2Rp
cmVjdG9yeSwgJ0RPTVdpbmRvd0NvbnN0cnVjdG9ycy5pZGwnKQogICAgICAgICB3b3JrZXJnbG9i
YWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IG9zLnBhdGguam9pbih3b3JrX2RpcmVjdG9yeSwg
J1dvcmtlckdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCcpCiAgICAgICAgIGRlZGljYXRlZHdv
cmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlID0gb3MucGF0aC5qb2luKHdvcmtfZGly
ZWN0b3J5LCAnRGVkaWNhdGVkV29ya2VyR2xvYmFsU2NvcGVDb25zdHJ1Y3RvcnMuaWRsJykKQEAg
LTE5MiwxMSArMjAzLDE2IEBAIGNsYXNzIEJpbmRpbmdzVGVzdHM6CiAgICAgICAgIHdvcmtsZXRn
bG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IG9zLnBhdGguam9pbih3b3JrX2RpcmVjdG9y
eSwgJ1dvcmtsZXRHbG9iYWxTY29wZUNvbnN0cnVjdG9ycy5pZGwnKQogICAgICAgICBwYWludHdv
cmtsZXRnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IG9zLnBhdGguam9pbih3b3JrX2Rp
cmVjdG9yeSwgJ1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ29uc3RydWN0b3JzLmlkbCcpCiAgICAg
ICAgIHRlc3RnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSA9IG9zLnBhdGguam9pbih3b3Jr
X2RpcmVjdG9yeSwgJ0JpbmRpbmdUZXN0R2xvYmFsQ29uc3RydWN0b3JzLmlkbCcpCi0gICAgICAg
IGlmIHNlbGYuZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3koaW5wdXRfZGlyZWN0b3J5
LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxlLCB3aW5kb3dfY29uc3RydWN0b3JzX2ZpbGUs
IHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBkZWRpY2F0ZWR3b3JrZXJnbG9i
YWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgc2VydmljZXdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0
cnVjdG9yc19maWxlLCB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2ZpbGUsIHBhaW50
d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCB0ZXN0Z2xvYmFsc2NvcGVfY29u
c3RydWN0b3JzX2ZpbGUpOgorCisgICAgICAgIGlmIHNlbGYuZ2VuZXJhdGVfc3VwcGxlbWVudGFs
X2RlcGVuZGVuY3koaW5wdXRfZGlyZWN0b3J5LCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeV9maWxl
LCBzdXBwbGVtZW50YWxfbWFrZWZpbGVfZGVwZW5kZW5jeV9maWxlLCB3aW5kb3dfY29uc3RydWN0
b3JzX2ZpbGUsIHdvcmtlcmdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCBkZWRpY2F0ZWR3
b3JrZXJnbG9iYWxzY29wZV9jb25zdHJ1Y3RvcnNfZmlsZSwgc2VydmljZXdvcmtlcmdsb2JhbHNj
b3BlX2NvbnN0cnVjdG9yc19maWxlLCB3b3JrbGV0Z2xvYmFsc2NvcGVfY29uc3RydWN0b3JzX2Zp
bGUsIHBhaW50d29ya2xldGdsb2JhbHNjb3BlX2NvbnN0cnVjdG9yc19maWxlLCB0ZXN0Z2xvYmFs
c2NvcGVfY29uc3RydWN0b3JzX2ZpbGUpOgogICAgICAgICAgICAgcHJpbnQoJ0ZhaWxlZCB0byBn
ZW5lcmF0ZSBhIHN1cHBsZW1lbnRhbCBkZXBlbmRlbmN5IGZpbGUuJykKICAgICAgICAgICAgIHNo
dXRpbC5ybXRyZWUod29ya19kaXJlY3RvcnkpCiAgICAgICAgICAgICByZXR1cm4gLTEKIAorICAg
ICAgICBpZiBub3Qgc2VsZi5yZXNldF9yZXN1bHRzOgorICAgICAgICAgICAgaWYgc2VsZi5kZXRl
Y3RfZmlsZV9jaGFuZ2VzKCdkZXBlbmRlbmNpZXMnLCB3b3JrX2RpcmVjdG9yeSwgaW5wdXRfZGly
ZWN0b3J5LCBzdXBwbGVtZW50YWxfbWFrZWZpbGVfZGVwZW5kZW5jeV9maWxlbmFtZSk6CisgICAg
ICAgICAgICAgICAgYWxsX3Rlc3RzX3Bhc3NlZCA9IEZhbHNlCisKICAgICAgICAgZm9yIGdlbmVy
YXRvciBpbiBzZWxmLmdlbmVyYXRvcnM6CiAgICAgICAgICAgICBpbnB1dF9kaXJlY3RvcnkgPSBv
cy5wYXRoLmpvaW4oJ1dlYkNvcmUnLCAnYmluZGluZ3MnLCAnc2NyaXB0cycsICd0ZXN0JykKICAg
ICAgICAgICAgIHJlZmVyZW5jZV9kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4oJ1dlYkNvcmUnLCAn
YmluZGluZ3MnLCAnc2NyaXB0cycsICd0ZXN0JywgZ2VuZXJhdG9yKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>