<?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>179696</bug_id>
          
          <creation_ts>2017-11-14 15:03:45 -0800</creation_ts>
          <short_desc>[Cocoa] Clean up names of conversion methods after renaming InspectorValue to JSON::Value</short_desc>
          <delta_ts>2017-11-28 15:35:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>buildbot</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1371591</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-14 15:03:45 -0800</bug_when>
    <thetext>&quot;This space is intentionally left blank.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371614</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-14 15:53:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/35544951&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371659</commentid>
    <comment_count>2</comment_count>
      <attachid>326945</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-14 16:46:27 -0800</bug_when>
    <thetext>Created attachment 326945
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1371663</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-11-14 16:49:50 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375557</commentid>
    <comment_count>4</comment_count>
      <attachid>327797</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-28 15:05:39 -0800</bug_when>
    <thetext>Created attachment 327797
Rebased Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375563</commentid>
    <comment_count>5</comment_count>
      <attachid>327797</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2017-11-28 15:14:31 -0800</bug_when>
    <thetext>Comment on attachment 327797
Rebased Patch

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

Looks fine other than one comment.

&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:115
&gt; -        lines.append(&apos;- (instancetype)initWithJSONObject:(RWIProtocolJSONObject *)jsonObject&apos;)
&gt; +        lines.append(&apos;- (instancetype)initWithProtocolObject:(RWIProtocolJSONObject *)object&apos;)
&gt;          lines.append(&apos;{&apos;)
&gt; -        lines.append(&apos;    if (!(self = [super initWithInspectorObject:[jsonObject toInspectorObject].get()]))&apos;)
&gt; +        lines.append(&apos;    if (!(self = [super initWithJSONObject:[object toJSONObject].get()]))&apos;)

This seems odd. Why change [self initWithJSONObject:] to initWithProtocolObject: when super is changing to initWithJSONObject:?

Maybe this method should be initWithProtocolJSONObject:?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375564</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-28 15:19:41 -0800</bug_when>
    <thetext>(In reply to Timothy Hatcher from comment #5)
&gt; Comment on attachment 327797 [details]
&gt; Rebased Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=327797&amp;action=review
&gt; 
&gt; Looks fine other than one comment.
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:115
&gt; &gt; -        lines.append(&apos;- (instancetype)initWithJSONObject:(RWIProtocolJSONObject *)jsonObject&apos;)
&gt; &gt; +        lines.append(&apos;- (instancetype)initWithProtocolObject:(RWIProtocolJSONObject *)object&apos;)
&gt; &gt;          lines.append(&apos;{&apos;)
&gt; &gt; -        lines.append(&apos;    if (!(self = [super initWithInspectorObject:[jsonObject toInspectorObject].get()]))&apos;)
&gt; &gt; +        lines.append(&apos;    if (!(self = [super initWithJSONObject:[object toJSONObject].get()]))&apos;)
&gt; 
&gt; This seems odd. Why change [self initWithJSONObject:] to
&gt; initWithProtocolObject: when super is changing to initWithJSONObject:?
&gt; 
&gt; Maybe this method should be initWithProtocolJSONObject:?

I thought it was more sensible to let super be able to use initWithJSONObject rather than keep it in the subclass. Among the two names, I chose the shorter one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1375573</commentid>
    <comment_count>7</comment_count>
      <attachid>327797</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2017-11-28 15:35:35 -0800</bug_when>
    <thetext>Comment on attachment 327797
Rebased Patch

&lt;https://trac.webkit.org/r225243&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>326945</attachid>
            <date>2017-11-14 16:46:27 -0800</date>
            <delta_ts>2017-11-28 15:05:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-179696-20171114164626.patch</filename>
            <type>text/plain</type>
            <size>66024</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0ODYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
M2E4ZmVmZGVmMWExMGE0NjRhYzA3Y2VlZDNiODE2NDIyMDhiOTRlLi40YTAzM2EyZDViYjYwNDc3
YTJhNjkyOWFmZTFhZjA2NTZiYzljOGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNy0xMS0xNCAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIENsZWFuIHVwIG5hbWVzIG9mIGNvbnZlcnNpb24gbWV0aG9kcyBhZnRl
ciByZW5hbWluZyBJbnNwZWN0b3JWYWx1ZSB0byBKU09OOjpWYWx1ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5Njk2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5OgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRv
ci5fZ2VuZXJhdGVfdHlwZV9pbnRlcmZhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToK
KyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJh
dGVfdHlwZV9pbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChPYmpDUHJvdG9jb2xUeXBlc0ltcGxl
bWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfcHJvdG9jb2xfb2Jq
ZWN0KToKKyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3Iu
X2dlbmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9qc29uX29iamVjdCk6IERlbGV0ZWQuCisgICAgICAg
ICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weToKKyAgICAgICAg
KE9iakNHZW5lcmF0b3IucHJvdG9jb2xfdHlwZV9mb3JfcmF3X25hbWUpOgorICAgICAgICAoT2Jq
Q0dlbmVyYXRvci5vYmpjX3Byb3RvY29sX2V4cG9ydF9leHByZXNzaW9uX2Zvcl92YXJpYWJsZSk6
CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfcHJvdG9jb2xfZXhwb3J0X2V4cHJlc3Npb25f
Zm9yX3ZhcmlhYmxlLmlzKToKKyAgICAgICAgKE9iakNHZW5lcmF0b3Iub2JqY19wcm90b2NvbF9p
bXBvcnRfZXhwcmVzc2lvbl9mb3JfdmFyaWFibGUpOgorICAgICAgICAoT2JqQ0dlbmVyYXRvci5v
YmpjX3Byb3RvY29sX2ltcG9ydF9leHByZXNzaW9uX2Zvcl92YXJpYWJsZS5pcyk6CisgICAgICAg
IChPYmpDR2VuZXJhdG9yLm9iamNfdG9fcHJvdG9jb2xfZXhwcmVzc2lvbl9mb3JfbWVtYmVyLmlz
KToKKyAgICAgICAgKE9iakNHZW5lcmF0b3Iub2JqY190b19wcm90b2NvbF9leHByZXNzaW9uX2Zv
cl9tZW1iZXIpOgorICAgICAgICAoT2JqQ0dlbmVyYXRvci5wcm90b2NvbF90b19vYmpjX2V4cHJl
c3Npb25fZm9yX21lbWJlci5pcyk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLnByb3RvY29sX3Rv
X29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKToKKyAgICAgICAgKE9iakNHZW5lcmF0b3IucHJv
dG9jb2xfdG9fb2JqY19jb2RlX2Jsb2NrX2Zvcl9vYmplY3RfbWVtYmVyKToKKyAgICAgICAgKE9i
akNHZW5lcmF0b3Iub2JqY19zZXR0ZXJfbWV0aG9kX2Zvcl9tZW1iZXJfaW50ZXJuYWwpOgorICAg
ICAgICAoT2JqQ0dlbmVyYXRvci5vYmpjX2dldHRlcl9tZXRob2RfZm9yX21lbWJlcl9pbnRlcm5h
bCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmlu
aXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRy
aWJ1dGUuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRl
cnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwt
dHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXdpdGgtb3Blbi1wYXJh
bWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21h
Yy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdDoKKwog
MjAxNy0xMS0xNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgTW92ZSBKU09OVmFsdWVzIHRvIFdURiBhbmQgY29udmVydCB1c2VzIG9mIEluc3Bl
Y3RvclZhbHVlcy5oIHRvIEpTT05WYWx1ZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19oZWFkZXIucHkg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9vYmpjX2hlYWRlci5weQppbmRleCA4MDFmNDBhODZiMjY0YWI0ZmM4NzI1ZDM5ODQ1YTk5OTNh
ZGFjMjI4Li5hODM0M2U2ZTYzZWVkNDliZGRlN2I1NzJhNWY3MTdmMjVkOGNkMWFjIDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX2hlYWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2hlYWRlci5weQpAQCAtMTY2LDEwICsxNjYs
MTAgQEAgY2xhc3MgT2JqQ0hlYWRlckdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICAgICAg
bGluZXMuYXBwZW5kKCdfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSknKQog
ICAgICAgICBsaW5lcy5hcHBlbmQoJ0BpbnRlcmZhY2UgJXMgOiAlc0pTT05PYmplY3QnICUgKG9i
amNfbmFtZSwgT2JqQ0dlbmVyYXRvci5PQkpDX1NUQVRJQ19QUkVGSVgpKQogCi0gICAgICAgICMg
VGhlIGluaXRpYWxpemVycyB0aGF0IHRha2UgYSBwYXlsb2FkIG9yIGluc3BlY3RvciBvYmplY3Qg
YXJlIG9ubHkgbmVlZGVkIGJ5IHRoZSBmcm9udGVuZC4KKyAgICAgICAgIyBUaGUgaW5pdGlhbGl6
ZXJzIHRoYXQgdGFrZSBhIHBheWxvYWQgb3IgcHJvdG9jb2wgb2JqZWN0IGFyZSBvbmx5IG5lZWRl
ZCBieSB0aGUgZnJvbnRlbmQuCiAgICAgICAgIGlmIHNlbGYuZ2V0X2dlbmVyYXRvcl9zZXR0aW5n
KCdnZW5lcmF0ZV9mcm9udGVuZCcsIEZhbHNlKToKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IGlkPiAqKXBheWxvYWQ7JykKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVj
dDsnKQorICAgICAgICAgICAgbGluZXMuYXBwZW5kKCctIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQ
cm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsnKQogCiAg
ICAgICAgIHJlcXVpcmVkX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbm90IG1lbWJl
ci5pc19vcHRpb25hbCwgZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKQogICAgICAgICBvcHRpb25h
bF9tZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBtZW1iZXI6IG1lbWJlci5pc19vcHRpb25hbCwgZGVj
bGFyYXRpb24udHlwZV9tZW1iZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19p
bXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkK
aW5kZXggMWE2NjQ4ODk1NWIxZjFkMDlmYjZiMTU0MmQ4YzY5ZTlhN2E2NWIzYS4uY2U1YzEwZmEx
MGZkZjQ3ZTY1ZmIyZDYzODE0NDk0ZTczNTVmMjIzOSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxl
bWVudGF0aW9uLnB5CkBAIC05NCw3ICs5NCw3IEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVzSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgIGlmIHNlbGYuZ2V0
X2dlbmVyYXRvcl9zZXR0aW5nKCdnZW5lcmF0ZV9mcm9udGVuZCcsIEZhbHNlKToKICAgICAgICAg
ICAgIGxpbmVzLmFwcGVuZCgnJykKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5l
cmF0ZV9pbml0X21ldGhvZF9mb3JfcGF5bG9hZChkb21haW4sIGRlY2xhcmF0aW9uKSkKLSAgICAg
ICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfanNvbl9v
YmplY3QoZG9tYWluLCBkZWNsYXJhdGlvbikpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2Vs
Zi5fZ2VuZXJhdGVfaW5pdF9tZXRob2RfZm9yX3Byb3RvY29sX29iamVjdChkb21haW4sIGRlY2xh
cmF0aW9uKSkKICAgICAgICAgcmVxdWlyZWRfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVy
OiBub3QgbWVtYmVyLmlzX29wdGlvbmFsLCBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCiAgICAg
ICAgIGlmIHJlcXVpcmVkX21lbWJlcnM6CiAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJycpCkBA
IC0xMDgsMTEgKzEwOCwxMSBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9u
R2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcy5hcHBlbmQoJ0BlbmQnKQog
ICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCi0gICAgZGVmIF9nZW5lcmF0ZV9pbml0
X21ldGhvZF9mb3JfanNvbl9vYmplY3Qoc2VsZiwgZG9tYWluLCBkZWNsYXJhdGlvbik6CisgICAg
ZGVmIF9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfcHJvdG9jb2xfb2JqZWN0KHNlbGYsIGRvbWFp
biwgZGVjbGFyYXRpb24pOgogICAgICAgICBsaW5lcyA9IFtdCi0gICAgICAgIGxpbmVzLmFwcGVu
ZCgnLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopanNvbk9iamVjdCcpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKW9iamVjdCcp
CiAgICAgICAgIGxpbmVzLmFwcGVuZCgneycpCi0gICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9J
bnNwZWN0b3JPYmplY3RdLmdldCgpXSkpJykKKyAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pTT05dLmdldCgp
XSkpJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVybiBuaWw7JykKICAgICAg
ICAgbGluZXMuYXBwZW5kKCcnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICByZXR1cm4gc2Vs
ZjsnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQppbmRleCA5NDRkMmU2MTQxNDMx
ODlhYmJiYzhiNjNiNzIxYzIwYmU0NzJlYjcyLi4xYjIxMzc2ZGQ5YWFkMmRmMGJjYjY3N2U4NmUx
ZWYyNTA3ZTUzNmExIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weQpAQCAtMjQ3
LDcgKzI0Nyw3IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYg
cmF3X25hbWUgaXMgJ2Jvb2xlYW4nOgogICAgICAgICAgICAgcmV0dXJuICdib29sJwogICAgICAg
ICBpZiByYXdfbmFtZSBpbiBbJ2FueScsICdvYmplY3QnXToKLSAgICAgICAgICAgIHJldHVybiAn
SW5zcGVjdG9yT2JqZWN0JworICAgICAgICAgICAgcmV0dXJuICdKU09OOjpPYmplY3QnCiAgICAg
ICAgIHJldHVybiBOb25lCiAKICAgICBAc3RhdGljbWV0aG9kCkBAIC0zNzEsMTkgKzM3MSwxOSBA
QCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAgcmV0dXJu
ICd0b1Byb3RvY29sU3RyaW5nKCVzKScgJSB2YXJfbmFtZQogICAgICAgICAgICAgcmV0dXJuIHZh
cl9uYW1lCiAgICAgICAgIGlmIGNhdGVnb3J5IGlzIE9iakNUeXBlQ2F0ZWdvcnkuT2JqZWN0Ogot
ICAgICAgICAgICAgcmV0dXJuICdbJXMgdG9JbnNwZWN0b3JPYmplY3RdJyAlIHZhcl9uYW1lCisg
ICAgICAgICAgICByZXR1cm4gJ1slcyB0b0pTT05dJyAlIHZhcl9uYW1lCiAgICAgICAgIGlmIGNh
dGVnb3J5IGlzIE9iakNUeXBlQ2F0ZWdvcnkuQXJyYXk6CiAgICAgICAgICAgICBwcm90b2NvbF90
eXBlID0gT2JqQ0dlbmVyYXRvci5wcm90b2NvbF90eXBlX2Zvcl90eXBlKHZhcl90eXBlLmVsZW1l
bnRfdHlwZSkKICAgICAgICAgICAgIG9iamNfY2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9yX3R5
cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgaWYgcHJvdG9jb2xfdHlwZSA9
PSAnSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPic6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuICdpbnNwZWN0b3JTdHJpbmdBcnJheUFycmF5KCVzKScgJSB2YXJfbmFtZQorICAgICAg
ICAgICAgICAgIHJldHVybiAndG9KU09OU3RyaW5nQXJyYXlBcnJheSglcyknICUgdmFyX25hbWUK
ICAgICAgICAgICAgIGlmIHByb3RvY29sX3R5cGUgaXMgJ1N0cmluZycgYW5kIG9iamNfY2xhc3Mg
aXMgJ05TU3RyaW5nJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2luc3BlY3RvclN0cmluZ0Fy
cmF5KCVzKScgJSB2YXJfbmFtZQorICAgICAgICAgICAgICAgIHJldHVybiAndG9KU09OU3RyaW5n
QXJyYXkoJXMpJyAlIHZhcl9uYW1lCiAgICAgICAgICAgICBpZiBwcm90b2NvbF90eXBlIGlzICdp
bnQnIGFuZCBvYmpjX2NsYXNzIGlzICdOU051bWJlcic6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICdpbnNwZWN0b3JJbnRlZ2VyQXJyYXkoJXMpJyAlIHZhcl9uYW1lCisgICAgICAgICAgICAgICAg
cmV0dXJuICd0b0pTT05JbnRlZ2VyQXJyYXkoJXMpJyAlIHZhcl9uYW1lCiAgICAgICAgICAgICBp
ZiBwcm90b2NvbF90eXBlIGlzICdkb3VibGUnIGFuZCBvYmpjX2NsYXNzIGlzICdOU051bWJlcic6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdpbnNwZWN0b3JEb3VibGVBcnJheSglcyknICUgdmFy
X25hbWUKLSAgICAgICAgICAgIHJldHVybiAnaW5zcGVjdG9yT2JqZWN0QXJyYXkoJXMpJyAlIHZh
cl9uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuICd0b0pTT05Eb3VibGVBcnJheSglcyknICUg
dmFyX25hbWUKKyAgICAgICAgICAgIHJldHVybiAndG9KU09OT2JqZWN0QXJyYXkoJXMpJyAlIHZh
cl9uYW1lCiAKICAgICBkZWYgb2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3JfbWVt
YmVyKHNlbGYsIG5hbWUsIGRlY2xhcmF0aW9uLCBtZW1iZXIpOgogICAgICAgICBpZiBpc2luc3Rh
bmNlKG1lbWJlci50eXBlLCBFbnVtVHlwZSk6CkBAIC00MDUsMTQgKzQwNSwxNCBAQCBjbGFzcyBP
YmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICByZXR1cm4gdmFyX25hbWUKICAg
ICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5PYmplY3Q6CiAgICAgICAgICAg
ICBvYmpjX2NsYXNzID0gc2VsZi5vYmpjX2NsYXNzX2Zvcl90eXBlKHZhcl90eXBlKQotICAgICAg
ICAgICAgcmV0dXJuICdbW1slcyBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6JXNdIGF1
dG9yZWxlYXNlXScgJSAob2JqY19jbGFzcywgdmFyX25hbWUpCisgICAgICAgICAgICByZXR1cm4g
J1tbWyVzIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6JXNdIGF1dG9yZWxlYXNlXScgJSAob2Jq
Y19jbGFzcywgdmFyX25hbWUpCiAgICAgICAgIGlmIGNhdGVnb3J5IGlzIE9iakNUeXBlQ2F0ZWdv
cnkuQXJyYXk6CiAgICAgICAgICAgICBvYmpjX2NsYXNzID0gc2VsZi5vYmpjX2NsYXNzX2Zvcl90
eXBlKHZhcl90eXBlLmVsZW1lbnRfdHlwZSkKICAgICAgICAgICAgIGlmIG9iamNfY2xhc3MgaXMg
J05TU3RyaW5nJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ29iamNTdHJpbmdBcnJheSglcykn
ICUgdmFyX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3RvT2JqQ1N0cmluZ0FycmF5KCVz
KScgJSB2YXJfbmFtZQogICAgICAgICAgICAgaWYgb2JqY19jbGFzcyBpcyAnTlNOdW1iZXInOiAg
IyBGSVhNRTogSW50ZWdlciBvciBEb3VibGU/Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdvYmpj
SW50ZWdlckFycmF5KCVzKScgJSB2YXJfbmFtZQotICAgICAgICAgICAgcmV0dXJuICdvYmpjQXJy
YXk8JXM+KCVzKScgJSAob2JqY19jbGFzcywgdmFyX25hbWUpCisgICAgICAgICAgICAgICAgcmV0
dXJuICd0b09iakNJbnRlZ2VyQXJyYXkoJXMpJyAlIHZhcl9uYW1lCisgICAgICAgICAgICByZXR1
cm4gJ3RvT2JqQ0FycmF5PCVzPiglcyknICUgKG9iamNfY2xhc3MsIHZhcl9uYW1lKQogCiAgICAg
IyBPYmpDIDwtPiBKU09OIG9iamVjdCBjb252ZXJzaW9uIGZvciB0eXBlcyBnZXR0ZXJzL3NldHRl
cnMuCiAgICAgIyAgIC0gY29udmVydCBhIG1lbWJlciBzZXR0ZXIgZnJvbSBPYmpDIEFQSSB0byBK
U09OIG9iamVjdCBzZXR0ZXIKQEAgLTQyOSwxMyArNDI5LDEzIEBAIGNsYXNzIE9iakNHZW5lcmF0
b3IoR2VuZXJhdG9yKToKICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5B
cnJheToKICAgICAgICAgICAgIG9iamNfY2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUo
bWVtYmVyLnR5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgaWYgb2JqY19jbGFzcyBpcyAn
TlNTdHJpbmcnOgotICAgICAgICAgICAgICAgIHJldHVybiAnaW5zcGVjdG9yU3RyaW5nQXJyYXko
JXMpJyAlIHN1Yl9leHByZXNzaW9uCisgICAgICAgICAgICAgICAgcmV0dXJuICd0b0pTT05TdHJp
bmdBcnJheSglcyknICUgc3ViX2V4cHJlc3Npb24KICAgICAgICAgICAgIGlmIG9iamNfY2xhc3Mg
aXMgJ05TTnVtYmVyJzoKICAgICAgICAgICAgICAgICBwcm90b2NvbF90eXBlID0gT2JqQ0dlbmVy
YXRvci5wcm90b2NvbF90eXBlX2Zvcl90eXBlKG1lbWJlci50eXBlLmVsZW1lbnRfdHlwZSkKICAg
ICAgICAgICAgICAgICBpZiBwcm90b2NvbF90eXBlIGlzICdkb3VibGUnOgotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJ2luc3BlY3RvckRvdWJsZUFycmF5KCVzKScgJSBzdWJfZXhwcmVzc2lv
bgotICAgICAgICAgICAgICAgIHJldHVybiAnaW5zcGVjdG9ySW50ZWdlckFycmF5KCVzKScgJSBz
dWJfZXhwcmVzc2lvbgotICAgICAgICAgICAgcmV0dXJuICdpbnNwZWN0b3JPYmplY3RBcnJheSgl
cyknICUgc3ViX2V4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b0pTT05E
b3VibGVBcnJheSglcyknICUgc3ViX2V4cHJlc3Npb24KKyAgICAgICAgICAgICAgICByZXR1cm4g
J3RvSlNPTkludGVnZXJBcnJheSglcyknICUgc3ViX2V4cHJlc3Npb24KKyAgICAgICAgICAgIHJl
dHVybiAndG9KU09OT2JqZWN0QXJyYXkoJXMpJyAlIHN1Yl9leHByZXNzaW9uCiAKICAgICBkZWYg
cHJvdG9jb2xfdG9fb2JqY19leHByZXNzaW9uX2Zvcl9tZW1iZXIoc2VsZiwgZGVjbGFyYXRpb24s
IG1lbWJlciwgc3ViX2V4cHJlc3Npb24pOgogICAgICAgICBjYXRlZ29yeSA9IE9iakNUeXBlQ2F0
ZWdvcnkuY2F0ZWdvcnlfZm9yX3R5cGUobWVtYmVyLnR5cGUpCkBAIC00NTEsMTMgKzQ1MSwxMyBA
QCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICBwcm90b2NvbF90
eXBlID0gT2JqQ0dlbmVyYXRvci5wcm90b2NvbF90eXBlX2Zvcl90eXBlKG1lbWJlci50eXBlLmVs
ZW1lbnRfdHlwZSkKICAgICAgICAgICAgIG9iamNfY2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9y
X3R5cGUobWVtYmVyLnR5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgaWYgb2JqY19jbGFz
cyBpcyAnTlNTdHJpbmcnOgotICAgICAgICAgICAgICAgIHJldHVybiAnb2JqY1N0cmluZ0FycmF5
KCVzKScgJSBzdWJfZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgIHJldHVybiAndG9PYmpDU3Ry
aW5nQXJyYXkoJXMpJyAlIHN1Yl9leHByZXNzaW9uCiAgICAgICAgICAgICBpZiBvYmpjX2NsYXNz
IGlzICdOU051bWJlcic6CiAgICAgICAgICAgICAgICAgcHJvdG9jb2xfdHlwZSA9IE9iakNHZW5l
cmF0b3IucHJvdG9jb2xfdHlwZV9mb3JfdHlwZShtZW1iZXIudHlwZS5lbGVtZW50X3R5cGUpCiAg
ICAgICAgICAgICAgICAgaWYgcHJvdG9jb2xfdHlwZSBpcyAnZG91YmxlJzoKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuICdvYmpjRG91YmxlQXJyYXkoJXMpJyAlIHN1Yl9leHByZXNzaW9uCi0g
ICAgICAgICAgICAgICAgcmV0dXJuICdvYmpjSW50ZWdlckFycmF5KCVzKScgJSBzdWJfZXhwcmVz
c2lvbgotICAgICAgICAgICAgcmV0dXJuICdvYmpjQXJyYXk8JXM+KCVzKScgJSAob2JqY19jbGFz
cywgc3ViX2V4cHJlc3Npb24pCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9PYmpDRG91
YmxlQXJyYXkoJXMpJyAlIHN1Yl9leHByZXNzaW9uCisgICAgICAgICAgICAgICAgcmV0dXJuICd0
b09iakNJbnRlZ2VyQXJyYXkoJXMpJyAlIHN1Yl9leHByZXNzaW9uCisgICAgICAgICAgICByZXR1
cm4gJ3RvT2JqQ0FycmF5PCVzPiglcyknICUgKG9iamNfY2xhc3MsIHN1Yl9leHByZXNzaW9uKQog
CiAgICAgZGVmIHByb3RvY29sX3RvX29iamNfY29kZV9ibG9ja19mb3Jfb2JqZWN0X21lbWJlcihz
ZWxmLCBkZWNsYXJhdGlvbiwgbWVtYmVyLCBzdWJfZXhwcmVzc2lvbik6CiAgICAgICAgIG9iamNf
Y2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUobWVtYmVyLnR5cGUpCkBAIC00NjUsNyAr
NDY1LDcgQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICAlc0pTT05PYmplY3QgKm9iamVjdCA9ICVzOycgJSAoT2JqQ0dlbmVyYXRvci5P
QkpDX1NUQVRJQ19QUkVGSVgsIHN1Yl9leHByZXNzaW9uKSkKICAgICAgICAgbGluZXMuYXBwZW5k
KCcgICAgaWYgKCFvYmplY3QpJykKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIHJldHVy
biBuaWw7JykKLSAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIFtbJXMgYWxsb2NdIGlu
aXRXaXRoSW5zcGVjdG9yT2JqZWN0OlslcyB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOycgJSAo
b2JqY19jbGFzcywgc3ViX2V4cHJlc3Npb24pKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBy
ZXR1cm4gW1slcyBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OlslcyB0b0pTT05dLmdldCgpXTsn
ICUgKG9iamNfY2xhc3MsIHN1Yl9leHByZXNzaW9uKSkKICAgICAgICAgcmV0dXJuICdcbicuam9p
bihsaW5lcykKIAogICAgIGRlZiBwYXlsb2FkX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVy
KHNlbGYsIGRlY2xhcmF0aW9uLCBtZW1iZXIpOgpAQCAtNTI4LDE0ICs1MjgsMTQgQEAgY2xhc3Mg
T2JqQ0dlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgaWYgcmF3X25hbWUgaW4gWydh
bnknLCAnb2JqZWN0J106CiAgICAgICAgICAgICAgICAgcmV0dXJuICdzZXRPYmplY3QnCiAgICAg
ICAgICAgICBpZiByYXdfbmFtZSBpcyAnYXJyYXknOgotICAgICAgICAgICAgICAgIHJldHVybiAn
c2V0SW5zcGVjdG9yQXJyYXknCisgICAgICAgICAgICAgICAgcmV0dXJuICdzZXRKU09OQXJyYXkn
CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBpZiAoaXNpbnN0YW5jZShfdHlwZSwg
RW51bVR5cGUpKToKICAgICAgICAgICAgIHJldHVybiAnc2V0U3RyaW5nJwogICAgICAgICBpZiAo
aXNpbnN0YW5jZShfdHlwZSwgT2JqZWN0VHlwZSkpOgogICAgICAgICAgICAgcmV0dXJuICdzZXRP
YmplY3QnCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBBcnJheVR5cGUpKToKLSAgICAg
ICAgICAgIHJldHVybiAnc2V0SW5zcGVjdG9yQXJyYXknCisgICAgICAgICAgICByZXR1cm4gJ3Nl
dEpTT05BcnJheScKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIEBzdGF0aWNtZXRob2QKQEAg
LTU1OSwxMiArNTU5LDEyIEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAg
ICAgICAgIGlmIHJhd19uYW1lIGluIFsnYW55JywgJ29iamVjdCddOgogICAgICAgICAgICAgICAg
IHJldHVybiAnb2JqZWN0Rm9yS2V5JwogICAgICAgICAgICAgaWYgcmF3X25hbWUgaXMgJ2FycmF5
JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2luc3BlY3RvckFycmF5Rm9yS2V5JworICAgICAg
ICAgICAgICAgIHJldHVybiAnSlNPTkFycmF5Rm9yS2V5JwogICAgICAgICAgICAgcmV0dXJuIE5v
bmUKICAgICAgICAgaWYgKGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKSk6CiAgICAgICAgICAg
ICByZXR1cm4gJ3N0cmluZ0ZvcktleScKICAgICAgICAgaWYgKGlzaW5zdGFuY2UoX3R5cGUsIE9i
amVjdFR5cGUpKToKICAgICAgICAgICAgIHJldHVybiAnb2JqZWN0Rm9yS2V5JwogICAgICAgICBp
ZiAoaXNpbnN0YW5jZShfdHlwZSwgQXJyYXlUeXBlKSk6Ci0gICAgICAgICAgICByZXR1cm4gJ2lu
c3BlY3RvckFycmF5Rm9yS2V5JworICAgICAgICAgICAgcmV0dXJuICdKU09OQXJyYXlGb3JLZXkn
CiAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFj
LXBsYXRmb3JtLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5q
c29uLXJlc3VsdAppbmRleCBkMzJhMWQ3N2Q5MGIzYzI1ZGMyMjA5NDQ3ZWE5NDA5YzUyOGM0NDli
Li5kZmY5ZmM5OTc1NzQ3YTkyZTBmMjdiMGJhMWFkOTRjODlhMGQ3ZTMwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVk
L2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5p
dGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKQEAgLTkwNyw3ICs5MDcsNyBAQCB0
eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2Nv
bE5ldHdvcmtFcnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7Ci0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3Qg
Kilqc29uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJX
SVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJl
ZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiBy
ZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTEx
NTYsOSArMTE1Niw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4g
c2VsZjsKIH0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29s
SlNPTk9iamVjdCAqKWpzb25PYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29s
T2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilvYmplY3QKIHsKLSAgICBpZiAoIShzZWxm
ID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9y
T2JqZWN0XS5nZXQoKV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhKU09OT2Jq
ZWN0OltvYmplY3QgdG9KU09OXS5nZXQoKV0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAg
cmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJp
YnV0ZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpz
b24tcmVzdWx0CmluZGV4IDRjMDg1ZTkyMTg2OTZiOWJhNmFiYTNjNjQ5YWIzM2Q3MjRmMTUxMTEu
LmY5MzBiMGNiZTNkOTQ4MDAxYmI0MDE5YmY5MmUwZDEyMDNjZmQxMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CkBAIC05MzAsMjMgKzkz
MCwyMyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVj
dXRlU1FMU3luY09wdGlvbmFsUmV0dXJuVmFsdWVzKAogICAgICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIoc3FsRXJyb3IsIEAic3FsRXJyb3IiKTsKICAgICAg
ICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKGFsdGVybmF0ZUNv
bG9ycywgQCJhbHRlcm5hdGVDb2xvcnMiKTsKICAgICAgICAgaWYgKGNvbHVtbk5hbWVzKQotICAg
ICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVz
IiksIGluc3BlY3RvclN0cmluZ0FycmF5KCpjb2x1bW5OYW1lcykpOworICAgICAgICAgICAgcmVz
dWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIHRvSlNPTlN0
cmluZ0FycmF5KCpjb2x1bW5OYW1lcykpOwogICAgICAgICBpZiAobm90ZXMpCiAgICAgICAgICAg
ICByZXN1bHRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiksICpub3Rlcyk7
CiAgICAgICAgIGlmICh0aW1lc3RhbXApCiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldERv
dWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAqdGltZXN0YW1wKTsKICAgICAgICAgaWYg
KHZhbHVlcykKLSAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJh
bCgidmFsdWVzIiksIFsqdmFsdWVzIHRvSW5zcGVjdG9yT2JqZWN0XSk7CisgICAgICAgICAgICBy
ZXN1bHRPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBbKnZhbHVlcyB0
b0pTT05dKTsKICAgICAgICAgaWYgKHBheWxvYWQpCi0gICAgICAgICAgICByZXN1bHRPYmplY3Qt
PnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBbKnBheWxvYWQgdG9JbnNwZWN0b3JP
YmplY3RdKTsKKyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFs
KCJwYXlsb2FkIiksIFsqcGF5bG9hZCB0b0pTT05dKTsKICAgICAgICAgaWYgKGRhdGFiYXNlSWQp
CiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEludGVnZXIoQVNDSUlMaXRlcmFsKCJkYXRh
YmFzZUlkIiksICpkYXRhYmFzZUlkKTsKICAgICAgICAgaWYgKHNxbEVycm9yKQotICAgICAgICAg
ICAgcmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBbKnNx
bEVycm9yIHRvSW5zcGVjdG9yT2JqZWN0XSk7CisgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNl
dE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFsqc3FsRXJyb3IgdG9KU09OXSk7CiAg
ICAgICAgIGlmIChzY3JlZW5Db2xvcikKICAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgdG9Qcm90b2NvbFN0cmluZygqc2NyZWVu
Q29sb3IpKTsKICAgICAgICAgaWYgKGFsdGVybmF0ZUNvbG9ycykKLSAgICAgICAgICAgIHJlc3Vs
dE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgaW5zcGVj
dG9yU3RyaW5nQXJyYXkoKmFsdGVybmF0ZUNvbG9ycykpOworICAgICAgICAgICAgcmVzdWx0T2Jq
ZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCB0b0pTT05TdHJp
bmdBcnJheSgqYWx0ZXJuYXRlQ29sb3JzKSk7CiAgICAgICAgIGlmIChwcmludENvbG9yKQogICAg
ICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9y
IiksIHRvUHJvdG9jb2xTdHJpbmcoKnByaW50Q29sb3IpKTsKICAgICAgICAgYmFja2VuZERpc3Bh
dGNoZXIoKS0+c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGTW92ZShyZXN1bHRPYmplY3QpKTsK
QEAgLTk3NCwyMyArOTc0LDIzIEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzCiAgICAgICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihzcWxFcnJvciwgQCJzcWxF
cnJvciIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVU
RVIoYWx0ZXJuYXRlQ29sb3JzLCBAImFsdGVybmF0ZUNvbG9ycyIpOwogICAgICAgICBpZiAoY29s
dW1uTmFtZXMpCi0gICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJh
bCgiY29sdW1uTmFtZXMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoKmNvbHVtbk5hbWVzKSk7Cisg
ICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFt
ZXMiKSwgdG9KU09OU3RyaW5nQXJyYXkoKmNvbHVtbk5hbWVzKSk7CiAgICAgICAgIGlmIChub3Rl
cykKICAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90
ZXMiKSwgKm5vdGVzKTsKICAgICAgICAgaWYgKHRpbWVzdGFtcCkKICAgICAgICAgICAgIHJlc3Vs
dE9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICp0aW1lc3RhbXAp
OwogICAgICAgICBpZiAodmFsdWVzKQotICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRPYmpl
Y3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgWyp2YWx1ZXMgdG9JbnNwZWN0b3JPYmplY3RdKTsK
KyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVz
IiksIFsqdmFsdWVzIHRvSlNPTl0pOwogICAgICAgICBpZiAocGF5bG9hZCkKLSAgICAgICAgICAg
IHJlc3VsdE9iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIFsqcGF5bG9h
ZCB0b0luc3BlY3Rvck9iamVjdF0pOworICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRWYWx1
ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgWypwYXlsb2FkIHRvSlNPTl0pOwogICAgICAgICBp
ZiAoZGF0YWJhc2VJZCkKICAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0SW50ZWdlcihBU0NJ
SUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgKmRhdGFiYXNlSWQpOwogICAgICAgICBpZiAoc3FsRXJy
b3IpCi0gICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNx
bEVycm9yIiksIFsqc3FsRXJyb3IgdG9JbnNwZWN0b3JPYmplY3RdKTsKKyAgICAgICAgICAgIHJl
c3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgWypzcWxFcnJv
ciB0b0pTT05dKTsKICAgICAgICAgaWYgKHNjcmVlbkNvbG9yKQogICAgICAgICAgICAgcmVzdWx0
T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCB0b1Byb3RvY29s
U3RyaW5nKCpzY3JlZW5Db2xvcikpOwogICAgICAgICBpZiAoYWx0ZXJuYXRlQ29sb3JzKQotICAg
ICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNv
bG9ycyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheSgqYWx0ZXJuYXRlQ29sb3JzKSk7CisgICAgICAg
ICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3Jz
IiksIHRvSlNPTlN0cmluZ0FycmF5KCphbHRlcm5hdGVDb2xvcnMpKTsKICAgICAgICAgaWYgKHBy
aW50Q29sb3IpCiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVy
YWwoInByaW50Q29sb3IiKSwgdG9Qcm90b2NvbFN0cmluZygqcHJpbnRDb2xvcikpOwogICAgICAg
ICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJl
c3VsdE9iamVjdCkpOwpAQCAtMTAxNywxNCArMTAxNywxNCBAQCB2b2lkIE9iakNJbnNwZWN0b3JE
YXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIHJlcXVlc3RJZCwg
aW50CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKHBheWxv
YWQsIEAicGF5bG9hZCIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BB
UkFNRVRFUihzcWxFcnJvciwgQCJzcWxFcnJvciIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX1JFUVVJUkVEX1BBUkFNRVRFUihhbHRlcm5hdGVDb2xvcnMsIEAiYWx0ZXJuYXRlQ29sb3Jz
Iik7Ci0gICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5O
YW1lcyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheShjb2x1bW5OYW1lcykpOworICAgICAgICByZXN1
bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgdG9KU09OU3Ry
aW5nQXJyYXkoY29sdW1uTmFtZXMpKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJub3RlcyIpLCBub3Rlcyk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0
RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFtcCk7Ci0gICAgICAgIHJl
c3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIFt2YWx1ZXMgdG9J
bnNwZWN0b3JPYmplY3RdKTsKLSAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxp
dGVyYWwoInBheWxvYWQiKSwgW3BheWxvYWQgdG9JbnNwZWN0b3JPYmplY3RdKTsKKyAgICAgICAg
cmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgW3ZhbHVlcyB0
b0pTT05dKTsKKyAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBh
eWxvYWQiKSwgW3BheWxvYWQgdG9KU09OXSk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0SW50
ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgZGF0YWJhc2VJZCk7Ci0gICAgICAgIHJl
c3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgW3NxbEVycm9y
IHRvSW5zcGVjdG9yT2JqZWN0XSk7Ci0gICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXkoQVND
SUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoYWx0ZXJu
YXRlQ29sb3JzKSk7CisgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJh
bCgic3FsRXJyb3IiKSwgW3NxbEVycm9yIHRvSlNPTl0pOworICAgICAgICByZXN1bHRPYmplY3Qt
PnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIHRvSlNPTlN0cmluZ0Fy
cmF5KGFsdGVybmF0ZUNvbG9ycykpOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldFN0cmluZyhB
U0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcoc2NyZWVuQ29sb3Ip
KTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENv
bG9yIiksIHRvUHJvdG9jb2xTdHJpbmcocHJpbnRDb2xvcikpOwogICAgICAgICBiYWNrZW5kRGlz
cGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdE9iamVjdCkp
OwpAQCAtMTA1MSwxNSArMTA1MSwxNSBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmMobG9uZyByZXF1ZXN0SWQsIGludAogICAgICAg
ICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihwYXlsb2FkLCBAInBheWxv
YWQiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIoc3Fs
RXJyb3IsIEAic3FsRXJyb3IiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJF
RF9QQVJBTUVURVIoYWx0ZXJuYXRlQ29sb3JzLCBAImFsdGVybmF0ZUNvbG9ycyIpOwotICAgICAg
ICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgaW5z
cGVjdG9yU3RyaW5nQXJyYXkoY29sdW1uTmFtZXMpKTsKKyAgICAgICAgcmVzdWx0T2JqZWN0LT5z
ZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIHRvSlNPTlN0cmluZ0FycmF5KGNv
bHVtbk5hbWVzKSk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgibm90ZXMiKSwgbm90ZXMpOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldERvdWJsZShBU0NJ
SUxpdGVyYWwoInRpbWVzdGFtcCIpLCB0aW1lc3RhbXApOwotICAgICAgICByZXN1bHRPYmplY3Qt
PnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBbdmFsdWVzIHRvSW5zcGVjdG9yT2Jq
ZWN0XSk7Ci0gICAgICAgIHJlc3VsdE9iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXls
b2FkIiksIFtwYXlsb2FkIHRvSW5zcGVjdG9yT2JqZWN0XSk7CisgICAgICAgIHJlc3VsdE9iamVj
dC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIFt2YWx1ZXMgdG9KU09OXSk7Cisg
ICAgICAgIHJlc3VsdE9iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIFtw
YXlsb2FkIHRvSlNPTl0pOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldEludGVnZXIoQVNDSUlM
aXRlcmFsKCJkYXRhYmFzZUlkIiksIGRhdGFiYXNlSWQpOwotICAgICAgICByZXN1bHRPYmplY3Qt
PnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFtzcWxFcnJvciB0b0luc3BlY3Rv
ck9iamVjdF0pOworICAgICAgICByZXN1bHRPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwo
InNxbEVycm9yIiksIFtzcWxFcnJvciB0b0pTT05dKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCB0b1Byb3RvY29sU3RyaW5nKHNj
cmVlbkNvbG9yKSk7Ci0gICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJhbHRlcm5hdGVDb2xvcnMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoYWx0ZXJuYXRlQ29sb3Jz
KSk7CisgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5h
dGVDb2xvcnMiKSwgdG9KU09OU3RyaW5nQXJyYXkoYWx0ZXJuYXRlQ29sb3JzKSk7CiAgICAgICAg
IHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCB0b1By
b3RvY29sU3RyaW5nKHByaW50Q29sb3IpKTsKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+
c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGTW92ZShyZXN1bHRPYmplY3QpKTsKICAgICB9OwpA
QCAtMTMyOCw3ICsxMzI4LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3Rv
Y29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yKSB7CiBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VF
cnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5
bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7Ci0tIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2Jq
ZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29s
SlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdl
OihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJlZCAqLyBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1aXJlZCAq
LyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTE3MzMsOSArMTcz
Myw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKWpzb25PYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihS
V0lQcm90b2NvbEpTT05PYmplY3QgKilvYmplY3QKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5n
ZXQoKV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhKU09OT2JqZWN0OltvYmpl
Y3QgdG9KU09OXS5nZXQoKV0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIHNl
bGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMv
dGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJu
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNh
bGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggYjFmYTZhMWYwMTc2YzVmM2Qy
NDgyY2ZlZWQ5M2NkZThiMjAxYWM0Zi4uM2I1YzcxM2IxNjlkNmVmMTM4YmUxZjg3MTk5NTNkZTcz
OGZkMTdjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJl
dHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0
aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtODI5LDIzICs4Mjks
MjMgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHIKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKHNxbEVycm9yLCBAInNxbEVycm9yIik7CiAgICAgICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihhbHRlcm5hdGVDb2xv
cnMsIEAiYWx0ZXJuYXRlQ29sb3JzIik7CiAgICAgICAgIGlmIChjb2x1bW5OYW1lcykKLSAgICAg
ICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIp
LCBpbnNwZWN0b3JTdHJpbmdBcnJheSgqY29sdW1uTmFtZXMpKTsKKyAgICAgICAgICAgIHJlc3Vs
dE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCB0b0pTT05TdHJp
bmdBcnJheSgqY29sdW1uTmFtZXMpKTsKICAgICAgICAgaWYgKG5vdGVzKQogICAgICAgICAgICAg
cmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAqbm90ZXMpOwog
ICAgICAgICBpZiAodGltZXN0YW1wKQogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXREb3Vi
bGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwgKnRpbWVzdGFtcCk7CiAgICAgICAgIGlmICh2
YWx1ZXMpCi0gICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwo
InZhbHVlcyIpLCBbKnZhbHVlcyB0b0luc3BlY3Rvck9iamVjdF0pOworICAgICAgICAgICAgcmVz
dWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgWyp2YWx1ZXMgdG9K
U09OXSk7CiAgICAgICAgIGlmIChwYXlsb2FkKQotICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5z
ZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgWypwYXlsb2FkIHRvSW5zcGVjdG9yT2Jq
ZWN0XSk7CisgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgi
cGF5bG9hZCIpLCBbKnBheWxvYWQgdG9KU09OXSk7CiAgICAgICAgIGlmIChkYXRhYmFzZUlkKQog
ICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJh
c2VJZCIpLCAqZGF0YWJhc2VJZCk7CiAgICAgICAgIGlmIChzcWxFcnJvcikKLSAgICAgICAgICAg
IHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgWypzcWxF
cnJvciB0b0luc3BlY3Rvck9iamVjdF0pOworICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRP
YmplY3QoQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBbKnNxbEVycm9yIHRvSlNPTl0pOwogICAg
ICAgICBpZiAoc2NyZWVuQ29sb3IpCiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcoKnNjcmVlbkNv
bG9yKSk7CiAgICAgICAgIGlmIChhbHRlcm5hdGVDb2xvcnMpCi0gICAgICAgICAgICByZXN1bHRP
YmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIGluc3BlY3Rv
clN0cmluZ0FycmF5KCphbHRlcm5hdGVDb2xvcnMpKTsKKyAgICAgICAgICAgIHJlc3VsdE9iamVj
dC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgdG9KU09OU3RyaW5n
QXJyYXkoKmFsdGVybmF0ZUNvbG9ycykpOwogICAgICAgICBpZiAocHJpbnRDb2xvcikKICAgICAg
ICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIp
LCB0b1Byb3RvY29sU3RyaW5nKCpwcmludENvbG9yKSk7CiAgICAgICAgIGJhY2tlbmREaXNwYXRj
aGVyKCktPnNlbmRSZXNwb25zZShyZXF1ZXN0SWQsIFdURk1vdmUocmVzdWx0T2JqZWN0KSk7CkBA
IC04NTMsNyArODUzLDcgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0
Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHIKIAogICAgIE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqb19pbl9jb2x1bW5OYW1lczsKICAgICBpZiAoaW5fY29sdW1uTmFtZXMp
Ci0gICAgICAgIG9faW5fY29sdW1uTmFtZXMgPSBvYmpjU3RyaW5nQXJyYXkoaW5fY29sdW1uTmFt
ZXMpOworICAgICAgICBvX2luX2NvbHVtbk5hbWVzID0gdG9PYmpDU3RyaW5nQXJyYXkoaW5fY29s
dW1uTmFtZXMpOwogICAgIE5TU3RyaW5nICpvX2luX25vdGVzOwogICAgIGlmIChpbl9ub3RlcykK
ICAgICAgICAgb19pbl9ub3RlcyA9ICppbl9ub3RlczsKQEAgLTg2MiwyMiArODYyLDIyIEBAIHZv
aWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnMobG9uZyByCiAgICAgICAgIG9faW5fdGltZXN0YW1wID0gKmluX3RpbWVz
dGFtcDsKICAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fdmFsdWVzOwogICAgIGlmIChp
bl92YWx1ZXMpCi0gICAgICAgIG9faW5fdmFsdWVzID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0
IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl92YWx1ZXNdIGF1dG9yZWxlYXNlXTsK
KyAgICAgICAgb19pbl92YWx1ZXMgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGlu
aXRXaXRoSlNPTk9iamVjdDppbl92YWx1ZXNdIGF1dG9yZWxlYXNlXTsKICAgICBSV0lQcm90b2Nv
bEpTT05PYmplY3QgKm9faW5fcGF5bG9hZDsKICAgICBpZiAoaW5fcGF5bG9hZCkKLSAgICAgICAg
b19pbl9wYXlsb2FkID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aElu
c3BlY3Rvck9iamVjdDppbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CisgICAgICAgIG9faW5fcGF5
bG9hZCA9IFtbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0
OmluX3BheWxvYWRdIGF1dG9yZWxlYXNlXTsKICAgICBpbnQgb19pbl9kYXRhYmFzZUlkOwogICAg
IGlmIChpbl9kYXRhYmFzZUlkKQogICAgICAgICBvX2luX2RhdGFiYXNlSWQgPSAqaW5fZGF0YWJh
c2VJZDsKICAgICBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICpvX2luX3NxbEVycm9yOwogICAg
IGlmIChpbl9zcWxFcnJvcikKLSAgICAgICAgb19pbl9zcWxFcnJvciA9IFtbW1Rlc3RQcm90b2Nv
bERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OmluX3NxbEVycm9y
XSBhdXRvcmVsZWFzZV07CisgICAgICAgIG9faW5fc3FsRXJyb3IgPSBbW1tUZXN0UHJvdG9jb2xE
YXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6aW5fc3FsRXJyb3JdIGF1dG9y
ZWxlYXNlXTsKICAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNv
bG9ycz4gb19pbl9zY3JlZW5Db2xvcjsKICAgICBpZiAoaW5fc2NyZWVuQ29sb3IpCiAgICAgICAg
IG9faW5fc2NyZWVuQ29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJh
c2VQcmltYXJ5Q29sb3JzPigqaW5fc2NyZWVuQ29sb3IpOwogICAgIE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqb19pbl9hbHRlcm5hdGVDb2xvcnM7CiAgICAgaWYgKGluX2FsdGVybmF0ZUNvbG9ycykK
LSAgICAgICAgb19pbl9hbHRlcm5hdGVDb2xvcnMgPSBvYmpjU3RyaW5nQXJyYXkoaW5fYWx0ZXJu
YXRlQ29sb3JzKTsKKyAgICAgICAgb19pbl9hbHRlcm5hdGVDb2xvcnMgPSB0b09iakNTdHJpbmdB
cnJheShpbl9hbHRlcm5hdGVDb2xvcnMpOwogICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29s
RGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4gb19pbl9wcmlu
dENvbG9yOwogICAgIGlmIChpbl9wcmludENvbG9yKQogICAgICAgICBvX2luX3ByaW50Q29sb3Ig
PSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9u
YWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4oKmluX3ByaW50Q29sb3IpOwpAQCAtOTAwLDMyICs5MDAs
MzIgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgcmUKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9SRVFVSVJFRF9QQVJBTUVURVIocGF5bG9hZCwgQCJwYXlsb2FkIik7CiAgICAgICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKHNxbEVycm9yLCBAInNxbEVycm9yIik7
CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKGFsdGVybmF0
ZUNvbG9ycywgQCJhbHRlcm5hdGVDb2xvcnMiKTsKLSAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRB
cnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIGluc3BlY3RvclN0cmluZ0FycmF5KGNv
bHVtbk5hbWVzKSk7CisgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJjb2x1bW5OYW1lcyIpLCB0b0pTT05TdHJpbmdBcnJheShjb2x1bW5OYW1lcykpOwogICAgICAg
ICByZXN1bHRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiksIG5vdGVzKTsK
ICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAi
KSwgdGltZXN0YW1wKTsKLSAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRl
cmFsKCJ2YWx1ZXMiKSwgW3ZhbHVlcyB0b0luc3BlY3Rvck9iamVjdF0pOwotICAgICAgICByZXN1
bHRPYmplY3QtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBbcGF5bG9hZCB0b0lu
c3BlY3Rvck9iamVjdF0pOworICAgICAgICByZXN1bHRPYmplY3QtPnNldE9iamVjdChBU0NJSUxp
dGVyYWwoInZhbHVlcyIpLCBbdmFsdWVzIHRvSlNPTl0pOworICAgICAgICByZXN1bHRPYmplY3Qt
PnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBbcGF5bG9hZCB0b0pTT05dKTsKICAg
ICAgICAgcmVzdWx0T2JqZWN0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIp
LCBkYXRhYmFzZUlkKTsKLSAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRl
cmFsKCJzcWxFcnJvciIpLCBbc3FsRXJyb3IgdG9JbnNwZWN0b3JPYmplY3RdKTsKKyAgICAgICAg
cmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBbc3FsRXJy
b3IgdG9KU09OXSk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJh
bCgic2NyZWVuQ29sb3IiKSwgdG9Qcm90b2NvbFN0cmluZyhzY3JlZW5Db2xvcikpOwotICAgICAg
ICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiks
IGluc3BlY3RvclN0cmluZ0FycmF5KGFsdGVybmF0ZUNvbG9ycykpOworICAgICAgICByZXN1bHRP
YmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIHRvSlNPTlN0
cmluZ0FycmF5KGFsdGVybmF0ZUNvbG9ycykpOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldFN0
cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgdG9Qcm90b2NvbFN0cmluZyhwcmludENv
bG9yKSk7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRSZXNwb25zZShyZXF1ZXN0
SWQsIFdURk1vdmUocmVzdWx0T2JqZWN0KSk7CiAgICAgfTsKIAotICAgIE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqb19pbl9jb2x1bW5OYW1lcyA9IG9iamNTdHJpbmdBcnJheSgmaW5fY29sdW1uTmFt
ZXMpOworICAgIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9jb2x1bW5OYW1lcyA9IHRvT2Jq
Q1N0cmluZ0FycmF5KCZpbl9jb2x1bW5OYW1lcyk7CiAgICAgTlNTdHJpbmcgKm9faW5fbm90ZXMg
PSBpbl9ub3RlczsKICAgICBkb3VibGUgb19pbl90aW1lc3RhbXAgPSBpbl90aW1lc3RhbXA7Ci0g
ICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3ZhbHVlcyA9IFtbW1JXSVByb3RvY29sSlNP
Tk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6JmluX3ZhbHVlc10gYXV0b3Jl
bGVhc2VdOwotICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAqb19pbl9wYXlsb2FkID0gW1tbUldJ
UHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDomaW5fcGF5
bG9hZF0gYXV0b3JlbGVhc2VdOworICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAqb19pbl92YWx1
ZXMgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDom
aW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07CisgICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2lu
X3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSlNPTk9i
amVjdDomaW5fcGF5bG9hZF0gYXV0b3JlbGVhc2VdOwogICAgIGludCBvX2luX2RhdGFiYXNlSWQg
PSBpbl9kYXRhYmFzZUlkOwotICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3Fs
RXJyb3IgPSBbW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3Bl
Y3Rvck9iamVjdDomaW5fc3FsRXJyb3JdIGF1dG9yZWxlYXNlXTsKKyAgICBUZXN0UHJvdG9jb2xE
YXRhYmFzZUVycm9yICpvX2luX3NxbEVycm9yID0gW1tbVGVzdFByb3RvY29sRGF0YWJhc2VFcnJv
ciBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OiZpbl9zcWxFcnJvcl0gYXV0b3JlbGVhc2VdOwog
ICAgIHN0ZDo6b3B0aW9uYWw8VGVzdFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPiBvX2lu
X3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9ycz4oaW5fc2NyZWVuQ29sb3IpOwogICAgIGlmICghb19pbl9zY3JlZW5Db2xvcikg
ewogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5yZXBvcnRQcm90b2NvbEVycm9yKEJhY2tl
bmREaXNwYXRjaGVyOjpJbnZhbGlkUGFyYW1zLCBTdHJpbmc6OmZvcm1hdCgiUGFyYW1ldGVyICcl
cycgb2YgbWV0aG9kICclcycgY2Fubm90IGJlIHByb2Nlc3NlZCIsICJzY3JlZW5Db2xvciIsICJE
YXRhYmFzZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMiKSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9Ci0gICAgTlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2luX2FsdGVybmF0ZUNvbG9ycyA9
IG9iamNTdHJpbmdBcnJheSgmaW5fYWx0ZXJuYXRlQ29sb3JzKTsKKyAgICBOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKm9faW5fYWx0ZXJuYXRlQ29sb3JzID0gdG9PYmpDU3RyaW5nQXJyYXkoJmluX2Fs
dGVybmF0ZUNvbG9ycyk7CiAgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4
ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IG9faW5fcHJpbnRDb2xvciA9IGZy
b21Qcm90b2NvbFN0cmluZzxUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3I+KGluX3ByaW50Q29sb3IpOwogICAgIGlmICghb19pbl9wcmludENv
bG9yKSB7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnJlcG9ydFByb3RvY29sRXJyb3Io
QmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIFN0cmluZzo6Zm9ybWF0KCJQYXJhbWV0
ZXIgJyVzJyBvZiBtZXRob2QgJyVzJyBjYW5ub3QgYmUgcHJvY2Vzc2VkIiwgInByaW50Q29sb3Ii
LCAiRGF0YWJhc2UuZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikpOwpAQCAtMTE5Myw3ICsx
MTkzLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VF
eGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludEMKIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDog
UldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopanNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3Ry
aW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTU5Niw5ICsxNTk2LDkgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQotLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNv
bk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKW9iamVjdAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkp
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pT
T05dLmdldCgpXSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gc2VsZjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9n
ZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cmlu
ZGV4IDdiZmMyNDRmM2MxYWM3OGFiMTVlM2YxMjkwYzEwZGFhZWUyNmFhNDYuLmY4YTE1ZjhhMWE3
ZDUxYWZkOTVlNjRjODIyY2FkYTQ1OGE0Y2JjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13
aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdp
dGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtNzg5LDIxICs3ODksMjEgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFT
Q0lJTGl0ZXJhbCgibWV0aG9kIiksIEFTQ0lJTGl0ZXJhbCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU9w
dGlvbmFsUGFyYW1ldGVycyIpKTsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBwYXJhbXNPYmplY3Qg
PSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgIGlmIChjb2x1bW5OYW1lcykKLSAgICAgICAg
cGFyYW1zT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIGluc3Bl
Y3RvclN0cmluZ0FycmF5KCgqY29sdW1uTmFtZXMpKSk7CisgICAgICAgIHBhcmFtc09iamVjdC0+
c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCB0b0pTT05TdHJpbmdBcnJheSgo
KmNvbHVtbk5hbWVzKSkpOwogICAgIGlmIChub3RlcykKICAgICAgICAgcGFyYW1zT2JqZWN0LT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCAoKm5vdGVzKSk7CiAgICAgaWYgKHRpbWVz
dGFtcCkKICAgICAgICAgcGFyYW1zT2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1l
c3RhbXAiKSwgKCp0aW1lc3RhbXApKTsKICAgICBpZiAodmFsdWVzKQotICAgICAgICBwYXJhbXNP
YmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBbKCp2YWx1ZXMpIHRvSW5z
cGVjdG9yT2JqZWN0XSk7CisgICAgICAgIHBhcmFtc09iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0
ZXJhbCgidmFsdWVzIiksIFsoKnZhbHVlcykgdG9KU09OXSk7CiAgICAgaWYgKHBheWxvYWQpCi0g
ICAgICAgIHBhcmFtc09iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIFso
KnBheWxvYWQpIHRvSW5zcGVjdG9yT2JqZWN0XSk7CisgICAgICAgIHBhcmFtc09iamVjdC0+c2V0
VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIFsoKnBheWxvYWQpIHRvSlNPTl0pOwogICAg
IGlmIChzcWxFcnJvcikKLSAgICAgICAgcGFyYW1zT2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRl
cmFsKCJzcWxFcnJvciIpLCBbKCpzcWxFcnJvcikgdG9JbnNwZWN0b3JPYmplY3RdKTsKKyAgICAg
ICAgcGFyYW1zT2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBbKCpz
cWxFcnJvcikgdG9KU09OXSk7CiAgICAgaWYgKHNjcmVlbkNvbG9yKQogICAgICAgICBwYXJhbXNP
YmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksICgqc2NyZWVuQ29s
b3IpKTsKICAgICBpZiAoYWx0ZXJuYXRlQ29sb3JzKQotICAgICAgICBwYXJhbXNPYmplY3QtPnNl
dEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIGluc3BlY3RvclN0cmluZ0Fy
cmF5KCgqYWx0ZXJuYXRlQ29sb3JzKSkpOworICAgICAgICBwYXJhbXNPYmplY3QtPnNldEFycmF5
KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIHRvSlNPTlN0cmluZ0FycmF5KCgqYWx0
ZXJuYXRlQ29sb3JzKSkpOwogICAgIGlmIChwcmludENvbG9yKQogICAgICAgICBwYXJhbXNPYmpl
Y3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgKCpwcmludENvbG9yKSk7
CiAgICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBXVEZN
b3ZlKHBhcmFtc09iamVjdCkpOwpAQCAtODI2LDE0ICs4MjYsMTQgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBqc29uTWVzc2FnZSA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7CiAgICAganNvbk1lc3NhZ2UtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwo
Im1ldGhvZCIpLCBBU0NJSUxpdGVyYWwoIkRhdGFiYXNlLmRpZEV4ZWN1dGVOb09wdGlvbmFsUGFy
YW1ldGVycyIpKTsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBwYXJhbXNPYmplY3QgPSBKU09OOjpP
YmplY3Q6OmNyZWF0ZSgpOwotICAgIHBhcmFtc09iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJjb2x1bW5OYW1lcyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheShjb2x1bW5OYW1lcykpOworICAg
IHBhcmFtc09iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCB0b0pT
T05TdHJpbmdBcnJheShjb2x1bW5OYW1lcykpOwogICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgbm90ZXMpOwogICAgIHBhcmFtc09iamVjdC0+c2V0RG91
YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFtcCk7Ci0gICAgcGFyYW1zT2Jq
ZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgW3ZhbHVlcyB0b0luc3BlY3Rv
ck9iamVjdF0pOwotICAgIHBhcmFtc09iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXls
b2FkIiksIFtwYXlsb2FkIHRvSW5zcGVjdG9yT2JqZWN0XSk7Ci0gICAgcGFyYW1zT2JqZWN0LT5z
ZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBbc3FsRXJyb3IgdG9JbnNwZWN0b3JP
YmplY3RdKTsKKyAgICBwYXJhbXNPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVl
cyIpLCBbdmFsdWVzIHRvSlNPTl0pOworICAgIHBhcmFtc09iamVjdC0+c2V0VmFsdWUoQVNDSUlM
aXRlcmFsKCJwYXlsb2FkIiksIFtwYXlsb2FkIHRvSlNPTl0pOworICAgIHBhcmFtc09iamVjdC0+
c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgW3NxbEVycm9yIHRvSlNPTl0pOwog
ICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwg
c2NyZWVuQ29sb3IpOwotICAgIHBhcmFtc09iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJh
bHRlcm5hdGVDb2xvcnMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoYWx0ZXJuYXRlQ29sb3JzKSk7
CisgICAgcGFyYW1zT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9y
cyIpLCB0b0pTT05TdHJpbmdBcnJheShhbHRlcm5hdGVDb2xvcnMpKTsKICAgICBwYXJhbXNPYmpl
Y3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgcHJpbnRDb2xvcik7CiAg
ICAganNvbk1lc3NhZ2UtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInBhcmFtcyIpLCBXVEZNb3Zl
KHBhcmFtc09iamVjdCkpOwogICAgIHJvdXRlci5zZW5kRXZlbnQoanNvbk1lc3NhZ2UtPnRvSlNP
TlN0cmluZygpKTsKQEAgLTg5NSw3ICs4OTUsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2Vy
LCBUZXN0UHJvdG9jb2xQbGF0Zm9ybSkgewogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRl
ZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgOiBSV0lQcm90
b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlv
bmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilq
c29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKilt
ZXNzYWdlIGNvZGU6KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChu
b25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7CkBAIC0xMTYzLDkgKzExNjMsOSBAQCB1c2luZyBu
YW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9Ci0tIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopb2JqZWN0CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3Bl
Y3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSlNPTk9iamVjdDpbb2JqZWN0IHRvSlNPTl0uZ2V0
KCldKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMv
ZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0
CmluZGV4IGYwOTgzMDI3ZjFiZjJkYzY5ZTZmMDY2NGQzZGE5MGExNTljMzhhMTEuLmNkODFjYTE4
ZGQ4ZTA3ZjZkNmQ0ZGM4ZWJhMjI0M2EwOGJmNGU5NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9n
ZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTkzNCw3
ICs5MzQsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xQbGF0Zm9y
bSkgewogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNl
IFRlc3RQcm90b2NvbE5ldHdvcmsyTmV0d29ya0Vycm9yIDogUldJUHJvdG9jb2xKU09OT2JqZWN0
CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopcGF5bG9hZDsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJX
SVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIC0g
KGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihp
bnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0
cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3Np
Z24pIGludCBjb2RlOwpAQCAtMTE4Myw5ICsxMTgzLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNP
Tk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAorLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKW9iamVj
dAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pz
b25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pTT05dLmdldCgpXSkpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRv
d2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9w
dGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAppbmRleCBkMTEwZWVjOTBkYzQ5OTM1YjA0
YjQ3ZDA1NmEwYTMxZDgxYWU1NWE2Li42NDNmZjkzYjA5ZTliNGE4Yjc5ZDcxOTdlNDFlZDU3YjYw
NGFlNTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMu
anNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpz
b24tcmVzdWx0CkBAIC03OTcsNyArNzk3LDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlKSB7CiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGgg
OiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6
KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwotLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsK
Ky0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05P
YmplY3QgKilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZTooVGVzdFBy
b3RvY29sUnVudGltZUtleVBhdGhUeXBlKXR5cGU7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkg
KG5vbmF0b21pYywgYXNzaWduKSBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUgdHlwZTsK
IC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqc3Ry
aW5nOwpAQCAtMTA2NSw5ICsxMDY1LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAog
ICAgIHJldHVybiBzZWxmOwogfQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDoo
UldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKW9iamVjdAogewotICAg
IGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3Qg
dG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pTT05dLmdldCgpXSkpCiAgICAgICAgIHJldHVybiBu
aWw7CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTExMDUsMTIgKzExMDUsMTIgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClzZXRBcnJheTooTlNBcnJheS8qPE5TU3RyaW5n
PiovICopYXJyYXkKIHsKLSAgICBbc3VwZXIgc2V0SW5zcGVjdG9yQXJyYXk6aW5zcGVjdG9yU3Ry
aW5nQXJyYXkoYXJyYXkpIGZvcktleTpAImFycmF5Il07CisgICAgW3N1cGVyIHNldEpTT05BcnJh
eTp0b0pTT05TdHJpbmdBcnJheShhcnJheSkgZm9yS2V5OkAiYXJyYXkiXTsKIH0KIAogLSAoTlNB
cnJheS8qPE5TU3RyaW5nPiovICopYXJyYXkKIHsKLSAgICByZXR1cm4gb2JqY1N0cmluZ0FycmF5
KFtzdXBlciBpbnNwZWN0b3JBcnJheUZvcktleTpAImFycmF5Il0pOworICAgIHJldHVybiB0b09i
akNTdHJpbmdBcnJheShbc3VwZXIgSlNPTkFycmF5Rm9yS2V5OkAiYXJyYXkiXSk7CiB9CiAKIEBl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2Vu
ZXJpYy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0Cmlu
ZGV4IGZiODZiZWE3NzZhNWIyMDRmMzEzNDdkOWNjYTVhMzI5M2IzNTI1ZDcuLmI0ZDM1ZDU0NzY1
NmI4NDhjZTA4MWUxYjJlYmQ3ZDIyNTA4ZWQ2NDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdApAQCAtMTMzOSw3ICsxMzM5LDcgQEAgdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZURpcmVj
dGlvbmFsaXR5KSB7CiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBp
bnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVj
dAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqKXBheWxvYWQ7Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihS
V0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAt
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZToo
aW50KWNvZGU7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNT
dHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNz
aWduKSBpbnQgY29kZTsKQEAgLTEzNDgsNyArMTM0OCw3IEBAIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkgKCJkZWZhdWx0IikpKQogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQi
KSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5k
bGUgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxv
YWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwotLSAoaW5zdGFuY2V0
eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVj
dDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpT
T05PYmplY3QgKilqc29uT2JqZWN0OwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9t
aWMsIGNvcHkpIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXM7CiAvKiBvcHRpb25h
bCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPE5TU3RyaW5nPiovICpi
dXR0b25zOwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgVGVz
dFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5IGRp
cmVjdGlvbmFsaXR5OwpAQCAtMTM2Myw3ICsxMzYzLDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSAoImRlZmF1bHQiKSkpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGUgOiBSV0lQ
cm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGlj
dGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3Qg
Kilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIGJ1dHRvbnM6KE5TQXJyYXkvKjxOU1N0cmlu
Zz4qLyAqKWJ1dHRvbnMgZGlyZWN0aW9uYWxpdHk6KFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1l
dGVyQnVuZGxlRGlyZWN0aW9uYWxpdHkpZGlyZWN0aW9uYWxpdHkgbm90ZXM6KE5TU3RyaW5nICop
bm90ZXMgdGltZXN0YW1wOihkb3VibGUpdGltZXN0YW1wIHZhbHVlczooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopdmFsdWVzIHBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQg
ZXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvciBlcnJvckxpc3Q6KE5TQXJy
YXkvKjxUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0OwogLyogcmVxdWly
ZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAq
Y29sdW1uTmFtZXM7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
TlNBcnJheS8qPE5TU3RyaW5nPiovICpidXR0b25zOwpAQCAtMTM3OSw3ICsxMzc5LDcgQEAgX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBfX2F0dHJpYnV0ZV9fKCh2aXNp
YmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VPYmpl
Y3RXaXRoUHJvcGVydHlOYW1lQ29uZmxpY3RzIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+
ICopcGF5bG9hZDsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90
b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEludGVnZXI6KE5TU3RyaW5nICopaW50ZWdlciBhcnJheTooTlNTdHJp
bmcgKilhcnJheSBzdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHZhbHVlOihOU1N0cmluZyAqKXZh
bHVlIG9iamVjdDooTlNTdHJpbmcgKilvYmplY3Q7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmludGVnZXI7CiAvKiByZXF1aXJlZCAqLyBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKmFycmF5OwpAQCAtMTM5MSwxMyArMTM5
MSwxMyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xE
YXRhYmFzZUR1bW15T2JqZWN0IDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9h
ZDsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9i
amVjdCAqKWpzb25PYmplY3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVj
dDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIEBlbmQKIAogX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRl
c3RQYXJhbWV0ZXJCdW5kbGUgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2Fk
OwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopanNvbk9iamVjdDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0
OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoRGlyZWN0aW9uYWxpdHk6KFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGVEaXJl
Y3Rpb25hbGl0eSlkaXJlY3Rpb25hbGl0eSBidXR0b25zOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
KilidXR0b25zIGNvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1l
cyBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFs
dWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xK
U09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVy
cm9yOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgVGVzdFBy
b3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5IGRpcmVjdGlvbmFsaXR5Owog
LyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqYnV0dG9uczsKQEAgLTE3OTAsOSArMTc5MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilv
YmplY3QKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0
Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdFdpdGhKU09OT2JqZWN0OltvYmplY3QgdG9KU09OXS5nZXQoKV0pKQogICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xODYyLDkgKzE4NjIsOSBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9Ci0tIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilq
c29uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJv
dG9jb2xKU09OT2JqZWN0ICopb2JqZWN0CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCld
KSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSlNPTk9iamVjdDpbb2JqZWN0IHRv
SlNPTl0uZ2V0KCldKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBzZWxmOwpA
QCAtMTg3MiwyMiArMTg3MiwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2
b2lkKXNldENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcwog
ewotICAgIFtzdXBlciBzZXRJbnNwZWN0b3JBcnJheTppbnNwZWN0b3JTdHJpbmdBcnJheShjb2x1
bW5OYW1lcykgZm9yS2V5OkAiY29sdW1uTmFtZXMiXTsKKyAgICBbc3VwZXIgc2V0SlNPTkFycmF5
OnRvSlNPTlN0cmluZ0FycmF5KGNvbHVtbk5hbWVzKSBmb3JLZXk6QCJjb2x1bW5OYW1lcyJdOwog
fQogCiAtIChOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcwogewotICAgIHJldHVy
biBvYmpjU3RyaW5nQXJyYXkoW3N1cGVyIGluc3BlY3RvckFycmF5Rm9yS2V5OkAiY29sdW1uTmFt
ZXMiXSk7CisgICAgcmV0dXJuIHRvT2JqQ1N0cmluZ0FycmF5KFtzdXBlciBKU09OQXJyYXlGb3JL
ZXk6QCJjb2x1bW5OYW1lcyJdKTsKIH0KIAogLSAodm9pZClzZXRCdXR0b25zOihOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKilidXR0b25zCiB7Ci0gICAgW3N1cGVyIHNldEluc3BlY3RvckFycmF5Omlu
c3BlY3RvclN0cmluZ0FycmF5KGJ1dHRvbnMpIGZvcktleTpAImJ1dHRvbnMiXTsKKyAgICBbc3Vw
ZXIgc2V0SlNPTkFycmF5OnRvSlNPTlN0cmluZ0FycmF5KGJ1dHRvbnMpIGZvcktleTpAImJ1dHRv
bnMiXTsKIH0KIAogLSAoTlNBcnJheS8qPE5TU3RyaW5nPiovICopYnV0dG9ucwogewotICAgIHJl
dHVybiBvYmpjU3RyaW5nQXJyYXkoW3N1cGVyIGluc3BlY3RvckFycmF5Rm9yS2V5OkAiYnV0dG9u
cyJdKTsKKyAgICByZXR1cm4gdG9PYmpDU3RyaW5nQXJyYXkoW3N1cGVyIEpTT05BcnJheUZvcktl
eTpAImJ1dHRvbnMiXSk7CiB9CiAKIC0gKHZvaWQpc2V0RGlyZWN0aW9uYWxpdHk6KFRlc3RQcm90
b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eSlkaXJlY3Rp
b25hbGl0eQpAQCAtMTkzMCw3ICsxOTMwLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
ICAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9iamVjdCA9IFtzdXBlciBvYmplY3RGb3JLZXk6
QCJ2YWx1ZXMiXTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2Jq
ZWN0Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidmFsdWVzIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdl
dCgpXTsKKyAgICByZXR1cm4gW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRo
SlNPTk9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdIHRvSlNPTl0uZ2V0KCld
OwogfQogCiAtICh2b2lkKXNldFBheWxvYWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxv
YWQKQEAgLTE5NDMsNyArMTk0Myw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAg
UldJUHJvdG9jb2xKU09OT2JqZWN0ICpvYmplY3QgPSBbc3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5
bG9hZCJdOwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVy
biBbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6
W1tzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgp
XTsKKyAgICByZXR1cm4gW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSlNP
Tk9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpAInBheWxvYWQiXSB0b0pTT05dLmdldCgpXTsK
IH0KIAogLSAodm9pZClzZXRFcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9y
CkBAIC0xOTU2LDE4ICsxOTU2LDE4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAg
UldJUHJvdG9jb2xKU09OT2JqZWN0ICpvYmplY3QgPSBbc3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJy
b3IiXTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
W1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVj
dDpbW3N1cGVyIG9iamVjdEZvcktleTpAImVycm9yIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgp
XTsKKyAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0
aEpTT05PYmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJlcnJvciJdIHRvSlNPTl0uZ2V0KCld
OwogfQogCiAtICh2b2lkKXNldEVycm9yTGlzdDooTlNBcnJheS8qPFRlc3RQcm90b2NvbERhdGFi
YXNlRXJyb3I+Ki8gKillcnJvckxpc3QKIHsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9U
WVBFX0lOX0FSUkFZKGVycm9yTGlzdCwgW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgY2xhc3Nd
KTsKLSAgICBbc3VwZXIgc2V0SW5zcGVjdG9yQXJyYXk6aW5zcGVjdG9yT2JqZWN0QXJyYXkoZXJy
b3JMaXN0KSBmb3JLZXk6QCJlcnJvckxpc3QiXTsKKyAgICBbc3VwZXIgc2V0SlNPTkFycmF5OnRv
SlNPTk9iamVjdEFycmF5KGVycm9yTGlzdCkgZm9yS2V5OkAiZXJyb3JMaXN0Il07CiB9CiAKIC0g
KE5TQXJyYXkvKjxUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0CiB7Ci0g
ICAgcmV0dXJuIG9iamNBcnJheTxUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yPihbc3VwZXIgaW5z
cGVjdG9yQXJyYXlGb3JLZXk6QCJlcnJvckxpc3QiXSk7CisgICAgcmV0dXJuIHRvT2JqQ0FycmF5
PFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+KFtzdXBlciBKU09OQXJyYXlGb3JLZXk6QCJlcnJv
ckxpc3QiXSk7CiB9CiAKIEBlbmQKQEAgLTIwMTAsOSArMjAxMCw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KLS0gKGluc3RhbmNldHlwZSlpbml0
V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3Qg
KilvYmplY3QKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2Jq
ZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdFdpdGhKU09OT2JqZWN0OltvYmplY3QgdG9KU09OXS5nZXQoKV0pKQog
ICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0yMDQ3LDIyICsyMDQ3
LDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKHZvaWQpc2V0Q29sdW1uTmFt
ZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzCiB7Ci0gICAgW3N1cGVyIHNl
dEluc3BlY3RvckFycmF5Omluc3BlY3RvclN0cmluZ0FycmF5KGNvbHVtbk5hbWVzKSBmb3JLZXk6
QCJjb2x1bW5OYW1lcyJdOworICAgIFtzdXBlciBzZXRKU09OQXJyYXk6dG9KU09OU3RyaW5nQXJy
YXkoY29sdW1uTmFtZXMpIGZvcktleTpAImNvbHVtbk5hbWVzIl07CiB9CiAKIC0gKE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzCiB7Ci0gICAgcmV0dXJuIG9iamNTdHJpbmdBcnJh
eShbc3VwZXIgaW5zcGVjdG9yQXJyYXlGb3JLZXk6QCJjb2x1bW5OYW1lcyJdKTsKKyAgICByZXR1
cm4gdG9PYmpDU3RyaW5nQXJyYXkoW3N1cGVyIEpTT05BcnJheUZvcktleTpAImNvbHVtbk5hbWVz
Il0pOwogfQogCiAtICh2b2lkKXNldEJ1dHRvbnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWJ1
dHRvbnMKIHsKLSAgICBbc3VwZXIgc2V0SW5zcGVjdG9yQXJyYXk6aW5zcGVjdG9yU3RyaW5nQXJy
YXkoYnV0dG9ucykgZm9yS2V5OkAiYnV0dG9ucyJdOworICAgIFtzdXBlciBzZXRKU09OQXJyYXk6
dG9KU09OU3RyaW5nQXJyYXkoYnV0dG9ucykgZm9yS2V5OkAiYnV0dG9ucyJdOwogfQogCiAtIChO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilidXR0b25zCiB7Ci0gICAgcmV0dXJuIG9iamNTdHJpbmdB
cnJheShbc3VwZXIgaW5zcGVjdG9yQXJyYXlGb3JLZXk6QCJidXR0b25zIl0pOworICAgIHJldHVy
biB0b09iakNTdHJpbmdBcnJheShbc3VwZXIgSlNPTkFycmF5Rm9yS2V5OkAiYnV0dG9ucyJdKTsK
IH0KIAogLSAodm9pZClzZXREaXJlY3Rpb25hbGl0eTooVGVzdFByb3RvY29sRGF0YWJhc2VQYXJh
bWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eSlkaXJlY3Rpb25hbGl0eQpAQCAtMjEwNSw3ICsyMTA1
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKm9iamVjdCA9IFtzdXBlciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMiXTsKICAgICBpZiAoIW9i
amVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tSV0lQcm90b2NvbEpTT05P
YmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltbc3VwZXIgb2JqZWN0Rm9yS2V5
OkAidmFsdWVzIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXTsKKyAgICByZXR1cm4gW1tSV0lQ
cm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDpbW3N1cGVyIG9iamVj
dEZvcktleTpAInZhbHVlcyJdIHRvSlNPTl0uZ2V0KCldOwogfQogCiAtICh2b2lkKXNldFBheWxv
YWQ6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXBheWxvYWQKQEAgLTIxMTgsNyArMjExOCw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpv
YmplY3QgPSBbc3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdOwogICAgIGlmICghb2JqZWN0
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1JXSVByb3RvY29sSlNPTk9iamVj
dCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJw
YXlsb2FkIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXTsKKyAgICByZXR1cm4gW1tSV0lQcm90
b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDpbW3N1cGVyIG9iamVjdEZv
cktleTpAInBheWxvYWQiXSB0b0pTT05dLmdldCgpXTsKIH0KIAogLSAodm9pZClzZXRFcnJvcjoo
VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yCkBAIC0yMTMxLDE4ICsyMTMxLDE4IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpv
YmplY3QgPSBbc3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJyb3IiXTsKICAgICBpZiAoIW9iamVjdCkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVy
cm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpA
ImVycm9yIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXTsKKyAgICByZXR1cm4gW1tUZXN0UHJv
dG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6W1tzdXBlciBvYmpl
Y3RGb3JLZXk6QCJlcnJvciJdIHRvSlNPTl0uZ2V0KCldOwogfQogCiAtICh2b2lkKXNldEVycm9y
TGlzdDooTlNBcnJheS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3QK
IHsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFX0lOX0FSUkFZKGVycm9yTGlzdCwg
W1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgY2xhc3NdKTsKLSAgICBbc3VwZXIgc2V0SW5zcGVj
dG9yQXJyYXk6aW5zcGVjdG9yT2JqZWN0QXJyYXkoZXJyb3JMaXN0KSBmb3JLZXk6QCJlcnJvckxp
c3QiXTsKKyAgICBbc3VwZXIgc2V0SlNPTkFycmF5OnRvSlNPTk9iamVjdEFycmF5KGVycm9yTGlz
dCkgZm9yS2V5OkAiZXJyb3JMaXN0Il07CiB9CiAKIC0gKE5TQXJyYXkvKjxUZXN0UHJvdG9jb2xE
YXRhYmFzZUVycm9yPiovICopZXJyb3JMaXN0CiB7Ci0gICAgcmV0dXJuIG9iamNBcnJheTxUZXN0
UHJvdG9jb2xEYXRhYmFzZUVycm9yPihbc3VwZXIgaW5zcGVjdG9yQXJyYXlGb3JLZXk6QCJlcnJv
ckxpc3QiXSk7CisgICAgcmV0dXJuIHRvT2JqQ0FycmF5PFRlc3RQcm90b2NvbERhdGFiYXNlRXJy
b3I+KFtzdXBlciBKU09OQXJyYXlGb3JLZXk6QCJlcnJvckxpc3QiXSk7CiB9CiAKIEBlbmQKQEAg
LTIxNzEsOSArMjE3MSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1
cm4gc2VsZjsKIH0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3Rv
Y29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilvYmplY3QKIHsKLSAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVj
dG9yT2JqZWN0XS5nZXQoKV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhKU09O
T2JqZWN0OltvYmplY3QgdG9KU09OXS5nZXQoKV0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAg
ICAgcmV0dXJuIHNlbGY7CkBAIC0yMjYwLDkgKzIyNjAsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5z
cGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhK
U09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0CistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopb2Jq
ZWN0CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpb
anNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRXaXRoSlNPTk9iamVjdDpbb2JqZWN0IHRvSlNPTl0uZ2V0KCldKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBzZWxmOwpAQCAtMjMwNiw5ICsyMzA2LDkgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQotLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNv
bk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKW9iamVjdAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdp
dGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkp
CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pT
T05dLmdldCgpXSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gc2VsZjsKQEAg
LTIzNTAsMjIgKzIzNTAsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAodm9p
ZClzZXRCdXR0b25zOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilidXR0b25zCiB7Ci0gICAgW3N1
cGVyIHNldEluc3BlY3RvckFycmF5Omluc3BlY3RvclN0cmluZ0FycmF5KGJ1dHRvbnMpIGZvcktl
eTpAImJ1dHRvbnMiXTsKKyAgICBbc3VwZXIgc2V0SlNPTkFycmF5OnRvSlNPTlN0cmluZ0FycmF5
KGJ1dHRvbnMpIGZvcktleTpAImJ1dHRvbnMiXTsKIH0KIAogLSAoTlNBcnJheS8qPE5TU3RyaW5n
PiovICopYnV0dG9ucwogewotICAgIHJldHVybiBvYmpjU3RyaW5nQXJyYXkoW3N1cGVyIGluc3Bl
Y3RvckFycmF5Rm9yS2V5OkAiYnV0dG9ucyJdKTsKKyAgICByZXR1cm4gdG9PYmpDU3RyaW5nQXJy
YXkoW3N1cGVyIEpTT05BcnJheUZvcktleTpAImJ1dHRvbnMiXSk7CiB9CiAKIC0gKHZvaWQpc2V0
Q29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzCiB7Ci0gICAg
W3N1cGVyIHNldEluc3BlY3RvckFycmF5Omluc3BlY3RvclN0cmluZ0FycmF5KGNvbHVtbk5hbWVz
KSBmb3JLZXk6QCJjb2x1bW5OYW1lcyJdOworICAgIFtzdXBlciBzZXRKU09OQXJyYXk6dG9KU09O
U3RyaW5nQXJyYXkoY29sdW1uTmFtZXMpIGZvcktleTpAImNvbHVtbk5hbWVzIl07CiB9CiAKIC0g
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzCiB7Ci0gICAgcmV0dXJuIG9iamNT
dHJpbmdBcnJheShbc3VwZXIgaW5zcGVjdG9yQXJyYXlGb3JLZXk6QCJjb2x1bW5OYW1lcyJdKTsK
KyAgICByZXR1cm4gdG9PYmpDU3RyaW5nQXJyYXkoW3N1cGVyIEpTT05BcnJheUZvcktleTpAImNv
bHVtbk5hbWVzIl0pOwogfQogCiAtICh2b2lkKXNldE5vdGVzOihOU1N0cmluZyAqKW5vdGVzCkBA
IC0yMzk4LDcgKzIzOTgsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqb2JqZWN0ID0gW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJd
OwogICAgIGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1JX
SVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBl
ciBvYmplY3RGb3JLZXk6QCJ2YWx1ZXMiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAg
IHJldHVybiBbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0
Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidmFsdWVzIl0gdG9KU09OXS5nZXQoKV07CiB9CiAKIC0g
KHZvaWQpc2V0UGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZApAQCAtMjQx
MSw3ICsyNDExLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBSV0lQcm90b2Nv
bEpTT05PYmplY3QgKm9iamVjdCA9IFtzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl07CiAg
ICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbUldJUHJv
dG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9i
amVjdEZvcktleTpAInBheWxvYWQiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJl
dHVybiBbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0Oltb
c3VwZXIgb2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdIHRvSlNPTl0uZ2V0KCldOwogfQogCiAtICh2
b2lkKXNldEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IKQEAgLTI0MjQs
NyArMjQyNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgUldJUHJvdG9jb2xK
U09OT2JqZWN0ICpvYmplY3QgPSBbc3VwZXIgb2JqZWN0Rm9yS2V5OkAiZXJyb3IiXTsKICAgICBp
ZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tUZXN0UHJvdG9j
b2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9i
amVjdEZvcktleTpAImVycm9yIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXTsKKyAgICByZXR1
cm4gW1tUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6
W1tzdXBlciBvYmplY3RGb3JLZXk6QCJlcnJvciJdIHRvSlNPTl0uZ2V0KCldOwogfQogCiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVz
dWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdAppbmRl
eCBiMzYwMGZjZmViNjE0ZmViMDQzYzY0ZDc4MDBhYjIxYTY5NjQ3MThkLi41NGU0MmI1NDhiNTUx
YzJhZTEwYmQ1NzZjNzNlYzhlNGQ2YTAxN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXJlcXVp
cmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5n
LXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTExMDUsNyArMTEwNSw3IEBAIHR5cGVkZWYg
TlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKSB7CiBfX2F0
dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3Rv
Y29sVGVzdFR5cGVOZWVkaW5nQ2FzdCA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBh
eWxvYWQ7Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpT
T05PYmplY3QgKilqc29uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xP
YmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIG51bWJlcjooaW50KW51bWJlciBh
bmltYWxzOihUZXN0UHJvdG9jb2xUZXN0Q2FzdGVkQW5pbWFscylhbmltYWxzIGlkZW50aWZpZXI6
KGludClpZGVudGlmaWVyIHRyZWU6KFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICop
dHJlZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmlu
ZyAqc3RyaW5nOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikg
aW50IG51bWJlcjsKQEAgLTExMTcsMTQgKzExMTcsMTQgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSAoImRlZmF1bHQiKSkpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgOiBSV0lQcm90
b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlv
bmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilq
c29uT2JqZWN0OwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIHJldGFpbikg
VGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDIgKm9iajsKIEBlbmQKIAogX19hdHRyaWJ1
dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRl
c3RSZWN1cnNpdmVPYmplY3QyIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9h
ZDsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9i
amVjdCAqKWpzb25PYmplY3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVj
dDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIC8qIG9wdGlvbmFsICovIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmpl
Y3QxICpvYmo7CiBAZW5kCiAKQEAgLTE0NzUsOSArMTQ3NSw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJ
bnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKKy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilv
YmplY3QKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0
Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgIGlmICghKHNlbGYg
PSBbc3VwZXIgaW5pdFdpdGhKU09OT2JqZWN0OltvYmplY3QgdG9KU09OXS5nZXQoKV0pKQogICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xNTUwLDcgKzE1NTAsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAq
b2JqZWN0ID0gW3N1cGVyIG9iamVjdEZvcktleTpAInRyZWUiXTsKICAgICBpZiAoIW9iamVjdCkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xUZXN0UmVjdXJz
aXZlT2JqZWN0MSBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RG
b3JLZXk6QCJ0cmVlIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXTsKKyAgICByZXR1cm4gW1tU
ZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0
Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidHJlZSJdIHRvSlNPTl0uZ2V0KCldOwogfQogCiBAZW5k
CkBAIC0xNTY2LDkgKzE1NjYsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAg
cmV0dXJuIHNlbGY7CiB9Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQ
cm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQ
cm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopb2JqZWN0CiB7Ci0gICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0lu
c3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRo
SlNPTk9iamVjdDpbb2JqZWN0IHRvSlNPTl0uZ2V0KCldKSkKICAgICAgICAgcmV0dXJuIG5pbDsK
IAogICAgIHJldHVybiBzZWxmOwpAQCAtMTU4NCw3ICsxNTg0LDcgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKICAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9iamVjdCA9IFtzdXBlciBv
YmplY3RGb3JLZXk6QCJvYmoiXTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiBhbGxvY10g
aW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJvYmoiXSB0b0lu
c3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJldHVybiBbW1Rlc3RQcm90b2NvbFRlc3RSZWN1
cnNpdmVPYmplY3QyIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6W1tzdXBlciBvYmplY3RGb3JL
ZXk6QCJvYmoiXSB0b0pTT05dLmdldCgpXTsKIH0KIAogQGVuZApAQCAtMTYwMCw5ICsxNjAwLDkg
QEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQotLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICop
anNvbk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVBy
b3RvY29sSlNPTk9iamVjdCAqKW9iamVjdAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgp
XSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0
b0pTT05dLmdldCgpXSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gc2VsZjsK
QEAgLTE2MTgsNyArMTYxOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgUldJ
UHJvdG9jb2xKU09OT2JqZWN0ICpvYmplY3QgPSBbc3VwZXIgb2JqZWN0Rm9yS2V5OkAib2JqIl07
CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbVGVz
dFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2Jq
ZWN0Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAib2JqIl0gdG9JbnNwZWN0b3JPYmplY3RdLmdldCgp
XTsKKyAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSBhbGxvY10g
aW5pdFdpdGhKU09OT2JqZWN0Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAib2JqIl0gdG9KU09OXS5n
ZXQoKV07CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXdpdGgtb3Blbi1wYXJhbWV0ZXJzLmpzb24t
cmVzdWx0CmluZGV4IGIxNDM5Y2ZkZjc1YjZiOWFiMGZiYWJhMGE5YWM3ZmE1Nzg2MTk2Y2IuLjlk
N2JhYzkwYzhkMDI0Y2MzOGM0MDMzNWQ1YTljZmMxZTJjNzAzMzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVk
L3R5cGUtd2l0aC1vcGVuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS13
aXRoLW9wZW4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAtODAwLDcgKzgwMCw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sVGVz
dE5vT3BlblBhcmFtZXRlcnMgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2Fk
OwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopanNvbk9iamVjdDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0
OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoT25lOihkb3VibGUpb25lIHR3bzooZG91YmxlKXR3bzsKIC8qIHJlcXVpcmVkICovIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGRvdWJsZSBvbmU7CiAvKiByZXF1aXJlZCAqLyBA
cHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBkb3VibGUgdHdvOwpAQCAtODA5LDcgKzgwOSw3
IEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogX19hdHRyaWJ1dGVf
XygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRlc3RP
cGVuUGFyYW1ldGVycyA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7Ci0t
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3Qg
Kilqc29uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJX
SVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhBbHBoYTooZG91YmxlKWFscGhhIGJldGE6KGRvdWJsZSliZXRhOwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgZG91YmxlIGFscGhhOwogLyogcmVxdWlyZWQg
Ki8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgZG91YmxlIGJldGE7CkBAIC0xMDU3LDkg
KzEwNTcsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7
CiB9Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05P
YmplY3QgKilqc29uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVj
dDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopb2JqZWN0CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVj
dF0uZ2V0KCldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSlNPTk9iamVjdDpb
b2JqZWN0IHRvSlNPTl0uZ2V0KCldKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVy
biBzZWxmOwpAQCAtMTExMyw5ICsxMTEzLDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogICAgIHJldHVybiBzZWxmOwogfQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVj
dDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKW9iamVjdAogewot
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmpl
Y3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pTT05dLmdldCgpXSkpCiAgICAgICAgIHJldHVy
biBuaWw7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0
aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25zLXdpdGgtbWFjLXBsYXRm
b3JtLmpzb24tcmVzdWx0CmluZGV4IGQzMmExZDc3ZDkwYjNjMjVkYzIyMDk0NDdlYTk0MDljNTI4
YzQ0OWIuLmRmZjlmYzk5NzU3NDdhOTJlMGYyN2IwYmExYWQ5NGM4OWEwZDdlMzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9tYWMvZXhw
ZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9k
ZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdApAQCAtOTA3LDcgKzkwNyw3
IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiBf
X2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFBy
b3RvY29sTmV0d29ya0Vycm9yIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9h
ZDsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9i
amVjdCAqKWpzb25PYmplY3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVj
dDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJl
cXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsK
IC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpA
QCAtMTE1Niw5ICsxMTU2LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogICAgIHJl
dHVybiBzZWxmOwogfQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJv
dG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJv
dG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKW9iamVjdAogewotICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9JbnNw
ZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEpT
T05PYmplY3Q6W29iamVjdCB0b0pTT05dLmdldCgpXSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAK
ICAgICByZXR1cm4gc2VsZjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>327797</attachid>
            <date>2017-11-28 15:05:39 -0800</date>
            <delta_ts>2017-11-28 15:35:35 -0800</delta_ts>
            <desc>Rebased Patch</desc>
            <filename>bug-179696-20171128150538.patch</filename>
            <type>text/plain</type>
            <size>66419</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI1MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
M2MyN2FjYTllNjRjM2E0MTM3ODg1ODA5YzU0NDlhOWI2YzM3MjU2Li5jODgwNTZmN2VhM2QwODk1
NDk2NzZlYzg1Njg4OTg2YzRjMzIxYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorIDIwMTctMTEtMjggIEJyaWFuIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgW0NvY29hXSBDbGVhbiB1cCBuYW1lcyBvZiBjb252ZXJzaW9uIG1ldGhvZHMgYWZ0
ZXIgcmVuYW1pbmcgSW5zcGVjdG9yVmFsdWUgdG8gSlNPTjo6VmFsdWUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3OTY5NgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9vYmpjX2hlYWRlci5weToKKyAgICAgICAgKE9iakNIZWFkZXJHZW5lcmF0
b3IuX2dlbmVyYXRlX3R5cGVfaW50ZXJmYWNlKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0
cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHk6
CisgICAgICAgIChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLmdlbmVy
YXRlX3R5cGVfaW1wbGVtZW50YXRpb24pOgorICAgICAgICAoT2JqQ1Byb3RvY29sVHlwZXNJbXBs
ZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfaW5pdF9tZXRob2RfZm9yX3Byb3RvY29sX29i
amVjdCk6CisgICAgICAgIChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9y
Ll9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfanNvbl9vYmplY3QpOiBEZWxldGVkLgorICAgICAg
ICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHk6CisgICAgICAg
IChPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfZm9yX3Jhd19uYW1lKToKKyAgICAgICAgKE9i
akNHZW5lcmF0b3Iub2JqY19wcm90b2NvbF9leHBvcnRfZXhwcmVzc2lvbl9mb3JfdmFyaWFibGUp
OgorICAgICAgICAoT2JqQ0dlbmVyYXRvci5vYmpjX3Byb3RvY29sX2V4cG9ydF9leHByZXNzaW9u
X2Zvcl92YXJpYWJsZS5pcyk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfcHJvdG9jb2xf
aW1wb3J0X2V4cHJlc3Npb25fZm9yX3ZhcmlhYmxlKToKKyAgICAgICAgKE9iakNHZW5lcmF0b3Iu
b2JqY19wcm90b2NvbF9pbXBvcnRfZXhwcmVzc2lvbl9mb3JfdmFyaWFibGUuaXMpOgorICAgICAg
ICAoT2JqQ0dlbmVyYXRvci5vYmpjX3RvX3Byb3RvY29sX2V4cHJlc3Npb25fZm9yX21lbWJlci5p
cyk6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLm9iamNfdG9fcHJvdG9jb2xfZXhwcmVzc2lvbl9m
b3JfbWVtYmVyKToKKyAgICAgICAgKE9iakNHZW5lcmF0b3IucHJvdG9jb2xfdG9fb2JqY19leHBy
ZXNzaW9uX2Zvcl9tZW1iZXIuaXMpOgorICAgICAgICAoT2JqQ0dlbmVyYXRvci5wcm90b2NvbF90
b19vYmpjX2V4cHJlc3Npb25fZm9yX21lbWJlcik6CisgICAgICAgIChPYmpDR2VuZXJhdG9yLnBy
b3RvY29sX3RvX29iamNfY29kZV9ibG9ja19mb3Jfb2JqZWN0X21lbWJlcik6CisgICAgICAgIChP
YmpDR2VuZXJhdG9yLm9iamNfc2V0dGVyX21ldGhvZF9mb3JfbWVtYmVyX2ludGVybmFsKToKKyAg
ICAgICAgKE9iakNHZW5lcmF0b3Iub2JqY19nZXR0ZXJfbWV0aG9kX2Zvcl9tZW1iZXJfaW50ZXJu
YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZp
bml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0
cmlidXRlLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdDoK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2dlbmVy
YXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFs
LXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGlu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS13aXRoLW9wZW4tcGFy
YW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9t
YWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQ6CisK
IDIwMTctMTEtMjcgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgogCiAgICAgICAg
IEphdmFTY3JpcHQgcmVzdCBmdW5jdGlvbiBwYXJhbWV0ZXIgd2l0aCBuZWdhdGl2ZSBpbmRleCBs
ZWFkcyB0byBiYWQgREZHIGFic3RyYWN0IGludGVycHJldGF0aW9uCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CmluZGV4IDgwMWY0MGE4NmIyNjRhYjRmYzg3MjVk
Mzk4NDVhOTk5M2FkYWMyMjguLmE4MzQzZTZlNjNlZWQ0OWJkZGU3YjU3MmE1ZjcxN2YyNWQ4Y2Qx
YWMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9j
b2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CkBAIC0x
NjYsMTAgKzE2NiwxMCBAQCBjbGFzcyBPYmpDSGVhZGVyR2VuZXJhdG9yKE9iakNHZW5lcmF0b3Ip
OgogICAgICAgICBsaW5lcy5hcHBlbmQoJ19fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKScpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnQGludGVyZmFjZSAlcyA6ICVzSlNPTk9i
amVjdCcgJSAob2JqY19uYW1lLCBPYmpDR2VuZXJhdG9yLk9CSkNfU1RBVElDX1BSRUZJWCkpCiAK
LSAgICAgICAgIyBUaGUgaW5pdGlhbGl6ZXJzIHRoYXQgdGFrZSBhIHBheWxvYWQgb3IgaW5zcGVj
dG9yIG9iamVjdCBhcmUgb25seSBuZWVkZWQgYnkgdGhlIGZyb250ZW5kLgorICAgICAgICAjIFRo
ZSBpbml0aWFsaXplcnMgdGhhdCB0YWtlIGEgcGF5bG9hZCBvciBwcm90b2NvbCBvYmplY3QgYXJl
IG9ubHkgbmVlZGVkIGJ5IHRoZSBmcm9udGVuZC4KICAgICAgICAgaWYgc2VsZi5nZXRfZ2VuZXJh
dG9yX3NldHRpbmcoJ2dlbmVyYXRlX2Zyb250ZW5kJywgRmFsc2UpOgogICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCctIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsnKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCct
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3Qg
Kilqc29uT2JqZWN0OycpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2Jq
ZWN0OycpCiAKICAgICAgICAgcmVxdWlyZWRfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVy
OiBub3QgbWVtYmVyLmlzX29wdGlvbmFsLCBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCiAgICAg
ICAgIG9wdGlvbmFsX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbWVtYmVyLmlzX29w
dGlvbmFsLCBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3Rv
Y29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1l
bnRhdGlvbi5weQppbmRleCAxYTY2NDg4OTU1YjFmMWQwOWZiNmIxNTQyZDhjNjllOWE3YTY1YjNh
Li4wYmE1NWVlOGQ0MThhYmQ1N2JiMTE5ZjBkYzNmNDQ0NzA0YzhkMTE3IDEwMDc1NQotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9v
YmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xf
dHlwZXNfaW1wbGVtZW50YXRpb24ucHkKQEAgLTk0LDcgKzk0LDcgQEAgY2xhc3MgT2JqQ1Byb3Rv
Y29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICAgICAg
aWYgc2VsZi5nZXRfZ2VuZXJhdG9yX3NldHRpbmcoJ2dlbmVyYXRlX2Zyb250ZW5kJywgRmFsc2Up
OgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQogICAgICAgICAgICAgbGluZXMuYXBwZW5k
KHNlbGYuX2dlbmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9wYXlsb2FkKGRvbWFpbiwgZGVjbGFyYXRp
b24pKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKHNlbGYuX2dlbmVyYXRlX2luaXRfbWV0aG9k
X2Zvcl9qc29uX29iamVjdChkb21haW4sIGRlY2xhcmF0aW9uKSkKKyAgICAgICAgICAgIGxpbmVz
LmFwcGVuZChzZWxmLl9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfcHJvdG9jb2xfb2JqZWN0KGRv
bWFpbiwgZGVjbGFyYXRpb24pKQogICAgICAgICByZXF1aXJlZF9tZW1iZXJzID0gZmlsdGVyKGxh
bWJkYSBtZW1iZXI6IG5vdCBtZW1iZXIuaXNfb3B0aW9uYWwsIGRlY2xhcmF0aW9uLnR5cGVfbWVt
YmVycykKICAgICAgICAgaWYgcmVxdWlyZWRfbWVtYmVyczoKICAgICAgICAgICAgIGxpbmVzLmFw
cGVuZCgnJykKQEAgLTEwOCwxMSArMTA4LDExIEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVzSW1w
bGVtZW50YXRpb25HZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnQGVuZCcpCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCiAKLSAgICBkZWYgX2dl
bmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9qc29uX29iamVjdChzZWxmLCBkb21haW4sIGRlY2xhcmF0
aW9uKToKKyAgICBkZWYgX2dlbmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9wcm90b2NvbF9vYmplY3Qo
c2VsZiwgZG9tYWluLCBkZWNsYXJhdGlvbik6CiAgICAgICAgIGxpbmVzID0gW10KLSAgICAgICAg
bGluZXMuYXBwZW5kKCctIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90
b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0JykKKyAgICAgICAgbGluZXMuYXBwZW5kKCctIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0
ICopb2JqZWN0JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd7JykKLSAgICAgICAgbGluZXMuYXBw
ZW5kKCcgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNv
bk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSknKQorICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSlNPTk9iamVjdDpbb2JqZWN0IHRv
SlNPTk9iamVjdF0uZ2V0KCldKSknKQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgcmV0
dXJuIG5pbDsnKQogICAgICAgICBsaW5lcy5hcHBlbmQoJycpCiAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnICAgIHJldHVybiBzZWxmOycpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5Cmlu
ZGV4IDk0NGQyZTYxNDE0MzE4OWFiYmJjOGI2M2I3MjFjMjBiZTQ3MmViNzIuLjY5OTAyZmIzNTlj
OTEyNDg2NDg0ZWZhM2RiOTNkNDA3OTk0ODg3N2QgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2Vu
ZXJhdG9yLnB5CkBAIC0yNDcsNyArMjQ3LDcgQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0
b3IpOgogICAgICAgICBpZiByYXdfbmFtZSBpcyAnYm9vbGVhbic6CiAgICAgICAgICAgICByZXR1
cm4gJ2Jvb2wnCiAgICAgICAgIGlmIHJhd19uYW1lIGluIFsnYW55JywgJ29iamVjdCddOgotICAg
ICAgICAgICAgcmV0dXJuICdJbnNwZWN0b3JPYmplY3QnCisgICAgICAgICAgICByZXR1cm4gJ0pT
T046Ok9iamVjdCcKICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIEBzdGF0aWNtZXRob2QKQEAg
LTM3MSwxOSArMzcxLDE5IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAg
ICAgICAgICAgICByZXR1cm4gJ3RvUHJvdG9jb2xTdHJpbmcoJXMpJyAlIHZhcl9uYW1lCiAgICAg
ICAgICAgICByZXR1cm4gdmFyX25hbWUKICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVD
YXRlZ29yeS5PYmplY3Q6Ci0gICAgICAgICAgICByZXR1cm4gJ1slcyB0b0luc3BlY3Rvck9iamVj
dF0nICUgdmFyX25hbWUKKyAgICAgICAgICAgIHJldHVybiAnWyVzIHRvSlNPTk9iamVjdF0nICUg
dmFyX25hbWUKICAgICAgICAgaWYgY2F0ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5BcnJheToK
ICAgICAgICAgICAgIHByb3RvY29sX3R5cGUgPSBPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5cGVf
Zm9yX3R5cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgb2JqY19jbGFzcyA9
IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZSh2YXJfdHlwZS5lbGVtZW50X3R5cGUpCiAgICAgICAg
ICAgICBpZiBwcm90b2NvbF90eXBlID09ICdJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJp
bmc+JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2luc3BlY3RvclN0cmluZ0FycmF5QXJyYXko
JXMpJyAlIHZhcl9uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuICd0b0pTT05TdHJpbmdBcnJh
eUFycmF5KCVzKScgJSB2YXJfbmFtZQogICAgICAgICAgICAgaWYgcHJvdG9jb2xfdHlwZSBpcyAn
U3RyaW5nJyBhbmQgb2JqY19jbGFzcyBpcyAnTlNTdHJpbmcnOgotICAgICAgICAgICAgICAgIHJl
dHVybiAnaW5zcGVjdG9yU3RyaW5nQXJyYXkoJXMpJyAlIHZhcl9uYW1lCisgICAgICAgICAgICAg
ICAgcmV0dXJuICd0b0pTT05TdHJpbmdBcnJheSglcyknICUgdmFyX25hbWUKICAgICAgICAgICAg
IGlmIHByb3RvY29sX3R5cGUgaXMgJ2ludCcgYW5kIG9iamNfY2xhc3MgaXMgJ05TTnVtYmVyJzoK
LSAgICAgICAgICAgICAgICByZXR1cm4gJ2luc3BlY3RvckludGVnZXJBcnJheSglcyknICUgdmFy
X25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3RvSlNPTkludGVnZXJBcnJheSglcyknICUg
dmFyX25hbWUKICAgICAgICAgICAgIGlmIHByb3RvY29sX3R5cGUgaXMgJ2RvdWJsZScgYW5kIG9i
amNfY2xhc3MgaXMgJ05TTnVtYmVyJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gJ2luc3BlY3Rv
ckRvdWJsZUFycmF5KCVzKScgJSB2YXJfbmFtZQotICAgICAgICAgICAgcmV0dXJuICdpbnNwZWN0
b3JPYmplY3RBcnJheSglcyknICUgdmFyX25hbWUKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3Rv
SlNPTkRvdWJsZUFycmF5KCVzKScgJSB2YXJfbmFtZQorICAgICAgICAgICAgcmV0dXJuICd0b0pT
T05PYmplY3RBcnJheSglcyknICUgdmFyX25hbWUKIAogICAgIGRlZiBvYmpjX3Byb3RvY29sX2lt
cG9ydF9leHByZXNzaW9uX2Zvcl9tZW1iZXIoc2VsZiwgbmFtZSwgZGVjbGFyYXRpb24sIG1lbWJl
cik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UobWVtYmVyLnR5cGUsIEVudW1UeXBlKToKQEAgLTQw
NSwxNCArNDA1LDE0IEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAg
ICAgIHJldHVybiB2YXJfbmFtZQogICAgICAgICBpZiBjYXRlZ29yeSBpcyBPYmpDVHlwZUNhdGVn
b3J5Lk9iamVjdDoKICAgICAgICAgICAgIG9iamNfY2xhc3MgPSBzZWxmLm9iamNfY2xhc3NfZm9y
X3R5cGUodmFyX3R5cGUpCi0gICAgICAgICAgICByZXR1cm4gJ1tbWyVzIGFsbG9jXSBpbml0V2l0
aEluc3BlY3Rvck9iamVjdDolc10gYXV0b3JlbGVhc2VdJyAlIChvYmpjX2NsYXNzLCB2YXJfbmFt
ZSkKKyAgICAgICAgICAgIHJldHVybiAnW1tbJXMgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDol
c10gYXV0b3JlbGVhc2VdJyAlIChvYmpjX2NsYXNzLCB2YXJfbmFtZSkKICAgICAgICAgaWYgY2F0
ZWdvcnkgaXMgT2JqQ1R5cGVDYXRlZ29yeS5BcnJheToKICAgICAgICAgICAgIG9iamNfY2xhc3Mg
PSBzZWxmLm9iamNfY2xhc3NfZm9yX3R5cGUodmFyX3R5cGUuZWxlbWVudF90eXBlKQogICAgICAg
ICAgICAgaWYgb2JqY19jbGFzcyBpcyAnTlNTdHJpbmcnOgotICAgICAgICAgICAgICAgIHJldHVy
biAnb2JqY1N0cmluZ0FycmF5KCVzKScgJSB2YXJfbmFtZQorICAgICAgICAgICAgICAgIHJldHVy
biAndG9PYmpDU3RyaW5nQXJyYXkoJXMpJyAlIHZhcl9uYW1lCiAgICAgICAgICAgICBpZiBvYmpj
X2NsYXNzIGlzICdOU051bWJlcic6ICAjIEZJWE1FOiBJbnRlZ2VyIG9yIERvdWJsZT8KLSAgICAg
ICAgICAgICAgICByZXR1cm4gJ29iamNJbnRlZ2VyQXJyYXkoJXMpJyAlIHZhcl9uYW1lCi0gICAg
ICAgICAgICByZXR1cm4gJ29iamNBcnJheTwlcz4oJXMpJyAlIChvYmpjX2NsYXNzLCB2YXJfbmFt
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gJ3RvT2JqQ0ludGVnZXJBcnJheSglcyknICUgdmFy
X25hbWUKKyAgICAgICAgICAgIHJldHVybiAndG9PYmpDQXJyYXk8JXM+KCVzKScgJSAob2JqY19j
bGFzcywgdmFyX25hbWUpCiAKICAgICAjIE9iakMgPC0+IEpTT04gb2JqZWN0IGNvbnZlcnNpb24g
Zm9yIHR5cGVzIGdldHRlcnMvc2V0dGVycy4KICAgICAjICAgLSBjb252ZXJ0IGEgbWVtYmVyIHNl
dHRlciBmcm9tIE9iakMgQVBJIHRvIEpTT04gb2JqZWN0IHNldHRlcgpAQCAtNDI5LDEzICs0Mjks
MTMgQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBpZiBjYXRlZ29y
eSBpcyBPYmpDVHlwZUNhdGVnb3J5LkFycmF5OgogICAgICAgICAgICAgb2JqY19jbGFzcyA9IHNl
bGYub2JqY19jbGFzc19mb3JfdHlwZShtZW1iZXIudHlwZS5lbGVtZW50X3R5cGUpCiAgICAgICAg
ICAgICBpZiBvYmpjX2NsYXNzIGlzICdOU1N0cmluZyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
ICdpbnNwZWN0b3JTdHJpbmdBcnJheSglcyknICUgc3ViX2V4cHJlc3Npb24KKyAgICAgICAgICAg
ICAgICByZXR1cm4gJ3RvSlNPTlN0cmluZ0FycmF5KCVzKScgJSBzdWJfZXhwcmVzc2lvbgogICAg
ICAgICAgICAgaWYgb2JqY19jbGFzcyBpcyAnTlNOdW1iZXInOgogICAgICAgICAgICAgICAgIHBy
b3RvY29sX3R5cGUgPSBPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5cGVfZm9yX3R5cGUobWVtYmVy
LnR5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgICAgIGlmIHByb3RvY29sX3R5cGUgaXMg
J2RvdWJsZSc6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAnaW5zcGVjdG9yRG91YmxlQXJy
YXkoJXMpJyAlIHN1Yl9leHByZXNzaW9uCi0gICAgICAgICAgICAgICAgcmV0dXJuICdpbnNwZWN0
b3JJbnRlZ2VyQXJyYXkoJXMpJyAlIHN1Yl9leHByZXNzaW9uCi0gICAgICAgICAgICByZXR1cm4g
J2luc3BlY3Rvck9iamVjdEFycmF5KCVzKScgJSBzdWJfZXhwcmVzc2lvbgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gJ3RvSlNPTkRvdWJsZUFycmF5KCVzKScgJSBzdWJfZXhwcmVzc2lvbgor
ICAgICAgICAgICAgICAgIHJldHVybiAndG9KU09OSW50ZWdlckFycmF5KCVzKScgJSBzdWJfZXhw
cmVzc2lvbgorICAgICAgICAgICAgcmV0dXJuICd0b0pTT05PYmplY3RBcnJheSglcyknICUgc3Vi
X2V4cHJlc3Npb24KIAogICAgIGRlZiBwcm90b2NvbF90b19vYmpjX2V4cHJlc3Npb25fZm9yX21l
bWJlcihzZWxmLCBkZWNsYXJhdGlvbiwgbWVtYmVyLCBzdWJfZXhwcmVzc2lvbik6CiAgICAgICAg
IGNhdGVnb3J5ID0gT2JqQ1R5cGVDYXRlZ29yeS5jYXRlZ29yeV9mb3JfdHlwZShtZW1iZXIudHlw
ZSkKQEAgLTQ1MSwxMyArNDUxLDEzIEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToK
ICAgICAgICAgICAgIHByb3RvY29sX3R5cGUgPSBPYmpDR2VuZXJhdG9yLnByb3RvY29sX3R5cGVf
Zm9yX3R5cGUobWVtYmVyLnR5cGUuZWxlbWVudF90eXBlKQogICAgICAgICAgICAgb2JqY19jbGFz
cyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZShtZW1iZXIudHlwZS5lbGVtZW50X3R5cGUpCiAg
ICAgICAgICAgICBpZiBvYmpjX2NsYXNzIGlzICdOU1N0cmluZyc6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuICdvYmpjU3RyaW5nQXJyYXkoJXMpJyAlIHN1Yl9leHByZXNzaW9uCisgICAgICAgICAg
ICAgICAgcmV0dXJuICd0b09iakNTdHJpbmdBcnJheSglcyknICUgc3ViX2V4cHJlc3Npb24KICAg
ICAgICAgICAgIGlmIG9iamNfY2xhc3MgaXMgJ05TTnVtYmVyJzoKICAgICAgICAgICAgICAgICBw
cm90b2NvbF90eXBlID0gT2JqQ0dlbmVyYXRvci5wcm90b2NvbF90eXBlX2Zvcl90eXBlKG1lbWJl
ci50eXBlLmVsZW1lbnRfdHlwZSkKICAgICAgICAgICAgICAgICBpZiBwcm90b2NvbF90eXBlIGlz
ICdkb3VibGUnOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ29iamNEb3VibGVBcnJheSgl
cyknICUgc3ViX2V4cHJlc3Npb24KLSAgICAgICAgICAgICAgICByZXR1cm4gJ29iamNJbnRlZ2Vy
QXJyYXkoJXMpJyAlIHN1Yl9leHByZXNzaW9uCi0gICAgICAgICAgICByZXR1cm4gJ29iamNBcnJh
eTwlcz4oJXMpJyAlIChvYmpjX2NsYXNzLCBzdWJfZXhwcmVzc2lvbikKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICd0b09iakNEb3VibGVBcnJheSglcyknICUgc3ViX2V4cHJlc3Npb24KKyAg
ICAgICAgICAgICAgICByZXR1cm4gJ3RvT2JqQ0ludGVnZXJBcnJheSglcyknICUgc3ViX2V4cHJl
c3Npb24KKyAgICAgICAgICAgIHJldHVybiAndG9PYmpDQXJyYXk8JXM+KCVzKScgJSAob2JqY19j
bGFzcywgc3ViX2V4cHJlc3Npb24pCiAKICAgICBkZWYgcHJvdG9jb2xfdG9fb2JqY19jb2RlX2Js
b2NrX2Zvcl9vYmplY3RfbWVtYmVyKHNlbGYsIGRlY2xhcmF0aW9uLCBtZW1iZXIsIHN1Yl9leHBy
ZXNzaW9uKToKICAgICAgICAgb2JqY19jbGFzcyA9IHNlbGYub2JqY19jbGFzc19mb3JfdHlwZSht
ZW1iZXIudHlwZSkKQEAgLTQ2NSw3ICs0NjUsNyBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVy
YXRvcik6CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICVzSlNPTk9iamVjdCAqb2JqZWN0ID0g
JXM7JyAlIChPYmpDR2VuZXJhdG9yLk9CSkNfU1RBVElDX1BSRUZJWCwgc3ViX2V4cHJlc3Npb24p
KQogICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAoIW9iamVjdCknKQogICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICAgICAgcmV0dXJuIG5pbDsnKQotICAgICAgICBsaW5lcy5hcHBlbmQoJyAg
ICByZXR1cm4gW1slcyBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6WyVzIHRvSW5zcGVj
dG9yT2JqZWN0XS5nZXQoKV07JyAlIChvYmpjX2NsYXNzLCBzdWJfZXhwcmVzc2lvbikpCisgICAg
ICAgIGxpbmVzLmFwcGVuZCgnICAgIHJldHVybiBbWyVzIGFsbG9jXSBpbml0V2l0aEpTT05PYmpl
Y3Q6WyVzIHRvSlNPTk9iamVjdF0uZ2V0KCldOycgJSAob2JqY19jbGFzcywgc3ViX2V4cHJlc3Np
b24pKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCiAgICAgZGVmIHBheWxvYWRf
dG9fb2JqY19leHByZXNzaW9uX2Zvcl9tZW1iZXIoc2VsZiwgZGVjbGFyYXRpb24sIG1lbWJlcik6
CkBAIC01MjgsMTQgKzUyOCwxNCBAQCBjbGFzcyBPYmpDR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAg
ICAgICAgICAgICBpZiByYXdfbmFtZSBpbiBbJ2FueScsICdvYmplY3QnXToKICAgICAgICAgICAg
ICAgICByZXR1cm4gJ3NldE9iamVjdCcKICAgICAgICAgICAgIGlmIHJhd19uYW1lIGlzICdhcnJh
eSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdzZXRJbnNwZWN0b3JBcnJheScKKyAgICAgICAg
ICAgICAgICByZXR1cm4gJ3NldEpTT05BcnJheScKICAgICAgICAgICAgIHJldHVybiBOb25lCiAg
ICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBFbnVtVHlwZSkpOgogICAgICAgICAgICAgcmV0
dXJuICdzZXRTdHJpbmcnCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBPYmplY3RUeXBl
KSk6CiAgICAgICAgICAgICByZXR1cm4gJ3NldE9iamVjdCcKICAgICAgICAgaWYgKGlzaW5zdGFu
Y2UoX3R5cGUsIEFycmF5VHlwZSkpOgotICAgICAgICAgICAgcmV0dXJuICdzZXRJbnNwZWN0b3JB
cnJheScKKyAgICAgICAgICAgIHJldHVybiAnc2V0SlNPTkFycmF5JwogICAgICAgICByZXR1cm4g
Tm9uZQogCiAgICAgQHN0YXRpY21ldGhvZApAQCAtNTU5LDEyICs1NTksMTIgQEAgY2xhc3MgT2Jq
Q0dlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgaWYgcmF3X25hbWUgaW4gWydhbnkn
LCAnb2JqZWN0J106CiAgICAgICAgICAgICAgICAgcmV0dXJuICdvYmplY3RGb3JLZXknCiAgICAg
ICAgICAgICBpZiByYXdfbmFtZSBpcyAnYXJyYXknOgotICAgICAgICAgICAgICAgIHJldHVybiAn
aW5zcGVjdG9yQXJyYXlGb3JLZXknCisgICAgICAgICAgICAgICAgcmV0dXJuICdKU09OQXJyYXlG
b3JLZXknCiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBpZiAoaXNpbnN0YW5jZShf
dHlwZSwgRW51bVR5cGUpKToKICAgICAgICAgICAgIHJldHVybiAnc3RyaW5nRm9yS2V5JwogICAg
ICAgICBpZiAoaXNpbnN0YW5jZShfdHlwZSwgT2JqZWN0VHlwZSkpOgogICAgICAgICAgICAgcmV0
dXJuICdvYmplY3RGb3JLZXknCiAgICAgICAgIGlmIChpc2luc3RhbmNlKF90eXBlLCBBcnJheVR5
cGUpKToKLSAgICAgICAgICAgIHJldHVybiAnaW5zcGVjdG9yQXJyYXlGb3JLZXknCisgICAgICAg
ICAgICByZXR1cm4gJ0pTT05BcnJheUZvcktleScKICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9hbGwv
ZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvYWxsL2V4cGVjdGVkL2Rl
ZmluaXRpb25zLXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CmluZGV4IDFiMDAwZTZjMGY3
Y2EyOWQ5YTYwNWRiMTFjOWNlNmY2MTA0MDM4YTAuLjIzNzUzMGU4YWNhYzIyMDQ4OThkNGJhMDIx
NmY1ZWI2YzRkNTZlNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9hbGwvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZv
cm0uanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2FsbC9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29u
LXJlc3VsdApAQCAtOTA3LDcgKzkwNyw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRl
c3RQcm90b2NvbFBsYXRmb3JtKSB7CiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVs
dCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sTmV0d29ya0Vycm9yIDogUldJUHJvdG9jb2xK
U09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05P
YmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CistIChpbnN0YW5jZXR5
cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9i
amVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2Fn
ZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTE1Niw5ICsxMTU2LDkgQEAgdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQotLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKW9iamVjdAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JP
YmplY3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pTT05PYmplY3RdLmdl
dCgpXSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gc2VsZjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0
ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggMGU5MjU5
ZGFlNWViMDM1ZDYyNTI3YmE5NTliZDU0YmY4MzE0ZTAyZS4uNzZlODZkZDJiNDcyZDFmYzE5ZDNi
ZjI2NjkxMWNkNzBiMGQyOGUyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3lu
Yy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1h
dHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTkzMCwyMyArOTMwLDIzIEBAIHZvaWQgT2JqQ0luc3Bl
Y3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1
cm5WYWx1ZXMoCiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFN
RVRFUihzcWxFcnJvciwgQCJzcWxFcnJvciIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9S
X0JBRF9PUFRJT05BTF9QQVJBTUVURVIoYWx0ZXJuYXRlQ29sb3JzLCBAImFsdGVybmF0ZUNvbG9y
cyIpOwogICAgICAgICBpZiAoY29sdW1uTmFtZXMpCi0gICAgICAgICAgICByZXN1bHRPYmplY3Qt
PnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgaW5zcGVjdG9yU3RyaW5nQXJy
YXkoKmNvbHVtbk5hbWVzKSk7CisgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFT
Q0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgdG9KU09OU3RyaW5nQXJyYXkoKmNvbHVtbk5hbWVz
KSk7CiAgICAgICAgIGlmIChub3RlcykKICAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgKm5vdGVzKTsKICAgICAgICAgaWYgKHRpbWVzdGFt
cCkKICAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGlt
ZXN0YW1wIiksICp0aW1lc3RhbXApOwogICAgICAgICBpZiAodmFsdWVzKQotICAgICAgICAgICAg
cmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgWyp2YWx1ZXMg
dG9JbnNwZWN0b3JPYmplY3RdKTsKKyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0
KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIFsqdmFsdWVzIHRvSlNPTk9iamVjdF0pOwogICAgICAg
ICBpZiAocGF5bG9hZCkKLSAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0VmFsdWUoQVNDSUlM
aXRlcmFsKCJwYXlsb2FkIiksIFsqcGF5bG9hZCB0b0luc3BlY3Rvck9iamVjdF0pOworICAgICAg
ICAgICAgcmVzdWx0T2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgWypw
YXlsb2FkIHRvSlNPTk9iamVjdF0pOwogICAgICAgICBpZiAoZGF0YWJhc2VJZCkKICAgICAgICAg
ICAgIHJlc3VsdE9iamVjdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwg
KmRhdGFiYXNlSWQpOwogICAgICAgICBpZiAoc3FsRXJyb3IpCi0gICAgICAgICAgICByZXN1bHRP
YmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFsqc3FsRXJyb3IgdG9J
bnNwZWN0b3JPYmplY3RdKTsKKyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFT
Q0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgWypzcWxFcnJvciB0b0pTT05PYmplY3RdKTsKICAgICAg
ICAgaWYgKHNjcmVlbkNvbG9yKQogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xvciIpLCB0b1Byb3RvY29sU3RyaW5nKCpzY3JlZW5Db2xv
cikpOwogICAgICAgICBpZiAoYWx0ZXJuYXRlQ29sb3JzKQotICAgICAgICAgICAgcmVzdWx0T2Jq
ZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JT
dHJpbmdBcnJheSgqYWx0ZXJuYXRlQ29sb3JzKSk7CisgICAgICAgICAgICByZXN1bHRPYmplY3Qt
PnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIHRvSlNPTlN0cmluZ0Fy
cmF5KCphbHRlcm5hdGVDb2xvcnMpKTsKICAgICAgICAgaWYgKHByaW50Q29sb3IpCiAgICAgICAg
ICAgICByZXN1bHRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwg
dG9Qcm90b2NvbFN0cmluZygqcHJpbnRDb2xvcikpOwogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hl
cigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdE9iamVjdCksIGZhbHNl
KTsKQEAgLTk3NCwyMyArOTc0LDIzIEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzCiAgICAgICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihzcWxFcnJvciwgQCJz
cWxFcnJvciIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJB
TUVURVIoYWx0ZXJuYXRlQ29sb3JzLCBAImFsdGVybmF0ZUNvbG9ycyIpOwogICAgICAgICBpZiAo
Y29sdW1uTmFtZXMpCi0gICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0
ZXJhbCgiY29sdW1uTmFtZXMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoKmNvbHVtbk5hbWVzKSk7
CisgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1u
TmFtZXMiKSwgdG9KU09OU3RyaW5nQXJyYXkoKmNvbHVtbk5hbWVzKSk7CiAgICAgICAgIGlmIChu
b3RlcykKICAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgi
bm90ZXMiKSwgKm5vdGVzKTsKICAgICAgICAgaWYgKHRpbWVzdGFtcCkKICAgICAgICAgICAgIHJl
c3VsdE9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICp0aW1lc3Rh
bXApOwogICAgICAgICBpZiAodmFsdWVzKQotICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRP
YmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgWyp2YWx1ZXMgdG9JbnNwZWN0b3JPYmplY3Rd
KTsKKyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFs
dWVzIiksIFsqdmFsdWVzIHRvSlNPTk9iamVjdF0pOwogICAgICAgICBpZiAocGF5bG9hZCkKLSAg
ICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiks
IFsqcGF5bG9hZCB0b0luc3BlY3Rvck9iamVjdF0pOworICAgICAgICAgICAgcmVzdWx0T2JqZWN0
LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgWypwYXlsb2FkIHRvSlNPTk9iamVj
dF0pOwogICAgICAgICBpZiAoZGF0YWJhc2VJZCkKICAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+
c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgKmRhdGFiYXNlSWQpOwogICAg
ICAgICBpZiAoc3FsRXJyb3IpCi0gICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldE9iamVjdChB
U0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFsqc3FsRXJyb3IgdG9JbnNwZWN0b3JPYmplY3RdKTsK
KyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJy
b3IiKSwgWypzcWxFcnJvciB0b0pTT05PYmplY3RdKTsKICAgICAgICAgaWYgKHNjcmVlbkNvbG9y
KQogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3Jl
ZW5Db2xvciIpLCB0b1Byb3RvY29sU3RyaW5nKCpzY3JlZW5Db2xvcikpOwogICAgICAgICBpZiAo
YWx0ZXJuYXRlQ29sb3JzKQotICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJ
SUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheSgqYWx0ZXJu
YXRlQ29sb3JzKSk7CisgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0
ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIHRvSlNPTlN0cmluZ0FycmF5KCphbHRlcm5hdGVDb2xv
cnMpKTsKICAgICAgICAgaWYgKHByaW50Q29sb3IpCiAgICAgICAgICAgICByZXN1bHRPYmplY3Qt
PnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgdG9Qcm90b2NvbFN0cmluZygq
cHJpbnRDb2xvcikpOwogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2Uo
cmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdE9iamVjdCksIGZhbHNlKTsKQEAgLTEwMTcsMTQgKzEw
MTcsMTQgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhl
Y3V0ZVNRTFN5bmMobG9uZyByZXF1ZXN0SWQsIGludAogICAgICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX1JFUVVJUkVEX1BBUkFNRVRFUihwYXlsb2FkLCBAInBheWxvYWQiKTsKICAgICAgICAgVEhS
T1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIoc3FsRXJyb3IsIEAic3FsRXJyb3Ii
KTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIoYWx0ZXJu
YXRlQ29sb3JzLCBAImFsdGVybmF0ZUNvbG9ycyIpOwotICAgICAgICByZXN1bHRPYmplY3QtPnNl
dEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXko
Y29sdW1uTmFtZXMpKTsKKyAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVy
YWwoImNvbHVtbk5hbWVzIiksIHRvSlNPTlN0cmluZ0FycmF5KGNvbHVtbk5hbWVzKSk7CiAgICAg
ICAgIHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibm90ZXMiKSwgbm90ZXMp
OwogICAgICAgICByZXN1bHRPYmplY3QtPnNldERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFt
cCIpLCB0aW1lc3RhbXApOwotICAgICAgICByZXN1bHRPYmplY3QtPnNldE9iamVjdChBU0NJSUxp
dGVyYWwoInZhbHVlcyIpLCBbdmFsdWVzIHRvSW5zcGVjdG9yT2JqZWN0XSk7Ci0gICAgICAgIHJl
c3VsdE9iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIFtwYXlsb2FkIHRv
SW5zcGVjdG9yT2JqZWN0XSk7CisgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgidmFsdWVzIiksIFt2YWx1ZXMgdG9KU09OT2JqZWN0XSk7CisgICAgICAgIHJlc3Vs
dE9iamVjdC0+c2V0VmFsdWUoQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksIFtwYXlsb2FkIHRvSlNP
Tk9iamVjdF0pOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldEludGVnZXIoQVNDSUlMaXRlcmFs
KCJkYXRhYmFzZUlkIiksIGRhdGFiYXNlSWQpOwotICAgICAgICByZXN1bHRPYmplY3QtPnNldE9i
amVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFtzcWxFcnJvciB0b0luc3BlY3Rvck9iamVj
dF0pOwotICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJu
YXRlQ29sb3JzIiksIGluc3BlY3RvclN0cmluZ0FycmF5KGFsdGVybmF0ZUNvbG9ycykpOworICAg
ICAgICByZXN1bHRPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFtz
cWxFcnJvciB0b0pTT05PYmplY3RdKTsKKyAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShB
U0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCB0b0pTT05TdHJpbmdBcnJheShhbHRlcm5h
dGVDb2xvcnMpKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJzY3JlZW5Db2xvciIpLCB0b1Byb3RvY29sU3RyaW5nKHNjcmVlbkNvbG9yKSk7CiAgICAgICAg
IHJlc3VsdE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCB0b1By
b3RvY29sU3RyaW5nKHByaW50Q29sb3IpKTsKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+
c2VuZFJlc3BvbnNlKHJlcXVlc3RJZCwgV1RGTW92ZShyZXN1bHRPYmplY3QpLCBmYWxzZSk7CkBA
IC0xMDUxLDE1ICsxMDUxLDE1IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERp
c3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luYyhsb25nIHJlcXVlc3RJZCwgaW50CiAgICAgICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKHBheWxvYWQsIEAicGF5bG9hZCIp
OwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihzcWxFcnJv
ciwgQCJzcWxFcnJvciIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BB
UkFNRVRFUihhbHRlcm5hdGVDb2xvcnMsIEAiYWx0ZXJuYXRlQ29sb3JzIik7Ci0gICAgICAgIHJl
c3VsdE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBpbnNwZWN0
b3JTdHJpbmdBcnJheShjb2x1bW5OYW1lcykpOworICAgICAgICByZXN1bHRPYmplY3QtPnNldEFy
cmF5KEFTQ0lJTGl0ZXJhbCgiY29sdW1uTmFtZXMiKSwgdG9KU09OU3RyaW5nQXJyYXkoY29sdW1u
TmFtZXMpKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJu
b3RlcyIpLCBub3Rlcyk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0
ZXJhbCgidGltZXN0YW1wIiksIHRpbWVzdGFtcCk7Ci0gICAgICAgIHJlc3VsdE9iamVjdC0+c2V0
T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIFt2YWx1ZXMgdG9JbnNwZWN0b3JPYmplY3Rd
KTsKLSAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQi
KSwgW3BheWxvYWQgdG9JbnNwZWN0b3JPYmplY3RdKTsKKyAgICAgICAgcmVzdWx0T2JqZWN0LT5z
ZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgW3ZhbHVlcyB0b0pTT05PYmplY3RdKTsK
KyAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwg
W3BheWxvYWQgdG9KU09OT2JqZWN0XSk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0SW50ZWdl
cihBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgZGF0YWJhc2VJZCk7Ci0gICAgICAgIHJlc3Vs
dE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgW3NxbEVycm9yIHRv
SW5zcGVjdG9yT2JqZWN0XSk7CisgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJ
TGl0ZXJhbCgic3FsRXJyb3IiKSwgW3NxbEVycm9yIHRvSlNPTk9iamVjdF0pOwogICAgICAgICBy
ZXN1bHRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIHRvUHJv
dG9jb2xTdHJpbmcoc2NyZWVuQ29sb3IpKTsKLSAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJh
eShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheShh
bHRlcm5hdGVDb2xvcnMpKTsKKyAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxp
dGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCB0b0pTT05TdHJpbmdBcnJheShhbHRlcm5hdGVDb2xv
cnMpKTsKICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmlu
dENvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcocHJpbnRDb2xvcikpOwogICAgICAgICBiYWNrZW5k
RGlzcGF0Y2hlcigpLT5zZW5kUmVzcG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdE9iamVj
dCksIGZhbHNlKTsKICAgICB9OwpAQCAtMTMyOCw3ICsxMzI4LDcgQEAgdHlwZWRlZiBOU19FTlVN
KE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9y
KSB7CiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2Ug
VGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAq
KXBheWxvYWQ7Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2Nv
bEpTT05PYmplY3QgKilqc29uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9j
b2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7
CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1l
c3NhZ2U7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQg
Y29kZTsKQEAgLTE3MzMsOSArMTczMyw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
ICAgICByZXR1cm4gc2VsZjsKIH0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6
KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0
V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilvYmplY3QKIHsKLSAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0
IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dFdpdGhKU09OT2JqZWN0OltvYmplY3QgdG9KU09OT2JqZWN0XS5nZXQoKV0pKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIHNlbGY7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9jb21tYW5k
cy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3Rl
ZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQKaW5kZXggYWUyY2QyNGI2MWMyZTViNzYzOTg4YmM4OThhNGJlMjE5YTVjNmZmNi4uMGNlMGMx
OGQyNjFhOWI4MzQ0OGVlMWRkODM3OGJiYzM2ZTNjODI1OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvY29t
bWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5q
c29uLXJlc3VsdApAQCAtODI5LDIzICs4MjksMjMgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIHIK
ICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKHNxbEVy
cm9yLCBAInNxbEVycm9yIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElP
TkFMX1BBUkFNRVRFUihhbHRlcm5hdGVDb2xvcnMsIEAiYWx0ZXJuYXRlQ29sb3JzIik7CiAgICAg
ICAgIGlmIChjb2x1bW5OYW1lcykKLSAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXko
QVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheSgqY29sdW1u
TmFtZXMpKTsKKyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJjb2x1bW5OYW1lcyIpLCB0b0pTT05TdHJpbmdBcnJheSgqY29sdW1uTmFtZXMpKTsKICAgICAg
ICAgaWYgKG5vdGVzKQogICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlM
aXRlcmFsKCJub3RlcyIpLCAqbm90ZXMpOwogICAgICAgICBpZiAodGltZXN0YW1wKQogICAgICAg
ICAgICAgcmVzdWx0T2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRlcmFsKCJ0aW1lc3RhbXAiKSwg
KnRpbWVzdGFtcCk7CiAgICAgICAgIGlmICh2YWx1ZXMpCi0gICAgICAgICAgICByZXN1bHRPYmpl
Y3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBbKnZhbHVlcyB0b0luc3BlY3Rv
ck9iamVjdF0pOworICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRl
cmFsKCJ2YWx1ZXMiKSwgWyp2YWx1ZXMgdG9KU09OT2JqZWN0XSk7CiAgICAgICAgIGlmIChwYXls
b2FkKQotICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBh
eWxvYWQiKSwgWypwYXlsb2FkIHRvSW5zcGVjdG9yT2JqZWN0XSk7CisgICAgICAgICAgICByZXN1
bHRPYmplY3QtPnNldFZhbHVlKEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCBbKnBheWxvYWQgdG9K
U09OT2JqZWN0XSk7CiAgICAgICAgIGlmIChkYXRhYmFzZUlkKQogICAgICAgICAgICAgcmVzdWx0
T2JqZWN0LT5zZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiZGF0YWJhc2VJZCIpLCAqZGF0YWJhc2VJ
ZCk7CiAgICAgICAgIGlmIChzcWxFcnJvcikKLSAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0
T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgWypzcWxFcnJvciB0b0luc3BlY3Rvck9i
amVjdF0pOworICAgICAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFs
KCJzcWxFcnJvciIpLCBbKnNxbEVycm9yIHRvSlNPTk9iamVjdF0pOwogICAgICAgICBpZiAoc2Ny
ZWVuQ29sb3IpCiAgICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVy
YWwoInNjcmVlbkNvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcoKnNjcmVlbkNvbG9yKSk7CiAgICAg
ICAgIGlmIChhbHRlcm5hdGVDb2xvcnMpCi0gICAgICAgICAgICByZXN1bHRPYmplY3QtPnNldEFy
cmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRlQ29sb3JzIiksIGluc3BlY3RvclN0cmluZ0FycmF5
KCphbHRlcm5hdGVDb2xvcnMpKTsKKyAgICAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXko
QVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgdG9KU09OU3RyaW5nQXJyYXkoKmFsdGVy
bmF0ZUNvbG9ycykpOwogICAgICAgICBpZiAocHJpbnRDb2xvcikKICAgICAgICAgICAgIHJlc3Vs
dE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCB0b1Byb3RvY29s
U3RyaW5nKCpwcmludENvbG9yKSk7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRS
ZXNwb25zZShyZXF1ZXN0SWQsIFdURk1vdmUocmVzdWx0T2JqZWN0KSwgZmFsc2UpOwpAQCAtODUz
LDcgKzg1Myw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyByCiAKICAgICBOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKm9faW5fY29sdW1uTmFtZXM7CiAgICAgaWYgKGluX2NvbHVtbk5hbWVzKQotICAg
ICAgICBvX2luX2NvbHVtbk5hbWVzID0gb2JqY1N0cmluZ0FycmF5KGluX2NvbHVtbk5hbWVzKTsK
KyAgICAgICAgb19pbl9jb2x1bW5OYW1lcyA9IHRvT2JqQ1N0cmluZ0FycmF5KGluX2NvbHVtbk5h
bWVzKTsKICAgICBOU1N0cmluZyAqb19pbl9ub3RlczsKICAgICBpZiAoaW5fbm90ZXMpCiAgICAg
ICAgIG9faW5fbm90ZXMgPSAqaW5fbm90ZXM7CkBAIC04NjIsMjIgKzg2MiwyMiBAQCB2b2lkIE9i
akNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQ
YXJhbWV0ZXJzKGxvbmcgcgogICAgICAgICBvX2luX3RpbWVzdGFtcCA9ICppbl90aW1lc3RhbXA7
CiAgICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3ZhbHVlczsKICAgICBpZiAoaW5fdmFs
dWVzKQotICAgICAgICBvX2luX3ZhbHVlcyA9IFtbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxv
Y10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6aW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07CisgICAg
ICAgIG9faW5fdmFsdWVzID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0
aEpTT05PYmplY3Q6aW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07CiAgICAgUldJUHJvdG9jb2xKU09O
T2JqZWN0ICpvX2luX3BheWxvYWQ7CiAgICAgaWYgKGluX3BheWxvYWQpCi0gICAgICAgIG9faW5f
cGF5bG9hZCA9IFtbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0
b3JPYmplY3Q6aW5fcGF5bG9hZF0gYXV0b3JlbGVhc2VdOworICAgICAgICBvX2luX3BheWxvYWQg
PSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDppbl9w
YXlsb2FkXSBhdXRvcmVsZWFzZV07CiAgICAgaW50IG9faW5fZGF0YWJhc2VJZDsKICAgICBpZiAo
aW5fZGF0YWJhc2VJZCkKICAgICAgICAgb19pbl9kYXRhYmFzZUlkID0gKmluX2RhdGFiYXNlSWQ7
CiAgICAgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqb19pbl9zcWxFcnJvcjsKICAgICBpZiAo
aW5fc3FsRXJyb3IpCi0gICAgICAgIG9faW5fc3FsRXJyb3IgPSBbW1tUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl9zcWxFcnJvcl0gYXV0
b3JlbGVhc2VdOworICAgICAgICBvX2luX3NxbEVycm9yID0gW1tbVGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvciBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OmluX3NxbEVycm9yXSBhdXRvcmVsZWFz
ZV07CiAgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+
IG9faW5fc2NyZWVuQ29sb3I7CiAgICAgaWYgKGluX3NjcmVlbkNvbG9yKQogICAgICAgICBvX2lu
X3NjcmVlbkNvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlUHJp
bWFyeUNvbG9ycz4oKmluX3NjcmVlbkNvbG9yKTsKICAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8g
Km9faW5fYWx0ZXJuYXRlQ29sb3JzOwogICAgIGlmIChpbl9hbHRlcm5hdGVDb2xvcnMpCi0gICAg
ICAgIG9faW5fYWx0ZXJuYXRlQ29sb3JzID0gb2JqY1N0cmluZ0FycmF5KGluX2FsdGVybmF0ZUNv
bG9ycyk7CisgICAgICAgIG9faW5fYWx0ZXJuYXRlQ29sb3JzID0gdG9PYmpDU3RyaW5nQXJyYXko
aW5fYWx0ZXJuYXRlQ29sb3JzKTsKICAgICBzdGQ6Om9wdGlvbmFsPFRlc3RQcm90b2NvbERhdGFi
YXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+IG9faW5fcHJpbnRDb2xv
cjsKICAgICBpZiAoaW5fcHJpbnRDb2xvcikKICAgICAgICAgb19pbl9wcmludENvbG9yID0gZnJv
bVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVyc1ByaW50Q29sb3I+KCppbl9wcmludENvbG9yKTsKQEAgLTkwMCwzMiArOTAwLDMyIEBA
IHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09w
dGlvbmFsUGFyYW1ldGVycyhsb25nIHJlCiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVR
VUlSRURfUEFSQU1FVEVSKHBheWxvYWQsIEAicGF5bG9hZCIpOwogICAgICAgICBUSFJPV19FWENF
UFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihzcWxFcnJvciwgQCJzcWxFcnJvciIpOwogICAg
ICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihhbHRlcm5hdGVDb2xv
cnMsIEAiYWx0ZXJuYXRlQ29sb3JzIik7Ci0gICAgICAgIHJlc3VsdE9iamVjdC0+c2V0QXJyYXko
QVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1lcyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheShjb2x1bW5O
YW1lcykpOworICAgICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiY29s
dW1uTmFtZXMiKSwgdG9KU09OU3RyaW5nQXJyYXkoY29sdW1uTmFtZXMpKTsKICAgICAgICAgcmVz
dWx0T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJub3RlcyIpLCBub3Rlcyk7CiAgICAg
ICAgIHJlc3VsdE9iamVjdC0+c2V0RG91YmxlKEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksIHRp
bWVzdGFtcCk7Ci0gICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgi
dmFsdWVzIiksIFt2YWx1ZXMgdG9JbnNwZWN0b3JPYmplY3RdKTsKLSAgICAgICAgcmVzdWx0T2Jq
ZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgW3BheWxvYWQgdG9JbnNwZWN0
b3JPYmplY3RdKTsKKyAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFs
KCJ2YWx1ZXMiKSwgW3ZhbHVlcyB0b0pTT05PYmplY3RdKTsKKyAgICAgICAgcmVzdWx0T2JqZWN0
LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgW3BheWxvYWQgdG9KU09OT2JqZWN0
XSk7CiAgICAgICAgIHJlc3VsdE9iamVjdC0+c2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImRhdGFi
YXNlSWQiKSwgZGF0YWJhc2VJZCk7Ci0gICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFT
Q0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgW3NxbEVycm9yIHRvSW5zcGVjdG9yT2JqZWN0XSk7Cisg
ICAgICAgIHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwg
W3NxbEVycm9yIHRvSlNPTk9iamVjdF0pOwogICAgICAgICByZXN1bHRPYmplY3QtPnNldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksIHRvUHJvdG9jb2xTdHJpbmcoc2NyZWVuQ29s
b3IpKTsKLSAgICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVy
bmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheShhbHRlcm5hdGVDb2xvcnMpKTsKKyAg
ICAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9y
cyIpLCB0b0pTT05TdHJpbmdBcnJheShhbHRlcm5hdGVDb2xvcnMpKTsKICAgICAgICAgcmVzdWx0
T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJwcmludENvbG9yIiksIHRvUHJvdG9jb2xT
dHJpbmcocHJpbnRDb2xvcikpOwogICAgICAgICBiYWNrZW5kRGlzcGF0Y2hlcigpLT5zZW5kUmVz
cG9uc2UocmVxdWVzdElkLCBXVEZNb3ZlKHJlc3VsdE9iamVjdCksIGZhbHNlKTsKICAgICB9Owog
Ci0gICAgTlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2luX2NvbHVtbk5hbWVzID0gb2JqY1N0cmlu
Z0FycmF5KCZpbl9jb2x1bW5OYW1lcyk7CisgICAgTlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2lu
X2NvbHVtbk5hbWVzID0gdG9PYmpDU3RyaW5nQXJyYXkoJmluX2NvbHVtbk5hbWVzKTsKICAgICBO
U1N0cmluZyAqb19pbl9ub3RlcyA9IGluX25vdGVzOwogICAgIGRvdWJsZSBvX2luX3RpbWVzdGFt
cCA9IGluX3RpbWVzdGFtcDsKLSAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fdmFsdWVz
ID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVj
dDomaW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07Ci0gICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpv
X2luX3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSW5z
cGVjdG9yT2JqZWN0OiZpbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CisgICAgUldJUHJvdG9jb2xK
U09OT2JqZWN0ICpvX2luX3ZhbHVlcyA9IFtbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10g
aW5pdFdpdGhKU09OT2JqZWN0OiZpbl92YWx1ZXNdIGF1dG9yZWxlYXNlXTsKKyAgICBSV0lQcm90
b2NvbEpTT05PYmplY3QgKm9faW5fcGF5bG9hZCA9IFtbW1JXSVByb3RvY29sSlNPTk9iamVjdCBh
bGxvY10gaW5pdFdpdGhKU09OT2JqZWN0OiZpbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CiAgICAg
aW50IG9faW5fZGF0YWJhc2VJZCA9IGluX2RhdGFiYXNlSWQ7Ci0gICAgVGVzdFByb3RvY29sRGF0
YWJhc2VFcnJvciAqb19pbl9zcWxFcnJvciA9IFtbW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3Ig
YWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9zcWxFcnJvcl0gYXV0b3JlbGVhc2Vd
OworICAgIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJyb3IgPSBbW1tUZXN0
UHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6JmluX3NxbEVy
cm9yXSBhdXRvcmVsZWFzZV07CiAgICAgc3RkOjpvcHRpb25hbDxUZXN0UHJvdG9jb2xEYXRhYmFz
ZVByaW1hcnlDb2xvcnM+IG9faW5fc2NyZWVuQ29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8VGVz
dFByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzPihpbl9zY3JlZW5Db2xvcik7CiAgICAgaWYg
KCFvX2luX3NjcmVlbkNvbG9yKSB7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnJlcG9y
dFByb3RvY29sRXJyb3IoQmFja2VuZERpc3BhdGNoZXI6OkludmFsaWRQYXJhbXMsIFN0cmluZzo6
Zm9ybWF0KCJQYXJhbWV0ZXIgJyVzJyBvZiBtZXRob2QgJyVzJyBjYW5ub3QgYmUgcHJvY2Vzc2Vk
IiwgInNjcmVlbkNvbG9yIiwgIkRhdGFiYXNlLmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyIp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKm9f
aW5fYWx0ZXJuYXRlQ29sb3JzID0gb2JqY1N0cmluZ0FycmF5KCZpbl9hbHRlcm5hdGVDb2xvcnMp
OworICAgIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9hbHRlcm5hdGVDb2xvcnMgPSB0b09i
akNTdHJpbmdBcnJheSgmaW5fYWx0ZXJuYXRlQ29sb3JzKTsKICAgICBzdGQ6Om9wdGlvbmFsPFRl
c3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4g
b19pbl9wcmludENvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbERhdGFiYXNl
RXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvcj4oaW5fcHJpbnRDb2xvcik7CiAg
ICAgaWYgKCFvX2luX3ByaW50Q29sb3IpIHsKICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+
cmVwb3J0UHJvdG9jb2xFcnJvcihCYWNrZW5kRGlzcGF0Y2hlcjo6SW52YWxpZFBhcmFtcywgU3Ry
aW5nOjpmb3JtYXQoIlBhcmFtZXRlciAnJXMnIG9mIG1ldGhvZCAnJXMnIGNhbm5vdCBiZSBwcm9j
ZXNzZWQiLCAicHJpbnRDb2xvciIsICJEYXRhYmFzZS5leGVjdXRlTm9PcHRpb25hbFBhcmFtZXRl
cnMiKSk7CkBAIC0xMTkzLDcgKzExOTMsNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50QwogX19h
dHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90
b2NvbERhdGFiYXNlRXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2Fk
OwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopanNvbk9iamVjdDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0
OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogLyogcmVx
dWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOwog
LyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7CkBA
IC0xNTk2LDkgKzE1OTYsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0
dXJuIHNlbGY7CiB9Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90
b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90
b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopb2JqZWN0CiB7Ci0gICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3Bl
Y3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSlNP
Tk9iamVjdDpbb2JqZWN0IHRvSlNPTk9iamVjdF0uZ2V0KCldKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0
aW9uYWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggN2JmYzI0NGYzYzFhYzc4YWIxNWUzZjEyOTBj
MTBkYWFlZTI2YWE0Ni4uZjYyMDU4MTFhYTA4NGEyYjBkNDNmM2EzNTM1NDU3ODY0NDBmODU0YSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2dlbmVyaWMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
Z2VuZXJpYy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVz
dWx0CkBAIC03ODksMjEgKzc4OSwyMSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAg
IGpzb25NZXNzYWdlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJtZXRob2QiKSwgQVNDSUlMaXRl
cmFsKCJEYXRhYmFzZS5kaWRFeGVjdXRlT3B0aW9uYWxQYXJhbWV0ZXJzIikpOwogICAgIFJlZjxK
U09OOjpPYmplY3Q+IHBhcmFtc09iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAgICAg
aWYgKGNvbHVtbk5hbWVzKQotICAgICAgICBwYXJhbXNPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0
ZXJhbCgiY29sdW1uTmFtZXMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoKCpjb2x1bW5OYW1lcykp
KTsKKyAgICAgICAgcGFyYW1zT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5h
bWVzIiksIHRvSlNPTlN0cmluZ0FycmF5KCgqY29sdW1uTmFtZXMpKSk7CiAgICAgaWYgKG5vdGVz
KQogICAgICAgICBwYXJhbXNPYmplY3QtPnNldFN0cmluZyhBU0NJSUxpdGVyYWwoIm5vdGVzIiks
ICgqbm90ZXMpKTsKICAgICBpZiAodGltZXN0YW1wKQogICAgICAgICBwYXJhbXNPYmplY3QtPnNl
dERvdWJsZShBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAoKnRpbWVzdGFtcCkpOwogICAgIGlm
ICh2YWx1ZXMpCi0gICAgICAgIHBhcmFtc09iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgi
dmFsdWVzIiksIFsoKnZhbHVlcykgdG9JbnNwZWN0b3JPYmplY3RdKTsKKyAgICAgICAgcGFyYW1z
T2JqZWN0LT5zZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgWygqdmFsdWVzKSB0b0pT
T05PYmplY3RdKTsKICAgICBpZiAocGF5bG9hZCkKLSAgICAgICAgcGFyYW1zT2JqZWN0LT5zZXRW
YWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgWygqcGF5bG9hZCkgdG9JbnNwZWN0b3JPYmpl
Y3RdKTsKKyAgICAgICAgcGFyYW1zT2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxv
YWQiKSwgWygqcGF5bG9hZCkgdG9KU09OT2JqZWN0XSk7CiAgICAgaWYgKHNxbEVycm9yKQotICAg
ICAgICBwYXJhbXNPYmplY3QtPnNldE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFso
KnNxbEVycm9yKSB0b0luc3BlY3Rvck9iamVjdF0pOworICAgICAgICBwYXJhbXNPYmplY3QtPnNl
dE9iamVjdChBU0NJSUxpdGVyYWwoInNxbEVycm9yIiksIFsoKnNxbEVycm9yKSB0b0pTT05PYmpl
Y3RdKTsKICAgICBpZiAoc2NyZWVuQ29sb3IpCiAgICAgICAgIHBhcmFtc09iamVjdC0+c2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgic2NyZWVuQ29sb3IiKSwgKCpzY3JlZW5Db2xvcikpOwogICAgIGlm
IChhbHRlcm5hdGVDb2xvcnMpCi0gICAgICAgIHBhcmFtc09iamVjdC0+c2V0QXJyYXkoQVNDSUlM
aXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgaW5zcGVjdG9yU3RyaW5nQXJyYXkoKCphbHRlcm5h
dGVDb2xvcnMpKSk7CisgICAgICAgIHBhcmFtc09iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJhbHRlcm5hdGVDb2xvcnMiKSwgdG9KU09OU3RyaW5nQXJyYXkoKCphbHRlcm5hdGVDb2xvcnMp
KSk7CiAgICAgaWYgKHByaW50Q29sb3IpCiAgICAgICAgIHBhcmFtc09iamVjdC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCAoKnByaW50Q29sb3IpKTsKICAgICBqc29uTWVz
c2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdURk1vdmUocGFyYW1zT2Jq
ZWN0KSk7CkBAIC04MjYsMTQgKzgyNiwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
ICAgIFJlZjxKU09OOjpPYmplY3Q+IGpzb25NZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUo
KTsKICAgICBqc29uTWVzc2FnZS0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgibWV0aG9kIiksIEFT
Q0lJTGl0ZXJhbCgiRGF0YWJhc2UuZGlkRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzIikpOwog
ICAgIFJlZjxKU09OOjpPYmplY3Q+IHBhcmFtc09iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgcGFyYW1zT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVz
IiksIGluc3BlY3RvclN0cmluZ0FycmF5KGNvbHVtbk5hbWVzKSk7CisgICAgcGFyYW1zT2JqZWN0
LT5zZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIHRvSlNPTlN0cmluZ0FycmF5
KGNvbHVtbk5hbWVzKSk7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJub3RlcyIpLCBub3Rlcyk7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXREb3VibGUoQVNDSUlMaXRl
cmFsKCJ0aW1lc3RhbXAiKSwgdGltZXN0YW1wKTsKLSAgICBwYXJhbXNPYmplY3QtPnNldE9iamVj
dChBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCBbdmFsdWVzIHRvSW5zcGVjdG9yT2JqZWN0XSk7Ci0g
ICAgcGFyYW1zT2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwoInBheWxvYWQiKSwgW3BheWxv
YWQgdG9JbnNwZWN0b3JPYmplY3RdKTsKLSAgICBwYXJhbXNPYmplY3QtPnNldE9iamVjdChBU0NJ
SUxpdGVyYWwoInNxbEVycm9yIiksIFtzcWxFcnJvciB0b0luc3BlY3Rvck9iamVjdF0pOworICAg
IHBhcmFtc09iamVjdC0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgidmFsdWVzIiksIFt2YWx1ZXMg
dG9KU09OT2JqZWN0XSk7CisgICAgcGFyYW1zT2JqZWN0LT5zZXRWYWx1ZShBU0NJSUxpdGVyYWwo
InBheWxvYWQiKSwgW3BheWxvYWQgdG9KU09OT2JqZWN0XSk7CisgICAgcGFyYW1zT2JqZWN0LT5z
ZXRPYmplY3QoQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCBbc3FsRXJyb3IgdG9KU09OT2JqZWN0
XSk7CiAgICAgcGFyYW1zT2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JlZW5Db2xv
ciIpLCBzY3JlZW5Db2xvcik7Ci0gICAgcGFyYW1zT2JqZWN0LT5zZXRBcnJheShBU0NJSUxpdGVy
YWwoImFsdGVybmF0ZUNvbG9ycyIpLCBpbnNwZWN0b3JTdHJpbmdBcnJheShhbHRlcm5hdGVDb2xv
cnMpKTsKKyAgICBwYXJhbXNPYmplY3QtPnNldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWx0ZXJuYXRl
Q29sb3JzIiksIHRvSlNPTlN0cmluZ0FycmF5KGFsdGVybmF0ZUNvbG9ycykpOwogICAgIHBhcmFt
c09iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCBwcmludENvbG9y
KTsKICAgICBqc29uTWVzc2FnZS0+c2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIFdU
Rk1vdmUocGFyYW1zT2JqZWN0KSk7CiAgICAgcm91dGVyLnNlbmRFdmVudChqc29uTWVzc2FnZS0+
dG9KU09OU3RyaW5nKCkpOwpAQCAtODk1LDcgKzg5NSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0lu
dGVnZXIsIFRlc3RQcm90b2NvbFBsYXRmb3JtKSB7CiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5
ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFJX
SVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7Ci0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmlu
ZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVy
dHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTExNjMsOSArMTE2Myw5IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KLS0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25P
YmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2Nv
bEpTT05PYmplY3QgKilvYmplY3QKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRo
SW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQor
ICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhKU09OT2JqZWN0OltvYmplY3QgdG9KU09O
T2JqZWN0XS5nZXQoKV0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIHNlbGY7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZ2VuZXJpYy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMu
anNvbi1yZXN1bHQKaW5kZXggNGFmZDY2ZmNhMjIzYTc5ZDg0YzkxYmYyYzUyZTVhMzdjZTNlNDgx
My4uMzI5NTI2OTZkMjVhMmRkYmZjODMyMmU5NjRkYjExZDQ2NGUzNTg4NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0Cisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmlj
L2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3Vs
dApAQCAtOTM0LDcgKzkzNCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90
b2NvbFBsYXRmb3JtKSB7CiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IEBpbnRlcmZhY2UgVGVzdFByb3RvY29sTmV0d29yazJOZXR3b3JrRXJyb3IgOiBSV0lQcm90b2Nv
bEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNP
Tk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKKy0gKGluc3RhbmNl
dHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29u
T2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNz
YWdlIGNvZGU6KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMs
IGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25h
dG9taWMsIGFzc2lnbikgaW50IGNvZGU7CkBAIC0xMTgzLDkgKzExODMsOSBAQCB1c2luZyBuYW1l
c3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9Ci0tIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopb2JqZWN0CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rv
ck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICBpZiAo
IShzZWxmID0gW3N1cGVyIGluaXRXaXRoSlNPTk9iamVjdDpbb2JqZWN0IHRvSlNPTk9iamVjdF0u
Z2V0KCldKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBzZWxmOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVy
aWMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhw
ZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CmluZGV4IGQx
MTBlZWM5MGRjNDk5MzViMDRiNDdkMDU2YTBhMzFkODFhZTU1YTYuLmIyMTA2ZWZlM2Q2M2FhMWI5
ZjkwNTg1NDdlNTc4ZGZhZDg5YmRmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlv
bmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25h
bC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKQEAgLTc5Nyw3ICs3OTcsNyBAQCB0eXBlZGVmIE5T
X0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUpIHsKIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9j
b2xSdW50aW1lS2V5UGF0aCA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7
Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKilqc29uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6
KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhUeXBlOihUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUpdHlwZTsKIC8qIHJlcXVp
cmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFRlc3RQcm90b2NvbFJ1bnRpbWVL
ZXlQYXRoVHlwZSB0eXBlOwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNv
cHkpIE5TU3RyaW5nICpzdHJpbmc7CkBAIC0xMDY1LDkgKzEwNjUsOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7CiB9Ci0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0CistIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0
ICopb2JqZWN0CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9i
amVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICBpZiAoIShz
ZWxmID0gW3N1cGVyIGluaXRXaXRoSlNPTk9iamVjdDpbb2JqZWN0IHRvSlNPTk9iamVjdF0uZ2V0
KCldKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBzZWxmOwpAQCAtMTEwNSwx
MiArMTEwNSwxMiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2b2lkKXNldEFy
cmF5OihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilhcnJheQogewotICAgIFtzdXBlciBzZXRJbnNw
ZWN0b3JBcnJheTppbnNwZWN0b3JTdHJpbmdBcnJheShhcnJheSkgZm9yS2V5OkAiYXJyYXkiXTsK
KyAgICBbc3VwZXIgc2V0SlNPTkFycmF5OnRvSlNPTlN0cmluZ0FycmF5KGFycmF5KSBmb3JLZXk6
QCJhcnJheSJdOwogfQogCiAtIChOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilhcnJheQogewotICAg
IHJldHVybiBvYmpjU3RyaW5nQXJyYXkoW3N1cGVyIGluc3BlY3RvckFycmF5Rm9yS2V5OkAiYXJy
YXkiXSk7CisgICAgcmV0dXJuIHRvT2JqQ1N0cmluZ0FycmF5KFtzdXBlciBKU09OQXJyYXlGb3JL
ZXk6QCJhcnJheSJdKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJh
dGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2Jq
ZWN0LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggZmI4NmJlYTc3NmE1YjIwNGYzMTM0N2Q5Y2NhNWEz
MjkzYjM1MjVkNy4uNjQ5NTcwMjc4YWFlMmNiNzEzZWQ2OTVjNjZmNWJhODhhZTdkZWVmNCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC90eXBlLWRlY2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0CkBAIC0x
MzM5LDcgKzEzMzksNyBAQCB0eXBlZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xU
ZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9uYWxpdHkpIHsKIF9fYXR0cmlidXRlX18oKHZpc2li
aWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9y
IDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2Fk
OihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKLS0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09O
T2JqZWN0ICopanNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5T
U3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTM0OCw3ICsxMzQ4LDcg
QEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBfX2F0dHJpYnV0ZV9f
KCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJh
c2VPcHRpb25hbFBhcmFtZXRlckJ1bmRsZSA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAq
KXBheWxvYWQ7Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2Nv
bEpTT05PYmplY3QgKilqc29uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9j
b2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAvKiBvcHRpb25h
bCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPE5TU3RyaW5nPiovICpj
b2x1bW5OYW1lczsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmJ1dHRvbnM7CiAvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkg
KG5vbmF0b21pYywgYXNzaWduKSBUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVy
QnVuZGxlRGlyZWN0aW9uYWxpdHkgZGlyZWN0aW9uYWxpdHk7CkBAIC0xMzYzLDcgKzEzNjMsNyBA
QCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFz
ZVBhcmFtZXRlckJ1bmRsZSA6IFJXSVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7
Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKilqc29uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6
KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhDb2x1bW5OYW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMgYnV0
dG9uczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopYnV0dG9ucyBkaXJlY3Rpb25hbGl0eTooVGVz
dFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGVEaXJlY3Rpb25hbGl0eSlkaXJlY3Rpb25h
bGl0eSBub3RlczooTlNTdHJpbmcgKilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAg
dmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9j
b2xKU09OT2JqZWN0ICopcGF5bG9hZCBlcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAq
KWVycm9yIGVycm9yTGlzdDooTlNBcnJheS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8g
KillcnJvckxpc3Q7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkg
TlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1bW5OYW1lczsKIC8qIHJlcXVpcmVkICovIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmJ1dHRvbnM7CkBA
IC0xMzc5LDcgKzEzNzksNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBU
ZXN0UHJvdG9jb2xEYXRhYmFzZU9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGljdHMgOiBSV0lQ
cm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGlj
dGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwotLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3Qg
Kilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW50ZWdlcjooTlNTdHJpbmcg
KilpbnRlZ2VyIGFycmF5OihOU1N0cmluZyAqKWFycmF5IHN0cmluZzooTlNTdHJpbmcgKilzdHJp
bmcgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUgb2JqZWN0OihOU1N0cmluZyAqKW9iamVjdDsKIC8q
IHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqaW50ZWdl
cjsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAq
YXJyYXk7CkBAIC0xMzkxLDEzICsxMzkxLDEzIEBAIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkg
KCJkZWZhdWx0IikpKQogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBA
aW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlRHVtbXlPYmplY3QgOiBSV0lQcm90b2NvbEpT
T05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9i
amVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2Jq
ZWN0OwogQGVuZAogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBp
bnRlcmZhY2UgVGVzdFByb3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZSA6IFJXSVByb3RvY29sSlNP
Tk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIGlkPiAqKXBheWxvYWQ7Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2Jq
ZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OworLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmpl
Y3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEaXJlY3Rpb25hbGl0eTooVGVzdFByb3RvY29s
VGVzdFBhcmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5KWRpcmVjdGlvbmFsaXR5IGJ1dHRvbnM6
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWJ1dHRvbnMgY29sdW1uTmFtZXM6KE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFt
cDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVl
cyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJv
dG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3I7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5v
bmF0b21pYywgYXNzaWduKSBUZXN0UHJvdG9jb2xUZXN0UGFyYW1ldGVyQnVuZGxlRGlyZWN0aW9u
YWxpdHkgZGlyZWN0aW9uYWxpdHk7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21p
YywgY29weSkgTlNBcnJheS8qPE5TU3RyaW5nPiovICpidXR0b25zOwpAQCAtMTc5MCw5ICsxNzkw
LDkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQot
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0
ICopanNvbk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJX
SVByb3RvY29sSlNPTk9iamVjdCAqKW9iamVjdAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdl
dCgpXSkpCisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVj
dCB0b0pTT05PYmplY3RdLmdldCgpXSkpCiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1
cm4gc2VsZjsKQEAgLTE4NjIsOSArMTg2Miw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKICAgICByZXR1cm4gc2VsZjsKIH0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmpl
Y3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilvYmplY3QKIHsK
LSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2Jq
ZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdFdpdGhKU09OT2JqZWN0OltvYmplY3QgdG9KU09OT2JqZWN0XS5nZXQoKV0pKQogICAgICAg
ICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xODcyLDIyICsxODcyLDIyIEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIC0gKHZvaWQpc2V0Q29sdW1uTmFtZXM6KE5T
QXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzCiB7Ci0gICAgW3N1cGVyIHNldEluc3Bl
Y3RvckFycmF5Omluc3BlY3RvclN0cmluZ0FycmF5KGNvbHVtbk5hbWVzKSBmb3JLZXk6QCJjb2x1
bW5OYW1lcyJdOworICAgIFtzdXBlciBzZXRKU09OQXJyYXk6dG9KU09OU3RyaW5nQXJyYXkoY29s
dW1uTmFtZXMpIGZvcktleTpAImNvbHVtbk5hbWVzIl07CiB9CiAKIC0gKE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqKWNvbHVtbk5hbWVzCiB7Ci0gICAgcmV0dXJuIG9iamNTdHJpbmdBcnJheShbc3Vw
ZXIgaW5zcGVjdG9yQXJyYXlGb3JLZXk6QCJjb2x1bW5OYW1lcyJdKTsKKyAgICByZXR1cm4gdG9P
YmpDU3RyaW5nQXJyYXkoW3N1cGVyIEpTT05BcnJheUZvcktleTpAImNvbHVtbk5hbWVzIl0pOwog
fQogCiAtICh2b2lkKXNldEJ1dHRvbnM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWJ1dHRvbnMK
IHsKLSAgICBbc3VwZXIgc2V0SW5zcGVjdG9yQXJyYXk6aW5zcGVjdG9yU3RyaW5nQXJyYXkoYnV0
dG9ucykgZm9yS2V5OkAiYnV0dG9ucyJdOworICAgIFtzdXBlciBzZXRKU09OQXJyYXk6dG9KU09O
U3RyaW5nQXJyYXkoYnV0dG9ucykgZm9yS2V5OkAiYnV0dG9ucyJdOwogfQogCiAtIChOU0FycmF5
Lyo8TlNTdHJpbmc+Ki8gKilidXR0b25zCiB7Ci0gICAgcmV0dXJuIG9iamNTdHJpbmdBcnJheShb
c3VwZXIgaW5zcGVjdG9yQXJyYXlGb3JLZXk6QCJidXR0b25zIl0pOworICAgIHJldHVybiB0b09i
akNTdHJpbmdBcnJheShbc3VwZXIgSlNPTkFycmF5Rm9yS2V5OkAiYnV0dG9ucyJdKTsKIH0KIAog
LSAodm9pZClzZXREaXJlY3Rpb25hbGl0eTooVGVzdFByb3RvY29sRGF0YWJhc2VPcHRpb25hbFBh
cmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5KWRpcmVjdGlvbmFsaXR5CkBAIC0xOTMwLDcgKzE5
MzAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFJXSVByb3RvY29sSlNPTk9i
amVjdCAqb2JqZWN0ID0gW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOwogICAgIGlmICgh
b2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1JXSVByb3RvY29sSlNP
Tk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RGb3JL
ZXk6QCJ2YWx1ZXMiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJldHVybiBbW1JX
SVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0Oltbc3VwZXIgb2Jq
ZWN0Rm9yS2V5OkAidmFsdWVzIl0gdG9KU09OT2JqZWN0XS5nZXQoKV07CiB9CiAKIC0gKHZvaWQp
c2V0UGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZApAQCAtMTk0Myw3ICsx
OTQzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBSV0lQcm90b2NvbEpTT05P
YmplY3QgKm9iamVjdCA9IFtzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl07CiAgICAgaWYg
KCFvYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbUldJUHJvdG9jb2xK
U09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZv
cktleTpAInBheWxvYWQiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJldHVybiBb
W1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0Oltbc3VwZXIg
b2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdIHRvSlNPTk9iamVjdF0uZ2V0KCldOwogfQogCiAtICh2
b2lkKXNldEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IKQEAgLTE5NTYs
MTggKzE5NTYsMTggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBSV0lQcm90b2Nv
bEpTT05PYmplY3QgKm9iamVjdCA9IFtzdXBlciBvYmplY3RGb3JLZXk6QCJlcnJvciJdOwogICAg
IGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1Rlc3RQcm90
b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltbc3VwZXIg
b2JqZWN0Rm9yS2V5OkAiZXJyb3IiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJl
dHVybiBbW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVj
dDpbW3N1cGVyIG9iamVjdEZvcktleTpAImVycm9yIl0gdG9KU09OT2JqZWN0XS5nZXQoKV07CiB9
CiAKIC0gKHZvaWQpc2V0RXJyb3JMaXN0OihOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VF
cnJvcj4qLyAqKWVycm9yTGlzdAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEVf
SU5fQVJSQVkoZXJyb3JMaXN0LCBbVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciBjbGFzc10pOwot
ICAgIFtzdXBlciBzZXRJbnNwZWN0b3JBcnJheTppbnNwZWN0b3JPYmplY3RBcnJheShlcnJvckxp
c3QpIGZvcktleTpAImVycm9yTGlzdCJdOworICAgIFtzdXBlciBzZXRKU09OQXJyYXk6dG9KU09O
T2JqZWN0QXJyYXkoZXJyb3JMaXN0KSBmb3JLZXk6QCJlcnJvckxpc3QiXTsKIH0KIAogLSAoTlNB
cnJheS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3QKIHsKLSAgICBy
ZXR1cm4gb2JqY0FycmF5PFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+KFtzdXBlciBpbnNwZWN0
b3JBcnJheUZvcktleTpAImVycm9yTGlzdCJdKTsKKyAgICByZXR1cm4gdG9PYmpDQXJyYXk8VGVz
dFByb3RvY29sRGF0YWJhc2VFcnJvcj4oW3N1cGVyIEpTT05BcnJheUZvcktleTpAImVycm9yTGlz
dCJdKTsKIH0KIAogQGVuZApAQCAtMjAxMCw5ICsyMDEwLDkgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKW9i
amVjdAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6
W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pTT05PYmplY3RdLmdldCgpXSkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTIwNDcsMjIgKzIw
NDcsMjIgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClzZXRDb2x1bW5O
YW1lczooTlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMKIHsKLSAgICBbc3VwZXIg
c2V0SW5zcGVjdG9yQXJyYXk6aW5zcGVjdG9yU3RyaW5nQXJyYXkoY29sdW1uTmFtZXMpIGZvcktl
eTpAImNvbHVtbk5hbWVzIl07CisgICAgW3N1cGVyIHNldEpTT05BcnJheTp0b0pTT05TdHJpbmdB
cnJheShjb2x1bW5OYW1lcykgZm9yS2V5OkAiY29sdW1uTmFtZXMiXTsKIH0KIAogLSAoTlNBcnJh
eS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMKIHsKLSAgICByZXR1cm4gb2JqY1N0cmluZ0Fy
cmF5KFtzdXBlciBpbnNwZWN0b3JBcnJheUZvcktleTpAImNvbHVtbk5hbWVzIl0pOworICAgIHJl
dHVybiB0b09iakNTdHJpbmdBcnJheShbc3VwZXIgSlNPTkFycmF5Rm9yS2V5OkAiY29sdW1uTmFt
ZXMiXSk7CiB9CiAKIC0gKHZvaWQpc2V0QnV0dG9uczooTlNBcnJheS8qPE5TU3RyaW5nPiovICop
YnV0dG9ucwogewotICAgIFtzdXBlciBzZXRJbnNwZWN0b3JBcnJheTppbnNwZWN0b3JTdHJpbmdB
cnJheShidXR0b25zKSBmb3JLZXk6QCJidXR0b25zIl07CisgICAgW3N1cGVyIHNldEpTT05BcnJh
eTp0b0pTT05TdHJpbmdBcnJheShidXR0b25zKSBmb3JLZXk6QCJidXR0b25zIl07CiB9CiAKIC0g
KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWJ1dHRvbnMKIHsKLSAgICByZXR1cm4gb2JqY1N0cmlu
Z0FycmF5KFtzdXBlciBpbnNwZWN0b3JBcnJheUZvcktleTpAImJ1dHRvbnMiXSk7CisgICAgcmV0
dXJuIHRvT2JqQ1N0cmluZ0FycmF5KFtzdXBlciBKU09OQXJyYXlGb3JLZXk6QCJidXR0b25zIl0p
OwogfQogCiAtICh2b2lkKXNldERpcmVjdGlvbmFsaXR5OihUZXN0UHJvdG9jb2xEYXRhYmFzZVBh
cmFtZXRlckJ1bmRsZURpcmVjdGlvbmFsaXR5KWRpcmVjdGlvbmFsaXR5CkBAIC0yMTA1LDcgKzIx
MDUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFJXSVByb3RvY29sSlNPTk9i
amVjdCAqb2JqZWN0ID0gW3N1cGVyIG9iamVjdEZvcktleTpAInZhbHVlcyJdOwogICAgIGlmICgh
b2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1JXSVByb3RvY29sSlNP
Tk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RGb3JL
ZXk6QCJ2YWx1ZXMiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJldHVybiBbW1JX
SVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0Oltbc3VwZXIgb2Jq
ZWN0Rm9yS2V5OkAidmFsdWVzIl0gdG9KU09OT2JqZWN0XS5nZXQoKV07CiB9CiAKIC0gKHZvaWQp
c2V0UGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZApAQCAtMjExOCw3ICsy
MTE4LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBSV0lQcm90b2NvbEpTT05P
YmplY3QgKm9iamVjdCA9IFtzdXBlciBvYmplY3RGb3JLZXk6QCJwYXlsb2FkIl07CiAgICAgaWYg
KCFvYmplY3QpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbUldJUHJvdG9jb2xK
U09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZv
cktleTpAInBheWxvYWQiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJldHVybiBb
W1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhKU09OT2JqZWN0Oltbc3VwZXIg
b2JqZWN0Rm9yS2V5OkAicGF5bG9hZCJdIHRvSlNPTk9iamVjdF0uZ2V0KCldOwogfQogCiAtICh2
b2lkKXNldEVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IKQEAgLTIxMzEs
MTggKzIxMzEsMTggQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBSV0lQcm90b2Nv
bEpTT05PYmplY3QgKm9iamVjdCA9IFtzdXBlciBvYmplY3RGb3JLZXk6QCJlcnJvciJdOwogICAg
IGlmICghb2JqZWN0KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1Rlc3RQcm90
b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltbc3VwZXIg
b2JqZWN0Rm9yS2V5OkAiZXJyb3IiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJl
dHVybiBbW1Rlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVj
dDpbW3N1cGVyIG9iamVjdEZvcktleTpAImVycm9yIl0gdG9KU09OT2JqZWN0XS5nZXQoKV07CiB9
CiAKIC0gKHZvaWQpc2V0RXJyb3JMaXN0OihOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJhc2VF
cnJvcj4qLyAqKWVycm9yTGlzdAogewogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEVf
SU5fQVJSQVkoZXJyb3JMaXN0LCBbVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciBjbGFzc10pOwot
ICAgIFtzdXBlciBzZXRJbnNwZWN0b3JBcnJheTppbnNwZWN0b3JPYmplY3RBcnJheShlcnJvckxp
c3QpIGZvcktleTpAImVycm9yTGlzdCJdOworICAgIFtzdXBlciBzZXRKU09OQXJyYXk6dG9KU09O
T2JqZWN0QXJyYXkoZXJyb3JMaXN0KSBmb3JLZXk6QCJlcnJvckxpc3QiXTsKIH0KIAogLSAoTlNB
cnJheS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3QKIHsKLSAgICBy
ZXR1cm4gb2JqY0FycmF5PFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+KFtzdXBlciBpbnNwZWN0
b3JBcnJheUZvcktleTpAImVycm9yTGlzdCJdKTsKKyAgICByZXR1cm4gdG9PYmpDQXJyYXk8VGVz
dFByb3RvY29sRGF0YWJhc2VFcnJvcj4oW3N1cGVyIEpTT05BcnJheUZvcktleTpAImVycm9yTGlz
dCJdKTsKIH0KIAogQGVuZApAQCAtMjE3MSw5ICsyMTcxLDkgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKW9i
amVjdAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6
W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pTT05PYmplY3RdLmdldCgpXSkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTIyNjAsOSArMjI2
MCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0K
LS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKWpzb25PYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihS
V0lQcm90b2NvbEpTT05PYmplY3QgKilvYmplY3QKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5n
ZXQoKV0pKQorICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhKU09OT2JqZWN0OltvYmpl
Y3QgdG9KU09OT2JqZWN0XS5nZXQoKV0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0
dXJuIHNlbGY7CkBAIC0yMzA2LDkgKzIzMDYsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiAgICAgcmV0dXJuIHNlbGY7CiB9Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2Jq
ZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0CistIChpbnN0YW5jZXR5cGUp
aW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopb2JqZWN0CiB7
Ci0gICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9i
amVjdCB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRXaXRoSlNPTk9iamVjdDpbb2JqZWN0IHRvSlNPTk9iamVjdF0uZ2V0KCldKSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAogICAgIHJldHVybiBzZWxmOwpAQCAtMjM1MCwyMiArMjM1MCwyMiBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2b2lkKXNldEJ1dHRvbnM6KE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqKWJ1dHRvbnMKIHsKLSAgICBbc3VwZXIgc2V0SW5zcGVjdG9yQXJy
YXk6aW5zcGVjdG9yU3RyaW5nQXJyYXkoYnV0dG9ucykgZm9yS2V5OkAiYnV0dG9ucyJdOworICAg
IFtzdXBlciBzZXRKU09OQXJyYXk6dG9KU09OU3RyaW5nQXJyYXkoYnV0dG9ucykgZm9yS2V5OkAi
YnV0dG9ucyJdOwogfQogCiAtIChOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilidXR0b25zCiB7Ci0g
ICAgcmV0dXJuIG9iamNTdHJpbmdBcnJheShbc3VwZXIgaW5zcGVjdG9yQXJyYXlGb3JLZXk6QCJi
dXR0b25zIl0pOworICAgIHJldHVybiB0b09iakNTdHJpbmdBcnJheShbc3VwZXIgSlNPTkFycmF5
Rm9yS2V5OkAiYnV0dG9ucyJdKTsKIH0KIAogLSAodm9pZClzZXRDb2x1bW5OYW1lczooTlNBcnJh
eS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMKIHsKLSAgICBbc3VwZXIgc2V0SW5zcGVjdG9y
QXJyYXk6aW5zcGVjdG9yU3RyaW5nQXJyYXkoY29sdW1uTmFtZXMpIGZvcktleTpAImNvbHVtbk5h
bWVzIl07CisgICAgW3N1cGVyIHNldEpTT05BcnJheTp0b0pTT05TdHJpbmdBcnJheShjb2x1bW5O
YW1lcykgZm9yS2V5OkAiY29sdW1uTmFtZXMiXTsKIH0KIAogLSAoTlNBcnJheS8qPE5TU3RyaW5n
PiovICopY29sdW1uTmFtZXMKIHsKLSAgICByZXR1cm4gb2JqY1N0cmluZ0FycmF5KFtzdXBlciBp
bnNwZWN0b3JBcnJheUZvcktleTpAImNvbHVtbk5hbWVzIl0pOworICAgIHJldHVybiB0b09iakNT
dHJpbmdBcnJheShbc3VwZXIgSlNPTkFycmF5Rm9yS2V5OkAiY29sdW1uTmFtZXMiXSk7CiB9CiAK
IC0gKHZvaWQpc2V0Tm90ZXM6KE5TU3RyaW5nICopbm90ZXMKQEAgLTIzOTgsNyArMjM5OCw3IEBA
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpv
YmplY3QgPSBbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidmFsdWVzIl07CiAgICAgaWYgKCFvYmplY3Qp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIFtbUldJUHJvdG9jb2xKU09OT2JqZWN0
IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZvcktleTpAInZh
bHVlcyJdIHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV07CisgICAgcmV0dXJuIFtbUldJUHJvdG9j
b2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6W1tzdXBlciBvYmplY3RGb3JL
ZXk6QCJ2YWx1ZXMiXSB0b0pTT05PYmplY3RdLmdldCgpXTsKIH0KIAogLSAodm9pZClzZXRQYXls
b2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkCkBAIC0yNDExLDcgKzI0MTEsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAq
b2JqZWN0ID0gW3N1cGVyIG9iamVjdEZvcktleTpAInBheWxvYWQiXTsKICAgICBpZiAoIW9iamVj
dCkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tSV0lQcm90b2NvbEpTT05PYmpl
Y3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltbc3VwZXIgb2JqZWN0Rm9yS2V5OkAi
cGF5bG9hZCJdIHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV07CisgICAgcmV0dXJuIFtbUldJUHJv
dG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6W1tzdXBlciBvYmplY3RG
b3JLZXk6QCJwYXlsb2FkIl0gdG9KU09OT2JqZWN0XS5nZXQoKV07CiB9CiAKIC0gKHZvaWQpc2V0
RXJyb3I6KFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IgKillcnJvcgpAQCAtMjQyNCw3ICsyNDI0
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKm9iamVjdCA9IFtzdXBlciBvYmplY3RGb3JLZXk6QCJlcnJvciJdOwogICAgIGlmICghb2Jq
ZWN0KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1Rlc3RQcm90b2NvbERhdGFi
YXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltbc3VwZXIgb2JqZWN0Rm9y
S2V5OkAiZXJyb3IiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJldHVybiBbW1Rl
c3RQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDpbW3N1cGVy
IG9iamVjdEZvcktleTpAImVycm9yIl0gdG9KU09OT2JqZWN0XS5nZXQoKV07CiB9CiAKIEBlbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1
bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZ2VuZXJp
Yy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0CmluZGV4
IGIzNjAwZmNmZWI2MTRmZWIwNDNjNjRkNzgwMGFiMjFhNjk2NDcxOGQuLjdkMWJmZWY0NmE1ZDk4
YTRmMGMwZjFjNTNkNTU2ZjYwNDEwMzE1YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVjdGVkL3R5cGUtcmVxdWly
aW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS1yZXF1aXJpbmct
cnVudGltZS1jYXN0cy5qc29uLXJlc3VsdApAQCAtMTEwNSw3ICsxMTA1LDcgQEAgdHlwZWRlZiBO
U19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMpIHsKIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9j
b2xUZXN0VHlwZU5lZWRpbmdDYXN0IDogUldJUHJvdG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5
bG9hZDsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNP
Tk9iamVjdCAqKWpzb25PYmplY3Q7CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9i
amVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgbnVtYmVyOihpbnQpbnVtYmVyIGFu
aW1hbHM6KFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKWFuaW1hbHMgaWRlbnRpZmllcjoo
aW50KWlkZW50aWZpZXIgdHJlZTooVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgKil0
cmVlOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5n
ICpzdHJpbmc7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBp
bnQgbnVtYmVyOwpAQCAtMTExNywxNCArMTExNywxNCBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0Iikp
KQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSA6IFJXSVByb3Rv
Y29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhK
U09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OworLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpz
b25PYmplY3Q7CiAvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBU
ZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiAqb2JqOwogQGVuZAogCiBfX2F0dHJpYnV0
ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sVGVz
dFJlY3Vyc2l2ZU9iamVjdDIgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2Fk
OwotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICopanNvbk9iamVjdDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0
OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OwogLyogb3B0aW9uYWwgKi8gQHBy
b3BlcnR5IChub25hdG9taWMsIHJldGFpbikgVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVj
dDEgKm9iajsKIEBlbmQKIApAQCAtMTQ3NSw5ICsxNDc1LDkgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogICAgIHJldHVybiBzZWxmOwogfQotLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRo
SlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNvbk9iamVjdAorLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKW9i
amVjdAogewotICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6
W2pzb25PYmplY3QgdG9JbnNwZWN0b3JPYmplY3RdLmdldCgpXSkpCisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0V2l0aEpTT05PYmplY3Q6W29iamVjdCB0b0pTT05PYmplY3RdLmdldCgpXSkp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTE1NTAsNyArMTU1
MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAgICAgUldJUHJvdG9jb2xKU09OT2Jq
ZWN0ICpvYmplY3QgPSBbc3VwZXIgb2JqZWN0Rm9yS2V5OkAidHJlZSJdOwogICAgIGlmICghb2Jq
ZWN0KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1Rlc3RQcm90b2NvbFRlc3RS
ZWN1cnNpdmVPYmplY3QxIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9i
amVjdEZvcktleTpAInRyZWUiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJldHVy
biBbW1Rlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxIGFsbG9jXSBpbml0V2l0aEpTT05P
YmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJ0cmVlIl0gdG9KU09OT2JqZWN0XS5nZXQoKV07
CiB9CiAKIEBlbmQKQEAgLTE1NjYsOSArMTU2Niw5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KLS0gKGluc3RhbmNldHlwZSlpbml0V2l0aEpTT05P
YmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKKy0gKGluc3RhbmNldHlw
ZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilvYmplY3QK
IHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0Oltqc29u
T2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdFdpdGhKU09OT2JqZWN0OltvYmplY3QgdG9KU09OT2JqZWN0XS5nZXQoKV0pKQogICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xNTg0LDcgKzE1ODQsNyBA
QCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgIFJXSVByb3RvY29sSlNPTk9iamVjdCAq
b2JqZWN0ID0gW3N1cGVyIG9iamVjdEZvcktleTpAIm9iaiJdOwogICAgIGlmICghb2JqZWN0KQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBbW1Rlc3RQcm90b2NvbFRlc3RSZWN1cnNp
dmVPYmplY3QyIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbW3N1cGVyIG9iamVjdEZv
cktleTpAIm9iaiJdIHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV07CisgICAgcmV0dXJuIFtbVGVz
dFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDIgYWxsb2NdIGluaXRXaXRoSlNPTk9iamVjdDpb
W3N1cGVyIG9iamVjdEZvcktleTpAIm9iaiJdIHRvSlNPTk9iamVjdF0uZ2V0KCldOwogfQogCiBA
ZW5kCkBAIC0xNjAwLDkgKzE2MDAsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAg
ICAgcmV0dXJuIHNlbGY7CiB9Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihS
V0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopb2JqZWN0CiB7Ci0gICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0
b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRX
aXRoSlNPTk9iamVjdDpbb2JqZWN0IHRvSlNPTk9iamVjdF0uZ2V0KCldKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKIAogICAgIHJldHVybiBzZWxmOwpAQCAtMTYxOCw3ICsxNjE4LDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9iamVjdCA9
IFtzdXBlciBvYmplY3RGb3JLZXk6QCJvYmoiXTsKICAgICBpZiAoIW9iamVjdCkKICAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICByZXR1cm4gW1tUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0
MSBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6W1tzdXBlciBvYmplY3RGb3JLZXk6QCJv
YmoiXSB0b0luc3BlY3Rvck9iamVjdF0uZ2V0KCldOworICAgIHJldHVybiBbW1Rlc3RQcm90b2Nv
bFRlc3RSZWN1cnNpdmVPYmplY3QxIGFsbG9jXSBpbml0V2l0aEpTT05PYmplY3Q6W1tzdXBlciBv
YmplY3RGb3JLZXk6QCJvYmoiXSB0b0pTT05PYmplY3RdLmdldCgpXTsKIH0KIAogQGVuZApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2dl
bmVyaWMvZXhwZWN0ZWQvdHlwZS13aXRoLW9wZW4tcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9nZW5lcmljL2V4cGVj
dGVkL3R5cGUtd2l0aC1vcGVuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggYjE0MzljZmRm
NzViNmI5YWIwZmJhYmEwYTlhYzdmYTU3ODYxOTZjYi4uMTFhMjA4YTU3YTM5YTMxMDgxZjc2MjU5
ZjI4NTVlZTU3MmQxZWM4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2dlbmVyaWMvZXhwZWN0ZWQvdHlwZS13aXRoLW9wZW4tcGFyYW1l
dGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZ2VuZXJpYy9leHBlY3RlZC90eXBlLXdpdGgtb3Blbi1wYXJhbWV0ZXJzLmpz
b24tcmVzdWx0CkBAIC04MDAsNyArODAwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwg
VGVzdFByb3RvY29sUGxhdGZvcm0pIHsKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0Tm9PcGVuUGFyYW1ldGVycyA6IFJX
SVByb3RvY29sSlNPTk9iamVjdAogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNE
aWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7Ci0tIChpbnN0YW5jZXR5cGUpaW5p
dFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OworLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUHJvdG9jb2xPYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKWpzb25PYmplY3Q7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhPbmU6KGRvdWJsZSlvbmUg
dHdvOihkb3VibGUpdHdvOwogLyogcmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFz
c2lnbikgZG91YmxlIG9uZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBh
c3NpZ24pIGRvdWJsZSB0d287CkBAIC04MDksNyArODA5LDcgQEAgX19hdHRyaWJ1dGVfXygodmlz
aWJpbGl0eSAoImRlZmF1bHQiKSkpCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVs
dCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sVGVzdE9wZW5QYXJhbWV0ZXJzIDogUldJUHJv
dG9jb2xKU09OT2JqZWN0CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKLS0gKGluc3RhbmNldHlwZSlpbml0V2l0
aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3Q7CistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICop
anNvbk9iamVjdDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEFscGhhOihkb3VibGUpYWxwaGEg
YmV0YTooZG91YmxlKWJldGE7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywg
YXNzaWduKSBkb3VibGUgYWxwaGE7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21p
YywgYXNzaWduKSBkb3VibGUgYmV0YTsKQEAgLTEwNTcsOSArMTA1Nyw5IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKICAgICByZXR1cm4gc2VsZjsKIH0KLS0gKGluc3RhbmNldHlwZSlp
bml0V2l0aEpTT05PYmplY3Q6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKWpzb25PYmplY3QKKy0g
KGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKilvYmplY3QKIHsKLSAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSW5zcGVjdG9y
T2JqZWN0Oltqc29uT2JqZWN0IHRvSW5zcGVjdG9yT2JqZWN0XS5nZXQoKV0pKQorICAgIGlmICgh
KHNlbGYgPSBbc3VwZXIgaW5pdFdpdGhKU09OT2JqZWN0OltvYmplY3QgdG9KU09OT2JqZWN0XS5n
ZXQoKV0pKQogICAgICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIHNlbGY7CkBAIC0xMTEz
LDkgKzExMTMsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNl
bGY7CiB9Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpT
T05PYmplY3QgKilqc29uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9i
amVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopb2JqZWN0CiB7Ci0gICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9i
amVjdF0uZ2V0KCldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSlNPTk9iamVj
dDpbb2JqZWN0IHRvSlNPTk9iamVjdF0uZ2V0KCldKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAog
ICAgIHJldHVybiBzZWxmOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZpbml0aW9ucy13aXRoLW1hYy1wbGF0
Zm9ybS5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9tYWMvZXhwZWN0ZWQvZGVmaW5pdGlvbnMtd2l0aC1tYWMtcGxhdGZvcm0uanNvbi1y
ZXN1bHQKaW5kZXggMWIwMDBlNmMwZjdjYTI5ZDlhNjA1ZGIxMWM5Y2U2ZjYxMDQwMzhhMC4uMjM3
NTMwZThhY2FjMjIwNDg5OGQ0YmEwMjE2ZjVlYjZjNGQ1NmU0YiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL21hYy9leHBlY3RlZC9kZWZp
bml0aW9ucy13aXRoLW1hYy1wbGF0Zm9ybS5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvbWFjL2V4cGVjdGVkL2RlZmluaXRpb25z
LXdpdGgtbWFjLXBsYXRmb3JtLmpzb24tcmVzdWx0CkBAIC05MDcsNyArOTA3LDcgQEAgdHlwZWRl
ZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUGxhdGZvcm0pIHsKIF9fYXR0cmlidXRl
X18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xOZXR3
b3JrRXJyb3IgOiBSV0lQcm90b2NvbEpTT05PYmplY3QKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwotLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoSlNPTk9iamVjdDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopanNv
bk9iamVjdDsKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFByb3RvY29sT2JqZWN0OihSV0lQcm90
b2NvbEpTT05PYmplY3QgKilqc29uT2JqZWN0OwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVz
c2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICptZXNzYWdlOwogLyogcmVxdWly
ZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgaW50IGNvZGU7CkBAIC0xMTU2LDkg
KzExNTYsOSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAgICAgcmV0dXJuIHNlbGY7
CiB9Ci0tIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhKU09OT2JqZWN0OihSV0lQcm90b2NvbEpTT05P
YmplY3QgKilqc29uT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQcm90b2NvbE9iamVj
dDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopb2JqZWN0CiB7Ci0gICAgaWYgKCEoc2VsZiA9IFtz
dXBlciBpbml0V2l0aEluc3BlY3Rvck9iamVjdDpbanNvbk9iamVjdCB0b0luc3BlY3Rvck9iamVj
dF0uZ2V0KCldKSkKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRXaXRoSlNPTk9iamVjdDpb
b2JqZWN0IHRvSlNPTk9iamVjdF0uZ2V0KCldKSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAg
IHJldHVybiBzZWxmOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>