<?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>155102</bug_id>
          
          <creation_ts>2016-03-06 22:06:50 -0800</creation_ts>
          <short_desc>Web Inspector: It should be possible to initialize generated ObjC protocol types from an NSDictionary payload</short_desc>
          <delta_ts>2016-03-07 10:41:25 -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>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Blaze Burg">bburg</reporter>
          <assigned_to name="Blaze Burg">bburg</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mattbaker</cc>
    
    <cc>msaboff</cc>
    
    <cc>nvasilyev</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>1171522</commentid>
    <comment_count>0</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-06 22:06:50 -0800</bug_when>
    <thetext>Generate this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171523</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-03-06 22:07:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/25002015&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171528</commentid>
    <comment_count>2</comment_count>
      <attachid>273163</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-06 23:30:34 -0800</bug_when>
    <thetext>Created attachment 273163
Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171529</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-06 23:31:36 -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>1171597</commentid>
    <comment_count>4</comment_count>
      <attachid>273163</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2016-03-07 09:04:09 -0800</bug_when>
    <thetext>Comment on attachment 273163
Proposed Fix

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

&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:124
&gt; +        lines.append(&apos;&apos;)

You should drop this. It leads to two newlines in a row.

&gt; Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:1462
&gt; +
&gt; +

This should be one newline. See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171622</commentid>
    <comment_count>5</comment_count>
      <attachid>273187</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-07 09:43:47 -0800</bug_when>
    <thetext>Created attachment 273187
For Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171624</commentid>
    <comment_count>6</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2016-03-07 09:45:19 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 273163 [details]
&gt; Proposed Fix
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=273163&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:124
&gt; &gt; +        lines.append(&apos;&apos;)
&gt; 
&gt; You should drop this. It leads to two newlines in a row.
&gt; 
&gt; &gt; Source/JavaScriptCore/inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:1462
&gt; &gt; +
&gt; &gt; +
&gt; 
&gt; This should be one newline. See above.

Ok. I also guarded this new method so it&apos;s only generated when we pass &apos;--frontend&apos; to the generator, and rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171625</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 09:46:05 -0800</bug_when>
    <thetext>Attachment 273187 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_header.py:164:  [ObjCHeaderGenerator._generate_type_interface] Instance of &apos;ObjCHeaderGenerator&apos; has no &apos;get_generator_setting&apos; member  [pylint/E1101] [5]
ERROR: Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:94:  [ObjCProtocolTypesImplementationGenerator.generate_type_implementation] Instance of &apos;ObjCProtocolTypesImplementationGenerator&apos; has no &apos;get_generator_setting&apos; member  [pylint/E1101] [5]
Total errors found: 2 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171656</commentid>
    <comment_count>8</comment_count>
      <attachid>273187</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 10:41:20 -0800</bug_when>
    <thetext>Comment on attachment 273187
For Landing

Clearing flags on attachment: 273187

Committed r197689: &lt;http://trac.webkit.org/changeset/197689&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1171658</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-03-07 10:41:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273163</attachid>
            <date>2016-03-06 23:30:34 -0800</date>
            <delta_ts>2016-03-07 09:43:43 -0800</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-155102-20160306233020.patch</filename>
            <type>text/plain</type>
            <size>28406</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTc3MjgxYTNiMGIyYzBmMjgyYjRjNDVmZDRkZTk2ZjEwOWFiNjIwLi43ODAzYjQyNWI3NmE3ODIw
ZWVmNGI2ZWI2MWM5OTYxYWQyOTM4YWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOSBAQAogMjAxNi0wMy0wNiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaW5pdGlhbGl6
ZSBnZW5lcmF0ZWQgT2JqQyBwcm90b2NvbCB0eXBlcyBmcm9tIGFuIE5TRGljdGlvbmFyeSBwYXls
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUx
MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1MDAyMDE1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIE9iamVjdGl2ZS1DIGNvZGUsIHdlIHNv
bWV0aW1lcyBwcmVmZXIgdG8gcGFyc2UgSlNPTiB1c2luZyBDb2NvYSByYXRoZXIKKyAgICAgICAg
dGhhbiB0aGUgSW5zcGVjdG9yVmFsdWUgY2xhc3Nlcy4gU3VwcG9ydCBpbml0aWFsaXppbmcgcHJv
dG9jb2wgb2JqZWN0cworICAgICAgICBkaXJlY3RseSBmcm9tIGFuIE5TRGljdGlvbmFyeSBwYXls
b2FkLiBUaGlzIGRlbGVnYXRlcyB2YWxpZGF0aW9uIG9mIHZhbHVlcyB0bworICAgICAgICB0aGUg
c2V0dGVyIG1ldGhvZHMgdGhhdCBhbHJlYWR5IGV4aXN0IG9uIHRoZSBwcm90b2NvbCBvYmplY3Qg
Y2xhc3Nlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19oZWFkZXIucHk6CisgICAgICAgIChPYmpDSGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV90
eXBlX2ludGVyZmFjZSk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoT2Jq
Q1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5nZW5lcmF0ZV90eXBlX2ltcGxl
bWVudGF0aW9uKToKKyAgICAgICAgKE9iakNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5l
cmF0b3IuX2dlbmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9wYXlsb2FkKToKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAoT2JqQ0dl
bmVyYXRvci5wYXlsb2FkX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKToKKyAgICAgICAg
QWRkIGEgbmV3IGhlbHBlciBtZXRob2QgdG8gZ2VuZXJhdGUgYW4gZXhwcmVzc2lvbiB0byB1bnBh
Y2sgdGhlIHZhbHVlCisgICAgICAgIGZyb20gYW4gTlNEaWN0aW9uYXJ5LiBJZiBpdCdzIG5vdCBh
IHByaW1pdGl2ZSwgdGhlIHNldHRlciBwZXJmb3JtcworICAgICAgICB2YWxpZGF0aW9uIG9mIHRo
ZSB2YWx1ZSdzIGtpbmQgdXNpbmcgLVtOU09iamVjdCBpc0tpbmRPZkNsYXNzOl0uCisKKyAgICAg
ICAgUmViYXNlbGluZSByZWxldmFudCB0ZXN0cy4KKworICAgICAgICAqIGluc3BlY3Rvci9zY3Jp
cHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVz
dWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25h
bC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dl
ZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlwZS5qc29u
LXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBl
LXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0OgorCisyMDE2LTAzLTA2ICBCcmlh
biBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRoZSBw
cm90b2NvbCBnZW5lcmF0b3Igc2hvdWxkIGhhdmUgc2VwYXJhdGUgcHJlZml4IG9wdGlvbnMgZm9y
IE9iamVjdGl2ZS1DIGNsYXNzZXMgYW5kIGZpbGVuYW1lcwogICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTAxCiAgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yNTAwMDA1Mz4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
c2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19oZWFkZXIucHkK
aW5kZXggNTgyNTlmNDU3MDY1YzQ1YjQxYmYyZGM2OTRiMjZmMGE3ZjM0MGMwNS4uOWY5YWM1NzBl
MjY5NDkwMGU3MTAxNDM5YTZmYzk5MTk3YmU5OGQ3ZSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19oZWFkZXIu
cHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfb2JqY19oZWFkZXIucHkKQEAgLTE1OSw2ICsxNTksNyBAQCBjbGFzcyBPYmpDSGVh
ZGVyR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAgICBvYmpjX25hbWUgPSBzZWxmLm9i
amNfbmFtZV9mb3JfdHlwZShkZWNsYXJhdGlvbi50eXBlKQogICAgICAgICBsaW5lcy5hcHBlbmQo
J19fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKScpCiAgICAgICAgIGxpbmVz
LmFwcGVuZCgnQGludGVyZmFjZSAlcyA6ICVzSlNPTk9iamVjdCcgJSAob2JqY19uYW1lLCBPYmpD
R2VuZXJhdG9yLk9CSkNfU1RBVElDX1BSRUZJWCkpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlk
PiAqKXBheWxvYWQ7JykKICAgICAgICAgcmVxdWlyZWRfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEg
bWVtYmVyOiBub3QgbWVtYmVyLmlzX29wdGlvbmFsLCBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnMp
CiAgICAgICAgIG9wdGlvbmFsX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbWVtYmVy
LmlzX29wdGlvbmFsLCBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnMpCiAgICAgICAgIGlmIHJlcXVp
cmVkX21lbWJlcnM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0
aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQppbmRleCAxMDQz
NTU0Mjg4MjM3YjI1Y2QwZGE1M2RhODdmNTkxMTk4OWI4MGUyLi41NzNlMmFiMjkzYWM4NjJhNjNi
YjhkOGNiODE2ZmUzMzcwZjE4ZDE0IDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2lt
cGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24u
cHkKQEAgLTkwLDYgKzkwLDggQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlv
bkdlbmVyYXRvcihPYmpDR2VuZXJhdG9yKToKICAgICBkZWYgZ2VuZXJhdGVfdHlwZV9pbXBsZW1l
bnRhdGlvbihzZWxmLCBkb21haW4sIGRlY2xhcmF0aW9uKToKICAgICAgICAgbGluZXMgPSBbXQog
ICAgICAgICBsaW5lcy5hcHBlbmQoJ0BpbXBsZW1lbnRhdGlvbiAlcycgJSBzZWxmLm9iamNfbmFt
ZV9mb3JfdHlwZShkZWNsYXJhdGlvbi50eXBlKSkKKyAgICAgICAgbGluZXMuYXBwZW5kKCcnKQor
ICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfaW5pdF9tZXRob2RfZm9yX3BheWxv
YWQoZG9tYWluLCBkZWNsYXJhdGlvbikpCiAgICAgICAgIHJlcXVpcmVkX21lbWJlcnMgPSBmaWx0
ZXIobGFtYmRhIG1lbWJlcjogbm90IG1lbWJlci5pc19vcHRpb25hbCwgZGVjbGFyYXRpb24udHlw
ZV9tZW1iZXJzKQogICAgICAgICBpZiByZXF1aXJlZF9tZW1iZXJzOgogICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcnKQpAQCAtMTAzLDYgKzEwNSwyNyBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBl
c0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9iakNHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcy5h
cHBlbmQoJ0BlbmQnKQogICAgICAgICByZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQogCisgICAgZGVm
IF9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfcGF5bG9hZChzZWxmLCBkb21haW4sIGRlY2xhcmF0
aW9uKToKKyAgICAgICAgbGluZXMgPSBbXQorICAgICAgICBsaW5lcy5hcHBlbmQoJy0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KG5vbm51bGwgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IGlkPiAqKXBheWxvYWQnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ3snKQorICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSknKQorICAgICAgICBsaW5l
cy5hcHBlbmQoJyAgICAgICAgcmV0dXJuIG5pbDsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJycp
CisKKyAgICAgICAgZm9yIG1lbWJlciBpbiBkZWNsYXJhdGlvbi50eXBlX21lbWJlcnM6CisgICAg
ICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5lcmF0b3IuaWRlbnRpZmllcl90b19vYmpjX2lkZW50
aWZpZXIobWVtYmVyLm1lbWJlcl9uYW1lKQorICAgICAgICAgICAgaWYgbm90IG1lbWJlci5pc19v
cHRpb25hbDoKKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJ
T05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCIlcyJdLCBAIiVzIik7JyAlICh2YXJf
bmFtZSwgdmFyX25hbWUpKQorICAgICAgICAgICAgY29udmVyc2lvbl9leHByZXNzaW9uID0gc2Vs
Zi5wYXlsb2FkX3RvX29iamNfZXhwcmVzc2lvbl9mb3JfbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1i
ZXIpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBzZWxmLiVzID0gJXM7JyAlICh2YXJf
bmFtZSwgY29udmVyc2lvbl9leHByZXNzaW9uKSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgn
JykKKworICAgICAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
IHJldHVybiBzZWxmOycpCisgICAgICAgIGxpbmVzLmFwcGVuZCgnfScpCisgICAgICAgIHJldHVy
biAnXG4nLmpvaW4obGluZXMpCisKICAgICBkZWYgX2dlbmVyYXRlX2luaXRfbWV0aG9kX2Zvcl9y
ZXF1aXJlZF9tZW1iZXJzKHNlbGYsIGRvbWFpbiwgZGVjbGFyYXRpb24sIHJlcXVpcmVkX21lbWJl
cnMpOgogICAgICAgICBwYWlycyA9IFtdCiAgICAgICAgIGZvciBtZW1iZXIgaW4gcmVxdWlyZWRf
bWVtYmVyczoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKaW5kZXggMjM5OWU3YTY5
MDY4YzA4OGI0MWMxMTZmOWQ2M2ZlNDdkZDg4YTZmMi4uMjlmZjRhMDllOWU2YTA4MzgyZjNjYzEy
NjkxOTkwYmQ2Nzk3YTJmNiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vb2JqY19nZW5lcmF0b3IucHkKQEAg
LTQ1Nyw2ICs0NTcsMzEgQEAgY2xhc3MgT2JqQ0dlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAg
ICAgICAgICAgIHJldHVybiAnb2JqY0ludGVnZXJBcnJheSglcyknICUgc3ViX2V4cHJlc3Npb24K
ICAgICAgICAgICAgIHJldHVybiAnb2JqY0FycmF5PCVzPiglcyknICUgKG9iamNfY2xhc3MsIHN1
Yl9leHByZXNzaW9uKQogCisgICAgZGVmIHBheWxvYWRfdG9fb2JqY19leHByZXNzaW9uX2Zvcl9t
ZW1iZXIoc2VsZiwgZGVjbGFyYXRpb24sIG1lbWJlcik6CisgICAgICAgIF90eXBlID0gbWVtYmVy
LnR5cGUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQWxpYXNlZFR5cGUpOgorICAgICAg
ICAgICAgX3R5cGUgPSBfdHlwZS5hbGlhc2VkX3R5cGUKKyAgICAgICAgaWYgaXNpbnN0YW5jZShf
dHlwZSwgUHJpbWl0aXZlVHlwZSk6CisgICAgICAgICAgICBzdWJfZXhwcmVzc2lvbiA9ICdwYXls
b2FkW0AiJXMiXScgJSBtZW1iZXIubWVtYmVyX25hbWUKKyAgICAgICAgICAgIHJhd19uYW1lID0g
X3R5cGUucmF3X25hbWUoKQorICAgICAgICAgICAgaWYgcmF3X25hbWUgaXMgJ2Jvb2xlYW4nOgor
ICAgICAgICAgICAgICAgIHJldHVybiAnWyVzIGJvb2xWYWx1ZV0nICUgc3ViX2V4cHJlc3Npb24K
KyAgICAgICAgICAgIGlmIHJhd19uYW1lIGlzICdpbnRlZ2VyJzoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gJ1slcyBpbnRlZ2VyVmFsdWVdJyAlIHN1Yl9leHByZXNzaW9uCisgICAgICAgICAgICBp
ZiByYXdfbmFtZSBpcyAnbnVtYmVyJzoKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1slcyBkb3Vi
bGVWYWx1ZV0nICUgc3ViX2V4cHJlc3Npb24KKyAgICAgICAgICAgIGlmIHJhd19uYW1lIGluIFsn
YW55JywgJ29iamVjdCcsICdhcnJheScsICdzdHJpbmcnXToKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3ViX2V4cHJlc3Npb24gICMgVGhlIHNldHRlciB3aWxsIGNoZWNrIHRoZSBpbmNvbWluZyB2
YWx1ZS4KKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIGlzaW5zdGFuY2UobWVt
YmVyLnR5cGUsIEVudW1UeXBlKToKKyAgICAgICAgICAgIHN1Yl9leHByZXNzaW9uID0gJ3BheWxv
YWRbQCIlcyJdJyAlIG1lbWJlci5tZW1iZXJfbmFtZQorICAgICAgICAgICAgaWYgbWVtYmVyLnR5
cGUuaXNfYW5vbnltb3VzOgorICAgICAgICAgICAgICAgIHJldHVybiAnZnJvbVByb3RvY29sU3Ry
aW5nPCVzPiglcyknICUgKHNlbGYub2JqY19lbnVtX25hbWVfZm9yX2Fub255bW91c19lbnVtX21l
bWJlcihkZWNsYXJhdGlvbiwgbWVtYmVyKSwgc3ViX2V4cHJlc3Npb24pCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAnZnJvbVByb3RvY29sU3RyaW5nPCVzPiglcykn
ICUgKHNlbGYub2JqY19lbnVtX25hbWVfZm9yX25vbl9hbm9ueW1vdXNfZW51bShtZW1iZXIudHlw
ZSksIHN1Yl9leHByZXNzaW9uKQorICAgICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCAoT2JqZWN0
VHlwZSwgQXJyYXlUeXBlKSk6CisgICAgICAgICAgICByZXR1cm4gJ3BheWxvYWRbQCIlcyJdJyAl
IG1lbWJlci5tZW1iZXJfbmFtZQorCiAgICAgIyBKU09OIG9iamVjdCBzZXR0ZXIvZ2V0dGVyIHNl
bGVjdG9ycyBmb3IgdHlwZXMuCiAKICAgICBAc3RhdGljbWV0aG9kCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFu
ZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1h
dHRyaWJ1dGUuanNvbi1yZXN1bHQKaW5kZXggOTY5OWQ4MzE0YTZiMjkyMDNiMjY3ZGNkN2JiYTc2
ZjFmMWEwNmIyOC4uZWFhMzcyOTcxMTNhOTAxNTU1MzcwOGRiMDA0MjE3ZjFiZGMxZTA4OCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21t
YW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdApAQCAtMTQ4OSw2ICsxNDg5LDcg
QEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sRGF0YWJhc2VFeGVjdXRl
U1FMQXN5bmNQcmludENvbG9yKSB7CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZh
dWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUldJUHJvdG9j
b2xKU09OT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25h
cnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1l
c3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICov
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVp
cmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTU5Miw2
ICsxNTkzLDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEBpbXBsZW1lbnRhdGlv
biBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yCiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBh
eWxvYWQ6KG5vbm51bGwgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQKK3sK
KyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKwor
ICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAIm1lc3Nh
Z2UiXSwgQCJtZXNzYWdlIik7CisgICAgc2VsZi5tZXNzYWdlID0gcGF5bG9hZFtAIm1lc3NhZ2Ui
XTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtA
ImNvZGUiXSwgQCJjb2RlIik7CisgICAgc2VsZi5jb2RlID0gW3BheWxvYWRbQCJjb2RlIl0gaW50
ZWdlclZhbHVlXTsKKworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKIC0gKGluc3RhbmNldHlwZSlp
bml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIHsKICAg
ICBzZWxmID0gW3N1cGVyIGluaXRdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwt
Y2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggNWY1NWEyNmRhZTY2NDcx
MjVkM2EwMzU5MzQ0ZGEyYmZkMTg1ZWI4ZC4uM2MyMzNmMTE0NmI2ZTkzMDA2ZmQ1NGQxMDc0ZThj
MGNiODUxOGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4t
cGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJl
dHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC0xMzQ2LDYgKzEzNDYsNyBAQCB0eXBlZGVm
IE5TX0VOVU0oTlNJbnRlZ2VyLCBUZXN0UHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVyc1ByaW50QwogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNP
Tk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIGlkPiAqKXBheWxvYWQ7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdl
OihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJlZCAqLyBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1aXJlZCAq
LyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTE0NDcsNiArMTQ0
OCwyMSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBAaW1wbGVtZW50YXRpb24gVGVz
dFByb3RvY29sRGF0YWJhc2VFcnJvcgogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2Fk
Oihub25udWxsIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkCit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBU
SFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJtZXNzYWdlIl0s
IEAibWVzc2FnZSIpOworICAgIHNlbGYubWVzc2FnZSA9IHBheWxvYWRbQCJtZXNzYWdlIl07CisK
KyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJjb2Rl
Il0sIEAiY29kZSIpOworICAgIHNlbGYuY29kZSA9IFtwYXlsb2FkW0AiY29kZSJdIGludGVnZXJW
YWx1ZV07CisKKworICAgIHJldHVybiBzZWxmOworfQorCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiB7CiAgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQKaW5kZXggN2ZiNTM1M2QzMmUwMDk5NDQyYzZlZWVlOWEzMzdiNzQ2Yzg2MzU5YS4uNDcyMWMy
NWM1NmM5M2E0ZGQzMzNlODc0NjAzNjlmMzRkYjVkMjYyYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRo
LW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTk2Miw2ICs5NjIsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9i
amVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIGlkPiAqKXBheWxvYWQ7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihO
U1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1aXJlZCAqLyBA
cHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTEwNjUsNiArMTA2Niwy
MSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBAaW1wbGVtZW50YXRpb24gVGVzdFBy
b3RvY29sRGF0YWJhc2VFcnJvcgogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihu
b25udWxsIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkCit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBUSFJP
V19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJtZXNzYWdlIl0sIEAi
bWVzc2FnZSIpOworICAgIHNlbGYubWVzc2FnZSA9IHBheWxvYWRbQCJtZXNzYWdlIl07CisKKyAg
ICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJjb2RlIl0s
IEAiY29kZSIpOworICAgIHNlbGYuY29kZSA9IFtwYXlsb2FkW0AiY29kZSJdIGludGVnZXJWYWx1
ZV07CisKKworICAgIHJldHVybiBzZWxmOworfQorCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhN
ZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiB7CiAgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1n
dWFyZHMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpz
b24tcmVzdWx0CmluZGV4IDYxN2MwNDVjODI3YzhjMjY5YzA5ZThiNDZmNjVmNTAzMDMzYTlmZTUu
LjM0MmE5MzQyYmM0ZGE5YjAxZjEzNjc1MDFjNGVkZTVmZmVjZWIyYmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5l
cmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRl
LWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29uLXJlc3VsdApAQCAtMTAxMyw2ICsxMDEz
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogX19hdHRyaWJ1dGVfXygodmlzaWJp
bGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbE5ldHdvcmsyTmV0d29y
a0Vycm9yIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQ
YXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKIC0gKGluc3Rh
bmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29k
ZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAq
bWVzc2FnZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGlu
dCBjb2RlOwpAQCAtMTEyMCw2ICsxMTIxLDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xOZXR3b3JrMk5ldHdvcmtFcnJvcgogCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihub25udWxsIE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBpZD4gKilwYXlsb2FkCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVE
X1BST1BFUlRZKHBheWxvYWRbQCJtZXNzYWdlIl0sIEAibWVzc2FnZSIpOworICAgIHNlbGYubWVz
c2FnZSA9IHBheWxvYWRbQCJtZXNzYWdlIl07CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JF
UVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJjb2RlIl0sIEAiY29kZSIpOworICAgIHNlbGYuY29k
ZSA9IFtwYXlsb2FkW0AiY29kZSJdIGludGVnZXJWYWx1ZV07CisKKworICAgIHJldHVybiBzZWxm
OworfQorCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3Nh
Z2UgY29kZTooaW50KWNvZGU7CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3Rl
ZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0
aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CmluZGV4IDkyNDk2NWRiNDU1ZTVhNWQ2MDA0
MTgyZDQ4OTkxNWJmZjZmOTRmZjAuLjIxZTI4NmQwMmEzYjI2MjA5MmZkODFlNDgxNjUwMWRmNjVk
OWQ5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1
bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdApAQCAtODQw
LDYgKzg0MCw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFJ1bnRp
bWVLZXlQYXRoVHlwZSkgewogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIp
KSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sUnVudGltZUtleVBhdGggOiBSV0lQcm90b2NvbEpT
T05PYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZToo
VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlKXR5cGU7CiAvKiByZXF1aXJlZCAqLyBAcHJv
cGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUg
dHlwZTsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmlu
ZyAqc3RyaW5nOwpAQCAtOTM4LDYgKzkzOSwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9y
OwogCiBAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sUnVudGltZUtleVBhdGgKIAorLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAg
ICAgICByZXR1cm4gbmlsOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9Q
RVJUWShwYXlsb2FkW0AidHlwZSJdLCBAInR5cGUiKTsKKyAgICBzZWxmLnR5cGUgPSBmcm9tUHJv
dG9jb2xTdHJpbmc8VGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlPihwYXlsb2FkW0AidHlw
ZSJdKTsKKworICAgIHNlbGYuc3RyaW5nID0gcGF5bG9hZFtAInN0cmluZyJdOworCisgICAgc2Vs
Zi5hcnJheSA9IHBheWxvYWRbQCJhcnJheSJdOworCisKKyAgICByZXR1cm4gc2VsZjsKK30KKwog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoVHlwZTooVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhU
eXBlKXR5cGU7CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0
LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggYmRhNWY4NjRlODQ2MzRiOGUzN2U2NDEwNWRkZmFiMTg5
OGM1OTczNy4uMmQzMmVhMjFkNTMwZDFiNzhlMzE2MDI3Yjg1ZTAzNmFhZTFhYjA0NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVj
bGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTEyMTEsNiArMTIxMSw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJk
ZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUldJUHJv
dG9jb2xKU09OT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVk
ICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJl
cXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTIx
OCw2ICsxMjE5LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAK
IF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0
UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlIDogUldJUHJvdG9jb2xKU09O
T2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCBjb3B5KSBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzOwogLyogb3B0aW9u
YWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpub3RlczsKIC8qIG9w
dGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGRvdWJsZSB0aW1lc3RhbXA7
CkBAIC0xMjI5LDYgKzEyMzEsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVs
dCIpKSkKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJm
YWNlIFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlIDogUldJUHJvdG9jb2xKU09O
T2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5h
bWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcg
Kilub3RlcyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpT
T05PYmplY3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9h
ZCBlcnJvcjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yIGVycm9yTGlzdDooTlNB
cnJheS8qPFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3Q7CiAvKiByZXF1
aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPE5TU3RyaW5nPiov
ICpjb2x1bW5OYW1lczsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU1N0cmluZyAqbm90ZXM7CkBAIC0xMjQxLDYgKzEyNDQsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2
aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRl
ZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlT2JqZWN0V2l0aFByb3Bl
cnR5TmFtZUNvbmZsaWN0cyA6IFJXSVByb3RvY29sSlNPTk9iamVjdAorLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7
CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhJbnRlZ2VyOihOU1N0cmluZyAqKWludGVnZXIgYXJy
YXk6KE5TU3RyaW5nICopYXJyYXkgc3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB2YWx1ZTooTlNT
dHJpbmcgKil2YWx1ZSBvYmplY3Q6KE5TU3RyaW5nICopb2JqZWN0OwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICppbnRlZ2VyOwogLyogcmVxdWly
ZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICphcnJheTsKQEAgLTEy
NTEsMTAgKzEyNTUsMTIgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkp
CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUR1bW15T2JqZWN0IDogUldJUHJvdG9jb2xKU09OT2JqZWN0Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
aWQ+ICopcGF5bG9hZDsKIEBlbmQKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1
bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGUgOiBSV0lQ
cm90b2NvbEpTT05PYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGlj
dGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwogLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVz
OihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJX
SVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3I7CiAv
KiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPE5TU3Ry
aW5nPiovICpjb2x1bW5OYW1lczsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWlj
LCBjb3B5KSBOU1N0cmluZyAqbm90ZXM7CkBAIC0xMzU2LDYgKzEzNjIsMjEgQEAgdXNpbmcgbmFt
ZXNwYWNlIEluc3BlY3RvcjsKIAogQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbERhdGFiYXNl
RXJyb3IKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AibWVzc2FnZSJdLCBAIm1lc3NhZ2UiKTsKKyAg
ICBzZWxmLm1lc3NhZ2UgPSBwYXlsb2FkW0AibWVzc2FnZSJdOworCisgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiY29kZSJdLCBAImNvZGUiKTsKKyAg
ICBzZWxmLmNvZGUgPSBbcGF5bG9hZFtAImNvZGUiXSBpbnRlZ2VyVmFsdWVdOworCisKKyAgICBy
ZXR1cm4gc2VsZjsKK30KKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVzc2FnZTooTlNTdHJp
bmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07
CkBAIC0xMzk0LDYgKzE0MTUsMjkgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogQGlt
cGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbERhdGFiYXNlT3B0aW9uYWxQYXJhbWV0ZXJCdW5kbGUK
IAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgc2VsZi5jb2x1bW5OYW1lcyA9IHBheWxv
YWRbQCJjb2x1bW5OYW1lcyJdOworCisgICAgc2VsZi5ub3RlcyA9IHBheWxvYWRbQCJub3RlcyJd
OworCisgICAgc2VsZi50aW1lc3RhbXAgPSBbcGF5bG9hZFtAInRpbWVzdGFtcCJdIGRvdWJsZVZh
bHVlXTsKKworICAgIHNlbGYudmFsdWVzID0gcGF5bG9hZFtAInZhbHVlcyJdOworCisgICAgc2Vs
Zi5wYXlsb2FkID0gcGF5bG9hZFtAInBheWxvYWQiXTsKKworICAgIHNlbGYuZXJyb3IgPSBwYXls
b2FkW0AiZXJyb3IiXTsKKworICAgIHNlbGYuZXJyb3JMaXN0ID0gcGF5bG9hZFtAImVycm9yTGlz
dCJdOworCisKKyAgICByZXR1cm4gc2VsZjsKK30KKwogLSAodm9pZClzZXRDb2x1bW5OYW1lczoo
TlNBcnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMKIHsKICAgICBbc3VwZXIgc2V0SW5z
cGVjdG9yQXJyYXk6aW5zcGVjdG9yU3RyaW5nQXJyYXkoY29sdW1uTmFtZXMpIGZvcktleTpAImNv
bHVtbk5hbWVzIl07CkBAIC0xNDY5LDYgKzE1MTMsMzYgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3Bl
Y3RvcjsKIAogQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVu
ZGxlCiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KG5vbm51bGwgTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVy
IGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1Jf
UkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAImNvbHVtbk5hbWVzIl0sIEAiY29sdW1uTmFtZXMi
KTsKKyAgICBzZWxmLmNvbHVtbk5hbWVzID0gcGF5bG9hZFtAImNvbHVtbk5hbWVzIl07CisKKyAg
ICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJub3RlcyJd
LCBAIm5vdGVzIik7CisgICAgc2VsZi5ub3RlcyA9IHBheWxvYWRbQCJub3RlcyJdOworCisgICAg
VEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AidGltZXN0YW1w
Il0sIEAidGltZXN0YW1wIik7CisgICAgc2VsZi50aW1lc3RhbXAgPSBbcGF5bG9hZFtAInRpbWVz
dGFtcCJdIGRvdWJsZVZhbHVlXTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURf
UFJPUEVSVFkocGF5bG9hZFtAInZhbHVlcyJdLCBAInZhbHVlcyIpOworICAgIHNlbGYudmFsdWVz
ID0gcGF5bG9hZFtAInZhbHVlcyJdOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJF
RF9QUk9QRVJUWShwYXlsb2FkW0AicGF5bG9hZCJdLCBAInBheWxvYWQiKTsKKyAgICBzZWxmLnBh
eWxvYWQgPSBwYXlsb2FkW0AicGF5bG9hZCJdOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9S
RVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiZXJyb3IiXSwgQCJlcnJvciIpOworICAgIHNlbGYu
ZXJyb3IgPSBwYXlsb2FkW0AiZXJyb3IiXTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVR
VUlSRURfUFJPUEVSVFkocGF5bG9hZFtAImVycm9yTGlzdCJdLCBAImVycm9yTGlzdCIpOworICAg
IHNlbGYuZXJyb3JMaXN0ID0gcGF5bG9hZFtAImVycm9yTGlzdCJdOworCisKKyAgICByZXR1cm4g
c2VsZjsKK30KKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVz
dGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZh
bHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0
UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3IgZXJyb3JMaXN0OihOU0FycmF5Lyo8VGVzdFBy
b3RvY29sRGF0YWJhc2VFcnJvcj4qLyAqKWVycm9yTGlzdDsKIHsKICAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwpAQCAtMTU2OSw2ICsxNjQzLDMwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xEYXRhYmFzZU9iamVjdFdpdGhQcm9wZXJ0
eU5hbWVDb25mbGljdHMKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVs
bCBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgVEhST1dfRVhD
RVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiaW50ZWdlciJdLCBAImludGVn
ZXIiKTsKKyAgICBzZWxmLmludGVnZXIgPSBwYXlsb2FkW0AiaW50ZWdlciJdOworCisgICAgVEhS
T1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiYXJyYXkiXSwgQCJh
cnJheSIpOworICAgIHNlbGYuYXJyYXkgPSBwYXlsb2FkW0AiYXJyYXkiXTsKKworICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAInN0cmluZyJdLCBAInN0
cmluZyIpOworICAgIHNlbGYuc3RyaW5nID0gcGF5bG9hZFtAInN0cmluZyJdOworCisgICAgVEhS
T1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AidmFsdWUiXSwgQCJ2
YWx1ZSIpOworICAgIHNlbGYudmFsdWUgPSBwYXlsb2FkW0AidmFsdWUiXTsKKworICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAIm9iamVjdCJdLCBAIm9i
amVjdCIpOworICAgIHNlbGYub2JqZWN0ID0gcGF5bG9hZFtAIm9iamVjdCJdOworCisKKyAgICBy
ZXR1cm4gc2VsZjsKK30KKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoSW50ZWdlcjooTlNTdHJp
bmcgKilpbnRlZ2VyIGFycmF5OihOU1N0cmluZyAqKWFycmF5IHN0cmluZzooTlNTdHJpbmcgKilz
dHJpbmcgdmFsdWU6KE5TU3RyaW5nICopdmFsdWUgb2JqZWN0OihOU1N0cmluZyAqKW9iamVjdDsK
IHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwpAQCAtMTY0NCwxMSArMTc0Miw0NyBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sRGF0
YWJhc2VEdW1teU9iamVjdAogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihub25u
dWxsIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkCit7CisgICAgaWYgKCEo
c2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKworICAgIHJldHVy
biBzZWxmOworfQorCiBAZW5kCiAKIAogQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbFRlc3RQ
YXJhbWV0ZXJCdW5kbGUKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVs
bCBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgVEhST1dfRVhD
RVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiY29sdW1uTmFtZXMiXSwgQCJj
b2x1bW5OYW1lcyIpOworICAgIHNlbGYuY29sdW1uTmFtZXMgPSBwYXlsb2FkW0AiY29sdW1uTmFt
ZXMiXTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9h
ZFtAIm5vdGVzIl0sIEAibm90ZXMiKTsKKyAgICBzZWxmLm5vdGVzID0gcGF5bG9hZFtAIm5vdGVz
Il07CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRb
QCJ0aW1lc3RhbXAiXSwgQCJ0aW1lc3RhbXAiKTsKKyAgICBzZWxmLnRpbWVzdGFtcCA9IFtwYXls
b2FkW0AidGltZXN0YW1wIl0gZG91YmxlVmFsdWVdOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AidmFsdWVzIl0sIEAidmFsdWVzIik7CisgICAg
c2VsZi52YWx1ZXMgPSBwYXlsb2FkW0AidmFsdWVzIl07CisKKyAgICBUSFJPV19FWENFUFRJT05f
Rk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJwYXlsb2FkIl0sIEAicGF5bG9hZCIpOwor
ICAgIHNlbGYucGF5bG9hZCA9IHBheWxvYWRbQCJwYXlsb2FkIl07CisKKyAgICBUSFJPV19FWENF
UFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJlcnJvciJdLCBAImVycm9yIik7
CisgICAgc2VsZi5lcnJvciA9IHBheWxvYWRbQCJlcnJvciJdOworCisKKyAgICByZXR1cm4gc2Vs
ZjsKK30KKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxO
U1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFt
cDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVl
cyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJv
dG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3I7CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC90eXBlLXJlcXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
cmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKaW5kZXggMTgwMGVkNmY3MWU2NGVh
MjRhMjgxNWJkZGFlYmZjODNmNjRhYmQ5Mi4uMzgxY2JhN2U0YzE1ZDUwNDVmYzFmODBjOTM5NmEz
MzI5NjJlNGMwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1y
ZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3Rz
L2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTEx
NjEsNiArMTE2MSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFRl
c3RDYXN0ZWRBbmltYWxzKSB7CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0VHlwZU5lZWRpbmdDYXN0IDogUldJUHJv
dG9jb2xKU09OT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rp
b25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0
aFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgbnVtYmVyOihpbnQpbnVtYmVyIGFuaW1hbHM6KFRl
c3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKWFuaW1hbHMgaWRlbnRpZmllcjooaW50KWlkZW50
aWZpZXIgdHJlZTooVGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgKil0cmVlOwogLyog
cmVxdWlyZWQgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdHJpbmc7
CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgbnVtYmVy
OwpAQCAtMTE3MSwxMSArMTE3MiwxMyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVm
YXVsdCIpKSkKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50
ZXJmYWNlIFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxIDogUldJUHJvdG9jb2xKU09O
T2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRv
bWljLCByZXRhaW4pIFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICpvYmo7CiBAZW5k
CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBU
ZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MiA6IFJXSVByb3RvY29sSlNPTk9iamVjdAor
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICos
IGlkPiAqKXBheWxvYWQ7CiAvKiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0
YWluKSBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqb2JqOwogQGVuZAogCkBAIC0x
MjcxLDYgKzEyNzQsMzAgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogQGltcGxlbWVu
dGF0aW9uIFRlc3RQcm90b2NvbFRlc3RUeXBlTmVlZGluZ0Nhc3QKIAorLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICop
cGF5bG9hZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1
cm4gbmlsOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXls
b2FkW0Aic3RyaW5nIl0sIEAic3RyaW5nIik7CisgICAgc2VsZi5zdHJpbmcgPSBwYXlsb2FkW0Ai
c3RyaW5nIl07CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBh
eWxvYWRbQCJudW1iZXIiXSwgQCJudW1iZXIiKTsKKyAgICBzZWxmLm51bWJlciA9IFtwYXlsb2Fk
W0AibnVtYmVyIl0gaW50ZWdlclZhbHVlXTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVR
VUlSRURfUFJPUEVSVFkocGF5bG9hZFtAImFuaW1hbHMiXSwgQCJhbmltYWxzIik7CisgICAgc2Vs
Zi5hbmltYWxzID0gZnJvbVByb3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmlt
YWxzPihwYXlsb2FkW0AiYW5pbWFscyJdKTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVR
VUlSRURfUFJPUEVSVFkocGF5bG9hZFtAImlkZW50aWZpZXIiXSwgQCJpZGVudGlmaWVyIik7Cisg
ICAgc2VsZi5pZGVudGlmaWVyID0gW3BheWxvYWRbQCJpZCJdIGludGVnZXJWYWx1ZV07CisKKyAg
ICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJ0cmVlIl0s
IEAidHJlZSIpOworICAgIHNlbGYudHJlZSA9IHBheWxvYWRbQCJ0cmVlIl07CisKKworICAgIHJl
dHVybiBzZWxmOworfQorCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nIG51bWJlcjooaW50KW51bWJlciBhbmltYWxzOihUZXN0UHJvdG9jb2xUZXN0Q2Fz
dGVkQW5pbWFscylhbmltYWxzIGlkZW50aWZpZXI6KGludClpZGVudGlmaWVyIHRyZWU6KFRlc3RQ
cm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QxICopdHJlZTsKIHsKICAgICBzZWxmID0gW3N1cGVy
IGluaXRdOwpAQCAtMTM0Myw2ICsxMzcwLDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7
CiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MQogCist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihub25udWxsIE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBpZD4gKilwYXlsb2FkCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkp
CisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBzZWxmLm9iaiA9IHBheWxvYWRbQCJvYmoiXTsK
KworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKIC0gKHZvaWQpc2V0T2JqOihUZXN0UHJvdG9jb2xU
ZXN0UmVjdXJzaXZlT2JqZWN0MiAqKW9iagogewogICAgIFtzdXBlciBzZXRPYmplY3Q6b2JqIGZv
cktleTpAIm9iaiJdOwpAQCAtMTM1Nyw2ICsxMzk1LDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CiAKIEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0
MgogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihub25udWxsIE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBp
bml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBzZWxmLm9iaiA9IHBheWxvYWRbQCJv
YmoiXTsKKworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKIC0gKHZvaWQpc2V0T2JqOihUZXN0UHJv
dG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0MSAqKW9iagogewogICAgIFtzdXBlciBzZXRPYmplY3Q6
b2JqIGZvcktleTpAIm9iaiJdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>273187</attachid>
            <date>2016-03-07 09:43:47 -0800</date>
            <delta_ts>2016-03-07 10:41:20 -0800</delta_ts>
            <desc>For Landing</desc>
            <filename>bug-155102-20160307094333.patch</filename>
            <type>text/plain</type>
            <size>28667</size>
            <attacher name="Blaze Burg">bburg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3NjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTc3MjgxYTNiMGIyYzBmMjgyYjRjNDVmZDRkZTk2ZjEwOWFiNjIwLi44YjA0ZjY4YTkxZTU0YTk2
MGFmNWFmMTk2N2EzZDI2N2Q1YjJhMWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwzOSBAQAogMjAxNi0wMy0wNiAgQnJpYW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gaW5pdGlhbGl6
ZSBnZW5lcmF0ZWQgT2JqQyBwcm90b2NvbCB0eXBlcyBmcm9tIGFuIE5TRGljdGlvbmFyeSBwYXls
b2FkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTUx
MDIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI1MDAyMDE1PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IFRpbW90aHkgSGF0Y2hlci4KKworICAgICAgICBJbiBPYmplY3RpdmUtQyBjb2RlLCB3ZSBz
b21ldGltZXMgcHJlZmVyIHRvIHBhcnNlIEpTT04gdXNpbmcgQ29jb2EgcmF0aGVyCisgICAgICAg
IHRoYW4gdGhlIEluc3BlY3RvclZhbHVlIGNsYXNzZXMuIFN1cHBvcnQgaW5pdGlhbGl6aW5nIHBy
b3RvY29sIG9iamVjdHMKKyAgICAgICAgZGlyZWN0bHkgZnJvbSBhbiBOU0RpY3Rpb25hcnkgcGF5
bG9hZC4gVGhpcyBkZWxlZ2F0ZXMgdmFsaWRhdGlvbiBvZiB2YWx1ZXMgdG8KKyAgICAgICAgdGhl
IHNldHRlciBtZXRob2RzIHRoYXQgYWxyZWFkeSBleGlzdCBvbiB0aGUgcHJvdG9jb2wgb2JqZWN0
IGNsYXNzZXMuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRl
X29iamNfaGVhZGVyLnB5OgorICAgICAgICAoT2JqQ0hlYWRlckdlbmVyYXRvci5fZ2VuZXJhdGVf
dHlwZV9pbnRlcmZhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2Vu
ZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weToKKyAgICAgICAgKE9i
akNQcm90b2NvbFR5cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IuZ2VuZXJhdGVfdHlwZV9pbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3JfcGF5bG9hZCk6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weToKKyAgICAgICAgKE9iakNH
ZW5lcmF0b3IucGF5bG9hZF90b19vYmpjX2V4cHJlc3Npb25fZm9yX21lbWJlcik6CisgICAgICAg
IEFkZCBhIG5ldyBoZWxwZXIgbWV0aG9kIHRvIGdlbmVyYXRlIGFuIGV4cHJlc3Npb24gdG8gdW5w
YWNrIHRoZSB2YWx1ZQorICAgICAgICBmcm9tIGFuIE5TRGljdGlvbmFyeS4gSWYgaXQncyBub3Qg
YSBwcmltaXRpdmUsIHRoZSBzZXR0ZXIgcGVyZm9ybXMKKyAgICAgICAgdmFsaWRhdGlvbiBvZiB0
aGUgdmFsdWUncyBraW5kIHVzaW5nIC1bTlNPYmplY3QgaXNLaW5kT2ZDbGFzczpdLgorCisgICAg
ICAgIFJlYmFzZWxpbmUgcmVsZXZhbnQgdGVzdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJl
c3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5k
cy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9u
YWwtcGFyYW1ldGVycy5qc29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1kb21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1y
ZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93
ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0OgorICAgICAgICAqIGluc3BlY3Rv
ci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNv
bi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlw
ZS1yZXF1aXJpbmctcnVudGltZS1jYXN0cy5qc29uLXJlc3VsdDoKKworMjAxNi0wMy0wNiAgQnJp
YW4gQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVjdG9yOiB0aGUg
cHJvdG9jb2wgZ2VuZXJhdG9yIHNob3VsZCBoYXZlIHNlcGFyYXRlIHByZWZpeCBvcHRpb25zIGZv
ciBPYmplY3RpdmUtQyBjbGFzc2VzIGFuZCBmaWxlbmFtZXMKICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTEwMQogICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMjUwMDAwNTM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2hlYWRlci5weSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVyLnB5
CmluZGV4IDU4MjU5ZjQ1NzA2NWM0NWI0MWJmMmRjNjk0YjI2ZjBhN2YzNDBjMDUuLjgzODZmMzgx
ODBjMDIyMmM3MjdiOGMzMDBjYTNkYTg1MWNjODFjMGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfaGVhZGVy
LnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfaGVhZGVyLnB5CkBAIC0xNTksNiArMTU5LDExIEBAIGNsYXNzIE9iakNI
ZWFkZXJHZW5lcmF0b3IoT2JqQ0dlbmVyYXRvcik6CiAgICAgICAgIG9iamNfbmFtZSA9IHNlbGYu
b2JqY19uYW1lX2Zvcl90eXBlKGRlY2xhcmF0aW9uLnR5cGUpCiAgICAgICAgIGxpbmVzLmFwcGVu
ZCgnX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpJykKICAgICAgICAgbGlu
ZXMuYXBwZW5kKCdAaW50ZXJmYWNlICVzIDogJXNKU09OT2JqZWN0JyAlIChvYmpjX25hbWUsIE9i
akNHZW5lcmF0b3IuT0JKQ19TVEFUSUNfUFJFRklYKSkKKworICAgICAgICAjIFRoZSBpbml0aWFs
aXplciB0aGF0IHRha2VzIGEgcGF5bG9hZCBpcyBvbmx5IG5lZWRlZCBieSB0aGUgZnJvbnRlbmQu
CisgICAgICAgIGlmIHNlbGYuZ2V0X2dlbmVyYXRvcl9zZXR0aW5nKCdnZW5lcmF0ZV9mcm9udGVu
ZCcsIEZhbHNlKToKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7JykK
KwogICAgICAgICByZXF1aXJlZF9tZW1iZXJzID0gZmlsdGVyKGxhbWJkYSBtZW1iZXI6IG5vdCBt
ZW1iZXIuaXNfb3B0aW9uYWwsIGRlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKICAgICAgICAgb3B0
aW9uYWxfbWVtYmVycyA9IGZpbHRlcihsYW1iZGEgbWVtYmVyOiBtZW1iZXIuaXNfb3B0aW9uYWws
IGRlY2xhcmF0aW9uLnR5cGVfbWVtYmVycykKICAgICAgICAgaWYgcmVxdWlyZWRfbWVtYmVyczoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpj
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CmluZGV4IDEwNDM1NTQyODgyMzdiMjVj
ZDBkYTUzZGE4N2Y1OTExOTg5YjgwZTIuLmVhYTU1MDY1Njk0MDhmYzljZTkxMzk0N2RhMGIzN2Ey
YjEzZGJiZGUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24u
cHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTAsNiAr
OTAsMTAgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlwZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihP
YmpDR2VuZXJhdG9yKToKICAgICBkZWYgZ2VuZXJhdGVfdHlwZV9pbXBsZW1lbnRhdGlvbihzZWxm
LCBkb21haW4sIGRlY2xhcmF0aW9uKToKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBsaW5l
cy5hcHBlbmQoJ0BpbXBsZW1lbnRhdGlvbiAlcycgJSBzZWxmLm9iamNfbmFtZV9mb3JfdHlwZShk
ZWNsYXJhdGlvbi50eXBlKSkKKyAgICAgICAgIyBUaGUgaW5pdGlhbGl6ZXIgdGhhdCB0YWtlcyBh
IHBheWxvYWQgaXMgb25seSBuZWVkZWQgYnkgdGhlIGZyb250ZW5kLgorICAgICAgICBpZiBzZWxm
LmdldF9nZW5lcmF0b3Jfc2V0dGluZygnZ2VuZXJhdGVfZnJvbnRlbmQnLCBGYWxzZSk6CisgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJycpCisgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc2VsZi5f
Z2VuZXJhdGVfaW5pdF9tZXRob2RfZm9yX3BheWxvYWQoZG9tYWluLCBkZWNsYXJhdGlvbikpCiAg
ICAgICAgIHJlcXVpcmVkX21lbWJlcnMgPSBmaWx0ZXIobGFtYmRhIG1lbWJlcjogbm90IG1lbWJl
ci5pc19vcHRpb25hbCwgZGVjbGFyYXRpb24udHlwZV9tZW1iZXJzKQogICAgICAgICBpZiByZXF1
aXJlZF9tZW1iZXJzOgogICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcnKQpAQCAtMTAzLDYgKzEw
NywyNiBAQCBjbGFzcyBPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yKE9i
akNHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcy5hcHBlbmQoJ0BlbmQnKQogICAgICAgICByZXR1
cm4gJ1xuJy5qb2luKGxpbmVzKQogCisgICAgZGVmIF9nZW5lcmF0ZV9pbml0X21ldGhvZF9mb3Jf
cGF5bG9hZChzZWxmLCBkb21haW4sIGRlY2xhcmF0aW9uKToKKyAgICAgICAgbGluZXMgPSBbXQor
ICAgICAgICBsaW5lcy5hcHBlbmQoJy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KG5v
bm51bGwgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQnKQorICAgICAgICBs
aW5lcy5hcHBlbmQoJ3snKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSknKQorICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICAgICAgcmV0dXJuIG5p
bDsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJycpCisKKyAgICAgICAgZm9yIG1lbWJlciBpbiBk
ZWNsYXJhdGlvbi50eXBlX21lbWJlcnM6CisgICAgICAgICAgICB2YXJfbmFtZSA9IE9iakNHZW5l
cmF0b3IuaWRlbnRpZmllcl90b19vYmpjX2lkZW50aWZpZXIobWVtYmVyLm1lbWJlcl9uYW1lKQor
ICAgICAgICAgICAgaWYgbm90IG1lbWJlci5pc19vcHRpb25hbDoKKyAgICAgICAgICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBh
eWxvYWRbQCIlcyJdLCBAIiVzIik7JyAlICh2YXJfbmFtZSwgdmFyX25hbWUpKQorICAgICAgICAg
ICAgY29udmVyc2lvbl9leHByZXNzaW9uID0gc2VsZi5wYXlsb2FkX3RvX29iamNfZXhwcmVzc2lv
bl9mb3JfbWVtYmVyKGRlY2xhcmF0aW9uLCBtZW1iZXIpCisgICAgICAgICAgICBsaW5lcy5hcHBl
bmQoJyAgICBzZWxmLiVzID0gJXM7JyAlICh2YXJfbmFtZSwgY29udmVyc2lvbl9leHByZXNzaW9u
KSkKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKKworICAgICAgICBsaW5lcy5hcHBlbmQo
JyAgICByZXR1cm4gc2VsZjsnKQorICAgICAgICBsaW5lcy5hcHBlbmQoJ30nKQorICAgICAgICBy
ZXR1cm4gJ1xuJy5qb2luKGxpbmVzKQorCiAgICAgZGVmIF9nZW5lcmF0ZV9pbml0X21ldGhvZF9m
b3JfcmVxdWlyZWRfbWVtYmVycyhzZWxmLCBkb21haW4sIGRlY2xhcmF0aW9uLCByZXF1aXJlZF9t
ZW1iZXJzKToKICAgICAgICAgcGFpcnMgPSBbXQogICAgICAgICBmb3IgbWVtYmVyIGluIHJlcXVp
cmVkX21lbWJlcnM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CmluZGV4IDIzOTll
N2E2OTA2OGMwODhiNDFjMTE2ZjlkNjNmZTQ3ZGQ4OGE2ZjIuLjI5ZmY0YTA5ZTllNmEwODM4MmYz
Y2MxMjY5MTk5MGJkNjc5N2EyZjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNfZ2VuZXJhdG9yLnB5
CkBAIC00NTcsNiArNDU3LDMxIEBAIGNsYXNzIE9iakNHZW5lcmF0b3IoR2VuZXJhdG9yKToKICAg
ICAgICAgICAgICAgICByZXR1cm4gJ29iamNJbnRlZ2VyQXJyYXkoJXMpJyAlIHN1Yl9leHByZXNz
aW9uCiAgICAgICAgICAgICByZXR1cm4gJ29iamNBcnJheTwlcz4oJXMpJyAlIChvYmpjX2NsYXNz
LCBzdWJfZXhwcmVzc2lvbikKIAorICAgIGRlZiBwYXlsb2FkX3RvX29iamNfZXhwcmVzc2lvbl9m
b3JfbWVtYmVyKHNlbGYsIGRlY2xhcmF0aW9uLCBtZW1iZXIpOgorICAgICAgICBfdHlwZSA9IG1l
bWJlci50eXBlCisgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEFsaWFzZWRUeXBlKToKKyAg
ICAgICAgICAgIF90eXBlID0gX3R5cGUuYWxpYXNlZF90eXBlCisgICAgICAgIGlmIGlzaW5zdGFu
Y2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpOgorICAgICAgICAgICAgc3ViX2V4cHJlc3Npb24gPSAn
cGF5bG9hZFtAIiVzIl0nICUgbWVtYmVyLm1lbWJlcl9uYW1lCisgICAgICAgICAgICByYXdfbmFt
ZSA9IF90eXBlLnJhd19uYW1lKCkKKyAgICAgICAgICAgIGlmIHJhd19uYW1lIGlzICdib29sZWFu
JzoKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1slcyBib29sVmFsdWVdJyAlIHN1Yl9leHByZXNz
aW9uCisgICAgICAgICAgICBpZiByYXdfbmFtZSBpcyAnaW50ZWdlcic6CisgICAgICAgICAgICAg
ICAgcmV0dXJuICdbJXMgaW50ZWdlclZhbHVlXScgJSBzdWJfZXhwcmVzc2lvbgorICAgICAgICAg
ICAgaWYgcmF3X25hbWUgaXMgJ251bWJlcic6CisgICAgICAgICAgICAgICAgcmV0dXJuICdbJXMg
ZG91YmxlVmFsdWVdJyAlIHN1Yl9leHByZXNzaW9uCisgICAgICAgICAgICBpZiByYXdfbmFtZSBp
biBbJ2FueScsICdvYmplY3QnLCAnYXJyYXknLCAnc3RyaW5nJ106CisgICAgICAgICAgICAgICAg
cmV0dXJuIHN1Yl9leHByZXNzaW9uICAjIFRoZSBzZXR0ZXIgd2lsbCBjaGVjayB0aGUgaW5jb21p
bmcgdmFsdWUuCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBpZiBpc2luc3RhbmNl
KG1lbWJlci50eXBlLCBFbnVtVHlwZSk6CisgICAgICAgICAgICBzdWJfZXhwcmVzc2lvbiA9ICdw
YXlsb2FkW0AiJXMiXScgJSBtZW1iZXIubWVtYmVyX25hbWUKKyAgICAgICAgICAgIGlmIG1lbWJl
ci50eXBlLmlzX2Fub255bW91czoKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2Zyb21Qcm90b2Nv
bFN0cmluZzwlcz4oJXMpJyAlIChzZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9hbm9ueW1vdXNfZW51
bV9tZW1iZXIoZGVjbGFyYXRpb24sIG1lbWJlciksIHN1Yl9leHByZXNzaW9uKQorICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2Zyb21Qcm90b2NvbFN0cmluZzwlcz4o
JXMpJyAlIChzZWxmLm9iamNfZW51bV9uYW1lX2Zvcl9ub25fYW5vbnltb3VzX2VudW0obWVtYmVy
LnR5cGUpLCBzdWJfZXhwcmVzc2lvbikKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgKE9i
amVjdFR5cGUsIEFycmF5VHlwZSkpOgorICAgICAgICAgICAgcmV0dXJuICdwYXlsb2FkW0AiJXMi
XScgJSBtZW1iZXIubWVtYmVyX25hbWUKKwogICAgICMgSlNPTiBvYmplY3Qgc2V0dGVyL2dldHRl
ciBzZWxlY3RvcnMgZm9yIHR5cGVzLgogCiAgICAgQHN0YXRpY21ldGhvZApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2Nv
bW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5
bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IDk2OTlkODMxNGE2YjI5MjAzYjI2N2RjZDdi
YmE3NmYxZjFhMDZiMjguLjM2ZWQ0ODkzNGJhNWI2ODhmYzczMTM4NDc0NmI2NzVmMmU3ZWU4MzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQv
Y29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTE0ODksNiArMTQ4
OSw3IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhl
Y3V0ZVNRTEFzeW5jUHJpbnRDb2xvcikgewogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgi
ZGVmYXVsdCIpKSkKIEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVBy
b3RvY29sSlNPTk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0
aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJl
ZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiBy
ZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTE1
OTIsNiArMTU5MywyMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBAaW1wbGVtZW50
YXRpb24gVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvcgogCistIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhQYXlsb2FkOihub25udWxsIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2Fk
Cit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7
CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJt
ZXNzYWdlIl0sIEAibWVzc2FnZSIpOworICAgIHNlbGYubWVzc2FnZSA9IHBheWxvYWRbQCJtZXNz
YWdlIl07CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxv
YWRbQCJjb2RlIl0sIEAiY29kZSIpOworICAgIHNlbGYuY29kZSA9IFtwYXlsb2FkW0AiY29kZSJd
IGludGVnZXJWYWx1ZV07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwogLSAoaW5zdGFuY2V0eXBl
KWluaXRXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogewog
ICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25h
bC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9u
YWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA1ZjU1YTI2ZGFlNjY0
NzEyNWQzYTAzNTkzNDRkYTJiZmQxODVlYjhkLi5mN2UzMGI5ZDA3ZjU2ZjYyOTMxMWRmZjBhNzI2
ZDZiMzAwMGVmYmU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwt
cmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTEzNDYsNiArMTM0Niw3IEBAIHR5cGVk
ZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9u
YWxQYXJhbWV0ZXJzUHJpbnRDCiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUldJUHJvdG9jb2xK
U09OT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3Nh
Z2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVk
ICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTQ0Nyw2ICsx
NDQ4LDIwIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEBpbXBsZW1lbnRhdGlvbiBU
ZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yCiAKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxv
YWQ6KG5vbm51bGwgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQKK3sKKyAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAIm1lc3NhZ2Ui
XSwgQCJtZXNzYWdlIik7CisgICAgc2VsZi5tZXNzYWdlID0gcGF5bG9hZFtAIm1lc3NhZ2UiXTsK
KworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAImNv
ZGUiXSwgQCJjb2RlIik7CisgICAgc2VsZi5jb2RlID0gW3BheWxvYWRbQCJjb2RlIl0gaW50ZWdl
clZhbHVlXTsKKworICAgIHJldHVybiBzZWxmOworfQorCiAtIChpbnN0YW5jZXR5cGUpaW5pdFdp
dGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiB7CiAgICAgc2Vs
ZiA9IFtzdXBlciBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0
ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1
bHQKaW5kZXggN2ZiNTM1M2QzMmUwMDk5NDQyYzZlZWVlOWEzMzdiNzQ2Yzg2MzU5YS4uOTc3MGRj
ZjcxNzViMWVlZTY4ZThiZGQyM2Q3NzBlZTg1ZTJmNTU0OCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRo
LW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFs
LXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKQEAgLTk2Miw2ICs5NjIsNyBAQCB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IEBpbnRlcmZhY2UgVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciA6IFJXSVByb3RvY29sSlNPTk9i
amVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIGlkPiAqKXBheWxvYWQ7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihO
U1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVy
dHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1lc3NhZ2U7CiAvKiByZXF1aXJlZCAqLyBA
cHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgY29kZTsKQEAgLTEwNjUsNiArMTA2Niwy
MCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBAaW1wbGVtZW50YXRpb24gVGVzdFBy
b3RvY29sRGF0YWJhc2VFcnJvcgogCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihu
b25udWxsIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkCit7CisgICAgaWYg
KCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBUSFJP
V19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJtZXNzYWdlIl0sIEAi
bWVzc2FnZSIpOworICAgIHNlbGYubWVzc2FnZSA9IHBheWxvYWRbQCJtZXNzYWdlIl07CisKKyAg
ICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJjb2RlIl0s
IEAiY29kZSIpOworICAgIHNlbGYuY29kZSA9IFtwYXlsb2FkW0AiY29kZSJdIGludGVnZXJWYWx1
ZV07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoTWVz
c2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGNvZGU6KGludCljb2RlOwogewogICAgIHNlbGYgPSBb
c3VwZXIgaW5pdF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJhdGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3Vh
cmRzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2dlbmVyYXRlLWRvbWFpbnMtd2l0aC1mZWF0dXJlLWd1YXJkcy5qc29u
LXJlc3VsdAppbmRleCA2MTdjMDQ1YzgyN2M4YzI2OWMwOWU4YjQ2ZjY1ZjUwMzAzM2E5ZmU1Li5j
MDRmODhkMmE0NDY5NGNhMmQyZTZkODM3YjJhNmVmMGQ5YzdlNTc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZ2VuZXJh
dGUtZG9tYWlucy13aXRoLWZlYXR1cmUtZ3VhcmRzLmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9nZW5lcmF0ZS1k
b21haW5zLXdpdGgtZmVhdHVyZS1ndWFyZHMuanNvbi1yZXN1bHQKQEAgLTEwMTMsNiArMTAxMyw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxp
dHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xOZXR3b3JrMk5ldHdvcmtF
cnJvciA6IFJXSVByb3RvY29sSlNPTk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5
bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7CiAtIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgY29kZTooaW50KWNvZGU7
CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNTdHJpbmcgKm1l
c3NhZ2U7CiAvKiByZXF1aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQg
Y29kZTsKQEAgLTExMjAsNiArMTEyMSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwog
CiBAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sTmV0d29yazJOZXR3b3JrRXJyb3IKIAorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9Q
Uk9QRVJUWShwYXlsb2FkW0AibWVzc2FnZSJdLCBAIm1lc3NhZ2UiKTsKKyAgICBzZWxmLm1lc3Nh
Z2UgPSBwYXlsb2FkW0AibWVzc2FnZSJdOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFV
SVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiY29kZSJdLCBAImNvZGUiKTsKKyAgICBzZWxmLmNvZGUg
PSBbcGF5bG9hZFtAImNvZGUiXSBpbnRlZ2VyVmFsdWVdOworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBj
b2RlOihpbnQpY29kZTsKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3No
YWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25h
bC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQKaW5kZXggOTI0OTY1ZGI0NTVlNWE1ZDYwMDQxODJk
NDg5OTE1YmZmNmY5NGZmMC4uNzRjNzdjMmFmM2FlNDA0OTdiZTVlYzAwNmY4YzgyMjk2MWViZjkw
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0
ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24tcmVzdWx0CkBAIC04NDAsNiAr
ODQwLDcgQEAgdHlwZWRlZiBOU19FTlVNKE5TSW50ZWdlciwgVGVzdFByb3RvY29sUnVudGltZUtl
eVBhdGhUeXBlKSB7CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQog
QGludGVyZmFjZSBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aCA6IFJXSVByb3RvY29sSlNPTk9i
amVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3Ry
aW5nICosIGlkPiAqKXBheWxvYWQ7CiAtIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhUeXBlOihUZXN0
UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGUpdHlwZTsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0
eSAobm9uYXRvbWljLCBhc3NpZ24pIFRlc3RQcm90b2NvbFJ1bnRpbWVLZXlQYXRoVHlwZSB0eXBl
OwogLyogb3B0aW9uYWwgKi8gQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpz
dHJpbmc7CkBAIC05MzgsNiArOTM5LDIxIEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAK
IEBpbXBsZW1lbnRhdGlvbiBUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aAogCistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihub25udWxsIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilwYXlsb2FkCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAg
IHJldHVybiBuaWw7CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZ
KHBheWxvYWRbQCJ0eXBlIl0sIEAidHlwZSIpOworICAgIHNlbGYudHlwZSA9IGZyb21Qcm90b2Nv
bFN0cmluZzxUZXN0UHJvdG9jb2xSdW50aW1lS2V5UGF0aFR5cGU+KHBheWxvYWRbQCJ0eXBlIl0p
OworCisgICAgc2VsZi5zdHJpbmcgPSBwYXlsb2FkW0Aic3RyaW5nIl07CisKKyAgICBzZWxmLmFy
cmF5ID0gcGF5bG9hZFtAImFycmF5Il07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwogLSAoaW5z
dGFuY2V0eXBlKWluaXRXaXRoVHlwZTooVGVzdFByb3RvY29sUnVudGltZUtleVBhdGhUeXBlKXR5
cGU7CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRlY2xhcmF0
aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUu
anNvbi1yZXN1bHQKaW5kZXggYmRhNWY4NjRlODQ2MzRiOGUzN2U2NDEwNWRkZmFiMTg5OGM1OTcz
Ny4uMmNjNzkxYTY0MDMwN2VkODVmYWJhMWQwNWUzZmM5OWNkNjAzNDMxZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5
cGUtZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRp
b24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTEyMTEsNiArMTIxMSw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBJbnNwZWN0b3I7CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0
IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yIDogUldJUHJvdG9jb2xK
U09OT2JqZWN0CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3Nh
Z2U6KE5TU3RyaW5nICopbWVzc2FnZSBjb2RlOihpbnQpY29kZTsKIC8qIHJlcXVpcmVkICovIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0cmluZyAqbWVzc2FnZTsKIC8qIHJlcXVpcmVk
ICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGludCBjb2RlOwpAQCAtMTIxOCw2ICsx
MjE5LDcgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAKIF9fYXR0
cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9j
b2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlIDogUldJUHJvdG9jb2xKU09OT2JqZWN0
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopcGF5bG9hZDsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5KSBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKmNvbHVtbk5hbWVzOwogLyogb3B0aW9uYWwgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpub3RlczsKIC8qIG9wdGlvbmFs
ICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIGRvdWJsZSB0aW1lc3RhbXA7CkBAIC0x
MjI5LDYgKzEyMzEsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkK
IAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRl
c3RQcm90b2NvbERhdGFiYXNlUGFyYW1ldGVyQnVuZGxlIDogUldJUHJvdG9jb2xKU09OT2JqZWN0
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopcGF5bG9hZDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aENvbHVtbk5hbWVzOihO
U0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcyBub3RlczooTlNTdHJpbmcgKilub3Rl
cyB0aW1lc3RhbXA6KGRvdWJsZSl0aW1lc3RhbXAgdmFsdWVzOihSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKil2YWx1ZXMgcGF5bG9hZDooUldJUHJvdG9jb2xKU09OT2JqZWN0ICopcGF5bG9hZCBlcnJv
cjooVGVzdFByb3RvY29sRGF0YWJhc2VFcnJvciAqKWVycm9yIGVycm9yTGlzdDooTlNBcnJheS8q
PFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3I+Ki8gKillcnJvckxpc3Q7CiAvKiByZXF1aXJlZCAq
LyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1
bW5OYW1lczsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0
cmluZyAqbm90ZXM7CkBAIC0xMjQxLDYgKzEyNDQsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmls
aXR5ICgiZGVmYXVsdCIpKSkKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQi
KSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbERhdGFiYXNlT2JqZWN0V2l0aFByb3BlcnR5TmFt
ZUNvbmZsaWN0cyA6IFJXSVByb3RvY29sSlNPTk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7CiAtIChp
bnN0YW5jZXR5cGUpaW5pdFdpdGhJbnRlZ2VyOihOU1N0cmluZyAqKWludGVnZXIgYXJyYXk6KE5T
U3RyaW5nICopYXJyYXkgc3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB2YWx1ZTooTlNTdHJpbmcg
Kil2YWx1ZSBvYmplY3Q6KE5TU3RyaW5nICopb2JqZWN0OwogLyogcmVxdWlyZWQgKi8gQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICppbnRlZ2VyOwogLyogcmVxdWlyZWQgKi8g
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICphcnJheTsKQEAgLTEyNTEsMTAg
KzEyNTUsMTIgQEAgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiAKIF9f
YXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJv
dG9jb2xEYXRhYmFzZUR1bW15T2JqZWN0IDogUldJUHJvdG9jb2xKU09OT2JqZWN0CistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICop
cGF5bG9hZDsKIEBlbmQKIAogX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkp
CiBAaW50ZXJmYWNlIFRlc3RQcm90b2NvbFRlc3RQYXJhbWV0ZXJCdW5kbGUgOiBSV0lQcm90b2Nv
bEpTT05PYmplY3QKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZD4gKilwYXlsb2FkOwogLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29s
dW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0
cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3Rv
Y29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90b2NvbEpTT05PYmplY3QgKilw
YXlsb2FkIGVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9yICopZXJyb3I7CiAvKiByZXF1
aXJlZCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNBcnJheS8qPE5TU3RyaW5nPiov
ICpjb2x1bW5OYW1lczsKIC8qIHJlcXVpcmVkICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSBOU1N0cmluZyAqbm90ZXM7CkBAIC0xMzU2LDYgKzEzNjIsMjAgQEAgdXNpbmcgbmFtZXNwYWNl
IEluc3BlY3RvcjsKIAogQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbERhdGFiYXNlRXJyb3IK
IAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5p
dF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFV
SVJFRF9QUk9QRVJUWShwYXlsb2FkW0AibWVzc2FnZSJdLCBAIm1lc3NhZ2UiKTsKKyAgICBzZWxm
Lm1lc3NhZ2UgPSBwYXlsb2FkW0AibWVzc2FnZSJdOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZP
Ul9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiY29kZSJdLCBAImNvZGUiKTsKKyAgICBzZWxm
LmNvZGUgPSBbcGF5bG9hZFtAImNvZGUiXSBpbnRlZ2VyVmFsdWVdOworCisgICAgcmV0dXJuIHNl
bGY7Cit9CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVz
c2FnZSBjb2RlOihpbnQpY29kZTsKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwpAQCAtMTM5
NCw2ICsxNDE0LDI4IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEBpbXBsZW1lbnRh
dGlvbiBUZXN0UHJvdG9jb2xEYXRhYmFzZU9wdGlvbmFsUGFyYW1ldGVyQnVuZGxlCiAKKy0gKGlu
c3RhbmNldHlwZSlpbml0V2l0aFBheWxvYWQ6KG5vbm51bGwgTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqKXBheWxvYWQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAg
ICAgICAgcmV0dXJuIG5pbDsKKworICAgIHNlbGYuY29sdW1uTmFtZXMgPSBwYXlsb2FkW0AiY29s
dW1uTmFtZXMiXTsKKworICAgIHNlbGYubm90ZXMgPSBwYXlsb2FkW0Aibm90ZXMiXTsKKworICAg
IHNlbGYudGltZXN0YW1wID0gW3BheWxvYWRbQCJ0aW1lc3RhbXAiXSBkb3VibGVWYWx1ZV07CisK
KyAgICBzZWxmLnZhbHVlcyA9IHBheWxvYWRbQCJ2YWx1ZXMiXTsKKworICAgIHNlbGYucGF5bG9h
ZCA9IHBheWxvYWRbQCJwYXlsb2FkIl07CisKKyAgICBzZWxmLmVycm9yID0gcGF5bG9hZFtAImVy
cm9yIl07CisKKyAgICBzZWxmLmVycm9yTGlzdCA9IHBheWxvYWRbQCJlcnJvckxpc3QiXTsKKwor
ICAgIHJldHVybiBzZWxmOworfQorCiAtICh2b2lkKXNldENvbHVtbk5hbWVzOihOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcwogewogICAgIFtzdXBlciBzZXRJbnNwZWN0b3JBcnJh
eTppbnNwZWN0b3JTdHJpbmdBcnJheShjb2x1bW5OYW1lcykgZm9yS2V5OkAiY29sdW1uTmFtZXMi
XTsKQEAgLTE0NjksNiArMTUxMSwzNSBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBA
aW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sRGF0YWJhc2VQYXJhbWV0ZXJCdW5kbGUKIAorLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQor
ICAgICAgICByZXR1cm4gbmlsOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9Q
Uk9QRVJUWShwYXlsb2FkW0AiY29sdW1uTmFtZXMiXSwgQCJjb2x1bW5OYW1lcyIpOworICAgIHNl
bGYuY29sdW1uTmFtZXMgPSBwYXlsb2FkW0AiY29sdW1uTmFtZXMiXTsKKworICAgIFRIUk9XX0VY
Q0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAIm5vdGVzIl0sIEAibm90ZXMi
KTsKKyAgICBzZWxmLm5vdGVzID0gcGF5bG9hZFtAIm5vdGVzIl07CisKKyAgICBUSFJPV19FWENF
UFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJ0aW1lc3RhbXAiXSwgQCJ0aW1l
c3RhbXAiKTsKKyAgICBzZWxmLnRpbWVzdGFtcCA9IFtwYXlsb2FkW0AidGltZXN0YW1wIl0gZG91
YmxlVmFsdWVdOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShw
YXlsb2FkW0AidmFsdWVzIl0sIEAidmFsdWVzIik7CisgICAgc2VsZi52YWx1ZXMgPSBwYXlsb2Fk
W0AidmFsdWVzIl07CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZ
KHBheWxvYWRbQCJwYXlsb2FkIl0sIEAicGF5bG9hZCIpOworICAgIHNlbGYucGF5bG9hZCA9IHBh
eWxvYWRbQCJwYXlsb2FkIl07CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BS
T1BFUlRZKHBheWxvYWRbQCJlcnJvciJdLCBAImVycm9yIik7CisgICAgc2VsZi5lcnJvciA9IHBh
eWxvYWRbQCJlcnJvciJdOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9Q
RVJUWShwYXlsb2FkW0AiZXJyb3JMaXN0Il0sIEAiZXJyb3JMaXN0Iik7CisgICAgc2VsZi5lcnJv
ckxpc3QgPSBwYXlsb2FkW0AiZXJyb3JMaXN0Il07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwog
LSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4q
LyAqKWNvbHVtbk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91Ymxl
KXRpbWVzdGFtcCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2Fk
OihSV0lQcm90b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJvdG9jb2xEYXRh
YmFzZUVycm9yICopZXJyb3IgZXJyb3JMaXN0OihOU0FycmF5Lyo8VGVzdFByb3RvY29sRGF0YWJh
c2VFcnJvcj4qLyAqKWVycm9yTGlzdDsKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwpAQCAt
MTU2OSw2ICsxNjQwLDI5IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIEBpbXBsZW1l
bnRhdGlvbiBUZXN0UHJvdG9jb2xEYXRhYmFzZU9iamVjdFdpdGhQcm9wZXJ0eU5hbWVDb25mbGlj
dHMKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rpb25h
cnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9S
RVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiaW50ZWdlciJdLCBAImludGVnZXIiKTsKKyAgICBz
ZWxmLmludGVnZXIgPSBwYXlsb2FkW0AiaW50ZWdlciJdOworCisgICAgVEhST1dfRVhDRVBUSU9O
X0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AiYXJyYXkiXSwgQCJhcnJheSIpOworICAg
IHNlbGYuYXJyYXkgPSBwYXlsb2FkW0AiYXJyYXkiXTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAInN0cmluZyJdLCBAInN0cmluZyIpOworICAg
IHNlbGYuc3RyaW5nID0gcGF5bG9hZFtAInN0cmluZyJdOworCisgICAgVEhST1dfRVhDRVBUSU9O
X0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0AidmFsdWUiXSwgQCJ2YWx1ZSIpOworICAg
IHNlbGYudmFsdWUgPSBwYXlsb2FkW0AidmFsdWUiXTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAIm9iamVjdCJdLCBAIm9iamVjdCIpOworICAg
IHNlbGYub2JqZWN0ID0gcGF5bG9hZFtAIm9iamVjdCJdOworCisgICAgcmV0dXJuIHNlbGY7Cit9
CisKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aEludGVnZXI6KE5TU3RyaW5nICopaW50ZWdlciBh
cnJheTooTlNTdHJpbmcgKilhcnJheSBzdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHZhbHVlOihO
U1N0cmluZyAqKXZhbHVlIG9iamVjdDooTlNTdHJpbmcgKilvYmplY3Q7CiB7CiAgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKQEAgLTE2NDQsMTEgKzE3MzgsNDUgQEAgdXNpbmcgbmFtZXNwYWNlIElu
c3BlY3RvcjsKIAogQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2NvbERhdGFiYXNlRHVtbXlPYmpl
Y3QKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rpb25h
cnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIg
aW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgcmV0dXJuIHNlbGY7Cit9CisKIEBl
bmQKIAogCiBAaW1wbGVtZW50YXRpb24gVGVzdFByb3RvY29sVGVzdFBhcmFtZXRlckJ1bmRsZQog
CistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihub25udWxsIE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBpZD4gKilwYXlsb2FkCit7CisgICAgaWYgKCEoc2VsZiA9IFtzdXBlciBpbml0
XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJ
UkVEX1BST1BFUlRZKHBheWxvYWRbQCJjb2x1bW5OYW1lcyJdLCBAImNvbHVtbk5hbWVzIik7Cisg
ICAgc2VsZi5jb2x1bW5OYW1lcyA9IHBheWxvYWRbQCJjb2x1bW5OYW1lcyJdOworCisgICAgVEhS
T1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0Aibm90ZXMiXSwgQCJu
b3RlcyIpOworICAgIHNlbGYubm90ZXMgPSBwYXlsb2FkW0Aibm90ZXMiXTsKKworICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZFtAInRpbWVzdGFtcCJdLCBA
InRpbWVzdGFtcCIpOworICAgIHNlbGYudGltZXN0YW1wID0gW3BheWxvYWRbQCJ0aW1lc3RhbXAi
XSBkb3VibGVWYWx1ZV07CisKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BF
UlRZKHBheWxvYWRbQCJ2YWx1ZXMiXSwgQCJ2YWx1ZXMiKTsKKyAgICBzZWxmLnZhbHVlcyA9IHBh
eWxvYWRbQCJ2YWx1ZXMiXTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJP
UEVSVFkocGF5bG9hZFtAInBheWxvYWQiXSwgQCJwYXlsb2FkIik7CisgICAgc2VsZi5wYXlsb2Fk
ID0gcGF5bG9hZFtAInBheWxvYWQiXTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlS
RURfUFJPUEVSVFkocGF5bG9hZFtAImVycm9yIl0sIEAiZXJyb3IiKTsKKyAgICBzZWxmLmVycm9y
ID0gcGF5bG9hZFtAImVycm9yIl07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwogLSAoaW5zdGFu
Y2V0eXBlKWluaXRXaXRoQ29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqKWNvbHVt
bk5hbWVzIG5vdGVzOihOU1N0cmluZyAqKW5vdGVzIHRpbWVzdGFtcDooZG91YmxlKXRpbWVzdGFt
cCB2YWx1ZXM6KFJXSVByb3RvY29sSlNPTk9iamVjdCAqKXZhbHVlcyBwYXlsb2FkOihSV0lQcm90
b2NvbEpTT05PYmplY3QgKilwYXlsb2FkIGVycm9yOihUZXN0UHJvdG9jb2xEYXRhYmFzZUVycm9y
ICopZXJyb3I7CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLXJl
cXVpcmluZy1ydW50aW1lLWNhc3RzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUt
Y2FzdHMuanNvbi1yZXN1bHQKaW5kZXggMTgwMGVkNmY3MWU2NGVhMjRhMjgxNWJkZGFlYmZjODNm
NjRhYmQ5Mi4uNjg1Y2NkMzkxMTk3MmQzNTdkYmQxNGMwOWNhN2FmYjgzYWJhMTg4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVj
dGVkL3R5cGUtcmVxdWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtcmVx
dWlyaW5nLXJ1bnRpbWUtY2FzdHMuanNvbi1yZXN1bHQKQEAgLTExNjEsNiArMTE2MSw3IEBAIHR5
cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzKSB7
CiAKIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBU
ZXN0UHJvdG9jb2xUZXN0VHlwZU5lZWRpbmdDYXN0IDogUldJUHJvdG9jb2xKU09OT2JqZWN0Cist
IChpbnN0YW5jZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
aWQ+ICopcGF5bG9hZDsKIC0gKGluc3RhbmNldHlwZSlpbml0V2l0aFN0cmluZzooTlNTdHJpbmcg
KilzdHJpbmcgbnVtYmVyOihpbnQpbnVtYmVyIGFuaW1hbHM6KFRlc3RQcm90b2NvbFRlc3RDYXN0
ZWRBbmltYWxzKWFuaW1hbHMgaWRlbnRpZmllcjooaW50KWlkZW50aWZpZXIgdHJlZTooVGVzdFBy
b3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEgKil0cmVlOwogLyogcmVxdWlyZWQgKi8gQHByb3Bl
cnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpzdHJpbmc7CiAvKiByZXF1aXJlZCAqLyBA
cHJvcGVydHkgKG5vbmF0b21pYywgYXNzaWduKSBpbnQgbnVtYmVyOwpAQCAtMTE3MSwxMSArMTE3
MiwxMyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogX19hdHRy
aWJ1dGVfXygodmlzaWJpbGl0eSAoImRlZmF1bHQiKSkpCiBAaW50ZXJmYWNlIFRlc3RQcm90b2Nv
bFRlc3RSZWN1cnNpdmVPYmplY3QxIDogUldJUHJvdG9jb2xKU09OT2JqZWN0CistIChpbnN0YW5j
ZXR5cGUpaW5pdFdpdGhQYXlsb2FkOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5
bG9hZDsKIC8qIG9wdGlvbmFsICovIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZXRhaW4pIFRlc3RQ
cm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICpvYmo7CiBAZW5kCiAKIF9fYXR0cmlidXRlX18o
KHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogQGludGVyZmFjZSBUZXN0UHJvdG9jb2xUZXN0UmVj
dXJzaXZlT2JqZWN0MiA6IFJXSVByb3RvY29sSlNPTk9iamVjdAorLSAoaW5zdGFuY2V0eXBlKWlu
aXRXaXRoUGF5bG9hZDooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBheWxvYWQ7CiAv
KiBvcHRpb25hbCAqLyBAcHJvcGVydHkgKG5vbmF0b21pYywgcmV0YWluKSBUZXN0UHJvdG9jb2xU
ZXN0UmVjdXJzaXZlT2JqZWN0MSAqb2JqOwogQGVuZAogCkBAIC0xMjcxLDYgKzEyNzQsMjkgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogQGltcGxlbWVudGF0aW9uIFRlc3RQcm90b2Nv
bFRlc3RUeXBlTmVlZGluZ0Nhc3QKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRXaXRoUGF5bG9hZDoo
bm9ubnVsbCBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9hZAoreworICAgIGlm
ICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgVEhS
T1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShwYXlsb2FkW0Aic3RyaW5nIl0sIEAi
c3RyaW5nIik7CisgICAgc2VsZi5zdHJpbmcgPSBwYXlsb2FkW0Aic3RyaW5nIl07CisKKyAgICBU
SFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJudW1iZXIiXSwg
QCJudW1iZXIiKTsKKyAgICBzZWxmLm51bWJlciA9IFtwYXlsb2FkW0AibnVtYmVyIl0gaW50ZWdl
clZhbHVlXTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5
bG9hZFtAImFuaW1hbHMiXSwgQCJhbmltYWxzIik7CisgICAgc2VsZi5hbmltYWxzID0gZnJvbVBy
b3RvY29sU3RyaW5nPFRlc3RQcm90b2NvbFRlc3RDYXN0ZWRBbmltYWxzPihwYXlsb2FkW0AiYW5p
bWFscyJdKTsKKworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5
bG9hZFtAImlkZW50aWZpZXIiXSwgQCJpZGVudGlmaWVyIik7CisgICAgc2VsZi5pZGVudGlmaWVy
ID0gW3BheWxvYWRbQCJpZCJdIGludGVnZXJWYWx1ZV07CisKKyAgICBUSFJPV19FWENFUFRJT05f
Rk9SX1JFUVVJUkVEX1BST1BFUlRZKHBheWxvYWRbQCJ0cmVlIl0sIEAidHJlZSIpOworICAgIHNl
bGYudHJlZSA9IHBheWxvYWRbQCJ0cmVlIl07CisKKyAgICByZXR1cm4gc2VsZjsKK30KKwogLSAo
aW5zdGFuY2V0eXBlKWluaXRXaXRoU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBudW1iZXI6KGlu
dCludW1iZXIgYW5pbWFsczooVGVzdFByb3RvY29sVGVzdENhc3RlZEFuaW1hbHMpYW5pbWFscyBp
ZGVudGlmaWVyOihpbnQpaWRlbnRpZmllciB0cmVlOihUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZl
T2JqZWN0MSAqKXRyZWU7CiB7CiAgICAgc2VsZiA9IFtzdXBlciBpbml0XTsKQEAgLTEzNDMsNiAr
MTM2OSwxNiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBAaW1wbGVtZW50YXRpb24g
VGVzdFByb3RvY29sVGVzdFJlY3Vyc2l2ZU9iamVjdDEKIAorLSAoaW5zdGFuY2V0eXBlKWluaXRX
aXRoUGF5bG9hZDoobm9ubnVsbCBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopcGF5bG9h
ZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmls
OworCisgICAgc2VsZi5vYmogPSBwYXlsb2FkW0Aib2JqIl07CisKKyAgICByZXR1cm4gc2VsZjsK
K30KKwogLSAodm9pZClzZXRPYmo6KFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyICop
b2JqCiB7CiAgICAgW3N1cGVyIHNldE9iamVjdDpvYmogZm9yS2V5OkAib2JqIl07CkBAIC0xMzU3
LDYgKzEzOTMsMTYgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogQGltcGxlbWVudGF0
aW9uIFRlc3RQcm90b2NvbFRlc3RSZWN1cnNpdmVPYmplY3QyCiAKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aFBheWxvYWQ6KG5vbm51bGwgTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKXBh
eWxvYWQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJu
IG5pbDsKKworICAgIHNlbGYub2JqID0gcGF5bG9hZFtAIm9iaiJdOworCisgICAgcmV0dXJuIHNl
bGY7Cit9CisKIC0gKHZvaWQpc2V0T2JqOihUZXN0UHJvdG9jb2xUZXN0UmVjdXJzaXZlT2JqZWN0
MSAqKW9iagogewogICAgIFtzdXBlciBzZXRPYmplY3Q6b2JqIGZvcktleTpAIm9iaiJdOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>