Sie sind auf Seite 1von 739

<?

php
/**
* ImportBuddy Backup Importer Script
*
* ATTENTION: IF YOU ARE READING THIS WHILE TRYING TO LOAD IMPORTBUDDY TO RESTORE
YOUR SITE:
* Your server is not properly handling PHP files. Contact your hosting provider to
fix this.
* Notify them that PHP files are not executing and instead are outputting their
code contents.
*
* @package BackupBuddy
*/

/**
* <!-- ImportBuddy Restore & Migration Tool - iThemes.com
*
* @version 8.2.8.2 (downloaded 2018-09-20T18:07:13+00:00)
* @author iThemes.com
* @developer Dustin Bolton
* @created Feb 11, 2010
*
*
###################################################################################
############
* #
#
* # THERE ARE NO USER-EDITABLE PORTIONS OF THIS FILE! DO NOT EDIT UNLESS DIRECTED
BY SUPPORT! #
* #
#
*
###################################################################################
############
*/

define( 'PB_PASSWORD', '81dc9bdb52d04dc20036dbd8313ed055' ); // Update this portion


with the hashed password to override a forgotten password.

$php_minimum = '5.1'; // User's PHP must be equal or newer to this version.


$ignore_not_writable = false; // Set to true to ignore is_writable() returning
false on this directory. Useful for servers lying about the writable status of the
directory.

// Uncomment the following line when 500 Internal Server Error occurs.
// error_reporting( E_ALL );

if ( version_compare( PHP_VERSION, $php_minimum ) < 0 ) {


die( 'ERROR #9013. See <a href="https://ithemeshelp.zendesk.com/hc/en-
us/articles/211132377-Error-Codes-#9013">this page for details</a>. Sorry! PHP
version ' . $php_minimum . ' or newer is required for BackupBuddy to properly run.
You are running PHP version ' . PHP_VERSION . '.' );
}

global $importbuddy_file;
$importbuddy_file = basename( __FILE__ ); // filename of importbuddy.php (or
whatever it is named).

global $wp_version;
$wp_version = '4.4'; // Spoof a version for new wp-db class.
$abspath = rtrim( dirname( __FILE__ ), '\\/' ) . '/';

define( 'ABSPATH', $abspath );


define( 'WP_CONTENT_DIR', $abspath . 'wp-content' );
define( 'PB_BB_VERSION', '8.2.8.2 (downloaded 2018-09-20T18:07:13+00:00)' );
define( 'DB_CHARSET', 'utf8' ); // Default only. Overriden later if needed. Used by
wpdb class.
define( 'DB_COLLATE', '' ); // Default only. Overriden alter if needed. Used by
wpdb class.

@date_default_timezone_set( @date_default_timezone_get() ); // Prevents date() from


throwing a warning if the default timezone has not been set. Run prior to any
file_exists()!

/**
* Checks the current step.
*
* @return int|false Current step or false when step not found or invalid.
*/
function ib_directory_browsing_allowed() {
if ( ! isset( $_GET['step'] ) ) {
return false;
}

$step = $_GET['step'];

if ( ! is_numeric( $step ) ) {
return false;
}

if ( $step < 5 ) {
return false;
}

return $step;
}

// Try to put an index.htm file in place during import to help prevent against file
browsing. Only do if not a defined step OR a non-numeric defined step OR a defined
numeric step < 5.
if ( ! ib_directory_browsing_allowed() ) {
if ( ! file_exists( ABSPATH . 'index.htm' ) && ! file_exists( ABSPATH .
'index.php' ) ) {
@file_put_contents( ABSPATH . 'index.htm', '<html></html>' );
}
}

// If inside BB install then die. Else unpack importbuddy if needed.


if ( @file_exists( @dirname( @dirname( __FILE__ ) ) . '/backupbuddy.php' ) ) {
die( '<html>Access Denied</html>' );
}

// Unpack importbuddy files into importbuddy directory. Does this when importbuddy
directory does not exist OR if now request GET or POST params are sent (aka the
first page only).
if ( ! file_exists( ABSPATH . 'importbuddy' ) || ( ( count( $_GET ) == 0 ) &&
( count( $_POST ) == 0 ) ) ) {
$importbuddy_contents = file_get_contents( __FILE__ );
if ( false === $importbuddy_contents ) {
die( 'Error #8494834: Unable to read in importbuddy file `' .
__FILE__ . '` for validating.' );
}

// Make sure this file is complete and contains all the packed data to the
end before proceeding.
if ( false === strpos( $importbuddy_contents, '###PACKDATA' . ',END' ) ) { //
Concat here so we don't false positive on this line when searching.
die( 'ERROR: It appears your `' . __FILE__ . '` file is incomplete. It
may have not finished downloading or uploading completely. Please try re-
downloading the script from within BackupBuddy in WordPress (do not just copy the
file from the plugin directory) and re-uploading it.' );
}

// Make sure no leading whitespace. Some servers introduce this to the


beginning, breaking authentication due to output before auth headers being sent.
if ( ltrim( $importbuddy_contents ) !== $importbuddy_contents ) {
if ( false === ( file_put_contents( __FILE__,
ltrim( $importbuddy_contents ) ) ) ) {
die( 'Error #84394834: Your importbuddy file `' . __FILE__ . '`
file contains leading whitespace/newslines and the script could not re-write it to
fix it for you (possibly due to permissions). Please re-download it or manually
edit to make sure it begins with <?php with no spaces or newlines/enters before
it.' );
} else { // Re-wrote file.
sleep( 1 );
die( '<meta http-equiv="refresh" content="1">Refreshing...
Removed unexpected leading whitespace found in importbuddy.php file.' );
}
}

$importbuddy_contents = '';

$unpack_importbuddy = true;
if ( file_exists( ABSPATH . 'importbuddy' ) ) { // ImportBuddy directory
already exists. We may need to re-unpack it if this file has been updated since.
$signature = @file_get_contents( ABSPATH . 'importbuddy/_signature.php'
);
$signature = trim( str_replace( '<?php die(); ?>', '', $signature ) );
if ( md5( PB_BB_VERSION . PB_PASSWORD ) != $signature ) { // Signature
mismatch. We will need to delete and unpack again to update.
// echo '<!-- unlinking existing importbuddy directory. -->';
5.1.0.10: Broke causing headers already sent error due to auth.
recursive_unlink( ABSPATH . 'importbuddy' );
} else {
$unpack_importbuddy = false;
}
}
if ( true === $unpack_importbuddy ) {
unpack_importbuddy( $ignore_not_writable );
@file_put_contents( ABSPATH . 'importbuddy/_signature.php', '<?php
die(); ?>' . md5( PB_BB_VERSION . PB_PASSWORD ) ); // Create a hash of this
ImportBuddy version & password. On accessing importbuddy.php's authentication page
all importbuddy files will be freshly unpacked if the importbuddy.php version
and/or password mismatches to allow users to just replace importbuddy.php to
upgrade ImportBuddy or password.
}
}

// Database wrapper.
require_once ABSPATH . 'importbuddy/classes/wp-db.php';
global $wpdb;

if ( isset( $_GET['api'] ) && '' != $_GET['api'] ) { // API ACCESS.


if ( 'ping' === $_GET['api'] ) {
die( 'pong' );
} else {
die( 'Unknown API access action.' );
}
} else { // NORMAL ACCESS.
if ( ! file_exists( ABSPATH . 'importbuddy/init.php' ) ) {
die( 'Error: Unable to find file `' . ABSPATH . 'importbuddy/init.php`.
Make sure that you downloaded this script from within BackupBuddy. Copying
importbuddy files from inside the plugin directory is not sufficient as many file
additions are made on demand.' );
} else {
require_once ABSPATH . 'importbuddy/init.php';
}
}

/**
* Recursively delete files.
*
* @param string $path Path to start deleting.
*
* @return bool If successful.
*/
function recursive_unlink( $path ) {
return is_file( $path ) ? @unlink( $path ) : array_map( 'recursive_unlink',
glob( $path . '/*' ) ) == @rmdir( $path );
}

/**
* Unpacks required files encoded in importbuddy.php into stand-alone files.
*
* @param bool $ignore_not_writable Ignore not writeable errors.
*/
function unpack_importbuddy( $ignore_not_writable = false ) {
if ( ! is_writable( ABSPATH ) && false === $ignore_not_writable ) {
echo 'Error #224834. This directory, `' . ABSPATH . '`, is not write
enabled according to the server. Please verify proper write permissions to
continue. If this persists, contact your web hosting provider and tell them that
is_writable("' . ABSPATH . '") returns FALSE in PHP.';
die();
} else {
$unpack_file = '';

$handle = @fopen( __FILE__, 'r' );


if ( $handle ) {
while ( ( $buffer = fgets( $handle ) ) !== false ) {
if ( substr( $buffer, 0, 11 ) == '###PACKDATA' ) {
$packdata_commands = explode( ',', trim( $buffer ) );
array_shift( $packdata_commands );

if ( 'BEGIN' === $packdata_commands[0] ) {


// Start packed data.
} elseif ( 'FILE_START' === $packdata_commands[0] ) {
$unpack_file = $packdata_commands[2];
} elseif ( 'FILE_END' === $packdata_commands[0] ) {
$unpack_file = '';
} elseif ( 'END' === $packdata_commands[0] ) {
return;
}
} else {
if ( '' != $unpack_file ) {
if ( ! is_dir( dirname( ABSPATH .
$unpack_file ) ) ) {
$mkdir_result = mkdir( dirname( ABSPATH .
$unpack_file ), 0777, true ); // second param makes recursive.
if ( false === $mkdir_result ) {
echo 'Error #54455. Unable to mkdir
`' . dirname( ABSPATH . $unpack_file ) . '`<br>';
}
}
$fileput_result = file_put_contents( ABSPATH .
$unpack_file, base64_decode( $buffer ) );
if ( false === $fileput_result ) {
echo 'Error #65656. Unable to put file
contents to `' . ABSPATH . $unpack_file . '`.<br>';
}
}
}
}
if ( ! feof( $handle ) ) {
echo 'Error: unexpected fgets() fail.<br>';
}
fclose( $handle );
} else {
echo 'ERROR #54455: Unable to open `' . __FILE__ . '` file for
reading in packaged data.<br>';
}
}
}

die();

/*
###PACKDATA,BEGIN
###PACKDATA,FILE_START,/_importbuddy/importbuddy/.htaccess,importbuddy/.htaccess

###PACKDATA,FILE_END,/_importbuddy/importbuddy/.htaccess,importbuddy/.htaccess
###PACKDATA,FILE_START,/_importbuddy/importbuddy/importbuddy-
hooks.php,importbuddy/importbuddy-hooks.php
PD9waHAKLyoqCiAqIFRoaXMgaXMgYSBwb29yIG1hbidzIGltcGxlbWVudGF0aW9uIG9mIFdQJ3MgaG9va3M
uCiAqCiAqIEl0IGRvZXNuJ3QgYWxsb3cgeW91IHRvIGFkZCBtdWx0aXBsZSBob29rcyB0byB0aGUgYWN0aW
9uLiBPbmx5IG9uZS4KICogTm90IG9mZmljaWFsbHkgc3VwcG9ydGVkIHlldC4KICovCgovKioKICogTXVja
CBsaWtlIFdQIEFjdGlvbnMuIFBhc3NlcyB0byBmaWx0ZXIuIERvZXNuJ3QgcmV0dXJuIGRhdGEuCiAqCiAq
IEBwYXJhbSAgc3RyaW5nICAkYWN0aW9uICBTbHVnLiBJbnQgdGhpcyBpbXBsZW1lbnRhdGlvbiAtIGl0IHd
pbCBldmVudHVhbGx5IGJlIGFwcGVuZGVkIHRvIGEgZnVuY3Rpb24gbmFtZQogKiBAcGFyYW0gIGFycmF5IC
AgJHBhcmFtcyAgT3B0aW9uYWwgZGF0YSB0byB3b3JrIHdpdGgKICovCmZ1bmN0aW9uIGl0X2J1Yl9pbXBvc
nRidWRkeV9kb19hY3Rpb24oICRhY3Rpb24sICRwYXJhbXMgPSAnJyApIHsKCWl0X2J1Yl9pbXBvcnRidWRk
eV9hcHBseV9maWx0ZXJzKCAkYWN0aW9uLCAkcGFyYW1zICk7Cn0KCi8qKgogKiBNdWNoIGxpa2UgV1AgRml
sdGVycy4KICoKICogT3VyIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QgYWN0dWFsbHkgc3VwcG9ydCBhZGRpbm
cgZmlsdGVycy4gVGhleSdyZSBjdXJyZW50bHkgYWxsIGhhcmQgY29kZWQuCiAqCiAqIEBwYXJhbSAgc3Rya
W5nICAkYWN0aW9uICBTbHVnLiBJbnQgdGhpcyBpbXBsZW1lbnRhdGlvbiAtIGl0IHdpbCBldmVudHVhbGx5
IGJlIGFwcGVuZGVkIHRvIGEgZnVuY3Rpb24gbmFtZQogKiBAcGFyYW0gIGFycmF5ICAgJHBhcmFtcyAgT3B
0aW9uYWwgZGF0YSB0byB3b3JrIHdpdGgKICoKICogQHJldHVybiBtaXhlZAogKi8KZnVuY3Rpb24gaXRfYn
ViX2ltcG9ydGJ1ZGR5X2FwcGx5X2ZpbHRlcnMoICRhY3Rpb24sICRwYXJhbXMgPSBhcnJheSgpICkgewoJL
y8gSWYgZHJvcGluIGRvZXNuJ3QgZXhpc3QsIGFib3J0CglpZiAoICEgaXRfYnViX2ltcG9ydGJ1ZGR5X2xv
YWRfZHJvcGluKCkgKSB7CgkJcmV0dXJuICRwYXJhbXM7Cgl9CgoJLy8gSWYgYWN0aW9uIGV4aXN0cywgZG8
gaXQuIElmIG5vdCwgYWJvcnQKCWlmICggaXNfY2FsbGFibGUoICdpdF9idWJfaW1wb3J0YnVkZHlfaG9va1
8nIC4gJGFjdGlvbiApICkgewoJCXJldHVybiBjYWxsX3VzZXJfZnVuYyggJ2l0X2J1Yl9pbXBvcnRidWRke
V9ob29rXycgLiAkYWN0aW9uLCAkcGFyYW1zICk7Cgl9CgoJcmV0dXJuICRwYXJhbXM7Cn0KCi8qKgogKiBM
b2FkcyB0aGUgZHJvcGluIGZpbGUgaWYgaXQgZXhpc3RzIG9uZSBkaXJlY3RvcnkgdXAgZnJvbSByb290IG9
mIGltcG9ydAogKgogKiBAcmV0dXJuIG51bGwKICovCmZ1bmN0aW9uIGl0X2J1Yl9pbXBvcnRidWRkeV9sb2
FkX2Ryb3BpbigpIHsKCS8vIFBvc3NpYmxlIGxvY2F0aW9ucy4KCSRsb2NhdGlvbnMgPSBhcnJheSgKCQlka
XJuYW1lKCBBQlNQQVRIICksCgkJZGlybmFtZSggZGlybmFtZSggQUJTUEFUSCApICksCgkpOwoKCWZvcmVh
Y2ggKCAkbG9jYXRpb25zIGFzICRsb2NhdGlvbiApIHsKCQlpZiAoICEgQGlzX3JlYWRhYmxlKCAkbG9jYXR
pb24gLiAnL2l0LWJ1Yi1pbXBvcnRidWRkeS1ob29rcy5waHAnICkgKSB7CgkJCWNvbnRpbnVlOwoJCX0gZW
xzZSB7CgkJCXJlcXVpcmVfb25jZSAkbG9jYXRpb24gLiAnL2l0LWJ1Yi1pbXBvcnRidWRkeS1ob29rcy5wa
HAnOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9Cgl9CglyZXR1cm4gZmFsc2U7Cn0K
###PACKDATA,FILE_END,/_importbuddy/importbuddy/importbuddy-
hooks.php,importbuddy/importbuddy-hooks.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/index.htm,importbuddy/index.htm
PGh0bWw+PC9odG1sPg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/index.htm,importbuddy/index.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/index.html,importbuddy/index.html
PGh0bWw+PC9odG1sPg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/index.html,importbuddy/index.html
###PACKDATA,FILE_START,/_importbuddy/importbuddy/index.php,importbuddy/index.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/_importbuddy/importbuddy/index.php,importbuddy/index.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/init.php,importbuddy/init.php
PD9waHAKLyoqCiAqIFBsdWdpbiBOYW1lOiBJbXBvcnRCdWRkeQogKiBQbHVnaW4gVVJJOiBodHRwOi8vaXR
oZW1lcy5jb20vCiAqIERlc2NyaXB0aW9uOiBCYWNrdXBCdWRkeSBJbXBvcnRlcgogKgogKiBAc2luY2UgMS
4wLjIKICogQGF1dGhvciBEdXN0aW4gQm9sdG9uCiAqIEBwYWNrYWdlIEJhY2t1cEJ1ZGR5CiAqCiAqIEluc
3RhbGxhdGlvbjoKICoKICogMS4gRG93bmxvYWQgYW5kIHVuemlwIHRoZSBsYXRlc3QgcmVsZWFzZSB6aXAg
ZmlsZS4KICogMi4gSWYgeW91IHVzZSB0aGUgV29yZFByZXNzIHBsdWdpbiB1cGxvYWRlciB0byBpbnN0YWx
sIHRoaXMgcGx1Z2luIHNraXAgdG8gc3RlcCA0LgogKiAzLiBVcGxvYWQgdGhlIGVudGlyZSBwbHVnaW4gZG
lyZWN0b3J5IHRvIHlvdXIgYC93cC1jb250ZW50L3BsdWdpbnMvYCBkaXJlY3RvcnkuCiAqIDQuIEFjdGl2Y
XRlIHRoZSBwbHVnaW4gdGhyb3VnaCB0aGUgJ1BsdWdpbnMnIG1lbnUgaW4gV29yZFByZXNzIEFkbWluaXN0
cmF0aW9uLgogKgogKiBVc2FnZToKICoKICogMS4gTmF2aWdhdGUgdG8gdGhlIG5ldyBwbHVnaW4gbWVudSB
pbiB0aGUgV29yZFByZXNzIEFkbWluaXN0cmF0aW9uIFBhbmVsLgogKgogKiBOT1RFOiBETyBOT1QgRURJVC
BUSElTIE9SIEFOWSBPVEhFUiBQTFVHSU4gRklMRVMuIE5PIFVTRVItQ09ORklHVVJBQkxFIE9QVElPTlMgV
0lUSElOLgogKi8KCmVycm9yX3JlcG9ydGluZyggRV9FUlJPUiB8IEVfV0FSTklORyB8IEVfUEFSU0UgfCBF
X05PVElDRSApOyAvLyBISUdILgoKZGVmaW5lKCAnUEJfU1RBTkRBTE9ORScsIHRydWUgKTsKZGVmaW5lKCA
nUEJfSU1QT1JUQlVERFknLCB0cnVlICk7CgpyZXF1aXJlX29uY2UgQUJTUEFUSCAuICdpbXBvcnRidWRkeS
9pbXBvcnRidWRkeS1ob29rcy5waHAnOwppdF9idWJfaW1wb3J0YnVkZHlfZG9fYWN0aW9uKCAnaW5pdCcgK
TsKCiRwbHVnaW5idWRkeV9zZXR0aW5ncyA9IGl0X2J1Yl9pbXBvcnRidWRkeV9hcHBseV9maWx0ZXJzKCAn
cGx1Z2luYnVkZHlfc2V0dGluZ3MnLCBhcnJheSgKCSdzbHVnJyAgICAgICAgICAgICAgICAgICAgPT4gJ2J
hY2t1cGJ1ZGR5JywKCSdwaHBfbWluaW11bScgICAgICAgICAgICAgPT4gJzUuMicsCgknc2VyaWVzJyAgIC
AgICAgICAgICAgICAgID0+ICcnLAoJJ3JlbW90ZV9hcGknICAgICAgICAgICAgICA9PiAnMCcsIC8vIFNld
CB0byAxIGJ5IHN0YXRlIGZvciBkZXBsb3ltZW50cy4KCSdkZWZhdWx0X3N0YXRlX292ZXJyaWRlcycgPT4g
YXJyYXkoKSwgLy8gRGVmYXVsdCBzdGF0ZSB0byBvdmVycmlkZSB0aGUgbWFpbiBkZWZhdWx0cy4gR29vZCB
mb3IgYXV0b21hdGluZyBpbXBvcnRzLiBBcHBsaWVkIG92ZXIgZGVmYXVsdHMgZHVyaW5nIGNvbnN0cnVjdG
lvbiBvZiByZXN0b3JlIGNsYXNzLgoJJ2RlZmF1bHRfb3B0aW9ucycgICAgICAgICA9PiBhcnJheSgKCQknY
mJfdmVyc2lvbicgICAgICAgPT4gUEJfQkJfVkVSU0lPTiwgIC8vIEJCIHZlcnNpb24gdG8gYmUgZmlsbGVk
IGluIG9uIGRvd25sb2FkLgoJCSdiYWNrdXBfZGlyZWN0b3J5JyA9PiAnJywKCQknbG9nX2xldmVsJyAgICA
gICAgPT4gMCwgLy8gTm8gbG9uZ2VyIHVzaW5nIHRoaXMgbWV0aG9kIGZvciBoYW5kbGluZyBsb2dnaW5nLi
BzdGF0dXMoKSBtZXRob2QgYWx3YXlzIGxvZ3MgYWxsIGlmIGltcG9ydGJ1ZGR5LgoJKSwKCSdtb2R1bGVzJ
yAgICAgICAgICAgICAgICAgPT4gYXJyYXkoCgkJJ3VwZGF0ZXInICAgID0+IGZhbHNlLCAgICAgICAgICAg
ICAgICAgICAgICAvLyBMb2FkIFBsdWdpbkJ1ZGR5IGF1dG9tYXRpYyB1cGdyYWRlcy4KCQknZmlsZXN5c3R
lbScgPT4gdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgIC8vIEZpbGUgc3lzdGVtIGhlbHBlciBtZXRob2
RzLgoJCSdmb3JtYXQnICAgICA9PiB0cnVlLCAgICAgICAgICAgICAgICAgICAgICAgLy8gVGV4dCAvIGRhd
GEgZm9ybWF0dGluZyBoZWxwZXIgbWV0aG9kcy4KCSksCikgKTsKCi8vICRzZXR0aW5ncyBpcyBleHBlY3Rl
ZCB0byBiZSBwb3B1bGF0ZWQgcHJpb3IgdG8gaW5jbHVkaW5nIFBsdWdpbkJ1ZGR5IGZyYW1ld29yay4gRG8
gbm90IGVkaXQgYmVsb3cuCnJlcXVpcmUgZGlybmFtZSggX19GSUxFX18gKSAuICcvcGx1Z2luYnVkZHkvX3
BsdWdpbmJ1ZGR5LnBocCc7Cg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/init.php,importbuddy/init.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/init_admin.php,importbuddy/init_ad
min.php
PD9waHAKcGJfYmFja3VwYnVkZHk6OmxvYWQoKTsKCi8vICoqKioqKioqKiogQUNUSU9OUyAoYWRtaW4pICo
qKioqKioqKioKCgoKLy8gKioqKioqKioqKiBBSkFYIChhZG1pbikgKioqKioqKioqKgoKCgovLyAqKioqKi
oqKioqIERBU0hCT0FSRCAoYWRtaW4pICoqKioqKioqKioKCgoKLy8gKioqKioqKioqKiBGSUxURVJTIChhZ
G1pbikgKioqKioqKioqKgoKCgovLyAqKioqKioqKioqIFBBR0VTIChhZG1pbikgKioqKioqKioqKgoKCgov
LyAqKioqKioqKioqIExJQlJBUklFUyAmIENMQVNTRVMgKGFkbWluKSAqKioqKioqKioqCnJlcXVpcmVfb25
jZSggJ2NsYXNzZXMvY29yZS5waHAnICk7CgpyZXF1aXJlX29uY2UoICdjbGFzc2VzL2ltcG9ydC5waHAnIC
k7CnBiX2JhY2t1cGJ1ZGR5OjokY2xhc3Nlc1snaW1wb3J0J10gPSBuZXcgcGJfYmFja3VwYnVkZHlfaW1wb
3J0KCk7CgoKLy8gKioqKioqKioqKiBPVEhFUiAoYWRtaW4pICoqKioqKioqKioKCgo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/init_admin.php,importbuddy/init_admi
n.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/init_global.php,importbuddy/init_g
lobal.php
PD9waHAKLyoqCiAqIEluaXQgR2xvYmFsCiAqCiAqIEBwYWNrYWdlIEJhY2t1cEJ1ZGR5CiAqLwoKaWYgKCA
hIGNsYXNzX2V4aXN0cyggJ2JhY2t1cGJ1ZGR5X2NvcmUnICkgKSB7CglyZXF1aXJlX29uY2UgcGJfYmFja3
VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2NsYXNzZXMvY29yZS5waHAnOwp9CgpyZXF1aXJlX29uY2UgQ
UJTUEFUSCAuICdpbXBvcnRidWRkeS9jbGFzc2VzL2F1dGgucGhwJzsKCi8vIElmIHZlcmlmaWNhdGlvbiBj
b2RlIHBhc3NlZCB0aGVuIGF1dGhlbnRpY2F0ZSBlYXJseS4KaWYgKCBwYl9iYWNrdXBidWRkeTo6X0dFVCg
gJ2Rpc3BsYXlfbW9kZScgKSA9PSAnZW1iZWQnICkgewoJQXV0aDo6cmVxdWlyZV9hdXRoZW50aWNhdGlvbi
gpOwp9CgpnbG9iYWwgJGltcG9ydGJ1ZGR5X2ZpbGU7CiRpbXBvcnRfc2VyaWFsID0gYmFja3VwYnVkZHlfY
29yZTo6Z2V0X3NlcmlhbF9mcm9tX2ZpbGUoICRpbXBvcnRidWRkeV9maWxlICk7CgppZiAoICcnICE9ICRp
bXBvcnRfc2VyaWFsICkgeyAvLyBpbXBvcnRidWRkeSBoYXMgYSBzZXJpYWwuIExvb2sgZm9yIGEgZGVmYXV
sdCBzdGF0ZSBmaWxlIHRoYXQgbWF0Y2hlcy4KCXBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbG9nX3Nlcm
lhbCddID0gJGltcG9ydF9zZXJpYWw7CglwYl9iYWNrdXBidWRkeTo6c2F2ZSgpOwoKCWlmICggZmlsZV9le
GlzdHMoIEFCU1BBVEggLiAnaW1wb3J0YnVkZHktJyAuICRpbXBvcnRfc2VyaWFsIC4gJy1zdGF0ZS5waHAn
ICkgKSB7IC8vIERlZmF1bHQgc3RhdGUgZXhpc3RzLgoKCQkvLyBJZiBhbiBvdmVycmlkaW5nIHN0YXRlIGZ
pbGUgZXhpc3RzIHRoZW4gbG9hZCBpdCBvdmVyIHRoZSBjdXJyZW50IHN0YXRlLgoJCSRvdmVycmlkZV9zdG
F0ZV9maWxlID0gQUJTUEFUSCAuICdpbXBvcnRidWRkeS0nIC4gJGltcG9ydF9zZXJpYWwgLiAnLXN0YXRlL
nBocCc7CgkJaWYgKCBmaWxlX2V4aXN0cyggJG92ZXJyaWRlX3N0YXRlX2ZpbGUgKSApIHsKCQkJJHN0YXRl
ZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkb3ZlcnJpZGVfc3RhdGVfZmlsZSApOwoJCQkvLyBTa2lwIGZ
pcnN0IGxpbmUuCgkJCSRzZWNvbmRfbGluZV9wb3MgPSBzdHJwb3MoICRzdGF0ZWRhdGEsICJcbiIgKSArID
E7CgkJCSRzdGF0ZWRhdGEgICAgICAgPSBzdWJzdHIoICRzdGF0ZWRhdGEsICRzZWNvbmRfbGluZV9wb3MgK
TsKCQkJLy8gRGVjb2RlIGJhY2sgaW50byBhbiBhcnJheS4KCQkJJHN0YXRlZGF0YSA9IGpzb25fZGVjb2Rl
KCBiYXNlNjRfZGVjb2RlKCAkc3RhdGVkYXRhICksIHRydWUgKTsKCQkJaWYgKCBpc19hcnJheSggJHN0YXR
lZGF0YSApICkgeyAvLyBWYWxpZCBjb250ZW50LgoJCQkJLy8gTm9ybWFsaXplIFVSTHMuCgkJCQlpZiAoIG
lzc2V0KCAkc3RhdGVkYXRhWydzaXRldXJsJ10gKSApIHsKCQkJCQkkc3RhdGVkYXRhWydzaXRldXJsJ10gP
SBydHJpbSggJHN0YXRlZGF0YVsnc2l0ZXVybCddLCAnLycgKTsKCQkJCX0KCQkJCWlmICggaXNzZXQoICRz
dGF0ZWRhdGFbJ2hvbWV1cmwnXSApICkgewoJCQkJCSRzdGF0ZWRhdGFbJ2hvbWV1cmwnXSA9IHJ0cmltKCA
kc3RhdGVkYXRhWydob21ldXJsJ10sICcvJyApOwoJCQkJfQoKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dX
MoICdkZXRhaWxzJywgJ0xvYWRlZCBkZWZhdWx0IHN0YXRlIG92ZXJyaWRlIHN0YXRlIGZpbGUgZGF0YSBhb
mQgZ2F2ZSBpdCBwcmlvcml0eSBvdmVyIGN1cnJlbnQgc3RhdGUuIEZpbGU6IGAnIC4gJG92ZXJyaWRlX3N0
YXRlX2ZpbGUgLiAnYC4nICk7CgkJCQlwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2RlZmF1bHRfc3RhdGV
fb3ZlcnJpZGVzJ10gPSAkc3RhdGVkYXRhOwoJCQkJcGJfYmFja3VwYnVkZHk6OnNhdmUoKTsKCQkJfQoJCX
0KCX0gZWxzZSB7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnT3ZlcnJpZGUgc3Rhd
GUgZmlsZSBub3QgZm91bmQgYXQgYCcgLiAkb3ZlcnJpZGVfc3RhdGVfZmlsZSAuICdgLiBTa2lwcGluZy4n
ICk7Cgl9Cn0KCi8vIEhhbmRsZSBBUEkgY2FsbHMgaWYgYmFja3VwYnVkZHlfYXBpX2tleSBpcyBwb3N0ZWQ
uIElmIGFueXRoaW5nIGZhaWxzIHNlY3VyaXR5IGNoZWNrcyBwcmV0ZW5kIG5vdGhpbmcgYXQgYWxsIGhhcH
BlbmVkLgppZiAoICcnICE9IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ2JhY2t1cGJ1ZGR5X2FwaV9rZXknI
CkgKSB7IC8vIFJlbW90ZSBBUEkgYWNjZXNzLgoJaWYgKCBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRvcHRp
b25zWydyZW1vdGVfYXBpJ11bJ2tleXMnXSApICYmICggY291bnQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9
uc1sncmVtb3RlX2FwaSddWydrZXlzJ10gKSA+IDAgKSApIHsgLy8gUmVtb3RlIEFQSSBlbmFibGVkIGFuZC
AxIG9yIG1vcmUga2V5cyBkZWZpbmVkLgoJCWluY2x1ZGUgJ2NsYXNzZXMvcmVtb3RlX2FwaS5waHAnOwoJC
WJhY2t1cGJ1ZGR5X3JlbW90ZV9hcGk6OmxvY2FsQ2FsbCggdHJ1ZSwgdHJ1ZSApOwoJCWRpZSgpOwoJfQp9
CgppZiAoICdlbWJlZCcgPT09IHBiX2JhY2t1cGJ1ZGR5OjpfR0VUKCAnZGlzcGxheV9tb2RlJyApICkgewo
JcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydkaXNwbGF5X21vZGUnXSA9ICdlbWJlZCc7CglwYl9iYWNrdX
BidWRkeTo6c2F2ZSgpOwp9Cg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/init_global.php,importbuddy/init_glo
bal.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/init_public.php,importbuddy/init_p
ublic.php
PD9waHAKCgoKLy8gKioqKioqKioqKiBBQ1RJT05TIChwdWJsaWMpICoqKioqKioqKioKCgoKLy8gKioqKio
qKioqKiBBSkFYIChwdWJsaWMpICoqKioqKioqKioKCgoKLy8gKioqKioqKioqKiBGSUxURVJTIChwdWJsaW
MpICoqKioqKioqKioKCgoKLy8gKioqKioqKioqKiBTSE9SVENPREVTIChwdWJsaWMpICoqKioqKioqKioKC
goK
###PACKDATA,FILE_END,/_importbuddy/importbuddy/init_public.php,importbuddy/init_pub
lic.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/license.txt,importbuddy/license.tx
t
CQkgICAgR05VIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5OTE
KCiBDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuIAogIC
AgICAgICAgICAgIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMCwgVVNBC
gogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVz
CiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCgk
JCSAgICBQcmVhbWJsZQoKICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIH
RvIHRha2UgYXdheSB5b3VyCmZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0L
CB0aGUgR05VIEdlbmVyYWwgUHVibGljCkxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIg
ZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGZyZWUKc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29
mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFRoaXMKR2VuZXJhbCBQdWJsaWMgTGljZW5zZS
BhcHBsaWVzIHRvIG1vc3Qgb2YgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbidzIHNvZnR3YXJlIGFuZ
CB0byBhbnkgb3RoZXIgcHJvZ3JhbSB3aG9zZSBhdXRob3JzIGNvbW1pdCB0bwp1c2luZyBpdC4gIChTb21l
IG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5CnRoZSBHTlU
gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSAgWW91IGNhbiBhcHBseSBpdCB0bw
p5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlI
HJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMg
YXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ
1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoaXMgc2VydmljZSBpZiB5b3
Ugd2lzaCksIHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldCBpdAppZiB5b3Ugd2Fud
CBpdCwgdGhhdCB5b3UgY2FuIGNoYW5nZSB0aGUgc29mdHdhcmUgb3IgdXNlIHBpZWNlcyBvZiBpdAppbiBu
ZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuCgo
gIFRvIHByb3RlY3QgeW91ciByaWdodHMsIHdlIG5lZWQgdG8gbWFrZSByZXN0cmljdGlvbnMgdGhhdCBmb3
JiaWQKYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlc
iB0aGUgcmlnaHRzLgpUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2li
aWxpdGllcyBmb3IgeW91IGlmIHlvdQpkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUgc29mdHdhcmUsIG9yIGl
mIHlvdSBtb2RpZnkgaXQuCgogIEZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3
VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgZ2l2ZSB0aGUgc
mVjaXBpZW50cyBhbGwgdGhlIHJpZ2h0cyB0aGF0CnlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRo
YXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlCnNvdXJjZSBjb2RlLiAgQW5kIHlvdSBtdXN
0IHNob3cgdGhlbSB0aGVzZSB0ZXJtcyBzbyB0aGV5IGtub3cgdGhlaXIKcmlnaHRzLgoKICBXZSBwcm90ZW
N0IHlvdXIgcmlnaHRzIHdpdGggdHdvIHN0ZXBzOiAoMSkgY29weXJpZ2h0IHRoZSBzb2Z0d2FyZSwgYW5kC
igyKSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlIHdoaWNoIGdpdmVzIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRv
IGNvcHksCmRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuCgogIEFsc28sIGZvciBlYWN
oIGF1dGhvcidzIHByb3RlY3Rpb24gYW5kIG91cnMsIHdlIHdhbnQgdG8gbWFrZSBjZXJ0YWluCnRoYXQgZX
ZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlCnNvZ
nR3YXJlLiAgSWYgdGhlIHNvZnR3YXJlIGlzIG1vZGlmaWVkIGJ5IHNvbWVvbmUgZWxzZSBhbmQgcGFzc2Vk
IG9uLCB3ZQp3YW50IGl0cyByZWNpcGllbnRzIHRvIGtub3cgdGhhdCB3aGF0IHRoZXkgaGF2ZSBpcyBub3Q
gdGhlIG9yaWdpbmFsLCBzbwp0aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG
5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbAphdXRob3JzJyByZXB1dGF0aW9ucy4KCiAgRmluYWxseSwgY
W55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUKcGF0ZW50cy4g
IFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZQpwcm9
ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbm
cgdGhlCnByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjb
GVhciB0aGF0IGFueQpwYXRlbnQgbXVzdCBiZSBsaWNlbnNlZCBmb3IgZXZlcnlvbmUncyBmcmVlIHVzZSBv
ciBub3QgbGljZW5zZWQgYXQgYWxsLgoKICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3I
gY29weWluZywgZGlzdHJpYnV0aW9uIGFuZAptb2RpZmljYXRpb24gZm9sbG93LgoKCQkgICAgR05VIEdFTk
VSQUwgUFVCTElDIExJQ0VOU0UKICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSS
UJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCgogIDAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9n
cmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMKYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cml
naHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQKdW5kZXIgdGhlIHRlcm1zIG9mIHRoaX
MgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIFRoZSAiUHJvZ3JhbSIsIGJlbG93LApyZWZlcnMgdG8gYW55I
HN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIKbWVhbnMg
ZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzo
KdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZi
BpdCwKZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpb
nRvIGFub3RoZXIKbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdp
dGhvdXQgbGltaXRhdGlvbiBpbgp0aGUgdGVybSAibW9kaWZpY2F0aW9uIi4pICBFYWNoIGxpY2Vuc2VlIGl
zIGFkZHJlc3NlZCBhcyAieW91Ii4KCkFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidX
Rpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90CmNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZ
SBvdXRzaWRlIGl0cyBzY29wZS4gIFRoZSBhY3Qgb2YKcnVubmluZyB0aGUgUHJvZ3JhbSBpcyBub3QgcmVz
dHJpY3RlZCwgYW5kIHRoZSBvdXRwdXQgZnJvbSB0aGUgUHJvZ3JhbQppcyBjb3ZlcmVkIG9ubHkgaWYgaXR
zIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtIChpbmRlcGVuZGVudC
BvZiBoYXZpbmcgYmVlbiBtYWRlIGJ5IHJ1bm5pbmcgdGhlIFByb2dyYW0pLgpXaGV0aGVyIHRoYXQgaXMgd
HJ1ZSBkZXBlbmRzIG9uIHdoYXQgdGhlIFByb2dyYW0gZG9lcy4KCiAgMS4gWW91IG1heSBjb3B5IGFuZCBk
aXN0cmlidXRlIHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzCnNvdXJjZSBjb2RlIGFzIHlvdSB
yZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdQpjb25zcGljdW91c2x5IGFuZC
BhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlCmNvcHlyaWdodCBub
3RpY2UgYW5kIGRpc2NsYWltZXIgb2Ygd2FycmFudHk7IGtlZXAgaW50YWN0IGFsbCB0aGUKbm90aWNlcyB0
aGF0IHJlZmVyIHRvIHRoaXMgTGljZW5zZSBhbmQgdG8gdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5Owp
hbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaW
NlbnNlCmFsb25nIHdpdGggdGhlIFByb2dyYW0uCgpZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoe
XNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQKeW91IG1heSBhdCB5b3VyIG9wdGlvbiBv
ZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KCiAgMi4gWW91IG1heSB
tb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbgpvZiBpdC
wgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kCmRpc3Rya
WJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQph
Ym92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgoKICA
gIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aW
NlcwogICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55I
GNoYW5nZS4KCiAgICBiKSBZb3UgbXVzdCBjYXVzZSBhbnkgd29yayB0aGF0IHlvdSBkaXN0cmlidXRlIG9y
IHB1Ymxpc2gsIHRoYXQgaW4KICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCB
mcm9tIHRoZSBQcm9ncmFtIG9yIGFueQogICAgcGFydCB0aGVyZW9mLCB0byBiZSBsaWNlbnNlZCBhcyBhIH
dob2xlIGF0IG5vIGNoYXJnZSB0byBhbGwgdGhpcmQKICAgIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mI
HRoaXMgTGljZW5zZS4KCiAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBj
b21tYW5kcyBpbnRlcmFjdGl2ZWx5CiAgICB3aGVuIHJ1biwgeW91IG11c3QgY2F1c2UgaXQsIHdoZW4gc3R
hcnRlZCBydW5uaW5nIGZvciBzdWNoCiAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcn
kgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuCiAgICBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwc
HJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEKICAgIG5vdGljZSB0aGF0IHRoZXJlIGlzIG5vIHdh
cnJhbnR5IChvciBlbHNlLCBzYXlpbmcgdGhhdCB5b3UgcHJvdmlkZQogICAgYSB3YXJyYW50eSkgYW5kIHR
oYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcgogICAgdGhlc2UgY29uZGl0aW
9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMKICAgIExpY2Vuc
2UuICAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0CiAgICBk
b2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9
uCiAgICB0aGUgUHJvZ3JhbSBpcyBub3QgcmVxdWlyZWQgdG8gcHJpbnQgYW4gYW5ub3VuY2VtZW50LikKCl
RoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiAgSWYKa
WRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJv
Z3JhbSwKYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXR
lIHdvcmtzIGluCnRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3
QgYXBwbHkgdG8gdGhvc2UKc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlI
HdvcmtzLiAgQnV0IHdoZW4geW91CmRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBh
IHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZApvbiB0aGUgUHJvZ3JhbSwgdGhlIGRpc3RyaWJ1dGlvbiB
vZiB0aGUgd2hvbGUgbXVzdCBiZSBvbiB0aGUgdGVybXMgb2YKdGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaX
NzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUKZW50aXJlIHdob2xlLCBhbmQgdGh1c
yB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlIGl0LgpUaHVzLCBpdCBp
cyBub3QgdGhlIGludGVudCBvZiB0aGlzIHNlY3Rpb24gdG8gY2xhaW0gcmlnaHRzIG9yIGNvbnRlc3QKeW9
1ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IG
lzIHRvCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhd
Gl2ZSBvcgpjb2xsZWN0aXZlIHdvcmtzIGJhc2VkIG9uIHRoZSBQcm9ncmFtLgoKSW4gYWRkaXRpb24sIG1l
cmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbQp3aXRoIHR
oZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2
YKYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvc
msgdW5kZXIKdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KCiAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0
cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsCnVuZGVyIFNlY3Rpb24gMikgaW4
gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZgpTZWN0aW9ucyAxIG
FuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CgogI
CAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFk
YWJsZQogICAgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1
zIG9mIFNlY3Rpb25zCiAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm
9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwKCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0Z
W4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZQogICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJk
IHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB
0aGFuIHlvdXIKICAgIGNvc3Qgb2YgcGh5c2ljYWxseSBwZXJmb3JtaW5nIHNvdXJjZSBkaXN0cmlidXRpb2
4sIGEgY29tcGxldGUKICAgIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb
3VyY2UgY29kZSwgdG8gYmUKICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAx
IGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtCiAgICBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnR
lcmNoYW5nZTsgb3IsCgogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZW
NlaXZlZCBhcyB0byB0aGUgb2ZmZXIKICAgIHRvIGRpc3RyaWJ1dGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY
29kZS4gIChUaGlzIGFsdGVybmF0aXZlIGlzCiAgICBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwg
ZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdQogICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN
0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaAogICAgYW4gb2ZmZXIsIGluIGFjY29yZCB3aX
RoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCgpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgc
HJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yCm1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgRm9y
IGFuIGV4ZWN1dGFibGUgd29yaywgY29tcGxldGUgc291cmNlCmNvZGUgbWVhbnMgYWxsIHRoZSBzb3VyY2U
gY29kZSBmb3IgYWxsIG1vZHVsZXMgaXQgY29udGFpbnMsIHBsdXMgYW55CmFzc29jaWF0ZWQgaW50ZXJmYW
NlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bwpjb250cm9sIGNvbXBpbGF0a
W9uIGFuZCBpbnN0YWxsYXRpb24gb2YgdGhlIGV4ZWN1dGFibGUuICBIb3dldmVyLCBhcyBhCnNwZWNpYWwg
ZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZQphbnl0aGl
uZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQpmb3
JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mI
HRoZQpvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0
IGNvbXBvbmVudAppdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCgpJZiBkaXN0cmlidXRpb24
gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nCmFjY2VzcyB0byBjb3
B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQKYWNjZXNzIHRvI
GNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzCmRpc3RyaWJ1dGlv
biBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdApjb21wZWx
sZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLgoKICA0LiBZb3UgbW
F5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KZXhjZ
XB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBBbnkgYXR0ZW1wdApvdGhl
cndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXM
Kdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIgdGhpcy
BMaWNlbnNlLgpIb3dldmVyLCBwYXJ0aWVzIHdobyBoYXZlIHJlY2VpdmVkIGNvcGllcywgb3IgcmlnaHRzL
CBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJt
aW5hdGVkIHNvIGxvbmcgYXMgc3VjaApwYXJ0aWVzIHJlbWFpbiBpbiBmdWxsIGNvbXBsaWFuY2UuCgogIDU
uIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG
5vdApzaWduZWQgaXQuICBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvI
G1vZGlmeSBvcgpkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiAgVGhl
c2UgYWN0aW9ucyBhcmUKcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWN
lbnNlLiAgVGhlcmVmb3JlLCBieQptb2RpZnlpbmcgb3IgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIChvci
Bhbnkgd29yayBiYXNlZCBvbiB0aGUKUHJvZ3JhbSksIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb
2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLCBhbmQKYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3Ig
Y29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZwp0aGUgUHJvZ3JhbSBvciB3b3JrcyBiYXNlZCB
vbiBpdC4KCiAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3
JrIGJhc2VkIG9uIHRoZQpQcm9ncmFtKSwgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5IHJlY2VpdmVzI
GEgbGljZW5zZSBmcm9tIHRoZQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlIG9yIG1v
ZGlmeSB0aGUgUHJvZ3JhbSBzdWJqZWN0IHRvCnRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1
heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyCnJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcm
Npc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4KWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yI
GVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8KdGhpcyBMaWNlbnNlLgoKICA3LiBJ
ZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW5
0CmluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IG
lzc3VlcyksCmNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyL
CBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhp
cyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyB
MaWNlbnNlLiAgSWYgeW91IGNhbm5vdApkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3
VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lb
nQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UKbWF5IG5vdCBkaXN0cmlidXRlIHRo
ZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudApsaWNlbnNlIHdvdWxkIG5vdCB
wZXJtaXQgcm95YWx0eS1mcmVlIHJlZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGJ5CmFsbCB0aG9zZS
B3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbgp0a
GUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJl
IHRvCnJlZnJhaW4gZW50aXJlbHkgZnJvbSBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0uCgpJZiBhbnk
gcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZX
IKYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpb
nRlbmRlZCB0bwphcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBs
eSBpbiBvdGhlcgpjaXJjdW1zdGFuY2VzLgoKSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGl
vbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQpwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2
h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQpzdWNoIGNsYWltczsgdGhpcyBzZWN0a
W9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlCmludGVncml0eSBvZiB0aGUgZnJl
ZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcwppbXBsZW1lbnRlZCBieSBwdWJsaWM
gbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUKZ2VuZXJvdXMgY29udHJpYnV0aW
9ucyB0byB0aGUgd2lkZSByYW5nZSBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZAp0aHJvdWdoIHRoYXQgc3lzd
GVtIGluIHJlbGlhbmNlIG9uIGNvbnNpc3RlbnQgYXBwbGljYXRpb24gb2YgdGhhdApzeXN0ZW07IGl0IGlz
IHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nCnRvIGR
pc3RyaWJ1dGUgc29mdHdhcmUgdGhyb3VnaCBhbnkgb3RoZXIgc3lzdGVtIGFuZCBhIGxpY2Vuc2VlIGNhbm
5vdAppbXBvc2UgdGhhdCBjaG9pY2UuCgpUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb
3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8KYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBv
ZiB0aGlzIExpY2Vuc2UuCgogIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJ
vZ3JhbSBpcyByZXN0cmljdGVkIGluCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIG
J5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQpvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwb
GFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlCm1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3Jh
cGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZwp0aG9zZSBjb3VudHJpZXMsIHNvIHR
oYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nCmNvdW50cmllcyBub3QgdG
h1cyBleGNsdWRlZC4gIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcwp0aGUgbGlta
XRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4KCiAgOS4gVGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnM
Kb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZX
JzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtY
XkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCkVhY2gg
dmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiAgSWYgdGhlIFByb2d
yYW0Kc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG
8gaXQgYW5kICJhbnkKbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nI
HRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucwplaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRl
ciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgSWYgdGhlIFB
yb2dyYW0gZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mCnRoaXMgTGljZW5zZSwgeW91IG
1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91b
mRhdGlvbi4KCiAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFt
IGludG8gb3RoZXIgZnJlZQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgZGl
mZmVyZW50LCB3cml0ZSB0byB0aGUgYXV0aG9yCnRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2
FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZQpTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0Z
SB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMKbWFrZSBleGNlcHRpb25z
IGZvciB0aGlzLiAgT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMKb2YgcHJ
lc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YX
JlIGFuZApvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxse
S4KCgkJCSAgICBOTyBXQVJSQU5UWQoKICAxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBG
UkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkKRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVh
URU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOCk9USEVSV0lTRSBTVEFURU
QgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMKUFJPVklER
SBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBS
RVNTRUQKT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFd
BUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE
9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUwpUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFI
FBST0dSQU0gSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFClBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1Ug
QVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLApSRVBBSVIgT1IgQ09SUkVDVEl
PTi4KCiAgMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1
JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSV
FkgV0hPIE1BWSBNT0RJRlkgQU5EL09SClJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQg
QUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsCklOQ0xVRElORyBBTlkgR0VORVJBTCwgU1B
FQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORwpPVVQgT0YgVEhFIF
VTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEC
lRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNV
U1RBSU5FRCBCWQpZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8
gT1BFUkFURSBXSVRIIEFOWSBPVEhFUgpQUk9HUk
FNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUS
EUKUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgoKCQkgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElU
SU9OUwoK
###PACKDATA,FILE_END,/_importbuddy/importbuddy/license.txt,importbuddy/license.txt
###PACKDATA,FILE_START,/_importbuddy/importbuddy/readme.txt,importbuddy/readme.txt
ICogV2Vic2l0ZTogaHR0cDovL2l0aGVtZXMuY29tCiAqCiAqIEluc3RhbGxhdGlvbjoKICogCiAqIDEuIER
vd25sb2FkIGFuZCB1bnppcCB0aGUgbGF0ZXN0IHJlbGVhc2UgemlwIGZpbGUKICogMi4gSWYgeW91IHVzZS
B0aGUgV29yZFByZXNzIHBsdWdpbiB1cGxvYWRlciB0byBpbnN0YWxsIHRoaXMgcGx1Z2luIHNraXAgdG8gc
3RlcCA0LgogKiAzLiBVcGxvYWQgdGhlIGVudGlyZSBwbHVnaW4gZGlyZWN0b3J5IHRvIHlvdXIgYC93cC1j
b250ZW50L3BsdWdpbnMvYCBkaXJlY3RvcnkKICogNC4gQWN0aXZhdGUgdGhlIHBsdWdpbiB0aHJvdWdoIHR
oZSAnUGx1Z2lucycgbWVudSBpbiBXb3JkUHJlc3MgQWRtaW5pc3RyYXRpb24KICogCiAqIFVzYWdlOgogKi
AKICogMS4gTmF2aWdhdGUgdG8gdGhlIG5ldyBtZW51IGZvciB0aGlzIHBsdWdpbiBpbiB0aGUgV29yZHByZ
XNzIEFkbWluaXN0cmF0aW9uIFBhbmVsCiAqIDIuIFNlbGVjdCAnR2V0dGluZyBTdGFydGVkJyBmb3IgaW5z
dHJ1Y3Rpb25zIGFuZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLgogKg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/readme.txt,importbuddy/readme.txt
###PACKDATA,FILE_START,/_importbuddy/importbuddy/sample.ini.txt,importbuddy/sample.
ini.txt
OyBEZWZhdWx0IHZhbHVlcyBjYW4gYmUgc2VlbiBpbjogaW1wb3J0YnVkZHkvY2xhc3Nlcy9yZXN0b3JlLnB
ocCAob3IgYmFja3VwYnVkZHkvY2xhc3Nlcy9yZXN0b3JlLnBocCkgaW4gdGhlIF9fY29uc3RydWN0KCkgZn
VuY3Rpb24sIHdoZXJlICR0aGlzLT5fc3RhdGUgaXMgZmlyc3Qgc2V0LgoKdHlwZSA9IHJlc3RvcmUKYXJja
Gl2ZSA9IGJhY2t1cC1iYWNrdXBidWRkeS1YWFhYWFhYWFhYWC56aXAKc2l0ZXVybCA9IGh0dHA6Ly9maW5h
bHVybC5jb20KaG9tZXVybCA9IGh0dHA6Ly9maW5hbHVybC5jb20KcmVzdG9yZUZpbGVzID0gdHJ1ZQpyZXN
0b3JlRGF0YWJhc2UgPSB0cnVlCm1pZ3JhdGVIdGFjY2VzcyA9IHRydWUKCjsgQm90aCBvZiB0aGVzZSBtdX
N0IGJlIHRydWUgd2hlbiB1c2luZyAuaW5pIGZpbGUuCmluaW1vZGUgPSB0cnVlCmF1dG9BZHZhbmNlID0gd
HJ1ZQoKW2RhdGFiYXNlU2V0dGluZ3NdCnNlcnZlciA9IGxvY2FsaG9zdApkYXRhYmFzZSA9IGRhdGFiYXNl
X25hbWUKdXNlcm5hbWUgPSBkYXRhYmFzZV91c2VyCnBhc3N3b3JkID0gZGF0YWJhc2VfcGFzc3dvcmQKcHJ
lZml4ID0gd3BfCnJlbmFtZVByZWZpeCA9IHRydWUKd2lwZVByZWZpeCA9IGZhbHNlCndpcGVEYXRhYmFzZS
A9IGZhbHNlCgpbY2xlYW51cF0KZGVsZXRlQXJjaGl2ZSA9IGZhbHNlCmRlbGV0ZVRlbXBGaWxlcyA9IHRyd
WUKZGVsZXRlSW1wb3J0QnVkZHkgPSBmYWxzZQpzZXRfYmxvZ19wdWJsaWMgPSAKZGVsZXRlSW1wb3J0QnVk
ZHlEaXJlY3RvcnkgPSB0cnVlCmRlbGV0ZUltcG9ydExvZyA9IHRydWUK
###PACKDATA,FILE_END,/_importbuddy/importbuddy/sample.ini.txt,importbuddy/sample.in
i.txt
###PACKDATA,FILE_START,/_importbuddy/importbuddy/classes/auth.php,importbuddy/class
es/auth.php
PD9waHAKY2xhc3MgQXV0aCB7CgkKCWNvbnN0IE1BWF9MT0dJTl9BVFRFTVBUU19BTExPV0VEID0gNDsgLy8
gTWF4aW11bSBudW1iZXIgb2YgaW52YWxpZCBsb2dpbiBhdHRlbXB0cyBiZWZvcmUgbG9ja2luZyBpbXBvcn
RidWRkeS4KCWNvbnN0IFJFU0VUX0RFRkFVTFRTX09OX0lOVkFMSURfTE9HSU4gPSBmYWxzZTsgLy8gV2hld
GhlciBvciBub3QgcmVzZXQgYWxsIHNldHRpbmdzL29wdGlvbnMgYmFjayB0byBkZWZhdWx0cyBvbiBsb2dp
biBmYWlsdXJlLgoJY29uc3QgQ09PS0lFX0VYUElSQVRJT04gPSA4NjQwMDsgLy8gTnVtYmVyIG9mIHNlY29
uZHMgYW4gaW1wb3J0YnVkZHkgY29va2llIGlzIHZhbGlkIGZvci4KCXByaXZhdGUgc3RhdGljICRfYXV0aG
VudGljYXRlZCA9IGZhbHNlOyAvLyBXaGV0aGVyIHVzZXIgaXMgdmFsaWRseSBhdXRoZW50aWNhdGVkIG9yI
G5vdC4KCXByaXZhdGUgc3RhdGljICRfY2hlY2tlZCA9IGZhbHNlOyAvLyBXaGV0aGVyIGNoZWNrKCkgaGFz
IGJlZW4gcnVuIHlldC4KCQoJCgkKCS8qIGNoZWNrKCkKCSAqCgkgKiBDaGVjayBhdXRoZW50aWNhdGlvbiB
iYXNlZCBvbiBmb3JtIGRhdGEgc3VibWl0dGVkLiBUaGlzIG9ubHkgbmVlZHMgdG8gYmUgcnVuIG9uY2UuIF
VzZSBpc19hdXRoZW50aWNhdGVkKCkgdG8gZGV0ZXJtaW5lIGF1dGggc3RhdHVzLgoJICoKCSAqIEBwYXJhb
Qlmb3JjZV9jaGVjawkJYm9vbAlJZiB0cnVlIHRoZW4gd2lsbCByZS1jaGVjayBldmVuIGlmIGNoZWNrKCkg
aGFzIGFscmVhZHkgYmVlbiBydW4gdGhpcyBzZXNzaW9uLgoJICoKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5
jdGlvbiBjaGVjayggJGZvcmNlX2NoZWNrID0gZmFsc2UgKSB7CgkJCgkJaWYgKCAoIHRydWUgPT09IHNlbG
Y6OiRfY2hlY2tlZCApICYmICggJGZvcmNlX2NoZWNrID09PSBmYWxzZSApICkgeyAvLyBTa2lwIGNoZWNra
W5nIGlmIGFscmVhZHkgc2tpcHBlZCB1bmxlc3MgZm9yY2luZy4KCQkJcmV0dXJuIHNlbGY6OmlzX2F1dGhl
bnRpY2F0ZWQoKTsKCQl9CgkJCgkJJGxvZ2luX2F0dGVtcHRfZmlsZSA9IEFCU1BBVEggLiAnaW1wb3J0YnV
kZHkvX2xvZ2luX2F0dGVtcHRzLnBocCc7CgkJJGxvZ2luX2F0dGVtcHRzID0gMTsKCQlpZiAoIGZpbGVfZX
hpc3RzKCAkbG9naW5fYXR0ZW1wdF9maWxlICkgKSB7CgkJCSRsb2dpbl9hdHRlbXB0cyA9IEBmaWxlX2dld
F9jb250ZW50cyggJGxvZ2luX2F0dGVtcHRfZmlsZSApOwoJCX0KCQlpZiAoIGZhbHNlICE9PSAkbG9naW5f
YXR0ZW1wdHMgKSB7CgkJCSRsb2dpbl9hdHRlbXB0cyA9IHRyaW0oIHN0cl9yZXBsYWNlKCAnPD9waHAgZGl
lKCk7ID8+JywgJycsICRsb2dpbl9hdHRlbXB0cyApICk7CgkJCWlmICggJGxvZ2luX2F0dGVtcHRzID4gc2
VsZjo6TUFYX0xPR0lOX0FUVEVNUFRTX0FMTE9XRUQgKSB7CgkJCQlkaWUoICdBY2Nlc3MgRGVuaWVkLiBNY
XhpbXVtIGxvZ2luIGF0dGVtcHRzIGV4Y2VlZGVkLiBZb3UgbXVzdCBkZWxldGUgdGhlIGZpbGUgIl9sb2dp
bl9hdHRlbXB0cy5waHAiIGluIHRoZSBpbXBvcnRidWRkeSBkaXJlY3Rvcnkgb24geW91ciBzZXJ2ZXIgdG8
gdW5sb2NrIHRoaXMgSW1wb3J0QnVkZHkgdG8gYWxsb3cgaXQgdG8gY29udGludWUuJyApOwoJCQl9CgkJfQ
oJCQoJCSRhY3R1YWxfcGFzc19oYXNoID0gUEJfUEFTU1dPUkQ7CgkJaWYgKCAoICcjUEFTU1dPUkQjJyA9P
SAkYWN0dWFsX3Bhc3NfaGFzaCApIHx8ICggJycgPT0gJGFjdHVhbF9wYXNzX2hhc2ggKSApIHsgZGllKCAn
RXJyb3IgIzg0NTc4NDU5NzQ1LiBBIHBhc3N3b3JkIG11c3QgYmUgc2V0IHRvIGFjY2VzcyBJbXBvcnRCdWR
keS4gUGxlYXNlIGRvd25sb2FkIGEgZnJlc2ggY29weSBhZnRlciBjb25maWd1cmluZyB5b3VyIEltcG9ydE
J1ZGR5IHBhc3N3b3JkLicgKTsgfQoJCQoJCWlmICggcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAncGFzc3dvc
mQnICkgIT0gJycgKSB7CgkJCSRzdXBwbGllZF9wYXNzX2hhc2ggPSBtZDUoIHBiX2JhY2t1cGJ1ZGR5Ojpf
UE9TVCggJ3Bhc3N3b3JkJyApICk7CgkJfSBlbHNlaWYgKCBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3Bhc3N
3b3JkJyApICE9ICcnICkgewoJCQkkc3VwcGxpZWRfcGFzc19oYXNoID0gbWQ1KCBwYl9iYWNrdXBidWRkeT
o6X0dFVCggJ3Bhc3N3b3JkJyApICk7CgkJfSBlbHNlIHsKCQkJaWYgKCBwYl9iYWNrdXBidWRkeTo6X0dFV
CggJ3YnICkgIT0gJycgKSB7IC8vIEhhc2ggc3VibWl0dGVkIGJ5IG1hZ2ljIG1pZ3JhdGlvbi4KCQkJCSRz
dXBwbGllZF9wYXNzX2hhc2ggPSBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3YnICk7CgkJCX0gZWxzZSB7IC8
vIE5vcm1hbCBmb3JtIHN1Ym1pdHRlZCBoYXNoLgoJCQkJaWYgKCBwYl9iYWNrdXBidWRkeTo6X1BPU1QoIC
dwYXNzX2hhc2gnICkgIT0gJycgKSB7CgkJCQkJJHN1cHBsaWVkX3Bhc3NfaGFzaCA9IHBiX2JhY2t1cGJ1Z
GR5OjpfUE9TVCggJ3Bhc3NfaGFzaCcgKTsKCQkJCX0gZWxzZWlmICggcGJfYmFja3VwYnVkZHk6Ol9QT1NU
KCAncGJfYmFja3VwYnVkZHlfcGFzc19oYXNoJyApICE9ICcnICkgewoJCQkJCSRzdXBwbGllZF9wYXNzX2h
hc2ggPSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdwYl9iYWNrdXBidWRkeV9wYXNzX2hhc2gnICk7CgkJCQ
l9IGVsc2UgewoJCQkJCSRzdXBwbGllZF9wYXNzX2hhc2ggPSAnJzsKCQkJCX0KCQkJfQoJCX0KCQkKCQlpZ
iAoICRzdXBwbGllZF9wYXNzX2hhc2ggPT0gJGFjdHVhbF9wYXNzX2hhc2ggKSB7CgkJCXNlbGY6OiRfYXV0
aGVudGljYXRlZCA9IHRydWU7CgkJCXNldGNvb2tpZSggJ2ltcG9ydGJ1ZGR5X2xvZ2luJywgbWQ1KCBQQl9
QQVNTV09SRCAuICdiYWRnZXJzJyApLCAoIHRpbWUoKSsgc2VsZjo6Q09PS0lFX0VYUElSQVRJT04gKSApOw
oJCX0gZWxzZWlmICggaXNzZXQoICRfQ09PS0lFWydpbXBvcnRidWRkeV9sb2dpbiddICkgJiYgKCAkX0NPT
0tJRVsnaW1wb3J0YnVkZHlfbG9naW4nXSAhPSAnJyApICYmICggJF9DT09LSUVbJ2ltcG9ydGJ1ZGR5X2xv
Z2luJ10gPT0gbWQ1KCBQQl9QQVNTV09SRCAuICdiYWRnZXJzJyApICkgKSB7CgkJCXNlbGY6OiRfYXV0aGV
udGljYXRlZCA9IHRydWU7CgkJCXNldGNvb2tpZSggJ2ltcG9ydGJ1ZGR5X2xvZ2luJywgbWQ1KCBQQl9QQV
NTV09SRCAuICdiYWRnZXJzJyApLCAoIHRpbWUoKSArIHNlbGY6OkNPT0tJRV9FWFBJUkFUSU9OICkgKTsKC
Ql9IGVsc2UgeyAvLyBJbmNvcnJlY3QgaGFzaC4gUmVzZXQgc2V0dGluZ3MgJiB0cmFjayBhdHRlbXB0cy4K
CQkJaWYgKCAnJyAhPSAkc3VwcGxpZWRfcGFzc19oYXNoICkgeyAvLyBEb250IGNvdW50IGJsYW5rIGhhc2g
gYXMgYW4gYXR0ZW1wdC4KCQkJCWlmICggdHJ1ZSA9PT0gc2VsZjo6UkVTRVRfREVGQVVMVFNfT05fSU5WQU
xJRF9MT0dJTiApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6cmVzZXRfZGVmYXVsdHMoKTsKCQkJCX0KCQkJC
WlmICggZmFsc2UgIT09ICRsb2dpbl9hdHRlbXB0cyApIHsKCQkJCQlnbG9iYWwgJHBiX2xvZ2luX2F0dGVt
cHRzOwoJCQkJCSRwYl9sb2dpbl9hdHRlbXB0cyA9ICRsb2dpbl9hdHRlbXB0czsKCQkJCQlAZmlsZV9wdXR
fY29udGVudHMoICRsb2dpbl9hdHRlbXB0X2ZpbGUsICc8P3BocCBkaWUoKTsgPz4nIC4gKCAkbG9naW5fYX
R0ZW1wdHMgKyAxICkgKTsKCQkJCX0KCQkJfQoJCX0KCQkKCQlzZWxmOjokX2NoZWNrZWQgPSB0cnVlOwoJC
QoJCXJldHVybiBzZWxmOjokX2F1dGhlbnRpY2F0ZWQ7CgkJCgl9IC8vIEVuZCBjaGVjaygpLgoJCgkKCQoJ
LyogaXNfYXV0aGVudGljYXRlZCgpCgkgKgoJICogRGV0ZXJtaW5lIHdoZXRoZXIgdXNlciBpcyBmdWxseSB
hdXRoZW50aWNhdGVkIG9yIG5vdC4KCSAqCgkgKiBAcmV0dXJuCQlib29sCQlUcnVlIGlmIGZ1bGx5IGF1dG
hlbnRpY2F0ZWQsIG90aGVyd2lzZSBmYWxzZS4KCSAqCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24ga
XNfYXV0aGVudGljYXRlZCgpIHsKCQkKCQlyZXR1cm4gc2VsZjo6JF9hdXRoZW50aWNhdGVkOwoJCQoJfSAv
LyBFbmQgYXV0aGVudGljYXRlZCgpLgoJCgkKCQoJLyogcmVxdWlyZV9hdXRoZW50aWNhdGlvbigpCgkgKgo
JICogUmVxdWlyZXMgdmFsaWQgYXV0aGVudGljYXRpb24gdG8gYWxsb3cgcHJvY2VlZGluZy4gZGllKCkgaW
Ygbm90IGxvZ2dlZCBpbi4KCSAqCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVxdWlyZV9hdXRoZ
W50aWNhdGlvbigpIHsKCQkKCQkvLyBDaGVjayBpZiBwcmV2aW91c2x5IGF1dGhlZCBhbHJlYWR5IHRoaXMg
c2Vzc2lvbi4KCQlpZiAoIHRydWUgPT09IHNlbGY6OmlzX2F1dGhlbnRpY2F0ZWQoKSApIHsKCQkJcmV0dXJ
uIHRydWU7CgkJfQoJCQoJCXNlbGY6OmNoZWNrKCk7CgkJaWYgKCB0cnVlID09PSBzZWxmOjppc19hdXRoZW
50aWNhdGVkKCkgKSB7CgkJCXJldHVybiB0cnVlOwoJCX0gZWxzZSB7CgkJCWRpZSggJ0FjY2VzcyBEZW5pZ
WQuIFlvdSBtdXN0IGxvZyBpbiBmaXJzdC4gUGxlYXNlIHJldHVybiB0byB0aGUgPGEgaHJlZj0iaW1wb3J0
YnVkZHkucGhwIj5pbXBvcnRidWRkeS5waHAgaG9tZXBhZ2U8L2E+IGF1dGhlbnRpY2F0ZS4nICk7CgkJfQo
JCQoJfSAvLyBFbmQgcmVxdWlyZV9hdXRob3JpemF0aW9uKCk7CgkKfSAvLyBFbmQgY2xhc3MuCgoK
###PACKDATA,FILE_END,/_importbuddy/importbuddy/classes/auth.php,importbuddy/classes
/auth.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/classes/index.php,importbuddy/clas
ses/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/classes/index.php,importbuddy/classe
s/index.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/classes/test-
db.php,importbuddy/classes/test-db.php
PD9waHAKLyoqCiAqIEJhY2t1cEJ1ZGR5IEltcG9ydEJ1ZGR5IGNsYXNzIGZvciB0ZXN0aW5nIERCIHBlcm1
pc3Npb25zCiAqCiAqIEBwYWNrYWdlIEJhY2t1cEJ1ZGR5CiAqIEBzdWJwYWNrYWdlIEltcG9ydEJ1ZGR5Ci
AqIEBzaW5jZSA2LjQuMC4xMwogKi8KCi8qKgogKiBEQiBQZXJtaXNzaW9uIFRlc3RzCiAqCiAqIEBwYWNrY
WdlIEJhY2t1cEJ1ZGR5CiAqIEBzdWJwYWNrYWdlIEltcG9ydEJ1ZGR5CiAqIEBzaW5jZSA2LjQuMC4xMwog
Ki8KY2xhc3MgaW1wb3J0YnVkZHlfdGVzdF9kYnsKCgkvKioKCSAqIERCIENyZWRlbnRpYWxzIHBhc3NlZCB
2aWEgZm9ybQoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXByaXZhdGUgJGNyZW
RzID0gYXJyYXkoKTsKCgkvKioKCSAqIFdvcmRQcmVzcyBEYXRhYmFzZSBDbGFzcwoJICoKCSAqIEBzaW5jZ
SA2LjQuMC4xMwoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgb2JqZWN0CgkgKi8KCXZhciAkd3BkYjsK
CgkvKioKCSAqIEBzaW5jZSA2LjQuMC4xMwoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgYXJyYXkKCSA
qLwoJdmFyICR0ZXN0cyA9IGFycmF5KCk7CgoJLyoqCgkgKiBDbGFzcyBjb25zdHJ1Y3RvciBzZXRzIHVwIH
RoZSBlbnZpcm9ubWVudAoJICoKCSAqIEBzaW5jZSA2LjQuMC4xMwoJICoKCSAqIEByZXR1cm4gdm9pZAoJI
CovCglmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHsKCgkJLy8gUmVnaXN0ZXIgdGhlIHRlc3RzCgkJJHRoaXMt
PnJlZ2lzdGVyX3Rlc3RzKCk7CgoJCS8vIEdyYWIgdGhlIERCIGNyZWRlbnRpYWxzIGZyb20gUE9TVAoJCSR
jcmVkcyAgICAgICAgICAgICA9IGFycmF5KCk7CgkJJGNyZWRzWydzZXJ2ZXInXSAgID0gcGJfYmFja3VwYn
VkZHk6Ol9QT1NUKCAnc2VydmVyJyApOwoJCSRjcmVkc1sndXNlcm5hbWUnXSA9IHBiX2JhY2t1cGJ1ZGR5O
jpfUE9TVCggJ3VzZXJuYW1lJyApOwoJCSRjcmVkc1sncGFzc3dvcmQnXSA9IHBiX2JhY2t1cGJ1ZGR5Ojpf
UE9TVCggJ3Bhc3N3b3JkJyApOwoJCSRjcmVkc1snZGF0YWJhc2UnXSA9IHBiX2JhY2t1cGJ1ZGR5OjpfUE9
TVCggJ2RhdGFiYXNlJyApOwoJCSRjcmVkc1sncHJlZml4J10gICA9IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVC
ggJ3ByZWZpeCcgKTsKCgkJLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhbGwgdGhlIGZpZWxkcywgZGllIHdpdGggZ
XJyb3IKCQlpZiAoICggJycgPT0gJGNyZWRzWydzZXJ2ZXInXSApIHx8ICggJycgPT0gJGNyZWRzWyd1c2Vy
bmFtZSddICkgfHwgKCAnJyA9PSAkY3JlZHNbJ2RhdGFiYXNlJ10gKSB8fCAoICcnID09ICRjcmVkc1sncHJ
lZml4J10gKSApIHsKCQkJJHRoaXMtPnRlc3RzWydvdmVyYWxsX2Vycm9yJ10gPSAnT25lIG9yIG1vcmUgZG
F0YWJhc2Ugc2V0dGluZ3Mgd2FzIGxlZnQgYmxhbmsuIEFsbCBmaWVsZHMgZXhjZXB0IG9wdGlvbmFsIHBhc
3N3b3JkIGFyZSByZXF1aXJlZC4nOwoJCQlkaWUoIGpzb25fZW5jb2RlKCAkdGhpcy0+dGVzdHMgKSApOwoJ
CX0KCgkJJHRoaXMtPmNyZWRzID0gJGNyZWRzOwoKCQkvLyBSdW4gdGhlIHRlc3RzLCBvbmUgYXQgYSB0aW1
lCgkJJHRoaXMtPnJ1bl90ZXN0cygpOwoJfQoKCS8qKgoJICogU2V0cyB0aGUgYXJyYXkgb2YgdGVzdHMgdG
hhdCB3ZSB3aWxsIHJ1biB3aXRoIHRoZWlyIGRlZmF1bHQgdmFsdWVzCgkgKgoJICogQHNpbmNlIDYuNC4wL
jEzCgkgKgoJICogQHJldHVybiB2b2lkCgkgKi8KCWZ1bmN0aW9uIHJlZ2lzdGVyX3Rlc3RzKCkgewoKCQkv
LyBUZXN0cyB2YXJpYWJsZXMgdG8gcG9wdWxhdGUgd2l0aCByZXN1bHRzLgoJCSR0aGlzLT50ZXN0cyA9IGF
ycmF5KAoJCQknY29ubmVjdCcgICAgICAgICAgICAgICA9PiBmYWxzZSwgICAvLyBBYmxlIHRvIGNvbm5lY3
QgJiBsb2dpbiB0byBkYiBzZXJ2ZXI/CgkJCSdjb25uZWN0X2Vycm9yJyAgICAgICAgID0+ICcnLCAgICAgI
C8vIG15c3FsIGVycm9yIG1lc3NhZ2UgaW4gcmVzcG9uc2UgdG8gY29ubmVjdCAmIGxvZ2luIChpZiBhbnkp
LgoJCQknc2VsZWN0ZGInICAgICAgICAgICAgICA9PiBmYWxzZSwgICAvLyBBYmxlIHRvIHNlbGVjdCB0aGU
gZGF0YWJhc2U/CgkJCSdzZWxlY3RkYl9lcnJvcicgICAgICAgID0+ICcnLCAgICAgIC8vIG15c3FsIGVycm
9yIG1lc3NhZ2UgaW4gcmVzcG9uc2UgdG8gc2VsZWN0aW5nIChpZiBhbnkpLgoJCQknY3JlYXRlZHJvcHRhY
mxlJyAgICAgICA9PiBmYWxzZSwgICAvLyBhYmlsaXR5IHRvIENSRUFURSBhIG5ldyB0YWJsZSAoYW5kIGRl
bGV0ZSBpdCkuCgkJCSdjcmVhdGVkcm9wdGFibGVfZXJyb3InID0+ICcnLCAgICAgIC8vIGNyZWF0ZSB0YWJ
sZSBteXNxbCBlcnJvciAoaWYgYW55KS4KCQkJJ3ByZWZpeCcgICAgICAgICAgICAgICAgPT4gZmFsc2UsIC
AgLy8gV2hldGhlciBvciBub3QgcHJlZml4IG1lZXRzIHRoZSBiYXJlIG1pbmltdW0gdG8gYmUgYWNjZXB0Z
WQuCgkJCSdwcmVmaXhfZXhpc3RzJyAgICAgICAgID0+IHRydWUsICAgIC8vIFdvcmRQcmVzcyB0YWJsZXMg
bWF0Y2hpbmcgcHJlZml4IGZvdW5kPwoJCQkncHJlZml4X3dhcm4nICAgICAgICAgICA9PiB0cnVlLCAgICA
vLyBXYXJuIGlmIHByZWZpeCBvZiBhIGJhZCBmb3JtYXQuCgkJCSdvdmVyYWxsX2Vycm9yJyAgICAgICAgID
0+ICcnLCAgICAgIC8vIE92ZXJhbGwgZXJyb3Igb2YgdGhlIHRlc3QuIElmIG1pc3NpbmcgZmllbGRzIHRoZ
W4gdGhpcyB3aWxsIGJlIHdoYXQgZXJyb3JzIGFib3V0IG1pc3NpbmcgZmllbGQocykuCgkJKTsKCX0KCgkv
KioKCSAqIFVzZXMgdGhlIHRlc3RzIGFycmF5IHRvIGNhbGwgdGVzdHMgaW5kaXZpZHVhbGx5CgkgKgoJICo
gQHNpbmNlIDYuNC4wLjEzCgkgKgoJICogQHJldHVybiB2b2lkCgkgKi8KCWZ1bmN0aW9uIHJ1bl90ZXN0cy
gpIHsKCQkvLyBMb29wIHRocm91Z2ggYXJyYXkgb2YgdGVzdHMsIG9ubHkgY2FsbGluZyBvbmVzIHdoZXJlI
GZ1bmN0aW9uIGV4aXN0cwoJCWZvcmVhY2ggKCAkdGhpcy0+dGVzdHMgYXMgJHRlc3QgPT4gJHJlc3VsdCAp
IHsKCQkJaWYgKCBpc19jYWxsYWJsZSggYXJyYXkoICR0aGlzLCAndGVzdF8nIC4gJHRlc3QgKSApICYmIGV
tcHR5KCAkdGhpcy0+dGVzdHNbJHRlc3RdICkgKSB7CgkJCQljYWxsX3VzZXJfZnVuYyggYXJyYXkoICR0aG
lzLCAndGVzdF8nIC4gJHRlc3QgKSApOwoJCQl9CgkJfQoKCQlkaWUoIGpzb25fZW5jb2RlKCAkdGhpcy0+d
GVzdHMgKSApOwoJfQoKCS8qKgoJICogVGVzdCBmb3IgREIgQ29ubmVjdCBhbmQgREIgU2VsZWN0CgkgKgoJ
ICogQHNpbmNlIDYuNC4wLjEzCgkgKgoJICogQHJldHVybiB2b2lkCgkgKi8KCSBmdW5jdGlvbiB0ZXN0X2N
vbm5lY3QoKSB7CgkJcmVxdWlyZV9vbmNlKCBBQlNQQVRIIC4gJ2ltcG9ydGJ1ZGR5L2NsYXNzZXMvd3AtZG
IucGhwJyApOwoJCWdsb2JhbCAkd3BkYjsKCQkkdGhpcy0+d3BkYiA9IG5ldyB3cGRiKCAkdGhpcy0+Y3JlZ
HNbJ3VzZXJuYW1lJ10sICR0aGlzLT5jcmVkc1sncGFzc3dvcmQnXSwgJHRoaXMtPmNyZWRzWydkYXRhYmFz
ZSddLCAkdGhpcy0+Y3JlZHNbJ3NlcnZlciddICk7CgkJaWYgKCAoIGZhbHNlID09PSAkdGhpcy0+d3BkYi0
+ZGJoICkgfHwgKCBudWxsID09PSAkdGhpcy0+d3BkYi0+ZGJoICkgKXsKCQkJaWYgKCBlbXB0eSggJHRoaX
MtPndwZGItPnVzZV9teXNxbGkgKSApIHsKCQkJCSRteXNxbF9lcnJvciA9IEBteXNxbF9lcnJvciggJHRoa
XMtPndwZGItPmRiaCApOwoJCQl9IGVsc2UgewoJCQkJJG15c3FsX2Vycm9yID0gQG15c3FsaV9lcnJvcigg
JHRoaXMtPndwZGItPmRiaCApOwoJCQl9CgkJCSR0aGlzLT50ZXN0c1snY29ubmVjdF9lcnJvciddID0gJ1V
uYWJsZSB0byBjb25uZWN0IHRvIGRhdGFiYXNlIHNlcnZlciBhbmQvb3Igc2VsZWN0IHRoZSBkYXRhYmFzZS
4gRGV0YWlsczogYCcgLiAkbXlzcWxfZXJyb3IgLiAnYC4nOwoJCQlkaWUoIGpzb25fZW5jb2RlKCAkdGhpc
y0+dGVzdHMgKSApOwoJCX0KCQkkdGhpcy0+dGVzdHNbJ2Nvbm5lY3QnXSA9IHRydWU7CgkJJHRoaXMtPnRl
c3RzWydzZWxlY3RkYiddID0gdHJ1ZTsKCX0KCgkvKioKCSAqIFRlc3RzIHRoZSBhYmlsaXR5IHRvIGNyZWF
0ZSBhbmQgZHJvcCBhIHRhYmxlCgkgKgoJICogQHNpbmNlIDYuNC4wLjEzCgkgKgoJICogQHJldHVybiB2b2
lkCgkgKi8KCWZ1bmN0aW9uIHRlc3RfY3JlYXRlZHJvcHRhYmxlKCkgewoJCS8vIE1ha2Ugc3VyZSB3ZSd2Z
SBhbHJlYWR5IGNvbm5lY3RlZC4gVGhpcyBzaG91bGQgbmV2ZXIgcnVuIHVubGVzcyBzb21lb25lIGNhbGxz
IGl0IG1hbnVhbGx5IGFnYWluLgoJCWlmICggZW1wdHkoICR0aGlzLT50ZXN0c1snY29ubmVjdCddICkgKSB
7CgkJCSR0aGlzLT50ZXN0X2Nvbm5lY3QoKTsKCQl9CgoJCS8vIEVzY2FwZSBwcmVmaXggbWFudWFsbHkgc2
luY2Ugd2UgY2FuJ3QgdXNlICR3cGRiLT5wcmVmaXggYW5kICR3cGRiLT5wcmVwYXJlIGFkZHMgc2luZ2xlI
HF1b3RlcwoJCWlmICggZW1wdHkoICR0aGlzLT53cGRiLT51c2VfbXlzcWxpICkgKSB7CgkJCSRwcmVmaXgg
PSBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoICR0aGlzLT5jcmVkc1sncHJlZml4J10gKTsKCQl9IGVsc2U
gewoJCQkkcHJlZml4ID0gbXlzcWxpX3JlYWxfZXNjYXBlX3N0cmluZyggJHRoaXMtPndwZGItPmRiaCwgJH
RoaXMtPmNyZWRzWydwcmVmaXgnXSApOwoJCX0KCgkJLy8gVHJ5IHRvIGRyb3AgdGVzdCB0YWJsZSBpbiBld
mVudCBwcmV2aW91cyBhdHRlbXB0IGZhaWxlZC4gTm90IGEgcGFydCBvZiB0aGUgdGVzdC4gTk9URTogVGhp
cyB0aHJvd3MgYW4gZXJyb3IgdG8gdGhlIFBIUCBlcnJvciBsb2cgaWYgd3BkYiBsb2dnaW5nIGVuYWJsZWQ
gdW5sZXNzIGVycm9ycyBhcmUgc3VwcHJlc3NlZC4KCQkkdGhpcy0+d3BkYi0+c3VwcHJlc3NfZXJyb3JzKC
B0cnVlICk7IC8vIEhpZGUgZXJyb3JzIGlmIHRoaXMgdGVzdCBmYWlscyBzaW5jZSB3ZSBoYXZlIGxvZ2dpb
mcgb24gYnkgZGVmYXVsdC4KCQkkZHJvcF90ZXN0X3RhYmxlID0gJ0RST1AgVEFCTEUgJyAuICRwcmVmaXgg
LiAnYnVkZHlfdGVzdCc7CgkJJHRoaXMtPndwZGItPnF1ZXJ5KCAkZHJvcF90ZXN0X3RhYmxlICk7CgkJJHR
oaXMtPndwZGItPnN1cHByZXNzX2Vycm9ycyggZmFsc2UgKTsKCgkJLy8gQXR0ZW1wdCB0byBjcmVhdGUgdG
hlIHRlc3QgdGFibGUKCQkkY3JlYXRlX3Rlc3RfdGFibGUgPSAnQ1JFQVRFIFRBQkxFICcgLiAkcHJlZml4I
C4gJ2J1ZGR5X3Rlc3QgKGlkIElOVCBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCBQUklNQVJZIEtFWSk7JzsK
CQlpZiAoIEZBTFNFICE9PSAkdGhpcy0+d3BkYi0+cXVlcnkoICRjcmVhdGVfdGVzdF90YWJsZSApICkgewo
JCQkvLyBEcm9wIHRlbXAgdGVzdCB0YWJsZSB3ZSBjcmVhdGVkIGJlZm9yZSB3ZSBkZWNsYXJlIHN1Y2Nlc3
MuCgkJCWlmICggRkFMU0UgIT09ICR0aGlzLT53cGRiLT5xdWVyeSggJGRyb3BfdGVzdF90YWJsZSApICkge
woJCQkJJHRoaXMtPnRlc3RzWydjcmVhdGVkcm9wdGFibGUnXSA9IHRydWU7CgkJCX0gZWxzZSB7IC8vIGRy
b3AgZmFpbGVkLgoJCQkJaWYgKCBlbXB0eSggJHRoaXMtPndwZGItPnVzZV9teXNxbGkgKSApIHsKCQkJCQk
kbXlzcWxfZXJybm8gPSBteXNxbF9lcnJubyggJHRoaXMtPndwZGItPmRiaCApOwoJCQkJfSBlbHNlIHsKCQ
kJCQkkbXlzcWxfZXJybm8gPSBteXNxbGlfZXJybm8oICR0aGlzLT53cGRiLT5kYmggKTsKCQkJCX0KCQkJC
SR0aGlzLT50ZXN0c1snY3JlYXRlZHJvcHRhYmxlX2Vycm9yJ10gPSAnVW5hYmxlIHRvIGRlbGV0ZSB0ZW1w
b3JhcnkgdGFibGUuICcgLiAkdGhpcy0+d3BkYi0+bGFzdF9lcnJvciAuICcgLSBFcnJvck5vOiBgJyAuICR
teXNxbF9lcnJubyAuICdgLic7CgkJCX0KCQl9Cgl9CgoJLyoqCgkgKiBUZXN0cyBmb3IgZXhpc3RpbmcgdG
FibGVzIHdpdGggdGhlIHNhbWUgcHJlZml4CgkgKgoJICogQHNpbmNlIDYuNC4wLjEzCgkgKi8KCXB1YmxpY
yBmdW5jdGlvbiB0ZXN0X3ByZWZpeCgpIHsKCQkvLyBNYWtlIHN1cmUgd2UndmUgYWxyZWFkeSBjb25uZWN0
ZWQuIFRoaXMgc2hvdWxkIG5ldmVyIGJlIHRydWUuCgkJaWYgKCBlbXB0eSggJHRoaXMtPnRlc3RzWydjb25
uZWN0J10gKSApIHsKCQkJJHRoaXMtPnRlc3RfY29ubmVjdCgpOwoJCX0KCgkJLy8gV29yZFByZXNzIHRhYm
xlcyBleGlzdCBtYXRjaGluZyBwcmVmaXg/CgkJJHByZWZpeF9leGlzdHNfc3FsID0gJHRoaXMtPndwZGItP
nByZXBhcmUoICJTSE9XIFRBQkxFUyBMSUtFICclcyc7Iiwgc3RyX3JlcGxhY2UoICdfJywgJ1xfJywgJHRo
aXMtPmNyZWRzWydwcmVmaXgnXSApIC4gIiUiICk7CgkJJHJlc3VsdCAgICAgICAgICAgID0gJHRoaXMtPnd
wZGItPmdldF9yZXN1bHRzKCAkcHJlZml4X2V4aXN0c19zcWwgKTsKCQlpZiAoIGVtcHR5KCAkcmVzdWx0IC
kgKSB7IC8vIFdvcmRQcmVzcyBwcmVmaXggZG9lcyBub3QgZXhpc3QuCgkJCSR0aGlzLT50ZXN0c1sncHJlZ
ml4X2V4aXN0cyddID0gZmFsc2U7CgkJfQoKCQkvLyBNYWtlIHN1cmUgcHJlZml4IG1lZXRzIHdwIHN0YW5k
YXJkcy4KCQlpZiAoICEgcHJlZ19tYXRjaCggJ3xbXmEtejAtOV9dfGknLCAkdGhpcy0+Y3JlZHNbJ3ByZWZ
peCddICkgKSB7IC8vIFByZWZpeCBtZWV0cyBXUCBzdGFuZGFyZHMuCgkJCSR0aGlzLT50ZXN0c1sncHJlZm
l4J10gPSB0cnVlOwoJCQlpZiAoIHByZWdfbWF0Y2goICcvXlthLXowLTldKygoX1thLXowLTldKyk/KSs/X
yQvaScsICR0aGlzLT5jcmVkc1sncHJlZml4J10gKSApIHsgLy8gUHJlZml4IHBhc3NlcyB3aXRoIG5vIHdh
cm5pbmcuCgkJCQkkdGhpcy0+dGVzdHNbJ3ByZWZpeF93YXJuJ10gPSBmYWxzZTsKCQkJfSBlbHNlIHsKCQk
JCSR0aGlzLT50ZXN0c1sncHJlZml4X3dhcm4nXSA9IHRydWU7CgkJCX0KCQl9CgoJfQp9Cg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/classes/test-
db.php,importbuddy/classes/test-db.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/classes/wp-
db.php,importbuddy/classes/wp-db.php
PD9waHAKLy8gd3BkLWRiLnBocCBtb2RpZmllZCBmb3IgQkIgdjYuMC4wLjYgdG8gc3RvcmUgc2V0IGNoYXJ
zZXQgaW4gJHdwZGItPmNoYXJzZXQgZm9yIHV0Zm1iNCBoYW5kbGluZyB3aXRoIG15c3FsYnVkZHkgaW4gc2
V0X2NoYXJ0c2V0KCkuCi8vIE5PVEU6IEEgY29weSBvZiB0aGlzIGZpbGUgaXMgZHJvcHBlZCBpbnRvIF9yb
2xsYmFja191bmRvLnBocC4KCgoKLyoqCiAqIFdvcmRQcmVzcyBEQiBDbGFzcwogKgogKiBPcmlnaW5hbCBj
b2RlIGZyb20ge0BsaW5rIGh0dHA6Ly9waHAuanVzdGludmluY2VudC5jb20gSnVzdGluIFZpbmNlbnQgKGp
1c3RpbkB2aXN1bmV0LmllKX0KICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqIEBzdWJwYWNrYWdlIERhdG
FiYXNlCiAqIEBzaW5jZSAwLjcxCiAqLwoKLyoqCiAqIEBzaW5jZSAwLjcxCiAqLwpkZWZpbmUoICdFWlNRT
F9WRVJTSU9OJywgJ1dQMS4yNScgKTsKCi8qKgogKiBAc2luY2UgMC43MQogKi8KZGVmaW5lKCAnT0JKRUNU
JywgJ09CSkVDVCcgKTsKZGVmaW5lKCAnb2JqZWN0JywgJ09CSkVDVCcgKTsgLy8gQmFjayBjb21wYXQuCgo
vKioKICogQHNpbmNlIDIuNS4wCiAqLwpkZWZpbmUoICdPQkpFQ1RfSycsICdPQkpFQ1RfSycgKTsKCi8qKg
ogKiBAc2luY2UgMC43MQogKi8KZGVmaW5lKCAnQVJSQVlfQScsICdBUlJBWV9BJyApOwoKLyoqCiAqIEBza
W5jZSAwLjcxCiAqLwpkZWZpbmUoICdBUlJBWV9OJywgJ0FSUkFZX04nICk7CgovKioKICogV29yZFByZXNz
IERhdGFiYXNlIEFjY2VzcyBBYnN0cmFjdGlvbiBPYmplY3QKICoKICogSXQgaXMgcG9zc2libGUgdG8gcmV
wbGFjZSB0aGlzIGNsYXNzIHdpdGggeW91ciBvd24KICogYnkgc2V0dGluZyB0aGUgJHdwZGIgZ2xvYmFsIH
ZhcmlhYmxlIGluIHdwLWNvbnRlbnQvZGIucGhwCiAqIGZpbGUgdG8geW91ciBjbGFzcy4gVGhlIHdwZGIgY
2xhc3Mgd2lsbCBzdGlsbCBiZSBpbmNsdWRlZCwKICogc28geW91IGNhbiBleHRlbmQgaXQgb3Igc2ltcGx5
IHVzZSB5b3VyIG93bi4KICoKICogQGxpbmsgaHR0cHM6Ly9jb2RleC53b3JkcHJlc3Mub3JnL0Z1bmN0aW9
uX1JlZmVyZW5jZS93cGRiX0NsYXNzCiAqCiAqIEBwYWNrYWdlIFdvcmRQcmVzcwogKiBAc3VicGFja2FnZS
BEYXRhYmFzZQogKiBAc2luY2UgMC43MQogKi8KY2xhc3Mgd3BkYiB7CgoJLyoqCgkgKiBXaGV0aGVyIHRvI
HNob3cgU1FML0RCIGVycm9ycy4KCSAqCgkgKiBEZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHNob3cgZXJyb3Jz
IGlmIGJvdGggV1BfREVCVUcgYW5kIFdQX0RFQlVHX0RJU1BMQVkKCSAqIGV2YWx1YXRlZCB0byB0cnVlLgo
JICoKCSAqIEBzaW5jZSAwLjcxCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYm9vbAoJICovCgl2YX
IgJHNob3dfZXJyb3JzID0gZmFsc2U7CgoJLyoqCgkgKiBXaGV0aGVyIHRvIHN1cHByZXNzIGVycm9ycyBkd
XJpbmcgdGhlIERCIGJvb3RzdHJhcHBpbmcuCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAc2luY2Ug
Mi41LjAKCSAqIEB2YXIgYm9vbAoJICovCgl2YXIgJHN1cHByZXNzX2Vycm9ycyA9IGZhbHNlOwoKCS8qKgo
JICogVGhlIGxhc3QgZXJyb3IgZHVyaW5nIHF1ZXJ5LgoJICoKCSAqIEBzaW5jZSAyLjUuMAoJICogQHZhci
BzdHJpbmcKCSAqLwoJcHVibGljICRsYXN0X2Vycm9yID0gJyc7CgoJLyoqCgkgKiBBbW91bnQgb2YgcXVlc
mllcyBtYWRlCgkgKgoJICogQHNpbmNlIDEuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBpbnQK
CSAqLwoJcHVibGljICRudW1fcXVlcmllcyA9IDA7CgoJLyoqCgkgKiBDb3VudCBvZiByb3dzIHJldHVybmV
kIGJ5IHByZXZpb3VzIHF1ZXJ5CgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi
BAdmFyIGludAoJICovCglwdWJsaWMgJG51bV9yb3dzID0gMDsKCgkvKioKCSAqIENvdW50IG9mIGFmZmVjd
GVkIHJvd3MgYnkgcHJldmlvdXMgcXVlcnkKCSAqCgkgKiBAc2luY2UgMC43MQoJICogQGFjY2VzcyBwcml2
YXRlCgkgKiBAdmFyIGludAoJICovCgl2YXIgJHJvd3NfYWZmZWN0ZWQgPSAwOwoKCS8qKgoJICogVGhlIEl
EIGdlbmVyYXRlZCBmb3IgYW4gQVVUT19JTkNSRU1FTlQgY29sdW1uIGJ5IHRoZSBwcmV2aW91cyBxdWVyeS
AodXN1YWxseSBJTlNFUlQpLgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQ
HZhciBpbnQKCSAqLwoJcHVibGljICRpbnNlcnRfaWQgPSAwOwoKCS8qKgoJICogTGFzdCBxdWVyeSBtYWRl
CgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl
2YXIgJGxhc3RfcXVlcnk7CgoJLyoqCgkgKiBSZXN1bHRzIG9mIHRoZSBsYXN0IHF1ZXJ5IG1hZGUKCSAqCg
kgKiBAc2luY2UgMC43MQoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5fG51bGwKCSAqLwoJd
mFyICRsYXN0X3Jlc3VsdDsKCgkvKioKCSAqIE15U1FMIHJlc3VsdCwgd2hpY2ggaXMgZWl0aGVyIGEgcmVz
b3VyY2Ugb3IgYm9vbGVhbi4KCSAqCgkgKiBAc2luY2UgMC43MQoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSA
qIEB2YXIgbWl4ZWQKCSAqLwoJcHJvdGVjdGVkICRyZXN1bHQ7CgoJLyoqCgkgKiBDYWNoZWQgY29sdW1uIG
luZm8sIGZvciBzYW5pdHkgY2hlY2tpbmcgZGF0YSBiZWZvcmUgaW5zZXJ0aW5nCgkgKgoJICogQHNpbmNlI
DQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBhcnJheQoJICovCglwcm90ZWN0ZWQgJGNv
bF9tZXRhID0gYXJyYXkoKTsKCgkvKioKCSAqIENhbGN1bGF0ZWQgY2hhcmFjdGVyIHNldHMgb24gdGFibGV
zCgkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBhcnJheQoJIC
ovCglwcm90ZWN0ZWQgJHRhYmxlX2NoYXJzZXQgPSBhcnJheSgpOwoKCS8qKgoJICogV2hldGhlciB0ZXh0I
GZpZWxkcyBpbiB0aGUgY3VycmVudCBxdWVyeSBuZWVkIHRvIGJlIHNhbml0eSBjaGVja2VkLgoJICoKCSAq
IEBzaW5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgYm9vbAoJICovCglwcm90ZWN
0ZWQgJGNoZWNrX2N1cnJlbnRfcXVlcnkgPSB0cnVlOwoKCS8qKgoJICogRmxhZyB0byBlbnN1cmUgd2UgZG
9uJ3QgcnVuIGludG8gcmVjdXJzaW9uIHByb2JsZW1zIHdoZW4gY2hlY2tpbmcgdGhlIGNvbGxhdGlvbi4KC
SAqCgkgKiBAc2luY2UgNC4yLjAKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHNlZSB3cGRiOjpjaGVja19z
YWZlX2NvbGxhdGlvbigpCgkgKiBAdmFyIGJvb2wKCSAqLwoJcHJpdmF0ZSAkY2hlY2tpbmdfY29sbGF0aW9
uID0gZmFsc2U7CgoJLyoqCgkgKiBTYXZlZCBpbmZvIG9uIHRoZSB0YWJsZSBjb2x1bW4KCSAqCgkgKiBAc2
luY2UgMC43MQoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHJvdGVjdGVkI
CRjb2xfaW5mbzsKCgkvKioKCSAqIFNhdmVkIHF1ZXJpZXMgdGhhdCB3ZXJlIGV4ZWN1dGVkCgkgKgoJICog
QHNpbmNlIDEuNS4wCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRxdWV
yaWVzOwoKCS8qKgoJICogVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXRyeSByZWNvbm5lY3RpbmcgYmVmb3
JlIGR5aW5nLgoJICoKCSAqIEBzaW5jZSAzLjkuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEBzZWUgd
3BkYjo6Y2hlY2tfY29ubmVjdGlvbigpCgkgKiBAdmFyIGludAoJICovCglwcm90ZWN0ZWQgJHJlY29ubmVj
dF9yZXRyaWVzID0gNTsKCgkvKioKCSAqIFdvcmRQcmVzcyB0YWJsZSBwcmVmaXgKCSAqCgkgKiBZb3UgY2F
uIHNldCB0aGlzIHRvIGhhdmUgbXVsdGlwbGUgV29yZFByZXNzIGluc3RhbGxhdGlvbnMKCSAqIGluIGEgc2
luZ2xlIGRhdGFiYXNlLiBUaGUgc2Vjb25kIHJlYXNvbiBpcyBmb3IgcG9zc2libGUKCSAqIHNlY3VyaXR5I
HByZWNhdXRpb25zLgoJICoKCSAqIEBzaW5jZSAyLjUuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIg
c3RyaW5nCgkgKi8KCXB1YmxpYyAkcHJlZml4ID0gJyc7CgoJLyoqCgkgKiBXb3JkUHJlc3MgYmFzZSB0YWJ
sZSBwcmVmaXguCgkgKgoJICogQHNpbmNlIDMuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdH
JpbmcKCSAqLwoJIHB1YmxpYyAkYmFzZV9wcmVmaXg7CgoJLyoqCgkgKiBXaGV0aGVyIHRoZSBkYXRhYmFzZ
SBxdWVyaWVzIGFyZSByZWFkeSB0byBzdGFydCBleGVjdXRpbmcuCgkgKgoJICogQHNpbmNlIDIuMy4yCgkg
KiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYm9vbAoJICovCgl2YXIgJHJlYWR5ID0gZmFsc2U7CgoJLyo
qCgkgKiBCbG9nIElELgoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YX
IgaW50CgkgKi8KCXB1YmxpYyAkYmxvZ2lkID0gMDsKCgkvKioKCSAqIFNpdGUgSUQuCgkgKgoJICogQHNpb
mNlIDMuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBpbnQKCSAqLwoJcHVibGljICRzaXRlaWQg
PSAwOwoKCS8qKgoJICogTGlzdCBvZiBXb3JkUHJlc3MgcGVyLWJsb2cgdGFibGVzCgkgKgoJICogQHNpbmN
lIDIuNS4wCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEBzZWUgd3BkYjo6dGFibGVzKCkKCSAqIEB2YXIgYX
JyYXkKCSAqLwoJdmFyICR0YWJsZXMgPSBhcnJheSggJ3Bvc3RzJywgJ2NvbW1lbnRzJywgJ2xpbmtzJywgJ
29wdGlvbnMnLCAncG9zdG1ldGEnLAoJCSd0ZXJtcycsICd0ZXJtX3RheG9ub215JywgJ3Rlcm1fcmVsYXRp
b25zaGlwcycsICd0ZXJtbWV0YScsICdjb21tZW50bWV0YScgKTsKCgkvKioKCSAqIExpc3Qgb2YgZGVwcmV
jYXRlZCBXb3JkUHJlc3MgdGFibGVzCgkgKgoJICogY2F0ZWdvcmllcywgcG9zdDJjYXQsIGFuZCBsaW5rMm
NhdCB3ZXJlIGRlcHJlY2F0ZWQgaW4gMi4zLjAsIGRiIHZlcnNpb24gNTUzOQoJICoKCSAqIEBzaW5jZSAyL
jkuMAoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAc2VlIHdwZGI6OnRhYmxlcygpCgkgKiBAdmFyIGFycmF5
CgkgKi8KCXZhciAkb2xkX3RhYmxlcyA9IGFycmF5KCAnY2F0ZWdvcmllcycsICdwb3N0MmNhdCcsICdsaW5
rMmNhdCcgKTsKCgkvKioKCSAqIExpc3Qgb2YgV29yZFByZXNzIGdsb2JhbCB0YWJsZXMKCSAqCgkgKiBAc2
luY2UgMy4wLjAKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHNlZSB3cGRiOjp0YWJsZXMoKQoJICogQHZhc
iBhcnJheQoJICovCgl2YXIgJGdsb2JhbF90YWJsZXMgPSBhcnJheSggJ3VzZXJzJywgJ3VzZXJtZXRhJyAp
OwoKCS8qKgoJICogTGlzdCBvZiBNdWx0aXNpdGUgZ2xvYmFsIHRhYmxlcwoJICoKCSAqIEBzaW5jZSAzLjA
uMAoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAc2VlIHdwZGI6OnRhYmxlcygpCgkgKiBAdmFyIGFycmF5Cg
kgKi8KCXZhciAkbXNfZ2xvYmFsX3RhYmxlcyA9IGFycmF5KCAnYmxvZ3MnLCAnc2lnbnVwcycsICdzaXRlJ
ywgJ3NpdGVtZXRhJywKCQknc2l0ZWNhdGVnb3JpZXMnLCAncmVnaXN0cmF0aW9uX2xvZycsICdibG9nX3Zl
cnNpb25zJyApOwoKCS8qKgoJICogV29yZFByZXNzIENvbW1lbnRzIHRhYmxlCgkgKgoJICogQHNpbmNlIDE
uNS4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRjb21tZW50cz
sKCgkvKioKCSAqIFdvcmRQcmVzcyBDb21tZW50IE1ldGFkYXRhIHRhYmxlCgkgKgoJICogQHNpbmNlIDIuO
S4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRjb21tZW50bWV0
YTsKCgkvKioKCSAqIFdvcmRQcmVzcyBMaW5rcyB0YWJsZQoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICogQGF
jY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkbGlua3M7CgoJLyoqCgkgKiBXb3
JkUHJlc3MgT3B0aW9ucyB0YWJsZQoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICogQGFjY2VzcyBwdWJsaWMKC
SAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkb3B0aW9uczsKCgkvKioKCSAqIFdvcmRQcmVzcyBQb3N0
IE1ldGFkYXRhIHRhYmxlCgkgKgoJICogQHNpbmNlIDEuNS4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZ
hciBzdHJpbmcKCSAqLwoJcHVibGljICRwb3N0bWV0YTsKCgkvKioKCSAqIFdvcmRQcmVzcyBQb3N0cyB0YW
JsZQoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgK
i8KCXB1YmxpYyAkcG9zdHM7CgoJLyoqCgkgKiBXb3JkUHJlc3MgVGVybXMgdGFibGUKCSAqCgkgKiBAc2lu
Y2UgMi4zLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWMgJHRlcm1
zOwoKCS8qKgoJICogV29yZFByZXNzIFRlcm0gUmVsYXRpb25zaGlwcyB0YWJsZQoJICoKCSAqIEBzaW5jZS
AyLjMuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkdGVybV9yZ
WxhdGlvbnNoaXBzOwoKCS8qKgoJICogV29yZFByZXNzIFRlcm0gVGF4b25vbXkgdGFibGUKCSAqCgkgKiBA
c2luY2UgMi4zLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWMgJHR
lcm1fdGF4b25vbXk7CgoJLyoqCgkgKiBXb3JkUHJlc3MgVGVybSBNZXRhIHRhYmxlLgoJICoKCSAqIEBzaW
5jZSA0LjQuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkdGVyb
W1ldGE7CgoJLyoKCSAqIEdsb2JhbCBhbmQgTXVsdGlzaXRlIHRhYmxlcwoJICovCgoJLyoqCgkgKiBXb3Jk
UHJlc3MgVXNlciBNZXRhZGF0YSB0YWJsZQoJICoKCSAqIEBzaW5jZSAyLjMuMAoJICogQGFjY2VzcyBwdWJ
saWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkdXNlcm1ldGE7CgoJLyoqCgkgKiBXb3JkUHJlc3
MgVXNlcnMgdGFibGUKCSAqCgkgKiBAc2luY2UgMS41LjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyI
HN0cmluZwoJICovCglwdWJsaWMgJHVzZXJzOwoKCS8qKgoJICogTXVsdGlzaXRlIEJsb2dzIHRhYmxlCgkg
KgoJICogQHNpbmNlIDMuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHV
ibGljICRibG9nczsKCgkvKioKCSAqIE11bHRpc2l0ZSBCbG9nIFZlcnNpb25zIHRhYmxlCgkgKgoJICogQH
NpbmNlIDMuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRib
G9nX3ZlcnNpb25zOwoKCS8qKgoJICogTXVsdGlzaXRlIFJlZ2lzdHJhdGlvbiBMb2cgdGFibGUKCSAqCgkg
KiBAc2luY2UgMy4wLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWM
gJHJlZ2lzdHJhdGlvbl9sb2c7CgoJLyoqCgkgKiBNdWx0aXNpdGUgU2lnbnVwcyB0YWJsZQoJICoKCSAqIE
BzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkc
2lnbnVwczsKCgkvKioKCSAqIE11bHRpc2l0ZSBTaXRlcyB0YWJsZQoJICoKCSAqIEBzaW5jZSAzLjAuMAoJ
ICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3R
yaW5nCgkgKi8KCXB1YmxpYyAkc2l0ZTsKCgkvKioKCSAqIE11bHRpc2l0ZSBTaXRld2lkZSBUZXJtcyB0YW
JsZQoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgK
i8KCXB1YmxpYyAkc2l0ZWNhdGVnb3JpZXM7CgoJLyoqCgkgKiBNdWx0aXNpdGUgU2l0ZSBNZXRhZGF0YSB0
YWJsZQoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgk
gKi8KCXB1YmxpYyAkc2l0ZW1ldGE7CgoJLyoqCgkgKiBGb3JtYXQgc3BlY2lmaWVycyBmb3IgREIgY29sdW
1ucy4gQ29sdW1ucyBub3QgbGlzdGVkIGhlcmUgZGVmYXVsdCB0byAlcy4gSW5pdGlhbGl6ZWQgZHVyaW5nI
FdQIGxvYWQuCgkgKgoJICogS2V5cyBhcmUgY29sdW1uIG5hbWVzLCB2YWx1ZXMgYXJlIGZvcm1hdCB0eXBl
czogJ0lEJyA9PiAnJWQnCgkgKgoJICogQHNpbmNlIDIuOC4wCgkgKiBAc2VlIHdwZGI6OnByZXBhcmUoKQo
JICogQHNlZSB3cGRiOjppbnNlcnQoKQoJICogQHNlZSB3cGRiOjp1cGRhdGUoKQoJICogQHNlZSB3cGRiOj
pkZWxldGUoKQoJICogQHNlZSB3cF9zZXRfd3BkYl92YXJzKCkKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAd
mFyIGFycmF5CgkgKi8KCXB1YmxpYyAkZmllbGRfdHlwZXMgPSBhcnJheSgpOwoKCS8qKgoJICogRGF0YWJh
c2UgdGFibGUgY29sdW1ucyBjaGFyc2V0CgkgKgoJICogQHNpbmNlIDIuMi4wCgkgKiBAYWNjZXNzIHB1Ymx
pYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRjaGFyc2V0OwoKCS8qKgoJICogRGF0YWJhc2UgdG
FibGUgY29sdW1ucyBjb2xsYXRlCgkgKgoJICogQHNpbmNlIDIuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJI
CogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRjb2xsYXRlOwoKCS8qKgoJICogRGF0YWJhc2UgVXNlcm5h
bWUKCSAqCgkgKiBAc2luY2UgMi45LjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIHN0cmluZwo
JICovCglwcm90ZWN0ZWQgJGRidXNlcjsKCgkvKioKCSAqIERhdGFiYXNlIFBhc3N3b3JkCgkgKgoJICogQH
NpbmNlIDMuMS4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBzdHJpbmcKCSAqLwoJcHJvdGVjd
GVkICRkYnBhc3N3b3JkOwoKCS8qKgoJICogRGF0YWJhc2UgTmFtZQoJICoKCSAqIEBzaW5jZSAzLjEuMAoJ
ICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByb3RlY3RlZCAkZGJuYW1lOwo
KCS8qKgoJICogRGF0YWJhc2UgSG9zdAoJICoKCSAqIEBzaW5jZSAzLjEuMAoJICogQGFjY2VzcyBwcm90ZW
N0ZWQKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByb3RlY3RlZCAkZGJob3N0OwoKCS8qKgoJICogRGF0YWJhc
2UgSGFuZGxlCgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIHN0
cmluZwoJICovCglwcm90ZWN0ZWQgJGRiaDsKCgkvKioKCSAqIEEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB
0aGUgbGFzdCBxdWVyeS9nZXRfcm93L2dldF92YXIgY2FsbAoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQG
FjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkZnVuY19jYWxsOwoKCS8qKgoJI
CogV2hldGhlciBNeVNRTCBpcyB1c2VkIGFzIHRoZSBkYXRhYmFzZSBlbmdpbmUuCgkgKgoJICogU2V0IGlu
IFdQREI6OmRiX2Nvbm5lY3QoKSB0byB0cnVlLCBieSBkZWZhdWx0LiBUaGlzIGlzIHVzZWQgd2hlbiBjaGV
ja2luZwoJICogYWdhaW5zdCB0aGUgcmVxdWlyZWQgTXlTUUwgdmVyc2lvbiBmb3IgV29yZFByZXNzLiBOb3
JtYWxseSwgYSByZXBsYWNlbWVudAoJICogZGF0YWJhc2UgZHJvcC1pbiAoZGIucGhwKSB3aWxsIHNraXAgd
Ghlc2UgY2hlY2tzLCBidXQgc2V0dGluZyB0aGlzIHRvIHRydWUKCSAqIHdpbGwgZm9yY2UgdGhlIGNoZWNr
cyB0byBvY2N1ci4KCSAqCgkgKiBAc2luY2UgMy4zLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIGJ
vb2wKCSAqLwoJcHVibGljICRpc19teXNxbCA9IG51bGw7CgoJLyoqCgkgKiBBIGxpc3Qgb2YgaW5jb21wYX
RpYmxlIFNRTCBtb2Rlcy4KCSAqCgkgKiBAc2luY2UgMy45LjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgK
iBAdmFyIGFycmF5CgkgKi8KCXByb3RlY3RlZCAkaW5jb21wYXRpYmxlX21vZGVzID0gYXJyYXkoICdOT19a
RVJPX0RBVEUnLCAnT05MWV9GVUxMX0dST1VQX0JZJywKCQknU1RSSUNUX1RSQU5TX1RBQkxFUycsICdTVFJ
JQ1RfQUxMX1RBQkxFUycsICdUUkFESVRJT05BTCcgKTsKCgkvKioKCSAqIFdoZXRoZXIgdG8gdXNlIG15c3
FsaSBvdmVyIG15c3FsLgoJICoKCSAqIEBzaW5jZSAzLjkuMAoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAd
mFyIGJvb2wKCSAqLwoJcHJpdmF0ZSAkdXNlX215c3FsaSA9IGZhbHNlOwoKCS8qKgoJICogV2hldGhlciB3
ZSd2ZSBtYW5hZ2VkIHRvIHN1Y2Nlc3NmdWxseSBjb25uZWN0IGF0IHNvbWUgcG9pbnQKCSAqCgkgKiBAc2l
uY2UgMy45LjAKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBib29sCgkgKi8KCXByaXZhdGUgJGhhc1
9jb25uZWN0ZWQgPSBmYWxzZTsKCgkvKioKCSAqIENvbm5lY3RzIHRvIHRoZSBkYXRhYmFzZSBzZXJ2ZXIgY
W5kIHNlbGVjdHMgYSBkYXRhYmFzZQoJICoKCSAqIFBIUDUgc3R5bGUgY29uc3RydWN0b3IgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBQSFA1LiBEb2VzCgkgKiB0aGUgYWN0dWFsIHNldHRpbmcgdXAgb2YgdGhlIGNsYXN
zIHByb3BlcnRpZXMgYW5kIGNvbm5lY3Rpb24KCSAqIHRvIHRoZSBkYXRhYmFzZS4KCSAqCgkgKiBAbGluay
BodHRwczovL2NvcmUudHJhYy53b3JkcHJlc3Mub3JnL3RpY2tldC8zMzU0CgkgKiBAc2luY2UgMi4wLjgKC
SAqCgkgKiBAZ2xvYmFsIHN0cmluZyAkd3BfdmVyc2lvbgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGRidXNl
ciAgICAgTXlTUUwgZGF0YWJhc2UgdXNlcgoJICogQHBhcmFtIHN0cmluZyAkZGJwYXNzd29yZCBNeVNRTCB
kYXRhYmFzZSBwYXNzd29yZAoJICogQHBhcmFtIHN0cmluZyAkZGJuYW1lICAgICBNeVNRTCBkYXRhYmFzZS
BuYW1lCgkgKiBAcGFyYW0gc3RyaW5nICRkYmhvc3QgICAgIE15U1FMIGRhdGFiYXNlIGhvc3QKCSAqLwoJc
HVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkZGJ1c2VyLCAkZGJwYXNzd29yZCwgJGRibmFtZSwgJGRi
aG9zdCApIHsKCQlyZWdpc3Rlcl9zaHV0ZG93bl9mdW5jdGlvbiggYXJyYXkoICR0aGlzLCAnX19kZXN0cnV
jdCcgKSApOwoKCQlpZiAoIFdQX0RFQlVHICYmIFdQX0RFQlVHX0RJU1BMQVkgKQoJCQkkdGhpcy0+c2hvd1
9lcnJvcnMoKTsKCgkJLyogVXNlIGV4dC9teXNxbGkgaWYgaXQgZXhpc3RzIGFuZDoKCQkgKiAgLSBXUF9VU
0VfRVhUX01ZU1FMIGlzIGRlZmluZWQgYXMgZmFsc2UsIG9yCgkJICogIC0gV2UgYXJlIGEgZGV2ZWxvcG1l
bnQgdmVyc2lvbiBvZiBXb3JkUHJlc3MsIG9yCgkJICogIC0gV2UgYXJlIHJ1bm5pbmcgUEhQIDUuNSBvciB
ncmVhdGVyLCBvcgoJCSAqICAtIGV4dC9teXNxbCBpcyBub3QgbG9hZGVkLgoJCSAqLwoJCWlmICggZnVuY3
Rpb25fZXhpc3RzKCAnbXlzcWxpX2Nvbm5lY3QnICkgKSB7CgkJCWlmICggZGVmaW5lZCggJ1dQX1VTRV9FW
FRfTVlTUUwnICkgKSB7CgkJCQkkdGhpcy0+dXNlX215c3FsaSA9ICEgV1BfVVNFX0VYVF9NWVNRTDsKCQkJ
fSBlbHNlaWYgKCB2ZXJzaW9uX2NvbXBhcmUoIHBocHZlcnNpb24oKSwgJzUuNScsICc+PScgKSB8fCAhIGZ
1bmN0aW9uX2V4aXN0cyggJ215c3FsX2Nvbm5lY3QnICkgKSB7CgkJCQkkdGhpcy0+dXNlX215c3FsaSA9IH
RydWU7CgkJCX0gZWxzZWlmICggZmFsc2UgIT09IHN0cnBvcyggJEdMT0JBTFNbJ3dwX3ZlcnNpb24nXSwgJ
y0nICkgKSB7CgkJCQkkdGhpcy0+dXNlX215c3FsaSA9IHRydWU7CgkJCX0KCQl9CgoJCSR0aGlzLT5kYnVz
ZXIgPSAkZGJ1c2VyOwoJCSR0aGlzLT5kYnBhc3N3b3JkID0gJGRicGFzc3dvcmQ7CgkJJHRoaXMtPmRibmF
tZSA9ICRkYm5hbWU7CgkJJHRoaXMtPmRiaG9zdCA9ICRkYmhvc3Q7CgoJCS8vIHdwLWNvbmZpZy5waHAgY3
JlYXRpb24gd2lsbCBtYW51YWxseSBjb25uZWN0IHdoZW4gcmVhZHkuCgkJaWYgKCBkZWZpbmVkKCAnV1BfU
0VUVVBfQ09ORklHJyApICkgewoJCQlyZXR1cm47CgkJfQoKCQkkdGhpcy0+ZGJfY29ubmVjdCgpOwoJfQoK
CS8qKgoJICogUEhQNSBzdHlsZSBkZXN0cnVjdG9yIGFuZCB3aWxsIHJ1biB3aGVuIGRhdGFiYXNlIG9iamV
jdCBpcyBkZXN0cm95ZWQuCgkgKgoJICogQHNlZSB3cGRiOjpfX2NvbnN0cnVjdCgpCgkgKiBAc2luY2UgMi
4wLjgKCSAqIEByZXR1cm4gdHJ1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpIHsKCQlyZ
XR1cm4gdHJ1ZTsKCX0KCgkvKioKCSAqIFBIUDUgc3R5bGUgbWFnaWMgZ2V0dGVyLCB1c2VkIHRvIGxhenkt
bG9hZCBleHBlbnNpdmUgZGF0YS4KCSAqCgkgKiBAc2luY2UgMy41LjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5
nICRuYW1lIFRoZSBwcml2YXRlIG1lbWJlciB0byBnZXQsIGFuZCBvcHRpb25hbGx5IHByb2Nlc3MKCSAqIE
ByZXR1cm4gbWl4ZWQgVGhlIHByaXZhdGUgbWVtYmVyCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2dldCggJ
G5hbWUgKSB7CgkJaWYgKCAnY29sX2luZm8nID09PSAkbmFtZSApCgkJCSR0aGlzLT5sb2FkX2NvbF9pbmZv
KCk7CgoJCXJldHVybiAkdGhpcy0+JG5hbWU7Cgl9CgoJLyoqCgkgKiBNYWdpYyBmdW5jdGlvbiwgZm9yIGJ
hY2t3YXJkcyBjb21wYXRpYmlsaXR5LgoJICoKCSAqIEBzaW5jZSAzLjUuMAoJICoKCSAqIEBwYXJhbSBzdH
JpbmcgJG5hbWUgIFRoZSBwcml2YXRlIG1lbWJlciB0byBzZXQKCSAqIEBwYXJhbSBtaXhlZCAgJHZhbHVlI
FRoZSB2YWx1ZSB0byBzZXQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fc2V0KCAkbmFtZSwgJHZhbHVlICkg
ewoJCSRwcm90ZWN0ZWRfbWVtYmVycyA9IGFycmF5KAoJCQknY29sX21ldGEnLAoJCQkndGFibGVfY2hhcnN
ldCcsCgkJCSdjaGVja19jdXJyZW50X3F1ZXJ5JywKCQkpOwoJCWlmICggIGluX2FycmF5KCAkbmFtZSwgJH
Byb3RlY3RlZF9tZW1iZXJzLCB0cnVlICkgKSB7CgkJCXJldHVybjsKCQl9CgkJJHRoaXMtPiRuYW1lID0gJ
HZhbHVlOwoJfQoKCS8qKgoJICogTWFnaWMgZnVuY3Rpb24sIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0
eS4KCSAqCgkgKiBAc2luY2UgMy41LjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICBUaGUgcHJpdmF
0ZSBtZW1iZXIgdG8gY2hlY2sKCSAqCgkgKiBAcmV0dXJuIGJvb2wgSWYgdGhlIG1lbWJlciBpcyBzZXQgb3
Igbm90CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2lzc2V0KCAkbmFtZSApIHsKCQlyZXR1cm4gaXNzZXQoI
CR0aGlzLT4kbmFtZSApOwoJfQoKCS8qKgoJICogTWFnaWMgZnVuY3Rpb24sIGZvciBiYWNrd2FyZHMgY29t
cGF0aWJpbGl0eS4KCSAqCgkgKiBAc2luY2UgMy41LjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICB
UaGUgcHJpdmF0ZSBtZW1iZXIgdG8gdW5zZXQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fdW5zZXQoICRuYW
1lICkgewoJCXVuc2V0KCAkdGhpcy0+JG5hbWUgKTsKCX0KCgkvKioKCSAqIFNldCAkdGhpcy0+Y2hhcnNld
CBhbmQgJHRoaXMtPmNvbGxhdGUKCSAqCgkgKiBAc2luY2UgMy4xLjAKCSAqLwoJcHVibGljIGZ1bmN0aW9u
IGluaXRfY2hhcnNldCgpIHsKCQlpZiAoIGZ1bmN0aW9uX2V4aXN0cygnaXNfbXVsdGlzaXRlJykgJiYgaXN
fbXVsdGlzaXRlKCkgKSB7CgkJCSR0aGlzLT5jaGFyc2V0ID0gJ3V0ZjgnOwoJCQlpZiAoIGRlZmluZWQoIC
dEQl9DT0xMQVRFJyApICYmIERCX0NPTExBVEUgKSB7CgkJCQkkdGhpcy0+Y29sbGF0ZSA9IERCX0NPTExBV
EU7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+Y29sbGF0ZSA9ICd1dGY4X2dlbmVyYWxfY2knOwoJCQl9CgkJ
fSBlbHNlaWYgKCBkZWZpbmVkKCAnREJfQ09MTEFURScgKSApIHsKCQkJJHRoaXMtPmNvbGxhdGUgPSBEQl9
DT0xMQVRFOwoJCX0KCgkJaWYgKCBkZWZpbmVkKCAnREJfQ0hBUlNFVCcgKSApIHsKCQkJJHRoaXMtPmNoYX
JzZXQgPSBEQl9DSEFSU0VUOwoJCX0KCgkJaWYgKCAoICR0aGlzLT51c2VfbXlzcWxpICYmICEgKCAkdGhpc
y0+ZGJoIGluc3RhbmNlb2YgbXlzcWxpICkgKSB8fCBlbXB0eSggJHRoaXMtPmRiaCApICkgewoJCQlyZXR1
cm47CgkJfQoKCQlpZiAoICd1dGY4JyA9PT0gJHRoaXMtPmNoYXJzZXQgJiYgJHRoaXMtPmhhc19jYXAoICd
1dGY4bWI0JyApICkgewoJCQkkdGhpcy0+Y2hhcnNldCA9ICd1dGY4bWI0JzsKCQl9CgoJCWlmICggJ3V0Zj
htYjQnID09PSAkdGhpcy0+Y2hhcnNldCAmJiAoICEgJHRoaXMtPmNvbGxhdGUgfHwgc3RyaXBvcyggJHRoa
XMtPmNvbGxhdGUsICd1dGY4XycgKSA9PT0gMCApICkgewoJCQkkdGhpcy0+Y29sbGF0ZSA9ICd1dGY4bWI0
X3VuaWNvZGVfY2knOwoJCX0KCX0KCQoJCgkvLyBCYWNrdXBCdWRkeSBtb2RpZmllZCB0byBzdG9yZSBjaGF
ydHNldCBhbmQgY29sbGF0ZSBpbiBjbGFzcy4KCS8qKgoJICogU2V0cyB0aGUgY29ubmVjdGlvbidzIGNoYX
JhY3RlciBzZXQuCgkgKgoJICogQHNpbmNlIDMuMS4wCgkgKgoJICogQHBhcmFtIHJlc291cmNlICRkYmggI
CAgIFRoZSByZXNvdXJjZSBnaXZlbiBieSBteXNxbF9jb25uZWN0CgkgKiBAcGFyYW0gc3RyaW5nICAgJGNo
YXJzZXQgT3B0aW9uYWwuIFRoZSBjaGFyYWN0ZXIgc2V0LiBEZWZhdWx0IG51bGwuCgkgKiBAcGFyYW0gc3R
yaW5nICAgJGNvbGxhdGUgT3B0aW9uYWwuIFRoZSBjb2xsYXRpb24uIERlZmF1bHQgbnVsbC4KCSAqLwoJcH
VibGljIGZ1bmN0aW9uIHNldF9jaGFyc2V0KCAkZGJoLCAkY2hhcnNldCA9IG51bGwsICRjb2xsYXRlID0gb
nVsbCApIHsKCQlpZiAoICEgaXNzZXQoICRjaGFyc2V0ICkgKQoJCQkkY2hhcnNldCA9ICR0aGlzLT5jaGFy
c2V0OwoJCWlmICggISBpc3NldCggJGNvbGxhdGUgKSApCgkJCSRjb2xsYXRlID0gJHRoaXMtPmNvbGxhdGU
7CgkJaWYgKCAkdGhpcy0+aGFzX2NhcCggJ2NvbGxhdGlvbicgKSAmJiAhIGVtcHR5KCAkY2hhcnNldCApIC
kgewoJCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkJaWYgKCBmdW5jdGlvbl9leGlzdHMoICdte
XNxbGlfc2V0X2NoYXJzZXQnICkgJiYgJHRoaXMtPmhhc19jYXAoICdzZXRfY2hhcnNldCcgKSApIHsKCQkJ
CQlteXNxbGlfc2V0X2NoYXJzZXQoICRkYmgsICRjaGFyc2V0ICk7CgkJCQl9IGVsc2UgewoJCQkJCSRxdWV
yeSA9ICR0aGlzLT5wcmVwYXJlKCAnU0VUIE5BTUVTICVzJywgJGNoYXJzZXQgKTsKCQkJCQlpZiAoICEgZW
1wdHkoICRjb2xsYXRlICkgKQoJCQkJCQkkcXVlcnkgLj0gJHRoaXMtPnByZXBhcmUoICcgQ09MTEFURSAlc
ycsICRjb2xsYXRlICk7CgkJCQkJbXlzcWxpX3F1ZXJ5KCAkZGJoLCAkcXVlcnkgKTsKCQkJCX0KCQkJfSBl
bHNlIHsKCQkJCWlmICggZnVuY3Rpb25fZXhpc3RzKCAnbXlzcWxfc2V0X2NoYXJzZXQnICkgJiYgJHRoaXM
tPmhhc19jYXAoICdzZXRfY2hhcnNldCcgKSApIH
sKCQkJCQlteXNxbF9zZXRfY2hhcnNldCggJGNoYXJzZXQsICRkYmggKTsKCQkJCX0gZWxzZSB7CgkJCQkJJ
HF1ZXJ5ID0gJHRoaXMtPnByZXBhcmUoICdTRVQgTkFNRVMgJXMnLCAkY2hhcnNldCApOwoJCQkJCWlmICgg
ISBlbXB0eSggJGNvbGxhdGUgKSApCgkJCQkJCSRxdWVyeSAuPSAkdGhpcy0+cHJlcGFyZSggJyBDT0xMQVR
FICVzJywgJGNvbGxhdGUgKTsKCQkJCQlteXNxbF9xdWVyeSggJHF1ZXJ5LCAkZGJoICk7CgkJCQl9CgkJCX
0KCQl9CgkJCgkJJHRoaXMtPmNoYXJzZXQgPSAkY2hhcnNldDsKCQkkdGhpcy0+Y29sbGF0ZSA9ICRjb2xsY
XRlOwoJfQoKCS8qKgoJICogQ2hhbmdlIHRoZSBjdXJyZW50IFNRTCBtb2RlLCBhbmQgZW5zdXJlIGl0cyBX
b3JkUHJlc3MgY29tcGF0aWJpbGl0eS4KCSAqCgkgKiBJZiBubyBtb2RlcyBhcmUgcGFzc2VkLCBpdCB3aWx
sIGVuc3VyZSB0aGUgY3VycmVudCBNeVNRTCBzZXJ2ZXIKCSAqIG1vZGVzIGFyZSBjb21wYXRpYmxlLgoJIC
oKCSAqIEBzaW5jZSAzLjkuMAoJICoKCSAqIEBwYXJhbSBhcnJheSAkbW9kZXMgT3B0aW9uYWwuIEEgbGlzd
CBvZiBTUUwgbW9kZXMgdG8gc2V0LgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0X3NxbF9tb2RlKCAkbW9k
ZXMgPSBhcnJheSgpICkgewoJCWlmICggZW1wdHkoICRtb2RlcyApICkgewoJCQlpZiAoICR0aGlzLT51c2V
fbXlzcWxpICkgewoJCQkJJHJlcyA9IG15c3FsaV9xdWVyeSggJHRoaXMtPmRiaCwgJ1NFTEVDVCBAQFNFU1
NJT04uc3FsX21vZGUnICk7CgkJCX0gZWxzZSB7CgkJCQkkcmVzID0gbXlzcWxfcXVlcnkoICdTRUxFQ1QgQ
EBTRVNTSU9OLnNxbF9tb2RlJywgJHRoaXMtPmRiaCApOwoJCQl9CgoJCQlpZiAoIGVtcHR5KCAkcmVzICkg
KSB7CgkJCQlyZXR1cm47CgkJCX0KCgkJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCQkkbW9kZXN
fYXJyYXkgPSBteXNxbGlfZmV0Y2hfYXJyYXkoICRyZXMgKTsKCQkJCWlmICggZW1wdHkoICRtb2Rlc19hcn
JheVswXSApICkgewoJCQkJCXJldHVybjsKCQkJCX0KCQkJCSRtb2Rlc19zdHIgPSAkbW9kZXNfYXJyYXlbM
F07CgkJCX0gZWxzZSB7CgkJCQkkbW9kZXNfc3RyID0gbXlzcWxfcmVzdWx0KCAkcmVzLCAwICk7CgkJCX0K
CgkJCWlmICggZW1wdHkoICRtb2Rlc19zdHIgKSApIHsKCQkJCXJldHVybjsKCQkJfQoKCQkJJG1vZGVzID0
gZXhwbG9kZSggJywnLCAkbW9kZXNfc3RyICk7CgkJfQoKCQkkbW9kZXMgPSBhcnJheV9jaGFuZ2Vfa2V5X2
Nhc2UoICRtb2RlcywgQ0FTRV9VUFBFUiApOwoKCQkvKioKCQkgKiBGaWx0ZXIgdGhlIGxpc3Qgb2YgaW5jb
21wYXRpYmxlIFNRTCBtb2RlcyB0byBleGNsdWRlLgoJCSAqCgkJICogQHNpbmNlIDMuOS4wCgkJICoKCQkg
KiBAcGFyYW0gYXJyYXkgJGluY29tcGF0aWJsZV9tb2RlcyBBbiBhcnJheSBvZiBpbmNvbXBhdGlibGUgbW9
kZXMuCgkJICovCgkJJGluY29tcGF0aWJsZV9tb2RlcyA9IChhcnJheSkgYXBwbHlfZmlsdGVycyggJ2luY2
9tcGF0aWJsZV9zcWxfbW9kZXMnLCAkdGhpcy0+aW5jb21wYXRpYmxlX21vZGVzICk7CgoJCWZvcmVhY2ggK
CAkbW9kZXMgYXMgJGkgPT4gJG1vZGUgKSB7CgkJCWlmICggaW5fYXJyYXkoICRtb2RlLCAkaW5jb21wYXRp
YmxlX21vZGVzICkgKSB7CgkJCQl1bnNldCggJG1vZGVzWyAkaSBdICk7CgkJCX0KCQl9CgoJCSRtb2Rlc19
zdHIgPSBpbXBsb2RlKCAnLCcsICRtb2RlcyApOwoKCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQ
lteXNxbGlfcXVlcnkoICR0aGlzLT5kYmgsICJTRVQgU0VTU0lPTiBzcWxfbW9kZT0nJG1vZGVzX3N0ciciI
Ck7CgkJfSBlbHNlIHsKCQkJbXlzcWxfcXVlcnkoICJTRVQgU0VTU0lPTiBzcWxfbW9kZT0nJG1vZGVzX3N0
ciciLCAkdGhpcy0+ZGJoICk7CgkJfQoJfQoKCS8qKgoJICogU2V0cyB0aGUgdGFibGUgcHJlZml4IGZvciB
0aGUgV29yZFByZXNzIHRhYmxlcy4KCSAqCgkgKiBAc2luY2UgMi41LjAKCSAqCgkgKiBAcGFyYW0gc3RyaW
5nICRwcmVmaXggICAgICAgICAgQWxwaGFudW1lcmljIG5hbWUgZm9yIHRoZSBuZXcgcHJlZml4LgoJICogQ
HBhcmFtIGJvb2wgICAkc2V0X3RhYmxlX25hbWVzIE9wdGlvbmFsLiBXaGV0aGVyIHRoZSB0YWJsZSBuYW1l
cywgZS5nLiB3cGRiOjokcG9zdHMsIHNob3VsZCBiZSB1cGRhdGVkIG9yIG5vdC4KCSAqIEByZXR1cm4gc3R
yaW5nfFdQX0Vycm9yIE9sZCBwcmVmaXggb3IgV1BfRXJyb3Igb24gZXJyb3IKCSAqLwoJcHVibGljIGZ1bm
N0aW9uIHNldF9wcmVmaXgoICRwcmVmaXgsICRzZXRfdGFibGVfbmFtZXMgPSB0cnVlICkgewoKCQlpZiAoI
HByZWdfbWF0Y2goICd8W15hLXowLTlfXXxpJywgJHByZWZpeCApICkKCQkJcmV0dXJuIG5ldyBXUF9FcnJv
cignaW52YWxpZF9kYl9wcmVmaXgnLCAnSW52YWxpZCBkYXRhYmFzZSBwcmVmaXgnICk7CgoJCSRvbGRfcHJ
lZml4ID0gaXNfbXVsdGlzaXRlKCkgPyAnJyA6ICRwcmVmaXg7CgoJCWlmICggaXNzZXQoICR0aGlzLT5iYX
NlX3ByZWZpeCApICkKCQkJJG9sZF9wcmVmaXggPSAkdGhpcy0+YmFzZV9wcmVmaXg7CgoJCSR0aGlzLT5iY
XNlX3ByZWZpeCA9ICRwcmVmaXg7CgoJCWlmICggJHNldF90YWJsZV9uYW1lcyApIHsKCQkJZm9yZWFjaCAo
ICR0aGlzLT50YWJsZXMoICdnbG9iYWwnICkgYXMgJHRhYmxlID0+ICRwcmVmaXhlZF90YWJsZSApCgkJCQk
kdGhpcy0+JHRhYmxlID0gJHByZWZpeGVkX3RhYmxlOwoKCQkJaWYgKCBpc19tdWx0aXNpdGUoKSAmJiBlbX
B0eSggJHRoaXMtPmJsb2dpZCApICkKCQkJCXJldHVybiAkb2xkX3ByZWZpeDsKCgkJCSR0aGlzLT5wcmVma
XggPSAkdGhpcy0+Z2V0X2Jsb2dfcHJlZml4KCk7CgoJCQlmb3JlYWNoICggJHRoaXMtPnRhYmxlcyggJ2Js
b2cnICkgYXMgJHRhYmxlID0+ICRwcmVmaXhlZF90YWJsZSApCgkJCQkkdGhpcy0+JHRhYmxlID0gJHByZWZ
peGVkX3RhYmxlOwoKCQkJZm9yZWFjaCAoICR0aGlzLT50YWJsZXMoICdvbGQnICkgYXMgJHRhYmxlID0+IC
RwcmVmaXhlZF90YWJsZSApCgkJCQkkdGhpcy0+JHRhYmxlID0gJHByZWZpeGVkX3RhYmxlOwoJCX0KCQlyZ
XR1cm4gJG9sZF9wcmVmaXg7Cgl9CgoJLyoqCgkgKiBTZXRzIGJsb2cgaWQuCgkgKgoJICogQHNpbmNlIDMu
MC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJhbSBpbnQgJGJsb2dfaWQKCSAqIEBwYXJhbSB
pbnQgJHNpdGVfaWQgT3B0aW9uYWwuCgkgKiBAcmV0dXJuIGludCBwcmV2aW91cyBibG9nIGlkCgkgKi8KCX
B1YmxpYyBmdW5jdGlvbiBzZXRfYmxvZ19pZCggJGJsb2dfaWQsICRzaXRlX2lkID0gMCApIHsKCQlpZiAoI
CEgZW1wdHkoICRzaXRlX2lkICkgKQoJCQkkdGhpcy0+c2l0ZWlkID0gJHNpdGVfaWQ7CgoJCSRvbGRfYmxv
Z19pZCAgPSAkdGhpcy0+YmxvZ2lkOwoJCSR0aGlzLT5ibG9naWQgPSAkYmxvZ19pZDsKCgkJJHRoaXMtPnB
yZWZpeCA9ICR0aGlzLT5nZXRfYmxvZ19wcmVmaXgoKTsKCgkJZm9yZWFjaCAoICR0aGlzLT50YWJsZXMoIC
dibG9nJyApIGFzICR0YWJsZSA9PiAkcHJlZml4ZWRfdGFibGUgKQoJCQkkdGhpcy0+JHRhYmxlID0gJHByZ
WZpeGVkX3RhYmxlOwoKCQlmb3JlYWNoICggJHRoaXMtPnRhYmxlcyggJ29sZCcgKSBhcyAkdGFibGUgPT4g
JHByZWZpeGVkX3RhYmxlICkKCQkJJHRoaXMtPiR0YWJsZSA9ICRwcmVmaXhlZF90YWJsZTsKCgkJcmV0dXJ
uICRvbGRfYmxvZ19pZDsKCX0KCgkvKioKCSAqIEdldHMgYmxvZyBwcmVmaXguCgkgKgoJICogQHNpbmNlID
MuMC4wCgkgKiBAcGFyYW0gaW50ICRibG9nX2lkIE9wdGlvbmFsLgoJICogQHJldHVybiBzdHJpbmcgQmxvZ
yBwcmVmaXguCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfYmxvZ19wcmVmaXgoICRibG9nX2lkID0gbnVs
bCApIHsKCQlpZiAoIGlzX211bHRpc2l0ZSgpICkgewoJCQlpZiAoIG51bGwgPT09ICRibG9nX2lkICkKCQk
JCSRibG9nX2lkID0gJHRoaXMtPmJsb2dpZDsKCQkJJGJsb2dfaWQgPSAoaW50KSAkYmxvZ19pZDsKCQkJaW
YgKCBkZWZpbmVkKCAnTVVMVElTSVRFJyApICYmICggMCA9PSAkYmxvZ19pZCB8fCAxID09ICRibG9nX2lkI
CkgKQoJCQkJcmV0dXJuICR0aGlzLT5iYXNlX3ByZWZpeDsKCQkJZWxzZQoJCQkJcmV0dXJuICR0aGlzLT5i
YXNlX3ByZWZpeCAuICRibG9nX2lkIC4gJ18nOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkdGhpcy0+YmFzZV9
wcmVmaXg7CgkJfQoJfQoKCS8qKgoJICogUmV0dXJucyBhbiBhcnJheSBvZiBXb3JkUHJlc3MgdGFibGVzLg
oJICoKCSAqIEFsc28gYWxsb3dzIGZvciB0aGUgQ1VTVE9NX1VTRVJfVEFCTEUgYW5kIENVU1RPTV9VU0VSX
01FVEFfVEFCTEUgdG8KCSAqIG92ZXJyaWRlIHRoZSBXb3JkUHJlc3MgdXNlcnMgYW5kIHVzZXJtZXRhIHRh
YmxlcyB0aGF0IHdvdWxkIG90aGVyd2lzZQoJICogYmUgZGV0ZXJtaW5lZCBieSB0aGUgcHJlZml4LgoJICo
KCSAqIFRoZSBzY29wZSBhcmd1bWVudCBjYW4gdGFrZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKCSAqCgkgKi
AnYWxsJyAtIHJldHVybnMgJ2FsbCcgYW5kICdnbG9iYWwnIHRhYmxlcy4gTm8gb2xkIHRhYmxlcyBhcmUgc
mV0dXJuZWQuCgkgKiAnYmxvZycgLSByZXR1cm5zIHRoZSBibG9nLWxldmVsIHRhYmxlcyBmb3IgdGhlIHF1
ZXJpZWQgYmxvZy4KCSAqICdnbG9iYWwnIC0gcmV0dXJucyB0aGUgZ2xvYmFsIHRhYmxlcyBmb3IgdGhlIGl
uc3RhbGxhdGlvbiwgcmV0dXJuaW5nIG11bHRpc2l0ZSB0YWJsZXMgb25seSBpZiBydW5uaW5nIG11bHRpc2
l0ZS4KCSAqICdtc19nbG9iYWwnIC0gcmV0dXJucyB0aGUgbXVsdGlzaXRlIGdsb2JhbCB0YWJsZXMsIHJlZ
2FyZGxlc3MgaWYgY3VycmVudCBpbnN0YWxsYXRpb24gaXMgbXVsdGlzaXRlLgoJICogJ29sZCcgLSByZXR1
cm5zIHRhYmxlcyB3aGljaCBhcmUgZGVwcmVjYXRlZC4KCSAqCgkgKiBAc2luY2UgMy4wLjAKCSAqIEB1c2V
zIHdwZGI6OiR0YWJsZXMKCSAqIEB1c2VzIHdwZGI6OiRvbGRfdGFibGVzCgkgKiBAdXNlcyB3cGRiOjokZ2
xvYmFsX3RhYmxlcwoJICogQHVzZXMgd3BkYjo6JG1zX2dsb2JhbF90YWJsZXMKCSAqCgkgKiBAcGFyYW0gc
3RyaW5nICRzY29wZSAgIE9wdGlvbmFsLiBDYW4gYmUgYWxsLCBnbG9iYWwsIG1zX2dsb2JhbCwgYmxvZywg
b3Igb2xkIHRhYmxlcy4gRGVmYXVsdHMgdG8gYWxsLgoJICogQHBhcmFtIGJvb2wgICAkcHJlZml4ICBPcHR
pb25hbC4gV2hldGhlciB0byBpbmNsdWRlIHRhYmxlIHByZWZpeGVzLiBEZWZhdWx0IHRydWUuIElmIGJsb2
cKCSAqICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4IGlzIHJlcXVlc3RlZCwgdGhlbiB0aGUgY3Vzd
G9tIHVzZXJzIGFuZCB1c2VybWV0YSB0YWJsZXMgd2lsbCBiZSBtYXBwZWQuCgkgKiBAcGFyYW0gaW50ICAg
ICRibG9nX2lkIE9wdGlvbmFsLiBUaGUgYmxvZ19pZCB0byBwcmVmaXguIERlZmF1bHRzIHRvIHdwZGI6OiR
ibG9naWQuIFVzZWQgb25seSB3aGVuIHByZWZpeCBpcyByZXF1ZXN0ZWQuCgkgKiBAcmV0dXJuIGFycmF5IF
RhYmxlIG5hbWVzLiBXaGVuIGEgcHJlZml4IGlzIHJlcXVlc3RlZCwgdGhlIGtleSBpcyB0aGUgdW5wcmVma
XhlZCB0YWJsZSBuYW1lLgoJICovCglwdWJsaWMgZnVuY3Rpb24gdGFibGVzKCAkc2NvcGUgPSAnYWxsJywg
JHByZWZpeCA9IHRydWUsICRibG9nX2lkID0gMCApIHsKCQlzd2l0Y2ggKCAkc2NvcGUgKSB7CgkJCWNhc2U
gJ2FsbCcgOgoJCQkJJHRhYmxlcyA9IGFycmF5X21lcmdlKCAkdGhpcy0+Z2xvYmFsX3RhYmxlcywgJHRoaX
MtPnRhYmxlcyApOwoJCQkJaWYgKCBpc19tdWx0aXNpdGUoKSApCgkJCQkJJHRhYmxlcyA9IGFycmF5X21lc
mdlKCAkdGFibGVzLCAkdGhpcy0+bXNfZ2xvYmFsX3RhYmxlcyApOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2Js
b2cnIDoKCQkJCSR0YWJsZXMgPSAkdGhpcy0+dGFibGVzOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2dsb2JhbCc
gOgoJCQkJJHRhYmxlcyA9ICR0aGlzLT5nbG9iYWxfdGFibGVzOwoJCQkJaWYgKCBpc19tdWx0aXNpdGUoKS
ApCgkJCQkJJHRhYmxlcyA9IGFycmF5X21lcmdlKCAkdGFibGVzLCAkdGhpcy0+bXNfZ2xvYmFsX3RhYmxlc
yApOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ21zX2dsb2JhbCcgOgoJCQkJJHRhYmxlcyA9ICR0aGlzLT5tc19n
bG9iYWxfdGFibGVzOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ29sZCcgOgoJCQkJJHRhYmxlcyA9ICR0aGlzLT5
vbGRfdGFibGVzOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQgOgoJCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoKCQ
lpZiAoICRwcmVmaXggKSB7CgkJCWlmICggISAkYmxvZ19pZCApCgkJCQkkYmxvZ19pZCA9ICR0aGlzLT5ib
G9naWQ7CgkJCSRibG9nX3ByZWZpeCA9ICR0aGlzLT5nZXRfYmxvZ19wcmVmaXgoICRibG9nX2lkICk7CgkJ
CSRiYXNlX3ByZWZpeCA9ICR0aGlzLT5iYXNlX3ByZWZpeDsKCQkJJGdsb2JhbF90YWJsZXMgPSBhcnJheV9
tZXJnZSggJHRoaXMtPmdsb2JhbF90YWJsZXMsICR0aGlzLT5tc19nbG9iYWxfdGFibGVzICk7CgkJCWZvcm
VhY2ggKCAkdGFibGVzIGFzICRrID0+ICR0YWJsZSApIHsKCQkJCWlmICggaW5fYXJyYXkoICR0YWJsZSwgJ
Gdsb2JhbF90YWJsZXMgKSApCgkJCQkJJHRhYmxlc1sgJHRhYmxlIF0gPSAkYmFzZV9wcmVmaXggLiAkdGFi
bGU7CgkJCQllbHNlCgkJCQkJJHRhYmxlc1sgJHRhYmxlIF0gPSAkYmxvZ19wcmVmaXggLiAkdGFibGU7Cgk
JCQl1bnNldCggJHRhYmxlc1sgJGsgXSApOwoJCQl9CgoJCQlpZiAoIGlzc2V0KCAkdGFibGVzWyd1c2Vycy
ddICkgJiYgZGVmaW5lZCggJ0NVU1RPTV9VU0VSX1RBQkxFJyApICkKCQkJCSR0YWJsZXNbJ3VzZXJzJ10gP
SBDVVNUT01fVVNFUl9UQUJMRTsKCgkJCWlmICggaXNzZXQoICR0YWJsZXNbJ3VzZXJtZXRhJ10gKSAmJiBk
ZWZpbmVkKCAnQ1VTVE9NX1VTRVJfTUVUQV9UQUJMRScgKSApCgkJCQkkdGFibGVzWyd1c2VybWV0YSddID0
gQ1VTVE9NX1VTRVJfTUVUQV9UQUJMRTsKCQl9CgoJCXJldHVybiAkdGFibGVzOwoJfQoKCS8qKgoJICogU2
VsZWN0cyBhIGRhdGFiYXNlIHVzaW5nIHRoZSBjdXJyZW50IGRhdGFiYXNlIGNvbm5lY3Rpb24uCgkgKgoJI
CogVGhlIGRhdGFiYXNlIG5hbWUgd2lsbCBiZSBjaGFuZ2VkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRhdGFi
YXNlCgkgKiBjb25uZWN0aW9uLiBPbiBmYWlsdXJlLCB0aGUgZXhlY3V0aW9uIHdpbGwgYmFpbCBhbmQgZGl
zcGxheSBhbiBEQiBlcnJvci4KCSAqCgkgKiBAc2luY2UgMC43MQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgIC
AgICAgICRkYiAgTXlTUUwgZGF0YWJhc2UgbmFtZQoJICogQHBhcmFtIHJlc291cmNlfG51bGwgJGRiaCBPc
HRpb25hbCBsaW5rIGlkZW50aWZpZXIuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZWxlY3QoICRkYiwgJGRi
aCA9IG51bGwgKSB7CgkJaWYgKCBpc19udWxsKCRkYmgpICkKCQkJJGRiaCA9ICR0aGlzLT5kYmg7CgoJCWl
mICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCSRzdWNjZXNzID0gQG15c3FsaV9zZWxlY3RfZGIoICRkYm
gsICRkYiApOwoJCX0gZWxzZSB7CgkJCSRzdWNjZ
XNzID0gQG15c3FsX3NlbGVjdF9kYiggJGRiLCAkZGJoICk7CgkJfQoJCWlmICggISAkc3VjY2VzcyApIHsK
CQkJJHRoaXMtPnJlYWR5ID0gZmFsc2U7CgkJCWlmICggISBkaWRfYWN0aW9uKCAndGVtcGxhdGVfcmVkaXJ
lY3QnICkgKSB7CgkJCQl3cF9sb2FkX3RyYW5zbGF0aW9uc19lYXJseSgpOwoKCQkJCSRtZXNzYWdlID0gJz
xoMT4nIC4gX18oICdDYW4mIzgyMTc7dCBzZWxlY3QgZGF0YWJhc2UnICkgLiAiPC9oMT5cbiI7CgoJCQkJJ
G1lc3NhZ2UgLj0gJzxwPicgLiBzcHJpbnRmKAoJCQkJCS8qIHRyYW5zbGF0b3JzOiAlczogZGF0YWJhc2Ug
bmFtZSAqLwoJCQkJCV9fKCAnV2Ugd2VyZSBhYmxlIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIHNlcnZ
lciAod2hpY2ggbWVhbnMgeW91ciB1c2VybmFtZSBhbmQgcGFzc3dvcmQgaXMgb2theSkgYnV0IG5vdCBhYm
xlIHRvIHNlbGVjdCB0aGUgJXMgZGF0YWJhc2UuJyApLAoJCQkJCSc8Y29kZT4nIC4gaHRtbHNwZWNpYWxja
GFycyggJGRiLCBFTlRfUVVPVEVTICkgLiAnPC9jb2RlPicKCQkJCSkgLiAiPC9wPlxuIjsKCgkJCQkkbWVz
c2FnZSAuPSAiPHVsPlxuIjsKCQkJCSRtZXNzYWdlIC49ICc8bGk+JyAuIF9fKCAnQXJlIHlvdSBzdXJlIGl
0IGV4aXN0cz8nICkgLiAiPC9saT5cbiI7CgoJCQkJJG1lc3NhZ2UgLj0gJzxsaT4nIC4gc3ByaW50ZigKCQ
kJCQkvKiB0cmFuc2xhdG9yczogMTogZGF0YWJhc2UgdXNlciwgMjogZGF0YWJhc2UgbmFtZSAqLwoJCQkJC
V9fKCAnRG9lcyB0aGUgdXNlciAlMSRzIGhhdmUgcGVybWlzc2lvbiB0byB1c2UgdGhlICUyJHMgZGF0YWJh
c2U/JyApLAoJCQkJCSc8Y29kZT4nIC4gaHRtbHNwZWNpYWxjaGFycyggJHRoaXMtPmRidXNlciwgRU5UX1F
VT1RFUyApICAuICc8L2NvZGU+JywKCQkJCQknPGNvZGU+JyAuIGh0bWxzcGVjaWFsY2hhcnMoICRkYiwgRU
5UX1FVT1RFUyApIC4gJzwvY29kZT4nCgkJCQkpIC4gIjwvbGk+XG4iOwoKCQkJCSRtZXNzYWdlIC49ICc8b
Gk+JyAuIHNwcmludGYoCgkJCQkJLyogdHJhbnNsYXRvcnM6ICVzOiBkYXRhYmFzZSBuYW1lICovCgkJCQkJ
X18oICdPbiBzb21lIHN5c3RlbXMgdGhlIG5hbWUgb2YgeW91ciBkYXRhYmFzZSBpcyBwcmVmaXhlZCB3aXR
oIHlvdXIgdXNlcm5hbWUsIHNvIGl0IHdvdWxkIGJlIGxpa2UgPGNvZGU+dXNlcm5hbWVfJTEkczwvY29kZT
4uIENvdWxkIHRoYXQgYmUgdGhlIHByb2JsZW0/JyApLAoJCQkJCWh0bWxzcGVjaWFsY2hhcnMoICRkYiwgR
U5UX1FVT1RFUyApCgkJCQkpLiAiPC9saT5cbiI7CgoJCQkJJG1lc3NhZ2UgLj0gIjwvdWw+XG4iOwoKCQkJ
CSRtZXNzYWdlIC49ICc8cD4nIC4gc3ByaW50ZigKCQkJCQkvKiB0cmFuc2xhdG9yczogJXM6IHN1cHBvcnQ
gZm9ydW1zIFVSTCAqLwoJCQkJCV9fKCAnSWYgeW91IGRvbiYjODIxNzt0IGtub3cgaG93IHRvIHNldCB1cC
BhIGRhdGFiYXNlIHlvdSBzaG91bGQgPHN0cm9uZz5jb250YWN0IHlvdXIgaG9zdDwvc3Ryb25nPi4gSWYgY
WxsIGVsc2UgZmFpbHMgeW91IG1heSBmaW5kIGhlbHAgYXQgdGhlIDxhIGhyZWY9IiVzIj5Xb3JkUHJlc3Mg
U3VwcG9ydCBGb3J1bXM8L2E+LicgKSwKCQkJCQlfXyggJ2h0dHBzOi8vd29yZHByZXNzLm9yZy9zdXBwb3J
0LycgKQoJCQkJKSAuICI8L3A+XG4iOwoKCQkJCSR0aGlzLT5iYWlsKCAkbWVzc2FnZSwgJ2RiX3NlbGVjdF
9mYWlsJyApOwoJCQl9CgkJfQoJfQoKCS8qKgoJICogRG8gbm90IHVzZSwgZGVwcmVjYXRlZC4KCSAqCgkgK
iBVc2UgZXNjX3NxbCgpIG9yIHdwZGI6OnByZXBhcmUoKSBpbnN0ZWFkLgoJICoKCSAqIEBzaW5jZSAyLjgu
MAoJICogQGRlcHJlY2F0ZWQgMy42LjAgVXNlIHdwZGI6OnByZXBhcmUoKQoJICogQHNlZSB3cGRiOjpwcmV
wYXJlCgkgKiBAc2VlIGVzY19zcWwoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKgoJICogQHBhcmFtIHN0cm
luZyAkc3RyaW5nCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglmdW5jdGlvbiBfd2Vha19lc2NhcGUoICRzd
HJpbmcgKSB7CgkJaWYgKCBmdW5jX251bV9hcmdzKCkgPT09IDEgJiYgZnVuY3Rpb25fZXhpc3RzKCAnX2Rl
cHJlY2F0ZWRfZnVuY3Rpb24nICkgKQoJCQlfZGVwcmVjYXRlZF9mdW5jdGlvbiggX19NRVRIT0RfXywgJzM
uNicsICd3cGRiOjpwcmVwYXJlKCkgb3IgZXNjX3NxbCgpJyApOwoJCXJldHVybiBhZGRzbGFzaGVzKCAkc3
RyaW5nICk7Cgl9CgoJLyoqCgkgKiBSZWFsIGVzY2FwZSwgdXNpbmcgbXlzcWxpX3JlYWxfZXNjYXBlX3N0c
mluZygpIG9yIG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygpCgkgKgoJICogQHNlZSBteXNxbGlfcmVhbF9l
c2NhcGVfc3RyaW5nKCkKCSAqIEBzZWUgbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCkKCSAqIEBzaW5jZSA
yLjguMAoJICogQGFjY2VzcyBwcml2YXRlCgkgKgoJICogQHBhcmFtICBzdHJpbmcgJHN0cmluZyB0byBlc2
NhcGUKCSAqIEByZXR1cm4gc3RyaW5nIGVzY2FwZWQKCSAqLwoJZnVuY3Rpb24gX3JlYWxfZXNjYXBlKCAkc
3RyaW5nICkgewoJCWlmICggJHRoaXMtPmRiaCApIHsKCQkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsK
CQkJCXJldHVybiBteXNxbGlfcmVhbF9lc2NhcGVfc3RyaW5nKCAkdGhpcy0+ZGJoLCAkc3RyaW5nICk7Cgk
JCX0gZWxzZSB7CgkJCQlyZXR1cm4gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCAkc3RyaW5nLCAkdGhpcy
0+ZGJoICk7CgkJCX0KCQl9CgoJCSRjbGFzcyA9IGdldF9jbGFzcyggJHRoaXMgKTsKCQlpZiAoIGZ1bmN0a
W9uX2V4aXN0cyggJ19fJyApICkgewoJCQkvKiB0cmFuc2xhdG9yczogJXM6IGRhdGFiYXNlIGFjY2VzcyBh
YnN0cmFjdGlvbiBjbGFzcywgdXN1YWxseSB3cGRiIG9yIGEgY2xhc3MgZXh0ZW5kaW5nIHdwZGIgKi8KCQk
JX2RvaW5nX2l0X3dyb25nKCAkY2xhc3MsIHNwcmludGYoIF9fKCAnJXMgbXVzdCBzZXQgYSBkYXRhYmFzZS
Bjb25uZWN0aW9uIGZvciB1c2Ugd2l0aCBlc2NhcGluZy4nICksICRjbGFzcyApLCBFX1VTRVJfTk9USUNFI
Ck7CgkJfSBlbHNlIHsKCQkJX2RvaW5nX2l0X3dyb25nKCAkY2xhc3MsIHNwcmludGYoICclcyBtdXN0IHNl
dCBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIHVzZSB3aXRoIGVzY2FwaW5nLicsICRjbGFzcyApLCBFX1V
TRVJfTk9USUNFICk7CgkJfQoJCXJldHVybiBhZGRzbGFzaGVzKCAkc3RyaW5nICk7Cgl9CgoJLyoqCgkgKi
BFc2NhcGUgZGF0YS4gV29ya3Mgb24gYXJyYXlzLgoJICoKCSAqIEB1c2VzIHdwZGI6Ol9yZWFsX2VzY2FwZ
SgpCgkgKiBAc2luY2UgIDIuOC4wCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqCgkgKiBAcGFyYW0gIHN0cmlu
Z3xhcnJheSAkZGF0YQoJICogQHJldHVybiBzdHJpbmd8YXJyYXkgZXNjYXBlZAoJICovCglmdW5jdGlvbiB
fZXNjYXBlKCAkZGF0YSApIHsKCQlpZiAoIGlzX2FycmF5KCAkZGF0YSApICkgewoJCQlmb3JlYWNoICggJG
RhdGEgYXMgJGsgPT4gJHYgKSB7CgkJCQlpZiAoIGlzX2FycmF5KCR2KSApCgkJCQkJJGRhdGFbJGtdID0gJ
HRoaXMtPl9lc2NhcGUoICR2ICk7CgkJCQllbHNlCgkJCQkJJGRhdGFbJGtdID0gJHRoaXMtPl9yZWFsX2Vz
Y2FwZSggJHYgKTsKCQkJfQoJCX0gZWxzZSB7CgkJCSRkYXRhID0gJHRoaXMtPl9yZWFsX2VzY2FwZSggJGR
hdGEgKTsKCQl9CgoJCXJldHVybiAkZGF0YTsKCX0KCgkvKioKCSAqIERvIG5vdCB1c2UsIGRlcHJlY2F0ZW
QuCgkgKgoJICogVXNlIGVzY19zcWwoKSBvciB3cGRiOjpwcmVwYXJlKCkgaW5zdGVhZC4KCSAqCgkgKiBAc
2luY2UgMC43MQoJICogQGRlcHJlY2F0ZWQgMy42LjAgVXNlIHdwZGI6OnByZXBhcmUoKQoJICogQHNlZSB3
cGRiOjpwcmVwYXJlKCkKCSAqIEBzZWUgZXNjX3NxbCgpCgkgKgoJICogQHBhcmFtIG1peGVkICRkYXRhCgk
gKiBAcmV0dXJuIG1peGVkCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBlc2NhcGUoICRkYXRhICkgewoJCWlmIC
ggZnVuY19udW1fYXJncygpID09PSAxICYmIGZ1bmN0aW9uX2V4aXN0cyggJ19kZXByZWNhdGVkX2Z1bmN0a
W9uJyApICkKCQkJX2RlcHJlY2F0ZWRfZnVuY3Rpb24oIF9fTUVUSE9EX18sICczLjYnLCAnd3BkYjo6cHJl
cGFyZSgpIG9yIGVzY19zcWwoKScgKTsKCQlpZiAoIGlzX2FycmF5KCAkZGF0YSApICkgewoJCQlmb3JlYWN
oICggJGRhdGEgYXMgJGsgPT4gJHYgKSB7CgkJCQlpZiAoIGlzX2FycmF5KCAkdiApICkKCQkJCQkkZGF0YV
ska10gPSAkdGhpcy0+ZXNjYXBlKCAkdiwgJ3JlY3Vyc2l2ZScgKTsKCQkJCWVsc2UKCQkJCQkkZGF0YVska
10gPSAkdGhpcy0+X3dlYWtfZXNjYXBlKCAkdiwgJ2ludGVybmFsJyApOwoJCQl9CgkJfSBlbHNlIHsKCQkJ
JGRhdGEgPSAkdGhpcy0+X3dlYWtfZXNjYXBlKCAkZGF0YSwgJ2ludGVybmFsJyApOwoJCX0KCgkJcmV0dXJ
uICRkYXRhOwoJfQoKCS8qKgoJICogRXNjYXBlcyBjb250ZW50IGJ5IHJlZmVyZW5jZSBmb3IgaW5zZXJ0aW
9uIGludG8gdGhlIGRhdGFiYXNlLCBmb3Igc2VjdXJpdHkKCSAqCgkgKiBAdXNlcyB3cGRiOjpfcmVhbF9lc
2NhcGUoKQoJICoKCSAqIEBzaW5jZSAyLjMuMAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyB0byBl
c2NhcGUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGVzY2FwZV9ieV9yZWYoICYkc3RyaW5nICkgewoJCWlmICg
gISBpc19mbG9hdCggJHN0cmluZyApICkKCQkJJHN0cmluZyA9ICR0aGlzLT5fcmVhbF9lc2NhcGUoICRzdH
JpbmcgKTsKCX0KCgkvKioKCSAqIFByZXBhcmVzIGEgU1FMIHF1ZXJ5IGZvciBzYWZlIGV4ZWN1dGlvbi4gV
XNlcyBzcHJpbnRmKCktbGlrZSBzeW50YXguCgkgKgoJICogVGhlIGZvbGxvd2luZyBkaXJlY3RpdmVzIGNh
biBiZSB1c2VkIGluIHRoZSBxdWVyeSBmb3JtYXQgc3RyaW5nOgoJICogICAlZCAoaW50ZWdlcikKCSAqICA
gJWYgKGZsb2F0KQoJICogICAlcyAoc3RyaW5nKQoJICogICAlJSAobGl0ZXJhbCBwZXJjZW50YWdlIHNpZ2
4gLSBubyBhcmd1bWVudCBuZWVkZWQpCgkgKgoJICogQWxsIG9mICVkLCAlZiwgYW5kICVzIGFyZSB0byBiZ
SBsZWZ0IHVucXVvdGVkIGluIHRoZSBxdWVyeSBzdHJpbmcgYW5kIHRoZXkgbmVlZCBhbiBhcmd1bWVudCBw
YXNzZWQgZm9yIHRoZW0uCgkgKiBMaXRlcmFscyAoJSkgYXMgcGFydHMgb2YgdGhlIHF1ZXJ5IG11c3QgYmU
gcHJvcGVybHkgd3JpdHRlbiBhcyAlJS4KCSAqCgkgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgYS
BzbWFsbCBzdWJzZXQgb2YgdGhlIHNwcmludGYgc3ludGF4OyBpdCBvbmx5IHN1cHBvcnRzICVkIChpbnRlZ
2VyKSwgJWYgKGZsb2F0KSwgYW5kICVzIChzdHJpbmcpLgoJICogRG9lcyBub3Qgc3VwcG9ydCBzaWduLCBw
YWRkaW5nLCBhbGlnbm1lbnQsIHdpZHRoIG9yIHByZWNpc2lvbiBzcGVjaWZpZXJzLgoJICogRG9lcyBub3Q
gc3VwcG9ydCBhcmd1bWVudCBudW1iZXJpbmcvc3dhcHBpbmcuCgkgKgoJICogTWF5IGJlIGNhbGxlZCBsaW
tlIHtAbGluayBodHRwOi8vcGhwLm5ldC9zcHJpbnRmIHNwcmludGYoKX0gb3IgbGlrZSB7QGxpbmsgaHR0c
DovL3BocC5uZXQvdnNwcmludGYgdnNwcmludGYoKX0uCgkgKgoJICogQm90aCAlZCBhbmQgJXMgc2hvdWxk
IGJlIGxlZnQgdW5xdW90ZWQgaW4gdGhlIHF1ZXJ5IHN0cmluZy4KCSAqCgkgKiAgICAgd3BkYjo6cHJlcGF
yZSggIlNFTEVDVCAqIEZST00gYHRhYmxlYCBXSEVSRSBgY29sdW1uYCA9ICVzIEFORCBgZmllbGRgID0gJW
QiLCAnZm9vJywgMTMzNyApCgkgKiAgICAgd3BkYjo6cHJlcGFyZSggIlNFTEVDVCBEQVRFX0ZPUk1BVChgZ
mllbGRgLCAnJSVjJykgRlJPTSBgdGFibGVgIFdIRVJFIGBjb2x1bW5gID0gJXMiLCAnZm9vJyApOwoJICoK
CSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L3NwcmludGYgRGVzY3JpcHRpb24gb2Ygc3ludGF4LgoJICogQHN
pbmNlIDIuMy4wCgkgKgoJICogQHBhcmFtIHN0cmluZyAgICAgICRxdWVyeSAgICBRdWVyeSBzdGF0ZW1lbn
Qgd2l0aCBzcHJpbnRmKCktbGlrZSBwbGFjZWhvbGRlcnMKCSAqIEBwYXJhbSBhcnJheXxtaXhlZCAkYXJnc
yAgICAgVGhlIGFycmF5IG9mIHZhcmlhYmxlcyB0byBzdWJzdGl0dXRlIGludG8gdGhlIHF1ZXJ5J3MgcGxh
Y2Vob2xkZXJzIGlmIGJlaW5nIGNhbGxlZCBsaWtlCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gIHtAbGluayBodHRwOi8vcGhwLm5ldC92c3ByaW50ZiB2c3ByaW50ZigpfSwgb3IgdGhlIGZpcnN0IHZhcm
lhYmxlIHRvIHN1YnN0aXR1dGUgaW50byB0aGUgcXVlcnkncyBwbGFjZWhvbGRlcnMgaWYKCSAqICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgY2FsbGVkIGxpa2Uge0BsaW5rIGh0dHA6Ly9waHAubmV0
L3NwcmludGYgc3ByaW50ZigpfS4KCSAqIEBwYXJhbSBtaXhlZCAgICAgICAkYXJncywuLi4gZnVydGhlciB
2YXJpYWJsZXMgdG8gc3Vic3RpdHV0ZSBpbnRvIHRoZSBxdWVyeSdzIHBsYWNlaG9sZGVycyBpZiBiZWluZy
BjYWxsZWQgbGlrZQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7QGxpbmsgaHR0cDovL3Boc
C5uZXQvc3ByaW50ZiBzcHJpbnRmKCl9LgoJICogQHJldHVybiBzdHJpbmd8dm9pZCBTYW5pdGl6ZWQgcXVl
cnkgc3RyaW5nLCBpZiB0aGVyZSBpcyBhIHF1ZXJ5IHRvIHByZXBhcmUuCgkgKi8KCXB1YmxpYyBmdW5jdGl
vbiBwcmVwYXJlKCAkcXVlcnksICRhcmdzICkgewoJCWlmICggaXNfbnVsbCggJHF1ZXJ5ICkgKQoJCQlyZX
R1cm47CgoJCS8vIFRoaXMgaXMgbm90IG1lYW50IHRvIGJlIGZvb2xwcm9vZiAtLSBidXQgaXQgd2lsbCBjY
XRjaCBvYnZpb3VzbHkgaW5jb3JyZWN0IHVzYWdlLgoJCWlmICggc3RycG9zKCAkcXVlcnksICclJyApID09
PSBmYWxzZSApIHsKCQkJX2RvaW5nX2l0X3dyb25nKCAnd3BkYjo6cHJlcGFyZScsIHNwcmludGYoIF9fKCA
nVGhlIHF1ZXJ5IGFyZ3VtZW50IG9mICVzIG11c3QgaGF2ZSBhIHBsYWNlaG9sZGVyLicgKSwgJ3dwZGI6On
ByZXBhcmUoKScgKSwgJzMuOScgKTsKCQl9CgoJCSRhcmdzID0gZnVuY19nZXRfYXJncygpOwoJCWFycmF5X
3NoaWZ0KCAkYXJncyApOwoJCS8vIElmIGFyZ3Mgd2VyZSBwYXNzZWQgYXMgYW4gYXJyYXkgKGFzIGluIHZz
cHJpbnRmKSwgbW92ZSB0aGVtIHVwCgkJaWYgKCBpc3NldCggJGFyZ3NbMF0gKSAmJiBpc19hcnJheSgkYXJ
nc1swXSkgKQoJCQkkYXJncyA9ICRhcmdzWzBdOwoJCSRxdWVyeSA9IHN0cl9yZXBsYWNlKCAiJyVzJyIsIC
clcycsICRxdWVyeSApOyAvLyBpbiBjYXNlIHNvbWVvbmUgbWlzdGFrZW5seSBhbHJlYWR5IHNpbmdsZXF1b
3RlZCBpdAoJCSRxdWVyeSA9IHN0cl9yZXBsYWNlKCAnIiVzIicsICclcycsICRxdWVyeSApOyAvLyBkb3Vi
bGVxdW90ZSB1bnF1b3RpbmcKCQkkcXVlcnkgPSBwcmVnX3JlcGxhY2UoICd8KD88ISUpJWZ8JyAsICclRic
sICRxdWVyeSApOyAvLyBGb3JjZSBmbG9hdHMgdG8gYmUgbG9jYWxlIHVuYXdhcmUKCQkkcXVlcnkgPSBwcm
VnX3JlcGxhY2UoICd8KD88ISUpJXN8JywgIiclcyciLCAkcXVlcnkgKTsgLy8gcXVvdGUgdGhlIHN0cmluZ
3MsIGF2b2lkaW5nIGVzY2FwZWQgc3RyaW5ncyBs
aWtlICUlcwoJCWFycmF5X3dhbGsoICRhcmdzLCBhcnJheSggJHRoaXMsICdlc2NhcGVfYnlfcmVmJyApICk
7CgkJcmV0dXJuIEB2c3ByaW50ZiggJHF1ZXJ5LCAkYXJncyApOwoJfQoKCS8qKgoJICogRmlyc3QgaGFsZi
BvZiBlc2NhcGluZyBmb3IgTElLRSBzcGVjaWFsIGNoYXJhY3RlcnMgJSBhbmQgXyBiZWZvcmUgcHJlcGFya
W5nIGZvciBNeVNRTC4KCSAqCgkgKiBVc2UgdGhpcyBvbmx5IGJlZm9yZSB3cGRiOjpwcmVwYXJlKCkgb3Ig
ZXNjX3NxbCgpLiAgUmV2ZXJzaW5nIHRoZSBvcmRlciBpcyB2ZXJ5IGJhZCBmb3Igc2VjdXJpdHkuCgkgKgo
JICogRXhhbXBsZSBQcmVwYXJlZCBTdGF0ZW1lbnQ6CgkgKiAgJHdpbGQgPSAnJSc7CgkgKiAgJGZpbmQgPS
Anb25seSA0MyUgb2YgcGxhbmV0cyc7CgkgKiAgJGxpa2UgPSAkd2lsZCAuICR3cGRiLT5lc2NfbGlrZSggJ
GZpbmQgKSAuICR3aWxkOwoJICogICRzcWwgID0gJHdwZGItPnByZXBhcmUoICJTRUxFQ1QgKiBGUk9NICR3
cGRiLT5wb3N0cyBXSEVSRSBwb3N0X2NvbnRlbnQgTElLRSAlcyIsICRsaWtlICk7CgkgKgoJICogRXhhbXB
sZSBFc2NhcGUgQ2hhaW46CgkgKiAgJHNxbCAgPSBlc2Nfc3FsKCAkd3BkYi0+ZXNjX2xpa2UoICRpbnB1dC
ApICk7CgkgKgoJICogQHNpbmNlIDQuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJhbSBzd
HJpbmcgJHRleHQgVGhlIHJhdyB0ZXh0IHRvIGJlIGVzY2FwZWQuIFRoZSBpbnB1dCB0eXBlZCBieSB0aGUg
dXNlciBzaG91bGQgaGF2ZSBubwoJICogICAgICAgICAgICAgICAgICAgICBleHRyYSBvciBkZWxldGVkIHN
sYXNoZXMuCgkgKiBAcmV0dXJuIHN0cmluZyBUZXh0IGluIHRoZSBmb3JtIG9mIGEgTElLRSBwaHJhc2UuIF
RoZSBvdXRwdXQgaXMgbm90IFNRTCBzYWZlLiBDYWxsICR3cGRiOjpwcmVwYXJlKCkKCSAqICAgICAgICAgI
CAgICAgIG9yIHJlYWxfZXNjYXBlIG5leHQuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBlc2NfbGlrZSggJHRl
eHQgKSB7CgkJcmV0dXJuIGFkZGNzbGFzaGVzKCAkdGV4dCwgJ18lXFwnICk7Cgl9CgoJLyoqCgkgKiBQcml
udCBTUUwvREIgZXJyb3IuCgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBnbG9iYWwgYXJyYXkgJEVaU1FMX0
VSUk9SIFN0b3JlcyBlcnJvciBpbmZvcm1hdGlvbiBvZiBxdWVyeSBhbmQgZXJyb3Igc3RyaW5nCgkgKgoJI
CogQHBhcmFtIHN0cmluZyAkc3RyIFRoZSBlcnJvciB0byBkaXNwbGF5CgkgKiBAcmV0dXJuIGZhbHNlfHZv
aWQgRmFsc2UgaWYgdGhlIHNob3dpbmcgb2YgZXJyb3JzIGlzIGRpc2FibGVkLgoJICovCglwdWJsaWMgZnV
uY3Rpb24gcHJpbnRfZXJyb3IoICRzdHIgPSAnJyApIHsKCQlnbG9iYWwgJEVaU1FMX0VSUk9SOwoKCQlpZi
AoICEkc3RyICkgewoJCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkJJHN0ciA9IG15c3FsaV9lc
nJvciggJHRoaXMtPmRiaCApOwoJCQl9IGVsc2UgewoJCQkJJHN0ciA9IG15c3FsX2Vycm9yKCAkdGhpcy0+
ZGJoICk7CgkJCX0KCQl9CgkJJEVaU1FMX0VSUk9SW10gPSBhcnJheSggJ3F1ZXJ5JyA9PiAkdGhpcy0+bGF
zdF9xdWVyeSwgJ2Vycm9yX3N0cicgPT4gJHN0ciApOwoKCQlpZiAoICR0aGlzLT5zdXBwcmVzc19lcnJvcn
MgKQoJCQlyZXR1cm4gZmFsc2U7CgoJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhcmx5KCk7CgoJCWlmICggJ
GNhbGxlciA9ICR0aGlzLT5nZXRfY2FsbGVyKCkgKQoJCQkkZXJyb3Jfc3RyID0gc3ByaW50ZiggX18oICdX
b3JkUHJlc3MgZGF0YWJhc2UgZXJyb3IgJTEkcyBmb3IgcXVlcnkgJTIkcyBtYWRlIGJ5ICUzJHMnICksICR
zdHIsICR0aGlzLT5sYXN0X3F1ZXJ5LCAkY2FsbGVyICk7CgkJZWxzZQoJCQkkZXJyb3Jfc3RyID0gc3ByaW
50ZiggX18oICdXb3JkUHJlc3MgZGF0YWJhc2UgZXJyb3IgJTEkcyBmb3IgcXVlcnkgJTIkcycgKSwgJHN0c
iwgJHRoaXMtPmxhc3RfcXVlcnkgKTsKCgkJZXJyb3JfbG9nKCAkZXJyb3Jfc3RyICk7CgoJCS8vIEFyZSB3
ZSBzaG93aW5nIGVycm9ycz8KCQlpZiAoICEgJHRoaXMtPnNob3dfZXJyb3JzICkKCQkJcmV0dXJuIGZhbHN
lOwoKCQkvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciB0aGVuIHRha2Ugbm90ZSBvZiBpdAoJCWlmICggaXNfbX
VsdGlzaXRlKCkgKSB7CgkJCSRtc2cgPSBzcHJpbnRmKAoJCQkJIiVzIFslc11cbiVzXG4iLAoJCQkJX18oI
CdXb3JkUHJlc3MgZGF0YWJhc2UgZXJyb3I6JyApLAoJCQkJJHN0ciwKCQkJCSR0aGlzLT5sYXN0X3F1ZXJ5
CgkJCSk7CgoJCQlpZiAoIGRlZmluZWQoICdFUlJPUkxPR0ZJTEUnICkgKSB7CgkJCQllcnJvcl9sb2coICR
tc2csIDMsIEVSUk9STE9HRklMRSApOwoJCQl9CgkJCWlmICggZGVmaW5lZCggJ0RJRU9OREJFUlJPUicgKS
ApIHsKCQkJCXdwX2RpZSggJG1zZyApOwoJCQl9CgkJfSBlbHNlIHsKCQkJJHN0ciAgID0gaHRtbHNwZWNpY
WxjaGFycyggJHN0ciwgRU5UX1FVT1RFUyApOwoJCQkkcXVlcnkgPSBodG1sc3BlY2lhbGNoYXJzKCAkdGhp
cy0+bGFzdF9xdWVyeSwgRU5UX1FVT1RFUyApOwoKCQkJcHJpbnRmKAoJCQkJJzxkaXYgaWQ9ImVycm9yIj4
8cCBjbGFzcz0id3BkYmVycm9yIj48c3Ryb25nPiVzPC9zdHJvbmc+IFslc108YnIgLz48Y29kZT4lczwvY2
9kZT48L3A+PC9kaXY+JywKCQkJCV9fKCAnV29yZFByZXNzIGRhdGFiYXNlIGVycm9yOicgKSwKCQkJCSRzd
HIsCgkJCQkkcXVlcnkKCQkJKTsKCQl9Cgl9CgoJLyoqCgkgKiBFbmFibGVzIHNob3dpbmcgb2YgZGF0YWJh
c2UgZXJyb3JzLgoJICoKCSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgb25seSB0byBlbmFibGU
gc2hvd2luZyBvZiBlcnJvcnMuCgkgKiB3cGRiOjpoaWRlX2Vycm9ycygpIHNob3VsZCBiZSB1c2VkIGluc3
RlYWQgZm9yIGhpZGluZyBvZiBlcnJvcnMuIEhvd2V2ZXIsCgkgKiB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB1c
2VkIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSBzaG93aW5nIG9mIGRhdGFiYXNlCgkgKiBlcnJvcnMuCgkgKgoJ
ICogQHNpbmNlIDAuNzEKCSAqIEBzZWUgd3BkYjo6aGlkZV9lcnJvcnMoKQoJICoKCSAqIEBwYXJhbSBib29
sICRzaG93IFdoZXRoZXIgdG8gc2hvdyBvciBoaWRlIGVycm9ycwoJICogQHJldHVybiBib29sIE9sZCB2YW
x1ZSBmb3Igc2hvd2luZyBlcnJvcnMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzaG93X2Vycm9ycyggJHNob
3cgPSB0cnVlICkgewoJCSRlcnJvcnMgPSAkdGhpcy0+c2hvd19lcnJvcnM7CgkJJHRoaXMtPnNob3dfZXJy
b3JzID0gJHNob3c7CgkJcmV0dXJuICRlcnJvcnM7Cgl9CgoJLyoqCgkgKiBEaXNhYmxlcyBzaG93aW5nIG9
mIGRhdGFiYXNlIGVycm9ycy4KCSAqCgkgKiBCeSBkZWZhdWx0IGRhdGFiYXNlIGVycm9ycyBhcmUgbm90IH
Nob3duLgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKiBAc2VlIHdwZGI6OnNob3dfZXJyb3JzKCkKCSAqCgkgK
iBAcmV0dXJuIGJvb2wgV2hldGhlciBzaG93aW5nIG9mIGVycm9ycyB3YXMgYWN0aXZlCgkgKi8KCXB1Ymxp
YyBmdW5jdGlvbiBoaWRlX2Vycm9ycygpIHsKCQkkc2hvdyA9ICR0aGlzLT5zaG93X2Vycm9yczsKCQkkdGh
pcy0+c2hvd19lcnJvcnMgPSBmYWxzZTsKCQlyZXR1cm4gJHNob3c7Cgl9CgoJLyoqCgkgKiBXaGV0aGVyIH
RvIHN1cHByZXNzIGRhdGFiYXNlIGVycm9ycy4KCSAqCgkgKiBCeSBkZWZhdWx0IGRhdGFiYXNlIGVycm9yc
yBhcmUgc3VwcHJlc3NlZCwgd2l0aCBhIHNpbXBsZQoJICogY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRoZXkg
Y2FuIGJlIGVuYWJsZWQuCgkgKgoJICogQHNpbmNlIDIuNS4wCgkgKiBAc2VlIHdwZGI6OmhpZGVfZXJyb3J
zKCkKCSAqIEBwYXJhbSBib29sICRzdXBwcmVzcyBPcHRpb25hbC4gTmV3IHZhbHVlLiBEZWZhdWx0cyB0by
B0cnVlLgoJICogQHJldHVybiBib29sIE9sZCB2YWx1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gc3VwcHJlc
3NfZXJyb3JzKCAkc3VwcHJlc3MgPSB0cnVlICkgewoJCSRlcnJvcnMgPSAkdGhpcy0+c3VwcHJlc3NfZXJy
b3JzOwoJCSR0aGlzLT5zdXBwcmVzc19lcnJvcnMgPSAoYm9vbCkgJHN1cHByZXNzOwoJCXJldHVybiAkZXJ
yb3JzOwoJfQoKCS8qKgoJICogS2lsbCBjYWNoZWQgcXVlcnkgcmVzdWx0cy4KCSAqCgkgKiBAc2luY2UgMC
43MQoJICovCglwdWJsaWMgZnVuY3Rpb24gZmx1c2goKSB7CgkJJHRoaXMtPmxhc3RfcmVzdWx0ID0gYXJyY
XkoKTsKCQkkdGhpcy0+Y29sX2luZm8gICAgPSBudWxsOwoJCSR0aGlzLT5sYXN0X3F1ZXJ5ICA9IG51bGw7
CgkJJHRoaXMtPnJvd3NfYWZmZWN0ZWQgPSAkdGhpcy0+bnVtX3Jvd3MgPSAwOwoJCSR0aGlzLT5sYXN0X2V
ycm9yICA9ICcnOwoKCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICYmICR0aGlzLT5yZXN1bHQgaW5zdGFuY2
VvZiBteXNxbGlfcmVzdWx0ICkgewoJCQlteXNxbGlfZnJlZV9yZXN1bHQoICR0aGlzLT5yZXN1bHQgKTsKC
QkJJHRoaXMtPnJlc3VsdCA9IG51bGw7CgoJCQkvLyBTYW5pdHkgY2hlY2sgYmVmb3JlIHVzaW5nIHRoZSBo
YW5kbGUKCQkJaWYgKCBlbXB0eSggJHRoaXMtPmRiaCApIHx8ICEoICR0aGlzLT5kYmggaW5zdGFuY2VvZiB
teXNxbGkgKSApIHsKCQkJCXJldHVybjsKCQkJfQoKCQkJLy8gQ2xlYXIgb3V0IGFueSByZXN1bHRzIGZyb2
0gYSBtdWx0aS1xdWVyeQoJCQl3aGlsZSAoIG15c3FsaV9tb3JlX3Jlc3VsdHMoICR0aGlzLT5kYmggKSApI
HsKCQkJCW15c3FsaV9uZXh0X3Jlc3VsdCggJHRoaXMtPmRiaCApOwoJCQl9CgkJfSBlbHNlaWYgKCBpc19y
ZXNvdXJjZSggJHRoaXMtPnJlc3VsdCApICkgewoJCQlteXNxbF9mcmVlX3Jlc3VsdCggJHRoaXMtPnJlc3V
sdCApOwoJCX0KCX0KCgkvKioKCSAqIENvbm5lY3QgdG8gYW5kIHNlbGVjdCBkYXRhYmFzZS4KCSAqCgkgKi
BJZiAkYWxsb3dfYmFpbCBpcyBmYWxzZSwgdGhlIGxhY2sgb2YgZGF0YWJhc2UgY29ubmVjdGlvbiB3aWxsI
G5lZWQKCSAqIHRvIGJlIGhhbmRsZWQgbWFudWFsbHkuCgkgKgoJICogQHNpbmNlIDMuMC4wCgkgKiBAc2lu
Y2UgMy45LjAgJGFsbG93X2JhaWwgcGFyYW1ldGVyIGFkZGVkLgoJICoKCSAqIEBwYXJhbSBib29sICRhbGx
vd19iYWlsIE9wdGlvbmFsLiBBbGxvd3MgdGhlIGZ1bmN0aW9uIHRvIGJhaWwuIERlZmF1bHQgdHJ1ZS4KCS
AqIEByZXR1cm4gYm9vbCBUcnVlIHdpdGggYSBzdWNjZXNzZnVsIGNvbm5lY3Rpb24sIGZhbHNlIG9uIGZha
Wx1cmUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBkYl9jb25uZWN0KCAkYWxsb3dfYmFpbCA9IHRydWUgKSB7
CgkJJHRoaXMtPmlzX215c3FsID0gdHJ1ZTsKCgkJLyoKCQkgKiBEZXByZWNhdGVkIGluIDMuOSsgd2hlbiB
1c2luZyBNeVNRTGkuIE5vIGVxdWl2YWxlbnQKCQkgKiAkbmV3X2xpbmsgcGFyYW1ldGVyIGV4aXN0cyBmb3
IgbXlzcWxpXyogZnVuY3Rpb25zLgoJCSAqLwoJCSRuZXdfbGluayA9IGRlZmluZWQoICdNWVNRTF9ORVdfT
ElOSycgKSA/IE1ZU1FMX05FV19MSU5LIDogdHJ1ZTsKCQkkY2xpZW50X2ZsYWdzID0gZGVmaW5lZCggJ01Z
U1FMX0NMSUVOVF9GTEFHUycgKSA/IE1ZU1FMX0NMSUVOVF9GTEFHUyA6IDA7CgoJCWlmICggJHRoaXMtPnV
zZV9teXNxbGkgKSB7CgkJCSR0aGlzLT5kYmggPSBteXNxbGlfaW5pdCgpOwoKCQkJLy8gbXlzcWxpX3JlYW
xfY29ubmVjdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGhvc3QgcGFyYW0gaW5jbHVkaW5nIGEgcG9ydCBvciBzb
2NrZXQKCQkJLy8gbGlrZSBteXNxbF9jb25uZWN0IGRvZXMuIFRoaXMgZHVwbGljYXRlcyBob3cgbXlzcWxf
Y29ubmVjdCBkZXRlY3RzIGEgcG9ydCBhbmQvb3Igc29ja2V0IGZpbGUuCgkJCSRwb3J0ID0gbnVsbDsKCQk
JJHNvY2tldCA9IG51bGw7CgkJCSRob3N0ID0gJHRoaXMtPmRiaG9zdDsKCQkJJHBvcnRfb3Jfc29ja2V0ID
0gc3Ryc3RyKCAkaG9zdCwgJzonICk7CgkJCWlmICggISBlbXB0eSggJHBvcnRfb3Jfc29ja2V0ICkgKSB7C
gkJCQkkaG9zdCA9IHN1YnN0ciggJGhvc3QsIDAsIHN0cnBvcyggJGhvc3QsICc6JyApICk7CgkJCQkkcG9y
dF9vcl9zb2NrZXQgPSBzdWJzdHIoICRwb3J0X29yX3NvY2tldCwgMSApOwoJCQkJaWYgKCAwICE9PSBzdHJ
wb3MoICRwb3J0X29yX3NvY2tldCwgJy8nICkgKSB7CgkJCQkJJHBvcnQgPSBpbnR2YWwoICRwb3J0X29yX3
NvY2tldCApOwoJCQkJCSRtYXliZV9zb2NrZXQgPSBzdHJzdHIoICRwb3J0X29yX3NvY2tldCwgJzonICk7C
gkJCQkJaWYgKCAhIGVtcHR5KCAkbWF5YmVfc29ja2V0ICkgKSB7CgkJCQkJCSRzb2NrZXQgPSBzdWJzdHIo
ICRtYXliZV9zb2NrZXQsIDEgKTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCSRzb2NrZXQgPSAkcG9ydF9
vcl9zb2NrZXQ7CgkJCQl9CgkJCX0KCgkJCWlmICggV1BfREVCVUcgKSB7CgkJCQlteXNxbGlfcmVhbF9jb2
5uZWN0KCAkdGhpcy0+ZGJoLCAkaG9zdCwgJHRoaXMtPmRidXNlciwgJHRoaXMtPmRicGFzc3dvcmQsIG51b
GwsICRwb3J0LCAkc29ja2V0LCAkY2xpZW50X2ZsYWdzICk7CgkJCX0gZWxzZSB7CgkJCQlAbXlzcWxpX3Jl
YWxfY29ubmVjdCggJHRoaXMtPmRiaCwgJGhvc3QsICR0aGlzLT5kYnVzZXIsICR0aGlzLT5kYnBhc3N3b3J
kLCBudWxsLCAkcG9ydCwgJHNvY2tldCwgJGNsaWVudF9mbGFncyApOwoJCQl9CgoJCQlpZiAoICR0aGlzLT
5kYmgtPmNvbm5lY3RfZXJybm8gKSB7CgkJCQkkdGhpcy0+ZGJoID0gbnVsbDsKCgkJCQkvKiBJdCdzIHBvc
3NpYmxlIGV4dC9teXNxbGkgaXMgbWlzY29uZmlndXJlZC4gRmFsbCBiYWNrIHRvIGV4dC9teXNxbCBpZjoK
CQkgCQkgKiAgLSBXZSBoYXZlbid0IHByZXZpb3VzbHkgY29ubmVjdGVkLCBhbmQKCQkgCQkgKiAgLSBXUF9
VU0VfRVhUX01ZU1FMIGlzbid0IHNldCB0byBmYWxzZSwgYW5kCgkJIAkJICogIC0gZXh0L215c3FsIGlzIG
xvYWRlZC4KCQkgCQkgKi8KCQkJCSRhdHRlbXB0X2ZhbGxiYWNrID0gdHJ1ZTsKCgkJCQlpZiAoICR0aGlzL
T5oYXNfY29ubmVjdGVkICkgewoJCQkJCSRhdHRlbXB0X2ZhbGxiYWNrID0gZmFsc2U7CgkJCQl9IGVsc2Vp
ZiAoIGRlZmluZWQoICdXUF9VU0VfRVhUX01ZU1FMJyApICYmICEgV1BfVVNFX0VYVF9NWVNRTCApIHsKCQk
JCQkkYXR0ZW1wdF9mYWxsYmFjayA9IGZhbHNlOwoJCQkJfSBlbHNlaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cy
ggJ215c3FsX2Nvbm5lY3QnICkgKSB7CgkJCQkJJGF0dGVtcHRfZmFsbGJhY2sgPSBmYWxzZTsKCQkJCX0KC
gkJCQlpZiAoICRhdHRlbXB0X2ZhbGxiYWNrICkgewoJCQkJCSR0aGlzLT51c2VfbXlzcWxpID0gZmFsc2U7
CgkJCQkJcmV0dXJuICR0aGlzLT5kYl9jb25uZWN0KCAkYWxsb3dfYmFpbCApOwoJCQkJfQoJCQl9CgkJfSB
lbHNlIHsKCQkJaWYgKCBXUF9ERUJVRyApIHsKCQkJCSR0aGlzLT5kYmggPSBteXNxbF9jb25uZWN0KCAkdG
hpcy0+ZGJob3N0LCAkdGhpcy0+ZGJ1c2VyLCAkdGhpcy0+ZGJwYXNzd29yZCwgJG5ld19saW5rLCAkY2xpZ
W50X2ZsYWdzICk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+ZGJoID0gQG15c3FsX2Nvbm5lY3QoICR0aGlz
LT5kYmhvc3QsICR0aGlzLT5kYnVzZXIsICR0aGl
zLT5kYnBhc3N3b3JkLCAkbmV3X2xpbmssICRjbGllbnRfZmxhZ3MgKTsKCQkJfQoJCX0KCgkJaWYgKCAhIC
R0aGlzLT5kYmggJiYgJGFsbG93X2JhaWwgKSB7CgkJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhcmx5KCk7C
goJCQkvLyBMb2FkIGN1c3RvbSBEQiBlcnJvciB0ZW1wbGF0ZSwgaWYgcHJlc2VudC4KCQkJaWYgKCBmaWxl
X2V4aXN0cyggV1BfQ09OVEVOVF9ESVIgLiAnL2RiLWVycm9yLnBocCcgKSApIHsKCQkJCXJlcXVpcmVfb25
jZSggV1BfQ09OVEVOVF9ESVIgLiAnL2RiLWVycm9yLnBocCcgKTsKCQkJCWRpZSgpOwoJCQl9CgoJCQkkbW
Vzc2FnZSA9ICc8aDE+JyAuIF9fKCAnRXJyb3IgZXN0YWJsaXNoaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvb
icgKSAuICI8L2gxPlxuIjsKCgkJCSRtZXNzYWdlIC49ICc8cD4nIC4gc3ByaW50ZigKCQkJCS8qIHRyYW5z
bGF0b3JzOiAxOiB3cC1jb25maWcucGhwLiAyOiBkYXRhYmFzZSBob3N0ICovCgkJCQlfXyggJ1RoaXMgZWl
0aGVyIG1lYW5zIHRoYXQgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBpbmZvcm1hdGlvbiBpbiB5b3VyIC
UxJHMgZmlsZSBpcyBpbmNvcnJlY3Qgb3Igd2UgY2FuJiM4MjE3O3QgY29udGFjdCB0aGUgZGF0YWJhc2Ugc
2VydmVyIGF0ICUyJHMuIFRoaXMgY291bGQgbWVhbiB5b3VyIGhvc3QmIzgyMTc7cyBkYXRhYmFzZSBzZXJ2
ZXIgaXMgZG93bi4nICksCgkJCQknPGNvZGU+d3AtY29uZmlnLnBocDwvY29kZT4nLAoJCQkJJzxjb2RlPic
gLiBodG1sc3BlY2lhbGNoYXJzKCAkdGhpcy0+ZGJob3N0LCBFTlRfUVVPVEVTICkgLiAnPC9jb2RlPicKCQ
kJKSAuICI8L3A+XG4iOwoKCQkJJG1lc3NhZ2UgLj0gIjx1bD5cbiI7CgkJCSRtZXNzYWdlIC49ICc8bGk+J
yAuIF9fKCAnQXJlIHlvdSBzdXJlIHlvdSBoYXZlIHRoZSBjb3JyZWN0IHVzZXJuYW1lIGFuZCBwYXNzd29y
ZD8nICkgLiAiPC9saT5cbiI7CgkJCSRtZXNzYWdlIC49ICc8bGk+JyAuIF9fKCAnQXJlIHlvdSBzdXJlIHR
oYXQgeW91IGhhdmUgdHlwZWQgdGhlIGNvcnJlY3QgaG9zdG5hbWU/JyApIC4gIjwvbGk+XG4iOwoJCQkkbW
Vzc2FnZSAuPSAnPGxpPicgLiBfXyggJ0FyZSB5b3Ugc3VyZSB0aGF0IHRoZSBkYXRhYmFzZSBzZXJ2ZXIga
XMgcnVubmluZz8nICkgLiAiPC9saT5cbiI7CgkJCSRtZXNzYWdlIC49ICI8L3VsPlxuIjsKCgkJCSRtZXNz
YWdlIC49ICc8cD4nIC4gc3ByaW50ZigKCQkJCS8qIHRyYW5zbGF0b3JzOiAlczogc3VwcG9ydCBmb3J1bXM
gVVJMICovCgkJCQlfXyggJ0lmIHlvdSYjODIxNztyZSB1bnN1cmUgd2hhdCB0aGVzZSB0ZXJtcyBtZWFuIH
lvdSBzaG91bGQgcHJvYmFibHkgY29udGFjdCB5b3VyIGhvc3QuIElmIHlvdSBzdGlsbCBuZWVkIGhlbHAge
W91IGNhbiBhbHdheXMgdmlzaXQgdGhlIDxhIGhyZWY9IiVzIj5Xb3JkUHJlc3MgU3VwcG9ydCBGb3J1bXM8
L2E+LicgKSwKCQkJCV9fKCAnaHR0cHM6Ly93b3JkcHJlc3Mub3JnL3N1cHBvcnQvJyApCgkJCSkgLiAiPC9
wPlxuIjsKCgkJCSR0aGlzLT5iYWlsKCAkbWVzc2FnZSwgJ2RiX2Nvbm5lY3RfZmFpbCcgKTsKCgkJCXJldH
VybiBmYWxzZTsKCQl9IGVsc2VpZiAoICR0aGlzLT5kYmggKSB7CgkJCWlmICggISAkdGhpcy0+aGFzX2Nvb
m5lY3RlZCApIHsKCQkJCSR0aGlzLT5pbml0X2NoYXJzZXQoKTsKCQkJfQoKCQkJJHRoaXMtPmhhc19jb25u
ZWN0ZWQgPSB0cnVlOwoKCQkJJHRoaXMtPnNldF9jaGFyc2V0KCAkdGhpcy0+ZGJoICk7CgoJCQkkdGhpcy0
+cmVhZHkgPSB0cnVlOwoJCQkkdGhpcy0+c2V0X3NxbF9tb2RlKCk7CgkJCSR0aGlzLT5zZWxlY3QoICR0aG
lzLT5kYm5hbWUsICR0aGlzLT5kYmggKTsKCgkJCXJldHVybiB0cnVlOwoJCX0KCgkJcmV0dXJuIGZhbHNlO
woJfQoKCS8qKgoJICogQ2hlY2sgdGhhdCB0aGUgY29ubmVjdGlvbiB0byB0aGUgZGF0YWJhc2UgaXMgc3Rp
bGwgdXAuIElmIG5vdCwgdHJ5IHRvIHJlY29ubmVjdC4KCSAqCgkgKiBJZiB0aGlzIGZ1bmN0aW9uIGlzIHV
uYWJsZSB0byByZWNvbm5lY3QsIGl0IHdpbGwgZm9yY2libHkgZGllLCBvciBpZiBhZnRlciB0aGUKCSAqIH
RoZSB0ZW1wbGF0ZV9yZWRpcmVjdCBob29rIGhhcyBiZWVuIGZpcmVkLCByZXR1cm4gZmFsc2UgaW5zdGVhZ
C4KCSAqCgkgKiBJZiAkYWxsb3dfYmFpbCBpcyBmYWxzZSwgdGhlIGxhY2sgb2YgZGF0YWJhc2UgY29ubmVj
dGlvbiB3aWxsIG5lZWQKCSAqIHRvIGJlIGhhbmRsZWQgbWFudWFsbHkuCgkgKgoJICogQHNpbmNlIDMuOS4
wCgkgKgoJICogQHBhcmFtIGJvb2wgJGFsbG93X2JhaWwgT3B0aW9uYWwuIEFsbG93cyB0aGUgZnVuY3Rpb2
4gdG8gYmFpbC4gRGVmYXVsdCB0cnVlLgoJICogQHJldHVybiBib29sfHZvaWQgVHJ1ZSBpZiB0aGUgY29ub
mVjdGlvbiBpcyB1cC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGNoZWNrX2Nvbm5lY3Rpb24oICRhbGxvd19i
YWlsID0gdHJ1ZSApIHsKCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQlpZiAoIEBteXNxbGlfcGl
uZyggJHRoaXMtPmRiaCApICkgewoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9IGVsc2UgewoJCQlpZiAoIE
BteXNxbF9waW5nKCAkdGhpcy0+ZGJoICkgKSB7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCgkJJGVyc
m9yX3JlcG9ydGluZyA9IGZhbHNlOwoKCQkvLyBEaXNhYmxlIHdhcm5pbmdzLCBhcyB3ZSBkb24ndCB3YW50
IHRvIHNlZSBhIG11bHRpdHVkZSBvZiAidW5hYmxlIHRvIGNvbm5lY3QiIG1lc3NhZ2VzCgkJaWYgKCBXUF9
ERUJVRyApIHsKCQkJJGVycm9yX3JlcG9ydGluZyA9IGVycm9yX3JlcG9ydGluZygpOwoJCQllcnJvcl9yZX
BvcnRpbmcoICRlcnJvcl9yZXBvcnRpbmcgJiB+RV9XQVJOSU5HICk7CgkJfQoKCQlmb3IgKCAkdHJpZXMgP
SAxOyAkdHJpZXMgPD0gJHRoaXMtPnJlY29ubmVjdF9yZXRyaWVzOyAkdHJpZXMrKyApIHsKCQkJLy8gT24g
dGhlIGxhc3QgdHJ5LCByZS1lbmFibGUgd2FybmluZ3MuIFdlIHdhbnQgdG8gc2VlIGEgc2luZ2xlIGluc3R
hbmNlIG9mIHRoZQoJCQkvLyAidW5hYmxlIHRvIGNvbm5lY3QiIG1lc3NhZ2Ugb24gdGhlIGJhaWwoKSBzY3
JlZW4sIGlmIGl0IGFwcGVhcnMuCgkJCWlmICggJHRoaXMtPnJlY29ubmVjdF9yZXRyaWVzID09PSAkdHJpZ
XMgJiYgV1BfREVCVUcgKSB7CgkJCQllcnJvcl9yZXBvcnRpbmcoICRlcnJvcl9yZXBvcnRpbmcgKTsKCQkJ
fQoKCQkJaWYgKCAkdGhpcy0+ZGJfY29ubmVjdCggZmFsc2UgKSApIHsKCQkJCWlmICggJGVycm9yX3JlcG9
ydGluZyApIHsKCQkJCQllcnJvcl9yZXBvcnRpbmcoICRlcnJvcl9yZXBvcnRpbmcgKTsKCQkJCX0KCgkJCQ
lyZXR1cm4gdHJ1ZTsKCQkJfQoKCQkJc2xlZXAoIDEgKTsKCQl9CgoJCS8vIElmIHRlbXBsYXRlX3JlZGlyZ
WN0IGhhcyBhbHJlYWR5IGhhcHBlbmVkLCBpdCdzIHRvbyBsYXRlIGZvciB3cF9kaWUoKS9kZWFkX2RiKCku
CgkJLy8gTGV0J3MganVzdCByZXR1cm4gYW5kIGhvcGUgZm9yIHRoZSBiZXN0LgoJCWlmICggZGlkX2FjdGl
vbiggJ3RlbXBsYXRlX3JlZGlyZWN0JyApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoICEgJG
FsbG93X2JhaWwgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhc
mx5KCk7CgoJCSRtZXNzYWdlID0gJzxoMT4nIC4gX18oICdFcnJvciByZWNvbm5lY3RpbmcgdG8gdGhlIGRh
dGFiYXNlJyApIC4gIjwvaDE+XG4iOwoKCQkkbWVzc2FnZSAuPSAnPHA+JyAuIHNwcmludGYoCgkJCS8qIHR
yYW5zbGF0b3JzOiAlczogZGF0YWJhc2UgaG9zdCAqLwoJCQlfXyggJ1RoaXMgbWVhbnMgdGhhdCB3ZSBsb3
N0IGNvbnRhY3Qgd2l0aCB0aGUgZGF0YWJhc2Ugc2VydmVyIGF0ICVzLiBUaGlzIGNvdWxkIG1lYW4geW91c
iBob3N0JiM4MjE3O3MgZGF0YWJhc2Ugc2VydmVyIGlzIGRvd24uJyApLAoJCQknPGNvZGU+JyAuIGh0bWxz
cGVjaWFsY2hhcnMoICR0aGlzLT5kYmhvc3QsIEVOVF9RVU9URVMgKSAuICc8L2NvZGU+JwoJCSkgLiAiPC9
wPlxuIjsKCgkJJG1lc3NhZ2UgLj0gIjx1bD5cbiI7CgkJJG1lc3NhZ2UgLj0gJzxsaT4nIC4gX18oICdBcm
UgeW91IHN1cmUgdGhhdCB0aGUgZGF0YWJhc2Ugc2VydmVyIGlzIHJ1bm5pbmc/JyApIC4gIjwvbGk+XG4iO
woJCSRtZXNzYWdlIC49ICc8bGk+JyAuIF9fKCAnQXJlIHlvdSBzdXJlIHRoYXQgdGhlIGRhdGFiYXNlIHNl
cnZlciBpcyBub3QgdW5kZXIgcGFydGljdWxhcmx5IGhlYXZ5IGxvYWQ/JyApIC4gIjwvbGk+XG4iOwoJCSR
tZXNzYWdlIC49ICI8L3VsPlxuIjsKCgkJJG1lc3NhZ2UgLj0gJzxwPicgLiBzcHJpbnRmKAoJCQkvKiB0cm
Fuc2xhdG9yczogJXM6IHN1cHBvcnQgZm9ydW1zIFVSTCAqLwoJCQlfXyggJ0lmIHlvdSYjODIxNztyZSB1b
nN1cmUgd2hhdCB0aGVzZSB0ZXJtcyBtZWFuIHlvdSBzaG91bGQgcHJvYmFibHkgY29udGFjdCB5b3VyIGhv
c3QuIElmIHlvdSBzdGlsbCBuZWVkIGhlbHAgeW91IGNhbiBhbHdheXMgdmlzaXQgdGhlIDxhIGhyZWY9IiV
zIj5Xb3JkUHJlc3MgU3VwcG9ydCBGb3J1bXM8L2E+LicgKSwKCQkJX18oICdodHRwczovL3dvcmRwcmVzcy
5vcmcvc3VwcG9ydC8nICkKCQkpIC4gIjwvcD5cbiI7CgoJCS8vIFdlIHdlcmVuJ3QgYWJsZSB0byByZWNvb
m5lY3QsIHNvIHdlIGJldHRlciBiYWlsLgoJCSR0aGlzLT5iYWlsKCAkbWVzc2FnZSwgJ2RiX2Nvbm5lY3Rf
ZmFpbCcgKTsKCgkJLy8gQ2FsbCBkZWFkX2RiKCkgaWYgYmFpbCBkaWRuJ3QgZGllLCBiZWNhdXNlIHRoaXM
gZGF0YWJhc2UgaXMgbm8gbW9yZS4gSXQgaGFzIGNlYXNlZCB0byBiZSAoYXQgbGVhc3QgdGVtcG9yYXJpbH
kpLgoJCWRlYWRfZGIoKTsKCX0KCgkvKioKCSAqIFBlcmZvcm0gYSBNeVNRTCBkYXRhYmFzZSBxdWVyeSwgd
XNpbmcgY3VycmVudCBkYXRhYmFzZSBjb25uZWN0aW9uLgoJICoKCSAqIE1vcmUgaW5mb3JtYXRpb24gY2Fu
IGJlIGZvdW5kIG9uIHRoZSBjb2RleCBwYWdlLgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmF
tIHN0cmluZyAkcXVlcnkgRGF0YWJhc2UgcXVlcnkKCSAqIEByZXR1cm4gaW50fGZhbHNlIE51bWJlciBvZi
Byb3dzIGFmZmVjdGVkL3NlbGVjdGVkIG9yIGZhbHNlIG9uIGVycm9yCgkgKi8KCXB1YmxpYyBmdW5jdGlvb
iBxdWVyeSggJHF1ZXJ5ICkgewoJCWlmICggISAkdGhpcy0+cmVhZHkgKSB7CgkJCS8vIEJhY2t1cEJ1ZGR5
OiBSZW1vdmVkIGZvbGxvd2luZyBsaW5lLgoJCQkvLyR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gdHJ
1ZTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLyoqCgkJICogRmlsdGVyIHRoZSBkYXRhYmFzZSBxdWVyeS
4KCQkgKgoJCSAqIFNvbWUgcXVlcmllcyBhcmUgbWFkZSBiZWZvcmUgdGhlIHBsdWdpbnMgaGF2ZSBiZWVuI
GxvYWRlZCwKCQkgKiBhbmQgdGh1cyBjYW5ub3QgYmUgZmlsdGVyZWQgd2l0aCB0aGlzIG1ldGhvZC4KCQkg
KgoJCSAqIEBzaW5jZSAyLjEuMAoJCSAqCgkJICogQHBhcmFtIHN0cmluZyAkcXVlcnkgRGF0YWJhc2UgcXV
lcnkuCgkJICovCgkJJHF1ZXJ5ID0gYXBwbHlfZmlsdGVycyggJ3F1ZXJ5JywgJHF1ZXJ5ICk7CgoJCSR0aG
lzLT5mbHVzaCgpOwoKCQkvLyBMb2cgaG93IHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkCgkJJHRoaXMtPmZ1b
mNfY2FsbCA9ICJcJGRiLT5xdWVyeShcIiRxdWVyeVwiKSI7CgoJCS8vIElmIHdlJ3JlIHdyaXRpbmcgdG8g
dGhlIGRhdGFiYXNlLCBtYWtlIHN1cmUgdGhlIHF1ZXJ5IHdpbGwgd3JpdGUgc2FmZWx5LgoJCWlmICggJHR
oaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnkgJiYgISAkdGhpcy0+Y2hlY2tfYXNjaWkoICRxdWVyeSApICkgew
oJCQkkc3RyaXBwZWRfcXVlcnkgPSAkdGhpcy0+c3RyaXBfaW52YWxpZF90ZXh0X2Zyb21fcXVlcnkoICRxd
WVyeSApOwoJCQkvLyBzdHJpcF9pbnZhbGlkX3RleHRfZnJvbV9xdWVyeSgpIGNhbiBwZXJmb3JtIHF1ZXJp
ZXMsIHNvIHdlIG5lZWQKCQkJLy8gdG8gZmx1c2ggYWdhaW4sIGp1c3QgdG8gbWFrZSBzdXJlIGV2ZXJ5dGh
pbmcgaXMgY2xlYXIuCgkJCSR0aGlzLT5mbHVzaCgpOwoJCQlpZiAoICRzdHJpcHBlZF9xdWVyeSAhPT0gJH
F1ZXJ5ICkgewoJCQkJJHRoaXMtPmluc2VydF9pZCA9IDA7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9C
goJCS8vIEJhY2t1cEJ1ZGR5OiBDaGFuZ2VkIGZvbGxvd2luZyBsaW5lIGZyb20gdHJ1ZSB0byBmYWxzZS4g
RG9uJ3QgcnVuIHRoaXMgY2hlY2sgZXZlciBkdXJpbmcgaW1wb3J0LgoJCSR0aGlzLT5jaGVja19jdXJyZW5
0X3F1ZXJ5ID0gZmFsc2U7IC8vIHdhczogdHJ1ZQoKCQkvLyBLZWVwIHRyYWNrIG9mIHRoZSBsYXN0IHF1ZX
J5IGZvciBkZWJ1Zy4uCgkJJHRoaXMtPmxhc3RfcXVlcnkgPSAkcXVlcnk7CgoJCSR0aGlzLT5fZG9fcXVlc
nkoICRxdWVyeSApOwoKCQkvLyBNeVNRTCBzZXJ2ZXIgaGFzIGdvbmUgYXdheSwgdHJ5IHRvIHJlY29ubmVj
dAoJCSRteXNxbF9lcnJubyA9IDA7CgkJaWYgKCAhIGVtcHR5KCAkdGhpcy0+ZGJoICkgKSB7CgkJCWlmICg
gJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCQkkbXlzcWxfZXJybm8gPSBteXNxbGlfZXJybm8oICR0aGlzLT
5kYmggKTsKCQkJfSBlbHNlIHsKCQkJCSRteXNxbF9lcnJubyA9IG15c3FsX2Vycm5vKCAkdGhpcy0+ZGJoI
Ck7CgkJCX0KCQl9CgoJCWlmICggZW1wdHkoICR0aGlzLT5kYmggKSB8fCAyMDA2ID09ICRteXNxbF9lcnJu
byApIHsKCQkJaWYgKCAkdGhpcy0+Y2hlY2tfY29ubmVjdGlvbigpICkgewoJCQkJJHRoaXMtPl9kb19xdWV
yeSggJHF1ZXJ5ICk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+aW5zZXJ0X2lkID0gMDsKCQkJCXJldHVybi
BmYWxzZTsKCQkJfQoJCX0KCgkJLy8gSWYgdGhlcmUgaXMgYW4gZXJyb3IgdGhlbiB0YWtlIG5vdGUgb2Yga
XQuLgoJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCSR0aGlzLT5sYXN0X2Vycm9yID0gbXlzcWxp
X2Vycm9yKCAkdGhpcy0+ZGJoICk7CgkJfSBlbHNlIHsKCQkJJHRoaXMtPmxhc3RfZXJyb3IgPSBteXNxbF9
lcnJvciggJHRoaXMtPmRiaCApOwoJCX0KCgkJaWYgKCAkdGhpcy0+bGFzdF9lcnJvciApIHsKCQkJLy8gQ2
xlYXIgaW5zZXJ0X2lkIG9uIGEgc3Vic2VxdWVudCBmYWlsZWQgaW5zZXJ0LgoJCQlpZiAoICR0aGlzLT5pb
nNlcnRfaWQgJiYgcHJlZ19tYXRjaCggJy9eXHMqKGluc2VydHxyZXBsYWNlKVxzL2knLCAkcXVlcnkgKSAp
CgkJCQkkdGhpcy0+aW5zZXJ0X2lkID0gMDsKCgkJCSR0aGlzLT5wcmludF9lcnJvcigpOwoJCQlyZXR1cm4
gZmFsc2U7CgkJfQoKCQlpZiAoIHByZWdfbWF0Y2goICcvXlxzKihjcmVhdGV8YWx0ZXJ8dHJ1bmNhdGV8ZH
JvcClccy9pJywgJHF1ZXJ5ICkgKSB7CgkJCSRyZXR1cm5fdmFsID0gJHRoaXMtPnJlc3VsdDsKCQl9IGVsc
2VpZiAoIHByZWdfbWF0Y2goICcvXlxzKihpbnNlcnR8ZGVsZXRlfHVwZGF0ZXxyZXBsYWNlKVxzL2knLCAk
cXVlcnkgKSApIHsKCQkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJCSR0aGlzLT5yb3dzX2FmZmV
jdGVkID0gbXlzcWxpX2FmZmVjdGVkX3Jvd3MoIC
R0aGlzLT5kYmggKTsKCQkJfSBlbHNlIHsKCQkJCSR0aGlzLT5yb3dzX2FmZmVjdGVkID0gbXlzcWxfYWZmZ
WN0ZWRfcm93cyggJHRoaXMtPmRiaCApOwoJCQl9CgkJCS8vIFRha2Ugbm90ZSBvZiB0aGUgaW5zZXJ0X2lk
CgkJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqKGluc2VydHxyZXBsYWNlKVxzL2knLCAkcXVlcnkgKSApIHs
KCQkJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCQkJJHRoaXMtPmluc2VydF9pZCA9IG15c3FsaV
9pbnNlcnRfaWQoICR0aGlzLT5kYmggKTsKCQkJCX0gZWxzZSB7CgkJCQkJJHRoaXMtPmluc2VydF9pZCA9I
G15c3FsX2luc2VydF9pZCggJHRoaXMtPmRiaCApOwoJCQkJfQoJCQl9CgkJCS8vIFJldHVybiBudW1iZXIg
b2Ygcm93cyBhZmZlY3RlZAoJCQkkcmV0dXJuX3ZhbCA9ICR0aGlzLT5yb3dzX2FmZmVjdGVkOwoJCX0gZWx
zZSB7CgkJCSRudW1fcm93cyA9IDA7CgkJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgJiYgJHRoaXMtPnJlc3
VsdCBpbnN0YW5jZW9mIG15c3FsaV9yZXN1bHQgKSB7CgkJCQl3aGlsZSAoICRyb3cgPSBAbXlzcWxpX2Zld
GNoX29iamVjdCggJHRoaXMtPnJlc3VsdCApICkgewoJCQkJCSR0aGlzLT5sYXN0X3Jlc3VsdFskbnVtX3Jv
d3NdID0gJHJvdzsKCQkJCQkkbnVtX3Jvd3MrKzsKCQkJCX0KCQkJfSBlbHNlaWYgKCBpc19yZXNvdXJjZSg
gJHRoaXMtPnJlc3VsdCApICkgewoJCQkJd2hpbGUgKCAkcm93ID0gQG15c3FsX2ZldGNoX29iamVjdCggJH
RoaXMtPnJlc3VsdCApICkgewoJCQkJCSR0aGlzLT5sYXN0X3Jlc3VsdFskbnVtX3Jvd3NdID0gJHJvdzsKC
QkJCQkkbnVtX3Jvd3MrKzsKCQkJCX0KCQkJfQoKCQkJLy8gTG9nIG51bWJlciBvZiByb3dzIHRoZSBxdWVy
eSByZXR1cm5lZAoJCQkvLyBhbmQgcmV0dXJuIG51bWJlciBvZiByb3dzIHNlbGVjdGVkCgkJCSR0aGlzLT5
udW1fcm93cyA9ICRudW1fcm93czsKCQkJJHJldHVybl92YWwgICAgID0gJG51bV9yb3dzOwoJCX0KCgkJcm
V0dXJuICRyZXR1cm5fdmFsOwoJfQoKCS8qKgoJICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gcGVyZm9ybSB0a
GUgbXlzcWxfcXVlcnkoKSBjYWxsLgoJICoKCSAqIEBzaW5jZSAzLjkuMAoJICoKCSAqIEBhY2Nlc3MgcHJp
dmF0ZQoJICogQHNlZSB3cGRiOjpxdWVyeSgpCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcXVlcnkgVGhlIHF
1ZXJ5IHRvIHJ1bi4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBfZG9fcXVlcnkoICRxdWVyeSApIHsKCQlpZi
AoIGRlZmluZWQoICdTQVZFUVVFUklFUycgKSAmJiBTQVZFUVVFUklFUyApIHsKCQkJJHRoaXMtPnRpbWVyX
3N0YXJ0KCk7CgkJfQoKCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkkdGhpcy0+cmVzdWx0ID0g
QG15c3FsaV9xdWVyeSggJHRoaXMtPmRiaCwgJHF1ZXJ5ICk7CgkJfSBlbHNlIHsKCQkJJHRoaXMtPnJlc3V
sdCA9IEBteXNxbF9xdWVyeSggJHF1ZXJ5LCAkdGhpcy0+ZGJoICk7CgkJfQoJCSR0aGlzLT5udW1fcXVlcm
llcysrOwoKCQlpZiAoIGRlZmluZWQoICdTQVZFUVVFUklFUycgKSAmJiBTQVZFUVVFUklFUyApIHsKCQkJJ
HRoaXMtPnF1ZXJpZXNbXSA9IGFycmF5KCAkcXVlcnksICR0aGlzLT50aW1lcl9zdG9wKCksICR0aGlzLT5n
ZXRfY2FsbGVyKCkgKTsKCQl9Cgl9CgoJLyoqCgkgKiBJbnNlcnQgYSByb3cgaW50byBhIHRhYmxlLgoJICo
KCSAqICAgICB3cGRiOjppbnNlcnQoICd0YWJsZScsIGFycmF5KCAnY29sdW1uJyA9PiAnZm9vJywgJ2ZpZW
xkJyA9PiAnYmFyJyApICkKCSAqICAgICB3cGRiOjppbnNlcnQoICd0YWJsZScsIGFycmF5KCAnY29sdW1uJ
yA9PiAnZm9vJywgJ2ZpZWxkJyA9PiAxMzM3ICksIGFycmF5KCAnJXMnLCAnJWQnICkgKQoJICoKCSAqIEBz
aW5jZSAyLjUuMAoJICogQHNlZSB3cGRiOjpwcmVwYXJlKCkKCSAqIEBzZWUgd3BkYjo6JGZpZWxkX3R5cGV
zCgkgKiBAc2VlIHdwX3NldF93cGRiX3ZhcnMoKQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgJHRhYm
xlICBUYWJsZSBuYW1lCgkgKiBAcGFyYW0gYXJyYXkgICAgICAgICRkYXRhICAgRGF0YSB0byBpbnNlcnQgK
GluIGNvbHVtbiA9PiB2YWx1ZSBwYWlycykuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm90
aCAkZGF0YSBjb2x1bW5zIGFuZCAkZGF0YSB2YWx1ZXMgc2hvdWxkIGJlICJyYXciIChuZWl0aGVyIHNob3V
sZCBiZSBTUUwgZXNjYXBlZCkuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZGluZyBhIG
51bGwgdmFsdWUgd2lsbCBjYXVzZSB0aGUgY29sdW1uIHRvIGJlIHNldCB0byBOVUxMIC0gdGhlIGNvcnJlc
3BvbmRpbmcgZm9ybWF0IGlzIGlnbm9yZWQgaW4gdGhpcyBjYXNlLgoJICogQHBhcmFtIGFycmF5fHN0cmlu
ZyAkZm9ybWF0IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBmb3JtYXRzIHRvIGJlIG1hcHBlZCB0byBlYWNoIG9
mIHRoZSB2YWx1ZSBpbiAkZGF0YS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzdHJpbm
csIHRoYXQgZm9ybWF0IHdpbGwgYmUgdXNlZCBmb3IgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gJGRhdGEuCgkgK
iAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBmb3JtYXQgaXMgb25lIG9mICclZCcsICclZicsICcl
cycgKGludGVnZXIsIGZsb2F0LCBzdHJpbmcpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl
mIG9taXR0ZWQsIGFsbCB2YWx1ZXMgaW4gJGRhdGEgd2lsbCBiZSB0cmVhdGVkIGFzIHN0cmluZ3MgdW5sZX
NzIG90aGVyd2lzZSBzcGVjaWZpZWQgaW4gd3BkYjo6JGZpZWxkX3R5cGVzLgoJICogQHJldHVybiBpbnR8Z
mFsc2UgVGhlIG51bWJlciBvZiByb3dzIGluc2VydGVkLCBvciBmYWxzZSBvbiBlcnJvci4KCSAqLwoJcHVi
bGljIGZ1bmN0aW9uIGluc2VydCggJHRhYmxlLCAkZGF0YSwgJGZvcm1hdCA9IG51bGwgKSB7CgkJcmV0dXJ
uICR0aGlzLT5faW5zZXJ0X3JlcGxhY2VfaGVscGVyKCAkdGFibGUsICRkYXRhLCAkZm9ybWF0LCAnSU5TRV
JUJyApOwoJfQoKCS8qKgoJICogUmVwbGFjZSBhIHJvdyBpbnRvIGEgdGFibGUuCgkgKgoJICogICAgIHdwZ
GI6OnJlcGxhY2UoICd0YWJsZScsIGFycmF5KCAnY29sdW1uJyA9PiAnZm9vJywgJ2ZpZWxkJyA9PiAnYmFy
JyApICkKCSAqICAgICB3cGRiOjpyZXBsYWNlKCAndGFibGUnLCBhcnJheSggJ2NvbHVtbicgPT4gJ2Zvbyc
sICdmaWVsZCcgPT4gMTMzNyApLCBhcnJheSggJyVzJywgJyVkJyApICkKCSAqCgkgKiBAc2luY2UgMy4wLj
AKCSAqIEBzZWUgd3BkYjo6cHJlcGFyZSgpCgkgKiBAc2VlIHdwZGI6OiRmaWVsZF90eXBlcwoJICogQHNlZ
SB3cF9zZXRfd3BkYl92YXJzKCkKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICAgICAgICR0YWJsZSAgVGFibGUg
bmFtZQoJICogQHBhcmFtIGFycmF5ICAgICAgICAkZGF0YSAgIERhdGEgdG8gaW5zZXJ0IChpbiBjb2x1bW4
gPT4gdmFsdWUgcGFpcnMpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdGggJGRhdGEgY2
9sdW1ucyBhbmQgJGRhdGEgdmFsdWVzIHNob3VsZCBiZSAicmF3IiAobmVpdGhlciBzaG91bGQgYmUgU1FMI
GVzY2FwZWQpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRpbmcgYSBudWxsIHZhbHVl
IHdpbGwgY2F1c2UgdGhlIGNvbHVtbiB0byBiZSBzZXQgdG8gTlVMTCAtIHRoZSBjb3JyZXNwb25kaW5nIGZ
vcm1hdCBpcyBpZ25vcmVkIGluIHRoaXMgY2FzZS4KCSAqIEBwYXJhbSBhcnJheXxzdHJpbmcgJGZvcm1hdC
BPcHRpb25hbC4gQW4gYXJyYXkgb2YgZm9ybWF0cyB0byBiZSBtYXBwZWQgdG8gZWFjaCBvZiB0aGUgdmFsd
WUgaW4gJGRhdGEuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc3RyaW5nLCB0aGF0IGZv
cm1hdCB3aWxsIGJlIHVzZWQgZm9yIGFsbCBvZiB0aGUgdmFsdWVzIGluICRkYXRhLgoJICogICAgICAgICA
gICAgICAgICAgICAgICAgICAgIEEgZm9ybWF0IGlzIG9uZSBvZiAnJWQnLCAnJWYnLCAnJXMnIChpbnRlZ2
VyLCBmbG9hdCwgc3RyaW5nKS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBvbWl0dGVkL
CBhbGwgdmFsdWVzIGluICRkYXRhIHdpbGwgYmUgdHJlYXRlZCBhcyBzdHJpbmdzIHVubGVzcyBvdGhlcndp
c2Ugc3BlY2lmaWVkIGluIHdwZGI6OiRmaWVsZF90eXBlcy4KCSAqIEByZXR1cm4gaW50fGZhbHNlIFRoZSB
udW1iZXIgb2Ygcm93cyBhZmZlY3RlZCwgb3IgZmFsc2Ugb24gZXJyb3IuCgkgKi8KCXB1YmxpYyBmdW5jdG
lvbiByZXBsYWNlKCAkdGFibGUsICRkYXRhLCAkZm9ybWF0ID0gbnVsbCApIHsKCQlyZXR1cm4gJHRoaXMtP
l9pbnNlcnRfcmVwbGFjZV9oZWxwZXIoICR0YWJsZSwgJGRhdGEsICRmb3JtYXQsICdSRVBMQUNFJyApOwoJ
fQoKCS8qKgoJICogSGVscGVyIGZ1bmN0aW9uIGZvciBpbnNlcnQgYW5kIHJlcGxhY2UuCgkgKgoJICogUnV
ucyBhbiBpbnNlcnQgb3IgcmVwbGFjZSBxdWVyeSBiYXNlZCBvbiAkdHlwZSBhcmd1bWVudC4KCSAqCgkgKi
BAYWNjZXNzIHByaXZhdGUKCSAqIEBzaW5jZSAzLjAuMAoJICogQHNlZSB3cGRiOjpwcmVwYXJlKCkKCSAqI
EBzZWUgd3BkYjo6JGZpZWxkX3R5cGVzCgkgKiBAc2VlIHdwX3NldF93cGRiX3ZhcnMoKQoJICoKCSAqIEBw
YXJhbSBzdHJpbmcgICAgICAgJHRhYmxlICBUYWJsZSBuYW1lCgkgKiBAcGFyYW0gYXJyYXkgICAgICAgICR
kYXRhICAgRGF0YSB0byBpbnNlcnQgKGluIGNvbHVtbiA9PiB2YWx1ZSBwYWlycykuCgkgKiAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgQm90aCAkZGF0YSBjb2x1bW5zIGFuZCAkZGF0YSB2YWx1ZXMgc2hvdWxkI
GJlICJyYXciIChuZWl0aGVyIHNob3VsZCBiZSBTUUwgZXNjYXBlZCkuCgkgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2VuZGluZyBhIG51bGwgdmFsdWUgd2lsbCBjYXVzZSB0aGUgY29sdW1uIHRvIGJlIHN
ldCB0byBOVUxMIC0gdGhlIGNvcnJlc3BvbmRpbmcgZm9ybWF0IGlzIGlnbm9yZWQgaW4gdGhpcyBjYXNlLg
oJICogQHBhcmFtIGFycmF5fHN0cmluZyAkZm9ybWF0IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBmb3JtYXRzI
HRvIGJlIG1hcHBlZCB0byBlYWNoIG9mIHRoZSB2YWx1ZSBpbiAkZGF0YS4KCSAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJZiBzdHJpbmcsIHRoYXQgZm9ybWF0IHdpbGwgYmUgdXNlZCBmb3IgYWxsIG9mIHR
oZSB2YWx1ZXMgaW4gJGRhdGEuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBmb3JtYXQgaX
Mgb25lIG9mICclZCcsICclZicsICclcycgKGludGVnZXIsIGZsb2F0LCBzdHJpbmcpLgoJICogICAgICAgI
CAgICAgICAgICAgICAgICAgICAgIElmIG9taXR0ZWQsIGFsbCB2YWx1ZXMgaW4gJGRhdGEgd2lsbCBiZSB0
cmVhdGVkIGFzIHN0cmluZ3MgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgaW4gd3BkYjo6JGZpZWxkX3R
5cGVzLgoJICogQHBhcmFtIHN0cmluZyAkdHlwZSAgICAgICAgIE9wdGlvbmFsLiBXaGF0IHR5cGUgb2Ygb3
BlcmF0aW9uIGlzIHRoaXM/IElOU0VSVCBvciBSRVBMQUNFLiBEZWZhdWx0cyB0byBJTlNFUlQuCgkgKiBAc
mV0dXJuIGludHxmYWxzZSBUaGUgbnVtYmVyIG9mIHJvd3MgYWZmZWN0ZWQsIG9yIGZhbHNlIG9uIGVycm9y
LgoJICovCglmdW5jdGlvbiBfaW5zZXJ0X3JlcGxhY2VfaGVscGVyKCAkdGFibGUsICRkYXRhLCAkZm9ybWF
0ID0gbnVsbCwgJHR5cGUgPSAnSU5TRVJUJyApIHsKCQkkdGhpcy0+aW5zZXJ0X2lkID0gMDsKCgkJaWYgKC
AhIGluX2FycmF5KCBzdHJ0b3VwcGVyKCAkdHlwZSApLCBhcnJheSggJ1JFUExBQ0UnLCAnSU5TRVJUJyApI
CkgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSRkYXRhID0gJHRoaXMtPnByb2Nlc3NfZmllbGRzKCAk
dGFibGUsICRkYXRhLCAkZm9ybWF0ICk7CgkJaWYgKCBmYWxzZSA9PT0gJGRhdGEgKSB7CgkJCXJldHVybiB
mYWxzZTsKCQl9CgoJCSRmb3JtYXRzID0gJHZhbHVlcyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoICRkYXRhIG
FzICR2YWx1ZSApIHsKCQkJaWYgKCBpc19udWxsKCAkdmFsdWVbJ3ZhbHVlJ10gKSApIHsKCQkJCSRmb3JtY
XRzW10gPSAnTlVMTCc7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJGZvcm1hdHNbXSA9ICR2YWx1ZVsnZm9y
bWF0J107CgkJCSR2YWx1ZXNbXSAgPSAkdmFsdWVbJ3ZhbHVlJ107CgkJfQoKCQkkZmllbGRzICA9ICdgJyA
uIGltcGxvZGUoICdgLCBgJywgYXJyYXlfa2V5cyggJGRhdGEgKSApIC4gJ2AnOwoJCSRmb3JtYXRzID0gaW
1wbG9kZSggJywgJywgJGZvcm1hdHMgKTsKCgkJJHNxbCA9ICIkdHlwZSBJTlRPIGAkdGFibGVgICgkZmllb
GRzKSBWQUxVRVMgKCRmb3JtYXRzKSI7CgoJCSR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gZmFsc2U7
CgkJcmV0dXJuICR0aGlzLT5xdWVyeSggJHRoaXMtPnByZXBhcmUoICRzcWwsICR2YWx1ZXMgKSApOwoJfQo
KCS8qKgoJICogVXBkYXRlIGEgcm93IGluIHRoZSB0YWJsZQoJICoKCSAqICAgICB3cGRiOjp1cGRhdGUoIC
d0YWJsZScsIGFycmF5KCAnY29sdW1uJyA9PiAnZm9vJywgJ2ZpZWxkJyA9PiAnYmFyJyApLCBhcnJheSggJ
0lEJyA9PiAxICkgKQoJICogICAgIHdwZGI6OnVwZGF0ZSggJ3RhYmxlJywgYXJyYXkoICdjb2x1bW4nID0+
ICdmb28nLCAnZmllbGQnID0+IDEzMzcgKSwgYXJyYXkoICdJRCcgPT4gMSApLCBhcnJheSggJyVzJywgJyV
kJyApLCBhcnJheSggJyVkJyApICkKCSAqCgkgKiBAc2luY2UgMi41LjAKCSAqIEBzZWUgd3BkYjo6cHJlcG
FyZSgpCgkgKiBAc2VlIHdwZGI6OiRmaWVsZF90eXBlcwoJICogQHNlZSB3cF9zZXRfd3BkYl92YXJzKCkKC
SAqCgkgKiBAcGFyYW0gc3RyaW5nICAgICAgICR0YWJsZSAgICAgICAgVGFibGUgbmFtZQoJICogQHBhcmFt
IGFycmF5ICAgICAgICAkZGF0YSAgICAgICAgIERhdGEgdG8gdXBkYXRlIChpbiBjb2x1bW4gPT4gdmFsdWU
gcGFpcnMpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdGggJGRhdGEgY29sdW
1ucyBhbmQgJGRhdGEgdmFsdWVzIHNob3VsZCBiZSAicmF3IiAobmVpdGhlciBzaG91bGQgYmUgU1FMIGVzY
2FwZWQpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRpbmcgYSBudWxsIHZh
bHVlIHdpbGwgY2F1c2UgdGhlIGNvbHVtbiB0byBiZSBzZXQgdG8gTlVMTCAtIHRoZSBjb3JyZXNwb25kaW5
nCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IGlzIGlnbm9yZWQgaW4gdG
hpcyBjYXNlLgoJICogQHBhcmFtIGFycmF5ICAgICAgICAkd2hlcmUgICAgICAgIEEgbmFtZWQgYXJyYXkgb
2YgV0hFUkUgY2xhdXNlcyAoaW4gY29sdW1uID0+IHZhbHVlIHBhaXJzKS4KCSAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSBjbGF1c2VzIHdpbGwgYmUgam9pbmVkIHdpdGggQU5Ecy4
KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3RoICR3aGVyZSBjb2x1bW5zIGFuZC
Akd2hlcmUgdmFsdWVzIHNob3VsZCBiZSAicmF3I
i4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kaW5nIGEgbnVsbCB2YWx1ZSB3
aWxsIGNyZWF0ZSBhbiBJUyBOVUxMIGNvbXBhcmlzb24gLSB0aGUgY29ycmVzcG9uZGluZyBmb3JtYXQgd2l
sbCBiZSBpZ25vcmVkIGluIHRoaXMgY2FzZS4KCSAqIEBwYXJhbSBhcnJheXxzdHJpbmcgJGZvcm1hdCAgIC
AgICBPcHRpb25hbC4gQW4gYXJyYXkgb2YgZm9ybWF0cyB0byBiZSBtYXBwZWQgdG8gZWFjaCBvZiB0aGUgd
mFsdWVzIGluICRkYXRhLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHN0cmlu
ZywgdGhhdCBmb3JtYXQgd2lsbCBiZSB1c2VkIGZvciBhbGwgb2YgdGhlIHZhbHVlcyBpbiAkZGF0YS4KCSA
qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGZvcm1hdCBpcyBvbmUgb2YgJyVkJywgJy
VmJywgJyVzJyAoaW50ZWdlciwgZmxvYXQsIHN0cmluZykuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgSWYgb21pdHRlZCwgYWxsIHZhbHVlcyBpbiAkZGF0YSB3aWxsIGJlIHRyZWF0ZWQgYXMg
c3RyaW5ncyB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCBpbiB3cGRiOjokZmllbGRfdHlwZXMuCgkgKiB
AcGFyYW0gYXJyYXl8c3RyaW5nICR3aGVyZV9mb3JtYXQgT3B0aW9uYWwuIEFuIGFycmF5IG9mIGZvcm1hdH
MgdG8gYmUgbWFwcGVkIHRvIGVhY2ggb2YgdGhlIHZhbHVlcyBpbiAkd2hlcmUuCgkgKiAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgSWYgc3RyaW5nLCB0aGF0IGZvcm1hdCB3aWxsIGJlIHVzZWQgZm9y
IGFsbCBvZiB0aGUgaXRlbXMgaW4gJHdoZXJlLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgIEEgZm9ybWF0IGlzIG9uZSBvZiAnJWQnLCAnJWYnLCAnJXMnIChpbnRlZ2VyLCBmbG9hdCwgc3RyaW
5nKS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBvbWl0dGVkLCBhbGwgdmFsd
WVzIGluICR3aGVyZSB3aWxsIGJlIHRyZWF0ZWQgYXMgc3RyaW5ncy4KCSAqIEByZXR1cm4gaW50fGZhbHNl
IFRoZSBudW1iZXIgb2Ygcm93cyB1cGRhdGVkLCBvciBmYWxzZSBvbiBlcnJvci4KCSAqLwoJcHVibGljIGZ
1bmN0aW9uIHVwZGF0ZSggJHRhYmxlLCAkZGF0YSwgJHdoZXJlLCAkZm9ybWF0ID0gbnVsbCwgJHdoZXJlX2
Zvcm1hdCA9IG51bGwgKSB7CgkJaWYgKCAhIGlzX2FycmF5KCAkZGF0YSApIHx8ICEgaXNfYXJyYXkoICR3a
GVyZSApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkkZGF0YSA9ICR0aGlzLT5wcm9jZXNzX2ZpZWxk
cyggJHRhYmxlLCAkZGF0YSwgJGZvcm1hdCApOwoJCWlmICggZmFsc2UgPT09ICRkYXRhICkgewoJCQlyZXR
1cm4gZmFsc2U7CgkJfQoJCSR3aGVyZSA9ICR0aGlzLT5wcm9jZXNzX2ZpZWxkcyggJHRhYmxlLCAkd2hlcm
UsICR3aGVyZV9mb3JtYXQgKTsKCQlpZiAoIGZhbHNlID09PSAkd2hlcmUgKSB7CgkJCXJldHVybiBmYWxzZ
TsKCQl9CgoJCSRmaWVsZHMgPSAkY29uZGl0aW9ucyA9ICR2YWx1ZXMgPSBhcnJheSgpOwoJCWZvcmVhY2gg
KCAkZGF0YSBhcyAkZmllbGQgPT4gJHZhbHVlICkgewoJCQlpZiAoIGlzX251bGwoICR2YWx1ZVsndmFsdWU
nXSApICkgewoJCQkJJGZpZWxkc1tdID0gImAkZmllbGRgID0gTlVMTCI7CgkJCQljb250aW51ZTsKCQkJfQ
oKCQkJJGZpZWxkc1tdID0gImAkZmllbGRgID0gIiAuICR2YWx1ZVsnZm9ybWF0J107CgkJCSR2YWx1ZXNbX
SA9ICR2YWx1ZVsndmFsdWUnXTsKCQl9CgkJZm9yZWFjaCAoICR3aGVyZSBhcyAkZmllbGQgPT4gJHZhbHVl
ICkgewoJCQlpZiAoIGlzX251bGwoICR2YWx1ZVsndmFsdWUnXSApICkgewoJCQkJJGNvbmRpdGlvbnNbXSA
9ICJgJGZpZWxkYCBJUyBOVUxMIjsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkkY29uZGl0aW9uc1tdID0gIm
AkZmllbGRgID0gIiAuICR2YWx1ZVsnZm9ybWF0J107CgkJCSR2YWx1ZXNbXSA9ICR2YWx1ZVsndmFsdWUnX
TsKCQl9CgoJCSRmaWVsZHMgPSBpbXBsb2RlKCAnLCAnLCAkZmllbGRzICk7CgkJJGNvbmRpdGlvbnMgPSBp
bXBsb2RlKCAnIEFORCAnLCAkY29uZGl0aW9ucyApOwoKCQkkc3FsID0gIlVQREFURSBgJHRhYmxlYCBTRVQ
gJGZpZWxkcyBXSEVSRSAkY29uZGl0aW9ucyI7CgoJCSR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gZm
Fsc2U7CgkJcmV0dXJuICR0aGlzLT5xdWVyeSggJHRoaXMtPnByZXBhcmUoICRzcWwsICR2YWx1ZXMgKSApO
woJfQoKCS8qKgoJICogRGVsZXRlIGEgcm93IGluIHRoZSB0YWJsZQoJICoKCSAqICAgICB3cGRiOjpkZWxl
dGUoICd0YWJsZScsIGFycmF5KCAnSUQnID0+IDEgKSApCgkgKiAgICAgd3BkYjo6ZGVsZXRlKCAndGFibGU
nLCBhcnJheSggJ0lEJyA9PiAxICksIGFycmF5KCAnJWQnICkgKQoJICoKCSAqIEBzaW5jZSAzLjQuMAoJIC
ogQHNlZSB3cGRiOjpwcmVwYXJlKCkKCSAqIEBzZWUgd3BkYjo6JGZpZWxkX3R5cGVzCgkgKiBAc2VlIHdwX
3NldF93cGRiX3ZhcnMoKQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgJHRhYmxlICAgICAgICBUYWJs
ZSBuYW1lCgkgKiBAcGFyYW0gYXJyYXkgICAgICAgICR3aGVyZSAgICAgICAgQSBuYW1lZCBhcnJheSBvZiB
XSEVSRSBjbGF1c2VzIChpbiBjb2x1bW4gPT4gdmFsdWUgcGFpcnMpLgoJICogICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgIE11bHRpcGxlIGNsYXVzZXMgd2lsbCBiZSBqb2luZWQgd2l0aCBBTkRzLgoJI
CogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdGggJHdoZXJlIGNvbHVtbnMgYW5kICR3
aGVyZSB2YWx1ZXMgc2hvdWxkIGJlICJyYXciLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgIFNlbmRpbmcgYSBudWxsIHZhbHVlIHdpbGwgY3JlYXRlIGFuIElTIE5VTEwgY29tcGFyaXNvbiAtIH
RoZSBjb3JyZXNwb25kaW5nIGZvcm1hdCB3aWxsIGJlIGlnbm9yZWQgaW4gdGhpcyBjYXNlLgoJICogQHBhc
mFtIGFycmF5fHN0cmluZyAkd2hlcmVfZm9ybWF0IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBmb3JtYXRzIHRv
IGJlIG1hcHBlZCB0byBlYWNoIG9mIHRoZSB2YWx1ZXMgaW4gJHdoZXJlLgoJICogICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgIElmIHN0cmluZywgdGhhdCBmb3JtYXQgd2lsbCBiZSB1c2VkIGZvciBhbG
wgb2YgdGhlIGl0ZW1zIGluICR3aGVyZS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CBBIGZvcm1hdCBpcyBvbmUgb2YgJyVkJywgJyVmJywgJyVzJyAoaW50ZWdlciwgZmxvYXQsIHN0cmluZyku
CgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgb21pdHRlZCwgYWxsIHZhbHVlcyB
pbiAkd2hlcmUgd2lsbCBiZSB0cmVhdGVkIGFzIHN0cmluZ3MgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZW
QgaW4gd3BkYjo6JGZpZWxkX3R5cGVzLgoJICogQHJldHVybiBpbnR8ZmFsc2UgVGhlIG51bWJlciBvZiByb
3dzIHVwZGF0ZWQsIG9yIGZhbHNlIG9uIGVycm9yLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCAk
dGFibGUsICR3aGVyZSwgJHdoZXJlX2Zvcm1hdCA9IG51bGwgKSB7CgkJaWYgKCAhIGlzX2FycmF5KCAkd2h
lcmUgKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJHdoZXJlID0gJHRoaXMtPnByb2Nlc3NfZmllbG
RzKCAkdGFibGUsICR3aGVyZSwgJHdoZXJlX2Zvcm1hdCApOwoJCWlmICggZmFsc2UgPT09ICR3aGVyZSApI
HsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJGNvbmRpdGlvbnMgPSAkdmFsdWVzID0gYXJyYXkoKTsKCQlm
b3JlYWNoICggJHdoZXJlIGFzICRmaWVsZCA9PiAkdmFsdWUgKSB7CgkJCWlmICggaXNfbnVsbCggJHZhbHV
lWyd2YWx1ZSddICkgKSB7CgkJCQkkY29uZGl0aW9uc1tdID0gImAkZmllbGRgIElTIE5VTEwiOwoJCQkJY2
9udGludWU7CgkJCX0KCgkJCSRjb25kaXRpb25zW10gPSAiYCRmaWVsZGAgPSAiIC4gJHZhbHVlWydmb3JtY
XQnXTsKCQkJJHZhbHVlc1tdID0gJHZhbHVlWyd2YWx1ZSddOwoJCX0KCgkJJGNvbmRpdGlvbnMgPSBpbXBs
b2RlKCAnIEFORCAnLCAkY29uZGl0aW9ucyApOwoKCQkkc3FsID0gIkRFTEVURSBGUk9NIGAkdGFibGVgIFd
IRVJFICRjb25kaXRpb25zIjsKCgkJJHRoaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnkgPSBmYWxzZTsKCQlyZX
R1cm4gJHRoaXMtPnF1ZXJ5KCAkdGhpcy0+cHJlcGFyZSggJHNxbCwgJHZhbHVlcyApICk7Cgl9CgoJLyoqC
gkgKiBQcm9jZXNzZXMgYXJyYXlzIG9mIGZpZWxkL3ZhbHVlIHBhaXJzIGFuZCBmaWVsZCBmb3JtYXRzLgoJ
ICoKCSAqIFRoaXMgaXMgYSBoZWxwZXIgbWV0aG9kIGZvciB3cGRiJ3MgQ1JVRCBtZXRob2RzLCB3aGljaCB
0YWtlIGZpZWxkL3ZhbHVlCgkgKiBwYWlycyBmb3IgaW5zZXJ0cywgdXBkYXRlcywgYW5kIHdoZXJlIGNsYX
VzZXMuIFRoaXMgbWV0aG9kIGZpcnN0IHBhaXJzCgkgKiBlYWNoIHZhbHVlIHdpdGggYSBmb3JtYXQuIFRoZ
W4gaXQgZGV0ZXJtaW5lcyB0aGUgY2hhcnNldCBvZiB0aGF0IGZpZWxkLAoJICogdXNpbmcgdGhhdCB0byBk
ZXRlcm1pbmUgaWYgYW55IGludmFsaWQgdGV4dCB3b3VsZCBiZSBzdHJpcHBlZC4gSWYgdGV4dCBpcwoJICo
gc3RyaXBwZWQsIHRoZW4gZmllbGQgcHJvY2Vzc2luZyBpcyByZWplY3RlZCBhbmQgdGhlIHF1ZXJ5IGZhaW
xzLgoJICoKCSAqIEBzaW5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gc
3RyaW5nICR0YWJsZSAgVGFibGUgbmFtZS4KCSAqIEBwYXJhbSBhcnJheSAgJGRhdGEgICBGaWVsZC92YWx1
ZSBwYWlyLgoJICogQHBhcmFtIG1peGVkICAkZm9ybWF0IEZvcm1hdCBmb3IgZWFjaCBmaWVsZC4KCSAqIEB
yZXR1cm4gYXJyYXl8ZmFsc2UgUmV0dXJucyBhbiBhcnJheSBvZiBmaWVsZHMgdGhhdCBjb250YWluIHBhaX
JlZCB2YWx1ZXMKCSAqICAgICAgICAgICAgICAgICAgICBhbmQgZm9ybWF0cy4gUmV0dXJucyBmYWxzZSBmb
3IgaW52YWxpZCB2YWx1ZXMuCgkgKi8KCXByb3RlY3RlZCBmdW5jdGlvbiBwcm9jZXNzX2ZpZWxkcyggJHRh
YmxlLCAkZGF0YSwgJGZvcm1hdCApIHsKCQkkZGF0YSA9ICR0aGlzLT5wcm9jZXNzX2ZpZWxkX2Zvcm1hdHM
oICRkYXRhLCAkZm9ybWF0ICk7CgkJaWYgKCBmYWxzZSA9PT0gJGRhdGEgKSB7CgkJCXJldHVybiBmYWxzZT
sKCQl9CgoJCSRkYXRhID0gJHRoaXMtPnByb2Nlc3NfZmllbGRfY2hhcnNldHMoICRkYXRhLCAkdGFibGUgK
TsKCQlpZiAoIGZhbHNlID09PSAkZGF0YSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJGRhdGEgPSAk
dGhpcy0+cHJvY2Vzc19maWVsZF9sZW5ndGhzKCAkZGF0YSwgJHRhYmxlICk7CgkJaWYgKCBmYWxzZSA9PT0
gJGRhdGEgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSRjb252ZXJ0ZWRfZGF0YSA9ICR0aGlzLT5zdH
JpcF9pbnZhbGlkX3RleHQoICRkYXRhICk7CgoJCWlmICggJGRhdGEgIT09ICRjb252ZXJ0ZWRfZGF0YSApI
HsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJcmV0dXJuICRkYXRhOwoJfQoKCS8qKgoJICogUHJlcGFyZXMg
YXJyYXlzIG9mIHZhbHVlL2Zvcm1hdCBwYWlycyBhcyBwYXNzZWQgdG8gd3BkYiBDUlVEIG1ldGhvZHMuCgk
gKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBhcnJheS
AkZGF0YSAgIEFycmF5IG9mIGZpZWxkcyB0byB2YWx1ZXMuCgkgKiBAcGFyYW0gbWl4ZWQgJGZvcm1hdCBGb
3JtYXRzIHRvIGJlIG1hcHBlZCB0byB0aGUgdmFsdWVzIGluICRkYXRhLgoJICogQHJldHVybiBhcnJheSBB
cnJheSwga2V5ZWQgYnkgZmllbGQgbmFtZXMgd2l0aCB2YWx1ZXMgYmVpbmcgYW4gYXJyYXkKCSAqICAgICA
gICAgICAgICAgb2YgJ3ZhbHVlJyBhbmQgJ2Zvcm1hdCcga2V5cy4KCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW
9uIHByb2Nlc3NfZmllbGRfZm9ybWF0cyggJGRhdGEsICRmb3JtYXQgKSB7CgkJJGZvcm1hdHMgPSAkb3JpZ
2luYWxfZm9ybWF0cyA9IChhcnJheSkgJGZvcm1hdDsKCgkJZm9yZWFjaCAoICRkYXRhIGFzICRmaWVsZCA9
PiAkdmFsdWUgKSB7CgkJCSR2YWx1ZSA9IGFycmF5KAoJCQkJJ3ZhbHVlJyAgPT4gJHZhbHVlLAoJCQkJJ2Z
vcm1hdCcgPT4gJyVzJywKCQkJKTsKCgkJCWlmICggISBlbXB0eSggJGZvcm1hdCApICkgewoJCQkJJHZhbH
VlWydmb3JtYXQnXSA9IGFycmF5X3NoaWZ0KCAkZm9ybWF0cyApOwoJCQkJaWYgKCAhICR2YWx1ZVsnZm9yb
WF0J10gKSB7CgkJCQkJJHZhbHVlWydmb3JtYXQnXSA9IHJlc2V0KCAkb3JpZ2luYWxfZm9ybWF0cyApOwoJ
CQkJfQoJCQl9IGVsc2VpZiAoIGlzc2V0KCAkdGhpcy0+ZmllbGRfdHlwZXNbICRmaWVsZCBdICkgKSB7Cgk
JCQkkdmFsdWVbJ2Zvcm1hdCddID0gJHRoaXMtPmZpZWxkX3R5cGVzWyAkZmllbGQgXTsKCQkJfQoKCQkJJG
RhdGFbICRmaWVsZCBdID0gJHZhbHVlOwoJCX0KCgkJcmV0dXJuICRkYXRhOwoJfQoKCS8qKgoJICogQWRkc
yBmaWVsZCBjaGFyc2V0cyB0byBmaWVsZC92YWx1ZS9mb3JtYXQgYXJyYXlzIGdlbmVyYXRlZCBieQoJICog
dGhlIHdwZGI6OnByb2Nlc3NfZmllbGRfZm9ybWF0cygpIG1ldGhvZC4KCSAqCgkgKiBAc2luY2UgNC4yLjA
KCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKgoJICogQHBhcmFtIGFycmF5ICAkZGF0YSAgQXMgaXQgY29tZX
MgZnJvbSB0aGUgd3BkYjo6cHJvY2Vzc19maWVsZF9mb3JtYXRzKCkgbWV0aG9kLgoJICogQHBhcmFtIHN0c
mluZyAkdGFibGUgVGFibGUgbmFtZS4KCSAqIEByZXR1cm4gYXJyYXl8ZmFsc2UgVGhlIHNhbWUgYXJyYXkg
YXMgJGRhdGEgd2l0aCBhZGRpdGlvbmFsICdjaGFyc2V0JyBrZXlzLgoJICovCglwcm90ZWN0ZWQgZnVuY3R
pb24gcHJvY2Vzc19maWVsZF9jaGFyc2V0cyggJGRhdGEsICR0YWJsZSApIHsKCQlmb3JlYWNoICggJGRhdG
EgYXMgJGZpZWxkID0+ICR2YWx1ZSApIHsKCQkJaWYgKCAnJWQnID09PSAkdmFsdWVbJ2Zvcm1hdCddIHx8I
CclZicgPT09ICR2YWx1ZVsnZm9ybWF0J10gKSB7CgkJCQkvKgoJCQkJICogV2UgY2FuIHNraXAgdGhpcyBm
aWVsZCBpZiB3ZSBrbm93IGl0IGlzbid0IGEgc3RyaW5nLgoJCQkJICogVGhpcyBjaGVja3MgJWQvJWYgdmV
yc3VzICEgJXMgYmVjYXVzZSBpdHMgc3ByaW50ZigpIGNvdWxkIHRha2UgbW9yZS4KCQkJCSAqLwoJCQkJJH
ZhbHVlWydjaGFyc2V0J10gPSBmYWxzZTsKCQkJfSBlbHNlIHsKCQkJCSR2YWx1ZVsnY2hhcnNldCddID0gJ
HRoaXMtPmdldF9jb2xfY2hhcnNldCggJHRhYmxlLCAkZmllbGQgKTsKCQkJCWlmICggaXNfd3BfZXJyb3Io
ICR2YWx1ZVsnY2hhcnNldCddICkgKSB7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgoJCQkkZGF
0YVsgJGZpZWxkIF0gPSAkdmFsdWU7CgkJfQoKCQlyZXR1cm4gJGRhdGE7Cgl9CgoJLyoqCgkgKiBGb3Igc3
RyaW5nIGZpZWxkcywgcmVjb3JkIHRoZSBtYXhpbXVtIHN0cmluZyBsZW5ndGggdGhhdCBmaWVsZCBjYW4gc
2FmZWx5IHNhdmUuCgkgKgoJICogQHNpbmNlIDQu
Mi4xCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBhcnJheSAgJGRhdGEgIEFzIGl0IGN
vbWVzIGZyb20gdGhlIHdwZGI6OnByb2Nlc3NfZmllbGRfY2hhcnNldHMoKSBtZXRob2QuCgkgKiBAcGFyYW
0gc3RyaW5nICR0YWJsZSBUYWJsZSBuYW1lLgoJICogQHJldHVybiBhcnJheXxmYWxzZSBUaGUgc2FtZSBhc
nJheSBhcyAkZGF0YSB3aXRoIGFkZGl0aW9uYWwgJ2xlbmd0aCcga2V5cywgb3IgZmFsc2UgaWYKCSAqICAg
ICAgICAgICAgICAgICAgICAgYW55IG9mIHRoZSB2YWx1ZXMgd2VyZSB0b28gbG9uZyBmb3IgdGhlaXIgY29
ycmVzcG9uZGluZyBmaWVsZC4KCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIHByb2Nlc3NfZmllbGRfbGVuZ3
RocyggJGRhdGEsICR0YWJsZSApIHsKCQlmb3JlYWNoICggJGRhdGEgYXMgJGZpZWxkID0+ICR2YWx1ZSApI
HsKCQkJaWYgKCAnJWQnID09PSAkdmFsdWVbJ2Zvcm1hdCddIHx8ICclZicgPT09ICR2YWx1ZVsnZm9ybWF0
J10gKSB7CgkJCQkvKgoJCQkJICogV2UgY2FuIHNraXAgdGhpcyBmaWVsZCBpZiB3ZSBrbm93IGl0IGlzbid
0IGEgc3RyaW5nLgoJCQkJICogVGhpcyBjaGVja3MgJWQvJWYgdmVyc3VzICEgJXMgYmVjYXVzZSBpdHMgc3
ByaW50ZigpIGNvdWxkIHRha2UgbW9yZS4KCQkJCSAqLwoJCQkJJHZhbHVlWydsZW5ndGgnXSA9IGZhbHNlO
woJCQl9IGVsc2UgewoJCQkJJHZhbHVlWydsZW5ndGgnXSA9ICR0aGlzLT5nZXRfY29sX2xlbmd0aCggJHRh
YmxlLCAkZmllbGQgKTsKCQkJCWlmICggaXNfd3BfZXJyb3IoICR2YWx1ZVsnbGVuZ3RoJ10gKSApIHsKCQk
JCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCSRkYXRhWyAkZmllbGQgXSA9ICR2YWx1ZTsKCQl9Cg
oJCXJldHVybiAkZGF0YTsKCX0KCgkvKioKCSAqIFJldHJpZXZlIG9uZSB2YXJpYWJsZSBmcm9tIHRoZSBkY
XRhYmFzZS4KCSAqCgkgKiBFeGVjdXRlcyBhIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUgdmFsdWUgZnJv
bSB0aGUgU1FMIHJlc3VsdC4KCSAqIElmIHRoZSBTUUwgcmVzdWx0IGNvbnRhaW5zIG1vcmUgdGhhbiBvbmU
gY29sdW1uIGFuZC9vciBtb3JlIHRoYW4gb25lIHJvdywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB2YW
x1ZSBpbiB0aGUgY29sdW1uIGFuZCByb3cgc3BlY2lmaWVkLgoJICogSWYgJHF1ZXJ5IGlzIG51bGwsIHRoa
XMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgaW4gdGhlIHNwZWNpZmllZCBjb2x1bW4gYW5kIHJvdyBm
cm9tIHRoZSBwcmV2aW91cyBTUUwgcmVzdWx0LgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmF
tIHN0cmluZ3xudWxsICRxdWVyeSBPcHRpb25hbC4gU1FMIHF1ZXJ5LiBEZWZhdWx0cyB0byBudWxsLCB1c2
UgdGhlIHJlc3VsdCBmcm9tIHRoZSBwcmV2aW91cyBxdWVyeS4KCSAqIEBwYXJhbSBpbnQgICAgICAgICAke
CAgICAgT3B0aW9uYWwuIENvbHVtbiBvZiB2YWx1ZSB0byByZXR1cm4uIEluZGV4ZWQgZnJvbSAwLgoJICog
QHBhcmFtIGludCAgICAgICAgICR5ICAgICBPcHRpb25hbC4gUm93IG9mIHZhbHVlIHRvIHJldHVybi4gSW5
kZXhlZCBmcm9tIDAuCgkgKiBAcmV0dXJuIHN0cmluZ3xudWxsIERhdGFiYXNlIHF1ZXJ5IHJlc3VsdCAoYX
Mgc3RyaW5nKSwgb3IgbnVsbCBvbiBmYWlsdXJlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfdmFyKCAkc
XVlcnkgPSBudWxsLCAkeCA9IDAsICR5ID0gMCApIHsKCQkkdGhpcy0+ZnVuY19jYWxsID0gIlwkZGItPmdl
dF92YXIoXCIkcXVlcnlcIiwgJHgsICR5KSI7CgoJCWlmICggJHRoaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnk
gJiYgJHRoaXMtPmNoZWNrX3NhZmVfY29sbGF0aW9uKCAkcXVlcnkgKSApIHsKCQkJJHRoaXMtPmNoZWNrX2
N1cnJlbnRfcXVlcnkgPSBmYWxzZTsKCQl9CgoJCWlmICggJHF1ZXJ5ICkgewoJCQkkdGhpcy0+cXVlcnkoI
CRxdWVyeSApOwoJCX0KCgkJLy8gRXh0cmFjdCB2YXIgb3V0IG9mIGNhY2hlZCByZXN1bHRzIGJhc2VkIHgs
eSB2YWxzCgkJaWYgKCAhZW1wdHkoICR0aGlzLT5sYXN0X3Jlc3VsdFskeV0gKSApIHsKCQkJJHZhbHVlcyA
9IGFycmF5X3ZhbHVlcyggZ2V0X29iamVjdF92YXJzKCAkdGhpcy0+bGFzdF9yZXN1bHRbJHldICkgKTsKCQ
l9CgoJCS8vIElmIHRoZXJlIGlzIGEgdmFsdWUgcmV0dXJuIGl0IGVsc2UgcmV0dXJuIG51bGwKCQlyZXR1c
m4gKCBpc3NldCggJHZhbHVlc1skeF0gKSAmJiAkdmFsdWVzWyR4XSAhPT0gJycgKSA/ICR2YWx1ZXNbJHhd
IDogbnVsbDsKCX0KCgkvKioKCSAqIFJldHJpZXZlIG9uZSByb3cgZnJvbSB0aGUgZGF0YWJhc2UuCgkgKgo
JICogRXhlY3V0ZXMgYSBTUUwgcXVlcnkgYW5kIHJldHVybnMgdGhlIHJvdyBmcm9tIHRoZSBTUUwgcmVzdW
x0LgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmFtIHN0cmluZ3xudWxsICRxdWVyeSAgU1FMI
HF1ZXJ5LgoJICogQHBhcmFtIHN0cmluZyAgICAgICRvdXRwdXQgT3B0aW9uYWwuIG9uZSBvZiBBUlJBWV9B
IHwgQVJSQVlfTiB8IE9CSkVDVCBjb25zdGFudHMuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB
SZXR1cm4gYW4gYXNzb2NpYXRpdmUgYXJyYXkgKGNvbHVtbiA9PiB2YWx1ZSwgLi4uKSwKCSAqICAgICAgIC
AgICAgICAgICAgICAgICAgICAgIGEgbnVtZXJpY2FsbHkgaW5kZXhlZCBhcnJheSAoMCA9PiB2YWx1ZSwgL
i4uKSBvcgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gb2JqZWN0ICggLT5jb2x1bW4gPSB2
YWx1ZSApLCByZXNwZWN0aXZlbHkuCgkgKiBAcGFyYW0gaW50ICAgICAgICAgJHkgICAgICBPcHRpb25hbC4
gUm93IHRvIHJldHVybi4gSW5kZXhlZCBmcm9tIDAuCgkgKiBAcmV0dXJuIGFycmF5fG9iamVjdHxudWxsfH
ZvaWQgRGF0YWJhc2UgcXVlcnkgcmVzdWx0IGluIGZvcm1hdCBzcGVjaWZpZWQgYnkgJG91dHB1dCBvciBud
WxsIG9uIGZhaWx1cmUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldF9yb3coICRxdWVyeSA9IG51bGwsICRv
dXRwdXQgPSBPQkpFQ1QsICR5ID0gMCApIHsKCQkkdGhpcy0+ZnVuY19jYWxsID0gIlwkZGItPmdldF9yb3c
oXCIkcXVlcnlcIiwkb3V0cHV0LCR5KSI7CgoJCWlmICggJHRoaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnkgJi
YgJHRoaXMtPmNoZWNrX3NhZmVfY29sbGF0aW9uKCAkcXVlcnkgKSApIHsKCQkJJHRoaXMtPmNoZWNrX2N1c
nJlbnRfcXVlcnkgPSBmYWxzZTsKCQl9CgoJCWlmICggJHF1ZXJ5ICkgewoJCQkkdGhpcy0+cXVlcnkoICRx
dWVyeSApOwoJCX0gZWxzZSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJaWYgKCAhaXNzZXQoICR0aGlzLT5
sYXN0X3Jlc3VsdFskeV0gKSApCgkJCXJldHVybiBudWxsOwoKCQlpZiAoICRvdXRwdXQgPT0gT0JKRUNUIC
kgewoJCQlyZXR1cm4gJHRoaXMtPmxhc3RfcmVzdWx0WyR5XSA/ICR0aGlzLT5sYXN0X3Jlc3VsdFskeV0gO
iBudWxsOwoJCX0gZWxzZWlmICggJG91dHB1dCA9PSBBUlJBWV9BICkgewoJCQlyZXR1cm4gJHRoaXMtPmxh
c3RfcmVzdWx0WyR5XSA/IGdldF9vYmplY3RfdmFycyggJHRoaXMtPmxhc3RfcmVzdWx0WyR5XSApIDogbnV
sbDsKCQl9IGVsc2VpZiAoICRvdXRwdXQgPT0gQVJSQVlfTiApIHsKCQkJcmV0dXJuICR0aGlzLT5sYXN0X3
Jlc3VsdFskeV0gPyBhcnJheV92YWx1ZXMoIGdldF9vYmplY3RfdmFycyggJHRoaXMtPmxhc3RfcmVzdWx0W
yR5XSApICkgOiBudWxsOwoJCX0gZWxzZWlmICggc3RydG91cHBlciggJG91dHB1dCApID09PSBPQkpFQ1Qg
KSB7CgkJCS8vIEJhY2sgY29tcGF0IGZvciBPQkpFQ1QgYmVpbmcgcHJldmlvdXNseSBjYXNlIGluc2Vuc2l
0aXZlLgoJCQlyZXR1cm4gJHRoaXMtPmxhc3RfcmVzdWx0WyR5XSA/ICR0aGlzLT5sYXN0X3Jlc3VsdFskeV
0gOiBudWxsOwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5wcmludF9lcnJvciggIiBcJGRiLT5nZXRfcm93KHN0c
mluZyBxdWVyeSwgb3V0cHV0IHR5cGUsIGludCBvZmZzZXQpIC0tIE91dHB1dCB0eXBlIG11c3QgYmUgb25l
IG9mOiBPQkpFQ1QsIEFSUkFZX0EsIEFSUkFZX04iICk7CgkJfQoJfQoKCS8qKgoJICogUmV0cmlldmUgb25
lIGNvbHVtbiBmcm9tIHRoZSBkYXRhYmFzZS4KCSAqCgkgKiBFeGVjdXRlcyBhIFNRTCBxdWVyeSBhbmQgcm
V0dXJucyB0aGUgY29sdW1uIGZyb20gdGhlIFNRTCByZXN1bHQuCgkgKiBJZiB0aGUgU1FMIHJlc3VsdCBjb
250YWlucyBtb3JlIHRoYW4gb25lIGNvbHVtbiwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2x1bW4g
c3BlY2lmaWVkLgoJICogSWYgJHF1ZXJ5IGlzIG51bGwsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc3B
lY2lmaWVkIGNvbHVtbiBmcm9tIHRoZSBwcmV2aW91cyBTUUwgcmVzdWx0LgoJICoKCSAqIEBzaW5jZSAwLj
cxCgkgKgoJICogQHBhcmFtIHN0cmluZ3xudWxsICRxdWVyeSBPcHRpb25hbC4gU1FMIHF1ZXJ5LiBEZWZhd
Wx0cyB0byBwcmV2aW91cyBxdWVyeS4KCSAqIEBwYXJhbSBpbnQgICAgICAgICAkeCAgICAgT3B0aW9uYWwu
IENvbHVtbiB0byByZXR1cm4uIEluZGV4ZWQgZnJvbSAwLgoJICogQHJldHVybiBhcnJheSBEYXRhYmFzZSB
xdWVyeSByZXN1bHQuIEFycmF5IGluZGV4ZWQgZnJvbSAwIGJ5IFNRTCByZXN1bHQgcm93IG51bWJlci4KCS
AqLwoJcHVibGljIGZ1bmN0aW9uIGdldF9jb2woICRxdWVyeSA9IG51bGwgLCAkeCA9IDAgKSB7CgkJaWYgK
CAkdGhpcy0+Y2hlY2tfY3VycmVudF9xdWVyeSAmJiAkdGhpcy0+Y2hlY2tfc2FmZV9jb2xsYXRpb24oICRx
dWVyeSApICkgewoJCQkkdGhpcy0+Y2hlY2tfY3VycmVudF9xdWVyeSA9IGZhbHNlOwoJCX0KCgkJaWYgKCA
kcXVlcnkgKSB7CgkJCSR0aGlzLT5xdWVyeSggJHF1ZXJ5ICk7CgkJfQoKCQkkbmV3X2FycmF5ID0gYXJyYX
koKTsKCQkvLyBFeHRyYWN0IHRoZSBjb2x1bW4gdmFsdWVzCgkJZm9yICggJGkgPSAwLCAkaiA9IGNvdW50K
CAkdGhpcy0+bGFzdF9yZXN1bHQgKTsgJGkgPCAkajsgJGkrKyApIHsKCQkJJG5ld19hcnJheVskaV0gPSAk
dGhpcy0+Z2V0X3ZhciggbnVsbCwgJHgsICRpICk7CgkJfQoJCXJldHVybiAkbmV3X2FycmF5OwoJfQoKCS8
qKgoJICogUmV0cmlldmUgYW4gZW50aXJlIFNRTCByZXN1bHQgc2V0IGZyb20gdGhlIGRhdGFiYXNlIChpLm
UuLCBtYW55IHJvd3MpCgkgKgoJICogRXhlY3V0ZXMgYSBTUUwgcXVlcnkgYW5kIHJldHVybnMgdGhlIGVud
GlyZSBTUUwgcmVzdWx0LgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcXVl
cnkgIFNRTCBxdWVyeS4KCSAqIEBwYXJhbSBzdHJpbmcgJG91dHB1dCBPcHRpb25hbC4gQW55IG9mIEFSUkF
ZX0EgfCBBUlJBWV9OIHwgT0JKRUNUIHwgT0JKRUNUX0sgY29uc3RhbnRzLgoJICogICAgICAgICAgICAgIC
AgICAgICAgIFdpdGggb25lIG9mIHRoZSBmaXJzdCB0aHJlZSwgcmV0dXJuIGFuIGFycmF5IG9mIHJvd3Mga
W5kZXhlZCBmcm9tIDAgYnkgU1FMIHJlc3VsdCByb3cgbnVtYmVyLgoJICogICAgICAgICAgICAgICAgICAg
ICAgIEVhY2ggcm93IGlzIGFuIGFzc29jaWF0aXZlIGFycmF5IChjb2x1bW4gPT4gdmFsdWUsIC4uLiksIGE
gbnVtZXJpY2FsbHkgaW5kZXhlZCBhcnJheSAoMCA9PiB2YWx1ZSwgLi4uKSwgb3IgYW4gb2JqZWN0LiAoIC
0+Y29sdW1uID0gdmFsdWUgKSwgcmVzcGVjdGl2ZWx5LgoJICogICAgICAgICAgICAgICAgICAgICAgIFdpd
GggT0JKRUNUX0ssIHJldHVybiBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiByb3cgb2JqZWN0cyBrZXllZCBi
eSB0aGUgdmFsdWUgb2YgZWFjaCByb3cncyBmaXJzdCBjb2x1bW4ncyB2YWx1ZS4KCSAqICAgICAgICAgICA
gICAgICAgICAgICBEdXBsaWNhdGUga2V5cyBhcmUgZGlzY2FyZGVkLgoJICogQHJldHVybiBhcnJheXxvYm
plY3R8bnVsbCBEYXRhYmFzZSBxdWVyeSByZXN1bHRzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfcmVzd
Wx0cyggJHF1ZXJ5ID0gbnVsbCwgJG91dHB1dCA9IE9CSkVDVCApIHsKCQkkdGhpcy0+ZnVuY19jYWxsID0g
IlwkZGItPmdldF9yZXN1bHRzKFwiJHF1ZXJ5XCIsICRvdXRwdXQpIjsKCgkJaWYgKCAkdGhpcy0+Y2hlY2t
fY3VycmVudF9xdWVyeSAmJiAkdGhpcy0+Y2hlY2tfc2FmZV9jb2xsYXRpb24oICRxdWVyeSApICkgewoJCQ
kkdGhpcy0+Y2hlY2tfY3VycmVudF9xdWVyeSA9IGZhbHNlOwoJCX0KCgkJaWYgKCAkcXVlcnkgKSB7CgkJC
SR0aGlzLT5xdWVyeSggJHF1ZXJ5ICk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQkkbmV3
X2FycmF5ID0gYXJyYXkoKTsKCQlpZiAoICRvdXRwdXQgPT0gT0JKRUNUICkgewoJCQkvLyBSZXR1cm4gYW4
gaW50ZWdlci1rZXllZCBhcnJheSBvZiByb3cgb2JqZWN0cwoJCQlyZXR1cm4gJHRoaXMtPmxhc3RfcmVzdW
x0OwoJCX0gZWxzZWlmICggJG91dHB1dCA9PSBPQkpFQ1RfSyApIHsKCQkJLy8gUmV0dXJuIGFuIGFycmF5I
G9mIHJvdyBvYmplY3RzIHdpdGgga2V5cyBmcm9tIGNvbHVtbiAxCgkJCS8vIChEdXBsaWNhdGVzIGFyZSBk
aXNjYXJkZWQpCgkJCWZvcmVhY2ggKCAkdGhpcy0+bGFzdF9yZXN1bHQgYXMgJHJvdyApIHsKCQkJCSR2YXJ
fYnlfcmVmID0gZ2V0X29iamVjdF92YXJzKCAkcm93ICk7CgkJCQkka2V5ID0gYXJyYXlfc2hpZnQoICR2YX
JfYnlfcmVmICk7CgkJCQlpZiAoICEgaXNzZXQoICRuZXdfYXJyYXlbICRrZXkgXSApICkKCQkJCQkkbmV3X
2FycmF5WyAka2V5IF0gPSAkcm93OwoJCQl9CgkJCXJldHVybiAkbmV3X2FycmF5OwoJCX0gZWxzZWlmICgg
JG91dHB1dCA9PSBBUlJBWV9BIHx8ICRvdXRwdXQgPT0gQVJSQVlfTiApIHsKCQkJLy8gUmV0dXJuIGFuIGl
udGVnZXIta2V5ZWQgYXJyYXkgb2YuLi4KCQkJaWYgKCAkdGhpcy0+bGFzdF9yZXN1bHQgKSB7CgkJCQlmb3
JlYWNoICggKGFycmF5KSAkdGhpcy0+bGFzdF9yZXN1bHQgYXMgJHJvdyApIHsKCQkJCQlpZiAoICRvdXRwd
XQgPT0gQVJSQVlfTiApIHsKCQkJCQkJLy8gLi4uaW50ZWdlci1rZXllZCByb3cgYXJyYXlzCgkJCQkJCSRu
ZXdfYXJyYXlbXSA9IGFycmF5X3ZhbHVlcyggZ2V0X29iamVjdF92YXJzKCAkcm93ICkgKTsKCQkJCQl9IGV
sc2UgewoJCQkJCQkvLyAuLi5jb2x1bW4gbmFtZS1rZXllZCByb3cgYXJyYXlzCgkJCQkJCSRuZXdfYXJyYX
lbXSA9IGdldF9vYmplY3RfdmFycyggJHJvdyApOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlyZXR1cm4gJG5ld
19hcnJheTsKCQl9IGVsc2VpZiAoIHN0cnRvdXBwZXIoICRvdXRwdXQgKSA9PT0gT0JKRUNUICkgewoJCQkv
LyBCYWNrIGNvbXBhdCBmb3IgT0JKRUNUIGJlaW5nIHByZXZpb3VzbHkgY2FzZSBpbnNlbnNpdGl2ZS4KCQk
JcmV0dXJuICR0aGlzLT5sYXN0X3Jlc3VsdDsKCQl9CgkJcmV0dXJuIG51bGw7Cgl9CgoJLyoqCgkgKiBSZX
RyaWV2ZXMgdGhlIGNoYXJhY3RlciBzZXQgZm9yIHRoZSBnaXZlbiB0YWJsZS4KCSAqCgkgKiBAc2luY2UgN
C4yLjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdGFibGUgVGFibGUg
bmFtZS4KCSAqIEByZXR1cm4gc3RyaW5nfFdQX0V
ycm9yIFRhYmxlIGNoYXJhY3RlciBzZXQsIFdQX0Vycm9yIG9iamVjdCBpZiBpdCBjb3VsZG4ndCBiZSBmb3
VuZC4KCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF90YWJsZV9jaGFyc2V0KCAkdGFibGUgKSB7CgkJJ
HRhYmxla2V5ID0gc3RydG9sb3dlciggJHRhYmxlICk7CgoJCS8qKgoJCSAqIEZpbHRlciB0aGUgdGFibGUg
Y2hhcnNldCB2YWx1ZSBiZWZvcmUgdGhlIERCIGlzIGNoZWNrZWQuCgkJICoKCQkgKiBQYXNzaW5nIGEgbm9
uLW51bGwgdmFsdWUgdG8gdGhlIGZpbHRlciB3aWxsIGVmZmVjdGl2ZWx5IHNob3J0LWNpcmN1aXQKCQkgKi
BjaGVja2luZyB0aGUgREIgZm9yIHRoZSBjaGFyc2V0LCByZXR1cm5pbmcgdGhhdCB2YWx1ZSBpbnN0ZWFkL
goJCSAqCgkJICogQHNpbmNlIDQuMi4wCgkJICoKCQkgKiBAcGFyYW0gc3RyaW5nICRjaGFyc2V0IFRoZSBj
aGFyYWN0ZXIgc2V0IHRvIHVzZS4gRGVmYXVsdCBudWxsLgoJCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlICA
gVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGJlaW5nIGNoZWNrZWQuCgkJICovCgkJJGNoYXJzZXQgPSBhcHBseV
9maWx0ZXJzKCAncHJlX2dldF90YWJsZV9jaGFyc2V0JywgbnVsbCwgJHRhYmxlICk7CgkJaWYgKCBudWxsI
CE9PSAkY2hhcnNldCApIHsKCQkJcmV0dXJuICRjaGFyc2V0OwoJCX0KCgkJaWYgKCBpc3NldCggJHRoaXMt
PnRhYmxlX2NoYXJzZXRbICR0YWJsZWtleSBdICkgKSB7CgkJCXJldHVybiAkdGhpcy0+dGFibGVfY2hhcnN
ldFsgJHRhYmxla2V5IF07CgkJfQoKCQkkY2hhcnNldHMgPSAkY29sdW1ucyA9IGFycmF5KCk7CgoJCSR0YW
JsZV9wYXJ0cyA9IGV4cGxvZGUoICcuJywgJHRhYmxlICk7CgkJJHRhYmxlID0gJ2AnIC4gaW1wbG9kZSggJ
2AuYCcsICR0YWJsZV9wYXJ0cyApIC4gJ2AnOwoJCSRyZXN1bHRzID0gJHRoaXMtPmdldF9yZXN1bHRzKCAi
U0hPVyBGVUxMIENPTFVNTlMgRlJPTSAkdGFibGUiICk7CgkJaWYgKCAhICRyZXN1bHRzICkgewoJCQlyZXR
1cm4gbmV3IFdQX0Vycm9yKCAnd3BkYl9nZXRfdGFibGVfY2hhcnNldF9mYWlsdXJlJyApOwoJCX0KCgkJZm
9yZWFjaCAoICRyZXN1bHRzIGFzICRjb2x1bW4gKSB7CgkJCSRjb2x1bW5zWyBzdHJ0b2xvd2VyKCAkY29sd
W1uLT5GaWVsZCApIF0gPSAkY29sdW1uOwoJCX0KCgkJJHRoaXMtPmNvbF9tZXRhWyAkdGFibGVrZXkgXSA9
ICRjb2x1bW5zOwoKCQlmb3JlYWNoICggJGNvbHVtbnMgYXMgJGNvbHVtbiApIHsKCQkJaWYgKCAhIGVtcHR
5KCAkY29sdW1uLT5Db2xsYXRpb24gKSApIHsKCQkJCWxpc3QoICRjaGFyc2V0ICkgPSBleHBsb2RlKCAnXy
csICRjb2x1bW4tPkNvbGxhdGlvbiApOwoKCQkJCS8vIElmIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gY2FuJ
3Qgc3VwcG9ydCB1dGY4bWI0IGNoYXJhY3RlcnMsIGxldCdzIG9ubHkgc2VuZCAzLWJ5dGUgdXRmOCBjaGFy
YWN0ZXJzLgoJCQkJaWYgKCAndXRmOG1iNCcgPT09ICRjaGFyc2V0ICYmICEgJHRoaXMtPmhhc19jYXAoICd
1dGY4bWI0JyApICkgewoJCQkJCSRjaGFyc2V0ID0gJ3V0ZjgnOwoJCQkJfQoKCQkJCSRjaGFyc2V0c1sgc3
RydG9sb3dlciggJGNoYXJzZXQgKSBdID0gdHJ1ZTsKCQkJfQoKCQkJbGlzdCggJHR5cGUgKSA9IGV4cGxvZ
GUoICcoJywgJGNvbHVtbi0+VHlwZSApOwoKCQkJLy8gQSBiaW5hcnkvYmxvYiBtZWFucyB0aGUgd2hvbGUg
cXVlcnkgZ2V0cyB0cmVhdGVkIGxpa2UgdGhpcy4KCQkJaWYgKCBpbl9hcnJheSggc3RydG91cHBlciggJHR
5cGUgKSwgYXJyYXkoICdCSU5BUlknLCAnVkFSQklOQVJZJywgJ1RJTllCTE9CJywgJ01FRElVTUJMT0InLC
AnQkxPQicsICdMT05HQkxPQicgKSApICkgewoJCQkJJHRoaXMtPnRhYmxlX2NoYXJzZXRbICR0YWJsZWtle
SBdID0gJ2JpbmFyeSc7CgkJCQlyZXR1cm4gJ2JpbmFyeSc7CgkJCX0KCQl9CgoJCS8vIHV0ZjhtYjMgaXMg
YW4gYWxpYXMgZm9yIHV0ZjguCgkJaWYgKCBpc3NldCggJGNoYXJzZXRzWyd1dGY4bWIzJ10gKSApIHsKCQk
JJGNoYXJzZXRzWyd1dGY4J10gPSB0cnVlOwoJCQl1bnNldCggJGNoYXJzZXRzWyd1dGY4bWIzJ10gKTsKCQ
l9CgoJCS8vIENoZWNrIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGFyc2V0IGluIHBsYXkuCgkJJGNvd
W50ID0gY291bnQoICRjaGFyc2V0cyApOwoJCWlmICggMSA9PT0gJGNvdW50ICkgewoJCQkkY2hhcnNldCA9
IGtleSggJGNoYXJzZXRzICk7CgkJfSBlbHNlaWYgKCAwID09PSAkY291bnQgKSB7CgkJCS8vIE5vIGNoYXJ
zZXRzLCBhc3N1bWUgdGhpcyB0YWJsZSBjYW4gc3RvcmUgd2hhdGV2ZXIuCgkJCSRjaGFyc2V0ID0gZmFsc2
U7CgkJfSBlbHNlIHsKCQkJLy8gTW9yZSB0aGFuIG9uZSBjaGFyc2V0LiBSZW1vdmUgbGF0aW4xIGlmIHByZ
XNlbnQgYW5kIHJlY2FsY3VsYXRlLgoJCQl1bnNldCggJGNoYXJzZXRzWydsYXRpbjEnXSApOwoJCQkkY291
bnQgPSBjb3VudCggJGNoYXJzZXRzICk7CgkJCWlmICggMSA9PT0gJGNvdW50ICkgewoJCQkJLy8gT25seSB
vbmUgY2hhcnNldCAoYmVzaWRlcyBsYXRpbjEpLgoJCQkJJGNoYXJzZXQgPSBrZXkoICRjaGFyc2V0cyApOw
oJCQl9IGVsc2VpZiAoIDIgPT09ICRjb3VudCAmJiBpc3NldCggJGNoYXJzZXRzWyd1dGY4J10sICRjaGFyc
2V0c1sndXRmOG1iNCddICkgKSB7CgkJCQkvLyBUd28gY2hhcnNldHMsIGJ1dCB0aGV5J3JlIHV0ZjggYW5k
IHV0ZjhtYjQsIHVzZSB1dGY4LgoJCQkJJGNoYXJzZXQgPSAndXRmOCc7CgkJCX0gZWxzZSB7CgkJCQkvLyB
Ud28gbWl4ZWQgY2hhcmFjdGVyIHNldHMuIGFzY2lpLgoJCQkJJGNoYXJzZXQgPSAnYXNjaWknOwoJCQl9Cg
kJfQoKCQkkdGhpcy0+dGFibGVfY2hhcnNldFsgJHRhYmxla2V5IF0gPSAkY2hhcnNldDsKCQlyZXR1cm4gJ
GNoYXJzZXQ7Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZXMgdGhlIGNoYXJhY3RlciBzZXQgZm9yIHRoZSBnaXZl
biBjb2x1bW4uCgkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJ
hbSBzdHJpbmcgJHRhYmxlICBUYWJsZSBuYW1lLgoJICogQHBhcmFtIHN0cmluZyAkY29sdW1uIENvbHVtbi
BuYW1lLgoJICogQHJldHVybiBzdHJpbmd8ZmFsc2V8V1BfRXJyb3IgQ29sdW1uIGNoYXJhY3RlciBzZXQgY
XMgYSBzdHJpbmcuIEZhbHNlIGlmIHRoZSBjb2x1bW4gaGFzIG5vCgkgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyYWN0ZXIgc2V0LiBXUF9FcnJvciBvYmplY3QgaWYgdGhlcmUgd2FzIGFuIGVycm9
yLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbF9jaGFyc2V0KCAkdGFibGUsICRjb2x1bW4gKSB7Cg
kJJHRhYmxla2V5ID0gc3RydG9sb3dlciggJHRhYmxlICk7CgkJJGNvbHVtbmtleSA9IHN0cnRvbG93ZXIoI
CRjb2x1bW4gKTsKCgkJLyoqCgkJICogRmlsdGVyIHRoZSBjb2x1bW4gY2hhcnNldCB2YWx1ZSBiZWZvcmUg
dGhlIERCIGlzIGNoZWNrZWQuCgkJICoKCQkgKiBQYXNzaW5nIGEgbm9uLW51bGwgdmFsdWUgdG8gdGhlIGZ
pbHRlciB3aWxsIHNob3J0LWNpcmN1aXQKCQkgKiBjaGVja2luZyB0aGUgREIgZm9yIHRoZSBjaGFyc2V0LC
ByZXR1cm5pbmcgdGhhdCB2YWx1ZSBpbnN0ZWFkLgoJCSAqCgkJICogQHNpbmNlIDQuMi4wCgkJICoKCQkgK
iBAcGFyYW0gc3RyaW5nICRjaGFyc2V0IFRoZSBjaGFyYWN0ZXIgc2V0IHRvIHVzZS4gRGVmYXVsdCBudWxs
LgoJCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGJlaW5nIGNoZWN
rZWQuCgkJICogQHBhcmFtIHN0cmluZyAkY29sdW1uICBUaGUgbmFtZSBvZiB0aGUgY29sdW1uIGJlaW5nIG
NoZWNrZWQuCgkJICovCgkJJGNoYXJzZXQgPSBhcHBseV9maWx0ZXJzKCAncHJlX2dldF9jb2xfY2hhcnNld
CcsIG51bGwsICR0YWJsZSwgJGNvbHVtbiApOwoJCWlmICggbnVsbCAhPT0gJGNoYXJzZXQgKSB7CgkJCXJl
dHVybiAkY2hhcnNldDsKCQl9CgoJCS8vIFNraXAgdGhpcyBlbnRpcmVseSBpZiB0aGlzIGlzbid0IGEgTXl
TUUwgZGF0YWJhc2UuCgkJaWYgKCBlbXB0eSggJHRoaXMtPmlzX215c3FsICkgKSB7CgkJCXJldHVybiBmYW
xzZTsKCQl9CgoJCWlmICggZW1wdHkoICR0aGlzLT50YWJsZV9jaGFyc2V0WyAkdGFibGVrZXkgXSApICkge
woJCQkvLyBUaGlzIHByaW1lcyBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHVzLgoJCQkkdGFibGVfY2hhcnNl
dCA9ICR0aGlzLT5nZXRfdGFibGVfY2hhcnNldCggJHRhYmxlICk7CgkJCWlmICggaXNfd3BfZXJyb3IoICR
0YWJsZV9jaGFyc2V0ICkgKSB7CgkJCQlyZXR1cm4gJHRhYmxlX2NoYXJzZXQ7CgkJCX0KCQl9CgoJCS8vIE
lmIHN0aWxsIG5vIGNvbHVtbiBpbmZvcm1hdGlvbiwgcmV0dXJuIHRoZSB0YWJsZSBjaGFyc2V0LgoJCWlmI
CggZW1wdHkoICR0aGlzLT5jb2xfbWV0YVsgJHRhYmxla2V5IF0gKSApIHsKCQkJcmV0dXJuICR0aGlzLT50
YWJsZV9jaGFyc2V0WyAkdGFibGVrZXkgXTsKCQl9CgoJCS8vIElmIHRoaXMgY29sdW1uIGRvZXNuJ3QgZXh
pc3QsIHJldHVybiB0aGUgdGFibGUgY2hhcnNldC4KCQlpZiAoIGVtcHR5KCAkdGhpcy0+Y29sX21ldGFbIC
R0YWJsZWtleSBdWyAkY29sdW1ua2V5IF0gKSApIHsKCQkJcmV0dXJuICR0aGlzLT50YWJsZV9jaGFyc2V0W
yAkdGFibGVrZXkgXTsKCQl9CgoJCS8vIFJldHVybiBmYWxzZSB3aGVuIGl0J3Mgbm90IGEgc3RyaW5nIGNv
bHVtbi4KCQlpZiAoIGVtcHR5KCAkdGhpcy0+Y29sX21ldGFbICR0YWJsZWtleSBdWyAkY29sdW1ua2V5IF0
tPkNvbGxhdGlvbiApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlsaXN0KCAkY2hhcnNldCApID0gZX
hwbG9kZSggJ18nLCAkdGhpcy0+Y29sX21ldGFbICR0YWJsZWtleSBdWyAkY29sdW1ua2V5IF0tPkNvbGxhd
GlvbiApOwoJCXJldHVybiAkY2hhcnNldDsKCX0KCgkvKioKCSAqIFJldHJpZXZlIHRoZSBtYXhpbXVtIHN0
cmluZyBsZW5ndGggYWxsb3dlZCBpbiBhIGdpdmVuIGNvbHVtbi4KCSAqIFRoZSBsZW5ndGggbWF5IGVpdGh
lciBiZSBzcGVjaWZpZWQgYXMgYSBieXRlIGxlbmd0aCBvciBhIGNoYXJhY3RlciBsZW5ndGguCgkgKgoJIC
ogQHNpbmNlIDQuMi4xCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlI
CBUYWJsZSBuYW1lLgoJICogQHBhcmFtIHN0cmluZyAkY29sdW1uIENvbHVtbiBuYW1lLgoJICogQHJldHVy
biBhcnJheXxmYWxzZXxXUF9FcnJvciBhcnJheSggJ2xlbmd0aCcgPT4gKGludCksICd0eXBlJyA9PiAnYnl
0ZScgfCAnY2hhcicgKQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSBpZiB0aGUgY2
9sdW1uIGhhcyBubyBsZW5ndGggKGZvciBleGFtcGxlLCBudW1lcmljIGNvbHVtbikKCSAqICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgV1BfRXJyb3Igb2JqZWN0IGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KCSAq
LwoJcHVibGljIGZ1bmN0aW9uIGdldF9jb2xfbGVuZ3RoKCAkdGFibGUsICRjb2x1bW4gKSB7CgkJJHRhYmx
la2V5ID0gc3RydG9sb3dlciggJHRhYmxlICk7CgkJJGNvbHVtbmtleSA9IHN0cnRvbG93ZXIoICRjb2x1bW
4gKTsKCgkJLy8gU2tpcCB0aGlzIGVudGlyZWx5IGlmIHRoaXMgaXNuJ3QgYSBNeVNRTCBkYXRhYmFzZS4KC
QlpZiAoIGVtcHR5KCAkdGhpcy0+aXNfbXlzcWwgKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJaWYg
KCBlbXB0eSggJHRoaXMtPmNvbF9tZXRhWyAkdGFibGVrZXkgXSApICkgewoJCQkvLyBUaGlzIHByaW1lcyB
jb2x1bW4gaW5mb3JtYXRpb24gZm9yIHVzLgoJCQkkdGFibGVfY2hhcnNldCA9ICR0aGlzLT5nZXRfdGFibG
VfY2hhcnNldCggJHRhYmxlICk7CgkJCWlmICggaXNfd3BfZXJyb3IoICR0YWJsZV9jaGFyc2V0ICkgKSB7C
gkJCQlyZXR1cm4gJHRhYmxlX2NoYXJzZXQ7CgkJCX0KCQl9CgoJCWlmICggZW1wdHkoICR0aGlzLT5jb2xf
bWV0YVsgJHRhYmxla2V5IF1bICRjb2x1bW5rZXkgXSApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQk
kdHlwZWluZm8gPSBleHBsb2RlKCAnKCcsICR0aGlzLT5jb2xfbWV0YVsgJHRhYmxla2V5IF1bICRjb2x1bW
5rZXkgXS0+VHlwZSApOwoKCQkkdHlwZSA9IHN0cnRvbG93ZXIoICR0eXBlaW5mb1swXSApOwoJCWlmICggI
SBlbXB0eSggJHR5cGVpbmZvWzFdICkgKSB7CgkJCSRsZW5ndGggPSB0cmltKCAkdHlwZWluZm9bMV0sICcp
JyApOwoJCX0gZWxzZSB7CgkJCSRsZW5ndGggPSBmYWxzZTsKCQl9CgoJCXN3aXRjaCggJHR5cGUgKSB7Cgk
JCWNhc2UgJ2NoYXInOgoJCQljYXNlICd2YXJjaGFyJzoKCQkJCXJldHVybiBhcnJheSgKCQkJCQkndHlwZS
cgICA9PiAnY2hhcicsCgkJCQkJJ2xlbmd0aCcgPT4gKGludCkgJGxlbmd0aCwKCQkJCSk7CgoJCQljYXNlI
CdiaW5hcnknOgoJCQljYXNlICd2YXJiaW5hcnknOgoJCQkJcmV0dXJuIGFycmF5KAoJCQkJCSd0eXBlJyAg
ID0+ICdieXRlJywKCQkJCQknbGVuZ3RoJyA9PiAoaW50KSAkbGVuZ3RoLAoJCQkJKTsKCgkJCWNhc2UgJ3R
pbnlibG9iJzoKCQkJY2FzZSAndGlueXRleHQnOgoJCQkJcmV0dXJuIGFycmF5KAoJCQkJCSd0eXBlJyAgID
0+ICdieXRlJywKCQkJCQknbGVuZ3RoJyA9PiAyNTUsICAgICAgICAvLyAyXjggLSAxCgkJCQkpOwoKCQkJY
2FzZSAnYmxvYic6CgkJCWNhc2UgJ3RleHQnOgoJCQkJcmV0dXJuIGFycmF5KAoJCQkJCSd0eXBlJyAgID0+
ICdieXRlJywKCQkJCQknbGVuZ3RoJyA9PiA2NTUzNSwgICAgICAvLyAyXjE2IC0gMQoJCQkJKTsKCgkJCWN
hc2UgJ21lZGl1bWJsb2InOgoJCQljYXNlICdtZWRpdW10ZXh0JzoKCQkJCXJldHVybiBhcnJheSgKCQkJCQ
kndHlwZScgICA9PiAnYnl0ZScsCgkJCQkJJ2xlbmd0aCcgPT4gMTY3NzcyMTUsICAgLy8gMl4yNCAtIDEKC
QkJCSk7CgoJCQljYXNlICdsb25nYmxvYic6CgkJCWNhc2UgJ2xvbmd0ZXh0JzoKCQkJCXJldHVybiBhcnJh
eSgKCQkJCQkndHlwZScgICA9PiAnYnl0ZScsCgkJCQkJJ2xlbmd0aCcgPT4gNDI5NDk2NzI5NSwgLy8gMl4
zMiAtIDEKCQkJCSk7CgoJCQlkZWZhdWx0OgoJCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIE
NoZWNrIGlmIGEgc3RyaW5nIGlzIEFTQ0lJLgoJICoKCSAqIFRoZSBuZWdhdGl2ZSByZWdleCBpcyBmYXN0Z
XIgZm9yIG5vbi1BU0NJSSBzdHJpbmdzLCBhcyBpdCBhbGxvd3MKCSAqIHRoZSBzZWFyY2ggdG8gZmluaXNo
IGFzIHNvb24gYXMgaXQgZW5jb3VudGVycyBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIuCgkgKgoJICogQHNpbmN
lIDQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyBTdH
JpbmcgdG8gY2hlY2suCgkgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBpZiBBU0NJSSwgZmFsc2UgaWYgbm90LgoJI
CovCglwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tfYXNjaWkoICRzdHJpbmcgKSB7CgkJaWYgKCBmdW5jdGlv
bl9leGlzdHMoICdtYl9jaGVja19lbmNvZGluZycgKSApIHsKCQkJaWYgKCBtYl9jaGVja19lbmNvZGluZyg
gJHN0cmluZywgJ0FTQ0lJJyApICkgewoJCQkJcm
V0dXJuIHRydWU7CgkJCX0KCQl9IGVsc2VpZiAoICEgcHJlZ19tYXRjaCggJy9bXlx4MDAtXHg3Rl0vJywgJ
HN0cmluZyApICkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAq
IENoZWNrIGlmIHRoZSBxdWVyeSBpcyBhY2Nlc3NpbmcgYSBjb2xsYXRpb24gY29uc2lkZXJlZCBzYWZlIG9
uIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgTXlTUUwuCgkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZX
NzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5IFRoZSBxdWVyeSB0byBjaGVjay4KC
SAqIEByZXR1cm4gYm9vbCBUcnVlIGlmIHRoZSBjb2xsYXRpb24gaXMgc2FmZSwgZmFsc2UgaWYgaXQgaXNu
J3QuCgkgKi8KCXByb3RlY3RlZCBmdW5jdGlvbiBjaGVja19zYWZlX2NvbGxhdGlvbiggJHF1ZXJ5ICkgewo
JCWlmICggJHRoaXMtPmNoZWNraW5nX2NvbGxhdGlvbiApIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoKCQkvLy
BXZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSBjb2xsYXRpb24gZm9yIHF1ZXJpZXMgdGhhdCBkb24ndCByZ
WFkIGRhdGEuCgkJJHF1ZXJ5ID0gbHRyaW0oICRxdWVyeSwgIlxyXG5cdCAoIiApOwoJCWlmICggcHJlZ19t
YXRjaCggJy9eKD86U0hPV3xERVNDUklCRXxERVNDfEVYUExBSU58Q1JFQVRFKVxzL2knLCAkcXVlcnkgKSA
pIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoKCQkvLyBBbGwtQVNDSUkgcXVlcmllcyBkb24ndCBuZWVkIGV4dH
JhIGNoZWNraW5nLgoJCWlmICggJHRoaXMtPmNoZWNrX2FzY2lpKCAkcXVlcnkgKSApIHsKCQkJcmV0dXJuI
HRydWU7CgkJfQoKCQkkdGFibGUgPSAkdGhpcy0+Z2V0X3RhYmxlX2Zyb21fcXVlcnkoICRxdWVyeSApOwoJ
CWlmICggISAkdGFibGUgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSR0aGlzLT5jaGVja2luZ19jb2x
sYXRpb24gPSB0cnVlOwoJCSRjb2xsYXRpb24gPSAkdGhpcy0+Z2V0X3RhYmxlX2NoYXJzZXQoICR0YWJsZS
ApOwoJCSR0aGlzLT5jaGVja2luZ19jb2xsYXRpb24gPSBmYWxzZTsKCgkJLy8gVGFibGVzIHdpdGggbm8gY
29sbGF0aW9uLCBvciBsYXRpbjEgb25seSwgZG9uJ3QgbmVlZCBleHRyYSBjaGVja2luZy4KCQlpZiAoIGZh
bHNlID09PSAkY29sbGF0aW9uIHx8ICdsYXRpbjEnID09PSAkY29sbGF0aW9uICkgewoJCQlyZXR1cm4gdHJ
1ZTsKCQl9CgoJCSR0YWJsZSA9IHN0cnRvbG93ZXIoICR0YWJsZSApOwoJCWlmICggZW1wdHkoICR0aGlzLT
5jb2xfbWV0YVsgJHRhYmxlIF0gKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gSWYgYW55IG9mI
HRoZSBjb2x1bW5zIGRvbid0IGhhdmUgb25lIG9mIHRoZXNlIGNvbGxhdGlvbnMsIGl0IG5lZWRzIG1vcmUg
c2FuaXR5IGNoZWNraW5nLgoJCWZvcmVhY2ggKCAkdGhpcy0+Y29sX21ldGFbICR0YWJsZSBdIGFzICRjb2w
gKSB7CgkJCWlmICggZW1wdHkoICRjb2wtPkNvbGxhdGlvbiApICkgewoJCQkJY29udGludWU7CgkJCX0KCg
kJCWlmICggISBpbl9hcnJheSggJGNvbC0+Q29sbGF0aW9uLCBhcnJheSggJ3V0ZjhfZ2VuZXJhbF9jaScsI
Cd1dGY4X2JpbicsICd1dGY4bWI0X2dlbmVyYWxfY2knLCAndXRmOG1iNF9iaW4nICksIHRydWUgKSApIHsK
CQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoJLyoqCgkgKiBTdHJpcHM
gYW55IGludmFsaWQgY2hhcmFjdGVycyBiYXNlZCBvbiB2YWx1ZS9jaGFyc2V0IHBhaXJzLgoJICoKCSAqIE
BzaW5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGRhdGEgQ
XJyYXkgb2YgdmFsdWUgYXJyYXlzLiBFYWNoIHZhbHVlIGFycmF5IGhhcyB0aGUga2V5cwoJICogICAgICAg
ICAgICAgICAgICAgICd2YWx1ZScgYW5kICdjaGFyc2V0Jy4gQW4gb3B0aW9uYWwgJ2FzY2lpJyBrZXkgY2F
uIGJlCgkgKiAgICAgICAgICAgICAgICAgICAgc2V0IHRvIGZhbHNlIHRvIGF2b2lkIHJlZHVuZGFudCBBU0
NJSSBjaGVja3MuCgkgKiBAcmV0dXJuIGFycmF5fFdQX0Vycm9yIFRoZSAkZGF0YSBwYXJhbWV0ZXIsIHdpd
GggaW52YWxpZCBjaGFyYWN0ZXJzIHJlbW92ZWQgZnJvbQoJICogICAgICAgICAgICAgICAgICAgICAgICBl
YWNoIHZhbHVlLiBUaGlzIHdvcmtzIGFzIGEgcGFzc3Rocm91Z2g6IGFueSBhZGRpdGlvbmFsIGtleXMKCSA
qICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyAnZmllbGQnIGFyZSByZXRhaW5lZCBpbiBlYWNoIH
ZhbHVlIGFycmF5LiBJZiB3ZSBjYW5ub3QKCSAqICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlIGlud
mFsaWQgY2hhcmFjdGVycywgYSBXUF9FcnJvciBvYmplY3QgaXMgcmV0dXJuZWQuCgkgKi8KCXByb3RlY3Rl
ZCBmdW5jdGlvbiBzdHJpcF9pbnZhbGlkX3RleHQoICRkYXRhICkgewoJCSRkYl9jaGVja19zdHJpbmcgPSB
mYWxzZTsKCgkJZm9yZWFjaCAoICRkYXRhIGFzICYkdmFsdWUgKSB7CgkJCSRjaGFyc2V0ID0gJHZhbHVlWy
djaGFyc2V0J107CgoJCQlpZiAoIGlzX2FycmF5KCAkdmFsdWVbJ2xlbmd0aCddICkgKSB7CgkJCQkkbGVuZ
3RoID0gJHZhbHVlWydsZW5ndGgnXVsnbGVuZ3RoJ107CgkJCQkkdHJ1bmNhdGVfYnlfYnl0ZV9sZW5ndGgg
PSAnYnl0ZScgPT09ICR2YWx1ZVsnbGVuZ3RoJ11bJ3R5cGUnXTsKCQkJfSBlbHNlIHsKCQkJCSRsZW5ndGg
gPSBmYWxzZTsKCQkJCS8vIFNpbmNlIHdlIGhhdmUgbm8gbGVuZ3RoLCB3ZSdsbCBuZXZlciB0cnVuY2F0ZS
4KCQkJCS8vIEluaXRpYWxpemUgdGhlIHZhcmlhYmxlIHRvIGZhbHNlLiB0cnVlIHdvdWxkIHRha2UgdXMKC
QkJCS8vIHRocm91Z2ggYW4gdW5uZWNlc3NhcnkgKGZvciB0aGlzIGNhc2UpIGNvZGVwYXRoIGJlbG93LgoJ
CQkJJHRydW5jYXRlX2J5X2J5dGVfbGVuZ3RoID0gZmFsc2U7CgkJCX0KCgkJCS8vIFRoZXJlJ3Mgbm8gY2h
hcnNldCB0byB3b3JrIHdpdGguCgkJCWlmICggZmFsc2UgPT09ICRjaGFyc2V0ICkgewoJCQkJY29udGludW
U7CgkJCX0KCgkJCS8vIENvbHVtbiBpc24ndCBhIHN0cmluZy4KCQkJaWYgKCAhIGlzX3N0cmluZyggJHZhb
HVlWyd2YWx1ZSddICkgKSB7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJG5lZWRzX3ZhbGlkYXRpb24gPSB0
cnVlOwoJCQlpZiAoCgkJCQkvLyBsYXRpbjEgY2FuIHN0b3JlIGFueSBieXRlIHNlcXVlbmNlCgkJCQknbGF
0aW4xJyA9PT0gJGNoYXJzZXQKCQkJfHwKCQkJCS8vIEFTQ0lJIGlzIGFsd2F5cyBPSy4KCQkJCSggISBpc3
NldCggJHZhbHVlWydhc2NpaSddICkgJiYgJHRoaXMtPmNoZWNrX2FzY2lpKCAkdmFsdWVbJ3ZhbHVlJ10gK
SApCgkJCSkgewoJCQkJJHRydW5jYXRlX2J5X2J5dGVfbGVuZ3RoID0gdHJ1ZTsKCQkJCSRuZWVkc192YWxp
ZGF0aW9uID0gZmFsc2U7CgkJCX0KCgkJCWlmICggJHRydW5jYXRlX2J5X2J5dGVfbGVuZ3RoICkgewoJCQk
JbWJzdHJpbmdfYmluYXJ5X3NhZmVfZW5jb2RpbmcoKTsKCQkJCWlmICggZmFsc2UgIT09ICRsZW5ndGggJi
Ygc3RybGVuKCAkdmFsdWVbJ3ZhbHVlJ10gKSA+ICRsZW5ndGggKSB7CgkJCQkJJHZhbHVlWyd2YWx1ZSddI
D0gc3Vic3RyKCAkdmFsdWVbJ3ZhbHVlJ10sIDAsICRsZW5ndGggKTsKCQkJCX0KCQkJCXJlc2V0X21ic3Ry
aW5nX2VuY29kaW5nKCk7CgoJCQkJaWYgKCAhICRuZWVkc192YWxpZGF0aW9uICkgewoJCQkJCWNvbnRpbnV
lOwoJCQkJfQoJCQl9CgoJCQkvLyB1dGY4IGNhbiBiZSBoYW5kbGVkIGJ5IHJlZ2V4LCB3aGljaCBpcyBhIG
J1bmNoIGZhc3RlciB0aGFuIGEgREIgbG9va3VwLgoJCQlpZiAoICggJ3V0ZjgnID09PSAkY2hhcnNldCB8f
CAndXRmOG1iMycgPT09ICRjaGFyc2V0IHx8ICd1dGY4bWI0JyA9PT0gJGNoYXJzZXQgKSAmJiBmdW5jdGlv
bl9leGlzdHMoICdtYl9zdHJsZW4nICkgKSB7CgkJCQkkcmVnZXggPSAnLwoJCQkJCSgKCQkJCQkJKD86IFt
ceDAwLVx4N0ZdICAgICAgICAgICAgICAgICAgIyBzaW5nbGUtYnl0ZSBzZXF1ZW5jZXMgICAweHh4eHh4eA
oJCQkJCQl8ICAgW1x4QzItXHhERl1bXHg4MC1ceEJGXSAgICAgICAjIGRvdWJsZS1ieXRlIHNlcXVlbmNlc
yAgIDExMHh4eHh4IDEweHh4eHh4CgkJCQkJCXwgICBceEUwW1x4QTAtXHhCRl1bXHg4MC1ceEJGXSAgICMg
dHJpcGxlLWJ5dGUgc2VxdWVuY2VzICAgMTExMHh4eHggMTB4eHh4eHggKiAyCgkJCQkJCXwgICBbXHhFMS1
ceEVDXVtceDgwLVx4QkZdezJ9CgkJCQkJCXwgICBceEVEW1x4ODAtXHg5Rl1bXHg4MC1ceEJGXQoJCQkJCQ
l8ICAgW1x4RUUtXHhFRl1bXHg4MC1ceEJGXXsyfSc7CgoJCQkJaWYgKCAndXRmOG1iNCcgPT09ICRjaGFyc
2V0ICkgewoJCQkJCSRyZWdleCAuPSAnCgkJCQkJCXwgICAgXHhGMFtceDkwLVx4QkZdW1x4ODAtXHhCRl17
Mn0gIyBmb3VyLWJ5dGUgc2VxdWVuY2VzICAgMTExMTB4eHggMTB4eHh4eHggKiAzCgkJCQkJCXwgICAgW1x
4RjEtXHhGM11bXHg4MC1ceEJGXXszfQoJCQkJCQl8ICAgIFx4RjRbXHg4MC1ceDhGXVtceDgwLVx4QkZdez
J9CgkJCQkJJzsKCQkJCX0KCgkJCQkkcmVnZXggLj0gJyl7MSw0MH0gICAgICAgICAgICAgICAgICAgICAgI
CAgICMgLi4ub25lIG9yIG1vcmUgdGltZXMKCQkJCQkpCgkJCQkJfCAuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMgYW55dGhpbmcgZWxzZQoJCQkJCS94JzsKCQkJCSR2YWx1ZVsndmFsdWUnXSA9IHB
yZWdfcmVwbGFjZSggJHJlZ2V4LCAnJDEnLCAkdmFsdWVbJ3ZhbHVlJ10gKTsKCgoJCQkJaWYgKCBmYWxzZS
AhPT0gJGxlbmd0aCAmJiBtYl9zdHJsZW4oICR2YWx1ZVsndmFsdWUnXSwgJ1VURi04JyApID4gJGxlbmd0a
CApIHsKCQkJCQkkdmFsdWVbJ3ZhbHVlJ10gPSBtYl9zdWJzdHIoICR2YWx1ZVsndmFsdWUnXSwgMCwgJGxl
bmd0aCwgJ1VURi04JyApOwoJCQkJfQoJCQkJY29udGludWU7CgkJCX0KCgkJCS8vIFdlIGNvdWxkbid0IHV
zZSBhbnkgbG9jYWwgY29udmVyc2lvbnMsIHNlbmQgaXQgdG8gdGhlIERCLgoJCQkkdmFsdWVbJ2RiJ10gPS
AkZGJfY2hlY2tfc3RyaW5nID0gdHJ1ZTsKCQl9CgkJdW5zZXQoICR2YWx1ZSApOyAvLyBSZW1vdmUgYnkgc
mVmZXJlbmNlLgoKCQlpZiAoICRkYl9jaGVja19zdHJpbmcgKSB7CgkJCSRxdWVyaWVzID0gYXJyYXkoKTsK
CQkJZm9yZWFjaCAoICRkYXRhIGFzICRjb2wgPT4gJHZhbHVlICkgewoJCQkJaWYgKCAhIGVtcHR5KCAkdmF
sdWVbJ2RiJ10gKSApIHsKCQkJCQkvLyBXZSdyZSBnb2luZyB0byBuZWVkIHRvIHRydW5jYXRlIGJ5IGNoYX
JhY3RlcnMgb3IgYnl0ZXMsIGRlcGVuZGluZyBvbiB0aGUgbGVuZ3RoIHZhbHVlIHdlIGhhdmUuCgkJCQkJa
WYgKCAnYnl0ZScgPT09ICR2YWx1ZVsnbGVuZ3RoJ11bJ3R5cGUnXSApIHsKCQkJCQkJLy8gVXNpbmcgYmlu
YXJ5IGNhdXNlcyBMRUZUKCkgdG8gdHJ1bmNhdGUgYnkgYnl0ZXMuCgkJCQkJCSRjaGFyc2V0ID0gJ2JpbmF
yeSc7CgkJCQkJfSBlbHNlIHsKCQkJCQkJJGNoYXJzZXQgPSAkdmFsdWVbJ2NoYXJzZXQnXTsKCQkJCQl9Cg
oJCQkJCWlmICggaXNfYXJyYXkoICR2YWx1ZVsnbGVuZ3RoJ10gKSApIHsKCQkJCQkJJHF1ZXJpZXNbICRjb
2wgXSA9ICR0aGlzLT5wcmVwYXJlKCAiQ09OVkVSVCggTEVGVCggQ09OVkVSVCggJXMgVVNJTkcgJGNoYXJz
ZXQgKSwgJS4wZiApIFVTSU5HIHskdGhpcy0+Y2hhcnNldH0gKSIsICR2YWx1ZVsndmFsdWUnXSwgJHZhbHV
lWydsZW5ndGgnXVsnbGVuZ3RoJ10gKTsKCQkJCQl9IGVsc2UgaWYgKCAnYmluYXJ5JyAhPT0gJGNoYXJzZX
QgKSB7CgkJCQkJCS8vIElmIHdlIGRvbid0IGhhdmUgYSBsZW5ndGgsIHRoZXJlJ3Mgbm8gbmVlZCB0byBjb
252ZXJ0IGJpbmFyeSAtIGl0IHdpbGwgYWx3YXlzIHJldHVybiB0aGUgc2FtZSByZXN1bHQuCgkJCQkJCSRx
dWVyaWVzWyAkY29sIF0gPSAkdGhpcy0+cHJlcGFyZSggIkNPTlZFUlQoIENPTlZFUlQoICVzIFVTSU5HICR
jaGFyc2V0ICkgVVNJTkcgeyR0aGlzLT5jaGFyc2V0fSApIiwgJHZhbHVlWyd2YWx1ZSddICk7CgkJCQkJfQ
oKCQkJCQl1bnNldCggJGRhdGFbICRjb2wgXVsnZGInXSApOwoJCQkJfQoJCQl9CgoJCQkkc3FsID0gYXJyY
XkoKTsKCQkJZm9yZWFjaCAoICRxdWVyaWVzIGFzICRjb2x1bW4gPT4gJHF1ZXJ5ICkgewoJCQkJaWYgKCAh
ICRxdWVyeSApIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQkkc3FsW10gPSAkcXVlcnkgLiAiIEFTIHh
fJGNvbHVtbiI7CgkJCX0KCgkJCSR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gZmFsc2U7CgkJCSRyb3
cgPSAkdGhpcy0+Z2V0X3JvdyggIlNFTEVDVCAiIC4gaW1wbG9kZSggJywgJywgJHNxbCApLCBBUlJBWV9BI
Ck7CgkJCWlmICggISAkcm93ICkgewoJCQkJcmV0dXJuIG5ldyBXUF9FcnJvciggJ3dwZGJfc3RyaXBfaW52
YWxpZF90ZXh0X2ZhaWx1cmUnICk7CgkJCX0KCgkJCWZvcmVhY2ggKCBhcnJheV9rZXlzKCAkZGF0YSApIGF
zICRjb2x1bW4gKSB7CgkJCQlpZiAoIGlzc2V0KCAkcm93WyJ4XyRjb2x1bW4iXSApICkgewoJCQkJCSRkYX
RhWyAkY29sdW1uIF1bJ3ZhbHVlJ10gPSAkcm93WyJ4XyRjb2x1bW4iXTsKCQkJCX0KCQkJfQoJCX0KCgkJc
mV0dXJuICRkYXRhOwoJfQoKCS8qKgoJICogU3RyaXBzIGFueSBpbnZhbGlkIGNoYXJhY3RlcnMgZnJvbSB0
aGUgcXVlcnkuCgkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEB
wYXJhbSBzdHJpbmcgJHF1ZXJ5IFF1ZXJ5IHRvIGNvbnZlcnQuCgkgKiBAcmV0dXJuIHN0cmluZ3xXUF9Fcn
JvciBUaGUgY29udmVydGVkIHF1ZXJ5LCBvciBhIFdQX0Vycm9yIG9iamVjdCBpZiB0aGUgY29udmVyc2lvb
iBmYWlscy4KCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIHN0cmlwX2ludmFsaWRfdGV4dF9mcm9tX3F1ZXJ5
KCAkcXVlcnkgKSB7CgkJLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgY29sbGF0aW9uIGZvciBxdWV
yaWVzIHRoYXQgZG9uJ3QgcmVhZCBkYXRhLgoJCSR0cmltbWVkX3F1ZXJ5ID0gbHRyaW0oICRxdWVyeSwgIl
xyXG5cdCAoIiApOwoJCWlmICggcHJlZ19tYXRjaCggJy9eKD86U0hPV3xERVNDUklCRXxERVNDfEVYUExBS
U58Q1JFQVRFKVxzL2knLCAkdHJpbW1lZF9xdWVyeSApICkgewoJCQlyZXR1cm4gJHF1ZXJ5OwoJCX0KCgkJ
JHRhYmxlID0gJHRoaXMtPmdldF90YWJsZV9mcm9tX3F1ZXJ5KCAkcXVlcnkgKTsKCQlpZiAoICR0YWJsZSA
pIHsKCQkJJGNoYXJzZXQgPSAkdGhpcy0+Z2V0X3RhYmxlX2NoYXJzZXQoICR0YWJsZSApOwoJCQlpZiAoIG
lzX3dwX2Vycm9yKCAkY2hhcnNldCApICkgewoJCQkJcmV0dXJuICRjaGFyc2V0OwoJCQl9CgoJCQkvLyBXZ
SBjYW4ndCByZWxpYWJseSBzdHJpcCB0ZXh0IGZyb20gdGFibGVzIGNvbnRhaW5pbmcgYmluYXJ5L2Jsb2Ig
Y29sdW1ucwoJCQlpZiAoICdiaW5hcnknID09PSAkY2hhcnNldCApIHsKCQkJCXJldHVybiAkcXVlcnk7Cgk
JCX0KCQl9IGVsc2UgewoJCQkkY2hhcnNldCA9ICR0aGlzLT5jaGFyc2V0OwoJCX0KCgkJJGRhdGEgPSBhcn
JheSgKCQkJJ3ZhbHVlJyAgID0+ICRxdWVyeSwKC
QkJJ2NoYXJzZXQnID0+ICRjaGFyc2V0LAoJCQknYXNjaWknICAgPT4gZmFsc2UsCgkJCSdsZW5ndGgnICA9
PiBmYWxzZSwKCQkpOwoKCQkkZGF0YSA9ICR0aGlzLT5zdHJpcF9pbnZhbGlkX3RleHQoIGFycmF5KCAkZGF
0YSApICk7CgkJaWYgKCBpc193cF9lcnJvciggJGRhdGEgKSApIHsKCQkJcmV0dXJuICRkYXRhOwoJCX0KCg
kJcmV0dXJuICRkYXRhWzBdWyd2YWx1ZSddOwoJfQoKCS8qKgoJICogU3RyaXBzIGFueSBpbnZhbGlkIGNoY
XJhY3RlcnMgZnJvbSB0aGUgc3RyaW5nIGZvciBhIGdpdmVuIHRhYmxlIGFuZCBjb2x1bW4uCgkgKgoJICog
QHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlICB
UYWJsZSBuYW1lLgoJICogQHBhcmFtIHN0cmluZyAkY29sdW1uIENvbHVtbiBuYW1lLgoJICogQHBhcmFtIH
N0cmluZyAkdmFsdWUgIFRoZSB0ZXh0IHRvIGNoZWNrLgoJICogQHJldHVybiBzdHJpbmd8V1BfRXJyb3IgV
GhlIGNvbnZlcnRlZCBzdHJpbmcsIG9yIGEgV1BfRXJyb3Igb2JqZWN0IGlmIHRoZSBjb252ZXJzaW9uIGZh
aWxzLgoJICovCglwdWJsaWMgZnVuY3Rpb24gc3RyaXBfaW52YWxpZF90ZXh0X2Zvcl9jb2x1bW4oICR0YWJ
sZSwgJGNvbHVtbiwgJHZhbHVlICkgewoJCWlmICggISBpc19zdHJpbmcoICR2YWx1ZSApICkgewoJCQlyZX
R1cm4gJHZhbHVlOwoJCX0KCgkJJGNoYXJzZXQgPSAkdGhpcy0+Z2V0X2NvbF9jaGFyc2V0KCAkdGFibGUsI
CRjb2x1bW4gKTsKCQlpZiAoICEgJGNoYXJzZXQgKSB7CgkJCS8vIE5vdCBhIHN0cmluZyBjb2x1bW4uCgkJ
CXJldHVybiAkdmFsdWU7CgkJfSBlbHNlaWYgKCBpc193cF9lcnJvciggJGNoYXJzZXQgKSApIHsKCQkJLy8
gQmFpbCBvbiByZWFsIGVycm9ycy4KCQkJcmV0dXJuICRjaGFyc2V0OwoJCX0KCgkJJGRhdGEgPSBhcnJheS
gKCQkJJGNvbHVtbiA9PiBhcnJheSgKCQkJCSd2YWx1ZScgICA9PiAkdmFsdWUsCgkJCQknY2hhcnNldCcgP
T4gJGNoYXJzZXQsCgkJCQknbGVuZ3RoJyAgPT4gJHRoaXMtPmdldF9jb2xfbGVuZ3RoKCAkdGFibGUsICRj
b2x1bW4gKSwKCQkJKQoJCSk7CgoJCSRkYXRhID0gJHRoaXMtPnN0cmlwX2ludmFsaWRfdGV4dCggJGRhdGE
gKTsKCQlpZiAoIGlzX3dwX2Vycm9yKCAkZGF0YSApICkgewoJCQlyZXR1cm4gJGRhdGE7CgkJfQoKCQlyZX
R1cm4gJGRhdGFbICRjb2x1bW4gXVsndmFsdWUnXTsKCX0KCgkvKioKCSAqIEZpbmQgdGhlIGZpcnN0IHRhY
mxlIG5hbWUgcmVmZXJlbmNlZCBpbiBhIHF1ZXJ5LgoJICoKCSAqIEBzaW5jZSA0LjIuMAoJICogQGFjY2Vz
cyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRxdWVyeSBUaGUgcXVlcnkgdG8gc2VhcmNoLgo
JICogQHJldHVybiBzdHJpbmd8ZmFsc2UgJHRhYmxlIFRoZSB0YWJsZSBuYW1lIGZvdW5kLCBvciBmYWxzZS
BpZiBhIHRhYmxlIGNvdWxkbid0IGJlIGZvdW5kLgoJICovCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X3RhY
mxlX2Zyb21fcXVlcnkoICRxdWVyeSApIHsKCQkvLyBSZW1vdmUgY2hhcmFjdGVycyB0aGF0IGNhbiBsZWdh
bGx5IHRyYWlsIHRoZSB0YWJsZSBuYW1lLgoJCSRxdWVyeSA9IHJ0cmltKCAkcXVlcnksICc7Ly0jJyApOwo
KCQkvLyBBbGxvdyAoc2VsZWN0Li4uKSB1bmlvbiBbLi4uXSBzdHlsZSBxdWVyaWVzLiBVc2UgdGhlIGZpcn
N0IHF1ZXJ5J3MgdGFibGUgbmFtZS4KCQkkcXVlcnkgPSBsdHJpbSggJHF1ZXJ5LCAiXHJcblx0ICgiICk7C
goJCS8vIFN0cmlwIGV2ZXJ5dGhpbmcgYmV0d2VlbiBwYXJlbnRoZXNlcyBleGNlcHQgbmVzdGVkIHNlbGVj
dHMuCgkJJHF1ZXJ5ID0gcHJlZ19yZXBsYWNlKCAnL1woKD8hXHMqc2VsZWN0KVteKF0qP1wpL2lzJywgJyg
pJywgJHF1ZXJ5ICk7CgoJCS8vIFF1aWNrbHkgbWF0Y2ggbW9zdCBjb21tb24gcXVlcmllcy4KCQlpZiAoIH
ByZWdfbWF0Y2goICcvXlxzKig/OicKCQkJCS4gJ1NFTEVDVC4qP1xzK0ZST00nCgkJCQkuICd8SU5TRVJUK
D86XHMrTE9XX1BSSU9SSVRZfFxzK0RFTEFZRUR8XHMrSElHSF9QUklPUklUWSk/KD86XHMrSUdOT1JFKT8o
PzpccytJTlRPKT8nCgkJCQkuICd8UkVQTEFDRSg/OlxzK0xPV19QUklPUklUWXxccytERUxBWUVEKT8oPzp
ccytJTlRPKT8nCgkJCQkuICd8VVBEQVRFKD86XHMrTE9XX1BSSU9SSVRZKT8oPzpccytJR05PUkUpPycKCQ
kJCS4gJ3xERUxFVEUoPzpccytMT1dfUFJJT1JJVFl8XHMrUVVJQ0t8XHMrSUdOT1JFKSooPzpccytGUk9NK
T8nCgkJCQkuICcpXHMrKCg/OlswLTlhLXpBLVokXy5gLV18W1x4QzItXHhERl1bXHg4MC1ceEJGXSkrKS9p
cycsICRxdWVyeSwgJG1heWJlICkgKSB7CgkJCXJldHVybiBzdHJfcmVwbGFjZSggJ2AnLCAnJywgJG1heWJ
lWzFdICk7CgkJfQoKCQkvLyBTSE9XIFRBQkxFIFNUQVRVUyBhbmQgU0hPVyBUQUJMRVMKCQlpZiAoIHByZW
dfbWF0Y2goICcvXlxzKig/OicKCQkJCS4gJ1NIT1dccytUQUJMRVxzK1NUQVRVUy4rKD86TElLRVxzK3xXS
EVSRVxzK05hbWVccyo9XHMqKScKCQkJCS4gJ3xTSE9XXHMrKD86RlVMTFxzKyk/VEFCTEVTLisoPzpMSUtF
XHMrfFdIRVJFXHMrTmFtZVxzKj1ccyopJwoJCQkJLiAnKVxXKCg/OlswLTlhLXpBLVokXy5gLV18W1x4QzI
tXHhERl1bXHg4MC1ceEJGXSkrKVxXL2lzJywgJHF1ZXJ5LCAkbWF5YmUgKSApIHsKCQkJcmV0dXJuIHN0cl
9yZXBsYWNlKCAnYCcsICcnLCAkbWF5YmVbMV0gKTsKCQl9CgoJCS8vIEJpZyBwYXR0ZXJuIGZvciB0aGUgc
mVzdCBvZiB0aGUgdGFibGUtcmVsYXRlZCBxdWVyaWVzLgoJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqKD86
JwoJCQkJLiAnKD86RVhQTEFJTlxzKyg/OkVYVEVOREVEXHMrKT8pP1NFTEVDVC4qP1xzK0ZST00nCgkJCQk
uICd8REVTQ1JJQkV8REVTQ3xFWFBMQUlOfEhBTkRMRVInCgkJCQkuICd8KD86TE9DS3xVTkxPQ0spXHMrVE
FCTEUoPzpTKT8nCgkJCQkuICd8KD86UkVOQU1FfE9QVElNSVpFfEJBQ0tVUHxSRVNUT1JFfENIRUNLfENIR
UNLU1VNfEFOQUxZWkV8UkVQQUlSKS4qXHMrVEFCTEUnCgkJCQkuICd8VFJVTkNBVEUoPzpccytUQUJMRSk/
JwoJCQkJLiAnfENSRUFURSg/OlxzK1RFTVBPUkFSWSk/XHMrVEFCTEUoPzpccytJRlxzK05PVFxzK0VYSVN
UUyk/JwoJCQkJLiAnfEFMVEVSKD86XHMrSUdOT1JFKT9ccytUQUJMRScKCQkJCS4gJ3xEUk9QXHMrVEFCTE
UoPzpccytJRlxzK0VYSVNUUyk/JwoJCQkJLiAnfENSRUFURSg/OlxzK1x3Kyk/XHMrSU5ERVguKlxzK09OJ
woJCQkJLiAnfERST1BccytJTkRFWC4qXHMrT04nCgkJCQkuICd8TE9BRFxzK0RBVEEuKklORklMRS4qSU5U
T1xzK1RBQkxFJwoJCQkJLiAnfCg/OkdSQU5UfFJFVk9LRSkuKk9OXHMrVEFCTEUnCgkJCQkuICd8U0hPV1x
zKyg/Oi4qRlJPTXwuKlRBQkxFKScKCQkJCS4gJylccytcKCpccyooKD86WzAtOWEtekEtWiRfLmAtXXxbXH
hDMi1ceERGXVtceDgwLVx4QkZdKSspXHMqXCkqL2lzJywgJHF1ZXJ5LCAkbWF5YmUgKSApIHsKCQkJcmV0d
XJuIHN0cl9yZXBsYWNlKCAnYCcsICcnLCAkbWF5YmVbMV0gKTsKCQl9CgoJCXJldHVybiBmYWxzZTsKCX0K
CgkvKioKCSAqIExvYWQgdGhlIGNvbHVtbiBtZXRhZGF0YSBmcm9tIHRoZSBsYXN0IHF1ZXJ5LgoJICoKCSA
qIEBzaW5jZSAzLjUuMAoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKi8KCXByb3RlY3RlZCBmdW5jdG
lvbiBsb2FkX2NvbF9pbmZvKCkgewoJCWlmICggJHRoaXMtPmNvbF9pbmZvICkKCQkJcmV0dXJuOwoKCQlpZ
iAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkkbnVtX2ZpZWxkcyA9IEBteXNxbGlfbnVtX2ZpZWxkcygg
JHRoaXMtPnJlc3VsdCApOwoJCQlmb3IgKCAkaSA9IDA7ICRpIDwgJG51bV9maWVsZHM7ICRpKysgKSB7Cgk
JCQkkdGhpcy0+Y29sX2luZm9bICRpIF0gPSBAbXlzcWxpX2ZldGNoX2ZpZWxkKCAkdGhpcy0+cmVzdWx0IC
k7CgkJCX0KCQl9IGVsc2UgewoJCQkkbnVtX2ZpZWxkcyA9IEBteXNxbF9udW1fZmllbGRzKCAkdGhpcy0+c
mVzdWx0ICk7CgkJCWZvciAoICRpID0gMDsgJGkgPCAkbnVtX2ZpZWxkczsgJGkrKyApIHsKCQkJCSR0aGlz
LT5jb2xfaW5mb1sgJGkgXSA9IEBteXNxbF9mZXRjaF9maWVsZCggJHRoaXMtPnJlc3VsdCwgJGkgKTsKCQk
JfQoJCX0KCX0KCgkvKioKCSAqIFJldHJpZXZlIGNvbHVtbiBtZXRhZGF0YSBmcm9tIHRoZSBsYXN0IHF1ZX
J5LgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmFtIHN0cmluZyAkaW5mb190eXBlICBPcHRpb
25hbC4gVHlwZSBvbmUgb2YgbmFtZSwgdGFibGUsIGRlZiwgbWF4X2xlbmd0aCwgbm90X251bGwsIHByaW1h
cnlfa2V5LCBtdWx0aXBsZV9rZXksIHVuaXF1ZV9rZXksIG51bWVyaWMsIGJsb2IsIHR5cGUsIHVuc2lnbmV
kLCB6ZXJvZmlsbAoJICogQHBhcmFtIGludCAgICAkY29sX29mZnNldCBPcHRpb25hbC4gMDogY29sIG5hbW
UuIDE6IHdoaWNoIHRhYmxlIHRoZSBjb2wncyBpbi4gMjogY29sJ3MgbWF4IGxlbmd0aC4gMzogaWYgdGhlI
GNvbCBpcyBudW1lcmljLiA0OiBjb2wncyB0eXBlCgkgKiBAcmV0dXJuIG1peGVkIENvbHVtbiBSZXN1bHRz
CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfY29sX2luZm8oICRpbmZvX3R5cGUgPSAnbmFtZScsICRjb2x
fb2Zmc2V0ID0gLTEgKSB7CgkJJHRoaXMtPmxvYWRfY29sX2luZm8oKTsKCgkJaWYgKCAkdGhpcy0+Y29sX2
luZm8gKSB7CgkJCWlmICggJGNvbF9vZmZzZXQgPT0gLTEgKSB7CgkJCQkkaSA9IDA7CgkJCQkkbmV3X2Fyc
mF5ID0gYXJyYXkoKTsKCQkJCWZvcmVhY2ggKCAoYXJyYXkpICR0aGlzLT5jb2xfaW5mbyBhcyAkY29sICkg
ewoJCQkJCSRuZXdfYXJyYXlbJGldID0gJGNvbC0+eyRpbmZvX3R5cGV9OwoJCQkJCSRpKys7CgkJCQl9Cgk
JCQlyZXR1cm4gJG5ld19hcnJheTsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiAkdGhpcy0+Y29sX2luZm9bJG
NvbF9vZmZzZXRdLT57JGluZm9fdHlwZX07CgkJCX0KCQl9Cgl9CgoJLyoqCgkgKiBTdGFydHMgdGhlIHRpb
WVyLCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICoKCSAqIEByZXR1
cm4gdHJ1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gdGltZXJfc3RhcnQoKSB7CgkJJHRoaXMtPnRpbWVfc3R
hcnQgPSBtaWNyb3RpbWUoIHRydWUgKTsKCQlyZXR1cm4gdHJ1ZTsKCX0KCgkvKioKCSAqIFN0b3BzIHRoZS
BkZWJ1Z2dpbmcgdGltZXIuCgkgKgoJICogQHNpbmNlIDEuNS4wCgkgKgoJICogQHJldHVybiBmbG9hdCBUb
3RhbCB0aW1lIHNwZW50IG9uIHRoZSBxdWVyeSwgaW4gc2Vjb25kcwoJICovCglwdWJsaWMgZnVuY3Rpb24g
dGltZXJfc3RvcCgpIHsKCQlyZXR1cm4gKCBtaWNyb3RpbWUoIHRydWUgKSAtICR0aGlzLT50aW1lX3N0YXJ
0ICk7Cgl9CgoJLyoqCgkgKiBXcmFwcyBlcnJvcnMgaW4gYSBuaWNlIGhlYWRlciBhbmQgZm9vdGVyIGFuZC
BkaWVzLgoJICoKCSAqIFdpbGwgbm90IGRpZSBpZiB3cGRiOjokc2hvd19lcnJvcnMgaXMgZmFsc2UuCgkgK
goJICogQHNpbmNlIDEuNS4wCgkgKgoJICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZSAgICBUaGUgRXJyb3Ig
bWVzc2FnZQoJICogQHBhcmFtIHN0cmluZyAkZXJyb3JfY29kZSBPcHRpb25hbC4gQSBDb21wdXRlciByZWF
kYWJsZSBzdHJpbmcgdG8gaWRlbnRpZnkgdGhlIGVycm9yLgoJICogQHJldHVybiBmYWxzZXx2b2lkCgkgKi
8KCXB1YmxpYyBmdW5jdGlvbiBiYWlsKCAkbWVzc2FnZSwgJGVycm9yX2NvZGUgPSAnNTAwJyApIHsKCQlpZ
iAoICEkdGhpcy0+c2hvd19lcnJvcnMgKSB7CgkJCWlmICggY2xhc3NfZXhpc3RzKCAnV1BfRXJyb3InLCBm
YWxzZSApICkgewoJCQkJJHRoaXMtPmVycm9yID0gbmV3IFdQX0Vycm9yKCRlcnJvcl9jb2RlLCAkbWVzc2F
nZSk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+ZXJyb3IgPSAkbWVzc2FnZTsKCQkJfQoJCQlyZXR1cm4gZm
Fsc2U7CgkJfQoJCXdwX2RpZSgkbWVzc2FnZSk7Cgl9CgoJLyoqCgkgKiBXaGV0aGVyIE15U1FMIGRhdGFiY
XNlIGlzIGF0IGxlYXN0IHRoZSByZXF1aXJlZCBtaW5pbXVtIHZlcnNpb24uCgkgKgoJICogQHNpbmNlIDIu
NS4wCgkgKgoJICogQGdsb2JhbCBzdHJpbmcgJHdwX3ZlcnNpb24KCSAqIEBnbG9iYWwgc3RyaW5nICRyZXF
1aXJlZF9teXNxbF92ZXJzaW9uCgkgKgoJICogQHJldHVybiBXUF9FcnJvcnx2b2lkCgkgKi8KCXB1YmxpYy
BmdW5jdGlvbiBjaGVja19kYXRhYmFzZV92ZXJzaW9uKCkgewoJCWdsb2JhbCAkd3BfdmVyc2lvbiwgJHJlc
XVpcmVkX215c3FsX3ZlcnNpb247CgkJLy8gTWFrZSBzdXJlIHRoZSBzZXJ2ZXIgaGFzIHRoZSByZXF1aXJl
ZCBNeVNRTCB2ZXJzaW9uCgkJaWYgKCB2ZXJzaW9uX2NvbXBhcmUoJHRoaXMtPmRiX3ZlcnNpb24oKSwgJHJ
lcXVpcmVkX215c3FsX3ZlcnNpb24sICc8JykgKQoJCQlyZXR1cm4gbmV3IFdQX0Vycm9yKCdkYXRhYmFzZV
92ZXJzaW9uJywgc3ByaW50ZiggX18oICc8c3Ryb25nPkVSUk9SPC9zdHJvbmc+OiBXb3JkUHJlc3MgJTEkc
yByZXF1aXJlcyBNeVNRTCAlMiRzIG9yIGhpZ2hlcicgKSwgJHdwX3ZlcnNpb24sICRyZXF1aXJlZF9teXNx
bF92ZXJzaW9uICkpOwoJfQoKCS8qKgoJICogV2hldGhlciB0aGUgZGF0YWJhc2Ugc3VwcG9ydHMgY29sbGF
0aW9uLgoJICoKCSAqIENhbGxlZCB3aGVuIFdvcmRQcmVzcyBpcyBnZW5lcmF0aW5nIHRoZSB0YWJsZSBzY2
hlbWUuCgkgKgoJICogVXNlIGB3cGRiOjpoYXNfY2FwKCAnY29sbGF0aW9uJyApYC4KCSAqCgkgKiBAc2luY
2UgMi41LjAKCSAqIEBkZXByZWNhdGVkIDMuNS4wIFVzZSB3cGRiOjpoYXNfY2FwKCkKCSAqCgkgKiBAcmV0
dXJuIGJvb2wgVHJ1ZSBpZiBjb2xsYXRpb24gaXMgc3VwcG9ydGVkLCBmYWxzZSBpZiB2ZXJzaW9uIGRvZXM
gbm90CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzdXBwb3J0c19jb2xsYXRpb24oKSB7CgkJX2RlcHJlY2F0ZW
RfZnVuY3Rpb24oIF9fRlVOQ1RJT05fXywgJzMuNScsICd3cGRiOjpoYXNfY2FwKCBcJ2NvbGxhdGlvblwnI
CknICk7CgkJcmV0dXJuICR0aGlzLT5oYXNfY2FwKCAnY29sbGF0aW9uJyApOwoJfQoKCS8qKgoJICogVGhl
IGRhdGFiYXNlIGNoYXJhY3RlciBjb2xsYXRlLgoJICoKCSAqIEBzaW5jZSAzLjUuMAoJICoKCSAqIEByZXR
1cm4gc3RyaW5nIFRoZSBkYXRhYmFzZSBjaGFyYWN0ZXIgY29sbGF0ZS4KCSAqLwoJcHVibGljIGZ1bmN0aW
9uIGdldF9jaGFyc2V0X2NvbGxhdGUoKSB7CgkJJGNoYXJzZXRfY29sbGF0ZSA9ICcnOwoKCQlpZiAoICEgZ
W1wdHkoICR0aGlzLT5jaGFyc2V0ICkgKQoJCQkkY2hhcnNldF9jb2xsYXRlID0gIkRFRkFVTFQgQ0hBUkFD
VEVSIFNFVCAkdGhpcy0+Y2hhcnNldCI7CgkJaWYgKCAhIGVtcHR5KCAkdGhpcy0+Y29sbGF0ZSApICkKCQk
JJGNoYXJzZXRfY29sbGF0ZSAuPSAiIENPTExBVEUgJHRoaXMtPmNvbGxhdGUiOwoKCQlyZXR1cm4gJGNoYX
JzZXRfY29sbGF0ZTsKCX0KCgkvKioKCSAqIERldGVybWluZSBpZiBhIGRhdGFiYXNlIHN1cHBvcnRzIGEgc
GFydGljdWxhciBmZWF0dXJlLgoJICoKCSAqIEBz
aW5jZSAyLjcuMAoJICogQHNpbmNlIDQuMS4wIFN1cHBvcnQgd2FzIGFkZGVkIGZvciB0aGUgJ3V0ZjhtYjQ
nIGZlYXR1cmUuCgkgKgoJICogQHNlZSB3cGRiOjpkYl92ZXJzaW9uKCkKCSAqCgkgKiBAcGFyYW0gc3RyaW
5nICRkYl9jYXAgVGhlIGZlYXR1cmUgdG8gY2hlY2sgZm9yLiBBY2NlcHRzICdjb2xsYXRpb24nLAoJICogI
CAgICAgICAgICAgICAgICAgICAgICdncm91cF9jb25jYXQnLCAnc3VicXVlcmllcycsICdzZXRfY2hhcnNl
dCcsCgkgKiAgICAgICAgICAgICAgICAgICAgICAgb3IgJ3V0ZjhtYjQnLgoJICogQHJldHVybiBpbnR8ZmF
sc2UgV2hldGhlciB0aGUgZGF0YWJhc2UgZmVhdHVyZSBpcyBzdXBwb3J0ZWQsIGZhbHNlIG90aGVyd2lzZS
4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGhhc19jYXAoICRkYl9jYXAgKSB7CgkJJHZlcnNpb24gPSAkdGhpc
y0+ZGJfdmVyc2lvbigpOwoKCQlzd2l0Y2ggKCBzdHJ0b2xvd2VyKCAkZGJfY2FwICkgKSB7CgkJCWNhc2Ug
J2NvbGxhdGlvbicgOiAgICAvLyBAc2luY2UgMi41LjAKCQkJY2FzZSAnZ3JvdXBfY29uY2F0JyA6IC8vIEB
zaW5jZSAyLjcuMAoJCQljYXNlICdzdWJxdWVyaWVzJyA6ICAgLy8gQHNpbmNlIDIuNy4wCgkJCQlyZXR1cm
4gdmVyc2lvbl9jb21wYXJlKCAkdmVyc2lvbiwgJzQuMScsICc+PScgKTsKCQkJY2FzZSAnc2V0X2NoYXJzZ
XQnIDoKCQkJCXJldHVybiB2ZXJzaW9uX2NvbXBhcmUoICR2ZXJzaW9uLCAnNS4wLjcnLCAnPj0nICk7CgkJ
CWNhc2UgJ3V0ZjhtYjQnIDogICAgICAvLyBAc2luY2UgNC4xLjAKCQkJCWlmICggdmVyc2lvbl9jb21wYXJ
lKCAkdmVyc2lvbiwgJzUuNS4zJywgJzwnICkgKSB7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQkJaW
YgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJCQkkY2xpZW50X3ZlcnNpb24gPSBteXNxbGlfZ2V0X2Nsa
WVudF9pbmZvKCk7CgkJCQl9IGVsc2UgewoJCQkJCSRjbGllbnRfdmVyc2lvbiA9IG15c3FsX2dldF9jbGll
bnRfaW5mbygpOwoJCQkJfQoKCQkJCS8qCgkJCQkgKiBsaWJteXNxbCBoYXMgc3VwcG9ydGVkIHV0ZjhtYjQ
gc2luY2UgNS41LjMsIHNhbWUgYXMgdGhlIE15U1FMIHNlcnZlci4KCQkJCSAqIG15c3FsbmQgaGFzIHN1cH
BvcnRlZCB1dGY4bWI0IHNpbmNlIDUuMC45LgoJCQkJICovCgkJCQlpZiAoIGZhbHNlICE9PSBzdHJwb3MoI
CRjbGllbnRfdmVyc2lvbiwgJ215c3FsbmQnICkgKSB7CgkJCQkJJGNsaWVudF92ZXJzaW9uID0gcHJlZ19y
ZXBsYWNlKCAnL15cRCsoW1xkLl0rKS4qLycsICckMScsICRjbGllbnRfdmVyc2lvbiApOwoJCQkJCXJldHV
ybiB2ZXJzaW9uX2NvbXBhcmUoICRjbGllbnRfdmVyc2lvbiwgJzUuMC45JywgJz49JyApOwoJCQkJfSBlbH
NlIHsKCQkJCQlyZXR1cm4gdmVyc2lvbl9jb21wYXJlKCAkY2xpZW50X3ZlcnNpb24sICc1LjUuMycsICc+P
ScgKTsKCQkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIFJldHJpZXZlIHRoZSBuYW1l
IG9mIHRoZSBmdW5jdGlvbiB0aGF0IGNhbGxlZCB3cGRiLgoJICoKCSAqIFNlYXJjaGVzIHVwIHRoZSBsaXN
0IG9mIGZ1bmN0aW9ucyB1bnRpbCBpdCByZWFjaGVzCgkgKiB0aGUgb25lIHRoYXQgd291bGQgbW9zdCBsb2
dpY2FsbHkgaGFkIGNhbGxlZCB0aGlzIG1ldGhvZC4KCSAqCgkgKiBAc2luY2UgMi41LjAKCSAqCgkgKiBAc
mV0dXJuIHN0cmluZ3xhcnJheSBUaGUgbmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbgoJICovCglwdWJs
aWMgZnVuY3Rpb24gZ2V0X2NhbGxlcigpIHsKCQlyZXR1cm4gd3BfZGVidWdfYmFja3RyYWNlX3N1bW1hcnk
oIF9fQ0xBU1NfXyApOwoJfQoKCS8qKgoJICogVGhlIGRhdGFiYXNlIHZlcnNpb24gbnVtYmVyLgoJICoKCS
AqIEBzaW5jZSAyLjcuMAoJICoKCSAqIEByZXR1cm4gbnVsbHxzdHJpbmcgTnVsbCBvbiBmYWlsdXJlLCB2Z
XJzaW9uIG51bWJlciBvbiBzdWNjZXNzLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZGJfdmVyc2lvbigpIHsK
CQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkkc2VydmVyX2luZm8gPSBteXNxbGlfZ2V0X3NlcnZ
lcl9pbmZvKCAkdGhpcy0+ZGJoICk7CgkJfSBlbHNlIHsKCQkJJHNlcnZlcl9pbmZvID0gbXlzcWxfZ2V0X3
NlcnZlcl9pbmZvKCAkdGhpcy0+ZGJoICk7CgkJfQoJCXJldHVybiBwcmVnX3JlcGxhY2UoICcvW14wLTkuX
S4qLycsICcnLCAkc2VydmVyX2luZm8gKTsKCX0KfQo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/classes/wp-
db.php,importbuddy/classes/wp-db.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/classes/wp-
db_NEW.php,importbuddy/classes/wp-db_NEW.php
PD9waHAKLy8gd3BkLWRiLnBocCBtb2RpZmllZCBmb3IgQkIgdjYuMC4wLjYgdG8gc3RvcmUgc2V0IGNoYXJ
zZXQgaW4gJHdwZGItPmNoYXJzZXQgZm9yIHV0Zm1iNCBoYW5kbGluZyB3aXRoIG15c3FsYnVkZHkgaW4gc2
V0X2NoYXJzZXQoKS4gSGFzIGNvbW1lbnQgIkFkZGVkIGZvciBCYWNrdXBCdWRkeSIgYnkgY2hhbmdlcy4KL
y8gTk9URTogQSBjb3B5IG9mIHRoaXMgZmlsZSBpcyBkcm9wcGVkIGludG8gX3JvbGxiYWNrX3VuZG8ucGhw
LgoKCgoKCi8qKgogKiBXb3JkUHJlc3MgREIgQ2xhc3MKICoKICogT3JpZ2luYWwgY29kZSBmcm9tIHtAbGl
uayBodHRwOi8vcGhwLmp1c3RpbnZpbmNlbnQuY29tIEp1c3RpbiBWaW5jZW50IChqdXN0aW5AdmlzdW5ldC
5pZSl9CiAqCiAqIEBwYWNrYWdlIFdvcmRQcmVzcwogKiBAc3VicGFja2FnZSBEYXRhYmFzZQogKiBAc2luY
2UgMC43MQogKi8KCi8qKgogKiBAc2luY2UgMC43MQogKi8KZGVmaW5lKCAnRVpTUUxfVkVSU0lPTicsICdX
UDEuMjUnICk7CgovKioKICogQHNpbmNlIDAuNzEKICovCmRlZmluZSggJ09CSkVDVCcsICdPQkpFQ1QnICk
7CmRlZmluZSggJ29iamVjdCcsICdPQkpFQ1QnICk7IC8vIEJhY2sgY29tcGF0LgoKLyoqCiAqIEBzaW5jZS
AyLjUuMAogKi8KZGVmaW5lKCAnT0JKRUNUX0snLCAnT0JKRUNUX0snICk7CgovKioKICogQHNpbmNlIDAuN
zEKICovCmRlZmluZSggJ0FSUkFZX0EnLCAnQVJSQVlfQScgKTsKCi8qKgogKiBAc2luY2UgMC43MQogKi8K
ZGVmaW5lKCAnQVJSQVlfTicsICdBUlJBWV9OJyApOwoKLyoqCiAqIFdvcmRQcmVzcyBEYXRhYmFzZSBBY2N
lc3MgQWJzdHJhY3Rpb24gT2JqZWN0CiAqCiAqIEl0IGlzIHBvc3NpYmxlIHRvIHJlcGxhY2UgdGhpcyBjbG
FzcyB3aXRoIHlvdXIgb3duCiAqIGJ5IHNldHRpbmcgdGhlICR3cGRiIGdsb2JhbCB2YXJpYWJsZSBpbiB3c
C1jb250ZW50L2RiLnBocAogKiBmaWxlIHRvIHlvdXIgY2xhc3MuIFRoZSB3cGRiIGNsYXNzIHdpbGwgc3Rp
bGwgYmUgaW5jbHVkZWQsCiAqIHNvIHlvdSBjYW4gZXh0ZW5kIGl0IG9yIHNpbXBseSB1c2UgeW91ciBvd24
uCiAqCiAqIEBsaW5rIGh0dHBzOi8vY29kZXgud29yZHByZXNzLm9yZy9GdW5jdGlvbl9SZWZlcmVuY2Uvd3
BkYl9DbGFzcwogKgogKiBAcGFja2FnZSBXb3JkUHJlc3MKICogQHN1YnBhY2thZ2UgRGF0YWJhc2UKICogQ
HNpbmNlIDAuNzEKICovCmNsYXNzIHdwZGIgewoKCS8qKgoJICogV2hldGhlciB0byBzaG93IFNRTC9EQiBl
cnJvcnMuCgkgKgoJICogRGVmYXVsdCBiZWhhdmlvciBpcyB0byBzaG93IGVycm9ycyBpZiBib3RoIFdQX0R
FQlVHIGFuZCBXUF9ERUJVR19ESVNQTEFZCgkgKiBldmFsdWF0ZWQgdG8gdHJ1ZS4KCSAqCgkgKiBAc2luY2
UgMC43MQoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGJvb2wKCSAqLwoJdmFyICRzaG93X2Vycm9yc
yA9IGZhbHNlOwoKCS8qKgoJICogV2hldGhlciB0byBzdXBwcmVzcyBlcnJvcnMgZHVyaW5nIHRoZSBEQiBi
b290c3RyYXBwaW5nLgoJICoKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHNpbmNlIDIuNS4wCgkgKiBAdmF
yIGJvb2wKCSAqLwoJdmFyICRzdXBwcmVzc19lcnJvcnMgPSBmYWxzZTsKCgkvKioKCSAqIFRoZSBsYXN0IG
Vycm9yIGR1cmluZyBxdWVyeS4KCSAqCgkgKiBAc2luY2UgMi41LjAKCSAqIEB2YXIgc3RyaW5nCgkgKi8KC
XB1YmxpYyAkbGFzdF9lcnJvciA9ICcnOwoKCS8qKgoJICogQW1vdW50IG9mIHF1ZXJpZXMgbWFkZQoJICoK
CSAqIEBzaW5jZSAxLjIuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgaW50CgkgKi8KCXB1YmxpYyA
kbnVtX3F1ZXJpZXMgPSAwOwoKCS8qKgoJICogQ291bnQgb2Ygcm93cyByZXR1cm5lZCBieSBwcmV2aW91cy
BxdWVyeQoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBpbnQKCSAqL
woJcHVibGljICRudW1fcm93cyA9IDA7CgoJLyoqCgkgKiBDb3VudCBvZiBhZmZlY3RlZCByb3dzIGJ5IHBy
ZXZpb3VzIHF1ZXJ5CgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciB
pbnQKCSAqLwoJdmFyICRyb3dzX2FmZmVjdGVkID0gMDsKCgkvKioKCSAqIFRoZSBJRCBnZW5lcmF0ZWQgZm
9yIGFuIEFVVE9fSU5DUkVNRU5UIGNvbHVtbiBieSB0aGUgcHJldmlvdXMgcXVlcnkgKHVzdWFsbHkgSU5TR
VJUKS4KCSAqCgkgKiBAc2luY2UgMC43MQoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgaW50CgkgKi8K
CXB1YmxpYyAkaW5zZXJ0X2lkID0gMDsKCgkvKioKCSAqIExhc3QgcXVlcnkgbWFkZQoJICoKCSAqIEBzaW5
jZSAwLjcxCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRsYXN0X3F1ZX
J5OwoKCS8qKgoJICogUmVzdWx0cyBvZiB0aGUgbGFzdCBxdWVyeSBtYWRlCgkgKgoJICogQHNpbmNlIDAuN
zEKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheXxudWxsCgkgKi8KCXZhciAkbGFzdF9yZXN1
bHQ7CgoJLyoqCgkgKiBNeVNRTCByZXN1bHQsIHdoaWNoIGlzIGVpdGhlciBhIHJlc291cmNlIG9yIGJvb2x
lYW4uCgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIG1peGVkCg
kgKi8KCXByb3RlY3RlZCAkcmVzdWx0OwoKCS8qKgoJICogQ2FjaGVkIGNvbHVtbiBpbmZvLCBmb3Igc2Fua
XR5IGNoZWNraW5nIGRhdGEgYmVmb3JlIGluc2VydGluZwoJICoKCSAqIEBzaW5jZSA0LjIuMAoJICogQGFj
Y2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHJvdGVjdGVkICRjb2xfbWV0YSA9IGFycmF
5KCk7CgoJLyoqCgkgKiBDYWxjdWxhdGVkIGNoYXJhY3RlciBzZXRzIG9uIHRhYmxlcwoJICoKCSAqIEBzaW
5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHJvdGVjdGVkI
CR0YWJsZV9jaGFyc2V0ID0gYXJyYXkoKTsKCgkvKioKCSAqIFdoZXRoZXIgdGV4dCBmaWVsZHMgaW4gdGhl
IGN1cnJlbnQgcXVlcnkgbmVlZCB0byBiZSBzYW5pdHkgY2hlY2tlZC4KCSAqCgkgKiBAc2luY2UgNC4yLjA
KCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIGJvb2wKCSAqLwoJcHJvdGVjdGVkICRjaGVja19jdX
JyZW50X3F1ZXJ5ID0gdHJ1ZTsKCgkvKioKCSAqIEZsYWcgdG8gZW5zdXJlIHdlIGRvbid0IHJ1biBpbnRvI
HJlY3Vyc2lvbiBwcm9ibGVtcyB3aGVuIGNoZWNraW5nIHRoZSBjb2xsYXRpb24uCgkgKgoJICogQHNpbmNl
IDQuMi4wCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEBzZWUgd3BkYjo6Y2hlY2tfc2FmZV9jb2xsYXRpb24
oKQoJICogQHZhciBib29sCgkgKi8KCXByaXZhdGUgJGNoZWNraW5nX2NvbGxhdGlvbiA9IGZhbHNlOwoKCS
8qKgoJICogU2F2ZWQgaW5mbyBvbiB0aGUgdGFibGUgY29sdW1uCgkgKgoJICogQHNpbmNlIDAuNzEKCSAqI
EBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIGFycmF5CgkgKi8KCXByb3RlY3RlZCAkY29sX2luZm87CgoJ
LyoqCgkgKiBTYXZlZCBxdWVyaWVzIHRoYXQgd2VyZSBleGVjdXRlZAoJICoKCSAqIEBzaW5jZSAxLjUuMAo
JICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkcXVlcmllczsKCgkvKioKCS
AqIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgcmVjb25uZWN0aW5nIGJlZm9yZSBkeWluZy4KCSAqC
gkgKiBAc2luY2UgMy45LjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAc2VlIHdwZGI6OmNoZWNrX2Nv
bm5lY3Rpb24oKQoJICogQHZhciBpbnQKCSAqLwoJcHJvdGVjdGVkICRyZWNvbm5lY3RfcmV0cmllcyA9IDU
7CgoJLyoqCgkgKiBXb3JkUHJlc3MgdGFibGUgcHJlZml4CgkgKgoJICogWW91IGNhbiBzZXQgdGhpcyB0by
BoYXZlIG11bHRpcGxlIFdvcmRQcmVzcyBpbnN0YWxsYXRpb25zCgkgKiBpbiBhIHNpbmdsZSBkYXRhYmFzZ
S4gVGhlIHNlY29uZCByZWFzb24gaXMgZm9yIHBvc3NpYmxlCgkgKiBzZWN1cml0eSBwcmVjYXV0aW9ucy4K
CSAqCgkgKiBAc2luY2UgMi41LjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCgl
wdWJsaWMgJHByZWZpeCA9ICcnOwoKCS8qKgoJICogV29yZFByZXNzIGJhc2UgdGFibGUgcHJlZml4LgoJIC
oKCSAqIEBzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCSBwd
WJsaWMgJGJhc2VfcHJlZml4OwoKCS8qKgoJICogV2hldGhlciB0aGUgZGF0YWJhc2UgcXVlcmllcyBhcmUg
cmVhZHkgdG8gc3RhcnQgZXhlY3V0aW5nLgoJICoKCSAqIEBzaW5jZSAyLjMuMgoJICogQGFjY2VzcyBwcml
2YXRlCgkgKiBAdmFyIGJvb2wKCSAqLwoJdmFyICRyZWFkeSA9IGZhbHNlOwoKCS8qKgoJICogQmxvZyBJRC
4KCSAqCgkgKiBAc2luY2UgMy4wLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIGludAoJICovCglwd
WJsaWMgJGJsb2dpZCA9IDA7CgoJLyoqCgkgKiBTaXRlIElELgoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICog
QGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgaW50CgkgKi8KCXB1YmxpYyAkc2l0ZWlkID0gMDsKCgkvKioKCSA
qIExpc3Qgb2YgV29yZFByZXNzIHBlci1ibG9nIHRhYmxlcwoJICoKCSAqIEBzaW5jZSAyLjUuMAoJICogQG
FjY2VzcyBwcml2YXRlCgkgKiBAc2VlIHdwZGI6OnRhYmxlcygpCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhc
iAkdGFibGVzID0gYXJyYXkoICdwb3N0cycsICdjb21tZW50cycsICdsaW5rcycsICdvcHRpb25zJywgJ3Bv
c3RtZXRhJywKCQkndGVybXMnLCAndGVybV90YXhvbm9teScsICd0ZXJtX3JlbGF0aW9uc2hpcHMnLCAndGV
ybW1ldGEnLCAnY29tbWVudG1ldGEnICk7CgoJLyoqCgkgKiBMaXN0IG9mIGRlcHJlY2F0ZWQgV29yZFByZX
NzIHRhYmxlcwoJICoKCSAqIGNhdGVnb3JpZXMsIHBvc3QyY2F0LCBhbmQgbGluazJjYXQgd2VyZSBkZXByZ
WNhdGVkIGluIDIuMy4wLCBkYiB2ZXJzaW9uIDU1MzkKCSAqCgkgKiBAc2luY2UgMi45LjAKCSAqIEBhY2Nl
c3MgcHJpdmF0ZQoJICogQHNlZSB3cGRiOjp0YWJsZXMoKQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJG9
sZF90YWJsZXMgPSBhcnJheSggJ2NhdGVnb3JpZXMnLCAncG9zdDJjYXQnLCAnbGluazJjYXQnICk7CgoJLy
oqCgkgKiBMaXN0IG9mIFdvcmRQcmVzcyBnbG9iYWwgdGFibGVzCgkgKgoJICogQHNpbmNlIDMuMC4wCgkgK
iBAYWNjZXNzIHByaXZhdGUKCSAqIEBzZWUgd3BkYjo6dGFibGVzKCkKCSAqIEB2YXIgYXJyYXkKCSAqLwoJ
dmFyICRnbG9iYWxfdGFibGVzID0gYXJyYXkoICd1c2VycycsICd1c2VybWV0YScgKTsKCgkvKioKCSAqIEx
pc3Qgb2YgTXVsdGlzaXRlIGdsb2JhbCB0YWJsZXMKCSAqCgkgKiBAc2luY2UgMy4wLjAKCSAqIEBhY2Nlc3
MgcHJpdmF0ZQoJICogQHNlZSB3cGRiOjp0YWJsZXMoKQoJICogQHZhciBhcnJheQoJICovCgl2YXIgJG1zX
2dsb2JhbF90YWJsZXMgPSBhcnJheSggJ2Jsb2dzJywgJ3NpZ251cHMnLCAnc2l0ZScsICdzaXRlbWV0YScs
CgkJJ3NpdGVjYXRlZ29yaWVzJywgJ3JlZ2lzdHJhdGlvbl9sb2cnLCAnYmxvZ192ZXJzaW9ucycgKTsKCgk
vKioKCSAqIFdvcmRQcmVzcyBDb21tZW50cyB0YWJsZQoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICogQGFjY2
VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkY29tbWVudHM7CgoJLyoqCgkgKiBXb
3JkUHJlc3MgQ29tbWVudCBNZXRhZGF0YSB0YWJsZQoJICoKCSAqIEBzaW5jZSAyLjkuMAoJICogQGFjY2Vz
cyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkY29tbWVudG1ldGE7CgoJLyoqCgkgKiB
Xb3JkUHJlc3MgTGlua3MgdGFibGUKCSAqCgkgKiBAc2luY2UgMS41LjAKCSAqIEBhY2Nlc3MgcHVibGljCg
kgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWMgJGxpbmtzOwoKCS8qKgoJICogV29yZFByZXNzIE9wdGlvb
nMgdGFibGUKCSAqCgkgKiBAc2luY2UgMS41LjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmlu
ZwoJICovCglwdWJsaWMgJG9wdGlvbnM7CgoJLyoqCgkgKiBXb3JkUHJlc3MgUG9zdCBNZXRhZGF0YSB0YWJ
sZQoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi
8KCXB1YmxpYyAkcG9zdG1ldGE7CgoJLyoqCgkgKiBXb3JkUHJlc3MgUG9zdHMgdGFibGUKCSAqCgkgKiBAc
2luY2UgMS41LjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWMgJHBv
c3RzOwoKCS8qKgoJICogV29yZFByZXNzIFRlcm1zIHRhYmxlCgkgKgoJICogQHNpbmNlIDIuMy4wCgkgKiB
AYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICR0ZXJtczsKCgkvKioKCSAqIF
dvcmRQcmVzcyBUZXJtIFJlbGF0aW9uc2hpcHMgdGFibGUKCSAqCgkgKiBAc2luY2UgMi4zLjAKCSAqIEBhY
2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWMgJHRlcm1fcmVsYXRpb25zaGlwczsK
CgkvKioKCSAqIFdvcmRQcmVzcyBUZXJtIFRheG9ub215IHRhYmxlCgkgKgoJICogQHNpbmNlIDIuMy4wCgk
gKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICR0ZXJtX3RheG9ub215Ow
oKCS8qKgoJICogV29yZFByZXNzIFRlcm0gTWV0YSB0YWJsZS4KCSAqCgkgKiBAc2luY2UgNC40LjAKCSAqI
EBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWMgJHRlcm1tZXRhOwoKCS8vCgkv
LyBHbG9iYWwgYW5kIE11bHRpc2l0ZSB0YWJsZXMKCS8vCgoJLyoqCgkgKiBXb3JkUHJlc3MgVXNlciBNZXR
hZGF0YSB0YWJsZQoJICoKCSAqIEBzaW5jZSAyLjMuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3
RyaW5nCgkgKi8KCXB1YmxpYyAkdXNlcm1ldGE7CgoJLyoqCgkgKiBXb3JkUHJlc3MgVXNlcnMgdGFibGUKC
SAqCgkgKiBAc2luY2UgMS41LjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglw
dWJsaWMgJHVzZXJzOwoKCS8qKgoJICogTXVsdGlzaXRlIEJsb2dzIHRhYmxlCgkgKgoJICogQHNpbmNlIDM
uMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRibG9nczsKCg
kvKioKCSAqIE11bHRpc2l0ZSBCbG9nIFZlcnNpb25zIHRhYmxlCgkgKgoJICogQHNpbmNlIDMuMC4wCgkgK
iBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRibG9nX3ZlcnNpb25zOwoK
CS8qKgoJICogTXVsdGlzaXRlIFJlZ2lzdHJhdGlvbiBMb2cgdGFibGUKCSAqCgkgKiBAc2luY2UgMy4wLjA
KCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWMgJHJlZ2lzdHJhdGlvbl
9sb2c7CgoJLyoqCgkgKiBNdWx0aXNpdGUgU2lnbnVwcyB0YWJsZQoJICoKCSAqIEBzaW5jZSAzLjAuMAoJI
CogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkc2lnbnVwczsKCgkvKioK
CSAqIE11bHRpc2l0ZSBTaXRlcyB0YWJsZQoJICo
KCSAqIEBzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1Ym
xpYyAkc2l0ZTsKCgkvKioKCSAqIE11bHRpc2l0ZSBTaXRld2lkZSBUZXJtcyB0YWJsZQoJICoKCSAqIEBza
W5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkc2l0
ZWNhdGVnb3JpZXM7CgoJLyoqCgkgKiBNdWx0aXNpdGUgU2l0ZSBNZXRhZGF0YSB0YWJsZQoJICoKCSAqIEB
zaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkc2
l0ZW1ldGE7CgoJLyoqCgkgKiBGb3JtYXQgc3BlY2lmaWVycyBmb3IgREIgY29sdW1ucy4gQ29sdW1ucyBub
3QgbGlzdGVkIGhlcmUgZGVmYXVsdCB0byAlcy4gSW5pdGlhbGl6ZWQgZHVyaW5nIFdQIGxvYWQuCgkgKgoJ
ICogS2V5cyBhcmUgY29sdW1uIG5hbWVzLCB2YWx1ZXMgYXJlIGZvcm1hdCB0eXBlczogJ0lEJyA9PiAnJWQ
nCgkgKgoJICogQHNpbmNlIDIuOC4wCgkgKiBAc2VlIHdwZGI6OnByZXBhcmUoKQoJICogQHNlZSB3cGRiOj
ppbnNlcnQoKQoJICogQHNlZSB3cGRiOjp1cGRhdGUoKQoJICogQHNlZSB3cGRiOjpkZWxldGUoKQoJICogQ
HNlZSB3cF9zZXRfd3BkYl92YXJzKCkKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIGFycmF5CgkgKi8K
CXB1YmxpYyAkZmllbGRfdHlwZXMgPSBhcnJheSgpOwoKCS8qKgoJICogRGF0YWJhc2UgdGFibGUgY29sdW1
ucyBjaGFyc2V0CgkgKgoJICogQHNpbmNlIDIuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdH
JpbmcKCSAqLwoJcHVibGljICRjaGFyc2V0OwoKCS8qKgoJICogRGF0YWJhc2UgdGFibGUgY29sdW1ucyBjb
2xsYXRlCgkgKgoJICogQHNpbmNlIDIuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcK
CSAqLwoJcHVibGljICRjb2xsYXRlOwoKCS8qKgoJICogRGF0YWJhc2UgVXNlcm5hbWUKCSAqCgkgKiBAc2l
uY2UgMi45LjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIHN0cmluZwoJICovCglwcm90ZWN0ZW
QgJGRidXNlcjsKCgkvKioKCSAqIERhdGFiYXNlIFBhc3N3b3JkCgkgKgoJICogQHNpbmNlIDMuMS4wCgkgK
iBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBzdHJpbmcKCSAqLwoJcHJvdGVjdGVkICRkYnBhc3N3b3Jk
OwoKCS8qKgoJICogRGF0YWJhc2UgTmFtZQoJICoKCSAqIEBzaW5jZSAzLjEuMAoJICogQGFjY2VzcyBwcm9
0ZWN0ZWQKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByb3RlY3RlZCAkZGJuYW1lOwoKCS8qKgoJICogRGF0YW
Jhc2UgSG9zdAoJICoKCSAqIEBzaW5jZSAzLjEuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgc
3RyaW5nCgkgKi8KCXByb3RlY3RlZCAkZGJob3N0OwoKCS8qKgoJICogRGF0YWJhc2UgSGFuZGxlCgkgKgoJ
ICogQHNpbmNlIDAuNzEKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIHN0cmluZwoJICovCglwcm9
0ZWN0ZWQgJGRiaDsKCgkvKioKCSAqIEEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgbGFzdCBxdWVyeS
9nZXRfcm93L2dldF92YXIgY2FsbAoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKC
SAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkZnVuY19jYWxsOwoKCS8qKgoJICogV2hldGhlciBNeVNR
TCBpcyB1c2VkIGFzIHRoZSBkYXRhYmFzZSBlbmdpbmUuCgkgKgoJICogU2V0IGluIFdQREI6OmRiX2Nvbm5
lY3QoKSB0byB0cnVlLCBieSBkZWZhdWx0LiBUaGlzIGlzIHVzZWQgd2hlbiBjaGVja2luZwoJICogYWdhaW
5zdCB0aGUgcmVxdWlyZWQgTXlTUUwgdmVyc2lvbiBmb3IgV29yZFByZXNzLiBOb3JtYWxseSwgYSByZXBsY
WNlbWVudAoJICogZGF0YWJhc2UgZHJvcC1pbiAoZGIucGhwKSB3aWxsIHNraXAgdGhlc2UgY2hlY2tzLCBi
dXQgc2V0dGluZyB0aGlzIHRvIHRydWUKCSAqIHdpbGwgZm9yY2UgdGhlIGNoZWNrcyB0byBvY2N1ci4KCSA
qCgkgKiBAc2luY2UgMy4zLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIGJvb2wKCSAqLwoJcHVibG
ljICRpc19teXNxbCA9IG51bGw7CgoJLyoqCgkgKiBBIGxpc3Qgb2YgaW5jb21wYXRpYmxlIFNRTCBtb2Rlc
y4KCSAqCgkgKiBAc2luY2UgMy45LjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIGFycmF5Cgkg
Ki8KCXByb3RlY3RlZCAkaW5jb21wYXRpYmxlX21vZGVzID0gYXJyYXkoICdOT19aRVJPX0RBVEUnLCAnT05
MWV9GVUxMX0dST1VQX0JZJywKCQknU1RSSUNUX1RSQU5TX1RBQkxFUycsICdTVFJJQ1RfQUxMX1RBQkxFUy
csICdUUkFESVRJT05BTCcgKTsKCgkvKioKCSAqIFdoZXRoZXIgdG8gdXNlIG15c3FsaSBvdmVyIG15c3FsL
goJICoKCSAqIEBzaW5jZSAzLjkuMAoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGJvb2wKCSAqLwoJ
cHJpdmF0ZSAkdXNlX215c3FsaSA9IGZhbHNlOwoKCS8qKgoJICogV2hldGhlciB3ZSd2ZSBtYW5hZ2VkIHR
vIHN1Y2Nlc3NmdWxseSBjb25uZWN0IGF0IHNvbWUgcG9pbnQKCSAqCgkgKiBAc2luY2UgMy45LjAKCSAqIE
BhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBib29sCgkgKi8KCXByaXZhdGUgJGhhc19jb25uZWN0ZWQgPSBmY
WxzZTsKCgkvKioKCSAqIENvbm5lY3RzIHRvIHRoZSBkYXRhYmFzZSBzZXJ2ZXIgYW5kIHNlbGVjdHMgYSBk
YXRhYmFzZQoJICoKCSAqIFBIUDUgc3R5bGUgY29uc3RydWN0b3IgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB
QSFA1LiBEb2VzCgkgKiB0aGUgYWN0dWFsIHNldHRpbmcgdXAgb2YgdGhlIGNsYXNzIHByb3BlcnRpZXMgYW
5kIGNvbm5lY3Rpb24KCSAqIHRvIHRoZSBkYXRhYmFzZS4KCSAqCgkgKiBAbGluayBodHRwczovL2NvcmUud
HJhYy53b3JkcHJlc3Mub3JnL3RpY2tldC8zMzU0CgkgKiBAc2luY2UgMi4wLjgKCSAqCgkgKiBAZ2xvYmFs
IHN0cmluZyAkd3BfdmVyc2lvbgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGRidXNlciAgICAgTXlTUUwgZGF
0YWJhc2UgdXNlcgoJICogQHBhcmFtIHN0cmluZyAkZGJwYXNzd29yZCBNeVNRTCBkYXRhYmFzZSBwYXNzd2
9yZAoJICogQHBhcmFtIHN0cmluZyAkZGJuYW1lICAgICBNeVNRTCBkYXRhYmFzZSBuYW1lCgkgKiBAcGFyY
W0gc3RyaW5nICRkYmhvc3QgICAgIE15U1FMIGRhdGFiYXNlIGhvc3QKCSAqLwoJcHVibGljIGZ1bmN0aW9u
IF9fY29uc3RydWN0KCAkZGJ1c2VyLCAkZGJwYXNzd29yZCwgJGRibmFtZSwgJGRiaG9zdCApIHsKCQlyZWd
pc3Rlcl9zaHV0ZG93bl9mdW5jdGlvbiggYXJyYXkoICR0aGlzLCAnX19kZXN0cnVjdCcgKSApOwoKCQlpZi
AoIFdQX0RFQlVHICYmIFdQX0RFQlVHX0RJU1BMQVkgKQoJCQkkdGhpcy0+c2hvd19lcnJvcnMoKTsKCgkJL
yogVXNlIGV4dC9teXNxbGkgaWYgaXQgZXhpc3RzIGFuZDoKCQkgKiAgLSBXUF9VU0VfRVhUX01ZU1FMIGlz
IGRlZmluZWQgYXMgZmFsc2UsIG9yCgkJICogIC0gV2UgYXJlIGEgZGV2ZWxvcG1lbnQgdmVyc2lvbiBvZiB
Xb3JkUHJlc3MsIG9yCgkJICogIC0gV2UgYXJlIHJ1bm5pbmcgUEhQIDUuNSBvciBncmVhdGVyLCBvcgoJCS
AqICAtIGV4dC9teXNxbCBpcyBub3QgbG9hZGVkLgoJCSAqLwoJCWlmICggZnVuY3Rpb25fZXhpc3RzKCAnb
XlzcWxpX2Nvbm5lY3QnICkgKSB7CgkJCWlmICggZGVmaW5lZCggJ1dQX1VTRV9FWFRfTVlTUUwnICkgKSB7
CgkJCQkkdGhpcy0+dXNlX215c3FsaSA9ICEgV1BfVVNFX0VYVF9NWVNRTDsKCQkJfSBlbHNlaWYgKCB2ZXJ
zaW9uX2NvbXBhcmUoIHBocHZlcnNpb24oKSwgJzUuNScsICc+PScgKSB8fCAhIGZ1bmN0aW9uX2V4aXN0cy
ggJ215c3FsX2Nvbm5lY3QnICkgKSB7CgkJCQkkdGhpcy0+dXNlX215c3FsaSA9IHRydWU7CgkJCX0gZWxzZ
WlmICggZmFsc2UgIT09IHN0cnBvcyggJEdMT0JBTFNbJ3dwX3ZlcnNpb24nXSwgJy0nICkgKSB7CgkJCQkk
dGhpcy0+dXNlX215c3FsaSA9IHRydWU7CgkJCX0KCQl9CgoJCSR0aGlzLT5kYnVzZXIgPSAkZGJ1c2VyOwo
JCSR0aGlzLT5kYnBhc3N3b3JkID0gJGRicGFzc3dvcmQ7CgkJJHRoaXMtPmRibmFtZSA9ICRkYm5hbWU7Cg
kJJHRoaXMtPmRiaG9zdCA9ICRkYmhvc3Q7CgoJCS8vIHdwLWNvbmZpZy5waHAgY3JlYXRpb24gd2lsbCBtY
W51YWxseSBjb25uZWN0IHdoZW4gcmVhZHkuCgkJaWYgKCBkZWZpbmVkKCAnV1BfU0VUVVBfQ09ORklHJyAp
ICkgewoJCQlyZXR1cm47CgkJfQoKCQkkdGhpcy0+ZGJfY29ubmVjdCgpOwoJfQoKCS8qKgoJICogUEhQNSB
zdHlsZSBkZXN0cnVjdG9yIGFuZCB3aWxsIHJ1biB3aGVuIGRhdGFiYXNlIG9iamVjdCBpcyBkZXN0cm95ZW
QuCgkgKgoJICogQHNlZSB3cGRiOjpfX2NvbnN0cnVjdCgpCgkgKiBAc2luY2UgMi4wLjgKCSAqIEByZXR1c
m4gdHJ1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpIHsKCQlyZXR1cm4gdHJ1ZTsKCX0K
CgkvKioKCSAqIE1ha2VzIHByaXZhdGUgcHJvcGVydGllcyByZWFkYWJsZSBmb3IgYmFja3dhcmQgY29tcGF
0aWJpbGl0eS4KCSAqCgkgKiBAc2luY2UgMy41LjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lIFRoZS
Bwcml2YXRlIG1lbWJlciB0byBnZXQsIGFuZCBvcHRpb25hbGx5IHByb2Nlc3MKCSAqIEByZXR1cm4gbWl4Z
WQgVGhlIHByaXZhdGUgbWVtYmVyCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2dldCggJG5hbWUgKSB7CgkJ
aWYgKCAnY29sX2luZm8nID09PSAkbmFtZSApCgkJCSR0aGlzLT5sb2FkX2NvbF9pbmZvKCk7CgoJCXJldHV
ybiAkdGhpcy0+JG5hbWU7Cgl9CgoJLyoqCgkgKiBNYWtlcyBwcml2YXRlIHByb3BlcnRpZXMgc2V0dGFibG
UgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCgkgKgoJICogQHNpbmNlIDMuNS4wCgkgKgoJICogQHBhc
mFtIHN0cmluZyAkbmFtZSAgVGhlIHByaXZhdGUgbWVtYmVyIHRvIHNldAoJICogQHBhcmFtIG1peGVkICAk
dmFsdWUgVGhlIHZhbHVlIHRvIHNldAoJICovCglwdWJsaWMgZnVuY3Rpb24gX19zZXQoICRuYW1lLCAkdmF
sdWUgKSB7CgkJJHByb3RlY3RlZF9tZW1iZXJzID0gYXJyYXkoCgkJCSdjb2xfbWV0YScsCgkJCSd0YWJsZV
9jaGFyc2V0JywKCQkJJ2NoZWNrX2N1cnJlbnRfcXVlcnknLAoJCSk7CgkJaWYgKCAgaW5fYXJyYXkoICRuY
W1lLCAkcHJvdGVjdGVkX21lbWJlcnMsIHRydWUgKSApIHsKCQkJcmV0dXJuOwoJCX0KCQkkdGhpcy0+JG5h
bWUgPSAkdmFsdWU7Cgl9CgoJLyoqCgkgKiBNYWtlcyBwcml2YXRlIHByb3BlcnRpZXMgY2hlY2stYWJsZSB
mb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KCSAqCgkgKiBAc2luY2UgMy41LjAKCSAqCgkgKiBAcGFyYW
0gc3RyaW5nICRuYW1lICBUaGUgcHJpdmF0ZSBtZW1iZXIgdG8gY2hlY2sKCSAqCgkgKiBAcmV0dXJuIGJvb
2wgSWYgdGhlIG1lbWJlciBpcyBzZXQgb3Igbm90CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2lzc2V0KCAk
bmFtZSApIHsKCQlyZXR1cm4gaXNzZXQoICR0aGlzLT4kbmFtZSApOwoJfQoKCS8qKgoJICogTWFrZXMgcHJ
pdmF0ZSBwcm9wZXJ0aWVzIHVuLXNldHRhYmxlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgoJICoKCS
AqIEBzaW5jZSAzLjUuMAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgIFRoZSBwcml2YXRlIG1lbWJlc
iB0byB1bnNldAoJICovCglwdWJsaWMgZnVuY3Rpb24gX191bnNldCggJG5hbWUgKSB7CgkJdW5zZXQoICR0
aGlzLT4kbmFtZSApOwoJfQoKCS8qKgoJICogU2V0ICR0aGlzLT5jaGFyc2V0IGFuZCAkdGhpcy0+Y29sbGF
0ZQoJICoKCSAqIEBzaW5jZSAzLjEuMAoJICovCglwdWJsaWMgZnVuY3Rpb24gaW5pdF9jaGFyc2V0KCkgew
oJCSRjaGFyc2V0ID0gJyc7CgkJJGNvbGxhdGUgPSAnJzsKCgkJaWYgKCBmdW5jdGlvbl9leGlzdHMoJ2lzX
211bHRpc2l0ZScpICYmIGlzX211bHRpc2l0ZSgpICkgewoJCQkkY2hhcnNldCA9ICd1dGY4JzsKCQkJaWYg
KCBkZWZpbmVkKCAnREJfQ09MTEFURScgKSAmJiBEQl9DT0xMQVRFICkgewoJCQkJJGNvbGxhdGUgPSBEQl9
DT0xMQVRFOwoJCQl9IGVsc2UgewoJCQkJJGNvbGxhdGUgPSAndXRmOF9nZW5lcmFsX2NpJzsKCQkJfQoJCX
0gZWxzZWlmICggZGVmaW5lZCggJ0RCX0NPTExBVEUnICkgKSB7CgkJCSRjb2xsYXRlID0gREJfQ09MTEFUR
TsKCQl9CgoJCWlmICggZGVmaW5lZCggJ0RCX0NIQVJTRVQnICkgKSB7CgkJCSRjaGFyc2V0ID0gREJfQ0hB
UlNFVDsKCQl9CgoJCSRjaGFyc2V0X2NvbGxhdGUgPSAkdGhpcy0+ZGV0ZXJtaW5lX2NoYXJzZXQoICRjaGF
yc2V0LCAkY29sbGF0ZSApOwoKCQkkdGhpcy0+Y2hhcnNldCA9ICRjaGFyc2V0X2NvbGxhdGVbJ2NoYXJzZX
QnXTsKCQkkdGhpcy0+Y29sbGF0ZSA9ICRjaGFyc2V0X2NvbGxhdGVbJ2NvbGxhdGUnXTsKCX0KCgkvKioKC
SAqIERldGVybWluZXMgdGhlIGJlc3QgY2hhcnNldCBhbmQgY29sbGF0aW9uIHRvIHVzZSBnaXZlbiBhIGNo
YXJzZXQgYW5kIGNvbGxhdGlvbi4KCSAqCgkgKiBGb3IgZXhhbXBsZSwgd2hlbiBhYmxlLCB1dGY4bWI0IHN
ob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdXRmOC4KCSAqCgkgKiBAc2luY2UgNC42LjAKCSAqIEBhY2Nlc3
MgcHVibGljCgkgKgoJICogQHBhcmFtIHN0cmluZyAkY2hhcnNldCBUaGUgY2hhcmFjdGVyIHNldCB0byBja
GVjay4KCSAqIEBwYXJhbSBzdHJpbmcgJGNvbGxhdGUgVGhlIGNvbGxhdGlvbiB0byBjaGVjay4KCSAqIEBy
ZXR1cm4gYXJyYXkgVGhlIG1vc3QgYXBwcm9wcmlhdGUgY2hhcmFjdGVyIHNldCBhbmQgY29sbGF0aW9uIHR
vIHVzZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGRldGVybWluZV9jaGFyc2V0KCAkY2hhcnNldCwgJGNvbG
xhdGUgKSB7CgkJaWYgKCAoICR0aGlzLT51c2VfbXlzcWxpICYmICEgKCAkdGhpcy0+ZGJoIGluc3RhbmNlb
2YgbXlzcWxpICkgKSB8fCBlbXB0eSggJHRoaXMtPmRiaCApICkgewoJCQlyZXR1cm4gY29tcGFjdCggJ2No
YXJzZXQnLCAnY29sbGF0ZScgKTsKCQl9CgoJCWlmICggJ3V0ZjgnID09PSAkY2hhcnNldCAmJiAkdGhpcy0
+aGFzX2NhcCggJ3V0ZjhtYjQnICkgKSB7CgkJCSRjaGFyc2V0ID0gJ3V0ZjhtYjQnOwoJCX0KCgkJaWYgKC
AndXRmOG1iNCcgPT09ICRjaGFyc2V0ICYmICEgJHRoaXMtPmhhc19jYXAoICd1dGY4bWI0JyApICkgewoJC
QkkY2hhcnNldCA9ICd1dGY4JzsKCQkJJGNvbGxhdGUgPSBzdHJfcmVwbGFjZSggJ3V0ZjhtYjRfJywgJ3V0
ZjhfJywgJGNvbGxhdGUgKTsKCQl9CgoJCWlmICggJ3V0ZjhtYjQnID09PSAkY2hhcnNldCApIHsKCQkJLy8
gX2dlbmVyYWxfIGlzIG91dGRhdGVkLCBzbyB3ZSBjYW4gdXBncmFkZSBpdCB0byBfdW5pY29kZV8sIGluc3
RlYWQuCgkJCWlmICggISAkY29sbGF0ZSB8fCAndXRmOF9nZW5lcmFsX2NpJyA9PT0gJGNvbGxhdGUgKSB7C
gkJCQkkY29sbGF0ZSA9ICd1dGY4bWI0X3VuaWNvZGVfY2knOwoJCQl9IGVsc2UgewoJCQkJJGNvbGxhdGUg
PSBzdHJfcmVwbGFjZSggJ3V0ZjhfJywgJ3V0ZjhtYjRfJywgJGNvbGxhdGUgKTsKCQkJfQoJCX0KCgkJLy8
gX3VuaWNvZGVfNTIwXyBpcyBhIGJldHRlciBjb2
xsYXRpb24sIHdlIHNob3VsZCB1c2UgdGhhdCB3aGVuIGl0J3MgYXZhaWxhYmxlLgoJCWlmICggJHRoaXMtP
mhhc19jYXAoICd1dGY4bWI0XzUyMCcgKSAmJiAndXRmOG1iNF91bmljb2RlX2NpJyA9PT0gJGNvbGxhdGUg
KSB7CgkJCSRjb2xsYXRlID0gJ3V0ZjhtYjRfdW5pY29kZV81MjBfY2knOwoJCX0KCgkJcmV0dXJuIGNvbXB
hY3QoICdjaGFyc2V0JywgJ2NvbGxhdGUnICk7Cgl9CgoJLyoqCgkgKiBTZXRzIHRoZSBjb25uZWN0aW9uJ3
MgY2hhcmFjdGVyIHNldC4KCSAqCgkgKiBAc2luY2UgMy4xLjAKCSAqCgkgKiBAcGFyYW0gcmVzb3VyY2UgJ
GRiaCAgICAgVGhlIHJlc291cmNlIGdpdmVuIGJ5IG15c3FsX2Nvbm5lY3QKCSAqIEBwYXJhbSBzdHJpbmcg
ICAkY2hhcnNldCBPcHRpb25hbC4gVGhlIGNoYXJhY3RlciBzZXQuIERlZmF1bHQgbnVsbC4KCSAqIEBwYXJ
hbSBzdHJpbmcgICAkY29sbGF0ZSBPcHRpb25hbC4gVGhlIGNvbGxhdGlvbi4gRGVmYXVsdCBudWxsLgoJIC
ovCglwdWJsaWMgZnVuY3Rpb24gc2V0X2NoYXJzZXQoICRkYmgsICRjaGFyc2V0ID0gbnVsbCwgJGNvbGxhd
GUgPSBudWxsICkgewoJCWlmICggISBpc3NldCggJGNoYXJzZXQgKSApCgkJCSRjaGFyc2V0ID0gJHRoaXMt
PmNoYXJzZXQ7CgkJaWYgKCAhIGlzc2V0KCAkY29sbGF0ZSApICkKCQkJJGNvbGxhdGUgPSAkdGhpcy0+Y29
sbGF0ZTsKCQlpZiAoICR0aGlzLT5oYXNfY2FwKCAnY29sbGF0aW9uJyApICYmICEgZW1wdHkoICRjaGFyc2
V0ICkgKSB7CgkJCSRzZXRfY2hhcnNldF9zdWNjZWVkZWQgPSB0cnVlOwoKCQkJaWYgKCAkdGhpcy0+dXNlX
215c3FsaSApIHsKCQkJCWlmICggZnVuY3Rpb25fZXhpc3RzKCAnbXlzcWxpX3NldF9jaGFyc2V0JyApICYm
ICR0aGlzLT5oYXNfY2FwKCAnc2V0X2NoYXJzZXQnICkgKSB7CgkJCQkJJHNldF9jaGFyc2V0X3N1Y2NlZWR
lZCA9IG15c3FsaV9zZXRfY2hhcnNldCggJGRiaCwgJGNoYXJzZXQgKTsKCQkJCX0KCgkJCQlpZiAoICRzZX
RfY2hhcnNldF9zdWNjZWVkZWQgKSB7CgkJCQkJJHF1ZXJ5ID0gJHRoaXMtPnByZXBhcmUoICdTRVQgTkFNR
VMgJXMnLCAkY2hhcnNldCApOwoJCQkJCWlmICggISBlbXB0eSggJGNvbGxhdGUgKSApCgkJCQkJCSRxdWVy
eSAuPSAkdGhpcy0+cHJlcGFyZSggJyBDT0xMQVRFICVzJywgJGNvbGxhdGUgKTsKCQkJCQlteXNxbGlfcXV
lcnkoICRkYmgsICRxdWVyeSApOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJaWYgKCBmdW5jdGlvbl9leGlzdH
MoICdteXNxbF9zZXRfY2hhcnNldCcgKSAmJiAkdGhpcy0+aGFzX2NhcCggJ3NldF9jaGFyc2V0JyApICkge
woJCQkJCSRzZXRfY2hhcnNldF9zdWNjZWVkZWQgPSBteXNxbF9zZXRfY2hhcnNldCggJGNoYXJzZXQsICRk
YmggKTsKCQkJCX0KCQkJCWlmICggJHNldF9jaGFyc2V0X3N1Y2NlZWRlZCApIHsKCQkJCQkkcXVlcnkgPSA
kdGhpcy0+cHJlcGFyZSggJ1NFVCBOQU1FUyAlcycsICRjaGFyc2V0ICk7CgkJCQkJaWYgKCAhIGVtcHR5KC
AkY29sbGF0ZSApICkKCQkJCQkJJHF1ZXJ5IC49ICR0aGlzLT5wcmVwYXJlKCAnIENPTExBVEUgJXMnLCAkY
29sbGF0ZSApOwoJCQkJCW15c3FsX3F1ZXJ5KCAkcXVlcnksICRkYmggKTsKCQkJCX0KCQkJfQoJCX0KCQkK
CQkkdGhpcy0+Y2hhcnNldCA9ICRjaGFyc2V0OyAvLyBBZGRlZCBmb3IgQmFja3VwQnVkZHkKCQkkdGhpcy0
+Y29sbGF0ZSA9ICRjb2xsYXRlOyAvLyBBZGRlZCBmb3IgQmFja3VwQnVkZHkKCX0KCgkvKioKCSAqIENoYW
5nZSB0aGUgY3VycmVudCBTUUwgbW9kZSwgYW5kIGVuc3VyZSBpdHMgV29yZFByZXNzIGNvbXBhdGliaWxpd
HkuCgkgKgoJICogSWYgbm8gbW9kZXMgYXJlIHBhc3NlZCwgaXQgd2lsbCBlbnN1cmUgdGhlIGN1cnJlbnQg
TXlTUUwgc2VydmVyCgkgKiBtb2RlcyBhcmUgY29tcGF0aWJsZS4KCSAqCgkgKiBAc2luY2UgMy45LjAKCSA
qCgkgKiBAcGFyYW0gYXJyYXkgJG1vZGVzIE9wdGlvbmFsLiBBIGxpc3Qgb2YgU1FMIG1vZGVzIHRvIHNldC
4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldF9zcWxfbW9kZSggJG1vZGVzID0gYXJyYXkoKSApIHsKCQlpZ
iAoIGVtcHR5KCAkbW9kZXMgKSApIHsKCQkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJCSRyZXMg
PSBteXNxbGlfcXVlcnkoICR0aGlzLT5kYmgsICdTRUxFQ1QgQEBTRVNTSU9OLnNxbF9tb2RlJyApOwoJCQl
9IGVsc2UgewoJCQkJJHJlcyA9IG15c3FsX3F1ZXJ5KCAnU0VMRUNUIEBAU0VTU0lPTi5zcWxfbW9kZScsIC
R0aGlzLT5kYmggKTsKCQkJfQoKCQkJaWYgKCBlbXB0eSggJHJlcyApICkgewoJCQkJcmV0dXJuOwoJCQl9C
goJCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkJJG1vZGVzX2FycmF5ID0gbXlzcWxpX2ZldGNo
X2FycmF5KCAkcmVzICk7CgkJCQlpZiAoIGVtcHR5KCAkbW9kZXNfYXJyYXlbMF0gKSApIHsKCQkJCQlyZXR
1cm47CgkJCQl9CgkJCQkkbW9kZXNfc3RyID0gJG1vZGVzX2FycmF5WzBdOwoJCQl9IGVsc2UgewoJCQkJJG
1vZGVzX3N0ciA9IG15c3FsX3Jlc3VsdCggJHJlcywgMCApOwoJCQl9CgoJCQlpZiAoIGVtcHR5KCAkbW9kZ
XNfc3RyICkgKSB7CgkJCQlyZXR1cm47CgkJCX0KCgkJCSRtb2RlcyA9IGV4cGxvZGUoICcsJywgJG1vZGVz
X3N0ciApOwoJCX0KCgkJJG1vZGVzID0gYXJyYXlfY2hhbmdlX2tleV9jYXNlKCAkbW9kZXMsIENBU0VfVVB
QRVIgKTsKCgkJLyoqCgkJICogRmlsdGVycyB0aGUgbGlzdCBvZiBpbmNvbXBhdGlibGUgU1FMIG1vZGVzIH
RvIGV4Y2x1ZGUuCgkJICoKCQkgKiBAc2luY2UgMy45LjAKCQkgKgoJCSAqIEBwYXJhbSBhcnJheSAkaW5jb
21wYXRpYmxlX21vZGVzIEFuIGFycmF5IG9mIGluY29tcGF0aWJsZSBtb2Rlcy4KCQkgKi8KCQkkaW5jb21w
YXRpYmxlX21vZGVzID0gKGFycmF5KSBhcHBseV9maWx0ZXJzKCAnaW5jb21wYXRpYmxlX3NxbF9tb2Rlcyc
sICR0aGlzLT5pbmNvbXBhdGlibGVfbW9kZXMgKTsKCgkJZm9yZWFjaCAoICRtb2RlcyBhcyAkaSA9PiAkbW
9kZSApIHsKCQkJaWYgKCBpbl9hcnJheSggJG1vZGUsICRpbmNvbXBhdGlibGVfbW9kZXMgKSApIHsKCQkJC
XVuc2V0KCAkbW9kZXNbICRpIF0gKTsKCQkJfQoJCX0KCgkJJG1vZGVzX3N0ciA9IGltcGxvZGUoICcsJywg
JG1vZGVzICk7CgoJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCW15c3FsaV9xdWVyeSggJHRoaXM
tPmRiaCwgIlNFVCBTRVNTSU9OIHNxbF9tb2RlPSckbW9kZXNfc3RyJyIgKTsKCQl9IGVsc2UgewoJCQlteX
NxbF9xdWVyeSggIlNFVCBTRVNTSU9OIHNxbF9tb2RlPSckbW9kZXNfc3RyJyIsICR0aGlzLT5kYmggKTsKC
Ql9Cgl9CgoJLyoqCgkgKiBTZXRzIHRoZSB0YWJsZSBwcmVmaXggZm9yIHRoZSBXb3JkUHJlc3MgdGFibGVz
LgoJICoKCSAqIEBzaW5jZSAyLjUuMAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHByZWZpeCAgICAgICAgICB
BbHBoYW51bWVyaWMgbmFtZSBmb3IgdGhlIG5ldyBwcmVmaXguCgkgKiBAcGFyYW0gYm9vbCAgICRzZXRfdG
FibGVfbmFtZXMgT3B0aW9uYWwuIFdoZXRoZXIgdGhlIHRhYmxlIG5hbWVzLCBlLmcuIHdwZGI6OiRwb3N0c
ywgc2hvdWxkIGJlIHVwZGF0ZWQgb3Igbm90LgoJICogQHJldHVybiBzdHJpbmd8V1BfRXJyb3IgT2xkIHBy
ZWZpeCBvciBXUF9FcnJvciBvbiBlcnJvcgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0X3ByZWZpeCggJHB
yZWZpeCwgJHNldF90YWJsZV9uYW1lcyA9IHRydWUgKSB7CgoJCWlmICggcHJlZ19tYXRjaCggJ3xbXmEtej
AtOV9dfGknLCAkcHJlZml4ICkgKQoJCQlyZXR1cm4gbmV3IFdQX0Vycm9yKCdpbnZhbGlkX2RiX3ByZWZpe
CcsICdJbnZhbGlkIGRhdGFiYXNlIHByZWZpeCcgKTsKCgkJJG9sZF9wcmVmaXggPSBpc19tdWx0aXNpdGUo
KSA/ICcnIDogJHByZWZpeDsKCgkJaWYgKCBpc3NldCggJHRoaXMtPmJhc2VfcHJlZml4ICkgKQoJCQkkb2x
kX3ByZWZpeCA9ICR0aGlzLT5iYXNlX3ByZWZpeDsKCgkJJHRoaXMtPmJhc2VfcHJlZml4ID0gJHByZWZpeD
sKCgkJaWYgKCAkc2V0X3RhYmxlX25hbWVzICkgewoJCQlmb3JlYWNoICggJHRoaXMtPnRhYmxlcyggJ2dsb
2JhbCcgKSBhcyAkdGFibGUgPT4gJHByZWZpeGVkX3RhYmxlICkKCQkJCSR0aGlzLT4kdGFibGUgPSAkcHJl
Zml4ZWRfdGFibGU7CgoJCQlpZiAoIGlzX211bHRpc2l0ZSgpICYmIGVtcHR5KCAkdGhpcy0+YmxvZ2lkICk
gKQoJCQkJcmV0dXJuICRvbGRfcHJlZml4OwoKCQkJJHRoaXMtPnByZWZpeCA9ICR0aGlzLT5nZXRfYmxvZ1
9wcmVmaXgoKTsKCgkJCWZvcmVhY2ggKCAkdGhpcy0+dGFibGVzKCAnYmxvZycgKSBhcyAkdGFibGUgPT4gJ
HByZWZpeGVkX3RhYmxlICkKCQkJCSR0aGlzLT4kdGFibGUgPSAkcHJlZml4ZWRfdGFibGU7CgoJCQlmb3Jl
YWNoICggJHRoaXMtPnRhYmxlcyggJ29sZCcgKSBhcyAkdGFibGUgPT4gJHByZWZpeGVkX3RhYmxlICkKCQk
JCSR0aGlzLT4kdGFibGUgPSAkcHJlZml4ZWRfdGFibGU7CgkJfQoJCXJldHVybiAkb2xkX3ByZWZpeDsKCX
0KCgkvKioKCSAqIFNldHMgYmxvZyBpZC4KCSAqCgkgKiBAc2luY2UgMy4wLjAKCSAqIEBhY2Nlc3MgcHVib
GljCgkgKgoJICogQHBhcmFtIGludCAkYmxvZ19pZAoJICogQHBhcmFtIGludCAkc2l0ZV9pZCBPcHRpb25h
bC4KCSAqIEByZXR1cm4gaW50IHByZXZpb3VzIGJsb2cgaWQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldF9
ibG9nX2lkKCAkYmxvZ19pZCwgJHNpdGVfaWQgPSAwICkgewoJCWlmICggISBlbXB0eSggJHNpdGVfaWQgKS
ApCgkJCSR0aGlzLT5zaXRlaWQgPSAkc2l0ZV9pZDsKCgkJJG9sZF9ibG9nX2lkICA9ICR0aGlzLT5ibG9na
WQ7CgkJJHRoaXMtPmJsb2dpZCA9ICRibG9nX2lkOwoKCQkkdGhpcy0+cHJlZml4ID0gJHRoaXMtPmdldF9i
bG9nX3ByZWZpeCgpOwoKCQlmb3JlYWNoICggJHRoaXMtPnRhYmxlcyggJ2Jsb2cnICkgYXMgJHRhYmxlID0
+ICRwcmVmaXhlZF90YWJsZSApCgkJCSR0aGlzLT4kdGFibGUgPSAkcHJlZml4ZWRfdGFibGU7CgoJCWZvcm
VhY2ggKCAkdGhpcy0+dGFibGVzKCAnb2xkJyApIGFzICR0YWJsZSA9PiAkcHJlZml4ZWRfdGFibGUgKQoJC
QkkdGhpcy0+JHRhYmxlID0gJHByZWZpeGVkX3RhYmxlOwoKCQlyZXR1cm4gJG9sZF9ibG9nX2lkOwoJfQoK
CS8qKgoJICogR2V0cyBibG9nIHByZWZpeC4KCSAqCgkgKiBAc2luY2UgMy4wLjAKCSAqIEBwYXJhbSBpbnQ
gJGJsb2dfaWQgT3B0aW9uYWwuCgkgKiBAcmV0dXJuIHN0cmluZyBCbG9nIHByZWZpeC4KCSAqLwoJcHVibG
ljIGZ1bmN0aW9uIGdldF9ibG9nX3ByZWZpeCggJGJsb2dfaWQgPSBudWxsICkgewoJCWlmICggaXNfbXVsd
GlzaXRlKCkgKSB7CgkJCWlmICggbnVsbCA9PT0gJGJsb2dfaWQgKQoJCQkJJGJsb2dfaWQgPSAkdGhpcy0+
YmxvZ2lkOwoJCQkkYmxvZ19pZCA9IChpbnQpICRibG9nX2lkOwoJCQlpZiAoIGRlZmluZWQoICdNVUxUSVN
JVEUnICkgJiYgKCAwID09ICRibG9nX2lkIHx8IDEgPT0gJGJsb2dfaWQgKSApCgkJCQlyZXR1cm4gJHRoaX
MtPmJhc2VfcHJlZml4OwoJCQllbHNlCgkJCQlyZXR1cm4gJHRoaXMtPmJhc2VfcHJlZml4IC4gJGJsb2dfa
WQgLiAnXyc7CgkJfSBlbHNlIHsKCQkJcmV0dXJuICR0aGlzLT5iYXNlX3ByZWZpeDsKCQl9Cgl9CgoJLyoq
CgkgKiBSZXR1cm5zIGFuIGFycmF5IG9mIFdvcmRQcmVzcyB0YWJsZXMuCgkgKgoJICogQWxzbyBhbGxvd3M
gZm9yIHRoZSBDVVNUT01fVVNFUl9UQUJMRSBhbmQgQ1VTVE9NX1VTRVJfTUVUQV9UQUJMRSB0bwoJICogb3
ZlcnJpZGUgdGhlIFdvcmRQcmVzcyB1c2VycyBhbmQgdXNlcm1ldGEgdGFibGVzIHRoYXQgd291bGQgb3RoZ
XJ3aXNlCgkgKiBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBwcmVmaXguCgkgKgoJICogVGhlIHNjb3BlIGFyZ3Vt
ZW50IGNhbiB0YWtlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoJICoKCSAqICdhbGwnIC0gcmV0dXJucyAnYWx
sJyBhbmQgJ2dsb2JhbCcgdGFibGVzLiBObyBvbGQgdGFibGVzIGFyZSByZXR1cm5lZC4KCSAqICdibG9nJy
AtIHJldHVybnMgdGhlIGJsb2ctbGV2ZWwgdGFibGVzIGZvciB0aGUgcXVlcmllZCBibG9nLgoJICogJ2dsb
2JhbCcgLSByZXR1cm5zIHRoZSBnbG9iYWwgdGFibGVzIGZvciB0aGUgaW5zdGFsbGF0aW9uLCByZXR1cm5p
bmcgbXVsdGlzaXRlIHRhYmxlcyBvbmx5IGlmIHJ1bm5pbmcgbXVsdGlzaXRlLgoJICogJ21zX2dsb2JhbCc
gLSByZXR1cm5zIHRoZSBtdWx0aXNpdGUgZ2xvYmFsIHRhYmxlcywgcmVnYXJkbGVzcyBpZiBjdXJyZW50IG
luc3RhbGxhdGlvbiBpcyBtdWx0aXNpdGUuCgkgKiAnb2xkJyAtIHJldHVybnMgdGFibGVzIHdoaWNoIGFyZ
SBkZXByZWNhdGVkLgoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQHVzZXMgd3BkYjo6JHRhYmxlcwoJICog
QHVzZXMgd3BkYjo6JG9sZF90YWJsZXMKCSAqIEB1c2VzIHdwZGI6OiRnbG9iYWxfdGFibGVzCgkgKiBAdXN
lcyB3cGRiOjokbXNfZ2xvYmFsX3RhYmxlcwoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHNjb3BlICAgT3B0aW
9uYWwuIENhbiBiZSBhbGwsIGdsb2JhbCwgbXNfZ2xvYmFsLCBibG9nLCBvciBvbGQgdGFibGVzLiBEZWZhd
Wx0cyB0byBhbGwuCgkgKiBAcGFyYW0gYm9vbCAgICRwcmVmaXggIE9wdGlvbmFsLiBXaGV0aGVyIHRvIGlu
Y2x1ZGUgdGFibGUgcHJlZml4ZXMuIERlZmF1bHQgdHJ1ZS4gSWYgYmxvZwoJICogICAgICAgICAgICAgICA
gICAgICAgICBwcmVmaXggaXMgcmVxdWVzdGVkLCB0aGVuIHRoZSBjdXN0b20gdXNlcnMgYW5kIHVzZXJtZX
RhIHRhYmxlcyB3aWxsIGJlIG1hcHBlZC4KCSAqIEBwYXJhbSBpbnQgICAgJGJsb2dfaWQgT3B0aW9uYWwuI
FRoZSBibG9nX2lkIHRvIHByZWZpeC4gRGVmYXVsdHMgdG8gd3BkYjo6JGJsb2dpZC4gVXNlZCBvbmx5IHdo
ZW4gcHJlZml4IGlzIHJlcXVlc3RlZC4KCSAqIEByZXR1cm4gYXJyYXkgVGFibGUgbmFtZXMuIFdoZW4gYSB
wcmVmaXggaXMgcmVxdWVzdGVkLCB0aGUga2V5IGlzIHRoZSB1bnByZWZpeGVkIHRhYmxlIG5hbWUuCgkgKi
8KCXB1YmxpYyBmdW5jdGlvbiB0YWJsZXMoICRzY29wZSA9ICdhbGwnLCAkcHJlZml4ID0gdHJ1ZSwgJGJsb
2dfaWQgPSAwICkgewoJCXN3aXRjaCAoICRzY29wZSApIHsKCQkJY2FzZSAnYWxsJyA6CgkJCQkkdGFibGVz
ID0gYXJyYXlfbWVyZ2UoICR0aGlzLT5nbG9iYWxfdGFibGVzLCAkdGhpcy0+dGFibGVzICk7CgkJCQlpZiA
oIGlzX211bHRpc2l0ZSgpICkKCQkJCQkkdGFibGVzID0gYXJyYXlfbWVyZ2UoICR0YWJsZXMsICR0aGlzLT
5tc19nbG9iYWxfdGFibGVzICk7CgkJCQlicmVhazsKCQkJY2FzZSAnYmxvZycgOgoJCQkJJHRhYmxlcyA9I
CR0aGlzLT50YWJsZXM7CgkJCQlicmVhazsKCQkJY2FzZSAnZ2xvYmFsJyA6CgkJCQkkdGFibGVzID0gJHRo
aXMtPmdsb2JhbF90YWJsZXM7CgkJCQlpZiAoIGlzX211bHRpc2l0ZSgpICkKCQkJCQkkdGFibGVzID0gYXJ
yYXlfbWVyZ2UoICR0YWJsZXMsICR0aGlzLT5tc19nbG9iYWxfdGFibGVzICk7CgkJCQlicmVhazsKCQkJY2
FzZSAnbXNfZ2xvYmFsJyA6CgkJCQkkdGFibGVzI
D0gJHRoaXMtPm1zX2dsb2JhbF90YWJsZXM7CgkJCQlicmVhazsKCQkJY2FzZSAnb2xkJyA6CgkJCQkkdGFi
bGVzID0gJHRoaXMtPm9sZF90YWJsZXM7CgkJCQlicmVhazsKCQkJZGVmYXVsdCA6CgkJCQlyZXR1cm4gYXJ
yYXkoKTsKCQl9CgoJCWlmICggJHByZWZpeCApIHsKCQkJaWYgKCAhICRibG9nX2lkICkKCQkJCSRibG9nX2
lkID0gJHRoaXMtPmJsb2dpZDsKCQkJJGJsb2dfcHJlZml4ID0gJHRoaXMtPmdldF9ibG9nX3ByZWZpeCggJ
GJsb2dfaWQgKTsKCQkJJGJhc2VfcHJlZml4ID0gJHRoaXMtPmJhc2VfcHJlZml4OwoJCQkkZ2xvYmFsX3Rh
YmxlcyA9IGFycmF5X21lcmdlKCAkdGhpcy0+Z2xvYmFsX3RhYmxlcywgJHRoaXMtPm1zX2dsb2JhbF90YWJ
sZXMgKTsKCQkJZm9yZWFjaCAoICR0YWJsZXMgYXMgJGsgPT4gJHRhYmxlICkgewoJCQkJaWYgKCBpbl9hcn
JheSggJHRhYmxlLCAkZ2xvYmFsX3RhYmxlcyApICkKCQkJCQkkdGFibGVzWyAkdGFibGUgXSA9ICRiYXNlX
3ByZWZpeCAuICR0YWJsZTsKCQkJCWVsc2UKCQkJCQkkdGFibGVzWyAkdGFibGUgXSA9ICRibG9nX3ByZWZp
eCAuICR0YWJsZTsKCQkJCXVuc2V0KCAkdGFibGVzWyAkayBdICk7CgkJCX0KCgkJCWlmICggaXNzZXQoICR
0YWJsZXNbJ3VzZXJzJ10gKSAmJiBkZWZpbmVkKCAnQ1VTVE9NX1VTRVJfVEFCTEUnICkgKQoJCQkJJHRhYm
xlc1sndXNlcnMnXSA9IENVU1RPTV9VU0VSX1RBQkxFOwoKCQkJaWYgKCBpc3NldCggJHRhYmxlc1sndXNlc
m1ldGEnXSApICYmIGRlZmluZWQoICdDVVNUT01fVVNFUl9NRVRBX1RBQkxFJyApICkKCQkJCSR0YWJsZXNb
J3VzZXJtZXRhJ10gPSBDVVNUT01fVVNFUl9NRVRBX1RBQkxFOwoJCX0KCgkJcmV0dXJuICR0YWJsZXM7Cgl
9CgoJLyoqCgkgKiBTZWxlY3RzIGEgZGF0YWJhc2UgdXNpbmcgdGhlIGN1cnJlbnQgZGF0YWJhc2UgY29ubm
VjdGlvbi4KCSAqCgkgKiBUaGUgZGF0YWJhc2UgbmFtZSB3aWxsIGJlIGNoYW5nZWQgYmFzZWQgb24gdGhlI
GN1cnJlbnQgZGF0YWJhc2UKCSAqIGNvbm5lY3Rpb24uIE9uIGZhaWx1cmUsIHRoZSBleGVjdXRpb24gd2ls
bCBiYWlsIGFuZCBkaXNwbGF5IGFuIERCIGVycm9yLgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHB
hcmFtIHN0cmluZyAgICAgICAgJGRiICBNeVNRTCBkYXRhYmFzZSBuYW1lCgkgKiBAcGFyYW0gcmVzb3VyY2
V8bnVsbCAkZGJoIE9wdGlvbmFsIGxpbmsgaWRlbnRpZmllci4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNlb
GVjdCggJGRiLCAkZGJoID0gbnVsbCApIHsKCQlpZiAoIGlzX251bGwoJGRiaCkgKQoJCQkkZGJoID0gJHRo
aXMtPmRiaDsKCgkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJJHN1Y2Nlc3MgPSBteXNxbGlfc2V
sZWN0X2RiKCAkZGJoLCAkZGIgKTsKCQl9IGVsc2UgewoJCQkkc3VjY2VzcyA9IG15c3FsX3NlbGVjdF9kYi
ggJGRiLCAkZGJoICk7CgkJfQoJCWlmICggISAkc3VjY2VzcyApIHsKCQkJJHRoaXMtPnJlYWR5ID0gZmFsc
2U7CgkJCWlmICggISBkaWRfYWN0aW9uKCAndGVtcGxhdGVfcmVkaXJlY3QnICkgKSB7CgkJCQl3cF9sb2Fk
X3RyYW5zbGF0aW9uc19lYXJseSgpOwoKCQkJCSRtZXNzYWdlID0gJzxoMT4nIC4gX18oICdDYW4mIzgyMTc
7dCBzZWxlY3QgZGF0YWJhc2UnICkgLiAiPC9oMT5cbiI7CgoJCQkJJG1lc3NhZ2UgLj0gJzxwPicgLiBzcH
JpbnRmKAoJCQkJCS8qIHRyYW5zbGF0b3JzOiAlczogZGF0YWJhc2UgbmFtZSAqLwoJCQkJCV9fKCAnV2Ugd
2VyZSBhYmxlIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIHNlcnZlciAod2hpY2ggbWVhbnMgeW91ciB1
c2VybmFtZSBhbmQgcGFzc3dvcmQgaXMgb2theSkgYnV0IG5vdCBhYmxlIHRvIHNlbGVjdCB0aGUgJXMgZGF
0YWJhc2UuJyApLAoJCQkJCSc8Y29kZT4nIC4gaHRtbHNwZWNpYWxjaGFycyggJGRiLCBFTlRfUVVPVEVTIC
kgLiAnPC9jb2RlPicKCQkJCSkgLiAiPC9wPlxuIjsKCgkJCQkkbWVzc2FnZSAuPSAiPHVsPlxuIjsKCQkJC
SRtZXNzYWdlIC49ICc8bGk+JyAuIF9fKCAnQXJlIHlvdSBzdXJlIGl0IGV4aXN0cz8nICkgLiAiPC9saT5c
biI7CgoJCQkJJG1lc3NhZ2UgLj0gJzxsaT4nIC4gc3ByaW50ZigKCQkJCQkvKiB0cmFuc2xhdG9yczogMTo
gZGF0YWJhc2UgdXNlciwgMjogZGF0YWJhc2UgbmFtZSAqLwoJCQkJCV9fKCAnRG9lcyB0aGUgdXNlciAlMS
RzIGhhdmUgcGVybWlzc2lvbiB0byB1c2UgdGhlICUyJHMgZGF0YWJhc2U/JyApLAoJCQkJCSc8Y29kZT4nI
C4gaHRtbHNwZWNpYWxjaGFycyggJHRoaXMtPmRidXNlciwgRU5UX1FVT1RFUyApICAuICc8L2NvZGU+JywK
CQkJCQknPGNvZGU+JyAuIGh0bWxzcGVjaWFsY2hhcnMoICRkYiwgRU5UX1FVT1RFUyApIC4gJzwvY29kZT4
nCgkJCQkpIC4gIjwvbGk+XG4iOwoKCQkJCSRtZXNzYWdlIC49ICc8bGk+JyAuIHNwcmludGYoCgkJCQkJLy
ogdHJhbnNsYXRvcnM6ICVzOiBkYXRhYmFzZSBuYW1lICovCgkJCQkJX18oICdPbiBzb21lIHN5c3RlbXMgd
GhlIG5hbWUgb2YgeW91ciBkYXRhYmFzZSBpcyBwcmVmaXhlZCB3aXRoIHlvdXIgdXNlcm5hbWUsIHNvIGl0
IHdvdWxkIGJlIGxpa2UgPGNvZGU+dXNlcm5hbWVfJTEkczwvY29kZT4uIENvdWxkIHRoYXQgYmUgdGhlIHB
yb2JsZW0/JyApLAoJCQkJCWh0bWxzcGVjaWFsY2hhcnMoICRkYiwgRU5UX1FVT1RFUyApCgkJCQkpLiAiPC
9saT5cbiI7CgoJCQkJJG1lc3NhZ2UgLj0gIjwvdWw+XG4iOwoKCQkJCSRtZXNzYWdlIC49ICc8cD4nIC4gc
3ByaW50ZigKCQkJCQkvKiB0cmFuc2xhdG9yczogJXM6IHN1cHBvcnQgZm9ydW1zIFVSTCAqLwoJCQkJCV9f
KCAnSWYgeW91IGRvbiYjODIxNzt0IGtub3cgaG93IHRvIHNldCB1cCBhIGRhdGFiYXNlIHlvdSBzaG91bGQ
gPHN0cm9uZz5jb250YWN0IHlvdXIgaG9zdDwvc3Ryb25nPi4gSWYgYWxsIGVsc2UgZmFpbHMgeW91IG1heS
BmaW5kIGhlbHAgYXQgdGhlIDxhIGhyZWY9IiVzIj5Xb3JkUHJlc3MgU3VwcG9ydCBGb3J1bXM8L2E+LicgK
SwKCQkJCQlfXyggJ2h0dHBzOi8vd29yZHByZXNzLm9yZy9zdXBwb3J0LycgKQoJCQkJKSAuICI8L3A+XG4i
OwoKCQkJCSR0aGlzLT5iYWlsKCAkbWVzc2FnZSwgJ2RiX3NlbGVjdF9mYWlsJyApOwoJCQl9CgkJfQoJfQo
KCS8qKgoJICogRG8gbm90IHVzZSwgZGVwcmVjYXRlZC4KCSAqCgkgKiBVc2UgZXNjX3NxbCgpIG9yIHdwZG
I6OnByZXBhcmUoKSBpbnN0ZWFkLgoJICoKCSAqIEBzaW5jZSAyLjguMAoJICogQGRlcHJlY2F0ZWQgMy42L
jAgVXNlIHdwZGI6OnByZXBhcmUoKQoJICogQHNlZSB3cGRiOjpwcmVwYXJlCgkgKiBAc2VlIGVzY19zcWwo
KQoJICogQGFjY2VzcyBwcml2YXRlCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc3RyaW5nCgkgKiBAcmV0dXJ
uIHN0cmluZwoJICovCglmdW5jdGlvbiBfd2Vha19lc2NhcGUoICRzdHJpbmcgKSB7CgkJaWYgKCBmdW5jX2
51bV9hcmdzKCkgPT09IDEgJiYgZnVuY3Rpb25fZXhpc3RzKCAnX2RlcHJlY2F0ZWRfZnVuY3Rpb24nICkgK
QoJCQlfZGVwcmVjYXRlZF9mdW5jdGlvbiggX19NRVRIT0RfXywgJzMuNi4wJywgJ3dwZGI6OnByZXBhcmUo
KSBvciBlc2Nfc3FsKCknICk7CgkJcmV0dXJuIGFkZHNsYXNoZXMoICRzdHJpbmcgKTsKCX0KCgkvKioKCSA
qIFJlYWwgZXNjYXBlLCB1c2luZyBteXNxbGlfcmVhbF9lc2NhcGVfc3RyaW5nKCkgb3IgbXlzcWxfcmVhbF
9lc2NhcGVfc3RyaW5nKCkKCSAqCgkgKiBAc2VlIG15c3FsaV9yZWFsX2VzY2FwZV9zdHJpbmcoKQoJICogQ
HNlZSBteXNxbF9yZWFsX2VzY2FwZV9zdHJpbmcoKQoJICogQHNpbmNlIDIuOC4wCgkgKiBAYWNjZXNzIHBy
aXZhdGUKCSAqCgkgKiBAcGFyYW0gIHN0cmluZyAkc3RyaW5nIHRvIGVzY2FwZQoJICogQHJldHVybiBzdHJ
pbmcgZXNjYXBlZAoJICovCglmdW5jdGlvbiBfcmVhbF9lc2NhcGUoICRzdHJpbmcgKSB7CgkJaWYgKCAkdG
hpcy0+ZGJoICkgewoJCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkJJGVzY2FwZWQgPSBteXNxb
GlfcmVhbF9lc2NhcGVfc3RyaW5nKCAkdGhpcy0+ZGJoLCAkc3RyaW5nICk7CgkJCX0gZWxzZSB7CgkJCQkk
ZXNjYXBlZCA9IG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZyggJHN0cmluZywgJHRoaXMtPmRiaCApOwoJCQl
9CgkJfSBlbHNlIHsKCQkJJGNsYXNzID0gZ2V0X2NsYXNzKCAkdGhpcyApOwoJCQlpZiAoIGZ1bmN0aW9uX2
V4aXN0cyggJ19fJyApICkgewoJCQkJLyogdHJhbnNsYXRvcnM6ICVzOiBkYXRhYmFzZSBhY2Nlc3MgYWJzd
HJhY3Rpb24gY2xhc3MsIHVzdWFsbHkgd3BkYiBvciBhIGNsYXNzIGV4dGVuZGluZyB3cGRiICovCgkJCQlf
ZG9pbmdfaXRfd3JvbmcoICRjbGFzcywgc3ByaW50ZiggX18oICclcyBtdXN0IHNldCBhIGRhdGFiYXNlIGN
vbm5lY3Rpb24gZm9yIHVzZSB3aXRoIGVzY2FwaW5nLicgKSwgJGNsYXNzICksICczLjYuMCcgKTsKCQkJfS
BlbHNlIHsKCQkJCV9kb2luZ19pdF93cm9uZyggJGNsYXNzLCBzcHJpbnRmKCAnJXMgbXVzdCBzZXQgYSBkY
XRhYmFzZSBjb25uZWN0aW9uIGZvciB1c2Ugd2l0aCBlc2NhcGluZy4nLCAkY2xhc3MgKSwgJzMuNi4wJyAp
OwoJCQl9CgkJCSRlc2NhcGVkID0gYWRkc2xhc2hlcyggJHN0cmluZyApOwoJCX0KCgkJcmV0dXJuICR0aGl
zLT5hZGRfcGxhY2Vob2xkZXJfZXNjYXBlKCAkZXNjYXBlZCApOwoJfQoKCS8qKgoJICogRXNjYXBlIGRhdG
EuIFdvcmtzIG9uIGFycmF5cy4KCSAqCgkgKiBAdXNlcyB3cGRiOjpfcmVhbF9lc2NhcGUoKQoJICogQHNpb
mNlICAyLjguMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqCgkgKiBAcGFyYW0gIHN0cmluZ3xhcnJheSAkZGF0
YQoJICogQHJldHVybiBzdHJpbmd8YXJyYXkgZXNjYXBlZAoJICovCglwdWJsaWMgZnVuY3Rpb24gX2VzY2F
wZSggJGRhdGEgKSB7CgkJaWYgKCBpc19hcnJheSggJGRhdGEgKSApIHsKCQkJZm9yZWFjaCAoICRkYXRhIG
FzICRrID0+ICR2ICkgewoJCQkJaWYgKCBpc19hcnJheSggJHYgKSApIHsKCQkJCQkkZGF0YVska10gPSAkd
Ghpcy0+X2VzY2FwZSggJHYgKTsKCQkJCX0gZWxzZSB7CgkJCQkJJGRhdGFbJGtdID0gJHRoaXMtPl9yZWFs
X2VzY2FwZSggJHYgKTsKCQkJCX0KCQkJfQoJCX0gZWxzZSB7CgkJCSRkYXRhID0gJHRoaXMtPl9yZWFsX2V
zY2FwZSggJGRhdGEgKTsKCQl9CgoJCXJldHVybiAkZGF0YTsKCX0KCgkvKioKCSAqIERvIG5vdCB1c2UsIG
RlcHJlY2F0ZWQuCgkgKgoJICogVXNlIGVzY19zcWwoKSBvciB3cGRiOjpwcmVwYXJlKCkgaW5zdGVhZC4KC
SAqCgkgKiBAc2luY2UgMC43MQoJICogQGRlcHJlY2F0ZWQgMy42LjAgVXNlIHdwZGI6OnByZXBhcmUoKQoJ
ICogQHNlZSB3cGRiOjpwcmVwYXJlKCkKCSAqIEBzZWUgZXNjX3NxbCgpCgkgKgoJICogQHBhcmFtIG1peGV
kICRkYXRhCgkgKiBAcmV0dXJuIG1peGVkCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBlc2NhcGUoICRkYXRhIC
kgewoJCWlmICggZnVuY19udW1fYXJncygpID09PSAxICYmIGZ1bmN0aW9uX2V4aXN0cyggJ19kZXByZWNhd
GVkX2Z1bmN0aW9uJyApICkKCQkJX2RlcHJlY2F0ZWRfZnVuY3Rpb24oIF9fTUVUSE9EX18sICczLjYuMCcs
ICd3cGRiOjpwcmVwYXJlKCkgb3IgZXNjX3NxbCgpJyApOwoJCWlmICggaXNfYXJyYXkoICRkYXRhICkgKSB
7CgkJCWZvcmVhY2ggKCAkZGF0YSBhcyAkayA9PiAkdiApIHsKCQkJCWlmICggaXNfYXJyYXkoICR2ICkgKQ
oJCQkJCSRkYXRhWyRrXSA9ICR0aGlzLT5lc2NhcGUoICR2LCAncmVjdXJzaXZlJyApOwoJCQkJZWxzZQoJC
QkJCSRkYXRhWyRrXSA9ICR0aGlzLT5fd2Vha19lc2NhcGUoICR2LCAnaW50ZXJuYWwnICk7CgkJCX0KCQl9
IGVsc2UgewoJCQkkZGF0YSA9ICR0aGlzLT5fd2Vha19lc2NhcGUoICRkYXRhLCAnaW50ZXJuYWwnICk7Cgk
JfQoKCQlyZXR1cm4gJGRhdGE7Cgl9CgoJLyoqCgkgKiBFc2NhcGVzIGNvbnRlbnQgYnkgcmVmZXJlbmNlIG
ZvciBpbnNlcnRpb24gaW50byB0aGUgZGF0YWJhc2UsIGZvciBzZWN1cml0eQoJICoKCSAqIEB1c2VzIHdwZ
GI6Ol9yZWFsX2VzY2FwZSgpCgkgKgoJICogQHNpbmNlIDIuMy4wCgkgKgoJICogQHBhcmFtIHN0cmluZyAk
c3RyaW5nIHRvIGVzY2FwZQoJICovCglwdWJsaWMgZnVuY3Rpb24gZXNjYXBlX2J5X3JlZiggJiRzdHJpbmc
gKSB7CgkJaWYgKCAhIGlzX2Zsb2F0KCAkc3RyaW5nICkgKQoJCQkkc3RyaW5nID0gJHRoaXMtPl9yZWFsX2
VzY2FwZSggJHN0cmluZyApOwoJfQoKCS8qKgoJICogUHJlcGFyZXMgYSBTUUwgcXVlcnkgZm9yIHNhZmUgZ
XhlY3V0aW9uLiBVc2VzIHNwcmludGYoKS1saWtlIHN5bnRheC4KCSAqCgkgKiBUaGUgZm9sbG93aW5nIHBs
YWNlaG9sZGVycyBjYW4gYmUgdXNlZCBpbiB0aGUgcXVlcnkgc3RyaW5nOgoJICogICAlZCAoaW50ZWdlcik
KCSAqICAgJWYgKGZsb2F0KQoJICogICAlcyAoc3RyaW5nKQoJICoKCSAqIEFsbCBwbGFjZWhvbGRlcnMgTV
VTVCBiZSBsZWZ0IHVucXVvdGVkIGluIHRoZSBxdWVyeSBzdHJpbmcuIEEgY29ycmVzcG9uZGluZyBhcmd1b
WVudCBNVVNUIGJlIHBhc3NlZCBmb3IgZWFjaCBwbGFjZWhvbGRlci4KCSAqCgkgKiBGb3IgY29tcGF0aWJp
bGl0eSB3aXRoIG9sZCBiZWhhdmlvciwgbnVtYmVyZWQgb3IgZm9ybWF0dGVkIHN0cmluZyBwbGFjZWhvbGR
lcnMgKGVnLCAlMSRzLCAlNXMpIHdpbGwgbm90IGhhdmUgcXVvdGVzCgkgKiBhZGRlZCBieSB0aGlzIGZ1bm
N0aW9uLCBzbyBzaG91bGQgYmUgcGFzc2VkIHdpdGggYXBwcm9wcmlhdGUgcXVvdGVzIGFyb3VuZCB0aGVtI
GZvciB5b3VyIHVzYWdlLgoJICoKCSAqIExpdGVyYWwgcGVyY2VudGFnZSBzaWducyAoJSkgaW4gdGhlIHF1
ZXJ5IHN0cmluZyBtdXN0IGJlIHdyaXR0ZW4gYXMgJSUuIFBlcmNlbnRhZ2Ugd2lsZGNhcmRzIChmb3IgZXh
hbXBsZSwKCSAqIHRvIHVzZSBpbiBMSUtFIHN5bnRheCkgbXVzdCBiZSBwYXNzZWQgdmlhIGEgc3Vic3RpdH
V0aW9uIGFyZ3VtZW50IGNvbnRhaW5pbmcgdGhlIGNvbXBsZXRlIExJS0Ugc3RyaW5nLCB0aGVzZQoJICogY
2Fubm90IGJlIGluc2VydGVkIGRpcmVjdGx5IGluIHRoZSBxdWVyeSBzdHJpbmcuIEFsc28gc2VlIHtAc2Vl
IGVzY19saWtlKCl9LgoJICoKCSAqIEFyZ3VtZW50cyBtYXkgYmUgcGFzc2VkIGFzIGluZGl2aWR1YWwgYXJ
ndW1lbnRzIHRvIHRoZSBtZXRob2QsIG9yIGFzIGEgc2luZ2xlIGFycmF5IGNvbnRhaW5pbmcgYWxsIGFyZ3
VtZW50cy4gQSBjb21iaW5hdGlvbgoJICogb2YgdGhlIHR3byBpcyBub3Qgc3VwcG9ydGVkLgoJICoKCSAqI
EV4YW1wbGVzOgoJICogICAgICR3cGRiLT5wcmVwYXJlKCAiU0VMRUNUICogRlJPTSBgdGFibGVgIFdIRVJF
IGBjb2x1bW5gID0gJXMgQU5EIGBmaWVsZGAgPSAlZCBPUiBgb3RoZXJfZmllbGRgIExJS0UgJXMiLCBhcnJ
heSggJ2ZvbycsIDEzMzcsICclYmFyJyApICk7CgkgKiAgICAgJHdwZGItPnByZXBhcmUoICJTRUxFQ1QgRE
FURV9GT1JNQVQoYGZpZWxkYCwgJyUlYycpIEZST00gYHRhYmxlYCBXSEVSRSBgY29sdW1uYCA9ICVzIiwgJ
2ZvbycgKTsKCSAqCgkgKiBAbGluayBodHRwczov
L3NlY3VyZS5waHAubmV0L3NwcmludGYgRGVzY3JpcHRpb24gb2Ygc3ludGF4LgoJICogQHNpbmNlIDIuMy4
wCgkgKgoJICogQHBhcmFtIHN0cmluZyAgICAgICRxdWVyeSAgICBRdWVyeSBzdGF0ZW1lbnQgd2l0aCBzcH
JpbnRmKCktbGlrZSBwbGFjZWhvbGRlcnMKCSAqIEBwYXJhbSBhcnJheXxtaXhlZCAkYXJncyAgICAgVGhlI
GFycmF5IG9mIHZhcmlhYmxlcyB0byBzdWJzdGl0dXRlIGludG8gdGhlIHF1ZXJ5J3MgcGxhY2Vob2xkZXJz
IGlmIGJlaW5nIGNhbGxlZCB3aXRoIGFuIGFycmF5IG9mIGFyZ3VtZW50cywKCSAqICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgb3IgdGhlIGZpcnN0IHZhcmlhYmxlIHRvIHN1YnN0aXR1dGUgaW50byB0aGUgcX
VlcnkncyBwbGFjZWhvbGRlcnMgaWYgYmVpbmcgY2FsbGVkIHdpdGggaW5kaXZpZHVhbCBhcmd1bWVudHMuC
gkgKiBAcGFyYW0gbWl4ZWQgICAgICAgJGFyZ3MsLi4uIGZ1cnRoZXIgdmFyaWFibGVzIHRvIHN1YnN0aXR1
dGUgaW50byB0aGUgcXVlcnkncyBwbGFjZWhvbGRlcnMgaWYgYmVpbmcgY2FsbGVkIHdpaCBpbmRpdmlkdWF
sIGFyZ3VtZW50cy4KCSAqIEByZXR1cm4gc3RyaW5nfHZvaWQgU2FuaXRpemVkIHF1ZXJ5IHN0cmluZywgaW
YgdGhlcmUgaXMgYSBxdWVyeSB0byBwcmVwYXJlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gcHJlcGFyZSggJ
HF1ZXJ5LCAkYXJncyApIHsKCQlpZiAoIGlzX251bGwoICRxdWVyeSApICkgewoJCQlyZXR1cm47CgkJfQoK
CQkvLyBUaGlzIGlzIG5vdCBtZWFudCB0byBiZSBmb29scHJvb2YgLS0gYnV0IGl0IHdpbGwgY2F0Y2ggb2J
2aW91c2x5IGluY29ycmVjdCB1c2FnZS4KCQlpZiAoIHN0cnBvcyggJHF1ZXJ5LCAnJScgKSA9PT0gZmFsc2
UgKSB7CgkJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhcmx5KCk7CgkJCV9kb2luZ19pdF93cm9uZyggJ3dwZ
GI6OnByZXBhcmUnLCBzcHJpbnRmKCBfXyggJ1RoZSBxdWVyeSBhcmd1bWVudCBvZiAlcyBtdXN0IGhhdmUg
YSBwbGFjZWhvbGRlci4nICksICd3cGRiOjpwcmVwYXJlKCknICksICczLjkuMCcgKTsKCQl9CgoJCSRhcmd
zID0gZnVuY19nZXRfYXJncygpOwoJCWFycmF5X3NoaWZ0KCAkYXJncyApOwoKCQkvLyBJZiBhcmdzIHdlcm
UgcGFzc2VkIGFzIGFuIGFycmF5IChhcyBpbiB2c3ByaW50ZiksIG1vdmUgdGhlbSB1cC4KCQkkcGFzc2VkX
2FzX2FycmF5ID0gZmFsc2U7CgkJaWYgKCBpc19hcnJheSggJGFyZ3NbMF0gKSAmJiBjb3VudCggJGFyZ3Mg
KSA9PSAxICkgewoJCQkkcGFzc2VkX2FzX2FycmF5ID0gdHJ1ZTsKCQkJJGFyZ3MgPSAkYXJnc1swXTsKCQl
9CgoJCWZvcmVhY2ggKCAkYXJncyBhcyAkYXJnICkgewoJCQlpZiAoICEgaXNfc2NhbGFyKCAkYXJnICkgJi
YgISBpc19udWxsKCAkYXJnICkgKSB7CgkJCQl3cF9sb2FkX3RyYW5zbGF0aW9uc19lYXJseSgpOwoJCQkJX
2RvaW5nX2l0X3dyb25nKCAnd3BkYjo6cHJlcGFyZScsIHNwcmludGYoIF9fKCAnVW5zdXBwb3J0ZWQgdmFs
dWUgdHlwZSAoJXMpLicgKSwgZ2V0dHlwZSggJGFyZyApICksICc0LjguMicgKTsKCQkJfQoJCX0KCgkJLyo
KCQkgKiBTcGVjaWZ5IHRoZSBmb3JtYXR0aW5nIGFsbG93ZWQgaW4gYSBwbGFjZWhvbGRlci4gVGhlIGZvbG
xvd2luZyBhcmUgYWxsb3dlZDoKCQkgKgoJCSAqIC0gU2lnbiBzcGVjaWZpZXIuIGVnLCAkK2QKCQkgKiAtI
E51bWJlcmVkIHBsYWNlaG9sZGVycy4gZWcsICUxJHMKCQkgKiAtIFBhZGRpbmcgc3BlY2lmaWVyLCBpbmNs
dWRpbmcgY3VzdG9tIHBhZGRpbmcgY2hhcmFjdGVycy4gZWcsICUwNXMsICUnIzVzCgkJICogLSBBbGlnbm1
lbnQgc3BlY2lmaWVyLiBlZywgJTA1LXMKCQkgKiAtIFByZWNpc2lvbiBzcGVjaWZpZXIuIGVnLCAlLjJmCg
kJICovCgkJJGFsbG93ZWRfZm9ybWF0ID0gJyg/OlsxLTldWzAtOV0qWyRdKT9bLSswLTldKig/OiB8MHxcJ
y4pP1stKzAtOV0qKD86XC5bMC05XSspPyc7CgoJCS8qCgkJICogSWYgYSAlcyBwbGFjZWhvbGRlciBhbHJl
YWR5IGhhcyBxdW90ZXMgYXJvdW5kIGl0LCByZW1vdmluZyB0aGUgZXhpc3RpbmcgcXVvdGVzIGFuZCByZS1
pbnNlcnRpbmcgdGhlbQoJCSAqIGVuc3VyZXMgdGhlIHF1b3RlcyBhcmUgY29uc2lzdGVudC4KCQkgKgoJCS
AqIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhpcyBpcyBvbmx5IGFwcGxpZWQgdG8gJXMsIGFuZ
CBub3QgdG8gcGxhY2Vob2xkZXJzIGxpa2UgJTEkcywgd2hpY2ggYXJlIGZyZXF1ZW50bHkKCQkgKiB1c2Vk
IGluIHRoZSBtaWRkbGUgb2YgbG9uZ2VyIHN0cmluZ3MsIG9yIGFzIHRhYmxlIG5hbWUgcGxhY2Vob2xkZXJ
zLgoJCSAqLwoJCSRxdWVyeSA9IHN0cl9yZXBsYWNlKCAiJyVzJyIsICclcycsICRxdWVyeSApOyAvLyBTdH
JpcCBhbnkgZXhpc3Rpbmcgc2luZ2xlIHF1b3Rlcy4KCQkkcXVlcnkgPSBzdHJfcmVwbGFjZSggJyIlcyInL
CAnJXMnLCAkcXVlcnkgKTsgLy8gU3RyaXAgYW55IGV4aXN0aW5nIGRvdWJsZSBxdW90ZXMuCgkJJHF1ZXJ5
ID0gcHJlZ19yZXBsYWNlKCAnLyg/PCElKSVzLycsICInJXMnIiwgJHF1ZXJ5ICk7IC8vIFF1b3RlIHRoZSB
zdHJpbmdzLCBhdm9pZGluZyBlc2NhcGVkIHN0cmluZ3MgbGlrZSAlJXMuCgoJCSRxdWVyeSA9IHByZWdfcm
VwbGFjZSggIi8oPzwhJSkoJSgkYWxsb3dlZF9mb3JtYXQpP2YpLyIgLCAnJVxcMkYnLCAkcXVlcnkgKTsgL
y8gRm9yY2UgZmxvYXRzIHRvIGJlIGxvY2FsZSB1bmF3YXJlLgoKCQkkcXVlcnkgPSBwcmVnX3JlcGxhY2Uo
ICIvJSg/OiV8JHwoPyEoJGFsbG93ZWRfZm9ybWF0KT9bc2RGXSkpLyIsICclJVxcMScsICRxdWVyeSApOyA
vLyBFc2NhcGUgYW55IHVuZXNjYXBlZCBwZXJjZW50cy4KCgkJLy8gQ291bnQgdGhlIG51bWJlciBvZiB2YW
xpZCBwbGFjZWhvbGRlcnMgaW4gdGhlIHF1ZXJ5LgoJCSRwbGFjZWhvbGRlcnMgPSBwcmVnX21hdGNoX2Fsb
CggIi8oXnxbXiVdfCglJSkrKSUoJGFsbG93ZWRfZm9ybWF0KT9bc2RGXS8iLCAkcXVlcnksICRtYXRjaGVz
ICk7CgoJCWlmICggY291bnQoICRhcmdzICkgIT09ICRwbGFjZWhvbGRlcnMgKSB7CgkJCWlmICggMSA9PT0
gJHBsYWNlaG9sZGVycyAmJiAkcGFzc2VkX2FzX2FycmF5ICkgewoJCQkJLy8gSWYgdGhlIHBhc3NlZCBxdW
VyeSBvbmx5IGV4cGVjdGVkIG9uZSBhcmd1bWVudCwgYnV0IHRoZSB3cm9uZyBudW1iZXIgb2YgYXJndW1lb
nRzIHdlcmUgc2VudCBhcyBhbiBhcnJheSwgYmFpbC4KCQkJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhcmx5
KCk7CgkJCQlfZG9pbmdfaXRfd3JvbmcoICd3cGRiOjpwcmVwYXJlJywgX18oICdUaGUgcXVlcnkgb25seSB
leHBlY3RlZCBvbmUgcGxhY2Vob2xkZXIsIGJ1dCBhbiBhcnJheSBvZiBtdWx0aXBsZSBwbGFjZWhvbGRlcn
Mgd2FzIHNlbnQuJyApLCAnNC45LjAnICk7CgoJCQkJcmV0dXJuOwoJCQl9IGVsc2UgewoJCQkJLyoKCQkJC
SAqIElmIHdlIGRvbid0IGhhdmUgdGhlIHJpZ2h0IG51bWJlciBvZiBwbGFjZWhvbGRlcnMsIGJ1dCB0aGV5
IHdlcmUgcGFzc2VkIGFzIGluZGl2aWR1YWwgYXJndW1lbnRzLAoJCQkJICogb3Igd2Ugd2VyZSBleHBlY3R
pbmcgbXVsdGlwbGUgYXJndW1lbnRzIGluIGFuIGFycmF5LCB0aHJvdyBhIHdhcm5pbmcuCgkJCQkgKi8KCQ
kJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhcmx5KCk7CgkJCQlfZG9pbmdfaXRfd3JvbmcoICd3cGRiOjpwc
mVwYXJlJywKCQkJCQkvKiB0cmFuc2xhdG9yczogMTogbnVtYmVyIG9mIHBsYWNlaG9sZGVycywgMjogbnVt
YmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgKi8KCQkJCQlzcHJpbnRmKCBfXyggJ1RoZSBxdWVyeSBkb2VzIG5
vdCBjb250YWluIHRoZSBjb3JyZWN0IG51bWJlciBvZiBwbGFjZWhvbGRlcnMgKCUxJGQpIGZvciB0aGUgbn
VtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgKCUyJGQpLicgKSwKCQkJCQkJJHBsYWNlaG9sZGVycywKCQkJC
QkJY291bnQoICRhcmdzICkgKSwKCQkJCQknNC44LjMnCgkJCQkpOwoJCQl9CgkJfQoKCQlhcnJheV93YWxr
KCAkYXJncywgYXJyYXkoICR0aGlzLCAnZXNjYXBlX2J5X3JlZicgKSApOwoJCSRxdWVyeSA9IEB2c3ByaW5
0ZiggJHF1ZXJ5LCAkYXJncyApOwoKCQlyZXR1cm4gJHRoaXMtPmFkZF9wbGFjZWhvbGRlcl9lc2NhcGUoIC
RxdWVyeSApOwoJfQoKCS8qKgoJICogRmlyc3QgaGFsZiBvZiBlc2NhcGluZyBmb3IgTElLRSBzcGVjaWFsI
GNoYXJhY3RlcnMgJSBhbmQgXyBiZWZvcmUgcHJlcGFyaW5nIGZvciBNeVNRTC4KCSAqCgkgKiBVc2UgdGhp
cyBvbmx5IGJlZm9yZSB3cGRiOjpwcmVwYXJlKCkgb3IgZXNjX3NxbCgpLiAgUmV2ZXJzaW5nIHRoZSBvcmR
lciBpcyB2ZXJ5IGJhZCBmb3Igc2VjdXJpdHkuCgkgKgoJICogRXhhbXBsZSBQcmVwYXJlZCBTdGF0ZW1lbn
Q6CgkgKgoJICogICAgICR3aWxkID0gJyUnOwoJICogICAgICRmaW5kID0gJ29ubHkgNDMlIG9mIHBsYW5ld
HMnOwoJICogICAgICRsaWtlID0gJHdpbGQgLiAkd3BkYi0+ZXNjX2xpa2UoICRmaW5kICkgLiAkd2lsZDsK
CSAqICAgICAkc3FsICA9ICR3cGRiLT5wcmVwYXJlKCAiU0VMRUNUICogRlJPTSAkd3BkYi0+cG9zdHMgV0h
FUkUgcG9zdF9jb250ZW50IExJS0UgJyVzJyIsICRsaWtlICk7CgkgKgoJICogRXhhbXBsZSBFc2NhcGUgQ2
hhaW46CgkgKgoJICogICAgICRzcWwgID0gZXNjX3NxbCggJHdwZGItPmVzY19saWtlKCAkaW5wdXQgKSApO
woJICoKCSAqIEBzaW5jZSA0LjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqCgkgKiBAcGFyYW0gc3RyaW5n
ICR0ZXh0IFRoZSByYXcgdGV4dCB0byBiZSBlc2NhcGVkLiBUaGUgaW5wdXQgdHlwZWQgYnkgdGhlIHVzZXI
gc2hvdWxkIGhhdmUgbm8KCSAqICAgICAgICAgICAgICAgICAgICAgZXh0cmEgb3IgZGVsZXRlZCBzbGFzaG
VzLgoJICogQHJldHVybiBzdHJpbmcgVGV4dCBpbiB0aGUgZm9ybSBvZiBhIExJS0UgcGhyYXNlLiBUaGUgb
3V0cHV0IGlzIG5vdCBTUUwgc2FmZS4gQ2FsbCAkd3BkYjo6cHJlcGFyZSgpCgkgKiAgICAgICAgICAgICAg
ICBvciByZWFsX2VzY2FwZSBuZXh0LgoJICovCglwdWJsaWMgZnVuY3Rpb24gZXNjX2xpa2UoICR0ZXh0ICk
gewoJCXJldHVybiBhZGRjc2xhc2hlcyggJHRleHQsICdfJVxcJyApOwoJfQoKCS8qKgoJICogUHJpbnQgU1
FML0RCIGVycm9yLgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKiBAZ2xvYmFsIGFycmF5ICRFWlNRTF9FUlJPU
iBTdG9yZXMgZXJyb3IgaW5mb3JtYXRpb24gb2YgcXVlcnkgYW5kIGVycm9yIHN0cmluZwoJICoKCSAqIEBw
YXJhbSBzdHJpbmcgJHN0ciBUaGUgZXJyb3IgdG8gZGlzcGxheQoJICogQHJldHVybiBmYWxzZXx2b2lkIEZ
hbHNlIGlmIHRoZSBzaG93aW5nIG9mIGVycm9ycyBpcyBkaXNhYmxlZC4KCSAqLwoJcHVibGljIGZ1bmN0aW
9uIHByaW50X2Vycm9yKCAkc3RyID0gJycgKSB7CgkJZ2xvYmFsICRFWlNRTF9FUlJPUjsKCgkJaWYgKCAhJ
HN0ciApIHsKCQkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJCSRzdHIgPSBteXNxbGlfZXJyb3Io
ICR0aGlzLT5kYmggKTsKCQkJfSBlbHNlIHsKCQkJCSRzdHIgPSBteXNxbF9lcnJvciggJHRoaXMtPmRiaCA
pOwoJCQl9CgkJfQoJCSRFWlNRTF9FUlJPUltdID0gYXJyYXkoICdxdWVyeScgPT4gJHRoaXMtPmxhc3RfcX
VlcnksICdlcnJvcl9zdHInID0+ICRzdHIgKTsKCgkJaWYgKCAkdGhpcy0+c3VwcHJlc3NfZXJyb3JzICkKC
QkJcmV0dXJuIGZhbHNlOwoKCQl3cF9sb2FkX3RyYW5zbGF0aW9uc19lYXJseSgpOwoKCQlpZiAoICRjYWxs
ZXIgPSAkdGhpcy0+Z2V0X2NhbGxlcigpICkgewoJCQkvKiB0cmFuc2xhdG9yczogMTogRGF0YWJhc2UgZXJ
yb3IgbWVzc2FnZSwgMjogU1FMIHF1ZXJ5LCAzOiBOYW1lIG9mIHRoZSBjYWxsaW5nIGZ1bmN0aW9uICovCg
kJCSRlcnJvcl9zdHIgPSBzcHJpbnRmKCBfXyggJ1dvcmRQcmVzcyBkYXRhYmFzZSBlcnJvciAlMSRzIGZvc
iBxdWVyeSAlMiRzIG1hZGUgYnkgJTMkcycgKSwgJHN0ciwgJHRoaXMtPmxhc3RfcXVlcnksICRjYWxsZXIg
KTsKCQl9IGVsc2UgewoJCQkvKiB0cmFuc2xhdG9yczogMTogRGF0YWJhc2UgZXJyb3IgbWVzc2FnZSwgMjo
gU1FMIHF1ZXJ5ICovCgkJCSRlcnJvcl9zdHIgPSBzcHJpbnRmKCBfXyggJ1dvcmRQcmVzcyBkYXRhYmFzZS
BlcnJvciAlMSRzIGZvciBxdWVyeSAlMiRzJyApLCAkc3RyLCAkdGhpcy0+bGFzdF9xdWVyeSApOwoJCX0KC
gkJZXJyb3JfbG9nKCAkZXJyb3Jfc3RyICk7CgoJCS8vIEFyZSB3ZSBzaG93aW5nIGVycm9ycz8KCQlpZiAo
ICEgJHRoaXMtPnNob3dfZXJyb3JzICkKCQkJcmV0dXJuIGZhbHNlOwoKCQkvLyBJZiB0aGVyZSBpcyBhbiB
lcnJvciB0aGVuIHRha2Ugbm90ZSBvZiBpdAoJCWlmICggaXNfbXVsdGlzaXRlKCkgKSB7CgkJCSRtc2cgPS
BzcHJpbnRmKAoJCQkJIiVzIFslc11cbiVzXG4iLAoJCQkJX18oICdXb3JkUHJlc3MgZGF0YWJhc2UgZXJyb
3I6JyApLAoJCQkJJHN0ciwKCQkJCSR0aGlzLT5sYXN0X3F1ZXJ5CgkJCSk7CgoJCQlpZiAoIGRlZmluZWQo
ICdFUlJPUkxPR0ZJTEUnICkgKSB7CgkJCQllcnJvcl9sb2coICRtc2csIDMsIEVSUk9STE9HRklMRSApOwo
JCQl9CgkJCWlmICggZGVmaW5lZCggJ0RJRU9OREJFUlJPUicgKSApIHsKCQkJCXdwX2RpZSggJG1zZyApOw
oJCQl9CgkJfSBlbHNlIHsKCQkJJHN0ciAgID0gaHRtbHNwZWNpYWxjaGFycyggJHN0ciwgRU5UX1FVT1RFU
yApOwoJCQkkcXVlcnkgPSBodG1sc3BlY2lhbGNoYXJzKCAkdGhpcy0+bGFzdF9xdWVyeSwgRU5UX1FVT1RF
UyApOwoKCQkJcHJpbnRmKAoJCQkJJzxkaXYgaWQ9ImVycm9yIj48cCBjbGFzcz0id3BkYmVycm9yIj48c3R
yb25nPiVzPC9zdHJvbmc+IFslc108YnIgLz48Y29kZT4lczwvY29kZT48L3A+PC9kaXY+JywKCQkJCV9fKC
AnV29yZFByZXNzIGRhdGFiYXNlIGVycm9yOicgKSwKCQkJCSRzdHIsCgkJCQkkcXVlcnkKCQkJKTsKCQl9C
gl9CgoJLyoqCgkgKiBFbmFibGVzIHNob3dpbmcgb2YgZGF0YWJhc2UgZXJyb3JzLgoJICoKCSAqIFRoaXMg
ZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgb25seSB0byBlbmFibGUgc2hvd2luZyBvZiBlcnJvcnMuCgkgKiB
3cGRiOjpoaWRlX2Vycm9ycygpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgZm9yIGhpZGluZyBvZiBlcnJvcn
MuIEhvd2V2ZXIsCgkgKiB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSBhbmQgZGlzYWJsZ
SBzaG93aW5nIG9mIGRhdGFiYXNlCgkgKiBlcnJvcnMuCgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBzZWUg
d3BkYjo6aGlkZV9lcnJvcnMoKQoJICoKCSAqIEBwYXJhbSBib29sICRzaG93IFdoZXRoZXIgdG8gc2hvdyB
vciBoaWRlIGVycm9ycwoJICogQHJldHVybiBib29sIE9sZCB2YWx1ZSBmb3Igc2hvd2luZyBlcnJvcnMuCg
kgKi8KCXB1YmxpYyBmdW5jdGlvbiBzaG93X2Vycm9ycyggJHNob3cgPSB0cnVlICkgewoJCSRlcnJvcnMgP
SAkdGhpcy0+c2hvd19lcnJvcnM7CgkJJHRoaXMtPnNob3dfZXJyb3JzID0gJHNob3c7CgkJcmV0dXJuICRl
cnJvcnM7Cgl9CgoJLyoqCgkgKiBEaXNhYmxlcyB
zaG93aW5nIG9mIGRhdGFiYXNlIGVycm9ycy4KCSAqCgkgKiBCeSBkZWZhdWx0IGRhdGFiYXNlIGVycm9ycy
BhcmUgbm90IHNob3duLgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKiBAc2VlIHdwZGI6OnNob3dfZXJyb3JzK
CkKCSAqCgkgKiBAcmV0dXJuIGJvb2wgV2hldGhlciBzaG93aW5nIG9mIGVycm9ycyB3YXMgYWN0aXZlCgkg
Ki8KCXB1YmxpYyBmdW5jdGlvbiBoaWRlX2Vycm9ycygpIHsKCQkkc2hvdyA9ICR0aGlzLT5zaG93X2Vycm9
yczsKCQkkdGhpcy0+c2hvd19lcnJvcnMgPSBmYWxzZTsKCQlyZXR1cm4gJHNob3c7Cgl9CgoJLyoqCgkgKi
BXaGV0aGVyIHRvIHN1cHByZXNzIGRhdGFiYXNlIGVycm9ycy4KCSAqCgkgKiBCeSBkZWZhdWx0IGRhdGFiY
XNlIGVycm9ycyBhcmUgc3VwcHJlc3NlZCwgd2l0aCBhIHNpbXBsZQoJICogY2FsbCB0byB0aGlzIGZ1bmN0
aW9uIHRoZXkgY2FuIGJlIGVuYWJsZWQuCgkgKgoJICogQHNpbmNlIDIuNS4wCgkgKiBAc2VlIHdwZGI6Omh
pZGVfZXJyb3JzKCkKCSAqIEBwYXJhbSBib29sICRzdXBwcmVzcyBPcHRpb25hbC4gTmV3IHZhbHVlLiBEZW
ZhdWx0cyB0byB0cnVlLgoJICogQHJldHVybiBib29sIE9sZCB2YWx1ZQoJICovCglwdWJsaWMgZnVuY3Rpb
24gc3VwcHJlc3NfZXJyb3JzKCAkc3VwcHJlc3MgPSB0cnVlICkgewoJCSRlcnJvcnMgPSAkdGhpcy0+c3Vw
cHJlc3NfZXJyb3JzOwoJCSR0aGlzLT5zdXBwcmVzc19lcnJvcnMgPSAoYm9vbCkgJHN1cHByZXNzOwoJCXJ
ldHVybiAkZXJyb3JzOwoJfQoKCS8qKgoJICogS2lsbCBjYWNoZWQgcXVlcnkgcmVzdWx0cy4KCSAqCgkgKi
BAc2luY2UgMC43MQoJICovCglwdWJsaWMgZnVuY3Rpb24gZmx1c2goKSB7CgkJJHRoaXMtPmxhc3RfcmVzd
Wx0ID0gYXJyYXkoKTsKCQkkdGhpcy0+Y29sX2luZm8gICAgPSBudWxsOwoJCSR0aGlzLT5sYXN0X3F1ZXJ5
ICA9IG51bGw7CgkJJHRoaXMtPnJvd3NfYWZmZWN0ZWQgPSAkdGhpcy0+bnVtX3Jvd3MgPSAwOwoJCSR0aGl
zLT5sYXN0X2Vycm9yICA9ICcnOwoKCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICYmICR0aGlzLT5yZXN1bH
QgaW5zdGFuY2VvZiBteXNxbGlfcmVzdWx0ICkgewoJCQlteXNxbGlfZnJlZV9yZXN1bHQoICR0aGlzLT5yZ
XN1bHQgKTsKCQkJJHRoaXMtPnJlc3VsdCA9IG51bGw7CgoJCQkvLyBTYW5pdHkgY2hlY2sgYmVmb3JlIHVz
aW5nIHRoZSBoYW5kbGUKCQkJaWYgKCBlbXB0eSggJHRoaXMtPmRiaCApIHx8ICEoICR0aGlzLT5kYmggaW5
zdGFuY2VvZiBteXNxbGkgKSApIHsKCQkJCXJldHVybjsKCQkJfQoKCQkJLy8gQ2xlYXIgb3V0IGFueSByZX
N1bHRzIGZyb20gYSBtdWx0aS1xdWVyeQoJCQl3aGlsZSAoIG15c3FsaV9tb3JlX3Jlc3VsdHMoICR0aGlzL
T5kYmggKSApIHsKCQkJCW15c3FsaV9uZXh0X3Jlc3VsdCggJHRoaXMtPmRiaCApOwoJCQl9CgkJfSBlbHNl
aWYgKCBpc19yZXNvdXJjZSggJHRoaXMtPnJlc3VsdCApICkgewoJCQlteXNxbF9mcmVlX3Jlc3VsdCggJHR
oaXMtPnJlc3VsdCApOwoJCX0KCX0KCgkvKioKCSAqIENvbm5lY3QgdG8gYW5kIHNlbGVjdCBkYXRhYmFzZS
4KCSAqCgkgKiBJZiAkYWxsb3dfYmFpbCBpcyBmYWxzZSwgdGhlIGxhY2sgb2YgZGF0YWJhc2UgY29ubmVjd
GlvbiB3aWxsIG5lZWQKCSAqIHRvIGJlIGhhbmRsZWQgbWFudWFsbHkuCgkgKgoJICogQHNpbmNlIDMuMC4w
CgkgKiBAc2luY2UgMy45LjAgJGFsbG93X2JhaWwgcGFyYW1ldGVyIGFkZGVkLgoJICoKCSAqIEBwYXJhbSB
ib29sICRhbGxvd19iYWlsIE9wdGlvbmFsLiBBbGxvd3MgdGhlIGZ1bmN0aW9uIHRvIGJhaWwuIERlZmF1bH
QgdHJ1ZS4KCSAqIEByZXR1cm4gYm9vbCBUcnVlIHdpdGggYSBzdWNjZXNzZnVsIGNvbm5lY3Rpb24sIGZhb
HNlIG9uIGZhaWx1cmUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBkYl9jb25uZWN0KCAkYWxsb3dfYmFpbCA9
IHRydWUgKSB7CgkJJHRoaXMtPmlzX215c3FsID0gdHJ1ZTsKCgkJLyoKCQkgKiBEZXByZWNhdGVkIGluIDM
uOSsgd2hlbiB1c2luZyBNeVNRTGkuIE5vIGVxdWl2YWxlbnQKCQkgKiAkbmV3X2xpbmsgcGFyYW1ldGVyIG
V4aXN0cyBmb3IgbXlzcWxpXyogZnVuY3Rpb25zLgoJCSAqLwoJCSRuZXdfbGluayA9IGRlZmluZWQoICdNW
VNRTF9ORVdfTElOSycgKSA/IE1ZU1FMX05FV19MSU5LIDogdHJ1ZTsKCQkkY2xpZW50X2ZsYWdzID0gZGVm
aW5lZCggJ01ZU1FMX0NMSUVOVF9GTEFHUycgKSA/IE1ZU1FMX0NMSUVOVF9GTEFHUyA6IDA7CgoJCWlmICg
gJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCSR0aGlzLT5kYmggPSBteXNxbGlfaW5pdCgpOwoKCQkJLy8gbX
lzcWxpX3JlYWxfY29ubmVjdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGhvc3QgcGFyYW0gaW5jbHVkaW5nIGEgc
G9ydCBvciBzb2NrZXQKCQkJLy8gbGlrZSBteXNxbF9jb25uZWN0IGRvZXMuIFRoaXMgZHVwbGljYXRlcyBo
b3cgbXlzcWxfY29ubmVjdCBkZXRlY3RzIGEgcG9ydCBhbmQvb3Igc29ja2V0IGZpbGUuCgkJCSRwb3J0ID0
gbnVsbDsKCQkJJHNvY2tldCA9IG51bGw7CgkJCSRob3N0ID0gJHRoaXMtPmRiaG9zdDsKCQkJJHBvcnRfb3
Jfc29ja2V0ID0gc3Ryc3RyKCAkaG9zdCwgJzonICk7CgkJCWlmICggISBlbXB0eSggJHBvcnRfb3Jfc29ja
2V0ICkgKSB7CgkJCQkkaG9zdCA9IHN1YnN0ciggJGhvc3QsIDAsIHN0cnBvcyggJGhvc3QsICc6JyApICk7
CgkJCQkkcG9ydF9vcl9zb2NrZXQgPSBzdWJzdHIoICRwb3J0X29yX3NvY2tldCwgMSApOwoJCQkJaWYgKCA
wICE9PSBzdHJwb3MoICRwb3J0X29yX3NvY2tldCwgJy8nICkgKSB7CgkJCQkJJHBvcnQgPSBpbnR2YWwoIC
Rwb3J0X29yX3NvY2tldCApOwoJCQkJCSRtYXliZV9zb2NrZXQgPSBzdHJzdHIoICRwb3J0X29yX3NvY2tld
CwgJzonICk7CgkJCQkJaWYgKCAhIGVtcHR5KCAkbWF5YmVfc29ja2V0ICkgKSB7CgkJCQkJCSRzb2NrZXQg
PSBzdWJzdHIoICRtYXliZV9zb2NrZXQsIDEgKTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCSRzb2NrZXQ
gPSAkcG9ydF9vcl9zb2NrZXQ7CgkJCQl9CgkJCX0KCgkJCWlmICggV1BfREVCVUcgKSB7CgkJCQlteXNxbG
lfcmVhbF9jb25uZWN0KCAkdGhpcy0+ZGJoLCAkaG9zdCwgJHRoaXMtPmRidXNlciwgJHRoaXMtPmRicGFzc
3dvcmQsIG51bGwsICRwb3J0LCAkc29ja2V0LCAkY2xpZW50X2ZsYWdzICk7CgkJCX0gZWxzZSB7CgkJCQlA
bXlzcWxpX3JlYWxfY29ubmVjdCggJHRoaXMtPmRiaCwgJGhvc3QsICR0aGlzLT5kYnVzZXIsICR0aGlzLT5
kYnBhc3N3b3JkLCBudWxsLCAkcG9ydCwgJHNvY2tldCwgJGNsaWVudF9mbGFncyApOwoJCQl9CgoJCQlpZi
AoICR0aGlzLT5kYmgtPmNvbm5lY3RfZXJybm8gKSB7CgkJCQkkdGhpcy0+ZGJoID0gbnVsbDsKCgkJCQkvK
iBJdCdzIHBvc3NpYmxlIGV4dC9teXNxbGkgaXMgbWlzY29uZmlndXJlZC4gRmFsbCBiYWNrIHRvIGV4dC9t
eXNxbCBpZjoKCQkgCQkgKiAgLSBXZSBoYXZlbid0IHByZXZpb3VzbHkgY29ubmVjdGVkLCBhbmQKCQkgCQk
gKiAgLSBXUF9VU0VfRVhUX01ZU1FMIGlzbid0IHNldCB0byBmYWxzZSwgYW5kCgkJIAkJICogIC0gZXh0L2
15c3FsIGlzIGxvYWRlZC4KCQkgCQkgKi8KCQkJCSRhdHRlbXB0X2ZhbGxiYWNrID0gdHJ1ZTsKCgkJCQlpZ
iAoICR0aGlzLT5oYXNfY29ubmVjdGVkICkgewoJCQkJCSRhdHRlbXB0X2ZhbGxiYWNrID0gZmFsc2U7CgkJ
CQl9IGVsc2VpZiAoIGRlZmluZWQoICdXUF9VU0VfRVhUX01ZU1FMJyApICYmICEgV1BfVVNFX0VYVF9NWVN
RTCApIHsKCQkJCQkkYXR0ZW1wdF9mYWxsYmFjayA9IGZhbHNlOwoJCQkJfSBlbHNlaWYgKCAhIGZ1bmN0aW
9uX2V4aXN0cyggJ215c3FsX2Nvbm5lY3QnICkgKSB7CgkJCQkJJGF0dGVtcHRfZmFsbGJhY2sgPSBmYWxzZ
TsKCQkJCX0KCgkJCQlpZiAoICRhdHRlbXB0X2ZhbGxiYWNrICkgewoJCQkJCSR0aGlzLT51c2VfbXlzcWxp
ID0gZmFsc2U7CgkJCQkJcmV0dXJuICR0aGlzLT5kYl9jb25uZWN0KCAkYWxsb3dfYmFpbCApOwoJCQkJfQo
JCQl9CgkJfSBlbHNlIHsKCQkJaWYgKCBXUF9ERUJVRyApIHsKCQkJCSR0aGlzLT5kYmggPSBteXNxbF9jb2
5uZWN0KCAkdGhpcy0+ZGJob3N0LCAkdGhpcy0+ZGJ1c2VyLCAkdGhpcy0+ZGJwYXNzd29yZCwgJG5ld19sa
W5rLCAkY2xpZW50X2ZsYWdzICk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+ZGJoID0gQG15c3FsX2Nvbm5l
Y3QoICR0aGlzLT5kYmhvc3QsICR0aGlzLT5kYnVzZXIsICR0aGlzLT5kYnBhc3N3b3JkLCAkbmV3X2xpbms
sICRjbGllbnRfZmxhZ3MgKTsKCQkJfQoJCX0KCgkJaWYgKCAhICR0aGlzLT5kYmggJiYgJGFsbG93X2JhaW
wgKSB7CgkJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhcmx5KCk7CgoJCQkvLyBMb2FkIGN1c3RvbSBEQiBlc
nJvciB0ZW1wbGF0ZSwgaWYgcHJlc2VudC4KCQkJaWYgKCBmaWxlX2V4aXN0cyggV1BfQ09OVEVOVF9ESVIg
LiAnL2RiLWVycm9yLnBocCcgKSApIHsKCQkJCXJlcXVpcmVfb25jZSggV1BfQ09OVEVOVF9ESVIgLiAnL2R
iLWVycm9yLnBocCcgKTsKCQkJCWRpZSgpOwoJCQl9CgoJCQkkbWVzc2FnZSA9ICc8aDE+JyAuIF9fKCAnRX
Jyb3IgZXN0YWJsaXNoaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvbicgKSAuICI8L2gxPlxuIjsKCgkJCSRtZ
XNzYWdlIC49ICc8cD4nIC4gc3ByaW50ZigKCQkJCS8qIHRyYW5zbGF0b3JzOiAxOiB3cC1jb25maWcucGhw
LiAyOiBkYXRhYmFzZSBob3N0ICovCgkJCQlfXyggJ1RoaXMgZWl0aGVyIG1lYW5zIHRoYXQgdGhlIHVzZXJ
uYW1lIGFuZCBwYXNzd29yZCBpbmZvcm1hdGlvbiBpbiB5b3VyICUxJHMgZmlsZSBpcyBpbmNvcnJlY3Qgb3
Igd2UgY2FuJiM4MjE3O3QgY29udGFjdCB0aGUgZGF0YWJhc2Ugc2VydmVyIGF0ICUyJHMuIFRoaXMgY291b
GQgbWVhbiB5b3VyIGhvc3QmIzgyMTc7cyBkYXRhYmFzZSBzZXJ2ZXIgaXMgZG93bi4nICksCgkJCQknPGNv
ZGU+d3AtY29uZmlnLnBocDwvY29kZT4nLAoJCQkJJzxjb2RlPicgLiBodG1sc3BlY2lhbGNoYXJzKCAkdGh
pcy0+ZGJob3N0LCBFTlRfUVVPVEVTICkgLiAnPC9jb2RlPicKCQkJKSAuICI8L3A+XG4iOwoKCQkJJG1lc3
NhZ2UgLj0gIjx1bD5cbiI7CgkJCSRtZXNzYWdlIC49ICc8bGk+JyAuIF9fKCAnQXJlIHlvdSBzdXJlIHlvd
SBoYXZlIHRoZSBjb3JyZWN0IHVzZXJuYW1lIGFuZCBwYXNzd29yZD8nICkgLiAiPC9saT5cbiI7CgkJCSRt
ZXNzYWdlIC49ICc8bGk+JyAuIF9fKCAnQXJlIHlvdSBzdXJlIHRoYXQgeW91IGhhdmUgdHlwZWQgdGhlIGN
vcnJlY3QgaG9zdG5hbWU/JyApIC4gIjwvbGk+XG4iOwoJCQkkbWVzc2FnZSAuPSAnPGxpPicgLiBfXyggJ0
FyZSB5b3Ugc3VyZSB0aGF0IHRoZSBkYXRhYmFzZSBzZXJ2ZXIgaXMgcnVubmluZz8nICkgLiAiPC9saT5cb
iI7CgkJCSRtZXNzYWdlIC49ICI8L3VsPlxuIjsKCgkJCSRtZXNzYWdlIC49ICc8cD4nIC4gc3ByaW50ZigK
CQkJCS8qIHRyYW5zbGF0b3JzOiAlczogc3VwcG9ydCBmb3J1bXMgVVJMICovCgkJCQlfXyggJ0lmIHlvdSY
jODIxNztyZSB1bnN1cmUgd2hhdCB0aGVzZSB0ZXJtcyBtZWFuIHlvdSBzaG91bGQgcHJvYmFibHkgY29udG
FjdCB5b3VyIGhvc3QuIElmIHlvdSBzdGlsbCBuZWVkIGhlbHAgeW91IGNhbiBhbHdheXMgdmlzaXQgdGhlI
DxhIGhyZWY9IiVzIj5Xb3JkUHJlc3MgU3VwcG9ydCBGb3J1bXM8L2E+LicgKSwKCQkJCV9fKCAnaHR0cHM6
Ly93b3JkcHJlc3Mub3JnL3N1cHBvcnQvJyApCgkJCSkgLiAiPC9wPlxuIjsKCgkJCSR0aGlzLT5iYWlsKCA
kbWVzc2FnZSwgJ2RiX2Nvbm5lY3RfZmFpbCcgKTsKCgkJCXJldHVybiBmYWxzZTsKCQl9IGVsc2VpZiAoIC
R0aGlzLT5kYmggKSB7CgkJCWlmICggISAkdGhpcy0+aGFzX2Nvbm5lY3RlZCApIHsKCQkJCSR0aGlzLT5pb
ml0X2NoYXJzZXQoKTsKCQkJfQoKCQkJJHRoaXMtPmhhc19jb25uZWN0ZWQgPSB0cnVlOwoKCQkJJHRoaXMt
PnNldF9jaGFyc2V0KCAkdGhpcy0+ZGJoICk7CgoJCQkkdGhpcy0+cmVhZHkgPSB0cnVlOwoJCQkkdGhpcy0
+c2V0X3NxbF9tb2RlKCk7CgkJCSR0aGlzLT5zZWxlY3QoICR0aGlzLT5kYm5hbWUsICR0aGlzLT5kYmggKT
sKCgkJCXJldHVybiB0cnVlOwoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQ2hlY2tzIHRoY
XQgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGRhdGFiYXNlIGlzIHN0aWxsIHVwLiBJZiBub3QsIHRyeSB0byBy
ZWNvbm5lY3QuCgkgKgoJICogSWYgdGhpcyBmdW5jdGlvbiBpcyB1bmFibGUgdG8gcmVjb25uZWN0LCBpdCB
3aWxsIGZvcmNpYmx5IGRpZSwgb3IgaWYgYWZ0ZXIgdGhlCgkgKiB0aGUge0BzZWUgJ3RlbXBsYXRlX3JlZG
lyZWN0J30gaG9vayBoYXMgYmVlbiBmaXJlZCwgcmV0dXJuIGZhbHNlIGluc3RlYWQuCgkgKgoJICogSWYgJ
GFsbG93X2JhaWwgaXMgZmFsc2UsIHRoZSBsYWNrIG9mIGRhdGFiYXNlIGNvbm5lY3Rpb24gd2lsbCBuZWVk
CgkgKiB0byBiZSBoYW5kbGVkIG1hbnVhbGx5LgoJICoKCSAqIEBzaW5jZSAzLjkuMAoJICoKCSAqIEBwYXJ
hbSBib29sICRhbGxvd19iYWlsIE9wdGlvbmFsLiBBbGxvd3MgdGhlIGZ1bmN0aW9uIHRvIGJhaWwuIERlZm
F1bHQgdHJ1ZS4KCSAqIEByZXR1cm4gYm9vbHx2b2lkIFRydWUgaWYgdGhlIGNvbm5lY3Rpb24gaXMgdXAuC
gkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjaGVja19jb25uZWN0aW9uKCAkYWxsb3dfYmFpbCA9IHRydWUgKSB7
CgkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJaWYgKCAhIGVtcHR5KCAkdGhpcy0+ZGJoICkgJiY
gbXlzcWxpX3BpbmcoICR0aGlzLT5kYmggKSApIHsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJfSBlbHNlIH
sKCQkJaWYgKCAhIGVtcHR5KCAkdGhpcy0+ZGJoICkgJiYgbXlzcWxfcGluZyggJHRoaXMtPmRiaCApICkge
woJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9CgoJCSRlcnJvcl9yZXBvcnRpbmcgPSBmYWxzZTsKCgkJLy8g
RGlzYWJsZSB3YXJuaW5ncywgYXMgd2UgZG9uJ3Qgd2FudCB0byBzZWUgYSBtdWx0aXR1ZGUgb2YgInVuYWJ
sZSB0byBjb25uZWN0IiBtZXNzYWdlcwoJCWlmICggV1BfREVCVUcgKSB7CgkJCSRlcnJvcl9yZXBvcnRpbm
cgPSBlcnJvcl9yZXBvcnRpbmcoKTsKCQkJZXJyb3JfcmVwb3J0aW5nKCAkZXJyb3JfcmVwb3J0aW5nICYgf
kVfV0FSTklORyApOwoJCX0KCgkJZm9yICggJHRyaWVzID0gMTsgJHRyaWVzIDw9ICR0aGlzLT5yZWNvbm5l
Y3RfcmV0cmllczsgJHRyaWVzKysgKSB7CgkJCS8vIE9uIHRoZSBsYXN0IHRyeSwgcmUtZW5hYmxlIHdhcm5
pbmdzLiBXZSB3YW50IHRvIHNlZSBhIHNpbmdsZSBpbnN0YW5jZSBvZiB0aGUKCQkJLy8gInVuYWJsZSB0by
Bjb25uZWN0IiBtZXNzYWdlIG9uIHRoZSBiYWlsKCkgc2NyZWVuLCBpZiBpdCBhcHBlYXJzLgoJCQlpZiAoI
CR0aGlzLT5yZWNvbm5lY3RfcmV0cmllcyA9PT0gJHRyaWVzICYmIFdQX0RFQlVHICkgewoJCQkJZXJyb3Jf
cmVwb3J0aW5nKCAkZXJyb3JfcmVwb3J0aW5nICk7CgkJCX0KCgkJCWlmICggJHRoaXMtPmRiX2Nvbm5lY3Q
oIGZhbHNlICkgKSB7CgkJCQlpZiAoICRlcnJvcl
9yZXBvcnRpbmcgKSB7CgkJCQkJZXJyb3JfcmVwb3J0aW5nKCAkZXJyb3JfcmVwb3J0aW5nICk7CgkJCQl9C
goJCQkJcmV0dXJuIHRydWU7CgkJCX0KCgkJCXNsZWVwKCAxICk7CgkJfQoKCQkvLyBJZiB0ZW1wbGF0ZV9y
ZWRpcmVjdCBoYXMgYWxyZWFkeSBoYXBwZW5lZCwgaXQncyB0b28gbGF0ZSBmb3Igd3BfZGllKCkvZGVhZF9
kYigpLgoJCS8vIExldCdzIGp1c3QgcmV0dXJuIGFuZCBob3BlIGZvciB0aGUgYmVzdC4KCQlpZiAoIGRpZF
9hY3Rpb24oICd0ZW1wbGF0ZV9yZWRpcmVjdCcgKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJaWYgK
CAhICRhbGxvd19iYWlsICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQl3cF9sb2FkX3RyYW5zbGF0aW9u
c19lYXJseSgpOwoKCQkkbWVzc2FnZSA9ICc8aDE+JyAuIF9fKCAnRXJyb3IgcmVjb25uZWN0aW5nIHRvIHR
oZSBkYXRhYmFzZScgKSAuICI8L2gxPlxuIjsKCgkJJG1lc3NhZ2UgLj0gJzxwPicgLiBzcHJpbnRmKAoJCQ
kvKiB0cmFuc2xhdG9yczogJXM6IGRhdGFiYXNlIGhvc3QgKi8KCQkJX18oICdUaGlzIG1lYW5zIHRoYXQgd
2UgbG9zdCBjb250YWN0IHdpdGggdGhlIGRhdGFiYXNlIHNlcnZlciBhdCAlcy4gVGhpcyBjb3VsZCBtZWFu
IHlvdXIgaG9zdCYjODIxNztzIGRhdGFiYXNlIHNlcnZlciBpcyBkb3duLicgKSwKCQkJJzxjb2RlPicgLiB
odG1sc3BlY2lhbGNoYXJzKCAkdGhpcy0+ZGJob3N0LCBFTlRfUVVPVEVTICkgLiAnPC9jb2RlPicKCQkpIC
4gIjwvcD5cbiI7CgoJCSRtZXNzYWdlIC49ICI8dWw+XG4iOwoJCSRtZXNzYWdlIC49ICc8bGk+JyAuIF9fK
CAnQXJlIHlvdSBzdXJlIHRoYXQgdGhlIGRhdGFiYXNlIHNlcnZlciBpcyBydW5uaW5nPycgKSAuICI8L2xp
PlxuIjsKCQkkbWVzc2FnZSAuPSAnPGxpPicgLiBfXyggJ0FyZSB5b3Ugc3VyZSB0aGF0IHRoZSBkYXRhYmF
zZSBzZXJ2ZXIgaXMgbm90IHVuZGVyIHBhcnRpY3VsYXJseSBoZWF2eSBsb2FkPycgKSAuICI8L2xpPlxuIj
sKCQkkbWVzc2FnZSAuPSAiPC91bD5cbiI7CgoJCSRtZXNzYWdlIC49ICc8cD4nIC4gc3ByaW50ZigKCQkJL
yogdHJhbnNsYXRvcnM6ICVzOiBzdXBwb3J0IGZvcnVtcyBVUkwgKi8KCQkJX18oICdJZiB5b3UmIzgyMTc7
cmUgdW5zdXJlIHdoYXQgdGhlc2UgdGVybXMgbWVhbiB5b3Ugc2hvdWxkIHByb2JhYmx5IGNvbnRhY3QgeW9
1ciBob3N0LiBJZiB5b3Ugc3RpbGwgbmVlZCBoZWxwIHlvdSBjYW4gYWx3YXlzIHZpc2l0IHRoZSA8YSBocm
VmPSIlcyI+V29yZFByZXNzIFN1cHBvcnQgRm9ydW1zPC9hPi4nICksCgkJCV9fKCAnaHR0cHM6Ly93b3Jkc
HJlc3Mub3JnL3N1cHBvcnQvJyApCgkJKSAuICI8L3A+XG4iOwoKCQkvLyBXZSB3ZXJlbid0IGFibGUgdG8g
cmVjb25uZWN0LCBzbyB3ZSBiZXR0ZXIgYmFpbC4KCQkkdGhpcy0+YmFpbCggJG1lc3NhZ2UsICdkYl9jb25
uZWN0X2ZhaWwnICk7CgoJCS8vIENhbGwgZGVhZF9kYigpIGlmIGJhaWwgZGlkbid0IGRpZSwgYmVjYXVzZS
B0aGlzIGRhdGFiYXNlIGlzIG5vIG1vcmUuIEl0IGhhcyBjZWFzZWQgdG8gYmUgKGF0IGxlYXN0IHRlbXBvc
mFyaWx5KS4KCQlkZWFkX2RiKCk7Cgl9CgoJLyoqCgkgKiBQZXJmb3JtIGEgTXlTUUwgZGF0YWJhc2UgcXVl
cnksIHVzaW5nIGN1cnJlbnQgZGF0YWJhc2UgY29ubmVjdGlvbi4KCSAqCgkgKiBNb3JlIGluZm9ybWF0aW9
uIGNhbiBiZSBmb3VuZCBvbiB0aGUgY29kZXggcGFnZS4KCSAqCgkgKiBAc2luY2UgMC43MQoJICoKCSAqIE
BwYXJhbSBzdHJpbmcgJHF1ZXJ5IERhdGFiYXNlIHF1ZXJ5CgkgKiBAcmV0dXJuIGludHxmYWxzZSBOdW1iZ
XIgb2Ygcm93cyBhZmZlY3RlZC9zZWxlY3RlZCBvciBmYWxzZSBvbiBlcnJvcgoJICovCglwdWJsaWMgZnVu
Y3Rpb24gcXVlcnkoICRxdWVyeSApIHsKCQlpZiAoICEgJHRoaXMtPnJlYWR5ICkgewoJCQkkdGhpcy0+Y2h
lY2tfY3VycmVudF9xdWVyeSA9IHRydWU7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCS8qKgoJCSAqIEZpbH
RlcnMgdGhlIGRhdGFiYXNlIHF1ZXJ5LgoJCSAqCgkJICogU29tZSBxdWVyaWVzIGFyZSBtYWRlIGJlZm9yZ
SB0aGUgcGx1Z2lucyBoYXZlIGJlZW4gbG9hZGVkLAoJCSAqIGFuZCB0aHVzIGNhbm5vdCBiZSBmaWx0ZXJl
ZCB3aXRoIHRoaXMgbWV0aG9kLgoJCSAqCgkJICogQHNpbmNlIDIuMS4wCgkJICoKCQkgKiBAcGFyYW0gc3R
yaW5nICRxdWVyeSBEYXRhYmFzZSBxdWVyeS4KCQkgKi8KCQkkcXVlcnkgPSBhcHBseV9maWx0ZXJzKCAncX
VlcnknLCAkcXVlcnkgKTsKCgkJJHRoaXMtPmZsdXNoKCk7CgoJCS8vIExvZyBob3cgdGhlIGZ1bmN0aW9uI
HdhcyBjYWxsZWQKCQkkdGhpcy0+ZnVuY19jYWxsID0gIlwkZGItPnF1ZXJ5KFwiJHF1ZXJ5XCIpIjsKCgkJ
Ly8gSWYgd2UncmUgd3JpdGluZyB0byB0aGUgZGF0YWJhc2UsIG1ha2Ugc3VyZSB0aGUgcXVlcnkgd2lsbCB
3cml0ZSBzYWZlbHkuCgkJaWYgKCAkdGhpcy0+Y2hlY2tfY3VycmVudF9xdWVyeSAmJiAhICR0aGlzLT5jaG
Vja19hc2NpaSggJHF1ZXJ5ICkgKSB7CgkJCSRzdHJpcHBlZF9xdWVyeSA9ICR0aGlzLT5zdHJpcF9pbnZhb
GlkX3RleHRfZnJvbV9xdWVyeSggJHF1ZXJ5ICk7CgkJCS8vIHN0cmlwX2ludmFsaWRfdGV4dF9mcm9tX3F1
ZXJ5KCkgY2FuIHBlcmZvcm0gcXVlcmllcywgc28gd2UgbmVlZAoJCQkvLyB0byBmbHVzaCBhZ2FpbiwganV
zdCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBjbGVhci4KCQkJJHRoaXMtPmZsdXNoKCk7CgkJCWlmIC
ggJHN0cmlwcGVkX3F1ZXJ5ICE9PSAkcXVlcnkgKSB7CgkJCQkkdGhpcy0+aW5zZXJ0X2lkID0gMDsKCQkJC
XJldHVybiBmYWxzZTsKCQkJfQoJCX0KCgkJJHRoaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnkgPSB0cnVlOwoK
CQkvLyBLZWVwIHRyYWNrIG9mIHRoZSBsYXN0IHF1ZXJ5IGZvciBkZWJ1Zy4KCQkkdGhpcy0+bGFzdF9xdWV
yeSA9ICRxdWVyeTsKCgkJJHRoaXMtPl9kb19xdWVyeSggJHF1ZXJ5ICk7CgoJCS8vIE15U1FMIHNlcnZlci
BoYXMgZ29uZSBhd2F5LCB0cnkgdG8gcmVjb25uZWN0LgoJCSRteXNxbF9lcnJubyA9IDA7CgkJaWYgKCAhI
GVtcHR5KCAkdGhpcy0+ZGJoICkgKSB7CgkJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCQlpZiAo
ICR0aGlzLT5kYmggaW5zdGFuY2VvZiBteXNxbGkgKSB7CgkJCQkJJG15c3FsX2Vycm5vID0gbXlzcWxpX2V
ycm5vKCAkdGhpcy0+ZGJoICk7CgkJCQl9IGVsc2UgewoJCQkJCS8vICRkYmggaXMgZGVmaW5lZCwgYnV0IG
lzbid0IGEgcmVhbCBjb25uZWN0aW9uLgoJCQkJCS8vIFNvbWV0aGluZyBoYXMgZ29uZSBob3JyaWJseSB3c
m9uZywgbGV0J3MgdHJ5IGEgcmVjb25uZWN0LgoJCQkJCSRteXNxbF9lcnJubyA9IDIwMDY7CgkJCQl9CgkJ
CX0gZWxzZSB7CgkJCQlpZiAoIGlzX3Jlc291cmNlKCAkdGhpcy0+ZGJoICkgKSB7CgkJCQkJJG15c3FsX2V
ycm5vID0gbXlzcWxfZXJybm8oICR0aGlzLT5kYmggKTsKCQkJCX0gZWxzZSB7CgkJCQkJJG15c3FsX2Vycm
5vID0gMjAwNjsKCQkJCX0KCQkJfQoJCX0KCgkJaWYgKCBlbXB0eSggJHRoaXMtPmRiaCApIHx8IDIwMDYgP
T0gJG15c3FsX2Vycm5vICkgewoJCQlpZiAoICR0aGlzLT5jaGVja19jb25uZWN0aW9uKCkgKSB7CgkJCQkk
dGhpcy0+X2RvX3F1ZXJ5KCAkcXVlcnkgKTsKCQkJfSBlbHNlIHsKCQkJCSR0aGlzLT5pbnNlcnRfaWQgPSA
wOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoKCQkvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciB0aGVuIH
Rha2Ugbm90ZSBvZiBpdC4KCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQlpZiAoICR0aGlzLT5kY
mggaW5zdGFuY2VvZiBteXNxbGkgKSB7CgkJCQkkdGhpcy0+bGFzdF9lcnJvciA9IG15c3FsaV9lcnJvcigg
JHRoaXMtPmRiaCApOwoJCQl9IGVsc2UgewoJCQkJJHRoaXMtPmxhc3RfZXJyb3IgPSBfXyggJ1VuYWJsZSB
0byByZXRyaWV2ZSB0aGUgZXJyb3IgbWVzc2FnZSBmcm9tIE15U1FMJyApOwoJCQl9CgkJfSBlbHNlIHsKCQ
kJaWYgKCBpc19yZXNvdXJjZSggJHRoaXMtPmRiaCApICkgewoJCQkJJHRoaXMtPmxhc3RfZXJyb3IgPSBte
XNxbF9lcnJvciggJHRoaXMtPmRiaCApOwoJCQl9IGVsc2UgewoJCQkJJHRoaXMtPmxhc3RfZXJyb3IgPSBf
XyggJ1VuYWJsZSB0byByZXRyaWV2ZSB0aGUgZXJyb3IgbWVzc2FnZSBmcm9tIE15U1FMJyApOwoJCQl9Cgk
JfQoKCQlpZiAoICR0aGlzLT5sYXN0X2Vycm9yICkgewoJCQkvLyBDbGVhciBpbnNlcnRfaWQgb24gYSBzdW
JzZXF1ZW50IGZhaWxlZCBpbnNlcnQuCgkJCWlmICggJHRoaXMtPmluc2VydF9pZCAmJiBwcmVnX21hdGNoK
CAnL15ccyooaW5zZXJ0fHJlcGxhY2UpXHMvaScsICRxdWVyeSApICkKCQkJCSR0aGlzLT5pbnNlcnRfaWQg
PSAwOwoKCQkJJHRoaXMtPnByaW50X2Vycm9yKCk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCWlmICggcHJ
lZ19tYXRjaCggJy9eXHMqKGNyZWF0ZXxhbHRlcnx0cnVuY2F0ZXxkcm9wKVxzL2knLCAkcXVlcnkgKSApIH
sKCQkJJHJldHVybl92YWwgPSAkdGhpcy0+cmVzdWx0OwoJCX0gZWxzZWlmICggcHJlZ19tYXRjaCggJy9eX
HMqKGluc2VydHxkZWxldGV8dXBkYXRlfHJlcGxhY2UpXHMvaScsICRxdWVyeSApICkgewoJCQlpZiAoICR0
aGlzLT51c2VfbXlzcWxpICkgewoJCQkJJHRoaXMtPnJvd3NfYWZmZWN0ZWQgPSBteXNxbGlfYWZmZWN0ZWR
fcm93cyggJHRoaXMtPmRiaCApOwoJCQl9IGVsc2UgewoJCQkJJHRoaXMtPnJvd3NfYWZmZWN0ZWQgPSBteX
NxbF9hZmZlY3RlZF9yb3dzKCAkdGhpcy0+ZGJoICk7CgkJCX0KCQkJLy8gVGFrZSBub3RlIG9mIHRoZSBpb
nNlcnRfaWQKCQkJaWYgKCBwcmVnX21hdGNoKCAnL15ccyooaW5zZXJ0fHJlcGxhY2UpXHMvaScsICRxdWVy
eSApICkgewoJCQkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJCQkkdGhpcy0+aW5zZXJ0X2lkID0
gbXlzcWxpX2luc2VydF9pZCggJHRoaXMtPmRiaCApOwoJCQkJfSBlbHNlIHsKCQkJCQkkdGhpcy0+aW5zZX
J0X2lkID0gbXlzcWxfaW5zZXJ0X2lkKCAkdGhpcy0+ZGJoICk7CgkJCQl9CgkJCX0KCQkJLy8gUmV0dXJuI
G51bWJlciBvZiByb3dzIGFmZmVjdGVkCgkJCSRyZXR1cm5fdmFsID0gJHRoaXMtPnJvd3NfYWZmZWN0ZWQ7
CgkJfSBlbHNlIHsKCQkJJG51bV9yb3dzID0gMDsKCQkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSAmJiAkdGh
pcy0+cmVzdWx0IGluc3RhbmNlb2YgbXlzcWxpX3Jlc3VsdCApIHsKCQkJCXdoaWxlICggJHJvdyA9IG15c3
FsaV9mZXRjaF9vYmplY3QoICR0aGlzLT5yZXN1bHQgKSApIHsKCQkJCQkkdGhpcy0+bGFzdF9yZXN1bHRbJ
G51bV9yb3dzXSA9ICRyb3c7CgkJCQkJJG51bV9yb3dzKys7CgkJCQl9CgkJCX0gZWxzZWlmICggaXNfcmVz
b3VyY2UoICR0aGlzLT5yZXN1bHQgKSApIHsKCQkJCXdoaWxlICggJHJvdyA9IG15c3FsX2ZldGNoX29iamV
jdCggJHRoaXMtPnJlc3VsdCApICkgewoJCQkJCSR0aGlzLT5sYXN0X3Jlc3VsdFskbnVtX3Jvd3NdID0gJH
JvdzsKCQkJCQkkbnVtX3Jvd3MrKzsKCQkJCX0KCQkJfQoKCQkJLy8gTG9nIG51bWJlciBvZiByb3dzIHRoZ
SBxdWVyeSByZXR1cm5lZAoJCQkvLyBhbmQgcmV0dXJuIG51bWJlciBvZiByb3dzIHNlbGVjdGVkCgkJCSR0
aGlzLT5udW1fcm93cyA9ICRudW1fcm93czsKCQkJJHJldHVybl92YWwgICAgID0gJG51bV9yb3dzOwoJCX0
KCgkJcmV0dXJuICRyZXR1cm5fdmFsOwoJfQoKCS8qKgoJICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gcGVyZm
9ybSB0aGUgbXlzcWxfcXVlcnkoKSBjYWxsLgoJICoKCSAqIEBzaW5jZSAzLjkuMAoJICoKCSAqIEBhY2Nlc
3MgcHJpdmF0ZQoJICogQHNlZSB3cGRiOjpxdWVyeSgpCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcXVlcnkg
VGhlIHF1ZXJ5IHRvIHJ1bi4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBfZG9fcXVlcnkoICRxdWVyeSApIHs
KCQlpZiAoIGRlZmluZWQoICdTQVZFUVVFUklFUycgKSAmJiBTQVZFUVVFUklFUyApIHsKCQkJJHRoaXMtPn
RpbWVyX3N0YXJ0KCk7CgkJfQoKCQlpZiAoICEgZW1wdHkoICR0aGlzLT5kYmggKSAmJiAkdGhpcy0+dXNlX
215c3FsaSApIHsKCQkJJHRoaXMtPnJlc3VsdCA9IG15c3FsaV9xdWVyeSggJHRoaXMtPmRiaCwgJHF1ZXJ5
ICk7CgkJfSBlbHNlaWYgKCAhIGVtcHR5KCAkdGhpcy0+ZGJoICkgKSB7CgkJCSR0aGlzLT5yZXN1bHQgPSB
teXNxbF9xdWVyeSggJHF1ZXJ5LCAkdGhpcy0+ZGJoICk7CgkJfQoJCSR0aGlzLT5udW1fcXVlcmllcysrOw
oKCQlpZiAoIGRlZmluZWQoICdTQVZFUVVFUklFUycgKSAmJiBTQVZFUVVFUklFUyApIHsKCQkJJHRoaXMtP
nF1ZXJpZXNbXSA9IGFycmF5KCAkcXVlcnksICR0aGlzLT50aW1lcl9zdG9wKCksICR0aGlzLT5nZXRfY2Fs
bGVyKCkgKTsKCQl9Cgl9CgoJLyoqCgkgKiBHZW5lcmF0ZXMgYW5kIHJldHVybnMgYSBwbGFjZWhvbGRlciB
lc2NhcGUgc3RyaW5nIGZvciB1c2UgaW4gcXVlcmllcyByZXR1cm5lZCBieSA6OnByZXBhcmUoKS4KCSAqCg
kgKiBAc2luY2UgNC44LjMKCSAqCgkgKiBAcmV0dXJuIHN0cmluZyBTdHJpbmcgdG8gZXNjYXBlIHBsYWNla
G9sZGVycy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHBsYWNlaG9sZGVyX2VzY2FwZSgpIHsKCQlzdGF0aWMg
JHBsYWNlaG9sZGVyOwoKCQlpZiAoICEgJHBsYWNlaG9sZGVyICkgewoJCQkvLyBJZiBleHQvaGFzaCBpcyB
ub3QgcHJlc2VudCwgY29tcGF0LnBocCdzIGhhc2hfaG1hYygpIGRvZXMgbm90IHN1cHBvcnQgc2hhMjU2Lg
oJCQkkYWxnbyA9IGZ1bmN0aW9uX2V4aXN0cyggJ2hhc2gnICkgPyAnc2hhMjU2JyA6ICdzaGExJzsKCQkJL
y8gT2xkIFdQIGluc3RhbGxzIG1heSBub3QgaGF2ZSBBVVRIX1NBTFQgZGVmaW5lZC4KCQkJJHNhbHQgPSBk
ZWZpbmVkKCAnQVVUSF9TQUxUJyApID8gQVVUSF9TQUxUIDogcmFuZCgpOwoKCQkJJHBsYWNlaG9sZGVyID0
gJ3snIC4gaGFzaF9obWFjKCAkYWxnbywgdW5pcWlkKCAkc2FsdCwgdHJ1ZSApLCAkc2FsdCApIC4gJ30nOw
oJCX0KCgkJLyoKCQkgKiBBZGQgdGhlIGZpbHRlciB0byByZW1vdmUgdGhlIHBsYWNlaG9sZGVyIGVzY2FwZ
XIuIFVzZXMgcHJpb3JpdHkgMCwgc28gdGhhdCBhbnl0aGluZwoJCSAqIGVsc2UgYXR0YWNoZWQgdG8gdGhp
cyBmaWx0ZXIgd2lsbCByZWNpZXZlIHRoZSBxdWVyeSB3aXRoIHRoZSBwbGFjZWhvbGRlciBzdHJpbmcgcmV
tb3ZlZC4KCQkgKi8KCQlpZiAoICEgaGFzX2ZpbHRlciggJ3F1ZXJ5JywgYXJyYXkoICR0aGlzLCAncmVtb3
ZlX3BsYWNlaG9sZGVyX2VzY2FwZScgKSApICkgewoJCQlhZGRfZmlsdGVyKCAncXVlcnknLCBhcnJheSggJ
HRoaXMsICdyZW1vdmVfcGxhY2Vob2xkZXJfZXNjYXBlJyApLCAwICk7CgkJfQoKCQlyZXR1cm4gJHBsYWNl
aG9sZGVyOwoJfQoKCS8qKgoJICogQWRkcyBhIHBsYWNlaG9sZGVyIGVzY2FwZSBzdHJpbmcsIHRvIGVzY2F
wZSBhbnl0aGluZyB0aGF0IHJlc2VtYmxlcyBhIHByaW50ZigpIHBsYWNlaG9sZGVyLgoJICoKCSAqIEBzaW
5jZSA0LjguMwoJICoKCSAqIEBwYXJhbSBzdHJpb
mcgJHF1ZXJ5IFRoZSBxdWVyeSB0byBlc2NhcGUuCgkgKiBAcmV0dXJuIHN0cmluZyBUaGUgcXVlcnkgd2l0
aCB0aGUgcGxhY2Vob2xkZXIgZXNjYXBlIHN0cmluZyBpbnNlcnRlZCB3aGVyZSBuZWNlc3NhcnkuCgkgKi8
KCXB1YmxpYyBmdW5jdGlvbiBhZGRfcGxhY2Vob2xkZXJfZXNjYXBlKCAkcXVlcnkgKSB7CgkJLyoKCQkgKi
BUbyBwcmV2ZW50IHJldHVybmluZyBhbnl0aGluZyB0aGF0IGV2ZW4gdmFndWVseSByZXNlbWJsZXMgYSBwb
GFjZWhvbGRlciwKCQkgKiB3ZSBjbG9iYmVyIGV2ZXJ5ICUgd2UgY2FuIGZpbmQuCgkJICovCgkJcmV0dXJu
IHN0cl9yZXBsYWNlKCAnJScsICR0aGlzLT5wbGFjZWhvbGRlcl9lc2NhcGUoKSwgJHF1ZXJ5ICk7Cgl9Cgo
JLyoqCgkgKiBSZW1vdmVzIHRoZSBwbGFjZWhvbGRlciBlc2NhcGUgc3RyaW5ncyBmcm9tIGEgcXVlcnkuCg
kgKgoJICogQHNpbmNlIDQuOC4zCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcXVlcnkgVGhlIHF1ZXJ5IGZyb
20gd2hpY2ggdGhlIHBsYWNlaG9sZGVyIHdpbGwgYmUgcmVtb3ZlZC4KCSAqIEByZXR1cm4gc3RyaW5nIFRo
ZSBxdWVyeSB3aXRoIHRoZSBwbGFjZWhvbGRlciByZW1vdmVkLgoJICovCglwdWJsaWMgZnVuY3Rpb24gcmV
tb3ZlX3BsYWNlaG9sZGVyX2VzY2FwZSggJHF1ZXJ5ICkgewoJCXJldHVybiBzdHJfcmVwbGFjZSggJHRoaX
MtPnBsYWNlaG9sZGVyX2VzY2FwZSgpLCAnJScsICRxdWVyeSApOwoJfQoKCS8qKgoJICogSW5zZXJ0IGEgc
m93IGludG8gYSB0YWJsZS4KCSAqCgkgKiAgICAgd3BkYjo6aW5zZXJ0KCAndGFibGUnLCBhcnJheSggJ2Nv
bHVtbicgPT4gJ2ZvbycsICdmaWVsZCcgPT4gJ2JhcicgKSApCgkgKiAgICAgd3BkYjo6aW5zZXJ0KCAndGF
ibGUnLCBhcnJheSggJ2NvbHVtbicgPT4gJ2ZvbycsICdmaWVsZCcgPT4gMTMzNyApLCBhcnJheSggJyVzJy
wgJyVkJyApICkKCSAqCgkgKiBAc2luY2UgMi41LjAKCSAqIEBzZWUgd3BkYjo6cHJlcGFyZSgpCgkgKiBAc
2VlIHdwZGI6OiRmaWVsZF90eXBlcwoJICogQHNlZSB3cF9zZXRfd3BkYl92YXJzKCkKCSAqCgkgKiBAcGFy
YW0gc3RyaW5nICAgICAgICR0YWJsZSAgVGFibGUgbmFtZQoJICogQHBhcmFtIGFycmF5ICAgICAgICAkZGF
0YSAgIERhdGEgdG8gaW5zZXJ0IChpbiBjb2x1bW4gPT4gdmFsdWUgcGFpcnMpLgoJICogICAgICAgICAgIC
AgICAgICAgICAgICAgICAgIEJvdGggJGRhdGEgY29sdW1ucyBhbmQgJGRhdGEgdmFsdWVzIHNob3VsZCBiZ
SAicmF3IiAobmVpdGhlciBzaG91bGQgYmUgU1FMIGVzY2FwZWQpLgoJICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNlbmRpbmcgYSBudWxsIHZhbHVlIHdpbGwgY2F1c2UgdGhlIGNvbHVtbiB0byBiZSBzZXQ
gdG8gTlVMTCAtIHRoZSBjb3JyZXNwb25kaW5nIGZvcm1hdCBpcyBpZ25vcmVkIGluIHRoaXMgY2FzZS4KCS
AqIEBwYXJhbSBhcnJheXxzdHJpbmcgJGZvcm1hdCBPcHRpb25hbC4gQW4gYXJyYXkgb2YgZm9ybWF0cyB0b
yBiZSBtYXBwZWQgdG8gZWFjaCBvZiB0aGUgdmFsdWUgaW4gJGRhdGEuCgkgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgSWYgc3RyaW5nLCB0aGF0IGZvcm1hdCB3aWxsIGJlIHVzZWQgZm9yIGFsbCBvZiB0aGU
gdmFsdWVzIGluICRkYXRhLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgZm9ybWF0IGlzIG
9uZSBvZiAnJWQnLCAnJWYnLCAnJXMnIChpbnRlZ2VyLCBmbG9hdCwgc3RyaW5nKS4KCSAqICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICBJZiBvbWl0dGVkLCBhbGwgdmFsdWVzIGluICRkYXRhIHdpbGwgYmUgdHJl
YXRlZCBhcyBzdHJpbmdzIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkIGluIHdwZGI6OiRmaWVsZF90eXB
lcy4KCSAqIEByZXR1cm4gaW50fGZhbHNlIFRoZSBudW1iZXIgb2Ygcm93cyBpbnNlcnRlZCwgb3IgZmFsc2
Ugb24gZXJyb3IuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpbnNlcnQoICR0YWJsZSwgJGRhdGEsICRmb3JtY
XQgPSBudWxsICkgewoJCXJldHVybiAkdGhpcy0+X2luc2VydF9yZXBsYWNlX2hlbHBlciggJHRhYmxlLCAk
ZGF0YSwgJGZvcm1hdCwgJ0lOU0VSVCcgKTsKCX0KCgkvKioKCSAqIFJlcGxhY2UgYSByb3cgaW50byBhIHR
hYmxlLgoJICoKCSAqICAgICB3cGRiOjpyZXBsYWNlKCAndGFibGUnLCBhcnJheSggJ2NvbHVtbicgPT4gJ2
ZvbycsICdmaWVsZCcgPT4gJ2JhcicgKSApCgkgKiAgICAgd3BkYjo6cmVwbGFjZSggJ3RhYmxlJywgYXJyY
XkoICdjb2x1bW4nID0+ICdmb28nLCAnZmllbGQnID0+IDEzMzcgKSwgYXJyYXkoICclcycsICclZCcgKSAp
CgkgKgoJICogQHNpbmNlIDMuMC4wCgkgKiBAc2VlIHdwZGI6OnByZXBhcmUoKQoJICogQHNlZSB3cGRiOjo
kZmllbGRfdHlwZXMKCSAqIEBzZWUgd3Bfc2V0X3dwZGJfdmFycygpCgkgKgoJICogQHBhcmFtIHN0cmluZy
AgICAgICAkdGFibGUgIFRhYmxlIG5hbWUKCSAqIEBwYXJhbSBhcnJheSAgICAgICAgJGRhdGEgICBEYXRhI
HRvIGluc2VydCAoaW4gY29sdW1uID0+IHZhbHVlIHBhaXJzKS4KCSAqICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBCb3RoICRkYXRhIGNvbHVtbnMgYW5kICRkYXRhIHZhbHVlcyBzaG91bGQgYmUgInJhdyIgKG5
laXRoZXIgc2hvdWxkIGJlIFNRTCBlc2NhcGVkKS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
BTZW5kaW5nIGEgbnVsbCB2YWx1ZSB3aWxsIGNhdXNlIHRoZSBjb2x1bW4gdG8gYmUgc2V0IHRvIE5VTEwgL
SB0aGUgY29ycmVzcG9uZGluZyBmb3JtYXQgaXMgaWdub3JlZCBpbiB0aGlzIGNhc2UuCgkgKiBAcGFyYW0g
YXJyYXl8c3RyaW5nICRmb3JtYXQgT3B0aW9uYWwuIEFuIGFycmF5IG9mIGZvcm1hdHMgdG8gYmUgbWFwcGV
kIHRvIGVhY2ggb2YgdGhlIHZhbHVlIGluICRkYXRhLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgIC
AgIElmIHN0cmluZywgdGhhdCBmb3JtYXQgd2lsbCBiZSB1c2VkIGZvciBhbGwgb2YgdGhlIHZhbHVlcyBpb
iAkZGF0YS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGZvcm1hdCBpcyBvbmUgb2YgJyVk
JywgJyVmJywgJyVzJyAoaW50ZWdlciwgZmxvYXQsIHN0cmluZykuCgkgKiAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgSWYgb21pdHRlZCwgYWxsIHZhbHVlcyBpbiAkZGF0YSB3aWxsIGJlIHRyZWF0ZWQgYXMgc3
RyaW5ncyB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCBpbiB3cGRiOjokZmllbGRfdHlwZXMuCgkgKiBAc
mV0dXJuIGludHxmYWxzZSBUaGUgbnVtYmVyIG9mIHJvd3MgYWZmZWN0ZWQsIG9yIGZhbHNlIG9uIGVycm9y
LgoJICovCglwdWJsaWMgZnVuY3Rpb24gcmVwbGFjZSggJHRhYmxlLCAkZGF0YSwgJGZvcm1hdCA9IG51bGw
gKSB7CgkJcmV0dXJuICR0aGlzLT5faW5zZXJ0X3JlcGxhY2VfaGVscGVyKCAkdGFibGUsICRkYXRhLCAkZm
9ybWF0LCAnUkVQTEFDRScgKTsKCX0KCgkvKioKCSAqIEhlbHBlciBmdW5jdGlvbiBmb3IgaW5zZXJ0IGFuZ
CByZXBsYWNlLgoJICoKCSAqIFJ1bnMgYW4gaW5zZXJ0IG9yIHJlcGxhY2UgcXVlcnkgYmFzZWQgb24gJHR5
cGUgYXJndW1lbnQuCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAc2luY2UgMy4wLjAKCSAqIEBzZWU
gd3BkYjo6cHJlcGFyZSgpCgkgKiBAc2VlIHdwZGI6OiRmaWVsZF90eXBlcwoJICogQHNlZSB3cF9zZXRfd3
BkYl92YXJzKCkKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICAgICAgICR0YWJsZSAgVGFibGUgbmFtZQoJICogQ
HBhcmFtIGFycmF5ICAgICAgICAkZGF0YSAgIERhdGEgdG8gaW5zZXJ0IChpbiBjb2x1bW4gPT4gdmFsdWUg
cGFpcnMpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdGggJGRhdGEgY29sdW1ucyBhbmQ
gJGRhdGEgdmFsdWVzIHNob3VsZCBiZSAicmF3IiAobmVpdGhlciBzaG91bGQgYmUgU1FMIGVzY2FwZWQpLg
oJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRpbmcgYSBudWxsIHZhbHVlIHdpbGwgY2F1c
2UgdGhlIGNvbHVtbiB0byBiZSBzZXQgdG8gTlVMTCAtIHRoZSBjb3JyZXNwb25kaW5nIGZvcm1hdCBpcyBp
Z25vcmVkIGluIHRoaXMgY2FzZS4KCSAqIEBwYXJhbSBhcnJheXxzdHJpbmcgJGZvcm1hdCBPcHRpb25hbC4
gQW4gYXJyYXkgb2YgZm9ybWF0cyB0byBiZSBtYXBwZWQgdG8gZWFjaCBvZiB0aGUgdmFsdWUgaW4gJGRhdG
EuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc3RyaW5nLCB0aGF0IGZvcm1hdCB3aWxsI
GJlIHVzZWQgZm9yIGFsbCBvZiB0aGUgdmFsdWVzIGluICRkYXRhLgoJICogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEEgZm9ybWF0IGlzIG9uZSBvZiAnJWQnLCAnJWYnLCAnJXMnIChpbnRlZ2VyLCBmbG9hdCw
gc3RyaW5nKS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBvbWl0dGVkLCBhbGwgdmFsdW
VzIGluICRkYXRhIHdpbGwgYmUgdHJlYXRlZCBhcyBzdHJpbmdzIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lma
WVkIGluIHdwZGI6OiRmaWVsZF90eXBlcy4KCSAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgICAgICAgICBPcHRp
b25hbC4gV2hhdCB0eXBlIG9mIG9wZXJhdGlvbiBpcyB0aGlzPyBJTlNFUlQgb3IgUkVQTEFDRS4gRGVmYXV
sdHMgdG8gSU5TRVJULgoJICogQHJldHVybiBpbnR8ZmFsc2UgVGhlIG51bWJlciBvZiByb3dzIGFmZmVjdG
VkLCBvciBmYWxzZSBvbiBlcnJvci4KCSAqLwoJZnVuY3Rpb24gX2luc2VydF9yZXBsYWNlX2hlbHBlciggJ
HRhYmxlLCAkZGF0YSwgJGZvcm1hdCA9IG51bGwsICR0eXBlID0gJ0lOU0VSVCcgKSB7CgkJJHRoaXMtPmlu
c2VydF9pZCA9IDA7CgoJCWlmICggISBpbl9hcnJheSggc3RydG91cHBlciggJHR5cGUgKSwgYXJyYXkoICd
SRVBMQUNFJywgJ0lOU0VSVCcgKSApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkkZGF0YSA9ICR0aG
lzLT5wcm9jZXNzX2ZpZWxkcyggJHRhYmxlLCAkZGF0YSwgJGZvcm1hdCApOwoJCWlmICggZmFsc2UgPT09I
CRkYXRhICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkkZm9ybWF0cyA9ICR2YWx1ZXMgPSBhcnJheSgp
OwoJCWZvcmVhY2ggKCAkZGF0YSBhcyAkdmFsdWUgKSB7CgkJCWlmICggaXNfbnVsbCggJHZhbHVlWyd2YWx
1ZSddICkgKSB7CgkJCQkkZm9ybWF0c1tdID0gJ05VTEwnOwoJCQkJY29udGludWU7CgkJCX0KCgkJCSRmb3
JtYXRzW10gPSAkdmFsdWVbJ2Zvcm1hdCddOwoJCQkkdmFsdWVzW10gID0gJHZhbHVlWyd2YWx1ZSddOwoJC
X0KCgkJJGZpZWxkcyAgPSAnYCcgLiBpbXBsb2RlKCAnYCwgYCcsIGFycmF5X2tleXMoICRkYXRhICkgKSAu
ICdgJzsKCQkkZm9ybWF0cyA9IGltcGxvZGUoICcsICcsICRmb3JtYXRzICk7CgoJCSRzcWwgPSAiJHR5cGU
gSU5UTyBgJHRhYmxlYCAoJGZpZWxkcykgVkFMVUVTICgkZm9ybWF0cykiOwoKCQkkdGhpcy0+Y2hlY2tfY3
VycmVudF9xdWVyeSA9IGZhbHNlOwoJCXJldHVybiAkdGhpcy0+cXVlcnkoICR0aGlzLT5wcmVwYXJlKCAkc
3FsLCAkdmFsdWVzICkgKTsKCX0KCgkvKioKCSAqIFVwZGF0ZSBhIHJvdyBpbiB0aGUgdGFibGUKCSAqCgkg
KiAgICAgd3BkYjo6dXBkYXRlKCAndGFibGUnLCBhcnJheSggJ2NvbHVtbicgPT4gJ2ZvbycsICdmaWVsZCc
gPT4gJ2JhcicgKSwgYXJyYXkoICdJRCcgPT4gMSApICkKCSAqICAgICB3cGRiOjp1cGRhdGUoICd0YWJsZS
csIGFycmF5KCAnY29sdW1uJyA9PiAnZm9vJywgJ2ZpZWxkJyA9PiAxMzM3ICksIGFycmF5KCAnSUQnID0+I
DEgKSwgYXJyYXkoICclcycsICclZCcgKSwgYXJyYXkoICclZCcgKSApCgkgKgoJICogQHNpbmNlIDIuNS4w
CgkgKiBAc2VlIHdwZGI6OnByZXBhcmUoKQoJICogQHNlZSB3cGRiOjokZmllbGRfdHlwZXMKCSAqIEBzZWU
gd3Bfc2V0X3dwZGJfdmFycygpCgkgKgoJICogQHBhcmFtIHN0cmluZyAgICAgICAkdGFibGUgICAgICAgIF
RhYmxlIG5hbWUKCSAqIEBwYXJhbSBhcnJheSAgICAgICAgJGRhdGEgICAgICAgICBEYXRhIHRvIHVwZGF0Z
SAoaW4gY29sdW1uID0+IHZhbHVlIHBhaXJzKS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBCb3RoICRkYXRhIGNvbHVtbnMgYW5kICRkYXRhIHZhbHVlcyBzaG91bGQgYmUgInJhdyIgKG5laXR
oZXIgc2hvdWxkIGJlIFNRTCBlc2NhcGVkKS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICBTZW5kaW5nIGEgbnVsbCB2YWx1ZSB3aWxsIGNhdXNlIHRoZSBjb2x1bW4gdG8gYmUgc2V0IHRvIE5VT
EwgLSB0aGUgY29ycmVzcG9uZGluZwoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZv
cm1hdCBpcyBpZ25vcmVkIGluIHRoaXMgY2FzZS4KCSAqIEBwYXJhbSBhcnJheSAgICAgICAgJHdoZXJlICA
gICAgICBBIG5hbWVkIGFycmF5IG9mIFdIRVJFIGNsYXVzZXMgKGluIGNvbHVtbiA9PiB2YWx1ZSBwYWlycy
kuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlwbGUgY2xhdXNlcyB3aWxsI
GJlIGpvaW5lZCB3aXRoIEFORHMuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm90
aCAkd2hlcmUgY29sdW1ucyBhbmQgJHdoZXJlIHZhbHVlcyBzaG91bGQgYmUgInJhdyIuCgkgKiAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZGluZyBhIG51bGwgdmFsdWUgd2lsbCBjcmVhdGUgYW
4gSVMgTlVMTCBjb21wYXJpc29uIC0gdGhlIGNvcnJlc3BvbmRpbmcgZm9ybWF0IHdpbGwgYmUgaWdub3JlZ
CBpbiB0aGlzIGNhc2UuCgkgKiBAcGFyYW0gYXJyYXl8c3RyaW5nICRmb3JtYXQgICAgICAgT3B0aW9uYWwu
IEFuIGFycmF5IG9mIGZvcm1hdHMgdG8gYmUgbWFwcGVkIHRvIGVhY2ggb2YgdGhlIHZhbHVlcyBpbiAkZGF
0YS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzdHJpbmcsIHRoYXQgZm9ybW
F0IHdpbGwgYmUgdXNlZCBmb3IgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gJGRhdGEuCgkgKiAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgQSBmb3JtYXQgaXMgb25lIG9mICclZCcsICclZicsICclcycgKGlu
dGVnZXIsIGZsb2F0LCBzdHJpbmcpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl
mIG9taXR0ZWQsIGFsbCB2YWx1ZXMgaW4gJGRhdGEgd2lsbCBiZSB0cmVhdGVkIGFzIHN0cmluZ3MgdW5sZX
NzIG90aGVyd2lzZSBzcGVjaWZpZWQgaW4gd3BkYjo6JGZpZWxkX3R5cGVzLgoJICogQHBhcmFtIGFycmF5f
HN0cmluZyAkd2hlcmVfZm9ybWF0IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBmb3JtYXRzIHRvIGJlIG1hcHBl
ZCB0byBlYWNoIG9mIHRoZSB2YWx1ZXMgaW4gJHdoZXJlLgoJICogICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgIElmIHN0cmluZywgdGhhdCBmb3JtYXQgd2lsbCBiZSB1c2VkIGZvciBhbGwgb2YgdGhlIG
l0ZW1zIGluICR3aGVyZS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGZvcm1hd
CBpcyBvbmUgb2YgJyVkJywgJyVmJywgJyVzJyAo
aW50ZWdlciwgZmxvYXQsIHN0cmluZykuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gSWYgb21pdHRlZCwgYWxsIHZhbHVlcyBpbiAkd2hlcmUgd2lsbCBiZSB0cmVhdGVkIGFzIHN0cmluZ3MuCg
kgKiBAcmV0dXJuIGludHxmYWxzZSBUaGUgbnVtYmVyIG9mIHJvd3MgdXBkYXRlZCwgb3IgZmFsc2Ugb24gZ
XJyb3IuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiB1cGRhdGUoICR0YWJsZSwgJGRhdGEsICR3aGVyZSwgJGZv
cm1hdCA9IG51bGwsICR3aGVyZV9mb3JtYXQgPSBudWxsICkgewoJCWlmICggISBpc19hcnJheSggJGRhdGE
gKSB8fCAhIGlzX2FycmF5KCAkd2hlcmUgKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJGRhdGEgPS
AkdGhpcy0+cHJvY2Vzc19maWVsZHMoICR0YWJsZSwgJGRhdGEsICRmb3JtYXQgKTsKCQlpZiAoIGZhbHNlI
D09PSAkZGF0YSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkkd2hlcmUgPSAkdGhpcy0+cHJvY2Vzc19m
aWVsZHMoICR0YWJsZSwgJHdoZXJlLCAkd2hlcmVfZm9ybWF0ICk7CgkJaWYgKCBmYWxzZSA9PT0gJHdoZXJ
lICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkkZmllbGRzID0gJGNvbmRpdGlvbnMgPSAkdmFsdWVzID
0gYXJyYXkoKTsKCQlmb3JlYWNoICggJGRhdGEgYXMgJGZpZWxkID0+ICR2YWx1ZSApIHsKCQkJaWYgKCBpc
19udWxsKCAkdmFsdWVbJ3ZhbHVlJ10gKSApIHsKCQkJCSRmaWVsZHNbXSA9ICJgJGZpZWxkYCA9IE5VTEwi
OwoJCQkJY29udGludWU7CgkJCX0KCgkJCSRmaWVsZHNbXSA9ICJgJGZpZWxkYCA9ICIgLiAkdmFsdWVbJ2Z
vcm1hdCddOwoJCQkkdmFsdWVzW10gPSAkdmFsdWVbJ3ZhbHVlJ107CgkJfQoJCWZvcmVhY2ggKCAkd2hlcm
UgYXMgJGZpZWxkID0+ICR2YWx1ZSApIHsKCQkJaWYgKCBpc19udWxsKCAkdmFsdWVbJ3ZhbHVlJ10gKSApI
HsKCQkJCSRjb25kaXRpb25zW10gPSAiYCRmaWVsZGAgSVMgTlVMTCI7CgkJCQljb250aW51ZTsKCQkJfQoK
CQkJJGNvbmRpdGlvbnNbXSA9ICJgJGZpZWxkYCA9ICIgLiAkdmFsdWVbJ2Zvcm1hdCddOwoJCQkkdmFsdWV
zW10gPSAkdmFsdWVbJ3ZhbHVlJ107CgkJfQoKCQkkZmllbGRzID0gaW1wbG9kZSggJywgJywgJGZpZWxkcy
ApOwoJCSRjb25kaXRpb25zID0gaW1wbG9kZSggJyBBTkQgJywgJGNvbmRpdGlvbnMgKTsKCgkJJHNxbCA9I
CJVUERBVEUgYCR0YWJsZWAgU0VUICRmaWVsZHMgV0hFUkUgJGNvbmRpdGlvbnMiOwoKCQkkdGhpcy0+Y2hl
Y2tfY3VycmVudF9xdWVyeSA9IGZhbHNlOwoJCXJldHVybiAkdGhpcy0+cXVlcnkoICR0aGlzLT5wcmVwYXJ
lKCAkc3FsLCAkdmFsdWVzICkgKTsKCX0KCgkvKioKCSAqIERlbGV0ZSBhIHJvdyBpbiB0aGUgdGFibGUKCS
AqCgkgKiAgICAgd3BkYjo6ZGVsZXRlKCAndGFibGUnLCBhcnJheSggJ0lEJyA9PiAxICkgKQoJICogICAgI
HdwZGI6OmRlbGV0ZSggJ3RhYmxlJywgYXJyYXkoICdJRCcgPT4gMSApLCBhcnJheSggJyVkJyApICkKCSAq
CgkgKiBAc2luY2UgMy40LjAKCSAqIEBzZWUgd3BkYjo6cHJlcGFyZSgpCgkgKiBAc2VlIHdwZGI6OiRmaWV
sZF90eXBlcwoJICogQHNlZSB3cF9zZXRfd3BkYl92YXJzKCkKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICAgIC
AgICR0YWJsZSAgICAgICAgVGFibGUgbmFtZQoJICogQHBhcmFtIGFycmF5ICAgICAgICAkd2hlcmUgICAgI
CAgIEEgbmFtZWQgYXJyYXkgb2YgV0hFUkUgY2xhdXNlcyAoaW4gY29sdW1uID0+IHZhbHVlIHBhaXJzKS4K
CSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSBjbGF1c2VzIHdpbGwgYmU
gam9pbmVkIHdpdGggQU5Ecy4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3RoIC
R3aGVyZSBjb2x1bW5zIGFuZCAkd2hlcmUgdmFsdWVzIHNob3VsZCBiZSAicmF3Ii4KCSAqICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kaW5nIGEgbnVsbCB2YWx1ZSB3aWxsIGNyZWF0ZSBhbiBJ
UyBOVUxMIGNvbXBhcmlzb24gLSB0aGUgY29ycmVzcG9uZGluZyBmb3JtYXQgd2lsbCBiZSBpZ25vcmVkIGl
uIHRoaXMgY2FzZS4KCSAqIEBwYXJhbSBhcnJheXxzdHJpbmcgJHdoZXJlX2Zvcm1hdCBPcHRpb25hbC4gQW
4gYXJyYXkgb2YgZm9ybWF0cyB0byBiZSBtYXBwZWQgdG8gZWFjaCBvZiB0aGUgdmFsdWVzIGluICR3aGVyZ
S4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzdHJpbmcsIHRoYXQgZm9ybWF0
IHdpbGwgYmUgdXNlZCBmb3IgYWxsIG9mIHRoZSBpdGVtcyBpbiAkd2hlcmUuCgkgKiAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgQSBmb3JtYXQgaXMgb25lIG9mICclZCcsICclZicsICclcycgKGludG
VnZXIsIGZsb2F0LCBzdHJpbmcpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmI
G9taXR0ZWQsIGFsbCB2YWx1ZXMgaW4gJHdoZXJlIHdpbGwgYmUgdHJlYXRlZCBhcyBzdHJpbmdzIHVubGVz
cyBvdGhlcndpc2Ugc3BlY2lmaWVkIGluIHdwZGI6OiRmaWVsZF90eXBlcy4KCSAqIEByZXR1cm4gaW50fGZ
hbHNlIFRoZSBudW1iZXIgb2Ygcm93cyB1cGRhdGVkLCBvciBmYWxzZSBvbiBlcnJvci4KCSAqLwoJcHVibG
ljIGZ1bmN0aW9uIGRlbGV0ZSggJHRhYmxlLCAkd2hlcmUsICR3aGVyZV9mb3JtYXQgPSBudWxsICkgewoJC
WlmICggISBpc19hcnJheSggJHdoZXJlICkgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSR3aGVyZSA9
ICR0aGlzLT5wcm9jZXNzX2ZpZWxkcyggJHRhYmxlLCAkd2hlcmUsICR3aGVyZV9mb3JtYXQgKTsKCQlpZiA
oIGZhbHNlID09PSAkd2hlcmUgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSRjb25kaXRpb25zID0gJH
ZhbHVlcyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoICR3aGVyZSBhcyAkZmllbGQgPT4gJHZhbHVlICkgewoJC
QlpZiAoIGlzX251bGwoICR2YWx1ZVsndmFsdWUnXSApICkgewoJCQkJJGNvbmRpdGlvbnNbXSA9ICJgJGZp
ZWxkYCBJUyBOVUxMIjsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkkY29uZGl0aW9uc1tdID0gImAkZmllbGR
gID0gIiAuICR2YWx1ZVsnZm9ybWF0J107CgkJCSR2YWx1ZXNbXSA9ICR2YWx1ZVsndmFsdWUnXTsKCQl9Cg
oJCSRjb25kaXRpb25zID0gaW1wbG9kZSggJyBBTkQgJywgJGNvbmRpdGlvbnMgKTsKCgkJJHNxbCA9ICJER
UxFVEUgRlJPTSBgJHRhYmxlYCBXSEVSRSAkY29uZGl0aW9ucyI7CgoJCSR0aGlzLT5jaGVja19jdXJyZW50
X3F1ZXJ5ID0gZmFsc2U7CgkJcmV0dXJuICR0aGlzLT5xdWVyeSggJHRoaXMtPnByZXBhcmUoICRzcWwsICR
2YWx1ZXMgKSApOwoJfQoKCS8qKgoJICogUHJvY2Vzc2VzIGFycmF5cyBvZiBmaWVsZC92YWx1ZSBwYWlycy
BhbmQgZmllbGQgZm9ybWF0cy4KCSAqCgkgKiBUaGlzIGlzIGEgaGVscGVyIG1ldGhvZCBmb3Igd3BkYidzI
ENSVUQgbWV0aG9kcywgd2hpY2ggdGFrZSBmaWVsZC92YWx1ZQoJICogcGFpcnMgZm9yIGluc2VydHMsIHVw
ZGF0ZXMsIGFuZCB3aGVyZSBjbGF1c2VzLiBUaGlzIG1ldGhvZCBmaXJzdCBwYWlycwoJICogZWFjaCB2YWx
1ZSB3aXRoIGEgZm9ybWF0LiBUaGVuIGl0IGRldGVybWluZXMgdGhlIGNoYXJzZXQgb2YgdGhhdCBmaWVsZC
wKCSAqIHVzaW5nIHRoYXQgdG8gZGV0ZXJtaW5lIGlmIGFueSBpbnZhbGlkIHRleHQgd291bGQgYmUgc3Rya
XBwZWQuIElmIHRleHQgaXMKCSAqIHN0cmlwcGVkLCB0aGVuIGZpZWxkIHByb2Nlc3NpbmcgaXMgcmVqZWN0
ZWQgYW5kIHRoZSBxdWVyeSBmYWlscy4KCSAqCgkgKiBAc2luY2UgNC4yLjAKCSAqIEBhY2Nlc3MgcHJvdGV
jdGVkCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdGFibGUgIFRhYmxlIG5hbWUuCgkgKiBAcGFyYW0gYXJyYX
kgICRkYXRhICAgRmllbGQvdmFsdWUgcGFpci4KCSAqIEBwYXJhbSBtaXhlZCAgJGZvcm1hdCBGb3JtYXQgZ
m9yIGVhY2ggZmllbGQuCgkgKiBAcmV0dXJuIGFycmF5fGZhbHNlIFJldHVybnMgYW4gYXJyYXkgb2YgZmll
bGRzIHRoYXQgY29udGFpbiBwYWlyZWQgdmFsdWVzCgkgKiAgICAgICAgICAgICAgICAgICAgYW5kIGZvcm1
hdHMuIFJldHVybnMgZmFsc2UgZm9yIGludmFsaWQgdmFsdWVzLgoJICovCglwcm90ZWN0ZWQgZnVuY3Rpb2
4gcHJvY2Vzc19maWVsZHMoICR0YWJsZSwgJGRhdGEsICRmb3JtYXQgKSB7CgkJJGRhdGEgPSAkdGhpcy0+c
HJvY2Vzc19maWVsZF9mb3JtYXRzKCAkZGF0YSwgJGZvcm1hdCApOwoJCWlmICggZmFsc2UgPT09ICRkYXRh
ICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkkZGF0YSA9ICR0aGlzLT5wcm9jZXNzX2ZpZWxkX2NoYXJ
zZXRzKCAkZGF0YSwgJHRhYmxlICk7CgkJaWYgKCBmYWxzZSA9PT0gJGRhdGEgKSB7CgkJCXJldHVybiBmYW
xzZTsKCQl9CgoJCSRkYXRhID0gJHRoaXMtPnByb2Nlc3NfZmllbGRfbGVuZ3RocyggJGRhdGEsICR0YWJsZ
SApOwoJCWlmICggZmFsc2UgPT09ICRkYXRhICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkkY29udmVy
dGVkX2RhdGEgPSAkdGhpcy0+c3RyaXBfaW52YWxpZF90ZXh0KCAkZGF0YSApOwoKCQlpZiAoICRkYXRhICE
9PSAkY29udmVydGVkX2RhdGEgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXJldHVybiAkZGF0YTsKCX
0KCgkvKioKCSAqIFByZXBhcmVzIGFycmF5cyBvZiB2YWx1ZS9mb3JtYXQgcGFpcnMgYXMgcGFzc2VkIHRvI
HdwZGIgQ1JVRCBtZXRob2RzLgoJICoKCSAqIEBzaW5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQK
CSAqCgkgKiBAcGFyYW0gYXJyYXkgJGRhdGEgICBBcnJheSBvZiBmaWVsZHMgdG8gdmFsdWVzLgoJICogQHB
hcmFtIG1peGVkICRmb3JtYXQgRm9ybWF0cyB0byBiZSBtYXBwZWQgdG8gdGhlIHZhbHVlcyBpbiAkZGF0YS
4KCSAqIEByZXR1cm4gYXJyYXkgQXJyYXksIGtleWVkIGJ5IGZpZWxkIG5hbWVzIHdpdGggdmFsdWVzIGJla
W5nIGFuIGFycmF5CgkgKiAgICAgICAgICAgICAgIG9mICd2YWx1ZScgYW5kICdmb3JtYXQnIGtleXMuCgkg
Ki8KCXByb3RlY3RlZCBmdW5jdGlvbiBwcm9jZXNzX2ZpZWxkX2Zvcm1hdHMoICRkYXRhLCAkZm9ybWF0ICk
gewoJCSRmb3JtYXRzID0gJG9yaWdpbmFsX2Zvcm1hdHMgPSAoYXJyYXkpICRmb3JtYXQ7CgoJCWZvcmVhY2
ggKCAkZGF0YSBhcyAkZmllbGQgPT4gJHZhbHVlICkgewoJCQkkdmFsdWUgPSBhcnJheSgKCQkJCSd2YWx1Z
ScgID0+ICR2YWx1ZSwKCQkJCSdmb3JtYXQnID0+ICclcycsCgkJCSk7CgoJCQlpZiAoICEgZW1wdHkoICRm
b3JtYXQgKSApIHsKCQkJCSR2YWx1ZVsnZm9ybWF0J10gPSBhcnJheV9zaGlmdCggJGZvcm1hdHMgKTsKCQk
JCWlmICggISAkdmFsdWVbJ2Zvcm1hdCddICkgewoJCQkJCSR2YWx1ZVsnZm9ybWF0J10gPSByZXNldCggJG
9yaWdpbmFsX2Zvcm1hdHMgKTsKCQkJCX0KCQkJfSBlbHNlaWYgKCBpc3NldCggJHRoaXMtPmZpZWxkX3R5c
GVzWyAkZmllbGQgXSApICkgewoJCQkJJHZhbHVlWydmb3JtYXQnXSA9ICR0aGlzLT5maWVsZF90eXBlc1sg
JGZpZWxkIF07CgkJCX0KCgkJCSRkYXRhWyAkZmllbGQgXSA9ICR2YWx1ZTsKCQl9CgoJCXJldHVybiAkZGF
0YTsKCX0KCgkvKioKCSAqIEFkZHMgZmllbGQgY2hhcnNldHMgdG8gZmllbGQvdmFsdWUvZm9ybWF0IGFycm
F5cyBnZW5lcmF0ZWQgYnkKCSAqIHRoZSB3cGRiOjpwcm9jZXNzX2ZpZWxkX2Zvcm1hdHMoKSBtZXRob2QuC
gkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBhcnJh
eSAgJGRhdGEgIEFzIGl0IGNvbWVzIGZyb20gdGhlIHdwZGI6OnByb2Nlc3NfZmllbGRfZm9ybWF0cygpIG1
ldGhvZC4KCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlIFRhYmxlIG5hbWUuCgkgKiBAcmV0dXJuIGFycmF5fG
ZhbHNlIFRoZSBzYW1lIGFycmF5IGFzICRkYXRhIHdpdGggYWRkaXRpb25hbCAnY2hhcnNldCcga2V5cy4KC
SAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIHByb2Nlc3NfZmllbGRfY2hhcnNldHMoICRkYXRhLCAkdGFibGUg
KSB7CgkJZm9yZWFjaCAoICRkYXRhIGFzICRmaWVsZCA9PiAkdmFsdWUgKSB7CgkJCWlmICggJyVkJyA9PT0
gJHZhbHVlWydmb3JtYXQnXSB8fCAnJWYnID09PSAkdmFsdWVbJ2Zvcm1hdCddICkgewoJCQkJLyoKCQkJCS
AqIFdlIGNhbiBza2lwIHRoaXMgZmllbGQgaWYgd2Uga25vdyBpdCBpc24ndCBhIHN0cmluZy4KCQkJCSAqI
FRoaXMgY2hlY2tzICVkLyVmIHZlcnN1cyAhICVzIGJlY2F1c2UgaXRzIHNwcmludGYoKSBjb3VsZCB0YWtl
IG1vcmUuCgkJCQkgKi8KCQkJCSR2YWx1ZVsnY2hhcnNldCddID0gZmFsc2U7CgkJCX0gZWxzZSB7CgkJCQk
kdmFsdWVbJ2NoYXJzZXQnXSA9ICR0aGlzLT5nZXRfY29sX2NoYXJzZXQoICR0YWJsZSwgJGZpZWxkICk7Cg
kJCQlpZiAoIGlzX3dwX2Vycm9yKCAkdmFsdWVbJ2NoYXJzZXQnXSApICkgewoJCQkJCXJldHVybiBmYWxzZ
TsKCQkJCX0KCQkJfQoKCQkJJGRhdGFbICRmaWVsZCBdID0gJHZhbHVlOwoJCX0KCgkJcmV0dXJuICRkYXRh
OwoJfQoKCS8qKgoJICogRm9yIHN0cmluZyBmaWVsZHMsIHJlY29yZCB0aGUgbWF4aW11bSBzdHJpbmcgbGV
uZ3RoIHRoYXQgZmllbGQgY2FuIHNhZmVseSBzYXZlLgoJICoKCSAqIEBzaW5jZSA0LjIuMQoJICogQGFjY2
VzcyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gYXJyYXkgICRkYXRhICBBcyBpdCBjb21lcyBmcm9tIHRoZ
SB3cGRiOjpwcm9jZXNzX2ZpZWxkX2NoYXJzZXRzKCkgbWV0aG9kLgoJICogQHBhcmFtIHN0cmluZyAkdGFi
bGUgVGFibGUgbmFtZS4KCSAqIEByZXR1cm4gYXJyYXl8ZmFsc2UgVGhlIHNhbWUgYXJyYXkgYXMgJGRhdGE
gd2l0aCBhZGRpdGlvbmFsICdsZW5ndGgnIGtleXMsIG9yIGZhbHNlIGlmCgkgKiAgICAgICAgICAgICAgIC
AgICAgIGFueSBvZiB0aGUgdmFsdWVzIHdlcmUgdG9vIGxvbmcgZm9yIHRoZWlyIGNvcnJlc3BvbmRpbmcgZ
mllbGQuCgkgKi8KCXByb3RlY3RlZCBmdW5jdGlvbiBwcm9jZXNzX2ZpZWxkX2xlbmd0aHMoICRkYXRhLCAk
dGFibGUgKSB7CgkJZm9yZWFjaCAoICRkYXRhIGFzICRmaWVsZCA9PiAkdmFsdWUgKSB7CgkJCWlmICggJyV
kJyA9PT0gJHZhbHVlWydmb3JtYXQnXSB8fCAnJWYnID09PSAkdmFsdWVbJ2Zvcm1hdCddICkgewoJCQkJLy
oKCQkJCSAqIFdlIGNhbiBza2lwIHRoaXMgZmllbGQgaWYgd2Uga25vdyBpdCBpc24ndCBhIHN0cmluZy4KC
QkJCSAqIFRoaXMgY2hlY2tzICVkLyVmIHZlcnN1cyAhICVzIGJlY2F1c2UgaXRzIHNwcmludGYoKSBjb3Vs
ZCB0YWtlIG1vcmUuCgkJCQkgKi8KCQkJCSR2YWx1ZVsnbGVuZ3RoJ10gPSBmYWxzZTsKCQkJfSBlbHNlIHs
KCQkJCSR2YWx1ZVsnbGVuZ3RoJ10gPSAkdGhpcy0+Z2V0X2NvbF9sZW5ndGgoICR0YWJsZSwgJGZpZWxkIC
k7CgkJCQlpZiAoIGlzX3dwX2Vycm9yKCAkdmFsdWVbJ2xlbmd0aCddICkgKSB7CgkJCQkJcmV0dXJuIGZhb
HNlOwoJCQkJfQoJCQl9CgoJCQkkZGF0YVsgJGZpZWxkIF0gPSAkdmFsdWU7CgkJfQoKCQlyZXR1cm4gJGRh
dGE7Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZSBvbmU
gdmFyaWFibGUgZnJvbSB0aGUgZGF0YWJhc2UuCgkgKgoJICogRXhlY3V0ZXMgYSBTUUwgcXVlcnkgYW5kIH
JldHVybnMgdGhlIHZhbHVlIGZyb20gdGhlIFNRTCByZXN1bHQuCgkgKiBJZiB0aGUgU1FMIHJlc3VsdCBjb
250YWlucyBtb3JlIHRoYW4gb25lIGNvbHVtbiBhbmQvb3IgbW9yZSB0aGFuIG9uZSByb3csIHRoaXMgZnVu
Y3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgaW4gdGhlIGNvbHVtbiBhbmQgcm93IHNwZWNpZmllZC4KCSAqIEl
mICRxdWVyeSBpcyBudWxsLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHZhbHVlIGluIHRoZSBzcGVjaW
ZpZWQgY29sdW1uIGFuZCByb3cgZnJvbSB0aGUgcHJldmlvdXMgU1FMIHJlc3VsdC4KCSAqCgkgKiBAc2luY
2UgMC43MQoJICoKCSAqIEBwYXJhbSBzdHJpbmd8bnVsbCAkcXVlcnkgT3B0aW9uYWwuIFNRTCBxdWVyeS4g
RGVmYXVsdHMgdG8gbnVsbCwgdXNlIHRoZSByZXN1bHQgZnJvbSB0aGUgcHJldmlvdXMgcXVlcnkuCgkgKiB
AcGFyYW0gaW50ICAgICAgICAgJHggICAgIE9wdGlvbmFsLiBDb2x1bW4gb2YgdmFsdWUgdG8gcmV0dXJuLi
BJbmRleGVkIGZyb20gMC4KCSAqIEBwYXJhbSBpbnQgICAgICAgICAkeSAgICAgT3B0aW9uYWwuIFJvdyBvZ
iB2YWx1ZSB0byByZXR1cm4uIEluZGV4ZWQgZnJvbSAwLgoJICogQHJldHVybiBzdHJpbmd8bnVsbCBEYXRh
YmFzZSBxdWVyeSByZXN1bHQgKGFzIHN0cmluZyksIG9yIG51bGwgb24gZmFpbHVyZQoJICovCglwdWJsaWM
gZnVuY3Rpb24gZ2V0X3ZhciggJHF1ZXJ5ID0gbnVsbCwgJHggPSAwLCAkeSA9IDAgKSB7CgkJJHRoaXMtPm
Z1bmNfY2FsbCA9ICJcJGRiLT5nZXRfdmFyKFwiJHF1ZXJ5XCIsICR4LCAkeSkiOwoKCQlpZiAoICR0aGlzL
T5jaGVja19jdXJyZW50X3F1ZXJ5ICYmICR0aGlzLT5jaGVja19zYWZlX2NvbGxhdGlvbiggJHF1ZXJ5ICkg
KSB7CgkJCSR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gZmFsc2U7CgkJfQoKCQlpZiAoICRxdWVyeSA
pIHsKCQkJJHRoaXMtPnF1ZXJ5KCAkcXVlcnkgKTsKCQl9CgoJCS8vIEV4dHJhY3QgdmFyIG91dCBvZiBjYW
NoZWQgcmVzdWx0cyBiYXNlZCB4LHkgdmFscwoJCWlmICggIWVtcHR5KCAkdGhpcy0+bGFzdF9yZXN1bHRbJ
HldICkgKSB7CgkJCSR2YWx1ZXMgPSBhcnJheV92YWx1ZXMoIGdldF9vYmplY3RfdmFycyggJHRoaXMtPmxh
c3RfcmVzdWx0WyR5XSApICk7CgkJfQoKCQkvLyBJZiB0aGVyZSBpcyBhIHZhbHVlIHJldHVybiBpdCBlbHN
lIHJldHVybiBudWxsCgkJcmV0dXJuICggaXNzZXQoICR2YWx1ZXNbJHhdICkgJiYgJHZhbHVlc1skeF0gIT
09ICcnICkgPyAkdmFsdWVzWyR4XSA6IG51bGw7Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZSBvbmUgcm93IGZyb
20gdGhlIGRhdGFiYXNlLgoJICoKCSAqIEV4ZWN1dGVzIGEgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSBy
b3cgZnJvbSB0aGUgU1FMIHJlc3VsdC4KCSAqCgkgKiBAc2luY2UgMC43MQoJICoKCSAqIEBwYXJhbSBzdHJ
pbmd8bnVsbCAkcXVlcnkgIFNRTCBxdWVyeS4KCSAqIEBwYXJhbSBzdHJpbmcgICAgICAkb3V0cHV0IE9wdG
lvbmFsLiBUaGUgcmVxdWlyZWQgcmV0dXJuIHR5cGUuIE9uZSBvZiBPQkpFQ1QsIEFSUkFZX0EsIG9yIEFSU
kFZX04sIHdoaWNoIGNvcnJlc3BvbmQgdG8KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuIHN0
ZENsYXNzIG9iamVjdCwgYW4gYXNzb2NpYXRpdmUgYXJyYXksIG9yIGEgbnVtZXJpYyBhcnJheSwgcmVzcGV
jdGl2ZWx5LiBEZWZhdWx0IE9CSkVDVC4KCSAqIEBwYXJhbSBpbnQgICAgICAgICAkeSAgICAgIE9wdGlvbm
FsLiBSb3cgdG8gcmV0dXJuLiBJbmRleGVkIGZyb20gMC4KCSAqIEByZXR1cm4gYXJyYXl8b2JqZWN0fG51b
Gx8dm9pZCBEYXRhYmFzZSBxdWVyeSByZXN1bHQgaW4gZm9ybWF0IHNwZWNpZmllZCBieSAkb3V0cHV0IG9y
IG51bGwgb24gZmFpbHVyZQoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0X3JvdyggJHF1ZXJ5ID0gbnVsbCw
gJG91dHB1dCA9IE9CSkVDVCwgJHkgPSAwICkgewoJCSR0aGlzLT5mdW5jX2NhbGwgPSAiXCRkYi0+Z2V0X3
JvdyhcIiRxdWVyeVwiLCRvdXRwdXQsJHkpIjsKCgkJaWYgKCAkdGhpcy0+Y2hlY2tfY3VycmVudF9xdWVye
SAmJiAkdGhpcy0+Y2hlY2tfc2FmZV9jb2xsYXRpb24oICRxdWVyeSApICkgewoJCQkkdGhpcy0+Y2hlY2tf
Y3VycmVudF9xdWVyeSA9IGZhbHNlOwoJCX0KCgkJaWYgKCAkcXVlcnkgKSB7CgkJCSR0aGlzLT5xdWVyeSg
gJHF1ZXJ5ICk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQlpZiAoICFpc3NldCggJHRoaX
MtPmxhc3RfcmVzdWx0WyR5XSApICkKCQkJcmV0dXJuIG51bGw7CgoJCWlmICggJG91dHB1dCA9PSBPQkpFQ
1QgKSB7CgkJCXJldHVybiAkdGhpcy0+bGFzdF9yZXN1bHRbJHldID8gJHRoaXMtPmxhc3RfcmVzdWx0WyR5
XSA6IG51bGw7CgkJfSBlbHNlaWYgKCAkb3V0cHV0ID09IEFSUkFZX0EgKSB7CgkJCXJldHVybiAkdGhpcy0
+bGFzdF9yZXN1bHRbJHldID8gZ2V0X29iamVjdF92YXJzKCAkdGhpcy0+bGFzdF9yZXN1bHRbJHldICkgOi
BudWxsOwoJCX0gZWxzZWlmICggJG91dHB1dCA9PSBBUlJBWV9OICkgewoJCQlyZXR1cm4gJHRoaXMtPmxhc
3RfcmVzdWx0WyR5XSA/IGFycmF5X3ZhbHVlcyggZ2V0X29iamVjdF92YXJzKCAkdGhpcy0+bGFzdF9yZXN1
bHRbJHldICkgKSA6IG51bGw7CgkJfSBlbHNlaWYgKCBzdHJ0b3VwcGVyKCAkb3V0cHV0ICkgPT09IE9CSkV
DVCApIHsKCQkJLy8gQmFjayBjb21wYXQgZm9yIE9CSkVDVCBiZWluZyBwcmV2aW91c2x5IGNhc2UgaW5zZW
5zaXRpdmUuCgkJCXJldHVybiAkdGhpcy0+bGFzdF9yZXN1bHRbJHldID8gJHRoaXMtPmxhc3RfcmVzdWx0W
yR5XSA6IG51bGw7CgkJfSBlbHNlIHsKCQkJJHRoaXMtPnByaW50X2Vycm9yKCAiIFwkZGItPmdldF9yb3co
c3RyaW5nIHF1ZXJ5LCBvdXRwdXQgdHlwZSwgaW50IG9mZnNldCkgLS0gT3V0cHV0IHR5cGUgbXVzdCBiZSB
vbmUgb2Y6IE9CSkVDVCwgQVJSQVlfQSwgQVJSQVlfTiIgKTsKCQl9Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZS
BvbmUgY29sdW1uIGZyb20gdGhlIGRhdGFiYXNlLgoJICoKCSAqIEV4ZWN1dGVzIGEgU1FMIHF1ZXJ5IGFuZ
CByZXR1cm5zIHRoZSBjb2x1bW4gZnJvbSB0aGUgU1FMIHJlc3VsdC4KCSAqIElmIHRoZSBTUUwgcmVzdWx0
IGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgY29sdW1uLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGNvbHV
tbiBzcGVjaWZpZWQuCgkgKiBJZiAkcXVlcnkgaXMgbnVsbCwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZS
BzcGVjaWZpZWQgY29sdW1uIGZyb20gdGhlIHByZXZpb3VzIFNRTCByZXN1bHQuCgkgKgoJICogQHNpbmNlI
DAuNzEKCSAqCgkgKiBAcGFyYW0gc3RyaW5nfG51bGwgJHF1ZXJ5IE9wdGlvbmFsLiBTUUwgcXVlcnkuIERl
ZmF1bHRzIHRvIHByZXZpb3VzIHF1ZXJ5LgoJICogQHBhcmFtIGludCAgICAgICAgICR4ICAgICBPcHRpb25
hbC4gQ29sdW1uIHRvIHJldHVybi4gSW5kZXhlZCBmcm9tIDAuCgkgKiBAcmV0dXJuIGFycmF5IERhdGFiYX
NlIHF1ZXJ5IHJlc3VsdC4gQXJyYXkgaW5kZXhlZCBmcm9tIDAgYnkgU1FMIHJlc3VsdCByb3cgbnVtYmVyL
goJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbCggJHF1ZXJ5ID0gbnVsbCAsICR4ID0gMCApIHsKCQlp
ZiAoICR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ICYmICR0aGlzLT5jaGVja19zYWZlX2NvbGxhdGlvbig
gJHF1ZXJ5ICkgKSB7CgkJCSR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gZmFsc2U7CgkJfQoKCQlpZi
AoICRxdWVyeSApIHsKCQkJJHRoaXMtPnF1ZXJ5KCAkcXVlcnkgKTsKCQl9CgoJCSRuZXdfYXJyYXkgPSBhc
nJheSgpOwoJCS8vIEV4dHJhY3QgdGhlIGNvbHVtbiB2YWx1ZXMKCQlmb3IgKCAkaSA9IDAsICRqID0gY291
bnQoICR0aGlzLT5sYXN0X3Jlc3VsdCApOyAkaSA8ICRqOyAkaSsrICkgewoJCQkkbmV3X2FycmF5WyRpXSA
9ICR0aGlzLT5nZXRfdmFyKCBudWxsLCAkeCwgJGkgKTsKCQl9CgkJcmV0dXJuICRuZXdfYXJyYXk7Cgl9Cg
oJLyoqCgkgKiBSZXRyaWV2ZSBhbiBlbnRpcmUgU1FMIHJlc3VsdCBzZXQgZnJvbSB0aGUgZGF0YWJhc2UgK
GkuZS4sIG1hbnkgcm93cykKCSAqCgkgKiBFeGVjdXRlcyBhIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUg
ZW50aXJlIFNRTCByZXN1bHQuCgkgKgoJICogQHNpbmNlIDAuNzEKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR
xdWVyeSAgU1FMIHF1ZXJ5LgoJICogQHBhcmFtIHN0cmluZyAkb3V0cHV0IE9wdGlvbmFsLiBBbnkgb2YgQV
JSQVlfQSB8IEFSUkFZX04gfCBPQkpFQ1QgfCBPQkpFQ1RfSyBjb25zdGFudHMuCgkgKiAgICAgICAgICAgI
CAgICAgICAgICAgV2l0aCBvbmUgb2YgdGhlIGZpcnN0IHRocmVlLCByZXR1cm4gYW4gYXJyYXkgb2Ygcm93
cyBpbmRleGVkIGZyb20gMCBieSBTUUwgcmVzdWx0IHJvdyBudW1iZXIuCgkgKiAgICAgICAgICAgICAgICA
gICAgICAgRWFjaCByb3cgaXMgYW4gYXNzb2NpYXRpdmUgYXJyYXkgKGNvbHVtbiA9PiB2YWx1ZSwgLi4uKS
wgYSBudW1lcmljYWxseSBpbmRleGVkIGFycmF5ICgwID0+IHZhbHVlLCAuLi4pLCBvciBhbiBvYmplY3QuI
CggLT5jb2x1bW4gPSB2YWx1ZSApLCByZXNwZWN0aXZlbHkuCgkgKiAgICAgICAgICAgICAgICAgICAgICAg
V2l0aCBPQkpFQ1RfSywgcmV0dXJuIGFuIGFzc29jaWF0aXZlIGFycmF5IG9mIHJvdyBvYmplY3RzIGtleWV
kIGJ5IHRoZSB2YWx1ZSBvZiBlYWNoIHJvdydzIGZpcnN0IGNvbHVtbidzIHZhbHVlLgoJICogICAgICAgIC
AgICAgICAgICAgICAgIER1cGxpY2F0ZSBrZXlzIGFyZSBkaXNjYXJkZWQuCgkgKiBAcmV0dXJuIGFycmF5f
G9iamVjdHxudWxsIERhdGFiYXNlIHF1ZXJ5IHJlc3VsdHMKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldF9y
ZXN1bHRzKCAkcXVlcnkgPSBudWxsLCAkb3V0cHV0ID0gT0JKRUNUICkgewoJCSR0aGlzLT5mdW5jX2NhbGw
gPSAiXCRkYi0+Z2V0X3Jlc3VsdHMoXCIkcXVlcnlcIiwgJG91dHB1dCkiOwoKCQlpZiAoICR0aGlzLT5jaG
Vja19jdXJyZW50X3F1ZXJ5ICYmICR0aGlzLT5jaGVja19zYWZlX2NvbGxhdGlvbiggJHF1ZXJ5ICkgKSB7C
gkJCSR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gZmFsc2U7CgkJfQoKCQlpZiAoICRxdWVyeSApIHsK
CQkJJHRoaXMtPnF1ZXJ5KCAkcXVlcnkgKTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gbnVsbDsKCQl9CgoJCSR
uZXdfYXJyYXkgPSBhcnJheSgpOwoJCWlmICggJG91dHB1dCA9PSBPQkpFQ1QgKSB7CgkJCS8vIFJldHVybi
BhbiBpbnRlZ2VyLWtleWVkIGFycmF5IG9mIHJvdyBvYmplY3RzCgkJCXJldHVybiAkdGhpcy0+bGFzdF9yZ
XN1bHQ7CgkJfSBlbHNlaWYgKCAkb3V0cHV0ID09IE9CSkVDVF9LICkgewoJCQkvLyBSZXR1cm4gYW4gYXJy
YXkgb2Ygcm93IG9iamVjdHMgd2l0aCBrZXlzIGZyb20gY29sdW1uIDEKCQkJLy8gKER1cGxpY2F0ZXMgYXJ
lIGRpc2NhcmRlZCkKCQkJZm9yZWFjaCAoICR0aGlzLT5sYXN0X3Jlc3VsdCBhcyAkcm93ICkgewoJCQkJJH
Zhcl9ieV9yZWYgPSBnZXRfb2JqZWN0X3ZhcnMoICRyb3cgKTsKCQkJCSRrZXkgPSBhcnJheV9zaGlmdCggJ
HZhcl9ieV9yZWYgKTsKCQkJCWlmICggISBpc3NldCggJG5ld19hcnJheVsgJGtleSBdICkgKQoJCQkJCSRu
ZXdfYXJyYXlbICRrZXkgXSA9ICRyb3c7CgkJCX0KCQkJcmV0dXJuICRuZXdfYXJyYXk7CgkJfSBlbHNlaWY
gKCAkb3V0cHV0ID09IEFSUkFZX0EgfHwgJG91dHB1dCA9PSBBUlJBWV9OICkgewoJCQkvLyBSZXR1cm4gYW
4gaW50ZWdlci1rZXllZCBhcnJheSBvZi4uLgoJCQlpZiAoICR0aGlzLT5sYXN0X3Jlc3VsdCApIHsKCQkJC
WZvcmVhY2ggKCAoYXJyYXkpICR0aGlzLT5sYXN0X3Jlc3VsdCBhcyAkcm93ICkgewoJCQkJCWlmICggJG91
dHB1dCA9PSBBUlJBWV9OICkgewoJCQkJCQkvLyAuLi5pbnRlZ2VyLWtleWVkIHJvdyBhcnJheXMKCQkJCQk
JJG5ld19hcnJheVtdID0gYXJyYXlfdmFsdWVzKCBnZXRfb2JqZWN0X3ZhcnMoICRyb3cgKSApOwoJCQkJCX
0gZWxzZSB7CgkJCQkJCS8vIC4uLmNvbHVtbiBuYW1lLWtleWVkIHJvdyBhcnJheXMKCQkJCQkJJG5ld19hc
nJheVtdID0gZ2V0X29iamVjdF92YXJzKCAkcm93ICk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCXJldHVybiAk
bmV3X2FycmF5OwoJCX0gZWxzZWlmICggc3RydG91cHBlciggJG91dHB1dCApID09PSBPQkpFQ1QgKSB7Cgk
JCS8vIEJhY2sgY29tcGF0IGZvciBPQkpFQ1QgYmVpbmcgcHJldmlvdXNseSBjYXNlIGluc2Vuc2l0aXZlLg
oJCQlyZXR1cm4gJHRoaXMtPmxhc3RfcmVzdWx0OwoJCX0KCQlyZXR1cm4gbnVsbDsKCX0KCgkvKioKCSAqI
FJldHJpZXZlcyB0aGUgY2hhcmFjdGVyIHNldCBmb3IgdGhlIGdpdmVuIHRhYmxlLgoJICoKCSAqIEBzaW5j
ZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR0YWJsZSBUYWJ
sZSBuYW1lLgoJICogQHJldHVybiBzdHJpbmd8V1BfRXJyb3IgVGFibGUgY2hhcmFjdGVyIHNldCwgV1BfRX
Jyb3Igb2JqZWN0IGlmIGl0IGNvdWxkbid0IGJlIGZvdW5kLgoJICovCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ
2V0X3RhYmxlX2NoYXJzZXQoICR0YWJsZSApIHsKCQkkdGFibGVrZXkgPSBzdHJ0b2xvd2VyKCAkdGFibGUg
KTsKCgkJLyoqCgkJICogRmlsdGVycyB0aGUgdGFibGUgY2hhcnNldCB2YWx1ZSBiZWZvcmUgdGhlIERCIGl
zIGNoZWNrZWQuCgkJICoKCQkgKiBQYXNzaW5nIGEgbm9uLW51bGwgdmFsdWUgdG8gdGhlIGZpbHRlciB3aW
xsIGVmZmVjdGl2ZWx5IHNob3J0LWNpcmN1aXQKCQkgKiBjaGVja2luZyB0aGUgREIgZm9yIHRoZSBjaGFyc
2V0LCByZXR1cm5pbmcgdGhhdCB2YWx1ZSBpbnN0ZWFkLgoJCSAqCgkJICogQHNpbmNlIDQuMi4wCgkJICoK
CQkgKiBAcGFyYW0gc3RyaW5nICRjaGFyc2V0IFRoZSBjaGFyYWN0ZXIgc2V0IHRvIHVzZS4gRGVmYXVsdCB
udWxsLgoJCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGJlaW5nIG
NoZWNrZWQuCgkJICovCgkJJGNoYXJzZXQgPSBhcHBseV9maWx0ZXJzKCAncHJlX2dldF90YWJsZV9jaGFyc
2V0JywgbnVsbCwgJHRhYmxlICk7CgkJaWYgKCBudWxsICE9PSAkY2hhcnNldCApIHsKCQkJcmV0dXJuICRj
aGFyc2V0OwoJCX0KCgkJaWYgKCBpc3NldCggJHRoaXMtPnRhYmxlX2NoYXJzZXRbICR0YWJsZWtleSBdICk
gKSB7CgkJCXJldHVybiAkdGhpcy0+dGFibGVfY2hhcnNldFsgJHRhYmxla2V5IF07CgkJfQoKCQkkY2hhcn
NldHMgPSAkY29sdW1ucyA9IGFycmF5KCk7CgoJCSR0YWJsZV9wYXJ0cyA9IGV4cGxvZGUoICcuJywgJHRhY
mxlICk7CgkJJHRhYmxlID0gJ2AnIC4gaW1wbG9kZSggJ2AuYCcsICR0YWJsZV9wYXJ0cyApIC4gJ2AnOwoJ
CSRyZXN1bHRzID0gJHRoaXMtPmdldF9yZXN1bHRzKCAiU0hPVyBGVUxMIENPTFVNTlMgRlJPTSAkdGFibGU
iICk7CgkJaWYgKCAhICRyZXN1bHRzICkgewoJCQ
lyZXR1cm4gbmV3IFdQX0Vycm9yKCAnd3BkYl9nZXRfdGFibGVfY2hhcnNldF9mYWlsdXJlJyApOwoJCX0KC
gkJZm9yZWFjaCAoICRyZXN1bHRzIGFzICRjb2x1bW4gKSB7CgkJCSRjb2x1bW5zWyBzdHJ0b2xvd2VyKCAk
Y29sdW1uLT5GaWVsZCApIF0gPSAkY29sdW1uOwoJCX0KCgkJJHRoaXMtPmNvbF9tZXRhWyAkdGFibGVrZXk
gXSA9ICRjb2x1bW5zOwoKCQlmb3JlYWNoICggJGNvbHVtbnMgYXMgJGNvbHVtbiApIHsKCQkJaWYgKCAhIG
VtcHR5KCAkY29sdW1uLT5Db2xsYXRpb24gKSApIHsKCQkJCWxpc3QoICRjaGFyc2V0ICkgPSBleHBsb2RlK
CAnXycsICRjb2x1bW4tPkNvbGxhdGlvbiApOwoKCQkJCS8vIElmIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24g
Y2FuJ3Qgc3VwcG9ydCB1dGY4bWI0IGNoYXJhY3RlcnMsIGxldCdzIG9ubHkgc2VuZCAzLWJ5dGUgdXRmOCB
jaGFyYWN0ZXJzLgoJCQkJaWYgKCAndXRmOG1iNCcgPT09ICRjaGFyc2V0ICYmICEgJHRoaXMtPmhhc19jYX
AoICd1dGY4bWI0JyApICkgewoJCQkJCSRjaGFyc2V0ID0gJ3V0ZjgnOwoJCQkJfQoKCQkJCSRjaGFyc2V0c
1sgc3RydG9sb3dlciggJGNoYXJzZXQgKSBdID0gdHJ1ZTsKCQkJfQoKCQkJbGlzdCggJHR5cGUgKSA9IGV4
cGxvZGUoICcoJywgJGNvbHVtbi0+VHlwZSApOwoKCQkJLy8gQSBiaW5hcnkvYmxvYiBtZWFucyB0aGUgd2h
vbGUgcXVlcnkgZ2V0cyB0cmVhdGVkIGxpa2UgdGhpcy4KCQkJaWYgKCBpbl9hcnJheSggc3RydG91cHBlci
ggJHR5cGUgKSwgYXJyYXkoICdCSU5BUlknLCAnVkFSQklOQVJZJywgJ1RJTllCTE9CJywgJ01FRElVTUJMT
0InLCAnQkxPQicsICdMT05HQkxPQicgKSApICkgewoJCQkJJHRoaXMtPnRhYmxlX2NoYXJzZXRbICR0YWJs
ZWtleSBdID0gJ2JpbmFyeSc7CgkJCQlyZXR1cm4gJ2JpbmFyeSc7CgkJCX0KCQl9CgoJCS8vIHV0ZjhtYjM
gaXMgYW4gYWxpYXMgZm9yIHV0ZjguCgkJaWYgKCBpc3NldCggJGNoYXJzZXRzWyd1dGY4bWIzJ10gKSApIH
sKCQkJJGNoYXJzZXRzWyd1dGY4J10gPSB0cnVlOwoJCQl1bnNldCggJGNoYXJzZXRzWyd1dGY4bWIzJ10gK
TsKCQl9CgoJCS8vIENoZWNrIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGFyc2V0IGluIHBsYXkuCgkJ
JGNvdW50ID0gY291bnQoICRjaGFyc2V0cyApOwoJCWlmICggMSA9PT0gJGNvdW50ICkgewoJCQkkY2hhcnN
ldCA9IGtleSggJGNoYXJzZXRzICk7CgkJfSBlbHNlaWYgKCAwID09PSAkY291bnQgKSB7CgkJCS8vIE5vIG
NoYXJzZXRzLCBhc3N1bWUgdGhpcyB0YWJsZSBjYW4gc3RvcmUgd2hhdGV2ZXIuCgkJCSRjaGFyc2V0ID0gZ
mFsc2U7CgkJfSBlbHNlIHsKCQkJLy8gTW9yZSB0aGFuIG9uZSBjaGFyc2V0LiBSZW1vdmUgbGF0aW4xIGlm
IHByZXNlbnQgYW5kIHJlY2FsY3VsYXRlLgoJCQl1bnNldCggJGNoYXJzZXRzWydsYXRpbjEnXSApOwoJCQk
kY291bnQgPSBjb3VudCggJGNoYXJzZXRzICk7CgkJCWlmICggMSA9PT0gJGNvdW50ICkgewoJCQkJLy8gT2
5seSBvbmUgY2hhcnNldCAoYmVzaWRlcyBsYXRpbjEpLgoJCQkJJGNoYXJzZXQgPSBrZXkoICRjaGFyc2V0c
yApOwoJCQl9IGVsc2VpZiAoIDIgPT09ICRjb3VudCAmJiBpc3NldCggJGNoYXJzZXRzWyd1dGY4J10sICRj
aGFyc2V0c1sndXRmOG1iNCddICkgKSB7CgkJCQkvLyBUd28gY2hhcnNldHMsIGJ1dCB0aGV5J3JlIHV0Zjg
gYW5kIHV0ZjhtYjQsIHVzZSB1dGY4LgoJCQkJJGNoYXJzZXQgPSAndXRmOCc7CgkJCX0gZWxzZSB7CgkJCQ
kvLyBUd28gbWl4ZWQgY2hhcmFjdGVyIHNldHMuIGFzY2lpLgoJCQkJJGNoYXJzZXQgPSAnYXNjaWknOwoJC
Ql9CgkJfQoKCQkkdGhpcy0+dGFibGVfY2hhcnNldFsgJHRhYmxla2V5IF0gPSAkY2hhcnNldDsKCQlyZXR1
cm4gJGNoYXJzZXQ7Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZXMgdGhlIGNoYXJhY3RlciBzZXQgZm9yIHRoZSB
naXZlbiBjb2x1bW4uCgkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIE
BwYXJhbSBzdHJpbmcgJHRhYmxlICBUYWJsZSBuYW1lLgoJICogQHBhcmFtIHN0cmluZyAkY29sdW1uIENvb
HVtbiBuYW1lLgoJICogQHJldHVybiBzdHJpbmd8ZmFsc2V8V1BfRXJyb3IgQ29sdW1uIGNoYXJhY3RlciBz
ZXQgYXMgYSBzdHJpbmcuIEZhbHNlIGlmIHRoZSBjb2x1bW4gaGFzIG5vCgkgKiAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICBjaGFyYWN0ZXIgc2V0LiBXUF9FcnJvciBvYmplY3QgaWYgdGhlcmUgd2FzIGFuIG
Vycm9yLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbF9jaGFyc2V0KCAkdGFibGUsICRjb2x1bW4gK
SB7CgkJJHRhYmxla2V5ID0gc3RydG9sb3dlciggJHRhYmxlICk7CgkJJGNvbHVtbmtleSA9IHN0cnRvbG93
ZXIoICRjb2x1bW4gKTsKCgkJLyoqCgkJICogRmlsdGVycyB0aGUgY29sdW1uIGNoYXJzZXQgdmFsdWUgYmV
mb3JlIHRoZSBEQiBpcyBjaGVja2VkLgoJCSAqCgkJICogUGFzc2luZyBhIG5vbi1udWxsIHZhbHVlIHRvIH
RoZSBmaWx0ZXIgd2lsbCBzaG9ydC1jaXJjdWl0CgkJICogY2hlY2tpbmcgdGhlIERCIGZvciB0aGUgY2hhc
nNldCwgcmV0dXJuaW5nIHRoYXQgdmFsdWUgaW5zdGVhZC4KCQkgKgoJCSAqIEBzaW5jZSA0LjIuMAoJCSAq
CgkJICogQHBhcmFtIHN0cmluZyAkY2hhcnNldCBUaGUgY2hhcmFjdGVyIHNldCB0byB1c2UuIERlZmF1bHQ
gbnVsbC4KCQkgKiBAcGFyYW0gc3RyaW5nICR0YWJsZSAgIFRoZSBuYW1lIG9mIHRoZSB0YWJsZSBiZWluZy
BjaGVja2VkLgoJCSAqIEBwYXJhbSBzdHJpbmcgJGNvbHVtbiAgVGhlIG5hbWUgb2YgdGhlIGNvbHVtbiBiZ
WluZyBjaGVja2VkLgoJCSAqLwoJCSRjaGFyc2V0ID0gYXBwbHlfZmlsdGVycyggJ3ByZV9nZXRfY29sX2No
YXJzZXQnLCBudWxsLCAkdGFibGUsICRjb2x1bW4gKTsKCQlpZiAoIG51bGwgIT09ICRjaGFyc2V0ICkgewo
JCQlyZXR1cm4gJGNoYXJzZXQ7CgkJfQoKCQkvLyBTa2lwIHRoaXMgZW50aXJlbHkgaWYgdGhpcyBpc24ndC
BhIE15U1FMIGRhdGFiYXNlLgoJCWlmICggZW1wdHkoICR0aGlzLT5pc19teXNxbCApICkgewoJCQlyZXR1c
m4gZmFsc2U7CgkJfQoKCQlpZiAoIGVtcHR5KCAkdGhpcy0+dGFibGVfY2hhcnNldFsgJHRhYmxla2V5IF0g
KSApIHsKCQkJLy8gVGhpcyBwcmltZXMgY29sdW1uIGluZm9ybWF0aW9uIGZvciB1cy4KCQkJJHRhYmxlX2N
oYXJzZXQgPSAkdGhpcy0+Z2V0X3RhYmxlX2NoYXJzZXQoICR0YWJsZSApOwoJCQlpZiAoIGlzX3dwX2Vycm
9yKCAkdGFibGVfY2hhcnNldCApICkgewoJCQkJcmV0dXJuICR0YWJsZV9jaGFyc2V0OwoJCQl9CgkJfQoKC
QkvLyBJZiBzdGlsbCBubyBjb2x1bW4gaW5mb3JtYXRpb24sIHJldHVybiB0aGUgdGFibGUgY2hhcnNldC4K
CQlpZiAoIGVtcHR5KCAkdGhpcy0+Y29sX21ldGFbICR0YWJsZWtleSBdICkgKSB7CgkJCXJldHVybiAkdGh
pcy0+dGFibGVfY2hhcnNldFsgJHRhYmxla2V5IF07CgkJfQoKCQkvLyBJZiB0aGlzIGNvbHVtbiBkb2Vzbi
d0IGV4aXN0LCByZXR1cm4gdGhlIHRhYmxlIGNoYXJzZXQuCgkJaWYgKCBlbXB0eSggJHRoaXMtPmNvbF9tZ
XRhWyAkdGFibGVrZXkgXVsgJGNvbHVtbmtleSBdICkgKSB7CgkJCXJldHVybiAkdGhpcy0+dGFibGVfY2hh
cnNldFsgJHRhYmxla2V5IF07CgkJfQoKCQkvLyBSZXR1cm4gZmFsc2Ugd2hlbiBpdCdzIG5vdCBhIHN0cml
uZyBjb2x1bW4uCgkJaWYgKCBlbXB0eSggJHRoaXMtPmNvbF9tZXRhWyAkdGFibGVrZXkgXVsgJGNvbHVtbm
tleSBdLT5Db2xsYXRpb24gKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJbGlzdCggJGNoYXJzZXQgK
SA9IGV4cGxvZGUoICdfJywgJHRoaXMtPmNvbF9tZXRhWyAkdGFibGVrZXkgXVsgJGNvbHVtbmtleSBdLT5D
b2xsYXRpb24gKTsKCQlyZXR1cm4gJGNoYXJzZXQ7Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZSB0aGUgbWF4aW1
1bSBzdHJpbmcgbGVuZ3RoIGFsbG93ZWQgaW4gYSBnaXZlbiBjb2x1bW4uCgkgKiBUaGUgbGVuZ3RoIG1heS
BlaXRoZXIgYmUgc3BlY2lmaWVkIGFzIGEgYnl0ZSBsZW5ndGggb3IgYSBjaGFyYWN0ZXIgbGVuZ3RoLgoJI
CoKCSAqIEBzaW5jZSA0LjIuMQoJICogQGFjY2VzcyBwdWJsaWMKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR0
YWJsZSAgVGFibGUgbmFtZS4KCSAqIEBwYXJhbSBzdHJpbmcgJGNvbHVtbiBDb2x1bW4gbmFtZS4KCSAqIEB
yZXR1cm4gYXJyYXl8ZmFsc2V8V1BfRXJyb3IgYXJyYXkoICdsZW5ndGgnID0+IChpbnQpLCAndHlwZScgPT
4gJ2J5dGUnIHwgJ2NoYXInICkKCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UgaWYgd
GhlIGNvbHVtbiBoYXMgbm8gbGVuZ3RoIChmb3IgZXhhbXBsZSwgbnVtZXJpYyBjb2x1bW4pCgkgKiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdQX0Vycm9yIG9iamVjdCBpZiB0aGVyZSB3YXMgYW4gZXJyb3I
uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfY29sX2xlbmd0aCggJHRhYmxlLCAkY29sdW1uICkgewoJCS
R0YWJsZWtleSA9IHN0cnRvbG93ZXIoICR0YWJsZSApOwoJCSRjb2x1bW5rZXkgPSBzdHJ0b2xvd2VyKCAkY
29sdW1uICk7CgoJCS8vIFNraXAgdGhpcyBlbnRpcmVseSBpZiB0aGlzIGlzbid0IGEgTXlTUUwgZGF0YWJh
c2UuCgkJaWYgKCBlbXB0eSggJHRoaXMtPmlzX215c3FsICkgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgo
JCWlmICggZW1wdHkoICR0aGlzLT5jb2xfbWV0YVsgJHRhYmxla2V5IF0gKSApIHsKCQkJLy8gVGhpcyBwcm
ltZXMgY29sdW1uIGluZm9ybWF0aW9uIGZvciB1cy4KCQkJJHRhYmxlX2NoYXJzZXQgPSAkdGhpcy0+Z2V0X
3RhYmxlX2NoYXJzZXQoICR0YWJsZSApOwoJCQlpZiAoIGlzX3dwX2Vycm9yKCAkdGFibGVfY2hhcnNldCAp
ICkgewoJCQkJcmV0dXJuICR0YWJsZV9jaGFyc2V0OwoJCQl9CgkJfQoKCQlpZiAoIGVtcHR5KCAkdGhpcy0
+Y29sX21ldGFbICR0YWJsZWtleSBdWyAkY29sdW1ua2V5IF0gKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX
0KCgkJJHR5cGVpbmZvID0gZXhwbG9kZSggJygnLCAkdGhpcy0+Y29sX21ldGFbICR0YWJsZWtleSBdWyAkY
29sdW1ua2V5IF0tPlR5cGUgKTsKCgkJJHR5cGUgPSBzdHJ0b2xvd2VyKCAkdHlwZWluZm9bMF0gKTsKCQlp
ZiAoICEgZW1wdHkoICR0eXBlaW5mb1sxXSApICkgewoJCQkkbGVuZ3RoID0gdHJpbSggJHR5cGVpbmZvWzF
dLCAnKScgKTsKCQl9IGVsc2UgewoJCQkkbGVuZ3RoID0gZmFsc2U7CgkJfQoKCQlzd2l0Y2goICR0eXBlIC
kgewoJCQljYXNlICdjaGFyJzoKCQkJY2FzZSAndmFyY2hhcic6CgkJCQlyZXR1cm4gYXJyYXkoCgkJCQkJJ
3R5cGUnICAgPT4gJ2NoYXInLAoJCQkJCSdsZW5ndGgnID0+IChpbnQpICRsZW5ndGgsCgkJCQkpOwoKCQkJ
Y2FzZSAnYmluYXJ5JzoKCQkJY2FzZSAndmFyYmluYXJ5JzoKCQkJCXJldHVybiBhcnJheSgKCQkJCQkndHl
wZScgICA9PiAnYnl0ZScsCgkJCQkJJ2xlbmd0aCcgPT4gKGludCkgJGxlbmd0aCwKCQkJCSk7CgoJCQljYX
NlICd0aW55YmxvYic6CgkJCWNhc2UgJ3Rpbnl0ZXh0JzoKCQkJCXJldHVybiBhcnJheSgKCQkJCQkndHlwZ
ScgICA9PiAnYnl0ZScsCgkJCQkJJ2xlbmd0aCcgPT4gMjU1LCAgICAgICAgLy8gMl44IC0gMQoJCQkJKTsK
CgkJCWNhc2UgJ2Jsb2InOgoJCQljYXNlICd0ZXh0JzoKCQkJCXJldHVybiBhcnJheSgKCQkJCQkndHlwZSc
gICA9PiAnYnl0ZScsCgkJCQkJJ2xlbmd0aCcgPT4gNjU1MzUsICAgICAgLy8gMl4xNiAtIDEKCQkJCSk7Cg
oJCQljYXNlICdtZWRpdW1ibG9iJzoKCQkJY2FzZSAnbWVkaXVtdGV4dCc6CgkJCQlyZXR1cm4gYXJyYXkoC
gkJCQkJJ3R5cGUnICAgPT4gJ2J5dGUnLAoJCQkJCSdsZW5ndGgnID0+IDE2Nzc3MjE1LCAgIC8vIDJeMjQg
LSAxCgkJCQkpOwoKCQkJY2FzZSAnbG9uZ2Jsb2InOgoJCQljYXNlICdsb25ndGV4dCc6CgkJCQlyZXR1cm4
gYXJyYXkoCgkJCQkJJ3R5cGUnICAgPT4gJ2J5dGUnLAoJCQkJCSdsZW5ndGgnID0+IDQyOTQ5NjcyOTUsIC
8vIDJeMzIgLSAxCgkJCQkpOwoKCQkJZGVmYXVsdDoKCQkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJLyoqC
gkgKiBDaGVjayBpZiBhIHN0cmluZyBpcyBBU0NJSS4KCSAqCgkgKiBUaGUgbmVnYXRpdmUgcmVnZXggaXMg
ZmFzdGVyIGZvciBub24tQVNDSUkgc3RyaW5ncywgYXMgaXQgYWxsb3dzCgkgKiB0aGUgc2VhcmNoIHRvIGZ
pbmlzaCBhcyBzb29uIGFzIGl0IGVuY291bnRlcnMgYSBub24tQVNDSUkgY2hhcmFjdGVyLgoJICoKCSAqIE
BzaW5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRzdHJpb
mcgU3RyaW5nIHRvIGNoZWNrLgoJICogQHJldHVybiBib29sIFRydWUgaWYgQVNDSUksIGZhbHNlIGlmIG5v
dC4KCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrX2FzY2lpKCAkc3RyaW5nICkgewoJCWlmICggZnV
uY3Rpb25fZXhpc3RzKCAnbWJfY2hlY2tfZW5jb2RpbmcnICkgKSB7CgkJCWlmICggbWJfY2hlY2tfZW5jb2
RpbmcoICRzdHJpbmcsICdBU0NJSScgKSApIHsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJfSBlbHNlaWYgK
CAhIHByZWdfbWF0Y2goICcvW15ceDAwLVx4N0ZdLycsICRzdHJpbmcgKSApIHsKCQkJcmV0dXJuIHRydWU7
CgkJfQoKCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBDaGVjayBpZiB0aGUgcXVlcnkgaXMgYWNjZXN
zaW5nIGEgY29sbGF0aW9uIGNvbnNpZGVyZWQgc2FmZSBvbiB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIE15U1
FMLgoJICoKCSAqIEBzaW5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gc
3RyaW5nICRxdWVyeSBUaGUgcXVlcnkgdG8gY2hlY2suCgkgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBpZiB0aGUg
Y29sbGF0aW9uIGlzIHNhZmUsIGZhbHNlIGlmIGl0IGlzbid0LgoJICovCglwcm90ZWN0ZWQgZnVuY3Rpb24
gY2hlY2tfc2FmZV9jb2xsYXRpb24oICRxdWVyeSApIHsKCQlpZiAoICR0aGlzLT5jaGVja2luZ19jb2xsYX
Rpb24gKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgY
29sbGF0aW9uIGZvciBxdWVyaWVzIHRoYXQgZG9uJ3QgcmVhZCBkYXRhLgoJCSRxdWVyeSA9IGx0cmltKCAk
cXVlcnksICJcclxuXHQgKCIgKTsKCQlpZiAoIHByZWdfbWF0Y2goICcvXig/OlNIT1d8REVTQ1JJQkV8REV
TQ3xFWFBMQUlOfENSRUFURSlccy9pJywgJHF1ZXJ5ICkgKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJLy
8gQWxsLUFTQ0lJIHF1ZXJpZXMgZG9uJ3QgbmVlZCBleHRyYSBjaGVja2luZy4KCQlpZiAoICR0aGlzLT5ja
GVja19hc2NpaSggJHF1ZXJ5ICkgKSB7CgkJCXJldHVybiB0cnVlOwoJCX0KCgkJJHRhYmxlID0gJHRoaXMt
PmdldF90YWJsZV9mcm9tX3F1ZXJ5KCAkcXVlcnkgKTsKCQlpZiAoICEgJHRhYmxlICkgewoJCQlyZXR1cm4
gZmFsc2U7CgkJfQoKCQkkdGhpcy0+Y2hlY2tpbmdfY29sbGF0aW9uID0gdHJ1ZTsKCQkkY29sbGF0aW9uID
0gJHRoaXMtPmdldF90YWJsZV9jaGFyc2V0KCAkd
GFibGUgKTsKCQkkdGhpcy0+Y2hlY2tpbmdfY29sbGF0aW9uID0gZmFsc2U7CgoJCS8vIFRhYmxlcyB3aXRo
IG5vIGNvbGxhdGlvbiwgb3IgbGF0aW4xIG9ubHksIGRvbid0IG5lZWQgZXh0cmEgY2hlY2tpbmcuCgkJaWY
gKCBmYWxzZSA9PT0gJGNvbGxhdGlvbiB8fCAnbGF0aW4xJyA9PT0gJGNvbGxhdGlvbiApIHsKCQkJcmV0dX
JuIHRydWU7CgkJfQoKCQkkdGFibGUgPSBzdHJ0b2xvd2VyKCAkdGFibGUgKTsKCQlpZiAoIGVtcHR5KCAkd
Ghpcy0+Y29sX21ldGFbICR0YWJsZSBdICkgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCS8vIElmIGFu
eSBvZiB0aGUgY29sdW1ucyBkb24ndCBoYXZlIG9uZSBvZiB0aGVzZSBjb2xsYXRpb25zLCBpdCBuZWVkcyB
tb3JlIHNhbml0eSBjaGVja2luZy4KCQlmb3JlYWNoICggJHRoaXMtPmNvbF9tZXRhWyAkdGFibGUgXSBhcy
AkY29sICkgewoJCQlpZiAoIGVtcHR5KCAkY29sLT5Db2xsYXRpb24gKSApIHsKCQkJCWNvbnRpbnVlOwoJC
Ql9CgoJCQlpZiAoICEgaW5fYXJyYXkoICRjb2wtPkNvbGxhdGlvbiwgYXJyYXkoICd1dGY4X2dlbmVyYWxf
Y2knLCAndXRmOF9iaW4nLCAndXRmOG1iNF9nZW5lcmFsX2NpJywgJ3V0ZjhtYjRfYmluJyApLCB0cnVlICk
gKSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoJCXJldHVybiB0cnVlOwoJfQoKCS8qKgoJICogU3
RyaXBzIGFueSBpbnZhbGlkIGNoYXJhY3RlcnMgYmFzZWQgb24gdmFsdWUvY2hhcnNldCBwYWlycy4KCSAqC
gkgKiBAc2luY2UgNC4yLjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKgoJICogQHBhcmFtIGFycmF5ICRk
YXRhIEFycmF5IG9mIHZhbHVlIGFycmF5cy4gRWFjaCB2YWx1ZSBhcnJheSBoYXMgdGhlIGtleXMKCSAqICA
gICAgICAgICAgICAgICAgICAndmFsdWUnIGFuZCAnY2hhcnNldCcuIEFuIG9wdGlvbmFsICdhc2NpaScga2
V5IGNhbiBiZQoJICogICAgICAgICAgICAgICAgICAgIHNldCB0byBmYWxzZSB0byBhdm9pZCByZWR1bmRhb
nQgQVNDSUkgY2hlY2tzLgoJICogQHJldHVybiBhcnJheXxXUF9FcnJvciBUaGUgJGRhdGEgcGFyYW1ldGVy
LCB3aXRoIGludmFsaWQgY2hhcmFjdGVycyByZW1vdmVkIGZyb20KCSAqICAgICAgICAgICAgICAgICAgICA
gICAgZWFjaCB2YWx1ZS4gVGhpcyB3b3JrcyBhcyBhIHBhc3N0aHJvdWdoOiBhbnkgYWRkaXRpb25hbCBrZX
lzCgkgKiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2ggYXMgJ2ZpZWxkJyBhcmUgcmV0YWluZWQgaW4gZ
WFjaCB2YWx1ZSBhcnJheS4gSWYgd2UgY2Fubm90CgkgKiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92
ZSBpbnZhbGlkIGNoYXJhY3RlcnMsIGEgV1BfRXJyb3Igb2JqZWN0IGlzIHJldHVybmVkLgoJICovCglwcm9
0ZWN0ZWQgZnVuY3Rpb24gc3RyaXBfaW52YWxpZF90ZXh0KCAkZGF0YSApIHsKCQkkZGJfY2hlY2tfc3RyaW
5nID0gZmFsc2U7CgoJCWZvcmVhY2ggKCAkZGF0YSBhcyAmJHZhbHVlICkgewoJCQkkY2hhcnNldCA9ICR2Y
Wx1ZVsnY2hhcnNldCddOwoKCQkJaWYgKCBpc19hcnJheSggJHZhbHVlWydsZW5ndGgnXSApICkgewoJCQkJ
JGxlbmd0aCA9ICR2YWx1ZVsnbGVuZ3RoJ11bJ2xlbmd0aCddOwoJCQkJJHRydW5jYXRlX2J5X2J5dGVfbGV
uZ3RoID0gJ2J5dGUnID09PSAkdmFsdWVbJ2xlbmd0aCddWyd0eXBlJ107CgkJCX0gZWxzZSB7CgkJCQkkbG
VuZ3RoID0gZmFsc2U7CgkJCQkvLyBTaW5jZSB3ZSBoYXZlIG5vIGxlbmd0aCwgd2UnbGwgbmV2ZXIgdHJ1b
mNhdGUuCgkJCQkvLyBJbml0aWFsaXplIHRoZSB2YXJpYWJsZSB0byBmYWxzZS4gdHJ1ZSB3b3VsZCB0YWtl
IHVzCgkJCQkvLyB0aHJvdWdoIGFuIHVubmVjZXNzYXJ5IChmb3IgdGhpcyBjYXNlKSBjb2RlcGF0aCBiZWx
vdy4KCQkJCSR0cnVuY2F0ZV9ieV9ieXRlX2xlbmd0aCA9IGZhbHNlOwoJCQl9CgoJCQkvLyBUaGVyZSdzIG
5vIGNoYXJzZXQgdG8gd29yayB3aXRoLgoJCQlpZiAoIGZhbHNlID09PSAkY2hhcnNldCApIHsKCQkJCWNvb
nRpbnVlOwoJCQl9CgoJCQkvLyBDb2x1bW4gaXNuJ3QgYSBzdHJpbmcuCgkJCWlmICggISBpc19zdHJpbmco
ICR2YWx1ZVsndmFsdWUnXSApICkgewoJCQkJY29udGludWU7CgkJCX0KCgkJCSRuZWVkc192YWxpZGF0aW9
uID0gdHJ1ZTsKCQkJaWYgKAoJCQkJLy8gbGF0aW4xIGNhbiBzdG9yZSBhbnkgYnl0ZSBzZXF1ZW5jZQoJCQ
kJJ2xhdGluMScgPT09ICRjaGFyc2V0CgkJCXx8CgkJCQkvLyBBU0NJSSBpcyBhbHdheXMgT0suCgkJCQkoI
CEgaXNzZXQoICR2YWx1ZVsnYXNjaWknXSApICYmICR0aGlzLT5jaGVja19hc2NpaSggJHZhbHVlWyd2YWx1
ZSddICkgKQoJCQkpIHsKCQkJCSR0cnVuY2F0ZV9ieV9ieXRlX2xlbmd0aCA9IHRydWU7CgkJCQkkbmVlZHN
fdmFsaWRhdGlvbiA9IGZhbHNlOwoJCQl9CgoJCQlpZiAoICR0cnVuY2F0ZV9ieV9ieXRlX2xlbmd0aCApIH
sKCQkJCW1ic3RyaW5nX2JpbmFyeV9zYWZlX2VuY29kaW5nKCk7CgkJCQlpZiAoIGZhbHNlICE9PSAkbGVuZ
3RoICYmIHN0cmxlbiggJHZhbHVlWyd2YWx1ZSddICkgPiAkbGVuZ3RoICkgewoJCQkJCSR2YWx1ZVsndmFs
dWUnXSA9IHN1YnN0ciggJHZhbHVlWyd2YWx1ZSddLCAwLCAkbGVuZ3RoICk7CgkJCQl9CgkJCQlyZXNldF9
tYnN0cmluZ19lbmNvZGluZygpOwoKCQkJCWlmICggISAkbmVlZHNfdmFsaWRhdGlvbiApIHsKCQkJCQljb2
50aW51ZTsKCQkJCX0KCQkJfQoKCQkJLy8gdXRmOCBjYW4gYmUgaGFuZGxlZCBieSByZWdleCwgd2hpY2gga
XMgYSBidW5jaCBmYXN0ZXIgdGhhbiBhIERCIGxvb2t1cC4KCQkJaWYgKCAoICd1dGY4JyA9PT0gJGNoYXJz
ZXQgfHwgJ3V0ZjhtYjMnID09PSAkY2hhcnNldCB8fCAndXRmOG1iNCcgPT09ICRjaGFyc2V0ICkgJiYgZnV
uY3Rpb25fZXhpc3RzKCAnbWJfc3RybGVuJyApICkgewoJCQkJJHJlZ2V4ID0gJy8KCQkJCQkoCgkJCQkJCS
g/OiBbXHgwMC1ceDdGXSAgICAgICAgICAgICAgICAgICMgc2luZ2xlLWJ5dGUgc2VxdWVuY2VzICAgMHh4e
Hh4eHgKCQkJCQkJfCAgIFtceEMyLVx4REZdW1x4ODAtXHhCRl0gICAgICAgIyBkb3VibGUtYnl0ZSBzZXF1
ZW5jZXMgICAxMTB4eHh4eCAxMHh4eHh4eAoJCQkJCQl8ICAgXHhFMFtceEEwLVx4QkZdW1x4ODAtXHhCRl0
gICAjIHRyaXBsZS1ieXRlIHNlcXVlbmNlcyAgIDExMTB4eHh4IDEweHh4eHh4ICogMgoJCQkJCQl8ICAgW1
x4RTEtXHhFQ11bXHg4MC1ceEJGXXsyfQoJCQkJCQl8ICAgXHhFRFtceDgwLVx4OUZdW1x4ODAtXHhCRl0KC
QkJCQkJfCAgIFtceEVFLVx4RUZdW1x4ODAtXHhCRl17Mn0nOwoKCQkJCWlmICggJ3V0ZjhtYjQnID09PSAk
Y2hhcnNldCApIHsKCQkJCQkkcmVnZXggLj0gJwoJCQkJCQl8ICAgIFx4RjBbXHg5MC1ceEJGXVtceDgwLVx
4QkZdezJ9ICMgZm91ci1ieXRlIHNlcXVlbmNlcyAgIDExMTEweHh4IDEweHh4eHh4ICogMwoJCQkJCQl8IC
AgIFtceEYxLVx4RjNdW1x4ODAtXHhCRl17M30KCQkJCQkJfCAgICBceEY0W1x4ODAtXHg4Rl1bXHg4MC1ce
EJGXXsyfQoJCQkJCSc7CgkJCQl9CgoJCQkJJHJlZ2V4IC49ICcpezEsNDB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIC4uLm9uZSBvciBtb3JlIHRpbWVzCgkJCQkJKQoJCQkJCXwgLiAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAjIGFueXRoaW5nIGVsc2UKCQkJCQkveCc7CgkJCQkkdmFsdWVbJ3ZhbHVlJ1
0gPSBwcmVnX3JlcGxhY2UoICRyZWdleCwgJyQxJywgJHZhbHVlWyd2YWx1ZSddICk7CgoKCQkJCWlmICggZ
mFsc2UgIT09ICRsZW5ndGggJiYgbWJfc3RybGVuKCAkdmFsdWVbJ3ZhbHVlJ10sICdVVEYtOCcgKSA+ICRs
ZW5ndGggKSB7CgkJCQkJJHZhbHVlWyd2YWx1ZSddID0gbWJfc3Vic3RyKCAkdmFsdWVbJ3ZhbHVlJ10sIDA
sICRsZW5ndGgsICdVVEYtOCcgKTsKCQkJCX0KCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkvLyBXZSBjb3VsZG
4ndCB1c2UgYW55IGxvY2FsIGNvbnZlcnNpb25zLCBzZW5kIGl0IHRvIHRoZSBEQi4KCQkJJHZhbHVlWydkY
iddID0gJGRiX2NoZWNrX3N0cmluZyA9IHRydWU7CgkJfQoJCXVuc2V0KCAkdmFsdWUgKTsgLy8gUmVtb3Zl
IGJ5IHJlZmVyZW5jZS4KCgkJaWYgKCAkZGJfY2hlY2tfc3RyaW5nICkgewoJCQkkcXVlcmllcyA9IGFycmF
5KCk7CgkJCWZvcmVhY2ggKCAkZGF0YSBhcyAkY29sID0+ICR2YWx1ZSApIHsKCQkJCWlmICggISBlbXB0eS
ggJHZhbHVlWydkYiddICkgKSB7CgkJCQkJLy8gV2UncmUgZ29pbmcgdG8gbmVlZCB0byB0cnVuY2F0ZSBie
SBjaGFyYWN0ZXJzIG9yIGJ5dGVzLCBkZXBlbmRpbmcgb24gdGhlIGxlbmd0aCB2YWx1ZSB3ZSBoYXZlLgoJ
CQkJCWlmICggJ2J5dGUnID09PSAkdmFsdWVbJ2xlbmd0aCddWyd0eXBlJ10gKSB7CgkJCQkJCS8vIFVzaW5
nIGJpbmFyeSBjYXVzZXMgTEVGVCgpIHRvIHRydW5jYXRlIGJ5IGJ5dGVzLgoJCQkJCQkkY2hhcnNldCA9IC
diaW5hcnknOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRjaGFyc2V0ID0gJHZhbHVlWydjaGFyc2V0J107CgkJC
QkJfQoKCQkJCQlpZiAoICR0aGlzLT5jaGFyc2V0ICkgewoJCQkJCQkkY29ubmVjdGlvbl9jaGFyc2V0ID0g
JHRoaXMtPmNoYXJzZXQ7CgkJCQkJfSBlbHNlIHsKCQkJCQkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHs
KCQkJCQkJCSRjb25uZWN0aW9uX2NoYXJzZXQgPSBteXNxbGlfY2hhcmFjdGVyX3NldF9uYW1lKCAkdGhpcy
0+ZGJoICk7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQkkY29ubmVjdGlvbl9jaGFyc2V0ID0gbXlzcWxfY2xpZ
W50X2VuY29kaW5nKCk7CgkJCQkJCX0KCQkJCQl9CgoJCQkJCWlmICggaXNfYXJyYXkoICR2YWx1ZVsnbGVu
Z3RoJ10gKSApIHsKCQkJCQkJJGxlbmd0aCA9IHNwcmludGYoICclLjBmJywgJHZhbHVlWydsZW5ndGgnXVs
nbGVuZ3RoJ10gKTsKCQkJCQkJJHF1ZXJpZXNbICRjb2wgXSA9ICR0aGlzLT5wcmVwYXJlKCAiQ09OVkVSVC
ggTEVGVCggQ09OVkVSVCggJXMgVVNJTkcgJGNoYXJzZXQgKSwgJGxlbmd0aCApIFVTSU5HICRjb25uZWN0a
W9uX2NoYXJzZXQgKSIsICR2YWx1ZVsndmFsdWUnXSApOwoJCQkJCX0gZWxzZSBpZiAoICdiaW5hcnknICE9
PSAkY2hhcnNldCApIHsKCQkJCQkJLy8gSWYgd2UgZG9uJ3QgaGF2ZSBhIGxlbmd0aCwgdGhlcmUncyBubyB
uZWVkIHRvIGNvbnZlcnQgYmluYXJ5IC0gaXQgd2lsbCBhbHdheXMgcmV0dXJuIHRoZSBzYW1lIHJlc3VsdC
4KCQkJCQkJJHF1ZXJpZXNbICRjb2wgXSA9ICR0aGlzLT5wcmVwYXJlKCAiQ09OVkVSVCggQ09OVkVSVCggJ
XMgVVNJTkcgJGNoYXJzZXQgKSBVU0lORyAkY29ubmVjdGlvbl9jaGFyc2V0ICkiLCAkdmFsdWVbJ3ZhbHVl
J10gKTsKCQkJCQl9CgoJCQkJCXVuc2V0KCAkZGF0YVsgJGNvbCBdWydkYiddICk7CgkJCQl9CgkJCX0KCgk
JCSRzcWwgPSBhcnJheSgpOwoJCQlmb3JlYWNoICggJHF1ZXJpZXMgYXMgJGNvbHVtbiA9PiAkcXVlcnkgKS
B7CgkJCQlpZiAoICEgJHF1ZXJ5ICkgewoJCQkJCWNvbnRpbnVlOwoJCQkJfQoKCQkJCSRzcWxbXSA9ICRxd
WVyeSAuICIgQVMgeF8kY29sdW1uIjsKCQkJfQoKCQkJJHRoaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnkgPSBm
YWxzZTsKCQkJJHJvdyA9ICR0aGlzLT5nZXRfcm93KCAiU0VMRUNUICIgLiBpbXBsb2RlKCAnLCAnLCAkc3F
sICksIEFSUkFZX0EgKTsKCQkJaWYgKCAhICRyb3cgKSB7CgkJCQlyZXR1cm4gbmV3IFdQX0Vycm9yKCAnd3
BkYl9zdHJpcF9pbnZhbGlkX3RleHRfZmFpbHVyZScgKTsKCQkJfQoKCQkJZm9yZWFjaCAoIGFycmF5X2tle
XMoICRkYXRhICkgYXMgJGNvbHVtbiApIHsKCQkJCWlmICggaXNzZXQoICRyb3dbInhfJGNvbHVtbiJdICkg
KSB7CgkJCQkJJGRhdGFbICRjb2x1bW4gXVsndmFsdWUnXSA9ICRyb3dbInhfJGNvbHVtbiJdOwoJCQkJfQo
JCQl9CgkJfQoKCQlyZXR1cm4gJGRhdGE7Cgl9CgoJLyoqCgkgKiBTdHJpcHMgYW55IGludmFsaWQgY2hhcm
FjdGVycyBmcm9tIHRoZSBxdWVyeS4KCSAqCgkgKiBAc2luY2UgNC4yLjAKCSAqIEBhY2Nlc3MgcHJvdGVjd
GVkCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcXVlcnkgUXVlcnkgdG8gY29udmVydC4KCSAqIEByZXR1cm4g
c3RyaW5nfFdQX0Vycm9yIFRoZSBjb252ZXJ0ZWQgcXVlcnksIG9yIGEgV1BfRXJyb3Igb2JqZWN0IGlmIHR
oZSBjb252ZXJzaW9uIGZhaWxzLgoJICovCglwcm90ZWN0ZWQgZnVuY3Rpb24gc3RyaXBfaW52YWxpZF90ZX
h0X2Zyb21fcXVlcnkoICRxdWVyeSApIHsKCQkvLyBXZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSBjb2xsY
XRpb24gZm9yIHF1ZXJpZXMgdGhhdCBkb24ndCByZWFkIGRhdGEuCgkJJHRyaW1tZWRfcXVlcnkgPSBsdHJp
bSggJHF1ZXJ5LCAiXHJcblx0ICgiICk7CgkJaWYgKCBwcmVnX21hdGNoKCAnL14oPzpTSE9XfERFU0NSSUJ
FfERFU0N8RVhQTEFJTnxDUkVBVEUpXHMvaScsICR0cmltbWVkX3F1ZXJ5ICkgKSB7CgkJCXJldHVybiAkcX
Vlcnk7CgkJfQoKCQkkdGFibGUgPSAkdGhpcy0+Z2V0X3RhYmxlX2Zyb21fcXVlcnkoICRxdWVyeSApOwoJC
WlmICggJHRhYmxlICkgewoJCQkkY2hhcnNldCA9ICR0aGlzLT5nZXRfdGFibGVfY2hhcnNldCggJHRhYmxl
ICk7CgkJCWlmICggaXNfd3BfZXJyb3IoICRjaGFyc2V0ICkgKSB7CgkJCQlyZXR1cm4gJGNoYXJzZXQ7Cgk
JCX0KCgkJCS8vIFdlIGNhbid0IHJlbGlhYmx5IHN0cmlwIHRleHQgZnJvbSB0YWJsZXMgY29udGFpbmluZy
BiaW5hcnkvYmxvYiBjb2x1bW5zCgkJCWlmICggJ2JpbmFyeScgPT09ICRjaGFyc2V0ICkgewoJCQkJcmV0d
XJuICRxdWVyeTsKCQkJfQoJCX0gZWxzZSB7CgkJCSRjaGFyc2V0ID0gJHRoaXMtPmNoYXJzZXQ7CgkJfQoK
CQkkZGF0YSA9IGFycmF5KAoJCQkndmFsdWUnICAgPT4gJHF1ZXJ5LAoJCQknY2hhcnNldCcgPT4gJGNoYXJ
zZXQsCgkJCSdhc2NpaScgICA9PiBmYWxzZSwKCQkJJ2xlbmd0aCcgID0+IGZhbHNlLAoJCSk7CgoJCSRkYX
RhID0gJHRoaXMtPnN0cmlwX2ludmFsaWRfdGV4dCggYXJyYXkoICRkYXRhICkgKTsKCQlpZiAoIGlzX3dwX
2Vycm9yKCAkZGF0YSApICkgewoJCQlyZXR1cm4gJGRhdGE7CgkJfQoKCQlyZXR1cm4gJGRhdGFbMF1bJ3Zh
bHVlJ107Cgl9CgoJLyoqCgkgKiBTdHJpcHMgYW55IGludmFsaWQgY2hhcmFjdGVycyBmcm9tIHRoZSBzdHJ
pbmcgZm9yIGEgZ2l2ZW4gdGFibGUgYW5kIGNvbHVtbi4KCSAqCgkgKiBAc2luY2UgNC4yLjAKCSAqIEBhY2
Nlc3MgcHVibGljCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdGFibGUgIFRhYmxlIG5hbWUuCgkgKiBAcGFyY
W0gc3RyaW5nICRjb2x1bW4gQ29sdW1uIG5hbWUuCgkgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZSAgVGhlIHRl
eHQgdG8gY2hlY2suCgkgKiBAcmV0dXJuIHN0cmluZ3xXUF9FcnJvciBUaGUgY29udmVydGVkIHN0cmluZyw
gb3IgYSBXUF9FcnJvciBvYmplY3QgaWYgdGhlIGNvbnZlcnNpb24gZmFpbHMuCgkgKi8KCXB1YmxpYyBmdW
5jdGlvbiBzdHJpcF9pbnZhbGlkX3RleHRfZm9yX2NvbHVtbiggJHRhYmxlLCAkY29sdW1uLCAkdmFsdWUgK
SB7CgkJaWYgKCAhIGlzX3N0cmluZyggJHZhbHVl
ICkgKSB7CgkJCXJldHVybiAkdmFsdWU7CgkJfQoKCQkkY2hhcnNldCA9ICR0aGlzLT5nZXRfY29sX2NoYXJ
zZXQoICR0YWJsZSwgJGNvbHVtbiApOwoJCWlmICggISAkY2hhcnNldCApIHsKCQkJLy8gTm90IGEgc3RyaW
5nIGNvbHVtbi4KCQkJcmV0dXJuICR2YWx1ZTsKCQl9IGVsc2VpZiAoIGlzX3dwX2Vycm9yKCAkY2hhcnNld
CApICkgewoJCQkvLyBCYWlsIG9uIHJlYWwgZXJyb3JzLgoJCQlyZXR1cm4gJGNoYXJzZXQ7CgkJfQoKCQkk
ZGF0YSA9IGFycmF5KAoJCQkkY29sdW1uID0+IGFycmF5KAoJCQkJJ3ZhbHVlJyAgID0+ICR2YWx1ZSwKCQk
JCSdjaGFyc2V0JyA9PiAkY2hhcnNldCwKCQkJCSdsZW5ndGgnICA9PiAkdGhpcy0+Z2V0X2NvbF9sZW5ndG
goICR0YWJsZSwgJGNvbHVtbiApLAoJCQkpCgkJKTsKCgkJJGRhdGEgPSAkdGhpcy0+c3RyaXBfaW52YWxpZ
F90ZXh0KCAkZGF0YSApOwoJCWlmICggaXNfd3BfZXJyb3IoICRkYXRhICkgKSB7CgkJCXJldHVybiAkZGF0
YTsKCQl9CgoJCXJldHVybiAkZGF0YVsgJGNvbHVtbiBdWyd2YWx1ZSddOwoJfQoKCS8qKgoJICogRmluZCB
0aGUgZmlyc3QgdGFibGUgbmFtZSByZWZlcmVuY2VkIGluIGEgcXVlcnkuCgkgKgoJICogQHNpbmNlIDQuMi
4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5IFRoZSBxdWVye
SB0byBzZWFyY2guCgkgKiBAcmV0dXJuIHN0cmluZ3xmYWxzZSAkdGFibGUgVGhlIHRhYmxlIG5hbWUgZm91
bmQsIG9yIGZhbHNlIGlmIGEgdGFibGUgY291bGRuJ3QgYmUgZm91bmQuCgkgKi8KCXByb3RlY3RlZCBmdW5
jdGlvbiBnZXRfdGFibGVfZnJvbV9xdWVyeSggJHF1ZXJ5ICkgewoJCS8vIFJlbW92ZSBjaGFyYWN0ZXJzIH
RoYXQgY2FuIGxlZ2FsbHkgdHJhaWwgdGhlIHRhYmxlIG5hbWUuCgkJJHF1ZXJ5ID0gcnRyaW0oICRxdWVye
SwgJzsvLSMnICk7CgoJCS8vIEFsbG93IChzZWxlY3QuLi4pIHVuaW9uIFsuLi5dIHN0eWxlIHF1ZXJpZXMu
IFVzZSB0aGUgZmlyc3QgcXVlcnkncyB0YWJsZSBuYW1lLgoJCSRxdWVyeSA9IGx0cmltKCAkcXVlcnksICJ
cclxuXHQgKCIgKTsKCgkJLy8gU3RyaXAgZXZlcnl0aGluZyBiZXR3ZWVuIHBhcmVudGhlc2VzIGV4Y2VwdC
BuZXN0ZWQgc2VsZWN0cy4KCQkkcXVlcnkgPSBwcmVnX3JlcGxhY2UoICcvXCgoPyFccypzZWxlY3QpW14oX
So/XCkvaXMnLCAnKCknLCAkcXVlcnkgKTsKCgkJLy8gUXVpY2tseSBtYXRjaCBtb3N0IGNvbW1vbiBxdWVy
aWVzLgoJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqKD86JwoJCQkJLiAnU0VMRUNULio/XHMrRlJPTScKCQk
JCS4gJ3xJTlNFUlQoPzpccytMT1dfUFJJT1JJVFl8XHMrREVMQVlFRHxccytISUdIX1BSSU9SSVRZKT8oPz
pccytJR05PUkUpPyg/OlxzK0lOVE8pPycKCQkJCS4gJ3xSRVBMQUNFKD86XHMrTE9XX1BSSU9SSVRZfFxzK
0RFTEFZRUQpPyg/OlxzK0lOVE8pPycKCQkJCS4gJ3xVUERBVEUoPzpccytMT1dfUFJJT1JJVFkpPyg/Olxz
K0lHTk9SRSk/JwoJCQkJLiAnfERFTEVURSg/OlxzK0xPV19QUklPUklUWXxccytRVUlDS3xccytJR05PUkU
pKig/Oi4rP0ZST00pPycKCQkJCS4gJylccysoKD86WzAtOWEtekEtWiRfLmAtXXxbXHhDMi1ceERGXVtceD
gwLVx4QkZdKSspL2lzJywgJHF1ZXJ5LCAkbWF5YmUgKSApIHsKCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCAnY
CcsICcnLCAkbWF5YmVbMV0gKTsKCQl9CgoJCS8vIFNIT1cgVEFCTEUgU1RBVFVTIGFuZCBTSE9XIFRBQkxF
UyBXSEVSRSBOYW1lID0gJ3dwX3Bvc3RzJwoJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqU0hPV1xzKyg/OlR
BQkxFXHMrU1RBVFVTfCg/OkZVTExccyspP1RBQkxFUykuK1dIRVJFXHMrTmFtZVxzKj1ccyooInxcJykoKD
86WzAtOWEtekEtWiRfLi1dfFtceEMyLVx4REZdW1x4ODAtXHhCRl0pKylcXDEvaXMnLCAkcXVlcnksICRtY
XliZSApICkgewoJCQlyZXR1cm4gJG1heWJlWzJdOwoJCX0KCgkJLy8gU0hPVyBUQUJMRSBTVEFUVVMgTElL
RSBhbmQgU0hPVyBUQUJMRVMgTElLRSAnd3BcXzEyM1xfJScKCQkvLyBUaGlzIHF1b3RlZCBMSUtFIG9wZXJ
hbmQgc2VsZG9tIGhvbGRzIGEgZnVsbCB0YWJsZSBuYW1lLgoJCS8vIEl0IGlzIHVzdWFsbHkgYSBwYXR0ZX
JuIGZvciBtYXRjaGluZyBhIHByZWZpeCBzbyB3ZSBqdXN0CgkJLy8gc3RyaXAgdGhlIHRyYWlsaW5nICUgY
W5kIHVuZXNjYXBlIHRoZSBfIHRvIGdldCAnd3BfMTIzXycKCQkvLyB3aGljaCBkcm9wLWlucyBjYW4gdXNl
IGZvciByb3V0aW5nIHRoZXNlIFNRTCBzdGF0ZW1lbnRzLgoJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqU0h
PV1xzKyg/OlRBQkxFXHMrU1RBVFVTfCg/OkZVTExccyspP1RBQkxFUylccysoPzpXSEVSRVxzK05hbWVccy
spP0xJS0VccyooInxcJykoKD86W1xcXFwwLTlhLXpBLVokXy4tXXxbXHhDMi1ceERGXVtceDgwLVx4QkZdK
SspJT9cXDEvaXMnLCAkcXVlcnksICRtYXliZSApICkgewoJCQlyZXR1cm4gc3RyX3JlcGxhY2UoICdcXF8n
LCAnXycsICRtYXliZVsyXSApOwoJCX0KCgkJLy8gQmlnIHBhdHRlcm4gZm9yIHRoZSByZXN0IG9mIHRoZSB
0YWJsZS1yZWxhdGVkIHF1ZXJpZXMuCgkJaWYgKCBwcmVnX21hdGNoKCAnL15ccyooPzonCgkJCQkuICcoPz
pFWFBMQUlOXHMrKD86RVhURU5ERURccyspPyk/U0VMRUNULio/XHMrRlJPTScKCQkJCS4gJ3xERVNDUklCR
XxERVNDfEVYUExBSU58SEFORExFUicKCQkJCS4gJ3woPzpMT0NLfFVOTE9DSylccytUQUJMRSg/OlMpPycK
CQkJCS4gJ3woPzpSRU5BTUV8T1BUSU1JWkV8QkFDS1VQfFJFU1RPUkV8Q0hFQ0t8Q0hFQ0tTVU18QU5BTFl
aRXxSRVBBSVIpLipccytUQUJMRScKCQkJCS4gJ3xUUlVOQ0FURSg/OlxzK1RBQkxFKT8nCgkJCQkuICd8Q1
JFQVRFKD86XHMrVEVNUE9SQVJZKT9ccytUQUJMRSg/OlxzK0lGXHMrTk9UXHMrRVhJU1RTKT8nCgkJCQkuI
Cd8QUxURVIoPzpccytJR05PUkUpP1xzK1RBQkxFJwoJCQkJLiAnfERST1BccytUQUJMRSg/OlxzK0lGXHMr
RVhJU1RTKT8nCgkJCQkuICd8Q1JFQVRFKD86XHMrXHcrKT9ccytJTkRFWC4qXHMrT04nCgkJCQkuICd8RFJ
PUFxzK0lOREVYLipccytPTicKCQkJCS4gJ3xMT0FEXHMrREFUQS4qSU5GSUxFLipJTlRPXHMrVEFCTEUnCg
kJCQkuICd8KD86R1JBTlR8UkVWT0tFKS4qT05ccytUQUJMRScKCQkJCS4gJ3xTSE9XXHMrKD86LipGUk9Nf
C4qVEFCTEUpJwoJCQkJLiAnKVxzK1woKlxzKigoPzpbMC05YS16QS1aJF8uYC1dfFtceEMyLVx4REZdW1x4
ODAtXHhCRl0pKylccypcKSovaXMnLCAkcXVlcnksICRtYXliZSApICkgewoJCQlyZXR1cm4gc3RyX3JlcGx
hY2UoICdgJywgJycsICRtYXliZVsxXSApOwoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogTG
9hZCB0aGUgY29sdW1uIG1ldGFkYXRhIGZyb20gdGhlIGxhc3QgcXVlcnkuCgkgKgoJICogQHNpbmNlIDMuN
S4wCgkgKgoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIGxvYWRfY29s
X2luZm8oKSB7CgkJaWYgKCAkdGhpcy0+Y29sX2luZm8gKQoJCQlyZXR1cm47CgoJCWlmICggJHRoaXMtPnV
zZV9teXNxbGkgKSB7CgkJCSRudW1fZmllbGRzID0gbXlzcWxpX251bV9maWVsZHMoICR0aGlzLT5yZXN1bH
QgKTsKCQkJZm9yICggJGkgPSAwOyAkaSA8ICRudW1fZmllbGRzOyAkaSsrICkgewoJCQkJJHRoaXMtPmNvb
F9pbmZvWyAkaSBdID0gbXlzcWxpX2ZldGNoX2ZpZWxkKCAkdGhpcy0+cmVzdWx0ICk7CgkJCX0KCQl9IGVs
c2UgewoJCQkkbnVtX2ZpZWxkcyA9IG15c3FsX251bV9maWVsZHMoICR0aGlzLT5yZXN1bHQgKTsKCQkJZm9
yICggJGkgPSAwOyAkaSA8ICRudW1fZmllbGRzOyAkaSsrICkgewoJCQkJJHRoaXMtPmNvbF9pbmZvWyAkaS
BdID0gbXlzcWxfZmV0Y2hfZmllbGQoICR0aGlzLT5yZXN1bHQsICRpICk7CgkJCX0KCQl9Cgl9CgoJLyoqC
gkgKiBSZXRyaWV2ZSBjb2x1bW4gbWV0YWRhdGEgZnJvbSB0aGUgbGFzdCBxdWVyeS4KCSAqCgkgKiBAc2lu
Y2UgMC43MQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGluZm9fdHlwZSAgT3B0aW9uYWwuIFR5cGUgb25lIG9
mIG5hbWUsIHRhYmxlLCBkZWYsIG1heF9sZW5ndGgsIG5vdF9udWxsLCBwcmltYXJ5X2tleSwgbXVsdGlwbG
Vfa2V5LCB1bmlxdWVfa2V5LCBudW1lcmljLCBibG9iLCB0eXBlLCB1bnNpZ25lZCwgemVyb2ZpbGwKCSAqI
EBwYXJhbSBpbnQgICAgJGNvbF9vZmZzZXQgT3B0aW9uYWwuIDA6IGNvbCBuYW1lLiAxOiB3aGljaCB0YWJs
ZSB0aGUgY29sJ3MgaW4uIDI6IGNvbCdzIG1heCBsZW5ndGguIDM6IGlmIHRoZSBjb2wgaXMgbnVtZXJpYy4
gNDogY29sJ3MgdHlwZQoJICogQHJldHVybiBtaXhlZCBDb2x1bW4gUmVzdWx0cwoJICovCglwdWJsaWMgZn
VuY3Rpb24gZ2V0X2NvbF9pbmZvKCAkaW5mb190eXBlID0gJ25hbWUnLCAkY29sX29mZnNldCA9IC0xICkge
woJCSR0aGlzLT5sb2FkX2NvbF9pbmZvKCk7CgoJCWlmICggJHRoaXMtPmNvbF9pbmZvICkgewoJCQlpZiAo
ICRjb2xfb2Zmc2V0ID09IC0xICkgewoJCQkJJGkgPSAwOwoJCQkJJG5ld19hcnJheSA9IGFycmF5KCk7Cgk
JCQlmb3JlYWNoICggKGFycmF5KSAkdGhpcy0+Y29sX2luZm8gYXMgJGNvbCApIHsKCQkJCQkkbmV3X2Fycm
F5WyRpXSA9ICRjb2wtPnskaW5mb190eXBlfTsKCQkJCQkkaSsrOwoJCQkJfQoJCQkJcmV0dXJuICRuZXdfY
XJyYXk7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gJHRoaXMtPmNvbF9pbmZvWyRjb2xfb2Zmc2V0XS0+eyRp
bmZvX3R5cGV9OwoJCQl9CgkJfQoJfQoKCS8qKgoJICogU3RhcnRzIHRoZSB0aW1lciwgZm9yIGRlYnVnZ2l
uZyBwdXJwb3Nlcy4KCSAqCgkgKiBAc2luY2UgMS41LjAKCSAqCgkgKiBAcmV0dXJuIHRydWUKCSAqLwoJcH
VibGljIGZ1bmN0aW9uIHRpbWVyX3N0YXJ0KCkgewoJCSR0aGlzLT50aW1lX3N0YXJ0ID0gbWljcm90aW1lK
CB0cnVlICk7CgkJcmV0dXJuIHRydWU7Cgl9CgoJLyoqCgkgKiBTdG9wcyB0aGUgZGVidWdnaW5nIHRpbWVy
LgoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICoKCSAqIEByZXR1cm4gZmxvYXQgVG90YWwgdGltZSBzcGVudCB
vbiB0aGUgcXVlcnksIGluIHNlY29uZHMKCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRpbWVyX3N0b3AoKSB7Cg
kJcmV0dXJuICggbWljcm90aW1lKCB0cnVlICkgLSAkdGhpcy0+dGltZV9zdGFydCApOwoJfQoKCS8qKgoJI
CogV3JhcHMgZXJyb3JzIGluIGEgbmljZSBoZWFkZXIgYW5kIGZvb3RlciBhbmQgZGllcy4KCSAqCgkgKiBX
aWxsIG5vdCBkaWUgaWYgd3BkYjo6JHNob3dfZXJyb3JzIGlzIGZhbHNlLgoJICoKCSAqIEBzaW5jZSAxLjU
uMAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UgICAgVGhlIEVycm9yIG1lc3NhZ2UKCSAqIEBwYX
JhbSBzdHJpbmcgJGVycm9yX2NvZGUgT3B0aW9uYWwuIEEgQ29tcHV0ZXIgcmVhZGFibGUgc3RyaW5nIHRvI
GlkZW50aWZ5IHRoZSBlcnJvci4KCSAqIEByZXR1cm4gZmFsc2V8dm9pZAoJICovCglwdWJsaWMgZnVuY3Rp
b24gYmFpbCggJG1lc3NhZ2UsICRlcnJvcl9jb2RlID0gJzUwMCcgKSB7CgkJaWYgKCAhJHRoaXMtPnNob3d
fZXJyb3JzICkgewoJCQlpZiAoIGNsYXNzX2V4aXN0cyggJ1dQX0Vycm9yJywgZmFsc2UgKSApIHsKCQkJCS
R0aGlzLT5lcnJvciA9IG5ldyBXUF9FcnJvcigkZXJyb3JfY29kZSwgJG1lc3NhZ2UpOwoJCQl9IGVsc2Uge
woJCQkJJHRoaXMtPmVycm9yID0gJG1lc3NhZ2U7CgkJCX0KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQl3cF9k
aWUoJG1lc3NhZ2UpOwoJfQoKCgkvKioKCSAqIENsb3NlcyB0aGUgY3VycmVudCBkYXRhYmFzZSBjb25uZWN
0aW9uLgoJICoKCSAqIEBzaW5jZSA0LjUuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqCgkgKiBAcmV0dXJuIG
Jvb2wgVHJ1ZSBpZiB0aGUgY29ubmVjdGlvbiB3YXMgc3VjY2Vzc2Z1bGx5IGNsb3NlZCwgZmFsc2UgaWYga
XQgd2Fzbid0LAoJICogICAgICAgICAgICAgIG9yIHRoZSBjb25uZWN0aW9uIGRvZXNuJ3QgZXhpc3QuCgkg
Ki8KCXB1YmxpYyBmdW5jdGlvbiBjbG9zZSgpIHsKCQlpZiAoICEgJHRoaXMtPmRiaCApIHsKCQkJcmV0dXJ
uIGZhbHNlOwoJCX0KCgkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJJGNsb3NlZCA9IG15c3FsaV
9jbG9zZSggJHRoaXMtPmRiaCApOwoJCX0gZWxzZSB7CgkJCSRjbG9zZWQgPSBteXNxbF9jbG9zZSggJHRoa
XMtPmRiaCApOwoJCX0KCgkJaWYgKCAkY2xvc2VkICkgewoJCQkkdGhpcy0+ZGJoID0gbnVsbDsKCQkJJHRo
aXMtPnJlYWR5ID0gZmFsc2U7CgkJCSR0aGlzLT5oYXNfY29ubmVjdGVkID0gZmFsc2U7CgkJfQoKCQlyZXR
1cm4gJGNsb3NlZDsKCX0KCgkvKioKCSAqIFdoZXRoZXIgTXlTUUwgZGF0YWJhc2UgaXMgYXQgbGVhc3QgdG
hlIHJlcXVpcmVkIG1pbmltdW0gdmVyc2lvbi4KCSAqCgkgKiBAc2luY2UgMi41LjAKCSAqCgkgKiBAZ2xvY
mFsIHN0cmluZyAkd3BfdmVyc2lvbgoJICogQGdsb2JhbCBzdHJpbmcgJHJlcXVpcmVkX215c3FsX3ZlcnNp
b24KCSAqCgkgKiBAcmV0dXJuIFdQX0Vycm9yfHZvaWQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGNoZWNrX2R
hdGFiYXNlX3ZlcnNpb24oKSB7CgkJZ2xvYmFsICR3cF92ZXJzaW9uLCAkcmVxdWlyZWRfbXlzcWxfdmVyc2
lvbjsKCQkvLyBNYWtlIHN1cmUgdGhlIHNlcnZlciBoYXMgdGhlIHJlcXVpcmVkIE15U1FMIHZlcnNpb24KC
QlpZiAoIHZlcnNpb25fY29tcGFyZSgkdGhpcy0+ZGJfdmVyc2lvbigpLCAkcmVxdWlyZWRfbXlzcWxfdmVy
c2lvbiwgJzwnKSApIHsKCQkJLyogdHJhbnNsYXRvcnM6IDE6IFdvcmRQcmVzcyB2ZXJzaW9uIG51bWJlciw
gMjogTWluaW11bSByZXF1aXJlZCBNeVNRTCB2ZXJzaW9uIG51bWJlciAqLwoJCQlyZXR1cm4gbmV3IFdQX0
Vycm9yKCdkYXRhYmFzZV92ZXJzaW9uJywgc3ByaW50ZiggX18oICc8c3Ryb25nPkVSUk9SPC9zdHJvbmc+O
iBXb3JkUHJlc3MgJTEkcyByZXF1aXJlcyBNeVNRTCAlMiRzIG9yIGhpZ2hlcicgKSwgJHdwX3ZlcnNpb24s
ICRyZXF1aXJlZF9teXNxbF92ZXJzaW9uICkpOwoJCX0KCX0KCgkvKioKCSAqIFdoZXRoZXIgdGhlIGRhdGF
iYXNlIHN1cHBvcnRzIGNvbGxhdGlvbi4KCSAqCgkgKiBDYWxsZWQgd2hlbiBXb3JkUHJlc3MgaXMgZ2VuZX
JhdGluZyB0aGUgdGFibGUgc2NoZW1lLgoJICoKCSAqIFVzZSBgd3BkYjo6aGFzX2NhcCggJ2NvbGxhdGlvb
icgKWAuCgkgKgoJICogQHNpbmNlIDIuNS4wCgkgKiBAZGVwcmVjYXRlZCAzLjUuMCBVc2Ugd3BkYjo6aGFz
X2NhcCgpCgkgKgoJICogQHJldHVybiBib29sIFRydWUgaWYgY29sbGF0aW9uIGlzIHN1cHBvcnRlZCwgZmF
sc2UgaWYgdmVyc2lvbiBkb2VzIG5vdAoJICovCglwdWJsaWMgZnVuY3Rpb24gc3VwcG9ydHNfY29sbGF0aW
9uKCkgewoJCV9kZXByZWNhdGVkX2Z1bmN0aW9uKCBfX0ZVTkNUSU9OX18sICczLjUuMCcsICd3cGRiOjpoY
XNfY2FwKCBcJ2NvbGxhdGlvblwnICknICk7CgkJcmV0dXJuICR0aGlzLT5oYXNfY2FwKCAnY29sbGF0aW9u
JyApOwoJfQoKCS8qKgoJICogVGhlIGRhdGFiYXN
lIGNoYXJhY3RlciBjb2xsYXRlLgoJICoKCSAqIEBzaW5jZSAzLjUuMAoJICoKCSAqIEByZXR1cm4gc3RyaW
5nIFRoZSBkYXRhYmFzZSBjaGFyYWN0ZXIgY29sbGF0ZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldF9ja
GFyc2V0X2NvbGxhdGUoKSB7CgkJJGNoYXJzZXRfY29sbGF0ZSA9ICcnOwoKCQlpZiAoICEgZW1wdHkoICR0
aGlzLT5jaGFyc2V0ICkgKQoJCQkkY2hhcnNldF9jb2xsYXRlID0gIkRFRkFVTFQgQ0hBUkFDVEVSIFNFVCA
kdGhpcy0+Y2hhcnNldCI7CgkJaWYgKCAhIGVtcHR5KCAkdGhpcy0+Y29sbGF0ZSApICkKCQkJJGNoYXJzZX
RfY29sbGF0ZSAuPSAiIENPTExBVEUgJHRoaXMtPmNvbGxhdGUiOwoKCQlyZXR1cm4gJGNoYXJzZXRfY29sb
GF0ZTsKCX0KCgkvKioKCSAqIERldGVybWluZSBpZiBhIGRhdGFiYXNlIHN1cHBvcnRzIGEgcGFydGljdWxh
ciBmZWF0dXJlLgoJICoKCSAqIEBzaW5jZSAyLjcuMAoJICogQHNpbmNlIDQuMS4wIEFkZGVkIHN1cHBvcnQ
gZm9yIHRoZSAndXRmOG1iNCcgZmVhdHVyZS4KCSAqIEBzaW5jZSA0LjYuMCBBZGRlZCBzdXBwb3J0IGZvci
B0aGUgJ3V0ZjhtYjRfNTIwJyBmZWF0dXJlLgoJICoKCSAqIEBzZWUgd3BkYjo6ZGJfdmVyc2lvbigpCgkgK
goJICogQHBhcmFtIHN0cmluZyAkZGJfY2FwIFRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvci4gQWNjZXB0cyAn
Y29sbGF0aW9uJywKCSAqICAgICAgICAgICAgICAgICAgICAgICAnZ3JvdXBfY29uY2F0JywgJ3N1YnF1ZXJ
pZXMnLCAnc2V0X2NoYXJzZXQnLAoJICogICAgICAgICAgICAgICAgICAgICAgIG9yICd1dGY4bWI0Jy4KCS
AqIEByZXR1cm4gaW50fGZhbHNlIFdoZXRoZXIgdGhlIGRhdGFiYXNlIGZlYXR1cmUgaXMgc3VwcG9ydGVkL
CBmYWxzZSBvdGhlcndpc2UuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBoYXNfY2FwKCAkZGJfY2FwICkgewoJ
CSR2ZXJzaW9uID0gJHRoaXMtPmRiX3ZlcnNpb24oKTsKCgkJc3dpdGNoICggc3RydG9sb3dlciggJGRiX2N
hcCApICkgewoJCQljYXNlICdjb2xsYXRpb24nIDogICAgLy8gQHNpbmNlIDIuNS4wCgkJCWNhc2UgJ2dyb3
VwX2NvbmNhdCcgOiAvLyBAc2luY2UgMi43LjAKCQkJY2FzZSAnc3VicXVlcmllcycgOiAgIC8vIEBzaW5jZ
SAyLjcuMAoJCQkJcmV0dXJuIHZlcnNpb25fY29tcGFyZSggJHZlcnNpb24sICc0LjEnLCAnPj0nICk7CgkJ
CWNhc2UgJ3NldF9jaGFyc2V0JyA6CgkJCQlyZXR1cm4gdmVyc2lvbl9jb21wYXJlKCAkdmVyc2lvbiwgJzU
uMC43JywgJz49JyApOwoJCQljYXNlICd1dGY4bWI0JyA6ICAgICAgLy8gQHNpbmNlIDQuMS4wCgkJCQlpZi
AoIHZlcnNpb25fY29tcGFyZSggJHZlcnNpb24sICc1LjUuMycsICc8JyApICkgewoJCQkJCXJldHVybiBmY
WxzZTsKCQkJCX0KCQkJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCQkJJGNsaWVudF92ZXJzaW9u
ID0gbXlzcWxpX2dldF9jbGllbnRfaW5mbygpOwoJCQkJfSBlbHNlIHsKCQkJCQkkY2xpZW50X3ZlcnNpb24
gPSBteXNxbF9nZXRfY2xpZW50X2luZm8oKTsKCQkJCX0KCgkJCQkvKgoJCQkJICogbGlibXlzcWwgaGFzIH
N1cHBvcnRlZCB1dGY4bWI0IHNpbmNlIDUuNS4zLCBzYW1lIGFzIHRoZSBNeVNRTCBzZXJ2ZXIuCgkJCQkgK
iBteXNxbG5kIGhhcyBzdXBwb3J0ZWQgdXRmOG1iNCBzaW5jZSA1LjAuOS4KCQkJCSAqLwoJCQkJaWYgKCBm
YWxzZSAhPT0gc3RycG9zKCAkY2xpZW50X3ZlcnNpb24sICdteXNxbG5kJyApICkgewoJCQkJCSRjbGllbnR
fdmVyc2lvbiA9IHByZWdfcmVwbGFjZSggJy9eXEQrKFtcZC5dKykuKi8nLCAnJDEnLCAkY2xpZW50X3Zlcn
Npb24gKTsKCQkJCQlyZXR1cm4gdmVyc2lvbl9jb21wYXJlKCAkY2xpZW50X3ZlcnNpb24sICc1LjAuOScsI
Cc+PScgKTsKCQkJCX0gZWxzZSB7CgkJCQkJcmV0dXJuIHZlcnNpb25fY29tcGFyZSggJGNsaWVudF92ZXJz
aW9uLCAnNS41LjMnLCAnPj0nICk7CgkJCQl9CgkJCWNhc2UgJ3V0ZjhtYjRfNTIwJyA6IC8vIEBzaW5jZSA
0LjYuMAoJCQkJcmV0dXJuIHZlcnNpb25fY29tcGFyZSggJHZlcnNpb24sICc1LjYnLCAnPj0nICk7CgkJfQ
oKCQlyZXR1cm4gZmFsc2U7Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZSB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb
24gdGhhdCBjYWxsZWQgd3BkYi4KCSAqCgkgKiBTZWFyY2hlcyB1cCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMg
dW50aWwgaXQgcmVhY2hlcwoJICogdGhlIG9uZSB0aGF0IHdvdWxkIG1vc3QgbG9naWNhbGx5IGhhZCBjYWx
sZWQgdGhpcyBtZXRob2QuCgkgKgoJICogQHNpbmNlIDIuNS4wCgkgKgoJICogQHJldHVybiBzdHJpbmd8YX
JyYXkgVGhlIG5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdld
F9jYWxsZXIoKSB7CgkJcmV0dXJuIHdwX2RlYnVnX2JhY2t0cmFjZV9zdW1tYXJ5KCBfX0NMQVNTX18gKTsK
CX0KCgkvKioKCSAqIFJldHJpZXZlcyB0aGUgTXlTUUwgc2VydmVyIHZlcnNpb24uCgkgKgoJICogQHNpbmN
lIDIuNy4wCgkgKgoJICogQHJldHVybiBudWxsfHN0cmluZyBOdWxsIG9uIGZhaWx1cmUsIHZlcnNpb24gbn
VtYmVyIG9uIHN1Y2Nlc3MuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBkYl92ZXJzaW9uKCkgewoJCWlmICggJ
HRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCSRzZXJ2ZXJfaW5mbyA9IG15c3FsaV9nZXRfc2VydmVyX2luZm8o
ICR0aGlzLT5kYmggKTsKCQl9IGVsc2UgewoJCQkkc2VydmVyX2luZm8gPSBteXNxbF9nZXRfc2VydmVyX2l
uZm8oICR0aGlzLT5kYmggKTsKCQl9CgkJcmV0dXJuIHByZWdfcmVwbGFjZSggJy9bXjAtOS5dLiovJywgJy
csICRzZXJ2ZXJfaW5mbyApOwoJfQp9Cg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/classes/wp-
db_NEW.php,importbuddy/classes/wp-db_NEW.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/classes/wp-
db_OLD.php,importbuddy/classes/wp-db_OLD.php
PD9waHAKLy8gd3BkLWRiLnBocCBtb2RpZmllZCBmb3IgQkIgdjYuMC4wLjYgdG8gc3RvcmUgc2V0IGNoYXJ
zZXQgaW4gJHdwZGItPmNoYXJzZXQgZm9yIHV0Zm1iNCBoYW5kbGluZyB3aXRoIG15c3FsYnVkZHkgaW4gc2
V0X2NoYXJ0c2V0KCkuCi8vIE5PVEU6IEEgY29weSBvZiB0aGlzIGZpbGUgaXMgZHJvcHBlZCBpbnRvIF9yb
2xsYmFja191bmRvLnBocC4KCgoKLyoqCiAqIFdvcmRQcmVzcyBEQiBDbGFzcwogKgogKiBPcmlnaW5hbCBj
b2RlIGZyb20ge0BsaW5rIGh0dHA6Ly9waHAuanVzdGludmluY2VudC5jb20gSnVzdGluIFZpbmNlbnQgKGp
1c3RpbkB2aXN1bmV0LmllKX0KICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqIEBzdWJwYWNrYWdlIERhdG
FiYXNlCiAqIEBzaW5jZSAwLjcxCiAqLwoKLyoqCiAqIEBzaW5jZSAwLjcxCiAqLwpkZWZpbmUoICdFWlNRT
F9WRVJTSU9OJywgJ1dQMS4yNScgKTsKCi8qKgogKiBAc2luY2UgMC43MQogKi8KZGVmaW5lKCAnT0JKRUNU
JywgJ09CSkVDVCcgKTsKZGVmaW5lKCAnb2JqZWN0JywgJ09CSkVDVCcgKTsgLy8gQmFjayBjb21wYXQuCgo
vKioKICogQHNpbmNlIDIuNS4wCiAqLwpkZWZpbmUoICdPQkpFQ1RfSycsICdPQkpFQ1RfSycgKTsKCi8qKg
ogKiBAc2luY2UgMC43MQogKi8KZGVmaW5lKCAnQVJSQVlfQScsICdBUlJBWV9BJyApOwoKLyoqCiAqIEBza
W5jZSAwLjcxCiAqLwpkZWZpbmUoICdBUlJBWV9OJywgJ0FSUkFZX04nICk7CgovKioKICogV29yZFByZXNz
IERhdGFiYXNlIEFjY2VzcyBBYnN0cmFjdGlvbiBPYmplY3QKICoKICogSXQgaXMgcG9zc2libGUgdG8gcmV
wbGFjZSB0aGlzIGNsYXNzIHdpdGggeW91ciBvd24KICogYnkgc2V0dGluZyB0aGUgJHdwZGIgZ2xvYmFsIH
ZhcmlhYmxlIGluIHdwLWNvbnRlbnQvZGIucGhwCiAqIGZpbGUgdG8geW91ciBjbGFzcy4gVGhlIHdwZGIgY
2xhc3Mgd2lsbCBzdGlsbCBiZSBpbmNsdWRlZCwKICogc28geW91IGNhbiBleHRlbmQgaXQgb3Igc2ltcGx5
IHVzZSB5b3VyIG93bi4KICoKICogQGxpbmsgaHR0cHM6Ly9jb2RleC53b3JkcHJlc3Mub3JnL0Z1bmN0aW9
uX1JlZmVyZW5jZS93cGRiX0NsYXNzCiAqCiAqIEBwYWNrYWdlIFdvcmRQcmVzcwogKiBAc3VicGFja2FnZS
BEYXRhYmFzZQogKiBAc2luY2UgMC43MQogKi8KY2xhc3Mgd3BkYiB7CgoJLyoqCgkgKiBXaGV0aGVyIHRvI
HNob3cgU1FML0RCIGVycm9ycy4KCSAqCgkgKiBEZWZhdWx0IGJlaGF2aW9yIGlzIHRvIHNob3cgZXJyb3Jz
IGlmIGJvdGggV1BfREVCVUcgYW5kIFdQX0RFQlVHX0RJU1BMQVkKCSAqIGV2YWx1YXRlZCB0byB0cnVlLgo
JICoKCSAqIEBzaW5jZSAwLjcxCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYm9vbAoJICovCgl2YX
IgJHNob3dfZXJyb3JzID0gZmFsc2U7CgoJLyoqCgkgKiBXaGV0aGVyIHRvIHN1cHByZXNzIGVycm9ycyBkd
XJpbmcgdGhlIERCIGJvb3RzdHJhcHBpbmcuCgkgKgoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAc2luY2Ug
Mi41LjAKCSAqIEB2YXIgYm9vbAoJICovCgl2YXIgJHN1cHByZXNzX2Vycm9ycyA9IGZhbHNlOwoKCS8qKgo
JICogVGhlIGxhc3QgZXJyb3IgZHVyaW5nIHF1ZXJ5LgoJICoKCSAqIEBzaW5jZSAyLjUuMAoJICogQHZhci
BzdHJpbmcKCSAqLwoJcHVibGljICRsYXN0X2Vycm9yID0gJyc7CgoJLyoqCgkgKiBBbW91bnQgb2YgcXVlc
mllcyBtYWRlCgkgKgoJICogQHNpbmNlIDEuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBpbnQK
CSAqLwoJcHVibGljICRudW1fcXVlcmllcyA9IDA7CgoJLyoqCgkgKiBDb3VudCBvZiByb3dzIHJldHVybmV
kIGJ5IHByZXZpb3VzIHF1ZXJ5CgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBhY2Nlc3MgcHVibGljCgkgKi
BAdmFyIGludAoJICovCglwdWJsaWMgJG51bV9yb3dzID0gMDsKCgkvKioKCSAqIENvdW50IG9mIGFmZmVjd
GVkIHJvd3MgYnkgcHJldmlvdXMgcXVlcnkKCSAqCgkgKiBAc2luY2UgMC43MQoJICogQGFjY2VzcyBwcml2
YXRlCgkgKiBAdmFyIGludAoJICovCgl2YXIgJHJvd3NfYWZmZWN0ZWQgPSAwOwoKCS8qKgoJICogVGhlIEl
EIGdlbmVyYXRlZCBmb3IgYW4gQVVUT19JTkNSRU1FTlQgY29sdW1uIGJ5IHRoZSBwcmV2aW91cyBxdWVyeS
AodXN1YWxseSBJTlNFUlQpLgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQ
HZhciBpbnQKCSAqLwoJcHVibGljICRpbnNlcnRfaWQgPSAwOwoKCS8qKgoJICogTGFzdCBxdWVyeSBtYWRl
CgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBhcnJheQoJICovCgl
2YXIgJGxhc3RfcXVlcnk7CgoJLyoqCgkgKiBSZXN1bHRzIG9mIHRoZSBsYXN0IHF1ZXJ5IG1hZGUKCSAqCg
kgKiBAc2luY2UgMC43MQoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAdmFyIGFycmF5fG51bGwKCSAqLwoJd
mFyICRsYXN0X3Jlc3VsdDsKCgkvKioKCSAqIE15U1FMIHJlc3VsdCwgd2hpY2ggaXMgZWl0aGVyIGEgcmVz
b3VyY2Ugb3IgYm9vbGVhbi4KCSAqCgkgKiBAc2luY2UgMC43MQoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSA
qIEB2YXIgbWl4ZWQKCSAqLwoJcHJvdGVjdGVkICRyZXN1bHQ7CgoJLyoqCgkgKiBDYWNoZWQgY29sdW1uIG
luZm8sIGZvciBzYW5pdHkgY2hlY2tpbmcgZGF0YSBiZWZvcmUgaW5zZXJ0aW5nCgkgKgoJICogQHNpbmNlI
DQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBhcnJheQoJICovCglwcm90ZWN0ZWQgJGNv
bF9tZXRhID0gYXJyYXkoKTsKCgkvKioKCSAqIENhbGN1bGF0ZWQgY2hhcmFjdGVyIHNldHMgb24gdGFibGV
zCgkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBhcnJheQoJIC
ovCglwcm90ZWN0ZWQgJHRhYmxlX2NoYXJzZXQgPSBhcnJheSgpOwoKCS8qKgoJICogV2hldGhlciB0ZXh0I
GZpZWxkcyBpbiB0aGUgY3VycmVudCBxdWVyeSBuZWVkIHRvIGJlIHNhbml0eSBjaGVja2VkLgoJICoKCSAq
IEBzaW5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgYm9vbAoJICovCglwcm90ZWN
0ZWQgJGNoZWNrX2N1cnJlbnRfcXVlcnkgPSB0cnVlOwoKCS8qKgoJICogRmxhZyB0byBlbnN1cmUgd2UgZG
9uJ3QgcnVuIGludG8gcmVjdXJzaW9uIHByb2JsZW1zIHdoZW4gY2hlY2tpbmcgdGhlIGNvbGxhdGlvbi4KC
SAqCgkgKiBAc2luY2UgNC4yLjAKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHNlZSB3cGRiOjpjaGVja19z
YWZlX2NvbGxhdGlvbigpCgkgKiBAdmFyIGJvb2wKCSAqLwoJcHJpdmF0ZSAkY2hlY2tpbmdfY29sbGF0aW9
uID0gZmFsc2U7CgoJLyoqCgkgKiBTYXZlZCBpbmZvIG9uIHRoZSB0YWJsZSBjb2x1bW4KCSAqCgkgKiBAc2
luY2UgMC43MQoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHJvdGVjdGVkI
CRjb2xfaW5mbzsKCgkvKioKCSAqIFNhdmVkIHF1ZXJpZXMgdGhhdCB3ZXJlIGV4ZWN1dGVkCgkgKgoJICog
QHNpbmNlIDEuNS4wCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRxdWV
yaWVzOwoKCS8qKgoJICogVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXRyeSByZWNvbm5lY3RpbmcgYmVmb3
JlIGR5aW5nLgoJICoKCSAqIEBzaW5jZSAzLjkuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEBzZWUgd
3BkYjo6Y2hlY2tfY29ubmVjdGlvbigpCgkgKiBAdmFyIGludAoJICovCglwcm90ZWN0ZWQgJHJlY29ubmVj
dF9yZXRyaWVzID0gNTsKCgkvKioKCSAqIFdvcmRQcmVzcyB0YWJsZSBwcmVmaXgKCSAqCgkgKiBZb3UgY2F
uIHNldCB0aGlzIHRvIGhhdmUgbXVsdGlwbGUgV29yZFByZXNzIGluc3RhbGxhdGlvbnMKCSAqIGluIGEgc2
luZ2xlIGRhdGFiYXNlLiBUaGUgc2Vjb25kIHJlYXNvbiBpcyBmb3IgcG9zc2libGUKCSAqIHNlY3VyaXR5I
HByZWNhdXRpb25zLgoJICoKCSAqIEBzaW5jZSAyLjUuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIg
c3RyaW5nCgkgKi8KCXB1YmxpYyAkcHJlZml4ID0gJyc7CgoJLyoqCgkgKiBXb3JkUHJlc3MgYmFzZSB0YWJ
sZSBwcmVmaXguCgkgKgoJICogQHNpbmNlIDMuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdH
JpbmcKCSAqLwoJIHB1YmxpYyAkYmFzZV9wcmVmaXg7CgoJLyoqCgkgKiBXaGV0aGVyIHRoZSBkYXRhYmFzZ
SBxdWVyaWVzIGFyZSByZWFkeSB0byBzdGFydCBleGVjdXRpbmcuCgkgKgoJICogQHNpbmNlIDIuMy4yCgkg
KiBAYWNjZXNzIHByaXZhdGUKCSAqIEB2YXIgYm9vbAoJICovCgl2YXIgJHJlYWR5ID0gZmFsc2U7CgoJLyo
qCgkgKiBCbG9nIElELgoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YX
IgaW50CgkgKi8KCXB1YmxpYyAkYmxvZ2lkID0gMDsKCgkvKioKCSAqIFNpdGUgSUQuCgkgKgoJICogQHNpb
mNlIDMuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBpbnQKCSAqLwoJcHVibGljICRzaXRlaWQg
PSAwOwoKCS8qKgoJICogTGlzdCBvZiBXb3JkUHJlc3MgcGVyLWJsb2cgdGFibGVzCgkgKgoJICogQHNpbmN
lIDIuNS4wCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqIEBzZWUgd3BkYjo6dGFibGVzKCkKCSAqIEB2YXIgYX
JyYXkKCSAqLwoJdmFyICR0YWJsZXMgPSBhcnJheSggJ3Bvc3RzJywgJ2NvbW1lbnRzJywgJ2xpbmtzJywgJ
29wdGlvbnMnLCAncG9zdG1ldGEnLAoJCSd0ZXJtcycsICd0ZXJtX3RheG9ub215JywgJ3Rlcm1fcmVsYXRp
b25zaGlwcycsICd0ZXJtbWV0YScsICdjb21tZW50bWV0YScgKTsKCgkvKioKCSAqIExpc3Qgb2YgZGVwcmV
jYXRlZCBXb3JkUHJlc3MgdGFibGVzCgkgKgoJICogY2F0ZWdvcmllcywgcG9zdDJjYXQsIGFuZCBsaW5rMm
NhdCB3ZXJlIGRlcHJlY2F0ZWQgaW4gMi4zLjAsIGRiIHZlcnNpb24gNTUzOQoJICoKCSAqIEBzaW5jZSAyL
jkuMAoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAc2VlIHdwZGI6OnRhYmxlcygpCgkgKiBAdmFyIGFycmF5
CgkgKi8KCXZhciAkb2xkX3RhYmxlcyA9IGFycmF5KCAnY2F0ZWdvcmllcycsICdwb3N0MmNhdCcsICdsaW5
rMmNhdCcgKTsKCgkvKioKCSAqIExpc3Qgb2YgV29yZFByZXNzIGdsb2JhbCB0YWJsZXMKCSAqCgkgKiBAc2
luY2UgMy4wLjAKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHNlZSB3cGRiOjp0YWJsZXMoKQoJICogQHZhc
iBhcnJheQoJICovCgl2YXIgJGdsb2JhbF90YWJsZXMgPSBhcnJheSggJ3VzZXJzJywgJ3VzZXJtZXRhJyAp
OwoKCS8qKgoJICogTGlzdCBvZiBNdWx0aXNpdGUgZ2xvYmFsIHRhYmxlcwoJICoKCSAqIEBzaW5jZSAzLjA
uMAoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAc2VlIHdwZGI6OnRhYmxlcygpCgkgKiBAdmFyIGFycmF5Cg
kgKi8KCXZhciAkbXNfZ2xvYmFsX3RhYmxlcyA9IGFycmF5KCAnYmxvZ3MnLCAnc2lnbnVwcycsICdzaXRlJ
ywgJ3NpdGVtZXRhJywKCQknc2l0ZWNhdGVnb3JpZXMnLCAncmVnaXN0cmF0aW9uX2xvZycsICdibG9nX3Zl
cnNpb25zJyApOwoKCS8qKgoJICogV29yZFByZXNzIENvbW1lbnRzIHRhYmxlCgkgKgoJICogQHNpbmNlIDE
uNS4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRjb21tZW50cz
sKCgkvKioKCSAqIFdvcmRQcmVzcyBDb21tZW50IE1ldGFkYXRhIHRhYmxlCgkgKgoJICogQHNpbmNlIDIuO
S4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRjb21tZW50bWV0
YTsKCgkvKioKCSAqIFdvcmRQcmVzcyBMaW5rcyB0YWJsZQoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICogQGF
jY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkbGlua3M7CgoJLyoqCgkgKiBXb3
JkUHJlc3MgT3B0aW9ucyB0YWJsZQoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICogQGFjY2VzcyBwdWJsaWMKC
SAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkb3B0aW9uczsKCgkvKioKCSAqIFdvcmRQcmVzcyBQb3N0
IE1ldGFkYXRhIHRhYmxlCgkgKgoJICogQHNpbmNlIDEuNS4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZ
hciBzdHJpbmcKCSAqLwoJcHVibGljICRwb3N0bWV0YTsKCgkvKioKCSAqIFdvcmRQcmVzcyBQb3N0cyB0YW
JsZQoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgK
i8KCXB1YmxpYyAkcG9zdHM7CgoJLyoqCgkgKiBXb3JkUHJlc3MgVGVybXMgdGFibGUKCSAqCgkgKiBAc2lu
Y2UgMi4zLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWMgJHRlcm1
zOwoKCS8qKgoJICogV29yZFByZXNzIFRlcm0gUmVsYXRpb25zaGlwcyB0YWJsZQoJICoKCSAqIEBzaW5jZS
AyLjMuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkdGVybV9yZ
WxhdGlvbnNoaXBzOwoKCS8qKgoJICogV29yZFByZXNzIFRlcm0gVGF4b25vbXkgdGFibGUKCSAqCgkgKiBA
c2luY2UgMi4zLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWMgJHR
lcm1fdGF4b25vbXk7CgoJLyoqCgkgKiBXb3JkUHJlc3MgVGVybSBNZXRhIHRhYmxlLgoJICoKCSAqIEBzaW
5jZSA0LjQuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkdGVyb
W1ldGE7CgoJLyoKCSAqIEdsb2JhbCBhbmQgTXVsdGlzaXRlIHRhYmxlcwoJICovCgoJLyoqCgkgKiBXb3Jk
UHJlc3MgVXNlciBNZXRhZGF0YSB0YWJsZQoJICoKCSAqIEBzaW5jZSAyLjMuMAoJICogQGFjY2VzcyBwdWJ
saWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkdXNlcm1ldGE7CgoJLyoqCgkgKiBXb3JkUHJlc3
MgVXNlcnMgdGFibGUKCSAqCgkgKiBAc2luY2UgMS41LjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyI
HN0cmluZwoJICovCglwdWJsaWMgJHVzZXJzOwoKCS8qKgoJICogTXVsdGlzaXRlIEJsb2dzIHRhYmxlCgkg
KgoJICogQHNpbmNlIDMuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHV
ibGljICRibG9nczsKCgkvKioKCSAqIE11bHRpc2l0ZSBCbG9nIFZlcnNpb25zIHRhYmxlCgkgKgoJICogQH
NpbmNlIDMuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRib
G9nX3ZlcnNpb25zOwoKCS8qKgoJICogTXVsdGlzaXRlIFJlZ2lzdHJhdGlvbiBMb2cgdGFibGUKCSAqCgkg
KiBAc2luY2UgMy4wLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIHN0cmluZwoJICovCglwdWJsaWM
gJHJlZ2lzdHJhdGlvbl9sb2c7CgoJLyoqCgkgKiBNdWx0aXNpdGUgU2lnbnVwcyB0YWJsZQoJICoKCSAqIE
BzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkc
2lnbnVwczsKCgkvKioKCSAqIE11bHRpc2l0ZSBTaXRlcyB0YWJsZQoJICoKCSAqIEBzaW5jZSAzLjAuMAoJ
ICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3R
yaW5nCgkgKi8KCXB1YmxpYyAkc2l0ZTsKCgkvKioKCSAqIE11bHRpc2l0ZSBTaXRld2lkZSBUZXJtcyB0YW
JsZQoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgK
i8KCXB1YmxpYyAkc2l0ZWNhdGVnb3JpZXM7CgoJLyoqCgkgKiBNdWx0aXNpdGUgU2l0ZSBNZXRhZGF0YSB0
YWJsZQoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQGFjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgk
gKi8KCXB1YmxpYyAkc2l0ZW1ldGE7CgoJLyoqCgkgKiBGb3JtYXQgc3BlY2lmaWVycyBmb3IgREIgY29sdW
1ucy4gQ29sdW1ucyBub3QgbGlzdGVkIGhlcmUgZGVmYXVsdCB0byAlcy4gSW5pdGlhbGl6ZWQgZHVyaW5nI
FdQIGxvYWQuCgkgKgoJICogS2V5cyBhcmUgY29sdW1uIG5hbWVzLCB2YWx1ZXMgYXJlIGZvcm1hdCB0eXBl
czogJ0lEJyA9PiAnJWQnCgkgKgoJICogQHNpbmNlIDIuOC4wCgkgKiBAc2VlIHdwZGI6OnByZXBhcmUoKQo
JICogQHNlZSB3cGRiOjppbnNlcnQoKQoJICogQHNlZSB3cGRiOjp1cGRhdGUoKQoJICogQHNlZSB3cGRiOj
pkZWxldGUoKQoJICogQHNlZSB3cF9zZXRfd3BkYl92YXJzKCkKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAd
mFyIGFycmF5CgkgKi8KCXB1YmxpYyAkZmllbGRfdHlwZXMgPSBhcnJheSgpOwoKCS8qKgoJICogRGF0YWJh
c2UgdGFibGUgY29sdW1ucyBjaGFyc2V0CgkgKgoJICogQHNpbmNlIDIuMi4wCgkgKiBAYWNjZXNzIHB1Ymx
pYwoJICogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRjaGFyc2V0OwoKCS8qKgoJICogRGF0YWJhc2UgdG
FibGUgY29sdW1ucyBjb2xsYXRlCgkgKgoJICogQHNpbmNlIDIuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJI
CogQHZhciBzdHJpbmcKCSAqLwoJcHVibGljICRjb2xsYXRlOwoKCS8qKgoJICogRGF0YWJhc2UgVXNlcm5h
bWUKCSAqCgkgKiBAc2luY2UgMi45LjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIHN0cmluZwo
JICovCglwcm90ZWN0ZWQgJGRidXNlcjsKCgkvKioKCSAqIERhdGFiYXNlIFBhc3N3b3JkCgkgKgoJICogQH
NpbmNlIDMuMS4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICogQHZhciBzdHJpbmcKCSAqLwoJcHJvdGVjd
GVkICRkYnBhc3N3b3JkOwoKCS8qKgoJICogRGF0YWJhc2UgTmFtZQoJICoKCSAqIEBzaW5jZSAzLjEuMAoJ
ICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByb3RlY3RlZCAkZGJuYW1lOwo
KCS8qKgoJICogRGF0YWJhc2UgSG9zdAoJICoKCSAqIEBzaW5jZSAzLjEuMAoJICogQGFjY2VzcyBwcm90ZW
N0ZWQKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByb3RlY3RlZCAkZGJob3N0OwoKCS8qKgoJICogRGF0YWJhc
2UgSGFuZGxlCgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKiBAdmFyIHN0
cmluZwoJICovCglwcm90ZWN0ZWQgJGRiaDsKCgkvKioKCSAqIEEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB
0aGUgbGFzdCBxdWVyeS9nZXRfcm93L2dldF92YXIgY2FsbAoJICoKCSAqIEBzaW5jZSAzLjAuMAoJICogQG
FjY2VzcyBwdWJsaWMKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXB1YmxpYyAkZnVuY19jYWxsOwoKCS8qKgoJI
CogV2hldGhlciBNeVNRTCBpcyB1c2VkIGFzIHRoZSBkYXRhYmFzZSBlbmdpbmUuCgkgKgoJICogU2V0IGlu
IFdQREI6OmRiX2Nvbm5lY3QoKSB0byB0cnVlLCBieSBkZWZhdWx0LiBUaGlzIGlzIHVzZWQgd2hlbiBjaGV
ja2luZwoJICogYWdhaW5zdCB0aGUgcmVxdWlyZWQgTXlTUUwgdmVyc2lvbiBmb3IgV29yZFByZXNzLiBOb3
JtYWxseSwgYSByZXBsYWNlbWVudAoJICogZGF0YWJhc2UgZHJvcC1pbiAoZGIucGhwKSB3aWxsIHNraXAgd
Ghlc2UgY2hlY2tzLCBidXQgc2V0dGluZyB0aGlzIHRvIHRydWUKCSAqIHdpbGwgZm9yY2UgdGhlIGNoZWNr
cyB0byBvY2N1ci4KCSAqCgkgKiBAc2luY2UgMy4zLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKiBAdmFyIGJ
vb2wKCSAqLwoJcHVibGljICRpc19teXNxbCA9IG51bGw7CgoJLyoqCgkgKiBBIGxpc3Qgb2YgaW5jb21wYX
RpYmxlIFNRTCBtb2Rlcy4KCSAqCgkgKiBAc2luY2UgMy45LjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgK
iBAdmFyIGFycmF5CgkgKi8KCXByb3RlY3RlZCAkaW5jb21wYXRpYmxlX21vZGVzID0gYXJyYXkoICdOT19a
RVJPX0RBVEUnLCAnT05MWV9GVUxMX0dST1VQX0JZJywKCQknU1RSSUNUX1RSQU5TX1RBQkxFUycsICdTVFJ
JQ1RfQUxMX1RBQkxFUycsICdUUkFESVRJT05BTCcgKTsKCgkvKioKCSAqIFdoZXRoZXIgdG8gdXNlIG15c3
FsaSBvdmVyIG15c3FsLgoJICoKCSAqIEBzaW5jZSAzLjkuMAoJICogQGFjY2VzcyBwcml2YXRlCgkgKiBAd
mFyIGJvb2wKCSAqLwoJcHJpdmF0ZSAkdXNlX215c3FsaSA9IGZhbHNlOwoKCS8qKgoJICogV2hldGhlciB3
ZSd2ZSBtYW5hZ2VkIHRvIHN1Y2Nlc3NmdWxseSBjb25uZWN0IGF0IHNvbWUgcG9pbnQKCSAqCgkgKiBAc2l
uY2UgMy45LjAKCSAqIEBhY2Nlc3MgcHJpdmF0ZQoJICogQHZhciBib29sCgkgKi8KCXByaXZhdGUgJGhhc1
9jb25uZWN0ZWQgPSBmYWxzZTsKCgkvKioKCSAqIENvbm5lY3RzIHRvIHRoZSBkYXRhYmFzZSBzZXJ2ZXIgY
W5kIHNlbGVjdHMgYSBkYXRhYmFzZQoJICoKCSAqIFBIUDUgc3R5bGUgY29uc3RydWN0b3IgZm9yIGNvbXBh
dGliaWxpdHkgd2l0aCBQSFA1LiBEb2VzCgkgKiB0aGUgYWN0dWFsIHNldHRpbmcgdXAgb2YgdGhlIGNsYXN
zIHByb3BlcnRpZXMgYW5kIGNvbm5lY3Rpb24KCSAqIHRvIHRoZSBkYXRhYmFzZS4KCSAqCgkgKiBAbGluay
BodHRwczovL2NvcmUudHJhYy53b3JkcHJlc3Mub3JnL3RpY2tldC8zMzU0CgkgKiBAc2luY2UgMi4wLjgKC
SAqCgkgKiBAZ2xvYmFsIHN0cmluZyAkd3BfdmVyc2lvbgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGRidXNl
ciAgICAgTXlTUUwgZGF0YWJhc2UgdXNlcgoJICogQHBhcmFtIHN0cmluZyAkZGJwYXNzd29yZCBNeVNRTCB
kYXRhYmFzZSBwYXNzd29yZAoJICogQHBhcmFtIHN0cmluZyAkZGJuYW1lICAgICBNeVNRTCBkYXRhYmFzZS
BuYW1lCgkgKiBAcGFyYW0gc3RyaW5nICRkYmhvc3QgICAgIE15U1FMIGRhdGFiYXNlIGhvc3QKCSAqLwoJc
HVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkZGJ1c2VyLCAkZGJwYXNzd29yZCwgJGRibmFtZSwgJGRi
aG9zdCApIHsKCQlyZWdpc3Rlcl9zaHV0ZG93bl9mdW5jdGlvbiggYXJyYXkoICR0aGlzLCAnX19kZXN0cnV
jdCcgKSApOwoKCQlpZiAoIFdQX0RFQlVHICYmIFdQX0RFQlVHX0RJU1BMQVkgKQoJCQkkdGhpcy0+c2hvd1
9lcnJvcnMoKTsKCgkJLyogVXNlIGV4dC9teXNxbGkgaWYgaXQgZXhpc3RzIGFuZDoKCQkgKiAgLSBXUF9VU
0VfRVhUX01ZU1FMIGlzIGRlZmluZWQgYXMgZmFsc2UsIG9yCgkJICogIC0gV2UgYXJlIGEgZGV2ZWxvcG1l
bnQgdmVyc2lvbiBvZiBXb3JkUHJlc3MsIG9yCgkJICogIC0gV2UgYXJlIHJ1bm5pbmcgUEhQIDUuNSBvciB
ncmVhdGVyLCBvcgoJCSAqICAtIGV4dC9teXNxbCBpcyBub3QgbG9hZGVkLgoJCSAqLwoJCWlmICggZnVuY3
Rpb25fZXhpc3RzKCAnbXlzcWxpX2Nvbm5lY3QnICkgKSB7CgkJCWlmICggZGVmaW5lZCggJ1dQX1VTRV9FW
FRfTVlTUUwnICkgKSB7CgkJCQkkdGhpcy0+dXNlX215c3FsaSA9ICEgV1BfVVNFX0VYVF9NWVNRTDsKCQkJ
fSBlbHNlaWYgKCB2ZXJzaW9uX2NvbXBhcmUoIHBocHZlcnNpb24oKSwgJzUuNScsICc+PScgKSB8fCAhIGZ
1bmN0aW9uX2V4aXN0cyggJ215c3FsX2Nvbm5lY3QnICkgKSB7CgkJCQkkdGhpcy0+dXNlX215c3FsaSA9IH
RydWU7CgkJCX0gZWxzZWlmICggZmFsc2UgIT09IHN0cnBvcyggJEdMT0JBTFNbJ3dwX3ZlcnNpb24nXSwgJ
y0nICkgKSB7CgkJCQkkdGhpcy0+dXNlX215c3FsaSA9IHRydWU7CgkJCX0KCQl9CgoJCSR0aGlzLT5kYnVz
ZXIgPSAkZGJ1c2VyOwoJCSR0aGlzLT5kYnBhc3N3b3JkID0gJGRicGFzc3dvcmQ7CgkJJHRoaXMtPmRibmF
tZSA9ICRkYm5hbWU7CgkJJHRoaXMtPmRiaG9zdCA9ICRkYmhvc3Q7CgoJCS8vIHdwLWNvbmZpZy5waHAgY3
JlYXRpb24gd2lsbCBtYW51YWxseSBjb25uZWN0IHdoZW4gcmVhZHkuCgkJaWYgKCBkZWZpbmVkKCAnV1BfU
0VUVVBfQ09ORklHJyApICkgewoJCQlyZXR1cm47CgkJfQoKCQkkdGhpcy0+ZGJfY29ubmVjdCgpOwoJfQoK
CS8qKgoJICogUEhQNSBzdHlsZSBkZXN0cnVjdG9yIGFuZCB3aWxsIHJ1biB3aGVuIGRhdGFiYXNlIG9iamV
jdCBpcyBkZXN0cm95ZWQuCgkgKgoJICogQHNlZSB3cGRiOjpfX2NvbnN0cnVjdCgpCgkgKiBAc2luY2UgMi
4wLjgKCSAqIEByZXR1cm4gdHJ1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpIHsKCQlyZ
XR1cm4gdHJ1ZTsKCX0KCgkvKioKCSAqIFBIUDUgc3R5bGUgbWFnaWMgZ2V0dGVyLCB1c2VkIHRvIGxhenkt
bG9hZCBleHBlbnNpdmUgZGF0YS4KCSAqCgkgKiBAc2luY2UgMy41LjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5
nICRuYW1lIFRoZSBwcml2YXRlIG1lbWJlciB0byBnZXQsIGFuZCBvcHRpb25hbGx5IHByb2Nlc3MKCSAqIE
ByZXR1cm4gbWl4ZWQgVGhlIHByaXZhdGUgbWVtYmVyCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2dldCggJ
G5hbWUgKSB7CgkJaWYgKCAnY29sX2luZm8nID09PSAkbmFtZSApCgkJCSR0aGlzLT5sb2FkX2NvbF9pbmZv
KCk7CgoJCXJldHVybiAkdGhpcy0+JG5hbWU7Cgl9CgoJLyoqCgkgKiBNYWdpYyBmdW5jdGlvbiwgZm9yIGJ
hY2t3YXJkcyBjb21wYXRpYmlsaXR5LgoJICoKCSAqIEBzaW5jZSAzLjUuMAoJICoKCSAqIEBwYXJhbSBzdH
JpbmcgJG5hbWUgIFRoZSBwcml2YXRlIG1lbWJlciB0byBzZXQKCSAqIEBwYXJhbSBtaXhlZCAgJHZhbHVlI
FRoZSB2YWx1ZSB0byBzZXQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fc2V0KCAkbmFtZSwgJHZhbHVlICkg
ewoJCSRwcm90ZWN0ZWRfbWVtYmVycyA9IGFycmF5KAoJCQknY29sX21ldGEnLAoJCQkndGFibGVfY2hhcnN
ldCcsCgkJCSdjaGVja19jdXJyZW50X3F1ZXJ5JywKCQkpOwoJCWlmICggIGluX2FycmF5KCAkbmFtZSwgJH
Byb3RlY3RlZF9tZW1iZXJzLCB0cnVlICkgKSB7CgkJCXJldHVybjsKCQl9CgkJJHRoaXMtPiRuYW1lID0gJ
HZhbHVlOwoJfQoKCS8qKgoJICogTWFnaWMgZnVuY3Rpb24sIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0
eS4KCSAqCgkgKiBAc2luY2UgMy41LjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICBUaGUgcHJpdmF
0ZSBtZW1iZXIgdG8gY2hlY2sKCSAqCgkgKiBAcmV0dXJuIGJvb2wgSWYgdGhlIG1lbWJlciBpcyBzZXQgb3
Igbm90CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2lzc2V0KCAkbmFtZSApIHsKCQlyZXR1cm4gaXNzZXQoI
CR0aGlzLT4kbmFtZSApOwoJfQoKCS8qKgoJICogTWFnaWMgZnVuY3Rpb24sIGZvciBiYWNrd2FyZHMgY29t
cGF0aWJpbGl0eS4KCSAqCgkgKiBAc2luY2UgMy41LjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICB
UaGUgcHJpdmF0ZSBtZW1iZXIgdG8gdW5zZXQKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fdW5zZXQoICRuYW
1lICkgewoJCXVuc2V0KCAkdGhpcy0+JG5hbWUgKTsKCX0KCgkvKioKCSAqIFNldCAkdGhpcy0+Y2hhcnNld
CBhbmQgJHRoaXMtPmNvbGxhdGUKCSAqCgkgKiBAc2luY2UgMy4xLjAKCSAqLwoJcHVibGljIGZ1bmN0aW9u
IGluaXRfY2hhcnNldCgpIHsKCQlpZiAoIGZ1bmN0aW9uX2V4aXN0cygnaXNfbXVsdGlzaXRlJykgJiYgaXN
fbXVsdGlzaXRlKCkgKSB7CgkJCSR0aGlzLT5jaGFyc2V0ID0gJ3V0ZjgnOwoJCQlpZiAoIGRlZmluZWQoIC
dEQl9DT0xMQVRFJyApICYmIERCX0NPTExBVEUgKSB7CgkJCQkkdGhpcy0+Y29sbGF0ZSA9IERCX0NPTExBV
EU7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+Y29sbGF0ZSA9ICd1dGY4X2dlbmVyYWxfY2knOwoJCQl9CgkJ
fSBlbHNlaWYgKCBkZWZpbmVkKCAnREJfQ09MTEFURScgKSApIHsKCQkJJHRoaXMtPmNvbGxhdGUgPSBEQl9
DT0xMQVRFOwoJCX0KCgkJaWYgKCBkZWZpbmVkKCAnREJfQ0hBUlNFVCcgKSApIHsKCQkJJHRoaXMtPmNoYX
JzZXQgPSBEQl9DSEFSU0VUOwoJCX0KCgkJaWYgKCAoICR0aGlzLT51c2VfbXlzcWxpICYmICEgKCAkdGhpc
y0+ZGJoIGluc3RhbmNlb2YgbXlzcWxpICkgKSB8fCBlbXB0eSggJHRoaXMtPmRiaCApICkgewoJCQlyZXR1
cm47CgkJfQoKCQlpZiAoICd1dGY4JyA9PT0gJHRoaXMtPmNoYXJzZXQgJiYgJHRoaXMtPmhhc19jYXAoICd
1dGY4bWI0JyApICkgewoJCQkkdGhpcy0+Y2hhcnNldCA9ICd1dGY4bWI0JzsKCQl9CgoJCWlmICggJ3V0Zj
htYjQnID09PSAkdGhpcy0+Y2hhcnNldCAmJiAoICEgJHRoaXMtPmNvbGxhdGUgfHwgc3RyaXBvcyggJHRoa
XMtPmNvbGxhdGUsICd1dGY4XycgKSA9PT0gMCApICkgewoJCQkkdGhpcy0+Y29sbGF0ZSA9ICd1dGY4bWI0
X3VuaWNvZGVfY2knOwoJCX0KCX0KCQoJCgkvLyBCYWNrdXBCdWRkeSBtb2RpZmllZCB0byBzdG9yZSBjaGF
ydHNldCBhbmQgY29sbGF0ZSBpbiBjbGFzcy4KCS8qKgoJICogU2V0cyB0aGUgY29ubmVjdGlvbidzIGNoYX
JhY3RlciBzZXQuCgkgKgoJICogQHNpbmNlIDMuMS4wCgkgKgoJICogQHBhcmFtIHJlc291cmNlICRkYmggI
CAgIFRoZSByZXNvdXJjZSBnaXZlbiBieSBteXNxbF9jb25uZWN0CgkgKiBAcGFyYW0gc3RyaW5nICAgJGNo
YXJzZXQgT3B0aW9uYWwuIFRoZSBjaGFyYWN0ZXIgc2V0LiBEZWZhdWx0IG51bGwuCgkgKiBAcGFyYW0gc3R
yaW5nICAgJGNvbGxhdGUgT3B0aW9uYWwuIFRoZSBjb2xsYXRpb24uIERlZmF1bHQgbnVsbC4KCSAqLwoJcH
VibGljIGZ1bmN0aW9uIHNldF9jaGFyc2V0KCAkZGJoLCAkY2hhcnNldCA9IG51bGwsICRjb2xsYXRlID0gb
nVsbCApIHsKCQlpZiAoICEgaXNzZXQoICRjaGFyc2V0ICkgKQoJCQkkY2hhcnNldCA9ICR0aGlzLT5jaGFy
c2V0OwoJCWlmICggISBpc3NldCggJGNvbGxhdGUgKSApCgkJCSRjb2xsYXRlID0gJHRoaXMtPmNvbGxhdGU
7CgkJaWYgKCAkdGhpcy0+aGFzX2NhcCggJ2NvbGxhdGlvbicgKSAmJiAhIGVtcHR5KCAkY2hhcnNldCApIC
kgewoJCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkJaWYgKCBmdW5jdGlvbl9leGlzdHMoICdte
XNxbGlfc2V0X2NoYXJzZXQnICkgJiYgJHRoaXMtPmhhc19jYXAoICdzZXRfY2hhcnNldCcgKSApIHsKCQkJ
CQlteXNxbGlfc2V0X2NoYXJzZXQoICRkYmgsICRjaGFyc2V0ICk7CgkJCQl9IGVsc2UgewoJCQkJCSRxdWV
yeSA9ICR0aGlzLT5wcmVwYXJlKCAnU0VUIE5BTUVTICVzJywgJGNoYXJzZXQgKTsKCQkJCQlpZiAoICEgZW
1wdHkoICRjb2xsYXRlICkgKQoJCQkJCQkkcXVlcnkgLj0gJHRoaXMtPnByZXBhcmUoICcgQ09MTEFURSAlc
ycsICRjb2xsYXRlICk7CgkJCQkJbXlzcWxpX3F1ZXJ5KCAkZGJoLCAkcXVlcnkgKTsKCQkJCX0KCQkJfSBl
bHNlIHsKCQkJCWlmICggZnVuY3Rpb25fZXhpc3RzKCAnbXlzcWxfc2V0X2NoYXJzZXQnICkgJiYgJHRoaXM
tPmhhc19jYXAoICdzZXRfY2hhcnNldCcgKSApIH
sKCQkJCQlteXNxbF9zZXRfY2hhcnNldCggJGNoYXJzZXQsICRkYmggKTsKCQkJCX0gZWxzZSB7CgkJCQkJJ
HF1ZXJ5ID0gJHRoaXMtPnByZXBhcmUoICdTRVQgTkFNRVMgJXMnLCAkY2hhcnNldCApOwoJCQkJCWlmICgg
ISBlbXB0eSggJGNvbGxhdGUgKSApCgkJCQkJCSRxdWVyeSAuPSAkdGhpcy0+cHJlcGFyZSggJyBDT0xMQVR
FICVzJywgJGNvbGxhdGUgKTsKCQkJCQlteXNxbF9xdWVyeSggJHF1ZXJ5LCAkZGJoICk7CgkJCQl9CgkJCX
0KCQl9CgkJCgkJJHRoaXMtPmNoYXJzZXQgPSAkY2hhcnNldDsKCQkkdGhpcy0+Y29sbGF0ZSA9ICRjb2xsY
XRlOwoJfQoKCS8qKgoJICogQ2hhbmdlIHRoZSBjdXJyZW50IFNRTCBtb2RlLCBhbmQgZW5zdXJlIGl0cyBX
b3JkUHJlc3MgY29tcGF0aWJpbGl0eS4KCSAqCgkgKiBJZiBubyBtb2RlcyBhcmUgcGFzc2VkLCBpdCB3aWx
sIGVuc3VyZSB0aGUgY3VycmVudCBNeVNRTCBzZXJ2ZXIKCSAqIG1vZGVzIGFyZSBjb21wYXRpYmxlLgoJIC
oKCSAqIEBzaW5jZSAzLjkuMAoJICoKCSAqIEBwYXJhbSBhcnJheSAkbW9kZXMgT3B0aW9uYWwuIEEgbGlzd
CBvZiBTUUwgbW9kZXMgdG8gc2V0LgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0X3NxbF9tb2RlKCAkbW9k
ZXMgPSBhcnJheSgpICkgewoJCWlmICggZW1wdHkoICRtb2RlcyApICkgewoJCQlpZiAoICR0aGlzLT51c2V
fbXlzcWxpICkgewoJCQkJJHJlcyA9IG15c3FsaV9xdWVyeSggJHRoaXMtPmRiaCwgJ1NFTEVDVCBAQFNFU1
NJT04uc3FsX21vZGUnICk7CgkJCX0gZWxzZSB7CgkJCQkkcmVzID0gbXlzcWxfcXVlcnkoICdTRUxFQ1QgQ
EBTRVNTSU9OLnNxbF9tb2RlJywgJHRoaXMtPmRiaCApOwoJCQl9CgoJCQlpZiAoIGVtcHR5KCAkcmVzICkg
KSB7CgkJCQlyZXR1cm47CgkJCX0KCgkJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCQkkbW9kZXN
fYXJyYXkgPSBteXNxbGlfZmV0Y2hfYXJyYXkoICRyZXMgKTsKCQkJCWlmICggZW1wdHkoICRtb2Rlc19hcn
JheVswXSApICkgewoJCQkJCXJldHVybjsKCQkJCX0KCQkJCSRtb2Rlc19zdHIgPSAkbW9kZXNfYXJyYXlbM
F07CgkJCX0gZWxzZSB7CgkJCQkkbW9kZXNfc3RyID0gbXlzcWxfcmVzdWx0KCAkcmVzLCAwICk7CgkJCX0K
CgkJCWlmICggZW1wdHkoICRtb2Rlc19zdHIgKSApIHsKCQkJCXJldHVybjsKCQkJfQoKCQkJJG1vZGVzID0
gZXhwbG9kZSggJywnLCAkbW9kZXNfc3RyICk7CgkJfQoKCQkkbW9kZXMgPSBhcnJheV9jaGFuZ2Vfa2V5X2
Nhc2UoICRtb2RlcywgQ0FTRV9VUFBFUiApOwoKCQkvKioKCQkgKiBGaWx0ZXIgdGhlIGxpc3Qgb2YgaW5jb
21wYXRpYmxlIFNRTCBtb2RlcyB0byBleGNsdWRlLgoJCSAqCgkJICogQHNpbmNlIDMuOS4wCgkJICoKCQkg
KiBAcGFyYW0gYXJyYXkgJGluY29tcGF0aWJsZV9tb2RlcyBBbiBhcnJheSBvZiBpbmNvbXBhdGlibGUgbW9
kZXMuCgkJICovCgkJJGluY29tcGF0aWJsZV9tb2RlcyA9IChhcnJheSkgYXBwbHlfZmlsdGVycyggJ2luY2
9tcGF0aWJsZV9zcWxfbW9kZXMnLCAkdGhpcy0+aW5jb21wYXRpYmxlX21vZGVzICk7CgoJCWZvcmVhY2ggK
CAkbW9kZXMgYXMgJGkgPT4gJG1vZGUgKSB7CgkJCWlmICggaW5fYXJyYXkoICRtb2RlLCAkaW5jb21wYXRp
YmxlX21vZGVzICkgKSB7CgkJCQl1bnNldCggJG1vZGVzWyAkaSBdICk7CgkJCX0KCQl9CgoJCSRtb2Rlc19
zdHIgPSBpbXBsb2RlKCAnLCcsICRtb2RlcyApOwoKCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQ
lteXNxbGlfcXVlcnkoICR0aGlzLT5kYmgsICJTRVQgU0VTU0lPTiBzcWxfbW9kZT0nJG1vZGVzX3N0ciciI
Ck7CgkJfSBlbHNlIHsKCQkJbXlzcWxfcXVlcnkoICJTRVQgU0VTU0lPTiBzcWxfbW9kZT0nJG1vZGVzX3N0
ciciLCAkdGhpcy0+ZGJoICk7CgkJfQoJfQoKCS8qKgoJICogU2V0cyB0aGUgdGFibGUgcHJlZml4IGZvciB
0aGUgV29yZFByZXNzIHRhYmxlcy4KCSAqCgkgKiBAc2luY2UgMi41LjAKCSAqCgkgKiBAcGFyYW0gc3RyaW
5nICRwcmVmaXggICAgICAgICAgQWxwaGFudW1lcmljIG5hbWUgZm9yIHRoZSBuZXcgcHJlZml4LgoJICogQ
HBhcmFtIGJvb2wgICAkc2V0X3RhYmxlX25hbWVzIE9wdGlvbmFsLiBXaGV0aGVyIHRoZSB0YWJsZSBuYW1l
cywgZS5nLiB3cGRiOjokcG9zdHMsIHNob3VsZCBiZSB1cGRhdGVkIG9yIG5vdC4KCSAqIEByZXR1cm4gc3R
yaW5nfFdQX0Vycm9yIE9sZCBwcmVmaXggb3IgV1BfRXJyb3Igb24gZXJyb3IKCSAqLwoJcHVibGljIGZ1bm
N0aW9uIHNldF9wcmVmaXgoICRwcmVmaXgsICRzZXRfdGFibGVfbmFtZXMgPSB0cnVlICkgewoKCQlpZiAoI
HByZWdfbWF0Y2goICd8W15hLXowLTlfXXxpJywgJHByZWZpeCApICkKCQkJcmV0dXJuIG5ldyBXUF9FcnJv
cignaW52YWxpZF9kYl9wcmVmaXgnLCAnSW52YWxpZCBkYXRhYmFzZSBwcmVmaXgnICk7CgoJCSRvbGRfcHJ
lZml4ID0gaXNfbXVsdGlzaXRlKCkgPyAnJyA6ICRwcmVmaXg7CgoJCWlmICggaXNzZXQoICR0aGlzLT5iYX
NlX3ByZWZpeCApICkKCQkJJG9sZF9wcmVmaXggPSAkdGhpcy0+YmFzZV9wcmVmaXg7CgoJCSR0aGlzLT5iY
XNlX3ByZWZpeCA9ICRwcmVmaXg7CgoJCWlmICggJHNldF90YWJsZV9uYW1lcyApIHsKCQkJZm9yZWFjaCAo
ICR0aGlzLT50YWJsZXMoICdnbG9iYWwnICkgYXMgJHRhYmxlID0+ICRwcmVmaXhlZF90YWJsZSApCgkJCQk
kdGhpcy0+JHRhYmxlID0gJHByZWZpeGVkX3RhYmxlOwoKCQkJaWYgKCBpc19tdWx0aXNpdGUoKSAmJiBlbX
B0eSggJHRoaXMtPmJsb2dpZCApICkKCQkJCXJldHVybiAkb2xkX3ByZWZpeDsKCgkJCSR0aGlzLT5wcmVma
XggPSAkdGhpcy0+Z2V0X2Jsb2dfcHJlZml4KCk7CgoJCQlmb3JlYWNoICggJHRoaXMtPnRhYmxlcyggJ2Js
b2cnICkgYXMgJHRhYmxlID0+ICRwcmVmaXhlZF90YWJsZSApCgkJCQkkdGhpcy0+JHRhYmxlID0gJHByZWZ
peGVkX3RhYmxlOwoKCQkJZm9yZWFjaCAoICR0aGlzLT50YWJsZXMoICdvbGQnICkgYXMgJHRhYmxlID0+IC
RwcmVmaXhlZF90YWJsZSApCgkJCQkkdGhpcy0+JHRhYmxlID0gJHByZWZpeGVkX3RhYmxlOwoJCX0KCQlyZ
XR1cm4gJG9sZF9wcmVmaXg7Cgl9CgoJLyoqCgkgKiBTZXRzIGJsb2cgaWQuCgkgKgoJICogQHNpbmNlIDMu
MC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJhbSBpbnQgJGJsb2dfaWQKCSAqIEBwYXJhbSB
pbnQgJHNpdGVfaWQgT3B0aW9uYWwuCgkgKiBAcmV0dXJuIGludCBwcmV2aW91cyBibG9nIGlkCgkgKi8KCX
B1YmxpYyBmdW5jdGlvbiBzZXRfYmxvZ19pZCggJGJsb2dfaWQsICRzaXRlX2lkID0gMCApIHsKCQlpZiAoI
CEgZW1wdHkoICRzaXRlX2lkICkgKQoJCQkkdGhpcy0+c2l0ZWlkID0gJHNpdGVfaWQ7CgoJCSRvbGRfYmxv
Z19pZCAgPSAkdGhpcy0+YmxvZ2lkOwoJCSR0aGlzLT5ibG9naWQgPSAkYmxvZ19pZDsKCgkJJHRoaXMtPnB
yZWZpeCA9ICR0aGlzLT5nZXRfYmxvZ19wcmVmaXgoKTsKCgkJZm9yZWFjaCAoICR0aGlzLT50YWJsZXMoIC
dibG9nJyApIGFzICR0YWJsZSA9PiAkcHJlZml4ZWRfdGFibGUgKQoJCQkkdGhpcy0+JHRhYmxlID0gJHByZ
WZpeGVkX3RhYmxlOwoKCQlmb3JlYWNoICggJHRoaXMtPnRhYmxlcyggJ29sZCcgKSBhcyAkdGFibGUgPT4g
JHByZWZpeGVkX3RhYmxlICkKCQkJJHRoaXMtPiR0YWJsZSA9ICRwcmVmaXhlZF90YWJsZTsKCgkJcmV0dXJ
uICRvbGRfYmxvZ19pZDsKCX0KCgkvKioKCSAqIEdldHMgYmxvZyBwcmVmaXguCgkgKgoJICogQHNpbmNlID
MuMC4wCgkgKiBAcGFyYW0gaW50ICRibG9nX2lkIE9wdGlvbmFsLgoJICogQHJldHVybiBzdHJpbmcgQmxvZ
yBwcmVmaXguCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfYmxvZ19wcmVmaXgoICRibG9nX2lkID0gbnVs
bCApIHsKCQlpZiAoIGlzX211bHRpc2l0ZSgpICkgewoJCQlpZiAoIG51bGwgPT09ICRibG9nX2lkICkKCQk
JCSRibG9nX2lkID0gJHRoaXMtPmJsb2dpZDsKCQkJJGJsb2dfaWQgPSAoaW50KSAkYmxvZ19pZDsKCQkJaW
YgKCBkZWZpbmVkKCAnTVVMVElTSVRFJyApICYmICggMCA9PSAkYmxvZ19pZCB8fCAxID09ICRibG9nX2lkI
CkgKQoJCQkJcmV0dXJuICR0aGlzLT5iYXNlX3ByZWZpeDsKCQkJZWxzZQoJCQkJcmV0dXJuICR0aGlzLT5i
YXNlX3ByZWZpeCAuICRibG9nX2lkIC4gJ18nOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkdGhpcy0+YmFzZV9
wcmVmaXg7CgkJfQoJfQoKCS8qKgoJICogUmV0dXJucyBhbiBhcnJheSBvZiBXb3JkUHJlc3MgdGFibGVzLg
oJICoKCSAqIEFsc28gYWxsb3dzIGZvciB0aGUgQ1VTVE9NX1VTRVJfVEFCTEUgYW5kIENVU1RPTV9VU0VSX
01FVEFfVEFCTEUgdG8KCSAqIG92ZXJyaWRlIHRoZSBXb3JkUHJlc3MgdXNlcnMgYW5kIHVzZXJtZXRhIHRh
YmxlcyB0aGF0IHdvdWxkIG90aGVyd2lzZQoJICogYmUgZGV0ZXJtaW5lZCBieSB0aGUgcHJlZml4LgoJICo
KCSAqIFRoZSBzY29wZSBhcmd1bWVudCBjYW4gdGFrZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKCSAqCgkgKi
AnYWxsJyAtIHJldHVybnMgJ2FsbCcgYW5kICdnbG9iYWwnIHRhYmxlcy4gTm8gb2xkIHRhYmxlcyBhcmUgc
mV0dXJuZWQuCgkgKiAnYmxvZycgLSByZXR1cm5zIHRoZSBibG9nLWxldmVsIHRhYmxlcyBmb3IgdGhlIHF1
ZXJpZWQgYmxvZy4KCSAqICdnbG9iYWwnIC0gcmV0dXJucyB0aGUgZ2xvYmFsIHRhYmxlcyBmb3IgdGhlIGl
uc3RhbGxhdGlvbiwgcmV0dXJuaW5nIG11bHRpc2l0ZSB0YWJsZXMgb25seSBpZiBydW5uaW5nIG11bHRpc2
l0ZS4KCSAqICdtc19nbG9iYWwnIC0gcmV0dXJucyB0aGUgbXVsdGlzaXRlIGdsb2JhbCB0YWJsZXMsIHJlZ
2FyZGxlc3MgaWYgY3VycmVudCBpbnN0YWxsYXRpb24gaXMgbXVsdGlzaXRlLgoJICogJ29sZCcgLSByZXR1
cm5zIHRhYmxlcyB3aGljaCBhcmUgZGVwcmVjYXRlZC4KCSAqCgkgKiBAc2luY2UgMy4wLjAKCSAqIEB1c2V
zIHdwZGI6OiR0YWJsZXMKCSAqIEB1c2VzIHdwZGI6OiRvbGRfdGFibGVzCgkgKiBAdXNlcyB3cGRiOjokZ2
xvYmFsX3RhYmxlcwoJICogQHVzZXMgd3BkYjo6JG1zX2dsb2JhbF90YWJsZXMKCSAqCgkgKiBAcGFyYW0gc
3RyaW5nICRzY29wZSAgIE9wdGlvbmFsLiBDYW4gYmUgYWxsLCBnbG9iYWwsIG1zX2dsb2JhbCwgYmxvZywg
b3Igb2xkIHRhYmxlcy4gRGVmYXVsdHMgdG8gYWxsLgoJICogQHBhcmFtIGJvb2wgICAkcHJlZml4ICBPcHR
pb25hbC4gV2hldGhlciB0byBpbmNsdWRlIHRhYmxlIHByZWZpeGVzLiBEZWZhdWx0IHRydWUuIElmIGJsb2
cKCSAqICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4IGlzIHJlcXVlc3RlZCwgdGhlbiB0aGUgY3Vzd
G9tIHVzZXJzIGFuZCB1c2VybWV0YSB0YWJsZXMgd2lsbCBiZSBtYXBwZWQuCgkgKiBAcGFyYW0gaW50ICAg
ICRibG9nX2lkIE9wdGlvbmFsLiBUaGUgYmxvZ19pZCB0byBwcmVmaXguIERlZmF1bHRzIHRvIHdwZGI6OiR
ibG9naWQuIFVzZWQgb25seSB3aGVuIHByZWZpeCBpcyByZXF1ZXN0ZWQuCgkgKiBAcmV0dXJuIGFycmF5IF
RhYmxlIG5hbWVzLiBXaGVuIGEgcHJlZml4IGlzIHJlcXVlc3RlZCwgdGhlIGtleSBpcyB0aGUgdW5wcmVma
XhlZCB0YWJsZSBuYW1lLgoJICovCglwdWJsaWMgZnVuY3Rpb24gdGFibGVzKCAkc2NvcGUgPSAnYWxsJywg
JHByZWZpeCA9IHRydWUsICRibG9nX2lkID0gMCApIHsKCQlzd2l0Y2ggKCAkc2NvcGUgKSB7CgkJCWNhc2U
gJ2FsbCcgOgoJCQkJJHRhYmxlcyA9IGFycmF5X21lcmdlKCAkdGhpcy0+Z2xvYmFsX3RhYmxlcywgJHRoaX
MtPnRhYmxlcyApOwoJCQkJaWYgKCBpc19tdWx0aXNpdGUoKSApCgkJCQkJJHRhYmxlcyA9IGFycmF5X21lc
mdlKCAkdGFibGVzLCAkdGhpcy0+bXNfZ2xvYmFsX3RhYmxlcyApOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2Js
b2cnIDoKCQkJCSR0YWJsZXMgPSAkdGhpcy0+dGFibGVzOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ2dsb2JhbCc
gOgoJCQkJJHRhYmxlcyA9ICR0aGlzLT5nbG9iYWxfdGFibGVzOwoJCQkJaWYgKCBpc19tdWx0aXNpdGUoKS
ApCgkJCQkJJHRhYmxlcyA9IGFycmF5X21lcmdlKCAkdGFibGVzLCAkdGhpcy0+bXNfZ2xvYmFsX3RhYmxlc
yApOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ21zX2dsb2JhbCcgOgoJCQkJJHRhYmxlcyA9ICR0aGlzLT5tc19n
bG9iYWxfdGFibGVzOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ29sZCcgOgoJCQkJJHRhYmxlcyA9ICR0aGlzLT5
vbGRfdGFibGVzOwoJCQkJYnJlYWs7CgkJCWRlZmF1bHQgOgoJCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoKCQ
lpZiAoICRwcmVmaXggKSB7CgkJCWlmICggISAkYmxvZ19pZCApCgkJCQkkYmxvZ19pZCA9ICR0aGlzLT5ib
G9naWQ7CgkJCSRibG9nX3ByZWZpeCA9ICR0aGlzLT5nZXRfYmxvZ19wcmVmaXgoICRibG9nX2lkICk7CgkJ
CSRiYXNlX3ByZWZpeCA9ICR0aGlzLT5iYXNlX3ByZWZpeDsKCQkJJGdsb2JhbF90YWJsZXMgPSBhcnJheV9
tZXJnZSggJHRoaXMtPmdsb2JhbF90YWJsZXMsICR0aGlzLT5tc19nbG9iYWxfdGFibGVzICk7CgkJCWZvcm
VhY2ggKCAkdGFibGVzIGFzICRrID0+ICR0YWJsZSApIHsKCQkJCWlmICggaW5fYXJyYXkoICR0YWJsZSwgJ
Gdsb2JhbF90YWJsZXMgKSApCgkJCQkJJHRhYmxlc1sgJHRhYmxlIF0gPSAkYmFzZV9wcmVmaXggLiAkdGFi
bGU7CgkJCQllbHNlCgkJCQkJJHRhYmxlc1sgJHRhYmxlIF0gPSAkYmxvZ19wcmVmaXggLiAkdGFibGU7Cgk
JCQl1bnNldCggJHRhYmxlc1sgJGsgXSApOwoJCQl9CgoJCQlpZiAoIGlzc2V0KCAkdGFibGVzWyd1c2Vycy
ddICkgJiYgZGVmaW5lZCggJ0NVU1RPTV9VU0VSX1RBQkxFJyApICkKCQkJCSR0YWJsZXNbJ3VzZXJzJ10gP
SBDVVNUT01fVVNFUl9UQUJMRTsKCgkJCWlmICggaXNzZXQoICR0YWJsZXNbJ3VzZXJtZXRhJ10gKSAmJiBk
ZWZpbmVkKCAnQ1VTVE9NX1VTRVJfTUVUQV9UQUJMRScgKSApCgkJCQkkdGFibGVzWyd1c2VybWV0YSddID0
gQ1VTVE9NX1VTRVJfTUVUQV9UQUJMRTsKCQl9CgoJCXJldHVybiAkdGFibGVzOwoJfQoKCS8qKgoJICogU2
VsZWN0cyBhIGRhdGFiYXNlIHVzaW5nIHRoZSBjdXJyZW50IGRhdGFiYXNlIGNvbm5lY3Rpb24uCgkgKgoJI
CogVGhlIGRhdGFiYXNlIG5hbWUgd2lsbCBiZSBjaGFuZ2VkIGJhc2VkIG9uIHRoZSBjdXJyZW50IGRhdGFi
YXNlCgkgKiBjb25uZWN0aW9uLiBPbiBmYWlsdXJlLCB0aGUgZXhlY3V0aW9uIHdpbGwgYmFpbCBhbmQgZGl
zcGxheSBhbiBEQiBlcnJvci4KCSAqCgkgKiBAc2luY2UgMC43MQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgIC
AgICAgICRkYiAgTXlTUUwgZGF0YWJhc2UgbmFtZQoJICogQHBhcmFtIHJlc291cmNlfG51bGwgJGRiaCBPc
HRpb25hbCBsaW5rIGlkZW50aWZpZXIuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzZWxlY3QoICRkYiwgJGRi
aCA9IG51bGwgKSB7CgkJaWYgKCBpc19udWxsKCRkYmgpICkKCQkJJGRiaCA9ICR0aGlzLT5kYmg7CgoJCWl
mICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCSRzdWNjZXNzID0gQG15c3FsaV9zZWxlY3RfZGIoICRkYm
gsICRkYiApOwoJCX0gZWxzZSB7CgkJCSRzdWNjZ
XNzID0gQG15c3FsX3NlbGVjdF9kYiggJGRiLCAkZGJoICk7CgkJfQoJCWlmICggISAkc3VjY2VzcyApIHsK
CQkJJHRoaXMtPnJlYWR5ID0gZmFsc2U7CgkJCWlmICggISBkaWRfYWN0aW9uKCAndGVtcGxhdGVfcmVkaXJ
lY3QnICkgKSB7CgkJCQl3cF9sb2FkX3RyYW5zbGF0aW9uc19lYXJseSgpOwoKCQkJCSRtZXNzYWdlID0gJz
xoMT4nIC4gX18oICdDYW4mIzgyMTc7dCBzZWxlY3QgZGF0YWJhc2UnICkgLiAiPC9oMT5cbiI7CgoJCQkJJ
G1lc3NhZ2UgLj0gJzxwPicgLiBzcHJpbnRmKAoJCQkJCS8qIHRyYW5zbGF0b3JzOiAlczogZGF0YWJhc2Ug
bmFtZSAqLwoJCQkJCV9fKCAnV2Ugd2VyZSBhYmxlIHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIHNlcnZ
lciAod2hpY2ggbWVhbnMgeW91ciB1c2VybmFtZSBhbmQgcGFzc3dvcmQgaXMgb2theSkgYnV0IG5vdCBhYm
xlIHRvIHNlbGVjdCB0aGUgJXMgZGF0YWJhc2UuJyApLAoJCQkJCSc8Y29kZT4nIC4gaHRtbHNwZWNpYWxja
GFycyggJGRiLCBFTlRfUVVPVEVTICkgLiAnPC9jb2RlPicKCQkJCSkgLiAiPC9wPlxuIjsKCgkJCQkkbWVz
c2FnZSAuPSAiPHVsPlxuIjsKCQkJCSRtZXNzYWdlIC49ICc8bGk+JyAuIF9fKCAnQXJlIHlvdSBzdXJlIGl
0IGV4aXN0cz8nICkgLiAiPC9saT5cbiI7CgoJCQkJJG1lc3NhZ2UgLj0gJzxsaT4nIC4gc3ByaW50ZigKCQ
kJCQkvKiB0cmFuc2xhdG9yczogMTogZGF0YWJhc2UgdXNlciwgMjogZGF0YWJhc2UgbmFtZSAqLwoJCQkJC
V9fKCAnRG9lcyB0aGUgdXNlciAlMSRzIGhhdmUgcGVybWlzc2lvbiB0byB1c2UgdGhlICUyJHMgZGF0YWJh
c2U/JyApLAoJCQkJCSc8Y29kZT4nIC4gaHRtbHNwZWNpYWxjaGFycyggJHRoaXMtPmRidXNlciwgRU5UX1F
VT1RFUyApICAuICc8L2NvZGU+JywKCQkJCQknPGNvZGU+JyAuIGh0bWxzcGVjaWFsY2hhcnMoICRkYiwgRU
5UX1FVT1RFUyApIC4gJzwvY29kZT4nCgkJCQkpIC4gIjwvbGk+XG4iOwoKCQkJCSRtZXNzYWdlIC49ICc8b
Gk+JyAuIHNwcmludGYoCgkJCQkJLyogdHJhbnNsYXRvcnM6ICVzOiBkYXRhYmFzZSBuYW1lICovCgkJCQkJ
X18oICdPbiBzb21lIHN5c3RlbXMgdGhlIG5hbWUgb2YgeW91ciBkYXRhYmFzZSBpcyBwcmVmaXhlZCB3aXR
oIHlvdXIgdXNlcm5hbWUsIHNvIGl0IHdvdWxkIGJlIGxpa2UgPGNvZGU+dXNlcm5hbWVfJTEkczwvY29kZT
4uIENvdWxkIHRoYXQgYmUgdGhlIHByb2JsZW0/JyApLAoJCQkJCWh0bWxzcGVjaWFsY2hhcnMoICRkYiwgR
U5UX1FVT1RFUyApCgkJCQkpLiAiPC9saT5cbiI7CgoJCQkJJG1lc3NhZ2UgLj0gIjwvdWw+XG4iOwoKCQkJ
CSRtZXNzYWdlIC49ICc8cD4nIC4gc3ByaW50ZigKCQkJCQkvKiB0cmFuc2xhdG9yczogJXM6IHN1cHBvcnQ
gZm9ydW1zIFVSTCAqLwoJCQkJCV9fKCAnSWYgeW91IGRvbiYjODIxNzt0IGtub3cgaG93IHRvIHNldCB1cC
BhIGRhdGFiYXNlIHlvdSBzaG91bGQgPHN0cm9uZz5jb250YWN0IHlvdXIgaG9zdDwvc3Ryb25nPi4gSWYgY
WxsIGVsc2UgZmFpbHMgeW91IG1heSBmaW5kIGhlbHAgYXQgdGhlIDxhIGhyZWY9IiVzIj5Xb3JkUHJlc3Mg
U3VwcG9ydCBGb3J1bXM8L2E+LicgKSwKCQkJCQlfXyggJ2h0dHBzOi8vd29yZHByZXNzLm9yZy9zdXBwb3J
0LycgKQoJCQkJKSAuICI8L3A+XG4iOwoKCQkJCSR0aGlzLT5iYWlsKCAkbWVzc2FnZSwgJ2RiX3NlbGVjdF
9mYWlsJyApOwoJCQl9CgkJfQoJfQoKCS8qKgoJICogRG8gbm90IHVzZSwgZGVwcmVjYXRlZC4KCSAqCgkgK
iBVc2UgZXNjX3NxbCgpIG9yIHdwZGI6OnByZXBhcmUoKSBpbnN0ZWFkLgoJICoKCSAqIEBzaW5jZSAyLjgu
MAoJICogQGRlcHJlY2F0ZWQgMy42LjAgVXNlIHdwZGI6OnByZXBhcmUoKQoJICogQHNlZSB3cGRiOjpwcmV
wYXJlCgkgKiBAc2VlIGVzY19zcWwoKQoJICogQGFjY2VzcyBwcml2YXRlCgkgKgoJICogQHBhcmFtIHN0cm
luZyAkc3RyaW5nCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglmdW5jdGlvbiBfd2Vha19lc2NhcGUoICRzd
HJpbmcgKSB7CgkJaWYgKCBmdW5jX251bV9hcmdzKCkgPT09IDEgJiYgZnVuY3Rpb25fZXhpc3RzKCAnX2Rl
cHJlY2F0ZWRfZnVuY3Rpb24nICkgKQoJCQlfZGVwcmVjYXRlZF9mdW5jdGlvbiggX19NRVRIT0RfXywgJzM
uNicsICd3cGRiOjpwcmVwYXJlKCkgb3IgZXNjX3NxbCgpJyApOwoJCXJldHVybiBhZGRzbGFzaGVzKCAkc3
RyaW5nICk7Cgl9CgoJLyoqCgkgKiBSZWFsIGVzY2FwZSwgdXNpbmcgbXlzcWxpX3JlYWxfZXNjYXBlX3N0c
mluZygpIG9yIG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZygpCgkgKgoJICogQHNlZSBteXNxbGlfcmVhbF9l
c2NhcGVfc3RyaW5nKCkKCSAqIEBzZWUgbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCkKCSAqIEBzaW5jZSA
yLjguMAoJICogQGFjY2VzcyBwcml2YXRlCgkgKgoJICogQHBhcmFtICBzdHJpbmcgJHN0cmluZyB0byBlc2
NhcGUKCSAqIEByZXR1cm4gc3RyaW5nIGVzY2FwZWQKCSAqLwoJZnVuY3Rpb24gX3JlYWxfZXNjYXBlKCAkc
3RyaW5nICkgewoJCWlmICggJHRoaXMtPmRiaCApIHsKCQkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsK
CQkJCXJldHVybiBteXNxbGlfcmVhbF9lc2NhcGVfc3RyaW5nKCAkdGhpcy0+ZGJoLCAkc3RyaW5nICk7Cgk
JCX0gZWxzZSB7CgkJCQlyZXR1cm4gbXlzcWxfcmVhbF9lc2NhcGVfc3RyaW5nKCAkc3RyaW5nLCAkdGhpcy
0+ZGJoICk7CgkJCX0KCQl9CgoJCSRjbGFzcyA9IGdldF9jbGFzcyggJHRoaXMgKTsKCQlpZiAoIGZ1bmN0a
W9uX2V4aXN0cyggJ19fJyApICkgewoJCQkvKiB0cmFuc2xhdG9yczogJXM6IGRhdGFiYXNlIGFjY2VzcyBh
YnN0cmFjdGlvbiBjbGFzcywgdXN1YWxseSB3cGRiIG9yIGEgY2xhc3MgZXh0ZW5kaW5nIHdwZGIgKi8KCQk
JX2RvaW5nX2l0X3dyb25nKCAkY2xhc3MsIHNwcmludGYoIF9fKCAnJXMgbXVzdCBzZXQgYSBkYXRhYmFzZS
Bjb25uZWN0aW9uIGZvciB1c2Ugd2l0aCBlc2NhcGluZy4nICksICRjbGFzcyApLCBFX1VTRVJfTk9USUNFI
Ck7CgkJfSBlbHNlIHsKCQkJX2RvaW5nX2l0X3dyb25nKCAkY2xhc3MsIHNwcmludGYoICclcyBtdXN0IHNl
dCBhIGRhdGFiYXNlIGNvbm5lY3Rpb24gZm9yIHVzZSB3aXRoIGVzY2FwaW5nLicsICRjbGFzcyApLCBFX1V
TRVJfTk9USUNFICk7CgkJfQoJCXJldHVybiBhZGRzbGFzaGVzKCAkc3RyaW5nICk7Cgl9CgoJLyoqCgkgKi
BFc2NhcGUgZGF0YS4gV29ya3Mgb24gYXJyYXlzLgoJICoKCSAqIEB1c2VzIHdwZGI6Ol9yZWFsX2VzY2FwZ
SgpCgkgKiBAc2luY2UgIDIuOC4wCgkgKiBAYWNjZXNzIHByaXZhdGUKCSAqCgkgKiBAcGFyYW0gIHN0cmlu
Z3xhcnJheSAkZGF0YQoJICogQHJldHVybiBzdHJpbmd8YXJyYXkgZXNjYXBlZAoJICovCglmdW5jdGlvbiB
fZXNjYXBlKCAkZGF0YSApIHsKCQlpZiAoIGlzX2FycmF5KCAkZGF0YSApICkgewoJCQlmb3JlYWNoICggJG
RhdGEgYXMgJGsgPT4gJHYgKSB7CgkJCQlpZiAoIGlzX2FycmF5KCR2KSApCgkJCQkJJGRhdGFbJGtdID0gJ
HRoaXMtPl9lc2NhcGUoICR2ICk7CgkJCQllbHNlCgkJCQkJJGRhdGFbJGtdID0gJHRoaXMtPl9yZWFsX2Vz
Y2FwZSggJHYgKTsKCQkJfQoJCX0gZWxzZSB7CgkJCSRkYXRhID0gJHRoaXMtPl9yZWFsX2VzY2FwZSggJGR
hdGEgKTsKCQl9CgoJCXJldHVybiAkZGF0YTsKCX0KCgkvKioKCSAqIERvIG5vdCB1c2UsIGRlcHJlY2F0ZW
QuCgkgKgoJICogVXNlIGVzY19zcWwoKSBvciB3cGRiOjpwcmVwYXJlKCkgaW5zdGVhZC4KCSAqCgkgKiBAc
2luY2UgMC43MQoJICogQGRlcHJlY2F0ZWQgMy42LjAgVXNlIHdwZGI6OnByZXBhcmUoKQoJICogQHNlZSB3
cGRiOjpwcmVwYXJlKCkKCSAqIEBzZWUgZXNjX3NxbCgpCgkgKgoJICogQHBhcmFtIG1peGVkICRkYXRhCgk
gKiBAcmV0dXJuIG1peGVkCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBlc2NhcGUoICRkYXRhICkgewoJCWlmIC
ggZnVuY19udW1fYXJncygpID09PSAxICYmIGZ1bmN0aW9uX2V4aXN0cyggJ19kZXByZWNhdGVkX2Z1bmN0a
W9uJyApICkKCQkJX2RlcHJlY2F0ZWRfZnVuY3Rpb24oIF9fTUVUSE9EX18sICczLjYnLCAnd3BkYjo6cHJl
cGFyZSgpIG9yIGVzY19zcWwoKScgKTsKCQlpZiAoIGlzX2FycmF5KCAkZGF0YSApICkgewoJCQlmb3JlYWN
oICggJGRhdGEgYXMgJGsgPT4gJHYgKSB7CgkJCQlpZiAoIGlzX2FycmF5KCAkdiApICkKCQkJCQkkZGF0YV
ska10gPSAkdGhpcy0+ZXNjYXBlKCAkdiwgJ3JlY3Vyc2l2ZScgKTsKCQkJCWVsc2UKCQkJCQkkZGF0YVska
10gPSAkdGhpcy0+X3dlYWtfZXNjYXBlKCAkdiwgJ2ludGVybmFsJyApOwoJCQl9CgkJfSBlbHNlIHsKCQkJ
JGRhdGEgPSAkdGhpcy0+X3dlYWtfZXNjYXBlKCAkZGF0YSwgJ2ludGVybmFsJyApOwoJCX0KCgkJcmV0dXJ
uICRkYXRhOwoJfQoKCS8qKgoJICogRXNjYXBlcyBjb250ZW50IGJ5IHJlZmVyZW5jZSBmb3IgaW5zZXJ0aW
9uIGludG8gdGhlIGRhdGFiYXNlLCBmb3Igc2VjdXJpdHkKCSAqCgkgKiBAdXNlcyB3cGRiOjpfcmVhbF9lc
2NhcGUoKQoJICoKCSAqIEBzaW5jZSAyLjMuMAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyB0byBl
c2NhcGUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGVzY2FwZV9ieV9yZWYoICYkc3RyaW5nICkgewoJCWlmICg
gISBpc19mbG9hdCggJHN0cmluZyApICkKCQkJJHN0cmluZyA9ICR0aGlzLT5fcmVhbF9lc2NhcGUoICRzdH
JpbmcgKTsKCX0KCgkvKioKCSAqIFByZXBhcmVzIGEgU1FMIHF1ZXJ5IGZvciBzYWZlIGV4ZWN1dGlvbi4gV
XNlcyBzcHJpbnRmKCktbGlrZSBzeW50YXguCgkgKgoJICogVGhlIGZvbGxvd2luZyBkaXJlY3RpdmVzIGNh
biBiZSB1c2VkIGluIHRoZSBxdWVyeSBmb3JtYXQgc3RyaW5nOgoJICogICAlZCAoaW50ZWdlcikKCSAqICA
gJWYgKGZsb2F0KQoJICogICAlcyAoc3RyaW5nKQoJICogICAlJSAobGl0ZXJhbCBwZXJjZW50YWdlIHNpZ2
4gLSBubyBhcmd1bWVudCBuZWVkZWQpCgkgKgoJICogQWxsIG9mICVkLCAlZiwgYW5kICVzIGFyZSB0byBiZ
SBsZWZ0IHVucXVvdGVkIGluIHRoZSBxdWVyeSBzdHJpbmcgYW5kIHRoZXkgbmVlZCBhbiBhcmd1bWVudCBw
YXNzZWQgZm9yIHRoZW0uCgkgKiBMaXRlcmFscyAoJSkgYXMgcGFydHMgb2YgdGhlIHF1ZXJ5IG11c3QgYmU
gcHJvcGVybHkgd3JpdHRlbiBhcyAlJS4KCSAqCgkgKiBUaGlzIGZ1bmN0aW9uIG9ubHkgc3VwcG9ydHMgYS
BzbWFsbCBzdWJzZXQgb2YgdGhlIHNwcmludGYgc3ludGF4OyBpdCBvbmx5IHN1cHBvcnRzICVkIChpbnRlZ
2VyKSwgJWYgKGZsb2F0KSwgYW5kICVzIChzdHJpbmcpLgoJICogRG9lcyBub3Qgc3VwcG9ydCBzaWduLCBw
YWRkaW5nLCBhbGlnbm1lbnQsIHdpZHRoIG9yIHByZWNpc2lvbiBzcGVjaWZpZXJzLgoJICogRG9lcyBub3Q
gc3VwcG9ydCBhcmd1bWVudCBudW1iZXJpbmcvc3dhcHBpbmcuCgkgKgoJICogTWF5IGJlIGNhbGxlZCBsaW
tlIHtAbGluayBodHRwOi8vcGhwLm5ldC9zcHJpbnRmIHNwcmludGYoKX0gb3IgbGlrZSB7QGxpbmsgaHR0c
DovL3BocC5uZXQvdnNwcmludGYgdnNwcmludGYoKX0uCgkgKgoJICogQm90aCAlZCBhbmQgJXMgc2hvdWxk
IGJlIGxlZnQgdW5xdW90ZWQgaW4gdGhlIHF1ZXJ5IHN0cmluZy4KCSAqCgkgKiAgICAgd3BkYjo6cHJlcGF
yZSggIlNFTEVDVCAqIEZST00gYHRhYmxlYCBXSEVSRSBgY29sdW1uYCA9ICVzIEFORCBgZmllbGRgID0gJW
QiLCAnZm9vJywgMTMzNyApCgkgKiAgICAgd3BkYjo6cHJlcGFyZSggIlNFTEVDVCBEQVRFX0ZPUk1BVChgZ
mllbGRgLCAnJSVjJykgRlJPTSBgdGFibGVgIFdIRVJFIGBjb2x1bW5gID0gJXMiLCAnZm9vJyApOwoJICoK
CSAqIEBsaW5rIGh0dHA6Ly9waHAubmV0L3NwcmludGYgRGVzY3JpcHRpb24gb2Ygc3ludGF4LgoJICogQHN
pbmNlIDIuMy4wCgkgKgoJICogQHBhcmFtIHN0cmluZyAgICAgICRxdWVyeSAgICBRdWVyeSBzdGF0ZW1lbn
Qgd2l0aCBzcHJpbnRmKCktbGlrZSBwbGFjZWhvbGRlcnMKCSAqIEBwYXJhbSBhcnJheXxtaXhlZCAkYXJnc
yAgICAgVGhlIGFycmF5IG9mIHZhcmlhYmxlcyB0byBzdWJzdGl0dXRlIGludG8gdGhlIHF1ZXJ5J3MgcGxh
Y2Vob2xkZXJzIGlmIGJlaW5nIGNhbGxlZCBsaWtlCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gIHtAbGluayBodHRwOi8vcGhwLm5ldC92c3ByaW50ZiB2c3ByaW50ZigpfSwgb3IgdGhlIGZpcnN0IHZhcm
lhYmxlIHRvIHN1YnN0aXR1dGUgaW50byB0aGUgcXVlcnkncyBwbGFjZWhvbGRlcnMgaWYKCSAqICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgYmVpbmcgY2FsbGVkIGxpa2Uge0BsaW5rIGh0dHA6Ly9waHAubmV0
L3NwcmludGYgc3ByaW50ZigpfS4KCSAqIEBwYXJhbSBtaXhlZCAgICAgICAkYXJncywuLi4gZnVydGhlciB
2YXJpYWJsZXMgdG8gc3Vic3RpdHV0ZSBpbnRvIHRoZSBxdWVyeSdzIHBsYWNlaG9sZGVycyBpZiBiZWluZy
BjYWxsZWQgbGlrZQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7QGxpbmsgaHR0cDovL3Boc
C5uZXQvc3ByaW50ZiBzcHJpbnRmKCl9LgoJICogQHJldHVybiBzdHJpbmd8dm9pZCBTYW5pdGl6ZWQgcXVl
cnkgc3RyaW5nLCBpZiB0aGVyZSBpcyBhIHF1ZXJ5IHRvIHByZXBhcmUuCgkgKi8KCXB1YmxpYyBmdW5jdGl
vbiBwcmVwYXJlKCAkcXVlcnksICRhcmdzICkgewoJCWlmICggaXNfbnVsbCggJHF1ZXJ5ICkgKQoJCQlyZX
R1cm47CgoJCS8vIFRoaXMgaXMgbm90IG1lYW50IHRvIGJlIGZvb2xwcm9vZiAtLSBidXQgaXQgd2lsbCBjY
XRjaCBvYnZpb3VzbHkgaW5jb3JyZWN0IHVzYWdlLgoJCWlmICggc3RycG9zKCAkcXVlcnksICclJyApID09
PSBmYWxzZSApIHsKCQkJX2RvaW5nX2l0X3dyb25nKCAnd3BkYjo6cHJlcGFyZScsIHNwcmludGYoIF9fKCA
nVGhlIHF1ZXJ5IGFyZ3VtZW50IG9mICVzIG11c3QgaGF2ZSBhIHBsYWNlaG9sZGVyLicgKSwgJ3dwZGI6On
ByZXBhcmUoKScgKSwgJzMuOScgKTsKCQl9CgoJCSRhcmdzID0gZnVuY19nZXRfYXJncygpOwoJCWFycmF5X
3NoaWZ0KCAkYXJncyApOwoJCS8vIElmIGFyZ3Mgd2VyZSBwYXNzZWQgYXMgYW4gYXJyYXkgKGFzIGluIHZz
cHJpbnRmKSwgbW92ZSB0aGVtIHVwCgkJaWYgKCBpc3NldCggJGFyZ3NbMF0gKSAmJiBpc19hcnJheSgkYXJ
nc1swXSkgKQoJCQkkYXJncyA9ICRhcmdzWzBdOwoJCSRxdWVyeSA9IHN0cl9yZXBsYWNlKCAiJyVzJyIsIC
clcycsICRxdWVyeSApOyAvLyBpbiBjYXNlIHNvbWVvbmUgbWlzdGFrZW5seSBhbHJlYWR5IHNpbmdsZXF1b
3RlZCBpdAoJCSRxdWVyeSA9IHN0cl9yZXBsYWNlKCAnIiVzIicsICclcycsICRxdWVyeSApOyAvLyBkb3Vi
bGVxdW90ZSB1bnF1b3RpbmcKCQkkcXVlcnkgPSBwcmVnX3JlcGxhY2UoICd8KD88ISUpJWZ8JyAsICclRic
sICRxdWVyeSApOyAvLyBGb3JjZSBmbG9hdHMgdG8gYmUgbG9jYWxlIHVuYXdhcmUKCQkkcXVlcnkgPSBwcm
VnX3JlcGxhY2UoICd8KD88ISUpJXN8JywgIiclcyciLCAkcXVlcnkgKTsgLy8gcXVvdGUgdGhlIHN0cmluZ
3MsIGF2b2lkaW5nIGVzY2FwZWQgc3RyaW5ncyBs
aWtlICUlcwoJCWFycmF5X3dhbGsoICRhcmdzLCBhcnJheSggJHRoaXMsICdlc2NhcGVfYnlfcmVmJyApICk
7CgkJcmV0dXJuIEB2c3ByaW50ZiggJHF1ZXJ5LCAkYXJncyApOwoJfQoKCS8qKgoJICogRmlyc3QgaGFsZi
BvZiBlc2NhcGluZyBmb3IgTElLRSBzcGVjaWFsIGNoYXJhY3RlcnMgJSBhbmQgXyBiZWZvcmUgcHJlcGFya
W5nIGZvciBNeVNRTC4KCSAqCgkgKiBVc2UgdGhpcyBvbmx5IGJlZm9yZSB3cGRiOjpwcmVwYXJlKCkgb3Ig
ZXNjX3NxbCgpLiAgUmV2ZXJzaW5nIHRoZSBvcmRlciBpcyB2ZXJ5IGJhZCBmb3Igc2VjdXJpdHkuCgkgKgo
JICogRXhhbXBsZSBQcmVwYXJlZCBTdGF0ZW1lbnQ6CgkgKiAgJHdpbGQgPSAnJSc7CgkgKiAgJGZpbmQgPS
Anb25seSA0MyUgb2YgcGxhbmV0cyc7CgkgKiAgJGxpa2UgPSAkd2lsZCAuICR3cGRiLT5lc2NfbGlrZSggJ
GZpbmQgKSAuICR3aWxkOwoJICogICRzcWwgID0gJHdwZGItPnByZXBhcmUoICJTRUxFQ1QgKiBGUk9NICR3
cGRiLT5wb3N0cyBXSEVSRSBwb3N0X2NvbnRlbnQgTElLRSAlcyIsICRsaWtlICk7CgkgKgoJICogRXhhbXB
sZSBFc2NhcGUgQ2hhaW46CgkgKiAgJHNxbCAgPSBlc2Nfc3FsKCAkd3BkYi0+ZXNjX2xpa2UoICRpbnB1dC
ApICk7CgkgKgoJICogQHNpbmNlIDQuMC4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJhbSBzd
HJpbmcgJHRleHQgVGhlIHJhdyB0ZXh0IHRvIGJlIGVzY2FwZWQuIFRoZSBpbnB1dCB0eXBlZCBieSB0aGUg
dXNlciBzaG91bGQgaGF2ZSBubwoJICogICAgICAgICAgICAgICAgICAgICBleHRyYSBvciBkZWxldGVkIHN
sYXNoZXMuCgkgKiBAcmV0dXJuIHN0cmluZyBUZXh0IGluIHRoZSBmb3JtIG9mIGEgTElLRSBwaHJhc2UuIF
RoZSBvdXRwdXQgaXMgbm90IFNRTCBzYWZlLiBDYWxsICR3cGRiOjpwcmVwYXJlKCkKCSAqICAgICAgICAgI
CAgICAgIG9yIHJlYWxfZXNjYXBlIG5leHQuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBlc2NfbGlrZSggJHRl
eHQgKSB7CgkJcmV0dXJuIGFkZGNzbGFzaGVzKCAkdGV4dCwgJ18lXFwnICk7Cgl9CgoJLyoqCgkgKiBQcml
udCBTUUwvREIgZXJyb3IuCgkgKgoJICogQHNpbmNlIDAuNzEKCSAqIEBnbG9iYWwgYXJyYXkgJEVaU1FMX0
VSUk9SIFN0b3JlcyBlcnJvciBpbmZvcm1hdGlvbiBvZiBxdWVyeSBhbmQgZXJyb3Igc3RyaW5nCgkgKgoJI
CogQHBhcmFtIHN0cmluZyAkc3RyIFRoZSBlcnJvciB0byBkaXNwbGF5CgkgKiBAcmV0dXJuIGZhbHNlfHZv
aWQgRmFsc2UgaWYgdGhlIHNob3dpbmcgb2YgZXJyb3JzIGlzIGRpc2FibGVkLgoJICovCglwdWJsaWMgZnV
uY3Rpb24gcHJpbnRfZXJyb3IoICRzdHIgPSAnJyApIHsKCQlnbG9iYWwgJEVaU1FMX0VSUk9SOwoKCQlpZi
AoICEkc3RyICkgewoJCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkJJHN0ciA9IG15c3FsaV9lc
nJvciggJHRoaXMtPmRiaCApOwoJCQl9IGVsc2UgewoJCQkJJHN0ciA9IG15c3FsX2Vycm9yKCAkdGhpcy0+
ZGJoICk7CgkJCX0KCQl9CgkJJEVaU1FMX0VSUk9SW10gPSBhcnJheSggJ3F1ZXJ5JyA9PiAkdGhpcy0+bGF
zdF9xdWVyeSwgJ2Vycm9yX3N0cicgPT4gJHN0ciApOwoKCQlpZiAoICR0aGlzLT5zdXBwcmVzc19lcnJvcn
MgKQoJCQlyZXR1cm4gZmFsc2U7CgoJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhcmx5KCk7CgoJCWlmICggJ
GNhbGxlciA9ICR0aGlzLT5nZXRfY2FsbGVyKCkgKQoJCQkkZXJyb3Jfc3RyID0gc3ByaW50ZiggX18oICdX
b3JkUHJlc3MgZGF0YWJhc2UgZXJyb3IgJTEkcyBmb3IgcXVlcnkgJTIkcyBtYWRlIGJ5ICUzJHMnICksICR
zdHIsICR0aGlzLT5sYXN0X3F1ZXJ5LCAkY2FsbGVyICk7CgkJZWxzZQoJCQkkZXJyb3Jfc3RyID0gc3ByaW
50ZiggX18oICdXb3JkUHJlc3MgZGF0YWJhc2UgZXJyb3IgJTEkcyBmb3IgcXVlcnkgJTIkcycgKSwgJHN0c
iwgJHRoaXMtPmxhc3RfcXVlcnkgKTsKCgkJZXJyb3JfbG9nKCAkZXJyb3Jfc3RyICk7CgoJCS8vIEFyZSB3
ZSBzaG93aW5nIGVycm9ycz8KCQlpZiAoICEgJHRoaXMtPnNob3dfZXJyb3JzICkKCQkJcmV0dXJuIGZhbHN
lOwoKCQkvLyBJZiB0aGVyZSBpcyBhbiBlcnJvciB0aGVuIHRha2Ugbm90ZSBvZiBpdAoJCWlmICggaXNfbX
VsdGlzaXRlKCkgKSB7CgkJCSRtc2cgPSBzcHJpbnRmKAoJCQkJIiVzIFslc11cbiVzXG4iLAoJCQkJX18oI
CdXb3JkUHJlc3MgZGF0YWJhc2UgZXJyb3I6JyApLAoJCQkJJHN0ciwKCQkJCSR0aGlzLT5sYXN0X3F1ZXJ5
CgkJCSk7CgoJCQlpZiAoIGRlZmluZWQoICdFUlJPUkxPR0ZJTEUnICkgKSB7CgkJCQllcnJvcl9sb2coICR
tc2csIDMsIEVSUk9STE9HRklMRSApOwoJCQl9CgkJCWlmICggZGVmaW5lZCggJ0RJRU9OREJFUlJPUicgKS
ApIHsKCQkJCXdwX2RpZSggJG1zZyApOwoJCQl9CgkJfSBlbHNlIHsKCQkJJHN0ciAgID0gaHRtbHNwZWNpY
WxjaGFycyggJHN0ciwgRU5UX1FVT1RFUyApOwoJCQkkcXVlcnkgPSBodG1sc3BlY2lhbGNoYXJzKCAkdGhp
cy0+bGFzdF9xdWVyeSwgRU5UX1FVT1RFUyApOwoKCQkJcHJpbnRmKAoJCQkJJzxkaXYgaWQ9ImVycm9yIj4
8cCBjbGFzcz0id3BkYmVycm9yIj48c3Ryb25nPiVzPC9zdHJvbmc+IFslc108YnIgLz48Y29kZT4lczwvY2
9kZT48L3A+PC9kaXY+JywKCQkJCV9fKCAnV29yZFByZXNzIGRhdGFiYXNlIGVycm9yOicgKSwKCQkJCSRzd
HIsCgkJCQkkcXVlcnkKCQkJKTsKCQl9Cgl9CgoJLyoqCgkgKiBFbmFibGVzIHNob3dpbmcgb2YgZGF0YWJh
c2UgZXJyb3JzLgoJICoKCSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgb25seSB0byBlbmFibGU
gc2hvd2luZyBvZiBlcnJvcnMuCgkgKiB3cGRiOjpoaWRlX2Vycm9ycygpIHNob3VsZCBiZSB1c2VkIGluc3
RlYWQgZm9yIGhpZGluZyBvZiBlcnJvcnMuIEhvd2V2ZXIsCgkgKiB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB1c
2VkIHRvIGVuYWJsZSBhbmQgZGlzYWJsZSBzaG93aW5nIG9mIGRhdGFiYXNlCgkgKiBlcnJvcnMuCgkgKgoJ
ICogQHNpbmNlIDAuNzEKCSAqIEBzZWUgd3BkYjo6aGlkZV9lcnJvcnMoKQoJICoKCSAqIEBwYXJhbSBib29
sICRzaG93IFdoZXRoZXIgdG8gc2hvdyBvciBoaWRlIGVycm9ycwoJICogQHJldHVybiBib29sIE9sZCB2YW
x1ZSBmb3Igc2hvd2luZyBlcnJvcnMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzaG93X2Vycm9ycyggJHNob
3cgPSB0cnVlICkgewoJCSRlcnJvcnMgPSAkdGhpcy0+c2hvd19lcnJvcnM7CgkJJHRoaXMtPnNob3dfZXJy
b3JzID0gJHNob3c7CgkJcmV0dXJuICRlcnJvcnM7Cgl9CgoJLyoqCgkgKiBEaXNhYmxlcyBzaG93aW5nIG9
mIGRhdGFiYXNlIGVycm9ycy4KCSAqCgkgKiBCeSBkZWZhdWx0IGRhdGFiYXNlIGVycm9ycyBhcmUgbm90IH
Nob3duLgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKiBAc2VlIHdwZGI6OnNob3dfZXJyb3JzKCkKCSAqCgkgK
iBAcmV0dXJuIGJvb2wgV2hldGhlciBzaG93aW5nIG9mIGVycm9ycyB3YXMgYWN0aXZlCgkgKi8KCXB1Ymxp
YyBmdW5jdGlvbiBoaWRlX2Vycm9ycygpIHsKCQkkc2hvdyA9ICR0aGlzLT5zaG93X2Vycm9yczsKCQkkdGh
pcy0+c2hvd19lcnJvcnMgPSBmYWxzZTsKCQlyZXR1cm4gJHNob3c7Cgl9CgoJLyoqCgkgKiBXaGV0aGVyIH
RvIHN1cHByZXNzIGRhdGFiYXNlIGVycm9ycy4KCSAqCgkgKiBCeSBkZWZhdWx0IGRhdGFiYXNlIGVycm9yc
yBhcmUgc3VwcHJlc3NlZCwgd2l0aCBhIHNpbXBsZQoJICogY2FsbCB0byB0aGlzIGZ1bmN0aW9uIHRoZXkg
Y2FuIGJlIGVuYWJsZWQuCgkgKgoJICogQHNpbmNlIDIuNS4wCgkgKiBAc2VlIHdwZGI6OmhpZGVfZXJyb3J
zKCkKCSAqIEBwYXJhbSBib29sICRzdXBwcmVzcyBPcHRpb25hbC4gTmV3IHZhbHVlLiBEZWZhdWx0cyB0by
B0cnVlLgoJICogQHJldHVybiBib29sIE9sZCB2YWx1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gc3VwcHJlc
3NfZXJyb3JzKCAkc3VwcHJlc3MgPSB0cnVlICkgewoJCSRlcnJvcnMgPSAkdGhpcy0+c3VwcHJlc3NfZXJy
b3JzOwoJCSR0aGlzLT5zdXBwcmVzc19lcnJvcnMgPSAoYm9vbCkgJHN1cHByZXNzOwoJCXJldHVybiAkZXJ
yb3JzOwoJfQoKCS8qKgoJICogS2lsbCBjYWNoZWQgcXVlcnkgcmVzdWx0cy4KCSAqCgkgKiBAc2luY2UgMC
43MQoJICovCglwdWJsaWMgZnVuY3Rpb24gZmx1c2goKSB7CgkJJHRoaXMtPmxhc3RfcmVzdWx0ID0gYXJyY
XkoKTsKCQkkdGhpcy0+Y29sX2luZm8gICAgPSBudWxsOwoJCSR0aGlzLT5sYXN0X3F1ZXJ5ICA9IG51bGw7
CgkJJHRoaXMtPnJvd3NfYWZmZWN0ZWQgPSAkdGhpcy0+bnVtX3Jvd3MgPSAwOwoJCSR0aGlzLT5sYXN0X2V
ycm9yICA9ICcnOwoKCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICYmICR0aGlzLT5yZXN1bHQgaW5zdGFuY2
VvZiBteXNxbGlfcmVzdWx0ICkgewoJCQlteXNxbGlfZnJlZV9yZXN1bHQoICR0aGlzLT5yZXN1bHQgKTsKC
QkJJHRoaXMtPnJlc3VsdCA9IG51bGw7CgoJCQkvLyBTYW5pdHkgY2hlY2sgYmVmb3JlIHVzaW5nIHRoZSBo
YW5kbGUKCQkJaWYgKCBlbXB0eSggJHRoaXMtPmRiaCApIHx8ICEoICR0aGlzLT5kYmggaW5zdGFuY2VvZiB
teXNxbGkgKSApIHsKCQkJCXJldHVybjsKCQkJfQoKCQkJLy8gQ2xlYXIgb3V0IGFueSByZXN1bHRzIGZyb2
0gYSBtdWx0aS1xdWVyeQoJCQl3aGlsZSAoIG15c3FsaV9tb3JlX3Jlc3VsdHMoICR0aGlzLT5kYmggKSApI
HsKCQkJCW15c3FsaV9uZXh0X3Jlc3VsdCggJHRoaXMtPmRiaCApOwoJCQl9CgkJfSBlbHNlaWYgKCBpc19y
ZXNvdXJjZSggJHRoaXMtPnJlc3VsdCApICkgewoJCQlteXNxbF9mcmVlX3Jlc3VsdCggJHRoaXMtPnJlc3V
sdCApOwoJCX0KCX0KCgkvKioKCSAqIENvbm5lY3QgdG8gYW5kIHNlbGVjdCBkYXRhYmFzZS4KCSAqCgkgKi
BJZiAkYWxsb3dfYmFpbCBpcyBmYWxzZSwgdGhlIGxhY2sgb2YgZGF0YWJhc2UgY29ubmVjdGlvbiB3aWxsI
G5lZWQKCSAqIHRvIGJlIGhhbmRsZWQgbWFudWFsbHkuCgkgKgoJICogQHNpbmNlIDMuMC4wCgkgKiBAc2lu
Y2UgMy45LjAgJGFsbG93X2JhaWwgcGFyYW1ldGVyIGFkZGVkLgoJICoKCSAqIEBwYXJhbSBib29sICRhbGx
vd19iYWlsIE9wdGlvbmFsLiBBbGxvd3MgdGhlIGZ1bmN0aW9uIHRvIGJhaWwuIERlZmF1bHQgdHJ1ZS4KCS
AqIEByZXR1cm4gYm9vbCBUcnVlIHdpdGggYSBzdWNjZXNzZnVsIGNvbm5lY3Rpb24sIGZhbHNlIG9uIGZha
Wx1cmUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBkYl9jb25uZWN0KCAkYWxsb3dfYmFpbCA9IHRydWUgKSB7
CgkJJHRoaXMtPmlzX215c3FsID0gdHJ1ZTsKCgkJLyoKCQkgKiBEZXByZWNhdGVkIGluIDMuOSsgd2hlbiB
1c2luZyBNeVNRTGkuIE5vIGVxdWl2YWxlbnQKCQkgKiAkbmV3X2xpbmsgcGFyYW1ldGVyIGV4aXN0cyBmb3
IgbXlzcWxpXyogZnVuY3Rpb25zLgoJCSAqLwoJCSRuZXdfbGluayA9IGRlZmluZWQoICdNWVNRTF9ORVdfT
ElOSycgKSA/IE1ZU1FMX05FV19MSU5LIDogdHJ1ZTsKCQkkY2xpZW50X2ZsYWdzID0gZGVmaW5lZCggJ01Z
U1FMX0NMSUVOVF9GTEFHUycgKSA/IE1ZU1FMX0NMSUVOVF9GTEFHUyA6IDA7CgoJCWlmICggJHRoaXMtPnV
zZV9teXNxbGkgKSB7CgkJCSR0aGlzLT5kYmggPSBteXNxbGlfaW5pdCgpOwoKCQkJLy8gbXlzcWxpX3JlYW
xfY29ubmVjdCBkb2Vzbid0IHN1cHBvcnQgdGhlIGhvc3QgcGFyYW0gaW5jbHVkaW5nIGEgcG9ydCBvciBzb
2NrZXQKCQkJLy8gbGlrZSBteXNxbF9jb25uZWN0IGRvZXMuIFRoaXMgZHVwbGljYXRlcyBob3cgbXlzcWxf
Y29ubmVjdCBkZXRlY3RzIGEgcG9ydCBhbmQvb3Igc29ja2V0IGZpbGUuCgkJCSRwb3J0ID0gbnVsbDsKCQk
JJHNvY2tldCA9IG51bGw7CgkJCSRob3N0ID0gJHRoaXMtPmRiaG9zdDsKCQkJJHBvcnRfb3Jfc29ja2V0ID
0gc3Ryc3RyKCAkaG9zdCwgJzonICk7CgkJCWlmICggISBlbXB0eSggJHBvcnRfb3Jfc29ja2V0ICkgKSB7C
gkJCQkkaG9zdCA9IHN1YnN0ciggJGhvc3QsIDAsIHN0cnBvcyggJGhvc3QsICc6JyApICk7CgkJCQkkcG9y
dF9vcl9zb2NrZXQgPSBzdWJzdHIoICRwb3J0X29yX3NvY2tldCwgMSApOwoJCQkJaWYgKCAwICE9PSBzdHJ
wb3MoICRwb3J0X29yX3NvY2tldCwgJy8nICkgKSB7CgkJCQkJJHBvcnQgPSBpbnR2YWwoICRwb3J0X29yX3
NvY2tldCApOwoJCQkJCSRtYXliZV9zb2NrZXQgPSBzdHJzdHIoICRwb3J0X29yX3NvY2tldCwgJzonICk7C
gkJCQkJaWYgKCAhIGVtcHR5KCAkbWF5YmVfc29ja2V0ICkgKSB7CgkJCQkJCSRzb2NrZXQgPSBzdWJzdHIo
ICRtYXliZV9zb2NrZXQsIDEgKTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCSRzb2NrZXQgPSAkcG9ydF9
vcl9zb2NrZXQ7CgkJCQl9CgkJCX0KCgkJCWlmICggV1BfREVCVUcgKSB7CgkJCQlteXNxbGlfcmVhbF9jb2
5uZWN0KCAkdGhpcy0+ZGJoLCAkaG9zdCwgJHRoaXMtPmRidXNlciwgJHRoaXMtPmRicGFzc3dvcmQsIG51b
GwsICRwb3J0LCAkc29ja2V0LCAkY2xpZW50X2ZsYWdzICk7CgkJCX0gZWxzZSB7CgkJCQlAbXlzcWxpX3Jl
YWxfY29ubmVjdCggJHRoaXMtPmRiaCwgJGhvc3QsICR0aGlzLT5kYnVzZXIsICR0aGlzLT5kYnBhc3N3b3J
kLCBudWxsLCAkcG9ydCwgJHNvY2tldCwgJGNsaWVudF9mbGFncyApOwoJCQl9CgoJCQlpZiAoICR0aGlzLT
5kYmgtPmNvbm5lY3RfZXJybm8gKSB7CgkJCQkkdGhpcy0+ZGJoID0gbnVsbDsKCgkJCQkvKiBJdCdzIHBvc
3NpYmxlIGV4dC9teXNxbGkgaXMgbWlzY29uZmlndXJlZC4gRmFsbCBiYWNrIHRvIGV4dC9teXNxbCBpZjoK
CQkgCQkgKiAgLSBXZSBoYXZlbid0IHByZXZpb3VzbHkgY29ubmVjdGVkLCBhbmQKCQkgCQkgKiAgLSBXUF9
VU0VfRVhUX01ZU1FMIGlzbid0IHNldCB0byBmYWxzZSwgYW5kCgkJIAkJICogIC0gZXh0L215c3FsIGlzIG
xvYWRlZC4KCQkgCQkgKi8KCQkJCSRhdHRlbXB0X2ZhbGxiYWNrID0gdHJ1ZTsKCgkJCQlpZiAoICR0aGlzL
T5oYXNfY29ubmVjdGVkICkgewoJCQkJCSRhdHRlbXB0X2ZhbGxiYWNrID0gZmFsc2U7CgkJCQl9IGVsc2Vp
ZiAoIGRlZmluZWQoICdXUF9VU0VfRVhUX01ZU1FMJyApICYmICEgV1BfVVNFX0VYVF9NWVNRTCApIHsKCQk
JCQkkYXR0ZW1wdF9mYWxsYmFjayA9IGZhbHNlOwoJCQkJfSBlbHNlaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cy
ggJ215c3FsX2Nvbm5lY3QnICkgKSB7CgkJCQkJJGF0dGVtcHRfZmFsbGJhY2sgPSBmYWxzZTsKCQkJCX0KC
gkJCQlpZiAoICRhdHRlbXB0X2ZhbGxiYWNrICkgewoJCQkJCSR0aGlzLT51c2VfbXlzcWxpID0gZmFsc2U7
CgkJCQkJcmV0dXJuICR0aGlzLT5kYl9jb25uZWN0KCAkYWxsb3dfYmFpbCApOwoJCQkJfQoJCQl9CgkJfSB
lbHNlIHsKCQkJaWYgKCBXUF9ERUJVRyApIHsKCQkJCSR0aGlzLT5kYmggPSBteXNxbF9jb25uZWN0KCAkdG
hpcy0+ZGJob3N0LCAkdGhpcy0+ZGJ1c2VyLCAkdGhpcy0+ZGJwYXNzd29yZCwgJG5ld19saW5rLCAkY2xpZ
W50X2ZsYWdzICk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+ZGJoID0gQG15c3FsX2Nvbm5lY3QoICR0aGlz
LT5kYmhvc3QsICR0aGlzLT5kYnVzZXIsICR0aGl
zLT5kYnBhc3N3b3JkLCAkbmV3X2xpbmssICRjbGllbnRfZmxhZ3MgKTsKCQkJfQoJCX0KCgkJaWYgKCAhIC
R0aGlzLT5kYmggJiYgJGFsbG93X2JhaWwgKSB7CgkJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhcmx5KCk7C
goJCQkvLyBMb2FkIGN1c3RvbSBEQiBlcnJvciB0ZW1wbGF0ZSwgaWYgcHJlc2VudC4KCQkJaWYgKCBmaWxl
X2V4aXN0cyggV1BfQ09OVEVOVF9ESVIgLiAnL2RiLWVycm9yLnBocCcgKSApIHsKCQkJCXJlcXVpcmVfb25
jZSggV1BfQ09OVEVOVF9ESVIgLiAnL2RiLWVycm9yLnBocCcgKTsKCQkJCWRpZSgpOwoJCQl9CgoJCQkkbW
Vzc2FnZSA9ICc8aDE+JyAuIF9fKCAnRXJyb3IgZXN0YWJsaXNoaW5nIGEgZGF0YWJhc2UgY29ubmVjdGlvb
icgKSAuICI8L2gxPlxuIjsKCgkJCSRtZXNzYWdlIC49ICc8cD4nIC4gc3ByaW50ZigKCQkJCS8qIHRyYW5z
bGF0b3JzOiAxOiB3cC1jb25maWcucGhwLiAyOiBkYXRhYmFzZSBob3N0ICovCgkJCQlfXyggJ1RoaXMgZWl
0aGVyIG1lYW5zIHRoYXQgdGhlIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBpbmZvcm1hdGlvbiBpbiB5b3VyIC
UxJHMgZmlsZSBpcyBpbmNvcnJlY3Qgb3Igd2UgY2FuJiM4MjE3O3QgY29udGFjdCB0aGUgZGF0YWJhc2Ugc
2VydmVyIGF0ICUyJHMuIFRoaXMgY291bGQgbWVhbiB5b3VyIGhvc3QmIzgyMTc7cyBkYXRhYmFzZSBzZXJ2
ZXIgaXMgZG93bi4nICksCgkJCQknPGNvZGU+d3AtY29uZmlnLnBocDwvY29kZT4nLAoJCQkJJzxjb2RlPic
gLiBodG1sc3BlY2lhbGNoYXJzKCAkdGhpcy0+ZGJob3N0LCBFTlRfUVVPVEVTICkgLiAnPC9jb2RlPicKCQ
kJKSAuICI8L3A+XG4iOwoKCQkJJG1lc3NhZ2UgLj0gIjx1bD5cbiI7CgkJCSRtZXNzYWdlIC49ICc8bGk+J
yAuIF9fKCAnQXJlIHlvdSBzdXJlIHlvdSBoYXZlIHRoZSBjb3JyZWN0IHVzZXJuYW1lIGFuZCBwYXNzd29y
ZD8nICkgLiAiPC9saT5cbiI7CgkJCSRtZXNzYWdlIC49ICc8bGk+JyAuIF9fKCAnQXJlIHlvdSBzdXJlIHR
oYXQgeW91IGhhdmUgdHlwZWQgdGhlIGNvcnJlY3QgaG9zdG5hbWU/JyApIC4gIjwvbGk+XG4iOwoJCQkkbW
Vzc2FnZSAuPSAnPGxpPicgLiBfXyggJ0FyZSB5b3Ugc3VyZSB0aGF0IHRoZSBkYXRhYmFzZSBzZXJ2ZXIga
XMgcnVubmluZz8nICkgLiAiPC9saT5cbiI7CgkJCSRtZXNzYWdlIC49ICI8L3VsPlxuIjsKCgkJCSRtZXNz
YWdlIC49ICc8cD4nIC4gc3ByaW50ZigKCQkJCS8qIHRyYW5zbGF0b3JzOiAlczogc3VwcG9ydCBmb3J1bXM
gVVJMICovCgkJCQlfXyggJ0lmIHlvdSYjODIxNztyZSB1bnN1cmUgd2hhdCB0aGVzZSB0ZXJtcyBtZWFuIH
lvdSBzaG91bGQgcHJvYmFibHkgY29udGFjdCB5b3VyIGhvc3QuIElmIHlvdSBzdGlsbCBuZWVkIGhlbHAge
W91IGNhbiBhbHdheXMgdmlzaXQgdGhlIDxhIGhyZWY9IiVzIj5Xb3JkUHJlc3MgU3VwcG9ydCBGb3J1bXM8
L2E+LicgKSwKCQkJCV9fKCAnaHR0cHM6Ly93b3JkcHJlc3Mub3JnL3N1cHBvcnQvJyApCgkJCSkgLiAiPC9
wPlxuIjsKCgkJCSR0aGlzLT5iYWlsKCAkbWVzc2FnZSwgJ2RiX2Nvbm5lY3RfZmFpbCcgKTsKCgkJCXJldH
VybiBmYWxzZTsKCQl9IGVsc2VpZiAoICR0aGlzLT5kYmggKSB7CgkJCWlmICggISAkdGhpcy0+aGFzX2Nvb
m5lY3RlZCApIHsKCQkJCSR0aGlzLT5pbml0X2NoYXJzZXQoKTsKCQkJfQoKCQkJJHRoaXMtPmhhc19jb25u
ZWN0ZWQgPSB0cnVlOwoKCQkJJHRoaXMtPnNldF9jaGFyc2V0KCAkdGhpcy0+ZGJoICk7CgoJCQkkdGhpcy0
+cmVhZHkgPSB0cnVlOwoJCQkkdGhpcy0+c2V0X3NxbF9tb2RlKCk7CgkJCSR0aGlzLT5zZWxlY3QoICR0aG
lzLT5kYm5hbWUsICR0aGlzLT5kYmggKTsKCgkJCXJldHVybiB0cnVlOwoJCX0KCgkJcmV0dXJuIGZhbHNlO
woJfQoKCS8qKgoJICogQ2hlY2sgdGhhdCB0aGUgY29ubmVjdGlvbiB0byB0aGUgZGF0YWJhc2UgaXMgc3Rp
bGwgdXAuIElmIG5vdCwgdHJ5IHRvIHJlY29ubmVjdC4KCSAqCgkgKiBJZiB0aGlzIGZ1bmN0aW9uIGlzIHV
uYWJsZSB0byByZWNvbm5lY3QsIGl0IHdpbGwgZm9yY2libHkgZGllLCBvciBpZiBhZnRlciB0aGUKCSAqIH
RoZSB0ZW1wbGF0ZV9yZWRpcmVjdCBob29rIGhhcyBiZWVuIGZpcmVkLCByZXR1cm4gZmFsc2UgaW5zdGVhZ
C4KCSAqCgkgKiBJZiAkYWxsb3dfYmFpbCBpcyBmYWxzZSwgdGhlIGxhY2sgb2YgZGF0YWJhc2UgY29ubmVj
dGlvbiB3aWxsIG5lZWQKCSAqIHRvIGJlIGhhbmRsZWQgbWFudWFsbHkuCgkgKgoJICogQHNpbmNlIDMuOS4
wCgkgKgoJICogQHBhcmFtIGJvb2wgJGFsbG93X2JhaWwgT3B0aW9uYWwuIEFsbG93cyB0aGUgZnVuY3Rpb2
4gdG8gYmFpbC4gRGVmYXVsdCB0cnVlLgoJICogQHJldHVybiBib29sfHZvaWQgVHJ1ZSBpZiB0aGUgY29ub
mVjdGlvbiBpcyB1cC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGNoZWNrX2Nvbm5lY3Rpb24oICRhbGxvd19i
YWlsID0gdHJ1ZSApIHsKCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQlpZiAoIEBteXNxbGlfcGl
uZyggJHRoaXMtPmRiaCApICkgewoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9IGVsc2UgewoJCQlpZiAoIE
BteXNxbF9waW5nKCAkdGhpcy0+ZGJoICkgKSB7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCgkJJGVyc
m9yX3JlcG9ydGluZyA9IGZhbHNlOwoKCQkvLyBEaXNhYmxlIHdhcm5pbmdzLCBhcyB3ZSBkb24ndCB3YW50
IHRvIHNlZSBhIG11bHRpdHVkZSBvZiAidW5hYmxlIHRvIGNvbm5lY3QiIG1lc3NhZ2VzCgkJaWYgKCBXUF9
ERUJVRyApIHsKCQkJJGVycm9yX3JlcG9ydGluZyA9IGVycm9yX3JlcG9ydGluZygpOwoJCQllcnJvcl9yZX
BvcnRpbmcoICRlcnJvcl9yZXBvcnRpbmcgJiB+RV9XQVJOSU5HICk7CgkJfQoKCQlmb3IgKCAkdHJpZXMgP
SAxOyAkdHJpZXMgPD0gJHRoaXMtPnJlY29ubmVjdF9yZXRyaWVzOyAkdHJpZXMrKyApIHsKCQkJLy8gT24g
dGhlIGxhc3QgdHJ5LCByZS1lbmFibGUgd2FybmluZ3MuIFdlIHdhbnQgdG8gc2VlIGEgc2luZ2xlIGluc3R
hbmNlIG9mIHRoZQoJCQkvLyAidW5hYmxlIHRvIGNvbm5lY3QiIG1lc3NhZ2Ugb24gdGhlIGJhaWwoKSBzY3
JlZW4sIGlmIGl0IGFwcGVhcnMuCgkJCWlmICggJHRoaXMtPnJlY29ubmVjdF9yZXRyaWVzID09PSAkdHJpZ
XMgJiYgV1BfREVCVUcgKSB7CgkJCQllcnJvcl9yZXBvcnRpbmcoICRlcnJvcl9yZXBvcnRpbmcgKTsKCQkJ
fQoKCQkJaWYgKCAkdGhpcy0+ZGJfY29ubmVjdCggZmFsc2UgKSApIHsKCQkJCWlmICggJGVycm9yX3JlcG9
ydGluZyApIHsKCQkJCQllcnJvcl9yZXBvcnRpbmcoICRlcnJvcl9yZXBvcnRpbmcgKTsKCQkJCX0KCgkJCQ
lyZXR1cm4gdHJ1ZTsKCQkJfQoKCQkJc2xlZXAoIDEgKTsKCQl9CgoJCS8vIElmIHRlbXBsYXRlX3JlZGlyZ
WN0IGhhcyBhbHJlYWR5IGhhcHBlbmVkLCBpdCdzIHRvbyBsYXRlIGZvciB3cF9kaWUoKS9kZWFkX2RiKCku
CgkJLy8gTGV0J3MganVzdCByZXR1cm4gYW5kIGhvcGUgZm9yIHRoZSBiZXN0LgoJCWlmICggZGlkX2FjdGl
vbiggJ3RlbXBsYXRlX3JlZGlyZWN0JyApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoICEgJG
FsbG93X2JhaWwgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXdwX2xvYWRfdHJhbnNsYXRpb25zX2Vhc
mx5KCk7CgoJCSRtZXNzYWdlID0gJzxoMT4nIC4gX18oICdFcnJvciByZWNvbm5lY3RpbmcgdG8gdGhlIGRh
dGFiYXNlJyApIC4gIjwvaDE+XG4iOwoKCQkkbWVzc2FnZSAuPSAnPHA+JyAuIHNwcmludGYoCgkJCS8qIHR
yYW5zbGF0b3JzOiAlczogZGF0YWJhc2UgaG9zdCAqLwoJCQlfXyggJ1RoaXMgbWVhbnMgdGhhdCB3ZSBsb3
N0IGNvbnRhY3Qgd2l0aCB0aGUgZGF0YWJhc2Ugc2VydmVyIGF0ICVzLiBUaGlzIGNvdWxkIG1lYW4geW91c
iBob3N0JiM4MjE3O3MgZGF0YWJhc2Ugc2VydmVyIGlzIGRvd24uJyApLAoJCQknPGNvZGU+JyAuIGh0bWxz
cGVjaWFsY2hhcnMoICR0aGlzLT5kYmhvc3QsIEVOVF9RVU9URVMgKSAuICc8L2NvZGU+JwoJCSkgLiAiPC9
wPlxuIjsKCgkJJG1lc3NhZ2UgLj0gIjx1bD5cbiI7CgkJJG1lc3NhZ2UgLj0gJzxsaT4nIC4gX18oICdBcm
UgeW91IHN1cmUgdGhhdCB0aGUgZGF0YWJhc2Ugc2VydmVyIGlzIHJ1bm5pbmc/JyApIC4gIjwvbGk+XG4iO
woJCSRtZXNzYWdlIC49ICc8bGk+JyAuIF9fKCAnQXJlIHlvdSBzdXJlIHRoYXQgdGhlIGRhdGFiYXNlIHNl
cnZlciBpcyBub3QgdW5kZXIgcGFydGljdWxhcmx5IGhlYXZ5IGxvYWQ/JyApIC4gIjwvbGk+XG4iOwoJCSR
tZXNzYWdlIC49ICI8L3VsPlxuIjsKCgkJJG1lc3NhZ2UgLj0gJzxwPicgLiBzcHJpbnRmKAoJCQkvKiB0cm
Fuc2xhdG9yczogJXM6IHN1cHBvcnQgZm9ydW1zIFVSTCAqLwoJCQlfXyggJ0lmIHlvdSYjODIxNztyZSB1b
nN1cmUgd2hhdCB0aGVzZSB0ZXJtcyBtZWFuIHlvdSBzaG91bGQgcHJvYmFibHkgY29udGFjdCB5b3VyIGhv
c3QuIElmIHlvdSBzdGlsbCBuZWVkIGhlbHAgeW91IGNhbiBhbHdheXMgdmlzaXQgdGhlIDxhIGhyZWY9IiV
zIj5Xb3JkUHJlc3MgU3VwcG9ydCBGb3J1bXM8L2E+LicgKSwKCQkJX18oICdodHRwczovL3dvcmRwcmVzcy
5vcmcvc3VwcG9ydC8nICkKCQkpIC4gIjwvcD5cbiI7CgoJCS8vIFdlIHdlcmVuJ3QgYWJsZSB0byByZWNvb
m5lY3QsIHNvIHdlIGJldHRlciBiYWlsLgoJCSR0aGlzLT5iYWlsKCAkbWVzc2FnZSwgJ2RiX2Nvbm5lY3Rf
ZmFpbCcgKTsKCgkJLy8gQ2FsbCBkZWFkX2RiKCkgaWYgYmFpbCBkaWRuJ3QgZGllLCBiZWNhdXNlIHRoaXM
gZGF0YWJhc2UgaXMgbm8gbW9yZS4gSXQgaGFzIGNlYXNlZCB0byBiZSAoYXQgbGVhc3QgdGVtcG9yYXJpbH
kpLgoJCWRlYWRfZGIoKTsKCX0KCgkvKioKCSAqIFBlcmZvcm0gYSBNeVNRTCBkYXRhYmFzZSBxdWVyeSwgd
XNpbmcgY3VycmVudCBkYXRhYmFzZSBjb25uZWN0aW9uLgoJICoKCSAqIE1vcmUgaW5mb3JtYXRpb24gY2Fu
IGJlIGZvdW5kIG9uIHRoZSBjb2RleCBwYWdlLgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmF
tIHN0cmluZyAkcXVlcnkgRGF0YWJhc2UgcXVlcnkKCSAqIEByZXR1cm4gaW50fGZhbHNlIE51bWJlciBvZi
Byb3dzIGFmZmVjdGVkL3NlbGVjdGVkIG9yIGZhbHNlIG9uIGVycm9yCgkgKi8KCXB1YmxpYyBmdW5jdGlvb
iBxdWVyeSggJHF1ZXJ5ICkgewoJCWlmICggISAkdGhpcy0+cmVhZHkgKSB7CgkJCS8vIEJhY2t1cEJ1ZGR5
OiBSZW1vdmVkIGZvbGxvd2luZyBsaW5lLgoJCQkvLyR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gdHJ
1ZTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLyoqCgkJICogRmlsdGVyIHRoZSBkYXRhYmFzZSBxdWVyeS
4KCQkgKgoJCSAqIFNvbWUgcXVlcmllcyBhcmUgbWFkZSBiZWZvcmUgdGhlIHBsdWdpbnMgaGF2ZSBiZWVuI
GxvYWRlZCwKCQkgKiBhbmQgdGh1cyBjYW5ub3QgYmUgZmlsdGVyZWQgd2l0aCB0aGlzIG1ldGhvZC4KCQkg
KgoJCSAqIEBzaW5jZSAyLjEuMAoJCSAqCgkJICogQHBhcmFtIHN0cmluZyAkcXVlcnkgRGF0YWJhc2UgcXV
lcnkuCgkJICovCgkJJHF1ZXJ5ID0gYXBwbHlfZmlsdGVycyggJ3F1ZXJ5JywgJHF1ZXJ5ICk7CgoJCSR0aG
lzLT5mbHVzaCgpOwoKCQkvLyBMb2cgaG93IHRoZSBmdW5jdGlvbiB3YXMgY2FsbGVkCgkJJHRoaXMtPmZ1b
mNfY2FsbCA9ICJcJGRiLT5xdWVyeShcIiRxdWVyeVwiKSI7CgoJCS8vIElmIHdlJ3JlIHdyaXRpbmcgdG8g
dGhlIGRhdGFiYXNlLCBtYWtlIHN1cmUgdGhlIHF1ZXJ5IHdpbGwgd3JpdGUgc2FmZWx5LgoJCWlmICggJHR
oaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnkgJiYgISAkdGhpcy0+Y2hlY2tfYXNjaWkoICRxdWVyeSApICkgew
oJCQkkc3RyaXBwZWRfcXVlcnkgPSAkdGhpcy0+c3RyaXBfaW52YWxpZF90ZXh0X2Zyb21fcXVlcnkoICRxd
WVyeSApOwoJCQkvLyBzdHJpcF9pbnZhbGlkX3RleHRfZnJvbV9xdWVyeSgpIGNhbiBwZXJmb3JtIHF1ZXJp
ZXMsIHNvIHdlIG5lZWQKCQkJLy8gdG8gZmx1c2ggYWdhaW4sIGp1c3QgdG8gbWFrZSBzdXJlIGV2ZXJ5dGh
pbmcgaXMgY2xlYXIuCgkJCSR0aGlzLT5mbHVzaCgpOwoJCQlpZiAoICRzdHJpcHBlZF9xdWVyeSAhPT0gJH
F1ZXJ5ICkgewoJCQkJJHRoaXMtPmluc2VydF9pZCA9IDA7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9C
goJCS8vIEJhY2t1cEJ1ZGR5OiBDaGFuZ2VkIGZvbGxvd2luZyBsaW5lIGZyb20gdHJ1ZSB0byBmYWxzZS4g
RG9uJ3QgcnVuIHRoaXMgY2hlY2sgZXZlciBkdXJpbmcgaW1wb3J0LgoJCSR0aGlzLT5jaGVja19jdXJyZW5
0X3F1ZXJ5ID0gZmFsc2U7IC8vIHdhczogdHJ1ZQoKCQkvLyBLZWVwIHRyYWNrIG9mIHRoZSBsYXN0IHF1ZX
J5IGZvciBkZWJ1Zy4uCgkJJHRoaXMtPmxhc3RfcXVlcnkgPSAkcXVlcnk7CgoJCSR0aGlzLT5fZG9fcXVlc
nkoICRxdWVyeSApOwoKCQkvLyBNeVNRTCBzZXJ2ZXIgaGFzIGdvbmUgYXdheSwgdHJ5IHRvIHJlY29ubmVj
dAoJCSRteXNxbF9lcnJubyA9IDA7CgkJaWYgKCAhIGVtcHR5KCAkdGhpcy0+ZGJoICkgKSB7CgkJCWlmICg
gJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCQkkbXlzcWxfZXJybm8gPSBteXNxbGlfZXJybm8oICR0aGlzLT
5kYmggKTsKCQkJfSBlbHNlIHsKCQkJCSRteXNxbF9lcnJubyA9IG15c3FsX2Vycm5vKCAkdGhpcy0+ZGJoI
Ck7CgkJCX0KCQl9CgoJCWlmICggZW1wdHkoICR0aGlzLT5kYmggKSB8fCAyMDA2ID09ICRteXNxbF9lcnJu
byApIHsKCQkJaWYgKCAkdGhpcy0+Y2hlY2tfY29ubmVjdGlvbigpICkgewoJCQkJJHRoaXMtPl9kb19xdWV
yeSggJHF1ZXJ5ICk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+aW5zZXJ0X2lkID0gMDsKCQkJCXJldHVybi
BmYWxzZTsKCQkJfQoJCX0KCgkJLy8gSWYgdGhlcmUgaXMgYW4gZXJyb3IgdGhlbiB0YWtlIG5vdGUgb2Yga
XQuLgoJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCSR0aGlzLT5sYXN0X2Vycm9yID0gbXlzcWxp
X2Vycm9yKCAkdGhpcy0+ZGJoICk7CgkJfSBlbHNlIHsKCQkJJHRoaXMtPmxhc3RfZXJyb3IgPSBteXNxbF9
lcnJvciggJHRoaXMtPmRiaCApOwoJCX0KCgkJaWYgKCAkdGhpcy0+bGFzdF9lcnJvciApIHsKCQkJLy8gQ2
xlYXIgaW5zZXJ0X2lkIG9uIGEgc3Vic2VxdWVudCBmYWlsZWQgaW5zZXJ0LgoJCQlpZiAoICR0aGlzLT5pb
nNlcnRfaWQgJiYgcHJlZ19tYXRjaCggJy9eXHMqKGluc2VydHxyZXBsYWNlKVxzL2knLCAkcXVlcnkgKSAp
CgkJCQkkdGhpcy0+aW5zZXJ0X2lkID0gMDsKCgkJCSR0aGlzLT5wcmludF9lcnJvcigpOwoJCQlyZXR1cm4
gZmFsc2U7CgkJfQoKCQlpZiAoIHByZWdfbWF0Y2goICcvXlxzKihjcmVhdGV8YWx0ZXJ8dHJ1bmNhdGV8ZH
JvcClccy9pJywgJHF1ZXJ5ICkgKSB7CgkJCSRyZXR1cm5fdmFsID0gJHRoaXMtPnJlc3VsdDsKCQl9IGVsc
2VpZiAoIHByZWdfbWF0Y2goICcvXlxzKihpbnNlcnR8ZGVsZXRlfHVwZGF0ZXxyZXBsYWNlKVxzL2knLCAk
cXVlcnkgKSApIHsKCQkJaWYgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJCSR0aGlzLT5yb3dzX2FmZmV
jdGVkID0gbXlzcWxpX2FmZmVjdGVkX3Jvd3MoIC
R0aGlzLT5kYmggKTsKCQkJfSBlbHNlIHsKCQkJCSR0aGlzLT5yb3dzX2FmZmVjdGVkID0gbXlzcWxfYWZmZ
WN0ZWRfcm93cyggJHRoaXMtPmRiaCApOwoJCQl9CgkJCS8vIFRha2Ugbm90ZSBvZiB0aGUgaW5zZXJ0X2lk
CgkJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqKGluc2VydHxyZXBsYWNlKVxzL2knLCAkcXVlcnkgKSApIHs
KCQkJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgKSB7CgkJCQkJJHRoaXMtPmluc2VydF9pZCA9IG15c3FsaV
9pbnNlcnRfaWQoICR0aGlzLT5kYmggKTsKCQkJCX0gZWxzZSB7CgkJCQkJJHRoaXMtPmluc2VydF9pZCA9I
G15c3FsX2luc2VydF9pZCggJHRoaXMtPmRiaCApOwoJCQkJfQoJCQl9CgkJCS8vIFJldHVybiBudW1iZXIg
b2Ygcm93cyBhZmZlY3RlZAoJCQkkcmV0dXJuX3ZhbCA9ICR0aGlzLT5yb3dzX2FmZmVjdGVkOwoJCX0gZWx
zZSB7CgkJCSRudW1fcm93cyA9IDA7CgkJCWlmICggJHRoaXMtPnVzZV9teXNxbGkgJiYgJHRoaXMtPnJlc3
VsdCBpbnN0YW5jZW9mIG15c3FsaV9yZXN1bHQgKSB7CgkJCQl3aGlsZSAoICRyb3cgPSBAbXlzcWxpX2Zld
GNoX29iamVjdCggJHRoaXMtPnJlc3VsdCApICkgewoJCQkJCSR0aGlzLT5sYXN0X3Jlc3VsdFskbnVtX3Jv
d3NdID0gJHJvdzsKCQkJCQkkbnVtX3Jvd3MrKzsKCQkJCX0KCQkJfSBlbHNlaWYgKCBpc19yZXNvdXJjZSg
gJHRoaXMtPnJlc3VsdCApICkgewoJCQkJd2hpbGUgKCAkcm93ID0gQG15c3FsX2ZldGNoX29iamVjdCggJH
RoaXMtPnJlc3VsdCApICkgewoJCQkJCSR0aGlzLT5sYXN0X3Jlc3VsdFskbnVtX3Jvd3NdID0gJHJvdzsKC
QkJCQkkbnVtX3Jvd3MrKzsKCQkJCX0KCQkJfQoKCQkJLy8gTG9nIG51bWJlciBvZiByb3dzIHRoZSBxdWVy
eSByZXR1cm5lZAoJCQkvLyBhbmQgcmV0dXJuIG51bWJlciBvZiByb3dzIHNlbGVjdGVkCgkJCSR0aGlzLT5
udW1fcm93cyA9ICRudW1fcm93czsKCQkJJHJldHVybl92YWwgICAgID0gJG51bV9yb3dzOwoJCX0KCgkJcm
V0dXJuICRyZXR1cm5fdmFsOwoJfQoKCS8qKgoJICogSW50ZXJuYWwgZnVuY3Rpb24gdG8gcGVyZm9ybSB0a
GUgbXlzcWxfcXVlcnkoKSBjYWxsLgoJICoKCSAqIEBzaW5jZSAzLjkuMAoJICoKCSAqIEBhY2Nlc3MgcHJp
dmF0ZQoJICogQHNlZSB3cGRiOjpxdWVyeSgpCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcXVlcnkgVGhlIHF
1ZXJ5IHRvIHJ1bi4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBfZG9fcXVlcnkoICRxdWVyeSApIHsKCQlpZi
AoIGRlZmluZWQoICdTQVZFUVVFUklFUycgKSAmJiBTQVZFUVVFUklFUyApIHsKCQkJJHRoaXMtPnRpbWVyX
3N0YXJ0KCk7CgkJfQoKCQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkkdGhpcy0+cmVzdWx0ID0g
QG15c3FsaV9xdWVyeSggJHRoaXMtPmRiaCwgJHF1ZXJ5ICk7CgkJfSBlbHNlIHsKCQkJJHRoaXMtPnJlc3V
sdCA9IEBteXNxbF9xdWVyeSggJHF1ZXJ5LCAkdGhpcy0+ZGJoICk7CgkJfQoJCSR0aGlzLT5udW1fcXVlcm
llcysrOwoKCQlpZiAoIGRlZmluZWQoICdTQVZFUVVFUklFUycgKSAmJiBTQVZFUVVFUklFUyApIHsKCQkJJ
HRoaXMtPnF1ZXJpZXNbXSA9IGFycmF5KCAkcXVlcnksICR0aGlzLT50aW1lcl9zdG9wKCksICR0aGlzLT5n
ZXRfY2FsbGVyKCkgKTsKCQl9Cgl9CgoJLyoqCgkgKiBJbnNlcnQgYSByb3cgaW50byBhIHRhYmxlLgoJICo
KCSAqICAgICB3cGRiOjppbnNlcnQoICd0YWJsZScsIGFycmF5KCAnY29sdW1uJyA9PiAnZm9vJywgJ2ZpZW
xkJyA9PiAnYmFyJyApICkKCSAqICAgICB3cGRiOjppbnNlcnQoICd0YWJsZScsIGFycmF5KCAnY29sdW1uJ
yA9PiAnZm9vJywgJ2ZpZWxkJyA9PiAxMzM3ICksIGFycmF5KCAnJXMnLCAnJWQnICkgKQoJICoKCSAqIEBz
aW5jZSAyLjUuMAoJICogQHNlZSB3cGRiOjpwcmVwYXJlKCkKCSAqIEBzZWUgd3BkYjo6JGZpZWxkX3R5cGV
zCgkgKiBAc2VlIHdwX3NldF93cGRiX3ZhcnMoKQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgJHRhYm
xlICBUYWJsZSBuYW1lCgkgKiBAcGFyYW0gYXJyYXkgICAgICAgICRkYXRhICAgRGF0YSB0byBpbnNlcnQgK
GluIGNvbHVtbiA9PiB2YWx1ZSBwYWlycykuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm90
aCAkZGF0YSBjb2x1bW5zIGFuZCAkZGF0YSB2YWx1ZXMgc2hvdWxkIGJlICJyYXciIChuZWl0aGVyIHNob3V
sZCBiZSBTUUwgZXNjYXBlZCkuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VuZGluZyBhIG
51bGwgdmFsdWUgd2lsbCBjYXVzZSB0aGUgY29sdW1uIHRvIGJlIHNldCB0byBOVUxMIC0gdGhlIGNvcnJlc
3BvbmRpbmcgZm9ybWF0IGlzIGlnbm9yZWQgaW4gdGhpcyBjYXNlLgoJICogQHBhcmFtIGFycmF5fHN0cmlu
ZyAkZm9ybWF0IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBmb3JtYXRzIHRvIGJlIG1hcHBlZCB0byBlYWNoIG9
mIHRoZSB2YWx1ZSBpbiAkZGF0YS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBzdHJpbm
csIHRoYXQgZm9ybWF0IHdpbGwgYmUgdXNlZCBmb3IgYWxsIG9mIHRoZSB2YWx1ZXMgaW4gJGRhdGEuCgkgK
iAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBmb3JtYXQgaXMgb25lIG9mICclZCcsICclZicsICcl
cycgKGludGVnZXIsIGZsb2F0LCBzdHJpbmcpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEl
mIG9taXR0ZWQsIGFsbCB2YWx1ZXMgaW4gJGRhdGEgd2lsbCBiZSB0cmVhdGVkIGFzIHN0cmluZ3MgdW5sZX
NzIG90aGVyd2lzZSBzcGVjaWZpZWQgaW4gd3BkYjo6JGZpZWxkX3R5cGVzLgoJICogQHJldHVybiBpbnR8Z
mFsc2UgVGhlIG51bWJlciBvZiByb3dzIGluc2VydGVkLCBvciBmYWxzZSBvbiBlcnJvci4KCSAqLwoJcHVi
bGljIGZ1bmN0aW9uIGluc2VydCggJHRhYmxlLCAkZGF0YSwgJGZvcm1hdCA9IG51bGwgKSB7CgkJcmV0dXJ
uICR0aGlzLT5faW5zZXJ0X3JlcGxhY2VfaGVscGVyKCAkdGFibGUsICRkYXRhLCAkZm9ybWF0LCAnSU5TRV
JUJyApOwoJfQoKCS8qKgoJICogUmVwbGFjZSBhIHJvdyBpbnRvIGEgdGFibGUuCgkgKgoJICogICAgIHdwZ
GI6OnJlcGxhY2UoICd0YWJsZScsIGFycmF5KCAnY29sdW1uJyA9PiAnZm9vJywgJ2ZpZWxkJyA9PiAnYmFy
JyApICkKCSAqICAgICB3cGRiOjpyZXBsYWNlKCAndGFibGUnLCBhcnJheSggJ2NvbHVtbicgPT4gJ2Zvbyc
sICdmaWVsZCcgPT4gMTMzNyApLCBhcnJheSggJyVzJywgJyVkJyApICkKCSAqCgkgKiBAc2luY2UgMy4wLj
AKCSAqIEBzZWUgd3BkYjo6cHJlcGFyZSgpCgkgKiBAc2VlIHdwZGI6OiRmaWVsZF90eXBlcwoJICogQHNlZ
SB3cF9zZXRfd3BkYl92YXJzKCkKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICAgICAgICR0YWJsZSAgVGFibGUg
bmFtZQoJICogQHBhcmFtIGFycmF5ICAgICAgICAkZGF0YSAgIERhdGEgdG8gaW5zZXJ0IChpbiBjb2x1bW4
gPT4gdmFsdWUgcGFpcnMpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdGggJGRhdGEgY2
9sdW1ucyBhbmQgJGRhdGEgdmFsdWVzIHNob3VsZCBiZSAicmF3IiAobmVpdGhlciBzaG91bGQgYmUgU1FMI
GVzY2FwZWQpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRpbmcgYSBudWxsIHZhbHVl
IHdpbGwgY2F1c2UgdGhlIGNvbHVtbiB0byBiZSBzZXQgdG8gTlVMTCAtIHRoZSBjb3JyZXNwb25kaW5nIGZ
vcm1hdCBpcyBpZ25vcmVkIGluIHRoaXMgY2FzZS4KCSAqIEBwYXJhbSBhcnJheXxzdHJpbmcgJGZvcm1hdC
BPcHRpb25hbC4gQW4gYXJyYXkgb2YgZm9ybWF0cyB0byBiZSBtYXBwZWQgdG8gZWFjaCBvZiB0aGUgdmFsd
WUgaW4gJGRhdGEuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgc3RyaW5nLCB0aGF0IGZv
cm1hdCB3aWxsIGJlIHVzZWQgZm9yIGFsbCBvZiB0aGUgdmFsdWVzIGluICRkYXRhLgoJICogICAgICAgICA
gICAgICAgICAgICAgICAgICAgIEEgZm9ybWF0IGlzIG9uZSBvZiAnJWQnLCAnJWYnLCAnJXMnIChpbnRlZ2
VyLCBmbG9hdCwgc3RyaW5nKS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBvbWl0dGVkL
CBhbGwgdmFsdWVzIGluICRkYXRhIHdpbGwgYmUgdHJlYXRlZCBhcyBzdHJpbmdzIHVubGVzcyBvdGhlcndp
c2Ugc3BlY2lmaWVkIGluIHdwZGI6OiRmaWVsZF90eXBlcy4KCSAqIEByZXR1cm4gaW50fGZhbHNlIFRoZSB
udW1iZXIgb2Ygcm93cyBhZmZlY3RlZCwgb3IgZmFsc2Ugb24gZXJyb3IuCgkgKi8KCXB1YmxpYyBmdW5jdG
lvbiByZXBsYWNlKCAkdGFibGUsICRkYXRhLCAkZm9ybWF0ID0gbnVsbCApIHsKCQlyZXR1cm4gJHRoaXMtP
l9pbnNlcnRfcmVwbGFjZV9oZWxwZXIoICR0YWJsZSwgJGRhdGEsICRmb3JtYXQsICdSRVBMQUNFJyApOwoJ
fQoKCS8qKgoJICogSGVscGVyIGZ1bmN0aW9uIGZvciBpbnNlcnQgYW5kIHJlcGxhY2UuCgkgKgoJICogUnV
ucyBhbiBpbnNlcnQgb3IgcmVwbGFjZSBxdWVyeSBiYXNlZCBvbiAkdHlwZSBhcmd1bWVudC4KCSAqCgkgKi
BAYWNjZXNzIHByaXZhdGUKCSAqIEBzaW5jZSAzLjAuMAoJICogQHNlZSB3cGRiOjpwcmVwYXJlKCkKCSAqI
EBzZWUgd3BkYjo6JGZpZWxkX3R5cGVzCgkgKiBAc2VlIHdwX3NldF93cGRiX3ZhcnMoKQoJICoKCSAqIEBw
YXJhbSBzdHJpbmcgICAgICAgJHRhYmxlICBUYWJsZSBuYW1lCgkgKiBAcGFyYW0gYXJyYXkgICAgICAgICR
kYXRhICAgRGF0YSB0byBpbnNlcnQgKGluIGNvbHVtbiA9PiB2YWx1ZSBwYWlycykuCgkgKiAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgQm90aCAkZGF0YSBjb2x1bW5zIGFuZCAkZGF0YSB2YWx1ZXMgc2hvdWxkI
GJlICJyYXciIChuZWl0aGVyIHNob3VsZCBiZSBTUUwgZXNjYXBlZCkuCgkgKiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgU2VuZGluZyBhIG51bGwgdmFsdWUgd2lsbCBjYXVzZSB0aGUgY29sdW1uIHRvIGJlIHN
ldCB0byBOVUxMIC0gdGhlIGNvcnJlc3BvbmRpbmcgZm9ybWF0IGlzIGlnbm9yZWQgaW4gdGhpcyBjYXNlLg
oJICogQHBhcmFtIGFycmF5fHN0cmluZyAkZm9ybWF0IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBmb3JtYXRzI
HRvIGJlIG1hcHBlZCB0byBlYWNoIG9mIHRoZSB2YWx1ZSBpbiAkZGF0YS4KCSAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBJZiBzdHJpbmcsIHRoYXQgZm9ybWF0IHdpbGwgYmUgdXNlZCBmb3IgYWxsIG9mIHR
oZSB2YWx1ZXMgaW4gJGRhdGEuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBmb3JtYXQgaX
Mgb25lIG9mICclZCcsICclZicsICclcycgKGludGVnZXIsIGZsb2F0LCBzdHJpbmcpLgoJICogICAgICAgI
CAgICAgICAgICAgICAgICAgICAgIElmIG9taXR0ZWQsIGFsbCB2YWx1ZXMgaW4gJGRhdGEgd2lsbCBiZSB0
cmVhdGVkIGFzIHN0cmluZ3MgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQgaW4gd3BkYjo6JGZpZWxkX3R
5cGVzLgoJICogQHBhcmFtIHN0cmluZyAkdHlwZSAgICAgICAgIE9wdGlvbmFsLiBXaGF0IHR5cGUgb2Ygb3
BlcmF0aW9uIGlzIHRoaXM/IElOU0VSVCBvciBSRVBMQUNFLiBEZWZhdWx0cyB0byBJTlNFUlQuCgkgKiBAc
mV0dXJuIGludHxmYWxzZSBUaGUgbnVtYmVyIG9mIHJvd3MgYWZmZWN0ZWQsIG9yIGZhbHNlIG9uIGVycm9y
LgoJICovCglmdW5jdGlvbiBfaW5zZXJ0X3JlcGxhY2VfaGVscGVyKCAkdGFibGUsICRkYXRhLCAkZm9ybWF
0ID0gbnVsbCwgJHR5cGUgPSAnSU5TRVJUJyApIHsKCQkkdGhpcy0+aW5zZXJ0X2lkID0gMDsKCgkJaWYgKC
AhIGluX2FycmF5KCBzdHJ0b3VwcGVyKCAkdHlwZSApLCBhcnJheSggJ1JFUExBQ0UnLCAnSU5TRVJUJyApI
CkgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSRkYXRhID0gJHRoaXMtPnByb2Nlc3NfZmllbGRzKCAk
dGFibGUsICRkYXRhLCAkZm9ybWF0ICk7CgkJaWYgKCBmYWxzZSA9PT0gJGRhdGEgKSB7CgkJCXJldHVybiB
mYWxzZTsKCQl9CgoJCSRmb3JtYXRzID0gJHZhbHVlcyA9IGFycmF5KCk7CgkJZm9yZWFjaCAoICRkYXRhIG
FzICR2YWx1ZSApIHsKCQkJaWYgKCBpc19udWxsKCAkdmFsdWVbJ3ZhbHVlJ10gKSApIHsKCQkJCSRmb3JtY
XRzW10gPSAnTlVMTCc7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJGZvcm1hdHNbXSA9ICR2YWx1ZVsnZm9y
bWF0J107CgkJCSR2YWx1ZXNbXSAgPSAkdmFsdWVbJ3ZhbHVlJ107CgkJfQoKCQkkZmllbGRzICA9ICdgJyA
uIGltcGxvZGUoICdgLCBgJywgYXJyYXlfa2V5cyggJGRhdGEgKSApIC4gJ2AnOwoJCSRmb3JtYXRzID0gaW
1wbG9kZSggJywgJywgJGZvcm1hdHMgKTsKCgkJJHNxbCA9ICIkdHlwZSBJTlRPIGAkdGFibGVgICgkZmllb
GRzKSBWQUxVRVMgKCRmb3JtYXRzKSI7CgoJCSR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gZmFsc2U7
CgkJcmV0dXJuICR0aGlzLT5xdWVyeSggJHRoaXMtPnByZXBhcmUoICRzcWwsICR2YWx1ZXMgKSApOwoJfQo
KCS8qKgoJICogVXBkYXRlIGEgcm93IGluIHRoZSB0YWJsZQoJICoKCSAqICAgICB3cGRiOjp1cGRhdGUoIC
d0YWJsZScsIGFycmF5KCAnY29sdW1uJyA9PiAnZm9vJywgJ2ZpZWxkJyA9PiAnYmFyJyApLCBhcnJheSggJ
0lEJyA9PiAxICkgKQoJICogICAgIHdwZGI6OnVwZGF0ZSggJ3RhYmxlJywgYXJyYXkoICdjb2x1bW4nID0+
ICdmb28nLCAnZmllbGQnID0+IDEzMzcgKSwgYXJyYXkoICdJRCcgPT4gMSApLCBhcnJheSggJyVzJywgJyV
kJyApLCBhcnJheSggJyVkJyApICkKCSAqCgkgKiBAc2luY2UgMi41LjAKCSAqIEBzZWUgd3BkYjo6cHJlcG
FyZSgpCgkgKiBAc2VlIHdwZGI6OiRmaWVsZF90eXBlcwoJICogQHNlZSB3cF9zZXRfd3BkYl92YXJzKCkKC
SAqCgkgKiBAcGFyYW0gc3RyaW5nICAgICAgICR0YWJsZSAgICAgICAgVGFibGUgbmFtZQoJICogQHBhcmFt
IGFycmF5ICAgICAgICAkZGF0YSAgICAgICAgIERhdGEgdG8gdXBkYXRlIChpbiBjb2x1bW4gPT4gdmFsdWU
gcGFpcnMpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdGggJGRhdGEgY29sdW
1ucyBhbmQgJGRhdGEgdmFsdWVzIHNob3VsZCBiZSAicmF3IiAobmVpdGhlciBzaG91bGQgYmUgU1FMIGVzY
2FwZWQpLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbmRpbmcgYSBudWxsIHZh
bHVlIHdpbGwgY2F1c2UgdGhlIGNvbHVtbiB0byBiZSBzZXQgdG8gTlVMTCAtIHRoZSBjb3JyZXNwb25kaW5
nCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0IGlzIGlnbm9yZWQgaW4gdG
hpcyBjYXNlLgoJICogQHBhcmFtIGFycmF5ICAgICAgICAkd2hlcmUgICAgICAgIEEgbmFtZWQgYXJyYXkgb
2YgV0hFUkUgY2xhdXNlcyAoaW4gY29sdW1uID0+IHZhbHVlIHBhaXJzKS4KCSAqICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSBjbGF1c2VzIHdpbGwgYmUgam9pbmVkIHdpdGggQU5Ecy4
KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb3RoICR3aGVyZSBjb2x1bW5zIGFuZC
Akd2hlcmUgdmFsdWVzIHNob3VsZCBiZSAicmF3I
i4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZW5kaW5nIGEgbnVsbCB2YWx1ZSB3
aWxsIGNyZWF0ZSBhbiBJUyBOVUxMIGNvbXBhcmlzb24gLSB0aGUgY29ycmVzcG9uZGluZyBmb3JtYXQgd2l
sbCBiZSBpZ25vcmVkIGluIHRoaXMgY2FzZS4KCSAqIEBwYXJhbSBhcnJheXxzdHJpbmcgJGZvcm1hdCAgIC
AgICBPcHRpb25hbC4gQW4gYXJyYXkgb2YgZm9ybWF0cyB0byBiZSBtYXBwZWQgdG8gZWFjaCBvZiB0aGUgd
mFsdWVzIGluICRkYXRhLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHN0cmlu
ZywgdGhhdCBmb3JtYXQgd2lsbCBiZSB1c2VkIGZvciBhbGwgb2YgdGhlIHZhbHVlcyBpbiAkZGF0YS4KCSA
qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGZvcm1hdCBpcyBvbmUgb2YgJyVkJywgJy
VmJywgJyVzJyAoaW50ZWdlciwgZmxvYXQsIHN0cmluZykuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgSWYgb21pdHRlZCwgYWxsIHZhbHVlcyBpbiAkZGF0YSB3aWxsIGJlIHRyZWF0ZWQgYXMg
c3RyaW5ncyB1bmxlc3Mgb3RoZXJ3aXNlIHNwZWNpZmllZCBpbiB3cGRiOjokZmllbGRfdHlwZXMuCgkgKiB
AcGFyYW0gYXJyYXl8c3RyaW5nICR3aGVyZV9mb3JtYXQgT3B0aW9uYWwuIEFuIGFycmF5IG9mIGZvcm1hdH
MgdG8gYmUgbWFwcGVkIHRvIGVhY2ggb2YgdGhlIHZhbHVlcyBpbiAkd2hlcmUuCgkgKiAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgSWYgc3RyaW5nLCB0aGF0IGZvcm1hdCB3aWxsIGJlIHVzZWQgZm9y
IGFsbCBvZiB0aGUgaXRlbXMgaW4gJHdoZXJlLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgIEEgZm9ybWF0IGlzIG9uZSBvZiAnJWQnLCAnJWYnLCAnJXMnIChpbnRlZ2VyLCBmbG9hdCwgc3RyaW
5nKS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBvbWl0dGVkLCBhbGwgdmFsd
WVzIGluICR3aGVyZSB3aWxsIGJlIHRyZWF0ZWQgYXMgc3RyaW5ncy4KCSAqIEByZXR1cm4gaW50fGZhbHNl
IFRoZSBudW1iZXIgb2Ygcm93cyB1cGRhdGVkLCBvciBmYWxzZSBvbiBlcnJvci4KCSAqLwoJcHVibGljIGZ
1bmN0aW9uIHVwZGF0ZSggJHRhYmxlLCAkZGF0YSwgJHdoZXJlLCAkZm9ybWF0ID0gbnVsbCwgJHdoZXJlX2
Zvcm1hdCA9IG51bGwgKSB7CgkJaWYgKCAhIGlzX2FycmF5KCAkZGF0YSApIHx8ICEgaXNfYXJyYXkoICR3a
GVyZSApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkkZGF0YSA9ICR0aGlzLT5wcm9jZXNzX2ZpZWxk
cyggJHRhYmxlLCAkZGF0YSwgJGZvcm1hdCApOwoJCWlmICggZmFsc2UgPT09ICRkYXRhICkgewoJCQlyZXR
1cm4gZmFsc2U7CgkJfQoJCSR3aGVyZSA9ICR0aGlzLT5wcm9jZXNzX2ZpZWxkcyggJHRhYmxlLCAkd2hlcm
UsICR3aGVyZV9mb3JtYXQgKTsKCQlpZiAoIGZhbHNlID09PSAkd2hlcmUgKSB7CgkJCXJldHVybiBmYWxzZ
TsKCQl9CgoJCSRmaWVsZHMgPSAkY29uZGl0aW9ucyA9ICR2YWx1ZXMgPSBhcnJheSgpOwoJCWZvcmVhY2gg
KCAkZGF0YSBhcyAkZmllbGQgPT4gJHZhbHVlICkgewoJCQlpZiAoIGlzX251bGwoICR2YWx1ZVsndmFsdWU
nXSApICkgewoJCQkJJGZpZWxkc1tdID0gImAkZmllbGRgID0gTlVMTCI7CgkJCQljb250aW51ZTsKCQkJfQ
oKCQkJJGZpZWxkc1tdID0gImAkZmllbGRgID0gIiAuICR2YWx1ZVsnZm9ybWF0J107CgkJCSR2YWx1ZXNbX
SA9ICR2YWx1ZVsndmFsdWUnXTsKCQl9CgkJZm9yZWFjaCAoICR3aGVyZSBhcyAkZmllbGQgPT4gJHZhbHVl
ICkgewoJCQlpZiAoIGlzX251bGwoICR2YWx1ZVsndmFsdWUnXSApICkgewoJCQkJJGNvbmRpdGlvbnNbXSA
9ICJgJGZpZWxkYCBJUyBOVUxMIjsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkkY29uZGl0aW9uc1tdID0gIm
AkZmllbGRgID0gIiAuICR2YWx1ZVsnZm9ybWF0J107CgkJCSR2YWx1ZXNbXSA9ICR2YWx1ZVsndmFsdWUnX
TsKCQl9CgoJCSRmaWVsZHMgPSBpbXBsb2RlKCAnLCAnLCAkZmllbGRzICk7CgkJJGNvbmRpdGlvbnMgPSBp
bXBsb2RlKCAnIEFORCAnLCAkY29uZGl0aW9ucyApOwoKCQkkc3FsID0gIlVQREFURSBgJHRhYmxlYCBTRVQ
gJGZpZWxkcyBXSEVSRSAkY29uZGl0aW9ucyI7CgoJCSR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gZm
Fsc2U7CgkJcmV0dXJuICR0aGlzLT5xdWVyeSggJHRoaXMtPnByZXBhcmUoICRzcWwsICR2YWx1ZXMgKSApO
woJfQoKCS8qKgoJICogRGVsZXRlIGEgcm93IGluIHRoZSB0YWJsZQoJICoKCSAqICAgICB3cGRiOjpkZWxl
dGUoICd0YWJsZScsIGFycmF5KCAnSUQnID0+IDEgKSApCgkgKiAgICAgd3BkYjo6ZGVsZXRlKCAndGFibGU
nLCBhcnJheSggJ0lEJyA9PiAxICksIGFycmF5KCAnJWQnICkgKQoJICoKCSAqIEBzaW5jZSAzLjQuMAoJIC
ogQHNlZSB3cGRiOjpwcmVwYXJlKCkKCSAqIEBzZWUgd3BkYjo6JGZpZWxkX3R5cGVzCgkgKiBAc2VlIHdwX
3NldF93cGRiX3ZhcnMoKQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgICAgICAgJHRhYmxlICAgICAgICBUYWJs
ZSBuYW1lCgkgKiBAcGFyYW0gYXJyYXkgICAgICAgICR3aGVyZSAgICAgICAgQSBuYW1lZCBhcnJheSBvZiB
XSEVSRSBjbGF1c2VzIChpbiBjb2x1bW4gPT4gdmFsdWUgcGFpcnMpLgoJICogICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgIE11bHRpcGxlIGNsYXVzZXMgd2lsbCBiZSBqb2luZWQgd2l0aCBBTkRzLgoJI
CogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJvdGggJHdoZXJlIGNvbHVtbnMgYW5kICR3
aGVyZSB2YWx1ZXMgc2hvdWxkIGJlICJyYXciLgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgIFNlbmRpbmcgYSBudWxsIHZhbHVlIHdpbGwgY3JlYXRlIGFuIElTIE5VTEwgY29tcGFyaXNvbiAtIH
RoZSBjb3JyZXNwb25kaW5nIGZvcm1hdCB3aWxsIGJlIGlnbm9yZWQgaW4gdGhpcyBjYXNlLgoJICogQHBhc
mFtIGFycmF5fHN0cmluZyAkd2hlcmVfZm9ybWF0IE9wdGlvbmFsLiBBbiBhcnJheSBvZiBmb3JtYXRzIHRv
IGJlIG1hcHBlZCB0byBlYWNoIG9mIHRoZSB2YWx1ZXMgaW4gJHdoZXJlLgoJICogICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgIElmIHN0cmluZywgdGhhdCBmb3JtYXQgd2lsbCBiZSB1c2VkIGZvciBhbG
wgb2YgdGhlIGl0ZW1zIGluICR3aGVyZS4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CBBIGZvcm1hdCBpcyBvbmUgb2YgJyVkJywgJyVmJywgJyVzJyAoaW50ZWdlciwgZmxvYXQsIHN0cmluZyku
CgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgb21pdHRlZCwgYWxsIHZhbHVlcyB
pbiAkd2hlcmUgd2lsbCBiZSB0cmVhdGVkIGFzIHN0cmluZ3MgdW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZW
QgaW4gd3BkYjo6JGZpZWxkX3R5cGVzLgoJICogQHJldHVybiBpbnR8ZmFsc2UgVGhlIG51bWJlciBvZiByb
3dzIHVwZGF0ZWQsIG9yIGZhbHNlIG9uIGVycm9yLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCAk
dGFibGUsICR3aGVyZSwgJHdoZXJlX2Zvcm1hdCA9IG51bGwgKSB7CgkJaWYgKCAhIGlzX2FycmF5KCAkd2h
lcmUgKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJHdoZXJlID0gJHRoaXMtPnByb2Nlc3NfZmllbG
RzKCAkdGFibGUsICR3aGVyZSwgJHdoZXJlX2Zvcm1hdCApOwoJCWlmICggZmFsc2UgPT09ICR3aGVyZSApI
HsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJGNvbmRpdGlvbnMgPSAkdmFsdWVzID0gYXJyYXkoKTsKCQlm
b3JlYWNoICggJHdoZXJlIGFzICRmaWVsZCA9PiAkdmFsdWUgKSB7CgkJCWlmICggaXNfbnVsbCggJHZhbHV
lWyd2YWx1ZSddICkgKSB7CgkJCQkkY29uZGl0aW9uc1tdID0gImAkZmllbGRgIElTIE5VTEwiOwoJCQkJY2
9udGludWU7CgkJCX0KCgkJCSRjb25kaXRpb25zW10gPSAiYCRmaWVsZGAgPSAiIC4gJHZhbHVlWydmb3JtY
XQnXTsKCQkJJHZhbHVlc1tdID0gJHZhbHVlWyd2YWx1ZSddOwoJCX0KCgkJJGNvbmRpdGlvbnMgPSBpbXBs
b2RlKCAnIEFORCAnLCAkY29uZGl0aW9ucyApOwoKCQkkc3FsID0gIkRFTEVURSBGUk9NIGAkdGFibGVgIFd
IRVJFICRjb25kaXRpb25zIjsKCgkJJHRoaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnkgPSBmYWxzZTsKCQlyZX
R1cm4gJHRoaXMtPnF1ZXJ5KCAkdGhpcy0+cHJlcGFyZSggJHNxbCwgJHZhbHVlcyApICk7Cgl9CgoJLyoqC
gkgKiBQcm9jZXNzZXMgYXJyYXlzIG9mIGZpZWxkL3ZhbHVlIHBhaXJzIGFuZCBmaWVsZCBmb3JtYXRzLgoJ
ICoKCSAqIFRoaXMgaXMgYSBoZWxwZXIgbWV0aG9kIGZvciB3cGRiJ3MgQ1JVRCBtZXRob2RzLCB3aGljaCB
0YWtlIGZpZWxkL3ZhbHVlCgkgKiBwYWlycyBmb3IgaW5zZXJ0cywgdXBkYXRlcywgYW5kIHdoZXJlIGNsYX
VzZXMuIFRoaXMgbWV0aG9kIGZpcnN0IHBhaXJzCgkgKiBlYWNoIHZhbHVlIHdpdGggYSBmb3JtYXQuIFRoZ
W4gaXQgZGV0ZXJtaW5lcyB0aGUgY2hhcnNldCBvZiB0aGF0IGZpZWxkLAoJICogdXNpbmcgdGhhdCB0byBk
ZXRlcm1pbmUgaWYgYW55IGludmFsaWQgdGV4dCB3b3VsZCBiZSBzdHJpcHBlZC4gSWYgdGV4dCBpcwoJICo
gc3RyaXBwZWQsIHRoZW4gZmllbGQgcHJvY2Vzc2luZyBpcyByZWplY3RlZCBhbmQgdGhlIHF1ZXJ5IGZhaW
xzLgoJICoKCSAqIEBzaW5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gc
3RyaW5nICR0YWJsZSAgVGFibGUgbmFtZS4KCSAqIEBwYXJhbSBhcnJheSAgJGRhdGEgICBGaWVsZC92YWx1
ZSBwYWlyLgoJICogQHBhcmFtIG1peGVkICAkZm9ybWF0IEZvcm1hdCBmb3IgZWFjaCBmaWVsZC4KCSAqIEB
yZXR1cm4gYXJyYXl8ZmFsc2UgUmV0dXJucyBhbiBhcnJheSBvZiBmaWVsZHMgdGhhdCBjb250YWluIHBhaX
JlZCB2YWx1ZXMKCSAqICAgICAgICAgICAgICAgICAgICBhbmQgZm9ybWF0cy4gUmV0dXJucyBmYWxzZSBmb
3IgaW52YWxpZCB2YWx1ZXMuCgkgKi8KCXByb3RlY3RlZCBmdW5jdGlvbiBwcm9jZXNzX2ZpZWxkcyggJHRh
YmxlLCAkZGF0YSwgJGZvcm1hdCApIHsKCQkkZGF0YSA9ICR0aGlzLT5wcm9jZXNzX2ZpZWxkX2Zvcm1hdHM
oICRkYXRhLCAkZm9ybWF0ICk7CgkJaWYgKCBmYWxzZSA9PT0gJGRhdGEgKSB7CgkJCXJldHVybiBmYWxzZT
sKCQl9CgoJCSRkYXRhID0gJHRoaXMtPnByb2Nlc3NfZmllbGRfY2hhcnNldHMoICRkYXRhLCAkdGFibGUgK
TsKCQlpZiAoIGZhbHNlID09PSAkZGF0YSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJGRhdGEgPSAk
dGhpcy0+cHJvY2Vzc19maWVsZF9sZW5ndGhzKCAkZGF0YSwgJHRhYmxlICk7CgkJaWYgKCBmYWxzZSA9PT0
gJGRhdGEgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSRjb252ZXJ0ZWRfZGF0YSA9ICR0aGlzLT5zdH
JpcF9pbnZhbGlkX3RleHQoICRkYXRhICk7CgoJCWlmICggJGRhdGEgIT09ICRjb252ZXJ0ZWRfZGF0YSApI
HsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJcmV0dXJuICRkYXRhOwoJfQoKCS8qKgoJICogUHJlcGFyZXMg
YXJyYXlzIG9mIHZhbHVlL2Zvcm1hdCBwYWlycyBhcyBwYXNzZWQgdG8gd3BkYiBDUlVEIG1ldGhvZHMuCgk
gKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBhcnJheS
AkZGF0YSAgIEFycmF5IG9mIGZpZWxkcyB0byB2YWx1ZXMuCgkgKiBAcGFyYW0gbWl4ZWQgJGZvcm1hdCBGb
3JtYXRzIHRvIGJlIG1hcHBlZCB0byB0aGUgdmFsdWVzIGluICRkYXRhLgoJICogQHJldHVybiBhcnJheSBB
cnJheSwga2V5ZWQgYnkgZmllbGQgbmFtZXMgd2l0aCB2YWx1ZXMgYmVpbmcgYW4gYXJyYXkKCSAqICAgICA
gICAgICAgICAgb2YgJ3ZhbHVlJyBhbmQgJ2Zvcm1hdCcga2V5cy4KCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW
9uIHByb2Nlc3NfZmllbGRfZm9ybWF0cyggJGRhdGEsICRmb3JtYXQgKSB7CgkJJGZvcm1hdHMgPSAkb3JpZ
2luYWxfZm9ybWF0cyA9IChhcnJheSkgJGZvcm1hdDsKCgkJZm9yZWFjaCAoICRkYXRhIGFzICRmaWVsZCA9
PiAkdmFsdWUgKSB7CgkJCSR2YWx1ZSA9IGFycmF5KAoJCQkJJ3ZhbHVlJyAgPT4gJHZhbHVlLAoJCQkJJ2Z
vcm1hdCcgPT4gJyVzJywKCQkJKTsKCgkJCWlmICggISBlbXB0eSggJGZvcm1hdCApICkgewoJCQkJJHZhbH
VlWydmb3JtYXQnXSA9IGFycmF5X3NoaWZ0KCAkZm9ybWF0cyApOwoJCQkJaWYgKCAhICR2YWx1ZVsnZm9yb
WF0J10gKSB7CgkJCQkJJHZhbHVlWydmb3JtYXQnXSA9IHJlc2V0KCAkb3JpZ2luYWxfZm9ybWF0cyApOwoJ
CQkJfQoJCQl9IGVsc2VpZiAoIGlzc2V0KCAkdGhpcy0+ZmllbGRfdHlwZXNbICRmaWVsZCBdICkgKSB7Cgk
JCQkkdmFsdWVbJ2Zvcm1hdCddID0gJHRoaXMtPmZpZWxkX3R5cGVzWyAkZmllbGQgXTsKCQkJfQoKCQkJJG
RhdGFbICRmaWVsZCBdID0gJHZhbHVlOwoJCX0KCgkJcmV0dXJuICRkYXRhOwoJfQoKCS8qKgoJICogQWRkc
yBmaWVsZCBjaGFyc2V0cyB0byBmaWVsZC92YWx1ZS9mb3JtYXQgYXJyYXlzIGdlbmVyYXRlZCBieQoJICog
dGhlIHdwZGI6OnByb2Nlc3NfZmllbGRfZm9ybWF0cygpIG1ldGhvZC4KCSAqCgkgKiBAc2luY2UgNC4yLjA
KCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKgoJICogQHBhcmFtIGFycmF5ICAkZGF0YSAgQXMgaXQgY29tZX
MgZnJvbSB0aGUgd3BkYjo6cHJvY2Vzc19maWVsZF9mb3JtYXRzKCkgbWV0aG9kLgoJICogQHBhcmFtIHN0c
mluZyAkdGFibGUgVGFibGUgbmFtZS4KCSAqIEByZXR1cm4gYXJyYXl8ZmFsc2UgVGhlIHNhbWUgYXJyYXkg
YXMgJGRhdGEgd2l0aCBhZGRpdGlvbmFsICdjaGFyc2V0JyBrZXlzLgoJICovCglwcm90ZWN0ZWQgZnVuY3R
pb24gcHJvY2Vzc19maWVsZF9jaGFyc2V0cyggJGRhdGEsICR0YWJsZSApIHsKCQlmb3JlYWNoICggJGRhdG
EgYXMgJGZpZWxkID0+ICR2YWx1ZSApIHsKCQkJaWYgKCAnJWQnID09PSAkdmFsdWVbJ2Zvcm1hdCddIHx8I
CclZicgPT09ICR2YWx1ZVsnZm9ybWF0J10gKSB7CgkJCQkvKgoJCQkJICogV2UgY2FuIHNraXAgdGhpcyBm
aWVsZCBpZiB3ZSBrbm93IGl0IGlzbid0IGEgc3RyaW5nLgoJCQkJICogVGhpcyBjaGVja3MgJWQvJWYgdmV
yc3VzICEgJXMgYmVjYXVzZSBpdHMgc3ByaW50ZigpIGNvdWxkIHRha2UgbW9yZS4KCQkJCSAqLwoJCQkJJH
ZhbHVlWydjaGFyc2V0J10gPSBmYWxzZTsKCQkJfSBlbHNlIHsKCQkJCSR2YWx1ZVsnY2hhcnNldCddID0gJ
HRoaXMtPmdldF9jb2xfY2hhcnNldCggJHRhYmxlLCAkZmllbGQgKTsKCQkJCWlmICggaXNfd3BfZXJyb3Io
ICR2YWx1ZVsnY2hhcnNldCddICkgKSB7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgoJCQkkZGF
0YVsgJGZpZWxkIF0gPSAkdmFsdWU7CgkJfQoKCQlyZXR1cm4gJGRhdGE7Cgl9CgoJLyoqCgkgKiBGb3Igc3
RyaW5nIGZpZWxkcywgcmVjb3JkIHRoZSBtYXhpbXVtIHN0cmluZyBsZW5ndGggdGhhdCBmaWVsZCBjYW4gc
2FmZWx5IHNhdmUuCgkgKgoJICogQHNpbmNlIDQu
Mi4xCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBhcnJheSAgJGRhdGEgIEFzIGl0IGN
vbWVzIGZyb20gdGhlIHdwZGI6OnByb2Nlc3NfZmllbGRfY2hhcnNldHMoKSBtZXRob2QuCgkgKiBAcGFyYW
0gc3RyaW5nICR0YWJsZSBUYWJsZSBuYW1lLgoJICogQHJldHVybiBhcnJheXxmYWxzZSBUaGUgc2FtZSBhc
nJheSBhcyAkZGF0YSB3aXRoIGFkZGl0aW9uYWwgJ2xlbmd0aCcga2V5cywgb3IgZmFsc2UgaWYKCSAqICAg
ICAgICAgICAgICAgICAgICAgYW55IG9mIHRoZSB2YWx1ZXMgd2VyZSB0b28gbG9uZyBmb3IgdGhlaXIgY29
ycmVzcG9uZGluZyBmaWVsZC4KCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIHByb2Nlc3NfZmllbGRfbGVuZ3
RocyggJGRhdGEsICR0YWJsZSApIHsKCQlmb3JlYWNoICggJGRhdGEgYXMgJGZpZWxkID0+ICR2YWx1ZSApI
HsKCQkJaWYgKCAnJWQnID09PSAkdmFsdWVbJ2Zvcm1hdCddIHx8ICclZicgPT09ICR2YWx1ZVsnZm9ybWF0
J10gKSB7CgkJCQkvKgoJCQkJICogV2UgY2FuIHNraXAgdGhpcyBmaWVsZCBpZiB3ZSBrbm93IGl0IGlzbid
0IGEgc3RyaW5nLgoJCQkJICogVGhpcyBjaGVja3MgJWQvJWYgdmVyc3VzICEgJXMgYmVjYXVzZSBpdHMgc3
ByaW50ZigpIGNvdWxkIHRha2UgbW9yZS4KCQkJCSAqLwoJCQkJJHZhbHVlWydsZW5ndGgnXSA9IGZhbHNlO
woJCQl9IGVsc2UgewoJCQkJJHZhbHVlWydsZW5ndGgnXSA9ICR0aGlzLT5nZXRfY29sX2xlbmd0aCggJHRh
YmxlLCAkZmllbGQgKTsKCQkJCWlmICggaXNfd3BfZXJyb3IoICR2YWx1ZVsnbGVuZ3RoJ10gKSApIHsKCQk
JCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCgkJCSRkYXRhWyAkZmllbGQgXSA9ICR2YWx1ZTsKCQl9Cg
oJCXJldHVybiAkZGF0YTsKCX0KCgkvKioKCSAqIFJldHJpZXZlIG9uZSB2YXJpYWJsZSBmcm9tIHRoZSBkY
XRhYmFzZS4KCSAqCgkgKiBFeGVjdXRlcyBhIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUgdmFsdWUgZnJv
bSB0aGUgU1FMIHJlc3VsdC4KCSAqIElmIHRoZSBTUUwgcmVzdWx0IGNvbnRhaW5zIG1vcmUgdGhhbiBvbmU
gY29sdW1uIGFuZC9vciBtb3JlIHRoYW4gb25lIHJvdywgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB2YW
x1ZSBpbiB0aGUgY29sdW1uIGFuZCByb3cgc3BlY2lmaWVkLgoJICogSWYgJHF1ZXJ5IGlzIG51bGwsIHRoa
XMgZnVuY3Rpb24gcmV0dXJucyB0aGUgdmFsdWUgaW4gdGhlIHNwZWNpZmllZCBjb2x1bW4gYW5kIHJvdyBm
cm9tIHRoZSBwcmV2aW91cyBTUUwgcmVzdWx0LgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmF
tIHN0cmluZ3xudWxsICRxdWVyeSBPcHRpb25hbC4gU1FMIHF1ZXJ5LiBEZWZhdWx0cyB0byBudWxsLCB1c2
UgdGhlIHJlc3VsdCBmcm9tIHRoZSBwcmV2aW91cyBxdWVyeS4KCSAqIEBwYXJhbSBpbnQgICAgICAgICAke
CAgICAgT3B0aW9uYWwuIENvbHVtbiBvZiB2YWx1ZSB0byByZXR1cm4uIEluZGV4ZWQgZnJvbSAwLgoJICog
QHBhcmFtIGludCAgICAgICAgICR5ICAgICBPcHRpb25hbC4gUm93IG9mIHZhbHVlIHRvIHJldHVybi4gSW5
kZXhlZCBmcm9tIDAuCgkgKiBAcmV0dXJuIHN0cmluZ3xudWxsIERhdGFiYXNlIHF1ZXJ5IHJlc3VsdCAoYX
Mgc3RyaW5nKSwgb3IgbnVsbCBvbiBmYWlsdXJlCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfdmFyKCAkc
XVlcnkgPSBudWxsLCAkeCA9IDAsICR5ID0gMCApIHsKCQkkdGhpcy0+ZnVuY19jYWxsID0gIlwkZGItPmdl
dF92YXIoXCIkcXVlcnlcIiwgJHgsICR5KSI7CgoJCWlmICggJHRoaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnk
gJiYgJHRoaXMtPmNoZWNrX3NhZmVfY29sbGF0aW9uKCAkcXVlcnkgKSApIHsKCQkJJHRoaXMtPmNoZWNrX2
N1cnJlbnRfcXVlcnkgPSBmYWxzZTsKCQl9CgoJCWlmICggJHF1ZXJ5ICkgewoJCQkkdGhpcy0+cXVlcnkoI
CRxdWVyeSApOwoJCX0KCgkJLy8gRXh0cmFjdCB2YXIgb3V0IG9mIGNhY2hlZCByZXN1bHRzIGJhc2VkIHgs
eSB2YWxzCgkJaWYgKCAhZW1wdHkoICR0aGlzLT5sYXN0X3Jlc3VsdFskeV0gKSApIHsKCQkJJHZhbHVlcyA
9IGFycmF5X3ZhbHVlcyggZ2V0X29iamVjdF92YXJzKCAkdGhpcy0+bGFzdF9yZXN1bHRbJHldICkgKTsKCQ
l9CgoJCS8vIElmIHRoZXJlIGlzIGEgdmFsdWUgcmV0dXJuIGl0IGVsc2UgcmV0dXJuIG51bGwKCQlyZXR1c
m4gKCBpc3NldCggJHZhbHVlc1skeF0gKSAmJiAkdmFsdWVzWyR4XSAhPT0gJycgKSA/ICR2YWx1ZXNbJHhd
IDogbnVsbDsKCX0KCgkvKioKCSAqIFJldHJpZXZlIG9uZSByb3cgZnJvbSB0aGUgZGF0YWJhc2UuCgkgKgo
JICogRXhlY3V0ZXMgYSBTUUwgcXVlcnkgYW5kIHJldHVybnMgdGhlIHJvdyBmcm9tIHRoZSBTUUwgcmVzdW
x0LgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmFtIHN0cmluZ3xudWxsICRxdWVyeSAgU1FMI
HF1ZXJ5LgoJICogQHBhcmFtIHN0cmluZyAgICAgICRvdXRwdXQgT3B0aW9uYWwuIG9uZSBvZiBBUlJBWV9B
IHwgQVJSQVlfTiB8IE9CSkVDVCBjb25zdGFudHMuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB
SZXR1cm4gYW4gYXNzb2NpYXRpdmUgYXJyYXkgKGNvbHVtbiA9PiB2YWx1ZSwgLi4uKSwKCSAqICAgICAgIC
AgICAgICAgICAgICAgICAgICAgIGEgbnVtZXJpY2FsbHkgaW5kZXhlZCBhcnJheSAoMCA9PiB2YWx1ZSwgL
i4uKSBvcgoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgYW4gb2JqZWN0ICggLT5jb2x1bW4gPSB2
YWx1ZSApLCByZXNwZWN0aXZlbHkuCgkgKiBAcGFyYW0gaW50ICAgICAgICAgJHkgICAgICBPcHRpb25hbC4
gUm93IHRvIHJldHVybi4gSW5kZXhlZCBmcm9tIDAuCgkgKiBAcmV0dXJuIGFycmF5fG9iamVjdHxudWxsfH
ZvaWQgRGF0YWJhc2UgcXVlcnkgcmVzdWx0IGluIGZvcm1hdCBzcGVjaWZpZWQgYnkgJG91dHB1dCBvciBud
WxsIG9uIGZhaWx1cmUKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldF9yb3coICRxdWVyeSA9IG51bGwsICRv
dXRwdXQgPSBPQkpFQ1QsICR5ID0gMCApIHsKCQkkdGhpcy0+ZnVuY19jYWxsID0gIlwkZGItPmdldF9yb3c
oXCIkcXVlcnlcIiwkb3V0cHV0LCR5KSI7CgoJCWlmICggJHRoaXMtPmNoZWNrX2N1cnJlbnRfcXVlcnkgJi
YgJHRoaXMtPmNoZWNrX3NhZmVfY29sbGF0aW9uKCAkcXVlcnkgKSApIHsKCQkJJHRoaXMtPmNoZWNrX2N1c
nJlbnRfcXVlcnkgPSBmYWxzZTsKCQl9CgoJCWlmICggJHF1ZXJ5ICkgewoJCQkkdGhpcy0+cXVlcnkoICRx
dWVyeSApOwoJCX0gZWxzZSB7CgkJCXJldHVybiBudWxsOwoJCX0KCgkJaWYgKCAhaXNzZXQoICR0aGlzLT5
sYXN0X3Jlc3VsdFskeV0gKSApCgkJCXJldHVybiBudWxsOwoKCQlpZiAoICRvdXRwdXQgPT0gT0JKRUNUIC
kgewoJCQlyZXR1cm4gJHRoaXMtPmxhc3RfcmVzdWx0WyR5XSA/ICR0aGlzLT5sYXN0X3Jlc3VsdFskeV0gO
iBudWxsOwoJCX0gZWxzZWlmICggJG91dHB1dCA9PSBBUlJBWV9BICkgewoJCQlyZXR1cm4gJHRoaXMtPmxh
c3RfcmVzdWx0WyR5XSA/IGdldF9vYmplY3RfdmFycyggJHRoaXMtPmxhc3RfcmVzdWx0WyR5XSApIDogbnV
sbDsKCQl9IGVsc2VpZiAoICRvdXRwdXQgPT0gQVJSQVlfTiApIHsKCQkJcmV0dXJuICR0aGlzLT5sYXN0X3
Jlc3VsdFskeV0gPyBhcnJheV92YWx1ZXMoIGdldF9vYmplY3RfdmFycyggJHRoaXMtPmxhc3RfcmVzdWx0W
yR5XSApICkgOiBudWxsOwoJCX0gZWxzZWlmICggc3RydG91cHBlciggJG91dHB1dCApID09PSBPQkpFQ1Qg
KSB7CgkJCS8vIEJhY2sgY29tcGF0IGZvciBPQkpFQ1QgYmVpbmcgcHJldmlvdXNseSBjYXNlIGluc2Vuc2l
0aXZlLgoJCQlyZXR1cm4gJHRoaXMtPmxhc3RfcmVzdWx0WyR5XSA/ICR0aGlzLT5sYXN0X3Jlc3VsdFskeV
0gOiBudWxsOwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5wcmludF9lcnJvciggIiBcJGRiLT5nZXRfcm93KHN0c
mluZyBxdWVyeSwgb3V0cHV0IHR5cGUsIGludCBvZmZzZXQpIC0tIE91dHB1dCB0eXBlIG11c3QgYmUgb25l
IG9mOiBPQkpFQ1QsIEFSUkFZX0EsIEFSUkFZX04iICk7CgkJfQoJfQoKCS8qKgoJICogUmV0cmlldmUgb25
lIGNvbHVtbiBmcm9tIHRoZSBkYXRhYmFzZS4KCSAqCgkgKiBFeGVjdXRlcyBhIFNRTCBxdWVyeSBhbmQgcm
V0dXJucyB0aGUgY29sdW1uIGZyb20gdGhlIFNRTCByZXN1bHQuCgkgKiBJZiB0aGUgU1FMIHJlc3VsdCBjb
250YWlucyBtb3JlIHRoYW4gb25lIGNvbHVtbiwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb2x1bW4g
c3BlY2lmaWVkLgoJICogSWYgJHF1ZXJ5IGlzIG51bGwsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgc3B
lY2lmaWVkIGNvbHVtbiBmcm9tIHRoZSBwcmV2aW91cyBTUUwgcmVzdWx0LgoJICoKCSAqIEBzaW5jZSAwLj
cxCgkgKgoJICogQHBhcmFtIHN0cmluZ3xudWxsICRxdWVyeSBPcHRpb25hbC4gU1FMIHF1ZXJ5LiBEZWZhd
Wx0cyB0byBwcmV2aW91cyBxdWVyeS4KCSAqIEBwYXJhbSBpbnQgICAgICAgICAkeCAgICAgT3B0aW9uYWwu
IENvbHVtbiB0byByZXR1cm4uIEluZGV4ZWQgZnJvbSAwLgoJICogQHJldHVybiBhcnJheSBEYXRhYmFzZSB
xdWVyeSByZXN1bHQuIEFycmF5IGluZGV4ZWQgZnJvbSAwIGJ5IFNRTCByZXN1bHQgcm93IG51bWJlci4KCS
AqLwoJcHVibGljIGZ1bmN0aW9uIGdldF9jb2woICRxdWVyeSA9IG51bGwgLCAkeCA9IDAgKSB7CgkJaWYgK
CAkdGhpcy0+Y2hlY2tfY3VycmVudF9xdWVyeSAmJiAkdGhpcy0+Y2hlY2tfc2FmZV9jb2xsYXRpb24oICRx
dWVyeSApICkgewoJCQkkdGhpcy0+Y2hlY2tfY3VycmVudF9xdWVyeSA9IGZhbHNlOwoJCX0KCgkJaWYgKCA
kcXVlcnkgKSB7CgkJCSR0aGlzLT5xdWVyeSggJHF1ZXJ5ICk7CgkJfQoKCQkkbmV3X2FycmF5ID0gYXJyYX
koKTsKCQkvLyBFeHRyYWN0IHRoZSBjb2x1bW4gdmFsdWVzCgkJZm9yICggJGkgPSAwLCAkaiA9IGNvdW50K
CAkdGhpcy0+bGFzdF9yZXN1bHQgKTsgJGkgPCAkajsgJGkrKyApIHsKCQkJJG5ld19hcnJheVskaV0gPSAk
dGhpcy0+Z2V0X3ZhciggbnVsbCwgJHgsICRpICk7CgkJfQoJCXJldHVybiAkbmV3X2FycmF5OwoJfQoKCS8
qKgoJICogUmV0cmlldmUgYW4gZW50aXJlIFNRTCByZXN1bHQgc2V0IGZyb20gdGhlIGRhdGFiYXNlIChpLm
UuLCBtYW55IHJvd3MpCgkgKgoJICogRXhlY3V0ZXMgYSBTUUwgcXVlcnkgYW5kIHJldHVybnMgdGhlIGVud
GlyZSBTUUwgcmVzdWx0LgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcXVl
cnkgIFNRTCBxdWVyeS4KCSAqIEBwYXJhbSBzdHJpbmcgJG91dHB1dCBPcHRpb25hbC4gQW55IG9mIEFSUkF
ZX0EgfCBBUlJBWV9OIHwgT0JKRUNUIHwgT0JKRUNUX0sgY29uc3RhbnRzLgoJICogICAgICAgICAgICAgIC
AgICAgICAgIFdpdGggb25lIG9mIHRoZSBmaXJzdCB0aHJlZSwgcmV0dXJuIGFuIGFycmF5IG9mIHJvd3Mga
W5kZXhlZCBmcm9tIDAgYnkgU1FMIHJlc3VsdCByb3cgbnVtYmVyLgoJICogICAgICAgICAgICAgICAgICAg
ICAgIEVhY2ggcm93IGlzIGFuIGFzc29jaWF0aXZlIGFycmF5IChjb2x1bW4gPT4gdmFsdWUsIC4uLiksIGE
gbnVtZXJpY2FsbHkgaW5kZXhlZCBhcnJheSAoMCA9PiB2YWx1ZSwgLi4uKSwgb3IgYW4gb2JqZWN0LiAoIC
0+Y29sdW1uID0gdmFsdWUgKSwgcmVzcGVjdGl2ZWx5LgoJICogICAgICAgICAgICAgICAgICAgICAgIFdpd
GggT0JKRUNUX0ssIHJldHVybiBhbiBhc3NvY2lhdGl2ZSBhcnJheSBvZiByb3cgb2JqZWN0cyBrZXllZCBi
eSB0aGUgdmFsdWUgb2YgZWFjaCByb3cncyBmaXJzdCBjb2x1bW4ncyB2YWx1ZS4KCSAqICAgICAgICAgICA
gICAgICAgICAgICBEdXBsaWNhdGUga2V5cyBhcmUgZGlzY2FyZGVkLgoJICogQHJldHVybiBhcnJheXxvYm
plY3R8bnVsbCBEYXRhYmFzZSBxdWVyeSByZXN1bHRzCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfcmVzd
Wx0cyggJHF1ZXJ5ID0gbnVsbCwgJG91dHB1dCA9IE9CSkVDVCApIHsKCQkkdGhpcy0+ZnVuY19jYWxsID0g
IlwkZGItPmdldF9yZXN1bHRzKFwiJHF1ZXJ5XCIsICRvdXRwdXQpIjsKCgkJaWYgKCAkdGhpcy0+Y2hlY2t
fY3VycmVudF9xdWVyeSAmJiAkdGhpcy0+Y2hlY2tfc2FmZV9jb2xsYXRpb24oICRxdWVyeSApICkgewoJCQ
kkdGhpcy0+Y2hlY2tfY3VycmVudF9xdWVyeSA9IGZhbHNlOwoJCX0KCgkJaWYgKCAkcXVlcnkgKSB7CgkJC
SR0aGlzLT5xdWVyeSggJHF1ZXJ5ICk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIG51bGw7CgkJfQoKCQkkbmV3
X2FycmF5ID0gYXJyYXkoKTsKCQlpZiAoICRvdXRwdXQgPT0gT0JKRUNUICkgewoJCQkvLyBSZXR1cm4gYW4
gaW50ZWdlci1rZXllZCBhcnJheSBvZiByb3cgb2JqZWN0cwoJCQlyZXR1cm4gJHRoaXMtPmxhc3RfcmVzdW
x0OwoJCX0gZWxzZWlmICggJG91dHB1dCA9PSBPQkpFQ1RfSyApIHsKCQkJLy8gUmV0dXJuIGFuIGFycmF5I
G9mIHJvdyBvYmplY3RzIHdpdGgga2V5cyBmcm9tIGNvbHVtbiAxCgkJCS8vIChEdXBsaWNhdGVzIGFyZSBk
aXNjYXJkZWQpCgkJCWZvcmVhY2ggKCAkdGhpcy0+bGFzdF9yZXN1bHQgYXMgJHJvdyApIHsKCQkJCSR2YXJ
fYnlfcmVmID0gZ2V0X29iamVjdF92YXJzKCAkcm93ICk7CgkJCQkka2V5ID0gYXJyYXlfc2hpZnQoICR2YX
JfYnlfcmVmICk7CgkJCQlpZiAoICEgaXNzZXQoICRuZXdfYXJyYXlbICRrZXkgXSApICkKCQkJCQkkbmV3X
2FycmF5WyAka2V5IF0gPSAkcm93OwoJCQl9CgkJCXJldHVybiAkbmV3X2FycmF5OwoJCX0gZWxzZWlmICgg
JG91dHB1dCA9PSBBUlJBWV9BIHx8ICRvdXRwdXQgPT0gQVJSQVlfTiApIHsKCQkJLy8gUmV0dXJuIGFuIGl
udGVnZXIta2V5ZWQgYXJyYXkgb2YuLi4KCQkJaWYgKCAkdGhpcy0+bGFzdF9yZXN1bHQgKSB7CgkJCQlmb3
JlYWNoICggKGFycmF5KSAkdGhpcy0+bGFzdF9yZXN1bHQgYXMgJHJvdyApIHsKCQkJCQlpZiAoICRvdXRwd
XQgPT0gQVJSQVlfTiApIHsKCQkJCQkJLy8gLi4uaW50ZWdlci1rZXllZCByb3cgYXJyYXlzCgkJCQkJCSRu
ZXdfYXJyYXlbXSA9IGFycmF5X3ZhbHVlcyggZ2V0X29iamVjdF92YXJzKCAkcm93ICkgKTsKCQkJCQl9IGV
sc2UgewoJCQkJCQkvLyAuLi5jb2x1bW4gbmFtZS1rZXllZCByb3cgYXJyYXlzCgkJCQkJCSRuZXdfYXJyYX
lbXSA9IGdldF9vYmplY3RfdmFycyggJHJvdyApOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlyZXR1cm4gJG5ld
19hcnJheTsKCQl9IGVsc2VpZiAoIHN0cnRvdXBwZXIoICRvdXRwdXQgKSA9PT0gT0JKRUNUICkgewoJCQkv
LyBCYWNrIGNvbXBhdCBmb3IgT0JKRUNUIGJlaW5nIHByZXZpb3VzbHkgY2FzZSBpbnNlbnNpdGl2ZS4KCQk
JcmV0dXJuICR0aGlzLT5sYXN0X3Jlc3VsdDsKCQl9CgkJcmV0dXJuIG51bGw7Cgl9CgoJLyoqCgkgKiBSZX
RyaWV2ZXMgdGhlIGNoYXJhY3RlciBzZXQgZm9yIHRoZSBnaXZlbiB0YWJsZS4KCSAqCgkgKiBAc2luY2UgN
C4yLjAKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdGFibGUgVGFibGUg
bmFtZS4KCSAqIEByZXR1cm4gc3RyaW5nfFdQX0V
ycm9yIFRhYmxlIGNoYXJhY3RlciBzZXQsIFdQX0Vycm9yIG9iamVjdCBpZiBpdCBjb3VsZG4ndCBiZSBmb3
VuZC4KCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF90YWJsZV9jaGFyc2V0KCAkdGFibGUgKSB7CgkJJ
HRhYmxla2V5ID0gc3RydG9sb3dlciggJHRhYmxlICk7CgoJCS8qKgoJCSAqIEZpbHRlciB0aGUgdGFibGUg
Y2hhcnNldCB2YWx1ZSBiZWZvcmUgdGhlIERCIGlzIGNoZWNrZWQuCgkJICoKCQkgKiBQYXNzaW5nIGEgbm9
uLW51bGwgdmFsdWUgdG8gdGhlIGZpbHRlciB3aWxsIGVmZmVjdGl2ZWx5IHNob3J0LWNpcmN1aXQKCQkgKi
BjaGVja2luZyB0aGUgREIgZm9yIHRoZSBjaGFyc2V0LCByZXR1cm5pbmcgdGhhdCB2YWx1ZSBpbnN0ZWFkL
goJCSAqCgkJICogQHNpbmNlIDQuMi4wCgkJICoKCQkgKiBAcGFyYW0gc3RyaW5nICRjaGFyc2V0IFRoZSBj
aGFyYWN0ZXIgc2V0IHRvIHVzZS4gRGVmYXVsdCBudWxsLgoJCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlICA
gVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGJlaW5nIGNoZWNrZWQuCgkJICovCgkJJGNoYXJzZXQgPSBhcHBseV
9maWx0ZXJzKCAncHJlX2dldF90YWJsZV9jaGFyc2V0JywgbnVsbCwgJHRhYmxlICk7CgkJaWYgKCBudWxsI
CE9PSAkY2hhcnNldCApIHsKCQkJcmV0dXJuICRjaGFyc2V0OwoJCX0KCgkJaWYgKCBpc3NldCggJHRoaXMt
PnRhYmxlX2NoYXJzZXRbICR0YWJsZWtleSBdICkgKSB7CgkJCXJldHVybiAkdGhpcy0+dGFibGVfY2hhcnN
ldFsgJHRhYmxla2V5IF07CgkJfQoKCQkkY2hhcnNldHMgPSAkY29sdW1ucyA9IGFycmF5KCk7CgoJCSR0YW
JsZV9wYXJ0cyA9IGV4cGxvZGUoICcuJywgJHRhYmxlICk7CgkJJHRhYmxlID0gJ2AnIC4gaW1wbG9kZSggJ
2AuYCcsICR0YWJsZV9wYXJ0cyApIC4gJ2AnOwoJCSRyZXN1bHRzID0gJHRoaXMtPmdldF9yZXN1bHRzKCAi
U0hPVyBGVUxMIENPTFVNTlMgRlJPTSAkdGFibGUiICk7CgkJaWYgKCAhICRyZXN1bHRzICkgewoJCQlyZXR
1cm4gbmV3IFdQX0Vycm9yKCAnd3BkYl9nZXRfdGFibGVfY2hhcnNldF9mYWlsdXJlJyApOwoJCX0KCgkJZm
9yZWFjaCAoICRyZXN1bHRzIGFzICRjb2x1bW4gKSB7CgkJCSRjb2x1bW5zWyBzdHJ0b2xvd2VyKCAkY29sd
W1uLT5GaWVsZCApIF0gPSAkY29sdW1uOwoJCX0KCgkJJHRoaXMtPmNvbF9tZXRhWyAkdGFibGVrZXkgXSA9
ICRjb2x1bW5zOwoKCQlmb3JlYWNoICggJGNvbHVtbnMgYXMgJGNvbHVtbiApIHsKCQkJaWYgKCAhIGVtcHR
5KCAkY29sdW1uLT5Db2xsYXRpb24gKSApIHsKCQkJCWxpc3QoICRjaGFyc2V0ICkgPSBleHBsb2RlKCAnXy
csICRjb2x1bW4tPkNvbGxhdGlvbiApOwoKCQkJCS8vIElmIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24gY2FuJ
3Qgc3VwcG9ydCB1dGY4bWI0IGNoYXJhY3RlcnMsIGxldCdzIG9ubHkgc2VuZCAzLWJ5dGUgdXRmOCBjaGFy
YWN0ZXJzLgoJCQkJaWYgKCAndXRmOG1iNCcgPT09ICRjaGFyc2V0ICYmICEgJHRoaXMtPmhhc19jYXAoICd
1dGY4bWI0JyApICkgewoJCQkJCSRjaGFyc2V0ID0gJ3V0ZjgnOwoJCQkJfQoKCQkJCSRjaGFyc2V0c1sgc3
RydG9sb3dlciggJGNoYXJzZXQgKSBdID0gdHJ1ZTsKCQkJfQoKCQkJbGlzdCggJHR5cGUgKSA9IGV4cGxvZ
GUoICcoJywgJGNvbHVtbi0+VHlwZSApOwoKCQkJLy8gQSBiaW5hcnkvYmxvYiBtZWFucyB0aGUgd2hvbGUg
cXVlcnkgZ2V0cyB0cmVhdGVkIGxpa2UgdGhpcy4KCQkJaWYgKCBpbl9hcnJheSggc3RydG91cHBlciggJHR
5cGUgKSwgYXJyYXkoICdCSU5BUlknLCAnVkFSQklOQVJZJywgJ1RJTllCTE9CJywgJ01FRElVTUJMT0InLC
AnQkxPQicsICdMT05HQkxPQicgKSApICkgewoJCQkJJHRoaXMtPnRhYmxlX2NoYXJzZXRbICR0YWJsZWtle
SBdID0gJ2JpbmFyeSc7CgkJCQlyZXR1cm4gJ2JpbmFyeSc7CgkJCX0KCQl9CgoJCS8vIHV0ZjhtYjMgaXMg
YW4gYWxpYXMgZm9yIHV0ZjguCgkJaWYgKCBpc3NldCggJGNoYXJzZXRzWyd1dGY4bWIzJ10gKSApIHsKCQk
JJGNoYXJzZXRzWyd1dGY4J10gPSB0cnVlOwoJCQl1bnNldCggJGNoYXJzZXRzWyd1dGY4bWIzJ10gKTsKCQ
l9CgoJCS8vIENoZWNrIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjaGFyc2V0IGluIHBsYXkuCgkJJGNvd
W50ID0gY291bnQoICRjaGFyc2V0cyApOwoJCWlmICggMSA9PT0gJGNvdW50ICkgewoJCQkkY2hhcnNldCA9
IGtleSggJGNoYXJzZXRzICk7CgkJfSBlbHNlaWYgKCAwID09PSAkY291bnQgKSB7CgkJCS8vIE5vIGNoYXJ
zZXRzLCBhc3N1bWUgdGhpcyB0YWJsZSBjYW4gc3RvcmUgd2hhdGV2ZXIuCgkJCSRjaGFyc2V0ID0gZmFsc2
U7CgkJfSBlbHNlIHsKCQkJLy8gTW9yZSB0aGFuIG9uZSBjaGFyc2V0LiBSZW1vdmUgbGF0aW4xIGlmIHByZ
XNlbnQgYW5kIHJlY2FsY3VsYXRlLgoJCQl1bnNldCggJGNoYXJzZXRzWydsYXRpbjEnXSApOwoJCQkkY291
bnQgPSBjb3VudCggJGNoYXJzZXRzICk7CgkJCWlmICggMSA9PT0gJGNvdW50ICkgewoJCQkJLy8gT25seSB
vbmUgY2hhcnNldCAoYmVzaWRlcyBsYXRpbjEpLgoJCQkJJGNoYXJzZXQgPSBrZXkoICRjaGFyc2V0cyApOw
oJCQl9IGVsc2VpZiAoIDIgPT09ICRjb3VudCAmJiBpc3NldCggJGNoYXJzZXRzWyd1dGY4J10sICRjaGFyc
2V0c1sndXRmOG1iNCddICkgKSB7CgkJCQkvLyBUd28gY2hhcnNldHMsIGJ1dCB0aGV5J3JlIHV0ZjggYW5k
IHV0ZjhtYjQsIHVzZSB1dGY4LgoJCQkJJGNoYXJzZXQgPSAndXRmOCc7CgkJCX0gZWxzZSB7CgkJCQkvLyB
Ud28gbWl4ZWQgY2hhcmFjdGVyIHNldHMuIGFzY2lpLgoJCQkJJGNoYXJzZXQgPSAnYXNjaWknOwoJCQl9Cg
kJfQoKCQkkdGhpcy0+dGFibGVfY2hhcnNldFsgJHRhYmxla2V5IF0gPSAkY2hhcnNldDsKCQlyZXR1cm4gJ
GNoYXJzZXQ7Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZXMgdGhlIGNoYXJhY3RlciBzZXQgZm9yIHRoZSBnaXZl
biBjb2x1bW4uCgkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJ
hbSBzdHJpbmcgJHRhYmxlICBUYWJsZSBuYW1lLgoJICogQHBhcmFtIHN0cmluZyAkY29sdW1uIENvbHVtbi
BuYW1lLgoJICogQHJldHVybiBzdHJpbmd8ZmFsc2V8V1BfRXJyb3IgQ29sdW1uIGNoYXJhY3RlciBzZXQgY
XMgYSBzdHJpbmcuIEZhbHNlIGlmIHRoZSBjb2x1bW4gaGFzIG5vCgkgKiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFyYWN0ZXIgc2V0LiBXUF9FcnJvciBvYmplY3QgaWYgdGhlcmUgd2FzIGFuIGVycm9
yLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbF9jaGFyc2V0KCAkdGFibGUsICRjb2x1bW4gKSB7Cg
kJJHRhYmxla2V5ID0gc3RydG9sb3dlciggJHRhYmxlICk7CgkJJGNvbHVtbmtleSA9IHN0cnRvbG93ZXIoI
CRjb2x1bW4gKTsKCgkJLyoqCgkJICogRmlsdGVyIHRoZSBjb2x1bW4gY2hhcnNldCB2YWx1ZSBiZWZvcmUg
dGhlIERCIGlzIGNoZWNrZWQuCgkJICoKCQkgKiBQYXNzaW5nIGEgbm9uLW51bGwgdmFsdWUgdG8gdGhlIGZ
pbHRlciB3aWxsIHNob3J0LWNpcmN1aXQKCQkgKiBjaGVja2luZyB0aGUgREIgZm9yIHRoZSBjaGFyc2V0LC
ByZXR1cm5pbmcgdGhhdCB2YWx1ZSBpbnN0ZWFkLgoJCSAqCgkJICogQHNpbmNlIDQuMi4wCgkJICoKCQkgK
iBAcGFyYW0gc3RyaW5nICRjaGFyc2V0IFRoZSBjaGFyYWN0ZXIgc2V0IHRvIHVzZS4gRGVmYXVsdCBudWxs
LgoJCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlICAgVGhlIG5hbWUgb2YgdGhlIHRhYmxlIGJlaW5nIGNoZWN
rZWQuCgkJICogQHBhcmFtIHN0cmluZyAkY29sdW1uICBUaGUgbmFtZSBvZiB0aGUgY29sdW1uIGJlaW5nIG
NoZWNrZWQuCgkJICovCgkJJGNoYXJzZXQgPSBhcHBseV9maWx0ZXJzKCAncHJlX2dldF9jb2xfY2hhcnNld
CcsIG51bGwsICR0YWJsZSwgJGNvbHVtbiApOwoJCWlmICggbnVsbCAhPT0gJGNoYXJzZXQgKSB7CgkJCXJl
dHVybiAkY2hhcnNldDsKCQl9CgoJCS8vIFNraXAgdGhpcyBlbnRpcmVseSBpZiB0aGlzIGlzbid0IGEgTXl
TUUwgZGF0YWJhc2UuCgkJaWYgKCBlbXB0eSggJHRoaXMtPmlzX215c3FsICkgKSB7CgkJCXJldHVybiBmYW
xzZTsKCQl9CgoJCWlmICggZW1wdHkoICR0aGlzLT50YWJsZV9jaGFyc2V0WyAkdGFibGVrZXkgXSApICkge
woJCQkvLyBUaGlzIHByaW1lcyBjb2x1bW4gaW5mb3JtYXRpb24gZm9yIHVzLgoJCQkkdGFibGVfY2hhcnNl
dCA9ICR0aGlzLT5nZXRfdGFibGVfY2hhcnNldCggJHRhYmxlICk7CgkJCWlmICggaXNfd3BfZXJyb3IoICR
0YWJsZV9jaGFyc2V0ICkgKSB7CgkJCQlyZXR1cm4gJHRhYmxlX2NoYXJzZXQ7CgkJCX0KCQl9CgoJCS8vIE
lmIHN0aWxsIG5vIGNvbHVtbiBpbmZvcm1hdGlvbiwgcmV0dXJuIHRoZSB0YWJsZSBjaGFyc2V0LgoJCWlmI
CggZW1wdHkoICR0aGlzLT5jb2xfbWV0YVsgJHRhYmxla2V5IF0gKSApIHsKCQkJcmV0dXJuICR0aGlzLT50
YWJsZV9jaGFyc2V0WyAkdGFibGVrZXkgXTsKCQl9CgoJCS8vIElmIHRoaXMgY29sdW1uIGRvZXNuJ3QgZXh
pc3QsIHJldHVybiB0aGUgdGFibGUgY2hhcnNldC4KCQlpZiAoIGVtcHR5KCAkdGhpcy0+Y29sX21ldGFbIC
R0YWJsZWtleSBdWyAkY29sdW1ua2V5IF0gKSApIHsKCQkJcmV0dXJuICR0aGlzLT50YWJsZV9jaGFyc2V0W
yAkdGFibGVrZXkgXTsKCQl9CgoJCS8vIFJldHVybiBmYWxzZSB3aGVuIGl0J3Mgbm90IGEgc3RyaW5nIGNv
bHVtbi4KCQlpZiAoIGVtcHR5KCAkdGhpcy0+Y29sX21ldGFbICR0YWJsZWtleSBdWyAkY29sdW1ua2V5IF0
tPkNvbGxhdGlvbiApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlsaXN0KCAkY2hhcnNldCApID0gZX
hwbG9kZSggJ18nLCAkdGhpcy0+Y29sX21ldGFbICR0YWJsZWtleSBdWyAkY29sdW1ua2V5IF0tPkNvbGxhd
GlvbiApOwoJCXJldHVybiAkY2hhcnNldDsKCX0KCgkvKioKCSAqIFJldHJpZXZlIHRoZSBtYXhpbXVtIHN0
cmluZyBsZW5ndGggYWxsb3dlZCBpbiBhIGdpdmVuIGNvbHVtbi4KCSAqIFRoZSBsZW5ndGggbWF5IGVpdGh
lciBiZSBzcGVjaWZpZWQgYXMgYSBieXRlIGxlbmd0aCBvciBhIGNoYXJhY3RlciBsZW5ndGguCgkgKgoJIC
ogQHNpbmNlIDQuMi4xCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlI
CBUYWJsZSBuYW1lLgoJICogQHBhcmFtIHN0cmluZyAkY29sdW1uIENvbHVtbiBuYW1lLgoJICogQHJldHVy
biBhcnJheXxmYWxzZXxXUF9FcnJvciBhcnJheSggJ2xlbmd0aCcgPT4gKGludCksICd0eXBlJyA9PiAnYnl
0ZScgfCAnY2hhcicgKQoJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSBpZiB0aGUgY2
9sdW1uIGhhcyBubyBsZW5ndGggKGZvciBleGFtcGxlLCBudW1lcmljIGNvbHVtbikKCSAqICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgV1BfRXJyb3Igb2JqZWN0IGlmIHRoZXJlIHdhcyBhbiBlcnJvci4KCSAq
LwoJcHVibGljIGZ1bmN0aW9uIGdldF9jb2xfbGVuZ3RoKCAkdGFibGUsICRjb2x1bW4gKSB7CgkJJHRhYmx
la2V5ID0gc3RydG9sb3dlciggJHRhYmxlICk7CgkJJGNvbHVtbmtleSA9IHN0cnRvbG93ZXIoICRjb2x1bW
4gKTsKCgkJLy8gU2tpcCB0aGlzIGVudGlyZWx5IGlmIHRoaXMgaXNuJ3QgYSBNeVNRTCBkYXRhYmFzZS4KC
QlpZiAoIGVtcHR5KCAkdGhpcy0+aXNfbXlzcWwgKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJaWYg
KCBlbXB0eSggJHRoaXMtPmNvbF9tZXRhWyAkdGFibGVrZXkgXSApICkgewoJCQkvLyBUaGlzIHByaW1lcyB
jb2x1bW4gaW5mb3JtYXRpb24gZm9yIHVzLgoJCQkkdGFibGVfY2hhcnNldCA9ICR0aGlzLT5nZXRfdGFibG
VfY2hhcnNldCggJHRhYmxlICk7CgkJCWlmICggaXNfd3BfZXJyb3IoICR0YWJsZV9jaGFyc2V0ICkgKSB7C
gkJCQlyZXR1cm4gJHRhYmxlX2NoYXJzZXQ7CgkJCX0KCQl9CgoJCWlmICggZW1wdHkoICR0aGlzLT5jb2xf
bWV0YVsgJHRhYmxla2V5IF1bICRjb2x1bW5rZXkgXSApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQk
kdHlwZWluZm8gPSBleHBsb2RlKCAnKCcsICR0aGlzLT5jb2xfbWV0YVsgJHRhYmxla2V5IF1bICRjb2x1bW
5rZXkgXS0+VHlwZSApOwoKCQkkdHlwZSA9IHN0cnRvbG93ZXIoICR0eXBlaW5mb1swXSApOwoJCWlmICggI
SBlbXB0eSggJHR5cGVpbmZvWzFdICkgKSB7CgkJCSRsZW5ndGggPSB0cmltKCAkdHlwZWluZm9bMV0sICcp
JyApOwoJCX0gZWxzZSB7CgkJCSRsZW5ndGggPSBmYWxzZTsKCQl9CgoJCXN3aXRjaCggJHR5cGUgKSB7Cgk
JCWNhc2UgJ2NoYXInOgoJCQljYXNlICd2YXJjaGFyJzoKCQkJCXJldHVybiBhcnJheSgKCQkJCQkndHlwZS
cgICA9PiAnY2hhcicsCgkJCQkJJ2xlbmd0aCcgPT4gKGludCkgJGxlbmd0aCwKCQkJCSk7CgoJCQljYXNlI
CdiaW5hcnknOgoJCQljYXNlICd2YXJiaW5hcnknOgoJCQkJcmV0dXJuIGFycmF5KAoJCQkJCSd0eXBlJyAg
ID0+ICdieXRlJywKCQkJCQknbGVuZ3RoJyA9PiAoaW50KSAkbGVuZ3RoLAoJCQkJKTsKCgkJCWNhc2UgJ3R
pbnlibG9iJzoKCQkJY2FzZSAndGlueXRleHQnOgoJCQkJcmV0dXJuIGFycmF5KAoJCQkJCSd0eXBlJyAgID
0+ICdieXRlJywKCQkJCQknbGVuZ3RoJyA9PiAyNTUsICAgICAgICAvLyAyXjggLSAxCgkJCQkpOwoKCQkJY
2FzZSAnYmxvYic6CgkJCWNhc2UgJ3RleHQnOgoJCQkJcmV0dXJuIGFycmF5KAoJCQkJCSd0eXBlJyAgID0+
ICdieXRlJywKCQkJCQknbGVuZ3RoJyA9PiA2NTUzNSwgICAgICAvLyAyXjE2IC0gMQoJCQkJKTsKCgkJCWN
hc2UgJ21lZGl1bWJsb2InOgoJCQljYXNlICdtZWRpdW10ZXh0JzoKCQkJCXJldHVybiBhcnJheSgKCQkJCQ
kndHlwZScgICA9PiAnYnl0ZScsCgkJCQkJJ2xlbmd0aCcgPT4gMTY3NzcyMTUsICAgLy8gMl4yNCAtIDEKC
QkJCSk7CgoJCQljYXNlICdsb25nYmxvYic6CgkJCWNhc2UgJ2xvbmd0ZXh0JzoKCQkJCXJldHVybiBhcnJh
eSgKCQkJCQkndHlwZScgICA9PiAnYnl0ZScsCgkJCQkJJ2xlbmd0aCcgPT4gNDI5NDk2NzI5NSwgLy8gMl4
zMiAtIDEKCQkJCSk7CgoJCQlkZWZhdWx0OgoJCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvKioKCSAqIE
NoZWNrIGlmIGEgc3RyaW5nIGlzIEFTQ0lJLgoJICoKCSAqIFRoZSBuZWdhdGl2ZSByZWdleCBpcyBmYXN0Z
XIgZm9yIG5vbi1BU0NJSSBzdHJpbmdzLCBhcyBpdCBhbGxvd3MKCSAqIHRoZSBzZWFyY2ggdG8gZmluaXNo
IGFzIHNvb24gYXMgaXQgZW5jb3VudGVycyBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIuCgkgKgoJICogQHNpbmN
lIDQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHN0cmluZyBTdH
JpbmcgdG8gY2hlY2suCgkgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBpZiBBU0NJSSwgZmFsc2UgaWYgbm90LgoJI
CovCglwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tfYXNjaWkoICRzdHJpbmcgKSB7CgkJaWYgKCBmdW5jdGlv
bl9leGlzdHMoICdtYl9jaGVja19lbmNvZGluZycgKSApIHsKCQkJaWYgKCBtYl9jaGVja19lbmNvZGluZyg
gJHN0cmluZywgJ0FTQ0lJJyApICkgewoJCQkJcm
V0dXJuIHRydWU7CgkJCX0KCQl9IGVsc2VpZiAoICEgcHJlZ19tYXRjaCggJy9bXlx4MDAtXHg3Rl0vJywgJ
HN0cmluZyApICkgewoJCQlyZXR1cm4gdHJ1ZTsKCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAq
IENoZWNrIGlmIHRoZSBxdWVyeSBpcyBhY2Nlc3NpbmcgYSBjb2xsYXRpb24gY29uc2lkZXJlZCBzYWZlIG9
uIHRoZSBjdXJyZW50IHZlcnNpb24gb2YgTXlTUUwuCgkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZX
NzIHByb3RlY3RlZAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHF1ZXJ5IFRoZSBxdWVyeSB0byBjaGVjay4KC
SAqIEByZXR1cm4gYm9vbCBUcnVlIGlmIHRoZSBjb2xsYXRpb24gaXMgc2FmZSwgZmFsc2UgaWYgaXQgaXNu
J3QuCgkgKi8KCXByb3RlY3RlZCBmdW5jdGlvbiBjaGVja19zYWZlX2NvbGxhdGlvbiggJHF1ZXJ5ICkgewo
JCWlmICggJHRoaXMtPmNoZWNraW5nX2NvbGxhdGlvbiApIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoKCQkvLy
BXZSBkb24ndCBuZWVkIHRvIGNoZWNrIHRoZSBjb2xsYXRpb24gZm9yIHF1ZXJpZXMgdGhhdCBkb24ndCByZ
WFkIGRhdGEuCgkJJHF1ZXJ5ID0gbHRyaW0oICRxdWVyeSwgIlxyXG5cdCAoIiApOwoJCWlmICggcHJlZ19t
YXRjaCggJy9eKD86U0hPV3xERVNDUklCRXxERVNDfEVYUExBSU58Q1JFQVRFKVxzL2knLCAkcXVlcnkgKSA
pIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoKCQkvLyBBbGwtQVNDSUkgcXVlcmllcyBkb24ndCBuZWVkIGV4dH
JhIGNoZWNraW5nLgoJCWlmICggJHRoaXMtPmNoZWNrX2FzY2lpKCAkcXVlcnkgKSApIHsKCQkJcmV0dXJuI
HRydWU7CgkJfQoKCQkkdGFibGUgPSAkdGhpcy0+Z2V0X3RhYmxlX2Zyb21fcXVlcnkoICRxdWVyeSApOwoJ
CWlmICggISAkdGFibGUgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSR0aGlzLT5jaGVja2luZ19jb2x
sYXRpb24gPSB0cnVlOwoJCSRjb2xsYXRpb24gPSAkdGhpcy0+Z2V0X3RhYmxlX2NoYXJzZXQoICR0YWJsZS
ApOwoJCSR0aGlzLT5jaGVja2luZ19jb2xsYXRpb24gPSBmYWxzZTsKCgkJLy8gVGFibGVzIHdpdGggbm8gY
29sbGF0aW9uLCBvciBsYXRpbjEgb25seSwgZG9uJ3QgbmVlZCBleHRyYSBjaGVja2luZy4KCQlpZiAoIGZh
bHNlID09PSAkY29sbGF0aW9uIHx8ICdsYXRpbjEnID09PSAkY29sbGF0aW9uICkgewoJCQlyZXR1cm4gdHJ
1ZTsKCQl9CgoJCSR0YWJsZSA9IHN0cnRvbG93ZXIoICR0YWJsZSApOwoJCWlmICggZW1wdHkoICR0aGlzLT
5jb2xfbWV0YVsgJHRhYmxlIF0gKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gSWYgYW55IG9mI
HRoZSBjb2x1bW5zIGRvbid0IGhhdmUgb25lIG9mIHRoZXNlIGNvbGxhdGlvbnMsIGl0IG5lZWRzIG1vcmUg
c2FuaXR5IGNoZWNraW5nLgoJCWZvcmVhY2ggKCAkdGhpcy0+Y29sX21ldGFbICR0YWJsZSBdIGFzICRjb2w
gKSB7CgkJCWlmICggZW1wdHkoICRjb2wtPkNvbGxhdGlvbiApICkgewoJCQkJY29udGludWU7CgkJCX0KCg
kJCWlmICggISBpbl9hcnJheSggJGNvbC0+Q29sbGF0aW9uLCBhcnJheSggJ3V0ZjhfZ2VuZXJhbF9jaScsI
Cd1dGY4X2JpbicsICd1dGY4bWI0X2dlbmVyYWxfY2knLCAndXRmOG1iNF9iaW4nICksIHRydWUgKSApIHsK
CQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoJLyoqCgkgKiBTdHJpcHM
gYW55IGludmFsaWQgY2hhcmFjdGVycyBiYXNlZCBvbiB2YWx1ZS9jaGFyc2V0IHBhaXJzLgoJICoKCSAqIE
BzaW5jZSA0LjIuMAoJICogQGFjY2VzcyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGRhdGEgQ
XJyYXkgb2YgdmFsdWUgYXJyYXlzLiBFYWNoIHZhbHVlIGFycmF5IGhhcyB0aGUga2V5cwoJICogICAgICAg
ICAgICAgICAgICAgICd2YWx1ZScgYW5kICdjaGFyc2V0Jy4gQW4gb3B0aW9uYWwgJ2FzY2lpJyBrZXkgY2F
uIGJlCgkgKiAgICAgICAgICAgICAgICAgICAgc2V0IHRvIGZhbHNlIHRvIGF2b2lkIHJlZHVuZGFudCBBU0
NJSSBjaGVja3MuCgkgKiBAcmV0dXJuIGFycmF5fFdQX0Vycm9yIFRoZSAkZGF0YSBwYXJhbWV0ZXIsIHdpd
GggaW52YWxpZCBjaGFyYWN0ZXJzIHJlbW92ZWQgZnJvbQoJICogICAgICAgICAgICAgICAgICAgICAgICBl
YWNoIHZhbHVlLiBUaGlzIHdvcmtzIGFzIGEgcGFzc3Rocm91Z2g6IGFueSBhZGRpdGlvbmFsIGtleXMKCSA
qICAgICAgICAgICAgICAgICAgICAgICAgc3VjaCBhcyAnZmllbGQnIGFyZSByZXRhaW5lZCBpbiBlYWNoIH
ZhbHVlIGFycmF5LiBJZiB3ZSBjYW5ub3QKCSAqICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlIGlud
mFsaWQgY2hhcmFjdGVycywgYSBXUF9FcnJvciBvYmplY3QgaXMgcmV0dXJuZWQuCgkgKi8KCXByb3RlY3Rl
ZCBmdW5jdGlvbiBzdHJpcF9pbnZhbGlkX3RleHQoICRkYXRhICkgewoJCSRkYl9jaGVja19zdHJpbmcgPSB
mYWxzZTsKCgkJZm9yZWFjaCAoICRkYXRhIGFzICYkdmFsdWUgKSB7CgkJCSRjaGFyc2V0ID0gJHZhbHVlWy
djaGFyc2V0J107CgoJCQlpZiAoIGlzX2FycmF5KCAkdmFsdWVbJ2xlbmd0aCddICkgKSB7CgkJCQkkbGVuZ
3RoID0gJHZhbHVlWydsZW5ndGgnXVsnbGVuZ3RoJ107CgkJCQkkdHJ1bmNhdGVfYnlfYnl0ZV9sZW5ndGgg
PSAnYnl0ZScgPT09ICR2YWx1ZVsnbGVuZ3RoJ11bJ3R5cGUnXTsKCQkJfSBlbHNlIHsKCQkJCSRsZW5ndGg
gPSBmYWxzZTsKCQkJCS8vIFNpbmNlIHdlIGhhdmUgbm8gbGVuZ3RoLCB3ZSdsbCBuZXZlciB0cnVuY2F0ZS
4KCQkJCS8vIEluaXRpYWxpemUgdGhlIHZhcmlhYmxlIHRvIGZhbHNlLiB0cnVlIHdvdWxkIHRha2UgdXMKC
QkJCS8vIHRocm91Z2ggYW4gdW5uZWNlc3NhcnkgKGZvciB0aGlzIGNhc2UpIGNvZGVwYXRoIGJlbG93LgoJ
CQkJJHRydW5jYXRlX2J5X2J5dGVfbGVuZ3RoID0gZmFsc2U7CgkJCX0KCgkJCS8vIFRoZXJlJ3Mgbm8gY2h
hcnNldCB0byB3b3JrIHdpdGguCgkJCWlmICggZmFsc2UgPT09ICRjaGFyc2V0ICkgewoJCQkJY29udGludW
U7CgkJCX0KCgkJCS8vIENvbHVtbiBpc24ndCBhIHN0cmluZy4KCQkJaWYgKCAhIGlzX3N0cmluZyggJHZhb
HVlWyd2YWx1ZSddICkgKSB7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJG5lZWRzX3ZhbGlkYXRpb24gPSB0
cnVlOwoJCQlpZiAoCgkJCQkvLyBsYXRpbjEgY2FuIHN0b3JlIGFueSBieXRlIHNlcXVlbmNlCgkJCQknbGF
0aW4xJyA9PT0gJGNoYXJzZXQKCQkJfHwKCQkJCS8vIEFTQ0lJIGlzIGFsd2F5cyBPSy4KCQkJCSggISBpc3
NldCggJHZhbHVlWydhc2NpaSddICkgJiYgJHRoaXMtPmNoZWNrX2FzY2lpKCAkdmFsdWVbJ3ZhbHVlJ10gK
SApCgkJCSkgewoJCQkJJHRydW5jYXRlX2J5X2J5dGVfbGVuZ3RoID0gdHJ1ZTsKCQkJCSRuZWVkc192YWxp
ZGF0aW9uID0gZmFsc2U7CgkJCX0KCgkJCWlmICggJHRydW5jYXRlX2J5X2J5dGVfbGVuZ3RoICkgewoJCQk
JbWJzdHJpbmdfYmluYXJ5X3NhZmVfZW5jb2RpbmcoKTsKCQkJCWlmICggZmFsc2UgIT09ICRsZW5ndGggJi
Ygc3RybGVuKCAkdmFsdWVbJ3ZhbHVlJ10gKSA+ICRsZW5ndGggKSB7CgkJCQkJJHZhbHVlWyd2YWx1ZSddI
D0gc3Vic3RyKCAkdmFsdWVbJ3ZhbHVlJ10sIDAsICRsZW5ndGggKTsKCQkJCX0KCQkJCXJlc2V0X21ic3Ry
aW5nX2VuY29kaW5nKCk7CgoJCQkJaWYgKCAhICRuZWVkc192YWxpZGF0aW9uICkgewoJCQkJCWNvbnRpbnV
lOwoJCQkJfQoJCQl9CgoJCQkvLyB1dGY4IGNhbiBiZSBoYW5kbGVkIGJ5IHJlZ2V4LCB3aGljaCBpcyBhIG
J1bmNoIGZhc3RlciB0aGFuIGEgREIgbG9va3VwLgoJCQlpZiAoICggJ3V0ZjgnID09PSAkY2hhcnNldCB8f
CAndXRmOG1iMycgPT09ICRjaGFyc2V0IHx8ICd1dGY4bWI0JyA9PT0gJGNoYXJzZXQgKSAmJiBmdW5jdGlv
bl9leGlzdHMoICdtYl9zdHJsZW4nICkgKSB7CgkJCQkkcmVnZXggPSAnLwoJCQkJCSgKCQkJCQkJKD86IFt
ceDAwLVx4N0ZdICAgICAgICAgICAgICAgICAgIyBzaW5nbGUtYnl0ZSBzZXF1ZW5jZXMgICAweHh4eHh4eA
oJCQkJCQl8ICAgW1x4QzItXHhERl1bXHg4MC1ceEJGXSAgICAgICAjIGRvdWJsZS1ieXRlIHNlcXVlbmNlc
yAgIDExMHh4eHh4IDEweHh4eHh4CgkJCQkJCXwgICBceEUwW1x4QTAtXHhCRl1bXHg4MC1ceEJGXSAgICMg
dHJpcGxlLWJ5dGUgc2VxdWVuY2VzICAgMTExMHh4eHggMTB4eHh4eHggKiAyCgkJCQkJCXwgICBbXHhFMS1
ceEVDXVtceDgwLVx4QkZdezJ9CgkJCQkJCXwgICBceEVEW1x4ODAtXHg5Rl1bXHg4MC1ceEJGXQoJCQkJCQ
l8ICAgW1x4RUUtXHhFRl1bXHg4MC1ceEJGXXsyfSc7CgoJCQkJaWYgKCAndXRmOG1iNCcgPT09ICRjaGFyc
2V0ICkgewoJCQkJCSRyZWdleCAuPSAnCgkJCQkJCXwgICAgXHhGMFtceDkwLVx4QkZdW1x4ODAtXHhCRl17
Mn0gIyBmb3VyLWJ5dGUgc2VxdWVuY2VzICAgMTExMTB4eHggMTB4eHh4eHggKiAzCgkJCQkJCXwgICAgW1x
4RjEtXHhGM11bXHg4MC1ceEJGXXszfQoJCQkJCQl8ICAgIFx4RjRbXHg4MC1ceDhGXVtceDgwLVx4QkZdez
J9CgkJCQkJJzsKCQkJCX0KCgkJCQkkcmVnZXggLj0gJyl7MSw0MH0gICAgICAgICAgICAgICAgICAgICAgI
CAgICMgLi4ub25lIG9yIG1vcmUgdGltZXMKCQkJCQkpCgkJCQkJfCAuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMgYW55dGhpbmcgZWxzZQoJCQkJCS94JzsKCQkJCSR2YWx1ZVsndmFsdWUnXSA9IHB
yZWdfcmVwbGFjZSggJHJlZ2V4LCAnJDEnLCAkdmFsdWVbJ3ZhbHVlJ10gKTsKCgoJCQkJaWYgKCBmYWxzZS
AhPT0gJGxlbmd0aCAmJiBtYl9zdHJsZW4oICR2YWx1ZVsndmFsdWUnXSwgJ1VURi04JyApID4gJGxlbmd0a
CApIHsKCQkJCQkkdmFsdWVbJ3ZhbHVlJ10gPSBtYl9zdWJzdHIoICR2YWx1ZVsndmFsdWUnXSwgMCwgJGxl
bmd0aCwgJ1VURi04JyApOwoJCQkJfQoJCQkJY29udGludWU7CgkJCX0KCgkJCS8vIFdlIGNvdWxkbid0IHV
zZSBhbnkgbG9jYWwgY29udmVyc2lvbnMsIHNlbmQgaXQgdG8gdGhlIERCLgoJCQkkdmFsdWVbJ2RiJ10gPS
AkZGJfY2hlY2tfc3RyaW5nID0gdHJ1ZTsKCQl9CgkJdW5zZXQoICR2YWx1ZSApOyAvLyBSZW1vdmUgYnkgc
mVmZXJlbmNlLgoKCQlpZiAoICRkYl9jaGVja19zdHJpbmcgKSB7CgkJCSRxdWVyaWVzID0gYXJyYXkoKTsK
CQkJZm9yZWFjaCAoICRkYXRhIGFzICRjb2wgPT4gJHZhbHVlICkgewoJCQkJaWYgKCAhIGVtcHR5KCAkdmF
sdWVbJ2RiJ10gKSApIHsKCQkJCQkvLyBXZSdyZSBnb2luZyB0byBuZWVkIHRvIHRydW5jYXRlIGJ5IGNoYX
JhY3RlcnMgb3IgYnl0ZXMsIGRlcGVuZGluZyBvbiB0aGUgbGVuZ3RoIHZhbHVlIHdlIGhhdmUuCgkJCQkJa
WYgKCAnYnl0ZScgPT09ICR2YWx1ZVsnbGVuZ3RoJ11bJ3R5cGUnXSApIHsKCQkJCQkJLy8gVXNpbmcgYmlu
YXJ5IGNhdXNlcyBMRUZUKCkgdG8gdHJ1bmNhdGUgYnkgYnl0ZXMuCgkJCQkJCSRjaGFyc2V0ID0gJ2JpbmF
yeSc7CgkJCQkJfSBlbHNlIHsKCQkJCQkJJGNoYXJzZXQgPSAkdmFsdWVbJ2NoYXJzZXQnXTsKCQkJCQl9Cg
oJCQkJCWlmICggaXNfYXJyYXkoICR2YWx1ZVsnbGVuZ3RoJ10gKSApIHsKCQkJCQkJJHF1ZXJpZXNbICRjb
2wgXSA9ICR0aGlzLT5wcmVwYXJlKCAiQ09OVkVSVCggTEVGVCggQ09OVkVSVCggJXMgVVNJTkcgJGNoYXJz
ZXQgKSwgJS4wZiApIFVTSU5HIHskdGhpcy0+Y2hhcnNldH0gKSIsICR2YWx1ZVsndmFsdWUnXSwgJHZhbHV
lWydsZW5ndGgnXVsnbGVuZ3RoJ10gKTsKCQkJCQl9IGVsc2UgaWYgKCAnYmluYXJ5JyAhPT0gJGNoYXJzZX
QgKSB7CgkJCQkJCS8vIElmIHdlIGRvbid0IGhhdmUgYSBsZW5ndGgsIHRoZXJlJ3Mgbm8gbmVlZCB0byBjb
252ZXJ0IGJpbmFyeSAtIGl0IHdpbGwgYWx3YXlzIHJldHVybiB0aGUgc2FtZSByZXN1bHQuCgkJCQkJCSRx
dWVyaWVzWyAkY29sIF0gPSAkdGhpcy0+cHJlcGFyZSggIkNPTlZFUlQoIENPTlZFUlQoICVzIFVTSU5HICR
jaGFyc2V0ICkgVVNJTkcgeyR0aGlzLT5jaGFyc2V0fSApIiwgJHZhbHVlWyd2YWx1ZSddICk7CgkJCQkJfQ
oKCQkJCQl1bnNldCggJGRhdGFbICRjb2wgXVsnZGInXSApOwoJCQkJfQoJCQl9CgoJCQkkc3FsID0gYXJyY
XkoKTsKCQkJZm9yZWFjaCAoICRxdWVyaWVzIGFzICRjb2x1bW4gPT4gJHF1ZXJ5ICkgewoJCQkJaWYgKCAh
ICRxdWVyeSApIHsKCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQkkc3FsW10gPSAkcXVlcnkgLiAiIEFTIHh
fJGNvbHVtbiI7CgkJCX0KCgkJCSR0aGlzLT5jaGVja19jdXJyZW50X3F1ZXJ5ID0gZmFsc2U7CgkJCSRyb3
cgPSAkdGhpcy0+Z2V0X3JvdyggIlNFTEVDVCAiIC4gaW1wbG9kZSggJywgJywgJHNxbCApLCBBUlJBWV9BI
Ck7CgkJCWlmICggISAkcm93ICkgewoJCQkJcmV0dXJuIG5ldyBXUF9FcnJvciggJ3dwZGJfc3RyaXBfaW52
YWxpZF90ZXh0X2ZhaWx1cmUnICk7CgkJCX0KCgkJCWZvcmVhY2ggKCBhcnJheV9rZXlzKCAkZGF0YSApIGF
zICRjb2x1bW4gKSB7CgkJCQlpZiAoIGlzc2V0KCAkcm93WyJ4XyRjb2x1bW4iXSApICkgewoJCQkJCSRkYX
RhWyAkY29sdW1uIF1bJ3ZhbHVlJ10gPSAkcm93WyJ4XyRjb2x1bW4iXTsKCQkJCX0KCQkJfQoJCX0KCgkJc
mV0dXJuICRkYXRhOwoJfQoKCS8qKgoJICogU3RyaXBzIGFueSBpbnZhbGlkIGNoYXJhY3RlcnMgZnJvbSB0
aGUgcXVlcnkuCgkgKgoJICogQHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHByb3RlY3RlZAoJICoKCSAqIEB
wYXJhbSBzdHJpbmcgJHF1ZXJ5IFF1ZXJ5IHRvIGNvbnZlcnQuCgkgKiBAcmV0dXJuIHN0cmluZ3xXUF9Fcn
JvciBUaGUgY29udmVydGVkIHF1ZXJ5LCBvciBhIFdQX0Vycm9yIG9iamVjdCBpZiB0aGUgY29udmVyc2lvb
iBmYWlscy4KCSAqLwoJcHJvdGVjdGVkIGZ1bmN0aW9uIHN0cmlwX2ludmFsaWRfdGV4dF9mcm9tX3F1ZXJ5
KCAkcXVlcnkgKSB7CgkJLy8gV2UgZG9uJ3QgbmVlZCB0byBjaGVjayB0aGUgY29sbGF0aW9uIGZvciBxdWV
yaWVzIHRoYXQgZG9uJ3QgcmVhZCBkYXRhLgoJCSR0cmltbWVkX3F1ZXJ5ID0gbHRyaW0oICRxdWVyeSwgIl
xyXG5cdCAoIiApOwoJCWlmICggcHJlZ19tYXRjaCggJy9eKD86U0hPV3xERVNDUklCRXxERVNDfEVYUExBS
U58Q1JFQVRFKVxzL2knLCAkdHJpbW1lZF9xdWVyeSApICkgewoJCQlyZXR1cm4gJHF1ZXJ5OwoJCX0KCgkJ
JHRhYmxlID0gJHRoaXMtPmdldF90YWJsZV9mcm9tX3F1ZXJ5KCAkcXVlcnkgKTsKCQlpZiAoICR0YWJsZSA
pIHsKCQkJJGNoYXJzZXQgPSAkdGhpcy0+Z2V0X3RhYmxlX2NoYXJzZXQoICR0YWJsZSApOwoJCQlpZiAoIG
lzX3dwX2Vycm9yKCAkY2hhcnNldCApICkgewoJCQkJcmV0dXJuICRjaGFyc2V0OwoJCQl9CgoJCQkvLyBXZ
SBjYW4ndCByZWxpYWJseSBzdHJpcCB0ZXh0IGZyb20gdGFibGVzIGNvbnRhaW5pbmcgYmluYXJ5L2Jsb2Ig
Y29sdW1ucwoJCQlpZiAoICdiaW5hcnknID09PSAkY2hhcnNldCApIHsKCQkJCXJldHVybiAkcXVlcnk7Cgk
JCX0KCQl9IGVsc2UgewoJCQkkY2hhcnNldCA9ICR0aGlzLT5jaGFyc2V0OwoJCX0KCgkJJGRhdGEgPSBhcn
JheSgKCQkJJ3ZhbHVlJyAgID0+ICRxdWVyeSwKC
QkJJ2NoYXJzZXQnID0+ICRjaGFyc2V0LAoJCQknYXNjaWknICAgPT4gZmFsc2UsCgkJCSdsZW5ndGgnICA9
PiBmYWxzZSwKCQkpOwoKCQkkZGF0YSA9ICR0aGlzLT5zdHJpcF9pbnZhbGlkX3RleHQoIGFycmF5KCAkZGF
0YSApICk7CgkJaWYgKCBpc193cF9lcnJvciggJGRhdGEgKSApIHsKCQkJcmV0dXJuICRkYXRhOwoJCX0KCg
kJcmV0dXJuICRkYXRhWzBdWyd2YWx1ZSddOwoJfQoKCS8qKgoJICogU3RyaXBzIGFueSBpbnZhbGlkIGNoY
XJhY3RlcnMgZnJvbSB0aGUgc3RyaW5nIGZvciBhIGdpdmVuIHRhYmxlIGFuZCBjb2x1bW4uCgkgKgoJICog
QHNpbmNlIDQuMi4wCgkgKiBAYWNjZXNzIHB1YmxpYwoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHRhYmxlICB
UYWJsZSBuYW1lLgoJICogQHBhcmFtIHN0cmluZyAkY29sdW1uIENvbHVtbiBuYW1lLgoJICogQHBhcmFtIH
N0cmluZyAkdmFsdWUgIFRoZSB0ZXh0IHRvIGNoZWNrLgoJICogQHJldHVybiBzdHJpbmd8V1BfRXJyb3IgV
GhlIGNvbnZlcnRlZCBzdHJpbmcsIG9yIGEgV1BfRXJyb3Igb2JqZWN0IGlmIHRoZSBjb252ZXJzaW9uIGZh
aWxzLgoJICovCglwdWJsaWMgZnVuY3Rpb24gc3RyaXBfaW52YWxpZF90ZXh0X2Zvcl9jb2x1bW4oICR0YWJ
sZSwgJGNvbHVtbiwgJHZhbHVlICkgewoJCWlmICggISBpc19zdHJpbmcoICR2YWx1ZSApICkgewoJCQlyZX
R1cm4gJHZhbHVlOwoJCX0KCgkJJGNoYXJzZXQgPSAkdGhpcy0+Z2V0X2NvbF9jaGFyc2V0KCAkdGFibGUsI
CRjb2x1bW4gKTsKCQlpZiAoICEgJGNoYXJzZXQgKSB7CgkJCS8vIE5vdCBhIHN0cmluZyBjb2x1bW4uCgkJ
CXJldHVybiAkdmFsdWU7CgkJfSBlbHNlaWYgKCBpc193cF9lcnJvciggJGNoYXJzZXQgKSApIHsKCQkJLy8
gQmFpbCBvbiByZWFsIGVycm9ycy4KCQkJcmV0dXJuICRjaGFyc2V0OwoJCX0KCgkJJGRhdGEgPSBhcnJheS
gKCQkJJGNvbHVtbiA9PiBhcnJheSgKCQkJCSd2YWx1ZScgICA9PiAkdmFsdWUsCgkJCQknY2hhcnNldCcgP
T4gJGNoYXJzZXQsCgkJCQknbGVuZ3RoJyAgPT4gJHRoaXMtPmdldF9jb2xfbGVuZ3RoKCAkdGFibGUsICRj
b2x1bW4gKSwKCQkJKQoJCSk7CgoJCSRkYXRhID0gJHRoaXMtPnN0cmlwX2ludmFsaWRfdGV4dCggJGRhdGE
gKTsKCQlpZiAoIGlzX3dwX2Vycm9yKCAkZGF0YSApICkgewoJCQlyZXR1cm4gJGRhdGE7CgkJfQoKCQlyZX
R1cm4gJGRhdGFbICRjb2x1bW4gXVsndmFsdWUnXTsKCX0KCgkvKioKCSAqIEZpbmQgdGhlIGZpcnN0IHRhY
mxlIG5hbWUgcmVmZXJlbmNlZCBpbiBhIHF1ZXJ5LgoJICoKCSAqIEBzaW5jZSA0LjIuMAoJICogQGFjY2Vz
cyBwcm90ZWN0ZWQKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRxdWVyeSBUaGUgcXVlcnkgdG8gc2VhcmNoLgo
JICogQHJldHVybiBzdHJpbmd8ZmFsc2UgJHRhYmxlIFRoZSB0YWJsZSBuYW1lIGZvdW5kLCBvciBmYWxzZS
BpZiBhIHRhYmxlIGNvdWxkbid0IGJlIGZvdW5kLgoJICovCglwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X3RhY
mxlX2Zyb21fcXVlcnkoICRxdWVyeSApIHsKCQkvLyBSZW1vdmUgY2hhcmFjdGVycyB0aGF0IGNhbiBsZWdh
bGx5IHRyYWlsIHRoZSB0YWJsZSBuYW1lLgoJCSRxdWVyeSA9IHJ0cmltKCAkcXVlcnksICc7Ly0jJyApOwo
KCQkvLyBBbGxvdyAoc2VsZWN0Li4uKSB1bmlvbiBbLi4uXSBzdHlsZSBxdWVyaWVzLiBVc2UgdGhlIGZpcn
N0IHF1ZXJ5J3MgdGFibGUgbmFtZS4KCQkkcXVlcnkgPSBsdHJpbSggJHF1ZXJ5LCAiXHJcblx0ICgiICk7C
goJCS8vIFN0cmlwIGV2ZXJ5dGhpbmcgYmV0d2VlbiBwYXJlbnRoZXNlcyBleGNlcHQgbmVzdGVkIHNlbGVj
dHMuCgkJJHF1ZXJ5ID0gcHJlZ19yZXBsYWNlKCAnL1woKD8hXHMqc2VsZWN0KVteKF0qP1wpL2lzJywgJyg
pJywgJHF1ZXJ5ICk7CgoJCS8vIFF1aWNrbHkgbWF0Y2ggbW9zdCBjb21tb24gcXVlcmllcy4KCQlpZiAoIH
ByZWdfbWF0Y2goICcvXlxzKig/OicKCQkJCS4gJ1NFTEVDVC4qP1xzK0ZST00nCgkJCQkuICd8SU5TRVJUK
D86XHMrTE9XX1BSSU9SSVRZfFxzK0RFTEFZRUR8XHMrSElHSF9QUklPUklUWSk/KD86XHMrSUdOT1JFKT8o
PzpccytJTlRPKT8nCgkJCQkuICd8UkVQTEFDRSg/OlxzK0xPV19QUklPUklUWXxccytERUxBWUVEKT8oPzp
ccytJTlRPKT8nCgkJCQkuICd8VVBEQVRFKD86XHMrTE9XX1BSSU9SSVRZKT8oPzpccytJR05PUkUpPycKCQ
kJCS4gJ3xERUxFVEUoPzpccytMT1dfUFJJT1JJVFl8XHMrUVVJQ0t8XHMrSUdOT1JFKSooPzpccytGUk9NK
T8nCgkJCQkuICcpXHMrKCg/OlswLTlhLXpBLVokXy5gLV18W1x4QzItXHhERl1bXHg4MC1ceEJGXSkrKS9p
cycsICRxdWVyeSwgJG1heWJlICkgKSB7CgkJCXJldHVybiBzdHJfcmVwbGFjZSggJ2AnLCAnJywgJG1heWJ
lWzFdICk7CgkJfQoKCQkvLyBTSE9XIFRBQkxFIFNUQVRVUyBhbmQgU0hPVyBUQUJMRVMKCQlpZiAoIHByZW
dfbWF0Y2goICcvXlxzKig/OicKCQkJCS4gJ1NIT1dccytUQUJMRVxzK1NUQVRVUy4rKD86TElLRVxzK3xXS
EVSRVxzK05hbWVccyo9XHMqKScKCQkJCS4gJ3xTSE9XXHMrKD86RlVMTFxzKyk/VEFCTEVTLisoPzpMSUtF
XHMrfFdIRVJFXHMrTmFtZVxzKj1ccyopJwoJCQkJLiAnKVxXKCg/OlswLTlhLXpBLVokXy5gLV18W1x4QzI
tXHhERl1bXHg4MC1ceEJGXSkrKVxXL2lzJywgJHF1ZXJ5LCAkbWF5YmUgKSApIHsKCQkJcmV0dXJuIHN0cl
9yZXBsYWNlKCAnYCcsICcnLCAkbWF5YmVbMV0gKTsKCQl9CgoJCS8vIEJpZyBwYXR0ZXJuIGZvciB0aGUgc
mVzdCBvZiB0aGUgdGFibGUtcmVsYXRlZCBxdWVyaWVzLgoJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqKD86
JwoJCQkJLiAnKD86RVhQTEFJTlxzKyg/OkVYVEVOREVEXHMrKT8pP1NFTEVDVC4qP1xzK0ZST00nCgkJCQk
uICd8REVTQ1JJQkV8REVTQ3xFWFBMQUlOfEhBTkRMRVInCgkJCQkuICd8KD86TE9DS3xVTkxPQ0spXHMrVE
FCTEUoPzpTKT8nCgkJCQkuICd8KD86UkVOQU1FfE9QVElNSVpFfEJBQ0tVUHxSRVNUT1JFfENIRUNLfENIR
UNLU1VNfEFOQUxZWkV8UkVQQUlSKS4qXHMrVEFCTEUnCgkJCQkuICd8VFJVTkNBVEUoPzpccytUQUJMRSk/
JwoJCQkJLiAnfENSRUFURSg/OlxzK1RFTVBPUkFSWSk/XHMrVEFCTEUoPzpccytJRlxzK05PVFxzK0VYSVN
UUyk/JwoJCQkJLiAnfEFMVEVSKD86XHMrSUdOT1JFKT9ccytUQUJMRScKCQkJCS4gJ3xEUk9QXHMrVEFCTE
UoPzpccytJRlxzK0VYSVNUUyk/JwoJCQkJLiAnfENSRUFURSg/OlxzK1x3Kyk/XHMrSU5ERVguKlxzK09OJ
woJCQkJLiAnfERST1BccytJTkRFWC4qXHMrT04nCgkJCQkuICd8TE9BRFxzK0RBVEEuKklORklMRS4qSU5U
T1xzK1RBQkxFJwoJCQkJLiAnfCg/OkdSQU5UfFJFVk9LRSkuKk9OXHMrVEFCTEUnCgkJCQkuICd8U0hPV1x
zKyg/Oi4qRlJPTXwuKlRBQkxFKScKCQkJCS4gJylccytcKCpccyooKD86WzAtOWEtekEtWiRfLmAtXXxbXH
hDMi1ceERGXVtceDgwLVx4QkZdKSspXHMqXCkqL2lzJywgJHF1ZXJ5LCAkbWF5YmUgKSApIHsKCQkJcmV0d
XJuIHN0cl9yZXBsYWNlKCAnYCcsICcnLCAkbWF5YmVbMV0gKTsKCQl9CgoJCXJldHVybiBmYWxzZTsKCX0K
CgkvKioKCSAqIExvYWQgdGhlIGNvbHVtbiBtZXRhZGF0YSBmcm9tIHRoZSBsYXN0IHF1ZXJ5LgoJICoKCSA
qIEBzaW5jZSAzLjUuMAoJICoKCSAqIEBhY2Nlc3MgcHJvdGVjdGVkCgkgKi8KCXByb3RlY3RlZCBmdW5jdG
lvbiBsb2FkX2NvbF9pbmZvKCkgewoJCWlmICggJHRoaXMtPmNvbF9pbmZvICkKCQkJcmV0dXJuOwoKCQlpZ
iAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkkbnVtX2ZpZWxkcyA9IEBteXNxbGlfbnVtX2ZpZWxkcygg
JHRoaXMtPnJlc3VsdCApOwoJCQlmb3IgKCAkaSA9IDA7ICRpIDwgJG51bV9maWVsZHM7ICRpKysgKSB7Cgk
JCQkkdGhpcy0+Y29sX2luZm9bICRpIF0gPSBAbXlzcWxpX2ZldGNoX2ZpZWxkKCAkdGhpcy0+cmVzdWx0IC
k7CgkJCX0KCQl9IGVsc2UgewoJCQkkbnVtX2ZpZWxkcyA9IEBteXNxbF9udW1fZmllbGRzKCAkdGhpcy0+c
mVzdWx0ICk7CgkJCWZvciAoICRpID0gMDsgJGkgPCAkbnVtX2ZpZWxkczsgJGkrKyApIHsKCQkJCSR0aGlz
LT5jb2xfaW5mb1sgJGkgXSA9IEBteXNxbF9mZXRjaF9maWVsZCggJHRoaXMtPnJlc3VsdCwgJGkgKTsKCQk
JfQoJCX0KCX0KCgkvKioKCSAqIFJldHJpZXZlIGNvbHVtbiBtZXRhZGF0YSBmcm9tIHRoZSBsYXN0IHF1ZX
J5LgoJICoKCSAqIEBzaW5jZSAwLjcxCgkgKgoJICogQHBhcmFtIHN0cmluZyAkaW5mb190eXBlICBPcHRpb
25hbC4gVHlwZSBvbmUgb2YgbmFtZSwgdGFibGUsIGRlZiwgbWF4X2xlbmd0aCwgbm90X251bGwsIHByaW1h
cnlfa2V5LCBtdWx0aXBsZV9rZXksIHVuaXF1ZV9rZXksIG51bWVyaWMsIGJsb2IsIHR5cGUsIHVuc2lnbmV
kLCB6ZXJvZmlsbAoJICogQHBhcmFtIGludCAgICAkY29sX29mZnNldCBPcHRpb25hbC4gMDogY29sIG5hbW
UuIDE6IHdoaWNoIHRhYmxlIHRoZSBjb2wncyBpbi4gMjogY29sJ3MgbWF4IGxlbmd0aC4gMzogaWYgdGhlI
GNvbCBpcyBudW1lcmljLiA0OiBjb2wncyB0eXBlCgkgKiBAcmV0dXJuIG1peGVkIENvbHVtbiBSZXN1bHRz
CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfY29sX2luZm8oICRpbmZvX3R5cGUgPSAnbmFtZScsICRjb2x
fb2Zmc2V0ID0gLTEgKSB7CgkJJHRoaXMtPmxvYWRfY29sX2luZm8oKTsKCgkJaWYgKCAkdGhpcy0+Y29sX2
luZm8gKSB7CgkJCWlmICggJGNvbF9vZmZzZXQgPT0gLTEgKSB7CgkJCQkkaSA9IDA7CgkJCQkkbmV3X2Fyc
mF5ID0gYXJyYXkoKTsKCQkJCWZvcmVhY2ggKCAoYXJyYXkpICR0aGlzLT5jb2xfaW5mbyBhcyAkY29sICkg
ewoJCQkJCSRuZXdfYXJyYXlbJGldID0gJGNvbC0+eyRpbmZvX3R5cGV9OwoJCQkJCSRpKys7CgkJCQl9Cgk
JCQlyZXR1cm4gJG5ld19hcnJheTsKCQkJfSBlbHNlIHsKCQkJCXJldHVybiAkdGhpcy0+Y29sX2luZm9bJG
NvbF9vZmZzZXRdLT57JGluZm9fdHlwZX07CgkJCX0KCQl9Cgl9CgoJLyoqCgkgKiBTdGFydHMgdGhlIHRpb
WVyLCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgoJICoKCSAqIEBzaW5jZSAxLjUuMAoJICoKCSAqIEByZXR1
cm4gdHJ1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gdGltZXJfc3RhcnQoKSB7CgkJJHRoaXMtPnRpbWVfc3R
hcnQgPSBtaWNyb3RpbWUoIHRydWUgKTsKCQlyZXR1cm4gdHJ1ZTsKCX0KCgkvKioKCSAqIFN0b3BzIHRoZS
BkZWJ1Z2dpbmcgdGltZXIuCgkgKgoJICogQHNpbmNlIDEuNS4wCgkgKgoJICogQHJldHVybiBmbG9hdCBUb
3RhbCB0aW1lIHNwZW50IG9uIHRoZSBxdWVyeSwgaW4gc2Vjb25kcwoJICovCglwdWJsaWMgZnVuY3Rpb24g
dGltZXJfc3RvcCgpIHsKCQlyZXR1cm4gKCBtaWNyb3RpbWUoIHRydWUgKSAtICR0aGlzLT50aW1lX3N0YXJ
0ICk7Cgl9CgoJLyoqCgkgKiBXcmFwcyBlcnJvcnMgaW4gYSBuaWNlIGhlYWRlciBhbmQgZm9vdGVyIGFuZC
BkaWVzLgoJICoKCSAqIFdpbGwgbm90IGRpZSBpZiB3cGRiOjokc2hvd19lcnJvcnMgaXMgZmFsc2UuCgkgK
goJICogQHNpbmNlIDEuNS4wCgkgKgoJICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZSAgICBUaGUgRXJyb3Ig
bWVzc2FnZQoJICogQHBhcmFtIHN0cmluZyAkZXJyb3JfY29kZSBPcHRpb25hbC4gQSBDb21wdXRlciByZWF
kYWJsZSBzdHJpbmcgdG8gaWRlbnRpZnkgdGhlIGVycm9yLgoJICogQHJldHVybiBmYWxzZXx2b2lkCgkgKi
8KCXB1YmxpYyBmdW5jdGlvbiBiYWlsKCAkbWVzc2FnZSwgJGVycm9yX2NvZGUgPSAnNTAwJyApIHsKCQlpZ
iAoICEkdGhpcy0+c2hvd19lcnJvcnMgKSB7CgkJCWlmICggY2xhc3NfZXhpc3RzKCAnV1BfRXJyb3InLCBm
YWxzZSApICkgewoJCQkJJHRoaXMtPmVycm9yID0gbmV3IFdQX0Vycm9yKCRlcnJvcl9jb2RlLCAkbWVzc2F
nZSk7CgkJCX0gZWxzZSB7CgkJCQkkdGhpcy0+ZXJyb3IgPSAkbWVzc2FnZTsKCQkJfQoJCQlyZXR1cm4gZm
Fsc2U7CgkJfQoJCXdwX2RpZSgkbWVzc2FnZSk7Cgl9CgoJLyoqCgkgKiBXaGV0aGVyIE15U1FMIGRhdGFiY
XNlIGlzIGF0IGxlYXN0IHRoZSByZXF1aXJlZCBtaW5pbXVtIHZlcnNpb24uCgkgKgoJICogQHNpbmNlIDIu
NS4wCgkgKgoJICogQGdsb2JhbCBzdHJpbmcgJHdwX3ZlcnNpb24KCSAqIEBnbG9iYWwgc3RyaW5nICRyZXF
1aXJlZF9teXNxbF92ZXJzaW9uCgkgKgoJICogQHJldHVybiBXUF9FcnJvcnx2b2lkCgkgKi8KCXB1YmxpYy
BmdW5jdGlvbiBjaGVja19kYXRhYmFzZV92ZXJzaW9uKCkgewoJCWdsb2JhbCAkd3BfdmVyc2lvbiwgJHJlc
XVpcmVkX215c3FsX3ZlcnNpb247CgkJLy8gTWFrZSBzdXJlIHRoZSBzZXJ2ZXIgaGFzIHRoZSByZXF1aXJl
ZCBNeVNRTCB2ZXJzaW9uCgkJaWYgKCB2ZXJzaW9uX2NvbXBhcmUoJHRoaXMtPmRiX3ZlcnNpb24oKSwgJHJ
lcXVpcmVkX215c3FsX3ZlcnNpb24sICc8JykgKQoJCQlyZXR1cm4gbmV3IFdQX0Vycm9yKCdkYXRhYmFzZV
92ZXJzaW9uJywgc3ByaW50ZiggX18oICc8c3Ryb25nPkVSUk9SPC9zdHJvbmc+OiBXb3JkUHJlc3MgJTEkc
yByZXF1aXJlcyBNeVNRTCAlMiRzIG9yIGhpZ2hlcicgKSwgJHdwX3ZlcnNpb24sICRyZXF1aXJlZF9teXNx
bF92ZXJzaW9uICkpOwoJfQoKCS8qKgoJICogV2hldGhlciB0aGUgZGF0YWJhc2Ugc3VwcG9ydHMgY29sbGF
0aW9uLgoJICoKCSAqIENhbGxlZCB3aGVuIFdvcmRQcmVzcyBpcyBnZW5lcmF0aW5nIHRoZSB0YWJsZSBzY2
hlbWUuCgkgKgoJICogVXNlIGB3cGRiOjpoYXNfY2FwKCAnY29sbGF0aW9uJyApYC4KCSAqCgkgKiBAc2luY
2UgMi41LjAKCSAqIEBkZXByZWNhdGVkIDMuNS4wIFVzZSB3cGRiOjpoYXNfY2FwKCkKCSAqCgkgKiBAcmV0
dXJuIGJvb2wgVHJ1ZSBpZiBjb2xsYXRpb24gaXMgc3VwcG9ydGVkLCBmYWxzZSBpZiB2ZXJzaW9uIGRvZXM
gbm90CgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzdXBwb3J0c19jb2xsYXRpb24oKSB7CgkJX2RlcHJlY2F0ZW
RfZnVuY3Rpb24oIF9fRlVOQ1RJT05fXywgJzMuNScsICd3cGRiOjpoYXNfY2FwKCBcJ2NvbGxhdGlvblwnI
CknICk7CgkJcmV0dXJuICR0aGlzLT5oYXNfY2FwKCAnY29sbGF0aW9uJyApOwoJfQoKCS8qKgoJICogVGhl
IGRhdGFiYXNlIGNoYXJhY3RlciBjb2xsYXRlLgoJICoKCSAqIEBzaW5jZSAzLjUuMAoJICoKCSAqIEByZXR
1cm4gc3RyaW5nIFRoZSBkYXRhYmFzZSBjaGFyYWN0ZXIgY29sbGF0ZS4KCSAqLwoJcHVibGljIGZ1bmN0aW
9uIGdldF9jaGFyc2V0X2NvbGxhdGUoKSB7CgkJJGNoYXJzZXRfY29sbGF0ZSA9ICcnOwoKCQlpZiAoICEgZ
W1wdHkoICR0aGlzLT5jaGFyc2V0ICkgKQoJCQkkY2hhcnNldF9jb2xsYXRlID0gIkRFRkFVTFQgQ0hBUkFD
VEVSIFNFVCAkdGhpcy0+Y2hhcnNldCI7CgkJaWYgKCAhIGVtcHR5KCAkdGhpcy0+Y29sbGF0ZSApICkKCQk
JJGNoYXJzZXRfY29sbGF0ZSAuPSAiIENPTExBVEUgJHRoaXMtPmNvbGxhdGUiOwoKCQlyZXR1cm4gJGNoYX
JzZXRfY29sbGF0ZTsKCX0KCgkvKioKCSAqIERldGVybWluZSBpZiBhIGRhdGFiYXNlIHN1cHBvcnRzIGEgc
GFydGljdWxhciBmZWF0dXJlLgoJICoKCSAqIEBz
aW5jZSAyLjcuMAoJICogQHNpbmNlIDQuMS4wIFN1cHBvcnQgd2FzIGFkZGVkIGZvciB0aGUgJ3V0ZjhtYjQ
nIGZlYXR1cmUuCgkgKgoJICogQHNlZSB3cGRiOjpkYl92ZXJzaW9uKCkKCSAqCgkgKiBAcGFyYW0gc3RyaW
5nICRkYl9jYXAgVGhlIGZlYXR1cmUgdG8gY2hlY2sgZm9yLiBBY2NlcHRzICdjb2xsYXRpb24nLAoJICogI
CAgICAgICAgICAgICAgICAgICAgICdncm91cF9jb25jYXQnLCAnc3VicXVlcmllcycsICdzZXRfY2hhcnNl
dCcsCgkgKiAgICAgICAgICAgICAgICAgICAgICAgb3IgJ3V0ZjhtYjQnLgoJICogQHJldHVybiBpbnR8ZmF
sc2UgV2hldGhlciB0aGUgZGF0YWJhc2UgZmVhdHVyZSBpcyBzdXBwb3J0ZWQsIGZhbHNlIG90aGVyd2lzZS
4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGhhc19jYXAoICRkYl9jYXAgKSB7CgkJJHZlcnNpb24gPSAkdGhpc
y0+ZGJfdmVyc2lvbigpOwoKCQlzd2l0Y2ggKCBzdHJ0b2xvd2VyKCAkZGJfY2FwICkgKSB7CgkJCWNhc2Ug
J2NvbGxhdGlvbicgOiAgICAvLyBAc2luY2UgMi41LjAKCQkJY2FzZSAnZ3JvdXBfY29uY2F0JyA6IC8vIEB
zaW5jZSAyLjcuMAoJCQljYXNlICdzdWJxdWVyaWVzJyA6ICAgLy8gQHNpbmNlIDIuNy4wCgkJCQlyZXR1cm
4gdmVyc2lvbl9jb21wYXJlKCAkdmVyc2lvbiwgJzQuMScsICc+PScgKTsKCQkJY2FzZSAnc2V0X2NoYXJzZ
XQnIDoKCQkJCXJldHVybiB2ZXJzaW9uX2NvbXBhcmUoICR2ZXJzaW9uLCAnNS4wLjcnLCAnPj0nICk7CgkJ
CWNhc2UgJ3V0ZjhtYjQnIDogICAgICAvLyBAc2luY2UgNC4xLjAKCQkJCWlmICggdmVyc2lvbl9jb21wYXJ
lKCAkdmVyc2lvbiwgJzUuNS4zJywgJzwnICkgKSB7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQkJaW
YgKCAkdGhpcy0+dXNlX215c3FsaSApIHsKCQkJCQkkY2xpZW50X3ZlcnNpb24gPSBteXNxbGlfZ2V0X2Nsa
WVudF9pbmZvKCk7CgkJCQl9IGVsc2UgewoJCQkJCSRjbGllbnRfdmVyc2lvbiA9IG15c3FsX2dldF9jbGll
bnRfaW5mbygpOwoJCQkJfQoKCQkJCS8qCgkJCQkgKiBsaWJteXNxbCBoYXMgc3VwcG9ydGVkIHV0ZjhtYjQ
gc2luY2UgNS41LjMsIHNhbWUgYXMgdGhlIE15U1FMIHNlcnZlci4KCQkJCSAqIG15c3FsbmQgaGFzIHN1cH
BvcnRlZCB1dGY4bWI0IHNpbmNlIDUuMC45LgoJCQkJICovCgkJCQlpZiAoIGZhbHNlICE9PSBzdHJwb3MoI
CRjbGllbnRfdmVyc2lvbiwgJ215c3FsbmQnICkgKSB7CgkJCQkJJGNsaWVudF92ZXJzaW9uID0gcHJlZ19y
ZXBsYWNlKCAnL15cRCsoW1xkLl0rKS4qLycsICckMScsICRjbGllbnRfdmVyc2lvbiApOwoJCQkJCXJldHV
ybiB2ZXJzaW9uX2NvbXBhcmUoICRjbGllbnRfdmVyc2lvbiwgJzUuMC45JywgJz49JyApOwoJCQkJfSBlbH
NlIHsKCQkJCQlyZXR1cm4gdmVyc2lvbl9jb21wYXJlKCAkY2xpZW50X3ZlcnNpb24sICc1LjUuMycsICc+P
ScgKTsKCQkJCX0KCQl9CgoJCXJldHVybiBmYWxzZTsKCX0KCgkvKioKCSAqIFJldHJpZXZlIHRoZSBuYW1l
IG9mIHRoZSBmdW5jdGlvbiB0aGF0IGNhbGxlZCB3cGRiLgoJICoKCSAqIFNlYXJjaGVzIHVwIHRoZSBsaXN
0IG9mIGZ1bmN0aW9ucyB1bnRpbCBpdCByZWFjaGVzCgkgKiB0aGUgb25lIHRoYXQgd291bGQgbW9zdCBsb2
dpY2FsbHkgaGFkIGNhbGxlZCB0aGlzIG1ldGhvZC4KCSAqCgkgKiBAc2luY2UgMi41LjAKCSAqCgkgKiBAc
mV0dXJuIHN0cmluZ3xhcnJheSBUaGUgbmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbgoJICovCglwdWJs
aWMgZnVuY3Rpb24gZ2V0X2NhbGxlcigpIHsKCQlyZXR1cm4gd3BfZGVidWdfYmFja3RyYWNlX3N1bW1hcnk
oIF9fQ0xBU1NfXyApOwoJfQoKCS8qKgoJICogVGhlIGRhdGFiYXNlIHZlcnNpb24gbnVtYmVyLgoJICoKCS
AqIEBzaW5jZSAyLjcuMAoJICoKCSAqIEByZXR1cm4gbnVsbHxzdHJpbmcgTnVsbCBvbiBmYWlsdXJlLCB2Z
XJzaW9uIG51bWJlciBvbiBzdWNjZXNzLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZGJfdmVyc2lvbigpIHsK
CQlpZiAoICR0aGlzLT51c2VfbXlzcWxpICkgewoJCQkkc2VydmVyX2luZm8gPSBteXNxbGlfZ2V0X3NlcnZ
lcl9pbmZvKCAkdGhpcy0+ZGJoICk7CgkJfSBlbHNlIHsKCQkJJHNlcnZlcl9pbmZvID0gbXlzcWxfZ2V0X3
NlcnZlcl9pbmZvKCAkdGhpcy0+ZGJoICk7CgkJfQoJCXJldHVybiBwcmVnX3JlcGxhY2UoICcvW14wLTkuX
S4qLycsICcnLCAkc2VydmVyX2luZm8gKTsKCX0KfQo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/classes/wp-
db_OLD.php,importbuddy/classes/wp-db_OLD.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax.php,importbuddy/c
ontrollers/ajax.php
PD9waHAKY2xhc3MgcGJfYmFja3VwYnVkZHlfYWpheCBleHRlbmRzIHBiX2JhY2t1cGJ1ZGR5X2FqYXhjb3J
lIHsKfQ==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax.php,importbuddy/con
trollers/ajax.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/index.php,importbuddy/
controllers/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/index.php,importbuddy/co
ntrollers/index.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/css/index.php,importbuddy/css/inde
x.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/css/index.php,importbuddy/css/index.
php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/css/nprogress.css,importbuddy/css/
nprogress.css
LyogTWFrZSBjbGlja3MgcGFzcy10aHJvdWdoICovCiNucHJvZ3Jlc3MgewogIHBvaW50ZXItZXZlbnRzOiB
ub25lOwp9CgojbnByb2dyZXNzIC5iYXIgewogIGJhY2tncm91bmQ6ICMyOWQ7CgogIHBvc2l0aW9uOiBmaX
hlZDsKICB6LWluZGV4OiA3NTsKICB0b3A6IDQ4cHg7CiAgbGVmdDogMDsKCiAgd2lkdGg6IDEwMCU7CiAga
GVpZ2h0OiA0cHg7Cn0KCi8qIEZhbmN5IGJsdXIgZWZmZWN0ICovCiNucHJvZ3Jlc3MgLnBlZyB7Cgp9Cgov
KiBSZW1vdmUgdGhlc2UgdG8gZ2V0IHJpZCBvZiB0aGUgc3Bpbm5lciAqLwojbnByb2dyZXNzIC5zcGlubmV
yIHsKICBkaXNwbGF5OiBibG9jazsKICBwb3NpdGlvbjogZml4ZWQ7CiAgei1pbmRleDogMTAzMTsKICB0b3
A6IDY1cHg7CiAgcmlnaHQ6IDE1cHg7Cn0KCiNucHJvZ3Jlc3MgLnNwaW5uZXItaWNvbiB7CiAgd2lkdGg6I
DQwcHg7CiAgaGVpZ2h0OiA0MHB4OwogIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CgogIGJvcmRlcjogc29s
aWQgNHB4IHRyYW5zcGFyZW50OwogIGJvcmRlci10b3AtY29sb3I6ICMyOWQ7CiAgYm9yZGVyLWxlZnQtY29
sb3I6ICMyOWQ7CiAgYm9yZGVyLXJhZGl1czogNTAlOwoKICAtd2Via2l0LWFuaW1hdGlvbjogbnByb2dyZX
NzLXNwaW5uZXIgNDAwbXMgbGluZWFyIGluZmluaXRlOwogICAgICAgICAgYW5pbWF0aW9uOiBucHJvZ3Jlc
3Mtc3Bpbm5lciA0MDBtcyBsaW5lYXIgaW5maW5pdGU7Cn0KCkAtd2Via2l0LWtleWZyYW1lcyBucHJvZ3Jl
c3Mtc3Bpbm5lciB7CiAgMCUgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAxMDA
lIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9Cn0KCkBrZXlmcmFtZXMgbnByb2dyZX
NzLXNwaW5uZXIgewogIDAlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQogIDEwMCUgeyB0cmFuc
2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9Cn0K
###PACKDATA,FILE_END,/_importbuddy/importbuddy/css/nprogress.css,importbuddy/css/np
rogress.css
###PACKDATA,FILE_START,/_importbuddy/importbuddy/css/style.css,importbuddy/css/styl
e.css
QGltcG9ydCB1cmwoaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3M/ZmFtaWx5PU9wZW4rU2Fuczo
0MDBpdGFsaWMsNDAwLDcwMCk7CgoKLyoqKioqKioqKioqKioqKioqKioqKiAKCUJhc2ljcwoqKioqKioqKi
oqKioqKioqKioqKiovCgphIHsKCWNvbG9yOiAjMDA4NGNiOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9C
mE6aG92ZXIgewoJY29sb3I6ICM0NDQ7Cgl0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsKfQoKLndpZGVm
YXQgewoJLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CgktbW96LWJvcmRlci1yYWRpdXM6IDNweDsKCWJ
vcmRlci1yYWRpdXM6IDNweDsKCWJvcmRlci1zcGFjaW5nOiAwOwoJYm9yZGVyLXN0eWxlOiBzb2xpZDsKCW
JvcmRlci13aWR0aDogMXB4OwoJY2xlYXI6IGJvdGg7CgltYXJnaW46IDA7Cgl3aWR0aDogMTAwJTsKCWJhY
2tncm91bmQtY29sb3I6ICNGRkZGRkY7Cglib3JkZXItY29sb3I6ICNERkRGREY7Cn0KLndpZGVmYXQgdGQs
IAoud2lkZWZhdCB0aCB7Cglmb250LWZhbWlseTogJ09wZW4gU2FucycgLHNhbnMtc2VyaWY7Cglib3JkZXI
tYm90dG9tLXN0eWxlOiBzb2xpZDsKCWJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKCWZvbnQtc2l6ZTogMT
FweDsKCWJvcmRlci1jb2xvcjogI0RGREZERjsKfQoud2lkZWZhdCB0aCB7CgliYWNrZ3JvdW5kOiAjREZER
kRGOwoJY29sb3I6ICMzMzMzMzM7Cglmb250LXNpemU6IDExcHg7Cgl0ZXh0LXNoYWRvdzogMCAxcHggMCBy
Z2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7CglsaW5lLWhlaWdodDogMS4zZW07CglwYWRkaW5nOiA3cHggN3B
4IDhweDsKCXRleHQtYWxpZ246IGxlZnQ7Cn0KLndpZGVmYXQgdGQgewoJcGFkZGluZzogM3B4IDdweDsKCX
ZlcnRpY2FsLWFsaWduOiB0b3A7Cn0KaDEgewoJY29sb3I6ICM0NjQ2NDY7Cglmb250LXNpemU6IDI0cHg7C
glmb250LWZhbWlseTogJ09wZW4gU2FucycgLHNhbnMtc2VyaWY7Cglmb250LXN0eWxlOiBpdGFsaWM7Cglt
YXJnaW4tdG9wOiAwcHg7Cn0KaDIgewoJY29sb3I6ICM0NjQ2NDY7Cglmb250LXNpemU6IDIwcHg7Cglmb25
0LWZhbWlseTogJ09wZW4gU2FucycgLHNhbnMtc2VyaWY7Cglmb250LXN0eWxlOiBpdGFsaWM7CgltYXJnaW
4tdG9wOiAtMTBweDsKfQpoMyB7Cglmb250LXNpemU6IDEuMmVtOwoJZm9udC13ZWlnaHQ6IDIwMDsKfQppb
WcgewoJdmVydGljYWwtYWxpZ246IC0ycHg7CgltYXgtd2lkdGg6IDEwMCU7CgloZWlnaHQ6IGF1dG87Cn0K
dGggewoJZm9udC13ZWlnaHQ6IG5vcm1hbDsKfQoKaW5wdXRbdHlwZT0idGV4dCJdLCAKaW5wdXRbdHlwZT0
icGFzc3dvcmQiXSwgCnRleHRhcmVhIHsKCW1hcmdpbjogM3B4OwoJcGFkZGluZzogOHB4OwoJLW1vei1ib3
JkZXItcmFkaXVzOjNweCAzcHggM3B4IDNweDsKCS13ZWJraXQtYm9yZGVyLXJhZGl1czogM3B4OwoJYm9yZ
GVyLXJhZGl1czogM3B4OwoJYm9yZGVyLXN0eWxlOnNvbGlkOwoJYm9yZGVyLXdpZHRoOjFweDsKCWJvcmRl
ci1jb2xvcjogI0Q2RDZENjsKCS13ZWJraXQtYm94LXNpemluZzogYm9yZGVyLWJveDsKCS1tb3otYm94LXN
pemluZzpib3JkZXItYm94OwoJYm94LXNpemluZzogYm9yZGVyLWJveDsKCQoJZm9udC1zaXplOiAxLjJlbT
sKCWZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJyAsc2Fucy1zZXJpZjsKfQoKaW5wdXRbdHlwZT0idGV4dCJdO
mZvY3VzLCAKaW5wdXRbdHlwZT0icGFzc3dvcmQiXTpmb2N1cywgCnRleHRhcmVhOmZvY3VzIHsKCW91dGxp
bmU6bm9uZTsKCWJvcmRlci1jb2xvcjogIzk5OTsKfQp0ZXh0YXJlYSB7Cglmb250LWZhbWlseTogc2Fucy1
zZXJpZjsKCWZvbnQtc2l6ZTogMTNweDsKCWxpbmUtaGVpZ2h0OiAxLjRlbTsKCWNvbG9yOiAjNDY0NjQ2Ow
oJd2lkdGg6IDEwMCU7CgltaW4taGVpZ2h0OiAyMDBweDsKfQoKbGFiZWwgewoJd2lkdGg6IDIwMHB4OwoJb
WFyZ2luLXRvcDogN3B4Owp9CgovKiBCdXR0b25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0qLwoKLml0LWJ1dHRvbiwKLmJ1dHRvbiwKLmJ1dHRvbi1wcmltYXJ5IHsKCWRpc3BsYXk6IGlubGluZS1
ibG9jazsKCWJvcmRlcjpub25lOwoJb3V0bGluZTpub25lOwoJcG9zaXRpb246IHJlbGF0aXZlOwoJbWFyZ2
luOiAwLjVlbSAwLjI1ZW07CglwYWRkaW5nOiAuNWVtIDFlbTsKCWJhY2tncm91bmQ6ICMyRUEyQ0M7Cgljb
2xvcjogI2ZmZjsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCWZvbnQtc2l6ZTogMS4xMjVlbTsKCWJvcmRl
ci1ib3R0b206IDJweCBzb2xpZCAjMjc3NjkzOwoJYm9yZGVyLXJhZGl1czogM3B4Owp9CgouaXQtYnV0dG9
uOmhvdmVyLAouYnV0dG9uOmhvdmVyLAouYnV0dG9uLXByaW1hcnk6aG92ZXIgewoJYm9yZGVyLWJvdHRvbS
1jb2xvcjogIzEzNDU1QjsKCWNvbG9yOiAjRkZGRkZGOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwoJY3Vyc
29yOnBvaW50ZXI7Cn0KCi5pdC1idXR0b246aG92ZXIgewoJYmFja2dyb3VuZDogIzNhYjFkYjsKfQoKLmJ1
dHRvbi1zZWNvbmRhcnkgewoJYmFja2dyb3VuZDogI2YxZjFmMTsKCWNvbG9yOiAjNjY2OwoJYm9yZGVyOiA
xcHggc29saWQgI2ViZWJlYjsKCWJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjYzljOWM5Owp9CgouYnV0dG
9uLXNlY29uZGFyeTpob3ZlciB7Cgljb2xvcjogIzQ0NDsKCWJvcmRlci1ib3R0b20tY29sb3I6ICM5OTk7C
n0KCi5idXR0b24tdGVydGlhcnkgewoJYmFja2dyb3VuZDogI2YxZjFmMTsKCWNvbG9yOiAjNjY2OwoJYm9y
ZGVyOiAxcHggc29saWQgI2ViZWJlYjsKCWJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjYzljOWM5OwoJcGF
kZGluZzogMCAxZW07Cglmb250LXNpemU6IC44NzVlbTsKfQoKLmJ1dHRvbi10ZXJ0aWFyeTpob3ZlciB7Cg
ljb2xvcjogIzQ0NDsKCWJvcmRlci1ib3R0b20tY29sb3I6ICM5OTk7Cn0KCi5idXR0b25fZGlzYWJsZWQge
woJb3BhY2l0eTogLjc7Cn0KCgoKLyogRXJyb3JzIGFuZCBNZXNzYWdlcwotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KCi5wYl9iYWNrdXBidWRkeV9hbGVydCB7CgltYXJnaW46IDAgMCAyZW0gMDs
KCWJhY2tncm91bmQtY29sb3I6I0ZGRkZFMDsKCWJvcmRlcjogMXB4IHNvbGlkICNFNkRCNTU7CglwYWRkaW
5nOiAxMHB4OwoJLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CgktbW96LWJvcmRlci1yYWRpdXM6IDNwe
DsKCWJvcmRlci1yYWRpdXM6IDNweDsKfQoKLmVycm9yLCAKLnVwZGF0ZWQgewoJZm9udC1zaXplOiAwLjhl
bTsKfQouZXJyb3IgcCwgCi51cGRhdGVkIHAgewoJbWFyZ2luOiAwOwoJcGFkZGluZzogMDsKfQoKCgoKCi8
qIFBhZ2UgTGF5b3V0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpib2R5IHsKCS8vYm
Fja2dyb3VuZDogI0ZGRkZGRjsKCWZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJyAsc2Fucy1zZXJpZjsKCWZvb
nQtc2l6ZTogMWVtOwoJY29sb3I6ICM0NjQ2NDY7Cglmb250LXdlaWdodDogMjAwOwoJbWFyZ2luOiAwOwp9
CgoudG9wTmF2IHsKCXBvc2l0aW9uOiBmaXhlZDsKCXRvcDogMDsKCXdpZHRoOiAxMDAlOwoJYmFja2dyb3V
uZDogIzJhMmYzMzsKCWNvbG9yOiAjZmZmOwoJZm9udC1zaXplOiAwLjllbTsKCW92ZXJmbG93OmhpZGRlbj
sKCXotaW5kZXg6IDkwMDA7Cn0KLnRvcE5hdiBhIHsKCWRpc3BsYXk6IGJsb2NrOwoJZmxvYXQ6bGVmdDsKC
W1hcmdpbjogMCBhdXRvOwoJY29sb3I6ICNmZmY7CgljdXJzb3I6IHBvaW50ZXI7Cgl0ZXh0LWFsaWduOmNl
bnRlcjsKCXBhZGRpbmc6IDFlbTsKCWJhY2tncm91bmQ6ICM0MTQ3NGQ7Cn0KLnRvcE5hdiBhOmhvdmVyLAo
udG9wTmF2IC5hY3RpdmVQYWdlIHsKCWJhY2tncm91bmQ6ICMzMjM3M2M7Cgl0ZXh0LWRlY29yYXRpb246IG
5vbmU7Cgljb2xvcjogI2ZmZjsKfQoKLnRvcE5hdiAuYWN0aXZlUGFnZSB7Cgljb2xvcjogIzAwQjdGRjsKf
QojbWluaUZyYW1lIHsKCW1hcmdpbi10b3A6IDJweDsKfQoKLm1haW5fYm94X3dyYXB7Cgl3aWR0aDogMTAw
JTsKCW1heC13aWR0aDogODUwcHg7CgltYXJnaW46MmVtIGF1dG87CglwYWRkaW5nOiAwcHg7Cglib3JkZXI
6IDFweCBzb2xpZCAjRDZENkQ2OwoJYmFja2dyb3VuZDogI0ZGRkZGRjsKfQoKLm1haW5fYm94IHsKCXBhZG
Rpbmc6IDJlbTsKfQoKI3BiX2JhY2t1cGJ1ZGR5X3N0YXR1c193cmFwIHsKCXBhZGRpbmc6IDJlbSAyZW0gM
CAyZW0KfQoKLm1haW5fYm94X2hlYWQgewoJYmFja2dyb3VuZDogIzQxNDc0ZDsKCXBhZGRpbmc6IC41ZW0g
MWVtOwoJZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnICxzYW5zLXNlcmlmOwoJZm9udC13ZWlnaHQ6IG5vcm1
hbDsKCWZvbnQtc2l6ZTogMS4yNWVtOwoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNENkQ2RDY7CgliYW
NrZ3JvdW5kOiAjZmZmOwoJYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjMDBCN0ZGOwp9Cgouc3RlcF9udW1iZ
XIgewoJY29sb3I6ICMwMEI3RkY7Cglmb250LXdlaWdodDogYm9sZDsKfQoKLm1haW5fYm94X2Zvb3QgewoJ
cGFkZGluZzogMTBweDsKCWZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJyAsc2Fucy1zZXJpZjsKCWNvbG9yOiA
jNDY0NjQ2OwoJYm9yZGVyLXRvcDogMXB4IHNvbGlkICNENkQ2RDY7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn
0KCi53cmFwIHsKCW1hcmdpbi10b3A6IDEwcHg7Cglwb3NpdGlvbjogcmVsYXRpdmU7Cgl0ZXh0LWFsaWduO
iBsZWZ0OwoJbWFyZ2luLWxlZnQ6IGF1dG87CgltYXJnaW4tcmlnaHQ6IGF1dG87Cn0KCgoKCgouZm9vdGVy
X3RleHQgewoJZm9udC1zaXplOiAwLjdlbTsKCWNvbG9yOiAjNzc3Owp9Ci5mb290ZXIgewoJY2xlYXI6IGJ
vdGg7CgltYXJnaW4tdG9wOiAyNXB4OwoJbWFyZ2luLWJvdHRvbTogNTBweDsKCXRleHQtYWxpZ246Y2VudG
VyOwp9CgouYmFja3VwX3NlbGVjdF9idXR0b25zIHsKCW1hcmdpbjogMCAwIDNlbSAwOwp9CgouYmFja3VwX
3NlbGVjdF90ZXh0IHNwYW4gewoJZGlzcGxheTppbmxpbmUtYmxvY2s7CgltYXgtd2lkdGg6IDUwMHB4OwoJ
b3ZlcmZsb3c6c2Nyb2xsOwoJdmVydGljYWwtYWxpZ246IGJvdHRvbTsKfQouYmFja3VwX3NlbGVjdF90ZXh
0IHNwYW46Oi13ZWJraXQtc2Nyb2xsYmFyIHsgCglkaXNwbGF5OiBub25lOyAKfQoKLnJvdW5kLXdyYXAgew
oJbWFyZ2luOiAxZW0gMDsKCXBhZGRpbmc6IDA7Cn0KCi5yb3VuZC13cmFwIGxpIHsKCWxpc3Qtc3R5bGU6I
G5vbmU7Cglib3JkZXItYm90dG9tOiAxcHggc29saWQgI2RmZGZkZjsKCW1hcmdpbi1ib3R0b206IDFlbTsK
CXBhZGRpbmctYm90dG9tOiAxZW07Cn0KCi5yb3VuZC13cmFwIGxpOmxhc3QtY2hpbGQgewoJYm9yZGVyOm5
vbmU7Cn0KCi5zZXR0aW5nQ29weSB7Cgl0ZXh0LWFsaWduOiBjZW50ZXI7Cn0KCgoKCgoKCiNpbXBvcnRidW
RkeV9zdGF0dXMgewoJYm9yZGVyOiAwcHg7CgltYXJnaW46IC0xNXB4OwoJbWFyZ2luLWJvdHRvbTogMHB4O
woJd2lkdGg6IDEwMCU7CgltYXgtd2lkdGg6IDc0MHB4OwoJaGVpZ2h0OiAyMDBweDsKfQoKCi5iYWNrdXBf
c2VsZWN0X3RleHQgewoJbWFyZ2luLWJvdHRvbTogMTJweDsKfQoKCgoKCi5tZW51IHsKCXBhZGRpbmc6IDh
weDsKCXRleHQtYWxpZ246IGNlbnRlcjsKCWJhY2tncm91bmQtY29sb3I6ICNDQ0NDQ0M7Cglmb250LXdlaW
dodDogYm9sZDsKfQoKLnRvZ2dsZSB7CgljdXJzb3I6IHBvaW50ZXI7Cn0KLnRvZ2dsZWQgewoJZGlzcGxhe
Togbm9uZTsKCWJvcmRlcjogMXB4IHNvbGlkICNDQ0NDQ0M7CgltYXJnaW46IDRweDsKCXBhZGRpbmc6IDhw
eDsKCS13ZWJraXQtYm9yZGVyLXJhZGl1czogNHB4OwoJLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7Cglib3J
kZXItcmFkaXVzOiA0cHg7Cn0KCiN0b29sdGlwIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXotaW5kZXg6ID
k5OTk5OTsKCWJvcmRlcjogMXB4IHNvbGlkICMxMTE7CgliYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOwoJcGFkZ
GluZzogNXB4OwoJbWF4LXdpZHRoOiAzMDBweDsKCW9wYWNpdHk6IDAuODU7Cglib3JkZXItcmFkaXVzOiA1
cHg7Cgktd2Via2l0LWJvcmRlci1yYWRpdXM6IDVweDsKCS1tb3otYm9yZGVyLXJhZGl1czogNXB4Owp9CiN
0b29sdGlwIGgzLCAjdG9vbHRpcCBkaXYgeyBtYXJnaW46IDA7IH0KLmxpZ2h0IHsKCWNvbG9yOiAjQUZBRk
FGOwp9CiNwYl9pbXBvcnRidWRkeV93b3JraW5nIHsKCXRleHQtYWxpZ246IGNlbnRlcjsKCXBhZGRpbmctd
G9wOiAyMHB4Owp9CgoKCmhyIHsKCWJvcmRlci10b3A6IDFweCBkb3R0ZWQgI0Q2RDZENjsKCWJvcmRlci1i
b3R0b206IDA7CgltYXJnaW4tdG9wOiAzMHB4OwoJbWFyZ2luLWJvdHRvbTogMzBweDsKfQoKCgovKiBUYWJ
zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwoudWktdGFicyB7Cglib3JkZXItdG9wOi
AxcHggc29saWQgI0RGREZERjsKCW1hcmdpbi10b3A6IDIwcHg7Cglmb250LXNpemU6IDEuM2VtOwp9IC8qI
HBhZGRpbmc6IC4yZW07IHpvb206IDE7ICovCi51aS10YWJzIC51aS10YWJzLW5hdiB7Cgl6LWluZGV4OiAx
NTsKCWxpc3Qtc3R5bGU6IG5vbmU7Cglwb3NpdGlvbjogcmVsYXRpdmU7CglwYWRkaW5nOiAwcHggMHB4IDB
weDsKCW1hcmdpbi10b3A6IC0xNXB4OwoJbWFyZ2luLWxlZnQ6IDEwcHg7Cn0KLnVpLXRhYnMgLnVpLXRhYn
MtbmF2IGxpIHsgCgltYXJnaW46IC0yNXB4IDNweCAtMXB4IDBweDsgCglwb3NpdGlvbjogcmVsYXRpdmU7I
AoJZmxvYXQ6IGxlZnQ7IAoJcGFkZGluZzogMDsgCgl0ZXh0LWFsaWduOiBjZW50ZXI7IAoJCn0KLnVpLXRh
YnMgLnVpLXRhYnMtbmF2IGxpIGEgewoJY29sb3I6ICM1MzU3NUQ7CgloZWlnaHQ6IDM0cHg7CglmbG9hdDo
gbGVmdDsKCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKCXBhZGRpbmctbGVmdDogMTJweDsKCXBhZGRpbmctcm
lnaHQ6IDEycHg7CgktbW96LWJvcmRlci1yYWRpdXM6IDVweCA1cHggMHB4IDBweDsKCS13ZWJraXQtYm9yZ
GVyLXJhZGl1czogNXB4IDVweCAwcHggMHB4OwoJYm9yZGVyOiAxcHggc29saWQgI0RGREZERjsKCWJvcmRl
ci1ib3R0b206IDBweCBzb2xpZCByZWQ7CglvdXRsaW5lOiBub25lOwoJcGFkZGluZy10b3A6IDVweDsKfQo
udWktdGFicyAudWktdGFicy1uYXYgbGkgYTpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNGNUY1RjU7IH
0KLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtc2VsZWN0ZWQgeyAgfSAvKiBwYWRkaW5nLWJvd
HRvbTogMHB4OyAqLwoudWktdGFicyAudWktdGFicy1uYXYgbGkudWktdGFicy1zZWxlY3RlZCBhLCAKLnVp
LXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXN0YXRlLWRpc2FibGVkIGEsIAoudWktdGFicyAudWktdGFicy1
uYXYgbGkudWktc3RhdGUtcHJvY2Vzc2luZyBhIHsKCWhlaWdodDogMzRweDsKCWN1cnNvcjogdGV4dDsKCW
JhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7Cglib3JkZXItYm90dG9tOiAwcHg7Cn0KLnVpLXRhYnMgLnVpL
XRhYnMtbmF2IGxpIGEsIAoudWktdGFicy51aS10YWJzLWNvbGxhcHNpYmxlIC51aS10YWJzLW5hdiBsaS51
aS10YWJzLXNlbGVjdGVkIGEgeyBjdXJzb3I6IHB
vaW50ZXI7IH0gLyogZmlyc3Qgc2VsZWN0b3IgaW4gZ3JvdXAgc2VlbXMgb2Jzb2xldGUsIGJ1dCByZXF1aX
JlZCB0byBvdmVyY29tZSBidWcgaW4gT3BlcmEgYXBwbHlpbmcgY3Vyc29yOiB0ZXh0IG92ZXJhbGwgaWYgZ
GVmaW5lZCBlbHNld2hlcmUuLi4gKi8KLnVpLXRhYnMgLnVpLXRhYnMtcGFuZWwgeyBwYWRkaW5nLXRvcDog
M3B4OyBkaXNwbGF5OiBibG9jazsgYm9yZGVyLXdpZHRoOiAwOyBiYWNrZ3JvdW5kOiBub25lOyB9Ci51aS1
0YWJzIC51aS10YWJzLWhpZGUgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KLnRhYnMtaXRlbSB7Cg
kvL3BhZGRpbmctbGVmdDogMTZweDsKCXBhZGRpbmctdG9wOiAxNnB4OwoJLy9wYWRkaW5nLXRvcDogMjhwe
DsKCS8vcGFkZGluZy1ib3R0b206IDI4cHg7CgliYWNrZ3JvdW5kOiAjRkZGRkZGOwoJZm9udC1zaXplOiAx
NnB4Owp9CgojcGx1Z2luYnVkZHktdGFicyB7CgltYXJnaW4tdG9wOiA0ZW07Cn0KCiNwbHVnaW5idWRkeS1
0YWJzLnVpLXRhYnMgewoJCn0KI3BsdWdpbmJ1ZGR5LXRhYnMudWktdGFicyAudWktdGFicy1uYXYgbGkgYX
sKCS13ZWJraXQtYm9yZGVyLXJhZGl1czogMDsKCS1tb3otYm9yZGVyLXJhZGl1czogMDsKCWJvcmRlci1yY
WRpdXM6IDA7Cn0KCi53aWRlZmF0IHsKCWJvcmRlcjogMDsKfQouZGVzY3JpcHRpb24gewoJY29sb3I6ICM2
NjY2NjY7CgltYXJnaW46IDFlbTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsgCglsaW5lLWhlaWdodDogMjZweDs
KfQoKCi5tb2RhbCB7Cgl3aWR0aDogNzAwcHg7CgliYWNrZ3JvdW5kOiAjRkZGRkZGOwoJYm9yZGVyLXJhZG
l1czogNXB4OwoJYm9yZGVyOiAxcHggc29saWQgI0Q2RDZENjsKCS1tb3otYm9yZGVyLXJhZGl1czogNXB4O
woJLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7CglvdmVyZmxvdzogaGlkZGVuOwoJcGFkZGluZzogMHB4
OwoJaGVpZ2h0OiBpbmhlcml0OwoJb3ZlcmZsb3c6IHNjcm9sbDsKfQoubW9kYWxfaGVhZGVyIHsKCWJhY2t
ncm91bmQ6ICM0MTQ3NGQ7CglwYWRkaW5nOiAxZW07Cglmb250LWZhbWlseTogJ09wZW4gU2FucycgLHNhbn
Mtc2VyaWY7Cglmb250LXdlaWdodDogbm9ybWFsOwoJYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNENkQ2R
DY7CgliYWNrZ3JvdW5kOiAjZmZmOwoJYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCAjMDBCN0ZGOwp9Ci5tb2Rh
bF9oZWFkZXIgaDIgewoJZm9udC1mYW1pbHk6ICdPcGVuIFNhbnMnICxzYW5zLXNlcmlmOwoJY29sb3I6ICM
0NjQ2NDY7Cglmb250LXNpemU6IDEuNDNlbTsKCWZvbnQtc3R5bGU6IG5vcm1hbDsKCWxpbmUtaGVpZ2h0Oi
AxOwoJbWFyZ2luOiAwIDAgNXB4Owp9Ci5tb2RhbF9jbG9zZSB7CglmbG9hdDogcmlnaHQ7Cgljb2xvcjogI
zhmOGY4ZjsKCWZvbnQtc2l6ZTogMS41ZW07CgljdXJzb3I6IHBvaW50ZXI7CgkKCXBvc2l0aW9uOiBhYnNv
bHV0ZTsKCXJpZ2h0OiAxNXB4OwoJdG9wOiAxNXB4OwoJLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm9
4OwoJLW1vei1ib3gtc2l6aW5nOmNvbnRlbnQtYm94OwoJYm94LXNpemluZzpjb250ZW50LWJveDsKCWRpc3
BsYXk6aW5saW5lLWJsb2NrOwoJd2lkdGg6MjVweDsKCWhlaWdodDoyNXB4OwoJYm9yZGVyOjJweCBzb2xpZ
CB0cmFuc3BhcmVudDsKCWJvcmRlci1yYWRpdXM6NTAlOwoJbGluZS1oZWlnaHQ6MWVtOwoJdGV4dC1kZWNv
cmF0aW9uOm5vbmU7Cgl0ZXh0LWFsaWduOmNlbnRlcjsKCS13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjJzIGx
pbmVhcjsKCS1tb3otdHJhbnNpdGlvbjphbGwgLjJzIGxpbmVhcjsKCXRyYW5zaXRpb246YWxsIC4ycyBsaW
5lYXI7Cn0KCi5tb2RhbF9jbG9zZTpob3ZlcnsKCWJvcmRlci1jb2xvcjojRTE3OTdBICFpbXBvcnRhbnQ7C
gljb2xvcjojRTE3OTdBOwoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9CgoubW9kYWxfY29udGVudCB7Cglw
YWRkaW5nOiAyMHB4OwoJCn0KI2xlYW5fb3ZlcmxheSB7CiAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICB6LWl
uZGV4OjEwMDsKICAgIHRvcDogMHB4OwogICAgbGVmdDogMHB4OwogICAgaGVpZ2h0OjEwMCU7CiAgICB3aW
R0aDoxMDAlOwogICAgYmFja2dyb3VuZDogIzAwMDsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KCgojcGJfY3JlY
XRlZGJfbW9kYWwgewoJaGVpZ2h0OiA4NSU7CglvdmVyZmxvdzogYXV0bzsKfQoKCgoucGJfbGFiZWwgewoJ
LXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7CgktbW96LWJvcmRlci1yYWRpdXM6IDNweDsKCWJvcmRlci1
yYWRpdXM6IDNweDsKfQoucGJfbGFiZWwgewoJZGlzcGxheTogaW5saW5lLWJsb2NrOwoJcGFkZGluZzogMn
B4IDRweDsKCWZvbnQtc2l6ZTogMTEuODQ0cHg7Cglmb250LXdlaWdodDogYm9sZDsKCWxpbmUtaGVpZ2h0O
iAxNHB4OwoJY29sb3I6IHdoaXRlOwoJdGV4dC1zaGFkb3c6IDAgLTFweCAwIHJnYmEoMCwgMCwgMCwgMC4y
NSk7Cgl3aGl0ZS1zcGFjZTogbm93cmFwOwoJdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOwoJYmFja2dyb3V
uZC1jb2xvcjogIzk5OTsKfQoucGJfbGFiZWwtc3VjY2VzcyB7CgliYWNrZ3JvdW5kLWNvbG9yOiAjNDY4OD
Q3Owp9Ci5wYl9sYWJlbC13YXJuaW5nIHsKCWJhY2tncm91bmQtY29sb3I6ICNGODk0MDY7Cn0KLnBiX2xhY
mVsLWVycm9yIHsKCWJhY2tncm91bmQtY29sb3I6IHJlZDsKfQoucGJfbGFiZWwtaW1wb3J0YW50IHsKCWJh
Y2tncm91bmQtY29sb3I6ICNkZDQ1NDI7IC8vI0I5NEE0ODsKfQoucGJfbGFiZWwtaW5mbyB7CgliYWNrZ3J
vdW5kLWNvbG9yOiAjM0E4N0FEOwp9Ci5wYl9sYWJlbC1pbnZlcnNlIHsKCWJhY2tncm91bmQtY29sb3I6IC
MzMzM7Cn0KCi5leHBhbmRlcjpob3ZlciB7Cgl0ZXh0LWRlY29yYXRpb246IG5vbmU7Cn0KLmV4cGFuZGVyL
WJveCB7CglwYWRkaW5nLWJvdHRvbTogNnB4Owp9Ci5leHBhbmRlci1ib3ggLmNvbnRlbnQgewoJZGlzcGxh
eTogbm9uZTsKCXBhZGRpbmc6IDEwcHg7CgltYXJnaW4tbGVmdDogNHB4OwoJYm9yZGVyLWxlZnQ6IDZweCB
zb2xpZCAjZjVmNWY1OwoJbWFyZ2luLWJvdHRvbTogMTJweDsKCW1hcmdpbi10b3A6IDEycHg7CgltYXJnaW
4tYm90dG9tOiAxMnB4Owp9Ci5leHBhbmRlci5jb2xsYXBzZWQgewoJcGFkZGluZy1sZWZ0OiAxM3B4OwoJY
mFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW50ZXI7CgliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0
OwoJYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL2ltYWdlcy9jb2xsYXBzZWQuZ2lmKTsKfQouZXhwYW5kZXI
uZXhwYW5kZWQgewoJcGFkZGluZy1sZWZ0OiAxM3B4OwoJYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCBjZW
50ZXI7CgliYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OwoJYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL
2ltYWdlcy9leHBhbmRlZC5naWYpOwp9CgoKI3BiX2JhY2t1cGJ1ZGR5X3N0YXR1c193cmFwIHsKCWRpc3Bs
YXk6IG5vbmU7Cn0KCi5lcnJvcl9hbGVydF9ib3ggewoJYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCByZWQ7Cgl
iYWNrZ3JvdW5kOiByZ2IoMjU1LCAyMDAsIDIwMCk7Cn0KLmVycm9yX2FsZXJ0X3RpdGxlIHsKCWRpc3BsYX
k6IGJsb2NrOwp9Ci5iYWNrdXBidWR5X2Vycm9yX2xpc3QgewoJZm9udC1zaXplOiAxNHB4Owp9Cgoud2Fyb
mluZ19hbGVydF9ib3ggewoJYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCBvcmFuZ2U7CgliYWNrZ3JvdW5kOiBy
Z2IoMjU1LCAyNTUsIDIwMCk7CgltYXgtaGVpZ2h0OiAyMjBweDsKCW92ZXJmbG93OiBzY3JvbGw7Cglmb25
0LXNpemU6IDAuOWVtOwp9Ci53YXJuaW5nX2FsZXJ0X3RpdGxlIHsKCWRpc3BsYXk6IGJsb2NrOwp9Ci5iYW
NrdXBidWR5X3dhcm5pbmdfbGlzdCB7Cglmb250LXNpemU6IDE0cHg7Cn0KCi5kYXRhYmFzZV9yZXN0b3JlX
3RhYmxlX3NlbGVjdCB7CgltYXgtaGVpZ2h0OiAyMDBweDsKCW92ZXJmbG93OiBzY3JvbGw7Cglib3JkZXI6
IDFweCBzb2xpZCAjZWNlY2VjOwp9Ci5kYXRhYmFzZV9yZXN0b3JlX3RhYmxlX3NlbGVjdDo6LXdlYmtpdC1
zY3JvbGxiYXIgewoJLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lOwoJd2lkdGg6IDExcHg7CgloZWlnaHQ6ID
ExcHg7Cn0KLmRhdGFiYXNlX3Jlc3RvcmVfdGFibGVfc2VsZWN0Ojotd2Via2l0LXNjcm9sbGJhci10aHVtY
iB7Cglib3JkZXItcmFkaXVzOiA4cHg7Cglib3JkZXI6IDJweCBzb2xpZCB3aGl0ZTsgLyogc2hvdWxkIG1h
dGNoIGJhY2tncm91bmQsIGNhbid0IGJlIHRyYW5zcGFyZW50ICovCgliYWNrZ3JvdW5kLWNvbG9yOiByZ2J
hKDAsIDAsIDAsIC4xKTsKfQ==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/css/style.css,importbuddy/css/style.
css
###PACKDATA,FILE_START,/_importbuddy/importbuddy/images/collapsed.gif,importbuddy/i
mages/collapsed.gif
R0lGODlhBgAHALMKAM7Ozr6+vq6urp6enoWFhaampt7e3u/v742NjX19ff///wAAAAAAAAAAAAAAAAAAACH
5BAEAAAoALAAAAAAGAAcAAAQVEAFFVUrD0HvF4RfCEYGVFAeFaFUEADs=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/images/collapsed.gif,importbuddy/ima
ges/collapsed.gif
###PACKDATA,FILE_START,/_importbuddy/importbuddy/images/expanded.gif,importbuddy/im
ages/expanded.gif
R0lGODlhBwAGALMKAM7Ozr6+vq6urp6enoWFhaampt7e3u/v742NjX19ff///wAAAAAAAAAAAAAAAAAAACH
5BAEAAAoALAAAAAAHAAYAAAQWEKU5kaETqEKHUgcxGZ8SJEL5IccXAQA7
###PACKDATA,FILE_END,/_importbuddy/importbuddy/images/expanded.gif,importbuddy/imag
es/expanded.gif
###PACKDATA,FILE_START,/_importbuddy/importbuddy/images/gray-
grad.png,importbuddy/images/gray-grad.png
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAfCAIAAACgQJBPAAAAA3NCSVQICAjb4U/gAAAACXBIWXMAAAsSAAA
LEgHS3X78AAAAIXRFWHRTb2Z0d2FyZQBNYWNyb21lZGlhIEZpcmV3b3JrcyA0LjDqJid1AAAAFnRFWHRDcm
VhdGlvbiBUaW1lADEwLzI0LzA4KQ6r+wAAAClJREFUeJxjfPv2LQMSYPn//z8yn4kBFaDzqa0eXZ5U9QMtT
6l5tFYPADsXLPcJwrwLAAAAAElFTkSuQmCC
###PACKDATA,FILE_END,/_importbuddy/importbuddy/images/gray-
grad.png,importbuddy/images/gray-grad.png
###PACKDATA,FILE_START,/_importbuddy/importbuddy/images/icon_16x16.png,importbuddy/
images/icon_16x16.png
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1B
QaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghod
kVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRN
YAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCE
AcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYh
EAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8l
c88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9e
M4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOna
V/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGL
c5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2Sy
cQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzAB
hzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyB
CQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvy
GvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsT
gsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTq
Eu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuy
BzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlK
vUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZx
l3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM
1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXE
JrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpa
XllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+
6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRu
dE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vf
t2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOX
YBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2D
PjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn
8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLe
WV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4K
tguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3p
tnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOw
vSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOl
LOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAV
ZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxed
sK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+F
YmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fN
KNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZft
J+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx+
+/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3n
r8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb+
+6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9
L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89Hc
R/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O
/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLd
sAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAk1JREFUeNqkkz1MU2EUh
p97b6FGoSAMaoBYAimMxgSdHFCpa/1ZXIyToZMOhCgDgyFqjFGm1jhoTDT+JHo7oCYMxp/JgdiAaATibeUv
ESjtNdD29rscB+GKAeLgSc7ynfd87zk576uJCP8Tvq0KqYTPD0SBZDCi3myF0zabIJXwnQOigabz+5xcksL
82zjQH4yosQ1gEfHSMo2QZRqx6df7pZhNylrkJvolPVArlml0r8eLCOubu9MDtZIdvyWu627I4s9vMvv+sF
imEbNMI+R9YJnGLss0YjPv2iWfGxfHcWRizpaJOVuO3f0gXS9GZWgyI3P2sjiOI5mvNyU9UONNo1mmEato7
olWNPd4a515PsrLsfm/Vu070kRnWz0Abj5N9uNpSvbwQR2Ibgt2o5RCKYW1sERluQ7AvUgrl9sbAfiezbOw
VEAphZTV4a/vBIjqgNeslCK1uMSTTz9oCPjpCFZxqrUWgDtDM6Qyyx5O9AqAah1IOrmkV2jbvZ3eQw1M2kX
CD0YIPxwG4PHxEC07yz1ccfYRwH0diOdHTlCYvO0Vs3mHky012EVFZblBR2MVi8sOSilKhQz5z2dRC6/iwY
hKaCJCKuELARe06nDUaLwBRgAAcyxLXWUZB/bs+K2Z7CCu1QWufTUYUT0blJhK+K5gBC5pe69DVcefE7g2M
tUHmWcJIB6MqMEtpZxK+MJAVAJHI9JwDS3/BW3qIjjTHus/veBNs2qmVdanm5oJMIAywA8Yuq4bq28aoANr
DC7grqyslIAS4ADurwEAaepxmqgtIWwAAAAASUVORK5CYII=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/images/icon_16x16.png,importbuddy/im
ages/icon_16x16.png
###PACKDATA,FILE_START,/_importbuddy/importbuddy/images/icon_32x32.png,importbuddy/
images/icon_32x32.png
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAIk0lEQVR42n1WWVCb1xU2dmKaTu2x04e2k7S
Ttn5q8lYnkzw0T+lMJ3lo7ZlMM5lkYhu8PrSk8aSk8VKQDDYBaqABswnEYkDsNkLsSGwChI2QhA3CrDb7It
CKWPT1nMs//9ipRpr55t7733PO/c6555yrfQD+D0VFxYfa2/WfWaw285DVOjtksRCsMsxDFsLQrJm/C7woY
7buwUKw2myMSUNHR2V5RcV7PzwrKIGu7u5zk1NTAy6Pd9vpdsPpehEbEpweD5xeH41ekJwMl9sDt4fhhcfn
g8frDcw8feYYePCgUqFUvBySgFKpDH/4cNDk8/u3SRFEAu4fYmcXbgAupwvOmadwrm+ItWd3d+9QIsXw+jZ
l+Le2A7bh4dmbN28eCUmABSw225JkRD6UvRJkAoBjyILVmFg4LlyEO1cFx6VLWL12DY5BMzwAeb1JEAT25t
49EqP2MW9iYuKvQxIggV+OjIy6+HAXRUAmQGDjc3TgzG+PYf7IESxfuIBdAKtRUVg8+iqeHjuGucxMeAUJI
u99Php+TExNBVJSUn8fksDtlJQ3xycnt5mxiIBEwgfgSZYKluNvY62kFI7mZmyMjYl95/g4HK1tWK2shPWd
dzD2fSbLs/4L10F5gIyMOx+EJJCenv7uNN0rK8jKOztYso5Af+Q1dL3/BwwUFaGfPB1tb4eDks6u16MvPR0
mtRqdtN92+GdYHhyGd3dXSkICjXPz81CpVH8NSSArK+vDZ7NzcO/dv+y9/dZ/URf2EnQ/PYra8HBUkar+88
+xFAjAcOYMqsP2ie/1R49AG3YQdsV/xFW4PB45iguLSygqKroYkoC6oOD0wuIiMZaugOAH8FiRiDISLz38E
1QfPoTK/fvR8PHHsJNXTZ9+Ck1YGKoPHUIZoZTIDF+NxybA+jKWlleg0Wi+DUmgtLQsmgXlHCD4dgOY7jKi
POzHSN9/AHk/Ckdx+EHk02FZb7yB/MOHUXyQ1hSB9AMvE9FwTOo74RNl6ZPtrKytoab2XlJIAtU1NYkraw6
5fj0S+BqM0VeRTd4lkFrygZeQSuP3hLR9YUgiYt/RPJPQ/VU0vIGA5LlXvoJVxzrqdQ15IQmQgGptfYOT5o
Vr4Ll7ewd9t1OR/9rrSCLVeMINaeS16ue/QG9iMlxb21TCPqkjSgRovb7hRGtbe21IAiRQs+50ygQkL6Rk8
olILFI5mUtK0BodDd3582j7ZzTMRcWYn54R+y5uzS4PEWAI74XuBnXOzq7ujpAESMBAff557+WKEIbZq00/
HyTglSDq3u/nfQG5cxLEKOn2m0zm+Pj4/UEJxMXFhfX1mwZJWW4eWxR2n3+LjPC3PVJMUESDiLBx3pN0+CB
5zvt+0ic7siODZvPErVu3XglKICEh4RV6iMbZACstr67B9OAhxp5MiCtZWlnF7PyC2JukZmV6OEjNZYHkVo
UsdVCSWYGD7nqean6KrsRssWKF9liHydmGH60kJye/GpQAbRy1DA8vsVfbVEJthg7U3K9DXkERns3No6K6B
lm5ecJgQfFd9PT2oZtQV9+AWpLjUd/RKcnWoqyiktZdKNGUy6/k6NgTX1pa2m+CEkhNTf3VyKjdzYI7VEbV
9+4jv7AYd3JyMfx4hA4toXURWtoNaGptB/8mpqYRdflrIqDF41E7GptbRLmVV9XgbpkGFVXVPIrwe+lKJqe
nA3cyM48HJZCRkfHW+MTkDicgR4C97OjqQXFZGbJV+Si4W4IsVR7ukkeaymrYn4yj29iHqtr7RLYOWl2D8P
rBoJkJMMR83emSK4ofpFyV6o9BCeTk5Lw3RXfr9u2xfWwfQ2u7nr3n0FGycR7QXZPXZosNrXoDJianKA8Ws
Ujdc5zmtkcjFCE9rZc5B8ThWzvyHxXMzs3ze/BJUAJqtfqjp7NzLMz/YNDbb+IokLdVIqna6X65Ah6N2DFk
taGBwp2br+b75xoX+aKmfmAgOUo+Js5eMyGppDfFg1Sm0VwKSqCkpPTM3MICKwnW2Xn5RGKAjfLhnA9cdmx
QhD1XXYAZIlxcWoaWNj1yiMyzuQVOOpEThXRlTLKyphbbZI91OVLU7q8EJVBVXf3NwuKyaKObVPvpmdnCWH
JqGoz9Jj6IciMgQn9PW09rjegTnT1G1NZpSbaC655J88FCJ/rKNXqE1jkHmIAoV229LjkoAW19fRLXOgsyk
lPSONzioDpKsJw8tcgFlboQ+s5u3MnOxdj4hIiUobuHE5X/96GQqoVJ8qOWkZ3DjYy7oETAgeaW1vygBJpb
WvKYodRKOayU1VXQNTaDHyiLbZhKqpwTUyRXY0srR4hKso3/rotDS2hf19RM+06h02sa4INlcInqDYZ7QQn
oDR011MWIgPjfz62U2YuK4O/ccqVyYuM8ym8G77McJy9DehPIhuw9wSfmPcberqAEjL19/RxCNs6C7CU/oQ
7GOo8btCc8k0F7MlieweQlsB0ZvB6j3tE/MPAoKAFqrdP9Aw8kb7bIOz95xz1cfhX3XkSG5JX8XRo9UlQYX
imCm1vbhB1RhiayT2fMBCXwXVJSTxNlbyPdoa6hUaCeoWvgkdAg5g1aLZrq6qCjeYuWRx2a6FtjvRZa1mM0
NqGBwLZkkO2WtnakpKbaghL429+jymJiFVDeiJOhuHEDCqUSsYo9KGNjcSE1E5HpKnyrvInPMosRHZeAyLR
cXLx9h/eFvJL0SP9FxMUhRqFA1Jf/aA1K4Nz58xlXrl6TDlMIMCHGv8lwTEwMrscocVylxe8Km/FJYi5eL+
zAidsFeDO3Ce9m3CM5JcnFso4MthcjOXDt+nVcvHSpIiiBv5w48f4XX5wyRJ49a4yIfB6RxogIAo2nz54zf
nhZafzT1/HGk1H/Mn7wTYLxxJdXxPqjywrjaZaPiDCeIfkzJC/py7ZOnTrVefLkyT9DOvN/1S/OiQQ06hAA
AAAASUVORK5CYII=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/images/icon_32x32.png,importbuddy/im
ages/icon_32x32.png
###PACKDATA,FILE_START,/_importbuddy/importbuddy/images/index.php,importbuddy/image
s/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/images/index.php,importbuddy/images/
index.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/images/loading.gif,importbuddy/ima
ges/loading.gif
R0lGODlhEAAQAPQAAObm5iV9ptvf4oy1x87Y3VmZt4GuxCV9pmeguz+LrqbD0LXL1TSFqpu9zSd+pk2SsnO
nwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAw
EAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAAFdyAgAgIJIeWoA
kRCCMdBkKtIHIngyMKsErPBYbADpkSCwhDmQCBethRB6Vj4kFCkQPG4IlWDgrNRIwnO4UKBXDufzQvDMaoS
DBgFb886MiQadgNABAokfCwzBA8LCg0Egl8jAggGAA1kBIA1BAYzlyILczULC2UhACH5BAkKAAAALAAAAAA
QABAAAAV2ICACAmlAZTmOREEIyUEQjLKKxPHADhEvqxlgcGgkGI1DYSVAIAWMx+lwSKkICJ0QsHi9RgKBwn
VTiRQQgwF4I4UFDQQEwi6/3YSGWRRmjhEETAJfIgMFCnAKM0KDV4EEEAQLiF18TAYNXDaSe3x6mjidN1s3I
QAh+QQJCgAAACwAAAAAEAAQAAAFeCAgAgLZDGU5jgRECEUiCI+yioSDwDJyLKsXoHFQxBSHAoAAFBhqtMJg
8DgQBgfrEsJAEAg4YhZIEiwgKtHiMBgtpg3wbUZXGO7kOb1MUKRFMysCChAoggJCIg0GC2aNe4gqQldfL4l
/Ag1AXySJgn5LcoE3QXI3IQAh+QQJCgAAACwAAAAAEAAQAAAFdiAgAgLZNGU5joQhCEjxIssqEo8bC9BRjy
9Ag7GILQ4QEoE0gBAEBcOpcBA0DoxSK/e8LRIHn+i1cK0IyKdg0VAoljYIg+GgnRrwVS/8IAkICyosBIQpB
AMoKy9dImxPhS+GKkFrkX+TigtLlIyKXUF+NjagNiEAIfkECQoAAAAsAAAAABAAEAAABWwgIAICaRhlOY4E
IgjH8R7LKhKHGwsMvb4AAy3WODBIBBKCsYA9TjuhDNDKEVSERezQEL0WrhXucRUQGuik7bFlngzqVW9LMl9
XWvLdjFaJtDFqZ1cEZUB0dUgvL3dgP4WJZn4jkomWNpSTIyEAIfkECQoAAAAsAAAAABAAEAAABX4gIAICuS
xlOY6CIgiD8RrEKgqGOwxwUrMlAoSwIzAGpJpgoSDAGifDY5kopBYDlEpAQBwevxfBtRIUGi8xwWkDNBCIw
mC9Vq0aiQQDQuK+VgQPDXV9hCJjBwcFYU5pLwwHXQcMKSmNLQcIAExlbH8JBwttaX0ABAcNbWVbKyEAIfkE
CQoAAAAsAAAAABAAEAAABXkgIAICSRBlOY7CIghN8zbEKsKoIjdFzZaEgUBHKChMJtRwcWpAWoWnifm6ESA
MhO8lQK0EEAV3rFopIBCEcGwDKAqPh4HUrY4ICHH1dSoTFgcHUiZjBhAJB2AHDykpKAwHAwdzf19KkASIPl
9cDgcnDkdtNwiMJCshACH5BAkKAAAALAAAAAAQABAAAAV3ICACAkkQZTmOAiosiyAoxCq+KPxCNVsSMRgBs
iClWrLTSWFoIQZHl6pleBh6suxKMIhlvzbAwkBWfFWrBQTxNLq2RG2yhSUkDs2b63AYDAoJXAcFRwADeAkJ
DX0AQCsEfAQMDAIPBz0rCgcxky0JRWE1AmwpKyEAIfkECQoAAAAsAAAAABAAEAAABXkgIAICKZzkqJ4nQZx
LqZKv4NqNLKK2/Q4Ek4lFXChsg5ypJjs1II3gEDUSRInEGYAw6B6zM4JhrDAtEosVkLUtHA7RHaHAGJQEjs
ODcEg0FBAFVgkQJQ1pAwcDDw8KcFtSInwJAowCCA6RIwqZAgkPNgVpWndjdyohACH5BAkKAAAALAAAAAAQA
BAAAAV5ICACAimc5KieLEuUKvm2xAKLqDCfC2GaO9eL0LABWTiBYmA06W6kHgvCqEJiAIJiu3gcvgUsscHU
ERm+kaCxyxa+zRPk0SgJEgfIvbAdIAQLCAYlCj4DBw0IBQsMCjIqBAcPAooCBg9pKgsJLwUFOhCZKyQDA3Y
qIQAh+QQJCgAAACwAAAAAEAAQAAAFdSAgAgIpnOSonmxbqiThCrJKEHFbo8JxDDOZYFFb+A41E4H4OhkOip
XwBElYITDAckFEOBgMQ3arkMkUBdxIUGZpEb7kaQBRlASPg0FQQHAbEEMGDSVEAA1QBhAED1E0NgwFAooCD
WljaQIQCE5qMHcNhCkjIQAh+QQJCgAAACwAAAAAEAAQAAAFeSAgAgIpnOSoLgxxvqgKLEcCC65KEAByKK8c
SpA4DAiHQ/DkKhGKh4ZCtCyZGo6F6iYYPAqFgYy02xkSaLEMV34tELyRYNEsCQyHlvWkGCzsPgMCEAY7Cg0
4Uk48LAsDhRA8MVQPEF0GAgqYYwSRlycNcWskCkApIyEAOwAAAAAAAAAAAA==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/images/loading.gif,importbuddy/image
s/loading.gif
###PACKDATA,FILE_START,/_importbuddy/importbuddy/images/loading_large.gif,importbud
dy/images/loading_large.gif
R0lGODlhQgBCAPMAAP///wFmoUyTvHqvzdzp8aDF2/j6+xx2q8La6AAAAAAAAAAAAAAAAAAAAAAAAAAAACH
/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAQg
BCAAAE/xDISau9VBzMu/8VcRTWsVXFYYBsS4knZZYH4d6gYdpyLMErnBAwGFg0pF5lcBBYCMEhR3dAoJqVW
WZUMRB4Uk5KEAUAlRMqGOCFhjsGjbFnnWgliLukXX5b8jUUTEkSWBNMc3tffVIEA4xyFAgCdRiTlWxfFl6M
H0xkITthfF1fayxxTaeDo5oUbW44qaBpCJ0tBrmvprc5GgKnfqWLb7O9xQQIscUamMJpxC4pBYxezxi6w8E
SKU3O1y5eyts/Gqrg4cnKx3jmj+gebevsaQXN8HDJyy3J9OCc+AKycCVQWLZfAwqQK5hPXR17v5oMWMhQEY
KLFwmaQTDgl5OKHP8cQjlGQCHIKftOqlzJsqVLPwJiNokZ86UkjDg5emxyIJHNnDhtCh1KtGjFkt9WAgxZo
GNMny0RFMC4DyJNASZtips6VZkEp1P9qZQ3VZFROGLPfiiZ1mDKHBApwisZFtWkmNSUIlXITifWtv+kTl0I
cUBSlgYEk2tqa9PhZ2/Fyd3UcfIQAwXy+jHQ8R0+zHVHdQZ8A7RmIZwFeN7TWMpS1plJsxmNwnAYqc4Sx8Z
hb/WPyqMynwL9eMrpQwlfTOxQco1gx7IvOPLNmEJmSbbrZf3c0VmRNUVeJZe0Gx9H35x9h6+HXjj35dgJfY
XK8RTd6B7K1vZO/3qFi2MV0cccemkkhJ8w01lA4ARNHegHUgpCBYBUDgbkHzwRAAAh+QQJCgAAACwAAAAAQ
gBCAAAE/xDISau9VAjMu/8VIRTWcVjFYYBsSxFmeVYm4d6gYa5U/O64oGQwsAwOpN5skipWiEKPQXBAVJq0
pYTqnCB8UU5KwJPAVEqK7mCbrLvhyxRZobYlYMD5CYxzvmwUR0lbGxNHcGtWfnoDZYd0EyKLGAgClABHhi8
DmCxjj3o1YYB3Em84UxqmACmEQYghJmipVGRqCKE3BgWPa7RBqreMGGfAQnPDxGomymGqnsuAuh4FI7oG0c
sAuRYGBgTUrQca2ts5BAQIrC8aBwPs5xzg6eEf1lzi8qf06foVvMrtm7fO3g11/+R9SziwoZ54DoPx0CBgQ
AGIEefRWyehwACKGv/gZeywcV3BFwg+hhzJIV3Bbx0IXGSJARxDmjhz6tzJs4NKkBV7SkJAtOi6nyDh8FRn
lChGoVCjSp0aRqY5ljZjplSpNKdRfxQ8Jp3ZE1xTjpkqFuhGteQicFQ1xmWEEGfWXWKfymPK9kO2jxZvLst
W1GBLwI54EiaqzxoRvSPVrYWYsq8byFWxqcOs5vFApoKlEEm8L9va0DVHo06F4HQUA6pxrQZoGIBpyy1gEw
lVuepagK1xg/BIWpLn1wV6ASfrgpcuj5hkPpVOIbi32lV3V+8U9pVVNck5ByPiyeMjiy+Sh3C9L6VyN9qZJ
Eruq7X45seNe0Jfnfkp+u1F4xEjKx6tF006NPFS3BCv2AZgTwTwF1ZX4QnFSzQSSvLeXOrtEwEAIfkECQoA
AAAsAAAAAEIAQgAABP8QyEmrvVQIzLv/FSEU1nFYhWCAbEsRx1aZ5UG4OGgI9ny+plVuCBiQKoORr1I4DCy
DJ7GzEyCYziVlcDhOELRpJ6WiGGJCSVhy7k3aXvGlGgfwbpM1ACabNMtyHGCAEk1xSRRNUmwmV4F7BXhbAo
t7ApIXCJdbMRYGA44uZGkSIptTMG5vJpUsVQOYAIZiihVtpzhVhAAGCKQ5vaQiQVOfGr+PZiYHyLlJu8mMa
I/GodESg7EfKQXIBtrXvp61F2Sg10RgrBwEz7DoLcONH5oa3fBUXKzNc2TW+Fic8OtAQBzAfv8OKgwBbmEO
BHiSRIHo0AWBFMuwPdNgpGFFAJr/li3D1KuAu48YRBIgMHAPRZSeDLSESbOmzZs4oVDaKTFnqZVAgUbhSam
VzYJIIb70ybSp06eBkOb81rJklCg5k7IkheBq0UhTgSpdKeFqAYNOZa58+Q0qBpluAwWDSRWYyXcoe0Gc+a
brRL7XviGAyNLDxSj3bArey+EuWJ+LG3ZF+8YjNW9Ac5m0LEYv4A8GTCaGp5fykNBGPhNZrHpcajOFi8VmM
9i0K9G/EJwVI9VM7dYaR7Pp2Fn3L8GcLxREZtJaaMvLXwz2NFvOReG6Mel+sbvvUtKbmQgvECf0v4K2k+kW
Hnp8eeO+v0f79PhLdz91sts6C5yFfJD3FVIHHnoWkPVRe7+Qt196eSkongXw4fQcCnW41F9F0+ETAQAh+QQ
JCgAAACwAAAAAQgBCAAAE/xDISau9dAjMu/8VISCWcFiFYIBsS4lbJcSUSbg4aMxrfb68nFBSKFg0xhpNgj
gMUM9hZye4URCC6MRUGRxI18NSesEOehIqGjCjUK1pU5KMMSBlVd9LXCmI13QWMGspcwADWgApiTtfgRIEB
YCHAoYEA2AYWHCHThZ2nCyLgG9kIgehp4ksdlmAKZlCfoYAjSpCrWduCJMuBrxAf1K5vY9xwmTExp8mt4Gt
octNzi0FmJMG0csAwBUGs5pZmNtDWAeeGJdZBdrk6SZisZoaA5LuU17n9jpm7feK53Th+FXs3zd//xJOyKb
QGAIriOp1a9giErwYCCJGZEexQ8ZzIP8PGPplDRGtjj7OVUJI4CHKeQhfypxJs6bNDyU11rs5IaTPnBpP0o
TncwzPo0iTKjXWMmbDjPK8IShikmfIlVeslSwwseZHn1G0sitY0yLINGSVEnC6lFVXigbi5iDJ8WW2tWkXT
pWYd9tdvGkjFXlrdy1eDlOLsG34t9hUwgwTyvV2d6Big4efDe6LqylnDt+KfO6cGddmNwRGf5qcxrNp0SHq
DmnqzbBqblxJwR7WklTvuYQf7yJL8IXL2rfT5c7KCUEs2gt/G5waauoa57vk/Ur9L1LXb12x6/0OnVxoQC3
lcQ1xXC93d2stOK8ur3x0u9YriB+ffBl4+Sc5158LMdvJF1Vpbe1HTgQAIfkECQoAAAAsAAAAAEIAQgAABP
8QyEmrvXQMzLv/lTEUliBYxWCAbEsRwlaZpUC4OCgKK0W/pl5uWCBVCgLE7ERBxFDGYUc0UDYFUclvMkhWn
ExpB6ERAgwx8/Zsuk3Qh6z4srNybb4wAKYHIHlzHjAqFEh2ABqFWBRoXoESBAVmEkhZBANuGJeHXTKMmDkp
hC8amUN8pmxPOAaik4ZzSJ4ScIA5VKO0BJOsCGaNtkOtZY9TAgfBUri8xarJYsOpzQAIyMxjVbwG0tN72gV
xGGSl3VJOB+GaogXc5ZoD6I7YGpLuU/DI9Trj7fbUyLlaGPDlD0OrfgUTnkGosAUCNymKEGzYIhI+JghE0d
NH8QKZY+j/8jEikJFeRwwgD4xAOJChwowuT8qcSbOmzQ5FRugscnNCypD5IkYc0VML0JB9iipdyrQptIc9y
RyysC1jETkzU2IxZfVqgYk2yRxNdxUB2KWRUtK65nSX02Lb2NoTETOE1brNwFljse2q25MiQnLUZPWsTBgh
p76QiLegXpXi2GlrnANqCHCz9g3uVu0AZYMZDU8zEFKuZtHdSKP7/Cb0r7/KDPwCaRr010kkWb8hkEq15xy
RDA/czIr3JNWZdcCeYNbUQLlxX/CmCgquWTO5XxzKvnt5ueGprjc5tC0Vb+/TSJ4deNbsyPXG54rXHn4qye
MPa5+Sxp351JZU6SbMGXz+2YWeTOxZ4F4F9/UE4BeKRffWHgJ6EAEAIfkECQoAAAAsAAAAAEIAQgAABP8Qy
EmrvXQMzLv/lTEglmYhgwGuLEWYlbBVg0C0OCim9DwZMlVuCECQKoVRzCdBCAqWApTY2d0oqOkENkkeJ04m
9fIqCCW7M0BGEQnUbu34YvD2rhIugMDGBucdLzxgSltMWW0CAl9zBAhqEnYTBAV4ZAOWBU8WdZYrWZBWY3w
2IYpyK3VSkCiMOU6uboM4dQNmbQSQtI+Jf0Sqt4Acsp45tcHCpr5zqsXJfLOfBbwhzsl7unWbFwhSlddUTq
cclN664IE1iq5k3tTow5qn53Td3/AcCAdP9FXv+JwQWANIEFfBZAIjSRHY7yAGSuoESHDkbWFDhy8U7dsnx
wBFbw7/O2iUgYxOrpDk7qFcybKly5cIK7qDSUHjgY37uumcNo3mBAE3gQaV6LOo0aNI4XkcGFJnFUc62bEU
esCWJYpR/7nMeDPoFCNGTiatBZSogYtHCTBN2sIjWnAi1po08vaavqpy0UBlyFJE15L1wNaF9yKo1ImCjTq
5KWYS3xCDh2gFUOcAqg8G6AK8G3lY2M4sgOzL+/QxQANBSQf+dxZ0m5KiD7jObBqx6gsDqlbgMzqHI7E/av
u+6Yp3Y8zAHVty20ETo7IWXtz2l1zt1Uz72ty8fM2jVrVq1GK5ieSmaxC/4TgKv/zmcqDHAXmHZH23J6CoO
ONLPpG/eAoFZIdEHHz4LEWfJwSY55N30RVD3IL87VFMDdOh9B88EQAAIfkECQoAAAAsAAAAAEIAQgAABP8Q
yEmrvbQUzLv/lVEg1jBYyGCAbEsRw1aZ5UC4OCiq80kZplVuCECQKprjhEZJyZpPIkZUuL1iPeRAKSEIfFI
OQiOUAAtlANMc/Jm4YQsVXuAtwQAYvtiOcwhkTVsZUU5uAlZ+BghpEkkvaB2AiQB1UWZVOWORP3WNOAZflA
BAApc6m41jcDiGh3agqT8Eny4GtK+1LHO6fmxfvbsanL4hJrBhi5nFFV7IIJOfBsF+uCEIphiAI6PMLikC2
VObjN62A+E2H9sj1OYi6cQetxrd5hXYpu5y1vfj9v4CXpgmkBkBK6sQ9CvYYke6LqtGGNknEEa4i+LMHBwx
gqEHdOn/ynG4RTHgJI8oU6pcyXKlkZcwW5Y4gPGiEY4JZc6gyVPAgT06gwodStQjSaFjAGokEDOoz3iUmMJ
UWNKfxZ7iXh6sarTOUzNcZS4sqmgsQxFKRzI1WxDBgZ8Ub0llK7DUW3kD54YtBuOtAFYT9BLFdlfbVjl7W4
jslHEX08Qf3AqAPItqwFA00+o4SLcYZkRSblmeMI2yiDSf98ode1hKgZ8hnmq+wLmRXMoE3o7CDPTD0WYHm
xwAPAEblwE05ajzdZsCcjzJJ7zGY+AtceaPK+im8Fb4ASQ0KXdoHvhtmu6kt5P22VvR6CXRJ6Cf4POS2wPi
p3yqr/17hvjSnVKXGnry+VcefkjNV6AF1gmV2ykKOgIaWRT4FFAEACH5BAkKAAAALAAAAABCAEIAAAT/EMh
Jq720FMy7/5VREJZmIYUBriwlbpUZD2prf289FUM4pLeghIA4jWKwCWFQrCCaQo4BpRsWoBLZBDEgUZa9aI
dwreYoPxfPzMOKLdNjBrhLAgxpCpf+xpy3cll2S1giXX0SU1UST4UIXhhkVXtwgSxECIt/Qng0IW03cZkVZ
JBBXG6dnqGNZgaLNgYEbD+wLKK2iIkDvLm3rbqVtYhxvm9gxhdEs3DJx7BTTJHAwUJgeRdT1NUrZLyHHpiP
ztWGvKMgsk/kwVzDsczcHVOm8vY47PfdXo0E8fo2iBQQwGuIuCf/AHLwRpAgtjvqGin0wItgmXkJJ1oopbG
jx48g/0MCPNhPZIUBAlKqJLjskct6IlE2VBnGpM2bOHN6lJXPHgqYLmQtA+pRJsFHX1r6ywgSzEoBMJbO6j
mRiMwwr3SGo6p1Xtadlla88sdVDIKUq/BJLRsFj0o+ftaaXKLSTVKyOc+mtONiaiWA6NRAjXXggF1detmSK
nxAsQcDAg4IcHyHMeXHKhUTsKzGsQgzKok+5ozmQM0gA0/fyXxjQOFFmw2LiV0P8gG+ILjAKnz67OEtArDI
rCTaBoLCplyfTpnBtIvIv4kV5oucQuEvkmNIvoyhwGvsja0fcFF9AuTB8gwUduNd9fXSfI9PtvdQQmTq45u
rBqBlovoD9bxn3hd3NsVmgYATRFZcVeiJV4IAC5rEnD0RAAAh+QQJCgAAACwAAAAAQgBCAAAE/xDISau9FC
HMu/
+VgRBWUVhEYYBsS4lbhZyy6t6gaFNFPBmmFW4IIJAqhFEN2bNoiB6YcJL0SUy1IxUL7VSnAGmGJgHuyiZt9
wJTA2bg5k+
+Pa/ZGnBS/dxazW5QBgRgEnsvCIUhShMzVmWMLnuFYoJBISaPOV9IkUOOmJc4gyNgBqddg6YFA3Y3pIl3HW
auo5OybCa1Q6SKuCm7s4mKqLgXhBY6moa3xkQpAwPLZVXIzi1A0QWByXvW1xwi2rGbSb7gVNHkLqfn6GHf7
/Lh7vM31kZGxfbYM9ED1EaM0MfPi4l/rf6cGsit4JV/PeqpcojhEMWLGDNq3Agln0cjHP8nIBz50WPIhwIG
pFRJ5qTLlzBjrkEgLaSGhoYKCDjA80DIaCl7qBnQs+cAnAWhpVwZo6eAbTJ1qARYBCnMeDI7DqgHDohVNkQ
PtOSHICjXH2EPbL0IRIDbdRjK8hTw9V3blNMApM1LkYDKpxiI1hIxDy6kVq948u1CIOVZEI0PCHjM6y/lcH
MvV3bccSfdF8FYiDBlmVfmCoK76Bzrl/MNop8pEOBZl0Pj2GgB31tbYSdVCWX5lh2aEgVUWQh4gkk9wS2P4
j/eyjOwc+xONTszOH8+
+V0ByXrAU+D5Yidp3dcMKK7w/beE7BRYynCruQWX+GIrSGYPncfYedQd4AYZeS+Ix9FsAliwX2+4adTYfwQ
+VxtG/V0TAQAh+QQJCgAAACwAAAAAQgBCAAAE/xDISau9FCHMu/
+VgRCWZhGIAa4sJW6VGRdqa39vPSFFWKS3oIRAqqCKO9gEpdwhhRgDSjccxZoAzRNAKPSgHRGBmqP8XDwyb
wsOHa9UmcRwpnSBbU55aU3aC090gHlzYyd9c3hRillyEyJUK0SGLlNggpGCWCBSI5GWUF1bmpErUkRkBqUt
Umpeq6ZHsIQAgjRtp5S0Ll6MUJ2zuD/BF6ilqrvFxzybhZ7JQl29epO60DheXmwWudbX3Dy9xI+T48kEA8M
3qua7rd/wks3x0TUH9wKD9DYiXukSBe4JPCBg3j4+BdINSNekiwCBAg52SJgOUDAEAwxKBCWxo8ePIP9Dwh
tIUmQFigtTFnhIkqBJMyljfnlJs6bNm/Qwajz4hoNDiDRlMgpIMiPNLjEXwoCoD2e/lEO24VzSbuqHLlUJi
Vk34N5MiRjztaMjcEDWPHRS+irBUoBUnisXvu1KcOfGhQUxdL0Vwi6YtSL+tSDw0G8QwmYJESZ4loWBAQIS
g1ksoDEryJIPP6zMy/IjRo8jW6YcaS+YlV9rYW7clbMdgm9BEHYbAnJq2QPYPBxgJy8HjE/icmvaBgFjCrY
pCIg4Qfij5bFxPUz98Mny3sx3iIYX0PWQ4xMeulhOJvk1A9VPRq7gEnk+I+S/ebFgWnl2CQjWz/CI/kCk9k
vE9xIUAQCGd4AF0NGE3m3XnZSZVfpdEwEAIfkECQoAAAAsAAAAAEIAQgAABP8QyEmrvZQQzLv/laFZCGIRi
AGuLCVuFXqmbQ2KNFWGpWr/ANGJ4JvIMghYRgnEvIoSQ7KyQzKD1Sbn6dJAj9Geq3TVhryxnCSLNSHV5gt3
Iv0yUUwpXIsYlDV5RB0iX2xRgjUDBwJXc0B6UFgFZR8GB5eRL1p4PAV7K5aXeQaRNaRQep8soQelcWOeri2
ssnGptbMCB26vIbGJBwOlYL0hpSKTGIqXBcVNKAXJGAiXi5TOWwjRqhUF1QK42EEE24gfBMu84hfkk+EX2u
/OhOv1K8T2Zojf0vmz0NEkFNBVLZg6f3K0RVt4Z+A3hB0WejLHbsBBiF3kYdzIsaPHjyz/CBZcBJKCxJMiC
wooOSHagAIvXzZjSbOmzZvitF3kyIkDuWUkS8JkCGVASgF+WEKL+dINwZcaMeoZegjnlqhWO5DDamuKqXQ8
B1jUaMDhgQJczUgRO9YDgqfXEJYV28+Ct0U7O/60iMHbJyn5KIbhm0tA3jjohL0yoAtcPQN008YQQFnyKra
WgzRGxQ0UnLmKbRCg7JiC0ZlA+qCOgtmG0dJGKMcFgQ52FKo10JWiPCADYQzomMDs7SszlcomBawWm3w15K
SPKa8GIJsCZRdIj4cWN9D2aNvX6RhFJfawFsaMtFcI39Lw5O3OAlYwepD9GuUkzGNDf8W+ZvgefWeBEn8AG
DUbQuhcRGAfxtnD3DoRAAAh+QQJCgAAACwAAAAAQgBCAAAE/xDISau9lBDMu/8VcRSWZhmEAa4shRxHuVVI
2t6gAc+TSaE2nBAwGFgEoxBPApQNPbokpXAQKEMI1a/29FAPWokInFkCwwDgsnuCkSgwREY+QdF7NTTb8jo
skUY9SxpmBFl7EggDawCAGQd3FyhohoyTOANVen2MLXZ6BghcNwZIZBSZgUOGoJV6KwSmaAYFr54Gs6KHQ6
VVnYhMrmxRAraIoaLGpEiRwEx5N5m1J83OTK92v1+Q1ry6vwAIpgLg3dS6yhPbA+nmdqJBHwaZ3OYchtA3B
NP2GJf9AD0YCggMlwRTAwqUIygJXwE6BUzBEDCgGsMtoh4+NFOAXpWLHP8y1oh3YZ9FkGlIolzJsqXLlzgk
wpgIcwKCAjhzPhSApCcMVTBvCtV4sqbRo0iTshFak1WHfQN6WgmaM5+EiFWqUFxIMJROnDN4UuSX1E5OMVy
PGlSKaF+7bqHenogqoKi9fQ/lponIk+zFUAkVthPHc9FLwGA58K17FO9DDBH9PguoMuXjFgSi2u2SWTKvwn
px0MIZ2h/ogLQSlq5QauuW1axJpvac4/QUAW+GKGo2G3ZEwxl4ws5QZE3qzSU9R80NIHO5fUsUMX82/II4d
rcjFXGR8EdxgPMYoyKHCmhmoM1V9/s9iyIait6x1+mIXEjrNeKmw59SMUSR6l5UE1EjM9txN1049RUUlR77
1fFfUw1OEJUF38E0TzURJkLbUR31EwEAOwAAAAAAAAAAAA==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/images/loading_large.gif,importbuddy
/images/loading_large.gif
###PACKDATA,FILE_START,/_importbuddy/importbuddy/images/white-
grad.png,importbuddy/images/white-grad.png
iVBORw0KGgoAAAANSUhEUgAAAAUAAAAeCAYAAADkftS9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgA
ACxIB0t1+/AAAACF0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgNC4w6iYndQAAABZ0RVh0Q3
JlYXRpb24gVGltZQAxMS8xNy8wONpsdXEAAAAlSURBVHicY/z///9/BjTAhC7AwMDAwIJFIXbBoaJ9qLhz+
IUSAIMMOibeSzRBAAAAAElFTkSuQmCC
###PACKDATA,FILE_END,/_importbuddy/importbuddy/images/white-
grad.png,importbuddy/images/white-grad.png
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/ejs.js,importbuddy/js/ejs.js
KGZ1bmN0aW9uKCl7CiAgICAKCnZhciByc3BsaXQgPSBmdW5jdGlvbihzdHJpbmcsIHJlZ2V4KSB7Cgl2YXI
gcmVzdWx0ID0gcmVnZXguZXhlYyhzdHJpbmcpLHJldEFyciA9IG5ldyBBcnJheSgpLCBmaXJzdF9pZHgsIG
xhc3RfaWR4LCBmaXJzdF9iaXQ7Cgl3aGlsZSAocmVzdWx0ICE9IG51bGwpCgl7CgkJZmlyc3RfaWR4ID0gc
mVzdWx0LmluZGV4OyBsYXN0X2lkeCA9IHJlZ2V4Lmxhc3RJbmRleDsKCQlpZiAoKGZpcnN0X2lkeCkgIT0g
MCkKCQl7CgkJCWZpcnN0X2JpdCA9IHN0cmluZy5zdWJzdHJpbmcoMCxmaXJzdF9pZHgpOwoJCQlyZXRBcnI
ucHVzaChzdHJpbmcuc3Vic3RyaW5nKDAsZmlyc3RfaWR4KSk7CgkJCXN0cmluZyA9IHN0cmluZy5zbGljZS
hmaXJzdF9pZHgpOwoJCX0JCQoJCXJldEFyci5wdXNoKHJlc3VsdFswXSk7CgkJc3RyaW5nID0gc3RyaW5nL
nNsaWNlKHJlc3VsdFswXS5sZW5ndGgpOwoJCXJlc3VsdCA9IHJlZ2V4LmV4ZWMoc3RyaW5nKTsJCgl9Cglp
ZiAoISBzdHJpbmcgPT0gJycpCgl7CgkJcmV0QXJyLnB1c2goc3RyaW5nKTsKCX0KCXJldHVybiByZXRBcnI
7Cn0sCmNob3AgPSAgZnVuY3Rpb24oc3RyaW5nKXsKICAgIHJldHVybiBzdHJpbmcuc3Vic3RyKDAsIHN0cm
luZy5sZW5ndGggLSAxKTsKfSwKZXh0ZW5kID0gZnVuY3Rpb24oZCwgcyl7CiAgICBmb3IodmFyIG4gaW4gc
yl7CiAgICAgICAgaWYocy5oYXNPd25Qcm9wZXJ0eShuKSkgIGRbbl0gPSBzW25dCiAgICB9Cn0KCgpFSlMg
PSBmdW5jdGlvbiggb3B0aW9ucyApewoJb3B0aW9ucyA9IHR5cGVvZiBvcHRpb25zID09ICJzdHJpbmciID8
ge3ZpZXc6IG9wdGlvbnN9IDogb3B0aW9ucwogICAgdGhpcy5zZXRfb3B0aW9ucyhvcHRpb25zKTsKCWlmKG
9wdGlvbnMucHJlY29tcGlsZWQpewoJCXRoaXMudGVtcGxhdGUgPSB7fTsKCQl0aGlzLnRlbXBsYXRlLnByb
2Nlc3MgPSBvcHRpb25zLnByZWNvbXBpbGVkOwoJCUVKUy51cGRhdGUodGhpcy5uYW1lLCB0aGlzKTsKCQly
ZXR1cm47Cgl9CiAgICBpZihvcHRpb25zLmVsZW1lbnQpCgl7CgkJaWYodHlwZW9mIG9wdGlvbnMuZWxlbWV
udCA9PSAnc3RyaW5nJyl7CgkJCXZhciBuYW1lID0gb3B0aW9ucy5lbGVtZW50CgkJCW9wdGlvbnMuZWxlbW
VudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAgb3B0aW9ucy5lbGVtZW50ICkKCQkJaWYob3B0aW9uc
y5lbGVtZW50ID09IG51bGwpIHRocm93IG5hbWUrJ2RvZXMgbm90IGV4aXN0IScKCQl9CgkJaWYob3B0aW9u
cy5lbGVtZW50LnZhbHVlKXsKCQkJdGhpcy50ZXh0ID0gb3B0aW9ucy5lbGVtZW50LnZhbHVlCgkJfWVsc2V
7CgkJCXRoaXMudGV4dCA9IG9wdGlvbnMuZWxlbWVudC5pbm5lckhUTUwKCQl9CgkJdGhpcy5uYW1lID0gb3
B0aW9ucy5lbGVtZW50LmlkCgkJdGhpcy50eXBlID0gJ1snCgl9ZWxzZSBpZihvcHRpb25zLnVybCl7CiAgI
CAgICAgb3B0aW9ucy51cmwgPSBFSlMuZW5kRXh0KG9wdGlvbnMudXJsLCB0aGlzLmV4dE1hdGNoKTsKCQl0
aGlzLm5hbWUgPSB0aGlzLm5hbWUgPyB0aGlzLm5hbWUgOiBvcHRpb25zLnVybDsKICAgICAgICB2YXIgdXJ
sID0gb3B0aW9ucy51cmwKICAgICAgICAvL29wdGlvbnMudmlldyA9IG9wdGlvbnMuYWJzb2x1dGVfdXJsIH
x8IG9wdGlvbnMudmlldyB8fCBvcHRpb25zLjsKCQl2YXIgdGVtcGxhdGUgPSBFSlMuZ2V0KHRoaXMubmFtZ
SAvKnVybCovLCB0aGlzLmNhY2hlKTsKCQlpZiAodGVtcGxhdGUpIHJldHVybiB0ZW1wbGF0ZTsKCSAgICBp
ZiAodGVtcGxhdGUgPT0gRUpTLklOVkFMSURfUEFUSCkgcmV0dXJuIG51bGw7CiAgICAgICAgdHJ5ewogICA
gICAgICAgICB0aGlzLnRleHQgPSBFSlMucmVxdWVzdCggdXJsKyh0aGlzLmNhY2hlID8gJycgOiAnPycrTW
F0aC5yYW5kb20oKSApKTsKICAgICAgICB9Y2F0Y2goZSl7fQoKCQlpZih0aGlzLnRleHQgPT0gbnVsbCl7C
iAgICAgICAgICAgIHRocm93KCB7dHlwZTogJ0VKUycsIG1lc3NhZ2U6ICdUaGVyZSBpcyBubyB0ZW1wbGF0
ZSBhdCAnK3VybH0gICk7CgkJfQoJCS8vdGhpcy5uYW1lID0gdXJsOwoJfQoJdmFyIHRlbXBsYXRlID0gbmV
3IEVKUy5Db21waWxlcih0aGlzLnRleHQsIHRoaXMudHlwZSk7CgoJdGVtcGxhdGUuY29tcGlsZShvcHRpb2
5zLCB0aGlzLm5hbWUpOwoKCQoJRUpTLnVwZGF0ZSh0aGlzLm5hbWUsIHRoaXMpOwoJdGhpcy50ZW1wbGF0Z
SA9IHRlbXBsYXRlOwp9OwovKiBAUHJvdG90eXBlKi8KRUpTLnByb3RvdHlwZSA9IHsKCS8qKgoJICogUmVu
ZGVycyBhbiBvYmplY3Qgd2l0aCBleHRyYSB2aWV3IGhlbHBlcnMgYXR0YWNoZWQgdG8gdGhlIHZpZXcuCgk
gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IGRhdGEgdG8gYmUgcmVuZGVyZWQKCSAqIEBwYXJhbSB7T2JqZW
N0fSBleHRyYV9oZWxwZXJzIGFuIG9iamVjdCB3aXRoIGFkZGl0b25hbCB2aWV3IGhlbHBlcnMKCSAqIEByZ
XR1cm4ge1N0cmluZ30gcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBzdHJpbmcKCSAqLwogICAgcmVuZGVy
IDogZnVuY3Rpb24ob2JqZWN0LCBleHRyYV9oZWxwZXJzKXsKICAgICAgICBvYmplY3QgPSBvYmplY3QgfHw
ge307CiAgICAgICAgdGhpcy5fZXh0cmFfaGVscGVycyA9IGV4dHJhX2hlbHBlcnM7CgkJdmFyIHYgPSBuZX
cgRUpTLkhlbHBlcnMob2JqZWN0LCBleHRyYV9oZWxwZXJzIHx8IHt9KTsKCQlyZXR1cm4gdGhpcy50ZW1wb
GF0ZS5wcm9jZXNzLmNhbGwob2JqZWN0LCBvYmplY3Qsdik7Cgl9LAogICAgdXBkYXRlIDogZnVuY3Rpb24o
ZWxlbWVudCwgb3B0aW9ucyl7CiAgICAgICAgaWYodHlwZW9mIGVsZW1lbnQgPT0gJ3N0cmluZycpewoJCQl
lbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudCkKCQl9CgkJaWYob3B0aW9ucyA9PS
BudWxsKXsKCQkJX3RlbXBsYXRlID0gdGhpczsKCQkJcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCl7CgkJCQlFS
lMucHJvdG90eXBlLnVwZGF0ZS5jYWxsKF90ZW1wbGF0ZSwgZWxlbWVudCwgb2JqZWN0KQoJCQl9CgkJfQoJ
CWlmKHR5cGVvZiBvcHRpb25zID09ICdzdHJpbmcnKXsKCQkJcGFyYW1zID0ge30KCQkJcGFyYW1zLnVybCA
9IG9wdGlvbnMKCQkJX3RlbXBsYXRlID0gdGhpczsKCQkJcGFyYW1zLm9uQ29tcGxldGUgPSBmdW5jdGlvbi
hyZXF1ZXN0KXsKCQkJCXZhciBvYmplY3QgPSBldmFsKCByZXF1ZXN0LnJlc3BvbnNlVGV4dCApCgkJCQlFS
lMucHJvdG90eXBlLnVwZGF0ZS5jYWxsKF90ZW1wbGF0ZSwgZWxlbWVudCwgb2JqZWN0KQoJCQl9CgkJCUVK
Uy5hamF4X3JlcXVlc3QocGFyYW1zKQoJCX1lbHNlCgkJewoJCQllbGVtZW50LmlubmVySFRNTCA9IHRoaXM
ucmVuZGVyKG9wdGlvbnMpCgkJfQogICAgfSwKCW91dCA6IGZ1bmN0aW9uKCl7CgkJcmV0dXJuIHRoaXMudG
VtcGxhdGUub3V0OwoJfSwKICAgIC8qKgogICAgICogU2V0cyBvcHRpb25zIG9uIHRoaXMgdmlldyB0byBiZ
SByZW5kZXJlZCB3aXRoLgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMKICAgICAqLwoJc2V0X29w
dGlvbnMgOiBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgICB0aGlzLnR5cGUgPSBvcHRpb25zLnR5cGUgfHw
gRUpTLnR5cGU7CgkJdGhpcy5jYWNoZSA9IG9wdGlvbnMuY2FjaGUgIT0gbnVsbCA/IG9wdGlvbnMuY2FjaG
UgOiBFSlMuY2FjaGU7CgkJdGhpcy50ZXh0ID0gb3B0aW9ucy50ZXh0IHx8IG51bGw7CgkJdGhpcy5uYW1lI
D0gIG9wdGlvbnMubmFtZSB8fCBudWxsOwoJCXRoaXMuZXh0ID0gb3B0aW9ucy5leHQgfHwgRUpTLmV4dDsK
CQl0aGlzLmV4dE1hdGNoID0gbmV3IFJlZ0V4cCh0aGlzLmV4dC5yZXBsYWNlKC9cLi8sICdcLicpKTsKCX0
KfTsKRUpTLmVuZEV4dCA9IGZ1bmN0aW9uKHBhdGgsIG1hdGNoKXsKCWlmKCFwYXRoKSByZXR1cm4gbnVsbD
sKCW1hdGNoLmxhc3RJbmRleCA9IDAKCXJldHVybiBwYXRoKyAobWF0Y2gudGVzdChwYXRoKSA/ICcnIDogd
Ghpcy5leHQgKQp9CgoKCgovKiBAU3RhdGljKi8KRUpTLlNjYW5uZXIgPSBmdW5jdGlvbihzb3VyY2UsIGxl
ZnQsIHJpZ2h0KSB7CgkKICAgIGV4dGVuZCh0aGlzLAogICAgICAgIHtsZWZ0X2RlbGltaXRlcjogCWxlZnQ
gKyclJywKICAgICAgICAgcmlnaHRfZGVsaW1pdGVyOiAJJyUnK3JpZ2h0LAogICAgICAgICBkb3VibGVfbG
VmdDogCQlsZWZ0KyclJScsCiAgICAgICAgIGRvdWJsZV9yaWdodDogIAknJSUnK3JpZ2h0LAogICAgICAgI
CBsZWZ0X2VxdWFsOiAJCWxlZnQrJyU9JywKICAgICAgICAgbGVmdF9jb21tZW50OiAJbGVmdCsnJSMnfSkK
Cgl0aGlzLlNwbGl0UmVnZXhwID0gbGVmdD09J1snID8gLyhcWyUlKXwoJSVcXSl8KFxbJT0pfChcWyUjKXw
oXFslKXwoJVxdXG4pfCglXF0pfChcbikvIDogbmV3IFJlZ0V4cCgnKCcrdGhpcy5kb3VibGVfbGVmdCsnKX
woJSUnK3RoaXMuZG91YmxlX3JpZ2h0KycpfCgnK3RoaXMubGVmdF9lcXVhbCsnKXwoJyt0aGlzLmxlZnRfY
29tbWVudCsnKXwoJyt0aGlzLmxlZnRfZGVsaW1pdGVyKycpfCgnK3RoaXMucmlnaHRfZGVsaW1pdGVyKydc
bil8KCcrdGhpcy5yaWdodF9kZWxpbWl0ZXIrJyl8KFxuKScpIDsKCQoJdGhpcy5zb3VyY2UgPSBzb3VyY2U
7Cgl0aGlzLnN0YWcgPSBudWxsOwoJdGhpcy5saW5lcyA9IDA7Cn07CgpFSlMuU2Nhbm5lci50b190ZXh0ID
0gZnVuY3Rpb24oaW5wdXQpewoJaWYoaW5wdXQgPT0gbnVsbCB8fCBpbnB1dCA9PT0gdW5kZWZpbmVkKQogI
CAgICAgIHJldHVybiAnJzsKICAgIGlmKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkKCQlyZXR1cm4gaW5wdXQu
dG9EYXRlU3RyaW5nKCk7CglpZihpbnB1dC50b1N0cmluZykgCiAgICAgICAgcmV0dXJuIGlucHV0LnRvU3R
yaW5nKCk7CglyZXR1cm4gJyc7Cn07CgpFSlMuU2Nhbm5lci5wcm90b3R5cGUgPSB7CiAgc2NhbjogZnVuY3
Rpb24oYmxvY2spIHsKICAgICBzY2FubGluZSA9IHRoaXMuc2NhbmxpbmU7CgkgcmVnZXggPSB0aGlzLlNwb
Gl0UmVnZXhwOwoJIGlmICghIHRoaXMuc291cmNlID09ICcnKQoJIHsKCSAJIHZhciBzb3VyY2Vfc3BsaXQg
PSByc3BsaXQodGhpcy5zb3VyY2UsIC9cbi8pOwoJIAkgZm9yKHZhciBpPTA7IGk8c291cmNlX3NwbGl0Lmx
lbmd0aDsgaSsrKSB7CgkJIAkgdmFyIGl0ZW0gPSBzb3VyY2Vfc3BsaXRbaV07CgkJCSB0aGlzLnNjYW5saW
5lKGl0ZW0sIHJlZ2V4LCBibG9jayk7CgkJIH0KCSB9CiAgfSwKICBzY2FubGluZTogZnVuY3Rpb24obGluZ
SwgcmVnZXgsIGJsb2NrKSB7CgkgdGhpcy5saW5lcysrOwoJIHZhciBsaW5lX3NwbGl0ID0gcnNwbGl0KGxp
bmUsIHJlZ2V4KTsKIAkgZm9yKHZhciBpPTA7IGk8bGluZV9zcGxpdC5sZW5ndGg7IGkrKykgewoJICAgdmF
yIHRva2VuID0gbGluZV9zcGxpdFtpXTsKICAgICAgIGlmICh0b2tlbiAhPSBudWxsKSB7CgkJICAgCXRyeX
sKCSAgICAgICAgIAlibG9jayh0b2tlbiwgdGhpcyk7CgkJIAl9Y2F0Y2goZSl7CgkJCQl0aHJvdyB7dHlwZ
TogJ0VKUy5TY2FubmVyJywgbGluZTogdGhpcy5saW5lc307CgkJCX0KICAgICAgIH0KCSB9CiAgfQp9OwoK
CkVKUy5CdWZmZXIgPSBmdW5jdGlvbihwcmVfY21kLCBwb3N0X2NtZCkgewoJdGhpcy5saW5lID0gbmV3IEF
ycmF5KCk7Cgl0aGlzLnNjcmlwdCA9ICIiOwoJdGhpcy5wcmVfY21kID0gcHJlX2NtZDsKCXRoaXMucG9zdF
9jbWQgPSBwb3N0X2NtZDsKCWZvciAodmFyIGk9MDsgaTx0aGlzLnByZV9jbWQubGVuZ3RoOyBpKyspCgl7C
gkJdGhpcy5wdXNoKHByZV9jbWRbaV0pOwoJfQp9OwpFSlMuQnVmZmVyLnByb3RvdHlwZSA9IHsKCQogIHB1
c2g6IGZ1bmN0aW9uKGNtZCkgewoJdGhpcy5saW5lLnB1c2goY21kKTsKICB9LAoKICBjcjogZnVuY3Rpb24
oKSB7Cgl0aGlzLnNjcmlwdCA9IHRoaXMuc2NyaXB0ICsgdGhpcy5saW5lLmpvaW4oJzsgJyk7Cgl0aGlzLm
xpbmUgPSBuZXcgQXJyYXkoKTsKCXRoaXMuc2NyaXB0ID0gdGhpcy5zY3JpcHQgKyAiXG4iOwogIH0sCgogI
GNsb3NlOiBmdW5jdGlvbigpIHsKCWlmICh0aGlzLmxpbmUubGVuZ3RoID4gMCkKCXsKCQlmb3IgKHZhciBp
PTA7IGk8dGhpcy5wb3N0X2NtZC5sZW5ndGg7IGkrKyl7CgkJCXRoaXMucHVzaChwcmVfY21kW2ldKTsKCQl
9CgkJdGhpcy5zY3JpcHQgPSB0aGlzLnNjcmlwdCArIHRoaXMubGluZS5qb2luKCc7ICcpOwoJCWxpbmUgPS
BudWxsOwoJfQogIH0KIAkKfTsKCgpFSlMuQ29tcGlsZXIgPSBmdW5jdGlvbihzb3VyY2UsIGxlZnQpIHsKI
CAgIHRoaXMucHJlX2NtZCA9IFsndmFyIF9fX1ZpZXdPID0gW107J107Cgl0aGlzLnBvc3RfY21kID0gbmV3
IEFycmF5KCk7Cgl0aGlzLnNvdXJjZSA9ICcgJzsJCglpZiAoc291cmNlICE9IG51bGwpCgl7CgkJaWYgKHR
5cGVvZiBzb3VyY2UgPT0gJ3N0cmluZycpCgkJewoJCSAgICBzb3VyY2UgPSBzb3VyY2UucmVwbGFjZSgvXH
Jcbi9nLCAiXG4iKTsKICAgICAgICAgICAgc291cmNlID0gc291cmNlLnJlcGxhY2UoL1xyL2csICAgIlxuI
ik7CgkJCXRoaXMuc291cmNlID0gc291cmNlOwoJCX1lbHNlIGlmIChzb3VyY2UuaW5uZXJIVE1MKXsKCQkJ
dGhpcy5zb3VyY2UgPSBzb3VyY2UuaW5uZXJIVE1MOwoJCX0gCgkJaWYgKHR5cGVvZiB0aGlzLnNvdXJjZSA
hPSAnc3RyaW5nJyl7CgkJCXRoaXMuc291cmNlID0gIiI7CgkJfQoJfQoJbGVmdCA9IGxlZnQgfHwgJzwnOw
oJdmFyIHJpZ2h0ID0gJz4nOwoJc3dpdGNoKGxlZnQpIHsKCQljYXNlICdbJzoKCQkJcmlnaHQgPSAnXSc7C
gkJCWJyZWFrOwoJCWNhc2UgJzwnOgoJCQlicmVhazsKCQlkZWZhdWx0OgoJCQl0aHJvdyBsZWZ0KycgaXMg
bm90IGEgc3VwcG9ydGVkIGRlbGltaW5hdG9yJzsKCQkJYnJlYWs7Cgl9Cgl0aGlzLnNjYW5uZXIgPSBuZXc
gRUpTLlNjYW5uZXIodGhpcy5zb3VyY2UsIGxlZnQsIHJpZ2h0KTsKCXRoaXMub3V0ID0gJyc7Cn07CkVKUy
5Db21waWxlci5wcm90b3R5cGUgPSB7CiAgY29tcGlsZTogZnVuY3Rpb24ob3B0aW9ucywgbmFtZSkgewogI
AlvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKCXRoaXMub3V0ID0gJyc7Cgl2YXIgcHV0X2NtZCA9ICJfX19W
aWV3Ty5wdXNoKCI7Cgl2YXIgaW5zZXJ0X2NtZCA9IHB1dF9jbWQ7Cgl2YXIgYnVmZiA9IG5ldyBFSlMuQnV
mZmVyKHRoaXMucHJlX2NtZCwgdGhpcy5wb3N0X2NtZCk7CQkKCXZhciBjb250ZW50ID0gJyc7Cgl2YXIgY2
xlYW4gPSBmdW5jdGlvbihjb250ZW50KQoJewoJICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoL1xcL
2csICdcXFxcJyk7CiAgICAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgvXG4vZywgJ1xcbicpOwog
ICAgICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UoLyIvZywgICdcXCInKTsKICAgICAgICByZXR1cm4
gY29udGVudDsKCX07Cgl0aGlzLnNjYW5uZXIuc2NhbihmdW5jdGlvbih0b2tlbiwgc2Nhbm5lcikgewoJCW
lmIChzY2FubmVyLnN0YWcgPT0gbnVsbCkKCQl7CgkJCXN3aXRjaCh0b2tlbikgewoJCQkJY2FzZSAnXG4nO
goJCQkJCWNvbnRlbnQgPSBjb250ZW50ICsgIlxuIjsKCQkJCQlidWZmLnB1c2gocHV0X2NtZCArICciJyAr
IGNsZWFuKGNvbnRlbnQpICsgJyIpOycpOwoJCQk
JCWJ1ZmYuY3IoKTsKCQkJCQljb250ZW50ID0gJyc7CgkJCQkJYnJlYWs7CgkJCQljYXNlIHNjYW5uZXIubG
VmdF9kZWxpbWl0ZXI6CgkJCQljYXNlIHNjYW5uZXIubGVmdF9lcXVhbDoKCQkJCWNhc2Ugc2Nhbm5lci5sZ
WZ0X2NvbW1lbnQ6CgkJCQkJc2Nhbm5lci5zdGFnID0gdG9rZW47CgkJCQkJaWYgKGNvbnRlbnQubGVuZ3Ro
ID4gMCkKCQkJCQl7CgkJCQkJCWJ1ZmYucHVzaChwdXRfY21kICsgJyInICsgY2xlYW4oY29udGVudCkgKyA
nIiknKTsKCQkJCQl9CgkJCQkJY29udGVudCA9ICcnOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSBzY2FubmVyLm
RvdWJsZV9sZWZ0OgoJCQkJCWNvbnRlbnQgPSBjb250ZW50ICsgc2Nhbm5lci5sZWZ0X2RlbGltaXRlcjsKC
QkJCQlicmVhazsKCQkJCWRlZmF1bHQ6CgkJCQkJY29udGVudCA9IGNvbnRlbnQgKyB0b2tlbjsKCQkJCQli
cmVhazsKCQkJfQoJCX0KCQllbHNlIHsKCQkJc3dpdGNoKHRva2VuKSB7CgkJCQljYXNlIHNjYW5uZXIucml
naHRfZGVsaW1pdGVyOgoJCQkJCXN3aXRjaChzY2FubmVyLnN0YWcpIHsKCQkJCQkJY2FzZSBzY2FubmVyLm
xlZnRfZGVsaW1pdGVyOgoJCQkJCQkJaWYgKGNvbnRlbnRbY29udGVudC5sZW5ndGggLSAxXSA9PSAnXG4nK
QoJCQkJCQkJewoJCQkJCQkJCWNvbnRlbnQgPSBjaG9wKGNvbnRlbnQpOwoJCQkJCQkJCWJ1ZmYucHVzaChj
b250ZW50KTsKCQkJCQkJCQlidWZmLmNyKCk7CgkJCQkJCQl9CgkJCQkJCQllbHNlIHsKCQkJCQkJCQlidWZ
mLnB1c2goY29udGVudCk7CgkJCQkJCQl9CgkJCQkJCQlicmVhazsKCQkJCQkJY2FzZSBzY2FubmVyLmxlZn
RfZXF1YWw6CgkJCQkJCQlidWZmLnB1c2goaW5zZXJ0X2NtZCArICIoRUpTLlNjYW5uZXIudG9fdGV4dCgiI
CsgY29udGVudCArICIpKSkiKTsKCQkJCQkJCWJyZWFrOwoJCQkJCX0KCQkJCQlzY2FubmVyLnN0YWcgPSBu
dWxsOwoJCQkJCWNvbnRlbnQgPSAnJzsKCQkJCQlicmVhazsKCQkJCWNhc2Ugc2Nhbm5lci5kb3VibGVfcml
naHQ6CgkJCQkJY29udGVudCA9IGNvbnRlbnQgKyBzY2FubmVyLnJpZ2h0X2RlbGltaXRlcjsKCQkJCQlicm
VhazsKCQkJCWRlZmF1bHQ6CgkJCQkJY29udGVudCA9IGNvbnRlbnQgKyB0b2tlbjsKCQkJCQlicmVhazsKC
QkJfQoJCX0KCX0pOwoJaWYgKGNvbnRlbnQubGVuZ3RoID4gMCkKCXsKCQkvLyBDaG91bGQgYmUgY29udGVu
dC5kdW1wIGluIFJ1YnkKCQlidWZmLnB1c2gocHV0X2NtZCArICciJyArIGNsZWFuKGNvbnRlbnQpICsgJyI
pJyk7Cgl9CglidWZmLmNsb3NlKCk7Cgl0aGlzLm91dCA9IGJ1ZmYuc2NyaXB0ICsgIjsiOwoJdmFyIHRvX2
JlX2V2YWxlZCA9ICcvKicrbmFtZSsnKi90aGlzLnByb2Nlc3MgPSBmdW5jdGlvbihfQ09OVEVYVCxfVklFV
ykgeyB0cnkgeyB3aXRoKF9WSUVXKSB7IHdpdGggKF9DT05URVhUKSB7Jyt0aGlzLm91dCsiIHJldHVybiBf
X19WaWV3Ty5qb2luKCcnKTt9fX1jYXRjaChlKXtlLmxpbmVOdW1iZXI9bnVsbDt0aHJvdyBlO319OyI7Cgk
KCXRyeXsKCQlldmFsKHRvX2JlX2V2YWxlZCk7Cgl9Y2F0Y2goZSl7CgkJaWYodHlwZW9mIEpTTElOVCAhPS
AndW5kZWZpbmVkJyl7CgkJCUpTTElOVCh0aGlzLm91dCk7CgkJCWZvcih2YXIgaSA9IDA7IGkgPCBKU0xJT
lQuZXJyb3JzLmxlbmd0aDsgaSsrKXsKCQkJCXZhciBlcnJvciA9IEpTTElOVC5lcnJvcnNbaV07CgkJCQlp
ZihlcnJvci5yZWFzb24gIT0gIlVubmVjZXNzYXJ5IHNlbWljb2xvbi4iKXsKCQkJCQllcnJvci5saW5lKys
7CgkJCQkJdmFyIGUgPSBuZXcgRXJyb3IoKTsKCQkJCQllLmxpbmVOdW1iZXIgPSBlcnJvci5saW5lOwoJCQ
kJCWUubWVzc2FnZSA9IGVycm9yLnJlYXNvbjsKCQkJCQlpZihvcHRpb25zLnZpZXcpCgkJCQkJCWUuZmlsZ
U5hbWUgPSBvcHRpb25zLnZpZXc7CgkJCQkJdGhyb3cgZTsKCQkJCX0KCQkJfQoJCX1lbHNlewoJCQl0aHJv
dyBlOwoJCX0KCX0KICB9Cn07CgoKLy90eXBlLCBjYWNoZSwgZm9sZGVyCi8qKgogKiBTZXRzIGRlZmF1bHQ
gb3B0aW9ucyBmb3IgYWxsIHZpZXdzCiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIFNldCB2aWV3IHdpdG
ggdGhlIGZvbGxvd2luZyBvcHRpb25zCiAqIDx0YWJsZSBjbGFzcz0ib3B0aW9ucyI+CgkJCQk8dGJvZHk+P
HRyPjx0aD5PcHRpb248L3RoPjx0aD5EZWZhdWx0PC90aD48dGg+RGVzY3JpcHRpb248L3RoPjwvdHI+CgkJ
CQk8dHI+CgkJCQkJPHRkPnR5cGU8L3RkPgoJCQkJCTx0ZD4nPCc8L3RkPgoJCQkJCTx0ZD50eXBlIG9mIG1
hZ2ljIHRhZ3MuICBPcHRpb25zIGFyZSAnJmx0Oycgb3IgJ1snCgkJCQkJPC90ZD4KCQkJCTwvdHI+CgkJCQ
k8dHI+CgkJCQkJPHRkPmNhY2hlPC90ZD4KCQkJCQk8dGQ+dHJ1ZSBpbiBwcm9kdWN0aW9uIG1vZGUsIGZhb
HNlIGluIG90aGVyIG1vZGVzPC90ZD4KCQkJCQk8dGQ+dHJ1ZSB0byBjYWNoZSB0ZW1wbGF0ZS4KCQkJCQk8
L3RkPgoJCQkJPC90cj4KCTwvdGJvZHk+PC90YWJsZT4KICogCiAqLwpFSlMuY29uZmlnID0gZnVuY3Rpb24
ob3B0aW9ucyl7CglFSlMuY2FjaGUgPSBvcHRpb25zLmNhY2hlICE9IG51bGwgPyBvcHRpb25zLmNhY2hlID
ogRUpTLmNhY2hlOwoJRUpTLnR5cGUgPSBvcHRpb25zLnR5cGUgIT0gbnVsbCA/IG9wdGlvbnMudHlwZSA6I
EVKUy50eXBlOwoJRUpTLmV4dCA9IG9wdGlvbnMuZXh0ICE9IG51bGwgPyBvcHRpb25zLmV4dCA6IEVKUy5l
eHQ7CgkKCXZhciB0ZW1wbGF0ZXNfZGlyZWN0b3J5ID0gRUpTLnRlbXBsYXRlc19kaXJlY3RvcnkgfHwge30
7IC8vbmljZSBhbmQgcHJpdmF0ZSBjb250YWluZXIKCUVKUy50ZW1wbGF0ZXNfZGlyZWN0b3J5ID0gdGVtcG
xhdGVzX2RpcmVjdG9yeTsKCUVKUy5nZXQgPSBmdW5jdGlvbihwYXRoLCBjYWNoZSl7CgkJaWYoY2FjaGUgP
T0gZmFsc2UpIHJldHVybiBudWxsOwoJCWlmKHRlbXBsYXRlc19kaXJlY3RvcnlbcGF0aF0pIHJldHVybiB0
ZW1wbGF0ZXNfZGlyZWN0b3J5W3BhdGhdOwogIAkJcmV0dXJuIG51bGw7Cgl9OwoJCglFSlMudXBkYXRlID0
gZnVuY3Rpb24ocGF0aCwgdGVtcGxhdGUpIHsgCgkJaWYocGF0aCA9PSBudWxsKSByZXR1cm47CgkJdGVtcG
xhdGVzX2RpcmVjdG9yeVtwYXRoXSA9IHRlbXBsYXRlIDsKCX07CgkKCUVKUy5JTlZBTElEX1BBVEggPSAgL
TE7Cn07CkVKUy5jb25maWcoIHtjYWNoZTogdHJ1ZSwgdHlwZTogJzwnLCBleHQ6ICcuaHRtJyB9ICk7CgoK
Ci8qKgogKiBAY29uc3RydWN0b3IKICogQnkgYWRkaW5nIGZ1bmN0aW9ucyB0byBFSlMuSGVscGVycy5wcm9
0b3R5cGUsIHRob3NlIGZ1bmN0aW9ucyB3aWxsIGJlIGF2YWlsYWJsZSBpbiB0aGUgCiAqIHZpZXdzLgogKi
BAaW5pdCBDcmVhdGVzIGEgdmlldyBoZWxwZXIuICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbnRlcm5hb
Gx5LiAgWW91IHNob3VsZCBuZXZlciBjYWxsIGl0LgogKiBAcGFyYW0ge09iamVjdH0gZGF0YSBUaGUgZGF0
YSBwYXNzZWQgdG8gdGhlIHZpZXcuICBIZWxwZXJzIGhhdmUgYWNjZXNzIHRvIGl0IHRocm91Z2ggdGhpcy5
fZGF0YQogKi8KRUpTLkhlbHBlcnMgPSBmdW5jdGlvbihkYXRhLCBleHRyYXMpewoJdGhpcy5fZGF0YSA9IG
RhdGE7CiAgICB0aGlzLl9leHRyYXMgPSBleHRyYXM7CiAgICBleHRlbmQodGhpcywgZXh0cmFzICk7Cn07C
i8qIEBwcm90b3R5cGUqLwpFSlMuSGVscGVycy5wcm90b3R5cGUgPSB7CiAgICAvKioKICAgICAqIFJlbmRl
cnMgYSBuZXcgdmlldy4gIElmIGRhdGEgaXMgcGFzc2VkIGluLCB1c2VzIHRoYXQgdG8gcmVuZGVyIHRoZSB
2aWV3LgogICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgc3RhbmRhcmQgb3B0aW9ucyBwYXNzZWQgdG
8gYSBuZXcgdmlldy4KICAgICAqIEBwYXJhbSB7b3B0aW9uYWw6T2JqZWN0fSBkYXRhCiAgICAgKiBAcmV0d
XJuIHtTdHJpbmd9CiAgICAgKi8KCXZpZXc6IGZ1bmN0aW9uKG9wdGlvbnMsIGRhdGEsIGhlbHBlcnMpewog
ICAgICAgIGlmKCFoZWxwZXJzKSBoZWxwZXJzID0gdGhpcy5fZXh0cmFzCgkJaWYoIWRhdGEpIGRhdGEgPSB
0aGlzLl9kYXRhOwoJCXJldHVybiBuZXcgRUpTKG9wdGlvbnMpLnJlbmRlcihkYXRhLCBoZWxwZXJzKTsKCX
0sCiAgICAvKioKICAgICAqIEZvciBhIGdpdmVuIHZhbHVlLCB0cmllcyB0byBjcmVhdGUgYSBodW1hbiByZ
XByZXNlbnRhdGlvbi4KICAgICAqIEBwYXJhbSB7T2JqZWN0fSBpbnB1dCB0aGUgdmFsdWUgYmVpbmcgY29u
dmVydGVkLgogICAgICogQHBhcmFtIHtPYmplY3R9IG51bGxfdGV4dCB3aGF0IHRleHQgc2hvdWxkIGJlIHB
yZXNlbnQgaWYgaW5wdXQgPT0gbnVsbCBvciB1bmRlZmluZWQsIGRlZmF1bHRzIHRvICcnCiAgICAgKiBAcm
V0dXJuIHtTdHJpbmd9IAogICAgICovCgl0b190ZXh0OiBmdW5jdGlvbihpbnB1dCwgbnVsbF90ZXh0KSB7C
gkgICAgaWYoaW5wdXQgPT0gbnVsbCB8fCBpbnB1dCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gbnVsbF90ZXh0
IHx8ICcnOwoJICAgIGlmKGlucHV0IGluc3RhbmNlb2YgRGF0ZSkgcmV0dXJuIGlucHV0LnRvRGF0ZVN0cml
uZygpOwoJCWlmKGlucHV0LnRvU3RyaW5nKSByZXR1cm4gaW5wdXQudG9TdHJpbmcoKS5yZXBsYWNlKC9cbi
9nLCAnPGJyIC8+JykucmVwbGFjZSgvJycvZywgIiciKTsKCQlyZXR1cm4gJyc7Cgl9Cn07CiAgICBFSlMub
mV3UmVxdWVzdCA9IGZ1bmN0aW9uKCl7CgkgICB2YXIgZmFjdG9yaWVzID0gW2Z1bmN0aW9uKCkgeyByZXR1
cm4gbmV3IEFjdGl2ZVhPYmplY3QoIk1zeG1sMi5YTUxIVFRQIik7IH0sZnVuY3Rpb24oKSB7IHJldHVybiB
uZXcgWE1MSHR0cFJlcXVlc3QoKTsgfSxmdW5jdGlvbigpIHsgcmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KC
JNaWNyb3NvZnQuWE1MSFRUUCIpOyB9XTsKCSAgIGZvcih2YXIgaSA9IDA7IGkgPCBmYWN0b3JpZXMubGVuZ
3RoOyBpKyspIHsKCSAgICAgICAgdHJ5IHsKCSAgICAgICAgICAgIHZhciByZXF1ZXN0ID0gZmFjdG9yaWVz
W2ldKCk7CgkgICAgICAgICAgICBpZiAocmVxdWVzdCAhPSBudWxsKSAgcmV0dXJuIHJlcXVlc3Q7CgkgICA
gICAgIH0KCSAgICAgICAgY2F0Y2goZSkgeyBjb250aW51ZTt9CgkgICB9Cgl9CgkKCUVKUy5yZXF1ZXN0ID
0gZnVuY3Rpb24ocGF0aCl7CgkgICB2YXIgcmVxdWVzdCA9IG5ldyBFSlMubmV3UmVxdWVzdCgpCgkgICByZ
XF1ZXN0Lm9wZW4oIkdFVCIsIHBhdGgsIGZhbHNlKTsKCSAgIAoJICAgdHJ5e3JlcXVlc3Quc2VuZChudWxs
KTt9CgkgICBjYXRjaChlKXtyZXR1cm4gbnVsbDt9CgkgICAKCSAgIGlmICggcmVxdWVzdC5zdGF0dXMgPT0
gNDA0IHx8IHJlcXVlc3Quc3RhdHVzID09IDIgfHwocmVxdWVzdC5zdGF0dXMgPT0gMCAmJiByZXF1ZXN0Ln
Jlc3BvbnNlVGV4dCA9PSAnJykgKSByZXR1cm4gbnVsbDsKCSAgIAoJICAgcmV0dXJuIHJlcXVlc3QucmVzc
G9uc2VUZXh0Cgl9CglFSlMuYWpheF9yZXF1ZXN0ID0gZnVuY3Rpb24ocGFyYW1zKXsKCQlwYXJhbXMubWV0
aG9kID0gKCBwYXJhbXMubWV0aG9kID8gcGFyYW1zLm1ldGhvZCA6ICdHRVQnKQoJCQoJCXZhciByZXF1ZXN
0ID0gbmV3IEVKUy5uZXdSZXF1ZXN0KCk7CgkJcmVxdWVzdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdG
lvbigpewoJCQlpZihyZXF1ZXN0LnJlYWR5U3RhdGUgPT0gNCl7CgkJCQlpZihyZXF1ZXN0LnN0YXR1cyA9P
SAyMDApewoJCQkJCXBhcmFtcy5vbkNvbXBsZXRlKHJlcXVlc3QpCgkJCQl9ZWxzZQoJCQkJewoJCQkJCXBh
cmFtcy5vbkNvbXBsZXRlKHJlcXVlc3QpCgkJCQl9CgkJCX0KCQl9CgkJcmVxdWVzdC5vcGVuKHBhcmFtcy5
tZXRob2QsIHBhcmFtcy51cmwpCgkJcmVxdWVzdC5zZW5kKG51bGwpCgl9CgoKfSkoKTs=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/ejs.js,importbuddy/js/ejs.js
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/importbuddy.js,importbuddy/js/i
mportbuddy.js
alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKCWpRdWVyeSh3aW5kb3cpLmxvYWQoZnVuY3R
pb24oKXsKCQlpZiAoIGpRdWVyeSgnI3BiX2ltcG9ydGJ1ZGR5X3dvcmtpbmcnKS5pcygnOnZpc2libGUnKS
ApIHsKCQkJalF1ZXJ5KCcjcGJfaW1wb3J0YnVkZHlfd29ya2luZycpLnJlcGxhY2VXaXRoKAoJCQkJalF1Z
XJ5KCcjcGJfaW1wb3J0YnVkZHlfYmxhbmthbGVydCcpLmh0bWwoKS5yZXBsYWNlKCAnI1RJVExFIycsICdQ
SFAgVGltZW91dCBvciBGYXRhbCBFcnJvciBPY2N1cnJlZCcgKS5yZXBsYWNlKCAnI01FU1NBR0UjJywgJ1R
oZSBwYWdlIGRpZCBub3QgZmluaXNoIGxvYWRpbmcgYXMgZXhwZWN0ZWQuICBUaGUgbW9zdCBjb21tb24gY2
F1c2UgZm9yIHRoaXMgaXMgdGhlIFBIUCBwcm9jZXNzIHRha2luZyBtb3JlIHRpbWUgdGhhbiBpdCBoYXMgY
mVlbiBhbGxvd2VkIGJ5IHlvdXIgaG9zdCAocGhwLmluaSBzZXR0aW5nIDxpPm1heF9leGVjdXRpb25fdGlt
ZTwvaT4pLiBJZiBhIFBIUCBlcnJvciBpcyBkaXNwbGF5ZWQgYWJvdmUgdGhpcyBjYW4gYWxzbyBjYXVzZSB
0aGlzIGVycm9yLicgKQoJCQkpOwoJCX0KCX0pOwp9KTsKCmZ1bmN0aW9uIGxvYWRUb29sdGlwcygpIHsKCW
pRdWVyeSgnLnBsdWdpbmJ1ZGR5X3RpcCcpLnRvb2x0aXAoewoJCXRyYWNrOiB0cnVlLAoJCWRlbGF5OiAwL
AoJCXNob3dVUkw6IGZhbHNlLAoJCXNob3dCb2R5OiAiIC0gIiwKCQlmYWRlOiAyNTAKCX0pOwp9CgpqUXVl
cnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJbG9hZFRvb2x0aXBzKCk7CgkKCWpRdWVyeSgnLnR
vZ2dsZScpLmNsaWNrKGZ1bmN0aW9uKGUpIHsKCQlqUXVlcnkoICcjdG9nZ2xlLScgKyBqUXVlcnkodGhpcy
kuYXR0cignaWQnKSApLnNsaWRlVG9nZ2xlKCk7Cgl9KTsKCQoJalF1ZXJ5KCcub3B0aW9uX3RvZ2dsZScpL
mNoYW5nZShmdW5jdGlvbihlKSB7CgkJaWYgKGpRdWVyeSh0aGlzKS5hdHRyKCdjaGVja2VkJykpIHsKCQkJ
alF1ZXJ5KCcuJyArIGpRdWVyeSh0aGlzKS5hdHRyKCdpZCcpICsgJ190b2dnbGUnICkuc2xpZGVUb2dnbGU
oKTsKCQl9IGVsc2UgewoJCQlqUXVlcnkoJy4nICsgalF1ZXJ5KHRoaXMpLmF0dHIoJ2lkJykgKyAnX3RvZ2
dsZScgKS5zbGlkZVRvZ2dsZSgpOwoJCX0KCX0pOwoJCgkKfSk7CgpmdW5jdGlvbiBiYWNrdXBidWRkeV9zY
XZlTG9nQXNGaWxlKCkgewoJdmFyIHRleHRGaWxlQXNCbG9iID0gbmV3IEJsb2IoWyBqUXVlcnkoICcjYmFj
a3VwYnVkZHlfbWVzc2FnZXMnICkudGV4dCgpIF0sIHt0eXBlOid0ZXh0L3BsYWluJ30pOwoJdmFyIGZpbGV
OYW1lVG9TYXZlQXMgPSAnaW1wb3J0YnVkZHkudHh0JzsKCgl2YXIgZG93bmxvYWRMaW5rID0gZG9jdW1lbn
QuY3JlYXRlRWxlbWVudCgiYSIpOwoJZG93bmxvYWRMaW5rLmRvd25sb2FkID0gZmlsZU5hbWVUb1NhdmVBc
zsKCWRvd25sb2FkTGluay5pbm5lckhUTUwgPSAiRG93bmxvYWQgRmlsZSI7Cglkb3dubG9hZExpbmsuc2V0
QXR0cmlidXRlKCd0YXJnZXQnLCAnX25ldycpOyAvLyBTYWZhcmkgbG9hZHMgdGhpcyBsaW5rIGFzIGEgcGF
nZSBpbnN0ZWFkIG9mIGRpcmVjdGx5IGRvd25sb2FkaW5nLgoJZG93bmxvYWRMaW5rLmhyZWYgPSB3aW5kb3
cuVVJMLmNyZWF0ZU9iamVjdFVSTCh0ZXh0RmlsZUFzQmxvYik7Cglkb3dubG9hZExpbmsub25jbGljayA9I
GJhY2t1cGJ1ZGR5X2Rlc3Ryb3lDbGlja2VkRWxlbWVudDsKCWRvd25sb2FkTGluay5zdHlsZS5kaXNwbGF5
ID0gIm5vbmUiOwoJZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb3dubG9hZExpbmspOwoKCWRvd25sb2F
kTGluay5jbGljaygpOwp9CgpmdW5jdGlvbiBiYWNrdXBidWRkeV9kZXN0cm95Q2xpY2tlZEVsZW1lbnQoZX
ZlbnQpIHsKICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZXZlbnQudGFyZ2V0KTsKfQ==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/importbuddy.js,importbuddy/js/imp
ortbuddy.js
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/index.php,importbuddy/js/index.
php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/index.php,importbuddy/js/index.ph
p
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/jquery.js,importbuddy/js/jquery
.js
LyohIGpRdWVyeSB2MS4xMS4wIHwgKGMpIDIwMDUsIDIwMTQgalF1ZXJ5IEZvdW5kYXRpb24sIEluYy4gfCB
qcXVlcnkub3JnL2xpY2Vuc2UgKi8KIWZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBtb2R1bGUmJi
JvYmplY3QiPT10eXBlb2YgbW9kdWxlLmV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9YS5kb2N1bWVudD9iKGEsI
TApOmZ1bmN0aW9uKGEpe2lmKCFhLmRvY3VtZW50KXRocm93IG5ldyBFcnJvcigialF1ZXJ5IHJlcXVpcmVz
IGEgd2luZG93IHdpdGggYSBkb2N1bWVudCIpO3JldHVybiBiKGEpfTpiKGEpfSgidW5kZWZpbmVkIiE9dHl
wZW9mIHdpbmRvdz93aW5kb3c6dGhpcyxmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQ9Yy5zbGljZSxlPWMuY2
9uY2F0LGY9Yy5wdXNoLGc9Yy5pbmRleE9mLGg9e30saT1oLnRvU3RyaW5nLGo9aC5oYXNPd25Qcm9wZXJ0e
SxrPSIiLnRyaW0sbD17fSxtPSIxLjExLjAiLG49ZnVuY3Rpb24oYSxiKXtyZXR1cm4gbmV3IG4uZm4uaW5p
dChhLGIpfSxvPS9eW1xzXHVGRUZGXHhBMF0rfFtcc1x1RkVGRlx4QTBdKyQvZyxwPS9eLW1zLS8scT0vLSh
bXGRhLXpdKS9naSxyPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGIudG9VcHBlckNhc2UoKX07bi5mbj1uLnByb3
RvdHlwZT17anF1ZXJ5Om0sY29uc3RydWN0b3I6bixzZWxlY3RvcjoiIixsZW5ndGg6MCx0b0FycmF5OmZ1b
mN0aW9uKCl7cmV0dXJuIGQuY2FsbCh0aGlzKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hPzA+
YT90aGlzW2ErdGhpcy5sZW5ndGhdOnRoaXNbYV06ZC5jYWxsKHRoaXMpfSxwdXNoU3RhY2s6ZnVuY3Rpb24
oYSl7dmFyIGI9bi5tZXJnZSh0aGlzLmNvbnN0cnVjdG9yKCksYSk7cmV0dXJuIGIucHJldk9iamVjdD10aG
lzLGIuY29udGV4dD10aGlzLmNvbnRleHQsYn0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBuLmVhY2god
GhpcyxhLGIpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG4ubWFwKHRoaXMsZnVu
Y3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGh
pcy5wdXNoU3RhY2soZC5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybi
B0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxlcTpmdW5jdGlvbihhK
Xt2YXIgYj10aGlzLmxlbmd0aCxjPSthKygwPmE/YjowKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soYz49MCYm
Yj5jP1t0aGlzW2NdXTpbXSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fHRoaXM
uY29uc3RydWN0b3IobnVsbCl9LHB1c2g6Zixzb3J0OmMuc29ydCxzcGxpY2U6Yy5zcGxpY2V9LG4uZXh0ZW
5kPW4uZm4uZXh0ZW5kPWZ1bmN0aW9uKCl7dmFyIGEsYixjLGQsZSxmLGc9YXJndW1lbnRzWzBdfHx7fSxoP
TEsaT1hcmd1bWVudHMubGVuZ3RoLGo9ITE7Zm9yKCJib29sZWFuIj09dHlwZW9mIGcmJihqPWcsZz1hcmd1
bWVudHNbaF18fHt9LGgrKyksIm9iamVjdCI9PXR5cGVvZiBnfHxuLmlzRnVuY3Rpb24oZyl8fChnPXt9KSx
oPT09aSYmKGc9dGhpcyxoLS0pO2k+aDtoKyspaWYobnVsbCE9KGU9YXJndW1lbnRzW2hdKSlmb3IoZCBpbi
BlKWE9Z1tkXSxjPWVbZF0sZyE9PWMmJihqJiZjJiYobi5pc1BsYWluT2JqZWN0KGMpfHwoYj1uLmlzQXJyY
XkoYykpKT8oYj8oYj0hMSxmPWEmJm4uaXNBcnJheShhKT9hOltdKTpmPWEmJm4uaXNQbGFpbk9iamVjdChh
KT9hOnt9LGdbZF09bi5leHRlbmQoaixmLGMpKTp2b2lkIDAhPT1jJiYoZ1tkXT1jKSk7cmV0dXJuIGd9LG4
uZXh0ZW5kKHtleHBhbmRvOiJqUXVlcnkiKyhtK01hdGgucmFuZG9tKCkpLnJlcGxhY2UoL1xEL2csIiIpLG
lzUmVhZHk6ITAsZXJyb3I6ZnVuY3Rpb24oYSl7dGhyb3cgbmV3IEVycm9yKGEpfSxub29wOmZ1bmN0aW9uK
Cl7fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiJmdW5jdGlvbiI9PT1uLnR5cGUoYSl9LGlzQXJy
YXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuImFycmF5Ij09PW4udHlwZShhKX0saXNXaW5
kb3c6ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGwhPWEmJmE9PWEud2luZG93fSxpc051bWVyaWM6ZnVuY3Rpb2
4oYSl7cmV0dXJuIGEtcGFyc2VGbG9hdChhKT49MH0saXNFbXB0eU9iamVjdDpmdW5jdGlvbihhKXt2YXIgY
jtmb3IoYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxpc1BsYWluT2JqZWN0OmZ1bmN0aW9uKGEpe3ZhciBi
O2lmKCFhfHwib2JqZWN0IiE9PW4udHlwZShhKXx8YS5ub2RlVHlwZXx8bi5pc1dpbmRvdyhhKSlyZXR1cm4
hMTt0cnl7aWYoYS5jb25zdHJ1Y3RvciYmIWouY2FsbChhLCJjb25zdHJ1Y3RvciIpJiYhai5jYWxsKGEuY2
9uc3RydWN0b3IucHJvdG90eXBlLCJpc1Byb3RvdHlwZU9mIikpcmV0dXJuITF9Y2F0Y2goYyl7cmV0dXJuI
TF9aWYobC5vd25MYXN0KWZvcihiIGluIGEpcmV0dXJuIGouY2FsbChhLGIpO2ZvcihiIGluIGEpO3JldHVy
biB2b2lkIDA9PT1ifHxqLmNhbGwoYSxiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gbnVsbD09YT9hKyI
iOiJvYmplY3QiPT10eXBlb2YgYXx8ImZ1bmN0aW9uIj09dHlwZW9mIGE/aFtpLmNhbGwoYSldfHwib2JqZW
N0Ijp0eXBlb2YgYX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZuLnRyaW0oYikmJihhLmV4ZWNTY3Jpc
HR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3Jl
dHVybiBhLnJlcGxhY2UocCwibXMtIikucmVwbGFjZShxLHIpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3J
ldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iLnRvTG93ZXJDYXNlKCl9LG
VhY2g6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9MCxmPWEubGVuZ3RoLGc9cyhhKTtpZihjKXtpZihnKXtmb
3IoO2Y+ZTtlKyspaWYoZD1iLmFwcGx5KGFbZV0sYyksZD09PSExKWJyZWFrfWVsc2UgZm9yKGUgaW4gYSlp
ZihkPWIuYXBwbHkoYVtlXSxjKSxkPT09ITEpYnJlYWt9ZWxzZSBpZihnKXtmb3IoO2Y+ZTtlKyspaWYoZD1
iLmNhbGwoYVtlXSxlLGFbZV0pLGQ9PT0hMSlicmVha31lbHNlIGZvcihlIGluIGEpaWYoZD1iLmNhbGwoYV
tlXSxlLGFbZV0pLGQ9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTprJiYhay5jYWxsKCJcdWZlZmZceGEwI
ik/ZnVuY3Rpb24oYSl7cmV0dXJuIG51bGw9PWE/IiI6ay5jYWxsKGEpfTpmdW5jdGlvbihhKXtyZXR1cm4g
bnVsbD09YT8iIjooYSsiIikucmVwbGFjZShvLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM
9Ynx8W107cmV0dXJuIG51bGwhPWEmJihzKE9iamVjdChhKSk/bi5tZXJnZShjLCJzdHJpbmciPT10eXBlb2
YgYT9bYV06YSk6Zi5jYWxsKGMsYSkpLGN9LGluQXJyYXk6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2lmKGIpe
2lmKGcpcmV0dXJuIGcuY2FsbChiLGEsYyk7Zm9yKGQ9Yi5sZW5ndGgsYz1jPzA+Yz9NYXRoLm1heCgwLGQr
Yyk6YzowO2Q+YztjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnV
uY3Rpb24oYSxiKXt2YXIgYz0rYi5sZW5ndGgsZD0wLGU9YS5sZW5ndGg7d2hpbGUoYz5kKWFbZSsrXT1iW2
QrK107aWYoYyE9PWMpd2hpbGUodm9pZCAwIT09YltkXSlhW2UrK109YltkKytdO3JldHVybiBhLmxlbmd0a
D1lLGF9LGdyZXA6ZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZCxlPVtdLGY9MCxnPWEubGVuZ3RoLGg9IWM7
Zz5mO2YrKylkPSFiKGFbZl0sZiksZCE9PWgmJmUucHVzaChhW2ZdKTtyZXR1cm4gZX0sbWFwOmZ1bmN0aW9
uKGEsYixjKXt2YXIgZCxmPTAsZz1hLmxlbmd0aCxoPXMoYSksaT1bXTtpZihoKWZvcig7Zz5mO2YrKylkPW
IoYVtmXSxmLGMpLG51bGwhPWQmJmkucHVzaChkKTtlbHNlIGZvcihmIGluIGEpZD1iKGFbZl0sZixjKSxud
WxsIT1kJiZpLnB1c2goZCk7cmV0dXJuIGUuYXBwbHkoW10saSl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihh
LGIpe3ZhciBjLGUsZjtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGImJihmPWFbYl0sYj1hLGE9Ziksbi5pc0Z
1bmN0aW9uKGEpPyhjPWQuY2FsbChhcmd1bWVudHMsMiksZT1mdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KG
J8fHRoaXMsYy5jb25jYXQoZC5jYWxsKGFyZ3VtZW50cykpKX0sZS5ndWlkPWEuZ3VpZD1hLmd1aWR8fG4uZ
3VpZCsrLGUpOnZvaWQgMH0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuK25ldyBEYXRlfSxzdXBwb3J0Omx9KSxu
LmVhY2goIkJvb2xlYW4gTnVtYmVyIFN0cmluZyBGdW5jdGlvbiBBcnJheSBEYXRlIFJlZ0V4cCBPYmplY3Q
gRXJyb3IiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtoWyJbb2JqZWN0ICIrYisiXSJdPWIudG9Mb3dlck
Nhc2UoKX0pO2Z1bmN0aW9uIHMoYSl7dmFyIGI9YS5sZW5ndGgsYz1uLnR5cGUoYSk7cmV0dXJuImZ1bmN0a
W9uIj09PWN8fG4uaXNXaW5kb3coYSk/ITE6MT09PWEubm9kZVR5cGUmJmI/ITA6ImFycmF5Ij09PWN8fDA9
PT1ifHwibnVtYmVyIj09dHlwZW9mIGImJmI+MCYmYi0xIGluIGF9dmFyIHQ9ZnVuY3Rpb24oYSl7dmFyIGI
sYyxkLGUsZixnLGgsaSxqLGssbCxtLG4sbyxwLHEscixzPSJzaXp6bGUiKy1uZXcgRGF0ZSx0PWEuZG9jdW
1lbnQsdT0wLHY9MCx3PWViKCkseD1lYigpLHk9ZWIoKSx6PWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9PT1iJ
iYoaj0hMCksMH0sQT0idW5kZWZpbmVkIixCPTE8PDMxLEM9e30uaGFzT3duUHJvcGVydHksRD1bXSxFPUQu
cG9wLEY9RC5wdXNoLEc9RC5wdXNoLEg9RC5zbGljZSxJPUQuaW5kZXhPZnx8ZnVuY3Rpb24oYSl7Zm9yKHZ
hciBiPTAsYz10aGlzLmxlbmd0aDtjPmI7YisrKWlmKHRoaXNbYl09PT1hKXJldHVybiBiO3JldHVybi0xfS
xKPSJjaGVja2VkfHNlbGVjdGVkfGFzeW5jfGF1dG9mb2N1c3xhdXRvcGxheXxjb250cm9sc3xkZWZlcnxka
XNhYmxlZHxoaWRkZW58aXNtYXB8bG9vcHxtdWx0aXBsZXxvcGVufHJlYWRvbmx5fHJlcXVpcmVkfHNjb3Bl
ZCIsSz0iW1xceDIwXFx0XFxyXFxuXFxmXSIsTD0iKD86XFxcXC58W1xcdy1dfFteXFx4MDAtXFx4YTBdKSs
iLE09TC5yZXBsYWNlKCJ3IiwidyMiKSxOPSJcXFsiK0srIiooIitMKyIpIitLKyIqKD86KFsqXiR8IX5dPz
0pIitLKyIqKD86KFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woIitNKyIpfCl8KSIrSysiKlxcX
SIsTz0iOigiK0wrIikoPzpcXCgoKFsnXCJdKSgoPzpcXFxcLnxbXlxcXFxdKSo/KVxcM3woKD86XFxcXC58
W15cXFxcKClbXFxdXXwiK04ucmVwbGFjZSgzLDgpKyIpKil8LiopXFwpfCkiLFA9bmV3IFJlZ0V4cCgiXiI
rSysiK3woKD86XnxbXlxcXFxdKSg/OlxcXFwuKSopIitLKyIrJCIsImciKSxRPW5ldyBSZWdFeHAoIl4iK0
srIiosIitLKyIqIiksUj1uZXcgUmVnRXhwKCJeIitLKyIqKFs+K35dfCIrSysiKSIrSysiKiIpLFM9bmV3I
FJlZ0V4cCgiPSIrSysiKihbXlxcXSdcIl0qPykiK0srIipcXF0iLCJnIiksVD1uZXcgUmVnRXhwKE8pLFU9
bmV3IFJlZ0V4cCgiXiIrTSsiJCIpLFY9e0lEOm5ldyBSZWdFeHAoIl4jKCIrTCsiKSIpLENMQVNTOm5ldyB
SZWdFeHAoIl5cXC4oIitMKyIpIiksVEFHOm5ldyBSZWdFeHAoIl4oIitMLnJlcGxhY2UoInciLCJ3KiIpKy
IpIiksQVRUUjpuZXcgUmVnRXhwKCJeIitOKSxQU0VVRE86bmV3IFJlZ0V4cCgiXiIrTyksQ0hJTEQ6bmV3I
FJlZ0V4cCgiXjoob25seXxmaXJzdHxsYXN0fG50aHxudGgtbGFzdCktKGNoaWxkfG9mLXR5cGUpKD86XFwo
IitLKyIqKGV2ZW58b2RkfCgoWystXXwpKFxcZCopbnwpIitLKyIqKD86KFsrLV18KSIrSysiKihcXGQrKXw
pKSIrSysiKlxcKXwpIiwiaSIpLGJvb2w6bmV3IFJlZ0V4cCgiXig/OiIrSisiKSQiLCJpIiksbmVlZHNDb2
50ZXh0Om5ldyBSZWdFeHAoIl4iK0srIipbPit+XXw6KGV2ZW58b2RkfGVxfGd0fGx0fG50aHxmaXJzdHxsY
XN0KSg/OlxcKCIrSysiKigoPzotXFxkKT9cXGQqKSIrSysiKlxcKXwpKD89W14tXXwkKSIsImkiKX0sVz0v
Xig/OmlucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24pJC9pLFg9L15oXGQkL2ksWT0vXltee10rXHtccyp
cW25hdGl2ZSBcdy8sWj0vXig/OiMoW1x3LV0rKXwoXHcrKXxcLihbXHctXSspKSQvLCQ9L1srfl0vLF89Ly
d8XFwvZyxhYj1uZXcgUmVnRXhwKCJcXFxcKFtcXGRhLWZdezEsNn0iK0srIj98KCIrSysiKXwuKSIsImlnI
iksYmI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPSIweCIrYi02NTUzNjtyZXR1cm4gZCE9PWR8fGM/YjowPmQ/
U3RyaW5nLmZyb21DaGFyQ29kZShkKzY1NTM2KTpTdHJpbmcuZnJvbUNoYXJDb2RlKGQ+PjEwfDU1Mjk2LDE
wMjMmZHw1NjMyMCl9O3RyeXtHLmFwcGx5KEQ9SC5jYWxsKHQuY2hpbGROb2RlcyksdC5jaGlsZE5vZGVzKS
xEW3QuY2hpbGROb2Rlcy5sZW5ndGhdLm5vZGVUeXBlfWNhdGNoKGNiKXtHPXthcHBseTpELmxlbmd0aD9md
W5jdGlvbihhLGIpe0YuYXBwbHkoYSxILmNhbGwoYikpfTpmdW5jdGlvbihhLGIpe3ZhciBjPWEubGVuZ3Ro
LGQ9MDt3aGlsZShhW2MrK109YltkKytdKTthLmxlbmd0aD1jLTF9fX1mdW5jdGlvbiBkYihhLGIsZCxlKXt
2YXIgZixnLGgsaSxqLG0scCxxLHUsdjtpZigoYj9iLm93bmVyRG9jdW1lbnR8fGI6dCkhPT1sJiZrKGIpLG
I9Ynx8bCxkPWR8fFtdLCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIGQ7aWYoMSE9PShpPWIubm9kZ
VR5cGUpJiY5IT09aSlyZXR1cm5bXTtpZihuJiYhZSl7aWYoZj1aLmV4ZWMoYSkpaWYoaD1mWzFdKXtpZig5
PT09aSl7aWYoZz1iLmdldEVsZW1lbnRCeUlkKGgpLCFnfHwhZy5wYXJlbnROb2RlKXJldHVybiBkO2lmKGc
uaWQ9PT1oKXJldHVybiBkLnB1c2goZyksZH1lbHNlIGlmKGIub3duZXJEb2N1bWVudCYmKGc9Yi5vd25lck
RvY3VtZW50LmdldEVsZW1lbnRCeUlkKGgpKSYmcihiLGcpJiZnLmlkPT09aClyZXR1cm4gZC5wdXNoKGcpL
GR9ZWxzZXtpZihmWzJdKXJldHVybiBHLmFwcGx5KGQsYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhKSksZDtp
ZigoaD1mWzNdKSYmYy5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lJiZiLmdldEVsZW1lbnRzQnlDbGFzc05hbWU
pcmV0dXJuIEcuYXBwbHkoZCxiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoaCkpLGR9aWYoYy5xc2EmJighb3
x8IW8udGVzdChhKSkpe2lmKHE9cD1zLHU9Yix2PTk9PT1pJiZhLDE9PT1pJiYib2JqZWN0IiE9PWIubm9kZ
U5hbWUudG9Mb3dlckNhc2UoKSl7bT1vYihhKSwocD1iLmdldEF0dHJpYnV0ZSgiaWQiKSk/cT1wLnJlcGxh
Y2UoXywiXFwkJiIpOmIuc2V0QXR0cmlidXRlKCJpZCIscSkscT0iW2lkPSciK3ErIiddICIsaj1tLmxlbmd
0aDt3aGlsZShqLS0pbVtqXT1xK3BiKG1bal0pO3U9JC50ZXN0KGEpJiZtYihiLnBhcmVudE5vZGUpfHxiLH
Y9bS5qb2luKCIsIil9aWYodil0cnl7cmV0dXJuIEcuYXBwbHkoZCx1LnF1ZXJ5U2VsZWN0b3JBbGwodikpL
GR9Y2F0Y2godyl7fWZpbmFsbHl7cHx8Yi5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4geGIoYS5y
ZXBsYWNlKFAsIiQxIiksYixkLGUpfWZ1bmN0aW9
uIGViKCl7dmFyIGE9W107ZnVuY3Rpb24gYihjLGUpe3JldHVybiBhLnB1c2goYysiICIpPmQuY2FjaGVMZW
5ndGgmJmRlbGV0ZSBiW2Euc2hpZnQoKV0sYltjKyIgIl09ZX1yZXR1cm4gYn1mdW5jdGlvbiBmYihhKXtyZ
XR1cm4gYVtzXT0hMCxhfWZ1bmN0aW9uIGdiKGEpe3ZhciBiPWwuY3JlYXRlRWxlbWVudCgiZGl2Iik7dHJ5
e3JldHVybiEhYShiKX1jYXRjaChjKXtyZXR1cm4hMX1maW5hbGx5e2IucGFyZW50Tm9kZSYmYi5wYXJlbnR
Ob2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbH19ZnVuY3Rpb24gaGIoYSxiKXt2YXIgYz1hLnNwbGl0KCJ8Ii
ksZT1hLmxlbmd0aDt3aGlsZShlLS0pZC5hdHRySGFuZGxlW2NbZV1dPWJ9ZnVuY3Rpb24gaWIoYSxiKXt2Y
XIgYz1iJiZhLGQ9YyYmMT09PWEubm9kZVR5cGUmJjE9PT1iLm5vZGVUeXBlJiYofmIuc291cmNlSW5kZXh8
fEIpLSh+YS5zb3VyY2VJbmRleHx8Qik7aWYoZClyZXR1cm4gZDtpZihjKXdoaWxlKGM9Yy5uZXh0U2libGl
uZylpZihjPT09YilyZXR1cm4tMTtyZXR1cm4gYT8xOi0xfWZ1bmN0aW9uIGpiKGEpe3JldHVybiBmdW5jdG
lvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWMmJmIudHlwZ
T09PWF9fWZ1bmN0aW9uIGtiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgYz1iLm5vZGVOYW1lLnRvTG93
ZXJDYXNlKCk7cmV0dXJuKCJpbnB1dCI9PT1jfHwiYnV0dG9uIj09PWMpJiZiLnR5cGU9PT1hfX1mdW5jdGl
vbiBsYihhKXtyZXR1cm4gZmIoZnVuY3Rpb24oYil7cmV0dXJuIGI9K2IsZmIoZnVuY3Rpb24oYyxkKXt2YX
IgZSxmPWEoW10sYy5sZW5ndGgsYiksZz1mLmxlbmd0aDt3aGlsZShnLS0pY1tlPWZbZ11dJiYoY1tlXT0hK
GRbZV09Y1tlXSkpfSl9KX1mdW5jdGlvbiBtYihhKXtyZXR1cm4gYSYmdHlwZW9mIGEuZ2V0RWxlbWVudHNC
eVRhZ05hbWUhPT1BJiZhfWM9ZGIuc3VwcG9ydD17fSxmPWRiLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPWE
mJihhLm93bmVyRG9jdW1lbnR8fGEpLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj8iSFRNTCIhPT1iLm5vZG
VOYW1lOiExfSxrPWRiLnNldERvY3VtZW50PWZ1bmN0aW9uKGEpe3ZhciBiLGU9YT9hLm93bmVyRG9jdW1lb
nR8fGE6dCxnPWUuZGVmYXVsdFZpZXc7cmV0dXJuIGUhPT1sJiY5PT09ZS5ub2RlVHlwZSYmZS5kb2N1bWVu
dEVsZW1lbnQ/KGw9ZSxtPWUuZG9jdW1lbnRFbGVtZW50LG49IWYoZSksZyYmZyE9PWcudG9wJiYoZy5hZGR
FdmVudExpc3RlbmVyP2cuYWRkRXZlbnRMaXN0ZW5lcigidW5sb2FkIixmdW5jdGlvbigpe2soKX0sITEpOm
cuYXR0YWNoRXZlbnQmJmcuYXR0YWNoRXZlbnQoIm9udW5sb2FkIixmdW5jdGlvbigpe2soKX0pKSxjLmF0d
HJpYnV0ZXM9Z2IoZnVuY3Rpb24oYSl7cmV0dXJuIGEuY2xhc3NOYW1lPSJpIiwhYS5nZXRBdHRyaWJ1dGUo
ImNsYXNzTmFtZSIpfSksYy5nZXRFbGVtZW50c0J5VGFnTmFtZT1nYihmdW5jdGlvbihhKXtyZXR1cm4gYS5
hcHBlbmRDaGlsZChlLmNyZWF0ZUNvbW1lbnQoIiIpKSwhYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLm
xlbmd0aH0pLGMuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZT1ZLnRlc3QoZS5nZXRFbGVtZW50c0J5Q2xhc3NOY
W1lKSYmZ2IoZnVuY3Rpb24oYSl7cmV0dXJuIGEuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSdhJz48L2Rpdj48
ZGl2IGNsYXNzPSdhIGknPjwvZGl2PiIsYS5maXJzdENoaWxkLmNsYXNzTmFtZT0iaSIsMj09PWEuZ2V0RWx
lbWVudHNCeUNsYXNzTmFtZSgiaSIpLmxlbmd0aH0pLGMuZ2V0QnlJZD1nYihmdW5jdGlvbihhKXtyZXR1cm
4gbS5hcHBlbmRDaGlsZChhKS5pZD1zLCFlLmdldEVsZW1lbnRzQnlOYW1lfHwhZS5nZXRFbGVtZW50c0J5T
mFtZShzKS5sZW5ndGh9KSxjLmdldEJ5SWQ/KGQuZmluZC5JRD1mdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBi
LmdldEVsZW1lbnRCeUlkIT09QSYmbil7dmFyIGM9Yi5nZXRFbGVtZW50QnlJZChhKTtyZXR1cm4gYyYmYy5
wYXJlbnROb2RlP1tjXTpbXX19LGQuZmlsdGVyLklEPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShhYi
xiYik7cmV0dXJuIGZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9fSk6KGRlb
GV0ZSBkLmZpbmQuSUQsZC5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSl7dmFyIGI9YS5yZXBsYWNlKGFiLGJiKTty
ZXR1cm4gZnVuY3Rpb24oYSl7dmFyIGM9dHlwZW9mIGEuZ2V0QXR0cmlidXRlTm9kZSE9PUEmJmEuZ2V0QXR
0cmlidXRlTm9kZSgiaWQiKTtyZXR1cm4gYyYmYy52YWx1ZT09PWJ9fSksZC5maW5kLlRBRz1jLmdldEVsZW
1lbnRzQnlUYWdOYW1lP2Z1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOY
W1lIT09QT9iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpOnZvaWQgMH06ZnVuY3Rpb24oYSxiKXt2YXIgYyxk
PVtdLGU9MCxmPWIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYSk7aWYoIioiPT09YSl7d2hpbGUoYz1mW2UrK10
pMT09PWMubm9kZVR5cGUmJmQucHVzaChjKTtyZXR1cm4gZH1yZXR1cm4gZn0sZC5maW5kLkNMQVNTPWMuZ2
V0RWxlbWVudHNCeUNsYXNzTmFtZSYmZnVuY3Rpb24oYSxiKXtyZXR1cm4gdHlwZW9mIGIuZ2V0RWxlbWVud
HNCeUNsYXNzTmFtZSE9PUEmJm4/Yi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGEpOnZvaWQgMH0scD1bXSxv
PVtdLChjLnFzYT1ZLnRlc3QoZS5xdWVyeVNlbGVjdG9yQWxsKSkmJihnYihmdW5jdGlvbihhKXthLmlubmV
ySFRNTD0iPHNlbGVjdCB0PScnPjxvcHRpb24gc2VsZWN0ZWQ9Jyc+PC9vcHRpb24+PC9zZWxlY3Q+IixhLn
F1ZXJ5U2VsZWN0b3JBbGwoIlt0Xj0nJ10iKS5sZW5ndGgmJm8ucHVzaCgiWypeJF09IitLKyIqKD86Jyd8X
CJcIikiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIltzZWxlY3RlZF0iKS5sZW5ndGh8fG8ucHVzaCgiXFxbIitL
KyIqKD86dmFsdWV8IitKKyIpIiksYS5xdWVyeVNlbGVjdG9yQWxsKCI6Y2hlY2tlZCIpLmxlbmd0aHx8by5
wdXNoKCI6Y2hlY2tlZCIpfSksZ2IoZnVuY3Rpb24oYSl7dmFyIGI9ZS5jcmVhdGVFbGVtZW50KCJpbnB1dC
IpO2Iuc2V0QXR0cmlidXRlKCJ0eXBlIiwiaGlkZGVuIiksYS5hcHBlbmRDaGlsZChiKS5zZXRBdHRyaWJ1d
GUoIm5hbWUiLCJEIiksYS5xdWVyeVNlbGVjdG9yQWxsKCJbbmFtZT1kXSIpLmxlbmd0aCYmby5wdXNoKCJu
YW1lIitLKyIqWypeJHwhfl0/PSIpLGEucXVlcnlTZWxlY3RvckFsbCgiOmVuYWJsZWQiKS5sZW5ndGh8fG8
ucHVzaCgiOmVuYWJsZWQiLCI6ZGlzYWJsZWQiKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiosOngiKSxvLnB1c2
goIiwuKjoiKX0pKSwoYy5tYXRjaGVzU2VsZWN0b3I9WS50ZXN0KHE9bS53ZWJraXRNYXRjaGVzU2VsZWN0b
3J8fG0ubW96TWF0Y2hlc1NlbGVjdG9yfHxtLm9NYXRjaGVzU2VsZWN0b3J8fG0ubXNNYXRjaGVzU2VsZWN0
b3IpKSYmZ2IoZnVuY3Rpb24oYSl7Yy5kaXNjb25uZWN0ZWRNYXRjaD1xLmNhbGwoYSwiZGl2IikscS5jYWx
sKGEsIltzIT0nJ106eCIpLHAucHVzaCgiIT0iLE8pfSksbz1vLmxlbmd0aCYmbmV3IFJlZ0V4cChvLmpvaW
4oInwiKSkscD1wLmxlbmd0aCYmbmV3IFJlZ0V4cChwLmpvaW4oInwiKSksYj1ZLnRlc3QobS5jb21wYXJlR
G9jdW1lbnRQb3NpdGlvbikscj1ifHxZLnRlc3QobS5jb250YWlucyk/ZnVuY3Rpb24oYSxiKXt2YXIgYz05
PT09YS5ub2RlVHlwZT9hLmRvY3VtZW50RWxlbWVudDphLGQ9YiYmYi5wYXJlbnROb2RlO3JldHVybiBhPT0
9ZHx8ISghZHx8MSE9PWQubm9kZVR5cGV8fCEoYy5jb250YWlucz9jLmNvbnRhaW5zKGQpOmEuY29tcGFyZU
RvY3VtZW50UG9zaXRpb24mJjE2JmEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oZCkpKX06ZnVuY3Rpb24oY
SxiKXtpZihiKXdoaWxlKGI9Yi5wYXJlbnROb2RlKWlmKGI9PT1hKXJldHVybiEwO3JldHVybiExfSx6PWI/
ZnVuY3Rpb24oYSxiKXtpZihhPT09YilyZXR1cm4gaj0hMCwwO3ZhciBkPSFhLmNvbXBhcmVEb2N1bWVudFB
vc2l0aW9uLSFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uO3JldHVybiBkP2Q6KGQ9KGEub3duZXJEb2N1bW
VudHx8YSk9PT0oYi5vd25lckRvY3VtZW50fHxiKT9hLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpOjEsM
SZkfHwhYy5zb3J0RGV0YWNoZWQmJmIuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYSk9PT1kP2E9PT1lfHxh
Lm93bmVyRG9jdW1lbnQ9PT10JiZyKHQsYSk/LTE6Yj09PWV8fGIub3duZXJEb2N1bWVudD09PXQmJnIodCx
iKT8xOmk/SS5jYWxsKGksYSktSS5jYWxsKGksYik6MDo0JmQ/LTE6MSl9OmZ1bmN0aW9uKGEsYil7aWYoYT
09PWIpcmV0dXJuIGo9ITAsMDt2YXIgYyxkPTAsZj1hLnBhcmVudE5vZGUsZz1iLnBhcmVudE5vZGUsaD1bY
V0saz1bYl07aWYoIWZ8fCFnKXJldHVybiBhPT09ZT8tMTpiPT09ZT8xOmY/LTE6Zz8xOmk/SS5jYWxsKGks
YSktSS5jYWxsKGksYik6MDtpZihmPT09ZylyZXR1cm4gaWIoYSxiKTtjPWE7d2hpbGUoYz1jLnBhcmVudE5
vZGUpaC51bnNoaWZ0KGMpO2M9Yjt3aGlsZShjPWMucGFyZW50Tm9kZSlrLnVuc2hpZnQoYyk7d2hpbGUoaF
tkXT09PWtbZF0pZCsrO3JldHVybiBkP2liKGhbZF0sa1tkXSk6aFtkXT09PXQ/LTE6a1tkXT09PXQ/MTowf
SxlKTpsfSxkYi5tYXRjaGVzPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGRiKGEsbnVsbCxudWxsLGIpfSxkYi5t
YXRjaGVzU2VsZWN0b3I9ZnVuY3Rpb24oYSxiKXtpZigoYS5vd25lckRvY3VtZW50fHxhKSE9PWwmJmsoYSk
sYj1iLnJlcGxhY2UoUywiPSckMSddIiksISghYy5tYXRjaGVzU2VsZWN0b3J8fCFufHxwJiZwLnRlc3QoYi
l8fG8mJm8udGVzdChiKSkpdHJ5e3ZhciBkPXEuY2FsbChhLGIpO2lmKGR8fGMuZGlzY29ubmVjdGVkTWF0Y
2h8fGEuZG9jdW1lbnQmJjExIT09YS5kb2N1bWVudC5ub2RlVHlwZSlyZXR1cm4gZH1jYXRjaChlKXt9cmV0
dXJuIGRiKGIsbCxudWxsLFthXSkubGVuZ3RoPjB9LGRiLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJ
uKGEub3duZXJEb2N1bWVudHx8YSkhPT1sJiZrKGEpLHIoYSxiKX0sZGIuYXR0cj1mdW5jdGlvbihhLGIpey
hhLm93bmVyRG9jdW1lbnR8fGEpIT09bCYmayhhKTt2YXIgZT1kLmF0dHJIYW5kbGVbYi50b0xvd2VyQ2FzZ
SgpXSxmPWUmJkMuY2FsbChkLmF0dHJIYW5kbGUsYi50b0xvd2VyQ2FzZSgpKT9lKGEsYiwhbik6dm9pZCAw
O3JldHVybiB2b2lkIDAhPT1mP2Y6Yy5hdHRyaWJ1dGVzfHwhbj9hLmdldEF0dHJpYnV0ZShiKTooZj1hLmd
ldEF0dHJpYnV0ZU5vZGUoYikpJiZmLnNwZWNpZmllZD9mLnZhbHVlOm51bGx9LGRiLmVycm9yPWZ1bmN0aW
9uKGEpe3Rocm93IG5ldyBFcnJvcigiU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogI
ithKX0sZGIudW5pcXVlU29ydD1mdW5jdGlvbihhKXt2YXIgYixkPVtdLGU9MCxmPTA7aWYoaj0hYy5kZXRl
Y3REdXBsaWNhdGVzLGk9IWMuc29ydFN0YWJsZSYmYS5zbGljZSgwKSxhLnNvcnQoeiksail7d2hpbGUoYj1
hW2YrK10pYj09PWFbZl0mJihlPWQucHVzaChmKSk7d2hpbGUoZS0tKWEuc3BsaWNlKGRbZV0sMSl9cmV0dX
JuIGk9bnVsbCxhfSxlPWRiLmdldFRleHQ9ZnVuY3Rpb24oYSl7dmFyIGIsYz0iIixkPTAsZj1hLm5vZGVUe
XBlO2lmKGYpe2lmKDE9PT1mfHw5PT09Znx8MTE9PT1mKXtpZigic3RyaW5nIj09dHlwZW9mIGEudGV4dENv
bnRlbnQpcmV0dXJuIGEudGV4dENvbnRlbnQ7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5
nKWMrPWUoYSl9ZWxzZSBpZigzPT09Znx8ND09PWYpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2Ugd2hpbGUoYj
1hW2QrK10pYys9ZShiKTtyZXR1cm4gY30sZD1kYi5zZWxlY3RvcnM9e2NhY2hlTGVuZ3RoOjUwLGNyZWF0Z
VBzZXVkbzpmYixtYXRjaDpWLGF0dHJIYW5kbGU6e30sZmluZDp7fSxyZWxhdGl2ZTp7Ij4iOntkaXI6InBh
cmVudE5vZGUiLGZpcnN0OiEwfSwiICI6e2RpcjoicGFyZW50Tm9kZSJ9LCIrIjp7ZGlyOiJwcmV2aW91c1N
pYmxpbmciLGZpcnN0OiEwfSwifiI6e2RpcjoicHJldmlvdXNTaWJsaW5nIn19LHByZUZpbHRlcjp7QVRUUj
pmdW5jdGlvbihhKXtyZXR1cm4gYVsxXT1hWzFdLnJlcGxhY2UoYWIsYmIpLGFbM109KGFbNF18fGFbNV18f
CIiKS5yZXBsYWNlKGFiLGJiKSwifj0iPT09YVsyXSYmKGFbM109IiAiK2FbM10rIiAiKSxhLnNsaWNlKDAs
NCl9LENISUxEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdPWFbMV0udG9Mb3dlckNhc2UoKSwibnRoIj09PWF
bMV0uc2xpY2UoMCwzKT8oYVszXXx8ZGIuZXJyb3IoYVswXSksYVs0XT0rKGFbNF0/YVs1XSsoYVs2XXx8MS
k6MiooImV2ZW4iPT09YVszXXx8Im9kZCI9PT1hWzNdKSksYVs1XT0rKGFbN10rYVs4XXx8Im9kZCI9PT1hW
zNdKSk6YVszXSYmZGIuZXJyb3IoYVswXSksYX0sUFNFVURPOmZ1bmN0aW9uKGEpe3ZhciBiLGM9IWFbNV0m
JmFbMl07cmV0dXJuIFYuQ0hJTEQudGVzdChhWzBdKT9udWxsOihhWzNdJiZ2b2lkIDAhPT1hWzRdP2FbMl0
9YVs0XTpjJiZULnRlc3QoYykmJihiPW9iKGMsITApKSYmKGI9Yy5pbmRleE9mKCIpIixjLmxlbmd0aC1iKS
1jLmxlbmd0aCkmJihhWzBdPWFbMF0uc2xpY2UoMCxiKSxhWzJdPWMuc2xpY2UoMCxiKSksYS5zbGljZSgwL
DMpKX19LGZpbHRlcjp7VEFHOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZShhYixiYikudG9Mb3dlckNh
c2UoKTtyZXR1cm4iKiI9PT1hP2Z1bmN0aW9uKCl7cmV0dXJuITB9OmZ1bmN0aW9uKGEpe3JldHVybiBhLm5
vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifX0sQ0xBU1M6ZnVuY3Rpb24oYSl7dmFyIG
I9d1thKyIgIl07cmV0dXJuIGJ8fChiPW5ldyBSZWdFeHAoIihefCIrSysiKSIrYSsiKCIrSysifCQpIikpJ
iZ3KGEsZnVuY3Rpb24oYSl7cmV0dXJuIGIudGVzdCgic3RyaW5nIj09dHlwZW9mIGEuY2xhc3NOYW1lJiZh
LmNsYXNzTmFtZXx8dHlwZW9mIGEuZ2V0QXR0cmlidXRlIT09QSYmYS5nZXRBdHRyaWJ1dGUoImNsYXNzIil
8fCIiKX0pfSxBVFRSOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZnVuY3Rpb24oZCl7dmFyIGU9ZGIuYXR0ci
hkLGEpO3JldHVybiBudWxsPT1lPyIhPSI9PT1iOmI/KGUrPSIiLCI9Ij09PWI/ZT09PWM6IiE9Ij09PWI/Z
SE9PWM6Il49Ij09PWI/YyYmMD09PWUuaW5kZXhPZihjKToiKj0iPT09Yj9jJiZlLmluZGV4T2YoYyk+LTE6
IiQ9Ij09PWI/YyYmZS5zbGljZSgtYy5sZW5ndGgpPT09Yzoifj0iPT09Yj8oIiAiK2UrIiAiKS5pbmRleE9
mKGMpPi0xOiJ8PSI9PT1iP2U9PT1jfHxlLnNsaWNlKDAsYy5sZW5ndGgrMSk9PT1jKyItIjohMSk6ITB9fS
xDSElMRDpmdW5jdGlvbihhLGIsYyxkLGUpe3ZhciBmPSJudGgiIT09YS5zbGljZSgwLDMpLGc9Imxhc3QiI
T09YS5zbGljZSgtNCksaD0ib2YtdHlwZSI9PT1iO3JldHVybiAxPT09ZCYmMD09PWU/ZnVuY3Rpb24oYSl7
cmV0dXJuISFhLnBhcmVudE5vZGV9OmZ1bmN0aW9uKGIsYyxpKXt2YXIgaixrLGwsbSxuLG8scD1mIT09Zz8
ibmV4dFNpYmxpbmciOiJwcmV2aW91c1NpYmxpbm
ciLHE9Yi5wYXJlbnROb2RlLHI9aCYmYi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpLHQ9IWkmJiFoO2lmKHEpe
2lmKGYpe3doaWxlKHApe2w9Yjt3aGlsZShsPWxbcF0paWYoaD9sLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9
PT1yOjE9PT1sLm5vZGVUeXBlKXJldHVybiExO289cD0ib25seSI9PT1hJiYhbyYmIm5leHRTaWJsaW5nIn1
yZXR1cm4hMH1pZihvPVtnP3EuZmlyc3RDaGlsZDpxLmxhc3RDaGlsZF0sZyYmdCl7az1xW3NdfHwocVtzXT
17fSksaj1rW2FdfHxbXSxuPWpbMF09PT11JiZqWzFdLG09alswXT09PXUmJmpbMl0sbD1uJiZxLmNoaWxkT
m9kZXNbbl07d2hpbGUobD0rK24mJmwmJmxbcF18fChtPW49MCl8fG8ucG9wKCkpaWYoMT09PWwubm9kZVR5
cGUmJisrbSYmbD09PWIpe2tbYV09W3UsbixtXTticmVha319ZWxzZSBpZih0JiYoaj0oYltzXXx8KGJbc10
9e30pKVthXSkmJmpbMF09PT11KW09alsxXTtlbHNlIHdoaWxlKGw9KytuJiZsJiZsW3BdfHwobT1uPTApfH
xvLnBvcCgpKWlmKChoP2wubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PXI6MT09PWwubm9kZVR5cGUpJiYrK
20mJih0JiYoKGxbc118fChsW3NdPXt9KSlbYV09W3UsbV0pLGw9PT1iKSlicmVhaztyZXR1cm4gbS09ZSxt
PT09ZHx8bSVkPT09MCYmbS9kPj0wfX19LFBTRVVETzpmdW5jdGlvbihhLGIpe3ZhciBjLGU9ZC5wc2V1ZG9
zW2FdfHxkLnNldEZpbHRlcnNbYS50b0xvd2VyQ2FzZSgpXXx8ZGIuZXJyb3IoInVuc3VwcG9ydGVkIHBzZX
VkbzogIithKTtyZXR1cm4gZVtzXT9lKGIpOmUubGVuZ3RoPjE/KGM9W2EsYSwiIixiXSxkLnNldEZpbHRlc
nMuaGFzT3duUHJvcGVydHkoYS50b0xvd2VyQ2FzZSgpKT9mYihmdW5jdGlvbihhLGMpe3ZhciBkLGY9ZShh
LGIpLGc9Zi5sZW5ndGg7d2hpbGUoZy0tKWQ9SS5jYWxsKGEsZltnXSksYVtkXT0hKGNbZF09ZltnXSl9KTp
mdW5jdGlvbihhKXtyZXR1cm4gZShhLDAsYyl9KTplfX0scHNldWRvczp7bm90OmZiKGZ1bmN0aW9uKGEpe3
ZhciBiPVtdLGM9W10sZD1nKGEucmVwbGFjZShQLCIkMSIpKTtyZXR1cm4gZFtzXT9mYihmdW5jdGlvbihhL
GIsYyxlKXt2YXIgZixnPWQoYSxudWxsLGUsW10pLGg9YS5sZW5ndGg7d2hpbGUoaC0tKShmPWdbaF0pJiYo
YVtoXT0hKGJbaF09ZikpfSk6ZnVuY3Rpb24oYSxlLGYpe3JldHVybiBiWzBdPWEsZChiLG51bGwsZixjKSw
hYy5wb3AoKX19KSxoYXM6ZmIoZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3JldHVybiBkYihhLG
IpLmxlbmd0aD4wfX0pLGNvbnRhaW5zOmZiKGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1c
m4oYi50ZXh0Q29udGVudHx8Yi5pbm5lclRleHR8fGUoYikpLmluZGV4T2YoYSk+LTF9fSksbGFuZzpmYihm
dW5jdGlvbihhKXtyZXR1cm4gVS50ZXN0KGF8fCIiKXx8ZGIuZXJyb3IoInVuc3VwcG9ydGVkIGxhbmc6ICI
rYSksYT1hLnJlcGxhY2UoYWIsYmIpLnRvTG93ZXJDYXNlKCksZnVuY3Rpb24oYil7dmFyIGM7ZG8gaWYoYz
1uP2IubGFuZzpiLmdldEF0dHJpYnV0ZSgieG1sOmxhbmciKXx8Yi5nZXRBdHRyaWJ1dGUoImxhbmciKSlyZ
XR1cm4gYz1jLnRvTG93ZXJDYXNlKCksYz09PWF8fDA9PT1jLmluZGV4T2YoYSsiLSIpO3doaWxlKChiPWIu
cGFyZW50Tm9kZSkmJjE9PT1iLm5vZGVUeXBlKTtyZXR1cm4hMX19KSx0YXJnZXQ6ZnVuY3Rpb24oYil7dmF
yIGM9YS5sb2NhdGlvbiYmYS5sb2NhdGlvbi5oYXNoO3JldHVybiBjJiZjLnNsaWNlKDEpPT09Yi5pZH0scm
9vdDpmdW5jdGlvbihhKXtyZXR1cm4gYT09PW19LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09bC5hY
3RpdmVFbGVtZW50JiYoIWwuaGFzRm9jdXN8fGwuaGFzRm9jdXMoKSkmJiEhKGEudHlwZXx8YS5ocmVmfHx+
YS50YWJJbmRleCl9LGVuYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMX0sZGlzYWJ
sZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXt2YX
IgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiEhYS5jaGVja2VkfHwib
3B0aW9uIj09PWImJiEhYS5zZWxlY3RlZH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50
Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgsYS5zZWxlY3RlZD09PSEwfSxlbXB0eTpmdW5jdGl
vbihhKXtmb3IoYT1hLmZpcnN0Q2hpbGQ7YTthPWEubmV4dFNpYmxpbmcpaWYoYS5ub2RlVHlwZTw2KXJldH
VybiExO3JldHVybiEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIWQucHNldWRvcy5lbXB0eShhKX0sa
GVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybiBYLnRlc3QoYS5ub2RlTmFtZSl9LGlucHV0OmZ1bmN0aW9uKGEp
e3JldHVybiBXLnRlc3QoYS5ub2RlTmFtZSl9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1
lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PWImJiJidXR0b24iPT09YS50eXBlfHwiYnV0dG9uIj
09PWJ9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI7cmV0dXJuImlucHV0Ij09PWEubm9kZU5hbWUudG9Mb3dlc
kNhc2UoKSYmInRleHQiPT09YS50eXBlJiYobnVsbD09KGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSl8fCJ0
ZXh0Ij09PWIudG9Mb3dlckNhc2UoKSl9LGZpcnN0OmxiKGZ1bmN0aW9uKCl7cmV0dXJuWzBdfSksbGFzdDp
sYihmdW5jdGlvbihhLGIpe3JldHVybltiLTFdfSksZXE6bGIoZnVuY3Rpb24oYSxiLGMpe3JldHVyblswPm
M/YytiOmNdfSksZXZlbjpsYihmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wO2I+YztjKz0yKWEucHVzaChjK
TtyZXR1cm4gYX0pLG9kZDpsYihmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0xO2I+YztjKz0yKWEucHVzaChj
KTtyZXR1cm4gYX0pLGx0OmxiKGZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGQ9MD5jP2MrYjpjOy0tZD49MDs
pYS5wdXNoKGQpO3JldHVybiBhfSksZ3Q6bGIoZnVuY3Rpb24oYSxiLGMpe2Zvcih2YXIgZD0wPmM/YytiOm
M7KytkPGI7KWEucHVzaChkKTtyZXR1cm4gYX0pfX0sZC5wc2V1ZG9zLm50aD1kLnBzZXVkb3MuZXE7Zm9yK
GIgaW57cmFkaW86ITAsY2hlY2tib3g6ITAsZmlsZTohMCxwYXNzd29yZDohMCxpbWFnZTohMH0pZC5wc2V1
ZG9zW2JdPWpiKGIpO2ZvcihiIGlue3N1Ym1pdDohMCxyZXNldDohMH0pZC5wc2V1ZG9zW2JdPWtiKGIpO2Z
1bmN0aW9uIG5iKCl7fW5iLnByb3RvdHlwZT1kLmZpbHRlcnM9ZC5wc2V1ZG9zLGQuc2V0RmlsdGVycz1uZX
cgbmI7ZnVuY3Rpb24gb2IoYSxiKXt2YXIgYyxlLGYsZyxoLGksaixrPXhbYSsiICJdO2lmKGspcmV0dXJuI
GI/MDprLnNsaWNlKDApO2g9YSxpPVtdLGo9ZC5wcmVGaWx0ZXI7d2hpbGUoaCl7KCFjfHwoZT1RLmV4ZWMo
aCkpKSYmKGUmJihoPWguc2xpY2UoZVswXS5sZW5ndGgpfHxoKSxpLnB1c2goZj1bXSkpLGM9ITEsKGU9Ui5
leGVjKGgpKSYmKGM9ZS5zaGlmdCgpLGYucHVzaCh7dmFsdWU6Yyx0eXBlOmVbMF0ucmVwbGFjZShQLCIgIi
l9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtmb3IoZyBpbiBkLmZpbHRlcikhKGU9VltnXS5leGVjKGgpKXx8a
ltnXSYmIShlPWpbZ10oZSkpfHwoYz1lLnNoaWZ0KCksZi5wdXNoKHt2YWx1ZTpjLHR5cGU6ZyxtYXRjaGVz
OmV9KSxoPWguc2xpY2UoYy5sZW5ndGgpKTtpZighYylicmVha31yZXR1cm4gYj9oLmxlbmd0aDpoP2RiLmV
ycm9yKGEpOngoYSxpKS5zbGljZSgwKX1mdW5jdGlvbiBwYihhKXtmb3IodmFyIGI9MCxjPWEubGVuZ3RoLG
Q9IiI7Yz5iO2IrKylkKz1hW2JdLnZhbHVlO3JldHVybiBkfWZ1bmN0aW9uIHFiKGEsYixjKXt2YXIgZD1iL
mRpcixlPWMmJiJwYXJlbnROb2RlIj09PWQsZj12Kys7cmV0dXJuIGIuZmlyc3Q/ZnVuY3Rpb24oYixjLGYp
e3doaWxlKGI9YltkXSlpZigxPT09Yi5ub2RlVHlwZXx8ZSlyZXR1cm4gYShiLGMsZil9OmZ1bmN0aW9uKGI
sYyxnKXt2YXIgaCxpLGo9W3UsZl07aWYoZyl7d2hpbGUoYj1iW2RdKWlmKCgxPT09Yi5ub2RlVHlwZXx8ZS
kmJmEoYixjLGcpKXJldHVybiEwfWVsc2Ugd2hpbGUoYj1iW2RdKWlmKDE9PT1iLm5vZGVUeXBlfHxlKXtpZ
ihpPWJbc118fChiW3NdPXt9KSwoaD1pW2RdKSYmaFswXT09PXUmJmhbMV09PT1mKXJldHVybiBqWzJdPWhb
Ml07aWYoaVtkXT1qLGpbMl09YShiLGMsZykpcmV0dXJuITB9fX1mdW5jdGlvbiByYihhKXtyZXR1cm4gYS5
sZW5ndGg+MT9mdW5jdGlvbihiLGMsZCl7dmFyIGU9YS5sZW5ndGg7d2hpbGUoZS0tKWlmKCFhW2VdKGIsYy
xkKSlyZXR1cm4hMTtyZXR1cm4hMH06YVswXX1mdW5jdGlvbiBzYihhLGIsYyxkLGUpe2Zvcih2YXIgZixnP
VtdLGg9MCxpPWEubGVuZ3RoLGo9bnVsbCE9YjtpPmg7aCsrKShmPWFbaF0pJiYoIWN8fGMoZixkLGUpKSYm
KGcucHVzaChmKSxqJiZiLnB1c2goaCkpO3JldHVybiBnfWZ1bmN0aW9uIHRiKGEsYixjLGQsZSxmKXtyZXR
1cm4gZCYmIWRbc10mJihkPXRiKGQpKSxlJiYhZVtzXSYmKGU9dGIoZSxmKSksZmIoZnVuY3Rpb24oZixnLG
gsaSl7dmFyIGosayxsLG09W10sbj1bXSxvPWcubGVuZ3RoLHA9Znx8d2IoYnx8IioiLGgubm9kZVR5cGU/W
2hdOmgsW10pLHE9IWF8fCFmJiZiP3A6c2IocCxtLGEsaCxpKSxyPWM/ZXx8KGY/YTpvfHxkKT9bXTpnOnE7
aWYoYyYmYyhxLHIsaCxpKSxkKXtqPXNiKHIsbiksZChqLFtdLGgsaSksaz1qLmxlbmd0aDt3aGlsZShrLS0
pKGw9altrXSkmJihyW25ba11dPSEocVtuW2tdXT1sKSl9aWYoZil7aWYoZXx8YSl7aWYoZSl7aj1bXSxrPX
IubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmai5wdXNoKHFba109bCk7ZShudWxsLHI9W10saixpKX1rP
XIubGVuZ3RoO3doaWxlKGstLSkobD1yW2tdKSYmKGo9ZT9JLmNhbGwoZixsKTptW2tdKT4tMSYmKGZbal09
IShnW2pdPWwpKX19ZWxzZSByPXNiKHI9PT1nP3Iuc3BsaWNlKG8sci5sZW5ndGgpOnIpLGU/ZShudWxsLGc
scixpKTpHLmFwcGx5KGcscil9KX1mdW5jdGlvbiB1YihhKXtmb3IodmFyIGIsYyxlLGY9YS5sZW5ndGgsZz
1kLnJlbGF0aXZlW2FbMF0udHlwZV0saT1nfHxkLnJlbGF0aXZlWyIgIl0saj1nPzE6MCxrPXFiKGZ1bmN0a
W9uKGEpe3JldHVybiBhPT09Yn0saSwhMCksbD1xYihmdW5jdGlvbihhKXtyZXR1cm4gSS5jYWxsKGIsYSk+
LTF9LGksITApLG09W2Z1bmN0aW9uKGEsYyxkKXtyZXR1cm4hZyYmKGR8fGMhPT1oKXx8KChiPWMpLm5vZGV
UeXBlP2soYSxjLGQpOmwoYSxjLGQpKX1dO2Y+ajtqKyspaWYoYz1kLnJlbGF0aXZlW2Fbal0udHlwZV0pbT
1bcWIocmIobSksYyldO2Vsc2V7aWYoYz1kLmZpbHRlclthW2pdLnR5cGVdLmFwcGx5KG51bGwsYVtqXS5tY
XRjaGVzKSxjW3NdKXtmb3IoZT0rK2o7Zj5lO2UrKylpZihkLnJlbGF0aXZlW2FbZV0udHlwZV0pYnJlYWs7
cmV0dXJuIHRiKGo+MSYmcmIobSksaj4xJiZwYihhLnNsaWNlKDAsai0xKS5jb25jYXQoe3ZhbHVlOiIgIj0
9PWFbai0yXS50eXBlPyIqIjoiIn0pKS5yZXBsYWNlKFAsIiQxIiksYyxlPmomJnViKGEuc2xpY2UoaixlKS
ksZj5lJiZ1YihhPWEuc2xpY2UoZSkpLGY+ZSYmcGIoYSkpfW0ucHVzaChjKX1yZXR1cm4gcmIobSl9ZnVuY
3Rpb24gdmIoYSxiKXt2YXIgYz1iLmxlbmd0aD4wLGU9YS5sZW5ndGg+MCxmPWZ1bmN0aW9uKGYsZyxpLGos
ayl7dmFyIG0sbixvLHA9MCxxPSIwIixyPWYmJltdLHM9W10sdD1oLHY9Znx8ZSYmZC5maW5kLlRBRygiKiI
sayksdz11Kz1udWxsPT10PzE6TWF0aC5yYW5kb20oKXx8LjEseD12Lmxlbmd0aDtmb3IoayYmKGg9ZyE9PW
wmJmcpO3EhPT14JiZudWxsIT0obT12W3FdKTtxKyspe2lmKGUmJm0pe249MDt3aGlsZShvPWFbbisrXSlpZ
ihvKG0sZyxpKSl7ai5wdXNoKG0pO2JyZWFrfWsmJih1PXcpfWMmJigobT0hbyYmbSkmJnAtLSxmJiZyLnB1
c2gobSkpfWlmKHArPXEsYyYmcSE9PXApe249MDt3aGlsZShvPWJbbisrXSlvKHIscyxnLGkpO2lmKGYpe2l
mKHA+MCl3aGlsZShxLS0pcltxXXx8c1txXXx8KHNbcV09RS5jYWxsKGopKTtzPXNiKHMpfUcuYXBwbHkoai
xzKSxrJiYhZiYmcy5sZW5ndGg+MCYmcCtiLmxlbmd0aD4xJiZkYi51bmlxdWVTb3J0KGopfXJldHVybiBrJ
iYodT13LGg9dCkscn07cmV0dXJuIGM/ZmIoZik6Zn1nPWRiLmNvbXBpbGU9ZnVuY3Rpb24oYSxiKXt2YXIg
YyxkPVtdLGU9W10sZj15W2ErIiAiXTtpZighZil7Ynx8KGI9b2IoYSkpLGM9Yi5sZW5ndGg7d2hpbGUoYy0
tKWY9dWIoYltjXSksZltzXT9kLnB1c2goZik6ZS5wdXNoKGYpO2Y9eShhLHZiKGUsZCkpfXJldHVybiBmfT
tmdW5jdGlvbiB3YihhLGIsYyl7Zm9yKHZhciBkPTAsZT1iLmxlbmd0aDtlPmQ7ZCsrKWRiKGEsYltkXSxjK
TtyZXR1cm4gY31mdW5jdGlvbiB4YihhLGIsZSxmKXt2YXIgaCxpLGosayxsLG09b2IoYSk7aWYoIWYmJjE9
PT1tLmxlbmd0aCl7aWYoaT1tWzBdPW1bMF0uc2xpY2UoMCksaS5sZW5ndGg+MiYmIklEIj09PShqPWlbMF0
pLnR5cGUmJmMuZ2V0QnlJZCYmOT09PWIubm9kZVR5cGUmJm4mJmQucmVsYXRpdmVbaVsxXS50eXBlXSl7aW
YoYj0oZC5maW5kLklEKGoubWF0Y2hlc1swXS5yZXBsYWNlKGFiLGJiKSxiKXx8W10pWzBdLCFiKXJldHVyb
iBlO2E9YS5zbGljZShpLnNoaWZ0KCkudmFsdWUubGVuZ3RoKX1oPVYubmVlZHNDb250ZXh0LnRlc3QoYSk/
MDppLmxlbmd0aDt3aGlsZShoLS0pe2lmKGo9aVtoXSxkLnJlbGF0aXZlW2s9ai50eXBlXSlicmVhaztpZig
obD1kLmZpbmRba10pJiYoZj1sKGoubWF0Y2hlc1swXS5yZXBsYWNlKGFiLGJiKSwkLnRlc3QoaVswXS50eX
BlKSYmbWIoYi5wYXJlbnROb2RlKXx8YikpKXtpZihpLnNwbGljZShoLDEpLGE9Zi5sZW5ndGgmJnBiKGkpL
CFhKXJldHVybiBHLmFwcGx5KGUsZiksZTticmVha319fXJldHVybiBnKGEsbSkoZixiLCFuLGUsJC50ZXN0
KGEpJiZtYihiLnBhcmVudE5vZGUpfHxiKSxlfXJldHVybiBjLnNvcnRTdGFibGU9cy5zcGxpdCgiIikuc29
ydCh6KS5qb2luKCIiKT09PXMsYy5kZXRlY3REdXBsaWNhdGVzPSEhaixrKCksYy5zb3J0RGV0YWNoZWQ9Z2
IoZnVuY3Rpb24oYSl7cmV0dXJuIDEmYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihsLmNyZWF0ZUVsZW1lb
nQoImRpdiIpKX0pLGdiKGZ1bmN0aW9uKGEpe3JldHVybiBhLmlubmVySFRNTD0iPGEgaHJlZj0nIyc+PC9h
PiIsIiMiPT09YS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpfSl8fGhiKCJ0eXBlfGhyZWZ8aGV
pZ2h0fHdpZHRoIixmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmEuZ2V0QXR0cmlidXRlKGIsIn
R5cGUiPT09Yi50b0xvd2VyQ2FzZSgpPzE6Mil9KSxjLmF0dHJpYnV0ZXMmJmdiKGZ1bmN0aW9uKGEpe3Jld
HVybiBhLmlubmVySFRNTD0iPGlucHV0Lz4iLGEuZmlyc3RDaGlsZC5zZXRBdHRyaWJ1dGUoInZhbHVlIiwi
IiksIiI9PT1hLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpfSl8fGhiKCJ2YWx1ZSIsZnVuY3R
pb24oYSxiLGMpe3JldHVybiBjfHwiaW5wdXQiIT09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpP3ZvaWQgMD
phLmRlZmF1bHRWYWx1ZX0pLGdiKGZ1bmN0aW9uK
GEpe3JldHVybiBudWxsPT1hLmdldEF0dHJpYnV0ZSgiZGlzYWJsZWQiKX0pfHxoYihKLGZ1bmN0aW9uKGEs
YixjKXt2YXIgZDtyZXR1cm4gYz92b2lkIDA6YVtiXT09PSEwP2IudG9Mb3dlckNhc2UoKTooZD1hLmdldEF
0dHJpYnV0ZU5vZGUoYikpJiZkLnNwZWNpZmllZD9kLnZhbHVlOm51bGx9KSxkYn0oYSk7bi5maW5kPXQsbi
5leHByPXQuc2VsZWN0b3JzLG4uZXhwclsiOiJdPW4uZXhwci5wc2V1ZG9zLG4udW5pcXVlPXQudW5pcXVlU
29ydCxuLnRleHQ9dC5nZXRUZXh0LG4uaXNYTUxEb2M9dC5pc1hNTCxuLmNvbnRhaW5zPXQuY29udGFpbnM7
dmFyIHU9bi5leHByLm1hdGNoLm5lZWRzQ29udGV4dCx2PS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPnwpJC8
sdz0vXi5bXjojXFtcLixdKiQvO2Z1bmN0aW9uIHgoYSxiLGMpe2lmKG4uaXNGdW5jdGlvbihiKSlyZXR1cm
4gbi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4hIWIuY2FsbChhLGQsYSkhPT1jfSk7aWYoYi5ub2RlV
HlwZSlyZXR1cm4gbi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1iIT09Y30pO2lmKCJzdHJpbmci
PT10eXBlb2YgYil7aWYody50ZXN0KGIpKXJldHVybiBuLmZpbHRlcihiLGEsYyk7Yj1uLmZpbHRlcihiLGE
pfXJldHVybiBuLmdyZXAoYSxmdW5jdGlvbihhKXtyZXR1cm4gbi5pbkFycmF5KGEsYik+PTAhPT1jfSl9bi
5maWx0ZXI9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWJbMF07cmV0dXJuIGMmJihhPSI6bm90KCIrYSsiKSIpL
DE9PT1iLmxlbmd0aCYmMT09PWQubm9kZVR5cGU/bi5maW5kLm1hdGNoZXNTZWxlY3RvcihkLGEpP1tkXTpb
XTpuLmZpbmQubWF0Y2hlcyhhLG4uZ3JlcChiLGZ1bmN0aW9uKGEpe3JldHVybiAxPT09YS5ub2RlVHlwZX0
pKX0sbi5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGIsYz1bXSxkPXRoaXMsZT1kLmxlbmd0aD
tpZigic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMucHVzaFN0YWNrKG4oYSkuZmlsdGVyKGZ1bmN0a
W9uKCl7Zm9yKGI9MDtlPmI7YisrKWlmKG4uY29udGFpbnMoZFtiXSx0aGlzKSlyZXR1cm4hMH0pKTtmb3Io
Yj0wO2U+YjtiKyspbi5maW5kKGEsZFtiXSxjKTtyZXR1cm4gYz10aGlzLnB1c2hTdGFjayhlPjE/bi51bml
xdWUoYyk6YyksYy5zZWxlY3Rvcj10aGlzLnNlbGVjdG9yP3RoaXMuc2VsZWN0b3IrIiAiK2E6YSxjfSxmaW
x0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHgodGhpcyxhfHxbXSwhMSkpfSxub3Q6Z
nVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKHgodGhpcyxhfHxbXSwhMCkpfSxpczpmdW5jdGlv
bihhKXtyZXR1cm4hIXgodGhpcywic3RyaW5nIj09dHlwZW9mIGEmJnUudGVzdChhKT9uKGEpOmF8fFtdLCE
xKS5sZW5ndGh9fSk7dmFyIHksej1hLmRvY3VtZW50LEE9L14oPzpccyooPFtcd1xXXSs+KVtePl0qfCMoW1
x3LV0qKSkkLyxCPW4uZm4uaW5pdD1mdW5jdGlvbihhLGIpe3ZhciBjLGQ7aWYoIWEpcmV0dXJuIHRoaXM7a
WYoInN0cmluZyI9PXR5cGVvZiBhKXtpZihjPSI8Ij09PWEuY2hhckF0KDApJiYiPiI9PT1hLmNoYXJBdChh
Lmxlbmd0aC0xKSYmYS5sZW5ndGg+PTM/W251bGwsYSxudWxsXTpBLmV4ZWMoYSksIWN8fCFjWzFdJiZiKXJ
ldHVybiFifHxiLmpxdWVyeT8oYnx8eSkuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGIpLmZpbmQoYSk7aW
YoY1sxXSl7aWYoYj1iIGluc3RhbmNlb2Ygbj9iWzBdOmIsbi5tZXJnZSh0aGlzLG4ucGFyc2VIVE1MKGNbM
V0sYiYmYi5ub2RlVHlwZT9iLm93bmVyRG9jdW1lbnR8fGI6eiwhMCkpLHYudGVzdChjWzFdKSYmbi5pc1Bs
YWluT2JqZWN0KGIpKWZvcihjIGluIGIpbi5pc0Z1bmN0aW9uKHRoaXNbY10pP3RoaXNbY10oYltjXSk6dGh
pcy5hdHRyKGMsYltjXSk7cmV0dXJuIHRoaXN9aWYoZD16LmdldEVsZW1lbnRCeUlkKGNbMl0pLGQmJmQucG
FyZW50Tm9kZSl7aWYoZC5pZCE9PWNbMl0pcmV0dXJuIHkuZmluZChhKTt0aGlzLmxlbmd0aD0xLHRoaXNbM
F09ZH1yZXR1cm4gdGhpcy5jb250ZXh0PXosdGhpcy5zZWxlY3Rvcj1hLHRoaXN9cmV0dXJuIGEubm9kZVR5
cGU/KHRoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MSx0aGlzKTpuLmlzRnVuY3Rpb24oYSk
/InVuZGVmaW5lZCIhPXR5cGVvZiB5LnJlYWR5P3kucmVhZHkoYSk6YShuKToodm9pZCAwIT09YS5zZWxlY3
RvciYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KSxuLm1ha2VBc
nJheShhLHRoaXMpKX07Qi5wcm90b3R5cGU9bi5mbix5PW4oeik7dmFyIEM9L14oPzpwYXJlbnRzfHByZXYo
PzpVbnRpbHxBbGwpKS8sRD17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtuLmV
4dGVuZCh7ZGlyOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlPWFbYl07d2hpbGUoZSYmOSE9PWUubm9kZV
R5cGUmJih2b2lkIDA9PT1jfHwxIT09ZS5ub2RlVHlwZXx8IW4oZSkuaXMoYykpKTE9PT1lLm5vZGVUeXBlJ
iZkLnB1c2goZSksZT1lW2JdO3JldHVybiBkfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVtd
O2E7YT1hLm5leHRTaWJsaW5nKTE9PT1hLm5vZGVUeXBlJiZhIT09YiYmYy5wdXNoKGEpO3JldHVybiBjfX0
pLG4uZm4uZXh0ZW5kKHtoYXM6ZnVuY3Rpb24oYSl7dmFyIGIsYz1uKGEsdGhpcyksZD1jLmxlbmd0aDtyZX
R1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IoYj0wO2Q+YjtiKyspaWYobi5jb250YWlucyh0aGlzL
GNbYl0pKXJldHVybiEwfSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXtmb3IodmFyIGMsZD0wLGU9dGhpcy5s
ZW5ndGgsZj1bXSxnPXUudGVzdChhKXx8InN0cmluZyIhPXR5cGVvZiBhP24oYSxifHx0aGlzLmNvbnRleHQ
pOjA7ZT5kO2QrKylmb3IoYz10aGlzW2RdO2MmJmMhPT1iO2M9Yy5wYXJlbnROb2RlKWlmKGMubm9kZVR5cG
U8MTEmJihnP2cuaW5kZXgoYyk+LTE6MT09PWMubm9kZVR5cGUmJm4uZmluZC5tYXRjaGVzU2VsZWN0b3IoY
yxhKSkpe2YucHVzaChjKTticmVha31yZXR1cm4gdGhpcy5wdXNoU3RhY2soZi5sZW5ndGg+MT9uLnVuaXF1
ZShmKTpmKX0saW5kZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/InN0cmluZyI9PXR5cGVvZiBhP24uaW5BcnJ
heSh0aGlzWzBdLG4oYSkpOm4uaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyk6dGhpc1swXSYmdGhpc1
swXS5wYXJlbnROb2RlP3RoaXMuZmlyc3QoKS5wcmV2QWxsKCkubGVuZ3RoOi0xfSxhZGQ6ZnVuY3Rpb24oY
SxiKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2sobi51bmlxdWUobi5tZXJnZSh0aGlzLmdldCgpLG4oYSxiKSkp
KX0sYWRkQmFjazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5hZGQobnVsbD09YT90aGlzLnByZXZPYmplY3Q
6dGhpcy5wcmV2T2JqZWN0LmZpbHRlcihhKSl9fSk7ZnVuY3Rpb24gRShhLGIpe2RvIGE9YVtiXTt3aGlsZS
hhJiYxIT09YS5ub2RlVHlwZSk7cmV0dXJuIGF9bi5lYWNoKHtwYXJlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9Y
S5wYXJlbnROb2RlO3JldHVybiBiJiYxMSE9PWIubm9kZVR5cGU/YjpudWxsfSxwYXJlbnRzOmZ1bmN0aW9u
KGEpe3JldHVybiBuLmRpcihhLCJwYXJlbnROb2RlIil9LHBhcmVudHNVbnRpbDpmdW5jdGlvbihhLGIsYyl
7cmV0dXJuIG4uZGlyKGEsInBhcmVudE5vZGUiLGMpfSxuZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBFKGEsIm
5leHRTaWJsaW5nIil9LHByZXY6ZnVuY3Rpb24oYSl7cmV0dXJuIEUoYSwicHJldmlvdXNTaWJsaW5nIil9L
G5leHRBbGw6ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZGlyKGEsIm5leHRTaWJsaW5nIil9LHByZXZBbGw6ZnVu
Y3Rpb24oYSl7cmV0dXJuIG4uZGlyKGEsInByZXZpb3VzU2libGluZyIpfSxuZXh0VW50aWw6ZnVuY3Rpb24
oYSxiLGMpe3JldHVybiBuLmRpcihhLCJuZXh0U2libGluZyIsYyl9LHByZXZVbnRpbDpmdW5jdGlvbihhLG
IsYyl7cmV0dXJuIG4uZGlyKGEsInByZXZpb3VzU2libGluZyIsYyl9LHNpYmxpbmdzOmZ1bmN0aW9uKGEpe
3JldHVybiBuLnNpYmxpbmcoKGEucGFyZW50Tm9kZXx8e30pLmZpcnN0Q2hpbGQsYSl9LGNoaWxkcmVuOmZ1
bmN0aW9uKGEpe3JldHVybiBuLnNpYmxpbmcoYS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oYSl
7cmV0dXJuIG4ubm9kZU5hbWUoYSwiaWZyYW1lIik/YS5jb250ZW50RG9jdW1lbnR8fGEuY29udGVudFdpbm
Rvdy5kb2N1bWVudDpuLm1lcmdlKFtdLGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe24uZm5bYV09Z
nVuY3Rpb24oYyxkKXt2YXIgZT1uLm1hcCh0aGlzLGIsYyk7cmV0dXJuIlVudGlsIiE9PWEuc2xpY2UoLTUp
JiYoZD1jKSxkJiYic3RyaW5nIj09dHlwZW9mIGQmJihlPW4uZmlsdGVyKGQsZSkpLHRoaXMubGVuZ3RoPjE
mJihEW2FdfHwoZT1uLnVuaXF1ZShlKSksQy50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSkpLHRoaXMucHVzaF
N0YWNrKGUpfX0pO3ZhciBGPS9cUysvZyxHPXt9O2Z1bmN0aW9uIEgoYSl7dmFyIGI9R1thXT17fTtyZXR1c
m4gbi5lYWNoKGEubWF0Y2goRil8fFtdLGZ1bmN0aW9uKGEsYyl7YltjXT0hMH0pLGJ9bi5DYWxsYmFja3M9
ZnVuY3Rpb24oYSl7YT0ic3RyaW5nIj09dHlwZW9mIGE/R1thXXx8SChhKTpuLmV4dGVuZCh7fSxhKTt2YXI
gYixjLGQsZSxmLGcsaD1bXSxpPSFhLm9uY2UmJltdLGo9ZnVuY3Rpb24obCl7Zm9yKGM9YS5tZW1vcnkmJm
wsZD0hMCxmPWd8fDAsZz0wLGU9aC5sZW5ndGgsYj0hMDtoJiZlPmY7ZisrKWlmKGhbZl0uYXBwbHkobFswX
SxsWzFdKT09PSExJiZhLnN0b3BPbkZhbHNlKXtjPSExO2JyZWFrfWI9ITEsaCYmKGk/aS5sZW5ndGgmJmoo
aS5zaGlmdCgpKTpjP2g9W106ay5kaXNhYmxlKCkpfSxrPXthZGQ6ZnVuY3Rpb24oKXtpZihoKXt2YXIgZD1
oLmxlbmd0aDshZnVuY3Rpb24gZihiKXtuLmVhY2goYixmdW5jdGlvbihiLGMpe3ZhciBkPW4udHlwZShjKT
siZnVuY3Rpb24iPT09ZD9hLnVuaXF1ZSYmay5oYXMoYyl8fGgucHVzaChjKTpjJiZjLmxlbmd0aCYmInN0c
mluZyIhPT1kJiZmKGMpfSl9KGFyZ3VtZW50cyksYj9lPWgubGVuZ3RoOmMmJihnPWQsaihjKSl9cmV0dXJu
IHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe3JldHVybiBoJiZuLmVhY2goYXJndW1lbnRzLGZ1bmN0aW9uKGE
sYyl7dmFyIGQ7d2hpbGUoKGQ9bi5pbkFycmF5KGMsaCxkKSk+LTEpaC5zcGxpY2UoZCwxKSxiJiYoZT49ZC
YmZS0tLGY+PWQmJmYtLSl9KSx0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bi5pbkFycmF5KGEsa
Ck+LTE6ISghaHx8IWgubGVuZ3RoKX0sZW1wdHk6ZnVuY3Rpb24oKXtyZXR1cm4gaD1bXSxlPTAsdGhpc30s
ZGlzYWJsZTpmdW5jdGlvbigpe3JldHVybiBoPWk9Yz12b2lkIDAsdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24
oKXtyZXR1cm4haH0sbG9jazpmdW5jdGlvbigpe3JldHVybiBpPXZvaWQgMCxjfHxrLmRpc2FibGUoKSx0aG
lzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4haX0sZmlyZVdpdGg6ZnVuY3Rpb24oYSxjKXtyZXR1cm4ha
Hx8ZCYmIWl8fChjPWN8fFtdLGM9W2EsYy5zbGljZT9jLnNsaWNlKCk6Y10sYj9pLnB1c2goYyk6aihjKSks
dGhpc30sZmlyZTpmdW5jdGlvbigpe3JldHVybiBrLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKSx0aGlzfSx
maXJlZDpmdW5jdGlvbigpe3JldHVybiEhZH19O3JldHVybiBrfSxuLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3
Rpb24oYSl7dmFyIGI9W1sicmVzb2x2ZSIsImRvbmUiLG4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLCJyZ
XNvbHZlZCJdLFsicmVqZWN0IiwiZmFpbCIsbi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksInJlamVjdGVk
Il0sWyJub3RpZnkiLCJwcm9ncmVzcyIsbi5DYWxsYmFja3MoIm1lbW9yeSIpXV0sYz0icGVuZGluZyIsZD1
7c3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gY30sYWx3YXlzOmZ1bmN0aW9uKCl7cmV0dXJuIGUuZG9uZShhcm
d1bWVudHMpLmZhaWwoYXJndW1lbnRzKSx0aGlzfSx0aGVuOmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO
3JldHVybiBuLkRlZmVycmVkKGZ1bmN0aW9uKGMpe24uZWFjaChiLGZ1bmN0aW9uKGIsZil7dmFyIGc9bi5p
c0Z1bmN0aW9uKGFbYl0pJiZhW2JdO2VbZlsxXV0oZnVuY3Rpb24oKXt2YXIgYT1nJiZnLmFwcGx5KHRoaXM
sYXJndW1lbnRzKTthJiZuLmlzRnVuY3Rpb24oYS5wcm9taXNlKT9hLnByb21pc2UoKS5kb25lKGMucmVzb2
x2ZSkuZmFpbChjLnJlamVjdCkucHJvZ3Jlc3MoYy5ub3RpZnkpOmNbZlswXSsiV2l0aCJdKHRoaXM9PT1kP
2MucHJvbWlzZSgpOnRoaXMsZz9bYV06YXJndW1lbnRzKX0pfSksYT1udWxsfSkucHJvbWlzZSgpfSxwcm9t
aXNlOmZ1bmN0aW9uKGEpe3JldHVybiBudWxsIT1hP24uZXh0ZW5kKGEsZCk6ZH19LGU9e307cmV0dXJuIGQ
ucGlwZT1kLnRoZW4sbi5lYWNoKGIsZnVuY3Rpb24oYSxmKXt2YXIgZz1mWzJdLGg9ZlszXTtkW2ZbMV1dPW
cuYWRkLGgmJmcuYWRkKGZ1bmN0aW9uKCl7Yz1ofSxiWzFeYV1bMl0uZGlzYWJsZSxiWzJdWzJdLmxvY2spL
GVbZlswXV09ZnVuY3Rpb24oKXtyZXR1cm4gZVtmWzBdKyJXaXRoIl0odGhpcz09PWU/ZDp0aGlzLGFyZ3Vt
ZW50cyksdGhpc30sZVtmWzBdKyJXaXRoIl09Zy5maXJlV2l0aH0pLGQucHJvbWlzZShlKSxhJiZhLmNhbGw
oZSxlKSxlfSx3aGVuOmZ1bmN0aW9uKGEpe3ZhciBiPTAsYz1kLmNhbGwoYXJndW1lbnRzKSxlPWMubGVuZ3
RoLGY9MSE9PWV8fGEmJm4uaXNGdW5jdGlvbihhLnByb21pc2UpP2U6MCxnPTE9PT1mP2E6bi5EZWZlcnJlZ
CgpLGg9ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmdW5jdGlvbihlKXtiW2FdPXRoaXMsY1thXT1hcmd1bWVu
dHMubGVuZ3RoPjE/ZC5jYWxsKGFyZ3VtZW50cyk6ZSxjPT09aT9nLm5vdGlmeVdpdGgoYixjKTotLWZ8fGc
ucmVzb2x2ZVdpdGgoYixjKX19LGksaixrO2lmKGU+MSlmb3IoaT1uZXcgQXJyYXkoZSksaj1uZXcgQXJyYX
koZSksaz1uZXcgQXJyYXkoZSk7ZT5iO2IrKyljW2JdJiZuLmlzRnVuY3Rpb24oY1tiXS5wcm9taXNlKT9jW
2JdLnByb21pc2UoKS5kb25lKGgoYixrLGMpKS5mYWlsKGcucmVqZWN0KS5wcm9ncmVzcyhoKGIsaixpKSk6
LS1mO3JldHVybiBmfHxnLnJlc29sdmVXaXRoKGssYyksZy5wcm9taXNlKCl9fSk7dmFyIEk7bi5mbi5yZWF
keT1mdW5jdGlvbihhKXtyZXR1cm4gbi5yZWFkeS5wcm9taXNlKCkuZG9uZShhKSx0aGlzfSxuLmV4dGVuZC
h7aXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9uLnJlYWR5V2FpdCsrO
m4ucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITA/IS0tbi5yZWFkeVdhaXQ6IW4uaXNS
ZWFkeSl7aWYoIXouYm9keSlyZXR1cm4gc2V0VGltZW91dChuLnJlYWR5KTtuLmlzUmVhZHk9ITAsYSE9PSE
wJiYtLW4ucmVhZHlXYWl0PjB8fChJLnJlc29sdmVXaXRoKHosW25dKSxuLmZuLnRyaWdnZXImJm4oeikudH
JpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5IikpfX19KTtmdW5jdGlvbiBKKCl7ei5hZGRFdmVudExpc3Rlb
mVyPyh6LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRP
TUNvbnRlbnRMb2FkZWQiLEssITEpLGEucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsSywhMSkpOih6LmR
ldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEspLGEuZGV0YWNoRXZlbnQoIm9ubG9hZCIsSykpfW
Z1bmN0aW9uIEsoKXsoei5hZGRFdmVudExpc3RlbmVyfHwibG9hZCI9PT1ldmVudC50eXBlfHwiY29tcGxld
GUiPT09ei5yZWFkeVN0YXRlKSYmKEooKSxuLnJlYWR5KCkpfW4ucmVhZHkucHJvbWlzZT1mdW5jdGlvbihi
KXtpZighSSlpZihJPW4uRGVmZXJyZWQoKSwiY29tcGxldGUiPT09ei5yZWFkeVN0YXRlKXNldFRpbWVvdXQ
obi5yZWFkeSk7ZWxzZSBpZih6LmFkZEV2ZW50TGlzdGVuZXIpei5hZGRFdmVudExpc3RlbmVyKCJET01Db2
50ZW50TG9hZGVkIixLLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLEssITEpO2Vsc2V7ei5hdHRhY
2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixLKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLEspO3ZhciBj
PSExO3RyeXtjPW51bGw9PWEuZnJhbWVFbGVtZW50JiZ6LmRvY3VtZW50RWxlbWVudH1jYXRjaChkKXt9YyY
mYy5kb1Njcm9sbCYmIWZ1bmN0aW9uIGUoKXtpZighbi5pc1JlYWR5KXt0cnl7Yy5kb1Njcm9sbCgibGVmdC
IpfWNhdGNoKGEpe3JldHVybiBzZXRUaW1lb3V0KGUsNTApfUooKSxuLnJlYWR5KCl9fSgpfXJldHVybiBJL
nByb21pc2UoYil9O3ZhciBMPSJ1bmRlZmluZWQiLE07Zm9yKE0gaW4gbihsKSlicmVhaztsLm93bkxhc3Q9
IjAiIT09TSxsLmlubGluZUJsb2NrTmVlZHNMYXlvdXQ9ITEsbihmdW5jdGlvbigpe3ZhciBhLGIsYz16Lmd
ldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07YyYmKGE9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLn
N0eWxlLmNzc1RleHQ9ImJvcmRlcjowO3dpZHRoOjA7aGVpZ2h0OjA7cG9zaXRpb246YWJzb2x1dGU7dG9wO
jA7bGVmdDotOTk5OXB4O21hcmdpbi10b3A6MXB4IixiPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYy5hcHBl
bmRDaGlsZChhKS5hcHBlbmRDaGlsZChiKSx0eXBlb2YgYi5zdHlsZS56b29tIT09TCYmKGIuc3R5bGUuY3N
zVGV4dD0iYm9yZGVyOjA7bWFyZ2luOjA7d2lkdGg6MXB4O3BhZGRpbmc6MXB4O2Rpc3BsYXk6aW5saW5lO3
pvb206MSIsKGwuaW5saW5lQmxvY2tOZWVkc0xheW91dD0zPT09Yi5vZmZzZXRXaWR0aCkmJihjLnN0eWxlL
npvb209MSkpLGMucmVtb3ZlQ2hpbGQoYSksYT1iPW51bGwpfSksZnVuY3Rpb24oKXt2YXIgYT16LmNyZWF0
ZUVsZW1lbnQoImRpdiIpO2lmKG51bGw9PWwuZGVsZXRlRXhwYW5kbyl7bC5kZWxldGVFeHBhbmRvPSEwO3R
yeXtkZWxldGUgYS50ZXN0fWNhdGNoKGIpe2wuZGVsZXRlRXhwYW5kbz0hMX19YT1udWxsfSgpLG4uYWNjZX
B0RGF0YT1mdW5jdGlvbihhKXt2YXIgYj1uLm5vRGF0YVsoYS5ub2RlTmFtZSsiICIpLnRvTG93ZXJDYXNlK
CldLGM9K2Eubm9kZVR5cGV8fDE7cmV0dXJuIDEhPT1jJiY5IT09Yz8hMTohYnx8YiE9PSEwJiZhLmdldEF0
dHJpYnV0ZSgiY2xhc3NpZCIpPT09Yn07dmFyIE49L14oPzpce1tcd1xXXSpcfXxcW1tcd1xXXSpcXSkkLyx
PPS8oW0EtWl0pL2c7ZnVuY3Rpb24gUChhLGIsYyl7aWYodm9pZCAwPT09YyYmMT09PWEubm9kZVR5cGUpe3
ZhciBkPSJkYXRhLSIrYi5yZXBsYWNlKE8sIi0kMSIpLnRvTG93ZXJDYXNlKCk7aWYoYz1hLmdldEF0dHJpY
nV0ZShkKSwic3RyaW5nIj09dHlwZW9mIGMpe3RyeXtjPSJ0cnVlIj09PWM/ITA6ImZhbHNlIj09PWM/ITE6
Im51bGwiPT09Yz9udWxsOitjKyIiPT09Yz8rYzpOLnRlc3QoYyk/bi5wYXJzZUpTT04oYyk6Y31jYXRjaCh
lKXt9bi5kYXRhKGEsYixjKX1lbHNlIGM9dm9pZCAwfXJldHVybiBjfWZ1bmN0aW9uIFEoYSl7dmFyIGI7Zm
9yKGIgaW4gYSlpZigoImRhdGEiIT09Ynx8IW4uaXNFbXB0eU9iamVjdChhW2JdKSkmJiJ0b0pTT04iIT09Y
ilyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBSKGEsYixkLGUpe2lmKG4uYWNjZXB0RGF0YShhKSl7dmFy
IGYsZyxoPW4uZXhwYW5kbyxpPWEubm9kZVR5cGUsaj1pP24uY2FjaGU6YSxrPWk/YVtoXTphW2hdJiZoO2l
mKGsmJmpba10mJihlfHxqW2tdLmRhdGEpfHx2b2lkIDAhPT1kfHwic3RyaW5nIiE9dHlwZW9mIGIpcmV0dX
JuIGt8fChrPWk/YVtoXT1jLnBvcCgpfHxuLmd1aWQrKzpoKSxqW2tdfHwoaltrXT1pP3t9Ont0b0pTT046b
i5ub29wfSksKCJvYmplY3QiPT10eXBlb2YgYnx8ImZ1bmN0aW9uIj09dHlwZW9mIGIpJiYoZT9qW2tdPW4u
ZXh0ZW5kKGpba10sYik6altrXS5kYXRhPW4uZXh0ZW5kKGpba10uZGF0YSxiKSksZz1qW2tdLGV8fChnLmR
hdGF8fChnLmRhdGE9e30pLGc9Zy5kYXRhKSx2b2lkIDAhPT1kJiYoZ1tuLmNhbWVsQ2FzZShiKV09ZCksIn
N0cmluZyI9PXR5cGVvZiBiPyhmPWdbYl0sbnVsbD09ZiYmKGY9Z1tuLmNhbWVsQ2FzZShiKV0pKTpmPWcsZ
gp9fWZ1bmN0aW9uIFMoYSxiLGMpe2lmKG4uYWNjZXB0RGF0YShhKSl7dmFyIGQsZSxmPWEubm9kZVR5cGUs
Zz1mP24uY2FjaGU6YSxoPWY/YVtuLmV4cGFuZG9dOm4uZXhwYW5kbztpZihnW2hdKXtpZihiJiYoZD1jP2d
baF06Z1toXS5kYXRhKSl7bi5pc0FycmF5KGIpP2I9Yi5jb25jYXQobi5tYXAoYixuLmNhbWVsQ2FzZSkpOm
IgaW4gZD9iPVtiXTooYj1uLmNhbWVsQ2FzZShiKSxiPWIgaW4gZD9bYl06Yi5zcGxpdCgiICIpKSxlPWIub
GVuZ3RoO3doaWxlKGUtLSlkZWxldGUgZFtiW2VdXTtpZihjPyFRKGQpOiFuLmlzRW1wdHlPYmplY3QoZCkp
cmV0dXJufShjfHwoZGVsZXRlIGdbaF0uZGF0YSxRKGdbaF0pKSkmJihmP24uY2xlYW5EYXRhKFthXSwhMCk
6bC5kZWxldGVFeHBhbmRvfHxnIT1nLndpbmRvdz9kZWxldGUgZ1toXTpnW2hdPW51bGwpfX19bi5leHRlbm
Qoe2NhY2hlOnt9LG5vRGF0YTp7ImFwcGxldCAiOiEwLCJlbWJlZCAiOiEwLCJvYmplY3QgIjoiY2xzaWQ6R
DI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIn0saGFzRGF0YTpmdW5jdGlvbihhKXtyZXR1
cm4gYT1hLm5vZGVUeXBlP24uY2FjaGVbYVtuLmV4cGFuZG9dXTphW24uZXhwYW5kb10sISFhJiYhUShhKX0
sZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIFIoYSxiLGMpfSxyZW1vdmVEYXRhOmZ1bmN0aW9uKGEsYi
l7cmV0dXJuIFMoYSxiKX0sX2RhdGE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBSKGEsYixjLCEwKX0sX3Jlb
W92ZURhdGE6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gUyhhLGIsITApfX0pLG4uZm4uZXh0ZW5kKHtkYXRhOmZ1
bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9dGhpc1swXSxnPWYmJmYuYXR0cmlidXRlcztpZih2b2lkIDA9PT1
hKXtpZih0aGlzLmxlbmd0aCYmKGU9bi5kYXRhKGYpLDE9PT1mLm5vZGVUeXBlJiYhbi5fZGF0YShmLCJwYX
JzZWRBdHRycyIpKSl7Yz1nLmxlbmd0aDt3aGlsZShjLS0pZD1nW2NdLm5hbWUsMD09PWQuaW5kZXhPZigiZ
GF0YS0iKSYmKGQ9bi5jYW1lbENhc2UoZC5zbGljZSg1KSksUChmLGQsZVtkXSkpO24uX2RhdGEoZiwicGFy
c2VkQXR0cnMiLCEwKX1yZXR1cm4gZX1yZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGE/dGhpcy5lYWNoKGZ1bmN
0aW9uKCl7bi5kYXRhKHRoaXMsYSl9KTphcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKGZ1bmN0aW9uKC
l7bi5kYXRhKHRoaXMsYSxiKX0pOmY/UChmLGEsbi5kYXRhKGYsYSkpOnZvaWQgMH0scmVtb3ZlRGF0YTpmd
W5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5yZW1vdmVEYXRhKHRoaXMsYSl9KX19
KSxuLmV4dGVuZCh7cXVldWU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO3JldHVybiBhPyhiPShifHwiZngiKSs
icXVldWUiLGQ9bi5fZGF0YShhLGIpLGMmJighZHx8bi5pc0FycmF5KGMpP2Q9bi5fZGF0YShhLGIsbi5tYW
tlQXJyYXkoYykpOmQucHVzaChjKSksZHx8W10pOnZvaWQgMH0sZGVxdWV1ZTpmdW5jdGlvbihhLGIpe2I9Y
nx8ImZ4Ijt2YXIgYz1uLnF1ZXVlKGEsYiksZD1jLmxlbmd0aCxlPWMuc2hpZnQoKSxmPW4uX3F1ZXVlSG9v
a3MoYSxiKSxnPWZ1bmN0aW9uKCl7bi5kZXF1ZXVlKGEsYil9OyJpbnByb2dyZXNzIj09PWUmJihlPWMuc2h
pZnQoKSxkLS0pLGUmJigiZngiPT09YiYmYy51bnNoaWZ0KCJpbnByb2dyZXNzIiksZGVsZXRlIGYuc3RvcC
xlLmNhbGwoYSxnLGYpKSwhZCYmZiYmZi5lbXB0eS5maXJlKCl9LF9xdWV1ZUhvb2tzOmZ1bmN0aW9uKGEsY
il7dmFyIGM9YisicXVldWVIb29rcyI7cmV0dXJuIG4uX2RhdGEoYSxjKXx8bi5fZGF0YShhLGMse2VtcHR5
Om4uQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLmFkZChmdW5jdGlvbigpe24uX3JlbW92ZURhdGEoYSxiKyJ
xdWV1ZSIpLG4uX3JlbW92ZURhdGEoYSxjKX0pfSl9fSksbi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKG
EsYil7dmFyIGM9MjtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT0iZngiLGMtLSksYXJndW1lb
nRzLmxlbmd0aDxjP24ucXVldWUodGhpc1swXSxhKTp2b2lkIDA9PT1iP3RoaXM6dGhpcy5lYWNoKGZ1bmN0
aW9uKCl7dmFyIGM9bi5xdWV1ZSh0aGlzLGEsYik7bi5fcXVldWVIb29rcyh0aGlzLGEpLCJmeCI9PT1hJiY
iaW5wcm9ncmVzcyIhPT1jWzBdJiZuLmRlcXVldWUodGhpcyxhKX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKGEpe3
JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmRlcXVldWUodGhpcyxhKX0pfSxjbGVhclF1ZXVlOmZ1b
mN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYil7
dmFyIGMsZD0xLGU9bi5EZWZlcnJlZCgpLGY9dGhpcyxnPXRoaXMubGVuZ3RoLGg9ZnVuY3Rpb24oKXstLWR
8fGUucmVzb2x2ZVdpdGgoZixbZl0pfTsic3RyaW5nIiE9dHlwZW9mIGEmJihiPWEsYT12b2lkIDApLGE9YX
x8ImZ4Ijt3aGlsZShnLS0pYz1uLl9kYXRhKGZbZ10sYSsicXVldWVIb29rcyIpLGMmJmMuZW1wdHkmJihkK
yssYy5lbXB0eS5hZGQoaCkpO3JldHVybiBoKCksZS5wcm9taXNlKGIpfX0pO3ZhciBUPS9bKy1dPyg/Olxk
KlwufClcZCsoPzpbZUVdWystXT9cZCt8KS8uc291cmNlLFU9WyJUb3AiLCJSaWdodCIsIkJvdHRvbSIsIkx
lZnQiXSxWPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9Ynx8YSwibm9uZSI9PT1uLmNzcyhhLCJkaXNwbGF5Ii
l8fCFuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKX0sVz1uLmFjY2Vzcz1mdW5jdGlvbihhLGIsYyxkL
GUsZixnKXt2YXIgaD0wLGk9YS5sZW5ndGgsaj1udWxsPT1jO2lmKCJvYmplY3QiPT09bi50eXBlKGMpKXtl
PSEwO2ZvcihoIGluIGMpbi5hY2Nlc3MoYSxiLGgsY1toXSwhMCxmLGcpfWVsc2UgaWYodm9pZCAwIT09ZCY
mKGU9ITAsbi5pc0Z1bmN0aW9uKGQpfHwoZz0hMCksaiYmKGc/KGIuY2FsbChhLGQpLGI9bnVsbCk6KGo9Yi
xiPWZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gai5jYWxsKG4oYSksYyl9KSksYikpZm9yKDtpPmg7aCsrKWIoY
VtoXSxjLGc/ZDpkLmNhbGwoYVtoXSxoLGIoYVtoXSxjKSkpO3JldHVybiBlP2E6aj9iLmNhbGwoYSk6aT9i
KGFbMF0sYyk6Zn0sWD0vXig/OmNoZWNrYm94fHJhZGlvKSQvaTshZnVuY3Rpb24oKXt2YXIgYT16LmNyZWF
0ZURvY3VtZW50RnJhZ21lbnQoKSxiPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYz16LmNyZWF0ZUVsZW1lbn
QoImlucHV0Iik7aWYoYi5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxiLmlubmVySFRNTD0iICA8b
Gluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+IixsLmxlYWRpbmdXaGl0ZXNwYWNlPTM9
PT1iLmZpcnN0Q2hpbGQubm9kZVR5cGUsbC50Ym9keT0hYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGJvZHk
iKS5sZW5ndGgsbC5odG1sU2VyaWFsaXplPSEhYi5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbm
d0aCxsLmh0bWw1Q2xvbmU9Ijw6bmF2PjwvOm5hdj4iIT09ei5jcmVhdGVFbGVtZW50KCJuYXYiKS5jbG9uZ
U5vZGUoITApLm91dGVySFRNTCxjLnR5cGU9ImNoZWNrYm94IixjLmNoZWNrZWQ9ITAsYS5hcHBlbmRDaGls
ZChjKSxsLmFwcGVuZENoZWNrZWQ9Yy5jaGVja2VkLGIuaW5uZXJIVE1MPSI8dGV4dGFyZWE+eDwvdGV4dGF
yZWE+IixsLm5vQ2xvbmVDaGVja2VkPSEhYi5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5kZWZhdWx0VmFsdW
UsYS5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD0iPGlucHV0IHR5cGU9J3JhZGlvJyBjaGVja2VkPSdja
GVja2VkJyBuYW1lPSd0Jy8+IixsLmNoZWNrQ2xvbmU9Yi5jbG9uZU5vZGUoITApLmNsb25lTm9kZSghMCku
bGFzdENoaWxkLmNoZWNrZWQsbC5ub0Nsb25lRXZlbnQ9ITAsYi5hdHRhY2hFdmVudCYmKGIuYXR0YWNoRXZ
lbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7bC5ub0Nsb25lRXZlbnQ9ITF9KSxiLmNsb25lTm9kZSghMCkuY2
xpY2soKSksbnVsbD09bC5kZWxldGVFeHBhbmRvKXtsLmRlbGV0ZUV4cGFuZG89ITA7dHJ5e2RlbGV0ZSBiL
nRlc3R9Y2F0Y2goZCl7bC5kZWxldGVFeHBhbmRvPSExfX1hPWI9Yz1udWxsfSgpLGZ1bmN0aW9uKCl7dmFy
IGIsYyxkPXouY3JlYXRlRWxlbWVudCgiZGl2Iik7Zm9yKGIgaW57c3VibWl0OiEwLGNoYW5nZTohMCxmb2N
1c2luOiEwfSljPSJvbiIrYiwobFtiKyJCdWJibGVzIl09YyBpbiBhKXx8KGQuc2V0QXR0cmlidXRlKGMsIn
QiKSxsW2IrIkJ1YmJsZXMiXT1kLmF0dHJpYnV0ZXNbY10uZXhwYW5kbz09PSExKTtkPW51bGx9KCk7dmFyI
Fk9L14oPzppbnB1dHxzZWxlY3R8dGV4dGFyZWEpJC9pLFo9L15rZXkvLCQ9L14oPzptb3VzZXxjb250ZXh0
bWVudSl8Y2xpY2svLF89L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLGFiPS9eKFteLl0qKSg
/OlwuKC4rKXwpJC87ZnVuY3Rpb24gYmIoKXtyZXR1cm4hMH1mdW5jdGlvbiBjYigpe3JldHVybiExfWZ1bm
N0aW9uIGRiKCl7dHJ5e3JldHVybiB6LmFjdGl2ZUVsZW1lbnR9Y2F0Y2goYSl7fX1uLmV2ZW50PXtnbG9iY
Ww6e30sYWRkOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxvLHAscSxyPW4uX2Rh
dGEoYSk7aWYocil7Yy5oYW5kbGVyJiYoaT1jLGM9aS5oYW5kbGVyLGU9aS5zZWxlY3RvciksYy5ndWlkfHw
oYy5ndWlkPW4uZ3VpZCsrKSwoZz1yLmV2ZW50cyl8fChnPXIuZXZlbnRzPXt9KSwoaz1yLmhhbmRsZSl8fC
hrPXIuaGFuZGxlPWZ1bmN0aW9uKGEpe3JldHVybiB0eXBlb2Ygbj09PUx8fGEmJm4uZXZlbnQudHJpZ2dlc
mVkPT09YS50eXBlP3ZvaWQgMDpuLmV2ZW50LmRpc3BhdGNoLmFwcGx5KGsuZWxlbSxhcmd1bWVudHMpfSxr
LmVsZW09YSksYj0oYnx8IiIpLm1hdGNoKEYpfHxbIiJdLGg9Yi5sZW5ndGg7d2hpbGUoaC0tKWY9YWIuZXh
lYyhiW2hdKXx8W10sbz1xPWZbMV0scD0oZlsyXXx8IiIpLnNwbGl0KCIuIikuc29ydCgpLG8mJihqPW4uZX
ZlbnQuc3BlY2lhbFtvXXx8e30sbz0oZT9qLmRlbGVnYXRlVHlwZTpqLmJpbmRUeXBlKXx8byxqPW4uZXZlb
nQuc3BlY2lhbFtvXXx8e30sbD1uLmV4dGVuZCh7dHlwZTpvLG9yaWdUeXBlOnEsZGF0YTpkLGhhbmRsZXI6
YyxndWlkOmMuZ3VpZCxzZWxlY3RvcjplLG5lZWR
zQ29udGV4dDplJiZuLmV4cHIubWF0Y2gubmVlZHNDb250ZXh0LnRlc3QoZSksbmFtZXNwYWNlOnAuam9pbi
giLiIpfSxpKSwobT1nW29dKXx8KG09Z1tvXT1bXSxtLmRlbGVnYXRlQ291bnQ9MCxqLnNldHVwJiZqLnNld
HVwLmNhbGwoYSxkLHAsaykhPT0hMXx8KGEuYWRkRXZlbnRMaXN0ZW5lcj9hLmFkZEV2ZW50TGlzdGVuZXIo
byxrLCExKTphLmF0dGFjaEV2ZW50JiZhLmF0dGFjaEV2ZW50KCJvbiIrbyxrKSkpLGouYWRkJiYoai5hZGQ
uY2FsbChhLGwpLGwuaGFuZGxlci5ndWlkfHwobC5oYW5kbGVyLmd1aWQ9Yy5ndWlkKSksZT9tLnNwbGljZS
htLmRlbGVnYXRlQ291bnQrKywwLGwpOm0ucHVzaChsKSxuLmV2ZW50Lmdsb2JhbFtvXT0hMCk7YT1udWxsf
X0scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbSxvLHAscSxyPW4uaGFz
RGF0YShhKSYmbi5fZGF0YShhKTtpZihyJiYoaz1yLmV2ZW50cykpe2I9KGJ8fCIiKS5tYXRjaChGKXx8WyI
iXSxqPWIubGVuZ3RoO3doaWxlKGotLSlpZihoPWFiLmV4ZWMoYltqXSl8fFtdLG89cT1oWzFdLHA9KGhbMl
18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxvKXtsPW4uZXZlbnQuc3BlY2lhbFtvXXx8e30sbz0oZD9sLmRlb
GVnYXRlVHlwZTpsLmJpbmRUeXBlKXx8byxtPWtbb118fFtdLGg9aFsyXSYmbmV3IFJlZ0V4cCgiKF58XFwu
KSIrcC5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcXC58JCkiKSxpPWY9bS5sZW5ndGg7d2hpbGUoZi0tKWc
9bVtmXSwhZSYmcSE9PWcub3JpZ1R5cGV8fGMmJmMuZ3VpZCE9PWcuZ3VpZHx8aCYmIWgudGVzdChnLm5hbW
VzcGFjZSl8fGQmJmQhPT1nLnNlbGVjdG9yJiYoIioqIiE9PWR8fCFnLnNlbGVjdG9yKXx8KG0uc3BsaWNlK
GYsMSksZy5zZWxlY3RvciYmbS5kZWxlZ2F0ZUNvdW50LS0sbC5yZW1vdmUmJmwucmVtb3ZlLmNhbGwoYSxn
KSk7aSYmIW0ubGVuZ3RoJiYobC50ZWFyZG93biYmbC50ZWFyZG93bi5jYWxsKGEscCxyLmhhbmRsZSkhPT0
hMXx8bi5yZW1vdmVFdmVudChhLG8sci5oYW5kbGUpLGRlbGV0ZSBrW29dKX1lbHNlIGZvcihvIGluIGspbi
5ldmVudC5yZW1vdmUoYSxvK2Jbal0sYyxkLCEwKTtuLmlzRW1wdHlPYmplY3QoaykmJihkZWxldGUgci5oY
W5kbGUsbi5fcmVtb3ZlRGF0YShhLCJldmVudHMiKSl9fSx0cmlnZ2VyOmZ1bmN0aW9uKGIsYyxkLGUpe3Zh
ciBmLGcsaCxpLGssbCxtLG89W2R8fHpdLHA9ai5jYWxsKGIsInR5cGUiKT9iLnR5cGU6YixxPWouY2FsbCh
iLCJuYW1lc3BhY2UiKT9iLm5hbWVzcGFjZS5zcGxpdCgiLiIpOltdO2lmKGg9bD1kPWR8fHosMyE9PWQubm
9kZVR5cGUmJjghPT1kLm5vZGVUeXBlJiYhXy50ZXN0KHArbi5ldmVudC50cmlnZ2VyZWQpJiYocC5pbmRle
E9mKCIuIik+PTAmJihxPXAuc3BsaXQoIi4iKSxwPXEuc2hpZnQoKSxxLnNvcnQoKSksZz1wLmluZGV4T2Yo
IjoiKTwwJiYib24iK3AsYj1iW24uZXhwYW5kb10/YjpuZXcgbi5FdmVudChwLCJvYmplY3QiPT10eXBlb2Y
gYiYmYiksYi5pc1RyaWdnZXI9ZT8yOjMsYi5uYW1lc3BhY2U9cS5qb2luKCIuIiksYi5uYW1lc3BhY2Vfcm
U9Yi5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIrcS5qb2luKCJcXC4oPzouKlxcLnwpIikrIihcX
C58JCkiKTpudWxsLGIucmVzdWx0PXZvaWQgMCxiLnRhcmdldHx8KGIudGFyZ2V0PWQpLGM9bnVsbD09Yz9b
Yl06bi5tYWtlQXJyYXkoYyxbYl0pLGs9bi5ldmVudC5zcGVjaWFsW3BdfHx7fSxlfHwhay50cmlnZ2VyfHx
rLnRyaWdnZXIuYXBwbHkoZCxjKSE9PSExKSl7aWYoIWUmJiFrLm5vQnViYmxlJiYhbi5pc1dpbmRvdyhkKS
l7Zm9yKGk9ay5kZWxlZ2F0ZVR5cGV8fHAsXy50ZXN0KGkrcCl8fChoPWgucGFyZW50Tm9kZSk7aDtoPWguc
GFyZW50Tm9kZSlvLnB1c2goaCksbD1oO2w9PT0oZC5vd25lckRvY3VtZW50fHx6KSYmby5wdXNoKGwuZGVm
YXVsdFZpZXd8fGwucGFyZW50V2luZG93fHxhKX1tPTA7d2hpbGUoKGg9b1ttKytdKSYmIWIuaXNQcm9wYWd
hdGlvblN0b3BwZWQoKSliLnR5cGU9bT4xP2k6ay5iaW5kVHlwZXx8cCxmPShuLl9kYXRhKGgsImV2ZW50cy
IpfHx7fSlbYi50eXBlXSYmbi5fZGF0YShoLCJoYW5kbGUiKSxmJiZmLmFwcGx5KGgsYyksZj1nJiZoW2ddL
GYmJmYuYXBwbHkmJm4uYWNjZXB0RGF0YShoKSYmKGIucmVzdWx0PWYuYXBwbHkoaCxjKSxiLnJlc3VsdD09
PSExJiZiLnByZXZlbnREZWZhdWx0KCkpO2lmKGIudHlwZT1wLCFlJiYhYi5pc0RlZmF1bHRQcmV2ZW50ZWQ
oKSYmKCFrLl9kZWZhdWx0fHxrLl9kZWZhdWx0LmFwcGx5KG8ucG9wKCksYyk9PT0hMSkmJm4uYWNjZXB0RG
F0YShkKSYmZyYmZFtwXSYmIW4uaXNXaW5kb3coZCkpe2w9ZFtnXSxsJiYoZFtnXT1udWxsKSxuLmV2ZW50L
nRyaWdnZXJlZD1wO3RyeXtkW3BdKCl9Y2F0Y2gocil7fW4uZXZlbnQudHJpZ2dlcmVkPXZvaWQgMCxsJiYo
ZFtnXT1sKX1yZXR1cm4gYi5yZXN1bHR9fSxkaXNwYXRjaDpmdW5jdGlvbihhKXthPW4uZXZlbnQuZml4KGE
pO3ZhciBiLGMsZSxmLGcsaD1bXSxpPWQuY2FsbChhcmd1bWVudHMpLGo9KG4uX2RhdGEodGhpcywiZXZlbn
RzIil8fHt9KVthLnR5cGVdfHxbXSxrPW4uZXZlbnQuc3BlY2lhbFthLnR5cGVdfHx7fTtpZihpWzBdPWEsY
S5kZWxlZ2F0ZVRhcmdldD10aGlzLCFrLnByZURpc3BhdGNofHxrLnByZURpc3BhdGNoLmNhbGwodGhpcyxh
KSE9PSExKXtoPW4uZXZlbnQuaGFuZGxlcnMuY2FsbCh0aGlzLGEsaiksYj0wO3doaWxlKChmPWhbYisrXSk
mJiFhLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe2EuY3VycmVudFRhcmdldD1mLmVsZW0sZz0wO3doaWxlKC
hlPWYuaGFuZGxlcnNbZysrXSkmJiFhLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkKCkpKCFhLm5hb
WVzcGFjZV9yZXx8YS5uYW1lc3BhY2VfcmUudGVzdChlLm5hbWVzcGFjZSkpJiYoYS5oYW5kbGVPYmo9ZSxh
LmRhdGE9ZS5kYXRhLGM9KChuLmV2ZW50LnNwZWNpYWxbZS5vcmlnVHlwZV18fHt9KS5oYW5kbGV8fGUuaGF
uZGxlcikuYXBwbHkoZi5lbGVtLGkpLHZvaWQgMCE9PWMmJihhLnJlc3VsdD1jKT09PSExJiYoYS5wcmV2ZW
50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCkpKX1yZXR1cm4gay5wb3N0RGlzcGF0Y2gmJmsucG9zd
ERpc3BhdGNoLmNhbGwodGhpcyxhKSxhLnJlc3VsdH19LGhhbmRsZXJzOmZ1bmN0aW9uKGEsYil7dmFyIGMs
ZCxlLGYsZz1bXSxoPWIuZGVsZWdhdGVDb3VudCxpPWEudGFyZ2V0O2lmKGgmJmkubm9kZVR5cGUmJighYS5
idXR0b258fCJjbGljayIhPT1hLnR5cGUpKWZvcig7aSE9dGhpcztpPWkucGFyZW50Tm9kZXx8dGhpcylpZi
gxPT09aS5ub2RlVHlwZSYmKGkuZGlzYWJsZWQhPT0hMHx8ImNsaWNrIiE9PWEudHlwZSkpe2ZvcihlPVtdL
GY9MDtoPmY7ZisrKWQ9YltmXSxjPWQuc2VsZWN0b3IrIiAiLHZvaWQgMD09PWVbY10mJihlW2NdPWQubmVl
ZHNDb250ZXh0P24oYyx0aGlzKS5pbmRleChpKT49MDpuLmZpbmQoYyx0aGlzLG51bGwsW2ldKS5sZW5ndGg
pLGVbY10mJmUucHVzaChkKTtlLmxlbmd0aCYmZy5wdXNoKHtlbGVtOmksaGFuZGxlcnM6ZX0pfXJldHVybi
BoPGIubGVuZ3RoJiZnLnB1c2goe2VsZW06dGhpcyxoYW5kbGVyczpiLnNsaWNlKGgpfSksZ30sZml4OmZ1b
mN0aW9uKGEpe2lmKGFbbi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgYixjLGQsZT1hLnR5cGUsZj1hLGc9dGhp
cy5maXhIb29rc1tlXTtnfHwodGhpcy5maXhIb29rc1tlXT1nPSQudGVzdChlKT90aGlzLm1vdXNlSG9va3M
6Wi50ZXN0KGUpP3RoaXMua2V5SG9va3M6e30pLGQ9Zy5wcm9wcz90aGlzLnByb3BzLmNvbmNhdChnLnByb3
BzKTp0aGlzLnByb3BzLGE9bmV3IG4uRXZlbnQoZiksYj1kLmxlbmd0aDt3aGlsZShiLS0pYz1kW2JdLGFbY
109ZltjXTtyZXR1cm4gYS50YXJnZXR8fChhLnRhcmdldD1mLnNyY0VsZW1lbnR8fHopLDM9PT1hLnRhcmdl
dC5ub2RlVHlwZSYmKGEudGFyZ2V0PWEudGFyZ2V0LnBhcmVudE5vZGUpLGEubWV0YUtleT0hIWEubWV0YUt
leSxnLmZpbHRlcj9nLmZpbHRlcihhLGYpOmF9LHByb3BzOiJhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIG
N0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtle
SB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6
e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbih
hLGIpe3JldHVybiBudWxsPT1hLndoaWNoJiYoYS53aGljaD1udWxsIT1iLmNoYXJDb2RlP2IuY2hhckNvZG
U6Yi5rZXlDb2RlKSxhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZ
W50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRv
RWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGUsZj1iLmJ1dHRvbix
nPWIuZnJvbUVsZW1lbnQ7cmV0dXJuIG51bGw9PWEucGFnZVgmJm51bGwhPWIuY2xpZW50WCYmKGQ9YS50YX
JnZXQub3duZXJEb2N1bWVudHx8eixlPWQuZG9jdW1lbnRFbGVtZW50LGM9ZC5ib2R5LGEucGFnZVg9Yi5jb
GllbnRYKyhlJiZlLnNjcm9sbExlZnR8fGMmJmMuc2Nyb2xsTGVmdHx8MCktKGUmJmUuY2xpZW50TGVmdHx8
YyYmYy5jbGllbnRMZWZ0fHwwKSxhLnBhZ2VZPWIuY2xpZW50WSsoZSYmZS5zY3JvbGxUb3B8fGMmJmMuc2N
yb2xsVG9wfHwwKS0oZSYmZS5jbGllbnRUb3B8fGMmJmMuY2xpZW50VG9wfHwwKSksIWEucmVsYXRlZFRhcm
dldCYmZyYmKGEucmVsYXRlZFRhcmdldD1nPT09YS50YXJnZXQ/Yi50b0VsZW1lbnQ6ZyksYS53aGljaHx8d
m9pZCAwPT09Znx8KGEud2hpY2g9MSZmPzE6MiZmPzM6NCZmPzI6MCksYX19LHNwZWNpYWw6e2xvYWQ6e25v
QnViYmxlOiEwfSxmb2N1czp7dHJpZ2dlcjpmdW5jdGlvbigpe2lmKHRoaXMhPT1kYigpJiZ0aGlzLmZvY3V
zKXRyeXtyZXR1cm4gdGhpcy5mb2N1cygpLCExfWNhdGNoKGEpe319LGRlbGVnYXRlVHlwZToiZm9jdXNpbi
J9LGJsdXI6e3RyaWdnZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcz09PWRiKCkmJnRoaXMuYmx1cj8odGhpc
y5ibHVyKCksITEpOnZvaWQgMH0sZGVsZWdhdGVUeXBlOiJmb2N1c291dCJ9LGNsaWNrOnt0cmlnZ2VyOmZ1
bmN0aW9uKCl7cmV0dXJuIG4ubm9kZU5hbWUodGhpcywiaW5wdXQiKSYmImNoZWNrYm94Ij09PXRoaXMudHl
wZSYmdGhpcy5jbGljaz8odGhpcy5jbGljaygpLCExKTp2b2lkIDB9LF9kZWZhdWx0OmZ1bmN0aW9uKGEpe3
JldHVybiBuLm5vZGVOYW1lKGEudGFyZ2V0LCJhIil9fSxiZWZvcmV1bmxvYWQ6e3Bvc3REaXNwYXRjaDpmd
W5jdGlvbihhKXt2b2lkIDAhPT1hLnJlc3VsdCYmKGEub3JpZ2luYWxFdmVudC5yZXR1cm5WYWx1ZT1hLnJl
c3VsdCl9fX0sc2ltdWxhdGU6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9bi5leHRlbmQobmV3IG4uRXZlbnQ
sYyx7dHlwZTphLGlzU2ltdWxhdGVkOiEwLG9yaWdpbmFsRXZlbnQ6e319KTtkP24uZXZlbnQudHJpZ2dlci
hlLG51bGwsYik6bi5ldmVudC5kaXNwYXRjaC5jYWxsKGIsZSksZS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmY
y5wcmV2ZW50RGVmYXVsdCgpfX0sbi5yZW1vdmVFdmVudD16LnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rp
b24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl
9OmZ1bmN0aW9uKGEsYixjKXt2YXIgZD0ib24iK2I7YS5kZXRhY2hFdmVudCYmKHR5cGVvZiBhW2RdPT09TC
YmKGFbZF09bnVsbCksYS5kZXRhY2hFdmVudChkLGMpKX0sbi5FdmVudD1mdW5jdGlvbihhLGIpe3JldHVyb
iB0aGlzIGluc3RhbmNlb2Ygbi5FdmVudD8oYSYmYS50eXBlPyh0aGlzLm9yaWdpbmFsRXZlbnQ9YSx0aGlz
LnR5cGU9YS50eXBlLHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEuZGVmYXVsdFByZXZlbnRlZHx8dm9pZCA
wPT09YS5kZWZhdWx0UHJldmVudGVkJiYoYS5yZXR1cm5WYWx1ZT09PSExfHxhLmdldFByZXZlbnREZWZhdW
x0JiZhLmdldFByZXZlbnREZWZhdWx0KCkpP2JiOmNiKTp0aGlzLnR5cGU9YSxiJiZuLmV4dGVuZCh0aGlzL
GIpLHRoaXMudGltZVN0YW1wPWEmJmEudGltZVN0YW1wfHxuLm5vdygpLHZvaWQodGhpc1tuLmV4cGFuZG9d
PSEwKSk6bmV3IG4uRXZlbnQoYSxiKX0sbi5FdmVudC5wcm90b3R5cGU9e2lzRGVmYXVsdFByZXZlbnRlZDp
jYixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpjYixpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDpjYixwcm
V2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt0aGlzLmlzRGVmYXVsd
FByZXZlbnRlZD1iYixhJiYoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5W
YWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMub3JpZ2luYWxFdmVudDt
0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWJiLGEmJihhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcG
FnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvb
igpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9YmIsdGhpcy5zdG9wUHJvcGFnYXRpb24o
KX19LG4uZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN
0aW9uKGEsYil7bi5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZT
pmdW5jdGlvbihhKXt2YXIgYyxkPXRoaXMsZT1hLnJlbGF0ZWRUYXJnZXQsZj1hLmhhbmRsZU9iajtyZXR1c
m4oIWV8fGUhPT1kJiYhbi5jb250YWlucyhkLGUpKSYmKGEudHlwZT1mLm9yaWdUeXBlLGM9Zi5oYW5kbGVy
LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YiksY319fSksbC5zdWJtaXRCdWJibGVzfHwobi5ldmV
udC5zcGVjaWFsLnN1Ym1pdD17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1cm4gbi5ub2RlTmFtZSh0aGlzLCJmb3
JtIik/ITE6dm9pZCBuLmV2ZW50LmFkZCh0aGlzLCJjbGljay5fc3VibWl0IGtleXByZXNzLl9zdWJtaXQiL
GZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0LGM9bi5ub2RlTmFtZShiLCJpbnB1dCIpfHxuLm5vZGVOYW1l
KGIsImJ1dHRvbiIpP2IuZm9ybTp2b2lkIDA7YyYmIW4uX2RhdGEoYywic3VibWl0QnViYmxlcyIpJiYobi5
ldmVudC5hZGQoYywic3VibWl0Ll9zdWJtaXQiLGZ1bmN0aW9uKGEpe2EuX3N1Ym1pdF9idWJibGU9ITB9KS
xuLl9kYXRhKGMsInN1Ym1pdEJ1YmJsZXMiLCEwKSl9KX0scG9zdERpc3BhdGNoOmZ1bmN0aW9uKGEpe2EuX
3N1Ym1pdF9idWJibGUmJihkZWxldGUgYS5fc3VibWl0X2J1YmJsZSx0aGlzLnBhcmVudE5vZGUmJiFhLmlz
VHJpZ2dlciYmbi5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsYSwhMCkpfSx0ZWF
yZG93bjpmdW5jdGlvbigpe3JldHVybiBuLm5vZG
VOYW1lKHRoaXMsImZvcm0iKT8hMTp2b2lkIG4uZXZlbnQucmVtb3ZlKHRoaXMsIi5fc3VibWl0Iil9fSksb
C5jaGFuZ2VCdWJibGVzfHwobi5ldmVudC5zcGVjaWFsLmNoYW5nZT17c2V0dXA6ZnVuY3Rpb24oKXtyZXR1
cm4gWS50ZXN0KHRoaXMubm9kZU5hbWUpPygoImNoZWNrYm94Ij09PXRoaXMudHlwZXx8InJhZGlvIj09PXR
oaXMudHlwZSkmJihuLmV2ZW50LmFkZCh0aGlzLCJwcm9wZXJ0eWNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbi
hhKXsiY2hlY2tlZCI9PT1hLm9yaWdpbmFsRXZlbnQucHJvcGVydHlOYW1lJiYodGhpcy5fanVzdF9jaGFuZ
2VkPSEwKX0pLG4uZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3RoaXMuX2p1
c3RfY2hhbmdlZCYmIWEuaXNUcmlnZ2VyJiYodGhpcy5fanVzdF9jaGFuZ2VkPSExKSxuLmV2ZW50LnNpbXV
sYXRlKCJjaGFuZ2UiLHRoaXMsYSwhMCl9KSksITEpOnZvaWQgbi5ldmVudC5hZGQodGhpcywiYmVmb3JlYW
N0aXZhdGUuX2NoYW5nZSIsZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7WS50ZXN0KGIubm9kZU5hbWUpJ
iYhbi5fZGF0YShiLCJjaGFuZ2VCdWJibGVzIikmJihuLmV2ZW50LmFkZChiLCJjaGFuZ2UuX2NoYW5nZSIs
ZnVuY3Rpb24oYSl7IXRoaXMucGFyZW50Tm9kZXx8YS5pc1NpbXVsYXRlZHx8YS5pc1RyaWdnZXJ8fG4uZXZ
lbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksbi5fZGF0YShiLCJjaGFuZ2
VCdWJibGVzIiwhMCkpfSl9LGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYj1hLnRhcmdldDtyZXR1cm4gdGhpc
yE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHwicmFkaW8iIT09Yi50eXBlJiYiY2hlY2tib3gi
IT09Yi50eXBlP2EuaGFuZGxlT2JqLmhhbmRsZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpOnZvaWQgMH0sdGV
hcmRvd246ZnVuY3Rpb24oKXtyZXR1cm4gbi5ldmVudC5yZW1vdmUodGhpcywiLl9jaGFuZ2UiKSwhWS50ZX
N0KHRoaXMubm9kZU5hbWUpfX0pLGwuZm9jdXNpbkJ1YmJsZXN8fG4uZWFjaCh7Zm9jdXM6ImZvY3VzaW4iL
GJsdXI6ImZvY3Vzb3V0In0sZnVuY3Rpb24oYSxiKXt2YXIgYz1mdW5jdGlvbihhKXtuLmV2ZW50LnNpbXVs
YXRlKGIsYS50YXJnZXQsbi5ldmVudC5maXgoYSksITApfTtuLmV2ZW50LnNwZWNpYWxbYl09e3NldHVwOmZ
1bmN0aW9uKCl7dmFyIGQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzLGU9bi5fZGF0YShkLGIpO2V8fGQuYW
RkRXZlbnRMaXN0ZW5lcihhLGMsITApLG4uX2RhdGEoZCxiLChlfHwwKSsxKX0sdGVhcmRvd246ZnVuY3Rpb
24oKXt2YXIgZD10aGlzLm93bmVyRG9jdW1lbnR8fHRoaXMsZT1uLl9kYXRhKGQsYiktMTtlP24uX2RhdGEo
ZCxiLGUpOihkLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxjLCEwKSxuLl9yZW1vdmVEYXRhKGQsYikpfX19KSx
uLmZuLmV4dGVuZCh7b246ZnVuY3Rpb24oYSxiLGMsZCxlKXt2YXIgZixnO2lmKCJvYmplY3QiPT10eXBlb2
YgYSl7InN0cmluZyIhPXR5cGVvZiBiJiYoYz1jfHxiLGI9dm9pZCAwKTtmb3IoZiBpbiBhKXRoaXMub24oZ
ixiLGMsYVtmXSxlKTtyZXR1cm4gdGhpc31pZihudWxsPT1jJiZudWxsPT1kPyhkPWIsYz1iPXZvaWQgMCk6
bnVsbD09ZCYmKCJzdHJpbmciPT10eXBlb2YgYj8oZD1jLGM9dm9pZCAwKTooZD1jLGM9YixiPXZvaWQgMCk
pLGQ9PT0hMSlkPWNiO2Vsc2UgaWYoIWQpcmV0dXJuIHRoaXM7cmV0dXJuIDE9PT1lJiYoZz1kLGQ9ZnVuY3
Rpb24oYSl7cmV0dXJuIG4oKS5vZmYoYSksZy5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGQuZ3VpZD1nLmd1a
WR8fChnLmd1aWQ9bi5ndWlkKyspKSx0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LmFkZCh0aGlzLGEs
ZCxjLGIpfSl9LG9uZTpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gdGhpcy5vbihhLGIsYyxkLDEpfSxvZmY
6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmopcm
V0dXJuIGQ9YS5oYW5kbGVPYmosbihhLmRlbGVnYXRlVGFyZ2V0KS5vZmYoZC5uYW1lc3BhY2U/ZC5vcmlnV
HlwZSsiLiIrZC5uYW1lc3BhY2U6ZC5vcmlnVHlwZSxkLnNlbGVjdG9yLGQuaGFuZGxlciksdGhpcztpZigi
b2JqZWN0Ij09dHlwZW9mIGEpe2ZvcihlIGluIGEpdGhpcy5vZmYoZSxiLGFbZV0pO3JldHVybiB0aGlzfXJ
ldHVybihiPT09ITF8fCJmdW5jdGlvbiI9PXR5cGVvZiBiKSYmKGM9YixiPXZvaWQgMCksYz09PSExJiYoYz
1jYiksdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5ldmVudC5yZW1vdmUodGhpcyxhLGMsYil9KX0sdHJpZ2dlc
jpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtuLmV2ZW50LnRyaWdnZXIoYSxi
LHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpc1swXTtyZXR1cm4gYz9
uLmV2ZW50LnRyaWdnZXIoYSxiLGMsITApOnZvaWQgMH19KTtmdW5jdGlvbiBlYihhKXt2YXIgYj1mYi5zcG
xpdCgifCIpLGM9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoYy5jcmVhdGVFbGVtZW50KXdoaWxlK
GIubGVuZ3RoKWMuY3JlYXRlRWxlbWVudChiLnBvcCgpKTtyZXR1cm4gY312YXIgZmI9ImFiYnJ8YXJ0aWNs
ZXxhc2lkZXxhdWRpb3xiZGl8Y2FudmFzfGRhdGF8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZpZ3V
yZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbn
xzdW1tYXJ5fHRpbWV8dmlkZW8iLGdiPS8galF1ZXJ5XGQrPSIoPzpudWxsfFxkKykiL2csaGI9bmV3IFJlZ
0V4cCgiPCg/OiIrZmIrIilbXFxzLz5dIiwiaSIpLGliPS9eXHMrLyxqYj0vPCg/IWFyZWF8YnJ8Y29sfGVt
YmVkfGhyfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW0pKChbXHc6XSspW14+XSopXC8+L2dpLGtiPS88KFt
cdzpdKykvLGxiPS88dGJvZHkvaSxtYj0vPHwmIz9cdys7LyxuYj0vPCg/OnNjcmlwdHxzdHlsZXxsaW5rKS
9pLG9iPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLHBiPS9eJHxcLyg/OmphdmF8ZWNtY
SlzY3JpcHQvaSxxYj0vXnRydWVcLyguKikvLHJiPS9eXHMqPCEoPzpcW0NEQVRBXFt8LS0pfCg/OlxdXF18
LS0pPlxzKiQvZyxzYj17b3B0aW9uOlsxLCI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwiPC9zZWx
lY3Q+Il0sbGVnZW5kOlsxLCI8ZmllbGRzZXQ+IiwiPC9maWVsZHNldD4iXSxhcmVhOlsxLCI8bWFwPiIsIj
wvbWFwPiJdLHBhcmFtOlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiP
C90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8
dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSx0ZDpbMyw
iPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sX2RlZmF1bHQ6bC5odG1sU2
VyaWFsaXplP1swLCIiLCIiXTpbMSwiWDxkaXY+IiwiPC9kaXY+Il19LHRiPWViKHopLHViPXRiLmFwcGVuZ
ENoaWxkKHouY3JlYXRlRWxlbWVudCgiZGl2IikpO3NiLm9wdGdyb3VwPXNiLm9wdGlvbixzYi50Ym9keT1z
Yi50Zm9vdD1zYi5jb2xncm91cD1zYi5jYXB0aW9uPXNiLnRoZWFkLHNiLnRoPXNiLnRkO2Z1bmN0aW9uIHZ
iKGEsYil7dmFyIGMsZCxlPTAsZj10eXBlb2YgYS5nZXRFbGVtZW50c0J5VGFnTmFtZSE9PUw/YS5nZXRFbG
VtZW50c0J5VGFnTmFtZShifHwiKiIpOnR5cGVvZiBhLnF1ZXJ5U2VsZWN0b3JBbGwhPT1MP2EucXVlcnlTZ
WxlY3RvckFsbChifHwiKiIpOnZvaWQgMDtpZighZilmb3IoZj1bXSxjPWEuY2hpbGROb2Rlc3x8YTtudWxs
IT0oZD1jW2VdKTtlKyspIWJ8fG4ubm9kZU5hbWUoZCxiKT9mLnB1c2goZCk6bi5tZXJnZShmLHZiKGQsYik
pO3JldHVybiB2b2lkIDA9PT1ifHxiJiZuLm5vZGVOYW1lKGEsYik/bi5tZXJnZShbYV0sZik6Zn1mdW5jdG
lvbiB3YihhKXtYLnRlc3QoYS50eXBlKSYmKGEuZGVmYXVsdENoZWNrZWQ9YS5jaGVja2VkKX1mdW5jdGlvb
iB4YihhLGIpe3JldHVybiBuLm5vZGVOYW1lKGEsInRhYmxlIikmJm4ubm9kZU5hbWUoMTEhPT1iLm5vZGVU
eXBlP2I6Yi5maXJzdENoaWxkLCJ0ciIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGE
uYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb2
4geWIoYSl7cmV0dXJuIGEudHlwZT0obnVsbCE9PW4uZmluZC5hdHRyKGEsInR5cGUiKSkrIi8iK2EudHlwZ
SxhfWZ1bmN0aW9uIHpiKGEpe3ZhciBiPXFiLmV4ZWMoYS50eXBlKTtyZXR1cm4gYj9hLnR5cGU9YlsxXTph
LnJlbW92ZUF0dHJpYnV0ZSgidHlwZSIpLGF9ZnVuY3Rpb24gQWIoYSxiKXtmb3IodmFyIGMsZD0wO251bGw
hPShjPWFbZF0pO2QrKyluLl9kYXRhKGMsImdsb2JhbEV2YWwiLCFifHxuLl9kYXRhKGJbZF0sImdsb2JhbE
V2YWwiKSl9ZnVuY3Rpb24gQmIoYSxiKXtpZigxPT09Yi5ub2RlVHlwZSYmbi5oYXNEYXRhKGEpKXt2YXIgY
yxkLGUsZj1uLl9kYXRhKGEpLGc9bi5fZGF0YShiLGYpLGg9Zi5ldmVudHM7aWYoaCl7ZGVsZXRlIGcuaGFu
ZGxlLGcuZXZlbnRzPXt9O2ZvcihjIGluIGgpZm9yKGQ9MCxlPWhbY10ubGVuZ3RoO2U+ZDtkKyspbi5ldmV
udC5hZGQoYixjLGhbY11bZF0pfWcuZGF0YSYmKGcuZGF0YT1uLmV4dGVuZCh7fSxnLmRhdGEpKX19ZnVuY3
Rpb24gQ2IoYSxiKXt2YXIgYyxkLGU7aWYoMT09PWIubm9kZVR5cGUpe2lmKGM9Yi5ub2RlTmFtZS50b0xvd
2VyQ2FzZSgpLCFsLm5vQ2xvbmVFdmVudCYmYltuLmV4cGFuZG9dKXtlPW4uX2RhdGEoYik7Zm9yKGQgaW4g
ZS5ldmVudHMpbi5yZW1vdmVFdmVudChiLGQsZS5oYW5kbGUpO2IucmVtb3ZlQXR0cmlidXRlKG4uZXhwYW5
kbyl9InNjcmlwdCI9PT1jJiZiLnRleHQhPT1hLnRleHQ/KHliKGIpLnRleHQ9YS50ZXh0LHpiKGIpKToib2
JqZWN0Ij09PWM/KGIucGFyZW50Tm9kZSYmKGIub3V0ZXJIVE1MPWEub3V0ZXJIVE1MKSxsLmh0bWw1Q2xvb
mUmJmEuaW5uZXJIVE1MJiYhbi50cmltKGIuaW5uZXJIVE1MKSYmKGIuaW5uZXJIVE1MPWEuaW5uZXJIVE1M
KSk6ImlucHV0Ij09PWMmJlgudGVzdChhLnR5cGUpPyhiLmRlZmF1bHRDaGVja2VkPWIuY2hlY2tlZD1hLmN
oZWNrZWQsYi52YWx1ZSE9PWEudmFsdWUmJihiLnZhbHVlPWEudmFsdWUpKToib3B0aW9uIj09PWM/Yi5kZW
ZhdWx0U2VsZWN0ZWQ9Yi5zZWxlY3RlZD1hLmRlZmF1bHRTZWxlY3RlZDooImlucHV0Ij09PWN8fCJ0ZXh0Y
XJlYSI9PT1jKSYmKGIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlKX19bi5leHRlbmQoe2Nsb25lOmZ1
bmN0aW9uKGEsYixjKXt2YXIgZCxlLGYsZyxoLGk9bi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQsYSk7aWY
obC5odG1sNUNsb25lfHxuLmlzWE1MRG9jKGEpfHwhaGIudGVzdCgiPCIrYS5ub2RlTmFtZSsiPiIpP2Y9YS
5jbG9uZU5vZGUoITApOih1Yi5pbm5lckhUTUw9YS5vdXRlckhUTUwsdWIucmVtb3ZlQ2hpbGQoZj11Yi5ma
XJzdENoaWxkKSksIShsLm5vQ2xvbmVFdmVudCYmbC5ub0Nsb25lQ2hlY2tlZHx8MSE9PWEubm9kZVR5cGUm
JjExIT09YS5ub2RlVHlwZXx8bi5pc1hNTERvYyhhKSkpZm9yKGQ9dmIoZiksaD12YihhKSxnPTA7bnVsbCE
9KGU9aFtnXSk7KytnKWRbZ10mJkNiKGUsZFtnXSk7aWYoYilpZihjKWZvcihoPWh8fHZiKGEpLGQ9ZHx8dm
IoZiksZz0wO251bGwhPShlPWhbZ10pO2crKylCYihlLGRbZ10pO2Vsc2UgQmIoYSxmKTtyZXR1cm4gZD12Y
ihmLCJzY3JpcHQiKSxkLmxlbmd0aD4wJiZBYihkLCFpJiZ2YihhLCJzY3JpcHQiKSksZD1oPWU9bnVsbCxm
fSxidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGEsYixjLGQpe2Zvcih2YXIgZSxmLGcsaCxpLGosayxtPWEubGV
uZ3RoLG89ZWIoYikscD1bXSxxPTA7bT5xO3ErKylpZihmPWFbcV0sZnx8MD09PWYpaWYoIm9iamVjdCI9PT
1uLnR5cGUoZikpbi5tZXJnZShwLGYubm9kZVR5cGU/W2ZdOmYpO2Vsc2UgaWYobWIudGVzdChmKSl7aD1of
HxvLmFwcGVuZENoaWxkKGIuY3JlYXRlRWxlbWVudCgiZGl2IikpLGk9KGtiLmV4ZWMoZil8fFsiIiwiIl0p
WzFdLnRvTG93ZXJDYXNlKCksaz1zYltpXXx8c2IuX2RlZmF1bHQsaC5pbm5lckhUTUw9a1sxXStmLnJlcGx
hY2UoamIsIjwkMT48LyQyPiIpK2tbMl0sZT1rWzBdO3doaWxlKGUtLSloPWgubGFzdENoaWxkO2lmKCFsLm
xlYWRpbmdXaGl0ZXNwYWNlJiZpYi50ZXN0KGYpJiZwLnB1c2goYi5jcmVhdGVUZXh0Tm9kZShpYi5leGVjK
GYpWzBdKSksIWwudGJvZHkpe2Y9InRhYmxlIiE9PWl8fGxiLnRlc3QoZik/Ijx0YWJsZT4iIT09a1sxXXx8
bGIudGVzdChmKT8wOmg6aC5maXJzdENoaWxkLGU9ZiYmZi5jaGlsZE5vZGVzLmxlbmd0aDt3aGlsZShlLS0
pbi5ub2RlTmFtZShqPWYuY2hpbGROb2Rlc1tlXSwidGJvZHkiKSYmIWouY2hpbGROb2Rlcy5sZW5ndGgmJm
YucmVtb3ZlQ2hpbGQoail9bi5tZXJnZShwLGguY2hpbGROb2RlcyksaC50ZXh0Q29udGVudD0iIjt3aGlsZ
ShoLmZpcnN0Q2hpbGQpaC5yZW1vdmVDaGlsZChoLmZpcnN0Q2hpbGQpO2g9by5sYXN0Q2hpbGR9ZWxzZSBw
LnB1c2goYi5jcmVhdGVUZXh0Tm9kZShmKSk7aCYmby5yZW1vdmVDaGlsZChoKSxsLmFwcGVuZENoZWNrZWR
8fG4uZ3JlcCh2YihwLCJpbnB1dCIpLHdiKSxxPTA7d2hpbGUoZj1wW3ErK10paWYoKCFkfHwtMT09PW4uaW
5BcnJheShmLGQpKSYmKGc9bi5jb250YWlucyhmLm93bmVyRG9jdW1lbnQsZiksaD12YihvLmFwcGVuZENoa
WxkKGYpLCJzY3JpcHQiKSxnJiZBYihoKSxjKSl7ZT0wO3doaWxlKGY9aFtlKytdKXBiLnRlc3QoZi50eXBl
fHwiIikmJmMucHVzaChmKX1yZXR1cm4gaD1udWxsLG99LGNsZWFuRGF0YTpmdW5jdGlvbihhLGIpe2Zvcih
2YXIgZCxlLGYsZyxoPTAsaT1uLmV4cGFuZG8saj1uLmNhY2hlLGs9bC5kZWxldGVFeHBhbmRvLG09bi5ldm
VudC5zcGVjaWFsO251bGwhPShkPWFbaF0pO2grKylpZigoYnx8bi5hY2NlcHREYXRhKGQpKSYmKGY9ZFtpX
SxnPWYmJmpbZl0pKXtpZihnLmV2ZW50cylmb3IoZSBpbiBnLmV2ZW50cyltW2VdP24uZXZlbnQucmVtb3Zl
KGQsZSk6bi5yZW1vdmVFdmVudChkLGUsZy5oYW5kbGUpO2pbZl0mJihkZWxldGUgaltmXSxrP2RlbGV0ZSB
kW2ldOnR5cGVvZiBkLnJlbW92ZUF0dHJpYnV0ZSE9PUw/ZC5yZW1vdmVBdHRyaWJ1dGUoaSk6ZFtpXT1udW
xsLGMucHVzaChmKSl9fX0pLG4uZm4uZXh0ZW5kKHt0ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBXKHRoaXMsZ
nVuY3Rpb24oYSl7cmV0dXJuIHZvaWQgMD09PWE/bi50ZXh0KHRoaXMpOnRoaXMuZW1wdHkoKS5hcHBlbmQo
KHRoaXNbMF0mJnRoaXNbMF0ub3duZXJEb2N1bWVudHx8eikuY3JlYXRlVGV4dE5vZGUoYSkpfSxudWxsLGE
sYXJndW1lbnRzLmxlbmd0aCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3
VtZW50cyxmdW5jdGlvbihhKXtpZigxPT09dGhpc
y5ub2RlVHlwZXx8MTE9PT10aGlzLm5vZGVUeXBlfHw5PT09dGhpcy5ub2RlVHlwZSl7dmFyIGI9eGIodGhp
cyxhKTtiLmFwcGVuZENoaWxkKGEpfX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWF
uaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGEpe2lmKDE9PT10aGlzLm5vZGVUeXBlfHwxMT09PXRoaXMubm9kZV
R5cGV8fDk9PT10aGlzLm5vZGVUeXBlKXt2YXIgYj14Yih0aGlzLGEpO2IuaW5zZXJ0QmVmb3JlKGEsYi5ma
XJzdENoaWxkKX19KX0sYmVmb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRz
LGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHR
oaXMpfSl9LGFmdGVyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW
9uKGEpe3RoaXMucGFyZW50Tm9kZSYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4d
FNpYmxpbmcpfSl9LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYyxkPWE/bi5maWx0ZXIoYSx0aGlz
KTp0aGlzLGU9MDtudWxsIT0oYz1kW2VdKTtlKyspYnx8MSE9PWMubm9kZVR5cGV8fG4uY2xlYW5EYXRhKHZ
iKGMpKSxjLnBhcmVudE5vZGUmJihiJiZuLmNvbnRhaW5zKGMub3duZXJEb2N1bWVudCxjKSYmQWIodmIoYy
wic2NyaXB0IikpLGMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjKSk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1b
mN0aW9uKCl7Zm9yKHZhciBhLGI9MDtudWxsIT0oYT10aGlzW2JdKTtiKyspezE9PT1hLm5vZGVUeXBlJiZu
LmNsZWFuRGF0YSh2YihhLCExKSk7d2hpbGUoYS5maXJzdENoaWxkKWEucmVtb3ZlQ2hpbGQoYS5maXJzdEN
oaWxkKTthLm9wdGlvbnMmJm4ubm9kZU5hbWUoYSwic2VsZWN0IikmJihhLm9wdGlvbnMubGVuZ3RoPTApfX
JldHVybiB0aGlzfSxjbG9uZTpmdW5jdGlvbihhLGIpe3JldHVybiBhPW51bGw9PWE/ITE6YSxiPW51bGw9P
WI/YTpiLHRoaXMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIG4uY2xvbmUodGhpcyxhLGIpfSl9LGh0bWw6ZnVu
Y3Rpb24oYSl7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdfHx7fSxjPTAsZD10aGl
zLmxlbmd0aDtpZih2b2lkIDA9PT1hKXJldHVybiAxPT09Yi5ub2RlVHlwZT9iLmlubmVySFRNTC5yZXBsYW
NlKGdiLCIiKTp2b2lkIDA7aWYoISgic3RyaW5nIiE9dHlwZW9mIGF8fG5iLnRlc3QoYSl8fCFsLmh0bWxTZ
XJpYWxpemUmJmhiLnRlc3QoYSl8fCFsLmxlYWRpbmdXaGl0ZXNwYWNlJiZpYi50ZXN0KGEpfHxzYlsoa2Iu
ZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pKXthPWEucmVwbGFjZShqYiwiPCQxPjwvJDI
+Iik7dHJ5e2Zvcig7ZD5jO2MrKyliPXRoaXNbY118fHt9LDE9PT1iLm5vZGVUeXBlJiYobi5jbGVhbkRhdG
EodmIoYiwhMSkpLGIuaW5uZXJIVE1MPWEpO2I9MH1jYXRjaChlKXt9fWImJnRoaXMuZW1wdHkoKS5hcHBlb
mQoYSl9LG51bGwsYSxhcmd1bWVudHMubGVuZ3RoKX0scmVwbGFjZVdpdGg6ZnVuY3Rpb24oKXt2YXIgYT1h
cmd1bWVudHNbMF07cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLGZ1bmN0aW9uKGIpe2E9dGhpcy5
wYXJlbnROb2RlLG4uY2xlYW5EYXRhKHZiKHRoaXMpKSxhJiZhLnJlcGxhY2VDaGlsZChiLHRoaXMpfSksYS
YmKGEubGVuZ3RofHxhLm5vZGVUeXBlKT90aGlzOnRoaXMucmVtb3ZlKCl9LGRldGFjaDpmdW5jdGlvbihhK
XtyZXR1cm4gdGhpcy5yZW1vdmUoYSwhMCl9LGRvbU1hbmlwOmZ1bmN0aW9uKGEsYil7YT1lLmFwcGx5KFtd
LGEpO3ZhciBjLGQsZixnLGgsaSxqPTAsaz10aGlzLmxlbmd0aCxtPXRoaXMsbz1rLTEscD1hWzBdLHE9bi5
pc0Z1bmN0aW9uKHApO2lmKHF8fGs+MSYmInN0cmluZyI9PXR5cGVvZiBwJiYhbC5jaGVja0Nsb25lJiZvYi
50ZXN0KHApKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7dmFyIGQ9bS5lcShjKTtxJiYoYVswXT1wL
mNhbGwodGhpcyxjLGQuaHRtbCgpKSksZC5kb21NYW5pcChhLGIpfSk7aWYoayYmKGk9bi5idWlsZEZyYWdt
ZW50KGEsdGhpc1swXS5vd25lckRvY3VtZW50LCExLHRoaXMpLGM9aS5maXJzdENoaWxkLDE9PT1pLmNoaWx
kTm9kZXMubGVuZ3RoJiYoaT1jKSxjKSl7Zm9yKGc9bi5tYXAodmIoaSwic2NyaXB0IikseWIpLGY9Zy5sZW
5ndGg7az5qO2orKylkPWksaiE9PW8mJihkPW4uY2xvbmUoZCwhMCwhMCksZiYmbi5tZXJnZShnLHZiKGQsI
nNjcmlwdCIpKSksYi5jYWxsKHRoaXNbal0sZCxqKTtpZihmKWZvcihoPWdbZy5sZW5ndGgtMV0ub3duZXJE
b2N1bWVudCxuLm1hcChnLHpiKSxqPTA7Zj5qO2orKylkPWdbal0scGIudGVzdChkLnR5cGV8fCIiKSYmIW4
uX2RhdGEoZCwiZ2xvYmFsRXZhbCIpJiZuLmNvbnRhaW5zKGgsZCkmJihkLnNyYz9uLl9ldmFsVXJsJiZuLl
9ldmFsVXJsKGQuc3JjKTpuLmdsb2JhbEV2YWwoKGQudGV4dHx8ZC50ZXh0Q29udGVudHx8ZC5pbm5lckhUT
Ux8fCIiKS5yZXBsYWNlKHJiLCIiKSkpO2k9Yz1udWxsfXJldHVybiB0aGlzfX0pLG4uZWFjaCh7YXBwZW5k
VG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ
0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7bi5mblthXT1mdW
5jdGlvbihhKXtmb3IodmFyIGMsZD0wLGU9W10sZz1uKGEpLGg9Zy5sZW5ndGgtMTtoPj1kO2QrKyljPWQ9P
T1oP3RoaXM6dGhpcy5jbG9uZSghMCksbihnW2RdKVtiXShjKSxmLmFwcGx5KGUsYy5nZXQoKSk7cmV0dXJu
IHRoaXMucHVzaFN0YWNrKGUpfX0pO3ZhciBEYixFYj17fTtmdW5jdGlvbiBGYihiLGMpe3ZhciBkPW4oYy5
jcmVhdGVFbGVtZW50KGIpKS5hcHBlbmRUbyhjLmJvZHkpLGU9YS5nZXREZWZhdWx0Q29tcHV0ZWRTdHlsZT
9hLmdldERlZmF1bHRDb21wdXRlZFN0eWxlKGRbMF0pLmRpc3BsYXk6bi5jc3MoZFswXSwiZGlzcGxheSIpO
3JldHVybiBkLmRldGFjaCgpLGV9ZnVuY3Rpb24gR2IoYSl7dmFyIGI9eixjPUViW2FdO3JldHVybiBjfHwo
Yz1GYihhLGIpLCJub25lIiE9PWMmJmN8fChEYj0oRGJ8fG4oIjxpZnJhbWUgZnJhbWVib3JkZXI9JzAnIHd
pZHRoPScwJyBoZWlnaHQ9JzAnLz4iKSkuYXBwZW5kVG8oYi5kb2N1bWVudEVsZW1lbnQpLGI9KERiWzBdLm
NvbnRlbnRXaW5kb3d8fERiWzBdLmNvbnRlbnREb2N1bWVudCkuZG9jdW1lbnQsYi53cml0ZSgpLGIuY2xvc
2UoKSxjPUZiKGEsYiksRGIuZGV0YWNoKCkpLEViW2FdPWMpLGN9IWZ1bmN0aW9uKCl7dmFyIGEsYixjPXou
Y3JlYXRlRWxlbWVudCgiZGl2IiksZD0iLXdlYmtpdC1ib3gtc2l6aW5nOmNvbnRlbnQtYm94Oy1tb3otYm9
4LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtYm94O2Rpc3BsYXk6YmxvY2s7cGFkZG
luZzowO21hcmdpbjowO2JvcmRlcjowIjtjLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjwvdGFibGU+P
GEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixhPWMuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImEiKVswXSxhLnN0eWxlLmNzc1RleHQ9ImZsb2F0OmxlZnQ7b3BhY2l0eTouNSIsbC5vcGFjaXR
5PS9eMC41Ly50ZXN0KGEuc3R5bGUub3BhY2l0eSksbC5jc3NGbG9hdD0hIWEuc3R5bGUuY3NzRmxvYXQsYy
5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGMuY2xvbmVOb2RlKCEwKS5zdHlsZS5iYWNrZ
3JvdW5kQ2xpcD0iIixsLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1ib3giPT09Yy5zdHlsZS5iYWNrZ3Jv
dW5kQ2xpcCxhPWM9bnVsbCxsLnNocmlua1dyYXBCbG9ja3M9ZnVuY3Rpb24oKXt2YXIgYSxjLGUsZjtpZih
udWxsPT1iKXtpZihhPXouZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSwhYSlyZXR1cm47Zj0iYm
9yZGVyOjA7d2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDtsZWZ0Oi05OTk5cHgiL
GM9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYS5hcHBlbmRDaGls
ZChjKS5hcHBlbmRDaGlsZChlKSxiPSExLHR5cGVvZiBlLnN0eWxlLnpvb20hPT1MJiYoZS5zdHlsZS5jc3N
UZXh0PWQrIjt3aWR0aDoxcHg7cGFkZGluZzoxcHg7em9vbToxIixlLmlubmVySFRNTD0iPGRpdj48L2Rpdj
4iLGUuZmlyc3RDaGlsZC5zdHlsZS53aWR0aD0iNXB4IixiPTMhPT1lLm9mZnNldFdpZHRoKSxhLnJlbW92Z
UNoaWxkKGMpLGE9Yz1lPW51bGx9cmV0dXJuIGJ9fSgpO3ZhciBIYj0vXm1hcmdpbi8sSWI9bmV3IFJlZ0V4
cCgiXigiK1QrIikoPyFweClbYS16JV0rJCIsImkiKSxKYixLYixMYj0vXih0b3B8cmlnaHR8Ym90dG9tfGx
lZnQpJC87YS5nZXRDb21wdXRlZFN0eWxlPyhKYj1mdW5jdGlvbihhKXtyZXR1cm4gYS5vd25lckRvY3VtZW
50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxudWxsKX0sS2I9ZnVuY3Rpb24oYSxiLGMpe3Zhc
iBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxKYihhKSxnPWM/Yy5nZXRQcm9wZXJ0eVZhbHVlKGIp
fHxjW2JdOnZvaWQgMCxjJiYoIiIhPT1nfHxuLmNvbnRhaW5zKGEub3duZXJEb2N1bWVudCxhKXx8KGc9bi5
zdHlsZShhLGIpKSxJYi50ZXN0KGcpJiZIYi50ZXN0KGIpJiYoZD1oLndpZHRoLGU9aC5taW5XaWR0aCxmPW
gubWF4V2lkdGgsaC5taW5XaWR0aD1oLm1heFdpZHRoPWgud2lkdGg9ZyxnPWMud2lkdGgsaC53aWR0aD1kL
GgubWluV2lkdGg9ZSxoLm1heFdpZHRoPWYpKSx2b2lkIDA9PT1nP2c6ZysiIn0pOnouZG9jdW1lbnRFbGVt
ZW50LmN1cnJlbnRTdHlsZSYmKEpiPWZ1bmN0aW9uKGEpe3JldHVybiBhLmN1cnJlbnRTdHlsZX0sS2I9ZnV
uY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5zdHlsZTtyZXR1cm4gYz1jfHxKYihhKSxnPWM/Y1tiXT
p2b2lkIDAsbnVsbD09ZyYmaCYmaFtiXSYmKGc9aFtiXSksSWIudGVzdChnKSYmIUxiLnRlc3QoYikmJihkP
WgubGVmdCxlPWEucnVudGltZVN0eWxlLGY9ZSYmZS5sZWZ0LGYmJihlLmxlZnQ9YS5jdXJyZW50U3R5bGUu
bGVmdCksaC5sZWZ0PSJmb250U2l6ZSI9PT1iPyIxZW0iOmcsZz1oLnBpeGVsTGVmdCsicHgiLGgubGVmdD1
kLGYmJihlLmxlZnQ9ZikpLHZvaWQgMD09PWc/ZzpnKyIifHwiYXV0byJ9KTtmdW5jdGlvbiBNYihhLGIpe3
JldHVybntnZXQ6ZnVuY3Rpb24oKXt2YXIgYz1hKCk7aWYobnVsbCE9YylyZXR1cm4gYz92b2lkIGRlbGV0Z
SB0aGlzLmdldDoodGhpcy5nZXQ9YikuYXBwbHkodGhpcyxhcmd1bWVudHMpfX19IWZ1bmN0aW9uKCl7dmFy
IGIsYyxkLGUsZixnLGg9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxpPSJib3JkZXI6MDt3aWR0aDowO2hlaWd
odDowO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6LTk5OTlweCIsaj0iLXdlYmtpdC1ib3gtc2l6aW
5nOmNvbnRlbnQtYm94Oy1tb3otYm94LXNpemluZzpjb250ZW50LWJveDtib3gtc2l6aW5nOmNvbnRlbnQtY
m94O2Rpc3BsYXk6YmxvY2s7cGFkZGluZzowO21hcmdpbjowO2JvcmRlcjowIjtoLmlubmVySFRNTD0iICA8
bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8
+IixiPWguZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXSxiLnN0eWxlLmNzc1RleHQ9ImZsb2F0OmxlZn
Q7b3BhY2l0eTouNSIsbC5vcGFjaXR5PS9eMC41Ly50ZXN0KGIuc3R5bGUub3BhY2l0eSksbC5jc3NGbG9hd
D0hIWIuc3R5bGUuY3NzRmxvYXQsaC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iY29udGVudC1ib3giLGguY2xv
bmVOb2RlKCEwKS5zdHlsZS5iYWNrZ3JvdW5kQ2xpcD0iIixsLmNsZWFyQ2xvbmVTdHlsZT0iY29udGVudC1
ib3giPT09aC5zdHlsZS5iYWNrZ3JvdW5kQ2xpcCxiPWg9bnVsbCxuLmV4dGVuZChsLHtyZWxpYWJsZUhpZG
Rlbk9mZnNldHM6ZnVuY3Rpb24oKXtpZihudWxsIT1jKXJldHVybiBjO3ZhciBhLGIsZCxlPXouY3JlYXRlR
WxlbWVudCgiZGl2IiksZj16LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07aWYoZilyZXR1cm4g
ZS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxlLmlubmVySFRNTD0iICA8bGluay8+PHRhYmxlPjw
vdGFibGU+PGEgaHJlZj0nL2EnPmE8L2E+PGlucHV0IHR5cGU9J2NoZWNrYm94Jy8+IixhPXouY3JlYXRlRW
xlbWVudCgiZGl2IiksYS5zdHlsZS5jc3NUZXh0PWksZi5hcHBlbmRDaGlsZChhKS5hcHBlbmRDaGlsZChlK
SxlLmlubmVySFRNTD0iPHRhYmxlPjx0cj48dGQ+PC90ZD48dGQ+dDwvdGQ+PC90cj48L3RhYmxlPiIsYj1l
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ZCIpLGJbMF0uc3R5bGUuY3NzVGV4dD0icGFkZGluZzowO21hcmd
pbjowO2JvcmRlcjowO2Rpc3BsYXk6bm9uZSIsZD0wPT09YlswXS5vZmZzZXRIZWlnaHQsYlswXS5zdHlsZS
5kaXNwbGF5PSIiLGJbMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsYz1kJiYwPT09YlswXS5vZmZzZXRIZWlna
HQsZi5yZW1vdmVDaGlsZChhKSxlPWY9bnVsbCxjfSxib3hTaXppbmc6ZnVuY3Rpb24oKXtyZXR1cm4gbnVs
bD09ZCYmaygpLGR9LGJveFNpemluZ1JlbGlhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWUmJmsoKSx
lfSxwaXhlbFBvc2l0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PWYmJmsoKSxmfSxyZWxpYWJsZU1hcm
dpblJpZ2h0OmZ1bmN0aW9uKCl7dmFyIGIsYyxkLGU7aWYobnVsbD09ZyYmYS5nZXRDb21wdXRlZFN0eWxlK
XtpZihiPXouZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJvZHkiKVswXSwhYilyZXR1cm47Yz16LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpLGQ9ei5jcmVhdGVFbGVtZW50KCJkaXYiKSxjLnN0eWxlLmNzc1RleHQ9aSxiLmFwcGV
uZENoaWxkKGMpLmFwcGVuZENoaWxkKGQpLGU9ZC5hcHBlbmRDaGlsZCh6LmNyZWF0ZUVsZW1lbnQoImRpdi
IpKSxlLnN0eWxlLmNzc1RleHQ9ZC5zdHlsZS5jc3NUZXh0PWosZS5zdHlsZS5tYXJnaW5SaWdodD1lLnN0e
WxlLndpZHRoPSIwIixkLnN0eWxlLndpZHRoPSIxcHgiLGc9IXBhcnNlRmxvYXQoKGEuZ2V0Q29tcHV0ZWRT
dHlsZShlLG51bGwpfHx7fSkubWFyZ2luUmlnaHQpLGIucmVtb3ZlQ2hpbGQoYyl9cmV0dXJuIGd9fSk7ZnV
uY3Rpb24gaygpe3ZhciBiLGMsaD16LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJib2R5IilbMF07aCYmKGI9ei
5jcmVhdGVFbGVtZW50KCJkaXYiKSxjPXouY3JlYXRlRWxlbWVudCgiZGl2IiksYi5zdHlsZS5jc3NUZXh0P
WksaC5hcHBlbmRDaGlsZChiKS5hcHBlbmRDaGlsZChjKSxjLnN0eWxlLmNzc1RleHQ9Ii13ZWJraXQtYm94
LXNpemluZzpib3JkZXItYm94Oy1tb3otYm94LXNpemluZzpib3JkZXItYm94O2JveC1zaXppbmc6Ym9yZGV
yLWJveDtwb3NpdGlvbjphYnNvbHV0ZTtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6MXB4O2JvcmRlcjoxcHg7d2
lkdGg6NHB4O21hcmdpbi10b3A6MSU7dG9wOjElIixuLnN3YXAoaCxudWxsIT1oLnN0eWxlLnpvb20/e3pvb
206MX06e30sZnVuY3Rpb24oKXtkPTQ9PT1jLm9m
ZnNldFdpZHRofSksZT0hMCxmPSExLGc9ITAsYS5nZXRDb21wdXRlZFN0eWxlJiYoZj0iMSUiIT09KGEuZ2V
0Q29tcHV0ZWRTdHlsZShjLG51bGwpfHx7fSkudG9wLGU9IjRweCI9PT0oYS5nZXRDb21wdXRlZFN0eWxlKG
MsbnVsbCl8fHt3aWR0aDoiNHB4In0pLndpZHRoKSxoLnJlbW92ZUNoaWxkKGIpLGM9aD1udWxsKX19KCksb
i5zd2FwPWZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlLGYsZz17fTtmb3IoZiBpbiBiKWdbZl09YS5zdHlsZVtm
XSxhLnN0eWxlW2ZdPWJbZl07ZT1jLmFwcGx5KGEsZHx8W10pO2ZvcihmIGluIGIpYS5zdHlsZVtmXT1nW2Z
dO3JldHVybiBlfTt2YXIgTmI9L2FscGhhXChbXildKlwpL2ksT2I9L29wYWNpdHlccyo9XHMqKFteKV0qKS
8sUGI9L14obm9uZXx0YWJsZSg/IS1jW2VhXSkuKykvLFFiPW5ldyBSZWdFeHAoIl4oIitUKyIpKC4qKSQiL
CJpIiksUmI9bmV3IFJlZ0V4cCgiXihbKy1dKT0oIitUKyIpIiwiaSIpLFNiPXtwb3NpdGlvbjoiYWJzb2x1
dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxUYj17bGV0dGVyU3BhY2luZzowLGZ
vbnRXZWlnaHQ6NDAwfSxVYj1bIldlYmtpdCIsIk8iLCJNb3oiLCJtcyJdO2Z1bmN0aW9uIFZiKGEsYil7aW
YoYiBpbiBhKXJldHVybiBiO3ZhciBjPWIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYi5zbGljZSgxKSxkP
WIsZT1VYi5sZW5ndGg7d2hpbGUoZS0tKWlmKGI9VWJbZV0rYyxiIGluIGEpcmV0dXJuIGI7cmV0dXJuIGR9
ZnVuY3Rpb24gV2IoYSxiKXtmb3IodmFyIGMsZCxlLGY9W10sZz0wLGg9YS5sZW5ndGg7aD5nO2crKylkPWF
bZ10sZC5zdHlsZSYmKGZbZ109bi5fZGF0YShkLCJvbGRkaXNwbGF5IiksYz1kLnN0eWxlLmRpc3BsYXksYj
8oZltnXXx8Im5vbmUiIT09Y3x8KGQuc3R5bGUuZGlzcGxheT0iIiksIiI9PT1kLnN0eWxlLmRpc3BsYXkmJ
lYoZCkmJihmW2ddPW4uX2RhdGEoZCwib2xkZGlzcGxheSIsR2IoZC5ub2RlTmFtZSkpKSk6ZltnXXx8KGU9
VihkKSwoYyYmIm5vbmUiIT09Y3x8IWUpJiZuLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGU/YzpuLmNzcyhkLCJ
kaXNwbGF5IikpKSk7Zm9yKGc9MDtoPmc7ZysrKWQ9YVtnXSxkLnN0eWxlJiYoYiYmIm5vbmUiIT09ZC5zdH
lsZS5kaXNwbGF5JiYiIiE9PWQuc3R5bGUuZGlzcGxheXx8KGQuc3R5bGUuZGlzcGxheT1iP2ZbZ118fCIiO
iJub25lIikpO3JldHVybiBhfWZ1bmN0aW9uIFhiKGEsYixjKXt2YXIgZD1RYi5leGVjKGIpO3JldHVybiBk
P01hdGgubWF4KDAsZFsxXS0oY3x8MCkpKyhkWzJdfHwicHgiKTpifWZ1bmN0aW9uIFliKGEsYixjLGQsZSl
7Zm9yKHZhciBmPWM9PT0oZD8iYm9yZGVyIjoiY29udGVudCIpPzQ6IndpZHRoIj09PWI/MTowLGc9MDs0Pm
Y7Zis9MikibWFyZ2luIj09PWMmJihnKz1uLmNzcyhhLGMrVVtmXSwhMCxlKSksZD8oImNvbnRlbnQiPT09Y
yYmKGctPW4uY3NzKGEsInBhZGRpbmciK1VbZl0sITAsZSkpLCJtYXJnaW4iIT09YyYmKGctPW4uY3NzKGEs
ImJvcmRlciIrVVtmXSsiV2lkdGgiLCEwLGUpKSk6KGcrPW4uY3NzKGEsInBhZGRpbmciK1VbZl0sITAsZSk
sInBhZGRpbmciIT09YyYmKGcrPW4uY3NzKGEsImJvcmRlciIrVVtmXSsiV2lkdGgiLCEwLGUpKSk7cmV0dX
JuIGd9ZnVuY3Rpb24gWmIoYSxiLGMpe3ZhciBkPSEwLGU9IndpZHRoIj09PWI/YS5vZmZzZXRXaWR0aDphL
m9mZnNldEhlaWdodCxmPUpiKGEpLGc9bC5ib3hTaXppbmcoKSYmImJvcmRlci1ib3giPT09bi5jc3MoYSwi
Ym94U2l6aW5nIiwhMSxmKTtpZigwPj1lfHxudWxsPT1lKXtpZihlPUtiKGEsYixmKSwoMD5lfHxudWxsPT1
lKSYmKGU9YS5zdHlsZVtiXSksSWIudGVzdChlKSlyZXR1cm4gZTtkPWcmJihsLmJveFNpemluZ1JlbGlhYm
xlKCl8fGU9PT1hLnN0eWxlW2JdKSxlPXBhcnNlRmxvYXQoZSl8fDB9cmV0dXJuIGUrWWIoYSxiLGN8fChnP
yJib3JkZXIiOiJjb250ZW50IiksZCxmKSsicHgifW4uZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0
OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9S2IoYSwib3BhY2l0eSIpO3JldHVybiIiPT09Yz8iMSI6Y31
9fX0sY3NzTnVtYmVyOntjb2x1bW5Db3VudDohMCxmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbm
VIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAse
m9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6bC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0s
c3R5bGU6ZnVuY3Rpb24oYSxiLGMsZCl7aWYoYSYmMyE9PWEubm9kZVR5cGUmJjghPT1hLm5vZGVUeXBlJiZ
hLnN0eWxlKXt2YXIgZSxmLGcsaD1uLmNhbWVsQ2FzZShiKSxpPWEuc3R5bGU7aWYoYj1uLmNzc1Byb3BzW2
hdfHwobi5jc3NQcm9wc1toXT1WYihpLGgpKSxnPW4uY3NzSG9va3NbYl18fG4uY3NzSG9va3NbaF0sdm9pZ
CAwPT09YylyZXR1cm4gZyYmImdldCJpbiBnJiZ2b2lkIDAhPT0oZT1nLmdldChhLCExLGQpKT9lOmlbYl07
aWYoZj10eXBlb2YgYywic3RyaW5nIj09PWYmJihlPVJiLmV4ZWMoYykpJiYoYz0oZVsxXSsxKSplWzJdK3B
hcnNlRmxvYXQobi5jc3MoYSxiKSksZj0ibnVtYmVyIiksbnVsbCE9YyYmYz09PWMmJigibnVtYmVyIiE9PW
Z8fG4uY3NzTnVtYmVyW2hdfHwoYys9InB4IiksbC5jbGVhckNsb25lU3R5bGV8fCIiIT09Y3x8MCE9PWIua
W5kZXhPZigiYmFja2dyb3VuZCIpfHwoaVtiXT0iaW5oZXJpdCIpLCEoZyYmInNldCJpbiBnJiZ2b2lkIDA9
PT0oYz1nLnNldChhLGMsZCkpKSkpdHJ5e2lbYl09IiIsaVtiXT1jfWNhdGNoKGope319fSxjc3M6ZnVuY3R
pb24oYSxiLGMsZCl7dmFyIGUsZixnLGg9bi5jYW1lbENhc2UoYik7cmV0dXJuIGI9bi5jc3NQcm9wc1toXX
x8KG4uY3NzUHJvcHNbaF09VmIoYS5zdHlsZSxoKSksZz1uLmNzc0hvb2tzW2JdfHxuLmNzc0hvb2tzW2hdL
GcmJiJnZXQiaW4gZyYmKGY9Zy5nZXQoYSwhMCxjKSksdm9pZCAwPT09ZiYmKGY9S2IoYSxiLGQpKSwibm9y
bWFsIj09PWYmJmIgaW4gVGImJihmPVRiW2JdKSwiIj09PWN8fGM/KGU9cGFyc2VGbG9hdChmKSxjPT09ITB
8fG4uaXNOdW1lcmljKGUpP2V8fDA6Zik6Zn19KSxuLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW
9uKGEsYil7bi5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gYz8wPT09YS5vZmZzZ
XRXaWR0aCYmUGIudGVzdChuLmNzcyhhLCJkaXNwbGF5IikpP24uc3dhcChhLFNiLGZ1bmN0aW9uKCl7cmV0
dXJuIFpiKGEsYixkKX0pOlpiKGEsYixkKTp2b2lkIDB9LHNldDpmdW5jdGlvbihhLGMsZCl7dmFyIGU9ZCY
mSmIoYSk7cmV0dXJuIFhiKGEsYyxkP1liKGEsYixkLGwuYm94U2l6aW5nKCkmJiJib3JkZXItYm94Ij09PW
4uY3NzKGEsImJveFNpemluZyIsITEsZSksZSk6MCl9fX0pLGwub3BhY2l0eXx8KG4uY3NzSG9va3Mub3BhY
2l0eT17Z2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIE9iLnRlc3QoKGImJmEuY3VycmVudFN0eWxlP2EuY3Vy
cmVudFN0eWxlLmZpbHRlcjphLnN0eWxlLmZpbHRlcil8fCIiKT8uMDEqcGFyc2VGbG9hdChSZWdFeHAuJDE
pKyIiOmI/IjEiOiIifSxzZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYz1hLnN0eWxlLGQ9YS5jdXJyZW50U3R5bG
UsZT1uLmlzTnVtZXJpYyhiKT8iYWxwaGEob3BhY2l0eT0iKzEwMCpiKyIpIjoiIixmPWQmJmQuZmlsdGVyf
HxjLmZpbHRlcnx8IiI7Yy56b29tPTEsKGI+PTF8fCIiPT09YikmJiIiPT09bi50cmltKGYucmVwbGFjZShO
YiwiIikpJiZjLnJlbW92ZUF0dHJpYnV0ZSYmKGMucmVtb3ZlQXR0cmlidXRlKCJmaWx0ZXIiKSwiIj09PWJ
8fGQmJiFkLmZpbHRlcil8fChjLmZpbHRlcj1OYi50ZXN0KGYpP2YucmVwbGFjZShOYixlKTpmKyIgIitlKX
19KSxuLmNzc0hvb2tzLm1hcmdpblJpZ2h0PU1iKGwucmVsaWFibGVNYXJnaW5SaWdodCxmdW5jdGlvbihhL
GIpe3JldHVybiBiP24uc3dhcChhLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxLYixbYSwibWFyZ2luUmln
aHQiXSk6dm9pZCAwfSksbi5lYWNoKHttYXJnaW46IiIscGFkZGluZzoiIixib3JkZXI6IldpZHRoIn0sZnV
uY3Rpb24oYSxiKXtuLmNzc0hvb2tzW2ErYl09e2V4cGFuZDpmdW5jdGlvbihjKXtmb3IodmFyIGQ9MCxlPX
t9LGY9InN0cmluZyI9PXR5cGVvZiBjP2Muc3BsaXQoIiAiKTpbY107ND5kO2QrKyllW2ErVVtkXStiXT1mW
2RdfHxmW2QtMl18fGZbMF07cmV0dXJuIGV9fSxIYi50ZXN0KGEpfHwobi5jc3NIb29rc1thK2JdLnNldD1Y
Yil9KSxuLmZuLmV4dGVuZCh7Y3NzOmZ1bmN0aW9uKGEsYil7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihhLGI
sYyl7dmFyIGQsZSxmPXt9LGc9MDtpZihuLmlzQXJyYXkoYikpe2ZvcihkPUpiKGEpLGU9Yi5sZW5ndGg7ZT
5nO2crKylmW2JbZ11dPW4uY3NzKGEsYltnXSwhMSxkKTtyZXR1cm4gZn1yZXR1cm4gdm9pZCAwIT09Yz9uL
nN0eWxlKGEsYixjKTpuLmNzcyhhLGIpCn0sYSxiLGFyZ3VtZW50cy5sZW5ndGg+MSl9LHNob3c6ZnVuY3Rp
b24oKXtyZXR1cm4gV2IodGhpcywhMCl9LGhpZGU6ZnVuY3Rpb24oKXtyZXR1cm4gV2IodGhpcyl9LHRvZ2d
sZTpmdW5jdGlvbihhKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBhP2E/dGhpcy5zaG93KCk6dGhpcy5oaW
RlKCk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7Vih0aGlzKT9uKHRoaXMpLnNob3coKTpuKHRoaXMpLmhpZGUoK
X0pfX0pO2Z1bmN0aW9uICRiKGEsYixjLGQsZSl7cmV0dXJuIG5ldyAkYi5wcm90b3R5cGUuaW5pdChhLGIs
YyxkLGUpfW4uVHdlZW49JGIsJGIucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjokYixpbml0OmZ1bmN0aW9uKGE
sYixjLGQsZSxmKXt0aGlzLmVsZW09YSx0aGlzLnByb3A9Yyx0aGlzLmVhc2luZz1lfHwic3dpbmciLHRoaX
Mub3B0aW9ucz1iLHRoaXMuc3RhcnQ9dGhpcy5ub3c9dGhpcy5jdXIoKSx0aGlzLmVuZD1kLHRoaXMudW5pd
D1mfHwobi5jc3NOdW1iZXJbY10/IiI6InB4Iil9LGN1cjpmdW5jdGlvbigpe3ZhciBhPSRiLnByb3BIb29r
c1t0aGlzLnByb3BdO3JldHVybiBhJiZhLmdldD9hLmdldCh0aGlzKTokYi5wcm9wSG9va3MuX2RlZmF1bHQ
uZ2V0KHRoaXMpfSxydW46ZnVuY3Rpb24oYSl7dmFyIGIsYz0kYi5wcm9wSG9va3NbdGhpcy5wcm9wXTtyZX
R1cm4gdGhpcy5wb3M9Yj10aGlzLm9wdGlvbnMuZHVyYXRpb24/bi5lYXNpbmdbdGhpcy5lYXNpbmddKGEsd
Ghpcy5vcHRpb25zLmR1cmF0aW9uKmEsMCwxLHRoaXMub3B0aW9ucy5kdXJhdGlvbik6YSx0aGlzLm5vdz0o
dGhpcy5lbmQtdGhpcy5zdGFydCkqYit0aGlzLnN0YXJ0LHRoaXMub3B0aW9ucy5zdGVwJiZ0aGlzLm9wdGl
vbnMuc3RlcC5jYWxsKHRoaXMuZWxlbSx0aGlzLm5vdyx0aGlzKSxjJiZjLnNldD9jLnNldCh0aGlzKTokYi
5wcm9wSG9va3MuX2RlZmF1bHQuc2V0KHRoaXMpLHRoaXN9fSwkYi5wcm90b3R5cGUuaW5pdC5wcm90b3R5c
GU9JGIucHJvdG90eXBlLCRiLnByb3BIb29rcz17X2RlZmF1bHQ6e2dldDpmdW5jdGlvbihhKXt2YXIgYjty
ZXR1cm4gbnVsbD09YS5lbGVtW2EucHJvcF18fGEuZWxlbS5zdHlsZSYmbnVsbCE9YS5lbGVtLnN0eWxlW2E
ucHJvcF0/KGI9bi5jc3MoYS5lbGVtLGEucHJvcCwiIiksYiYmImF1dG8iIT09Yj9iOjApOmEuZWxlbVthLn
Byb3BdfSxzZXQ6ZnVuY3Rpb24oYSl7bi5meC5zdGVwW2EucHJvcF0/bi5meC5zdGVwW2EucHJvcF0oYSk6Y
S5lbGVtLnN0eWxlJiYobnVsbCE9YS5lbGVtLnN0eWxlW24uY3NzUHJvcHNbYS5wcm9wXV18fG4uY3NzSG9v
a3NbYS5wcm9wXSk/bi5zdHlsZShhLmVsZW0sYS5wcm9wLGEubm93K2EudW5pdCk6YS5lbGVtW2EucHJvcF0
9YS5ub3d9fX0sJGIucHJvcEhvb2tzLnNjcm9sbFRvcD0kYi5wcm9wSG9va3Muc2Nyb2xsTGVmdD17c2V0Om
Z1bmN0aW9uKGEpe2EuZWxlbS5ub2RlVHlwZSYmYS5lbGVtLnBhcmVudE5vZGUmJihhLmVsZW1bYS5wcm9wX
T1hLm5vdyl9fSxuLmVhc2luZz17bGluZWFyOmZ1bmN0aW9uKGEpe3JldHVybiBhfSxzd2luZzpmdW5jdGlv
bihhKXtyZXR1cm4uNS1NYXRoLmNvcyhhKk1hdGguUEkpLzJ9fSxuLmZ4PSRiLnByb3RvdHlwZS5pbml0LG4
uZnguc3RlcD17fTt2YXIgX2IsYWMsYmM9L14oPzp0b2dnbGV8c2hvd3xoaWRlKSQvLGNjPW5ldyBSZWdFeH
AoIl4oPzooWystXSk9fCkoIitUKyIpKFthLXolXSopJCIsImkiKSxkYz0vcXVldWVIb29rcyQvLGVjPVtqY
10sZmM9eyIqIjpbZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmNyZWF0ZVR3ZWVuKGEsYiksZD1jLmN1cigp
LGU9Y2MuZXhlYyhiKSxmPWUmJmVbM118fChuLmNzc051bWJlclthXT8iIjoicHgiKSxnPShuLmNzc051bWJ
lclthXXx8InB4IiE9PWYmJitkKSYmY2MuZXhlYyhuLmNzcyhjLmVsZW0sYSkpLGg9MSxpPTIwO2lmKGcmJm
dbM10hPT1mKXtmPWZ8fGdbM10sZT1lfHxbXSxnPStkfHwxO2RvIGg9aHx8Ii41IixnLz1oLG4uc3R5bGUoY
y5lbGVtLGEsZytmKTt3aGlsZShoIT09KGg9Yy5jdXIoKS9kKSYmMSE9PWgmJi0taSl9cmV0dXJuIGUmJihn
PWMuc3RhcnQ9K2d8fCtkfHwwLGMudW5pdD1mLGMuZW5kPWVbMV0/ZysoZVsxXSsxKSplWzJdOitlWzJdKSx
jfV19O2Z1bmN0aW9uIGdjKCl7cmV0dXJuIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtfYj12b2lkIDB9KSxfYj
1uLm5vdygpfWZ1bmN0aW9uIGhjKGEsYil7dmFyIGMsZD17aGVpZ2h0OmF9LGU9MDtmb3IoYj1iPzE6MDs0P
mU7ZSs9Mi1iKWM9VVtlXSxkWyJtYXJnaW4iK2NdPWRbInBhZGRpbmciK2NdPWE7cmV0dXJuIGImJihkLm9w
YWNpdHk9ZC53aWR0aD1hKSxkfWZ1bmN0aW9uIGljKGEsYixjKXtmb3IodmFyIGQsZT0oZmNbYl18fFtdKS5
jb25jYXQoZmNbIioiXSksZj0wLGc9ZS5sZW5ndGg7Zz5mO2YrKylpZihkPWVbZl0uY2FsbChjLGIsYSkpcm
V0dXJuIGR9ZnVuY3Rpb24gamMoYSxiLGMpe3ZhciBkLGUsZixnLGgsaSxqLGssbT10aGlzLG89e30scD1hL
nN0eWxlLHE9YS5ub2RlVHlwZSYmVihhKSxyPW4uX2RhdGEoYSwiZnhzaG93Iik7Yy5xdWV1ZXx8KGg9bi5f
cXVldWVIb29rcyhhLCJmeCIpLG51bGw9PWgudW5xdWV1ZWQmJihoLnVucXVldWVkPTAsaT1oLmVtcHR5LmZ
pcmUsaC5lbXB0eS5maXJlPWZ1bmN0aW9uKCl7aC51bnF1ZXVlZHx8aSgpfSksaC51bnF1ZXVlZCsrLG0uYW
x3YXlzKGZ1bmN0aW9uKCl7bS5hbHdheXMoZnVuY3Rpb24oKXtoLnVucXVldWVkLS0sbi5xdWV1ZShhLCJme
CIpLmxlbmd0aHx8aC5lbXB0eS5maXJlKCl9KX0pKSwxPT09YS5ub2RlVHlwZSYmKCJoZWlnaHQiaW4gYnx8
IndpZHRoImluIGIpJiYoYy5vdmVyZmxvdz1bcC5vdmVyZmxvdyxwLm92ZXJmbG93WCxwLm92ZXJmbG93WV0
saj1uLmNzcyhhLCJkaXNwbGF5Iiksaz1HYihhLm5vZGVOYW1lKSwibm9uZSI9PT1qJiYoaj1rKSwiaW5saW
5lIj09PWomJiJub25lIj09PW4uY3NzKGEsImZsb2F0IikmJihsLmlubGluZUJsb2NrTmVlZHNMYXlvdXQmJ
iJpbmxpbmUiIT09az9wLnpvb209MTpwLmRpc3BsYXk9ImlubGluZS1ibG9jayIpKSxjLm92ZXJmbG93JiYo
cC5vdmVyZmxvdz0iaGlkZGVuIixsLnNocmlua1d
yYXBCbG9ja3MoKXx8bS5hbHdheXMoZnVuY3Rpb24oKXtwLm92ZXJmbG93PWMub3ZlcmZsb3dbMF0scC5vdm
VyZmxvd1g9Yy5vdmVyZmxvd1sxXSxwLm92ZXJmbG93WT1jLm92ZXJmbG93WzJdfSkpO2ZvcihkIGluIGIpa
WYoZT1iW2RdLGJjLmV4ZWMoZSkpe2lmKGRlbGV0ZSBiW2RdLGY9Znx8InRvZ2dsZSI9PT1lLGU9PT0ocT8i
aGlkZSI6InNob3ciKSl7aWYoInNob3ciIT09ZXx8IXJ8fHZvaWQgMD09PXJbZF0pY29udGludWU7cT0hMH1
vW2RdPXImJnJbZF18fG4uc3R5bGUoYSxkKX1pZighbi5pc0VtcHR5T2JqZWN0KG8pKXtyPyJoaWRkZW4iaW
4gciYmKHE9ci5oaWRkZW4pOnI9bi5fZGF0YShhLCJmeHNob3ciLHt9KSxmJiYoci5oaWRkZW49IXEpLHE/b
ihhKS5zaG93KCk6bS5kb25lKGZ1bmN0aW9uKCl7bihhKS5oaWRlKCl9KSxtLmRvbmUoZnVuY3Rpb24oKXt2
YXIgYjtuLl9yZW1vdmVEYXRhKGEsImZ4c2hvdyIpO2ZvcihiIGluIG8pbi5zdHlsZShhLGIsb1tiXSl9KTt
mb3IoZCBpbiBvKWc9aWMocT9yW2RdOjAsZCxtKSxkIGluIHJ8fChyW2RdPWcuc3RhcnQscSYmKGcuZW5kPW
cuc3RhcnQsZy5zdGFydD0id2lkdGgiPT09ZHx8ImhlaWdodCI9PT1kPzE6MCkpfX1mdW5jdGlvbiBrYyhhL
GIpe3ZhciBjLGQsZSxmLGc7Zm9yKGMgaW4gYSlpZihkPW4uY2FtZWxDYXNlKGMpLGU9YltkXSxmPWFbY10s
bi5pc0FycmF5KGYpJiYoZT1mWzFdLGY9YVtjXT1mWzBdKSxjIT09ZCYmKGFbZF09ZixkZWxldGUgYVtjXSk
sZz1uLmNzc0hvb2tzW2RdLGcmJiJleHBhbmQiaW4gZyl7Zj1nLmV4cGFuZChmKSxkZWxldGUgYVtkXTtmb3
IoYyBpbiBmKWMgaW4gYXx8KGFbY109ZltjXSxiW2NdPWUpfWVsc2UgYltkXT1lfWZ1bmN0aW9uIGxjKGEsY
ixjKXt2YXIgZCxlLGY9MCxnPWVjLmxlbmd0aCxoPW4uRGVmZXJyZWQoKS5hbHdheXMoZnVuY3Rpb24oKXtk
ZWxldGUgaS5lbGVtfSksaT1mdW5jdGlvbigpe2lmKGUpcmV0dXJuITE7Zm9yKHZhciBiPV9ifHxnYygpLGM
9TWF0aC5tYXgoMCxqLnN0YXJ0VGltZStqLmR1cmF0aW9uLWIpLGQ9Yy9qLmR1cmF0aW9ufHwwLGY9MS1kLG
c9MCxpPWoudHdlZW5zLmxlbmd0aDtpPmc7ZysrKWoudHdlZW5zW2ddLnJ1bihmKTtyZXR1cm4gaC5ub3RpZ
nlXaXRoKGEsW2osZixjXSksMT5mJiZpP2M6KGgucmVzb2x2ZVdpdGgoYSxbal0pLCExKX0saj1oLnByb21p
c2Uoe2VsZW06YSxwcm9wczpuLmV4dGVuZCh7fSxiKSxvcHRzOm4uZXh0ZW5kKCEwLHtzcGVjaWFsRWFzaW5
nOnt9fSxjKSxvcmlnaW5hbFByb3BlcnRpZXM6YixvcmlnaW5hbE9wdGlvbnM6YyxzdGFydFRpbWU6X2J8fG
djKCksZHVyYXRpb246Yy5kdXJhdGlvbix0d2VlbnM6W10sY3JlYXRlVHdlZW46ZnVuY3Rpb24oYixjKXt2Y
XIgZD1uLlR3ZWVuKGEsai5vcHRzLGIsYyxqLm9wdHMuc3BlY2lhbEVhc2luZ1tiXXx8ai5vcHRzLmVhc2lu
Zyk7cmV0dXJuIGoudHdlZW5zLnB1c2goZCksZH0sc3RvcDpmdW5jdGlvbihiKXt2YXIgYz0wLGQ9Yj9qLnR
3ZWVucy5sZW5ndGg6MDtpZihlKXJldHVybiB0aGlzO2ZvcihlPSEwO2Q+YztjKyspai50d2VlbnNbY10ucn
VuKDEpO3JldHVybiBiP2gucmVzb2x2ZVdpdGgoYSxbaixiXSk6aC5yZWplY3RXaXRoKGEsW2osYl0pLHRoa
XN9fSksaz1qLnByb3BzO2ZvcihrYyhrLGoub3B0cy5zcGVjaWFsRWFzaW5nKTtnPmY7ZisrKWlmKGQ9ZWNb
Zl0uY2FsbChqLGEsayxqLm9wdHMpKXJldHVybiBkO3JldHVybiBuLm1hcChrLGljLGopLG4uaXNGdW5jdGl
vbihqLm9wdHMuc3RhcnQpJiZqLm9wdHMuc3RhcnQuY2FsbChhLGopLG4uZngudGltZXIobi5leHRlbmQoaS
x7ZWxlbTphLGFuaW06aixxdWV1ZTpqLm9wdHMucXVldWV9KSksai5wcm9ncmVzcyhqLm9wdHMucHJvZ3Jlc
3MpLmRvbmUoai5vcHRzLmRvbmUsai5vcHRzLmNvbXBsZXRlKS5mYWlsKGoub3B0cy5mYWlsKS5hbHdheXMo
ai5vcHRzLmFsd2F5cyl9bi5BbmltYXRpb249bi5leHRlbmQobGMse3R3ZWVuZXI6ZnVuY3Rpb24oYSxiKXt
uLmlzRnVuY3Rpb24oYSk/KGI9YSxhPVsiKiJdKTphPWEuc3BsaXQoIiAiKTtmb3IodmFyIGMsZD0wLGU9YS
5sZW5ndGg7ZT5kO2QrKyljPWFbZF0sZmNbY109ZmNbY118fFtdLGZjW2NdLnVuc2hpZnQoYil9LHByZWZpb
HRlcjpmdW5jdGlvbihhLGIpe2I/ZWMudW5zaGlmdChhKTplYy5wdXNoKGEpfX0pLG4uc3BlZWQ9ZnVuY3Rp
b24oYSxiLGMpe3ZhciBkPWEmJiJvYmplY3QiPT10eXBlb2YgYT9uLmV4dGVuZCh7fSxhKTp7Y29tcGxldGU
6Y3x8IWMmJmJ8fG4uaXNGdW5jdGlvbihhKSYmYSxkdXJhdGlvbjphLGVhc2luZzpjJiZifHxiJiYhbi5pc0
Z1bmN0aW9uKGIpJiZifTtyZXR1cm4gZC5kdXJhdGlvbj1uLmZ4Lm9mZj8wOiJudW1iZXIiPT10eXBlb2YgZ
C5kdXJhdGlvbj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gbi5meC5zcGVlZHM/bi5meC5zcGVlZHNbZC5k
dXJhdGlvbl06bi5meC5zcGVlZHMuX2RlZmF1bHQsKG51bGw9PWQucXVldWV8fGQucXVldWU9PT0hMCkmJih
kLnF1ZXVlPSJmeCIpLGQub2xkPWQuY29tcGxldGUsZC5jb21wbGV0ZT1mdW5jdGlvbigpe24uaXNGdW5jdG
lvbihkLm9sZCkmJmQub2xkLmNhbGwodGhpcyksZC5xdWV1ZSYmbi5kZXF1ZXVlKHRoaXMsZC5xdWV1ZSl9L
GR9LG4uZm4uZXh0ZW5kKHtmYWRlVG86ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMuZmlsdGVyKFYp
LmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbml
tYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPW4uaXNFbXB0eU9iamVjdChhKSxmPW4uc3BlZWQoYixjLG
QpLGc9ZnVuY3Rpb24oKXt2YXIgYj1sYyh0aGlzLG4uZXh0ZW5kKHt9LGEpLGYpOyhlfHxuLl9kYXRhKHRoa
XMsImZpbmlzaCIpKSYmYi5zdG9wKCEwKX07cmV0dXJuIGcuZmluaXNoPWcsZXx8Zi5xdWV1ZT09PSExP3Ro
aXMuZWFjaChnKTp0aGlzLnF1ZXVlKGYucXVldWUsZyl9LHN0b3A6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ
1bmN0aW9uKGEpe3ZhciBiPWEuc3RvcDtkZWxldGUgYS5zdG9wLGIoYyl9O3JldHVybiJzdHJpbmciIT10eX
Blb2YgYSYmKGM9YixiPWEsYT12b2lkIDApLGImJmEhPT0hMSYmdGhpcy5xdWV1ZShhfHwiZngiLFtdKSx0a
GlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj0hMCxlPW51bGwhPWEmJmErInF1ZXVlSG9va3MiLGY9bi50aW1l
cnMsZz1uLl9kYXRhKHRoaXMpO2lmKGUpZ1tlXSYmZ1tlXS5zdG9wJiZkKGdbZV0pO2Vsc2UgZm9yKGUgaW4
gZylnW2VdJiZnW2VdLnN0b3AmJmRjLnRlc3QoZSkmJmQoZ1tlXSk7Zm9yKGU9Zi5sZW5ndGg7ZS0tOylmW2
VdLmVsZW0hPT10aGlzfHxudWxsIT1hJiZmW2VdLnF1ZXVlIT09YXx8KGZbZV0uYW5pbS5zdG9wKGMpLGI9I
TEsZi5zcGxpY2UoZSwxKSk7KGJ8fCFjKSYmbi5kZXF1ZXVlKHRoaXMsYSl9KX0sZmluaXNoOmZ1bmN0aW9u
KGEpe3JldHVybiBhIT09ITEmJihhPWF8fCJmeCIpLHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiLGM9bi5
fZGF0YSh0aGlzKSxkPWNbYSsicXVldWUiXSxlPWNbYSsicXVldWVIb29rcyJdLGY9bi50aW1lcnMsZz1kP2
QubGVuZ3RoOjA7Zm9yKGMuZmluaXNoPSEwLG4ucXVldWUodGhpcyxhLFtdKSxlJiZlLnN0b3AmJmUuc3Rvc
C5jYWxsKHRoaXMsITApLGI9Zi5sZW5ndGg7Yi0tOylmW2JdLmVsZW09PT10aGlzJiZmW2JdLnF1ZXVlPT09
YSYmKGZbYl0uYW5pbS5zdG9wKCEwKSxmLnNwbGljZShiLDEpKTtmb3IoYj0wO2c+YjtiKyspZFtiXSYmZFt
iXS5maW5pc2gmJmRbYl0uZmluaXNoLmNhbGwodGhpcyk7ZGVsZXRlIGMuZmluaXNofSl9fSksbi5lYWNoKF
sidG9nZ2xlIiwic2hvdyIsImhpZGUiXSxmdW5jdGlvbihhLGIpe3ZhciBjPW4uZm5bYl07bi5mbltiXT1md
W5jdGlvbihhLGQsZSl7cmV0dXJuIG51bGw9PWF8fCJib29sZWFuIj09dHlwZW9mIGE/Yy5hcHBseSh0aGlz
LGFyZ3VtZW50cyk6dGhpcy5hbmltYXRlKGhjKGIsITApLGEsZCxlKX19KSxuLmVhY2goe3NsaWRlRG93bjp
oYygic2hvdyIpLHNsaWRlVXA6aGMoImhpZGUiKSxzbGlkZVRvZ2dsZTpoYygidG9nZ2xlIiksZmFkZUluOn
tvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6I
nRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe24uZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFu
aW1hdGUoYixhLGMsZCl9fSksbi50aW1lcnM9W10sbi5meC50aWNrPWZ1bmN0aW9uKCl7dmFyIGEsYj1uLnR
pbWVycyxjPTA7Zm9yKF9iPW4ubm93KCk7YzxiLmxlbmd0aDtjKyspYT1iW2NdLGEoKXx8YltjXSE9PWF8fG
Iuc3BsaWNlKGMtLSwxKTtiLmxlbmd0aHx8bi5meC5zdG9wKCksX2I9dm9pZCAwfSxuLmZ4LnRpbWVyPWZ1b
mN0aW9uKGEpe24udGltZXJzLnB1c2goYSksYSgpP24uZnguc3RhcnQoKTpuLnRpbWVycy5wb3AoKX0sbi5m
eC5pbnRlcnZhbD0xMyxuLmZ4LnN0YXJ0PWZ1bmN0aW9uKCl7YWN8fChhYz1zZXRJbnRlcnZhbChuLmZ4LnR
pY2ssbi5meC5pbnRlcnZhbCkpfSxuLmZ4LnN0b3A9ZnVuY3Rpb24oKXtjbGVhckludGVydmFsKGFjKSxhYz
1udWxsfSxuLmZ4LnNwZWVkcz17c2xvdzo2MDAsZmFzdDoyMDAsX2RlZmF1bHQ6NDAwfSxuLmZuLmRlbGF5P
WZ1bmN0aW9uKGEsYil7cmV0dXJuIGE9bi5meD9uLmZ4LnNwZWVkc1thXXx8YTphLGI9Ynx8ImZ4Iix0aGlz
LnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl
7Y2xlYXJUaW1lb3V0KGQpfX0pfSxmdW5jdGlvbigpe3ZhciBhLGIsYyxkLGU9ei5jcmVhdGVFbGVtZW50KC
JkaXYiKTtlLnNldEF0dHJpYnV0ZSgiY2xhc3NOYW1lIiwidCIpLGUuaW5uZXJIVE1MPSIgIDxsaW5rLz48d
GFibGU+PC90YWJsZT48YSBocmVmPScvYSc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGE9ZS5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdLGM9ei5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxkPWMuYXB
wZW5kQ2hpbGQoei5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksYj1lLmdldEVsZW1lbnRzQnlUYWdOYW1lKC
JpbnB1dCIpWzBdLGEuc3R5bGUuY3NzVGV4dD0idG9wOjFweCIsbC5nZXRTZXRBdHRyaWJ1dGU9InQiIT09Z
S5jbGFzc05hbWUsbC5zdHlsZT0vdG9wLy50ZXN0KGEuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxsLmhyZWZO
b3JtYWxpemVkPSIvYSI9PT1hLmdldEF0dHJpYnV0ZSgiaHJlZiIpLGwuY2hlY2tPbj0hIWIudmFsdWUsbC5
vcHRTZWxlY3RlZD1kLnNlbGVjdGVkLGwuZW5jdHlwZT0hIXouY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3
R5cGUsYy5kaXNhYmxlZD0hMCxsLm9wdERpc2FibGVkPSFkLmRpc2FibGVkLGI9ei5jcmVhdGVFbGVtZW50K
CJpbnB1dCIpLGIuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIpLGwuaW5wdXQ9IiI9PT1iLmdldEF0dHJpYnV0
ZSgidmFsdWUiKSxiLnZhbHVlPSJ0IixiLnNldEF0dHJpYnV0ZSgidHlwZSIsInJhZGlvIiksbC5yYWRpb1Z
hbHVlPSJ0Ij09PWIudmFsdWUsYT1iPWM9ZD1lPW51bGx9KCk7dmFyIG1jPS9cci9nO24uZm4uZXh0ZW5kKH
t2YWw6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGU9dGhpc1swXTt7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1c
m4gZD1uLmlzRnVuY3Rpb24oYSksdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe3ZhciBlOzE9PT10aGlzLm5vZGVU
eXBlJiYoZT1kP2EuY2FsbCh0aGlzLGMsbih0aGlzKS52YWwoKSk6YSxudWxsPT1lP2U9IiI6Im51bWJlciI
9PXR5cGVvZiBlP2UrPSIiOm4uaXNBcnJheShlKSYmKGU9bi5tYXAoZSxmdW5jdGlvbihhKXtyZXR1cm4gbn
VsbD09YT8iIjphKyIifSkpLGI9bi52YWxIb29rc1t0aGlzLnR5cGVdfHxuLnZhbEhvb2tzW3RoaXMubm9kZ
U5hbWUudG9Mb3dlckNhc2UoKV0sYiYmInNldCJpbiBiJiZ2b2lkIDAhPT1iLnNldCh0aGlzLGUsInZhbHVl
Iil8fCh0aGlzLnZhbHVlPWUpKX0pO2lmKGUpcmV0dXJuIGI9bi52YWxIb29rc1tlLnR5cGVdfHxuLnZhbEh
vb2tzW2Uubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0sYiYmImdldCJpbiBiJiZ2b2lkIDAhPT0oYz1iLmdldC
hlLCJ2YWx1ZSIpKT9jOihjPWUudmFsdWUsInN0cmluZyI9PXR5cGVvZiBjP2MucmVwbGFjZShtYywiIik6b
nVsbD09Yz8iIjpjKX19fSksbi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2
YXIgYj1uLmZpbmQuYXR0cihhLCJ2YWx1ZSIpO3JldHVybiBudWxsIT1iP2I6bi50ZXh0KGEpfX0sc2VsZWN
0OntnZXQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiLGMsZD1hLm9wdGlvbnMsZT1hLnNlbGVjdGVkSW5kZXgsZj
0ic2VsZWN0LW9uZSI9PT1hLnR5cGV8fDA+ZSxnPWY/bnVsbDpbXSxoPWY/ZSsxOmQubGVuZ3RoLGk9MD5lP
2g6Zj9lOjA7aD5pO2krKylpZihjPWRbaV0sISghYy5zZWxlY3RlZCYmaSE9PWV8fChsLm9wdERpc2FibGVk
P2MuZGlzYWJsZWQ6bnVsbCE9PWMuZ2V0QXR0cmlidXRlKCJkaXNhYmxlZCIpKXx8Yy5wYXJlbnROb2RlLmR
pc2FibGVkJiZuLm5vZGVOYW1lKGMucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2lmKGI9bihjKS52YWwoKS
xmKXJldHVybiBiO2cucHVzaChiKX1yZXR1cm4gZ30sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlPWEub
3B0aW9ucyxmPW4ubWFrZUFycmF5KGIpLGc9ZS5sZW5ndGg7d2hpbGUoZy0tKWlmKGQ9ZVtnXSxuLmluQXJy
YXkobi52YWxIb29rcy5vcHRpb24uZ2V0KGQpLGYpPj0wKXRyeXtkLnNlbGVjdGVkPWM9ITB9Y2F0Y2goaCl
7ZC5zY3JvbGxIZWlnaHR9ZWxzZSBkLnNlbGVjdGVkPSExO3JldHVybiBjfHwoYS5zZWxlY3RlZEluZGV4PS
0xKSxlfX19fSksbi5lYWNoKFsicmFkaW8iLCJjaGVja2JveCJdLGZ1bmN0aW9uKCl7bi52YWxIb29rc1t0a
GlzXT17c2V0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uaXNBcnJheShiKT9hLmNoZWNrZWQ9bi5pbkFycmF5
KG4oYSkudmFsKCksYik+PTA6dm9pZCAwfX0sbC5jaGVja09ufHwobi52YWxIb29rc1t0aGlzXS5nZXQ9ZnV
uY3Rpb24oYSl7cmV0dXJuIG51bGw9PT1hLmdldEF0dHJpYnV0ZSgidmFsdWUiKT8ib24iOmEudmFsdWV9KX
0pO3ZhciBuYyxvYyxwYz1uLmV4cHIuYXR0ckhhbmRsZSxxYz0vXig/OmNoZWNrZWR8c2VsZWN0ZWQpJC9pL
HJjPWwuZ2V0U2V0QXR0cmlidXRlLHNjPWwuaW5wdXQ7bi5mbi5leHRlbmQoe2F0dHI6ZnVuY3Rpb24oYSxi
KXtyZXR1cm4gVyh0aGlzLG4uYXR0cixhLGIsYXJndW1lbnRzLmxlbmd0aD4xKX0scmVtb3ZlQXR0cjpmdW5
jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7bi5yZW1vdmVBdHRyKHRoaXMsYSl9KX19KS
xuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmPWEubm9kZVR5cGU7aWYoYSYmMyE9P
WYmJjghPT1mJiYyIT09ZilyZXR1cm4gdHlwZW9mIGEuZ2V0QXR0cmlidXRlPT09TD9uLnByb3AoYSxiLGMp
OigxPT09ZiYmbi5pc1hNTERvYyhhKXx8KGI9Yi50b0xvd2VyQ2FzZSgpLGQ9bi5hdHRySG9va3NbYl18fCh
uLmV4cHIubWF0Y2guYm9vbC50ZXN0KGIpP29jOm
5jKSksdm9pZCAwPT09Yz9kJiYiZ2V0ImluIGQmJm51bGwhPT0oZT1kLmdldChhLGIpKT9lOihlPW4uZmluZ
C5hdHRyKGEsYiksbnVsbD09ZT92b2lkIDA6ZSk6bnVsbCE9PWM/ZCYmInNldCJpbiBkJiZ2b2lkIDAhPT0o
ZT1kLnNldChhLGMsYikpP2U6KGEuc2V0QXR0cmlidXRlKGIsYysiIiksYyk6dm9pZCBuLnJlbW92ZUF0dHI
oYSxiKSl9LHJlbW92ZUF0dHI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9MCxmPWImJmIubWF0Y2goRik7aW
YoZiYmMT09PWEubm9kZVR5cGUpd2hpbGUoYz1mW2UrK10pZD1uLnByb3BGaXhbY118fGMsbi5leHByLm1hd
GNoLmJvb2wudGVzdChjKT9zYyYmcmN8fCFxYy50ZXN0KGMpP2FbZF09ITE6YVtuLmNhbWVsQ2FzZSgiZGVm
YXVsdC0iK2MpXT1hW2RdPSExOm4uYXR0cihhLGMsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHJjP2M6ZCl9LGF
0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoIWwucmFkaW9WYWx1ZSYmInJhZGlvIj09PW
ImJm4ubm9kZU5hbWUoYSwiaW5wdXQiKSl7dmFyIGM9YS52YWx1ZTtyZXR1cm4gYS5zZXRBdHRyaWJ1dGUoI
nR5cGUiLGIpLGMmJihhLnZhbHVlPWMpLGJ9fX19fSksb2M9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJu
IGI9PT0hMT9uLnJlbW92ZUF0dHIoYSxjKTpzYyYmcmN8fCFxYy50ZXN0KGMpP2Euc2V0QXR0cmlidXRlKCF
yYyYmbi5wcm9wRml4W2NdfHxjLGMpOmFbbi5jYW1lbENhc2UoImRlZmF1bHQtIitjKV09YVtjXT0hMCxjfX
0sbi5lYWNoKG4uZXhwci5tYXRjaC5ib29sLnNvdXJjZS5tYXRjaCgvXHcrL2cpLGZ1bmN0aW9uKGEsYil7d
mFyIGM9cGNbYl18fG4uZmluZC5hdHRyO3BjW2JdPXNjJiZyY3x8IXFjLnRlc3QoYik/ZnVuY3Rpb24oYSxi
LGQpe3ZhciBlLGY7cmV0dXJuIGR8fChmPXBjW2JdLHBjW2JdPWUsZT1udWxsIT1jKGEsYixkKT9iLnRvTG9
3ZXJDYXNlKCk6bnVsbCxwY1tiXT1mKSxlfTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGM/dm9pZCAwOmFbbi
5jYW1lbENhc2UoImRlZmF1bHQtIitiKV0/Yi50b0xvd2VyQ2FzZSgpOm51bGx9fSksc2MmJnJjfHwobi5hd
HRySG9va3MudmFsdWU9e3NldDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIG4ubm9kZU5hbWUoYSwiaW5wdXQi
KT92b2lkKGEuZGVmYXVsdFZhbHVlPWIpOm5jJiZuYy5zZXQoYSxiLGMpfX0pLHJjfHwobmM9e3NldDpmdW5
jdGlvbihhLGIsYyl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGVOb2RlKGMpO3JldHVybiBkfHxhLnNldEF0dHJpYn
V0ZU5vZGUoZD1hLm93bmVyRG9jdW1lbnQuY3JlYXRlQXR0cmlidXRlKGMpKSxkLnZhbHVlPWIrPSIiLCJ2Y
Wx1ZSI9PT1jfHxiPT09YS5nZXRBdHRyaWJ1dGUoYyk/Yjp2b2lkIDB9fSxwYy5pZD1wYy5uYW1lPXBjLmNv
b3Jkcz1mdW5jdGlvbihhLGIsYyl7dmFyIGQ7cmV0dXJuIGM/dm9pZCAwOihkPWEuZ2V0QXR0cmlidXRlTm9
kZShiKSkmJiIiIT09ZC52YWx1ZT9kLnZhbHVlOm51bGx9LG4udmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3
Rpb24oYSxiKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoYik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP2Mud
mFsdWU6dm9pZCAwfSxzZXQ6bmMuc2V0fSxuLmF0dHJIb29rcy5jb250ZW50ZWRpdGFibGU9e3NldDpmdW5j
dGlvbihhLGIsYyl7bmMuc2V0KGEsIiI9PT1iPyExOmIsYyl9fSxuLmVhY2goWyJ3aWR0aCIsImhlaWdodCJ
dLGZ1bmN0aW9uKGEsYil7bi5hdHRySG9va3NbYl09e3NldDpmdW5jdGlvbihhLGMpe3JldHVybiIiPT09Yz
8oYS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpLGMpOnZvaWQgMH19fSkpLGwuc3R5bGV8fChuLmF0dHJIb29rc
y5zdHlsZT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLnN0eWxlLmNzc1RleHR8fHZvaWQgMH0sc2V0OmZ1
bmN0aW9uKGEsYil7cmV0dXJuIGEuc3R5bGUuY3NzVGV4dD1iKyIifX0pO3ZhciB0Yz0vXig/OmlucHV0fHN
lbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0KSQvaSx1Yz0vXig/OmF8YXJlYSkkL2k7bi5mbi5leHRlbm
Qoe3Byb3A6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gVyh0aGlzLG4ucHJvcCxhLGIsYXJndW1lbnRzLmxlbmd0a
D4xKX0scmVtb3ZlUHJvcDpmdW5jdGlvbihhKXtyZXR1cm4gYT1uLnByb3BGaXhbYV18fGEsdGhpcy5lYWNo
KGZ1bmN0aW9uKCl7dHJ5e3RoaXNbYV09dm9pZCAwLGRlbGV0ZSB0aGlzW2FdfWNhdGNoKGIpe319KX19KSx
uLmV4dGVuZCh7cHJvcEZpeDp7ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSJ9LHByb3A6Zn
VuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZixnPWEubm9kZVR5cGU7aWYoYSYmMyE9PWcmJjghPT1nJiYyIT09Z
ylyZXR1cm4gZj0xIT09Z3x8IW4uaXNYTUxEb2MoYSksZiYmKGI9bi5wcm9wRml4W2JdfHxiLGU9bi5wcm9w
SG9va3NbYl0pLHZvaWQgMCE9PWM/ZSYmInNldCJpbiBlJiZ2b2lkIDAhPT0oZD1lLnNldChhLGMsYikpP2Q
6YVtiXT1jOmUmJiJnZXQiaW4gZSYmbnVsbCE9PShkPWUuZ2V0KGEsYikpP2Q6YVtiXX0scHJvcEhvb2tzOn
t0YWJJbmRleDp7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPW4uZmluZC5hdHRyKGEsInRhYmluZGV4Iik7cmV0d
XJuIGI/cGFyc2VJbnQoYiwxMCk6dGMudGVzdChhLm5vZGVOYW1lKXx8dWMudGVzdChhLm5vZGVOYW1lKSYm
YS5ocmVmPzA6LTF9fX19KSxsLmhyZWZOb3JtYWxpemVkfHxuLmVhY2goWyJocmVmIiwic3JjIl0sZnVuY3R
pb24oYSxiKXtuLnByb3BIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEF0dHJpYnV0ZS
hiLDQpfX19KSxsLm9wdFNlbGVjdGVkfHwobi5wcm9wSG9va3Muc2VsZWN0ZWQ9e2dldDpmdW5jdGlvbihhK
Xt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJihiLnNlbGVjdGVkSW5kZXgsYi5wYXJlbnROb2RlJiZi
LnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleCksbnVsbH19KSxuLmVhY2goWyJ0YWJJbmRleCIsInJlYWRPbmx
5IiwibWF4TGVuZ3RoIiwiY2VsbFNwYWNpbmciLCJjZWxsUGFkZGluZyIsInJvd1NwYW4iLCJjb2xTcGFuIi
widXNlTWFwIiwiZnJhbWVCb3JkZXIiLCJjb250ZW50RWRpdGFibGUiXSxmdW5jdGlvbigpe24ucHJvcEZpe
Ft0aGlzLnRvTG93ZXJDYXNlKCldPXRoaXN9KSxsLmVuY3R5cGV8fChuLnByb3BGaXguZW5jdHlwZT0iZW5j
b2RpbmciKTt2YXIgdmM9L1tcdFxyXG5cZl0vZztuLmZuLmV4dGVuZCh7YWRkQ2xhc3M6ZnVuY3Rpb24oYSl
7dmFyIGIsYyxkLGUsZixnLGg9MCxpPXRoaXMubGVuZ3RoLGo9InN0cmluZyI9PXR5cGVvZiBhJiZhO2lmKG
4uaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe24odGhpcykuYWRkQ2xhc3MoY
S5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoailmb3IoYj0oYXx8IiIpLm1hdGNoKEYpfHxb
XTtpPmg7aCsrKWlmKGM9dGhpc1toXSxkPTE9PT1jLm5vZGVUeXBlJiYoYy5jbGFzc05hbWU/KCIgIitjLmN
sYXNzTmFtZSsiICIpLnJlcGxhY2UodmMsIiAiKToiICIpKXtmPTA7d2hpbGUoZT1iW2YrK10pZC5pbmRleE
9mKCIgIitlKyIgIik8MCYmKGQrPWUrIiAiKTtnPW4udHJpbShkKSxjLmNsYXNzTmFtZSE9PWcmJihjLmNsY
XNzTmFtZT1nKX1yZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZixn
LGg9MCxpPXRoaXMubGVuZ3RoLGo9MD09PWFyZ3VtZW50cy5sZW5ndGh8fCJzdHJpbmciPT10eXBlb2YgYSY
mYTtpZihuLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtuKHRoaXMpLnJlbW
92ZUNsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGopZm9yKGI9KGF8fCIiKS5tY
XRjaChGKXx8W107aT5oO2grKylpZihjPXRoaXNbaF0sZD0xPT09Yy5ub2RlVHlwZSYmKGMuY2xhc3NOYW1l
PygiICIrYy5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKHZjLCIgIik6IiIpKXtmPTA7d2hpbGUoZT1iW2YrK10
pd2hpbGUoZC5pbmRleE9mKCIgIitlKyIgIik+PTApZD1kLnJlcGxhY2UoIiAiK2UrIiAiLCIgIik7Zz1hP2
4udHJpbShkKToiIixjLmNsYXNzTmFtZSE9PWcmJihjLmNsYXNzTmFtZT1nKX1yZXR1cm4gdGhpc30sdG9nZ
2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYTtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBi
JiYic3RyaW5nIj09PWM/Yj90aGlzLmFkZENsYXNzKGEpOnRoaXMucmVtb3ZlQ2xhc3MoYSk6dGhpcy5lYWN
oKG4uaXNGdW5jdGlvbihhKT9mdW5jdGlvbihjKXtuKHRoaXMpLnRvZ2dsZUNsYXNzKGEuY2FsbCh0aGlzLG
MsdGhpcy5jbGFzc05hbWUsYiksYil9OmZ1bmN0aW9uKCl7aWYoInN0cmluZyI9PT1jKXt2YXIgYixkPTAsZ
T1uKHRoaXMpLGY9YS5tYXRjaChGKXx8W107d2hpbGUoYj1mW2QrK10pZS5oYXNDbGFzcyhiKT9lLnJlbW92
ZUNsYXNzKGIpOmUuYWRkQ2xhc3MoYil9ZWxzZShjPT09THx8ImJvb2xlYW4iPT09YykmJih0aGlzLmNsYXN
zTmFtZSYmbi5fZGF0YSh0aGlzLCJfX2NsYXNzTmFtZV9fIix0aGlzLmNsYXNzTmFtZSksdGhpcy5jbGFzc0
5hbWU9dGhpcy5jbGFzc05hbWV8fGE9PT0hMT8iIjpuLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iKXx8I
iIpfSl9LGhhc0NsYXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5n
dGg7ZD5jO2MrKylpZigxPT09dGhpc1tjXS5ub2RlVHlwZSYmKCIgIit0aGlzW2NdLmNsYXNzTmFtZSsiICI
pLnJlcGxhY2UodmMsIiAiKS5pbmRleE9mKGIpPj0wKXJldHVybiEwO3JldHVybiExfX0pLG4uZWFjaCgiYm
x1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY
2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVy
IG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciB
jb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe24uZm5bYl09ZnVuY3Rpb24oYSxjKXtyZX
R1cm4gYXJndW1lbnRzLmxlbmd0aD4wP3RoaXMub24oYixudWxsLGEsYyk6dGhpcy50cmlnZ2VyKGIpfX0pL
G4uZm4uZXh0ZW5kKHtob3ZlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoYSkubW91
c2VsZWF2ZShifHxhKX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl
9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGRlbGVnYXRlOmZ1bm
N0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsY
ixjKXtyZXR1cm4gMT09PWFyZ3VtZW50cy5sZW5ndGg/dGhpcy5vZmYoYSwiKioiKTp0aGlzLm9mZihiLGF8
fCIqKiIsYyl9fSk7dmFyIHdjPW4ubm93KCkseGM9L1w/Lyx5Yz0vKCwpfChcW3x7KXwofXxdKXwiKD86W14
iXFxcclxuXXxcXFsiXFxcL2JmbnJ0XXxcXHVbXGRhLWZBLUZdezR9KSoiXHMqOj98dHJ1ZXxmYWxzZXxudW
xsfC0/KD8hMFxkKVxkKyg/OlwuXGQrfCkoPzpbZUVdWystXT9cZCt8KS9nO24ucGFyc2VKU09OPWZ1bmN0a
W9uKGIpe2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYisiIik7dmFyIGMs
ZD1udWxsLGU9bi50cmltKGIrIiIpO3JldHVybiBlJiYhbi50cmltKGUucmVwbGFjZSh5YyxmdW5jdGlvbih
hLGIsZSxmKXtyZXR1cm4gYyYmYiYmKGQ9MCksMD09PWQ/YTooYz1lfHxiLGQrPSFmLSFlLCIiKX0pKT9GdW
5jdGlvbigicmV0dXJuICIrZSkoKTpuLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LG4ucGFyc2VYTUw9Z
nVuY3Rpb24oYil7dmFyIGMsZDtpZighYnx8InN0cmluZyIhPXR5cGVvZiBiKXJldHVybiBudWxsO3RyeXth
LkRPTVBhcnNlcj8oZD1uZXcgRE9NUGFyc2VyLGM9ZC5wYXJzZUZyb21TdHJpbmcoYiwidGV4dC94bWwiKSk
6KGM9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxjLmFzeW5jPSJmYWxzZSIsYy5sb2
FkWE1MKGIpKX1jYXRjaChlKXtjPXZvaWQgMH1yZXR1cm4gYyYmYy5kb2N1bWVudEVsZW1lbnQmJiFjLmdld
EVsZW1lbnRzQnlUYWdOYW1lKCJwYXJzZXJlcnJvciIpLmxlbmd0aHx8bi5lcnJvcigiSW52YWxpZCBYTUw6
ICIrYiksY307dmFyIHpjLEFjLEJjPS8jLiokLyxDYz0vKFs/Jl0pXz1bXiZdKi8sRGM9L14oLio/KTpbIFx
0XSooW15cclxuXSopXHI/JC9nbSxFYz0vXig/OmFib3V0fGFwcHxhcHAtc3RvcmFnZXwuKy1leHRlbnNpb2
58ZmlsZXxyZXN8d2lkZ2V0KTokLyxGYz0vXig/OkdFVHxIRUFEKSQvLEdjPS9eXC9cLy8sSGM9L14oW1x3L
istXSs6KSg/OlwvXC8oPzpbXlwvPyNdKkB8KShbXlwvPyM6XSopKD86OihcZCspfCl8KS8sSWM9e30sSmM9
e30sS2M9IiovIi5jb25jYXQoIioiKTt0cnl7QWM9bG9jYXRpb24uaHJlZn1jYXRjaChMYyl7QWM9ei5jcmV
hdGVFbGVtZW50KCJhIiksQWMuaHJlZj0iIixBYz1BYy5ocmVmfXpjPUhjLmV4ZWMoQWMudG9Mb3dlckNhc2
UoKSl8fFtdO2Z1bmN0aW9uIE1jKGEpe3JldHVybiBmdW5jdGlvbihiLGMpeyJzdHJpbmciIT10eXBlb2YgY
iYmKGM9YixiPSIqIik7dmFyIGQsZT0wLGY9Yi50b0xvd2VyQ2FzZSgpLm1hdGNoKEYpfHxbXTtpZihuLmlz
RnVuY3Rpb24oYykpd2hpbGUoZD1mW2UrK10pIisiPT09ZC5jaGFyQXQoMCk/KGQ9ZC5zbGljZSgxKXx8Iio
iLChhW2RdPWFbZF18fFtdKS51bnNoaWZ0KGMpKTooYVtkXT1hW2RdfHxbXSkucHVzaChjKX19ZnVuY3Rpb2
4gTmMoYSxiLGMsZCl7dmFyIGU9e30sZj1hPT09SmM7ZnVuY3Rpb24gZyhoKXt2YXIgaTtyZXR1cm4gZVtoX
T0hMCxuLmVhY2goYVtoXXx8W10sZnVuY3Rpb24oYSxoKXt2YXIgaj1oKGIsYyxkKTtyZXR1cm4ic3RyaW5n
IiE9dHlwZW9mIGp8fGZ8fGVbal0/Zj8hKGk9aik6dm9pZCAwOihiLmRhdGFUeXBlcy51bnNoaWZ0KGopLGc
oaiksITEpfSksaX1yZXR1cm4gZyhiLmRhdGFUeXBlc1swXSl8fCFlWyIqIl0mJmcoIioiKX1mdW5jdGlvbi
BPYyhhLGIpe3ZhciBjLGQsZT1uLmFqYXhTZXR0aW5ncy5mbGF0T3B0aW9uc3x8e307Zm9yKGQgaW4gYil2b
2lkIDAhPT1iW2RdJiYoKGVbZF0/YTpjfHwoYz17fSkpW2RdPWJbZF0pO3JldHVybiBjJiZuLmV4dGVuZCgh
MCxhLGMpLGF9ZnVuY3Rpb24gUGMoYSxiLGMpe3ZhciBkLGUsZixnLGg9YS5jb250ZW50cyxpPWEuZGF0YVR
5cGVzO3doaWxlKCIqIj09PWlbMF0paS5zaGlmdCgpLHZvaWQgMD09PWUmJihlPWEubWltZVR5cGV8fGIuZ2
V0UmVzcG9uc2VIZWFkZXIoIkNvbnRlbnQtVHlwZSIpKTtpZihlKWZvcihnIGluIGgpaWYoaFtnXSYmaFtnX
S50ZXN0KGUpKXtpLnVuc2hpZnQoZyk7YnJlYWt9aWYoaVswXWluIGMpZj1pWzBdO2Vsc2V7Zm9yKGcgaW4g
Yyl7aWYoIWlbMF18fGEuY29udmVydGVyc1tnKyIgIitpWzBdXSl7Zj1nO2JyZWFrfWR8fChkPWcpfWY9Znx
8ZH1yZXR1cm4gZj8oZiE9PWlbMF0mJmkudW5zaGlmdChmKSxjW2ZdKTp2b2lkIDB9ZnVuY3Rpb24gUWMoYS
xiLGMsZCl7dmFyIGUsZixnLGgsaSxqPXt9LGs9Y
S5kYXRhVHlwZXMuc2xpY2UoKTtpZihrWzFdKWZvcihnIGluIGEuY29udmVydGVycylqW2cudG9Mb3dlckNh
c2UoKV09YS5jb252ZXJ0ZXJzW2ddO2Y9ay5zaGlmdCgpO3doaWxlKGYpaWYoYS5yZXNwb25zZUZpZWxkc1t
mXSYmKGNbYS5yZXNwb25zZUZpZWxkc1tmXV09YiksIWkmJmQmJmEuZGF0YUZpbHRlciYmKGI9YS5kYXRhRm
lsdGVyKGIsYS5kYXRhVHlwZSkpLGk9ZixmPWsuc2hpZnQoKSlpZigiKiI9PT1mKWY9aTtlbHNlIGlmKCIqI
iE9PWkmJmkhPT1mKXtpZihnPWpbaSsiICIrZl18fGpbIiogIitmXSwhZylmb3IoZSBpbiBqKWlmKGg9ZS5z
cGxpdCgiICIpLGhbMV09PT1mJiYoZz1qW2krIiAiK2hbMF1dfHxqWyIqICIraFswXV0pKXtnPT09ITA/Zz1
qW2VdOmpbZV0hPT0hMCYmKGY9aFswXSxrLnVuc2hpZnQoaFsxXSkpO2JyZWFrfWlmKGchPT0hMClpZihnJi
ZhWyJ0aHJvd3MiXSliPWcoYik7ZWxzZSB0cnl7Yj1nKGIpfWNhdGNoKGwpe3JldHVybntzdGF0ZToicGFyc
2VyZXJyb3IiLGVycm9yOmc/bDoiTm8gY29udmVyc2lvbiBmcm9tICIraSsiIHRvICIrZn19fXJldHVybntz
dGF0ZToic3VjY2VzcyIsZGF0YTpifX1uLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc
6e30sYWpheFNldHRpbmdzOnt1cmw6QWMsdHlwZToiR0VUIixpc0xvY2FsOkVjLnRlc3QoemNbMV0pLGdsb2
JhbDohMCxwcm9jZXNzRGF0YTohMCxhc3luYzohMCxjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZ
m9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PVVURi04IixhY2NlcHRzOnsiKiI6S2MsdGV4dDoidGV4dC9wbGFp
biIsaHRtbDoidGV4dC9odG1sIix4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGpzb246ImFwcGx
pY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCJ9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC
8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZ
VRleHQiLGpzb246InJlc3BvbnNlSlNPTiJ9LGNvbnZlcnRlcnM6eyIqIHRleHQiOlN0cmluZywidGV4dCBo
dG1sIjohMCwidGV4dCBqc29uIjpuLnBhcnNlSlNPTiwidGV4dCB4bWwiOm4ucGFyc2VYTUx9LGZsYXRPcHR
pb25zOnt1cmw6ITAsY29udGV4dDohMH19LGFqYXhTZXR1cDpmdW5jdGlvbihhLGIpe3JldHVybiBiP09jKE
9jKGEsbi5hamF4U2V0dGluZ3MpLGIpOk9jKG4uYWpheFNldHRpbmdzLGEpfSxhamF4UHJlZmlsdGVyOk1jK
EljKSxhamF4VHJhbnNwb3J0Ok1jKEpjKSxhamF4OmZ1bmN0aW9uKGEsYil7Im9iamVjdCI9PXR5cGVvZiBh
JiYoYj1hLGE9dm9pZCAwKSxiPWJ8fHt9O3ZhciBjLGQsZSxmLGcsaCxpLGosaz1uLmFqYXhTZXR1cCh7fSx
iKSxsPWsuY29udGV4dHx8ayxtPWsuY29udGV4dCYmKGwubm9kZVR5cGV8fGwuanF1ZXJ5KT9uKGwpOm4uZX
ZlbnQsbz1uLkRlZmVycmVkKCkscD1uLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxxPWsuc3RhdHVzQ29kZ
Xx8e30scj17fSxzPXt9LHQ9MCx1PSJjYW5jZWxlZCIsdj17cmVhZHlTdGF0ZTowLGdldFJlc3BvbnNlSGVh
ZGVyOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKDI9PT10KXtpZighail7aj17fTt3aGlsZShiPURjLmV4ZWMoZik
paltiWzFdLnRvTG93ZXJDYXNlKCldPWJbMl19Yj1qW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIG51bGw9PW
I/bnVsbDpifSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gMj09PXQ/ZjpudWxsf
SxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9YS50b0xvd2VyQ2FzZSgpO3JldHVybiB0
fHwoYT1zW2NdPXNbY118fGEsclthXT1iKSx0aGlzfSxvdmVycmlkZU1pbWVUeXBlOmZ1bmN0aW9uKGEpe3J
ldHVybiB0fHwoay5taW1lVHlwZT1hKSx0aGlzfSxzdGF0dXNDb2RlOmZ1bmN0aW9uKGEpe3ZhciBiO2lmKG
EpaWYoMj50KWZvcihiIGluIGEpcVtiXT1bcVtiXSxhW2JdXTtlbHNlIHYuYWx3YXlzKGFbdi5zdGF0dXNdK
TtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7dmFyIGI9YXx8dTtyZXR1cm4gaSYmaS5hYm9ydChi
KSx4KDAsYiksdGhpc319O2lmKG8ucHJvbWlzZSh2KS5jb21wbGV0ZT1wLmFkZCx2LnN1Y2Nlc3M9di5kb25
lLHYuZXJyb3I9di5mYWlsLGsudXJsPSgoYXx8ay51cmx8fEFjKSsiIikucmVwbGFjZShCYywiIikucmVwbG
FjZShHYyx6Y1sxXSsiLy8iKSxrLnR5cGU9Yi5tZXRob2R8fGIudHlwZXx8ay5tZXRob2R8fGsudHlwZSxrL
mRhdGFUeXBlcz1uLnRyaW0oay5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLm1hdGNoKEYpfHxbIiJd
LG51bGw9PWsuY3Jvc3NEb21haW4mJihjPUhjLmV4ZWMoay51cmwudG9Mb3dlckNhc2UoKSksay5jcm9zc0R
vbWFpbj0hKCFjfHxjWzFdPT09emNbMV0mJmNbMl09PT16Y1syXSYmKGNbM118fCgiaHR0cDoiPT09Y1sxXT
8iODAiOiI0NDMiKSk9PT0oemNbM118fCgiaHR0cDoiPT09emNbMV0/IjgwIjoiNDQzIikpKSksay5kYXRhJ
iZrLnByb2Nlc3NEYXRhJiYic3RyaW5nIiE9dHlwZW9mIGsuZGF0YSYmKGsuZGF0YT1uLnBhcmFtKGsuZGF0
YSxrLnRyYWRpdGlvbmFsKSksTmMoSWMsayxiLHYpLDI9PT10KXJldHVybiB2O2g9ay5nbG9iYWwsaCYmMD0
9PW4uYWN0aXZlKysmJm4uZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iiksay50eXBlPWsudHlwZS50b1VwcG
VyQ2FzZSgpLGsuaGFzQ29udGVudD0hRmMudGVzdChrLnR5cGUpLGU9ay51cmwsay5oYXNDb250ZW50fHwoa
y5kYXRhJiYoZT1rLnVybCs9KHhjLnRlc3QoZSk/IiYiOiI/Iikray5kYXRhLGRlbGV0ZSBrLmRhdGEpLGsu
Y2FjaGU9PT0hMSYmKGsudXJsPUNjLnRlc3QoZSk/ZS5yZXBsYWNlKENjLCIkMV89Iit3YysrKTplKyh4Yy5
0ZXN0KGUpPyImIjoiPyIpKyJfPSIrd2MrKykpLGsuaWZNb2RpZmllZCYmKG4ubGFzdE1vZGlmaWVkW2VdJi
Z2LnNldFJlcXVlc3RIZWFkZXIoIklmLU1vZGlmaWVkLVNpbmNlIixuLmxhc3RNb2RpZmllZFtlXSksbi5ld
GFnW2VdJiZ2LnNldFJlcXVlc3RIZWFkZXIoIklmLU5vbmUtTWF0Y2giLG4uZXRhZ1tlXSkpLChrLmRhdGEm
JmsuaGFzQ29udGVudCYmay5jb250ZW50VHlwZSE9PSExfHxiLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN
0SGVhZGVyKCJDb250ZW50LVR5cGUiLGsuY29udGVudFR5cGUpLHYuc2V0UmVxdWVzdEhlYWRlcigiQWNjZX
B0IixrLmRhdGFUeXBlc1swXSYmay5hY2NlcHRzW2suZGF0YVR5cGVzWzBdXT9rLmFjY2VwdHNbay5kYXRhV
HlwZXNbMF1dKygiKiIhPT1rLmRhdGFUeXBlc1swXT8iLCAiK0tjKyI7IHE9MC4wMSI6IiIpOmsuYWNjZXB0
c1siKiJdKTtmb3IoZCBpbiBrLmhlYWRlcnMpdi5zZXRSZXF1ZXN0SGVhZGVyKGQsay5oZWFkZXJzW2RdKTt
pZihrLmJlZm9yZVNlbmQmJihrLmJlZm9yZVNlbmQuY2FsbChsLHYsayk9PT0hMXx8Mj09PXQpKXJldHVybi
B2LmFib3J0KCk7dT0iYWJvcnQiO2ZvcihkIGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbZ
F0oa1tkXSk7aWYoaT1OYyhKYyxrLGIsdikpe3YucmVhZHlTdGF0ZT0xLGgmJm0udHJpZ2dlcigiYWpheFNl
bmQiLFt2LGtdKSxrLmFzeW5jJiZrLnRpbWVvdXQ+MCYmKGc9c2V0VGltZW91dChmdW5jdGlvbigpe3YuYWJ
vcnQoInRpbWVvdXQiKX0say50aW1lb3V0KSk7dHJ5e3Q9MSxpLnNlbmQocix4KX1jYXRjaCh3KXtpZighKD
I+dCkpdGhyb3cgdzt4KC0xLHcpfX1lbHNlIHgoLTEsIk5vIFRyYW5zcG9ydCIpO2Z1bmN0aW9uIHgoYSxiL
GMsZCl7dmFyIGoscixzLHUsdyx4PWI7MiE9PXQmJih0PTIsZyYmY2xlYXJUaW1lb3V0KGcpLGk9dm9pZCAw
LGY9ZHx8IiIsdi5yZWFkeVN0YXRlPWE+MD80OjAsaj1hPj0yMDAmJjMwMD5hfHwzMDQ9PT1hLGMmJih1PVB
jKGssdixjKSksdT1RYyhrLHUsdixqKSxqPyhrLmlmTW9kaWZpZWQmJih3PXYuZ2V0UmVzcG9uc2VIZWFkZX
IoIkxhc3QtTW9kaWZpZWQiKSx3JiYobi5sYXN0TW9kaWZpZWRbZV09dyksdz12LmdldFJlc3BvbnNlSGVhZ
GVyKCJldGFnIiksdyYmKG4uZXRhZ1tlXT13KSksMjA0PT09YXx8IkhFQUQiPT09ay50eXBlP3g9Im5vY29u
dGVudCI6MzA0PT09YT94PSJub3Rtb2RpZmllZCI6KHg9dS5zdGF0ZSxyPXUuZGF0YSxzPXUuZXJyb3Isaj0
hcykpOihzPXgsKGF8fCF4KSYmKHg9ImVycm9yIiwwPmEmJihhPTApKSksdi5zdGF0dXM9YSx2LnN0YXR1c1
RleHQ9KGJ8fHgpKyIiLGo/by5yZXNvbHZlV2l0aChsLFtyLHgsdl0pOm8ucmVqZWN0V2l0aChsLFt2LHgsc
10pLHYuc3RhdHVzQ29kZShxKSxxPXZvaWQgMCxoJiZtLnRyaWdnZXIoaj8iYWpheFN1Y2Nlc3MiOiJhamF4
RXJyb3IiLFt2LGssaj9yOnNdKSxwLmZpcmVXaXRoKGwsW3YseF0pLGgmJihtLnRyaWdnZXIoImFqYXhDb21
wbGV0ZSIsW3Ysa10pLC0tbi5hY3RpdmV8fG4uZXZlbnQudHJpZ2dlcigiYWpheFN0b3AiKSkpfXJldHVybi
B2fSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbi5nZXQoYSxiLGMsImpzb24iKX0sZ2V0U2Nya
XB0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIG4uZ2V0KGEsdm9pZCAwLGIsInNjcmlwdCIpfX0pLG4uZWFjaChb
ImdldCIsInBvc3QiXSxmdW5jdGlvbihhLGIpe25bYl09ZnVuY3Rpb24oYSxjLGQsZSl7cmV0dXJuIG4uaXN
GdW5jdGlvbihjKSYmKGU9ZXx8ZCxkPWMsYz12b2lkIDApLG4uYWpheCh7dXJsOmEsdHlwZTpiLGRhdGFUeX
BlOmUsZGF0YTpjLHN1Y2Nlc3M6ZH0pfX0pLG4uZWFjaChbImFqYXhTdGFydCIsImFqYXhTdG9wIiwiYWphe
ENvbXBsZXRlIiwiYWpheEVycm9yIiwiYWpheFN1Y2Nlc3MiLCJhamF4U2VuZCJdLGZ1bmN0aW9uKGEsYil7
bi5mbltiXT1mdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5vbihiLGEpfX0pLG4uX2V2YWxVcmw9ZnVuY3Rpb24
oYSl7cmV0dXJuIG4uYWpheCh7dXJsOmEsdHlwZToiR0VUIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzohMS
xnbG9iYWw6ITEsInRocm93cyI6ITB9KX0sbi5mbi5leHRlbmQoe3dyYXBBbGw6ZnVuY3Rpb24oYSl7aWYob
i5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7bih0aGlzKS53cmFwQWxsKGEu
Y2FsbCh0aGlzLGIpKX0pO2lmKHRoaXNbMF0pe3ZhciBiPW4oYSx0aGlzWzBdLm93bmVyRG9jdW1lbnQpLmV
xKDApLmNsb25lKCEwKTt0aGlzWzBdLnBhcmVudE5vZGUmJmIuaW5zZXJ0QmVmb3JlKHRoaXNbMF0pLGIubW
FwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpczt3aGlsZShhLmZpcnN0Q2hpbGQmJjE9PT1hLmZpcnN0Q2hpbGQub
m9kZVR5cGUpYT1hLmZpcnN0Q2hpbGQ7cmV0dXJuIGF9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdy
YXBJbm5lcjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lYWNoKG4uaXNGdW5jdGlvbihhKT9mdW5jdGlvbih
iKXtuKHRoaXMpLndyYXBJbm5lcihhLmNhbGwodGhpcyxiKSl9OmZ1bmN0aW9uKCl7dmFyIGI9bih0aGlzKS
xjPWIuY29udGVudHMoKTtjLmxlbmd0aD9jLndyYXBBbGwoYSk6Yi5hcHBlbmQoYSl9KX0sd3JhcDpmdW5jd
GlvbihhKXt2YXIgYj1uLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihjKXtuKHRo
aXMpLndyYXBBbGwoYj9hLmNhbGwodGhpcyxjKTphKX0pfSx1bndyYXA6ZnVuY3Rpb24oKXtyZXR1cm4gdGh
pcy5wYXJlbnQoKS5lYWNoKGZ1bmN0aW9uKCl7bi5ub2RlTmFtZSh0aGlzLCJib2R5Iil8fG4odGhpcykucm
VwbGFjZVdpdGgodGhpcy5jaGlsZE5vZGVzKX0pLmVuZCgpfX0pLG4uZXhwci5maWx0ZXJzLmhpZGRlbj1md
W5jdGlvbihhKXtyZXR1cm4gYS5vZmZzZXRXaWR0aDw9MCYmYS5vZmZzZXRIZWlnaHQ8PTB8fCFsLnJlbGlh
YmxlSGlkZGVuT2Zmc2V0cygpJiYibm9uZSI9PT0oYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxuLmNzcyh
hLCJkaXNwbGF5IikpfSxuLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFuLmV4cH
IuZmlsdGVycy5oaWRkZW4oYSl9O3ZhciBSYz0vJTIwL2csU2M9L1xbXF0kLyxUYz0vXHI/XG4vZyxVYz0vX
ig/OnN1Ym1pdHxidXR0b258aW1hZ2V8cmVzZXR8ZmlsZSkkL2ksVmM9L14oPzppbnB1dHxzZWxlY3R8dGV4
dGFyZWF8a2V5Z2VuKS9pO2Z1bmN0aW9uIFdjKGEsYixjLGQpe3ZhciBlO2lmKG4uaXNBcnJheShiKSluLmV
hY2goYixmdW5jdGlvbihiLGUpe2N8fFNjLnRlc3QoYSk/ZChhLGUpOldjKGErIlsiKygib2JqZWN0Ij09dH
lwZW9mIGU/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoY3x8Im9iamVjdCIhPT1uLnR5cGUoYikpZChhL
GIpO2Vsc2UgZm9yKGUgaW4gYilXYyhhKyJbIitlKyJdIixiW2VdLGMsZCl9bi5wYXJhbT1mdW5jdGlvbihh
LGIpe3ZhciBjLGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9bi5pc0Z1bmN0aW9uKGIpP2IoKTpudWxsPT1iPyI
iOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYi
l9O2lmKHZvaWQgMD09PWImJihiPW4uYWpheFNldHRpbmdzJiZuLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hb
Cksbi5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIW4uaXNQbGFpbk9iamVjdChhKSluLmVhY2goYSxmdW5jdGlv
bigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IoYyBpbiBhKVdjKGMsYVtjXSxiLGUpO3J
ldHVybiBkLmpvaW4oIiYiKS5yZXBsYWNlKFJjLCIrIil9LG4uZm4uZXh0ZW5kKHtzZXJpYWxpemU6ZnVuY3
Rpb24oKXtyZXR1cm4gbi5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmd
W5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3ZhciBhPW4ucHJvcCh0aGlzLCJlbGVtZW50
cyIpO3JldHVybiBhP24ubWFrZUFycmF5KGEpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXt2YXIgYT10aGl
zLnR5cGU7cmV0dXJuIHRoaXMubmFtZSYmIW4odGhpcykuaXMoIjpkaXNhYmxlZCIpJiZWYy50ZXN0KHRoaX
Mubm9kZU5hbWUpJiYhVWMudGVzdChhKSYmKHRoaXMuY2hlY2tlZHx8IVgudGVzdChhKSl9KS5tYXAoZnVuY
3Rpb24oYSxiKXt2YXIgYz1uKHRoaXMpLnZhbCgpO3JldHVybiBudWxsPT1jP251bGw6bi5pc0FycmF5KGMp
P24ubWFwKGMsZnVuY3Rpb24oYSl7cmV0dXJue25hbWU6Yi5uYW1lLHZhbHVlOmEucmVwbGFjZShUYywiXHJ
cbiIpfX0pOntuYW1lOmIubmFtZSx2YWx1ZTpjLnJlcGxhY2UoVGMsIlxyXG4iKX19KS5nZXQoKX19KSxuLm
FqYXhTZXR0aW5ncy54aHI9dm9pZCAwIT09YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoa
XMuaXNMb2NhbCYmL14oZ2V0fHBvc3R8aGVhZHxwdXR8ZGVsZXRlfG9wdGlvbnMpJC9pLnRlc3QodGhpcy50
eXBlKSYmJGMoKXx8X2MoKX06JGM7dmFyIFhjPTAsWWM9e30sWmM9bi5hamF4U2V0dGluZ3MueGhyKCk7YS5
BY3RpdmVYT2JqZWN0JiZuKGEpLm9uKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIFljKVljW2
FdKHZvaWQgMCwhMCl9KSxsLmNvcnM9ISFaYyYmIndpdGhDcmVkZW50aWFscyJpbiBaYyxaYz1sLmFqYXg9I
SFaYyxaYyYmbi5hamF4VHJhbnNwb3J0KGZ1bmN0
aW9uKGEpe2lmKCFhLmNyb3NzRG9tYWlufHxsLmNvcnMpe3ZhciBiO3JldHVybntzZW5kOmZ1bmN0aW9uKGM
sZCl7dmFyIGUsZj1hLnhocigpLGc9KytYYztpZihmLm9wZW4oYS50eXBlLGEudXJsLGEuYXN5bmMsYS51c2
VybmFtZSxhLnBhc3N3b3JkKSxhLnhockZpZWxkcylmb3IoZSBpbiBhLnhockZpZWxkcylmW2VdPWEueGhyR
mllbGRzW2VdO2EubWltZVR5cGUmJmYub3ZlcnJpZGVNaW1lVHlwZSYmZi5vdmVycmlkZU1pbWVUeXBlKGEu
bWltZVR5cGUpLGEuY3Jvc3NEb21haW58fGNbIlgtUmVxdWVzdGVkLVdpdGgiXXx8KGNbIlgtUmVxdWVzdGV
kLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTtmb3IoZSBpbiBjKXZvaWQgMCE9PWNbZV0mJmYuc2V0UmVxdW
VzdEhlYWRlcihlLGNbZV0rIiIpO2Yuc2VuZChhLmhhc0NvbnRlbnQmJmEuZGF0YXx8bnVsbCksYj1mdW5jd
GlvbihjLGUpe3ZhciBoLGksajtpZihiJiYoZXx8ND09PWYucmVhZHlTdGF0ZSkpaWYoZGVsZXRlIFljW2dd
LGI9dm9pZCAwLGYub25yZWFkeXN0YXRlY2hhbmdlPW4ubm9vcCxlKTQhPT1mLnJlYWR5U3RhdGUmJmYuYWJ
vcnQoKTtlbHNle2o9e30saD1mLnN0YXR1cywic3RyaW5nIj09dHlwZW9mIGYucmVzcG9uc2VUZXh0JiYoai
50ZXh0PWYucmVzcG9uc2VUZXh0KTt0cnl7aT1mLnN0YXR1c1RleHR9Y2F0Y2goayl7aT0iIn1ofHwhYS5pc
0xvY2FsfHxhLmNyb3NzRG9tYWluPzEyMjM9PT1oJiYoaD0yMDQpOmg9ai50ZXh0PzIwMDo0MDR9aiYmZCho
LGksaixmLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKX0sYS5hc3luYz80PT09Zi5yZWFkeVN0YXRlP3NldFR
pbWVvdXQoYik6Zi5vbnJlYWR5c3RhdGVjaGFuZ2U9WWNbZ109YjpiKCl9LGFib3J0OmZ1bmN0aW9uKCl7Yi
YmYih2b2lkIDAsITApfX19fSk7ZnVuY3Rpb24gJGMoKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1Z
XN0fWNhdGNoKGIpe319ZnVuY3Rpb24gX2MoKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1p
Y3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1uLmFqYXhTZXR1cCh7YWNjZXB0czp7c2NyaXB0OiJ0ZXh
0L2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2phdmFzY3JpcHQsIGFwcGxpY2F0aW9uL2VjbWFzY3JpcHQsIG
FwcGxpY2F0aW9uL3gtZWNtYXNjcmlwdCJ9LGNvbnRlbnRzOntzY3JpcHQ6Lyg/OmphdmF8ZWNtYSlzY3Jpc
HQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe3JldHVybiBuLmdsb2JhbEV2YWwo
YSksYX19fSksbi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe3ZvaWQgMD09PWEuY2FjaGU
mJihhLmNhY2hlPSExKSxhLmNyb3NzRG9tYWluJiYoYS50eXBlPSJHRVQiLGEuZ2xvYmFsPSExKX0pLG4uYW
pheFRyYW5zcG9ydCgic2NyaXB0IixmdW5jdGlvbihhKXtpZihhLmNyb3NzRG9tYWluKXt2YXIgYixjPXoua
GVhZHx8bigiaGVhZCIpWzBdfHx6LmRvY3VtZW50RWxlbWVudDtyZXR1cm57c2VuZDpmdW5jdGlvbihkLGUp
e2I9ei5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxiLmFzeW5jPSEwLGEuc2NyaXB0Q2hhcnNldCYmKGIuY2h
hcnNldD1hLnNjcmlwdENoYXJzZXQpLGIuc3JjPWEudXJsLGIub25sb2FkPWIub25yZWFkeXN0YXRlY2hhbm
dlPWZ1bmN0aW9uKGEsYyl7KGN8fCFiLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoYi5yZ
WFkeVN0YXRlKSkmJihiLm9ubG9hZD1iLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIucGFyZW50Tm9kZSYm
Yi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpLGI9bnVsbCxjfHxlKDIwMCwic3VjY2VzcyIpKX0sYy5pbnN
lcnRCZWZvcmUoYixjLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2ImJmIub25sb2FkKHZvaWQgMC
whMCl9fX19KTt2YXIgYWQ9W10sYmQ9Lyg9KVw/KD89JnwkKXxcP1w/LztuLmFqYXhTZXR1cCh7anNvbnA6I
mNhbGxiYWNrIixqc29ucENhbGxiYWNrOmZ1bmN0aW9uKCl7dmFyIGE9YWQucG9wKCl8fG4uZXhwYW5kbysi
XyIrd2MrKztyZXR1cm4gdGhpc1thXT0hMCxhfX0pLG4uYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnV
uY3Rpb24oYixjLGQpe3ZhciBlLGYsZyxoPWIuanNvbnAhPT0hMSYmKGJkLnRlc3QoYi51cmwpPyJ1cmwiOi
JzdHJpbmciPT10eXBlb2YgYi5kYXRhJiYhKGIuY29udGVudFR5cGV8fCIiKS5pbmRleE9mKCJhcHBsaWNhd
Glvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKSYmYmQudGVzdChiLmRhdGEpJiYiZGF0YSIpO3JldHVybiBo
fHwianNvbnAiPT09Yi5kYXRhVHlwZXNbMF0/KGU9Yi5qc29ucENhbGxiYWNrPW4uaXNGdW5jdGlvbihiLmp
zb25wQ2FsbGJhY2spP2IuanNvbnBDYWxsYmFjaygpOmIuanNvbnBDYWxsYmFjayxoP2JbaF09YltoXS5yZX
BsYWNlKGJkLCIkMSIrZSk6Yi5qc29ucCE9PSExJiYoYi51cmwrPSh4Yy50ZXN0KGIudXJsKT8iJiI6Ij8iK
StiLmpzb25wKyI9IitlKSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtyZXR1cm4g
Z3x8bi5lcnJvcihlKyIgd2FzIG5vdCBjYWxsZWQiKSxnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiIsZj1
hW2VdLGFbZV09ZnVuY3Rpb24oKXtnPWFyZ3VtZW50c30sZC5hbHdheXMoZnVuY3Rpb24oKXthW2VdPWYsYl
tlXSYmKGIuanNvbnBDYWxsYmFjaz1jLmpzb25wQ2FsbGJhY2ssYWQucHVzaChlKSksZyYmbi5pc0Z1bmN0a
W9uKGYpJiZmKGdbMF0pLGc9Zj12b2lkIDB9KSwic2NyaXB0Iik6dm9pZCAwfSksbi5wYXJzZUhUTUw9ZnVu
Y3Rpb24oYSxiLGMpe2lmKCFhfHwic3RyaW5nIiE9dHlwZW9mIGEpcmV0dXJuIG51bGw7ImJvb2xlYW4iPT1
0eXBlb2YgYiYmKGM9YixiPSExKSxiPWJ8fHo7dmFyIGQ9di5leGVjKGEpLGU9IWMmJltdO3JldHVybiBkP1
tiLmNyZWF0ZUVsZW1lbnQoZFsxXSldOihkPW4uYnVpbGRGcmFnbWVudChbYV0sYixlKSxlJiZlLmxlbmd0a
CYmbihlKS5yZW1vdmUoKSxuLm1lcmdlKFtdLGQuY2hpbGROb2RlcykpfTt2YXIgY2Q9bi5mbi5sb2FkO24u
Zm4ubG9hZD1mdW5jdGlvbihhLGIsYyl7aWYoInN0cmluZyIhPXR5cGVvZiBhJiZjZClyZXR1cm4gY2QuYXB
wbHkodGhpcyxhcmd1bWVudHMpO3ZhciBkLGUsZixnPXRoaXMsaD1hLmluZGV4T2YoIiAiKTtyZXR1cm4gaD
49MCYmKGQ9YS5zbGljZShoLGEubGVuZ3RoKSxhPWEuc2xpY2UoMCxoKSksbi5pc0Z1bmN0aW9uKGIpPyhjP
WIsYj12b2lkIDApOmImJiJvYmplY3QiPT10eXBlb2YgYiYmKGY9IlBPU1QiKSxnLmxlbmd0aD4wJiZuLmFq
YXgoe3VybDphLHR5cGU6ZixkYXRhVHlwZToiaHRtbCIsZGF0YTpifSkuZG9uZShmdW5jdGlvbihhKXtlPWF
yZ3VtZW50cyxnLmh0bWwoZD9uKCI8ZGl2PiIpLmFwcGVuZChuLnBhcnNlSFRNTChhKSkuZmluZChkKTphKX
0pLmNvbXBsZXRlKGMmJmZ1bmN0aW9uKGEsYil7Zy5lYWNoKGMsZXx8W2EucmVzcG9uc2VUZXh0LGIsYV0pf
SksdGhpc30sbi5leHByLmZpbHRlcnMuYW5pbWF0ZWQ9ZnVuY3Rpb24oYSl7cmV0dXJuIG4uZ3JlcChuLnRp
bWVycyxmdW5jdGlvbihiKXtyZXR1cm4gYT09PWIuZWxlbX0pLmxlbmd0aH07dmFyIGRkPWEuZG9jdW1lbnQ
uZG9jdW1lbnRFbGVtZW50O2Z1bmN0aW9uIGVkKGEpe3JldHVybiBuLmlzV2luZG93KGEpP2E6OT09PWEubm
9kZVR5cGU/YS5kZWZhdWx0Vmlld3x8YS5wYXJlbnRXaW5kb3c6ITF9bi5vZmZzZXQ9e3NldE9mZnNldDpmd
W5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpLGosaz1uLmNzcyhhLCJwb3NpdGlvbiIpLGw9bihhKSxt
PXt9OyJzdGF0aWMiPT09ayYmKGEuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIiksaD1sLm9mZnNldCgpLGY
9bi5jc3MoYSwidG9wIiksaT1uLmNzcyhhLCJsZWZ0Iiksaj0oImFic29sdXRlIj09PWt8fCJmaXhlZCI9PT
1rKSYmbi5pbkFycmF5KCJhdXRvIixbZixpXSk+LTEsaj8oZD1sLnBvc2l0aW9uKCksZz1kLnRvcCxlPWQub
GVmdCk6KGc9cGFyc2VGbG9hdChmKXx8MCxlPXBhcnNlRmxvYXQoaSl8fDApLG4uaXNGdW5jdGlvbihiKSYm
KGI9Yi5jYWxsKGEsYyxoKSksbnVsbCE9Yi50b3AmJihtLnRvcD1iLnRvcC1oLnRvcCtnKSxudWxsIT1iLmx
lZnQmJihtLmxlZnQ9Yi5sZWZ0LWgubGVmdCtlKSwidXNpbmciaW4gYj9iLnVzaW5nLmNhbGwoYSxtKTpsLm
NzcyhtKX19LG4uZm4uZXh0ZW5kKHtvZmZzZXQ6ZnVuY3Rpb24oYSl7aWYoYXJndW1lbnRzLmxlbmd0aClyZ
XR1cm4gdm9pZCAwPT09YT90aGlzOnRoaXMuZWFjaChmdW5jdGlvbihiKXtuLm9mZnNldC5zZXRPZmZzZXQo
dGhpcyxhLGIpfSk7dmFyIGIsYyxkPXt0b3A6MCxsZWZ0OjB9LGU9dGhpc1swXSxmPWUmJmUub3duZXJEb2N
1bWVudDtpZihmKXJldHVybiBiPWYuZG9jdW1lbnRFbGVtZW50LG4uY29udGFpbnMoYixlKT8odHlwZW9mIG
UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0IT09TCYmKGQ9ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSksYz1lZ
ChmKSx7dG9wOmQudG9wKyhjLnBhZ2VZT2Zmc2V0fHxiLnNjcm9sbFRvcCktKGIuY2xpZW50VG9wfHwwKSxs
ZWZ0OmQubGVmdCsoYy5wYWdlWE9mZnNldHx8Yi5zY3JvbGxMZWZ0KS0oYi5jbGllbnRMZWZ0fHwwKX0pOmR
9LHBvc2l0aW9uOmZ1bmN0aW9uKCl7aWYodGhpc1swXSl7dmFyIGEsYixjPXt0b3A6MCxsZWZ0OjB9LGQ9dG
hpc1swXTtyZXR1cm4iZml4ZWQiPT09bi5jc3MoZCwicG9zaXRpb24iKT9iPWQuZ2V0Qm91bmRpbmdDbGllb
nRSZWN0KCk6KGE9dGhpcy5vZmZzZXRQYXJlbnQoKSxiPXRoaXMub2Zmc2V0KCksbi5ub2RlTmFtZShhWzBd
LCJodG1sIil8fChjPWEub2Zmc2V0KCkpLGMudG9wKz1uLmNzcyhhWzBdLCJib3JkZXJUb3BXaWR0aCIsITA
pLGMubGVmdCs9bi5jc3MoYVswXSwiYm9yZGVyTGVmdFdpZHRoIiwhMCkpLHt0b3A6Yi50b3AtYy50b3Atbi
5jc3MoZCwibWFyZ2luVG9wIiwhMCksbGVmdDpiLmxlZnQtYy5sZWZ0LW4uY3NzKGQsIm1hcmdpbkxlZnQiL
CEwKX19fSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXt2YXIg
YT10aGlzLm9mZnNldFBhcmVudHx8ZGQ7d2hpbGUoYSYmIW4ubm9kZU5hbWUoYSwiaHRtbCIpJiYic3RhdGl
jIj09PW4uY3NzKGEsInBvc2l0aW9uIikpYT1hLm9mZnNldFBhcmVudDtyZXR1cm4gYXx8ZGR9KX19KSxuLm
VhY2goe3Njcm9sbExlZnQ6InBhZ2VYT2Zmc2V0IixzY3JvbGxUb3A6InBhZ2VZT2Zmc2V0In0sZnVuY3Rpb
24oYSxiKXt2YXIgYz0vWS8udGVzdChiKTtuLmZuW2FdPWZ1bmN0aW9uKGQpe3JldHVybiBXKHRoaXMsZnVu
Y3Rpb24oYSxkLGUpe3ZhciBmPWVkKGEpO3JldHVybiB2b2lkIDA9PT1lP2Y/YiBpbiBmP2ZbYl06Zi5kb2N
1bWVudC5kb2N1bWVudEVsZW1lbnRbZF06YVtkXTp2b2lkKGY/Zi5zY3JvbGxUbyhjP24oZikuc2Nyb2xsTG
VmdCgpOmUsYz9lOm4oZikuc2Nyb2xsVG9wKCkpOmFbZF09ZSl9LGEsZCxhcmd1bWVudHMubGVuZ3RoLG51b
GwpfX0pLG4uZWFjaChbInRvcCIsImxlZnQiXSxmdW5jdGlvbihhLGIpe24uY3NzSG9va3NbYl09TWIobC5w
aXhlbFBvc2l0aW9uLGZ1bmN0aW9uKGEsYyl7cmV0dXJuIGM/KGM9S2IoYSxiKSxJYi50ZXN0KGMpP24oYSk
ucG9zaXRpb24oKVtiXSsicHgiOmMpOnZvaWQgMH0pfSksbi5lYWNoKHtIZWlnaHQ6ImhlaWdodCIsV2lkdG
g6IndpZHRoIn0sZnVuY3Rpb24oYSxiKXtuLmVhY2goe3BhZGRpbmc6ImlubmVyIithLGNvbnRlbnQ6YiwiI
joib3V0ZXIiK2F9LGZ1bmN0aW9uKGMsZCl7bi5mbltkXT1mdW5jdGlvbihkLGUpe3ZhciBmPWFyZ3VtZW50
cy5sZW5ndGgmJihjfHwiYm9vbGVhbiIhPXR5cGVvZiBkKSxnPWN8fChkPT09ITB8fGU9PT0hMD8ibWFyZ2l
uIjoiYm9yZGVyIik7cmV0dXJuIFcodGhpcyxmdW5jdGlvbihiLGMsZCl7dmFyIGU7cmV0dXJuIG4uaXNXaW
5kb3coYik/Yi5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrYV06OT09PWIubm9kZVR5cGU/K
GU9Yi5kb2N1bWVudEVsZW1lbnQsTWF0aC5tYXgoYi5ib2R5WyJzY3JvbGwiK2FdLGVbInNjcm9sbCIrYV0s
Yi5ib2R5WyJvZmZzZXQiK2FdLGVbIm9mZnNldCIrYV0sZVsiY2xpZW50IithXSkpOnZvaWQgMD09PWQ/bi5
jc3MoYixjLGcpOm4uc3R5bGUoYixjLGQsZyl9LGIsZj9kOnZvaWQgMCxmLG51bGwpfX0pfSksbi5mbi5zaX
plPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxuLmZuLmFuZFNlbGY9bi5mbi5hZGRCYWNrLCJmd
W5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQmJmRlZmluZSgianF1ZXJ5IixbXSxmdW5jdGlv
bigpe3JldHVybiBufSk7dmFyIGZkPWEualF1ZXJ5LGdkPWEuJDtyZXR1cm4gbi5ub0NvbmZsaWN0PWZ1bmN
0aW9uKGIpe3JldHVybiBhLiQ9PT1uJiYoYS4kPWdkKSxiJiZhLmpRdWVyeT09PW4mJihhLmpRdWVyeT1mZC
ksbn0sdHlwZW9mIGI9PT1MJiYoYS5qUXVlcnk9YS4kPW4pLG59KTs=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/jquery.js,importbuddy/js/jquery.j
s
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/jquery.leanModal.min.js,importb
uddy/js/jquery.leanModal.min.js
KGZ1bmN0aW9uKCQpewogCiAgICAkLmZuLmV4dGVuZCh7IAogICAgICAgICAKICAgICAgICBsZWFuTW9kYWw
6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKIAkJCQogCQkJdmFyIHdpbiA9IHdpbmRvdy5kaWFsb2dBcmd1bWVudH
MgfHwgb3BlbmVyIHx8IHBhcmVudCB8fCB0b3A7CiAJCQkKICAgICAgICAgICAgdmFyIGRlZmF1bHRzID0ge
wogICAgICAgICAgICAgICAgdG9wOiAxMDAsCiAgICAgICAgICAgICAgICBvdmVybGF5OiAwLjUsCiAgICAg
ICAgICAgICAgICBjbG9zZUJ1dHRvbjogbnVsbAogICAgICAgICAgICB9OwogICAgICAgICAgICAKICAgICA
gICAgICAgdmFyIG92ZXJsYXkgPSAkKCI8ZGl2IGlkPSdsZWFuX292ZXJsYXknPjwvZGl2PiIpOwogICAgIC
AgICAgICAKICAgICAgICAgICAgJCgiYm9keSIpLmFwcGVuZChvdmVybGF5KTsKICAgICAgICAgICAgICAgI
CAKICAgICAgICAgICAgb3B0aW9ucyA9ICAkLmV4dGVuZChkZWZhdWx0cywgb3B0aW9ucyk7CiAKICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgCiAgICAgICAgICAgICA
gICB2YXIgbyA9IG9wdGlvbnM7CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJCh0aGlzKS5jbG
ljayhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgCXZhciBtb2RhbF9pZCA9I
CQodGhpcykuYXR0cigiaHJlZiIpOwoKCQkJCSQoIiNsZWFuX292ZXJsYXkiKS5jbGljayhmdW5jdGlvbigp
IHsgCiAgICAgICAgICAgICAgICAgICAgIGNsb3NlX21vZGFsKG1vZGFsX2lkKTsgICAgICAgICAgICAgICA
gICAgIAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICQoby
5jbG9zZUJ1dHRvbikuY2xpY2soZnVuY3Rpb24oKSB7IAogICAgICAgICAgICAgICAgICAgICBjbG9zZV9tb
2RhbChtb2RhbF9pZCk7ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgCQogICAgICAgICAgICAgIAl2YXIgbW9kYWxfaGVpZ2h0ID0gJChtb2RhbF9
pZCkub3V0ZXJIZWlnaHQoZmFsc2UpOwogICAgICAgIAkgIAl2YXIgbW9kYWxfd2lkdGggPSAkKG1vZGFsX2
lkKS5vdXRlcldpZHRoKGZhbHNlKTsKCiAgICAgICAgCQkkKCcjbGVhbl9vdmVybGF5JykuY3NzKHsgJ2Rpc
3BsYXknIDogJ2Jsb2NrJywgb3BhY2l0eSA6IDAgfSk7CgogICAgICAgIAkJJCgnI2xlYW5fb3ZlcmxheScp
LmZhZGVUbygyMDAsby5vdmVybGF5KTsKCiAgICAgICAgCQkkKG1vZGFsX2lkKS5jc3MoeyAKICAgICAgICA
JCQogICAgICAgIAkJCSdkaXNwbGF5JyA6ICdibG9jaycsCiAgICAgICAgCQkJJ3Bvc2l0aW9uJyA6ICdmaX
hlZCcsCiAgICAgICAgCQkJJ29wYWNpdHknIDogMCwKICAgICAgICAJCQknei1pbmRleCc6IDExMDAwLAogI
CAgICAgIAkJCSdsZWZ0JyA6IDUwICsgJyUnLAogICAgICAgIAkJCSdtYXJnaW4tbGVmdCcgOiAtKG1vZGFs
X3dpZHRoLzIpICsgInB4IiwKICAgICAgICAJCQkndG9wJyA6IG8udG9wICsgInB4IgogICAgICAgIAkJCiA
gICAgICAgCQl9KTsKCiAgICAgICAgCQkkKG1vZGFsX2lkKS5mYWRlVG8oMjAwLDEpOwoKICAgICAgICAgIC
AgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIAl9KTsKI
CAgICAgICAgICAgIAogICAgICAgICAgICB9KTsKCgkJCWZ1bmN0aW9uIGNsb3NlX21vZGFsKG1vZGFsX2lk
KXsKCiAgICAgICAgCQkkKCIjbGVhbl9vdmVybGF5IikuZmFkZU91dCgyMDApOwoKICAgICAgICAJCSQobW9
kYWxfaWQpLmNzcyh7ICdkaXNwbGF5JyA6ICdub25lJyB9KTsKCQkJCgkJCX0KICAgIAogICAgICAgIH0KIC
AgIH0pOwogICAgIAp9KShqUXVlcnkpOw==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/jquery.leanModal.min.js,importbud
dy/js/jquery.leanModal.min.js
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/jquery.simple-
expand.min.js,importbuddy/js/jquery.simple-expand.min.js
LyogQ29weXJpZ2h0IChDKSAyMDEyIFN5bHZhaW4gSGFtZWwKUHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29
tL3JlZGhvdHNseS9zaW1wbGUtZXhwYW5kCk1JVCBMaWNlbmNlOiBodHRwczovL3Jhdy5naXRodWIuY29tL3
JlZGhvdHNseS9zaW1wbGUtZXhwYW5kL21hc3Rlci9saWNlbmNlLW1pdC50eHQgKi8KKGZ1bmN0aW9uKCQpe
yJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKCl7dmFyIGU9dGhpcztlLmRlZmF1bHRzPXtoaWRlTW9kZToiZmFk
ZVRvZ2dsZSIsZGVmYXVsdFNlYXJjaE1vZGU6InBhcmVudCIsZGVmYXVsdFRhcmdldDoiLmNvbnRlbnQiLHR
ocm93T25NaXNzaW5nVGFyZ2V0OiEwLGtlZXBTdGF0ZUluQ29va2llOiExLGNvb2tpZU5hbWU6InNpbXBsZS
1leHBhbmQifSxlLnNldHRpbmdzPXt9LCQuZXh0ZW5kKGUuc2V0dGluZ3MsZS5kZWZhdWx0cyksZS5maW5kT
GV2ZWxPbmVEZWVwPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5maW5kKHQpLmZpbHRlcihmdW5jdGlvbigp
e3JldHVybiEkKHRoaXMpLnBhcmVudHNVbnRpbChlLG4pLmxlbmd0aH0pfSxlLnNldEluaXRpYWxTdGF0ZT1
mdW5jdGlvbih0LG4pe3ZhciByPWUucmVhZFN0YXRlKHQpO3I/KHQucmVtb3ZlQ2xhc3MoImNvbGxhcHNlZC
IpLmFkZENsYXNzKCJleHBhbmRlZCIpLGUuc2hvdyhuKSk6KHQucmVtb3ZlQ2xhc3MoImV4cGFuZGVkIikuY
WRkQ2xhc3MoImNvbGxhcHNlZCIpLGUuaGlkZShuKSl9LGUuaGlkZT1mdW5jdGlvbih0KXtlLnNldHRpbmdz
LmhpZGVNb2RlPT09ImZhZGVUb2dnbGUiP3QuaGlkZSgpOmUuc2V0dGluZ3MuaGlkZU1vZGU9PT0iYmFzaWM
iJiZ0LmhpZGUoKX0sZS5zaG93PWZ1bmN0aW9uKHQpe2Uuc2V0dGluZ3MuaGlkZU1vZGU9PT0iZmFkZVRvZ2
dsZSI/dC5zaG93KCk6ZS5zZXR0aW5ncy5oaWRlTW9kZT09PSJiYXNpYyImJnQuc2hvdygpfSxlLmNoZWNrS
2VlcFN0YXRlSW5Db29raWVQcmVjb25kaXRpb25zPWZ1bmN0aW9uKCl7aWYoZS5zZXR0aW5ncy5rZWVwU3Rh
dGVJbkNvb2tpZSYmJC5jb29raWU9PT11bmRlZmluZWQpdGhyb3cgbmV3IEVycm9yKCJzaW1wbGUtZXhwYW5
kOiBrZWVwU3RhdGVJbkNvb2tpZSBvcHRpb24gcmVxdWlyZXMgJC5jb29raWUgdG8gYmUgZGVmaW5lZC4iKX
0sZS5yZWFkQ29va2llPWZ1bmN0aW9uKCl7dmFyIHQ9JC5jb29raWUoZS5zZXR0aW5ncy5jb29raWVOYW1lK
TtyZXR1cm4gdD09PW51bGx8fHQ9PT0iIj97fTpKU09OLnBhcnNlKHQpfSxlLnJlYWRTdGF0ZT1mdW5jdGlv
bih0KXtpZighZS5zZXR0aW5ncy5rZWVwU3RhdGVJbkNvb2tpZSlyZXR1cm4hMTt2YXIgbj10LmF0dHIoIkl
kIik7aWYobj09PXVuZGVmaW5lZClyZXR1cm47dmFyIHI9ZS5yZWFkQ29va2llKCksaT1yW25dPT09ITB8fC
ExO3JldHVybiBpfSxlLnNhdmVTdGF0ZT1mdW5jdGlvbih0LG4pe2lmKCFlLnNldHRpbmdzLmtlZXBTdGF0Z
UluQ29va2llKXJldHVybjt2YXIgcj10LmF0dHIoIklkIik7aWYocj09PXVuZGVmaW5lZClyZXR1cm47dmFy
IGk9ZS5yZWFkQ29va2llKCk7aVtyXT1uLCQuY29va2llKGUuc2V0dGluZ3MuY29va2llTmFtZSxKU09OLnN
0cmluZ2lmeShpKSx7cmF3OiEwLHBhdGg6d2luZG93LmxvY2F0aW9uLnBhdGhuYW1lfSl9LGUudG9nZ2xlPW
Z1bmN0aW9uKHQsbil7dmFyIHI9ZS50b2dnbGVDc3ModCk7cmV0dXJuIGUuc2V0dGluZ3MuaGlkZU1vZGU9P
T0iZmFkZVRvZ2dsZSI/bi5mYWRlVG9nZ2xlKDE1MCk6ZS5zZXR0aW5ncy5oaWRlTW9kZT09PSJiYXNpYyI/
bi50b2dnbGUoKTokLmlzRnVuY3Rpb24oZS5zZXR0aW5ncy5oaWRlTW9kZSkmJmUuc2V0dGluZ3MuaGlkZU1
vZGUodCxuLHIpLGUuc2F2ZVN0YXRlKHQsciksITF9LGUudG9nZ2xlQ3NzPWZ1bmN0aW9uKGUpe3JldHVybi
BlLmhhc0NsYXNzKCJleHBhbmRlZCIpPyhlLnRvZ2dsZUNsYXNzKCJjb2xsYXBzZWQgZXhwYW5kZWQiKSwhM
Sk6KGUudG9nZ2xlQ2xhc3MoImV4cGFuZGVkIGNvbGxhcHNlZCIpLCEwKX0sZS5maW5kVGFyZ2V0cz1mdW5j
dGlvbih0LG4scil7dmFyIGk9W107aWYobj09PSJhYnNvbHV0ZSIpaT0kKHIpO2Vsc2UgaWYobj09PSJyZWx
hdGl2ZSIpaT1lLmZpbmRMZXZlbE9uZURlZXAodCxyLHIpO2Vsc2UgaWYobj09PSJwYXJlbnQiKXt2YXIgcz
10LnBhcmVudCgpO2RvIGk9ZS5maW5kTGV2ZWxPbmVEZWVwKHMscixyKSxpLmxlbmd0aD09PTAmJihzPXMuc
GFyZW50KCkpO3doaWxlKGkubGVuZ3RoPT09MCYmcy5sZW5ndGghPT0wKX1yZXR1cm4gaX0sZS5hY3RpdmF0
ZT1mdW5jdGlvbih0LG4peyQuZXh0ZW5kKGUuc2V0dGluZ3MsbiksZS5jaGVja0tlZXBTdGF0ZUluQ29va2l
lUHJlY29uZGl0aW9ucygpLHQuZWFjaChmdW5jdGlvbigpe3ZhciB0PSQodGhpcyksbj10LmF0dHIoImRhdG
EtZXhwYW5kZXItdGFyZ2V0Iil8fGUuc2V0dGluZ3MuZGVmYXVsdFRhcmdldCxyPXQuYXR0cigiZGF0YS1le
HBhbmRlci10YXJnZXQtc2VhcmNoIil8fGUuc2V0dGluZ3MuZGVmYXVsdFNlYXJjaE1vZGUsaT1lLmZpbmRU
YXJnZXRzKHQscixuKTtpZihpLmxlbmd0aD09PTApe2lmKGUuc2V0dGluZ3MudGhyb3dPbk1pc3NpbmdUYXJ
nZXQpdGhyb3cic2ltcGxlLWV4cGFuZDogVGFyZ2V0cyBub3QgZm91bmQiO3JldHVybiB0aGlzfWUuc2V0SW
5pdGlhbFN0YXRlKHQsaSksdC5jbGljayhmdW5jdGlvbigpe3JldHVybiBlLnRvZ2dsZSh0LGkpfSl9KX19d
2luZG93LlNpbXBsZUV4cGFuZD1lLCQuZm4uc2ltcGxlZXhwYW5kPWZ1bmN0aW9uKHQpe3ZhciBuPW5ldyBl
O3JldHVybiBuLmFjdGl2YXRlKHRoaXMsdCksdGhpc319KShqUXVlcnkpOw==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/jquery.simple-
expand.min.js,importbuddy/js/jquery.simple-expand.min.js
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/main.js,importbuddy/js/main.js
alF1ZXJ5LmZuLnZpc2libGUgPSBmdW5jdGlvbigpIHsKCXJldHVybiB0aGlzLmNzcygndmlzaWJpbGl0eSc
sICd2aXNpYmxlJyk7Cn07CgpqUXVlcnkuZm4uaW52aXNpYmxlID0gZnVuY3Rpb24oKSB7CglyZXR1cm4gdG
hpcy5jc3MoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7Cn07CgpqUXVlcnkuZm4udmlzaWJpbGl0eVRvZ2dsZ
SA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuIHRoaXMuY3NzKCd2aXNpYmlsaXR5JywgZnVuY3Rpb24oaSwgdmlz
aWJpbGl0eSkgewoJCXJldHVybiAodmlzaWJpbGl0eSA9PSAndmlzaWJsZScpID8gJ2hpZGRlbicgOiAndml
zaWJsZSc7Cgl9KTsKfTs=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/main.js,importbuddy/js/main.js
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/nprogress.js,importbuddy/js/npr
ogress.js
LyohIE5Qcm9ncmVzcyAoYykgMjAxMywgUmljbyBTdGEuIENydXoKICogIGh0dHA6Ly9yaWNvc3RhY3J1ei5
jb20vbnByb2dyZXNzICovCgo7KGZ1bmN0aW9uKGZhY3RvcnkpIHsKCiAgaWYgKHR5cGVvZiBtb2R1bGUgPT
09ICdmdW5jdGlvbicpIHsKICAgIG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpOwogIH0gZWxzZSBpZiAod
HlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7CiAgICBkZWZpbmUoZmFjdG9y
eSk7CiAgfSBlbHNlIHsKICAgIHRoaXMuTlByb2dyZXNzID0gZmFjdG9yeSgpOwogIH0KCn0pKGZ1bmN0aW9
uKCkgewogIHZhciBOUHJvZ3Jlc3MgPSB7fTsKCiAgTlByb2dyZXNzLnZlcnNpb24gPSAnMC4xLjMnOwoKIC
B2YXIgU2V0dGluZ3MgPSBOUHJvZ3Jlc3Muc2V0dGluZ3MgPSB7CiAgICBtaW5pbXVtOiAwLjA4LAogICAgZ
WFzaW5nOiAnZWFzZScsCiAgICBwb3NpdGlvblVzaW5nOiAnJywKICAgIHNwZWVkOiAyMDAsCiAgICB0cmlj
a2xlOiB0cnVlLAogICAgdHJpY2tsZVJhdGU6IDAuMDIsCiAgICB0cmlja2xlU3BlZWQ6IDgwMCwKICAgIHN
ob3dTcGlubmVyOiB0cnVlLAogICAgYmFyU2VsZWN0b3I6ICdbcm9sZT0iYmFyIl0nLAogICAgc3Bpbm5lcl
NlbGVjdG9yOiAnW3JvbGU9InNwaW5uZXIiXScsCiAgICB0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9ImJhciIgc
m9sZT0iYmFyIj48ZGl2IGNsYXNzPSJwZWciPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNwaW5uZXIiIHJv
bGU9InNwaW5uZXIiPjxkaXYgY2xhc3M9InNwaW5uZXItaWNvbiI+PC9kaXY+PC9kaXY+JwogIH07CgogIC8
qKgogICAqIFVwZGF0ZXMgY29uZmlndXJhdGlvbi4KICAgKgogICAqICAgICBOUHJvZ3Jlc3MuY29uZmlndX
JlKHsKICAgKiAgICAgICBtaW5pbXVtOiAwLjEKICAgKiAgICAgfSk7CiAgICovCiAgTlByb2dyZXNzLmNvb
mZpZ3VyZSA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgIHZhciBrZXksIHZhbHVlOwogICAgZm9yIChrZXkg
aW4gb3B0aW9ucykgewogICAgICB2YWx1ZSA9IG9wdGlvbnNba2V5XTsKICAgICAgaWYgKHZhbHVlICE9PSB
1bmRlZmluZWQgJiYgb3B0aW9ucy5oYXNPd25Qcm9wZXJ0eShrZXkpKSBTZXR0aW5nc1trZXldID0gdmFsdW
U7CiAgICB9CgogICAgcmV0dXJuIHRoaXM7CiAgfTsKCiAgLyoqCiAgICogTGFzdCBudW1iZXIuCiAgICovC
gogIE5Qcm9ncmVzcy5zdGF0dXMgPSBudWxsOwoKICAvKioKICAgKiBTZXRzIHRoZSBwcm9ncmVzcyBiYXIg
c3RhdHVzLCB3aGVyZSBgbmAgaXMgYSBudW1iZXIgZnJvbSBgMC4wYCB0byBgMS4wYC4KICAgKgogICAqICA
gICBOUHJvZ3Jlc3Muc2V0KDAuNCk7CiAgICogICAgIE5Qcm9ncmVzcy5zZXQoMS4wKTsKICAgKi8KCiAgTl
Byb2dyZXNzLnNldCA9IGZ1bmN0aW9uKG4pIHsKICAgIHZhciBzdGFydGVkID0gTlByb2dyZXNzLmlzU3Rhc
nRlZCgpOwoKICAgIG4gPSBjbGFtcChuLCBTZXR0aW5ncy5taW5pbXVtLCAxKTsKICAgIE5Qcm9ncmVzcy5z
dGF0dXMgPSAobiA9PT0gMSA/IG51bGwgOiBuKTsKCiAgICB2YXIgcHJvZ3Jlc3MgPSBOUHJvZ3Jlc3MucmV
uZGVyKCFzdGFydGVkKSwKICAgICAgICBiYXIgICAgICA9IHByb2dyZXNzLnF1ZXJ5U2VsZWN0b3IoU2V0dG
luZ3MuYmFyU2VsZWN0b3IpLAogICAgICAgIHNwZWVkICAgID0gU2V0dGluZ3Muc3BlZWQsCiAgICAgICAgZ
WFzZSAgICAgPSBTZXR0aW5ncy5lYXNpbmc7CgogICAgcHJvZ3Jlc3Mub2Zmc2V0V2lkdGg7IC8qIFJlcGFp
bnQgKi8KCiAgICBxdWV1ZShmdW5jdGlvbihuZXh0KSB7CiAgICAgIC8vIFNldCBwb3NpdGlvblVzaW5nIGl
mIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gc2V0CiAgICAgIGlmIChTZXR0aW5ncy5wb3NpdGlvblVzaW5nID
09PSAnJykgU2V0dGluZ3MucG9zaXRpb25Vc2luZyA9IE5Qcm9ncmVzcy5nZXRQb3NpdGlvbmluZ0NTUygpO
woKICAgICAgLy8gQWRkIHRyYW5zaXRpb24KICAgICAgY3NzKGJhciwgYmFyUG9zaXRpb25DU1Mobiwgc3Bl
ZWQsIGVhc2UpKTsKCiAgICAgIGlmIChuID09PSAxKSB7CiAgICAgICAgLy8gRmFkZSBvdXQKICAgICAgICB
jc3MocHJvZ3Jlc3MsIHsgCiAgICAgICAgICB0cmFuc2l0aW9uOiAnbm9uZScsIAogICAgICAgICAgb3BhY2
l0eTogMSAKICAgICAgICB9KTsKICAgICAgICBwcm9ncmVzcy5vZmZzZXRXaWR0aDsgLyogUmVwYWludCAqL
woKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgY3NzKHByb2dyZXNzLCB7IAog
ICAgICAgICAgICB0cmFuc2l0aW9uOiAnYWxsICcgKyBzcGVlZCArICdtcyBsaW5lYXInLCAKICAgICAgICA
gICAgb3BhY2l0eTogMCAKICAgICAgICAgIH0pOwogICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIH
sKICAgICAgICAgICAgTlByb2dyZXNzLnJlbW92ZSgpOwogICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgI
CB9LCBzcGVlZCk7CiAgICAgICAgfSwgc3BlZWQpOwogICAgICB9IGVsc2UgewogICAgICAgIHNldFRpbWVv
dXQobmV4dCwgc3BlZWQpOwogICAgICB9CiAgICB9KTsKCiAgICByZXR1cm4gdGhpczsKICB9OwoKICBOUHJ
vZ3Jlc3MuaXNTdGFydGVkID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4gdHlwZW9mIE5Qcm9ncmVzcy5zdG
F0dXMgPT09ICdudW1iZXInOwogIH07CgogIC8qKgogICAqIFNob3dzIHRoZSBwcm9ncmVzcyBiYXIuCiAgI
CogVGhpcyBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIHRoZSBzdGF0dXMgdG8gMCUsIGV4Y2VwdCB0aGF0IGl0
IGRvZXNuJ3QgZ28gYmFja3dhcmRzLgogICAqCiAgICogICAgIE5Qcm9ncmVzcy5zdGFydCgpOwogICAqCiA
gICovCiAgTlByb2dyZXNzLnN0YXJ0ID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoIU5Qcm9ncmVzcy5zdGF0dX
MpIE5Qcm9ncmVzcy5zZXQoMCk7CgogICAgdmFyIHdvcmsgPSBmdW5jdGlvbigpIHsKICAgICAgc2V0VGltZ
W91dChmdW5jdGlvbigpIHsKICAgICAgICBpZiAoIU5Qcm9ncmVzcy5zdGF0dXMpIHJldHVybjsKICAgICAg
ICBOUHJvZ3Jlc3MudHJpY2tsZSgpOwogICAgICAgIHdvcmsoKTsKICAgICAgfSwgU2V0dGluZ3MudHJpY2t
sZVNwZWVkKTsKICAgIH07CgogICAgaWYgKFNldHRpbmdzLnRyaWNrbGUpIHdvcmsoKTsKCiAgICByZXR1cm
4gdGhpczsKICB9OwoKICAvKioKICAgKiBIaWRlcyB0aGUgcHJvZ3Jlc3MgYmFyLgogICAqIFRoaXMgaXMgd
GhlICpzb3J0IG9mKiB0aGUgc2FtZSBhcyBzZXR0aW5nIHRoZSBzdGF0dXMgdG8gMTAwJSwgd2l0aCB0aGUK
ICAgKiBkaWZmZXJlbmNlIGJlaW5nIGBkb25lKClgIG1ha2VzIHNvbWUgcGxhY2VibyBlZmZlY3Qgb2Ygc29
tZSByZWFsaXN0aWMgbW90aW9uLgogICAqCiAgICogICAgIE5Qcm9ncmVzcy5kb25lKCk7CiAgICoKICAgKi
BJZiBgdHJ1ZWAgaXMgcGFzc2VkLCBpdCB3aWxsIHNob3cgdGhlIHByb2dyZXNzIGJhciBldmVuIGlmIGl0c
yBoaWRkZW4uCiAgICoKICAgKiAgICAgTlByb2dyZXNzLmRvbmUodHJ1ZSk7CiAgICovCgogIE5Qcm9ncmVz
cy5kb25lID0gZnVuY3Rpb24oZm9yY2UpIHsKICAgIGlmICghZm9yY2UgJiYgIU5Qcm9ncmVzcy5zdGF0dXM
pIHJldHVybiB0aGlzOwoKICAgIHJldHVybiBOUHJvZ3Jlc3MuaW5jKDAuMyArIDAuNSAqIE1hdGgucmFuZG
9tKCkpLnNldCgxKTsKICB9OwoKICAvKioKICAgKiBJbmNyZW1lbnRzIGJ5IGEgcmFuZG9tIGFtb3VudC4KI
CAgKi8KCiAgTlByb2dyZXNzLmluYyA9IGZ1bmN0aW9uKGFtb3VudCkgewogICAgdmFyIG4gPSBOUHJvZ3Jl
c3Muc3RhdHVzOwoKICAgIGlmICghbikgewogICAgICByZXR1cm4gTlByb2dyZXNzLnN0YXJ0KCk7CiAgICB
9IGVsc2UgewogICAgICBpZiAodHlwZW9mIGFtb3VudCAhPT0gJ251bWJlcicpIHsKICAgICAgICBhbW91bn
QgPSAoMSAtIG4pICogY2xhbXAoTWF0aC5yYW5kb20oKSAqIG4sIDAuMSwgMC45NSk7CiAgICAgIH0KCiAgI
CAgIG4gPSBjbGFtcChuICsgYW1vdW50LCAwLCAwLjk5NCk7CiAgICAgIHJldHVybiBOUHJvZ3Jlc3Muc2V0
KG4pOwogICAgfQogIH07CgogIE5Qcm9ncmVzcy50cmlja2xlID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm4
gTlByb2dyZXNzLmluYyhNYXRoLnJhbmRvbSgpICogU2V0dGluZ3MudHJpY2tsZVJhdGUpOwogIH07CgogIC
8qKgogICAqIFdhaXRzIGZvciBhbGwgc3VwcGxpZWQgalF1ZXJ5IHByb21pc2VzIGFuZAogICAqIGluY3JlY
XNlcyB0aGUgcHJvZ3Jlc3MgYXMgdGhlIHByb21pc2VzIHJlc29sdmUuCiAgICogCiAgICogQHBhcmFtICRw
cm9taXNlIGpRVWVyeSBQcm9taXNlCiAgICovCiAgKGZ1bmN0aW9uKCkgewogICAgdmFyIGluaXRpYWwgPSA
wLCBjdXJyZW50ID0gMDsKICAgIAogICAgTlByb2dyZXNzLnByb21pc2UgPSBmdW5jdGlvbigkcHJvbWlzZS
kgewogICAgICBpZiAoISRwcm9taXNlIHx8ICRwcm9taXNlLnN0YXRlKCkgPT0gInJlc29sdmVkIikgewogI
CAgICAgIHJldHVybiB0aGlzOwogICAgICB9CiAgICAgIAogICAgICBpZiAoY3VycmVudCA9PSAwKSB7CiAg
ICAgICAgTlByb2dyZXNzLnN0YXJ0KCk7CiAgICAgIH0KICAgICAgCiAgICAgIGluaXRpYWwrKzsKICAgICA
gY3VycmVudCsrOwogICAgICAKICAgICAgJHByb21pc2UuYWx3YXlzKGZ1bmN0aW9uKCkgewogICAgICAgIG
N1cnJlbnQtLTsKICAgICAgICBpZiAoY3VycmVudCA9PSAwKSB7CiAgICAgICAgICAgIGluaXRpYWwgPSAwO
wogICAgICAgICAgICBOUHJvZ3Jlc3MuZG9uZSgpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIE5Q
cm9ncmVzcy5zZXQoKGluaXRpYWwgLSBjdXJyZW50KSAvIGluaXRpYWwpOwogICAgICAgIH0KICAgICAgfSk
7CiAgICAgIAogICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICAKICB9KSgpOwoKICAvKioKICAgKiAoSW
50ZXJuYWwpIHJlbmRlcnMgdGhlIHByb2dyZXNzIGJhciBtYXJrdXAgYmFzZWQgb24gdGhlIGB0ZW1wbGF0Z
WAKICAgKiBzZXR0aW5nLgogICAqLwoKICBOUHJvZ3Jlc3MucmVuZGVyID0gZnVuY3Rpb24oZnJvbVN0YXJ0
KSB7CiAgICBpZiAoTlByb2dyZXNzLmlzUmVuZGVyZWQoKSkgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnR
CeUlkKCducHJvZ3Jlc3MnKTsKCiAgICBhZGRDbGFzcyhkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsICducH
JvZ3Jlc3MtYnVzeScpOwogICAgCiAgICB2YXIgcHJvZ3Jlc3MgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50K
CdkaXYnKTsKICAgIHByb2dyZXNzLmlkID0gJ25wcm9ncmVzcyc7CiAgICBwcm9ncmVzcy5pbm5lckhUTUwg
PSBTZXR0aW5ncy50ZW1wbGF0ZTsKCiAgICB2YXIgYmFyICAgICAgPSBwcm9ncmVzcy5xdWVyeVNlbGVjdG9
yKFNldHRpbmdzLmJhclNlbGVjdG9yKSwKICAgICAgICBwZXJjICAgICA9IGZyb21TdGFydCA/ICctMTAwJy
A6IHRvQmFyUGVyYyhOUHJvZ3Jlc3Muc3RhdHVzIHx8IDApLAogICAgICAgIHNwaW5uZXI7CiAgICAKICAgI
GNzcyhiYXIsIHsKICAgICAgdHJhbnNpdGlvbjogJ2FsbCAwIGxpbmVhcicsCiAgICAgIHRyYW5zZm9ybTog
J3RyYW5zbGF0ZTNkKCcgKyBwZXJjICsgJyUsMCwwKScKICAgIH0pOwoKICAgIGlmICghU2V0dGluZ3Muc2h
vd1NwaW5uZXIpIHsKICAgICAgc3Bpbm5lciA9IHByb2dyZXNzLnF1ZXJ5U2VsZWN0b3IoU2V0dGluZ3Muc3
Bpbm5lclNlbGVjdG9yKTsKICAgICAgc3Bpbm5lciAmJiByZW1vdmVFbGVtZW50KHNwaW5uZXIpOwogICAgf
QoKICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocHJvZ3Jlc3MpOwogICAgcmV0dXJuIHByb2dyZXNz
OwogIH07CgogIC8qKgogICAqIFJlbW92ZXMgdGhlIGVsZW1lbnQuIE9wcG9zaXRlIG9mIHJlbmRlcigpLgo
gICAqLwoKICBOUHJvZ3Jlc3MucmVtb3ZlID0gZnVuY3Rpb24oKSB7CiAgICByZW1vdmVDbGFzcyhkb2N1bW
VudC5kb2N1bWVudEVsZW1lbnQsICducHJvZ3Jlc3MtYnVzeScpOwogICAgdmFyIHByb2dyZXNzID0gZG9jd
W1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25wcm9ncmVzcycpOwogICAgcHJvZ3Jlc3MgJiYgcmVtb3ZlRWxlbWVu
dChwcm9ncmVzcyk7CiAgfTsKCiAgLyoqCiAgICogQ2hlY2tzIGlmIHRoZSBwcm9ncmVzcyBiYXIgaXMgcmV
uZGVyZWQuCiAgICovCgogIE5Qcm9ncmVzcy5pc1JlbmRlcmVkID0gZnVuY3Rpb24oKSB7CiAgICByZXR1cm
4gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbnByb2dyZXNzJyk7CiAgfTsKCiAgLyoqCiAgICogRGV0Z
XJtaW5lIHdoaWNoIHBvc2l0aW9uaW5nIENTUyBydWxlIHRvIHVzZS4KICAgKi8KCiAgTlByb2dyZXNzLmdl
dFBvc2l0aW9uaW5nQ1NTID0gZnVuY3Rpb24oKSB7CiAgICAvLyBTbmlmZiBvbiBkb2N1bWVudC5ib2R5LnN
0eWxlCiAgICB2YXIgYm9keVN0eWxlID0gZG9jdW1lbnQuYm9keS5zdHlsZTsKCiAgICAvLyBTbmlmZiBwcm
VmaXhlcwogICAgdmFyIHZlbmRvclByZWZpeCA9ICgnV2Via2l0VHJhbnNmb3JtJyBpbiBib2R5U3R5bGUpI
D8gJ1dlYmtpdCcgOgogICAgICAgICAgICAgICAgICAgICAgICgnTW96VHJhbnNmb3JtJyBpbiBib2R5U3R5
bGUpID8gJ01veicgOgogICAgICAgICAgICAgICAgICAgICAgICgnbXNUcmFuc2Zvcm0nIGluIGJvZHlTdHl
sZSkgPyAnbXMnIDoKICAgICAgICAgICAgICAgICAgICAgICAoJ09UcmFuc2Zvcm0nIGluIGJvZHlTdHlsZS
kgPyAnTycgOiAnJzsKCiAgICBpZiAodmVuZG9yUHJlZml4ICsgJ1BlcnNwZWN0aXZlJyBpbiBib2R5U3R5b
GUpIHsKICAgICAgLy8gTW9kZXJuIGJyb3dzZXJzIHdpdGggM0Qgc3VwcG9ydCwgZS5nLiBXZWJraXQsIElF
MTAKICAgICAgcmV0dXJuICd0cmFuc2xhdGUzZCc7CiAgICB9IGVsc2UgaWYgKHZlbmRvclByZWZpeCArICd
UcmFuc2Zvcm0nIGluIGJvZHlTdHlsZSkgewogICAgICAvLyBCcm93c2VycyB3aXRob3V0IDNEIHN1cHBvcn
QsIGUuZy4gSUU5CiAgICAgIHJldHVybiAndHJhbnNsYXRlJzsKICAgIH0gZWxzZSB7CiAgICAgIC8vIEJyb
3dzZXJzIHdpdGhvdXQgdHJhbnNsYXRlKCkgc3VwcG9ydCwgZS5nLiBJRTctOAogICAgICByZXR1cm4gJ21h
cmdpbic7CiAgICB9CiAgfTsKCiAgLyoqCiAgICogSGVscGVycwogICAqLwoKICBmdW5jdGlvbiBjbGFtcCh
uLCBtaW4sIG1heCkgewogICAgaWYgKG4gPCBtaW4pIHJldHVybiBtaW47CiAgICBpZiAobiA+IG1heCkgcm
V0dXJuIG1heDsKICAgIHJldHVybiBuOwogIH0KCiAgLyoqCiAgICogKEludGVybmFsKSBjb252ZXJ0cyBhI
HBlcmNlbnRhZ2UgKGAwLi4xYCkgdG8gYSBiYXIgdHJhbnNsYXRlWAogICAqIHBlcmNlbnRhZ2UgKGAtMTAw
JS4uMCVgKS4KICAgKi8KCiAgZnVuY3Rpb24gdG9CYXJQZXJjKG4pIHsKICAgIHJldHVybiAoLTEgKyBuKSA
qIDEwMDsKICB9CgoKICAvKioKICAgKiAoSW50ZXJuYWwpIHJldHVybnMgdGhlIGNvcnJlY3QgQ1NTIGZvci
BjaGFuZ2luZyB0aGUgYmFyJ3MKICAgKiBwb3NpdGlvbiBnaXZlbiBhbiBuIHBlcmNlbnRhZ2UsIGFuZCBzc
GVlZCBhbmQgZWFzZSBmcm9tIFNldHRpbmdzCiAgICovCgogIGZ1bmN0aW9uIGJhclBvc2l0aW9uQ1NTKG4s
IHNwZWVkLCBlYXNlKSB7CiAgICB2YXIgYmFyQ1N
TOwoKICAgIGlmIChTZXR0aW5ncy5wb3NpdGlvblVzaW5nID09PSAndHJhbnNsYXRlM2QnKSB7CiAgICAgIG
JhckNTUyA9IHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlM2QoJyt0b0JhclBlcmMobikrJyUsMCwwKScgfTsKI
CAgIH0gZWxzZSBpZiAoU2V0dGluZ3MucG9zaXRpb25Vc2luZyA9PT0gJ3RyYW5zbGF0ZScpIHsKICAgICAg
YmFyQ1NTID0geyB0cmFuc2Zvcm06ICd0cmFuc2xhdGUoJyt0b0JhclBlcmMobikrJyUsMCknIH07CiAgICB
9IGVsc2UgewogICAgICBiYXJDU1MgPSB7ICdtYXJnaW4tbGVmdCc6IHRvQmFyUGVyYyhuKSsnJScgfTsKIC
AgIH0KCiAgICBiYXJDU1MudHJhbnNpdGlvbiA9ICdhbGwgJytzcGVlZCsnbXMgJytlYXNlOwoKICAgIHJld
HVybiBiYXJDU1M7CiAgfQoKICAvKioKICAgKiAoSW50ZXJuYWwpIFF1ZXVlcyBhIGZ1bmN0aW9uIHRvIGJl
IGV4ZWN1dGVkLgogICAqLwoKICB2YXIgcXVldWUgPSAoZnVuY3Rpb24oKSB7CiAgICB2YXIgcGVuZGluZyA
9IFtdOwogICAgCiAgICBmdW5jdGlvbiBuZXh0KCkgewogICAgICB2YXIgZm4gPSBwZW5kaW5nLnNoaWZ0KC
k7CiAgICAgIGlmIChmbikgewogICAgICAgIGZuKG5leHQpOwogICAgICB9CiAgICB9CgogICAgcmV0dXJuI
GZ1bmN0aW9uKGZuKSB7CiAgICAgIHBlbmRpbmcucHVzaChmbik7CiAgICAgIGlmIChwZW5kaW5nLmxlbmd0
aCA9PSAxKSBuZXh0KCk7CiAgICB9OwogIH0pKCk7CgogIC8qKgogICAqIChJbnRlcm5hbCkgQXBwbGllcyB
jc3MgcHJvcGVydGllcyB0byBhbiBlbGVtZW50LCBzaW1pbGFyIHRvIHRoZSBqUXVlcnkgCiAgICogY3NzIG
1ldGhvZC4KICAgKgogICAqIFdoaWxlIHRoaXMgaGVscGVyIGRvZXMgYXNzaXN0IHdpdGggdmVuZG9yIHByZ
WZpeGVkIHByb3BlcnR5IG5hbWVzLCBpdCAKICAgKiBkb2VzIG5vdCBwZXJmb3JtIGFueSBtYW5pcHVsYXRp
b24gb2YgdmFsdWVzIHByaW9yIHRvIHNldHRpbmcgc3R5bGVzLgogICAqLwoKICB2YXIgY3NzID0gKGZ1bmN
0aW9uKCkgewogICAgdmFyIGNzc1ByZWZpeGVzID0gWyAnV2Via2l0JywgJ08nLCAnTW96JywgJ21zJyBdLA
ogICAgICAgIGNzc1Byb3BzICAgID0ge307CgogICAgZnVuY3Rpb24gY2FtZWxDYXNlKHN0cmluZykgewogI
CAgICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoL14tbXMtLywgJ21zLScpLnJlcGxhY2UoLy0oW1xkYS16XSkv
Z2ksIGZ1bmN0aW9uKG1hdGNoLCBsZXR0ZXIpIHsKICAgICAgICByZXR1cm4gbGV0dGVyLnRvVXBwZXJDYXN
lKCk7CiAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFZlbmRvclByb3AobmFtZSkgewogICAgIC
B2YXIgc3R5bGUgPSBkb2N1bWVudC5ib2R5LnN0eWxlOwogICAgICBpZiAobmFtZSBpbiBzdHlsZSkgcmV0d
XJuIG5hbWU7CgogICAgICB2YXIgaSA9IGNzc1ByZWZpeGVzLmxlbmd0aCwKICAgICAgICAgIGNhcE5hbWUg
PSBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKSwKICAgICAgICAgIHZlbmR
vck5hbWU7CiAgICAgIHdoaWxlIChpLS0pIHsKICAgICAgICB2ZW5kb3JOYW1lID0gY3NzUHJlZml4ZXNbaV
0gKyBjYXBOYW1lOwogICAgICAgIGlmICh2ZW5kb3JOYW1lIGluIHN0eWxlKSByZXR1cm4gdmVuZG9yTmFtZ
TsKICAgICAgfQoKICAgICAgcmV0dXJuIG5hbWU7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0U3R5bGVQcm9w
KG5hbWUpIHsKICAgICAgbmFtZSA9IGNhbWVsQ2FzZShuYW1lKTsKICAgICAgcmV0dXJuIGNzc1Byb3BzW25
hbWVdIHx8IChjc3NQcm9wc1tuYW1lXSA9IGdldFZlbmRvclByb3AobmFtZSkpOwogICAgfQoKICAgIGZ1bm
N0aW9uIGFwcGx5Q3NzKGVsZW1lbnQsIHByb3AsIHZhbHVlKSB7CiAgICAgIHByb3AgPSBnZXRTdHlsZVByb
3AocHJvcCk7CiAgICAgIGVsZW1lbnQuc3R5bGVbcHJvcF0gPSB2YWx1ZTsKICAgIH0KCiAgICByZXR1cm4g
ZnVuY3Rpb24oZWxlbWVudCwgcHJvcGVydGllcykgewogICAgICB2YXIgYXJncyA9IGFyZ3VtZW50cywKICA
gICAgICAgIHByb3AsIAogICAgICAgICAgdmFsdWU7CgogICAgICBpZiAoYXJncy5sZW5ndGggPT0gMikgew
ogICAgICAgIGZvciAocHJvcCBpbiBwcm9wZXJ0aWVzKSB7CiAgICAgICAgICB2YWx1ZSA9IHByb3BlcnRpZ
XNbcHJvcF07CiAgICAgICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9wZXJ0aWVzLmhhc093
blByb3BlcnR5KHByb3ApKSBhcHBseUNzcyhlbGVtZW50LCBwcm9wLCB2YWx1ZSk7CiAgICAgICAgfQogICA
gICB9IGVsc2UgewogICAgICAgIGFwcGx5Q3NzKGVsZW1lbnQsIGFyZ3NbMV0sIGFyZ3NbMl0pOwogICAgIC
B9CiAgICB9CiAgfSkoKTsKCiAgLyoqCiAgICogKEludGVybmFsKSBEZXRlcm1pbmVzIGlmIGFuIGVsZW1lb
nQgb3Igc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgY2xhc3MgbmFtZXMgY29udGFpbnMgYSBjbGFzcyBuYW1l
LgogICAqLwoKICBmdW5jdGlvbiBoYXNDbGFzcyhlbGVtZW50LCBuYW1lKSB7CiAgICB2YXIgbGlzdCA9IHR
5cGVvZiBlbGVtZW50ID09ICdzdHJpbmcnID8gZWxlbWVudCA6IGNsYXNzTGlzdChlbGVtZW50KTsKICAgIH
JldHVybiBsaXN0LmluZGV4T2YoJyAnICsgbmFtZSArICcgJykgPj0gMDsKICB9CgogIC8qKgogICAqIChJb
nRlcm5hbCkgQWRkcyBhIGNsYXNzIHRvIGFuIGVsZW1lbnQuCiAgICovCgogIGZ1bmN0aW9uIGFkZENsYXNz
KGVsZW1lbnQsIG5hbWUpIHsKICAgIHZhciBvbGRMaXN0ID0gY2xhc3NMaXN0KGVsZW1lbnQpLAogICAgICA
gIG5ld0xpc3QgPSBvbGRMaXN0ICsgbmFtZTsKCiAgICBpZiAoaGFzQ2xhc3Mob2xkTGlzdCwgbmFtZSkpIH
JldHVybjsgCgogICAgLy8gVHJpbSB0aGUgb3BlbmluZyBzcGFjZS4KICAgIGVsZW1lbnQuY2xhc3NOYW1lI
D0gbmV3TGlzdC5zdWJzdHJpbmcoMSk7CiAgfQoKICAvKioKICAgKiAoSW50ZXJuYWwpIFJlbW92ZXMgYSBj
bGFzcyBmcm9tIGFuIGVsZW1lbnQuCiAgICovCgogIGZ1bmN0aW9uIHJlbW92ZUNsYXNzKGVsZW1lbnQsIG5
hbWUpIHsKICAgIHZhciBvbGRMaXN0ID0gY2xhc3NMaXN0KGVsZW1lbnQpLAogICAgICAgIG5ld0xpc3Q7Cg
ogICAgaWYgKCFoYXNDbGFzcyhlbGVtZW50LCBuYW1lKSkgcmV0dXJuOwoKICAgIC8vIFJlcGxhY2UgdGhlI
GNsYXNzIG5hbWUuCiAgICBuZXdMaXN0ID0gb2xkTGlzdC5yZXBsYWNlKCcgJyArIG5hbWUgKyAnICcsICcg
Jyk7CgogICAgLy8gVHJpbSB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyBzcGFjZXMuCiAgICBlbGVtZW50LmN
sYXNzTmFtZSA9IG5ld0xpc3Quc3Vic3RyaW5nKDEsIG5ld0xpc3QubGVuZ3RoIC0gMSk7CiAgfQoKICAvKi
oKICAgKiAoSW50ZXJuYWwpIEdldHMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiB0aGUgY2xhc3MgbmFtZ
XMgb24gdGhlIGVsZW1lbnQuIAogICAqIFRoZSBsaXN0IGlzIHdyYXBwZWQgd2l0aCBhIHNpbmdsZSBzcGFj
ZSBvbiBlYWNoIGVuZCB0byBmYWNpbGl0YXRlIGZpbmRpbmcgCiAgICogbWF0Y2hlcyB3aXRoaW4gdGhlIGx
pc3QuCiAgICovCgogIGZ1bmN0aW9uIGNsYXNzTGlzdChlbGVtZW50KSB7CiAgICByZXR1cm4gKCcgJyArIC
hlbGVtZW50LmNsYXNzTmFtZSB8fCAnJykgKyAnICcpLnJlcGxhY2UoL1xzKy9naSwgJyAnKTsKICB9CgogI
C8qKgogICAqIChJbnRlcm5hbCkgUmVtb3ZlcyBhbiBlbGVtZW50IGZyb20gdGhlIERPTS4KICAgKi8KCiAg
ZnVuY3Rpb24gcmVtb3ZlRWxlbWVudChlbGVtZW50KSB7CiAgICBlbGVtZW50ICYmIGVsZW1lbnQucGFyZW5
0Tm9kZSAmJiBlbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZWxlbWVudCk7CiAgfQoKICByZXR1cm
4gTlByb2dyZXNzOwp9KTsK
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/nprogress.js,importbuddy/js/nprog
ress.js
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/restoreEvents.js,importbuddy/js
/restoreEvents.js
ZnVuY3Rpb24gaW1wb3J0YnVkZHlfbG9hZFJlc3RvcmVFdmVudHMoKSB7CgkKCQoJLy8gVXBkYXRlIHN0YXR
1cyBsb2cgZGV0YWlscywgbWVzc2FnZXMsIG9yIGVycm9ycy4KCWpRdWVyeSgnI2JhY2t1cGJ1ZGR5X21lc3
NhZ2VzJykuYmluZCgnYmFja3VwYnVkZHlfZGV0YWlscyBiYWNrdXBidWRkeV9tZXNzYWdlIGJhY2t1cGJ1Z
GR5X2Vycm9yIGJhY2t1cGJ1ZGR5X3dhcm5pbmcnLCBmdW5jdGlvbihlLCBqc29uKSB7CgkJY2xhc3NUeXBl
ID0gJyc7CgkJCgkJaWYgKCAnYmFja3VwYnVkZHlfZXJyb3InID09IGUudHlwZSApIHsKCQkJanNvbi5kYXR
hID0gYmFja3VwYnVkZHlFcnJvcigganNvbi5kYXRhICk7CgkJCWNsYXNzVHlwZSA9ICdlcnJvcic7CgkJfQ
oJCWlmICggJ2JhY2t1cGJ1ZGR5X3dhcm5pbmcnID09IGUudHlwZSApIHsKCQkJanNvbi5kYXRhID0gYmFja
3VwYnVkZHlXYXJuaW5nKCBqc29uLmRhdGEgKTsKCQkJY2xhc3NUeXBlID0gJ3dhcm5pbmcnOwoJCX0KCQoJ
CWJhY2t1cGJ1ZGR5X2xvZygganNvbiwgY2xhc3NUeXBlICk7Cgl9KTsKCQoJCgkKCQoJLy8gQSBiYWNrdXA
gZnVuY3Rpb24gKHN0ZXApIGJlZ2FuLgoJalF1ZXJ5KCcjYmFja3VwYnVkZHlfbWVzc2FnZXMnKS5iaW5kKC
AnYmFja3VwYnVkZHlfc3RhcnRGdW5jdGlvbicsIGZ1bmN0aW9uKGUsIGpzb24pIHsKCQlmdW5jdGlvbkluZ
m8gPSBqUXVlcnkucGFyc2VKU09OKGpzb24uZGF0YSApOwoJCWh0bWwgPSAnPGRpdiBjbGFzcz0iYmFja3Vw
LXN0ZXAgYmFja3VwLXN0ZXAtcHJpbWFyeSBiYWNrdXAtZnVuY3Rpb24tJyArIGZ1bmN0aW9uSW5mby5mdW5
jdGlvbiArICciPjxzcGFuIGNsYXNzPSJiYWNrdXAtc3RlcC1zdGF0dXMgYmFja3VwLXN0ZXAtc3RhdHVzLX
dvcmtpbmciPjwvc3Bhbj48c3BhbiBjbGFzcz0iYmFja3VwLXN0ZXAtdGl0bGUiPicgKyBmdW5jdGlvbkluZ
m8udGl0bGUgKyAnPC9zcGFuPjwvZGl2Pic7CgkJalF1ZXJ5KCAnLmJhY2t1cC1zdGVwcycgKS5hcHBlbmQo
IGh0bWwgKTsKCQlpZiAoICcnICE9PSBiYWNrdXBidWRkeV9jdXJyZW50RnVuY3Rpb24gKSB7CgkJCWJhY2t
1cGJ1ZGR5X2xvZyggJ1dhcm5pbmcgIzIzNzgzMmE6IEEgZnVuY3Rpb24gYCcgKyBmdW5jdGlvbkluZm8uZn
VuY3Rpb24gKyAnYCBzdGFydGVkIGJlZm9yZSBhIHByaW9yIGZ1bmN0aW9uIGAnICsgYmFja3VwYnVkZHlfY
3VycmVudEZ1bmN0aW9uICsgJ2Agd2FzIGNvbXBsZXRlZC4nICk7CgkJfQoJCWJhY2t1cGJ1ZGR5X2N1cnJl
bnRGdW5jdGlvbiA9IGZ1bmN0aW9uSW5mby5mdW5jdGlvbjsKCX0pOwoJCgkKCS8vIEEgYmFja3VwIGZ1bmN
0aW9uIChzdGVwKSBmaW5pc2hlZC4KCWpRdWVyeSgnI2JhY2t1cGJ1ZGR5X21lc3NhZ2VzJykuYmluZCggJ2
JhY2t1cGJ1ZGR5X2ZpbmlzaEZ1bmN0aW9uJywgZnVuY3Rpb24oZSwganNvbikgewoJCWZ1bmN0aW9uSW5mb
yA9IGpRdWVyeS5wYXJzZUpTT04oIGpzb24uZGF0YSApOwoJCWpRdWVyeSggJy5iYWNrdXAtZnVuY3Rpb24t
JyArIGZ1bmN0aW9uSW5mby5mdW5jdGlvbiApLmZpbmQoICcuYmFja3VwLXN0ZXAtc3RhdHVzLXdvcmtpbmc
nICkucmVtb3ZlQ2xhc3MoICdiYWNrdXAtc3RlcC1zdGF0dXMtd29ya2luZycgKS5hZGRDbGFzcyggJ2JhY2
t1cC1zdGVwLXN0YXR1cy1maW5pc2hlZCcgKTsKCQlpZiAoIGZ1bmN0aW9uSW5mby5mdW5jdGlvbiAhPT0gY
mFja3VwYnVkZHlfY3VycmVudEZ1bmN0aW9uICkgewoJCQliYWNrdXBidWRkeV9sb2coICdXYXJuaW5nICMy
Mzc4MzJiOiBBIGZ1bmN0aW9uIGAnICsgZnVuY3Rpb25JbmZvLmZ1bmN0aW9uICsgJ2AgY29tcGxldGVkIHR
oYXQgZG9lcyBub3QgbWF0Y2ggdGhlIGZ1bmN0aW9uIHdoaWNoIHdhcyB0aG91Z2h0IHRvIGJlIHJ1bm5pbm
cgYCcgKyBiYWNrdXBidWRkeV9jdXJyZW50RnVuY3Rpb24gKyAnYC4nICk7CgkJfQoJCWJhY2t1cGJ1ZGR5X
2N1cnJlbnRGdW5jdGlvbiA9ICcnOwoJfSk7CgkKCQoJLy8gVHJhY2sgbWlub3IgZXZlbnRzIHNvIHdlIGNh
biBkZXRlY3QgY2VydGFpbiB0aGluZ3Mgbm90IGZpbmlzaGluZywgc3VjaCBhcyBpbXBvcnRidWRkeSBnZW5
lcmF0aW9uLgoJalF1ZXJ5KCcjYmFja3VwYnVkZHlfbWVzc2FnZXMnKS5iaW5kKCAnYmFja3VwYnVkZHlfc3
RhcnRBY3Rpb24nLCBmdW5jdGlvbihlLCBqc29uKSB7CgkJY29uc29sZS5sb2coICdTdGFydGluZyBhY3Rpb
246ICcgKyBqc29uLmRhdGEgKTsKCQlpZiAoICcnICE9PSBiYWNrdXBidWRkeV9jdXJyZW50QWN0aW9uICkg
ewoJCQliYWNrdXBidWRkeV9sb2coICdXYXJuaW5nICMzMjc4Mzc0YTogQW4gYWN0aW9uIGAnICsganNvbi5
kYXRhICsgJ2Agc3RhcnRlZCBiZWZvcmUgYSBwcmlvciBhY3Rpb24gYCcgKyBiYWNrdXBidWRkeV9jdXJyZW
50QWN0aW9uICsgJ2Agd2FzIGNvbXBsZXRlZC4nICk7CgkJfQoJCWJhY2t1cGJ1ZGR5X2N1cnJlbnRBY3Rpb
24gPSBqc29uLmRhdGE7CgkJYmFja3VwYnVkZHlfY3VycmVudEFjdGlvblN0YXJ0ID0gdW5peF90aW1lc3Rh
bXAoKTsKCQliYWNrdXBidWRkeV9jdXJyZW50QWN0aW9uTGFzdFdhcm4gPSAwOwoJfSk7CgkKCQoJalF1ZXJ
5KCcjYmFja3VwYnVkZHlfbWVzc2FnZXMnKS5iaW5kKCAnYmFja3VwYnVkZHlfZmluaXNoQWN0aW9uJywgZn
VuY3Rpb24oZSwganNvbikgewoJCWNvbnNvbGUubG9nKCAnRmluaXNoaW5nIGFjdGlvbjogJyArIGpzb24uZ
GF0YSApOwoJCWlmICgganNvbi5kYXRhICE9PSBiYWNrdXBidWRkeV9jdXJyZW50QWN0aW9uICkgewoJCQli
YWNrdXBidWRkeV9sb2coICdXYXJuaW5nICMzMjc4Mzc0YjogQW4gYWN0aW9uIGAnICsganNvbi5kYXRhICs
gJ2AgY29tcGxldGVkIHRoYXQgZG9lcyBub3QgbWF0Y2ggdGhlIGFjdGlvbiBgJyArIGJhY2t1cGJ1ZGR5X2
N1cnJlbnRBY3Rpb24gKyAnYCB3aGljaCB3YXMgdGhvdWdodCB0byBiZSBydW5uaW5nLicgKTsKCQl9CgkJY
mFja3VwYnVkZHlfY3VycmVudEFjdGlvbiA9ICcnOwoJCWJhY2t1cGJ1ZGR5X2N1cnJlbnRBY3Rpb25TdGFy
dCA9IDA7CgkJYmFja3VwYnVkZHlfY3VycmVudEFjdGlvbkxhc3RXYXJuID0gMDsKCX0pOwoJCgkKCQoJCgk
vLyBBbiBlcnJvciB3YXMgZW5jb3VudGVyZWQgcnVubmluZyBhIGZ1bmN0aW9uLgoJalF1ZXJ5KCcjYmFja3
VwYnVkZHlfbWVzc2FnZXMnKS5iaW5kKCAnYmFja3VwYnVkZHlfZXJyb3JGdW5jdGlvbicsIGZ1bmN0aW9uK
GUsIGpzb24pIHsKCQlqUXVlcnkoICcuYmFja3VwLWZ1bmN0aW9uLScgKyBqc29uLmRhdGEgKS5maW5kKCAn
LmJhY2t1cC1zdGVwLXN0YXR1cy13b3JraW5nJyApLnJlbW92ZUNsYXNzKCAnYmFja3VwLXN0ZXAtc3RhdHV
zLXdvcmtpbmcnICkuYWRkQ2xhc3MoICdiYWNrdXAtc3RlcC1zdGF0dXMtZXJyb3InICk7Cgl9KTsKCQoJCg
kvLyBTdGFydCBhIHN1YmZ1bmN0aW9uLiBUaGVzZSBhcmUgdHlwaWNhbGx5IG1vcmUgbWlub3IsIHRob3Vna
CBzdGlsbCBub3RhYmxlLCBldmVudHMuCglqUXVlcnkoJyNiYWNrdXBidWRkeV9tZXNzYWdlcycpLmJpbmQo
ICdiYWNrdXBidWRkeV9zdGFydFN1YkZ1bmN0aW9uJywgZnVuY3Rpb24oZSwganNvbikgewoJCWZ1bmN0aW9
uSW5mbyA9IGpRdWVyeS5wYXJzZUpTT04oanNvbi5kYXRhICk7CgkJaHRtbCA9ICc8ZGl2IGNsYXNzPSJiYW
NrdXAtc3RlcCBiYWNrdXAtc3RlcC1zZWNvbmRhcnkgYmFja3VwLWZ1bmN0aW9uLScgKyBmdW5jdGlvbkluZ
m8uZnVuY3Rpb24gKyAnIj48c3BhbiBjbGFzcz0iYmFja3VwLXN0ZXAtc3RhdHVzIj48L3NwYW4+PHNwYW4g
Y2xhc3M9ImJhY2t1cC1zdGVwLXRpdGxlIj4nICsgZnVuY3Rpb25JbmZvLnRpdGxlICsgJzwvc3Bhbj48L2R
pdj4nOwoJCWpRdWVyeSggJy5iYWNrdXAtc3RlcHMnICkuYXBwZW5kKCBodG1sICk7Cgl9KTsKCQoJCgkKCS
8vIEFuIGVycm9yIG1lc3NhZ2Ugd2FzIHNlbnQgZnJvbSB0aGUgc2VydmVyLgoJalF1ZXJ5KCcjYmFja3VwY
nVkZHlfbWVzc2FnZXMnKS5iaW5kKCAnYmFja3VwYnVkZHlfZXJyb3InLCBmdW5jdGlvbihlLCBqc29uKSB7
CgkJY29uc29sZS5sb2coICdCQUNLVVBCVUREWSBFUlJPUjogJyArIGpzb24uZGF0YSApOwoJfSk7CgkKCS8
vdmFyIGJhY2t1cGJ1ZGR5X2FjdGlvbnMgPSBbXTsKCQoJCgkKCQoJCgkvLyBBIHdhcm5pbmcgbWVzc2FnZS
B3YXMgc2VudCBmcm9tIHRoZSBzZXJ2ZXIuCglqUXVlcnkoJyNiYWNrdXBidWRkeV9tZXNzYWdlcycpLmJpb
mQoICdiYWNrdXBidWRkeV93YXJuaW5nJywgZnVuY3Rpb24oZSwganNvbikgewoJCWh0bWwgPSAnPHNwYW4g
Y2xhc3M9ImJhY2t1cC1zdGVwLXN0YXR1cyBiYWNrdXAtc3RlcC1zdGF0dXMtd2FybmluZyI+PC9zcGFuPjx
kaXYgY2xhc3M9ImJhY2t1cC1zdGVwIGJhY2t1cC1zdGVwLXNlY29uZGFyeSI+PHNwYW4gY2xhc3M9ImJhY2
t1cC1zdGVwLXRpdGxlIj4nICsganNvbi5kYXRhICsgJzwvc3Bhbj48L2Rpdj4nOwoJCWpRdWVyeSggJy5iY
WNrdXAtc3RlcHMnICkuYXBwZW5kKCBodG1sICk7Cgl9KTsKCQoJCgkvLyBUaGUgZW50aXJlIGJhY2t1cCBw
cm9jZXNzIGhhcyBiZWVuIGhhbHRlZCwgd2hldGhlciBieSBCYWNrdXBCdWRkeSBvciB0aGUgdXNlci4KCWp
RdWVyeSgnI2JhY2t1cGJ1ZGR5X21lc3NhZ2VzJykuYmluZCggJ2JhY2t1cGJ1ZGR5X2hhbHRTY3JpcHQnLC
BmdW5jdGlvbihlLCBqc29uKSB7CgkKCQlpZiAoIDAgPT09IGtlZXBfcG9sbGluZyApIHsgLy8gT25seSBza
G93IG9uY2UuCgkJCXJldHVybjsKCQl9CgkKCQlrZWVwX3BvbGxpbmcgPSAwOyAvLyBTdG9wIHBvbGxpbmcg
c2VydmVyIGZvciBzdGF0dXMgdXBkYXRlcy4KCQoJCWpRdWVyeSggJy5iYWNrdXAtc3RlcC1zdGF0dXMtd29
ya2luZycgKS5yZW1vdmVDbGFzcyggJ2JhY2t1cC1zdGVwLXN0YXR1cy13b3JraW5nJyApLmFkZENsYXNzKC
AnYmFja3VwLXN0ZXAtc3RhdHVzLWVycm9yJyApOyAvLyBBbnl0aGluZyB0aGF0IHdhcyBjdXJyZW50bHkgc
nVubmluZyB0dXJucyBpbnRvIGFuIGVycm9yLgoJCWpRdWVyeSggJyNwYl9iYWNrdXBidWRkeV9zdG9wJyAp
LmNzcyggJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyApOwoJCWpRdWVyeSggJy5wYl9iYWNrdXBidWRkeV9ibGl
ua3onICkuY3NzKCAnYmFja2dyb3VuZC1wb3NpdGlvbicsICd0b3AnICk7IC8vIHR1cm4gb2ZmIGxlZAoJCW
pRdWVyeSggJyNwYl9iYWNrdXBidWRkeV9zbG90MV9sZWQnICkucmVtb3ZlQ2xhc3MoICdwYl9iYWNrdXBid
WRkeV9ibGlua3onICk7IC8vIGRpc2FibGUgYmxpbmtpbmcKCQlqUXVlcnkoICcjcGJfYmFja3VwYnVkZHlf
c2xvdDJfbGVkJyApLnJlbW92ZUNsYXNzKCAncGJfYmFja3VwYnVkZHlfYmxpbmt6JyApOyAvLyBkaXNhYmx
lIGJsaW5raW5nCgkJalF1ZXJ5KCAnI3BiX2JhY2t1cGJ1ZGR5X3Nsb3QzX2xlZCcgKS5yZW1vdmVDbGFzcy
ggJ3BiX2JhY2t1cGJ1ZGR5X2JsaW5reicgKTsgLy8gZGlzYWJsZSBibGlua2luZwoJCWpRdWVyeSggJyNwY
l9iYWNrdXBidWRkeV9zbG90NF9sZWQnICkucmVtb3ZlQ2xhc3MoICdwYl9iYWNrdXBidWRkeV9lbXB0eScg
KTsgLy8gUmVtb3ZlIGVtcHR5IExFRCBob2xlLgoJCWpRdWVyeSggJyNwYl9iYWNrdXBidWRkeV9zbG90NF9
sZWQnICkuYWRkQ2xhc3MoICdwYl9iYWNrdXBidWRkeV9jb2RlcmVkJyApOyAvLyBzZXQgY2hlY2ttYXJrCg
kKCQkvLyBCcmllZmx5IHdhaXQKCQkvL3NldFRpbWVvdXQoZnVuY3Rpb24oKXsKCQliYWNrdXBidWRkeV9sb
2coICcqKionICk7CgkJaWYgKCAnJyAhPT0gYmFja3VwYnVkZHlfY3VycmVudEZ1bmN0aW9uICkgewoJCQli
YWNrdXBidWRkeV9sb2coICcqIFVuZmluaXNoZWQgZnVuY3Rpb246IGAnICsgYmFja3VwYnVkZHlfY3VycmV
udEZ1bmN0aW9uICsgJ2AuJyApOwoJCX0gZWxzZSB7CgkJCWJhY2t1cGJ1ZGR5X2xvZyggJyogTm8gaW4tcH
JvZ3Jlc3MgZnVuY3Rpb24gZGV0ZWN0ZWQuJyApOwoJCX0KCQoJCWlmICggJycgIT09IGJhY2t1cGJ1ZGR5X
2N1cnJlbnRBY3Rpb24gKSB7CgkJCWJhY2t1cGJ1ZGR5X2xvZyggJyogVW5maW5pc2hlZCBhY3Rpb246IGAn
ICsgYmFja3VwYnVkZHlfY3VycmVudEFjdGlvbiArICdgICgnICsgKCB1bml4X3RpbWVzdGFtcCgpIC0gYmF
ja3VwYnVkZHlfY3VycmVudEFjdGlvblN0YXJ0ICkgKyAnIHNlY29uZHMgYWdvKS4nICk7CgkJfSBlbHNlIH
sKCQkJYmFja3VwYnVkZHlfbG9nKCAnKiBObyBpbi1wcm9ncmVzcyBhY3Rpb24gZGV0ZWN0ZWQuJyApOwoJC
X0KCQliYWNrdXBidWRkeV9sb2coICcqKionICk7CgkKCQkvLyBDYWxjdWxhdGUgc3VnZ2VzdGlvbnMuCgkJ
LyoKCQkgaWYgKCAnaW1wb3J0YnVkZHlDcmVhdGlvbicgPT0gYmFja3VwYnVkZHlfY3VycmVudEFjdGlvbiA
pIHsKCQkgc3VnZ2VzdGlvbnMucHVzaCggewoJCSBkZXNjcmlwdGlvbjogJ0JhY2t1cEJ1ZGR5IGJ5IGRlZm
F1bHQgaW5jbHVkZXMgYSBjb3B5IG9mIHRoZSByZXN0b3JlIHRvb2wsIGltcG9ydGJ1ZGR5LnBocCwgaW5za
WRlIHRoZSBiYWNrdXAgWklQIGZpbGUgZm9yIHJldHJpZXZhbCBpZiBuZWVkZWQgaW4gdGhlIGZ1dHVyZS4n
LAoJCSBxdWlja0ZpeDogJ1R1cm4gb2ZmIGluY2x1c2lvbiBvZiBJbXBvcnRCdWRkeS4gTmF2aWdhdGUgdG8
gU2V0dGluZ3M6IEFkdmFuY2VkIFNldHRpbmdzIC8gVHJvdWJsZXNob290aW5nIHRhYjogVW5jaGVjayAiSW
5jbHVkZSBJbXBvcnRCdWRkeSBpbiBmdWxsIGJhY2t1cCBhcmNoaXZlIi4nLAoJCSBzb2x1dGlvbjogJ0luY
3JlYXNlIGF2YWlsYWJsZSBQSFAgbWVtb3J5LicKCQkgfSApOwoJCSB9CgkJICovCgkKCQliYWNrdXBidWRk
eV9zaG93U3VnZ2VzdGlvbnMoIHN1Z2dlc3Rpb25zICk7CgkKCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Cgk
JCWJhY2t1cGJ1ZGR5X2xvZyggJyogVGhlIGJhY2t1cCBoYXMgaGFsdGVkLicgKTsKCQl9LDUwMCk7CgkJYW
xlcnQoICdUaGUgYmFja3VwIGhhcyBoYWx0ZWQuJyApOwoJCS8vfSwxMDAwKTsKCQoJfSk7Cgp9IC8vIGVuZ
CBsb2Fk
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/restoreEvents.js,importbuddy/js/r
estoreEvents.js
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/tooltip.js,importbuddy/js/toolt
ip.js
LyoKICogalF1ZXJ5IFRvb2x0aXAgcGx1Z2luIDEuMwogKgogKiBodHRwOi8vYmFzc2lzdGFuY2UuZGUvanF
1ZXJ5LXBsdWdpbnMvanF1ZXJ5LXBsdWdpbi10b29sdGlwLwogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1
BsdWdpbnMvVG9vbHRpcAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDA4IErDtnJuIFphZWZmZXJlc
gogKgogKiAkSWQ6IGpxdWVyeS50b29sdGlwLmpzIDU3NDEgMjAwOC0wNi0yMSAxNToyMjoxNlogam9lcm4u
emFlZmZlcmVyICQKICogCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2V
zOgogKiAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqIC
AgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sCiAqLwogCjsoZnVuY3Rpb24oJCkgewoJC
gkJLy8gdGhlIHRvb2x0aXAgZWxlbWVudAoJdmFyIGhlbHBlciA9IHt9LAoJCS8vIHRoZSBjdXJyZW50IHRv
b2x0aXBwZWQgZWxlbWVudAoJCWN1cnJlbnQsCgkJLy8gdGhlIHRpdGxlIG9mIHRoZSBjdXJyZW50IGVsZW1
lbnQsIHVzZWQgZm9yIHJlc3RvcmluZwoJCXRpdGxlLAoJCS8vIHRpbWVvdXQgaWQgZm9yIGRlbGF5ZWQgdG
9vbHRpcHMKCQl0SUQsCgkJLy8gSUUgNS41IG9yIDYKCQlJRSA9IGZhbHNlLAoJCS8vIGZsYWcgZm9yIG1vd
XNlIHRyYWNraW5nCgkJdHJhY2sgPSBmYWxzZTsKCQoJJC50b29sdGlwID0gewoJCWJsb2NrZWQ6IGZhbHNl
LAoJCWRlZmF1bHRzOiB7CgkJCWRlbGF5OiAyMDAsCgkJCWZhZGU6IGZhbHNlLAoJCQlzaG93VVJMOiB0cnV
lLAoJCQlleHRyYUNsYXNzOiAiIiwKCQkJdG9wOiAxNSwKCQkJbGVmdDogMTUsCgkJCWlkOiAidG9vbHRpcC
IKCQl9LAoJCWJsb2NrOiBmdW5jdGlvbigpIHsKCQkJJC50b29sdGlwLmJsb2NrZWQgPSAhJC50b29sdGlwL
mJsb2NrZWQ7CgkJfQoJfTsKCQoJJC5mbi5leHRlbmQoewoJCXRvb2x0aXA6IGZ1bmN0aW9uKHNldHRpbmdz
KSB7CgkJCXNldHRpbmdzID0gJC5leHRlbmQoe30sICQudG9vbHRpcC5kZWZhdWx0cywgc2V0dGluZ3MpOwo
JCQljcmVhdGVIZWxwZXIoc2V0dGluZ3MpOwoJCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQ
kJCSQuZGF0YSh0aGlzLCAidG9vbHRpcCIsIHNldHRpbmdzKTsKCQkJCQl0aGlzLnRPcGFjaXR5ID0gaGVsc
GVyLnBhcmVudC5jc3MoIm9wYWNpdHkiKTsKCQkJCQkvLyBjb3B5IHRvb2x0aXAgaW50byBpdHMgb3duIGV4
cGFuZG8gYW5kIHJlbW92ZSB0aGUgdGl0bGUKCQkJCQl0aGlzLnRvb2x0aXBUZXh0ID0gdGhpcy50aXRsZTs
KCQkJCQkkKHRoaXMpLnJlbW92ZUF0dHIoInRpdGxlIik7CgkJCQkJLy8gYWxzbyByZW1vdmUgYWx0IGF0dH
JpYnV0ZSB0byBwcmV2ZW50IGRlZmF1bHQgdG9vbHRpcCBpbiBJRQoJCQkJCXRoaXMuYWx0ID0gIiI7CgkJC
Ql9KQoJCQkJLm1vdXNlb3ZlcihzYXZlKQoJCQkJLm1vdXNlb3V0KGhpZGUpCgkJCQkuY2xpY2soaGlkZSk7
CgkJfSwKCQlmaXhQTkc6IElFID8gZnVuY3Rpb24oKSB7CgkJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24
gKCkgewoJCQkJdmFyIGltYWdlID0gJCh0aGlzKS5jc3MoJ2JhY2tncm91bmRJbWFnZScpOwoJCQkJaWYgKG
ltYWdlLm1hdGNoKC9edXJsXChbIiddPyguKlwucG5nKVsiJ10/XCkkL2kpKSB7CgkJCQkJaW1hZ2UgPSBSZ
WdFeHAuJDE7CgkJCQkJJCh0aGlzKS5jc3MoewoJCQkJCQknYmFja2dyb3VuZEltYWdlJzogJ25vbmUnLAoJ
CQkJCQknZmlsdGVyJzogInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYUltYWdlTG9
hZGVyKGVuYWJsZWQ9dHJ1ZSwgc2l6aW5nTWV0aG9kPWNyb3AsIHNyYz0nIiArIGltYWdlICsgIicpIgoJCQ
kJCX0pLmVhY2goZnVuY3Rpb24gKCkgewoJCQkJCQl2YXIgcG9zaXRpb24gPSAkKHRoaXMpLmNzcygncG9za
XRpb24nKTsKCQkJCQkJaWYgKHBvc2l0aW9uICE9ICdhYnNvbHV0ZScgJiYgcG9zaXRpb24gIT0gJ3JlbGF0
aXZlJykKCQkJCQkJCSQodGhpcykuY3NzKCdwb3NpdGlvbicsICdyZWxhdGl2ZScpOwoJCQkJCX0pOwoJCQk
JfQoJCQl9KTsKCQl9IDogZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9LAoJCXVuZml4UE5HOiBJRSA/IG
Z1bmN0aW9uKCkgewoJCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHsKCQkJCSQodGhpcykuY3NzK
HsnZmlsdGVyJzogJycsIGJhY2tncm91bmRJbWFnZTogJyd9KTsKCQkJfSk7CgkJfSA6IGZ1bmN0aW9uKCkg
eyByZXR1cm4gdGhpczsgfSwKCQloaWRlV2hlbkVtcHR5OiBmdW5jdGlvbigpIHsKCQkJcmV0dXJuIHRoaXM
uZWFjaChmdW5jdGlvbigpIHsKCQkJCSQodGhpcylbICQodGhpcykuaHRtbCgpID8gInNob3ciIDogImhpZG
UiIF0oKTsKCQkJfSk7CgkJfSwKCQl1cmw6IGZ1bmN0aW9uKCkgewoJCQlyZXR1cm4gdGhpcy5hdHRyKCdoc
mVmJykgfHwgdGhpcy5hdHRyKCdzcmMnKTsKCQl9Cgl9KTsKCQoJZnVuY3Rpb24gY3JlYXRlSGVscGVyKHNl
dHRpbmdzKSB7CgkJLy8gdGhlcmUgY2FuIGJlIG9ubHkgb25lIHRvb2x0aXAgaGVscGVyCgkJaWYoIGhlbHB
lci5wYXJlbnQgKQoJCQlyZXR1cm47CgkJLy8gY3JlYXRlIHRoZSBoZWxwZXIsIGgzIGZvciB0aXRsZSwgZG
l2IGZvciB1cmwKCQloZWxwZXIucGFyZW50ID0gJCgnPGRpdiBpZD0iJyArIHNldHRpbmdzLmlkICsgJyI+P
GgzPjwvaDM+PGRpdiBjbGFzcz0iYm9keSI+PC9kaXY+PGRpdiBjbGFzcz0idXJsIj48L2Rpdj48L2Rpdj4n
KQoJCQkvLyBhZGQgdG8gZG9jdW1lbnQKCQkJLmFwcGVuZFRvKGRvY3VtZW50LmJvZHkpCgkJCS8vIGhpZGU
gaXQgYXQgZmlyc3QKCQkJLmhpZGUoKTsKCQkJCgkJLy8gYXBwbHkgYmdpZnJhbWUgaWYgYXZhaWxhYmxlCg
kJaWYgKCAkLmZuLmJnaWZyYW1lICkKCQkJaGVscGVyLnBhcmVudC5iZ2lmcmFtZSgpOwoJCQoJCS8vIHNhd
mUgcmVmZXJlbmNlcyB0byB0aXRsZSBhbmQgdXJsIGVsZW1lbnRzCgkJaGVscGVyLnRpdGxlID0gJCgnaDMn
LCBoZWxwZXIucGFyZW50KTsKCQloZWxwZXIuYm9keSA9ICQoJ2Rpdi5ib2R5JywgaGVscGVyLnBhcmVudCk
7CgkJaGVscGVyLnVybCA9ICQoJ2Rpdi51cmwnLCBoZWxwZXIucGFyZW50KTsKCX0KCQoJZnVuY3Rpb24gc2
V0dGluZ3MoZWxlbWVudCkgewoJCXJldHVybiAkLmRhdGEoZWxlbWVudCwgInRvb2x0aXAiKTsKCX0KCQoJL
y8gbWFpbiBldmVudCBoYW5kbGVyIHRvIHN0YXJ0IHNob3dpbmcgdG9vbHRpcHMKCWZ1bmN0aW9uIGhhbmRs
ZShldmVudCkgewoJCS8vIHNob3cgaGVscGVyLCBlaXRoZXIgd2l0aCB0aW1lb3V0IG9yIG9uIGluc3RhbnQ
KCQlpZiggc2V0dGluZ3ModGhpcykuZGVsYXkgKQoJCQl0SUQgPSBzZXRUaW1lb3V0KHNob3csIHNldHRpbm
dzKHRoaXMpLmRlbGF5KTsKCQllbHNlCgkJCXNob3coKTsKCQkKCQkvLyBpZiBzZWxlY3RlZCwgdXBkYXRlI
HRoZSBoZWxwZXIgcG9zaXRpb24gd2hlbiB0aGUgbW91c2UgbW92ZXMKCQl0cmFjayA9ICEhc2V0dGluZ3Mo
dGhpcykudHJhY2s7CgkJJChkb2N1bWVudC5ib2R5KS5iaW5kKCdtb3VzZW1vdmUnLCB1cGRhdGUpOwoJCQk
KCQkvLyB1cGRhdGUgYXQgbGVhc3Qgb25jZQoJCXVwZGF0ZShldmVudCk7Cgl9CgkKCS8vIHNhdmUgZWxlbW
VudHMgdGl0bGUgYmVmb3JlIHRoZSB0b29sdGlwIGlzIGRpc3BsYXllZAoJZnVuY3Rpb24gc2F2ZSgpIHsKC
QkvLyBpZiB0aGlzIGlzIHRoZSBjdXJyZW50IHNvdXJjZSwgb3IgaXQgaGFzIG5vIHRpdGxlIChvY2N1cnMg
d2l0aCBjbGljayBldmVudCksIHN0b3AKCQlpZiAoICQudG9vbHRpcC5ibG9ja2VkIHx8IHRoaXMgPT0gY3V
ycmVudCB8fCAoIXRoaXMudG9vbHRpcFRleHQgJiYgIXNldHRpbmdzKHRoaXMpLmJvZHlIYW5kbGVyKSApCg
kJCXJldHVybjsKCgkJLy8gc2F2ZSBjdXJyZW50CgkJY3VycmVudCA9IHRoaXM7CgkJdGl0bGUgPSB0aGlzL
nRvb2x0aXBUZXh0OwoJCQoJCWlmICggc2V0dGluZ3ModGhpcykuYm9keUhhbmRsZXIgKSB7CgkJCWhlbHBl
ci50aXRsZS5oaWRlKCk7CgkJCXZhciBib2R5Q29udGVudCA9IHNldHRpbmdzKHRoaXMpLmJvZHlIYW5kbGV
yLmNhbGwodGhpcyk7CgkJCWlmIChib2R5Q29udGVudC5ub2RlVHlwZSB8fCBib2R5Q29udGVudC5qcXVlcn
kpIHsKCQkJCWhlbHBlci5ib2R5LmVtcHR5KCkuYXBwZW5kKGJvZHlDb250ZW50KQoJCQl9IGVsc2UgewoJC
QkJaGVscGVyLmJvZHkuaHRtbCggYm9keUNvbnRlbnQgKTsKCQkJfQoJCQloZWxwZXIuYm9keS5zaG93KCk7
CgkJfSBlbHNlIGlmICggc2V0dGluZ3ModGhpcykuc2hvd0JvZHkgKSB7CgkJCXZhciBwYXJ0cyA9IHRpdGx
lLnNwbGl0KHNldHRpbmdzKHRoaXMpLnNob3dCb2R5KTsKCQkJaGVscGVyLnRpdGxlLmh0bWwocGFydHMuc2
hpZnQoKSkuc2hvdygpOwoJCQloZWxwZXIuYm9keS5lbXB0eSgpOwoJCQlmb3IodmFyIGkgPSAwLCBwYXJ0O
yAocGFydCA9IHBhcnRzW2ldKTsgaSsrKSB7CgkJCQlpZihpID4gMCkKCQkJCQloZWxwZXIuYm9keS5hcHBl
bmQoIjxici8+Iik7CgkJCQloZWxwZXIuYm9keS5hcHBlbmQocGFydCk7CgkJCX0KCQkJaGVscGVyLmJvZHk
uaGlkZVdoZW5FbXB0eSgpOwoJCX0gZWxzZSB7CgkJCWhlbHBlci50aXRsZS5odG1sKHRpdGxlKS5zaG93KC
k7CgkJCWhlbHBlci5ib2R5LmhpZGUoKTsKCQl9CgkJCgkJLy8gaWYgZWxlbWVudCBoYXMgaHJlZiBvciBzc
mMsIGFkZCBhbmQgc2hvdyBpdCwgb3RoZXJ3aXNlIGhpZGUgaXQKCQlpZiggc2V0dGluZ3ModGhpcykuc2hv
d1VSTCAmJiAkKHRoaXMpLnVybCgpICkKCQkJaGVscGVyLnVybC5odG1sKCAkKHRoaXMpLnVybCgpLnJlcGx
hY2UoJ2h0dHA6Ly8nLCAnJykgKS5zaG93KCk7CgkJZWxzZSAKCQkJaGVscGVyLnVybC5oaWRlKCk7CgkJCg
kJLy8gYWRkIGFuIG9wdGlvbmFsIGNsYXNzIGZvciB0aGlzIHRpcAoJCWhlbHBlci5wYXJlbnQuYWRkQ2xhc
3Moc2V0dGluZ3ModGhpcykuZXh0cmFDbGFzcyk7CgoJCS8vIGZpeCBQTkcgYmFja2dyb3VuZCBmb3IgSUUK
CQlpZiAoc2V0dGluZ3ModGhpcykuZml4UE5HICkKCQkJaGVscGVyLnBhcmVudC5maXhQTkcoKTsKCQkJCgk
JaGFuZGxlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7Cgl9CgkKCS8vIGRlbGV0ZSB0aW1lb3V0IGFuZCBzaG
93IGhlbHBlcgoJZnVuY3Rpb24gc2hvdygpIHsKCQl0SUQgPSBudWxsOwoJCWlmICgoIUlFIHx8ICEkLmZuL
mJnaWZyYW1lKSAmJiBzZXR0aW5ncyhjdXJyZW50KS5mYWRlKSB7CgkJCWlmIChoZWxwZXIucGFyZW50Lmlz
KCI6YW5pbWF0ZWQiKSkKCQkJCWhlbHBlci5wYXJlbnQuc3RvcCgpLnNob3coKS5mYWRlVG8oc2V0dGluZ3M
oY3VycmVudCkuZmFkZSwgY3VycmVudC50T3BhY2l0eSk7CgkJCWVsc2UKCQkJCWhlbHBlci5wYXJlbnQuaX
MoJzp2aXNpYmxlJykgPyBoZWxwZXIucGFyZW50LmZhZGVUbyhzZXR0aW5ncyhjdXJyZW50KS5mYWRlLCBjd
XJyZW50LnRPcGFjaXR5KSA6IGhlbHBlci5wYXJlbnQuZmFkZUluKHNldHRpbmdzKGN1cnJlbnQpLmZhZGUp
OwoJCX0gZWxzZSB7CgkJCWhlbHBlci5wYXJlbnQuc2hvdygpOwoJCX0KCQl1cGRhdGUoKTsKCX0KCQoJLyo
qCgkgKiBjYWxsYmFjayBmb3IgbW91c2Vtb3ZlCgkgKiB1cGRhdGVzIHRoZSBoZWxwZXIgcG9zaXRpb24KCS
AqIHJlbW92ZXMgaXRzZWxmIHdoZW4gbm8gY3VycmVudCBlbGVtZW50CgkgKi8KCWZ1bmN0aW9uIHVwZGF0Z
ShldmVudCkJewoJCWlmKCQudG9vbHRpcC5ibG9ja2VkKQoJCQlyZXR1cm47CgkJCgkJaWYgKGV2ZW50ICYm
IGV2ZW50LnRhcmdldC50YWdOYW1lID09ICJPUFRJT04iKSB7CgkJCXJldHVybjsKCQl9CgkJCgkJLy8gc3R
vcCB1cGRhdGluZyB3aGVuIHRyYWNraW5nIGlzIGRpc2FibGVkIGFuZCB0aGUgdG9vbHRpcCBpcyB2aXNpYm
xlCgkJaWYgKCAhdHJhY2sgJiYgaGVscGVyLnBhcmVudC5pcygiOnZpc2libGUiKSkgewoJCQkkKGRvY3VtZ
W50LmJvZHkpLnVuYmluZCgnbW91c2Vtb3ZlJywgdXBkYXRlKQoJCX0KCQkKCQkvLyBpZiBubyBjdXJyZW50
IGVsZW1lbnQgaXMgYXZhaWxhYmxlLCByZW1vdmUgdGhpcyBsaXN0ZW5lcgoJCWlmKCBjdXJyZW50ID09IG5
1bGwgKSB7CgkJCSQoZG9jdW1lbnQuYm9keSkudW5iaW5kKCdtb3VzZW1vdmUnLCB1cGRhdGUpOwoJCQlyZX
R1cm47CQoJCX0KCQkKCQkvLyByZW1vdmUgcG9zaXRpb24gaGVscGVyIGNsYXNzZXMKCQloZWxwZXIucGFyZ
W50LnJlbW92ZUNsYXNzKCJ2aWV3cG9ydC1yaWdodCIpLnJlbW92ZUNsYXNzKCJ2aWV3cG9ydC1ib3R0b20i
KTsKCQkKCQl2YXIgbGVmdCA9IGhlbHBlci5wYXJlbnRbMF0ub2Zmc2V0TGVmdDsKCQl2YXIgdG9wID0gaGV
scGVyLnBhcmVudFswXS5vZmZzZXRUb3A7CgkJaWYgKGV2ZW50KSB7CgkJCS8vIHBvc2l0aW9uIHRoZSBoZW
xwZXIgMTUgcGl4ZWwgdG8gYm90dG9tIHJpZ2h0LCBzdGFydGluZyBmcm9tIG1vdXNlIHBvc2l0aW9uCgkJC
WxlZnQgPSBldmVudC5wYWdlWCArIHNldHRpbmdzKGN1cnJlbnQpLmxlZnQ7CgkJCXRvcCA9IGV2ZW50LnBh
Z2VZICsgc2V0dGluZ3MoY3VycmVudCkudG9wOwoJCQl2YXIgcmlnaHQ9J2F1dG8nOwoJCQlpZiAoc2V0dGl
uZ3MoY3VycmVudCkucG9zaXRpb25MZWZ0KSB7CgkJCQlyaWdodCA9ICQod2luZG93KS53aWR0aCgpIC0gbG
VmdDsKCQkJCWxlZnQgPSAnYXV0byc7CgkJCX0KCQkJaGVscGVyLnBhcmVudC5jc3MoewoJCQkJbGVmdDogb
GVmdCwKCQkJCXJpZ2h0OiByaWdodCwKCQkJCXRvcDogdG9wCgkJCX0pOwoJCX0KCQkKCQl2YXIgdiA9IHZp
ZXdwb3J0KCksCgkJCWggPSBoZWxwZXIucGFyZW50WzBdOwoJCS8vIGNoZWNrIGhvcml6b250YWwgcG9zaXR
pb24KCQlpZiAodi54ICsgdi5jeCA8IGgub2Zmc2V0TGVmdCArIGgub2Zmc2V0V2lkdGgpIHsKCQkJbGVmdC
AtPSBoLm9mZnNldFdpZHRoICsgMjAgKyBzZXR0aW5ncyhjdXJyZW50KS5sZWZ0OwoJCQloZWxwZXIucGFyZ
W50LmNzcyh7bGVmdDogbGVmdCArICdweCd9KS5hZGRDbGFzcygidmlld3BvcnQtcmlnaHQiKTsKCQl9CgkJ
Ly8gY2hlY2sgdmVydGljYWwgcG9zaXRpb24KCQlpZiAodi55ICsgdi5jeSA8IGgub2Zmc2V0VG9wICsgaC5
vZmZzZXRIZWlnaHQpIHsKCQkJdG9wIC09IGgub2Zmc2V0SGVpZ2h0ICsgMjAgKyBzZXR0aW5ncyhjdXJyZW
50KS50b3A7CgkJCWhlbHBlci5wYXJlbnQuY3NzKHt0b3A6IHRvcCArICdweCd9KS5hZGRDbGFzcygidmlld
3BvcnQtYm90dG9tIik7CgkJfQoJfQoJCglmdW5jdGlvbiB2aWV3cG9ydCgpIHsKCQlyZXR1cm4gewoJCQl4
OiAkKHdpbmRvdykuc2Nyb2xsTGVmdCgpLAoJCQl5OiAkKHdpbmRvdykuc2Nyb2xsVG9wKCksCgkJCWN4OiA
kKHdpbmRvdykud2lkdGgoKSwKCQkJY3k6ICQod2luZG93KS5oZWlnaHQoKQoJCX07Cgl9CgkKCS8vIGhpZG
UgaGVscGVyIGFuZCByZXN0b3JlIGFkZGVkIGNsYXNzZXMgYW5kIHRoZSB0aXRsZQoJZnVuY3Rpb24gaGlkZ
ShldmVudCkgewoJCWlmKCQudG9vbHRpcC5ibG9ja2VkKQoJCQlyZXR1cm47CgkJLy8gY2xlYXIgdGltZW91
dCBpZiBwb3NzaWJsZQoJCWlmKHRJRCkKCQkJY2x
lYXJUaW1lb3V0KHRJRCk7CgkJLy8gbm8gbW9yZSBjdXJyZW50IGVsZW1lbnQKCQljdXJyZW50ID0gbnVsbD
sKCQkKCQl2YXIgdHNldHRpbmdzID0gc2V0dGluZ3ModGhpcyk7CgkJZnVuY3Rpb24gY29tcGxldGUoKSB7C
gkJCWhlbHBlci5wYXJlbnQucmVtb3ZlQ2xhc3MoIHRzZXR0aW5ncy5leHRyYUNsYXNzICkuaGlkZSgpLmNz
cygib3BhY2l0eSIsICIiKTsKCQl9CgkJaWYgKCghSUUgfHwgISQuZm4uYmdpZnJhbWUpICYmIHRzZXR0aW5
ncy5mYWRlKSB7CgkJCWlmIChoZWxwZXIucGFyZW50LmlzKCc6YW5pbWF0ZWQnKSkKCQkJCWhlbHBlci5wYX
JlbnQuc3RvcCgpLmZhZGVUbyh0c2V0dGluZ3MuZmFkZSwgMCwgY29tcGxldGUpOwoJCQllbHNlCgkJCQloZ
WxwZXIucGFyZW50LnN0b3AoKS5mYWRlT3V0KHRzZXR0aW5ncy5mYWRlLCBjb21wbGV0ZSk7CgkJfSBlbHNl
CgkJCWNvbXBsZXRlKCk7CgkJCgkJaWYoIHNldHRpbmdzKHRoaXMpLmZpeFBORyApCgkJCWhlbHBlci5wYXJ
lbnQudW5maXhQTkcoKTsKCX0KCQp9KShqUXVlcnkpOwo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/tooltip.js,importbuddy/js/tooltip
.js
###PACKDATA,FILE_START,/_importbuddy/importbuddy/js/ui.core.js,importbuddy/js/ui.co
re.js
LyohCiAqIGpRdWVyeSBVSSAxLjguMTIKICoKICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHR
wOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQogKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIF
ZlcnNpb24gMiBsaWNlbnNlcy4KICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQogKgogKiBodHRwOi8vZ
G9jcy5qcXVlcnkuY29tL1VJCiAqLwooZnVuY3Rpb24oYyxqKXtmdW5jdGlvbiBrKGEpe3JldHVybiFjKGEp
LnBhcmVudHMoKS5hbmRTZWxmKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIGMuY3VyQ1NTKHRoaXMsInZ
pc2liaWxpdHkiKT09PSJoaWRkZW4ifHxjLmV4cHIuZmlsdGVycy5oaWRkZW4odGhpcyl9KS5sZW5ndGh9Yy
51aT1jLnVpfHx7fTtpZighYy51aS52ZXJzaW9uKXtjLmV4dGVuZChjLnVpLHt2ZXJzaW9uOiIxLjguMTIiL
GtleUNvZGU6e0FMVDoxOCxCQUNLU1BBQ0U6OCxDQVBTX0xPQ0s6MjAsQ09NTUE6MTg4LENPTU1BTkQ6OTEs
Q09NTUFORF9MRUZUOjkxLENPTU1BTkRfUklHSFQ6OTMsQ09OVFJPTDoxNyxERUxFVEU6NDYsRE9XTjo0MCx
FTkQ6MzUsRU5URVI6MTMsRVNDQVBFOjI3LEhPTUU6MzYsSU5TRVJUOjQ1LExFRlQ6MzcsTUVOVTo5MyxOVU
1QQURfQUREOjEwNyxOVU1QQURfREVDSU1BTDoxMTAsTlVNUEFEX0RJVklERToxMTEsTlVNUEFEX0VOVEVSO
jEwOCxOVU1QQURfTVVMVElQTFk6MTA2LApOVU1QQURfU1VCVFJBQ1Q6MTA5LFBBR0VfRE9XTjozNCxQQUdF
X1VQOjMzLFBFUklPRDoxOTAsUklHSFQ6MzksU0hJRlQ6MTYsU1BBQ0U6MzIsVEFCOjksVVA6MzgsV0lORE9
XUzo5MX19KTtjLmZuLmV4dGVuZCh7X2ZvY3VzOmMuZm4uZm9jdXMsZm9jdXM6ZnVuY3Rpb24oYSxiKXtyZX
R1cm4gdHlwZW9mIGE9PT0ibnVtYmVyIj90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgZD10aGlzO3NldFRpb
WVvdXQoZnVuY3Rpb24oKXtjKGQpLmZvY3VzKCk7YiYmYi5jYWxsKGQpfSxhKX0pOnRoaXMuX2ZvY3VzLmFw
cGx5KHRoaXMsYXJndW1lbnRzKX0sc2Nyb2xsUGFyZW50OmZ1bmN0aW9uKCl7dmFyIGE7YT1jLmJyb3dzZXI
ubXNpZSYmLyhzdGF0aWN8cmVsYXRpdmUpLy50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKXx8L2Fic29sdX
RlLy50ZXN0KHRoaXMuY3NzKCJwb3NpdGlvbiIpKT90aGlzLnBhcmVudHMoKS5maWx0ZXIoZnVuY3Rpb24oK
XtyZXR1cm4vKHJlbGF0aXZlfGFic29sdXRlfGZpeGVkKS8udGVzdChjLmN1ckNTUyh0aGlzLAoicG9zaXRp
b24iLDEpKSYmLyhhdXRvfHNjcm9sbCkvLnRlc3QoYy5jdXJDU1ModGhpcywib3ZlcmZsb3ciLDEpK2MuY3V
yQ1NTKHRoaXMsIm92ZXJmbG93LXkiLDEpK2MuY3VyQ1NTKHRoaXMsIm92ZXJmbG93LXgiLDEpKX0pLmVxKD
ApOnRoaXMucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybi8oYXV0b3xzY3JvbGwpLy50ZXN0K
GMuY3VyQ1NTKHRoaXMsIm92ZXJmbG93IiwxKStjLmN1ckNTUyh0aGlzLCJvdmVyZmxvdy15IiwxKStjLmN1
ckNTUyh0aGlzLCJvdmVyZmxvdy14IiwxKSl9KS5lcSgwKTtyZXR1cm4vZml4ZWQvLnRlc3QodGhpcy5jc3M
oInBvc2l0aW9uIikpfHwhYS5sZW5ndGg/Yyhkb2N1bWVudCk6YX0sekluZGV4OmZ1bmN0aW9uKGEpe2lmKG
EhPT1qKXJldHVybiB0aGlzLmNzcygiekluZGV4IixhKTtpZih0aGlzLmxlbmd0aCl7YT1jKHRoaXNbMF0pO
2Zvcih2YXIgYjthLmxlbmd0aCYmYVswXSE9PWRvY3VtZW50Oyl7Yj1hLmNzcygicG9zaXRpb24iKTsKaWYo
Yj09PSJhYnNvbHV0ZSJ8fGI9PT0icmVsYXRpdmUifHxiPT09ImZpeGVkIil7Yj1wYXJzZUludChhLmNzcyg
iekluZGV4IiksMTApO2lmKCFpc05hTihiKSYmYiE9PTApcmV0dXJuIGJ9YT1hLnBhcmVudCgpfX1yZXR1cm
4gMH0sZGlzYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJpbmQoKGMuc3VwcG9ydC5zZ
WxlY3RzdGFydD8ic2VsZWN0c3RhcnQiOiJtb3VzZWRvd24iKSsiLnVpLWRpc2FibGVTZWxlY3Rpb24iLGZ1
bmN0aW9uKGEpe2EucHJldmVudERlZmF1bHQoKX0pfSxlbmFibGVTZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR
1cm4gdGhpcy51bmJpbmQoIi51aS1kaXNhYmxlU2VsZWN0aW9uIil9fSk7Yy5lYWNoKFsiV2lkdGgiLCJIZW
lnaHQiXSxmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoZixnLGwsbSl7Yy5lYWNoKGUsZnVuY3Rpb24oKXtnL
T1wYXJzZUZsb2F0KGMuY3VyQ1NTKGYsInBhZGRpbmciK3RoaXMsdHJ1ZSkpfHwwO2lmKGwpZy09cGFyc2VG
bG9hdChjLmN1ckNTUyhmLAoiYm9yZGVyIit0aGlzKyJXaWR0aCIsdHJ1ZSkpfHwwO2lmKG0pZy09cGFyc2V
GbG9hdChjLmN1ckNTUyhmLCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfSk7cmV0dXJuIGd9dmFyIGU9Yj09PS
JXaWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdLGg9Yi50b0xvd2VyQ2FzZSgpLGk9e
2lubmVyV2lkdGg6Yy5mbi5pbm5lcldpZHRoLGlubmVySGVpZ2h0OmMuZm4uaW5uZXJIZWlnaHQsb3V0ZXJX
aWR0aDpjLmZuLm91dGVyV2lkdGgsb3V0ZXJIZWlnaHQ6Yy5mbi5vdXRlckhlaWdodH07Yy5mblsiaW5uZXI
iK2JdPWZ1bmN0aW9uKGYpe2lmKGY9PT1qKXJldHVybiBpWyJpbm5lciIrYl0uY2FsbCh0aGlzKTtyZXR1cm
4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5jc3MoaCxkKHRoaXMsZikrInB4Iil9KX07Yy5mblsib
3V0ZXIiK2JdPWZ1bmN0aW9uKGYsZyl7aWYodHlwZW9mIGYhPT0ibnVtYmVyIilyZXR1cm4gaVsib3V0ZXIi
K2JdLmNhbGwodGhpcyxmKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Yyh0aGlzKS5jc3MoaCwKZCh
0aGlzLGYsdHJ1ZSxnKSsicHgiKX0pfX0pO2MuZXh0ZW5kKGMuZXhwclsiOiJdLHtkYXRhOmZ1bmN0aW9uKG
EsYixkKXtyZXR1cm4hIWMuZGF0YShhLGRbM10pfSxmb2N1c2FibGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub
2RlTmFtZS50b0xvd2VyQ2FzZSgpLGQ9Yy5hdHRyKGEsInRhYmluZGV4Iik7aWYoImFyZWEiPT09Yil7Yj1h
LnBhcmVudE5vZGU7ZD1iLm5hbWU7aWYoIWEuaHJlZnx8IWR8fGIubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE
9PSJtYXAiKXJldHVybiBmYWxzZTthPWMoImltZ1t1c2VtYXA9IyIrZCsiXSIpWzBdO3JldHVybiEhYSYmay
hhKX1yZXR1cm4oL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0Ly50ZXN0KGIpPyFhLmRpc
2FibGVkOiJhIj09Yj9hLmhyZWZ8fCFpc05hTihkKTohaXNOYU4oZCkpJiZrKGEpfSx0YWJiYWJsZTpmdW5j
dGlvbihhKXt2YXIgYj1jLmF0dHIoYSwidGFiaW5kZXgiKTtyZXR1cm4oaXNOYU4oYil8fGI+PTApJiZjKGE
pLmlzKCI6Zm9jdXNhYmxlIil9fSk7CmMoZnVuY3Rpb24oKXt2YXIgYT1kb2N1bWVudC5ib2R5LGI9YS5hcH
BlbmRDaGlsZChiPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtjLmV4dGVuZChiLnN0eWxlLHtta
W5IZWlnaHQ6IjEwMHB4IixoZWlnaHQ6ImF1dG8iLHBhZGRpbmc6MCxib3JkZXJXaWR0aDowfSk7Yy5zdXBw
b3J0Lm1pbkhlaWdodD1iLm9mZnNldEhlaWdodD09PTEwMDtjLnN1cHBvcnQuc2VsZWN0c3RhcnQ9Im9uc2V
sZWN0c3RhcnQiaW4gYjthLnJlbW92ZUNoaWxkKGIpLnN0eWxlLmRpc3BsYXk9Im5vbmUifSk7Yy5leHRlbm
QoYy51aSx7cGx1Z2luOnthZGQ6ZnVuY3Rpb24oYSxiLGQpe2E9Yy51aVthXS5wcm90b3R5cGU7Zm9yKHZhc
iBlIGluIGQpe2EucGx1Z2luc1tlXT1hLnBsdWdpbnNbZV18fFtdO2EucGx1Z2luc1tlXS5wdXNoKFtiLGRb
ZV1dKX19LGNhbGw6ZnVuY3Rpb24oYSxiLGQpe2lmKChiPWEucGx1Z2luc1tiXSkmJmEuZWxlbWVudFswXS5
wYXJlbnROb2RlKWZvcih2YXIgZT0wO2U8Yi5sZW5ndGg7ZSsrKWEub3B0aW9uc1tiW2VdWzBdXSYmCmJbZV
1bMV0uYXBwbHkoYS5lbGVtZW50LGQpfX0sY29udGFpbnM6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZG9jdW1lb
nQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/YS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihiKSYxNjphIT09
YiYmYS5jb250YWlucyhiKX0saGFzU2Nyb2xsOmZ1bmN0aW9uKGEsYil7aWYoYyhhKS5jc3MoIm92ZXJmbG9
3Iik9PT0iaGlkZGVuIilyZXR1cm4gZmFsc2U7Yj1iJiZiPT09ImxlZnQiPyJzY3JvbGxMZWZ0Ijoic2Nyb2
xsVG9wIjt2YXIgZD1mYWxzZTtpZihhW2JdPjApcmV0dXJuIHRydWU7YVtiXT0xO2Q9YVtiXT4wO2FbYl09M
DtyZXR1cm4gZH0saXNPdmVyQXhpczpmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGE+YiYmYTxiK2R9LGlzT3Zl
cjpmdW5jdGlvbihhLGIsZCxlLGgsaSl7cmV0dXJuIGMudWkuaXNPdmVyQXhpcyhhLGQsaCkmJmMudWkuaXN
PdmVyQXhpcyhiLGUsaSl9fSl9fSkoalF1ZXJ5KTs=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/js/ui.core.js,importbuddy/js/ui.core
.js
###PACKDATA,FILE_START,/_importbuddy/importbuddy/lib/index.php,importbuddy/lib/inde
x.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/lib/index.php,importbuddy/lib/index.
php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/_assets.php,importbuddy/view
s/_assets.php
PD9waHAKcGJfYmFja3VwYnVkZHk6OmxvYWRfc3R5bGUoICdzdHlsZS5jc3MnICk7CnBiX2JhY2t1cGJ1ZGR
5Ojpsb2FkX3N0eWxlKCAnbnByb2dyZXNzLmNzcycgKTsKcGJfYmFja3VwYnVkZHk6OmxvYWRfc3R5bGUoIC
dhbmltYXRlLmNzcycgKTsKCnBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3NjcmlwdCggJ2pxdWVyeS5qcycgKTsKc
GJfYmFja3VwYnVkZHk6OmxvYWRfc2NyaXB0KCAndWkuY29yZS5qcycgKTsKcGJfYmFja3VwYnVkZHk6Omxv
YWRfc2NyaXB0KCAndG9vbHRpcC5qcycgKTsKcGJfYmFja3VwYnVkZHk6OmxvYWRfc2NyaXB0KCAnbnByb2d
yZXNzLmpzJyApOwpwYl9iYWNrdXBidWRkeTo6bG9hZF9zY3JpcHQoICdpbXBvcnRidWRkeS5qcycgKTs=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/_assets.php,importbuddy/views/
_assets.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/_dbreplace.php,importbuddy/v
iews/_dbreplace.php
PD9waHAKaWYgKCAhIGlzX2FkbWluKCkgKSB7IC8vIE5vdCBpbiBXb3JkUHJlc3MgKG9yIG5vdCBsb2dnZWQ
gaW4pLiBDaGVjayBpZiBpbiBJbXBvcnRCdWRkeS4KCWlmICggISBkZWZpbmVkKCAnUEJfSU1QT1JUQlVERF
knICkgfHwgKCB0cnVlICE9PSBQQl9JTVBPUlRCVUREWSApICkgeyAvLyBOb3QgaW4gSW1wb3J0QnVkZHkuC
gkJZGllKCAnPGh0bWw+PC9odG1sPicgKTsKCX0KCS8vIEluIEltcG9ydEJ1ZGR5IHNvIGNoZWNrIGF1dGhl
bnRpY2F0aW9uLgoJQXV0aDo6cmVxdWlyZV9hdXRoZW50aWNhdGlvbigpOyAvLyBEaWUgaWYgbm90IGxvZ2d
lZCBpbi4KfQoKcGJfYmFja3VwYnVkZHk6OmxvYWRfc3R5bGUoICdhZG1pbi5jc3MnICk7Cmdsb2JhbCAkd3
BkYjsKCgplY2hvICc8YSBuYW1lPSJkYXRhYmFzZV9yZXBsYWNlIj48L2E+JzsKZWNobyAnVGhpcyB0b29sI
GFsbG93cyB5b3UgdG8gYXV0b21hdGljYWxseSByZXBsYWNlIHRleHQgY29udGFpbmVkIHRocm91Z2hvdXQg
eW91ciBXb3JkUHJlc3MgZGF0YWJhc2UuPGJyPic7CmVjaG8gJzxicj48Yj5Ob3RlOjwvYj4gSW1wb3J0QnV
kZHkgYXV0b21hdGljYWxseSBoYW5kbGVzIG1pZ3JhdGluZyAmIHJlcGxhY2luZyB5b3VyIHNpdGUgVVJMcy
BhbmQgZmlsZSBwYXRocyBkdXJpbmcgcmVzdG9yZS9taWdyYXRpb247IHRoaXMgdG9vbCBpcyBub3QgbmVlZ
GVkIGZvciBub3JtYWwgYmFja3VwIC8gcmVzdG9yZSBvcGVyYXRpb25zLic7CmVjaG8gJzxwPjxiPlRpcDo8
L2I+IFdoZW4gcmVwbGFjaW5nIGEgc2l0ZSBhZGRyZXNzIHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIFV
STCBzbyBtdWx0aXBsZSBwYXNzZXMgYXQgcmVwbGFjZW1lbnRzIG1heSBuZWVkIHRvIGJlIG1hZGUuIEllLi
BodHRwOi8vc2l0ZS5jb20sIGh0dHA6Ly88Yj53d3cuPC9iPnNpdGUuY29tLCBodHRwPGI+czwvYj46Ly9za
XRlLmNvbSwgZXRjLjwvcD4nOwplY2hvICc8cD48aW1nIHNyYz0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwbHVn
aW5fdXJsKCkgLiAnL2ltYWdlcy9idWxsZXRfZXJyb3IucG5nIiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0
zcHg7Ij4gQ2F1dGlvbjogVGhpcyBpcyBhbiBhZHZhbmNlZCBmZWF0dXJlLiBVc2Ugd2l0aCBjYXJlOyBpbX
Byb3BlciB1c2UgbWF5IHJlc3VsdCBpbiBkYXRhIGxvc3MuPC9wPic7CmVjaG8gJzxicj4nOwoKCmlmICggc
GJfYmFja3VwYnVkZHk6Ol9HRVQoICdkYXRhYmFzZV9yZXBsYWNlJyApID09ICcxJyApIHsKCQoJZ2xvYmFs
ICRwYl9iYWNrdXBidWRkeV9qc19zdGF0dXM7CgkkcGJfYmFja3VwYnVkZHlfanNfc3RhdHVzID0gdHJ1ZTs
KCQoJCgllY2hvICc8ZGl2IGlkPSJwYl9pbXBvcnRidWRkeV93b3JraW5nIj48aW1nIHNyYz0iJyAuIHBiX2
JhY2t1cGJ1ZGR5OjpwbHVnaW5fdXJsKCkgLiAnL2ltYWdlcy9sb2FkaW5nX2xhcmdlLmdpZiIgdGl0bGU9I
ldvcmtpbmcuLi4gUGxlYXNlIHdhaXQgYXMgdGhpcyBtYXkgdGFrZSBhIG1vbWVudC4uLiI+PC9kaXY+JzsK
CWVjaG8gJzxzY3JpcHQ+alF1ZXJ5KCIjcGJfYmFja3VwYnVkZHlfc3RhdHVzX3dyYXAiKS5zaG93KCk7PC9
zY3JpcHQ+JzsKCXBiX2JhY2t1cGJ1ZGR5OjpmbHVzaCgpOwoJLy9lY2hvICc8ZGl2IGlkPSJwYl9iYWNrdX
BidWRkeV9yZXBsYWNlX3dvcmtpbmciPjxpbWcgc3JjPSInIC4gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91c
mwoKSAuICcvaW1hZ2VzL2xvYWRpbmdfbGFyZ2UuZ2lmIiB0aXRsZT0iV29ya2luZy4uLiBQbGVhc2Ugd2Fp
dCBhcyB0aGlzIG1heSB0YWtlIGEgbW9tZW50Li4uIj48L2Rpdj4nOwoJCgkvLyBJbnN0YW50aWF0ZSBkYXR
hYmFzZSByZXBsYWNlbWVudCBjbGFzcy4KCXJlcXVpcmVfb25jZSggcGJfYmFja3VwYnVkZHk6OnBsdWdpbl
9wYXRoKCkgLiAnL2xpYi9kYnJlcGxhY2UvZGJyZXBsYWNlLnBocCcgKTsKCSRkYnJlcGxhY2UgPSBuZXcgc
Gx1Z2luYnVkZHlfZGJyZXBsYWNlKCAnJywgMSwgNjAqNjAqMjQgKTsKCQoJLy8gU2V0IHVwIHZhcmlhYmxl
cyBieSBnZXR0aW5nIFBPU1QgZGF0YS4KCSRuZWVkbGUgPSBiYWNrdXBidWRkeV9jb3JlOjpkYmVzY2FwZSg
gcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnbmVlZGxlJyApICk7CglpZiAoICRuZWVkbGUgPT0gJycgKSB7Cg
kJZWNobyAnPGI+RXJyb3IgIzQ0NTY1ODIuIE1pc3NpbmcgbmVlZGxlLiBZb3UgbXVzdCBlbnRlciB0ZXh0I
HRvIHNlYXJjaCBmb3IuJzsKCQllY2hvICc8YnI+PGEgaHJlZj0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwYWdl
X3VybCgpIC4gJyZwYXJlbnRfY29uZmlnPScgLiBodG1sZW50aXRpZXMoIHBiX2JhY2t1cGJ1ZGR5OjpfR0V
UKCAncGFyZW50X2NvbmZpZycgKSApIC4gJyIgY2xhc3M9ImJ1dHRvbiBzZWNvbmRhcnktYnV0dG9uIj4mbG
FycjsgJyAuICBfXyggJ2JhY2snLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICc8L2E+JzsKCQlyZXR1c
m47Cgl9CgkkcmVwbGFjZW1lbnQgPSBiYWNrdXBidWRkeV9jb3JlOjpkYmVzY2FwZSggcGJfYmFja3VwYnVk
ZHk6Ol9QT1NUKCAncmVwbGFjZW1lbnQnICkgKTsKCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWd
lJywgJ1JlcGxhY2luZyBgJyAuICRuZWVkbGUgLiAnYCB3aXRoIGAnIC4gJHJlcGxhY2VtZW50IC4gJ2AuJy
ApOwoJLyoKCWlmICggcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnbWF5YmVfc2VyaWFsaXplZCcgKSA9PSAnd
HJ1ZScgKSB7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnQWNjb3VudGluZyBmb3Ig
c2VyaWFsaXplZCBkYXRhIGJhc2VkIG9uIHNldHRpbmdzLicgKTsKCQkkbWF5YmVfc2VyaWFsaXplZCA9IHR
ydWU7Cgl9IGVsc2UgewoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ05PVCBhY2NvdW
50aW5nIGZvciBzZXJpYWxpemVkIGRhdGEgYmFzZWQgb24gc2V0dGluZ3MuIFVzZSB3aXRoIGNhdXRpb24uJ
yApOwoJCSRtYXliZV9zZXJpYWxpemVkID0gZmFsc2U7Cgl9CgkqLwoJCgkKCS8vIFJlcGxhY2UgYmFzZWQg
b24gdGhlIHR5cGUgb2YgdGFibGUgcmVwbGFjZW1lbnQgc2VsZWN0ZWQuCglpZiAoIHBiX2JhY2t1cGJ1ZGR
5OjpfUE9TVCggJ3RhYmxlX3NlbGVjdGlvbicgKSA9PSAnYWxsJyApIHsgLy8gQWxsIHRhYmxlcy4KCQkKCQ
lwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdSZXBsYWNpbmcgaW4gYWxsIHRhYmxlcyBiY
XNlZCBvbiBzZXR0aW5ncy4nICk7CgkJCgkJJHJlc3VsdHMgPSAkd3BkYi0+Z2V0X3Jlc3VsdHMoICJTSE9X
IFRBQkxFUyIsIEFSUkFZX04gKTsKCQlmb3JlYWNoKCAkcmVzdWx0cyBhcyAkcmVzdWx0ICkgewoJCQlwYl9
iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdSZXBsYWNpbmcgaW4gdGFibGUgYCcgLiAkcmVzdW
x0WzBdIC4gJ2AuJyApOwoJCQkkZGJyZXBsYWNlLT5icnV0ZWZvcmNlX3RhYmxlKCAkcmVzdWx0WzBdLCBhc
nJheSggJG5lZWRsZSApLCBhcnJheSggJHJlcGxhY2VtZW50ICkgKTsKCQl9CgkJCgkJcGJfYmFja3VwYnVk
ZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnUmVwbGFjZW1lbnQgZmluaXNoZWQuJyApOwoJCQoJfSBlbHNlaWY
gKCBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICd0YWJsZV9zZWxlY3Rpb24nICkgPT0gJ3NpbmdsZV90YWJsZS
cgKSB7CgkJCgkJJHRhYmxlID0gYmFja3VwYnVkZHlfY29yZTo6ZGJlc2NhcGUoIHBiX2JhY2t1cGJ1ZGR5O
jpfUE9TVCggJ3RhYmxlJyApICk7IC8vIFNpbmdsZSBzcGVjaWZpZWQgdGFibGUuCgkJcGJfYmFja3VwYnVk
ZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnUmVwbGFjaW5nIGluIHNpbmdsZSB0YWJsZSBgJyAuICR0YWJsZSA
uICdgIGJhc2VkIG9uIHNldHRpbmdzLicgKTsKCQkkZGJyZXBsYWNlLT5icnV0ZWZvcmNlX3RhYmxlKCAkdG
FibGUsIGFycmF5KCAkbmVlZGxlICksIGFycmF5KCAkcmVwbGFjZW1lbnQgKSApOwoJCXBiX2JhY2t1cGJ1Z
GR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ1JlcGxhY2VtZW50IGZpbmlzaGVkLicgKTsKCQkKCX0gZWxzZWlm
ICggcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAndGFibGVfc2VsZWN0aW9uJyApID09ICdwcmVmaXgnICkgeyA
vLyBNYXRjaGluZyB0YWJsZSBwcmVmaXguCgkJCgkJJHByZWZpeCA9IGJhY2t1cGJ1ZGR5X2NvcmU6OmRiZX
NjYXBlKCBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICd0YWJsZV9wcmVmaXgnICkgKTsKCQlwYl9iYWNrdXBid
WRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdSZXBsYWNpbmcgaW4gYWxsIHRhYmxlcyBtYXRjaGluZyBwcmVm
aXggYCcgLiAkcHJlZml4IC4gJ2AuJyApOwoJCQoJCSRlc2NhcGVkX3ByZWZpeCA9IHN0cl9yZXBsYWNlKCA
nXycsICdcXycsICRwcmVmaXggKTsKCQkkcmVzdWx0cyA9ICR3cGRiLT5nZXRfcmVzdWx0cyggIlNIT1cgVE
FCTEVTIExJS0UgJ3skZXNjYXBlZF9wcmVmaXh9JSciLCBBUlJBWV9OICk7CgkJZm9yZWFjaCggJHJlc3Vsd
HMgYXMgJHJlc3VsdCApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnUmVwbGFj
aW5nIGluIHRhYmxlIGAnIC4gJHJlc3VsdFswXSAuICdgLicgKTsKCQkJJGRicmVwbGFjZS0+YnJ1dGVmb3J
jZV90YWJsZSggJHJlc3VsdFswXSwgYXJyYXkoICRuZWVkbGUgKSwgYXJyYXkoICRyZXBsYWNlbWVudCApIC
k7CgkJfQoJCQoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ1JlcGxhY2VtZW50IGZpb
mlzaGVkLicgKTsKCQkKCX0gZWxzZSB7CgkJZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PmpRdWVyeSgiI3BiX2ltcG9ydGJ1ZGR5X3dvcmtpbmciKS5oaWRlKCk7PC9zY3JpcHQ+JzsKCQlkaWUoICd
FcnJvciAjNDQ1Njg5MzQ4OTM0OTgzNC4gVW5rbm93biBtZXRob2QuJyApOwoJfQoJCgllY2hvICc8c2NyaX
B0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+alF1ZXJ5KCIjcGJfaW1wb3J0YnVkZHlfd29ya2luZyIpLmhpZ
GUoKTs8L3NjcmlwdD4nOwoJZWNobyAnPGJyPjxhIGhyZWY9IicgLiBwYl9iYWNrdXBidWRkeTo6cGFnZV91
cmwoKSAuICcmcGFyZW50X2NvbmZpZz0nIC4gaHRtbGVudGl0aWVzKCBwYl9iYWNrdXBidWRkeTo6X0dFVCg
gJ3BhcmVudF9jb25maWcnICkgKSAuICciIGNsYXNzPSJidXR0b24gc2Vjb25kYXJ5LWJ1dHRvbiI+Jmxhcn
I7ICcgLiAgX18oICdiYWNrJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnPC9hPic7CgkKCSRwYl9iY
WNrdXBidWRkeV9qc19zdGF0dXMgPSBmYWxzZTsKCXJldHVybjsKfQoKCiR0YWJsZXMgPSBhcnJheSgpOwok
cHJlZml4ZXMgPSBhcnJheSgpOwoKLy8gTWFrZSBzdXJlIHRoaXMgV1AncyBwcmVmaXggaXMgaW4gdGhlcmU
gZm9yIHN1cmUgKHVzZWZ1bCBpZiBzb21lb25lIHVzZXMgYSBwcmVmaXggdGhhdCBoYXMgYW4gdW5kZXJzY2
9yZSBpbiBpdDsgdGhleSBzaG91bGRudCBidXQgdGhleSBkbykuCmdsb2JhbCAkdGFibGVfcHJlZml4Owokc
HJlZml4ZXNbXSA9ICR0YWJsZV9wcmVmaXg7CgovLyBDYWxjdWxhdGUgcHJlZml4ZXMgZm91bmQgaW4gdGhp
cyBkYXRhYmFzZS4gRG9lcyBub3QgaGFuZGxlIG11bHRpcGxlLXVuZGVyc2NvcmUKJHJlc3VsdHMgPSAkd3B
kYi0+Z2V0X3Jlc3VsdHMoICJTSE9XIFRBQkxFUyIsIEFSUkFZX04gKTsKZm9yZWFjaCggJHJlc3VsdHMgYX
MgJHJlc3VsdCApIHsKCSR0YWJsZXNbXSA9ICRyZXN1bHRbMF07CglpZiAoIHByZWdfbWF0Y2goICcvW2Ete
kEtWjAtOV0qXyhbMC05XStfKSovaScsICRyZXN1bHRbMF0sICRtYXRjaGVzICkgKSB7CgkJJHByZWZpeGVz
W10gPSAkbWF0Y2hlc1swXTsKCX0KfQoKJHByZWZpeGVzID0gYXJyYXlfdW5pcXVlKCAkcHJlZml4ZXMgKTs
KbmF0c29ydCggJHByZWZpeGVzICk7CgoKPz4KCgo8ZGl2PgoJPGZvcm0gYWN0aW9uPSI8P3BocCBlY2hvIH
BiX2JhY2t1cGJ1ZGR5OjpwYWdlX3VybCgpOz8+JmRhdGFiYXNlX3JlcGxhY2U9MSZwYXJlbnRfY29uZmlnP
Tw/cGhwIGVjaG8gaHRtbGVudGl0aWVzKCBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3BhcmVudF9jb25maWcn
ICkgKTsgPz4iIG1ldGhvZD0icG9zdCI+CgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB
2YWx1ZT0icmVwbGFjZSI+CgkJCgkJPGg0PlJlcGxhY2UgPD9waHAgcGJfYmFja3VwYnVkZHk6OnRpcCggJ1
RleHQgeW91IHdhbnQgdG8gYmUgc2VhcmNoZWQgZm9yIGFuZCByZXBsYWNlZC4gRXZlcnl0aGluZyBpbiB0a
GUgYm94IGlzIGNvbnNpZGVyZWQgb25lIG1hdGNoIGFuZCBtYXkgc3BhbiBtdWx0aXBsZSBsaW5lcy4nICk7
ID8+PC9oND4KCQk8dGV4dGFyZWEgbmFtZT0ibmVlZGxlIiBzdHlsZT0id2lkdGg6IDEwMCU7Ij48L3RleHR
hcmVhPgoJCTxicj4KCQkKCQk8aDQ+V2l0aCA8P3BocCBwYl9iYWNrdXBidWRkeTo6dGlwKCAnVGV4dCB5b3
Ugd2FudCB0byByZXBsYWNlIHdpdGguIEFueSB0ZXh0IGZvdW5kIG1hdGNoaW5nIHRoZSBib3ggYWJvdmUgd
2lsbCBiZSByZXBsYWNlZCB3aXRoIHRoaXMgdGV4dC4gRXZlcnl0aGluZyBpbiB0aGUgYm94IGlzIGNvbnNp
ZGVyZWQgb25lIG1hdGNoIGFuZCBtYXkgc3BhbiBtdWx0aXBsZSBsaW5lcy4nICk7ID8+PC9oND4KCQk8dGV
4dGFyZWEgbmFtZT0icmVwbGFjZW1lbnQiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPjwvdGV4dGFyZWE+CgkJCg
kJPGg0PkluIHRhYmxlKHMpPC9oND4KCQk8bGFiZWwgc3R5bGU9ImZsb2F0OiBub25lOyIgZm9yPSJ0YWJsZ
V9zZWxlY3Rpb25fYWxsIj48aW5wdXQgaWQ9InRhYmxlX3NlbGVjdGlvbl9hbGwiICBjaGVja2VkPSdjaGVj
a2VkJyB0eXBlPSJyYWRpbyIgbmFtZT0idGFibGVfc2VsZWN0aW9uIiB2YWx1ZT0iYWxsIj4gYWxsIHRhYmx
lczwvbGFiZWw+CgkJPGxhYmVsIHN0eWxlPSJmbG9hdDogbm9uZTsiIGZvcj0idGFibGVfc2VsZWN0aW9uX3
ByZWZpeCI+PGlucHV0IGlkPSJ0YWJsZV9zZWxlY3Rpb25fcHJlZml4IiB0eXBlPSJyYWRpbyIgbmFtZT0id
GFibGVfc2VsZWN0aW9uIiB2YWx1ZT0icHJlZml4Ij4gd2l0aCBwcmVmaXg6PC9sYWJlbD4KCQk8c2VsZWN0
IG5hbWU9InRhYmxlX3ByZWZpeCIgaWQ9InRhYmxlX3NlbGVjdGlvbl9wcmVmaXgiIG9uY2xpY2s9ImpRdWV
yeSgnI3RhYmxlX3NlbGVjdGlvbl9wcmVmaXgnKS5jbGljaygpOyI+CgkJCTw/cGhwCgkJCWZvcmVhY2goIC
RwcmVmaXhlcyBhcyAkcHJlZml4ICkgewoJCQkJZWNobyAnPG9wdGlvbiB2YWx1ZT0iJyAuICRwcmVmaXggL
iAnIj4nIC4gJHByZWZpeCAuICc8L29wdGlvbj4nOwoJCQl9CgkJCT8+CgkJPC9zZWxlY3Q+CgkJPGxhYmVs
IHN0eWxlPSJmbG9hdDogbm9uZTsiIGZvcj0idGFibGVfc2VsZWN0aW9uX3RhYmxlIj48aW5wdXQgaWQ9InR
hYmxlX3NlbGVjdGlvbl90YWJsZSIgdHlwZT0icmFkaW8iIG5hbWU9InRhYmxlX3NlbGVjdGlvbiIgdmFsdW
U9InNpbmdsZV90YWJsZSI+IHNpbmdsZTo8L2xhYmVsPgoJCTxzZWxlY3QgbmFtZT0idGFibGUiIGlkPSJ0Y
WJsZV9zZWxlY3Rpb25fdGFibGUiIG9uY2xpY2s9ImpRdWVyeSgnI3RhYmxlX3NlbGVjdGlvbl90YWJsZScp
LmNsaWNrKCk7Ij4KCQkJPD9waHAKCQkJZm9yZWF
jaCggJHRhYmxlcyBhcyAkdGFibGUgKSB7CgkJCQllY2hvICc8b3B0aW9uIHZhbHVlPSInIC4gJHRhYmxlIC
4gJyI+JyAuICR0YWJsZSAuICc8L29wdGlvbj4nOwoJCQl9CgkJCT8+CgkJPC9zZWxlY3Q+CgkJPGg0PkluI
GRhdGFiYXNlPC9oND4KCQkiPD9waHAgZWNobyAkZGF0YWJhc2VTZXR0aW5nc1snbmFtZSddOyA/PiIgb24g
aG9zdCAiPD9waHAgZWNobyAkZGF0YWJhc2VTZXR0aW5nc1snaG9zdCddOyA/PiIgd2l0aCB1c2VybmFtZSA
iPD9waHAgZWNobyAkZGF0YWJhc2VTZXR0aW5nc1sndXNlcm5hbWUnXTsgPz4iLgoJCTw/cGhwCgkJaWYgKC
BzdWJzdHJfY291bnQoICR0YWJsZV9wcmVmaXgsICdfJyApID4gMSApIHsKCQkJZWNobyAnPHNwYW4gY2xhc
3M9InBiX2xhYmVsIHBiX2xhYmVsLXdhcm5pbmciPldhcm5pbmc8L3NwYW4+ICc7CgkJCV9lKCAiU2l0ZSB0
YWJsZSBwcmVmaXggY29udGFpbnMgbXVsdGlwbGUgdW5kZXJzY29yZXMuIFByZWZpeCBsaXN0IG1heSBiZSB
pbmFjY3VyYXRlIGlmIHRoZXNlIGFyZSBub3QgTXVsdGlzaXRlIHN1YnNpdGVzLiIsICdpdC1sMTBuLWJhY2
t1cGJ1ZGR5JyApOwoJCX0KCQkvKgoJCTxoND5XaXRoIGFkdmFuY2VkIG9wdGlvbnM8L2g0PgoJCTxsYWJlb
CBmb3I9Im1heWJlX3NlcmlhbGl6ZWQiPjxpbnB1dCBpZD0ibWF5YmVfc2VyaWFsaXplZCIgdHlwZT0iY2hl
Y2tib3giIG5hbWU9Im1heWJlX3NlcmlhbGl6ZWQiIHZhbHVlPSJ0cnVlIiBjaGVja2VkPSJjaGVja2VkIj4
gVHJlYXQgZmllbGRzIGFzIHBvc3NpYmx5IGNvbnRhaW5pbmcgc2VyaWFsaXplZCBkYXRhICh1bmNoZWNrIH
dpdGggY2F1dGlvbjsgc2xvd2VyKS48L2xhYmVsPgoJCSovCgkJPz48YnI+PGJyPgoJCgkJPHA+CgkJCTxpb
nB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkJlZ2luIFJlcGxhY2VtZW50IiBjbGFz
cz0iYnV0dG9uIGJ1dHRvbi1wcmltYXJ5IiAvPiA8c3BhbiBjbGFzcz0iZGVzY3JpcHRpb24iPkNhdXRpb24
7IHRoaXMgY2Fubm90IGJlIHVuZG9uZS4gU2VyaWFsaXplZCBkYXRhIGlzIGhhbmRsZWQgYnkgdGhpcyByZX
BsYWNlbWVudC48L3NwYW4+CgkJPC9wPgoJPC9mb3JtPgo8L2Rpdj4K
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/_dbreplace.php,importbuddy/vie
ws/_dbreplace.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/_footer.php,importbuddy/view
s/_footer.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9Cj8+Cgo8L2Rpdj4KPC9kaXY+CgoKPC
9ib2R5Pgo8L2h0bWw+Cg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/_footer.php,importbuddy/views/
_footer.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/_header.php,importbuddy/view
s/_header.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9Cj8+CjwhRE9DVFlQRSBodG1sPgo8aH
RtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIgIGRpcj0ibHRyIiBsYW5nPSJlbi1VU
yI+Cgk8aGVhZD4KCQk8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CgkJPHRpdGxlPkltcG9ydEJ1ZGR5IHY8P3Bo
cCBlY2hvIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snYmJfdmVyc2lvbiddOyA/PiBSZXN0b3JlIC8gTWl
ncmF0aW9uIFRvb2wgLSBQb3dlcmVkIGJ5IEJhY2t1cEJ1ZGR5PC90aXRsZT4KCQk8bWV0YSBuYW1lPSJST0
JPVFMiIGNvbnRlbnQ9Ik5PSU5ERVgsIE5PRk9MTE9XIj4KCgkJPD9waHAKCQlyZXF1aXJlKCAnX2Fzc2V0c
y5waHAnICk7CgkJPz4KCgkJPGxpbmsgcmVsPSJpY29uIiB0eXBlPSJpbWFnZS9wbmciIGhyZWY9ImltcG9y
dGJ1ZGR5L2ltYWdlcy9mYXZpY29uLnBuZyI+CgkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgo
JCQl3aW5kb3cub25lcnJvcj1mdW5jdGlvbiggZXJyb3JNc2csIHVybCwgbGluZU51bWJlciwgY29sTnVtYm
VyLCBlcnJvciApewoJCQkJYWxlcnQoICJFcnJvciAjNDM5NzQzOiBBIGphdmFzY3JpcHQgZXJyb3Igb2Njd
XJyZWQgd2hpY2ggTUFZIHByZXZlbnQgdGhlIHJlc3RvcmUgZnJvbSBjb250aW51aW5nLiBfSUZfIHRoZSBw
cm9jZXNzIGxldHMgeW91IHByb2NlZWQgdGhlbiBpZ25vcmUgdGhpcyBtZXNzYWdlLiBDaGVjayB0aGUgU3R
hdHVzIExvZyBvciBicm93c2VyIGVycm9yIGNvbnNvbGUgZm9yIHRyYWNlIGRldGFpbHMuXG5cbk1lc3NhZ2
U6IGAiICsgZXJyb3JNc2cgKyAiYC5cblVSTDogYCIgKyB1cmwgKyAiYC5cbkxpbmU6IGAiICsgbGluZU51b
WJlciArICJgIiApOwoJCQkJYmFja3VwYnVkZHlfbG9nKCAnSmF2YXNjcmlwdCBFcnJvci4gTWVzc2FnZTog
YCcgKyBlcnJvck1zZyArICdgLCBVUkw6IGAnICsgdXJsICsgJ2AsIExpbmU6IGAnICsgbGluZU51bWJlciA
rICdgLCBDb2w6IGAnICsgY29sTnVtYmVyICsgJ2AsIFRyYWNlOiBgJyArIGVycm9yLnN0YWNrICsgJ2AuJy
ApOyAvLyBBdHRlbXB0IHRvIGxvZy4KCQkJfQoKCQkJdmFyIHN0YXR1c0JveDsgLy8gTWFrZSBnbG9iYWwuC
gkJCXZhciBiYWNrdXBidWRkeV9lcnJvcnNfZW5jb3VudGVyZWQgPSAwOyAvLyBudW1iZXIgb2YgZXJyb3Jz
IHNlbnQgdmlhIGxvZy4KCgkJCWZ1bmN0aW9uIHBiX3N0YXR1c19hcHBlbmQoIGpzb24gKSB7CgkJCQlpZiA
oICd1bmRlZmluZWQnID09PSB0eXBlb2Ygc3RhdHVzQm94ICkgeyAvLyBObyBzdGF0dXMgYm94IHlldCBzby
BtYXkgbmVlZCB0byBjcmVhdGUgaXQuCgkJCQkJc3RhdHVzQm94ID0galF1ZXJ5KCAnI2JhY2t1cGJ1ZGR5X
21lc3NhZ2VzJyApOwoJCQkJCWlmKCBzdGF0dXNCb3gubGVuZ3RoID09IDAgKSB7IC8vIE5vIHN0YXR1cyBi
b3ggeWV0IHNvIHN1cHByZXNzLgoJCQkJCQlyZXR1cm47CgkJCQkJfQoJCQkJfQoKCQkJCWlmICggJ3N0cml
uZycgPT0gKCB0eXBlb2YganNvbiApICkgewoJCQkJCWJhY2t1cGJ1ZGR5X2xvZygganNvbiApOwoJCQkJCW
NvbnNvbGUubG9nKCAnU3RhdHVzIGxvZyByZWNlaXZlZCBzdHJpbmc6ICcgKyBqc29uICk7CgkJCQkJcmV0d
XJuOwoJCQkJfQoKCQkJCS8vIFVzZWQgaW4gQmFja3VwQnVkZHkgX2JhY2t1cC1wZXJmb3JtLnBocCBhbmQg
SW1wb3J0QnVkZHkgX2hlYWRlci5waHAKCQkJCWpzb24uZGF0ZSA9IG5ldyBEYXRlKCk7CgkJCQlqc29uLmR
hdGUgPSBuZXcgRGF0ZSggICgganNvbi50aW1lICogMTAwMCApICsganNvbi5kYXRlLmdldFRpbWV6b25lT2
Zmc2V0KCkgKiA2MDAwMCApOwoJCQkJdmFyIHNlY29uZHMgPSBqc29uLmRhdGUuZ2V0U2Vjb25kcygpOwoJC
QkJaWYgKCBzZWNvbmRzIDwgMTAgKSB7CgkJCQkJc2Vjb25kcyA9ICcwJyArIHNlY29uZHM7CgkJCQl9CgkJ
CQlqc29uLmRhdGUgPSBiYWNrdXBidWRkeV9ob3VycGFkKCBqc29uLmRhdGUuZ2V0SG91cnMoKSApICsgJzo
nICsganNvbi5kYXRlLmdldE1pbnV0ZXMoKSArICc6JyArIHNlY29uZHM7CgoJCQkJdHJpZ2dlckV2ZW50ID
0gJ2JhY2t1cGJ1ZGR5XycgKyBqc29uLmV2ZW50OwoKCgkJCQkvLyBMb2cgbm9uLXRleHQgZXZlbnRzLgoJC
QkJaWYgKCAoICdkZXRhaWxzJyAhPT0ganNvbi5ldmVudCApICYmICggJ21lc3NhZ2UnICE9PSBqc29uLmV2
ZW50ICkgJiYgKCAnZXJyb3InICE9PSBqc29uLmV2ZW50ICkgKSB7CgkJCQkJLy9jb25zb2xlLmxvZyggJ05
vbi10ZXh0IGV2ZW50IGAnICsgdHJpZ2dlckV2ZW50ICsgJ2AuJyApOwoJCQkJfSBlbHNlIHsKCQkJCQkvL2
NvbnNvbGUubG9nKCBqc29uLmRhdGEgKTsKCQkJCX0KCQkJCS8vY29uc29sZS5sb2coICd0cmlnZ2VyOiAnI
CsgdHJpZ2dlckV2ZW50ICk7CgoJCQkJalF1ZXJ5KCcjYmFja3VwYnVkZHlfbWVzc2FnZXMnKS50cmlnZ2Vy
KCB0cmlnZ2VyRXZlbnQsIFtqc29uXSApOwoKCgkJCX0gLy8gRW5kIGZ1bmN0aW9uIHBiX3N0YXR1c19hcHB
lbmQoKS4KCgoJCQkvLyBVc2VkIGluIEJhY2t1cEJ1ZGR5IF9iYWNrdXAtcGVyZm9ybS5waHAgYW5kIEltcG
9ydEJ1ZGR5IF9oZWFkZXIucGhwIGFuZCBfcm9sbGJhY2sucGhwCgkJCWZ1bmN0aW9uIGJhY2t1cGJ1ZGR5X
2xvZygganNvbiwgY2xhc3NUeXBlICkgewoJCQkJaWYgKCAndW5kZWZpbmVkJyA9PT0gdHlwZW9mIHN0YXR1
c0JveCApIHsgLy8gTm8gc3RhdHVzIGJveCB5ZXQgc28gbWF5IG5lZWQgdG8gY3JlYXRlIGl0LgoJCQkJCXN
0YXR1c0JveCA9IGpRdWVyeSggJyNiYWNrdXBidWRkeV9tZXNzYWdlcycgKTsKCQkJCQlpZiggc3RhdHVzQm
94Lmxlbmd0aCA9PSAwICkgeyAvLyBObyBzdGF0dXMgYm94IHlldCBzbyBzdXBwcmVzcy4KCQkJCQkJcmV0d
XJuOwoJCQkJCX0KCQkJCX0KCgkJCQltZXNzYWdlID0gJyc7CgoJCQkJaWYgKCAnc3RyaW5nJyA9PSAoIHR5
cGVvZiBqc29uICkgKSB7CgkJCQkJaWYgKCAnJyAhPT0gY2xhc3NUeXBlICkgewoJCQkJCQlqc29uID0gJzx
zcGFuIGNsYXNzPSJiYWNrdXBidWRkeV9sb2dfJyArIGNsYXNzVHlwZSArICciPicgKyBqc29uICsgJzwvc3
Bhbj4nOwoJCQkJCX0KCQkJCQltZXNzYWdlID0gIi0tLS0tLS0tLS0tXHRcdC0tLS0tLS1cdC0tLS0tLS1cd
CIgKyBqc29uOwoJCQkJfSBlbHNlIHsKCQkJCQlpZiAoICcnICE9PSBjbGFzc1R5cGUgKSB7CgkJCQkJCWpz
b24uZGF0YSA9ICc8c3BhbiBjbGFzcz0iYmFja3VwYnVkZHlfbG9nXycgKyBjbGFzc1R5cGUgKyAnIj4nICs
ganNvbi5kYXRhICsgJzwvc3Bhbj4nOwoJCQkJCX0KCQkJCQltZXNzYWdlID0ganNvbi5kYXRlICsgJy4nIC
sganNvbi51ICsgIiBcdCIgKyBqc29uLnJ1biArICJzZWMgXHQiICsganNvbi5tZW0gKyAiTUJcdCIgKyBqc
29uLmRhdGE7CgkJCQl9CgoJCQkJc3RhdHVzQm94LmFwcGVuZCggIlxyXG4iICsgbWVzc2FnZSApOwoJCQkJ
c3RhdHVzQm94LnNjcm9sbFRvcCggc3RhdHVzQm94WzBdLnNjcm9sbEhlaWdodCAtIHN0YXR1c0JveC5oZWl
naHQoKSApOwoKCQkJfQoKCgkJCS8vIFRyaWdnZXIgYW4gZXJyb3IgdG8gYmUgbG9nZ2VkLCBkaXNwbGF5ZW
QsIGV0Yy4KCQkJLy8gUmV0dXJucyB1cGRhdGVkIG1lc3NhZ2Ugd2l0aCB0cm91YmxlIFVSTCwgZXRjLgoJC
QkvLyBVc2VkIGluIEJhY2t1cEJ1ZGR5IF9iYWNrdXAtcGVyZm9ybS5waHAgYW5kIEltcG9ydEJ1ZGR5IF9o
ZWFkZXIucGhwCgkJCWZ1bmN0aW9uIGJhY2t1cGJ1ZGR5RXJyb3IoIG1lc3NhZ2UgKSB7CgoJCQkJLy8gR2V
0IHN0YXJ0IG9mIGFueSBlcnJvciBudW1iZXJzLgoJCQkJdHJvdWJsZVVSTCA9ICcnOwoJCQkJZXJyb3Jfbn
VtYmVyX2JlZ2luID0gbWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoICdlcnJvciAjJyApOwoKCQkJC
WlmICggZXJyb3JfbnVtYmVyX2JlZ2luID49IDAgKSB7CgkJCQkJZXJyb3JfbnVtYmVyX2JlZ2luICs9IDc7
IC8vIFNoaWZ0IG92ZXIgaW5kZXggdG8gYWZ0ZXIgJ2Vycm9yICMnLgoJCQkJCWVycm9yX251bWJlcl9lbmQ
gPSBtZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZiggJzonLCBlcnJvcl9udW1iZXJfYmVnaW4gKTsKCQ
kJCQlpZiAoIGVycm9yX251bWJlcl9lbmQgPCAwICkgeyAvLyBFbmQgc3RpbGwgbm90IGZvdW5kLgoJCQkJC
QllcnJvcl9udW1iZXJfZW5kID0gbWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoICcuJywgZXJyb3Jf
bnVtYmVyX2JlZ2luICk7CgkJCQkJfQoJCQkJCWlmICggZXJyb3JfbnVtYmVyX2VuZCA8IDAgKSB7IC8vIEV
uZCBzdGlsbCBub3QgZm91bmQuCgkJCQkJCWVycm9yX251bWJlcl9lbmQgPSBtZXNzYWdlLnRvTG93ZXJDYX
NlKCkuaW5kZXhPZiggJyAnLCBlcnJvcl9udW1iZXJfYmVnaW4gKTsKCQkJCQl9CgkJCQkJZXJyb3JfbnVtY
mVyID0gbWVzc2FnZS5zbGljZSggZXJyb3JfbnVtYmVyX2JlZ2luLCBlcnJvcl9udW1iZXJfZW5kICk7CgkJ
CQkJdHJvdWJsZVVSTCA9ICdodHRwczovL2l0aGVtZXNoZWxwLnplbmRlc2suY29tL2hjL2VuLXVzL2FydGl
jbGVzLzIxMTEzMjM3Ny1FcnJvci1Db2Rlcy0jJyArIGVycm9yX251bWJlcjsKCQkJCX0KCgkJCQlpZiAoIC
cnICE9PSB0cm91YmxlVVJMICkgewoJCQkJCS8vIERpc3BsYXkgZXJyb3IgaW4gZXJyb3IgZGl2IHdpdGggY
2xhc3MgZXJyb3JfYWxlcnRfYm94LgoJCQkJCW1lc3NhZ2UgPSBtZXNzYWdlICsgJyA8YSBocmVmPSInICsg
dHJvdWJsZVVSTCArICciIHRhcmdldD0iX2JsYW5rIj5DbGljayB0byA8Yj52aWV3IGVycm9yIGRldGFpbHM
8L2I+IGluIHRoZSBLbm93bGVkZ2UgQmFzZTwvYT4nOwoJCQkJfQoJCQkJalF1ZXJ5KCAnLmJhY2t1cGJ1ZG
R5X2Vycm9yX2xpc3QnICkuYXBwZW5kKCAnPGxpPicgKyAgbWVzc2FnZSArICc8L2xpPicgKTsKCQkJCWpRd
WVyeSggJy5lcnJvcl9hbGVydF9ib3gnICkuc2hvdygpOwoKCQkJCS8vIERpc3BsYXkgZXJyb3IgYm94IHRv
IG1ha2UgaXQgY2xlYXIgZXJyb3JzIHdlcmUgZW5jb3VudGVyZWQuCgkJCQliYWNrdXBidWRkeV9lcnJvcnN
fZW5jb3VudGVyZWQrKzsKCQkJCWpRdWVyeSggJyNiYWNrdXBidWRkeV9lcnJvcnNfbm90aWNlX2NvdW50Jy
ApLnRleHQoIGJhY2t1cGJ1ZGR5X2Vycm9yc19lbmNvdW50ZXJlZCApOwoJCQkJalF1ZXJ5KCAnI2JhY2t1c
GJ1ZGR5X2Vycm9yc19ub3RpY2UnICkuc2xpZGVEb3duKCk7CgoJCQkJLy8gSWYgdGhlIHdvcmQgZXJyb3Ig
aXMgbm93aGVyZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSB0aGVuIGFkZCBpbiBlcnJvciBwcmVmaXguCgkJCQl
pZiAoIG1lc3NhZ2UudG9Mb3dlckNhc2UoKS5pbmRleE9mKCAnZXJyb3InICkgPCAwICkgewoJCQkJCW1lc3
NhZ2UgPSAnRVJST1I6ICcgKyBtZXNzYWdlOwoJCQkJfQoKCgkJCQlyZXR1cm4gbWVzc2FnZTsgLy8gUmV0d
XJuIHVwZGF0ZWQgZXJyb3IgbWVzc2FnZSB3aXRoIHRyb3VibGUgVVJMLgoJCQl9IC8vIGVuZCBiYWNrdXBi
dWRkeUVycm9yKCkuCgoKCQkJLy8gVXNlZCBpbiBCYWNrdXBCdWRkeSBfYmFja3VwLXBlcmZvcm0ucGhwIGF
uZCBJbXBvcnRCdWRkeSBfaGVhZGVyLnBocAoJCQlmdW5jdGlvbiBiYWNrdXBidWRkeVdhcm5pbmcoIG1lc3
NhZ2UgKSB7CgkJCQlqUXVlcnkoICcuYmFja3VwYnVkZHlfd2FybmluZ19saXN0JyApLmFwcGVuZCggJzxsa
T4nICsgIG1lc3NhZ2UgKyAnPC9saT4nICk7CgkJCQkvL2pRdWVyeSggJy53YXJuaW5nX2FsZXJ0X2JveCcg
KS5zaG93KCk7CgkJCQlyZXR1cm4gJ1dhcm5pbmc6ICcgKyBtZXNzYWdlOwoJCQl9IC8vIGVuZCBiYWNrdXB
idWRkeVdhcm5pbmcoKS4KCgkJCS8vIGxlZnQgaG91ciBwYWQgd2l0aCB6ZXJvcwoJCQlmdW5jdGlvbiBiYW
NrdXBidWRkeV9ob3VycGFkKG4pIHsgcmV0dXJuICgiMCIgKyBuKS5zbGljZSgtMik7IH0KCgkJCWZ1bmN0a
W9uIHJhbmRvbVN0cmluZyhsZW5ndGgsIGNoYXJzKSB7CgkJCQl2YXIgcmVzdWx0ID0gJyc7CgkJCQlmb3Ig
KHZhciBpID0gbGVuZ3RoOyBpID4gMDsgLS1pKSByZXN1bHQgKz0gY2hhcnNbTWF0aC5yb3VuZChNYXRoLnJ
hbmRvbSgpICogKGNoYXJzLmxlbmd0aCAtIDEpKV07CgkJCQlyZXR1cm4gcmVzdWx0OwoJCQl9CgoKCQk8L3
NjcmlwdD4KCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJpbXBvcnRidWRkeS9qcy9qc
XVlcnkubGVhbk1vZGFsLm1pbi5qcyI+PC9zY3JpcHQ+CgkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iaW1wb3J0YnVkZHkvanMvZWpzLmpzIj48L3NjcmlwdD4KCQk8c2NyaXB0IHR5cGU9InRleHQ
vamF2YXNjcmlwdCIgc3JjPSJpbXBvcnRidWRkeS9qcy9tYWluLmpzIj48L3NjcmlwdD4KCQk8c2NyaXB0IH
R5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJpbXBvcnRidWRkeS9qcy9yZXN0b3JlRXZlbnRzLmpzIj48L
3NjcmlwdD4KCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJCUVKUy5jb25maWcoe2NhY2hl
OiBmYWxzZX0pOwoKCQkJd2luZG93LnJlc3RvcmVEYXRhID0ge307CgoJCQlqUXVlcnkoZG9jdW1lbnQpLnJ
lYWR5KGZ1bmN0aW9uKCkgewoJCQkJalF1ZXJ5KCcubGVhbk1vZGFsJykubGVhbk1vZGFsKAoJCQkJCXsgdG
9wIDogNDUsIG92ZXJsYXkgOiAwLjQsIGNsb3NlQnV0dG9uOiAiLm1vZGFsX2Nsb3NlIiB9CgkJCQkpOwoKC
QkJCS8qIE1ENSBIYXNoIEJ1dHRvbiBDbGlja2VkICovCgkJCQlqUXVlcnkoICcudmlld19oYXNoX2NsaWNr
JyApLmNsaWNrKCBmdW5jdGlvbigpIHsKCQkJCQlqUXVlcnkoJyNoYXNoX3ZpZXdfbG9hZGluZycpLnNob3c
oKTsKCQkJCQlqUXVlcnkoJyNoYXNoX3ZpZXdfcmVzcG9uc2UnKS5oaWRlKCk7CgoJCQkJCXZhciBiYWNrdX
BGaWxlID0galF1ZXJ5KHRoaXMpLmF0dHIoICdkYXRhLWZpbGUnICk7CgkJCQkJalF1ZXJ5LmFqYXgoewoJC
QkJCQl0eXBlOiAnUE9TVCcsCgkJCQkJCXVybDogJ2ltcG9ydGJ1ZGR5LnBocCcsCgkJCQkJCWRhdGE6IHsK
CQkJCQkJCWFqYXg6ICdmaWxlX2hhc2gnLAoJCQkJCQkJZmlsZTogYmFja3VwRmlsZQoJCQkJCQl9LAoJCQk
JCQlkYXRhVHlwZTogJ2pzb24nCgkJCQkJfSkuZG9uZSggZnVuY3Rpb24oZGF0YSkgewoJCQkJCQlqUXVlcn
koJyNoYXNoX3ZpZXdfcmVzcG9uc2UnKS5odG1sKCAnPGI+Q2hlY2tzdW0gKE1ENSBoYXNoKTo8L2I+IDxpb
nB1dCB0eXBlPSJ0ZXh0IiByZWFkb25seT0idHJ1ZSIgdmFsdWU9IicgKyBkYXRhLmhhc2ggKyAnIiBzdHls
ZT0id2lkdGg6IDQwMHB4OyI+JyApOwoJCQkJCQlqUXVlcnkoJyNoYXNoX3ZpZXdfbG9hZGluZycpLmhpZGU
oKTsKCQkJCQkJalF1ZXJ5KCcjaGFzaF92aWV3X3Jlc3BvbnNlJykuc2hvdygpOwoJCQkJCX0pLmZhaWwoIG
Z1bmN0aW9uKCBqcVhIUiwgdGV4dFN0YXR1cywgZXJyb3JUaHJvd24gKXsKCQkJCQkJalF1ZXJ5KCcjaGFza
F92aWV3X3Jlc3BvbnNlJykuaHRtbCggJ0Vycm9yOiBgJyArIGpxWEhSLnJlc3BvbnNlVGV4dCArICdgLicg
KTsKCQkJCQkJalF1ZXJ5KCcjaGFzaF92aWV3X2x
vYWRpbmcnKS5oaWRlKCk7CgkJCQkJCWpRdWVyeSgnI2hhc2hfdmlld19yZXNwb25zZScpLnNob3coKTsKCQ
kJCQl9KTsKCQkJCX0pOwoKCgoJCQkJalF1ZXJ5KCAnLm1haW5fYm94JyApLm9uKCAnc3VibWl0JywgJ2Zvc
m0nLCBmdW5jdGlvbihlKSB7CgkJCQkJaWYgKCAnbWluaUZyYW1lJyA9PSBqUXVlcnkodGhpcykuYXR0cigg
J3RhcmdldCcgKSApIHsKCQkJCQkJTlByb2dyZXNzLnN0YXJ0KCk7CgkJCQkJfQoJCQkJCXJldHVybiB0cnV
lOwoJCQkJfSk7CgoJCQkJLy8gUHJlLWxvYWQgZmluYWwgc3RlcHMgc28gaXQgY2FuIGJlIGRpc3BsYXllZC
BldmVuIHRob3VnaCBkZWxldGVkLgoJCQkJd2luZG93LnN0ZXBUZW1wbGF0ZUNsZWFudXBTZXR0aW5ncyA9I
G5ldyBFSlMoe3VybDogJ2ltcG9ydGJ1ZGR5L3ZpZXdzL2NsZWFudXBTZXR0aW5ncy5odG0nfSk7CgkJCQl3
aW5kb3cuc3RlcFRlbXBsYXRlZmluYWxDbGVhbnVwID0gbmV3IEVKUyh7dXJsOiAnaW1wb3J0YnVkZHkvdml
ld3MvZmluYWxDbGVhbnVwLmh0bSd9KTsKCgkJCX0pOwoKCgkJCWZ1bmN0aW9uIGJiX2FjdGlvbiggYWN0aW
9uLCBub3RlICkgewoJCQkJY29uc29sZS5sb2coICdiYl9hY3Rpb246IGAnICsgYWN0aW9uICsgJ2AuJyApO
woJCQkJaWYgKCAndW56aXBTdWNjZXNzJyA9PSBhY3Rpb24gKSB7CgkJCQl9IGVsc2UgaWYgKCAnaWZyYW1l
TG9hZGVkJyA9PSBhY3Rpb24gKSB7IC8vIEhpZGUgaWZyYW1lIGxvYWRpbmcgZ3JhcGhpYy4KCQkJCQkvL05
Qcm9ncmVzcy5kb25lKCk7CgkJCQl9IGVsc2UgaWYgKCAnaW1wb3J0aW5nVGFibGUnID09IGFjdGlvbiApIH
sKCQkJCQlqUXVlcnkoJyNpbXBvcnRpbmdEYXRhYmFzZS1wcm9ncmVzc01lc3NhZ2UnKS50ZXh0KCAnUmVzd
G9yaW5nICcgKyBub3RlICsgJyAuLi4nICk7IC8vIG5vdGUgY29udGFpbnMgdGFibGUgbmFtZQoJCQkJfSBl
bHNlIGlmICggJ2RhdGFiYXNlUmVzdG9yZVN1Y2Nlc3MnID09IGFjdGlvbiApIHsKCQkJCQlqUXVlcnkoJyN
pbXBvcnRpbmdEYXRhYmFzZS1wcm9ncmVzc01lc3NhZ2UnKS50ZXh0KCAnRGF0YWJhc2UgUmVzdG9yZSBTdW
NjZXNzZnVsJyApLmFkZENsYXNzKCAnYW5pbWF0ZWQgZmFkZUluRG93bicgKTsKCQkJCX0gZWxzZSBpZiAoI
CdkYXRhYmFzZVJlc3RvcmVTa2lwcGVkJyA9PSBhY3Rpb24gKSB7CgkJCQkJalF1ZXJ5KCcjaW1wb3J0aW5n
RGF0YWJhc2UtcHJvZ3Jlc3NNZXNzYWdlJykudGV4dCggJ0RhdGFiYXNlIFJlc3RvcmUgU2tpcHBlZCcgKS5
hZGRDbGFzcyggJ2FuaW1hdGVkIHN3aW5nJyApOwoJCQkJfSBlbHNlIGlmICggJ2RhdGFiYXNlUmVzdG9yZU
ZhaWxlZCcgPT0gYWN0aW9uICkgewoJCQkJCWpRdWVyeSgnI2ltcG9ydGluZ0RhdGFiYXNlLXByb2dyZXNzT
WVzc2FnZScpLnRleHQoICdEYXRhYmFzZSBSZXN0b3JlIEZhaWxlZCcgKS5hZGRDbGFzcyggJ2FuaW1hdGVk
IHdvYmJsZScgKTsKCQkJCX0gZWxzZSBpZiAoICdkYXRhYmFzZU1pZ3JhdGlvblN1Y2Nlc3MnID09IGFjdGl
vbiApIHsKCQkJCQlqUXVlcnkoJyNtaWdyYXRpbmdEYXRhYmFzZS1wcm9ncmVzc01lc3NhZ2UnKS50ZXh0KC
AnRGF0YWJhc2UgTWlncmF0aW9uIFN1Y2Nlc3NmdWwnICkuYWRkQ2xhc3MoICdhbmltYXRlZCBmYWRlSW5Eb
3duJyApOwoJCQkJfSBlbHNlIGlmICggJ2RhdGFiYXNlTWlncmF0aW9uU2tpcHBlZCcgPT0gYWN0aW9uICkg
ewoJCQkJCWpRdWVyeSgnI21pZ3JhdGluZ0RhdGFiYXNlLXByb2dyZXNzTWVzc2FnZScpLnRleHQoICdEYXR
hYmFzZSBNaWdyYXRpb24gU2tpcHBlZCcgKS5hZGRDbGFzcyggJ2FuaW1hdGVkIHN3aW5nJyApOwoJCQkJfS
BlbHNlIGlmICggJ2RhdGFiYXNlTWlncmF0aW9uRmFpbGVkJyA9PSBhY3Rpb24gKSB7CgkJCQkJalF1ZXJ5K
CcjbWlncmF0aW5nRGF0YWJhc2UtcHJvZ3Jlc3NNZXNzYWdlJykudGV4dCggJ0RhdGFiYXNlIE1pZ3JhdGlv
biBGYWlsZWQnICkuYWRkQ2xhc3MoICdhbmltYXRlZCB3b2JibGUnICk7CgkJCQl9IGVsc2UgaWYgKCAnZml
sZXNSZXN0b3JlU3VjY2VzcycgPT0gYWN0aW9uICkgewoJCQkJCWpRdWVyeSgnI3VuemlwcGluZ0ZpbGVzLX
Byb2dyZXNzTWVzc2FnZScpLnRleHQoICdDb21wbGV0ZWQgUmVzdG9yaW5nIEZpbGVzJyApLmFkZENsYXNzK
CAnYW5pbWF0ZWQgZmFkZUluRG93bicgKTsKCQkJCX0gZWxzZSBpZiAoICdmaWxlc1Jlc3RvcmVTa2lwcGVk
JyA9PSBhY3Rpb24gKSB7CgkJCQkJalF1ZXJ5KCcjdW56aXBwaW5nRmlsZXMtcHJvZ3Jlc3NNZXNzYWdlJyk
udGV4dCggJ1NraXBwZWQgUmVzdG9yaW5nIEZpbGVzJyApLmFkZENsYXNzKCAnYW5pbWF0ZWQgc3dpbmcnIC
k7CgkJCQl9IGVsc2UgewoJCQkJCWNvbnNvbGUubG9nKCAnVW5rbm93biBKUyBiYl9hY3Rpb24gYCcgKyBhY
3Rpb24gKyAnYCB3aXRoIG5vdGUgYCcgKyBub3RlICsgJ2AuJyApOwoJCQkJfQoJCQl9CgoKCQkJZnVuY3Rp
b24gYmJfc2hvd1N0ZXAoIHN0ZXAsIGRhdGEgKSB7CgkJCQl3aW5kb3cucmVzdG9yZURhdGEgPSBkYXRhOwo
JCQkJalF1ZXJ5KCcuc3RlcC13cmFwJykuaGlkZSgpOwoJCQkJY29uc29sZS5sb2coICdTaG93IHN0ZXA6IG
AnICsgc3RlcCArICdgLicgKTsKCQkJCWNvbnNvbGUuZGlyKCB3aW5kb3cucmVzdG9yZURhdGEgKTsKCQkJC
WJhY2t1cGJ1ZGR5X2xvZyggJ0xvYWRpbmcgc3RlcCBgJyArIHN0ZXAgKyAnYC4nKTsKCgkJCQkvL2pRdWVy
eSgnLnN0ZXAtJyArIHN0ZXAgKyAnLXdyYXAnKS5zaG93KCk7CgkJCQlpZiAoICdmaW5pc2hlZCcgPT0gc3R
lcCApIHsgLy8gSW4gY2FzZSB3ZSBjYW5ub3QgbG9hZCBmaW5hbCB0ZW1wbGF0ZSwgYXQgbGVhc3Qgc2F5IG
ZpbmlzaGVkLgoJCQkJCWpRdWVyeSgnLm1haW5fYm94X2Zvb3QnKS5odG1sKCAnPGgzPkZpbmlzaGVkPC9oM
z4nICk7CgkJCQl9CgoJCQkJaWYgKCAnY2xlYW51cFNldHRpbmdzJyA9PSBzdGVwICkgeyAvLyBQcmVsb2Fk
ZWQgdGVtcGxhdGUuCgkJCQkJalF1ZXJ5KCcubWFpbl9ib3gnKS5odG1sKCB3aW5kb3cuc3RlcFRlbXBsYXR
lQ2xlYW51cFNldHRpbmdzLnJlbmRlcihkYXRhKSApOwoJCQkJfSBlbHNlIGlmICggJ2ZpbmFsQ2xlYW51cC
cgPT0gc3RlcCApIHsKCQkJCQlqUXVlcnkoJy5tYWluX2JveCcpLmh0bWwoIGp3aW5kb3cuc3RlcFRlbXBsY
XRlZmluYWxDbGVhbnVwLnJlbmRlcihkYXRhKSApOwoJCQkJfSBlbHNlIHsgLy8gTm9ybWFsIHN0ZXAuCgkJ
CQkJaWYgKCBzdGVwID09ICdkYXRhYmFzZVNldHRpbmdzJyApIHsKCQkJCQkJLy8gRW5jb2RlIGRvdWJsZSB
xdW90ZXMgYmVmb3JlIHBhc3NpbmcgdG8gdmFsdWU9IiIKCQkJCQkJZGF0YS5kYXQuZGJfcGFzc3dvcmQgPS
BkYXRhLmRhdC5kYl9wYXNzd29yZC5yZXBsYWNlKC8iL2csICcmcXVvdDsnKTsKCQkJCQl9CgkJCQkJalF1Z
XJ5KCcubWFpbl9ib3gnKS5odG1sKCBuZXcgRUpTKHt1cmw6ICdpbXBvcnRidWRkeS92aWV3cy8nICsgc3Rl
cCArICcuaHRtJ30pLnJlbmRlcihkYXRhKSApOwoJCQkJfQoJCQl9CgoKCQkJZnVuY3Rpb24gdGlwKCB0aXA
gKSB7CgkJCQlyZXR1cm4gJzxhIGNsYXNzPSJwbHVnaW5idWRkeV90aXAiIHRpdGxlPSInICsgdGlwICsgJy
I+PGltZyBzcmM9ImltcG9ydGJ1ZGR5L3BsdWdpbmJ1ZGR5L2ltYWdlcy9wbHVnaW5idWRkeV90aXAucG5nI
iBhbHQ9Iig/KSI+PC9hPic7CgkJCX0KCgoJCTwvc2NyaXB0PgoJCTxzdHlsZT4KCQkJI2JhY2t1cGJ1ZGR5
X21lc3NhZ2VzIHsKCQkJCWJhY2tncm91bmQ6ICNmZmY7CgkJCQlib3JkZXI6IDFweCBzb2xpZCAjQ0ZDRkN
GOwoJCQkJLW1vei1ib3JkZXItcmFkaXVzOiAyNXB4OwoJCQkJaGVpZ2h0OiAyMDBweDsKCQkJCW92ZXJmbG
93OiBzY3JvbGw7CgkJCQlwYWRkaW5nOiAxMnB4OwoJCQkJd2hpdGUtc3BhY2U6IHByZTsKCQkJCXdpZHRoO
iAxMDAlOwoJCQkJbWFyZ2luOiAwOwoJCQkJYm94LXNpemluZzogYm9yZGVyLWJveDsKCQkJCXJlc2l6ZTog
Ym90aDsKCQkJfQoJCQkuYmFja3VwYnVkZHlfbG9nX2Vycm9yIHsKCQkJCWNvbG9yOiByZWQ7CgkJCQlmb25
0LXdlaWdodDogYm9sZDsKCQkJfQoJCQkuYmFja3VwYnVkZHlfbG9nX3dhcm5pbmcgewoJCQkJY29sb3I6IG
9yYW5nZTsKCQkJCWZvbnQtd2VpZ2h0OiBib2xkOwoJCQl9CgkJCS5iYWNrdXBidWRkeV9sb2dfbm90aWNlI
HsKCQkJCWNvbG9yOiBibHVlOwoJCQkJZm9udC13ZWlnaHQ6IGJvbGQ7CgkJCX0KCQkJI2JhY2t1cGJ1ZGR5
X21lc3NhZ2VzOjotd2Via2l0LXNjcm9sbGJhciB7CgkJCQktd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7Cgk
JCQl3aWR0aDogMTFweDsKCQkJCWhlaWdodDogMTFweDsKCQkJfQoJCQkjYmFja3VwYnVkZHlfbWVzc2FnZX
M6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKCQkJCWJvcmRlci1yYWRpdXM6IDhweDsKCQkJCWJvcmRlc
jogMnB4IHNvbGlkIHdoaXRlOyAvKiBzaG91bGQgbWF0Y2ggYmFja2dyb3VuZCwgY2FuJ3QgYmUgdHJhbnNw
YXJlbnQgKi8KCQkJCWJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjUpOwoJCQl94oCLCgkJPC9
zdHlsZT4KCTwvaGVhZD4KCQk8P3BocAoJCS8vaWYgKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2Rpc3
BsYXlfbW9kZSddID09ICdub3JtYWwnICkgewoJCQllY2hvICc8Ym9keSc7CgkJCWlmICggJ2VtYmVkJyAhP
SBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ2Rpc3BsYXlfbW9kZScgKSApIHsgZWNobyAnIHN0eWxlPSJiYWNr
Z3JvdW5kOiAjRkZGOyInOyB9CgkJCWVjaG8gJz4nOwoJCQlpZiAoICdlbWJlZCcgIT0gcGJfYmFja3VwYnV
kZHk6Ol9HRVQoICdkaXNwbGF5X21vZGUnICkgKSB7CgkJCQllY2hvICc8ZGl2IGNsYXNzPSJ0b3BOYXYiPi
c7CgoJCQkJCWlmICggdHJ1ZSA9PT0gQXV0aDo6aXNfYXV0aGVudGljYXRlZCgpICkgeyAvLyBPbmx5IGRpc
3BsYXkgdGhlc2UgbGlua3MgaWYgbG9nZ2VkIGluLgoJCQkJCQllY2hvICc8YSAnOwoJCQkJCQlpZiAoIHBi
X2JhY2t1cGJ1ZGR5OjpfR0VUKCAnc3RlcCcgKSAhPSAnJyApIHsgZWNobyAnY2xhc3M9ImFjdGl2ZVBhZ2U
iICc7IH0KCQkJCQkJZWNobyAnaHJlZj0iaW1wb3J0YnVkZHkucGhwIj5SZXN0b3JlIC8gTWlncmF0ZTwvYT
4nOwoKCQkJCQkJZWNobyAnPGEgJzsKCQkJCQkJaWYgKCBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3BhZ2UnI
CkgPT0gJ3NlcnZlcmluZm8nICkgeyBlY2hvICdjbGFzcz0iYWN0aXZlUGFnZSIgJzsgfQoJCQkJCQllY2hv
ICdocmVmPSI/cGFnZT1zZXJ2ZXJpbmZvIj5TZXJ2ZXIgSW5mb3JtYXRpb248L2E+JzsKCgkJCQkJCWVjaG8
gJzxhICc7CgkJCQkJCWlmICggcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdwYWdlJyApID09ICdkYnJlcGxhY2
UnICkgeyBlY2hvICdjbGFzcz0iYWN0aXZlUGFnZSIgJzsgfQoJCQkJCQllY2hvICdocmVmPSI/cGFnZT1kY
nJlcGxhY2UiPkRhdGFiYXNlIFRleHQgUmVwbGFjZTwvYT4nOwoKCQkJCQkJZWNobyAnPGEgaHJlZj0iaHR0
cHM6Ly9pdGhlbWVzaGVscC56ZW5kZXNrLmNvbS9oYy9lbi11cy9jYXRlZ29yaWVzLzIwMDA2MjMwMC1CYWN
rdXBCdWRkeS8iIHRhcmdldD0iX2JsYW5rIj5Lbm93bGVkZ2UgQmFzZTwvYT4nOwoJCQkJCQllY2hvICc8YS
BocmVmPSJodHRwOi8vaXRoZW1lcy5jb20vc3VwcG9ydC8iIHRhcmdldD0iX2JsYW5rIj5TdXBwb3J0PC9hP
ic7CgkJCQkJfQoKCQkJCQkkc2ltcGxlVmVyc2lvbiA9IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snYmJf
dmVyc2lvbiddOwoJCQkJCWlmICggc3RycG9zKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2JiX3ZlcnN
pb24nXSwgJyAnICkgPiAwICkgewoJCQkJCQkkc2ltcGxlVmVyc2lvbiA9IHN1YnN0ciggcGJfYmFja3VwYn
VkZHk6OiRvcHRpb25zWydiYl92ZXJzaW9uJ10sIDAsIHN0cnBvcyggcGJfYmFja3VwYnVkZHk6OiRvcHRpb
25zWydiYl92ZXJzaW9uJ10sICcgJyApICk7CgkJCQkJfQoJCQkJCWVjaG8gJzxhIGhyZWY9Imh0dHA6Ly9p
dGhlbWVzLmNvbS9wdXJjaGFzZS9iYWNrdXBidWRkeS8iIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0iVmlzaXQ
gQmFja3VwQnVkZHkgV2Vic2l0ZSBpbiBOZXcgV2luZG93IiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+PGltZy
BzcmM9ImltcG9ydGJ1ZGR5L2ltYWdlcy9pY29uX21lbnVfMzJ4MzIucG5nIiB3aWR0aD0iMTYiIGhlaWdod
D0iMTYiPiZuYnNwOyZuYnNwO0ltcG9ydEJ1ZGR5IHYnIC4gJHNpbXBsZVZlcnNpb24gLiAnIGZvciBCYWNr
dXBCdWRkeTwvYT4nOwoJCQkJZWNobyAnPC9kaXY+JzsKCQkJfQoJCT8+CgoJCTxkaXYgc3R5bGU9InBvc2l
0aW9uOiByZWxhdGl2ZTsgaGVpZ2h0OiA3MHB4OyBtYXJnaW4tdG9wOiA1MHB4OyB3aWR0aDogMTAwJTsgb3
ZlcmZsb3c6IGhpZGRlbjsiPgoJCQk8ZGl2IHN0eWxlPSJtYXgtd2lkdGg6IDEwMDBweDsgbWFyZ2luLWxlZ
nQ6IGF1dG87IG1hcmdpbi1yaWdodDogYXV0bzsiPgoJCQkJPCEtLSA8c3BhbiBpZD0icmVzdG9yZWJ1ZGR5
X2lmcmFtZV9wbGFjZWhvbGRlciI+V2VsY29tZSBzdGVwIDE8L3NwYW4+IC0tPgoJCQkJPHNjcmlwdD5pZnJ
hbWVQb3N0SW5pdCA9IGZhbHNlOzwvc2NyaXB0PgoJCQkJPGlmcmFtZSBvbkxvYWQ9ImlmICggdHJ1ZSA9PT
0gaWZyYW1lUG9zdEluaXQgKSB7IE5Qcm9ncmVzcy5kb25lKCk7IH0iIG5hbWU9Im1pbmlGcmFtZSIgaWQ9I
m1pbmlGcmFtZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iNzBweCIgZnJhbWVib3JkZXI9IjAiIHBhZGRpbmc9
IjAiIG1hcmdpbj0iMCI+RXJyb3IgIzQ1ODQ1OTQ1NzkuIEJyb3dzZXIgbm90IGNvbXBhdGlibGUgd2l0aCB
pZnJhbWVzLjwvaWZyYW1lPgoJCQkJPHNjcmlwdD5pZnJhbWVQb3N0SW5pdCA9IHRydWU7PC9zY3JpcHQ+Cg
kJCTwvZGl2PgoJCTwvZGl2PgoKCQk8ZGl2IHN0eWxlPSJkaXNwbGF5OiBub25lOyIgaWQ9InBiX2ltcG9yd
GJ1ZGR5X2JsYW5rYWxlcnQiPjw/cGhwIHBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJyNUSVRMRSMgI01FU1NB
R0UjJywgdHJ1ZSwgJzkwMjEnICk7ID8+PC9kaXY+CgoJCTxkaXYgY2xhc3M9Im1haW5fYm94X3dyYXAiPgo
KCgkJCTw/cGhwIGlmICggdHJ1ZSA9PT0gQXV0aDo6aXNfYXV0aGVudGljYXRlZCgpICkgeyAvLyBPbmx5IH
JlY29yZCBsb2dnaW5nIGlmIGF1dGhlbnRpY2F0ZWQuID8+CgkJCQk8ZGl2IGNsYXNzPSJtYWluX2JveF9oZ
WFkIj4KCQkJCQk8c3BhbiBpZD0icGFnZVRpdGxlIj4mbmJzcDs8L3NwYW4+CgkJCQkJPGEgc3R5bGU9ImZv
bnQtc2l6ZTogMC42ZW07IGZsb2F0OiByaWdodDsgbWFyZ2luLXRvcDogNnB4OyIgaHJlZj0iamF2YXNjcml
wdDp2b2lkKDApIiBvbmNsaWNrPSJqUXVlcnkoJyNwYl9iYWNrdXBidWRkeV9zdGF0dXNfd3JhcCcpLnRvZ2
dsZSgpOyI+RGlzcGxheSBTdGF0dXMgTG9nPC9hPgoJCQkJPC9kaXY+CgkJCQk8P3BocAoJCQkJZWNobyBwY
l9iYWNrdXBidWRkeTo6JGNsYXNzZXNbJ2ltcG9ydCddLT5zdGF0dXNfYm94KCAnU3RhdHVzIExvZyBmb3Ig
Zm9yIEltcG9ydEJ1ZGR5IGZyb20gQmFja3VwQnVkZHkgdicgLiBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnN
bJ2JiX3ZlcnNpb24nXSAuICcuLi4nICk7CgkJCQ
k/PgoKCQkJCTxzY3JpcHQ+aW1wb3J0YnVkZHlfbG9hZFJlc3RvcmVFdmVudHMoKTs8L3NjcmlwdD4KCQkJC
Tw/cGhwCgkJCX0gZWxzZSB7ID8+CgkJCQk8ZGl2IGNsYXNzPSJtYWluX2JveF9oZWFkIj4KCQkJCQk8c3Bh
biBpZD0icGFnZVRpdGxlIj4mbmJzcDs8L3NwYW4+CgkJCQk8L2Rpdj4KCgkJCTw/cGhwIH0gPz4KCQkJPGR
pdiBjbGFzcz0ibWFpbl9ib3hfaGVhZCBlcnJvcl9hbGVydF9ib3giIHN0eWxlPSJkaXNwbGF5OiBub25lOy
I+CgkJCQk8c3BhbiBjbGFzcz0iZXJyb3JfYWxlcnRfdGl0bGUiPkVycm9yKHMpPC9zcGFuPgoJCQkJPHVsI
GNsYXNzPSJiYWNrdXBidWRkeV9lcnJvcl9saXN0Ij4KCQkJCQk8IS0tIDxsaT5FcnJvciAjMTIzb25seUF0
ZXN0OiBBbiBlcnJvciBoYXMgTk9UIGhhcHBlbmVkLiBUaGlzIGlzIGEgb25seSB0ZXN0LjwvbGk+IC0tPgo
JCQkJPC91bD4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9Im1haW5fYm94X2hlYWQgd2FybmluZ19hbGVydF
9ib3giIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJCQk8c3BhbiBjbGFzcz0iZXJyb3Jfd2FybmluZ190a
XRsZSI+QWxlcnQocyk8L3NwYW4+CgkJCQk8dWwgY2xhc3M9ImJhY2t1cGJ1ZGR5X3dhcm5pbmdfbGlzdCI+
CgkJCQkJPCEtLSA8bGk+RXJyb3IgIzEyM29ubHlBdGVzdDogQSB3YXJuaW5nIGhhcyBOT1QgaGFwcGVuZWQ
uIFRoaXMgaXMgYSBvbmx5IHRlc3QuPC9saT4gLS0+CgkJCQk8L3VsPgoJCQk8L2Rpdj4KCgoJCQk8ZGl2IG
NsYXNzPSJtYWluX2JveCI+CgoKCg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/_header.php,importbuddy/views/
_header.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/_html_1_stash.php,importbudd
y/views/_html_1_stash.php
PD9waHAKLyoqCiAqIEhUTUwgMSBTdGFzaCBWaWV3CiAqCiAqIEBwYWNrYWdlIEJhY2t1cEJ1ZGR5CiAqLwo
KZ2xvYmFsICR3cF92ZXJzaW9uOwokd3BfdmVyc2lvbiA9IDE7CgovKioKICogU3Rhc2ggQVBJIEZ1bmN0aW
9uCiAqCiAqIEBwYXJhbSBhcnJheSAgJHNldHRpbmdzICAgICAgICAgICBTZXR0aW5ncyBhcnJheS4KICogQ
HBhcmFtIHN0cmluZyAkYWN0aW9uICAgICAgICAgICAgIEFQSSBBY3Rpb24gY2FsbC4KICogQHBhcmFtIGFy
cmF5ICAkYWRkaXRpb25hbF9wYXJhbXMgIEFycmF5IG9mIGFkZGl0aW9uYWwgcGFyYW1ldGVycy4KICoKICo
gQHJldHVybiBzdHJpbmd8YXJyYXkgIEVycm9yIHN0cmluZyBvciBKU09OIHJlc3BvbnNlIGFycmF5LgogKi
8KZnVuY3Rpb24gc3Rhc2hBUEkoICRzZXR0aW5ncywgJGFjdGlvbiwgJGFkZGl0aW9uYWxfcGFyYW1zID0gY
XJyYXkoKSApIHsKCSRhcGlfdXJsID0gJ2h0dHBzOi8vc3Rhc2gtYXBpLml0aGVtZXMuY29tJzsKCglnbG9i
YWwgJHdwX3ZlcnNpb247CgkkdXJsX3BhcmFtcyA9IGFycmF5KAoJCSdhY3Rpb24nICAgID0+ICRhY3Rpb24
sCgkJJ3VzZXInICAgICAgPT4gJHNldHRpbmdzWydpdHhhcGlfdXNlcm5hbWUnXSwKCQknd3AnICAgICAgIC
A9PiAkd3BfdmVyc2lvbiwKCQknYmInICAgICAgICA9PiAwLAoJCSdpYicgICAgICAgID0+IHBiX2JhY2t1c
GJ1ZGR5Ojokb3B0aW9uc1snYmJfdmVyc2lvbiddLAoJCSdzaXRlJyAgICAgID0+ICdpbXBvcnRidWRkeScs
CgkJJ3RpbWVzdGFtcCcgPT4gdGltZSgpLAoJKTsKCglpZiAoIGlzc2V0KCAkc2V0dGluZ3NbJ2l0eGFwaV9
wYXNzd29yZCddICkgKSB7IC8vIFVzZWQgb24gaW5pdGl0YWwgY29ubmVjdGlvbiB0bwoJCSRwYXJhbXMgPS
BhcnJheSggJ2F1dGhfdG9rZW4nID0+ICRzZXR0aW5nc1snaXR4YXBpX3Bhc3N3b3JkJ10gKTsgLy8gaXR4Y
XBpX3Bhc3N3b3JkIGlzIGEgSEFTSCBvZiB1c2VyJ3MgcGFzc3dvcmQuCgl9IGVsc2VpZiAoIGlzc2V0KCAk
c2V0dGluZ3NbJ2l0eGFwaV90b2tlbiddICkgKSB7IC8vIFVzZWQgb24gaW5pdGl0YWwgY29ubmVjdGlvbiB
0bwoJCSRwYXJhbXMgPSBhcnJheSggJ3Rva2VuJyA9PiAkc2V0dGluZ3NbJ2l0eGFwaV90b2tlbiddICk7IC
8vIGl0eGFwaV9wYXNzd29yZCBpcyBhIEhBU0ggb2YgdXNlcidzIHBhc3N3b3JkLgoJfSBlbHNlIHsKCQkkZ
XJyb3IgPSAnQmFja3VwQnVkZHkgRXJyb3IgIzc5Mzc0OTQzNjogTm8gdmFsaWQgdG9rZW4gKGl0eGFwaV90
b2tlbikgb3IgaGFzaGVkIHBhc3N3b3JkIChpdHhhcGlfcGFzc3dvcmQpIHNwZWNpZmllZC4gVGhpcyBzaG9
1bGQgbm90IGhhcHBlbi4nOwoJCXRyaWdnZXJfZXJyb3IoICRlcnJvciwgRV9VU0VSX05PVElDRSApOwoJCX
JldHVybiAkZXJyb3I7Cgl9CgoJJHBhcmFtcyA9IGFycmF5X21lcmdlKCAkcGFyYW1zLCAkYWRkaXRpb25hb
F9wYXJhbXMgKTsKCSRib2R5ICAgPSBhcnJheSggJ3JlcXVlc3QnID0+IGpzb25fZW5jb2RlKCAkcGFyYW1z
ICkgKTsKCgkkcG9zdF91cmwgPSAkYXBpX3VybCAuICcvPycgLiBodHRwX2J1aWxkX3F1ZXJ5KCAkdXJsX3B
hcmFtcywgbnVsbCwgJyYnICk7CgoJJHJlcXVlc3QgPSBuZXcgUmVxdWVzdENvcmUoICRwb3N0X3VybCApOw
oJJHJlcXVlc3QtPnNldF9tZXRob2QoICdQT1NUJyApOwoJJHJlcXVlc3QtPnNldF9ib2R5KCAkYm9keSApO
woJJHJlc3BvbnNlID0gJHJlcXVlc3QtPnNlbmRfcmVxdWVzdCggdHJ1ZSApOwoKCWlmICggISAkcmVzcG9u
c2UtPmlzT0soKSApIHsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnU3Rhc2ggcmVxdWV
zdCBmb3IgZmlsZXMgZmFpbGVkLicgKTsKCQlyZXR1cm4gJHJlc3BvbnNlLT5ib2R5OwoJfSBlbHNlIHsKCQ
kvLyBTZWUgaWYgd2UgZ290IGEganNvbiByZXNwb25zZS4KCQkkcmVzcG9uc2VfZGVjb2RlZCA9IGpzb25fZ
GVjb2RlKCAkcmVzcG9uc2UtPmJvZHksIHRydWUgKTsKCQlpZiAoICEgJHJlc3BvbnNlX2RlY29kZWQgKSB7
CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdTdGFzaCBkaWQgbm90IGdldCB2YWxpZCB
qc29uIHJlc3BvbnNlLicgKTsKCQl9CgoJCS8vIEZpbmFsbHkgc2VlIGlmIHRoZSBBUEkgcmV0dXJuZWQgYW
4gZXJyb3IuCgkJaWYgKCBpc3NldCggJHJlc3BvbnNlX2RlY29kZWRbJ2Vycm9yJ10gKSApIHsKCQkJaWYgK
CBpc3NldCggJHJlc3BvbnNlX2RlY29kZWRbJ2Vycm9yJ11bJ21lc3NhZ2UnXSApICkgewoJCQkJJGVycm9y
ID0gJ0Vycm9yICMzOTc1Mjg5M2EuIFNlcnZlciByZXBvcnRlZCBhbiBlcnJvciBwZXJmb3JtaW5nIGFjdGl
vbiBgJyAuICRhY3Rpb24gLiAnYCB3aXRoIGFkZGl0aW9uYWwgcGFyYW1zOiBgJyAuIHByaW50X3IoICRhZG
RpdGlvbmFsX3BhcmFtcywgdHJ1ZSApIC4gJ2AuIERldGFpbHM6IGAnIC4gcHJpbnRfciggJHJlc3BvbnNlX
2RlY29kZWRbJ2Vycm9yJ10sIHRydWUgKSAuICdgLic7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
d2FybmluZycsICRlcnJvciApOwoJCQkJcmV0dXJuICRyZXNwb25zZV9kZWNvZGVkWydlcnJvciddWydtZXN
zYWdlJ107CgkJCX0gZWxzZSB7CgkJCQkkZXJyb3IgPSAnRXJyb3IgIzM4MjM5NzMuIFJlY2VpdmVkIFN0YX
NoIEFQSSBlcnJvciBidXQgbm8gbWVzc2FnZSBmb3VuZC4gRGV0YWlsczogYCcgLiBwcmludF9yKCAkcmVzc
G9uc2VfZGVjb2RlZCwgdHJ1ZSApIC4gJ2AuJzsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJu
aW5nJywgJGVycm9yICk7CgkJCQlyZXR1cm4gJGVycm9yOwoJCQl9CgkJfSBlbHNlIHsgLy8gTk8gRVJST1J
TLgoJCQlyZXR1cm4gJHJlc3BvbnNlX2RlY29kZWQ7CgkJfQoJfQp9Cj8+Cgo8c3R5bGU+Ci53aWRlZmF0IH
RkIHsKCXBhZGRpbmc6IDIwcHggN3B4OwoJZm9udC1zaXplOiAxNHB4Owp9Ci53aWRlZmF0IHRkIGE6aG92Z
XIgewoJdGV4dC1kZWNvcmF0aW9uOiBub25lOwp9Ci53aWRlZmF0IHRkIGZvcm0gewoJbWFyZ2luLXRvcDog
LTEycHg7Cglmb250LXNpemU6IDEycHg7Cn0KLnN0YXNoX2JhY2t1cF9maWxlIHsKCWZvbnQtc2l6ZTogMS4
yZW07Cn0KPC9zdHlsZT4KPD9waHAKJElUWEFQSV9LRVkgPSAnaXhobzdkazBwMjQ0bjBvYic7IC8vIE1vdm
UgdG8gYSBjb25zdGFudD8KJElUWEFQSV9VUkwgPSAnaHR0cDovL2FwaS5pdGhlbWVzLmNvbSc7IC8vIE1vd
mUgdG8gYSBjb25zdGFudD8KCiRjcmVkZW50aWFsc19mb3JtID0gbmV3IHBiX2JhY2t1cGJ1ZGR5X3NldHRp
bmdzKCAncHJlX3NldHRpbmdzJywgZmFsc2UsICd1cGxvYWQ9c3Rhc2gjcGx1Z2luYnVkZHktdGFicy1zdGF
zaCcgKTsgLy8gbmFtZSwgc2F2ZXBvaW50fGZhbHNlLCBhZGRpdGlvbmFsIHF1ZXJ5c3RyaW5nLgoKJGNyZW
RlbnRpYWxzX2Zvcm0tPmFkZF9zZXR0aW5nKAoJYXJyYXkoCgkJJ3R5cGUnICA9PiAndGV4dCcsCgkJJ25hb
WUnICA9PiAnaXR4YXBpX3VzZXJuYW1lJywKCQkndGl0bGUnID0+IF9fKCAnaVRoZW1lcyB1c2VybmFtZScs
ICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCSdydWxlcycgPT4gJ3JlcXVpcmVkfHN0cmluZ1sxLTQ1XSc
sCgkpCik7CiRjcmVkZW50aWFsc19mb3JtLT5hZGRfc2V0dGluZygKCWFycmF5KAoJCSd0eXBlJyAgPT4gJ3
Bhc3N3b3JkJywKCQknbmFtZScgID0+ICdpdHhhcGlfcGFzc3dvcmRfcmF3JywKCQkndGl0bGUnID0+IF9fK
CAnaVRoZW1lcyBwYXNzd29yZCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCSdydWxlcycgPT4gJ3Jl
cXVpcmVkfHN0cmluZ1sxLTQ1XScsCgkpCik7Cgokc2V0dGluZ3NfcmVzdWx0ID0gJGNyZWRlbnRpYWxzX2Z
vcm0tPnByb2Nlc3MoKTsKJGxvZ2luX3dlbGNvbWUgICA9ICc8Y2VudGVyPicgLiBfXyggJ0xvZyBpbiB0by
BTdGFzaCB3aXRoIHlvdXIgaVRoZW1lcy5jb20gbWVtYmVyIGFjY291bnQuJywgJ2l0LWwxMG4tYmFja3VwY
nVkZHknICkgLiAnPGJyPjxicj4nOwoKaWYgKCBjb3VudCggJHNldHRpbmdzX3Jlc3VsdCApID09PSAwICkg
eyAvLyBObyBmb3JtIHN1Ym1pdHRlZC4KCgllY2hvICRsb2dpbl93ZWxjb21lOwoJJGNyZWRlbnRpYWxzX2Z
vcm0tPmRpc3BsYXlfc2V0dGluZ3MoICdDb25uZWN0IHRvIFN0YXNoJyApOwoKfSBlbHNlIHsgLy8gRm9ybS
BzdWJtaXR0ZWQuCglpZiAoIGNvdW50KCAkc2V0dGluZ3NfcmVzdWx0WydlcnJvcnMnXSApID4gMCApIHsgL
y8gRm9ybSBlcnJvcnMuCgkJZWNobyAkbG9naW5fd2VsY29tZTsKCgkJcGJfYmFja3VwYnVkZHk6OmFsZXJ0
KCBpbXBsb2RlKCAnPGJyPicsICRzZXR0aW5nc19yZXN1bHRbJ2Vycm9ycyddICkgKTsKCQkkY3JlZGVudGl
hbHNfZm9ybS0+ZGlzcGxheV9zZXR0aW5ncyggJ0Nvbm5lY3QgdG8gU3Rhc2gnICk7CgoJfSBlbHNlIHsgLy
8gTm8gZm9ybSBlcnJvcnM7IHByb2Nlc3MhCgoJCXJlcXVpcmVfb25jZSBkaXJuYW1lKCBkaXJuYW1lKCBfX
0ZJTEVfXyApICkgLiAnL2xpYi9yZXF1ZXN0Y29yZS9yZXF1ZXN0Y29yZS5jbGFzcy5waHAnOwoJCXJlcXVp
cmVfb25jZSBkaXJuYW1lKCBkaXJuYW1lKCBfX0ZJTEVfXyApICkgLiAnL2xpYi9zdGFzaDIvY2xhc3MuaXR
4X2hlbHBlcjIucGhwJzsKCgkJZ2xvYmFsICR3cF92ZXJzaW9uOwoJCSRpdHhhcGlfdXNlcm5hbWUgPSBzdH
J0b2xvd2VyKCAkc2V0dGluZ3NfcmVzdWx0WydkYXRhJ11bJ2l0eGFwaV91c2VybmFtZSddICk7CgkJJHBhc
3N3b3JkX2hhc2ggICA9IGlUaGVtZXNfQ3JlZGVudGlhbHM6OmdldF9wYXNzd29yZF9oYXNoKCAkaXR4YXBp
X3VzZXJuYW1lLCAkc2V0dGluZ3NfcmVzdWx0WydkYXRhJ11bJ2l0eGFwaV9wYXNzd29yZF9yYXcnXSApOwo
JCSRhY2Nlc3NfdG9rZW4gICAgPSBJVFhBUElfSGVscGVyMjo6Z2V0X2FjY2Vzc190b2tlbiggJGl0eGFwaV
91c2VybmFtZSwgJHBhc3N3b3JkX2hhc2gsICdpbXBvcnRidWRkeScsICR3cF92ZXJzaW9uICk7CgoJCSRzZ
XR0aW5ncyA9IGFycmF5KAoJCQknaXR4YXBpX3VzZXJuYW1lJyA9PiAkaXR4YXBpX3VzZXJuYW1lLAoJCQkn
aXR4YXBpX3Bhc3N3b3JkJyA9PiAkYWNjZXNzX3Rva2VuLAoJCSk7CgkJJHJlc3BvbnNlID0gc3Rhc2hBUEk
oICRzZXR0aW5ncywgJ2Nvbm5lY3QnICk7CgoJCSRsb2dnZWRfaW4gPSBmYWxzZTsKCQlpZiAoICEgaXNfYX
JyYXkoICRyZXNwb25zZSApICkgeyAvLyBFcnJvciBtZXNzYWdlLgoJCQlwYl9iYWNrdXBidWRkeTo6YWxlc
nQoICdFcnJvciAjMzk4Mzc5NCBmcm9tIHNlcnZlcjogYCcgLiBwcmludF9yKCAkcmVzcG9uc2UsIHRydWUg
KSAuICdgLicgKTsKCQkJJGNyZWRlbnRpYWxzX2Zvcm0tPmRpc3BsYXlfc2V0dGluZ3MoICdTdWJtaXQnICk
7CgkJfSBlbHNlIHsKCQkJaWYgKCBpc3NldCggJHJlc3BvbnNlWydlcnJvciddICkgKSB7CgkJCQlwYl9iYW
NrdXBidWRkeTo6YWxlcnQoICdFcnJvcjogJyAuICRyZXNwb25zZVsnZXJyb3InXVsnbWVzc2FnZSddICk7C
gkJCQkkY3JlZGVudGlhbHNfZm9ybS0+ZGlzcGxheV9zZXR0aW5ncyggJ1N1Ym1pdCcgKTsKCQkJfSBlbHNl
IHsKCQkJCWlmICggaXNzZXQoICRyZXNwb25zZVsndG9rZW4nXSApICkgewoJCQkJCSRzZXR0aW5nc1snaXR
4YXBpX3Rva2VuJ10gPSAkcmVzcG9uc2VbJ3Rva2VuJ107CgkJCQkJJGl0eGFwaV90b2tlbiAgICAgICAgIC
AgICA9ICRzZXR0aW5nc1snaXR4YXBpX3Rva2VuJ107CgkJCQkJdW5zZXQoICRzZXR0aW5nc1snaXR4YXBpX
3Bhc3N3b3JkJ10gKTsgLy8gTm8gbG9uZ2VybiBlZWRlZCBzaW5jZSB3ZSBoYXZlIHRva2VuIG5vdy4KCQkJ
CQkkbG9nZ2VkX2luID0gdHJ1ZTsKCQkJCX0gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OmFsZXJ0KCA
nRXJyb3IgIzM0OTc0NzM0MzIzOiBVbmV4cGVjdGVkIHNlcnZlciByZXNwb25zZS4gVG9rZW4gbWlzc2luZy
4gQ2hlY2sgeW91ciBsb2dpbiBhbmQgdHJ5IGFnYWluLiBEZXRhaWxlZCByZXNwb25zZTogYCcgLiBwcmlud
F9yKCAkcmVzcG9uc2UsIHRydWUgKSAuICdgLicgKTsKCQkJCQkkY3JlZGVudGlhbHNfZm9ybS0+ZGlzcGxh
eV9zZXR0aW5ncyggJ1N1Ym1pdCcgKTsKCQkJCX0KCQkJfQoJCX0KCgkJaWYgKCB0cnVlID09PSAkbG9nZ2V
kX2luICkgewoJCQkvLyBHZXQgZmlsZXMuCgkJCSRzdGFzaF9maWxlcyA9IHN0YXNoQVBJKCAkc2V0dGluZ3
MsICdmaWxlcycgKTsKCgkJCS8vIEZpbmFsbHkgc2VlIGlmIHRoZSBBUEkgcmV0dXJuZWQgYW4gZXJyb3IuC
gkJCWlmICggISBpc19hcnJheSggJHN0YXNoX2ZpbGVzICkgKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6YWxl
cnQoICdTdGFzaCBFcnJvcjogJyAuICRzdGFzaF9maWxlcyApOwoJCQkJJGNyZWRlbnRpYWxzX2Zvcm0tPmR
pc3BsYXlfc2V0dGluZ3MoICdTdWJtaXQnICk7CgkJCX0gZWxzZSB7IC8vIE5PIEVSUk9SUy4KCgoJCQkJLy
8gU29ydCBpbiBvcmRlciAmIGV4Y2x1ZGUgdW53YW50ZWQgYmFja3VwIHR5cGVzLgoJCQkJJGJhY2t1cF9sa
XN0X3RlbXAgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCAoIChhcnJheSkgJHN0YXNoX2ZpbGVzIGFzICRpID0+
ICRzdGFzaF9maWxlICkgewoJCQkJCSRmaWxlICAgICA9ICRzdGFzaF9maWxlWydmaWxlbmFtZSddOwoJCQk
JCSR1cmwgICAgICA9ICRzdGFzaF9maWxlWyd1cmwnXTsKCQkJCQkkc2l6ZSAgICAgPSAkc3Rhc2hfZmlsZV
snc2l6ZSddOwoJCQkJCSRtb2RpZmllZCA9ICRzdGFzaF9maWxlWyd1cGxvYWRlZF90aW1lc3RhbXAnXTsKC
gkJCQkJLy8gQXZvaWQgY29sbGlvbiBmb3Igc29ydGluZy4KCQkJCQl3aGlsZSAoIGlzc2V0KCAkYmFja3Vw
X2xpc3RfdGVtcFsgJG1vZGlmaWVkIF0gKSApIHsKCQkJCQkJJG1vZGlmaWVkICs9IDAuMTsKCQkJCQl9Cgo
JCQkJCWlmICggJ2RiJyA9PSAkc3Rhc2hfZmlsZVsnYmFja3VwX3R5cGUnXSApIHsKCQkJCQkJJGJhY2t1cF
90eXBlID0gJ0RhdGFiYXNlJzsKCQkJCQl9IGVsc2VpZiAoICdmdWxsJyA9PSAkc3Rhc2hfZmlsZVsnYmFja
3VwX3R5cGUnXSApIHsKCQkJCQkJJGJhY2t1cF90eXBlID0gJ0Z1bGwnOwoJCQkJCX0gZWxzZWlmICggJ3Ro
ZW1lcycgPT0gJHN0YXNoX2ZpbGVbJ2JhY2t1cF90eXBlJ10gKSB7IC8vIE9taXQgZnJvbSBsaXN0LgoJCQk
JCQl1bnNldCggJHN0YXNoX2ZpbGVzWyAkaSBdICk7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0gZWxzZWlmIC
ggJ3BsdWdpbnMnID09ICRzdGFzaF9maWxlWydiYWNrdXBfdHlwZSddICkgeyAvLyBPbWl0IGZyb20gbGlzd
C4KCQkJCQkJdW5zZXQoICRzdGFzaF9maWxlc1sgJGkgXSApOwoJCQkJCQljb250aW51ZTsKCQkJCQl9IGVs
c2VpZiAoICdtZWRpYScgPT0gJHN0YXNoX2ZpbGVbJ2JhY2t1cF90eXBlJ10gKSB7IC8vIE9taXQgZnJvbSB
saXN0LgoJCQkJCQl1bnNldCggJHN0YXNoX2ZpbGVzWyAkaSBdICk7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX
0gZWxzZWlmICggJ2ZpbGVzJyA9PSAkc3Rhc2hfZmlsZVsnYmFja3VwX3R5cGUnXSApIHsKCQkJCQkJJGJhY
2t1cF90eXBlID0gJ0ZpbGVzJzsKCQkJCQl9IGVsc2UgewoJCQkJCQkkYmFja3VwX3R5cGUgPSAnVW5rbm93
bic7CgkJCQkJCWNvbnRpbnVlOwoJCQkJCX0KCQk
JCQkkc3Rhc2hfZmlsZVsnYmFja3VwX3R5cGVfcHJldHR5J10gPSAkYmFja3VwX3R5cGU7CgoJCQkJCSRiYW
NrdXBfbGlzdF90ZW1wWyAkbW9kaWZpZWQgXSA9ICRzdGFzaF9maWxlOwoJCQkJfQoJCQkJa3Jzb3J0KCAkY
mFja3VwX2xpc3RfdGVtcCApOwoJCQkJJHN0YXNoX2ZpbGVzID0gJGJhY2t1cF9saXN0X3RlbXA7CgkJCQl1
bnNldCggJGJhY2t1cF9saXN0X3RlbXAgKTsKCgoJCQkJLy8gU3BsaXQgdXAgaW50byBzaXRlcy4KCQkJCSR
iYWNrdXBfbGlzdHMgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCAoICRzdGFzaF9maWxlcyBhcyAkc3Rhc2hfZm
lsZSApIHsKCQkJCQkkYmFja3VwX2xpc3RzWyAkc3Rhc2hfZmlsZVsnc2l0ZSddIF1bXSA9ICRzdGFzaF9ma
WxlOwoJCQkJfQoJCQkJdW5zZXQoICRzdGFzaF9maWxlcyApOwoKCgkJCQkvLyBSZW5kZXIgdGFibGUgbGlz
dGluZyBmaWxlcy4KCQkJCWlmICggY291bnQoICRiYWNrdXBfbGlzdHMgKSA9PSAwICkgewoJCQkJCWVjaG8
gJzxiPic7CgkJCQkJZXNjX2h0bWxfZSggJ1lvdSBoYXZlIG5vdCBzZW50IGFueSBiYWNrdXBzIHRvIFN0YX
NoIHlldCAob3IgZmlsZXMgYXJlIHN0aWxsIHRyYW5zZmVycmluZykuJywgJ2l0LWwxMG4tYmFja3VwYnVkZ
HknICk7CgkJCQkJZWNobyAnPC9iPic7CgkJCQl9IGVsc2UgewoKCQkJCQkvLyBMb29wIHRocm91Z2ggZWFj
aCBzaXRlLgoJCQkJCWZvcmVhY2ggKCAkYmFja3VwX2xpc3RzIGFzICRzdGFzaF9maWxlcyApIHsgLy8gRWF
jaCBzaXRlLgoKCQkJCQkJLy8gTG9vcCB0aHJvdWdoIGVhY2ggZmlsZSB3aXRoaW4gdGhpcyBzaXRlLgoJCQ
kJCQkkZGlzcGxheV9saXN0ID0gYXJyYXkoKTsKCQkJCQkJZm9yZWFjaCAoICRzdGFzaF9maWxlcyBhcyAkc
3Rhc2hfZmlsZSApIHsgLy8gRWFjaCBiYWNrdXAgaW4gc2l0ZS4KCQkJCQkJCSRzaXRlID0gJHN0YXNoX2Zp
bGVbJ3NpdGUnXTsKCgkJCQkJCQkkZGlzcGxheV9saXN0W10gPSBhcnJheSgKCQkJCQkJCQkkc3Rhc2hfZml
sZVsnYmFja3VwX3R5cGVfcHJldHR5J10sCgkJCQkJCQkJJzxzcGFuIGNsYXNzPSJzdGFzaF9iYWNrdXBfZm
lsZSI+JyAuIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5kYXRlKCBwYl9iYWNrdXBidWRkeTo6JGZvcm1hd
C0+bG9jYWxpemVfdGltZSggJHN0YXNoX2ZpbGVbJ3VwbG9hZGVkX3RpbWVzdGFtcCddICksICdsLCBGIGos
IFkgLSBnOmkgQScgKSAuICc8L3NwYW4+IDxzcGFuIGNsYXNzPSJkZXNjcmlwdGlvbiI+KCcgLiBwYl9iYWN
rdXBidWRkeTo6JGZvcm1hdC0+dGltZV9hZ28oICRzdGFzaF9maWxlWyd1cGxvYWRlZF90aW1lc3RhbXAnXS
ApIC4gJyBhZ28pPC9zcGFuPjwvYT48YnI+PGEgaHJlZj0iJyAuICRzdGFzaF9maWxlWyd1cmwnXSAuICciP
icgLiAkc3Rhc2hfZmlsZVsnYmFzZW5hbWUnXSAuICc8L2E+JywKCQkJCQkJCQlwYl9iYWNrdXBidWRkeTo6
JGZvcm1hdC0+ZmlsZV9zaXplKCAkc3Rhc2hfZmlsZVsnc2l6ZSddICksCgkJCQkJCQkJJzxmb3JtIGFjdGl
vbj0iPyNwbHVnaW5idWRkeS10YWJzLXNlcnZlciIgbWV0aG9kPSJQT1NUIj4KCQkJCQkJCQkJPGlucHV0IH
R5cGU9ImhpZGRlbiIgbmFtZT0icGFzc19oYXNoIiB2YWx1ZT0iJyAuIFBCX1BBU1NXT1JEIC4gJyI+CgkJC
QkJCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InVwbG9hZCIgdmFsdWU9InN0YXNoIj4KCQkJCQkJ
CQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib3B0aW9ucyIgdmFsdWU9IicgLiBodG1sc3BlY2lhbGN
oYXJzKCBzZXJpYWxpemUoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9ucyApICkgLiAnIj4KCQkJCQkJCQkJPG
lucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibGluayIgdmFsdWU9IicgLiAkc3Rhc2hfZmlsZVsndXJsJ10gL
iAnIj4KCQkJCQkJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iUmVzdG9y
ZSIgY2xhc3M9ImJ1dHRvbi1wcmltYXJ5Ij4KCQkJCQkJCQk8L2Zvcm0+JywKCgkJCQkJCQkpOwoJCQkJCQl
9CgoJCQkJCQllY2hvICc8aDM+U2l0ZTogJyAuIGVzY19odG1sKCAkc2l0ZSApIC4gJzwvaDM+JzsKCQkJCQ
kJcGJfYmFja3VwYnVkZHk6OiR1aS0+bGlzdF90YWJsZSgKCQkJCQkJCSRkaXNwbGF5X2xpc3QsCgkJCQkJC
QlhcnJheSgKCQkJCQkJCQknY29sdW1ucycgPT4gYXJyYXkoICdUeXBlJywgJ1VwbG9hZGVkPGltZyBzcmM9
IicgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpIC4gJy9pbWFnZXMvc29ydF9kb3duLnBuZyIgc3R
5bGU9InZlcnRpY2FsLWFsaWduOiAwcHg7IiB0aXRsZT0iU29ydGVkIG1vc3QgcmVjZW50IGZpcnN0Ij48c3
BhbiBjbGFzcz0iZGVzY3JpcHRpb24iPihDbGljayB0byBkb3dubG9hZCk8L3NwYW4+JywgJ0ZpbGUgU2l6Z
ScsICdBY3Rpb24nICksCgkJCQkJCQkJJ2NzcycgICAgID0+ICd3aWR0aDogMTAwJTsnLAoJCQkJCQkJKQoJ
CQkJCQkpOwoJCQkJCQllY2hvICc8YnI+PGJyPic7CgoJCQkJCX0KCQkJCX0KCQkJfSAvLyBlbmQgbm8gZXJ
yb3JzIGdldHRpbmcgZmlsZSBpbmZvIGZyb20gQVBJLgoJCX0gZWxzZSB7IC8vIGVuZCBsb2dnZWQgaW4uCg
kJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ1N0YXNoIExvZ2luIEVycm9yLicgKTsKCQkJJGNyZWRlbnRpY
WxzX2Zvcm0tPmRpc3BsYXlfc2V0dGluZ3MoICdTdWJtaXQnICk7CgkJfQoJfQp9IC8vIGVuZCBmb3JtIHN1
Ym1pdHRlZC4KCj8+Cgo8YnI+PGhyPgo8Y2VudGVyPgoJPGEgaHJlZj0iaHR0cHM6Ly9zeW5jLml0aGVtZXM
uY29tL3N0YXNoIiB0YXJnZXQ9Il9ibGFuayIgY2xhc3M9ImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5Ij5NYW
5hZ2UgeW91ciBTdGFzaCBmaWxlcyB2aWEgaVRoZW1lcyBTeW5jPC9hPgo8L2NlbnRlcj4KPGJyPgo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/_html_1_stash.php,importbuddy/
views/_html_1_stash.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/_iframe_footer.php,importbud
dy/views/_iframe_footer.php
CTxzY3JpcHQ+Ly9iYl9hY3Rpb24oICdpZnJhbWVMb2FkZWQnICk7PC9zY3JpcHQ+CjwvaHRtbD4=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/_iframe_footer.php,importbuddy
/views/_iframe_footer.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/_iframe_header.php,importbud
dy/views/_iframe_header.php
PGh0bWw+Cjw/cGhwCnJlcXVpcmUoICdfYXNzZXRzLnBocCcgKTsKCgoKaWYgKCAndHJ1ZScgIT0gcGJfYmF
ja3VwYnVkZHk6Ol9HRVQoICdkZXBsb3knICkgKSB7IC8vIE5PUk1BTCwgTk9UIERFUExPWU1FTlQuCj8+Cg
k8c2NyaXB0PgoJCXZhciB3aW4gPSB3aW5kb3cuZGlhbG9nQXJndW1lbnRzIHx8IG9wZW5lciB8fCBwYXJlb
nQgfHwgdG9wOwoJCXdpbi53aW5kb3cuc2Nyb2xsVG8oMCwwKTsKCQkKCQlmdW5jdGlvbiBwYl9zdGF0dXNf
YXBwZW5kKCBzdGF0dXNfc3RyaW5nICkgewoJCQkvL3ZhciB3aW4gPSB3aW5kb3cuZGlhbG9nQXJndW1lbnR
zIHx8IG9wZW5lciB8fCBwYXJlbnQgfHwgdG9wOwoJCQl3aW4ucGJfc3RhdHVzX2FwcGVuZCggc3RhdHVzX3
N0cmluZyApOwoJCX0KCQlmdW5jdGlvbiBwYl9zdGF0dXNfdW5kb3VybCggdW5kb191cmwgKSB7CgkJCS8vd
mFyIHdpbiA9IHdpbmRvdy5kaWFsb2dBcmd1bWVudHMgfHwgb3BlbmVyIHx8IHBhcmVudCB8fCB0b3A7CgkJ
CXdpbi5wYl9zdGF0dXNfdW5kb3VybCggdW5kb191cmwgKTsKCQl9CgkJCgkJCgkJCgkJZnVuY3Rpb24gcGF
nZVRpdGxlKCB0aXRsZSApIHsKCQkJCgkJCXdpbi5qUXVlcnkoICcjcGFnZVRpdGxlJyApLmh0bWwoIHRpdG
xlICk7CgkJfQoJCQoJCWZ1bmN0aW9uIGJiX2FjdGlvbiggYWN0aW9uLCBub3RlICkgewoJCQl3aW4uYmJfY
WN0aW9uKCBhY3Rpb24sIG5vdGUgKTsKCQl9CgkJCgkJZnVuY3Rpb24gYmJfcmVzdG9yZURhdGEoIGRhdGEg
KSB7CgkJCXdpbi5iYl9yZXN0b3JlRGF0YSggZGF0YSApOwoJCX0KCQkKCQlmdW5jdGlvbiBiYl9zaG93U3R
lcCggc3RlcCwgZGF0YSApIHsKCQkJd2luLmJiX3Nob3dTdGVwKCBzdGVwLCBkYXRhICk7CgkJfQoJCQoJPC
9zY3JpcHQ+Cjw/cGhwIH0gZWxzZSB7IC8vIERFUExPWU1FTlQgPz4KCTxzY3JpcHQ+CgkJZnVuY3Rpb24gc
GJfc3RhdHVzX2FwcGVuZCgpIHsKCQl9CgkJCgkJZnVuY3Rpb24gcGJfc3RhdHVzX3VuZG91cmwoIHVuZG9f
dXJsICkgewoJCX0KCQkKCQlmdW5jdGlvbiBwYWdlVGl0bGUoIHRpdGxlICkgewoJCX0KCQkKCQlmdW5jdGl
vbiBiYl9hY3Rpb24oIGFjdGlvbiwgbm90ZSApIHsKCQl9CgkJCgkJZnVuY3Rpb24gYmJfcmVzdG9yZURhdG
EoIGRhdGEgKSB7CgkJfQoJCQoJCWZ1bmN0aW9uIGJiX3Nob3dTdGVwKCBzdGVwLCBkYXRhICkgewoJCX0KC
Twvc2NyaXB0Pgo8P3BocCB9ID8+
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/_iframe_header.php,importbuddy
/views/_iframe_header.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/cleanupSettings.htm,importbu
ddy/views/cleanupSettings.htm
PCUgaWYgKCBwb3RlbnRpYWxQcm9ibGVtcy5sZW5ndGggPiAwICkgeyAlPgoJPGRpdiBjbGFzcz0ibWFpbl9
ib3hfaGVhZCB3YXJuaW5nX2FsZXJ0X2JveCI+CgkJPHNwYW4gY2xhc3M9ImVycm9yX3dhcm5pbmdfdGl0bG
UiPk9uZSBvciBtb3JlIHBvdGVudGlhbCBwcm9ibGVtcyBtYXkgaGF2ZSBiZWVuIGZvdW5kOjwvc3Bhbj4KC
Qk8dWwgY2xhc3M9ImJhY2t1cGJ1ZGR5X3dhcm5pbmdfbGlzdCI+CgkJCTwlIGpRdWVyeS5lYWNoKCBwb3Rl
bnRpYWxQcm9ibGVtcywgZnVuY3Rpb24oIGtleSwgcG90ZW50aWFsUHJvYmxlbSApeyAlPgoJCQk8bGk+PCU
9cG90ZW50aWFsUHJvYmxlbSU+PC9saT4KCQkJPCUgfSk7ICU+CgkJPC91bD4KCTwvZGl2Pjxicj4KPCUgfS
AlPgoKPCUgaWYgKCAnMScgPT0gYmxvZ1B1YmxpY1N0YXR1cyApIHsKCXNvdXJjZVNpdGVQdWJsaWNTdGF0d
XNUZXh0ID0gJ1B1YmxpYyAtIERvIG5vdCBkaXNjb3VyYWdlIHNlYXJjaCBlbmdpbmVzIGZyb20gaW5kZXhp
bmcgdGhpcyBzaXRlJzsKfSBlbHNlIGlmICggJzAnID09IGJsb2dQdWJsaWNTdGF0dXMgKSB7Cglzb3VyY2V
TaXRlUHVibGljU3RhdHVzVGV4dCA9ICdQcml2YXRlIC0gRGlzY291cmFnZSBzZWFyY2ggZW5naW5lcyBmcm
9tIGluZGV4aW5nIHRoaXMgc2l0ZSc7Cn0gZWxzZSB7Cglzb3VyY2VTaXRlUHVibGljU3RhdHVzVGV4dCA9I
CdDdXJyZW50IHN0YXR1cyBub3QgZGV0ZWN0ZWQnOwp9CiU+CgoKCgo8aDM+VmVyaWZ5IHNpdGUgYmVmb3Jl
IHByb2NlZWRpbmcgdG8gY2xlYW51cDo8L2gzPgo8YSBocmVmPSI8JT1ob21ldXJsJT4iIHRhcmdldD0iX2J
sYW5rIj48JT1ob21ldXJsJT48L2E+Cjxicj48YnI+CgoKPHNjcmlwdD4KalF1ZXJ5KCAnLmV4cGFuZGVyJy
ApLmNsaWNrKCBmdW5jdGlvbigpewoJalF1ZXJ5KHRoaXMpLm5leHQoJy5jb250ZW50Jykuc2xpZGVUb2dnb
GUoKTsKfSk7Cjwvc2NyaXB0PgoKPGgzPkNvbW1vbiBpc3N1ZXMgJiB0aXBzOjwvaDM+CjxkaXYgY2xhc3M9
ImV4cGFuZGVyLWJveCI+Cgk8YSBjbGFzcz0iZXhwYW5kZXIiIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSI
+Q2xpY2tpbmcgb24gYSBwb3N0IHJlc3VsdHMgaW4gYSA0MDQgTm90IEZvdW5kPC9hPgoJPGRpdiBjbGFzcz
0iY29udGVudCI+CgkJVHlwaWNhbGx5IGNhdXNlZCBieSBhIHByb2JsZW0gd2l0aCB5b3VyIC5odGFjY2Vzc
yBmaWxlLCB0aGVyZSBpcyBhIHNpbXBsZSBmaXg6IExvZyBpbnRvIHlvdXIgd3AtYWRtaW4sIG5hdmlnYXRl
IHRvIFNldHRpbmdzOiBQZXJtYWxpbmtzIGluIHRoZSBXb3JkUHJlc3MgbWVudSBhbmQgY2xpY2sgdGhlICJ
TYXZlIiBidXR0b24gdG8gdXBkYXRlIHBlcm1hbGluayBzZXR0aW5ncyB0byB5b3VyIC5odGFjY2VzcyBmaW
xlLiBUaGlzIHR5cGljYWxseSByZXNvbHZlcyB0aGlzIHByb2JsZW0uCgk8L2Rpdj4KPC9kaXY+CjxkaXYgY
2xhc3M9ImV4cGFuZGVyLWJveCI+Cgk8YSBjbGFzcz0iZXhwYW5kZXIiIGhyZWY9ImphdmFzY3JpcHQ6dm9p
ZCgwKSI+TG9nZ2luZyBpbiByZWRpcmVjdHMgYmFjayB0byB0aGUgb2xkIHNpdGU8L2E+Cgk8ZGl2IGNsYXN
zPSJjb250ZW50Ij4KCQlUaGlzIGlzIHVzdWFsbHkgY2F1c2VkIGJ5IGVudGVyaW5nIHRoZSBzb3VyY2Ugc2
l0ZSBVUkwgYXMgdGhlIGRlc3RpbmF0aW9uIFVSTCBvbiBTdGVwIDMuICBSZS1yZXN0b3JpbmcgdXNpbmcgd
GhlIGNvcnJlY3QgVVJMIHNob3VsZCBmaXggdGhpcyBwcm9ibGVtLgoJPC9kaXY+CjwvZGl2Pgo8ZGl2IGNs
YXNzPSJleHBhbmRlci1ib3giPgoJPGEgY2xhc3M9ImV4cGFuZGVyIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQ
oMCkiPlNvdXJjZSBzaXRlIGhhcyBjaGFuZ2VkIHRvIHRoZSBkZXN0aW5hdGlvbiBVUkw8L2E+Cgk8ZGl2IG
NsYXNzPSJjb250ZW50Ij4KCQlUaGlzIGlzIGNhdXNlZCBpZiB5b3UgcmVzdG9yZWQgb3ZlciB5b3VyIHNvd
XJjZSBzaXRlIGRhdGFiYXNlIGJ5IGVudGVyaW5nIHRoZSBzb3VyY2Ugc2l0ZSBkYXRhYmFzZSBzZXR0aW5n
cyBvbiBTdGVwIDMuIFRoaXMgbWVhbnMgdGhhdCB5b3VyIG5ldyBzaXRlIEFORCB5b3VyIG9sZCBzaXRlIGF
yZSBub3cgdXNpbmcgdGhlIHNhbWUgZGF0YWJhc2UgYnV0IHRoZSBkYXRhYmFzZSBoYXMgYmVlbiBtaWdyYX
RlZCB0byB3b3JrIHdpdGggdGhlIG5ldyBVUkwuIFlvdSBtYXkgcmUtcmVzdG9yZSBib3RoIHRoZSBzb3VyY
2UgYW5kIGRlc3RpbmF0aW9uIHVzaW5nIGNvcnJlY3Qgc2V0dGluZ3Mgb3IgdXNlIHRoZSBtYXNzIGRhdGFi
YXNlIHJlcGxhY2VtZW50IHRvb2wuICBZb3UgbWF5IGNvcnJlY3QgdGhlIG1vZGlmaWVkIFVSTCBvbiB0aGU
gc291cmNlIHNpdGUgYnkgdXNpbmcgdGhlIFNlcnZlciBUb29scyBwYWdlJ3MgTWFzcyBUZXh0IFJlcGxhY2
UgdG9vbCB3aXRoaW4gdGhlIERhdGFiYXNlIHRhYi4KCTwvZGl2Pgo8L2Rpdj4KPGRpdiBjbGFzcz0iZXhwY
W5kZXItYm94Ij4KCTxhIGNsYXNzPSJleHBhbmRlciIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIj5GaWxl
IHBlcm1pc3Npb25zIGhhdmUgY2hhbmdlZDwvYT4KCTxkaXYgY2xhc3M9ImNvbnRlbnQiPgoJCUN1c3RvbSB
maWxlIHBlcm1pc3Npb25zIG1heSBiZSBzZXJ2ZXItc3BlY2lmaWMgYW5kIG1heSBub3Qgc3RheSB0aGUgc2
FtZSBhcyB0aGUgc291cmNlIHNpdGUuIElmIHlvdSBtYWRlIGFueSBjdXN0b20gZmlsZSBwZXJtaXNzaW9uI
GNoYW5nZXMgKGVpdGhlciBtYW51YWxseSBvciB2aWEgYSBwbHVnaW4gc3VjaCBhcyBhIFNlY3VyaXR5IHBs
dWdpbikgeW91IG1heSBuZWVkIHRvIG1hbnVhbGx5IHJlLWFwcGx5IHRoZW0uICBOb3QgYWxsIHNlcnZlcnM
gd2lsbCBmdW5jdGlvbiBwcm9wZXJseSB3aXRoIHRoZSBzYW1lIHBlcm1pc3Npb25zLgoJPC9kaXY+CjwvZG
l2Pgo8YnI+PGJyPgoKCgo8Zm9ybSBvblN1Ym1pdD0ialF1ZXJ5KCcjY2xlYW51cFNldHRpbmdzLXJlc3Rvc
mVEYXRhJykudmFsKCB3aW5kb3cuYnRvYSggZW5jb2RlVVJJQ29tcG9uZW50KCBKU09OLnN0cmluZ2lmeSgg
d2luZG93LnJlc3RvcmVEYXRhICkgKSApICk7IiBhY3Rpb249Ij9hamF4PTYiIHRhcmdldD0ibWluaUZyYW1
lIiBtZXRob2Q9InBvc3QiPjwhLS0gdGhpcyBmb3JtIGlzIG9ubHkgc3VibWl0dGVkIGFmdGVyIHJ1bm5pbm
cgdGhyb3VnaCBqYXZhc2NyaXB0LiBzdWJtaXR0aW5nIGFjdHVhbCBmb3JtIGluc3RlYWQgb2YgdXNpbmcga
lF1ZXJ5IHBvc3Qgc28gd2UgY2FuIHRhcmdldCBpZnJhbWUuIC0tPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIg
bmFtZT0icmVzdG9yZURhdGEiIGlkPSJjbGVhbnVwU2V0dGluZ3MtcmVzdG9yZURhdGEiIHZhbHVlPSIiPgo
JCgkKCQoJPGRpdiBjbGFzcz0ibWFpbl9ib3hfZm9vdCI+CgkJCgkJPGgzPlNpdGUgU2VhcmNoIEVuZ2luZS
BWaXNpYmlsaXR5PC9oMz4KCQk8ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IHRleHQtYWxpZ
246IGxlZnQ7Ij4KCQkJPGxhYmVsIGZvcj0ic2V0X2Jsb2dfcHVibGljLWtlZXAiIHN0eWxlPSJmb250LXNp
emU6IDEycHg7Ij48aW5wdXQgdHlwZT0icmFkaW8iIG5hbWU9InNldF9ibG9nX3B1YmxpYyIgaWQ9InNldF9
ibG9nX3B1YmxpYy1rZWVwIiB2YWx1ZT0iIiBjaGVja2VkPSJjaGVja2VkIj5ObyBjaGFuZ2UgKGRlZmF1bH
QpOiA8JT1zb3VyY2VTaXRlUHVibGljU3RhdHVzVGV4dCU+PC9sYWJlbD48YnI+CgkJCTxsYWJlbCBmb3I9I
nNldF9ibG9nX3B1YmxpYy1wdWJsaWMiIHN0eWxlPSJmb250LXNpemU6IDEycHg7Ij48aW5wdXQgdHlwZT0i
cmFkaW8iIG5hbWU9InNldF9ibG9nX3B1YmxpYyIgaWQ9InNldF9ibG9nX3B1YmxpYy1wdWJsaWMiIHZhbHV
lPSIxIj5QdWJsaWMgLSBEbyBub3QgZGlzY291cmFnZSBzZWFyY2ggZW5naW5lcyBmcm9tIGluZGV4aW5nIH
RoaXMgc2l0ZTwvbGFiZWw+PGJyPgoJCQk8bGFiZWwgZm9yPSJzZXRfYmxvZ19wdWJsaWMtcHJpdmF0ZSIgc
3R5bGU9ImZvbnQtc2l6ZTogMTJweDsiPjxpbnB1dCB0eXBlPSJyYWRpbyIgbmFtZT0ic2V0X2Jsb2dfcHVi
bGljIiBpZD0ic2V0X2Jsb2dfcHVibGljLXByaXZhdGUiIHZhbHVlPSIwIj5Qcml2YXRlIC0gRGlzY291cmF
nZSBzZWFyY2ggZW5naW5lcyBmcm9tIGluZGV4aW5nIHRoaXMgc2l0ZTwvbGFiZWw+PGJyPgoJCTwvZGl2Pg
oJCQkKCQk8YnI+PGJyPgoJCQoJCTxoMz5JbXBvcnRCdWRkeSBDbGVhbnVwOjwvaDM+CgkJPHRhYmxlIHN0e
WxlPSJtYXJnaW4tbGVmdDogYXV0bzsgbWFyZ2luLXJpZ2h0OiBhdXRvOyB0ZXh0LWFsaWduOiBsZWZ0OyI+
PHRyPjx0ZD4KCQkJPGxhYmVsIGZvcj0iZGVsZXRlX2JhY2t1cCIgc3R5bGU9IndpZHRoOiBhdXRvOyBmb25
0LXNpemU6IDEycHg7Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRlbGV0ZV9iYWNrdXAiIGlkPS
JkZWxldGVfYmFja3VwIiB2YWx1ZT0iMSIgY2hlY2tlZD4gRGVsZXRlIGJhY2t1cCB6aXAgYXJjaGl2ZTwvb
GFiZWw+CgkJCTxicj4KCQkJPGxhYmVsIGZvcj0iZGVsZXRlX3RlbXAiIHN0eWxlPSJ3aWR0aDogYXV0bzsg
Zm9udC1zaXplOiAxMnB4OyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJkZWxldGVfdGVtcCIgaWQ
9ImRlbGV0ZV90ZW1wIiB2YWx1ZT0iMSIgY2hlY2tlZD4gRGVsZXRlIHRlbXBvcmFyeSBpbXBvcnQgZmlsZX
M8L2xhYmVsPgoJCTwvdGQ+PHRkPgoJCQk8bGFiZWwgZm9yPSJkZWxldGVfaW1wb3J0YnVkZHkiIHN0eWxlP
SJ3aWR0aDogYXV0bzsgZm9udC1zaXplOiAxMnB4OyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJk
ZWxldGVfaW1wb3J0YnVkZHkiIGlkPSJkZWxldGVfaW1wb3J0YnVkZHkiIHZhbHVlPSIxIiBjaGVja2VkPiB
EZWxldGUgSW1wb3J0QnVkZHkgdG9vbCBmaWxlczwvbGFiZWw+CgkJCTxicj4KCQkJPGxhYmVsIGZvcj0iZG
VsZXRlX2ltcG9ydGJ1ZGR5X2RpcmVjdG9yeSIgc3R5bGU9IndpZHRoOiBhdXRvOyBmb250LXNpemU6IDEyc
Hg7Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRlbGV0ZV9pbXBvcnRidWRkeV9kaXJlY3Rvcnki
IGlkPSJkZWxldGVfaW1wb3J0YnVkZHlfZGlyZWN0b3J5IiB2YWx1ZT0iMSIgY2hlY2tlZD4gRGVsZXRlIEl
tcG9ydEJ1ZGR5IGRpcmVjdG9yeTwvbGFiZWw+CgkJCTxicj4KCQkJPGxhYmVsIGZvcj0iZGVsZXRlX2ltcG
9ydGJ1ZGR5bG9nIiBzdHlsZT0id2lkdGg6IGF1dG87IGZvbnQtc2l6ZTogMTJweDsiPjxpbnB1dCB0eXBlP
SJjaGVja2JveCIgbmFtZT0iZGVsZXRlX2ltcG9ydGJ1ZGR5bG9nIiBpZD0iZGVsZXRlX2ltcG9ydGJ1ZGR5
bG9nIiB2YWx1ZT0iMSIgY2hlY2tlZD4gRGVsZXRlIGltcG9ydGJ1ZGR5LnR4dCBsb2cgZmlsZTwvbGFiZWw
+CgkJPC90ZD48L3RyPjwvdGFibGU+CgkJCgkJPGJyPgoJCTxjZW50ZXI+CgkJCTxpbnB1dCB0eXBlPSJzdW
JtaXQiIG5hbWU9Im5leHRTdGVwIiB2YWx1ZT0iRmluaXNoIENsZWFudXAiIGNsYXNzPSJpdC1idXR0b24gc
GJfZGF0YWJhc2VfbmV4dF90ZXN0Ij4KCQk8L2NlbnRlcj4KCQoJPC9kaXY+CjwvZm9ybT4=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/cleanupSettings.htm,importbudd
y/views/cleanupSettings.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/cpanelTutorial.htm,importbud
dy/views/cpanelTutorial.htm
PG9iamVjdCBjbGFzc2lkPSJjbHNpZDpkMjdjZGI2ZS1hZTZkLTExY2YtOTZiOC00NDQ1NTM1NDAwMDAiIGN
vZGViYXNlPSJodHRwOi8vZnBkb3dubG9hZC5tYWNyb21lZGlhLmNvbS9wdWIvc2hvY2t3YXZlL2NhYnMvZm
xhc2gvc3dmbGFzaC5jYWIjdmVyc2lvbj03LDAsMCwwIiBpZD0iQ2FwdGl2YXRlMSI+Cgk8cGFyYW0gbmFtZ
T0ibW92aWUiIHZhbHVlPSJodHRwOi8vd3d3LmNwYW5lbC5uZXQvbWVkaWEvdHV0b3JpYWxzL215c3Fsd2l6
YXJkLnN3ZiI+Cgk8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giPjxwYXJhbSBuYW1lPSJsb29
wIiB2YWx1ZT0iMCI+Cgk8ZW1iZWQgc3JjPSJodHRwOi8vd3d3LmNwYW5lbC5uZXQvbWVkaWEvdHV0b3JpYW
xzL215c3Fsd2l6YXJkLnN3ZiIgd2lkdGg9IjEwMCUiIGhlaWdodD0iNTAwIiBsb29wPSIwIiBxdWFsaXR5P
SJsb3ciIHBsdWdpbnNwYWdlPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVy
IiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgbWVudT0iZmFsc2UiPgo8L29iamVjdD4
=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/cpanelTutorial.htm,importbuddy
/views/cpanelTutorial.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/databaseSettings.htm,importb
uddy/views/databaseSettings.htm
PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5kYl90ZXN0X2NvbnRhaW5lciB7CgkJY2xlYXI6IGJvdGg7Cgk
JZGlzcGxheTogbm9uZTsKCQliYWNrZ3JvdW5kLWNvbG9yOiAjRkFGQUZBOwoJCQoJCWJvcmRlci1yYWRpdX
M6IDRweDsKCQktbW96LWJvcmRlci1yYWRpdXM6IDRweDsKCQktd2Via2l0LWJvcmRlci1yYWRpdXM6IDRwe
DsKCQlib3JkZXI6IDFweCBzb2xpZCAjREZERkRGOwoJCQoJCW1hcmdpbi1yaWdodDoxMHB4OwoJCXBhZGRp
bmc6OHB4OwoJfQo8L3N0eWxlPgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaW1wb3J
0YnVkZHkvanMvanF1ZXJ5LmxlYW5Nb2RhbC5taW4uanMiPjwvc2NyaXB0PgoKCgo8c2NyaXB0IHR5cGU9In
RleHQvamF2YXNjcmlwdCI+Cgl2YXIgZGF0YWJhc2VQYXNzZWQgPSBmYWxzZTsKCQoJalF1ZXJ5KGRvY3VtZ
W50KS5yZWFkeShmdW5jdGlvbigpIHsKCQkKCQlsb2FkVG9vbHRpcHMoKTsKCQkKCQlqUXVlcnkoICcjZGF0
YWJhc2UtYm94IGlucHV0JyApLmNoYW5nZSggZnVuY3Rpb24oKSB7CgkJCWpRdWVyeSggJyNkYl90ZXN0X2N
vbnRhaW5lcicgKS50ZXh0KCcnKS5oaWRlKCk7CgkJfSk7CgkJCgkJalF1ZXJ5KCcuc2V0dGluZ0NvcHkgYS
cgKS5jbGljayggZnVuY3Rpb24oZSl7CgkJCWUucHJldmVudERlZmF1bHQoKTsKCQkJaWYgKCBqUXVlcnkod
GhpcykuaGFzQ2xhc3MoICdzZXR0aW5nQ29weUFsbCcgKSApIHsKCQkJCXJldHVybjsKCQkJfQoJCQlzb3Vy
Y2VWYWwgPSBqUXVlcnkodGhpcykuY2xvc2VzdCgndGQnKS5wcmV2KCd0ZCcpLmZpbmQoJ2lucHV0W3R5cGU
9InRleHQiXScpLnZhbCgpOwoJCQlkZXN0aW5hdGlvbiA9IGpRdWVyeSh0aGlzKS5jbG9zZXN0KCd0ZCcpLm
5leHQoJ3RkJykuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdJyk7CgkJCWRlc3RpbmF0aW9uLnZhbCggc291c
mNlVmFsICk7CgkJfSk7CgkJalF1ZXJ5KCcuc2V0dGluZ0NvcHlBbGwgYScgKS5jbGljayggZnVuY3Rpb24o
ZSl7CgkJCWUucHJldmVudERlZmF1bHQoKTsKCQkJcGFyZW50VGFibGUgPSBqUXVlcnkodGhpcykuY2xvc2V
zdCgndGFibGUnKTsKCQkJcGFyZW50VGFibGUuZmluZCgndHInKS5lYWNoKCBmdW5jdGlvbigpewoJCQkJc2
V0dGluZ0NvcHlJdGVtID0galF1ZXJ5KHRoaXMpLmZpbmQoJy5zZXR0aW5nQ29weScpOwoJCQkJaWYgKCAhI
HNldHRpbmdDb3B5SXRlbS5oYXNDbGFzcyggJ3NldHRpbmdDb3B5QWxsJyApICkgewoJCQkJCXNldHRpbmdD
b3B5SXRlbS5maW5kKCdhJykudHJpZ2dlcignY2xpY2snKTsKCQkJCX0KCQkJfSk7CgkJfSk7CgkJCgkJCgk
JCgkJalF1ZXJ5KCcjcGJfYmFja3VwYnVkZHlfbWFsd2FyZXNjYW5sb2FkaW5nJykuc2xpZGVUb2dnbGUoKT
sKCQkKCQlqUXVlcnkoICcuZGJfc2V0dGluZycgKS5jaGFuZ2UoIGZ1bmN0aW9uKCkgewoJCQlqUXVlcnkoJ
y5wYl9kYXRhYmFzZV9uZXh0X3Rlc3QnKS5yZW1vdmVDbGFzcyggJ2l0LWF0dGVudGlvbicgKTsKCQl9KTsK
CQkKCQlqUXVlcnkoJy5wYl9kYXRhYmFzZV9uZXh0X3Rlc3QnKS5jbGljayggZnVuY3Rpb24oZSkgewoJCQl
lLnByZXZlbnREZWZhdWx0KCk7CgkJCQoJCQlqUXVlcnkoICcjZGJfdGVzdF9jb250YWluZXInICkudGV4dC
gnJykuaGlkZSgpOwoJCQkKCQkJaWYgKCAoICcnID09IGpRdWVyeSgnI215c3FsX3NlcnZlcicpLnZhbCgpI
CkgfHwgKCAnJyA9PSBqUXVlcnkoJyNteXNxbF9kYXRhYmFzZScpLnZhbCgpICkgfHwgKCAnJyA9PSBqUXVl
cnkoJyNteXNxbF91c2VybmFtZScpLnZhbCgpICkgfHwgKCAnJyA9PSBqUXVlcnkoJyNteXNxbF9wcmVmaXg
nKS52YWwoKSApICkgewoJCQkJalF1ZXJ5KCAnI2RiX3Rlc3RfY29udGFpbmVyJyApLmh0bWwoICc8c3Bhbi
BjbGFzcz0icGJfbGFiZWwgcGJfbGFiZWwtd2FybmluZyAgYW5pbWF0ZWQgaW5maW5pdGUgdGFkYSI+TWlzc
2luZyBGaWVsZHM8L3NwYW4+ICZuYnNwOyZuYnNwOyBBbGwgZGF0YWJhc2Ugc2V0dGluZ3MgKGV4Y2VwdCBv
cHRpb25hbCBwYXNzd29yZCkgYXJlIHJlcXVpcmVkIGFuZCBtdXN0IGJlIGVudGVyZWQgdG8gY29udGludWU
uJyApLnNob3coKTsKCQkJCWpRdWVyeSgnLnBiX2RhdGFiYXNlX25leHRfdGVzdCcpLmFkZENsYXNzKCAnaX
QtYXR0ZW50aW9uJyApOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJCQoJCQlOUHJvZ3Jlc3Muc3RhcnQoK
TsKCQkJCgkJCWpRdWVyeSgnLmlucHV0LWF0dGVudGlvbicgKS5yZW1vdmVDbGFzcyggJ2lucHV0LWF0dGVu
dGlvbicgKTsKCQkJalF1ZXJ5KCcucGJfZGF0YWJhc2VfbmV4dF90ZXN0JykucmVtb3ZlQ2xhc3MoICdpdC1
hdHRlbnRpb24nICk7CgkJCQoJCQl2YXIgc2VydmVyID0galF1ZXJ5KCcjbXlzcWxfc2VydmVyJykudmFsKC
k7CgkJCXZhciBkYXRhYmFzZSA9IGpRdWVyeSgnI215c3FsX2RhdGFiYXNlJykudmFsKCk7CgkJCXZhciB1c
2VybmFtZSA9IGpRdWVyeSgnI215c3FsX3VzZXJuYW1lJykudmFsKCk7CgkJCXZhciBwYXNzd29yZCA9IGpR
dWVyeSgnI215c3FsX3Bhc3N3b3JkJykudmFsKCk7CgkJCXZhciBwcmVmaXggPSBqUXVlcnkoJyNteXNxbF9
wcmVmaXgnKS52YWwoKTsKCQkJdmFyIGRhdGFiYXNlTWV0aG9kU3RyYXRlZ3kgPSBqUXVlcnkoICcjZGF0YW
Jhc2VNZXRob2RTdHJhdGVneScpLnZhbCgpOwoJCQkKCQkJYmFja3VwYnVkZHlfbG9nKCAnQ2FsbGluZyBte
XNxbF90ZXN0IEFKQVguJyk7CgkJCWpRdWVyeS5hamF4KCdpbXBvcnRidWRkeS5waHAnLAoJCQkJewoJCQkJ
CW1ldGhvZDogJ1BPU1QnLAoJCQkJCWRhdGE6IHsKCQkJCQkJCWFqYXg6ICdteXNxbF90ZXN0JywKCQkJCQk
JCXNlcnZlcjogc2VydmVyLAoJCQkJCQkJZGF0YWJhc2U6IGRhdGFiYXNlLAoJCQkJCQkJdXNlcm5hbWU6IH
VzZXJuYW1lLAoJCQkJCQkJcGFzc3dvcmQ6IHBhc3N3b3JkLAoJCQkJCQkJcHJlZml4OiBwcmVmaXgKCQkJC
Ql9LAoJCQkJCWVycm9yOiBmdW5jdGlvbigganFYSFIsIHRleHRTdGF0dXMgKSB7CgkJCQkJCW1lc3NhZ2Ug
PSAnRVJST1IgIzMyOTcyMzogVW5leHBlY3RlZCBzZXJ2ZXIgcmVzcG9uc2UgZnJvbSBBSkFYLiBTZWUgU3R
hdHVzIExvZyBmb3IgbW9yZSBkZXRhaWxzLiBSZXNwb25zZTogYCcgKyB0ZXh0U3RhdHVzICsgJ2AsIEhUVF
AgU3RhdHVzOiBgJyArIGpxWEhSLnN0YXR1cyArICdgLCBTdGF0dXMgVGV4dDogYCcgKyBqcVhIUi5zdGF0d
XNUZXh0ICsgJ2AsIFJlc3BvbnNlIFRleHQ6IGAnICsganFYSFIucmVzcG9uc2VUZXh0ICsgJ2AuJzsKCQkJ
CQkJYWxlcnQoIG1lc3NhZ2UgKTsKCQkJCQkJYmFja3VwYnVkZHlfbG9nKCBtZXNzYWdlICk7CgkJCQkJCWp
RdWVyeSgnLnBiX2RhdGFiYXNlX25leHRfdGVzdCcpLmFkZENsYXNzKCAnaXQtYXR0ZW50aW9uJyApOwoJCQ
kJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfSwKCQkJCQlzdWNjZXNzOiBmdW5jdGlvbihkYXRhKSB7CgkJCQkJC
U5Qcm9ncmVzcy5kb25lKCk7CgkJCQkJCWRhdGEgPSBqUXVlcnkudHJpbSggZGF0YSApOwoJCQkJCQliYWNr
dXBidWRkeV9sb2coICdNeVNRTCB0ZXN0IHJlc3VsdHM6IGAnICsgZGF0YSArICdgLicgKTsKCQkJCQkJaWY
gKCBkYXRhLmluZGV4T2YoIm11c3QgbG9nIGluIikgIT0gLTEpIHsKCQkJCQkJCWFsZXJ0KCAnWW91ciBzZX
NzaW9uIGhhcyBleHBpcmVkLiBQbGVhc2UgcmV0dXJuIHRvIHRoZSByZXN0b3JlIGhvbWVwYWdlIGFuZCBsb
2cgYmFjayBpbi4nICk7CgkJCQkJCQlqUXVlcnkoJy5wYl9kYXRhYmFzZV9uZXh0X3Rlc3QnKS5hZGRDbGFz
cyggJ2l0LWF0dGVudGlvbicgKTsKCQkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJfQoKCQkJCQkJLy8gUGF
yc2UganNvbi4KCQkJCQkJdHJ5IHsKCQkJCQkJCXJlc3BvbnNlID0gSlNPTi5wYXJzZSggZGF0YSApOwoJCQ
kJCQl9IGNhdGNoKGUpIHsKCQkJCQkJCW1lc3NhZ2UgPSAnRVJST1IgIzgzOTk4MzogRmFpbHVyZSBwYXJza
W5nIHJldHVybmVkIHNlcnZlciBkYXRhLiBTZWUgU3RhdHVzIExvZyBmb3IgbW9yZSBkZXRhaWxzLiBEZXRh
aWxzOiBgJyArIGUubWVzc2FnZSArICdgLiBSZXNwb25zZTogYCcgKyBkYXRhICsgJ2AuJzsKCQkJCQkJCWF
sZXJ0KCBtZXNzYWdlICk7CgkJCQkJCQliYWNrdXBidWRkeV9sb2coIG1lc3NhZ2UgKTsKCQkJCQkJCWpRdW
VyeSgnLnBiX2RhdGFiYXNlX25leHRfdGVzdCcpLmFkZENsYXNzKCAnaXQtYXR0ZW50aW9uJyApOwoJCQkJC
QkJcmV0dXJuIGZhbHNlOwoJCQkJCQl9CgkJCQkJCWNvbnNvbGUubG9nKCByZXNwb25zZSApOwoJCQkJCQkK
CQkJCQkJCgkJCQkJCS8vIE9WRVJBTEwgRVJST1IKCQkJCQkJaWYgKCAnJyAhPSByZXNwb25zZS5vdmVyYWx
sX2Vycm9yICkgewoJCQkJCQkJalF1ZXJ5KCAnI2RiX3Rlc3RfY29udGFpbmVyJyApLmh0bWwoICc8c3Bhbi
BjbGFzcz0icGJfbGFiZWwgcGJfbGFiZWwtd2FybmluZyBhbmltYXRlZCBpbmZpbml0ZSB0YWRhIj5FcnJvc
jwvc3Bhbj4gJm5ic3A7Jm5ic3A7ICcgKyByZXNwb25zZS5vdmVyYWxsX2Vycm9yICkuc2hvdygpOwoJCQkJ
CQkJalF1ZXJ5KCcucGJfZGF0YWJhc2VfbmV4dF90ZXN0JykuYWRkQ2xhc3MoICdpdC1hdHRlbnRpb24nICk
7CgkJCQkJCQliYWNrdXBidWRkeV9sb2coICdteXNxbCB0ZXN0IGVycm9yLiBTZWUgcmVzdWx0cyBhYm92ZS
4nICk7CgkJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJCX0KCQkJCQkJCgkJCQkJCQoJCQkJCQkvLyBFUlJPU
lMKCQkJCQkJaWYgKCBmYWxzZSA9PT0gcmVzcG9uc2UuY29ubmVjdCApIHsKCQkJCQkJCWpRdWVyeSggJyNt
eXNxbF9zZXJ2ZXIsI215c3FsX3VzZXJuYW1lLCNteXNxbF9wYXNzd29yZCcgKS5hZGRDbGFzcyggJ2lucHV
0LWF0dGVudGlvbicgKTsKCQkJCQkJCWpRdWVyeSggJyNkYl90ZXN0X2NvbnRhaW5lcicgKS5odG1sKCAnPH
NwYW4gY2xhc3M9InBiX2xhYmVsIHBiX2xhYmVsLXdhcm5pbmcgYW5pbWF0ZWQgaW5maW5pdGUgdGFkYSI+R
GF0YWJhc2UgRXJyb3I8L3NwYW4+ICZuYnNwOyZuYnNwOyBVbmFibGUgdG8gY29ubmVjdCAvIGF1dGhlbnRp
Y2F0ZSB0byBNeVNRTCBzZXJ2ZXIuICcgKyByZXNwb25zZS5jb25uZWN0X2Vycm9yICkuc2hvdygpOwoJCQk
JCQkJalF1ZXJ5KCcucGJfZGF0YWJhc2VfbmV4dF90ZXN0JykuYWRkQ2xhc3MoICdpdC1hdHRlbnRpb24nIC
k7CgkJCQkJCQliYWNrdXBidWRkeV9sb2coICdteXNxbCB0ZXN0IGVycm9yLiBTZWUgcmVzdWx0cyBhYm92Z
S4nICk7CgkJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJCX0KCQkJCQkJCgkJCQkJCWlmICggZmFsc2UgPT09
IHJlc3BvbnNlLnNlbGVjdGRiICkgewoJCQkJCQkJalF1ZXJ5KCAnI215c3FsX2RhdGFiYXNlJyApLmFkZEN
sYXNzKCAnaW5wdXQtYXR0ZW50aW9uJyApOwoJCQkJCQkJalF1ZXJ5KCAnI2RiX3Rlc3RfY29udGFpbmVyJy
ApLmh0bWwoICc8c3BhbiBjbGFzcz0icGJfbGFiZWwgcGJfbGFiZWwtd2FybmluZyBhbmltYXRlZCBpbmZpb
ml0ZSB0YWRhIj5EYXRhYmFzZSBFcnJvcjwvc3Bhbj4gJm5ic3A7Jm5ic3A7IFVuYWJsZSB0byBzZWxlY3Qg
ZGF0YWJhc2UuIFZlcmlmeSB0aGUgZGF0YWJhc2UgZXhpc3RzICYgdGhlIHVzZXIgd2FzIGdyYW50ZWQgQUx
MIHByaXZpbGVnZXMuICcgKyByZXNwb25zZS5zZWxlY3RkYl9lcnJvciApLnNob3coKTsKCQkJCQkJCWpRdW
VyeSgnLnBiX2RhdGFiYXNlX25leHRfdGVzdCcpLmFkZENsYXNzKCAnaXQtYXR0ZW50aW9uJyApOwoJCQkJC
QkJYmFja3VwYnVkZHlfbG9nKCAnbXlzcWwgdGVzdCBlcnJvci4gU2VlIHJlc3VsdHMgYWJvdmUuJyApOwoJ
CQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCQl9CgkJCQkJCQoJCQkJCQlpZiAoIGZhbHNlID09PSByZXNwb25
zZS5jcmVhdGVkcm9wdGFibGUgKSB7CgkJCQkJCQlqUXVlcnkoICcjZGJfdGVzdF9jb250YWluZXInICkuaH
RtbCggJzxzcGFuIGNsYXNzPSJwYl9sYWJlbCBwYl9sYWJlbC13YXJuaW5nIGFuaW1hdGVkIGluZmluaXRlI
HRhZGEiPkRhdGFiYXNlIEVycm9yPC9zcGFuPiAmbmJzcDsmbmJzcDsgVW5hYmxlIHRvIGNyZWF0ZSAmIGRy
b3AgdGVzdCB0YWJsZS4gVmVyaWZ5IHRoZSBlbnRlcmVkIHVzZXIgaGFzIEFMTCBwcml2aWxlZ2VzIGZvciB
0aGUgc3BlY2lmaWVkIGRhdGFiYXNlLiAnICsgcmVzcG9uc2UuY3JlYXRlZHJvcHRhYmxlX2Vycm9yICkuc2
hvdygpOwoJCQkJCQkJalF1ZXJ5KCcucGJfZGF0YWJhc2VfbmV4dF90ZXN0JykuYWRkQ2xhc3MoICdpdC1hd
HRlbnRpb24nICk7CgkJCQkJCQliYWNrdXBidWRkeV9sb2coICdteXNxbCB0ZXN0IGVycm9yLiBTZWUgcmVz
dWx0cyBhYm92ZS4nICk7CgkJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJCX0KCQkJCQkJaWYgKCBmYWxzZSA
9PT0gcmVzcG9uc2UucHJlZml4ICkgewoJCQkJCQkJalF1ZXJ5KCAnI2RiX3Rlc3RfY29udGFpbmVyJyApLm
h0bWwoICc8c3BhbiBjbGFzcz0icGJfbGFiZWwgcGJfbGFiZWwtd2FybmluZyBhbmltYXRlZCBpbmZpbml0Z
SB0YWRhIj5EYXRhYmFzZSBFcnJvcjwvc3Bhbj4gJm5ic3A7Jm5ic3A7IFRoZSBzcGVjaWZpZWQgcHJlZml4
IGRvZXMgbm90IHRoZSBiYXJlIG1pbmltdW0gY3JpdGVyaWEgZm9yIFdvcmRQcmVzcy4gSXQgc2hvdWxkIGJ
lIGluIHRoZSBmb3JtYXQgb2YgbGV0dGVycyAob3IgbnVtYmVycywgYnV0IG5vdCBhdCB0aGUgYmVnaW5uaW
5nKSBmb2xsb3dlZCBieSBhbiB1bmRlcnNjb3JlLiA8Yj5FaXRoZXIgY2hhbmdlIHRoZSBwcmVmaXggb3Igc
2VsZWN0IHRvIGlnbm9yZSB0aGlzIHdhcm5pbmcgYmVsb3cgdG8gcHJvY2VlZC48L2I+IEV4YW1wbGVzOiB3
cF8sIHdwMl8sIG15d29yZHByZXNzXywgZHVzdGluczJuZGJsb2dfJyApLnNob3coKTsKCQkJCQkJCWpRdWV
yeSggJyNkYl93aXBlX29wdGlvbnMnICkuc2hvdygpOwoJCQkJCQkJalF1ZXJ5KCcucGJfZGF0YWJhc2Vfbm
V4dF90ZXN0JykuYWRkQ2xhc3MoICdpdC1hdHRlbnRpb24nICk7CgkJCQkJCQliYWNrdXBidWRkeV9sb2coI
CdteXNxbCB0ZXN0IGVycm9yLiBTZWUgcmVzdWx0cyBhYm92ZS4nICk7CgkJCQkJCQlyZXR1cm4gZmFsc2U7
CgkJCQkJCX0KCQkJCQkJCgkJCQkJCQoJCQkJCQkKCQkJCQkJLy8gUFJFRklYIFdBUk5JTkdTCgkJCQkJCXB
yZWZpeF93YXJuX2lnbm9yZSA9IGpRdWVyeSggJyNpZ25vcmVfcHJlZml4X3dhcm5pbmdzX2NoZWNrYm94Jy
ApLmlzKCI6Y2hlY2tlZCIpOwoJCQkJCQkKCQkJCQkJaWYgKCAoIHRydWUgPT09IHJlc3BvbnNlLnByZWZpe
F93YXJuICkgJiYgKCB0cnVlID09PSB3aW5kb3cucmVzdG9yZURhdGEucmVzdG9yZURhdGFiYXNlICkgKSB7
CgkJCQkJCQlpZiAoICFwcmVmaXhfd2Fybl9pZ25vcmUgKSB7CgkJCQkJCQkJalF1ZXJ5KCAnI2RiX3Rlc3R
fY29udGFpbmVyJyApLmh0bWwoICc8c3BhbiBjbGFzcz0icGJfbGFiZWwgcGJfbGFiZWwtd2FybmluZyBhbm
ltYXRlZCBpbmZpbml0ZSB0YWRhIj5EYXRhYmFzZSBXYXJuaW5nPC9zcGFuPiAmbmJzcDsmbmJzcDsgQSBwc
mVmaXggaW4gdGhlIGZvcm1hdCBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBmb2xsb3dlZCBieSBhbiB1
bmRlcnNjb3JlIGlzIDxiPmhpZ2hseSByZWNvbW1
lbmRlZDwvYj4gdG8gY29uZm9ybSB0byBXb3JkUHJlc3MgJiBCYWNrdXBCdWRkeSBjb252ZW50aW9ucyAmIG
V4cGVjdGF0aW9ucy4gVGhpcyBtYXkgYWxzbyBjYXVzZSB3YXJuaW5ncyBvZiB0YWJsZXMgYWxyZWFkeSBle
GlzdGluZyB0aGF0IGRvIG5vdC4gPGI+RWl0aGVyIGNoYW5nZSB0aGUgcHJlZml4IG9yIHNlbGVjdCB0byBp
Z25vcmUgdGhpcyB3YXJuaW5nIGJlbG93IHRvIHByb2NlZWQuPC9iPiBFeGFtcGxlczogd3BfLCB3cDJfLCB
teXdvcmRwcmVzc18sIGR1c3RpbnMybmRibG9nXycgKS5zaG93KCk7CgkJCQkJCQkJalF1ZXJ5KCAnI2RiX3
dpcGVfb3B0aW9ucycgKS5zaG93KCk7CgkJCQkJCQkJalF1ZXJ5KCAnI2lnbm9yZV9wcmVmaXhfd2FybmluZ
3MnICkuc2hvdygpOwoJCQkJCQkJCWpRdWVyeSgnLnBiX2RhdGFiYXNlX25leHRfdGVzdCcpLmFkZENsYXNz
KCAnaXQtYXR0ZW50aW9uJyApOwoJCQkJCQkJCWJhY2t1cGJ1ZGR5X2xvZyggJ215c3FsIHByZWZpeCBmb3J
tYXQgd2FybmluZy4nICk7CgkJCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCQkJfQoJCQkJCQl9IGVsc2Ugey
AvLyBObyBwcmVmaXggZm9ybWF0IHdhcm5pbmcgc28gaGlkZSBvcHRpb24gdG8gYnlwYXNzLgoJCQkJCQkJa
lF1ZXJ5KCAnI2lnbm9yZV9wcmVmaXhfd2FybmluZ3NfY2hlY2tib3gnICkuYXR0cignY2hlY2tlZCcsIGZh
bHNlKTsKCQkJCQkJCWpRdWVyeSggJyNpZ25vcmVfcHJlZml4X3dhcm5pbmdzJykuaGlkZSgpOwoJCQkJCQl
9CgkJCQkJCQoJCQkJCQkvLyBQcmVmaXggZXhpc3RzLgoJCQkJCQlpZiggICggdHJ1ZSA9PT0gcmVzcG9uc2
UucHJlZml4X2V4aXN0cyApICYmICggdHJ1ZSA9PT0gd2luZG93LnJlc3RvcmVEYXRhLnJlc3RvcmVEYXRhY
mFzZSApICkgewoJCQkJCQkJaWYgKCAoICEgalF1ZXJ5KCAnI3dpcGVfcHJlZml4JykuaXMoICc6Y2hlY2tl
ZCcgKSApICYmICggISBqUXVlcnkoICcjd2lwZV9kYXRhYmFzZScpLmlzKCAnOmNoZWNrZWQnICkgKSApIHs
KCQkJCQkJCQliYWNrdXBidWRkeV9sb2coICdteXNxbCBwcmVmaXggZXhpc3RzIHdhcm5pbmcuJyApOwoJCQ
kJCQkJCWpRdWVyeSggJyNkYl90ZXN0X2NvbnRhaW5lcicgKS5odG1sKCAnPHNwYW4gY2xhc3M9InBiX2xhY
mVsIHBiX2xhYmVsLXdhcm5pbmcgYW5pbWF0ZWQgaW5maW5pdGUgdGFkYSI+RGF0YWJhc2UgV2FybmluZzwv
c3Bhbj4gJm5ic3A7Jm5ic3A7IFRoZSBzcGVjaWZpZWQgcHJlZml4IGFwcGVhcnMgdG8gYWxyZWFkeSBleGl
zdCBpbiB0aGlzIGRhdGFiYXNlLiBSZXN0b3JpbmcgbWF5IG92ZXJ3cml0ZSBleGlzdGluZyBXb3JkUHJlc3
MgZGF0YS4gPGI+Q2hhbmdlIHRoZSBwcmVmaXgsIHNlbGVjdCB0byBkZWxldGUgZXhpc3RpbmcgdGFibGVzI
GJlbG93LCBvciB1c2UgdGhlIGFkdmFuY2VkIG9wdGlvbiB0byBpZ25vcmUgU1FMIGVycm9ycyB0byBwcm9j
ZWVkLjwvYj4nICkuc2hvdygpOwoJCQkJCQkJCWpRdWVyeSggJyNkYl93aXBlX29wdGlvbnMnICkuc2hvdyg
pOwoJCQkJCQkJCWlmICggIGpRdWVyeSgnI2lnbm9yZV9zcWxfZXJyb3JzJykuaXMoICc6Y2hlY2tlZCcgKS
ApIHsKCQkJCQkJCQkJalF1ZXJ5KCAnI2RiX3Rlc3RfY29udGFpbmVyJyApLmh0bWwoICc8c3BhbiBjbGFzc
z0icGJfbGFiZWwgcGJfbGFiZWwtd2FybmluZyBhbmltYXRlZCBpbmZpbml0ZSB0YWRhIj5EYXRhYmFzZSBX
YXJuaW5nPC9zcGFuPiAmbmJzcDsmbmJzcDsgVGhlIHNwZWNpZmllZCBwcmVmaXggYXBwZWFycyB0byBhbHJ
lYWR5IGV4aXN0IGluIHRoaXMgZGF0YWJhc2UuIEhvd2V2ZXIsIHRoZSBhZHZhbmNlZCBvcHRpb24gdG8gaW
dub3JlIGV4aXN0aW5nIHRhYmxlcyAmIFNRTCBlcnJvcnMgd2FzIHNlbGVjdGVkLiBVc2UgZXh0cmVtZSBjY
XV0aW9uLicgKS5zaG93KCk7CgkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJalF1ZXJ5KCcucGJfZGF0YWJh
c2VfbmV4dF90ZXN0JykuYWRkQ2xhc3MoICdpdC1hdHRlbnRpb24nICk7CgkJCQkJCQkJCXJldHVybiBmYWx
zZTsKCQkJCQkJCQl9CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJCgkJCQkJCWJhY2t1cGJ1ZGR5X2xvZyggJ2
15c3FsIHRlc3Qgc3VjY2Vzcy4uLi4gcHJvY2VlZGluZyB0byBpbXBvcnQgc29vbi4nICk7CgkJCQkJCQoJC
QkJCQkvLyBTZXQgdXAgZGF0YWJhc2Ugc2V0dGluZ3MgaW4gcmVzdG9yZURhdGEuCgkJCQkJCXdpbmRvdy5y
ZXN0b3JlRGF0YS5kYXRhYmFzZVNldHRpbmdzLnNlcnZlciA9IHNlcnZlcjsKCQkJCQkJd2luZG93LnJlc3R
vcmVEYXRhLmRhdGFiYXNlU2V0dGluZ3MuZGF0YWJhc2UgPSBkYXRhYmFzZTsKCQkJCQkJd2luZG93LnJlc3
RvcmVEYXRhLmRhdGFiYXNlU2V0dGluZ3MudXNlcm5hbWUgPSB1c2VybmFtZTsKCQkJCQkJd2luZG93LnJlc
3RvcmVEYXRhLmRhdGFiYXNlU2V0dGluZ3MucGFzc3dvcmQgPSBwYXNzd29yZDsKCQkJCQkJd2luZG93LnJl
c3RvcmVEYXRhLmRhdGFiYXNlU2V0dGluZ3MucHJlZml4ID0gcHJlZml4OwoJCQkJCQl3aW5kb3cucmVzdG9
yZURhdGEuZGF0YWJhc2VTZXR0aW5ncy5kYXRhYmFzZU1ldGhvZFN0cmF0ZWd5ID0gZGF0YWJhc2VNZXRob2
RTdHJhdGVneTsKCQkJCQkKCQkJCQkJaWYgKCBqUXVlcnkoICcjd2lwZV9wcmVmaXgnKS5pcyggJzpjaGVja
2VkJyApICkgewoJCQkJCQkJd2luZG93LnJlc3RvcmVEYXRhLmRhdGFiYXNlU2V0dGluZ3Mud2lwZVByZWZp
eCA9IHRydWU7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQl3aW5kb3cucmVzdG9yZURhdGEuZGF0YWJhc2VTZXR
0aW5ncy53aXBlUHJlZml4ID0gZmFsc2U7CgkJCQkJCX0KCQkJCQkJaWYgKCBqUXVlcnkoICcjd2lwZV9kYX
RhYmFzZScpLmlzKCAnOmNoZWNrZWQnICkgKSB7CgkJCQkJCQl3aW5kb3cucmVzdG9yZURhdGEuZGF0YWJhc
2VTZXR0aW5ncy53aXBlRGF0YWJhc2UgPSB0cnVlOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJd2luZG93LnJl
c3RvcmVEYXRhLmRhdGFiYXNlU2V0dGluZ3Mud2lwZURhdGFiYXNlID0gZmFsc2U7CgkJCQkJCX0KCQkJCQk
JaWYgKCBqUXVlcnkoICcjaWdub3JlX3NxbF9lcnJvcnMnKS5pcyggJzpjaGVja2VkJyApICkgewoJCQkJCQ
kJd2luZG93LnJlc3RvcmVEYXRhLmRhdGFiYXNlU2V0dGluZ3MuaWdub3JlU3FsRXJyb3JzID0gdHJ1ZTsKC
QkJCQkJfSBlbHNlIHsKCQkJCQkJCXdpbmRvdy5yZXN0b3JlRGF0YS5kYXRhYmFzZVNldHRpbmdzLmlnbm9y
ZVNxbEVycm9ycyA9IGZhbHNlOwoJCQkJCQl9CgkJCQkJCWlmICggalF1ZXJ5KCAnI2RiX2ZvcmNlX3NzbCc
pLmlzKCAnOmNoZWNrZWQnICkgKSB7CgkJCQkJCQl3aW5kb3cucmVzdG9yZURhdGEuZGF0YWJhc2VTZXR0aW
5ncy5kYl9mb3JjZV9zc2wgPSB0cnVlOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJd2luZG93LnJlc3RvcmVEY
XRhLmRhdGFiYXNlU2V0dGluZ3MuZGJfZm9yY2Vfc3NsID0gZmFsc2U7CgkJCQkJCX0KCQkJCQkJCgkJCQkJ
CS8vIERldGVybWluZSBTUUwgZmlsZXMgdG8gcmVzdG9yZSBiYXNlZCBvbiBhZHZhbmNlZCBjaGVja2VkIGl
0ZW1zLiBPdmVyd3JpdGVzIHByaW9yIHZhbHVlIG9mIHRoaXMgdmFyLgoJCQkJCQl3aW5kb3cucmVzdG9yZU
RhdGEuZGF0YWJhc2VTZXR0aW5ncy5zcWxGaWxlcyA9IFtdOwoJCQkJCQlqUXVlcnkoJy5kYXRhYmFzZUZpb
GU6Y2hlY2tlZCcpLmVhY2goIGZ1bmN0aW9uKCl7CgkJCQkJCQl3aW5kb3cucmVzdG9yZURhdGEuZGF0YWJh
c2VTZXR0aW5ncy5zcWxGaWxlcy5wdXNoKCBqUXVlcnkodGhpcykudmFsKCkgKTsKCQkJCQkJfSk7CgkJCQk
JCQoJCQkJCQkvLyBVcGRhdGUgbWF4IGV4ZWN1dGlvbiB0aW1lLgoJCQkJCQl3aW5kb3cucmVzdG9yZURhdG
EubWF4RXhlY3V0aW9uVGltZSA9IGpRdWVyeSgnI21heF9leGVjdXRpb25fdGltZScpLnZhbCgpOwoJCQkJC
QkKCQkJCQkJLy8gTWFkZSBpdCBoZXJlIHNvIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3MuCgkJCQkJCWNvbnNv
bGUuZGlyKCB3aW5kb3cucmVzdG9yZURhdGEgKTsKCQkJCQkJCgkJCQkJCWpRdWVyeSgnI2JhY2t1cGJ1ZGR
5LWRiU2V0dGluZ3NGb3JtLXJlc3RvcmVEYXRhJykudmFsKCB3aW5kb3cuYnRvYSggZW5jb2RlVVJJQ29tcG
9uZW50KCBKU09OLnN0cmluZ2lmeSggd2luZG93LnJlc3RvcmVEYXRhICkgKSApICk7IC8vIHdpbmRvdy5id
G9hKCkgYmFzZTY0IGVuY29kZXMgdG8gZ2V0IGFyb3VuZCB0cmFuc2ZlciBpc3N1ZXMgKyBDaHJvbWUgWFNT
IGF1ZGl0b3IuIGVuY29kZVVSSUNvbXBvbmVudCBuZWVkZWQgdG8ga2VlcCBVVEY4IGZyb20gZ2V0dGluZyB
tdWNrZWQgdXAgZ29pbmcgb3ZlciB0byBQSFAncyBqc29uX2RlY29kZSgpLiBCbGVjaCEKCQkJCQkJalF1ZX
J5KCcjZGF0YWJhc2UtYm94JykuaGlkZSgpOwoJCQkJCQkKCQkJCQkJYmFja3VwYnVkZHlfbG9nKCAnTW92a
W5nIG9uIHRvIGltcG9ydGluZ0RhdGFiYXNlIHN0ZXAgbm93Li4uJyApOwoJCQkJCQlqUXVlcnkoJyNkYXRh
YmFzZS1ib3gtd29ya2luZycpLmh0bWwoIG5ldyBFSlMoe3VybDogJ2ltcG9ydGJ1ZGR5L3ZpZXdzL2ltcG9
ydGluZ0RhdGFiYXNlLmh0bSd9KS5yZW5kZXIoKSApOwoJCQkJCQlqUXVlcnkoICcjYmFja3VwYnVkZHktZG
JTZXR0aW5nc0Zvcm0nKS5zdWJtaXQoKTsKCQkJCQkJCgkJCQkJCXJldHVybjsKCQkJCQl9CgkJCQl9CgkJC
Sk7CgkJCXJldHVybiBmYWxzZTsKCQl9KTsKCQkKCQkKCQlqUXVlcnkoJy5jcmVhdGVkYl9tb2RhbF9saW5r
JykuY2xpY2soIGZ1bmN0aW9uKCkgewoJCQl1cmwgPSBqUXVlcnkoJyNzaXRlX3VybCcpLnZhbCgpOwoJCQl
2YXIgaG9zdG5hbWUgPSBqUXVlcnkoJzxhPicpLnByb3AoJ2hyZWYnLCB1cmwpLnByb3AoJ2hvc3RuYW1lJy
k7CgkJCS8vYWxlcnQoIGhvc3RuYW1lICk7CgkJCWpRdWVyeSggJyNjcGFuZWxfdXJsJyApLnZhbCggaG9zd
G5hbWUgKTsKCQkJLy9qUXVlcnkoICcuY3BhbmVsX3VybF9mdWxsJyApLmh0bWwoICdodHRwOi8vJyArIGhv
c3RuYW1lICsgJzoyMDgyLycgKTsKCQkJCgkJfSk7CgkJalF1ZXJ5KCAnI2NwYW5lbF91cmwnICkuY2hhbmd
lKCBmdW5jdGlvbigpIHsKCQkJLy9qUXVlcnkoICcuY3BhbmVsX3VybF9mdWxsJyApLmh0bWwoICdodHRwOi
8vJyArIGpRdWVyeSh0aGlzKS52YWwoKSArICc6MjA4Mi8nICk7CgkJfSk7CgkJalF1ZXJ5KCcubGVhbk1vZ
GFsJykubGVhbk1vZGFsKAoJCQl7IHRvcCA6IDQ1LCBvdmVybGF5IDogMC40LCBjbG9zZUJ1dHRvbjogIi5t
b2RhbF9jbG9zZSIgfQoJCSk7CgkJCgkJalF1ZXJ5KCAnLmNwYW5lbF91c2VyJyApLmNoYW5nZShmdW5jdGl
vbigpewoJCQlqUXVlcnkoICcuY3BhbmVsX3VzZXJfbWlycm9yJyApLmh0bWwoIGpRdWVyeSggJyNjcGFuZW
xfdXNlcicgKS52YWwoKS5zdWJzdHJpbmcoMCw4KSArICdfJyApOwoJCX0pOwoJCQoJCWpRdWVyeSggJy5jc
GFuZWxfY3JlYXRlZGJfY3JlYXRlJyApLmNsaWNrKCBmdW5jdGlvbigpIHsKCQkJLy8gVmFsaWRhdGUgZGIg
c3R1ZmYgaXMgYWxsIGFscGhhbnVtZXJpYy4KCQkJaWYgKAoJCQkJKCBmYWxzZSA9PSAvXlthLXpBLVowLTl
dKyQvLnRlc3QoIGpRdWVyeSgnI2NwYW5lbF9kYm5hbWUnKS52YWwoKSApICkKCQkJCXx8CgkJCQkoIGZhbH
NlID09IC9eW2EtekEtWjAtOV0rJC8udGVzdCggalF1ZXJ5KCcjY3BhbmVsX2RidXNlcicpLnZhbCgpICkgK
QoJCQkJKSB7CgkJCQlhbGVydCggJ0RhdGFiYXNlIHZhbHVlcyAoZXhjZXB0IHBhc3N3b3JkKSBtdXN0IGNv
bnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgb25seSBhbmQgbm8gc3BhY2VzLiBDb3JyZWN0IHRoaXM
gYW5kIHRyeSBhZ2Fpbi4nICk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQkJCgkJCS8vIFZhbGlkYXRlIG
lucHV0IGxlbmd0aHMuCgkJCWlmICggalF1ZXJ5KCcjY3BhbmVsX2RicGFzcycpLnZhbCgpLmxlbmd0aCA8I
DUgKSB7CgkJCQlhbGVydCggJ0RhdGFiYXNlIHBhc3N3b3JkcyBtdXN0IGJlIDUgb3IgbW9yZSBjaGFyYWN0
ZXJzIGluIGxlbmd0aC4nICk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQkJCgkJCU5Qcm9ncmVzcy5zdGF
ydCgpOwoJCQkKCQkJalF1ZXJ5LnBvc3QoCgkJCQknaW1wb3J0YnVkZHkucGhwP2FqYXg9Y3BhbmVsX2NyZW
F0ZWRiJywKCQkJCWpRdWVyeSggJyNjcGFuZWxfY3JlYXRlZGJfZm9ybScgKS5zZXJpYWxpemUoKSwgZnVuY
3Rpb24oZGF0YSkgewoJCQkJCU5Qcm9ncmVzcy5kb25lKCk7CgkJCQkJCgkJCQkJZGF0YSA9IGpRdWVyeS50
cmltKCBkYXRhICk7CgkJCQkJalF1ZXJ5KCcjaXRoZW1lc19sb2FkaW5nJykuaHRtbCggZGF0YSApOwoJCQk
JCWpRdWVyeSggJy5jcGFuZWxfY3JlYXRlZGJfbG9hZGluZycgKS5oaWRlKCk7CgkJCQkJCgkJCQkJLy9hbG
VydCggJ3NsaWNlOiAnICsgZGF0YS5zbGljZSggLTcgKSApOwoJCQkJCWlmICggZGF0YS5zbGljZSggMCw3I
CkgPT0gJ1N1Y2Nlc3MnICkgewoJCQkJCQkKCQkJCQkJalF1ZXJ5KCAnI215c3FsX2RhdGFiYXNlJyApLnZh
bCggalF1ZXJ5KCAnI2NwYW5lbF91c2VyJyApLnZhbCgpICsgJ18nICsgalF1ZXJ5KCcjY3BhbmVsX2RibmF
tZScpLnZhbCgpICk7CgkJCQkJCWpRdWVyeSggJyNteXNxbF91c2VybmFtZScgKS52YWwoIGpRdWVyeSggJy
NjcGFuZWxfdXNlcicgKS52YWwoKSArICdfJyArIGpRdWVyeSgnI2NwYW5lbF9kYnVzZXInKS52YWwoKSApO
woJCQkJCQlqUXVlcnkoICcjbXlzcWxfcGFzc3dvcmQnICkudmFsKCBqUXVlcnkoJyNjcGFuZWxfZGJwYXNz
JykudmFsKCkgKTsKCQkJCQkJCgkJCQkJCWFsZXJ0KCBkYXRhICsgIlxuXG4iICsgJ1lvdXIgZGF0YWJhc2U
gc2V0dGluZ3Mgd2lsbCBub3cgYmUgc2V0LicgKTsKCQkJCQkJalF1ZXJ5KCcubW9kYWxfY2xvc2UnKS50cm
lnZ2VyKCdjbGljaycpOwoJCQkJCQkKCQkJCQl9IGVsc2UgewoJCQkJCQlhbGVydCggZGF0YSApOwoJCQkJC
QkvL2pRdWVyeSgnLnBiX2RhdGFiYXNlX25leHRfdGVzdCcpLmFkZENsYXNzKCAnYnV0dG9uX2Rpc2FibGVk
JyApOwoJCQkJCX0KCQkJCQkKCQkJCX0KCQkJKTsKCQkJCgkJCXJldHVybiBmYWxzZTsKCQl9KTsKCQkKCX0
pOwo8L3NjcmlwdD4KCjxkaXYgaWQ9ImRhdGFiYXNlLWJveCI+Cgk8ZGl2IGNsYXNzPSJkYXRhYmFzZS1kZX
NjcmlwdGlvbiI+CgkJPHA+TWFudWFsbHkgZW50ZXIgeW91ciBkYXRhYmFzZSBzZXR0aW5ncyBiZWxvdyBvc
iBzZWxlY3Qgb25lIG9mIHRoZSBvcHRpb25zIGJlbG93IHRvIGFzc2lzdCB5b3UuIFRoZSA8aT5jUGFuZWwg
RGF0YWJhc2UgV2l6YXJkPC9pPiBhbGxvd3MgeW91IHRvIGVudGVyIHlvdXIgY1BhbmVsIGNyZWRlbnRpYWx
zIHRvIGNyZWF0ZSBhIGRhdGFiYXNlICYgYXV0by1maWxsIGl0cyBzZXR0aW5ncyBiZWxvdy4gVGhlIDxpPm
NQYW5lbCBUdXRvcmlhbDwvaT4gYnV0dG9uIHNob3dzIHlvdSB0aGUgc2ltcGxlc3Qgd2F5IHRvIG1hbnVhb
Gx5IGNyZWF0ZSBhIGRhdGFiYXNlLiBTZWUgeW91ciBob3N0J3MgZG9jdW1lbnRhdGlvbiBmb3Igbm9uLWNQ
YW5lbCBob3N0aW5nLiBJZiB5b3UgYXJlIHJlc3RvcmluZyBhIHNpdGUgYmFjayB0byBpdHMgb3JpZ2luYWw
gbG9jYXRpb24gKGZvciBpbnN0YW5jZSBhZnRlci
BiZWluZyBoYWNrZWQpIHlvdSBtYXkgcmV0YWluIHRoZSBzYW1lIGRhdGFiYXNlIHNldHRpbmdzIGJ5IGNsa
WNraW5nIHRoZSBhcHByb3ByaWF0ZSAiY29weSIgbGlua3MgYmV0d2VlbiBzZXR0aW5ncyBiZWxvdy48L3A+
CgkJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDI1cHg7IHRleHQtYWxpZ246IGNlbnRlcjsiPgoJCQk8YnV
0dG9uIGhyZWY9IiNwYl9jcmVhdGVkYl9tb2RhbCIgY2xhc3M9ImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5IG
xlYW5Nb2RhbCBjcmVhdGVkYl9tb2RhbF9saW5rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyBtYXJnaW4tY
m90dG9tOiAxM3B4OyI+Y1BhbmVsIERhdGFiYXNlIFdpemFyZDwvYnV0dG9uPgoJCQk8YnV0dG9uIGhyZWY9
IiNwYl9jcGFuZWx0dXRvcmlhbF9tb2RhbCIgY2xhc3M9ImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGxlYW5
Nb2RhbCBjcmVhdGVkYl9tb2RhbF9saW5rIiBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyI+Y1BhbmVsIERhdG
FiYXNlIFR1dG9yaWFsPC9idXR0b24+CgkJPC9kaXY+CgkJPGJyIHN0eWxlPSJjbGVhcjogYm90aDsiPgoJP
C9kaXY+CgkKCQoJCgk8aHI+CgkKCQoJPGZvcm0gYWN0aW9uPSI/YWpheD00IiB0YXJnZXQ9Im1pbmlGcmFt
ZSIgbWV0aG9kPSJwb3N0IiBjbGFzcz0iZGJfc2V0dGluZyIgIGlkPSJiYWNrdXBidWRkeS1kYlNldHRpbmd
zRm9ybSI+PCEtLSB0aGlzIGZvcm0gaXMgb25seSBzdWJtaXR0ZWQgYWZ0ZXIgcnVubmluZyB0aHJvdWdoIG
phdmFzY3JpcHQuIHN1Ym1pdHRpbmcgYWN0dWFsIGZvcm0gaW5zdGVhZCBvZiB1c2luZyBqUXVlcnkgcG9zd
CBzbyB3ZSBjYW4gdGFyZ2V0IGlmcmFtZS4gLS0+CgkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVz
dG9yZURhdGEiIHZhbHVlPSIiIGlkPSJiYWNrdXBidWRkeS1kYlNldHRpbmdzRm9ybS1yZXN0b3JlRGF0YSI
+PCEtLSB0aGlzIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgd2lsbCBuZWVkIHBhcnNlZCBieSBQSFAgb24gdG
hlIHJlY2VpdmluZyBlbmQuIHBvcHVsYXRlZCBvbiBzdWJtaXQgYWZ0ZXIgZGIgdGVzdCBwYXNzZXMuIC0tP
goJCQoJCQoJCTx0YWJsZSBjbGFzcz0ic2V0dGluZ3NUYWJsZSI+CgkJCQoJCQk8dHI+PHRoIHN0eWxlPSJ3
aWR0aDogMzAlOyI+Jm5ic3A7PC90aD48dGggc3R5bGU9IndpZHRoOiAzMCU7Ij5PbGQgRGF0YWJhc2U8L3R
oPgoJCQkJPHRkIGNsYXNzPSJzZXR0aW5nQ29weSBzZXR0aW5nQ29weUFsbCIgd2lkdGg9IjEwJSIgc3R5bG
U9InBhZGRpbmc6IDEwcHg7Ij4KCQkJCQk8YSBocmVmPSIjIiB0aXRsZT0iQ2xpY2sgdG8gY29weSBhbGwgb
2xkIGRhdGFiYXNlIHNldHRpbmdzIG92ZXIuIj4mcmFycjs8L2E+CgkJCQk8L3RkPjx0aCBzdHlsZT0id2lk
dGg6IDMwJTsiPk5ldyBEYXRhYmFzZTwvdGg+PC90cj4KCQkJCgkJCTx0cj48IS0tIE1ZU1FMIFNFUlZFUiA
tLT4KCQkJCTx0ZD4KCQkJCQlEYXRhYmFzZSBTZXJ2ZXIgPHNwYW4gY2xhc3M9ImxpZ2h0Ij4oTXlTUUwpPC
9zcGFuPiA8JT0gdGlwKCAnVGhpcyBpcyB0aGUgYWRkcmVzcyB0byB0aGUgbXlTUUwgc2VydmVyIHdoZXJlI
HlvdXIgZGF0YWJhc2Ugd2lsbCBiZSBzdG9yZWQuIDk5JSBvZiB0aGUgdGltZSB0aGlzIGlzIGxvY2FsaG9z
dC4gIFRoZSBsb2NhdGlvbiBvZiB5b3VyIG15U1FMIHNlcnZlciB3aWxsIGJlIHByb3ZpZGVkIHRvIHlvdSB
ieSB5b3VyIGhvc3QgaWYgaXQgZGlmZmVycy4nICkgJT4KCQkJCTwvdGQ+CgkJCQk8dGQ+CgkJCQkJPGlucH
V0IGNsYXNzPSJkYl9zZXR0aW5nIG9sZF9zZXR0aW5nIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0iPCU9IGRhdC5kY
l9zZXJ2ZXIgJT4iIHJlYWRvbmx5PSJyZWFkb25seSI+CgkJCQk8L3RkPgoJCQkJPHRkIGNsYXNzPSJzZXR0
aW5nQ29weSI+CgkJCQkJPGEgaHJlZj0iIyIgdGl0bGU9IkNsaWNrIHRvIGNvcHkgb2xkIHNldHRpbmcgb3Z
lci4iPiZyYXJyOzwvYT4KCQkJCTwvdGQ+CgkJCQk8dGQ+CgkJCQkJPGlucHV0IGNsYXNzPSJkYl9zZXR0aW
5nIiB0eXBlPSJ0ZXh0IiBpZD0ibXlzcWxfc2VydmVyIiB2YWx1ZT0iIiB0YWJpbmRleD0iMSI+CgkJCQk8L
3RkPgoJCQk8L3RyPgoJCQkKCQkJPHRyPjwhLS0gREFUQUJBU0UgTkFNRSAtLT4KCQkJCTx0ZD4KCQkJCQlE
YXRhYmFzZSBOYW1lIDwlPSB0aXAoICdUaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBkYXRhYmFzZSB5b3Ugd2F
udCB0byBpbXBvcnQgeW91ciBibG9nIGludG8uIFRoZSBkYXRhYmFzZSB1c2VyIG11c3QgaGF2ZSBwZXJtaX
NzaW9ucyB0byBiZSBhYmxlIHRvIGFjY2VzcyB0aGlzIGRhdGFiYXNlLiAgSWYgeW91IGFyZSBtaWdyYXRpb
mcgdGhpcyBibG9nIHRvIGEgbmV3IGhvc3QgeW91IHdpbGwgbmVlZCB0byBjcmVhdGUgdGhpcyBkYXRhYmFz
ZSAoaWUgdXNpbmcgQ1BhbmVsIG9yIHBocG15YWRtaW4pIGFuZCBjcmVhdGUgYSBteXNxbCBkYXRhYmFzZSB
1c2VyIHdpdGggcGVybWlzc2lvbnMuJyApICU+CgkJCQk8L3RkPgoJCQkJPHRkPgoJCQkJCTxpbnB1dCBjbG
Fzcz0iZGJfc2V0dGluZyBvbGRfc2V0dGluZyIgdHlwZT0idGV4dCIgdmFsdWU9IjwlPSBkYXQuZGJfbmFtZ
SAlPiIgcmVhZG9ubHk9InJlYWRvbmx5Ij4KCQkJCTwvdGQ+CgkJCQk8dGQgY2xhc3M9InNldHRpbmdDb3B5
Ij4KCQkJCQk8YSBocmVmPSIjIiB0aXRsZT0iQ2xpY2sgdG8gY29weSBvbGQgc2V0dGluZyBvdmVyLiI+JnJ
hcnI7PC9hPgoJCQkJPC90ZD4KCQkJCTx0ZD4KCQkJCQk8aW5wdXQgY2xhc3M9ImRiX3NldHRpbmciIHR5cG
U9InRleHQiIGlkPSJteXNxbF9kYXRhYmFzZSIgdmFsdWU9IiIgdGFiaW5kZXg9IjIiPgoJCQkJPC90ZD4KC
QkJPC90cj4KCQkJCgkJCTx0cj48IS0tIERBVEFCQVNFIFVTRVIgLS0+CgkJCQk8dGQ+CgkJCQkJRGF0YWJh
c2UgVXNlciA8JT0gdGlwKCAnVGhpcyBpcyB0aGUgZGF0YWJhc2UgdXNlciBhY2NvdW50IHRoYXQgaGFzIHB
lcm1pc3Npb24gdG8gYWNjZXNzIHRoZSBkYXRhYmFzZSBuYW1lIGluIHRoZSBpbnB1dCBhYm92ZS4gIFRoaX
MgdXNlciBtdXN0IGJlIGdpdmVuIHBlcm1pc3Npb24gdG8gdGhpcyBkYXRhYmFzZSBmb3IgdGhlIGltcG9yd
CB0byB3b3JrLicgKSAlPgoJCQkJPC90ZD4KCQkJCTx0ZD4KCQkJCQk8aW5wdXQgY2xhc3M9ImRiX3NldHRp
bmcgb2xkX3NldHRpbmciIHR5cGU9InRleHQiIHZhbHVlPSI8JT0gZGF0LmRiX3VzZXIgJT4iIHJlYWRvbmx
5PSJyZWFkb25seSI+CgkJCQk8L3RkPgoJCQkJPHRkIGNsYXNzPSJzZXR0aW5nQ29weSI+CgkJCQkJPGEgaH
JlZj0iIyIgdGl0bGU9IkNsaWNrIHRvIGNvcHkgb2xkIHNldHRpbmcgb3Zlci4iPiZyYXJyOzwvYT4KCQkJC
TwvdGQ+CgkJCQk8dGQ+CgkJCQkJPGlucHV0IGNsYXNzPSJkYl9zZXR0aW5nIiB0eXBlPSJ0ZXh0IiBpZD0i
bXlzcWxfdXNlcm5hbWUiIHZhbHVlPSIiIHRhYmluZGV4PSIzIj4KCQkJCTwvdGQ+CgkJCTwvdHI+CgkJCQo
JCQk8dHI+PCEtLSBEQVRBQkFTRSBQQVNTIC0tPgoJCQkJPHRkPgoJCQkJCURhdGFiYXNlIFBhc3N3b3JkID
wlPSB0aXAoICdUaGlzIGlzIHRoZSBwYXNzd29yZCBmb3IgdGhlIGRhdGFiYXNlIHVzZXIuJyApICU+CgkJC
Qk8L3RkPgoJCQkJPHRkPgoJCQkJCTxpbnB1dCBjbGFzcz0iZGJfc2V0dGluZyBvbGRfc2V0dGluZyIgdHlw
ZT0idGV4dCIgdmFsdWU9IjwlPSBkYXQuZGJfcGFzc3dvcmQgJT4iIHJlYWRvbmx5PSJyZWFkb25seSI+Cgk
JCQk8L3RkPgoJCQkJPHRkIGNsYXNzPSJzZXR0aW5nQ29weSI+CgkJCQkJPGEgaHJlZj0iIyIgdGl0bGU9Ik
NsaWNrIHRvIGNvcHkgb2xkIHNldHRpbmcgb3Zlci4iPiZyYXJyOzwvYT4KCQkJCTwvdGQ+CgkJCQk8dGQ+C
gkJCQkJPGlucHV0IGNsYXNzPSJkYl9zZXR0aW5nIiB0eXBlPSJ0ZXh0IiBpZD0ibXlzcWxfcGFzc3dvcmQi
IHZhbHVlPSIiIHRhYmluZGV4PSI0Ij4KCQkJCTwvdGQ+CgkJCTwvdHI+CgkJCQoJCQk8dHI+PCEtLSBEQVR
BQkFTRSBQUkVGSVggLS0+CgkJCQk8dGQ+CgkJCQkJRGF0YWJhc2UgUHJlZml4IDwlPSB0aXAoICdUaGlzIG
lzIHRoZSBwcmVmaXggZ2l2ZW4gdG8gYWxsIHRhYmxlcyBpbiB0aGUgZGF0YWJhc2UuICBJZiB5b3UgYXJlI
GNsb25pbmcgdGhlIHNpdGUgb24gdGhlIHNhbWUgc2VydmVyIEFORCB0aGUgc2FtZSBkYXRhYmFzZSBuYW1l
IHRoZW4geW91IHdpbGwgd2FudCB0byBjaGFuZ2UgdGhpcyBvciBlbHNlIHRoZSBpbXBvcnRlZCBkYXRhYmF
zZSB3aWxsIG92ZXJ3cml0ZSB0aGUgZXhpc3RpbmcgdGFibGVzLiBUaGlzIHNob3VsZCBOT1QgaW5jbHVkZS
Btb3JlIHRoYW4gb25lIHVuZGVyc2NvcmUuIEV4YW1wbGUgMTogd3BfLCBFeGFtcGxlIDI6IHdwNF8sIEV4Y
W1wbGUgMzogZHVzdGluc2Jsb2dfJyApICU+CgkJCQk8L3RkPgoJCQkJPHRkPgoJCQkJCTxpbnB1dCBjbGFz
cz0iZGJfc2V0dGluZyBvbGRfc2V0dGluZyIgdHlwZT0idGV4dCIgdmFsdWU9IjwlPSBkYXQuZGJfcHJlZml
4ICU+IiByZWFkb25seT0icmVhZG9ubHkiPgoJCQkJPC90ZD4KCQkJCTx0ZCBjbGFzcz0ic2V0dGluZ0NvcH
kiPgoJCQkJCTxhIGhyZWY9IiMiIHRpdGxlPSJDbGljayB0byBjb3B5IG9sZCBzZXR0aW5nIG92ZXIuIj4mc
mFycjs8L2E+CgkJCQk8L3RkPgoJCQkJPHRkPgoJCQkJCTxpbnB1dCBjbGFzcz0iZGJfc2V0dGluZyIgdHlw
ZT0idGV4dCIgaWQ9Im15c3FsX3ByZWZpeCIgdmFsdWU9IiIgdGFiaW5kZXg9IjUiPgoJCQkJPC90ZD4KCQk
JPC90cj4KCQkJCgkJPC90YWJsZT4KCQkKCQkKCQkKCQk8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAzNXB4Oy
BtYXJnaW4tYm90dG9tOiAzNXB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7Ij4KCQkJPGRpdiBpZD0iZGJfdGVzd
F9jb250YWluZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyBtYXJnaW4tYm90dG9tOiAwOyBwYWRkaW5nOiAy
NXB4OyB0ZXh0LWFsaWduOiBsZWZ0OyIgY2xhc3M9InJvdW5kLXdyYXAiPgoJCQk8L2Rpdj4KCQkJCgkJCTx
kaXYgaWQ9Imlnbm9yZV9wcmVmaXhfd2FybmluZ3MiIHN0eWxlPSJkaXNwbGF5OiBub25lOyBtYXJnaW4tYm
90dG9tOiAyNXB4OyI+CgkJCQk8Yj5JZ25vcmUgcHJlZml4IHdhcm5pbmdzPzwvYj4KCQkJCSZuYnNwOyZuY
nNwOwoJCQkJPGxhYmVsPgoJCQkJCTxpbnB1dCBjbGFzcz0iZGJfc2V0dGluZyIgdHlwZT0iY2hlY2tib3gi
IG5hbWU9Imlnbm9yZV9kYnRlc3Rfd2FybmluZ3MiIGlkPSJpZ25vcmVfcHJlZml4X3dhcm5pbmdzX2NoZWN
rYm94IiB2YWx1ZT0iMSI+CgkJCQkJWWVzLCBwcm9jZWVkIHdpdGggdGhpcyBwcmVmaXguCgkJCQk8L2xhYm
VsPgoJCQk8L2Rpdj4KCgoJCQk8JSBpZiAoIGZhbHNlID09PSByZXN0b3JlRGF0YWJhc2UgKSB7ICU+CgkJC
Qk8ZGl2PgoJCQkJCURhdGFiYXNlIHdpbGwgPGI+bm90PC9iPiBiZSByZXN0b3JlZCBmcm9tIHRoZSBiYWNr
dXAgYmFzZWQgb24geW91ciBzZWxlY3Rpb24gb24gU3RlcCAxLgoJCQkJPC9kaXY+CgkJCTwlIH0gJT4KCQo
JCQk8ZGl2IGlkPSJkYl93aXBlX29wdGlvbnMiIHN0eWxlPSI8JSBpZiAoIGZhbHNlID09PSByZXN0b3JlRG
F0YWJhc2UgKSB7ICU+IGRpc3BsYXk6IG5vbmU7IDwlIH0gJT4iPgoJCQkJPGI+RGVsZXRlIGV4aXN0aW5nI
GRhdGFiYXNlIHRhYmxlcz88L2I+CgkJCQkmbmJzcDsmbmJzcDsKCQkJCTxsYWJlbD4KCQkJCQk8aW5wdXQg
Y2xhc3M9ImRiX3NldHRpbmciIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMSIgbmFtZT0id2lwZV9wcmVmaXg
iIGlkPSJ3aXBlX3ByZWZpeCI+CgkJCQkJTWF0Y2hpbmcgUHJlZml4IDwlPSB0aXAoICdXaGVuIHNlbGVjdG
VkIEltcG9ydEJ1ZGR5IHdpbGwgZmlyc3QgZGVsZXRlIGFueSBhbmQgYWxsIGRhdGFiYXNlcyB0YWJsZXMgb
24gdGhlIG5ldyBzZXJ2ZXIgdGhhdCBiZWdpbiB3aXRoIHRoZSBuZXcgcHJlZml4LiBGb3IgZXhhbXBsZSwg
aWYgeW91ciBuZXcgZGF0YWJhc2UgcHJlZml4IGFib3ZlIGlzIHdwXywgYW55IHRhYmxlIG9uIHRoZSBuZXc
gc2VydmVyIHN0YXJ0aW5nIHdpdGggd3BfIGluIHRoZSBuYW1lIHN1Y2ggYXMgd3Bfb3B0aW9ucywgd3BfcG
9zdHMsIHdwXy4qLCB3aWxsIGJlIGRyb3BwZWQgLyBkZWxldGVkLiBUaGUgb2xkIGRhdGFiYXNlIHNlcnZlc
iBpcyBuZXZlciBtb2RpZmllZCBldmVyICh1bmxlc3MgaXQgaXMgdGhlIHNhbWUgc2VydmVyIGFzIHRoZSBu
ZXcgc2VydmVyKS4nICkgJT4KCQkJCTwvbGFiZWw+CgkJCQkmbmJzcDsmbmJzcDsKCQkJCTxsYWJlbD4KCQk
JCQk8aW5wdXQgY2xhc3M9ImRiX3NldHRpbmciIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMSIgbmFtZT0id2
lwZV9kYXRhYmFzZSIgaWQ9IndpcGVfZGF0YWJhc2UiIG9uQ2xpY2s9ImpRdWVyeSh0aGlzKS5jbG9zZXN0K
CdsYWJlbCcpLmZpbmQoJ3NwYW4nKS50b2dnbGUoKTsiPgoJCQkJCURlbGV0ZSBBbGwgPHNwYW4gY2xhc3M9
InBiX2xhYmVsIHBiX2xhYmVsLXdhcm5pbmciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+VXNlIENhdXRpb24
8L3NwYW4+CgkJCQk8L2xhYmVsPgoJCQk8L2Rpdj4KCQoJCQkKCQoJCgkKCQoJCgkJPC9kaXY+PCEtLSAvd3
JhcCAtLT4KCQkKCQk8ZGl2IGNsYXNzPSJtYWluX2JveF9mb290Ij4KCQkJPGJyPgoJCQk8Y2VudGVyPgoJC
QkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ibmV4dFN0ZXAiIHZhbHVlPSJOZXh0IFN0ZXAiIGNsYXNz
PSJpdC1idXR0b24gcGJfZGF0YWJhc2VfbmV4dF90ZXN0Ij4KCQkJCTxidXR0b24gaHJlZj0iI3BiX2FkdmF
uY2VkX21vZGFsIiBjbGFzcz0iaXQtYnV0dG9uIGl0LXNlY29uZGFyeSBsZWFuTW9kYWwgY3JlYXRlZGJfbW
9kYWxfbGluayI+QWR2YW5jZWQgT3B0aW9uczwvYnV0dG9uPgoJCQk8L2NlbnRlcj4KCQkJCgkJPC9kaXY+C
gkKCQoJCgkKCQk8ZGl2IGlkPSJwYl9hZHZhbmNlZF9tb2RhbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4K
CQkJPGRpdiBjbGFzcz0ibW9kYWwiPgoJCQkJPGRpdiBjbGFzcz0ibW9kYWxfaGVhZGVyIj4KCQkJCQk8YSB
jbGFzcz0ibW9kYWxfY2xvc2UiPiZ0aW1lczs8L2E+CgkJCQkJPGgyPkFkdmFuY2VkIE9wdGlvbnM8L2gyPg
oJCQkJCUV4ZXJjaXNlIGNhdXRpb24gdXNpbmcgYWR2YW5jZWQgb3B0aW9ucy4gQWRkaXRpb25hbCBvcHRpb
25zIGF2YWlsYWJsZSBvbiBzdWJzZXF1ZW50IHN0ZXBzLgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJt
b2RhbF9jb250ZW50Ij4KCQkJCQkKCQkJCQk8bGFiZWw+RGF0YWJhc2UgTWV0aG9kIFN0cmF0ZWd5OiA8L2x
hYmVsPgoJCQkJCTxzZWxlY3QgbmFtZT0iZGF0YWJhc2VNZXRob2RTdHJhdGVneSIgaWQ9ImRhdGFiYXNlTW
V0aG9kU3RyYXRlZ3kiPgoJCQkJCQk8b3B0aW9uIHZhbHVlPSJwaHAiIFNFTEVDVEVEPlBIUC1iYXNlZDogU
3VwcG9ydHMgYXV0b21hdGVkIGNodW5rZWQgcmVzdW1pbmcgLSBkZWZhdWx0PC9vcHRpb24+CgkJCQkJCTxv
cHRpb24gdmFsdWU9ImNvbW1hbmRsaW5lIj5Db21tYW5kbGluZTogRmFzdCBidXQgZG9lcyBub3Qgc3VwcG9
ydCByZXN1bWluZzwvb3B0aW9uPgoJCQkJCQk8b3B0aW9uIHZhbHVlPSJhbGwiPkFsbCBBdmFpbGFibGU6IC
ggUEhQIFtjaHVua2luZ10gPiBDb21tYW5kbGluZ
SB2aWEgZXhlYygpICApPC9vcHRpb24+CgkJCQkJPC9zZWxlY3Q+CgkJCQkJCQoJCQkJCTxicj4KCQkJCQkK
CQkJCQk8aW5wdXQgY2xhc3M9ImRiX3NldHRpbmciIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMSIgaWQ9Iml
nbm9yZV9zcWxfZXJyb3JzIiBuYW1lPSJpZ25vcmVfc3FsX2Vycm9ycyI+IElnbm9yZSBTUUwgZXJyb3JzIC
YgZXhpc3RpbmcgV29yZFByZXNzIHRhYmxlcy4gPCU9IHRpcCggJ1doZW4gY2hlY2tlZCBJbXBvcnRCdWRke
SB3aWxsIGFsbG93IGltcG9ydGluZyBkYXRhYmFzZSB0YWJsZXMgdGhhdCBoYXZlIHRoZSBzYW1lIG5hbWUg
YXMgZXhpc3RpbmcgdGFibGVzLiBUaGlzIHJlc3VsdHMgaW4gYSBtZXJnZSBvZiB0aGUgZXhpc3RpbmcgZGF
0YSB3aXRoIHRoZSBpbXBvcnRlZCBkYXRhYmFzZSBiZWluZyBtZXJnZWQuIE5vdGUgdGhhdCB0aGlzIGlzIG
RvZXMgTk9UIHVwZGF0ZSBleGlzdGluZyBkYXRhIGFuZCBvbmx5IEFERFMgbmV3IGRhdGFiYXNlIHRhYmxlI
HJvd3MuIEFsbCBvdGhlciBTUUwgY29uZmxpY3QgZXJyb3JzIHdpbGwgYmUgc3VwcHJlc3NlZCBhcyB3ZWxs
LiBVc2UgdGhpcyBmZWF0dXJlIHdpdGggY2F1dGlvbi4nICkgJT48YnI+CgkJCQkJTWF4aW11bSB0aW1lIHB
lciBjaHVuayB3aGVuIGludGVyYWN0aW5nIHdpdGggZGF0YWJhc2U6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW
1lPSJtYXhfZXhlY3V0aW9uX3RpbWUiIGlkPSJtYXhfZXhlY3V0aW9uX3RpbWUiIHZhbHVlPSI8JT0gbWF4R
XhlY3V0aW9uVGltZSAlPiIgc2l6ZT0iNSI+IHNlY29uZHMuIDwlPSB0aXAoICdUaGUgbWF4aW11bSBhbW91
bnQgb2YgdGltZSBJbXBvcnRCdWRkeSBzaG91bGQgYWxsb3cgYSBkYXRhYmFzZSBpbXBvcnQgY2h1bmsgdG8
gcnVuLiBJbXBvcnRCdWRkeSBieSBkZWZhdWx0IGxpbWl0cyBlYWNoIGNodW5rIHRvIHlvdXIgTWF4aW11bS
BQSFAgcnVudGltZS4gSWYgeW91ciBkYXRhYmFzZSBpbXBvcnQgc3RlcCBpcyB0aW1pbmcgb3V0IHRoZW4gb
G93ZXJpbmcgdGhpcyB2YWx1ZSB3aWxsIGluc3RydWN0IHRoZSBzY3JpcHQgdG8gbGltaXQgZWFjaCBgY2h1
bmtgIHRvIGFsbG93IGl0IHRvIGZpbmlzaCB3aXRoaW4gdGhpcyB0aW1lIHBlcmlvZC4gUmFpc2luZyB0aGl
zIHZhbHVlIGFib3ZlIHlvdXIgc2VydmVycyBsaW1pdHMgd2lsbCBub3QgaW5jcmVhc2Ugb3Igb3ZlcnJpZG
Ugc2VydmVyIHNldHRpbmdzLicgKSAlPgoJCQkJCQoJCQkJCTxicj4KCQkJCQkKCQkJCQk8aW5wdXQgY2xhc
3M9ImRiX3NldHRpbmciIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMSIgbmFtZT0iZGJfZm9yY2Vfc3NsIiBp
ZD0iZGJfZm9yY2Vfc3NsIj4KCQkJCQkmbmJzcDsmbmJzcDsKCQkJCQk8bGFiZWwgZm9yPSJkYl9mb3JjZV9
zc2wiPkZvcmNlIFNTTCBjb25uZWN0aW9uIHdpdGggRGF0YWJhc2U/PC9sYWJlbD4gPCU9IHRpcCggJ0NoZW
NrIHRoaXMgb3B0aW9uIGlmIHlvdSBoYXZlIGNvbmZpZ3VyZWQgeW91ciBNeVNRTCBkYXRhYmFzZSB0byBhY
2NlcHQgaW5jb21pbmcgY29ubmVjdGlvbnMgdmlhIFNTTC4gV0FSTklORzogVGhpcyB3aWxsIGNhdXNlIGVy
cm9ycyBpZiB5b3VyIGRhdGFiYXNlIGlzIG5vdCBjb25maWd1cmVkIHRvIGFjY2VwdCBTU0wgY29ubmVjdGl
vbnMuJyApICU+CgoJCQkJCTxicj4KCQkJCQk8YnI+CgoJCQkJCTxsYWJlbD5EYXRhYmFzZSBmaWxlcyB0by
ByZXN0b3JlOiA8L2xhYmVsPgoJCQkJCTxkaXYgY2xhc3M9ImRhdGFiYXNlX3Jlc3RvcmVfdGFibGVfc2VsZ
WN0Ij4KCQkJCQkJPCUKCQkJCQkJZGF0YWJhc2VTZXR0aW5ncy5zcWxGaWxlcy5mb3JFYWNoKGZ1bmN0aW9u
KGVsLCBpbmRleCkgewoJCQkJCQkJJT4KCQkJCQkJCTxsYWJlbD48aW5wdXQgY2xhc3M9ImRhdGFiYXNlRml
sZSIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImRhdGFiYXNlRmlsZXNbXSIgdmFsdWU9IjwlPSBlbCAlPiIgQ0
hFQ0tFRD4gPCU9IGVsICU+PC9sYWJlbD48YnI+CgkJCQkJCQk8JQoJCQkJCQl9KTsKCQkJCQkJJT4KCQkJC
Qk8L2Rpdj4KCQkJCQkKCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCQoJCgkKCTwvZm9ybT4KCQoJ
CgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJCgkKCQoJPGRpdiBpZD0icGJfY3J
lYXRlZGJfbW9kYWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJPGRpdiBjbGFzcz0ibW9kYWwiPgoJCQ
k8ZGl2IGNsYXNzPSJtb2RhbF9oZWFkZXIiPgoJCQkJPGEgY2xhc3M9Im1vZGFsX2Nsb3NlIj4mdGltZXM7P
C9hPgoJCQkJPGgyPmNQYW5lbCBEYXRhYmFzZSBXaXphcmQ8L2gyPgoJCQkJUXVpY2tseSBjcmVhdGUgYSBu
ZXcgY1BhbmVsIGRhdGFiYXNlIHJpZ2h0IGhlcmUuCgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJtb2RhbF9
jb250ZW50Ij4KCQkJCQoJCQkJPGZvcm0gaWQ9ImNwYW5lbF9jcmVhdGVkYl9mb3JtIj4KCQkJCQkKCQkJCQ
k8dGFibGUgd2lkdGg9IjEwMCUiPgoJCQkJCQk8dHI+CgkJCQkJCQk8dGQ+CgkJCQkJCQkJY1BhbmVsIExvZ
2luIFVSTAoJCQkJCQkJCTwlPSB0aXAoICdbRXg6IG15ZG9tYWluLmNvbV0gRW50ZXIgdGhlIGNQYW5lbCBk
b21haW4gdG8gY29tcGxldGUgdGhlIFVSTCB5b3UgZ28gdG8gdG8gYWNjZXNzIGNQYW5lbC4gIEZvciBpbnN
0YW5jZSBpZiB5b3VyIGNQYW5lbCBsb2dpbiBpcyBhdCBodHRwOi8vbXlkb21haW4uY29tOjIwODIvIHRoZW
4geW91ciBkb21haW4gaXMgbXlkb21haW4uY29tLicgKSAlPgoJCQkJCQkJPC90ZD4KCQkJCQkJCTx0ZCBzd
HlsZT0idGV4dC1hbGlnbjogcmlnaHQ7Ij4KCQkJCQkJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3Bh
bmVsX3Byb3RvY29sIiBpZD0iY3BhbmVsX3Byb3RvY29sIiB2YWx1ZT0iaHR0cDovLyIgc3R5bGU9IndpZHR
oOiA4NXB4OyI+PGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNwYW5lbF91cmwiIGlkPSJjcGFuZWxfdXJsIi
BzdHlsZT0id2lkdGg6IDE4NnB4OyI+OjxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjcGFuZWxfcG9ydCIga
WQ9ImNwYW5lbF9wb3J0IiBzdHlsZT0id2lkdGg6IDYycHg7IiB2YWx1ZT0iMjA4MiI+LwoJCQkJCQkJPC90
ZD4KCQkJCQkJPC90cj4KCQkJCQkJPHRyPgoJCQkJCQkJPHRkPgoJCQkJCQkJCWNQYW5lbCB1c2VybmFtZQo
JCQkJCQkJCTwlPSB0aXAoICdbRXg6IGJ1ZGR5XSBUaGlzIGlzIHRoZSB1c2VybmFtZSB5b3UgdXNlIHRvIG
xvZyBpbnRvIHlvdXIgY1BhbmVsLicgKSAlPgoJCQkJCQkJPC90ZD4KCQkJCQkJCTx0ZCBzdHlsZT0idGV4d
C1hbGlnbjogcmlnaHQ7Ij4KCQkJCQkJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iY3BhbmVsX3VzZXIi
IGNsYXNzPSJjcGFuZWxfdXNlciIgaWQ9ImNwYW5lbF91c2VyIiBzdHlsZT0id2lkdGg6IDI2NXB4OyI+Cgk
JCQkJCQk8L3RkPgoJCQkJCQk8L3RyPgoJCQkJCQk8dHI+CgkJCQkJCQk8dGQ+CgkJCQkJCQkJY1BhbmVsIH
Bhc3N3b3JkCgkJCQkJCQkJPCU9IHRpcCggJ1tFeDogaTQ5OGhEc2lmSDQ4N2hzU10gVGhpcyBpcyB0aGUgc
GFzc3dvcmQgeW91IHVzZSB0byBsb2cgaW50byB5b3VyIGNQYW5lbC4nICkgJT4KCQkJCQkJCTwvdGQ+CgkJ
CQkJCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+CgkJCQkJCQkJPGlucHV0IHR5cGU9InRleHQ
iIG5hbWU9ImNwYW5lbF9wYXNzIiBpZD0iY3BhbmVsX3Bhc3MiIHN0eWxlPSJ3aWR0aDogMjY1cHg7IiAvPg
oJCQkJCQkJPC90ZD4KCQkJCQkJPC90cj4KCQkJCQkJPHRyPgoJCQkJCQkJPHRkIGNvbHNwYW49IjIiPgoJC
QkJCQkJCTxociBzdHlsZT0ibWFyZ2luOiA4cHg7Ij4KCQkJCQkJCTwvdGQ+CgkJCQkJCTwvdHI+CgkJCQkJ
CTx0cj4KCQkJCQkJCTx0ZD4KCQkJCQkJCQlOZXcgZGF0YWJhc2UgbmFtZQoJCQkJCQkJCTwlPSB0aXAoICd
bRXg6IGJvYnNibG9nXSBUaGUgZGF0YWJhc2UgbmFtZSB5b3Ugd2FudCB0byBjcmVhdGUuIE5vdGU6IGNQYW
5lbCBhdXRvbWF0aWNhbGx5IHByZWZpeGVzIGRhdGFiYXNlcyB3aXRoIHRoZSBjUGFuZWwgYWNjb3VudCB1c
2VybmFtZSBhbmQgYW4gdW5kZXJzY29yZS4gZXggaWYgeW91ciBjUGFuZWwgdXNlcm5hbWUgaXMgImJ1ZGR5
IjogYnVkZHlfYm9ic2Jsb2cnICkgJT4KCQkJCQkJCTwvdGQ+CgkJCQkJCQk8dGQgc3R5bGU9InRleHQtYWx
pZ246IHJpZ2h0OyI+CgkJCQkJCQkJPHNwYW4gY2xhc3M9ImNwYW5lbF91c2VyX21pcnJvciI+PC9zcGFuPj
xpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjcGFuZWxfZGJuYW1lIiBpZD0iY3BhbmVsX2RibmFtZSIgc3R5b
GU9IndpZHRoOiAyNjVweDsiIG1heGxlbmd0aD0iNTYiPgoJCQkJCQkJPC90ZD4KCQkJCQkJPC90cj4KCQkJ
CQkJPHRyPgoJCQkJCQkJPHRkPgoJCQkJCQkJCU5ldyBkYXRhYmFzZSB1c2VybmFtZQoJCQkJCQkJCTwlPSB
0aXAoICdbRXg6IGJvYl0gVGhlIHVzZXJuYW1lIHlvdSB3YW50IHRvIGFkZCB0byBncmFudCBhY2Nlc3MgdG
8gdGhpcyBkYXRhYmFzZSB5b3Ugd2FudCB0byBjcmVhdGUuIE5vdGU6IGNQYW5lbCBhdXRvbWF0aWNhbGx5I
HByZWZpeGVzIGRhdGFiYXNlIHVzZXJuYW1lcyB3aXRoIHRoZSBjUGFuZWwgYWNjb3VudCB1c2VybmFtZSBh
bmQgYW4gdW5kZXJzY29yZS4gZXggaWYgeW91ciBjUGFuZWwgdXNlcm5hbWUgaXMgImJ1ZGR5IjogYnVkZHl
fYm9iJyApICU+CgkJCQkJCQk8L3RkPgoJCQkJCQkJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsiPg
oJCQkJCQkJCTxzcGFuIGNsYXNzPSJjcGFuZWxfdXNlcl9taXJyb3IiPjwvc3Bhbj48aW5wdXQgdHlwZT0id
GV4dCIgbmFtZT0iY3BhbmVsX2RidXNlciIgaWQ9ImNwYW5lbF9kYnVzZXIiIHN0eWxlPSJ3aWR0aDogMjY1
cHg7IiBtYXhsZW5ndGg9IjciPgoJCQkJCQkJPC90ZD4KCQkJCQkJPC90cj4KCQkJCQkJPHRyPgoJCQkJCQk
JPHRkPgoJCQkJCQkJCU5ldyBkYXRhYmFzZSB1c2VyIHBhc3N3b3JkCgkJCQkJCQkJPCU9IHRpcCggJ1RoZS
BwYXNzd29yZCB5b3Ugd291bGQgbGlrZSB0byBhc3NpZ24gdG8gdGhlIGRhdGFiYXNlIHVzZXIgY3JlYXRlZ
C4nICkgJT4KCQkJCQkJCTwvdGQ+CgkJCQkJCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+CgkJ
CQkJCQkJPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImNwYW5lbF9kYnBhc3MiIGlkPSJjcGFuZWxfZGJwYXN
zIiBzdHlsZT0id2lkdGg6IDI2NXB4OyIgdmFsdWU9IjwlPSByYW5kb21TdHJpbmcoMTYsICcwMTIzNDU2Nz
g5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWicpICU+Ij4KC
QkJCQkJCTwvdGQ+CgkJCQkJCTwvdHI+CgkJCQkJPC90YWJsZT4KCQkJCQk8YnI+PGJyPgoJCQkJCTxjZW50
ZXI+CgkJCQkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkNyZWF0ZSBEYXR
hYmFzZSIgY2xhc3M9ImJ1dHRvbiBidXR0b24tcHJpbWFyeSBjcGFuZWxfY3JlYXRlZGJfY3JlYXRlIj4KCQ
kJCQk8L2NlbnRlcj4KCQoJCQkJPC9mb3JtPgoJCQk8L2Rpdj4KCQoJCTwvZGl2PgoJPC9kaXY+CgkKCQoJP
GRpdiBpZD0icGJfY3BhbmVsdHV0b3JpYWxfbW9kYWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJPGRp
diBjbGFzcz0ibW9kYWwiPgoJCQk8ZGl2IGNsYXNzPSJtb2RhbF9oZWFkZXIiPgoJCQkJPGEgY2xhc3M9Im1
vZGFsX2Nsb3NlIj4mdGltZXM7PC9hPgoJCQkJPGgyPmNQYW5lbCBEYXRhYmFzZSBUdXRvcmlhbDwvaDI+Cg
kJCQlMZWFybiBob3cgdG8gcXVpY2tseSBjcmVhdGUgeW91ciBvd24gY1BhbmVsIGRhdGFiYXNlLgoJCQk8L
2Rpdj4KCQkJPGRpdiBjbGFzcz0ibW9kYWxfY29udGVudCI+CgkKCQkJCTxvbD4KCQkJCQk8bGk+SW4gY1Bh
bmVsLCBzZWxlY3QgPGI+TXlTUUwgRGF0YWJhc2UgV2l6YXJkPC9iPiBmcm9tIHRoZSA8aT5EYXRhYmFzZXM
8L2k+IHNlY3Rpb24uIE5leHQgc3RlcC48L2xpPgoJCQkJCTxsaT5FbnRlciBhIDxpPm5hbWU8L2k+IGZvci
B0aGUgbmV3IGRhdGFiYXNlIHlvdSB3aXNoIHRvIGNyZWF0ZS4gTmV4dCBzdGVwLjwvbGk+CgkJCQkJPGxpP
kVudGVyIGEgPGk+dXNlcm5hbWU8L2k+IGFuZCA8aT5wYXNzd29yZDwvaT4gdG8gY3JlYXRlIHRoZSBkYXRh
YmFzZSB1c2VyLiBOZXh0IHN0ZXAuPC9saT4KCQkJCQk8bGk+U2VsZWN0IDxiPkFsbCBQcml2aWxlZ2VzPC9
iPiB0byBzZXQgcGVybWlzc2lvbnMgdGhlIHVzZXIgaGFzIHRvIHRoZSBkYXRhYmFzZS4gRG9uZS48L2xpPg
oJCQkJCTxsaT5CYWNrIGluIEltcG9ydEJ1ZGR5LCBlbnRlciB0aG9zZSBzYW1lIGRhdGFiYXNlIHNldHRpb
mdzIGZvciB0aGUgPGk+TmV3IERhdGFiYXNlPC9pPi48L2xpPgoJCQkJPC9vbD4KCQkJCTxicj4KCQoJCQkJ
PGRpdiBvbkNsaWNrPSJqUXVlcnkodGhpcykuaHRtbCggbmV3IEVKUyh7dXJsOiAnaW1wb3J0YnVkZHkvdml
ld3MvY3BhbmVsVHV0b3JpYWwuaHRtJ30pLnJlbmRlcigpICk7IiBzdHlsZT0idGV4dC1hbGlnbjogY2VudG
VyOyBjdXJzb3I6IHBvaW50ZXI7Ij48aDI+Q2xpY2sgdG8gZGlzcGxheSAzMC1zZWNvbmQgdHV0b3JpYWwgd
mlkZW8uPC9oMj48L2Rpdj4KCQoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2PgoKPC9kaXY+Cgo8IS0tIC0t
Pgo8ZGl2IGlkPSJkYXRhYmFzZS1ib3gtd29ya2luZyI+CjwvZGl2Pgo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/databaseSettings.htm,importbud
dy/views/databaseSettings.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/dbreplace.php,importbuddy/vi
ews/dbreplace.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CkF1dGg6OnJlcXVpcmVfYXV0aGVudG
ljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCgokcGFnZV90aXRsZSA9ICdEYXRhYmFzZSBUZ
Xh0IFJlcGxhY2UgVG9vbCc7CnJlcXVpcmVfb25jZSggJ19oZWFkZXIucGhwJyApOwo/PgoKPGRpdiBjbGFz
cz0id3JhcCI+Cjw/cGhwCiRjb25maWdGaWxlID0gJyc7CmlmICggISBmaWxlX2V4aXN0cyggQUJTUEFUSCA
uICd3cC1jb25maWcucGhwJyApICkgeyAvLyBOb3JtYWwgY29uZmlnIGZpbGUgbm90IGZvdW5kIHNvIHdhcm
4gb3Igc2VlIGlmIHBhcmVudCBjb25maWcgbWF5IGV4aXN0LgoJJHBhcmVudENvbmZpZ01lc3NhZ2UgPSAnJ
zsKCSRwYXJlbnRDb25maWcgPSAgZGlybmFtZSggQUJTUEFUSCApIC4gJy93cC1jb25maWcucGhwJzsKCWlm
ICggQGZpbGVfZXhpc3RzKCAkcGFyZW50Q29uZmlnICkgKSB7IC8vIFBhcmVudCBjb25maWcgZXhpc3RzIHN
vIG9mZmVyIGl0IGFzIGFuIG9wdGlvbiBvciBwb3NzaWJseSB1c2UgaXQgaWYgdXNlciBoYXMgc2VsZWN0ZW
QgdG8gZG8gc28uCgkJaWYgKCBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3BhcmVudF9jb25maWcnICkgPT0gJ
3RydWUnICkgeyAvLyBVc2VyIG9wdGVkIHRvIHVzZSBwYXJlbnQgY29uZmlnLgoJCQkkY29uZmlnRmlsZSA9
ICRwYXJlbnRDb25maWc7CgkJfSBlbHNlIHsgLy8gVXNlciBoYXMgbm90IG9wdGVkIHRvIHVzZSBwYXJlbnQ
gY29uZmlnIHlldCBzbyBzZXQgbWVzc2FnZSB0byBvZmZlciBpdC4KCQkJJHBhcmVudENvbmZpZ01lc3NhZ2
UgPSAnPGJyPjxicj48Yj5Ib3dldmVyPC9iPiwgYSB3cC1jb25maWcucGhwIGZpbGUgd2FzIGZvdW5kIGluI
HRoZSBwYXJlbnQgZGlyZWN0b3J5IGFzIGAnIC4gJHBhcmVudENvbmZpZyAuICdgLiA8YSBocmVmPSI/cGFn
ZT1kYnJlcGxhY2UmcGFyZW50X2NvbmZpZz10cnVlIj48Yj5DbGljayBoZXJlPC9iPjwvYT4gaWYgeW91IHd
vdWxkIGxpa2UgdG8gcnVuIHRoaXMgdG9vbCB1c2luZyB0aGlzIHdwLWNvbmZpZy5waHAgZmlsZSBpbiB0aG
UgcGFyZW50IGRpcmVjdG9yeS4nOwoJCX0KCX0KCWlmICggJycgPT0gJGNvbmZpZ0ZpbGUgKSB7CgkJcGJfY
mFja3VwYnVkZHk6OmFsZXJ0KCAnPGI+RXJyb3I6PC9iPiBUaGlzIHRvb2wgcmVxdWlyZXMgYW4gZXhpc3Rp
bmcgV29yZFByZXNzIGluc3RhbGxhdGlvbiB0byBwZXJmb3JtIGRhdGFiYXNlIHJlcGxhY2VtZW50cyBvbi4
gTm8gV29yZFByZXNzIHdwLWNvbmZpZy5waHAgY29uZmlndXJhdGlvbiBmaWxlIHdhcyBmb3VuZCBpbiB0aG
Ugc2FtZSBkaXJlY3RvcnkgYXMgaW1wb3J0YnVkZHkucGhwLiAnIC4gJHBhcmVudENvbmZpZ01lc3NhZ2UgL
iAnIDxicj48YnI+IDxiPk5vdGU6PC9iPiBJbXBvcnRCdWRkeSBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgbWln
cmF0aW5nICYgcmVwbGFjaW5nIHlvdXIgc2l0ZSBVUkxzIGFuZCBmaWxlIHBhdGhzIGR1cmluZyByZXN0b3J
lL21pZ3JhdGlvbjsgdGhpcyB0b29sIGlzIG5vdCBuZWVkZWQgZm9yIG5vcm1hbCBiYWNrdXAgLyByZXN0b3
JlIG9wZXJhdGlvbnMuJywgdHJ1ZSApOwoJfQp9IGVsc2UgeyAvLyBVc2Ugbm9ybWFsIGNvbmZpZyBmaWxlL
goJJGNvbmZpZ0ZpbGUgPSBBQlNQQVRIIC4gJ3dwLWNvbmZpZy5waHAnOwp9CgppZiAoICcnICE9ICRjb25m
aWdGaWxlICkgewoJCgkvLyBSZWFkIGluIHdwLWNvbmZpZy5waHAgZmlsZSBjb250ZW50cy4KCSRjb25maWd
Db250ZW50cyA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkY29uZmlnRmlsZSApOwoJaWYgKCBmYWxzZSA9PT0gJG
NvbmZpZ0NvbnRlbnRzICkgewoJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ0Vycm9yOiBVbmFibGUgdG8gc
mVhZCB3cC1jb25maWcucGhwIGNvbmZpZ3VyYXRpb24gZmlsZS4nICk7CgkJcmV0dXJuOwoJfQoJCgkvLyBH
cmFiIGRhdGFiYXNlIHNldHRpbmdzIGZyb20gd3AtY29uZmlnLnBocCBjb250ZW50cy4KCXByZWdfbWF0Y2g
oICcvZGVmaW5lXChbXHNdKihcJ3wiKURCX05BTUUoXCd8IiksW1xzXSooXCd8IikoLiopKFwnfCIpW1xzXS
pcKTsvaScsICRjb25maWdDb250ZW50cywgJG1hdGNoZXMgKTsKCSRkYXRhYmFzZVNldHRpbmdzWyduYW1lJ
10gPSAkbWF0Y2hlc1s0XTsKCXByZWdfbWF0Y2goICcvZGVmaW5lXChbXHNdKihcJ3wiKURCX1VTRVIoXCd8
IiksW1xzXSooXCd8IikoLiopKFwnfCIpW1xzXSpcKTsvaScsICRjb25maWdDb250ZW50cywgJG1hdGNoZXM
gKTsKCSRkYXRhYmFzZVNldHRpbmdzWyd1c2VybmFtZSddID0gJG1hdGNoZXNbNF07CglwcmVnX21hdGNoKC
AnL2RlZmluZVwoW1xzXSooXCd8IilEQl9QQVNTV09SRChcJ3wiKSxbXHNdKihcJ3wiKSguKikoXCd8IilbX
HNdKlwpOy9pJywgJGNvbmZpZ0NvbnRlbnRzLCAkbWF0Y2hlcyApOwoJJGRhdGFiYXNlU2V0dGluZ3NbJ3Bh
c3N3b3JkJ10gPSAkbWF0Y2hlc1s0XTsKCXByZWdfbWF0Y2goICcvZGVmaW5lXChbXHNdKihcJ3wiKURCX0h
PU1QoXCd8IiksW1xzXSooXCd8IikoLiopKFwnfCIpW1xzXSpcKTsvaScsICRjb25maWdDb250ZW50cywgJG
1hdGNoZXMgKTsKCSRkYXRhYmFzZVNldHRpbmdzWydob3N0J10gPSAkbWF0Y2hlc1s0XTsKCXByZWdfbWF0Y
2goICcvXCR0YWJsZV9wcmVmaXhbXHNdKj1bXHNdKihcJ3wiKSguKikoXCd8Iik7L2knLCAkY29uZmlnQ29u
dGVudHMsICRtYXRjaGVzICk7CgkkZGF0YWJhc2VTZXR0aW5nc1sncHJlZml4J10gPSAkbWF0Y2hlc1syXTs
KCQoJLy9wcmludF9yKCAkZGF0YWJhc2VTZXR0aW5ncyApOwoJCgkvLyBDb25uZWN0IHRvIGRhdGFiYXNlLg
oJZ2xvYmFsICR3cGRiOwoJJHdwZGIgPSBuZXcgd3BkYiggJGRhdGFiYXNlU2V0dGluZ3NbJ3VzZXJuYW1lJ
10sICRkYXRhYmFzZVNldHRpbmdzWydwYXNzd29yZCddLCAkZGF0YWJhc2VTZXR0aW5nc1snbmFtZSddLCAk
ZGF0YWJhc2VTZXR0aW5nc1snaG9zdCddICk7CglpZiAoIGZhbHNlID09PSAkd3BkYi0+ZGJoICkgewoJCXB
iX2JhY2t1cGJ1ZGR5OjphbGVydCggJ0Vycm9yICM4NTgzODM6IFVuYWJsZSB0byBjb25uZWN0IHRvIGRhdG
FiYXNlIHVzaW5nIHNldHRpbmdzIGluIHdwLWNvbmZpZy5waHAuIFZlcmlmeSBjb25uZWN0aW9uIHNldHRpb
mdzLicgKTsKCX0gZWxzZSB7CgkJcmVxdWlyZV9vbmNlKCAnX2RicmVwbGFjZS5waHAnICk7Cgl9Cn0KPz4K
PC9kaXY+Cgo8P3BocApyZXF1aXJlX29uY2UoICdfZm9vdGVyLnBocCcgKTs=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/dbreplace.php,importbuddy/view
s/dbreplace.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/finalCleanup.htm,importbuddy
/views/finalCleanup.htm
VGhpcyBzdGVwIGhhbmRsZXMgZGVsZXRpbmcgZmlsZXMuIEluIHJhcmUgaW5zdGFuY2VzIG9uIHNvbWUgc2V
ydmVycyB5b3UgbWF5IHJlY2VpdmUgZXJyb3JzIGxvYWRpbmcgZmlsZXMgb3IgYW4gdW5zdHlsZWQgcGFnZS
BoZXJlIGR1ZSB0byBmaWxlcyBnZXR0aW5nIGRlbGV0aW5nIHByZW1hdHVyZWx5IGJlZm9yZSB0aGUgcGFnZ
SBjb21wbGV0ZXMgbG9hZGluZy4gVGhpcyBtYXkgc2FmZWx5IGJlIGlnbm9yZWQuIEl0IGlzIGNvbW1vbiB0
byBub3QgYmUgYWJsZSB0byBkZWxldGUgc29tZSBmaWxlcyBkdWUgdG8gcGVybWlzc2lvbiBlcnJvcnMuIFl
vdSBtYXkgbWFudWFsbHkgZGVsZXRlIHRoZW0uIDxiPmltcG9ydGJ1ZGR5LnBocDwvYj4gc2hvdWxkIGFsd2
F5cyBiZSBkZWxldGVkIGFmdGVyIHJlc3RvcmUgZm9yIGJlc3Qgc2VjdXJpdHkuCgo8aDMgc3R5bGU9InRle
HQtYWxpZ246IGNlbnRlcjsiPllvdXIgc2l0ZSBpcyByZWFkeSB0byBnbyBhdAo8YSBocmVmPSI8JT1ob21l
dXJsJT4iIHRhcmdldD0iX2JsYW5rIj48Yj48JT1ob21ldXJsJT48L2I+PC9hPjxicj48YnI+ClRoYW5rIHl
vdSBmb3IgY2hvb3NpbmcgQmFja3VwQnVkZHkhPC9oMz4KCgo8L2Rpdj48L2Rpdj48YnI+PGJyPjxicj4=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/finalCleanup.htm,importbuddy/v
iews/finalCleanup.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/finished.htm,importbuddy/vie
ws/finished.htm
PGgxIGNsYXNzPSJhbmltYXRlZCBmYWRlSW5Eb3duIj5SZXN0b3JlIEZpbmlzaGVkLjwvaDE+Cgo8aDM+WW9
1ciBzaXRlIHNob3VsZCBiZSByZWFkeSB0byBnbyBhdDo8YnI+PGJyPjxhIGhyZWY9IjwlPWhvbWV1cmwlPi
IgdGFyZ2V0PSJfYmxhbmsiPjwlPWhvbWV1cmwlPjwvYT48L2gzPjxicj4=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/finished.htm,importbuddy/views
/finished.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/home.php,importbuddy/views/h
ome.php
PD9waHAKLyoqCiAqIEltcG9ydEJ1ZGR5IEhvbWUgVmlldwogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQo
gKi8KCmlmICggISBkZWZpbmVkKCAnUEJfSU1QT1JUQlVERFknICkgfHwgKCB0cnVlICE9PSBQQl9JTVBPUl
RCVUREWSApICkgewoJZGllKCAnPGh0bWw+PC9odG1sPicgKTsKfQo/Pgo8c2NyaXB0PgoJalF1ZXJ5KCAnI
3BhZ2VUaXRsZScgKS5odG1sKCAnU3RlcCAxOiBTZWxlY3QgQmFja3VwIHRvIFJlc3RvcmUnICk7CgoJZnVu
Y3Rpb24gYmFja3VwUmVzdG9yZVN1Z2dlc3QoIGJhY2t1cFR5cGUgKSB7CgkJaWYgKCAnZGInID09IGJhY2t
1cFR5cGUgKSB7IC8vIERCIGhhcyBubyBmaWxlcyAoZXhjZXB0IFNRTCBvZiBjb3Vyc2UpIHNvIHNraXAgcm
9vdCBmaWxlIGV4dHJhY3Rpb24uCgkJCWpRdWVyeSggJ2lucHV0W25hbWU9InJlc3RvcmVGaWxlcyJdJyApL
nByb3AoICdjaGVja2VkJywgZmFsc2UgKS5hdHRyKCAnZGlzYWJsZWQnLCB0cnVlICk7CgkJCWpRdWVyeSgg
J2lucHV0W25hbWU9InJlc3RvcmVEYXRhYmFzZSJdJyApLnByb3AoICdjaGVja2VkJywgdHJ1ZSApLmF0dHI
oICdkaXNhYmxlZCcsIGZhbHNlICk7CgkJfSBlbHNlIGlmICggJ2ZpbGVzJyA9PSBiYWNrdXBUeXBlICkgey
AvLyBGaWxlcyBoYXMgbm8gREIgc28gZGlzYWJsZSBEQi4KCQkJalF1ZXJ5KCAnaW5wdXRbbmFtZT0icmVzd
G9yZUZpbGVzIl0nICkucHJvcCggJ2NoZWNrZWQnLCB0cnVlICkuYXR0ciggJ2Rpc2FibGVkJywgZmFsc2Ug
KTsKCQkJalF1ZXJ5KCAnaW5wdXRbbmFtZT0icmVzdG9yZURhdGFiYXNlIl0nICkucHJvcCggJ2NoZWNrZWQ
nLCBmYWxzZSApLmF0dHIoICdkaXNhYmxlZCcsIHRydWUgKTsKCQl9IGVsc2UgeyAvLyBkZWZhdWx0IHJlc3
RvcmUgYWxsCgkJCWpRdWVyeSggJ2lucHV0W25hbWU9InJlc3RvcmVGaWxlcyJdJyApLnByb3AoICdjaGVja
2VkJywgdHJ1ZSApLmF0dHIoICdkaXNhYmxlZCcsIGZhbHNlICk7CgkJCWpRdWVyeSggJ2lucHV0W25hbWU9
InJlc3RvcmVEYXRhYmFzZSJdJyApLnByb3AoICdjaGVja2VkJywgdHJ1ZSApLmF0dHIoICdkaXNhYmxlZCc
sIGZhbHNlICk7CgkJfQoJfQoKCWpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJalF1ZX
J5KCAnLnNlbGVjdGFibGVCYWNrdXBBcmNoaXZlJyApLmNsaWNrKCBmdW5jdGlvbigpewoJCQliYWNrdXBUe
XBlID0galF1ZXJ5KHRoaXMpLmF0dHIoICdkYXRhLXR5cGUnICk7CgkJCWJhY2t1cFJlc3RvcmVTdWdnZXN0
KCBiYWNrdXBUeXBlICk7CgkJfSk7CgoJCXN0YXJ0aW5nQmFja3VwVHlwZSA9IGpRdWVyeSggJy5zZWxlY3R
hYmxlQmFja3VwQXJjaGl2ZTpjaGVja2VkJyApLmF0dHIoICdkYXRhLXR5cGUnICk7CgkJYmFja3VwUmVzdG
9yZVN1Z2dlc3QoIHN0YXJ0aW5nQmFja3VwVHlwZSApOwoJfSk7Cjwvc2NyaXB0PgoKPD9waHAKZWNobyAnP
GRpdiBjbGFzcz0ic3RlcC13cmFwIHN0ZXAtc2VsZWN0QmFja3VwLXdyYXAiPic7CgovLyBEaXNwbGF5IHBy
ZS1mbGlnaHQgc2NhbiB3YXJuaW5ncyAmIGVycm9ycy4KJHByZWZsaWdodFJlc3VsdHMgPSBwcmVmbGlnaHR
TY2FuKCk7CmlmICggY291bnQoICRwcmVmbGlnaHRSZXN1bHRzICkgPiAwICkgewoJcGJfYmFja3VwYnVkZH
k6OmFsZXJ0KCBpbXBsb2RlKCAnPGhyPicsICRwcmVmbGlnaHRSZXN1bHRzICkgKTsKfQp1bnNldCggJHByZ
WZsaWdodFJlc3VsdHMgKTsKCi8vICRzdGVwID0gJzEnOwovLyBlY2hvICc8c2NyaXB0PnBhZ2VUaXRsZSgg
IlN0ZXAgPHNwYW4gY2xhc3M9XCJzdGVwX251bWJlclwiPicgLiAkc3RlcCAuICc8L3NwYW4+IG9mIDY6IEN
ob29zZSB5b3VyIGJhY2t1cCBmaWxlIiApOzwvc2NyaXB0Pic7CmlmICggJ3N0YXNoJyA9PSBwYl9iYWNrdX
BidWRkeTo6X0dFVCggJ3VwbG9hZCcgKSApIHsKCXJlcXVpcmUgJ19odG1sXzFfc3Rhc2gucGhwJzsKCWVja
G8gJzwvZGl2Pic7CglyZXR1cm47Cn0KPz4KCjxkaXYgY2xhc3M9IndyYXAiPgoKPD9waHAKaWYgKCBwYl9i
YWNrdXBidWRkeTo6X0dFVCggJ2ZpbGUnICkgIT0gJycgKSB7CgkkYmFja3VwX2FyY2hpdmVzID0gYXJyYXk
oIHBiX2JhY2t1cGJ1ZGR5OjpfR0VUKCAnZmlsZScgKSApOwoJZWNobyAnPGRpdiBzdHlsZT0icGFkZGluZz
ogMTVweDsgYmFja2dyb3VuZDogI0ZGRkZGRjsiPlJlc3RvcmluZyBmcm9tIGJhY2t1cCA8aT4nIC4gaHRtb
GVudGl0aWVzKCBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ2ZpbGUnICkgKSAuICc8L2k+PC9kaXY+Cgk8Zm9y
bSBhY3Rpb249Ij9hamF4PTIiIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSJtaW5pRnJhbWUiPic7CgllY2hvICc
8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmaWxlIiB2YWx1ZT0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpfR0
VUKCAnZmlsZScgKSAuICciPic7Cn0gZWxzZSB7Cgk/PgoKCTxkaXYgY2xhc3M9ImJhY2t1cF9zZWxlY3RfY
nV0dG9ucyI+CgkJPGJ1dHRvbiBocmVmPSIjcGJfdXBsb2FkX21vZGFsIiBjbGFzcz0iYnV0dG9uIGJ1dHRv
bi1zZWNvbmRhcnkgbGVhbk1vZGFsIGNyZWF0ZWRiX21vZGFsX2xpbmsiIHN0eWxlPSJmb250LXNpemU6IDE
0cHg7Ij5VcGxvYWQgYSBCYWNrdXA8L2J1dHRvbj4KCQk8YnV0dG9uIGhyZWY9IiNwYl9zdGFzaF9tb2RhbC
IgY2xhc3M9ImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGxlYW5Nb2RhbCBjcmVhdGVkYl9tb2RhbF9saW5rI
iBzdHlsZT0iZm9udC1zaXplOiAxNHB4OyI+UmVzdG9yZSBmcm9tIFN0YXNoIC8gU3Rhc2ggTGl2ZTwvYnV0
dG9uPgoJPC9kaXY+CgoJPD9waHAKCSRiYWNrdXBfYXJjaGl2ZXMgPSBnZXRfYXJjaGl2ZXNfbGlzdCgpOwo
JaWYgKCAwID09IGNvdW50KCAkYmFja3VwX2FyY2hpdmVzICkgKSB7IC8vIE5vIGJhY2t1cHMgZm91bmQuCg
oJCS8vIExvb2sgZm9yIG1hbnVhbGx5IHVuemlwcGVkCgkJcGJfYmFja3VwYnVkZHk6OmFsZXJ0KAoJCQknP
GI+Tm8gQmFja3VwQnVkZHkgWmlwIGJhY2t1cCBmb3VuZCBpbiB0aGlzIGRpcmVjdG9yeSBgJyAuIEFCU1BB
VEggLiAnYDwvYj4gLQoJCQlZb3UgbXVzdCB1cGxvYWQgYSBiYWNrdXAgZmlsZSBieSBGVFAgKGludG8gdGh
lIHNhbWUgZGlyZWN0b3J5IGFzIHRoaXMgaW1wb3J0YnVkZHkucGhwIGZpbGUpLCB0aGUgdXBsb2FkIHRhYi
wgb3IgaW1wb3J0IGZyb20gU3Rhc2ggdmlhIHRoZSBTdGFzaCB0YWIgYWJvdmUgdG8gY29udGludWUuCgkJC
TxiPkRvIG5vdCByZW5hbWUgdGhlIGJhY2t1cCBmaWxlIGZyb20gaXRzIG9yaWdpbmFsIGZpbGVuYW1lLjwv
Yj4gSWYgeW91IG1hbnVhbGx5IGV4dHJhY3RlZC91bnppcHBlZCwgdXBsb2FkIHRoZSBiYWNrdXAgZmlsZSw
KCQkJc2VsZWN0IGl0LCB0aGVuIHNlbGVjdCA8aT5BZHZhbmNlZCBUcm91Ymxlc2hvb3RpbmcgT3B0aW9ucz
wvaT4gJiBjbGljayA8aT5Ta2lwIFppcCBFeHRyYWN0aW9uPC9pPi4gUmVmcmVzaCB0aGlzIHBhZ2Ugb25jZ
SB5b3UgaGF2ZSB1cGxvYWRlZCB0aGUgYmFja3VwLicKCQkpOwoKCX0gZWxzZSB7IC8vIEZvdW5kIG9uZSBv
ciBtb3JlIGJhY2t1cHMuCgkJPz4KCQkJPGZvcm0gYWN0aW9uPSI/YWpheD0yIiBtZXRob2Q9InBvc3QiIHR
hcmdldD0ibWluaUZyYW1lIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InBhc3NfaGFzaCIgdm
FsdWU9Ijw/cGhwIGVjaG8gUEJfUEFTU1dPUkQ7ID8+Ij4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hb
WU9Im9wdGlvbnMiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoIHNlcmlhbGl6ZSggcGJf
YmFja3VwYnVkZHk6OiRvcHRpb25zICkgKTsgPz4nIiAvPgoJCTw/cGhwCgkJZWNobyAnPGRpdiBjbGFzcz0
iYmFja3VwX3NlbGVjdF90ZXh0Ij5CYWNrdXBzIGluIDxzcGFuPicgLiBBQlNQQVRIIC4gJzwvc3Bhbj48L2
Rpdj4nOwoJCWVjaG8gJzx1bCBjbGFzcz0icm91bmQtd3JhcCI+JzsKCQkkYmFja3VwX2NvdW50ID0gY291b
nQoICRiYWNrdXBfYXJjaGl2ZXMgKTsKCQkkaSAgICAgICAgICAgID0gMDsKCQlmb3JlYWNoICggJGJhY2t1
cF9hcmNoaXZlcyBhcyAkYmFja3VwX2lkID0+ICRiYWNrdXBfYXJjaGl2ZSApIHsKCQkJJGkrKzsKCgoJCQk
kYmFja3VwX3R5cGUgICAgICA9ICcnOwoJCQkkYmFja3VwX3R5cGVfdGV4dCA9ICcnOwoJCQlpZiAoICRiYW
NrdXBfYXJjaGl2ZVsnY29tbWVudCddWyd0eXBlJ10gPT0gJycgKSB7CgkJCQlpZiAoIHN0cmlzdHIoICRiY
WNrdXBfYXJjaGl2ZVsnZmlsZSddLCAnLWRiLScgKSAhPT0gZmFsc2UgKSB7CgkJCQkJJGJhY2t1cF90eXBl
X3RleHQgPSAnRGF0YWJhc2UgT25seSBCYWNrdXAnOwoJCQkJCSRiYWNrdXBfdHlwZSAgICAgID0gJ2RiJzs
KCQkJCX0gZWxzZWlmICggc3RyaXN0ciggJGJhY2t1cF9hcmNoaXZlWydmaWxlJ10sICctZnVsbC0nICkgIT
09IGZhbHNlICkgewoJCQkJCSRiYWNrdXBfdHlwZV90ZXh0ID0gJ0Z1bGwgQmFja3VwJzsKCQkJCQkkYmFja
3VwX3R5cGUgICAgICA9ICdmdWxsJzsKCQkJCX0gZWxzZWlmICggc3RyaXN0ciggJGJhY2t1cF9hcmNoaXZl
WydmaWxlJ10sICctZmlsZXMtJyApICE9PSBmYWxzZSApIHsKCQkJCQkkYmFja3VwX3R5cGVfdGV4dCA9ICd
GaWxlcyBPbmx5IEJhY2t1cCc7CgkJCQkJJGJhY2t1cF90eXBlICAgICAgPSAnZmlsZXMnOwoJCQkJfSBlbH
NlaWYgKCBzdHJpc3RyKCAkYmFja3VwX2FyY2hpdmVbJ2ZpbGUnXSwgJy1leHBvcnQtJyApICE9PSBmYWxzZ
SApIHsKCQkJCQkkYmFja3VwX3R5cGVfdGV4dCA9ICdNdWx0aXNpdGUgU3Vic2l0ZSBFeHBvcnQnOwoJCQkJ
CSRiYWNrdXBfdHlwZSAgICAgID0gJ2V4cG9ydCc7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlpZiAoICRiYWN
rdXBfYXJjaGl2ZVsnY29tbWVudCddWyd0eXBlJ10gPT0gJ2RiJyApIHsKCQkJCQkkYmFja3VwX3R5cGVfdG
V4dCA9ICdEYXRhYmFzZSBPbmx5IEJhY2t1cCc7CgkJCQkJJGJhY2t1cF90eXBlICAgICAgPSAnZGInOwoJC
QkJfSBlbHNlaWYgKCAkYmFja3VwX2FyY2hpdmVbJ2NvbW1lbnQnXVsndHlwZSddID09ICdmdWxsJyApIHsK
CQkJCQkkYmFja3VwX3R5cGVfdGV4dCA9ICdGdWxsIEJhY2t1cCc7CgkJCQkJJGJhY2t1cF90eXBlICAgICA
gPSAnZnVsbCc7CgkJCQl9IGVsc2VpZiAoICRiYWNrdXBfYXJjaGl2ZVsnY29tbWVudCddWyd0eXBlJ10gPT
0gJ2ZpbGVzJyApIHsKCQkJCQkkYmFja3VwX3R5cGVfdGV4dCA9ICdGaWxlcyBPbmx5IEJhY2t1cCc7CgkJC
QkJJGJhY2t1cF90eXBlICAgICAgPSAnZmlsZXMnOwoJCQkJfSBlbHNlaWYgKCAkYmFja3VwX2FyY2hpdmVb
J2NvbW1lbnQnXVsndHlwZSddID09ICdleHBvcnQnICkgewoJCQkJCSRiYWNrdXBfdHlwZV90ZXh0ID0gJ01
1bHRpc2l0ZSBTdWJzaXRlIEV4cG9ydCc7CgkJCQkJJGJhY2t1cF90eXBlICAgICAgPSAnZXhwb3J0JzsKCQ
kJCX0gZWxzZSB7CgkJCQkJJGJhY2t1cF90eXBlX3RleHQgPSAkYmFja3VwX2FyY2hpdmVbJ2NvbW1lbnQnX
VsndHlwZSddIC4gJyBCYWNrdXAnOwoJCQkJCSRiYWNrdXBfdHlwZSAgICAgID0gJGJhY2t1cF9hcmNoaXZl
Wydjb21tZW50J11bJ3R5cGUnXTsKCQkJCX0KCQkJfQoKCgkJCWVjaG8gJzxsaT4nOwoKCQkJZWNobyAnPGl
ucHV0IGNsYXNzPSJzZWxlY3RhYmxlQmFja3VwQXJjaGl2ZSIgdHlwZT0icmFkaW8iICc7CgkJCWlmICggJG
JhY2t1cF9pZCA9PSAwICkgewoJCQkJZWNobyAnY2hlY2tlZD0iY2hlY2tlZCIgJzsKCQkJfQoJCQllY2hvI
CduYW1lPSJmaWxlIiB2YWx1ZT0iJyAuICRiYWNrdXBfYXJjaGl2ZVsnZmlsZSddIC4gJyIgZGF0YS10eXBl
PSInIC4gJGJhY2t1cF90eXBlIC4gJyI+ICcgLiAkYmFja3VwX2FyY2hpdmVbJ2ZpbGUnXTsKCQkJZWNobyA
nPHNwYW4gc3R5bGU9ImZsb2F0OiByaWdodDsiPicgLiBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+ZmlsZV
9zaXplKCBmaWxlc2l6ZSggQUJTUEFUSCAuICRiYWNrdXBfYXJjaGl2ZVsnZmlsZSddICkgKSAuICc8L3NwY
W4+JzsKCgkJCWVjaG8gJzxkaXYgY2xhc3M9ImRlc2NyaXB0aW9uIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDIy
cHg7IG1hcmdpbi10b3A6IDZweDsgZm9udC1zdHlsZTogbm9ybWFsOyBsaW5lLWhlaWdodDogMjZweDsiPic
7CgkJCSRtZXRhID0gYXJyYXkoKTsKCgkJCWVjaG8gJGJhY2t1cF90eXBlX3RleHQ7CgoJCQlpZiAoICRiYW
NrdXBfYXJjaGl2ZVsnY29tbWVudCddWydjcmVhdGVkJ10gIT0gJycgKSB7CgkJCQllY2hvICcgZnJvbSAnI
C4gcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPmRhdGUoICRiYWNrdXBfYXJjaGl2ZVsnY29tbWVudCddWydj
cmVhdGVkJ10gKTsKCQkJfQoKCQkJaWYgKCAkYmFja3VwX2FyY2hpdmVbJ2NvbW1lbnQnXVsnd3BfdmVyc2l
vbiddICE9ICcnICkgewoJCQkJZWNobyAnIG9uIFdvcmRQcmVzcyB2JyAuICRiYWNrdXBfYXJjaGl2ZVsnY2
9tbWVudCddWyd3cF92ZXJzaW9uJ107CgkJCX0KCgkJCWlmICggJGJhY2t1cF9hcmNoaXZlWydjb21tZW50J
11bJ3NpdGV1cmwnXSAhPSAnJyApIHsKCQkJCWVjaG8gJzxicj5TaXRlOiAnIC4gJGJhY2t1cF9hcmNoaXZl
Wydjb21tZW50J11bJ3NpdGV1cmwnXTsKCQkJfQoKCQkJaWYgKCAkYmFja3VwX2FyY2hpdmVbJ2NvbW1lbnQ
nXVsncHJvZmlsZSddICE9ICcnICkgewoJCQkJZWNobyAnPGJyPlByb2ZpbGU6ICcgLiBodG1sZW50aXRpZX
MoICRiYWNrdXBfYXJjaGl2ZVsnY29tbWVudCddWydwcm9maWxlJ10gKTsKCQkJfQoKCQkJaWYgKCAkYmFja
3VwX2FyY2hpdmVbJ2NvbW1lbnQnXVsnbm90ZSddICE9ICcnICkgewoJCQkJZWNobyAnPGJyPk5vdGU6ICcg
LiBodG1sZW50aXRpZXMoICRiYWNrdXBfYXJjaGl2ZVsnY29tbWVudCddWydub3RlJ10gKSAuICc8YnI+Jzs
KCQkJfQoKCQkJLy8gU2hvdyBtZXRhIGJ1dHRvbiBpZiBtZXRhIGluZm8gYXZhaWxhYmxlLgoJCQlpZiAoIC
RiYWNrdXBfYXJjaGl2ZVsnY29tbWVudCddWyd0eXBlJ10gIT0gJycgKSB7CgkJCQkkZmlsZV9oYXNoID0gb
WQ1KCAkYmFja3VwX2FyY2hpdmVbJ2ZpbGUnXSApOwoJCQkJZWNobyAnPGEgaHJlZj0iI2hhc2hfdmlldyIg
Y2xhc3M9ImJ1dHRvbiBidXR0b24tdGVydGlhcnkgbGVhbk1vZGFsIHZpZXdfaGFzaF9jbGljayIgc3R5bGU
9IiBmbG9hdDogcmlnaHQ7IiBpZD0idmlld19oYXNoXycgLiAkaSAuICciIGRhdGEtZmlsZT0iJyAuICRiYW
NrdXBfYXJjaGl2ZVsnZmlsZSddIC4gJyI+VmlldyBDaGVja3N1bTwvYT4nOwoJCQkJZWNobyAnPGEgaHJlZ
j0iI2luZm9fJyAuICRmaWxlX2hhc2ggLiAnIiBjbGFzcz0iYnV0dG9uIGJ1dHRvbi10ZXJ0aWFyeSBsZWFu
TW9kYWwiIHN0eWxlPSJmbG9hdDogcmlnaHQ7IiBpZD0idmlld19tZXRhXycgLiAkaSAuICciPlZpZXcgTWV
0YTwvYT4nOwoJCQkJPz4KCQkJCTxkaXYgaWQ9Imhhc2hfdmlldyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij
4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbCI+CgkJCQkJCTxkaXYgY2xhc3M9Im1vZGFsX2hlYWRlciI+CgkJC
QkJCQk8YSBjbGFzcz0ibW9kYWxfY2xvc2UiPiZ0aW1lczs8L2E+CgkJCQkJCQk8aDI+VmlldyBDaGVja3N1
bTwvaDI+CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl
2IGNsYXNzPSJtb2RhbF9jb250ZW50Ij4KCQkJCQkJCTxzcGFuIGlkPSJoYXNoX3ZpZXdfbG9hZGluZyI+PG
ltZyBzcmM9ImltcG9ydGJ1ZGR5L2ltYWdlcy9sb2FkaW5nLmdpZiI+IENhbGN1bGF0aW5nIGJhY2t1cCBma
WxlIENoZWNrc3VtIChNRDUgaGFzaCkuLi4gVGhpcyBtYXkgdGFrZSBhIG1vbWVudC4uLjwvc3Bhbj4KCQkJ
CQkJCTxzcGFuIGlkPSJoYXNoX3ZpZXdfcmVzcG9uc2UiPjwvc3Bhbj4KCQkJCQkJPC9kaXY+CgkJCQkJPC9
kaXY+CgkJCQk8L2Rpdj4KCQkJCTxkaXYgaWQ9Ijw/cGhwIGVjaG8gJ2luZm9fJyAuICRmaWxlX2hhc2g7ID
8+IiBzdHlsZT0iZGlzcGxheTogbm9uZTsgaGVpZ2h0OiA5MCU7Ij4KCQkJCQk8ZGl2IGNsYXNzPSJtb2Rhb
CI+CgkJCQkJCTxkaXYgY2xhc3M9Im1vZGFsX2hlYWRlciI+CgkJCQkJCQk8YSBjbGFzcz0ibW9kYWxfY2xv
c2UiPiZ0aW1lczs8L2E+CgkJCQkJCQk8aDI+QmFja3VwIE1ldGEgSW5mb3JtYXRpb248L2gyPgoJCQkJCQk
8L2Rpdj4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWxfY29udGVudCI+CgkJCQkJCQk8P3BocAoJCQkJCQkJJG
NvbW1lbnRfbWV0YSA9IGFycmF5KCk7CgkJCQkJCQlmb3JlYWNoICggJGJhY2t1cF9hcmNoaXZlWydjb21tZ
W50J10gYXMgJGNvbW1lbnRfbGluZV9uYW1lID0+ICRjb21tZW50X2xpbmVfdmFsdWUgKSB7IC8vIExvb3Ag
dGhyb3VnaCBhbGwgbWV0YSBmaWVsZHMgaW4gdGhlIGNvbW1lbnQgYXJyYXkgdG8gZGlzcGxheS4KCgkJCQk
JCQkJaWYgKCBmYWxzZSAhPT0gKCAkcmVzcG9uc2UgPSBiYWNrdXBidWRkeV9jb3JlOjpwcmV0dHlfbWV0YV
9pbmZvKCAkY29tbWVudF9saW5lX25hbWUsICRjb21tZW50X2xpbmVfdmFsdWUgKSApICkgewoJCQkJCQkJC
QkkY29tbWVudF9tZXRhW10gPSAkcmVzcG9uc2U7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQkJaWYgKCBj
b3VudCggJGNvbW1lbnRfbWV0YSApID4gMCApIHsKCQkJCQkJCQlwYl9iYWNrdXBidWRkeTo6JHVpLT5saXN
0X3RhYmxlKAoJCQkJCQkJCQkkY29tbWVudF9tZXRhLAoJCQkJCQkJCQlhcnJheSgKCQkJCQkJCQkJCSdjb2
x1bW5zJyA9PiBhcnJheSggJ01ldGEgSW5mb3JtYXRpb24nLCAnVmFsdWUnICksCgkJCQkJCQkJCQknY3NzJ
yAgICAgPT4gJ3dpZHRoOiAxMDAlOyBtaW4td2lkdGg6IDIwMHB4OycsCgkJCQkJCQkJCSkKCQkJCQkJCQkp
OwoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQllY2hvICc8aT5ObyBtZXRhIGRhdGEgZm91bmQgaW4gemlwIGN
vbW1lbnQuIFNraXBwaW5nIG1ldGEgaW5mb3JtYXRpb24gZGlzcGxheS48L2k+JzsKCQkJCQkJCX0KCQkJCQ
kJCT8+CgkJCQkJCTwvZGl2PgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQk8P3BocAoJCQl9IC8vIGVuZ
CBpZiB0eXBlIG5vdCBibGFuay4KCgoJCQkvLyBlY2hvIGltcGxvZGUoICcgLSAnLCAkbWV0YSApOwoJCQll
Y2hvICc8L2Rpdj4nOwoJCQllY2hvICc8L2xpPic7CgkJfQoJCWVjaG8gJzwvdWw+JzsKCX0KCT8+Cgo8P3B
ocAp9IC8vIEVuZCBmaWxlIG5vdCBnaXZlbiBpbiBxdWVyeXN0cmluZy4KCgovLyBJZiBvbmUgb3IgbW9yZS
BiYWNrdXAgZmlsZXMgd2FzIGZvdW5kIHRoZW4gcHJvdmlkZSBhIGJ1dHRvbiB0byBjb250aW51ZS4KaWYgK
CAoICEgZW1wdHkoICRiYWNrdXBfYXJjaGl2ZXMgKSApIHx8ICggJ3N0YXNoJyA9PSBwYl9iYWNrdXBidWRk
eTo6X1BPU1QoICd1cGxvYWQnICkgKSApIHsKCWVjaG8gJzwvZGl2PjwhLS0gL3dyYXAgLS0+JzsKCT8+Cgo
JPGRpdiBjbGFzcz0ibWFpbl9ib3hfZm9vdCI+CgkJPGNlbnRlcj4KCgkJCTxkaXYgc3R5bGU9Im1hcmdpbi
10b3A6IDIwcHg7IG1hcmdpbi1ib3R0b206IDMwcHg7Ij4KCQkJCTxiPldoYXQgd291bGQgeW91IGxpa2Ugd
G8gcmVzdG9yZSBmcm9tIHRoZSBiYWNrdXA/PC9iPgoJCQkJJm5ic3A7Jm5ic3A7CgkJCQk8bGFiZWwgc3R5
bGU9ImZsb2F0OiBpbmhlcml0OyI+CgkJCQkJPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJyZXN0b3J
lRmlsZXMiIHZhbHVlPSIxIiBDSEVDS0VEPiBGaWxlcwoJCQkJPC9sYWJlbD4KCQkJCSZuYnNwOyZuYnNwOw
oJCQkJPGxhYmVsIHN0eWxlPSJmbG9hdDogaW5oZXJpdDsiPgoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2Jve
CIgbmFtZT0icmVzdG9yZURhdGFiYXNlIiB2YWx1ZT0iMSIgQ0hFQ0tFRD4gRGF0YWJhc2UKCQkJCTwvbGFi
ZWw+CgkJCTwvZGl2PgoKCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ic3VibWl0IiB2YWx1ZT0iUmV
zdG9yZSBCYWNrdXAiIGNsYXNzPSJpdC1idXR0b24iPgoJCQk8YnV0dG9uIGlkPSJhZHZhbmNlZF9vcHRpb2
5zX2J1dHRvbiIgaHJlZj0iI3BiX2FkdmFuY2VkX21vZGFsIiBjbGFzcz0iaXQtYnV0dG9uIGl0LXNlY29uZ
GFyeSBsZWFuTW9kYWwiPkFkdmFuY2VkIE9wdGlvbnM8L2J1dHRvbj4KCQk8L2NlbnRlcj4KCTwvZGl2Pgo8
P3BocAp9IGVsc2UgewoJLy8gcGJfYmFja3VwYnVkZHk6OmFsZXJ0KCAnVXBsb2FkIGEgYmFja3VwIGZpbGU
gdG8gY29udGludWUuJyApOwoJZWNobyAnPGJyIC8+PGJyIC8+PGJyIC8+JzsKCWVjaG8gJzxiPllvdSBtdX
N0IHVwbG9hZCBhIGJhY2t1cCBmaWxlIGJ5IEZUUCwgdGhlIHVwbG9hZCB0YWIsIG9yIGltcG9ydCBmcm9tI
FN0YXNoIHRvIGNvbnRpbnVlLjwvYj4nOwoJZWNobyAnPC9kaXY+PCEtLSAvd3JhcCAtLT4nOwp9Cj8+CgoK
PGRpdiBpZD0icGJfYWR2YW5jZWRfbW9kYWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+Cgk8ZGl2IGNsYXN
zPSJtb2RhbCI+CgkJPGRpdiBjbGFzcz0ibW9kYWxfaGVhZGVyIj4KCQkJPGEgY2xhc3M9Im1vZGFsX2Nsb3
NlIj4mdGltZXM7PC9hPgoJCQk8aDI+QWR2YW5jZWQgT3B0aW9uczwvaDI+CgkJCUV4ZXJjaXNlIGNhdXRpb
24uIEFkZGl0aW9uYWwgb3B0aW9ucyBhdmFpbGFibGUgb24gc3Vic2VxdWVudCBzdGVwcy4KCQk8L2Rpdj4K
CQk8ZGl2IGNsYXNzPSJtb2RhbF9jb250ZW50Ij4KCgoJCQlVbnppcCBTdHJhdGVneToKCQkJPHNlbGVjdCB
uYW1lPSJ6aXBNZXRob2RTdHJhdGVneSI+CgkJCQk8b3B0aW9uIHZhbHVlPSJhbGwiIFNFTEVDVEVEPkFsbC
BBdmFpbGFibGUgKCB1bnppcCB2aWEgZXhlYygpICZndDsgWmlwQXJjaGl2ZSAmZ3Q7IFBjbFppcCApIC0gZ
GVmYXVsdDwvb3B0aW9uPgoJCQkJPG9wdGlvbiB2YWx1ZT0iemlwYXJjaGl2ZSI+Q29tcGF0aWJpbGl0eTog
WmlwQXJjaGl2ZTwvb3B0aW9uPgoJCQkJPG9wdGlvbiB2YWx1ZT0icGNsemlwIj5Db21wYXRpYmlsaXR5OiB
QY2xaaXA8L29wdGlvbj4KCQkJPC9zZWxlY3Q+CgkJCTxicj48YnI+CgoJCQk8P3BocAoJCQkkbWlncmF0ZV
9odGFjY2Vzc19pbnB1dCA9ICc8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im1pZ3JhdGVIdGFjY2Vzc
yIgdmFsdWU9IjEiIENIRUNLRUQ+IE1pZ3JhdGUgLmh0YWNjZXNzIGZpbGUgVVJMcyAmIHBhdGhzIChpZiBV
UkwgY2hhbmdlcykuPGJyPic7CgkJCSRtaWdyYXRlX2h0YWNjZXNzX2lucHV0ID0gaXRfYnViX2ltcG9ydGJ
1ZGR5X2FwcGx5X2ZpbHRlcnMoICdtaWdyYXRlX2h0YWNjZXNzX2lucHV0JywgJG1pZ3JhdGVfaHRhY2Nlc3
NfaW5wdXQgKTsKCQkJZWNobyAkbWlncmF0ZV9odGFjY2Vzc19pbnB1dDsKCQkJPz4KCQkJPGlucHV0IHR5c
GU9ImNoZWNrYm94IiBuYW1lPSJza2lwVW56aXAiIHZhbHVlPSIxIj4gU2tpcCB1bnppcHBpbmcgb3Igb3Bl
bmluZyBhcmNoaXZlIChmb3IgbWFudWFsIGV4dHJhY3Rpb24pLgoJCQk8YnI+PGJyPgoKCgoJCTwvZGl2Pgo
JPC9kaXY+CjwvZGl2PgoKCjw/cGhwCmVjaG8gJzwvZm9ybT4nOwo/PgoKPC9kaXY+PCEtLSBlbmQgd3JhcH
BlciBkaXYgLS0+CgoKPGRpdiBpZD0icGJfdXBsb2FkX21vZGFsIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiP
goJPGRpdiBjbGFzcz0ibW9kYWwiPgoJCTxkaXYgY2xhc3M9Im1vZGFsX2hlYWRlciI+CgkJCTxhIGNsYXNz
PSJtb2RhbF9jbG9zZSI+JnRpbWVzOzwvYT4KCQkJPGgyPlVwbG9hZCBCYWNrdXA8L2gyPgoJCQlTbWFsbGV
yIGJhY2t1cHMgY2FuIGJlIHVwbG9hZGVkIGhlcmUgZGlyZWN0bHkgZnJvbSB5b3VyIGNvbXB1dGVyLiBMYX
JnZXIgYmFja3VwcyB3b3JrIGJlc3Qgb3ZlciBGVFAgb3Igb3RoZXIgbWV0aG9kcy4KCQk8L2Rpdj4KCQk8Z
Gl2IGNsYXNzPSJtb2RhbF9jb250ZW50Ij4KCgoJCQk8Zm9ybSBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1k
YXRhIiBhY3Rpb249IiIgbWV0aG9kPSJQT1NUIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InB
hc3NfaGFzaCIgdmFsdWU9Ijw/cGhwIGVjaG8gUEJfUEFTU1dPUkQ7ID8+Ij4KCQkJCTxpbnB1dCB0eXBlPS
JoaWRkZW4iIG5hbWU9InVwbG9hZCIgdmFsdWU9ImxvY2FsIj4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iI
G5hbWU9Im9wdGlvbnMiIHZhbHVlPSI8P3BocCBlY2hvIGh0bWxzcGVjaWFsY2hhcnMoIHNlcmlhbGl6ZSgg
cGJfYmFja3VwYnVkZHk6OiRvcHRpb25zICkgKTsgPz4nIj4KCQkJCUNob29zZSBhIGxvY2FsIGJhY2t1cCB
0byB1cGxvYWQ6PGJyPgoJCQkJPHA+CgkJCQkJPGlucHV0IG5hbWU9ImZpbGUiIHR5cGU9ImZpbGUiIHN0eW
xlPSJ3aWR0aDogMTAwJTsiPgoJCQkJPC9wPgoJCQkJPGJyPgoJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgd
mFsdWU9IlVwbG9hZCBCYWNrdXAiIGNsYXNzPSJ0b2dnbGUgYnV0dG9uIj4KCQkJPC9mb3JtPgoKCgkJPC9k
aXY+Cgk8L2Rpdj4KPC9kaXY+CgoKPGRpdiBpZD0icGJfc3Rhc2hfbW9kYWwiIHN0eWxlPSJkaXNwbGF5OiB
ub25lOyI+Cgk8ZGl2IGNsYXNzPSJtb2RhbCI+CgkJPGRpdiBjbGFzcz0ibW9kYWxfaGVhZGVyIj4KCQkJPG
EgY2xhc3M9Im1vZGFsX2Nsb3NlIj4mdGltZXM7PC9hPgoJCQk8aDI+UmVzdG9yZSBCYWNrdXAgZnJvbSBTd
GFzaDwvaDI+CgkJCUJhY2t1cHMgc3RvcmVkIGluIHlvdXIgaVRoZW1lcyBTdGFzaCBtYXkgYmUgcmV0cmll
dmVkIGZvciByZXN0b3JpbmcgaGVyZS4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJtb2RhbF9jb250ZW50Ij4
KCgkJCTw/cGhwIHJlcXVpcmUgJ19odG1sXzFfc3Rhc2gucGhwJzsgPz4KCgkJPC9kaXY+Cgk8L2Rpdj4KPC
9kaXY+Cg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/home.php,importbuddy/views/hom
e.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/importingDatabase.htm,import
buddy/views/importingDatabase.htm
PGNlbnRlcj4KCTxoMz5SZXN0b3JpbmcgRGF0YWJhc2UgLi4uPC9oMz4KCTxoNCBpZD0iaW1wb3J0aW5nRGF
0YWJhc2UtcHJvZ3Jlc3NNZXNzYWdlIj48L2g0Pgo8L2NlbnRlcj4=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/importingDatabase.htm,importbu
ddy/views/importingDatabase.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/index.php,importbuddy/views/
index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/index.php,importbuddy/views/in
dex.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/login.php,importbuddy/views/
login.php
PHNjcmlwdD5qUXVlcnkoICcjcGFnZVRpdGxlJyApLmh0bWwoICdBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCc
gKTs8L3NjcmlwdD4KPD9waHAKCgppZiAoIHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ3Bhc3N3b3JkJyApIC
E9ICcnICkgewoJZ2xvYmFsICRwYl9sb2dpbl9hdHRlbXB0czsKCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ
0ludmFsaWQgcGFzc3dvcmQuIFBsZWFzZSBlbnRlciB0aGUgcGFzc3dvcmQgeW91IHByb3ZpZGVkIHdpdGhp
biBCYWNrdXBCdWRkeSBTZXR0aW5ncy4gQXR0ZW1wdCAjJyAuICRwYl9sb2dpbl9hdHRlbXB0cyAuICcuJyA
pOwoJZWNobyAnPGJyPic7Cn0KPz4KCjxwPkVudGVyIHlvdXIgSW1wb3J0QnVkZHkgcGFzc3dvcmQgYmVsb3
cgdG8gYmVnaW4uPC9wPgoKPGZvcm0gbWV0aG9kPSJwb3N0Ij4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hb
WU9ImFjdGlvbiIgdmFsdWU9ImxvZ2luIj4KCTxpbnB1dCB0eXBlPSJwYXNzd29yZCIgbmFtZT0icGFzc3dv
cmQiIHN0eWxlPSJ3aWR0aDogMjUwcHg7Ij4KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCI
gdmFsdWU9IkF1dGhlbnRpY2F0ZSIgY2xhc3M9Iml0LWJ1dHRvbiI+CjwvZm9ybT4K
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/login.php,importbuddy/views/lo
gin.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/migratingDatabase.htm,import
buddy/views/migratingDatabase.htm
PGNlbnRlcj4KCTxoMz5NaWdyYXRpbmcgRGF0YWJhc2UgLi4uPC9oMz4KCTxoNCBpZD0ibWlncmF0aW5nRGF
0YWJhc2UtcHJvZ3Jlc3NNZXNzYWdlIj48L2g0Pgo8L2NlbnRlcj4=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/migratingDatabase.htm,importbu
ddy/views/migratingDatabase.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/unzippingFiles.htm,importbud
dy/views/unzippingFiles.htm
PGNlbnRlcj4KCTxoMz5QbGVhc2Ugd2FpdCB3aGlsZSB5b3VyIGZpbGVzIGFyZSByZXN0b3JlZCAuLi48L2g
zPgoJPGg0IGlkPSJ1bnppcHBpbmdGaWxlcy1wcm9ncmVzc01lc3NhZ2UiPlJlc3RvcmluZyBGaWxlczwvaD
Q+CjwvY2VudGVyPg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/unzippingFiles.htm,importbuddy
/views/unzippingFiles.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/views/urlReplaceSettings.htm,impor
tbuddy/views/urlReplaceSettings.htm
CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImltcG9ydGJ1ZGR5L2pzL2pxdWVyeS5sZWF
uTW9kYWwubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJalF1ZX
J5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKCQlqUXVlcnkoJy5sZWFuTW9kYWwnKS5sZWFuTW9kY
WwoCgkJCQl7IHRvcCA6IDQ1LCBvdmVybGF5IDogMC40LCBjbG9zZUJ1dHRvbjogIi5tb2RhbF9jbG9zZSIg
fQoJCSk7Cgl9KTsKPC9zY3JpcHQ+CgoKCjxmb3JtIG9uU3VibWl0PSJqUXVlcnkoJyN1cmxSZXBsYWNlLXJ
lc3RvcmVEYXRhJykudmFsKCB3aW5kb3cuYnRvYSggZW5jb2RlVVJJQ29tcG9uZW50KCBKU09OLnN0cmluZ2
lmeSggd2luZG93LnJlc3RvcmVEYXRhICkgKSApICk7IiBhY3Rpb249Ij9hamF4PTUiIHRhcmdldD0ibWlua
UZyYW1lIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJkYl9zZXR0aW5nIj48IS0tIHRoaXMgZm9ybSBpcyBvbmx5
IHN1Ym1pdHRlZCBhZnRlciBydW5uaW5nIHRocm91Z2ggamF2YXNjcmlwdC4gc3VibWl0dGluZyBhY3R1YWw
gZm9ybSBpbnN0ZWFkIG9mIHVzaW5nIGpRdWVyeSBwb3N0IHNvIHdlIGNhbiB0YXJnZXQgaWZyYW1lLiAtLT
4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InJlc3RvcmVEYXRhIiBpZD0idXJsUmVwbGFjZS1yZXN0b
3JlRGF0YSIgdmFsdWU9IiI+PCEtLSB0aGlzIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgd2lsbCBuZWVkIHBh
cnNlZCBieSBQSFAgb24gdGhlIHJlY2VpdmluZyBlbmQuIHBvcHVsYXRlZCBvbiBzdWJtaXQgYWZ0ZXIgZGI
gdGVzdCBwYXNzZXMuIC0tPgoKCgoKCgoKCgk8dGFibGUgY2xhc3M9InNldHRpbmdzVGFibGUiPgoJCTx0cj
48dGggc3R5bGU9IndpZHRoOiAzMCU7Ij4mbmJzcDs8L3RoPjx0aCBzdHlsZT0id2lkdGg6IDMwJTsiPk9sZ
CBVUkw8L3RoPjx0aCBzdHlsZT0id2lkdGg6IDEwJTsiPiZuYnNwOzwvdGg+PHRoIHN0eWxlPSJ3aWR0aDog
MzAlOyI+TmV3IFVSTDwvdGg+PC90cj4KCQoJCgkKCQk8dHI+PCEtLSBXT1JEUFJFU1MgQUREUkVTUyAoQUx
MIFNJVEUgVFlQRVMpIC0tPgoJCQk8dGQ+CgkJCQlXb3JkUHJlc3MgQWRkcmVzcyA8c3BhbiBjbGFzcz0ibG
lnaHQiPihTaXRlIFVSTCk8L3NwYW4+IDxhIGNsYXNzPSJwbHVnaW5idWRkeV90aXAiIHRpdGxlPSJUaGlzI
GlzIHRoZSBhZGRyZXNzIHdoZXJlIHlvdSB3YW50IHRoZSBmaW5hbCBXb3JkUHJlc3Mgc2l0ZSB5b3UgYXJl
IHJlc3RvcmluZyAvIG1pZ3JhdGluZyB0byByZXNpZGUuIEV4OiBodHRwOi8vZm9vLmNvbS93cCI+PGltZyB
zcmM9ImltcG9ydGJ1ZGR5L3BsdWdpbmJ1ZGR5L2ltYWdlcy9wbHVnaW5idWRkeV90aXAucG5nIiBhbHQ9Ii
g/KSI+PC9hPgoJCQk8L3RkPgoJCQk8dGQ+CgkJCQk8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Im9sZF9zZ
XR0aW5nIiB2YWx1ZT0iPCU9IGRhdC5zaXRldXJsICU+IiBESVNBQkxFRD4KCQkJPC90ZD4KCQkJPHRkIGNs
YXNzPSJzZXR0aW5nQ29weSI+CgkJCQk8YSBocmVmPSIjIj4mcmFycjs8L2E+CgkJCTwvdGQ+CgkJCTx0ZD4
KCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiB2YWx1ZT0iPCU9IGRlZmF1bHRVUkwgJT4iIG5hbWU9InNpdGV1cm
wiPgoJCQk8L3RkPgoJCTwvdHI+CgkJPGJyIC8+PGJyIC8+CgkJPCUgaWYgKCBkYXQuaXNfbXVsdGlzaXRlI
D09PSB0cnVlICkgeyAvLyBtdWx0aXNpdGUgJT4KCQk8dHI+PCEtLSBNVUxUSVNJVEUgRE9NQUlOIC0tPgoJ
CQk8dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3A7Ij4KCQkJCU11bHRpc2l0ZSBEb21haW4gPCU9IHR
pcCggJ1RoaXMgaXMgdGhlIE11bHRpU2l0ZSBtYWluIGRvbWFpbi4gRXg6IGZvby5jb20uIFdBUk5JTkc6IE
NoYW5naW5nIHRoaXMgbWF5IHJlc3VsdCBpbiBVUkwgcHJvYmxlbXMuIFVzZSBjYXV0aW9uLicgKSAlPgoJC
QkJPGJyPgoJCQkJPHNwYW4gY2xhc3M9ImxpZ2h0Ij4oSG9tZSBVUkwpPC9zcGFuPgoJCQk8L3RkPgoJCQk8
dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOiB0b3A7Ij4KCQkJCTxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0
ib2xkX3NldHRpbmciIHZhbHVlPSI8JT0gZGF0LmRvbWFpbiAlPiIgRElTQUJMRUQ+CgkJCTwvdGQ+CgkJCT
x0ZCBjbGFzcz0ic2V0dGluZ0NvcHkiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogdG9wOyI+CgkJCQk8YSBoc
mVmPSIjIj4mcmFycjs8L2E+CgkJCTwvdGQ+CgkJCTx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246IHRvcDsi
PgoJCQkJPGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSI8JT0gZGVmYXVsdERvbWFpbiAlPiIgbmFtZT0iaG9
tZXVybCI+CgkJCQk8YnI+Tm90ZTogVGhpcyBVUkwgYWJvdmUgd2lsbCBhbHNvIGJlIHRoZSBuZXcgTXVsdG
lzaXRlIE5ldHdvcmsgVVJMLgoJCQk8L3RkPgoJCTwvdHI+CgkKCQk8JSB9IGVsc2UgeyAlPgoJCQoJCTx0c
j48IS0tIENVU1RPTSBIT01FIFVSTCAtLT4KCQkJPHRkPgoJCQkJPGxhYmVsIHN0eWxlPSJ3aWR0aDogMTAw
JTsiIGZvcj0iY2hlY2tfY3VzdG9tX2hvbWUiPgoJCQkJCUN1c3RvbSBTaXRlIEFkZHJlc3MgPHNwYW4gY2x
hc3M9ImxpZ2h0Ij4oSG9tZSBVUkwpPC9zcGFuPiA8JT0gdGlwKCAnT1BUSU9OQUwuIFRoaXMgaXMgYWxzby
Brbm93biBhcyB0aGUgc2l0ZSBhZGRyZXNzLiBUaGlzIGlzIHRoZSBob21lIGFkZHJlc3Mgd2hlcmUgeW91c
iBtYWluIHNpdGUgcmVzaWRlcy4gVGhpcyBtYXkgZGlmZmVyIGZyb20geW91ciBXb3JkUHJlc3MgVVJMLiBG
b3IgZXhhbXBsZTogaHR0cDovL2Zvby5jb20nICkgJT4KCQkJCTwvbGFiZWw+CgkJCTwvdGQ+CgkJCTx0ZD4
KCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0iY3VzdG9tSG9tZUVuYWJsZWQiIHZhbHVlPSJvbi
Igb25DbGljaz0ialF1ZXJ5KCcjY3VzdG9tX2hvbWUnKS50b2dnbGUoKTsiIHN0eWxlPSJ3aWR0aDogYXV0b
zsiPiA8c3BhbiBjbGFzcz0ibGlnaHQiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogLTNweDsiPk9wdGlvbmFs
LiBEaXNhYmxlZCBieSBkZWZhdWx0Ljwvc3Bhbj4KCQkJPC90ZD4KCQkJPHRkIGNvbHNwYW49IjIiPiZuYnN
wOzwvdGQ+CgkJPC90cj4KCQk8dHIgaWQ9ImN1c3RvbV9ob21lIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPj
whLS0gU0lURSBBRERSRVNTIChTVEFOREFMT05FIE9OTFkpIC0tPgoJCQk8dGQ+CgkJCQkmbmJzcDsKCQkJP
C90ZD4KCQkJPHRkPgoJCQkJPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJvbGRfc2V0dGluZyIgdmFsdWU9
IjwlPSBkYXQuaG9tZXVybCAlPiIgRElTQUJMRUQ+CgkJCTwvdGQ+CgkJCTx0ZCBjbGFzcz0ic2V0dGluZ0N
vcHkiPgoJCQkJPGEgaHJlZj0iIyIgdGl0bGU9IkNsaWNrIHRvIGNvcHkgb2xkIHNldHRpbmcgb3Zlci4iPi
ZyYXJyOzwvYT4KCQkJPC90ZD4KCQkJPHRkPgoJCQkJPGlucHV0IHR5cGU9InRleHQiIHZhbHVlPSI8JT0gZ
GVmYXVsdFVSTCAlPiIgbmFtZT0iaG9tZXVybCI+CgkJCTwvdGQ+CgkJPC90cj4KCQoJCTwlIH0gLy8gZW5k
IG5vbi1tdWx0aXNpdGUgJT4KCQoJCgk8L3RhYmxlPgoJPGJyPjxicj48YnI+CgkKCQoJCgkKCTxkaXYgY2x
hc3M9Im1haW5fYm94X2Zvb3QiPgoJCTxicj4KCQk8Y2VudGVyPgoJCQk8aW5wdXQgdHlwZT0ic3VibWl0Ii
BuYW1lPSJuZXh0U3RlcCIgdmFsdWU9Ik5leHQgU3RlcCIgY2xhc3M9Iml0LWJ1dHRvbiI+CgkJCTxidXR0b
24gaHJlZj0iI3BiX2FkdmFuY2VkX21vZGFsIiBjbGFzcz0iaXQtYnV0dG9uIGl0LXNlY29uZGFyeSBsZWFu
TW9kYWwiPkFkdmFuY2VkIE9wdGlvbnM8L2J1dHRvbj4KCQk8L2NlbnRlcj4KCgk8L2Rpdj4KCQoJCgkKCTx
kaXYgaWQ9InBiX2FkdmFuY2VkX21vZGFsIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgoJCTxkaXYgY2xhc3
M9Im1vZGFsIj4KCQkJPGRpdiBjbGFzcz0ibW9kYWxfaGVhZGVyIj4KCQkJCTxhIGNsYXNzPSJtb2RhbF9jb
G9zZSI+JnRpbWVzOzwvYT4KCQkJCTxoMj5BZHZhbmNlZCBPcHRpb25zPC9oMj4KCQkJCUV4ZXJjaXNlIGNh
dXRpb24gdXNpbmcgYWR2YW5jZWQgb3B0aW9ucy4gQWRkaXRpb25hbCBvcHRpb25zIGF2YWlsYWJsZSBvbiB
zdWJzZXF1ZW50IHN0ZXBzLgoJCQk8L2Rpdj4KCQkJPGRpdiBjbGFzcz0ibW9kYWxfY29udGVudCI+CgkJCQ
kKCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjEiIG5hbWU9Im1pZ3JhdGVEYXRhYmFzZSIKC
QkJCQkgICBvbmNsaWNrPSIKCQkJCQlpZiAoIGpRdWVyeSh0aGlzKS5pcyggJzpjaGVja2VkJyApICkgeyAv
LyBPbiBjaGVja2luZyB0aGlzIGJveCwgd2UgbmVlZCB0byBoaWRlIG9wdGlvbnM7IHVuY2hlY2tpbmcgc2h
vdyBvcHRpb25zLgoJCQkJCQkJalF1ZXJ5KCAnI2RhdGFiYXNlX21pZ3JhdGVfb3B0aW9ucycgKS5zbGlkZU
Rvd24oKTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCWpRdWVyeSggJyNkYXRhYmFzZV9taWdyYXRlX29wdGlvb
nMnICkuc2xpZGVVcCgpOwoJCQkJCQl9CgkJCQkJCWpRdWVyeSggJyNkYXRhYmFzZV9taWdyYXRlX29wdGlv
bnMgPiBpbnB1dCcgKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7IC8vIFVuY2hlY2sgYWxsIG9wdGlvbnMgd2l
0aGluLgoJCQkJCSIgQ0hFQ0tFRD4gTWlncmF0ZSBVUkxzL3BhdGhzIGluIGRhdGFiYXNlIGZyb20gb2xkIG
xvY2F0aW9uIHRvIG5ldy4gPGJyPgoJCQkJPGRpdiBpZD0iZGF0YWJhc2VfbWlncmF0ZV9vcHRpb25zIj4KC
QkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIHZhbHVlPSIxIiBuYW1lPSJtaWdyYXRlRGF0YWJhc2VCcnV0
ZUZvcmNlIiBDSEVDS0VEPiBNaWdyYXRlIFVSTFMvcGF0aHMgaW4gZGF0YWJhc2UgaW4gYWxsIGxvY2F0aW9
ucyB1c2luZyBicnV0ZSBmb3JjZS4gPCU9IHRpcCggJ0J5IGRlZmF1bHQgQmFja3VwQnVkZHkgd2lsbCBleH
RlbnNpdmVseSBleGFtaW5lIGFuZCBtaWdyYXRlIHVua25vd24gZGF0YWJhc2UgdGFibGVzLiAgU29tZXRpb
WVzIGhvd2V2ZXIgdGhpcyBjYW4gY2F1c2UgdGltZW91dHMgb24gbGFyZ2VyIHNpdGVzLiAgWW91IG1heSBz
a2lwIHRoaXMgaW50ZW5zaXZlIHByb2NlZHVyZSB0byByZWR1Y2UgcmVxdWlyZWQgcnVudGltZSBmb3IgZGF
0YWJhc2UgbWlncmF0aW9uIHN0ZXBzLiBOb3RlIHRoYXQgc29tZSBVUkxzIG9yIHBhdGhzIG1heSBub3QgYm
UgdXBkYXRlZCBpZiBza2lwcGluZyB0aGlzIHN0ZXAuICBBbGwgbWFqb3IgV29yZFByZXNzIFVSTHMgYW5kI
HBhdGhzIHdpbGwgc3RpbGwgYmUgdXBkYXRlZCBob3dldmVyLicgKSAlPjxicj4KCQkJCQlNYXhpbXVtIHRp
bWUgcGVyIGNodW5rIHdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBkYXRhYmFzZTogPGlucHV0IHR5cGU9InRleHQ
iIG5hbWU9Im1heF9leGVjdXRpb25fdGltZSIgaWQ9Im1heF9leGVjdXRpb25fdGltZSIgdmFsdWU9IjwlPS
BtYXhFeGVjdXRpb25UaW1lICU+IiBzaXplPSI1Ij4gc2Vjb25kcy4gPCU9IHRpcCggJ1RoZSBtYXhpbXVtI
GFtb3VudCBvZiB0aW1lIEltcG9ydEJ1ZGR5IHNob3VsZCBhbGxvdyBhIGRhdGFiYXNlIGltcG9ydCBjaHVu
ayB0byBydW4uIEltcG9ydEJ1ZGR5IGJ5IGRlZmF1bHQgbGltaXRzIGVhY2ggY2h1bmsgdG8geW91ciBNYXh
pbXVtIFBIUCBydW50aW1lLiBJZiB5b3VyIGRhdGFiYXNlIGltcG9ydCBzdGVwIGlzIHRpbWluZyBvdXQgdG
hlbiBsb3dlcmluZyB0aGlzIHZhbHVlIHdpbGwgaW5zdHJ1Y3QgdGhlIHNjcmlwdCB0byBsaW1pdCBlYWNoI
GBjaHVua2AgdG8gYWxsb3cgaXQgdG8gZmluaXNoIHdpdGhpbiB0aGlzIHRpbWUgcGVyaW9kLiBSYWlzaW5n
IHRoaXMgdmFsdWUgYWJvdmUgeW91ciBzZXJ2ZXJzIGxpbWl0cyB3aWxsIG5vdCBpbmNyZWFzZSBvciBvdmV
ycmlkZSBzZXJ2ZXIgc2V0dGluZ3MuJyApICU+CgkJCQk8L2Rpdj4KCQkJCTxicj4KCQkJCQoJCQk8L2Rpdj
4KCQk8L2Rpdj4KCTwvZGl2PgoJCgkKPC9mb3JtPg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/views/urlReplaceSettings.htm,importb
uddy/views/urlReplaceSettings.htm
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/2.php,importbuddy
/controllers/ajax/2.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CkF1dGg6OnJlcXVpcmVfYXV0aGVudG
ljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCnBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3ZpZXcoI
CdfaWZyYW1lX2hlYWRlcicpOwpwYl9iYWNrdXBidWRkeTo6c2V0X2dyZWVkeV9zY3JpcHRfbGltaXRzKCk7
CmVjaG8gIjxzY3JpcHQ+cGFnZVRpdGxlKCAnU3RlcCAyOiBSZXN0b3JpbmcgRmlsZXMnICk7PC9zY3JpcHQ
+IjsKcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTG9hZGluZyBzdGVwIDIuJyApOwplY2
hvICI8c2NyaXB0PmJiX3Nob3dTdGVwKCAndW56aXBwaW5nRmlsZXMnICk7PC9zY3JpcHQ+IjsKcGJfYmFja
3VwYnVkZHk6OmZsdXNoKCk7CgoKaWYgKCAndHJ1ZScgIT0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdkZXBs
b3knICkgKSB7IC8vIE5PVCBkZXBsb3ltZW50LiBkZXBsb3ltZW50IG1vZGUgcHJlLWxvYWRzIHN0YXRlIGR
hdGEgaW4gYSBmaWxlIGluc3RlYWQgb2YgcGFzc2luZyB2aWEgcG9zdC4KCS8vIERldGVybWluZSBzZWxlY3
RlZCBhcmNoaXZlIGZpbGUuCgkkYXJjaGl2ZUZpbGUgPSBBQlNQQVRIIC4gc3RyX3JlcGxhY2UoIGFycmF5K
CAnXFwnLCAnLycgKSwgJycsIHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ2ZpbGUnICkgKTsKCSRleGlzdGlu
Z19zdGF0ZSA9IGFycmF5KCk7Cn0gZWxzZSB7IC8vIERlcGxveW1lbnQuCglpZiAoIGlzc2V0KCBwYl9iYWN
rdXBidWRkeTo6JG9wdGlvbnNbJ2RlZmF1bHRfc3RhdGVfb3ZlcnJpZGVzJ10gKSAmJiAoIGNvdW50KCBwYl
9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2RlZmF1bHRfc3RhdGVfb3ZlcnJpZGVzJ10gKSA+IDAgKSApIHsgL
y8gRGVmYXVsdCBzdGF0ZSBvdmVycmlkZXMgZXhpc3QuIEFwcGx5IHRoZW0uCgkJJGFyY2hpdmVGaWxlID0g
cGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydkZWZhdWx0X3N0YXRlX292ZXJyaWRlcyddWydhcmNoaXZlJ10
7CgkJJGV4aXN0aW5nX3N0YXRlID0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydkZWZhdWx0X3N0YXRlX2
92ZXJyaWRlcyddOwoJCSRleGlzdGluZ19zdGF0ZVsndGVtcFBhdGgnXSA9IEFCU1BBVEggLiAnaW1wb3J0Y
nVkZHkvdGVtcF8nIC4gcGJfYmFja3VwYnVkZHk6OnJhbmRvbV9zdHJpbmcoIDEyICkgLiAnLyc7Cgl9IGVs
c2UgewoJCWRpZSggJ0Vycm9yICM4NDM3OTc5NDMyMjMzNzg5NDogTWlzc2luZyBleHBlY3RlZCBkZWZhdWx
0IHN0YXRlIG92ZXJyaWRlLiBPcHRpb25zOiBgJyAuIHByaW50X3IoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW
9ucywgdHJ1ZSApIC4gJ2AuJyApOwoJfQp9CgppZiAoICEgZmlsZV9leGlzdHMoICRhcmNoaXZlRmlsZSApI
CkgewoJZGllKCAnRXJyb3IgIzgzNDk4NDogU3BlY2lmaWVkIGJhY2t1cCBhcmNoaXZlIGAnIC4gaHRtbGVu
dGl0aWVzKCAkYXJjaGl2ZUZpbGUgKSAuICdgIG5vdCBmb3VuZC4gRGlkIHlvdSBkZWxldGUgaXQ/IElmIHR
oZSBmaWxlIGV4aXN0cywgdHJ5IGFnYWluIG9yIHZlcmlmeSBwcm9wZXIgcmVhZCBmaWxlIHBlcm1pc3Npb2
5zIGZvciBQSFAgdG8gYWNjZXNzIHRoZSBmaWxlLicgKTsKfQoKaWYgKCAnMScgPT0gcGJfYmFja3VwYnVkZ
Hk6Ol9QT1NUKCAnc2tpcFVuemlwJyApICkgewoJJHNraXBVbnppcCA9IHRydWU7Cn0gZWxzZSB7Cgkkc2tp
cFVuemlwID0gZmFsc2U7Cn0KCgokc2ltcGxlVmVyc2lvbiA9IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1s
nYmJfdmVyc2lvbiddOwppZiAoIHN0cnBvcyggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydiYl92ZXJzaW
9uJ10sICcgJyApID4gMCApIHsKCSRzaW1wbGVWZXJzaW9uID0gc3Vic3RyKCBwYl9iYWNrdXBidWRkeTo6J
G9wdGlvbnNbJ2JiX3ZlcnNpb24nXSwgMCwgc3RycG9zKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2Ji
X3ZlcnNpb24nXSwgJyAnICkgKTsKfQoKCi8vIEluc3RhbnRpYXRlIHJlc3RvcmUgY2xhc3MuCnJlcXVpcmV
fb25jZSggcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2NsYXNzZXMvcmVzdG9yZS5waHAnIC
k7CiRyZXN0b3JlID0gbmV3IGJhY2t1cGJ1ZGR5X3Jlc3RvcmUoICdyZXN0b3JlJywgJGV4aXN0aW5nX3N0Y
XRlICk7CiRzdGF0dXMgPSAkcmVzdG9yZS0+c3RhcnQoICRhcmNoaXZlRmlsZSwgJHNraXBVbnppcCApOwpp
ZiAoIGZhbHNlID09PSAkc3RhdHVzICkgewoJJGVycm9ycyA9ICRyZXN0b3JlLT5nZXRFcnJvcnMoKTsKCWl
mICggY291bnQoICRlcnJvcnMgKSA+IDAgKSB7CgkJJGVycm9yTXNnID0gJ0Vycm9ycyB3ZXJlIGVuY291bn
RlcmVkOiAnIC4gaW1wbG9kZSggJywgJywgJGVycm9ycyApIC4gJyBJZiBzZWVraW5nIHN1cHBvcnQgcGxlY
XNlIGNsaWNrIHRvIFNob3cgQWR2YW5jZWQgRGV0YWlscyBhYm92ZSBhbmQgcHJvdmlkZSBhIGNvcHkgb2Yg
dGhlIGxvZy4nOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRlcnJvck1zZyApOwoJfSB
lbHNlIHsKCQkkZXJyb3JNc2cgPSAnRXJyb3IgIzg5NDM4MzogVW5rbm93biBlcnJvciBzdGFydGluZyByZX
N0b3JlLiBTZWUgYWR2YW5jZWQgc3RhdHVzIGxvZyBmb3IgZGV0YWlscy4nOwoJfQoJcGJfYmFja3VwYnVkZ
Hk6OmFsZXJ0KCAkZXJyb3JNc2cgKTsKCXJldHVybjsKfQoKJHJlc3RvcmUtPl9zdGF0ZVsnZGVmYXVsdFVS
TCddID0gJHJlc3RvcmUtPmdldERlZmF1bHRVcmwoKTsKJHJlc3RvcmUtPl9zdGF0ZVsnZGVmYXVsdERvbWF
pbiddID0gJHJlc3RvcmUtPmdldERlZmF1bHREb21haW4oKTsKaWYgKCAndHJ1ZScgIT0gcGJfYmFja3VwYn
VkZHk6Ol9HRVQoICdkZXBsb3knICkgKSB7IC8vIGRlcGxveW1lbnQgbW9kZSBwcmUtbG9hZHMgc3RhdGUgZ
GF0YSBpbiBhIGZpbGUgaW5zdGVhZCBvZiBwYXNzaW5nIHZpYSBwb3N0LgoJJHJlc3RvcmUtPl9zdGF0ZSA9
IHBhcnNlX29wdGlvbnMoICRyZXN0b3JlLT5fc3RhdGUgKTsKfQokcmVzdG9yZS0+X3N0YXRlWydza2lwVW5
6aXAnXSA9ICRza2lwVW56aXA7CgovLyBTZXQgdXAgc3RhdGUgdmFyaWFibGVzLgppZiAoICggJ2RiJyA9PS
AkcmVzdG9yZS0+X3N0YXRlWydkYXQnXVsnYmFja3VwX3R5cGUnXSApIHx8ICggZmFsc2UgPT0gJHJlc3Rvc
mUtPl9zdGF0ZVsncmVzdG9yZUZpbGVzJ10gKSApIHsKCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgJ0RhdGFiYXNlIGJhY2t1cCBPUiBub3QgcmVzdG9yaW5nIGZpbGVzLicgKTsKCSRyZXN0b3JlLT5
fc3RhdGVbJ3RlbXBQYXRoJ10gPSBBQlNQQVRIIC4gJ2ltcG9ydGJ1ZGR5L3RlbXBfJyAuIHBiX2JhY2t1cG
J1ZGR5OjpyYW5kb21fc3RyaW5nKCAxMiApIC4gJy8nOwoJJHJlc3RvcmUtPl9zdGF0ZVsncmVzdG9yZUZpb
GVSb290J10gPSAkcmVzdG9yZS0+X3N0YXRlWyd0ZW1wUGF0aCddOwoJcGJfYmFja3VwYnVkZHk6OmFudGlf
ZGlyZWN0b3J5X2Jyb3dzaW5nKCAkcmVzdG9yZS0+X3N0YXRlWydyZXN0b3JlRmlsZVJvb3QnXSwgJGRpZSA
9IGZhbHNlICk7Cn0gZWxzZSB7CglwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdSZXN0b3
JpbmcgZmlsZXMuJyApOwoJJHJlc3RvcmUtPl9zdGF0ZVsncmVzdG9yZUZpbGVSb290J10gPSBBQlNQQVRIO
yAvLyBSZXN0b3JlIGZpbGVzIGludG8gY3VycmVudCByb290Lgp9CgovLyBQYXJzZSBzdWJtaXR0ZWQgb3B0
aW9ucyBmb3Igc2F2aW5nIHRvIHN0YXRlLgpmdW5jdGlvbiBwYXJzZV9vcHRpb25zKCAkcmVzdG9yZURhdGE
gKSB7CgoJaWYgKCAnMScgPT0gcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAncmVzdG9yZUZpbGVzJyApICkgey
AkcmVzdG9yZURhdGFbJ3Jlc3RvcmVGaWxlcyddID0gdHJ1ZTsgfSBlbHNlIHsgJHJlc3RvcmVEYXRhWydyZ
XN0b3JlRmlsZXMnXSA9IGZhbHNlOyB9CglpZiAoICcxJyA9PSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdy
ZXN0b3JlRGF0YWJhc2UnICkgKSB7ICRyZXN0b3JlRGF0YVsncmVzdG9yZURhdGFiYXNlJ10gPSB0cnVlOyB
9IGVsc2UgeyAkcmVzdG9yZURhdGFbJ3Jlc3RvcmVEYXRhYmFzZSddID0gZmFsc2U7IH0KCWlmICggJzEnID
09IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ21pZ3JhdGVIdGFjY2VzcycgKSApIHsgJHJlc3RvcmVEYXRhW
ydtaWdyYXRlSHRhY2Nlc3MnXSA9IHRydWU7IH0gZWxzZSB7ICRyZXN0b3JlRGF0YVsnbWlncmF0ZUh0YWNj
ZXNzJ10gPSBmYWxzZTsgfQoKCWlmICggKCAnYWxsJyA9PSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICd6aXB
NZXRob2RTdHJhdGVneScgKSApIHx8ICggJ3ppcGFyY2hpdmUnID09IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVC
ggJ3ppcE1ldGhvZFN0cmF0ZWd5JyApICkgfHwgKCAncGNsemlwJyA9PSBwYl9iYWNrdXBidWRkeTo6X1BPU
1QoICd6aXBNZXRob2RTdHJhdGVneScgKSApICkgewoJCSRyZXN0b3JlRGF0YVsnemlwTWV0aG9kU3RyYXRl
Z3knXSA9IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ3ppcE1ldGhvZFN0cmF0ZWd5JyApOwoJfQoKCXJldHV
ybiAkcmVzdG9yZURhdGE7Cgp9IC8vIEVuZCBwYXJzZV9vcHRpb25zKCkuCgoKLy8gVHVybiBvbiBtYWludG
VuYW5jZSBtb2RlIGZvciBXb3JkUHJlc3MgdG8gcHJldmVudCBicm93c2luZyB0aGUgc2l0ZSB1bnRpbCBpd
CBpcyBmdWxseSBpbXBvcnRlZC4KJHJlc3RvcmUtPm1haW50ZW5hbmNlT24oKTsKCgppZiAoIHRydWUgIT09
ICRyZXN0b3JlLT5fc3RhdGVbJ3NraXBVbnppcCddICkgewoKCS8vIFVuemlwIGJhY2t1cCBhcmNoaXZlLiB
Gb3IgREItb25seSBvbmx5IHJlc3RvcmVzIFNRTCBmaWxlcyB0byB0ZW1wIGRpcmVjdG9yeS4gRm9yIGZpbG
VzLCB1bnppcHMgYWxsIHRvIEFCU1BBVEguCgkkcmVzdWx0cyA9ICRyZXN0b3JlLT5yZXN0b3JlRmlsZXMoK
TsKCWlmICggdHJ1ZSAhPT0gJHJlc3VsdHMgKSB7IC8vIFVuemlwIGZhaWxlZC4KCgkJcGJfYmFja3VwYnVk
ZHk6OmFsZXJ0KCAnRmlsZSBleHRyYWN0aW9uIHByb2Nlc3MgZGlkIG5vdCBjb21wbGV0ZSBzdWNjZXNzZnV
sbHkuIFVuYWJsZSB0byBjb250aW51ZSB0byBuZXh0IHN0ZXAuIE1hbnVhbGx5IGV4dHJhY3QgdGhlIGJhY2
t1cCBaSVAgZmlsZSBhbmQgY2hvb3NlIHRvICJTa2lwIEZpbGUgRXh0cmFjdGlvbiIgZnJvbSB0aGUgYWR2Y
W5jZWQgb3B0aW9ucyBvbiBTdGVwIDEuIERldGFpbHM6ICcgLiAkcmVzdG9yZS0+Z2V0RXJyb3JzKCksIHRy
dWUsICc5MDA1JyApOwoKCX0gZWxzZSB7IC8vIFVuemlwIHN1Y2Nlc3MuCgoJCWVjaG8gIjxzY3JpcHQ+YmJ
fYWN0aW9uKCAndW56aXBTdWNjZXNzJyApOzwvc2NyaXB0PiI7CgoJCWlmICggZmFsc2UgPT09ICRyZXN0b3
JlLT5fc3RhdGVbJ3Jlc3RvcmVGaWxlcyddICkgeyAvLyBTa2lwIHJlc3RvcmluZyBmaWxlcy4KCQkJcGJfY
mFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnU0tJUFBJTkcgcmVzdG9yZSBvZiBmaWxlcyBiYXNl
ZCBvbiBzZXR0aW5ncyBmcm9tIFN0ZXAgMS4nICk7CgkJCWVjaG8gIjxzY3JpcHQ+YmJfYWN0aW9uKCAnZml
sZXNSZXN0b3JlU2tpcHBlZCcgKTs8L3NjcmlwdD4iOwoJCX0gZWxzZSB7IC8vIFVuemlwIGFsbCBmaWxlcy
BhbmQvb3IgZGF0YWJhc2Ugc3FsIGZpbGVzLgoJCQllY2hvICI8c2NyaXB0PmJiX2FjdGlvbiggJ2ZpbGVzU
mVzdG9yZVN1Y2Nlc3MnICk7PC9zY3JpcHQ+IjsKCQl9CgoJfQoKfSBlbHNlIHsKCSRyZXN1bHRzID0gdHJ1
ZTsKCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NvbXBsZXRlbHkgc2tpcHBpbmcgQUx
MIGZpbGUgZXh0cmFjdGlvbiBiYXNlZCBvbiBza2lwVW56aXAgYWR2YW5jZWQgc2V0dGluZy4nICk7CgllY2
hvICI8c2NyaXB0PmJiX2FjdGlvbiggJ2ZpbGVzUmVzdG9yZVNraXBwZWQnICk7PC9zY3JpcHQ+IjsKfQoKC
i8vIE9uIHVuemlwIHN1Y2Nlc3MgT1Igc2tpcHBpbmcgdW56aXAuCnBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMo
ICdkZXRhaWxzJywgJ0ZpbmlzaGluZyBzdGVwIDIuJyApOwppZiAoICggZmFsc2UgPT09ICRyZXN0b3JlLT5
fc3RhdGVbJ3Jlc3RvcmVGaWxlcyddICkgfHwgKCB0cnVlID09PSAkcmVzdWx0cyApICkgewoJJHJlc3Rvcm
UtPnJlbmFtZUh0YWNjZXNzVGVtcCgpOyAvLyBSZW5hbWUgLmh0YWNjZXNzIHRvIC5odGFjY2Vzcy5iYl90Z
W1wIHVudGlsIGVuZCBvZiBtaWdyYXRpb24uCgkvL3NsZWVwKDEpOyAvLyBHaXZlIHRpbWUgZm9yIGZpbGUg
cmVuYW1lPwoJJHJlc3RvcmUtPmRldGVybWluZURhdGFiYXNlRmlsZXMoKTsKCXBiX2JhY2t1cGJ1ZGR5Ojp
zdGF0dXMoICdkZXRhaWxzJywgJ0Fib3V0IHRvIGxvYWQgU3RlcCAzLicgKTsKCT8+Cgk8c2NyaXB0PgoJCX
NldFRpbWVvdXQoIGZ1bmN0aW9uKCl7CgkJCXBhZ2VUaXRsZSggJ1N0ZXAgMzogRGF0YWJhc2UgU2V0dGluZ
3MnICk7CgkJCWJiX3Nob3dTdGVwKCAnZGF0YWJhc2VTZXR0aW5ncycsIDw/cGhwIGVjaG8ganNvbl9lbmNv
ZGUoICRyZXN0b3JlLT5fc3RhdGUgKTsgPz4gKTsKCQl9LCAyMDAwKTsKCTwvc2NyaXB0PgoJPD9waHAKfQo
KCmVjaG8gJzxzY3JpcHQ+TlByb2dyZXNzLmRvbmUoKTs8L3NjcmlwdD4nOwoKCi8vIExvYWQgZm9vdGVyLg
pwYl9iYWNrdXBidWRkeTo6bG9hZF92aWV3KCAnX2lmcmFtZV9mb290ZXInKTsKCi8vIERlcGxveW1lbnQgc
HJvY2VlZC4KaWYgKCAndHJ1ZScgPT0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdkZXBsb3knICkgKSB7Cgkk
ZGVwbG95TW9kZU9uID0gJzEnOwoJJG5leHRTdGVwTnVtID0gNDsKCWVjaG8gJzwhLS0gQVVUT1BST0NFRUQ
gVE8gU1RFUCAnIC4gJG5leHRTdGVwTnVtIC4gJyAtLT4nOwoKCS8vIFdyaXRlIGRlZmF1bHQgc3RhdGUgb3
ZlcnJpZGVzLgoJZ2xvYmFsICRpbXBvcnRidWRkeV9maWxlOwoJJGltcG9ydEZpbGVTZXJpYWwgPSBiYWNrd
XBidWRkeV9jb3JlOjpnZXRfc2VyaWFsX2Zyb21fZmlsZSggJGltcG9ydGJ1ZGR5X2ZpbGUgKTsKCSRzdGF0
ZV9maWxlID0gQUJTUEFUSCAuICdpbXBvcnRidWRkeS0nIC4gJGltcG9ydEZpbGVTZXJpYWwgLiAnLXN0YXR
lLnBocCc7CglwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdXcml0aW5nIHRvIHN0YXRlIG
ZpbGUgYCcgLiAkc3RhdGVfZmlsZSAuICdgLicgKTsKCWlmICggZmFsc2UgPT09ICggJGZpbGVfaGFuZGxlI
D0gQGZvcGVuKCAkc3RhdGVfZmlsZSwgJ3cnICkgKSApIHsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
ZXJyb3InLCAnRXJyb3IgIzMyODkzNzogVGVtcCBzdGF0ZSBmaWxlIGlzIG5vdCBjcmVhdGFibGUvd3JpdGF
ibGUuIENoZWNrIHlvdXIgcGVybWlzc2lvbnMuICgnIC4gJHN0YXRlX2ZpbGUgLiAnKScgKTsKCQlyZXR1cm
4gZmFsc2U7Cgl9CglpZiAoIGZhbHNlID09PSBmd3JpdGUoICRmaWxlX2hhbmRsZSwgIjw/cGhwIGRpZSgnQ
WNjZXNzIERlbmllZC4nKTsgLy8gPCEtLSA/PlxuIiAuIGJhc2U2NF9lbmNvZGUoIGpzb25fZW5jb2RlKCAk
cmVzdG9yZS0+X3N0YXRlICkgKSApICkgewoJCXB
iX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjMjM4OTM3MzogVW5hYmxlIHRvIHdyaX
RlIHRvIHN0YXRlIGZpbGUuJyApOwoJfSBlbHNlIHsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0Y
WlscycsICdXcm90ZSB0byBzdGF0ZSBmaWxlLicgKTsKCX0KCWZjbG9zZSggJGZpbGVfaGFuZGxlICk7Cgk/
PgoJPGZvcm0gbWV0aG9kPSJwb3N0IiBhY3Rpb249Ij9hamF4PTw/cGhwIGVjaG8gJG5leHRTdGVwTnVtOyA
/PiZ2PTw/cGhwIGVjaG8gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICd2JyApOyA/PiZkZXBsb3k9dHJ1ZSZkaX
JlY3Rpb249PD9waHAgZWNobyBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ2RpcmVjdGlvbicgKTsgPz4mZGlzc
GxheV9tb2RlPWVtYmVkIiBpZD0iZGVwbG95LWF1dG9Qcm9jZWVkIj4KCQk8IS0tIGlucHV0IHR5cGU9Imhp
ZGRlbiIgbmFtZT0icmVzdG9yZURhdGEiIHZhbHVlPSI8P3BocCAvL2VjaG8gYmFzZTY0X2VuY29kZSggdXJ
sZW5jb2RlKCBqc29uX2VuY29kZSggJHJlc3RvcmUtPl9zdGF0ZSApICkgKTsgPz4iIC0tPgoJCTxpbnB1dC
B0eXBlPSJzdWJtaXQiIG5hbWU9Im15LXN1Ym1pdCIgdmFsdWU9Ik5leHQgU3RlcCIgc3R5bGU9InZpc2lia
WxpdHk6IGhpZGRlbjsiPgoJPC9mb3JtPgoJPHNjcmlwdD5qUXVlcnkoICcjZGVwbG95LWF1dG9Qcm9jZWVk
JyApLnN1Ym1pdCgpOzwvc2NyaXB0PgoJPD9waHAKfSBlbHNlIHsKCSRkZXBsb3lNb2RlT24gPSAnMCc7Cn0
KCnBiX2JhY2t1cGJ1ZGR5OjpmbHVzaCgpOwokaW5fcGFnZSA9IHRydWU7Cg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/2.php,importbuddy/c
ontrollers/ajax/2.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/4.php,importbuddy
/controllers/ajax/4.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CkF1dGg6OnJlcXVpcmVfYXV0aGVudG
ljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCnBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3ZpZXcoI
CdfaWZyYW1lX2hlYWRlcicpOwpwYl9iYWNrdXBidWRkeTo6c2V0X2dyZWVkeV9zY3JpcHRfbGltaXRzKCk7
CmVjaG8gIjxzY3JpcHQ+cGFnZVRpdGxlKCAnU3RlcCA0OiBSZXN0b3JpbmcgRGF0YWJhc2UnICk7PC9zY3J
pcHQ+IjsKcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTG9hZGluZyBzdGVwIDQuJyApOw
pwYl9iYWNrdXBidWRkeTo6Zmx1c2goKTsKCmdsb2JhbCAkd3BkYjsKCgppZiAoICd0cnVlJyAhPSBwYl9iY
WNrdXBidWRkeTo6X0dFVCggJ2RlcGxveScgKSApIHsgLy8gZGVwbG95bWVudCBtb2RlIHByZS1sb2FkcyBz
dGF0ZSBkYXRhIGluIGEgZmlsZSBpbnN0ZWFkIG9mIHBhc3NpbmcgdmlhIHBvc3QuCgkvLyBQYXJzZSBzdWJ
taXR0ZWQgcmVzdG9yZURhdGEgcmVzdG9yZSBzdGF0ZSBmcm9tIHByZXZpb3VzIHN0ZXAuCgkkcmVzdG9yZU
RhdGEgPSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdyZXN0b3JlRGF0YScgKTsKCQoJCgkvLyBEZWNvZGUgc
3VibWl0dGVkIGRhdGEsIHJlcG9ydGluZyBkZXRhaWxzIG9uIGZhaWx1cmUuCgkkZGVjb2RlRmFpbFJlYXNv
biA9ICcnOwoJaWYgKCBmYWxzZSA9PT0gKCAkcmVzdG9yZURhdGEgPSBiYXNlNjRfZGVjb2RlKCAkcmVzdG9
yZURhdGEgKSApICkgeyAvLyBmYWxzZSBpZiBmYWlsZWQKCQkkZGVjb2RlRmFpbFJlYXNvbiA9ICdFUlJPUi
AjODM4OTNiOiBSZXN0b3JlIGhhbHRlZC4gVW5hYmxlIHRvIGJhc2U2NF9kZWNvZGUoKSBzdWJtaXR0ZWQgZ
m9ybSBkYXRhIGAnIC4gaHRtbGVudGl0aWVzKCBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdyZXN0b3JlRGF0
YScgKSApIC4gJ2AuJzsKCX0gZWxzZSB7IC8vIFN1Y2Nlc3MuCgkJJHJlc3RvcmVEYXRhID0gdXJsZGVjb2R
lKCAkcmVzdG9yZURhdGEgKTsKCQlpZiAoIG51bGwgPT09ICggJHJlc3RvcmVEYXRhID0ganNvbl9kZWNvZG
UoICRyZXN0b3JlRGF0YSwgdHJ1ZSApICkgKSB7IC8vIG51bGwgaWYgZmFpbGVkCgkJCSRtZXNzYWdlID0gJ
0VSUk9SICM4Mzg5M2E6IFJlc3RvcmUgaGFsdGVkLiBVbmFibGUgdG8gZGVjb2RlIEpTT04gcmVzdG9yZSBi
YXNlNjQgZGVjb2RlZCBkYXRhIGAnIC4gaHRtbGVudGl0aWVzKCBiYXNlNjRfZGVjb2RlKCBwYl9iYWNrdXB
idWRkeTo6X1BPU1QoICdyZXN0b3JlRGF0YScgKSApICkgLiAnYC4gQmVmb3JlIGJhc2U2NCBkZWNvZGU6IG
AnIC4gaHRtbGVudGl0aWVzKCBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdyZXN0b3JlRGF0YScgKSApIC4gJ
2AuIChOb3RlOiBBIGN1c3RvbWVyIGhhcyByZXBvcnRlZCBydW5uaW5nIG91dCBvZiBkaXNrIHNwYWNlIGFz
IGEgcG9zc2libGUgY2F1c2UuIFRoaXMgaXMgbm90IGNvbmZpcm1lZCBidXQgY291bGQgYmUgdXNlZnVsIHR
vIGNoZWNrLiknOwoJCQlpZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ2pzb25fbGFzdF9lcnJvcicgKSApIHsKCQ
kgCQkkbWVzc2FnZSAuPSAnIGpzb25fbGFzdF9lcnJvcjogYCcgLiBqc29uX2xhc3RfZXJyb3IoKSAuICdgL
ic7CgkJIAl9CgkJIAkkZGVjb2RlRmFpbFJlYXNvbiA9ICRtZXNzYWdlOwoJCX0gZWxzZSB7IC8vIFN1Y2Nl
c3MuCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1N1Y2Nlc3MgZGVjb2Rpbmcgc3V
ibWl0dGVkIGVuY29kZWQgZGF0YS4nICk7CgkJfQoJfQoJLy8gUmVwb3J0IGZhaWx1cmUgYW5kIGZhdGFsbH
kgaGFsdC4KCWlmICggJycgIT09ICRkZWNvZGVGYWlsUmVhc29uICkgewoJCXBiX2JhY2t1cGJ1ZGR5Ojphb
GVydCggJG1lc3NhZ2UgKTsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAkbWVzc2FnZSAp
OwoJCWRpZSgpOwoJfQoJCgkKfSBlbHNlIHsKCWlmICggaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9
uc1snZGVmYXVsdF9zdGF0ZV9vdmVycmlkZXMnXSApICYmICggY291bnQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3
B0aW9uc1snZGVmYXVsdF9zdGF0ZV9vdmVycmlkZXMnXSApID4gMCApICkgeyAvLyBEZWZhdWx0IHN0YXRlI
G92ZXJyaWRlcyBleGlzdC4gQXBwbHkgdGhlbS4KCQkkcmVzdG9yZURhdGEgPSBwYl9iYWNrdXBidWRkeTo6
JG9wdGlvbnNbJ2RlZmF1bHRfc3RhdGVfb3ZlcnJpZGVzJ107Cgl9IGVsc2UgewoJCWRpZSggJ0Vycm9yICM
0NjQzMjI1OiBNaXNzaW5nIGV4cGVjdGVkIGRlZmF1bHQgc3RhdGUgb3ZlcnJpZGUuJyApOwoJfQp9CgoKLy
8gSW5zdGFudGlhdGUgcmVzdG9yZSBjbGFzcy4KcmVxdWlyZV9vbmNlKCBwYl9iYWNrdXBidWRkeTo6cGx1Z
2luX3BhdGgoKSAuICcvY2xhc3Nlcy9yZXN0b3JlLnBocCcgKTsKJHJlc3RvcmUgPSBuZXcgYmFja3VwYnVk
ZHlfcmVzdG9yZSggJ3Jlc3RvcmUnLCAkcmVzdG9yZURhdGEgKTsKdW5zZXQoICRyZXN0b3JlRGF0YSApOyA
vLyBBY2Nlc3MgdmlhICRyZXN0b3JlLT5fc3RhdGUgdG8gbWFrZSBzdXJlIGl0IGlzIGFsd2F5cyB1cCB0by
BkYXRlLgoKCmlmICggZmFsc2UgPT09ICRyZXN0b3JlLT5fc3RhdGVbJ3Jlc3RvcmVEYXRhYmFzZSddICkge
woJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGF0YWJhc2UgcmVzdG9yZSBTS0lQUEVE
IGJhc2VkIG9uIFN0ZXAgMSBzZXR0aW5ncy4nICk7CgllY2hvICI8c2NyaXB0PmJiX2FjdGlvbiggJ2RhdGF
iYXNlUmVzdG9yZVNraXBwZWQnICk7PC9zY3JpcHQ+IjsKfSBlbHNlIHsKCXBiX2JhY2t1cGJ1ZGR5OjpzdG
F0dXMoICdkZXRhaWxzJywgJ0Nvbm5lY3RpbmcgdG8gZGF0YWJhc2UuJyApOwoJCgkvLyBDb25uZWN0IEltc
G9ydEJ1ZGR5IHRvIHRoZSBkYXRhYmFzZSB3aXRoIHRoZXNlIHNldHRpbmdzLgoJJHJlc3RvcmUtPmNvbm5l
Y3REYXRhYmFzZSgpOwoJCgkKCS8vIENBVVRJT046IFdpcGUgZGF0YWJhc2UgdGFibGVzIHdpdGggbWF0Y2h
pbmcgcHJlZml4IGlmIG9wdGlvbiB3YXMgc2VsZWN0ZWQuCglpZiAoIFRSVUUgPT09ICRyZXN0b3JlLT5fc3
RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnd2lwZVByZWZpeCddICkgewoJCWlmICggKCAhIGlzc2V0KCAkc
mVzdG9yZS0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ2ltcG9ydFJlc3VtZUZpbGVzJ10gKSApICYm
ICggJycgPT0gJHJlc3RvcmUtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydpbXBvcnRSZXN1bWVQb2l
udCddICkgKSB7IC8vIE9ubHkgZG8gdGhpcyBpZiBub3QgaW4gcHJvY2VzcyBvZiByZXN1bWluZy4KCQkJcG
JfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnV2lwaW5nIGV4aXN0aW5nIGRhdGFiYXNlIHRhY
mxlcyB3aXRoIHRoZSBwcmVmaXggYCcgLiAgJHJlc3RvcmUtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncydd
WydwcmVmaXgnXSAuICdgIGJhc2VkIG9uIHNldHRpbmdzLi4uJyApOwoJCQlpZiAoIFRSVUUgIT09IHBiX2J
hY2t1cGJ1ZGR5OjokY2xhc3Nlc1snaW1wb3J0J10tPndpcGVQcmVmaXgoICRyZXN0b3JlLT5fc3RhdGVbJ2
RhdGFiYXNlU2V0dGluZ3MnXVsncHJlZml4J10sIFRSVUUgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdlcnJvcicsICdVbmFibGUgdG8gd2lwZSBkYXRhYmFzZSB0YWJsZXMgbWF0Y2hpbmcgcHJlZml4
LicgKTsKCQkJfQoJCX0KCX0KCQoJCgkvLyBEQU5HRVI6IFdpcGUgZGF0YWJhc2Ugb2YgQUxMIFRBQkxFUyB
pZiBvcHRpb24gd2FzIHNlbGVjdGVkLgoJaWYgKCBUUlVFID09PSAkcmVzdG9yZS0+X3N0YXRlWydkYXRhYm
FzZVNldHRpbmdzJ11bJ3dpcGVEYXRhYmFzZSddICkgewoJCWlmICggKCAhIGlzc2V0KCAkcmVzdG9yZS0+X
3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ2ltcG9ydFJlc3VtZUZpbGVzJ10gKSApICYmICggJycgPT0g
JHJlc3RvcmUtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydpbXBvcnRSZXN1bWVQb2ludCddICkgKSB
7IC8vIE9ubHkgZG8gdGhpcyBpZiBub3QgaW4gcHJvY2VzcyBvZiByZXN1bWluZy4KCQkJcGJfYmFja3VwYn
VkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnV2lwaW5nIEFMTCBleGlzdGluZyBkYXRhYmFzZSB0YWJsZXMgY
mFzZWQgb24gc2V0dGluZ3MgKHVzZSB3aXRoIGNhdXRpb24pLi4uJyApOwoJCQlpZiAoIFRSVUUgIT09IHBi
X2JhY2t1cGJ1ZGR5OjokY2xhc3Nlc1snaW1wb3J0J10tPndpcGVEYXRhYmFzZSggVFJVRSApICkgewoJCQk
JcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ1VuYWJsZSB0byB3aXBlIGVudGlyZSBkYXRhYm
FzZSBhcyBjb25maWd1cmVkIGluIHRoZSBzZXR0aW5ncy4nICk7CgkJCX0KCQl9Cgl9CgkKCQoJLy8gUmVzd
G9yZSB0aGUgZGF0YWJhc2UuCglpZiAoICd0cnVlJyA9PSBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ2RlcGxv
eScgKSApIHsKCQkvLyBEcm9wIGFueSBwcmV2aW91cyBpbmNvbXBsZXRlIGRlcGxveW1lbnQgLyByb2xsYmF
jayB0YWJsZXMuCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRHJvcHBpbmcgYW55IG
V4aXN0aW5nIHRlbXBvcmFyeSBkZXBsb3ltZW50IG9yIHJvbGxiYWNrIHRhYmxlcy4nICk7CgkJCgkJJHJlc
3VsdHMgPSAkd3BkYi0+Z2V0X3Jlc3VsdHMoICJTRUxFQ1QgdGFibGVfbmFtZSBBUyBgdGFibGVfbmFtZWAg
RlJPTSBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFICggKCB0YWJsZV9uYW1lIExJS0UgJ2JibmV
3LVxfJScgKSBPUiAoIHRhYmxlX25hbWUgTElLRSAnYmJvbGQtXF8lJyApICkgQU5EIHRhYmxlX3NjaGVtYS
A9IERBVEFCQVNFKCkiLCBBUlJBWV9BICk7CgkJaWYgKCBjb3VudCggJHJlc3VsdHMgKSA+IDAgKSB7CgkJC
WZvcmVhY2goICRyZXN1bHRzIGFzICRyZXN1bHQgKSB7CgkJCQlpZiAoIGZhbHNlID09PSAkd3BkYi0+cXVl
cnkoICJEUk9QIFRBQkxFIGAiIC4gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoICRyZXN1bHRbJ3RhYmx
lX25hbWUnXSApIC4gImAiICkgKSB7CgkJCQkJcmV0dXJuICR0aGlzLT5fZXJyb3IoICdFcnJvciAjMzcyOD
M3NjgzOiBVbmFibGUgdG8gY29weSBvdmVyIEJhY2t1cEJ1ZGR5IHNldHRpbmdzIGZyb20gbGl2ZSBzaXRlI
HRvIGluY29taW5nIGRhdGFiYXNlIGluIHRlbXAgdGFibGUuIERldGFpbHM6IGAnIC4gJHdwZGItPmxhc3Rf
ZXJyb3IgLiAnYC4nICk7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRXJyb3I
gIzg0OTM5ODQ6IFVuYWJsZSB0byBkcm9wIHRlbXAgcm9sbGJhY2svZGVwbG95IHRhYmxlIGAnIC4gJHJlc3
VsdFsndGFibGVfbmFtZSddIC4gJ2AuIERldGFpbHM6IGAnIC4gJHdwZGItPmxhc3RfZXJyb3IgLiAnYC4nI
Ck7CgkJCQl9CgkJCX0KCQl9CgkJCgkJJHJlc3RvcmUtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWyd0
ZW1wUHJlZml4J10gPSAnYmJuZXctJyAuIHN1YnN0ciggJHJlc3RvcmUtPl9zdGF0ZVsnc2VyaWFsJ10sIDA
sIDQgKSAuICdfJyAuICRyZXN0b3JlLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsncHJlZml4J107Cg
l9CgkKCQoJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQWJvdXQgdG8gcmVzdG9yZSBkY
XRhYmFzZS4nICk7CgkkcmVzdG9yZVJlc3VsdCA9ICRyZXN0b3JlLT5yZXN0b3JlRGF0YWJhc2UoICRyZXN0
b3JlLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsndGVtcFByZWZpeCddICk7CgkKCQoJaWYgKCAndHJ
1ZScgPT0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdkZXBsb3knICkgKSB7CgkJCgkJaWYgKCBpc19hcnJheS
ggJHJlc3RvcmVSZXN1bHQgKSApIHsgLy8gQ2h1bmtpbmcuIFJlc3VtZSBzYW1lIHN0ZXAuCgkJCSRuZXh0U
3RlcE51bSA9IDQ7CgkJfSBlbHNlIHsgLy8gTmV4dCBzdGVwLgoJCQkkbmV4dFN0ZXBOdW0gPSA1OwoJCX0K
CQllY2hvICc8IS0tIEFVVE9QUk9DRUVEIFRPIFNURVAgJyAuICRuZXh0U3RlcE51bSAuICcgLS0+JzsKCQk
KCQkKCQkvLyBXcml0ZSBkZWZhdWx0IHN0YXRlIG92ZXJyaWRlcy4KCQlnbG9iYWwgJGltcG9ydGJ1ZGR5X2
ZpbGU7CgkJJGltcG9ydEZpbGVTZXJpYWwgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRfc2VyaWFsX2Zyb21fZ
mlsZSggJGltcG9ydGJ1ZGR5X2ZpbGUgKTsKCQkkc3RhdGVfZmlsZSA9IEFCU1BBVEggLiAnaW1wb3J0YnVk
ZHktJyAuICRpbXBvcnRGaWxlU2VyaWFsIC4gJy1zdGF0ZS5waHAnOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF
0dXMoICdkZXRhaWxzJywgJ1dyaXRpbmcgdG8gc3RhdGUgZmlsZSBgJyAuICRzdGF0ZV9maWxlIC4gJ2AuJy
ApOwoJCWlmICggZmFsc2UgPT09ICggJGZpbGVfaGFuZGxlID0gQGZvcGVuKCAkc3RhdGVfZmlsZSwgJ3cnI
CkgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICMyODM0NjQ6IFRl
bXAgc3RhdGUgZmlsZSBpcyBub3QgY3JlYXRhYmxlL3dyaXRhYmxlLiBDaGVjayB5b3VyIHBlcm1pc3Npb25
zLiAoJyAuICRzdGF0ZV9maWxlIC4gJyknICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJaWYgKCBmYWxzZS
A9PT0gZndyaXRlKCAkZmlsZV9oYW5kbGUsICI8P3BocCBkaWUoJ0FjY2VzcyBEZW5pZWQuJyk7IC8vIDwhL
S0gPz5cbiIgLiBiYXNlNjRfZW5jb2RlKCBqc29uX2VuY29kZSggJHJlc3RvcmUtPl9zdGF0ZSApICkgKSAp
IHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICMyMzg5MzczOiBVbmFibGU
gdG8gd3JpdGUgdG8gc3RhdGUgZmlsZS4nICk7CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YX
R1cyggJ2RldGFpbHMnLCAnV3JvdGUgdG8gc3RhdGUgZmlsZS4nICk7CgkJfQoJCWZjbG9zZSggJGZpbGVfa
GFuZGxlICk7CgkJPz4KCQk8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2FqYXg9PD9waHAgZWNobyAk
bmV4dFN0ZXBOdW07ID8+JnY9PD9waHAgZWNobyBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3YnICk7ID8+JmR
lcGxveT10cnVlJmRpcmVjdGlvbj08P3BocCBlY2hvIHBiX2JhY2t1cGJ1ZGR5OjpfR0VUKCAnZGlyZWN0aW
9uJyApOyA/PiZkaXNwbGF5X21vZGU9ZW1iZWQiIGlkPSJkZXBsb3ktYXV0b1Byb2NlZWQiPgoJCQk8IS0tI
GlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icmVzdG9yZURhdGEiIHZhbHVlPSI8P3BocCAvL2VjaG8gYmFz
ZTY0X2VuY29kZSggdXJsZW5jb2RlKCBqc29uX2VuY29kZSggJHJlc3RvcmUtPl9zdGF0ZSApICkgKTsgPz4
iIC0tPgoJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJteS1zdWJtaXQiIHZhbHVlPSJOZXh0IFN0ZX
AiIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRkZW47Ij4KCQk8L2Zvcm0+CgkJPHNjcmlwdD5qUXVlcnkoICcjZ
GVwbG95LWF1dG9Qcm9jZWVkJyApLnN1Ym1pdCgpOzwvc2NyaXB0PgoJCTw/cGhwCgkJCgl9IGVsc2UgeyAv
LyBOb3JtYWwgaW1wb3J0LgoJCQoJCWlmICggVFJ
VRSAhPT0gJHJlc3RvcmVSZXN1bHQgKSB7CgkJCWlmICggaXNfYXJyYXkoICRyZXN0b3JlUmVzdWx0ICkgKS
B7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEYXRhYmFzZSByZXN0b3JlIGRpZ
CBub3QgZnVsbHkgY29tcGxldGUgdGhpcyBwYXNzLiBDaHVua2luZyBpbiBwcm9ncmVzcy4gUmVzdW1pbmcg
d2hlcmUgbGVmdCBvZmYuIElmIHRoZSBwcm9jZXNzIGRvZXMgbm90IHByb2NlZWQgY2hlY2sgeW91ciBicm9
3c2VyIGVycm9yIGNvbnNvbGUgb3IgUEhQIGVycm9yIGxvZy4nICk7CgkJCQk/PgoKCQkJCTxmb3JtIGlkPS
JyZXN0b3JlQ2h1bmtGb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iP2FqYXg9NCI+CgkJCQkJPGlucHV0I
HR5cGU9ImhpZGRlbiIgbmFtZT0icmVzdG9yZURhdGEiIHZhbHVlPSI8P3BocCBlY2hvIGJhc2U2NF9lbmNv
ZGUoIHVybGVuY29kZSgganNvbl9lbmNvZGUoICRyZXN0b3JlLT5fc3RhdGUgKSApICk7ID8+Ij4KCQkJCQk
8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzdWJtaXRGb3JtIiBjbGFzcz0iYnV0dG9uIGJ1dHRvbi1wcm
ltYXJ5IiB2YWx1ZT0iTmV4dCBTdGVwIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgoJCQkJPC9mb3JtPgoJC
QkJPHNjcmlwdD4KCQkJCQlqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCQkJCQlqUXVl
cnkoICcjcmVzdG9yZUNodW5rRm9ybScgKS5zdWJtaXQoKTsKCQkJCQl9KTsKCQkJCTwvc2NyaXB0PgoJCQk
8P3BocAoJCQl9IGVsc2UgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yIH
Jlc3RvcmluZyBkYXRhYmFzZS4gU2VlIHN0YXR1cyBsb2cgZm9yIGRldGFpbHMuJyApOwoJCQkJcGJfYmFja
3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGF0YWJhc2UgcmVzdG9yZSBmYWlsZWQuJyApOwoJCQkJ
ZWNobyAiPHNjcmlwdD5iYl9hY3Rpb24oICdkYXRhYmFzZVJlc3RvcmVGYWlsZWQnICk7PC9zY3JpcHQ+Ijs
KCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQkKCQkJCgkJCXJldHVybjsKCQl9IGVsc2UgeyAvLyBTdWNjZX
NzLgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEYXRhYmFzZSByZXN0b3JlIGNvb
XBsZXRlZC4nICk7CgkJCWVjaG8gIjxzY3JpcHQ+YmJfYWN0aW9uKCAnZGF0YWJhc2VSZXN0b3JlU3VjY2Vz
cycgKTs8L3NjcmlwdD4iOwoJCX0KCQkKCX0KfQoKCnBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWx
zJywgJ0ZpbmlzaGluZyBzdGVwIDQuJyApOwplY2hvICI8c2NyaXB0PgoJc2V0VGltZW91dCggZnVuY3Rpb2
4oKXsKCQlwYWdlVGl0bGUoICdTdGVwIDU6IFNpdGUgVVJMIFNldHRpbmdzJyApOwoJCWJiX3Nob3dTdGVwK
CAndXJsUmVwbGFjZVNldHRpbmdzJywgIiAuIGpzb25fZW5jb2RlKCAkcmVzdG9yZS0+X3N0YXRlICkgLiAi
ICk7Cgl9LCAyMDAwICk7Cgk8L3NjcmlwdD4iOwoKCnBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3ZpZXcoICdfaWZ
yYW1lX2Zvb3RlcicpOwoK
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/4.php,importbuddy/c
ontrollers/ajax/4.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/5.php,importbuddy
/controllers/ajax/5.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CkF1dGg6OnJlcXVpcmVfYXV0aGVudG
ljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCnBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3ZpZXcoI
CdfaWZyYW1lX2hlYWRlcicpOwpwYl9iYWNrdXBidWRkeTo6c2V0X2dyZWVkeV9zY3JpcHRfbGltaXRzKCk7
CmVjaG8gIjxzY3JpcHQ+cGFnZVRpdGxlKCAnU3RlcCA1OiBNaWdyYXRpbmcgRGF0YWJhc2UnICk7PC9zY3J
pcHQ+IjsKcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTG9hZGluZyBzdGVwIDUuJyApOw
plY2hvICI8c2NyaXB0PmJiX3Nob3dTdGVwKCAnbWlncmF0aW5nRGF0YWJhc2UnICk7PC9zY3JpcHQ+IjsKc
GJfYmFja3VwYnVkZHk6OmZsdXNoKCk7CgoKLy8gRmluYWwgZnVuY3Rpb25zIHRvIHJ1biBhZnRlciBEQiBt
aWdyYXRpb24gaXMgZG9uZS4gSW4gZnVuY3Rpb24gc2luY2UgdGhpcyBpcyBjYWxsZWQgYm90aCBpbiBzdGF
uZGFyZCBhbmQgYXQgZW5kIG9mIGRlcGxveW1lbnQuCmZ1bmN0aW9uIGZpbmFsQWN0aW9ucyggJHJlc3Rvcm
UgKSB7CgkKCS8vIE1pZ3JhdGUgaHRhY2Nlc3MuCglpZiAoIFRSVUUgIT09ICRyZXN0b3JlLT5fc3RhdGVbJ
21pZ3JhdGVIdGFjY2VzcyddICkgewoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1Nr
aXBwaW5nIG1pZ3JhdGlvbiBvZiAuaHRhY2Nlc3MgZmlsZSBiYXNlZCBvbiBzZXR0aW5ncy4nICk7Cgl9IGV
sc2UgewoJCSRyZXN0b3JlLT5taWdyYXRlSHRhY2Nlc3MoKTsKCX0KCgkvLyBSZW5hbWUgLmh0YWNjZXNzLm
JiX3RlbXAgYmFjayB0byAuaHRhY2Nlc3MuCgkkcmVzdG9yZS0+cmVuYW1lSHRhY2Nlc3NUZW1wQmFjaygpO
woJCgkvLyBSZW1vdmUgYW55IHRlbXBvcmFyeSAubWFpbnRlbmFuY2UgZmlsZSBjcmVhdGVkIGJ5IEltcG9y
dEJ1ZGR5LgoJJHJlc3RvcmUtPm1haW50ZW5hbmNlT2ZmKCAkb25seU91ckNyZWF0ZWRGaWxlID0gdHJ1ZSA
pOwoJCgkvLyBSZW1vdmUgYW55IHRlbXBvcmFyeSBpbmRleC5odG0gZmlsZSBjcmVhdGVkIGJ5IEltcG9ydE
J1ZGR5LgoJJHJlc3RvcmUtPnNjcnViSW5kZXhGaWxlcygpOwoJCgkkcmVzdG9yZS0+X3N0YXRlWydibG9nU
HVibGljU3RhdHVzJ10gPSAkcmVzdG9yZS0+Z2V0QmxvZ1B1YmxpY1NldHRpbmcoKTsKCQoJLy8gVE9ETzog
TWFrZSB0aGVzZSB0aG5pbmdzIGJlIGFibGUgdG8gb3V0cHV0IHN0dWZmIGludG8gdGhlIGNsZWFudXBTZXR
0aW5ncy5odG0gdGVtcGxhdGUuIEFkZCBmdW5jdGlvbnM/CgkvLyBVcGRhdGUgd3Bjb25maWcgaWYgbmVlZG
VkLgoJJHdwY29uZmlnX3Jlc3VsdCA9ICRyZXN0b3JlLT5taWdyYXRlV3BDb25maWcoKTsKCWlmICggJHdwY
29uZmlnX3Jlc3VsdCAhPT0gdHJ1ZSApIHsKCQlwYl9iYWNrdXBidWRkeTo6YWxlcnQoICdFcnJvcjogVW5h
YmxlIHRvIHVwZGF0ZSB3cC1jb25maWcucGhwIGZpbGUuIFZlcmlmeSB3cml0ZSBwZXJtaXNzaW9ucyBmb3I
gdGhlIHdwLWNvbmZpZy5waHAgZmlsZSB0aGVuIHJlZnJlc2ggdGhpcyBwYWdlLiBZb3UgbWF5IG1hbnVhbG
x5IHVwZGF0ZSB5b3VyIHdwLWNvbmZpZy5waHAgZmlsZSBieSBjaGFuZ2luZyBpdCB0byB0aGUgZm9sbG93a
W5nOjx0ZXh0YXJlYSByZWFkb25seT0icmVhZG9ubHkiIHN0eWxlPSJ3aWR0aDogODAlOyI+JyAuICR3cGNv
bmZpZ19yZXN1bHQgLiAnPC90ZXh0YXJlYT4nICk7Cgl9CgkKCS8vIFNjYW4gZm9yICd0cm91YmxlJyBzdWN
oIGFzIGEgcmVtYWluaW5nIC5tYWludGVuYW5jZSBmaWxlLCBpbmRleC5odG0sIGluZGV4Lmh0bWwsIG1pc3
Npbmcgd3AtY29uZmlnLnBocCwgbWlzc2luZyAuaHRhY2Nlc3MsIGV0YyBldGMuCgkkcHJvYmxlbXMgPSAkc
mVzdG9yZS0+dHJvdWJsZVNjYW4oKTsKCWlmICggY291bnQoICRwcm9ibGVtcyApID4gMCApIHsKCQkkcmVz
dG9yZS0+X3N0YXRlWydwb3RlbnRpYWxQcm9ibGVtcyddID0gJHByb2JsZW1zOwoJCSR0cm91YmxlX3RleHQ
gPSAnJzsKCQlmb3JlYWNoKCAkcHJvYmxlbXMgYXMgJHByb2JsZW0gKSB7CgkJCSR0cm91YmxlX3RleHQgLj
0gJzxsaT4nIC4gJHByb2JsZW0gLiAnPC9saT4nOwoJCX0KCQkkdHJvdWJsZV90ZXh0ID0gJzx1bD4nIC4gJ
HRyb3VibGVfdGV4dCAuICc8L3VsPic7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ3dhcm5pbmcnLCAn
T25lIG9yIG1vcmUgcG90ZW50aWFsIGlzc3VlcyBkZXRlY3RlZCB0aGF0IG1heSByZXF1aXJlIHlvdXIgYXR
0ZW50aW9uOiAnIC4gJHRyb3VibGVfdGV4dCApOwoJfQoJCglwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZG
V0YWlscycsICdGaW5pc2hlZCBmaW5hbCBhY3Rpb25zIGZ1bmN0aW9uLicgKTsKCglpdF9idWJfaW1wb3J0Y
nVkZHlfZG9fYWN0aW9uKCAnZmluaXNoZWRfZmluYWxfYWN0aW9ucycgKTsKCQp9IC8vIEVuZCBmaW5hbEFj
dGlvbnMoKS4KCgppZiAoICd0cnVlJyAhPSBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ2RlcGxveScgKSApIHs
gLy8gZGVwbG95bWVudCBtb2RlIHByZS1sb2FkcyBzdGF0ZSBkYXRhIGluIGEgZmlsZSBpbnN0ZWFkIG9mIH
Bhc3NpbmcgdmlhIHBvc3QuCgkvLyBQYXJzZSBzdWJtaXR0ZWQgcmVzdG9yZURhdGEgcmVzdG9yZSBzdGF0Z
SBmcm9tIHByZXZpb3VzIHN0ZXAuCgkkcmVzdG9yZURhdGEgPSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdy
ZXN0b3JlRGF0YScgKTsKCQoJCgkvLyBEZWNvZGUgc3VibWl0dGVkIGRhdGEsIHJlcG9ydGluZyBkZXRhaWx
zIG9uIGZhaWx1cmUuCgkkZGVjb2RlRmFpbFJlYXNvbiA9ICcnOwoJaWYgKCBmYWxzZSA9PT0gKCAkcmVzdG
9yZURhdGEgPSBiYXNlNjRfZGVjb2RlKCAkcmVzdG9yZURhdGEgKSApICkgeyAvLyBmYWxzZSBpZiBmYWlsZ
WQKCQkkZGVjb2RlRmFpbFJlYXNvbiA9ICdFUlJPUiAjODM4OTNiOiBSZXN0b3JlIGhhbHRlZC4gVW5hYmxl
IHRvIGJhc2U2NF9kZWNvZGUoKSBzdWJtaXR0ZWQgZm9ybSBkYXRhIGAnIC4gaHRtbGVudGl0aWVzKCBwYl9
iYWNrdXBidWRkeTo6X1BPU1QoICdyZXN0b3JlRGF0YScgKSApIC4gJ2AuJzsKCX0gZWxzZSB7IC8vIFN1Y2
Nlc3MuCgkJJHJlc3RvcmVEYXRhID0gdXJsZGVjb2RlKCAkcmVzdG9yZURhdGEgKTsKCQlpZiAoIG51bGwgP
T09ICggJHJlc3RvcmVEYXRhID0ganNvbl9kZWNvZGUoICRyZXN0b3JlRGF0YSwgdHJ1ZSApICkgKSB7IC8v
IG51bGwgaWYgZmFpbGVkCgkJCSRtZXNzYWdlID0gJ0VSUk9SICM4Mzg5M2I6IFJlc3RvcmUgaGFsdGVkLiB
VbmFibGUgdG8gZGVjb2RlIEpTT04gcmVzdG9yZSBiYXNlNjQgZGVjb2RlZCBkYXRhIGAnIC4gaHRtbGVudG
l0aWVzKCBiYXNlNjRfZGVjb2RlKCBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdyZXN0b3JlRGF0YScgKSApI
CkgLiAnYC4gQmVmb3JlIGJhc2U2NCBkZWNvZGU6IGAnIC4gaHRtbGVudGl0aWVzKCBwYl9iYWNrdXBidWRk
eTo6X1BPU1QoICdyZXN0b3JlRGF0YScgKSApIC4gJ2AuJzsKCQkJaWYgKCBmdW5jdGlvbl9leGlzdHMoICd
qc29uX2xhc3RfZXJyb3InICkgKSB7CgkJIAkJJG1lc3NhZ2UgLj0gJyBqc29uX2xhc3RfZXJyb3I6IGAnIC
4ganNvbl9sYXN0X2Vycm9yKCkgLiAnYC4nOwoJCSAJfQoJCSAJJGRlY29kZUZhaWxSZWFzb24gPSAkbWVzc
2FnZTsKCQl9IGVsc2UgeyAvLyBTdWNjZXNzLgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWls
cycsICdTdWNjZXNzIGRlY29kaW5nIHN1Ym1pdHRlZCBlbmNvZGVkIGRhdGEuJyApOwoJCX0KCX0KCS8vIFJ
lcG9ydCBmYWlsdXJlIGFuZCBmYXRhbGx5IGhhbHQuCglpZiAoICcnICE9PSAkZGVjb2RlRmFpbFJlYXNvbi
ApIHsKCQlwYl9iYWNrdXBidWRkeTo6YWxlcnQoICRtZXNzYWdlICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0Y
XR1cyggJ2Vycm9yJywgJG1lc3NhZ2UgKTsKCQlkaWUoKTsKCX0KCQoJCn0gZWxzZSB7IC8vIERlcGxveW1l
bnQKCWlmICggaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snZGVmYXVsdF9zdGF0ZV9vdmVycml
kZXMnXSApICYmICggY291bnQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snZGVmYXVsdF9zdGF0ZV9vdm
VycmlkZXMnXSApID4gMCApICkgeyAvLyBEZWZhdWx0IHN0YXRlIG92ZXJyaWRlcyBleGlzdC4gQXBwbHkgd
GhlbS4KCQkkcmVzdG9yZURhdGEgPSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2RlZmF1bHRfc3RhdGVf
b3ZlcnJpZGVzJ107Cgl9IGVsc2UgewoJCWRpZSggJ0Vycm9yICM4NDM3OTc5NDQ6IE1pc3NpbmcgZXhwZWN
0ZWQgZGVmYXVsdCBzdGF0ZSBvdmVycmlkZS4nICk7Cgl9Cn0KCgovLyBJbnN0YW50aWF0ZSByZXN0b3JlIG
NsYXNzLgpyZXF1aXJlX29uY2UoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9jbGFzc2VzL
3Jlc3RvcmUucGhwJyApOwokcmVzdG9yZSA9IG5ldyBiYWNrdXBidWRkeV9yZXN0b3JlKCAncmVzdG9yZScs
ICRyZXN0b3JlRGF0YSApOwp1bnNldCggJHJlc3RvcmVEYXRhICk7IC8vIEFjY2VzcyB2aWEgJHJlc3RvcmU
tPl9zdGF0ZSB0byBtYWtlIHN1cmUgaXQgaXMgYWx3YXlzIHVwIHRvIGRhdGUuCmlmICggJ3RydWUnICE9IH
BiX2JhY2t1cGJ1ZGR5OjpfR0VUKCAnZGVwbG95JyApICkgeyAvLyBXZSBkb250IGFjY2VwdCBzdWJtaXR0Z
WQgZm9ybSBvcHRpb25zIGR1cmluZyBkZXBsb3kuCglpZiAoICEgaXNfYXJyYXkoICRyZXN0b3JlLT5fc3Rh
dGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnbWlncmF0ZVJlc3VtZVN0ZXBzJ10gKSApIHsgLy8gU2tpcCBwYXJ
zZSBvcHRpb25zIGlmIG5vdCBjaHVua2luZy4KCQkkcmVzdG9yZS0+X3N0YXRlID0gcGFyc2Vfb3B0aW9ucy
ggJHJlc3RvcmUtPl9zdGF0ZSApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ05vd
CByZXN1bWluZzsgcGFyc2luZyBvcHRpb25zLicgKTsKCX0gZWxzZSB7CgkJcGJfYmFja3VwYnVkZHk6OnN0
YXR1cyggJ2RldGFpbHMnLCAnUmVzdW1pbmc7IHNraXBwaW5nIG9wdGlvbnMgcGFyc2UuJyApOwoJfQp9Cgo
KLy8gUGFyc2Ugc3VibWl0dGVkIG9wdGlvbnMvc2V0dGluZ3MuCmZ1bmN0aW9uIHBhcnNlX29wdGlvbnMoIC
RyZXN0b3JlRGF0YSApIHsKCWlmICggJzEnID09IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ21pZ3JhdGVEY
XRhYmFzZScgKSApIHsgJHJlc3RvcmVEYXRhWydkYXRhYmFzZVNldHRpbmdzJ11bJ21pZ3JhdGVEYXRhYmFz
ZSddID0gdHJ1ZTsgfSBlbHNlIHsgJHJlc3RvcmVEYXRhWydkYXRhYmFzZVNldHRpbmdzJ11bJ21pZ3JhdGV
EYXRhYmFzZSddID0gZmFsc2U7IH0KCWlmICggJzEnID09IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ21pZ3
JhdGVEYXRhYmFzZUJydXRlRm9yY2UnICkgKSB7ICRyZXN0b3JlRGF0YVsnZGF0YWJhc2VTZXR0aW5ncyddW
ydtaWdyYXRlRGF0YWJhc2VCcnV0ZUZvcmNlJ10gPSB0cnVlOyB9IGVsc2UgeyAkcmVzdG9yZURhdGFbJ2Rh
dGFiYXNlU2V0dGluZ3MnXVsnbWlncmF0ZURhdGFiYXNlQnJ1dGVGb3JjZSddID0gZmFsc2U7IH0KCgkkcmV
zdG9yZURhdGFbJ3NpdGV1cmwnXSA9IHByZWdfcmVwbGFjZSggJ3wvKiR8JywgJycsIHBiX2JhY2t1cGJ1ZG
R5OjpfUE9TVCggJ3NpdGV1cmwnICkgKTsgLy8gU3RyaXAgdHJhaWxpbmcgc2xhc2hlcy4KCSRyZXN0b3JlR
GF0YVsnaG9tZXVybCddID0gcHJlZ19yZXBsYWNlKCAnfC8qJHwnLCAnJywgcGJfYmFja3VwYnVkZHk6Ol9Q
T1NUKCAnaG9tZXVybCcgKSApOyAvLyBTdHJpcCB0cmFpbGluZyBzbGFzaGVzLgoJaWYgKCAoICdvbicgIT0
gcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnY3VzdG9tSG9tZUVuYWJsZWQnICkgKSB8fCAoICcnID09ICRyZX
N0b3JlRGF0YVsnaG9tZXVybCddICkgKSB7IC8vIEhvbWUgdXJsIHdhcyBibGFuayBPUiB0aGV5IGRpZCBub
3QgY2hlY2sgdG8gY3VzdG9taXplIHRoZSBob21lIHVybCBzbyBqdXN0IHNldCBpdCB0byBzaXRldXJsLgoJ
CSRyZXN0b3JlRGF0YVsnaG9tZXVybCddID0gJHJlc3RvcmVEYXRhWydzaXRldXJsJ107Cgl9CgkkcmVzdG9
yZURhdGFbJ21heEV4ZWN1dGlvblRpbWUnXSA9IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ21heF9leGVjdX
Rpb25fdGltZScgKTsKCQoJcmV0dXJuICRyZXN0b3JlRGF0YTsKfQoKCi8vIElmIGRlcGxveW1lbnQgYW5kI
G5vIHRhYmxlcyBpbXBvcnRlZCB0aGVuIHNraXAgbWlncmF0aW9uLgpwYl9iYWNrdXBidWRkeTo6c3RhdHVz
KCAnZGV0YWlscycsICdTUUwgZmlsZXMgaW1wb3J0ZWQ6ICcgLiBjb3VudCggJHJlc3RvcmUtPl9zdGF0ZVs
nZGF0YWJhc2VTZXR0aW5ncyddWydzcWxGaWxlcyddICkgLiAnOyBEZXBsb3k/OiAnIC4gcGJfYmFja3VwYn
VkZHk6Ol9HRVQoICdkZXBsb3knICkgKTsKaWYgKCAndHJ1ZScgPT0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoI
CdkZXBsb3knICkgKSB7CglpZiAoIDAgPT0gY291bnQoICRyZXN0b3JlLT5fc3RhdGVbJ2RhdGFiYXNlU2V0
dGluZ3MnXVsnc3FsRmlsZXMnXSApICkgewoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJyw
gJ0RlcGxveSBtb2RlIGFuZCBubyBTUUwgZmlsZXMgaW1wb3J0ZWQgc28gc2tpcHBpbmcgZGF0YWJhc2UgbW
lncmF0aW9uIHN0ZXAuJyApOwoJCSRyZXN0b3JlLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnbWlnc
mF0ZURhdGFiYXNlJ10gPSBmYWxzZTsKCQkKCQlmaW5hbEFjdGlvbnMoICRyZXN0b3JlICk7CgkJJG5leHRT
dGVwTnVtID0gNjsKCQllY2hvICc8IS0tIEFVVE9QUk9DRUVEIFRPIFNURVAgJyAuICRuZXh0U3RlcE51bSA
uICcgLS0+JzsKCX0gZWxzZSB7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGVwbG
95IG1vZGUgYnV0IFNRTCBmaWxlcyBpbXBvcnRlZCAoYCcgLiBjb3VudCggJHJlc3RvcmUtPl9zdGF0ZVsnZ
GF0YWJhc2VTZXR0aW5ncyddWydzcWxGaWxlcyddICkgLiAnYCB0b3RhbCkgc28gbm90IHNraXBwaW5nIGRh
dGFiYXNlIG1pZ3JhdGlvbiBzdGVwLicgKTsKCX0KfQoKCmlmICggVFJVRSAhPT0gJHJlc3RvcmUtPl9zdGF
0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydtaWdyYXRlRGF0YWJhc2UnXSApIHsKCXBiX2JhY2t1cGJ1ZGR5Oj
pzdGF0dXMoICdkZXRhaWxzJywgJ1NraXBwaW5nIG1pZ3JhdGlvbiBvZiBkYXRhYmFzZSBiYXNlZCBvbiBhZ
HZhbmNlZCBzZXR0aW5ncy4nICk7CgllY2hvICI8c2NyaXB0PmJiX2FjdGlvbiggJ2RhdGFiYXNlTWlncmF0
aW9uU2tpcHBlZCcgKTs8L3NjcmlwdD4iOwoJJG1pZ3JhdGVSZXN1bHRzID0gdHJ1ZTsKfSBlbHNlIHsKCXB
iX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1N0YXJ0aW5nIGRhdGFiYXNlIG1pZ3JhdGlvbi
Bwcm9jZWR1cmVzLicgKTsKCQoJLy8gQ29ubmVjdCBJbXBvcnRCdWRkeSB0byB0aGUgZGF0YWJhc2UuCgkkc
mVzdG9yZS0+Y29ubmVjdERhdGFiYXNlKCk7CgkKCSRvdmVycmlkZVByZWZpeCA9ICcnOwoJaWYgKCAndHJ1
ZScgPT0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICd
kZXBsb3knICkgKSB7CgkJJG92ZXJyaWRlUHJlZml4ID0gJHJlc3RvcmUtPl9zdGF0ZVsnZGF0YWJhc2VTZX
R0aW5ncyddWyd0ZW1wUHJlZml4J107Cgl9CgkKCXJlcXVpcmVfb25jZSggJ2ltcG9ydGJ1ZGR5L2NsYXNzZ
XMvX21pZ3JhdGVfZGF0YWJhc2UucGhwJyApOwoJJG1pZ3JhdGUgPSBuZXcgYmFja3VwYnVkZHlfbWlncmF0
ZURCKCAnc3RhbmRhbG9uZScsICRyZXN0b3JlLT5fc3RhdGUsICRuZXR3b3JrUHJlZml4ID0gJycsICRvdmV
ycmlkZVByZWZpeCApOwoJJG1pZ3JhdGVSZXN1bHRzID0gJG1pZ3JhdGUtPm1pZ3JhdGUoKTsKCQoJCglpZi
AoICd0cnVlJyA9PSBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ2RlcGxveScgKSApIHsKCQlpZiAoIGlzX2Fyc
mF5KCAkbWlncmF0ZVJlc3VsdHMgKSApIHsgLy8gUmV0dXJuIHRvIHNhbWUgc3RlcCBmb3IgY29udGludWlu
ZyBjaHVua2luZy4KCQkJJG5leHRTdGVwTnVtID0gNTsKCQl9IGVsc2UgewoJCQkvL2Vycm9yX2xvZyggJ1N
UQVRFOiAnIC4gcHJpbnRfciggJHJlc3RvcmUtPl9zdGF0ZSwgdHJ1ZSApICk7CgkJCS8vIERvbid0IGF0dG
VtcHQgdG8gc3dhcCBvdXQgYmFja3VwYnVkZHkgc2V0dGluZ3MgZnJvbSBvcHRpb25zIHRhYmxlIGlmIG9wd
GlvbnMgdGFibGUgd2Fzbid0IHB1bGxlZC4KCQkJaWYgKCBpc3NldCggJHJlc3RvcmUtPl9zdGF0ZVsnZGF0
J11bJ3RhYmxlc19zaXplcyddICkgJiYgKCAhIGlzc2V0KCAkcmVzdG9yZS0+X3N0YXRlWydkYXQnXVsndGF
ibGVzX3NpemVzJ11bICRyZXN0b3JlLT5fc3RhdGVbJ2RhdCddWydkYl9wcmVmaXgnXSAuICdvcHRpb25zJy
BdICkgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ09wdGlvbnMgdGFib
GUgd2FzIG5vdCBiYWNrZWQgdXAuIFNraXBwaW5nIHN3YXAgb3V0IG9mIEJhY2t1cEJ1ZGR5IHNldHRpbmdz
LicgKTsKCQkJfSBlbHNlIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ09wdGl
vbnMgdGFibGUgd2FzIGJhY2tlZCB1cC4gU3dhcHBpbmcgb3V0IG9mIEJhY2t1cEJ1ZGR5IHNldHRpbmdzLi
cgKTsKCQkJCWlmICggdHJ1ZSAhPT0gJHJlc3RvcmUtPnN3YXBEYXRhYmFzZUJCU2V0dGluZ3MoKSApIHsKC
QkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3IgIzMyOTIzNzM6IFVuYWJsZSB0
byBzd2FwIG91dCBCYWNrdXBCdWRkeSBzZXR0aW5ncy4gVGhpcyBtYXkgbm90IGJlIGEgZmF0YWwgZXJyb3I
uJyApOwoJCQkJfSBlbHNlIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGaW
5pc2hlZCBzd2FwcGluZyBCYWNrdXBCdWRkeSBzZXR0aW5ncy4nICk7CgkJCQl9CgkJCX0KCQkJCgkJCS8vI
FN3YXAgb3V0IG5ldyBhbmQgb2xkIGRhdGFiYXNlIHByZWZpeGVzLgoJCQlpZiAoIHRydWUgIT09ICRyZXN0
b3JlLT5zd2FwRGF0YWJhc2VzKCkgKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCA
nRXJyb3IgIzg0Mzc4OiBVbmFibGUgdG8gc3dhcCBvdXQgdGVtcG9yYXJ5IGRhdGFiYXNlIHByZWZpeGVzLi
cgKTsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdoYWx0U2NyaXB0JywgJycgKTsgLy8gSGFsdCBKU
yBvbiBwYWdlLgoJCQkJcmV0dXJuOwoJCQl9IGVsc2UgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cygg
J2RldGFpbHMnLCAnRmluaXNoZWQgc3dhcHBpbmcgZGF0YWJhc2UgYmFzZWQgb24gdGVtcG9yYXJ5IGFuZCB
saXZlIHByZWZpeGVzLicgKTsKCQkJfQoJCQkKCQkJZmluYWxBY3Rpb25zKCAkcmVzdG9yZSApOwoJCQkkbm
V4dFN0ZXBOdW0gPSA2OwoJCX0KCQllY2hvICc8IS0tIEFVVE9QUk9DRUVEIFRPIFNURVAgJyAuICRuZXh0U
3RlcE51bSAuICcgLS0+JzsKCQkKCX0gZWxzZSB7IC8vIFN0YW5kYXJkIGltcG9ydCAobm90IGRlcGxveSkK
CQkKCQlpZiAoIFRSVUUgPT09ICRtaWdyYXRlUmVzdWx0cyApIHsgLy8gQ29tcGxldGVkIHN1Y2Nlc3NmdWx
seS4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGF0YWJhc2UgbWlncmF0aW9uIG
NvbXBsZXRlZC4nICk7CgkJCWVjaG8gIjxzY3JpcHQ+YmJfYWN0aW9uKCAnZGF0YWJhc2VNaWdyYXRpb25Td
WNjZXNzJyApOzwvc2NyaXB0PiI7CgkJfSBlbHNlaWYgKCBpc19hcnJheSggJG1pZ3JhdGVSZXN1bHRzICkg
KSB7IC8vIENodW5raW5nLgoJCQkkcmVzdG9yZS0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ21pZ3J
hdGVSZXN1bWVTdGVwcyddID0gKGFycmF5KSRtaWdyYXRlUmVzdWx0c1swXTsKCQkJJHJlc3RvcmUtPl9zdG
F0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydtaWdyYXRlUmVzdW1lUG9pbnQnXSA9ICRtaWdyYXRlUmVzdWx0c
1sxXTsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGF0YWJhc2UgbWlncmF0aW9u
IGRpZCBub3QgZnVsbHkgY29tcGxldGUgaW4gZmlyc3QgcGFzcy4gQ2h1bmtpbmcgaW4gcHJvZ3Jlc3MuIFJ
lc3VtaW5nIHdoZXJlIGxlZnQgb2ZmLicgKTsKCQkJPz4KCQkJPGZvcm0gaWQ9Im1pZ3JhdGVDaHVua0Zvcm
0iIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/YWpheD01Ij4KCQkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hb
WU9InJlc3RvcmVEYXRhIiB2YWx1ZT0iPD9waHAgZWNobyBiYXNlNjRfZW5jb2RlKCB1cmxlbmNvZGUoIGpz
b25fZW5jb2RlKCAkcmVzdG9yZS0+X3N0YXRlICkgKSApOyA/PiI+CgkJCQk8aW5wdXQgdHlwZT0ic3VibWl
0IiBuYW1lPSJzdWJtaXRGb3JtIiBjbGFzcz0iYnV0dG9uIGJ1dHRvbi1wcmltYXJ5IiB2YWx1ZT0iTmV4dC
BTdGVwIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgoJCQk8L2Zvcm0+CgkJCTxzY3JpcHQ+CgkJCQlqUXVlc
nkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewoJCQkJCWpRdWVyeSggJyNtaWdyYXRlQ2h1bmtGb3Jt
JyApLnN1Ym1pdCgpOwoJCQkJfSk7CgkJCTwvc2NyaXB0PgoJCQk8P3BocAoJCX0gZWxzZSB7IC8vIEZhaWx
lZC4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGF0YWJhc2UgbWlncmF0aW9uIG
ZhaWxlZC4gUmVzdWx0OiBgJyAuICRtaWdyYXRlUmVzdWx0cyAuICdgLicgKTsKCQkJZWNobyAiPHNjcmlwd
D5iYl9hY3Rpb24oICdkYXRhYmFzZU1pZ3JhdGlvbkZhaWxlZCcgKTs8L3NjcmlwdD4iOwoJCX0KCQkKCX0K
fQoKCmlmICggJ3RydWUnID09IHBiX2JhY2t1cGJ1ZGR5OjpfR0VUKCAnZGVwbG95JyApICkgeyAvLyBEZXB
sb3ltZW50CgkKCS8vIFdyaXRlIGRlZmF1bHQgc3RhdGUgb3ZlcnJpZGVzLgoJZ2xvYmFsICRpbXBvcnRidW
RkeV9maWxlOwoJJGltcG9ydEZpbGVTZXJpYWwgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRfc2VyaWFsX2Zyb
21fZmlsZSggJGltcG9ydGJ1ZGR5X2ZpbGUgKTsKCSRzdGF0ZV9maWxlID0gQUJTUEFUSCAuICdpbXBvcnRi
dWRkeS0nIC4gJGltcG9ydEZpbGVTZXJpYWwgLiAnLXN0YXRlLnBocCc7CglwYl9iYWNrdXBidWRkeTo6c3R
hdHVzKCAnZGV0YWlscycsICdXcml0aW5nIHRvIHN0YXRlIGZpbGUgYCcgLiAkc3RhdGVfZmlsZSAuICdgLi
cgKTsKCWlmICggZmFsc2UgPT09ICggJGZpbGVfaGFuZGxlID0gQGZvcGVuKCAkc3RhdGVfZmlsZSwgJ3cnI
CkgKSApIHsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3IgIzMyODkzNzogVGVt
cCBzdGF0ZSBmaWxlIGlzIG5vdCBjcmVhdGFibGUvd3JpdGFibGUuIENoZWNrIHlvdXIgcGVybWlzc2lvbnM
uICgnIC4gJHN0YXRlX2ZpbGUgLiAnKScgKTsKCQlyZXR1cm4gZmFsc2U7Cgl9CglpZiAoIGZhbHNlID09PS
Bmd3JpdGUoICRmaWxlX2hhbmRsZSwgIjw/cGhwIGRpZSgnQWNjZXNzIERlbmllZC4nKTsgLy8gPCEtLSA/P
lxuIiAuIGJhc2U2NF9lbmNvZGUoIGpzb25fZW5jb2RlKCAkcmVzdG9yZS0+X3N0YXRlICkgKSApICkgewoJ
CXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjMjM4OTM3MzogVW5hYmxlIHRvIHd
yaXRlIHRvIHN0YXRlIGZpbGUuJyApOwoJfSBlbHNlIHsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZG
V0YWlscycsICdXcm90ZSB0byBzdGF0ZSBmaWxlLicgKTsKCX0KCWZjbG9zZSggJGZpbGVfaGFuZGxlICk7C
gkKCWlmICggNiA9PSAkbmV4dFN0ZXBOdW0gKSB7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3Nh
Z2UnLCAnTW92aW5nIHRvIGNsZWFudXAgc3RlcCBuZXh0Li4uJyApOwoJfSBlbHNlIHsKCQlwYl9iYWNrdXB
idWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdDaHVua2luZyBkYXRhYmFzZSBtaWdyYXRpb24gc28gYWJvdX
QgdG8gcnVuIHN0ZXAgYCcgLiAkbmV4dFN0ZXBOdW0gLiAnYC4nICk7Cgl9Cgk/PgoJPGZvcm0gbWV0aG9kP
SJwb3N0IiBhY3Rpb249Ij9hamF4PTw/cGhwIGVjaG8gJG5leHRTdGVwTnVtOyA/PiZ2PTw/cGhwIGVjaG8g
cGJfYmFja3VwYnVkZHk6Ol9HRVQoICd2JyApOyA/PiZkZXBsb3k9dHJ1ZSZkaXJlY3Rpb249PD9waHAgZWN
obyBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ2RpcmVjdGlvbicgKTsgPz4mZGlzcGxheV9tb2RlPWVtYmVkIi
BpZD0iZGVwbG95LWF1dG9Qcm9jZWVkIj4KCQk8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJyZXN0b3JlR
GF0YSIgdmFsdWU9Ijw/cGhwIGVjaG8gYmFzZTY0X2VuY29kZSggdXJsZW5jb2RlKCBqc29uX2VuY29kZSgg
JHJlc3RvcmUtPl9zdGF0ZSApICkgKTsgPz4iPgoJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9Im15LXN
1Ym1pdCIgdmFsdWU9Ik5leHQgU3RlcCIgc3R5bGU9InZpc2liaWxpdHk6IGhpZGRlbjsiPgoJPC9mb3JtPg
oJPHNjcmlwdD5zZXRUaW1lb3V0KCBmdW5jdGlvbigpeyBqUXVlcnkoICcjZGVwbG95LWF1dG9Qcm9jZWVkJ
yApLnN1Ym1pdCgpOyB9LCAzMDAwICk7PC9zY3JpcHQ+Cgk8P3BocAoJcmV0dXJuOwoJCn0gZWxzZSB7IC8v
IFN0YW5kYXJkIGltcG9ydAoJCgkvLyBTdWNjZXNzIChvciBtaWdyYXRlIHdhcyBza2lwcGVkKS4KCWlmICg
gdHJ1ZSA9PT0gJG1pZ3JhdGVSZXN1bHRzICkgewoJCQoJCWZpbmFsQWN0aW9ucyggJHJlc3RvcmUgKTsKCQ
kKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGaW5pc2hpbmcgc3RlcCA1LicgKTsKC
QllY2hvICI8c2NyaXB0PgoJCXNldFRpbWVvdXQoIGZ1bmN0aW9uKCl7CgkJCXBhZ2VUaXRsZSggJ1N0ZXAg
NjogVmVyaWZ5IFNpdGUgJiBGaW5pc2gnICk7CgkJCWJiX3Nob3dTdGVwKCAnY2xlYW51cFNldHRpbmdzJyw
gIiAuIGpzb25fZW5jb2RlKCAkcmVzdG9yZS0+X3N0YXRlICkgLiAiICk7CgkJfSwgMjAwMCApOwoJCTwvc2
NyaXB0PiI7CgkJCgl9Cgp9CgoKcGJfYmFja3VwYnVkZHk6OmxvYWRfdmlldyggJ19pZnJhbWVfZm9vdGVyJ
yk7Cgo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/5.php,importbuddy/c
ontrollers/ajax/5.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/6.php,importbuddy
/controllers/ajax/6.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CkF1dGg6OnJlcXVpcmVfYXV0aGVudG
ljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCnBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3ZpZXcoI
CdfaWZyYW1lX2hlYWRlcicpOwpwYl9iYWNrdXBidWRkeTo6c2V0X2dyZWVkeV9zY3JpcHRfbGltaXRzKCk7
CmVjaG8gIjxzY3JpcHQ+cGFnZVRpdGxlKCAnU3RlcCA2OiBDbGVhbnVwICYgQ29tcGxldGlvbicgKTs8L3N
jcmlwdD4iOwplY2hvICI8c2NyaXB0PmJiX3Nob3dTdGVwKCAnY2xlYW51cFNldHRpbmdzJyApOzwvc2NyaX
B0PiI7CnBiX2JhY2t1cGJ1ZGR5OjpmbHVzaCgpOwoKCmlmICggJ3RydWUnICE9IHBiX2JhY2t1cGJ1ZGR5O
jpfR0VUKCAnZGVwbG95JyApICkgeyAvLyBkZXBsb3ltZW50IG1vZGUgcHJlLWxvYWRzIHN0YXRlIGRhdGEg
aW4gYSBmaWxlIGluc3RlYWQgb2YgcGFzc2luZyB2aWEgcG9zdC4KCS8vIFBhcnNlIHN1Ym1pdHRlZCByZXN
0b3JlRGF0YSByZXN0b3JlIHN0YXRlIGZyb20gcHJldmlvdXMgc3RlcC4KCSRyZXN0b3JlRGF0YSA9IHBiX2
JhY2t1cGJ1ZGR5OjpfUE9TVCggJ3Jlc3RvcmVEYXRhJyApOwoJCgkKCS8vIERlY29kZSBzdWJtaXR0ZWQgZ
GF0YSwgcmVwb3J0aW5nIGRldGFpbHMgb24gZmFpbHVyZS4KCSRkZWNvZGVGYWlsUmVhc29uID0gJyc7Cglp
ZiAoIGZhbHNlID09PSAoICRyZXN0b3JlRGF0YSA9IGJhc2U2NF9kZWNvZGUoICRyZXN0b3JlRGF0YSApICk
gKSB7IC8vIGZhbHNlIGlmIGZhaWxlZAoJCSRkZWNvZGVGYWlsUmVhc29uID0gJ0VSUk9SICM4Mzg5M2I6IF
Jlc3RvcmUgaGFsdGVkLiBVbmFibGUgdG8gYmFzZTY0X2RlY29kZSgpIHN1Ym1pdHRlZCBmb3JtIGRhdGEgY
CcgLiBodG1sZW50aXRpZXMoIHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ3Jlc3RvcmVEYXRhJyApICkgLiAn
YC4nOwoJfSBlbHNlIHsgLy8gU3VjY2Vzcy4KCQkkcmVzdG9yZURhdGEgPSB1cmxkZWNvZGUoICRyZXN0b3J
lRGF0YSApOwoJCWlmICggbnVsbCA9PT0gKCAkcmVzdG9yZURhdGEgPSBqc29uX2RlY29kZSggJHJlc3Rvcm
VEYXRhLCB0cnVlICkgKSApIHsgLy8gbnVsbCBpZiBmYWlsZWQKCQkJJG1lc3NhZ2UgPSAnRVJST1IgIzgzO
DkzYzogUmVzdG9yZSBoYWx0ZWQuIFVuYWJsZSB0byBkZWNvZGUgSlNPTiByZXN0b3JlIGJhc2U2NCBkZWNv
ZGVkIGRhdGEgYCcgLiBodG1sZW50aXRpZXMoIGJhc2U2NF9kZWNvZGUoIHBiX2JhY2t1cGJ1ZGR5OjpfUE9
TVCggJ3Jlc3RvcmVEYXRhJyApICkgKSAuICdgLiBCZWZvcmUgYmFzZTY0IGRlY29kZTogYCcgLiBodG1sZW
50aXRpZXMoIHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ3Jlc3RvcmVEYXRhJyApICkgLiAnYC4nOwoJCQlpZ
iAoIGZ1bmN0aW9uX2V4aXN0cyggJ2pzb25fbGFzdF9lcnJvcicgKSApIHsKCQkgCQkkbWVzc2FnZSAuPSAn
IGpzb25fbGFzdF9lcnJvcjogYCcgLiBqc29uX2xhc3RfZXJyb3IoKSAuICdgLic7CgkJIAl9CgkJIAkkZGV
jb2RlRmFpbFJlYXNvbiA9ICRtZXNzYWdlOwoJCX0gZWxzZSB7IC8vIFN1Y2Nlc3MuCgkJCXBiX2JhY2t1cG
J1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1N1Y2Nlc3MgZGVjb2Rpbmcgc3VibWl0dGVkIGVuY29kZWQgZ
GF0YS4nICk7CgkJfQoJfQoJLy8gUmVwb3J0IGZhaWx1cmUgYW5kIGZhdGFsbHkgaGFsdC4KCWlmICggJycg
IT09ICRkZWNvZGVGYWlsUmVhc29uICkgewoJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJG1lc3NhZ2UgKTs
KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAkbWVzc2FnZSApOwoJCWRpZSgpOwoJfQoJCg
kKfSBlbHNlIHsKCWlmICggaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snZGVmYXVsdF9zdGF0Z
V9vdmVycmlkZXMnXSApICYmICggY291bnQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snZGVmYXVsdF9z
dGF0ZV9vdmVycmlkZXMnXSApID4gMCApICkgeyAvLyBEZWZhdWx0IHN0YXRlIG92ZXJyaWRlcyBleGlzdC4
gQXBwbHkgdGhlbS4KCQkkcmVzdG9yZURhdGEgPSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2RlZmF1bH
Rfc3RhdGVfb3ZlcnJpZGVzJ107CgkJCgkJLyoKCQllY2hvICc8cHJlPic7CgkJcHJpbnRfciggJHJlc3Rvc
mVEYXRhICk7CgkJZWNobyAnPC9wcmU+JzsKCQkqLwoJfSBlbHNlIHsKCQlkaWUoICdFcnJvciAjMzI3ODMy
MTogTWlzc2luZyBleHBlY3RlZCBkZWZhdWx0IHN0YXRlIG92ZXJyaWRlLicgKTsKCX0KfQoKCi8vIEluc3R
hbnRpYXRlIHJlc3RvcmUgY2xhc3MuCnJlcXVpcmVfb25jZSggcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYX
RoKCkgLiAnL2NsYXNzZXMvcmVzdG9yZS5waHAnICk7CiRyZXN0b3JlID0gbmV3IGJhY2t1cGJ1ZGR5X3Jlc
3RvcmUoICdyZXN0b3JlJywgJHJlc3RvcmVEYXRhICk7CnVuc2V0KCAkcmVzdG9yZURhdGEgKTsgLy8gQWNj
ZXNzIHZpYSAkcmVzdG9yZS0+X3N0YXRlIHRvIG1ha2Ugc3VyZSBpdCBpcyBhbHdheXMgdXAgdG8gZGF0ZS4
KaWYgKCAndHJ1ZScgIT0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdkZXBsb3knICkgKSB7IC8vIFdlIGRvbn
QgYWNjZXB0IHN1Ym1pdHRlZCBmb3JtIG9wdGlvbnMgZHVyaW5nIGRlcGxveS4KCSRyZXN0b3JlLT5fc3Rhd
GUgPSBwYXJzZV9vcHRpb25zKCAkcmVzdG9yZS0+X3N0YXRlICk7Cn0gZWxzZSB7IC8vIERlcGxveW1lbnQg
c2hvdWxkIHNsZWVwIHRvIGhlbHAgZ2l2ZSB0aW1lIGZvciB0aGUgc291cmNlIHNpdGUgdG8gZ3JhYiB0aGU
gbGFzdCBzdGF0dXMgbG9nLgoJc2xlZXAoIDUgKTsKfQoKJGZvb3RlciA9IGZpbGVfZ2V0X2NvbnRlbnRzKC
BwYl9iYWNrdXBidWRkeTo6JF9wbHVnaW5fcGF0aCAuICcvdmlld3MvX2lmcmFtZV9mb290ZXIucGhwJyApO
woKaWYgKCAndHJ1ZScgPT0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdkZXBsb3knICkgKSB7CgllY2hvICc8
aDU+RmluaXNoZWQgZGVwbG95aW5nIHB1c2hlZCBkYXRhICYgdGVtcG9yYXJ5IGZpbGUgY2xlYW51cC48L2g
1Pic7Cn0KZWNobyAiPHNjcmlwdD5iYl9zaG93U3RlcCggJ2ZpbmlzaGVkJywgIiAuIGpzb25fZW5jb2RlKC
AkcmVzdG9yZS0+X3N0YXRlICkgLiAiICk7PC9zY3JpcHQ+IjsKCgovLyBSZXBsYWNlcyBzbGVlcGluZyA2I
HNlY29uZHMuIE1vcmUgcmVsaWFibGUgYnV0IHVzZXMgbG90cyBvZiBDUFUuCiRzdG9wX3RpbWVfbGltaXQg
PSA2OwpwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdCZWdnaW5pbmcgYCcgLiAkc3RvcF9
0aW1lX2xpbWl0IC4gJ2Agc2Vjb25kIHNsZWVwIHdoaWxlIGZpbGVzIGRlbGV0ZS4nICk7CnBiX2JhY2t1cG
J1ZGR5OjpmbHVzaCggdHJ1ZSApOwokdCA9IDA7IC8vIFRpbWUgPSAwOwp3aGlsZSggJHQgPCAkc3RvcF90a
W1lX2xpbWl0ICkgewoJJG5vdyA9IHRpbWUoKTsKCXdoaWxlICggdGltZSgpIDwgKCAkbm93ICsgMSApICkg
eyB0cnVlOyB9CgkkdCsrOwp9CgppZiAoICcnICE9PSAkcmVzdG9yZS0+X3N0YXRlWydjbGVhbnVwJ11bJ3N
ldF9ibG9nX3B1YmxpYyddICkgewoJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQ2hhbm
dpbmcgYmxvZ19wdWJsaWMgc2VhcmNoIGVuZ2luZSB2aXNpYmlsaXR5IGJhc2VkIG9uIHNlbGVjdGVkIHNld
HRpbmcgd2l0aCB2YWx1ZSBgJyAuICRyZXN0b3JlLT5fc3RhdGVbJ2NsZWFudXAnXVsnc2V0X2Jsb2dfcHVi
bGljJ10gLiAnYC4nICk7CgkkcmVzdG9yZS0+c2V0QmxvZ1B1YmxpYyggJHJlc3RvcmUtPl9zdGF0ZVsnY2x
lYW51cCddWydzZXRfYmxvZ19wdWJsaWMnXSApOwp9IGVsc2UgewoJcGJfYmFja3VwYnVkZHk6OnN0YXR1cy
ggJ2RldGFpbHMnLCAnTm8gY2hhbmdlIHRvIGJsb2dfcHVibGljIHNlYXJjaCBlbmdpbmUgdmlzaWJpbGl0e
SBiYXNlZCBvbiBzZWxlY3RlZCBzZXR0aW5nLicgKTsKfQoKaWYgKCAndHJ1ZScgPT0gcGJfYmFja3VwYnVk
ZHk6Ol9HRVQoICdkZXBsb3knICkgKSB7IC8vIERlcGxveW1lbnQKCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXM
oICdkZXRhaWxzJywgJ0RlcGxveW1lbnQgc28gc2tpcHBpbmcgY2xlYW51cCBwcm9jZWR1cmVzLicgKTsKfS
BlbHNlIHsKCWNsZWFudXAoICRyZXN0b3JlLT5fc3RhdGUsICRyZXN0b3JlICk7Cn0KZWNobyAkZm9vdGVyO
yAvLyBXZSBtdXN0IHByZWxvYWQgdGhlIGZvb3RlciBmaWxlIGNvbnRlbnRzIHNpbmNlIHdlIGFyZSBhYm91
dCB0byBkZWxldGUgaXQuCgoKaWYgKCAndHJ1ZScgPT0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdkZXBsb3k
nICkgKSB7IC8vIERlcGxveW1lbnQKCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ0RlcG
xveW1lbnQgZmluaXNoZWQgKGltcG9ydGJ1ZGR5KS4nICk7CglwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZ
GVwbG95RmluaXNoZWQnLCAnRmluaXNoZWQuJyApOwp9IGVsc2UgeyAvLyBTdGFuZGFyZCByZXN0b3JlLgoJ
cGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2JhY2t1cGJ1ZGR5X21pbGVzdG9uZScsICdmaW5pc2hfaW1wb3J
0YnVkZHknICk7Cn0KCgovLyBQYXJzZSBzdWJtaXR0ZWQgb3B0aW9ucy9zZXR0aW5ncy4KZnVuY3Rpb24gcG
Fyc2Vfb3B0aW9ucyggJHJlc3RvcmVEYXRhICkgewoJCglpZiAoICcxJyA9PSBwYl9iYWNrdXBidWRkeTo6X
1BPU1QoICdkZWxldGVfYmFja3VwJyApICkgewoJCSRyZXN0b3JlRGF0YVsnY2xlYW51cCddWydkZWxldGVB
cmNoaXZlJ10gPSB0cnVlOwoJfSBlbHNlIHsKCQkkcmVzdG9yZURhdGFbJ2NsZWFudXAnXVsnZGVsZXRlQXJ
jaGl2ZSddID0gZmFsc2U7Cgl9CgkKCWlmICggJzEnID09IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ2RlbG
V0ZV90ZW1wJyApICkgewoJCSRyZXN0b3JlRGF0YVsnY2xlYW51cCddWydkZWxldGVUZW1wRmlsZXMnXSA9I
HRydWU7Cgl9IGVsc2UgewoJCSRyZXN0b3JlRGF0YVsnY2xlYW51cCddWydkZWxldGVUZW1wRmlsZXMnXSA9
IGZhbHNlOwoJfQoJCglpZiAoICcxJyA9PSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdkZWxldGVfaW1wb3J
0YnVkZHknICkgKSB7CgkJJHJlc3RvcmVEYXRhWydjbGVhbnVwJ11bJ2RlbGV0ZUltcG9ydEJ1ZGR5J10gPS
B0cnVlOwoJfSBlbHNlIHsKCQkkcmVzdG9yZURhdGFbJ2NsZWFudXAnXVsnZGVsZXRlSW1wb3J0QnVkZHknX
SA9IGZhbHNlOwoJfQoJCglpZiAoICcxJyA9PSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdkZWxldGVfaW1w
b3J0YnVkZHlfZGlyZWN0b3J5JyApICkgewoJCSRyZXN0b3JlRGF0YVsnY2xlYW51cCddWydkZWxldGVJbXB
vcnRCdWRkeURpcmVjdG9yeSddID0gdHJ1ZTsKCX0gZWxzZSB7CgkJJHJlc3RvcmVEYXRhWydjbGVhbnVwJ1
1bJ2RlbGV0ZUltcG9ydEJ1ZGR5RGlyZWN0b3J5J10gPSBmYWxzZTsKCX0KCQoJaWYgKCAnMScgPT0gcGJfY
mFja3VwYnVkZHk6Ol9QT1NUKCAnZGVsZXRlX2ltcG9ydGJ1ZGR5bG9nJyApICkgewoJCSRyZXN0b3JlRGF0
YVsnY2xlYW51cCddWydkZWxldGVJbXBvcnRMb2cnXSA9IHRydWU7Cgl9IGVsc2UgewoJCSRyZXN0b3JlRGF
0YVsnY2xlYW51cCddWydkZWxldGVJbXBvcnRMb2cnXSA9IGZhbHNlOwoJfQoJCgkvLyBTZWFyY2ggZW5naW
5lIHZpc2liaWxpdHkgKHNldF9ibG9nX3B1YmxpYyB3cF9vcHRpb25zKS4KCWlmICggJzEnID09IHBiX2JhY
2t1cGJ1ZGR5OjpfUE9TVCggJ3NldF9ibG9nX3B1YmxpYycgKSApIHsKCQkkcmVzdG9yZURhdGFbJ2NsZWFu
dXAnXVsnc2V0X2Jsb2dfcHVibGljJ10gPSB0cnVlOwoJfSBlbHNlaWYgKCAnMCcgPT0gcGJfYmFja3VwYnV
kZHk6Ol9QT1NUKCAnc2V0X2Jsb2dfcHVibGljJyApICkgewoJCSRyZXN0b3JlRGF0YVsnY2xlYW51cCddWy
dzZXRfYmxvZ19wdWJsaWMnXSA9IGZhbHNlOwoJfQoJCglyZXR1cm4gJHJlc3RvcmVEYXRhOwp9CgoKLyoJY
2xlYW51cCgpCiAqCQogKglDbGVhbnMgdXAgYW55IHRlbXBvcmFyeSBmaWxlcyBsZWZ0IGJ5IGltcG9ydGJ1
ZGR5LgogKgkKICoJQHJldHVybgkJbnVsbAogKi8KZnVuY3Rpb24gY2xlYW51cCggJHJlc3RvcmVEYXRhLCA
kcmVzdG9yZSApIHsKCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1N0YXJ0aW5nIGltcG
9ydGJ1ZGR5IGNsZWFudXAgcHJvY2VkdXJlcy4nICk7CgkKCS8vIEFsd2F5cyBkZWxldGUgYW55IGFyY2hpd
mUgcHJpbWVyIGZpbGUgKC5pdGJ1YikgYXMgbm8gcHVycG9zZSB0byByZXRhaW4gaXQKCXJlbW92ZV9maWxl
KCBBQlNQQVRIIC4gJy5pdGJ1YicsICcuaXRidWIgKGFyY2hpdmUgcHJpbWVyIGZpbGUpJywgZmFsc2UgKTs
KCQoJaWYgKCB0cnVlICE9PSAkcmVzdG9yZURhdGFbJ2NsZWFudXAnXVsnZGVsZXRlQXJjaGl2ZSddICkgew
oJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1NraXBwZWQgZGVsZXRpbmcgYmFja3VwI
GFyY2hpdmUuJyApOwoJfSBlbHNlIHsKCQlyZW1vdmVfZmlsZSggJHJlc3RvcmVEYXRhWydhcmNoaXZlJ10s
ICdiYWNrdXAgLlpJUCBmaWxlICgnIC4gJHJlc3RvcmVEYXRhWydhcmNoaXZlJ10gLiAnKScsIHRydWUgKTs
KCX0KCQoJaWYgKCB0cnVlICE9PSAkcmVzdG9yZURhdGFbJ2NsZWFudXAnXVsnZGVsZXRlVGVtcEZpbGVzJ1
0gKSB7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnU2tpcHBlZCBkZWxldGluZyB0Z
W1wb3JhcnkgZmlsZXMuJyApOwoJfSBlbHNlIHsKCQkvLyBGdWxsIGJhY2t1cCAuc3FsIGZpbGUKCQlyZW1v
dmVfZmlsZSggQUJTUEFUSCAuICd3cC1jb250ZW50L3VwbG9hZHMvdGVtcF8nLiAkcmVzdG9yZURhdGFbJ3N
lcmlhbCddIC4nL2RiLnNxbCcsICdkYi5zcWwgKGJhY2t1cCBkYXRhYmFzZSBkdW1wKScsIGZhbHNlICk7Cg
kJcmVtb3ZlX2ZpbGUoIEFCU1BBVEggLiAnd3AtY29udGVudC91cGxvYWRzL3RlbXBfJy4gJHJlc3RvcmVEY
XRhWydzZXJpYWwnXSAuJy9kYl8xLnNxbCcsICdkYl8xLnNxbCAoYmFja3VwIGRhdGFiYXNlIGR1bXApJywg
ZmFsc2UgKTsKCQlyZW1vdmVfZmlsZSggQUJTUEFUSCAuICd3cC1jb250ZW50L3VwbG9hZHMvYmFja3VwYnV
kZHlfdGVtcC8nLiAkcmVzdG9yZURhdGFbJ3NlcmlhbCddIC4nL2RiXzEuc3FsJywgJ2RiXzEuc3FsIChiYW
NrdXAgZGF0YWJhc2UgZHVtcCknLCBmYWxzZSApOwoJCS8vIERCIG9ubHkgc3FsIGZpbGUKCQlyZW1vdmVfZ
mlsZSggQUJTUEFUSCAuICdkYi5zcWwnLCAnZGIuc3FsIChiYWNrdXAgZGF0YWJhc2UgZHVtcCknLCBmYWxz
ZSApOwoJCXJlbW92ZV9maWxlKCBBQlNQQVRIIC4gJ2RiXzEuc3FsJywgJ2RiXzEuc3FsIChiYWNrdXAgZGF
0YWJhc2UgZHVtcCknLCBmYWxzZSApOwoJCQoJCS8vIEZ1bGwgYmFja3VwIGRhdCBmaWxlCgkJcmVtb3ZlX2
ZpbGUoIEFCU1BBVEggLiAnd3AtY29udGVudC91cGxvYWRzL3RlbXBfJyAuICRyZXN0b3JlRGF0YVsnc2Vya
WFsJ10gLiAnL2JhY2t1cGJ1ZGR5X2RhdC5waHAnLCAnYmFja3VwYnVkZHlfZGF0LnBocCAoYmFja3VwIGRh
dGEgZmlsZSknLCBmYWxzZSApOwoJCXJlbW92ZV9
maWxlKCBBQlNQQVRIIC4gJ3dwLWNvbnRlbnQvdXBsb2Fkcy9iYWNrdXBidWRkeV90ZW1wLycgLiAkcmVzdG
9yZURhdGFbJ3NlcmlhbCddIC4gJy9iYWNrdXBidWRkeV9kYXQucGhwJywgJ2JhY2t1cGJ1ZGR5X2RhdC5wa
HAgKGJhY2t1cCBkYXRhIGZpbGUpJywgZmFsc2UgKTsKCQkvLyBEQiBvbmx5IGRhdCBmaWxlCgkJcmVtb3Zl
X2ZpbGUoIEFCU1BBVEggLiAnYmFja3VwYnVkZHlfZGF0LnBocCcsICdiYWNrdXBidWRkeV9kYXQucGhwICh
iYWNrdXAgZGF0YSBmaWxlKScsIGZhbHNlICk7CgkJCgkJcmVtb3ZlX2ZpbGUoIEFCU1BBVEggLiAnd3AtY2
9udGVudC91cGxvYWRzL2JhY2t1cGJ1ZGR5X3RlbXAvJyAuICRyZXN0b3JlRGF0YVsnc2VyaWFsJ10gLiAnL
ycsICdUZW1wb3JhcnkgYmFja3VwIGRpcmVjdG9yeScsIGZhbHNlICk7CgkJCgkJLy8gVGVtcCByZXN0b3Jl
IGRpci4KCQlyZW1vdmVfZmlsZSggQUJTUEFUSCAuICdpbXBvcnRidWRkeS90ZW1wXycuICRyZXN0b3JlRGF
0YVsnc2VyaWFsJ10gLicvJywgJ1RlbXBvcmFyeSByZXN0b3JlIGRpcmVjdG9yeScsIGZhbHNlICk7CgkJCg
kJLy8gUmVtb3ZlIHN0YXRlIGZpbGUgKGRlcGxveW1lbnQvZGVmYXVsdCBzZXR0aW5ncykuCgkJZ2xvYmFsI
CRpbXBvcnRidWRkeV9maWxlOwoJCSRpbXBvcnRGaWxlU2VyaWFsID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0
X3NlcmlhbF9mcm9tX2ZpbGUoICRpbXBvcnRidWRkeV9maWxlICk7CgkJJHN0YXRlX2ZpbGUgPSBBQlNQQVR
IIC4gJ2ltcG9ydGJ1ZGR5LScgLiAkaW1wb3J0RmlsZVNlcmlhbCAuICctc3RhdGUucGhwJzsKCQlyZW1vdm
VfZmlsZSggJHN0YXRlX2ZpbGUsICdEZWZhdWx0IHN0YXRlIGRhdGEgZmlsZScsIGZhbHNlICk7Cgl9CgkKC
Wdsb2JhbCAkaW1wb3J0YnVkZHlfZmlsZTsKCWlmICggdHJ1ZSAhPT0gJHJlc3RvcmVEYXRhWydjbGVhbnVw
J11bJ2RlbGV0ZUltcG9ydEJ1ZGR5J10gKSB7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHM
nLCAnU2tpcHBlZCBkZWxldGluZyAnIC4gJGltcG9ydGJ1ZGR5X2ZpbGUgLiAnICh0aGlzIHNjcmlwdCkuJy
ApOwoJfSBlbHNlIHsKCQlyZW1vdmVfZmlsZSggQUJTUEFUSCAuICRpbXBvcnRidWRkeV9maWxlLCAkaW1wb
3J0YnVkZHlfZmlsZSAuICcgKHRoaXMgc2NyaXB0KScsIHRydWUgKTsKCX0KCQoJaWYgKCB0cnVlICE9PSAk
cmVzdG9yZURhdGFbJ2NsZWFudXAnXVsnZGVsZXRlSW1wb3J0QnVkZHlEaXJlY3RvcnknXSApIHsKCQlwYl9
iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTa2lwcGVkIGRlbGV0aW5nIGltcG9ydGJ1ZGR5IG
RpcmVjdG9yeS4nICk7Cgl9IGVsc2UgewoJCXJlbW92ZV9maWxlKCBBQlNQQVRIIC4gJ2ltcG9ydGJ1ZGR5L
ycsICdJbXBvcnRCdWRkeSBEaXJlY3RvcnknLCB0cnVlICk7CgkJcmVtb3ZlX2ZpbGUoIEFCU1BBVEggLiAn
aW1wb3J0YnVkZHkvX3NldHRpbmdzX2RhdC5waHAnLCAnX3NldHRpbmdzX2RhdC5waHAgKHRlbXBvcmFyeSB
zZXR0aW5ncyBmaWxlKScsIGZhbHNlICk7Cgl9CgkKCS8vIERlbGV0ZSBsb2cgZmlsZSBsYXN0LgoJaWYgKC
B0cnVlICE9PSAkcmVzdG9yZURhdGFbJ2NsZWFudXAnXVsnZGVsZXRlSW1wb3J0TG9nJ10gKSB7CgkJcGJfY
mFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnU2tpcHBlZCBkZWxldGluZyBpbXBvcnQgbG9nIChk
ZWxldGVJbXBvcnRCdWRkeURpcmVjdG9yeSBtYXkgb3ZlcnJpZGUpLicgKTsKCX0gZWxzZSB7CgkJcmVtb3Z
lX2ZpbGUoIEFCU1BBVEggLiAnaW1wb3J0YnVkZHktJyAuIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbG
9nX3NlcmlhbCddIC4gJy50eHQnLCAnaW1wb3J0YnVkZHktJyAuIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc
1snbG9nX3NlcmlhbCddIC4gJy50eHQgbG9nIGZpbGUnLCB0cnVlICk7Cgl9Cn0KCgoKCgovLyBVc2VkIGJ5
IGNsZWFudXAoKSBhYm92ZS4KZnVuY3Rpb24gcmVtb3ZlX2ZpbGUoICRmaWxlLCAkZGVzY3JpcHRpb24sICR
lcnJvcl9vbl9taXNzaW5nID0gZmFsc2UgKSB7CglwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZS
csICdEZWxldGluZyBgJyAuICRkZXNjcmlwdGlvbiAuICdgLi4uJyApOwoKCSRtb2RlID0gYXBwbHlfZmlsd
GVycyggJ2l0YnViLWRlZmF1bHQtZmlsZS1tb2RlJywgMDc1NSApOwoJQGNobW9kKCAkZmlsZSwgJG1vZGUg
KTsgLy8gSGlnaCBwZXJtaXNzaW9ucyB0byBkZWxldGUuCgkKCWlmICggaXNfZGlyKCAkZmlsZSApICkgeyA
vLyBkaXJlY3RvcnkuCgkJcGJfYmFja3VwYnVkZHk6OiRmaWxlc3lzdGVtLT51bmxpbmtfcmVjdXJzaXZlKC
AkZmlsZSApOwoJCWlmICggZmlsZV9leGlzdHMoICRmaWxlICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdlcnJvcicsICdVbmFibGUgdG8gZGVsZXRlIGRpcmVjdG9yeTogYCcgLiAkZGVzY3JpcHRpb24g
LiAnYC4gWW91IHNob3VsZCBtYW51YWxseSBkZWxldGUgaXQuJyApOwoJCX0gZWxzZSB7CgkJCXBiX2JhY2t
1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ0RlbGV0ZWQuJywgZmFsc2UgKTsgLy8gTm8gbG9nZ2luZy
BvZiB0aGlzIGFjdGlvbiB0byBwcmV2ZW50IHJlY3JlYXRpbmcgbG9nLgoJCX0KCX0gZWxzZSB7IC8vIGZpb
GUKCQlpZiAoIGZpbGVfZXhpc3RzKCAkZmlsZSApICkgewoJCQlpZiAoIHRydWUgIT09IEB1bmxpbmsoICRm
aWxlICkgKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnVW5hYmxlIHRvIGRlbGV
0ZSBmaWxlOiBgJyAuICRkZXNjcmlwdGlvbiAuICdgLiBZb3Ugc2hvdWxkIG1hbnVhbGx5IGRlbGV0ZSBpdC
4nICk7CgkJCX0gZWxzZSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdEZWxld
GVkLicsIGZhbHNlICk7IC8vIE5vIGxvZ2dpbmcgb2YgdGhpcyBhY3Rpb24gdG8gcHJldmVudCByZWNyZWF0
aW5nIGxvZy4KCQkJfQoJCX0KCX0KfSAvLyBFbmQgcmVtb3ZlX2ZpbGUoKS4KCgpkaWUoKTsgLy8gRG9uJ3Q
gd2FudCB0byBhY2NpZGVudGx5IGdvIGJhY2sgdG8gYW55IGZpbGVzIHdoaWNoIG1heSBiZSBnb25lLgoK
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/6.php,importbuddy/c
ontrollers/ajax/6.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/cpanel_createdb.p
hp,importbuddy/controllers/ajax/cpanel_createdb.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CgpBdXRoOjpyZXF1aXJlX2F1dGhlbn
RpY2F0aW9uKCk7IC8vIERpZSBpZiBub3QgbG9nZ2VkIGluLgoKLy9wcmludF9yKCBwYl9iYWNrdXBidWRke
To6X1BPU1QoKSApOwoKJGNwYW5lbF91c2VyID0gcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnY3BhbmVsX3Vz
ZXInICk7CiRjcGFuZWxfcGFzc3dvcmQgPSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdjcGFuZWxfcGFzcyc
gKTsKJGNwYW5lbF9ob3N0ID0gcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnY3BhbmVsX3VybCcgKTsKJGNwYW
5lbF9wb3J0ID0gcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnY3BhbmVsX3BvcnQnICk7CiRjcGFuZWxfcHJvd
G9jb2wgPSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdjcGFuZWxfcHJvdG9jb2wnICk7CiRkYl9uYW1lID0g
cGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnY3BhbmVsX2RibmFtZScgKTsKJGRiX3VzZXIgPSBwYl9iYWNrdXB
idWRkeTo6X1BPU1QoICdjcGFuZWxfZGJ1c2VyJyApOwokZGJfcGFzcyA9IHBiX2JhY2t1cGJ1ZGR5OjpfUE
9TVCggJ2NwYW5lbF9kYnBhc3MnICk7CgovLyBOZWVkZWQgZm9yIEhUVFAgcmVxdWVzdHMuCiRyZXF1ZXN0Y
29yZV9maWxlID0gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2xpYi9yZXF1ZXN0Y29yZS9y
ZXF1ZXN0Y29yZS5jbGFzcy5waHAnOwpyZXF1aXJlX29uY2UoICRyZXF1ZXN0Y29yZV9maWxlICk7CgpyZXF
1aXJlX29uY2UoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9saWIvY3BhbmVsL2NwYW5lbC
5waHAnICk7CiRjcmVhdGVfZGJfcmVzdWx0ID0gcGJfYmFja3VwYnVkZHlfY3BhbmVsOjpjcmVhdGVfZGIoI
CRjcGFuZWxfdXNlciwgJGNwYW5lbF9wYXNzd29yZCwgJGNwYW5lbF9ob3N0LCAkZGJfbmFtZSwgJGRiX3Vz
ZXIsICRkYl9wYXNzLCAkY3BhbmVsX3BvcnQsICRjcGFuZWxfcHJvdG9jb2wgKTsKCmlmICggJGNyZWF0ZV9
kYl9yZXN1bHQgPT09IHRydWUgKSB7CgllY2hvICdTdWNjZXNzISBDcmVhdGVkIGRhdGFiYXNlLCB1c2VyLC
BhbmQgYXNzaWduZWQgdXNlciB0byBkYXRhYmFzZS4nOwp9IGVsc2UgewoJZWNobyAiVW5hYmxlIHRvIGF1d
G9tYXRpY2FsbHkgY3JlYXRlIGRhdGFiYXNlIHdpdGggdGhlIHByb3ZpZGVkIHNldHRpbmdzLiBDaGVjayBz
ZXR0aW5ncyBvciBtYW51YWxseSBjcmVhdGUgdGhlIGRhdGFiYXNlIGZyb20geW91ciBob3N0J3MgY29udHJ
vbCBwYW5lbC4gU2VlIHR1dG9yaWFsIGF0OiAiOwoJZWNobyAiaHR0cDovL2l0aGVtZXMuY29tL3R1dG9yaW
FsLWNyZWF0ZS1kYXRhYmFzZS1pbi1jcGFuZWwvXG5cbiI7CgllY2hvICJFcnJvciBkZXRhaWxzOlxuIiAuI
GltcGxvZGUoICJcbiIsICRjcmVhdGVfZGJfcmVzdWx0KTsKfQoKZGllKCk7Cg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/cpanel_createdb.php
,importbuddy/controllers/ajax/cpanel_createdb.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/file_hash.php,imp
ortbuddy/controllers/ajax/file_hash.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CkF1dGg6OnJlcXVpcmVfYXV0aGVudG
ljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCgokZmlsZSA9IEFCU1BBVEggLiBwYl9iYWNrd
XBidWRkeTo6X1BPU1QoICdmaWxlJyApOwoKaWYgKCAnJyA9PSAkZmlsZSApIHsKCWRpZSggJ05vIGZpbGUg
cGFzc2VkLicgKTsKfQppZiAoICEgZmlsZV9leGlzdHMoICRmaWxlICkgKSB7CglkaWUoICdGaWxlIG5vdCB
mb3VuZC4nICk7Cn0KCiRmaWxlSGFzaCA9IEBtZDVfZmlsZSggJGZpbGUgKTsKCmlmICggZmFsc2UgPT09IC
RmaWxlSGFzaCApIHsKCWRpZSggJ1VuYWJsZSB0byBjYWxjdWxhdGUgaGFzaC4gVmVyaWZ5IGZpbGUgcGVyb
Wlzc2lvbnMuJyApOwp9IGVsc2UgewoJZGllKCBqc29uX2VuY29kZSggYXJyYXkoICdoYXNoJyA9PiAkZmls
ZUhhc2ggKSApICk7Cn0=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/file_hash.php,impor
tbuddy/controllers/ajax/file_hash.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/getDeployLog.php,
importbuddy/controllers/ajax/getDeployLog.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CgppZiAoICd0cnVlJyAhPSBwYl9iYW
NrdXBidWRkeTo6X0dFVCggJ2RlcGxveScgKSApIHsKCWRpZSggJ0FjY2VzcyBkZW5pZWQuJyApOwp9CgovL
yBPbmx5IGFsbG93IGFjY2VzcyB0byB0aGlzIGZpbGUgaWYgaXQgaGFzIGEgc2VyaWFsIGhpZGluZyBpdC4g
VXNlZCBieSBkZXBsb3ltZW50LgpnbG9iYWwgJGltcG9ydGJ1ZGR5X2ZpbGU7CiRpbXBvcnRGaWxlU2VyaWF
sID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0X3NlcmlhbF9mcm9tX2ZpbGUoICRpbXBvcnRidWRkeV9maWxlIC
k7CmlmICggJycgPT0gJGltcG9ydEZpbGVTZXJpYWwgKSB7CglkaWUoICdBY2Nlc3MgZGVuaWVkLicgKTsKf
QoKcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnKioqIEVuZCBJbXBvcnRCdWRkeSBMb2cg
U2VjdGlvbiAoRGVwbG95bWVudCknICk7CgovLyBMb2cgdG8gbWFrZSBhIGNvcHkgb2YgcmV0cmlldmVkIGR
lcGxveSBpbmZvIGludG8uCiRsb2dfZGlyZWN0b3J5ID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0TG9nRGlyZW
N0b3J5KCk7CiRiYWNrdXBfbG9nX2ZpbGUgPSAkbG9nX2RpcmVjdG9yeSAuICdzdGF0dXMtZGVwbG95Y29we
S0nIC4gJGltcG9ydEZpbGVTZXJpYWwgLiAnLnR4dCc7Cgokc3RhdHVzX2xpbmVzID0gcGJfYmFja3VwYnVk
ZHk6OmdldF9zdGF0dXMoICcnLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgJGJhY2t1cF9sb2dfZmlsZSApOyAvLyB
DbGVhciBmaWxlLCBkb250IHVubGluayBmaWxlLCBzdXByZXNzIHN0YXR1cyByZXRyaWV2YWwgbXNnLCBiYW
NrdXAgaW50byAkbG9nX2ZpbGUKZWNobyBpbXBsb2RlKCAnJywgJHN0YXR1c19saW5lcyApOwo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/getDeployLog.php,im
portbuddy/controllers/ajax/getDeployLog.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/hash_forgotpass.p
hp,importbuddy/controllers/ajax/hash_forgotpass.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CgppZiAoICcnID09IHBiX2JhY2t1cG
J1ZGR5OjpfUE9TVCggJ25ld3Bhc3N3b3JkJyApICkgewoJZGllKCAnRXJyb3IgIzg0OTM0ODk6IE1pc3Npb
mcgcGFzc3dvcmQuJyApOwp9CgpkaWUoIG1kNSggcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnbmV3cGFzc3dv
cmQnICkgKSApOw==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/hash_forgotpass.php
,importbuddy/controllers/ajax/hash_forgotpass.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/index.php,importb
uddy/controllers/ajax/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/index.php,importbud
dy/controllers/ajax/index.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/ajax/mysql_test.php,im
portbuddy/controllers/ajax/mysql_test.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CkF1dGg6OnJlcXVpcmVfYXV0aGVudG
ljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCgovLyBJbmNsdWRlIHRoZSBEQiBUZXN0cyBjb
GFzcyBhbmQgaW5pdCBpdC4KcmVxdWlyZV9vbmNlKCBBQlNQQVRIIC4gJ2ltcG9ydGJ1ZGR5L2NsYXNzZXMv
dGVzdC1kYi5waHAnICk7CiRpbXBvcnRidWRkeV90ZXN0X2RiID0gbmV3IGltcG9ydGJ1ZGR5X3Rlc3RfZGI
oKTsK
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/ajax/mysql_test.php,impo
rtbuddy/controllers/ajax/mysql_test.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/pages/create_admin.php
,importbuddy/controllers/pages/create_admin.php
PD9waHAKZGllKCk7CgppZiAoICEgZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApIHx8ICggdHJ1ZSAhPT0
gUEJfSU1QT1JUQlVERFkgKSApIHsKCWRpZSggJzxodG1sPjwvaHRtbD4nICk7Cn0KCkF1dGg6OnJlcXVpcm
VfYXV0aGVudGljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCgo/Pgo8ZGl2IGlkPSJwYl9jc
mVhdGVhZG1pbl9tb2RhbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IGhlaWdodDogOTAlOyI+CgkJPGRpdiBj
bGFzcz0ibW9kYWwiPgoJCQk8ZGl2IGNsYXNzPSJtb2RhbF9oZWFkZXIiPgoJCQkJPGEgY2xhc3M9Im1vZGF
sX2Nsb3NlIj4mdGltZXM7PC9hPgoJCQkJPGgyPlNlcnZlciBJbmZvcm1hdGlvbjwvaDI+CgkJCTwvZGl2Pg
oJCQk8ZGl2IGNsYXNzPSJtb2RhbF9jb250ZW50Ij4KCQkJCQoJCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phd
mFzY3JpcHQiPgoJCQkJCWpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJCQkJCWpRdWVy
eSggJyNjcmVhdGVhZG1pbl9mb3JtJyApLnN1Ym1pdChmdW5jdGlvbigpewoJCQkJCQkJCgkJCQkJCQlqUXV
lcnkoICcuY3JlYXRlYWRtaW5fbG9hZGluZycgKS5zaG93KCk7CgkJCQkJCQlqUXVlcnkucG9zdCgnaW1wb3
J0YnVkZHkucGhwP2FqYXg9Y3JlYXRlX2FkbWluJywKCQkJCQkJCQlqUXVlcnkoICcjY3JlYXRlYWRtaW5fZ
m9ybScgKS5zZXJpYWxpemUoKSwgZnVuY3Rpb24oZGF0YSkgewoJCQkJCQkJCQkKCQkJCQkJCQkJZGF0YSA9
IGpRdWVyeS50cmltKCBkYXRhICk7CgkJCQkJCQkJCWpRdWVyeSggJy5jcmVhdGVhZG1pbl9sb2FkaW5nJyA
pLmhpZGUoKTsKCQkJCQkJCQkJCgkJCQkJCQkJCWlmICggZGF0YSA9PSAnMScgKSB7CgkJCQkJCQkJCQlhbG
VydCggJ1N1Y2Nlc3MnICk7CgkJCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCQlhbGVydCggJ0Vycm9yOiAnI
CsgZGF0YSApOwoJCQkJCQkJCQl9CgkJCQkJCQkJCQoJCQkJCQkJCX0KCQkJCQkJCSk7CgkJCQkJCQkKCQkJ
CQkJCXJldHVybiBmYWxzZTsKCQkJCQkJCQoJCQkJCQl9KTsKCQkJCQl9KTsKCQkJCTwvc2NyaXB0PgoJCQk
JCgkJCQk8Zm9ybSBpZD0iY3JlYXRlYWRtaW5fZm9ybSI+CgkJCQkJVXNlcm5hbWU6IDxpbnB1dCB0eXBlPS
J0ZXh0IiBuYW1lPSJ1c2VybmFtZSI+CgkJCQkJRW1haWw6IDxpbnB1dCB0eXBlPSJlbWFpbCIgbmFtZT0iZ
W1haWwiPgoJCQkJCVBhc3N3b3JkOiA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkIj4K
CQkJCQlDb25maXJtIFBhc3N3b3JkOiA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9InBhc3N3b3JkX2N
vbmZpcm0iPgoJCQkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkNyZWF0ZS
BBZG1pbiBVc2VyIiBjbGFzcz0iYnV0dG9uIj4KCQkJCQk8c3BhbiBjbGFzcz0iY3JlYXRlYWRtaW5fbG9hZ
GluZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG1hcmdpbi1sZWZ0OiAxMHB4OyI+PGltZyBzcmM9Ijw/cGhw
IGVjaG8gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKTsgPz4vaW1hZ2VzL2xvYWRpbmcuZ2lmIiBhbHQ
9IicgLiBfXygnTG9hZGluZy4uLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJyIgdGl0bGU9IicgLi
BfXygnTG9hZGluZy4uLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJyIgd2lkdGg9IjE2IiBoZWlna
HQ9IjE2IiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0zcHg7Ij48L3NwYW4+CgkJCQk8L2Zvcm0+CgkJCQkK
CQkJCQoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/pages/create_admin.php,i
mportbuddy/controllers/pages/create_admin.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/pages/dbreplace.php,im
portbuddy/controllers/pages/dbreplace.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CkF1dGg6OnJlcXVpcmVfYXV0aGVudG
ljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCgoKJGRhdGEgPSBhcnJheSgpOwpwYl9iYWNrd
XBidWRkeTo6bG9hZF92aWV3KCAnZGJyZXBsYWNlJywgJGRhdGEgKTsKPz48c2NyaXB0PmpRdWVyeSggJyNw
YWdlVGl0bGUnICkuaHRtbCggJ0RhdGFiYXNlIFRleHQgUmVwbGFjZScgKTs8L3NjcmlwdD4=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/pages/dbreplace.php,impo
rtbuddy/controllers/pages/dbreplace.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/pages/default.php,impo
rtbuddy/controllers/pages/default.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CgoKLyoqKioqKiBCRUdJTiBBVVRIRU
5USUNBVElPTiAqKioqKi8KLy9yZXF1aXJlX29uY2UoIEFCU1BBVEggLiAnaW1wb3J0YnVkZHkvY2xhc3Nlc
y9hdXRoLnBocCcgKTsKQXV0aDo6Y2hlY2soKTsKaWYgKCAoIHRydWUgPT09IEF1dGg6OmlzX2F1dGhlbnRp
Y2F0ZWQoKSApICYmICggJ2xvZ2luJyA9PSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdhY3Rpb24nICkgKSA
pIHsgLy8gT24gc3VjY2Vzc2Z1bCBsb2dpbiB0byBzdGVwIDAsIHJlZGlyZWN0IHRvIHN0ZXAgMS4KCWhlYW
RlciggJ0xvY2F0aW9uOiAnIC4gcGJfYmFja3VwYnVkZHk6OnBhZ2VfdXJsKCkgKTsKfQovKioqKioqIEVOR
CBBVVRIRU5USUNBVElPTiAqKioqKi8KCgokbW9kZSA9ICdodG1sJzsKCgovLyBSZWdpc3RlciBQSFAgc2h1
dGRvd24gZnVuY3Rpb24gdG8gaGVscCBjYXRjaCBhbmQgbG9nIGZhdGFsIFBIUCBlcnJvcnMgZHVyaW5nIGJ
hY2t1cC4KcmVnaXN0ZXJfc2h1dGRvd25fZnVuY3Rpb24oICdzaHV0ZG93bl9mdW5jdGlvbicgKTsKLy9lcn
Jvcl9yZXBvcnRpbmcoIEVfRVJST1IgfCBFX1dBUk5JTkcgfCBFX1BBUlNFIHwgRV9OT1RJQ0UgKTsgLy8gS
ElHSAoKLyoJc2h1dGRvd25fZnVuY3Rpb24oKQogKgkKICoJVXNlZCBmb3IgY2F0Y2hpbmcgZmF0YWwgUEhQ
IGVycm9ycyBkdXJpbmcgYmFja3VwIHRvIHdyaXRlIHRvIGxvZyBmb3IgZGVidWdnaW5nLgogKgkKICoJQHJ
ldHVybgkJbnVsbAogKi8KZnVuY3Rpb24gc2h1dGRvd25fZnVuY3Rpb24oKSB7CgkKCQoJLy8gR2V0IGVycm
9yIG1lc3NhZ2UuCgkvLyBFcnJvciB0eXBlczogaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2Vycm9yZnVuY
y5jb25zdGFudHMucGhwCgkkZSA9IGVycm9yX2dldF9sYXN0KCk7CglpZiAoICRlID09PSBOVUxMICkgeyAv
LyBObyBlcnJvciBvZiBhbnkga2luZC4KCQlyZXR1cm47Cgl9IGVsc2UgeyAvLyBTb21lIHR5cGUgb2YgZXJ
yb3IuCgkJaWYgKCAhaXNfYXJyYXkoICRlICkgfHwgKCAkZVsndHlwZSddICE9IEVfRVJST1IgKSAmJiAoIC
RlWyd0eXBlJ10gIT0gRV9VU0VSX0VSUk9SICkgKSB7IC8vIFJldHVybiBpZiBub3QgYSBmYXRhbCBlcnJvc
i4KCQkJLy9lY2hvICc8IS0tICcgLiBwcmludF9yKCAkZSwgdHJ1ZSApIC4gJyAtLT4nIC4gIlxuIjsKCQkJ
cmV0dXJuOwoJCX0KCX0KCQoJCgkvLyBDYWxjdWxhdGUgbG9nIGRpcmVjdG9yeS4KCSRsb2dfZGlyZWN0b3J
5ID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0TG9nRGlyZWN0b3J5KCk7IC8vIEFsc28gaGFuZGxlIHdoZW4gaW
4gaW1wb3J0YnVkZHkuCgkkbWFpbl9maWxlID0gJGxvZ19kaXJlY3RvcnkgLiAnbG9nLScgLiBwYl9iYWNrd
XBidWRkeTo6JG9wdGlvbnNbJ2xvZ19zZXJpYWwnXSAuICcudHh0JzsKCQoJCgkvLyBEZXRlcm1pbmUgaWYg
d3JpdGluZyB0byBhIHNlcmlhbCBsb2cuCglpZiAoIHBiX2JhY2t1cGJ1ZGR5OjokX3N0YXR1c19zZXJpYWw
gIT0gJycgKSB7CgkJJHNlcmlhbCA9IHBiX2JhY2t1cGJ1ZGR5OjokX3N0YXR1c19zZXJpYWw7CgkJJHNlcm
lhbF9maWxlID0gJGxvZ19kaXJlY3RvcnkgLiAnc3RhdHVzLScgLiAkc2VyaWFsIC4gJ18nIC4gcGJfYmFja
3VwYnVkZHk6OiRvcHRpb25zWydsb2dfc2VyaWFsJ10gLiAnLnR4dCc7CgkJJHdyaXRlX3NlcmlhbCA9IHRy
dWU7Cgl9IGVsc2UgewoJCSR3cml0ZV9zZXJpYWwgPSBmYWxzZTsKCX0KCQoJCgkvLyBGb3JtYXQgZXJyb3I
gbWVzc2FnZS4KCSRlX3N0cmluZyA9ICctLS0tLSBGQVRBTCBFUlJPUiAtLS0tLSBBIGZhdGFsIFBIUCBlcn
JvciB3YXMgZW5jb3VudGVyZWQ6ICc7Cglmb3JlYWNoKCAoYXJyYXkpJGUgYXMgJGVfbGluZV90aXRsZSA9P
iAkZV9saW5lICkgewoJCSRlX3N0cmluZyAuPSAkZV9saW5lX3RpdGxlIC4gJyA9PiAnIC4gJGVfbGluZSAu
ICI7ICI7Cgl9CgkkZV9zdHJpbmcgPSBydHJpbSggJGVfc3RyaW5nLCAnOyAnICkgLiAnLic7CgkKCS8vIFd
yaXRlIHRvIGxvZy4KCUBmaWxlX3B1dF9jb250ZW50cyggJG1haW5fZmlsZSwgJGVfc3RyaW5nLCBGSUxFX0
FQUEVORCApOwoJCgkvLyBJTVBPUlRCVUREWQoJJHN0YXR1cyA9IHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0L
T5kYXRlKCB0aW1lKCkgKSAuICJcdCIgLgoJCQkJc3ByaW50ZiggIiUwMS4yZiIsIHJvdW5kKCBtaWNyb3Rp
bWUoIHRydWUgKSAtIHBiX2JhY2t1cGJ1ZGR5Ojokc3RhcnRfdGltZSwgMiApICkgLiAiXHQiIC4KCQkJCXN
wcmludGYoICIlMDEuMmYiLCByb3VuZCggbWVtb3J5X2dldF9wZWFrX3VzYWdlKCkgLyAxMDQ4NTc2LCAyIC
kgKSAuICJcdCIgLgoJCQkJJ2Vycm9yJyAuICJcdFx0IiAuCgkJCQlzdHJfcmVwbGFjZSggY2hyKDkpLCAnI
CAgJywgJGVfc3RyaW5nICkKCQkJOwoJJHN0YXR1cyA9IHN0cl9yZXBsYWNlKCAnXFwnLCAnLycsICRzdGF0
dXMgKTsKCWVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5wYl9zdGF0dXNfYXBwZW5kKCI
nIC4gc3RyX3JlcGxhY2UoICciJywgJyZxdW90OycsICRzdGF0dXMgKSAuICciKTs8L3NjcmlwdD4nOwoJCn
0gLy8gRW5kIHNodXRkb3duX2Z1bmN0aW9uLgoKCi8vIEhhbmRsZSBBSkFYLgokYWpheCA9ICcnOwppZiAoI
HBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ2FqYXgnICkgIT0gJycgKSB7CgkkYWpheCA9IHBiX2JhY2t1cGJ1
ZGR5OjpfUE9TVCggJ2FqYXgnICk7Cn0gZWxzZWlmICggcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdhamF4JyA
pICE9ICcnICkgewoJJGFqYXggPSBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ2FqYXgnICk7Cn0KaWYgKCAkYW
pheCAhPSAnJyApIHsgLy8gQUpBWAoJaWYgKCAkYWpheCAhPSAnaGFzaF9mb3Jnb3RwYXNzJyApIHsKCQlBd
XRoOjpyZXF1aXJlX2F1dGhlbnRpY2F0aW9uKCk7IC8vIERpZSBpZiBub3QgbG9nZ2VkIGluLgoJfQoJCgkk
cGFnZSA9IEFCU1BBVEggLiAnaW1wb3J0YnVkZHkvY29udHJvbGxlcnMvYWpheC8nIC4gJGFqYXggLiAnLnB
ocCc7CglpZiAoIGZpbGVfZXhpc3RzKCAkcGFnZSApICkgewoJCXJlcXVpcmVfb25jZSggJHBhZ2UgKTsKCX
0gZWxzZSB7CgkJZWNobyAne0Vycm9yOiBJbnZhbGlkIEFKQVggYWN0aW9uIGAnIC4gaHRtbGVudGl0aWVzK
CAkYWpheCApIC4gJ2AgRmlsZSBub3QgZm91bmQ6IGAnIC4gJHBhZ2UgLiAnYC59JzsKCX0KCXJldHVybjsK
CQp9CgoKLy8gRGV0ZXJtaW5lIHBhZ2UgdG8gbG9hZC4KaWYgKCBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3B
hZ2UnICkgIT0gJycgKSB7IC8vIE5hbWVkIHBhZ2UuCgkKCUF1dGg6OnJlcXVpcmVfYXV0aGVudGljYXRpb2
4oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCgkKCSRwYWdlU2x1ZyA9IHN0cl9yZXBsYWNlKCBhcnJhe
SggJ1xcJywgJy8nICksICcnLCBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3BhZ2UnICkgKTsKCWlmICggISBj
dHlwZV9hbG51bSggc3RyX3JlcGxhY2UoIGFycmF5KCAnLScsICdfJyApLCAnJywgJHBhZ2VTbHVnICkgKSA
pIHsgLy8gRGlzYWxsb3cgbm9uLWFscGhhbnVtZXJpYyBleGNlcHQgZGFzaCwgdW5kZXJzY29yZS4KCQlkaW
UoICdFcnJvciAjODU3NDc4MzMuIFBhZ2UgY29udGFpbnMgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzLiBPbmx5I
GFscGhhbnVtZXJpYywgZGFzaGVzLCBhbmQgdW5kZXJzY29yZXMgcGVybWl0dGVkLicgKTsKCX0gCgkKCSRw
YWdlRmlsZSA9IEFCU1BBVEggLiAnaW1wb3J0YnVkZHkvY29udHJvbGxlcnMvcGFnZXMvJyAuICRwYWdlU2x
1ZyAuICcucGhwJzsKCWlmICggZmlsZV9leGlzdHMoICRwYWdlRmlsZSApICkgewoJCWVjaG8gJzwhLS0gU3
RhcnRpbmcgcGFnZSAnIC4gJHBhZ2VTbHVnIC4gJy4gLS0+JzsKCQlyZXF1aXJlX29uY2UoICRwYWdlRmlsZ
SApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0ZpbmlzaGVkIHBhZ2UgJyAuICRw
YWdlU2x1ZyAuICcuJyApOwoJfSBlbHNlIHsKCQllY2hvICd7RXJyb3I6IEludmFsaWQgcGFnZSBgJyAuIGh
0bWxlbnRpdGllcyggcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdzdGVwJyApICkgLiAnLnBocCcgLiAnYC59Jz
sKCX0KCXJldHVybjsKCQp9IGVsc2VpZiAoIHBiX2JhY2t1cGJ1ZGR5OjpfR0VUKCAnc3RlcCcgKSAhPSAnJ
yApIHsgLy8gTnVtZXJpY2FsIHN0ZXAuCgkKCWlmICggdHJ1ZSAhPT0gQXV0aDo6aXNfYXV0aGVudGljYXRl
ZCgpICkgeyAvLyBJZiBub3QgbG9nZ2VkIGluIHRoZW4gcHJvdmlkZSBsb2dpbiBwYWdlLgoJCSRzdGVwID0
gJ2xvZ2luJzsKCX0gZWxzZSB7CgkJJHN0ZXAgPSBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3N0ZXAnICk7Cg
kJQXV0aDo6cmVxdWlyZV9hdXRoZW50aWNhdGlvbigpOyAvLyBEaWUgaWYgbm90IGxvZ2dlZCBpbi4KCX0KC
Qp9IGVsc2UgeyAvLyBVbmtub3duLiBEZWZhdWx0IHRvIGxvZ2luLgoJaWYgKCB0cnVlICE9PSBBdXRoOjpp
c19hdXRoZW50aWNhdGVkKCkgKSB7IC8vIElmIG5vdCBsb2dnZWQgaW4gdGhlbiBwcm92aWRlIGxvZ2luIHB
hZ2UuCgkJJHN0ZXAgPSAnbG9naW4nOwoJfSBlbHNlIHsKCQkkc3RlcCA9ICdob21lQmFja3VwU2VsZWN0Jz
sKCX0KfQoKJHN0ZXBGaWxlID0gQUJTUEFUSCAuICdpbXBvcnRidWRkeS9jb250cm9sbGVycy9wYWdlcy8nI
C4gJHN0ZXAgLiAnLnBocCc7CiRzdGVwID0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdzdGVwJyApOwpyZXF1
aXJlX29uY2UoIEFCU1BBVEggLiAnaW1wb3J0YnVkZHkvdmlld3MvX2hlYWRlci5waHAnICk7CmVjaG8gJzw
hLS0gU3RhcnRpbmcgc3RlcCBmaWxlIGAnIC4gYmFzZW5hbWUoICRzdGVwRmlsZSApIC4gJ2AuIC0tPic7Cg
ovKmlmICggJHN0ZXAgPiAwICkgeyAvLyBMb2FkIHN0ZXBzIGFmdGVyIDAgaW4gaWZyYW1lLgoJZWNobyBwY
l9iYWNrdXBidWRkeTo6JGNsYXNzZXNbJ2ltcG9ydCddLT5zdGF0dXNfYm94KCAnSW1wb3J0QnVkZHkgdicg
LiBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2JiX3ZlcnNpb24nXSAuICcuLi4gUG93ZXJlZCBieSBCYWN
rdXBCdWRkeS4nICk7CgllY2hvICc8aWZyYW1lIGlkPSJwYl9iYWNrdXBidWRkeV9tb2RhbF9pZnJhbWUiIG
5hbWU9InBiX2JhY2t1cGJ1ZGR5X21vZGFsX2lmcmFtZSIgc3JjPSInIC4gcGJfYmFja3VwYnVkZHk6OnBhZ
2VfdXJsKCkgLiAnaW1wb3J0YnVkZHkucGhwP2FqYXg9JyAuICRzdGVwIC4gJyIgd2lkdGg9IjEwMCUiIGhl
aWdodD0iMTgwMCIgZnJhbWVib3JkZXI9IjAiIHBhZGRpbmc9IjAiIG1hcmdpbj0iMCI+RXJyb3IgIzQ1ODQ
1OTQ1NzkuIEJyb3dzZXIgbm90IGNvbXBhdGlibGUgd2l0aCBpZnJhbWVzLjwvaWZyYW1lPic7Cn0gZWxzZS
B7CgkqLwoJaWYgKCBmaWxlX2V4aXN0cyggJHN0ZXBGaWxlICkgKSB7CgkJcmVxdWlyZV9vbmNlKCAkc3Rlc
EZpbGUgKTsKCX0gZWxzZSB7CgkJZWNobyAne0Vycm9yOiBJbnZhbGlkIHN0ZXAgZmlsZSBgJyAuIGh0bWxl
bnRpdGllcyggJHN0ZXAgKSAuICcucGhwJyAuICdgLn0nOwoJfQovL30KcGJfYmFja3VwYnVkZHk6OnN0YXR
1cyggJ2RldGFpbHMnLCAnRmluaXNoZWQgc3RlcC4nICk7CnJlcXVpcmVfb25jZSggQUJTUEFUSCAuICdpbX
BvcnRidWRkeS92aWV3cy9fZm9vdGVyLnBocCcgKTsKCnJldHVybjsKCg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/pages/default.php,import
buddy/controllers/pages/default.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/pages/homeBackupSelect
.php,importbuddy/controllers/pages/homeBackupSelect.php
PD9waHAKLyoqCiAqIEhvbWUgQmFja3VwIFNlbGVjdCBWaWV3IEZpbGUuCiAqCiAqIEBwYWNrYWdlIEJhY2t
1cEJ1ZGR5CiAqLwoKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IF
BCX0lNUE9SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CgovLyBPbiBpbml0aWFsI
GxvZ2luIHRvIFN0ZXAgMSAoY2hlY2tzIGZvciBwYXNzd29yZCBmaWVsZCBmcm9tIGF1dGggZm9ybSkgcmVz
ZXQgYW55IGRhbmdsaW5nIGRlZmF1bHRzIGZyb20gYSBwYXJ0aWFsIHJlc3RvcmUuCmlmICggKCB0cnVlID0
9PSBBdXRoOjppc19hdXRoZW50aWNhdGVkKCkgKSAmJiAoIHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ3Bhc3
N3b3JkJyApICE9ICcnICkgKSB7CglwYl9iYWNrdXBidWRkeTo6cmVzZXRfZGVmYXVsdHMoKTsKfQoKLy8gS
GFuZGxlIHNtYWxsIHNpemUgUEhQIHVwbG9hZCBsaW1pdCBrbm9ja2luZyBvZmYgYXV0aGVudGljYXRpb24g
d2hlbiB1cGxvYWRpbmcgYSBiYWNrdXAuCmlmICggaXNzZXQoICRfU0VSVkVSWydDT05URU5UX0xFTkdUSCd
dICkgJiYgKCBpbnR2YWwoICRfU0VSVkVSWydDT05URU5UX0xFTkdUSCddICkgPiAwICkgJiYgKCBjb3VudC
ggJF9QT1NUICkgPT09IDAgKSApIHsKCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ0Vycm9yICM1NDg0NTQ4N
Tk1LiBVbmFibGUgdG8gdXBsb2FkLiBZb3VyIFBIUCBwb3N0X21heF9zaXplIHNldHRpbmcgaXMgdG9vIHNt
YWxsIHNvIGl0IGRpc2NhcmRlZCBQT1NUIGRhdGEuIFlvdSBtYXkgaGF2ZSB0byBsb2cgYmFjayBpbi4nLCB
0cnVlICk7Cn0KdXBsb2FkKCk7IC8vIEhhbmRsZSBhbnkgdXBsb2FkaW5nIG9mIGEgYmFja3VwIGZpbGUuCg
okZGF0YSA9IGFycmF5KCk7CgovKioKICogUHJvY2Vzc2VzIHVwbG9hZGVkIGJhY2t1cCBmaWxlLgogKgogK
iBAcmV0dXJuIGFycmF5ICBUcnVlIG9uIHVwbG9hZCBzdWNjZXNzOyBmYWxzZSBvdGhlcndpc2UuCiAqLwpm
dW5jdGlvbiB1cGxvYWQoKSB7CgoJQXV0aDo6cmVxdWlyZV9hdXRoZW50aWNhdGlvbigpOwoKCWlmICggaXN
zZXQoICRfUE9TVFsndXBsb2FkJ10gKSAmJiAoICRfUE9TVFsndXBsb2FkJ10gPT0gJ2xvY2FsJyApICkgew
oJCSRwYXRoX3BhcnRzID0gcGF0aGluZm8oICRfRklMRVNbJ2ZpbGUnXVsnbmFtZSddICk7CgkJaWYgKCAoI
HN0cnRvbG93ZXIoIHN1YnN0ciggJF9GSUxFU1snZmlsZSddWyduYW1lJ10sIDAsIDYgKSApID09ICdiYWNr
dXAnICkgJiYgKCBzdHJ0b2xvd2VyKCAkcGF0aF9wYXJ0c1snZXh0ZW5zaW9uJ10gKSA9PSAnemlwJyApICk
gewoJCQlpZiAoIG1vdmVfdXBsb2FkZWRfZmlsZSggJF9GSUxFU1snZmlsZSddWyd0bXBfbmFtZSddLCBiYX
NlbmFtZSggJF9GSUxFU1snZmlsZSddWyduYW1lJ10gKSApICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OmFsZ
XJ0KCAnRmlsZSBVcGxvYWRlZC4gWW91ciBiYWNrdXAgd2FzIHN1Y2Nlc3NmdWxseSB1cGxvYWRlZC4nICk7
CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfSBlbHNlIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ1NvcnJ
5LCB0aGVyZSB3YXMgYSBwcm9ibGVtIHVwbG9hZGluZyB5b3VyIGZpbGUuJywgdHJ1ZSApOwoJCQkJcmV0dX
JuIGZhbHNlOwoJCQl9CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZHk6OmFsZXJ0KCAnT25seSBwcm9wZ
XJseSBuYW1lZCBCYWNrdXBCdWRkeSB6aXAgYXJjaGl2ZXMgd2l0aCBhIHppcCBleHRlbnNpb24gbWF5IGJl
IHVwbG9hZGVkLicsIHRydWUgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCgkvLyBET1dOTE9BRCBGSUx
FIEZST00gU1RBU0ggVE8gTE9DQUwuCglpZiAoIHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ3VwbG9hZCcgKS
A9PSAnc3Rhc2gnICkgewoKCQlwYl9iYWNrdXBidWRkeTo6c2V0X2dyZWVkeV9zY3JpcHRfbGltaXRzKCB0c
nVlICk7CgoJCSRyZXF1ZXN0Y29yZV9maWxlID0gZGlybmFtZSggZGlybmFtZSggZGlybmFtZSggX19GSUxF
X18gKSApICkgLiAnL2xpYi9yZXF1ZXN0Y29yZS9yZXF1ZXN0Y29yZS5jbGFzcy5waHAnOwoJCXJlcXVpcmV
fb25jZSAkcmVxdWVzdGNvcmVfZmlsZTsKCgkJJGxpbmsgICAgICAgICAgICAgPSBwYl9iYWNrdXBidWRkeT
o6X1BPU1QoICdsaW5rJyApOwoJCSRkZXN0aW5hdGlvbl9maWxlID0gZGlybmFtZSggZGlybmFtZSggZGlyb
mFtZSggZGlybmFtZSggX19GSUxFX18gKSApICkgKSAuICcvJyAuIGJhc2VuYW1lKCBwYl9iYWNrdXBidWRk
eTo6X1BPU1QoICdsaW5rJyApICk7CgkJJGRlc3RpbmF0aW9uX2ZpbGUgPSBzdWJzdHIoICRkZXN0aW5hdGl
vbl9maWxlLCAwLCBzdHJpcG9zKCAkZGVzdGluYXRpb25fZmlsZSwgJy56aXAnICkgKyA0ICk7CgoJCSRfR0
VUWydmaWxlJ10gPSBiYXNlbmFtZSggJGRlc3RpbmF0aW9uX2ZpbGUgKTsKCgkJJHJlcXVlc3QgPSBuZXcgU
mVxdWVzdENvcmUoICRsaW5rICk7CgkJJHJlcXVlc3QtPnNldF93cml0ZV9maWxlKCAkZGVzdGluYXRpb25f
ZmlsZSApOwoKCQllY2hvICc8ZGl2IGlkPSJwYl9pbXBvcnRidWRkeV93b3JraW5nIiBzdHlsZT0icGFkZGl
uZzogMjBweDsiPkRvd25sb2FkaW5nIGJhY2t1cCBmcm9tIFN0YXNoIHRvIGAnIC4gJGRlc3RpbmF0aW9uX2
ZpbGUgLiAnYC4uLjxicj48YnI+PGltZyBzcmM9IicgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpI
C4gJy9pbWFnZXMvbG9hZGluZ19sYXJnZS5naWYiIHRpdGxlPSJXb3JraW5nLi4uIFBsZWFzZSB3YWl0IGFz
IHRoaXMgbWF5IHRha2UgYSBtb21lbnQuLi4iPjxicj48YnI+PC9kaXY+JzsKCQlwYl9iYWNrdXBidWRkeTo
6Zmx1c2goKTsKCgkJJHJlc3BvbnNlID0gJHJlcXVlc3QtPnNlbmRfcmVxdWVzdCggZmFsc2UgKTsKCQlpZi
AoICRyZXNwb25zZSAhPT0gdHJ1ZSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OmFsZXJ0KCAnRXJyb3IgIzg1N
Dg0NTk1OTguIFVuYWJsZSB0byBkb3dubG9hZCBmaWxlIGZyb20gU3Rhc2guIFlvdSBtYXkgbWFudWFsbHkg
ZG93bmxvYWQgaXQgYW5kIHVwbG9hZCB0byB0aGUgc2VydmVyIHZpYSBGVFAuJyApOwoJCX0gZWxzZSB7IC8
vIE5vIGVycm9yLgoJCQlpZiAoICEgZmlsZV9leGlzdHMoICRkZXN0aW5hdGlvbl9maWxlICkgKSB7CgkJCQ
lwYl9iYWNrdXBidWRkeTo6YWxlcnQoICdFcnJvciAjMzQ4NDU3NDU4NzguIFN0YXNoIHJldHVybmVkIGEgc
3VjY2VzcyBidXQgdGhlIGJhY2t1cCBmaWxlIHdhcyBub3QgZm91bmQgbG9jYWxseS4gQ2hlY2sgdGhpcyBz
ZXJ2ZXJcJ3MgZGlyZWN0b3J5IHdyaXRlIHBlcm1pc3Npb25zLiBZb3UgbWF5IG1hbnVhbGx5IGRvd25sb2F
kIGl0IGFuZCB1cGxvYWQgdG8gdGhlIHNlcnZlciB2aWEgRlRQLicgKTsKCQkJfQoJCX0KCgkJZWNobyAnPH
NjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmpRdWVyeSgiI3BiX2ltcG9ydGJ1ZGR5X3dvcmtpbmciK
S5oaWRlKCk7PC9zY3JpcHQ+JzsKCgl9Cn0KCi8qKgogKiBSZXR1cm5zIGFuIGFycmF5IG9mIGJhY2t1cCBh
cmNoaXZlIHppcCBmaWxlbmFtZXMgZm91bmQuCiAqCiAqIEByZXR1cm4gYXJyYXkgIEFycmF5IG9mIC56aXA
gZmlsZW5hbWVzOyBwYXRoIE5PVCBpbmNsdWRlZC4KICovCmZ1bmN0aW9uIGdldF9hcmNoaXZlc19saXN0KC
kgewoKCUF1dGg6OnJlcXVpcmVfYXV0aGVudGljYXRpb24oKTsKCglpZiAoICEgaXNzZXQoIHBiX2JhY2t1c
GJ1ZGR5OjokY2xhc3Nlc1snemlwYnVkZHknXSApICkgewoJCXJlcXVpcmVfb25jZSBwYl9iYWNrdXBidWRk
eTo6cGx1Z2luX3BhdGgoKSAuICcvbGliL3ppcGJ1ZGR5L3ppcGJ1ZGR5LnBocCc7CgkJcGJfYmFja3VwYnV
kZHk6OiRjbGFzc2VzWyd6aXBidWRkeSddID0gbmV3IHBsdWdpbmJ1ZGR5X3ppcGJ1ZGR5KCBBQlNQQVRIIC
k7Cgl9CgoJLy8gTGlzdCBiYWNrdXAgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuCgkkYmFja3VwX2FyY2hpd
mVzID0gYXJyYXkoKTsKCSRiYWNrdXBfemlwcyAgICAgPSBnbG9iKCBBQlNQQVRIIC4gJ2JhY2t1cCouemlw
JyApOwoJaWYgKCAhIGlzX2FycmF5KCAkYmFja3VwX3ppcHMgKSApIHsKCQkkYmFja3VwX3ppcHMgPSBhcnJ
heSgpOwoJfQoJJHNuYXBzaG90X3ppcHMgPSBnbG9iKCBBQlNQQVRIIC4gJ3NuYXBzaG90Ki56aXAnICk7Cg
lpZiAoICEgaXNfYXJyYXkoICRzbmFwc2hvdF96aXBzICkgKSB7CgkJJHNuYXBzaG90X3ppcHMgPSBhcnJhe
SgpOwoJfQoJJGJhY2t1cF9hcmNoaXZlc19nbG9iID0gYXJyYXlfbWVyZ2UoICRiYWNrdXBfemlwcywgJHNu
YXBzaG90X3ppcHMgKTsKCXVuc2V0KCAkYmFja3VwX3ppcHMgKTsKCXVuc2V0KCAkc25hcHNob3RfemlwcyA
pOwoJZm9yZWFjaCAoICRiYWNrdXBfYXJjaGl2ZXNfZ2xvYiBhcyAkYmFja3VwX2FyY2hpdmUgKSB7CgkJJG
NvbW1lbnQgPSBwYl9iYWNrdXBidWRkeTo6JGNsYXNzZXNbJ3ppcGJ1ZGR5J10tPmdldF9jb21tZW50KCAkY
mFja3VwX2FyY2hpdmUgKTsKCQkkY29tbWVudCA9IGJhY2t1cGJ1ZGR5X2NvcmU6Om5vcm1hbGl6ZV9jb21t
ZW50X2RhdGEoICRjb21tZW50ICk7CgoJCSR0aGlzX2FyY2hpdmUgICAgICA9IGFycmF5KAoJCQknZmlsZSc
gICAgPT4gYmFzZW5hbWUoICRiYWNrdXBfYXJjaGl2ZSApLAoJCQknY29tbWVudCcgPT4gJGNvbW1lbnQsCg
kJKTsKCQkkYmFja3VwX2FyY2hpdmVzW10gPSAkdGhpc19hcmNoaXZlOwoJfQoJdW5zZXQoICRiYWNrdXBfY
XJjaGl2ZXNfZ2xvYiApOwoKCXJldHVybiAkYmFja3VwX2FyY2hpdmVzOwp9CgovKioKICogQ2hlY2tzIGZv
ciBwb3RlbnRpYWwgcHJvYmxlbXMgYmVmb3JlIGdldHRpbmcgc3RhcnRlZC4KICoKICogQHJldHVybiBhcnJ
heSAgUG90ZW50aWFsIHByb2JsZW1zLiBLZXkgaXMgYSB1bmlxdWUgc2x1ZyB0byB0aGUgaXNzdWUsIHZhbH
VlIGlzIGEgZGVzY3JpcHRpdmUgdGV4dC4KICovCmZ1bmN0aW9uIHByZWZsaWdodFNjYW4oKSB7CgkkaXNzd
WVzID0gYXJyYXkoKTsKCglpZiAoIGZpbGVfZXhpc3RzKCBBQlNQQVRIIC4gJ3dwLWNvbmZpZy5waHAnICkg
KSB7CgkJJGlzc3Vlc1snd29yZHByZXNzX2V4aXN0cyddID0gJ1dBUk5JTkc6IEV4aXN0aW5nIFdvcmRQcmV
zcyBpbnN0YWxsYXRpb24gZm91bmQuIEl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRoYXQgZXhpc3Rpbm
cgV29yZFByZXNzIGZpbGVzIGFuZCBkYXRhYmFzZSBiZSByZW1vdmVkIHByaW9yIHRvIG1pZ3JhdGluZyBvc
iByZXN0b3JpbmcgdG8gYXZvaWQgY29uZmxpY3RzLiBZb3Ugc2hvdWxkIG5vdCBpbnN0YWxsIFdvcmRQcmVz
cyBwcmlvciB0byBtaWdyYXRpbmcuJzsKCX0KCglpZiAoIGZpbGVfZXhpc3RzKCBBQlNQQVRIIC4gJ3BocC5
pbmknICkgKSB7CgkJJGlzc3Vlc1sncGhwX2luaV9leGlzdHMnXSA9ICdXQVJOSU5HOiBFeGlzdGluZyBwaH
AuaW5pIGZpbGUgZm91bmQgd2hpY2ggY29uZmlndXJlcyBjdXN0b20gUEhQIHNldHRpbmdzLiBJZiB5b3VyI
GJhY2t1cCBhbHNvIGNvbnRhaW5zIGEgcGhwLmluaSBmaWxlIGl0IG1heSBvdmVyd3JpdGUgdGhlIGN1cnJl
bnQgb25lLCBwb3NzaWJseSByZXN1bHRpbmcgaW4gY2hhbmdlcyBpbiBjb25maWd1cmF0aW9uIG9yIHByb2J
sZW1zLiBNYWtlIGEgYmFja3VwIG9mIHlvdXIgZXhpc3RpbmcgZmlsZSBpZiB5b3VyIGFyZSB1bnN1cmUuJz
sKCX0KCglpZiAoIGZpbGVfZXhpc3RzKCBBQlNQQVRIIC4gJy51c2VyLmluaScgKSApIHsKCQkkaXNzdWVzW
ydwaHBfaW5pX2V4aXN0cyddID0gJ1dBUk5JTkc6IEV4aXN0aW5nIC51c2VyLmluaSBmaWxlIGZvdW5kIHdo
aWNoIGNvbmZpZ3VyZXMgY3VzdG9tIFBIUCBzZXR0aW5ncy4gSWYgeW91ciBiYWNrdXAgYWxzbyBjb250YWl
ucyBhIC51c2VyLmluaSBmaWxlIGl0IG1heSBvdmVyd3JpdGUgdGhlIGN1cnJlbnQgb25lLCBwb3NzaWJseS
ByZXN1bHRpbmcgaW4gY2hhbmdlcyBpbiBjb25maWd1cmF0aW9uIG9yIHByb2JsZW1zLiBNYWtlIGEgYmFja
3VwIG9mIHlvdXIgZXhpc3RpbmcgZmlsZSBpZiB5b3VyIGFyZSB1bnN1cmUuJzsKCX0KCglpZiAoIGZpbGVf
ZXhpc3RzKCBBQlNQQVRIIC4gJy5odGFjY2VzcycgKSApIHsKCQkkaXNzdWVzWydodGFjY2Vzc19leGlzdHM
nXSA9ICdXQVJOSU5HOiBFeGlzdGluZyAuaHRhY2Nlc3MgZmlsZSBmb3VuZC4gSWYgeW91ciBiYWNrdXAgYW
xzbyBjb250YWlucyBhIC5odGFjY2VzcyBmaWxlIGl0IG1heSBvdmVyd3JpdGUgdGhlIGN1cnJlbnQgb25lL
CBwb3NzaWJseSByZXN1bHRpbmcgaW4gY2hhbmdlcyBpbiBjb25maWd1cmF0aW9uIG9yIHByb2JsZW1zLiBN
YWtlIGEgYmFja3VwIG9mIHlvdXIgZXhpc3RpbmcgZmlsZSBpZiB5b3UgYXJlIHVuc3VyZS4nOwoJfQoKCS8
qCgkgVE9ETzogTW92ZSB0byBwb3N0IGZsaWdodCBzY2FuLgoJaWYgKCAoIGZpbGVfZXhpc3RzKCBBQlNQQV
RIIC4gJ2luZGV4Lmh0bScgKSA9PT0gdHJ1ZSApIHx8ICggZmlsZV9leGlzdHMoIEFCU1BBVEggLiAnaW5kZ
XguaHRtbCcgKSA9PT0gdHJ1ZSApICkgewoJCSRpc3N1ZXNbJ2luZGV4X2V4aXN0cyddID0gJ0FuIGluZGV4
Lmh0bShsKSBmaWxlIGV4aXN0cyBpbiB0aGlzIHNpdGUgcGF0aC4gRGVwZW5kaW5nIG9uIHlvdXIgc2VydmV
yIHNldHVwIGl0IG1heSB0YWtlIHByZWNlZGVuY2UgaW4gbG9hZGluZyBpbnN0ZWFkIG9mIFdvcmRQcmVzcy
4gSWYgYWZ0ZXIgcmVzdG9yZSB5b3VyIHNpdGUgbG9hZHMgYW4gdW5leHBlY3RlZCBvciBibGFuayBwYWdlL
CB0cnkgcmVuYW1pbmcgb3IgZGVsZXRpbmcgdGhlIGluZGV4Lmh0bShsKSBmaWxlKHMpIGluIHRoZSBzaXRl
IHJvb3QsIGAnIC4gQUJTUEFUSCAuICdgLic7Cgl9CgkqLwoKCS8vIExvb2sgZm9yIGRpcmVjdG9yaWVzIG5
hbWVkIGFmdGVyIGEgYmFja3VwIGZpbGUgdGhhdCBjb250YWluIFdvcmRQcmVzcy4gLS0gaW1wcm9wZXJseS
B1bnppcHBlZCBpbiB0aGUgd3JvbmcgbG9jYXRpb24uCgkkYmFja3VwX2RpcnMgPSBnbG9iKCBBQlNQQVRII
C4gJ2JhY2t1cC0qL3dwLWxvZ2luLnBocCcgKTsKCWlmICggISBpc19hcnJheSggJGJhY2t1cF9kaXJzICkg
KSB7CgkJJGJhY2t1cF9kaXJzID0gYXJyYXkoKTsKCX0KCWlmICggY291bnQoIChhcnJheSkgJGJhY2t1cF9
kaXJzICkgPiAwICkgewoJCSRpc3N1ZXNbJ21hbnVhbF91bnppcF93cm9uZ19sb2NhdGlvbiddID0gJ0EgbW
FudWFsbHkgdW56aXBwZWQgYmFja3VwIG1heSBoYXZlIGJlZW4gZm91bmQgaW4gdGhlIGZvbGxvd2luZyBsb
2NhdGlvbihzKS4gSWYgeW91IG1hbnVhbGx5IHVuemlwcGVkIGNvbmZpcm0gdGhlIGZpbGVzIHdlcmUgbm90
IHVuemlwcGVkIGludG8gdGhpcyBzdWJkaXJlY3RvcnkgZWxzZSB0aGV5IHdpbGwgbmVlZCB0byBiZSBtb3Z
lZCB1cCBvdXQgb2YgdGhlIHN1YmRpcmVjdG9yeSBpbnRvIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyBpbXBvcn
RidWRkeS5waHAuIFBvc3NpYmxlIG1hbnVhbGx5IHVuemlwcGVkIGJhY2t1cHMgaW4gYSBzdWJkaXJlY3Rvc
nk6ICcgLiBpbXBsb2RlKCAnLCAnLCAkYmFja3VwX2RpcnMgKTsKCX0KCglyZXR1cm4gJGlzc3VlczsKfQoK
CgpwYl9iYWNrdXBidWRkeTo6bG9hZF92aWV3KCA
naG9tZScsICRkYXRhICk7CgovLyBMT0cgSU1QT1JUQlVERFkgVkVSU0lPTiBJTkZPUk1BVElPTi4KcGJfYm
Fja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUnVubmluZyBJbXBvcnRCdWRkeSB2JyAuIHBiX2JhY
2t1cGJ1ZGR5Ojokb3B0aW9uc1snYmJfdmVyc2lvbiddIC4gJy4nICk7Cg==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/pages/homeBackupSelect.p
hp,importbuddy/controllers/pages/homeBackupSelect.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/pages/index.php,import
buddy/controllers/pages/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/pages/index.php,importbu
ddy/controllers/pages/index.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/pages/login.php,import
buddy/controllers/pages/login.php
PD9waHAKLyoqCiAqIExvZ2luIFBhZ2UKICoKICogQHBhY2thZ2UgQmFja3VwQnVkZHkKICovCgo/Pgo8c2N
yaXB0PmpRdWVyeSggJyNwYWdlVGl0bGUnICkuaHRtbCggJ0F1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJyApOz
wvc2NyaXB0Pgo8P3BocAppZiAoICcnICE9IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ3Bhc3N3b3JkJyApI
CkgewoJZ2xvYmFsICRwYl9sb2dpbl9hdHRlbXB0czsKCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ0ludmFs
aWQgcGFzc3dvcmQuIFBsZWFzZSBlbnRlciB0aGUgcGFzc3dvcmQgeW91IHByb3ZpZGVkIHdpdGhpbiBCYWN
rdXBCdWRkeSBTZXR0aW5ncy4gQXR0ZW1wdCAjJyAuICRwYl9sb2dpbl9hdHRlbXB0cyAuICcuJyApOwoJZW
NobyAnPGJyPic7Cn0KCmlmICggISBpc19jYWxsYWJsZSggJ2pzb25fZGVjb2RlJyApICkgewoJJG1lc3NhZ
2UgPSAnRXJyb3IgIzg0Mzk4NDM0OiBNaXNzaW5nIHJlcXVpcmVkIFBIUCBmdW5jdGlvbiBqc29uX2RlY29k
ZSgpLiBZb3VyIFBIUCB2ZXJzaW9uIGlzIHRvbyBvbGQgb3IgZGFtYWdlZC4gSXQgaXMgTk9UIGNvbXBhdGl
ibGUgd2l0aCBXb3JkUHJlc3MgYXMgaXQgaXMuIFBsZWFzZSBjb250YWN0IHlvdXIgaG9zdCB0byBmaXggdG
hpcy4nOwoJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJG1lc3NhZ2UgKTsKCXBiX2JhY2t1c
GJ1ZGR5OjphbGVydCggJG1lc3NhZ2UsIHRydWUgKTsKfQo/PgoKPHA+RW50ZXIgeW91ciBJbXBvcnRCdWRk
eSBwYXNzd29yZCBiZWxvdyB0byBiZWdpbi48L3A+Cgo8YnI+Cgo8Zm9ybSBtZXRob2Q9InBvc3QiIGlkPSJ
pbXBvcnRidWRkeS1hdXRoLWZvcm0iPgoJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0aW9uIiB2YW
x1ZT0ibG9naW4iPgoJPGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwYXNzd29yZCIgc3R5bGU9IndpZ
HRoOiAyNTBweDsgdmVydGljYWwtYWxpZ246IC0ycHg7Ij4KCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9
InN1Ym1pdCIgdmFsdWU9IkF1dGhlbnRpY2F0ZSIgY2xhc3M9Iml0LWJ1dHRvbiI+Cgk8YnV0dG9uIGhyZWY
9IiNwYl9mb3Jnb3RwYXNzd29yZF9tb2RhbCIgY2xhc3M9ImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGxlYW
5Nb2RhbCBjcmVhdGVkYl9tb2RhbF9saW5rIj5Gb3Jnb3QgUGFzc3dvcmQ/PC9idXR0b24+CjwvZm9ybT4KC
jxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCWpRdWVyeShmdW5jdGlvbigpIHsKCQlqUXVlcnko
ICcjaW1wb3J0YnVkZHktYXV0aC1mb3JtIGlucHV0W3R5cGU9cGFzc3dvcmRdJyApLmZvY3VzKCk7CgoJCWp
RdWVyeSgnLmxlYW5Nb2RhbCcpLmxlYW5Nb2RhbCgKCQkJeyB0b3AgOiA0NSwgb3ZlcmxheSA6IDAuNCwgY2
xvc2VCdXR0b246ICIubW9kYWxfY2xvc2UiIH0KCQkpOwoKCQlqUXVlcnkoICcjY3JlYXRlcGFzc19mb3JtJ
yApLnN1Ym1pdChmdW5jdGlvbigpewoKCQkJaWYgKCBqUXVlcnkoICcjbmV3X3Bhc3MnICkudmFsKCkgIT0g
alF1ZXJ5KHRoaXMpLmZpbmQoICcjbmV3X3Bhc3NfY29uZmlybScgKS52YWwoKSApIHsKCQkJCWFsZXJ0KCA
nUGFzc3dvcmQgYW5kIGNvbmZpcm1hdGlvbiBkbyBub3QgbWF0Y2guJyApOwoJCQkJcmV0dXJuIGZhbHNlOw
oJCQl9CgoJCQlpZiAoICcnID09PSBqUXVlcnkoICcjbmV3X3Bhc3MnICkudmFsKCkgKSB7CgkJCQlhbGVyd
CggJ1lvdSBtdXN0IHByb3ZpZGUgYSBuZXcgcGFzc3dvcmQuJyApOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9
CgoJCQlqUXVlcnkoICcuY3JlYXRlcGFzc19sb2FkaW5nJyApLnNob3coKTsKCQkJalF1ZXJ5LnBvc3QoJ2l
tcG9ydGJ1ZGR5LnBocD9hamF4PWhhc2hfZm9yZ290cGFzcycsCgkJCXsKCQkJCW5ld3Bhc3N3b3JkOiBqUX
VlcnkoICcjbmV3X3Bhc3MnICkudmFsKCksCgkJCX0sIGZ1bmN0aW9uKGRhdGEpIHsKCgkJCQkJZGF0YSA9I
GpRdWVyeS50cmltKCBkYXRhICk7CgkJCQkJalF1ZXJ5KCAnLmNyZWF0ZXBhc3NfbG9hZGluZycgKS5oaWRl
KCk7CgoJCQkJCWpRdWVyeSggJy5mb3Jnb3RwYXNzX2Zvcm1fd3JhcCcgKS5oaWRlKCk7CgkJCQkJalF1ZXJ
5KCAnLmZvcmdvdHBhc3NfZmluaXNoX2hhc2gnKS52YWwoIGRhdGEgKTsKCQkJCQlqUXVlcnkoICcuZm9yZ2
90cGFzc19maW5pc2hfd3JhcCcgKS5zaG93KCk7CgkJCQl9CgkJCSk7CgoJCQlyZXR1cm4gZmFsc2U7CgoJC
X0pOwoJfSk7Cjwvc2NyaXB0PgoKPGRpdiBpZD0icGJfZm9yZ290cGFzc3dvcmRfbW9kYWwiIHN0eWxlPSJk
aXNwbGF5OiBub25lOyI+Cgk8ZGl2IGNsYXNzPSJtb2RhbCI+CgkJPGRpdiBjbGFzcz0ibW9kYWxfaGVhZGV
yIj4KCQkJPGEgY2xhc3M9Im1vZGFsX2Nsb3NlIj4mdGltZXM7PC9hPgoJCQk8aDI+UGFzc3dvcmQgUmVzZX
Q8L2gyPgoJCQlBZnRlciBzdWJtaXR0aW5nIHlvdSB3aWxsIG5lZWQgdG8gZWRpdCB5b3VyIGltcG9ydGJ1Z
GR5LnBocCBmaWxlIG9uIHRoaXMgc2VydmVyIGFuZCBlZGl0IGEgbGluZSBvZiBjb2RlIHdpdGggYSBoYXNo
ZWQgdmVyc2lvbiBvZiB0aGlzIHBhc3N3b3JkLgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9Im1vZGFsX2NvbnR
lbnQiPgoKCgkJCTxkaXYgY2xhc3M9ImZvcmdvdHBhc3NfZm9ybV93cmFwIj4KCgoJCQkJPGNlbnRlcj4KCQ
kJCQk8Zm9ybSBpZD0iY3JlYXRlcGFzc19mb3JtIj4KCQkJCQkJPHRhYmxlPgoJCQkJCQkJPHRyPgoJCQkJC
QkJCTx0ZD5OZXcgUGFzc3dvcmQ8L3RkPjx0ZD48aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9Im5ld3Bh
c3N3b3JkIiBpZD0ibmV3X3Bhc3MiPjwvdGQ+CgkJCQkJCQk8L3RyPgoJCQkJCQkJPHRyPgoJCQkJCQkJCTx
0ZD5Db25maXJtIFBhc3N3b3JkPC90ZD48dGQ+PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJuZXdwYX
Nzd29yZF9jb25maXJtIiBpZD0ibmV3X3Bhc3NfY29uZmlybSI+PC90ZD4KCQkJCQkJCTwvdHI+CgkJCQkJC
TwvdGFibGU+CgkJCQkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IlN1Ym1p
dCIgY2xhc3M9ImJ1dHRvbi1wcmltYXJ5Ij4KCQkJCQk8L2Zvcm0+CgkJCQkJPHNwYW4gY2xhc3M9ImNyZWF
0ZXBhc3NfbG9hZGluZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG1hcmdpbi1sZWZ0OiAxMHB4OyI+PGltZy
BzcmM9Ijw/cGhwIGVjaG8gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKTsgPz4vaW1hZ2VzL2xvYWRpb
mcuZ2lmIiBhbHQ9IidMb2FkaW5nLi4uIiB0aXRsZT0iTG9hZGluZy4uLiIgd2lkdGg9IjE2IiBoZWlnaHQ9
IjE2IiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0zcHg7Ij48L3NwYW4+CgkJCQk8L2NlbnRlcj4KCgkJCTw
vZGl2PgoKCgkJCTxkaXYgY2xhc3M9ImZvcmdvdHBhc3NfZmluaXNoX3dyYXAiIHN0eWxlPSJkaXNwbGF5Oi
Bub25lOyI+CgkJCQlUbyBlbmFibGUgdGhpcyBuZXcgcGFzc3dvcmQgZm9yIGFjY2Vzc2luZyBpbXBvcnRid
WRkeS5waHAgb3BlbiBpbXBvcnRidWRkeS5waHAgaW4gYSB0ZXh0IGVkaXRvciBhbmQgZmluZCBsaW5lIDEz
IHRoYXQgbG9va3MgbGlrZSB0aGUgZm9sbG93aW5nLCByZXBsYWNpbmcgdGhlIFgncyBpbiB0aGlzIGxpbmU
gd2l0aCB0aGUgcGFzc3dvcmQgaGFzaCBjb2RlIGJlbG93LiBNYWtlIHN1cmUgeW91IHJlLXNhdmUgdGhpcy
BlZGl0ZWQgdmVyc2lvbiB0byB0aGUgc2VydmVyIHRoZW4gcmVmcmVzaCB0aGlzIHBhZ2UgdG8gbG9nIGluL
jxicj48YnI+CgoJCQkJPGk+ZGVmaW5lKCAnUEJfUEFTU1dPUkQnLCAnWFhYWFhYWFhYWFhYWFhYWFhYWFhY
WFhYWFhYWFhYWFgnICk7PC9pPjxicj48YnI+CgoJCQkJPGI+TmV3IHBhc3N3b3JkIGhhc2ggY29kZTo8L2I
+PGJyPgoJCQkJPGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJmb3Jnb3RwYXNzX2ZpbmlzaF9oYXNoIiB2YW
x1ZT0iIiByZWFkb25seT0icmVhZG9ubHkiIHNpemU9IjQwIj4KCQkJPC9kaXY+CgoKCQk8L2Rpdj4KCTwvZ
Gl2Pgo8L2Rpdj4K
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/pages/login.php,importbu
ddy/controllers/pages/login.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/pages/server_tools.php
,importbuddy/controllers/pages/server_tools.php
PD9waHAKaWYgKCAhZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApICkgeyAvLyBOT1QgSU4gSU1QT1JUQlV
ERFk6Cgl3cF9lbnF1ZXVlX3NjcmlwdCggJ3RoaWNrYm94JyApOwoJd3BfcHJpbnRfc2NyaXB0cyggJ3RoaW
NrYm94JyApOwoJd3BfcHJpbnRfc3R5bGVzKCAndGhpY2tib3gnICk7Cgk/PgoJPHN0eWxlIHR5cGU9InRle
HQvY3NzIj4KCSNiYWNrdXBidWRkeS1tZXRhLWxpbmstd3JhcCBhLnNob3ctc2V0dGluZ3MgewoJCWZsb2F0
OiByaWdodDsKCQltYXJnaW46IDAgMCAwIDZweDsKCX0KCSNzY3JlZW4tbWV0YS1saW5rcyAjYmFja3VwYnV
kZHktbWV0YS1saW5rLXdyYXAgYSB7CgkJYmFja2dyb3VuZDogbm9uZTsKCX0KCSNzY3JlZW4tbWV0YS1saW
5rcyAjYmFja3VwYnVkZHktbWV0YS1saW5rLXdyYXAgYTphZnRlciB7CgkJY29udGVudDogJyc7CgkJbWFyZ
2luLXJpZ2h0OiA1cHg7Cgl9Cgk8L3N0eWxlPgoKCTw/cGhwCgoJcGJfYmFja3VwYnVkZHk6OmxvYWRfc2Ny
aXB0KCAnYWRtaW4uanMnICk7CgkKCQoJCglwYl9iYWNrdXBidWRkeTo6JHVpLT50aXRsZSggX18oICdTZXJ
2ZXIgVG9vbHMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJYmFja3VwYnVkZHlfY29yZTo6dmVyc2
lvbnNfY29uZmlybSgpOwoJCgkkZGVmYXVsdF90YWIgPSAwOwoJaWYgKCBpc19udW1lcmljKCBwYl9iYWNrd
XBidWRkeTo6X0dFVCggJ3RhYicgKSApICkgewoJCSRkZWZhdWx0X3RhYiA9IHBiX2JhY2t1cGJ1ZGR5Ojpf
R0VUKCAndGFiJyApOwoJfQoJCgllY2hvICcnOwoJcGJfYmFja3VwYnVkZHk6OiR1aS0+c3RhcnRfdGFicyg
KCQknZ2V0dGluZ19zdGFydGVkJywKCQlhcnJheSgKCQkJYXJyYXkoCgkJCQkndGl0bGUnCQk9PgkJX18oIC
dTZXJ2ZXInLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCQkJCSdzbHVnJwkJPT4JCSdzZXJ2ZXInLAoJC
QkpLAoJCQlhcnJheSgKCQkJCSd0aXRsZScJCT0+CQlfXyggJ0RhdGFiYXNlJywgJ2l0LWwxMG4tYmFja3Vw
YnVkZHknICksCgkJCQknc2x1ZycJCT0+CQknZGF0YWJhc2UnLAoJCQkpLAoJCQlhcnJheSgKCQkJCSd0aXR
sZScJCT0+CQlfXyggJ1NpdGUgU2l6ZSBNYXBzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkJCQknc2
x1ZycJCT0+CQknZmlsZXMnLAoJCQkpLAoJCQlhcnJheSgKCQkJCSd0aXRsZScJCT0+CQlfXyggJ1dvcmRQc
mVzcyBTY2hlZHVsZXMgKENyb24pJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkJCQknc2x1ZycJCT0+
CQknY3JvbicsCgkJCSksCgkJKSwKCQknd2lkdGg6IDEwMCU7JywKCQl0cnVlLAoJCSRkZWZhdWx0X3RhYgo
JKTsKCQoJCgkKCXBiX2JhY2t1cGJ1ZGR5OjokdWktPnN0YXJ0X3RhYiggJ3NlcnZlcicgKTsKCQkKCQlyZX
F1aXJlX29uY2UoICdzZXJ2ZXJfaW5mby9zZXJ2ZXIucGhwJyApOwoJCQoJCQoJCXJlcXVpcmVfb25jZSggJ
3NlcnZlcl9pbmZvL3Blcm1pc3Npb25zLnBocCcgKTsKCQkKCQkKCQkkd3BfdXBsb2FkX2RpciA9IHdwX3Vw
bG9hZF9kaXIoKTsKCQkkd3Bfc2V0dGluZ3MgPSBhcnJheSgpOwoJCQoJCWlmICggaXNzZXQoICR3cF91cGx
vYWRfZGlyWydwYXRoJ10gKSApIHsKCQkJJHdwX3NldHRpbmdzW10gPSBhcnJheSggJ1VwbG9hZCBGaWxlIF
BhdGgnLCAkd3BfdXBsb2FkX2RpclsncGF0aCddLCAnd3BfdXBsb2FkX2RpcigpJyApOwoJCX0KCQlpZiAoI
Glzc2V0KCAkd3BfdXBsb2FkX2RpclsndXJsJ10gKSApIHsKCQkJJHdwX3NldHRpbmdzW10gPSBhcnJheSgg
J1VwbG9hZCBVUkwnLCAkd3BfdXBsb2FkX2RpclsndXJsJ10sICd3cF91cGxvYWRfZGlyKCknICk7CgkJfQo
JCWlmICggaXNzZXQoICR3cF91cGxvYWRfZGlyWydzdWJkaXInXSApICkgewoJCQkkd3Bfc2V0dGluZ3NbXS
A9IGFycmF5KCAnVXBsb2FkIFN1YmRpcmVjdG9yeScsICR3cF91cGxvYWRfZGlyWydzdWJkaXInXSwgJ3dwX
3VwbG9hZF9kaXIoKScpOwoJCX0KCQlpZiAoIGlzc2V0KCAkd3BfdXBsb2FkX2RpclsnYmFzZXVybCddICkg
KSB7CgkJCSR3cF9zZXR0aW5nc1tdID0gYXJyYXkoICdVcGxvYWQgQmFzZSBVUkwnLCAkd3BfdXBsb2FkX2R
pclsnYmFzZXVybCddLCAnd3BfdXBsb2FkX2RpcigpJyApOwoJCX0KCQlpZiAoIGlzc2V0KCAkd3BfdXBsb2
FkX2RpclsnYmFzZWRpciddICkgKSB7CgkJCSR3cF9zZXR0aW5nc1tdID0gYXJyYXkoICdVcGxvYWQgQmFzZ
SBEaXJlY3RvcnknLCAkd3BfdXBsb2FkX2RpclsnYmFzZWRpciddLCAnd3BfdXBsb2FkX2RpcigpJyApOwoJ
CX0KCQkkd3Bfc2V0dGluZ3NbXSA9IGFycmF5KCAnU2l0ZSBVUkwnLCBzaXRlX3VybCgpLCAnc2l0ZV91cmw
oKScgKTsKCQkkd3Bfc2V0dGluZ3NbXSA9IGFycmF5KCAnSG9tZSBVUkwnLCBob21lX3VybCgpLCAnaG9tZV
91cmwoKScgKTsKCQkkd3Bfc2V0dGluZ3NbXSA9IGFycmF5KCAnV29yZFByZXNzIFJvb3QgUGF0aCcsIEFCU
1BBVEgsICdBQlNQQVRIJyApOwoJCQoJCS8vIE11bHRpc2l0ZSBleHRyYXM6CgkJJHdwX3NldHRpbmdzX211
bHRpc2l0ZSA9IGFycmF5KCk7CgkJaWYgKCBpc19tdWx0aXNpdGUoKSApIHsKCQkJJHdwX3NldHRpbmdzW10
gPSBhcnJheSggJ05ldHdvcmsgU2l0ZSBVUkwnLCBuZXR3b3JrX3NpdGVfdXJsKCksICduZXR3b3JrX3NpdG
VfdXJsKCknICk7CgkJCSR3cF9zZXR0aW5nc1tdID0gYXJyYXkoICdOZXR3b3JrIEhvbWUgVVJMJywgbmV0d
29ya19ob21lX3VybCgpLCAnbmV0d29ya19ob21lX3VybCgpJyApOwoJCX0KCQkKCQkkd3Bfc2V0dGluZ3Nb
XSA9IGFycmF5KCAnQmFja3VwQnVkZHkgbG9jYWwgc3RvcmFnZScsIGJhY2t1cGJ1ZGR5X2NvcmU6OmdldEJ
hY2t1cERpcmVjdG9yeSgpLCAnQmFja3VwQnVkZHkgU2V0dGluZ3MnICk7CgkJJHdwX3NldHRpbmdzW10gPS
BhcnJheSggJ0JhY2t1cEJ1ZGR5IHRlbXBvcmFyeSBmaWxlcycsIGJhY2t1cGJ1ZGR5X2NvcmU6OmdldFRlb
XBEaXJlY3RvcnkoKSwgJ1VwbG9hZCBCYXNlICsgQmFja3VwQnVkZHknICk7CgkJJHdwX3NldHRpbmdzW10g
PSBhcnJheSggJ0JhY2t1cEJ1ZGR5IGxvZ3MnLCBiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3Rvcnk
oKSwgJ1VwbG9hZCBCYXNlICsgQmFja3VwQnVkZHknICk7CgkJCgkJLy8gRGlzcGxheSBXUCBzZXR0aW5ncy
4uCgkJcGJfYmFja3VwYnVkZHk6OiR1aS0+bGlzdF90YWJsZSgKCQkJJHdwX3NldHRpbmdzLAoJCQlhcnJhe
SgKCQkJCSdhY3Rpb24nCQkJCQk9PglwYl9iYWNrdXBidWRkeTo6cGFnZV91cmwoKSwKCQkJCSdjb2x1bW5z
JwkJCQkJPT4JYXJyYXkoCgkJCQkJCQkJCQkJCQlfXyggJ1VSTHMgJiBQYXRocycsICdpdC1sMTBuLWJhY2t
1cGJ1ZGR5JyApLAoJCQkJCQkJCQkJCQkJX18oICdWYWx1ZScsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLA
oJCQkJCQkJCQkJCQkJX18oICdPYnRhaW5lZCB2aWEnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCQkJC
QkJCQkJCQkJKSwKCQkJCSdjc3MnCQkJCQkJPT4JCSd3aWR0aDogMTAwJTsnLAoJCQkpCgkJKTsKCQkKCQkK
CXBiX2JhY2t1cGJ1ZGR5OjokdWktPmVuZF90YWIoKTsKCQoJCgkKCS8vIFRoaXMgcGFnZSBjYW4gdGFrZSB
hIGJpdCB0byBydW4uCgkvLyBSdW5zIEFGVEVSIHNlcnZlciBpbmZvcm1hdGlvbiBpcyBkaXNwbGF5ZWQgc2
8gd2UgY2FuIHZpZXcgdGhlIGRlZmF1bHQgbGltaXRzIGZvciB0aGUgc2VydmVyLgoJcGJfYmFja3VwYnVkZ
Hk6OnNldF9ncmVlZHlfc2NyaXB0X2xpbWl0cygpOwoJCgkKCQoJcGJfYmFja3VwYnVkZHk6OiR1aS0+c3Rh
cnRfdGFiKCAnZGF0YWJhc2UnICk7CgkJCgkJcmVxdWlyZV9vbmNlKCAnc2VydmVyX2luZm8vZGF0YWJhc2U
ucGhwJyApOwoJCWVjaG8gJzxicj48YnI+PGEgbmFtZT0iZGF0YWJhc2VfcmVwbGFjZSI+PC9hPic7CgkJZW
NobyAnPGRpdiBjbGFzcz0icGJfaHRpdGxlIj4nIC4gJ0FkdmFuY2VkOiAnIC4gX18oICdEYXRhYmFzZSBNY
XNzIFRleHQgUmVwbGFjZW1lbnQnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICc8L2Rpdj48YnI+JzsK
CQlwYl9iYWNrdXBidWRkeTo6bG9hZF92aWV3KCAnX3NlcnZlcl90b29scy1kYXRhYmFzZV9yZXBsYWNlJyA
pOwoJCQoJcGJfYmFja3VwYnVkZHk6OiR1aS0+ZW5kX3RhYigpOwoJCgkKCQoJcGJfYmFja3VwYnVkZHk6Oi
R1aS0+c3RhcnRfdGFiKCAnZmlsZXMnICk7CgkJCgkJcmVxdWlyZV9vbmNlKCAnc2VydmVyX2luZm8vc2l0Z
V9zaXplLnBocCcgKTsKCQkKCXBiX2JhY2t1cGJ1ZGR5OjokdWktPmVuZF90YWIoKTsKCQoJCgkKCXBiX2Jh
Y2t1cGJ1ZGR5OjokdWktPnN0YXJ0X3RhYiggJ2Nyb24nICk7CgkJCgkJcmVxdWlyZV9vbmNlKCAnc2VydmV
yX2luZm8vY3Jvbi5waHAnICk7CgkJCglwYl9iYWNrdXBidWRkeTo6JHVpLT5lbmRfdGFiKCk7CgkKCQoJZW
NobyAnPGJyIHN0eWxlPSJjbGVhcjogYm90aDsiPjxicj48YnI+JzsKCXBiX2JhY2t1cGJ1ZGR5OjokdWktP
mVuZF90YWJzKCk7CgkKCQoJCgkvLyBIYW5kbGVzIHRoaWNrYm94IGF1dG8tcmVzaXppbmcuIEtlZXAgYXQg
Ym90dG9tIG9mIHBhZ2UgdG8gYXZvaWQgaXNzdWVzLgoJaWYgKCAhd3Bfc2NyaXB0X2lzKCAnbWVkaWEtdXB
sb2FkJyApICkgewoJCXdwX2VucXVldWVfc2NyaXB0KCAnbWVkaWEtdXBsb2FkJyApOwoJCXdwX3ByaW50X3
NjcmlwdHMoICdtZWRpYS11cGxvYWQnICk7Cgl9CgkKfSBlbHNlIHsgLy8gSU5TSURFIElNUE9SVEJVRERZO
goJaWYgKCBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3NraXBfc2VydmVyaW5mbycgKSA9PSAnJyApIHsgLy8g
R2l2ZSBhIHdvcmthcm91bmQgdG8gc2tpcCB0aGlzLgoJCXJlcXVpcmVfb25jZSggJ3NlcnZlcl9pbmZvL3N
lcnZlci5waHAnICk7Cgl9IGVsc2UgewoJCWVjaG8gJ3tTa2lwcGluZyBTZXJ2ZXIgSW5mby4gc2VjdGlvbi
BiYXNlZCBvbiBxdWVyeXN0cmluZy59JzsKCX0KfQo=
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/pages/server_tools.php,i
mportbuddy/controllers/pages/server_tools.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/controllers/pages/serverinfo.php,i
mportbuddy/controllers/pages/serverinfo.php
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSB8fCAoIHRydWUgIT09IFBCX0lNUE9
SVEJVRERZICkgKSB7CglkaWUoICc8aHRtbD48L2h0bWw+JyApOwp9CkF1dGg6OnJlcXVpcmVfYXV0aGVudG
ljYXRpb24oKTsgLy8gRGllIGlmIG5vdCBsb2dnZWQgaW4uCgpyZXF1aXJlX29uY2UoIEFCU1BBVEggLidpb
XBvcnRidWRkeS92aWV3cy9faGVhZGVyLnBocCcgKTsKPz4KPHNjcmlwdD5qUXVlcnkoICcjcGFnZVRpdGxl
JyApLmh0bWwoICdTZXJ2ZXIgSW5mb3JtYXRpb24nICk7PC9zY3JpcHQ+Cgo8ZGl2IGNsYXNzPSJ3cmFwIj4
KCTw/cGhwCglnbG9iYWwgJGRldGVjdGVkX21heF9leGVjdXRpb25fdGltZTsKCXJlcXVpcmVfb25jZSggJ3
NlcnZlcl90b29scy5waHAnICk7Cgk/Pgo8L2Rpdj4KCjw/cGhwCnJlcXVpcmVfb25jZSggQUJTUEFUSCAuJ
2ltcG9ydGJ1ZGR5L3ZpZXdzL19mb290ZXIucGhwJyApOw==
###PACKDATA,FILE_END,/_importbuddy/importbuddy/controllers/pages/serverinfo.php,imp
ortbuddy/controllers/pages/serverinfo.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/lib/pclzip/index.php,importbuddy/l
ib/pclzip/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/_importbuddy/importbuddy/lib/pclzip/index.php,importbuddy/lib
/pclzip/index.php
###PACKDATA,FILE_START,/_importbuddy/importbuddy/lib/pclzip/pclzip.php,importbuddy/
lib/pclzip/pclzip.php
PD9waHAKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gUGhwQ29uY2VwdCBMaWJyYXJ5IC0gWmlwIE1vZHVsZS
AyLjguMgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBMaWNlbnNlIEdOVS9MR1BMIC0gVmluY2VudCBCbGF2
ZXQgLSBBdWd1c3QgMjAwOQovLyBodHRwOi8vd3d3LnBocGNvbmNlcHQubmV0Ci8vIC0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tCi8vCi8vIFByZXNlbnRhdGlvbiA6Ci8vICAgUGNsWmlwIGlzIGEgUEhQIGxpYnJhcnkgdGhhdCBtY
W5hZ2UgWklQIGFyY2hpdmVzLgovLyAgIFNvIGZhciB0ZXN0cyBzaG93IHRoYXQgYXJjaGl2ZXMgZ2VuZXJh
dGVkIGJ5IFBjbFppcCBhcmUgcmVhZGFibGUgYnkKLy8gICBXaW5aaXAgYXBwbGljYXRpb24gYW5kIG90aGV
yIHRvb2xzLgovLwovLyBEZXNjcmlwdGlvbiA6Ci8vICAgU2VlIHJlYWRtZS50eHQgYW5kIGh0dHA6Ly93d3
cucGhwY29uY2VwdC5uZXQKLy8KLy8gV2FybmluZyA6Ci8vICAgVGhpcyBsaWJyYXJ5IGFuZCB0aGUgYXNzb
2NpYXRlZCBmaWxlcyBhcmUgbm9uIGNvbW1lcmNpYWwsIG5vbiBwcm9mZXNzaW9uYWwKLy8gICB3b3JrLgov
LyAgIEl0IHNob3VsZCBub3QgaGF2ZSB1bmV4cGVjdGVkIHJlc3VsdHMuIEhvd2V2ZXIgaWYgYW55IGRhbWF
nZSBpcyBjYXVzZWQgYnkKLy8gICB0aGlzIHNvZnR3YXJlIHRoZSBhdXRob3IgY2FuIG5vdCBiZSByZXNwb2
5zaWJsZS4KLy8gICBUaGUgdXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgYXQgdGhlIHJpc2sgb2YgdGhlIHVzZ
XIuCi8vCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vICRJZDogcGNsemlwLmxpYi5waHAsdiAxLjYwIDIwMDk
vMDkvMzAgMjE6MDE6MDQgdmJsYXZldCBFeHAgJAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tL
SBDb25zdGFudHMKICBpZiAoIWRlZmluZWQoJ1BDTFpJUF9SRUFEX0JMT0NLX1NJWkUnKSkgewogICAgZGVm
aW5lKCAnUENMWklQX1JFQURfQkxPQ0tfU0laRScsIDIwNDggKTsKICB9CgogIC8vIC0tLS0tIEZpbGUgbGl
zdCBzZXBhcmF0b3IKICAvLyBJbiB2ZXJzaW9uIDEueCBvZiBQY2xaaXAsIHRoZSBzZXBhcmF0b3IgZm9yIG
ZpbGUgbGlzdCBpcyBhIHNwYWNlCiAgLy8gKHdoaWNoIGlzIG5vdCBhIHZlcnkgc21hcnQgY2hvaWNlLCBzc
GVjaWZpY2FsbHkgZm9yIHdpbmRvd3MgcGF0aHMgISkuCiAgLy8gQSBiZXR0ZXIgc2VwYXJhdG9yIHNob3Vs
ZCBiZSBhIGNvbW1hICgsKS4gVGhpcyBjb25zdGFudCBnaXZlcyB5b3UgdGhlCiAgLy8gYWJpbHR5IHRvIGN
oYW5nZSB0aGF0LgogIC8vIEhvd2V2ZXIgbm90aWNlIHRoYXQgY2hhbmdpbmcgdGhpcyB2YWx1ZSwgbWF5IG
hhdmUgaW1wYWN0IG9uIGV4aXN0aW5nCiAgLy8gc2NyaXB0cywgdXNpbmcgc3BhY2Ugc2VwYXJhdGVkIGZpb
GVuYW1lcy4KICAvLyBSZWNvbW1hbmRlZCB2YWx1ZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2
ZXJzaW9ucyA6CiAgLy9kZWZpbmUoICdQQ0xaSVBfU0VQQVJBVE9SJywgJyAnICk7CiAgLy8gUmVjb21tYW5
kZWQgdmFsdWVzIGZvciBzbWFydCBzZXBhcmF0aW9uIG9mIGZpbGVuYW1lcy4KICBpZiAoIWRlZmluZWQoJ1
BDTFpJUF9TRVBBUkFUT1InKSkgewogICAgZGVmaW5lKCAnUENMWklQX1NFUEFSQVRPUicsICcsJyApOwogI
H0KCiAgLy8gLS0tLS0gRXJyb3IgY29uZmlndXJhdGlvbgogIC8vIDAgOiBQY2xaaXAgQ2xhc3MgaW50ZWdy
YXRlZCBlcnJvciBoYW5kbGluZwogIC8vIDEgOiBQY2xFcnJvciBleHRlcm5hbCBsaWJyYXJ5IGVycm9yIGh
hbmRsaW5nLiBCeSBlbmFibGluZyB0aGlzCiAgLy8gICAgIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHlvdSBoYX
ZlIGluY2x1ZGVkIFBjbEVycm9yIGxpYnJhcnkuCiAgLy8gWzIsLi4uXSA6IHJlc2VydmVkIGZvciBmdXR1c
iB1c2UKICBpZiAoIWRlZmluZWQoJ1BDTFpJUF9FUlJPUl9FWFRFUk5BTCcpKSB7CiAgICBkZWZpbmUoICdQ
Q0xaSVBfRVJST1JfRVhURVJOQUwnLCAwICk7CiAgfQoKICAvLyAtLS0tLSBPcHRpb25hbCBzdGF0aWMgdGV
tcG9yYXJ5IGRpcmVjdG9yeQogIC8vICAgICAgIEJ5IGRlZmF1bHQgdGVtcG9yYXJ5IGZpbGVzIGFyZSBnZW
5lcmF0ZWQgaW4gdGhlIHNjcmlwdCBjdXJyZW50CiAgLy8gICAgICAgcGF0aC4KICAvLyAgICAgICBJZiBkZ
WZpbmVkIDoKICAvLyAgICAgICAtIE1VU1QgQkUgdGVybWluYXRlZCBieSBhICcvJy4KICAvLyAgICAgICAt
IE1VU1QgYmUgYSB2YWxpZCwgYWxyZWFkeSBjcmVhdGVkIGRpcmVjdG9yeQogIC8vICAgICAgIFNhbXBsZXM
gOgogIC8vIGRlZmluZSggJ1BDTFpJUF9URU1QT1JBUllfRElSJywgJy90ZW1wLycgKTsKICAvLyBkZWZpbm
UoICdQQ0xaSVBfVEVNUE9SQVJZX0RJUicsICdDOi9UZW1wLycgKTsKICBpZiAoIWRlZmluZWQoJ1BDTFpJU
F9URU1QT1JBUllfRElSJykpIHsKICAgIGRlZmluZSggJ1BDTFpJUF9URU1QT1JBUllfRElSJywgJycgKTsK
ICB9CgogIC8vIC0tLS0tIE9wdGlvbmFsIHRocmVzaG9sZCByYXRpbyBmb3IgdXNlIG9mIHRlbXBvcmFyeSB
maWxlcwogIC8vICAgICAgIFBjbHppcCBzZW5zZSB0aGUgc2l6ZSBvZiB0aGUgZmlsZSB0byBhZGQvZXh0cm
FjdCBhbmQgZGVjaWRlIHRvCiAgLy8gICAgICAgdXNlIG9yIG5vdCB0ZW1wb3JhcnkgZmlsZS4gVGhlIGFsZ
29yeXRobSBpcyBsb29raW5nIGZvcgogIC8vICAgICAgIG1lbW9yeV9saW1pdCBvZiBQSFAgYW5kIGFwcGx5
IGEgcmF0aW8uCiAgLy8gICAgICAgdGhyZXNob2xkID0gbWVtb3J5X2xpbWl0ICogcmF0aW8uCiAgLy8gICA
gICAgUmVjb21tZW5kZWQgdmFsdWVzIGFyZSB1bmRlciAwLjUuIERlZmF1bHQgMC40Ny4KICAvLyAgICAgIC
BTYW1wbGVzIDoKICAvLyBkZWZpbmUoICdQQ0xaSVBfVEVNUE9SQVJZX0ZJTEVfUkFUSU8nLCAwLjUgKTsKI
CBpZiAoIWRlZmluZWQoJ1BDTFpJUF9URU1QT1JBUllfRklMRV9SQVRJTycpKSB7CiAgICBkZWZpbmUoICdQ
Q0xaSVBfVEVNUE9SQVJZX0ZJTEVfUkFUSU8nLCAwLjQ3ICk7CiAgfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0KLy8gKioqKiogVU5ERVIgVEhJUyBMSU5FIE5PVEhJTkcgTkVFRFMgVE8gQkUgTU9ESUZJRUQgKioqKioKL
y8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0gR2xvYmFsIHZhcmlhYmxlcwogICRnX3BjbHppcF9
2ZXJzaW9uID0gIjIuOC4yIjsKCiAgLy8gLS0tLS0gRXJyb3IgY29kZXMKICAvLyAgIC0xIDogVW5hYmxlIH
RvIG9wZW4gZmlsZSBpbiBiaW5hcnkgd3JpdGUgbW9kZQogIC8vICAgLTIgOiBVbmFibGUgdG8gb3BlbiBma
WxlIGluIGJpbmFyeSByZWFkIG1vZGUKICAvLyAgIC0zIDogSW52YWxpZCBwYXJhbWV0ZXJzCiAgLy8gICAt
NCA6IEZpbGUgZG9lcyBub3QgZXhpc3QKICAvLyAgIC01IDogRmlsZW5hbWUgaXMgdG9vIGxvbmcgKG1heC4
gMjU1KQogIC8vICAgLTYgOiBOb3QgYSB2YWxpZCB6aXAgZmlsZQogIC8vICAgLTcgOiBJbnZhbGlkIGV4dH
JhY3RlZCBmaWxlIHNpemUKICAvLyAgIC04IDogVW5hYmxlIHRvIGNyZWF0ZSBkaXJlY3RvcnkKICAvLyAgI
C05IDogSW52YWxpZCBhcmNoaXZlIGV4dGVuc2lvbgogIC8vICAtMTAgOiBJbnZhbGlkIGFyY2hpdmUgZm9y
bWF0CiAgLy8gIC0xMSA6IFVuYWJsZSB0byBkZWxldGUgZmlsZSAodW5saW5rKQogIC8vICAtMTIgOiBVbmF
ibGUgdG8gcmVuYW1lIGZpbGUgKHJlbmFtZSkKICAvLyAgLTEzIDogSW52YWxpZCBoZWFkZXIgY2hlY2tzdW
0KICAvLyAgLTE0IDogSW52YWxpZCBhcmNoaXZlIHNpemUKICBkZWZpbmUoICdQQ0xaSVBfRVJSX1VTRVJfQ
UJPUlRFRCcsIDIgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJSX05PX0VSUk9SJywgMCApOwogIGRlZmluZSgg
J1BDTFpJUF9FUlJfV1JJVEVfT1BFTl9GQUlMJywgLTEgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJSX1JFQUR
fT1BFTl9GQUlMJywgLTIgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVEVSJywgLT
MgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJSX01JU1NJTkdfRklMRScsIC00ICk7CiAgZGVmaW5lKCAnUENMW
klQX0VSUl9GSUxFTkFNRV9UT09fTE9ORycsIC01ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9JTlZBTElE
X1pJUCcsIC02ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9CQURfRVhUUkFDVEVEX0ZJTEUnLCAtNyApOwo
gIGRlZmluZSggJ1BDTFpJUF9FUlJfRElSX0NSRUFURV9GQUlMJywgLTggKTsKICBkZWZpbmUoICdQQ0xaSV
BfRVJSX0JBRF9FWFRFTlNJT04nLCAtOSApOwogIGRlZmluZSggJ1BDTFpJUF9FUlJfQkFEX0ZPUk1BVCcsI
C0xMCApOwogIGRlZmluZSggJ1BDTFpJUF9FUlJfREVMRVRFX0ZJTEVfRkFJTCcsIC0xMSApOwogIGRlZmlu
ZSggJ1BDTFpJUF9FUlJfUkVOQU1FX0ZJTEVfRkFJTCcsIC0xMiApOwogIGRlZmluZSggJ1BDTFpJUF9FUlJ
fQkFEX0NIRUNLU1VNJywgLTEzICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9JTlZBTElEX0FSQ0hJVkVfWk
lQJywgLTE0ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9NSVNTSU5HX09QVElPTl9WQUxVRScsIC0xNSApO
wogIGRlZmluZSggJ1BDTFpJUF9FUlJfSU5WQUxJRF9PUFRJT05fVkFMVUUnLCAtMTYgKTsKICBkZWZpbmUo
ICdQQ0xaSVBfRVJSX0FMUkVBRFlfQV9ESVJFQ1RPUlknLCAtMTcgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJ
SX1VOU1VQUE9SVEVEX0NPTVBSRVNTSU9OJywgLTE4ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9VTlNVUF
BPUlRFRF9FTkNSWVBUSU9OJywgLTE5ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9JTlZBTElEX0FUVFJJQ
lVURV9WQUxVRScsIC0yMCApOwogIGRlZmluZSggJ1BDTFpJUF9FUlJfRElSRUNUT1JZX1JFU1RSSUNUSU9O
JywgLTIxICk7CgogIC8vIC0tLS0tIE9wdGlvbnMgdmFsdWVzCiAgZGVmaW5lKCAnUENMWklQX09QVF9QQVR
IJywgNzcwMDEgKTsKICBkZWZpbmUoICdQQ0xaSVBfT1BUX0FERF9QQVRIJywgNzcwMDIgKTsKICBkZWZpbm
UoICdQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIJywgNzcwMDMgKTsKICBkZWZpbmUoICdQQ0xaSVBfT1BUX1JFT
U9WRV9BTExfUEFUSCcsIDc3MDA0ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9TRVRfQ0hNT0QnLCA3NzAw
NSApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfRVhUUkFDVF9BU19TVFJJTkcnLCA3NzAwNiApOwogIGRlZml
uZSggJ1BDTFpJUF9PUFRfTk9fQ09NUFJFU1NJT04nLCA3NzAwNyApOwogIGRlZmluZSggJ1BDTFpJUF9PUF
RfQllfTkFNRScsIDc3MDA4ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9CWV9JTkRFWCcsIDc3MDA5ICk7C
iAgZGVmaW5lKCAnUENMWklQX09QVF9CWV9FUkVHJywgNzcwMTAgKTsKICBkZWZpbmUoICdQQ0xaSVBfT1BU
X0JZX1BSRUcnLCA3NzAxMSApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfQ09NTUVOVCcsIDc3MDEyICk7CiA
gZGVmaW5lKCAnUENMWklQX09QVF9BRERfQ09NTUVOVCcsIDc3MDEzICk7CiAgZGVmaW5lKCAnUENMWklQX0
9QVF9QUkVQRU5EX0NPTU1FTlQnLCA3NzAxNCApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfRVhUUkFDVF9JT
l9PVVRQVVQnLCA3NzAxNSApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfUkVQTEFDRV9ORVdFUicsIDc3MDE2
ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9TVE9QX09OX0VSUk9SJywgNzcwMTcgKTsKICAvLyBIYXZpbmc
gYmlnIHRyb3VibGUgd2l0aCBjcnlwdC4gTmVlZCB0byBtdWx0aXBseSAyIGxvbmcgaW50CiAgLy8gd2hpY2
ggaXMgbm90IGNvcnJlY3RseSBzdXBwb3J0ZWQgYnkgUEhQIC4uLgogIC8vZGVmaW5lKCAnUENMWklQX09QV
F9DUllQVCcsIDc3MDE4ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9FWFRSQUNUX0RJUl9SRVNUUklDVElP
TicsIDc3MDE5ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEJywgNzcwMjA
gKTsKICBkZWZpbmUoICdQQ0xaSVBfT1BUX0FERF9URU1QX0ZJTEVfVEhSRVNIT0xEJywgNzcwMjAgKTsgLy
8gYWxpYXMKICBkZWZpbmUoICdQQ0xaSVBfT1BUX1RFTVBfRklMRV9PTicsIDc3MDIxICk7CiAgZGVmaW5lK
CAnUENMWklQX09QVF9BRERfVEVNUF9GSUxFX09OJywgNzcwMjEgKTsgLy8gYWxpYXMKICBkZWZpbmUoICdQ
Q0xaSVBfT1BUX1RFTVBfRklMRV9PRkYnLCA3NzAyMiApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfQUREX1R
FTVBfRklMRV9PRkYnLCA3NzAyMiApOyAvLyBhbGlhcwoKICAvLyAtLS0tLSBGaWxlIGRlc2NyaXB0aW9uIG
F0dHJpYnV0ZXMKICBkZWZpbmUoICdQQ0xaSVBfQVRUX0ZJTEVfTkFNRScsIDc5MDAxICk7CiAgZGVmaW5lK
CAnUENMWklQX0FUVF9GSUxFX05FV19TSE9SVF9OQU1FJywgNzkwMDIgKTsKICBkZWZpbmUoICdQQ0xaSVBf
QVRUX0ZJTEVfTkVXX0ZVTExfTkFNRScsIDc5MDAzICk7CiAgZGVmaW5lKCAnUENMWklQX0FUVF9GSUxFX01
USU1FJywgNzkwMDQgKTsKICBkZWZpbmUoICdQQ0xaSVBfQVRUX0ZJTEVfQ09OVEVOVCcsIDc5MDA1ICk7Ci
AgZGVmaW5lKCAnUENMWklQX0FUVF9GSUxFX0NPTU1FTlQnLCA3OTAwNiApOwoKICAvLyAtLS0tLSBDYWxsI
GJhY2tzIHZhbHVlcwogIGRlZmluZSggJ1BDTFpJUF9DQl9QUkVfRVhUUkFDVCcsIDc4MDAxICk7CiAgZGVm
aW5lKCAnUENMWklQX0NCX1BPU1RfRVhUUkFDVCcsIDc4MDAyICk7CiAgZGVmaW5lKCAnUENMWklQX0NCX1B
SRV9BREQnLCA3ODAwMyApOwogIGRlZmluZSggJ1BDTFpJUF9DQl9QT1NUX0FERCcsIDc4MDA0ICk7CiAgLy
ogRm9yIGZ1dHVyIHVzZQogIGRlZmluZSggJ1BDTFpJUF9DQl9QUkVfTElTVCcsIDc4MDA1ICk7CiAgZGVma
W5lKCAnUENMWklQX0NCX1BPU1RfTElTVCcsIDc4MDA2ICk7CiAgZGVmaW5lKCAnUENMWklQX0NCX1BSRV9E
RUxFVEUnLCA3ODAwNyApOwogIGRlZmluZSggJ1BDTFpJUF9DQl9QT1NUX0RFTEVURScsIDc4MDA4ICk7CiA
gKi8KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBDbGFzcyA6IFBjbFppcAogIC8vIERlc2NyaXB0a
W9uIDoKICAvLyAgIFBjbFppcCBpcyB0aGUgY2xhc3MgdGhhdCByZXByZXNlbnQgYSBaaXAgYXJjaGl2ZS4K
ICAvLyAgIFRoZSBwdWJsaWMgbWV0aG9kcyBhbGx
vdyB0aGUgbWFuaXB1bGF0aW9uIG9mIHRoZSBhcmNoaXZlLgogIC8vIEF0dHJpYnV0ZXMgOgogIC8vICAgQX
R0cmlidXRlcyBtdXN0IG5vdCBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KICAvLyBNZXRob2RzIDoKICAvLyAgI
FBjbFppcCgpIDogT2JqZWN0IGNyZWF0b3IKICAvLyAgIGNyZWF0ZSgpIDogQ3JlYXRlcyB0aGUgWmlwIGFy
Y2hpdmUKICAvLyAgIGxpc3RDb250ZW50KCkgOiBMaXN0IHRoZSBjb250ZW50IG9mIHRoZSBaaXAgYXJjaGl
2ZQogIC8vICAgZXh0cmFjdCgpIDogRXh0cmFjdCB0aGUgY29udGVudCBvZiB0aGUgYXJjaGl2ZQogIC8vIC
AgcHJvcGVydGllcygpIDogTGlzdCB0aGUgcHJvcGVydGllcyBvZiB0aGUgYXJjaGl2ZQogIC8vIC0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAgY2xhc3MgUGNsWmlwCiAgewogICAgLy8gLS0tLS0gRmlsZW5hbWUgb2YgdGhlIHp
pcCBmaWxlCiAgICB2YXIgJHppcG5hbWUgPSAnJzsKCiAgICAvLyAtLS0tLSBGaWxlIGRlc2NyaXB0b3Igb2
YgdGhlIHppcCBmaWxlCiAgICB2YXIgJHppcF9mZCA9IDA7CgogICAgLy8gLS0tLS0gSW50ZXJuYWwgZXJyb
3IgaGFuZGxpbmcKICAgIHZhciAkZXJyb3JfY29kZSA9IDE7CiAgICB2YXIgJGVycm9yX3N0cmluZyA9ICcn
OwoKICAgIC8vIC0tLS0tIEN1cnJlbnQgc3RhdHVzIG9mIHRoZSBtYWdpY19xdW90ZXNfcnVudGltZQogICA
gLy8gVGhpcyB2YWx1ZSBzdG9yZSB0aGUgcGhwIGNvbmZpZ3VyYXRpb24gZm9yIG1hZ2ljX3F1b3RlcwogIC
AgLy8gVGhlIGNsYXNzIGNhbiB0aGVuIGRpc2FibGUgdGhlIG1hZ2ljX3F1b3RlcyBhbmQgcmVzZXQgaXQgY
WZ0ZXIKICAgIHZhciAkbWFnaWNfcXVvdGVzX3N0YXR1czsKICAgIAogIGZ1bmN0aW9uIF9fY29uc3RydWN0
KCRwX3ppcG5hbWUpIHsKICAgIHJldHVybiAkdGhpcy0+UGNsWmlwKCRwX3ppcG5hbWUpOwogIH0KCiAgLy8
gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IFBjbFppcCgpCiAgLy8gRGVzY3JpcHRpb24gO
gogIC8vICAgQ3JlYXRlcyBhIFBjbFppcCBvYmplY3QgYW5kIHNldCB0aGUgbmFtZSBvZiB0aGUgYXNzb2Np
YXRlZCBaaXAgYXJjaGl2ZQogIC8vICAgZmlsZW5hbWUuCiAgLy8gICBOb3RlIHRoYXQgbm8gcmVhbCBhY3R
pb24gaXMgdGFrZW4sIGlmIHRoZSBhcmNoaXZlIGRvZXMgbm90IGV4aXN0IGl0IGlzIG5vdAogIC8vICAgY3
JlYXRlZC4gVXNlIGNyZWF0ZSgpIGZvciB0aGF0LgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rp
b24gUGNsWmlwKCRwX3ppcG5hbWUpCiAgewoKICAgIC8vIC0tLS0tIFRlc3RzIHRoZSB6bGliCiAgICBpZiA
oIWZ1bmN0aW9uX2V4aXN0cygnZ3pvcGVuJykpCiAgICB7CiAgICAgIGRpZSgnQWJvcnQgJy5iYXNlbmFtZS
hfX0ZJTEVfXykuJyA6IE1pc3NpbmcgemxpYiBleHRlbnNpb25zJyk7CiAgICB9CgogICAgLy8gLS0tLS0gU
2V0IHRoZSBhdHRyaWJ1dGVzCiAgICAkdGhpcy0+emlwbmFtZSA9ICRwX3ppcG5hbWU7CiAgICAkdGhpcy0+
emlwX2ZkID0gMDsKICAgICR0aGlzLT5tYWdpY19xdW90ZXNfc3RhdHVzID0gLTE7CgogICAgLy8gLS0tLS0
gUmV0dXJuCiAgICByZXR1cm47CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOgogIC8vICAgY3JlYXRlKCRwX2ZpbGVsaXN0LCAkcF9hZGRfZGl
yPSIiLCAkcF9yZW1vdmVfZGlyPSIiKQogIC8vICAgY3JlYXRlKCRwX2ZpbGVsaXN0LCAkcF9vcHRpb24sIC
RwX29wdGlvbl92YWx1ZSwgLi4uKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRoaXMgbWV0aG9kIHN1c
HBvcnRzIHR3byBkaWZmZXJlbnQgc3lub3BzaXMuIFRoZSBmaXJzdCBvbmUgaXMgaGlzdG9yaWNhbC4KICAv
LyAgIFRoaXMgbWV0aG9kIGNyZWF0ZXMgYSBaaXAgQXJjaGl2ZS4gVGhlIFppcCBmaWxlIGlzIGNyZWF0ZWQ
gaW4gdGhlCiAgLy8gICBmaWxlc3lzdGVtLiBUaGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluZGljYXRlZC
BpbiAkcF9maWxlbGlzdAogIC8vICAgYXJlIGFkZGVkIGluIHRoZSBhcmNoaXZlLiBTZWUgdGhlIHBhcmFtZ
XRlcnMgZGVzY3JpcHRpb24gZm9yIHRoZQogIC8vICAgc3VwcG9ydGVkIGZvcm1hdCBvZiAkcF9maWxlbGlz
dC4KICAvLyAgIFdoZW4gYSBkaXJlY3RvcnkgaXMgaW4gdGhlIGxpc3QsIHRoZSBkaXJlY3RvcnkgYW5kIGl
0cyBjb250ZW50IGlzIGFkZGVkCiAgLy8gICBpbiB0aGUgYXJjaGl2ZS4KICAvLyAgIEluIHRoaXMgc3lub3
BzaXMsIHRoZSBmdW5jdGlvbiB0YWtlcyBhbiBvcHRpb25hbCB2YXJpYWJsZSBsaXN0IG9mCiAgLy8gICBvc
HRpb25zLiBTZWUgYmVsbG93IHRoZSBzdXBwb3J0ZWQgb3B0aW9ucy4KICAvLyBQYXJhbWV0ZXJzIDoKICAv
LyAgICRwX2ZpbGVsaXN0IDogQW4gYXJyYXkgY29udGFpbmluZyBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcyw
gb3IKICAvLyAgICAgICAgICAgICAgICAgYSBzdHJpbmcgY29udGFpbmluZyBvbmUgZmlsZW5hbWUgb3Igb2
5lIGRpcmVjdG9yeSBuYW1lLCBvcgogIC8vICAgICAgICAgICAgICAgICBhIHN0cmluZyBjb250YWluaW5nI
GEgbGlzdCBvZiBmaWxlbmFtZXMgYW5kL29yIGRpcmVjdG9yeQogIC8vICAgICAgICAgICAgICAgICBuYW1l
cyBzZXBhcmF0ZWQgYnkgc3BhY2VzLgogIC8vICAgJHBfYWRkX2RpciA6IEEgcGF0aCB0byBhZGQgYmVmb3J
lIHRoZSByZWFsIHBhdGggb2YgdGhlIGFyY2hpdmVkIGZpbGUsCiAgLy8gICAgICAgICAgICAgICAgaW4gb3
JkZXIgdG8gaGF2ZSBpdCBtZW1vcml6ZWQgaW4gdGhlIGFyY2hpdmUuCiAgLy8gICAkcF9yZW1vdmVfZGlyI
DogQSBwYXRoIHRvIHJlbW92ZSBmcm9tIHRoZSByZWFsIHBhdGggb2YgdGhlIGZpbGUgdG8gYXJjaGl2ZSwK
ICAvLyAgICAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBoYXZlIGEgc2hvcnRlciBwYXRoIG1lbW9yaXp
lZCBpbiB0aGUgYXJjaGl2ZS4KICAvLyAgICAgICAgICAgICAgICAgICBXaGVuICRwX2FkZF9kaXIgYW5kIC
RwX3JlbW92ZV9kaXIgYXJlIHNldCwgJHBfcmVtb3ZlX2RpcgogIC8vICAgICAgICAgICAgICAgICAgIGlzI
HJlbW92ZWQgZmlyc3QsIGJlZm9yZSAkcF9hZGRfZGlyIGlzIGFkZGVkLgogIC8vIE9wdGlvbnMgOgogIC8v
ICAgUENMWklQX09QVF9BRERfUEFUSCA6CiAgLy8gICBQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIIDoKICAvLyA
gIFBDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQVRIIDoKICAvLyAgIFBDTFpJUF9PUFRfQ09NTUVOVCA6CiAgLy
8gICBQQ0xaSVBfQ0JfUFJFX0FERCA6CiAgLy8gICBQQ0xaSVBfQ0JfUE9TVF9BREQgOgogIC8vIFJldHVyb
iBWYWx1ZXMgOgogIC8vICAgMCBvbiBmYWlsdXJlLAogIC8vICAgVGhlIGxpc3Qgb2YgdGhlIGFkZGVkIGZp
bGVzLCB3aXRoIGEgc3RhdHVzIG9mIHRoZSBhZGQgYWN0aW9uLgogIC8vICAgKHNlZSBQY2xaaXA6Omxpc3R
Db250ZW50KCkgZm9yIGxpc3QgZW50cnkgZm9ybWF0KQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY
3Rpb24gY3JlYXRlKCRwX2ZpbGVsaXN0KQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIFJl
c2V0IHRoZSBlcnJvciBoYW5kbGVyCiAgICAkdGhpcy0+cHJpdkVycm9yUmVzZXQoKTsKCiAgICAvLyAtLS0
tLSBTZXQgZGVmYXVsdCB2YWx1ZXMKICAgICR2X29wdGlvbnMgPSBhcnJheSgpOwogICAgJHZfb3B0aW9uc1
tQQ0xaSVBfT1BUX05PX0NPTVBSRVNTSU9OXSA9IEZBTFNFOwoKICAgIC8vIC0tLS0tIExvb2sgZm9yIHZhc
mlhYmxlIG9wdGlvbnMgYXJndW1lbnRzCiAgICAkdl9zaXplID0gZnVuY19udW1fYXJncygpOwoKICAgIC8v
IC0tLS0tIExvb2sgZm9yIGFyZ3VtZW50cwogICAgaWYgKCR2X3NpemUgPiAxKSB7CiAgICAgIC8vIC0tLS0
tIEdldCB0aGUgYXJndW1lbnRzCiAgICAgICR2X2FyZ19saXN0ID0gZnVuY19nZXRfYXJncygpOwoKICAgIC
AgLy8gLS0tLS0gUmVtb3ZlIGZyb20gdGhlIG9wdGlvbnMgbGlzdCB0aGUgZmlyc3QgYXJndW1lbnQKICAgI
CAgYXJyYXlfc2hpZnQoJHZfYXJnX2xpc3QpOwogICAgICAkdl9zaXplLS07CgogICAgICAvLyAtLS0tLSBM
b29rIGZvciBmaXJzdCBhcmcKICAgICAgaWYgKChpc19pbnRlZ2VyKCR2X2FyZ19saXN0WzBdKSkgJiYgKCR
2X2FyZ19saXN0WzBdID4gNzcwMDApKSB7CgogICAgICAgIC8vIC0tLS0tIFBhcnNlIHRoZSBvcHRpb25zCi
AgICAgICAgJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZQYXJzZU9wdGlvbnMoJHZfYXJnX2xpc3QsICR2X3Npe
mUsICR2X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJy
YXkgKFBDTFpJUF9PUFRfUkVNT1ZFX1BBVEggPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9SRU1PVkVfQUxMX1BBVEggPT4gJ2
9wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU
ENMWklQX09QVF9BRERfUEFUSCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfQ0JfUFJFX0FERCA9PiAnb3B0aW9uYWwnLAogICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfQ0JfUE9TVF9BRE
QgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgUENMWklQX09QVF9OT19DT01QUkVTU0lPTiA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX0NPTU1FTlQgPT4gJ29wdGl
vbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWk
lQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfVEVNUF9GSUxFX09OID0+ICdvcHRp
b25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFp
JUF9PUFRfVEVNUF9GSUxFX09GRiA9PiAnb3B0aW9uYWwnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgIC8vLCBQQ0xaSVBfT1BUX0NSWVBUID0+ICdvcHRpb25hbCcKICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSk7CiAgICAgICAgaWYgKCR2X3Jl
c3VsdCAhPSAxKSB7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIC0
tLS0tIExvb2sgZm9yIDIgYXJncwogICAgICAvLyBIZXJlIHdlIG5lZWQgdG8gc3VwcG9ydCB0aGUgZmlyc3
QgaGlzdG9yaWMgc3lub3BzaXMgb2YgdGhlCiAgICAgIC8vIG1ldGhvZC4KICAgICAgZWxzZSB7CgogICAgI
CAgIC8vIC0tLS0tIEdldCB0aGUgZmlyc3QgYXJndW1lbnQKICAgICAgICAkdl9vcHRpb25zW1BDTFpJUF9P
UFRfQUREX1BBVEhdID0gJHZfYXJnX2xpc3RbMF07CgogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHRoZSB
vcHRpb25hbCBzZWNvbmQgYXJndW1lbnQKICAgICAgICBpZiAoJHZfc2l6ZSA9PSAyKSB7CiAgICAgICAgIC
Akdl9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX1BBVEhdID0gJHZfYXJnX2xpc3RbMV07CiAgICAgICAgf
QogICAgICAgIGVsc2UgaWYgKCR2X3NpemUgPiAyKSB7CiAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxv
ZyhQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVEVSLAoJCSAgICAgICAgICAgICAgICAgICAgICAgIkludmF
saWQgbnVtYmVyIC8gdHlwZSBvZiBhcmd1bWVudHMiKTsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH
0KICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIExvb2sgZm9yIGRlZmF1bHQgb3B0aW9uIHZhbHVlcwogI
CAgJHRoaXMtPnByaXZPcHRpb25EZWZhdWx0VGhyZXNob2xkKCR2X29wdGlvbnMpOwoKICAgIC8vIC0tLS0t
IEluaXQKICAgICR2X3N0cmluZ19saXN0ID0gYXJyYXkoKTsKICAgICR2X2F0dF9saXN0ID0gYXJyYXkoKTs
KICAgICR2X2ZpbGVkZXNjcl9saXN0ID0gYXJyYXkoKTsKICAgICRwX3Jlc3VsdF9saXN0ID0gYXJyYXkoKT
sKCiAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSAkcF9maWxlbGlzdCBpcyByZWFsbHkgYW4gYXJyYXkKICAgI
GlmIChpc19hcnJheSgkcF9maWxlbGlzdCkpIHsKCiAgICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlIGZpcnN0
IGVsZW1lbnQgaXMgYWxzbyBhbiBhcnJheQogICAgICAvLyAgICAgICBUaGlzIHdpbGwgbWVhbiB0aGF0IHR
oaXMgaXMgYSBmaWxlIGRlc2NyaXB0aW9uIGVudHJ5CiAgICAgIGlmIChpc3NldCgkcF9maWxlbGlzdFswXS
kgJiYgaXNfYXJyYXkoJHBfZmlsZWxpc3RbMF0pKSB7CiAgICAgICAgJHZfYXR0X2xpc3QgPSAkcF9maWxlb
GlzdDsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gVGhlIGxpc3QgaXMgYSBsaXN0IG9mIHN0cmluZyBuYW1l
cwogICAgICBlbHNlIHsKICAgICAgICAkdl9zdHJpbmdfbGlzdCA9ICRwX2ZpbGVsaXN0OwogICAgICB9CiA
gICB9CgogICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgJHBfZmlsZWxpc3QgaXMgYSBzdHJpbmcKICAgIGVsc2
UgaWYgKGlzX3N0cmluZygkcF9maWxlbGlzdCkpIHsKICAgICAgLy8gLS0tLS0gQ3JlYXRlIGEgbGlzdCBmc
m9tIHRoZSBzdHJpbmcKICAgICAgJHZfc3RyaW5nX2xpc3QgPSBleHBsb2RlKFBDTFpJUF9TRVBBUkFUT1Is
ICRwX2ZpbGVsaXN0KTsKICAgIH0KCiAgICAvLyAtLS0tLSBJbnZhbGlkIHZhcmlhYmxlIHR5cGUgZm9yICR
wX2ZpbGVsaXN0CiAgICBlbHNlIHsKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTl
ZBTElEX1BBUkFNRVRFUiwgIkludmFsaWQgdmFyaWFibGUgdHlwZSBwX2ZpbGVsaXN0Iik7CiAgICAgIHJld
HVybiAwOwogICAgfQoKICAgIC8vIC0tLS0tIFJlZm9ybWF0IHRoZSBzdHJpbmcgbGlzdAogICAgaWYgKHNp
emVvZigkdl9zdHJpbmdfbGlzdCkgIT0gMCkgewogICAgICBmb3JlYWNoICgkdl9zdHJpbmdfbGlzdCBhcyA
kdl9zdHJpbmcpIHsKICAgICAgICBpZiAoJHZfc3
RyaW5nICE9ICcnKSB7CiAgICAgICAgICAkdl9hdHRfbGlzdFtdW1BDTFpJUF9BVFRfRklMRV9OQU1FXSA9I
CR2X3N0cmluZzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgfQogICAgICB9CiAgICB9Cgog
ICAgLy8gLS0tLS0gRm9yIGVhY2ggZmlsZSBpbiB0aGUgbGlzdCBjaGVjayB0aGUgYXR0cmlidXRlcwogICA
gJHZfc3VwcG9ydGVkX2F0dHJpYnV0ZXMKICAgID0gYXJyYXkgKCBQQ0xaSVBfQVRUX0ZJTEVfTkFNRSA9Pi
AnbWFuZGF0b3J5JwogICAgICAgICAgICAgLFBDTFpJUF9BVFRfRklMRV9ORVdfU0hPUlRfTkFNRSA9PiAnb
3B0aW9uYWwnCiAgICAgICAgICAgICAsUENMWklQX0FUVF9GSUxFX05FV19GVUxMX05BTUUgPT4gJ29wdGlv
bmFsJwogICAgICAgICAgICAgLFBDTFpJUF9BVFRfRklMRV9NVElNRSA9PiAnb3B0aW9uYWwnCiAgICAgICA
gICAgICAsUENMWklQX0FUVF9GSUxFX0NPTlRFTlQgPT4gJ29wdGlvbmFsJwogICAgICAgICAgICAgLFBDTF
pJUF9BVFRfRklMRV9DT01NRU5UID0+ICdvcHRpb25hbCcKCQkJCQkJKTsKICAgIGZvcmVhY2ggKCR2X2F0d
F9saXN0IGFzICR2X2VudHJ5KSB7CiAgICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2RmlsZURlc2NyUGFy
c2VBdHQoJHZfZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gJHZfZmlsZWRlc2NyX2xpc3RbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAkdl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICR2X3N1cHBvcnRlZF9hdHRyaWJ1dGVzKTsKICAgICAgaWYgKCR2X3Jlc3VsdCAhPSAxKSB7CiAgICAg
ICAgcmV0dXJuIDA7CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBFeHBhbmQgdGhlIGZpbGVsaXN0ICh
leHBhbmQgZGlyZWN0b3JpZXMpCiAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkZpbGVEZXNjckV4cGFuZC
gkdl9maWxlZGVzY3JfbGlzdCwgJHZfb3B0aW9ucyk7CiAgICBpZiAoJHZfcmVzdWx0ICE9IDEpIHsKICAgI
CAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8gLS0tLS0gQ2FsbCB0aGUgY3JlYXRlIGZjdAogICAgJHZfcmVz
dWx0ID0gJHRoaXMtPnByaXZDcmVhdGUoJHZfZmlsZWRlc2NyX2xpc3QsICRwX3Jlc3VsdF9saXN0LCAkdl9
vcHRpb25zKTsKICAgIGlmICgkdl9yZXN1bHQgIT0gMSkgewogICAgICByZXR1cm4gMDsKICAgIH0KCiAgIC
AvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkcF9yZXN1bHRfbGlzdDsKICB9CiAgLy8gLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6CiAgLy8gICBhZGQoJH
BfZmlsZWxpc3QsICRwX2FkZF9kaXI9IiIsICRwX3JlbW92ZV9kaXI9IiIpCiAgLy8gICBhZGQoJHBfZmlsZ
Wxpc3QsICRwX29wdGlvbiwgJHBfb3B0aW9uX3ZhbHVlLCAuLi4pCiAgLy8gRGVzY3JpcHRpb24gOgogIC8v
ICAgVGhpcyBtZXRob2Qgc3VwcG9ydHMgdHdvIHN5bm9wc2lzLiBUaGUgZmlyc3Qgb25lIGlzIGhpc3Rvcml
jYWwuCiAgLy8gICBUaGlzIG1ldGhvZHMgYWRkIHRoZSBsaXN0IG9mIGZpbGVzIGluIGFuIGV4aXN0aW5nIG
FyY2hpdmUuCiAgLy8gICBJZiBhIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLCBpd
CBpcyBhZGRlZCBhdCB0aGUgZW5kIG9mIHRoZQogIC8vICAgYXJjaGl2ZSwgdGhlIGZpcnN0IG9uZSBpcyBz
dGlsbCBwcmVzZW50LgogIC8vICAgSWYgdGhlIGFyY2hpdmUgZG9lcyBub3QgZXhpc3QsIGl0IGlzIGNyZWF
0ZWQuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICAkcF9maWxlbGlzdCA6IEFuIGFycmF5IGNvbnRhaW5pbm
cgZmlsZSBvciBkaXJlY3RvcnkgbmFtZXMsIG9yCiAgLy8gICAgICAgICAgICAgICAgIGEgc3RyaW5nIGNvb
nRhaW5pbmcgb25lIGZpbGVuYW1lIG9yIG9uZSBkaXJlY3RvcnkgbmFtZSwgb3IKICAvLyAgICAgICAgICAg
ICAgICAgYSBzdHJpbmcgY29udGFpbmluZyBhIGxpc3Qgb2YgZmlsZW5hbWVzIGFuZC9vciBkaXJlY3Rvcnk
KICAvLyAgICAgICAgICAgICAgICAgbmFtZXMgc2VwYXJhdGVkIGJ5IHNwYWNlcy4KICAvLyAgICRwX2FkZF
9kaXIgOiBBIHBhdGggdG8gYWRkIGJlZm9yZSB0aGUgcmVhbCBwYXRoIG9mIHRoZSBhcmNoaXZlZCBmaWxlL
AogIC8vICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGhhdmUgaXQgbWVtb3JpemVkIGluIHRoZSBhcmNo
aXZlLgogIC8vICAgJHBfcmVtb3ZlX2RpciA6IEEgcGF0aCB0byByZW1vdmUgZnJvbSB0aGUgcmVhbCBwYXR
oIG9mIHRoZSBmaWxlIHRvIGFyY2hpdmUsCiAgLy8gICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgdG8gaG
F2ZSBhIHNob3J0ZXIgcGF0aCBtZW1vcml6ZWQgaW4gdGhlIGFyY2hpdmUuCiAgLy8gICAgICAgICAgICAgI
CAgICAgV2hlbiAkcF9hZGRfZGlyIGFuZCAkcF9yZW1vdmVfZGlyIGFyZSBzZXQsICRwX3JlbW92ZV9kaXIK
ICAvLyAgICAgICAgICAgICAgICAgICBpcyByZW1vdmVkIGZpcnN0LCBiZWZvcmUgJHBfYWRkX2RpciBpcyB
hZGRlZC4KICAvLyBPcHRpb25zIDoKICAvLyAgIFBDTFpJUF9PUFRfQUREX1BBVEggOgogIC8vICAgUENMWk
lQX09QVF9SRU1PVkVfUEFUSCA6CiAgLy8gICBQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUEFUSCA6CiAgLy8gI
CBQQ0xaSVBfT1BUX0NPTU1FTlQgOgogIC8vICAgUENMWklQX09QVF9BRERfQ09NTUVOVCA6CiAgLy8gICBQ
Q0xaSVBfT1BUX1BSRVBFTkRfQ09NTUVOVCA6CiAgLy8gICBQQ0xaSVBfQ0JfUFJFX0FERCA6CiAgLy8gICB
QQ0xaSVBfQ0JfUE9TVF9BREQgOgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vICAgMCBvbiBmYWlsdXJlLA
ogIC8vICAgVGhlIGxpc3Qgb2YgdGhlIGFkZGVkIGZpbGVzLCB3aXRoIGEgc3RhdHVzIG9mIHRoZSBhZGQgY
WN0aW9uLgogIC8vICAgKHNlZSBQY2xaaXA6Omxpc3RDb250ZW50KCkgZm9yIGxpc3QgZW50cnkgZm9ybWF0
KQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gYWRkKCRwX2ZpbGVsaXN0KQogIHsKICAgIC
R2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIFJlc2V0IHRoZSBlcnJvciBoYW5kbGVyCiAgICAkdGhpcy0+c
HJpdkVycm9yUmVzZXQoKTsKCiAgICAvLyAtLS0tLSBTZXQgZGVmYXVsdCB2YWx1ZXMKICAgICR2X29wdGlv
bnMgPSBhcnJheSgpOwogICAgJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX05PX0NPTVBSRVNTSU9OXSA9IEZBTFN
FOwoKICAgIC8vIC0tLS0tIExvb2sgZm9yIHZhcmlhYmxlIG9wdGlvbnMgYXJndW1lbnRzCiAgICAkdl9zaX
plID0gZnVuY19udW1fYXJncygpOwoKICAgIC8vIC0tLS0tIExvb2sgZm9yIGFyZ3VtZW50cwogICAgaWYgK
CR2X3NpemUgPiAxKSB7CiAgICAgIC8vIC0tLS0tIEdldCB0aGUgYXJndW1lbnRzCiAgICAgICR2X2FyZ19s
aXN0ID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgLy8gLS0tLS0gUmVtb3ZlIGZvcm0gdGhlIG9wdGlvbnM
gbGlzdCB0aGUgZmlyc3QgYXJndW1lbnQKICAgICAgYXJyYXlfc2hpZnQoJHZfYXJnX2xpc3QpOwogICAgIC
Akdl9zaXplLS07CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBmaXJzdCBhcmcKICAgICAgaWYgKChpc19pb
nRlZ2VyKCR2X2FyZ19saXN0WzBdKSkgJiYgKCR2X2FyZ19saXN0WzBdID4gNzcwMDApKSB7CgogICAgICAg
IC8vIC0tLS0tIFBhcnNlIHRoZSBvcHRpb25zCiAgICAgICAgJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZQYXJ
zZU9wdGlvbnMoJHZfYXJnX2xpc3QsICR2X3NpemUsICR2X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgKFBDTFpJUF9PUFRfUkVNT1ZFX1BBVEggPT4gJ29wd
GlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENM
WklQX09QVF9SRU1PVkVfQUxMX1BBVEggPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9BRERfUEFUSCA9PiAnb3B0aW9uYWwnLA
ogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfQ0JfU
FJFX0FERCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBQQ0xaSVBfQ0JfUE9TVF9BREQgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9OT19DT01QUkVTU0lPTiA9Pi
Anb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CBQQ0xaSVBfT1BUX0NPTU1FTlQgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9BRERfQ09NTUVOVCA9PiAnb3B0aW9uYWwnLAo
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX1
BSRVBFTkRfQ09NTUVOVCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX1RFTVBfRklMRV9USFJFU0hPTEQgPT4gJ29wdGlvbmFs
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09
QVF9URU1QX0ZJTEVfT04gPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9URU1QX0ZJTEVfT0ZGID0+ICdvcHRpb25hbCcKICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8sIFBDTFpJUF9PUFRf
Q1JZUFQgPT4gJ29wdGlvbmFsJwoJCQkJCQkJCQkJCQkgICApKTsKICAgICAgICBpZiAoJHZfcmVzdWx0ICE
9IDEpIHsKICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gLS0tLS0gTG
9vayBmb3IgMiBhcmdzCiAgICAgIC8vIEhlcmUgd2UgbmVlZCB0byBzdXBwb3J0IHRoZSBmaXJzdCBoaXN0b
3JpYyBzeW5vcHNpcyBvZiB0aGUKICAgICAgLy8gbWV0aG9kLgogICAgICBlbHNlIHsKCiAgICAgICAgLy8g
LS0tLS0gR2V0IHRoZSBmaXJzdCBhcmd1bWVudAogICAgICAgICR2X29wdGlvbnNbUENMWklQX09QVF9BRER
fUEFUSF0gPSAkdl9hZGRfcGF0aCA9ICR2X2FyZ19saXN0WzBdOwoKICAgICAgICAvLyAtLS0tLSBMb29rIG
ZvciB0aGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50CiAgICAgICAgaWYgKCR2X3NpemUgPT0gMikgewogI
CAgICAgICAgJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIXSA9ICR2X2FyZ19saXN0WzFdOwog
ICAgICAgIH0KICAgICAgICBlbHNlIGlmICgkdl9zaXplID4gMikgewogICAgICAgICAgLy8gLS0tLS0gRXJ
yb3IgbG9nCiAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU
1FVEVSLCAiSW52YWxpZCBudW1iZXIgLyB0eXBlIG9mIGFyZ3VtZW50cyIpOwoKICAgICAgICAgIC8vIC0tL
S0tIFJldHVybgogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8g
LS0tLS0gTG9vayBmb3IgZGVmYXVsdCBvcHRpb24gdmFsdWVzCiAgICAkdGhpcy0+cHJpdk9wdGlvbkRlZmF
1bHRUaHJlc2hvbGQoJHZfb3B0aW9ucyk7CgogICAgLy8gLS0tLS0gSW5pdAogICAgJHZfc3RyaW5nX2xpc3
QgPSBhcnJheSgpOwogICAgJHZfYXR0X2xpc3QgPSBhcnJheSgpOwogICAgJHZfZmlsZWRlc2NyX2xpc3QgP
SBhcnJheSgpOwogICAgJHBfcmVzdWx0X2xpc3QgPSBhcnJheSgpOwoKICAgIC8vIC0tLS0tIExvb2sgaWYg
dGhlICRwX2ZpbGVsaXN0IGlzIHJlYWxseSBhbiBhcnJheQogICAgaWYgKGlzX2FycmF5KCRwX2ZpbGVsaXN
0KSkgewoKICAgICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgZmlyc3QgZWxlbWVudCBpcyBhbHNvIGFuIGFycm
F5CiAgICAgIC8vICAgICAgIFRoaXMgd2lsbCBtZWFuIHRoYXQgdGhpcyBpcyBhIGZpbGUgZGVzY3JpcHRpb
24gZW50cnkKICAgICAgaWYgKGlzc2V0KCRwX2ZpbGVsaXN0WzBdKSAmJiBpc19hcnJheSgkcF9maWxlbGlz
dFswXSkpIHsKICAgICAgICAkdl9hdHRfbGlzdCA9ICRwX2ZpbGVsaXN0OwogICAgICB9CgogICAgICAvLyA
tLS0tLSBUaGUgbGlzdCBpcyBhIGxpc3Qgb2Ygc3RyaW5nIG5hbWVzCiAgICAgIGVsc2UgewogICAgICAgIC
R2X3N0cmluZ19saXN0ID0gJHBfZmlsZWxpc3Q7CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBMb29rI
GlmIHRoZSAkcF9maWxlbGlzdCBpcyBhIHN0cmluZwogICAgZWxzZSBpZiAoaXNfc3RyaW5nKCRwX2ZpbGVs
aXN0KSkgewogICAgICAvLyAtLS0tLSBDcmVhdGUgYSBsaXN0IGZyb20gdGhlIHN0cmluZwogICAgICAkdl9
zdHJpbmdfbGlzdCA9IGV4cGxvZGUoUENMWklQX1NFUEFSQVRPUiwgJHBfZmlsZWxpc3QpOwogICAgfQoKIC
AgIC8vIC0tLS0tIEludmFsaWQgdmFyaWFibGUgdHlwZSBmb3IgJHBfZmlsZWxpc3QKICAgIGVsc2UgewogI
CAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVEVSLCAiSW52YWxp
ZCB2YXJpYWJsZSB0eXBlICciLmdldHR5cGUoJHBfZmlsZWxpc3QpLiInIGZvciBwX2ZpbGVsaXN0Iik7CiA
gICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIC0tLS0tIFJlZm9ybWF0IHRoZSBzdHJpbmcgbGlzdAogIC
AgaWYgKHNpemVvZigkdl9zdHJpbmdfbGlzdCkgIT0gMCkgewogICAgICBmb3JlYWNoICgkdl9zdHJpbmdfb
GlzdCBhcyAkdl9zdHJpbmcpIHsKICAgICAgICAkdl9hdHRfbGlzdFtdW1BDTFpJUF9BVFRfRklMRV9OQU1F
XSA9ICR2X3N0cmluZzsKICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIEZvciBlYWNoIGZpbGUgaW4gdGh
lIGxpc3QgY2hlY2sgdGhlIGF0dHJpYnV0ZXMKICAgICR2X3N1cHBvcnRlZF9hdHRyaWJ1dGVzCiAgICA9IG
FycmF5ICggUENMWklQX0FUVF9GSUxFX05BTUUgPT4gJ21hbmRhdG9yeScKICAgICAgICAgICAgICxQQ0xaS
VBfQVRUX0ZJTEVfTkVXX1NIT1JUX05BTUUgPT4gJ29wdGlvbmFsJwogICAgICAgICAgICAgLFBDTFpJUF9B
VFRfRklMRV9ORVdfRlVMTF9OQU1FID0+ICdvcHRpb25hbCcKICAgICAgICAgICAgICxQQ0xaSVBfQVRUX0Z
JTEVfTVRJTUUgPT4gJ29wdGlvbmFsJwogICAgICAgICAgICAgLFBDTFpJUF9BVFRfRklMRV9DT05URU5UID
0+ICdvcHRpb25hbCcKICAgICAgICAgICAgICxQQ
0xaSVBfQVRUX0ZJTEVfQ09NTUVOVCA9PiAnb3B0aW9uYWwnCgkJCQkJCSk7CiAgICBmb3JlYWNoICgkdl9h
dHRfbGlzdCBhcyAkdl9lbnRyeSkgewogICAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkZpbGVEZXNjclB
hcnNlQXR0KCR2X2VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICR2X2ZpbGVkZXNjcl9saXN0W10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgJHZfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAkdl9zdXBwb3J0ZWRfYXR0cmlidXRlcyk7CiAgICAgIGlmICgkdl9yZXN1bHQgIT0gMSkgewogICA
gICAgIHJldHVybiAwOwogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gRXhwYW5kIHRoZSBmaWxlbGlzdC
AoZXhwYW5kIGRpcmVjdG9yaWVzKQogICAgJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZGaWxlRGVzY3JFeHBhb
mQoJHZfZmlsZWRlc2NyX2xpc3QsICR2X29wdGlvbnMpOwogICAgaWYgKCR2X3Jlc3VsdCAhPSAxKSB7CiAg
ICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIC0tLS0tIENhbGwgdGhlIGNyZWF0ZSBmY3QKICAgICR2X3J
lc3VsdCA9ICR0aGlzLT5wcml2QWRkKCR2X2ZpbGVkZXNjcl9saXN0LCAkcF9yZXN1bHRfbGlzdCwgJHZfb3
B0aW9ucyk7CiAgICBpZiAoJHZfcmVzdWx0ICE9IDEpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgL
y8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHBfcmVzdWx0X2xpc3Q7CiAgfQogIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBsaXN0Q29udGVudCgpC
iAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVGhpcyBwdWJsaWMgbWV0aG9kLCBnaXZlcyB0aGUgbGlzdCBv
ZiB0aGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLCB3aXRoIHRoZWlyCiAgLy8gICBwcm9wZXJ0aWVzLgogIC8
vICAgVGhlIHByb3BlcnRpZXMgb2YgZWFjaCBlbnRyaWVzIGluIHRoZSBsaXN0IGFyZSAodXNlZCBhbHNvIG
luIG90aGVyIGZ1bmN0aW9ucykgOgogIC8vICAgICBmaWxlbmFtZSA6IE5hbWUgb2YgdGhlIGZpbGUuIEZvc
iBhIGNyZWF0ZSBvciBhZGQgYWN0aW9uIGl0IGlzIHRoZSBmaWxlbmFtZQogIC8vICAgICAgICAgICAgICAg
IGdpdmVuIGJ5IHRoZSB1c2VyLiBGb3IgYW4gZXh0cmFjdCBmdW5jdGlvbiBpdCBpcyB0aGUgZmlsZW5hbWU
KICAvLyAgICAgICAgICAgICAgICBvZiB0aGUgZXh0cmFjdGVkIGZpbGUuCiAgLy8gICAgIHN0b3JlZF9maW
xlbmFtZSA6IE5hbWUgb2YgdGhlIGZpbGUgLyBkaXJlY3Rvcnkgc3RvcmVkIGluIHRoZSBhcmNoaXZlLgogI
C8vICAgICBzaXplIDogU2l6ZSBvZiB0aGUgc3RvcmVkIGZpbGUuCiAgLy8gICAgIGNvbXByZXNzZWRfc2l6
ZSA6IFNpemUgb2YgdGhlIGZpbGUncyBkYXRhIGNvbXByZXNzZWQgaW4gdGhlIGFyY2hpdmUKICAvLyAgICA
gICAgICAgICAgICAgICAgICAgKHdpdGhvdXQgdGhlIGhlYWRlcnMgb3ZlcmhlYWQpCiAgLy8gICAgIG10aW
1lIDogTGFzdCBrbm93biBtb2RpZmljYXRpb24gZGF0ZSBvZiB0aGUgZmlsZSAoVU5JWCB0aW1lc3RhbXApC
iAgLy8gICAgIGNvbW1lbnQgOiBDb21tZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgZmlsZQogIC8vICAgICBm
b2xkZXIgOiB0cnVlIHwgZmFsc2UKICAvLyAgICAgaW5kZXggOiBpbmRleCBvZiB0aGUgZmlsZSBpbiB0aGU
gYXJjaGl2ZQogIC8vICAgICBzdGF0dXMgOiBzdGF0dXMgb2YgdGhlIGFjdGlvbiAoZGVwZW5kaW5nIG9mIH
RoZSBhY3Rpb24pIDoKICAvLyAgICAgICAgICAgICAgVmFsdWVzIGFyZSA6CiAgLy8gICAgICAgICAgICAgI
CAgb2sgOiBPSyAhCiAgLy8gICAgICAgICAgICAgICAgZmlsdGVyZWQgOiB0aGUgZmlsZSAvIGRpciBpcyBu
b3QgZXh0cmFjdGVkIChmaWx0ZXJlZCBieSB1c2VyKQogIC8vICAgICAgICAgICAgICAgIGFscmVhZHlfYV9
kaXJlY3RvcnkgOiB0aGUgZmlsZSBjYW4gbm90IGJlIGV4dHJhY3RlZCBiZWNhdXNlIGEKICAvLyAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGggdGhlIHNhbWUgbmFtZSBhb
HJlYWR5IGV4aXN0cwogIC8vICAgICAgICAgICAgICAgIHdyaXRlX3Byb3RlY3RlZCA6IHRoZSBmaWxlIGNh
biBub3QgYmUgZXh0cmFjdGVkIGJlY2F1c2UgYSBmaWxlCiAgLy8gICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgd2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzIGFuZCBpcwogIC8vICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlIHByb3RlY3RlZAogIC8vICAgICAgICAgICAgICAgI
G5ld2VyX2V4aXN0IDogdGhlIGZpbGUgd2FzIG5vdCBleHRyYWN0ZWQgYmVjYXVzZSBhIG5ld2VyIGZpbGUg
ZXhpc3RzCiAgLy8gICAgICAgICAgICAgICAgcGF0aF9jcmVhdGlvbl9mYWlsIDogdGhlIGZpbGUgaXMgbm9
0IGV4dHJhY3RlZCBiZWNhdXNlIHRoZSBmb2xkZXIKICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICBkb2VzIG5vdCBleGlzdCBhbmQgY2FuIG5vdCBiZSBjcmVhdGVkCiAgLy8gICAgICAgICAgI
CAgICAgd3JpdGVfZXJyb3IgOiB0aGUgZmlsZSB3YXMgbm90IGV4dHJhY3RlZCBiZWNhdXNlIHRoZXJlIHdh
cyBhCiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciB3aGlsZSB3cml0aW5nIHRoZSB
maWxlCiAgLy8gICAgICAgICAgICAgICAgcmVhZF9lcnJvciA6IHRoZSBmaWxlIHdhcyBub3QgZXh0cmFjdG
VkIGJlY2F1c2UgdGhlcmUgd2FzIGEgZXJyb3IKICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd
2hpbGUgcmVhZGluZyB0aGUgZmlsZQogIC8vICAgICAgICAgICAgICAgIGludmFsaWRfaGVhZGVyIDogdGhl
IGZpbGUgd2FzIG5vdCBleHRyYWN0ZWQgYmVjYXVzZSBvZiBhbiBhcmNoaXZlCiAgLy8gICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICBmb3JtYXQgZXJyb3IgKGJhZCBmaWxlIGhlYWRlcikKICAvLyAgIE5vdG
UgdGhhdCBlYWNoIHRpbWUgYSBtZXRob2QgY2FuIGNvbnRpbnVlIG9wZXJhdGluZyB3aGVuIHRoZXJlCiAgL
y8gICBpcyBhbiBhY3Rpb24gZXJyb3Igb24gYSBmaWxlLCB0aGUgZXJyb3IgaXMgb25seSBsb2dnZWQgaW4g
dGhlIGZpbGUgc3RhdHVzLgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vICAgMCBvbiBhbiB1bnJlY292ZXJ
hYmxlIGZhaWx1cmUsCiAgLy8gICBUaGUgbGlzdCBvZiB0aGUgZmlsZXMgaW4gdGhlIGFyY2hpdmUuCiAgLy
8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBsaXN0Q29udGVudCgpCiAgewogICAgJHZfcmVzdWx0
PTE7CgogICAgLy8gLS0tLS0gUmVzZXQgdGhlIGVycm9yIGhhbmRsZXIKICAgICR0aGlzLT5wcml2RXJyb3J
SZXNldCgpOwoKICAgIC8vIC0tLS0tIENoZWNrIGFyY2hpdmUKICAgIGlmICghJHRoaXMtPnByaXZDaGVja0
Zvcm1hdCgpKSB7CiAgICAgIHJldHVybigwKTsKICAgIH0KCiAgICAvLyAtLS0tLSBDYWxsIHRoZSBleHRyY
WN0aW5nIGZjdAogICAgJHBfbGlzdCA9IGFycmF5KCk7CiAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5w
cml2TGlzdCgkcF9saXN0KSkgIT0gMSkKICAgIHsKICAgICAgdW5zZXQoJHBfbGlzdCk7CiAgICAgIHJldHV
ybigwKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkcF9saXN0OwogIH0KICAvLy
AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDoKICA
vLyAgIGV4dHJhY3QoJHBfcGF0aD0iLi8iLCAkcF9yZW1vdmVfcGF0aD0iIikKICAvLyAgIGV4dHJhY3QoWy
RwX29wdGlvbiwgJHBfb3B0aW9uX3ZhbHVlLCAuLi5dKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRoa
XMgbWV0aG9kIHN1cHBvcnRzIHR3byBzeW5vcHNpcy4gVGhlIGZpcnN0IG9uZSBpcyBoaXN0b3JpY2FsLgog
IC8vICAgVGhpcyBtZXRob2QgZXh0cmFjdCBhbGwgdGhlIGZpbGVzIC8gZGlyZWN0b3JpZXMgZnJvbSB0aGU
gYXJjaGl2ZSB0byB0aGUKICAvLyAgIGZvbGRlciBpbmRpY2F0ZWQgaW4gJHBfcGF0aC4KICAvLyAgIElmIH
lvdSB3YW50IHRvIGlnbm9yZSB0aGUgJ3Jvb3QnIHBhcnQgb2YgcGF0aCBvZiB0aGUgbWVtb3JpemVkIGZpb
GVzCiAgLy8gICB5b3UgY2FuIGluZGljYXRlIHRoaXMgaW4gdGhlIG9wdGlvbmFsICRwX3JlbW92ZV9wYXRo
IHBhcmFtZXRlci4KICAvLyAgIEJ5IGRlZmF1bHQsIGlmIGEgbmV3ZXIgZmlsZSB3aXRoIHRoZSBzYW1lIG5
hbWUgYWxyZWFkeSBleGlzdHMsIHRoZQogIC8vICAgZmlsZSBpcyBub3QgZXh0cmFjdGVkLgogIC8vCiAgLy
8gICBJZiBib3RoIFBDTFpJUF9PUFRfUEFUSCBhbmQgUENMWklQX09QVF9BRERfUEFUSCBhb3B0aW9ucwogI
C8vICAgYXJlIHVzZWQsIHRoZSBwYXRoIGluZGljYXRlZCBpbiBQQ0xaSVBfT1BUX0FERF9QQVRIIGlzIGFw
cGVuZAogIC8vICAgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCB2YWx1ZSBvZiBQQ0xaSVBfT1BUX1BBVEguCiA
gLy8gUGFyYW1ldGVycyA6CiAgLy8gICAkcF9wYXRoIDogUGF0aCB3aGVyZSB0aGUgZmlsZXMgYW5kIGRpcm
VjdG9yaWVzIGFyZSB0byBiZSBleHRyYWN0ZWQKICAvLyAgICRwX3JlbW92ZV9wYXRoIDogRmlyc3QgcGFyd
CAoJ3Jvb3QnIHBhcnQpIG9mIHRoZSBtZW1vcml6ZWQgcGF0aAogIC8vICAgICAgICAgICAgICAgICAgICAo
aWYgYW55IHNpbWlsYXIpIHRvIHJlbW92ZSB3aGlsZSBleHRyYWN0aW5nLgogIC8vIE9wdGlvbnMgOgogIC8
vICAgUENMWklQX09QVF9QQVRIIDoKICAvLyAgIFBDTFpJUF9PUFRfQUREX1BBVEggOgogIC8vICAgUENMWk
lQX09QVF9SRU1PVkVfUEFUSCA6CiAgLy8gICBQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUEFUSCA6CiAgLy8gI
CBQQ0xaSVBfQ0JfUFJFX0VYVFJBQ1QgOgogIC8vICAgUENMWklQX0NCX1BPU1RfRVhUUkFDVCA6CiAgLy8g
UmV0dXJuIFZhbHVlcyA6CiAgLy8gICAwIG9yIGEgbmVnYXRpdmUgdmFsdWUgb24gZmFpbHVyZSwKICAvLyA
gIFRoZSBsaXN0IG9mIHRoZSBleHRyYWN0ZWQgZmlsZXMsIHdpdGggYSBzdGF0dXMgb2YgdGhlIGFjdGlvbi
4KICAvLyAgIChzZWUgUGNsWmlwOjpsaXN0Q29udGVudCgpIGZvciBsaXN0IGVudHJ5IGZvcm1hdCkKICAvL
yAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIGV4dHJhY3QoKQogIHsKICAgICR2X3Jlc3VsdD0xOwo
KICAgIC8vIC0tLS0tIFJlc2V0IHRoZSBlcnJvciBoYW5kbGVyCiAgICAkdGhpcy0+cHJpdkVycm9yUmVzZX
QoKTsKCiAgICAvLyAtLS0tLSBDaGVjayBhcmNoaXZlCiAgICBpZiAoISR0aGlzLT5wcml2Q2hlY2tGb3JtY
XQoKSkgewogICAgICByZXR1cm4oMCk7CiAgICB9CgogICAgLy8gLS0tLS0gU2V0IGRlZmF1bHQgdmFsdWVz
CiAgICAkdl9vcHRpb25zID0gYXJyYXkoKTsKLy8gICAgJHZfcGF0aCA9ICIuLyI7CiAgICAkdl9wYXRoID0
gJyc7CiAgICAkdl9yZW1vdmVfcGF0aCA9ICIiOwogICAgJHZfcmVtb3ZlX2FsbF9wYXRoID0gZmFsc2U7Cg
ogICAgLy8gLS0tLS0gTG9vayBmb3IgdmFyaWFibGUgb3B0aW9ucyBhcmd1bWVudHMKICAgICR2X3NpemUgP
SBmdW5jX251bV9hcmdzKCk7CgogICAgLy8gLS0tLS0gRGVmYXVsdCB2YWx1ZXMgZm9yIG9wdGlvbgogICAg
JHZfb3B0aW9uc1tQQ0xaSVBfT1BUX0VYVFJBQ1RfQVNfU1RSSU5HXSA9IEZBTFNFOwoKICAgIC8vIC0tLS0
tIExvb2sgZm9yIGFyZ3VtZW50cwogICAgaWYgKCR2X3NpemUgPiAwKSB7CiAgICAgIC8vIC0tLS0tIEdldC
B0aGUgYXJndW1lbnRzCiAgICAgICR2X2FyZ19saXN0ID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgLy8gL
S0tLS0gTG9vayBmb3IgZmlyc3QgYXJnCiAgICAgIGlmICgoaXNfaW50ZWdlcigkdl9hcmdfbGlzdFswXSkp
ICYmICgkdl9hcmdfbGlzdFswXSA+IDc3MDAwKSkgewoKICAgICAgICAvLyAtLS0tLSBQYXJzZSB0aGUgb3B
0aW9ucwogICAgICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2UGFyc2VPcHRpb25zKCR2X2FyZ19saXN0LC
Akdl9zaXplLCAkdl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgIGFycmF5IChQQ0xaSVBfT1BUX1BBVEggPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9SRU1PVkVfUEFUSCA9PiAnb3B0aW9
uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSV
BfT1BUX1JFTU9WRV9BTExfUEFUSCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX0FERF9QQVRIID0+ICdvcHRpb25hbCcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9DQl9QUkV
fRVhUUkFDVCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICBQQ0xaSVBfQ0JfUE9TVF9FWFRSQUNUID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfU0VUX0NITU9EID0+
ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gIFBDTFpJUF9PUFRfQllfTkFNRSA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX0JZX0VSRUcgPT4gJ29wdGlvbmFsJywKICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9CWV9Q
UkVHID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgIFBDTFpJUF9PUFRfQllfSU5ERVggPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9FWFRSQUNUX0FTX1NUUklORyA9P
iAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX0VYVFJBQ1RfSU5fT1VUUFV
UID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgIFBDTFpJUF9PUFRfUkVQTEFDRV9ORVdFUiA9PiAnb3B0aW9uYWwnCiAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxQQ0xaSVBfT1BUX1NUT1BfT05fRVJST1IgPT4g
J29wdGlvbmFsJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
sUENMWklQX09QVF9FWFRSQUNUX0RJUl9SRVNUUklDVElPTiA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX1RFTVBfRklMRV9US
FJFU0hPTEQgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUENMWklQX09QVF9URU1QX0ZJTEVfT04gPT4gJ29wdGlvbmFsJywKICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9URU1QX0ZJTEVfT0
ZGID0+ICdvcHRpb25hbCcKCQkJCQkJCQkJCQkJICAgICkpOwogICAgICAgIGlmICgkdl9yZXN1bHQgIT0gM
SkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tLSBTZXQgdGhlIGFy
Z3VtZW50cwogICAgICAgIGlmIChpc3NldCgkdl9vcHRpb25zW1BDTFpJUF9PUFRfUEFUSF0pKSB7CiAgICA
gICAgICAkdl9wYXRoID0gJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1BBVEhdOwogICAgICAgIH0KICAgICAgIC
BpZiAoaXNzZXQoJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIXSkpIHsKICAgICAgICAgICR2X
3JlbW92ZV9wYXRoID0gJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIXTsKICAgICAgICB9CiAg
ICAgICAgaWYgKGlzc2V0KCR2X29wdGlvbnNbUENMWklQX09QVF9SRU1PVkVfQUxMX1BBVEhdKSkgewogICA
gICAgICAgJHZfcmVtb3ZlX2FsbF9wYXRoID0gJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUE
FUSF07CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkdl9vcHRpb25zW1BDTFpJUF9PUFRfQUREX1BBV
EhdKSkgewogICAgICAgICAgLy8gLS0tLS0gQ2hlY2sgZm9yICcvJyBpbiBsYXN0IHBhdGggY2hhcgogICAg
ICAgICAgaWYgKChzdHJsZW4oJHZfcGF0aCkgPiAwKSAmJiAoc3Vic3RyKCR2X3BhdGgsIC0xKSAhPSAnLyc
pKSB7CiAgICAgICAgICAgICR2X3BhdGggLj0gJy8nOwogICAgICAgICAgfQogICAgICAgICAgJHZfcGF0aC
AuPSAkdl9vcHRpb25zW1BDTFpJUF9PUFRfQUREX1BBVEhdOwogICAgICAgIH0KICAgICAgfQoKICAgICAgL
y8gLS0tLS0gTG9vayBmb3IgMiBhcmdzCiAgICAgIC8vIEhlcmUgd2UgbmVlZCB0byBzdXBwb3J0IHRoZSBm
aXJzdCBoaXN0b3JpYyBzeW5vcHNpcyBvZiB0aGUKICAgICAgLy8gbWV0aG9kLgogICAgICBlbHNlIHsKCiA
gICAgICAgLy8gLS0tLS0gR2V0IHRoZSBmaXJzdCBhcmd1bWVudAogICAgICAgICR2X3BhdGggPSAkdl9hcm
dfbGlzdFswXTsKCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgdGhlIG9wdGlvbmFsIHNlY29uZCBhcmd1b
WVudAogICAgICAgIGlmICgkdl9zaXplID09IDIpIHsKICAgICAgICAgICR2X3JlbW92ZV9wYXRoID0gJHZf
YXJnX2xpc3RbMV07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCR2X3NpemUgPiAyKSB7CiAgICAgICA
gICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUl
JfSU5WQUxJRF9QQVJBTUVURVIsICJJbnZhbGlkIG51bWJlciAvIHR5cGUgb2YgYXJndW1lbnRzIik7CgogI
CAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgIH0K
ICAgIH0KCiAgICAvLyAtLS0tLSBMb29rIGZvciBkZWZhdWx0IG9wdGlvbiB2YWx1ZXMKICAgICR0aGlzLT5
wcml2T3B0aW9uRGVmYXVsdFRocmVzaG9sZCgkdl9vcHRpb25zKTsKCiAgICAvLyAtLS0tLSBUcmFjZQoKIC
AgIC8vIC0tLS0tIENhbGwgdGhlIGV4dHJhY3RpbmcgZmN0CiAgICAkcF9saXN0ID0gYXJyYXkoKTsKICAgI
CR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2RXh0cmFjdEJ5UnVsZSgkcF9saXN0LCAkdl9wYXRoLCAkdl9yZW1v
dmVfcGF0aCwKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdl9yZW1vdmVfYWxsX3B
hdGgsICR2X29wdGlvbnMpOwogICAgaWYgKCR2X3Jlc3VsdCA8IDEpIHsKICAgICAgdW5zZXQoJHBfbGlzdC
k7CiAgICAgIHJldHVybigwKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkcF9sa
XN0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLy
BGdW5jdGlvbiA6CiAgLy8gICBleHRyYWN0QnlJbmRleCgkcF9pbmRleCwgJHBfcGF0aD0iLi8iLCAkcF9yZ
W1vdmVfcGF0aD0iIikKICAvLyAgIGV4dHJhY3RCeUluZGV4KCRwX2luZGV4LCBbJHBfb3B0aW9uLCAkcF9v
cHRpb25fdmFsdWUsIC4uLl0pCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVGhpcyBtZXRob2Qgc3VwcG9
ydHMgdHdvIHN5bm9wc2lzLiBUaGUgZmlyc3Qgb25lIGlzIGhpc3RvcmljYWwuCiAgLy8gICBUaGlzIG1ldG
hvZCBpcyBkb2luZyBhIHBhcnRpYWwgZXh0cmFjdCBvZiB0aGUgYXJjaGl2ZS4KICAvLyAgIFRoZSBleHRyY
WN0ZWQgZmlsZXMgb3IgZm9sZGVycyBhcmUgaWRlbnRpZmllZCBieSB0aGVpciBpbmRleCBpbiB0aGUKICAv
LyAgIGFyY2hpdmUgKGZyb20gMCB0byBuKS4KICAvLyAgIE5vdGUgdGhhdCBpZiB0aGUgaW5kZXggaWRlbnR
pZnkgYSBmb2xkZXIsIG9ubHkgdGhlIGZvbGRlciBlbnRyeSBpcwogIC8vICAgZXh0cmFjdGVkLCBub3QgYW
xsIHRoZSBmaWxlcyBpbmNsdWRlZCBpbiB0aGUgYXJjaGl2ZS4KICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAgI
CRwX2luZGV4IDogQSBzaW5nbGUgaW5kZXggKGludGVnZXIpIG9yIGEgc3RyaW5nIG9mIGluZGV4ZXMgb2Yg
ZmlsZXMgdG8KICAvLyAgICAgICAgICAgICAgZXh0cmFjdC4gVGhlIGZvcm0gb2YgdGhlIHN0cmluZyBpcyA
iMCw0LTYsOC0xMiIgd2l0aCBvbmx5IG51bWJlcnMKICAvLyAgICAgICAgICAgICAgYW5kICctJyBmb3Igcm
FuZ2Ugb3IgJywnIHRvIHNlcGFyYXRlIHJhbmdlcy4gTm8gc3BhY2VzIG9yICc7JwogIC8vICAgICAgICAgI
CAgICBhcmUgYWxsb3dlZC4KICAvLyAgICRwX3BhdGggOiBQYXRoIHdoZXJlIHRoZSBmaWxlcyBhbmQgZGly
ZWN0b3JpZXMgYXJlIHRvIGJlIGV4dHJhY3RlZAogIC8vICAgJHBfcmVtb3ZlX3BhdGggOiBGaXJzdCBwYXJ
0ICgncm9vdCcgcGFydCkgb2YgdGhlIG1lbW9yaXplZCBwYXRoCiAgLy8gICAgICAgICAgICAgICAgICAgIC
hpZiBhbnkgc2ltaWxhcikgdG8gcmVtb3ZlIHdoaWxlIGV4dHJhY3RpbmcuCiAgLy8gT3B0aW9ucyA6CiAgL
y8gICBQQ0xaSVBfT1BUX1BBVEggOgogIC8vICAgUENMWklQX09QVF9BRERfUEFUSCA6CiAgLy8gICBQQ0xa
SVBfT1BUX1JFTU9WRV9QQVRIIDoKICAvLyAgIFBDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQVRIIDoKICAvLyA
gIFBDTFpJUF9PUFRfRVhUUkFDVF9BU19TVFJJTkcgOiBUaGUgZmlsZXMgYXJlIGV4dHJhY3RlZCBhcyBzdH
JpbmdzIGFuZAogIC8vICAgICBub3QgYXMgZmlsZXMuCiAgLy8gICAgIFRoZSByZXN1bHRpbmcgY29udGVud
CBpcyBpbiBhIG5ldyBmaWVsZCAnY29udGVudCcgaW4gdGhlIGZpbGUKICAvLyAgICAgc3RydWN0dXJlLgog
IC8vICAgICBUaGlzIG9wdGlvbiBtdXN0IGJlIHVzZWQgYWxvbmUgKGFueSBvdGhlciBvcHRpb25zIGFyZSB
pZ25vcmVkKS4KICAvLyAgIFBDTFpJUF9DQl9QUkVfRVhUUkFDVCA6CiAgLy8gICBQQ0xaSVBfQ0JfUE9TVF
9FWFRSQUNUIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAgIDAgb24gZmFpbHVyZSwKICAvLyAgIFRoZ
SBsaXN0IG9mIHRoZSBleHRyYWN0ZWQgZmlsZXMsIHdpdGggYSBzdGF0dXMgb2YgdGhlIGFjdGlvbi4KICAv
LyAgIChzZWUgUGNsWmlwOjpsaXN0Q29udGVudCgpIGZvciBsaXN0IGVudHJ5IGZvcm1hdCkKICAvLyAtLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLQogIC8vZnVuY3Rpb24gZXh0cmFjdEJ5SW5kZXgoJHBfaW5kZXgsIG9wdGlvbnMuL
i4pCiAgZnVuY3Rpb24gZXh0cmFjdEJ5SW5kZXgoJHBfaW5kZXgpCiAgewogICAgJHZfcmVzdWx0PTE7Cgog
ICAgLy8gLS0tLS0gUmVzZXQgdGhlIGVycm9yIGhhbmRsZXIKICAgICR0aGlzLT5wcml2RXJyb3JSZXNldCg
pOwoKICAgIC8vIC0tLS0tIENoZWNrIGFyY2hpdmUKICAgIGlmICghJHRoaXMtPnByaXZDaGVja0Zvcm1hdC
gpKSB7CiAgICAgIHJldHVybigwKTsKICAgIH0KCiAgICAvLyAtLS0tLSBTZXQgZGVmYXVsdCB2YWx1ZXMKI
CAgICR2X29wdGlvbnMgPSBhcnJheSgpOwovLyAgICAkdl9wYXRoID0gIi4vIjsKICAgICR2X3BhdGggPSAn
JzsKICAgICR2X3JlbW92ZV9wYXRoID0gIiI7CiAgICAkdl9yZW1vdmVfYWxsX3BhdGggPSBmYWxzZTsKCiA
gICAvLyAtLS0tLSBMb29rIGZvciB2YXJpYWJsZSBvcHRpb25zIGFyZ3VtZW50cwogICAgJHZfc2l6ZSA9IG
Z1bmNfbnVtX2FyZ3MoKTsKCiAgICAvLyAtLS0tLSBEZWZhdWx0IHZhbHVlcyBmb3Igb3B0aW9uCiAgICAkd
l9vcHRpb25zW1BDTFpJUF9PUFRfRVhUUkFDVF9BU19TVFJJTkddID0gRkFMU0U7CgogICAgLy8gLS0tLS0g
TG9vayBmb3IgYXJndW1lbnRzCiAgICBpZiAoJHZfc2l6ZSA+IDEpIHsKICAgICAgLy8gLS0tLS0gR2V0IHR
oZSBhcmd1bWVudHMKICAgICAgJHZfYXJnX2xpc3QgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAvLyAtLS
0tLSBSZW1vdmUgZm9ybSB0aGUgb3B0aW9ucyBsaXN0IHRoZSBmaXJzdCBhcmd1bWVudAogICAgICBhcnJhe
V9zaGlmdCgkdl9hcmdfbGlzdCk7CiAgICAgICR2X3NpemUtLTsKCiAgICAgIC8vIC0tLS0tIExvb2sgZm9y
IGZpcnN0IGFyZwogICAgICBpZiAoKGlzX2ludGVnZXIoJHZfYXJnX2xpc3RbMF0pKSAmJiAoJHZfYXJnX2x
pc3RbMF0gPiA3NzAwMCkpIHsKCiAgICAgICAgLy8gLS0tLS0gUGFyc2UgdGhlIG9wdGlvbnMKICAgICAgIC
Akdl9yZXN1bHQgPSAkdGhpcy0+cHJpdlBhcnNlT3B0aW9ucygkdl9hcmdfbGlzdCwgJHZfc2l6ZSwgJHZfb
3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSAoUENM
WklQX09QVF9QQVRIID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfUkVNT1ZFX1BBVEggPT4gJ29wdGlvbmFsJywKICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9SRU1PVkVfQ
UxMX1BBVEggPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUENMWklQX09QVF9FWFRSQUNUX0FTX1NUUklORyA9PiAnb3B0aW9uYWwnLAogICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX0FERF9QQV
RIID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgIFBDTFpJUF9DQl9QUkVfRVhUUkFDVCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfQ0JfUE9TVF9FWFRSQUNUID0+ICdvcHR
pb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTF
pJUF9PUFRfU0VUX0NITU9EID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfUkVQTEFDRV9ORVdFUiA9PiAnb3B0aW9uYWwnCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICxQQ0xaSVBfT1BUX1N
UT1BfT05fRVJST1IgPT4gJ29wdGlvbmFsJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAsUENMWklQX09QVF9FWFRSQUNUX0RJUl9SRVNUUklDVElPTiA9PiAnb3B0aW9uY
WwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBf
T1BUX1RFTVBfRklMRV9USFJFU0hPTEQgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9URU1QX0ZJTEVfT04gPT4gJ29wdGlvbm
FsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX
09QVF9URU1QX0ZJTEVfT0ZGID0+ICdvcHRpb25hbCcKCQkJCQkJCQkJCQkJICAgKSk7CiAgICAgICAgaWYg
KCR2X3Jlc3VsdCAhPSAxKSB7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgICAgIC8vIC0
tLS0tIFNldCB0aGUgYXJndW1lbnRzCiAgICAgICAgaWYgKGlzc2V0KCR2X29wdGlvbnNbUENMWklQX09QVF
9QQVRIXSkpIHsKICAgICAgICAgICR2X3BhdGggPSAkdl9vcHRpb25zW1BDTFpJUF9PUFRfUEFUSF07CiAgI
CAgICAgfQogICAgICAgIGlmIChpc3NldCgkdl9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX1BBVEhdKSkg
ewogICAgICAgICAgJHZfcmVtb3ZlX3BhdGggPSAkdl9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX1BBVEh
dOwogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9BTE
xfUEFUSF0pKSB7CiAgICAgICAgICAkdl9yZW1vdmVfYWxsX3BhdGggPSAkdl9vcHRpb25zW1BDTFpJUF9PU
FRfUkVNT1ZFX0FMTF9QQVRIXTsKICAgICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCR2X29wdGlvbnNbUENM
WklQX09QVF9BRERfUEFUSF0pKSB7CiAgICAgICAgICAvLyAtLS0tLSBDaGVjayBmb3IgJy8nIGluIGxhc3Q
gcGF0aCBjaGFyCiAgICAgICAgICBpZiAoKHN0cmxlbigkdl9wYXRoKSA+IDApICYmIChzdWJzdHIoJHZfcG
F0aCwgLTEpICE9ICcvJykpIHsKICAgICAgICAgICAgJHZfcGF0aCAuPSAnLyc7CiAgICAgICAgICB9CiAgI
CAgICAgICAkdl9wYXRoIC49ICR2X29wdGlvbnNbUENMWklQX09QVF9BRERfUEFUSF07CiAgICAgICAgfQog
ICAgICAgIGlmICghaXNzZXQoJHZfb3B0aW9uc1t
QQ0xaSVBfT1BUX0VYVFJBQ1RfQVNfU1RSSU5HXSkpIHsKICAgICAgICAgICR2X29wdGlvbnNbUENMWklQX0
9QVF9FWFRSQUNUX0FTX1NUUklOR10gPSBGQUxTRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgI
CAgfQogICAgICB9CgogICAgICAvLyAtLS0tLSBMb29rIGZvciAyIGFyZ3MKICAgICAgLy8gSGVyZSB3ZSBu
ZWVkIHRvIHN1cHBvcnQgdGhlIGZpcnN0IGhpc3RvcmljIHN5bm9wc2lzIG9mIHRoZQogICAgICAvLyBtZXR
ob2QuCiAgICAgIGVsc2UgewoKICAgICAgICAvLyAtLS0tLSBHZXQgdGhlIGZpcnN0IGFyZ3VtZW50CiAgIC
AgICAgJHZfcGF0aCA9ICR2X2FyZ19saXN0WzBdOwoKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciB0aGUgb
3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50CiAgICAgICAgaWYgKCR2X3NpemUgPT0gMikgewogICAgICAgICAg
JHZfcmVtb3ZlX3BhdGggPSAkdl9hcmdfbGlzdFsxXTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJHZ
fc2l6ZSA+IDIpIHsKICAgICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgICAgUGNsWmlwOjpwcm
l2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiwgIkludmFsaWQgbnVtYmVyIC8gdHlwZ
SBvZiBhcmd1bWVudHMiKTsKCiAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgIHJldHVybiAw
OwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIFRyYWNlCgogICAgLy8gLS0tLS0gVHJ
pY2sKICAgIC8vIEhlcmUgSSB3YW50IHRvIHJldXNlIGV4dHJhY3RCeVJ1bGUoKSwgc28gSSBuZWVkIHRvIH
BhcnNlIHRoZSAkcF9pbmRleAogICAgLy8gd2l0aCBwcml2UGFyc2VPcHRpb25zKCkKICAgICR2X2FyZ190c
mljayA9IGFycmF5IChQQ0xaSVBfT1BUX0JZX0lOREVYLCAkcF9pbmRleCk7CiAgICAkdl9vcHRpb25zX3Ry
aWNrID0gYXJyYXkoKTsKICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2UGFyc2VPcHRpb25zKCR2X2FyZ19
0cmljaywgc2l6ZW9mKCR2X2FyZ190cmljayksICR2X29wdGlvbnNfdHJpY2ssCiAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSAoUENMWklQX09QVF9CWV9JTkRFWCA9PiAnb3B0aW9uY
WwnICkpOwogICAgaWYgKCR2X3Jlc3VsdCAhPSAxKSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICAk
dl9vcHRpb25zW1BDTFpJUF9PUFRfQllfSU5ERVhdID0gJHZfb3B0aW9uc190cmlja1tQQ0xaSVBfT1BUX0J
ZX0lOREVYXTsKCiAgICAvLyAtLS0tLSBMb29rIGZvciBkZWZhdWx0IG9wdGlvbiB2YWx1ZXMKICAgICR0aG
lzLT5wcml2T3B0aW9uRGVmYXVsdFRocmVzaG9sZCgkdl9vcHRpb25zKTsKCiAgICAvLyAtLS0tLSBDYWxsI
HRoZSBleHRyYWN0aW5nIGZjdAogICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkV4dHJhY3RCeVJ1
bGUoJHBfbGlzdCwgJHZfcGF0aCwgJHZfcmVtb3ZlX3BhdGgsICR2X3JlbW92ZV9hbGxfcGF0aCwgJHZfb3B
0aW9ucykpIDwgMSkgewogICAgICAgIHJldHVybigwKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KIC
AgIHJldHVybiAkcF9saXN0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDoKICAvLyAgIGRlbGV0ZShbJHBfb3B0aW9uLCAkcF9vcHRpb25fdm
FsdWUsIC4uLl0pCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVGhpcyBtZXRob2QgcmVtb3ZlcyBmaWxlc
yBmcm9tIHRoZSBhcmNoaXZlLgogIC8vICAgSWYgbm8gcGFyYW1ldGVycyBhcmUgZ2l2ZW4sIHRoZW4gYWxs
IHRoZSBhcmNoaXZlIGlzIGVtcHRpZWQuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICBOb25lIG9yIG9wdGl
vbmFsIGFyZ3VtZW50cy4KICAvLyBPcHRpb25zIDoKICAvLyAgIFBDTFpJUF9PUFRfQllfSU5ERVggOgogIC
8vICAgUENMWklQX09QVF9CWV9OQU1FIDoKICAvLyAgIFBDTFpJUF9PUFRfQllfRVJFRyA6CiAgLy8gICBQQ
0xaSVBfT1BUX0JZX1BSRUcgOgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vICAgMCBvbiBmYWlsdXJlLAog
IC8vICAgVGhlIGxpc3Qgb2YgdGhlIGZpbGVzIHdoaWNoIGFyZSBzdGlsbCBwcmVzZW50IGluIHRoZSBhcmN
oaXZlLgogIC8vICAgKHNlZSBQY2xaaXA6Omxpc3RDb250ZW50KCkgZm9yIGxpc3QgZW50cnkgZm9ybWF0KQ
ogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gZGVsZXRlKCkKICB7CiAgICAkdl9yZXN1bHQ9
MTsKCiAgICAvLyAtLS0tLSBSZXNldCB0aGUgZXJyb3IgaGFuZGxlcgogICAgJHRoaXMtPnByaXZFcnJvclJ
lc2V0KCk7CgogICAgLy8gLS0tLS0gQ2hlY2sgYXJjaGl2ZQogICAgaWYgKCEkdGhpcy0+cHJpdkNoZWNrRm
9ybWF0KCkpIHsKICAgICAgcmV0dXJuKDApOwogICAgfQoKICAgIC8vIC0tLS0tIFNldCBkZWZhdWx0IHZhb
HVlcwogICAgJHZfb3B0aW9ucyA9IGFycmF5KCk7CgogICAgLy8gLS0tLS0gTG9vayBmb3IgdmFyaWFibGUg
b3B0aW9ucyBhcmd1bWVudHMKICAgICR2X3NpemUgPSBmdW5jX251bV9hcmdzKCk7CgogICAgLy8gLS0tLS0
gTG9vayBmb3IgYXJndW1lbnRzCiAgICBpZiAoJHZfc2l6ZSA+IDApIHsKICAgICAgLy8gLS0tLS0gR2V0IH
RoZSBhcmd1bWVudHMKICAgICAgJHZfYXJnX2xpc3QgPSBmdW5jX2dldF9hcmdzKCk7CgogICAgICAvLyAtL
S0tLSBQYXJzZSB0aGUgb3B0aW9ucwogICAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdlBhcnNlT3B0aW9u
cygkdl9hcmdfbGlzdCwgJHZfc2l6ZSwgJHZfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgIGFycmF5IChQQ0xaSVBfT1BUX0JZX05BTUUgPT4gJ29wdGlvbmFsJywKICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX0JZX0VSRUcgPT4gJ
29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xa
SVBfT1BUX0JZX1BSRUcgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICBQQ0xaSVBfT1BUX0JZX0lOREVYID0+ICdvcHRpb25hbCcgKSk7CiAgICAgIGlmIC
gkdl9yZXN1bHQgIT0gMSkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgIH0KICAgIH0KCiAgICAvLyAtL
S0tLSBNYWdpYyBxdW90ZXMgdHJpY2sKICAgICR0aGlzLT5wcml2RGlzYWJsZU1hZ2ljUXVvdGVzKCk7Cgog
ICAgLy8gLS0tLS0gQ2FsbCB0aGUgZGVsZXRlIGZjdAogICAgJHZfbGlzdCA9IGFycmF5KCk7CiAgICBpZiA
oKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2RGVsZXRlQnlSdWxlKCR2X2xpc3QsICR2X29wdGlvbnMpKSAhPS
AxKSB7CiAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwogICAgICB1bnNldCgkdl9sa
XN0KTsKICAgICAgcmV0dXJuKDApOwogICAgfQoKICAgIC8vIC0tLS0tIE1hZ2ljIHF1b3RlcyB0cmljawog
ICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICB
yZXR1cm4gJHZfbGlzdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KICAvLyBGdW5jdGlvbiA6IGRlbGV0ZUJ5SW5kZXgoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyA
gICoqKioqIERlcHJlY2F0ZWQgKioqKioKICAvLyAgIGRlbGV0ZShQQ0xaSVBfT1BUX0JZX0lOREVYLCAkcF
9pbmRleCkgc2hvdWxkIGJlIHByZWZlcmVkLgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24g
ZGVsZXRlQnlJbmRleCgkcF9pbmRleCkKICB7CgogICAgJHBfbGlzdCA9ICR0aGlzLT5kZWxldGUoUENMWkl
QX09QVF9CWV9JTkRFWCwgJHBfaW5kZXgpOwoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICRwX2
xpc3Q7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8
gRnVuY3Rpb24gOiBwcm9wZXJ0aWVzKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gICBUaGlzIG1ldGhvZC
BnaXZlcyB0aGUgcHJvcGVydGllcyBvZiB0aGUgYXJjaGl2ZS4KICAvLyAgIFRoZSBwcm9wZXJ0aWVzIGFyZ
SA6CiAgLy8gICAgIG5iIDogTnVtYmVyIG9mIGZpbGVzIGluIHRoZSBhcmNoaXZlCiAgLy8gICAgIGNvbW1l
bnQgOiBDb21tZW50IGFzc29jaWF0ZWQgd2l0aCB0aGUgYXJjaGl2ZSBmaWxlCiAgLy8gICAgIHN0YXR1cyA
6IG5vdF9leGlzdCwgb2sKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAgIE5vbmUKICAvLyBSZXR1cm4gVmFsdW
VzIDoKICAvLyAgIDAgb24gZmFpbHVyZSwKICAvLyAgIEFuIGFycmF5IHdpdGggdGhlIGFyY2hpdmUgcHJvc
GVydGllcy4KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByb3BlcnRpZXMoKQogIHsKCiA
gICAvLyAtLS0tLSBSZXNldCB0aGUgZXJyb3IgaGFuZGxlcgogICAgJHRoaXMtPnByaXZFcnJvclJlc2V0KC
k7CgogICAgLy8gLS0tLS0gTWFnaWMgcXVvdGVzIHRyaWNrCiAgICAkdGhpcy0+cHJpdkRpc2FibGVNYWdpY
1F1b3RlcygpOwoKICAgIC8vIC0tLS0tIENoZWNrIGFyY2hpdmUKICAgIGlmICghJHRoaXMtPnByaXZDaGVj
a0Zvcm1hdCgpKSB7CiAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwogICAgICByZXR
1cm4oMCk7CiAgICB9CgogICAgLy8gLS0tLS0gRGVmYXVsdCBwcm9wZXJ0aWVzCiAgICAkdl9wcm9wID0gYX
JyYXkoKTsKICAgICR2X3Byb3BbJ2NvbW1lbnQnXSA9ICcnOwogICAgJHZfcHJvcFsnbmInXSA9IDA7CiAgI
CAkdl9wcm9wWydzdGF0dXMnXSA9ICdub3RfZXhpc3QnOwoKICAgIC8vIC0tLS0tIExvb2sgaWYgZmlsZSBl
eGlzdHMKICAgIGlmIChAaXNfZmlsZSgkdGhpcy0+emlwbmFtZSkpCiAgICB7CiAgICAgIC8vIC0tLS0tIE9
wZW4gdGhlIHppcCBmaWxlCiAgICAgIGlmICgoJHRoaXMtPnppcF9mZCA9IEBmb3BlbigkdGhpcy0+emlwbm
FtZSwgJ3JiJykpID09IDApCiAgICAgIHsKICAgICAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90Z
XMoKTsKCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2co
UENMWklQX0VSUl9SRUFEX09QRU5fRkFJTCwgJ1VuYWJsZSB0byBvcGVuIGFyY2hpdmUgXCcnLiR0aGlzLT5
6aXBuYW1lLidcJyBpbiBiaW5hcnkgcmVhZCBtb2RlJyk7CgogICAgICAgIC8vIC0tLS0tIFJldHVybgogIC
AgICAgIHJldHVybiAwOwogICAgICB9CgogICAgICAvLyAtLS0tLSBSZWFkIHRoZSBjZW50cmFsIGRpcmVjd
G9yeSBpbmZvcm1hdGlvbnMKICAgICAgJHZfY2VudHJhbF9kaXIgPSBhcnJheSgpOwogICAgICBpZiAoKCR2
X3Jlc3VsdCA9ICR0aGlzLT5wcml2UmVhZEVuZENlbnRyYWxEaXIoJHZfY2VudHJhbF9kaXIpKSAhPSAxKQo
gICAgICB7CiAgICAgICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CiAgICAgICAgcmV0dX
JuIDA7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSB6aXAgZmlsZQogICAgICAkdGhpcy0+c
HJpdkNsb3NlRmQoKTsKCiAgICAgIC8vIC0tLS0tIFNldCB0aGUgdXNlciBhdHRyaWJ1dGVzCiAgICAgICR2
X3Byb3BbJ2NvbW1lbnQnXSA9ICR2X2NlbnRyYWxfZGlyWydjb21tZW50J107CiAgICAgICR2X3Byb3BbJ25
iJ10gPSAkdl9jZW50cmFsX2RpclsnZW50cmllcyddOwogICAgICAkdl9wcm9wWydzdGF0dXMnXSA9ICdvay
c7CiAgICB9CgogICAgLy8gLS0tLS0gTWFnaWMgcXVvdGVzIHRyaWNrCiAgICAkdGhpcy0+cHJpdlN3YXBCY
WNrTWFnaWNRdW90ZXMoKTsKCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9wcm9wOwogIH0K
ICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uI
DogZHVwbGljYXRlKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gICBUaGlzIG1ldGhvZCBjcmVhdGVzIGFu
IGFyY2hpdmUgYnkgY29weWluZyB0aGUgY29udGVudCBvZiBhbiBvdGhlciBvbmUuIElmCiAgLy8gICB0aGU
gYXJjaGl2ZSBhbHJlYWR5IGV4aXN0LCBpdCBpcyByZXBsYWNlZCBieSB0aGUgbmV3IG9uZSB3aXRob3V0IG
FueSB3YXJuaW5nLgogIC8vIFBhcmFtZXRlcnMgOgogIC8vICAgJHBfYXJjaGl2ZSA6IFRoZSBmaWxlbmFtZ
SBvZiBhIHZhbGlkIGFyY2hpdmUsIG9yCiAgLy8gICAgICAgICAgICAgICAgYSB2YWxpZCBQY2xaaXAgb2Jq
ZWN0LgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vICAgMSBvbiBzdWNjZXNzLgogIC8vICAgMCBvciBhIG5
lZ2F0aXZlIHZhbHVlIG9uIGVycm9yIChlcnJvciBjb2RlKS4KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogI
GZ1bmN0aW9uIGR1cGxpY2F0ZSgkcF9hcmNoaXZlKQogIHsKICAgICR2X3Jlc3VsdCA9IDE7CgogICAgLy8g
LS0tLS0gUmVzZXQgdGhlIGVycm9yIGhhbmRsZXIKICAgICR0aGlzLT5wcml2RXJyb3JSZXNldCgpOwoKICA
gIC8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2FyY2hpdmUgaXMgYSBQY2xaaXAgb2JqZWN0CiAgICBpZiAoKG
lzX29iamVjdCgkcF9hcmNoaXZlKSkgJiYgKGdldF9jbGFzcygkcF9hcmNoaXZlKSA9PSAncGNsemlwJykpC
iAgICB7CgogICAgICAvLyAtLS0tLSBEdXBsaWNhdGUgdGhlIGFyY2hpdmUKICAgICAgJHZfcmVzdWx0ID0g
JHRoaXMtPnByaXZEdXBsaWNhdGUoJHBfYXJjaGl2ZS0+emlwbmFtZSk7CiAgICB9CgogICAgLy8gLS0tLS0
gTG9vayBpZiB0aGUgJHBfYXJjaGl2ZSBpcyBhIH
N0cmluZyAoc28gYSBmaWxlbmFtZSkKICAgIGVsc2UgaWYgKGlzX3N0cmluZygkcF9hcmNoaXZlKSkKICAgI
HsKCiAgICAgIC8vIC0tLS0tIENoZWNrIHRoYXQgJHBfYXJjaGl2ZSBpcyBhIHZhbGlkIHppcCBmaWxlCiAg
ICAgIC8vIFRCQyA6IFNob3VsZCBhbHNvIGNoZWNrIHRoZSBhcmNoaXZlIGZvcm1hdAogICAgICBpZiAoIWl
zX2ZpbGUoJHBfYXJjaGl2ZSkpIHsKICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICBQY2xaaX
A6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX01JU1NJTkdfRklMRSwgIk5vIGZpbGUgd2l0aCBmaWxlbmFtZ
SAnIi4kcF9hcmNoaXZlLiInIik7CiAgICAgICAgJHZfcmVzdWx0ID0gUENMWklQX0VSUl9NSVNTSU5HX0ZJ
TEU7CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgICAgLy8gLS0tLS0gRHVwbGljYXRlIHRoZSBhcmNoaXZ
lCiAgICAgICAgJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZEdXBsaWNhdGUoJHBfYXJjaGl2ZSk7CiAgICAgIH
0KICAgIH0KCiAgICAvLyAtLS0tLSBJbnZhbGlkIHZhcmlhYmxlCiAgICBlbHNlCiAgICB7CiAgICAgIC8vI
C0tLS0tIEVycm9yIGxvZwogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURf
UEFSQU1FVEVSLCAiSW52YWxpZCB2YXJpYWJsZSB0eXBlIHBfYXJjaGl2ZV90b19hZGQiKTsKICAgICAgJHZ
fcmVzdWx0ID0gUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUjsKICAgIH0KCiAgICAvLyAtLS0tLSBSZX
R1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBtZXJnZSgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC
8vICAgVGhpcyBtZXRob2QgbWVyZ2UgdGhlICRwX2FyY2hpdmVfdG9fYWRkIGFyY2hpdmUgYXQgdGhlIGVuZ
CBvZiB0aGUgY3VycmVudAogIC8vICAgb25lICgkdGhpcykuCiAgLy8gICBJZiB0aGUgYXJjaGl2ZSAoJHRo
aXMpIGRvZXMgbm90IGV4aXN0LCB0aGUgbWVyZ2UgYmVjb21lcyBhIGR1cGxpY2F0ZS4KICAvLyAgIElmIHR
oZSAkcF9hcmNoaXZlX3RvX2FkZCBhcmNoaXZlIGRvZXMgbm90IGV4aXN0LCB0aGUgbWVyZ2UgaXMgYSBzdW
NjZXNzLgogIC8vIFBhcmFtZXRlcnMgOgogIC8vICAgJHBfYXJjaGl2ZV90b19hZGQgOiBJdCBjYW4gYmUgZ
GlyZWN0bHkgdGhlIGZpbGVuYW1lIG9mIGEgdmFsaWQgemlwIGFyY2hpdmUsCiAgLy8gICAgICAgICAgICAg
ICAgICAgICAgIG9yIGEgUGNsWmlwIG9iamVjdCBhcmNoaXZlLgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8
vICAgMSBvbiBzdWNjZXNzLAogIC8vICAgMCBvciBuZWdhdGl2ZSB2YWx1ZXMgb24gZXJyb3IgKHNlZSBiZW
xvdykuCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBtZXJnZSgkcF9hcmNoaXZlX3RvX2Fk
ZCkKICB7CiAgICAkdl9yZXN1bHQgPSAxOwoKICAgIC8vIC0tLS0tIFJlc2V0IHRoZSBlcnJvciBoYW5kbGV
yCiAgICAkdGhpcy0+cHJpdkVycm9yUmVzZXQoKTsKCiAgICAvLyAtLS0tLSBDaGVjayBhcmNoaXZlCiAgIC
BpZiAoISR0aGlzLT5wcml2Q2hlY2tGb3JtYXQoKSkgewogICAgICByZXR1cm4oMCk7CiAgICB9CgogICAgL
y8gLS0tLS0gTG9vayBpZiB0aGUgJHBfYXJjaGl2ZV90b19hZGQgaXMgYSBQY2xaaXAgb2JqZWN0CiAgICBp
ZiAoKGlzX29iamVjdCgkcF9hcmNoaXZlX3RvX2FkZCkpICYmIChnZXRfY2xhc3MoJHBfYXJjaGl2ZV90b19
hZGQpID09ICdwY2x6aXAnKSkKICAgIHsKCiAgICAgIC8vIC0tLS0tIE1lcmdlIHRoZSBhcmNoaXZlCiAgIC
AgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2TWVyZ2UoJHBfYXJjaGl2ZV90b19hZGQpOwogICAgfQoKICAgI
C8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2FyY2hpdmVfdG9fYWRkIGlzIGEgc3RyaW5nIChzbyBhIGZpbGVu
YW1lKQogICAgZWxzZSBpZiAoaXNfc3RyaW5nKCRwX2FyY2hpdmVfdG9fYWRkKSkKICAgIHsKCiAgICAgIC8
vIC0tLS0tIENyZWF0ZSBhIHRlbXBvcmFyeSBhcmNoaXZlCiAgICAgICR2X29iamVjdF9hcmNoaXZlID0gbm
V3IFBjbFppcCgkcF9hcmNoaXZlX3RvX2FkZCk7CgogICAgICAvLyAtLS0tLSBNZXJnZSB0aGUgYXJjaGl2Z
QogICAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdk1lcmdlKCR2X29iamVjdF9hcmNoaXZlKTsKICAgIH0K
CiAgICAvLyAtLS0tLSBJbnZhbGlkIHZhcmlhYmxlCiAgICBlbHNlCiAgICB7CiAgICAgIC8vIC0tLS0tIEV
ycm9yIGxvZwogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVE
VSLCAiSW52YWxpZCB2YXJpYWJsZSB0eXBlIHBfYXJjaGl2ZV90b19hZGQiKTsKICAgICAgJHZfcmVzdWx0I
D0gUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUjsKICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAg
IHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKCiAgLy8gLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IGVycm9yQ29kZSgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8v
IFBhcmFtZXRlcnMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gZXJyb3JDb2RlKCkKIC
B7CiAgICBpZiAoUENMWklQX0VSUk9SX0VYVEVSTkFMID09IDEpIHsKICAgICAgcmV0dXJuKFBjbEVycm9yQ
29kZSgpKTsKICAgIH0KICAgIGVsc2UgewogICAgICByZXR1cm4oJHRoaXMtPmVycm9yX2NvZGUpOwogICAg
fQogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1b
mN0aW9uIDogZXJyb3JOYW1lKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBlcnJvck5hbWUoJHBfd2l0aF9jb2RlPWZhbHNlKQogIH
sKICAgICR2X25hbWUgPSBhcnJheSAoIFBDTFpJUF9FUlJfTk9fRVJST1IgPT4gJ1BDTFpJUF9FUlJfTk9fR
VJST1InLAogICAgICAgICAgICAgICAgICAgICAgUENMWklQX0VSUl9XUklURV9PUEVOX0ZBSUwgPT4gJ1BD
TFpJUF9FUlJfV1JJVEVfT1BFTl9GQUlMJywKICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9FUlJfUkV
BRF9PUEVOX0ZBSUwgPT4gJ1BDTFpJUF9FUlJfUkVBRF9PUEVOX0ZBSUwnLAogICAgICAgICAgICAgICAgIC
AgICAgUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiA9PiAnUENMWklQX0VSUl9JTlZBTElEX1BBUkFNR
VRFUicsCiAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfRVJSX01JU1NJTkdfRklMRSA9PiAnUENMWklQ
X0VSUl9NSVNTSU5HX0ZJTEUnLAogICAgICAgICAgICAgICAgICAgICAgUENMWklQX0VSUl9GSUxFTkFNRV9
UT09fTE9ORyA9PiAnUENMWklQX0VSUl9GSUxFTkFNRV9UT09fTE9ORycsCiAgICAgICAgICAgICAgICAgIC
AgICBQQ0xaSVBfRVJSX0lOVkFMSURfWklQID0+ICdQQ0xaSVBfRVJSX0lOVkFMSURfWklQJywKICAgICAgI
CAgICAgICAgICAgICAgIFBDTFpJUF9FUlJfQkFEX0VYVFJBQ1RFRF9GSUxFID0+ICdQQ0xaSVBfRVJSX0JB
RF9FWFRSQUNURURfRklMRScsCiAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfRVJSX0RJUl9DUkVBVEV
fRkFJTCA9PiAnUENMWklQX0VSUl9ESVJfQ1JFQVRFX0ZBSUwnLAogICAgICAgICAgICAgICAgICAgICAgUE
NMWklQX0VSUl9CQURfRVhURU5TSU9OID0+ICdQQ0xaSVBfRVJSX0JBRF9FWFRFTlNJT04nLAogICAgICAgI
CAgICAgICAgICAgICAgUENMWklQX0VSUl9CQURfRk9STUFUID0+ICdQQ0xaSVBfRVJSX0JBRF9GT1JNQVQn
LAogICAgICAgICAgICAgICAgICAgICAgUENMWklQX0VSUl9ERUxFVEVfRklMRV9GQUlMID0+ICdQQ0xaSVB
fRVJSX0RFTEVURV9GSUxFX0ZBSUwnLAogICAgICAgICAgICAgICAgICAgICAgUENMWklQX0VSUl9SRU5BTU
VfRklMRV9GQUlMID0+ICdQQ0xaSVBfRVJSX1JFTkFNRV9GSUxFX0ZBSUwnLAogICAgICAgICAgICAgICAgI
CAgICAgUENMWklQX0VSUl9CQURfQ0hFQ0tTVU0gPT4gJ1BDTFpJUF9FUlJfQkFEX0NIRUNLU1VNJywKICAg
ICAgICAgICAgICAgICAgICAgIFBDTFpJUF9FUlJfSU5WQUxJRF9BUkNISVZFX1pJUCA9PiAnUENMWklQX0V
SUl9JTlZBTElEX0FSQ0hJVkVfWklQJywKICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9FUlJfTUlTU0
lOR19PUFRJT05fVkFMVUUgPT4gJ1BDTFpJUF9FUlJfTUlTU0lOR19PUFRJT05fVkFMVUUnLAogICAgICAgI
CAgICAgICAgICAgICAgUENMWklQX0VSUl9JTlZBTElEX09QVElPTl9WQUxVRSA9PiAnUENMWklQX0VSUl9J
TlZBTElEX09QVElPTl9WQUxVRScsCiAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfRVJSX1VOU1VQUE9
SVEVEX0NPTVBSRVNTSU9OID0+ICdQQ0xaSVBfRVJSX1VOU1VQUE9SVEVEX0NPTVBSRVNTSU9OJywKICAgIC
AgICAgICAgICAgICAgICAgIFBDTFpJUF9FUlJfVU5TVVBQT1JURURfRU5DUllQVElPTiA9PiAnUENMWklQX
0VSUl9VTlNVUFBPUlRFRF9FTkNSWVBUSU9OJwogICAgICAgICAgICAgICAgICAgICAgLFBDTFpJUF9FUlJf
SU5WQUxJRF9BVFRSSUJVVEVfVkFMVUUgPT4gJ1BDTFpJUF9FUlJfSU5WQUxJRF9BVFRSSUJVVEVfVkFMVUU
nCiAgICAgICAgICAgICAgICAgICAgICAsUENMWklQX0VSUl9ESVJFQ1RPUllfUkVTVFJJQ1RJT04gPT4gJ1
BDTFpJUF9FUlJfRElSRUNUT1JZX1JFU1RSSUNUSU9OJwogICAgICAgICAgICAgICAgICAgICk7CgogICAga
WYgKGlzc2V0KCR2X25hbWVbJHRoaXMtPmVycm9yX2NvZGVdKSkgewogICAgICAkdl92YWx1ZSA9ICR2X25h
bWVbJHRoaXMtPmVycm9yX2NvZGVdOwogICAgfQogICAgZWxzZSB7CiAgICAgICR2X3ZhbHVlID0gJ05vTmF
tZSc7CiAgICB9CgogICAgaWYgKCRwX3dpdGhfY29kZSkgewogICAgICByZXR1cm4oJHZfdmFsdWUuJyAoJy
4kdGhpcy0+ZXJyb3JfY29kZS4nKScpOwogICAgfQogICAgZWxzZSB7CiAgICAgIHJldHVybigkdl92YWx1Z
Sk7CiAgICB9CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi
AgLy8gRnVuY3Rpb24gOiBlcnJvckluZm8oKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzI
DoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIGVycm9ySW5mbygkcF9mdWxsPWZhbHNlKQo
gIHsKICAgIGlmIChQQ0xaSVBfRVJST1JfRVhURVJOQUwgPT0gMSkgewogICAgICByZXR1cm4oUGNsRXJyb3
JTdHJpbmcoKSk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgaWYgKCRwX2Z1bGwpIHsKICAgICAgICByZXR1c
m4oJHRoaXMtPmVycm9yTmFtZSh0cnVlKS4iIDogIi4kdGhpcy0+ZXJyb3Jfc3RyaW5nKTsKICAgICAgfQog
ICAgICBlbHNlIHsKICAgICAgICByZXR1cm4oJHRoaXMtPmVycm9yX3N0cmluZy4iIFtjb2RlICIuJHRoaXM
tPmVycm9yX2NvZGUuIl0iKTsKICAgICAgfQogICAgfQogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKC
i8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vICoqKioqIFVOREVSIFRISVMgTElORSBBUkUgREVGSU5FRCBQUkl
WQVRFIElOVEVSTkFMIEZVTkNUSU9OUyAqKioqKgovLyAqKioqKiAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqKioKLy8gKioqKiogICAgICAgVEhFU0VTIEZVT
kNUSU9OUyBNVVNUIE5PVCBCRSBVU0VEIERJUkVDVExZICAgICAgICoqKioqCi8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tCgoKCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZDaGVja0Zvcm1hd
CgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVGhpcyBtZXRob2QgY2hlY2sgdGhhdCB0aGUgYXJjaGl2
ZSBleGlzdHMgYW5kIGlzIGEgdmFsaWQgemlwIGFyY2hpdmUuCiAgLy8gICBTZXZlcmFsIGxldmVsIG9mIGN
oZWNrIGV4aXN0cy4gKGZ1dHVyKQogIC8vIFBhcmFtZXRlcnMgOgogIC8vICAgJHBfbGV2ZWwgOiBMZXZlbC
BvZiBjaGVjay4gRGVmYXVsdCAwLgogIC8vICAgICAgICAgICAgICAwIDogQ2hlY2sgdGhlIGZpcnN0IGJ5d
GVzIChtYWdpYyBjb2RlcykgKGRlZmF1bHQgdmFsdWUpKQogIC8vICAgICAgICAgICAgICAxIDogMCArIENo
ZWNrIHRoZSBjZW50cmFsIGRpcmVjdG9yeSAoZnV0dXIpCiAgLy8gICAgICAgICAgICAgIDIgOiAxICsgQ2h
lY2sgZWFjaCBmaWxlIGhlYWRlciAoZnV0dXIpCiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gICB0cnVlIG
9uIHN1Y2Nlc3MsCiAgLy8gICBmYWxzZSBvbiBlcnJvciwgdGhlIGVycm9yIGNvZGUgaXMgc2V0LgogIC8vI
C0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdkNoZWNrRm9ybWF0KCRwX2xldmVsPTApCiAgewo
gICAgJHZfcmVzdWx0ID0gdHJ1ZTsKCgkvLyAtLS0tLSBSZXNldCB0aGUgZmlsZSBzeXN0ZW0gY2FjaGUKIC
AgIGNsZWFyc3RhdGNhY2hlKCk7CgogICAgLy8gL
S0tLS0gUmVzZXQgdGhlIGVycm9yIGhhbmRsZXIKICAgICR0aGlzLT5wcml2RXJyb3JSZXNldCgpOwoKICAg
IC8vIC0tLS0tIExvb2sgaWYgdGhlIGZpbGUgZXhpdHMKICAgIGlmICghaXNfZmlsZSgkdGhpcy0+emlwbmF
tZSkpIHsKICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTF
pJUF9FUlJfTUlTU0lOR19GSUxFLCAiTWlzc2luZyBhcmNoaXZlIGZpbGUgJyIuJHRoaXMtPnppcG5hbWUuI
iciKTsKICAgICAgcmV0dXJuKGZhbHNlKTsKICAgIH0KCiAgICAvLyAtLS0tLSBDaGVjayB0aGF0IHRoZSBm
aWxlIGlzIHJlYWRlYWJsZQogICAgaWYgKCFpc19yZWFkYWJsZSgkdGhpcy0+emlwbmFtZSkpIHsKICAgICA
gLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfUkVBRF
9PUEVOX0ZBSUwsICJVbmFibGUgdG8gcmVhZCBhcmNoaXZlICciLiR0aGlzLT56aXBuYW1lLiInIik7CiAgI
CAgIHJldHVybihmYWxzZSk7CiAgICB9CgogICAgLy8gLS0tLS0gQ2hlY2sgdGhlIG1hZ2ljIGNvZGUKICAg
IC8vIFRCQwoKICAgIC8vIC0tLS0tIENoZWNrIHRoZSBjZW50cmFsIGhlYWRlcgogICAgLy8gVEJDCgogICA
gLy8gLS0tLS0gQ2hlY2sgZWFjaCBmaWxlIGhlYWRlcgogICAgLy8gVEJDCgogICAgLy8gLS0tLS0gUmV0dX
JuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogcHJpdlBhcnNlT3B0aW9ucygpCiAgLy8gRGVzY3JpcH
Rpb24gOgogIC8vICAgVGhpcyBpbnRlcm5hbCBtZXRob2RzIHJlYWRzIHRoZSB2YXJpYWJsZSBsaXN0IG9mI
GFyZ3VtZW50cyAoJHBfb3B0aW9uc19saXN0LAogIC8vICAgJHBfc2l6ZSkgYW5kIGdlbmVyYXRlIGFuIGFy
cmF5IHdpdGggdGhlIG9wdGlvbnMgYW5kIHZhbHVlcyAoJHZfcmVzdWx0X2xpc3QpLgogIC8vICAgJHZfcmV
xdWVzdGVkX29wdGlvbnMgY29udGFpbnMgdGhlIG9wdGlvbnMgdGhhdCBjYW4gYmUgcHJlc2VudCBhbmQgdG
hvc2UgdGhhdAogIC8vICAgbXVzdCBiZSBwcmVzZW50LgogIC8vICAgJHZfcmVxdWVzdGVkX29wdGlvbnMga
XMgYW4gYXJyYXksIHdpdGggdGhlIG9wdGlvbiB2YWx1ZSBhcyBrZXksIGFuZCAnb3B0aW9uYWwnLAogIC8v
ICAgb3IgJ21hbmRhdG9yeScgYXMgdmFsdWUuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICBTZWUgYWJvdmU
uCiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gICAxIG9uIHN1Y2Nlc3MuCiAgLy8gICAwIG9uIGZhaWx1cm
UuCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2UGFyc2VPcHRpb25zKCYkcF9vcHRp
b25zX2xpc3QsICRwX3NpemUsICYkdl9yZXN1bHRfbGlzdCwgJHZfcmVxdWVzdGVkX29wdGlvbnM9ZmFsc2U
pCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgb3B0aW9ucwogICAgJGk9MD
sKICAgIHdoaWxlICgkaTwkcF9zaXplKSB7CgogICAgICAvLyAtLS0tLSBDaGVjayBpZiB0aGUgb3B0aW9uI
GlzIHN1cHBvcnRlZAogICAgICBpZiAoIWlzc2V0KCR2X3JlcXVlc3RlZF9vcHRpb25zWyRwX29wdGlvbnNf
bGlzdFskaV1dKSkgewogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgIFBjbFppcDo6cHJpdkV
ycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9QQVJBTUVURVIsICJJbnZhbGlkIG9wdGlvbmFsIHBhcmFtZX
RlciAnIi4kcF9vcHRpb25zX2xpc3RbJGldLiInIGZvciB0aGlzIG1ldGhvZCIpOwoKICAgICAgICAvLyAtL
S0tLSBSZXR1cm4KICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgfQoKICAgICAg
Ly8gLS0tLS0gTG9vayBmb3IgbmV4dCBvcHRpb24KICAgICAgc3dpdGNoICgkcF9vcHRpb25zX2xpc3RbJGl
dKSB7CiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3Igb3B0aW9ucyB0aGF0IHJlcXVlc3QgYSBwYXRoIHZhbH
VlCiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX1BBVEggOgogICAgICAgIGNhc2UgUENMWklQX09QVF9SRU1PV
kVfUEFUSCA6CiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX0FERF9QQVRIIDoKICAgICAgICAgIC8vIC0tLS0t
IENoZWNrIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycwogICAgICAgICAgaWYgKCgkaSsxKSA+PSAkcF9zaXp
lKSB7CiAgICAgICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgICAgICBQY2xaaXA6OnByaXZFcn
JvckxvZyhQQ0xaSVBfRVJSX01JU1NJTkdfT1BUSU9OX1ZBTFVFLCAiTWlzc2luZyBwYXJhbWV0ZXIgdmFsd
WUgZm9yIG9wdGlvbiAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkcF9vcHRpb25zX2xpc3RbJGldKS4iJyIp
OwoKICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9
yQ29kZSgpOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIC0tLS0tIEdldCB0aGUgdmFsdWUKICAgICAgIC
AgICR2X3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGlzdFskaV1dID0gUGNsWmlwVXRpbFRyYW5zbGF0ZVdpb
lBhdGgoJHBfb3B0aW9uc19saXN0WyRpKzFdLCBGQUxTRSk7CiAgICAgICAgICAkaSsrOwogICAgICAgIGJy
ZWFrOwoKICAgICAgICBjYXNlIFBDTFpJUF9PUFRfVEVNUF9GSUxFX1RIUkVTSE9MRCA6CiAgICAgICAgICA
vLyAtLS0tLSBDaGVjayB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMKICAgICAgICAgIGlmICgoJGkrMSkgPj
0gJHBfc2l6ZSkgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX01JU1NJT
kdfT1BUSU9OX1ZBTFVFLCAiTWlzc2luZyBwYXJhbWV0ZXIgdmFsdWUgZm9yIG9wdGlvbiAnIi5QY2xaaXBV
dGlsT3B0aW9uVGV4dCgkcF9vcHRpb25zX2xpc3RbJGldKS4iJyIpOwogICAgICAgICAgICByZXR1cm4gUGN
sWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBDaGVjayBmb3IgaW
5jb21wYXRpYmxlIG9wdGlvbnMKICAgICAgICAgIGlmIChpc3NldCgkdl9yZXN1bHRfbGlzdFtQQ0xaSVBfT
1BUX1RFTVBfRklMRV9PRkZdKSkgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBf
RVJSX0lOVkFMSURfUEFSQU1FVEVSLCAiT3B0aW9uICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdGl
vbnNfbGlzdFskaV0pLiInIGNhbiBub3QgYmUgdXNlZCB3aXRoIG9wdGlvbiAnUENMWklQX09QVF9URU1QX0
ZJTEVfT0ZGJyIpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgI
H0KCiAgICAgICAgICAvLyAtLS0tLSBDaGVjayB0aGUgdmFsdWUKICAgICAgICAgICR2X3ZhbHVlID0gJHBf
b3B0aW9uc19saXN0WyRpKzFdOwogICAgICAgICAgaWYgKCghaXNfaW50ZWdlcigkdl92YWx1ZSkpIHx8ICg
kdl92YWx1ZTwwKSkgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVk
FMSURfT1BUSU9OX1ZBTFVFLCAiSW50ZWdlciBleHBlY3RlZCBmb3Igb3B0aW9uICciLlBjbFppcFV0aWxPc
HRpb25UZXh0KCRwX29wdGlvbnNfbGlzdFskaV0pLiInIik7CiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6
OmVycm9yQ29kZSgpOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIC0tLS0tIEdldCB0aGUgdmFsdWUgKGF
uZCBjb252ZXJ0IGl0IGluIGJ5dGVzKQogICAgICAgICAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saX
N0WyRpXV0gPSAkdl92YWx1ZSoxMDQ4NTc2OwogICAgICAgICAgJGkrKzsKICAgICAgICBicmVhazsKCiAgI
CAgICAgY2FzZSBQQ0xaSVBfT1BUX1RFTVBfRklMRV9PTiA6CiAgICAgICAgICAvLyAtLS0tLSBDaGVjayBm
b3IgaW5jb21wYXRpYmxlIG9wdGlvbnMKICAgICAgICAgIGlmIChpc3NldCgkdl9yZXN1bHRfbGlzdFtQQ0x
aSVBfT1BUX1RFTVBfRklMRV9PRkZdKSkgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0
xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVEVSLCAiT3B0aW9uICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX
29wdGlvbnNfbGlzdFskaV0pLiInIGNhbiBub3QgYmUgdXNlZCB3aXRoIG9wdGlvbiAnUENMWklQX09QVF9U
RU1QX0ZJTEVfT0ZGJyIpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICA
gICAgIH0KCiAgICAgICAgICAkdl9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGldXSA9IHRydWU7Ci
AgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgUENMWklQX09QVF9URU1QX0ZJTEVfT0ZGIDoKICAgICAgI
CAgIC8vIC0tLS0tIENoZWNrIGZvciBpbmNvbXBhdGlibGUgb3B0aW9ucwogICAgICAgICAgaWYgKGlzc2V0
KCR2X3Jlc3VsdF9saXN0W1BDTFpJUF9PUFRfVEVNUF9GSUxFX09OXSkpIHsKICAgICAgICAgICAgUGNsWml
wOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiwgIk9wdGlvbiAnIi5QY2xaaX
BVdGlsT3B0aW9uVGV4dCgkcF9vcHRpb25zX2xpc3RbJGldKS4iJyBjYW4gbm90IGJlIHVzZWQgd2l0aCBvc
HRpb24gJ1BDTFpJUF9PUFRfVEVNUF9GSUxFX09OJyIpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjpl
cnJvckNvZGUoKTsKICAgICAgICAgIH0KICAgICAgICAgIC8vIC0tLS0tIENoZWNrIGZvciBpbmNvbXBhdGl
ibGUgb3B0aW9ucwogICAgICAgICAgaWYgKGlzc2V0KCR2X3Jlc3VsdF9saXN0W1BDTFpJUF9PUFRfVEVNUF
9GSUxFX1RIUkVTSE9MRF0pKSB7CiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FU
lJfSU5WQUxJRF9QQVJBTUVURVIsICJPcHRpb24gJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9u
c19saXN0WyRpXSkuIicgY2FuIG5vdCBiZSB1c2VkIHdpdGggb3B0aW9uICdQQ0xaSVBfT1BUX1RFTVBfRkl
MRV9USFJFU0hPTEQnIik7CiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgIC
AgICAgfQoKICAgICAgICAgICR2X3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGlzdFskaV1dID0gdHJ1ZTsKI
CAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX0VYVFJBQ1RfRElSX1JFU1RSSUNUSU9O
IDoKICAgICAgICAgIC8vIC0tLS0tIENoZWNrIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycwogICAgICAgICA
gaWYgKCgkaSsxKSA+PSAkcF9zaXplKSB7CiAgICAgICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgIC
AgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX01JU1NJTkdfT1BUSU9OX1ZBTFVFLCAiT
Wlzc2luZyBwYXJhbWV0ZXIgdmFsdWUgZm9yIG9wdGlvbiAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkcF9v
cHRpb25zX2xpc3RbJGldKS4iJyIpOwoKICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICA
gIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIC0tLS0tIE
dldCB0aGUgdmFsdWUKICAgICAgICAgIGlmICggICBpc19zdHJpbmcoJHBfb3B0aW9uc19saXN0WyRpKzFdK
QogICAgICAgICAgICAgICYmICgkcF9vcHRpb25zX2xpc3RbJGkrMV0gIT0gJycpKSB7CiAgICAgICAgICAg
ICR2X3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGlzdFskaV1dID0gUGNsWmlwVXRpbFRyYW5zbGF0ZVdpblB
hdGgoJHBfb3B0aW9uc19saXN0WyRpKzFdLCBGQUxTRSk7CiAgICAgICAgICAgICRpKys7CiAgICAgICAgIC
B9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICAgICAgLy8gLS0tL
S0gTG9vayBmb3Igb3B0aW9ucyB0aGF0IHJlcXVlc3QgYW4gYXJyYXkgb2Ygc3RyaW5nIGZvciB2YWx1ZQog
ICAgICAgIGNhc2UgUENMWklQX09QVF9CWV9OQU1FIDoKICAgICAgICAgIC8vIC0tLS0tIENoZWNrIHRoZSB
udW1iZXIgb2YgcGFyYW1ldGVycwogICAgICAgICAgaWYgKCgkaSsxKSA+PSAkcF9zaXplKSB7CiAgICAgIC
AgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaS
VBfRVJSX01JU1NJTkdfT1BUSU9OX1ZBTFVFLCAiTWlzc2luZyBwYXJhbWV0ZXIgdmFsdWUgZm9yIG9wdGlv
biAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkcF9vcHRpb25zX2xpc3RbJGldKS4iJyIpOwoKICAgICAgICA
gICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogIC
AgICAgICAgfQoKICAgICAgICAgIC8vIC0tLS0tIEdldCB0aGUgdmFsdWUKICAgICAgICAgIGlmIChpc19zd
HJpbmcoJHBfb3B0aW9uc19saXN0WyRpKzFdKSkgewogICAgICAgICAgICAgICR2X3Jlc3VsdF9saXN0WyRw
X29wdGlvbnNfbGlzdFskaV1dWzBdID0gJHBfb3B0aW9uc19saXN0WyRpKzFdOwogICAgICAgICAgfQogICA
gICAgICAgZWxzZSBpZiAoaXNfYXJyYXkoJHBfb3B0aW9uc19saXN0WyRpKzFdKSkgewogICAgICAgICAgIC
AgICR2X3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGlzdFskaV1dID0gJHBfb3B0aW9uc19saXN0WyRpKzFdO
wogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwog
ICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfT1BUSU9OX1ZBTFV
FLCAiV3JvbmcgcGFyYW1ldGVyIHZhbHVlIGZvciBvcHRpb24gJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJH
Bfb3B0aW9uc19saXN0WyRpXSkuIiciKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgI
CAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KICAgICAgICAgICRpKys7CiAg
ICAgICAgYnJlYWs7CgogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIG9wdGlvbnMgdGhhdCByZXF1ZXN0IGF
uIEVSRUcgb3IgUFJFRyBleHByZXNzaW9uCiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX0JZX0VSRUcgOgogIC
AgICAgICAgLy8gZXJlZygpIGlzIGRlcHJlY2F0ZWQgc3RhcnRpbmcgd2l0aCBQSFAgNS4zLiBNb3ZlIFBDT
FpJUF9PUFRfQllfRVJFRwogICAgICAgICAgLy8gdG8gUENMWklQX09QVF9CWV9QUkVHCiAgICAgICAgICAk
cF9vcHRpb25zX2xpc3RbJGldID0gUENMWklQX09QVF9CWV9QUkVHOwogICAgICAgIGNhc2UgUENMWklQX09
QVF9CWV9QUkVHIDoKICAgICAgICAvL2Nhc2UgUENMWklQX09QVF9DUllQVCA6CiAgICAgICAgICAvLyAtLS
0tLSBDaGVjayB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMKICAgICAgICAgIGlmICgoJGkrMSkgPj0gJHBfc
2l6ZSkgewogICAgICAgICAgICAvLyAtLS0tLSBF
cnJvciBsb2cKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9NSVNTSU5HX09
QVElPTl9WQUxVRSwgIk1pc3NpbmcgcGFyYW1ldGVyIHZhbHVlIGZvciBvcHRpb24gJyIuUGNsWmlwVXRpbE
9wdGlvblRleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuIiciKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIFJld
HVybgogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KCiAgICAg
ICAgICAvLyAtLS0tLSBHZXQgdGhlIHZhbHVlCiAgICAgICAgICBpZiAoaXNfc3RyaW5nKCRwX29wdGlvbnN
fbGlzdFskaSsxXSkpIHsKICAgICAgICAgICAgICAkdl9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJG
ldXSA9ICRwX29wdGlvbnNfbGlzdFskaSsxXTsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgI
CAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENM
WklQX0VSUl9JTlZBTElEX09QVElPTl9WQUxVRSwgIldyb25nIHBhcmFtZXRlciB2YWx1ZSBmb3Igb3B0aW9
uICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdGlvbnNfbGlzdFskaV0pLiInIik7CgogICAgICAgIC
AgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgI
CAgICAgICB9CiAgICAgICAgICAkaSsrOwogICAgICAgIGJyZWFrOwoKICAgICAgICAvLyAtLS0tLSBMb29r
IGZvciBvcHRpb25zIHRoYXQgdGFrZXMgYSBzdHJpbmcKICAgICAgICBjYXNlIFBDTFpJUF9PUFRfQ09NTUV
OVCA6CiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX0FERF9DT01NRU5UIDoKICAgICAgICBjYXNlIFBDTFpJUF
9PUFRfUFJFUEVORF9DT01NRU5UIDoKICAgICAgICAgIC8vIC0tLS0tIENoZWNrIHRoZSBudW1iZXIgb2Ygc
GFyYW1ldGVycwogICAgICAgICAgaWYgKCgkaSsxKSA+PSAkcF9zaXplKSB7CiAgICAgICAgICAgIC8vIC0t
LS0tIEVycm9yIGxvZwogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX01JU1N
JTkdfT1BUSU9OX1ZBTFVFLAoJCQkgICAgICAgICAgICAgICAgICAgICAiTWlzc2luZyBwYXJhbWV0ZXIgdm
FsdWUgZm9yIG9wdGlvbiAnIgoJCQkJCQkJCSAuUGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9uc19sa
XN0WyRpXSkKCQkJCQkJCQkgLiInIik7CgogICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAg
ICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0
gR2V0IHRoZSB2YWx1ZQogICAgICAgICAgaWYgKGlzX3N0cmluZygkcF9vcHRpb25zX2xpc3RbJGkrMV0pKS
B7CiAgICAgICAgICAgICAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV0gPSAkcF9vcHRpb
25zX2xpc3RbJGkrMV07CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gLS0t
LS0gRXJyb3IgbG9nCiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUx
JRF9PUFRJT05fVkFMVUUsCgkJCSAgICAgICAgICAgICAgICAgICAgICJXcm9uZyBwYXJhbWV0ZXIgdmFsdW
UgZm9yIG9wdGlvbiAnIgoJCQkJCQkJCSAuUGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9uc19saXN0W
yRpXSkKCQkJCQkJCQkgLiInIik7CgogICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgICAg
cmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CiAgICAgICAgICAkaSsrOwogICAgICA
gIGJyZWFrOwoKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBvcHRpb25zIHRoYXQgcmVxdWVzdCBhbiBhcn
JheSBvZiBpbmRleAogICAgICAgIGNhc2UgUENMWklQX09QVF9CWV9JTkRFWCA6CiAgICAgICAgICAvLyAtL
S0tLSBDaGVjayB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMKICAgICAgICAgIGlmICgoJGkrMSkgPj0gJHBf
c2l6ZSkgewogICAgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgICAgUGNsWmlwOjpwcml
2RXJyb3JMb2coUENMWklQX0VSUl9NSVNTSU5HX09QVElPTl9WQUxVRSwgIk1pc3NpbmcgcGFyYW1ldGVyIH
ZhbHVlIGZvciBvcHRpb24gJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuI
iciKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjpl
cnJvckNvZGUoKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBHZXQgdGhlIHZhbHVlCiAgICA
gICAgICAkdl93b3JrX2xpc3QgPSBhcnJheSgpOwogICAgICAgICAgaWYgKGlzX3N0cmluZygkcF9vcHRpb2
5zX2xpc3RbJGkrMV0pKSB7CgogICAgICAgICAgICAgIC8vIC0tLS0tIFJlbW92ZSBzcGFjZXMKICAgICAgI
CAgICAgICAkcF9vcHRpb25zX2xpc3RbJGkrMV0gPSBzdHJ0cigkcF9vcHRpb25zX2xpc3RbJGkrMV0sICcg
JywgJycpOwoKICAgICAgICAgICAgICAvLyAtLS0tLSBQYXJzZSBpdGVtcwogICAgICAgICAgICAgICR2X3d
vcmtfbGlzdCA9IGV4cGxvZGUoIiwiLCAkcF9vcHRpb25zX2xpc3RbJGkrMV0pOwogICAgICAgICAgfQogIC
AgICAgICAgZWxzZSBpZiAoaXNfaW50ZWdlcigkcF9vcHRpb25zX2xpc3RbJGkrMV0pKSB7CiAgICAgICAgI
CAgICAgJHZfd29ya19saXN0WzBdID0gJHBfb3B0aW9uc19saXN0WyRpKzFdLictJy4kcF9vcHRpb25zX2xp
c3RbJGkrMV07CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIGlmIChpc19hcnJheSgkcF9vcHRpb25zX2x
pc3RbJGkrMV0pKSB7CiAgICAgICAgICAgICAgJHZfd29ya19saXN0ID0gJHBfb3B0aW9uc19saXN0WyRpKz
FdOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZ
wogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfT1BUSU9OX1ZB
TFVFLCAiVmFsdWUgbXVzdCBiZSBpbnRlZ2VyLCBzdHJpbmcgb3IgYXJyYXkgZm9yIG9wdGlvbiAnIi5QY2x
aaXBVdGlsT3B0aW9uVGV4dCgkcF9vcHRpb25zX2xpc3RbJGldKS4iJyIpOwoKICAgICAgICAgICAgLy8gLS
0tLS0gUmV0dXJuCiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgICAgf
QoKICAgICAgICAgIC8vIC0tLS0tIFJlZHVjZSB0aGUgaW5kZXggbGlzdAogICAgICAgICAgLy8gZWFjaCBp
bmRleCBpdGVtIGluIHRoZSBsaXN0IG11c3QgYmUgYSBjb3VwbGUgd2l0aCBhIHN0YXJ0IGFuZAogICAgICA
gICAgLy8gYW4gZW5kIHZhbHVlIDogWzAsM10sIFs1LTVdLCBbOC0xMF0sIC4uLgogICAgICAgICAgLy8gLS
0tLS0gQ2hlY2sgdGhlIGZvcm1hdCBvZiBlYWNoIGl0ZW0KICAgICAgICAgICR2X3NvcnRfZmxhZz1mYWxzZ
TsKICAgICAgICAgICR2X3NvcnRfdmFsdWU9MDsKICAgICAgICAgIGZvciAoJGo9MDsgJGo8c2l6ZW9mKCR2
X3dvcmtfbGlzdCk7ICRqKyspIHsKICAgICAgICAgICAgICAvLyAtLS0tLSBFeHBsb2RlIHRoZSBpdGVtCiA
gICAgICAgICAgICAgJHZfaXRlbV9saXN0ID0gZXhwbG9kZSgiLSIsICR2X3dvcmtfbGlzdFskal0pOwogIC
AgICAgICAgICAgICR2X3NpemVfaXRlbV9saXN0ID0gc2l6ZW9mKCR2X2l0ZW1fbGlzdCk7CgogICAgICAgI
CAgICAgIC8vIC0tLS0tIFRCQyA6IEhlcmUgd2UgbWlnaHQgY2hlY2sgdGhhdCBlYWNoIGl0ZW0gaXMgYQog
ICAgICAgICAgICAgIC8vIHJlYWwgaW50ZWdlciAuLi4KCiAgICAgICAgICAgICAgLy8gLS0tLS0gTG9vayB
mb3Igc2luZ2xlIHZhbHVlCiAgICAgICAgICAgICAgaWYgKCR2X3NpemVfaXRlbV9saXN0ID09IDEpIHsKIC
AgICAgICAgICAgICAgICAgLy8gLS0tLS0gU2V0IHRoZSBvcHRpb24gdmFsdWUKICAgICAgICAgICAgICAgI
CAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV1bJGpdWydzdGFydCddID0gJHZfaXRlbV9s
aXN0WzBdOwogICAgICAgICAgICAgICAgICAkdl9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGldXVs
kal1bJ2VuZCddID0gJHZfaXRlbV9saXN0WzBdOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbH
NlaWYgKCR2X3NpemVfaXRlbV9saXN0ID09IDIpIHsKICAgICAgICAgICAgICAgICAgLy8gLS0tLS0gU2V0I
HRoZSBvcHRpb24gdmFsdWUKICAgICAgICAgICAgICAgICAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19s
aXN0WyRpXV1bJGpdWydzdGFydCddID0gJHZfaXRlbV9saXN0WzBdOwogICAgICAgICAgICAgICAgICAkdl9
yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGldXVskal1bJ2VuZCddID0gJHZfaXRlbV9saXN0WzFdOw
ogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgLy8gLS0tL
S0gRXJyb3IgbG9nCiAgICAgICAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJf
SU5WQUxJRF9PUFRJT05fVkFMVUUsICJUb28gbWFueSB2YWx1ZXMgaW4gaW5kZXggcmFuZ2UgZm9yIG9wdGl
vbiAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkcF9vcHRpb25zX2xpc3RbJGldKS4iJyIpOwoKICAgICAgIC
AgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVyc
m9yQ29kZSgpOwogICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGxp
c3Qgc29ydAogICAgICAgICAgICAgIGlmICgkdl9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGldXVs
kal1bJ3N0YXJ0J10gPCAkdl9zb3J0X3ZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICR2X3NvcnRfZmxhZz
10cnVlOwoKICAgICAgICAgICAgICAgICAgLy8gLS0tLS0gVEJDIDogQW4gYXV0b21hdGljIHNvcnQgc2hvd
WxkIGJlIHdyaXRlbiAuLi4KICAgICAgICAgICAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAg
ICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9PUFRJT05fVkFMVUU
sICJJbnZhbGlkIG9yZGVyIG9mIGluZGV4IHJhbmdlIGZvciBvcHRpb24gJyIuUGNsWmlwVXRpbE9wdGlvbl
RleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuIiciKTsKCiAgICAgICAgICAgICAgICAgIC8vIC0tLS0tIFJld
HVybgogICAgICAgICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgJHZfc29ydF92YWx1ZSA9ICR2X3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGl
zdFskaV1dWyRqXVsnc3RhcnQnXTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBTb3J0IHRoZS
BpdGVtcwogICAgICAgICAgaWYgKCR2X3NvcnRfZmxhZykgewogICAgICAgICAgICAgIC8vIFRCQyA6IFRvI
EJlIENvbXBsZXRlZAogICAgICAgICAgfQoKICAgICAgICAgIC8vIC0tLS0tIE5leHQgb3B0aW9uCiAgICAg
ICAgICAkaSsrOwogICAgICAgIGJyZWFrOwoKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBvcHRpb25zIHR
oYXQgcmVxdWVzdCBubyB2YWx1ZQogICAgICAgIGNhc2UgUENMWklQX09QVF9SRU1PVkVfQUxMX1BBVEggOg
ogICAgICAgIGNhc2UgUENMWklQX09QVF9FWFRSQUNUX0FTX1NUUklORyA6CiAgICAgICAgY2FzZSBQQ0xaS
VBfT1BUX05PX0NPTVBSRVNTSU9OIDoKICAgICAgICBjYXNlIFBDTFpJUF9PUFRfRVhUUkFDVF9JTl9PVVRQ
VVQgOgogICAgICAgIGNhc2UgUENMWklQX09QVF9SRVBMQUNFX05FV0VSIDoKICAgICAgICBjYXNlIFBDTFp
JUF9PUFRfU1RPUF9PTl9FUlJPUiA6CiAgICAgICAgICAkdl9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3
RbJGldXSA9IHRydWU7CiAgICAgICAgYnJlYWs7CgogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIG9wdGlvb
nMgdGhhdCByZXF1ZXN0IGFuIG9jdGFsIHZhbHVlCiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX1NFVF9DSE1P
RCA6CiAgICAgICAgICAvLyAtLS0tLSBDaGVjayB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMKICAgICAgICA
gIGlmICgoJGkrMSkgPj0gJHBfc2l6ZSkgewogICAgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgIC
AgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9NSVNTSU5HX09QVElPTl9WQUxVRSwgI
k1pc3NpbmcgcGFyYW1ldGVyIHZhbHVlIGZvciBvcHRpb24gJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHBf
b3B0aW9uc19saXN0WyRpXSkuIiciKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICA
gICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLS
BHZXQgdGhlIHZhbHVlCiAgICAgICAgICAkdl9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGldXSA9I
CRwX29wdGlvbnNfbGlzdFskaSsxXTsKICAgICAgICAgICRpKys7CiAgICAgICAgYnJlYWs7CgogICAgICAg
IC8vIC0tLS0tIExvb2sgZm9yIG9wdGlvbnMgdGhhdCByZXF1ZXN0IGEgY2FsbC1iYWNrCiAgICAgICAgY2F
zZSBQQ0xaSVBfQ0JfUFJFX0VYVFJBQ1QgOgogICAgICAgIGNhc2UgUENMWklQX0NCX1BPU1RfRVhUUkFDVC
A6CiAgICAgICAgY2FzZSBQQ0xaSVBfQ0JfUFJFX0FERCA6CiAgICAgICAgY2FzZSBQQ0xaSVBfQ0JfUE9TV
F9BREQgOgogICAgICAgIC8qIGZvciBmdXR1ciB1c2UKICAgICAgICBjYXNlIFBDTFpJUF9DQl9QUkVfREVM
RVRFIDoKICAgICAgICBjYXNlIFBDTFpJUF9DQl9QT1NUX0RFTEVURSA6CiAgICAgICAgY2FzZSBQQ0xaSVB
fQ0JfUFJFX0xJU1QgOgogICAgICAgIGNhc2UgUENMWklQX0NCX1BPU1RfTElTVCA6CiAgICAgICAgKi8KIC
AgICAgICAgIC8vIC0tLS0tIENoZWNrIHRoZSBudW1iZXIgb2YgcGFyYW1ldGVycwogICAgICAgICAgaWYgK
CgkaSsxKSA+PSAkcF9zaXplKSB7CiAgICAgICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgICAg
ICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX01JU1NJTkdfT1BUSU9OX1ZBTFVFLCAiTWlzc2l
uZyBwYXJhbWV0ZXIgdmFsdWUgZm9yIG9wdGlvbiAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkcF9vcHRpb2
5zX2xpc3RbJGldKS4iJyIpOwoKICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgIHJld
HVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIC0tLS0tIEdldCB0
aGUgdmFsdWUKICAgICAgICAgICR2X2Z1bmN0aW9uX25hbWUgPSAkcF9vcHRpb25zX2xpc3RbJGkrMV07Cgo
gICAgICAgICAgLy8gLS0tLS0gQ2hlY2sgdGhhdCB0aGUgdmFsdWUgaXMgYSB2YWxpZCBleGlzdGluZyBmdW
5jdGlvbgogICAgICAgICAgaWYgKCFmdW5jdGlvbl9leGlzdHMoJHZfZnVuY3Rpb25fbmFtZSkpIHsKICAgI
CAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBD
TFpJUF9FUlJfSU5WQUxJRF9PUFRJT05fVkFMVUU
sICJGdW5jdGlvbiAnIi4kdl9mdW5jdGlvbl9uYW1lLiIoKScgaXMgbm90IGFuIGV4aXN0aW5nIGZ1bmN0aW
9uIGZvciBvcHRpb24gJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuIiciK
TsKCiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJv
ckNvZGUoKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBTZXQgdGhlIGF0dHJpYnV0ZQogICA
gICAgICAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV0gPSAkdl9mdW5jdGlvbl9uYW1lOw
ogICAgICAgICAgJGkrKzsKICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdCA6CiAgICAgICAgICAvL
yAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5W
QUxJRF9QQVJBTUVURVIsCgkJICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBwYXJhbWV0ZXIgJyI
KCQkJCQkJCSAgIC4kcF9vcHRpb25zX2xpc3RbJGldLiInIik7CgogICAgICAgICAgLy8gLS0tLS0gUmV0dX
JuCiAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgfQoKICAgICAgLy8gLS0tL
S0gTmV4dCBvcHRpb25zCiAgICAgICRpKys7CiAgICB9CgogICAgLy8gLS0tLS0gTG9vayBmb3IgbWFuZGF0
b3J5IG9wdGlvbnMKICAgIGlmICgkdl9yZXF1ZXN0ZWRfb3B0aW9ucyAhPT0gZmFsc2UpIHsKICAgICAgZm9
yICgka2V5PXJlc2V0KCR2X3JlcXVlc3RlZF9vcHRpb25zKTsgJGtleT1rZXkoJHZfcmVxdWVzdGVkX29wdG
lvbnMpOyAka2V5PW5leHQoJHZfcmVxdWVzdGVkX29wdGlvbnMpKSB7CiAgICAgICAgLy8gLS0tLS0gTG9va
yBmb3IgbWFuZGF0b3J5IG9wdGlvbgogICAgICAgIGlmICgkdl9yZXF1ZXN0ZWRfb3B0aW9uc1ska2V5XSA9
PSAnbWFuZGF0b3J5JykgewogICAgICAgICAgLy8gLS0tLS0gTG9vayBpZiBwcmVzZW50CiAgICAgICAgICB
pZiAoIWlzc2V0KCR2X3Jlc3VsdF9saXN0WyRrZXldKSkgewogICAgICAgICAgICAvLyAtLS0tLSBFcnJvci
Bsb2cKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNR
VRFUiwgIk1pc3NpbmcgbWFuZGF0b3J5IHBhcmFtZXRlciAiLlBjbFppcFV0aWxPcHRpb25UZXh0KCRrZXkp
LiIoIi4ka2V5LiIpIik7CgogICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgICAgcmV0dXJ
uIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogIC
AgLy8gLS0tLS0gTG9vayBmb3IgZGVmYXVsdCB2YWx1ZXMKICAgIGlmICghaXNzZXQoJHZfcmVzdWx0X2xpc
3RbUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEXSkpIHsKCiAgICB9CgogICAgLy8gLS0tLS0gUmV0
dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogcHJpdk9wdGlvbkRlZmF1bHRUaHJlc2hvbGQoKQog
IC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyA
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZPcHRpb25EZWZhdWx0VGhyZXNob2xkKCYkcF9vc
HRpb25zKQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9P
UFRfVEVNUF9GSUxFX1RIUkVTSE9MRF0pCiAgICAgICAgfHwgaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1B
UX1RFTVBfRklMRV9PRkZdKSkgewogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKICAgIC8vIC0tLS
0tIEdldCAnbWVtb3J5X2xpbWl0JyBjb25maWd1cmF0aW9uIHZhbHVlCiAgICAkdl9tZW1vcnlfbGltaXQgP
SBpbmlfZ2V0KCdtZW1vcnlfbGltaXQnKTsKICAgICR2X21lbW9yeV9saW1pdCA9IHRyaW0oJHZfbWVtb3J5
X2xpbWl0KTsKICAgICRsYXN0ID0gc3RydG9sb3dlcihzdWJzdHIoJHZfbWVtb3J5X2xpbWl0LCAtMSkpOwo
KICAgIGlmKCRsYXN0ID09ICdnJykKICAgICAgICAvLyR2X21lbW9yeV9saW1pdCA9ICR2X21lbW9yeV9saW
1pdCoxMDI0KjEwMjQqMTAyNDsKICAgICAgICAkdl9tZW1vcnlfbGltaXQgPSAkdl9tZW1vcnlfbGltaXQqM
TA3Mzc0MTgyNDsKICAgIGlmKCRsYXN0ID09ICdtJykKICAgICAgICAvLyR2X21lbW9yeV9saW1pdCA9ICR2
X21lbW9yeV9saW1pdCoxMDI0KjEwMjQ7CiAgICAgICAgJHZfbWVtb3J5X2xpbWl0ID0gJHZfbWVtb3J5X2x
pbWl0KjEwNDg1NzY7CiAgICBpZigkbGFzdCA9PSAnaycpCiAgICAgICAgJHZfbWVtb3J5X2xpbWl0ID0gJH
ZfbWVtb3J5X2xpbWl0KjEwMjQ7CgogICAgJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1RFTVBfRklMRV9USFJFU
0hPTERdID0gZmxvb3IoJHZfbWVtb3J5X2xpbWl0KlBDTFpJUF9URU1QT1JBUllfRklMRV9SQVRJTyk7CgoK
ICAgIC8vIC0tLS0tIFNhbml0eSBjaGVjayA6IE5vIHRocmVzaG9sZCBpZiB2YWx1ZSBsb3dlciB0aGFuIDF
NCiAgICBpZiAoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1RFTVBfRklMRV9USFJFU0hPTERdIDwgMTA0ODU3Ni
kgewogICAgICB1bnNldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfVEVNUF9GSUxFX1RIUkVTSE9MRF0pOwogI
CAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZGaWxlR
GVzY3JQYXJzZUF0dCgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIFJldHVy
biBWYWx1ZXMgOgogIC8vICAgMSBvbiBzdWNjZXNzLgogIC8vICAgMCBvbiBmYWlsdXJlLgogIC8vIC0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdkZpbGVEZXNjclBhcnNlQXR0KCYkcF9maWxlX2xpc3QsI
CYkcF9maWxlZGVzY3IsICR2X29wdGlvbnMsICR2X3JlcXVlc3RlZF9vcHRpb25zPWZhbHNlKQogIHsKICAg
ICR2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIEZvciBlYWNoIGZpbGUgaW4gdGhlIGxpc3QgY2hlY2sgdGh
lIGF0dHJpYnV0ZXMKICAgIGZvcmVhY2ggKCRwX2ZpbGVfbGlzdCBhcyAkdl9rZXkgPT4gJHZfdmFsdWUpIH
sKCiAgICAgIC8vIC0tLS0tIENoZWNrIGlmIHRoZSBvcHRpb24gaXMgc3VwcG9ydGVkCiAgICAgIGlmICgha
XNzZXQoJHZfcmVxdWVzdGVkX29wdGlvbnNbJHZfa2V5XSkpIHsKICAgICAgICAvLyAtLS0tLSBFcnJvciBs
b2cKICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVEVSLCA
iSW52YWxpZCBmaWxlIGF0dHJpYnV0ZSAnIi4kdl9rZXkuIicgZm9yIHRoaXMgZmlsZSIpOwoKICAgICAgIC
AvLyAtLS0tLSBSZXR1cm4KICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgfQoKI
CAgICAgLy8gLS0tLS0gTG9vayBmb3IgYXR0cmlidXRlCiAgICAgIHN3aXRjaCAoJHZfa2V5KSB7CiAgICAg
ICAgY2FzZSBQQ0xaSVBfQVRUX0ZJTEVfTkFNRSA6CiAgICAgICAgICBpZiAoIWlzX3N0cmluZygkdl92YWx
1ZSkpIHsKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX0FUVF
JJQlVURV9WQUxVRSwgIkludmFsaWQgdHlwZSAiLmdldHR5cGUoJHZfdmFsdWUpLiIuIFN0cmluZyBleHBlY
3RlZCBmb3IgYXR0cmlidXRlICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCR2X2tleSkuIiciKTsKICAgICAg
ICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CgogICAgICAgICAgJHBfZml
sZWRlc2NyWydmaWxlbmFtZSddID0gUGNsWmlwVXRpbFBhdGhSZWR1Y3Rpb24oJHZfdmFsdWUpOwoKICAgIC
AgICAgIGlmICgkcF9maWxlZGVzY3JbJ2ZpbGVuYW1lJ10gPT0gJycpIHsKICAgICAgICAgICAgUGNsWmlwO
jpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX0FUVFJJQlVURV9WQUxVRSwgIkludmFsaWQgZW1w
dHkgZmlsZW5hbWUgZm9yIGF0dHJpYnV0ZSAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkdl9rZXkpLiInIik
7CiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgICAgfQoKICAgICAgIC
BicmVhazsKCiAgICAgICAgY2FzZSBQQ0xaSVBfQVRUX0ZJTEVfTkVXX1NIT1JUX05BTUUgOgogICAgICAgI
CAgaWYgKCFpc19zdHJpbmcoJHZfdmFsdWUpKSB7CiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9n
KFBDTFpJUF9FUlJfSU5WQUxJRF9BVFRSSUJVVEVfVkFMVUUsICJJbnZhbGlkIHR5cGUgIi5nZXR0eXBlKCR
2X3ZhbHVlKS4iLiBTdHJpbmcgZXhwZWN0ZWQgZm9yIGF0dHJpYnV0ZSAnIi5QY2xaaXBVdGlsT3B0aW9uVG
V4dCgkdl9rZXkpLiInIik7CiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgI
CAgICAgfQoKICAgICAgICAgICRwX2ZpbGVkZXNjclsnbmV3X3Nob3J0X25hbWUnXSA9IFBjbFppcFV0aWxQ
YXRoUmVkdWN0aW9uKCR2X3ZhbHVlKTsKCiAgICAgICAgICBpZiAoJHBfZmlsZWRlc2NyWyduZXdfc2hvcnR
fbmFtZSddID09ICcnKSB7CiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU
5WQUxJRF9BVFRSSUJVVEVfVkFMVUUsICJJbnZhbGlkIGVtcHR5IHNob3J0IGZpbGVuYW1lIGZvciBhdHRya
WJ1dGUgJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHZfa2V5KS4iJyIpOwogICAgICAgICAgICByZXR1cm4g
UGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KICAgICAgICBicmVhazsKCiAgICAgICAgY2FzZSB
QQ0xaSVBfQVRUX0ZJTEVfTkVXX0ZVTExfTkFNRSA6CiAgICAgICAgICBpZiAoIWlzX3N0cmluZygkdl92YW
x1ZSkpIHsKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX0FUV
FJJQlVURV9WQUxVRSwgIkludmFsaWQgdHlwZSAiLmdldHR5cGUoJHZfdmFsdWUpLiIuIFN0cmluZyBleHBl
Y3RlZCBmb3IgYXR0cmlidXRlICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCR2X2tleSkuIiciKTsKICAgICA
gICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CgogICAgICAgICAgJHBfZm
lsZWRlc2NyWyduZXdfZnVsbF9uYW1lJ10gPSBQY2xaaXBVdGlsUGF0aFJlZHVjdGlvbigkdl92YWx1ZSk7C
gogICAgICAgICAgaWYgKCRwX2ZpbGVkZXNjclsnbmV3X2Z1bGxfbmFtZSddID09ICcnKSB7CiAgICAgICAg
ICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9BVFRSSUJVVEVfVkFMVUUsICJ
JbnZhbGlkIGVtcHR5IGZ1bGwgZmlsZW5hbWUgZm9yIGF0dHJpYnV0ZSAnIi5QY2xaaXBVdGlsT3B0aW9uVG
V4dCgkdl9rZXkpLiInIik7CiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgI
CAgICAgfQogICAgICAgIGJyZWFrOwoKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBvcHRpb25zIHRoYXQg
dGFrZXMgYSBzdHJpbmcKICAgICAgICBjYXNlIFBDTFpJUF9BVFRfRklMRV9DT01NRU5UIDoKICAgICAgICA
gIGlmICghaXNfc3RyaW5nKCR2X3ZhbHVlKSkgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZy
hQQ0xaSVBfRVJSX0lOVkFMSURfQVRUUklCVVRFX1ZBTFVFLCAiSW52YWxpZCB0eXBlICIuZ2V0dHlwZSgkd
l92YWx1ZSkuIi4gU3RyaW5nIGV4cGVjdGVkIGZvciBhdHRyaWJ1dGUgJyIuUGNsWmlwVXRpbE9wdGlvblRl
eHQoJHZfa2V5KS4iJyIpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICA
gICAgIH0KCiAgICAgICAgICAkcF9maWxlZGVzY3JbJ2NvbW1lbnQnXSA9ICR2X3ZhbHVlOwogICAgICAgIG
JyZWFrOwoKICAgICAgICBjYXNlIFBDTFpJUF9BVFRfRklMRV9NVElNRSA6CiAgICAgICAgICBpZiAoIWlzX
2ludGVnZXIoJHZfdmFsdWUpKSB7CiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9F
UlJfSU5WQUxJRF9BVFRSSUJVVEVfVkFMVUUsICJJbnZhbGlkIHR5cGUgIi5nZXR0eXBlKCR2X3ZhbHVlKS4
iLiBJbnRlZ2VyIGV4cGVjdGVkIGZvciBhdHRyaWJ1dGUgJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHZfa2
V5KS4iJyIpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KC
iAgICAgICAgICAkcF9maWxlZGVzY3JbJ210aW1lJ10gPSAkdl92YWx1ZTsKICAgICAgICBicmVhazsKCiAg
ICAgICAgY2FzZSBQQ0xaSVBfQVRUX0ZJTEVfQ09OVEVOVCA6CiAgICAgICAgICAkcF9maWxlZGVzY3JbJ2N
vbnRlbnQnXSA9ICR2X3ZhbHVlOwogICAgICAgIGJyZWFrOwoKICAgICAgICBkZWZhdWx0IDoKICAgICAgIC
AgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSU
l9JTlZBTElEX1BBUkFNRVRFUiwKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5rbm93biBwYXJh
bWV0ZXIgJyIuJHZfa2V5LiInIik7CgogICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICByZXR
1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgbWFuZG
F0b3J5IG9wdGlvbnMKICAgICAgaWYgKCR2X3JlcXVlc3RlZF9vcHRpb25zICE9PSBmYWxzZSkgewogICAgI
CAgIGZvciAoJGtleT1yZXNldCgkdl9yZXF1ZXN0ZWRfb3B0aW9ucyk7ICRrZXk9a2V5KCR2X3JlcXVlc3Rl
ZF9vcHRpb25zKTsgJGtleT1uZXh0KCR2X3JlcXVlc3RlZF9vcHRpb25zKSkgewogICAgICAgICAgLy8gLS0
tLS0gTG9vayBmb3IgbWFuZGF0b3J5IG9wdGlvbgogICAgICAgICAgaWYgKCR2X3JlcXVlc3RlZF9vcHRpb2
5zWyRrZXldID09ICdtYW5kYXRvcnknKSB7CiAgICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgcHJlc2Vud
AogICAgICAgICAgICBpZiAoIWlzc2V0KCRwX2ZpbGVfbGlzdFska2V5XSkpIHsKICAgICAgICAgICAgICBQ
Y2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVEVSLCAiTWlzc2luZyBtYW5
kYXRvcnkgcGFyYW1ldGVyICIuUGNsWmlwVXRpbE
9wdGlvblRleHQoJGtleSkuIigiLiRrZXkuIikiKTsKICAgICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplc
nJvckNvZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgIC8v
IGVuZCBmb3JlYWNoCiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0Owo
gIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0
aW9uIDogcHJpdkZpbGVEZXNjckV4cGFuZCgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVGhpcyBtZXR
ob2QgbG9vayBmb3IgZWFjaCBpdGVtIG9mIHRoZSBsaXN0IHRvIHNlZSBpZiBpdHMgYSBmaWxlLCBhIGZvbG
RlcgogIC8vICAgb3IgYSBzdHJpbmcgdG8gYmUgYWRkZWQgYXMgZmlsZS4gRm9yIGFueSBvdGhlciB0eXBlI
G9mIGZpbGVzIChsaW5rLCBvdGhlcikKICAvLyAgIGp1c3QgaWdub3JlIHRoZSBpdGVtLgogIC8vICAgVGhl
biBwcmVwYXJlIHRoZSBpbmZvcm1hdGlvbiB0aGF0IHdpbGwgYmUgc3RvcmVkIGZvciB0aGF0IGZpbGUuCiA
gLy8gICBXaGVuIGl0cyBhIGZvbGRlciwgZXhwYW5kIHRoZSBmb2xkZXIgd2l0aCBhbGwgdGhlIGZpbGVzIH
RoYXQgYXJlIGluIHRoYXQKICAvLyAgIGZvbGRlciAocmVjdXJzaXZlbHkpLgogIC8vIFBhcmFtZXRlcnMgO
gogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vICAgMSBvbiBzdWNjZXNzLgogIC8vICAgMCBvbiBmYWlsdXJl
LgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdkZpbGVEZXNjckV4cGFuZCgmJHBfZm
lsZWRlc2NyX2xpc3QsICYkcF9vcHRpb25zKQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tI
ENyZWF0ZSBhIHJlc3VsdCBsaXN0CiAgICAkdl9yZXN1bHRfbGlzdCA9IGFycmF5KCk7CgogICAgLy8gLS0t
LS0gTG9vayBlYWNoIGVudHJ5CiAgICBmb3IgKCRpPTA7ICRpPHNpemVvZigkcF9maWxlZGVzY3JfbGlzdCk
7ICRpKyspIHsKCiAgICAgIC8vIC0tLS0tIEdldCBmaWxlZGVzY3IKICAgICAgJHZfZGVzY3IgPSAkcF9maW
xlZGVzY3JfbGlzdFskaV07CgogICAgICAvLyAtLS0tLSBSZWR1Y2UgdGhlIGZpbGVuYW1lCiAgICAgICR2X
2Rlc2NyWydmaWxlbmFtZSddID0gUGNsWmlwVXRpbFRyYW5zbGF0ZVdpblBhdGgoJHZfZGVzY3JbJ2ZpbGVu
YW1lJ10sIGZhbHNlKTsKICAgICAgJHZfZGVzY3JbJ2ZpbGVuYW1lJ10gPSBQY2xaaXBVdGlsUGF0aFJlZHV
jdGlvbigkdl9kZXNjclsnZmlsZW5hbWUnXSk7CgogICAgICAvLyAtLS0tLSBMb29rIGZvciByZWFsIGZpbG
Ugb3IgZm9sZGVyCiAgICAgIGlmIChmaWxlX2V4aXN0cygkdl9kZXNjclsnZmlsZW5hbWUnXSkpIHsKICAgI
CAgICBpZiAoQGlzX2ZpbGUoJHZfZGVzY3JbJ2ZpbGVuYW1lJ10pKSB7CiAgICAgICAgICAkdl9kZXNjclsn
dHlwZSddID0gJ2ZpbGUnOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChAaXNfZGlyKCR2X2Rlc2NyWyd
maWxlbmFtZSddKSkgewogICAgICAgICAgJHZfZGVzY3JbJ3R5cGUnXSA9ICdmb2xkZXInOwogICAgICAgIH
0KICAgICAgICBlbHNlIGlmIChAaXNfbGluaygkdl9kZXNjclsnZmlsZW5hbWUnXSkpIHsKICAgICAgICAgI
C8vIHNraXAKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAg
IC8vIHNraXAKICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gLS0tLS0
gTG9vayBmb3Igc3RyaW5nIGFkZGVkIGFzIGZpbGUKICAgICAgZWxzZSBpZiAoaXNzZXQoJHZfZGVzY3JbJ2
NvbnRlbnQnXSkpIHsKICAgICAgICAkdl9kZXNjclsndHlwZSddID0gJ3ZpcnR1YWxfZmlsZSc7CiAgICAgI
H0KCiAgICAgIC8vIC0tLS0tIE1pc3NpbmcgZmlsZQogICAgICBlbHNlIHsKICAgICAgICAvLyAtLS0tLSBF
cnJvciBsb2cKICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX01JU1NJTkdfRklMRSw
gIkZpbGUgJyIuJHZfZGVzY3JbJ2ZpbGVuYW1lJ10uIicgZG9lcyBub3QgZXhpc3QiKTsKCiAgICAgICAgLy
8gLS0tLS0gUmV0dXJuCiAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgIH0KCiAgI
CAgIC8vIC0tLS0tIENhbGN1bGF0ZSB0aGUgc3RvcmVkIGZpbGVuYW1lCiAgICAgICR0aGlzLT5wcml2Q2Fs
Y3VsYXRlU3RvcmVkRmlsZW5hbWUoJHZfZGVzY3IsICRwX29wdGlvbnMpOwoKICAgICAgLy8gLS0tLS0gQWR
kIHRoZSBkZXNjcmlwdG9yIGluIHJlc3VsdCBsaXN0CiAgICAgICR2X3Jlc3VsdF9saXN0W3NpemVvZigkdl
9yZXN1bHRfbGlzdCldID0gJHZfZGVzY3I7CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBmb2xkZXIKICAgI
CAgaWYgKCR2X2Rlc2NyWyd0eXBlJ10gPT0gJ2ZvbGRlcicpIHsKICAgICAgICAvLyAtLS0tLSBMaXN0IG9m
IGl0ZW1zIGluIGZvbGRlcgogICAgICAgICR2X2Rpcmxpc3RfZGVzY3IgPSBhcnJheSgpOwogICAgICAgICR
2X2Rpcmxpc3RfbmIgPSAwOwogICAgICAgIGlmICgkdl9mb2xkZXJfaGFuZGxlciA9IEBvcGVuZGlyKCR2X2
Rlc2NyWydmaWxlbmFtZSddKSkgewogICAgICAgICAgd2hpbGUgKCgkdl9pdGVtX2hhbmRsZXIgPSBAcmVhZ
GRpcigkdl9mb2xkZXJfaGFuZGxlcikpICE9PSBmYWxzZSkgewoKICAgICAgICAgICAgLy8gLS0tLS0gU2tp
cCAnLicgYW5kICcuLicKICAgICAgICAgICAgaWYgKCgkdl9pdGVtX2hhbmRsZXIgPT0gJy4nKSB8fCAoJHZ
faXRlbV9oYW5kbGVyID09ICcuLicpKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgIC
AgfQoKICAgICAgICAgICAgLy8gLS0tLS0gQ29tcG9zZSB0aGUgZnVsbCBmaWxlbmFtZQogICAgICAgICAgI
CAkdl9kaXJsaXN0X2Rlc2NyWyR2X2Rpcmxpc3RfbmJdWydmaWxlbmFtZSddID0gJHZfZGVzY3JbJ2ZpbGVu
YW1lJ10uJy8nLiR2X2l0ZW1faGFuZGxlcjsKCiAgICAgICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGRpZmZ
lcmVudCBzdG9yZWQgZmlsZW5hbWUKICAgICAgICAgICAgLy8gQmVjYXVzZSB0aGUgbmFtZSBvZiB0aGUgZm
9sZGVyIHdhcyBjaGFuZ2VkLCB0aGUgbmFtZSBvZiB0aGUKICAgICAgICAgICAgLy8gZmlsZXMvc3ViLWZvb
GRlcnMgYWxzbyBjaGFuZ2UKICAgICAgICAgICAgaWYgKCgkdl9kZXNjclsnc3RvcmVkX2ZpbGVuYW1lJ10g
IT0gJHZfZGVzY3JbJ2ZpbGVuYW1lJ10pCiAgICAgICAgICAgICAgICAgJiYgKCFpc3NldCgkcF9vcHRpb25
zW1BDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQVRIXSkpKSB7CiAgICAgICAgICAgICAgaWYgKCR2X2Rlc2NyWy
dzdG9yZWRfZmlsZW5hbWUnXSAhPSAnJykgewogICAgICAgICAgICAgICAgJHZfZGlybGlzdF9kZXNjclskd
l9kaXJsaXN0X25iXVsnbmV3X2Z1bGxfbmFtZSddID0gJHZfZGVzY3JbJ3N0b3JlZF9maWxlbmFtZSddLicv
Jy4kdl9pdGVtX2hhbmRsZXI7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGVsc2UgewogICAgICA
gICAgICAgICAgJHZfZGlybGlzdF9kZXNjclskdl9kaXJsaXN0X25iXVsnbmV3X2Z1bGxfbmFtZSddID0gJH
ZfaXRlbV9oYW5kbGVyOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJHZfZ
GlybGlzdF9uYisrOwogICAgICAgICAgfQoKICAgICAgICAgIEBjbG9zZWRpcigkdl9mb2xkZXJfaGFuZGxl
cik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgLy8gVEJDIDogdW5hYmxlIHRvIG9wZW4
gZm9sZGVyIGluIHJlYWQgbW9kZQogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0gRXhwYW5kIGVhY2ggZW
xlbWVudCBvZiB0aGUgbGlzdAogICAgICAgIGlmICgkdl9kaXJsaXN0X25iICE9IDApIHsKICAgICAgICAgI
C8vIC0tLS0tIEV4cGFuZAogICAgICAgICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkZpbGVEZXNj
ckV4cGFuZCgkdl9kaXJsaXN0X2Rlc2NyLCAkcF9vcHRpb25zKSkgIT0gMSkgewogICAgICAgICAgICByZXR
1cm4gJHZfcmVzdWx0OwogICAgICAgICAgfQoKICAgICAgICAgIC8vIC0tLS0tIENvbmNhdCB0aGUgcmVzdW
x0aW5nIGxpc3QKICAgICAgICAgICR2X3Jlc3VsdF9saXN0ID0gYXJyYXlfbWVyZ2UoJHZfcmVzdWx0X2xpc
3QsICR2X2Rpcmxpc3RfZGVzY3IpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICB9CgogICAg
ICAgIC8vIC0tLS0tIEZyZWUgbG9jYWwgYXJyYXkKICAgICAgICB1bnNldCgkdl9kaXJsaXN0X2Rlc2NyKTs
KICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIEdldCB0aGUgcmVzdWx0IGxpc3QKICAgICRwX2ZpbGVkZX
Njcl9saXN0ID0gJHZfcmVzdWx0X2xpc3Q7CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfc
mVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC
8vIEZ1bmN0aW9uIDogcHJpdkNyZWF0ZSgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgO
gogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdkN
yZWF0ZSgkcF9maWxlZGVzY3JfbGlzdCwgJiRwX3Jlc3VsdF9saXN0LCAmJHBfb3B0aW9ucykKICB7CiAgIC
Akdl9yZXN1bHQ9MTsKICAgICR2X2xpc3RfZGV0YWlsID0gYXJyYXkoKTsKCiAgICAvLyAtLS0tLSBNYWdpY
yBxdW90ZXMgdHJpY2sKICAgICR0aGlzLT5wcml2RGlzYWJsZU1hZ2ljUXVvdGVzKCk7CgogICAgLy8gLS0t
LS0gT3BlbiB0aGUgZmlsZSBpbiB3cml0ZSBtb2RlCiAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml
2T3BlbkZkKCd3YicpKSAhPSAxKQogICAgewogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIC
R2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBBZGQgdGhlIGxpc3Qgb2YgZmlsZXMKICAgICR2X3Jlc
3VsdCA9ICR0aGlzLT5wcml2QWRkTGlzdCgkcF9maWxlZGVzY3JfbGlzdCwgJHBfcmVzdWx0X2xpc3QsICRw
X29wdGlvbnMpOwoKICAgIC8vIC0tLS0tIENsb3NlCiAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKCiAgICA
vLyAtLS0tLSBNYWdpYyBxdW90ZXMgdHJpY2sKICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3Rlcy
gpOwoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZBZGQoKQ
ogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvL
yAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZBZGQoJHBfZmlsZWRlc2NyX2xpc3QsICYkcF9
yZXN1bHRfbGlzdCwgJiRwX29wdGlvbnMpCiAgewogICAgJHZfcmVzdWx0PTE7CiAgICAkdl9saXN0X2RldG
FpbCA9IGFycmF5KCk7CgogICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgYXJjaGl2ZSBleGlzdHMgb3IgaXMgZ
W1wdHkKICAgIGlmICgoIWlzX2ZpbGUoJHRoaXMtPnppcG5hbWUpKSB8fCAoZmlsZXNpemUoJHRoaXMtPnpp
cG5hbWUpID09IDApKQogICAgewoKICAgICAgLy8gLS0tLS0gRG8gYSBjcmVhdGUKICAgICAgJHZfcmVzdWx
0ID0gJHRoaXMtPnByaXZDcmVhdGUoJHBfZmlsZWRlc2NyX2xpc3QsICRwX3Jlc3VsdF9saXN0LCAkcF9vcH
Rpb25zKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQogI
CAgLy8gLS0tLS0gTWFnaWMgcXVvdGVzIHRyaWNrCiAgICAkdGhpcy0+cHJpdkRpc2FibGVNYWdpY1F1b3Rl
cygpOwoKICAgIC8vIC0tLS0tIE9wZW4gdGhlIHppcCBmaWxlCiAgICBpZiAoKCR2X3Jlc3VsdD0kdGhpcy0
+cHJpdk9wZW5GZCgncmInKSkgIT0gMSkKICAgIHsKICAgICAgLy8gLS0tLS0gTWFnaWMgcXVvdGVzIHRyaW
NrCiAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgLy8gLS0tLS0gUmV0d
XJuCiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgY2VudHJh
bCBkaXJlY3RvcnkgaW5mb3JtYXRpb25zCiAgICAkdl9jZW50cmFsX2RpciA9IGFycmF5KCk7CiAgICBpZiA
oKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2UmVhZEVuZENlbnRyYWxEaXIoJHZfY2VudHJhbF9kaXIpKSAhPS
AxKQogICAgewogICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgJHRoaXMtPnByaXZTd2FwQmFja
01hZ2ljUXVvdGVzKCk7CiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gR28g
dG8gYmVnaW5uaW5nIG9mIEZpbGUKICAgIEByZXdpbmQoJHRoaXMtPnppcF9mZCk7CgogICAgLy8gLS0tLS0
gQ3JlYXRlcyBhIHRlbXBvcmF5IGZpbGUKICAgICR2X3ppcF90ZW1wX25hbWUgPSBQQ0xaSVBfVEVNUE9SQV
JZX0RJUi51bmlxaWQoJ3BjbHppcC0nKS4nLnRtcCc7CgogICAgLy8gLS0tLS0gT3BlbiB0aGUgdGVtcG9yY
XJ5IGZpbGUgaW4gd3JpdGUgbW9kZQogICAgaWYgKCgkdl96aXBfdGVtcF9mZCA9IEBmb3Blbigkdl96aXBf
dGVtcF9uYW1lLCAnd2InKSkgPT0gMCkKICAgIHsKICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICA
gICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2
coUENMWklQX0VSUl9SRUFEX09QRU5fRkFJTCwgJ1VuYWJsZSB0byBvcGVuIHRlbXBvcmFyeSBmaWxlIFwnJ
y4kdl96aXBfdGVtcF9uYW1lLidcJyBpbiBiaW5hcnkgd3JpdGUgbW9kZScpOwoKICAgICAgLy8gLS0tLS0g
UmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgfQoKICAgIC8vIC0tLS0tIEN
vcHkgdGhlIGZpbGVzIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIHRlbXBvcmFyeSBmaWxlCiAgICAvLyBUQk
MgOiBIZXJlIEkgc2hvdWxkIGJldHRlciBhcHBlb
mQgdGhlIGZpbGUgYW5kIGdvIGJhY2sgdG8gZXJhc2UgdGhlIGNlbnRyYWwgZGlyCiAgICAkdl9zaXplID0g
JHZfY2VudHJhbF9kaXJbJ29mZnNldCddOwogICAgd2hpbGUgKCR2X3NpemUgIT0gMCkKICAgIHsKICAgICA
gJHZfcmVhZF9zaXplID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFID8gJHZfc2l6ZSA6IF
BDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICAkdl9idWZmZXIgPSBmcmVhZCgkdGhpcy0+emlwX2ZkL
CAkdl9yZWFkX3NpemUpOwogICAgICBAZndyaXRlKCR2X3ppcF90ZW1wX2ZkLCAkdl9idWZmZXIsICR2X3Jl
YWRfc2l6ZSk7CiAgICAgICR2X3NpemUgLT0gJHZfcmVhZF9zaXplOwogICAgfQoKICAgIC8vIC0tLS0tIFN
3YXAgdGhlIGZpbGUgZGVzY3JpcHRvcgogICAgLy8gSGVyZSBpcyBhIHRyaWNrIDogSSBzd2FwIHRoZSB0ZW
1wb3JhcnkgZmQgd2l0aCB0aGUgemlwIGZkLCBpbiBvcmRlciB0byB1c2UKICAgIC8vIHRoZSBmb2xsb3dpb
mcgbWV0aG9kcyBvbiB0aGUgdGVtcG9yYXJ5IGZpbCBhbmQgbm90IHRoZSByZWFsIGFyY2hpdmUKICAgICR2
X3N3YXAgPSAkdGhpcy0+emlwX2ZkOwogICAgJHRoaXMtPnppcF9mZCA9ICR2X3ppcF90ZW1wX2ZkOwogICA
gJHZfemlwX3RlbXBfZmQgPSAkdl9zd2FwOwoKICAgIC8vIC0tLS0tIEFkZCB0aGUgZmlsZXMKICAgICR2X2
hlYWRlcl9saXN0ID0gYXJyYXkoKTsKICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZBZGRGaWxlT
GlzdCgkcF9maWxlZGVzY3JfbGlzdCwgJHZfaGVhZGVyX2xpc3QsICRwX29wdGlvbnMpKSAhPSAxKQogICAg
ewogICAgICBmY2xvc2UoJHZfemlwX3RlbXBfZmQpOwogICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICA
gICAgQHVubGluaygkdl96aXBfdGVtcF9uYW1lKTsKICAgICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljUX
VvdGVzKCk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KC
iAgICAvLyAtLS0tLSBTdG9yZSB0aGUgb2Zmc2V0IG9mIHRoZSBjZW50cmFsIGRpcgogICAgJHZfb2Zmc2V0
ID0gQGZ0ZWxsKCR0aGlzLT56aXBfZmQpOwoKICAgIC8vIC0tLS0tIENvcHkgdGhlIGJsb2NrIG9mIGZpbGU
gaGVhZGVycyBmcm9tIHRoZSBvbGQgYXJjaGl2ZQogICAgJHZfc2l6ZSA9ICR2X2NlbnRyYWxfZGlyWydzaX
plJ107CiAgICB3aGlsZSAoJHZfc2l6ZSAhPSAwKQogICAgewogICAgICAkdl9yZWFkX3NpemUgPSAoJHZfc
2l6ZSA8IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUgPyAkdl9zaXplIDogUENMWklQX1JFQURfQkxPQ0tfU0la
RSk7CiAgICAgICR2X2J1ZmZlciA9IEBmcmVhZCgkdl96aXBfdGVtcF9mZCwgJHZfcmVhZF9zaXplKTsKICA
gICAgQGZ3cml0ZSgkdGhpcy0+emlwX2ZkLCAkdl9idWZmZXIsICR2X3JlYWRfc2l6ZSk7CiAgICAgICR2X3
NpemUgLT0gJHZfcmVhZF9zaXplOwogICAgfQoKICAgIC8vIC0tLS0tIENyZWF0ZSB0aGUgQ2VudHJhbCBEa
XIgZmlsZXMgaGVhZGVyCiAgICBmb3IgKCRpPTAsICR2X2NvdW50PTA7ICRpPHNpemVvZigkdl9oZWFkZXJf
bGlzdCk7ICRpKyspCiAgICB7CiAgICAgIC8vIC0tLS0tIENyZWF0ZSB0aGUgZmlsZSBoZWFkZXIKICAgICA
gaWYgKCR2X2hlYWRlcl9saXN0WyRpXVsnc3RhdHVzJ10gPT0gJ29rJykgewogICAgICAgIGlmICgoJHZfcm
VzdWx0ID0gJHRoaXMtPnByaXZXcml0ZUNlbnRyYWxGaWxlSGVhZGVyKCR2X2hlYWRlcl9saXN0WyRpXSkpI
CE9IDEpIHsKICAgICAgICAgIGZjbG9zZSgkdl96aXBfdGVtcF9mZCk7CiAgICAgICAgICAkdGhpcy0+cHJp
dkNsb3NlRmQoKTsKICAgICAgICAgIEB1bmxpbmsoJHZfemlwX3RlbXBfbmFtZSk7CiAgICAgICAgICAkdGh
pcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgIC
AgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgfQogICAgICAgICR2X2NvdW50Kys7CiAgICAgIH0KC
iAgICAgIC8vIC0tLS0tIFRyYW5zZm9ybSB0aGUgaGVhZGVyIHRvIGEgJ3VzYWJsZScgaW5mbwogICAgICAk
dGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIyRmlsZUluZm8oJHZfaGVhZGVyX2xpc3RbJGldLCAkcF9yZXN1bHR
fbGlzdFskaV0pOwogICAgfQoKICAgIC8vIC0tLS0tIFppcCBmaWxlIGNvbW1lbnQKICAgICR2X2NvbW1lbn
QgPSAkdl9jZW50cmFsX2RpclsnY29tbWVudCddOwogICAgaWYgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX
09QVF9DT01NRU5UXSkpIHsKICAgICAgJHZfY29tbWVudCA9ICRwX29wdGlvbnNbUENMWklQX09QVF9DT01N
RU5UXTsKICAgIH0KICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQUREX0NPTU1FTlRdKSk
gewogICAgICAkdl9jb21tZW50ID0gJHZfY29tbWVudC4kcF9vcHRpb25zW1BDTFpJUF9PUFRfQUREX0NPTU
1FTlRdOwogICAgfQogICAgaWYgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9QUkVQRU5EX0NPTU1FT
lRdKSkgewogICAgICAkdl9jb21tZW50ID0gJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1BSRVBFTkRfQ09NTUVO
VF0uJHZfY29tbWVudDsKICAgIH0KCiAgICAvLyAtLS0tLSBDYWxjdWxhdGUgdGhlIHNpemUgb2YgdGhlIGN
lbnRyYWwgaGVhZGVyCiAgICAkdl9zaXplID0gQGZ0ZWxsKCR0aGlzLT56aXBfZmQpLSR2X29mZnNldDsKCi
AgICAvLyAtLS0tLSBDcmVhdGUgdGhlIGNlbnRyYWwgZGlyIGZvb3RlcgogICAgaWYgKCgkdl9yZXN1bHQgP
SAkdGhpcy0+cHJpdldyaXRlQ2VudHJhbEhlYWRlcigkdl9jb3VudCskdl9jZW50cmFsX2RpclsnZW50cmll
cyddLCAkdl9zaXplLCAkdl9vZmZzZXQsICR2X2NvbW1lbnQpKSAhPSAxKQogICAgewogICAgICAvLyAtLS0
tLSBSZXNldCB0aGUgZmlsZSBsaXN0CiAgICAgIHVuc2V0KCR2X2hlYWRlcl9saXN0KTsKICAgICAgJHRoaX
MtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0d
XJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBTd2FwIGJhY2sgdGhlIGZpbGUgZGVzY3JpcHRv
cgogICAgJHZfc3dhcCA9ICR0aGlzLT56aXBfZmQ7CiAgICAkdGhpcy0+emlwX2ZkID0gJHZfemlwX3RlbXB
fZmQ7CiAgICAkdl96aXBfdGVtcF9mZCA9ICR2X3N3YXA7CgogICAgLy8gLS0tLS0gQ2xvc2UKICAgICR0aG
lzLT5wcml2Q2xvc2VGZCgpOwoKICAgIC8vIC0tLS0tIENsb3NlIHRoZSB0ZW1wb3JhcnkgZmlsZQogICAgQ
GZjbG9zZSgkdl96aXBfdGVtcF9mZCk7CgogICAgLy8gLS0tLS0gTWFnaWMgcXVvdGVzIHRyaWNrCiAgICAk
dGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAvLyAtLS0tLSBEZWxldGUgdGhlIHppcCB
maWxlCiAgICAvLyBUQkMgOiBJIHNob3VsZCB0ZXN0IHRoZSByZXN1bHQgLi4uCiAgICBAdW5saW5rKCR0aG
lzLT56aXBuYW1lKTsKCiAgICAvLyAtLS0tLSBSZW5hbWUgdGhlIHRlbXBvcmFyeSBmaWxlCiAgICAvLyBUQ
kMgOiBJIHNob3VsZCB0ZXN0IHRoZSByZXN1bHQgLi4uCiAgICAvL0ByZW5hbWUoJHZfemlwX3RlbXBfbmFt
ZSwgJHRoaXMtPnppcG5hbWUpOwogICAgUGNsWmlwVXRpbFJlbmFtZSgkdl96aXBfdGVtcF9uYW1lLCAkdGh
pcy0+emlwbmFtZSk7CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KIC
AvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDo
gcHJpdk9wZW5GZCgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIC0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdk9wZW5GZCgkcF9tb2RlKQogIHsKICAgICR2X3Jlc3VsdD0x
OwoKICAgIC8vIC0tLS0tIExvb2sgaWYgYWxyZWFkeSBvcGVuCiAgICBpZiAoJHRoaXMtPnppcF9mZCAhPSA
wKQogICAgewogICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUE
NMWklQX0VSUl9SRUFEX09QRU5fRkFJTCwgJ1ppcCBmaWxlIFwnJy4kdGhpcy0+emlwbmFtZS4nXCcgYWxyZ
WFkeSBvcGVuJyk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JD
b2RlKCk7CiAgICB9CgogICAgLy8gLS0tLS0gT3BlbiB0aGUgemlwIGZpbGUKICAgIGlmICgoJHRoaXMtPnp
pcF9mZCA9IEBmb3BlbigkdGhpcy0+emlwbmFtZSwgJHBfbW9kZSkpID09IDApCiAgICB7CiAgICAgIC8vIC
0tLS0tIEVycm9yIGxvZwogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX1JFQURfT1BFT
l9GQUlMLCAnVW5hYmxlIHRvIG9wZW4gYXJjaGl2ZSBcJycuJHRoaXMtPnppcG5hbWUuJ1wnIGluICcuJHBf
bW9kZS4nIG1vZGUnKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICByZXR1cm4gUGNsWmlwOjplcnJ
vckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQ
ogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24
gOiBwcml2Q2xvc2VGZCgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIC0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdkNsb3NlRmQoKQogIHsKICAgICR2X3Jlc3VsdD0xOwoK
ICAgIGlmICgkdGhpcy0+emlwX2ZkICE9IDApCiAgICAgIEBmY2xvc2UoJHRoaXMtPnppcF9mZCk7CiAgICA
kdGhpcy0+emlwX2ZkID0gMDsKCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7Ci
AgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3R
pb24gOiBwcml2QWRkTGlzdCgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgJHBfYWRkX2RpciBhbmQgJH
BfcmVtb3ZlX2RpciB3aWxsIGdpdmUgdGhlIGFiaWxpdHkgdG8gbWVtb3JpemUgYSBwYXRoIHdoaWNoIGlzC
iAgLy8gICBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBwYXRoIG9mIHRoZSBmaWxlLiBUaGlzIGlzIHVzZWZ1
bGwgaWYgeW91IHdhbnQgdG8gaGF2ZSBQY2xUYXIKICAvLyAgIHJ1bm5pbmcgaW4gYW55IGRpcmVjdG9yeSw
gYW5kIG1lbW9yaXplIHJlbGF0aXZlIHBhdGggZnJvbSBhbiBvdGhlciBkaXJlY3RvcnkuCiAgLy8gUGFyYW
1ldGVycyA6CiAgLy8gICAkcF9saXN0IDogQW4gYXJyYXkgY29udGFpbmluZyB0aGUgZmlsZSBvciBkaXJlY
3RvcnkgbmFtZXMgdG8gYWRkIGluIHRoZSB0YXIKICAvLyAgICRwX3Jlc3VsdF9saXN0IDogbGlzdCBvZiBh
ZGRlZCBmaWxlcyB3aXRoIHRoZWlyIHByb3BlcnRpZXMgKHNwZWNpYWxseSB0aGUgc3RhdHVzIGZpZWxkKQo
gIC8vICAgJHBfYWRkX2RpciA6IFBhdGggdG8gYWRkIGluIHRoZSBmaWxlbmFtZSBwYXRoIGFyY2hpdmVkCi
AgLy8gICAkcF9yZW1vdmVfZGlyIDogUGF0aCB0byByZW1vdmUgaW4gdGhlIGZpbGVuYW1lIHBhdGggYXJja
Gl2ZWQKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyAgZnVuY3Rpb24
gcHJpdkFkZExpc3QoJHBfbGlzdCwgJiRwX3Jlc3VsdF9saXN0LCAkcF9hZGRfZGlyLCAkcF9yZW1vdmVfZG
lyLCAkcF9yZW1vdmVfYWxsX2RpciwgJiRwX29wdGlvbnMpCiAgZnVuY3Rpb24gcHJpdkFkZExpc3QoJHBfZ
mlsZWRlc2NyX2xpc3QsICYkcF9yZXN1bHRfbGlzdCwgJiRwX29wdGlvbnMpCiAgewogICAgJHZfcmVzdWx0
PTE7CgogICAgLy8gLS0tLS0gQWRkIHRoZSBmaWxlcwogICAgJHZfaGVhZGVyX2xpc3QgPSBhcnJheSgpOwo
gICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkFkZEZpbGVMaXN0KCRwX2ZpbGVkZXNjcl9saXN0LC
Akdl9oZWFkZXJfbGlzdCwgJHBfb3B0aW9ucykpICE9IDEpCiAgICB7CiAgICAgIC8vIC0tLS0tIFJldHVyb
gogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKICAgIC8vIC0tLS0tIFN0b3JlIHRoZSBvZmZzZXQg
b2YgdGhlIGNlbnRyYWwgZGlyCiAgICAkdl9vZmZzZXQgPSBAZnRlbGwoJHRoaXMtPnppcF9mZCk7CgogICA
gLy8gLS0tLS0gQ3JlYXRlIHRoZSBDZW50cmFsIERpciBmaWxlcyBoZWFkZXIKICAgIGZvciAoJGk9MCwkdl
9jb3VudD0wOyAkaTxzaXplb2YoJHZfaGVhZGVyX2xpc3QpOyAkaSsrKQogICAgewogICAgICAvLyAtLS0tL
SBDcmVhdGUgdGhlIGZpbGUgaGVhZGVyCiAgICAgIGlmICgkdl9oZWFkZXJfbGlzdFskaV1bJ3N0YXR1cydd
ID09ICdvaycpIHsKICAgICAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2V3JpdGVDZW50cmFsRml
sZUhlYWRlcigkdl9oZWFkZXJfbGlzdFskaV0pKSAhPSAxKSB7CiAgICAgICAgICAvLyAtLS0tLSBSZXR1cm
4KICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgfQogICAgICAgICR2X2NvdW50Kys7CiAgI
CAgIH0KCiAgICAgIC8vIC0tLS0tIFRyYW5zZm9ybSB0aGUgaGVhZGVyIHRvIGEgJ3VzYWJsZScgaW5mbwog
ICAgICAkdGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIyRmlsZUluZm8oJHZfaGVhZGVyX2xpc3RbJGldLCAkcF9
yZXN1bHRfbGlzdFskaV0pOwogICAgfQoKICAgIC8vIC0tLS0tIFppcCBmaWxlIGNvbW1lbnQKICAgICR2X2
NvbW1lbnQgPSAnJzsKICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQ09NTUVOVF0pKSB7C
iAgICAgICR2X2NvbW1lbnQgPSAkcF9vcHRpb25zW1BDTFpJUF9PUFRfQ09NTUVOVF07CiAgICB9CgogICAg
Ly8gLS0tLS0gQ2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBjZW50cmFsIGhlYWRlcgogICAgJHZfc2l6ZSA
9IEBmdGVsbCgkdGhpcy0+emlwX2ZkKS0kdl9vZmZzZXQ7CgogICAgLy8gLS0tLS0gQ3JlYXRlIHRoZSBjZW
50cmFsIGRpciBmb290ZXIKICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZXcml0ZUNlbnRyYWxIZ
WFkZXIoJHZfY291bnQsICR2X3NpemUsICR2X29m
ZnNldCwgJHZfY29tbWVudCkpICE9IDEpCiAgICB7CiAgICAgIC8vIC0tLS0tIFJlc2V0IHRoZSBmaWxlIGx
pc3QKICAgICAgdW5zZXQoJHZfaGVhZGVyX2xpc3QpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIH
JldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzd
Wx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIE
Z1bmN0aW9uIDogcHJpdkFkZEZpbGVMaXN0KCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVyc
yA6CiAgLy8gICAkcF9maWxlZGVzY3JfbGlzdCA6IEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGZpbGUgZGVz
Y3JpcHRpb24KICAvLyAgICAgICAgICAgICAgICAgICAgICBvciBkaXJlY3RvcnkgbmFtZXMgdG8gYWRkIGl
uIHRoZSB6aXAKICAvLyAgICRwX3Jlc3VsdF9saXN0IDogbGlzdCBvZiBhZGRlZCBmaWxlcyB3aXRoIHRoZW
lyIHByb3BlcnRpZXMgKHNwZWNpYWxseSB0aGUgc3RhdHVzIGZpZWxkKQogIC8vIFJldHVybiBWYWx1ZXMgO
gogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdkFkZEZpbGVMaXN0KCRwX2ZpbGVkZXN
jcl9saXN0LCAmJHBfcmVzdWx0X2xpc3QsICYkcF9vcHRpb25zKQogIHsKICAgICR2X3Jlc3VsdD0xOwogIC
AgJHZfaGVhZGVyID0gYXJyYXkoKTsKCiAgICAvLyAtLS0tLSBSZWN1cGVyYXRlIHRoZSBjdXJyZW50IG51b
WJlciBvZiBlbHQgaW4gbGlzdAogICAgJHZfbmIgPSBzaXplb2YoJHBfcmVzdWx0X2xpc3QpOwoKICAgIC8v
IC0tLS0tIExvb3Agb24gdGhlIGZpbGVzCiAgICBmb3IgKCRqPTA7ICgkajxzaXplb2YoJHBfZmlsZWRlc2N
yX2xpc3QpKSAmJiAoJHZfcmVzdWx0PT0xKTsgJGorKykgewogICAgICAvLyAtLS0tLSBGb3JtYXQgdGhlIG
ZpbGVuYW1lCiAgICAgICRwX2ZpbGVkZXNjcl9saXN0WyRqXVsnZmlsZW5hbWUnXQogICAgICA9IFBjbFppc
FV0aWxUcmFuc2xhdGVXaW5QYXRoKCRwX2ZpbGVkZXNjcl9saXN0WyRqXVsnZmlsZW5hbWUnXSwgZmFsc2Up
OwoKCiAgICAgIC8vIC0tLS0tIFNraXAgZW1wdHkgZmlsZSBuYW1lcwogICAgICAvLyBUQkMgOiBDYW4gdGh
pcyBiZSBwb3NzaWJsZSA/IG5vdCBjaGVja2VkIGluIERlc2NyUGFyc2VBdHQgPwogICAgICBpZiAoJHBfZm
lsZWRlc2NyX2xpc3RbJGpdWydmaWxlbmFtZSddID09ICIiKSB7CiAgICAgICAgY29udGludWU7CiAgICAgI
H0KCiAgICAgIC8vIC0tLS0tIENoZWNrIHRoZSBmaWxlbmFtZQogICAgICBpZiAoICAgKCRwX2ZpbGVkZXNj
cl9saXN0WyRqXVsndHlwZSddICE9ICd2aXJ0dWFsX2ZpbGUnKQogICAgICAgICAgJiYgKCFmaWxlX2V4aXN
0cygkcF9maWxlZGVzY3JfbGlzdFskal1bJ2ZpbGVuYW1lJ10pKSkgewogICAgICAgIFBjbFppcDo6cHJpdk
Vycm9yTG9nKFBDTFpJUF9FUlJfTUlTU0lOR19GSUxFLCAiRmlsZSAnIi4kcF9maWxlZGVzY3JfbGlzdFska
l1bJ2ZpbGVuYW1lJ10uIicgZG9lcyBub3QgZXhpc3QiKTsKICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJv
ckNvZGUoKTsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBpZiBpdCBpcyBhIGZpbGUgb3IgYSBkaXI
gd2l0aCBubyBhbGwgcGF0aCByZW1vdmUgb3B0aW9uCiAgICAgIC8vIG9yIGEgZGlyIHdpdGggYWxsIGl0cy
BwYXRoIHJlbW92ZWQKLy8gICAgICBpZiAoICAgKGlzX2ZpbGUoJHBfZmlsZWRlc2NyX2xpc3RbJGpdWydma
WxlbmFtZSddKSkKLy8gICAgICAgICAgfHwgKCAgIGlzX2RpcigkcF9maWxlZGVzY3JfbGlzdFskal1bJ2Zp
bGVuYW1lJ10pCiAgICAgIGlmICggICAoJHBfZmlsZWRlc2NyX2xpc3RbJGpdWyd0eXBlJ10gPT0gJ2ZpbGU
nKQogICAgICAgICAgfHwgKCRwX2ZpbGVkZXNjcl9saXN0WyRqXVsndHlwZSddID09ICd2aXJ0dWFsX2ZpbG
UnKQogICAgICAgICAgfHwgKCAgICgkcF9maWxlZGVzY3JfbGlzdFskal1bJ3R5cGUnXSA9PSAnZm9sZGVyJ
ykKICAgICAgICAgICAgICAmJiAoICAgIWlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9SRU1PVkVfQUxM
X1BBVEhdKQogICAgICAgICAgICAgICAgICB8fCAhJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9BTEx
fUEFUSF0pKQogICAgICAgICAgKSB7CgogICAgICAgIC8vIC0tLS0tIEFkZCB0aGUgZmlsZQogICAgICAgIC
R2X3Jlc3VsdCA9ICR0aGlzLT5wcml2QWRkRmlsZSgkcF9maWxlZGVzY3JfbGlzdFskal0sICR2X2hlYWRlc
iwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBfb3B0aW9ucyk7CiAgICAgICAg
aWYgKCR2X3Jlc3VsdCAhPSAxKSB7CiAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0KCiA
gICAgICAgLy8gLS0tLS0gU3RvcmUgdGhlIGZpbGUgaW5mb3MKICAgICAgICAkcF9yZXN1bHRfbGlzdFskdl
9uYisrXSA9ICR2X2hlYWRlcjsKICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0d
XJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZBZGRGaWxlKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyY
W1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGl
vbiBwcml2QWRkRmlsZSgkcF9maWxlZGVzY3IsICYkcF9oZWFkZXIsICYkcF9vcHRpb25zKQogIHsKICAgIC
R2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIFdvcmtpbmcgdmFyaWFibGUKICAgICRwX2ZpbGVuYW1lID0gJ
HBfZmlsZWRlc2NyWydmaWxlbmFtZSddOwoKICAgIC8vIFRCQyA6IEFscmVhZHkgZG9uZSBpbiB0aGUgZmls
ZUF0dCBjaGVjayAuLi4gPwogICAgaWYgKCRwX2ZpbGVuYW1lID09ICIiKSB7CiAgICAgIC8vIC0tLS0tIEV
ycm9yIGxvZwogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVE
VSLCAiSW52YWxpZCBmaWxlIGxpc3QgcGFyYW1ldGVyIChpbnZhbGlkIG9yIGVtcHR5IGxpc3QpIik7CgogI
CAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICB9Cgog
ICAgLy8gLS0tLS0gTG9vayBmb3IgYSBzdG9yZWQgZGlmZmVyZW50IGZpbGVuYW1lCiAgICAvKiBUQkMgOiB
SZW1vdmVkCiAgICBpZiAoaXNzZXQoJHBfZmlsZWRlc2NyWydzdG9yZWRfZmlsZW5hbWUnXSkpIHsKICAgIC
AgJHZfc3RvcmVkX2ZpbGVuYW1lID0gJHBfZmlsZWRlc2NyWydzdG9yZWRfZmlsZW5hbWUnXTsKICAgIH0KI
CAgIGVsc2UgewogICAgICAkdl9zdG9yZWRfZmlsZW5hbWUgPSAkcF9maWxlZGVzY3JbJ3N0b3JlZF9maWxl
bmFtZSddOwogICAgfQogICAgKi8KCiAgICAvLyAtLS0tLSBTZXQgdGhlIGZpbGUgcHJvcGVydGllcwogICA
gY2xlYXJzdGF0Y2FjaGUoKTsKICAgICRwX2hlYWRlclsndmVyc2lvbiddID0gMjA7CiAgICAkcF9oZWFkZX
JbJ3ZlcnNpb25fZXh0cmFjdGVkJ10gPSAxMDsKICAgICRwX2hlYWRlclsnZmxhZyddID0gMDsKICAgICRwX
2hlYWRlclsnY29tcHJlc3Npb24nXSA9IDA7CiAgICAkcF9oZWFkZXJbJ2NyYyddID0gMDsKICAgICRwX2hl
YWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSAwOwogICAgJHBfaGVhZGVyWydmaWxlbmFtZV9sZW4nXSA9IHN
0cmxlbigkcF9maWxlbmFtZSk7CiAgICAkcF9oZWFkZXJbJ2V4dHJhX2xlbiddID0gMDsKICAgICRwX2hlYW
RlclsnZGlzayddID0gMDsKICAgICRwX2hlYWRlclsnaW50ZXJuYWwnXSA9IDA7CiAgICAkcF9oZWFkZXJbJ
29mZnNldCddID0gMDsKICAgICRwX2hlYWRlclsnZmlsZW5hbWUnXSA9ICRwX2ZpbGVuYW1lOwovLyBUQkMg
OiBSZW1vdmVkICAgICRwX2hlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10gPSAkdl9zdG9yZWRfZmlsZW5hbWU
7CiAgICAkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddID0gJHBfZmlsZWRlc2NyWydzdG9yZWRfZmlsZW
5hbWUnXTsKICAgICRwX2hlYWRlclsnZXh0cmEnXSA9ICcnOwogICAgJHBfaGVhZGVyWydzdGF0dXMnXSA9I
Cdvayc7CiAgICAkcF9oZWFkZXJbJ2luZGV4J10gPSAtMTsKCiAgICAvLyAtLS0tLSBMb29rIGZvciByZWd1
bGFyIGZpbGUKICAgIGlmICgkcF9maWxlZGVzY3JbJ3R5cGUnXT09J2ZpbGUnKSB7CiAgICAgICRwX2hlYWR
lclsnZXh0ZXJuYWwnXSA9IDB4MDAwMDAwMDA7CiAgICAgICRwX2hlYWRlclsnc2l6ZSddID0gZmlsZXNpem
UoJHBfZmlsZW5hbWUpOwogICAgfQoKICAgIC8vIC0tLS0tIExvb2sgZm9yIHJlZ3VsYXIgZm9sZGVyCiAgI
CBlbHNlIGlmICgkcF9maWxlZGVzY3JbJ3R5cGUnXT09J2ZvbGRlcicpIHsKICAgICAgJHBfaGVhZGVyWydl
eHRlcm5hbCddID0gMHgwMDAwMDAxMDsKICAgICAgJHBfaGVhZGVyWydtdGltZSddID0gZmlsZW10aW1lKCR
wX2ZpbGVuYW1lKTsKICAgICAgJHBfaGVhZGVyWydzaXplJ10gPSBmaWxlc2l6ZSgkcF9maWxlbmFtZSk7Ci
AgICB9CgogICAgLy8gLS0tLS0gTG9vayBmb3IgdmlydHVhbCBmaWxlCiAgICBlbHNlIGlmICgkcF9maWxlZ
GVzY3JbJ3R5cGUnXSA9PSAndmlydHVhbF9maWxlJykgewogICAgICAkcF9oZWFkZXJbJ2V4dGVybmFsJ10g
PSAweDAwMDAwMDAwOwogICAgICAkcF9oZWFkZXJbJ3NpemUnXSA9IHN0cmxlbigkcF9maWxlZGVzY3JbJ2N
vbnRlbnQnXSk7CiAgICB9CgoKICAgIC8vIC0tLS0tIExvb2sgZm9yIGZpbGV0aW1lCiAgICBpZiAoaXNzZX
QoJHBfZmlsZWRlc2NyWydtdGltZSddKSkgewogICAgICAkcF9oZWFkZXJbJ210aW1lJ10gPSAkcF9maWxlZ
GVzY3JbJ210aW1lJ107CiAgICB9CiAgICBlbHNlIGlmICgkcF9maWxlZGVzY3JbJ3R5cGUnXSA9PSAndmly
dHVhbF9maWxlJykgewogICAgICAkcF9oZWFkZXJbJ210aW1lJ10gPSB0aW1lKCk7CiAgICB9CiAgICBlbHN
lIHsKICAgICAgJHBfaGVhZGVyWydtdGltZSddID0gZmlsZW10aW1lKCRwX2ZpbGVuYW1lKTsKICAgIH0KCi
AgICAvLyAtLS0tLS0gTG9vayBmb3IgZmlsZSBjb21tZW50CiAgICBpZiAoaXNzZXQoJHBfZmlsZWRlc2NyW
ydjb21tZW50J10pKSB7CiAgICAgICRwX2hlYWRlclsnY29tbWVudF9sZW4nXSA9IHN0cmxlbigkcF9maWxl
ZGVzY3JbJ2NvbW1lbnQnXSk7CiAgICAgICRwX2hlYWRlclsnY29tbWVudCddID0gJHBfZmlsZWRlc2NyWyd
jb21tZW50J107CiAgICB9CiAgICBlbHNlIHsKICAgICAgJHBfaGVhZGVyWydjb21tZW50X2xlbiddID0gMD
sKICAgICAgJHBfaGVhZGVyWydjb21tZW50J10gPSAnJzsKICAgIH0KCiAgICAvLyAtLS0tLSBMb29rIGZvc
iBwcmUtYWRkIGNhbGxiYWNrCiAgICBpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfQ0JfUFJFX0FERF0p
KSB7CgogICAgICAvLyAtLS0tLSBHZW5lcmF0ZSBhIGxvY2FsIGluZm9ybWF0aW9uCiAgICAgICR2X2xvY2F
sX2hlYWRlciA9IGFycmF5KCk7CiAgICAgICR0aGlzLT5wcml2Q29udmVydEhlYWRlcjJGaWxlSW5mbygkcF
9oZWFkZXIsICR2X2xvY2FsX2hlYWRlcik7CgogICAgICAvLyAtLS0tLSBDYWxsIHRoZSBjYWxsYmFjawogI
CAgICAvLyBIZXJlIEkgZG8gbm90IHVzZSBjYWxsX3VzZXJfZnVuYygpIGJlY2F1c2UgSSBuZWVkIHRvIHNl
bmQgYSByZWZlcmVuY2UgdG8gdGhlCiAgICAgIC8vIGhlYWRlci4KICAgICAgJHZfcmVzdWx0ID0gJHBfb3B
0aW9uc1tQQ0xaSVBfQ0JfUFJFX0FERF0oUENMWklQX0NCX1BSRV9BREQsICR2X2xvY2FsX2hlYWRlcik7Ci
AgICAgIGlmICgkdl9yZXN1bHQgPT0gMCkgewogICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzd
GF0dXMKICAgICAgICAkcF9oZWFkZXJbJ3N0YXR1cyddID0gInNraXBwZWQiOwogICAgICAgICR2X3Jlc3Vs
dCA9IDE7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIFVwZGF0ZSB0aGUgaW5mb3JtYXRpb25zCiAgICAgIC8
vIE9ubHkgc29tZSBmaWVsZHMgY2FuIGJlIG1vZGlmaWVkCiAgICAgIGlmICgkcF9oZWFkZXJbJ3N0b3JlZF
9maWxlbmFtZSddICE9ICR2X2xvY2FsX2hlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10pIHsKICAgICAgICAkc
F9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddID0gUGNsWmlwVXRpbFBhdGhSZWR1Y3Rpb24oJHZfbG9jYWxf
aGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXSk7CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBMb29rIGZ
vciBlbXB0eSBzdG9yZWQgZmlsZW5hbWUKICAgIGlmICgkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddID
09ICIiKSB7CiAgICAgICRwX2hlYWRlclsnc3RhdHVzJ10gPSAiZmlsdGVyZWQiOwogICAgfQoKICAgIC8vI
C0tLS0tIENoZWNrIHRoZSBwYXRoIGxlbmd0aAogICAgaWYgKHN0cmxlbigkcF9oZWFkZXJbJ3N0b3JlZF9m
aWxlbmFtZSddKSA+IDB4RkYpIHsKICAgICAgJHBfaGVhZGVyWydzdGF0dXMnXSA9ICdmaWxlbmFtZV90b29
fbG9uZyc7CiAgICB9CgogICAgLy8gLS0tLS0gTG9vayBpZiBubyBlcnJvciwgb3IgZmlsZSBub3Qgc2tpcH
BlZAogICAgaWYgKCRwX2hlYWRlclsnc3RhdHVzJ10gPT0gJ29rJykgewoKICAgICAgLy8gLS0tLS0gTG9va
yBmb3IgYSBmaWxlCiAgICAgIGlmICgkcF9maWxlZGVzY3JbJ3R5cGUnXSA9PSAnZmlsZScpIHsKICAgICAg
ICAvLyAtLS0tLSBMb29rIGZvciB1c2luZyB0ZW1wb3JhcnkgZmlsZSB0byB6aXAKICAgICAgICBpZiAoICg
haXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1RFTVBfRklMRV9PRkZdKSkKICAgICAgICAgICAgJiYgKG
lzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9URU1QX0ZJTEVfT05dKQogICAgICAgICAgICAgICAgfHwgK
Glzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEXSkKICAgICAgICAgICAg
ICAgICAgICAmJiAoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1RFTVBfRklMRV9USFJFU0hPTERdIDw9ICRwX2h
lYWRlclsnc2l6ZSddKSkgKSApIHsKICAgICAgICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2QWRkRmlsZV
VzaW5nVGVtcEZpbGUoJHBfZmlsZWRlc2NyLCAkcF9oZWFkZXIsICRwX29wdGlvbnMpOwogICAgICAgICAga
WYgKCR2X3Jlc3VsdCA8IFBDTFpJUF9FUlJfTk9fRVJST1IpIHsKICAgICAgICAgICAgcmV0dXJuICR2X3Jl
c3VsdDsKICAgICAgICAgIH0KICAgICAgICB9Cgo
gICAgICAgIC8vIC0tLS0tIFVzZSAiaW4gbWVtb3J5IiB6aXAgYWxnbwogICAgICAgIGVsc2UgewoKICAgIC
AgICAvLyAtLS0tLSBPcGVuIHRoZSBzb3VyY2UgZmlsZQogICAgICAgIGlmICgoJHZfZmlsZSA9IEBmb3Blb
igkcF9maWxlbmFtZSwgInJiIikpID09IDApIHsKICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBD
TFpJUF9FUlJfUkVBRF9PUEVOX0ZBSUwsICJVbmFibGUgdG8gb3BlbiBmaWxlICckcF9maWxlbmFtZScgaW4
gYmluYXJ5IHJlYWQgbW9kZSIpOwogICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgIC
AgICAgfQoKICAgICAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaWxlIGNvbnRlbnQKICAgICAgICAkdl9jb250Z
W50ID0gQGZyZWFkKCR2X2ZpbGUsICRwX2hlYWRlclsnc2l6ZSddKTsKCiAgICAgICAgLy8gLS0tLS0gQ2xv
c2UgdGhlIGZpbGUKICAgICAgICBAZmNsb3NlKCR2X2ZpbGUpOwoKICAgICAgICAvLyAtLS0tLSBDYWxjdWx
hdGUgdGhlIENSQwogICAgICAgICRwX2hlYWRlclsnY3JjJ10gPSBAY3JjMzIoJHZfY29udGVudCk7CgogIC
AgICAgIC8vIC0tLS0tIExvb2sgZm9yIG5vIGNvbXByZXNzaW9uCiAgICAgICAgaWYgKCRwX29wdGlvbnNbU
ENMWklQX09QVF9OT19DT01QUkVTU0lPTl0pIHsKICAgICAgICAgIC8vIC0tLS0tIFNldCBoZWFkZXIgcGFy
YW1ldGVycwogICAgICAgICAgJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSA9ICRwX2hlYWRlclsnc2l
6ZSddOwogICAgICAgICAgJHBfaGVhZGVyWydjb21wcmVzc2lvbiddID0gMDsKICAgICAgICB9CgogICAgIC
AgIC8vIC0tLS0tIExvb2sgZm9yIG5vcm1hbCBjb21wcmVzc2lvbgogICAgICAgIGVsc2UgewogICAgICAgI
CAgLy8gLS0tLS0gQ29tcHJlc3MgdGhlIGNvbnRlbnQKICAgICAgICAgICR2X2NvbnRlbnQgPSBAZ3pkZWZs
YXRlKCR2X2NvbnRlbnQpOwoKICAgICAgICAgIC8vIC0tLS0tIFNldCBoZWFkZXIgcGFyYW1ldGVycwogICA
gICAgICAgJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSA9IHN0cmxlbigkdl9jb250ZW50KTsKICAgIC
AgICAgICRwX2hlYWRlclsnY29tcHJlc3Npb24nXSA9IDg7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tL
SBDYWxsIHRoZSBoZWFkZXIgZ2VuZXJhdGlvbgogICAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnBy
aXZXcml0ZUZpbGVIZWFkZXIoJHBfaGVhZGVyKSkgIT0gMSkgewogICAgICAgICAgQGZjbG9zZSgkdl9maWx
lKTsKICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tLSBXcm
l0ZSB0aGUgY29tcHJlc3NlZCAob3Igbm90KSBjb250ZW50CiAgICAgICAgQGZ3cml0ZSgkdGhpcy0+emlwX
2ZkLCAkdl9jb250ZW50LCAkcF9oZWFkZXJbJ2NvbXByZXNzZWRfc2l6ZSddKTsKCiAgICAgICAgfQoKICAg
ICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgYSB2aXJ0dWFsIGZpbGUgKGEgZmlsZSBmcm9tIHN0cml
uZykKICAgICAgZWxzZSBpZiAoJHBfZmlsZWRlc2NyWyd0eXBlJ10gPT0gJ3ZpcnR1YWxfZmlsZScpIHsKCi
AgICAgICAgJHZfY29udGVudCA9ICRwX2ZpbGVkZXNjclsnY29udGVudCddOwoKICAgICAgICAvLyAtLS0tL
SBDYWxjdWxhdGUgdGhlIENSQwogICAgICAgICRwX2hlYWRlclsnY3JjJ10gPSBAY3JjMzIoJHZfY29udGVu
dCk7CgogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIG5vIGNvbXByZXNzaW9uCiAgICAgICAgaWYgKCRwX29
wdGlvbnNbUENMWklQX09QVF9OT19DT01QUkVTU0lPTl0pIHsKICAgICAgICAgIC8vIC0tLS0tIFNldCBoZW
FkZXIgcGFyYW1ldGVycwogICAgICAgICAgJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSA9ICRwX2hlY
WRlclsnc2l6ZSddOwogICAgICAgICAgJHBfaGVhZGVyWydjb21wcmVzc2lvbiddID0gMDsKICAgICAgICB9
CgogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIG5vcm1hbCBjb21wcmVzc2lvbgogICAgICAgIGVsc2Ugewo
gICAgICAgICAgLy8gLS0tLS0gQ29tcHJlc3MgdGhlIGNvbnRlbnQKICAgICAgICAgICR2X2NvbnRlbnQgPS
BAZ3pkZWZsYXRlKCR2X2NvbnRlbnQpOwoKICAgICAgICAgIC8vIC0tLS0tIFNldCBoZWFkZXIgcGFyYW1ld
GVycwogICAgICAgICAgJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSA9IHN0cmxlbigkdl9jb250ZW50
KTsKICAgICAgICAgICRwX2hlYWRlclsnY29tcHJlc3Npb24nXSA9IDg7CiAgICAgICAgfQoKICAgICAgICA
vLyAtLS0tLSBDYWxsIHRoZSBoZWFkZXIgZ2VuZXJhdGlvbgogICAgICAgIGlmICgoJHZfcmVzdWx0ID0gJH
RoaXMtPnByaXZXcml0ZUZpbGVIZWFkZXIoJHBfaGVhZGVyKSkgIT0gMSkgewogICAgICAgICAgQGZjbG9zZ
Sgkdl9maWxlKTsKICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICAvLyAt
LS0tLSBXcml0ZSB0aGUgY29tcHJlc3NlZCAob3Igbm90KSBjb250ZW50CiAgICAgICAgQGZ3cml0ZSgkdGh
pcy0+emlwX2ZkLCAkdl9jb250ZW50LCAkcF9oZWFkZXJbJ2NvbXByZXNzZWRfc2l6ZSddKTsKICAgICAgfQ
oKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgYSBkaXJlY3RvcnkKICAgICAgZWxzZSBpZiAoJHBfZmlsZWRlc
2NyWyd0eXBlJ10gPT0gJ2ZvbGRlcicpIHsKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBkaXJlY3Rvcnkg
bGFzdCAnLycKICAgICAgICBpZiAoQHN1YnN0cigkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddLCAtMSk
gIT0gJy8nKSB7CiAgICAgICAgICAkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddIC49ICcvJzsKICAgIC
AgICB9CgogICAgICAgIC8vIC0tLS0tIFNldCB0aGUgZmlsZSBwcm9wZXJ0aWVzCiAgICAgICAgJHBfaGVhZ
GVyWydzaXplJ10gPSAwOwogICAgICAgIC8vJHBfaGVhZGVyWydleHRlcm5hbCddID0gMHg0MUZGMDAxMDsg
ICAvLyBWYWx1ZSBmb3IgYSBmb2xkZXIgOiB0byBiZSBjaGVja2VkCiAgICAgICAgJHBfaGVhZGVyWydleHR
lcm5hbCddID0gMHgwMDAwMDAxMDsgICAvLyBWYWx1ZSBmb3IgYSBmb2xkZXIgOiB0byBiZSBjaGVja2VkCg
ogICAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGhlYWRlciBnZW5lcmF0aW9uCiAgICAgICAgaWYgKCgkdl9yZ
XN1bHQgPSAkdGhpcy0+cHJpdldyaXRlRmlsZUhlYWRlcigkcF9oZWFkZXIpKSAhPSAxKQogICAgICAgIHsK
ICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gLS0
tLS0gTG9vayBmb3IgcG9zdC1hZGQgY2FsbGJhY2sKICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF
9DQl9QT1NUX0FERF0pKSB7CgogICAgICAvLyAtLS0tLSBHZW5lcmF0ZSBhIGxvY2FsIGluZm9ybWF0aW9uC
iAgICAgICR2X2xvY2FsX2hlYWRlciA9IGFycmF5KCk7CiAgICAgICR0aGlzLT5wcml2Q29udmVydEhlYWRl
cjJGaWxlSW5mbygkcF9oZWFkZXIsICR2X2xvY2FsX2hlYWRlcik7CgogICAgICAvLyAtLS0tLSBDYWxsIHR
oZSBjYWxsYmFjawogICAgICAvLyBIZXJlIEkgZG8gbm90IHVzZSBjYWxsX3VzZXJfZnVuYygpIGJlY2F1c2
UgSSBuZWVkIHRvIHNlbmQgYSByZWZlcmVuY2UgdG8gdGhlCiAgICAgIC8vIGhlYWRlci4KICAgICAgJHZfc
mVzdWx0ID0gJHBfb3B0aW9uc1tQQ0xaSVBfQ0JfUE9TVF9BRERdKFBDTFpJUF9DQl9QT1NUX0FERCwgJHZf
bG9jYWxfaGVhZGVyKTsKICAgICAgaWYgKCR2X3Jlc3VsdCA9PSAwKSB7CiAgICAgICAgLy8gLS0tLS0gSWd
ub3JlZAogICAgICAgICR2X3Jlc3VsdCA9IDE7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIFVwZGF0ZSB0aG
UgaW5mb3JtYXRpb25zCiAgICAgIC8vIE5vdGhpbmcgY2FuIGJlIG1vZGlmaWVkCiAgICB9CgogICAgLy8gL
S0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo
KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogcHJpdkFkZEZpbGVVc2luZ1RlbXBGa
WxlKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6
CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2QWRkRmlsZVVzaW5nVGVtcEZpbGUoJH
BfZmlsZWRlc2NyLCAmJHBfaGVhZGVyLCAmJHBfb3B0aW9ucykKICB7CiAgICAkdl9yZXN1bHQ9UENMWklQX
0VSUl9OT19FUlJPUjsKCiAgICAvLyAtLS0tLSBXb3JraW5nIHZhcmlhYmxlCiAgICAkcF9maWxlbmFtZSA9
ICRwX2ZpbGVkZXNjclsnZmlsZW5hbWUnXTsKCgogICAgLy8gLS0tLS0gT3BlbiB0aGUgc291cmNlIGZpbGU
KICAgIGlmICgoJHZfZmlsZSA9IEBmb3BlbigkcF9maWxlbmFtZSwgInJiIikpID09IDApIHsKICAgICAgUG
NsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9SRUFEX09QRU5fRkFJTCwgIlVuYWJsZSB0byBvcGVuI
GZpbGUgJyRwX2ZpbGVuYW1lJyBpbiBiaW5hcnkgcmVhZCBtb2RlIik7CiAgICAgIHJldHVybiBQY2xaaXA6
OmVycm9yQ29kZSgpOwogICAgfQoKICAgIC8vIC0tLS0tIENyZWF0ZXMgYSBjb21wcmVzc2VkIHRlbXBvcmF
yeSBmaWxlCiAgICAkdl9nemlwX3RlbXBfbmFtZSA9IFBDTFpJUF9URU1QT1JBUllfRElSLnVuaXFpZCgncG
NsemlwLScpLicuZ3onOwogICAgaWYgKCgkdl9maWxlX2NvbXByZXNzZWQgPSBAZ3pvcGVuKCR2X2d6aXBfd
GVtcF9uYW1lLCAid2IiKSkgPT0gMCkgewogICAgICBmY2xvc2UoJHZfZmlsZSk7CiAgICAgIFBjbFppcDo6
cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfV1JJVEVfT1BFTl9GQUlMLCAnVW5hYmxlIHRvIG9wZW4gdGVtcG9
yYXJ5IGZpbGUgXCcnLiR2X2d6aXBfdGVtcF9uYW1lLidcJyBpbiBiaW5hcnkgd3JpdGUgbW9kZScpOwogIC
AgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBma
WxlIGJ5IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUgb2N0ZXRzIGJsb2NrcwogICAgJHZfc2l6ZSA9IGZpbGVz
aXplKCRwX2ZpbGVuYW1lKTsKICAgIHdoaWxlICgkdl9zaXplICE9IDApIHsKICAgICAgJHZfcmVhZF9zaXp
lID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFID8gJHZfc2l6ZSA6IFBDTFpJUF9SRUFEX0
JMT0NLX1NJWkUpOwogICAgICAkdl9idWZmZXIgPSBAZnJlYWQoJHZfZmlsZSwgJHZfcmVhZF9zaXplKTsKI
CAgICAgLy8kdl9iaW5hcnlfZGF0YSA9IHBhY2soJ2EnLiR2X3JlYWRfc2l6ZSwgJHZfYnVmZmVyKTsKICAg
ICAgQGd6cHV0cygkdl9maWxlX2NvbXByZXNzZWQsICR2X2J1ZmZlciwgJHZfcmVhZF9zaXplKTsKICAgICA
gJHZfc2l6ZSAtPSAkdl9yZWFkX3NpemU7CiAgICB9CgogICAgLy8gLS0tLS0gQ2xvc2UgdGhlIGZpbGUKIC
AgIEBmY2xvc2UoJHZfZmlsZSk7CiAgICBAZ3pjbG9zZSgkdl9maWxlX2NvbXByZXNzZWQpOwoKICAgIC8vI
C0tLS0tIENoZWNrIHRoZSBtaW5pbXVtIGZpbGUgc2l6ZQogICAgaWYgKGZpbGVzaXplKCR2X2d6aXBfdGVt
cF9uYW1lKSA8IDE4KSB7CiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfQkFEX0ZPUk1
BVCwgJ2d6aXAgdGVtcG9yYXJ5IGZpbGUgXCcnLiR2X2d6aXBfdGVtcF9uYW1lLidcJyBoYXMgaW52YWxpZC
BmaWxlc2l6ZSAtIHNob3VsZCBiZSBtaW5pbXVtIDE4IGJ5dGVzJyk7CiAgICAgIHJldHVybiBQY2xaaXA6O
mVycm9yQ29kZSgpOwogICAgfQoKICAgIC8vIC0tLS0tIEV4dHJhY3QgdGhlIGNvbXByZXNzZWQgYXR0cmli
dXRlcwogICAgaWYgKCgkdl9maWxlX2NvbXByZXNzZWQgPSBAZm9wZW4oJHZfZ3ppcF90ZW1wX25hbWUsICJ
yYiIpKSA9PSAwKSB7CiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfUkVBRF9PUEVOX0
ZBSUwsICdVbmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgZmlsZSBcJycuJHZfZ3ppcF90ZW1wX25hbWUuJ1wnI
GluIGJpbmFyeSByZWFkIG1vZGUnKTsKICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICB9
CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgZ3ppcCBmaWxlIGhlYWRlcgogICAgJHZfYmluYXJ5X2RhdGEgPSB
AZnJlYWQoJHZfZmlsZV9jb21wcmVzc2VkLCAxMCk7CiAgICAkdl9kYXRhX2hlYWRlciA9IHVucGFjaygnYT
FpZDEvYTFpZDIvYTFjbS9hMWZsYWcvVm10aW1lL2ExeGZsL2Exb3MnLCAkdl9iaW5hcnlfZGF0YSk7CgogI
CAgLy8gLS0tLS0gQ2hlY2sgc29tZSBwYXJhbWV0ZXJzCiAgICAkdl9kYXRhX2hlYWRlclsnb3MnXSA9IGJp
bjJoZXgoJHZfZGF0YV9oZWFkZXJbJ29zJ10pOwoKICAgIC8vIC0tLS0tIFJlYWQgdGhlIGd6aXAgZmlsZSB
mb290ZXIKICAgIEBmc2Vlaygkdl9maWxlX2NvbXByZXNzZWQsIGZpbGVzaXplKCR2X2d6aXBfdGVtcF9uYW
1lKS04KTsKICAgICR2X2JpbmFyeV9kYXRhID0gQGZyZWFkKCR2X2ZpbGVfY29tcHJlc3NlZCwgOCk7CiAgI
CAkdl9kYXRhX2Zvb3RlciA9IHVucGFjaygnVmNyYy9WY29tcHJlc3NlZF9zaXplJywgJHZfYmluYXJ5X2Rh
dGEpOwoKICAgIC8vIC0tLS0tIFNldCB0aGUgYXR0cmlidXRlcwogICAgJHBfaGVhZGVyWydjb21wcmVzc2l
vbiddID0gb3JkKCR2X2RhdGFfaGVhZGVyWydjbSddKTsKICAgIC8vJHBfaGVhZGVyWydtdGltZSddID0gJH
ZfZGF0YV9oZWFkZXJbJ210aW1lJ107CiAgICAkcF9oZWFkZXJbJ2NyYyddID0gJHZfZGF0YV9mb290ZXJbJ
2NyYyddOwogICAgJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSA9IGZpbGVzaXplKCR2X2d6aXBfdGVt
cF9uYW1lKS0xODsKCiAgICAvLyAtLS0tLSBDbG9zZSB0aGUgZmlsZQogICAgQGZjbG9zZSgkdl9maWxlX2N
vbXByZXNzZWQpOwoKICAgIC8vIC0tLS0tIENhbGwgdGhlIGhlYWRlciBnZW5lcmF0aW9uCiAgICBpZiAoKC
R2X3Jlc3VsdCA9ICR0aGlzLT5wcml2V3JpdGVGaWxlSGVhZGVyKCRwX2hlYWRlcikpICE9IDEpIHsKICAgI
CAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBBZGQgdGhlIGNvbXByZXNzZWQgZGF0
YQogICAgaWYgKCgkdl9maWxlX2NvbXByZXNzZWQgPSBAZm9wZW4oJHZfZ3ppcF90ZW1wX25hbWUsICJyYiI
pKSA9PSAwKQogICAgewogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX1JFQURfT1BFTl
9GQUlMLCAnVW5hYmxlIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgXCcnLiR2X2d6aXBfdGVtcF9uYW1lLidcJ
yBpbiBiaW5hcnkgcmVhZCBtb2RlJyk7CiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAg
fQoKICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZpbGUgYnkgUENMWklQX1JFQURfQkxPQ0tfU0laRSBvY3RldHM
gYmxvY2tzCiAgICBmc2Vlaygkdl9maWxlX2NvbX
ByZXNzZWQsIDEwKTsKICAgICR2X3NpemUgPSAkcF9oZWFkZXJbJ2NvbXByZXNzZWRfc2l6ZSddOwogICAgd
2hpbGUgKCR2X3NpemUgIT0gMCkKICAgIHsKICAgICAgJHZfcmVhZF9zaXplID0gKCR2X3NpemUgPCBQQ0xa
SVBfUkVBRF9CTE9DS19TSVpFID8gJHZfc2l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICA
kdl9idWZmZXIgPSBAZnJlYWQoJHZfZmlsZV9jb21wcmVzc2VkLCAkdl9yZWFkX3NpemUpOwogICAgICAvLy
R2X2JpbmFyeV9kYXRhID0gcGFjaygnYScuJHZfcmVhZF9zaXplLCAkdl9idWZmZXIpOwogICAgICBAZndya
XRlKCR0aGlzLT56aXBfZmQsICR2X2J1ZmZlciwgJHZfcmVhZF9zaXplKTsKICAgICAgJHZfc2l6ZSAtPSAk
dl9yZWFkX3NpemU7CiAgICB9CgogICAgLy8gLS0tLS0gQ2xvc2UgdGhlIGZpbGUKICAgIEBmY2xvc2UoJHZ
fZmlsZV9jb21wcmVzc2VkKTsKCiAgICAvLyAtLS0tLSBVbmxpbmsgdGhlIHRlbXBvcmFyeSBmaWxlCiAgIC
BAdW5saW5rKCR2X2d6aXBfdGVtcF9uYW1lKTsKCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkd
l9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi
AgLy8gRnVuY3Rpb24gOiBwcml2Q2FsY3VsYXRlU3RvcmVkRmlsZW5hbWUoKQogIC8vIERlc2NyaXB0aW9uI
DoKICAvLyAgIEJhc2VkIG9uIGZpbGUgZGVzY3JpcHRvciBwcm9wZXJ0aWVzIGFuZCBnbG9iYWwgb3B0aW9u
cywgdGhpcyBtZXRob2QKICAvLyAgIGNhbGN1bGF0ZSB0aGUgZmlsZW5hbWUgdGhhdCB3aWxsIGJlIHN0b3J
lZCBpbiB0aGUgYXJjaGl2ZS4KICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLy
AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZDYWxjdWxhdGVTdG9yZWRGaWxlbmFtZSgmJHBf
ZmlsZWRlc2NyLCAmJHBfb3B0aW9ucykKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICAvLyAtLS0tLSBXb3J
raW5nIHZhcmlhYmxlcwogICAgJHBfZmlsZW5hbWUgPSAkcF9maWxlZGVzY3JbJ2ZpbGVuYW1lJ107CiAgIC
BpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0FERF9QQVRIXSkpIHsKICAgICAgJHBfYWRkX2Rpc
iA9ICRwX29wdGlvbnNbUENMWklQX09QVF9BRERfUEFUSF07CiAgICB9CiAgICBlbHNlIHsKICAgICAgJHBf
YWRkX2RpciA9ICcnOwogICAgfQogICAgaWYgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9SRU1PVkV
fUEFUSF0pKSB7CiAgICAgICRwX3JlbW92ZV9kaXIgPSAkcF9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX1
BBVEhdOwogICAgfQogICAgZWxzZSB7CiAgICAgICRwX3JlbW92ZV9kaXIgPSAnJzsKICAgIH0KICAgIGlmI
Chpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQVRIXSkpIHsKICAgICAgJHBfcmVt
b3ZlX2FsbF9kaXIgPSAkcF9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQVRIXTsKICAgIH0KICA
gIGVsc2UgewogICAgICAkcF9yZW1vdmVfYWxsX2RpciA9IDA7CiAgICB9CgoKICAgIC8vIC0tLS0tIExvb2
sgZm9yIGZ1bGwgbmFtZSBjaGFuZ2UKICAgIGlmIChpc3NldCgkcF9maWxlZGVzY3JbJ25ld19mdWxsX25hb
WUnXSkpIHsKICAgICAgLy8gLS0tLS0gUmVtb3ZlIGRyaXZlIGxldHRlciBpZiBhbnkKICAgICAgJHZfc3Rv
cmVkX2ZpbGVuYW1lID0gUGNsWmlwVXRpbFRyYW5zbGF0ZVdpblBhdGgoJHBfZmlsZWRlc2NyWyduZXdfZnV
sbF9uYW1lJ10pOwogICAgfQoKICAgIC8vIC0tLS0tIExvb2sgZm9yIHBhdGggYW5kL29yIHNob3J0IG5hbW
UgY2hhbmdlCiAgICBlbHNlIHsKCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHNob3J0IG5hbWUgY2hhbmdlC
iAgICAgIC8vIEl0cyB3aGVuIHdlIGNhaG5nZSBqdXN0IHRoZSBmaWxlbmFtZSBidXQgbm90IHRoZSBwYXRo
CiAgICAgIGlmIChpc3NldCgkcF9maWxlZGVzY3JbJ25ld19zaG9ydF9uYW1lJ10pKSB7CiAgICAgICAgJHZ
fcGF0aF9pbmZvID0gcGF0aGluZm8oJHBfZmlsZW5hbWUpOwogICAgICAgICR2X2RpciA9ICcnOwogICAgIC
AgIGlmICgkdl9wYXRoX2luZm9bJ2Rpcm5hbWUnXSAhPSAnJykgewogICAgICAgICAgJHZfZGlyID0gJHZfc
GF0aF9pbmZvWydkaXJuYW1lJ10uJy8nOwogICAgICAgIH0KICAgICAgICAkdl9zdG9yZWRfZmlsZW5hbWUg
PSAkdl9kaXIuJHBfZmlsZWRlc2NyWyduZXdfc2hvcnRfbmFtZSddOwogICAgICB9CiAgICAgIGVsc2Ugewo
gICAgICAgIC8vIC0tLS0tIENhbGN1bGF0ZSB0aGUgc3RvcmVkIGZpbGVuYW1lCiAgICAgICAgJHZfc3Rvcm
VkX2ZpbGVuYW1lID0gJHBfZmlsZW5hbWU7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGFsb
CBwYXRoIHRvIHJlbW92ZQogICAgICBpZiAoJHBfcmVtb3ZlX2FsbF9kaXIpIHsKICAgICAgICAkdl9zdG9y
ZWRfZmlsZW5hbWUgPSBiYXNlbmFtZSgkcF9maWxlbmFtZSk7CiAgICAgIH0KICAgICAgLy8gLS0tLS0gTG9
vayBmb3IgcGFydGlhbCBwYXRoIHJlbW92ZQogICAgICBlbHNlIGlmICgkcF9yZW1vdmVfZGlyICE9ICIiKS
B7CiAgICAgICAgaWYgKHN1YnN0cigkcF9yZW1vdmVfZGlyLCAtMSkgIT0gJy8nKQogICAgICAgICAgJHBfc
mVtb3ZlX2RpciAuPSAiLyI7CgogICAgICAgIGlmICggICAoc3Vic3RyKCRwX2ZpbGVuYW1lLCAwLCAyKSA9
PSAiLi8iKQogICAgICAgICAgICB8fCAoc3Vic3RyKCRwX3JlbW92ZV9kaXIsIDAsIDIpID09ICIuLyIpKSB
7CgogICAgICAgICAgaWYgKCAgIChzdWJzdHIoJHBfZmlsZW5hbWUsIDAsIDIpID09ICIuLyIpCiAgICAgIC
AgICAgICAgJiYgKHN1YnN0cigkcF9yZW1vdmVfZGlyLCAwLCAyKSAhPSAiLi8iKSkgewogICAgICAgICAgI
CAkcF9yZW1vdmVfZGlyID0gIi4vIi4kcF9yZW1vdmVfZGlyOwogICAgICAgICAgfQogICAgICAgICAgaWYg
KCAgIChzdWJzdHIoJHBfZmlsZW5hbWUsIDAsIDIpICE9ICIuLyIpCiAgICAgICAgICAgICAgJiYgKHN1YnN
0cigkcF9yZW1vdmVfZGlyLCAwLCAyKSA9PSAiLi8iKSkgewogICAgICAgICAgICAkcF9yZW1vdmVfZGlyID
0gc3Vic3RyKCRwX3JlbW92ZV9kaXIsIDIpOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJHZfY
29tcGFyZSA9IFBjbFppcFV0aWxQYXRoSW5jbHVzaW9uKCRwX3JlbW92ZV9kaXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2X3N0b3JlZF9maWxlbmFtZSk7CiAgICAgICAgaWY
gKCR2X2NvbXBhcmUgPiAwKSB7CiAgICAgICAgICBpZiAoJHZfY29tcGFyZSA9PSAyKSB7CiAgICAgICAgIC
AgICR2X3N0b3JlZF9maWxlbmFtZSA9ICIiOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgI
CAgICAgICR2X3N0b3JlZF9maWxlbmFtZSA9IHN1YnN0cigkdl9zdG9yZWRfZmlsZW5hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oJHBfcmVtb3ZlX2RpcikpOwogICAgICA
gICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gLS0tLS0gUmVtb3ZlIGRyaXZlIGxldHRlciBpZi
BhbnkKICAgICAgJHZfc3RvcmVkX2ZpbGVuYW1lID0gUGNsWmlwVXRpbFRyYW5zbGF0ZVdpblBhdGgoJHZfc
3RvcmVkX2ZpbGVuYW1lKTsKCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHBhdGggdG8gYWRkCiAgICAgIGlm
ICgkcF9hZGRfZGlyICE9ICIiKSB7CiAgICAgICAgaWYgKHN1YnN0cigkcF9hZGRfZGlyLCAtMSkgPT0gIi8
iKQogICAgICAgICAgJHZfc3RvcmVkX2ZpbGVuYW1lID0gJHBfYWRkX2Rpci4kdl9zdG9yZWRfZmlsZW5hbW
U7CiAgICAgICAgZWxzZQogICAgICAgICAgJHZfc3RvcmVkX2ZpbGVuYW1lID0gJHBfYWRkX2Rpci4iLyIuJ
HZfc3RvcmVkX2ZpbGVuYW1lOwogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gRmlsZW5hbWUgKHJlZHVj
ZSB0aGUgcGF0aCBvZiBzdG9yZWQgbmFtZSkKICAgICR2X3N0b3JlZF9maWxlbmFtZSA9IFBjbFppcFV0aWx
QYXRoUmVkdWN0aW9uKCR2X3N0b3JlZF9maWxlbmFtZSk7CiAgICAkcF9maWxlZGVzY3JbJ3N0b3JlZF9maW
xlbmFtZSddID0gJHZfc3RvcmVkX2ZpbGVuYW1lOwoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuI
CR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0KICAvLyBGdW5jdGlvbiA6IHByaXZXcml0ZUZpbGVIZWFkZXIoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvL
yBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ
1bmN0aW9uIHByaXZXcml0ZUZpbGVIZWFkZXIoJiRwX2hlYWRlcikKICB7CiAgICAkdl9yZXN1bHQ9MTsKCi
AgICAvLyAtLS0tLSBTdG9yZSB0aGUgb2Zmc2V0IHBvc2l0aW9uIG9mIHRoZSBmaWxlCiAgICAkcF9oZWFkZ
XJbJ29mZnNldCddID0gZnRlbGwoJHRoaXMtPnppcF9mZCk7CgogICAgLy8gLS0tLS0gVHJhbnNmb3JtIFVO
SVggbXRpbWUgdG8gRE9TIGZvcm1hdCBtZGF0ZS9tdGltZQogICAgJHZfZGF0ZSA9IGdldGRhdGUoJHBfaGV
hZGVyWydtdGltZSddKTsKICAgICR2X210aW1lID0gKCR2X2RhdGVbJ2hvdXJzJ108PDExKSArICgkdl9kYX
RlWydtaW51dGVzJ108PDUpICsgJHZfZGF0ZVsnc2Vjb25kcyddLzI7CiAgICAkdl9tZGF0ZSA9ICgoJHZfZ
GF0ZVsneWVhciddLTE5ODApPDw5KSArICgkdl9kYXRlWydtb24nXTw8NSkgKyAkdl9kYXRlWydtZGF5J107
CgogICAgLy8gLS0tLS0gUGFja2VkIGRhdGEKICAgICR2X2JpbmFyeV9kYXRhID0gcGFjaygiVnZ2dnZ2VlZ
WdnYiLCAweDA0MDM0YjUwLAoJICAgICAgICAgICAgICAgICAgICAgICRwX2hlYWRlclsndmVyc2lvbl9leH
RyYWN0ZWQnXSwgJHBfaGVhZGVyWydmbGFnJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBfaGVhZ
GVyWydjb21wcmVzc2lvbiddLCAkdl9tdGltZSwgJHZfbWRhdGUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgJHBfaGVhZGVyWydjcmMnXSwgJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSwKCQkJCQkJICAkcF9
oZWFkZXJbJ3NpemUnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oJHBfaGVhZGVyWydzdG
9yZWRfZmlsZW5hbWUnXSksCgkJCQkJCSAgJHBfaGVhZGVyWydleHRyYV9sZW4nXSk7CgogICAgLy8gLS0tL
S0gV3JpdGUgdGhlIGZpcnN0IDE0OCBieXRlcyBvZiB0aGUgaGVhZGVyIGluIHRoZSBhcmNoaXZlCiAgICBm
cHV0cygkdGhpcy0+emlwX2ZkLCAkdl9iaW5hcnlfZGF0YSwgMzApOwoKICAgIC8vIC0tLS0tIFdyaXRlIHR
oZSB2YXJpYWJsZSBmaWVsZHMKICAgIGlmIChzdHJsZW4oJHBfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXS
kgIT0gMCkKICAgIHsKICAgICAgZnB1dHMoJHRoaXMtPnppcF9mZCwgJHBfaGVhZGVyWydzdG9yZWRfZmlsZ
W5hbWUnXSwgc3RybGVuKCRwX2hlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10pKTsKICAgIH0KICAgIGlmICgk
cF9oZWFkZXJbJ2V4dHJhX2xlbiddICE9IDApCiAgICB7CiAgICAgIGZwdXRzKCR0aGlzLT56aXBfZmQsICR
wX2hlYWRlclsnZXh0cmEnXSwgJHBfaGVhZGVyWydleHRyYV9sZW4nXSk7CiAgICB9CgogICAgLy8gLS0tLS
0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogcHJpdldyaXRlQ2VudHJhbEZpbGVIZWFkZX
IoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKI
CAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZXcml0ZUNlbnRyYWxGaWxlSGVhZGVyKCY
kcF9oZWFkZXIpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gVEJDCiAgICAvL2ZvcihyZXNldCgkcF
9oZWFkZXIpOyAka2V5ID0ga2V5KCRwX2hlYWRlcik7IG5leHQoJHBfaGVhZGVyKSkgewogICAgLy99CgogI
CAgLy8gLS0tLS0gVHJhbnNmb3JtIFVOSVggbXRpbWUgdG8gRE9TIGZvcm1hdCBtZGF0ZS9tdGltZQogICAg
JHZfZGF0ZSA9IGdldGRhdGUoJHBfaGVhZGVyWydtdGltZSddKTsKICAgICR2X210aW1lID0gKCR2X2RhdGV
bJ2hvdXJzJ108PDExKSArICgkdl9kYXRlWydtaW51dGVzJ108PDUpICsgJHZfZGF0ZVsnc2Vjb25kcyddLz
I7CiAgICAkdl9tZGF0ZSA9ICgoJHZfZGF0ZVsneWVhciddLTE5ODApPDw5KSArICgkdl9kYXRlWydtb24nX
Tw8NSkgKyAkdl9kYXRlWydtZGF5J107CgoKICAgIC8vIC0tLS0tIFBhY2tlZCBkYXRhCiAgICAkdl9iaW5h
cnlfZGF0YSA9IHBhY2soIlZ2dnZ2dnZWVlZ2dnZ2dlZWIiwgMHgwMjAxNGI1MCwKCSAgICAgICAgICAgICA
gICAgICAgICAkcF9oZWFkZXJbJ3ZlcnNpb24nXSwgJHBfaGVhZGVyWyd2ZXJzaW9uX2V4dHJhY3RlZCddLA
ogICAgICAgICAgICAgICAgICAgICAgICAgICRwX2hlYWRlclsnZmxhZyddLCAkcF9oZWFkZXJbJ2NvbXByZ
XNzaW9uJ10sCgkJCQkJCSAgJHZfbXRpbWUsICR2X21kYXRlLCAkcF9oZWFkZXJbJ2NyYyddLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICRwX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ10sICRwX2hlYWRlclsnc2l
6ZSddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbigkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbm
FtZSddKSwKCQkJCQkJICAkcF9oZWFkZXJbJ2V4dHJhX2xlbiddLCAkcF9oZWFkZXJbJ2NvbW1lbnRfbGVuJ
10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgJHBfaGVhZGVyWydkaXNrJ10sICRwX2hlYWRlclsnaW50
ZXJuYWwnXSwKCQkJCQkJICAkcF9oZWFkZXJbJ2V4dGVybmFsJ10sICRwX2hlYWRlclsnb2Zmc2V0J10pOwo
KICAgIC8vIC0tLS0tIFdyaXRlIHRoZSA0MiBieXRlcyBvZiB0aGUgaGVhZGVyIGluIHRoZSB6aXAgZmlsZQ
ogICAgZnB1dHMoJHRoaXMtPnppcF9mZCwgJHZfY
mluYXJ5X2RhdGEsIDQ2KTsKCiAgICAvLyAtLS0tLSBXcml0ZSB0aGUgdmFyaWFibGUgZmllbGRzCiAgICBp
ZiAoc3RybGVuKCRwX2hlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10pICE9IDApCiAgICB7CiAgICAgIGZwdXR
zKCR0aGlzLT56aXBfZmQsICRwX2hlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10sIHN0cmxlbigkcF9oZWFkZX
JbJ3N0b3JlZF9maWxlbmFtZSddKSk7CiAgICB9CiAgICBpZiAoJHBfaGVhZGVyWydleHRyYV9sZW4nXSAhP
SAwKQogICAgewogICAgICBmcHV0cygkdGhpcy0+emlwX2ZkLCAkcF9oZWFkZXJbJ2V4dHJhJ10sICRwX2hl
YWRlclsnZXh0cmFfbGVuJ10pOwogICAgfQogICAgaWYgKCRwX2hlYWRlclsnY29tbWVudF9sZW4nXSAhPSA
wKQogICAgewogICAgICBmcHV0cygkdGhpcy0+emlwX2ZkLCAkcF9oZWFkZXJbJ2NvbW1lbnQnXSwgJHBfaG
VhZGVyWydjb21tZW50X2xlbiddKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkd
l9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi
AgLy8gRnVuY3Rpb24gOiBwcml2V3JpdGVDZW50cmFsSGVhZGVyKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgL
y8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICB
mdW5jdGlvbiBwcml2V3JpdGVDZW50cmFsSGVhZGVyKCRwX25iX2VudHJpZXMsICRwX3NpemUsICRwX29mZn
NldCwgJHBfY29tbWVudCkKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICAvLyAtLS0tLSBQYWNrZWQgZGF0Y
QogICAgJHZfYmluYXJ5X2RhdGEgPSBwYWNrKCJWdnZ2dlZWdiIsIDB4MDYwNTRiNTAsIDAsIDAsICRwX25i
X2VudHJpZXMsCgkgICAgICAgICAgICAgICAgICAgICAgJHBfbmJfZW50cmllcywgJHBfc2l6ZSwKCQkJCQk
JICAkcF9vZmZzZXQsIHN0cmxlbigkcF9jb21tZW50KSk7CgogICAgLy8gLS0tLS0gV3JpdGUgdGhlIDIyIG
J5dGVzIG9mIHRoZSBoZWFkZXIgaW4gdGhlIHppcCBmaWxlCiAgICBmcHV0cygkdGhpcy0+emlwX2ZkLCAkd
l9iaW5hcnlfZGF0YSwgMjIpOwoKICAgIC8vIC0tLS0tIFdyaXRlIHRoZSB2YXJpYWJsZSBmaWVsZHMKICAg
IGlmIChzdHJsZW4oJHBfY29tbWVudCkgIT0gMCkKICAgIHsKICAgICAgZnB1dHMoJHRoaXMtPnppcF9mZCw
gJHBfY29tbWVudCwgc3RybGVuKCRwX2NvbW1lbnQpKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KIC
AgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2TGlzdCgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIF
BhcmFtZXRlcnMgOgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVu
Y3Rpb24gcHJpdkxpc3QoJiRwX2xpc3QpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gTWF
naWMgcXVvdGVzIHRyaWNrCiAgICAkdGhpcy0+cHJpdkRpc2FibGVNYWdpY1F1b3RlcygpOwoKICAgIC8vIC
0tLS0tIE9wZW4gdGhlIHppcCBmaWxlCiAgICBpZiAoKCR0aGlzLT56aXBfZmQgPSBAZm9wZW4oJHRoaXMtP
nppcG5hbWUsICdyYicpKSA9PSAwKQogICAgewogICAgICAvLyAtLS0tLSBNYWdpYyBxdW90ZXMgdHJpY2sK
ICAgICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgogICAgICAvLyAtLS0tLSBFcnJvciB
sb2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9SRUFEX09QRU5fRkFJTCwgJ1VuYW
JsZSB0byBvcGVuIGFyY2hpdmUgXCcnLiR0aGlzLT56aXBuYW1lLidcJyBpbiBiaW5hcnkgcmVhZCBtb2RlJ
yk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAg
ICB9CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgY2VudHJhbCBkaXJlY3RvcnkgaW5mb3JtYXRpb25zCiAgICA
kdl9jZW50cmFsX2RpciA9IGFycmF5KCk7CiAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2UmVhZE
VuZENlbnRyYWxEaXIoJHZfY2VudHJhbF9kaXIpKSAhPSAxKQogICAgewogICAgICAkdGhpcy0+cHJpdlN3Y
XBCYWNrTWFnaWNRdW90ZXMoKTsKICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0t
LSBHbyB0byBiZWdpbm5pbmcgb2YgQ2VudHJhbCBEaXIKICAgIEByZXdpbmQoJHRoaXMtPnppcF9mZCk7CiA
gICBpZiAoQGZzZWVrKCR0aGlzLT56aXBfZmQsICR2X2NlbnRyYWxfZGlyWydvZmZzZXQnXSkpCiAgICB7Ci
AgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgLy8gLS0tLS0gRXJyb3Igb
G9nCiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9BUkNISVZFX1pJUCwg
J0ludmFsaWQgYXJjaGl2ZSBzaXplJyk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFB
jbFppcDo6ZXJyb3JDb2RlKCk7CiAgICB9CgogICAgLy8gLS0tLS0gUmVhZCBlYWNoIGVudHJ5CiAgICBmb3
IgKCRpPTA7ICRpPCR2X2NlbnRyYWxfZGlyWydlbnRyaWVzJ107ICRpKyspCiAgICB7CiAgICAgIC8vIC0tL
S0tIFJlYWQgdGhlIGZpbGUgaGVhZGVyCiAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZSZWFk
Q2VudHJhbEZpbGVIZWFkZXIoJHZfaGVhZGVyKSkgIT0gMSkKICAgICAgewogICAgICAgICR0aGlzLT5wcml
2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwogICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgIH0KICAgIC
AgJHZfaGVhZGVyWydpbmRleCddID0gJGk7CgogICAgICAvLyAtLS0tLSBHZXQgdGhlIG9ubHkgaW50ZXJlc
3RpbmcgYXR0cmlidXRlcwogICAgICAkdGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIyRmlsZUluZm8oJHZfaGVh
ZGVyLCAkcF9saXN0WyRpXSk7CiAgICAgIHVuc2V0KCR2X2hlYWRlcik7CiAgICB9CgogICAgLy8gLS0tLS0
gQ2xvc2UgdGhlIHppcCBmaWxlCiAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKCiAgICAvLyAtLS0tLSBNYW
dpYyBxdW90ZXMgdHJpY2sKICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgIC8vI
C0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZDb252ZXJ0SGVhZGVyMkZpb
GVJbmZvKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gICBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBmaWxl
IGluZm9ybWF0aW9ucyBmcm9tIHRoZSBjZW50cmFsIGRpcmVjdG9yeQogIC8vICAgZW50cmllcyBhbmQgZXh
0cmFjdCB0aGUgaW50ZXJlc3RpbmcgcGFyYW1ldGVycyB0aGF0IHdpbGwgYmUgZ2l2ZW4gYmFjay4KICAvLy
AgIFRoZSByZXN1bHRpbmcgZmlsZSBpbmZvcyBhcmUgc2V0IGluIHRoZSBhcnJheSAkcF9pbmZvCiAgLy8gI
CAgICRwX2luZm9bJ2ZpbGVuYW1lJ10gOiBGaWxlbmFtZSB3aXRoIGZ1bGwgcGF0aC4gR2l2ZW4gYnkgdXNl
ciAoYWRkKSwKICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RlZCBpbiB0aGUgZmlsZXN
5c3RlbSAoZXh0cmFjdCkuCiAgLy8gICAgICRwX2luZm9bJ3N0b3JlZF9maWxlbmFtZSddIDogU3RvcmVkIG
ZpbGVuYW1lIGluIHRoZSBhcmNoaXZlLgogIC8vICAgICAkcF9pbmZvWydzaXplJ10gPSBTaXplIG9mIHRoZ
SBmaWxlLgogIC8vICAgICAkcF9pbmZvWydjb21wcmVzc2VkX3NpemUnXSA9IENvbXByZXNzZWQgc2l6ZSBv
ZiB0aGUgZmlsZS4KICAvLyAgICAgJHBfaW5mb1snbXRpbWUnXSA9IExhc3QgbW9kaWZpY2F0aW9uIGRhdGU
gb2YgdGhlIGZpbGUuCiAgLy8gICAgICRwX2luZm9bJ2NvbW1lbnQnXSA9IENvbW1lbnQgYXNzb2NpYXRlZC
B3aXRoIHRoZSBmaWxlLgogIC8vICAgICAkcF9pbmZvWydmb2xkZXInXSA9IHRydWUvZmFsc2UgOiBpbmRpY
2F0ZXMgaWYgdGhlIGVudHJ5IGlzIGEgZm9sZGVyIG9yIG5vdC4KICAvLyAgICAgJHBfaW5mb1snc3RhdHVz
J10gPSBzdGF0dXMgb2YgdGhlIGFjdGlvbiBvbiB0aGUgZmlsZS4KICAvLyAgICAgJHBfaW5mb1snY3JjJ10
gPSBDUkMgb2YgdGhlIGZpbGUgY29udGVudC4KICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdW
VzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZDb252ZXJ0SGVhZGVyMkZpbGVJ
bmZvKCRwX2hlYWRlciwgJiRwX2luZm8pCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gR2V
0IHRoZSBpbnRlcmVzdGluZyBhdHRyaWJ1dGVzCiAgICAkdl90ZW1wX3BhdGggPSBQY2xaaXBVdGlsUGF0aF
JlZHVjdGlvbigkcF9oZWFkZXJbJ2ZpbGVuYW1lJ10pOwogICAgJHBfaW5mb1snZmlsZW5hbWUnXSA9ICR2X
3RlbXBfcGF0aDsKICAgICR2X3RlbXBfcGF0aCA9IFBjbFppcFV0aWxQYXRoUmVkdWN0aW9uKCRwX2hlYWRl
clsnc3RvcmVkX2ZpbGVuYW1lJ10pOwogICAgJHBfaW5mb1snc3RvcmVkX2ZpbGVuYW1lJ10gPSAkdl90ZW1
wX3BhdGg7CiAgICAkcF9pbmZvWydzaXplJ10gPSAkcF9oZWFkZXJbJ3NpemUnXTsKICAgICRwX2luZm9bJ2
NvbXByZXNzZWRfc2l6ZSddID0gJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXTsKICAgICRwX2luZm9bJ
210aW1lJ10gPSAkcF9oZWFkZXJbJ210aW1lJ107CiAgICAkcF9pbmZvWydjb21tZW50J10gPSAkcF9oZWFk
ZXJbJ2NvbW1lbnQnXTsKICAgICRwX2luZm9bJ2ZvbGRlciddID0gKCgkcF9oZWFkZXJbJ2V4dGVybmFsJ10
mMHgwMDAwMDAxMCk9PTB4MDAwMDAwMTApOwogICAgJHBfaW5mb1snaW5kZXgnXSA9ICRwX2hlYWRlclsnaW
5kZXgnXTsKICAgICRwX2luZm9bJ3N0YXR1cyddID0gJHBfaGVhZGVyWydzdGF0dXMnXTsKICAgICRwX2luZ
m9bJ2NyYyddID0gJHBfaGVhZGVyWydjcmMnXTsKCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAk
dl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tC
iAgLy8gRnVuY3Rpb24gOiBwcml2RXh0cmFjdEJ5UnVsZSgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAg
RXh0cmFjdCBhIGZpbGUgb3IgZGlyZWN0b3J5IGRlcGVuZGluZyBvZiBydWxlcyAoYnkgaW5kZXgsIGJ5IG5
hbWUsIC4uLikKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAgICRwX2ZpbGVfbGlzdCA6IEFuIGFycmF5IHdoZX
JlIHdpbGwgYmUgcGxhY2VkIHRoZSBwcm9wZXJ0aWVzIG9mIGVhY2gKICAvLyAgICAgICAgICAgICAgICAgI
GV4dHJhY3RlZCBmaWxlCiAgLy8gICAkcF9wYXRoIDogUGF0aCB0byBhZGQgd2hpbGUgd3JpdGluZyB0aGUg
ZXh0cmFjdGVkIGZpbGVzCiAgLy8gICAkcF9yZW1vdmVfcGF0aCA6IFBhdGggdG8gcmVtb3ZlIChmcm9tIHR
oZSBmaWxlIG1lbW9yaXplZCBwYXRoKSB3aGlsZSB3cml0aW5nIHRoZQogIC8vICAgICAgICAgICAgICAgIC
AgICBleHRyYWN0ZWQgZmlsZXMuIElmIHRoZSBwYXRoIGRvZXMgbm90IG1hdGNoIHRoZSBmaWxlIHBhdGgsC
iAgLy8gICAgICAgICAgICAgICAgICAgIHRoZSBmaWxlIGlzIGV4dHJhY3RlZCB3aXRoIGl0cyBtZW1vcml6
ZWQgcGF0aC4KICAvLyAgICAgICAgICAgICAgICAgICAgJHBfcmVtb3ZlX3BhdGggZG9lcyBub3QgYXBwbHk
gdG8gJ2xpc3QnIG1vZGUuCiAgLy8gICAgICAgICAgICAgICAgICAgICRwX3BhdGggYW5kICRwX3JlbW92ZV
9wYXRoIGFyZSBjb21tdWxhdGl2ZS4KICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAgIDEgb24gc3VjY2Vzc
ywwIG9yIGxlc3Mgb24gZXJyb3IgKHNlZSBlcnJvciBjb2RlIGxpc3QpCiAgLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0KICBmdW5jdGlvbiBwcml2RXh0cmFjdEJ5UnVsZSgmJHBfZmlsZV9saXN0LCAkcF9wYXRoLCAkcF9yZW
1vdmVfcGF0aCwgJHBfcmVtb3ZlX2FsbF9wYXRoLCAmJHBfb3B0aW9ucykKICB7CiAgICAkdl9yZXN1bHQ9M
TsKCiAgICAvLyAtLS0tLSBNYWdpYyBxdW90ZXMgdHJpY2sKICAgICR0aGlzLT5wcml2RGlzYWJsZU1hZ2lj
UXVvdGVzKCk7CgogICAgLy8gLS0tLS0gQ2hlY2sgdGhlIHBhdGgKICAgIGlmICggICAoJHBfcGF0aCA9PSA
iIikKCSAgICB8fCAoICAgKHN1YnN0cigkcF9wYXRoLCAwLCAxKSAhPSAiLyIpCgkJICAgICYmIChzdWJzdH
IoJHBfcGF0aCwgMCwgMykgIT0gIi4uLyIpCgkJCSYmIChzdWJzdHIoJHBfcGF0aCwxLDIpIT0iOi8iKSkpC
iAgICAgICRwX3BhdGggPSAiLi8iLiRwX3BhdGg7CgogICAgLy8gLS0tLS0gUmVkdWNlIHRoZSBwYXRoIGxh
c3QgKGFuZCBkdXBsaWNhdGVkKSAnLycKICAgIGlmICgoJHBfcGF0aCAhPSAiLi8iKSAmJiAoJHBfcGF0aCA
hPSAiLyIpKQogICAgewogICAgICAvLyAtLS0tLSBMb29rIGZvciB0aGUgcGF0aCBlbmQgJy8nCiAgICAgIH
doaWxlIChzdWJzdHIoJHBfcGF0aCwgLTEpID09ICIvIikKICAgICAgewogICAgICAgICRwX3BhdGggPSBzd
WJzdHIoJHBfcGF0aCwgMCwgc3RybGVuKCRwX3BhdGgpLTEpOwogICAgICB9CiAgICB9CgogICAgLy8gLS0t
LS0gTG9vayBmb3IgcGF0aCB0byByZW1vdmUgZm9ybWF0IChzaG91bGQgZW5kIGJ5IC8pCiAgICBpZiAoKCR
wX3JlbW92ZV9wYXRoICE9ICIiKSAmJiAoc3Vic3RyKCRwX3JlbW92ZV9wYXRoLCAtMSkgIT0gJy8nKSkKIC
AgIHsKICAgICAgJHBfcmVtb3ZlX3BhdGggLj0gJy8nOwogICAgfQogICAgJHBfcmVtb3ZlX3BhdGhfc2l6Z
SA9IHN0cmxlbigkcF9yZW1vdmVfcGF0aCk7Cgog
ICAgLy8gLS0tLS0gT3BlbiB0aGUgemlwIGZpbGUKICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZ
PcGVuRmQoJ3JiJykpICE9IDEpCiAgICB7CiAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3Rlcy
gpOwogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKICAgIC8vIC0tLS0tIFJlYWQgdGhlIGNlbnRyY
WwgZGlyZWN0b3J5IGluZm9ybWF0aW9ucwogICAgJHZfY2VudHJhbF9kaXIgPSBhcnJheSgpOwogICAgaWYg
KCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdlJlYWRFbmRDZW50cmFsRGlyKCR2X2NlbnRyYWxfZGlyKSkgIT0
gMSkKICAgIHsKICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHppcCBmaWxlCiAgICAgICR0aGlzLT5wcml2Q2
xvc2VGZCgpOwogICAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAgIHJldHVyb
iAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gU3RhcnQgYXQgYmVnaW5uaW5nIG9mIENlbnRyYWwg
RGlyCiAgICAkdl9wb3NfZW50cnkgPSAkdl9jZW50cmFsX2Rpclsnb2Zmc2V0J107CgogICAgLy8gLS0tLS0
gUmVhZCBlYWNoIGVudHJ5CiAgICAkal9zdGFydCA9IDA7CiAgICBmb3IgKCRpPTAsICR2X25iX2V4dHJhY3
RlZD0wOyAkaTwkdl9jZW50cmFsX2RpclsnZW50cmllcyddOyAkaSsrKQogICAgewoKICAgICAgLy8gLS0tL
S0gUmVhZCBuZXh0IENlbnRyYWwgZGlyIGVudHJ5CiAgICAgIEByZXdpbmQoJHRoaXMtPnppcF9mZCk7CiAg
ICAgIGlmIChAZnNlZWsoJHRoaXMtPnppcF9mZCwgJHZfcG9zX2VudHJ5KSkKICAgICAgewogICAgICAgIC8
vIC0tLS0tIENsb3NlIHRoZSB6aXAgZmlsZQogICAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgIC
AgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgICAvLyAtLS0tLSBFcnJvciBsb
2cKICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfQVJDSElWRV9aSVAs
ICdJbnZhbGlkIGFyY2hpdmUgc2l6ZScpOwoKICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICByZXR
1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlsZS
BoZWFkZXIKICAgICAgJHZfaGVhZGVyID0gYXJyYXkoKTsKICAgICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpc
y0+cHJpdlJlYWRDZW50cmFsRmlsZUhlYWRlcigkdl9oZWFkZXIpKSAhPSAxKQogICAgICB7CiAgICAgICAg
Ly8gLS0tLS0gQ2xvc2UgdGhlIHppcCBmaWxlCiAgICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICA
gICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgogICAgICAgIHJldHVybiAkdl9yZXN1bH
Q7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIFN0b3JlIHRoZSBpbmRleAogICAgICAkdl9oZWFkZXJbJ2luZ
GV4J10gPSAkaTsKCiAgICAgIC8vIC0tLS0tIFN0b3JlIHRoZSBmaWxlIHBvc2l0aW9uCiAgICAgICR2X3Bv
c19lbnRyeSA9IGZ0ZWxsKCR0aGlzLT56aXBfZmQpOwoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgdGhlIHN
wZWNpZmljIGV4dHJhY3QgcnVsZXMKICAgICAgJHZfZXh0cmFjdCA9IGZhbHNlOwoKICAgICAgLy8gLS0tLS
0gTG9vayBmb3IgZXh0cmFjdCBieSBuYW1lIHJ1bGUKICAgICAgaWYgKCAgIChpc3NldCgkcF9vcHRpb25zW
1BDTFpJUF9PUFRfQllfTkFNRV0pKQogICAgICAgICAgJiYgKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9O
QU1FXSAhPSAwKSkgewoKICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlIGZpbGVuYW1lIGlzIGluIHR
oZSBsaXN0CiAgICAgICAgICBmb3IgKCRqPTA7ICgkajxzaXplb2YoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0
JZX05BTUVdKSkgJiYgKCEkdl9leHRyYWN0KTsgJGorKykgewoKICAgICAgICAgICAgICAvLyAtLS0tLSBMb
29rIGZvciBhIGRpcmVjdG9yeQogICAgICAgICAgICAgIGlmIChzdWJzdHIoJHBfb3B0aW9uc1tQQ0xaSVBf
T1BUX0JZX05BTUVdWyRqXSwgLTEpID09ICIvIikgewoKICAgICAgICAgICAgICAgICAgLy8gLS0tLS0gTG9
vayBpZiB0aGUgZGlyZWN0b3J5IGlzIGluIHRoZSBmaWxlbmFtZSBwYXRoCiAgICAgICAgICAgICAgICAgIG
lmICggICAoc3RybGVuKCR2X2hlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10pID4gc3RybGVuKCRwX29wdGlvb
nNbUENMWklQX09QVF9CWV9OQU1FXVskal0pKQogICAgICAgICAgICAgICAgICAgICAgJiYgKHN1YnN0cigk
dl9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddLCAwLCBzdHJsZW4oJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0J
ZX05BTUVdWyRqXSkpID09ICRwX29wdGlvbnNbUENMWklQX09QVF9CWV9OQU1FXVskal0pKSB7CiAgICAgIC
AgICAgICAgICAgICAgICAkdl9leHRyYWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgfQogICAgICAgI
CAgICAgIH0KICAgICAgICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBhIGZpbGVuYW1lCiAgICAgICAgICAg
ICAgZWxzZWlmICgkdl9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddID09ICRwX29wdGlvbnNbUENMWklQX09
QVF9CWV9OQU1FXVskal0pIHsKICAgICAgICAgICAgICAgICAgJHZfZXh0cmFjdCA9IHRydWU7CiAgICAgIC
AgICAgICAgfQogICAgICAgICAgfQogICAgICB9CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBleHRyYWN0I
GJ5IGVyZWcgcnVsZQogICAgICAvLyBlcmVnKCkgaXMgZGVwcmVjYXRlZCB3aXRoIFBIUCA1LjMKICAgICAg
LyoKICAgICAgZWxzZSBpZiAoICAgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9FUkVHXSkpCiA
gICAgICAgICAgICAgICYmICgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfRVJFR10gIT0gIiIpKSB7CgogIC
AgICAgICAgaWYgKGVyZWcoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0VSRUddLCAkdl9oZWFkZXJbJ3N0b
3JlZF9maWxlbmFtZSddKSkgewogICAgICAgICAgICAgICR2X2V4dHJhY3QgPSB0cnVlOwogICAgICAgICAg
fQogICAgICB9CiAgICAgICovCgogICAgICAvLyAtLS0tLSBMb29rIGZvciBleHRyYWN0IGJ5IHByZWcgcnV
sZQogICAgICBlbHNlIGlmICggICAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX1BSRUddKSkKIC
AgICAgICAgICAgICAgJiYgKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9QUkVHXSAhPSAiIikpIHsKCiAgI
CAgICAgICBpZiAocHJlZ19tYXRjaCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfUFJFR10sICR2X2hlYWRl
clsnc3RvcmVkX2ZpbGVuYW1lJ10pKSB7CiAgICAgICAgICAgICAgJHZfZXh0cmFjdCA9IHRydWU7CiAgICA
gICAgICB9CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGV4dHJhY3QgYnkgaW5kZXggcnVsZQ
ogICAgICBlbHNlIGlmICggICAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0lOREVYXSkpCiAgI
CAgICAgICAgICAgICYmICgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfSU5ERVhdICE9IDApKSB7CgogICAg
ICAgICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgaW5kZXggaXMgaW4gdGhlIGxpc3QKICAgICAgICAgIGZvciA
oJGo9JGpfc3RhcnQ7ICgkajxzaXplb2YoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0lOREVYXSkpICYmIC
ghJHZfZXh0cmFjdCk7ICRqKyspIHsKCiAgICAgICAgICAgICAgaWYgKCgkaT49JHBfb3B0aW9uc1tQQ0xaS
VBfT1BUX0JZX0lOREVYXVskal1bJ3N0YXJ0J10pICYmICgkaTw9JHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZ
X0lOREVYXVskal1bJ2VuZCddKSkgewogICAgICAgICAgICAgICAgICAkdl9leHRyYWN0ID0gdHJ1ZTsKICA
gICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKCRpPj0kcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfSU
5ERVhdWyRqXVsnZW5kJ10pIHsKICAgICAgICAgICAgICAgICAgJGpfc3RhcnQgPSAkaisxOwogICAgICAgI
CAgICAgIH0KCiAgICAgICAgICAgICAgaWYgKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9JTkRFWF1bJGpd
WydzdGFydCddPiRpKSB7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgIH0KICAgICA
gICAgIH0KICAgICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3Igbm8gcnVsZSwgd2hpY2ggbWVhbnMgZX
h0cmFjdCBhbGwgdGhlIGFyY2hpdmUKICAgICAgZWxzZSB7CiAgICAgICAgICAkdl9leHRyYWN0ID0gdHJ1Z
TsKICAgICAgfQoKCSAgLy8gLS0tLS0gQ2hlY2sgY29tcHJlc3Npb24gbWV0aG9kCgkgIGlmICggICAoJHZf
ZXh0cmFjdCkKCSAgICAgICYmICggICAoJHZfaGVhZGVyWydjb21wcmVzc2lvbiddICE9IDgpCgkJICAgICA
gJiYgKCR2X2hlYWRlclsnY29tcHJlc3Npb24nXSAhPSAwKSkpIHsKICAgICAgICAgICR2X2hlYWRlclsnc3
RhdHVzJ10gPSAndW5zdXBwb3J0ZWRfY29tcHJlc3Npb24nOwoKICAgICAgICAgIC8vIC0tLS0tIExvb2sgZ
m9yIFBDTFpJUF9PUFRfU1RPUF9PTl9FUlJPUgogICAgICAgICAgaWYgKCAgIChpc3NldCgkcF9vcHRpb25z
W1BDTFpJUF9PUFRfU1RPUF9PTl9FUlJPUl0pKQoJCSAgICAgICYmICgkcF9vcHRpb25zW1BDTFpJUF9PUFR
fU1RPUF9PTl9FUlJPUl09PT10cnVlKSkgewoKICAgICAgICAgICAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTW
FnaWNRdW90ZXMoKTsKCiAgICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9VT
lNVUFBPUlRFRF9DT01QUkVTU0lPTiwKCQkJICAgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUgJyIu
JHZfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXS4iJyBpcyAiCgkJCQkgIAkgICAgCSAgCSAgIC4iY29tcHJ
lc3NlZCBieSBhbiB1bnN1cHBvcnRlZCBjb21wcmVzc2lvbiAiCgkJCQkgIAkgICAgCSAgCSAgIC4ibWV0aG
9kICgiLiR2X2hlYWRlclsnY29tcHJlc3Npb24nXS4iKSAiKTsKCiAgICAgICAgICAgICAgcmV0dXJuIFBjb
FppcDo6ZXJyb3JDb2RlKCk7CgkJICB9CgkgIH0KCgkgIC8vIC0tLS0tIENoZWNrIGVuY3J5cHRlZCBmaWxl
cwoJICBpZiAoKCR2X2V4dHJhY3QpICYmICgoJHZfaGVhZGVyWydmbGFnJ10gJiAxKSA9PSAxKSkgewogICA
gICAgICAgJHZfaGVhZGVyWydzdGF0dXMnXSA9ICd1bnN1cHBvcnRlZF9lbmNyeXB0aW9uJzsKCiAgICAgIC
AgICAvLyAtLS0tLSBMb29rIGZvciBQQ0xaSVBfT1BUX1NUT1BfT05fRVJST1IKICAgICAgICAgIGlmICggI
CAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1NUT1BfT05fRVJST1JdKSkKCQkgICAgICAmJiAoJHBf
b3B0aW9uc1tQQ0xaSVBfT1BUX1NUT1BfT05fRVJST1JdPT09dHJ1ZSkpIHsKCiAgICAgICAgICAgICAgJHR
oaXMtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgogICAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm
9yTG9nKFBDTFpJUF9FUlJfVU5TVVBQT1JURURfRU5DUllQVElPTiwKCQkJICAgICAgICAgICAgICAgICAgI
CAgICAiVW5zdXBwb3J0ZWQgZW5jcnlwdGlvbiBmb3IgIgoJCQkJICAJICAgIAkgIAkgICAuIiBmaWxlbmFt
ZSAnIi4kdl9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddCgkJCQkJCQkJICAgLiInIik7CgogICAgICAgICA
gICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwoJCSAgfQogICAgfQoKICAgICAgLy8gLS0tLS0gTG
9vayBmb3IgcmVhbCBleHRyYWN0aW9uCiAgICAgIGlmICgoJHZfZXh0cmFjdCkgJiYgKCR2X2hlYWRlclsnc
3RhdHVzJ10gIT0gJ29rJykpIHsKICAgICAgICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2Q29udmVydEhl
YWRlcjJGaWxlSW5mbygkdl9oZWFkZXIsCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICRwX2ZpbGVfbGlzdFskdl9uYl9leHRyYWN0ZWQrK10pOwogICAgICAgICAgaWYgKCR2X3Jlc3VsdC
AhPSAxKSB7CiAgICAgICAgICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICAgICAgICAgJHRoa
XMtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CiAgICAgICAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsK
ICAgICAgICAgIH0KCiAgICAgICAgICAkdl9leHRyYWN0ID0gZmFsc2U7CiAgICAgIH0KCiAgICAgIC8vIC0
tLS0tIExvb2sgZm9yIHJlYWwgZXh0cmFjdGlvbgogICAgICBpZiAoJHZfZXh0cmFjdCkKICAgICAgewoKIC
AgICAgICAvLyAtLS0tLSBHbyB0byB0aGUgZmlsZSBwb3NpdGlvbgogICAgICAgIEByZXdpbmQoJHRoaXMtP
nppcF9mZCk7CiAgICAgICAgaWYgKEBmc2VlaygkdGhpcy0+emlwX2ZkLCAkdl9oZWFkZXJbJ29mZnNldCdd
KSkKICAgICAgICB7CiAgICAgICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgemlwIGZpbGUKICAgICAgICAgICR
0aGlzLT5wcml2Q2xvc2VGZCgpOwoKICAgICAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3Rlcy
gpOwoKICAgICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb
2coUENMWklQX0VSUl9JTlZBTElEX0FSQ0hJVkVfWklQLCAnSW52YWxpZCBhcmNoaXZlIHNpemUnKTsKCiAg
ICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwo
gICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZXh0cmFjdGlvbiBhcyBzdHJpbmcKICAgIC
AgICBpZiAoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0VYVFJBQ1RfQVNfU1RSSU5HXSkgewoKICAgICAgICAgI
CR2X3N0cmluZyA9ICcnOwoKICAgICAgICAgIC8vIC0tLS0tIEV4dHJhY3RpbmcgdGhlIGZpbGUKICAgICAg
ICAgICR2X3Jlc3VsdDEgPSAkdGhpcy0+cHJpdkV4dHJhY3RGaWxlQXNTdHJpbmcoJHZfaGVhZGVyLCAkdl9
zdHJpbmcsICRwX29wdGlvbnMpOwogICAgICAgICAgaWYgKCR2X3Jlc3VsdDEgPCAxKSB7CiAgICAgICAgIC
AgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRd
W90ZXMoKTsKICAgICAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDE7CiAgICAgICAgICB9CgogICAgICAgICAg
Ly8gLS0tLS0gR2V0IHRoZSBvbmx5IGludGVyZXN0aW5nIGF0dHJpYnV0ZXMKICAgICAgICAgIGlmICgoJHZ
fcmVzdWx0ID0gJHRoaXMtPnByaXZDb252ZXJ0SGVhZGVyMkZpbGVJbmZvKCR2X2hlYWRlciwgJHBfZmlsZV
9saXN0WyR2X25iX2V4dHJhY3RlZF0pKSAhPSAxKQogICAgICAgICAgewogICAgICAgICAgICAvLyAtLS0tL
SBDbG9zZSB0aGUgemlwIGZpbGUKICAgICAgICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICAg
ICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgICAgICAgcmV0dXJuICR2X3J
lc3VsdDsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBTZXQgdGhlIGZpbGUgY29udGVudAogIC
AgICAgICAgJHBfZmlsZV9saXN0WyR2X25iX2V4dHJhY3RlZF1bJ2NvbnRlbnQnXSA9ICR2X3N0cmluZzsKC
iAgICAgICAgICAvLyAtLS0tLSBOZXh0IGV4dHJhY3RlZCBmaWxlCiAgICAgICAgICAkdl9uYl9leHRyYWN0
ZWQrKzsKCiAgICAgICAgICAvLyAtLS0tLSBMb29
rIGZvciB1c2VyIGNhbGxiYWNrIGFib3J0CiAgICAgICAgICBpZiAoJHZfcmVzdWx0MSA9PSAyKSB7CiAgIC
AgICAgICAJYnJlYWs7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yI
GV4dHJhY3Rpb24gaW4gc3RhbmRhcmQgb3V0cHV0CiAgICAgICAgZWxzZWlmICggICAoaXNzZXQoJHBfb3B0
aW9uc1tQQ0xaSVBfT1BUX0VYVFJBQ1RfSU5fT1VUUFVUXSkpCgkJICAgICAgICAmJiAoJHBfb3B0aW9uc1t
QQ0xaSVBfT1BUX0VYVFJBQ1RfSU5fT1VUUFVUXSkpIHsKICAgICAgICAgIC8vIC0tLS0tIEV4dHJhY3Rpbm
cgdGhlIGZpbGUgaW4gc3RhbmRhcmQgb3V0cHV0CiAgICAgICAgICAkdl9yZXN1bHQxID0gJHRoaXMtPnBya
XZFeHRyYWN0RmlsZUluT3V0cHV0KCR2X2hlYWRlciwgJHBfb3B0aW9ucyk7CiAgICAgICAgICBpZiAoJHZf
cmVzdWx0MSA8IDEpIHsKICAgICAgICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICAgICAgICR
0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwogICAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0MT
sKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBHZXQgdGhlIG9ubHkgaW50ZXJlc3RpbmcgYXR0c
mlidXRlcwogICAgICAgICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIyRmls
ZUluZm8oJHZfaGVhZGVyLCAkcF9maWxlX2xpc3RbJHZfbmJfZXh0cmFjdGVkKytdKSkgIT0gMSkgewogICA
gICAgICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAgICAgJHRoaXMtPnByaXZTd2FwQmFja0
1hZ2ljUXVvdGVzKCk7CiAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgICB9CgogICAgI
CAgICAgLy8gLS0tLS0gTG9vayBmb3IgdXNlciBjYWxsYmFjayBhYm9ydAogICAgICAgICAgaWYgKCR2X3Jl
c3VsdDEgPT0gMikgewogICAgICAgICAgCWJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICA
vLyAtLS0tLSBMb29rIGZvciBub3JtYWwgZXh0cmFjdGlvbgogICAgICAgIGVsc2UgewogICAgICAgICAgLy
8gLS0tLS0gRXh0cmFjdGluZyB0aGUgZmlsZQogICAgICAgICAgJHZfcmVzdWx0MSA9ICR0aGlzLT5wcml2R
Xh0cmFjdEZpbGUoJHZfaGVhZGVyLAoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHBfcGF0aCwgJHBfcmVtb3ZlX3BhdGgsCgkJCQkJCQkJCQkJICAkcF9yZW1vdmVfYWxsX3BhdGgsCgkJCQk
JCQkJCQkJICAkcF9vcHRpb25zKTsKICAgICAgICAgIGlmICgkdl9yZXN1bHQxIDwgMSkgewogICAgICAgIC
AgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAgICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljU
XVvdGVzKCk7CiAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQxOwogICAgICAgICAgfQoKICAgICAgICAg
IC8vIC0tLS0tIEdldCB0aGUgb25seSBpbnRlcmVzdGluZyBhdHRyaWJ1dGVzCiAgICAgICAgICBpZiAoKCR
2X3Jlc3VsdCA9ICR0aGlzLT5wcml2Q29udmVydEhlYWRlcjJGaWxlSW5mbygkdl9oZWFkZXIsICRwX2ZpbG
VfbGlzdFskdl9uYl9leHRyYWN0ZWQrK10pKSAhPSAxKQogICAgICAgICAgewogICAgICAgICAgICAvLyAtL
S0tLSBDbG9zZSB0aGUgemlwIGZpbGUKICAgICAgICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAg
ICAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgICAgICAgcmV0dXJuICR
2X3Jlc3VsdDsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBMb29rIGZvciB1c2VyIGNhbGxiYW
NrIGFib3J0CiAgICAgICAgICBpZiAoJHZfcmVzdWx0MSA9PSAyKSB7CiAgICAgICAgICAJYnJlYWs7CiAgI
CAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHppcCBm
aWxlCiAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3R
lcygpOwoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZFeHR
yYWN0RmlsZSgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIFJldHVybiBWYW
x1ZXMgOgogIC8vCiAgLy8gMSA6IC4uLiA/CiAgLy8gUENMWklQX0VSUl9VU0VSX0FCT1JURUQoMikgOiBVc
2VyIGFzayBmb3IgZXh0cmFjdGlvbiBzdG9wIGluIGNhbGxiYWNrCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
KICBmdW5jdGlvbiBwcml2RXh0cmFjdEZpbGUoJiRwX2VudHJ5LCAkcF9wYXRoLCAkcF9yZW1vdmVfcGF0aC
wgJHBfcmVtb3ZlX2FsbF9wYXRoLCAmJHBfb3B0aW9ucykKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICAvL
yAtLS0tLSBSZWFkIHRoZSBmaWxlIGhlYWRlcgogICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdlJl
YWRGaWxlSGVhZGVyKCR2X2hlYWRlcikpICE9IDEpCiAgICB7CiAgICAgIC8vIC0tLS0tIFJldHVybgogICA
gICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKCiAgICAvLyAtLS0tLSBDaGVjayB0aGF0IHRoZSBmaWxlIG
hlYWRlciBpcyBjb2hlcmVudCB3aXRoICRwX2VudHJ5IGluZm8KICAgIGlmICgkdGhpcy0+cHJpdkNoZWNrR
mlsZUhlYWRlcnMoJHZfaGVhZGVyLCAkcF9lbnRyeSkgIT0gMSkgewogICAgICAgIC8vIFRCQwogICAgfQoK
ICAgIC8vIC0tLS0tIExvb2sgZm9yIGFsbCBwYXRoIHRvIHJlbW92ZQogICAgaWYgKCRwX3JlbW92ZV9hbGx
fcGF0aCA9PSB0cnVlKSB7CiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZm9sZGVyIGVudHJ5IHRoYXQgbm
90IG5lZWQgdG8gYmUgZXh0cmFjdGVkCiAgICAgICAgaWYgKCgkcF9lbnRyeVsnZXh0ZXJuYWwnXSYweDAwM
DAwMDEwKT09MHgwMDAwMDAxMCkgewoKICAgICAgICAgICAgJHBfZW50cnlbJ3N0YXR1cyddID0gImZpbHRl
cmVkIjsKCiAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0
tLSBHZXQgdGhlIGJhc2VuYW1lIG9mIHRoZSBwYXRoCiAgICAgICAgJHBfZW50cnlbJ2ZpbGVuYW1lJ10gPS
BiYXNlbmFtZSgkcF9lbnRyeVsnZmlsZW5hbWUnXSk7CiAgICB9CgogICAgLy8gLS0tLS0gTG9vayBmb3Igc
GF0aCB0byByZW1vdmUKICAgIGVsc2UgaWYgKCRwX3JlbW92ZV9wYXRoICE9ICIiKQogICAgewogICAgICBp
ZiAoUGNsWmlwVXRpbFBhdGhJbmNsdXNpb24oJHBfcmVtb3ZlX3BhdGgsICRwX2VudHJ5WydmaWxlbmFtZSd
dKSA9PSAyKQogICAgICB7CgogICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzdGF0dXMKICAgIC
AgICAkcF9lbnRyeVsnc3RhdHVzJ10gPSAiZmlsdGVyZWQiOwoKICAgICAgICAvLyAtLS0tLSBSZXR1cm4KI
CAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICB9CgogICAgICAkcF9yZW1vdmVfcGF0aF9zaXplID0g
c3RybGVuKCRwX3JlbW92ZV9wYXRoKTsKICAgICAgaWYgKHN1YnN0cigkcF9lbnRyeVsnZmlsZW5hbWUnXSw
gMCwgJHBfcmVtb3ZlX3BhdGhfc2l6ZSkgPT0gJHBfcmVtb3ZlX3BhdGgpCiAgICAgIHsKCiAgICAgICAgLy
8gLS0tLS0gUmVtb3ZlIHRoZSBwYXRoCiAgICAgICAgJHBfZW50cnlbJ2ZpbGVuYW1lJ10gPSBzdWJzdHIoJ
HBfZW50cnlbJ2ZpbGVuYW1lJ10sICRwX3JlbW92ZV9wYXRoX3NpemUpOwoKICAgICAgfQogICAgfQoKICAg
IC8vIC0tLS0tIEFkZCB0aGUgcGF0aAogICAgaWYgKCRwX3BhdGggIT0gJycpIHsKICAgICAgJHBfZW50cnl
bJ2ZpbGVuYW1lJ10gPSAkcF9wYXRoLiIvIi4kcF9lbnRyeVsnZmlsZW5hbWUnXTsKICAgIH0KCiAgICAvLy
AtLS0tLSBDaGVjayBhIGJhc2VfZGlyX3Jlc3RyaWN0aW9uCiAgICBpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ
0xaSVBfT1BUX0VYVFJBQ1RfRElSX1JFU1RSSUNUSU9OXSkpIHsKICAgICAgJHZfaW5jbHVzaW9uCiAgICAg
ID0gUGNsWmlwVXRpbFBhdGhJbmNsdXNpb24oJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0VYVFJBQ1RfRElSX1J
FU1RSSUNUSU9OXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcF9lbnRyeVsnZmlsZW5hbW
UnXSk7CiAgICAgIGlmICgkdl9pbmNsdXNpb24gPT0gMCkgewoKICAgICAgICBQY2xaaXA6OnByaXZFcnJvc
kxvZyhQQ0xaSVBfRVJSX0RJUkVDVE9SWV9SRVNUUklDVElPTiwKCQkJICAgICAgICAgICAgICAgICAgICAg
IkZpbGVuYW1lICciLiRwX2VudHJ5WydmaWxlbmFtZSddLiInIGlzICIKCQkJCQkJCQkgLiJvdXRzaWRlIFB
DTFpJUF9PUFRfRVhUUkFDVF9ESVJfUkVTVFJJQ1RJT04iKTsKCiAgICAgICAgcmV0dXJuIFBjbFppcDo6ZX
Jyb3JDb2RlKCk7CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBMb29rIGZvciBwcmUtZXh0cmFjdCBjY
WxsYmFjawogICAgaWYgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX0NCX1BSRV9FWFRSQUNUXSkpIHsKCiAg
ICAgIC8vIC0tLS0tIEdlbmVyYXRlIGEgbG9jYWwgaW5mb3JtYXRpb24KICAgICAgJHZfbG9jYWxfaGVhZGV
yID0gYXJyYXkoKTsKICAgICAgJHRoaXMtPnByaXZDb252ZXJ0SGVhZGVyMkZpbGVJbmZvKCRwX2VudHJ5LC
Akdl9sb2NhbF9oZWFkZXIpOwoKICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgY2FsbGJhY2sKICAgICAgLy8gS
GVyZSBJIGRvIG5vdCB1c2UgY2FsbF91c2VyX2Z1bmMoKSBiZWNhdXNlIEkgbmVlZCB0byBzZW5kIGEgcmVm
ZXJlbmNlIHRvIHRoZQogICAgICAvLyBoZWFkZXIuCiAgICAgICR2X3Jlc3VsdCA9ICRwX29wdGlvbnNbUEN
MWklQX0NCX1BSRV9FWFRSQUNUXShQQ0xaSVBfQ0JfUFJFX0VYVFJBQ1QsICR2X2xvY2FsX2hlYWRlcik7Ci
AgICAgIGlmICgkdl9yZXN1bHQgPT0gMCkgewogICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzd
GF0dXMKICAgICAgICAkcF9lbnRyeVsnc3RhdHVzJ10gPSAic2tpcHBlZCI7CiAgICAgICAgJHZfcmVzdWx0
ID0gMTsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgYWJvcnQgcmVzdWx0CiAgICAgIGlmICg
kdl9yZXN1bHQgPT0gMikgewogICAgICAgIC8vIC0tLS0tIFRoaXMgc3RhdHVzIGlzIGludGVybmFsIGFuZC
B3aWxsIGJlIGNoYW5nZWQgaW4gJ3NraXBwZWQnCiAgICAgICAgJHBfZW50cnlbJ3N0YXR1cyddID0gImFib
3J0ZWQiOwogICAgICAJJHZfcmVzdWx0ID0gUENMWklQX0VSUl9VU0VSX0FCT1JURUQ7CiAgICAgIH0KCiAg
ICAgIC8vIC0tLS0tIFVwZGF0ZSB0aGUgaW5mb3JtYXRpb25zCiAgICAgIC8vIE9ubHkgc29tZSBmaWVsZHM
gY2FuIGJlIG1vZGlmaWVkCiAgICAgICRwX2VudHJ5WydmaWxlbmFtZSddID0gJHZfbG9jYWxfaGVhZGVyWy
dmaWxlbmFtZSddOwogICAgfQoKCiAgICAvLyAtLS0tLSBMb29rIGlmIGV4dHJhY3Rpb24gc2hvdWxkIGJlI
GRvbmUKICAgIGlmICgkcF9lbnRyeVsnc3RhdHVzJ10gPT0gJ29rJykgewoKICAgIC8vIC0tLS0tIExvb2sg
Zm9yIHNwZWNpZmljIGFjdGlvbnMgd2hpbGUgdGhlIGZpbGUgZXhpc3QKICAgIGlmIChmaWxlX2V4aXN0cyg
kcF9lbnRyeVsnZmlsZW5hbWUnXSkpCiAgICB7CgogICAgICAvLyAtLS0tLSBMb29rIGlmIGZpbGUgaXMgYS
BkaXJlY3RvcnkKICAgICAgaWYgKGlzX2RpcigkcF9lbnRyeVsnZmlsZW5hbWUnXSkpCiAgICAgIHsKCiAgI
CAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0YXR1cwogICAgICAgICRwX2VudHJ5WydzdGF0dXMn
XSA9ICJhbHJlYWR5X2FfZGlyZWN0b3J5IjsKCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgUENMWklQX09
QVF9TVE9QX09OX0VSUk9SCiAgICAgICAgLy8gRm9yIGhpc3RvcmljYWwgcmVhc29uIGZpcnN0IFBjbFppcC
BpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdG9wCiAgICAgICAgLy8gd2hlbiB0aGlzIGtpbmQgb2YgZXJyb
3Igb2NjdXJzLgogICAgICAgIGlmICggICAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1NUT1BfT05f
RVJST1JdKSkKCQkgICAgJiYgKCRwX29wdGlvbnNbUENMWklQX09QVF9TVE9QX09OX0VSUk9SXT09PXRydWU
pKSB7CgogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0FMUkVBRFlfQV9ESV
JFQ1RPUlksCgkJCSAgICAgICAgICAgICAgICAgICAgICJGaWxlbmFtZSAnIi4kcF9lbnRyeVsnZmlsZW5hb
WUnXS4iJyBpcyAiCgkJCQkJCQkJIC4iYWxyZWFkeSB1c2VkIGJ5IGFuIGV4aXN0aW5nIGRpcmVjdG9yeSIp
OwoKICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CgkJICAgIH0KICAgICAgfQogICA
gICAvLyAtLS0tLSBMb29rIGlmIGZpbGUgaXMgd3JpdGUgcHJvdGVjdGVkCiAgICAgIGVsc2UgaWYgKCFpc1
93cml0ZWFibGUoJHBfZW50cnlbJ2ZpbGVuYW1lJ10pKQogICAgICB7CgogICAgICAgIC8vIC0tLS0tIENoY
W5nZSB0aGUgZmlsZSBzdGF0dXMKICAgICAgICAkcF9lbnRyeVsnc3RhdHVzJ10gPSAid3JpdGVfcHJvdGVj
dGVkIjsKCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgUENMWklQX09QVF9TVE9QX09OX0VSUk9SCiAgICA
gICAgLy8gRm9yIGhpc3RvcmljYWwgcmVhc29uIGZpcnN0IFBjbFppcCBpbXBsZW1lbnRhdGlvbiBkb2VzIG
5vdCBzdG9wCiAgICAgICAgLy8gd2hlbiB0aGlzIGtpbmQgb2YgZXJyb3Igb2NjdXJzLgogICAgICAgIGlmI
CggICAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1NUT1BfT05fRVJST1JdKSkKCQkgICAgJiYgKCRw
X29wdGlvbnNbUENMWklQX09QVF9TVE9QX09OX0VSUk9SXT09PXRydWUpKSB7CgogICAgICAgICAgICBQY2x
aaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX1dSSVRFX09QRU5fRkFJTCwKCQkJICAgICAgICAgICAgIC
AgICAgICAgIkZpbGVuYW1lICciLiRwX2VudHJ5WydmaWxlbmFtZSddLiInIGV4aXN0cyAiCgkJCQkJCQkJI
C4iYW5kIGlzIHdyaXRlIHByb3RlY3RlZCIpOwoKICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JD
b2RlKCk7CgkJICAgIH0KICAgICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgZXh0cmFjdGVkIGZ
pbGUgaXMgb2xkZXIKICAgICAgZWxzZSBpZiAoZmlsZW10aW1lKCRwX2VudHJ5WydmaWxlbmFtZSddKSA+IC
RwX2VudHJ5WydtdGltZSddKQogICAgICB7CiAgICAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0Y
XR1cwogICAgICAgIGlmICggICAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFUExBQ0VfTkVXRVJd
KSkKCQkgICAgJiYgKCRwX29wdGlvbnNbUENMWklQX09QVF9SRVBMQUNFX05FV0VSXT09PXRydWUpKSB7Cgk
gIAkgIH0KCQkgICAgZWxzZSB7CiAgICAgICAgIC
AgICRwX2VudHJ5WydzdGF0dXMnXSA9ICJuZXdlcl9leGlzdCI7CgogICAgICAgICAgICAvLyAtLS0tLSBMb
29rIGZvciBQQ0xaSVBfT1BUX1NUT1BfT05fRVJST1IKICAgICAgICAgICAgLy8gRm9yIGhpc3RvcmljYWwg
cmVhc29uIGZpcnN0IFBjbFppcCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdG9wCiAgICAgICAgICAgIC8
vIHdoZW4gdGhpcyBraW5kIG9mIGVycm9yIG9jY3Vycy4KICAgICAgICAgICAgaWYgKCAgIChpc3NldCgkcF
9vcHRpb25zW1BDTFpJUF9PUFRfU1RPUF9PTl9FUlJPUl0pKQoJCSAgICAgICAgJiYgKCRwX29wdGlvbnNbU
ENMWklQX09QVF9TVE9QX09OX0VSUk9SXT09PXRydWUpKSB7CgogICAgICAgICAgICAgICAgUGNsWmlwOjpw
cml2RXJyb3JMb2coUENMWklQX0VSUl9XUklURV9PUEVOX0ZBSUwsCgkJCSAgICAgICAgICAgICAiTmV3ZXI
gdmVyc2lvbiBvZiAnIi4kcF9lbnRyeVsnZmlsZW5hbWUnXS4iJyBleGlzdHMgIgoJCQkJCSAgICAuImFuZC
BvcHRpb24gUENMWklQX09QVF9SRVBMQUNFX05FV0VSIGlzIG5vdCBzZWxlY3RlZCIpOwoKICAgICAgICAgI
CAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwoJCSAgICAgIH0KCQkgICAgfQogICAgICB9CiAg
ICAgIGVsc2UgewogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gQ2hlY2sgdGhlIGRpcmVjdG9yeSBhdmF
pbGFiaWxpdHkgYW5kIGNyZWF0ZSBpdCBpZiBuZWNlc3NhcnkKICAgIGVsc2UgewogICAgICBpZiAoKCgkcF
9lbnRyeVsnZXh0ZXJuYWwnXSYweDAwMDAwMDEwKT09MHgwMDAwMDAxMCkgfHwgKHN1YnN0cigkcF9lbnRye
VsnZmlsZW5hbWUnXSwgLTEpID09ICcvJykpCiAgICAgICAgJHZfZGlyX3RvX2NoZWNrID0gJHBfZW50cnlb
J2ZpbGVuYW1lJ107CiAgICAgIGVsc2UgaWYgKCFzdHJzdHIoJHBfZW50cnlbJ2ZpbGVuYW1lJ10sICIvIik
pCiAgICAgICAgJHZfZGlyX3RvX2NoZWNrID0gIiI7CiAgICAgIGVsc2UKICAgICAgICAkdl9kaXJfdG9fY2
hlY2sgPSBkaXJuYW1lKCRwX2VudHJ5WydmaWxlbmFtZSddKTsKCiAgICAgICAgaWYgKCgkdl9yZXN1bHQgP
SAkdGhpcy0+cHJpdkRpckNoZWNrKCR2X2Rpcl90b19jaGVjaywgKCgkcF9lbnRyeVsnZXh0ZXJuYWwnXSYw
eDAwMDAwMDEwKT09MHgwMDAwMDAxMCkpKSAhPSAxKSB7CgogICAgICAgICAgLy8gLS0tLS0gQ2hhbmdlIHR
oZSBmaWxlIHN0YXR1cwogICAgICAgICAgJHBfZW50cnlbJ3N0YXR1cyddID0gInBhdGhfY3JlYXRpb25fZm
FpbCI7CgogICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAvL3JldHVybiAkdl9yZXN1bHQ7C
iAgICAgICAgICAkdl9yZXN1bHQgPSAxOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0t
IExvb2sgaWYgZXh0cmFjdGlvbiBzaG91bGQgYmUgZG9uZQogICAgaWYgKCRwX2VudHJ5WydzdGF0dXMnXSA
9PSAnb2snKSB7CgogICAgICAvLyAtLS0tLSBEbyB0aGUgZXh0cmFjdGlvbiAoaWYgbm90IGEgZm9sZGVyKQ
ogICAgICBpZiAoISgoJHBfZW50cnlbJ2V4dGVybmFsJ10mMHgwMDAwMDAxMCk9PTB4MDAwMDAwMTApKQogI
CAgICB7CiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3Igbm90IGNvbXByZXNzZWQgZmlsZQogICAgICAgIGlm
ICgkcF9lbnRyeVsnY29tcHJlc3Npb24nXSA9PSAwKSB7CgogICAgCQkgIC8vIC0tLS0tIE9wZW5pbmcgZGV
zdGluYXRpb24gZmlsZQogICAgICAgICAgaWYgKCgkdl9kZXN0X2ZpbGUgPSBAZm9wZW4oJHBfZW50cnlbJ2
ZpbGVuYW1lJ10sICd3YicpKSA9PSAwKQogICAgICAgICAgewoKICAgICAgICAgICAgLy8gLS0tLS0gQ2hhb
mdlIHRoZSBmaWxlIHN0YXR1cwogICAgICAgICAgICAkcF9lbnRyeVsnc3RhdHVzJ10gPSAid3JpdGVfZXJy
b3IiOwoKICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ
7CiAgICAgICAgICB9CgoKICAgICAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZpbGUgYnkgUENMWklQX1JFQU
RfQkxPQ0tfU0laRSBvY3RldHMgYmxvY2tzCiAgICAgICAgICAkdl9zaXplID0gJHBfZW50cnlbJ2NvbXByZ
XNzZWRfc2l6ZSddOwogICAgICAgICAgd2hpbGUgKCR2X3NpemUgIT0gMCkKICAgICAgICAgIHsKICAgICAg
ICAgICAgJHZfcmVhZF9zaXplID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFID8gJHZfc2l
6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICAgICAgICAkdl9idWZmZXIgPSBAZnJlYWQoJH
RoaXMtPnppcF9mZCwgJHZfcmVhZF9zaXplKTsKICAgICAgICAgICAgLyogVHJ5IHRvIHNwZWVkIHVwIHRoZ
SBjb2RlCiAgICAgICAgICAgICR2X2JpbmFyeV9kYXRhID0gcGFjaygnYScuJHZfcmVhZF9zaXplLCAkdl9i
dWZmZXIpOwogICAgICAgICAgICBAZndyaXRlKCR2X2Rlc3RfZmlsZSwgJHZfYmluYXJ5X2RhdGEsICR2X3J
lYWRfc2l6ZSk7CiAgICAgICAgICAgICovCiAgICAgICAgICAgIEBmd3JpdGUoJHZfZGVzdF9maWxlLCAkdl
9idWZmZXIsICR2X3JlYWRfc2l6ZSk7CiAgICAgICAgICAgICR2X3NpemUgLT0gJHZfcmVhZF9zaXplOwogI
CAgICAgICAgfQoKICAgICAgICAgIC8vIC0tLS0tIENsb3NpbmcgdGhlIGRlc3RpbmF0aW9uIGZpbGUKICAg
ICAgICAgIGZjbG9zZSgkdl9kZXN0X2ZpbGUpOwoKICAgICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZml
sZSBtdGltZQogICAgICAgICAgdG91Y2goJHBfZW50cnlbJ2ZpbGVuYW1lJ10sICRwX2VudHJ5WydtdGltZS
ddKTsKCgogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIC8vIC0tLS0tIFRCQwogICAgICAgI
CAgLy8gTmVlZCB0byBiZSBmaW5pc2hlZAogICAgICAgICAgaWYgKCgkcF9lbnRyeVsnZmxhZyddICYgMSkg
PT0gMSkgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX1VOU1VQUE9SVEV
EX0VOQ1JZUFRJT04sICdGaWxlIFwnJy4kcF9lbnRyeVsnZmlsZW5hbWUnXS4nXCcgaXMgZW5jcnlwdGVkLi
BFbmNyeXB0ZWQgZmlsZXMgYXJlIG5vdCBzdXBwb3J0ZWQuJyk7CiAgICAgICAgICAgIHJldHVybiBQY2xaa
XA6OmVycm9yQ29kZSgpOwogICAgICAgICAgfQoKCiAgICAgICAgICAvLyAtLS0tLSBMb29rIGZvciB1c2lu
ZyB0ZW1wb3JhcnkgZmlsZSB0byB1bnppcAogICAgICAgICAgaWYgKCAoIWlzc2V0KCRwX29wdGlvbnNbUEN
MWklQX09QVF9URU1QX0ZJTEVfT0ZGXSkpCiAgICAgICAgICAgICAgJiYgKGlzc2V0KCRwX29wdGlvbnNbUE
NMWklQX09QVF9URU1QX0ZJTEVfT05dKQogICAgICAgICAgICAgICAgICB8fCAoaXNzZXQoJHBfb3B0aW9uc
1tQQ0xaSVBfT1BUX1RFTVBfRklMRV9USFJFU0hPTERdKQogICAgICAgICAgICAgICAgICAgICAgJiYgKCRw
X29wdGlvbnNbUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEXSA8PSAkcF9lbnRyeVsnc2l6ZSddKSk
gKSApIHsKICAgICAgICAgICAgJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZFeHRyYWN0RmlsZVVzaW5nVGVtcE
ZpbGUoJHBfZW50cnksICRwX29wdGlvbnMpOwogICAgICAgICAgICBpZiAoJHZfcmVzdWx0IDwgUENMWklQX
0VSUl9OT19FUlJPUikgewogICAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgICAgIH0K
ICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBleHRyYWN0IGluIG1lbW9yeQogICA
gICAgICAgZWxzZSB7CgoKICAgICAgICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgY29tcHJlc3NlZCBmaWxlIG
luIGEgYnVmZmVyIChvbmUgc2hvdCkKICAgICAgICAgICAgJHZfYnVmZmVyID0gQGZyZWFkKCR0aGlzLT56a
XBfZmQsICRwX2VudHJ5Wydjb21wcmVzc2VkX3NpemUnXSk7CgogICAgICAgICAgICAvLyAtLS0tLSBEZWNv
bXByZXNzIHRoZSBmaWxlCiAgICAgICAgICAgICR2X2ZpbGVfY29udGVudCA9IEBnemluZmxhdGUoJHZfYnV
mZmVyKTsKICAgICAgICAgICAgdW5zZXQoJHZfYnVmZmVyKTsKICAgICAgICAgICAgaWYgKCR2X2ZpbGVfY2
9udGVudCA9PT0gRkFMU0UpIHsKCiAgICAgICAgICAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0Y
XR1cwogICAgICAgICAgICAgIC8vIFRCQwogICAgICAgICAgICAgICRwX2VudHJ5WydzdGF0dXMnXSA9ICJl
cnJvciI7CgogICAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgICAgIH0KCiAgICAgICA
gICAgIC8vIC0tLS0tIE9wZW5pbmcgZGVzdGluYXRpb24gZmlsZQogICAgICAgICAgICBpZiAoKCR2X2Rlc3
RfZmlsZSA9IEBmb3BlbigkcF9lbnRyeVsnZmlsZW5hbWUnXSwgJ3diJykpID09IDApIHsKCiAgICAgICAgI
CAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0YXR1cwogICAgICAgICAgICAgICRwX2VudHJ5Wydz
dGF0dXMnXSA9ICJ3cml0ZV9lcnJvciI7CgogICAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICA
gICAgICAgIH0KCiAgICAgICAgICAgIC8vIC0tLS0tIFdyaXRlIHRoZSB1bmNvbXByZXNzZWQgZGF0YQogIC
AgICAgICAgICBAZndyaXRlKCR2X2Rlc3RfZmlsZSwgJHZfZmlsZV9jb250ZW50LCAkcF9lbnRyeVsnc2l6Z
SddKTsKICAgICAgICAgICAgdW5zZXQoJHZfZmlsZV9jb250ZW50KTsKCiAgICAgICAgICAgIC8vIC0tLS0t
IENsb3NpbmcgdGhlIGRlc3RpbmF0aW9uIGZpbGUKICAgICAgICAgICAgQGZjbG9zZSgkdl9kZXN0X2ZpbGU
pOwoKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgbXRpbWUKICAgIC
AgICAgIEB0b3VjaCgkcF9lbnRyeVsnZmlsZW5hbWUnXSwgJHBfZW50cnlbJ210aW1lJ10pOwogICAgICAgI
H0KCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgY2htb2Qgb3B0aW9uCiAgICAgICAgaWYgKGlzc2V0KCRw
X29wdGlvbnNbUENMWklQX09QVF9TRVRfQ0hNT0RdKSkgewoKICAgICAgICAgIC8vIC0tLS0tIENoYW5nZSB
0aGUgbW9kZSBvZiB0aGUgZmlsZQogICAgICAgICAgQGNobW9kKCRwX2VudHJ5WydmaWxlbmFtZSddLCAkcF
9vcHRpb25zW1BDTFpJUF9PUFRfU0VUX0NITU9EXSk7CiAgICAgICAgfQoKICAgICAgfQogICAgfQoKICAJL
y8gLS0tLS0gQ2hhbmdlIGFib3J0IHN0YXR1cwogIAlpZiAoJHBfZW50cnlbJ3N0YXR1cyddID09ICJhYm9y
dGVkIikgewogICAgICAgICRwX2VudHJ5WydzdGF0dXMnXSA9ICJza2lwcGVkIjsKICAJfQoKICAgIC8vIC0
tLS0tIExvb2sgZm9yIHBvc3QtZXh0cmFjdCBjYWxsYmFjawogICAgZWxzZWlmIChpc3NldCgkcF9vcHRpb2
5zW1BDTFpJUF9DQl9QT1NUX0VYVFJBQ1RdKSkgewoKICAgICAgLy8gLS0tLS0gR2VuZXJhdGUgYSBsb2Nhb
CBpbmZvcm1hdGlvbgogICAgICAkdl9sb2NhbF9oZWFkZXIgPSBhcnJheSgpOwogICAgICAkdGhpcy0+cHJp
dkNvbnZlcnRIZWFkZXIyRmlsZUluZm8oJHBfZW50cnksICR2X2xvY2FsX2hlYWRlcik7CgogICAgICAvLyA
tLS0tLSBDYWxsIHRoZSBjYWxsYmFjawogICAgICAvLyBIZXJlIEkgZG8gbm90IHVzZSBjYWxsX3VzZXJfZn
VuYygpIGJlY2F1c2UgSSBuZWVkIHRvIHNlbmQgYSByZWZlcmVuY2UgdG8gdGhlCiAgICAgIC8vIGhlYWRlc
i4KICAgICAgJHZfcmVzdWx0ID0gJHBfb3B0aW9uc1tQQ0xaSVBfQ0JfUE9TVF9FWFRSQUNUXShQQ0xaSVBf
Q0JfUE9TVF9FWFRSQUNULCAkdl9sb2NhbF9oZWFkZXIpOwoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgYWJ
vcnQgcmVzdWx0CiAgICAgIGlmICgkdl9yZXN1bHQgPT0gMikgewogICAgICAJJHZfcmVzdWx0ID0gUENMWk
lQX0VSUl9VU0VSX0FCT1JURUQ7CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJld
HVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2RXh0cmFjdEZpbGVVc2luZ1RlbXBGaWxlKCkKICAvLyBEZXNjc
mlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2RXh0cmFjdEZpbGVVc2luZ1RlbXBGaWxlKCYkcF9lbnRyeSwgJi
RwX29wdGlvbnMpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gQ3JlYXRlcyBhIHRlbXBvc
mFyeSBmaWxlCiAgICAkdl9nemlwX3RlbXBfbmFtZSA9IFBDTFpJUF9URU1QT1JBUllfRElSLnVuaXFpZCgn
cGNsemlwLScpLicuZ3onOwogICAgaWYgKCgkdl9kZXN0X2ZpbGUgPSBAZm9wZW4oJHZfZ3ppcF90ZW1wX25
hbWUsICJ3YiIpKSA9PSAwKSB7CiAgICAgIGZjbG9zZSgkdl9maWxlKTsKICAgICAgUGNsWmlwOjpwcml2RX
Jyb3JMb2coUENMWklQX0VSUl9XUklURV9PUEVOX0ZBSUwsICdVbmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgZ
mlsZSBcJycuJHZfZ3ppcF90ZW1wX25hbWUuJ1wnIGluIGJpbmFyeSB3cml0ZSBtb2RlJyk7CiAgICAgIHJl
dHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgfQoKCiAgICAvLyAtLS0tLSBXcml0ZSBneiBmaWxlIGZ
vcm1hdCBoZWFkZXIKICAgICR2X2JpbmFyeV9kYXRhID0gcGFjaygndmExYTFWYTFhMScsIDB4OGIxZiwgQ2
hyKCRwX2VudHJ5Wydjb21wcmVzc2lvbiddKSwgQ2hyKDB4MDApLCB0aW1lKCksIENocigweDAwKSwgQ2hyK
DMpKTsKICAgIEBmd3JpdGUoJHZfZGVzdF9maWxlLCAkdl9iaW5hcnlfZGF0YSwgMTApOwoKICAgIC8vIC0t
LS0tIFJlYWQgdGhlIGZpbGUgYnkgUENMWklQX1JFQURfQkxPQ0tfU0laRSBvY3RldHMgYmxvY2tzCiAgICA
kdl9zaXplID0gJHBfZW50cnlbJ2NvbXByZXNzZWRfc2l6ZSddOwogICAgd2hpbGUgKCR2X3NpemUgIT0gMC
kKICAgIHsKICAgICAgJHZfcmVhZF9zaXplID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFI
D8gJHZfc2l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICAkdl9idWZmZXIgPSBAZnJlYWQo
JHRoaXMtPnppcF9mZCwgJHZfcmVhZF9zaXplKTsKICAgICAgLy8kdl9iaW5hcnlfZGF0YSA9IHBhY2soJ2E
nLiR2X3JlYWRfc2l6ZSwgJHZfYnVmZmVyKTsKICAgICAgQGZ3cml0ZSgkdl9kZXN0X2ZpbGUsICR2X2J1Zm
ZlciwgJHZfcmVhZF9zaXplKTsKICAgICAgJHZfc2l6ZSAtPSAkdl9yZWFkX3NpemU7CiAgICB9CgogICAgL
y8gLS0tLS0gV3JpdGUgZ3ogZmlsZSBmb3JtYXQgZm9vdGVyCiAgICAkdl9iaW5hcnlfZGF0YSA9IHBhY2so
J1ZWJywgJHBfZW50cnlbJ2NyYyddLCAkcF9lbnRyeVsnc2l6ZSddKTsKICAgIEBmd3JpdGUoJHZfZGVzdF9
maWxlLCAkdl9iaW5hcnlfZGF0YSwgOCk7CgogICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHRlbXBvcmFyeSBmaW
xlCiAgICBAZmNsb3NlKCR2X2Rlc3RfZmlsZSk7C
gogICAgLy8gLS0tLS0gT3BlbmluZyBkZXN0aW5hdGlvbiBmaWxlCiAgICBpZiAoKCR2X2Rlc3RfZmlsZSA9
IEBmb3BlbigkcF9lbnRyeVsnZmlsZW5hbWUnXSwgJ3diJykpID09IDApIHsKICAgICAgJHBfZW50cnlbJ3N
0YXR1cyddID0gIndyaXRlX2Vycm9yIjsKICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLy
AtLS0tLSBPcGVuIHRoZSB0ZW1wb3JhcnkgZ3ogZmlsZQogICAgaWYgKCgkdl9zcmNfZmlsZSA9IEBnem9wZ
W4oJHZfZ3ppcF90ZW1wX25hbWUsICdyYicpKSA9PSAwKSB7CiAgICAgIEBmY2xvc2UoJHZfZGVzdF9maWxl
KTsKICAgICAgJHBfZW50cnlbJ3N0YXR1cyddID0gInJlYWRfZXJyb3IiOwogICAgICBQY2xaaXA6OnByaXZ
FcnJvckxvZyhQQ0xaSVBfRVJSX1JFQURfT1BFTl9GQUlMLCAnVW5hYmxlIHRvIG9wZW4gdGVtcG9yYXJ5IG
ZpbGUgXCcnLiR2X2d6aXBfdGVtcF9uYW1lLidcJyBpbiBiaW5hcnkgcmVhZCBtb2RlJyk7CiAgICAgIHJld
HVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgfQoKCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaWxlIGJ5
IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUgb2N0ZXRzIGJsb2NrcwogICAgJHZfc2l6ZSA9ICRwX2VudHJ5Wyd
zaXplJ107CiAgICB3aGlsZSAoJHZfc2l6ZSAhPSAwKSB7CiAgICAgICR2X3JlYWRfc2l6ZSA9ICgkdl9zaX
plIDwgUENMWklQX1JFQURfQkxPQ0tfU0laRSA/ICR2X3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFK
TsKICAgICAgJHZfYnVmZmVyID0gQGd6cmVhZCgkdl9zcmNfZmlsZSwgJHZfcmVhZF9zaXplKTsKICAgICAg
Ly8kdl9iaW5hcnlfZGF0YSA9IHBhY2soJ2EnLiR2X3JlYWRfc2l6ZSwgJHZfYnVmZmVyKTsKICAgICAgQGZ
3cml0ZSgkdl9kZXN0X2ZpbGUsICR2X2J1ZmZlciwgJHZfcmVhZF9zaXplKTsKICAgICAgJHZfc2l6ZSAtPS
Akdl9yZWFkX3NpemU7CiAgICB9CiAgICBAZmNsb3NlKCR2X2Rlc3RfZmlsZSk7CiAgICBAZ3pjbG9zZSgkd
l9zcmNfZmlsZSk7CgogICAgLy8gLS0tLS0gRGVsZXRlIHRoZSB0ZW1wb3JhcnkgZmlsZQogICAgQHVubGlu
aygkdl9nemlwX3RlbXBfbmFtZSk7CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx
0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1
bmN0aW9uIDogcHJpdkV4dHJhY3RGaWxlSW5PdXRwdXQoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJ
hbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0a
W9uIHByaXZFeHRyYWN0RmlsZUluT3V0cHV0KCYkcF9lbnRyeSwgJiRwX29wdGlvbnMpCiAgewogICAgJHZf
cmVzdWx0PTE7CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlsZSBoZWFkZXIKICAgIGlmICgoJHZfcmVzdWx
0ID0gJHRoaXMtPnByaXZSZWFkRmlsZUhlYWRlcigkdl9oZWFkZXIpKSAhPSAxKSB7CiAgICAgIHJldHVybi
Akdl9yZXN1bHQ7CiAgICB9CgoKICAgIC8vIC0tLS0tIENoZWNrIHRoYXQgdGhlIGZpbGUgaGVhZGVyIGlzI
GNvaGVyZW50IHdpdGggJHBfZW50cnkgaW5mbwogICAgaWYgKCR0aGlzLT5wcml2Q2hlY2tGaWxlSGVhZGVy
cygkdl9oZWFkZXIsICRwX2VudHJ5KSAhPSAxKSB7CiAgICAgICAgLy8gVEJDCiAgICB9CgogICAgLy8gLS0
tLS0gTG9vayBmb3IgcHJlLWV4dHJhY3QgY2FsbGJhY2sKICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTF
pJUF9DQl9QUkVfRVhUUkFDVF0pKSB7CgogICAgICAvLyAtLS0tLSBHZW5lcmF0ZSBhIGxvY2FsIGluZm9yb
WF0aW9uCiAgICAgICR2X2xvY2FsX2hlYWRlciA9IGFycmF5KCk7CiAgICAgICR0aGlzLT5wcml2Q29udmVy
dEhlYWRlcjJGaWxlSW5mbygkcF9lbnRyeSwgJHZfbG9jYWxfaGVhZGVyKTsKCiAgICAgIC8vIC0tLS0tIEN
hbGwgdGhlIGNhbGxiYWNrCiAgICAgIC8vIEhlcmUgSSBkbyBub3QgdXNlIGNhbGxfdXNlcl9mdW5jKCkgYm
VjYXVzZSBJIG5lZWQgdG8gc2VuZCBhIHJlZmVyZW5jZSB0byB0aGUKICAgICAgLy8gaGVhZGVyLgogICAgI
CAkdl9yZXN1bHQgPSAkcF9vcHRpb25zW1BDTFpJUF9DQl9QUkVfRVhUUkFDVF0oUENMWklQX0NCX1BSRV9F
WFRSQUNULCAkdl9sb2NhbF9oZWFkZXIpOwogICAgICBpZiAoJHZfcmVzdWx0ID09IDApIHsKICAgICAgICA
vLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgc3RhdHVzCiAgICAgICAgJHBfZW50cnlbJ3N0YXR1cyddID0gIn
NraXBwZWQiOwogICAgICAgICR2X3Jlc3VsdCA9IDE7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgZ
m9yIGFib3J0IHJlc3VsdAogICAgICBpZiAoJHZfcmVzdWx0ID09IDIpIHsKICAgICAgICAvLyAtLS0tLSBU
aGlzIHN0YXR1cyBpcyBpbnRlcm5hbCBhbmQgd2lsbCBiZSBjaGFuZ2VkIGluICdza2lwcGVkJwogICAgICA
gICRwX2VudHJ5WydzdGF0dXMnXSA9ICJhYm9ydGVkIjsKICAgICAgCSR2X3Jlc3VsdCA9IFBDTFpJUF9FUl
JfVVNFUl9BQk9SVEVEOwogICAgICB9CgogICAgICAvLyAtLS0tLSBVcGRhdGUgdGhlIGluZm9ybWF0aW9uc
wogICAgICAvLyBPbmx5IHNvbWUgZmllbGRzIGNhbiBiZSBtb2RpZmllZAogICAgICAkcF9lbnRyeVsnZmls
ZW5hbWUnXSA9ICR2X2xvY2FsX2hlYWRlclsnZmlsZW5hbWUnXTsKICAgIH0KCiAgICAvLyAtLS0tLSBUcmF
jZQoKICAgIC8vIC0tLS0tIExvb2sgaWYgZXh0cmFjdGlvbiBzaG91bGQgYmUgZG9uZQogICAgaWYgKCRwX2
VudHJ5WydzdGF0dXMnXSA9PSAnb2snKSB7CgogICAgICAvLyAtLS0tLSBEbyB0aGUgZXh0cmFjdGlvbiAoa
WYgbm90IGEgZm9sZGVyKQogICAgICBpZiAoISgoJHBfZW50cnlbJ2V4dGVybmFsJ10mMHgwMDAwMDAxMCk9
PTB4MDAwMDAwMTApKSB7CiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3Igbm90IGNvbXByZXNzZWQgZmlsZQo
gICAgICAgIGlmICgkcF9lbnRyeVsnY29tcHJlc3NlZF9zaXplJ10gPT0gJHBfZW50cnlbJ3NpemUnXSkgew
oKICAgICAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZpbGUgaW4gYSBidWZmZXIgKG9uZSBzaG90KQogICAgI
CAgICAgJHZfYnVmZmVyID0gQGZyZWFkKCR0aGlzLT56aXBfZmQsICRwX2VudHJ5Wydjb21wcmVzc2VkX3Np
emUnXSk7CgogICAgICAgICAgLy8gLS0tLS0gU2VuZCB0aGUgZmlsZSB0byB0aGUgb3V0cHV0CiAgICAgICA
gICBlY2hvICR2X2J1ZmZlcjsKICAgICAgICAgIHVuc2V0KCR2X2J1ZmZlcik7CiAgICAgICAgfQogICAgIC
AgIGVsc2UgewoKICAgICAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGNvbXByZXNzZWQgZmlsZSBpbiBhIGJ1Z
mZlciAob25lIHNob3QpCiAgICAgICAgICAkdl9idWZmZXIgPSBAZnJlYWQoJHRoaXMtPnppcF9mZCwgJHBf
ZW50cnlbJ2NvbXByZXNzZWRfc2l6ZSddKTsKCiAgICAgICAgICAvLyAtLS0tLSBEZWNvbXByZXNzIHRoZSB
maWxlCiAgICAgICAgICAkdl9maWxlX2NvbnRlbnQgPSBnemluZmxhdGUoJHZfYnVmZmVyKTsKICAgICAgIC
AgIHVuc2V0KCR2X2J1ZmZlcik7CgogICAgICAgICAgLy8gLS0tLS0gU2VuZCB0aGUgZmlsZSB0byB0aGUgb
3V0cHV0CiAgICAgICAgICBlY2hvICR2X2ZpbGVfY29udGVudDsKICAgICAgICAgIHVuc2V0KCR2X2ZpbGVf
Y29udGVudCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CgoJLy8gLS0tLS0gQ2hhbmdlIGFib3J0IHN0YXR
1cwoJaWYgKCRwX2VudHJ5WydzdGF0dXMnXSA9PSAiYWJvcnRlZCIpIHsKICAgICAgJHBfZW50cnlbJ3N0YX
R1cyddID0gInNraXBwZWQiOwoJfQoKICAgIC8vIC0tLS0tIExvb2sgZm9yIHBvc3QtZXh0cmFjdCBjYWxsY
mFjawogICAgZWxzZWlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9DQl9QT1NUX0VYVFJBQ1RdKSkgewoK
ICAgICAgLy8gLS0tLS0gR2VuZXJhdGUgYSBsb2NhbCBpbmZvcm1hdGlvbgogICAgICAkdl9sb2NhbF9oZWF
kZXIgPSBhcnJheSgpOwogICAgICAkdGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIyRmlsZUluZm8oJHBfZW50cn
ksICR2X2xvY2FsX2hlYWRlcik7CgogICAgICAvLyAtLS0tLSBDYWxsIHRoZSBjYWxsYmFjawogICAgICAvL
yBIZXJlIEkgZG8gbm90IHVzZSBjYWxsX3VzZXJfZnVuYygpIGJlY2F1c2UgSSBuZWVkIHRvIHNlbmQgYSBy
ZWZlcmVuY2UgdG8gdGhlCiAgICAgIC8vIGhlYWRlci4KICAgICAgJHZfcmVzdWx0ID0gJHBfb3B0aW9uc1t
QQ0xaSVBfQ0JfUE9TVF9FWFRSQUNUXShQQ0xaSVBfQ0JfUE9TVF9FWFRSQUNULCAkdl9sb2NhbF9oZWFkZX
IpOwoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgYWJvcnQgcmVzdWx0CiAgICAgIGlmICgkdl9yZXN1bHQgP
T0gMikgewogICAgICAJJHZfcmVzdWx0ID0gUENMWklQX0VSUl9VU0VSX0FCT1JURUQ7CiAgICAgIH0KICAg
IH0KCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogcHJpdkV4dHJhY3RGaWxlQXNTdHJpbmcoKQogIC8v
IERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZFeHRyYWN0RmlsZUFzU3RyaW5nKCYkcF9lbnRyeSwgJ
iRwX3N0cmluZywgJiRwX29wdGlvbnMpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gUmVh
ZCB0aGUgZmlsZSBoZWFkZXIKICAgICR2X2hlYWRlciA9IGFycmF5KCk7CiAgICBpZiAoKCR2X3Jlc3VsdCA
9ICR0aGlzLT5wcml2UmVhZEZpbGVIZWFkZXIoJHZfaGVhZGVyKSkgIT0gMSkKICAgIHsKICAgICAgLy8gLS
0tLS0gUmV0dXJuCiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgoKICAgIC8vIC0tLS0tIENoZWNrI
HRoYXQgdGhlIGZpbGUgaGVhZGVyIGlzIGNvaGVyZW50IHdpdGggJHBfZW50cnkgaW5mbwogICAgaWYgKCR0
aGlzLT5wcml2Q2hlY2tGaWxlSGVhZGVycygkdl9oZWFkZXIsICRwX2VudHJ5KSAhPSAxKSB7CiAgICAgICA
gLy8gVEJDCiAgICB9CgogICAgLy8gLS0tLS0gTG9vayBmb3IgcHJlLWV4dHJhY3QgY2FsbGJhY2sKICAgIG
lmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9DQl9QUkVfRVhUUkFDVF0pKSB7CgogICAgICAvLyAtLS0tL
SBHZW5lcmF0ZSBhIGxvY2FsIGluZm9ybWF0aW9uCiAgICAgICR2X2xvY2FsX2hlYWRlciA9IGFycmF5KCk7
CiAgICAgICR0aGlzLT5wcml2Q29udmVydEhlYWRlcjJGaWxlSW5mbygkcF9lbnRyeSwgJHZfbG9jYWxfaGV
hZGVyKTsKCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGNhbGxiYWNrCiAgICAgIC8vIEhlcmUgSSBkbyBub3
QgdXNlIGNhbGxfdXNlcl9mdW5jKCkgYmVjYXVzZSBJIG5lZWQgdG8gc2VuZCBhIHJlZmVyZW5jZSB0byB0a
GUKICAgICAgLy8gaGVhZGVyLgogICAgICAkdl9yZXN1bHQgPSAkcF9vcHRpb25zW1BDTFpJUF9DQl9QUkVf
RVhUUkFDVF0oUENMWklQX0NCX1BSRV9FWFRSQUNULCAkdl9sb2NhbF9oZWFkZXIpOwogICAgICBpZiAoJHZ
fcmVzdWx0ID09IDApIHsKICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgc3RhdHVzCiAgICAgIC
AgJHBfZW50cnlbJ3N0YXR1cyddID0gInNraXBwZWQiOwogICAgICAgICR2X3Jlc3VsdCA9IDE7CiAgICAgI
H0KCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGFib3J0IHJlc3VsdAogICAgICBpZiAoJHZfcmVzdWx0ID09
IDIpIHsKICAgICAgICAvLyAtLS0tLSBUaGlzIHN0YXR1cyBpcyBpbnRlcm5hbCBhbmQgd2lsbCBiZSBjaGF
uZ2VkIGluICdza2lwcGVkJwogICAgICAgICRwX2VudHJ5WydzdGF0dXMnXSA9ICJhYm9ydGVkIjsKICAgIC
AgCSR2X3Jlc3VsdCA9IFBDTFpJUF9FUlJfVVNFUl9BQk9SVEVEOwogICAgICB9CgogICAgICAvLyAtLS0tL
SBVcGRhdGUgdGhlIGluZm9ybWF0aW9ucwogICAgICAvLyBPbmx5IHNvbWUgZmllbGRzIGNhbiBiZSBtb2Rp
ZmllZAogICAgICAkcF9lbnRyeVsnZmlsZW5hbWUnXSA9ICR2X2xvY2FsX2hlYWRlclsnZmlsZW5hbWUnXTs
KICAgIH0KCgogICAgLy8gLS0tLS0gTG9vayBpZiBleHRyYWN0aW9uIHNob3VsZCBiZSBkb25lCiAgICBpZi
AoJHBfZW50cnlbJ3N0YXR1cyddID09ICdvaycpIHsKCiAgICAgIC8vIC0tLS0tIERvIHRoZSBleHRyYWN0a
W9uIChpZiBub3QgYSBmb2xkZXIpCiAgICAgIGlmICghKCgkcF9lbnRyeVsnZXh0ZXJuYWwnXSYweDAwMDAw
MDEwKT09MHgwMDAwMDAxMCkpIHsKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBub3QgY29tcHJlc3NlZCB
maWxlCiAgLy8gICAgICBpZiAoJHBfZW50cnlbJ2NvbXByZXNzZWRfc2l6ZSddID09ICRwX2VudHJ5WydzaX
plJ10pCiAgICAgICAgaWYgKCRwX2VudHJ5Wydjb21wcmVzc2lvbiddID09IDApIHsKCiAgICAgICAgICAvL
yAtLS0tLSBSZWFkaW5nIHRoZSBmaWxlCiAgICAgICAgICAkcF9zdHJpbmcgPSBAZnJlYWQoJHRoaXMtPnpp
cF9mZCwgJHBfZW50cnlbJ2NvbXByZXNzZWRfc2l6ZSddKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7Cgo
gICAgICAgICAgLy8gLS0tLS0gUmVhZGluZyB0aGUgZmlsZQogICAgICAgICAgJHZfZGF0YSA9IEBmcmVhZC
gkdGhpcy0+emlwX2ZkLCAkcF9lbnRyeVsnY29tcHJlc3NlZF9zaXplJ10pOwoKICAgICAgICAgIC8vIC0tL
S0tIERlY29tcHJlc3MgdGhlIGZpbGUKICAgICAgICAgIGlmICgoJHBfc3RyaW5nID0gQGd6aW5mbGF0ZSgk
dl9kYXRhKSkgPT09IEZBTFNFKSB7CiAgICAgICAgICAgICAgLy8gVEJDCiAgICAgICAgICB9CiAgICAgICA
gfQoKICAgICAgICAvLyAtLS0tLSBUcmFjZQogICAgICB9CiAgICAgIGVsc2UgewogICAgICAgICAgLy8gVE
JDIDogZXJyb3IgOiBjYW4gbm90IGV4dHJhY3QgYSBmb2xkZXIgaW4gYSBzdHJpbmcKICAgICAgfQoKICAgI
H0KCiAgCS8vIC0tLS0tIENoYW5nZSBhYm9ydCBzdGF0dXMKICAJaWYgKCRwX2VudHJ5WydzdGF0dXMnXSA9
PSAiYWJvcnRlZCIpIHsKICAgICAgICAkcF9lbnRyeVsnc3RhdHVzJ10gPSAic2tpcHBlZCI7CiAgCX0KCiA
gICAvLyAtLS0tLSBMb29rIGZvciBwb3N0LWV4dHJhY3QgY2FsbGJhY2sKICAgIGVsc2VpZiAoaXNzZXQoJH
Bfb3B0aW9uc1tQQ0xaSVBfQ0JfUE9TVF9FWFRSQUNUXSkpIHsKCiAgICAgIC8vIC0tLS0tIEdlbmVyYXRlI
GEgbG9jYWwgaW5mb3JtYXRpb24KICAgICAgJHZf
bG9jYWxfaGVhZGVyID0gYXJyYXkoKTsKICAgICAgJHRoaXMtPnByaXZDb252ZXJ0SGVhZGVyMkZpbGVJbmZ
vKCRwX2VudHJ5LCAkdl9sb2NhbF9oZWFkZXIpOwoKICAgICAgLy8gLS0tLS0gU3dhcCB0aGUgY29udGVudC
B0byBoZWFkZXIKICAgICAgJHZfbG9jYWxfaGVhZGVyWydjb250ZW50J10gPSAkcF9zdHJpbmc7CiAgICAgI
CRwX3N0cmluZyA9ICcnOwoKICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgY2FsbGJhY2sKICAgICAgLy8gSGVy
ZSBJIGRvIG5vdCB1c2UgY2FsbF91c2VyX2Z1bmMoKSBiZWNhdXNlIEkgbmVlZCB0byBzZW5kIGEgcmVmZXJ
lbmNlIHRvIHRoZQogICAgICAvLyBoZWFkZXIuCiAgICAgICR2X3Jlc3VsdCA9ICRwX29wdGlvbnNbUENMWk
lQX0NCX1BPU1RfRVhUUkFDVF0oUENMWklQX0NCX1BPU1RfRVhUUkFDVCwgJHZfbG9jYWxfaGVhZGVyKTsKC
iAgICAgIC8vIC0tLS0tIFN3YXAgYmFjayB0aGUgY29udGVudCB0byBoZWFkZXIKICAgICAgJHBfc3RyaW5n
ID0gJHZfbG9jYWxfaGVhZGVyWydjb250ZW50J107CiAgICAgIHVuc2V0KCR2X2xvY2FsX2hlYWRlclsnY29
udGVudCddKTsKCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGFib3J0IHJlc3VsdAogICAgICBpZiAoJHZfcm
VzdWx0ID09IDIpIHsKICAgICAgCSR2X3Jlc3VsdCA9IFBDTFpJUF9FUlJfVVNFUl9BQk9SVEVEOwogICAgI
CB9CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogcHJpd
lJlYWRGaWxlSGVhZGVyKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0
dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2UmVhZEZpbGVIZW
FkZXIoJiRwX2hlYWRlcikKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICAvLyAtLS0tLSBSZWFkIHRoZSA0I
GJ5dGVzIHNpZ25hdHVyZQogICAgJHZfYmluYXJ5X2RhdGEgPSBAZnJlYWQoJHRoaXMtPnppcF9mZCwgNCk7
CiAgICAkdl9kYXRhID0gdW5wYWNrKCdWaWQnLCAkdl9iaW5hcnlfZGF0YSk7CgogICAgLy8gLS0tLS0gQ2h
lY2sgc2lnbmF0dXJlCiAgICBpZiAoJHZfZGF0YVsnaWQnXSAhPSAweDA0MDM0YjUwKQogICAgewoKICAgIC
AgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfQkFEX
0ZPUk1BVCwgJ0ludmFsaWQgYXJjaGl2ZSBzdHJ1Y3R1cmUnKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgog
ICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZWFkIHRoZSB
maXJzdCA0MiBieXRlcyBvZiB0aGUgaGVhZGVyCiAgICAkdl9iaW5hcnlfZGF0YSA9IGZyZWFkKCR0aGlzLT
56aXBfZmQsIDI2KTsKCiAgICAvLyAtLS0tLSBMb29rIGZvciBpbnZhbGlkIGJsb2NrIHNpemUKICAgIGlmI
ChzdHJsZW4oJHZfYmluYXJ5X2RhdGEpICE9IDI2KQogICAgewogICAgICAkcF9oZWFkZXJbJ2ZpbGVuYW1l
J10gPSAiIjsKICAgICAgJHBfaGVhZGVyWydzdGF0dXMnXSA9ICJpbnZhbGlkX2hlYWRlciI7CgogICAgICA
vLyAtLS0tLSBFcnJvciBsb2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9CQURfRk
9STUFULCAiSW52YWxpZCBibG9jayBzaXplIDogIi5zdHJsZW4oJHZfYmluYXJ5X2RhdGEpKTsKCiAgICAgI
C8vIC0tLS0tIFJldHVybgogICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCiAgICAv
LyAtLS0tLSBFeHRyYWN0IHRoZSB2YWx1ZXMKICAgICR2X2RhdGEgPSB1bnBhY2soJ3Z2ZXJzaW9uL3ZmbGF
nL3Zjb21wcmVzc2lvbi92bXRpbWUvdm1kYXRlL1ZjcmMvVmNvbXByZXNzZWRfc2l6ZS9Wc2l6ZS92ZmlsZW
5hbWVfbGVuL3ZleHRyYV9sZW4nLCAkdl9iaW5hcnlfZGF0YSk7CgogICAgLy8gLS0tLS0gR2V0IGZpbGVuY
W1lCiAgICAkcF9oZWFkZXJbJ2ZpbGVuYW1lJ10gPSBmcmVhZCgkdGhpcy0+emlwX2ZkLCAkdl9kYXRhWydm
aWxlbmFtZV9sZW4nXSk7CgogICAgLy8gLS0tLS0gR2V0IGV4dHJhX2ZpZWxkcwogICAgaWYgKCR2X2RhdGF
bJ2V4dHJhX2xlbiddICE9IDApIHsKICAgICAgJHBfaGVhZGVyWydleHRyYSddID0gZnJlYWQoJHRoaXMtPn
ppcF9mZCwgJHZfZGF0YVsnZXh0cmFfbGVuJ10pOwogICAgfQogICAgZWxzZSB7CiAgICAgICRwX2hlYWRlc
lsnZXh0cmEnXSA9ICcnOwogICAgfQoKICAgIC8vIC0tLS0tIEV4dHJhY3QgcHJvcGVydGllcwogICAgJHBf
aGVhZGVyWyd2ZXJzaW9uX2V4dHJhY3RlZCddID0gJHZfZGF0YVsndmVyc2lvbiddOwogICAgJHBfaGVhZGV
yWydjb21wcmVzc2lvbiddID0gJHZfZGF0YVsnY29tcHJlc3Npb24nXTsKICAgICRwX2hlYWRlclsnc2l6ZS
ddID0gJHZfZGF0YVsnc2l6ZSddOwogICAgJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSA9ICR2X2Rhd
GFbJ2NvbXByZXNzZWRfc2l6ZSddOwogICAgJHBfaGVhZGVyWydjcmMnXSA9ICR2X2RhdGFbJ2NyYyddOwog
ICAgJHBfaGVhZGVyWydmbGFnJ10gPSAkdl9kYXRhWydmbGFnJ107CiAgICAkcF9oZWFkZXJbJ2ZpbGVuYW1
lX2xlbiddID0gJHZfZGF0YVsnZmlsZW5hbWVfbGVuJ107CgogICAgLy8gLS0tLS0gUmVjdXBlcmF0ZSBkYX
RlIGluIFVOSVggZm9ybWF0CiAgICAkcF9oZWFkZXJbJ21kYXRlJ10gPSAkdl9kYXRhWydtZGF0ZSddOwogI
CAgJHBfaGVhZGVyWydtdGltZSddID0gJHZfZGF0YVsnbXRpbWUnXTsKICAgIGlmICgkcF9oZWFkZXJbJ21k
YXRlJ10gJiYgJHBfaGVhZGVyWydtdGltZSddKQogICAgewogICAgICAvLyAtLS0tLSBFeHRyYWN0IHRpbWU
KICAgICAgJHZfaG91ciA9ICgkcF9oZWFkZXJbJ210aW1lJ10gJiAweEY4MDApID4+IDExOwogICAgICAkdl
9taW51dGUgPSAoJHBfaGVhZGVyWydtdGltZSddICYgMHgwN0UwKSA+PiA1OwogICAgICAkdl9zZWNvbmRlI
D0gKCRwX2hlYWRlclsnbXRpbWUnXSAmIDB4MDAxRikqMjsKCiAgICAgIC8vIC0tLS0tIEV4dHJhY3QgZGF0
ZQogICAgICAkdl95ZWFyID0gKCgkcF9oZWFkZXJbJ21kYXRlJ10gJiAweEZFMDApID4+IDkpICsgMTk4MDs
KICAgICAgJHZfbW9udGggPSAoJHBfaGVhZGVyWydtZGF0ZSddICYgMHgwMUUwKSA+PiA1OwogICAgICAkdl
9kYXkgPSAkcF9oZWFkZXJbJ21kYXRlJ10gJiAweDAwMUY7CgogICAgICAvLyAtLS0tLSBHZXQgVU5JWCBkY
XRlIGZvcm1hdAogICAgICAkcF9oZWFkZXJbJ210aW1lJ10gPSBAbWt0aW1lKCR2X2hvdXIsICR2X21pbnV0
ZSwgJHZfc2Vjb25kZSwgJHZfbW9udGgsICR2X2RheSwgJHZfeWVhcik7CgogICAgfQogICAgZWxzZQogICA
gewogICAgICAkcF9oZWFkZXJbJ210aW1lJ10gPSB0aW1lKCk7CiAgICB9CgogICAgLy8gVEJDCiAgICAvL2
ZvcihyZXNldCgkdl9kYXRhKTsgJGtleSA9IGtleSgkdl9kYXRhKTsgbmV4dCgkdl9kYXRhKSkgewogICAgL
y99CgogICAgLy8gLS0tLS0gU2V0IHRoZSBzdG9yZWQgZmlsZW5hbWUKICAgICRwX2hlYWRlclsnc3RvcmVk
X2ZpbGVuYW1lJ10gPSAkcF9oZWFkZXJbJ2ZpbGVuYW1lJ107CgogICAgLy8gLS0tLS0gU2V0IHRoZSBzdGF
0dXMgZmllbGQKICAgICRwX2hlYWRlclsnc3RhdHVzJ10gPSAib2siOwoKICAgIC8vIC0tLS0tIFJldHVybg
ogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZSZWFkQ2VudHJhbEZpbGVIZWFkZXIoKQogIC8vIE
Rlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZSZWFkQ2VudHJhbEZpbGVIZWFkZXIoJiRwX2hlYWRlcik
KICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICAvLyAtLS0tLSBSZWFkIHRoZSA0IGJ5dGVzIHNpZ25hdHVyZQ
ogICAgJHZfYmluYXJ5X2RhdGEgPSBAZnJlYWQoJHRoaXMtPnppcF9mZCwgNCk7CiAgICAkdl9kYXRhID0gd
W5wYWNrKCdWaWQnLCAkdl9iaW5hcnlfZGF0YSk7CgogICAgLy8gLS0tLS0gQ2hlY2sgc2lnbmF0dXJlCiAg
ICBpZiAoJHZfZGF0YVsnaWQnXSAhPSAweDAyMDE0YjUwKQogICAgewoKICAgICAgLy8gLS0tLS0gRXJyb3I
gbG9nCiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfQkFEX0ZPUk1BVCwgJ0ludmFsaW
QgYXJjaGl2ZSBzdHJ1Y3R1cmUnKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICByZXR1cm4gUGNsW
mlwOjplcnJvckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaXJzdCA0MiBieXRlcyBv
ZiB0aGUgaGVhZGVyCiAgICAkdl9iaW5hcnlfZGF0YSA9IGZyZWFkKCR0aGlzLT56aXBfZmQsIDQyKTsKCiA
gICAvLyAtLS0tLSBMb29rIGZvciBpbnZhbGlkIGJsb2NrIHNpemUKICAgIGlmIChzdHJsZW4oJHZfYmluYX
J5X2RhdGEpICE9IDQyKQogICAgewogICAgICAkcF9oZWFkZXJbJ2ZpbGVuYW1lJ10gPSAiIjsKICAgICAgJ
HBfaGVhZGVyWydzdGF0dXMnXSA9ICJpbnZhbGlkX2hlYWRlciI7CgogICAgICAvLyAtLS0tLSBFcnJvciBs
b2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9CQURfRk9STUFULCAiSW52YWxpZCB
ibG9jayBzaXplIDogIi5zdHJsZW4oJHZfYmluYXJ5X2RhdGEpKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybg
ogICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBFeHRyYWN0I
HRoZSB2YWx1ZXMKICAgICRwX2hlYWRlciA9IHVucGFjaygndnZlcnNpb24vdnZlcnNpb25fZXh0cmFjdGVk
L3ZmbGFnL3Zjb21wcmVzc2lvbi92bXRpbWUvdm1kYXRlL1ZjcmMvVmNvbXByZXNzZWRfc2l6ZS9Wc2l6ZS9
2ZmlsZW5hbWVfbGVuL3ZleHRyYV9sZW4vdmNvbW1lbnRfbGVuL3ZkaXNrL3ZpbnRlcm5hbC9WZXh0ZXJuYW
wvVm9mZnNldCcsICR2X2JpbmFyeV9kYXRhKTsKCiAgICAvLyAtLS0tLSBHZXQgZmlsZW5hbWUKICAgIGlmI
CgkcF9oZWFkZXJbJ2ZpbGVuYW1lX2xlbiddICE9IDApCiAgICAgICRwX2hlYWRlclsnZmlsZW5hbWUnXSA9
IGZyZWFkKCR0aGlzLT56aXBfZmQsICRwX2hlYWRlclsnZmlsZW5hbWVfbGVuJ10pOwogICAgZWxzZQogICA
gICAkcF9oZWFkZXJbJ2ZpbGVuYW1lJ10gPSAnJzsKCiAgICAvLyAtLS0tLSBHZXQgZXh0cmEKICAgIGlmIC
gkcF9oZWFkZXJbJ2V4dHJhX2xlbiddICE9IDApCiAgICAgICRwX2hlYWRlclsnZXh0cmEnXSA9IGZyZWFkK
CR0aGlzLT56aXBfZmQsICRwX2hlYWRlclsnZXh0cmFfbGVuJ10pOwogICAgZWxzZQogICAgICAkcF9oZWFk
ZXJbJ2V4dHJhJ10gPSAnJzsKCiAgICAvLyAtLS0tLSBHZXQgY29tbWVudAogICAgaWYgKCRwX2hlYWRlcls
nY29tbWVudF9sZW4nXSAhPSAwKQogICAgICAkcF9oZWFkZXJbJ2NvbW1lbnQnXSA9IGZyZWFkKCR0aGlzLT
56aXBfZmQsICRwX2hlYWRlclsnY29tbWVudF9sZW4nXSk7CiAgICBlbHNlCiAgICAgICRwX2hlYWRlclsnY
29tbWVudCddID0gJyc7CgogICAgLy8gLS0tLS0gRXh0cmFjdCBwcm9wZXJ0aWVzCgogICAgLy8gLS0tLS0g
UmVjdXBlcmF0ZSBkYXRlIGluIFVOSVggZm9ybWF0CiAgICAvL2lmICgkcF9oZWFkZXJbJ21kYXRlJ10gJiY
gJHBfaGVhZGVyWydtdGltZSddKQogICAgLy8gVEJDIDogYnVnIDogdGhpcyB3YXMgaWdub3JpbmcgdGltZS
B3aXRoIDAvMC8wCiAgICBpZiAoMSkKICAgIHsKICAgICAgLy8gLS0tLS0gRXh0cmFjdCB0aW1lCiAgICAgI
CR2X2hvdXIgPSAoJHBfaGVhZGVyWydtdGltZSddICYgMHhGODAwKSA+PiAxMTsKICAgICAgJHZfbWludXRl
ID0gKCRwX2hlYWRlclsnbXRpbWUnXSAmIDB4MDdFMCkgPj4gNTsKICAgICAgJHZfc2Vjb25kZSA9ICgkcF9
oZWFkZXJbJ210aW1lJ10gJiAweDAwMUYpKjI7CgogICAgICAvLyAtLS0tLSBFeHRyYWN0IGRhdGUKICAgIC
AgJHZfeWVhciA9ICgoJHBfaGVhZGVyWydtZGF0ZSddICYgMHhGRTAwKSA+PiA5KSArIDE5ODA7CiAgICAgI
CR2X21vbnRoID0gKCRwX2hlYWRlclsnbWRhdGUnXSAmIDB4MDFFMCkgPj4gNTsKICAgICAgJHZfZGF5ID0g
JHBfaGVhZGVyWydtZGF0ZSddICYgMHgwMDFGOwoKICAgICAgLy8gLS0tLS0gR2V0IFVOSVggZGF0ZSBmb3J
tYXQKICAgICAgJHBfaGVhZGVyWydtdGltZSddID0gQG1rdGltZSgkdl9ob3VyLCAkdl9taW51dGUsICR2X3
NlY29uZGUsICR2X21vbnRoLCAkdl9kYXksICR2X3llYXIpOwoKICAgIH0KICAgIGVsc2UKICAgIHsKICAgI
CAgJHBfaGVhZGVyWydtdGltZSddID0gdGltZSgpOwogICAgfQoKICAgIC8vIC0tLS0tIFNldCB0aGUgc3Rv
cmVkIGZpbGVuYW1lCiAgICAkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddID0gJHBfaGVhZGVyWydmaWx
lbmFtZSddOwoKICAgIC8vIC0tLS0tIFNldCBkZWZhdWx0IHN0YXR1cyB0byBvawogICAgJHBfaGVhZGVyWy
dzdGF0dXMnXSA9ICdvayc7CgogICAgLy8gLS0tLS0gTG9vayBpZiBpdCBpcyBhIGRpcmVjdG9yeQogICAga
WYgKHN1YnN0cigkcF9oZWFkZXJbJ2ZpbGVuYW1lJ10sIC0xKSA9PSAnLycpIHsKICAgICAgLy8kcF9oZWFk
ZXJbJ2V4dGVybmFsJ10gPSAweDQxRkYwMDEwOwogICAgICAkcF9oZWFkZXJbJ2V4dGVybmFsJ10gPSAweDA
wMDAwMDEwOwogICAgfQoKCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQ
ogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24
gOiBwcml2Q2hlY2tGaWxlSGVhZGVycygpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOg
ogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vICAgMSBvbiBzdWNjZXNzLAogIC8vICAgMCBvbiBlcnJvcjsKI
CAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN
0aW9uIHByaXZDaGVja0ZpbGVIZWFkZXJzKCYkcF9sb2NhbF9oZWFkZXIsICYkcF9jZW50cmFsX2hlYWRlci
kKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgCS8vIC0tLS0tIENoZWNrIHRoZSBzdGF0aWMgdmFsdWVzCiAgC
S8vIFRCQwogIAlpZiAoJHBfbG9jYWxfaGVhZGVyWydmaWxlbmFtZSddICE9ICRwX2NlbnRyYWxfaGVhZGVy
WydmaWxlbmFtZSddKSB7CiAgCX0KICAJaWYgKCRwX2xvY2FsX2hlYWRlclsndmVyc2lvbl9leHRyYWN0ZWQ
nXSAhPSAkcF9jZW50cmFsX2hlYWRlclsndmVyc2lvbl9leHRyYWN0ZWQnXSkgewogIAl9CiAgCWlmICgkcF
9sb2NhbF9oZWFkZXJbJ2ZsYWcnXSAhPSAkcF9jZW50cmFsX2hlYWRlclsnZmxhZyddKSB7CiAgCX0KICAJa
WYgKCRwX2xvY2FsX2hlYWRlclsnY29tcHJlc3Npb24nXSAhPSAkcF9jZW50cmFsX2hlYWRlclsnY29tcHJl
c3Npb24nXSkgewogIAl9CiAgCWlmICgkcF9sb2NhbF9oZWFkZXJbJ210aW1lJ10gIT0gJHBfY2VudHJhbF9
oZWFkZXJbJ210aW1lJ10pIHsKICAJfQogIAlpZiAoJHBfbG9jYWxfaGVhZGVyWydmaWxlbmFtZV9sZW4nXS
AhPSAkcF9jZW50cmFsX2hlYWRlclsnZmlsZW5hbWVfbGVuJ10pIHsKICAJfQoKICAJLy8gLS0tLS0gTG9va
yBmb3IgZmxhZyBiaXQgMwogIAlpZiAoKCRwX2xvY2FsX2hlYWRlclsnZmxhZyddICYgOCkgPT0gOCkgewog
ICAgICAgICAgJHBfbG9jYWxfaGVhZGVyWydzaXplJ10gPSAkcF9jZW50cmFsX2hlYWRlclsnc2l6ZSddOwo
gICAgICAgICAgJHBfbG9jYWxfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSA9ICRwX2NlbnRyYWxfaGVhZG
VyWydjb21wcmVzc2VkX3NpemUnXTsKICAgICAgICAgICRwX2xvY2FsX2hlYWRlclsnY3JjJ10gPSAkcF9jZ
W50cmFsX2hlYWRlclsnY3JjJ107CiAgCX0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9y
ZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgL
y8gRnVuY3Rpb24gOiBwcml2UmVhZEVuZENlbnRyYWxEaXIoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQ
YXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bm
N0aW9uIHByaXZSZWFkRW5kQ2VudHJhbERpcigmJHBfY2VudHJhbF9kaXIpCiAgewogICAgJHZfcmVzdWx0P
TE7CgogICAgLy8gLS0tLS0gR28gdG8gdGhlIGVuZCBvZiB0aGUgemlwIGZpbGUKICAgICR2X3NpemUgPSBm
aWxlc2l6ZSgkdGhpcy0+emlwbmFtZSk7CiAgICBAZnNlZWsoJHRoaXMtPnppcF9mZCwgJHZfc2l6ZSk7CiA
gICBpZiAoQGZ0ZWxsKCR0aGlzLT56aXBfZmQpICE9ICR2X3NpemUpCiAgICB7CiAgICAgIC8vIC0tLS0tIE
Vycm9yIGxvZwogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0JBRF9GT1JNQVQsICdVb
mFibGUgdG8gZ28gdG8gdGhlIGVuZCBvZiB0aGUgYXJjaGl2ZSBcJycuJHRoaXMtPnppcG5hbWUuJ1wnJyk7
CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICB
9CgogICAgLy8gLS0tLS0gRmlyc3QgdHJ5IDogbG9vayBpZiB0aGlzIGlzIGFuIGFyY2hpdmUgd2l0aCBuby
Bjb21tZW50YXJpZXMgKG1vc3Qgb2YgdGhlIHRpbWUpCiAgICAvLyBpbiB0aGlzIGNhc2UgdGhlIGVuZCBvZ
iBjZW50cmFsIGRpciBpcyBhdCAyMiBieXRlcyBvZiB0aGUgZmlsZSBlbmQKICAgICR2X2ZvdW5kID0gMDsK
ICAgIGlmICgkdl9zaXplID4gMjYpIHsKICAgICAgQGZzZWVrKCR0aGlzLT56aXBfZmQsICR2X3NpemUtMjI
pOwogICAgICBpZiAoKCR2X3BvcyA9IEBmdGVsbCgkdGhpcy0+emlwX2ZkKSkgIT0gKCR2X3NpemUtMjIpKQ
ogICAgICB7CiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb
2coUENMWklQX0VSUl9CQURfRk9STUFULCAnVW5hYmxlIHRvIHNlZWsgYmFjayB0byB0aGUgbWlkZGxlIG9m
IHRoZSBhcmNoaXZlIFwnJy4kdGhpcy0+emlwbmFtZS4nXCcnKTsKCiAgICAgICAgLy8gLS0tLS0gUmV0dXJ
uCiAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIF
JlYWQgZm9yIGJ5dGVzCiAgICAgICR2X2JpbmFyeV9kYXRhID0gQGZyZWFkKCR0aGlzLT56aXBfZmQsIDQpO
wogICAgICAkdl9kYXRhID0gQHVucGFjaygnVmlkJywgJHZfYmluYXJ5X2RhdGEpOwoKICAgICAgLy8gLS0t
LS0gQ2hlY2sgc2lnbmF0dXJlCiAgICAgIGlmICgkdl9kYXRhWydpZCddID09IDB4MDYwNTRiNTApIHsKICA
gICAgICAkdl9mb3VuZCA9IDE7CiAgICAgIH0KCiAgICAgICR2X3BvcyA9IGZ0ZWxsKCR0aGlzLT56aXBfZm
QpOwogICAgfQoKICAgIC8vIC0tLS0tIEdvIGJhY2sgdG8gdGhlIG1heGltdW0gcG9zc2libGUgc2l6ZSBvZ
iB0aGUgQ2VudHJhbCBEaXIgRW5kIFJlY29yZAogICAgaWYgKCEkdl9mb3VuZCkgewogICAgICAkdl9tYXhp
bXVtX3NpemUgPSA2NTU1NzsgLy8gMHhGRkZGICsgMjI7CiAgICAgIGlmICgkdl9tYXhpbXVtX3NpemUgPiA
kdl9zaXplKQogICAgICAgICR2X21heGltdW1fc2l6ZSA9ICR2X3NpemU7CiAgICAgIEBmc2VlaygkdGhpcy
0+emlwX2ZkLCAkdl9zaXplLSR2X21heGltdW1fc2l6ZSk7CiAgICAgIGlmIChAZnRlbGwoJHRoaXMtPnppc
F9mZCkgIT0gKCR2X3NpemUtJHZfbWF4aW11bV9zaXplKSkKICAgICAgewogICAgICAgIC8vIC0tLS0tIEVy
cm9yIGxvZwogICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfQkFEX0ZPUk1BVCwgJ1V
uYWJsZSB0byBzZWVrIGJhY2sgdG8gdGhlIG1pZGRsZSBvZiB0aGUgYXJjaGl2ZSBcJycuJHRoaXMtPnppcG
5hbWUuJ1wnJyk7CgogICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgIHJldHVybiBQY2xaaXA6OmVyc
m9yQ29kZSgpOwogICAgICB9CgogICAgICAvLyAtLS0tLSBSZWFkIGJ5dGUgcGVyIGJ5dGUgaW4gb3JkZXIg
dG8gZmluZCB0aGUgc2lnbmF0dXJlCiAgICAgICR2X3BvcyA9IGZ0ZWxsKCR0aGlzLT56aXBfZmQpOwogICA
gICAkdl9ieXRlcyA9IDB4MDAwMDAwMDA7CiAgICAgIHdoaWxlICgkdl9wb3MgPCAkdl9zaXplKQogICAgIC
B7CiAgICAgICAgLy8gLS0tLS0gUmVhZCBhIGJ5dGUKICAgICAgICAkdl9ieXRlID0gQGZyZWFkKCR0aGlzL
T56aXBfZmQsIDEpOwoKICAgICAgICAvLyAtLS0tLSAgQWRkIHRoZSBieXRlCiAgICAgICAgLy8kdl9ieXRl
cyA9ICgkdl9ieXRlcyA8PCA4KSB8IE9yZCgkdl9ieXRlKTsKICAgICAgICAvLyBOb3RlIHdlIG1hc2sgdGh
lIG9sZCB2YWx1ZSBkb3duIHN1Y2ggdGhhdCBvbmNlIHNoaWZ0ZWQgd2UgY2FuIG5ldmVyIGVuZCB1cCB3aX
RoIG1vcmUgdGhhbiBhIDMyYml0IG51bWJlcgogICAgICAgIC8vIE90aGVyd2lzZSBvbiBzeXN0ZW1zIHdoZ
XJlIHdlIGhhdmUgNjRiaXQgaW50ZWdlcnMgdGhlIGNoZWNrIGJlbG93IGZvciB0aGUgbWFnaWMgbnVtYmVy
IHdpbGwgZmFpbC4KICAgICAgICAkdl9ieXRlcyA9ICggKCR2X2J5dGVzICYgMHhGRkZGRkYpIDw8IDgpIHw
gT3JkKCR2X2J5dGUpOwoKICAgICAgICAvLyAtLS0tLSBDb21wYXJlIHRoZSBieXRlcwogICAgICAgIGlmIC
gkdl9ieXRlcyA9PSAweDUwNGIwNTA2KQogICAgICAgIHsKICAgICAgICAgICR2X3BvcysrOwogICAgICAgI
CAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICAkdl9wb3MrKzsKICAgICAgfQoKICAgICAgLy8gLS0tLS0g
TG9vayBpZiBub3QgZm91bmQgZW5kIG9mIGNlbnRyYWwgZGlyCiAgICAgIGlmICgkdl9wb3MgPT0gJHZfc2l
6ZSkKICAgICAgewoKICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICBQY2xaaXA6OnByaXZFcn
JvckxvZyhQQ0xaSVBfRVJSX0JBRF9GT1JNQVQsICJVbmFibGUgdG8gZmluZCBFbmQgb2YgQ2VudHJhbCBEa
XIgUmVjb3JkIHNpZ25hdHVyZSIpOwoKICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICByZXR1cm4g
UGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZpcnN
0IDE4IGJ5dGVzIG9mIHRoZSBoZWFkZXIKICAgICR2X2JpbmFyeV9kYXRhID0gZnJlYWQoJHRoaXMtPnppcF
9mZCwgMTgpOwoKICAgIC8vIC0tLS0tIExvb2sgZm9yIGludmFsaWQgYmxvY2sgc2l6ZQogICAgaWYgKHN0c
mxlbigkdl9iaW5hcnlfZGF0YSkgIT0gMTgpCiAgICB7CgogICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAg
ICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9CQURfRk9STUFULCAiSW52YWxpZCBFbmQgb2Y
gQ2VudHJhbCBEaXIgUmVjb3JkIHNpemUgOiAiLnN0cmxlbigkdl9iaW5hcnlfZGF0YSkpOwoKICAgICAgLy
8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgfQoKICAgIC8vI
C0tLS0tIEV4dHJhY3QgdGhlIHZhbHVlcwogICAgJHZfZGF0YSA9IHVucGFjaygndmRpc2svdmRpc2tfc3Rh
cnQvdmRpc2tfZW50cmllcy92ZW50cmllcy9Wc2l6ZS9Wb2Zmc2V0L3Zjb21tZW50X3NpemUnLCAkdl9iaW5
hcnlfZGF0YSk7CgogICAgLy8gLS0tLS0gQ2hlY2sgdGhlIGdsb2JhbCBzaXplCiAgICBpZiAoKCR2X3Bvcy
ArICR2X2RhdGFbJ2NvbW1lbnRfc2l6ZSddICsgMTgpICE9ICR2X3NpemUpIHsKCgkgIC8vIC0tLS0tIFJlb
W92ZWQgaW4gcmVsZWFzZSAyLjIgc2VlIHJlYWRtZSBmaWxlCgkgIC8vIFRoZSBjaGVjayBvZiB0aGUgZmls
ZSBzaXplIGlzIGEgbGl0dGxlIHRvbyBzdHJpY3QuCgkgIC8vIFNvbWUgYnVncyB3aGVyZSBmb3VuZCB3aGV
uIGEgemlwIGlzIGVuY3J5cHRlZC9kZWNyeXB0ZWQgd2l0aCAnY3J5cHQnLgoJICAvLyBXaGlsZSBkZWNyeX
B0ZWQsIHppcCBoYXMgdHJhaW5pbmcgMCBieXRlcwoJICBpZiAoMCkgewogICAgICAvLyAtLS0tLSBFcnJvc
iBsb2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9CQURfRk9STUFULAoJICAgICAg
ICAgICAgICAgICAgICAgICAnVGhlIGNlbnRyYWwgZGlyIGlzIG5vdCBhdCB0aGUgZW5kIG9mIHRoZSBhcmN
oaXZlLicKCQkJCQkJICAgLicgU29tZSB0cmFpbGluZyBieXRlcyBleGlzdHMgYWZ0ZXIgdGhlIGFyY2hpdm
UuJyk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7C
gkgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBHZXQgY29tbWVudAogICAgaWYgKCR2X2RhdGFbJ2NvbW1lbnRf
c2l6ZSddICE9IDApIHsKICAgICAgJHBfY2VudHJhbF9kaXJbJ2NvbW1lbnQnXSA9IGZyZWFkKCR0aGlzLT5
6aXBfZmQsICR2X2RhdGFbJ2NvbW1lbnRfc2l6ZSddKTsKICAgIH0KICAgIGVsc2UKICAgICAgJHBfY2VudH
JhbF9kaXJbJ2NvbW1lbnQnXSA9ICcnOwoKICAgICRwX2NlbnRyYWxfZGlyWydlbnRyaWVzJ10gPSAkdl9kY
XRhWydlbnRyaWVzJ107CiAgICAkcF9jZW50cmFsX2RpclsnZGlza19lbnRyaWVzJ10gPSAkdl9kYXRhWydk
aXNrX2VudHJpZXMnXTsKICAgICRwX2NlbnRyYWxfZGlyWydvZmZzZXQnXSA9ICR2X2RhdGFbJ29mZnNldCd
dOwogICAgJHBfY2VudHJhbF9kaXJbJ3NpemUnXSA9ICR2X2RhdGFbJ3NpemUnXTsKICAgICRwX2NlbnRyYW
xfZGlyWydkaXNrJ10gPSAkdl9kYXRhWydkaXNrJ107CiAgICAkcF9jZW50cmFsX2RpclsnZGlza19zdGFyd
CddID0gJHZfZGF0YVsnZGlza19zdGFydCddOwoKICAgIC8vIFRCQwogICAgLy9mb3IocmVzZXQoJHBfY2Vu
dHJhbF9kaXIpOyAka2V5ID0ga2V5KCRwX2NlbnRyYWxfZGlyKTsgbmV4dCgkcF9jZW50cmFsX2RpcikpIHs
KICAgIC8vfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZ
EZWxldGVCeVJ1bGUoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm
4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZEZWxldGVCeVJ1bGUo
JiRwX3Jlc3VsdF9saXN0LCAmJHBfb3B0aW9ucykKICB7CiAgICAkdl9yZXN1bHQ9MTsKICAgICR2X2xpc3R
fZGV0YWlsID0gYXJyYXkoKTsKCiAgICAvLyAtLS0tLSBPcGVuIHRoZSB6aXAgZmlsZQogICAgaWYgKCgkdl
9yZXN1bHQ9JHRoaXMtPnByaXZPcGVuRmQoJ3JiJykpICE9IDEpCiAgICB7CiAgICAgIC8vIC0tLS0tIFJld
HVybgogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKICAgIC8vIC0tLS0tIFJlYWQgdGhlIGNlbnRy
YWwgZGlyZWN0b3J5IGluZm9ybWF0aW9ucwogICAgJHZfY2VudHJhbF9kaXIgPSBhcnJheSgpOwogICAgaWY
gKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdlJlYWRFbmRDZW50cmFsRGlyKCR2X2NlbnRyYWxfZGlyKSkgIT
0gMSkKICAgIHsKICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgIHJldHVybiAkdl9yZXN1bHQ7C
iAgICB9CgogICAgLy8gLS0tLS0gR28gdG8gYmVnaW5uaW5nIG9mIEZpbGUKICAgIEByZXdpbmQoJHRoaXMt
PnppcF9mZCk7CgogICAgLy8gLS0tLS0gU2NhbiBhbGwgdGhlIGZpbGVzCiAgICAvLyAtLS0tLSBTdGFydCB
hdCBiZWdpbm5pbmcgb2YgQ2VudHJhbCBEaXIKICAgICR2X3Bvc19lbnRyeSA9ICR2X2NlbnRyYWxfZGlyWy
dvZmZzZXQnXTsKICAgIEByZXdpbmQoJHRoaXMtPnppcF9mZCk7CiAgICBpZiAoQGZzZWVrKCR0aGlzLT56a
XBfZmQsICR2X3Bvc19lbnRyeSkpCiAgICB7CiAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSB6aXAgZmlsZQog
ICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKCiAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICBQY2x
aaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfQVJDSElWRV9aSVAsICdJbnZhbGlkIGFyY2
hpdmUgc2l6ZScpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ
29kZSgpOwogICAgfQoKICAgIC8vIC0tLS0tIFJlYWQgZWFjaCBlbnRyeQogICAgJHZfaGVhZGVyX2xpc3Qg
PSBhcnJheSgpOwogICAgJGpfc3RhcnQgPSAwOwogICAgZm9yICgkaT0wLCAkdl9uYl9leHRyYWN0ZWQ9MDs
gJGk8JHZfY2VudHJhbF9kaXJbJ2VudHJpZXMnXT
sgJGkrKykKICAgIHsKCiAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZpbGUgaGVhZGVyCiAgICAgICR2X2hlY
WRlcl9saXN0WyR2X25iX2V4dHJhY3RlZF0gPSBhcnJheSgpOwogICAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0
aGlzLT5wcml2UmVhZENlbnRyYWxGaWxlSGVhZGVyKCR2X2hlYWRlcl9saXN0WyR2X25iX2V4dHJhY3RlZF0
pKSAhPSAxKQogICAgICB7CiAgICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHppcCBmaWxlCiAgICAgICAgJH
RoaXMtPnByaXZDbG9zZUZkKCk7CgogICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgIH0KCgogICAgI
CAvLyAtLS0tLSBTdG9yZSB0aGUgaW5kZXgKICAgICAgJHZfaGVhZGVyX2xpc3RbJHZfbmJfZXh0cmFjdGVk
XVsnaW5kZXgnXSA9ICRpOwoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgdGhlIHNwZWNpZmljIGV4dHJhY3Q
gcnVsZXMKICAgICAgJHZfZm91bmQgPSBmYWxzZTsKCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGV4dHJhY3
QgYnkgbmFtZSBydWxlCiAgICAgIGlmICggICAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX05BT
UVdKSkKICAgICAgICAgICYmICgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfTkFNRV0gIT0gMCkpIHsKCiAg
ICAgICAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSBmaWxlbmFtZSBpcyBpbiB0aGUgbGlzdAogICAgICAgICA
gZm9yICgkaj0wOyAoJGo8c2l6ZW9mKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9OQU1FXSkpICYmICghJH
ZfZm91bmQpOyAkaisrKSB7CgogICAgICAgICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGEgZGlyZWN0b3J5C
iAgICAgICAgICAgICAgaWYgKHN1YnN0cigkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfTkFNRV1bJGpdLCAt
MSkgPT0gIi8iKSB7CgogICAgICAgICAgICAgICAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSBkaXJlY3Rvcnk
gaXMgaW4gdGhlIGZpbGVuYW1lIHBhdGgKICAgICAgICAgICAgICAgICAgaWYgKCAgIChzdHJsZW4oJHZfaG
VhZGVyX2xpc3RbJHZfbmJfZXh0cmFjdGVkXVsnc3RvcmVkX2ZpbGVuYW1lJ10pID4gc3RybGVuKCRwX29wd
GlvbnNbUENMWklQX09QVF9CWV9OQU1FXVskal0pKQogICAgICAgICAgICAgICAgICAgICAgJiYgKHN1YnN0
cigkdl9oZWFkZXJfbGlzdFskdl9uYl9leHRyYWN0ZWRdWydzdG9yZWRfZmlsZW5hbWUnXSwgMCwgc3RybGV
uKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9OQU1FXVskal0pKSA9PSAkcF9vcHRpb25zW1BDTFpJUF9PUF
RfQllfTkFNRV1bJGpdKSkgewogICAgICAgICAgICAgICAgICAgICAgJHZfZm91bmQgPSB0cnVlOwogICAgI
CAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgIGVsc2VpZiAoICAgKCgkdl9oZWFkZXJfbGlzdFsk
dl9uYl9leHRyYWN0ZWRdWydleHRlcm5hbCddJjB4MDAwMDAwMTApPT0weDAwMDAwMDEwKSAvKiBJbmRpY2F
0ZXMgYSBmb2xkZXIgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoJHZfaGVhZGVyX2xpc3RbJH
ZfbmJfZXh0cmFjdGVkXVsnc3RvcmVkX2ZpbGVuYW1lJ10uJy8nID09ICRwX29wdGlvbnNbUENMWklQX09QV
F9CWV9OQU1FXVskal0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAkdl9mb3VuZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgLy8gLS0tLS0gTG9vayBmb3I
gYSBmaWxlbmFtZQogICAgICAgICAgICAgIGVsc2VpZiAoJHZfaGVhZGVyX2xpc3RbJHZfbmJfZXh0cmFjdG
VkXVsnc3RvcmVkX2ZpbGVuYW1lJ10gPT0gJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX05BTUVdWyRqXSkge
wogICAgICAgICAgICAgICAgICAkdl9mb3VuZCA9IHRydWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAg
fQogICAgICB9CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBleHRyYWN0IGJ5IGVyZWcgcnVsZQogICAgICA
vLyBlcmVnKCkgaXMgZGVwcmVjYXRlZCB3aXRoIFBIUCA1LjMKICAgICAgLyoKICAgICAgZWxzZSBpZiAoIC
AgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9FUkVHXSkpCiAgICAgICAgICAgICAgICYmICgkc
F9vcHRpb25zW1BDTFpJUF9PUFRfQllfRVJFR10gIT0gIiIpKSB7CgogICAgICAgICAgaWYgKGVyZWcoJHBf
b3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0VSRUddLCAkdl9oZWFkZXJfbGlzdFskdl9uYl9leHRyYWN0ZWRdWyd
zdG9yZWRfZmlsZW5hbWUnXSkpIHsKICAgICAgICAgICAgICAkdl9mb3VuZCA9IHRydWU7CiAgICAgICAgIC
B9CiAgICAgIH0KICAgICAgKi8KCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGV4dHJhY3QgYnkgcHJlZyByd
WxlCiAgICAgIGVsc2UgaWYgKCAgIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfUFJFR10pKQog
ICAgICAgICAgICAgICAmJiAoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX1BSRUddICE9ICIiKSkgewoKICA
gICAgICAgIGlmIChwcmVnX21hdGNoKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9QUkVHXSwgJHZfaGVhZG
VyX2xpc3RbJHZfbmJfZXh0cmFjdGVkXVsnc3RvcmVkX2ZpbGVuYW1lJ10pKSB7CiAgICAgICAgICAgICAgJ
HZfZm91bmQgPSB0cnVlOwogICAgICAgICAgfQogICAgICB9CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBl
eHRyYWN0IGJ5IGluZGV4IHJ1bGUKICAgICAgZWxzZSBpZiAoICAgKGlzc2V0KCRwX29wdGlvbnNbUENMWkl
QX09QVF9CWV9JTkRFWF0pKQogICAgICAgICAgICAgICAmJiAoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0
lOREVYXSAhPSAwKSkgewoKICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlIGluZGV4IGlzIGluIHRoZ
SBsaXN0CiAgICAgICAgICBmb3IgKCRqPSRqX3N0YXJ0OyAoJGo8c2l6ZW9mKCRwX29wdGlvbnNbUENMWklQ
X09QVF9CWV9JTkRFWF0pKSAmJiAoISR2X2ZvdW5kKTsgJGorKykgewoKICAgICAgICAgICAgICBpZiAoKCR
pPj0kcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfSU5ERVhdWyRqXVsnc3RhcnQnXSkgJiYgKCRpPD0kcF9vcH
Rpb25zW1BDTFpJUF9PUFRfQllfSU5ERVhdWyRqXVsnZW5kJ10pKSB7CiAgICAgICAgICAgICAgICAgICR2X
2ZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKCRpPj0kcF9vcHRpb25z
W1BDTFpJUF9PUFRfQllfSU5ERVhdWyRqXVsnZW5kJ10pIHsKICAgICAgICAgICAgICAgICAgJGpfc3RhcnQ
gPSAkaisxOwogICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgaWYgKCRwX29wdGlvbnNbUENMWklQX0
9QVF9CWV9JTkRFWF1bJGpdWydzdGFydCddPiRpKSB7CiAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgI
CAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgfQogICAgICBlbHNlIHsKICAgICAgCSR2X2ZvdW5kID0g
dHJ1ZTsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZGVsZXRpb24KICAgICAgaWYgKCR2X2Z
vdW5kKQogICAgICB7CiAgICAgICAgdW5zZXQoJHZfaGVhZGVyX2xpc3RbJHZfbmJfZXh0cmFjdGVkXSk7Ci
AgICAgIH0KICAgICAgZWxzZQogICAgICB7CiAgICAgICAgJHZfbmJfZXh0cmFjdGVkKys7CiAgICAgIH0KI
CAgIH0KCiAgICAvLyAtLS0tLSBMb29rIGlmIHNvbWV0aGluZyBuZWVkIHRvIGJlIGRlbGV0ZWQKICAgIGlm
ICgkdl9uYl9leHRyYWN0ZWQgPiAwKSB7CgogICAgICAgIC8vIC0tLS0tIENyZWF0ZXMgYSB0ZW1wb3JheSB
maWxlCiAgICAgICAgJHZfemlwX3RlbXBfbmFtZSA9IFBDTFpJUF9URU1QT1JBUllfRElSLnVuaXFpZCgncG
NsemlwLScpLicudG1wJzsKCiAgICAgICAgLy8gLS0tLS0gQ3JlYXRlcyBhIHRlbXBvcmFyeSB6aXAgYXJja
Gl2ZQogICAgICAgICR2X3RlbXBfemlwID0gbmV3IFBjbFppcCgkdl96aXBfdGVtcF9uYW1lKTsKCiAgICAg
ICAgLy8gLS0tLS0gT3BlbiB0aGUgdGVtcG9yYXJ5IHppcCBmaWxlIGluIHdyaXRlIG1vZGUKICAgICAgICB
pZiAoKCR2X3Jlc3VsdCA9ICR2X3RlbXBfemlwLT5wcml2T3BlbkZkKCd3YicpKSAhPSAxKSB7CiAgICAgIC
AgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwoKICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgI
CAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tLSBMb29rIHdoaWNo
IGZpbGUgbmVlZCB0byBiZSBrZXB0CiAgICAgICAgZm9yICgkaT0wOyAkaTxzaXplb2YoJHZfaGVhZGVyX2x
pc3QpOyAkaSsrKSB7CgogICAgICAgICAgICAvLyAtLS0tLSBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uIG9mIH
RoZSBoZWFkZXIKICAgICAgICAgICAgQHJld2luZCgkdGhpcy0+emlwX2ZkKTsKICAgICAgICAgICAgaWYgK
EBmc2VlaygkdGhpcy0+emlwX2ZkLCAgJHZfaGVhZGVyX2xpc3RbJGldWydvZmZzZXQnXSkpIHsKICAgICAg
ICAgICAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSB6aXAgZmlsZQogICAgICAgICAgICAgICAgJHRoaXMtPnB
yaXZDbG9zZUZkKCk7CiAgICAgICAgICAgICAgICAkdl90ZW1wX3ppcC0+cHJpdkNsb3NlRmQoKTsKICAgIC
AgICAgICAgICAgIEB1bmxpbmsoJHZfemlwX3RlbXBfbmFtZSk7CgogICAgICAgICAgICAgICAgLy8gLS0tL
S0gRXJyb3IgbG9nCiAgICAgICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lO
VkFMSURfQVJDSElWRV9aSVAsICdJbnZhbGlkIGFyY2hpdmUgc2l6ZScpOwoKICAgICAgICAgICAgICAgIC8
vIC0tLS0tIFJldHVybgogICAgICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgIC
AgICAgICAgIH0KCiAgICAgICAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZpbGUgaGVhZGVyCiAgICAgICAgI
CAgICR2X2xvY2FsX2hlYWRlciA9IGFycmF5KCk7CiAgICAgICAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRo
aXMtPnByaXZSZWFkRmlsZUhlYWRlcigkdl9sb2NhbF9oZWFkZXIpKSAhPSAxKSB7CiAgICAgICAgICAgICA
gICAvLyAtLS0tLSBDbG9zZSB0aGUgemlwIGZpbGUKICAgICAgICAgICAgICAgICR0aGlzLT5wcml2Q2xvc2
VGZCgpOwogICAgICAgICAgICAgICAgJHZfdGVtcF96aXAtPnByaXZDbG9zZUZkKCk7CiAgICAgICAgICAgI
CAgICBAdW5saW5rKCR2X3ppcF90ZW1wX25hbWUpOwoKICAgICAgICAgICAgICAgIC8vIC0tLS0tIFJldHVy
bgogICAgICAgICAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICA
gLy8gLS0tLS0gQ2hlY2sgdGhhdCBsb2NhbCBmaWxlIGhlYWRlciBpcyBzYW1lIGFzIGNlbnRyYWwgZmlsZS
BoZWFkZXIKICAgICAgICAgICAgaWYgKCR0aGlzLT5wcml2Q2hlY2tGaWxlSGVhZGVycygkdl9sb2NhbF9oZ
WFkZXIsCgkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZfaGVhZGVyX2xpc3RbJGldKSAh
PSAxKSB7CiAgICAgICAgICAgICAgICAvLyBUQkMKICAgICAgICAgICAgfQogICAgICAgICAgICB1bnNldCg
kdl9sb2NhbF9oZWFkZXIpOwoKICAgICAgICAgICAgLy8gLS0tLS0gV3JpdGUgdGhlIGZpbGUgaGVhZGVyCi
AgICAgICAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHZfdGVtcF96aXAtPnByaXZXcml0ZUZpbGVIZWFkZXIoJ
HZfaGVhZGVyX2xpc3RbJGldKSkgIT0gMSkgewogICAgICAgICAgICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhl
IHppcCBmaWxlCiAgICAgICAgICAgICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAgICAgICA
gICR2X3RlbXBfemlwLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAgICAgICAgQHVubGluaygkdl96aXBfdG
VtcF9uYW1lKTsKCiAgICAgICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgICAgICAgIHJld
HVybiAkdl9yZXN1bHQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIC0tLS0tIFJlYWQvd3JpdGUg
dGhlIGRhdGEgYmxvY2sKICAgICAgICAgICAgaWYgKCgkdl9yZXN1bHQgPSBQY2xaaXBVdGlsQ29weUJsb2N
rKCR0aGlzLT56aXBfZmQsICR2X3RlbXBfemlwLT56aXBfZmQsICR2X2hlYWRlcl9saXN0WyRpXVsnY29tcH
Jlc3NlZF9zaXplJ10pKSAhPSAxKSB7CiAgICAgICAgICAgICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgemlwI
GZpbGUKICAgICAgICAgICAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAgICAgICAgJHZf
dGVtcF96aXAtPnByaXZDbG9zZUZkKCk7CiAgICAgICAgICAgICAgICBAdW5saW5rKCR2X3ppcF90ZW1wX25
hbWUpOwoKICAgICAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICAgICAgcmV0dXJuIC
R2X3Jlc3VsdDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0gU3RvcmUgdGhlI
G9mZnNldCBvZiB0aGUgY2VudHJhbCBkaXIKICAgICAgICAkdl9vZmZzZXQgPSBAZnRlbGwoJHZfdGVtcF96
aXAtPnppcF9mZCk7CgogICAgICAgIC8vIC0tLS0tIFJlLUNyZWF0ZSB0aGUgQ2VudHJhbCBEaXIgZmlsZXM
gaGVhZGVyCiAgICAgICAgZm9yICgkaT0wOyAkaTxzaXplb2YoJHZfaGVhZGVyX2xpc3QpOyAkaSsrKSB7Ci
AgICAgICAgICAgIC8vIC0tLS0tIENyZWF0ZSB0aGUgZmlsZSBoZWFkZXIKICAgICAgICAgICAgaWYgKCgkd
l9yZXN1bHQgPSAkdl90ZW1wX3ppcC0+cHJpdldyaXRlQ2VudHJhbEZpbGVIZWFkZXIoJHZfaGVhZGVyX2xp
c3RbJGldKSkgIT0gMSkgewogICAgICAgICAgICAgICAgJHZfdGVtcF96aXAtPnByaXZDbG9zZUZkKCk7CiA
gICAgICAgICAgICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAgICAgICAgIEB1bmxpbmsoJH
ZfemlwX3RlbXBfbmFtZSk7CgogICAgICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgI
CAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyAtLS0tLSBUcmFu
c2Zvcm0gdGhlIGhlYWRlciB0byBhICd1c2FibGUnIGluZm8KICAgICAgICAgICAgJHZfdGVtcF96aXAtPnB
yaXZDb252ZXJ0SGVhZGVyMkZpbGVJbmZvKCR2X2hlYWRlcl9saXN0WyRpXSwgJHBfcmVzdWx0X2xpc3RbJG
ldKTsKICAgICAgICB9CgoKICAgICAgICAvLyAtLS0tLSBaaXAgZmlsZSBjb21tZW50CiAgICAgICAgJHZfY
29tbWVudCA9ICcnOwogICAgICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQ09NTUVOVF0p
KSB7CiAgICAgICAgICAkdl9jb21tZW50ID0gJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0NPTU1FTlRdOwogICA
gICAgIH0KCiAgICAgICAgLy8gLS0tLS0gQ2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBjZW50cmFsIGhlYW
RlcgogICAgICAgICR2X3NpemUgPSBAZnRlbGwoJHZfdGVtcF96aXAtPnppcF9mZCktJHZfb2Zmc2V0OwoKI
CAgICAgICAvLyAtLS0tLSBDcmVhdGUgdGhlIGNlbnRyYWwgZGlyIGZvb3RlcgogICAgICAgIGlmICgoJHZf
cmVzdWx0ID0gJHZfdGVtcF96aXAtPnByaXZXcml0ZUNlbnRyYWxIZWFkZXIoc2l6ZW9mKCR2X2hlYWRlcl9
saXN0KSwgJHZfc2l6ZSwgJHZfb2Zmc2V0LCAkdl9jb21tZW50KSkgIT0gMSkgewogICAgICAgICAgICAvLy
AtLS0tLSBSZXNldCB0aGUgZmlsZSBsaXN0CiAgI
CAgICAgICAgIHVuc2V0KCR2X2hlYWRlcl9saXN0KTsKICAgICAgICAgICAgJHZfdGVtcF96aXAtPnByaXZD
bG9zZUZkKCk7CiAgICAgICAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAgICBAdW5saW5
rKCR2X3ppcF90ZW1wX25hbWUpOwoKICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgIH
JldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tLSBDbG9zZQogICAgICAgICR2X
3RlbXBfemlwLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwoKICAgICAg
ICAvLyAtLS0tLSBEZWxldGUgdGhlIHppcCBmaWxlCiAgICAgICAgLy8gVEJDIDogSSBzaG91bGQgdGVzdCB
0aGUgcmVzdWx0IC4uLgogICAgICAgIEB1bmxpbmsoJHRoaXMtPnppcG5hbWUpOwoKICAgICAgICAvLyAtLS
0tLSBSZW5hbWUgdGhlIHRlbXBvcmFyeSBmaWxlCiAgICAgICAgLy8gVEJDIDogSSBzaG91bGQgdGVzdCB0a
GUgcmVzdWx0IC4uLgogICAgICAgIC8vQHJlbmFtZSgkdl96aXBfdGVtcF9uYW1lLCAkdGhpcy0+emlwbmFt
ZSk7CiAgICAgICAgUGNsWmlwVXRpbFJlbmFtZSgkdl96aXBfdGVtcF9uYW1lLCAkdGhpcy0+emlwbmFtZSk
7CgogICAgICAgIC8vIC0tLS0tIERlc3Ryb3kgdGhlIHRlbXBvcmFyeSBhcmNoaXZlCiAgICAgICAgdW5zZX
QoJHZfdGVtcF96aXApOwogICAgfQoKICAgIC8vIC0tLS0tIFJlbW92ZSBldmVyeSBmaWxlcyA6IHJlc2V0I
HRoZSBmaWxlCiAgICBlbHNlIGlmICgkdl9jZW50cmFsX2RpclsnZW50cmllcyddICE9IDApIHsKICAgICAg
ICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKCiAgICAgICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdk9
wZW5GZCgnd2InKSkgIT0gMSkgewogICAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgICAgICB9CgogIC
AgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZXcml0ZUNlbnRyYWxIZWFkZXIoMCwgMCwgMCwgJ
ycpKSAhPSAxKSB7CiAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgJHRo
aXMtPnByaXZDbG9zZUZkKCk7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmV
zdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8v
IEZ1bmN0aW9uIDogcHJpdkRpckNoZWNrKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gICBDaGVjayBpZiB
hIGRpcmVjdG9yeSBleGlzdHMsIGlmIG5vdCBpdCBjcmVhdGVzIGl0IGFuZCBhbGwgdGhlIHBhcmVudHMgZG
lyZWN0b3J5CiAgLy8gICB3aGljaCBtYXkgYmUgdXNlZnVsLgogIC8vIFBhcmFtZXRlcnMgOgogIC8vICAgJ
HBfZGlyIDogRGlyZWN0b3J5IHBhdGggdG8gY2hlY2suCiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gICAg
MSA6IE9LCiAgLy8gICAtMSA6IFVuYWJsZSB0byBjcmVhdGUgZGlyZWN0b3J5CiAgLy8gLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0KICBmdW5jdGlvbiBwcml2RGlyQ2hlY2soJHBfZGlyLCAkcF9pc19kaXI9ZmFsc2UpCiAgewogI
CAgJHZfcmVzdWx0ID0gMTsKCgogICAgLy8gLS0tLS0gUmVtb3ZlIHRoZSBmaW5hbCAnLycKICAgIGlmICgo
JHBfaXNfZGlyKSAmJiAoc3Vic3RyKCRwX2RpciwgLTEpPT0nLycpKQogICAgewogICAgICAkcF9kaXIgPSB
zdWJzdHIoJHBfZGlyLCAwLCBzdHJsZW4oJHBfZGlyKS0xKTsKICAgIH0KCiAgICAvLyAtLS0tLSBDaGVjay
B0aGUgZGlyZWN0b3J5IGF2YWlsYWJpbGl0eQogICAgaWYgKChpc19kaXIoJHBfZGlyKSkgfHwgKCRwX2Rpc
iA9PSAiIikpCiAgICB7CiAgICAgIHJldHVybiAxOwogICAgfQoKICAgIC8vIC0tLS0tIEV4dHJhY3QgcGFy
ZW50IGRpcmVjdG9yeQogICAgJHBfcGFyZW50X2RpciA9IGRpcm5hbWUoJHBfZGlyKTsKCiAgICAvLyAtLS0
tLSBKdXN0IGEgY2hlY2sKICAgIGlmICgkcF9wYXJlbnRfZGlyICE9ICRwX2RpcikKICAgIHsKICAgICAgLy
8gLS0tLS0gTG9vayBmb3IgcGFyZW50IGRpcmVjdG9yeQogICAgICBpZiAoJHBfcGFyZW50X2RpciAhPSAiI
ikKICAgICAgewogICAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZEaXJDaGVjaygkcF9wYXJl
bnRfZGlyKSkgIT0gMSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0
KICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIENyZWF0ZSB0aGUgZGlyZWN0b3J5CiAgICBpZiAoIUBta2
RpcigkcF9kaXIsIDA3NzcpKQogICAgewogICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgUGNsWmlwO
jpwcml2RXJyb3JMb2coUENMWklQX0VSUl9ESVJfQ1JFQVRFX0ZBSUwsICJVbmFibGUgdG8gY3JlYXRlIGRp
cmVjdG9yeSAnJHBfZGlyJyIpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA
6OmVycm9yQ29kZSgpOwogICAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdD
sKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5
jdGlvbiA6IHByaXZNZXJnZSgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgSWYgJHBfYXJjaGl2ZV90b1
9hZGQgZG9lcyBub3QgZXhpc3QsIHRoZSBmdW5jdGlvbiBleGl0IHdpdGggYSBzdWNjZXNzIHJlc3VsdC4KI
CAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo
gIGZ1bmN0aW9uIHByaXZNZXJnZSgmJHBfYXJjaGl2ZV90b19hZGQpCiAgewogICAgJHZfcmVzdWx0PTE7Cg
ogICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgYXJjaGl2ZV90b19hZGQgZXhpc3RzCiAgICBpZiAoIWlzX2Zpb
GUoJHBfYXJjaGl2ZV90b19hZGQtPnppcG5hbWUpKQogICAgewoKICAgICAgLy8gLS0tLS0gTm90aGluZyB0
byBtZXJnZSwgc28gbWVyZ2UgaXMgYSBzdWNjZXNzCiAgICAgICR2X3Jlc3VsdCA9IDE7CgogICAgICAvLyA
tLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBMb29rIG
lmIHRoZSBhcmNoaXZlIGV4aXN0cwogICAgaWYgKCFpc19maWxlKCR0aGlzLT56aXBuYW1lKSkKICAgIHsKC
iAgICAgIC8vIC0tLS0tIERvIGEgZHVwbGljYXRlCiAgICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2RHVw
bGljYXRlKCRwX2FyY2hpdmVfdG9fYWRkLT56aXBuYW1lKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgogICA
gICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKICAgIC8vIC0tLS0tIE9wZW4gdGhlIHppcCBmaWxlCiAgIC
BpZiAoKCR2X3Jlc3VsdD0kdGhpcy0+cHJpdk9wZW5GZCgncmInKSkgIT0gMSkKICAgIHsKICAgICAgLy8gL
S0tLS0gUmV0dXJuCiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gUmVhZCB0
aGUgY2VudHJhbCBkaXJlY3RvcnkgaW5mb3JtYXRpb25zCiAgICAkdl9jZW50cmFsX2RpciA9IGFycmF5KCk
7CiAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2UmVhZEVuZENlbnRyYWxEaXIoJHZfY2VudHJhbF
9kaXIpKSAhPSAxKQogICAgewogICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgcmV0dXJuICR2X
3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBHbyB0byBiZWdpbm5pbmcgb2YgRmlsZQogICAgQHJld2lu
ZCgkdGhpcy0+emlwX2ZkKTsKCiAgICAvLyAtLS0tLSBPcGVuIHRoZSBhcmNoaXZlX3RvX2FkZCBmaWxlCiA
gICBpZiAoKCR2X3Jlc3VsdD0kcF9hcmNoaXZlX3RvX2FkZC0+cHJpdk9wZW5GZCgncmInKSkgIT0gMSkKIC
AgIHsKICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgc
mV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBjZW50cmFsIGRpcmVjdG9y
eSBpbmZvcm1hdGlvbnMKICAgICR2X2NlbnRyYWxfZGlyX3RvX2FkZCA9IGFycmF5KCk7CiAgICBpZiAoKCR
2X3Jlc3VsdCA9ICRwX2FyY2hpdmVfdG9fYWRkLT5wcml2UmVhZEVuZENlbnRyYWxEaXIoJHZfY2VudHJhbF
9kaXJfdG9fYWRkKSkgIT0gMSkKICAgIHsKICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICRwX
2FyY2hpdmVfdG9fYWRkLT5wcml2Q2xvc2VGZCgpOwoKICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0K
CiAgICAvLyAtLS0tLSBHbyB0byBiZWdpbm5pbmcgb2YgRmlsZQogICAgQHJld2luZCgkcF9hcmNoaXZlX3R
vX2FkZC0+emlwX2ZkKTsKCiAgICAvLyAtLS0tLSBDcmVhdGVzIGEgdGVtcG9yYXkgZmlsZQogICAgJHZfem
lwX3RlbXBfbmFtZSA9IFBDTFpJUF9URU1QT1JBUllfRElSLnVuaXFpZCgncGNsemlwLScpLicudG1wJzsKC
iAgICAvLyAtLS0tLSBPcGVuIHRoZSB0ZW1wb3JhcnkgZmlsZSBpbiB3cml0ZSBtb2RlCiAgICBpZiAoKCR2
X3ppcF90ZW1wX2ZkID0gQGZvcGVuKCR2X3ppcF90ZW1wX25hbWUsICd3YicpKSA9PSAwKQogICAgewogICA
gICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgJHBfYXJjaGl2ZV90b19hZGQtPnByaXZDbG9zZUZkKC
k7CgogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX1JFQURfT1BFTl9GQUlMLCAnVW5hY
mxlIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgXCcnLiR2X3ppcF90ZW1wX25hbWUuJ1wnIGluIGJpbmFyeSB3
cml0ZSBtb2RlJyk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3J
Db2RlKCk7CiAgICB9CgogICAgLy8gLS0tLS0gQ29weSB0aGUgZmlsZXMgZnJvbSB0aGUgYXJjaGl2ZSB0by
B0aGUgdGVtcG9yYXJ5IGZpbGUKICAgIC8vIFRCQyA6IEhlcmUgSSBzaG91bGQgYmV0dGVyIGFwcGVuZCB0a
GUgZmlsZSBhbmQgZ28gYmFjayB0byBlcmFzZSB0aGUgY2VudHJhbCBkaXIKICAgICR2X3NpemUgPSAkdl9j
ZW50cmFsX2Rpclsnb2Zmc2V0J107CiAgICB3aGlsZSAoJHZfc2l6ZSAhPSAwKQogICAgewogICAgICAkdl9
yZWFkX3NpemUgPSAoJHZfc2l6ZSA8IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUgPyAkdl9zaXplIDogUENMWk
lQX1JFQURfQkxPQ0tfU0laRSk7CiAgICAgICR2X2J1ZmZlciA9IGZyZWFkKCR0aGlzLT56aXBfZmQsICR2X
3JlYWRfc2l6ZSk7CiAgICAgIEBmd3JpdGUoJHZfemlwX3RlbXBfZmQsICR2X2J1ZmZlciwgJHZfcmVhZF9z
aXplKTsKICAgICAgJHZfc2l6ZSAtPSAkdl9yZWFkX3NpemU7CiAgICB9CgogICAgLy8gLS0tLS0gQ29weSB
0aGUgZmlsZXMgZnJvbSB0aGUgYXJjaGl2ZV90b19hZGQgaW50byB0aGUgdGVtcG9yYXJ5IGZpbGUKICAgIC
R2X3NpemUgPSAkdl9jZW50cmFsX2Rpcl90b19hZGRbJ29mZnNldCddOwogICAgd2hpbGUgKCR2X3NpemUgI
T0gMCkKICAgIHsKICAgICAgJHZfcmVhZF9zaXplID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19T
SVpFID8gJHZfc2l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICAkdl9idWZmZXIgPSBmcmV
hZCgkcF9hcmNoaXZlX3RvX2FkZC0+emlwX2ZkLCAkdl9yZWFkX3NpemUpOwogICAgICBAZndyaXRlKCR2X3
ppcF90ZW1wX2ZkLCAkdl9idWZmZXIsICR2X3JlYWRfc2l6ZSk7CiAgICAgICR2X3NpemUgLT0gJHZfcmVhZ
F9zaXplOwogICAgfQoKICAgIC8vIC0tLS0tIFN0b3JlIHRoZSBvZmZzZXQgb2YgdGhlIGNlbnRyYWwgZGly
CiAgICAkdl9vZmZzZXQgPSBAZnRlbGwoJHZfemlwX3RlbXBfZmQpOwoKICAgIC8vIC0tLS0tIENvcHkgdGh
lIGJsb2NrIG9mIGZpbGUgaGVhZGVycyBmcm9tIHRoZSBvbGQgYXJjaGl2ZQogICAgJHZfc2l6ZSA9ICR2X2
NlbnRyYWxfZGlyWydzaXplJ107CiAgICB3aGlsZSAoJHZfc2l6ZSAhPSAwKQogICAgewogICAgICAkdl9yZ
WFkX3NpemUgPSAoJHZfc2l6ZSA8IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUgPyAkdl9zaXplIDogUENMWklQ
X1JFQURfQkxPQ0tfU0laRSk7CiAgICAgICR2X2J1ZmZlciA9IEBmcmVhZCgkdGhpcy0+emlwX2ZkLCAkdl9
yZWFkX3NpemUpOwogICAgICBAZndyaXRlKCR2X3ppcF90ZW1wX2ZkLCAkdl9idWZmZXIsICR2X3JlYWRfc2
l6ZSk7CiAgICAgICR2X3NpemUgLT0gJHZfcmVhZF9zaXplOwogICAgfQoKICAgIC8vIC0tLS0tIENvcHkgd
GhlIGJsb2NrIG9mIGZpbGUgaGVhZGVycyBmcm9tIHRoZSBhcmNoaXZlX3RvX2FkZAogICAgJHZfc2l6ZSA9
ICR2X2NlbnRyYWxfZGlyX3RvX2FkZFsnc2l6ZSddOwogICAgd2hpbGUgKCR2X3NpemUgIT0gMCkKICAgIHs
KICAgICAgJHZfcmVhZF9zaXplID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFID8gJHZfc2
l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICAkdl9idWZmZXIgPSBAZnJlYWQoJHBfYXJja
Gl2ZV90b19hZGQtPnppcF9mZCwgJHZfcmVhZF9zaXplKTsKICAgICAgQGZ3cml0ZSgkdl96aXBfdGVtcF9m
ZCwgJHZfYnVmZmVyLCAkdl9yZWFkX3NpemUpOwogICAgICAkdl9zaXplIC09ICR2X3JlYWRfc2l6ZTsKICA
gIH0KCiAgICAvLyAtLS0tLSBNZXJnZSB0aGUgZmlsZSBjb21tZW50cwogICAgJHZfY29tbWVudCA9ICR2X2
NlbnRyYWxfZGlyWydjb21tZW50J10uJyAnLiR2X2NlbnRyYWxfZGlyX3RvX2FkZFsnY29tbWVudCddOwoKI
CAgIC8vIC0tLS0tIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUgKG5ldykgY2VudHJhbCBoZWFkZXIKICAg
ICR2X3NpemUgPSBAZnRlbGwoJHZfemlwX3RlbXBfZmQpLSR2X29mZnNldDsKCiAgICAvLyAtLS0tLSBTd2F
wIHRoZSBmaWxlIGRlc2NyaXB0b3IKICAgIC8vIEhlcmUgaXMgYSB0cmljayA6IEkgc3dhcCB0aGUgdGVtcG
9yYXJ5IGZkIHdpdGggdGhlIHppcCBmZCwgaW4gb3JkZXIgdG8gdXNlCiAgICAvLyB0aGUgZm9sbG93aW5nI
G1ldGhvZHMgb24gdGhlIHRlbXBvcmFyeSBmaWwgYW5kIG5vdCB0aGUgcmVhbCBhcmNoaXZlIGZkCiAgICAk
dl9zd2FwID0gJHRoaXMtPnppcF9mZDsKICAgICR0aGlzLT56aXBfZmQgPSAkdl96aXBfdGVtcF9mZDsKICA
gICR2X3ppcF90ZW1wX2ZkID0gJHZfc3dhcDsKCiAgICAvLyAtLS0tLSBDcmVhdGUgdGhlIGNlbnRyYWwgZG
lyIGZvb3RlcgogICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdldyaXRlQ2VudHJhbEhlYWRlcigkd
l9jZW50cmFsX2RpclsnZW50cmllcyddKyR2X2Nl
bnRyYWxfZGlyX3RvX2FkZFsnZW50cmllcyddLCAkdl9zaXplLCAkdl9vZmZzZXQsICR2X2NvbW1lbnQpKSA
hPSAxKQogICAgewogICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgJHBfYXJjaGl2ZV90b19hZG
QtPnByaXZDbG9zZUZkKCk7CiAgICAgIEBmY2xvc2UoJHZfemlwX3RlbXBfZmQpOwogICAgICAkdGhpcy0+e
mlwX2ZkID0gbnVsbDsKCiAgICAgIC8vIC0tLS0tIFJlc2V0IHRoZSBmaWxlIGxpc3QKICAgICAgdW5zZXQo
JHZfaGVhZGVyX2xpc3QpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiAkdl9yZXN1bHQ
7CiAgICB9CgogICAgLy8gLS0tLS0gU3dhcCBiYWNrIHRoZSBmaWxlIGRlc2NyaXB0b3IKICAgICR2X3N3YX
AgPSAkdGhpcy0+emlwX2ZkOwogICAgJHRoaXMtPnppcF9mZCA9ICR2X3ppcF90ZW1wX2ZkOwogICAgJHZfe
mlwX3RlbXBfZmQgPSAkdl9zd2FwOwoKICAgIC8vIC0tLS0tIENsb3NlCiAgICAkdGhpcy0+cHJpdkNsb3Nl
RmQoKTsKICAgICRwX2FyY2hpdmVfdG9fYWRkLT5wcml2Q2xvc2VGZCgpOwoKICAgIC8vIC0tLS0tIENsb3N
lIHRoZSB0ZW1wb3JhcnkgZmlsZQogICAgQGZjbG9zZSgkdl96aXBfdGVtcF9mZCk7CgogICAgLy8gLS0tLS
0gRGVsZXRlIHRoZSB6aXAgZmlsZQogICAgLy8gVEJDIDogSSBzaG91bGQgdGVzdCB0aGUgcmVzdWx0IC4uL
gogICAgQHVubGluaygkdGhpcy0+emlwbmFtZSk7CgogICAgLy8gLS0tLS0gUmVuYW1lIHRoZSB0ZW1wb3Jh
cnkgZmlsZQogICAgLy8gVEJDIDogSSBzaG91bGQgdGVzdCB0aGUgcmVzdWx0IC4uLgogICAgLy9AcmVuYW1
lKCR2X3ppcF90ZW1wX25hbWUsICR0aGlzLT56aXBuYW1lKTsKICAgIFBjbFppcFV0aWxSZW5hbWUoJHZfem
lwX3RlbXBfbmFtZSwgJHRoaXMtPnppcG5hbWUpOwoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuI
CR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0KICAvLyBGdW5jdGlvbiA6IHByaXZEdXBsaWNhdGUoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhb
WV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9
uIHByaXZEdXBsaWNhdGUoJHBfYXJjaGl2ZV9maWxlbmFtZSkKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgIC
AvLyAtLS0tLSBMb29rIGlmIHRoZSAkcF9hcmNoaXZlX2ZpbGVuYW1lIGV4aXN0cwogICAgaWYgKCFpc19ma
WxlKCRwX2FyY2hpdmVfZmlsZW5hbWUpKQogICAgewoKICAgICAgLy8gLS0tLS0gTm90aGluZyB0byBkdXBs
aWNhdGUsIHNvIGR1cGxpY2F0ZSBpcyBhIHN1Y2Nlc3MuCiAgICAgICR2X3Jlc3VsdCA9IDE7CgogICAgICA
vLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBPcG
VuIHRoZSB6aXAgZmlsZQogICAgaWYgKCgkdl9yZXN1bHQ9JHRoaXMtPnByaXZPcGVuRmQoJ3diJykpICE9I
DEpCiAgICB7CiAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoK
ICAgIC8vIC0tLS0tIE9wZW4gdGhlIHRlbXBvcmFyeSBmaWxlIGluIHdyaXRlIG1vZGUKICAgIGlmICgoJHZ
femlwX3RlbXBfZmQgPSBAZm9wZW4oJHBfYXJjaGl2ZV9maWxlbmFtZSwgJ3JiJykpID09IDApCiAgICB7Ci
AgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwoKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX
0VSUl9SRUFEX09QRU5fRkFJTCwgJ1VuYWJsZSB0byBvcGVuIGFyY2hpdmUgZmlsZSBcJycuJHBfYXJjaGl2
ZV9maWxlbmFtZS4nXCcgaW4gYmluYXJ5IHdyaXRlIG1vZGUnKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgo
gICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBDb3B5IHRoZS
BmaWxlcyBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSB0ZW1wb3JhcnkgZmlsZQogICAgLy8gVEJDIDogSGVyZ
SBJIHNob3VsZCBiZXR0ZXIgYXBwZW5kIHRoZSBmaWxlIGFuZCBnbyBiYWNrIHRvIGVyYXNlIHRoZSBjZW50
cmFsIGRpcgogICAgJHZfc2l6ZSA9IGZpbGVzaXplKCRwX2FyY2hpdmVfZmlsZW5hbWUpOwogICAgd2hpbGU
gKCR2X3NpemUgIT0gMCkKICAgIHsKICAgICAgJHZfcmVhZF9zaXplID0gKCR2X3NpemUgPCBQQ0xaSVBfUk
VBRF9CTE9DS19TSVpFID8gJHZfc2l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICAkdl9id
WZmZXIgPSBmcmVhZCgkdl96aXBfdGVtcF9mZCwgJHZfcmVhZF9zaXplKTsKICAgICAgQGZ3cml0ZSgkdGhp
cy0+emlwX2ZkLCAkdl9idWZmZXIsICR2X3JlYWRfc2l6ZSk7CiAgICAgICR2X3NpemUgLT0gJHZfcmVhZF9
zaXplOwogICAgfQoKICAgIC8vIC0tLS0tIENsb3NlCiAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKCiAgIC
AvLyAtLS0tLSBDbG9zZSB0aGUgdGVtcG9yYXJ5IGZpbGUKICAgIEBmY2xvc2UoJHZfemlwX3RlbXBfZmQpO
woKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZFcnJvckxvZ
ygpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tCiAgZnVuY3Rpb24gcHJpdkVycm9yTG9nKCRwX2Vycm9yX2NvZGU9MCwgJHBfZXJyb3Jfc3RyaW5nPScnKQ
ogIHsKICAgIGlmIChQQ0xaSVBfRVJST1JfRVhURVJOQUwgPT0gMSkgewogICAgICBQY2xFcnJvcigkcF9lc
nJvcl9jb2RlLCAkcF9lcnJvcl9zdHJpbmcpOwogICAgfQogICAgZWxzZSB7CiAgICAgICR0aGlzLT5lcnJv
cl9jb2RlID0gJHBfZXJyb3JfY29kZTsKICAgICAgJHRoaXMtPmVycm9yX3N0cmluZyA9ICRwX2Vycm9yX3N
0cmluZzsKICAgIH0KICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KICAvLyBGdW5jdGlvbiA6IHByaXZFcnJvclJlc2V0KCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGF
yYW1ldGVycyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2RXJyb3JSZXNldCgpC
iAgewogICAgaWYgKFBDTFpJUF9FUlJPUl9FWFRFUk5BTCA9PSAxKSB7CiAgICAgIFBjbEVycm9yUmVzZXQo
KTsKICAgIH0KICAgIGVsc2UgewogICAgICAkdGhpcy0+ZXJyb3JfY29kZSA9IDA7CiAgICAgICR0aGlzLT5
lcnJvcl9zdHJpbmcgPSAnJzsKICAgIH0KICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZEaXNhYmxlTWFnaWNRdW90ZXMoKQogIC8vIER
lc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZEaXNhYmxlTWFnaWNRdW90ZXMoKQogIHsKICAgICR2X3Jl
c3VsdD0xOwoKICAgIC8vIC0tLS0tIExvb2sgaWYgZnVuY3Rpb24gZXhpc3RzCiAgICBpZiAoICAgKCFmdW5
jdGlvbl9leGlzdHMoImdldF9tYWdpY19xdW90ZXNfcnVudGltZSIpKQoJICAgIHx8ICghZnVuY3Rpb25fZX
hpc3RzKCJzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUiKSkpIHsKICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKC
X0KCiAgICAvLyAtLS0tLSBMb29rIGlmIGFscmVhZHkgZG9uZQogICAgaWYgKCR0aGlzLT5tYWdpY19xdW90
ZXNfc3RhdHVzICE9IC0xKSB7CiAgICAgIHJldHVybiAkdl9yZXN1bHQ7Cgl9CgoJLy8gLS0tLS0gR2V0IGF
uZCBtZW1vcml6ZSB0aGUgbWFnaWNfcXVvdGUgdmFsdWUKCSR0aGlzLT5tYWdpY19xdW90ZXNfc3RhdHVzID
0gQGdldF9tYWdpY19xdW90ZXNfcnVudGltZSgpOwoKCS8vIC0tLS0tIERpc2FibGUgbWFnaWNfcXVvdGVzC
glpZiAoJHRoaXMtPm1hZ2ljX3F1b3Rlc19zdGF0dXMgPT0gMSkgewoJICBAc2V0X21hZ2ljX3F1b3Rlc19y
dW50aW1lKDApOwoJfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiA
gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6
IHByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA
6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2U
3dhcEJhY2tNYWdpY1F1b3RlcygpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gTG9vayBp
ZiBmdW5jdGlvbiBleGlzdHMKICAgIGlmICggICAoIWZ1bmN0aW9uX2V4aXN0cygiZ2V0X21hZ2ljX3F1b3R
lc19ydW50aW1lIikpCgkgICAgfHwgKCFmdW5jdGlvbl9leGlzdHMoInNldF9tYWdpY19xdW90ZXNfcnVudG
ltZSIpKSkgewogICAgICByZXR1cm4gJHZfcmVzdWx0OwoJfQoKICAgIC8vIC0tLS0tIExvb2sgaWYgc29tZ
XRoaW5nIHRvIGRvCiAgICBpZiAoJHRoaXMtPm1hZ2ljX3F1b3Rlc19zdGF0dXMgIT0gLTEpIHsKICAgICAg
cmV0dXJuICR2X3Jlc3VsdDsKCX0KCgkvLyAtLS0tLSBTd2FwIGJhY2sgbWFnaWNfcXVvdGVzCglpZiAoJHR
oaXMtPm1hZ2ljX3F1b3Rlc19zdGF0dXMgPT0gMSkgewogIAkgIEBzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbW
UoJHRoaXMtPm1hZ2ljX3F1b3Rlc19zdGF0dXMpOwoJfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0d
XJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgfQogIC8vIEVuZCBvZiBjbGF
zcwogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rp
b24gOiBQY2xaaXBVdGlsUGF0aFJlZHVjdGlvbigpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXR
lcnMgOgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gU
GNsWmlwVXRpbFBhdGhSZWR1Y3Rpb24oJHBfZGlyKQogIHsKICAgICR2X3Jlc3VsdCA9ICIiOwoKICAgIC8v
IC0tLS0tIExvb2sgZm9yIG5vdCBlbXB0eSBwYXRoCiAgICBpZiAoJHBfZGlyICE9ICIiKSB7CiAgICAgIC8
vIC0tLS0tIEV4cGxvZGUgcGF0aCBieSBkaXJlY3RvcnkgbmFtZXMKICAgICAgJHZfbGlzdCA9IGV4cGxvZG
UoIi8iLCAkcF9kaXIpOwoKICAgICAgLy8gLS0tLS0gU3R1ZHkgZGlyZWN0b3JpZXMgZnJvbSBsYXN0IHRvI
GZpcnN0CiAgICAgICR2X3NraXAgPSAwOwogICAgICBmb3IgKCRpPXNpemVvZigkdl9saXN0KS0xOyAkaT49
MDsgJGktLSkgewogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGN1cnJlbnQgcGF0aAogICAgICAgIGlmICg
kdl9saXN0WyRpXSA9PSAiLiIpIHsKICAgICAgICAgIC8vIC0tLS0tIElnbm9yZSB0aGlzIGRpcmVjdG9yeQ
ogICAgICAgICAgLy8gU2hvdWxkIGJlIHRoZSBmaXJzdCAkaT0wLCBidXQgbm8gY2hlY2sgaXMgZG9uZQogI
CAgICAgIH0KICAgICAgICBlbHNlIGlmICgkdl9saXN0WyRpXSA9PSAiLi4iKSB7CgkJICAkdl9za2lwKys7
CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCR2X2xpc3RbJGldID09ICIiKSB7CgkJICAvLyAtLS0tLSB
GaXJzdCAnLycgaS5lLiByb290IHNsYXNoCgkJICBpZiAoJGkgPT0gMCkgewogICAgICAgICAgICAkdl9yZX
N1bHQgPSAiLyIuJHZfcmVzdWx0OwoJCSAgICBpZiAoJHZfc2tpcCA+IDApIHsKCQkgICAgICAgIC8vIC0tL
S0tIEl0IGlzIGFuIGludmFsaWQgcGF0aCwgc28gdGhlIHBhdGggaXMgbm90IG1vZGlmaWVkCgkJICAgICAg
ICAvLyBUQkMKCQkgICAgICAgICR2X3Jlc3VsdCA9ICRwX2RpcjsKICAgICAgICAgICAgICAgICR2X3NraXA
gPSAwOwoJCSAgICB9CgkJICB9CgkJICAvLyAtLS0tLSBMYXN0ICcvJyBpLmUuIGluZGljYXRlcyBhIGRpcm
VjdG9yeQoJCSAgZWxzZSBpZiAoJGkgPT0gKHNpemVvZigkdl9saXN0KS0xKSkgewogICAgICAgICAgICAkd
l9yZXN1bHQgPSAkdl9saXN0WyRpXTsKCQkgIH0KCQkgIC8vIC0tLS0tIERvdWJsZSAnLycgaW5zaWRlIHRo
ZSBwYXRoCgkJICBlbHNlIHsKICAgICAgICAgICAgLy8gLS0tLS0gSWdub3JlIG9ubHkgdGhlIGRvdWJsZSA
nLy8nIGluIHBhdGgsCiAgICAgICAgICAgIC8vIGJ1dCBub3QgdGhlIGZpcnN0IGFuZCBsYXN0ICcvJwoJCS
AgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCQkgIC8vIC0tLS0tIExvb2sgZm9yIGl0ZW0gdG8gc2tpc
AoJCSAgaWYgKCR2X3NraXAgPiAwKSB7CgkJICAgICR2X3NraXAtLTsKCQkgIH0KCQkgIGVsc2UgewogICAg
ICAgICAgICAkdl9yZXN1bHQgPSAkdl9saXN0WyR
pXS4oJGkhPShzaXplb2YoJHZfbGlzdCktMSk/Ii8iLiR2X3Jlc3VsdDoiIik7CgkJICB9CiAgICAgICAgfQ
ogICAgICB9CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBza2lwCiAgICAgIGlmICgkdl9za2lwID4gMCkge
wogICAgICAgIHdoaWxlICgkdl9za2lwID4gMCkgewogICAgICAgICAgICAkdl9yZXN1bHQgPSAnLi4vJy4k
dl9yZXN1bHQ7CiAgICAgICAgICAgICR2X3NraXAtLTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICA
vLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBQY2xaaXBVdGlsUGF0aEluY2x
1c2lvbigpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVGhpcyBmdW5jdGlvbiBpbmRpY2F0ZXMgaWYgdG
hlIHBhdGggJHBfcGF0aCBpcyB1bmRlciB0aGUgJHBfZGlyIHRyZWUuIE9yLAogIC8vICAgc2FpZCBpbiBhb
iBvdGhlciB3YXksIGlmIHRoZSBmaWxlIG9yIHN1Yi1kaXIgJHBfcGF0aCBpcyBpbnNpZGUgdGhlIGRpcgog
IC8vICAgJHBfZGlyLgogIC8vICAgVGhlIGZ1bmN0aW9uIGluZGljYXRlcyBhbHNvIGlmIHRoZSBwYXRoIGl
zIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIGRpci4KICAvLyAgIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgcG
F0aCB3aXRoIGR1cGxpY2F0ZWQgJy8nIGxpa2UgJy8vJywgYnV0IGRvZXMgbm90CiAgLy8gICBzdXBwb3J0I
CcuJyBvciAnLi4nIHN0YXRlbWVudHMuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6
CiAgLy8gICAwIGlmICRwX3BhdGggaXMgbm90IGluc2lkZSBkaXJlY3RvcnkgJHBfZGlyCiAgLy8gICAxIGl
mICRwX3BhdGggaXMgaW5zaWRlIGRpcmVjdG9yeSAkcF9kaXIKICAvLyAgIDIgaWYgJHBfcGF0aCBpcyBleG
FjdGx5IHRoZSBzYW1lIGFzICRwX2RpcgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gUGNs
WmlwVXRpbFBhdGhJbmNsdXNpb24oJHBfZGlyLCAkcF9wYXRoKQogIHsKICAgICR2X3Jlc3VsdCA9IDE7Cgo
gICAgLy8gLS0tLS0gTG9vayBmb3IgcGF0aCBiZWdpbm5pbmcgYnkgLi8KICAgIGlmICggICAoJHBfZGlyID
09ICcuJykKICAgICAgICB8fCAoKHN0cmxlbigkcF9kaXIpID49MikgJiYgKHN1YnN0cigkcF9kaXIsIDAsI
DIpID09ICcuLycpKSkgewogICAgICAkcF9kaXIgPSBQY2xaaXBVdGlsVHJhbnNsYXRlV2luUGF0aChnZXRj
d2QoKSwgRkFMU0UpLicvJy5zdWJzdHIoJHBfZGlyLCAxKTsKICAgIH0KICAgIGlmICggICAoJHBfcGF0aCA
9PSAnLicpCiAgICAgICAgfHwgKChzdHJsZW4oJHBfcGF0aCkgPj0yKSAmJiAoc3Vic3RyKCRwX3BhdGgsID
AsIDIpID09ICcuLycpKSkgewogICAgICAkcF9wYXRoID0gUGNsWmlwVXRpbFRyYW5zbGF0ZVdpblBhdGgoZ
2V0Y3dkKCksIEZBTFNFKS4nLycuc3Vic3RyKCRwX3BhdGgsIDEpOwogICAgfQoKICAgIC8vIC0tLS0tIEV4
cGxvZGUgZGlyIGFuZCBwYXRoIGJ5IGRpcmVjdG9yeSBzZXBhcmF0b3IKICAgICR2X2xpc3RfZGlyID0gZXh
wbG9kZSgiLyIsICRwX2Rpcik7CiAgICAkdl9saXN0X2Rpcl9zaXplID0gc2l6ZW9mKCR2X2xpc3RfZGlyKT
sKICAgICR2X2xpc3RfcGF0aCA9IGV4cGxvZGUoIi8iLCAkcF9wYXRoKTsKICAgICR2X2xpc3RfcGF0aF9za
XplID0gc2l6ZW9mKCR2X2xpc3RfcGF0aCk7CgogICAgLy8gLS0tLS0gU3R1ZHkgZGlyZWN0b3JpZXMgcGF0
aHMKICAgICRpID0gMDsKICAgICRqID0gMDsKICAgIHdoaWxlICgoJGkgPCAkdl9saXN0X2Rpcl9zaXplKSA
mJiAoJGogPCAkdl9saXN0X3BhdGhfc2l6ZSkgJiYgKCR2X3Jlc3VsdCkpIHsKCiAgICAgIC8vIC0tLS0tIE
xvb2sgZm9yIGVtcHR5IGRpciAocGF0aCByZWR1Y3Rpb24pCiAgICAgIGlmICgkdl9saXN0X2RpclskaV0gP
T0gJycpIHsKICAgICAgICAkaSsrOwogICAgICAgIGNvbnRpbnVlOwogICAgICB9CiAgICAgIGlmICgkdl9s
aXN0X3BhdGhbJGpdID09ICcnKSB7CiAgICAgICAgJGorKzsKICAgICAgICBjb250aW51ZTsKICAgICAgfQo
KICAgICAgLy8gLS0tLS0gQ29tcGFyZSB0aGUgaXRlbXMKICAgICAgaWYgKCgkdl9saXN0X2RpclskaV0gIT
0gJHZfbGlzdF9wYXRoWyRqXSkgJiYgKCR2X2xpc3RfZGlyWyRpXSAhPSAnJykgJiYgKCAkdl9saXN0X3Bhd
GhbJGpdICE9ICcnKSkgIHsKICAgICAgICAkdl9yZXN1bHQgPSAwOwogICAgICB9CgogICAgICAvLyAtLS0t
LSBOZXh0IGl0ZW1zCiAgICAgICRpKys7CiAgICAgICRqKys7CiAgICB9CgogICAgLy8gLS0tLS0gTG9vayB
pZiBldmVyeXRoaW5nIHNlZW1zIHRvIGJlIHRoZSBzYW1lCiAgICBpZiAoJHZfcmVzdWx0KSB7CiAgICAgIC
8vIC0tLS0tIFNraXAgYWxsIHRoZSBlbXB0eSBpdGVtcwogICAgICB3aGlsZSAoKCRqIDwgJHZfbGlzdF9wY
XRoX3NpemUpICYmICgkdl9saXN0X3BhdGhbJGpdID09ICcnKSkgJGorKzsKICAgICAgd2hpbGUgKCgkaSA8
ICR2X2xpc3RfZGlyX3NpemUpICYmICgkdl9saXN0X2RpclskaV0gPT0gJycpKSAkaSsrOwoKICAgICAgaWY
gKCgkaSA+PSAkdl9saXN0X2Rpcl9zaXplKSAmJiAoJGogPj0gJHZfbGlzdF9wYXRoX3NpemUpKSB7CiAgIC
AgICAgLy8gLS0tLS0gVGhlcmUgYXJlIGV4YWN0bHkgdGhlIHNhbWUKICAgICAgICAkdl9yZXN1bHQgPSAyO
wogICAgICB9CiAgICAgIGVsc2UgaWYgKCRpIDwgJHZfbGlzdF9kaXJfc2l6ZSkgewogICAgICAgIC8vIC0t
LS0tIFRoZSBwYXRoIGlzIHNob3J0ZXIgdGhhbiB0aGUgZGlyCiAgICAgICAgJHZfcmVzdWx0ID0gMDsKICA
gICAgfQogICAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy
8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IFB
jbFppcFV0aWxDb3B5QmxvY2soKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLy
AgICRwX21vZGUgOiByZWFkL3dyaXRlIGNvbXByZXNzaW9uIG1vZGUKICAvLyAgICAgICAgICAgICAwIDogc
3JjICYgZGVzdCBub3JtYWwKICAvLyAgICAgICAgICAgICAxIDogc3JjIGd6aXAsIGRlc3Qgbm9ybWFsCiAg
Ly8gICAgICAgICAgICAgMiA6IHNyYyBub3JtYWwsIGRlc3QgZ3ppcAogIC8vICAgICAgICAgICAgIDMgOiB
zcmMgJiBkZXN0IGd6aXAKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogI
GZ1bmN0aW9uIFBjbFppcFV0aWxDb3B5QmxvY2soJHBfc3JjLCAkcF9kZXN0LCAkcF9zaXplLCAkcF9tb2Rl
PTApCiAgewogICAgJHZfcmVzdWx0ID0gMTsKCiAgICBpZiAoJHBfbW9kZT09MCkKICAgIHsKICAgICAgd2h
pbGUgKCRwX3NpemUgIT0gMCkKICAgICAgewogICAgICAgICR2X3JlYWRfc2l6ZSA9ICgkcF9zaXplIDwgUE
NMWklQX1JFQURfQkxPQ0tfU0laRSA/ICRwX3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgI
CAgICAkdl9idWZmZXIgPSBAZnJlYWQoJHBfc3JjLCAkdl9yZWFkX3NpemUpOwogICAgICAgIEBmd3JpdGUo
JHBfZGVzdCwgJHZfYnVmZmVyLCAkdl9yZWFkX3NpemUpOwogICAgICAgICRwX3NpemUgLT0gJHZfcmVhZF9
zaXplOwogICAgICB9CiAgICB9CiAgICBlbHNlIGlmICgkcF9tb2RlPT0xKQogICAgewogICAgICB3aGlsZS
AoJHBfc2l6ZSAhPSAwKQogICAgICB7CiAgICAgICAgJHZfcmVhZF9zaXplID0gKCRwX3NpemUgPCBQQ0xaS
VBfUkVBRF9CTE9DS19TSVpFID8gJHBfc2l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICAg
ICR2X2J1ZmZlciA9IEBnenJlYWQoJHBfc3JjLCAkdl9yZWFkX3NpemUpOwogICAgICAgIEBmd3JpdGUoJHB
fZGVzdCwgJHZfYnVmZmVyLCAkdl9yZWFkX3NpemUpOwogICAgICAgICRwX3NpemUgLT0gJHZfcmVhZF9zaX
plOwogICAgICB9CiAgICB9CiAgICBlbHNlIGlmICgkcF9tb2RlPT0yKQogICAgewogICAgICB3aGlsZSAoJ
HBfc2l6ZSAhPSAwKQogICAgICB7CiAgICAgICAgJHZfcmVhZF9zaXplID0gKCRwX3NpemUgPCBQQ0xaSVBf
UkVBRF9CTE9DS19TSVpFID8gJHBfc2l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICAgICR
2X2J1ZmZlciA9IEBmcmVhZCgkcF9zcmMsICR2X3JlYWRfc2l6ZSk7CiAgICAgICAgQGd6d3JpdGUoJHBfZG
VzdCwgJHZfYnVmZmVyLCAkdl9yZWFkX3NpemUpOwogICAgICAgICRwX3NpemUgLT0gJHZfcmVhZF9zaXplO
wogICAgICB9CiAgICB9CiAgICBlbHNlIGlmICgkcF9tb2RlPT0zKQogICAgewogICAgICB3aGlsZSAoJHBf
c2l6ZSAhPSAwKQogICAgICB7CiAgICAgICAgJHZfcmVhZF9zaXplID0gKCRwX3NpemUgPCBQQ0xaSVBfUkV
BRF9CTE9DS19TSVpFID8gJHBfc2l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwogICAgICAgICR2X2
J1ZmZlciA9IEBnenJlYWQoJHBfc3JjLCAkdl9yZWFkX3NpemUpOwogICAgICAgIEBnendyaXRlKCRwX2Rlc
3QsICR2X2J1ZmZlciwgJHZfcmVhZF9zaXplKTsKICAgICAgICAkcF9zaXplIC09ICR2X3JlYWRfc2l6ZTsK
ICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiA
gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6
IFBjbFppcFV0aWxSZW5hbWUoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRoaXMgZnVuY3Rpb24gdHJ
pZXMgdG8gZG8gYSBzaW1wbGUgcmVuYW1lKCkgZnVuY3Rpb24uIElmIGl0IGZhaWxzLCBpdAogIC8vICAgdH
JpZXMgdG8gY29weSB0aGUgJHBfc3JjIGZpbGUgaW4gYSBuZXcgJHBfZGVzdCBmaWxlIGFuZCB0aGVuIHVub
GluayB0aGUKICAvLyAgIGZpcnN0IG9uZS4KICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAgICRwX3NyYyA6IE9s
ZCBmaWxlbmFtZQogIC8vICAgJHBfZGVzdCA6IE5ldyBmaWxlbmFtZQogIC8vIFJldHVybiBWYWx1ZXMgOgo
gIC8vICAgMSBvbiBzdWNjZXNzLCAwIG9uIGZhaWx1cmUuCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmd
W5jdGlvbiBQY2xaaXBVdGlsUmVuYW1lKCRwX3NyYywgJHBfZGVzdCkKICB7CiAgICAkdl9yZXN1bHQgPSAx
OwoKICAgIC8vIC0tLS0tIFRyeSB0byByZW5hbWUgdGhlIGZpbGVzCiAgICBpZiAoIUByZW5hbWUoJHBfc3J
jLCAkcF9kZXN0KSkgewoKICAgICAgLy8gLS0tLS0gVHJ5IHRvIGNvcHkgJiB1bmxpbmsgdGhlIHNyYwogIC
AgICBpZiAoIUBjb3B5KCRwX3NyYywgJHBfZGVzdCkpIHsKICAgICAgICAkdl9yZXN1bHQgPSAwOwogICAgI
CB9CiAgICAgIGVsc2UgaWYgKCFAdW5saW5rKCRwX3NyYykpIHsKICAgICAgICAkdl9yZXN1bHQgPSAwOwog
ICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICA
vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDog
UGNsWmlwVXRpbE9wdGlvblRleHQoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRyYW5zbGF0ZSBvcHR
pb24gdmFsdWUgaW4gdGV4dC4gTWFpbmx5IGZvciBkZWJ1ZyBwdXJwb3NlLgogIC8vIFBhcmFtZXRlcnMgOg
ogIC8vICAgJHBfb3B0aW9uIDogdGhlIG9wdGlvbiB2YWx1ZS4KICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvL
yAgIFRoZSBvcHRpb24gdGV4dCB2YWx1ZS4KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIFB
jbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdGlvbikKICB7CgogICAgJHZfbGlzdCA9IGdldF9kZWZpbmVkX2
NvbnN0YW50cygpOwogICAgZm9yIChyZXNldCgkdl9saXN0KTsgJHZfa2V5ID0ga2V5KCR2X2xpc3QpOyBuZ
Xh0KCR2X2xpc3QpKSB7CgkgICAgJHZfcHJlZml4ID0gc3Vic3RyKCR2X2tleSwgMCwgMTApOwoJICAgIGlm
ICgoICAgKCR2X3ByZWZpeCA9PSAnUENMWklQX09QVCcpCiAgICAgICAgICAgfHwgKCR2X3ByZWZpeCA9PSA
nUENMWklQX0NCXycpCiAgICAgICAgICAgfHwgKCR2X3ByZWZpeCA9PSAnUENMWklQX0FUVCcpKQoJICAgIC
AgICAmJiAoJHZfbGlzdFskdl9rZXldID09ICRwX29wdGlvbikpIHsKICAgICAgICByZXR1cm4gJHZfa2V5O
woJICAgIH0KICAgIH0KCiAgICAkdl9yZXN1bHQgPSAnVW5rbm93bic7CgogICAgcmV0dXJuICR2X3Jlc3Vs
dDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGd
W5jdGlvbiA6IFBjbFppcFV0aWxUcmFuc2xhdGVXaW5QYXRoKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8g
ICBUcmFuc2xhdGUgd2luZG93cyBwYXRoIGJ5IHJlcGxhY2luZyAnXCcgYnkgJy8nIGFuZCBvcHRpb25hbGx
5IHJlbW92aW5nCiAgLy8gICBkcml2ZSBsZXR0ZXIuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICAkcF9wYX
RoIDogcGF0aCB0byB0cmFuc2xhdGUuCiAgLy8gICAkcF9yZW1vdmVfZGlza19sZXR0ZXIgOiB0cnVlIHwgZ
mFsc2UKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAgIFRoZSBwYXRoIHRyYW5zbGF0ZWQuCiAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBQY2
xaaXBVdGlsVHJhbnNsYXRlV2luUGF0aCgkcF9wYXRoLCAkcF9yZW1vdmVfZGlza19sZXR0ZXI9dHJ1ZSkKI
CB7CiAgICBpZiAoc3RyaXN0cihwaHBfdW5hbWUoKSwgJ3dpbmRvd3MnKSkgewogICAgICAvLyAtLS0tLSBM
b29rIGZvciBwb3RlbnRpYWwgZGlzayBsZXR0ZXIKICAgICAgaWYgKCgkcF9yZW1vdmVfZGlza19sZXR0ZXI
pICYmICgoJHZfcG9zaXRpb24gPSBzdHJwb3MoJHBfcGF0aCwgJzonKSkgIT0gZmFsc2UpKSB7CiAgICAgIC
AgICAkcF9wYXRoID0gc3Vic3RyKCRwX3BhdGgsICR2X3Bvc2l0aW9uKzEpOwogICAgICB9CiAgICAgIC8vI
C0tLS0tIENoYW5nZSBwb3RlbnRpYWwgd2luZG93cyBkaXJlY3Rvcnkgc2VwYXJhdG9yCiAgICAgIGlmICgo
c3RycG9zKCRwX3BhdGgsICdcXCcpID4gMCkgfHwgKHN1YnN0cigkcF9wYXRoLCAwLDEpID09ICdcXCcpKSB
7CiAgICAgICAgICAkcF9wYXRoID0gc3RydHIoJHBfcGF0aCwgJ1xcJywgJy8nKTsKICAgICAgfQogICAgfQ
ogICAgcmV0dXJuICRwX3BhdGg7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKPz4K
###PACKDATA,FILE_END,/_importbuddy/importbuddy/lib/pclzip/pclzip.php,importbuddy/li
b/pclzip/pclzip.php
###PACKDATA,FILE_START,/classes/_migrate_database.php,importbuddy/classes/_migrate_
database.php
PD9waHAKLyoqCiAqICBIYW5kbGVzIGFsbCBTUUwgZGF0YSBtaWdyYXRpb24gZm9yIGJvdGggaW1wb3J0YnV
kZHkgYW5kIG11bHRpc2l0ZSBpbXBvcnRpbmcuCiAqICBIYW5kbGVzIHVwZGF0aW5nIHBhdGhzLCBVUkxzLC
BldGMuCiAqCiAqICBSRVFVSVJFTUVOVFM6CiAqCiAqICAxKSBTZXQgdXAgdGhlIHZhcmlhYmxlICR0aGlzL
T5kZXN0aW5hdGlvblR5cGUgdG8gdGhlIGRlc3RpbmF0aW9uIHR5cGUgaWYgbm9uLXN0YW5kYWxvbmUgKGRl
ZmF1bHQpIG9yIE11bHRpc2l0ZSBOZXR3b3JrIChhdXRvLWRldGVjdGVkKS4gVmFsaWQgdmFsdWVzOiBzdGF
uZGFsb25lLCBtdWx0aXNpdGVfaW1wb3J0LCBtdWx0aXNpdGVfbmV0d29yawogKiAgMikgTXlzcWwgc2hvdW
xkIGFscmVhZHkgYmUgY29ubmVjdGVkLgogKiAgMykgJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXSBzaG91b
GQgYmUgaW5pdGlhbGl6ZWQgd2l0aCB0aGUgREFUIGZpbGUgYXJyYXkuCiAqICA0KSBJZiBtaWdyYXRpbmcg
YSBuZXR3b3JrIC0+IG5ldHdvcmsgdGhlbiBzZXQgdXAgdGhlIHZhcmlhYmxlICR0aGlzLT5uZXR3b3JrUHJ
lZml4IHRvIGJlIHRoZSBkYXRhYmFzZSBwcmVmaXggb2YgdGhlIG5ldHdvcmsuIE5lZWRlZCB0byBhY2Nlc3
MgdXNlcnMgdGFibGVzLgogKiAgNSkgSWYgbXVsdGlzaXRlX2ltcG9ydCBpcyBERVNUSU5BVElPTiB0aGVuI
CR3cF91cGxvYWRfZGlyICh1cGxvYWRfcGF0aCBvcHRpb24pLCAkdGhpcy0+cmVzdG9yZURhdGFbJ3VwbG9h
ZF91cmwnXSAoZmlsZXVwbG9hZF91cmwgb3B0aW9uKSBtdXN0IGJlIHNldC4KICoKICogIFVTRUQgQlk6CiA
qCiAqICAxKSBJbXBvcnRCdWRkeQogKiAgMikgTXVsdGlzaXRlIEltcG9ydCAvIFJlc3RvcmUKICoKICogIE
5PVEVTOgogKgogKiAgLSBFeGFtcGxlIGluc3RhbnRpYXRpb246ICRtaWdyYXRlID0gbmV3IGJhY2t1cGJ1Z
GR5X21pZ3JhdGVEQiggJ3N0YW5kYWxvbmUnLCAkdGhpcy0+X3N0YXRlICk7CiAqICAtIGRicmVwbGFjZSBj
bGFzcyBpbnRlbGxpZ2VudGx5IGlnbm9yZXMgcmVwbGFjaW5nIHZhbHVlcyB3aXRoIGlkZW50aWNhbCB2YWx
1ZXMgZm9yIHBlcmZvcm1hbmNlLgogKgogKiAgQHNpbmNlIDEuMC4xCiAqICBAYXV0aG9yIER1c3RpbiBCb2
x0b24KICogIEBwYWNrYWdlIEJhY2t1cEJ1ZGR5CiAqLwoKZ2xvYmFsICR3cGRiOwoKaWYgKCBpc3NldCggJ
GRlc3RpbmF0aW9uX3R5cGUgKSAmJiAnbXVsdGlzaXRlX2ltcG9ydCcgPT0gJGRlc3RpbmF0aW9uX3R5cGUg
KSB7IC8vIE1VTFRJU0lURSBJTVBPUlQuCgoJJHN0YXRlID0gYXJyYXkoCgkJJ2RhdCcgICAgICAgICAgICA
gID0+IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snZGF0X2ZpbGUnXSwKCQknbWF4RXhlY3V0aW9uVGltZS
cgPT4gMzAsCgkJJ3NpdGV1cmwnICAgICAgICAgID0+ICRkZXN0aW5hdGlvbl9zaXRldXJsLAoJCSdob21ld
XJsJyAgICAgICAgICA9PiAkZGVzdGluYXRpb25faG9tZSwKCQkndXBsb2FkX3VybCcgICAgICAgPT4gJycs
IC8vIE1TIHJlbGF0ZWQgc3R1ZmYuCgkJJ2RhdGFiYXNlU2V0dGluZ3MnID0+IGFycmF5KAoJCQkncHJlZml
4JyAgICAgICAgICAgICAgICAgICAgPT4gJG11bHRpc2l0ZV9uZXR3b3JrX2RiX3ByZWZpeCwKCQkJJ21pZ3
JhdGVEYXRhYmFzZUJydXRlRm9yY2UnID0+IHRydWUsCgkJKSwKCSk7CgoJJG1pZ3JhdGUgPSBuZXcgYmFja
3VwYnVkZHlfbWlncmF0ZURCKCAkZGVzdGluYXRpb25fdHlwZSwgJHN0YXRlLCAkbXVsdGlzaXRlX25ldHdv
cmtfZGJfcHJlZml4ICk7Cn0KCi8qKgogKiBNaWdyYXRlIERCIENsYXNzIGZvciBNdWx0aXNpdGUKICovCmN
sYXNzIGJhY2t1cGJ1ZGR5X21pZ3JhdGVEQiB7CgoJLyoqCgkgKiBOdW1iZXIgb2Ygc2Vjb25kcyB0byBmdW
RnZSB1cCB0aGUgdGltZSBlbGFwc2VkIHRvIGdpdmUgYSBsaXR0bGUgd2lnZ2xlIHJvb20gc28gd2UgZG9uJ
3QgYWNjaWRlbnRseSBoaXQgdGhlIGVkZ2UgYW5kIHRpbWUgb3V0LgoJICovCgljb25zdCBUSU1FX1dJR0dM
RV9ST09NID0gMTsKCgkvKioKCSAqIE1pY3JvdGltZSBtaWdyYXRpb24gc3RhcnRlZC4KCSAqCgkgKiBAdmF
yIGludAoJICovCgl2YXIgJHN0YXJ0VGltZTsKCgkvKioKCSAqIEFycmF5IG9mIFJlc3RvcmUgRGF0YQoJIC
oKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRyZXN0b3JlRGF0YTsKCgkvKioKCSAqIFJlc3RvcmUgVHlwZ
QoJICoKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkc291cmNlVHlwZTsKCgkvKioKCSAqIERlc3RpbmF0
aW9uIFR5cGUKCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCgl2YXIgJGRlc3RpbmF0aW9uVHlwZTsKCgkvKio
KCSAqIE5ldHdvcmsgUHJlZml4CgkgKgoJICogQHZhciBzdHJpbmcKCSAqLwoJdmFyICRuZXR3b3JrUHJlZm
l4OwoKCS8qKgoJICogUHJlZml4IHRvIHVzZS4gRGVmYXVsdHMgdG8gJHRoaXMtPnJlc3RvcmVEYXRhWydkY
XRhYmFzZVNldHRpbmdzJ11bJ3ByZWZpeCddLiBBbGxvd3Mgb3ZlcnJpZGluZy4KCSAqCgkgKiBAdmFyIHN0
cmluZwoJICovCgl2YXIgJG92ZXJyaWRlUHJlZml4OwoKCS8qKgoJICogRmluYWwgcHJlZml4IHRvIHVzZS4
gSWYgbm90IG92ZXJyaWRpbmcgdGhlbiB0aHMgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgJG92ZXJyaWRlUH
JlZml4LgoJICoKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkZmluYWxQcmVmaXg7CgoJLyoqCgkgKiBBc
nJheSBvZiBvbGQgVVJMcwoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJdmFyICRvbGRVUkxzOwoKCS8qKgoJ
ICogQXJyYXkgb2YgbmV3IFVSTHMKCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkbmV3VVJMczsKCgk
vKioKCSAqIERhdGFiYXNlIHN0cmluZyByZXBsYWNlIHZhbHVlcwoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLw
oJdmFyICRvbGRGdWxsUmVwbGFjZTsKCgkvKioKCSAqIERhdGFiYXNlIG5ldyBzdHJpbmcgcmVwbGFjZSB2Y
Wx1ZXMKCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXZhciAkbmV3RnVsbFJlcGxhY2U7CgoJLyoqCgkgKiBS
ZWFsIE5ldHdvcmsgVXBsb2FkIFVSTAoJICoKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXZhciAkbmV0d29ya1V
wbG9hZFVSTFJlYWw7CgoJLyoqCgkgKiBFeGNsdWRlIHRhYmxlcwoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLw
oJdmFyICRicnV0ZWZvcmNlRXhjbHVkZWRUYWJsZXM7CgoKCS8qKgoJICogU3RhcnRzIGEgRGF0YWJhc2UgT
WlncmF0aW9uCgkgKgoJICogQHBhcmFtIHN0cmluZyAkZGVzdGluYXRpb25UeXBlICBWYWxpZCB2YWx1ZXM6
IHN0YW5kYWxvbmUsIG11bHRpc2l0ZV9pbXBvcnQsIG11bHRpc2l0ZV9uZXR3b3JrLgoJICogQHBhcmFtIGF
ycmF5ICAkcmVzdG9yZURhdGEgICAgICBBcnJheSBvZiByZXN0b3JlIHZhbHVlcy4KCSAqIEBwYXJhbSBzdH
JpbmcgJG5ldHdvcmtQcmVmaXggICAgTmV0d29yayBEYXRhYmFzZSBwcmVmaXguCgkgKiBAcGFyYW0gc3Rya
W5nICRvdmVycmlkZVByZWZpeCAgIE92ZXJycmlkZSBEYXRhYmFzZSBQcmVmaXguCgkgKi8KCWZ1bmN0aW9u
IF9fY29uc3RydWN0KCAkZGVzdGluYXRpb25UeXBlLCAkcmVzdG9yZURhdGEsICRuZXR3b3JrUHJlZml4ID0
gJycsICRvdmVycmlkZVByZWZpeCA9ICcnICkgewoKCQkkdGhpcy0+c3RhcnRUaW1lID0gbWljcm90aW1lKC
B0cnVlICk7IC8vIFN0YXJ0IHRyYWNraW5nIGZvciBlbGFwc2VkIHRpbWUuCgoJCSR0aGlzLT5kZXN0aW5hd
GlvblR5cGUgPSAkZGVzdGluYXRpb25UeXBlOwoJCSR0aGlzLT5yZXN0b3JlRGF0YSAgICAgPSAmJHJlc3Rv
cmVEYXRhOwoKCQlpZiAoICcnID09ICRvdmVycmlkZVByZWZpeCApIHsgLy8gTm90IG92ZXJyaWRpbmcgcHJ
lZml4LgoJCQkkdGhpcy0+b3ZlcnJpZGVQcmVmaXggPSAkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdGFiYXNlU2
V0dGluZ3MnXVsncHJlZml4J107CgkJCSR0aGlzLT5maW5hbFByZWZpeCAgICA9ICR0aGlzLT5yZXN0b3JlR
GF0YVsnZGF0YWJhc2VTZXR0aW5ncyddWydwcmVmaXgnXTsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cygg
J2RldGFpbHMnLCAnVXNpbmcgbm9ybWFsIG1vZGUgZGF0YWJhc2UgcHJlZml4IGJhc2VkIG9uIHNldHRpbmd
zOiBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeCAuICdgLicgKTsKCQl9IGVsc2UgeyAvLyBPdmVycmlkaW
5nIHByZWZpeC4KCQkJJHRoaXMtPm92ZXJyaWRlUHJlZml4ID0gJG92ZXJyaWRlUHJlZml4OwoJCQkkdGhpc
y0+ZmluYWxQcmVmaXggICAgPSAkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdGFiYXNlU2V0dGluZ3MnXVsncHJl
Zml4J107CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1VzaW5nIG92ZXJyaWRlIGR
hdGFiYXNlIHByZWZpeDogYCcgLiAkdGhpcy0+b3ZlcnJpZGVQcmVmaXggLiAnYC4gRmluYWwgcHJlZml4Oi
BgJyAuICR0aGlzLT5maW5hbFByZWZpeCAuICdgLicgKTsKCQl9CgoJCSR0aGlzLT5uZXR3b3JrUHJlZml4I
D0gJG5ldHdvcmtQcmVmaXg7CgkJaWYgKCAnJyA9PSAkbmV0d29ya1ByZWZpeCApIHsKCQkJJHRoaXMtPm5l
dHdvcmtQcmVmaXggPSAkdGhpcy0+b3ZlcnJpZGVQcmVmaXg7CgkJfQoKCQlwYl9iYWNrdXBidWRkeTo6c3R
hdHVzKCAnbWVzc2FnZScsICdNaWdyYXRpbmcgZGF0YWJhc2UgY29udGVudC4uLicgKTsKCQlwYl9iYWNrdX
BidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEZXN0aW5hdGlvbiBzaXRlIHRhYmxlIHByZWZpeDogJyAuI
CR0aGlzLT5vdmVycmlkZVByZWZpeCApOwoKCQlpZiAoICcnID09ICR0aGlzLT5yZXN0b3JlRGF0YVsnaG9t
ZXVybCddICkgeyAvLyBJZiBubyBob21lIHRoZW4gd2Ugc2V0IGl0IGVxdWFsIHRvIHNpdGUgVVJMLgoJCQk
kc2V0dGluZ3NbJ2hvbWV1cmwnXSA9ICR0aGlzLT5yZXN0b3JlRGF0YVsnc2l0ZXVybCddOwoJCX0KCgkJLy
8gU291cmNlIHR5cGUuIFZhbGlkIHZhbHVlczogbmV0d29yaywgbXVsdGlzaXRlX2V4cG9ydCAoc2luZ2xlI
HNpdGUgZXhwb3J0ZWQgZnJvbSBtdWx0aXNpdGUgbmV0d29yayksIHN0YW5kYWxvbmUuCgkJaWYgKCBpc3Nl
dCggJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsnaXNfbXVsdGlzaXRlJ10gKSAmJiAoIHRydWUgPT09ICR
0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ2lzX211bHRpc2l0ZSddIHx8ICd0cnVlJyA9PT0gJHRoaXMtPn
Jlc3RvcmVEYXRhWydkYXQnXVsnaXNfbXVsdGlzaXRlJ10gKSApIHsKCQkJJHRoaXMtPnNvdXJjZVR5cGUgI
CAgICA9ICdtdWx0aXNpdGVfbmV0d29yayc7CgkJCSR0aGlzLT5kZXN0aW5hdGlvblR5cGUgPSAnbXVsdGlz
aXRlX25ldHdvcmsnOwoJCX0gZWxzZWlmICggaXNzZXQoICR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ2l
zX211bHRpc2l0ZV9leHBvcnQnXSApICYmICggdHJ1ZSA9PT0gJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXV
snaXNfbXVsdGlzaXRlX2V4cG9ydCddIHx8ICd0cnVlJyA9PT0gJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnX
VsnaXNfbXVsdGlzaXRlX2V4cG9ydCddICkgKSB7CgkJCSR0aGlzLT5zb3VyY2VUeXBlID0gJ211bHRpc2l0
ZV9leHBvcnQnOwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5zb3VyY2VUeXBlID0gJ3N0YW5kYWxvbmUnOwoJCX0
KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTWlncmF0aW9uIHR5cGU6IGAnIC4gJH
RoaXMtPnNvdXJjZVR5cGUgLiAnYCB0byBgJyAuICR0aGlzLT5kZXN0aW5hdGlvblR5cGUgLiAnYC4nICk7C
gkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGVzdGluYXRpb24gU2l0ZSBVUkw6ICcg
LiAkdGhpcy0+cmVzdG9yZURhdGFbJ3NpdGV1cmwnXSApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd
kZXRhaWxzJywgJ0Rlc3RpbmF0aW9uIEhvbWUgVVJMOiAnIC4gJHRoaXMtPnJlc3RvcmVEYXRhWydob21ldX
JsJ10gKTsKCgl9IC8vIEVuZCBfX2NvbnN0cnVjdCgpLgoKCS8qKgoJICogSGFuZGxlIHRoZSBtaWdyYXRpb
24KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUuIEFsd2F5cyByZXR1cm5zIHRydWUuCgkgKi8KCXB1Ymxp
YyBmdW5jdGlvbiBtaWdyYXRlKCkgewoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1N
0YXJ0aW5nIG1pZ3JhdGUoKSBvZiBkYXRhYmFzZS4nICk7CgkJJHRoaXMtPm1pZ3JhdGVDb21tb24oKTsgLy
8gTXVzdCBydW4gYmVmb3JlIGFueSBvdGhlciBzdGVwcywgZWFjaCBjaHVuaywgdG8gY2FsY3VsYXRlIFVST
HMgZXRjLgoKCQlpZiAoIGlzX2FycmF5KCAkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdGFiYXNlU2V0dGluZ3Mn
XVsnbWlncmF0ZVJlc3VtZVN0ZXBzJ10gKSApIHsgLy8gUmVzdW1pbmcgc28gdXNlIGV4aXN0aW5nIHN0ZXB
zIGxpc3QuCgkJCSRzdGVwcyA9ICYkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnbW
lncmF0ZVJlc3VtZVN0ZXBzJ107CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1Jlc
3VtaW5nIG1pZ3JhdGUoKSBzbyB1c2luZyBzdG9yZWQgcmVzdW1lIHN0ZXBzLicgKTsKCQl9IGVsc2UgeyAv
LyBOb3QgcmVzdW1pbmcgc28gYnVpbGQgc3RlcHMgbGlzdC4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyg
gJ2RldGFpbHMnLCAnTm90IHJlc3VtaW5nIHNvIGJ1aWxkaW5nIG1pZ3JhdGUgc3RlcCBsaXN0LicgKTsKCQ
kJLy8gTWlncmF0ZSBhbnl0aGluZyBjb21tb24gdG8gYWxsIHR5cGVzLgoJCQkvLyAkc3RlcHMgPSBhcnJhe
SggJ21pZ3JhdGVDb21tb24nICk7CgkJCS8vIE1pZ3JhdGUgTmV0d29yayAtPiBOZXR3b3JrLgoJCQlpZiAo
ICdtdWx0aXNpdGVfbmV0d29yaycgPT0gJHRoaXMtPnNvdXJjZVR5cGUgJiYgJ211bHRpc2l0ZV9uZXR3b3J
rJyA9PSAkdGhpcy0+ZGVzdGluYXRpb25UeXBlICkgewoJCQkJJHN0ZXBzW10gPSAnbWlncmF0ZU5ldHdvcm
tUb05ldHdvcmsnOwoJCQl9CgkJCS8vIFN0YW5kYWxvbmUgLT4gTXVsdGlzaXRlIEltcG9ydC4KCQkJaWYgK
CAnc3RhbmRhbG9uZScgPT0gJHRoaXMtPnNvdXJjZVR5cGUgJiYgJ211bHRpc2l0ZV9pbXBvcnQnID09ICR0
aGlzLT5kZXN0aW5hdGlvblR5cGUgKSB7CgkJCQkkc3RlcHNbXSA9ICdtaWdyYXRlU3RhbmRhbG9uZVRvTXV
sdGlzaXRlSW1wb3J0JzsKCQkJfQoJCQkvLyBNdWx0aXNpdGUgRXhwb3J0IC0+IE11bHRpc2l0ZSBJbXBvcn
QuCgkJCWlmICggJ211bHRpc2l0ZV9leHBvcnQnID09ICR0aGlzLT5zb3VyY2VUeXBlICYmICdtdWx0aXNpd
GVfaW1wb3J0JyA9PSAkdGhpcy0+ZGVzdGluYXRpb25UeXBlICkgewoJCQkJJHN0ZXBzW10gPSAnbWlncmF0
ZU11bHRpc2l0ZUltcG9ydFRvTXVsdGlzaXRlRXhwb3J0JzsKCQkJfQoJCQkvLyBNdWx0aXNpdGUgRXhwb3J
0IC0+IFN0YW5kYWxvbmUuCgkJCWlmICggJ211bHRpc2l0ZV9leHBvcnQnID09ICR0aGlzLT5zb3VyY2VUeX
BlICYmICdzdGFuZGFsb25lJyA9PSAkdGhpcy0+ZGVzdGluYXRpb25UeXBlICkgewoJCQkJJHN0ZXBzW10gP
SAnbWlncmF0ZU11bHRpc2l0ZUV4cG9ydFRvU3RhbmRhbG9uZSc7CgkJCX0KCQkJJHN0ZXBzW10gPSAnX2Nh
bGN1bGF0ZU5ld09sZFVSTHMnOwoJCQkkc3RlcHN
bXSA9ICdicnV0ZUZvcmNlVGFibGVzJzsKCQkJJHN0ZXBzW10gPSAnZmluYWxpemUnOwoJCQkkc3RlcHNbXS
A9ICd2ZXJpZnlEYXRhYmFzZSc7CgkJfQoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsI
CdTdGVwcyB0byBydW46IGAnIC4gaW1wbG9kZSggJywnLCAkc3RlcHMgKSAuICdgLicgKTsKCgkJZm9yZWFj
aCAoIChhcnJheSkgJHN0ZXBzIGFzICRzdGVwICkgewoJCQkkcmVzdW1lUG9pbnQgPSAkdGhpcy0+cmVzdG9
yZURhdGFbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnbWlncmF0ZVJlc3VtZVBvaW50J107CgkJCSR0aGlzLT5yZX
N0b3JlRGF0YVsnZGF0YWJhc2VTZXR0aW5ncyddWydtaWdyYXRlUmVzdW1lUG9pbnQnXSA9ICcnOyAvLyBDb
GVhciBvdXQgbmVlZGluZyB0byByZXN1bWUgZm9yIG5vdy4KCgkJCS8vIFJ1biB0aGUgZnVuY3Rpb24uCgkJ
CXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1N0YXJ0aW5nIHN0ZXAgYCcgLiAkc3RlcCA
uICdgLicgKTsKCQkJJHJlc3VsdHMgPSBjYWxsX3VzZXJfZnVuYyggYXJyYXkoICR0aGlzLCAkc3RlcCApLC
AkcmVzdW1lUG9pbnQgKTsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRmluaXNoZ
WQgc3RlcCBgJyAuICRzdGVwIC4gJ2AuJyApOwoKCQkJaWYgKCB0cnVlID09PSAkcmVzdWx0cyApIHsgLy8g
U3VjY2VzcyBzbyBtb3ZlIHRvIG5leHQgbG9vcC4KCQkJCWFycmF5X3NoaWZ0KCAkc3RlcHMgKTsgLy8gU2h
pZnRzIHN0ZXAgb2ZmIHRoZSBmcm9udCBvZiB0aGUgYXJyYXkuCgkJCQlpZiAoICEgaXNfYXJyYXkoICRzdG
VwcyApICkgewoJCQkJCSRzdGVwcyA9IGFycmF5KCk7CgkJCQl9CgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0Y
XR1cyggJ2RldGFpbHMnLCAnRGF0YWJhc2UgbWlncmF0aW9uIHN0ZXAgYCcgLiAkc3RlcCAuICdgIGZpbmlz
aGVkIHN1Y2Nlc3NmdWxseS4nICk7CgoJCQkJaWYgKCAkdGhpcy0+bmVhclRpbWVMaW1pdCgpICkgewoJCQk
JCXJldHVybiBhcnJheSggJHN0ZXBzLCAnJyApOyAvLyBhcnJheSBvZiByZW1haW5pbmcgc3RlcHMsIG5vIH
Jlc3VtZSBwb2ludCBzaW5jZSBub3Qgd2l0aGluIGEgZnVuY3Rpb24uCgkJCQl9CgoJCQkJLy8gRG8gbm90a
GluZy4uLiB3aWxsIGp1c3QgY29udGludWUgdG8gbmV4dCBzdGVwLgoJCQl9IGVsc2VpZiAoIGlzX2FycmF5
KCAkcmVzdWx0cyApICkgeyAvLyBORUVEUyBDSFVOS0lORy4KCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXM
oICdkZXRhaWxzJywgJ01pZ3JhdGluZyB0aGUgZGF0YWJhc2UgZGlkIG5vdCBjb21wbGV0ZSBpbiB0aGUgZm
lyc3QgcGFzc3MuIENodW5raW5nIGludG8gbXVsdGlwbGUgcGFydHMuIFJlc3VtaW5nIHN0ZXAgYCcgLiAkc
3RlcCAuICdgIHNob3J0bHkgYXQgcG9pbnQgYCcgLiBwcmludF9yKCBhcnJheSggJHN0ZXBzLCAkcmVzdWx0
c1swXSApLCB0cnVlICkgLiAnYC4nICk7CgkJCQlyZXR1cm4gYXJyYXkoICRzdGVwcywgJHJlc3VsdHNbMF0
gKTsgLy8gQXJyYXkgb2Ygc3RlcHMgdG8gcnVuLCByZXN1bWUgcG9pbnQuCgkJCX0gZWxzZSB7IC8vIEZBTF
NFIG9yIHNvbWV0aGluZyB3ZWlyZC4uLgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ
0RhdGFiYXNlIG1pZ3JhdGlvbiBzdGVwIGAnIC4gJHN0ZXAgLiAnYCBmYWlsZWQuIFNlZSBsb2cgZm9yIGRl
dGFpbHMuIFJlc3VsdDogYCcgLiAkcmVzdWx0cyAuICdgLicgKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQo
JCX0gLy8gZW5kIGZvcmVhY2guCgoJCSR0aGlzLT5kaXNjb25uZWN0TGl2ZSgpOwoKCQlwYl9iYWNrdXBidW
RkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdUb29rICcgLiByb3VuZCggbWljcm90aW1lKCB0cnVlICkgLSBwY
l9iYWNrdXBidWRkeTo6JHN0YXJ0X3RpbWUsIDMgKSAuICcgc2Vjb25kcy4gRG9uZS4nICk7CgkJcGJfYmFj
a3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnRGF0YWJhc2UgY29udGVudCBtaWdyYXRlZC4nICk7Cgo
JCXJldHVybiB0cnVlOwoJfSAvLyBFbmQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKS4KCgkvKioKCSAqIERpc2
Nvbm5lY3RzIGFueSBTdGFzaCBMaXZlIGRlc3RpbmF0aW9uLgoJICoKCSAqIEByZXR1cm4gbnVsbCAgQWx3Y
XlzIHJldHVybnMgbnVsbC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGRpc2Nvbm5lY3RMaXZlKCkgewoJCXBi
X2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NoZWNraW5nIGZvciBhbnkgU3Rhc2ggTGl2ZSB
kZXN0aW5hdGlvbnMgbmVlZGluZyBkaXNjb25uZWN0ZWQuJyApOwoJCWdsb2JhbCAkd3BkYjsKCgkJLy8gR2
V0IEJhY2t1cEJ1ZGR5IG9wdGlvbnMuCgkJJGZpbmFsUHJlZml4ID0gYmFja3VwYnVkZHlfY29yZTo6ZGJFc
2NhcGUoICR0aGlzLT5maW5hbFByZWZpeCApOwoJCSRyZXN1bHQgICAgICA9ICR3cGRiLT5nZXRfdmFyKCAi
U0VMRUNUIG9wdGlvbl92YWx1ZSBGUk9NIGB7JGZpbmFsUHJlZml4fW9wdGlvbnNgIFdIRVJFIG9wdGlvbl9
uYW1lPSdwYl9iYWNrdXBidWRkeScgTElNSVQgMSIgKTsKCQlpZiAoIGZhbHNlID09PSAkcmVzdWx0ICkgew
oJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnVW5hYmxlIHRvIHJldHJpZXZlIHBiX2JhY
2t1cGJ1ZGR5IG9wdGlvbnMgZnJvbSBkYXRhYmFzZS4gU2tpcHBpbmcgZGlzY29ubmVjdExpdmUoKS4nICk7
CgkJCXJldHVybjsKCQl9CgoJCS8vIFVuc2VyaWFsaXplLgoJCSRyZXN1bHQgPSBAdW5zZXJpYWxpemUoICR
yZXN1bHQgKTsKCQlpZiAoIGZhbHNlID09PSAkcmVzdWx0ICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdH
VzKCAnZGV0YWlscycsICdDb3VsZCBub3QgdW5zZXJpYWxpemUgcmV0cmlldmVkIG9wdGlvbnMgZGF0YS4gU
2tpcHBpbmcgZGlzY29ubmVjdExpdmUoKS4nICk7CgkJCXJldHVybjsgLy8gQ291bGQgbm90IHVuc2VyaWFs
aXplLgoJCX0KCgkJLy8gQ2hlY2sgdGhhdCByZW1vdGUgb3B0aW9ucyBleGlzdHMgYW5kIGlzIHZhbGlkLgo
JCWlmICggISBpc3NldCggJHJlc3VsdFsncmVtb3RlX2Rlc3RpbmF0aW9ucyddICkgfHwgISBpc19hcnJheS
ggJHJlc3VsdFsncmVtb3RlX2Rlc3RpbmF0aW9ucyddICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0d
XMoICdkZXRhaWxzJywgJ1JlbW90ZSBkZXN0aW5hdGlvbnMgbm90IGZvdW5kIG9yIG5vdCBhcnJheS4gU2tp
cHBpbmcgZGlzY29ubmVjdExpdmUoKS4nICk7CgkJCXJldHVybjsKCQl9CgoJCS8vIExvb2sgZm9yIGEgTGl
2ZSBkZXN0aW5hdGlvbiAmIGRlbGV0ZSBpdC4KCQlmb3JlYWNoICggJHJlc3VsdFsncmVtb3RlX2Rlc3Rpbm
F0aW9ucyddIGFzICRpID0+ICRyZW1vdGVfZGVzdGluYXRpb24gKSB7CgkJCWlmICggJ2xpdmUnID09ICRyZ
W1vdGVfZGVzdGluYXRpb25bJ3R5cGUnXSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgJ0ZvdW5kIFN0YXNoIExpdmUgZGVzdGluYXRpb24uIFJlbW92aW5nLicgKTsKCQkJCXVuc2V0KCA
kcmVzdWx0WydyZW1vdGVfZGVzdGluYXRpb25zJ11bICRpIF0gKTsKCQkJfQoJCX0KCgkJLy8gUmUtc2VyaW
FsaXplLgoJCSRyZXN1bHQgPSBzZXJpYWxpemUoICRyZXN1bHQgKTsKCgkJLy8gU2F2ZSBvcHRpb25zIGJhY
2suCgkJJHdwZGItPnF1ZXJ5KCAiVVBEQVRFIGB7JGZpbmFsUHJlZml4fW9wdGlvbnNgIFNFVCBvcHRpb25f
dmFsdWU9JyIgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJHJlc3VsdCApIC4gIicgV0hFUkUgb3B
0aW9uX25hbWU9J3BiX2JhY2t1cGJ1ZGR5JyBMSU1JVCAxIiApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dX
MoICdkZXRhaWxzJywgJ01vZGlmaWVkICcgLiAkd3BkYi0+cm93c19hZmZlY3RlZCAuICcgcm93KHMpIHdoa
WxlIHVwZGF0aW5nIHBiX2JhY2t1cGJ1ZGR5IGluIG9wdGlvbnMgdGFibGUuJyApOwoJCWlmICggISBlbXB0
eSggJHdwZGItPmxhc3RfZXJyb3IgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJyw
gJ215c3FsIGVycm9yOiAnIC4gJHdwZGItPmxhc3RfZXJyb3IgKTsKCQl9CgoJCXBiX2JhY2t1cGJ1ZGR5Oj
pzdGF0dXMoICdkZXRhaWxzJywgJ0RvbmUgY2hlY2tpbmcgZm9yIGFueSBTdGFzaCBMaXZlIGRlc3RpbmF0a
W9ucyBuZWVkaW5nIGRpc2Nvbm5lY3RlZC4nICk7Cgl9IC8vIEVuZCBkaXNjb25uZWN0TGl2ZSgpLgoKCgkv
KioKCSAqIENoZWNrcyBpZiByZWFjaGluZyBleGVjdXRpb24gdGltZSBsaW1pdC4KCSAqCgkgKiBAcmV0dXJ
uIGJvb2wgIElmIG5lYXIgdGltZSBsaW1pdCBvciBub3QuCgkgKi8KCWZ1bmN0aW9uIG5lYXJUaW1lTGltaX
QoKSB7CgkJaWYgKCAnLTEnID09ICR0aGlzLT5yZXN0b3JlRGF0YVsnbWF4RXhlY3V0aW9uVGltZSddICkge
yAvLyBJZiAtMSB0aGVuIHNraXAgY2h1bmtpbmcgbW9kZS4KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkvLyBJ
ZiB3ZSBhcmUgd2l0aGluIDEgc2Vjb25kIG9mIHJlYWNoaW5nIG1heGltdW0gUEhQIHJ1bnRpbWUgdGhlbiB
zdG9wIGhlcmUgc28gdGhhdCBpdCBjYW4gYmUgcGlja2VkIHVwIGluIGFub3RoZXIgUEhQIHByb2Nlc3MuLi
4KCQlpZiAoICggKCBtaWNyb3RpbWUoIHRydWUgKSAtICR0aGlzLT5zdGFydFRpbWUgKSArIHNlbGY6OlRJT
UVfV0lHR0xFX1JPT00gKSA+PSAkdGhpcy0+cmVzdG9yZURhdGFbJ21heEV4ZWN1dGlvblRpbWUnXSApIHsK
CQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnTmVhcmluZyBsaW1pdCBvZiBhdmFpbGF
ibGUgUEhQIGNodW5raW5nIHRpbWUgb2YgYCcgLiAkdGhpcy0+cmVzdG9yZURhdGFbJ21heEV4ZWN1dGlvbl
RpbWUnXSAuICdgIHNlYy4gUmFuIGZvciAnIC4gcm91bmQoIG1pY3JvdGltZSggdHJ1ZSApIC0gJHRoaXMtP
nN0YXJ0VGltZSwgMyApIC4gJyBzZWMuJyApOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9IGVsc2UgewoJCQlyZXR1
cm4gZmFsc2U7CgkJfQoJfQoKCS8qKgoJICogTUFLRSBPTEQgVVJMUyBVTklRVUUgQU5EIFRSSU1NSU5HIEN
PUlJFU1BPTkRJTkcgTkVXIFVSTFMKCSAqCgkgKiBUaGlzIGVudGlyZSBzZWN0aW9uIGlzIGluIHBsYWNlIH
RvIHByZXZlbnQgZHVwbGljYXRlIHJlcGxhY2VtZW50cy4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUuI
EFsd2F5cyByZXR1cm5zIHRydWUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfY2FsY3VsYXRlTmV3T2xkVVJM
cygpIHsKCQkkdW5pcXVlX3VybHMgICA9ICR0aGlzLT5fYXJyYXlfcGFpcnNfdW5pcXVlX2ZpcnN0KCAkdGh
pcy0+b2xkVVJMcywgJHRoaXMtPm5ld1VSTHMgKTsKCQkkdGhpcy0+b2xkVVJMcyA9ICR1bmlxdWVfdXJsc1
swXTsKCQkkdGhpcy0+bmV3VVJMcyA9ICR1bmlxdWVfdXJsc1sxXTsKCgkJJHVuaXF1ZV91cmxzICAgICAgI
CAgID0gJHRoaXMtPl9hcnJheV9wYWlyc191bmlxdWVfZmlyc3QoICR0aGlzLT5vbGRGdWxsUmVwbGFjZSwg
JHRoaXMtPm5ld0Z1bGxSZXBsYWNlICk7CgkJJHRoaXMtPm9sZEZ1bGxSZXBsYWNlID0gJHVuaXF1ZV91cmx
zWzBdOwoJCSR0aGlzLT5uZXdGdWxsUmVwbGFjZSA9ICR1bmlxdWVfdXJsc1sxXTsKCgkJcGJfYmFja3VwYn
VkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnT2xkIFVSTHM6ICcgLiBpbXBsb2RlKCAnLCAnLCAkdGhpcy0+b
2xkVVJMcyApICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTmV3IFVSTHM6ICcg
LiBpbXBsb2RlKCAnLCAnLCAkdGhpcy0+bmV3VVJMcyApICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyg
gJ2RldGFpbHMnLCAnT2xkIGZ1bGwgcmVwbGFjZTogJyAuIGltcGxvZGUoICcsICcsICR0aGlzLT5vbGRGdW
xsUmVwbGFjZSApICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTmV3IGZ1bGwgc
mVwbGFjZTogJyAuIGltcGxvZGUoICcsICcsICR0aGlzLT5uZXdGdWxsUmVwbGFjZSApICk7CgoJCXJldHVy
biB0cnVlOwoJfQoKCS8qKgoJICogQ29tbW9uIG1pZ3JhdGlvbiBzdGVwcyBmb3IgYWxsIHNpdGVzCgkgKgo
JICogQHJldHVybiBib29sICBUcnVlLiBBbHdheXMgcmV0dXJucyB0cnVlLgoJICovCglwdWJsaWMgZnVuY3
Rpb24gbWlncmF0ZUNvbW1vbigpIHsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTd
GFydGluZyBtaWdyYXRpb24gc3RlcHMgZm9yIGBhbGxgIHNpdGVzLicgKTsKCgkJJG9sZF9hYnNwYXRoID0g
JHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsnYWJzcGF0aCddOwoJCSRuZXdfYWJzcGF0aCA9IEFCU1BBVEg
7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQUJTUEFUSCBjaGFuZ2UgZm9yIGRhdG
FiYXNlLiBPbGQgUGF0aDogJyAuICRvbGRfYWJzcGF0aCAuICcsIE5ldyBQYXRoOiAnIC4gJG5ld19hYnNwY
XRoIC4gJy4nICk7CgoJCSRvbGRfdXJsID0gJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsnc2l0ZXVybCdd
OyAgLy8gdGhlIHZhbHVlIHlvdSB3YW50IHRvIHNlYXJjaCBmb3IuCgoJCS8vIFNpdGVVUkwuCgkJaWYgKCB
zdHJpc3RyKCAkb2xkX3VybCwgJ2h0dHA6Ly93d3cuJyApIHx8IHN0cmlzdHIoICRvbGRfdXJsLCAnaHR0cH
M6Ly93d3cuJyApICkgeyAvLyBJZiBodHRwOi8vd3d3LmJsYWguLi4uIHRoZW4gYWxzbyB3ZSB3aWxsIHJlc
GxhY2UgaHR0cDovL2JsYWguLi4gYW5kIHZpY2UgdmVyc2EuCgkJCSRvbGRfdXJsX2FsdCA9IHN0cl9pcmVw
bGFjZSggJ2h0dHA6Ly93d3cuJywgJ2h0dHA6Ly8nLCAkb2xkX3VybCApOwoJCQkkb2xkX3VybF9hbHQgPSB
zdHJfaXJlcGxhY2UoICdodHRwczovL3d3dy4nLCAnaHR0cHM6Ly8nLCAkb2xkX3VybF9hbHQgKTsKCQl9IG
Vsc2UgewoJCQkkb2xkX3VybF9hbHQgPSBzdHJfaXJlcGxhY2UoICdodHRwOi8vJywgJ2h0dHA6Ly93d3cuJ
ywgJG9sZF91cmwgKTsKCQkJJG9sZF91cmxfYWx0ID0gc3RyX2lyZXBsYWNlKCAnaHR0cHM6Ly8nLCAnaHR0
cHM6Ly93d3cuJywgJG9sZF91cmxfYWx0ICk7CgkJfQoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV
0YWlscycsICdDYWxjdWxhdGVkIHNpdGUgVVJMIHVwZGF0ZS4gUHJldmlvdXMgVVJMOiBgJyAuICRvbGRfdX
JsIC4gJ2AsIE5ldyBVUkw6IGAnIC4gJHRoaXMtPnJlc3RvcmVEYXRhWydzaXRldXJsJ10gLiAnYC4nICk7C
gkJJHRoaXMtPm9sZEZ1bGxSZXBsYWNlID0gYXJyYXkoICRvbGRfdXJsLCAkb2xkX3VybF9hbHQgKTsKCQlp
ZiAoICcvJyAhPSAkb2xkX2Fic3BhdGggKSB7IC8vIE9ubHkgZG8gcmVwbGFjZSBvbiBhYnNwYXRoIGlmIGl
0IHdhcyBub3QgcHJldmlvdXNseSBhdCB0aGUgcm9vdCBhcyB0aGlzIGVhc2lseSBicmVha3MgdGhpbmdzLg
oJCQkkdGhpcy0+b2xkRnVsbFJlcGxhY2VbXSA9ICRvbGRfYWJzcGF0aDsKCQl9IGVsc2UgewoJCQlwYl9iY
WNrdXBidWRkeTo6c3RhdHVzKCAnd2FybmluZycsICdXQVJOSU5HOiBTa2lwcGluZyBBQlNQQVRIIGRhdGFi
YXNlIG1pZ3JhdGlvbnMgYXMgdGhlIHByZXZpb3VzIEFCU1BBVEggd2FzIGluIHRoZSByb290IGRpcmVjdG9
yeS4gQ2Fubm90IHNhZmVseSB1cGRhdGUgcGF0aH
MgYXQgdGhpcyBsb2NhdGlvbiBkbyBpdCBvbmx5IGJlaW5nIGEgc2luZ2xlIHNsYXNoLicgKTsKCQl9CgkJJ
HRoaXMtPm5ld0Z1bGxSZXBsYWNlID0gYXJyYXkoICR0aGlzLT5yZXN0b3JlRGF0YVsnc2l0ZXVybCddLCAk
dGhpcy0+cmVzdG9yZURhdGFbJ3NpdGV1cmwnXSApOwoJCWlmICggJy8nICE9ICRvbGRfYWJzcGF0aCApIHs
gLy8gT25seSBkbyByZXBsYWNlIG9uIGFic3BhdGggaWYgaXQgd2FzIG5vdCBwcmV2aW91c2x5IGF0IHRoZS
Byb290IGFzIHRoaXMgZWFzaWx5IGJyZWFrcyB0aGluZ3MuCgkJCSR0aGlzLT5uZXdGdWxsUmVwbGFjZVtdI
D0gJG5ld19hYnNwYXRoOwoJCX0KCgkJLy8gSE9NRVVSTC4KCQlpZiAoICR0aGlzLT5yZXN0b3JlRGF0YVsn
aG9tZXVybCddICE9ICR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ3NpdGV1cmwnXSApIHsgLy8gT2xkIGF
uZCBuZXcgaG9tZXVybCBkaWZmZXIgc28gbmVlZHMgdXBkYXRpbmcuCgoJCQlpZiAoIGVtcHR5KCAkdGhpcy
0+cmVzdG9yZURhdGFbJ2RhdCddWydob21ldXJsJ10gKSApIHsgLy8gb2xkIEJhY2t1cEJ1ZGR5IHZlcnNpb
25zIGRpZCBub3Qgc3RvcmUgdGhlIHByZXZpb3VzIGhvbWV1cmwuIEhhbmcgb250byB0aGlzIGZvciBiYWNr
d2FyZHMgY29tcGF0aWJpbGl0eSBmb3IgYSB3aGlsZS4KCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd
lcnJvcicsICdZb3VyIGN1cnJlbnQgYmFja3VwIGRvZXMgbm90IGluY2x1ZGUgYSBob21lIFVSTC4gSG9tZS
BVUkxzIHdpbGwgTk9UIGJlIHVwZGF0ZWQ7IHNpdGUgVVJMIHdpbGwgYmUgdXBkYXRlZCB0aG91Z2guICBNY
WtlIGEgbmV3IGJhY2t1cCB3aXRoIHRoZSBsYXRlc3QgQmFja3VwQnVkZHkgYmVmb3JlIG1pZ3JhdGluZyBp
ZiB5b3Ugd2lzaCB0byBmdWxseSB1cGRhdGUgaG9tZSBVUkwgY29uZmlndXJhdGlvbi4nICk7CgkJCX0gZWx
zZSB7CgkJCQkkdGhpcy0+b2xkVVJMcyA9IGFycmF5KCAkb2xkX3VybCwgJG9sZF91cmxfYWx0LCAkdGhpcy
0+cmVzdG9yZURhdGFbJ2RhdCddWydob21ldXJsJ10gKTsKCQkJCSR0aGlzLT5uZXdVUkxzID0gYXJyYXkoI
CR0aGlzLT5yZXN0b3JlRGF0YVsnc2l0ZXVybCddLCAkdGhpcy0+cmVzdG9yZURhdGFbJ3NpdGV1cmwnXSwg
JHRoaXMtPnJlc3RvcmVEYXRhWydob21ldXJsJ10gKTsKCgkJCQkkdGhpcy0+b2xkRnVsbFJlcGxhY2VbXSA
9ICR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ2hvbWV1cmwnXTsKCQkJCSR0aGlzLT5uZXdGdWxsUmVwbG
FjZVtdID0gJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsnaG9tZXVybCddOwoKCQkJCXBiX2JhY2t1cGJ1Z
GR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NhbGN1bGF0ZWQgaG9tZSBVUkwgdXBkYXRlLiBQcmV2aW91cyBV
Ukw6IGAnIC4gJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsnaG9tZXVybCddIC4gJ2AsIE5ldyBVUkw6IGA
nIC4gJHRoaXMtPnJlc3RvcmVEYXRhWydob21ldXJsJ10gLiAnYCcgKTsKCQkJfQoJCX0gZWxzZSB7IC8vIF
NpdGUgVVJMIHVwZGF0ZXMgb25seS4KCQkJJHRoaXMtPm9sZFVSTHMgPSBhcnJheSggJG9sZF91cmwsICRvb
GRfdXJsX2FsdCApOwoJCQkkdGhpcy0+bmV3VVJMcyA9IGFycmF5KCAkdGhpcy0+cmVzdG9yZURhdGFbJ3Np
dGV1cmwnXSwgJHRoaXMtPnJlc3RvcmVEYXRhWydzaXRldXJsJ10gKTsKCQl9CgoJCWlmICggaXNzZXQoICR
3cF91cGxvYWRfZGlyICkgKSB7CgkJCSR0aGlzLT5uZXR3b3JrVXBsb2FkVVJMUmVhbCA9ICR0aGlzLT5yZX
N0b3JlRGF0YVsnc2l0ZXVybCddIC4gJy8nIC4gc3RyX3JlcGxhY2UoIEFCU1BBVEgsICcnLCAkd3BfdXBsb
2FkX2RpciApOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICckdGhpcy0+bmV0d29y
a1VwbG9hZFVSTFJlYWwgPSBgJyAuICR0aGlzLT5uZXR3b3JrVXBsb2FkVVJMUmVhbCAuICdgLicgKTsKCQl
9CgoJCSR0aGlzLT5icnV0ZWZvcmNlRXhjbHVkZWRUYWJsZXMgPSBhcnJheSgKCQkJJHRoaXMtPm92ZXJyaW
RlUHJlZml4IC4gJ3Bvc3RzJywKCQkJJHRoaXMtPm92ZXJyaWRlUHJlZml4IC4gJ3VzZXJzJywgLy8gSW1wb
3J0ZWQgdXNlcnMgdGFibGUgd2lsbCB0ZW1wb3JhcmlseSBiZSBoZXJlIHNvIHRoaXMgaXMgZmluZSBmb3Ig
TVMgaW1wb3J0cy4KCQkJJHRoaXMtPm92ZXJyaWRlUHJlZml4IC4gJ3VzZXJtZXRhJywgLy8gSW1wb3J0ZWQ
gdXNlcnMgdGFibGUgd2lsbCB0ZW1wb3JhcmlseSBiZSBoZXJlIHNvIHRoaXMgaXMgZmluZSBmb3IgTVMgaW
1wb3J0cy4KCQkJJHRoaXMtPm92ZXJyaWRlUHJlZml4IC4gJ3Rlcm1zJywKCQkJJHRoaXMtPm92ZXJyaWRlU
HJlZml4IC4gJ3Rlcm1fdGF4b25vbXknLAoJCQkkdGhpcy0+b3ZlcnJpZGVQcmVmaXggLiAndGVybV9yZWxh
dGlvbnNoaXBzJywKCQkJJHRoaXMtPm92ZXJyaWRlUHJlZml4IC4gJ3Bvc3RtZXRhJywKCQkJJHRoaXMtPm9
2ZXJyaWRlUHJlZml4IC4gJ29wdGlvbnMnLAoJCQkkdGhpcy0+b3ZlcnJpZGVQcmVmaXggLiAnY29tbWVudH
MnLAoJCQkkdGhpcy0+b3ZlcnJpZGVQcmVmaXggLiAnY29tbWVudG1ldGEnLAoJCQkkdGhpcy0+b3ZlcnJpZ
GVQcmVmaXggLiAnbGlua3MnLAoJCSk7CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywg
J0ZpbmlzaGVkIG1pZ3JhdGlvbiBzdGVwcyBmb3IgYGFsbGAgc2l0ZXMuJyApOwoKCQlyZXR1cm4gdHJ1ZTs
KCX0gLy8gRW5kIG1pZ3JhdGVDb21tb24oKS4KCgoJLyoqCgkgKiBOZXR3b3JrIHRvIE5ldHdvcmsgTWlncm
F0aW9uCgkgKgoJICogQHJldHVybiBib29sICBUcnVlLiBBbHdheXMgcmV0dXJucyB0cnVlLgoJICovCglwd
WJsaWMgZnVuY3Rpb24gbWlncmF0ZU5ldHdvcmtUb05ldHdvcmsoKSB7CgkJZ2xvYmFsICR3cGRiOwoKCQlw
Yl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTdGFydGluZyBtaWdyYXRpb24gc3RlcHMgZm9
yIGBOZXR3b3JrIC0+IE5ldHdvcmtgIHNpdGVzLicgKTsKCgkJLy8gTXVsdGlzaXRlIE5ldHdvcmsgZG9tYW
luICYgcGF0aCBmcm9tIHNpdGUgdXJsLgoJCSR1cmxfcGFydHMgICAgICAgICAgICAgICAgICAgID0gcGFyc
2VfdXJsKCAkdGhpcy0+cmVzdG9yZURhdGFbJ3NpdGV1cmwnXSApOwoJCSRtdWx0aXNpdGVfZGVzdGluYXRp
b25fZG9tYWluID0gJHVybF9wYXJ0c1snaG9zdCddOwoJCWlmICggaXNzZXQoICR1cmxfcGFydHNbJ3BhdGg
nXSApICkgewoJCQkkZGVzdGluYXRpb25fcGF0aCA9IHJ0cmltKCAkdXJsX3BhcnRzWydwYXRoJ10sICcvXF
wnICkgLiAnLyc7CgkJfSBlbHNlIHsKCQkJJGRlc3RpbmF0aW9uX3BhdGggPSAnLyc7CgkJfQoKCQkkb2xkX
2RvbWFpbiA9ICR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ2RvbWFpbiddOwoJCSRvbGRfcGF0aCAgID0g
JHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsncGF0aCddOwoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCA
nZGV0YWlscycsICdNdWx0aXNpdGUgTmV0d29yayBVUkxzOiBPbGQgZG9tYWluOiBgJyAuICRvbGRfZG9tYW
luIC4gJ2A7IG5ldyBkb21haW46IGAnIC4gJG11bHRpc2l0ZV9kZXN0aW5hdGlvbl9kb21haW4gLiAnYDsgb
2xkIHBhdGg6IGAnIC4gJG9sZF9wYXRoIC4gJ2A7IG5ldyBwYXRoOiBgJyAuICRkZXN0aW5hdGlvbl9wYXRo
IC4gJ2AuJyApOwoKCQkvLyBCTE9HUyBUQUJMRQoJCS8vIFVwZGF0ZSBibG9nIHBhdGggZm9yIGFsbCBzaXR
lcyB0aGF0IGhhZCB0aGUgb2xkIGRvbWFpbiBhbmQgc3RhcnRlZCB3aXRoIHRoZSBvbGQgcGF0aCBpbiBCTE
9HUyB0YWJsZS4KCQlpZiAoICcvJyAhPSAkb2xkX3BhdGggKSB7IC8vIFVzZWQgdG8gYmUgYSBzdWJkb21ha
W4gc28gd2UgY2FuIG1vcmUgc2FmZWx5IHJlcGxhY2UuCgkJCSR3cGRiLT5xdWVyeSggJ1VQREFURSBgJyAu
ICR0aGlzLT5vdmVycmlkZVByZWZpeCAuICJibG9nc2AgU0VUIHBhdGg9UkVQTEFDRSggcGF0aCwgJyIgLiB
iYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJG9sZF9wYXRoICkgLiAiJywgJyIgLiBiYWNrdXBidWRkeV
9jb3JlOjpkYkVzY2FwZSggJGRlc3RpbmF0aW9uX3BhdGggKSAuICInKSBXSEVSRSBkb21haW49JyIgLiBiY
WNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJG9sZF9kb21haW4gKSAuICInIEFORCBwYXRoIExJS0UgJyIg
LiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJG9sZF9wYXRoICkgLiAiJSciICk7CgkJCXBiX2JhY2t
1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ01vZGlmaWVkICcgLiAkd3BkYi0+cm93c19hZmZlY3RlZC
AuICcgcm93KHMpIHdoaWxlIHVwZGF0aW5nIHBhdGhzIGluIGJsb2dzIHRhYmxlIHRvIGAnIC4gYmFja3VwY
nVkZHlfY29yZTo6ZGJFc2NhcGUoICRkZXN0aW5hdGlvbl9wYXRoICkgLiAnYCAob2xkIHBhdGggd2FzIGEg
c3ViZGlyZWN0b3J5KS4nICk7CgkJfSBlbHNlIHsgLy8gVXNlZCB0byBiZSBpbiByb290IHNvIG11Y2ggcHJ
lcGVuZCBuZXcgcGF0aC4KCQkJJHdwZGItPnF1ZXJ5KCAnVVBEQVRFIGAnIC4gJHRoaXMtPm92ZXJyaWRlUH
JlZml4IC4gImJsb2dzYCBTRVQgcGF0aD1jb25jYXQoICciIC4gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2Nhc
GUoIHJ0cmltKCAkZGVzdGluYXRpb25fcGF0aCwgJy9cXCcgKSApIC4gIicsIHBhdGggKSBXSEVSRSBkb21h
aW49JyIgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJG9sZF9kb21haW4gKSAuICInIiApOwoJCQl
wYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdNb2RpZmllZCAnIC4gJHdwZGItPnJvd3NfYW
ZmZWN0ZWQgLiAnIHJvdyhzKSB3aGlsZSB1cGRhdGluZyBwYXRocyBpbiBibG9ncyB0YWJsZSB0byBgJyAuI
GJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYXBlKCAkZGVzdGluYXRpb25fcGF0aCApIC4gJ2AgKG9sZCBwYXRo
IHdhcyByb290KS4nICk7CgkJfQoKCQlpZiAoICEgZW1wdHkoICR3cGRiLT5sYXN0X2Vycm9yICkgKSB7Cgk
JCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdteXNxbCBlcnJvcjogJyAuICR3cGRiLT5sYX
N0X2Vycm9yICk7CgkJfQoKCQkvLyBVcGRhdGUgYmxvZyBkb21haW4gZm9yIGFsbCBtYXRjaGluZyBzaXRlc
y4KCQkkd3BkYi0+cXVlcnkoICdVUERBVEUgYCcgLiAkdGhpcy0+b3ZlcnJpZGVQcmVmaXggLiAiYmxvZ3Ng
IFNFVCBkb21haW49JyIgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJG11bHRpc2l0ZV9kZXN0aW5
hdGlvbl9kb21haW4gKSAuICInIFdIRVJFIGRvbWFpbj0nIiAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYX
BlKCAkb2xkX2RvbWFpbiApIC4gIiciICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnL
CAnTW9kaWZpZWQgJyAuICR3cGRiLT5yb3dzX2FmZmVjdGVkIC4gJyByb3cocykgd2hpbGUgdXBkYXRpbmcg
ZG9tYWluIGluIGJsb2dzIHRhYmxlIHRvIGAnIC4gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoICRtdWx
0aXNpdGVfZGVzdGluYXRpb25fZG9tYWluICkgLiAnYC4nICk7CgkJaWYgKCAhIGVtcHR5KCAkd3BkYi0+bG
FzdF9lcnJvciApICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnbXlzcWwgZXJyb
3I6ICcgLiAkd3BkYi0+bGFzdF9lcnJvciApOyB9CgoJCS8vIFNJVEUgVEFCTEUKCQkvLyBVcGRhdGUgYmxv
ZyBwYXRoIGZvciBhbGwgbWF0Y2hpbmcgc2l0ZXMgaW4gU0lURSB0YWJsZS4KCQlpZiAoICRvbGRfcGF0aCA
hPSAnLycgKSB7IC8vIFVzZWQgdG8gYmUgYSBzdWJkb21haW4gc28gd2UgY2FuIG1vcmUgc2FmZWx5IHJlcG
xhY2UuCgkJCSR3cGRiLT5xdWVyeSggJ1VQREFURSBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeCAuICJza
XRlYCBTRVQgcGF0aD1SRVBMQUNFKCBwYXRoLCAnIiAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYXBlKCAk
b2xkX3BhdGggKSAuICInLCAnIiAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYXBlKCAkZGVzdGluYXRpb25
fcGF0aCApIC4gIicpIFdIRVJFIGRvbWFpbj0nIiAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYXBlKCAkb2
xkX2RvbWFpbiApIC4gIicgQU5EIHBhdGggTElLRSAnIiAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYXBlK
CAkb2xkX3BhdGggKSAuICIlJyIgKTsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAn
TW9kaWZpZWQgJyAuICR3cGRiLT5yb3dzX2FmZmVjdGVkIC4gJyByb3cocykgd2hpbGUgdXBkYXRpbmcgcGF
0aHMgaW4gc2l0ZSB0YWJsZSB0byBgJyAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYXBlKCAkZGVzdGluYX
Rpb25fcGF0aCApIC4gJ2AgKG9sZCBwYXRoIHdhcyBhIHN1YmRpcmVjdG9yeSkuJyApOwoJCX0gZWxzZSB7I
C8vIFVzZWQgdG8gYmUgaW4gcm9vdCBzbyBtdWNoIHByZXBlbmQgbmV3IHBhdGguCgkJCSR3cGRiLT5xdWVy
eSggJ1VQREFURSBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeCAuICJzaXRlYCBTRVQgcGF0aD1jb25jYXQ
oICciIC4gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoIHJ0cmltKCAkZGVzdGluYXRpb25fcGF0aCwgJy
9cXCcgKSApIC4gIicsIHBhdGggKSBXSEVSRSBkb21haW49JyIgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY
2FwZSggJG9sZF9kb21haW4gKSAuICInIiApOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWls
cycsICdNb2RpZmllZCAnIC4gJHdwZGItPnJvd3NfYWZmZWN0ZWQgLiAnIHJvdyhzKSB3aGlsZSB1cGRhdGl
uZyBwYXRocyBpbiBzaXRlIHRhYmxlIHRvIGAnIC4gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoICRkZX
N0aW5hdGlvbl9wYXRoICkgLiAnYCAob2xkIHBhdGggd2FzIHJvb3QpLicgKTsKCQl9CgoJCWlmICggISBlb
XB0eSggJHdwZGItPmxhc3RfZXJyb3IgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9y
JywgJ215c3FsIGVycm9yOiAnIC4gJHdwZGItPmxhc3RfZXJyb3IgKTsKCQl9CgoJCS8vIFVwZGF0ZSBibG9
nIGRvbWFpbiBmb3IgYWxsIG1hdGNoaW5nIHNpdGVzLgoJCSR3cGRiLT5xdWVyeSggJ1VQREFURSBgJyAuIC
R0aGlzLT5vdmVycmlkZVByZWZpeCAuICJzaXRlYCBTRVQgZG9tYWluPSciIC4gYmFja3VwYnVkZHlfY29yZ
To6ZGJFc2NhcGUoICRtdWx0aXNpdGVfZGVzdGluYXRpb25fZG9tYWluICkgLiAiJyBXSEVSRSBkb21haW49
JyIgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJG9sZF9kb21haW4gKSAuICInIiApOwoJCXBiX2J
hY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ01vZGlmaWVkICcgLiAkd3BkYi0+cm93c19hZmZlY3
RlZCAuICcgcm93KHMpIHdoaWxlIHVwZGF0aW5nIGRvbWFpbiBpbiBzaXRlIHRhYmxlIHRvIGAnIC4gYmFja
3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoICRtdWx0aXNpdGVfZGVzdGluYXRpb25fZG9tYWluICkgLiAnYC4n
ICk7CgkJaWYgKCAhIGVtcHR5KCAkd3BkYi0+bGFzdF9lcnJvciApICkgewoJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZXJyb3InLCAnbXlzcWwgZXJyb3I6ICcgLiAkd3BkYi0+bGFzdF9lcnJvciApOyB9CgoJCX
BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRha
WxzJywgJ0ZpbmlzaGVkIG1pZ3JhdGlvbiBzdGVwcyBmb3IgYE5ldHdvcmsgLT4gTmV0d29ya2Agc2l0ZXMu
JyApOwoKCQlyZXR1cm4gdHJ1ZTsKCX0gLy8gRW5kIG1pZ3JhdGVOZXR3b3JrVG9OZXR3b3JrKCkuCgoJLyo
qCgkgKiBTdGFuZGFsb25lIHRvIE11bHRpc2l0ZSBNaWdyYXRpb24KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIF
RydWUuIEFsd2F5cyByZXR1cm5zIHRydWUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBtaWdyYXRlU3RhbmRhb
G9uZVRvTXVsdGlzaXRlSW1wb3J0KCkgewoKCQlnbG9iYWwgJHdwZGI7CgkJZ2xvYmFsICR3cF92ZXJzaW9u
OwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1N0YXJ0aW5nIG1pZ3JhdGlvbiBzdGV
wcyBmb3IgYFN0YW5kYWxvbmUgLT4gTXVsdGlzaXRlIEltcG9ydGAgc2l0ZXMuJyApOwoKCQkvLyBOb3RlIG
ZvciBhbnkgZGVzdGluYXRpb24gb2YgbXVsdGlzaXRlX2ltcG9ydDogVXNlcnMgdGFibGVzIGV4aXN0IHRlb
XBvcmFyaWx5IGluIHRoZWlyIG5vcm1hbCBsb2NhdGlvbiBzbyB3ZSByZXBsYWNlIHRoZW0gbGlrZSBhIG5v
cm1hbCBzdGFuZGFsb25lIHNpdGUuIFRoZSBuZXh0IGltcG9ydCBzdGVwIHdpbGwgbWVyZ2UgdGhlbSBpbnR
vIHRoZSBtdWx0aXNpdGUgdGFibGVzLgoJCS8vIFRPRE86IGFkZCBjb2RlIGZyb20gbXNfaW1wb3J0YnVkZH
kucGhwIGludG8gaGVyZSBmb3IgYW55IHVwZGF0ZXMgaWYgbmVlZGVkLgoJCS8vIFRoZSBvbGQgdXBsb2Fkc
yBVUkwuIFN0YW5kYWxvbmUgc291cmNlIGxpa2U6IGh0dHA6Ly9nZXRiYWNrdXBidWRkeS5jb20vd3AtY29u
dGVudC91cGxvYWRzLy4gQkIgZG9lc250IGN1cnJlbnRseSBzdXBwb3J0IG1vdmVkIHVwbG9hZHMuIFVuc2h
pZnRlZCB0byBwbGFjZSB0aGVzZSByZXBsYWNlbWVudHMgRklSU1QgaW4gdGhlIGFycmF5IG9mIFVSTHMgdG
8gcmVwbGFjZS4KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdPbGQgdXBsb2FkcyBVU
kw6ICcgLiAkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdCddWydzaXRldXJsJ10gLiAnL3dwLWNvbnRlbnQvdXBs
b2FkcycgKTsKCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+b2xkVVJMcywgJHRoaXMtPnJlc3RvcmVEYXRhWyd
kYXQnXVsnc2l0ZXVybCddIC4gJy93cC1jb250ZW50L3VwbG9hZHMnICk7CgkJYXJyYXlfdW5zaGlmdCggJH
RoaXMtPm9sZEZ1bGxSZXBsYWNlLCAkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdCddWydzaXRldXJsJ10gLiAnL
3dwLWNvbnRlbnQvdXBsb2FkcycgKTsKCgkJLy8gVGhlIG5ldyBzdGFuZGFsb25lIHVwbG9hZCBVUkwuIEV4
OiBodHRwOi8vcGx1Z2luYnVkZHkuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8uIFVuc2hpZnRlZCB0byBwbGF
jZSB0aGVzZSByZXBsYWNlbWVudHMgRklSU1QgaW4gdGhlIGFycmF5IG9mIFVSTHMgdG8gcmVwbGFjZS4KCQ
lwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdOZXcgdmlydHVhbCB1cGxvYWQgVVJMIHRvI
HJlcGxhY2Ugc3RhbmRhbG9uZSB1cGxvYWQgVVJMOiAnIC4gJHRoaXMtPnJlc3RvcmVEYXRhWyd1cGxvYWRf
dXJsJ10gKTsKCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+bmV3VVJMcywgJHRoaXMtPnJlc3RvcmVEYXRhWyd
1cGxvYWRfdXJsJ10gKTsKCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+bmV3RnVsbFJlcGxhY2UsICR0aGlzLT
5yZXN0b3JlRGF0YVsndXBsb2FkX3VybCddICk7CgoJCS8vIFVwZGF0ZSB1cGxvYWRfcGF0aCBpbiBvcHRpb
25zIHRhYmxlLgoJCWlmICggdmVyc2lvbl9jb21wYXJlKCAkd3BfdmVyc2lvbiwgJzMuNScsICc+PScgKSAp
IHsgLy8gQXMgb2YgV1AgdjMuNSBzdWJzdGllcyBzaG91bGQgaGF2ZSB1cGxvYWRfcGF0aCBvcHRpb24gcmV
tb3ZlZC4KCQkJJHdwZGItPnF1ZXJ5KCAnREVMRVRFIEZST00gYCcgLiAkdGhpcy0+b3ZlcnJpZGVQcmVmaX
ggLiAib3B0aW9uc2AgV0hFUkUgb3B0aW9uX25hbWU9J3VwbG9hZF9wYXRoJyBMSU1JVCAxIiApOwoJCQlwY
l9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEZWxldGVkICcgLiAkd3BkYi0+cm93c19hZmZl
Y3RlZCAuICcgcm93KHMpIGFzIHVwbG9hZF9wYXRoIGlzIG5vIGxvbmdlciBuZWVkZWQgYnkgTXVsdGlzaXR
lLicgKTsKCQl9IGVsc2UgewoJCQkkd3BkYi0+cXVlcnkoICdVUERBVEUgYCcgLiAkdGhpcy0+b3ZlcnJpZG
VQcmVmaXggLiAib3B0aW9uc2AgU0VUIG9wdGlvbl92YWx1ZT0nIiAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiR
XNjYXBlKCBzdHJfcmVwbGFjZSggJHRoaXMtPnJlc3RvcmVEYXRhWydzaXRldXJsJ10gLiAnLycsICcnLCAk
dGhpcy0+bmV0d29ya1VwbG9hZFVSTFJlYWwgKSApIC4gIicgV0hFUkUgb3B0aW9uX25hbWU9J3VwbG9hZF9
wYXRoJyBMSU1JVCAxIiApOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdNb2RpZm
llZCAnIC4gJHdwZGItPnJvd3NfYWZmYWN0ZWQgLiAnIHJvdyhzKSB3aGlsZSB1cGRhdGluZyB1cGxvYWRzI
FVSTCBpbiBvcHRpb25zIHRhYmxlLiBOZXcgdmFsdWU6ICcgLiBzdHJfcmVwbGFjZSggJHRoaXMtPnJlc3Rv
cmVEYXRhWydzaXRldXJsJ10gLiAnLycsICcnLCAkdGhpcy0+bmV0d29ya1VwbG9hZFVSTFJlYWwgKSApOwo
JCX0KCgkJaWYgKCAhIGVtcHR5KCAkd3BkYi0+bGFzdF9lcnJvciApICkgewoJCQlwYl9iYWNrdXBidWRkeT
o6c3RhdHVzKCAnZXJyb3InLCAnbXlzcWwgZXJyb3I6ICcgLiAkd3BkYi0+bGFzdF9lcnJvciApOwoJCX0KC
gkJLy8gVXBkYXRlIHVzZXIgcm9sZXMgb3B0aW9uX25hbWUgcm93LgoJCSR3cGRiLT5xdWVyeSggJ1VQREFU
RSBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeCAuICJvcHRpb25zYCBTRVQgb3B0aW9uX25hbWU9JyIgLiA
kdGhpcy0+b3ZlcnJpZGVQcmVmaXggLiAidXNlcl9yb2xlcycgV0hFUkUgb3B0aW9uX25hbWUgTElLRSAnJV
xfdXNlclxfcm9sZXMnIExJTUlUIDEiICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnL
CAnTW9kaWZpZWQgJyAuICR3cGRiLT5yb3dzX2FmZmVjdGVkIC4gJyByb3cocykgd2hpbGUgdXBkYXRpbmcg
dXNlciByb2xlcyBvcHRpb25fbmFtZSB0byBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeCAuICd1c2VyX3J
vbGVzYC4nICk7CgoJCWlmICggISBlbXB0eSggJHdwZGItPmxhc3RfZXJyb3IgKSApIHsKCQkJcGJfYmFja3
VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ215c3FsIGVycm9yOiAnIC4gJHdwZGItPmxhc3RfZXJyb3IgK
TsKCQl9CgoJCS8vIFVwZGF0ZSBmaWxldXBsb2FkX3VybCBpbiBvcHRpb25zIHRhYmxlLgoJCSR3cGRiLT5x
dWVyeSggJ1VQREFURSBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeCAuICJvcHRpb25zYCBTRVQgb3B0aW9
uX3ZhbHVlPSciIC4gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoICR0aGlzLT5yZXN0b3JlRGF0YVsndX
Bsb2FkX3VybCddICkgLiAiJyBXSEVSRSBvcHRpb25fbmFtZT0nZmlsZXVwbG9hZF91cmwnIExJTUlUIDEiI
Ck7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTW9kaWZpZWQgJyAuICR3cGRiLT5y
b3dzX2FmZmVjdGVkIC4gJyByb3cocykgd2hpbGUgdXBkYXRpbmcgZmlsZXVwbG9hZF91cmwgaW4gb3B0aW9
ucyB0YWJsZS4gTmV3IHZhbHVlOiBgJyAuICR0aGlzLT5yZXN0b3JlRGF0YVsndXBsb2FkX3VybCddIC4gJ2
AuJyApOwoKCQlpZiAoICEgZW1wdHkoICR3cGRiLT5sYXN0X2Vycm9yICkgKSB7CgkJCXBiX2JhY2t1cGJ1Z
GR5OjpzdGF0dXMoICdlcnJvcicsICdteXNxbCBlcnJvcjogJyAuICR3cGRiLT5sYXN0X2Vycm9yICk7CgkJ
fQoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGaW5pc2hlZCBtaWdyYXRpb24gc3R
lcHMgZm9yIGBTdGFuZGFsb25lIC0+IE11bHRpc2l0ZSBJbXBvcnRgIHNpdGVzLicgKTsKCgkJcmV0dXJuIH
RydWU7Cgl9IC8vIEVuZCBtaWdyYXRlU3RhbmRhbG9uZVRvTXVsdGlzaXRlSW1wb3J0KCkuCgoKCS8qKgoJI
CogTXVsdGlzaXRlIEV4cG9ydCB0byBNdWx0aXNpdGUgSW1wb3J0IE1pZ3JhdGlvbgoJICoKCSAqIEByZXR1
cm4gYm9vbCAgVHJ1ZS4gQWx3YXlzIHJldHVybnMgdHJ1ZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIG1pZ3J
hdGVNdWx0aXNpdGVFeHBvcnRUb011bHRpc2l0ZUltcG9ydCgpIHsKCgkJZ2xvYmFsICR3cGRiLCAkd3Bfdm
Vyc2lvbjsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTdGFydGluZyBtaWdyYXRpb
24gc3RlcHMgZm9yIGBNdWx0aXNpdGUgRXhwb3J0IC0+IE11bHRpc2l0ZSBJbXBvcnRgIHNpdGVzLicgKTsK
CgkJLy8gTk9URSBmb3IgYW55IGRlc3RpbmF0aW9uIG9mIG11bHRpc2l0ZV9pbXBvcnQ6IFVzZXJzIHRhYmx
lcyBleGlzdCB0ZW1wb3JhcmlseSBpbiB0aGVpciBub3JtYWwgbG9jYXRpb24gc28gd2UgcmVwbGFjZSB0aG
VtIGxpa2UgYSBub3JtYWwgc3RhbmRhbG9uZSBzaXRlLiBUaGUgbmV4dCBpbXBvcnQgc3RlcCB3aWxsIG1lc
mdlIHRoZW0gaW50byB0aGUgbXVsdGlzaXRlIHRhYmxlcy4KCQkvLyBUaGUgb2xkIHZpcnR1YWwgdXBsb2Fk
cyBVUkwuIFN0YW5kYWxvbmUgc291cmNlIGxpa2U6IGh0dHA6Ly9nZXRiYWNrdXBidWRkeS5jb20vd3AtY29
udGVudC91cGxvYWRzLy4gQkIgZG9lc250IGN1cnJlbnRseSBzdXBwb3J0IG1vdmVkIHVwbG9hZHMuIFVuc2
hpZnRlZCB0byBwbGFjZSB0aGVzZSByZXBsYWNlbWVudHMgRklSU1QgaW4gdGhlIGFycmF5IG9mIFVSTHMgd
G8gcmVwbGFjZS4KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdPbGQgdmlydHVhbCB1
cGxvYWRzIFVSTDogJyAuICR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ3VwbG9hZF91cmwnXSApOwoJCWF
ycmF5X3Vuc2hpZnQoICR0aGlzLT5vbGRVUkxzLCAkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdCddWyd1cGxvYW
RfdXJsJ10gKTsKCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+b2xkRnVsbFJlcGxhY2UsICR0aGlzLT5yZXN0b
3JlRGF0YVsnZGF0J11bJ3VwbG9hZF91cmwnXSApOwoKCQkvLyBUaGUgbmV3IHZpcnR1YWwgdXBsb2FkIFVS
TC4gRXg6IGh0dHA6Ly9wbHVnaW5idWRkeS5jb20vd3AtY29udGVudC91cGxvYWRzLy4gVW5zaGlmdGVkIHR
vIHBsYWNlIHRoZXNlIHJlcGxhY2VtZW50cyBGSVJTVCBpbiB0aGUgYXJyYXkgb2YgVVJMcyB0byByZXBsYW
NlLgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ05ldyB2aXJ0dWFsIHVwbG9hZCBVU
kwgdG8gcmVwbGFjZSBvbGQgdmlydHVhbCB1cGxvYWRzIFVSTDogJyAuICR0aGlzLT5yZXN0b3JlRGF0YVsn
dXBsb2FkX3VybCddICk7CgkJYXJyYXlfdW5zaGlmdCggJHRoaXMtPm5ld1VSTHMsICR0aGlzLT5yZXN0b3J
lRGF0YVsndXBsb2FkX3VybCddICk7CgkJYXJyYXlfdW5zaGlmdCggJHRoaXMtPm5ld0Z1bGxSZXBsYWNlLC
AkdGhpcy0+cmVzdG9yZURhdGFbJ3VwbG9hZF91cmwnXSApOwoKCQkvLyBUaGUgb2xkIHJlYWwgZGlyZWN0I
HVwbG9hZHMgVVJMLiBTdGFuZGFsb25lIHNvdXJjZSBsaWtlOiBodHRwOi8vZ2V0YmFja3VwYnVkZHkuY29t
L3dwLWNvbnRlbnQvdXBsb2Fkcy8uIEJCIGRvZXNudCBjdXJyZW50bHkgc3VwcG9ydCBtb3ZlZCB1cGxvYWR
zLiBVbnNoaWZ0ZWQgdG8gcGxhY2UgdGhlc2UgcmVwbGFjZW1lbnRzIEZJUlNUIGluIHRoZSBhcnJheSBvZi
BVUkxzIHRvIHJlcGxhY2UuCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnT2xkIHJlY
WwgZGlyZWN0IHVwbG9hZHMgVVJMOiAnIC4gJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsndXBsb2FkX3Vy
bF9yZXdyaXRlJ10gKTsKCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+b2xkVVJMcywgJHRoaXMtPnJlc3RvcmV
EYXRhWydkYXQnXVsndXBsb2FkX3VybF9yZXdyaXRlJ10gKTsKCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+b2
xkRnVsbFJlcGxhY2UsICR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ3VwbG9hZF91cmxfcmV3cml0ZSddI
Ck7CgoJCS8vIFRoZSBuZXcgcmVhbCBkaXJlY3QgdXBsb2FkIFVSTC4gRXg6IGh0dHA6Ly9wbHVnaW5idWRk
eS5jb20vd3AtY29udGVudC91cGxvYWRzLy4gVW5zaGlmdGVkIHRvIHBsYWNlIHRoZXNlIHJlcGxhY2VtZW5
0cyBGSVJTVCBpbiB0aGUgYXJyYXkgb2YgVVJMcyB0byByZXBsYWNlLgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdG
F0dXMoICdkZXRhaWxzJywgJ05ldyByZWFsIGRpcmVjdCB1cGxvYWQgVVJMIHRvIHJlcGxhY2Ugb2xkIHZpc
nR1YWwgdXBsb2FkcyBVUkw6ICcgLiAkdGhpcy0+bmV0d29ya1VwbG9hZFVSTFJlYWwgKTsKCQlhcnJheV91
bnNoaWZ0KCAkdGhpcy0+bmV3VVJMcywgJHRoaXMtPm5ldHdvcmtVcGxvYWRVUkxSZWFsICk7CgkJYXJyYXl
fdW5zaGlmdCggJHRoaXMtPm5ld0Z1bGxSZXBsYWNlLCAkdGhpcy0+bmV0d29ya1VwbG9hZFVSTFJlYWwgKT
sKCgkJLy8gVXBkYXRlIHVwbG9hZF9wYXRoIGluIG9wdGlvbnMgdGFibGUuCgkJaWYgKCB2ZXJzaW9uX2Nvb
XBhcmUoICR3cF92ZXJzaW9uLCAnMy41JywgJz49JyApICkgeyAvLyBBcyBvZiBXUCB2My41IHN1YnN0aWVz
IHNob3VsZCBoYXZlIHVwbG9hZF9wYXRoIG9wdGlvbiByZW1vdmVkLgoJCQkkd3BkYi0+cXVlcnkoICdERUx
FVEUgRlJPTSBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeCAuICJvcHRpb25zYCBXSEVSRSBvcHRpb25fbm
FtZT0ndXBsb2FkX3BhdGgnIExJTUlUIDEiICk7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRha
WxzJywgJ0RlbGV0ZWQgJyAuICR3cGRiLT5yb3dzX2FmZmVjdGVkIC4gJyByb3cocykgYXMgdXBsb2FkX3Bh
dGggaXMgbm8gbG9uZ2VyIG5lZWRlZCBieSBNdWx0aXNpdGUuJyApOwoJCQlpZiAoICEgZW1wdHkoICR3cGR
iLT5sYXN0X2Vycm9yICkgKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnbXlzcW
wgZXJyb3I6ICcgLiAkd3BkYi0+bGFzdF9lcnJvciApOwoJCQl9CgkJfSBlbHNlIHsKCQkJJHdwZGItPnF1Z
XJ5KCAnVVBEQVRFIGAnIC4gJHRoaXMtPm92ZXJyaWRlUHJlZml4IC4gIm9wdGlvbnNgIFNFVCBvcHRpb25f
dmFsdWU9JyIgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggc3RyX3JlcGxhY2UoICR0aGlzLT5yZXN
0b3JlRGF0YVsnc2l0ZXVybCddIC4gJy8nLCAnJywgJHRoaXMtPm5ldHdvcmtVcGxvYWRVUkxSZWFsICkgKS
AuICInIFdIRVJFIG9wdGlvbl9uYW1lPSd1cGxvYWRfcGF0aCcgTElNSVQgMSIgKTsKCQkJcGJfYmFja3VwY
nVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTW9kaWZpZWQgJyAuICR3cGRiLT5yb3dzX2FmZmVjdGVkIC4g
JyByb3cocykgd2hpbGUgdXBkYXRpbmcgdXBsb2FkX3BhdGggaW4gb3B0aW9ucyB0YWJsZS4gTmV3IHZhbHV
lOiAnIC4gc3RyX3JlcGxhY2UoICR0aGlzLT5yZXN0b3JlRGF0YVsnc2l0ZXVybCddIC4gJy8nLCAnJywgJH
RoaXMtPm5ldHdvcmtVcGxvYWRVUkxSZWFsICkgKTsKCQkJaWYgKCAhIGVtcHR5KCAkd3BkYi0+bGFzdF9lc
nJvciApICkgewoJCQkJcGJfYmFja3VwYnVkZHk6
OnN0YXR1cyggJ2Vycm9yJywgJ215c3FsIGVycm9yOiAnIC4gJHdwZGItPmxhc3RfZXJyb3IgKTsKCQkJfQo
JCX0KCgkJLy8gVXBkYXRlIGZpbGV1cGxvYWRfdXJsIGluIG9wdGlvbnMgdGFibGUuCgkJJHdwZGItPnF1ZX
J5KCAnVVBEQVRFIGAnIC4gJHRoaXMtPm92ZXJyaWRlUHJlZml4IC4gIm9wdGlvbnNgIFNFVCBvcHRpb25fd
mFsdWU9JyIgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJHRoaXMtPnJlc3RvcmVEYXRhWyd1cGxv
YWRfdXJsJ10gKSAuICInIFdIRVJFIG9wdGlvbl9uYW1lPSdmaWxldXBsb2FkX3VybCcgTElNSVQgMSIgKTs
KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdNb2RpZmllZCAnIC4gJHdwZGItPnJvd3
NfYWZmZWN0ZWQgLiAnIHJvdyhzKSB3aGlsZSB1cGRhdGluZyBmaWxldXBsb2FkX3VybCBpbiBvcHRpb25zI
HRhYmxlLiBOZXcgdmFsdWU6IGAnIC4gJHRoaXMtPnJlc3RvcmVEYXRhWyd1cGxvYWRfdXJsJ10gLiAnYC4n
ICk7CgkJaWYgKCAhIGVtcHR5KCAkd3BkYi0+bGFzdF9lcnJvciApICkgewoJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZXJyb3InLCAnbXlzcWwgZXJyb3I6ICcgLiAkd3BkYi0+bGFzdF9lcnJvciApOwoJCX0KCg
kJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRmluaXNoZWQgbWlncmF0aW9uIHN0ZXBzI
GZvciBgTXVsdGlzaXRlIEV4cG9ydCAtPiBNdWx0aXNpdGUgSW1wb3J0YCBzaXRlcy4nICk7CgoJCXJldHVy
biB0cnVlOwoJfSAvLyBFbmQgbWlncmF0ZU11bHRpc2l0ZUV4cG9ydFRvTXVsdGlzaXRlSW1wb3J0KCkuCgo
KCS8qKgoJICogTXVsdGlzaXRlIEV4cG9ydCB0byBTdGFuZGFsb25lIE1pZ3JhdGlvbgoJICoKCSAqIEByZX
R1cm4gYm9vbCAgVHJ1ZS4gQWx3YXlzIHJldHVybnMgdHJ1ZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIG1pZ
3JhdGVNdWx0aXNpdGVFeHBvcnRUb1N0YW5kYWxvbmUoKSB7CgoJCWdsb2JhbCAkd3BkYjsKCQlwYl9iYWNr
dXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTdGFydGluZyBtaWdyYXRpb24gc3RlcHMgZm9yIGBNdWx
0aXNpdGUgRXhwb3J0IC0+IFN0YW5kYWxvbmVgIHNpdGVzLicgKTsKCgkJLy8gSU1QT1JUQU5UOiBVcGxvYW
QgVVJMcyBfTVVTVF8gYmUgdXBkYXRlZCBiZWZvcmUgZG9pbmcgYSBmdWxsIFVSTCByZXBsYWNlbWVudCBvc
iBlbHNlIHRoZSBmaXJzdCBwb3J0aW9uIG9mIHRoZSBVUkwgd2lsbCBiZSBtaWdyYXRlZCBzbyB0aGVzZSB3
aWxsIG5vIGxvbmdlciBtYXRjaC4gYXJyYXlfdW5zaGlmdCgpIGlzIHVzZWQgdG8gYnVtcCB0aGVzZSB0byB
0aGUgdG9wIG9mIHRoZSBsaXN0IHRvIHVwZGF0ZS4KCQkvLyBUaGVzZSB3aWxsIGhhbmRsZSBib3RoIHRoZS
BSRUFMIHVybCBodHRwOi8vLi4uL3dwLWNvbnRlbnQvYmxvZ3MuZGlyLyMjL2ZpbGVzLyB0aGF0IHRoZSB2a
XJ0dWFsIHBhdGggKGh0dHA6Ly8uLi4uL3dwLWNvbnRlbnQvdXBsb2Fkcy8pLgoJCS8vIFRoZSBvbGQgdmly
dHVhbCB1cGxvYWQgVVJMLiBFeDogaHR0cDovL2dldGJhY2t1cGJ1ZGR5LmNvbS9maWxlcy8uIFVuc2hpZnR
lZCB0byBwbGFjZSB0aGVzZSByZXBsYWNlbWVudHMgRklSU1QgaW4gdGhlIGFycmF5IG9mIFVSTHMgdG8gcm
VwbGFjZS4KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdPbGQgdmlydHVhbCB1cGxvY
WQgVVJMOiAnIC4gJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsndXBsb2FkX3VybCddICk7CgkJYXJyYXlf
dW5zaGlmdCggJHRoaXMtPm9sZFVSTHMsICR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ3VwbG9hZF91cmw
nXSApOwoJCWFycmF5X3Vuc2hpZnQoICR0aGlzLT5vbGRGdWxsUmVwbGFjZSwgJHRoaXMtPnJlc3RvcmVEYX
RhWydkYXQnXVsndXBsb2FkX3VybCddICk7CgoJCS8vIFRoZSBuZXcgc3RhbmRhbG9uZSB1cGxvYWQgVVJML
iBFeDogaHR0cDovL3BsdWdpbmJ1ZGR5LmNvbS93cC1jb250ZW50L3VwbG9hZHMvLiBVbnNoaWZ0ZWQgdG8g
cGxhY2UgdGhlc2UgcmVwbGFjZW1lbnRzIEZJUlNUIGluIHRoZSBhcnJheSBvZiBVUkxzIHRvIHJlcGxhY2U
uCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTmV3IHVwbG9hZCBVUkwgdG8gcmVwbG
FjZSB2aXJ0dWFsIHVwbG9hZCBVUkw6ICcgLiAkdGhpcy0+cmVzdG9yZURhdGFbJ3NpdGV1cmwnXSAuICcvd
3AtY29udGVudC91cGxvYWRzLycgKTsKCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+bmV3VVJMcywgJHRoaXMt
PnJlc3RvcmVEYXRhWydzaXRldXJsJ10gLiAnL3dwLWNvbnRlbnQvdXBsb2Fkcy8nICk7CgkJYXJyYXlfdW5
zaGlmdCggJHRoaXMtPm5ld0Z1bGxSZXBsYWNlLCAkdGhpcy0+cmVzdG9yZURhdGFbJ3NpdGV1cmwnXSAuIC
cvd3AtY29udGVudC91cGxvYWRzLycgKTsKCgkJLy8gT25seSB1cGRhdGUgYW5vdGhlciBVUkwgaWYgaXQgZ
GlmZmVycyAtLSB1c3VhbGx5IHdpbGwuIFRoZXkgd2lsbCBiZSB0aGUgc2FtZSBpZiB0aGUgdmlydHVhbCB1
cmwgZG9lc24ndCBleGlzdCBmb3Igc29tZSByZWFzb24gKG5vIGh0YWNjZXNzIGF2YWlsYWJpbGl0eSBzbyB
0aGUgdmlydHVhbCB1cmwgd291bGQgbWF0Y2ggdGhlIHJlYWwgdXJsKQoJCWlmICggJHRoaXMtPnJlc3Rvcm
VEYXRhWydkYXQnXVsndXBsb2FkX3VybCddICE9ICR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ3VwbG9hZ
F91cmxfcmV3cml0ZSddICkgewoJCQkvLyBUaGUgb2xkIHZpcnR1YWwgdXBsb2FkIFVSTC4gRXg6IGh0dHA6
Ly9nZXRiYWNrdXBidWRkeS5jb20vZmlsZXMvLiBVbnNoaWZ0ZWQgdG8gcGxhY2UgdGhlc2UgcmVwbGFjZW1
lbnRzIEZJUlNUIGluIHRoZSBhcnJheSBvZiBVUkxzIHRvIHJlcGxhY2UuCgkJCXBiX2JhY2t1cGJ1ZGR5Oj
pzdGF0dXMoICdkZXRhaWxzJywgJ09sZCByZWFsIHVwbG9hZCBVUkw6ICcgLiAkdGhpcy0+cmVzdG9yZURhd
GFbJ2RhdCddWyd1cGxvYWRfdXJsX3Jld3JpdGUnXSApOwoJCQlhcnJheV91bnNoaWZ0KCAkdGhpcy0+b2xk
VVJMcywgJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsndXBsb2FkX3VybF9yZXdyaXRlJ10gKTsgLy8gVGh
lIG9sZCByZWFsIHVwbG9hZCBVUkwuCgkJCWFycmF5X3Vuc2hpZnQoICR0aGlzLT5vbGRGdWxsUmVwbGFjZS
wgJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsndXBsb2FkX3VybF9yZXdyaXRlJ10gKTsKCgkJCS8vIFRoZ
SBuZXcgc3RhbmRhbG9uZSB1cGxvYWQgVVJMLiBFeDogaHR0cDovL3BsdWdpbmJ1ZGR5LmNvbS93cC1jb250
ZW50L3VwbG9hZHMvLiBVbnNoaWZ0ZWQgdG8gcGxhY2UgdGhlc2UgcmVwbGFjZW1lbnRzIEZJUlNUIGluIHR
oZSBhcnJheSBvZiBVUkxzIHRvIHJlcGxhY2UuCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaW
xzJywgJ05ldyB1cGxvYWQgVVJMIHRvIHJlcGxhY2UgcmVhbCB1cGxvYWQgVVJMOiAnIC4gJHRoaXMtPnJlc
3RvcmVEYXRhWydzaXRldXJsJ10gLiAnL3dwLWNvbnRlbnQvdXBsb2Fkcy8nICk7CgkJCWFycmF5X3Vuc2hp
ZnQoICR0aGlzLT5uZXdVUkxzLCAkdGhpcy0+cmVzdG9yZURhdGFbJ3NpdGV1cmwnXSAuICcvd3AtY29udGV
udC91cGxvYWRzLycgKTsgLy8gVGhlIG5ldyBzdGFuZGFsb25lIHVwbG9hZCBVUkwuCgkJCWFycmF5X3Vuc2
hpZnQoICR0aGlzLT5uZXdGdWxsUmVwbGFjZSwgJHRoaXMtPnJlc3RvcmVEYXRhWydzaXRldXJsJ10gLiAnL
3dwLWNvbnRlbnQvdXBsb2Fkcy8nICk7IC8vIFRoZSBuZXcgc3RhbmRhbG9uZSB1cGxvYWQgVVJMLgoJCX0K
CgkJLy8gVXBkYXRlIHVwbG9hZF9wYXRoIGluIG9wdGlvbnMgdGFibGUgdG8gYmUgZGVmYXVsdCBibGFuayB
2YWx1ZS4KCQkkd3BkYi0+cXVlcnkoICdVUERBVEUgYCcgLiAkdGhpcy0+b3ZlcnJpZGVQcmVmaXggLiAib3
B0aW9uc2AgU0VUIG9wdGlvbl92YWx1ZT0nJyBXSEVSRSBvcHRpb25fbmFtZT0ndXBsb2FkX3BhdGgnIExJT
UlUIDEiICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTW9kaWZpZWQgJyAuICR3
cGRiLT5yb3dzX2FmZmVjdGVkIC4gJyByb3cocykgd2hpbGUgdXBkYXRpbmcgdXBsb2FkcyBwYXRoIGluIG9
wdGlvbnMgdGFibGUuIE5ldyB2YWx1ZTogYGAgKGJsYW5rIGRlZmF1bHQpLicgKTsKCQlpZiAoICEgZW1wdH
koICR3cGRiLT5sYXN0X2Vycm9yICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsI
CdteXNxbCBlcnJvcjogJyAuICR3cGRiLT5sYXN0X2Vycm9yICk7CgkJfQoKCQlwYl9iYWNrdXBidWRkeTo6
c3RhdHVzKCAnZGV0YWlscycsICdGaW5pc2hlZCBtaWdyYXRpb24gc3RlcHMgZm9yIGBNdWx0aXNpdGUgRXh
wb3J0IC0+IFN0YW5kYWxvbmVgIHNpdGVzLicgKTsKCQlyZXR1cm4gdHJ1ZTsKCX0gLy8gRW5kIG1pZ3JhdG
VNdWx0aXNpdGVFeHBvcnRUb1N0YW5kYWxvbmUoKS4KCgkvLyAqKioqKioqKioqIEVORCBNVUxUSVNJVEUgR
VhQT1JUIC0+IFNUQU5EQUxPTkUgKioqKioqKioqKgoJLyoqCgkgKiBGb3JjZWQgVGFibGUgbWlncmF0aW9u
cwoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHJlc3VtZVBvaW50ICBSZXN1bWUgUG9pbnQuCgkgKi8KCXB1Ymx
pYyBmdW5jdGlvbiBicnV0ZWZvcmNlVGFibGVzKCAkcmVzdW1lUG9pbnQgPSAnJyApIHsKCgkJZ2xvYmFsIC
R3cGRiOwoJCS8vIExvb3AgdGhyb3VnaCB0aGUgdGFibGVzIG1hdGNoaW5nIHRoaXMgcHJlZml4LiBEb2VzI
E5PVCBjaGFuZ2UgZGF0YSBpbiBvdGhlciB0YWJsZXMuCgkJLy8gVGhpcyBjaGFuZ2VzIGFjdHVhbCBkYXRh
IG9uIGEgY29sdW1uIGJ5IGNvbHVtbiBiYXNpcyBmb3IgdmVyeSByb3cgaW4gZXZlcnkgdGFibGUuCgkJJHR
hYmxlcyA9IGFycmF5KCk7CgkJJHJvd3MgICA9ICR3cGRiLT5nZXRfcmVzdWx0cyggIlNFTEVDVCB0YWJsZV
9uYW1lIEFTIGB0YWJsZV9uYW1lYCBGUk9NIGluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgV0hFUkUgdGFib
GVfbmFtZSBMSUtFICciIC4gc3RyX3JlcGxhY2UoICdfJywgJ1xfJywgJHRoaXMtPm92ZXJyaWRlUHJlZml4
ICkgLiAiJScgQU5EIHRhYmxlX3NjaGVtYSA9IERBVEFCQVNFKCkiLCBBUlJBWV9BICk7CgkJZm9yZWFjaCA
oICRyb3dzIGFzICRyb3cgKSB7CgkJCSR0YWJsZXNbXSA9ICRyb3dbJ3RhYmxlX25hbWUnXTsKCQl9CgkJcG
JfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnRm91bmQgJyAuIGNvdW50KCAkcm93cyApIC4gJ
yBXb3JkUHJlc3MgdGFibGVzIGZvciBicnV0ZSBmb3JjZS4nICk7CgkJdW5zZXQoICRyb3dzICk7CgkJJGJy
dXRlZm9yY2VfdGFibGVzID0gcGJfYmFja3VwYnVkZHk6OmFycmF5X3JlbW92ZSggJHRhYmxlcywgJHRoaXM
tPmJydXRlZm9yY2VFeGNsdWRlZFRhYmxlcyApOyAvLyBSZW1vdmVzIGFsbCB0YWJsZXMgbGlzdGVkIGluIC
RleGNsdWRlZF90YWJsZXMgZnJvbSAkdGFibGVzLgoJCXVuc2V0KCAkdGFibGVzICk7CgoJCWlmICggJ211b
HRpc2l0ZV9pbXBvcnQnID09ICR0aGlzLT5kZXN0aW5hdGlvblR5cGUgKSB7CgkJCXJlcXVpcmVfb25jZSBw
Yl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvbGliL2RicmVwbGFjZS9kYnJlcGxhY2UucGhwJzs
KCQl9IGVsc2UgewoJCQlyZXF1aXJlX29uY2UgJ2ltcG9ydGJ1ZGR5L2xpYi9kYnJlcGxhY2UvZGJyZXBsYW
NlLnBocCc7CgkJfQoKCQkvLyBJbnN0YW50aWF0ZSBkYiByZXBsYWNlIGNsYXNzLgoJCSRkYnJlcGxhY2UgP
SBuZXcgcGx1Z2luYnVkZHlfZGJyZXBsYWNlKCAkdGhpcy0+c3RhcnRUaW1lLCBzZWxmOjpUSU1FX1dJR0dM
RV9ST09NLCAkdGhpcy0+cmVzdG9yZURhdGFbJ21heEV4ZWN1dGlvblRpbWUnXSApOwoKCQlpZiAoIGlzX2F
ycmF5KCAkcmVzdW1lUG9pbnQgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLC
AnUmVzdW1pbmcgYnJ1dGVmb3JjZSBzdWJzdGVwcy4gU3RlcHMgcmVtYWluaW5nOiBgJyAuIGNvdW50KCAkc
mVzdW1lUG9pbnRbMF0gKSAuICdgLicgKTsKCQkJJHN0ZXBzICAgICAgICAgICA9ICRyZXN1bWVQb2ludFsw
XTsKCQkJJHN0ZXBSZXN1bWVQb2ludCA9ICRyZXN1bWVQb2ludFsxXTsKCQl9IGVsc2UgewoJCQlwYl9iYWN
rdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGaXJzdCBydW4gb2YgYnJ1dGVmb3JjZS4gQnVpbGRpbm
cgc3Vic3RlcCBsaXN0LicgKTsKCQkJJHN0ZXBSZXN1bWVQb2ludCA9ICcnOwoKCQkJJHN0ZXBzID0gYXJyY
XkoCgkJCQlhcnJheSgKCQkJCQknUG9zdHMgdGFibGUgc2l0ZSBVUkxzLicsCgkJCQkJJ3RleHQnLAoJCQkJ
CSR0aGlzLT5vdmVycmlkZVByZWZpeCAuICdwb3N0cycsCgkJCQkJJHRoaXMtPm9sZFVSTHMsCgkJCQkJJHR
oaXMtPm5ld1VSTHMsCgkJCQkJYXJyYXkoICdwb3N0X2NvbnRlbnQnLCAncG9zdF9leGNlcnB0JywgJ3Bvc3
RfY29udGVudF9maWx0ZXJlZCcgKSwKCQkJCSksCgkJCQlhcnJheSgKCQkJCQknV29yZFByZXNzIGNvcmUgZ
GF0YWJhc2UgdGV4dCBkYXRhLicsCgkJCQkJJ3RleHQnLAoJCQkJCSR0aGlzLT5vdmVycmlkZVByZWZpeCAu
ICd1c2VycycsCgkJCQkJJHRoaXMtPm9sZFVSTHMsCgkJCQkJJHRoaXMtPm5ld1VSTHMsCgkJCQkJYXJyYXk
oICd1c2VyX3VybCcgKSwKCQkJCSksCgkJCQlhcnJheSgKCQkJCQknV29yZFByZXNzIGNvcmUgZGF0YWJhc2
UgdGV4dCBkYXRhLicsCgkJCQkJJ3RleHQnLAoJCQkJCSR0aGlzLT5vdmVycmlkZVByZWZpeCAuICdjb21tZ
W50cycsCgkJCQkJJHRoaXMtPm9sZFVSTHMsCgkJCQkJJHRoaXMtPm5ld1VSTHMsCgkJCQkJYXJyYXkoICdj
b21tZW50X2NvbnRlbnQnLCAnY29tbWVudF9hdXRob3JfdXJsJyApLAoJCQkJKSwKCQkJCWFycmF5KAoJCQk
JCSdXb3JkUHJlc3MgY29yZSBkYXRhYmFzZSB0ZXh0IGRhdGEuJywKCQkJCQkndGV4dCcsCgkJCQkJJHRoaX
MtPm92ZXJyaWRlUHJlZml4IC4gJ2xpbmtzJywKCQkJCQkkdGhpcy0+b2xkVVJMcywKCQkJCQkkdGhpcy0+b
mV3VVJMcywKCQkJCQlhcnJheSggJ2xpbmtfdXJsJywgJ2xpbmtfaW1hZ2UnLCAnbGlua190YXJnZXQnLCAn
bGlua19kZXNjcmlwdGlvbicsICdsaW5rX25vdGVzJywgJ2xpbmtfcnNzJyApLAoJCQkJKSwKCQkJCWFycmF
5KAoJCQkJCSdXb3JkUHJlc3MgY29yZSBkYXRhYmFzZSBzZXJpYWxpemVkIGRhdGEuJywKCQkJCQknc2VyaW
FsaXplZCcsCgkJCQkJJHRoaXMtPm92ZXJyaWRlUHJlZml4IC4gJ29wdGlvbnMnLAoJCQkJCSR0aGlzLT5vb
GRGdWxsUmVwbGFjZSwKCQkJCQkkdGhpcy0+bmV3RnVsbFJlcGxhY2UsCgkJCQkJYXJyYXkoICdvcHRpb25f
dmFsdWUnICksCgkJCQkpLAoJCQkJYXJyYXkoCgkJCQkJJ1dvcmRQcmVzcyBjb3JlIGRhdGFiYXNlIHNlcml
hbGl6ZWQgZGF0YS4nLAoJCQkJCSdzZXJpYWxpemVkJywKCQkJCQkkdGhpcy0+bmV0d29ya1ByZWZpeCAuIC
d1c2VybWV0YScsCgkJCQkJJHRoaXMtPm9sZEZ1bGxSZXBsYWNlLAoJCQkJCSR0aGlzLT5uZXdGdWxsUmVwb
GFjZSwKCQkJCQlhcnJheSggJ21ldGFfdmFsdWUnICksCgkJCQkpLAoJCQkJYXJyYXkoCgkJCQkJJ1dvcmRQ
cmVzcyBjb3JlIGRhdGFiYXNlIHNlcmlhbGl6ZWQ
gZGF0YS4nLAoJCQkJCSdzZXJpYWxpemVkJywKCQkJCQkkdGhpcy0+b3ZlcnJpZGVQcmVmaXggLiAncG9zdG
1ldGEnLAoJCQkJCSR0aGlzLT5vbGRGdWxsUmVwbGFjZSwKCQkJCQkkdGhpcy0+bmV3RnVsbFJlcGxhY2UsC
gkJCQkJYXJyYXkoICdtZXRhX3ZhbHVlJyApLAoJCQkJKSwKCQkJCWFycmF5KAoJCQkJCSdXb3JkUHJlc3Mg
Y29yZSBkYXRhYmFzZSBzZXJpYWxpemVkIGRhdGEuJywKCQkJCQknc2VyaWFsaXplZCcsCgkJCQkJJHRoaXM
tPm92ZXJyaWRlUHJlZml4IC4gJ2NvbW1lbnRtZXRhJywKCQkJCQkkdGhpcy0+b2xkRnVsbFJlcGxhY2UsCg
kJCQkJJHRoaXMtPm5ld0Z1bGxSZXBsYWNlLAoJCQkJCWFycmF5KCAnbWV0YV92YWx1ZScgKSwKCQkJCSksC
goJCQkpOwoKCQkJaWYgKCAhIGlzc2V0KCAkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdGFiYXNlU2V0dGluZ3Mn
XVsnbWlncmF0ZURhdGFiYXNlQnJ1dGVGb3JjZSddICkgfHwgKCB0cnVlICE9PSAkdGhpcy0+cmVzdG9yZUR
hdGFbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnbWlncmF0ZURhdGFiYXNlQnJ1dGVGb3JjZSddICkgKSB7IC8vIH
NraXAgYnJ1dGVmb3JjZS4KCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0JydXRlI
GZvcmNlIGRhdGFiYXNlIG1pZ3JhdGlvbiBza2lwcGVkIGJhc2VkIG9uIGFkdmFuY2VkIHNldHRpbmdzJyAp
OwoJCQl9IGVsc2UgeyAvLyBkb250IHNraXAgYnJ1dGVmb3JjZS4KCgkJCQlmb3JlYWNoICggJGJydXRlZm9
yY2VfdGFibGVzIGFzICRicnV0ZWZvcmNlX3RhYmxlICkgewoJCQkJCSRzdGVwc1tdID0gYXJyYXkoCgkJCQ
kJCSdCcnV0ZWZvcmNpbmcgZW50aXJlIHRhYmxlczogYCcgLiBpbXBsb2RlKCAnLCcsICRicnV0ZWZvcmNlX
3RhYmxlcyApIC4gJ2AuJywKCQkJCQkJJ2JydXRlZm9yY2VfdGFibGUnLAoJCQkJCQkkYnJ1dGVmb3JjZV90
YWJsZSwKCQkJCQkJJHRoaXMtPm9sZEZ1bGxSZXBsYWNlLAoJCQkJCQkkdGhpcy0+bmV3RnVsbFJlcGxhY2U
sCgkJCQkJKTsKCQkJCX0KCQkJfQoJCX0KCgkJZm9yZWFjaCAoIChhcnJheSkgJHN0ZXBzIGFzICRzdGVwIC
kgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdSdW5uaW5nIGJydXRlZm9yY2Ugc
3Vic3RlcCB0byBtaWdyYXRlOiBgJyAuICRzdGVwWzBdIC4gJ2AuIFN1YnN0ZXBzIHJlbWFpbmluZzogYCcg
LiBjb3VudCggJHN0ZXBzICkgLiAnYC4nICk7CgkJCWlmICggISBpc3NldCggJHRoaXMtPnJlc3RvcmVEYXR
hWydkYXRhYmFzZVNldHRpbmdzJ11bJ21pZ3JhdGVSZXN1bWVQb2ludCddICkgKSB7IC8vIFByZXZlbnQgIl
dhcm5pbmc6IENhbm5vdCBhc3NpZ24gYW4gZW1wdHkgc3RyaW5nIHRvIGEgc3RyaW5nIG9mZnNldCIgaW4gU
EhQIDcuMS4KCQkJCSR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0YWJhc2VTZXR0aW5ncyddWydtaWdyYXRlUmVz
dW1lUG9pbnQnXSA9IGFycmF5KCk7CgkJCX0KCQkJaWYgKCBpc19hcnJheSggJHRoaXMtPnJlc3RvcmVEYXR
hWydkYXRhYmFzZVNldHRpbmdzJ11bJ21pZ3JhdGVSZXN1bWVQb2ludCddICkgKSB7CgkJCQkkdGhpcy0+cm
VzdG9yZURhdGFbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnbWlncmF0ZVJlc3VtZVBvaW50J11bMV0gPSAnJzsgL
y8gQ2xlYXIgb3V0IG5lZWRpbmcgdG8gcmVzdW1lIHRoaXMgc3Vic3RlcCBmb3Igbm93LgoJCQl9CgoJCQkv
LyBSdW4gdGhlIGZ1bmN0aW9uLgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTdGF
ydGluZyBzdWJzdGVwIGAnIC4gJHN0ZXBbMF0gLiAnYC4nICk7CgkJCWlmICggJ2JydXRlZm9yY2VfdGFibG
UnID09ICRzdGVwWzFdICkgeyAvLyBUYWJsZSBicnV0ZWZvcmNlIGhhcyBkaWZmZXJlbnQgcGFyYW0gY291b
nQuCgkJCQkkcmVzdWx0cyA9IGNhbGxfdXNlcl9mdW5jKCBhcnJheSggJGRicmVwbGFjZSwgJHN0ZXBbMV0g
KSwgJHN0ZXBbMl0sICRzdGVwWzNdLCAkc3RlcFs0XSwgJHN0ZXBSZXN1bWVQb2ludCApOwoJCQl9IGVsc2U
gewoJCQkJJHJlc3VsdHMgPSBjYWxsX3VzZXJfZnVuYyggYXJyYXkoICRkYnJlcGxhY2UsICRzdGVwWzFdIC
ksICRzdGVwWzJdLCAkc3RlcFszXSwgJHN0ZXBbNF0sICRzdGVwWzVdLCAkc3RlcFJlc3VtZVBvaW50ICk7C
gkJCX0KCgkJCWlmICggdHJ1ZSA9PT0gJHJlc3VsdHMgKSB7IC8vIFN1Y2Nlc3Mgc28gbW92ZSB0byBuZXh0
IGxvb3AuCgkJCQlhcnJheV9zaGlmdCggJHN0ZXBzICk7IC8vIFNoaWZ0cyBzdGVwIG9mZiB0aGUgZnJvbnQ
gb2YgdGhlIGFycmF5LgoJCQkJaWYgKCAhIGlzX2FycmF5KCAkc3RlcHMgKSApIHsKCQkJCQkkc3RlcHMgPS
BhcnJheSgpOwoJCQkJfQoKCQkJCS8vIERvIG5vdGhpbmcuLi4gd2lsbCBqdXN0IGNvbnRpbnVlIHRvIG5le
HQgc3RlcC4KCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0RhdGFiYXNlIG1pZ3Jh
dGlvbiBzdWJzdGVwIGAnIC4gJHN0ZXBbMF0gLiAnYCBmaW5pc2hlZCBzdWNjZXNzZnVsbHkuJyApOwoKCQk
JCWlmICggJHRoaXMtPm5lYXJUaW1lTGltaXQoKSApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKC
AnZGV0YWlscycsICdSdW5uaW5nIG91dCBvZiB0aW1lIHJ1bm5pbmcgYnJ1dGVmb3JjZSBzdWJzdGVwcy4gQ
2h1bmtpbmcgc3Vic3RlcC4nICk7CgkJCQkJcmV0dXJuIGFycmF5KCBhcnJheSggJHN0ZXBzLCAnJyApICk7
IC8vIGFycmF5IG9mIHJlbWFpbmluZyBzdGVwcywgbm8gcmVzdW1lIHBvaW50IHNpbmNlIG5vdCB3aXRoaW4
gYSBmdW5jdGlvbi4KCQkJCX0KCQkJfSBlbHNlaWYgKCBpc19hcnJheSggJHJlc3VsdHMgKSApIHsgLy8gTk
VFRFMgQ0hVTktJTkcuCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTdWJzdGVwI
G1pZ3JhdGluZyB0aGUgZGF0YWJhc2UgZGlkIG5vdCBjb21wbGV0ZSBpbiB0aGUgZmlyc3QgcGFzcy4gQ2h1
bmtpbmcgaW50byBtdWx0aXBsZSBwYXJ0cy4gUmVzdW1pbmcgc3Vic3RlcCBgJyAuIHByaW50X3IoICRzdGV
wLCB0cnVlICkgLiAnYCBzaG9ydGx5IGF0IHBvaW50IGAnIC4gcHJpbnRfciggJHJlc3VsdHNbMF0sIHRydW
UgKSAuICdgLicgKTsKCQkJCXJldHVybiBhcnJheSggYXJyYXkoICRzdGVwcywgJHJlc3VsdHNbMF0gKSApO
yAvLyBBcnJheSBvZiBzdGVwcyB0byBydW4sIHJlc3VtZSBwb2ludC4KCQkJfSBlbHNlIHsgLy8gRkFMU0Ug
b3Igc29tZXRoaW5nIHdlaXJkLi4uCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRGF
0YWJhc2UgbWlncmF0aW9uIHN1YnN0ZXAgYCcgLiAkc3RlcFswXSAuICdgIGZhaWxlZC4gU2VlIGxvZyBmb3
IgZGV0YWlscy4gVGhpcyBtYXkgb25seSBiZSBhIG5vbi1mYXRhbCB3YXJuaW5nLicgKTsKCQkJCXJldHVyb
iBmYWxzZTsKCQkJfQoJCX0gLy8gZW5kIGZvcmVhY2guCgoJCS8vIFVwZGF0ZSB0YWJsZSBwcmVmaXhlcyBp
biBzb21lIFdvcmRQcmVzcyBtZXRhIGRhdGEuICR0aGlzLT5uZXR3b3JrUHJlZml4IGlzIHNldCB0byB0aGU
gbm9ybWFsIHByZWZpeCBpbiBub24tbXMgZW52aXJvbm1lbnQuCgkJJG9sZF9wcmVmaXggID0gYmFja3VwYn
VkZHlfY29yZTo6ZGJFc2NhcGUoICR0aGlzLT5yZXN0b3JlRGF0YVsnZGF0J11bJ2RiX3ByZWZpeCddICk7C
gkJJGZpbmFsUHJlZml4ID0gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoICR0aGlzLT5maW5hbFByZWZp
eCApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ09sZCBEQiBwcmVmaXg6IGAnIC4
gJG9sZF9wcmVmaXggLiAnYDsgT3ZlcnJpZGUgcHJlZml4OiBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeC
AuICdgLiBOZXcgZmluYWwgREIgcHJlZml4IChvdmVycmlkZSBkb2VzIG5vdCBhcHBseSk6IGAnIC4gJGZpb
mFsUHJlZml4IC4gJ2AuIE5ldHdvcmsgcHJlZml4OiBgJyAuICR0aGlzLT5uZXR3b3JrUHJlZml4IC4gJ2An
ICk7CgoJCWlmICggJG9sZF9wcmVmaXggIT0gJGZpbmFsUHJlZml4ICkgewoJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZGV0YWlscycsICdVcGRhdGluZyBwcmVmaXggTUVUQSBkYXRhIGluIHVzZXJtZXRhLCBldG
MuJyApOwoJCQkkd3BkYi0+cXVlcnkoICdVUERBVEUgYCcgLiAkdGhpcy0+b3ZlcnJpZGVQcmVmaXggLiAid
XNlcm1ldGFgIFNFVCBtZXRhX2tleSA9IFJFUExBQ0UobWV0YV9rZXksICciIC4gJG9sZF9wcmVmaXggLiAi
JywgJyIgLiAkZmluYWxQcmVmaXggLiAiJyApOyIgKTsgLy8gdXNlcm1ldGEgdGFibGUgdGVtcG9yYXJpbHk
gaXMgaW4gdGhlIG5ldyBzdWJzaXRlJ3MgcHJlZml4IHVudGlsIG5leHQgc3RlcC4KCQkJcGJfYmFja3VwYn
VkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTW9kaWZpZWQgJyAuICR3cGRiLT5yb3dzX2FmZmVjdGVkIC4gJ
yByb3cocykgd2hpbGUgdXBkYXRpbmcgbWV0YV9rZXlcJ3MgZm9yIERCIHByZWZpeCBpbiBzaXRlXCdzIFtz
dWJzaXRlOyB0ZW1wb3JhcnkgaWYgbXVsdGlzaXRlXSB1c2VybWV0YSB0YWJsZSBmcm9tIGAnIC4gJG9sZF9
wcmVmaXggLiAnYCB0byBgJyAuICRmaW5hbFByZWZpeCAuICdgLicgKTsKCQkJaWYgKCAhIGVtcHR5KCAkd3
BkYi0+bGFzdF9lcnJvciApICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ215c
3FsIGVycm9yOiAnIC4gJHdwZGItPmxhc3RfZXJyb3IgKTsgfQoKCQkJJHdwZGItPnF1ZXJ5KCAnVVBEQVRF
IGAnIC4gJHRoaXMtPm92ZXJyaWRlUHJlZml4IC4gIm9wdGlvbnNgIFNFVCBvcHRpb25fbmFtZSA9ICciIC4
gJGZpbmFsUHJlZml4IC4gInVzZXJfcm9sZXMnIFdIRVJFIG9wdGlvbl9uYW1lID0nIiAuICRvbGRfcHJlZm
l4IC4gInVzZXJfcm9sZXMnIExJTUlUIDEiICk7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRha
WxzJywgJ01vZGlmaWVkICcgLiAkd3BkYi0+cm93c19hZmZlY3RlZCAuICcgcm93KHMpIHdoaWxlIHVwZGF0
aW5nIG9wdGlvbl9uYW1lIHVzZXJfcm9sZXMgREIgcHJlZml4IGluIFtzdWJzaXRlIGlmIG11bHRpc2l0ZV0
gb3B0aW9ucyB0YWJsZSB0byBgJyAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYXBlKCAkZmluYWxQcmVmaX
ggKSAuICdgLicgKTsKCQkJaWYgKCAhIGVtcHR5KCAkd3BkYi0+bGFzdF9lcnJvciApICkgewoJCQkJcGJfY
mFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ215c3FsIGVycm9yOiAnIC4gJHdwZGItPmxhc3RfZXJy
b3IgKTsgfQoKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnVXBkYXRlZCBwcmVmaXg
gTUVUQSBkYXRhLicgKTsKCQl9CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ01pZ3
JhdGVkICcgLiBjb3VudCggJGJydXRlZm9yY2VfdGFibGVzICkgLiAnIHRhYmxlcyB2aWEgYnJ1dGUgZm9yY
2UuJyApOwoKCQlyZXR1cm4gdHJ1ZTsKCX0gLy8gRW5kIGJydXRlZm9yY2VUYWJsZXMoKS4KCgkvKioKCSAq
IEZpbmFsaXplIE1pZ3JhdGlvbgoJICoKCSAqIFVQREFURSBTSVRFL0hPTUUgVVJMUyB0byBwcmV2ZW50IGR
vdWJsZSByZXBsYWNlbWVudDsganVzdCBpbiBjYXNlIQoJICoKCSAqIEByZXR1cm4gYm9vbCAgVHJ1ZS4gQW
x3YXlzIHJldHVybnMgdHJ1ZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGZpbmFsaXplKCkgewoJCWdsb2Jhb
CAkd3BkYjsKCgkJaWYgKCAhIGlzc2V0KCAkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdCddWyd0YWJsZXNfc2l6
ZXMnXVsgJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsnZGJfcHJlZml4J10gLiAnb3B0aW9ucycgXSApICk
gewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdPcHRpb25zIHRhYmxlIHdhcyBub3
QgYmFja2VkIHVwLiBTa2lwcGluZyBmaW5hbGl6aW5nIGRhdGFiYXNlIFVSTHMgZm9yIF9vcHRpb25zIHRhY
mxlLicgKTsKCQl9IGVsc2UgewoJCQkvLyBVcGRhdGUgU0lURVVSTCBpbiBvcHRpb25zIHRhYmxlLiBVc3Vh
bGx5IG1hc3MgcmVwbGFjZW1lbnQgd2lsbCBjb3ZlciB0aGlzIGJ1dCBzZXQgdGhlc2UgaGVyZSBqdXN0IGl
uIGNhc2UuCgkJCSR3cGRiLT5xdWVyeSggJ1VQREFURSBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeCAuIC
JvcHRpb25zYCBTRVQgb3B0aW9uX3ZhbHVlPSciIC4gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoICR0a
GlzLT5yZXN0b3JlRGF0YVsnc2l0ZXVybCddICkgLiAiJyBXSEVSRSBvcHRpb25fbmFtZT0nc2l0ZXVybCcg
TElNSVQgMSIgKTsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTW9kaWZpZWQgJyA
uICR3cGRiLT5yb3dzX2FmZmVjdGVkIC4gJyByb3cocykgd2hpbGUgdXBkYXRpbmcgU2l0ZSBVUkwgaW4gb3
B0aW9ucyB0YWJsZSBgJyAuICR0aGlzLT5vdmVycmlkZVByZWZpeCAuICdvcHRpb25zYCB0byBgJyAuICR0a
GlzLT5yZXN0b3JlRGF0YVsnc2l0ZXVybCddIC4gJ2AuID0+ICcgLiBwcmludF9yKCAkdGhpcy0+cmVzdG9y
ZURhdGEsIHRydWUgKSApOwoJCQlpZiAoICEgZW1wdHkoICR3cGRiLT5sYXN0X2Vycm9yICkgKSB7CgkJCQl
wYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnbXlzcWwgZXJyb3I6ICcgLiAkd3BkYi0+bGFzdF
9lcnJvciApOyB9CgoJCQkvLyBVcGRhdGUgSE9NRSBVUkwgaW4gb3B0aW9ucyB0YWJsZS4gVXN1YWxseSBtY
XNzIHJlcGxhY2VtZW50IHdpbGwgY292ZXIgdGhpcyBidXQgc2V0IHRoZXNlIGhlcmUganVzdCBpbiBjYXNl
LgoJCQlpZiAoICR0aGlzLT5yZXN0b3JlRGF0YVsnaG9tZXVybCddICE9ICcnICkgewoJCQkJJHdwZGItPnF
1ZXJ5KCAnVVBEQVRFIGAnIC4gJHRoaXMtPm92ZXJyaWRlUHJlZml4IC4gIm9wdGlvbnNgIFNFVCBvcHRpb2
5fdmFsdWU9JyIgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJHRoaXMtPnJlc3RvcmVEYXRhWydob
21ldXJsJ10gKSAuICInIFdIRVJFIG9wdGlvbl9uYW1lPSdob21lJyBMSU1JVCAxIiApOwoJCQkJcGJfYmFj
a3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTW9kaWZpZWQgJyAuICR3cGRiLT5yb3dzX2FmZmVjdGV
kIC4gJyByb3cocykgd2hpbGUgdXBkYXRpbmcgSG9tZSBVUkwgaW4gb3B0aW9ucyB0YWJsZSB0byBgJyAuIC
R0aGlzLT5yZXN0b3JlRGF0YVsnaG9tZXVybCddIC4gJ2AuID0+ICcgLiBwcmludF9yKCAkdGhpcy0+cmVzd
G9yZURhdGEsIHRydWUgKSApOwoJCQkJaWYgKCAhIGVtcHR5KCAkd3BkYi0+bGFzdF9lcnJvciApICkgewoJ
CQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdteXNxbCBlcnJvcjogJyAuICR3cGRiLT5
sYXN0X2Vycm9yICk7IH0KCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoJLyoqCgkgKiBWZXJpZnkgdm
FyaW91cyBjb250ZW50cyBvZiB0aGUgZGF0YWJhc2UgYWZ0ZXIgYWxsIG1pZ3JhdGlvbiBpcyBjb21wbGV0Z
S4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUuIEFsd2F5cyByZXR1cm5zIHRydWUuCgkgKi8KCXB1Ymxp
YyBmdW5jdGlvbiB2ZXJpZnlEYXRhYmFzZSgpIHsKCQlnbG9iYWwgJHdwZGI7CgoJCSRkYl9wcmVmaXggPSA
kdGhpcy0+b3ZlcnJpZGVQcmVmaXg7CgoJCS8vIE
lmIHdwX29wdGlvbnMgd2FzIG5vdCBiYWNrZWQgdXAgdGhlbiBza2lwIHRoaXMgZnVuY3Rpb24gc2luY2Uga
XQgY2hlY2tzIHRoYXQuCgkJaWYgKCAhIGlzc2V0KCAkdGhpcy0+cmVzdG9yZURhdGFbJ2RhdCddWyd0YWJs
ZXNfc2l6ZXMnXVsgJHRoaXMtPnJlc3RvcmVEYXRhWydkYXQnXVsnZGJfcHJlZml4J10gLiAnb3B0aW9ucyc
gXSApICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdPcHRpb25zIHRhYmxlIH
dhcyBub3QgYmFja2VkIHVwLiBTa2lwcGluZyB2ZXJpZnlpbmcgdGhlIGRhdGFiYXNlLicgKTsKCQkJcmV0d
XJuIHRydWU7CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnT3B0
aW9ucyB0YWJsZSB3YXMgYmFja2VkIHVwLiBWZXJpZnlpbmcgdGhlIGRhdGFiYXNlLicgKTsKCQl9CgoJCS8
vIENoZWNrIHNpdGUgVVJMLgoJCSRyZXN1bHQgPSAkd3BkYi0+Z2V0X3ZhciggIlNFTEVDVCBvcHRpb25fdm
FsdWUgRlJPTSBgeyRkYl9wcmVmaXh9b3B0aW9uc2AgV0hFUkUgb3B0aW9uX25hbWU9J3NpdGV1cmwnIExJT
UlUIDEiICk7CgkJaWYgKCBmYWxzZSA9PT0gJHJlc3VsdCApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1
cyggJ2Vycm9yJywgJ1VuYWJsZSB0byByZXRyaWV2ZSBzaXRldXJsIGZyb20gZGF0YWJhc2UuIEEgcG9ydGl
vbiBvZiB0aGUgZGF0YWJhc2UgbWF5IG5vdCBoYXZlIGltcG9ydGVkIChvciB3aXRoIHRoZSB3cm9uZyBwcm
VmaXgpLicgKTsKCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGa
W5hbCBzaXRlIFVSTDogYCcgLiAkcmVzdWx0IC4gJ2AuJyApOwoJCQlAJHdwZGItPmZsdXNoKCk7IC8vIEZy
ZWUgbWVtb3J5LgoJCX0KCgkJLy8gQ2hlY2sgaG9tZSBVUkwuCgkJJHJlc3VsdCA9ICR3cGRiLT5nZXRfdmF
yKCAiU0VMRUNUIG9wdGlvbl92YWx1ZSBGUk9NIGB7JGRiX3ByZWZpeH1vcHRpb25zYCBXSEVSRSBvcHRpb2
5fbmFtZT0naG9tZScgTElNSVQgMSIgKTsKCQlpZiAoIGZhbHNlID09PSAkcmVzdWx0ICkgewoJCQlwYl9iY
WNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnVW5hYmxlIHRvIHJldHJpZXZlIGhvbWUgW3VybF0gZnJv
bSBkYXRhYmFzZS4gQSBwb3J0aW9uIG9mIHRoZSBkYXRhYmFzZSBtYXkgbm90IGhhdmUgaW1wb3J0ZWQgKG9
yIHdpdGggdGhlIHdyb25nIHByZWZpeCkuJyApOwoJCX0gZWxzZSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdG
F0dXMoICdkZXRhaWxzJywgJ0ZpbmFsIGhvbWUgVVJMOiBgJyAuICRyZXN1bHQgLiAnYC4nICk7CgkJfQoJC
UAkd3BkYi0+Zmx1c2goKTsgLy8gRnJlZSBtZW1vcnkuCgoJCS8vIFZlcmlmeSBtZWRpYSB1cGxvYWQgcGF0
aC4KCQkkcmVzdWx0ID0gJHdwZGItPmdldF92YXIoICJTRUxFQ1Qgb3B0aW9uX3ZhbHVlIEZST00gYHskZGJ
fcHJlZml4fW9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lPSd1cGxvYWRfcGF0aCcgTElNSVQgMSIgKTsKCQ
lpZiAoIGZhbHNlID09PSAkcmVzdWx0ICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InL
CAnVW5hYmxlIHRvIHJldHJpZXZlIHVwbG9hZF9wYXRoIGZyb20gZGF0YWJhc2UgdGFibGUgJyAuICJgeyRk
Yl9wcmVmaXh9b3B0aW9uc2AiIC4gJy4gQSBwb3J0aW9uIG9mIHRoZSBkYXRhYmFzZSBtYXkgbm90IGhhdmU
gaW1wb3J0ZWQgKG9yIHdpdGggdGhlIHdyb25nIHByZWZpeCkuJyApOwoJCQkkbWVkaWFfdXBsb2FkX3BhdG
ggPSAne0VSUl8zNDgzNDk4NC1VTktOT1dOfSc7CgkJfSBlbHNlIHsKCQkJJG1lZGlhX3VwbG9hZF9wYXRoI
D0gJHJlc3VsdDsKCQl9CgkJQCR3cGRiLT5mbHVzaCgpOyAvLyBGcmVlIG1lbW9yeS4KCgkJcGJfYmFja3Vw
YnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTWVkaWEgdXBsb2FkIHBhdGggaW4gZGF0YWJhc2Ugb3B0aW9
ucyB0YWJsZTogYCcgLiAkbWVkaWFfdXBsb2FkX3BhdGggLiAnYC4nICk7CgkJaWYgKCAnLycgPT0gc3Vic3
RyKCAkbWVkaWFfdXBsb2FkX3BhdGgsIDAsIDEgKSApIHsgLy8gQWJzb2x1dGUgcGF0aC4KCQkJaWYgKCAhI
GZpbGVfZXhpc3RzKCAkbWVkaWFfdXBsb2FkX3BhdGggKSApIHsgLy8gTWVkaWEgcGF0aCBkb2VzIG5vdCBl
eGlzdC4KCQkJCSRtZWRpYV91cGxvYWRfbWVzc2FnZSA9ICdZb3VyIG1lZGlhIHVwbG9hZCBwYXRoIGlzIGF
zc2lnbmVkIGEgZGlyZWN0b3J5IHdoaWNoIGRvZXMgbm90IGFwcGVhciB0byBleGlzdCBvbiB0aGlzIHNlcn
Zlci4gUGxlYXNlIHZlcmlmeSBpdCBpcyBjb3JyZWN0IGluIHlvdXIgV29yZFByZXNzIHNldHRpbmdzLiBDd
XJyZW50IHBhdGg6IGAnIC4gJG1lZGlhX3VwbG9hZF9wYXRoIC4gJ2AuJzsKCQkJCXBiX2JhY2t1cGJ1ZGR5
OjphbGVydCggJG1lZGlhX3VwbG9hZF9tZXNzYWdlICk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCA
nd2FybmluZycsICRtZWRpYV91cGxvYWRfbWVzc2FnZSApOwoJCQl9IGVsc2UgeyAvLyBNZWRpYSBwYXRoIG
RvZXMgZXhpc3QuCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdZb3VyIG1lZGlhI
HVwbG9hZCBwYXRoIGlzIGFzc2lnbmVkIGFuIGFic29sdXRlIHBhdGggd2hpY2ggYXBwZWFycyB0byBiZSBj
b3JyZWN0LicgKTsKCQkJfQoJCX0gZWxzZSB7IC8vIFJlbGF0aXZlIHBhdGguCgkJCXBiX2JhY2t1cGJ1ZGR
5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1lvdXIgbWVkaWEgdXBsb2FkIHBhdGggaXMgYXNzaWduZWQgYSByZW
xhdGl2ZSBwYXRoOyB2YWxpZGl0eSBub3QgdGVzdGVkLicgKTsKCQl9CgoJCXJldHVybiB0cnVlOwoKCX0gL
y8gRW5kIHZlcmlmeURhdGFiYXNlKCkuCgoJLyoqCgkgKiBUYWtlcyB0d28gYXJyYXlzLiBMb29rcyBmb3Ig
YW55IGR1cGxpY2F0ZSB2YWx1ZXMgaW4gdGhlIGZpcnN0IGFycmF5LiBUaGF0IGl0ZW0gaXMgcmVtb3ZlZC4
gVGhlIGNvcnJlc3BvbmRpbmcgaXRlbSBpbiB0aGUgc2Vjb25kIGFycmF5IGlzIHJlbW92ZWQgYWxzby4KCS
AqIFJlc2V0cyBpbmRleGVzIGFzIGEgY291cnRlc3kgd2hpbGUgbWFpbnRhaW5pbmcgb3JkZXIuCgkgKgoJI
CogQHBhcmFtIGFycmF5ICRhICBGaXJzdCBhcnJheSB0byBtYWtlIHVuaXF1ZS4KCSAqIEBwYXJhbSBhcnJh
eSAkYiAgU2Vjb25kIGFycmF5IHRoYXQgaGFzIGl0ZW1zIHJlbW92ZWQgdGhhdCB3ZXJlIGluIHRoZSBzYW1
lIHBvc2l0aW9uIGFzIHRoZSByZW1vdmVkIGR1cGxpY2F0ZXMgZm91bmQgaW4gJGEuCgkgKgoJICogQHJldH
VybiBhcnJheSAgVW5pcXVlcyBmcm9tIGZpcnN0IGFycmF5LgoJICovCglwdWJsaWMgZnVuY3Rpb24gX2Fyc
mF5X3BhaXJzX3VuaXF1ZV9maXJzdCggJGEsICRiICkgewoJCSRhX3VuaXF1ZXMgPSBhcnJheV91bmlxdWUo
ICRhICk7IC8vIEdldCB1bmlxdWUgdmFsdWVzIGluICRhLiBLZXlzIGFyZSBtYWludGFpbmVkLgoKCQkkcmV
zdWx0ICAgID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gJGFfdW5pcXVlczsKCQkkcmVzdWx0WzFdID0gYX
JyYXlfaW50ZXJzZWN0X2tleSggJGIsICRhX3VuaXF1ZXMgKTsgLy8gR2V0IHRoZSBwYXJ0IG9mIHRoZSAkY
iBhcnJheSB0aGF0IGlzIG1pc3NpbmcgZnJvbSAkYS4KCgkJJHJlc3VsdFswXSA9IGFycmF5X21lcmdlKCAk
cmVzdWx0WzBdICk7CgkJJHJlc3VsdFsxXSA9IGFycmF5X21lcmdlKCAkcmVzdWx0WzFdICk7CgkJcmV0dXJ
uICRyZXN1bHQ7Cgl9IC8vIEVuZCBfYXJyYXlfcGFpcnNfdW5pcXVlX2ZpcnN0KCkuCgp9IC8vIGVuZCBjbG
FzcyBiYWNrdXBidWRkeV9taWdyYXRlREIuCg==
###PACKDATA,FILE_END,/classes/_migrate_database.php,importbuddy/classes/_migrate_da
tabase.php
###PACKDATA,FILE_START,/classes/core.php,importbuddy/classes/core.php
PD9waHAKLyoqCiAqIEJhY2t1cEJ1ZGR5IENvcmUgQ2xhc3MKICoKICogQHBhY2thZ2UgQmFja3VwQnVkZHk
KICovCgovKioKICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgQmFja3VwQnVkZHkuCiAqCiAqIFRPRE86IEV2ZW
50dWFsbHkgYnJlYWsgb3V0IG9mIGEgbG90IG9mIHRoZXNlIGZyb20gQkIgY29yZS4gTWlncmF0aW5nIGZyb
20gb2xkIGZyYW1ld29yayB0byBuZXcgcmVzdWx0ZWQgaW4gdGhpcyBtaWQtd2F5IHRyYW5zaXRpb24gYnV0
IGl0J3MgYSBiaXQgbWVzc3kuLi4KICovCmNsYXNzIGJhY2t1cGJ1ZGR5X2NvcmUgewoKCXByaXZhdGUgc3R
hdGljICRfY2FjaGVkTG9nRGlyZWN0b3J5ID0gJyc7IC8vIENhY2hlZCBsb2cgZGlyIGZvciBnZXRMb2dEaX
JlY3RvcnkoKSB0byBwcmV2ZW50IGhhdmluZyB0byBjYWxsIFdQIHRvIHJldHJpZXZlLgoKCXB1YmxpYyBzd
GF0aWMgJHdhcm5fcGx1Z2lucyA9IGFycmF5KAoJCSd3My10b3RhbC1jYWNoZS5waHAnID0+ICdXMyBUb3Rh
bCBDYWNoZScsCgkJJ3dwLWNhY2hlLnBocCcgICAgICAgPT4gJ1dQIFN1cGVyIENhY2hlJywKCQknd29yZGZ
lbmNlLnBocCcgICAgICA9PiAnV29yZGZlbmNlJywKCSk7CgoJLyoqCgkgKiBDb252ZXJ0cyBhbiBpbnRlcn
ZhbCB0aW1lIHBlcmlvZCAobnVtZXJpYykgaW50byBhbiBhcnJheSBvZiBBcnJheSggaW50ZXJ2YWwgdGFnL
CB0aGUgZGlzcGxheSB0aXRsZSApLgoJICogUmV0dXJucyBmYWxzZSBpZiBubyBtYXRjaGluZyBpbnRlcnZh
bCBmb3VuZCByZWdpc3RlcmVkIHdpdGggV29yZFByZXNzLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGludGV
ydmFsICBDcm9uIGludGVydmFsLgoJICoKCSAqIEByZXR1cm4gYXJyYXl8ZmFsc2UgIEFycmF5KCAkdGFnLC
AkZGlzcGxheSApIG9yIGZhbHNlIGlmIGludGVydmFsIG5vdCBmb3VuZC4KCSAqLwoJcHVibGljIHN0YXRpY
yBmdW5jdGlvbiBwcmV0dHlDcm9uSW50ZXJ2YWwoICRpbnRlcnZhbCApIHsKCQkkc2NoZWR1bGVfaW50ZXJ2
YWxzID0gd3BfZ2V0X3NjaGVkdWxlcygpOwoJCWZvcmVhY2ggKCAkc2NoZWR1bGVfaW50ZXJ2YWxzIGFzICR
pbnRlcnZhbF90YWcgPT4gJHNjaGVkdWxlX2ludGVydmFsICkgewoJCQlpZiAoICRpbnRlcnZhbCA9PSAkc2
NoZWR1bGVfaW50ZXJ2YWxbJ2ludGVydmFsJ10gKSB7CgkJCQlyZXR1cm4gYXJyYXkoICRpbnRlcnZhbF90Y
WcsICRzY2hlZHVsZV9pbnRlcnZhbFsnZGlzcGxheSddICk7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOyAv
LyBOb3QgZm91bmQuCgl9CgoJLyoqCgkgKiBDb252ZXJ0IGZ1bmN0aW9uIG5hbWUgdG8gcHJldHR5IHRpdGx
lLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGZ1bmN0aW9uICBGdW5jdGlvbiBuYW1lLgoJICogQHBhcmFtIH
N0cmluZyAkYXJncyAgICAgIEFycmF5IG9mIGFyZ3VtZW50cy4KCSAqCgkgKiBAcmV0dXJuIHN0cmluZyAgU
HJldHRpZmllZCB0aXRsZS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcmV0dHlGdW5jdGlvblRp
dGxlKCAkZnVuY3Rpb24sICRhcmdzID0gYXJyYXkoKSApIHsKCQlpZiAoICdiYWNrdXBfY3JlYXRlX2RhdGF
iYXNlX2R1bXAnID09PSAkZnVuY3Rpb24gKSB7CgkJCSRmdW5jdGlvbl90aXRsZSA9ICdCYWNraW5nIHVwIG
RhdGFiYXNlJzsKCQkJaWYgKCAhIGVtcHR5KCAkYXJncyApICkgewoJCQkJLy8gVGhpcyBpcyBub3QgdXNlZ
C4KCQkJCSRzdWJfZnVuY3Rpb25fdGl0bGUgPSAnVGFibGVzOiAnIC4gaW1wbG9kZSggJywgJywgJGFyZ3Nb
MF0gKTsKCQkJfQoJCX0gZWxzZWlmICggJ2JhY2t1cF96aXBfZmlsZXMnID09PSAkZnVuY3Rpb24gKSB7Cgk
JCSRmdW5jdGlvbl90aXRsZSA9ICdaaXBwaW5nIHVwIGZpbGVzJzsKCQl9IGVsc2VpZiAoICdpbnRlZ3JpdH
lfY2hlY2snID09PSAkZnVuY3Rpb24gKSB7CgkJCSRmdW5jdGlvbl90aXRsZSA9ICdWZXJpZnlpbmcgYmFja
3VwIGZpbGUgaW50ZWdyaXR5JzsKCQl9IGVsc2VpZiAoICdwb3N0X2JhY2t1cCcgPT09ICRmdW5jdGlvbiAp
IHsKCQkJJGZ1bmN0aW9uX3RpdGxlID0gJ0NsZWFuaW5nIHVwJzsKCQl9IGVsc2VpZiAoICdtc19kb3dubG9
hZF9leHRyYWN0X3dvcmRwcmVzcycgPT09ICRmdW5jdGlvbiApIHsKCQkJJGZ1bmN0aW9uX3RpdGxlID0gJ0
Rvd25sb2FkaW5nIFdvcmRQcmVzcyBjb3JlIGZpbGVzIGZyb20gd29yZHByZXNzLm9yZyc7CgkJfSBlbHNla
WYgKCAnbXNfY3JlYXRlX3dwX2NvbmZpZycgPT09ICRmdW5jdGlvbiApIHsKCQkJJGZ1bmN0aW9uX3RpdGxl
ID0gJ0dlbmVyYXRpbmcgc3RhbmRhcmQgd3AtY29uZmlnLnBocCBmb3IgZXhwb3J0JzsKCQl9IGVsc2VpZiA
oICdtc19jb3B5X3BsdWdpbnMnID09PSAkZnVuY3Rpb24gKSB7CgkJCSRmdW5jdGlvbl90aXRsZSA9ICdDb3
B5aW5nIHBsdWdpbnMnOwoJCX0gZWxzZWlmICggJ21zX2NvcHlfdGhlbWVzJyA9PT0gJGZ1bmN0aW9uICkge
woJCQkkZnVuY3Rpb25fdGl0bGUgPSAnQ29weWluZyB0aGVtZXMnOwoJCX0gZWxzZWlmICggJ21zX2NvcHlf
bWVkaWEnID09PSAkZnVuY3Rpb24gKSB7CgkJCSRmdW5jdGlvbl90aXRsZSA9ICdDb3B5aW5nIG1lZGlhJzs
KCQl9IGVsc2VpZiAoICdtc19jb3B5X3VzZXJzX3RhYmxlJyA9PT0gJGZ1bmN0aW9uICkgewoJCQkkZnVuY3
Rpb25fdGl0bGUgPSAnQ29weWluZyB1c2Vycyc7CgkJfSBlbHNlaWYgKCAnbXNfY2xlYW51cCcgPT09ICRmd
W5jdGlvbiApIHsKCQkJJGZ1bmN0aW9uX3RpdGxlID0gJ0NsZWFuaW5nIHVwIE11bHRpc2l0ZS1zcGVjaWZp
YyB0ZW1wb3JhcnkgZGF0YSc7CgkJfSBlbHNlIHsKCQkJLy8gQXR0ZW1wdCB0byBwcmV0dGlmeSBhdXRvbWF
0aWNhbGx5LgoJCQkkZnVuY3Rpb25fdGl0bGUgPSB1Y3dvcmRzKCBzdHJfcmVwbGFjZSggJ18nLCAnICcsIC
RmdW5jdGlvbiApICk7CgkJfQoKCQlyZXR1cm4gJGZ1bmN0aW9uX3RpdGxlOwoJfSAvLyBlbmQgcHJldHR5R
nVuY3Rpb25UaXRsZSgpLgoKCgkvKioKCSAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhl
ciBhIHBsdWdpbiBpcyBuZXR3b3JrIGFjdGl2YXRlZCBvciBub3QuCgkgKgoJICogQHJldHVybiBib29sICB
UcnVlIGlmIHBsdWdpbiBpcyBuZXR3b3JrIGFjdGl2YXRlZCwgZWxzZSBmYWxzZS4KCSAqLwoJcHVibGljIH
N0YXRpYyBmdW5jdGlvbiBpc19uZXR3b3JrX2FjdGl2YXRlZCgpIHsKCgkJaWYgKCAhIGZ1bmN0aW9uX2V4a
XN0cyggJ2lzX3BsdWdpbl9hY3RpdmVfZm9yX25ldHdvcmsnICkgKSB7IC8vIEZ1bmN0aW9uIGlzIG5vdCBh
dmFpbGFibGUgb24gYWxsIFdvcmRQcmVzcyBwYWdlcyBmb3Igc29tZSByZWFzb24gYWNjb3JkaW5nIHRvIGN
vZGV4LgoJCQlyZXF1aXJlX29uY2UgQUJTUEFUSCAuICcvd3AtYWRtaW4vaW5jbHVkZXMvcGx1Z2luLnBocC
c7CgkJfQoJCWlmICggaXNfcGx1Z2luX2FjdGl2ZV9mb3JfbmV0d29yayggYmFzZW5hbWUoIHBiX2JhY2t1c
GJ1ZGR5OjpwbHVnaW5fcGF0aCgpICkgLiAnLycgLiBwYl9iYWNrdXBidWRkeTo6c2V0dGluZ3MoICdpbml0
JyApICkgKSB7IC8vIFBhdGggcmVsYXRpdmUgdG8gd3AtY29udGVudFxwbHVnaW5zXCBkaXJlY3RvcnkuCgk
JCXJldHVybiB0cnVlOwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJfSAvLyBFbmQgaXNfbm
V0d29ya19hY3RpdmF0ZWQoKS4KCgoJLyoqCgkgKiBJbnRlZ3JpdHkgQ2hlY2sKCSAqCgkgKiBTY2FucyBhI
GJhY2t1cCBmaWxlIGFuZCBzYXZlcyB0aGUgcmVzdWx0IGluIGRhdGEgc3RydWN0dXJlLiBDaGVja3MgZm9y
IGtleSBmaWxlcyAmIHRoYXQgLnppcCBjYW4gYmUgcmVhZCBwcm9wZXJseS4gU3RvcmVzIHJlc3VsdHMgd2l
0aCBkZXRhaWxzIGluIGRhdGEgc3RydWN0dXJlLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGUgICAgIC
AgICAgICAgICBGdWxsIHBhdGhuYW1lICYgZmlsZW5hbWUgdG8gYmFja3VwIGZpbGUgdG8gY2hlY2suCgkgK
iBAcGFyYW0gb2JqICAgICRmaWxlb3B0aW9ucyAgICAgICAgRmlsZW9wdGlvbnMgb2JqZWN0IGN1cnJlbnRs
eSBob2xkaW5nIHRoZSBmaWxlb3B0aW9ucyBmaWxlIG9wZW4sIGlmIGFueS4KCSAqIEBwYXJhbSBhcnJheSA
gJG9wdGlvbnMgICAgICAgICAgICBBcnJheSBvZiBvcHRpb25zLgoJICogQHBhcmFtIGJvb2wgICAkc2tpcF
9sb2dfcmVkaXJlY3QgIFNraXAgbG9nIHJlZGlyZWN0LgoJICoKCSAqIEByZXR1cm4gYXJyYXkgIFJldHVyb
nMgaW50ZWdyaXR5IGRhdGEgYXJyYXkuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYmFja3VwX2lu
dGVncml0eV9jaGVjayggJGZpbGUsICRmaWxlb3B0aW9ucyA9ICcnLCAkb3B0aW9ucyA9IGFycmF5KCksICR
za2lwX2xvZ19yZWRpcmVjdCA9IGZhbHNlICkgewoJCWluY2x1ZGVfb25jZSAnaW50ZWdyaXR5X2NoZWNrLn
BocCc7CgkJJGNoZWNrID0gbmV3IGJhY2t1cGJ1ZGR5X2ludGVncml0eV9jaGVjayggJGZpbGUsICRmaWxlb
3B0aW9ucywgJG9wdGlvbnMsICRza2lwX2xvZ19yZWRpcmVjdCApOwoJCXJldHVybiAkY2hlY2stPmludGVn
cml0eV9hcnJheTsKCX0gLy8gRW5kIGJhY2t1cF9pbnRlZ3JpdHlfY2hlY2soKS4KCgoJLyoqCgkgKiBSZXR
1cm5zIHRoZSBiYWNrdXAgc2VyaWFsIGJhc2VkIG9uIHRoZSBmaWxlbmFtZS4KCSAqCgkgKiBAcGFyYW0gc3
RyaW5nICRmaWxlICBGaWxlbmFtZSBjb250YWluaW5nIGEgc2VyaWFsIHRvIGV4dHJhY3QuCgkgKgoJICogQ
HJldHVybiBzdHJpbmcgIFNlcmlhbCBmb3VuZC4gRW1wdHkgc3RyaW5nIGlmIHVuYWJsZSB0byBmaW5kIHNl
cmlhbC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfc2VyaWFsX2Zyb21fZmlsZSggJGZpbGU
gKSB7CgkJJGRhc2hwb3MgPSBzdHJycG9zKCAkZmlsZSwgJy0nICk7CgkJaWYgKCBmYWxzZSA9PT0gJGRhc2
hwb3MgKSB7CgkJCXJldHVybiAnJzsKCQl9CgkJJHNlcmlhbCA9ICRkYXNocG9zICsgMTsKCQkkc2VyaWFsI
D0gc3Vic3RyKCAkZmlsZSwgJHNlcmlhbCwgKCBzdHJsZW4oICRmaWxlICkgLSAkc2VyaWFsIC0gNCApICk7
CgkJJHNlcmlhbCA9IHRyaW0oICRzZXJpYWwgKTsgLy8gVHJpbSBhbnkgcG90ZW50aWFsIHdoaXRlc3BhY2U
uCgoJCXJldHVybiAkc2VyaWFsOwoKCX0gLy8gRW5kIGdldF9zZXJpYWxfZnJvbV9maWxlKCkuCgoKCS8qKg
oJICogQ2hlY2sgdGhlIHZlcnNpb24gb2YgYW4gaXRlbSBhbmQgY29tcGFyZSBpdCB0byB0aGUgbWluaW11b
SByZXF1aXJlbWVudHMgQmFja3VwQnVkZHkgcmVxdWlyZXMuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdHlw
ZSAgICBPcHRpb25hbC4gSWYgbGVmdCBibGFuayAnJyB0aGVuIGFsbCB0ZXN0cyB3aWxsIGJlIHBlcmZvcm1
lZC4gVmFsaWQgdmFsdWVzOiBXb3JkUHJlc3MsIHBocCwgJycuCgkgKiBAcGFyYW0gYm9vbCAgICRub3RpZn
kgIE9wdGlvbmFsLiBXaGV0aGVyIG9yIG5vdCB0byBhbGVydCB0byB0aGUgc2NyZWVuIChhbmQgdGhyb3cgZ
XJyb3IgdG8gbG9nKSBvZiBhIHZlcnNpb24gaXNzdWUuCgkgKgoJICogQHJldHVybiBib29sICBUcnVlIGlm
IHRoZSBzZWxlY3RlZCB0eXBlIGlzIGEgYmFkIHZlcnNpb24KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGl
vbiB2ZXJzaW9uc19jb25maXJtKCAkdHlwZSA9ICcnLCAkbm90aWZ5ID0gZmFsc2UgKSB7CgoJCSRiYWRfdm
Vyc2lvbiA9IGZhbHNlOwoKCQlpZiAoICd3b3JkcHJlc3MnID09ICR0eXBlIHx8ICcnID09ICR0eXBlICkge
yAvLyBAY29kaW5nU3RhbmRhcmRzSWdub3JlTGluZTogU2hvdWxkIGJlIGFsbCBsb3dlcmNhc2UgaGVyZS4K
CQkJZ2xvYmFsICR3cF92ZXJzaW9uOwoJCQlpZiAoIHZlcnNpb25fY29tcGFyZSggJHdwX3ZlcnNpb24sIHB
iX2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3dwX21pbmltdW0nICksICc8PScgKSApIHsKCQkJCWlmICggdH
J1ZSA9PT0gJG5vdGlmeSApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6YWxlcnQoIHNwcmludGYoIF9fKCAnR
VJST1I6IEJhY2t1cEJ1ZGR5IHJlcXVpcmVzIFdvcmRQcmVzcyB2ZXJzaW9uICUxJHMgb3IgaGlnaGVyLiBZ
b3UgbWF5IGV4cGVyaWVuY2UgdW5leHBlY3RlZCBiZWhhdmlvciBvciBjb21wbGV0ZSBmYWlsdXJlIGluIHR
oaXMgZW52aXJvbm1lbnQuIFBsZWFzZSBjb25zaWRlciB1cGdyYWRpbmcgV29yZFByZXNzLicsICdpdC1sMT
BuLWJhY2t1cGJ1ZGR5JyApLCBzZWxmOjpfd3BfbWluaW11bSApICk7CgkJCQkJcGJfYmFja3VwYnVkZHk6O
mxvZyggJ1Vuc3VwcG9ydGVkIFdvcmRQcmVzcyBWZXJzaW9uOiAnIC4gJHdwX3ZlcnNpb24sICdlcnJvcicg
KTsKCQkJCX0KCQkJCSRiYWRfdmVyc2lvbiA9IHRydWU7CgkJCX0KCQl9CgkJaWYgKCAncGhwJyA9PT0gJHR
5cGUgfHwgJycgPT0gJHR5cGUgKSB7CgkJCWlmICggdmVyc2lvbl9jb21wYXJlKCBQSFBfVkVSU0lPTiwgcG
JfYmFja3VwYnVkZHk6OnNldHRpbmdzKCAncGhwX21pbmltdW0nICksICc8PScgKSApIHsKCQkJCWlmICggd
HJ1ZSA9PT0gJG5vdGlmeSApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6YWxlcnQoIHNwcmludGYoIF9fKCAn
RVJST1I6IEJhY2t1cEJ1ZGR5IHJlcXVpcmVzIFBIUCB2ZXJzaW9uICUxJHMgb3IgaGlnaGVyLiBZb3UgbWF
5IGV4cGVyaWVuY2UgdW5leHBlY3RlZCBiZWhhdmlvciBvciBjb21wbGV0ZSBmYWlsdXJlIGluIHRoaXMgZW
52aXJvbm1lbnQuIFBsZWFzZSBjb25zaWRlciB1cGdyYWRpbmcgUEhQLicsICdpdC1sMTBuLWJhY2t1cGJ1Z
GR5JyApLCBQSFBfVkVSU0lPTiApICk7CgkJCQkJcGJfYmFja3VwYnVkZHk6OmxvZyggJ1Vuc3VwcG9ydGVk
IFBIUCBWZXJzaW9uOiAnIC4gUEhQX1ZFUlNJT04sICdlcnJvcicgKTsKCQkJCX0KCQkJCSRiYWRfdmVyc2l
vbiA9IHRydWU7CgkJCX0KCQl9CgoJCXJldHVybiAkYmFkX3ZlcnNpb247CgoJfSAvLyBFbmQgdmVyc2lvbn
NfY29uZmlybSgpLgoKCS8qKgoJICogUmV0cmlldmUgZGlyZWN0b3J5IGZvciBzdG9yaW5nIGJhY2t1cHMgd
2l0aGluLgoJICoKCSAqIEByZXR1cm4gc3RyaW5nICBGdWxsIHBhdGggdG8gZGlyZWN0b3J5LCBpbmNsdWRp
bmcgdHJhaWxpbmcgc2xhc2guCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0QmFja3VwRGlyZWN
0b3J5KCkgewoJCWlmICggJycgPT0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydiYWNrdXBfZGlyZWN0b3
J5J10gKSB7CgkJCSRkaXIgPSBzZWxmOjpfZ2V0QmFja3VwRGlyZWN0b3J5RGVmYXVsdCgpOwoJCX0gZWxzZ
SB7CgkJCSRkaXIgPSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2JhY2t1cF9kaXJlY3RvcnknXTsKCQl9
CgkJcmV0dXJuICRkaXI7Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZSBkaXJlY3RvcnkgZm9yIHN0b3JpbmcgbG9
ncyB3aXRoaW4uIENhY2hlZC4KCSAqCgkgKiBAcmV0dXJuIHN0cmluZyAgRnVsbCBwYXRoIHRvIGRpcmVjdG
9yeSwgaW5jbHVkaW5nIHRyYWlsaW5nIHNsYXNoLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdld
ExvZ0RpcmVjdG9yeSgpIHsKCQlpZiAoICcnICE9IHNlbGY6OiRfY2FjaGVkTG9nRGlyZWN0b3J5ICkgewoJ
CQlyZXR1cm4gc2VsZjo6JF9jYWNoZWRMb2dEaXJ
lY3Rvcnk7CgkJfQoJCWlmICggcGJfaXNfc3RhbmRhbG9uZSgpICkgewoJCQlyZXR1cm4gQUJTUEFUSCAuIC
dpbXBvcnRidWRkeS8nOwoJCX0KCgkJJHVwbG9hZHNfZGlycyAgICAgICAgICAgICAgPSB3cF91cGxvYWRfZ
GlyKCk7CgkJc2VsZjo6JF9jYWNoZWRMb2dEaXJlY3RvcnkgPSAkdXBsb2Fkc19kaXJzWydiYXNlZGlyJ10g
LiAnL3BiX2JhY2t1cGJ1ZGR5Lyc7CgoJCXJldHVybiBzZWxmOjokX2NhY2hlZExvZ0RpcmVjdG9yeTsKCX0
gLy8gRW5kIGdldExvZ0RpcmVjdG9yeSgpLgoKCgkvKioKCSAqIFJldHJpZXZlIHRlbXBvcmFyeSBkaXJlY3
RvcnkgZm9yIHN0b3JpbmcgdGVtcG9yYXJ5IGZpbGVzIHdpdGhpbi4KCSAqCgkgKiBAcmV0dXJuIHN0cmluZ
yAgRnVsbCBwYXRoIHRvIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHRyYWlsaW5nIHNsYXNoLgoJICovCglwdWJs
aWMgc3RhdGljIGZ1bmN0aW9uIGdldFRlbXBEaXJlY3RvcnkoKSB7CgkJLy8gVE9ETzogU2hvdWxkIHRoaXM
gdXNlIHdwX3VwbG9hZF9kaXIoKT8KCQlyZXR1cm4gQUJTUEFUSCAuICd3cC1jb250ZW50L3VwbG9hZHMvYm
Fja3VwYnVkZHlfdGVtcC8nOwoJfSAvLyBFbmQgZ2V0VGVtcERpcmVjdG9yeSgpLgoKCgkvKioKCSAqIERlZ
mF1bHQgZGlyZWN0b3J5IGJhY2t1cHMgd2lsbCBiZSBzdG9yZWQgaW4uIGdldEJhY2t1cERpcmVjdG9yeSgp
IHVzZXMgdGhpcyBhcyB0aGUgZGVmYXVsdCBpZiBubyBwYXRoIGlzIHNwZWNpZmljYWxseSBzZXQuCgkgKgo
JICogQHJldHVybiBzdHJpbmcgIEZ1bGwgcGF0aCB0byBkaXJlY3RvcnksIGluY2x1ZGluZyB0cmFpbGluZy
BzbGFzaC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBfZ2V0QmFja3VwRGlyZWN0b3J5RGVmYXVsd
CgpIHsKCQlpZiAoIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSAmJiB0cnVlID09PSBQQl9JTVBPUlRC
VUREWSApIHsKCQkJcmV0dXJuIEFCU1BBVEg7CgkJfQoJCSR1cGxvYWRzX2RpcnMgPSB3cF91cGxvYWRfZGl
yKCk7CgkJcmV0dXJuICR1cGxvYWRzX2RpcnNbJ2Jhc2VkaXInXSAuICcvYmFja3VwYnVkZHlfYmFja3Vwcy
8nOwoJfSAvLyBFbmQgX2dldEJhY2t1cERpcmVjdG9yeURlZmF1bHQoKS4KCgoJLyoqCgkgKiBUYWtlcyBhI
HByb2ZpbGUgY3VzdG9tIHJvb3QgcGF0aCBhbmQgbm9ybWFsaXplcyBpdCwgdGFraW5nIGludG8gYWNjb3Vu
dCAvLi8sIC8uLi8sIGV0Yy4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRwYXRoICBBZGRpdGlvbmFsIHBhdGg
gZnJvbSByb290LgoJICoKCSAqIEByZXR1cm4gc3RyaW5nICBGdWxsIG5vcm1hbGl6ZWQgY3VzdG9tIHBhdG
ggZnJvbSByb290LgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9ub3JtYWxpemVkX2N1c3Rvb
V9yb290KCAkcGF0aCApIHsKCQlyZXR1cm4gcmVhbHBhdGgoIEFCU1BBVEggLiAkcGF0aCApIC4gJy8nOwoJ
fSAvLyBnZXRfbm9ybWFsaXplZF9jdXN0b21fcm9vdCgpLgoKCgkvKioKCSAqIEdldCBzYW5pdGl6ZWQgZGl
yZWN0b3J5IGV4Y2x1c2lvbnMuIEV4Y2x1c2lvbnMgYXJlIHJlbGF0aXZlIHRvIHNpdGUgcm9vdCAoQUJTUE
FUSCkuIFNlZSBpbXBvcnRhbnQgbm90ZSBiZWxvdyEKCSAqCgkgKiBJTVBPUlRBTlQgTk9URTogQ2Fubm90I
GV4Y2x1ZGUgdGhlIHRlbXAgZGlyZWN0b3J5IGhlcmUgYXMgdGhpcyBpcyB3aGVyZSBTUUwgYW5kIERBVCBm
aWxlcyBhcmUgc3RvcmVkIGZvciBpbmNsdXNpb24gaW4gdGhlIGJhY2t1cCBhcmNoaXZlLgoJICoKCSAqIEB
wYXJhbSBhcnJheSAgJHByb2ZpbGUgICAgICBQcm9maWxlIGFycmF5IG9mIGRhdGEuIEtleSAnZXhjbHVkZX
MnIGNhbiBiZSBhcnJheSBvciBuZXdsaW5lLWRlbGltaW5hdGVkIHN0cmluZy4KCSAqIEBwYXJhbSBib29sI
CAgJHRyaW1fc3VmZml4ICBUcnVlIChkZWZhdWx0KSBpZiB0cmFpbGluZyBzbGFzaCBzaG91bGQgYmUgdHJp
bW1lZCBmcm9tIGRpcmVjdG9yaWVzLgoJICogQHBhcmFtIHN0cmluZyAkc2VyaWFsICAgICAgIE9wdGlvbmF
sIHNlcmlhbCBvZiBjdXJyZW50IGJhY2t1cC4gQnkgZGVmYXVsdCBhbGwgc3ViZGlyZWN0b3JpZXMgd2l0aG
luIHRoZSBiYWNrdXBidWRkeV90ZW1wIGRpciBhcmUgZXhwbGljaXRseSBleGNsdWRlZC4gU3BlY2lmeWluZ
yBhbGxvd3MgdGhpcyBzZXJpYWwgc3ViZGlyZWN0b3J5IHRvIG5vdCBiZSBleGNsdWRlZC4KCSAqCgkgKiBA
cmV0dXJuIGFycmF5ICBBcnJheSBvZiBkaXJlY3RvcmllcyB0byBleGNsdWRlLgoJICovCglwdWJsaWMgc3R
hdGljIGZ1bmN0aW9uIGdldF9kaXJlY3RvcnlfZXhjbHVzaW9ucyggJHByb2ZpbGUsICR0cmltX3N1ZmZpeC
A9IHRydWUsICRzZXJpYWwgPSAnJyApIHsKCQkkcHJvZmlsZSA9IGFycmF5X21lcmdlKCBwYl9iYWNrdXBid
WRkeTo6c2V0dGluZ3MoICdwcm9maWxlX2RlZmF1bHRzJyApLCAkcHJvZmlsZSApOwoKCQkvLyBObyB0cmFp
bGluZyBzbGFzaCAkYWJzcGF0aC4KCQkkYWJzcGF0aCA9IHJ0cmltKCBBQlNQQVRILCAnLycgKTsKCgkJLy8
gQ3VzdG9tIHJvb3QgKGlmIGFueSkuCgkJJGJhY2t1cF9yb290ID0gQUJTUEFUSDsgLy8gRGVmYXVsdCByb2
90LgoJCWlmICggaXNzZXQoICRwcm9maWxlWydjdXN0b21fcm9vdCddICkgJiYgJycgIT0gJHByb2ZpbGVbJ
2N1c3RvbV9yb290J10gKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0V4Y2x1
c2lvbiBjdXN0b20gcm9vdCAocmF3KTogJyAuICRwcm9maWxlWydjdXN0b21fcm9vdCddICk7CgkJCSRiYWN
rdXBfcm9vdCA9IGJhY2t1cGJ1ZGR5X2NvcmU6OmdldF9ub3JtYWxpemVkX2N1c3RvbV9yb290KCAkcHJvZm
lsZVsnY3VzdG9tX3Jvb3QnXSApOwoJCX0KCgkJLy8gSGFuZGxlIHNtYXJ0IHByb2ZpbGUgdHlwZXMuCgkJa
WYgKCAnbWVkaWEnID09PSAkcHJvZmlsZVsndHlwZSddICkgewoJCQkkYmFja3VwX3Jvb3QgPSBiYWNrdXBi
dWRkeV9jb3JlOjpnZXRfbWVkaWFfcm9vdCgpOwoJCX0gZWxzZWlmICggJ3RoZW1lcycgPT09ICRwcm9maWx
lWyd0eXBlJ10gKSB7CgkJCSRiYWNrdXBfcm9vdCA9IGJhY2t1cGJ1ZGR5X2NvcmU6OmdldF90aGVtZXNfcm
9vdCgpOwoJCX0gZWxzZWlmICggJ3BsdWdpbnMnID09PSAkcHJvZmlsZVsndHlwZSddICkgewoJCQkkYmFja
3VwX3Jvb3QgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRfcGx1Z2luc19yb290KCk7CgkJfQoKCQkkZXhjbHVk
ZXMgPSBhcnJheSgpOwoKCQkvLyBIYXJkY29kZWQgZXhjbHVzaW9ucywgcmVsYXRpdmUgdG8gJGFic3BhdGg
uCgkJZm9yZWFjaCAoIGJhY2t1cGJ1ZGR5X2NvbnN0YW50czo6JEhBUkRDT0RFRF9ESVJfRVhDTFVTSU9OUy
BhcyAkZXhjbHVzaW9uICkgewoJCQkkZXhjbHVkZXNbXSA9ICRhYnNwYXRoIC4gJGV4Y2x1c2lvbjsKCQl9C
goJCS8vIEJhY2t1cCBzdG9yYWdlIGRpcmVjdG9yeS4KCQkkZXhjbHVkZXNbXSA9IHNlbGY6OmdldEJhY2t1
cERpcmVjdG9yeSgpOwoKCQkvLyBMb2cgZGlyZWN0b3J5LgoJCSRleGNsdWRlc1tdID0gc2VsZjo6Z2V0TG9
nRGlyZWN0b3J5KCk7CgoJCS8vIE1lZGlhL3RoZW1lcy9wbHVnaW5zIGV4Y2x1ZGVkIG9wdGlvbi4KCQlpZi
AoIGlzc2V0KCAkcHJvZmlsZVsnZXhjbHVkZV9tZWRpYSddICkgJiYgJzEnID09ICRwcm9maWxlWydleGNsd
WRlX21lZGlhJ10gKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oICdFeGNs
dWRpbmcgbWVkaWEgZGlyZWN0b3JpZXMuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJJGV4Y2x
1ZGVzW10gPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRfbWVkaWFfcm9vdCgpOwoJCX0KCQlpZiAoIGlzc2V0KC
AkcHJvZmlsZVsnZXhjbHVkZV90aGVtZXMnXSApICYmICcxJyA9PSAkcHJvZmlsZVsnZXhjbHVkZV90aGVtZ
XMnXSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ0V4Y2x1ZGluZyB0
aGVtZSBkaXJlY3Rvcmllcy4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkkZXhjbHVkZXNbXSA
9IGJhY2t1cGJ1ZGR5X2NvcmU6OmdldF90aGVtZXNfcm9vdCgpOwoJCX0KCQlpZiAoIGlzc2V0KCAkcHJvZm
lsZVsnZXhjbHVkZV9wbHVnaW5zJ10gKSAmJiAnMScgPT0gJHByb2ZpbGVbJ2V4Y2x1ZGVfcGx1Z2lucyddI
CkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCAnRXhjbHVkaW5nIHBsdWdp
biBkaXJlY3Rvcmllcy4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkkZXhjbHVkZXNbXSA9IGJ
hY2t1cGJ1ZGR5X2NvcmU6OmdldF9wbHVnaW5zX3Jvb3QoKTsKCQl9IGVsc2VpZiAoIGlzc2V0KCAkcHJvZm
lsZVsnYWN0aXZlX3BsdWdpbnNfb25seSddICkgJiYgJzEnID09PSAkcHJvZmlsZVsnYWN0aXZlX3BsdWdpb
nNfb25seSddICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCAnRXhjbHVk
aW5nIGluYWN0aXZlIHBsdWdpbiBkaXJlY3Rvcmllcy4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwo
JCQkkZXhjbHVkZXMgPSBhcnJheV9tZXJnZSggJGV4Y2x1ZGVzLCBiYWNrdXBidWRkeV9jb3JlOjpnZXRfaW
5hY3RpdmVfcGx1Z2lucygpICk7CgkJfQoKCQkvLyBFeGNsdWRlIGFsbCB0ZW1wIGRpcmVjdG9yaWVzIHdpd
GhpbiBiYWNrdXBidWRkeV90ZW1wLCBleGNlcHQgYW55IHN1YmRpcmVjdG9yaWVzIGNvbnRhaW5pbmcgdGhl
IHNlcmlhbCBzcGVjaWZpZWQgKGlmIGFueSkuCgkJJHRlbXBfZGlycyA9IEBnbG9iKCBzZWxmOjpnZXRUZW1
wRGlyZWN0b3J5KCkgLiAnKicsIEdMT0JfT05MWURJUiApOwoJCWlmICggISBpc19hcnJheSggJHRlbXBfZG
lycyApICkgewoJCQkkdGVtcF9kaXJzID0gYXJyYXkoKTsKCQl9CgkJZm9yZWFjaCAoICR0ZW1wX2RpcnMgY
XMgJHRlbXBfZGlyICkgewoJCQlpZiAoICcnID09ICRzZXJpYWwgfHwgZmFsc2UgPT09IHN0cnN0ciggJHRl
bXBfZGlyLCAkc2VyaWFsICkgKSB7IC8vIElmIG5vIHNwZWNpZmljIHNlcmlhbCBzdXBwbGllZCBPUiB0aGl
zIGRpciBkb2VzIG5vdCBjb250YWluIHRoZSBzZXJpYWwsIGV4Y2x1ZGUgaXQuCgkJCQlpZiAoICcvJyAhPS
BzdWJzdHIoICR0ZW1wX2RpciwgLTEgKSApIHsKCQkJCQkkdGVtcF9kaXIgPSAkdGVtcF9kaXIgLiAnLyc7C
gkJCQl9CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdFeGNsdWRpbmcgYWRkaXRp
b25hbCB0ZW1wIGRpcmVjdG9yeSBzdWJkaXI6IGAnIC4gJHRlbXBfZGlyIC4gJ2AuJyApOwoJCQkJJGV4Y2x
1ZGVzW10gPSAkdGVtcF9kaXI7CgkJCX0KCQl9CgoJCS8vIFByb2ZpbGUtc3BlY2lmaWMgT1IgZ2xvYmFsIG
V4Y2x1ZGVzLgoJCWlmICggISBpc19hcnJheSggJHByb2ZpbGVbJ2V4Y2x1ZGVzJ10gKSApIHsKCQkJJHByb
2ZpbGVfZXhjbHVzaW9ucyA9IHRyaW0oICRwcm9maWxlWydleGNsdWRlcyddICk7IC8vIFRyaW0gc3RyaW5n
LgoJCQlpZiAoICctMScgPT0gJHByb2ZpbGVfZXhjbHVzaW9ucyApIHsgLy8gVXNlIGRlZmF1bHQgZ2xvYmF
sIGV4Y2x1c2lvbnMgaW5zdGVhZCBvZiBwcm9maWxlLgoJCQkJJHByb2ZpbGVfZXhjbHVzaW9ucyA9IHBiX2
JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sncHJvZmlsZXMnXVswXVsnZXhjbHVkZXMnXTsKCQkJCSRwcm9maWxlX
2V4Y2x1c2lvbnMgPSBwcmVnX3NwbGl0KCAnL1xufFxyfFxyXG4vJywgJHByb2ZpbGVfZXhjbHVzaW9ucyAp
OyAvLyBCcmVhayBpbnRvIGFycmF5IG9uIGFueSB0eXBlIG9mIGxpbmUgZW5kaW5nLgoJCQkJcGJfYmFja3V
wYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUHJvZmlsZSBpbmhlcml0aW5nIGdsb2JhbCBleGNsdXNpb2
5zLicgKTsKCQkJCWZvcmVhY2ggKCAkcHJvZmlsZV9leGNsdXNpb25zIGFzICYkcHJvZmlsZV9leGNsdXNpb
24gKSB7IC8vIEhhbmRsZSBwb3NzaWJsZSBwYXRoIGFib3NlICRhYnNwYXRoIGluIGN1c3RvbSByb290LgoJ
CQkJCSRwcm9maWxlX2V4Y2x1c2lvbiA9IHRyaW0oICRwcm9maWxlX2V4Y2x1c2lvbiApOwoJCQkJCWlmICg
gJycgPT09ICRwcm9maWxlX2V4Y2x1c2lvbiApIHsKCQkJCQkJY29udGludWU7CgkJCQkJfQoJCQkJCSRwcm
9maWxlX2V4Y2x1c2lvbiA9ICRhYnNwYXRoIC4gJHByb2ZpbGVfZXhjbHVzaW9uOwoJCQkJfQoJCQl9IGVsc
2UgewoJCQkJJHByb2ZpbGVfZXhjbHVzaW9ucyA9IHByZWdfc3BsaXQoICcvXG58XHJ8XHJcbi8nLCAkcHJv
ZmlsZV9leGNsdXNpb25zICk7IC8vIEJyZWFrIGludG8gYXJyYXkgb24gYW55IHR5cGUgb2YgbGluZSBlbmR
pbmcuCgkJCQlmb3JlYWNoICggJHByb2ZpbGVfZXhjbHVzaW9ucyBhcyAmJHByb2ZpbGVfZXhjbHVzaW9uIC
kgewoJCQkJCWlmICggJycgPT0gJHByb2ZpbGVfZXhjbHVzaW9uICkgewoJCQkJCQljb250aW51ZTsKCQkJC
Ql9CgkJCQkJJHByb2ZpbGVfZXhjbHVzaW9uID0gcnRyaW0oICRiYWNrdXBfcm9vdCwgJy8nICkgLiAkcHJv
ZmlsZV9leGNsdXNpb247CgkJCQl9CgkJCX0KCQl9IGVsc2UgewoJCQkkcHJvZmlsZV9leGNsdXNpb25zID0
gJHByb2ZpbGVbJ2V4Y2x1ZGVzJ107CgkJCWZvcmVhY2ggKCAkcHJvZmlsZV9leGNsdXNpb25zIGFzICYkcH
JvZmlsZV9leGNsdXNpb24gKSB7IC8vIEhhbmRsZSBwb3NzaWJsZSBwYXRoIGFib3NlICRhYnNwYXRoIGluI
GN1c3RvbSByb290LgoJCQkJJHByb2ZpbGVfZXhjbHVzaW9uID0gdHJpbSggJHByb2ZpbGVfZXhjbHVzaW9u
ICk7CgkJCQlpZiAoICcnID09PSAkcHJvZmlsZV9leGNsdXNpb24gKSB7CgkJCQkJY29udGludWU7CgkJCQl
9CgkJCQkkcHJvZmlsZV9leGNsdXNpb24gPSAkYWJzcGF0aCAuICRwcm9maWxlX2V4Y2x1c2lvbjsKCQkJfQ
oJCX0KCQkkZXhjbHVkZXMgPSBhcnJheV9tZXJnZSggJGV4Y2x1ZGVzLCAkcHJvZmlsZV9leGNsdXNpb25zI
Ck7CgoJCS8vIFByb2Nlc3MgZXhjbHVzaW9uIHZhcmlhYmxlcy4KCQlmb3JlYWNoICggJGV4Y2x1ZGVzIGFz
ICYkYWJzb2x1dGVfZXhjbHVkZSApIHsKCQkJaWYgKCAhICRhYnNvbHV0ZV9leGNsdWRlICkgewoJCQkJY29
udGludWU7CgkJCX0KCQkJJGFic29sdXRlX2V4Y2x1ZGUgPSBzdHJfcmVwbGFjZSggJ3ttZWRpYX0nLCBzZW
xmOjpnZXRfbWVkaWFfcm9vdCgpLCAkYWJzb2x1dGVfZXhjbHVkZSApOwoJCQkkYWJzb2x1dGVfZXhjbHVkZ
SA9IHN0cl9yZXBsYWNlKCAne3RoZW1lc30nLCBzZWxmOjpnZXRfdGhlbWVzX3Jvb3QoKSwgJGFic29sdXRl
X2V4Y2x1ZGUgKTsKCQkJJGFic29sdXRlX2V4Y2x1ZGUgPSBzdHJfcmVwbGFjZSggJ3twbHVnaW5zfScsIHN
lbGY6OmdldF9wbHVnaW5zX3Jvb3QoKSwgJGFic29sdXRlX2V4Y2x1ZGUgKTsKCQl9CgoJCS8vIENsZWFuIH
VwICYgc2FuaXRpemUgYXJyYXkuCgkJJGV4Y2x1ZGVzID0gYXJyYXlfbWFwKCAndHJpbScsICRleGNsdWRlc
yApOyAvLyBBcHBseSAod2hpdGVzcGFjZS1vbmx5KSB0cmltIHRvIGFsbCBpdGVtcyB3aXRoaW4uCgkJaWYg
KCAkdHJpbV9zdWZmaXggKSB7CgkJCWZvcmVhY2ggKCAkZXhjbHVkZXMgYXMgJiRleGNsdWRlICkgeyAvLyB
BcHBseSBydHJpbSB0byBhbGwgaXRlbXMgd2l0aG
luLgoJCQkJJGV4Y2x1ZGUgPSBydHJpbSggJGV4Y2x1ZGUsICcvJyApOwoJCQl9CgkJfQoKCQkvLyBBcHBse
SBmaWx0ZXIgZm9yIDNyZCBwYXJ0eSBtb2RpZmljYXRpb25zLgoJCSRleGNsdWRlcyA9IGFwcGx5X2ZpbHRl
cnMoICdiYWNrdXBidWRkeV96aXBfZXhjbHVzaW9ucycsICRleGNsdWRlcyApOwoKCQkvLyBSZW1vdmUgZHV
wbGljYXRlcy4KCQkkZXhjbHVkZXMgPSBhcnJheV91bmlxdWUoICRleGNsdWRlcyApOwoKCQkvLyBSZW1vdm
UgYWxsIGV4Y2x1c2lvbnMgdGhhdCBkbyBub3QgYmVnaW4gYXQgdGhlIGJhY2t1cCByb290IChjdXN0b20gb
3IgZGVmYXVsdCkuCgkJZm9yZWFjaCAoICRleGNsdWRlcyBhcyAmJGFic29sdXRlX2V4Y2x1ZGUgKSB7CgkJ
CWlmICggMCAhPT0gc3RycG9zKCAkYWJzb2x1dGVfZXhjbHVkZSwgJGJhY2t1cF9yb290ICkgKSB7CgkJCQk
kYWJzb2x1dGVfZXhjbHVkZSA9ICcnOwoJCQl9CgkJfQoKCQkvLyBSZW1vdmUgYW55IGVtcHR5IC8gYmxhbm
sgbGluZXMuCgkJJGV4Y2x1ZGVzID0gYXJyYXlfZmlsdGVyKCAkZXhjbHVkZXMsICdzdHJsZW4nICk7CgoJC
S8vIEZpeCBhcnJheSBpbmRleGVzIGZvciByZW1vdmVkIGl0ZW1zLgoJCSRleGNsdWRlcyA9IGFycmF5X3Zh
bHVlcyggJGV4Y2x1ZGVzICk7CgoJCS8vIE1ha2UgYWxsIGV4Y2x1c2lvbnMgcmVsYXRpdmUgdG8gYmFja3V
wIHJvb3QuCgkJZm9yZWFjaCAoICRleGNsdWRlcyBhcyAmJGV4Y2x1ZGUgKSB7CgkJCSRleGNsdWRlID0gJy
8nIC4gc3RyX3JlcGxhY2UoICRiYWNrdXBfcm9vdCwgJycsICRleGNsdWRlICk7CgkJfQoKCQlyZXR1cm4gJ
GV4Y2x1ZGVzOwoKCX0gLy8gRW5kIGdldF9kaXJlY3RvcnlfZXhjbHVzaW9ucygpLgoKCS8qKgoJICogU2Vu
ZHMgYW4gZXJyb3IgZW1haWwgdG8gdGhlIGRlZmluZWQgZW1haWwgYWRkcmVzcyhlcykgb24gc2V0dGluZ3M
gcGFnZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlICAgICAgICAgICAgIE1lc3NhZ2UgdG8gYm
UgaW5jbHVkZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGVtYWlsLgoJICogQHBhcmFtIHN0cmluZyAkb3ZlcnJpZ
GVfcmVjaXBpZW50ICBFbWFpbCBhZGRyZXNzKGVzKSB0byBzZW5kIHRvIGluc3RlYWQgb2YgdGhlIG5vcm1h
bCByZWNpcGllbnQuCgkgKiBAcGFyYW0gYXJyYXkgICRhdHRhY2htZW50cyAgICAgICAgIFN0cmluZyBvciB
hcnJheSBvZiBmaWxlbmFtZShzKSB0byBzZW5kIGFzIGVtYWlsIGF0dGFjaG1lbnRzLgoJICovCglwdWJsaW
Mgc3RhdGljIGZ1bmN0aW9uIG1haWxfZXJyb3IoICRtZXNzYWdlLCAkb3ZlcnJpZGVfcmVjaXBpZW50ID0gJ
ycsICRhdHRhY2htZW50cyA9IGFycmF5KCkgKSB7CgkJcmVxdWlyZV9vbmNlIHBiX2JhY2t1cGJ1ZGR5Ojpw
bHVnaW5fcGF0aCgpIC4gJy9jbGFzc2VzL2NvbnN0YW50cy5waHAnOwoKCQlpZiAoICEgaXNzZXQoIHBiX2J
hY2t1cGJ1ZGR5Ojokb3B0aW9ucyApICkgewoJCQlwYl9iYWNrdXBidWRkeTo6bG9hZCgpOwoJCX0KCgkJLy
8gSWYgdGhlcmUgaXMgYW4gZXJyb3IgZHVlIHRvIGEgcHJvYmxlbSB3aXRoIHRoZSBwbHVnaW4gc2V0dGluZ
3MgdGhlbiBsb2FkIGRlZmF1bHRzIHRlbXBvcmFyaWx5LgoJCWlmICggKCAhIGlzX2FycmF5KCBwYl9iYWNr
dXBidWRkeTo6JG9wdGlvbnMgKSApIHx8ICggISBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd
kYXRhX3ZlcnNpb24nXSApICkgKSB7CgkJCSRzZXR0aW5nc19jb3B5ID0gcGJfYmFja3VwYnVkZHk6OnNldH
RpbmdzKCAnZGVmYXVsdF9vcHRpb25zJyApOwoJCX0gZWxzZSB7CgkJCSRzZXR0aW5nc19jb3B5ID0gcGJfY
mFja3VwYnVkZHk6OiRvcHRpb25zOwoJCX0KCgkJaWYgKCAoIHRpbWUoKSAtICRzZXR0aW5nc19jb3B5Wyds
YXN0X2Vycm9yX2VtYWlsX3RpbWUnXSApIDwgYmFja3VwYnVkZHlfY29uc3RhbnRzOjpNSU1JTVVNX1RJTUV
fQkVUV0VFTl9FUlJPUl9FTUFJTFMgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJy
wgJ1dhcm5pbmcgIzQzODk0ODQ6IFRyaWVkIHRvIHNlbmQgZXJyb3IgZW1haWwgdG9vIGZhc3QuIFNraXBwa
W5nIHNlbmQuIE1lc3NhZ2U6IGAnIC4gJG1lc3NhZ2UgLiAnYC4nICk7CgkJCXJldHVybiB0cnVlOwoJCX0K
CgkJLy8gVHJhY2sgbGFzdCBzZW50IHRpbWUgdG8gcHJldmVudCBmbG9vZC4KCQkkc2V0dGluZ3NfY29weVs
nbGFzdF9lcnJvcl9lbWFpbF90aW1lJ10gPSB0aW1lKCk7CgkJcGJfYmFja3VwYnVkZHk6OnNhdmUoKTsKCg
kJJHN1YmplY3QgPSAkc2V0dGluZ3NfY29weVsnZW1haWxfbm90aWZ5X2Vycm9yX3N1YmplY3QnXTsKCQkkY
m9keSAgICA9ICRzZXR0aW5nc19jb3B5WydlbWFpbF9ub3RpZnlfZXJyb3JfYm9keSddOwoKCQkkcmVwbGFj
ZW1lbnRzID0gYXJyYXkoCgkJCSd7c2l0ZV91cmx9JyAgICAgICAgICAgID0+IHNpdGVfdXJsKCksCgkJCSd
7aG9tZV91cmx9JyAgICAgICAgICAgID0+IGhvbWVfdXJsKCksCgkJCSd7YmFja3VwYnVkZHlfdmVyc2lvbn
0nID0+IHBiX2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3ZlcnNpb24nICksCgkJCSd7Y3VycmVudF9kYXRld
GltZX0nICAgID0+IGRhdGUoIERBVEVfUkZDODIyICksCgkJCSd7aGVhZGluZ30nICAgICAgICAgICAgID0+
ICdCYWNrdXBCdWRkeSBFcnJvcicsCgkJCSd7c3VwcG9ydF9kaXNwbGF5fScgICAgID0+ICd0YWJsZScsCgk
JCSd7bWVzc2FnZX0nICAgICAgICAgICAgID0+ICRtZXNzYWdlLAoJCSk7CgoJCS8vIEN1c3RvbWl6ZSBTdW
JqZWN0IGFuZCB1c2VyIGN1c3RvbWl6YWJsZSBtZXNzYWdlLgoJCWZvcmVhY2ggKCAkcmVwbGFjZW1lbnRzI
GFzICRyZXBsYWNlX2tleSA9PiAkcmVwbGFjZW1lbnQgKSB7CgkJCSRzdWJqZWN0ID0gc3RyX3JlcGxhY2Uo
ICRyZXBsYWNlX2tleSwgJHJlcGxhY2VtZW50LCAkc3ViamVjdCApOwoJCQkkYm9keSAgICA9IHN0cl9yZXB
sYWNlKCAkcmVwbGFjZV9rZXksICRyZXBsYWNlbWVudCwgJGJvZHkgKTsKCQl9CgoJCSRyZXBsYWNlbWVudH
NbJ3tib2R5fSddID0gJGJvZHk7CgoJCS8vIEN1c3RvbWl6ZSB0aGUgZmluYWwgYm9keSBiYXNlZCBvbiBvd
XIgSFRNTCB0ZW1wbGF0ZS4KCQlpZiAoIEBmaWxlX2V4aXN0cyggZ2V0X3RoZW1lX3Jvb3QoKSAuICcvYmFj
a3VwYnVkZHktZW1haWwtdGVtcGxhdGUucGhwJyApICkgewoJCQkkYm9keSA9IGZpbGVfZ2V0X2NvbnRlbnR
zKCBnZXRfdGhlbWVfcm9vdCgpIC4gJy9iYWNrdXBidWRkeS1lbWFpbC10ZW1wbGF0ZS5waHAnICk7CgkJfS
BlbHNlIHsKCQkJJGJvZHkgPSBmaWxlX2dldF9jb250ZW50cyggZGlybmFtZSggZGlybmFtZSggX19GSUxFX
18gKSApIC4gJy92aWV3cy9iYWNrdXBidWRkeS1lbWFpbC10ZW1wbGF0ZS5waHAnICk7CgkJfQoKCQlmb3Jl
YWNoICggJHJlcGxhY2VtZW50cyBhcyAkcmVwbGFjZV9rZXkgPT4gJHJlcGxhY2VtZW50ICkgewoJCQkkYm9
keSA9IHN0cl9yZXBsYWNlKCAkcmVwbGFjZV9rZXksICRyZXBsYWNlbWVudCwgJGJvZHkgKTsKCQl9CgoJCS
RlbWFpbCA9ICRzZXR0aW5nc19jb3B5WydlbWFpbF9ub3RpZnlfZXJyb3InXTsKCQlpZiAoICcnICE9ICRvd
mVycmlkZV9yZWNpcGllbnQgKSB7CgkJCSRlbWFpbCA9ICRvdmVycmlkZV9yZWNpcGllbnQ7CgkJCXBiX2Jh
Y2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ092ZXJyaWRpbmcgZW1haWwgcmVjaXBpZW50IHRvOiB
gJyAuICRvdmVycmlkZV9yZWNpcGllbnQgLiAnYC4nICk7CgkJfQoKCQkvLyBEZWZhdWx0IHRvIGFkbWluX2
VtYWlsIGlmIG5vdCBjb25maWd1cmVkIGFueXdoZXJlIGVsc2UuCgkJaWYgKCAnJyA9PSAkZW1haWwgKSB7C
gkJCSRlbWFpbCA9IGdldF9vcHRpb24oICdhZG1pbl9lbWFpbCcgKTsKCQl9CgoJCWlmICggISBlbXB0eSgg
JGVtYWlsICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1NlbmRpbmcgZW1
haWwgZXJyb3Igbm90aWZpY2F0aW9uIHdpdGggc3ViamVjdCBgJyAuICRzdWJqZWN0IC4gJ2AgdG8gcmVjaX
BpZW50KHMpOiBgJyAuICRlbWFpbCAuICdgLicgKTsKCQkJaWYgKCAnJyAhPSAkc2V0dGluZ3NfY29weVsnZ
W1haWxfcmV0dXJuJ10gKSB7CgkJCQkkZW1haWxfcmV0dXJuID0gJHNldHRpbmdzX2NvcHlbJ2VtYWlsX3Jl
dHVybiddOwoJCQl9IGVsc2UgewoJCQkJJGVtYWlsX3JldHVybiA9IGdldF9vcHRpb24oICdhZG1pbl9lbWF
pbCcgKTsKCQkJfQoKCQkJaWYgKCBmdW5jdGlvbl9leGlzdHMoICd3cF9tYWlsJyApICkgewoJCQkJJHJlc3
VsdCA9IHdwX21haWwoICRlbWFpbCwgJHN1YmplY3QsICRib2R5LCAnRnJvbTogQmFja3VwQnVkZHkgPCcgL
iAkZW1haWxfcmV0dXJuIC4gIj5cclxuIiAuICdDb250ZW50LVR5cGU6IHRleHQvaHRtbDsnIC4gIlxyXG4i
IC4gJ1JlcGx5LVRvOiAnIC4gZ2V0X29wdGlvbiggJ2FkbWluX2VtYWlsJyApIC4gIlxyXG4iLCAkYXR0YWN
obWVudHMgKTsKCQkJCWlmICggZmFsc2UgPT09ICRyZXN1bHQgKSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6On
N0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICM0NTQ0MzU1NDogVW5hYmxlIHRvIHNlbmQgZXJyb3IgZW1haWwgd
2l0aCBXb3JkUHJlc3Mgd3BfbWFpbCgpLiBWZXJpZnkgV29yZFByZXNzICYgU2VydmVyIHNldHRpbmdzLicg
KTsKCQkJCX0KCQkJfSBlbHNlIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdXYXJ
uaW5nICMzMjg5MjM5OiB3cF9tYWlsKCkgdW5hdmFpbGFibGUuIEluc2lkZSBXb3JkUHJlc3M/JyApOwoJCQ
l9CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ3dhcm5pbmcnLCAnTm8gZW1haWwgY
WRkcmVzc2VzIGFyZSBzZXQgdG8gcmVjZWl2ZSBlcnJvciBub3RpZmljYXRpb25zIG9uIHRoZSBTZXR0aW5n
cyBwYWdlIEFORCBnZXRfb3B0aW9uKCJhZG1pbl9lbWFpbCIpIG5vdCBzZXQuIFNldHRpbmcgYSBub3RpZml
jYXRpb24gZW1haWwgaXMgc3VnZ2VzdGVkLicgKTsKCQl9CgoJfSAvLyBFbmQgbWFpbF9lcnJvcigpLgoKCS
8qKgoJICogU2VuZHMgYSBtZXNzYWdlIGVtYWlsIHRvIHRoZSBkZWZpbmVkIGVtYWlsIGFkZHJlc3MoZXMpI
G9uIHNldHRpbmdzIHBhZ2UuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc2VyaWFsICAgICAgICAgICAgICBC
YWNrdXAgc2VyaWFsLgoJICogQHBhcmFtIHN0cmluZyAkc3RhcnRfb3JfY29tcGxldGUgICBXaGV0aGVyIHR
oaXMgaXMgdGhlIG5vdGlmY2F0aW9uIGZvciBzdGFydGluZyBvciBjb21wbGV0aW5nLiBWYWxpZCB2YWx1ZX
M6IHN0YXJ0LCBjb21wbGV0ZSwgZGVzdGluYXRpb25Db21wbGV0ZS4KCSAqIEBwYXJhbSBzdHJpbmcgJG1lc
3NhZ2UgICAgICAgICAgICAgTWVzc2FnZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgYm9keSBvZiB0aGUgZW1h
aWwuCgkgKiBAcGFyYW0gYXJyYXkgICRleHRyYV9yZXBsYWNlbWVudHMgIEV4dHJhIHJlcGxhY2VtZW50cy4
KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtYWlsX25vdGlmeV9zY2hlZHVsZWQoICRzZXJpYWwsIC
RzdGFydF9vcl9jb21wbGV0ZSwgJG1lc3NhZ2UsICRleHRyYV9yZXBsYWNlbWVudHMgPSBhcnJheSgpICkge
woKCQlpZiAoICEgaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9ucyApICkgewoJCQlwYl9iYWNrdXBi
dWRkeTo6bG9hZCgpOwoJCX0KCgkJaWYgKCAnc3RhcnQnID09PSAkc3RhcnRfb3JfY29tcGxldGUgKSB7Cgk
JCSRlbWFpbCA9IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snZW1haWxfbm90aWZ5X3NjaGVkdWxlZF9zdG
FydCddOwoKCQkJJHN1YmplY3QgPSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2VtYWlsX25vdGlmeV9zY
2hlZHVsZWRfc3RhcnRfc3ViamVjdCddOwoJCQkkYm9keSAgICA9IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9u
c1snZW1haWxfbm90aWZ5X3NjaGVkdWxlZF9zdGFydF9ib2R5J107CgoJCQkkcmVwbGFjZW1lbnRzID0gYXJ
yYXkoCgkJCQkne3NpdGVfdXJsfScgICAgICAgICAgICA9PiBzaXRlX3VybCgpLAoJCQkJJ3tob21lX3VybH
0nICAgICAgICAgICAgPT4gaG9tZV91cmwoKSwKCQkJCSd7YmFja3VwYnVkZHlfdmVyc2lvbn0nID0+IHBiX
2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3ZlcnNpb24nICksCgkJCQkne2N1cnJlbnRfZGF0ZXRpbWV9JyAg
ICA9PiBkYXRlKCBEQVRFX1JGQzgyMiApLAoJCQkJJ3toZWFkaW5nfScgICAgICAgICAgICAgPT4gJ0JhY2t
1cCBTdGFydGVkJywKCQkJCSd7bWVzc2FnZX0nICAgICAgICAgICAgID0+ICRtZXNzYWdlLAoJCQkpOwoJCX
0gZWxzZWlmICggJ2NvbXBsZXRlJyA9PT0gJHN0YXJ0X29yX2NvbXBsZXRlICkgewoJCQkkZW1haWwgPSBwY
l9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2VtYWlsX25vdGlmeV9zY2hlZHVsZWRfY29tcGxldGUnXTsKCgkJ
CSRzdWJqZWN0ID0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydlbWFpbF9ub3RpZnlfc2NoZWR1bGVkX2N
vbXBsZXRlX3N1YmplY3QnXTsKCQkJJGJvZHkgICAgPSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2VtYW
lsX25vdGlmeV9zY2hlZHVsZWRfY29tcGxldGVfYm9keSddOwoKCQkJJGFyY2hpdmVfZmlsZSA9ICcnOwoJC
QlyZXF1aXJlX29uY2UgcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2NsYXNzZXMvZmlsZW9w
dGlvbnMucGhwJzsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRmlsZW9wdGlvbnM
gaW5zdGFuY2UgIzM3LicgKTsKCQkJJGJhY2t1cF9vcHRpb25zID0gbmV3IHBiX2JhY2t1cGJ1ZGR5X2ZpbG
VvcHRpb25zKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3RvcnkoKSAuICdmaWxlb3B0aW9ucy8nI
C4gJHNlcmlhbCAuICcudHh0JywgdHJ1ZSwgdHJ1ZSApOwoJCQkkcmVzdWx0ICAgICAgICAgPSAkYmFja3Vw
X29wdGlvbnMtPmlzX29rKCk7CgkJCWlmICggdHJ1ZSAhPT0gJHJlc3VsdCApIHsKCQkJCXBiX2JhY2t1cGJ
1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciByZXRyaWV2aW5nIGZpbGVvcHRpb25zIGZpbGUgYCcgLi
BiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3RvcnkoKSAuICdmaWxlb3B0aW9ucy8nIC4gJHNlcmlhb
CAuICcudHh0YC4gRXJyb3IgIzM1NTY0MzMyLicgKTsKCQkJCSRhcmNoaXZlX2ZpbGUgPSAnW2ZpbGVfdW5r
bm93bl0nOwoJCQkJJGJhY2t1cF9zaXplICA9ICdbc2l6ZV91bmtub3duXSc7CgkJCQkkYmFja3VwX3R5cGU
gID0gJ1t0eXBlX3Vua25vd25dJzsKCQkJfSBlbHNlIHsKCQkJCSRhcmNoaXZlX2ZpbGUgPSAkYmFja3VwX2
9wdGlvbnMtPm9wdGlvbnNbJ2FyY2hpdmVfZmlsZSddOwoJCQkJJGJhY2t1cF9zaXplICA9ICRiYWNrdXBfb
3B0aW9ucy0+b3B0aW9uc1snYXJjaGl2ZV9zaXplJ107CgkJCQkkYmFja3VwX3R5cGUgID0gJGJhY2t1cF9v
cHRpb25zLT5vcHRpb25zWyd0eXBlJ107CgkJCX0KCgkJCSRyZXBsYWNlbWVudHMgPSBhcnJheSgKCQkJCSd
7c2l0ZV91cmx9JyAgICAgICAgICAgID0+IHNpdGVfdXJsKCksCgkJCQkne2hvbWVfdXJsfScgICAgICAgIC
AgICA9PiBob21lX3VybCgpLAoJCQkJJ3tiYWNrd
XBidWRkeV92ZXJzaW9ufScgPT4gcGJfYmFja3VwYnVkZHk6OnNldHRpbmdzKCAndmVyc2lvbicgKSwKCQkJ
CSd7Y3VycmVudF9kYXRldGltZX0nICAgID0+IGRhdGUoIERBVEVfUkZDODIyICksCgkJCQkne2hlYWRpbmd
9JyAgICAgICAgICAgICA9PiAnQmFja3VwIENvbXBsZXRlZCcsCgkJCQkne21lc3NhZ2V9JyAgICAgICAgIC
AgICA9PiAkbWVzc2FnZSwKCgkJCQkne2JhY2t1cF9zZXJpYWx9JyAgICAgICA9PiAkc2VyaWFsLAoJCQkJJ
3tkb3dubG9hZF9saW5rfScgICAgICAgPT4gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAnZG93bmxvYWRf
YXJjaGl2ZScgKSAuICcmYmFja3VwYnVkZHlfYmFja3VwPScgLiBiYXNlbmFtZSggJGFyY2hpdmVfZmlsZSA
pLAoJCQkJJ3tiYWNrdXBfZmlsZX0nICAgICAgICAgPT4gYmFzZW5hbWUoICRhcmNoaXZlX2ZpbGUgKSwKCQ
kJCSd7YmFja3VwX3NpemV9JyAgICAgICAgID0+ICRiYWNrdXBfc2l6ZSwKCQkJCSd7YmFja3VwX3R5cGV9J
yAgICAgICAgID0+ICRiYWNrdXBfdHlwZSwKCQkJKTsKCQl9IGVsc2VpZiAoICdkZXN0aW5hdGlvbkNvbXBs
ZXRlJyA9PSAkc3RhcnRfb3JfY29tcGxldGUgKSB7CgkJCSRlbWFpbCA9IHBiX2JhY2t1cGJ1ZGR5Ojokb3B
0aW9uc1snZW1haWxfbm90aWZ5X3NlbmRfZmluaXNoJ107CgoJCQkkc3ViamVjdCA9IHBiX2JhY2t1cGJ1ZG
R5Ojokb3B0aW9uc1snZW1haWxfbm90aWZ5X3NlbmRfZmluaXNoX3N1YmplY3QnXTsKCQkJJGJvZHkgICAgP
SBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2VtYWlsX25vdGlmeV9zZW5kX2ZpbmlzaF9ib2R5J107CgoJ
CQkkcmVwbGFjZW1lbnRzID0gYXJyYXkoCgkJCQkne3NpdGVfdXJsfScgICAgICAgICAgICA9PiBzaXRlX3V
ybCgpLAoJCQkJJ3tob21lX3VybH0nICAgICAgICAgICAgPT4gaG9tZV91cmwoKSwKCQkJCSd7YmFja3VwYn
VkZHlfdmVyc2lvbn0nID0+IHBiX2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3ZlcnNpb24nICksCgkJCQkne
2N1cnJlbnRfZGF0ZXRpbWV9JyAgICA9PiBkYXRlKCBEQVRFX1JGQzgyMiApLAoJCQkJJ3toZWFkaW5nfScg
ICAgICAgICAgICAgPT4gJ0JhY2t1cCBzdWNjZXNzZnVsbHkgc2VudCB0byBkZXN0aW5hdGlvbicsCgkJCQk
ne21lc3NhZ2V9JyAgICAgICAgICAgICA9PiAkbWVzc2FnZSwKCQkJKTsKCQl9IGVsc2UgewoJCQlwYl9iYW
NrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRVJST1IgIzU0ODU3ODQ1Nzg1OiBGYXRhbGx5IGhhbHRlZ
C4gSW52YWxpZCBzY2hlZHVsZSB0eXBlLiBFeHBlY3RlZCBgc3RhcnRgIG9yIGBjb21wbGV0ZWAuIEdvdCBg
JyAuICRzdGFydF9vcl9jb21wbGV0ZSAuICdgLicgKTsKCQl9CgoJCSRyZXBsYWNlbWVudHMgPSBhcnJheV9
tZXJnZSggJHJlcGxhY2VtZW50cywgJGV4dHJhX3JlcGxhY2VtZW50cyApOwoKCQkvLyBDdXN0b21pemUgU3
ViamVjdCBhbmQgdXNlciBjdXN0b21pemFibGUgbWVzc2FnZS4KCQkkcmVwbGFjZW1lbnRzWyd7c3VwcG9yd
F9kaXNwbGF5fSddID0gJ25vbmUnOwoJCWZvcmVhY2ggKCAkcmVwbGFjZW1lbnRzIGFzICRyZXBsYWNlX2tl
eSA9PiAkcmVwbGFjZW1lbnQgKSB7CgkJCSRzdWJqZWN0ID0gc3RyX3JlcGxhY2UoICRyZXBsYWNlX2tleSw
gJHJlcGxhY2VtZW50LCAkc3ViamVjdCApOwoJCQkkYm9keSAgICA9IHN0cl9yZXBsYWNlKCAkcmVwbGFjZV
9rZXksICRyZXBsYWNlbWVudCwgJGJvZHkgKTsKCQl9CgoJCSRyZXBsYWNlbWVudHNbJ3tib2R5fSddID0gJ
GJvZHk7CgoJCS8vIEN1c3RvbWl6ZSB0aGUgZmluYWwgYm9keSBiYXNlZCBvbiBvdXIgSFRNTCB0ZW1wbGF0
ZS4KCQlpZiAoIEBmaWxlX2V4aXN0cyggZ2V0X3RoZW1lX3Jvb3QoKSAuICcvYmFja3VwYnVkZHktZW1haWw
tdGVtcGxhdGUucGhwJyApICkgewoJCQkkYm9keSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCBnZXRfdGhlbWVfcm
9vdCgpIC4gJy9iYWNrdXBidWRkeS1lbWFpbC10ZW1wbGF0ZS5waHAnICk7CgkJfSBlbHNlIHsKCQkJJGJvZ
HkgPSBmaWxlX2dldF9jb250ZW50cyggZGlybmFtZSggZGlybmFtZSggX19GSUxFX18gKSApIC4gJy92aWV3
cy9iYWNrdXBidWRkeS1lbWFpbC10ZW1wbGF0ZS5waHAnICk7CgkJfQoKCQlmb3JlYWNoICggJHJlcGxhY2V
tZW50cyBhcyAkcmVwbGFjZV9rZXkgPT4gJHJlcGxhY2VtZW50ICkgewoJCQkkYm9keSA9IHN0cl9yZXBsYW
NlKCAkcmVwbGFjZV9rZXksICRyZXBsYWNlbWVudCwgJGJvZHkgKTsKCQl9CgoJCWlmICggJycgIT0gcGJfY
mFja3VwYnVkZHk6OiRvcHRpb25zWydlbWFpbF9yZXR1cm4nXSApIHsKCQkJJGVtYWlsX3JldHVybiA9IHBi
X2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snZW1haWxfcmV0dXJuJ107CgkJfSBlbHNlIHsKCQkJJGVtYWlsX3J
ldHVybiA9IGdldF9vcHRpb24oICdhZG1pbl9lbWFpbCcgKTsKCQl9CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdG
F0dXMoICdkZXRhaWxzJywgJ1NlbmRpbmcgZW1haWwgc2NoZWR1bGUgbm90aWZpY2F0aW9uLiBTdWJqZWN0O
iBgJyAuICRzdWJqZWN0IC4gJ2A7IHJlY2lwaWVudChzKTogYCcgLiAkZW1haWwgLiAnYC4nICk7CgkJaWYg
KCAhIGVtcHR5KCAkZW1haWwgKSApIHsKCQkJaWYgKCBmdW5jdGlvbl9leGlzdHMoICd3cF9tYWlsJyApICk
gewoJCQkJd3BfbWFpbCggJGVtYWlsLCAkc3ViamVjdCwgJGJvZHksICdGcm9tOiBCYWNrdXBCdWRkeSA8Jy
AuICRlbWFpbF9yZXR1cm4gLiAiPlxyXG4iIC4gJ1JlcGx5LVRvOiAnIC4gZ2V0X29wdGlvbiggJ2FkbWluX
2VtYWlsJyApIC4gIlxyXG4iIC4gJ0NvbnRlbnQtdHlwZTogdGV4dC9odG1sOycgLiAiXHJcbiIgKTsKCQkJ
fSBlbHNlIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjMzI4OTIzOTM
6IHdwX21haWwoKSBkb2VzIG5vdCBleGlzdC4gSW5zaWRlIFdvcmRQcmVzcz8nICk7CgkJCX0KCQl9Cgl9IC
8vIEVuZCBtYWlsX25vdGlmeV9zY2hlZHVsZWQoKS4KCgoJLyoqCgkgKiBTdHJpcHMgYWxsIG5vbi1maWxlL
WZyaWVuZGx5IGNoYXJhY3RlcnMgZnJvbSB0aGUgc2l0ZSBVUkwuIFVzZWQgaW4gbWFraW5nIGJhY2t1cCB6
aXAgZmlsZW5hbWUuCgkgKgoJICogQHJldHVybiBzdHJpbmcgIFRoZSBmaWxlbmFtZSBmcmllbmRseSBjb25
2ZXJ0ZWQgc2l0ZSBVUkwuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYmFja3VwX3ByZWZpeCgpIH
sKCgkJJHNpdGV1cmwgPSBzaXRlX3VybCgpOwoJCSRzaXRldXJsID0gc3RyX3JlcGxhY2UoICdodHRwOi8vJ
ywgJycsICRzaXRldXJsICk7CgkJJHNpdGV1cmwgPSBzdHJfcmVwbGFjZSggJ2h0dHBzOi8vJywgJycsICRz
aXRldXJsICk7CgkJJHNpdGV1cmwgPSBzdHJfcmVwbGFjZSggJy8nLCAnXycsICRzaXRldXJsICk7CgkJJHN
pdGV1cmwgPSBzdHJfcmVwbGFjZSggJ1xcJywgJ18nLCAkc2l0ZXVybCApOwoJCSRzaXRldXJsID0gc3RyX3
JlcGxhY2UoICcuJywgJ18nLCAkc2l0ZXVybCApOwoJCSRzaXRldXJsID0gc3RyX3JlcGxhY2UoICc6JywgJ
18nLCAkc2l0ZXVybCApOyAvLyBBbHRlcm5hdGl2ZSBwb3J0IGZyb20gODAgaXMgc3RvcmVkIGluIHRoZSBz
aXRlIHVybC4KCQkkc2l0ZXVybCA9IHN0cl9yZXBsYWNlKCAnficsICdfJywgJHNpdGV1cmwgKTsgLy8gU3R
yaXAgfi4KCQlyZXR1cm4gJHNpdGV1cmw7CgoJfSAvLyBFbmQgYmFja3VwX3ByZWZpeCgpLgoKCgkvKioKCS
AqIFJldHVybnMgdHJ1ZSBpZiByZXNlbmRpbmcgb3IgZmFsc2UgaWYgcmV0cnkgbGltaXQgYWxyZWFkeSBtZ
XQuCgkgKgoJICogQHBhcmFtIG9iamVjdCAkZmlsZW9wdGlvbnNfb2JqICBGaWxlIE9wdGlvbnMgb2JqZWN0
LiAocGFzc2VkIGJ5IHJlZmVyZW5jZSB1bm5lY2Vzc2FyaWx5Li4uKS4KCSAqIEBwYXJhbSBpbnQgICAgJHN
lbmRfaWQgICAgICAgICAgU2VuZCBJRC4KCSAqIEBwYXJhbSBpbnQgICAgJG1heGltdW1fcmV0cmllcyAgTW
F4aW11bSBudW5iZXIgb2YgcmV0cmllcy4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIElmIHN1Y2Nlc3NmdWwuC
gkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVtb3RlU2VuZFJldHJ5KCAmJGZpbGVvcHRpb25zX29i
aiwgJHNlbmRfaWQsICRtYXhpbXVtX3JldHJpZXMgPSAxICkgewoJCS8vIERlc3RpbmF0aW9uIHNldHRpbmd
zIGFyZSBzdG9yZWQgZm9yIHRoaXMgZGVzdGluYXRpb24gc28gc2VlIGlmIHdlIGNhbiByZXRyeSBzZW5kaW
5nIGl0IChpZiBzZXR0aW5ncyBwZXJtaXQpLgoJCWlmICggaXNzZXQoICRmaWxlb3B0aW9uc19vYmotPm9wd
GlvbnNbJ2Rlc3RpbmF0aW9uU2V0dGluZ3MnXSApICYmICggY291bnQoICRmaWxlb3B0aW9uc19vYmotPm9w
dGlvbnNbJ2Rlc3RpbmF0aW9uU2V0dGluZ3MnXSApID4gMCApICkgewoKCQkJJGRlc3RpbmF0aW9uX3NldHR
pbmdzID0gJGZpbGVvcHRpb25zX29iai0+b3B0aW9uc1snZGVzdGluYXRpb25TZXR0aW5ncyddOyAvLyB0aG
VzZSBhcmUgdGhlIGxhdGVzdDsgaW5jbHVkZXMgaW5mbyBuZWVkZWQgZm9yIGNodW5raW5nIHRvby4KCQkJJ
GRlbGV0ZV9hZnRlciAgICAgICAgID0gJGZpbGVvcHRpb25zX29iai0+b3B0aW9uc1snZGVsZXRlQWZ0ZXIn
XTsKCQkJJHJldHJpZXMgICAgICAgICAgICAgID0gJGZpbGVvcHRpb25zX29iai0+b3B0aW9uc1sncmV0cml
lcyddOwoJCQkkZmlsZSAgICAgICAgICAgICAgICAgPSAkZmlsZW9wdGlvbnNfb2JqLT5vcHRpb25zWydmaW
xlJ107CgoJCQlpZiAoICRyZXRyaWVzIDwgJG1heGltdW1fcmV0cmllcyApIHsKCQkJCXBiX2JhY2t1cGJ1Z
GR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1RpbWVkIG91dCByZW1vdGUgc2VuZCBoYXMgbm90IGV4Y2VlZGVk
IHJldHJ5IGxpbWl0IChgJyAuICRtYXhpbXVtX3JldHJpZXMgLiAnYCkuIFRyeWluZyB0byBzZW5kIGFnYWl
uLicgKTsKCgkJCQkvLyBTY2hlZHVsZSBzZW5kIG9mIHRoaXMgcGllY2UuCgkJCQlwYl9iYWNrdXBidWRkeT
o6c3RhdHVzKCAnZGV0YWlscycsICdTY2hlZHVsaW5nIGNyb24gdG8gc2VuZCB0byB0aGlzIHJlbW90ZSBkZ
XN0aW5hdGlvbi4uLicgKTsKCQkJCSRjcm9uX2FyZ3MgPSBhcnJheSgKCQkJCQkkZGVzdGluYXRpb25fc2V0
dGluZ3MsCgkJCQkJJGZpbGUsCgkJCQkJJHNlbmRfaWQsCgkJCQkJJGRlbGV0ZV9hZnRlciwKCQkJCQknJyw
gLy8gaWRlbnRpZmllci4KCQkJCQl0cnVlLCAvLyBpc1JldHJ5LgoJCQkJKTsKCgkJCQkkc2NoZWR1bGVfcm
VzdWx0ID0gYmFja3VwYnVkZHlfY29yZTo6c2NoZWR1bGVfc2luZ2xlX2V2ZW50KCB0aW1lKCksICdkZXN0a
W5hdGlvbl9zZW5kJywgJGNyb25fYXJncyApOwoJCQkJaWYgKCBmYWxzZSA9PT0gJHNjaGVkdWxlX3Jlc3Vs
dCApIHsKCQkJCQkkZXJyb3IgPSBlc2NfaHRtbF9fKCAnRXJyb3Igc2NoZWR1bGluZyBmaWxlIHRyYW5zZmV
yLiBQbGVhc2UgY2hlY2sgeW91ciBCYWNrdXBCdWRkeSBlcnJvciBsb2cgZm9yIGRldGFpbHMuIEEgcGx1Z2
luIG1heSBoYXZlIHByZXZlbnRlZCBzY2hlZHVsaW5nIG9yIHRoZSBkYXRhYmFzZSByZWplY3RlZCBpdC4nL
CAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3In
LCAkZXJyb3IgKTsKCQkJCQllY2hvICRlcnJvcjsKCQkJCX0gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZHk
6OnN0YXR1cyggJ2RldGFpbHMnLCAnQ3JvbiB0byBzZW5kIHRvIHJlbW90ZSBkZXN0aW5hdGlvbiBzY2hlZH
VsZWQuJyApOwoJCQkJfQoJCQkJaWYgKCAnMScgIT0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydza2lwX
3NwYXduX2Nyb25fY2FsbCddICkgewoJCQkJCXVwZGF0ZV9vcHRpb24oICdfdHJhbnNpZW50X2RvaW5nX2Ny
b24nLCAwICk7IC8vIFByZXZlbnQgY3Jvbi1ibG9ja2luZyBmb3IgbmV4dCBpdGVtLgoJCQkJCXNwYXduX2N
yb24oIHRpbWUoKSArIDE1MCApOyAvLyBBZGRzID4gNjAgc2Vjb25kcyB0byBnZXQgYXJvdW5kIG9uY2UgcG
VyIG1pbnV0ZSBjcm9uIHJ1bm5pbmcgbGltaXQuCgkJCQl9CgoJCQkJcmV0dXJuIHRydWU7CgkJCX0gZWxzZ
SB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdNYXhpbXVtIHJlbW90ZSBzZW5k
IHRpbWVvdXQgcmV0cmllcyAoYCcgLiAkbWF4aW11bV9yZXRyaWVzIC4gJ2ApIHBhc3NlZCB0byBmdW5jdGl
vbiBtZXQuIE5vdCByZXNlbmRpbmcuJyApOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJfSAvLyBFbm
QgcmVtb3RlU2VuZFJldHJ5KCkuCgoKCS8qKgoJICogR2V0IGRlZmF1bHQgYXJyYXkgdmFsdWVzIGZvciB0a
GUgcmVtb3RlX3NlbmRzIGZpbGVvcHRpb25zIGZpbGVzLgoJICoKCSAqIEByZXR1cm4gYXJyYXkgIFJlbW90
ZSBzZW5kIGRlZmF1bHRzLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9yZW1vdGVfc2VuZF9
kZWZhdWx0cygpIHsKCQlyZXR1cm4gYXJyYXkoCgkJCSdkZXN0aW5hdGlvbicgICAgICAgICA9PiAwLAoJCQ
knZmlsZScgICAgICAgICAgICAgICAgPT4gJycsCgkJCSdmaWxlX3NpemUnICAgICAgICAgICA9PiAwLAoJC
QkndHJpZ2dlcicgICAgICAgICAgICAgPT4gJycsICAgICAgICAgICAgICAgICAgICAgLy8gV2hhdCB0cmln
Z2VyZWQgdGhpcyBiYWNrdXAuIFZhbGlkIHZhbHVlczogc2NoZWR1bGVkLCBtYW51YWwuCgkJCSdzZW5kX2l
tcG9ydGJ1ZGR5JyAgICA9PiBmYWxzZSwKCQkJJ3N0YXJ0X3RpbWUnICAgICAgICAgID0+IHRpbWUoKSwKCQ
kJJ2ZpbmlzaF90aW1lJyAgICAgICAgID0+IDAsCgkJCSd1cGRhdGVfdGltZScgICAgICAgICA9PiB0aW1lK
CksCgkJCSdzdGF0dXMnICAgICAgICAgICAgICA9PiAncnVubmluZycsICAvLyBzdWNjZXNzLCBmYWlsdXJl
LCBydW5uaW5nLCB0aW1lb3V0IChkZWZhdWx0IGFzc3VtcHRpb24gaWYgdGhpcyBpcyBub3QgdXBkYXRlZCB
pbiB0aGlzIFBIUCBsb2FkKS4KCQkJJ3dyaXRlX3NwZWVkJyAgICAgICAgID0+IDAsCgkJCSdkZXN0aW5hdG
lvblNldHRpbmdzJyA9PiBhcnJheSgpLAoJCQknc2VuZElEJyAgICAgICAgICAgICAgPT4gJycsCgkJCSdkZ
WxldGVBZnRlcicgICAgICAgICA9PiBmYWxzZSwKCQkJJ3JldHJpZXMnICAgICAgICAgICAgID0+IDAsCgkJ
KTsKCX0gLy8gRW5kIGdldF9yZW1vdGVfc2VuZF9kZWZhdWx0cygpOwoKCgoJLyoqCgkgKiBTZW5kIFJlbW9
0ZSBEZXN0aW5hdGlvbi4KCSAqCgkgKiBAcGFyYW0gaW50ICAgICRkZXN0aW5hdGlvbl9pZCAgICAgICAgSU
QgbnVtYmVyIChpbmRleCBvZiB0aGUgZGVzdGluYXRpb25zIGFycmF5KSB0byBzZW5kIGl0LgoJICogQHBhc
mFtIHN0cmluZyAkZmlsZSAgICAgICAgICAgICAgICAgIEZ1bGwgZmlsZSBwYXRoIG9mIGZpbGUgdG8gc2Vu
ZC4gTUFZIGJlIGFuIGFycmF5IG9mIGZpbGVzLgoJICogQHBhcmFtIHN0cmluZyAkdHJpZ2dlciAgICAgICA
gICAgICAgIFdoYXQgdHJpZ2dlcmVkIHRoaXMgYmFja3VwLiBWYWxpZCB2YWx1ZXM6IHNjaGVkdWxlZCwgbW
FudWFsLgoJICogQHBhcmFtIGJvb2wgICAkc2VuZF9pbXBvcnRidWRkeSAgICAgIFdoZXRoZXIgb3Igbm90I
GltcG9ydGJ1ZGR5LnBocCBzaG91bGQgYWxzbyBi
ZSBzZW50IHdpdGggdGhlIGZpbGUgdG8gZGVzdGluYXRpb24uCgkgKiBAcGFyYW0gYm9vbCAgICRkZWxldGV
fYWZ0ZXIgICAgICAgICAgV2hldGhlciBvciBub3QgdG8gZGVsZXRlIGFmdGVyIHNlbmQgc3VjY2VzcyBhZn
RlciBUSElTIHNlbmQuCgkgKiBAcGFyYW0gc3RyaW5nICRpZGVudGlmaWVyICAgICAgICAgICAgSWRlbnRpZ
mllci4KCSAqIEBwYXJhbSBzdHJpbmcgJGRlc3RpbmF0aW9uX3NldHRpbmdzICBJZiBwYXNzZWQgdGhlbiB0
aGlzIGFycmF5IGlzIHVzZWQgaW5zdGVhZCBvZiBncmFiYmluZyBmcm9tIHNldHRpbmdzLgoJICoKCSAqIEB
yZXR1cm4gYm9vbCAgU2VuZCBzdGF0dXMuIHRydWUgc3VjY2VzcywgZmFsc2UgZmFpbGVkLgoJICovCglwdW
JsaWMgc3RhdGljIGZ1bmN0aW9uIHNlbmRfcmVtb3RlX2Rlc3RpbmF0aW9uKCAkZGVzdGluYXRpb25faWQsI
CRmaWxlLCAkdHJpZ2dlciA9ICcnLCAkc2VuZF9pbXBvcnRidWRkeSA9IGZhbHNlLCAkZGVsZXRlX2FmdGVy
ID0gZmFsc2UsICRpZGVudGlmaWVyID0gJycsICRkZXN0aW5hdGlvbl9zZXR0aW5ncyA9ICcnICkgewoKCQl
pZiAoICEgaXNfYXJyYXkoICRmaWxlICkgKSB7CgkJCWlmICggISBmaWxlX2V4aXN0cyggJGZpbGUgKSApIH
sKCQkJCS8vIENoZWNrIGlmIHV0ZjggZGVjb2RpbmcgdGhlIGZpbGVuYW1lIGhlbHBzIHVzIGZpbmQgaXQuC
gkJCQkkdXRmX2RlY29kZWRfZmlsZW5hbWUgPSB1dGY4X2RlY29kZSggJGZpbGUgKTsKCQkJCWlmICggZmls
ZV9leGlzdHMoICR1dGZfZGVjb2RlZF9maWxlbmFtZSApICkgewoJCQkJCSRmaWxlID0gJHV0Zl9kZWNvZGV
kX2ZpbGVuYW1lOwoJCQkJfSBlbHNlIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLC
AnRXJyb3IgIzg1ODM0ODk3MzQ6IFVuYWJsZSB0byBzZW5kIGZpbGUgYCcgLiAkZmlsZSAuICdgIHRvIHJlb
W90ZSBkZXN0aW5hdGlvbiBhcyBpdCBubyBsb25nZXIgZXhpc3RzLiBJdCBtYXkgaGF2ZSBiZWVuIGRlbGV0
ZWQgb3IgcGVybWlzc2lvbnMgYXJlIGludmFsaWQuJyApOwoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQk
JfQoJCX0KCgkJJG1pZ3JhdGlvbmtleV90cmFuc2llbnRfdGltZSA9IDYwICogNjAgKiAyNDsKCgkJaWYgKC
AhIGlzX2FycmF5KCAkZmlsZSApICkgewoJCQlpZiAoICcnID09ICRmaWxlICkgewoJCQkJJGJhY2t1cF9ma
WxlX3NpemUgPSA1MDAwMDsgLy8gbm90IHN1cmUgd2h5IGFueXRoaW5nIGN1cnJlbnQgd291bGQgYmUgc2Vu
ZGluZyBpbXBvcnRidWRkeSBidXQgTk9UIHNlbmRpbmcgYSBiYWNrdXAgYnV0IGp1c3QgaW4gY2FzZS4uLgo
JCQl9IGVsc2UgewoJCQkJJGJhY2t1cF9maWxlX3NpemUgPSBmaWxlc2l6ZSggJGZpbGUgKTsKCQkJfQoJCX
0gZWxzZSB7CgkJCSRiYWNrdXBfZmlsZV9zaXplID0gLTE7CgkJfQoKCQkvLyBHZW5lcmF0ZSByZW1vdGUgc
2VuZCBJRCBmb3IgcmVmZXJlbmNlIGFuZCBhZGQgaXQgYXMgYSBuZXcgbG9nZ2luZyBzZXJpYWwgZm9yIGJl
dHRlciByZWNvcmRpbmcgZGV0YWlscy4KCQlpZiAoICcnID09ICRpZGVudGlmaWVyICkgewoJCQkkaWRlbnR
pZmllciA9IHBiX2JhY2t1cGJ1ZGR5OjpyYW5kb21fc3RyaW5nKCAxMiApOwoJCX0KCgkJLy8gU2V0IG1pZ3
JhdGlvbiBrZXkgZm9yIGxhdGVyIGRldGVybWluaW5nIGxhc3QgaW5pdGlhdGVkIG1pZ3JhdGlvbi4KCQlpZ
iAoICdtaWdyYXRpb24nID09ICR0cmlnZ2VyICkgewoJCQlzZXRfdHJhbnNpZW50KCAncGJfYmFja3VwYnVk
ZHlfbWlncmF0aW9ua2V5JywgJGlkZW50aWZpZXIsICRtaWdyYXRpb25rZXlfdHJhbnNpZW50X3RpbWUgKTs
KCQl9CgoJCWlmICggISBpc19hcnJheSggJGZpbGUgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cy
ggJ2RldGFpbHMnLCAnU2VuZGluZyBmaWxlIGAnIC4gJGZpbGUgLiAnYCB0byByZW1vdGUgZGVzdGluYXRpb
24gYCcgLiAkZGVzdGluYXRpb25faWQgLiAnYCB3aXRoIElEIGAnIC4gJGlkZW50aWZpZXIgLiAnYCB0cmln
Z2VyZWQgYnkgYCcgLiAkdHJpZ2dlciAuICdgLicgKTsKCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZGV0YWlscycsICdTZW5kaW5nIG11bHRpcGxlIGZpbGVzICgnIC4gY291bnQoICRmaWxlIC
kgLiAnKSBpbiBzaW5nbGUgcGFzcyB0byByZW1vdGUgZGVzdGluYXRpb24gYCcgLiAkZGVzdGluYXRpb25fa
WQgLiAnYCB3aXRoIElEIGAnIC4gJGlkZW50aWZpZXIgLiAnYCB0cmlnZ2VyZWQgYnkgYCcgLiAkdHJpZ2dl
ciAuICdgLicgKTsKCQl9CgoJCXJlcXVpcmVfb25jZSBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSA
uICcvY2xhc3Nlcy9maWxlb3B0aW9ucy5waHAnOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaW
xzJywgJ0ZpbGVvcHRpb25zIGluc3RhbmNlICMzNS4nICk7CgkJJGZpbGVvcHRpb25zX29iaiA9IG5ldyBwY
l9iYWNrdXBidWRkeV9maWxlb3B0aW9ucyggYmFja3VwYnVkZHlfY29yZTo6Z2V0TG9nRGlyZWN0b3J5KCkg
LiAnZmlsZW9wdGlvbnMvc2VuZC0nIC4gJGlkZW50aWZpZXIgLiAnLnR4dCcsIGZhbHNlLCB0cnVlLCB0cnV
lICk7CgkJJHJlc3VsdCAgICAgICAgICA9ICRmaWxlb3B0aW9uc19vYmotPmlzX29rKCk7CgkJaWYgKCB0cn
VlICE9PSAkcmVzdWx0ICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCBfXyggJ0Zhd
GFsIEVycm9yICM5MDM0IEEuIFVuYWJsZSB0byBhY2Nlc3MgZmlsZW9wdGlvbnMgZGF0YS4nLCAnaXQtbDEw
bi1iYWNrdXBidWRkeScgKSAuICcgRXJyb3I6ICcgLiAkcmVzdWx0ICk7CgkJCXJldHVybiBmYWxzZTsKCQl
9CgoJCSRmaWxlb3B0aW9ucyA9ICYkZmlsZW9wdGlvbnNfb2JqLT5vcHRpb25zOyAvLyBTZXQgcmVmZXJlbm
NlLgoKCQkvLyBSZWNvcmQgc29tZSBzdGF0aXN0aWNzLgoJCSRmaWxlb3B0aW9ucyA9IGFycmF5X21lcmdlK
AoJCQlzZWxmOjpnZXRfcmVtb3RlX3NlbmRfZGVmYXVsdHMoKSwKCQkJYXJyYXkoCgkJCQknZGVzdGluYXRp
b24nICAgICAgPT4gJGRlc3RpbmF0aW9uX2lkLAoJCQkJJ2ZpbGUnICAgICAgICAgICAgID0+ICRmaWxlLAo
JCQkJJ2ZpbGVfc2l6ZScgICAgICAgID0+ICRiYWNrdXBfZmlsZV9zaXplLAoJCQkJJ3RyaWdnZXInICAgIC
AgICAgID0+ICR0cmlnZ2VyLCAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hhdCB0cmlnZ2VyZWQgdGhpc
yBiYWNrdXAuIFZhbGlkIHZhbHVlczogc2NoZWR1bGVkLCBtYW51YWwuCgkJCQknc2VuZF9pbXBvcnRidWRk
eScgPT4gJHNlbmRfaW1wb3J0YnVkZHksCgkJCQknc3RhcnRfdGltZScgICAgICAgPT4gdGltZSgpLAoJCQk
JJ2ZpbmlzaF90aW1lJyAgICAgID0+IDAsCgkJCQknc3RhdHVzJyAgICAgICAgICAgPT4gJ3J1bm5pbmcnLC
AgLy8gc3VjY2VzcywgZmFpbHVyZSwgcnVubmluZywgdGltZW91dCAoZGVmYXVsdCBhc3N1bXB0aW9uIGlmI
HRoaXMgaXMgbm90IHVwZGF0ZWQgaW4gdGhpcyBQSFAgbG9hZCkuCgkJCQknd3JpdGVfc3BlZWQnICAgICAg
PT4gMCwKCQkJKQoJCSk7CgkJcGJfYmFja3VwYnVkZHk6OnNhdmUoKTsKCgkJLy8gRGVzdGluYXRpb24gc2V
0dGluZ3Mgd2VyZSBub3QgcGFzc2VkIHNvIGdldCB0aGVtIGJhc2VkIG9uIHRoZSBkZXN0aW5hdGlvbiBJRC
Bwcm92aWRlZC4KCQlpZiAoICEgaXNfYXJyYXkoICRkZXN0aW5hdGlvbl9zZXR0aW5ncyApICkgewoJCQkkZ
GVzdGluYXRpb25fc2V0dGluZ3MgPSAmcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydyZW1vdGVfZGVzdGlu
YXRpb25zJ11bICRkZXN0aW5hdGlvbl9pZCBdOwoJCX0KCgkJaWYgKCB0cnVlID09PSAkc2VuZF9pbXBvcnR
idWRkeSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnR2VuZXJhdGluZyB0ZW
1wb3JhcnkgaW1wb3J0YnVkZHkucGhwIGZpbGUgZm9yIHJlbW90ZSBzZW5kLicgKTsKCQkJcGJfYmFja3VwY
nVkZHk6OmFudGlfZGlyZWN0b3J5X2Jyb3dzaW5nKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRUZW1wRGlyZWN0
b3J5KCksIGZhbHNlICk7CgkJCSRpbXBvcnRidWRkeV90ZW1wID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0VGV
tcERpcmVjdG9yeSgpIC4gJ2ltcG9ydGJ1ZGR5LnBocCc7IC8vIEZ1bGwgcGF0aCAmIGZpbGVuYW1lIHRvIH
RlbXBvcmFyeSBpbXBvcnRidWRkeS4KCQkJc2VsZjo6aW1wb3J0YnVkZHkoICRpbXBvcnRidWRkeV90ZW1wI
Ck7IC8vIENyZWF0ZSB0ZW1wb3JhcnkgaW1wb3J0YnVkZHkuCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMo
ICdkZXRhaWxzJywgJ0dlbmVyYXRlZCB0ZW1wb3JhcnkgaW1wb3J0YnVkZHkuJyApOwoJCQkkaW1wb3J0YnV
kZHlfZmlsZSA9ICRpbXBvcnRidWRkeV90ZW1wOyAvLyBBZGQgaW1wb3J0YnVkZHkgZmlsZSB0byB0aGUgbG
lzdCBvZiBmaWxlcyB0byBzZW5kLgoJCQkkc2VuZF9pbXBvcnRidWRkeSA9IHRydWU7IC8vIFRyYWNrIHRvI
GRlbGV0ZSBhZnRlciBmaW5pc2hlZC4KCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
ZGV0YWlscycsICdOb3Qgc2VuZGluZyBpbXBvcnRidWRkeS4nICk7CgkJfQoKCQkvLyBDbGVhciBmaWxlb3B
0aW9ucyBzbyBvdGhlciBzdHVmZiBjYW4gYWNjZXNzIGl0IGlmIG5lZWRlZC4KCQkkZmlsZW9wdGlvbnNfb2
JqLT5zYXZlKCk7CgkJJGZpbGVvcHRpb25zX29iai0+dW5sb2NrKCk7CgkJdW5zZXQoICRmaWxlb3B0aW9uc
19vYmogKTsKCgkJLy8gUGFzcyBvZmYgdG8gZGVzdGluYXRpb24gaGFuZGxlci4KCQlyZXF1aXJlX29uY2Ug
cGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2Rlc3RpbmF0aW9ucy9ib290c3RyYXAucGhwJzs
KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQ2FsbGluZyBkZXN0aW5hdGlvbiBzZW
5kKCkgZnVuY3Rpb24uJyApOwoJCSRzZW5kX3Jlc3VsdCA9IHBiX2JhY2t1cGJ1ZGR5X2Rlc3RpbmF0aW9uc
zo6c2VuZCggJGRlc3RpbmF0aW9uX3NldHRpbmdzLCAkZmlsZSwgJGlkZW50aWZpZXIsICRkZWxldGVfYWZ0
ZXIgKTsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGaW5pc2hlZCBkZXN0aW5hdGl
vbiBzZW5kKCkgZnVuY3Rpb24uJyApOwoKCQlpZiAoICEgZW1wdHkoICRzZW5kX2ltcG9ydGJ1ZGR5ICkgJi
YgaXNfcmVhZGFibGUoICRpbXBvcnRidWRkeV9maWxlICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0d
XMoICdkZXRhaWxzJywgJ0NhbGxpbmcgZGVzdGluYXRpb24gc2VuZCgpIGZ1bmN0aW9uIGZvciBpbXBvcnRi
dWRkeS5waHAuJyApOwoJCQkkc2VuZF9yZXN1bHQgPSBwYl9iYWNrdXBidWRkeV9kZXN0aW5hdGlvbnM6OnN
lbmQoICRkZXN0aW5hdGlvbl9zZXR0aW5ncywgJGltcG9ydGJ1ZGR5X2ZpbGUsICRpZGVudGlmaWVyLCAkZG
VsZXRlX2FmdGVyICk7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0ZpbmlzaGVkI
GRlc3RpbmF0aW9uIHNlbmQoKSBmdW5jdGlvbiBmb3IgaW1wb3J0YnVkZHkucGhwLicgKTsKCgkJfQoKCQlz
ZWxmOjpraWNrX2RiKCk7IC8vIEtpY2sgdGhlIGRhdGFiYXNlIHRvIG1ha2Ugc3VyZSBpdCBkaWRuJ3QgZ28
gYXdheSwgcHJldmVudGluZyBvcHRpb25zIHNhdmluZy4KCgkJLy8gUmVsb2FkIGZpbGVvcHRpb25zLgoJCX
BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0Fib3V0IHRvIGxvYWQgZmlsZW9wdGlvbnMgZ
GF0YSBmb3Igc2F2aW5nIHNlbmQgc3RhdHVzLicgKTsKCQlyZXF1aXJlX29uY2UgcGJfYmFja3VwYnVkZHk6
OnBsdWdpbl9wYXRoKCkgLiAnL2NsYXNzZXMvZmlsZW9wdGlvbnMucGhwJzsKCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZGV0YWlscycsICdGaWxlb3B0aW9ucyBpbnN0YW5jZSAjMzQuJyApOwoJCSRmaWxlb3B0aW
9uc19vYmogPSBuZXcgcGJfYmFja3VwYnVkZHlfZmlsZW9wdGlvbnMoIGJhY2t1cGJ1ZGR5X2NvcmU6Omdld
ExvZ0RpcmVjdG9yeSgpIC4gJ2ZpbGVvcHRpb25zL3NlbmQtJyAuICRpZGVudGlmaWVyIC4gJy50eHQnLCBm
YWxzZSwgZmFsc2UsIGZhbHNlICk7CgkJJHJlc3VsdCAgICAgICAgICA9ICRmaWxlb3B0aW9uc19vYmotPml
zX29rKCk7CgkJaWYgKCB0cnVlICE9PSAkcmVzdWx0ICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKC
AnZXJyb3InLCBfXyggJ0ZhdGFsIEVycm9yICM5MDM0IEcuIFVuYWJsZSB0byBhY2Nlc3MgZmlsZW9wdGlvb
nMgZGF0YS4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICcgRXJyb3I6ICcgLiAkcmVzdWx0ICk7CgkJ
CXJldHVybiBmYWxzZTsKCQl9CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRmlsZW9
wdGlvbnMgZGF0YSBsb2FkZWQgZm9yIElEIGAnIC4gJGlkZW50aWZpZXIgLiAnYC4nICk7CgkJJGZpbGVvcH
Rpb25zID0gJiRmaWxlb3B0aW9uc19vYmotPm9wdGlvbnM7IC8vIFNldCByZWZlcmVuY2UuCgoJCS8vIFVwZ
GF0ZSBzdGF0cy4KCQkkZmlsZW9wdGlvbnNbICRpZGVudGlmaWVyIF1bJ2ZpbmlzaF90aW1lJ10gPSBtaWNy
b3RpbWUoIHRydWUgKTsKCQlpZiAoIHRydWUgPT09ICRzZW5kX3Jlc3VsdCApIHsgLy8gc3VjY2VlZGVkLgo
JCQkkZmlsZW9wdGlvbnNbJ3N0YXR1cyddICAgICAgPSAnc3VjY2Vzcyc7CgkJCSRmaWxlb3B0aW9uc1snZm
luaXNoX3RpbWUnXSA9IG1pY3JvdGltZSggdHJ1ZSApOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZ
GV0YWlscycsICdSZW1vdGUgc2VuZCBTVUNDRVNTLicgKTsKCQl9IGVsc2VpZiAoIGZhbHNlID09PSAkc2Vu
ZF9yZXN1bHQgKSB7IC8vIGZhaWxlZC4KCQkJJGZpbGVvcHRpb25zWydzdGF0dXMnXSA9ICdmYWlsdXJlJzs
KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUmVtb3RlIHNlbmQgRkFJTFVSRS4nIC
k7CgkJfSBlbHNlaWYgKCBpc19hcnJheSggJHNlbmRfcmVzdWx0ICkgKSB7IC8vIEFycmF5IHNvIG11bHRpc
GFydC4KCQkJJGZpbGVvcHRpb25zWydzdGF0dXMnXSAgICAgICAgICAgID0gJ211bHRpcGFydCc7CgkJCSRm
aWxlb3B0aW9uc1snZmluaXNoX3RpbWUnXSAgICAgICA9IDA7CgkJCSRmaWxlb3B0aW9uc1snX211bHRpcGF
ydF9pZCddICAgICA9ICRzZW5kX3Jlc3VsdFswXTsKCQkJJGZpbGVvcHRpb25zWydfbXVsdGlwYXJ0X3N0YX
R1cyddID0gJHNlbmRfcmVzdWx0WzFdOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsI
CdNdWx0aXBhcnQgc2VuZCBpbiBwcm9ncmVzcy4nICk7CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZHk6
OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICM1NDg1Nzg1NTc2NDYzLiBJbnZhbGlkIHN0YXR1cyBzZW5kIHJ
lc3VsdDogYCcgLiAkc2VuZF9yZXN1bHQgLiAnYC4nICk7CgkJfQoJCSRmaWxlb3B0aW9uc19vYmotPnNhdm
UoKTsKCgkJLy8gSWYgd2Ugc2VudCBpbXBvcnRidWRkeSB0aGVuIGRlbGV0ZSB0aGUgbG9jYWwgY29weSB0b
yBjbGVhbiB1cC4KCQlpZiAoIGZhbHNlICE9PSAkc2VuZF9pbXBvcnRidWRkeSApIHsKCQkJQHVubGluaygg
JGltcG9ydGJ1ZGR5X3RlbXAgKTsgLy8gRGVsZXR
lIHRlbXBvcmFyeSBpbXBvcnRidWRkeS4KCQl9CgoJCS8vIEFzIG9mIHY1LjA6IFBvc3Qtc2VuZCBkZWxldG
lvbiBub3cgaGFuZGxlZCB3aXRoaW4gZGVzdGluYXRpb25zL2Jvb3RzdHJhcC5waHAgc2VuZCgpIHRvIHN1c
HBvcnQgY2h1bmtlZCBzZW5kcy4KCQlyZXR1cm4gJHNlbmRfcmVzdWx0OwoKCX0gLy8gRW5kIHNlbmRfcmVt
b3RlX2Rlc3RpbmF0aW9uKCkuCgoKCS8qKgoJICogU2VuZCBmaWxlKHMpIHRvIGEgZGVzdGluYXRpb24uIFB
hc3MgZnVsbCBhcnJheSBvZiBkZXN0aW5hdGlvbiBzZXR0aW5ncy4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgIC
RkZXN0aW5hdGlvbl9zZXR0aW5ncyAgQWxsIHNldHRpbmdzIGZvciB0aGlzIGRlc3RpbmF0aW9uIGZvciB0a
GlzIGFjdGlvbi4KCSAqIEBwYXJhbSBhcnJheSAgJGZpbGVzICAgICAgICAgICAgICAgICBBcnJheSBvZiBm
aWxlcyB0byBzZW5kIChmdWxsIHBhdGgpLgoJICogQHBhcmFtIHN0cmluZyAkc2VuZF9pZCAgICAgICAgICA
gICAgIFNlbmQgSUQuCgkgKiBAcGFyYW0gYm9vbCAgICRkZWxldGVfYWZ0ZXIgICAgICAgICAgV2hldGhlci
BvciBub3QgdG8gZGVsZXRlIGFmdGVyIHNlbmQgc3VjY2VzcyBhZnRlciBUSElTIHNlbmQuCgkgKiBAcGFyY
W0gYm9vbCAgICRpc19yZXRyeSAgICAgICAgICAgICAgSWYgaXMgYSByZXRyeSBhdHRlbXB0LgoJICoKCSAq
IEByZXR1cm4gYm9vbHxhcnJheSAgQm9vbCB0cnVlID0gc3VjY2VzcywgYm9vbCBmYWxzZSA9IGZhaWwsIGF
ycmF5ID0gbXVsdGlwYXJ0IHRyYW5zZmVyLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlc3Rpbm
F0aW9uX3NlbmQoICRkZXN0aW5hdGlvbl9zZXR0aW5ncywgJGZpbGVzLCAkc2VuZF9pZCA9ICcnLCAkZGVsZ
XRlX2FmdGVyID0gZmFsc2UsICRpc19yZXRyeSA9IGZhbHNlICkgewoKCQkvLyBQYXNzIG9mZiB0byBkZXN0
aW5hdGlvbiBoYW5kbGVyLgoJCXJlcXVpcmVfb25jZSBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSA
uICcvZGVzdGluYXRpb25zL2Jvb3RzdHJhcC5waHAnOwoJCSRzZW5kX3Jlc3VsdCA9IHBiX2JhY2t1cGJ1ZG
R5X2Rlc3RpbmF0aW9uczo6c2VuZCggJGRlc3RpbmF0aW9uX3NldHRpbmdzLCAkZmlsZXMsICRzZW5kX2lkL
CAkZGVsZXRlX2FmdGVyLCAkaXNfcmV0cnkgKTsKCgkJcmV0dXJuICRzZW5kX3Jlc3VsdDsKCgl9IC8vIEVu
ZCBkZXN0aW5hdGlvbl9zZW5kKCkuCgoKCgkvKioKCSAqIEdldHMgYSBsaXN0IG9mIGJhY2t1cHMuCgkgKgo
JICogQHBhcmFtIHN0cmluZyAkdHlwZSAgICAgICAgICBWYWxpZCBvcHRpb25zOiBkZWZhdWx0LCBtaWdyYX
RlLgoJICogQHBhcmFtIGJvb2wgICAkc3Vic2l0ZV9tb2RlICBXaGVuIGluIHN1YnNpdGUgbW9kZSBvbmx5I
GJhY2t1cHMgZm9yIHRoYXQgc3BlY2lmaWMgc3Vic2l0ZSB3aWxsIGJlIGxpc3RlZC4KCSAqCgkgKiBAcmV0
dXJuIGFycmF5ICBTb3J0ZWQgYXJyYXkgb2YgYmFja3Vwcy4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGl
vbiBiYWNrdXBzX2xpc3QoICR0eXBlID0gJ2RlZmF1bHQnLCAkc3Vic2l0ZV9tb2RlID0gZmFsc2UgKSB7Cg
oJCWlmICggJ2RlbGV0ZV9iYWNrdXAnID09PSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdidWxrX2FjdGlvb
icgKSAmJiBpc19hcnJheSggcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnaXRlbXMnICkgKSApIHsKCQkJJG5l
ZWRzX3NhdmUgPSBmYWxzZTsKCQkJcGJfYmFja3VwYnVkZHk6OnZlcmlmeV9ub25jZSggcGJfYmFja3VwYnV
kZHk6Ol9QT1NUKCAnX3dwbm9uY2UnICkgKTsgLy8gU2VjdXJpdHkgY2hlY2sgdG8gcHJldmVudCB1bmF1dG
hvcml6ZWQgZGVsZXRpb25zIGJ5IHBvc3RpbmcgZnJvbSBhIHJlbW90ZSBwbGFjZS4KCQkJJGRlbGV0ZWRfZ
mlsZXMgPSBhcnJheSgpOwoJCQlmb3JlYWNoICggcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCAnaXRlbXMnICkg
YXMgJGl0ZW0gKSB7CgkJCQlpZiAoIGZpbGVfZXhpc3RzKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRCYWNrdXB
EaXJlY3RvcnkoKSAuICRpdGVtICkgKSB7CgkJCQkJaWYgKCB0cnVlID09PSBAdW5saW5rKCBiYWNrdXBidW
RkeV9jb3JlOjpnZXRCYWNrdXBEaXJlY3RvcnkoKSAuICRpdGVtICkgKSB7CgkJCQkJCSRkZWxldGVkX2Zpb
GVzW10gPSAkaXRlbTsKCgkJCQkJCS8vIENsZWFudXAgYW55IHJlbGF0ZWQgZmlsZW9wdGlvbnMgZmlsZXMu
CgkJCQkJCSRzZXJpYWwgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRfc2VyaWFsX2Zyb21fZmlsZSggJGl0ZW0
gKTsKCgkJCQkJCSRiYWNrdXBfZmlsZXMgPSBnbG9iKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRCYWNrdXBEaX
JlY3RvcnkoKSAuICcqLnppcCcgKTsKCQkJCQkJaWYgKCAhIGlzX2FycmF5KCAkYmFja3VwX2ZpbGVzICkgK
SB7CgkJCQkJCQkkYmFja3VwX2ZpbGVzID0gYXJyYXkoKTsKCQkJCQkJfQoJCQkJCQlpZiAoIGNvdW50KCAk
YmFja3VwX2ZpbGVzICkgPiA1ICkgeyAvLyBLZWVwIGEgbWluaW11bSBudW1iZXIgb2YgYmFja3VwcyBpbiB
hcnJheSBmb3Igc3RhdHMuCgkJCQkJCQkkdGhpc19zZXJpYWwgICAgICA9IHNlbGY6OmdldF9zZXJpYWxfZn
JvbV9maWxlKCAkaXRlbSApOwoJCQkJCQkJJGZpbGVvcHRpb25zX2ZpbGUgPSBiYWNrdXBidWRkeV9jb3JlO
jpnZXRMb2dEaXJlY3RvcnkoKSAuICdmaWxlb3B0aW9ucy8nIC4gJHRoaXNfc2VyaWFsIC4gJy50eHQnOwoJ
CQkJCQkJaWYgKCBmaWxlX2V4aXN0cyggJGZpbGVvcHRpb25zX2ZpbGUgKSApIHsKCQkJCQkJCQlAdW5saW5
rKCAkZmlsZW9wdGlvbnNfZmlsZSApOwoJCQkJCQkJfQoJCQkJCQkJaWYgKCBmaWxlX2V4aXN0cyggJGZpbG
VvcHRpb25zX2ZpbGUgLiAnLmxvY2snICkgKSB7CgkJCQkJCQkJQHVubGluayggJGZpbGVvcHRpb25zX2Zpb
GUgLiAnLmxvY2snICk7CgkJCQkJCQl9CgkJCQkJCQkkbmVlZHNfc2F2ZSA9IHRydWU7CgkJCQkJCX0KCQkJ
CQl9IGVsc2UgewoJCQkJCQlwYl9iYWNrdXBidWRkeTo6YWxlcnQoICdFcnJvcjogVW5hYmxlIHRvIGRlbGV
0ZSBiYWNrdXAgZmlsZSBgJyAuICRpdGVtIC4gJ2AuIFBsZWFzZSB2ZXJpZnkgcGVybWlzc2lvbnMuJywgdH
J1ZSApOwoJCQkJCX0KCQkJCX0gLy8gRW5kIGlmIGZpbGUgZXhpc3RzLgoJCQl9IC8vIEVuZCBmb3JlYWNoL
goJCQlpZiAoIHRydWUgPT09ICRuZWVkc19zYXZlICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OnNhdmUoKTsK
CQkJfQoKCQkJcGJfYmFja3VwYnVkZHk6OmFsZXJ0KCBfXyggJ0RlbGV0ZWQ6JywgJ2l0LWwxMG4tYmFja3V
wYnVkZHknICkgLiAnICcgLiBpbXBsb2RlKCAnLCAnLCAkZGVsZXRlZF9maWxlcyApICk7CgkJfSAvLyBFbm
QgaWYgZGVsZXRpbmcgYmFja3VwKHMpLgoKCQkkYmFja3VwcyAgICAgICAgICAgPSBhcnJheSgpOwoJCSRiY
WNrdXBfc29ydF9kYXRlcyA9IGFycmF5KCk7CgoJCSRmaWxlcyA9IGdsb2IoIGJhY2t1cGJ1ZGR5X2NvcmU6
OmdldEJhY2t1cERpcmVjdG9yeSgpIC4gJ2JhY2t1cCouemlwJyApOwoJCWlmICggISBpc19hcnJheSggJGZ
pbGVzICkgKSB7CgkJCSRmaWxlcyA9IGFycmF5KCk7CgkJfQoKCQkkZmlsZXMyID0gZ2xvYiggYmFja3VwYn
VkZHlfY29yZTo6Z2V0QmFja3VwRGlyZWN0b3J5KCkgLiAnc25hcHNob3QqLnppcCcgKTsKCQlpZiAoICEga
XNfYXJyYXkoICRmaWxlczIgKSApIHsKCQkJJGZpbGVzMiA9IGFycmF5KCk7CgkJfQoKCQkkZmlsZXMgPSBh
cnJheV9tZXJnZSggJGZpbGVzLCAkZmlsZXMyICk7CgoJCWlmICggaXNfYXJyYXkoICRmaWxlcyApICYmICE
gZW1wdHkoICRmaWxlcyApICkgeyAvLyBGb3Igcm9idXN0bmVzcy4gV2l0aG91dCBvcGVuX2Jhc2VkaXIgdG
hlIGdsb2IoKSBmdW5jdGlvbiByZXR1cm5zIGFuIGVtcHR5IGFycmF5IGZvciBubyBtYXRjaC4gV2l0aCBvc
GVuX2Jhc2VkaXIgaW4gZWZmZWN0IHRoZSBnbG9iKCkgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gZmFs
c2UgZm9yIG5vIG1hdGNoLgoKCQkJJGJhY2t1cF9wcmVmaXggPSBzZWxmOjpiYWNrdXBfcHJlZml4KCk7IC8
vIEJhY2t1cCBwcmVmaXggZm9yIHRoaXMgc2l0ZS4gVXNlZCBmb3IgTVMgY2hlY2tpbmcgdGhhdCB0aGlzIH
VzZXIgY2FuIHNlZSB0aGlzIGJhY2t1cC4KCQkJZm9yZWFjaCAoICRmaWxlcyBhcyAkZmlsZV9pZCA9PiAkZ
mlsZSApIHsKCgkJCQlpZiAoIHRydWUgPT09ICRzdWJzaXRlX21vZGUgJiYgaXNfbXVsdGlzaXRlKCkgKSB7
IC8vIElmIGEgTmV0d29yayBhbmQgTk9UIHRoZSBzdXBlcmFkbWluIG11c3QgbWFrZSBzdXJlIHRoZXkgY2F
uIG9ubHkgc2VlIHRoZSBzcGVjaWZpYyBzdWJzaXRlIGJhY2t1cHMgZm9yIHNlY3VyaXR5IHB1cnBvc2VzLg
oKCQkJCQkvLyBPbmx5IGFsbG93IHZpZXdpbmcgb2YgdGhlaXIgb3duIGJhY2t1cHMuCgkJCQkJaWYgKCAhI
HN0cnN0ciggJGZpbGUsICRiYWNrdXBfcHJlZml4ICkgKSB7CgkJCQkJCXVuc2V0KCAkZmlsZXNbICRmaWxl
X2lkIF0gKTsgLy8gUmVtb3ZlIHRoaXMgYmFja3VwIGZyb20gdGhlIGxpc3QuIFRoaXMgdXNlciBkb2VzIG5
vdCBoYXZlIGFjY2VzcyB0byBpdC4KCQkJCQkJY29udGludWU7IC8vIFNraXAgcHJvY2Vzc2luZyB0byBuZX
h0IGZpbGUuCgkJCQkJfQoJCQkJfQoKCQkJCSRzZXJpYWwgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRfc2Vya
WFsX2Zyb21fZmlsZSggJGZpbGUgKTsKCgkJCQkkb3B0aW9ucyA9IGFycmF5KCk7CgkJCQlpZiAoIGZpbGVf
ZXhpc3RzKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3RvcnkoKSAuICdmaWxlb3B0aW9ucy8nIC4
gJHNlcmlhbCAuICcudHh0JyApICkgewoJCQkJCXJlcXVpcmVfb25jZSBwYl9iYWNrdXBidWRkeTo6cGx1Z2
luX3BhdGgoKSAuICcvY2xhc3Nlcy9maWxlb3B0aW9ucy5waHAnOwoJCQkJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdkZXRhaWxzJywgJ0ZpbGVvcHRpb25zIGluc3RhbmNlICMzMy4nICk7CgkJCQkJJHJlYWRfb25s
eSAgICAgID0gZmFsc2U7CgkJCQkJJGlnbm9yZV9sb2NrICAgID0gZmFsc2U7CgkJCQkJJGNyZWF0ZV9maWx
lICAgID0gdHJ1ZTsKCQkJCQkkYmFja3VwX29wdGlvbnMgPSBuZXcgcGJfYmFja3VwYnVkZHlfZmlsZW9wdG
lvbnMoIGJhY2t1cGJ1ZGR5X2NvcmU6OmdldExvZ0RpcmVjdG9yeSgpIC4gJ2ZpbGVvcHRpb25zLycgLiAkc
2VyaWFsIC4gJy50eHQnLCAkcmVhZF9vbmx5LCAkaWdub3JlX2xvY2ssICRjcmVhdGVfZmlsZSApOyAvLyBX
aWxsIGNyZWF0ZSBmaWxlIHRvIGhvbGQgaW50ZWdyaXR5IGRhdGEgaWYgbm90aGluZyBleGlzdHMuCgkJCQl
9IGVsc2UgewoJCQkJCSRiYWNrdXBfb3B0aW9ucyA9ICcnOwoJCQkJfQoJCQkJJGJhY2t1cF9pbnRlZ3JpdH
kgPSBiYWNrdXBidWRkeV9jb3JlOjpiYWNrdXBfaW50ZWdyaXR5X2NoZWNrKCAkZmlsZSwgJGJhY2t1cF9vc
HRpb25zLCAkb3B0aW9ucyApOwoKCQkJCS8vIEJhY2t1cCBzdGF0dXMuCgkJCQkkcHJldHR5X3N0YXR1cyA9
IGFycmF5KAoJCQkJCXRydWUgICA9PiAnPHNwYW4gY2xhc3M9InBiX2xhYmVsIHBiX2xhYmVsLXN1Y2Nlc3M
iPkdvb2Q8L3NwYW4+JywgLy8gdjQuMCsgR29vZC4KCQkJCQkncGFzcycgPT4gJzxzcGFuIGNsYXNzPSJwYl
9sYWJlbCBwYl9sYWJlbC1zdWNjZXNzIj5Hb29kPC9zcGFuPicsIC8vIFByZS12NC4wIEdvb2QuCgkJCQkJZ
mFsc2UgID0+ICc8c3BhbiBjbGFzcz0icGJfbGFiZWwgcGJfbGFiZWwtaW1wb3J0YW50Ij5CYWQ8L3NwYW4+
JywgLy8gdjQuMCsgQmFkLgoJCQkJCSdmYWlsJyA9PiAnPHNwYW4gY2xhc3M9InBiX2xhYmVsIHBiX2xhYmV
sLWltcG9ydGFudCI+QmFkPC9zcGFuPicsIC8vIFByZS12NC4wIEJhZC4KCQkJCSk7CgoJCQkJLy8gQmFja3
VwIHR5cGUuCgkJCQkkcHJldHR5X3R5cGUgPSBhcnJheSgKCQkJCQknZnVsbCcgICAgPT4gJ0Z1bGwnLAoJC
QkJCSdkYicgICAgICA9PiAnRGF0YWJhc2UnLAoJCQkJCSdmaWxlcycgICA9PiAnRmlsZXMnLAoJCQkJCSd0
aGVtZXMnICA9PiAnVGhlbWVzJywKCQkJCQkncGx1Z2lucycgPT4gJ1BsdWdpbnMnLAoJCQkJKTsKCgkJCQk
vLyBEZWZhdWx0cy4KCQkJCSRkZXRlY3RlZF90eXBlID0gJyc7CgkJCQkkZmlsZV9zaXplICAgICA9ICcnOw
oJCQkJJG1vZGlmaWVkICAgICAgPSAnJzsKCQkJCSRtb2RpZmllZF90aW1lID0gMDsKCQkJCSRpbnRlZ3Jpd
HkgICAgID0gJyc7CgoJCQkJJG1haW5fc3RyaW5nID0gJ1dhcm4jMjg0Lic7CgkJCQlpZiAoIGlzX2FycmF5
KCAkYmFja3VwX2ludGVncml0eSApICkgeyAvLyBEYXRhIGludGFjdC4uLiBwdXQgaXQgYWxsIHRvZ2V0aGV
yLgoJCQkJCS8vIENhbGN1bGF0ZSB0aW1lIGFnby4KCQkJCQkkdGltZV9hZ28gPSAnJzsKCQkJCQlpZiAoIG
lzc2V0KCAkYmFja3VwX2ludGVncml0eVsnbW9kaWZpZWQnXSApICkgewoJCQkJCQkkdGltZV9hZ28gPSBwY
l9iYWNrdXBidWRkeTo6JGZvcm1hdC0+dGltZV9hZ28oICRiYWNrdXBfaW50ZWdyaXR5Wydtb2RpZmllZCdd
ICkgLiAnIGFnbyc7CgkJCQkJfQoKCQkJCQkkZGV0ZWN0ZWRfdHlwZSA9IHBiX2JhY2t1cGJ1ZGR5OjokZm9
ybWF0LT5wcmV0dGlmeSggJGJhY2t1cF9pbnRlZ3JpdHlbJ2RldGVjdGVkX3R5cGUnXSwgJHByZXR0eV90eX
BlICk7CgkJCQkJaWYgKCAnJyA9PSAkZGV0ZWN0ZWRfdHlwZSApIHsKCQkJCQkJJGRldGVjdGVkX3R5cGUgP
SBiYWNrdXBidWRkeV9jb3JlOjpwcmV0dHlfYmFja3VwX3R5cGUoIGJhY2t1cGJ1ZGR5X2NvcmU6OmdldEJh
Y2t1cFR5cGVGcm9tRmlsZSggJGZpbGUgKSApOwoJCQkJCQlpZiAoICcnID09ICRkZXRlY3RlZF90eXBlICk
gewoJCQkJCQkJJGRldGVjdGVkX3R5cGUgPSAnPHNwYW4gY2xhc3M9ImRlc2NyaXB0aW9uIj5Vbmtub3duPC
9zcGFuPic7CgkJCQkJCX0KCQkJCQl9IGVsc2UgewoJCQkJCQlpZiAoIGlzc2V0KCAkYmFja3VwX29wdGlvb
nMtPm9wdGlvbnNbJ3Byb2ZpbGUnXSApICkgewoJCQkJCQkJJHByb2ZpbGVfdGl0bGUgPSBpc3NldCggJGJh
Y2t1cF9vcHRpb25zLT5vcHRpb25zWydwcm9maWxlJ11bJ3RpdGxlJ10gKSA/IGh0bWxlbnRpdGllcyggJGJ
hY2t1cF9vcHRpb25zLT5vcHRpb25zWydwcm9maWxlJ11bJ3RpdGxlJ10gKSA6ICcnOwoJCQkJCQkJJGRldG
VjdGVkX3R5cGUgPSAnCgkJCQkJCQk8ZGl2PgoJCQkJCQkJCTxzcGFuIGNsYXNzPSJwcm9maWxlX3R5cGUtJ
yAuICRiYWNrdXBfaW50ZWdyaXR5WydkZXRlY3RlZF90eXBlJ10gLiAnIiBzdHlsZT0iZmxvYXQ6IGxlZnQ7
IiB0aXRsZT0iJyAuIGJhY2t1cGJ1ZGR5X2NvcmU6OnByZXR0eV9iYWNrdXBfdHlwZSggJGRldGVjdGVkX3R
5cGUgKSAuICciPjwvc3Bhbj4KCQkJCQkJCQk8c3BhbiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOy
BmbG9hdDogbGVmdDsgaGVpZ2h0OiAxNXB4OyBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjRUJFQkVCOyBtY
XJnaW4tbGVmdDogNnB4OyBtYXJnaW4tcmlnaHQ6IDZweDsiPjwvc3Bhbj4KCQkJCQkJCQknIC4gJHByb2Zp
bGVfdGl0bGUgLiAnCgkJCQkJCQk8L2Rpdj4KCQkJCQkJCSc7CgkJCQkJCX0KCQkJCQl9CgoJCQkJCSRmaWx
lX3NpemUgICAgID0gcGJfYmFja3VwYnVkZHk6Oi
Rmb3JtYXQtPmZpbGVfc2l6ZSggJGJhY2t1cF9pbnRlZ3JpdHlbJ3NpemUnXSApOwoJCQkJCSRtb2RpZmllZ
CAgICAgID0gcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPmRhdGUoIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0
LT5sb2NhbGl6ZV90aW1lKCAkYmFja3VwX2ludGVncml0eVsnbW9kaWZpZWQnXSApLCAnbCwgRiBqLCBZIC0
gZzppOnMgYScgKTsKCQkJCQkkbW9kaWZpZWRfdGltZSA9ICRiYWNrdXBfaW50ZWdyaXR5Wydtb2RpZmllZC
ddOwoJCQkJCWlmICggaXNzZXQoICRiYWNrdXBfaW50ZWdyaXR5WydzdGF0dXMnXSApICkgeyAvLyBQcmUtd
jQuMC4KCQkJCQkJJHN0YXR1cyA9ICRiYWNrdXBfaW50ZWdyaXR5WydzdGF0dXMnXTsKCQkJCQl9IGVsc2Ug
eyAvLyB2NC4wKy4KCQkJCQkJJHN0YXR1cyA9ICRiYWNrdXBfaW50ZWdyaXR5Wydpc19vayddOwoJCQkJCX0
KCgkJCQkJLy8gQ2FsY3VsYXRlIG1haW4gcm93IHN0cmluZy4KCQkJCQlpZiAoICdkZWZhdWx0JyA9PT0gJH
R5cGUgKSB7IC8vIERlZmF1bHQgYmFja3VwIGxpc3RpbmcuCgkJCQkJCSRtYWluX3N0cmluZyA9ICc8YSBoc
mVmPSInIC4gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAnZG93bmxvYWRfYXJjaGl2ZScgKSAuICcmYmFj
a3VwYnVkZHlfYmFja3VwPScgLiBiYXNlbmFtZSggJGZpbGUgKSAuICciIGNsYXNzPSJiYWNrdXBidWRkeUZ
pbGVUaXRsZSIgdGl0bGU9IicgLiBiYXNlbmFtZSggJGZpbGUgKSAuICciPicgLiAkbW9kaWZpZWQgLiAnIC
gnIC4gJHRpbWVfYWdvIC4gJyk8L2E+JzsKCQkJCQl9IGVsc2VpZiAoICdtaWdyYXRlJyA9PT0gJHR5cGUgK
SB7IC8vIE1pZ3JhdGlvbiBiYWNrdXAgbGlzdGluZy4KCQkJCQkJJG1haW5fc3RyaW5nID0gJzxhIGNsYXNz
PSJwYl9iYWNrdXBidWRkeV9ob3ZlcmFjdGlvbl9taWdyYXRlIGJhY2t1cGJ1ZGR5RmlsZVRpdGxlIiByZWw
9IicgLiBiYXNlbmFtZSggJGZpbGUgKSAuICciIGhyZWY9IicgLiBwYl9iYWNrdXBidWRkeTo6cGFnZV91cm
woKSAuICcmbWlncmF0ZT0nIC4gYmFzZW5hbWUoICRmaWxlICkgLiAnJnZhbHVlPScgLiBiYXNlbmFtZSggJ
GZpbGUgKSAuICciIHRpdGxlPSInIC4gYmFzZW5hbWUoICRmaWxlICkgLiAnIj4nIC4gJG1vZGlmaWVkIC4g
JyAoJyAuICR0aW1lX2FnbyAuICcpPC9hPic7CgkJCQkJfSBlbHNlIHsKCQkJCQkJJG1haW5fc3RyaW5nID0
gJ3tVbmtub3duIHR5cGUufSc7CgkJCQkJfQoJCQkJCS8vIEFkZCBjb21tZW50IHRvIG1haW4gcm93IHN0cm
luZyBpZiBhcHBsaWNhYmxlLgoJCQkJCWlmICggISBlbXB0eSggJGJhY2t1cF9pbnRlZ3JpdHlbJ2NvbW1lb
nQnXSApICkgewoJCQkJCQkkbWFpbl9zdHJpbmcgLj0gJzxicj48c3BhbiBjbGFzcz0iZGVzY3JpcHRpb24i
Pk5vdGU6IDxzcGFuIGNsYXNzPSJwYl9iYWNrdXBidWRkeV9ub3RldGV4dCI+JyAuIGh0bWxlbnRpdGllcyg
gJGJhY2t1cF9pbnRlZ3JpdHlbJ2NvbW1lbnQnXSApIC4gJzwvc3Bhbj48L3NwYW4+JzsKCQkJCQl9CgoJCQ
kJCS8vIE5vIGludGVncml0eSBjaGVjayBmb3IgdGhlbWVzIG9yIHBsdWdpbnMgdHlwZXMuCgkJCQkJJHJhd
190eXBlICAgICAgICAgICAgID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0QmFja3VwVHlwZUZyb21GaWxlKCAk
ZmlsZSApOwoJCQkJCSRza2lwX2ludGVncml0eV90eXBlcyA9IGFycmF5KCAndGhlbWVzJywgJ3BsdWdpbnM
nLCAnbWVkaWEnLCAnZmlsZXMnICk7CgkJCQkJaWYgKCBpbl9hcnJheSggJHJhd190eXBlLCAkc2tpcF9pbn
RlZ3JpdHlfdHlwZXMsIHRydWUgKSApIHsKCQkJCQkJdW5zZXQoICRmaWxlX2NvdW50ICk7CgkJCQkJCWZvc
mVhY2ggKCAoYXJyYXkpICRiYWNrdXBfaW50ZWdyaXR5Wyd0ZXN0cyddIGFzICR0ZXN0ICkgewoJCQkJCQkJ
aWYgKCBpc3NldCggJHRlc3RbJ2ZpbGVDb3VudCddICkgKSB7CgkJCQkJCQkJJGZpbGVfY291bnQgPSAkdGV
zdFsnZmlsZUNvdW50J107CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJJGludGVncml0eSA9IHBiX2JhY2t1cG
J1ZGR5OjokZm9ybWF0LT5wcmV0dGlmeSggJHN0YXR1cywgJHByZXR0eV9zdGF0dXMgKSAuICcgJzsKCQkJC
QkJaWYgKCBpc3NldCggJGZpbGVfY291bnQgKSApIHsKCQkJCQkJCSRpbnRlZ3JpdHkgLj0gJzxzcGFuIGNs
YXNzPSJwYl9sYWJlbCBwYl9sYWJlbC13YXJuaW5nIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPicgLiAkZml
sZV9jb3VudCAuICcgJyAuIGVzY19odG1sX18oICdmaWxlcycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC
4gJzwvc3Bhbj4gJzsgLy8gVE9ETzogSGlkZGVuIHVudGlsIGZ1dHVyZSB2ZXJzaW9uLgoJCQkJCQl9CgkJC
QkJfSBlbHNlIHsKCQkJCQkJJGludGVncml0eSA9IHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5wcmV0dGlm
eSggJHN0YXR1cywgJHByZXR0eV9zdGF0dXMgKSAuICcgJzsKCQkJCQl9CgoJCQkJCWlmICggaXNzZXQoICR
iYWNrdXBfaW50ZWdyaXR5WydzY2FuX25vdGVzJ10gKSAmJiBjb3VudCggKGFycmF5KSAkYmFja3VwX2ludG
Vncml0eVsnc2Nhbl9ub3RlcyddICkgPiAwICkgewoJCQkJCQlmb3JlYWNoICggKGFycmF5KSAkYmFja3VwX
2ludGVncml0eVsnc2Nhbl9ub3RlcyddIGFzICRzY2FuX25vdGUgKSB7CgkJCQkJCQkkaW50ZWdyaXR5IC49
ICRzY2FuX25vdGUgLiAnICc7CgkJCQkJCX0KCQkJCQl9CgkJCQkJJGludGVncml0eSAuPSAnPGEgaHJlZj0
iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwYWdlX3VybCgpIC4gJyZyZXNldF9pbnRlZ3JpdHk9JyAuICRzZXJpYW
wgLiAnIiB0aXRsZT0iUmVzY2FuIGludGVncml0eS4gTGFzdCBjaGVja2VkICcgLiBwYl9iYWNrdXBidWRke
To6JGZvcm1hdC0+ZGF0ZSggJGJhY2t1cF9pbnRlZ3JpdHlbJ3NjYW5fdGltZSddICkgLiAnLiI+PGltZyBz
cmM9IicgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpIC4gJy9pbWFnZXMvcmVmcmVzaF9ncmF5Lmd
pZiIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiAtMXB4OyI+PC9hPic7CgkJCQkJJGludGVncml0eSAuPSAnPG
RpdiBjbGFzcz0icm93LWFjdGlvbnMiPjxhIHRpdGxlPSInIC4gX18oICdCYWNrdXAgU3RhdHVzJywgJ2l0L
WwxMG4tYmFja3VwYnVkZHknICkgLiAnIiBocmVmPSInIC4gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAn
aW50ZWdyaXR5X3N0YXR1cycgKSAuICcmc2VyaWFsPScgLiAkc2VyaWFsIC4gJyYjMDM4O1RCX2lmcmFtZT0
xJiMwMzg7d2lkdGg9NjQwJiMwMzg7aGVpZ2h0PTYwMCIgY2xhc3M9InRoaWNrYm94Ij4nIC4gX18oICdWaW
V3IERldGFpbHMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICc8L2E+PC9kaXY+JzsKCgkJCQkJJHN1b
V9sb2dfZmlsZSA9IGJhY2t1cGJ1ZGR5X2NvcmU6OmdldExvZ0RpcmVjdG9yeSgpIC4gJ3N0YXR1cy0nIC4g
JHNlcmlhbCAuICdfJyAuIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbG9nX3NlcmlhbCddIC4gJy50eHQ
nOwoJCQkJCWlmICggZmlsZV9leGlzdHMoICRzdW1fbG9nX2ZpbGUgKSApIHsKCQkJCQkJJGludGVncml0eS
AuPSAnPGRpdiBjbGFzcz0icm93LWFjdGlvbnMiPjxhIHRpdGxlPSInIC4gX18oICdWaWV3IEJhY2t1cCBMb
2cnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICciIGhyZWY9IicgLiBwYl9iYWNrdXBidWRkeTo6YWph
eF91cmwoICd2aWV3X2xvZycgKSAuICcmc2VyaWFsPScgLiAkc2VyaWFsIC4gJyYjMDM4O1RCX2lmcmFtZT0
xJiMwMzg7d2lkdGg9NjQwJiMwMzg7aGVpZ2h0PTYwMCIgY2xhc3M9InRoaWNrYm94Ij4nIC4gX18oICdWaW
V3IExvZycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzwvYT48L2Rpdj4nOwoJCQkJCX0KCQkJCX0gL
y8gZW5kIGlmIGlzX2FycmF5KCAkYmFja3VwX29wdGlvbnMgKS4KCgkJCQkkaW50ZWdyaXR5IC49ICc8ZGl2
IGNsYXNzPSJyb3ctYWN0aW9ucyI+PGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApOyIgY2xhc3M9InBiX2J
hY2t1cGJ1ZGR5X2hvdmVyYWN0aW9uX2hhc2giIHJlbD0iJyAuIGJhc2VuYW1lKCAkZmlsZSApIC4gJyI+Vm
lldyBDaGVja3N1bTwvYT48L2Rpdj4nOwoKCQkJCSRiYWNrdXBzWyBiYXNlbmFtZSggJGZpbGUgKSBdID0gY
XJyYXkoCgkJCQkJYXJyYXkoIGJhc2VuYW1lKCAkZmlsZSApLCAkbWFpbl9zdHJpbmcgLiAnPGJyPjxzcGFu
IGNsYXNzPSJkZXNjcmlwdGlvbiIgc3R5bGU9ImNvbG9yOiAjQUFBOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s
7IG1hcmdpbi10b3A6IDVweDsiPicgLiBiYXNlbmFtZSggJGZpbGUgKSAuICc8L3NwYW4+JyApLAoJCQkJCS
RkZXRlY3RlZF90eXBlLAoJCQkJCSRmaWxlX3NpemUsCgkJCQkJJGludGVncml0eSwKCQkJCSk7CgoJCQkJJ
GJhY2t1cF9zb3J0X2RhdGVzWyBiYXNlbmFtZSggJGZpbGUgKSBdID0gJG1vZGlmaWVkX3RpbWU7CgoJCQl9
IC8vIEVuZCBmb3JlYWNoKCkuCgkJfSAvLyBFbmQgaWYuCgoJCS8vIFNvcnQgYmFja3VwIGJ5IGRhdGUuCgk
JYXJzb3J0KCAkYmFja3VwX3NvcnRfZGF0ZXMgKTsKCQkvLyBSZS1hcnJhbmdlIGJhY2t1cHMgYmFzZWQgb2
4gc29ydCBkYXRlcy4KCQkkc29ydGVkX2JhY2t1cHMgPSBhcnJheSgpOwoJCWZvcmVhY2ggKCAkYmFja3VwX
3NvcnRfZGF0ZXMgYXMgJGJhY2t1cF9maWxlID0+ICRiYWNrdXBfc29ydF9kYXRlICkgewoJCQkkc29ydGVk
X2JhY2t1cHNbICRiYWNrdXBfZmlsZSBdID0gJGJhY2t1cHNbICRiYWNrdXBfZmlsZSBdOwoJCQl1bnNldCg
gJGJhY2t1cHNbICRiYWNrdXBfZmlsZSBdICk7CgkJfQoJCXVuc2V0KCAkYmFja3VwcyApOwoKCQlyZXR1cm
4gJHNvcnRlZF9iYWNrdXBzOwoKCX0gLy8gRW5kIGJhY2t1cHNfbGlzdCgpLgoKCgkvKioKCSAqIDExMjgKC
SAqCgkgKiBAcGFyYW0gc3RyaW5nICRmaWxlICBQYXRoIHRvIGZpbGUuCgkgKgoJICogQHJldHVybiBhcnJh
eSBEYXQgYXJyYXkgZnJvbSB6aXAuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0RGF0QXJyYXl
Gcm9tWmlwKCAkZmlsZSApIHsKCQlyZXF1aXJlX29uY2UgcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKC
kgLiAnL2xpYi96aXBidWRkeS96aXBidWRkeS5waHAnOwoJCSR6aXBidWRkeSA9IG5ldyBwbHVnaW5idWRke
V96aXBidWRkeSggYmFja3VwYnVkZHlfY29yZTo6Z2V0QmFja3VwRGlyZWN0b3J5KCkgKTsKCQkkc2VyaWFs
ICAgPSBzZWxmOjpnZXRfc2VyaWFsX2Zyb21fZmlsZSggJGZpbGUgKTsKCgkJJGZpbmQgICA9IGZhbHNlOwo
JCSRzZWFyY2ggPSBhcnJheSgKCQkJJ3dwLWNvbnRlbnQvdXBsb2Fkcy9iYWNrdXBidWRkeV90ZW1wLycgLi
Akc2VyaWFsIC4gJy9iYWNrdXBidWRkeV9kYXQucGhwJywgLy8gUG9zdCAyLjAgZnVsbCBiYWNrdXAuCgkJC
Sd3cC1jb250ZW50L3VwbG9hZHMvdGVtcF8nIC4gJHNlcmlhbCAuICcvYmFja3VwYnVkZHlfZGF0LnBocCcs
IC8vIFByZSAyLjAgZnVsbCBiYWNrdXAuCgkJCSdiYWNrdXBidWRkeV9kYXQucGhwJywgLy8gREIgYmFja3V
wLgoJCSk7CgoJCWlmICggISBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRjbGFzc2VzWyd6aXBidWRkeSddIC
kgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjokY2xhc3Nlc1snemlwYnVkZHknXSA9ICR6aXBidWRkeTsKCQl9C
goJCWZvcmVhY2ggKCAkc2VhcmNoIGFzICRsb2NhdGlvbiApIHsKCQkJaWYgKCB0cnVlID09PSBwYl9iYWNr
dXBidWRkeTo6JGNsYXNzZXNbJ3ppcGJ1ZGR5J10tPmZpbGVfZXhpc3RzKCAkZmlsZSwgJGxvY2F0aW9uICk
gKSB7CgkJCQkkZmluZCA9ICRsb2NhdGlvbjsKCQkJCWJyZWFrOwoJCQl9CgkJfQoKCQlpZiAoIGZhbHNlID
09PSAkZmluZCApIHsKCQkJLy8gQ291bGQgbm90IGZpbmQgREFUIGZpbGUuCgkJCXJldHVybiBmYWxzZTsKC
Ql9CgoJCS8vIENhbGN1bGF0ZSB0ZW1wIGRpcmVjdG9yeSAmIGxvY2sgaXQgZG93bi4KCQkkdGVtcF9kaXIg
ICAgPSBnZXRfdGVtcF9kaXIoKTsKCQkkZGVzdGluYXRpb24gPSAkdGVtcF9kaXI7CgkJaWYgKCAhIGZpbGV
fZXhpc3RzKCAkZGVzdGluYXRpb24gKSAmJiBmYWxzZSA9PT0gbWtkaXIoICRkZXN0aW5hdGlvbiApICkgew
oJCQkkZXJyb3IgPSBlc2NfaHRtbF9fKCAnRXJyb3IgIzQ1ODQ4NTk0NWI6IFVuYWJsZSB0byBjcmVhdGUgd
GVtcG9yYXJ5IGxvY2F0aW9uLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOwoJCQlwYl9iYWNrdXBidWRk
eTo6c3RhdHVzKCAnZXJyb3InLCAkZXJyb3IgKTsKCQkJZGllKCAkZXJyb3IgKTsgLy8gQGNvZGluZ1N0YW5
kYXJkc0lnbm9yZUxpbmU6IG9rLgoJCX0KCgkJLy8gSWYgdGVtcCBkaXJlY3RvcnkgaXMgd2l0aGluIHdlYn
Jvb3QgdGhlbiBsb2NrIGl0IGRvd24uCgkJJHRlbXBfZGlyID0gc3RyX3JlcGxhY2UoICdcXCcsICcvJywgJ
HRlbXBfZGlyICk7IC8vIE5vcm1hbGl6ZSBmb3IgV2luZG93cy4KCQkkdGVtcF9kaXIgPSBydHJpbSggJHRl
bXBfZGlyLCAnL1xcJyApIC4gJy8nOyAvLyBFbmZvcmNlIHNpbmdsZSB0cmFpbGluZyBzbGFzaC4KCQlpZiA
oIGZhbHNlICE9PSBzdHJpc3RyKCAkdGVtcF9kaXIsIEFCU1BBVEggKSApIHsgLy8gVGVtcCBkaXIgaXMgd2
l0aGluIHdlYnJvb3QuCgkJCXBiX2JhY2t1cGJ1ZGR5OjphbnRpX2RpcmVjdG9yeV9icm93c2luZyggJGRlc
3RpbmF0aW9uICk7CgkJfQoKCQkkZGVzdF9maWxlbmFtZSAgPSAndGVtcF9kYXRfcmVhZC0nIC4gJHNlcmlh
bCAuICcucGhwJzsKCQkkZXh0cmFjdGlvbnMgICAgPSBhcnJheSggJGZpbmQgPT4gJGRlc3RfZmlsZW5hbWU
gKTsKCQkkZXh0cmFjdF9yZXN1bHQgPSAkemlwYnVkZHktPmV4dHJhY3QoICRmaWxlLCAkZGVzdGluYXRpb2
4sICRleHRyYWN0aW9ucyApOwoJCWlmICggZmFsc2UgPT09ICRleHRyYWN0X3Jlc3VsdCApIHsgLy8gZmFpb
GVkLgoJCQlyZXR1cm4gYXJyYXkoKTsKCQl9IGVsc2UgewoJCQkkZGF0X2FycmF5ID0gc2VsZjo6Z2V0X2Rh
dF9maWxlX2FycmF5KCBydHJpbSggJGRlc3RpbmF0aW9uLCAnXFwvJyApIC4gJy90ZW1wX2RhdF9yZWFkLSc
gLiAkc2VyaWFsIC4gJy5waHAnICk7CgkJCUB1bmxpbmsoICR0ZW1wX2RpciAuICRkZXN0X2ZpbGVuYW1lIC
k7CgkJCWlmICggaXNfYXJyYXkoICRkYXRfYXJyYXkgKSApIHsKCQkJCXJldHVybiAkZGF0X2FycmF5OwoJC
Ql9IGVsc2UgewoJCQkJcmV0dXJuIGFycmF5KCk7CgkJCX0KCQl9CgoJfSAvLyBFbmQgZ2V0RGF0Q29udGVu
dHNGcm9tWmlwKCkuCgoKCS8qKgoJICogR2VuZXJhdGUgaW1wb3J0YnVkZHkuCgkgKgoJICogSU1QT1JUQU5
UOiBJZiBvdXRwdXR0aW5nIHRvIGJyb3dzZXIgKG5vIG91dHB1dCBmaWxlKSBtdXN0IGRpZSgpIGFmdGVyIG
91dHB1dHRpbmcgY29udGVudCBpZiB1c2luZyBBSkFYLiBEbyBub3Qgb3V0cHV0IHRvIGJyb3dzZXIgYW55d
GhpbmcgYWZ0ZXIgdGhpcyBmdW5jdGlvbiBpbiB0aGlzIGNhc2UuCgkgKiBJTVBPUlRBTlQ6IF9BTFdBWVNf
IHJldHVybnMgRkFMU0UgaWYgbm8gaW1wb3J0YnVkZHkgcGFzcyBoYXNoIGlzIHBhc3NlZCBBTkQgbm8gcGF
zcyBoYXNoIGlzIHNldCBpbiB0aGUgU2V0dGluZ3MgcGFnZS4KCSAqIElmICRvdXRwdXRfZmlsZSBpcyBibG
FuayB0aGVuIGltcG9ydGJ1ZGR5IHdpbGwgZWl0a
GVyIGJlIHJldHVybmVkIG9yIHJldHVybmVkIHRvIHRoZSBicndvc2VyIGFzIGEgZG93bmxvYWRlZCBmaWxl
IGJhc2VkIG9uIDNyZCBwYXJhbWV0ZXIuCgkgKiBJZiAkb3V0cHV0X2ZpbGUgaXMgZGVmaW5lZCB0aGVuIHJ
ldHVybnMgdHJ1ZSBvbiBzdWNjZXNzIHdyaXRpbmcgZmlsZSwgZWxzZSBmYWxzZS4KCSAqCgkgKiBVc2UgJG
ltcG9ydGJ1ZGR5X3Bhc3NfaGFzaCA9IG51bGwgdG8gbGVhdmUgI1BBU1NXT1JEIyBwbGFjZWhvbGRlci4gR
WcgZm9yIHVzZSB3aXRoIExpdmUuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkb3V0cHV0X2ZpbGUgICAgICAg
ICAgICBPdXRwdXQgRmlsZW5hbWUuCgkgKiBAcGFyYW0gc3RyaW5nICRpbXBvcnRidWRkeV9wYXNzX2hhc2g
gIEltcG9ydEJ1ZGR5IFBhc3N3b3JkIEhhc2guCgkgKiBAcGFyYW0gYm9vbCAgICRyZXR1cm5fbm90X2VjaG
8gICAgICAgIFJldHVybiBpbnN0ZWFkIG9mIEVjaG8uCgkgKgoJICogQHJldHVybiBib29sfHZvaWQgIElmI
CRyZXR1cm5fbm90X2VjaG8gaXMgdHJ1ZSwgb3RoZXJ3aXNlIHZvaWQuCgkgKi8KCXB1YmxpYyBzdGF0aWMg
ZnVuY3Rpb24gaW1wb3J0YnVkZHkoICRvdXRwdXRfZmlsZSA9ICcnLCAkaW1wb3J0YnVkZHlfcGFzc19oYXN
oID0gJycsICRyZXR1cm5fbm90X2VjaG8gPSBmYWxzZSApIHsKCgkJcGJfYmFja3VwYnVkZHk6OnNldF9ncm
VlZHlfc2NyaXB0X2xpbWl0cygpOyAvLyBTb21lIHBlb3BsZSBydW4gb3V0IG9mIFBIUCBtZW1vcnkuCgoJC
WlmICggbnVsbCAhPT0gJGltcG9ydGJ1ZGR5X3Bhc3NfaGFzaCApIHsKCQkJaWYgKCAnJyA9PSAkaW1wb3J0
YnVkZHlfcGFzc19oYXNoICkgewoJCQkJaWYgKCAhIGlzc2V0KCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnM
gKSApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6bG9hZCgpOwoJCQkJfQoJCQkJJGltcG9ydGJ1ZGR5X3Bhc3
NfaGFzaCA9IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snaW1wb3J0YnVkZHlfcGFzc19oYXNoJ107CgkJC
X0KCgkJCWlmICggJycgPT0gJGltcG9ydGJ1ZGR5X3Bhc3NfaGFzaCApIHsKCQkJCSRtZXNzYWdlID0gJ1dh
cm5pbmcgIzkwMzIgLSBZb3UgaGF2ZSBub3Qgc2V0IGFuIEltcG9ydEJ1ZGR5IHBhc3N3b3JkIG9uIHRoZSB
CYWNrdXBCdWRkeSBTZXR0aW5ncyBwYWdlLiBBIGNvcHkgb2YgdGhlIGltcG9ydGJ1ZGR5LnBocCBmaWxlIG
5lZWRlZCB0byByZXN0b3JlIHlvdXIgYmFja3VwIGlzIGluY2x1ZGVkIGluIEZ1bGwgYmFja3VwIHppcCBma
WxlcyBmb3IgY29udmVuaWVuY2UuIFNpbmNlIGEgcGFzc3dvcmQgaXMgbm90IGEgcmFuZG9tIG9uZSBoYXMg
YmVlbiBhcHBsaWVkIHRvIHRoaXMgaW1wb3J0YnVkZHkucGhwIHNvIHlvdSB3aWxsIG5lZWQgdG8gdXNlIHR
oZSAiRm9yZ290IFBhc3N3b3JkIiBvcHRpb24gaWYgdXNpbmcgaXQgdG8gcmVzdG9yZS4nOwoJCQkJcGJfYm
Fja3VwYnVkZHk6OnN0YXR1cyggJ3dhcm5pbmcnLCAkbWVzc2FnZSApOwoJCQkJJGltcG9ydGJ1ZGR5X3Bhc
3NfaGFzaCA9IHBiX2JhY2t1cGJ1ZGR5OjpyYW5kb21fc3RyaW5nKCA0NSApOyAvLyBSYW5kb20gbG9uZyBo
YXNoIGZvciBkdW1teSBwYXNzd29yZC4KCQkJfQoJCX0KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2R
ldGFpbHMnLCAnTG9hZGluZyBpbXBvcnRidWRkeSBjb3JlIGZpbGUgaW50byBtZW1vcnkuJyApOwoJCSRvdX
RwdXQgPSBmaWxlX2dldF9jb250ZW50cyggcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL19pb
XBvcnRidWRkeS9faW1wb3J0YnVkZHkucGhwJyApOwoKCQlpZiAoIG51bGwgIT09ICRpbXBvcnRidWRkeV9w
YXNzX2hhc2ggJiYgJycgIT0gJGltcG9ydGJ1ZGR5X3Bhc3NfaGFzaCApIHsKCQkJJG91dHB1dCA9IHByZWd
fcmVwbGFjZSggJy8jUEFTU1dPUkQjLycsICRpbXBvcnRidWRkeV9wYXNzX2hhc2gsICRvdXRwdXQsIDEgKT
sgLy8gT25seSByZXBsYWNlcyBmaXJzdCBpbnN0YW5jZS4KCQl9CgoJCSR2ZXJzaW9uX3N0cmluZyA9IHBiX
2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3ZlcnNpb24nICkgLiAnIChkb3dubG9hZGVkICcgLiBkYXRlKCBE
QVRFX1czQyApIC4gJyknOwoKCQkvLyBJZiBvbiBERVYgc3lzdGVtICguZ2l0IGRpciBleGlzdHMpIHRoZW4
gYXBwZW5kIHNvbWUgZGV0YWlscyBvbiBjdXJyZW50LgoJCWlmICggZGVmaW5lZCggJ0JBQ0tVUEJVRERZX0
RFVicgKSAmJiB0cnVlID09PSBCQUNLVVBCVUREWV9ERVYgKSB7CgkJCWlmICggQGZpbGVfZXhpc3RzKCBwY
l9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvLmdpdC9sb2dzL0hFQUQnICkgKSB7CgkJCQkkY29t
bWl0X2xvZyAgICAgID0gZXNjYXBlc2hlbGxhcmcoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4
gJy8uZ2l0L2xvZ3MvSEVBRCcgKTsKCQkJCSRjb21taXRfbGluZSAgICAgPSBzdHJfcmVwbGFjZSggJ1wnJy
wgJ2AnLCBleGVjKCAidGFpbCAtbiAxIHskY29tbWl0X2xvZ30iICkgKTsKCQkJCSR2ZXJzaW9uX3N0cmluZ
yAuPSAnIDxzcGFuIHN0eWxlPSJmb250LXNpemU6IDhweDsiPltERVY6ICcgLiAkY29tbWl0X2xpbmUgLiAn
XTwvc3Bhbj4nOwoJCQl9CgkJfQoKCQkkb3V0cHV0ID0gcHJlZ19yZXBsYWNlKCAnLyNWRVJTSU9OIy8nLCA
kdmVyc2lvbl9zdHJpbmcsICRvdXRwdXQsIDIgKTsgLy8gT25seSByZXBsYWNlcyBmaXJzdCBUV08gaW5zdG
FuY2VzLgoKCQkvLyBQQUNLIElNUE9SVEJVRERZLgoJCSRfcGFja2RhdGEgPSBhcnJheSggLy8gTk8gVFJBS
UxJTkcgT1IgUFJFQ0VFRElORyBTTEFTSEVTIQoKCQkJJ19pbXBvcnRidWRkeS9pbXBvcnRidWRkeScgICAg
ICAgICAgICAgICAgICAgID0+ICdpbXBvcnRidWRkeScsCgkJCSdjbGFzc2VzL19taWdyYXRlX2RhdGFiYXN
lLnBocCcgICAgICAgICAgICAgICA9PiAnaW1wb3J0YnVkZHkvY2xhc3Nlcy9fbWlncmF0ZV9kYXRhYmFzZS
5waHAnLAoJCQknY2xhc3Nlcy9jb3JlLnBocCcgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ2ltc
G9ydGJ1ZGR5L2NsYXNzZXMvY29yZS5waHAnLAoJCQknY2xhc3Nlcy9pbXBvcnQucGhwJyAgICAgICAgICAg
ICAgICAgICAgICAgICAgPT4gJ2ltcG9ydGJ1ZGR5L2NsYXNzZXMvaW1wb3J0LnBocCcsCgkJCSdjbGFzc2V
zL3Jlc3RvcmUucGhwJyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnaW1wb3J0YnVkZHkvY2xhc3Nlcy
9yZXN0b3JlLnBocCcsCgkJCSdjbGFzc2VzL19yZXN0b3JlRmlsZXMucGhwJyAgICAgICAgICAgICAgICAgI
CA9PiAnaW1wb3J0YnVkZHkvY2xhc3Nlcy9fcmVzdG9yZUZpbGVzLnBocCcsCgkJCSdjbGFzc2VzL3JlbW90
ZV9hcGkucGhwJyAgICAgICAgICAgICAgICAgICAgICA9PiAnaW1wb3J0YnVkZHkvY2xhc3Nlcy9yZW1vdGV
fYXBpLnBocCcsCgoJCQknanMvanF1ZXJ5LmxlYW5Nb2RhbC5taW4uanMnICAgICAgICAgICAgICAgICAgPT
4gJ2ltcG9ydGJ1ZGR5L2pzL2pxdWVyeS5sZWFuTW9kYWwubWluLmpzJywKCQkJJ2Nzcy9hbmltYXRlLmNzc
ycgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdpbXBvcnRidWRkeS9jc3MvYW5pbWF0ZS5jc3Mn
LAoKCQkJJ2ltYWdlcy93b3JraW5nLmdpZicgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdpbXBvcnR
idWRkeS9pbWFnZXMvd29ya2luZy5naWYnLAoJCQknaW1hZ2VzL2J1bGxldF9nby5wbmcnICAgICAgICAgIC
AgICAgICAgICAgICAgPT4gJ2ltcG9ydGJ1ZGR5L2ltYWdlcy9idWxsZXRfZ28ucG5nJywKCQkJJ2ltYWdlc
y9mYXZpY29uLnBuZycgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdpbXBvcnRidWRkeS9pbWFnZXMv
ZmF2aWNvbi5wbmcnLAoJCQknaW1hZ2VzL3NvcnRfZG93bi5wbmcnICAgICAgICAgICAgICAgICAgICAgICA
gPT4gJ2ltcG9ydGJ1ZGR5L2ltYWdlcy9zb3J0X2Rvd24ucG5nJywKCQkJJ2ltYWdlcy9pY29uX21lbnVfMz
J4MzIucG5nJyAgICAgICAgICAgICAgICAgID0+ICdpbXBvcnRidWRkeS9pbWFnZXMvaWNvbl9tZW51XzMye
DMyLnBuZycsCgoJCQknbGliL2RicmVwbGFjZScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4g
J2ltcG9ydGJ1ZGR5L2xpYi9kYnJlcGxhY2UnLAoJCQknbGliL2RiaW1wb3J0JyAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgPT4gJ2ltcG9ydGJ1ZGR5L2xpYi9kYmltcG9ydCcsCgkJCSdsaWIvY29tbWFuZG
J1ZGR5JyAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnaW1wb3J0YnVkZHkvbGliL2NvbW1hbmRid
WRkeScsCgkJCSdsaWIvcGNsemlwJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnaW1w
b3J0YnVkZHkvbGliL3BjbHppcCcsCgkJCSdsaWIvemlwYnVkZHknICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICA9PiAnaW1wb3J0YnVkZHkvbGliL3ppcGJ1ZGR5JywKCQkJJ2xpYi9teXNxbGJ1ZGR5JyAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdpbXBvcnRidWRkeS9saWIvbXlzcWxidWRkeScsCgkJC
SdsaWIvdGV4dHJlcGxhY2VidWRkeScgICAgICAgICAgICAgICAgICAgICAgICA9PiAnaW1wb3J0YnVkZHkv
bGliL3RleHRyZXBsYWNlYnVkZHknLAoJCQknbGliL2NwYW5lbCcgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgPT4gJ2ltcG9ydGJ1ZGR5L2xpYi9jcGFuZWwnLAoKCQkJJ3BsdWdpbmJ1ZGR5JyAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdpbXBvcnRidWRkeS9wbHVnaW5idWRkeScsCgoJCQknY
29udHJvbGxlcnMvcGFnZXMvc2VydmVyX2luZm8nICAgICAgICAgICAgICAgPT4gJ2ltcG9ydGJ1ZGR5L2Nv
bnRyb2xsZXJzL3BhZ2VzL3NlcnZlcl9pbmZvJywKCQkJJ2NvbnRyb2xsZXJzL3BhZ2VzL3NlcnZlcl90b29
scy5waHAnICAgICAgICAgID0+ICdpbXBvcnRidWRkeS9jb250cm9sbGVycy9wYWdlcy9zZXJ2ZXJfdG9vbH
MucGhwJywKCgkJCS8vIFN0YXNoCgkJCS8vICdkZXN0aW5hdGlvbnMvc3Rhc2gyL2luaXQucGhwJyAgICAgI
CAgICAgICA9PiAnaW1wb3J0YnVkZHkvbGliL3N0YXNoMi9pbml0LnBocCcsCgkJCSdkZXN0aW5hdGlvbnMv
c3Rhc2gyL2NsYXNzLml0eF9oZWxwZXIyLnBocCcgICA9PiAnaW1wb3J0YnVkZHkvbGliL3N0YXNoMi9jbGF
zcy5pdHhfaGVscGVyMi5waHAnLAoJCQknZGVzdGluYXRpb25zL3N0YXNoMi9jbGFzcy5pdGNyZWQucGhwJy
AgICAgICAgPT4gJ2ltcG9ydGJ1ZGR5L2xpYi9zdGFzaDIvY2xhc3MuaXRjcmVkLnBocCcsCgkJCSdkZXN0a
W5hdGlvbnMvc3Rhc2gyL2NsYXNzLXBocGFzcy5waHAnICAgICAgICA9PiAnaW1wb3J0YnVkZHkvbGliL3N0
YXNoMi9jbGFzcy1waHBhc3MucGhwJywKCQkJJ2Rlc3RpbmF0aW9ucy9fczNsaWIvYXdzLXNkay9saWIvcmV
xdWVzdGNvcmUnID0+ICdpbXBvcnRidWRkeS9saWIvcmVxdWVzdGNvcmUnLAoJCSk7CgoJCXBiX2JhY2t1cG
J1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0xvYWRpbmcgZWFjaCBmaWxlIGludG8gbWVtb3J5IGZvciB3c
ml0aW5nIG1hc3RlciBpbXBvcnRidWRkeSBmaWxlLicgKTsKCgkJJG91dHB1dCAuPSAiXG4vKlxuIyMjUEFD
S0RBVEEsQkVHSU5cbiI7CgkJZm9yZWFjaCAoICRfcGFja2RhdGEgYXMgJHBhY2tfc291cmNlID0+ICRwYWN
rX2Rlc3RpbmF0aW9uICkgewoJCQkkcGFja19zb3VyY2UgPSAnLycgLiAkcGFja19zb3VyY2U7CgkJCWlmIC
ggaXNfZGlyKCBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICRwYWNrX3NvdXJjZSApICkgewoJC
QkJJGZpbGVzID0gcGJfYmFja3VwYnVkZHk6OiRmaWxlc3lzdGVtLT5kZWVwc2NhbmRpciggcGJfYmFja3Vw
YnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAkcGFja19zb3VyY2UgKTsKCQkJfSBlbHNlIHsKCQkJCSRmaWxlcyA
9IGFycmF5KCBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICRwYWNrX3NvdXJjZSApOwoJCQl9Cg
kJCWZvcmVhY2ggKCAkZmlsZXMgYXMgJGZpbGUgKSB7CgkJCQlpZiAoIGlzX2ZpbGUoICRmaWxlICkgKSB7C
gkJCQkJJHNvdXJjZSAgICAgID0gc3RyX3JlcGxhY2UoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgp
LCAnJywgJGZpbGUgKTsKCQkJCQkkZGVzdGluYXRpb24gPSAkcGFja19kZXN0aW5hdGlvbiAuIHN1YnN0cig
gJHNvdXJjZSwgc3RybGVuKCAkcGFja19zb3VyY2UgKSApOwoJCQkJCSRvdXRwdXQgICAgIC49ICIjIyNQQU
NLREFUQSxGSUxFX1NUQVJULHskc291cmNlfSx7JGRlc3RpbmF0aW9ufVxuIjsKCQkJCQkkb3V0cHV0ICAgI
CAuPSBiYXNlNjRfZW5jb2RlKCBmaWxlX2dldF9jb250ZW50cyggJGZpbGUgKSApOwoJCQkJCSRvdXRwdXQg
ICAgIC49ICJcbiI7CgkJCQkJJG91dHB1dCAgICAgLj0gIiMjI1BBQ0tEQVRBLEZJTEVfRU5ELHskc291cmN
lfSx7JGRlc3RpbmF0aW9ufVxuIjsKCQkJCX0KCQkJfQoJCX0KCQkkb3V0cHV0IC49ICIjIyNQQUNLREFUQS
xFTkRcbiovIjsKCQkkb3V0cHV0IC49ICJcblxuXG5cblxuXG5cblxuXG5cbiI7CgoJCWlmICggdHJ1ZSA9P
T0gJHJldHVybl9ub3RfZWNobyApIHsKCQkJcmV0dXJuICRvdXRwdXQ7CgkJfQoKCQlpZiAoICcnID09ICRv
dXRwdXRfZmlsZSApIHsgLy8gTm8gZmlsZSBzbyBvdXRwdXQgdG8gYnJvd3Nlci4KCQkJaGVhZGVyKCAnQ29
udGVudC1EZXNjcmlwdGlvbjogRmlsZSBUcmFuc2ZlcicgKTsKCQkJaGVhZGVyKCAnQ29udGVudC1UeXBlOi
B0ZXh0L3BsYWluOyBuYW1lPWltcG9ydGJ1ZGR5LnBocCcgKTsKCQkJaGVhZGVyKCAnQ29udGVudC1EaXNwb
3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9aW1wb3J0YnVkZHkucGhwJyApOwoJCQloZWFkZXIoICdF
eHBpcmVzOiAwJyApOwoJCQloZWFkZXIoICdDb250ZW50LUxlbmd0aDogJyAuIHN0cmxlbiggJG91dHB1dCA
pICk7CgoJCQlwYl9iYWNrdXBidWRkeTo6Zmx1c2goKTsKCQkJZWNobyAkb3V0cHV0OwoJCQlwYl9iYWNrdX
BidWRkeTo6Zmx1c2goKTsKCgkJCS8vIEJFIFNVUkUgVE8gZGllKCkgQUZURVIgVEhJUyBBTkQgTk9UIE9VV
FBVVCBUTyBCUk9XU0VSIQoJCX0gZWxzZSB7IC8vIFdyaXRlIHRvIGZpbGUuCgkJCXBiX2JhY2t1cGJ1ZGR5
OjpzdGF0dXMoICdkZXRhaWxzJywgJ1dyaXRpbmcgaW1wb3J0YnVkZHkgbWFzdGVyIGZpbGUgdG8gZGlzay4
nICk7CgkJCWlmICggZmFsc2UgPT09IGZpbGVfcHV0X2NvbnRlbnRzKCAkb3V0cHV0X2ZpbGUsICRvdXRwdX
QgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjNDgzODk0OiBVb
mFibGUgdG8gd3JpdGUgdG8gZmlsZSBgJyAuICRvdXRwdXRfZmlsZSAuICdgLicgKTsKCQkJCXJldHVybiBm
YWxzZTsKCQkJfQoKCQkJcmV0dXJuIHRydWU7CgkJfQoKCX0gLy8gRW5kIGltcG9ydGJ1ZGR5KCkuCgoKCS8
qKgoJICogTGVhZGluZyAmIHRyYWlsaW5nIHNsYXNoLiBEb2VzIG5vdCBjcmVhdGUgaWYgaXQgZG9lcyBub3
QgZXhpc3QuCgkgKgoJICogQHJldHVybiBzdHJpbmcgIE1lZGlhIHJvb3QgcGF0aC4KCSAqLwoJcHVibGljI
HN0YXRpYyBmdW5jdGlvbiBnZXRfbWVkaWFfcm9v
dCgpIHsKCQkkdXBsb2Fkc19kaXJzID0gd3BfdXBsb2FkX2RpciggbnVsbCwgZmFsc2UgKTsKCQlyZXR1cm4
gcnRyaW0oICR1cGxvYWRzX2RpcnNbJ2Jhc2VkaXInXSwgJy8nICkgLiAnLyc7Cgl9IC8vIEVuZCBnZXRfbW
VkaWFfcm9vdCgpLgoKCgkvKioKCSAqIExlYWRpbmcgJiB0cmFpbGluZyBzbGFzaC4KCSAqCgkgKiBAcmV0d
XJuIHN0cmluZyAgVGhlbWVzIHJvb3QgcGF0aC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRf
dGhlbWVzX3Jvb3QoKSB7CgkJcmV0dXJuIHJ0cmltKCBkaXJuYW1lKCBnZXRfdGVtcGxhdGVfZGlyZWN0b3J
5KCkgKSwgJy8nICkgLiAnLyc7Cgl9IC8vIEVuZCBnZXRfdGhlbWVzX3Jvb3QoKS4KCgoJLyoqCgkgKiBMZW
FkaW5nICYgdHJhaWxpbmcgc2xhc2guCgkgKgoJICogQHJldHVybiBzdHJpbmcgIFBsdWdpbnMgcm9vdCBwY
XRoLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9wbHVnaW5zX3Jvb3QoKSB7CgkJcmV0dXJu
IHJ0cmltKCBXUF9QTFVHSU5fRElSLCAnLycgKSAuICcvJzsKCX0gLy8gRW5kIGdldF9wbHVnaW5zX3Jvb3Q
oKS4KCgkvKioKCSAqIFJldHVybnMgYXJyYXkgb2YgcGF0aHMgdG8gaW5hY3RpdmUgcGx1Z2lucy4KCSAqCg
kgKiBAcmV0dXJuIGFycmF5ICBQYXRocyB0byBpbmFjdGl2ZSBwbHVnaW5zLgoJICovCglwdWJsaWMgc3Rhd
GljIGZ1bmN0aW9uIGdldF9pbmFjdGl2ZV9wbHVnaW5zKCkgewoJCSRpbmFjdGl2ZV9wbHVnaW5zID0gYXJy
YXkoKTsKCgkJaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ2dldF9wbHVnaW5zJyApICkgewoJCQlyZXF1aXJ
lX29uY2UgQUJTUEFUSCAuICd3cC1hZG1pbi9pbmNsdWRlcy9wbHVnaW4ucGhwJzsKCQl9CgoJCSRhbGxfcG
x1Z2lucyA9IGdldF9wbHVnaW5zKCk7CgoJCWZvcmVhY2ggKCAkYWxsX3BsdWdpbnMgYXMgJHBsdWdpbl9wY
XRoID0+ICRwbHVnaW4gKSB7CgkJCWlmICggISAkcGx1Z2luX3BhdGggKSB7CgkJCQljb250aW51ZTsKCQkJ
fQoKCQkJaWYgKCBpc19wbHVnaW5fYWN0aXZlKCAkcGx1Z2luX3BhdGggKSA9PT0gZmFsc2UgKSB7CgkJCQl
pZiAoIGRpcm5hbWUoIHNlbGY6OmdldF9wbHVnaW5zX3Jvb3QoKSAuICRwbHVnaW5fcGF0aCApID09IFdQX1
BMVUdJTl9ESVIgKSB7CgkJCQkJLy8gRXhjbHVkZSB0aGUgZnVsbCBwYXRoIChsaWtlIHBsdWdpbnMvaGVsb
G8ucGhwKS4KCQkJCQkkaW5hY3RpdmVfcGx1Z2luc1tdID0gc2VsZjo6Z2V0X3BsdWdpbnNfcm9vdCgpIC4g
JHBsdWdpbl9wYXRoOwoJCQkJfSBlbHNlIHsKCQkJCQkvLyBFeGNsdWRlIHRoZSBwYXJlbnQgZm9sZGVyICh
saWtlIHBsdWdpbnMvYWtpc21ldCkuCgkJCQkJJGluYWN0aXZlX3BsdWdpbnNbXSA9IGRpcm5hbWUoIHNlbG
Y6OmdldF9wbHVnaW5zX3Jvb3QoKSAuICRwbHVnaW5fcGF0aCApOwoJCQkJfQoJCQl9CgkJfQoKCQlyZXR1c
m4gJGluYWN0aXZlX3BsdWdpbnM7Cgl9CgoJLyoqCgkgKiBSZXR1cm4gYSBuaWNlIGh1bWFuIHN0cmluZyBm
b3IgYSBzcGVjaWZpZWQgYmFja3VwIHR5cGUuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdHlwZSAgVHlwZSB
vZiBiYWNrdXAuIEVnLiBmdWxsLCBkYiwgZmlsZXMuCgkgKgoJICogQHJldHVybiBzdHJpbmcgIFByZXR0eS
BuYW1lIGZvciB0eXBlIG9mIGJhY2t1cC4gRWcuIEZ1bGwsIERhdGFiYXNlLCBGaWxlcy4KCSAqLwoJcHVib
GljIHN0YXRpYyBmdW5jdGlvbiBwcmV0dHlfYmFja3VwX3R5cGUoICR0eXBlICkgewoJCSR0eXBlcyA9IGFy
cmF5KAoJCQknZnVsbCcgICAgPT4gJ0Z1bGwnLAoJCQknZGInICAgICAgPT4gJ0RhdGFiYXNlJywKCQkJJ2Z
pbGVzJyAgID0+ICdGaWxlcycsCgkJCSd0aGVtZXMnICA9PiAnVGhlbWVzJywKCQkJJ3BsdWdpbnMnID0+IC
dQbHVnaW5zJywKCQkJJ21lZGlhJyAgID0+ICdNZWRpYScsCgkJKTsKCgkJaWYgKCBpc3NldCggJHR5cGVzW
yAkdHlwZSBdICkgKSB7CgkJCXJldHVybiAkdHlwZXNbICR0eXBlIF07CgkJfSBlbHNlIHsKCQkJcmV0dXJu
ICR0eXBlOwoJCX0KCX0gLy8gRW5kIHByZXR0eV9iYWNrdXBfdHlwZSgpLgoKCgkvKioKCSAqIFRha2UgYSB
kZXN0aW5hdGlvbiB0eXBlIHNsdWcgYW5kIGNoYW5nZSBpdCBpbnRvIGEgdXNlci1mcmllbmRseSBkaXNwbG
F5IG9mIHRoZSBkZXN0aW5hdGlvbiB0eXBlLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgIEludGVyb
mFsIGRlc3RpbmF0aW9uIHNsdWcuIChFeDogczMpLgoJICoKCSAqIEByZXR1cm4gc3RyaW5nICBGcmllbmRs
eSBkZXN0aW5hdGlvbiB0aXRsZS4gRWc6IEFtYXpvbiBTMwoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9
uIHByZXR0eV9kZXN0aW5hdGlvbl90eXBlKCAkdHlwZSApIHsKCQlpZiAoICdyYWNrc3BhY2UnID09PSAkdH
lwZSApIHsKCQkJcmV0dXJuICdSYWNrc3BhY2UnOwoJCX0gZWxzZWlmICggJ2VtYWlsJyA9PT0gJHR5cGUgK
SB7CgkJCXJldHVybiAnRW1haWwnOwoJCX0gZWxzZWlmICggJ3MzJyA9PT0gJHR5cGUgKSB7CgkJCXJldHVy
biAnQW1hem9uIFMzJzsKCQl9IGVsc2VpZiAoICdzMzInID09PSAkdHlwZSApIHsKCQkJcmV0dXJuICdBbWF
6b24gUzMgdjInOwoJCX0gZWxzZWlmICggJ3MzMycgPT09ICR0eXBlICkgewoJCQlyZXR1cm4gJ0FtYXpvbi
BTMyB2Myc7CgkJfSBlbHNlaWYgKCAnZnRwJyA9PT0gJHR5cGUgKSB7CgkJCXJldHVybiAnRlRQJzsKCQl9I
GVsc2VpZiAoICdzdGFzaDInID09PSAkdHlwZSApIHsKCQkJcmV0dXJuICdCYWNrdXBCdWRkeSBTdGFzaCB2
Mic7CgkJfSBlbHNlaWYgKCAnc3Rhc2gzJyA9PT0gJHR5cGUgKSB7CgkJCXJldHVybiAnQmFja3VwQnVkZHk
gU3Rhc2ggdjMnOwoJCX0gZWxzZWlmICggJ3NmdHAnID09PSAkdHlwZSApIHsKCQkJcmV0dXJuICdzRlRQJz
sKCQl9IGVsc2VpZiAoICdkcm9wYm94MicgPT09ICR0eXBlICkgewoJCQlyZXR1cm4gJ0Ryb3Bib3ggdjInO
woJCX0gZWxzZWlmICggJ2dkcml2ZScgPT09ICR0eXBlICkgewoJCQlyZXR1cm4gJ0dvb2dsZSBEcml2ZSc7
CgkJfSBlbHNlaWYgKCAnc2l0ZScgPT09ICR0eXBlICkgewoJCQlyZXR1cm4gJ0JhY2t1cEJ1ZGR5IERlcGx
veW1lbnQnOwoJCX0gZWxzZSB7CgkJCXJldHVybiB1Y3dvcmRzKCBzdHJfcmVwbGFjZSggJ18nLCAnICcsIC
R0eXBlICkgKTsKCQl9Cgl9IC8vIEVuZCBwcmV0dHlfZGVzdGluYXRpb25fdHlwZSgpLgoKCgkvKioKCSAqI
EJ1aWxkIGRpcmVjdG9yeSB0cmVlIGZvciB1c2Ugd2l0aCB0aGUgImljaWNsZSIgamF2YXNjcmlwdCBsaWJy
YXJ5IGZvciB0aGUgZ3JhcGhpY2FsIGRpcmVjdG9yeSBkaXNwbGF5IG9uIFNlcnZlciBUb29scyBwYWdlLgo
JICoKCSAqIEBwYXJhbSBzdHJpbmcgJGRpciAgICAgICAgICBEaXJlY3RvcnkuCgkgKiBAcGFyYW0gc3RyaW
5nICRiYXNlICAgICAgICAgQmFzZS4KCSAqIEBwYXJhbSBzdHJpbmcgJGljaWNsZV9qc29uICBKU09OIHRvI
GJ1aWxkLgoJICogQHBhcmFtIGludCAgICAkbWF4X2RlcHRoICAgIE1heGltdW0gZGVwdGggb2YgdHJlZSB0
byBkaXNwbGF5LiBOb3RlIHRoYXQgZGVlcGVyIGRlcHRocyBhcmUgc3RpbGwgdHJhdmVyc2VkIGZvciBzaXp
lIGNhbGN1bGF0aW9ucy4gRGVmYXVsdDogMTAuCgkgKiBAcGFyYW0gaW50ICAgICRkZXB0aF9jb3VudCAgRG
VwdGggY291bnQuIERlZmF1bHQ6IDAuCgkgKiBAcGFyYW0gYm9vbCAgICRpc19yb290ICAgICAgSXMgcm9vd
D8gRGVmYXVsdDogdHJ1ZS4KCSAqCgkgKiBAcmV0dXJuIGFycmF5ICBJY2ljbGUgSlNPTiBhbmQgZGlyZWN0
b3J5IHNpemUuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYnVpbGRfaWNpY2xlKCAkZGlyLCAkYmF
zZSwgJGljaWNsZV9qc29uLCAkbWF4X2RlcHRoID0gMTAsICRkZXB0aF9jb3VudCA9IDAsICRpc19yb290ID
0gdHJ1ZSApIHsKCQkkYmdfY29sb3IgPSAnMDA1MjgyJzsKCgkJJGRlcHRoX2NvdW50Kys7CgkJJGJnX2Nvb
G9yID0gZGVjaGV4KCBoZXhkZWMoICRiZ19jb2xvciApIC0gKCAkZGVwdGhfY291bnQgKiAxNSApICk7CgoJ
CSRpY2ljbGVfanNvbiA9ICd7JyAuICJcbiI7CgoJCSRkaXJfbmFtZSA9ICRkaXI7CgkJJGRpcl9uYW1lID0
gc3RyX3JlcGxhY2UoIEFCU1BBVEgsICcnLCAkZGlyICk7CgkJJGRpcl9uYW1lID0gc3RyX3JlcGxhY2UoIC
dcXCcsICcvJywgJGRpcl9uYW1lICk7CgoJCSRkaXJfc2l6ZSAgICAgPSAwOwoJCSRzdWIgICAgICAgICAgP
SBvcGVuZGlyKCAkZGlyICk7CgkJJGhhc19jaGlsZHJlbiA9IGZhbHNlOwoJCXdoaWxlICggJGZpbGUgPSBy
ZWFkZGlyKCAkc3ViICkgKSB7CgkJCWlmICggJy4nID09PSAkZmlsZSB8fCAnLi4nID09PSAkZmlsZSApIHs
KCQkJCWNvbnRpbnVlOyAvLyBOZXh0IGxvb3AuCgkJCX0gZWxzZWlmICggaXNfZGlyKCAkZGlyIC4gJy8nIC
4gJGZpbGUgKSApIHsKCQkJCSRkaXJfYXJyYXkgPSAnJzsKCQkJCSRyZXNwb25zZSAgPSBzZWxmOjpidWlsZ
F9pY2ljbGUoICRkaXIgLiAnLycgLiAkZmlsZSwgJGJhc2UsICRkaXJfYXJyYXksICRtYXhfZGVwdGgsICRk
ZXB0aF9jb3VudCwgZmFsc2UgKTsKCQkJCWlmICggJG1heF9kZXB0aCAtIDEgPiAwIHx8IC0xID09ICRtYXh
fZGVwdGggKSB7IC8vIE9ubHkgYWRkcyB0byB0aGUgdmlzdWFsIHRyZWUgaWYgZGVwdGggaXNuJ3QgZXhjZW
VkZWQuCgkJCQkJaWYgKCAkbWF4X2RlcHRoID4gMCApIHsKCQkJCQkJJG1heF9kZXB0aC0tOwoJCQkJCX0KC
gkJCQkJaWYgKCBmYWxzZSA9PT0gJGhhc19jaGlsZHJlbiApIHsgLy8gZmlyc3QgbG9vcCBhZGQgY2hpbGRy
ZW4gc2VjdGlvbi4KCQkJCQkJJGljaWNsZV9qc29uIC49ICciY2hpbGRyZW4iOiBbJyAuICJcbiI7CgkJCQk
JfSBlbHNlIHsKCQkJCQkJJGljaWNsZV9qc29uIC49ICcsJzsKCQkJCQl9CgkJCQkJJGljaWNsZV9qc29uIC
49ICRyZXNwb25zZVswXTsKCgkJCQkJJGhhc19jaGlsZHJlbiA9IHRydWU7CgkJCQl9CgkJCQkkZGlyX3Npe
mUgKz0gJHJlc3BvbnNlWzFdOwoJCQkJdW5zZXQoICRyZXNwb25zZSApOwoJCQkJdW5zZXQoICRmaWxlICk7
CgoJCQl9IGVsc2UgewoJCQkJJHN0YXRzICAgICA9IHN0YXQoICRkaXIgLiAnLycgLiAkZmlsZSApOwoJCQk
JJGRpcl9zaXplICs9ICRzdGF0c1snc2l6ZSddOwoJCQkJdW5zZXQoICRmaWxlICk7CgkJCX0KCQl9CgkJY2
xvc2VkaXIoICRzdWIgKTsKCQl1bnNldCggJHN1YiApOwoKCQlpZiAoIHRydWUgPT09ICRoYXNfY2hpbGRyZ
W4gKSB7CgkJCSRpY2ljbGVfanNvbiAuPSAnIF0nIC4gIlxuIjsKCQkJJGljaWNsZV9qc29uIC49ICcsJzsK
CQl9CgoJCSRpY2ljbGVfanNvbiAuPSAnImlkIjogIm5vZGVfJyAuIHN0cl9yZXBsYWNlKCAnLycsICc6Jyw
gJGRpcl9uYW1lICkgLiAnOiBeJyAuIHN0cl9yZXBsYWNlKCAnICcsICd+JywgcGJfYmFja3VwYnVkZHk6Oi
Rmb3JtYXQtPmZpbGVfc2l6ZSggJGRpcl9zaXplICkgKSAuICciJyAuICJcbiI7CgoJCSRkaXJfbmFtZSA9I
HN0cl9yZXBsYWNlKCAnLycsICcnLCBzdHJyY2hyKCAkZGlyX25hbWUsICcvJyApICk7CgkJaWYgKCAnJyA9
PSAkZGlyX25hbWUgKSB7IC8vIFNldCByb290IHRvIGJlIC8uCgkJCSRkaXJfbmFtZSA9ICcvJzsKCQl9Cgk
JJGljaWNsZV9qc29uIC49ICcsICJuYW1lIjogIicgLiAkZGlyX25hbWUgLiAnICgnIC4gcGJfYmFja3VwYn
VkZHk6OiRmb3JtYXQtPmZpbGVfc2l6ZSggJGRpcl9zaXplICkgLiAnKSInIC4gIlxuIjsKCgkJJGljaWNsZ
V9qc29uIC49ICcsImRhdGEiOiB7ICIkZGltIjogJyAuICggJGRpcl9zaXplICsgMTAgKSAuICcsICIkY29s
b3IiOiAiIycgLiBzdHJfcGFkKCAkYmdfY29sb3IsIDYsICcwJywgU1RSX1BBRF9MRUZUICkgLiAnIiB9JyA
uICJcbiI7CgkJJGljaWNsZV9qc29uIC49ICd9JzsKCgkJcmV0dXJuIGFycmF5KCAkaWNpY2xlX2pzb24sIC
RkaXJfc2l6ZSApOwoJfSAvLyBFbmQgYnVpbGRfaWNpY2xlKCkuCgoKCS8qKgoJICogUHJlZmxpZ2h0IENoZ
WNrCgkgKgoJICogQHJldHVybiBhcnJheSAgVGVzdHMgYW5kIHRoZWlyIHJlc3VsdHMuCgkgKi8KCXB1Ymxp
YyBzdGF0aWMgZnVuY3Rpb24gcHJlZmxpZ2h0X2NoZWNrKCkgewoJCSR0ZXN0cyA9IGFycmF5KCk7CgoJCS8
vIE1VTFRJU0lURSBCRVRBIFdBUk5JTkcuCgkJaWYgKCBpc19tdWx0aXNpdGUoKSAmJiBiYWNrdXBidWRkeV
9jb3JlOjppc19uZXR3b3JrX2FjdGl2YXRlZCgpICYmICEgZGVmaW5lZCggJ1BCX0RFTU9fTU9ERScgKSApI
HsgLy8gTXVsdGlzaXRlIGluc3RhbGxhdGlvbi4KCQkJJGluc3RydWN0aW9uID0gZGVmaW5lZCggJ1BCX0JB
Q0tVUEJVRERZX01VTFRJU0lURV9FWFBFUklNRU5UJyApICYmIHRydWUgPT09IFBCX0JBQ0tVUEJVRERZX01
VTFRJU0lURV9FWFBFUklNRU5UID8gJycgOiAnVG8gZW5hYmxlIGV4cGVyaW1lbnRhbCBCYWNrdXBCdWRkeS
BNdWx0aXNpdGUgZnVuY3Rpb25hbGl0eSB5b3UgbXVzdCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lIHRvIHlvd
XIgd3AtY29uZmlnLnBocCBmaWxlOiA8Yj5kZWZpbmUoIFwnUEJfQkFDS1VQQlVERFlfTVVMVElTSVRFX0VY
UEVSSU1FTlRcJywgdHJ1ZSApOzwvYj4nOwoJCQkkdGVzdHNbXSA9IGFycmF5KAoJCQkJJ3Rlc3QnICAgID0
+ICdtdWx0aXNpdGVfYmV0YScsCgkJCQknc3VjY2VzcycgPT4gZmFsc2UsCgkJCQknbWVzc2FnZScgPT4gJ1
dBUk5JTkc6IEJhY2t1cEJ1ZGR5IE11bHRpc2l0ZSBmdW5jdGlvbmFsaXR5IGlzIEVYUEVSSU1FTlRBTCBhb
mQgTk9UIG9mZmljaWFsbHkgc3VwcG9ydGVkLiBNdWx0aXBsZSBpc3N1ZXMgYXJlIGtub3duLiBVc2FnZSBv
ZiBpdCBpcyBhdCB5b3VyIG93biByaXNrIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCB1cG9uLiBTdGFuZGF
sb25lIFdvcmRQcmVzcyBzaXRlcyBhcmUgc3VnZ2VzdGVkLiBZb3UgbWF5IHVzZSB0aGUgIkV4cG9ydCIgZm
VhdHVyZSB0byBleHBvcnQgeW91ciBzdWJzaXRlcyBpbnRvIHN0YW5kYWxvbmUgV29yZFByZXNzIHNpdGVzL
icgLiAkaW5zdHJ1Y3Rpb24sCgkJCSk7CgkJfSAvLyBlbmQgbmV0d29yay1hY3RpdmF0ZWQgbXVsdGlzaXRl
LgoKCQkvLyBMT09QQkFDS1MgVEVTVC4KCQkkbG9vcGJhY2tfcmVzcG9uc2UgPSBzZWxmOjpsb29wYmFja19
0ZXN0KCk7CgkJaWYgKCB0cnVlID09PSAkbG9vcGJhY2tfcmVzcG9uc2UgKSB7CgkJCSRzdWNjZXNzID0gdH
J1ZTsKCQkJJG1lc3NhZ2UgPSAnJzsKCQl9IGVsc2UgeyAvLyBGYWlsZWQuCgkJCSRzdWNjZXNzID0gZmFsc
2U7CgkJCWlmICggZGVmaW5lZCggJ0FMVEVSTkFURV9XUF9DUk9OJyApICYmIHRydWUgPT0gQUxURVJOQVRF
X1dQX0NST04gKSB7CgkJCQkkbWVzc2FnZSA9IF9fKCAnUnVubmluZyBpbiBBbHRlcm5hdGUgV29yZFByZXN
zIENyb24gbW9kZS4gSFRUUCBMb29wYmFjayBDb25uZWN0aW9ucyBhcmUgbm90IGVuYWJsZWQgb24gdGhpcy
BzZXJ2ZXIgYnV0IHlvdSBoYXZlIG92ZXJyaWRkZW4gdGhpcyBpbiB0aGUgd3AtY29uZmlnLnBocCBmaWxlI
Ch0aGlzIGlzIGEgZ29vZCB0aGluZykuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnIDxhIGhyZWY9
Imh0dHBzOi8vaXRoZW1lc2hlbHAuemVuZGVzay5
jb20vaGMvZW4tdXMvYXJ0aWNsZXMvMjExMTMyMzU3LUZyZXF1ZW50bHktU2Vlbi1TdXBwb3J0LUlzc3Vlcy
NodHRwTG9vcCIgdGFyZ2V0PSJfYmxhbmsiPicgLiBfXyggJ0FkZGl0aW9uYWwgSW5mb3JtYXRpb24gSGVyZ
ScsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzwvYT4uJzsKCQkJfSBlbHNlIHsKCQkJCSRtZXNzYWdl
ICA9IF9fKCAnSFRUUCBMb29wYmFjayBDb25uZWN0aW9ucyBhcmUgbm90IGVuYWJsZWQgb24gdGhpcyBzZXJ
2ZXIgb3IgYXJlIG5vdCBmdW5jdGlvbmluZyBwcm9wZXJseS4gWW91IG1heSBlbmNvdW50ZXIgc3RhbGxlZC
wgc2lnbmlmaWNhbnRseSBkZWxheWVkIGJhY2t1cHMsIG9yIG90aGVyIGRpZmZpY3VsdGllcy4gU2VlIGRld
GFpbHMgaW4gdGhlIGJveCBiZWxvdy4gVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IGEgY29uZmxpY3RpbmcgcGx1
Z2luIHN1Y2ggYXMgYSBjYWNoaW5nIHBsdWdpbi4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICcgPGE
gaHJlZj0iaHR0cHM6Ly9pdGhlbWVzaGVscC56ZW5kZXNrLmNvbS9oYy9lbi11cy9hcnRpY2xlcy8yMTExMz
IzNTctRnJlcXVlbnRseS1TZWVuLVN1cHBvcnQtSXNzdWVzI2h0dHBMb29wIiB0YXJnZXQ9Il9ibGFuayI+J
yAuIF9fKCAnQ2xpY2sgZm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8gcmVzb2x2ZSB0aGlzIGlzc3VlLics
ICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzwvYT4nOwoJCQkJJG1lc3NhZ2UgLj0gJyA8Yj5EZXRhaWx
zOjwvYj4gPHRleHRhcmVhIHN0eWxlPSJoZWlnaHQ6IDUwcHg7IHdpZHRoOiAxMDAlOyI+JyAuICRsb29wYm
Fja19yZXNwb25zZSAuICc8L3RleHRhcmVhPic7CgkJCX0KCQl9CgkJJHRlc3RzW10gPSBhcnJheSgKCQkJJ
3Rlc3QnICAgID0+ICdsb29wYmFja3MnLAoJCQknc3VjY2VzcycgPT4gJHN1Y2Nlc3MsCgkJCSdtZXNzYWdl
JyA9PiAkbWVzc2FnZSwKCQkpOwoKCQkvLyBDUk9OQkFDS1MgVEVTVC4KCQkkY3JvbmJhY2tfcmVzcG9uc2U
gPSBzZWxmOjpjcm9uYmFja190ZXN0KCk7CgkJaWYgKCB0cnVlID09PSAkY3JvbmJhY2tfcmVzcG9uc2UgKS
B7CgkJCSRzdWNjZXNzID0gdHJ1ZTsKCQkJJG1lc3NhZ2UgPSAnJzsKCQl9IGVsc2UgeyAvLyBGYWlsZWQuC
gkJCSRzdWNjZXNzID0gZmFsc2U7CgkJCWlmICggZGVmaW5lZCggJ0FMVEVSTkFURV9XUF9DUk9OJyApICYm
IHRydWUgPT0gQUxURVJOQVRFX1dQX0NST04gKSB7CgkJCQkkbWVzc2FnZSA9IF9fKCAnUnVubmluZyBpbiB
BbHRlcm5hdGUgV29yZFByZXNzIENyb24gbW9kZS4gSFRUUCBjcm9uYmFjayBDb25uZWN0aW9ucyBhcmUgbm
90IGVuYWJsZWQgb24gdGhpcyBzZXJ2ZXIgYnV0IHlvdSBoYXZlIG92ZXJyaWRkZW4gdGhpcyBpbiB0aGUgd
3AtY29uZmlnLnBocCBmaWxlICh0aGlzIGlzIGEgZ29vZCB0aGluZykuJywgJ2l0LWwxMG4tYmFja3VwYnVk
ZHknICkgLiAnIDxhIGhyZWY9Imh0dHA6Ly9pdGhlbWVzLmNvbS9jb2RleC9wYWdlL0JhY2t1cEJ1ZGR5Ol9
GcmVxdWVudF9TdXBwb3J0X0lzc3VlcyNIVFRQX2Nyb25iYWNrX0Nvbm5lY3Rpb25zX0Rpc2FibGVkIiB0YX
JnZXQ9Il9ibGFuayI+JyAuIF9fKCAnQWRkaXRpb25hbCBJbmZvcm1hdGlvbiBIZXJlJywgJ2l0LWwxMG4tY
mFja3VwYnVkZHknICkgLiAnPC9hPi4nOwoJCQl9IGVsc2UgewoJCQkJJG1lc3NhZ2UgID0gX18oICdIVFRQ
IGxvb3BiYWNrIGNvbm5lY3Rpb25zIGFyZSBub3QgZW5hYmxlZCB0byB0aGUgd3AtY3Jvbi5waHAgb24gdGh
pcyBzZXJ2ZXIgb3IgYXJlIG5vdCBmdW5jdGlvbmluZyBwcm9wZXJseS4gWW91IG1heSBlbmNvdW50ZXIgc3
RhbGxlZCwgc2lnbmlmaWNhbnRseSBkZWxheWVkIGJhY2t1cHMsIG9yIG90aGVyIGRpZmZpY3VsdGllcy4gU
2VlIGRldGFpbHMgaW4gdGhlIGJveCBiZWxvdy4gVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IGEgY29uZmxpY3Rp
bmcgcGx1Z2luIHN1Y2ggYXMgYSBjYWNoaW5nIHBsdWdpbi4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSA
uICcgPGEgaHJlZj0iaHR0cHM6Ly9pdGhlbWVzaGVscC56ZW5kZXNrLmNvbS9oYy9lbi11cy9hcnRpY2xlcy
8yMTExMzIzNTctRnJlcXVlbnRseS1TZWVuLVN1cHBvcnQtSXNzdWVzI2h0dHBMb29wIiB0YXJnZXQ9Il9ib
GFuayI+JyAuIF9fKCAnQ2xpY2sgZm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8gcmVzb2x2ZSB0aGlzIGlz
c3VlLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzwvYT4nOwoJCQkJJG1lc3NhZ2UgLj0gJyA8Yj5
EZXRhaWxzOjwvYj4gPHRleHRhcmVhIHN0eWxlPSJoZWlnaHQ6IDUwcHg7IHdpZHRoOiAxMDAlOyI+JyAuIC
Rjcm9uYmFja19yZXNwb25zZSAuICc8L3RleHRhcmVhPic7CgkJCX0KCQl9CgkJJHRlc3RzW10gPSBhcnJhe
SgKCQkJJ3Rlc3QnICAgID0+ICdjcm9uYmFja3MnLAoJCQknc3VjY2VzcycgPT4gJHN1Y2Nlc3MsCgkJCSdt
ZXNzYWdlJyA9PiAkbWVzc2FnZSwKCQkpOwoKCQkvLyBQT1NTSUJMRSBDQUNISU5HIFBMVUdJTiBDT05GTEl
DVCBXQVJOSU5HLgoJCSRzdWNjZXNzICAgICAgID0gdHJ1ZTsKCQkkbWVzc2FnZSAgICAgICA9ICcnOwoJCS
Rmb3VuZF9wbHVnaW5zID0gYXJyYXkoKTsKCQlpZiAoICEgaXNfbXVsdGlzaXRlKCkgKSB7CgkJCSRhY3Rpd
mVfcGx1Z2lucyA9IHNlcmlhbGl6ZSggZ2V0X29wdGlvbiggJ2FjdGl2ZV9wbHVnaW5zJyApICk7CgkJCWZv
cmVhY2ggKCBzZWxmOjokd2Fybl9wbHVnaW5zIGFzICR3YXJuX3BsdWdpbiA9PiAkd2Fybl9wbHVnaW5fdGl
0bGUgKSB7CgkJCQlpZiAoIGZhbHNlICE9PSBzdHJwb3MoICRhY3RpdmVfcGx1Z2lucywgJHdhcm5fcGx1Z2
luICkgKSB7IC8vIFBsdWdpbiBhY3RpdmUuCgkJCQkJJGZvdW5kX3BsdWdpbnNbXSA9ICR3YXJuX3BsdWdpb
l90aXRsZTsKCQkJCQkkc3VjY2VzcyAgICAgICAgID0gZmFsc2U7CgkJCQl9CgkJCX0KCQl9CgkJaWYgKCBj
b3VudCggJGZvdW5kX3BsdWdpbnMgKSA+IDAgKSB7CgkJCSRtZXNzYWdlICA9IF9fKCAnT25lIG9yIG1vcmU
gY2FjaGluZyBvciBzZWN1cml0eSBwbHVnaW5zIGtub3duIHRvIHBvc3NpYmx5IGNhdXNlIHByb2JsZW1zIH
dhcyBkZXRlY3RlZCBhcyBhY3RpdmF0ZWQuIFNvbWUgY2FjaGluZyBvciBzZWN1cml0eSBwbHVnaW4gY29uZ
mlndXJhdGlvbnMgbWF5IHBvc3NpYmx5IGNhY2hlIG9yIGludGVyZmVyZSB3aXRoIGJhY2t1cCBwcm9jZXNz
ZXMgb3IgV29yZFByZXNzIGNyb24uIElmIHlvdSBlbmNvdW50ZXIgcHJvYmxlbXMgY2xlYXIgdGhlIGNhY2h
pbmcgcGx1Z2luXCdzIGNhY2hlIG9yIGNoZWNrIHNlY3VyaXR5IHNldHRpbmdzIChkZWFjdGl2YXRpbmcgdG
hlIHBsdWdpbiBtYXkgaGVscCkgdG8gdHJvdWJsZXNob290LicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApI
C4gJyAnOwoJCQkkbWVzc2FnZSAuPSBfXyggJ0FjdGl2YXRlZCBjYWNoaW5nIHBsdWdpbnMgZGV0ZWN0ZWQ6
JywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnICc7CgkJCSRtZXNzYWdlIC49IGltcGxvZGUoICcsICc
sICRmb3VuZF9wbHVnaW5zICk7CgkJCSRtZXNzYWdlIC49ICcuJzsKCQl9CgkJJHRlc3RzW10gPSBhcnJheS
gKCQkJJ3Rlc3QnICAgID0+ICdsb29wYmFja3MnLAoJCQknc3VjY2VzcycgPT4gJHN1Y2Nlc3MsCgkJCSdtZ
XNzYWdlJyA9PiAkbWVzc2FnZSwKCQkpOwoKCQkvLyBXb3JkUHJlc3MgSU4gU1VCRElSRUNUT1JJRVMgVEVT
VC4KCQkkd29yZHByZXNzX2xvY2F0aW9ucyA9IHNlbGY6OmdldF93b3JkcHJlc3NfbG9jYXRpb25zKCk7Cgk
JaWYgKCBjb3VudCggJHdvcmRwcmVzc19sb2NhdGlvbnMgKSA+IDAgKSB7CgkJCSRzdWNjZXNzID0gZmFsc2
U7CgkJCSRtZXNzYWdlID0gX18oICdXb3JkUHJlc3MgbWF5IGhhdmUgYmVlbiBkZXRlY3RlZCBpbiBvbmUgb
3IgbW9yZSBzdWJkaXJlY3Rvcmllcy4gQmFja2luZyB1cCBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgV29yZFBy
ZXNzIG1heSByZXN1bHQgaW4gc2VydmVyIHRpbWVvdXRzIGR1ZSB0byBpbmNyZWFzZWQgYmFja3VwIHRpbWU
uIFlvdSBtYXkgZXhjbHVkZSBXb3JkUHJlc3MgZGlyZWN0b3JpZXMgdmlhIHRoZSBTZXR0aW5ncyBwYWdlLi
BEZXRlY3RlZCBub24tZXhjbHVkZWQgbG9jYXRpb25zOicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJ
yAnIC4gaW1wbG9kZSggJywgJywgJHdvcmRwcmVzc19sb2NhdGlvbnMgKTsKCQl9IGVsc2UgewoJCQkkc3Vj
Y2VzcyA9IHRydWU7CgkJCSRtZXNzYWdlID0gJyc7CgkJfQoJCSR0ZXN0c1tdID0gYXJyYXkoCgkJCSd0ZXN
0JyAgICA9PiAnd29yZHByZXNzX3N1YmRpcmVjdG9yaWVzJywKCQkJJ3N1Y2Nlc3MnID0+ICRzdWNjZXNzLA
oJCQknbWVzc2FnZScgPT4gJG1lc3NhZ2UsCgkJKTsKCgkJLy8gTG9nIGZpbGUgZGlyZWN0b3J5IHdyaXRhY
mxlIGZvciBzdGF0dXMgbG9nZ2luZy4KCQkkc3RhdHVzX2RpcmVjdG9yeSA9IGJhY2t1cGJ1ZGR5X2NvcmU6
OmdldExvZ0RpcmVjdG9yeSgpOwoJCWlmICggISBmaWxlX2V4aXN0cyggJHN0YXR1c19kaXJlY3RvcnkgKSA
pIHsKCQkJaWYgKCBmYWxzZSA9PT0gcGJfYmFja3VwYnVkZHk6OmFudGlfZGlyZWN0b3J5X2Jyb3dzaW5nKC
Akc3RhdHVzX2RpcmVjdG9yeSwgZmFsc2UgKSApIHsKCQkJCSRzdWNjZXNzID0gZmFsc2U7CgkJCQkkbWVzc
2FnZSA9ICdUaGUgc3RhdHVzIGxvZyBmaWxlIGRpcmVjdG9yeSBgJyAuICRzdGF0dXNfZGlyZWN0b3J5IC4g
J2AgaXMgbm90IGNyZWF0YWJsZSBvciBwZXJtaXNzaW9ucyBwcmV2ZW50IGFjY2Vzcy4gVmVyaWZ5IHBlcm1
pc3Npb25zIG9mIGl0IGFuZC9vciBpdHMgcGFyZW50IGRpcmVjdG9yeS4gQmFja3VwIHN0YXR1cyBpbmZvcm
1hdGlvbiB3aWxsIGJlIHVuYXZhaWxhYmxlIHVudGlsIHRoaXMgaXMgcmVzb2x2ZWQuJzsKCQkJfQoJCX0KC
QlpZiAoICEgaXNfd3JpdGFibGUoICRzdGF0dXNfZGlyZWN0b3J5ICkgKSB7CgkJCSRzdWNjZXNzID0gZmFs
c2U7CgkJCSRtZXNzYWdlID0gJ1RoZSBzdGF0dXMgbG9nIGZpbGUgZGlyZWN0b3J5IGAnIC4gJHN0YXR1c19
kaXJlY3RvcnkgLiAnYCBpcyBub3Qgd3JpdGFibGUuIFBsZWFzZSB2ZXJpZnkgcGVybWlzc2lvbnMgYmVmb3
JlIGNyZWF0aW5nIGEgYmFja3VwLiBCYWNrdXAgc3RhdHVzIGluZm9ybWF0aW9uIHdpbGwgYmUgdW5hdmFpb
GFibGUgdW50aWwgdGhpcyBpcyByZXNvbHZlZC4nOwoJCX0gZWxzZSB7CgkJCSRzdWNjZXNzID0gdHJ1ZTsK
CQkJJG1lc3NhZ2UgPSAnJzsKCQl9CgkJJHRlc3RzW10gPSBhcnJheSgKCQkJJ3Rlc3QnICAgID0+ICdzdGF
0dXNfZGlyZWN0b3J5X3dyaXRhYmxlJywKCQkJJ3N1Y2Nlc3MnID0+ICRzdWNjZXNzLAoJCQknbWVzc2FnZS
cgPT4gJG1lc3NhZ2UsCgkJKTsKCgkJLy8gQ0hFQ0sgWklQIEFWQUlMQUJJTElUWS4KCQlyZXF1aXJlX29uY
2UgcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2xpYi96aXBidWRkeS96aXBidWRkeS5waHAn
OwoKCQlpZiAoICEgaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5OjokY2xhc3Nlc1snemlwYnVkZHknXSApICkgewo
JCQlwYl9iYWNrdXBidWRkeTo6JGNsYXNzZXNbJ3ppcGJ1ZGR5J10gPSBuZXcgcGx1Z2luYnVkZHlfemlwYn
VkZHkoIGJhY2t1cGJ1ZGR5X2NvcmU6OmdldEJhY2t1cERpcmVjdG9yeSgpICk7CgkJfQoKCQkvKioqKiogQ
kVHSU4gTE9PS0lORyBGT1IgVU5GSU5JU0hFRCBSRUNFTlQgQkFDS1VQUyAqLwoJCWlmICggJycgIT0gcGJf
YmFja3VwYnVkZHk6OiRvcHRpb25zWydsYXN0X2JhY2t1cF9zZXJpYWwnXSApIHsKCQkJJGxhc3RfYmFja3V
wX2ZpbGVvcHRpb25zID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0TG9nRGlyZWN0b3J5KCkgLiAnZmlsZW9wdG
lvbnMvJyAuIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbGFzdF9iYWNrdXBfc2VyaWFsJ10gLiAnLnR4d
Cc7CgkJCWlmICggZmlsZV9leGlzdHMoICRsYXN0X2JhY2t1cF9maWxlb3B0aW9ucyApICkgewoJCQkJcmVx
dWlyZV9vbmNlIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9jbGFzc2VzL2ZpbGVvcHRpb25
zLnBocCc7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGaWxlb3B0aW9ucyBpbn
N0YW5jZSAjMzIuJyApOwoJCQkJJGJhY2t1cF9vcHRpb25zID0gbmV3IHBiX2JhY2t1cGJ1ZGR5X2ZpbGVvc
HRpb25zKCAkbGFzdF9iYWNrdXBfZmlsZW9wdGlvbnMsIHRydWUgKTsKCQkJCSRyZXN1bHQgICAgICAgICA9
ICRiYWNrdXBfb3B0aW9ucy0+aXNfb2soKTsKCQkJCWlmICggdHJ1ZSAhPT0gJHJlc3VsdCB8fCAhIGlzc2V
0KCAkYmFja3VwX29wdGlvbnMtPm9wdGlvbnNbJ3VwZGF0ZWRfdGltZSddICkgKSB7CgkJCQkJLy8gTk9URT
ogSWYgdGhpcyBmaWxlcyBkdXJpbmcgYSBiYWNrdXAgaXQgbWF5IHRyeSB0byByZWFkIHRoZSBmaWxlb3B0a
W9ucyBmaWxlIHRvbyBlYXJseSBkdWUgdG8gdGhlIGxhc3RfYmFja3VwX3NlcmlhbCBiZWluZyBzZXQuIFN1
cHByZXNzaW5nIGVycm9ycyBmb3Igbm93LgoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWx
zJywgJ1VuYWJsZSB0byByZXRyaWV2ZSBmaWxlb3B0aW9ucyBmaWxlICh0aGlzIGlzIG5vcm1hbCBpZiBhIG
JhY2t1cCBpcyBjdXJyZW50bHkgaW4gcHJvY2VzcyAmIG1heSBiZSBpZ25vcmVkKSBgJyAuIGJhY2t1cGJ1Z
GR5X2NvcmU6OmdldExvZ0RpcmVjdG9yeSgpIC4gJ2ZpbGVvcHRpb25zLycgLiBwYl9iYWNrdXBidWRkeTo6
JG9wdGlvbnNbJ2xhc3RfYmFja3VwX3NlcmlhbCddIC4gJy50eHQnIC4gJ2AuIEVyciA1NDQ3ODIzNjc2NS4
gRGV0YWlsczogYCcgLiAkcmVzdWx0IC4gJ2AuJyApOwoJCQkJfSBlbHNlIHsKCQkJCQlpZiAoICRiYWNrdX
Bfb3B0aW9ucy0+b3B0aW9uc1sndXBkYXRlZF90aW1lJ10gPCAxODAgKSB7IC8vIEJlZW4gbGVzcyB0aGFuI
DNtaW4gc2luY2UgbGFzdCBiYWNrdXAuCgoJCQkJCQlpZiAoICEgZW1wdHkoICRiYWNrdXBfb3B0aW9ucy0+
b3B0aW9uc1snc3RlcHMnXSApICkgeyAvLyBMb29rIGZvciBpbmNvbXBsZXRlIHN0ZXBzLgoJCQkJCQkJJGZ
vdW5kX3VuZmluaXNoZWQgPSBmYWxzZTsKCQkJCQkJCWZvcmVhY2ggKCAoYXJyYXkpICRiYWNrdXBfb3B0aW
9ucy0+b3B0aW9uc1snc3RlcHMnXSBhcyAkc3RlcCApIHsKCQkJCQkJCQlpZiAoICcwJyA9PSAkc3RlcFsnZ
mluaXNoX3RpbWUnXSApIHsgLy8gRm91bmQgYW4gdW5maW5pc2hlZCBzdGVwLgoJCQkJCQkJCQkkZm91bmRf
dW5maW5pc2hlZCA9IHRydWU7CgkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCX0KCQkJCQkJCX0gLy8gZW5kIGZ
vcmVhY2guCgoJCQkJCQkJaWYgKCB0cnVlID09PSAkZm91bmRfdW5maW5pc2hlZCApIHsKCQkJCQkJCQkkdG
VzdHNbXSA9IGFycmF5KAoJCQkJCQkJCQkndGVzdCcgICAgPT4gJ3JlY2VudF9iYWNrdXAnLAoJCQkJCQkJC
Qknc3VjY2VzcycgPT4gZmFsc2UsCgkJCQkJCQkJCSdtZXNzYWdlJyA9PiBfXyggJ0EgYmFja3VwIHdhcyBy
ZWNlbnRseSBzdGFydGVkIGFuZCByZXBvcnRzIHVuZmluaXNoZWQgc3RlcHMuIFlvdSBzaG91bGQgd2FpdCB
1bmxlc3MgeW91IGFyZSBzdXJlIHRoZSBwcmV2aW
91cyBiYWNrdXAgaGFzIGNvbXBsZXRlZCBvciBmYWlsZWQgdG8gYXZvaWQgcGxhY2luZyBhIGhlYXZ5IGxvY
WQgb24geW91ciBzZXJ2ZXIuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLgoJCQkJCQkJCQkJJyBMYXN0
IHVwZGF0ZWQ6ICcgLiBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+ZGF0ZSggJGJhY2t1cF9vcHRpb25zLT5
vcHRpb25zWyd1cGRhdGVkX3RpbWUnXSApIC4gJzsgJyAuCgkJCQkJCQkJCQknIFNlcmlhbDogJyAuIHBiX2
JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbGFzdF9iYWNrdXBfc2VyaWFsJ10sCgkJCQkJCQkJKTsKCQkJCQkJC
X0gLy8gZW5kICRmb3VuZF91bmZpbmlzaGVkID09PSB0cnVlLgoJCQkJCQl9IC8vIGVuZCBpZi4KCQkJCQl9
CgkJCQl9CgkJCX0KCQl9CgkJLyoqKioqIEVORCBMT09LSU5HIEZPUiBVTkZJTklTSEVEIFJFQ0VOVCBCQUN
LVVBTICovCgoJCS8qKioqKiBCRUdJTiBMT09LSU5HIEZPUiBCQUNLVVAgRklMRVMgSU4gU0lURSBST09UIC
ovCgkJJGZpbGVzID0gZ2xvYiggQUJTUEFUSCAuICdiYWNrdXAtKi56aXAnICk7CgkJaWYgKCAhIGlzX2Fyc
mF5KCAkZmlsZXMgKSB8fCBlbXB0eSggJGZpbGVzICkgKSB7CgkJCSRmaWxlcyA9IGFycmF5KCk7CgkJfQoK
CQkkZmlsZXMyID0gZ2xvYiggQUJTUEFUSCAuICdzbmFwc2hvdC0qLnppcCcgKTsKCQlpZiAoICEgaXNfYXJ
yYXkoICRmaWxlczIgKSB8fCBlbXB0eSggJGZpbGVzMiApICkgewoJCQkkZmlsZXMyID0gYXJyYXkoKTsKCQ
l9CgoJCSRmaWxlcyA9IGFycmF5X21lcmdlKCAkZmlsZXMsICRmaWxlczIgKTsKCQlmb3JlYWNoICggJGZpb
GVzIGFzICYkZmlsZSApIHsKCQkJJGZpbGUgPSBiYXNlbmFtZSggJGZpbGUgKTsKCQl9CgoJCWlmICggY291
bnQoICRmaWxlcyApID4gMCApIHsKCQkJJGZpbGVzX3N0cmluZyA9IGltcGxvZGUoICcsICcsICRmaWxlcyA
pOwoJCQkkdGVzdHNbXSAgICAgID0gYXJyYXkoCgkJCQkndGVzdCcgICAgPT4gJ3Jvb3RfYmFja3Vwcy0nIC
4gJGZpbGVzX3N0cmluZywKCQkJCSdzdWNjZXNzJyA9PiBmYWxzZSwKCQkJCSdtZXNzYWdlJyA9PiAnT25lI
G9yIG1vcmUgYmFja3VwIGZpbGVzLCBgJyAuICRmaWxlc19zdHJpbmcgLiAnYCB3YXMgZm91bmQgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc2l0ZS4gVGhpcyBtYXkgYmUgbGVmdG92ZXIgZnJvbSBhIHJlY2V
udCByZXN0b3JlLiBZb3Ugc2hvdWxkIHVzdWFsbHkgcmVtb3ZlIGJhY2t1cCBmaWxlcyBmcm9tIHRoZSBzaX
RlIHJvb3QgZm9yIHNlY3VyaXR5LicsCgkJCSk7CgkJfQoJCS8qKioqKiBFTkQgTE9PS0lORyBGT1IgQkFDS
1VQIEZJTEVTIElOIFNJVEUgUk9PVCAqLwoKCQlpZiAoICEgaXNfd3JpdGFibGUoIGJhY2t1cGJ1ZGR5X2Nv
cmU6OmdldEJhY2t1cERpcmVjdG9yeSgpICkgKSB7CgkJCSR0ZXN0c1tdID0gYXJyYXkoCgkJCQkndGVzdCc
gICAgPT4gJ2JhY2t1cF9kaXJfcGVybWlzc2lvbnMnLAoJCQkJJ3N1Y2Nlc3MnID0+IGZhbHNlLAoJCQkJJ2
1lc3NhZ2UnID0+ICdJbnZhbGlkIGJhY2t1cCBkaXJlY3RvcnkgcGVybWlzc2lvbnMuIFZlcmlmeSB0aGUgZ
GlyZWN0b3J5IGAnIC4gYmFja3VwYnVkZHlfY29yZTo6Z2V0QmFja3VwRGlyZWN0b3J5KCkgLiAnYCBpcyB3
cml0YWJsZS4nLAoJCQkpOwoJCX0KCgkJcmV0dXJuICR0ZXN0czsKCgl9IC8vIEVuZCBwcmVmbGlnaHRfY2h
lY2soKS4KCgoJLyoqCgkgKiBDb25uZWN0cyBiYWNrIHRvIHNhbWUgc2l0ZSB2aWEgQUpBWCBjYWxsIHRvIG
FuIEFKQVggc2x1ZyB0aGF0IGhhcyBOT1QgYmVlbiByZWdpc3RlcmVkLgoJICogV29yZFByZXNzIEFKQVggc
mV0dXJucyBhIC0xIChvciAwIGluIG5ld2VyIHZlcnNpb24/KSBmb3IgdGhlc2UuIEFsc28gbm90IGxvZ2dl
ZCBpbnRvCgkgKiBhZG1pbiB3aGVuIGNvbm5lY3RpbmcgYmFjay4gQ2hlY2tzIHRvIHNlZSBpZiBib2R5IGN
vbnRhaW5zIC0xIC8gMC4gSWYgbG9vcGJhY2tzIGFyZSBub3QKCSAqIGVuYWJsZWQgdGhlbiB3aWxsIGZhaW
wgY29ubmVjdGluZyBvciBkbyBzb21ldGhpbmcgZWxzZS4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUgb
24gc3VjY2Vzcywgc3RyaW5nIGVycm9yIG1lc3NhZ2Ugb3RoZXJ3aXNlLgoJICovCglwdWJsaWMgc3RhdGlj
IGZ1bmN0aW9uIGxvb3BiYWNrX3Rlc3QoKSB7CgkJJGxvb3BiYWNrX3VybCA9IGFkbWluX3VybCggJ2FkbWl
uLWFqYXgucGhwP2FjdGlvbj1pdGJ1Yl9odHRwX2xvb3BfYmFja190ZXN0JyApIC4gJyZzZXJpYWw9JyAuIH
BiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbG9nX3NlcmlhbCddOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0d
XMoICdkZXRhaWxzJywgJ1Rlc3RpbmcgbG9vcGJhY2sgY29ubmVjdGlvbnMgYnkgY29ubmVjdGluZyBiYWNr
IHRvIHNpdGUgYXQgdGhlIFVSTDogYCcgLiAkbG9vcGJhY2tfdXJsIC4gJ2AuIEl0IHNob3VsZCBkaXNwbGF
5IHNpbXBseSAiMCIgb3IgIi0xIiBpbiB0aGUgYm9keS4nICk7CgoJCSRyZXNwb25zZSA9IHdwX3JlbW90ZV
9nZXQoCgkJCSRsb29wYmFja191cmwsCgkJCWFycmF5KAoJCQkJJ21ldGhvZCcgICAgICA9PiAnR0VUJywKC
QkJCSd0aW1lb3V0JyAgICAgPT4gOCwgLy8gWCBzZWNvbmQgZGVsYXkuIEEgbG9vcGJhY2sgc2hvdWxkIGJl
IHZlcnkgZmFzdC4KCQkJCSdyZWRpcmVjdGlvbicgPT4gNSwKCQkJCSdodHRwdmVyc2lvbicgPT4gJzEuMCc
sCgkJCQknYmxvY2tpbmcnICAgID0+IHRydWUsCgkJCQknaGVhZGVycycgICAgID0+IGFycmF5KCksCgkJCQ
knYm9keScgICAgICAgID0+IG51bGwsCgkJCQknY29va2llcycgICAgID0+IGFycmF5KCksCgkJCQknc3Nsd
mVyaWZ5JyAgID0+IGFwcGx5X2ZpbHRlcnMoICdodHRwc19sb2NhbF9zc2xfdmVyaWZ5JywgZmFsc2UgKSwK
CQkJKQoJCSk7CgoJCWdsb2JhbCAkYmFja3VwYnVkZHlfbG9vcGJhY2tfZGV0YWlsczsKCQlpZiAoIGlzX3d
wX2Vycm9yKCAkcmVzcG9uc2UgKSApIHsgLy8gTG9vcGJhY2sgZmFpbGVkLiBTb21lIGtpbmQgb2YgZXJyb3
IuCgkJCSRlcnJvciA9ICRyZXNwb25zZS0+Z2V0X2Vycm9yX21lc3NhZ2UoKTsKCQkJJGVycm9yID0gJ0Vyc
m9yICM5MDM4OiBMb29wYmFjayB0ZXN0IGVycm9yOiBgJyAuICRlcnJvciAuICdgLiBVUkw6IGAnIC4gJGxv
b3BiYWNrX3VybCAuICdgLiBJZiB5b3UgbmVlZCB0byBjb250YWN0IHlvdXIgd2ViIGhvc3QsIHRlbGwgdGh
lbSB0aGF0IHdoZW4gUEhQIHRyaWVzIHRvIGNvbm5lY3QgYmFjayB0byB0aGUgc2l0ZSBhdCB0aGUgVVJMIG
AnIC4gJGxvb3BiYWNrX3VybCAuICdgIHZpYSBjdXJsIChvciBvdGhlciBmYWxsYmFjayBjb25uZWN0aW9uI
G1ldGhvZCBidWlsdCBpbnRvIFdvcmRQcmVzcykgdGhhdCBpdCBnZXRzIHRoZSBlcnJvciBgJyAuICRlcnJv
ciAuICdgLiBUaGlzIG1lYW5zIHRoYXQgV29yZFByZXNzXCcgYnVpbHQtaW4gc2ltdWxhdGVkIGNyb24gc3l
zdGVtIGNhbm5vdCBmdW5jdGlvbiBwcm9wZXJseSwgYnJlYWtpbmcgc29tZSBXb3JkUHJlc3MgZmVhdHVyZX
MgJiBzdWJzZXF1ZW50bHkgc29tZSBwbHVnaW5zLiBUaGVyZSBtYXkgYmUgYSBwcm9ibGVtIHdpdGggdGhlI
HNlcnZlciBjb25maWd1cmF0aW9uIChlZyBsb2NhbCBETlMgcHJvYmxlbXMsIG1vZF9zZWN1cml0eSwgZXRj
KSBwcmV2ZW50aW5nIGNvbm5lY3Rpb25zIGZyb20gd29ya2luZyBwcm9wZXJseS4nOwoJCQlwYl9iYWNrdXB
idWRkeTo6c3RhdHVzKCAnZXJyb3InLCAkZXJyb3IgKTsKCQkJJGJhY2t1cGJ1ZGR5X2xvb3BiYWNrX2RldG
FpbHMgPSAnRXJyb3I6ICcgLiAkZXJyb3I7CgkJCXJldHVybiAkZXJyb3I7CgkJfSBlbHNlIHsKCQkJaWYgK
CBpbl9hcnJheSggJHJlc3BvbnNlWydib2R5J10sIGFycmF5KCAnLTEnLCAnMCcgKSApICkgeyAvLyBMb29w
YmFjayBzdWNjZWVkZWQuCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdIVFRQIEx
vb3BiYWNrIHRlc3Qgc3VjY2Vzcy4gUmV0dXJuZWQgYCcgLiAkcmVzcG9uc2VbJ2JvZHknXSAuICdgLicgKT
sKCQkJCSRiYWNrdXBidWRkeV9sb29wYmFja19kZXRhaWxzID0gJ1JldHVybmVkOiBgJyAuICRyZXNwb25zZ
VsnYm9keSddIC4gJ2Agd2l0aCBjb2RlIGAnIC4gJHJlc3BvbnNlWydyZXNwb25zZSddWydjb2RlJ10gLiAn
ICcgLiAkcmVzcG9uc2VbJ3Jlc3BvbnNlJ11bJ21lc3NhZ2UnXSAuICdgLic7CgkJCQlyZXR1cm4gdHJ1ZTs
KCQkJfSBlbHNlIHsgLy8gTG9vcGJhY2sgZmFpbGVkLgoJCQkJJGVycm9yID0gJ1dhcm5pbmcgIzkwMzg6IE
Nvbm5lY3RlZCB0byBzZXJ2ZXIgYnV0IHVuZXhwZWN0ZWQgb3V0cHV0OiBgJyAuIGh0bWxlbnRpdGllcyggJ
HJlc3BvbnNlWydib2R5J10gLiAnYC4gQ29kZTogYCcgLiAkcmVzcG9uc2VbJ3Jlc3BvbnNlJ11bJ2NvZGUn
XSAuICcgJyAuICRyZXNwb25zZVsncmVzcG9uc2UnXVsnbWVzc2FnZSddIC4gJyAnIC4gJHJlc3BvbnNlWyd
yZXNwb25zZSddWydtZXNzYWdlJ10gLiAnYC4nICk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnd2
FybmluZycsICRlcnJvciApOwoJCQkJJGJhY2t1cGJ1ZGR5X2xvb3BiYWNrX2RldGFpbHMgPSAkZXJyb3I7C
gkJCQlyZXR1cm4gJGVycm9yOwoJCQl9CgkJfQoJfSAvLyBFbmQgbG9vcGJhY2tfdGVzdCgpLgoKCgkvKioK
CSAqIFRlc3RzIGlmIHdwLWNyb24ucGhwIGlzIGFjY2Vzc2libGUgYnkgdGhlIHNlcnZlcgoJICogT3B0aW9
uYWxseSB0ZXN0cyBpZiBjcm9uIGFjdHVhbGx5IGZpcmVkCgkgKgoJICogQHBhcmFtIGJvb2wgJGNvbmZpcm
1fY3Jvbl9maXJlZCAgSWYgdHJ1ZSwgd2lsbCBzZXQgYSB0ZXN0IGNyb24gYW5kIGNvbmZpcm0gaXQgZmlyZ
WQuCgkgKgoJICogQHJldHVybiBzdHJpbmd8Ym9vbCAgRXJyb3IgbWVzc2FnZSBvciB0cnVlIGlmIHdvcmtl
ZC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcm9uYmFja190ZXN0KCAkY29uZmlybV9jcm9uX2Z
pcmVkID0gZmFsc2UgKSB7CgkJZ2xvYmFsICR3cGRiOwoJCWdsb2JhbCAkYmFja3VwYnVkZHlfY3JvbmJhY2
tfZGV0YWlsczsKCQkkb3B0aW9uICAgICA9ICdpdGJ1Yl9kb2luZ19jcm9uX3Rlc3QnOwoJCSRldmVudF9uY
W1lID0gJ2l0YnViX2Nyb25fdGVzdCc7CgoJCS8vIERvIG91ciBwcmVwYXJhdGlvbiBmb3IgdGhpbmdzIHRo
YXQgYXBwbHkgd2hhdGV2ZXIgd2UgYXJlIGRvaW5nIC0gd2Ugd2lsbCBhbHdheXMgbWFrZSBhIGxvb3BiYWN
rCgkJLy8gYWNjZXNzIGJ1dCBmb3IgdGVoIHBhc3NpdmUgdGVzdCB3ZSB3aWxsIG5vdCBiZSB0cnlpbmcgdG
8gdHJpZ2dlciB0aGUgZXhlY3V0aW9uIG9mIG91ciBvd24gc2NoZWR1bGVkCgkJLy8gdGFzayB3aGVyZWFzI
HdpdGggdGVoIGFjdGl2ZSB0ZXN0IHRoYXQgd2lsbCBiZSB0aGUgaW50ZW50aW9uLgoJCSRnbXRfdGltZSAg
ICAgID0gbWljcm90aW1lKCB0cnVlICk7CgkJJGRvaW5nX3dwX2Nyb24gPSBzcHJpbnRmKCAnJS4yMkYnLCA
kZ210X3RpbWUgKTsKCQkkY3Jvbl91cmwgICAgICA9IGFkZF9xdWVyeV9hcmcoICdkb2luZ193cF9jcm9uJy
wgJGRvaW5nX3dwX2Nyb24sIHNpdGVfdXJsKCAnd3AtY3Jvbi5waHAnICkgKTsKCQkkY3Jvbl9yZXF1ZXN0I
CA9IGFycmF5KAoJCQkndXJsJyAgPT4gJGNyb25fdXJsLAoJCQkna2V5JyAgPT4gJGRvaW5nX3dwX2Nyb24s
CgkJCSdhcmdzJyA9PiBhcnJheSgKCQkJCSd0aW1lb3V0JyAgID0+IDQsCgkJCQknYmxvY2tpbmcnICA9PiB
0cnVlLAoJCQkJLyoqIFRoaXMgZmlsdGVyIGlzIGRvY3VtZW50ZWQgaW4gd3AtaW5jbHVkZXMvY2xhc3MtaH
R0cC5waHAgKi8KCQkJCSdzc2x2ZXJpZnknID0+IGFwcGx5X2ZpbHRlcnMoICdodHRwc19sb2NhbF9zc2xfd
mVyaWZ5JywgZmFsc2UgKSwKCQkJKSwKCQkpOwoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWls
cycsICdUZXN0aW5nIHdwLWNyb24ucGhwIGxvb3BiYWNrIGNvbm5lY3Rpb25zIGJ5IGNvbm5lY3RpbmcgYmF
jayB0byBzaXRlIGF0IHRoZSBVUkw6IGAnIC4gJGNyb25fdXJsIC4gJ2AuIEV4cGVjdCAyMDAgT0sgcmVzcG
9uc2UuJyApOwoKCQkvLyBEZWxldGUgUHJldmlvdXMgdGVtcCBjcm9ucyBpbiB0aGUgZXZlbnQgdGhleSB3Z
XJlbid0IGNsZWFyZWQuLi4gZXZlbiBpZiB3ZSBhcmVuJ3QgZmxhZ2dlZCB0byB0ZXN0IGFnYWluLgoJCXdw
X2NsZWFyX3NjaGVkdWxlZF9ob29rKCAkZXZlbnRfbmFtZSApOwoKCQkvLyBNYWtlIHN1cmUgd2UgZGVsZXR
lIGFueSBleGlzdGluZyBvcHRpb24gaW4gdGhlIGV2ZW50IGl0IHdhc24ndCBkZWxldGVkLi4uIGV2ZW4gaW
Ygd2UgYXJlbid0IGZsYWdnZWQgdG8gdGVzdCBhZ2Fpbi4KCQkkcmVzdWx0ID0gJHdwZGItPmRlbGV0ZSggJ
HdwZGItPm9wdGlvbnMsIGFycmF5KCAnb3B0aW9uX25hbWUnID0+ICRvcHRpb24gKSApOwoKCQlpZiAoICRj
b25maXJtX2Nyb25fZmlyZWQgKSB7CgkJCS8vIFByb2JsZW06IHRoZSBzaXRlIGFjY2VzcyB0byB0aGlzIHB
hZ2UgbWF5IGFscmVhZHkgaGF2ZSB0cmlnZ2VyZWQgY3JvbiBpZiB0aGVyZSB3YXMgYW55IGR1ZSB0YXNrLg
oJCQkvLyBXZSBkb24ndCByZWFsbHkgd2FudCB0byB0cmVhZCBvbiBpdHMgdG9lcyBfYnV0XyBhbHNvIHdlI
G1pZ2h0IGhhdmUgcHJvYmxlbXMgc2NoZWR1bGluZyBhbmQgcnVubmluZwoJCQkvLyBvdXIgdGFzayBhdCB0
aGUgc2FtZSB0aW1lIGFzIHRoZSBkdWUgdGFza3MgYXJlIGJlaW5nIGV4ZWN1dGVkIGJlY2F1c2Ugb2YgcG9
zc2libGUgcmFjZSBjb25kaXRpb25zLgoJCQkvLyBOT1RFOiBXZSBtYXkgbmVlZCB0byBmb3JjZSBieXBhc3
MgYW55IGNhY2hlcyB0byBnZXQgbW9zdCB1cCB0byBkYXRlIHZhbHVlPwoJCQkkbG9jayA9IGdldF90cmFuc
2llbnQoICdkb2luZ19jcm9uJyApOwoKCQkJLy8gSWYgbG9jayBoYXMgYWxyZWFkeSBiZWVuIHNldCB0aGVu
IHRoZSBsb2NrIHNob3VsZCBiZSBub24temVybyBfYnV0XyB3ZSBhbHNvIHdhbnQgdG8gYWNjb3VudCBmb3I
gdGhlCgkJCS8vIGxvY2sgbm90IGhhdmluZyBiZWVuIHJlbGVhc2VkIGR1ZSB0byBzb21lIGZhaWx1cmUgc2
8ganVzdCBjaGVjayB3aXRoIGEgZ3VhcmQgdGltZSBhbmQgaWYgdGhlIGxvY2sKCQkJLy8gd2FzIHNldCBtb
3JlIHRoYW4gMTBzIGFnbyB0aGVuIHdlJ2xsIHN0ZWFsIGl0IHJlZ2FyZGxlc3MuCgkJCS8vIE5vdGUgdGhh
dCBpZiBhIHRhc2sgaXMgYWN0dWFsbHkgc3RpbGwgYmVpbmcgcnVuIHRoZW4gaXQgd2lsbCBjb250aW51ZSB
0byBydW4gYnV0IHdoZW4gdGhhdCB0YXNrIGhhcwoJCQkvLyBmaW5pc2hlZCB0aGUgd3AtY3Jvbi5waHAgIm
luc3RhbmNlIiBydW5uaW5nIHdpbGwgZmluZCBpdCBoYXMgbG9zdCB0aGUgbG9jayBhbmQgd2lsbCBub3Qgd
HJ5IGFuZCBydW4KCQkJLy8gYW55dGhpbmcgZnVydGhlciB3aGljaCBpcyB3aGF0IHdlIHdhbnQgYXMgdGhp
cyBzaHVsZCBzdG9wIHNpbXVsdGFuZW91cyBjcm9uIGFycmF5IGNoYW5nZXMgYW5kIGNvbnNlcXVlbnQKCQk
JLy8gcmFjZSBjb25kaXRpb25zLgoJCQlpZiAoICggJGxvY2sgKyAxMCApID4gJGdtdF90aW1lICkgewoJCQ
kJLy8gV2UgYXJlIGdvaW5nIHRvIGRvIG9ubHkgd
GhlICJwYXNzaXZlIiBhY2Nlc3MgdGVzdAoJCQkJLy8gTm90ZSB0aGF0IHRoZSAkZG9pbmdfd3BfY3JvbiB2
YWx1ZSB3ZSBzZXQgYWJvdmUgaXMgc3RpbGwgdXN1YWJsZSBidXQgZXNzZW50aWFsbHkgaXJyZWxldmFudAo
JCQkJLy8gYXMgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZCB0byBzZXQgYXMgdGhlIHRyYW5zaWVudCB0byBtYX
RjaCB0aGUga2V5IGluIHRoZSBhY2Nlc3MuCgkJCQkkY29uZmlybV9jcm9uX2ZpcmVkID0gZmFsc2U7CgoJC
QkJLy8gV2FybiB0aGF0IHdlIGFyZSBub3QgcnVubmluZyB0aGUgYWN0aXZlIHRlc3QgLSB0aGlzIGdldHMg
cHJlLXBlbmRlZCB0byBsYXRlciBkZXRhaWxzLgoJCQkJJGJhY2t1cGJ1ZGR5X2Nyb25iYWNrX2RldGFpbHM
gPSAnUnVubmluZyBwYXNzaXZlIGFjY2VzcyB0ZXN0IG9ubHkgLSBhY3RpdmUgY3JvbiB0ZXN0IGNvdWxkIG
5vdCBiZSBydW4gZHVlIHRvIG90aGVyIGFwcGFyZW50IGNyb24gYWN0aXZpdHkgLSB0cnkgYWdhaW4gbGF0Z
XIuJyAuIFBIUF9FT0w7CgkJCX0gZWxzZSB7CgkJCQkvLyBPdmVyIDEwcyBzaW5jZSBsb2NrIHNldCAtIHN0
ZWFsIHRoZSBsb2NrIHdoaWNoIHNob3VsZCBzdG9wIGFueSBmdXJ0aGVyIGR1ZSB0YXNrcyBiZWluZyBydW4
uCgkJCQlzZXRfdHJhbnNpZW50KCAnZG9pbmdfY3JvbicsICRkb2luZ193cF9jcm9uICk7CgoJCQkJLy8gTm
93IG1ha2Ugc3VyZSB3ZSBzY2hlZHVsZSBfYmVmb3JlXyBhbnkgb3RoZXIgdGFzayB0aGF0IG1heSBiZSBhb
HJlYWR5IG92ZXJkdWUuIFRoaXMgaXMgZm9yIHRoZSBjYXNlCgkJCQkvLyB3aGVyZSB0aGVyZSB3ZXJlIG11
bHRpcGxlIGR1ZSB0YXNrcyBidXQgd2Ugc3RvbGUgdGhlIGxvY2sgYmVmb3JlIHRoZXkgaGFkIGFsbCBiZWV
uIHJ1biBhbmQgc28gd2UKCQkJCS8vIHN0b3BwZWQgYWxsIG9mIHRoZW0gYmVpbmcgcnVuIC0gd2UgbmVlZC
B0byBwdXNoIG91ciB0YXNrIGFoZWFkIG9mIHRoZXNlIHNvIHRoYXQgb3VyIGxvb3BiYWNrIGFjY2VzcwoJC
QkJLy8gdHJpZ2dlcnMgaXQgdG8gcnVuLgoJCQkJJHNjaGVkdWxlX3RpbWUgPSB0aW1lKCkgLSAxOwoJCQkJ
JGV2ZW50X3F1ZXVlICAgPSBnZXRfb3B0aW9uKCAnY3JvbicgKTsKCQkJCWlmICggaXNfYXJyYXkoICRldmV
udF9xdWV1ZSApICkgewoJCQkJCSRldmVudF90aW1lc3RhbXBzID0gYXJyYXlfa2V5cyggJGV2ZW50X3F1ZX
VlICk7CgkJCQkJaWYgKCBpc3NldCggJGV2ZW50X3RpbWVzdGFtcHNbMF0gKSAmJiAoICRldmVudF90aW1lc
3RhbXBzWzBdIDwgJGdtdF90aW1lICkgKSB7CgkJCQkJCSRzY2hlZHVsZV90aW1lID0gJGV2ZW50X3RpbWVz
dGFtcHNbMF0gLSAxOwoJCQkJCX0KCQkJCX0KCQkJCXdwX3NjaGVkdWxlX3NpbmdsZV9ldmVudCggJHNjaGV
kdWxlX3RpbWUsICRldmVudF9uYW1lICk7CgkJCX0KCQl9CgoJCS8vIE1ha2UgdGhlIGFjdHVhbCBsb29wYm
FjayBhY2Nlc3MgdGhhdCB3YXMgaW5pdGlhbGlzZWQgYWJvdmUuCgkJLy8gVGhpcyBpcyBwYXNzaXZlIG9yI
GFjdGl2ZSBkZXBlbmRlbnQgb24gd2hldGhlciB3ZSBzY2hlZHVsZWQgYSB0ZXN0IHRhc2sgYWJvdmUuCgkJ
JHJlc3BvbnNlID0gd3BfcmVtb3RlX3Bvc3QoICRjcm9uX3JlcXVlc3RbJ3VybCddLCAkY3Jvbl9yZXF1ZXN
0WydhcmdzJ10gKTsKCgkJaWYgKCBpc193cF9lcnJvciggJHJlc3BvbnNlICkgKSB7CgoJCQkvLyBXb3JkUH
Jlc3MgY2xhc3NpZmllcyB0aGUgcmVzcG9uc2UgYXMgYW4gZXJyb3IuCgkJCSRlcnJvcl9tc2cgPSAkcmVzc
G9uc2UtPmdldF9lcnJvcl9tZXNzYWdlKCk7CgkJCSRlcnJvciAgICAgPSB0cnVlID09ICRjb25maXJtX2Ny
b25fZmlyZWQgPyAnQWN0aXZlICcgOiAnUGFzc2l2ZSAnOwoJCQkkZXJyb3IgICAgLj0gJ3dwLWNyb24ucGh
wIGxvb3BiYWNrIHRlc3QgZmFpbHVyZTogYCcgLiAkZXJyb3JfbXNnIC4gJ2AuIFVSTDogYCcgLiAkY3Jvbl
91cmwgLiAnYC4gSWYgeW91IG5lZWQgdG8gY29udGFjdCB5b3VyIHdlYiBob3N0LCB0ZWxsIHRoZW0gdGhhd
CB3aGVuIFBIUCB0cmllcyB0byBjb25uZWN0IGJhY2sgdG8gdGhlIHNpdGUgYXQgdGhlIFVSTCBgJyAuICRj
cm9uX3VybCAuICdgIHZpYSBjdXJsIChvciBvdGhlciBmYWxsYmFjayBjb25uZWN0aW9uIG1ldGhvZCBidWl
sdCBpbnRvIFdvcmRQcmVzcykgdGhhdCBpdCBnZXRzIHRoZSBlcnJvciBgJyAuICRlcnJvcl9tc2cgLiAnYC
4gVGhpcyBtZWFucyB0aGF0IFdvcmRQcmVzc1wnIGJ1aWx0LWluIHNpbXVsYXRlZCBjcm9uIHN5c3RlbSBjY
W5ub3QgZnVuY3Rpb24gcHJvcGVybHksIGJyZWFraW5nIHNvbWUgV29yZFByZXNzIGZlYXR1cmVzICYgc3Vi
c2VxdWVudGx5IHNvbWUgcGx1Z2lucy4gVGhlcmUgbWF5IGJlIGEgcHJvYmxlbSB3aXRoIHRoZSBzZXJ2ZXI
gY29uZmlndXJhdGlvbiAoZWcgbG9jYWwgRE5TIHByb2JsZW1zLCBtb2Rfc2VjdXJpdHksIGV0YykgcHJldm
VudGluZyBjb25uZWN0aW9ucyBmcm9tIHdvcmtpbmcgcHJvcGVybHkuJzsKCQkJcGJfYmFja3VwYnVkZHk6O
nN0YXR1cyggJ2Vycm9yJywgJGVycm9yICk7CgkJCSRiYWNrdXBidWRkeV9jcm9uYmFja19kZXRhaWxzID0g
JGVycm9yOwoJCQlyZXR1cm4gJGVycm9yOwoKCQl9IGVsc2VpZiAoICRjb25maXJtX2Nyb25fZmlyZWQgKSB
7CgoJCQkvLyBXb3JkUHJlc3MgY2xhc3NpZmllcyB0aGUgcmVzcG9uc2UgYSAib2siIGFuZCB3ZSBhcmUgbW
FraW5nIGFuIGFjdGl2ZSB0ZXN0LgoJCQkkY3JvbnN0YW1wICAgPSAwOwoJCQkkcmV0cnlfY291bnQgPSAyO
yAvLyBPayAtIHdlIGRvbid0IGxpa2UgbWFnaWMgbnVtYmVycyBidXQgdGhlc2UgYXJlIGp1c3QgcHJvdmlz
aW9uYWwuLi4KCQkJJHJldHJ5X2RlbGF5ID0gNTsKCgkJCS8vIFRyeSBhbmQgZ2V0IHRoZSBpdGJ1Yl9kb2l
uZ19jcm9uX3Rlc3Qgb3B0aW9uIHZhbHVlICh0aW1lc3RhbXAgd2hlbiB0aGUgb3B0aW9uIHdhcyBjcmVhdG
VkKQoJCQkvLyBJbiBzb21lIGNhc2VzIGl0IG1heSB0YWtlIGEgd2hpbGUgZm9yIHRoZSBjcm9uIHRhc2sgd
G8gYmUgZXhlY3V0ZWQgc28gYWxsb3cgYSBjb3VwbGUgb2YgcmV0cmllcyAtCgkJCS8vIHRoaXMgd2lsbCBz
bG93IHRoZSBwYWdlIGxvYWQgZG93biBidXQgX29ubHlfIGluIHRoZSBjYXNlcyB3aGVyZSB0aGlzIGlzIHJ
lcXVpcmVkIHdoaWNoIHNob3VsZCBub3QKCQkJLy8gYmUgY29tbW9uPwoJCQkkcXVlcnkgPSAkd3BkYi0+cH
JlcGFyZSggIlNFTEVDVCBvcHRpb25fdmFsdWUgRlJPTSAkd3BkYi0+b3B0aW9ucyBXSEVSRSBvcHRpb25fb
mFtZSA9ICVzIExJTUlUIDEiLCAkb3B0aW9uICk7CgkJCSRyb3cgICA9ICR3cGRiLT5nZXRfcm93KCAkcXVl
cnksIE9CSkVDVCApOwoJCQl3aGlsZSAoIGlzX251bGwoICRyb3cgKSAmJiAoIDAgPCAkcmV0cnlfY291bnQ
tLSApICkgewoJCQkJc2xlZXAoICRyZXRyeV9kZWxheSApOwoJCQkJJHJvdyA9ICR3cGRiLT5nZXRfcm93KC
AkcXVlcnksIE9CSkVDVCApOwoJCQl9CgoJCQkvLyBJZiB3ZSByZXRyaWV2ZSBvcHRpb24gYXMgYW4gb2JqZ
WN0IHdlIHNob3VsZCBoYXZlIGEgZ29vZCB2YWx1ZSAtIHRoZSB0aW1lc3RhbXAgd2hlbiB0aGUgdGFzayB3
YXMgcnVuCgkJCS8vIE90aGVyd2lzZSB3ZSBjb3VsZG4ndCBnZXQgYW4gb3B0aW9uIHZhbHVlIHNvIGRyb3A
gdGhyb3VnaCB3aXRoIGRlZmF1bHQgY3JvbnN0YW1wIHZhbHVlLgoJCQlpZiAoIGlzX29iamVjdCggJHJvdy
ApICkgewoJCQkJJGNyb25zdGFtcCA9IG1heWJlX3Vuc2VyaWFsaXplKCAkcm93LT5vcHRpb25fdmFsdWUgK
TsKCQkJCS8vIEFsd2F5cyBkZWxldGUgdGhlIG9wdGlvbiBoZXJlIGFzIHdlIG5vIGxvbmdlciBuZWVkIGl0
LgoJCQkJJHJlc3VsdCA9ICR3cGRiLT5kZWxldGUoICR3cGRiLT5vcHRpb25zLCBhcnJheSggJ29wdGlvbl9
uYW1lJyA9PiAkb3B0aW9uICkgKTsKCQkJfQoKCQkJJG5vdyA9IG1pY3JvdGltZSggdHJ1ZSApOwoJCQlpZi
AoICRjcm9uc3RhbXAgJiYgKCBhYnMoICRub3cgLSAkY3JvbnN0YW1wICkgPCAxNSApICkgewoKCQkJCS8vI
ElmIGhlcmUsIHRoZSBjcm9uIHdhcyBleGVjdXRlZCBhbmQgdGhlIHRpbWUgZGlmZmVyZW5jZSAoYWxzbyBh
bGxvd2luZyBmb3IgcG9zc2libGUgdGltZSBzeW5jCgkJCQkvLyBkaWZmZXJlbmNlcyBvbiBkaWZmZXJlbnQ
gc2VydmVycyBpbiB0aGUgY2FzZSBvZiBjbG91ZCBzaGFyZWQgaG9zdGluZykgaXMgPCAxNXMuCgkJCQlwYl
9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdBY3RpdmUgd3AtY3Jvbi5waHAgbG9vcGJhY2sgd
GVzdCBzdWNjZXNzLiBSZXR1cm5lZCBgJyAuICRyZXNwb25zZVsnYm9keSddIC4gJ2Agd2l0aCBjb2RlIGAn
IC4gJHJlc3BvbnNlWydyZXNwb25zZSddWydjb2RlJ10gLiAnICcgLiAkcmVzcG9uc2VbJ3Jlc3BvbnNlJ11
bJ21lc3NhZ2UnXSAuICdgLicgKTsKCQkJCSRiYWNrdXBidWRkeV9jcm9uYmFja19kZXRhaWxzID0gJ0FjdG
l2ZSB0ZXN0IHN1Y2Nlc3MnIC4gUEhQX0VPTCAuICdSZXR1cm5lZDogYCcgLiAkcmVzcG9uc2VbJ2JvZHknX
SAuICdgIHdpdGggY29kZSBgJyAuICRyZXNwb25zZVsncmVzcG9uc2UnXVsnY29kZSddIC4gJyAnIC4gJHJl
c3BvbnNlWydyZXNwb25zZSddWydtZXNzYWdlJ10gLiAnYC4nOwoJCQkJcmV0dXJuIHRydWU7CgoJCQl9IGV
sc2UgewoKCQkJCS8vIElmIHdlIG1hZGUgaXQgaGVyZSwgdGhlIHNjcmlwdCBpc24ndCBibG9ja2VkLCBidX
QgdGhlIGNyb25zIGFyZW4ndCBiZWluZyBleGVjdXRlZC4KCQkJCSRlcnJvciAgPSAnQWN0aXZlIHdwLWNyb
24ucGhwIGxvb3BiYWNrIHRlc3QgZmFpbHVyZS4gWW91ciB3cC1jcm9uLnBocCBhcHBlYXJzIHRvIGJlIHJl
YWNoYWJsZSBieSB0aGUgc2VydmVyIGJ1dCBzb21ldGhpbmcgaXMgcHJldmVudGluZyBpdCBmcm9tIGV4ZWN
1dGluZyBjb2RlIHByb3Blcmx5IC0gQ29taW5nIFNvb24gcGx1Z2lucyBhbmQgQmFzaWMgQXV0aGVudGljYX
Rpb24gb2Z0ZW4gYnJlYWsgdGhpcy4gJzsKCQkJCSRlcnJvciAuPSAnVGhpcyBtYXkgYmUgYSB0ZW1wb3Jhc
nkgc2l0ZS9zZXJ2ZXIvaG9zdGluZyBpc3N1ZSBidXQgaWYgaXQgcGVyc2lzdHMgeW91IHdpbGwgbmVlZCB0
byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiAnOwoJCQkJJGVycm9yIC49ICdSZXR1cm5lZDogYCcgLiAkcmVzcG9
uc2VbJ2JvZHknXSAuICdgIHdpdGggY29kZSBgJyAuICRyZXNwb25zZVsncmVzcG9uc2UnXVsnY29kZSddIC
4gJyAnIC4gJHJlc3BvbnNlWydyZXNwb25zZSddWydtZXNzYWdlJ10gLiAnYC4nOwoJCQkJcGJfYmFja3VwY
nVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJGVycm9yICk7CgkJCQkkYmFja3VwYnVkZHlfY3JvbmJhY2tfZGV0
YWlscyA9ICRlcnJvcjsKCQkJCXJldHVybiAkZXJyb3I7CgoJCQl9CgkJfSBlbHNlIHsKCgkJCS8vIFdvcmR
QcmVzcyBjbGFzc2lmaWVzIHRoZSByZXNwb25zZSBhcyAib2siCgkJCS8vIE5vIGFjY2VzcyBlcnJvciBidX
Qgd2UncmUgbm90IGNoZWNraW5nIGZvciBhY3R1YWwgZmlyaW5nIG9mIHRoZSBjcm9uLCBzbyByZXR1cm4gc
3VjY2VzcyAobGlrZSBvbiBiYWNrdXAgcGFnZSkuCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgJ1Bhc3NpdmUgd3AtY3Jvbi5waHAgbG9vcGJhY2sgdGVzdCBzdWNjZXNzLiBSZXR1cm5lZCBgJyA
uICRyZXNwb25zZVsnYm9keSddIC4gJ2Agd2l0aCBjb2RlIGAnIC4gJHJlc3BvbnNlWydyZXNwb25zZSddWy
djb2RlJ10gLiAnICcgLiAkcmVzcG9uc2VbJ3Jlc3BvbnNlJ11bJ21lc3NhZ2UnXSAuICdgLicgKTsKCQkJJ
GJhY2t1cGJ1ZGR5X2Nyb25iYWNrX2RldGFpbHMgLj0gJ1Bhc3NpdmUgdGVzdCBzdWNjZXNzJyAuIFBIUF9F
T0wgLiAnUmV0dXJuZWQ6IGAnIC4gJHJlc3BvbnNlWydib2R5J10gLiAnYCB3aXRoIGNvZGUgYCcgLiAkcmV
zcG9uc2VbJ3Jlc3BvbnNlJ11bJ2NvZGUnXSAuICcgJyAuICRyZXNwb25zZVsncmVzcG9uc2UnXVsnbWVzc2
FnZSddIC4gJ2AuJzsKCQkJcmV0dXJuIHRydWU7CgoJCX0KCgl9IC8vIEVuZCBjcm9uYmFja190ZXN0KCkuC
goKCS8qKgoJICogR2V0IGFuIGFycmF5IG9mIHN1YmRpcmVjdG9yaWVzIHdoZXJlIHBvdGVudGlhbCBXb3Jk
UHJlc3MgaW5zdGFsbGF0aW9ucyBoYXZlIGJlZW4gZGV0ZWN0ZWQuCgkgKgoJICogQHJldHVybiBhcnJheSA
gQXJyYXkgb2YgZnVsbCBwYXRocywgV0lUSE9VVCB0cmFpbGluZyBzbGFzaGVzLgoJICovCglwdWJsaWMgc3
RhdGljIGZ1bmN0aW9uIGdldF93b3JkcHJlc3NfbG9jYXRpb25zKCkgewoJCSR3b3JkcHJlc3NfbG9jYXRpb
25zID0gYXJyYXkoKTsKCgkJJGZpbGVzID0gZ2xvYiggQUJTUEFUSCAuICcqLycgKTsKCQlpZiAoICEgaXNf
YXJyYXkoICRmaWxlcyApIHx8IGVtcHR5KCAkZmlsZXMgKSApIHsKCQkJJGZpbGVzID0gYXJyYXkoKTsKCQl
9CgoJCWZvcmVhY2ggKCAkZmlsZXMgYXMgJGZpbGUgKSB7CgkJCWlmICggZmlsZV9leGlzdHMoICRmaWxlIC
4gJ3dwLWNvbmZpZy5waHAnICkgKSB7CgkJCQkkd29yZHByZXNzX2xvY2F0aW9uc1tdID0gcnRyaW0oICcvJ
yAuIHN0cl9yZXBsYWNlKCBBQlNQQVRILCAnJywgJGZpbGUgKSwgJy9cXCcgKTsKCQkJfQoJCX0KCgkJLy8g
UmVtb3ZlIGFueSBleGNsdWRlZCBkaXJlY3RvcmllcyBmcm9tIHNob3dpbmcgdXAgaW4gdGhpcy4KCQkkZGl
yZWN0b3J5X2V4Y2x1c2lvbnMgPSBzZWxmOjpnZXRfZGlyZWN0b3J5X2V4Y2x1c2lvbnMoIHBiX2JhY2t1cG
J1ZGR5Ojokb3B0aW9uc1sncHJvZmlsZXMnXVswXSApOyAvLyBkZWZhdWx0IHByb2ZpbGUuCgkJJHdvcmRwc
mVzc19sb2NhdGlvbnMgID0gYXJyYXlfZGlmZiggJHdvcmRwcmVzc19sb2NhdGlvbnMsICRkaXJlY3Rvcnlf
ZXhjbHVzaW9ucyApOwoKCQlyZXR1cm4gJHdvcmRwcmVzc19sb2NhdGlvbnM7Cgl9IC8vIEVuZCBnZXRfd29
yZHByZXNzX2xvY2F0aW9ucygpLgoKCgkvKioKCSAqIFJldHVybnMgYW4gYXJyYXkgd2l0aCB0aGUgc2l0ZS
BzaXplIGFuZCB0aGUgc2l0ZSBzaXplIHNhbnMgZXhjbHVzaW9ucy4gU2F2ZXMgdXBkYXRlcyBzdGF0cyBpb
iBvcHRpb25zLgoJICoKCSAqIEByZXR1cm4gYXJyYXkgIEluZGV4IDA6IHNpdGUgc2l6ZTsgSW5kZXggMTog
c2l0ZSBzaXplIHNhbnMgZXhjbHVkZWQgZmlsZXMvZGlycy47IEluZGV4IDI6IFRvdGFsIG51bWJlciBvZiB
vYmplY3RzIChmaWxlcytmb2xkZXJzKTsgSW5kZXggMzogVG90YWwgb2JqZWN0cyBzYW5zIGV4Y2x1ZGVkIG
ZpbGVzL2ZvbGRlcnMuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X3NpdGVfc2l6ZSgpIHsKC
QkkZXhjbHVzaW9ucyA9IGJhY2t1cGJ1ZGR5X2NvcmU6OmdldF9kaXJlY3RvcnlfZXhjbHVzaW9ucyggcGJf
YmFja3VwYnVkZHk6OiRvcHRpb25zWydwcm9maWxlcyddWzBdICk7CgkJJGRpcl9hcnJheSAgPSBhcnJheSg
pOwoJCSRyZXN1bHQgICAgID0gcGJfYmFja3VwYnVkZHk6OiRmaWxlc3lzdGVtLT5kaXJfc2l6ZV9tYXAoIE
FCU1BBVEgsIEFCU1BBVEgsICRleGNsdXNpb25zLCAkZGlyX2FycmF5ICk7CgkJdW5zZXQoICRkaXJfYXJyY
XkgKTsgLy8gRnJlZSB0aGlzIGxhcmdlIGNodW5r
IG9mIG1lbW9yeS4KCgkJJHRvdGFsX3NpemUgICAgICAgICAgICAgPSAkcmVzdWx0WzBdOwoJCSR0b3RhbF9
zaXplX2V4Y2x1ZGVkICAgID0gJHJlc3VsdFsxXTsKCQkkdG90YWxfb2JqZWN0cyAgICAgICAgICA9ICRyZX
N1bHRbMl07CgkJJHRvdGFsX29iamVjdHNfZXhjbHVkZWQgPSAkcmVzdWx0WzNdOwoKCQlwYl9iYWNrdXBid
WRkeTo6JG9wdGlvbnNbJ3N0YXRzJ11bJ3NpdGVfc2l6ZSddICAgICAgICAgICAgID0gJHRvdGFsX3NpemU7
CgkJcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydzdGF0cyddWydzaXRlX3NpemVfZXhjbHVkZWQnXSAgICA
9ICR0b3RhbF9zaXplX2V4Y2x1ZGVkOwoJCXBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnc2
l0ZV9vYmplY3RzJ10gICAgICAgICAgPSAkdG90YWxfb2JqZWN0czsKCQlwYl9iYWNrdXBidWRkeTo6JG9wd
GlvbnNbJ3N0YXRzJ11bJ3NpdGVfb2JqZWN0c19leGNsdWRlZCddID0gJHRvdGFsX29iamVjdHNfZXhjbHVk
ZWQ7CgkJcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydzdGF0cyddWydzaXRlX3NpemVfdXBkYXRlZCddICA
gICA9IHRpbWUoKTsKCQlwYl9iYWNrdXBidWRkeTo6c2F2ZSgpOwoKCQlyZXR1cm4gYXJyYXkoICR0b3RhbF
9zaXplLCAkdG90YWxfc2l6ZV9leGNsdWRlZCwgJHRvdGFsX29iamVjdHMsICR0b3RhbF9vYmplY3RzX2V4Y
2x1ZGVkICk7Cgl9IC8vIEVuZCBnZXRfc2l0ZV9zaXplKCkuCgoKCS8qKgoJICogUmV0dXJuIGFycmF5IG9m
IGRhdGFiYXNlIHNpemUsIGRhdGFiYXNlIHNhbnMgZXhjbHVzaW9ucy4KCSAqCgkgKiBAcGFyYW0gaW50ICR
wcm9maWxlX2lkICBJRCBvZiBCYWNrdXAgUHJvZmlsZS4KCSAqCgkgKiBAcmV0dXJuIGFycmF5ICBJbmRleC
AwOiBkYiBzaXplLCBJbmRleCAxOiBkYiBzaXplIHNhbnMgZXhjbHVzaW9ucy4KCSAqLwoJcHVibGljIHN0Y
XRpYyBmdW5jdGlvbiBnZXRfZGF0YWJhc2Vfc2l6ZSggJHByb2ZpbGVfaWQgPSAwICkgewoJCWdsb2JhbCAk
d3BkYjsKCQkkcHJlZml4ICAgICAgICA9ICR3cGRiLT5wcmVmaXg7CgkJJHByZWZpeF9sZW5ndGggPSBzdHJ
sZW4oICR3cGRiLT5wcmVmaXggKTsKCgkJJGFkZGl0aW9uYWxfaW5jbHVkZXMgPSBiYWNrdXBidWRkeV9jb3
JlOjpnZXRfbXlzcWxkdW1wX2FkZGl0aW9uYWwoICdpbmNsdWRlcycsIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0a
W9uc1sncHJvZmlsZXMnXVsgJHByb2ZpbGVfaWQgXSApOwoJCSRhZGRpdGlvbmFsX2V4Y2x1ZGVzID0gYmFj
a3VwYnVkZHlfY29yZTo6Z2V0X215c3FsZHVtcF9hZGRpdGlvbmFsKCAnZXhjbHVkZXMnLCBwYl9iYWNrdXB
idWRkeTo6JG9wdGlvbnNbJ3Byb2ZpbGVzJ11bICRwcm9maWxlX2lkIF0gKTsKCgkJJHRvdGFsX3NpemUgIC
AgICAgICAgICAgICAgID0gMDsKCQkkdG90YWxfc2l6ZV93aXRoX2V4Y2x1c2lvbnMgPSAwOwoJCSRyb3dzI
CAgICAgICAgICAgICAgICAgICAgICA9ICR3cGRiLT5nZXRfcmVzdWx0cyggJ1NIT1cgVEFCTEUgU1RBVFVT
JywgQVJSQVlfQSApOwoJCWZvcmVhY2ggKCAkcm93cyBhcyAkcm93ICkgewoJCQkkZXhjbHVkZWQgPSB0cnV
lOyAvLyBEZWZhdWx0LgoKCQkJLy8gVEFCTEUgU1RBVFVTLgoJCQkkcm93c2IgPSAkd3BkYi0+Z2V0X3Jlc3
VsdHMoICJDSEVDSyBUQUJMRSBgeyRyb3dbJ05hbWUnXX1gIiwgQVJSQVlfQSApOwoJCQlmb3JlYWNoICggJ
HJvd3NiIGFzICRyb3diICkgewoJCQkJaWYgKCAnc3RhdHVzJyA9PSAkcm93YlsnTXNnX3R5cGUnXSApIHsK
CQkJCQkkc3RhdHVzID0gJHJvd2JbJ01zZ190ZXh0J107CgkJCQl9CgkJCX0KCQkJdW5zZXQoICRyb3dzYiA
pOwoKCQkJLy8gVGFibGUgc2l6ZS4KCQkJJHNpemUgICAgICAgID0gKCAkcm93WydEYXRhX2xlbmd0aCddIC
sgJHJvd1snSW5kZXhfbGVuZ3RoJ10gKTsKCQkJJHRvdGFsX3NpemUgKz0gJHNpemU7CgoJCQkvLyBIYW5kb
GUgZXhjbHVzaW9ucy4KCQkJaWYgKCAwID09IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sncHJvZmlsZXMn
XVsgJHByb2ZpbGVfaWQgXVsnYmFja3VwX25vbndwX3RhYmxlcyddICkgeyAvLyBPbmx5IG1hdGNoaW5nIHB
yZWZpeC4KCQkJCWlmICggc3Vic3RyKCAkcm93WydOYW1lJ10sIDAsICRwcmVmaXhfbGVuZ3RoICkgPT0gJH
ByZWZpeCB8fCBpbl9hcnJheSggJHJvd1snTmFtZSddLCAkYWRkaXRpb25hbF9pbmNsdWRlcyApICkgewoJC
QkJCWlmICggISBpbl9hcnJheSggJHJvd1snTmFtZSddLCAkYWRkaXRpb25hbF9leGNsdWRlcyApICkgewoJ
CQkJCQkkdG90YWxfc2l6ZV93aXRoX2V4Y2x1c2lvbnMgKz0gJHNpemU7CgkJCQkJCSRleGNsdWRlZCAgICA
gICAgICAgICAgICAgICAgPSBmYWxzZTsKCQkJCQl9CgkJCQl9CgkJCX0gZWxzZSB7IC8vIEFsbCB0YWJsZX
MuCgkJCQlpZiAoICEgaW5fYXJyYXkoICRyb3dbJ05hbWUnXSwgJGFkZGl0aW9uYWxfZXhjbHVkZXMgKSApI
HsKCQkJCQkkdG90YWxfc2l6ZV93aXRoX2V4Y2x1c2lvbnMgKz0gJHNpemU7CgkJCQkJJGV4Y2x1ZGVkICAg
ICAgICAgICAgICAgICAgICA9IGZhbHNlOwoJCQkJfQoJCQl9CgkJfQoKCQlwYl9iYWNrdXBidWRkeTo6JG9
wdGlvbnNbJ3N0YXRzJ11bJ2RiX3NpemUnXSAgICAgICAgICA9ICR0b3RhbF9zaXplOwoJCXBiX2JhY2t1cG
J1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnZGJfc2l6ZV9leGNsdWRlZCddID0gJHRvdGFsX3NpemVfd2l0a
F9leGNsdXNpb25zOwoJCXBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnZGJfc2l6ZV91cGRh
dGVkJ10gID0gdGltZSgpOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzYXZlKCk7CgoJCXVuc2V0KCAkcm93cyApOwo
KCQlyZXR1cm4gYXJyYXkoICR0b3RhbF9zaXplLCAkdG90YWxfc2l6ZV93aXRoX2V4Y2x1c2lvbnMgKTsKCX
0gLy8gRW5kIGdldF9kYXRhYmFzZV9zaXplKCkuCgoKCS8qKgoJICogQXR0ZW1wdCB0byB2ZXJpZnkgdGhlI
GRhdGFiYXNlIHNlcnZlciBpcyBzdGlsbCBhbGl2ZSBhbmQgZnVuY3Rpb25pbmcuICBJZiBub3QsIHRyeSB0
byByZS1lc3RhYmxpc2ggY29ubmVjdGlvbi4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBraWNrX2R
iKCkgewoJCS8vIE5lZWQgdG8gbWFrZSBzdXJlIHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uIGlzIGFjdGl2ZS
4gU29tZXRpbWVzIGl0IGdvZXMgYXdheSBkdXJpbmcgbG9uZyBib3V0cyBkb2luZyBvdGhlciB0aGluZ3MgL
S0gc2lnaC4KCQkvLyBUaGlzIGlzIG5vdCBlc3NlbnRpYWwgc28gdXNlIGluY2x1ZGUgYW5kIG5vdCByZXF1
aXJlIChzdXBwcmVzcyBhbnkgd2FybmluZykuCgkJQGluY2x1ZGVfb25jZSBwYl9iYWNrdXBidWRkeTo6cGx
1Z2luX3BhdGgoKSAuICcvbGliL3dwZGJ1dGlscy93cGRidXRpbHMucGhwJzsKCgkJaWYgKCBjbGFzc19leG
lzdHMoICdwbHVnaW5idWRkeV93cGRidXRpbHMnICkgKSB7CgkJCS8vIFRoaXMgaXMgdGhlIGRhdGFiYXNlI
G9iamVjdCB3ZSB3YW50IHRvIHVzZQoJCQlnbG9iYWwgJHdwZGI7CgoJCQkvLyBHZXQgb3VyIGhlbHBlciBv
YmplY3QgYW5kIGxldCBpdCB1c2UgdXMgdG8gb3V0cHV0IHN0YXR1cyBtZXNzYWdlcwoJCQkkZGJoZWxwZXI
gPSBuZXcgcGx1Z2luYnVkZHlfd3BkYnV0aWxzKCAkd3BkYiApOwoKCQkJLy8gSWYgd2UgY2Fubm90IGtpY2
sgdGhlIGRhdGFiYXNlIGludG8gbGlmZSB0aGVuIHNpZ25hbCB0aGUgZXJyb3IgYW5kIHJldHVybiBmYWxzZ
SB3aGljaCB3aWxsIHN0b3AgdGhlIGJhY2t1cAoJCQkvLyBPdGhlcndpc2UgYWxsIGlzIG9rIGFuZCB3ZSBj
YW4ganVzdCBmYWxsIHRocm91Z2ggYW5kIGxldCB0aGUgZnVuY3Rpb24gcmV0dXJuIHRydWUKCQkJaWYgKCA
hICRkYmhlbHBlci0+a2ljaygpICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgX1
8oICdEYXRhYmFzZSBTZXJ2ZXIgaGFzIGdvbmUgYXdheSwgdW5hYmxlIHRvIHVwZGF0ZSByZW1vdGUgZGVzd
GluYXRpb24gdHJhbnNmZXIgc3RhdHVzLiBUaGlzIGlzIG1vc3Qgb2Z0ZW4gY2F1c2VkIGJ5IG15c3FsIHJ1
bm5pbmcgb3V0IG9mIG1lbW9yeSBvciB0aW1pbmcgb3V0IGZhciB0b28gZWFybHkuIFBsZWFzZSBjb250YWN
0IHlvdXIgaG9zdC4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQl9CgkJfSBlbHNlIHsKCQkJLy
8gVXRpbHMgbm90IGF2YWlsYWJsZSBzbyBjYW5ub3QgdmVyaWZ5IGRhdGFiYXNlIGNvbm5lY3Rpb24gc3Rhd
HVzIC0ganVzdCBub3RpZnkKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ0Rh
dGFiYXNlIFNlcnZlciBjb25uZWN0aW9uIHN0YXR1cyB1bnZlcmlmaWVkLicsICdpdC1sMTBuLWJhY2t1cGJ
1ZGR5JyApICk7CgkJfQoKCX0gLy8gRW5kIGtpY2tfZGIoKS4KCgoJLyoqCgkgKiBWZXJpZnkgZXhpc3Rhbm
NlIGFuZCBzZWN1cml0eSBvZiBrZXkgZGlyZWN0b3JpZXMuIFJlc3VsdCBhdmFpbGFibGUgdmlhIGdsb2Jhb
CAkcGJfYmFja3VwYnVkZHlfZGlyZWN0b3J5X3ZlcmlmaWNhdGlvbiB3aXRoIHJldHVybiB2YWx1ZS4KCSAq
CgkgKiBAcGFyYW0gYm9vbCAkc2tpcF90ZW1wX2dlbmVyYXRpb24gIFNraXBzIGNyZWF0aW9uIG9mIHRlbXA
gZGlyZWN0b3J5LgoJICoKCSAqIEByZXR1cm4gYm9vbCAgVHJ1ZSBvbiBzdWNjZXNzIGNyZWF0aW5nIC8gdm
VyaWZ5aW5nLCBlbHNlIGZhbHNlLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZlcmlmeV9kaXJlY
3RvcmllcyggJHNraXBfdGVtcF9nZW5lcmF0aW9uID0gZmFsc2UgKSB7CgoJCSRzdWNjZXNzID0gdHJ1ZTsK
CgkJLy8gVXBkYXRlIGJhY2t1cCBkaXJlY3RvcnkgaWYgdW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZWZpbmV
kIG9uZS4KCQlpZiAoICEgQGlzX3dyaXRhYmxlKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRCYWNrdXBEaXJlY3
RvcnkoKSApICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdCYWNrdXAgZGlyZ
WN0b3J5IGludmFsaWQuIFVwZGF0aW5nIGZyb20gYCcgLiBiYWNrdXBidWRkeV9jb3JlOjpnZXRCYWNrdXBE
aXJlY3RvcnkoKSAuICdgIHRvIGRlZmF1bHQuJyApOwoJCQlwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2J
hY2t1cF9kaXJlY3RvcnknXSA9ICcnOyAvLyBSZXNldCB0byBkZWZhdWx0IChibGFuaykuCgkJCXBiX2JhY2
t1cGJ1ZGR5OjpzYXZlKCk7CgkJfQoJCSRyZXNwb25zZSA9IHBiX2JhY2t1cGJ1ZGR5OjphbnRpX2RpcmVjd
G9yeV9icm93c2luZyggYmFja3VwYnVkZHlfY29yZTo6Z2V0QmFja3VwRGlyZWN0b3J5KCksIGZhbHNlICk7
CgkJaWYgKCBmYWxzZSA9PT0gJHJlc3BvbnNlICkgewoJCQkkc3VjY2VzcyA9IGZhbHNlOwoJCX0KCgkJLy8
gVXBkYXRlIGxvZyBkaXJlY3RvcnkgaWYgdW5hYmxlIHRvIHdyaXRlIHRvIHRoZSBkZWZpbmVkIG9uZS4KCQ
lpZiAoICEgQGlzX3dyaXRhYmxlKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3RvcnkoKSApICkge
woJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdMb2cgZGlyZWN0b3J5IGludmFsaWQu
IFVwZGF0aW5nIGZyb20gYCcgLiBiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3RvcnkoKSAuICdgIHR
vIGRlZmF1bHQuJyApOwoJCQlwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2xvZ19kaXJlY3RvcnknXSA9IC
cnOyAvLyBSZXNldCB0byBkZWZhdWx0IChibGFuaykuCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzYXZlKCk7CgkJf
QoJCXBiX2JhY2t1cGJ1ZGR5OjphbnRpX2RpcmVjdG9yeV9icm93c2luZyggYmFja3VwYnVkZHlfY29yZTo6
Z2V0TG9nRGlyZWN0b3J5KCksIGZhbHNlICk7CgkJaWYgKCBmYWxzZSA9PT0gJHJlc3BvbnNlICkgewoJCQk
kc3VjY2VzcyA9IGZhbHNlOwoJCX0KCgkJLy8gVXBkYXRlIHRlbXAgZGlyZWN0b3J5IGlmIHVuYWJsZSB0by
B3cml0ZSB0byB0aGUgZGVmaW5lZCBvbmUuCgkJaWYgKCB0cnVlICE9PSAkc2tpcF90ZW1wX2dlbmVyYXRpb
24gKSB7CgkJCWlmICggISBAaXNfd3JpdGFibGUoIGJhY2t1cGJ1ZGR5X2NvcmU6OmdldFRlbXBEaXJlY3Rv
cnkoKSApICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnVGVtcG9yYXJ5IGR
pcmVjdG9yeSBpbnZhbGlkLiBVcGRhdGluZyBmcm9tIGAnIC4gYmFja3VwYnVkZHlfY29yZTo6Z2V0VGVtcE
RpcmVjdG9yeSgpIC4gJ2AgdG8gZGVmYXVsdC4nICk7CgkJCQlwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ
3RlbXBfZGlyZWN0b3J5J10gPSAnJzsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzYXZlKCk7CgkJCX0KCQkJcGJf
YmFja3VwYnVkZHk6OmFudGlfZGlyZWN0b3J5X2Jyb3dzaW5nKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRUZW1
wRGlyZWN0b3J5KCksIGZhbHNlICk7CgkJCWlmICggZmFsc2UgPT09ICRyZXNwb25zZSApIHsKCQkJCSRzdW
NjZXNzID0gZmFsc2U7CgkJCX0KCQl9CgoJCS8vIElmIHRlbXAgZGlyZWN0b3J5IGV4aXN0cyAoc2hvdWxkI
G9ubHkgYmUgdHJhbnNpZW50IGJ1dCBqdXN0IGluIGNhc2UgaXQgaXMgaGFuZ2luZyBhcm91bmQpIG1ha2Ug
c3VyZSBpdCdzIHNlY3VyZWQuIEJCIHdpbGwgdHJ5IHRvIGRlbGV0ZSB0aGlzIGRpcmVjdG9yeSBidXQgaWY
gaXQgY2FuJ3QgaXQgd2lsbCBhdCBsZWFzdCBiZSBjaGVja2VkIHRvIGJlIHNlY3VyZS4KCQlpZiAoIGZpbG
VfZXhpc3RzKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRUZW1wRGlyZWN0b3J5KCkgKSApIHsKCQkJcGJfYmFja
3VwYnVkZHk6OmFudGlfZGlyZWN0b3J5X2Jyb3dzaW5nKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRUZW1wRGly
ZWN0b3J5KCksIGZhbHNlICk7CgkJfQoKCQlnbG9iYWwgJHBiX2JhY2t1cGJ1ZGR5X2RpcmVjdG9yeV92ZXJ
pZmljYXRpb247CgkJJHBiX2JhY2t1cGJ1ZGR5X2RpcmVjdG9yeV92ZXJpZmljYXRpb24gPSAkc3VjY2Vzcz
sKCQlyZXR1cm4gJHN1Y2Nlc3M7CgoJfSAvLyBFbmQgdmVyaWZ5X2RpcmVjdG9yaWVzKCkuCgoKCS8qKgoJI
CogQVBJIHRvIHdwX3NjaGVkdWxlX3NpbmdsZV9ldmVudCgpIHRoYXQgYWxzbyB2ZXJpZmllcyB0aGF0IHRo
ZSBzY2hlZHVsZSBhY3R1YWxseSBnb3QgY3JlYXRlZCBpbiBXb3JkUHJlc3MuCgkgKiBTb21ldGltZXMgdGh
lIGRhdGFiYXNlIHJlamVjdHMgdGhpcyB1cGRhdGUgc28gd2UgbmVlZCB0byBkbyBhY3R1YWwgdmVyaWZpY2
F0aW9uLgoJICoKCSAqIEBwYXJhbSBpbnQgICAgJHRpbWUgICAgICAgICAgICAgIFRpbWVzdGFtcC4KCSAqI
EBwYXJhbSBzdHJpbmcgJG1ldGhvZCAgICAgICAgICAgIENsYXNzIE1ldGhvZC4KCSAqIEBwYXJhbSBhcnJh
eSAgJGFyZ3MgICAgICAgICAgICAgIEFyZ3MgdG8gcGFzcy4KCSAqIEBwYXJhbSBpbnQgICAgJHJlc2NoZWR
1bGVfY291bnQgIE51bWVyaWMgY291bnRlciBvZiBob3cgbWFueSB0aW1lcyB0aGlzIHNjaGVkdWxlIGhhcy
BiZWVuICdidW1wZWQnLiAgVGhpcyBoZWxwcyBwcmV2ZW50IGluZmluaXRlIGxvb3BzIG9mIGJ1bXBpbmcgY
3JvbnMuICBCQiBsaW1pdHMgdG8gb25seSBvbmUgQkIgY3JvbiBhY3Rpb24gcGVyIFBIUCBwYWdlIGxvYWQg
dG8gaW5zdXJlIGZ1bGwgcnVudGltZSBwZXIgcHJ
vY2Vzcy4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUgb24gdmVyaWZpZWQgc2NoZWR1bGUgc3VjY2Vzcy
wgZWxzZSBmYWxzZS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzY2hlZHVsZV9zaW5nbGVfZXZlb
nQoICR0aW1lLCAkbWV0aG9kLCAkYXJncywgJHJlc2NoZWR1bGVfY291bnQgPSAwICkgewoJCSR0YWcgPSAn
YmFja3VwYnVkZHlfY3Jvbic7CgoJCS8vIE1ha2Ugc3VyZSBsaXZlX3BlcmlvZGljIG5ldmVyIGdldHMgc2N
oZWR1bGVkIG11bHRpcGxlIHRpbWVzLgoJCWlmICggJ2xpdmVfcGVyaW9kaWMnID09PSAkbWV0aG9kICkgew
oJCQkkc2luZ2xlX3NjaGVkdWxlZCA9IHdwX25leHRfc2NoZWR1bGVkKCAkdGFnLCBhcnJheSggJG1ldGhvZ
CwgJGFyZ3MsICRyZXNjaGVkdWxlX2NvdW50ICkgKTsgLy8gQ2hlY2sgaWYgdGFnIGFscmVhZHkgc2NoZWR1
bGVkLgoJCQlpZiAoIGZhbHNlICE9PSAkc2luZ2xlX3NjaGVkdWxlZCApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR
5OjpzdGF0dXMoICd3YXJuaW5nJywgJ1dhcm5pbmcgIzgzOTI0OTc0MzogQW4gZXhpc3Rpbmcgc2NoZWR1bG
UgYXBwZWFycyB0byBhbHJlYWR5IGV4aXN0IGZvciB0aGlzIHRhZyB3aGljaCBpcyBsaW1pdGVkIHRvIGEgc
2luZ2xlIGluc3RhbmNlLiBUaGlzIG1heSBiZSBhIHRlbXBvcmFyeSBpc3N1ZSBvciB0aGlzIG1heSBiZSBj
YXVzZWQgYnkgY3JvbiBpbnRlcmZlcmVuY2Ugc3VjaCBhcyBieSBXM1RDLiBEZXRhaWxzOiBgJyAuIHByaW5
0X3IoICRzaW5nbGVfc2NoZWR1bGVkLCB0cnVlICkgLiAnYC4nICk7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQ
oJCX0KCgkJJHNjaGVkdWxlX3Jlc3VsdCA9IHdwX3NjaGVkdWxlX3NpbmdsZV9ldmVudCggJHRpbWUsICR0Y
WcsIGFycmF5KCAkbWV0aG9kLCAkYXJncywgJHJlc2NoZWR1bGVfY291bnQgKSApOyAvLyBTY2hlZHVsZS4K
CQlpZiAoIGZhbHNlID09PSAkc2NoZWR1bGVfcmVzdWx0ICkgeyAvLyBJZiBmYWlsZWQsIHNsZWVwIDEgdGh
lbiB0cnkgYWdhaW4uCgkJCXNsZWVwKCBiYWNrdXBidWRkeV9jb25zdGFudHM6OlNDSEVEVUxFX1JFVFJZX1
dBSVQgKTsKCQkJJHNjaGVkdWxlX3Jlc3VsdCA9IHdwX3NjaGVkdWxlX3NpbmdsZV9ldmVudCggJHRpbWUsI
CR0YWcsIGFycmF5KCAkbWV0aG9kLCAkYXJncywgJHJlc2NoZWR1bGVfY291bnQgKSApOyAvLyBTY2hlZHVs
ZS4KCQl9CgoJCSRuZXh0X3NjaGVkdWxlZCA9IHdwX25leHRfc2NoZWR1bGVkKCAkdGFnLCBhcnJheSggJG1
ldGhvZCwgJGFyZ3MsICRyZXNjaGVkdWxlX2NvdW50ICkgKTsgLy8gUmV0cmlldmUgc2NoZWR1bGUgdG8gdm
VyaWZ5IGl0IHN0dWNrLgoKCQlpZiAoIGZhbHNlID09PSAkbmV4dF9zY2hlZHVsZWQgKSB7CgkJCXNsZWVwK
CBiYWNrdXBidWRkeV9jb25zdGFudHM6OlNDSEVEVUxFX1JFVFJZX1dBSVQgKTsKCQkJJG5leHRfc2NoZWR1
bGVkID0gd3BfbmV4dF9zY2hlZHVsZWQoICR0YWcsIGFycmF5KCAkbWV0aG9kLCAkYXJncywgJHJlc2NoZWR
1bGVfY291bnQgKSApOyAvLyBSZXRyaWV2ZSBzY2hlZHVsZSB0byB2ZXJpZnkgaXQgc3R1Y2suCgkJfQoKCQ
lpZiAoIGZhbHNlID09PSAkbmV4dF9zY2hlZHVsZWQgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoI
CdlcnJvcicsICdXYXJuaW5nICMzNDg5NDkzNDogVGhpcyBtYXkgbm90IGJlIGEgZmF0YWwgZXJyb3IuIEln
bm9yZSBpZiBwcm9jZXNzIHByb2NlZWRzIHdpdGhvdXQgb3RoZXIgZXJyb3JzLiBXb3JkUHJlc3MgcmVwb3J
0ZWQgc3VjY2VzcyBzY2hlZHVsaW5nIEJVVCB3cF9uZXh0X3NjaGVkdWxlZCgpIGNvdWxkIE5PVCBjb25maX
JtIHNjaGVkdWxlIGV4aXN0YW5jZS4gQSBwbHVnaW4gbWF5IGhhdmUgcHJldmVudGVkIGl0IChlZyBjYWNoa
W5nKSBvciBpdCBpcyBhbHJlYWR5IHNjaGVkdWxlZCAoYnV0IGNvdWxkIG5vdCBiZSBkZXRlY3RlZCkuJyAp
OwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0gLy8gRW5kIHNjaGVkdWxlX3Npbmd
sZV9ldmVudCgpLgoKCgkvKioKCSAqIEFQSSB0byB3cF9zY2hlZHVsZV9ldmVudCgpIHRoYXQgYWxzbyB2ZX
JpZmllcyB0aGF0IHRoZSBzY2hlZHVsZSBhY3R1YWxseSBnb3QgY3JlYXRlZCBpbiBXb3JkUHJlc3MuCgkgK
iBTb21ldGltZXMgdGhlIGRhdGFiYXNlIHJlamVjdHMgdGhpcyB1cGRhdGUgc28gd2UgbmVlZCB0byBkbyBh
Y3R1YWwgdmVyaWZpY2F0aW9uLgoJICoKCSAqIEBwYXJhbSBpbnQgICAgJHRpbWUgICAgVGltZXN0YW1wLgo
JICogQHBhcmFtIHN0cmluZyAkcGVyaW9kICBSZWN1cnJlbmNlLgoJICogQHBhcmFtIHN0cmluZyAkbWV0aG
9kICBDbGFzcyBtZXRob2QuCgkgKiBAcGFyYW0gYXJyYXkgICRhcmdzICAgIEFyZ3MgdG8gaW5jbHVkZS4KC
SAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUgb24gdmVyaWZpZWQgc2NoZWR1bGUgc3VjY2VzcywgZWxzZSBm
YWxzZS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzY2hlZHVsZV9ldmVudCggJHRpbWUsICRwZXJ
pb2QsICRtZXRob2QsICRhcmdzICkgewoJCSR0YWcgICAgICAgICAgICAgPSAnYmFja3VwYnVkZHlfY3Jvbi
c7CgkJJHNjaGVkdWxlX3Jlc3VsdCA9IHdwX3NjaGVkdWxlX2V2ZW50KCAkdGltZSwgJHBlcmlvZCwgJHRhZ
ywgYXJyYXkoICRtZXRob2QsICRhcmdzICkgKTsKCgkJLy8gSWYgZmFpbGVkLCBzbGVlcCAxIHRoZW4gdHJ5
IGFnYWluLgoJCWlmICggZmFsc2UgPT09ICRzY2hlZHVsZV9yZXN1bHQgKSB7CgkJCXNsZWVwKCBiYWNrdXB
idWRkeV9jb25zdGFudHM6OlNDSEVEVUxFX1JFVFJZX1dBSVQgKTsKCQkJJHNjaGVkdWxlX3Jlc3VsdCA9IH
dwX3NjaGVkdWxlX2V2ZW50KCAkdGltZSwgJHBlcmlvZCwgJHRhZywgYXJyYXkoICRtZXRob2QsICRhcmdzI
CkgKTsKCQl9CgoJCS8vIENvbmZpcm0gZXZlbnQgd2FzIHNjaGVkdWxlZCBzdWNjZXNzZnVsbHkuCgkJJG5l
eHRfc2NoZWR1bGVkID0gd3BfbmV4dF9zY2hlZHVsZWQoICR0YWcsIGFycmF5KCAkbWV0aG9kLCAkYXJncyA
pICk7CgoJCS8vIElmIGZhaWxlZCwgZXZlbnQgZG9lc24ndCBleGlzdCB5ZXQsIHNsZWVwIGZvciAxIHNlY2
9uZCwgdGhlbiB0cnkgYWdhaW4uCgkJaWYgKCBmYWxzZSA9PT0gJG5leHRfc2NoZWR1bGVkICkgewoJCQlwY
l9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdDb25maXJtaW5nIGNyb24gc2NoZWR1bGVkIGZv
ciBgJyAuICRtZXRob2QgLiAnYC4uLicgKTsKCQkJc2xlZXAoIGJhY2t1cGJ1ZGR5X2NvbnN0YW50czo6U0N
IRURVTEVfUkVUUllfV0FJVCApOwoJCQkkbmV4dF9zY2hlZHVsZWQgPSB3cF9uZXh0X3NjaGVkdWxlZCggJH
RhZywgYXJyYXkoICRtZXRob2QsICRhcmdzICkgKTsKCQl9CgoJCWlmICggZmFsc2UgPT09ICRuZXh0X3Nja
GVkdWxlZCApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICM4MjkzODMy
OTogVGhpcyBtYXkgbm90IGJlIGEgZmF0YWwgZXJyb3IuIElnbm9yZSBpZiBiYWNrdXAgcHJvY2VlZHMgd2l
0aG91dCBvdGhlciBlcnJvcnMuIFdvcmRQcmVzcyByZXBvcnRlZCBzdWNjZXNzIHNjaGVkdWxpbmcgQlVUIH
dwX25leHRfc2NoZWR1bGVkKCkgY291bGQgTk9UIGNvbmZpcm0gc2NoZWR1bGUgZXhpc3RhbmNlIG9mIG1ld
GhvZCBgJyAuICRtZXRob2QgLiAnYC4gQSBwbHVnaW4gbWF5IGhhdmUgcHJldmVudGVkIGl0IChlZyBjYWNo
aW5nKSBvciBpdCBpcyBhbHJlYWR5IHNjaGVkdWxlZCAoYnV0IGNvdWxkIG5vdCBiZSBkZXRlY3RlZCkuJyA
pOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0gLy8gRW5kIHNjaGVkdWxlX2V2ZW
50KCkuCgoKCS8qKgoJICogQVBJIHRvIHdwX3Vuc2NoZWR1bGVfZXZlbnQoKSB0aGF0IGFsc28gdmVyaWZpZ
XMgdGhhdCB0aGUgc2NoZWR1bGUgYWN0dWFsbHkgZ290IHJlbW92ZWQgV29yZFByZXNzLgoJICogU29tZXRp
bWVzIHRoZSBkYXRhYmFzZSByZWplY3RzIHRoaXMgdXBkYXRlIHNvIHdlIG5lZWQgdG8gZG8gYWN0dWFsIHZ
lcmlmaWNhdGlvbi4KCSAqCgkgKiBAcGFyYW0gaW50ICAgICR0aW1lICBUaW1lc3RhbXAuCgkgKiBAcGFyYW
0gc3RyaW5nICR0YWcgICBFdmVudCB0YWcuCgkgKiBAcGFyYW0gYXJyYXkgICRhcmdzICBBcnJheSBvZiBhc
mdzLgoJICoKCSAqIEByZXR1cm4gYm9vbCAgVHJ1ZSBvbiB2ZXJpZmllZCBzY2hlZHVsZSBkZWxldGlvbiBz
dWNjZXNzLCBlbHNlIGZhbHNlLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHVuc2NoZWR1bGVfZXZ
lbnQoICR0aW1lLCAkdGFnLCAkYXJncyApIHsKCQkkdW5zY2hlZHVsZV9yZXN1bHQgPSB3cF91bnNjaGVkdW
xlX2V2ZW50KCAkdGltZSwgJHRhZywgJGFyZ3MgKTsKCQkkbmV4dF9zY2hlZHVsZWQgICAgPSB3cF9uZXh0X
3NjaGVkdWxlZCggJHRhZywgJGFyZ3MgKTsKCQlpZiAoIGZhbHNlID09PSAkdW5zY2hlZHVsZV9yZXN1bHQg
KSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ1dhcm5pbmc6IFVuYWJsZSB0byB
yZW1vdmUgc2NoZWR1bGUgZm9yIHRhZyBgJyAuICR0YWcgLiAnYCBhcyB3cF91bnNjaGVkdWxlX2V2ZW50KC
kgcmV0dXJuZWQgZmFsc2UuIEEgcGx1Z2luIG1heSBoYXZlIHByZXZlbnRlZCBpdCBvciBpdCBpcyBhbHJlY
WR5IHVuc2NoZWR1bGVkLiBUaGlzIG1heSBub3QgYmUgYSBwcm9ibGVtLicgKTsKCQkJcmV0dXJuIGZhbHNl
OwoJCX0KCQlpZiAoIGZhbHNlICE9PSAkbmV4dF9zY2hlZHVsZWQgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5Ojp
zdGF0dXMoICdlcnJvcicsICdXb3JkUHJlc3MgcmVwb3J0ZWQgc3VjY2VzcyB1bnNjaGVkdWxpbmcgQlVUIH
dwX25leHRfc2NoZWR1bGVkKCkgY29uZmlybWVkIHNjaGVkdWxlIGV4aXN0YW5jZSBvZiB0YWcgYCcgLiAkd
GFnIC4gJ2AuIFRoZSBkYXRhYmFzZSBtYXkgaGF2ZSByZWplY3RlZCB0aGUgcmVtb3ZhbC4nICk7CgkJCXJl
dHVybiBmYWxzZTsKCQl9CgoJCXJldHVybiB0cnVlOwoJfSAvLyBFbmQgdW5zY2hlZHVsZV9ldmVudCgpLgo
KCS8qKgoJICogSGFuZGxlIG5vcm1hbGl6aW5nIHppcCBjb21tZW50IGRhdGEsIGRlZmF1bHRzLCBldGMuCg
kgKgoJICogQHBhcmFtIGFycmF5ICRjb21tZW50ICBBcnJheSBvZiBtZXRhIGRhdGEgdG8gbm9ybWFsaXplI
CYgYXBwbHkgZGVmYXVsdHMgdG8uCgkgKgoJICogQHJldHVybiBhcnJheSAgTm9ybWFsaXplZCBhcnJheS4K
CSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBub3JtYWxpemVfY29tbWVudF9kYXRhKCAkY29tbWVudCA
pIHsKCgkJJGRlZmF1bHRzID0gYXJyYXkoCgkJCSdzZXJpYWwnICAgICA9PiAnJywKCQkJJ3NpdGV1cmwnIC
AgID0+ICcnLAoJCQkndHlwZScgICAgICAgPT4gJycsCgkJCSdwcm9maWxlJyAgICA9PiAnJywKCQkJJ2NyZ
WF0ZWQnICAgID0+ICcnLAoJCQknZ2VuZXJhdG9yJyAgPT4gJycsCgkJCSdkYl9wcmVmaXgnICA9PiAnJywK
CQkJJ2JiX3ZlcnNpb24nID0+ICcnLAoJCQknd3BfdmVyc2lvbicgPT4gJycsCgkJCSdwb3N0cycgICAgICA
9PiAnJywKCQkJJ3BhZ2VzJyAgICAgID0+ICcnLAoJCQknY29tbWVudHMnICAgPT4gJycsCgkJCSd1c2Vycy
cgICAgICA9PiAnJywKCQkJJ2RhdF9wYXRoJyAgID0+ICcnLAoJCQknbm90ZScgICAgICAgPT4gJycsCgkJK
TsKCgkJaWYgKCAhIGlzX2FycmF5KCAkY29tbWVudCApICkgeyAvLyBQbGFpbiB0ZXh0OyBwbGFjZSBpbiBu
b3RlIGZpZWxkLgoKCQkJJG1heWJlX2NvbW1lbnQgPSBqc29uX2RlY29kZSggJGNvbW1lbnQsIHRydWUgKTs
KCQkJaWYgKCBudWxsICE9PSAkbWF5YmVfY29tbWVudCApIHsKCQkJCXJldHVybiBhcnJheV9tZXJnZSggJG
RlZmF1bHRzLCAkbWF5YmVfY29tbWVudCApOwoJCQl9IGVsc2UgewoKCQkJCWlmICggaXNfc3RyaW5nKCAkY
29tbWVudCApICkgewoJCQkJCSRkZWZhdWx0c1snbm90ZSddID0gJGNvbW1lbnQ7CgkJCQl9CgkJCQlyZXR1
cm4gJGRlZmF1bHRzOwoJCQl9CgkJfSBlbHNlIHsgLy8gQXJyYXkuIE1lcmdlIGRlZmF1bHRzIGFuZCByZXR
1cm4uCgkJCXJldHVybiBhcnJheV9tZXJnZSggJGRlZmF1bHRzLCAkY29tbWVudCApOwoJCX0KCgl9IC8vIE
VuZCBub3JtYWxpemVfY29tbWVudF9kYXRhKCkuCgoKCS8qKgoJICogVHJhbnNsYXRlcyBtZXRhIGluZm9yb
WF0aW9uIGZpZWxkIG5hbWVzIGFuZCB2YWx1ZXMgaW50byBuaWNlIHJlYWRhYmxlIGZvcm1zLgoJICoKCSAq
IEBwYXJhbSBzdHJpbmcgJGNvbW1lbnRfbGluZV9uYW1lICAgTWV0YSBmaWVsZCBuYW1lLgoJICogQHBhcmF
tIHN0cmluZyAkY29tbWVudF9saW5lX3ZhbHVlICBWYWx1ZSBvZiBtZXRhIGl0ZW0uCgkgKgoJICogQHJldH
VybiBhcnJheXxmYWxzZSAgQXJyYXkgd2l0aCB0d28gZW50cmllczogdGhlIHVwZGF0ZXMgY29tbWVudCBsa
W5lIG5hbWUgYW5kIHVwZGF0ZWQgY29tbWVudCBsaW5lIHZhbHVlLiBmYWxzZSBpZiBlbXB0eS4KCSAqLwoJ
cHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcmV0dHlfbWV0YV9pbmZvKCAkY29tbWVudF9saW5lX25hbWUsICR
jb21tZW50X2xpbmVfdmFsdWUgKSB7CgoJCWlmICggJ3NlcmlhbCcgPT09ICRjb21tZW50X2xpbmVfbmFtZS
ApIHsKCQkJJGNvbW1lbnRfbGluZV9uYW1lID0gJ1VuaXF1ZSBzZXJpYWwgaWRlbnRpZmllcic7CgkJfSBlb
HNlaWYgKCAnc2l0ZXVybCcgPT09ICRjb21tZW50X2xpbmVfbmFtZSApIHsKCQkJJGNvbW1lbnRfbGluZV9u
YW1lID0gJ1NpdGUgVVJMJzsKCQl9IGVsc2VpZiAoICd0eXBlJyA9PT0gJGNvbW1lbnRfbGluZV9uYW1lICk
gewoJCQkkY29tbWVudF9saW5lX25hbWUgPSAnQmFja3VwIFR5cGUnOwoJCQlpZiAoICdkYicgPT09ICRjb2
1tZW50X2xpbmVfdmFsdWUgKSB7CgkJCQkkY29tbWVudF9saW5lX3ZhbHVlID0gJ0RhdGFiYXNlJzsKCQkJf
SBlbHNlaWYgKCAnZnVsbCcgPT09ICRjb21tZW50X2xpbmVfdmFsdWUgKSB7CgkJCQkkY29tbWVudF9saW5l
X3ZhbHVlID0gJ0Z1bGwnOwoJCQl9IGVsc2VpZiAoICdleHBvcnQnID09PSAkY29tbWVudF9saW5lX3ZhbHV
lICkgewoJCQkJJGNvbW1lbnRfbGluZV92YWx1ZSA9ICdNdWx0aXNpdGUgU3Vic2l0ZSBFeHBvcnQnOwoJCQ
l9CgkJfSBlbHNlaWYgKCAncHJvZmlsZScgPT09ICRjb21tZW50X2xpbmVfbmFtZSApIHsKCQkJJGNvbW1lb
nRfbGluZV9uYW1lID0gJ0JhY2t1cCBQcm9maWxlJzsKCQl9IGVsc2VpZiAoICdjcmVhdGVkJyA9PT0gJGNv
bW1lbnRfbGluZV9uYW1lICkgewoJCQkkY29tbWVudF9saW5lX25hbWUgPSAnQ3JlYXRpb24gRGF0ZSc7Cgk
JCWlmICggJycgIT0gJGNvbW1lbnRfbGluZV92YWx1ZSApIHsKCQkJCSRjb21tZW50X2xpbmVfdmFsdWUgPS
BwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+ZGF0ZSggcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPmxvY2Fsa
XplX3RpbWUoICRjb21tZW50X2xpbmVfdmFsdWUgKSApOwoJCQl9CgkJfSBlbHNlaWYgKCAnYmJfdmVyc2lv
bicgPT09ICRjb21tZW50X2xpbmVfbmFtZSApIHsKCQkJJGNvbW1lbnRfbGluZV9uYW1lID0gJ0JhY2t1cEJ
1ZGR5IHZlcnNpb24gYXQgY3JlYXRpb24nOwoJCX
0gZWxzZWlmICggJ3dwX3ZlcnNpb24nID09PSAkY29tbWVudF9saW5lX25hbWUgKSB7CgkJCSRjb21tZW50X
2xpbmVfbmFtZSA9ICdXb3JkUHJlc3MgdmVyc2lvbiBhdCBjcmVhdGlvbic7CgkJfSBlbHNlaWYgKCAnZGF0
X3BhdGgnID09PSAkY29tbWVudF9saW5lX25hbWUgKSB7CgkJCSRjb21tZW50X2xpbmVfbmFtZSA9ICdCYWN
rdXBCdWRkeSBkYXRhIGZpbGUgKHJlbGF0aXZlKSc7CgkJfSBlbHNlaWYgKCAncG9zdHMnID09PSAkY29tbW
VudF9saW5lX25hbWUgKSB7CgkJCSRjb21tZW50X2xpbmVfbmFtZSA9ICdUb3RhbCBQb3N0cyc7CgkJfSBlb
HNlaWYgKCAncGFnZXMnID09PSAkY29tbWVudF9saW5lX25hbWUgKSB7CgkJCSRjb21tZW50X2xpbmVfbmFt
ZSA9ICdUb3RhbCBQYWdlcyc7CgkJfSBlbHNlaWYgKCAnY29tbWVudHMnID09PSAkY29tbWVudF9saW5lX25
hbWUgKSB7CgkJCSRjb21tZW50X2xpbmVfbmFtZSA9ICdUb3RhbCBDb21tZW50cyc7CgkJfSBlbHNlaWYgKC
AndXNlcnMnID09PSAkY29tbWVudF9saW5lX25hbWUgKSB7CgkJCSRjb21tZW50X2xpbmVfbmFtZSA9ICdUb
3RhbCBVc2Vycyc7CgkJfSBlbHNlaWYgKCAnbm90ZScgPT09ICRjb21tZW50X2xpbmVfbmFtZSApIHsKCQkJ
JGNvbW1lbnRfbGluZV9uYW1lID0gJ1VzZXItc3BlY2lmaWVkIG5vdGUnOwoJCQlpZiAoICcnICE9ICRjb21
tZW50X2xpbmVfdmFsdWUgKSB7CgkJCQkkY29tbWVudF9saW5lX3ZhbHVlID0gJyInIC4gaHRtbGVudGl0aW
VzKCAkY29tbWVudF9saW5lX3ZhbHVlICkgLiAnIic7CgkJCX0KCQl9IGVsc2UgewoJCQkkY29tbWVudF9sa
W5lX25hbWUgPSAkY29tbWVudF9saW5lX25hbWU7CgkJfQoKCQlpZiAoICcnICE9ICRjb21tZW50X2xpbmVf
dmFsdWUgKSB7CgkJCXJldHVybiBhcnJheSggJGNvbW1lbnRfbGluZV9uYW1lLCAkY29tbWVudF9saW5lX3Z
hbHVlICk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGFycmF5KCAkY29tbWVudF9saW5lX25hbWUsICctRW1wdH
ktJyApOwoJCX0KCgl9IC8vIEVuZCBwcmV0dHlfbWV0YV9pbmZvKCkuCgoKCS8qKgoJICogT3V0cHV0cyBhb
iBhbGVydCB3YXJuaW5nIGlmIGEgY29yZSBkYiB0YWJsZSBpcyBleGNsdWRlZC4KCSAqCgkgKiBAcGFyYW0g
YXJyYXkgJGV4Y2x1ZGVzICBBcnJheSBvZiB0YWJsZXMgZXhjbHVkZWQgZnJvbSB0aGUgYmFja3VwLgoJICo
KCSAqIEByZXR1cm4gYXJyYXkgIEFycmF5IG9mIG1lc3NhZ2Ugd2FybmluZ3MgYWJvdXQgcG90ZW50aWFsIG
lzc3VlcyBmb3VuZCB3aXRoIHRoZXNlIGV4Y2x1c2lvbnMsIGlmIGFueS4gSW5kZXggPSB1bmlxdWUgaWRlb
nRpZmVyLCBWYWx1ZSA9IG1lc3NhZ2UuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWxlcnRfY29y
ZV90YWJsZV9leGNsdWRlcyggJGV4Y2x1ZGVzICkgewoJCWdsb2JhbCAkd3BkYjsKCQkkcHJlZml4ID0gJHd
wZGItPnByZWZpeDsKCgkJLy8gSWYgdGhlc2UgdGFibGVzIGFyZSBmb3VuZCBleGNsdWRlZCB0aGVuIHdhcm
4gdGhhdCBtYXkgYmUgYSBiYWQgaWRlYS4KCQkkd2Fybl90YWJsZXMgPSBhcnJheSgKCQkJJHByZWZpeCAuI
Cdjb21tZW50cycsCgkJCSRwcmVmaXggLiAncG9zdHMnLAoJCQkkcHJlZml4IC4gJ3VzZXJzJywKCQkJJHBy
ZWZpeCAuICdjb21tZW50bWV0YScsCgkJCSRwcmVmaXggLiAncG9zdG1ldGEnLAoJCQkkcHJlZml4IC4gJ3R
lcm1fcmVsYXRpb25zaGlwcycsCgkJCSRwcmVmaXggLiAnb3B0aW9ucycsCgkJCSRwcmVmaXggLiAndGVybV
90YXhvbm9teScsCgkJCSRwcmVmaXggLiAnbGlua3MnLAoJCQkkcHJlZml4IC4gJ3Rlcm1zJywKCQkpOwoKC
QkkcmV0dXJuX2FycmF5ID0gYXJyYXkoKTsKCQlmb3JlYWNoICggJHdhcm5fdGFibGVzIGFzICR3YXJuX3Rh
YmxlICkgewoJCQlpZiAoIGluX2FycmF5KCAkd2Fybl90YWJsZSwgJGV4Y2x1ZGVzICkgKSB7CgkJCQkkcmV
0dXJuX2FycmF5WyAnZXhjbHVkaW5nX2NvcmV0YWJsZS0nIC4gbWQ1KCAkd2Fybl90YWJsZSApIF0gPSAnV2
FybmluZzogWW91IGFyZSBleGNsdWRpbmcgb25lIG9yIG1vcmUgY29yZSBXb3JkUHJlc3MgdGFibGVzIGAnI
C4gJHdhcm5fdGFibGUgLiAnYCB3aGljaCBtYXkgcmVzdWx0IGluIGFuIGluY29tcGxldGUgYmFja3VwLiBS
ZW1vdmUgZXhjbHVzaW9ucyBvciBiYWNrdXAgd2l0aCBhbm90aGVyIHByb2ZpbGUgb3IgbWV0aG9kLic7Cgk
JCX0KCQl9CgoJCXJldHVybiAkcmV0dXJuX2FycmF5OwoJfSAvLyBFbmQgYWxlcnRfY29yZV90YWJsZXNfZX
hjbHVkZXMoKS4KCgoJLyoqCgkgKiBPdXRwdXRzIGFuIGFsZXJ0IHdhcm5pbmcgaWYgYSBjb3JlIGRiIGRpc
mVjdG9yeSBpcyBleGNsdWRlZC4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJGV4Y2x1ZGVzICBBcnJheSBvZiBw
YXRocyBleGNsdWRlZCBmcm9tIHRoZSBiYWNrdXAuCgkgKgoJICogQHJldHVybiBhcnJheSAgQXJyYXkgb2Y
gbWVzc2FnZSB3YXJuaW5ncyBhYm91dCBwb3RlbnRpYWwgaXNzdWVzIGZvdW5kIHdpdGggdGhlc2UgZXhjbH
VzaW9ucywgaWYgYW55LiBJbmRleCA9IHVuaXF1ZSBpZGVudGlmZXIsIFZhbHVlID0gbWVzc2FnZS4KCSAqL
woJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhbGVydF9jb3JlX2ZpbGVfZXhjbHVkZXMoICRleGNsdWRlcyAp
IHsKCgkJLy8gSWYgdGhlc2UgcGF0aHMgYXJlIGZvdW5kIGV4Y2x1ZGVkIHRoZW4gd2FybiB0aGF0IG1heSB
iZSBhIGJhZCBpZGVhLgoJCSR3YXJuX2RpcnMgPSBhcnJheSggLy8gTm8gdHJhaWxpbmcgc2xhc2guCgkJCS
cvd3AtY29udGVudCcsCgkJCScvd3AtY29udGVudC91cGxvYWRzJywKCQkJJy93cC1jb250ZW50L3VwbG9hZ
HMvYmFja3VwYnVkZHlfdGVtcCcsCgkJCScvJyAuIGx0cmltKCBzdHJfcmVwbGFjZSggQUJTUEFUSCwgJycs
IGJhY2t1cGJ1ZGR5X2NvcmU6OmdldEJhY2t1cERpcmVjdG9yeSgpICksICdcXC8nICksCgkJKTsKCgkJZm9
yZWFjaCAoICRleGNsdWRlcyBhcyAmJGV4Y2x1ZGUgKSB7IC8vIFN0cmlwIHRyYWlsaW5nIHNsYXNoKGVzKS
4KCQkJJGV4Y2x1ZGUgPSBydHJpbSggJGV4Y2x1ZGUsICdcXC8nICk7CgkJfQoKCQkkcmV0dXJuX2FycmF5I
D0gYXJyYXkoKTsKCQlmb3JlYWNoICggJHdhcm5fZGlycyBhcyAkd2Fybl9kaXIgKSB7CgkJCWlmICggaW5f
YXJyYXkoICR3YXJuX2RpciwgJGV4Y2x1ZGVzICkgKSB7CgkJCQkkcmV0dXJuX2FycmF5WyAnZXhjbHVkaW5
nX2NvcmVmaWxlLScgLiBtZDUoICR3YXJuX2RpciApIF0gPSAnV2FybmluZzogWW91IGFyZSBleGNsdWRpbm
cgb25lIG9yIG1vcmUgV29yZFByZXNzIGNvcmUgb3IgQmFja3VwQnVkZHkgZGlyZWN0b3JpZXMgYCcgLiAkd
2Fybl9kaXIgLiAnYCB3aGljaCBtYXkgcmVzdWx0IGluIGFuIGluY29tcGxldGUgb3IgbWFsZnVuY3Rpb25p
bmcgYmFja3VwLiBSZW1vdmUgZXhjbHVzaW9ucyBvciBiYWNrdXAgd2l0aCBhbm90aGVyIHByb2ZpbGUgb3I
gbWV0aG9kIHRvIGF2b2lkIHByb2JsZW1zLic7CgkJCX0KCQl9CgoJCXJldHVybiAkcmV0dXJuX2FycmF5Ow
oJfSAvLyBFbmQgYWxlcnRfY29yZV9maWxlX2V4Y2x1ZGVzKCkuCgoKCS8qKgoJICogT3V0cHV0IG1ldGEga
W5mbyBpbiBhIHRhYmxlLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGZpbGUgIEJhY2t1cCBmaWxlIHRvIGdl
dCBjb21tZW50IG1ldGEgZGF0YSBmcm9tLgoJICoKCSAqIEByZXR1cm4gYXJyYXl8ZmFsc2UgIEFycmF5IG9
mIG1ldGEgZGF0YSBvciBmYWxzZSBvbiBmYWlsdXJlIHRvIHJldHJpZXZlLgoJICovCglwdWJsaWMgc3RhdG
ljIGZ1bmN0aW9uIGdldFppcE1ldGEoICRmaWxlICkgewoJCWlmICggISBpc3NldCggcGJfYmFja3VwYnVkZ
Hk6OiRjbGFzc2VzWyd6aXBidWRkeSddICkgKSB7CgkJCXJlcXVpcmVfb25jZSBwYl9iYWNrdXBidWRkeTo6
cGx1Z2luX3BhdGgoKSAuICcvbGliL3ppcGJ1ZGR5L3ppcGJ1ZGR5LnBocCc7CgkJCXBiX2JhY2t1cGJ1ZGR
5OjokY2xhc3Nlc1snemlwYnVkZHknXSA9IG5ldyBwbHVnaW5idWRkeV96aXBidWRkeSggYmFja3VwYnVkZH
lfY29yZTo6Z2V0QmFja3VwRGlyZWN0b3J5KCkgKTsKCQl9CgkJJGNvbW1lbnRfbWV0YSA9IGFycmF5KCk7C
gkJaWYgKCBpc3NldCggJGZpbGUgKSApIHsKCQkJJGNvbW1lbnQgPSBwYl9iYWNrdXBidWRkeTo6JGNsYXNz
ZXNbJ3ppcGJ1ZGR5J10tPmdldF9jb21tZW50KCAkZmlsZSApOwoJCQkkY29tbWVudCA9IGJhY2t1cGJ1ZGR
5X2NvcmU6Om5vcm1hbGl6ZV9jb21tZW50X2RhdGEoICRjb21tZW50ICk7CgoJCQkkY29tbWVudF9tZXRhID
0gYXJyYXkoKTsKCQkJZm9yZWFjaCAoICRjb21tZW50IGFzICRjb21tZW50X2xpbmVfbmFtZSA9PiAkY29tb
WVudF9saW5lX3ZhbHVlICkgeyAvLyBMb29wIHRocm91Z2ggYWxsIG1ldGEgZmllbGRzIGluIHRoZSBjb21t
ZW50IGFycmF5IHRvIGRpc3BsYXkuCgkJCQkkcmVzcG9uc2UgPSBiYWNrdXBidWRkeV9jb3JlOjpwcmV0dHl
fbWV0YV9pbmZvKCAkY29tbWVudF9saW5lX25hbWUsICRjb21tZW50X2xpbmVfdmFsdWUgKTsKCQkJCWlmIC
ggZmFsc2UgIT09ICRyZXNwb25zZSApIHsKCQkJCQkkcmVzcG9uc2VbMF0gICAgICAgICAgICAgICAgICAgI
CAgICA9ICc8c3BhbiB0aXRsZT0iJyAuICRjb21tZW50X2xpbmVfbmFtZSAuICciPicgLiAkcmVzcG9uc2Vb
MF0gLiAnPC9zcGFuPic7CgkJCQkJJGNvbW1lbnRfbWV0YVsgJGNvbW1lbnRfbGluZV9uYW1lIF0gPSAkcmV
zcG9uc2U7CgkJCQl9CgkJCX0KCQl9CgoJCWlmICggY291bnQoICRjb21tZW50X21ldGEgKSA+IDAgKSB7Cg
kJCXJldHVybiAkY29tbWVudF9tZXRhOwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9IC8vI
EVuZCBnZXRaaXBNZXRhKCkuCgoKCS8qKgoJICogR2V0IHRoZSBEQVQgZmlsZSBjb250ZW50cyBhcyBhbiBh
cnJheS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRfZmlsZSAgRnVsbCBwYXRoIHRvIERBVCBmaWxlIHR
vIGRlY29kZSBhbmQgcGFyc2UuCgkgKgoJICogQHJldHVybiBhcnJheXxmYWxzZSAgQXJyYXkgb2YgREFUIG
NvbnRlbnQuIEJvb2wgZmFsc2Ugd2hlbiB1bmFibGUgdG8gcmVhZC4KCSAqLwoJcHVibGljIHN0YXRpYyBmd
W5jdGlvbiBnZXRfZGF0X2ZpbGVfYXJyYXkoICRkYXRfZmlsZSApIHsKCQlwYl9iYWNrdXBidWRkeTo6c3Rh
dHVzKCAnZGV0YWlscycsICdMb2FkaW5nIGJhY2t1cCBkYXQgZmlsZS4nICk7CgoJCWlmICggZmlsZV9leGl
zdHMoICRkYXRfZmlsZSApICkgewoJCQkkYmFja3VwZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCAkZGF0X2
ZpbGUgKTsKCQl9IGVsc2UgeyAvLyBNaXNzaW5nLgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb
3InLCAnRXJyb3IgIzkwMDM6IEJhY2t1cEJ1ZGR5IGRhdGEgZmlsZSAoYmFja3VwYnVkZHlfZGF0LnBocCkg
bWlzc2luZyBvciB1bnJlYWRhYmxlLiBUaGVyZSBtYXkgYmUgYSBwcm9ibGVtIHdpdGggdGhlIGJhY2t1cCB
maWxlLCB0aGUgZmlsZXMgY291bGQgbm90IGJlIGV4dHJhY3RlZCAoeW91IG1heSBtYW51YWxseSBleHRyYW
N0IHRoZSB6aXAgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeSB0byBtYW51YWxseSBkbyB0aGlzIHBvcnRpb24gb
2YgcmVzdG9yZSksIG9yIHRoZSBmaWxlcyB3ZXJlIGRlbGV0ZWQgYmVmb3JlIHRoaXMgcG9ydGlvbiBvZiB0
aGUgcmVzdG9yZSB3YXMgcmVhY2hlZC4gIFN0YXJ0IHRoZSBpbXBvcnQgcHJvY2VzcyBvdmVyIG9yIHRyeSB
tYW51YWxseSBleHRyYWN0aW5nICh1bnppcHBpbmcpIHRoZSBmaWxlcyB0aGVuIHN0YXJ0aW5nIG92ZXIuIF
Jlc3RvcmUgd2lsbCBub3QgY29udGludWUgdG8gcHJvdGVjdCBpbnRlZ3JpdHkgb2YgYW55IGV4aXN0aW5nI
GRhdGEuJyApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkvLyBVbnNlcmlhbGl6ZSBkYXRhOyBJZiBpdCBm
YWlscyBpdCB0aGVuIGRlY29kZXMgdGhlIG9ic2N1ZmF0ZWQgZGF0YSB0aGVuIHVuc2VyaWFsaXplcyBpdC4
gKG5ldyBkYXQgZmlsZSBtZXRob2Qgc3RhcnRpbmcgYXQgMi4wKS4KCQkkcmV0dXJuID0gISBpc19zZXJpYW
xpemVkKCAkYmFja3VwZGF0YSApID8gZmFsc2UgOiB1bnNlcmlhbGl6ZSggJGJhY2t1cGRhdGEgKTsKCQlpZ
iAoIGZhbHNlID09PSAkcmV0dXJuICkgewoJCQkvLyBTa2lwIGZpcnN0IGxpbmUuCgkJCSRzZWNvbmRfbGlu
ZV9wb3MgPSBzdHJwb3MoICRiYWNrdXBkYXRhLCAiXG4iICkgKyAxOwoJCQkkYmFja3VwZGF0YSAgICAgID0
gc3Vic3RyKCAkYmFja3VwZGF0YSwgJHNlY29uZF9saW5lX3BvcyApOwoKCQkJLy8gRGVjb2RlIGJhY2sgaW
50byBhbiBhcnJheS4KCQkJJHJldHVybiA9IHVuc2VyaWFsaXplKCBiYXNlNjRfZGVjb2RlKCAkYmFja3VwZ
GF0YSApICk7CgkJfQoKCQlpZiAoICEgaXNfYXJyYXkoICRyZXR1cm4gKSApIHsgLy8gSW52YWxpZCBEQVQg
Y29udGVudC4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICM1NDU1NDUuIFV
uYWJsZSB0byByZWFkL2RlY29kZSBEQVQgZmlsZS4nICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXBiX2
JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1N1Y2Nlc3NmdWxseSBsb2FkZWQgYmFja3VwIGRhd
CBmaWxlIGAnIC4gJGRhdF9maWxlIC4gJ2AuJyApOwoJCSRyZXR1cm5fY2Vuc29yZWQgICAgICAgICAgICAg
ICAgPSAkcmV0dXJuOwoJCSRyZXR1cm5fY2Vuc29yZWRbJ2RiX3Bhc3N3b3JkJ10gPSAnKkhJRERFTionOwo
JCSRyZXR1cm5fY2Vuc29yZWQgICAgICAgICAgICAgICAgPSBwcmludF9yKCAkcmV0dXJuX2NlbnNvcmVkLC
B0cnVlICk7CgkJJHJldHVybl9jZW5zb3JlZCAgICAgICAgICAgICAgICA9IHN0cl9yZXBsYWNlKCBhcnJhe
SggIlxuIiwgIlxyIiApLCAnOyAnLCAkcmV0dXJuX2NlbnNvcmVkICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0
YXR1cyggJ2RldGFpbHMnLCAnREFUIGNvbnRlbnRzOiAnIC4gJHJldHVybl9jZW5zb3JlZCApOwoJCXJldHV
ybiAkcmV0dXJuOwoJfSAvLyBFbmQgZ2V0X2RhdF9maWxlX2FycmF5KCkuCgoKCS8qKgoJICogTGF0ZXN0IH
ZlcnNpb24gaW5mby4gQXJyYXkgb2YgbGF0ZXN0IG1ham9yLG1pbm9yLiBGYWxzZSBvbiBmYWlsIHRvIGdld
C4KCSAqCgkgKiBAcGFyYW0gYm9vbCAkYnlwYXNzX2NhY2hlICBCeXBhc3MgY2FjaGUuCgkgKgoJICogQHJl
dHVybiBzdHJpbmd8ZmFsc2UgIEJhY2t1cEJ1ZGR5IFZlcnNpb24gb3IgZmFsc2UuCgkgKi8KCXB1YmxpYyB
zdGF0aWMgZnVuY3Rpb24gZGV0ZXJtaW5lTGF0ZXN0VmVyc2lvbiggJGJ5cGFzc19jYWNoZSA9IGZhbHNlIC
kgewoJCSRsYXRlc3RfYmFja3VwYnVkZHlfdmVyc2lvbl9jYWNoZV9taW51dGVzID0gNjAgKiAxMjsgLy8gR
GVmaW5lIGhvdyBtYW55IG1pbnV0ZXMgdG8gY2FjaGUgdGhlIGxhdGVzdCBiYWNrdXBidWRkeSB2ZXJzaW9u
IG51bWJlci4KCgkJZnVuY3Rpb24gcGJfYmFja3VwYnVkZHlfc3BsaXQyKCAkc3RyaW5nLCAkbmVlZGxlLCA
kbnRoICkgewoJCQkkbWF4ID0gc3RybGVuKCAkc3RyaW5nICk7CgkJCSRuICAgPSAwOwoJCQlmb3IgKCAkaS
A9IDA7JGkgPCAkbWF4OyRpKysgKSB7CgkJCQlpZ
iAoICRzdHJpbmdbICRpIF0gPT0gJG5lZWRsZSApIHsKCQkJCQkkbisrOwoJCQkJCWlmICggJG4gPj0gJG50
aCApIHsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfQoJCQl9CgkJCSRhcnJbXSA9IHN1YnN0ciggJHN0cml
uZywgMCwgJGkgKTsKCQkJJGFycltdID0gc3Vic3RyKCAkc3RyaW5nLCAkaSArIDEsICRtYXggKTsKCQkJcm
V0dXJuICRhcnI7CgkJfQoKCQlpZiAoIHRydWUgPT09ICRieXBhc3NfY2FjaGUgKSB7CgkJCSRsYXRlc3RfY
mFja3VwYnVkZHlfdmVyc2lvbiA9IGZhbHNlOwoJCX0gZWxzZSB7CgkJCSRsYXRlc3RfYmFja3VwYnVkZHlf
dmVyc2lvbiA9IGdldF90cmFuc2llbnQoICdwYl9iYWNrdXBidWRkeV9sYXRlc3RfdmVyc2lvbicgKTsKCQl
9CgoJCWlmICggZmFsc2UgPT09ICRsYXRlc3RfYmFja3VwYnVkZHlfdmVyc2lvbiB8fCAhIGlzX2FycmF5KC
AkbGF0ZXN0X2JhY2t1cGJ1ZGR5X3ZlcnNpb24gKSApIHsKCQkJJHJlc3BvbnNlID0gd3BfcmVtb3RlX2dld
CgKCQkJCSdodHRwOi8vYXBpLml0aGVtZXMuY29tL3Byb2R1Y3QvdmVyc2lvbj9hcGlrZXk9aXhobzdkazBw
MjQ0bjBvYiZwYWNrYWdlPWJhY2t1cGJ1ZGR5JmNoYW5uZWw9c3RhYmxlJywgYXJyYXkoCgkJCQkJJ21ldGh
vZCcgICAgICA9PiAnR0VUJywKCQkJCQkndGltZW91dCcgICAgID0+IDcsCgkJCQkJJ3JlZGlyZWN0aW9uJy
A9PiAzLAoJCQkJCSdodHRwdmVyc2lvbicgPT4gJzEuMCcsCgkJCQkJLy8gJ2Jsb2NraW5nJyA9PiB0cnVlL
AoJCQkJCSdoZWFkZXJzJyAgICAgPT4gYXJyYXkoKSwKCQkJCQknYm9keScgICAgICAgID0+IG51bGwsCgkJ
CQkJJ2Nvb2tpZXMnICAgICA9PiBhcnJheSgpLAoJCQkJKQoJCQkpOwoJCQlpZiAoIGlzX3dwX2Vycm9yKCA
kcmVzcG9uc2UgKSApIHsKCQkJCSRsYXRlc3RfYmFja3VwYnVkZHlfdmVyc2lvbiA9IGFycmF5KCAwLCAwIC
k7IC8vIFNldCB0byAwIGZvciB0cmFuc2llbnQgdG8gcHJldmVudCBoaXR0aW5nIHNlcnZlciBhZ2FpbiBmb
3IgYSBiaXQgc2luY2Ugc29tZXRoaW5nIHdlbnQgd3JvbmcuCgkJCX0gZWxzZSB7CgkJCQkkbWlub3JfdmVy
c2lvbiAgICAgICAgICAgICAgPSAkcmVzcG9uc2VbJ2JvZHknXTsKCQkJCSRtYWpvcl92ZXJzaW9uICAgICA
gICAgICAgICA9IHBiX2JhY2t1cGJ1ZGR5X3NwbGl0MiggJG1pbm9yX3ZlcnNpb24sICcuJywgMyApOwoJCQ
kJJG1ham9yX3ZlcnNpb24gICAgICAgICAgICAgID0gJG1ham9yX3ZlcnNpb25bMF07CgkJCQkkbGF0ZXN0X
2JhY2t1cGJ1ZGR5X3ZlcnNpb24gPSBhcnJheSggJG1pbm9yX3ZlcnNpb24sICRtYWpvcl92ZXJzaW9uICk7
CgkJCX0KCQkJc2V0X3RyYW5zaWVudCggJ3BiX2JhY2t1cGJ1ZGR5X2xhdGVzdF92ZXJzaW9uJywgJGxhdGV
zdF9iYWNrdXBidWRkeV92ZXJzaW9uLCA2MCAqICRsYXRlc3RfYmFja3VwYnVkZHlfdmVyc2lvbl9jYWNoZV
9taW51dGVzICk7CgkJfSAvLyBlbmQgbm90IGNhY2hlZC4KCgkJaWYgKCAwID09ICRsYXRlc3RfYmFja3VwY
nVkZHlfdmVyc2lvblswXSAmJiAwID09ICRsYXRlc3RfYmFja3VwYnVkZHlfdmVyc2lvblsxXSApIHsgLy8g
U2VydmVyIG5vdCByZXNwb25kaW5nLgoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlyZXR1cm4gJGxhdGVzdF9
iYWNrdXBidWRkeV92ZXJzaW9uOwoKCX0gLy8gRW5kIGRldGVybWluZUxhdGVzdFZlcnNpb24oKS4KCgoJLy
oqCgkgKiBSZW5kZXJzIGltcG9ydGJ1ZGR5IG9uIHRoaXMgc2VydmVyLgoJICoKCSAqIEBwYXJhbSBzdHJpb
mcgJHBhc3N3b3JkICAgICAgICAgICAgICAgSW1wb3J0QnVkZHkgUGFzc3dvcmQuCgkgKiBAcGFyYW0gc3Ry
aW5nICRiYWNrdXBfZmlsZSAgICAgICAgICAgIEZ1bGwgZmlsZW5hbWUgd2l0aCBwYXRoIHRvIGJhY2t1cCB
maWxlIHRvIGltcG9ydC4KCSAqIEBwYXJhbSBzdHJpbmcgJGFkZGl0aW9uYWxfc3RhdGVfaW5mbyAgQXJyYX
kgb2YgYWRkaXRpb25hbCBzdGF0ZSBpbmZvcm1hdGlvbiB0byBtZXJnZSBpbnRvIHN0YXRlIGFycmF5LCBzd
WNoIGFzIHNlc3Npb24gdG9rZW5zLgoJICogQHBhcmFtIGJvb2wgICAkZG9fY2xlYW51cCAgICAgICAgICAg
ICBEZXByZWNhdGVkLgoJICoKCSAqIEByZXR1cm4gc3RyaW5nfGFycmF5ICBJZiBzdHJpbmcgdGhlbiBpbXB
vcnRidWRkeSBzZXJpYWwuIElmIGFycmF5IHRoZW4gYW4gZXJyb3IgaGFzIGJlZW4gZW5jb3VudGVyZWQuIE
FycmF5IGZvcm1hdDogYXJyYXkoIGZhbHNlLCAnRXJyb3IgbWVzc2FnZS4nICkuCgkgKi8KCXB1YmxpYyBzd
GF0aWMgZnVuY3Rpb24gZGVwbG95bWVudEltcG9ydEJ1ZGR5KCAkcGFzc3dvcmQsICRiYWNrdXBfZmlsZSwg
JGFkZGl0aW9uYWxfc3RhdGVfaW5mbyA9ICcnLCAkZG9fY2xlYW51cCA9IHRydWUgKSB7CgkJaWYgKCAhIGZ
pbGVfZXhpc3RzKCAkYmFja3VwX2ZpbGUgKSApIHsKCQkJJGVycm9yID0gJ0Vycm9yICM0Mzg0ODM3ODogQm
Fja3VwIGZpbGUgYCcgLiAkYmFja3VwX2ZpbGUgLiAnYCBub3QgZm91bmQgdXBsb2FkZWQuJzsKCQkJcGJfY
mFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJGVycm9yICk7CgkJCXJldHVybiBhcnJheSggZmFsc2Us
ICRlcnJvciApOwoJCX0KCgkJJGJhY2t1cF9zZXJpYWwgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRfc2VyaWF
sX2Zyb21fZmlsZSggJGJhY2t1cF9maWxlICk7CgoJCSRpbXBvcnRfZmlsZV9zZXJpYWwgPSBwYl9iYWNrdX
BidWRkeTo6cmFuZG9tX3N0cmluZyggMTUgKTsKCQkkaW1wb3J0X2ZpbGVuYW1lICAgID0gJ2ltcG9ydGJ1Z
GR5LScgLiAkaW1wb3J0X2ZpbGVfc2VyaWFsIC4gJy5waHAnOwoJCWJhY2t1cGJ1ZGR5X2NvcmU6OmltcG9y
dGJ1ZGR5KCBBQlNQQVRIIC4gJGltcG9ydF9maWxlbmFtZSwgJHBhc3N3b3JkICk7CgoJCS8vIFJlbmRlciB
kZWZhdWx0IGNvbmZpZyBmaWxlIG92ZXJyaWRlcy4gT3ZlcnJyaWRlcyBkZWZhdWx0IHJlc3RvcmUucGhwIH
N0YXRlIGRhdGEuCgkJJHN0YXRlID0gYXJyYXkoKTsKCQlnbG9iYWwgJHdwZGI7CgkJJHN0YXRlWyd0eXBlJ
10gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gJ2RlcGxveSc7CgkJJHN0YXRlWydhcmNoaXZlJ10g
ICAgICAgICAgICAgICAgICAgICAgICAgID0gJGJhY2t1cF9maWxlOwoJCSRzdGF0ZVsnc2l0ZXVybCddICA
gICAgICAgICAgICAgICAgICAgICAgICA9IHByZWdfcmVwbGFjZSggJ3wvKiR8JywgJycsIHNpdGVfdXJsKC
kgKTsgLy8gU3RyaXAgdHJhaWxpbmcgc2xhc2hlcy4KCQkkc3RhdGVbJ2hvbWV1cmwnXSAgICAgICAgICAgI
CAgICAgICAgICAgICAgPSBwcmVnX3JlcGxhY2UoICd8LyokfCcsICcnLCBob21lX3VybCgpICk7IC8vIFN0
cmlwIHRyYWlsaW5nIHNsYXNoZXMuCgkJJHN0YXRlWydyZXN0b3JlRmlsZXMnXSAgICAgICAgICAgICAgICA
gICAgID0gZmFsc2U7CgkJJHN0YXRlWydtaWdyYXRlSHRhY2Nlc3MnXSAgICAgICAgICAgICAgICAgID0gZm
Fsc2U7CgkJJHN0YXRlWydyZW1vdGVfYXBpJ10gICAgICAgICAgICAgICAgICAgICAgID0gcGJfYmFja3VwY
nVkZHk6OiRvcHRpb25zWydyZW1vdGVfYXBpJ107IC8vIEZvciB1c2UgYnkgaW1wb3J0YnVkZHkgYXBpIGF1
dGguIEVuYWJsZXMgcmVtb3RlIGFwaSBpbiB0aGlzIGltcG9ydGJ1ZGR5LgoJCSRzdGF0ZVsnZGF0YWJhc2V
TZXR0aW5ncyddWydzZXJ2ZXInXSAgICAgICA9IERCX0hPU1Q7CgkJJHN0YXRlWydkYXRhYmFzZVNldHRpbm
dzJ11bJ2RhdGFiYXNlJ10gICAgID0gREJfTkFNRTsKCQkkc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnd
XNlcm5hbWUnXSAgICAgPSBEQl9VU0VSOwoJCSRzdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydwYXNzd29y
ZCddICAgICA9IERCX1BBU1NXT1JEOwoJCSRzdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydwcmVmaXgnXSA
gICAgICA9ICR3cGRiLT5wcmVmaXg7CgkJJHN0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ3JlbmFtZVByZW
ZpeCddID0gdHJ1ZTsKCgkJaWYgKCBpc19hcnJheSggJGFkZGl0aW9uYWxfc3RhdGVfaW5mbyApICkgewoJC
Qkkc3RhdGUgPSBhcnJheV9tZXJnZV9yZWN1cnNpdmUoICRzdGF0ZSwgJGFkZGl0aW9uYWxfc3RhdGVfaW5m
byApOwoJCX0KCgkJLy8gV3JpdGUgZGVmYXVsdCBzdGF0ZSBvdmVycmlkZXMuCgkJJHN0YXRlX2ZpbGUgID0
gQUJTUEFUSCAuICdpbXBvcnRidWRkeS0nIC4gJGltcG9ydF9maWxlX3NlcmlhbCAuICctc3RhdGUucGhwJz
sKCQkkZmlsZV9oYW5kbGUgPSBAZm9wZW4oICRzdGF0ZV9maWxlLCAndycgKTsKCQlpZiAoIGZhbHNlID09P
SAkZmlsZV9oYW5kbGUgKSB7CgkJCSRlcnJvciA9ICdFcnJvciAjODM4NDc4NDogVGVtcCBzdGF0ZSBmaWxl
IGlzIG5vdCBjcmVhdGFibGUvd3JpdGFibGUuIENoZWNrIHlvdXIgcGVybWlzc2lvbnMuICgnIC4gJHN0YXR
lX2ZpbGUgLiAnKSc7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRlcnJvciApOwoJCQ
lyZXR1cm4gYXJyYXkoIGZhbHNlLCAkZXJyb3IgKTsKCQl9CgkJZndyaXRlKCAkZmlsZV9oYW5kbGUsICI8P
3BocCBkaWUoJ0FjY2VzcyBEZW5pZWQuJyk7IC8vIDwhLS0gPz5cbiIgLiBiYXNlNjRfZW5jb2RlKCBqc29u
X2VuY29kZSggJHN0YXRlICkgKSApOwoJCWZjbG9zZSggJGZpbGVfaGFuZGxlICk7CgoJCSR1bmRvX2ZpbGU
gPSAnYmFja3VwYnVkZHlfZGVwbG95X3VuZG8tJyAuICRiYWNrdXBfc2VyaWFsIC4gJy5waHAnOwoJCWlmIC
ggZmFsc2UgPT09IGNvcHkoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9jbGFzc2VzL19yb
2xsYmFja191bmRvLnBocCcsIEFCU1BBVEggLiAkdW5kb19maWxlICkgKSB7CgkJCSRlcnJvciA9ICdFcnJv
ciAjMzI4OTQ0NzogVW5hYmxlIHRvIHdyaXRlIHVuZG8gZmlsZSBgJyAuIEFCU1BBVEggLiAkdW5kb19maWx
lIC4gJ2AuIENoZWNrIHBlcm1pc3Npb25zIG9uIGRpcmVjdG9yeS4nOwoJCQlwYl9iYWNrdXBidWRkeTo6c3
RhdHVzKCAnZXJyb3InLCAkZXJyb3IgKTsKCQkJcmV0dXJuIGFycmF5KCBmYWxzZSwgJGVycm9yICk7CgkJf
QoKCQlyZXR1cm4gJGltcG9ydF9maWxlX3NlcmlhbDsKCgl9IC8vIEVuZCBkZXBsb3ltZW50SW1wb3J0QnVk
ZHkoKS4KCgoJLyoqCgkgKiBEZXRlY3QgTGlrZWx5IEhpZ2hlc3QgRXhlY3V0aW9uIFRpbWUKCSAqCgkgKiB
AcmV0dXJuIGludCAgSGlnaGVzdCBleGVjdXRpb24gdGltZS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdG
lvbiBkZXRlY3RMaWtlbHlIaWdoZXN0RXhlY3V0aW9uVGltZSgpIHsKCQkkZGV0ZWN0ZWRfZXhlY3V0aW9uI
D0gYmFja3VwYnVkZHlfY29yZTo6ZGV0ZWN0TWF4RXhlY3V0aW9uVGltZSgpOwoJCWlmICggcGJfYmFja3Vw
YnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWRfcGhwX3J1bnRpbWUnXSA+ICRkZXRlY3RlZF9leGVjdXRpb24gKSB
7CgkJCSRkZXRlY3RlZF9leGVjdXRpb24gPSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3Rlc3RlZF9waH
BfcnVudGltZSddOwoJCX0KCQlyZXR1cm4gJGRldGVjdGVkX2V4ZWN1dGlvbjsKCX0gLy8gRW5kIGRldGVjd
Expa2VseUhpZ2hlc3RFeGVjdXRpb25UaW1lKCkuCgoKCgkvKioKCSAqIEF0dGVtcHQgdG8gZGV0ZWN0IHRo
ZSBtYXggZXhlY3V0aW9uIHRpbWUgYWxsb3dlZCBieSBQSFAuIERlZmF1bHRzIHRvIDMwIGlmIHVuYWJsZSB
0byBkZXRlY3Qgb3IgYSBzdXNwaWNpb3VzIHZhbHVlIGlzIGRldGVjdGVkLgoJICogTk9URTogVGhpcyBET0
VTIHRha2UgaW50byBhY2NvdW50IHRoZSBURVNURUQgUEhQIHJ1bnRpbWUgSUYgaXRzIHZhbHVlIGlzIGF2Y
WlsYWJsZS4gTGVzc2VyIG9mIHR3byB2YWx1ZXMgb2YgdXNlZC4KCSAqIElNUE9SVEFOVDogVGhpcyBkb2Vz
IE5PVCB0YWtlIGludG8gYWNjb3VudCB1c2VyLXNwZWNpZmllZCBvdmVycmlkZSB2aWEgc2V0dGluZ3MgcGF
nZS4gRm9yIHRoYXQsIHVzZSBhZGp1c3RlZE1heEV4ZWN1dGlvblRpbWUoKS4KCSAqLwoJcHVibGljIHN0YX
RpYyBmdW5jdGlvbiBkZXRlY3RNYXhFeGVjdXRpb25UaW1lKCkgewoJCSRkZXRlY3RlZF9tYXhfZXhlY3V0a
W9uX3RpbWUgPSBzdHJfaXJlcGxhY2UoICdzJywgJycsIGluaV9nZXQoICdtYXhfZXhlY3V0aW9uX3RpbWUn
ICkgKTsKCQlpZiAoIGlzX251bWVyaWMoICRkZXRlY3RlZF9tYXhfZXhlY3V0aW9uX3RpbWUgKSApIHsKCQk
JJGRldGVjdGVkX21heF9leGVjdXRpb25fdGltZSA9ICRkZXRlY3RlZF9tYXhfZXhlY3V0aW9uX3RpbWU7Cg
kJfSBlbHNlIHsKCQkJJGRldGVjdGVkX21heF9leGVjdXRpb25fdGltZSA9IDMwOwoJCX0KCQlpZiAoICRkZ
XRlY3RlZF9tYXhfZXhlY3V0aW9uX3RpbWUgPD0gMCApIHsKCQkJJGRldGVjdGVkX21heF9leGVjdXRpb25f
dGltZSA9IDMwOwoJCX0KCgkJaWYgKCBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWR
fcGhwX3J1bnRpbWUnXSApICYmICggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWRfcGhwX3J1bn
RpbWUnXSA+IDAgKSApIHsgLy8gQ2hlY2sgaXNzZXQgZm9yIGltcG9ydGJ1ZGR5LgoJCQlpZiAoIHBiX2JhY
2t1cGJ1ZGR5Ojokb3B0aW9uc1sndGVzdGVkX3BocF9ydW50aW1lJ10gPCAkZGV0ZWN0ZWRfbWF4X2V4ZWN1
dGlvbl90aW1lICkgewoJCQkJJGRldGVjdGVkX21heF9leGVjdXRpb25fdGltZSA9IHBiX2JhY2t1cGJ1ZGR
5Ojokb3B0aW9uc1sndGVzdGVkX3BocF9ydW50aW1lJ107CgkJCX0KCQl9CgoJCXJldHVybiAkZGV0ZWN0ZW
RfbWF4X2V4ZWN1dGlvbl90aW1lOwoJfSAvLyBFbmQgZGV0ZWN0TWF4RXhlY3V0aW9uVGltZSgpLgoKCgoJL
yoqCgkgKiBTYW1lIGFzIGRldGVjdGVkTWF4RXhlY3V0aW9uVGltZSBFWENFUFQgdGFrZXMgaW50byBhY2Nv
dW50IHVzZXIgb3ZlcnJpZGVkIHZhbHVlIGluIHNldHRpbmdzIChpZiBhbnkpLi4KCSAqCgkgKiBAcGFyYW0
gaW50ICRtYXggIE1heCBFeGVjdXRpb24gdGltZSAoaW4gc2Vjb25kcykuCgkgKgoJICogQHJldHVybiBpbn
QgIEFkanVzdGVkIG1heCBleGVjdXRpb24gdGltZS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhZ
Gp1c3RlZE1heEV4ZWN1dGlvblRpbWUoICRtYXggPSAnJyApIHsKCQlpZiAoICcnID09ICRtYXggKSB7CgkJ
CWlmICggISBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydtYXhfZXhlY3V0aW9uX3RpbWUnXSA
pICkgewoJCQkJJG1heCA9ICczMCc7CgkJCX0gZWxzZSB7CgkJCQkkbWF4ID0gcGJfYmFja3VwYnVkZHk6Oi
RvcHRpb25zWydtYXhfZXhlY3V0aW9uX3RpbWUnXTsKCQkJfQoJCX0KCgkJJGRldGVjdGVkID0gc2VsZjo6Z
GV0ZWN0TWF4RXhlY3V0aW9uVGltZSgpOwoJCWlmICggJycgIT0gJG1heCAmJiBpc19udW1lcmljKCAkbWF4
ICkgJiYgJG1heCA+IDAgKSB7IC8vIElmIHNldCBhbmQgYSBudW1iZXIsIHVzZSB1c2VyLXNwZWNpZmllZCB
ydW50aW1lLgoJCQlyZXR1cm4gJG1heDsKCQl9IGVsc2UgeyAvLyBOb3RoaW5nIHVzZXItc3BlY2lmaWVkIH
NvIHVzZXIgZGV0ZWN0ZWQgdmFsdWUuCgkJCXJldHVybiAkZGV0ZWN0ZWQ7CgkJfQoJfSAvLyBFbmQgYWRqd
XN0ZWRNYXhFeGVjdXRpb25UaW1lKCkuCgoKCS8q
KgoJICogRXNjYXBlIFNRTCB1c2luZyBlaXRoZXIgbXlzcWwgb3IgbXlzcWxpIGJhc2VkIG9uIHdoaWNoZXZ
lciBXb3JkUHJlc3MgaXMgdXNpbmcuCgkgKiBXUCAzLjkgaW50cm9kdWNpbmcgbXlzcWxpIHN1cHBvcnQuCg
kgKgoJICogQHBhcmFtIHN0cmluZyAkc3FsICBTdHJpbmcgdG8gZXNjYXBlLgoJICoKCSAqIEByZXR1cm4gc
3RyaW5nICBFc2NhcGVkIHN0cmluZy4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkYkVzY2FwZSgg
JHNxbCApIHsKCQlnbG9iYWwgJHdwZGI7CgkJaWYgKCBpc3NldCggJHdwZGItPnVzZV9teXNxbGkgKSAmJiA
oIHRydWUgPT09ICR3cGRiLT51c2VfbXlzcWxpICkgKSB7IC8vIFBvc3NpYmxlIHBvc3QgV1AgMy45CgkJCX
JldHVybiBteXNxbGlfcmVhbF9lc2NhcGVfc3RyaW5nKCAkd3BkYi0+ZGJoLCAkc3FsICk7CgkJfSBlbHNlI
HsKCQkJcmV0dXJuIG15c3FsX3JlYWxfZXNjYXBlX3N0cmluZyggJHNxbCApOwoJCX0KCX0gLy8gRW5kIGRi
RXNjYXBlKCkuCgoKCgkvKioKCSAqIFZlcmlmaWVzIEFKQVggYWNjZXNzLgoJICoKCSAqICEhIElNUE9SVEF
OVCBGT1IgQU5ZIEFKQVggUEFHRVMgRk9SIFNFQ1VSSVRZICEhIFZlcmlmeSB1c2VyIGlzIGJvdGggbG9nZ2
VkIGludG8gYWRtaW4gYW5kIGhhcyBhcHByb3ByaWF0ZSByb2xlIGFjY2VzcyB0byBCYWNrdXBCdWRkeS4KC
SAqCgkgKiBAcmV0dXJuIGRpZXx0cnVlICBPbiBmYWlsdXJlLCBkaWVzL2hhbHRzIFBIUCBzY3JpcHQgZm9y
IHNlY3VyaXR5LiAgT24gYWNjZXNzIGZyYW50ZWQsIHJldHVybnMgdHJ1ZS4KCSAqLwoJcHVibGljIHN0YXR
pYyBmdW5jdGlvbiB2ZXJpZnlBamF4QWNjZXNzKCkgewoJCWlmICggISBpc19hZG1pbigpICkgewoJCQlkaW
UoICdFcnJvciAjMjM4OTgzMy4gQWNjZXNzIERlbmllZC4nICk7CgkJfQoJCWlmICggISBjdXJyZW50X3VzZ
XJfY2FuKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3JvbGVfYWNjZXNzJ10gKSApIHsKCQkJZGllKCAn
RXJyb3IgIzIzNzM4MjMuIEFjY2VzcyBEZW5pZWQuJyApOwoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9IC8vIEV
uZCB2ZXJpZnlBamF4QWNjZXNzKCkuCgoJLyoqCgkgKiBHZXQgQmFja3VwQnVkZHkgTm90aWZpY2F0aW9ucw
oJICoKCSAqIEByZXR1cm4gYXJyYXkgIE5vdGlmaWNhdGlvbnMgb3B0aW9uLgoJICovCglwdWJsaWMgc3Rhd
GljIGZ1bmN0aW9uIGdldE5vdGlmaWNhdGlvbnMoKSB7CgkJJGRlZmF1bHQgPSBhcnJheSgpOwoJCXJldHVy
biBnZXRfc2l0ZV9vcHRpb24oIGJhY2t1cGJ1ZGR5X2NvbnN0YW50czo6Tk9USUZJQ0FUSU9OU19PUFRJT05
fU0xVRywgJGRlZmF1bHQsIGZhbHNlICk7Cgl9IC8vIEVuZCBnZXROb3RpZmljYXRpb25zKCkuCgoKCS8qKg
oJICogVXBkYXRlIE5vdGlmaWNhdGlvbnMgaW4gU2l0ZSBPcHRpb25zCgkgKgoJICogQHBhcmFtIGFycmF5I
CRub3RpZmljYXRpb25BcnJheSAgTmV3IG5vdGlmaWNhdGlvbnMgYXJyYXkuCgkgKi8KCXB1YmxpYyBzdGF0
aWMgZnVuY3Rpb24gcmVwbGFjZU5vdGlmaWNhdGlvbnMoICRub3RpZmljYXRpb25BcnJheSApIHsKCQkvLyB
TYXZlLgoJCWFkZF9zaXRlX29wdGlvbiggYmFja3VwYnVkZHlfY29uc3RhbnRzOjpOT1RJRklDQVRJT05TX0
9QVElPTl9TTFVHLCAkbm90aWZpY2F0aW9uQXJyYXksICcnLCAnbm8nICk7CgkJdXBkYXRlX3NpdGVfb3B0a
W9uKCBiYWNrdXBidWRkeV9jb25zdGFudHM6Ok5PVElGSUNBVElPTlNfT1BUSU9OX1NMVUcsICRub3RpZmlj
YXRpb25BcnJheSApOwoJfSAvLyBFbmQgcmVwbGFjZU5vdGlmaWNhdGlvbnMoKS4KCgoJLyoqCgkgKiBEZXR
lcm1pbmUgYmFja3VwIHR5cGUgZnJvbSBmaWxlIHdoZXRoZXIgYnkgZmlsZW5hbWUgb3IgZW1iZWRkZWQgZm
lsZW9wdGlvbnMuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkZmlsZSAgICAgICAgICAgICAgRnVsbCBmaWxlb
mFtZSBwYXRoIG9mIGJhY2t1cCB0byBkZXRlcm1pbmUgdHlwZSBvZi4KCSAqIEBwYXJhbSBib29sICAgJHF1
aWV0ICAgICAgICAgICAgIFN1cHByZXNzIHN0YXR1cyBsb2dzLgoJICogQHBhcmFtIGJvb2wgICAkc2tpcF9
maWxlb3B0aW9ucyAgV2hlbiBmYWxzZSBpZiB0aGUgYmFja3VwIHR5cGUgY2Fubm90IGJlIGRldGVjdGVkIH
ZpYSBmaWxlbmFtZSB0aGVuIHRyeSB0byBvcGVuIHRoZSBmaWxlb3B0aW9ucyBmaWxlIHRvIGdldCBtb3JlI
GRldGFpbHMuIFNldCB0cnVlIGZvciBub24tY3J1Y2lhbCBjYXNlcyBmb3Igc3BlZWQuCgkgKgoJICogQHJl
dHVybiBzdHJpbmcgIFR5cGUgb2YgYmFja3VwIChlZyBmdWxsLCBkYikuIElmIHVua25vd24sIGVtcHR5IHN
0cmluZyAnJyByZXR1cm5lZC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRCYWNrdXBUeXBlRn
JvbUZpbGUoICRmaWxlLCAkcXVpZXQgPSBmYWxzZSwgJHNraXBfZmlsZW9wdGlvbnMgPSBmYWxzZSApIHsKC
gkJLy8gSWYgbm90IGEgemlwIGZpbGUsIHJldHVybiBibGFuay4KCQlpZiAoICd6aXAnICE9IHN0cnRvbG93
ZXIoIHN1YnN0ciggJGZpbGUsIC0zICkgKSApIHsKCQkJcmV0dXJuICcnOwoJCX0KCgkJaWYgKCBmYWxzZSA
9PT0gJHF1aWV0ICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEZXRlY3Rpbm
cgYmFja3VwIHR5cGUgaWYgcG9zc2libGUuJyApOwoJCX0KCgkJLy8gVHJ5IHRvIGZpZ3VyZSBvdXQgdHlwZ
SB2aWEgZmlsZW5hbWUuCgkJaWYgKCBzdHJpc3RyKCAkZmlsZSwgJy1kYi0nICkgIT09IGZhbHNlICkgewoJ
CQkkdHlwZSA9ICdkYic7CgkJfSBlbHNlaWYgKCBzdHJpc3RyKCAkZmlsZSwgJy1mdWxsLScgKSAhPT0gZmF
sc2UgKSB7CgkJCSR0eXBlID0gJ2Z1bGwnOwoJCX0gZWxzZWlmICggc3RyaXN0ciggJGZpbGUsICctZmlsZX
MtJyApICE9PSBmYWxzZSApIHsKCQkJJHR5cGUgPSAnZmlsZXMnOwoJCX0gZWxzZWlmICggc3RyaXN0ciggJ
GZpbGUsICctdGhlbWVzLScgKSAhPT0gZmFsc2UgKSB7CgkJCSR0eXBlID0gJ3RoZW1lcyc7CgkJfSBlbHNl
aWYgKCBzdHJpc3RyKCAkZmlsZSwgJy1tZWRpYS0nICkgIT09IGZhbHNlICkgewoJCQkkdHlwZSA9ICdtZWR
pYSc7CgkJfSBlbHNlaWYgKCBzdHJpc3RyKCAkZmlsZSwgJy1wbHVnaW5zLScgKSAhPT0gZmFsc2UgKSB7Cg
kJCSR0eXBlID0gJ3BsdWdpbnMnOwoJCX0gZWxzZWlmICggZmFsc2UgIT09IHN0cmlzdHIoICRmaWxlLCAna
W1wb3J0YnVkZHkucGhwJyApICkgewoJCQkkdHlwZSA9ICdJbXBvcnRCdWRkeSBUb29sJzsKCQl9IGVsc2Vp
ZiAoIHN0cmlzdHIoICRmaWxlLCAnLWV4cG9ydC0nICkgIT09IGZhbHNlICkgewoJCQkkdHlwZSA9ICdleHB
vcnQnOwoJCX0KCgkJaWYgKCBpc3NldCggJHR5cGUgKSApIHsKCQkJaWYgKCBmYWxzZSA9PT0gJHF1aWV0IC
kgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGV0ZWN0ZWQgYmFja3VwIHR5c
GUgYXMgYCcgLiAkdHlwZSAuICdgIHZpYSBmaWxlbmFtZS4nICk7CgkJCX0KCQkJcmV0dXJuICR0eXBlOwoJ
CX0KCgkJLy8gU2VlIGlmIHdlIGNhbiBnZXQgYmFja3VwIHR5cGUgZnJvbSBmaWxlb3B0aW9ucyBkYXRhLgo
JCWlmICggZmFsc2UgPT09ICRza2lwX2ZpbGVvcHRpb25zICkgewoJCQkkZmlsZW9wdGlvbnNfZmlsZSA9IG
JhY2t1cGJ1ZGR5X2NvcmU6OmdldExvZ0RpcmVjdG9yeSgpIC4gJ2ZpbGVvcHRpb25zLycgLiBiYWNrdXBid
WRkeV9jb3JlOjpnZXRfc2VyaWFsX2Zyb21fZmlsZSggJGZpbGUgKSAuICcudHh0JzsKCQkJaWYgKCBmaWxl
X2V4aXN0cyggJGZpbGVvcHRpb25zX2ZpbGUgKSApIHsKCQkJCXJlcXVpcmVfb25jZSBwYl9iYWNrdXBidWR
keTo6cGx1Z2luX3BhdGgoKSAuICcvY2xhc3Nlcy9maWxlb3B0aW9ucy5waHAnOwoJCQkJJGJhY2t1cF9vcH
Rpb25zID0gbmV3IHBiX2JhY2t1cGJ1ZGR5X2ZpbGVvcHRpb25zKCAkZmlsZW9wdGlvbnNfZmlsZSwgdHJ1Z
SwgdHJ1ZSApOwoJCQkJaWYgKCBmaWxlX2V4aXN0cyggJGZpbGVvcHRpb25zX2ZpbGUgKSApIHsKCQkJCQkk
cmVzdWx0ID0gJGJhY2t1cF9vcHRpb25zLT5pc19vaygpOwoJCQkJCWlmICggdHJ1ZSAhPT0gJHJlc3VsdCA
pIHsKCQkJCQkJLy8gcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ3dhcm5pbmcnLCAnV2FybmluZyBvbmx5Oi
BVbmFibGUgdG8gb3BlbiBmaWxlb3B0aW9ucyBmaWxlIGAnIC4gJGZpbGVvcHRpb25zRmlsZSAuICdgLiBUa
GlzIG1heSBiZSBub3JtYWwuJyApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCWlmICggaXNzZXQoICRiYWNrdXBf
b3B0aW9ucy0+b3B0aW9uc1snaW50ZWdyaXR5J11bJ2RldGVjdGVkX3R5cGUnXSApICkgewoJCQkJCQkJaWY
gKCBmYWxzZSA9PT0gJHF1aWV0ICkgewoJCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaW
xzJywgJ0RldGVjdGVkIGJhY2t1cCB0eXBlIGFzIGAnIC4gJGJhY2t1cF9vcHRpb25zLT5vcHRpb25zWydpb
nRlZ3JpdHknXVsnZGV0ZWN0ZWRfdHlwZSddIC4gJ2AgdmlhIGludGVncml0eSBjaGVjayBkYXRhLicgKTsK
CQkJCQkJCX0KCQkJCQkJCXJldHVybiAkYmFja3VwX29wdGlvbnMtPm9wdGlvbnNbJ2ludGVncml0eSddWyd
kZXRlY3RlZF90eXBlJ107CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCX0KCQl9CgoJCXJldHVybiAnJzsgLy
8gVHlwZSB1bmtub3duLgoKCX0gLy8gRW5kIGdldEJhY2t1cFR5cGVGcm9tRmlsZSgpLgoKCgkvKioKCSAqI
ENhbGN1bGF0ZXMgdGhlIGJhY2t1cCB6aXAgZmlsZW5hbWUuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc2Vy
aWFsICAgQmFja3VwIFNlcmlhbC4KCSAqIEBwYXJhbSBzdHJpbmcgJHR5cGUgICAgIFR5cGUgb2YgYmFja3V
wLgoJICogQHBhcmFtIGludCAgICAkcHJvZmlsZSAgUHJvZmlsZSBJRC4KCSAqCgkgKiBAcmV0dXJuIHN0cm
luZyAgQ2FsY3VsYXRlZCBmaWxlbmFtZS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWxjdWxhd
GVBcmNoaXZlRmlsZW5hbWUoICRzZXJpYWwsICR0eXBlLCAkcHJvZmlsZSApIHsKCgkJLy8gUHJlcGFyZSBz
b21lIHZhbHVlcyBmb3Igc2V0dGluZyB1cCB0aGUgYmFja3VwIGRhdGEuCgkJJHNpdGV1cmxfc3RyaXBwZWQ
gPSBiYWNrdXBidWRkeV9jb3JlOjpiYWNrdXBfcHJlZml4KCk7CgoJCS8vIEFkZCBwcm9maWxlIHRvIGZpbG
VuYW1lIGlmIHNldCBpbiBvcHRpb25zIGFuZCBleGlzdHMuCgkJaWYgKCBlbXB0eSggcGJfYmFja3VwYnVkZ
Hk6OiRvcHRpb25zWydhcmNoaXZlX25hbWVfcHJvZmlsZSddICkgfHwgZW1wdHkoICRwcm9maWxlWyd0aXRs
ZSddICkgKSB7CgkJCSRiYWNrdXBmaWxlX3Byb2ZpbGUgPSAnJzsKCQl9IGVsc2UgewoJCQkkYmFja3VwZml
sZV9wcm9maWxlICA9IHNhbml0aXplX2ZpbGVfbmFtZSggc3RydG9sb3dlciggJHByb2ZpbGVbJ3RpdGxlJ1
0gKSApOwoJCQkkYmFja3VwZmlsZV9wcm9maWxlICA9IHN0cl9yZXBsYWNlKCAnLycsICdfJywgJGJhY2t1c
GZpbGVfcHJvZmlsZSApOwoJCQkkYmFja3VwZmlsZV9wcm9maWxlICA9IHN0cl9yZXBsYWNlKCAnXFwnLCAn
XycsICRiYWNrdXBmaWxlX3Byb2ZpbGUgKTsKCQkJJGJhY2t1cGZpbGVfcHJvZmlsZSAgPSBzdHJfcmVwbGF
jZSggJy4nLCAnXycsICRiYWNrdXBmaWxlX3Byb2ZpbGUgKTsKCQkJJGJhY2t1cGZpbGVfcHJvZmlsZSAgPS
BzdHJfcmVwbGFjZSggJyAnLCAnXycsICRiYWNrdXBmaWxlX3Byb2ZpbGUgKTsKCQkJJGJhY2t1cGZpbGVfc
HJvZmlsZSAgPSBzdHJfcmVwbGFjZSggJy0nLCAnXycsICRiYWNrdXBmaWxlX3Byb2ZpbGUgKTsKCQkJJGJh
Y2t1cGZpbGVfcHJvZmlsZSAuPSAnLSc7CgkJfQoKCQkvLyBDYWxjdWxhdGUgY3VzdG9taXphYmxlIHNlY3R
pb24gb2YgYXJjaGl2ZSBmaWxlbmFtZSAoZGF0ZSB2cyBkYXRlK3RpbWUpLgoJCWlmICggJ2RhdGV0aW1lJy
A9PT0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydhcmNoaXZlX25hbWVfZm9ybWF0J10gKSB7IC8vICJkY
XRldGltZSIgPSBEYXRlICsgdGltZS4KCQkJJGJhY2t1cGZpbGVfZGF0ZXRpbWUgPSBkYXRlKCBiYWNrdXBi
dWRkeV9jb25zdGFudHM6OkFSQ0hJVkVfTkFNRV9GT1JNQVRfREFURVRJTUUsIHBiX2JhY2t1cGJ1ZGR5Ojo
kZm9ybWF0LT5sb2NhbGl6ZV90aW1lKCB0aW1lKCkgKSApOwoJCX0gZWxzZWlmICggJ2RhdGV0aW1lMjQnID
09PSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2FyY2hpdmVfbmFtZV9mb3JtYXQnXSApIHsgLy8gImRhd
GV0aW1lIiA9IERhdGUgKyB0aW1lIGluIDI0aHIgZm9ybWF0LgoJCQkkYmFja3VwZmlsZV9kYXRldGltZSA9
IGRhdGUoIGJhY2t1cGJ1ZGR5X2NvbnN0YW50czo6QVJDSElWRV9OQU1FX0ZPUk1BVF9EQVRFVElNRTI0LCB
wYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+bG9jYWxpemVfdGltZSggdGltZSgpICkgKTsKCQl9IGVsc2VpZi
AoICd0aW1lc3RhbXAnID09PSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2FyY2hpdmVfbmFtZV9mb3JtY
XQnXSApIHsgLy8gImRhdGV0aW1lIiA9IERhdGUgKyB0aW1lIGluIDI0aHIgZm9ybWF0LgoJCQkkYmFja3Vw
ZmlsZV9kYXRldGltZSA9IHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5sb2NhbGl6ZV90aW1lKCB0aW1lKCk
gKTsKCQl9IGVsc2UgeyAvLyAiZGF0ZSIgPSBkYXRlIG9ubHkgKHRoZSBkZWZhdWx0KS4KCQkJJGJhY2t1cG
ZpbGVfZGF0ZXRpbWUgPSBkYXRlKCBiYWNrdXBidWRkeV9jb25zdGFudHM6OkFSQ0hJVkVfTkFNRV9GT1JNQ
VRfREFURSwgcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPmxvY2FsaXplX3RpbWUoIHRpbWUoKSApICk7CgkJ
fQoJCSRhcmNoaXZlX2ZpbGUgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRCYWNrdXBEaXJlY3RvcnkoKSAuICd
iYWNrdXAtJyAuICRzaXRldXJsX3N0cmlwcGVkIC4gJy0nIC4gJGJhY2t1cGZpbGVfZGF0ZXRpbWUgLiAnLS
cgLiAkYmFja3VwZmlsZV9wcm9maWxlIC4gJHR5cGUgLiAnLScgLiAkc2VyaWFsIC4gJy56aXAnOwoKCQkvL
yBNYWtlIGR1cmUgd2UgY2FuIG1ha2UgYmFja3VwIGRpciAmIGl0IGV4aXN0cyAmIGlzIHByb3RlY3RlZC4K
CQlwYl9iYWNrdXBidWRkeTo6YW50aV9kaXJlY3RvcnlfYnJvd3NpbmcoIGJhY2t1cGJ1ZGR5X2NvcmU6Omd
ldEJhY2t1cERpcmVjdG9yeSgpLCBmYWxzZSApOwoJCWlmICggISBmaWxlX2V4aXN0cyggYmFja3VwYnVkZH
lfY29yZTo6Z2V0QmFja3VwRGlyZWN0b3J5KCkgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ
2Vycm9yJywgJ0Vycm9yICM4NDg5MzQzNDogQmFja3VwIHN0b3JhZ2UgZGlyZWN0b3J5IGAnIC4gYmFja3Vw
YnVkZHlfY29yZTo6Z2V0QmFja3VwRGlyZWN0b3J5KCkgLiAnYCBkb2VzIG5vdCBleGlzdCBhbmQgdW5hYmx
lIHRvIGNyZWF0ZSBpdC4gQ2hlY2sgcGVybWlzc2lvbnMuIElmIHVzaW5nIGEgY3VzdG9tIHBhdGggdmVyaW
Z5IGl0IGlzIGNvcnJlY3QuJyApOwoJCX0KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnL
CAnQ2FsY3VsYXRlZCBhcmNoaXZlIGZpbGU6IGAnIC4gJGFyY2hpdmVfZmlsZSAuICdgLicgKTsKCQlyZXR1
cm4gJGFyY2hpdmVfZmlsZTsKCX0gLy8gRW5kIGN
hbGN1bGF0ZUFyY2hpdmVGaWxlbmFtZSgpLgoKCgkvKioKCSAqIENhbGN1bGF0ZSBjb21wYXJpc29uIGRhdG
EgZm9yIGFsbCBmaWxlcyB3aXRoaW4gYSBwYXRoLiBVc2VmdWwgZm9yIHRyYWNraW5nIGZpbGUgY2hhbmdlc
yBiZXR3ZWVuIHR3byBsb2NhdGlvbnMuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcm9vdCAgICAgICAgICAg
QUJTT0xVVEUgZnVsbCBwYXRoLgoJICogQHBhcmFtIGJvb2wgICAkZ2VuZXJhdGVfc2hhMSAgR2VuZXJhdGU
gc2hhMT8KCSAqIEBwYXJhbSBhcnJheSAgJGV4Y2x1ZGVzICAgICAgIERpcmVjdG9yaWVzIHRvIGV4Y2x1ZG
UsIFJFTEFUSVZFIHRvIHRoZSByb290LiBJbmNsdWRlIExFQURJTkcgc2xhc2ggZm9yIGVhY2ggZW50cnkuC
gkgKiBAcGFyYW0gYm9vbCAgICR1dGY4X2VuY29kZSAgICBTaG91bGQgd2UgZW5jb2RlIGFueSBmaWxlIG5h
bWVzIHRoYXQgYXJlIGluIFVURi04IGZvcm1hdD8KCSAqIEBwYXJhbSBzdHJpbmcgJHByZXBlbmRfcGF0aCA
gIFN0cmluZyBwYXRoIHRvIHByZXBlbmQgaW4gdGhlIHJlc3VsdGluZyBhcnJheSBrZXkgcmV0dXJuZWQuIE
RvZXMgbm90IGltcGFjdCBhY3R1YWwgY2FsY3VsYXRpb25zLgoJICoKCSAqIEByZXR1cm4gYXJyYXkgIE5lc
3RlZCBhcnJheSBvZiBmaWxlL2RpcmVjdG9yeSBzdHJ1Y3R1cmUuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVu
Y3Rpb24gaGFzaEdsb2IoICRyb290LCAkZ2VuZXJhdGVfc2hhMSA9IGZhbHNlLCAkZXhjbHVkZXMgPSBhcnJ
heSgpLCAkdXRmOF9lbmNvZGUgPSBmYWxzZSwgJHByZXBlbmRfcGF0aCA9ICcnICkgewoJCSRyb290ICAgIC
A9IHJ0cmltKCAkcm9vdCwgJy9cXCcgKTsgLy8gTWFrZSBzdXJlIG5vIHRyYWlsaW5nIHNsYXNoLgoJCSRle
GNsdWRlcyA9IHN0cl9yZXBsYWNlKCAkcm9vdCwgJycsICRleGNsdWRlcyApOyAvLyBNYWtlIHN1cmUgYWxs
IHJlbGF0aXZlIHRvIHRoZSByb290LgoKCQlpZiAoICEgZmlsZV9leGlzdHMoICRyb290ICkgKSB7CgkJCXB
iX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ1dhcm5pbmcgIzg5NDk4MzQ5MzQ6IFVuYWJsZS
B0byByZWFkIGhhc2hHbG9iIG9mIGRpciBhcyBpdCBkb2VzIG5vdCBleGlzdDogYCcgLiAkcm9vdCAuICdgL
iBTS0lQUElORyBPVkVSLicgKTsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoKCQkkZmlsZXMgICAgICAgID0g
KGFycmF5KSBwYl9iYWNrdXBidWRkeTo6JGZpbGVzeXN0ZW0tPmRlZXBzY2FuZGlyKCAkcm9vdCApOyAvLyB
BcyBvZiB2Ny4wIGNoYW5nZWQgZnJvbSBkZWVwc2NhbiB0byBkZWVwZ2xvYiB0byBnZXQgYW55IGRpcnMgb3
IgZmlsZXMgYmVnaW5uaW5nIHdpdGggYSBwZXJpb2QuCgkJJHJvb3RfbGVuICAgICA9IHN0cmxlbiggJHJvb
3QgKTsKCQkkaGFzaGVkX2ZpbGVzID0gYXJyYXkoKTsKCQlmb3JlYWNoICggJGZpbGVzIGFzICRmaWxlX2lk
ID0+ICYkZmlsZSApIHsKCQkJJG5ld19maWxlID0gc3Vic3RyKCAkZmlsZSwgJHJvb3RfbGVuICk7CgoJCQk
vLyBJZiB0aGlzIGZpbGUvZGlyZWN0b3J5IGJlZ2lucyB3aXRoIGFuIGV4Y2x1c2lvbiB0aGVuIGp1bXAgdG
8gbmV4dCBmaWxlL2RpcmVjdG9yeS4KCQkJZm9yZWFjaCAoICRleGNsdWRlcyBhcyAkZXhjbHVkZSApIHsKC
QkJCWlmICggYmFja3VwYnVkZHlfY29yZTo6c3RhcnRzV2l0aCggJG5ld19maWxlLCAkZXhjbHVkZSApICkg
ewoJCQkJCWNvbnRpbnVlIDI7CgkJCQl9CgkJCX0KCgkJCS8vIE9taXQgZGlyZWN0b3JpZXMgdGhlbXNlbHZ
lcy4KCQkJaWYgKCBpc19kaXIoICRmaWxlICkgKSB7CgkJCQljb250aW51ZTsKCQkJfQoKCQkJJHN0YXQgPS
BzdGF0KCAkZmlsZSApOwoJCQlpZiAoIGZhbHNlID09PSAkc3RhdCApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5O
jpzdGF0dXMoICdlcnJvcicsICdVbmFibGUgdG8gcmVhZCBmaWxlIGAnIC4gJGZpbGUgLiAnYCBzdGF0LiBT
a2lwcGluZyBmaWxlLicgKTsKCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQkvLyBJZiB0aGUgZmlsZW5hbWUgaXM
gaW4gVVRGLTggYW5kIHRoZSBmbGFnIGlzIHNldCwgZW5jb2RlIGJlZm9yZSB1c2luZyBhcyBhbiBhcnJheS
BrZXkuCgkJCWlmICggJHV0ZjhfZW5jb2RlICYmICdVVEYtOCcgPT0gbWJfZGV0ZWN0X2VuY29kaW5nKCAkb
mV3X2ZpbGUgKSApIHsKCQkJCSRuZXdfZmlsZSA9IHV0ZjhfZW5jb2RlKCAkbmV3X2ZpbGUgKTsKCQkJfQoK
CQkJJG5ld19maWxlID0gJHByZXBlbmRfcGF0aCAuICRuZXdfZmlsZTsKCgkJCSRoYXNoZWRfZmlsZXNbICR
uZXdfZmlsZSBdID0gYXJyYXkoCgkJCQknc2l6ZScgICAgID0+ICRzdGF0WydzaXplJ10sCgkJCQknbW9kaW
ZpZWQnID0+ICRzdGF0WydtdGltZSddLAoJCQkpOwoJCQlpZiAoIGRlZmluZWQoICdCQUNLVVBCVUREWV9ER
VYnICkgJiYgdHJ1ZSA9PT0gQkFDS1VQQlVERFlfREVWICkgewoJCQkJJGhhc2hlZF9maWxlc1sgJG5ld19m
aWxlIF1bJ2RlYnVnX2ZpbGVuYW1lJ10gICA9IGJhc2U2NF9lbmNvZGUoICRmaWxlICk7CgkJCQkkaGFzaGV
kX2ZpbGVzWyAkbmV3X2ZpbGUgXVsnZGVidWdfZmlsZWxlbmd0aCddID0gc3RybGVuKCAkZmlsZSApOwoJCQ
l9CgkJCWlmICggdHJ1ZSA9PT0gJGdlbmVyYXRlX3NoYTEgJiYgJHN0YXRbJ3NpemUnXSA8IDEwNzM3NDE4M
jQgKSB7IC8vIDwgMTAwbWIKCQkJCSRoYXNoZWRfZmlsZXNbICRuZXdfZmlsZSBdWydzaGExJ10gPSBzaGEx
X2ZpbGUoICRmaWxlICk7CgkJCX0KCQkJdW5zZXQoICRmaWxlc1sgJGZpbGVfaWQgXSApOyAvLyBCZXR0ZXI
gdG8gZnJlZSBtZW1vcnkgb3IgbGVhdmUgb3V0IGZvciBwZXJmb3JtYW5jZT8KCgkJfQoJCXVuc2V0KCAkZm
lsZXMgKTsKCgkJcmV0dXJuICRoYXNoZWRfZmlsZXM7CgoJfSAvLyBFbmQgaGFzaEdsb2IuCgoKCS8qKgoJI
CogU2VhcmNoIGJhY2t3YXJkcyBzdGFydGluZyBmcm9tIGhheXN0YWNrIGxlbmd0aCBjaGFyYWN0ZXJzIGZy
b20gdGhlIGVuZC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRoYXlzdGFjayAgU3RyaW5nIHRvIHNlYXJjaC4
KCSAqIEBwYXJhbSBzdHJpbmcgJG5lZWRsZSAgICBXaGF0IHRvIHNlYXJjaCBmb3IuCgkgKgoJICogQHJldH
VybiBib29sICBJZiAkbmVlZGxlIHdhcyBmb3VuZCBiYWNrd2FyZHMgaW4gJGhheXN0YWNrLgoJICovCglwd
WJsaWMgc3RhdGljIGZ1bmN0aW9uIHN0YXJ0c1dpdGgoICRoYXlzdGFjaywgJG5lZWRsZSApIHsKCQlpZiAo
ICcnID09ICRuZWVkbGUgKSB7IC8vIEJsYW5rIG5lZWRsZSBpcyBpbnZhbGlkIHNvIGFsd2F5cyBzYXkgZmF
sc2UsIGl0IGRvZXMgbm90IHN0YXJ0IHdpdGggYSBibGFuay4KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlyZX
R1cm4gJycgPT09ICRuZWVkbGUgfHwgZmFsc2UgIT09IHN0cnJwb3MoICRoYXlzdGFjaywgJG5lZWRsZSwgL
XN0cmxlbiggJGhheXN0YWNrICkgKTsKCX0gLy8gRW5kIGJhY2t1cGJ1ZGR5X3N0YXJ0c1dpdGgoKS4KCgoJ
LyoqCgkgKiBBZGQgTm90aWZpY2F0aW9uIHRvIG5vdGlmaWNhdGlvbnMgYXJyYXkuCgkgKgoJICogQHBhcmF
tIHN0cmluZyAkc2x1ZyAgICAgTm90aWZpY2F0aW9uIHNsdWcuCgkgKiBAcGFyYW0gc3RyaW5nICR0aXRsZS
AgICBUaXRsZSBvZiBub3RpZmljYXRpb24uCgkgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlICBOb3RpZmljY
XRpb24gbWVzc2FnZS4KCSAqIEBwYXJhbSBhcnJheSAgJGRhdGEgICAgIERhdGEgdG8gYXR0YWNoIHRvIG5v
dGlmaWNhdGlvbi4KCSAqIEBwYXJhbSBib29sICAgJHVyZ2VudCAgIElmIHVyZ2VudCBvciBub3QuCgkgKiB
AcGFyYW0gaW50ICAgICR0aW1lICAgICBUaW1lc3RhbXAuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb2
4gYWRkTm90aWZpY2F0aW9uKCAkc2x1ZywgJHRpdGxlLCAkbWVzc2FnZSA9ICcnLCAkZGF0YSA9IGFycmF5K
CksICR1cmdlbnQgPSBmYWxzZSwgJHRpbWUgPSAnJyApIHsKCgkJaWYgKCAnJyA9PSAkdGltZSApIHsKCQkJ
JHRpbWUgPSB0aW1lKCk7CgkJfQoKCQkvLyBDcmVhdGUgdGhpcyBuZXcgbm90aWZpY2F0aW9uIGRhdGEuCgk
JJG5vdGlmaWNhdGlvbiA9IGFycmF5KAoJCQknc2x1ZycgICAgPT4gJHNsdWcsCgkJCSd0aW1lJyAgICA9Pi
AkdGltZSwKCQkJJ3RpdGxlJyAgID0+ICR0aXRsZSwKCQkJJ21lc3NhZ2UnID0+ICRtZXNzYWdlLAoJCQknZ
GF0YScgICAgPT4gJGRhdGEsCgkJCSd1cmdlbnQnICA9PiBmYWxzZSwKCQkpOwoJCSRub3RpZmljYXRpb24g
PSBhcnJheV9tZXJnZSggcGJfYmFja3VwYnVkZHk6OnNldHRpbmdzKCAnbm90aWZpY2F0aW9uX2RlZmF1bHR
zJyApLCAkbm90aWZpY2F0aW9uICk7IC8vIEFwcGx5IGRlZmF1bHRzLgoKCQkvLyBMb2FkIGN1cnJlbnQgbm
90aWZpY2F0aW9ucy4KCQkkbm90aWZpY2F0aW9uX2FycmF5ID0gc2VsZjo6Z2V0Tm90aWZpY2F0aW9ucygpO
woKCQkvLyBBZGQgdG8gY3VycmVudCBub3RpZmljYXRpb25zLgoJCWRvX2FjdGlvbiggJ2JhY2t1cGJ1ZGR5
X2NvcmVfYWRkX25vdGlmaWNhdGlvbicsICRub3RpZmljYXRpb24gKTsKCQkkbm90aWZpY2F0aW9uX2FycmF
5W10gPSAkbm90aWZpY2F0aW9uOwoKCQkvLyBPbmx5IGtlZXAgbGFzdCBYIG5vdGlmaWNhdGlvbnMgdG8gcH
JldmVudCBidWlsZHVwLgoJCSRub3RpZmljYXRpb25fYXJyYXkgPSBhcnJheV9zbGljZSggJG5vdGlmaWNhd
Glvbl9hcnJheSwgKCAtMSAqIGJhY2t1cGJ1ZGR5X2NvbnN0YW50czo6Tk9USUZJQ0FUSU9OU19NQVhfQ09V
TlQgKSwgYmFja3VwYnVkZHlfY29uc3RhbnRzOjpOT1RJRklDQVRJT05TX01BWF9DT1VOVCwgdHJ1ZSApOwo
KCQkvLyBTYXZlLgoJCXNlbGY6OnJlcGxhY2VOb3RpZmljYXRpb25zKCAkbm90aWZpY2F0aW9uX2FycmF5IC
k7CgoJfSAvLyBFbmQgYWRkTm90aWZpY2F0aW9uKCkuCgoKCS8qKgoJICogR2V0IGFkZGl0aW9uYWwgaW5jb
HVkZXMgb3IgZXhjbHVkZXMgb2YgZGIgdGFibGVzLiBQb3B1bGF0ZXMge3ByZWZpeH0gdmFyaWFibGUgYW5k
IHNhbml0aXplcywgcmVtb3ZlcyBkdXBlcywgZXRjLiBSZXR1cm5zIGFycmF5LgoJICoKCSAqIEBwYXJhbSB
zdHJpbmcgJGluY2x1ZGVzX29yX2V4Y2x1ZGVzICBFaXRoZXIgImluY2x1ZGVzIiBvciAiZXhjbHVkZXMiLg
oJICogQHBhcmFtIGFycmF5ICAkcHJvZmlsZSAgICAgICAgICAgICAgIFByb2ZpbGUgYXJyYXkuCgkgKiBAc
GFyYW0gc3RyaW5nICRvdmVycmlkZV9wcmVmaXggICAgICAgT3ZlcnJpZGUgUHJlZml4LgoJICoKCSAqIEBy
ZXR1cm4gYXJyYXkgIEFycmF5IG9mIFRhYmxlcy4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXR
fbXlzcWxkdW1wX2FkZGl0aW9uYWwoICRpbmNsdWRlc19vcl9leGNsdWRlcywgJHByb2ZpbGUsICRvdmVycm
lkZV9wcmVmaXggPSAnJyApIHsKCQlpZiAoICEgaW5fYXJyYXkoICRpbmNsdWRlc19vcl9leGNsdWRlcywgY
XJyYXkoICdpbmNsdWRlcycsICdleGNsdWRlcycgKSwgdHJ1ZSApICkgewoJCQkkZXJyb3IgPSAnRXJyb3Ig
IzgzOTMyODk3MzogSW52YWxpZCBnZXRJbmNsdWRlRXhjbHVkZVRhYmxlcygpIHBhcmFtZXRlciBpbiBjb3J
lLnBocC4nOwoJCQllcnJvcl9sb2coICdCYWNrdXBCdWRkeSAnIC4gJGVycm9yICk7CgkJCWVjaG8gJGVycm
9yOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoICEgaXNzZXQoICRwcm9maWxlWyAnbXlzcWxkdW1wX
2FkZGl0aW9uYWxfJyAuICRpbmNsdWRlc19vcl9leGNsdWRlcyBdICkgKSB7CgkJCWVycm9yX2xvZyggJ0Jh
Y2t1cEJ1ZGR5IEVycm9yICM0Mzg5MzQ4OTM0OiBQcm9maWxlIG1pc3NpbmcgZXhwZWN0ZWQga2V5LiBQcm9
maWxlOiBgJyAuIHByaW50X3IoICRwcm9maWxlLCB0cnVlICkgLiAnYC4nICk7CgkJfQoKCQkkdGFibGVzID
0gZXhwbG9kZSggIlxuIiwgJHByb2ZpbGVbICdteXNxbGR1bXBfYWRkaXRpb25hbF8nIC4gJGluY2x1ZGVzX
29yX2V4Y2x1ZGVzIF0gKTsKCQkkdGFibGVzID0gYXJyYXlfbWFwKCAndHJpbScsICR0YWJsZXMgKTsgLy8g
VHJpbSB3aGl0ZXNwYWNlIGFyb3VuZCB0YWJsZXMuCgoJCWlmICggJycgPT0gJG92ZXJyaWRlX3ByZWZpeCA
pIHsKCQkJZ2xvYmFsICR3cGRiOwoJCQkkcHJlZml4ID0gJHdwZGItPnByZWZpeDsKCQl9IGVsc2UgewoJCQ
kkcHJlZml4ID0gJG92ZXJyaWRlX3ByZWZpeDsKCQl9CgkJZm9yZWFjaCAoICR0YWJsZXMgYXMgJiR0YWJsZ
SApIHsKCQkJJHRhYmxlID0gc3RyX3JlcGxhY2UoICd7cHJlZml4fScsICRwcmVmaXgsICR0YWJsZSApOyAv
LyBQb3B1bGF0ZSBwcmVmaXggdmFyaWFibGUuCgkJfQoKCQkkdGFibGVzID0gYXJyYXlfdW5pcXVlKCAkdGF
ibGVzICk7IC8vIFJlbW92ZSBhbnkgZHVwbGljYXRlIHRhYmxlcy4KCQlyZXR1cm4gJHRhYmxlczsKCX0gLy
8gRW5kIGdldF9teXNxbGR1bXBfYWRkaXRpb25hbCgpLgoKCgkvKioKCSAqIFByb2Nlc3MgQmFrY3VwCgkgK
goJICogQHBhcmFtIHN0cmluZyAkc2VyaWFsICBQYXNzZWQgdG8gc2V0X3N0YXR1c19zZXJpYWwoKS4gRGVm
YXVsdCAnYmxhbmsnLgoJICoKCSAqIEByZXR1cm4gYm9vbCAgUmVzdWx0IG9mIHBiX2JhY2t1cGJ1ZGR5X2J
hY2t1cDo6cHJvY2Vzc19iYWNrdXAoKS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwcm9jZXNzX2
JhY2t1cCggJHNlcmlhbCA9ICdibGFuaycgKSB7CgkJcGJfYmFja3VwYnVkZHk6OnNldF9zdGF0dXNfc2Vya
WFsKCAkc2VyaWFsICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnLS0tIE5ldyBQ
SFAgcHJvY2Vzcy4nICk7CgkJcGJfYmFja3VwYnVkZHk6OnNldF9ncmVlZHlfc2NyaXB0X2xpbWl0cygpOwo
JCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ1J1bm5pbmcgcHJvY2VzcyBmb3Igc2VyaW
FsIGAnIC4gJHNlcmlhbCAuICdgLi4uJyApOwoKCQlyZXF1aXJlX29uY2UgcGJfYmFja3VwYnVkZHk6OnBsd
Wdpbl9wYXRoKCkgLiAnL2NsYXNzZXMvYmFja3VwLnBocCc7CgkJJG5ld19iYWNrdXAgPSBuZXcgcGJfYmFj
a3VwYnVkZHlfYmFja3VwKCk7CgkJcmV0dXJuICRuZXdfYmFja3VwLT5wcm9jZXNzX2JhY2t1cCggJHNlcml
hbCApOwoJfQoKCgkvKioKCSAqIFZlcmlmeSBIb3VzZWtlZXBpbmcKCSAqLwoJcHVibGljIHN0YXRpYyBmdW
5jdGlvbiB2ZXJpZnlIb3VzZWtlZXBpbmcoKSB7CgkJaWYgKCBpc19tdWx0aXNpdGUoKSApIHsgLy8gRm9yI
E11bHRpc2l0ZSBvbmx5IHJ1biBvbiBtYWluIE5ldHdvcmsgc2l0ZS4KCQkJaWYgKCAhIGlzX21haW5fc2l0
ZSgpICkgewoJCQkJcmV0dXJuOwoJCQl9CgkJfQoKCQlpZiAoIGZhbHNlID09PSB3cF9uZXh0X3NjaGVkdWx
lZCggJ2JhY2t1cGJ1ZGR5X2Nyb24nLCBhcnJheSggJ2hvdXNla2VlcGluZycsIGFycmF5KCkgKSApICkgey
AvLyBpZiBzY2hlZHVsZSBkb2VzIG5vdCBleGlzdC4uLgoJCQliYWNrdXBidWRkeV9jb3JlOjpzY2hlZHVsZ
V9ldmVudCggdGltZSgpICsgKCA2MCAqIDYwICogMiApLCAnZGFpbHknLCAnaG91c2VrZWVwaW5nJywgYXJy
YXkoKSApOyAvLyBBZGQgc2NoZWR1bGUuCgkJfQoJfSAvLyBFbmQgdmVyaWZ5SG91c2VrZWVwaW5nKCkuCgo
KCS8qKgoJICogVmVyaWZ5IExpdmUgQ3JvbgoJIC
ovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZlcmlmeUxpdmVDcm9uKCkgewoJCXJlcXVpcmVfb25jZSBwY
l9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvZGVzdGluYXRpb25zL2xpdmUvbGl2ZS5waHAnOwoJ
CWlmICggZmFsc2UgPT09IGJhY2t1cGJ1ZGR5X2xpdmU6OmdldExpdmVJRCgpICkgeyAvLyBJZiBubyBMaXZ
lIGRlc3RpbmF0aW9uIHNldCB1cCB0aGVuIHJldHVybi4KCQkJcmV0dXJuOwoJCX0KCQlpZiAoIGZhbHNlID
09PSB3cF9uZXh0X3NjaGVkdWxlZCggJ2JhY2t1cGJ1ZGR5X2Nyb24nLCBhcnJheSggJ2xpdmUnLCBhcnJhe
SgpICkgKSApIHsgLy8gaWYgc2NoZWR1bGUgZG9lcyBub3QgZXhpc3QuLi4KCQkJYmFja3VwYnVkZHlfY29y
ZTo6c2NoZWR1bGVfZXZlbnQoIHRpbWUoKSArICggNjAgKiA2MCApLCAnaG91cmx5JywgJ2xpdmUnLCBhcnJ
heSgpICk7IC8vIEFkZCBzY2hlZHVsZS4KCQl9Cgl9IC8vIEVuZCB2ZXJpZnlMaXZlQ3JvbigpLgoKCS8qKg
oJICogQ2xlYXIgTGl2ZSBMb2dzCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc2VyaWFsICBTZXJpYWwgb2YgY
mFja3VwLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNsZWFyTGl2ZUxvZ3MoICRzZXJpYWwgKSB7
CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGVsZXRpbmcgbGl2ZSBsb2dzIGFuZCB
jYXRhbG9nJyApOwoKCQkkbG9nX2ZpbGVzID0gYXJyYXlfbWVyZ2UoCgkJCShhcnJheSkgZ2xvYiggYmFja3
VwYnVkZHlfY29yZTo6Z2V0TG9nRGlyZWN0b3J5KCkgLiAnZmlsZW9wdGlvbnMvc2VuZC1saXZlXyoudHh0J
yApLAoJCQkoYXJyYXkpIGdsb2IoIGJhY2t1cGJ1ZGR5X2NvcmU6OmdldFRlbXBEaXJlY3RvcnkoKSAuICRz
ZXJpYWwgKSwKCQkJYXJyYXkoIGJhY2t1cGJ1ZGR5X2NvcmU6OmdldExvZ0RpcmVjdG9yeSgpIC4gJ2xpdmU
nICksCgkJCShhcnJheSkgZ2xvYiggYmFja3VwYnVkZHlfY29yZTo6Z2V0TG9nRGlyZWN0b3J5KCkgLiAnKi
cgLiAkc2VyaWFsIC4gJyonICkKCQkpOwoKCQlmb3JlYWNoICggJGxvZ19maWxlcyBhcyAkbG9nX2ZpbGUgK
SB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjokZmlsZXN5c3RlbS0+dW5saW5rX3JlY3Vyc2l2ZSggJGxvZ19maWxl
ICk7CgkJfQoKCX0gLy8gRW5kIGNsZWFyTGl2ZUxvZ3MoKQoKCgkvKioKCSAqIFRha2VzIGEgYmFzZSBsZXZ
lbCB0byBjYWxjdWxhdGUgdGFibGVzIGZyb20uICBUaGVuIGFkZHMgYWRkaXRpb25hbCB0YWJsZXMuICBUaG
VuIHJlbW92ZXMgYW55IGV4Y2x1c2lvbnMuIFJldHVybnMgYXJyYXkgb2YgZmluYWwgdGFibGUgbGlzdGluZ
yB0byBiYWNrdXAuCgkgKgoJICogQHNlZSBkdW1wKCkKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRiYXNlX2R1
bXBfbW9kZSAgICAgICBEZXRlcm1pbmVzIHdoaWNoIGRhdGFiYXNlIHRhYmxlcyB0byBkdW1wIGJ5IGRlZmF
1bHQuIFZhbGlkIHZhbHVlczogIGFsbCwgbm9uZSwgcHJlZml4CgkgKiBAcGFyYW0gYXJyYXkgICRhZGRpdG
lvbmFsX2luY2x1ZGVzICBBcnJheSBvZiBhZGRpdGlvbmFsIHRhYmxlKHMpIHRvIElOQ0xVREUgaW4gZHVtc
C4gQWRkZWQgaW4gYWRkaXRpb24gdG8gdGhvc2UgZm91bmQgYnkgdGhlICRiYXNlX2R1bXBfbW9kZQoJICog
QHBhcmFtIGFycmF5ICAkYWRkaXRpb25hbF9leGNsdWRlcyAgQXJyYXkgb2YgYWRkaXRpb25hbCB0YWJsZSh
zKSB0byBFWENMVURFIGZyb20gZHVtcC4gUmVtb3ZlZCBmcm9tIHRob3NlIGZvdW5kIGJ5IHRoZSAkYmFzZV
9kdW1wX21vZGUgKyAkYWRkaXRpb25hbF9pbmNsdWRlcy4KCSAqCgkgKiBAcmV0dXJuIGFycmF5ICBBcnJhe
SBvZiB0YWJsZXMgdG8gYmFja3VwLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNhbGN1bGF0ZV90
YWJsZXMoICRiYXNlX2R1bXBfbW9kZSwgJGFkZGl0aW9uYWxfaW5jbHVkZXMgPSBhcnJheSgpLCAkYWRkaXR
pb25hbF9leGNsdWRlcyA9IGFycmF5KCkgKSB7CgoJCWdsb2JhbCAkd3BkYjsKCQkkd3BkYi0+c2hvd19lcn
JvcnMoKTsgLy8gVHVybiBvbiBlcnJvciBkaXNwbGF5LgoKCQkkdGFibGVzID0gYXJyYXkoKTsKCQlwYl9iY
WNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdDYWxjdWxhdGluZyBteXNxbCBkYXRhYmFzZSB0YWJs
ZXMgdG8gYmFja3VwLicgKTsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdCYXNlIGR
hdGFiYXNlIGR1bXAgbW9kZSAoYmVmb3JlIGluY2x1c2lvbnMvZXhjbHVzaW9ucyk6IGAnIC4gJGJhc2VfZH
VtcF9tb2RlIC4gJ2AuJyApOwoKCQkvLyBDYWxjdWxhdGUgYmFzZSB0YWJsZXMuCgkJaWYgKCAnYWxsJyA9P
T0gJGJhc2VfZHVtcF9tb2RlICkgeyAvLyBBbGwgdGFibGVzIGluIGRhdGFiYXNlIHRvIHN0YXJ0IHdpdGgu
CgkJCSRzcWwgPSAnU0VMRUNUIHRhYmxlX25hbWUgQVMgYHRhYmxlX25hbWVgIEZST00gaW5mb3JtYXRpb25
fc2NoZW1hLnRhYmxlcyBXSEVSRSB0YWJsZV9zY2hlbWEgPSBEQVRBQkFTRSgpJzsKCQkJcGJfYmFja3VwYn
VkZHk6OnN0YXR1cyggJ3N0YXJ0QWN0aW9uJywgJ3NjaGVtYVRhYmxlcycgKTsKCQkJJHJlc3VsdHMgPSAkd
3BkYi0+Z2V0X3Jlc3VsdHMoICRzcWwsIEFSUkFZX0EgKTsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cygg
J2ZpbmlzaEFjdGlvbicsICdzY2hlbWFUYWJsZXMnICk7CgkJCWlmICggKCBudWxsID09PSAkcmVzdWx0cyA
pIHx8ICggZmFsc2UgPT09ICRyZXN1bHRzICkgKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZX
Jyb3InLCAnRXJyb3IgIzg0OTM4OTRhOiBVbmFibGUgdG8gY2FsY3VsYXRlIGRhdGFiYXNlIHRhYmxlcyB3a
XRoIHF1ZXJ5OiBgJyAuICRzcWwgLiAnYC4gQ2hlY2sgZGF0YWJhc2UgcGVybWlzc2lvbnMgb3IgY29udGFj
dCBob3N0LicgKTsKCQkJfQoJCQlmb3JlYWNoICggKGFycmF5KSAkcmVzdWx0cyBhcyAkcmVzdWx0ICkgewo
JCQkJYXJyYXlfcHVzaCggJHRhYmxlcywgJHJlc3VsdFsndGFibGVfbmFtZSddICk7CgkJCX0KCQkJdW5zZX
QoICRyZXN1bHRzICk7CgoJCX0gZWxzZWlmICggJ3ByZWZpeCcgPT09ICRiYXNlX2R1bXBfbW9kZSApIHsgL
y8gVGFibGVzIG1hdGNoaW5nIHByZWZpeC4KCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxz
JywgJ0RldGVybWluaW5nIGRhdGFiYXNlIHRhYmxlcyB3aXRoIHByZWZpeCBgJyAuICR3cGRiLT5wcmVmaXg
gLiAnYC4nICk7CgkJCSRwcmVmaXhfc3FsID0gc3RyX3JlcGxhY2UoICdfJywgJ1xfJywgJHdwZGItPnByZW
ZpeCApOwoJCQkkc3FsICAgICAgICA9ICJTRUxFQ1QgdGFibGVfbmFtZSBBUyBgdGFibGVfbmFtZWAgRlJPT
SBpbmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX25hbWUgTElLRSAneyRwcmVmaXhfc3Fs
fSUnIEFORCB0YWJsZV9zY2hlbWEgPSBEQVRBQkFTRSgpIjsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyg
gJ3N0YXJ0QWN0aW9uJywgJ3NjaGVtYVRhYmxlcycgKTsKCQkJJHJlc3VsdHMgPSAkd3BkYi0+Z2V0X3Jlc3
VsdHMoICRzcWwsIEFSUkFZX0EgKTsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2ZpbmlzaEFjdGlvb
icsICdzY2hlbWFUYWJsZXMnICk7CgkJCWlmICggKCBudWxsID09PSAkcmVzdWx0cyApIHx8ICggZmFsc2Ug
PT09ICRyZXN1bHRzICkgKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3I
gIzg0OTM4OTRiOiBVbmFibGUgdG8gY2FsY3VsYXRlIGRhdGFiYXNlIHRhYmxlcyB3aXRoIHF1ZXJ5OiBgJy
AuICRzcWwgLiAnYC4gQ2hlY2sgZGF0YWJhc2UgcGVybWlzc2lvbnMgb3IgY29udGFjdCBob3N0LicgKTsKC
QkJfQoJCQlmb3JlYWNoICggKGFycmF5KSAkcmVzdWx0cyBhcyAkcmVzdWx0ICkgewoJCQkJYXJyYXlfcHVz
aCggJHRhYmxlcywgJHJlc3VsdFsndGFibGVfbmFtZSddICk7CgkJCX0KCQkJdW5zZXQoICRyZXN1bHRzICk
7CgoJCX0gZWxzZWlmICggJ25vbmUnICE9PSAkYmFzZV9kdW1wX21vZGUgKSB7IC8vIHVua25vd24gZHVtcC
Btb2RlLgoKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICM0NTQ1NDU6IFVua
25vd24gZGF0YWJhc2UgZHVtcCBtb2RlLicgKTsgLy8gU2hvdWxkIG5ldmVyIHNlZSB0aGlzLgoKCQl9CgkJ
cGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQmFzZSBkYXRhYmFzZSB0YWJsZXMgYmFzZWQ
gb24gc2V0dGluZ3MgKCcgLiBjb3VudCggJHRhYmxlcyApIC4gJyB0YWJsZXMpOiBgJyAuIGltcGxvZGUoIC
csJywgJHRhYmxlcyApIC4gJ2AnICk7CgoJCS8vIEFkZCBhZGRpdGlvbmFsIHRhYmxlcy4KCQkkdGFibGVzI
D0gYXJyYXlfbWVyZ2UoICR0YWJsZXMsICRhZGRpdGlvbmFsX2luY2x1ZGVzICk7CgkJJHRhYmxlcyA9IGFy
cmF5X2ZpbHRlciggJHRhYmxlcyApOyAvLyBUcmltIGFueSBwaGFudG9tIHRhYmxlcyB0aGF0IHRoZSBhYm9
2ZSBsaW5lIG1heSBoYXZlIGludHJvZHVjZWQuCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbH
MnLCAnRGF0YWJhc2UgdGFibGVzIGFmdGVyIGFkZGl0aW9uICgnIC4gY291bnQoICR0YWJsZXMgKSAuICcgd
GFibGVzKTogYCcgLiBpbXBsb2RlKCAnLCcsICR0YWJsZXMgKSAuICdgJyApOwoKCQkvLyBSZW1vdmUgZXhj
bHVkZWQgdGFibGVzLgoJCSR0YWJsZXMgPSBhcnJheV9kaWZmKCAkdGFibGVzLCAkYWRkaXRpb25hbF9leGN
sdWRlcyApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0RhdGFiYXNlIHRhYmxlcy
BhZnRlciBleGNsdXNpb24gKCcgLiBjb3VudCggJHRhYmxlcyApIC4gJyB0YWJsZXMpOiBgJyAuIGltcGxvZ
GUoICcsJywgJHRhYmxlcyApIC4gJ2AnICk7CgoJCS8vIFJlbW92ZSBhbnkgZHVwbGljYXRlIHRhYmxlcy4K
CQkkdGFibGVzID0gYXJyYXlfdW5pcXVlKCAkdGFibGVzICk7CgoJCXJldHVybiBhcnJheV92YWx1ZXMoICR
0YWJsZXMgKTsgLy8gQ2xlYW4gdXAgaW5kZXhpbmcgJiByZXR1cm4uCgoJfSAvLyBFbmQgY2FsY3VsYXRlX3
RhYmxlcygpLgoKCgkvKioKCSAqIFJldHVybnMgYXJyYXkgb2YgZGF0IGNvbnRlbnRzIG9uIHN1Y2Nlc3MsI
GVsc2Ugc3RyaW5nIGVycm9yIG1lc3NhZ2UuCgkgKgoJICogQHBhcmFtIGFycmF5ICAkc2V0dGluZ3MgIFNl
dHRpbmdzIGFycmF5LgoJICogQHBhcmFtIHN0cmluZyAkZGF0X2ZpbGUgIFBhdGggdG8gZGF0IGZpbGUuCgk
gKgoJICogQHJldHVybiBhcnJheSAgQXJyYXkgb2YgZGF0IGNvbnRlbnRzLCBvdGhlcndpc2UgZXJyb3IgbW
Vzc2FnZSBvbiBmYWlsLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlbmRlcl9kYXRfY29udGVud
HMoICRzZXR0aW5ncywgJGRhdF9maWxlICkgewoKCQkkc2V0dGluZ3MgPSBhcnJheV9tZXJnZSgKCQkJYXJy
YXkoCgkJCQknc3RhcnRfdGltZScgICAgICAgICAgID0+IDAsCgkJCQknYmFja3VwX3R5cGUnICAgICAgICA
gID0+ICcnLAoJCQkJJ3Byb2ZpbGUnICAgICAgICAgICAgICA9PiBhcnJheSgpLAoJCQkJJ3NlcmlhbCcgIC
AgICAgICAgICAgICA9PiAnJywKCQkJCSdicmVha291dF90YWJsZXMnICAgICAgPT4gYXJyYXkoKSwKCQkJC
Sd0YWJsZV9zaXplcycgICAgICAgICAgPT4gYXJyYXkoKSwKCQkJCSdmb3JjZV9zaW5nbGVfZGJfZmlsZScg
PT4gZmFsc2UsCgkJCQknZGVwbG95bWVudF9kaXJlY3Rpb24nID0+ICcnLAoJCQkJJ3RyaWdnZXInICAgICA
gICAgICAgICA9PiAnJywKCQkJCSdza2lwX2RhdGFiYXNlX2R1bXAnICAgPT4gZmFsc2UsCgkJCQknZGJfZX
hjbHVkZXMnICAgICAgICAgID0+IGFycmF5KCksCgkJCQknZGJfaW5jbHVkZXMnICAgICAgICAgID0+IGFyc
mF5KCksCgkJCSksICRzZXR0aW5ncwoJCSk7CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxz
JywgX18oICdDcmVhdGluZyBEQVQgKGRhdGEpIGZpbGUgc25hcHNob3R0aW5nIHNpdGUgJiBiYWNrdXAgaW5
mb3JtYXRpb24uJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCgkJZ2xvYmFsICR3cGRiLCAkY3Vycm
VudF9ibG9nOwoKCQkkaXNfbXVsdGlzaXRlX2V4cG9ydCA9IGZhbHNlOyAvLyAkZnJvbV9tdWx0aXNpdGUga
XMgZnJvbSBhIHNpdGUgd2l0aGluIGEgbmV0d29yay4KCQkkaXNfbXVsdGlzaXRlICAgICAgICA9ICRpc19t
dWx0aXNpdGVfZXhwb3J0OwoJCSR1cGxvYWRfdXJsICAgICAgICAgID0gJyc7CgkJJHVwbG9hZF91cmxfcmV
3cml0ZSAgPSAkdXBsb2FkX3VybDsKCQlpZiAoICggaXNfbXVsdGlzaXRlKCkgJiYgJ3NjaGVkdWxlZCcgPT
09ICRzZXR0aW5nc1sndHJpZ2dlciddICkgfHwgKCBpc19tdWx0aXNpdGUoKSAmJiBpc19uZXR3b3JrX2Fkb
WluKCkgKSApIHsgLy8gTVMgTmV0d29yayBFeHBvcnQgSUYgKCBpbiBhIG5ldHdvcmsgYW5kIHRyaWdnZXJl
ZCBieSBhIHNjaGVkdWxlICkgT1IgKCBpbiBhIG5ldHdvcmsgYW5kIGxvZ2dlZCBpbiBhcyBuZXR3b3JrIGF
kbWluKS4KCQkJJGlzX211bHRpc2l0ZSA9IHRydWU7CgkJfSBlbHNlaWYgKCBpc19tdWx0aXNpdGUoKSApIH
sgLy8gTVMgRXhwb3J0IChpbmRpdmlkdWFsIHNpdGUpLgoJCQkkaXNfbXVsdGlzaXRlX2V4cG9ydCA9IHRyd
WU7CgkJCSR1cGxvYWRzICAgICAgICAgICAgID0gd3BfdXBsb2FkX2RpcigpOwoJCQkkdXBsb2FkX3VybF9y
ZXdyaXRlICA9IHNpdGVfdXJsKCBzdHJfcmVwbGFjZSggQUJTUEFUSCwgJycsICR1cGxvYWRzWydiYXNlZGl
yJ10gKSApOyAvLyBVUkwgd2UgcmV3cml0ZSB1cGxvYWRzIHRvLiBSRUFMIGRpcmVjdCB1cmwuCgkJCSR1cG
xvYWRfdXJsICAgICAgICAgID0gJHVwbG9hZHNbJ2Jhc2V1cmwnXTsgLy8gUHJldHR5IHZpcnR1YWwgcGF0a
CB0byB1cGxvYWRzIGRpcmVjdG9yeS4KCQl9CgoJCS8vIEhhbmRsZSB3cC1jb25maWcucGhwIGZpbGUgaW4g
YSBwYXJlbnQgZGlyZWN0b3J5LgoJCWlmICggJ2Z1bGwnID09PSAkc2V0dGluZ3NbJ2JhY2t1cF90eXBlJ10
gKSB7CgkJCSR3cF9jb25maWdfcGFyZW50ID0gZmFsc2U7CgkJCWlmICggZmlsZV9leGlzdHMoIEFCU1BBVE
ggLiAnd3AtY29uZmlnLnBocCcgKSApIHsgLy8gd3AtY29uZmlnIGluIG5vcm1hbCBwbGFjZS4KCQkJCXBiX
2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ3dwLWNvbmZpZy5waHAgZm91bmQgaW4gbm9ybWFs
IGxvY2F0aW9uLicgKTsKCQkJfSBlbHNlIHsgLy8gd3AtY29uZmlnIG5vdCBpbiBub3JtYWwgcGxhY2UuCgk
JCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICd3cC1jb25maWcucGhwIG5vdCBmb3VuZC
BpbiBub3JtYWwgbG9jYXRpb247IGNoZWNraW5nIHBhcmVudCBkaXJlY3RvcnkuJyApOwoJCQkJaWYgKCBAZ
mlsZV9leGlzdHMoIGRpcm5hbWUoIEFCU1BBVEggKSAuICcvd3AtY29uZmlnLnBocCcgKSAmJiAhIEBmaWxl
X2V4aXN0cyggZGlybmFtZSggQUJTUEFUSCApIC4gJy93cC1zZXR0aW5ncy5waHAnICkgKSB7IC8vIENvbmZ
pZyBpbiBwYXJlbnQuIEVycm9ycyBzdXBwcmVzc2VkIGR1ZSB0byBwb3NzaWJsZSBvcGVuX2Jhc2VkaXIgcm
VzdHJpY3Rpb25zLgoJCQkJCSR3cF9jb25maWdfc
GFyZW50ID0gdHJ1ZTsKCQkJCX0gZWxzZSB7IC8vIEZvdW5kIG5vIHdwLWNvbmZpZy5waHAgYW55d2hlcmUu
CgkJCQkJaWYgKCAhIEBmaWxlX2V4aXN0cyggZGlybmFtZSggQUJTUEFUSCApIC4gJy93cC1zZXR0aW5ncy5
waHAnICkgKSB7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjODM5Mz
Q4OiB3cC1jb25maWcucGhwIG5vdCBmb3VuZCBpbiBub3JtYWwgbG9jYXRpb24gKGAnIC4gQUJTUEFUSCAuI
CdgKSBub3IgcGFyZW50IGRpcmVjdG9yeSAoYCcgLiBkaXJuYW1lKCBBQlNQQVRIICkgLiAnYCkuIENoZWNr
IHRoYXQgZmlsZSBleGlzdHMgYW5kIGhhcyBwcm9wZXIgcmVhZCBwZXJtaXNzaW9ucy4gQ2hlY2sgbG9nIGF
ib3ZlIGZvciBtb3JlIGVycm9ycy4nICk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJcGJfYmFja3VwYnVkZHk6On
N0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICM4MzkzNDhiOiB3cC1jb25maWcucGhwIG5vdCBmb3VuZCBpbiBub
3JtYWwgbG9jYXRpb24gKGAnIC4gQUJTUEFUSCAuICdgKSBub3IgcGFyZW50IGRpcmVjdG9yeSAoYCcgLiBk
aXJuYW1lKCBBQlNQQVRIICkgLiAnYCkgd2l0aG91dCB3cC1zZXR0aW5ncy5waHAuIENoZWNrIHRoYXQgZml
sZSBleGlzdHMgYW5kIGhhcyBwcm9wZXIgcmVhZCBwZXJtaXNzaW9ucy4gQ2hlY2sgbG9nIGFib3ZlIGZvci
Btb3JlIGVycm9ycy4nICk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfSBlbHNlIHsKCQkJJHdwX2NvbmZpZ19wY
XJlbnQgPSBmYWxzZTsKCQl9CgoJCWdsb2JhbCAkd3BfdmVyc2lvbjsKCgkJLy8gUG9zdHMuCgkJJHRvdGFs
X3Bvc3RzID0gMDsKCQlmb3JlYWNoICggd3BfY291bnRfcG9zdHMoICdwb3N0JyApIGFzICRjb3VudHR5cGU
gPT4gJGNvdW50ICkgewoJCQkkdG90YWxfcG9zdHMgKz0gJGNvdW50OwoJCX0KCgkJLy8gUGFnZXMuCgkJJH
RvdGFsX3BhZ2VzID0gMDsKCQlmb3JlYWNoICggd3BfY291bnRfcG9zdHMoICdwYWdlJyApIGFzICRjb3Vud
HR5cGUgPT4gJGNvdW50ICkgewoJCQkkdG90YWxfcGFnZXMgKz0gJGNvdW50OwoJCX0KCgkJLy8gQ29tbWVu
dHMuCgkJJHRvdGFsX2NvbW1lbnRzID0gd3BfY291bnRfY29tbWVudHMoKTsKCQkkdG90YWxfY29tbWVudHM
gPSBlbXB0eSggJHRvdGFsX2NvbW1lbnRzLT5hbGwgKSA/IDAgOiAoaW50KSAkdG90YWxfY29tbWVudHMtPm
FsbDsKCgkJLy8gVXNlcnMKCQkkdG90YWxfdXNlcnMgPSBjb3VudF91c2VycygpOwoJCSR0b3RhbF91c2Vyc
yA9ICR0b3RhbF91c2Vyc1sndG90YWxfdXNlcnMnXTsKCgkJaWYgKCAhIGlzc2V0KCAkc2V0dGluZ3NbJ2N1
c3RvbV9yb290J10gKSB8fCAoICcnID09ICRzZXR0aW5nc1snY3VzdG9tX3Jvb3QnXSApICkgewoJCQlwYl9
iYWNrdXBidWRkeTo6c3RhdHVzKAoJCQkJJ3N0YXJ0U3ViRnVuY3Rpb24nLCBqc29uX2VuY29kZSgKCQkJCQ
lhcnJheSgKCQkJCQkJJ2Z1bmN0aW9uJyA9PiAncG9zdF9jb3VudCcsCgkJCQkJCSd0aXRsZScgICAgPT4gJ
0ZvdW5kICcgLiAkdG90YWxfcG9zdHMgLiAnIHBvc3RzLCAnIC4gJHRvdGFsX3BhZ2VzIC4gJyBwYWdlcywg
YW5kICcgLiAkdG90YWxfY29tbWVudHMgLiAnIGNvbW1lbnRzLicsCgkJCQkJKQoJCQkJKQoJCQkpOwoJCQl
wYl9iYWNrdXBidWRkeTo6c3RhdHVzKAoJCQkJJ3N0YXJ0U3ViRnVuY3Rpb24nLCBqc29uX2VuY29kZSgKCQ
kJCQlhcnJheSgKCQkJCQkJJ2Z1bmN0aW9uJyA9PiAncG9zdF9jb3VudCcsCgkJCQkJCSd0aXRsZScgICAgP
T4gJ0ZvdW5kICcgLiAkdG90YWxfdXNlcnMgLiAnIHVzZXIgYWNjb3VudHMuJywKCQkJCQkpCgkJCQkpCgkJ
CSk7CgkJfQoKCQkkZGF0X2NvbnRlbnQgPSBhcnJheSgKCgkJCS8vIEJhY2t1cCBJbmZvLgoJCQknYmFja3V
wYnVkZHlfdmVyc2lvbicgID0+IHBiX2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3ZlcnNpb24nICksCgkJCS
d3b3JkcHJlc3NfdmVyc2lvbicgICAgPT4gJHdwX3ZlcnNpb24sICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAvLyBXb3JkUHJlc3MgdmVyc2lvbi4KCQkJJ3BocF92ZXJzaW9uJyAgICAgICAg
ICA9PiBQSFBfVkVSU0lPTiwKCgkJCSdiYWNrdXBfdGltZScgICAgICAgICAgPT4gJHNldHRpbmdzWydzdGF
ydF90aW1lJ10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaW1lIGJhY2t1cCBiZWdhbi4KCQ
kJJ2JhY2t1cF90eXBlJyAgICAgICAgICA9PiAkc2V0dGluZ3NbJ2JhY2t1cF90eXBlJ10sICAgICAgICAgI
CAgICAgICAgICAgICAgICAgIC8vIEJhY2t1cCB0eXBlOiBmdWxsLCBkYiwgZmlsZXMuCgkJCSdwcm9maWxl
JyAgICAgICAgICAgICAgPT4gJHNldHRpbmdzWydwcm9maWxlJ10sICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAvLyBBcnJheSBvZiBwcm9maWxlIHNldHRpbmdzLgoJCQknZGVmYXVsdF9wcm9maWxlJyAgIC
AgID0+IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sncHJvZmlsZXMnXVswXSwgICAgICAgICAgICAgLy8gR
GVmYXVsdCBwcm9maWxlLgoJCQknc2VyaWFsJyAgICAgICAgICAgICAgID0+ICRzZXR0aW5nc1snc2VyaWFs
J10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW5pcXVlIGlkZW50aWZpZXIgKHJhbmR
vbSkgZm9yIHRoaXMgYmFja3VwLgoJCQkndHJpZ2dlcicgICAgICAgICAgICAgID0+ICRzZXR0aW5nc1sndH
JpZ2dlciddLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2hhdCB0cmlnZ2VyZWQgdGhpc
yBiYWNrdXAuIFZhbGlkIHZhbHVlczogc2NoZWR1bGVkLCBtYW51YWwuCgkJCSd3cC1jb25maWdfaW5fcGFy
ZW50JyAgPT4gJHdwX2NvbmZpZ19wYXJlbnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
vLyBXaGV0aGVyIG9yIG5vdCB0aGUgd3AtY29uZmlnLnBocCBmaWxlIGlzIGluIG9uZSBwYXJlbnQgZGlyZW
N0b3J5IHVwLiBJZiBpbiBwYXJlbnQgZGlyZWN0b3J5IGl0IHdpbGwgYmUgY29waWVkIGludG8gdGhlIHRlb
XAgc2VyaWFsIGRpcmVjdG9yeSBhbG9uZyB3aXRoIHRoZSAuc3FsIGFuZCBEQVQgZmlsZS4gT24gcmVzdG9y
ZSB3ZSB3aWxsIE5PVCBwbGFjZSBpbiBhIHBhcmVudCBkaXJlY3RvcnkgZHVlIHRvIHBvdGVudGlhbCBwZXJ
taXNzaW9uIGlzc3VlcywgZXRjLiBJdCB3aWxsIGJlIG1vdmVkIGludG8gdGhlIG5vcm1hbCBsb2NhdGlvbi
4gVmFsdWUgc2V0IHRvIHRydWUgbGF0ZXIgaW4gdGhpcyBmdW5jdGlvbiBpZiBhcHBsaWNhYmxlLgoJCQknZ
GVwbG95bWVudF9kaXJlY3Rpb24nID0+ICRzZXR0aW5nc1snZGVwbG95bWVudF9kaXJlY3Rpb24nXSwgICAg
ICAgICAgICAgICAgICAgLy8gRGVwbG95bWVudCBkaXJlY3Rpb24sIGlmIGFueS4KCgkJCS8vIFdvcmRQcmV
zcyBJbmZvLgoJCQknYWJzcGF0aCcgICAgICAgICAgICAgID0+IEFCU1BBVEgsCgkJCSdzaXRldXJsJyAgIC
AgICAgICAgICAgPT4gc2l0ZV91cmwoKSwKCQkJJ2hvbWV1cmwnICAgICAgICAgICAgICA9PiBob21lX3Vyb
CgpLAoJCQknYmxvZ25hbWUnICAgICAgICAgICAgID0+IGdldF9vcHRpb24oICdibG9nbmFtZScgKSwKCQkJ
J2Jsb2dkZXNjcmlwdGlvbicgICAgICA9PiBnZXRfb3B0aW9uKCAnYmxvZ2Rlc2NyaXB0aW9uJyApLAoJCQk
nYWN0aXZlX3BsdWdpbnMnICAgICAgID0+IGltcGxvZGUoICcsICcsIGdldF9vcHRpb24oICdhY3RpdmVfcG
x1Z2lucycgKSApLCAgICAgICAgICAgICAgLy8gTGlzdCBvZiBhY3RpdmUgcGx1Z2lucyBhdCB0aW1lIG9mI
GJhY2t1cC4KCQkJJ3Bvc3RzJyAgICAgICAgICAgICAgICA9PiAkdG90YWxfcG9zdHMsICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIFdQIHBvc3RzLCBwdWJsaXN
oZXMsIGRyYWZ0LCBwcml2YXRlLCB0cmFzaCwgZXRjLgoJCQkncGFnZXMnICAgICAgICAgICAgICAgID0+IC
R0b3RhbF9wYWdlcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL
y8gVG90YWwgV1AgcGFnZXMsIHB1Ymxpc2hlcywgZHJhZnQsIHByaXZhdGUsIHRyYXNoLCBldGMuCgkJCSdj
b21tZW50cycgICAgICAgICAgICAgPT4gJHRvdGFsX2NvbW1lbnRzLCAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAvLyBUb3RhbCBXUCBjb21tZW50cywgYXBwcm92ZWQsIHNwYW0sIG
V0Yy4KCQkJJ3VzZXJzJyAgICAgICAgICAgICAgICA9PiAkdG90YWxfdXNlcnMsICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvdGFsIHVzZXJzIG9uIHNpdGUuCgkJCSd3
cF9jb250ZW50X3VybCcgICAgICAgPT4gV1BfQ09OVEVOVF9VUkwsCgkJCSd3cF9jb250ZW50X2RpcicgICA
gICAgPT4gV1BfQ09OVEVOVF9ESVIsCgoJCQkvLyBEYXRhYmFzZSBJbmZvLiBSZW1haW5pbmcgc2Vuc2l0aX
ZlIGluZm8gYWRkZWQgaW4gYWZ0ZXIgcHJpbnRpbmcgb3V0IERBVCAoZm9yIHNlY3VyaXR5KS4KCQkJJ2RiX
2NoYXJzZXQnICAgICAgICAgICA9PiAkd3BkYi0+Y2hhcnNldCwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgLy8gQ2hhcnNldCBvZiB0aGUgZGF0YWJhc2UuIEVnIHV0ZjgsIHV0Zm1
iNC4gQHNpbmNlIHY2LjAuMC42LgoJCQknZGJfY29sbGF0ZScgICAgICAgICAgID0+ICR3cGRiLT5jb2xsYX
RlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb2xsYXRlIG9mI
HRoZSBkYXRhYmFzZS4gRWcgdXRmOCwgdXRmbWI0LiBAc2luY2UgdjYuMC4wLjYuCgkJCSdkYl9wcmVmaXgn
ICAgICAgICAgICAgPT4gJHdwZGItPnByZWZpeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgIC8vIERCIHByZWZpeC4gKEV4YW1wbGU6IHdwXykuCgkJCSdkYl9zZXJ2ZXInICAgIC
AgICAgICAgPT4gREJfSE9TVCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgIC8vIERCIGhvc3QgLyBzZXJ2ZXIgYWRkcmVzcy4KCQkJJ2RiX25hbWUnICAgICAgICAgICAg
ICA9PiBEQl9OQU1FLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgLy8gREIgbmFtZS4KCQkJJ2RiX3VzZXInICAgICAgICAgICAgICA9PiAnJywgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHNldmVyYWwgbGluZ
XMgZG93biBhZnRlciBwcmludGluZyBvdXQgREFULgoJCQknZGJfcGFzc3dvcmQnICAgICAgICAgID0+ICcn
LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB
TZXQgc2V2ZXJhbCBsaW5lcyBkb3duIGFmdGVyIHByaW50aW5nIG91dCBEQVQuCgkJCSdkYl9leGNsdXNpb2
5zJyAgICAgICAgPT4gaW1wbG9kZSggJywnLCAkc2V0dGluZ3NbJ2RiX2V4Y2x1ZGVzJ10gKSwKCQkJJ2RiX
2luY2x1c2lvbnMnICAgICAgICA9PiBpbXBsb2RlKCAnLCcsICRzZXR0aW5nc1snZGJfaW5jbHVkZXMnXSAp
LAoJCQknZGJfdmVyc2lvbicgICAgICAgICAgID0+ICR3cGRiLT5kYl92ZXJzaW9uKCksICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERhdGFiYXNlIHNlcnZlciAobXlzcWwpIHZlcnNpb24uCg
kJCSdicmVha291dF90YWJsZXMnICAgICAgPT4gJHNldHRpbmdzWydicmVha291dF90YWJsZXMnXSwgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgLy8gVGFibGVzIGJyb2tlbiBvdXQgaW50byBpbmRpdmlkdWFsIGJh
Y2t1cCBzdGVwcy4KCQkJJ3RhYmxlc19zaXplcycgICAgICAgICA9PiAkc2V0dGluZ3NbJ3RhYmxlX3NpemV
zJ10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUYWJsZXMgYmFja2VkIHVwIGFuZCB0aG
VpciBzaXplcy4KCQkJJ2ZvcmNlX3NpbmdsZV9kYl9maWxlJyA9PiAkc2V0dGluZ3NbJ2ZvcmNlX3NpbmdsZ
V9kYl9maWxlJ10sICAgICAgICAgICAgICAgICAgICAgICAvLyBUYWJsZXMgZm9yY2VkIGludG8gYSBzaW5n
bGUgZGJfMS5zcWwgZmlsZS4KCQkJJ3NraXBfZGF0YWJhc2VfZHVtcCcgICA9PiAkc2V0dGluZ3NbJ3NraXB
fZGF0YWJhc2VfZHVtcCddLAoKCQkJLy8gTXVsdGlzaXRlIEluZm8uCgkJCSdpc19tdWx0aXNpdGUnICAgIC
AgICAgPT4gJGlzX211bHRpc2l0ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgIC8vIEZ1bGwgTmV0d29yayBiYWNrdXA/CgkJCSdpc19tdWx0aXNpdGVfZXhwb3J0JyAgPT4gJGlz
X211bHRpc2l0ZV9leHBvcnQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFN
1YnNpdGUgYmFja3VwIChleHBvcnQpPwoJCQknZG9tYWluJyAgICAgICAgICAgICAgID0+IGlzX29iamVjdC
ggJGN1cnJlbnRfYmxvZyApID8gJGN1cnJlbnRfYmxvZy0+ZG9tYWluIDogJycsICAgICAvLyBFeDogYm9iL
mNvbS4KCQkJJ3BhdGgnICAgICAgICAgICAgICAgICA9PiBpc19vYmplY3QoICRjdXJyZW50X2Jsb2cgKSA/
ICRjdXJyZW50X2Jsb2ctPnBhdGggOiAnJywgICAgICAgLy8gRXg6IC93b3JkcHJlc3MvLgoJCQkndXBsb2F
kX3VybCcgICAgICAgICAgID0+ICR1cGxvYWRfdXJsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAvLyBQcmV0dHkgVVJMLgoJCQkndXBsb2FkX3VybF9yZXdyaXRlJyAgID0+I
CR1cGxvYWRfdXJsX3Jld3JpdGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBSZWFsIGV4aXN0aW5nIFVSTCB0aGF0IHRoZSBwcmV0dHkgVVJMIHdpbGwgYmUgcmV3cml0dGVuIHRvLgo
KCQkJLy8gSW1wb3J0QnVkZHkgT3B0aW9ucy4KCQkJLy8gJ2ltcG9ydF9kaXNwbGF5X3ByZXZpb3VzX3ZhbH
VlcycJPT4JcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydpbXBvcnRfZGlzcGxheV9wcmV2aW91c192YWx1Z
XMnXSwJLy8gV2hldGhlciBvciBub3QgdG8gZGlzcGxheSB0aGUgcHJldmlvdXMgdmFsdWVzIGZyb20gdGhl
IHNvdXJjZSBvbiBpbXBvcnQuIFVzZWZ1bCBpZiBjdXN0b21lciBkb2VzIG5vdCB3YW50IHRvIGJsYXRhbnR
seSBkaXNwbGF5IHByZXZpb3VzIHZhbHVlcyB0byBhbnlvbmUgcmVzdG9yaW5nIHRoZSBiYWNrdXAuCgkJKT
sgLy8gRW5kIHNldHRpbmcgJGRhdF9jb250ZW50LgoKCQkvLyBJZiBjdXJyZW50bHkgdXNpbmcgU1NMIG9yI
GZvcmNpbmcgYWRtaW4gU1NMIHRoZW4gd2Ugd2lsbCBjaGVjayB0aGUgaGFyZGNvZGVkIGRlZmluZWQgVVJM
IHRvIG1ha2Ugc3VyZSBpdCBtYXRjaGVzLgoJCWlmICggaXNfc3NsKCkgb3IgKCBkZWZpbmVkKCAnRk9SQ0V
fU1NMX0FETUlOJyApICYmIHRydWUgPT0gRk9SQ0VfU1NMX0FETUlOICkgKSB7CgkJCSRkYXRfY29udGVudF
snc2l0ZXVybCddID0gZ2V0X29wdGlvbiggJ3NpdGV1cmwnICk7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0d
XMoICdkZXRhaWxzJywgX18oICdDb21wZW5zYXRp
bmcgZm9yIFNTTCBpbiBzaXRldXJsLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJfQoKCQkvLyB
PdXRwdXQgZm9yIHRyb3VibGVzaG9vdGluZy4KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscy
csICdEQVQgZmlsZSBjb250ZW50cyAoc2FucyBkYXRhYmFzZSB1c2VyL3Bhc3MpOiAnIC4gc3RyX3JlcGxhY
2UoICJcbiIsICc7ICcsIHByaW50X3IoICRkYXRfY29udGVudCwgdHJ1ZSApICkgKTsKCgkJLy8gUmVtYWlu
aW5nIERCIHNldHRpbmdzLgoJCSRkYXRfY29udGVudFsnZGJfdXNlciddICAgICA9IERCX1VTRVI7CgkJJGR
hdF9jb250ZW50WydkYl9wYXNzd29yZCddID0gREJfUEFTU1dPUkQ7CgoJCS8vIFNlcmlhbGl6ZSAuZGF0IG
ZpbGUgYXJyYXkuCgkJJGVuY29kZWRfZGF0X2NvbnRlbnQgPSAiPD9waHAgZGllKCdBY2Nlc3MgRGVuaWVkL
icpOyAvLyA8IS0tID8+XG4iIC4gYmFzZTY0X2VuY29kZSggc2VyaWFsaXplKCAkZGF0X2NvbnRlbnQgKSAp
OwoKCQkvLyBUT0RPOiByZW1vdmUgZXhpc3RzIG5vdGUgaWYgbm8gbW9yZSBwcm9ibGVtcyB3aXRoIHRoaXM
gYWZ0ZXIgYWRkaW5nIHRoZSBhYm92ZSBkaXJlY3RvcnkgbWFraW5nLgoJCSRleGlzdGVkID0gJ25vJzsKCQ
lpZiAoIGZpbGVfZXhpc3RzKCAkZGF0X2ZpbGUgKSApIHsKCQkJJGV4aXN0ZWQgPSAneWVzJzsKCQl9CgoJC
S8vIFdyaXRlIGRhdGEgdG8gdGhlIGRhdCBmaWxlLgoJCSRmaWxlX2hhbmRsZSA9IGZvcGVuKCAkZGF0X2Zp
bGUsICd3JyApOwoJCWlmICggZmFsc2UgPT09ICRmaWxlX2hhbmRsZSApIHsKCQkJJGVycm9yID0gJ0Vycm9
yICM5MDE3OiBVbmFibGUgdG8gZm9wZW4gREFUIGZpbGUgYCcgLiAkZGF0X2ZpbGUgLiAnYC4gQ2hlY2sgZm
lsZS9kaXJlY3RvcnkgcGVybWlzc2lvbnMuIEFscmVhZHkgZXhpc3RlZD86IGAnIC4gJGV4aXN0ZWQgLiAnY
C4nOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAkZXJyb3IgKTsKCQkJQGZjbG9zZSgg
JGZpbGVfaGFuZGxlICk7CgkJCXJldHVybiAkZXJyb3I7CgkJfQoJCWlmICggZmFsc2UgPT09IGZ3cml0ZSg
gJGZpbGVfaGFuZGxlLCAkZW5jb2RlZF9kYXRfY29udGVudCApICkgewoJCQkkZXJyb3IgPSAnRXJyb3IgIz
M0ODkzNDg0MzogVW5hYmxlIHRvIGZ3cml0ZSB0byBEQVQgZmlsZSBgJyAuICRkYXRfZmlsZSAuICdgLiBDa
GVjayBmaWxlL2RpcmVjdG9yeSBwZXJtaXNzaW9ucy4gQWxyZWFkeSBleGlzdGVkPzogYCcgLiAkZXhpc3Rl
ZCAuICdgLic7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRlcnJvciApOwoJCQlAZmN
sb3NlKCAkZmlsZV9oYW5kbGUgKTsKCQkJcmV0dXJuICRlcnJvcjsKCQl9CgkJQGZjbG9zZSggJGZpbGVfaG
FuZGxlICk7CgoJCXJldHVybiAkZGF0X2NvbnRlbnQ7IC8vIEFycmF5IG9mIGRhdCBjb250ZW50IHdoaWNoI
HdhcyB3cml0dGVuIHRvIERBVCBmaWxlLgoKCX0gLy8gRW5kIHJlbmRlcl9kYXRfY29udGVudHMoKS4KCgoJ
LyoqCgkgKiBUcnVuY2F0ZXMgYSBmaWxlIGZyb20gdGhlIEJFR0lOTklORy4gRWcgZm9yIHRyaW1taW5nIGx
vZ3Mgd2hpbGUgbGVhdmluZyB0aGUgbW9zdCByZWNlbnQgKGF0IHRoZSBib3R0b20pIGNvbnRlbnQuCgkgKg
oJICogQHBhcmFtIHN0cmluZyAkZmlsZW5hbWUgICAgICBQYXRoIHRvIGZpbGUgdG8gdHJ1bmNhdGUuCgkgK
iBAcGFyYW0gaW50ICAgICRtYXhmaWxlc2l6ZSAgIE1heGltdW0gZmlsZSBzaXplLgoJICogQHBhcmFtIGlu
dCAgICAka2VlcF9wZXJjZW50ICBQZXJjZW50YWdlIHRvIGtlZXAuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnV
uY3Rpb24gdHJ1bmNhdGVfZmlsZV9iZWdpbm5pbmcoICRmaWxlbmFtZSwgJG1heGZpbGVzaXplLCAka2VlcF
9wZXJjZW50ID0gNTAgKSB7CgkJQGNsZWFyc3RhdGNhY2hlKCB0cnVlLCAkZmlsZW5hbWUgKTsKCQkkc2l6Z
SA9IEBmaWxlc2l6ZSggJGZpbGVuYW1lICk7CgkJaWYgKCBmYWxzZSA9PT0gJHNpemUgKSB7CgkJCXJldHVy
bjsgLy8gRmlsZSBkaWQgbm90IGV4aXN0L2Nhbm5vdCBhY2Nlc3MuCgkJfQoJCWlmICggJHNpemUgPCAkbWF
4ZmlsZXNpemUgKSB7CgkJCXJldHVybjsKCQl9CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaW
xzJywgJ1RydW5jYXRpbmcgTEFSR0UgZmlsZSBgJyAuICRmaWxlbmFtZSAuICdgIG9mIHNpemUgYCcgLiBwY
l9iYWNrdXBidWRkeTo6JGZvcm1hdC0+ZmlsZV9zaXplKCAkc2l6ZSApIC4gJ2AgZXhjZWVkaW5nIHRocmVz
aG9sZCwgb25seSBrZWVwaW5nIG5ld2VzdCAnIC4gJGtlZXBfcGVyY2VudCAuICclLicgKTsKCgkJJG1heGZ
pbGVzaXplID0gJG1heGZpbGVzaXplICogKCAka2VlcF9wZXJjZW50IC8gMTAwICk7IC8vIGtlZXAgbmV3ZX
N0IHBhcnQgdXAgdG8gY2V0YWluIHBlcmNlbnQuCgkJJGZoICAgICAgICAgID0gZm9wZW4oICRmaWxlbmFtZ
SwgJ3IrJyApOwoJCSRzdGFydCAgICAgICA9IEBmdGVsbCggJGZoICk7CgkJaWYgKCBmYWxzZSA9PT0gJHN0
YXJ0ICkgewoJCQlyZXR1cm47IC8vIEZpbGUgZGlkIG5vdCBleGlzdC9jYW5ub3QgYWNjZXNzLgoJCX0KCQl
mc2VlayggJGZoLCAtJG1heGZpbGVzaXplLCBTRUVLX0VORCApOyAvLyBTZWVrIHRvIG1pZGRsZSBmcm9tIH
RoZSBlbmQuCgkJJHN0YXJ0ICA9IGZnZXRzKCAkZmggKTsgLy8gR2V0IHN0YXJ0IHBvc2l0aW9uLgoJCSRsZ
W5ndGggPSAoIChpbnQpICRzaXplIC0gKGludCkgJHN0YXJ0ICk7CgoJCS8vIENhdGNoIGluc3RhbmNlcyB3
aGVyZSBmcmVhZCBsZW5ndGggcGFyYW1ldGVyIHdhcyBjb21pbmcgaW4gbGVzcyB0aGFuIDAuCgkJaWYgKCA
kbGVuZ3RoIDwgMSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gUmVhZCBpbiBmaWxlIGZyb20gbW
lkZGxlIHBvaW50LgoJCSRjb250ZW50cyA9IGZyZWFkKCAkZmgsICRsZW5ndGggKTsKCgkJLy8gRmluZCBma
XJzdCBuZXdsaW5lICYgY3V0IG9mZiBldmVyeXRoaW5nIGJlZm9yZSBpdCBzbyB3ZSBtYWtlIHN1cmUgdG8g
c3RhcnQgYXQgYSBmcmVzaCBsaW5lIChubyBoYWxmIGxpbmVzIGFzIGJlZ2lubmluZykuCgkJJGZpcnN0X25
ld2xpbmUgPSBzdHJwb3MoICRjb250ZW50cywgIlxuIiApOwoJCWlmICggZmFsc2UgPT09ICRmaXJzdF9uZX
dsaW5lICkgewoJCQkkZmlyc3RfbmV3bGluZSA9IDA7IC8vIE5vIG5ld2xpbmUuCgkJfSBlbHNlIHsKCQkJJ
GZpcnN0X25ld2xpbmUrKzsgLy8gQWZ0ZXIgbmV3IGxpbmUuCgkJfQoJCSRjb250ZW50cyA9IHN1YnN0cigg
JGNvbnRlbnRzLCAkZmlyc3RfbmV3bGluZSApOyAvLyBDdXQgb3V0IHVwIHRvIHRoZSBmaXJzdCBuZXdsaW5
lIChqdXN0IGFmdGVyKS4KCgkJLy8gV3JpdGUgbmV3IGZpbGUgY29udGVudHMgb3ZlciBleGlzdGluZyBmaW
xlIGRhdGEuCgkJZnRydW5jYXRlKCAkZmgsIDAgKTsgLy8gRXJhc2UgY3VycmVudCBjb250ZW50cy4KCQlmc
2VlayggJGZoLCAwICk7CgkJZndyaXRlKCAkZmgsICRjb250ZW50cyApOwoKCQkvLyBDbGVhbnVwLgoJCWZj
bG9zZSggJGZoICk7Cgl9IC8vIEVuZCB0cnVuY2F0ZV9maWxlX2JlZ2lubmluZygpLgoKCS8qKgoJICogU29
1cmNlOiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI5NjE2MTgvaG93LXRvLXJlYWQtb2
5seS01LWxhc3QtbGluZS1vZi10aGUtdGV4dC1maWxlLWluLXBocAoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJ
GZpbGVuYW1lICBGaWxlIG5hbWUuCgkgKiBAcGFyYW0gYXJyYXkgICRsaW5lcyAgICAgTGluZXMgaW4gZmls
ZSB0byByZWFkLgoJICogQHBhcmFtIGJvb2wgICAkcmV2ZXJzICAgIFJlYWQgaW4gcmV2ZXJzZS4gRGVmYXV
sdCBmYWxzZS4KCSAqCgkgKiBAcmV0dXJuIHN0cmluZyAgTGFzdCBsaW5lcy4KCSAqLwoJcHVibGljIHN0YX
RpYyBmdW5jdGlvbiByZWFkX2JhY2t3YXJkX2xpbmUoICRmaWxlbmFtZSwgJGxpbmVzLCAkcmV2ZXJzID0gZ
mFsc2UgKSB7CgkJJG9mZnNldCA9IC0xOwoJCSRjICAgICAgPSAnJzsKCQkkcmVhZCAgID0gJyc7CgkJJGkg
ICAgICA9IDA7CgkJJGZwICAgICA9IEBmb3BlbiggJGZpbGVuYW1lLCAncicgKTsKCQl3aGlsZSAoICRsaW5
lcyAmJiBmc2VlayggJGZwLCAkb2Zmc2V0LCBTRUVLX0VORCApID49IDAgKSB7CgkJCSRjID0gZmdldGMoIC
RmcCApOwoJCQlpZiAoICJcbiIgPT0gJGMgfHwgIlxyIiA9PSAkYyApIHsKCQkJCSRsaW5lcy0tOwoJCQkJa
WYgKCAkcmV2ZXJzICkgewoJCQkJCSRyZWFkWyAkaSBdID0gc3RycmV2KCAkcmVhZFsgJGkgXSApOwoJCQkJ
CSRpKys7CgkJCQl9CgkJCX0KCQkJaWYgKCAkcmV2ZXJzICkgewoJCQkJJHJlYWRbICRpIF0gLj0gJGM7Cgk
JCX0gZWxzZSB7CgkJCQkkcmVhZCAuPSAkYzsKCQkJfQoJCQkkb2Zmc2V0LS07CgkJfQoJCWZjbG9zZSggJG
ZwICk7CgkJaWYgKCAkcmV2ZXJzICkgewoJCQlpZiAoICJcbiIgPT0gJHJlYWRbICRpIF0gfHwgIlxyIiA9P
SAkcmVhZFsgJGkgXSApIHsKCQkJCWFycmF5X3BvcCggJHJlYWQgKTsKCQkJfSBlbHNlIHsKCQkJCSRyZWFk
WyAkaSBdID0gc3RycmV2KCAkcmVhZFsgJGkgXSApOwoJCQl9CgkJCXJldHVybiBpbXBsb2RlKCAnJywgJHJ
lYWQgKTsKCQl9CgkJcmV0dXJuIHN0cnJldiggcnRyaW0oICRyZWFkLCAiXG5cciIgKSApOwoJfQoKCS8qKg
oJICogVHJ1bmNhdGVzIGEgZmlsZSBmcm9tIHRoZSBCRUdJTk5JTkcuIEVnIGZvciB0cmltbWluZyBsb2dzI
HdoaWxlIGxlYXZpbmcgdGhlIG1vc3QgcmVjZW50IChhdCB0aGUgYm90dG9tKSBjb250ZW50LgoJICoKCSAq
IE9MRCBmdW5jdGlvbi4gTW9yZSBwcmVjaXNlIGJ1dCBTTE9XLi4uCgkgKgoJICogQHBhcmFtIHN0cmluZyA
kZmlsZW5hbWUgICAgICBQYXRoIHRvIGZpbGUgdG8gdHJ1bmNhdGUuCgkgKiBAcGFyYW0gaW50ICAgICRtYX
hmaWxlc2l6ZSAgIE1heCBmaWxlIHNpemUuCgkgKiBAcGFyYW0gaW50ICAgICRrZWVwX3BlcmNlbnQgIFBlc
mNlbnRhZ2Ugb2YgZmlsZSB0byBrZWVwLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHRydW5jYXRl
X2ZpbGVfYmVnaW5uaW5nX3Nsb3coICRmaWxlbmFtZSwgJG1heGZpbGVzaXplLCAka2VlcF9wZXJjZW50ID0
gNTAgKSB7CgkJJHNpemUgPSBmaWxlc2l6ZSggJGZpbGVuYW1lICk7CgkJaWYgKCAkc2l6ZSA8ICRtYXhmaW
xlc2l6ZSApIHsKCQkJcmV0dXJuOwoJCX0KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnL
CAnVHJ1bmNhdGluZyBMQVJHRSBmaWxlIGAnIC4gJGZpbGVuYW1lIC4gJ2Agb2Ygc2l6ZSBgJyAuIHBiX2Jh
Y2t1cGJ1ZGR5OjokZm9ybWF0LT5maWxlX3NpemUoICRzaXplICkgLiAnYCBleGNlZWRpbmcgdGhyZXNob2x
kLCBvbmx5IGtlZXBpbmcgbmV3ZXN0ICcgLiAka2VlcF9wZXJjZW50IC4gJyUuJyApOwoKCQkkbWF4ZmlsZX
NpemUgPSAkbWF4ZmlsZXNpemUgKiAoICRrZWVwX3BlcmNlbnQgLyAxMDAgKTsgLy8ga2VlcCBuZXdlc3Qgc
GFydCB1cCB0byBjZXRhaW4gcGVyY2VudC4KCQkkZmggICAgICAgICAgPSBmb3BlbiggJGZpbGVuYW1lLCAn
cisnICk7CgkJJHN0YXJ0ICAgICAgID0gZnRlbGwoICRmaCApOwoJCWZzZWVrKCAkZmgsIC0kbWF4ZmlsZXN
pemUsIFNFRUtfRU5EICk7CgkJJGRyb3AgICA9IGZnZXRzKCAkZmggKTsKCQkkb2Zmc2V0ID0gZnRlbGwoIC
RmaCApOwoJCWZvciAoICR4ID0gMDskeCA8ICRtYXhmaWxlc2l6ZTskeCsrICkgewoJCQlmc2VlayggJGZoL
CAkeCArICRvZmZzZXQgKTsKCQkJJGMgPSBmZ2V0YyggJGZoICk7CgkJCWZzZWVrKCAkZmgsICR4ICk7CgkJ
CWZ3cml0ZSggJGZoLCAkYyApOwoJCX0KCQlmdHJ1bmNhdGUoICRmaCwgJG1heGZpbGVzaXplIC0gc3RybGV
uKCAkZHJvcCApICk7CgkJZmNsb3NlKCAkZmggKTsKCX0gLy8gRW5kIHRydW5jYXRlX2ZpbGVfYmVnaW5uaW
5nKCkuCgoKCS8qKgoJICogQXR0ZW1wdHMgdG8gY2FsY3VsYXRlIHRoZSBhY3R1YWwgbWF4aW11bSBQSFAgZ
XhlY3V0aW9uIHRpbWUgYnkgd3JpdGluZyB0byBhIHRleHQgZmlsZSBvbmNlIHBlciBzZWNvbmQgdGhlIHRp
bWUgZWxhcHNlZCBzaW5jZSBwYl9iYWNrdXBidWRkeSBjbGFzcyBsb2FkZWQuCgkgKgoJICogQHBhcmFtIGJ
vb2wgJHNjaGVkdWxlX3Jlc3VsdHMgIFNjaGVkdWxlIHJlc3VsdHMuCgkgKiBAcGFyYW0gYm9vbCAkZm9yY2
VfcnVuICAgICAgICAgRm9yY2UgcnVuLgoJICoKCSAqIEByZXR1cm4gZmFsc2V8dm9pZCAgRmFsc2UgaWYgZ
Glkbid0IHJ1bi4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwaHBfcnVudGltZV90ZXN0KCAkc2No
ZWR1bGVfcmVzdWx0cyA9IGZhbHNlLCAkZm9yY2VfcnVuID0gZmFsc2UgKSB7CgkJcGJfYmFja3VwYnVkZHk
6OnN0YXR1cyggJ2RldGFpbHMnLCAnQmVnaW5uaW5nIFBIUCBydW50aW1lIHRlc3QgZnVuY3Rpb24uJyApOw
oJCSR0ZXN0X2ZpbGUgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3RvcnkoKSAuICdwaHBfcnVud
GltZV90ZXN0LnR4dCc7CgoJCS8vIE1ha2Ugc3VyZSBub3QgcnVubmluZyB0b28gb2Z0ZW4sIGV2ZW4gaWYg
c2NoZWR1bGVkLgoJCWlmICggZmFsc2UgPT09ICRmb3JjZV9ydW4gKSB7CgkJCSRlbGFwc2VkID0gdGltZSg
pIC0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydsYXN0X3Rlc3RlZF9waHBfcnVudGltZSddOwoJCQlpZi
AoICRlbGFwc2VkIDwgcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydwaHBfcnVudGltZV90ZXN0X21pbmltd
W1faW50ZXJ2YWwnXSApIHsgLy8gTm90IGVub3VnaCB0aW1lIGVsYXBzZWQgc2luY2UgbGFzdCBydW4uCgkJ
CQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdOb3QgZW5vdWdoIHRpbWUgZWxhcHNlZCB
zaW5jZSBsYXN0IFBIUCBydW50aW1lIHRlc3QgaW50ZXJ2YWwuIEVsYXBzZWQ6IGAnIC4gJGVsYXBzZWQgLi
AnYC4gSW50ZXJ2YWwgbGltaXQ6IGAnIC4gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydwaHBfcnVudGltZ
V90ZXN0X21pbmltdW1faW50ZXJ2YWwnXSAuICdgLicgKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0K
CgkJLy8gSWYgdGVzdCBmaWxlIGFscmVhZHkgZXhpc3RzLCBtYWtlIHN1cmUgaXQgZG9lc24ndCBsb29rIGx
pa2UgYSB0ZXN0IGlzIGFscmVhZHkgcnVubmluZy4KCQlpZiAoIGZpbGVfZXhpc3RzKCAkdGVzdF9maWxlIC
kgKSB7CgkJCSRsYXN0X3VwZGF0ZV90aW1lID0gZmlsZW10aW1lKCAkdGVzdF9maWxlICk7CgkJCWlmICggZ
mFsc2UgIT09ICRsYXN0X3VwZGF0ZV90aW1lICkgeyAvLyBpZiB3ZSBjYW4gZ2V0IGZpbGVtdGltZS4uLgoJ
CQkJaWYgKCAoIHRpbWUoKSAtICRsYXN0X3VwZGF0ZV90aW1lICkgPCBiYWNrdXBidWRkeV9jb25zdGFudHM
6OlBIUF9SVU5USU1FX1JFVEVTVF9ERUxBWSApIHsgLy8gTm90IGVub3VnaCB0aW1lIGhhcyBwYXNzZWQgc2
luY2UgbGFzdCBzY2FuIGxhc3QgdXBkYXRlZCBmaWxlIHNvIGl0IE1BWSBzdGlsbCBiZSBnb2luZy4KCQkJC
QlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdQSFAgcnVudGltZSB0ZXN0OiBOb3QgZW5v
dWdoIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGU
gbGFzdCB0ZXN0IHVwZGF0ZWQgdGhlIGZpbGUuJyApOwoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJfQ
oJCX0KCgkJLy8gT3BlbiB0ZXN0IGZpbGUgZm9yIHdyaXRpbmcuCgkJJGZzbyA9IEBmb3BlbiggJHRlc3RfZ
mlsZSwgJ3cnICk7CgkJaWYgKCBmYWxzZSA9PT0gJGZzbyApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJ
Ly8gU2NoZWR1bGUgcmVzdWx0cyBjYWxjdWxhdGlvbiB0byBoYXBwZW4gYWZ0ZXJ3YXJkcyBpZiBlbmFibGV
kLgoJCWlmICggdHJ1ZSA9PT0gJHNjaGVkdWxlX3Jlc3VsdHMgKSB7CgkJCS8vIFNjaGVkdWxlIHRlc3Qgcm
VzdWx0cyBjYWxjdWxhdGlvbiB0byBydW4uCgkJCSRjcm9uX2FyZ3MgICAgICAgPSBhcnJheSgpOwoJCQkkc
2NoZWR1bGVfcmVzdWx0ID0gYmFja3VwYnVkZHlfY29yZTo6c2NoZWR1bGVfc2luZ2xlX2V2ZW50KCB0aW1l
KCkgKyBiYWNrdXBidWRkeV9jb25zdGFudHM6OlBIUF9SVU5USU1FX1RFU1RfTUFYX1RJTUUgKyBiYWNrdXB
idWRkeV9jb25zdGFudHM6OlBIUF9SVU5USU1FX1JFVEVTVF9ERUxBWSArIDUsICdwaHBfcnVudGltZV90ZX
N0X3Jlc3VsdHMnLCAkY3Jvbl9hcmdzICk7CgkJCWlmICggdHJ1ZSA9PT0gJHNjaGVkdWxlX3Jlc3VsdCApI
HsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1BIUCBydW50aW1lIHRlc3QgcmVz
dWx0cyBjcm9uIGV2ZW50IHNjaGVkdWxlZC4nICk7CgkJCX0gZWxzZSB7CgkJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZXJyb3InLCAnUEhQIHJ1bnRpbWUgdGVzdCByZXN1bHRzIGNyb24gZXZlbnQgRkFJTEVEIH
RvIGJlIHNjaGVkdWxlZC4nICk7CgkJCX0KCQl9CgoJCS8vIE9uY2UgcGVyIHNlY29uZCB3cml0ZSB0byB0a
GUgZmlsZSB0aGUgbnVtYmVyIG9mIHNlY29uZHMgZWxhcHNlZCBzaW5jZSB0aGUgdGVzdCBiZWdhbi4KCQlw
Yl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTdGFydCBQSFAgcnVudGltZSB0ZXN0IGxvb3B
zLicgKTsKCQkkbG9vcF9jb3VudCAgICAgICA9IDA7CgkJJGxvb3BzX3Blcl9zZWNvbmQgPSBmYWxzZTsKCQ
kkdG90YWxfbG9vcHMgICAgICA9IGJhY2t1cGJ1ZGR5X2NvbnN0YW50czo6UEhQX1JVTlRJTUVfVEVTVF9NQ
VhfVElNRTsgLy8gW2RlZmF1bHQ6IDMwMCAoc2VjKSA9IDVtaW5dLgoKCQkvLyBTdG9yZSBjdXJyZW50IGVy
cm9yIHJlcG9ydGluZyBsZXZlbCBhbmQgdGVtcCBzZXQgdG8gMC4KCQkkcmVwb3J0aW5nX2xldmVsID0gZXJ
yb3JfcmVwb3J0aW5nKCk7CgkJZXJyb3JfcmVwb3J0aW5nKCAwICk7CgoJCXdoaWxlICggJGxvb3BfY291bn
QgPD0gJHRvdGFsX2xvb3BzICkgewoJCQkkbG9vcF9jb3VudCsrOwoJCQlAZnRydW5jYXRlKCAkZnNvLCAwI
Ck7IC8vIEVyYXNlIGV4aXN0aW5nIGZpbGUgY29udGVudHMuCgkJCSR0aW1lX2VsYXBzZWQgPSByb3VuZCgg
bWljcm90aW1lKCB0cnVlICkgLSBwYl9iYWNrdXBidWRkeTo6JHN0YXJ0X3RpbWUsIDIgKTsKCQkJaWYgKCB
mYWxzZSA9PT0gQGZ3cml0ZSggJGZzbywgJHRpbWVfZWxhcHNlZCApICkgeyAvLyBVcGRhdGUgdGltZSBlbG
Fwc2VkIGludG8gZmlsZS4KCQkJCSR0b3RhbF9sb29wcyA9IDA7CgkJCQkvLyBSZXNldCBvcmlnaW5hbCBlc
nJvcl9yZXBvcnRpbmcgbGV2ZWwgYmVmb3JlIGV4aXRpbmcuCgkJCQllcnJvcl9yZXBvcnRpbmcoICRyZXBv
cnRpbmdfbGV2ZWwgKTsKCQkJCWJyZWFrOyAvLyBTdG9wIHNpbmNlIHdyaXRpbmcgZmFpbGVkLgoJCQl9Cgo
JCQlpZiAoIGZhbHNlID09PSAkbG9vcHNfcGVyX3NlY29uZCApIHsKCQkJCSRzdGFydCAgID0gbWljcm90aW
1lKCB0cnVlICk7CgkJCQkkY291bnRlciA9IDA7CgoJCQkJd2hpbGUgKCAkY291bnRlcisrIDwgMTAwMDAwI
CkgewoJCQkJfQoKCQkJCSR0aW1lICAgICAgICAgICAgID0gbWljcm90aW1lKCB0cnVlICkgLSAkc3RhcnQ7
CgkJCQkkbG9vcHNfcGVyX3NlY29uZCA9ICRjb3VudGVyIC8gJHRpbWU7CgoJCQkJaWYgKCAkdGltZSA+PSA
xICkgewoJCQkJCSRsb29wX2NvdW50ICs9IGZsb29yKCAkdGltZSApOwoJCQkJfSBlbHNlIHsKCQkJCQkvLy
BXYXN0ZSB0aGUgcmVtYWluaW5nIHBvcnRpb24gb2YgYSBzZWNvbmQKCQkJCQl3aGlsZSAoICRjb3VudGVyK
ysgPCAkbG9vcHNfcGVyX3NlY29uZCApIHsKCQkJCQl9CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQkkY291bnRl
ciA9IDA7CgkJCQkvLyBXYXN0ZSBhcHByb3hpbWF0ZWx5IDEgc2Vjb25kCgkJCQl3aGlsZSAoICRjb3VudGV
yKysgPCAkbG9vcHNfcGVyX3NlY29uZCApIHsKCQkJCX0KCQkJfQoJCX0gLy8gZW5kIHdoaWxlLgoKCQkvLy
BTZXQgZXJyb3IgcmVwb3J0aW5nIGJhY2sgdG8gb3JpZ2luYWwgbGV2ZWwsIGFsdGhvdWdoIHRoZSBzY3Jpc
HQgaXMgcHJvYmFibHkgZGVhZCBhdCB0aGlzIHBvaW50LgoJCWVycm9yX3JlcG9ydGluZyggJHJlcG9ydGlu
Z19sZXZlbCApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0VuZCBQSFAgcnVudGl
tZSB0ZXN0IGxvb3BzLicgKTsKCgkJQGZjbG9zZSggJGZzbyApOwoKCX0gLy8gRW5kIHBocF9ydW50aW1lX3
Rlc3QoKS4KCgkvKioKCSAqIEF0dGVtcHRzIHRvIGNhbGN1bGF0ZSB0aGUgYWN0dWFsIG1heGltdW0gUEhQI
G1lbW9yeSBsaW1pdCBieSB3cml0aW5nIHRvIGEgdGV4dCBmaWxlIHdoaWxlIGluY3JlYXNpbmcgbWVtb3J5
IHVzYWdlLgoJICoKCSAqIEBwYXJhbSBib29sICRzY2hlZHVsZV9yZXN1bHRzICBTY2hlZHVsZSByZXN1bHR
zLgoJICogQHBhcmFtIGJvb2wgJGZvcmNlX3J1biAgICAgICAgIEZvcmNlIFJ1bi4KCSAqCgkgKiBAcmV0dX
JuIGZhbHNlfHZvaWQgIEZhbHNlIGlmIGRpZG4ndCBydW4uCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb
24gcGhwX21lbW9yeV90ZXN0KCAkc2NoZWR1bGVfcmVzdWx0cyA9IGZhbHNlLCAkZm9yY2VfcnVuID0gZmFs
c2UgKSB7CgkJJGluY3JlbWVudF9tYiA9IDE7IC8vIEhvdyBtYW55IE1CIHRvIGluY3JlbWVudCBwZXIgY2h
1bmsuCgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0JlZ2lubmluZyBQSFAgbWVtb3
J5IHRlc3QgZnVuY3Rpb24uJyApOwoJCSR0ZXN0X2ZpbGUgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEa
XJlY3RvcnkoKSAuICdwaHBfbWVtb3J5X3Rlc3QudHh0JzsKCgkJLy8gTWFrZSBzdXJlIG5vdCBydW5uaW5n
IHRvbyBvZnRlbiwgZXZlbiBpZiBzY2hlZHVsZWQuCgkJaWYgKCBmYWxzZSA9PT0gJGZvcmNlX3J1biApIHs
KCQkJJGVsYXBzZWQgPSB0aW1lKCkgLSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2xhc3RfdGVzdGVkX3
BocF9tZW1vcnknXTsKCQkJaWYgKCAkZWxhcHNlZCA8IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sncGhwX
21lbW9yeV90ZXN0X21pbmltdW1faW50ZXJ2YWwnXSApIHsgLy8gTm90IGVub3VnaCB0aW1lIGVsYXBzZWQg
c2luY2UgbGFzdCBydW4uCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdOb3QgZW5
vdWdoIHRpbWUgZWxhcHNlZCBzaW5jZSBsYXN0IFBIUCBtZW1vcnkgdGVzdCBpbnRlcnZhbC4gRWxhcHNlZD
ogYCcgLiAkZWxhcHNlZCAuICdgLiBJbnRlcnZhbCBsaW1pdDogYCcgLiBwYl9iYWNrdXBidWRkeTo6JG9wd
GlvbnNbJ3BocF9tZW1vcnlfdGVzdF9taW5pbXVtX2ludGVydmFsJ10gLiAnYC4nICk7CgkJCQlyZXR1cm4g
ZmFsc2U7CgkJCX0KCQl9CgoJCS8vIElmIHRlc3QgZmlsZSBhbHJlYWR5IGV4aXN0cywgbWFrZSBzdXJlIGl
0IGRvZXNuJ3QgbG9vayBsaWtlIGEgdGVzdCBpcyBhbHJlYWR5IHJ1bm5pbmcuCgkJaWYgKCBmaWxlX2V4aX
N0cyggJHRlc3RfZmlsZSApICkgewoJCQkkbGFzdF91cGRhdGVfdGltZSA9IGZpbGVtdGltZSggJHRlc3RfZ
mlsZSApOwoJCQlpZiAoIGZhbHNlICE9PSAkbGFzdF91cGRhdGVfdGltZSApIHsgLy8gaWYgd2UgY2FuIGdl
dCBmaWxlbXRpbWUuLi4KCQkJCWlmICggKCB0aW1lKCkgLSAkbGFzdF91cGRhdGVfdGltZSApIDwgYmFja3V
wYnVkZHlfY29uc3RhbnRzOjpQSFBfTUVNT1JZX1JFVEVTVF9ERUxBWSApIHsgLy8gTm90IGVub3VnaCB0aW
1lIGhhcyBwYXNzZWQgc2luY2UgbGFzdCBzY2FuIGxhc3QgdXBkYXRlZCBmaWxlIHNvIGl0IE1BWSBzdGlsb
CBiZSBnb2luZy4KCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdQSFAgbWVtb3J5
IHRlc3Q6IE5vdCBlbm91Z2ggdGltZSBoYXMgcGFzc2VkIHNpbmNlIHRoZSBsYXN0IHRlc3QgdXBkYXRlZCB
0aGUgZmlsZS4nICk7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkJfQoKCQkvLyBPcGVuIHRlc3
QgZmlsZSBmb3Igd3JpdGluZy4KCQkkZnNvID0gQGZvcGVuKCAkdGVzdF9maWxlLCAndycgKTsKCQlpZiAoI
GZhbHNlID09PSAkZnNvICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkvLyBTY2hlZHVsZSByZXN1bHRz
IGNhbGN1bGF0aW9uIHRvIGhhcHBlbiBhZnRlcndhcmRzIGlmIGVuYWJsZWQuCgkJaWYgKCB0cnVlID09PSA
kc2NoZWR1bGVfcmVzdWx0cyApIHsKCQkJLy8gU2NoZWR1bGUgdGVzdCByZXN1bHRzIGNhbGN1bGF0aW9uIH
RvIHJ1bi4KCQkJJGNyb25fYXJncyAgICAgICA9IGFycmF5KCk7CgkJCSRzY2hlZHVsZV9yZXN1bHQgPSBiY
WNrdXBidWRkeV9jb3JlOjpzY2hlZHVsZV9zaW5nbGVfZXZlbnQoIHRpbWUoKSArIGJhY2t1cGJ1ZGR5X2Nv
bnN0YW50czo6UEhQX01FTU9SWV9SRVRFU1RfREVMQVkgKyA1LCAncGhwX21lbW9yeV90ZXN0X3Jlc3VsdHM
nLCAkY3Jvbl9hcmdzICk7CgkJCWlmICggdHJ1ZSA9PT0gJHNjaGVkdWxlX3Jlc3VsdCApIHsKCQkJCXBiX2
JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1BIUCBtZW1vcnkgdGVzdCByZXN1bHRzIGNyb24gZ
XZlbnQgc2NoZWR1bGVkLicgKTsKCQkJfSBlbHNlIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdl
cnJvcicsICdQSFAgbWVtb3J5IHRlc3QgcmVzdWx0cyBjcm9uIGV2ZW50IEZBSUxFRCB0byBiZSBzY2hlZHV
sZWQuJyApOwoJCQl9CgkJfQoKCQkvLyBTdG9yZSBjdXJyZW50IGVycm9yIHJlcG9ydGluZyBsZXZlbCBhbm
QgdGVtcCBzZXQgdG8gMC4KCQkkcmVwb3J0aW5nX2xldmVsID0gZXJyb3JfcmVwb3J0aW5nKCk7CgkJZXJyb
3JfcmVwb3J0aW5nKCAwICk7CgoJCS8vIE9uY2UgcGVyIHNlY29uZCB3cml0ZSB0byB0aGUgZmlsZSB0aGUg
bnVtYmVyIG9mIHNlY29uZHMgZWxhcHNlZCBzaW5jZSB0aGUgdGVzdCBiZWdhbi4KCQlwYl9iYWNrdXBidWR
keTo6c3RhdHVzKCAnZGV0YWlscycsICdTdGFydCBQSFAgbWVtb3J5IHRlc3QgbG9vcHMuJyApOwoJCSRsb2
9wX2NvdW50ID0gMDsKCQkkYnVmZmVyICAgICA9ICcnOwoJCSRsb29wICAgICAgID0gdHJ1ZTsKCQl3aGlsZ
SAoIHRydWUgPT09ICRsb29wICkgewoJCQkkbG9vcF9jb3VudCsrOwoJCQlpZiAoICRsb29wX2NvdW50ID4g
MTAwMCApIHsKCQkJCSRsb29wID0gZmFsc2U7CgkJCQllcnJvcl9yZXBvcnRpbmcoICRyZXBvcnRpbmdfbGV
2ZWwgKTsgLy8gU2V0IGVycm9yIHJlcG9ydGluZyBiYWNrIHRvIG9yaWdpbmFsIGxldmVsLCBhbHRob3VnaC
B0aGUgc2NyaXB0IGlzIHByb2JhYmx5IGRlYWQgYXQgdGhpcyBwb2ludC4KCQkJCWJyZWFrOwoJCQl9CgoJC
QkkeyAnbWVtX3N0cl8nIC4gJGxvb3BfY291bnR9ID0gc3RyX3BhZCggJycsIDEwNDg1NzYgKiAkaW5jcmVt
ZW50X21iICk7CgoJCQkvLyAkdXNhZ2UgPSByb3VuZCggbWVtb3J5X2dldF91c2FnZSgpIC8gMTA0ODU3Niw
gMiApOwoJCQkkdXNhZ2UgPSByb3VuZCggbWVtb3J5X2dldF91c2FnZSggdHJ1ZSApIC8gMTA0ODU3NiwgMi
ApOwoKCQkJQGZ0cnVuY2F0ZSggJGZzbywgMCApOyAvLyBFcmFzZSBleGlzdGluZyBmaWxlIGNvbnRlbnRzL
goJCQlpZiAoIGZhbHNlID09PSBAZndyaXRlKCAkZnNvLCAkdXNhZ2UgKSApIHsgLy8gVXBkYXRlIHRpbWUg
ZWxhcHNlZCBpbnRvIGZpbGUuCgkJCQkkbG9vcCA9IGZhbHNlOwoJCQkJZXJyb3JfcmVwb3J0aW5nKCAkcmV
wb3J0aW5nX2xldmVsICk7IC8vIFNldCBlcnJvciByZXBvcnRpbmcgYmFjayB0byBvcmlnaW5hbCBsZXZlbC
wgYWx0aG91Z2ggdGhlIHNjcmlwdCBpcyBwcm9iYWJseSBkZWFkIGF0IHRoaXMgcG9pbnQuCgkJCQlicmVha
zsgLy8gU3RvcCBzaW5jZSB3cml0aW5nIGZhaWxlZC4KCQkJfQoJCX0KCgkJcGJfYmFja3VwYnVkZHk6OnN0
YXR1cyggJ2RldGFpbHMnLCAnRW5kIFBIUCBtZW1vcnkgdGVzdCBsb29wcy4nICk7CgoJCSRidWZmZXIgPSA
nJzsKCQlAZmNsb3NlKCAkZnNvICk7CgkJZXJyb3JfcmVwb3J0aW5nKCAkcmVwb3J0aW5nX2xldmVsICk7IC
8vIFNldCBlcnJvciByZXBvcnRpbmcgYmFjayB0byBvcmlnaW5hbCBsZXZlbCwgYWx0aG91Z2ggdGhlIHNjc
mlwdCBpcyBwcm9iYWJseSBkZWFkIGF0IHRoaXMgcG9pbnQuCgoJfSAvLyBFbmQgcGhwX21lbW9yeV90ZXN0
KCkuCgoKCS8qKgoJICogU3RvcmVzIHRlc3RlZCBydW50aW1lIGluIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9
uc1sndGVzdGVkX3BocF9ydW50aW1lJ10sIHJvdW5kZWQgdXAgdG8gbmV4dCB3aG9sZSBudW1iZXIuIE5vdG
U6IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sndGVzdGVkX3BocF9ydW50aW1lJ10gaXMgMCB1bnRpbCB0Z
XN0IGlzIHN1Y2Nlc3NmdWwuCgkgKgoJICogQHJldHVybiBzdHJpbmd8ZmFsc2UgIFBIUCBydW50aW1lIG9y
IGZhbHNlLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBocF9ydW50aW1lX3Rlc3RfcmVzdWx0cyg
pIHsKCQkkdGVzdF9maWxlID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0TG9nRGlyZWN0b3J5KCkgLiAncGhwX3
J1bnRpbWVfdGVzdC50eHQnOwoKCQkvLyBJZiB0ZXN0IGZpbGUgYWxyZWFkeSBleGlzdHMsIG1ha2Ugc3VyZ
SBpdCBkb2Vzbid0IGxvb2sgbGlrZSBhIHRlc3QgaXMgYWxyZWFkeSBydW5uaW5nLgoJCWlmICggZmlsZV9l
eGlzdHMoICR0ZXN0X2ZpbGUgKSApIHsKCQkJJGxhc3RfdXBkYXRlX3RpbWUgPSBmaWxlbXRpbWUoICR0ZXN
0X2ZpbGUgKTsKCQkJaWYgKCAoIHRpbWUoKSAtICRsYXN0X3VwZGF0ZV90aW1lICkgPCBiYWNrdXBidWRkeV
9jb25zdGFudHM6OlBIUF9SVU5USU1FX1JFVEVTVF9ERUxBWSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdkZXRhaWxzJywgJ1BIUCBydW50aW1lIHRlc3QgcmVzdWx0czogTm90IGVub3VnaCB0aW1lIGhh
cyBwYXNzZWQgc2luY2UgdGhlIGxhc3QgdGVzdCB1cGRhdGVkIHRoZSBmaWxlLicgKTsKCQkJCXJldHVybiB
mYWxzZTsKCQkJfQoJCX0gZWxzZSB7IC8vIEZpbGUgZG9lcyBub3QgZXhpc3QuCgkJCXJldHVybiBmYWxzZT
sKCQl9CgoJCS8vIFJlYWQgZmlsZSBjb250ZW50cy4KCQkkdGVzdGVkX3J1bnRpbWUgPSBAZmlsZV9nZXRfY
29udGVudHMoICR0ZXN0X2ZpbGUgKTsKCQlpZiAoIGZhbHNlID09PSAkdGVzdGVkX3J1bnRpbWUgKSB7CgkJ
CXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjODI5MzQ4OTQ6IFVuYWJsZSB0byB
yZWFkIHBocCBydW50aW1lIHRlc3QgcmVzdWx0cy
BmaWxlLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gU2FuaXRpemUuCgkJJHRlc3RlZF9ydW50a
W1lID0gdHJpbSggJHRlc3RlZF9ydW50aW1lICk7CgoJCS8vIFZlcmlmeSBub3QgYmxhbmsuCgkJaWYgKCAn
JyA9PSAkdGVzdGVkX3J1bnRpbWUgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJyw
gJ05PVEU6IFBIUCBydW50aW1lIHRlc3QgYmxhbmsuIEl0IG1heSBiZSBpbiBwcm9ncmVzcy4nICk7CgkJCX
JldHVybiBmYWxzZTsKCQl9CgoJCS8vIFZlcmlmeSBudW1lcmljLgoJCWlmICggISBpc19udW1lcmljKCAkd
GVzdGVkX3J1bnRpbWUgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9y
ICMzMjg0OTM0NzM0OiBQSFAgcnVudGltZSB0ZXN0IHJlc3VsdHMgbm9uLW51bWVyaWMuIFRyaW1tZWQgcmV
zdWx0OiBgJyAuICR0ZXN0ZWRfcnVudGltZSAuICdgLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJcG
JfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWRfcGhwX3J1bnRpbWUnXSAgICAgID0gY2VpbCggJHRlc
3RlZF9ydW50aW1lICk7IC8vIFJvdW5kIHVwLgoJCXBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbGFzdF90
ZXN0ZWRfcGhwX3J1bnRpbWUnXSA9IHRpbWUoKTsgLy8gVGltZXN0YW1wIHRlc3QgcmVzdWx0cyB3ZXJlIGx
hc3Qgc2F2ZWQuCgkJcGJfYmFja3VwYnVkZHk6OnNhdmUoKTsKCgkJQHVubGluayggJHRlc3RfZmlsZSApOy
AvLyBEZWxldGUgdGVzdCBmaWxlIGFzIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCgoJCXJldHVybiBwYl9iY
WNrdXBidWRkeTo6JG9wdGlvbnNbJ3Rlc3RlZF9waHBfcnVudGltZSddOwoKCX0gLy8gRW5kIHBocF9ydW50
aW1lX3Rlc3RfcmVzdWx0cygpLgoKCgkvKioKCSAqIFN0b3JlcyB0ZXN0ZWQgbWVtb3J5IGluIHBiX2JhY2t
1cGJ1ZGR5Ojokb3B0aW9uc1sndGVzdGVkX3BocF9tZW1vcnknXSwgcm91bmRlZCB1cCB0byBuZXh0IHdob2
xlIG51bWJlci4gTm90ZTogcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWRfcGhwX21lbW9yeSddI
GlzIDAgdW50aWwgdGVzdCBpcyBzdWNjZXNzZnVsLgoJICoKCSAqIEByZXR1cm4gc3RyaW5nfGZhbHNlICBQ
SFAgdGVzdGVkIG1lbW9yeSBvciBmYWxzZS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBwaHBfbWV
tb3J5X3Rlc3RfcmVzdWx0cygpIHsKCQkkdGVzdF9maWxlID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0TG9nRG
lyZWN0b3J5KCkgLiAncGhwX21lbW9yeV90ZXN0LnR4dCc7CgoJCS8vIElmIHRlc3QgZmlsZSBhbHJlYWR5I
GV4aXN0cywgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgbG9vayBsaWtlIGEgdGVzdCBpcyBhbHJlYWR5IHJ1bm5p
bmcuCgkJaWYgKCBmaWxlX2V4aXN0cyggJHRlc3RfZmlsZSApICkgewoJCQkkbGFzdF91cGRhdGVfdGltZSA
9IGZpbGVtdGltZSggJHRlc3RfZmlsZSApOwoJCQlpZiAoICggdGltZSgpIC0gJGxhc3RfdXBkYXRlX3RpbW
UgKSA8IGJhY2t1cGJ1ZGR5X2NvbnN0YW50czo6UEhQX01FTU9SWV9SRVRFU1RfREVMQVkgKSB7CgkJCQlwY
l9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdQSFAgbWVtb3J5IHRlc3QgcmVzdWx0czogTm90
IGVub3VnaCB0aW1lIGhhcyBwYXNzZWQgc2luY2UgdGhlIGxhc3QgdGVzdCB1cGRhdGVkIHRoZSBmaWxlLic
gKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0gZWxzZSB7IC8vIEZpbGUgZG9lcyBub3QgZXhpc3QuCg
kJCXJldHVybiBmYWxzZTsKCQl9CgoJCS8vIFJlYWQgZmlsZSBjb250ZW50cy4KCQkkdGVzdGVkX21lbW9ye
SA9IEBmaWxlX2dldF9jb250ZW50cyggJHRlc3RfZmlsZSApOwoJCWlmICggZmFsc2UgPT09ICR0ZXN0ZWRf
bWVtb3J5ICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3IgIzY2MzY0OiB
VbmFibGUgdG8gcmVhZCBwaHAgbWVtb3J5IHRlc3QgcmVzdWx0cyBmaWxlLicgKTsKCQkJcmV0dXJuIGZhbH
NlOwoJCX0KCgkJLy8gU2FuaXRpemUuCgkJJHRlc3RlZF9tZW1vcnkgPSB0cmltKCAkdGVzdGVkX21lbW9ye
SApOwoKCQkvLyBWZXJpZnkgbm90IGJsYW5rLgoJCWlmICggJycgPT0gJHRlc3RlZF9tZW1vcnkgKSB7CgkJ
CXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ05PVEU6IFBIUCBtZW1vcnkgdGVzdCBibGF
uay4gSXQgbWF5IGJlIGluIHByb2dyZXNzLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gVmVyaW
Z5IG51bWVyaWMuCgkJaWYgKCAhIGlzX251bWVyaWMoICR0ZXN0ZWRfbWVtb3J5ICkgKSB7CgkJCXBiX2JhY
2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjNzY4NDM1NDk5MDogUEhQIG1lbW9yeSB0ZXN0
IHJlc3VsdHMgbm9uLW51bWVyaWMuIFRyaW1tZWQgcmVzdWx0OiBgJyAuICR0ZXN0ZWRfbWVtb3J5IC4gJ2A
uJyApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3Rlc3RlZF
9waHBfbWVtb3J5J10gICAgICA9IGNlaWwoICR0ZXN0ZWRfbWVtb3J5ICk7IC8vIFJvdW5kIHVwLgoJCXBiX
2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbGFzdF90ZXN0ZWRfcGhwX21lbW9yeSddID0gdGltZSgpOyAvLyBU
aW1lc3RhbXAgdGVzdCByZXN1bHRzIHdlcmUgbGFzdCBzYXZlZC4KCQlwYl9iYWNrdXBidWRkeTo6c2F2ZSg
pOwoKCQlAdW5saW5rKCAkdGVzdF9maWxlICk7IC8vIERlbGV0ZSB0ZXN0IGZpbGUgYXMgaXQgaXMgbm8gbG
9uZ2VyIG5lZWRlZC4KCgkJcmV0dXJuIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sndGVzdGVkX3BocF9tZ
W1vcnknXTsKCgl9IC8vIEVuZCBwaHBfbWVtb3J5X3Rlc3RfcmVzdWx0cygpLgoKCgkvKioKCSAqIEdldCBh
IGh0dHAgaGVhZGVyLiBSZXR1cm5zIGJsYW5rIHN0cmluZyBpZiBub3Qgc2V0LgoJICoKCSAqIEBwYXJhbSB
zdHJpbmcgJGhlYWRlciAgSFRUUCBIZWFkZXIgdG8gZ2V0LgoJICoKCSAqIEByZXR1cm4gbWl4ZWQgIENvbn
RlbnRzIG9mIGhlYWRlciBvciBibGFuayB3aGVuIG5vdCBzZXQuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY
3Rpb24gZ2V0SHR0cEhlYWRlciggJGhlYWRlciApIHsKCQkkaGVhZGVyID0gc3RyX3JlcGxhY2UoICctJywg
J18nLCAkaGVhZGVyICk7IC8vIFBvcHVsYXRlZCB2YXJzIGdldCBkYXNoIHJlcGxhY2VkIHdpdGggdW5kZXJ
zY29yZS4KCQlpZiAoICEgaXNzZXQoICRfU0VSVkVSWyAnSFRUUF8nIC4gc3RydG91cHBlciggJGhlYWRlci
ApIF0gKSApIHsKCQkJcmV0dXJuICcnOwoJCX0KCQlyZXR1cm4gJF9TRVJWRVJbICdIVFRQXycgLiBzdHJ0b
3VwcGVyKCAkaGVhZGVyICkgXTsKCX0gLy8gRW5kIGdldEh0dHBIZWFkZXIoKS4KCgkvKioKCSAqIFNvdXJj
ZTogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xOTA0MjEvY2FsbGVyLWZ1bmN0aW9uLWl
uLXBocC01LwoJICoKCSAqIEBwYXJhbSBib29sICRjb21wbGV0ZV90cmFjZSAgTG9vcCB0aHJvdWdoIGFsbC
BvZiBkZWJ1Z19iYWNrdHJhY2Ugb3Igbm90LgoJICoKCSAqIEByZXR1cm4gc3RyaW5nICBEZXRhaWxlZCBkZ
WJ1Z19iYWNrdHJhY2UKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRDYWxsaW5nRnVuY3Rpb25O
YW1lKCAkY29tcGxldGVfdHJhY2UgPSBmYWxzZSApIHsKCQkkdHJhY2UgPSBkZWJ1Z19iYWNrdHJhY2UoKTs
KCQlpZiAoICRjb21wbGV0ZV90cmFjZSApIHsKCQkJJHN0ciA9ICcnOwoJCQlmb3JlYWNoICggJHRyYWNlIG
FzICRjYWxsZXIgKSB7CgkJCQkkc3RyIC49ICJ7JGNhbGxlclsnZnVuY3Rpb24nXX0oKSI7CgkJCQlpZiAoI
Glzc2V0KCAkY2FsbGVyWydjbGFzcyddICkgKSB7CgkJCQkJJHN0ciA9ICJ7JGNhbGxlclsnY2xhc3MnXX17
JGNhbGxlclsndHlwZSddfSIgLiAkc3RyOwoJCQkJfQoJCQl9CgkJfSBlbHNlIHsKCQkJJGNhbGxlciA9ICR
0cmFjZVsyXTsKCQkJJHN0ciAgICA9ICJ7JGNhbGxlclsnZnVuY3Rpb24nXX0oKSI7CgkJCWlmICggaXNzZX
QoICRjYWxsZXJbJ2NsYXNzJ10gKSApIHsKCQkJCSRzdHIgPSAieyRjYWxsZXJbJ2NsYXNzJ119eyRjYWxsZ
XJbJ3R5cGUnXX0iIC4gJHN0cjsKCQkJfQoJCX0KCQlyZXR1cm4gJHN0cjsKCX0KCgoJLyoqCgkgKiBDb21w
bGVtZW50cyB0byBEcnVwYWw6CgkgKiBodHRwczovL2FwaS5kcnVwYWwub3JnL2FwaS9kcnVwYWwvaW5jbHV
kZXMlMjFmaWxlLmluYy9mdW5jdGlvbi9maWxlX3VwbG9hZF9tYXhfc2l6ZS83LngKCSAqCgkgKiBSZXR1cm
5zIGEgZmlsZSBzaXplIGxpbWl0IGluIGJ5dGVzIGJhc2VkIG9uIHRoZSBQSFAgdXBsb2FkX21heF9maWxlc
2l6ZS4KCSAqIGFuZCBwb3N0X21heF9zaXplLgoJICoKCSAqIEByZXR1cm4gaW50ICBQb3N0IE1heCBzaXpl
LgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZpbGVfdXBsb2FkX21heF9zaXplKCkgewoJCXN0YXR
pYyAkbWF4X3NpemUgPSAtMTsKCgkJaWYgKCAkbWF4X3NpemUgPCAwICkgewoJCQkvLyBTdGFydCB3aXRoIH
Bvc3RfbWF4X3NpemUuCgkJCSRwb3N0X21heF9zaXplID0gYmFja3VwYnVkZHlfY29yZTo6cGFyc2VfcGhwX
3NpemUoIGluaV9nZXQoICdwb3N0X21heF9zaXplJyApICk7CgkJCWlmICggJHBvc3RfbWF4X3NpemUgPiAw
ICkgewoJCQkJJG1heF9zaXplID0gJHBvc3RfbWF4X3NpemU7CgkJCX0KCgkJCS8vIElmIHVwbG9hZF9tYXh
fc2l6ZSBpcyBsZXNzLCB0aGVuIHJlZHVjZS4gRXhjZXB0IGlmIHVwbG9hZF9tYXhfc2l6ZSBpcwoJCQkvLy
B6ZXJvLCB3aGljaCBpbmRpY2F0ZXMgbm8gbGltaXQuCgkJCSR1cGxvYWRfbWF4ID0gYmFja3VwYnVkZHlfY
29yZTo6cGFyc2VfcGhwX3NpemUoIGluaV9nZXQoICd1cGxvYWRfbWF4X2ZpbGVzaXplJyApICk7CgkJCWlm
ICggJHVwbG9hZF9tYXggPiAwICYmICR1cGxvYWRfbWF4IDwgJG1heF9zaXplICkgewoJCQkJJG1heF9zaXp
lID0gJHVwbG9hZF9tYXg7CgkJCX0KCQl9CgkJcmV0dXJuICRtYXhfc2l6ZTsKCX0KCgkvKioKCSAqIENvbX
BsZW1lbnRzIHRvIERydXBhbDoKCSAqIGh0dHBzOi8vYXBpLmRydXBhbC5vcmcvYXBpL2RydXBhbC9pbmNsd
WRlcyUyMWNvbW1vbi5pbmMvZnVuY3Rpb24vcGFyc2Vfc2l6ZS83LngKCSAqCgkgKiBAcGFyYW0gc3RyaW5n
ICRzaXplICBQSFAgZm9ybWF0dGVkIHNpemUuCgkgKgoJICogQHJldHVybiBpbnQgIFNpemUuCgkgKi8KCXB
1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcGFyc2VfcGhwX3NpemUoICRzaXplICkgewoJCSR1bml0ID0gcHJlZ1
9yZXBsYWNlKCAnL1teYmttZ3RwZXp5XS9pJywgJycsICRzaXplICk7IC8vIFJlbW92ZSB0aGUgbm9uLXVua
XQgY2hhcmFjdGVycyBmcm9tIHRoZSBzaXplLgoJCSRzaXplID0gcHJlZ19yZXBsYWNlKCAnL1teMC05XC5d
LycsICcnLCAkc2l6ZSApOyAvLyBSZW1vdmUgdGhlIG5vbi1udW1lcmljIGNoYXJhY3RlcnMgZnJvbSB0aGU
gc2l6ZS4KCQlpZiAoICR1bml0ICkgewoJCQkvLyBGaW5kIHRoZSBwb3NpdGlvbiBvZiB0aGUgdW5pdCBpbi
B0aGUgb3JkZXJlZCBzdHJpbmcgd2hpY2ggaXMgdGhlIHBvd2VyIG9mIG1hZ25pdHVkZSB0byBtdWx0aXBse
SBhIGtpbG9ieXRlIGJ5LgoJCQlyZXR1cm4gcm91bmQoICRzaXplICogcG93KCAxMDI0LCBzdHJpcG9zKCAn
YmttZ3RwZXp5JywgJHVuaXRbMF0gKSApICk7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIHJvdW5kKCAkc2l6ZSA
pOwoJCX0KCX0KCgp9IC8vIEVuZCBjbGFzcyBiYWNrdXBidWRkeV9jb3JlLgo=
###PACKDATA,FILE_END,/classes/core.php,importbuddy/classes/core.php
###PACKDATA,FILE_START,/classes/import.php,importbuddy/classes/import.php
PD9waHAKY2xhc3MgcGJfYmFja3VwYnVkZHlfaW1wb3J0IHsKCQoJCgkKCQoJCgkKCQoJLyoqCgkgKgl3aXB
lUHJlZml4KCkKCSAqCgkgKglDbGVhciBvdXQgdGFibGVzIG1hdGNoaW5nIHN1cHBsaWVkIHByZWZpeC4KCS
AqCgkgKglAcmV0dXJuCQkJYm9vbGVhbgkJQ3VycmVudGx5IGFsd2F5cyB0cnVlLgoJICovCglmdW5jdGlvb
iB3aXBlUHJlZml4KCAkcHJlZml4LCAkY29uZmlybSA9IGZhbHNlICkgewoJCWlmICggJGNvbmZpcm0gIT09
IHRydWUgKSB7CgkJCWRpZSggJ0Vycm9yICM1NDY2NTY2YjogUGFyYW1ldGVyIDIgdG8gd2lwZVByZWZpeCg
pIG11c3QgYmUgYm9vbGVhbiB0cnVlIHRvIHByb2NlZWQuJyApOwoJCX0KCQkKCQlpZiAoICRwcmVmaXggPT
0gJycgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ05vIGRhdGFiYXNlIHByZ
WZpeCBzcGVjaWZpZWQgdG8gd2lwZS4nICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJcGJfYmFja3VwYnVk
ZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnQmVnaW5uaW5nIHdpcGUgb2YgZGF0YWJhc2UgdGFibGVzIG1hdGN
oaW5nIHByZWZpeCBgJyAuICRwcmVmaXggLiAnYC4uLicgKTsKCQkKCQkvLyBDb25uZWN0IHRvIGRhdGFiYX
NlLgoJCS8vJHRoaXMtPmNvbm5lY3RfZGF0YWJhc2UoKTsKCQkKCQlnbG9iYWwgJHdwZGI7CgkJJHJvd3MgP
SAkd3BkYi0+Z2V0X3Jlc3VsdHMoICJTRUxFQ1QgdGFibGVfbmFtZSBBUyBgdGFibGVfbmFtZWAgRlJPTSBp
bmZvcm1hdGlvbl9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX25hbWUgTElLRSAnIiAuIGJhY2t1cGJ1ZGR
5X2NvcmU6OmRiRXNjYXBlKCBzdHJfcmVwbGFjZSggJ18nLCAnXF8nLCAkcHJlZml4ICkgKSAuICIlJyBBTk
QgdGFibGVfc2NoZW1hID0gREFUQUJBU0UoKSIsIEFSUkFZX0EgKTsKCQkkdGFibGVfd2lwZV9jb3VudCA9I
GNvdW50KCAkcm93cyApOwoJCWZvcmVhY2goICRyb3dzIGFzICRyb3cgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5
OjpzdGF0dXMoICdkZXRhaWxzJywgJ0Ryb3BwaW5nIHRhYmxlIGAnIC4gJHJvd1sndGFibGVfbmFtZSddIC4
gJ2AuJyApOwoJCQkkd3BkYi0+cXVlcnkoICdEUk9QIFRBQkxFIGAnIC4gJHJvd1sndGFibGVfbmFtZSddIC
4gJ2AnICk7CgkJfQoJCXVuc2V0KCAkcm93cyApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzY
WdlJywgJ1dpcGVkIGRhdGFiYXNlIG9mICcgLiAkdGFibGVfd2lwZV9jb3VudCAuICcgdGFibGVzLicgKTsK
CQkKCQlyZXR1cm4gdHJ1ZTsKCX0gLy8gRW5kIHdpcGVQcmVmaXgoKS4KCQoJCgkKCS8qKgoJICoJd2lwZUR
hdGFiYXNlKCkKCSAqCgkgKglDbGVhciBvdXQgdGhlIGV4aXN0aW5nIGRhdGFiYXNlIHRvIHByZXBhcmUgZm
9yIGltcG9ydGluZyBuZXcgZGF0YS4KCSAqCgkgKglAcmV0dXJuCQkJYm9vbGVhbgkJQ3VycmVudGx5IGFsd
2F5cyB0cnVlLgoJICovCglmdW5jdGlvbiB3aXBlRGF0YWJhc2UoICRjb25maXJtID0gZmFsc2UgKSB7CgkJ
aWYgKCAkY29uZmlybSAhPT0gdHJ1ZSApIHsKCQkJZGllKCAnRXJyb3IgIzU0NjY1NjZhOiBQYXJhbWV0ZXI
gMSB0byB3aXBlRGRhdGFiYXNlKCkgbXVzdCBiZSBib29sZWFuIHRydWUgdG8gcHJvY2VlZC4nICk7CgkJfQ
oJCQoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ0JlZ2lubmluZyB3aXBlIG9mIEFMT
CBkYXRhYmFzZSB0YWJsZXMuLi4nICk7CgkJCgkJLy8gQ29ubmVjdCB0byBkYXRhYmFzZS4KCQkvLyR0aGlz
LT5jb25uZWN0X2RhdGFiYXNlKCk7CgkJCgkJZ2xvYmFsICR3cGRiOwoJCSRyb3dzID0gJHdwZGItPmdldF9
yZXN1bHRzKCAiU0VMRUNUIHRhYmxlX25hbWUgQVMgYHRhYmxlX25hbWVgIEZST00gaW5mb3JtYXRpb25fc2
NoZW1hLnRhYmxlcyBXSEVSRSB0YWJsZV9zY2hlbWEgPSBEQVRBQkFTRSgpIiwgQVJSQVlfQSApOwoJCSR0Y
WJsZV93aXBlX2NvdW50ID0gY291bnQoICRyb3dzICk7CgkJZm9yZWFjaCggJHJvd3MgYXMgJHJvdyApIHsK
CQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRHJvcHBpbmcgdGFibGUgYCcgLiAkcm9
3Wyd0YWJsZV9uYW1lJ10gLiAnYC4nICk7CgkJCSR3cGRiLT5xdWVyeSggJ0RST1AgVEFCTEUgYCcgLiAkcm
93Wyd0YWJsZV9uYW1lJ10gLiAnYCcgKTsKCQl9CgkJdW5zZXQoICRyb3dzICk7CgkJcGJfYmFja3VwYnVkZ
Hk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnV2lwZWQgZGF0YWJhc2Ugb2YgJyAuICR0YWJsZV93aXBlX2NvdW50
IC4gJyB0YWJsZXMuJyApOwoJCQoJCXJldHVybiB0cnVlOwoJfSAvLyBFbmQgd2lwZURhdGFiYXNlKCkuCgk
KCQoJCgkvKglwcmVnX2VzY2FwZV9iYWNrKCkKCSAqCQoJICoJRXNjYXBlIGJhY2tyZWZlcmVuY2VzIGZyb2
0gc3RyaW5nIGZvciB1c2Ugd2l0aCByZWdleC4gVXNlZCBieSBtaWdyYXRlX3dwX2NvbmZpZygpLgoJICoJQ
HNlZSBtaWdyYXRlX3dwX2NvbmZpZygpCgkgKgkKCSAqCUBwYXJhbQkJc3RyaW5nCQkkc3RyaW5nCQlTdHJp
bmcgdG8gZXNjYXBlLgoJICoJQHJldHVybgkJc3RyaW5nCQkJCQlFc2NhcGVkIHN0cmluZy4KCSAqLwoJZnV
uY3Rpb24gcHJlZ19lc2NhcGVfYmFjaygkc3RyaW5nKSB7CgkJLy8gUmVwbGFjZSAkIHdpdGggXCQgYW5kIF
wgd2l0aCBcXAoJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoJyMoPzwhXFxcXCkoXFwkfFxcXFwpIycsICdcX
FxcJDEnLCAkc3RyaW5nKTsKCQlyZXR1cm4gJHN0cmluZzsKCX0gLy8gRW5kIHByZWdfZXNjYXBlX2JhY2so
KS4KCQoJCgkKCQoJCgkKCQoJLy8gVE9ETzogc3dpdGNoIHRvIHVzaW5nIHBiX2JhY2t1cGJ1ZGR5OjpzdGF
0dXNfYm94KCkgaW5zdGVhZC4KCS8qKgoJICoJc3RhdHVzX2JveCgpCgkgKgoJICoJRGlzcGxheXMgYSB0ZX
h0YXJlYSBmb3IgcGxhY2luZyBzdGF0dXMgdGV4dCBpbnRvLgoJICoKCSAqCUBwYXJhbQkJCSRkZWZhdWx0X
3RleHQJc3RyaW5nCQlGaXJzdCBsaW5lIG9mIHRleHQgdG8gZGlzcGxheS4KCSAqCUBwYXJhbQkJCWJvb2xl
YW4JCQkkaGlkZGVuCQlXaGV0aGVyIG9yIG5vdCB0byBhcHBseSBkaXNwbGF5OiBub25lOyBDU1MuCgkgKgl
AcmV0dXJuCQkJCQkJCXN0cmluZwkJSFRNTCBmb3IgdGV4dGFyZWEuCgkgKi8KCWZ1bmN0aW9uIHN0YXR1c1
9ib3goICRkZWZhdWx0X3RleHQgPSAnJywgJGhpZGRlbiA9IGZhbHNlICkgewoJCWRlZmluZSggJ1BCX1NUQ
VRVUycsIHRydWUgKTsgLy8gVGVsbHMgZnJhbWV3b3JrIHN0YXR1cygpIGZ1bmN0aW9uIHRvIG91dHB1dCBm
dXR1cmUgbG9nZ2luZyBpbmZvIGludG8gc3RhdHVzIGJveCB2aWEgamF2YXNjcmlwdC4KCQkkcmV0dXJuID0
gJzxkaXYgaWQ9InBiX2JhY2t1cGJ1ZGR5X3N0YXR1c193cmFwIiBzdHlsZT0icGFkZGluZzogMDsiPjxwcm
UgcmVhZG9ubHk9InJlYWRvbmx5IiBpZD0iYmFja3VwYnVkZHlfbWVzc2FnZXMiIHdyYXA9Im9mZiInOwoJC
WlmICggJGhpZGRlbiA9PT0gdHJ1ZSApIHsKCQkJJHJldHVybiAuPSAnIHN0eWxlPSJkaXNwbGF5OiBub25l
OyAiJzsKCQl9CgkJJHJldHVybiAuPSAnPicgLiAkZGVmYXVsdF90ZXh0IC4gJzwvcHJlPic7CgkJJHJldHV
ybiAuPSAnPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CgkJCTxidXR0b24gY2xhc3M9ImJ1dH
RvbiBidXR0b24tcHJpbWFyeSIgb25DbGljaz0iYmFja3VwYnVkZHlfc2F2ZUxvZ0FzRmlsZSgpOyIgc3R5b
GU9Im1hcmdpbi1sZWZ0OiBhdXRvOyBtYXJnaW4tcmlnaHQ6IGF1dG87IGRpc3BsYXk6IGluaGVyaXQ7IGZv
bnQtc2l6ZTogMC45ZW07Ij5Eb3dubG9hZCBTdGF0dXMgTG9nICgudHh0KTwvYnV0dG9uPgoJCTwvZGl2Pic
7CgkJJHJldHVybiAuPSAnPC9kaXY+JzsKCQkKCQlyZXR1cm4gJHJldHVybjsKCX0KCQoJCgkKCQoJCgkKfS
AvLyBFbmQgY2xhc3MuCj8+Cg==
###PACKDATA,FILE_END,/classes/import.php,importbuddy/classes/import.php
###PACKDATA,FILE_START,/classes/restore.php,importbuddy/classes/restore.php
PD9waHAKLyoqCiAqIFJlc3RvcmUgQ2xhc3MKICoKICogQHBhY2thZ2UgQmFja3VwQnVkZHkKICogQGF1dGh
vciBEdXN0aW4gQm9sdG9uCiAqIEBjb3B5cmlnaHQgMjAxNAogKi8KCi8qKgogKiBCYWNrdXBCdWRkeSBSZX
N0b3JlIENsYXNzCiAqLwpjbGFzcyBiYWNrdXBidWRkeV9yZXN0b3JlIHsKCgkvKioKCSAqIEhvbGRzIGN1c
nJlbnQgc3RhdGUgZGF0YS4gUmV0cmlldmUgd2l0aCBnZXRTdGF0ZSgpIGFuZCBwYXNzIG9udG8gbmV4dCBy
dW4gaW4gdGhlIGNvbnN0cnVjdG9yLgoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljICRfc3RhdGU
gPSBhcnJheSgpOwoKCS8qKgoJICogSG9sZCBlcnJvciBzdHJpbmdzIHRvIHJldHJpZXZlIHdpdGggZ2V0RX
Jyb3JzKCkuCgkgKgoJICogQHZhciBhcnJheQoJICovCglwcml2YXRlICRfZXJyb3JzID0gYXJyYXkoKTsKC
gkvKioKCSAqIFRydWUgaWYgYWxyZWFkeSBjb25uZWN0ZWQgdGhpcyBzZXNzaW9uLgoJICoKCSAqIEB2YXIg
Ym9vbAoJICovCglwcml2YXRlICRfZGJDb25uZWN0ZWQgPSBmYWxzZTsKCgkvKiBfX2NvbnN0cnVjdCgpCgk
gKgoJICogUk9MTEJBQ0ssIFJFU1RPUkUKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR0eXBlICAgICAgICAgUm
VzdG9yZSB0eXBlOiByb2xsYmFjayAocm9sbCBiYWNrIGZyb20gaW5zaWRlIFdvcmRQcmVzcyksIHJlc3Rvc
mUgKGltcG9ydGJ1ZGR5KQoJICogQHBhcmFtIGFycmF5ICAkZXhpc3RpbkRhdGEgIFN0YXRlIGRhdGEgZnJv
bSBhIHByZXZpb3VzIGluc3RhbnRpYXRpb24uIFByZXZpb3VzbHkgcmV0dXJuZWQgZnJvbSBnZXRTdGF0ZSg
pLgoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkdHlwZSwgJGV4aXN0aW5nX3N0YX
RlID0gJycgKSB7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQ29uc3RydWN0aW5nI
HJvbGxiYWNrIGNsYXNzLicgKTsKCgkJaWYgKCAoICdyb2xsYmFjaycgIT0gJHR5cGUgKSAmJiAoICdyZXN0
b3JlJyAhPSAkdHlwZSApICkgewoJCQkkdGhpcy0+X2Vycm9yKCAnSW52YWxpZCByZXN0b3JlIHR5cGUgYCc
gLiBodG1sZW50aXRpZXMoICR0eXBlICkgLiAnYC4nICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCXJlZ2
lzdGVyX3NodXRkb3duX2Z1bmN0aW9uKCBhcnJheSggJiR0aGlzLCAnc2h1dGRvd25fZnVuY3Rpb24nICkgK
TsKCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnU2V0dGluZyByZXN0b3JlIHN0YXRl
IGRlZmF1bHRzLicgKTsKCgkJJHRoaXMtPl9zdGF0ZSA9IGFycmF5KAoJCQkndHlwZScgPT4gJHR5cGUsCgk
JCSdhcmNoaXZlJyA9PiAnJywgICAgICAgICAgICAgICAgICAgIC8vIEZ1bGwgYXJjaGl2ZSBwYXRoICYgZm
lsZW5hbWUuCgkJCSdzZXJpYWwnID0+ICcnLCAgICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZWQgY
mFja3VwIHNlcmlhbC4KCQkJJ3RlbXBQYXRoJyA9PiAnJywgICAgICAgICAgICAgICAgICAgLy8gVGVtcG9y
YXJ5IHBhdGggdG8gZG8gZXh0cmFjdGlvbnMgaW50by4gVHJhaWxpbmcgcGF0aC4KCQkJJ2RhdCcgPT4gYXJ
yYXkoKSwgICAgICAgICAgICAgICAgICAgLy8gREFUIGZpbGUgYXJyYXkuCgkJCSd1bmRvVVJMJyA9PiAnJy
wgICAgICAgICAgICAgICAgICAgIC8vIFVSTCB0byB0aGUgdW5kbyBzY3JpcHQsIGVnIGh0dHA6Ly95b3VyL
mNvbS9iYWNrdXBidWRkeV9yb2xsYmFja191bmRvLVhYWFhYWFhYLnBocAoJCQknZm9yY2VNeXNxbE1ldGhv
ZHMnID0+IGFycmF5KCksICAgICAvLyBteXNxbCBtZXRob2RzIHRvIGZvcmNlIGZvciBpbXBvcnRpbmcuIER
lZmF1bHQgdG8gZW1wdHkgYXJyYXkgdG8gYXV0by1kZXRlY3QuCgkJCSdhdXRvQWR2YW5jZScgPT4gdHJ1ZS
wgICAgICAgICAgICAgIC8vIFdoZXRoZXIgb3Igbm90IHRvIGF1dG8gYWR2YW5jZSAoaWUgZm9yIHdlYi1iY
XNlZCByb2xsYmFjayBhdXRvLXJlZnJlc2ggdG8gbmV4dCBzdGVwKS4KCQkJJ21heEV4ZWN1dGlvblRpbWUn
ID0+IGJhY2t1cGJ1ZGR5X2NvcmU6OmRldGVjdE1heEV4ZWN1dGlvblRpbWUoKSwgICAgICAgICAgIC8vIEl
mIHNldCB0aGVuIG92ZXJyaWRlIGRldGVjdGVkIG1heCBleGVjdXRpb24gdGltZS4KCQkJJ2RiSW1wb3J0UG
9pbnQnID0+IDAsICAgICAgICAgICAgICAgLy8gRm9yIGNvbXBhdCBtb2RlIG15c3FsLCBuZXh0IHJvdyB0b
yBzdGFydCBpbXBvcnRvIG4uCgkJCSd6aXBNZXRob2RTdHJhdGVneScgPT4gJ2FsbCcsICAgICAgIC8vCVpp
cCBtZXRob2RzIHRvIHVzZS4gVmFsaWQ6IGFsbCwgemlwYXJjaGl2ZSwgcGNsemlwCgkJCSdyZXN0b3JlRml
sZXMnID0+IHRydWUsCgkJCSdyZXN0b3JlRGF0YWJhc2UnID0+IHRydWUsCgkJCSdtaWdyYXRlSHRhY2Nlc3
MnID0+IHRydWUsCgkJCSdkYXRhYmFzZVNldHRpbmdzJyA9PiBhcnJheSgKCQkJCSdzZXJ2ZXInID0+ICcnL
AoJCQkJJ2RhdGFiYXNlJyA9PiAnJywKCQkJCSd1c2VybmFtZScgPT4gJycsCgkJCQkncGFzc3dvcmQnID0+
ICcnLAoJCQkJJ3ByZWZpeCcgPT4gJycsCgkJCQkndGVtcFByZWZpeCcgPT4gJycsIC8vIFVzZWQgYnkgZGV
wbG95bWVudCB0byBpbXBvcnQgdG8gYSB0ZW1wb3JhcnkgcHJlZml4LiBNaWdyYXRpb24gd2lsbCBtaWdyYX
RlIGRhdGEgdG8gdGhlIHJlYWwgcHJlZml4IHRob3VnaC4gVGhlbiB0aGUgZGIgd2lsbCBiZSBzd2FwcGVkI
G91dCBiZXR3ZWVuIGV4aXN0aW5nIGFuZCB0ZW1wUHJlZml4LgoJCQkJJ3dpcGVQcmVmaXgnID0+IGZhbHNl
LAoJCQkJJ3JlbmFtZVByZWZpeCcgPT4gZmFsc2UsIC8vIFRlbXBvcmFyaWx5IHJlbmFtZSBleGlzdGluZyB
0YWJsZXMgdG8gYW5vdGhlciBwcmVmaXggZm9yIGFsbG93aW5nIHVuZG8gb2YgZGIgaW1wb3J0LgoJCQkJJ3
dpcGVEYXRhYmFzZScgPT4gZmFsc2UsCgkJCQknaWdub3JlU3FsRXJyb3JzJyA9PiBmYWxzZSwKCQkJCSdzc
WxGaWxlcycgPT4gYXJyYXkoKSwKCQkJCSdzcWxGaWxlc0xvY2F0aW9uJyA9PiAnJywKCQkJCSdkYXRhYmFz
ZU1ldGhvZFN0cmF0ZWd5JyA9PiAncGhwJywgLy8gRGVmYXVsdHMgdG8gcGhwIGR1ZSB0byBjaHVua2luZyB
hYmlsaXR5LgoJCQkJLy8naW1wb3J0UmVzdW1lRmlsZXMnPT4gYXJyYXkoKSwgLy8gSU1QT1JUQU5UOiBMZW
F2ZSB1bnNldCBpbiBkZWZhdWx0LiBPbmNlIHNldCwgZW1wdHl5IGFycmF5IG1lYW5zIGZpbmlzaGVkIGFsb
CBmaWxlcy4KCQkJCSdpbXBvcnRSZXN1bWVQb2ludCcgPT4gJycsIC8vIEN1cnJlbnQgZmlsZSBwb2ludGVy
IHZhbHVlIChmcm9tIGZ0ZWxsKCkpIGZvciBjaHVua2VkIHJlc3VtZWQgU1FMIGZpbGUgaW1wb3J0LgoJCQk
JJ2ltcG9ydGVkUmVzdW1lUm93cycgPT4gMCwgLy8gVG90YWwgbnVtYmVyIG9mIHJvd3MgaW1wb3J0ZWQgdG
h1cyBmYXIgd2hlbiBjaHVua2luZy4gW0lORk9STUFUSU9OIE9OTFldCgkJCQknaW1wb3J0ZWRSZXN1bWVGY
WlscycgPT4gMCwgLy8gVG90YWwgbnVtYmVyIG9mIFNRTCBxdWVyaWVzIHRoYXQgZmFpbGVkIGV4ZWN1dGlv
bmcgd2hlbiBjaHVua2luZy4gW0lORk9STUFUSU9OIE9OTFldCgkJCQknaW1wb3J0ZWRSZXN1bWVUaW1lJyA
9PiAwLCAvLyBUb3RhbCB0aW1lIG9mIGFjdHVhbCBpbXBvcnQgd2hlbiBjaHVua2luZy4gW0lORk9STUFUSU
9OIE9OTFldCgkJCQknbWlncmF0ZURhdGFiYXNlJyA9PiB0cnVlLAoJCQkJJ21pZ3JhdGVEYXRhYmFzZUJyd
XRlRm9yY2UnID0+IHRydWUsCgkJCQknbWlncmF0ZVJlc3VtZVN0ZXBzJyA9PiAnJywKCQkJCSdtaWdyYXRl
UmVzdW1lUG9pbnQnID0+ICcnLAoJCQkpLAoJCQknY2xlYW51cCcgPT4gYXJyYXkoICAgICAgICAgICAgICA
gICAvLyBTdGVwIDYgY2xlYW51cCBvcHRpb25zLgoJCQkJJ3NldF9ibG9nX3B1YmxpYycgPT4gJycsICAgIC
AgICAvLyBTZWFyY2ggZW5naW5lIHZpc2liaWxpdHkuIEVtcHR5IHN0cmluZyB0byBrZWVwIHRoZSBzYW1lL
iB0cnVlIHRvIGVuYWJsZSAob3B0aW9uIHNldCB0byAxKSwgZmFsc2UgdG8gZGlzYWJsZSAob3B0aW9uIHNl
dCB0byAwKS4KCQkJCSdkZWxldGVBcmNoaXZlJyA9PiB0cnVlLAoJCQkJJ2RlbGV0ZVRlbXBGaWxlcycgPT4
gdHJ1ZSwKCQkJCSdkZWxldGVJbXBvcnRCdWRkeScgPT4gdHJ1ZSwKCQkJCSdkZWxldGVJbXBvcnRCdWRkeU
RpcmVjdG9yeScgPT4gdHJ1ZSwKCQkJCSdkZWxldGVJbXBvcnRMb2cnID0+IHRydWUsCgkJCSksCgkJCSdwb
3RlbnRpYWxQcm9ibGVtcycgPT4gYXJyYXkoKSwgICAgIC8vIEFycmF5IG9mIHBvdGVudGlhbCBpc3N1ZXMg
ZW5jb3VudGVyZWQgdG8gc2hvdyB0aGUgdXNlciBBRlRFUiBpbXBvcnQgaXMgZG9uZS4KCQkJLy8nYmxvZ1B
1YmxpY1N0YXR1cycgPT4gJycsCQkJLy8gMSwgMCwgb3IgZW1wdHkgc3RyaW5nIGZvciB1bnRlc3RlZC91bm
tub3duLgoJCQknc3RlcEhpc3RvcnknID0+IGFycmF5KCksICAgICAgICAgICAvLyBBcnJheSBvZiBhcnJhe
XMgb2YgdGhlIHN0ZXAgZnVuY3Rpb25zIHJ1biB0aHVzIGZhci4gVHJhY2sgc3RhcnQgYW5kIGZpbmlzaCB0
aW1lcy4KCQkpOwoKCQkvLyBSZXN0b3JlLXNwZWNpZmljIGRlZmF1bHQgb3B0aW9ucy4KCQlpZiAoICdyZXN
0b3JlJyA9PSAkdHlwZSApIHsKCQkJJHRoaXMtPl9zdGF0ZVsnc2tpcFVuemlwJ10gPSBmYWxzZTsKCQkJJH
RoaXMtPl9zdGF0ZVsncmVzdG9yZUZpbGVzJ10gPSB0cnVlOwoJCQkkdGhpcy0+X3N0YXRlWydyZXN0b3JlR
GF0YWJhc2UnXSA9IHRydWU7CgkJCSR0aGlzLT5fc3RhdGVbJ21pZ3JhdGVIdGFjY2VzcyddID0gdHJ1ZTsK
CQkJJHRoaXMtPl9zdGF0ZVsndGVtcFBhdGgnXSA9IEFCU1BBVEggLiAnaW1wb3J0YnVkZHkvdGVtcF8nIC4
gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydsb2dfc2VyaWFsJ10gLiAnLyc7CgkJfSBlbHNlaWYgKCAncm
9sbGJhY2snID09ICR0eXBlICkgewoJCQkkdGhpcy0+X3N0YXRlWyd0ZW1wUGF0aCddID0gYmFja3VwYnVkZ
HlfY29yZTo6Z2V0VGVtcERpcmVjdG9yeSgpIC4gJHRoaXMtPl9zdGF0ZVsndHlwZSddIC4gJ18nIC4gJHRo
aXMtPl9zdGF0ZVsnc2VyaWFsJ10gLiAnLyc7CgkJfQoKCQlpZiAoIGlzX2FycmF5KCAkZXhpc3Rpbmdfc3R
hdGUgKSApIHsgLy8gVXNlciBwYXNzZWQgYWxvbmcgYW4gZXhpc3Rpbmcgc3RhdGUgdG8gcmVzdW1lLgoJCQ
lwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdVc2luZyBwcm92aWRlZCByZXN0b3JlIHN0Y
XRlIGRhdGEuJyApOwoJCQkkdGhpcy0+X3N0YXRlID0gJHRoaXMtPl9hcnJheV9yZXBsYWNlX3JlY3Vyc2l2
ZSggJHRoaXMtPl9zdGF0ZSwgJGV4aXN0aW5nX3N0YXRlICk7CgkJfQoKCQkvLyBBbGxvdyBhYmlsaXR5IHR
vIEZvcmNlIERCIG92ZXIgU1NMCgkJaWYgKCAhIGVtcHR5KCAkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldH
RpbmdzJ11bJ2RiX2ZvcmNlX3NzbCddICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRha
WxzJywgJ1NldHRpbmcgZmxhZyB0byBjb25uZWN0IHRvIE15U1FMIHZpYSBTU0wuJyApOwoJCQlkZWZpbmUo
ICdNWVNRTF9DTElFTlRfRkxBR1MnLCBNWVNRTF9DTElFTlRfU1NMICk7CgkJfQoKCQkvLyBDaGVjayBpZiB
hIGRlZmF1bHQgc3RhdGUgb3ZlcnJpZGUgZXhpc3RzLiAgVXNlZCBieSBhdXRvbWF0ZWQgcmVzdG9yaW5nLg
oJCS8qCgkJaWYgKCBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydkZWZhdWx0X3N0YXRlX292Z
XJyaWRlcyddICkgJiYgKCBjb3VudCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydkZWZhdWx0X3N0YXRl
X292ZXJyaWRlcyddICkgPiAwICkgKSB7IC8vIERlZmF1bHQgc3RhdGUgb3ZlcnJpZGVzIGV4aXN0LiBBcHB
seSB0aGVtLgoJCQkkdGhpcy0+X3N0YXRlID0gYXJyYXlfbWVyZ2UoICR0aGlzLT5fc3RhdGUsIHBiX2JhY2
t1cGJ1ZGR5Ojokb3B0aW9uc1snZGVmYXVsdF9zdGF0ZV9vdmVycmlkZXMnXSApOwoJCX0KCQkqLwoKCQlwY
l9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdSZXN0b3JlIGNsYXNzIGNvbnN0cnVjdGVkIGlu
IGAnIC4gJHR5cGUgLiAnYCBtb2RlLicgKTsKCgkJcGJfYmFja3VwYnVkZHk6OnNldF9ncmVlZHlfc2NyaXB
0X2xpbWl0cygpOyAvLyBKdXN0IGFsd2F5cyBhc3N1bWUgd2UgbmVlZCB0aGlzIGR1cmluZyByZXN0b3Jlcy
9yb2xsYmFjay4uLgoJfSAvLyBFbmQgX19jb25zdHJ1Y3QoKS4KCgoJLyogc3RhcnQoKQoJICoKCSAqIFJPT
ExCQUNLLCBSRVNUT1JFCgkgKiBSZXR1cm5zIGZhbHNlIG9uIGZhaWx1cmUuIFVzZSBnZXRFcnJvcnMoKSB0
byBnZXQgYW4gYXJyYXkgb2YgZXJyb3JzIGVuY291bnRlcmVkIGlmIGFueS4KCSAqIFJldHVybnMgYW4gYXJ
yYXkgb2YgaW5mb3JtYXRpb24gb24gc3VjY2Vzcy4KCSAqIEdyYWIgdGhlIHJvbGxiYWNrIHN0YXRlIGRhdG
Egd2l0aCBnZXRTdGF0ZSgpLgoJICoKCSAqIEByZXR1cm4JYm9vbAkJdHJ1ZSBvbiBzdWNjZXNzLCBlbHNlI
GZhbHNlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gc3RhcnQoICRiYWNrdXBGaWxlLCAkc2tpcFVuemlwID0g
ZmFsc2UgKSB7CgkJJHRoaXMtPl9iZWZvcmUoIF9fRlVOQ1RJT05fXyApOwoKCQkkdGhpcy0+X3N0YXRlWyd
hcmNoaXZlJ10gPSAkYmFja3VwRmlsZTsKCQkkc2VyaWFsID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0X3Nlcm
lhbF9mcm9tX2ZpbGUoIGJhc2VuYW1lKCAkYmFja3VwRmlsZSApICk7CgkJJHRoaXMtPl9zdGF0ZVsnc2Vya
WFsJ10gPSAkc2VyaWFsOwoJCXVuc2V0KCAkc2VyaWFsICk7CgoJCWlmICggISBmaWxlX2V4aXN0cyggJGJh
Y2t1cEZpbGUgKSApIHsKCQkJcmV0dXJuICR0aGlzLT5fZXJyb3IoICdFcnJvciAjODQ5ODM5NDM0OTogVW5
hYmxlIHRvIGFjY2VzcyBiYWNrdXAgZmlsZSBgJyAuICRiYWNrdXBGaWxlIC4gJ2AuIFZlcmlmeSBpdCBzdG
lsbCBleGlzdHMgYW5kIGhhcyBwcm9wZXIgcmVhZCBwZXJtaXNzaW9ucy4nICk7CgkJfSBlbHNlIHsKCQkJc
GJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnU3BlY2lmaWVkIGJhY2t1cCBmaWxlIGV4aXN0
czogYCcgLiAkYmFja3VwRmlsZSAuICdgLicgKTsKCQl9CgoJCXVuc2V0KCAkYmFja3VwRmlsZSApOwoKCQl
pZiAoIEBmaWxlX2V4aXN0cyggQUJTUEFUSCAuICdpbXBvcnRidWRkeS8nICkgKSB7CgkJCUB1bmxpbmsoIE
FCU1BBVEggLiAnaW1wb3J0YnVkZHkvJyApOwoJCX0KCgkJaWYgKCBwYl9pc19zdGFuZGFsb25lKCkgKSB7C
gkJCSRteXNxbF85MDEwX2xvZyA9IEFCU1BBVEggLiAnaW1wb3J0YnVkZHkvbXlzcWxfOTAxMF9sb2ctJyAu
IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbG9nX3NlcmlhbCddIC4gJy50eHQnOwoJCQlpZiAoIGZpbGV
fZXhpc3RzKCAkbXlzcWxfOTAxMF9sb2cgKSApIHsKCQkJCUB1bmxpbmsoICRteXNxbF85MDEwX2xvZyApOw
oJCQl9CgkJfQoKCQlpZiAoIHRydWUgIT09ICRza2lwVW56aXAgKSB7CgkJCS8vIEdldCB6aXAgbWV0YSBpb
mZvcm1hdGlvbi4KCQkJJGN1c3RvbVRpdGxlID0gJ0JhY2t1cCBEZXRhaWxzJzsKCQkJcGJfYmFja3VwYnVk
ZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQXR0ZW1
wdGluZyB0byByZXRyaWV2ZSB6aXAgbWV0YSBkYXRhIGZyb20gY29tbWVudC4nICk7CgkJCSRtZXRhSW5mby
A9IGJhY2t1cGJ1ZGR5X2NvcmU6OmdldFppcE1ldGEoICR0aGlzLT5fc3RhdGVbJ2FyY2hpdmUnXSApOwoJC
QlpZiAoIGZhbHNlICE9PSAkbWV0YUluZm8gKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0
YWlscycsICdGb3VuZCB6aXAgbWV0YSBkYXRhLicgKTsKCQkJfSBlbHNlIHsKCQkJCXBiX2JhY2t1cGJ1ZGR
5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0RpZCBub3QgZmluZCB6aXAgbWV0YSBkYXRhLicgKTsKCQkJfQoKCQ
kJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTG9hZGluZyB6aXBidWRkeS4nICk7CgkJC
XJlcXVpcmVfb25jZSggcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2xpYi96aXBidWRkeS96
aXBidWRkeS5waHAnICk7CgoJCQkkemlwYnVkZHkgPSBuZXcgcGx1Z2luYnVkZHlfemlwYnVkZHkoIGRpcm5
hbWUoICR0aGlzLT5fc3RhdGVbJ2FyY2hpdmUnXSApICk7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoIC
dkZXRhaWxzJywgJ1ppcGJ1ZGR5IGxvYWRlZC4nICk7CgkJfQoJCSR6aXBfZGlyX3ByZWZpeCA9IHN0cl9yZ
XBsYWNlKCAnLnppcCcsICcnLCBiYXNlbmFtZSggJHRoaXMtPl9zdGF0ZVsnYXJjaGl2ZSddICkgKSAuICcv
d3AtY29udGVudC91cGxvYWRzL2JhY2t1cGJ1ZGR5X3RlbXAvJyAuICR0aGlzLT5fc3RhdGVbJ3NlcmlhbCd
dOwoKCQkvLyBGaW5kIERBVCBmaWxlLgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0
NhbGN1bGF0aW5nIHBvc3NpYmxlIERBVCBmaWxlIGxvY2F0aW9ucy4nICk7CgkJJGRldGVjdGVkRGF0TG9jY
XRpb24gPSAnJzsKCQkkcG9zc2libGVEYXRMb2NhdGlvbnMgPSBhcnJheSgpOwoJCWlmICggaXNzZXQoICRt
ZXRhSW5mb1snZGF0X3BhdGgnXSApICkgewoJCQkkcG9zc2libGVEYXRMb2NhdGlvbnNbXSA9ICRtZXRhSW5
mb1snZGF0X3BhdGgnXVsxXTsgLy8gREFUIGZpbGUgbG9jYXRpb24gZW5jb2RlZCBpbiBtZXRhIGluZm8uIF
Nob3VsZCBhbHdheXMgYmUgdmFsaWQuCgkJfQoKCQkvLyBQb3NzaWJsZSBEQVQgZmlsZSBsb2NhdGlvbnMuC
gkJJHBvc3NpYmxlRGF0TG9jYXRpb25zW10gPSAnd3AtY29udGVudC91cGxvYWRzL2JhY2t1cGJ1ZGR5X3Rl
bXAvJyAuICR0aGlzLT5fc3RhdGVbJ3NlcmlhbCddIC4gJy9iYWNrdXBidWRkeV9kYXQucGhwJzsgLy8gRnV
sbCBiYWNrdXAuCgkJJHBvc3NpYmxlRGF0TG9jYXRpb25zW10gPSAnYmFja3VwYnVkZHlfZGF0LnBocCc7IC
8vIERCIGJhY2t1cC4gKGxvb2sgZm9yIHRoaXMgc2Vjb25kIGluIGNhc2UgdXNlciBsZWZ0IGFuIG9sZCBkY
XQgZmlsZSBpbiByb290KS4KCQkkcG9zc2libGVEYXRMb2NhdGlvbnNbXSA9ICR6aXBfZGlyX3ByZWZpeCAu
ICcvYmFja3VwYnVkZHlfZGF0LnBocCc7IC8vIEZ1bGwgYmFja3VwIGJ1dCBpbnNpZGUgYSBzdWJkaXJlY3R
vcnkuIENvbW1vbiBpZiB1c2VyIHJlLXppcHBlZCB0aGUgZGlyZWN0b3J5IGFmdGVyIHVuemlwcGluZy4KCg
kJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUG9zc2libGUgREFUIGZpbGUgbG9jYXRpb
25zOiBgJyAuIGltcGxvZGUoICc7JywgJHBvc3NpYmxlRGF0TG9jYXRpb25zICkgLiAnYC4nICk7CgkJJHBv
c3NpYmxlRGF0TG9jYXRpb25zID0gYXJyYXlfdW5pcXVlKCAkcG9zc2libGVEYXRMb2NhdGlvbnMgKTsKCQl
pZiAoIHRydWUgPT09ICRza2lwVW56aXAgKSB7IC8vIE9ubHkgbG9vayBmb3IgREFUIGZpbGUgaW4gZmlsZX
N5c3RlbS4gWmlwIHNob3VsZCBiZSBwcmUtZXh0cmFjdGVkLCBlZyBieSB0aGUgdXNlciBtYW51YWxseS4KC
QkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTG9va2luZyBmb3IgREFUIGZpbGUgaW4g
bG9jYWwgZmlsZXN5c3RlbSAoaW5zdGVhZCBvZiBpbiB6aXApIHNpbmNlIGFkdmFuY2VkIHNraXAgdW56aXA
gb3B0aW9uIHNldC4nICk7CgkJCWZvcmVhY2ggKCAkcG9zc2libGVEYXRMb2NhdGlvbnMgYXMgJHBvc3NpYm
xlRGF0TG9jYXRpb24gKSB7IC8vIExvb2sgZm9yIERBVCBmaWxlIGluIGZpbGVzeXN0ZW0uCgkJCQlwYl9iY
WNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEb2VzIGAnIC4gQUJTUEFUSCAuICRwb3NzaWJsZURh
dExvY2F0aW9uIC4gJ2AgZXhpc3Q/JyApOwoJCQkJaWYgKCB0cnVlID09PSBmaWxlX2V4aXN0cyggQUJTUEF
USCAuICRwb3NzaWJsZURhdExvY2F0aW9uICkgKSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2
RldGFpbHMnLCAnWWVzLCBleGlzdHMuJyApOwoJCQkJCSRkZXRlY3RlZERhdExvY2F0aW9uID0gJHBvc3NpY
mxlRGF0TG9jYXRpb247CgkJCQkJYnJlYWs7CgkJCQl9IGVsc2UgewoJCQkJCXBiX2JhY2t1cGJ1ZGR5Ojpz
dGF0dXMoICdkZXRhaWxzJywgJ05vLCBkb2VzIG5vdCBleGlzdC4nICk7CgkJCQl9CgkJCX0KCQkJaWYgKCA
nJyA9PSAkZGV0ZWN0ZWREYXRMb2NhdGlvbiApIHsKCQkJCSRtZXNzYWdlID0gJ1VuYWJsZSB0byBmaW5kIH
RoZSBEQVQgZmlsZSBmb3IgdGhpcyBiYWNrdXAgYXJjaGl2ZSBwcmUtZXh0cmFjdGVkIGluIHRoZSBmaWxlc
3lzdGVtLiBNYWtlIHN1cmUgeW91IGhhdmUgYWxyZWFkeSB1bnppcHBlZCB0aGlzIGJhY2t1cCBpbnRvIHRo
ZSBzYW1lIGRpcmVjdG9yeSBhcyBpbXBvcnRidWRkeS5waHAuJzsKCQkJCXJldHVybiAkdGhpcy0+X2Vycm9
yKCAkbWVzc2FnZSApOwoJCQl9CgkJfSBlbHNlIHsgLy8gTG9vayBmb3IgREFUIGZpbGUgaW5zaWRlIG9mIH
ppcCBhcmNoaXZlLgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdMb29raW5nIGZvc
iBEQVQgZmlsZSBpbiB6aXAgYXJjaGl2ZSBpdHNlbGYuJyApOwoJCQlmb3JlYWNoICggJHBvc3NpYmxlRGF0
TG9jYXRpb25zIGFzICRwb3NzaWJsZURhdExvY2F0aW9uICkgeyAvLyBMb29rIGZvciBEQVQgZmlsZSBpbiB
6aXAuCgkJCQlpZiAoIHRydWUgPT09ICR6aXBidWRkeS0+ZmlsZV9leGlzdHMoICR0aGlzLT5fc3RhdGVbJ2
FyY2hpdmUnXSwgJHBvc3NpYmxlRGF0TG9jYXRpb24sIHRydWUgKSApIHsKCQkJCQkkZGV0ZWN0ZWREYXRMb
2NhdGlvbiA9ICRwb3NzaWJsZURhdExvY2F0aW9uOwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9IC8vIGVuZCBm
b3JlYWNoLgoJCX0KCQlpZiAoICcnID09ICRkZXRlY3RlZERhdExvY2F0aW9uICkgewoJCQlyZXR1cm4gJHR
oaXMtPl9lcnJvciggJ0Vycm9yICM4OTQzNzk4NDM6IFVuYWJsZSB0byBkZXRlcm1pbmUgREFUIGZpbGUgbG
9jYXRpb24gaW4gYmFja3VwIGZpbGUuIEl0IG1heSBiZSBtaXNzaW5nIE9SIHRoZSBiYWNrdXAgemlwIGZpb
GUgbWF5IGJlIGluY29tcGxldGUgb3IgY29ycnVwdGVkLiBWZXJpZnkgdGhlIGJhY2t1cCB6aXAgaGFzIGZ1
bGx5IHVwbG9hZGVkIG9yIHJlLXVwbG9hZCBpdC4gWW91IGNhbiB0cnkgbWFudWFsbHkgdW56aXBwaW5nIHR
oZW4gc2VsZWN0aW5nIHRoZSBhZHZhbmNlZCBvcHRpb24gdG8gc2tpcCB1bnppcC4nICk7CgkJfQoJCXBiX2
JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NvbmZpcm1lZCBEQVQgZmlsZSBsb2NhdGlvbjogY
CcgLiAkZGV0ZWN0ZWREYXRMb2NhdGlvbiAuICdgLicgKTsKCQkkdGhpcy0+X3N0YXRlWydkYXRMb2NhdGlv
biddID0gJGRldGVjdGVkRGF0TG9jYXRpb247CgoJCWlmICggJHppcF9kaXJfcHJlZml4ID09IHN1YnN0cig
gJHRoaXMtPl9zdGF0ZVsnZGF0TG9jYXRpb24nXSwgMCwgc3RybGVuKCAkemlwX2Rpcl9wcmVmaXggKSApIC
kgewoJCQlyZXR1cm4gJHRoaXMtPl9lcnJvciggJ0Vycm9yICM0ODM5NDM4OTQ6IERBVCBmaWxlIHdhcyBkZ
XRlY3RlZCBidXQgaW4gYW4gaW52YWxpZCBsb2NhdGlvbi4gSXQgYXBwZWFycyB0byBiZSBjb250YWluZWQg
d2l0aGluIGEgc3ViZGlyZWN0b3J5IG1hdGNoaW5nIHRoZSB6aXAgZmlsZW5hbWUuIElmIHlvdSB1bnppcHB
lZCB0aGVuIHJlLXppcHBlZCB0aGlzIGNvdWxkIGhhdmUgY2F1c2VkIHRoZSBjb250ZW50cyB0byBiZSBjb2
50YWluZWQgaW4gYSBzdWJkaXJlY3RvcnkgaW5zdGVhZCBvZiB0aGUgcm9vdCBhcyBleHBlY3RlZC4gVG8gY
XZvaWQgdGhpcyB6aXAgdGhlIGZpbGVzIGFuZCBOT1QgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBm
aWxlcy4nICk7CgkJfQoKCQl1bnNldCggJG1ldGFJbmZvICk7IC8vIE5vIGxvbmdlciBuZWVkIGFueXRoaW5
nIGZyb20gdGhlIG1ldGEgaW5mb3JtYXRpb24uCgoJCWlmICggdHJ1ZSAhPT0gJHNraXBVbnppcCApIHsKCQ
kJZnVuY3Rpb24gbWtkaXJfcmVjdXJzaXZlKCAkcGF0aCApIHsKCQkJCWlmICggZW1wdHkoICRwYXRoICkgK
SB7IC8vIHByZXZlbnQgaW5maW5pdGUgbG9vcCBvbiBiYWQgcGF0aAoJCQkJCXJldHVybjsKCQkJCX0KCQkJ
CWlzX2RpciggZGlybmFtZSggJHBhdGggKSApIHx8IG1rZGlyX3JlY3Vyc2l2ZSggZGlybmFtZSggJHBhdGg
gKSApOwoJCQkJcmV0dXJuIGlzX2RpciggJHBhdGggKSB8fCBta2RpciggJHBhdGggKTsKCQkJfQoKCQkJLy
8gTG9hZCBEQVQgZmlsZSBjb250ZW50cy4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnL
CAnQ3JlYXRpbmcgdGVtcG9yYXJ5IGZpbGUgZGlyZWN0b3J5IGAnIC4gJHRoaXMtPl9zdGF0ZVsndGVtcFBh
dGgnXSAuICdgLicgKTsKCQkJcGJfYmFja3VwYnVkZHk6OiRmaWxlc3lzdGVtLT51bmxpbmtfcmVjdXJzaXZ
lKCAkdGhpcy0+X3N0YXRlWyd0ZW1wUGF0aCddICk7IC8vIFJlbW92ZSBpZiBhbHJlYWR5IGV4aXN0cy4KCQ
kJbWtkaXJfcmVjdXJzaXZlKCAkdGhpcy0+X3N0YXRlWyd0ZW1wUGF0aCddICk7IC8vIE1ha2UgZW1wdHkgZ
GlyZWN0b3J5LgoKCQkJLy8gUmVzdG9yZSBEQVQgZmlsZS4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cygg
J2RldGFpbHMnLCAnRXh0cmFjdGluZyBEQVQgZmlsZS4nICk7CgkJCSRmaWxlcyA9IGFycmF5KAoJCQkJJGR
ldGVjdGVkRGF0TG9jYXRpb24gPT4gJ2JhY2t1cGJ1ZGR5X2RhdC5waHAnLAoJCQkpOwoJCQlyZXF1aXJlKC
BwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvY2xhc3Nlcy9fcmVzdG9yZUZpbGVzLnBocCcgK
TsKCQkJJHJlc3VsdCA9IGJhY2t1cGJ1ZGR5X3Jlc3RvcmVfZmlsZXM6OnJlc3RvcmUoICR0aGlzLT5fc3Rh
dGVbJ2FyY2hpdmUnXSwgJGZpbGVzLCAkdGhpcy0+X3N0YXRlWyd0ZW1wUGF0aCddLCAkemlwYnVkZHkgKTs
KCQkJZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmpRdWVyeSgiI3BiX2JhY2t1cGJ1ZG
R5X3dvcmtpbmciKS5oaWRlKCk7PC9zY3JpcHQ+JzsKCQkJcGJfYmFja3VwYnVkZHk6OmZsdXNoKCk7CgkJC
WlmICggZmFsc2UgPT09ICRyZXN1bHQgKSB7CgkJCQkkdGhpcy0+X2Vycm9yKCAnRXJyb3IgIzg1NDg0OiBV
bmFibGUgdG8gcmV0cmlldmUgREFUIGZpbGUuIFRoaXMgaXMgYSBmYXRhbCBlcnJvci4nICk7CgkJCQlyZXR
1cm4gZmFsc2U7CgkJCX0KCgkJCSRkYXRGaWxlID0gJHRoaXMtPl9zdGF0ZVsndGVtcFBhdGgnXSAuICdiYW
NrdXBidWRkeV9kYXQucGhwJzsKCQl9IGVsc2UgewoJCQkkZGF0RmlsZSA9ICR0aGlzLT5fc3RhdGVbJ2Rhd
ExvY2F0aW9uJ107CgkJfQoKCQlpZiAoIGZhbHNlID09PSAoICRkYXREYXRhID0gYmFja3VwYnVkZHlfY29y
ZTo6Z2V0X2RhdF9maWxlX2FycmF5KCAkZGF0RmlsZSApICkgKSB7CgkJCSR0aGlzLT5fZXJyb3IoICdFcnJ
vciAjNDgzOTQ4NDogVW5hYmxlIHRvIHJldHJpZXZlIERBVCBmaWxlLiBUaGUgYmFja3VwIG1heSBoYXZlIG
ZhaWxlZCBvcGVuaW5nIGR1ZSB0byBsYWNrIG9mIG1lbW9yeSwgcGVybWlzc2lvbnMgaXNzdWVzLCBvciBvd
GhlciByZWFzb24uIFVzZSBJbXBvcnRCdWRkeSB0byByZXN0b3JlIG9yIGNoZWNrIHRoZSBBZHZhbmNlZCBM
b2cgYWJvdmUgZm9yIGRldGFpbHMuJyApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCSR0aGlzLT5fc3RhdGV
bJ2RhdCddID0gJGRhdERhdGE7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnREFUIG
ZpbGUgZXh0cmFjdGVkLicgKTsKCgkJaWYgKCBwYl9pc19zdGFuZGFsb25lKCkgKSB7CgkJCSRzaW1wbGVWZ
XJzaW9uID0gc3Vic3RyKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2JiX3ZlcnNpb24nXSwgMCwgc3Ry
cG9zKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2JiX3ZlcnNpb24nXSwgJyAnICkgKTsKCQkJaWYgKCB
pc3NldCggJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ2JhY2t1cGJ1ZGR5X3ZlcnNpb24nXSApICYmICggdmVyc2
lvbl9jb21wYXJlKCAkdGhpcy0+X3N0YXRlWydkYXQnXVsnYmFja3VwYnVkZHlfdmVyc2lvbiddLCAkc2ltc
GxlVmVyc2lvbiwgJz4nICkgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdX
YXJuaW5nOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gcmVzdG9yZSBhbiBhcmNoaXZlIHdoaWNoIHdhcyBjcmV
hdGVkIHdpdGggYSBuZXdlciB2ZXJzaW9uIG9mIEJhY2t1cEJ1ZGR5ICgnIC4gJHRoaXMtPl9zdGF0ZVsnZG
F0J11bJ2JhY2t1cGJ1ZGR5X3ZlcnNpb24nXSAuICcpIHRoYW4gdGhpcyBJbXBvcnRCdWRkeSAoJyAuICRza
W1wbGVWZXJzaW9uIC4gJykuIEZvciBiZXN0IHJlc3VsdHMgdXNlIGFuIEltcG9ydEJ1ZGR5IHRoYXQgaXMg
YXMgbGVhc3QgYXMgdXAgdG8gZGF0ZSBhcyB0aGUgQmFja3VwQnVkZHkgd2hpY2ggY3JlYXRlZCB0aGUgYXJ
jaGl2ZS4nICk7CgkJCX0KCQl9CgoJCWlmICggJ3JvbGxiYWNrJyA9PSAkdGhpcy0+X3N0YXRlWyd0eXBlJ1
0gKSB7CgkJCSR0aGlzX3NpdGV1cmwgPSBzdHJfcmVwbGFjZSggJ2h0dHBzOi8vJywgJ2h0dHA6Ly8nLCBza
XRlX3VybCgpICk7CgkJCSR0aGlzX3NpdGV1cmxkYXQgPSBzdHJfcmVwbGFjZSggJ2h0dHBzOi8vJywgJ2h0
dHA6Ly8nLCAkdGhpcy0+X3N0YXRlWydkYXQnXVsnc2l0ZXVybCddICk7CgkJCWlmICggJHRoaXNfc2l0ZXV
ybCAhPSAkdGhpc19zaXRldXJsZGF0ICkgewoJCQkJJHRoaXMtPl9lcnJvciggX18oICdFcnJvciAjNTg0OT
g0MzogU2l0ZSBVUkwgZG9lcyBub3QgbWF0Y2guIEN1cnJlbnQgU2l0ZSBVUkw6IGAnIC4gc2l0ZV91cmwoK
SAuICdgLiBTaXRlIFVSTCBpbiBiYWNrdXA6IGAnIC4gJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ3NpdGV1cmwn
XSAuICdgLiBZb3UgY2Fubm90IHJvbGwgYmFjayB0aGUgZGF0YWJhc2UgaWYgdGhlIFVSTCBoYXMgY2hhbmd
lZCBvciBmb3IgYmFja3VwcyBvciBhbm90aGVyIHNpdGUuIFVzZSBpbXBvcnRidWRkeS5waHAgdG8gcmVzdG
9yZSBvciBtaWdyYXRlIGluc3RlYWQuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCXJldHVyb
iBmYWxzZTsKCQkJfQoKCQkJZ2xvYmFsICR3cGRiOwoJCQlpZiAoICR0aGlzLT5fc3RhdGVbJ2RhdCddWydk
Yl9wcmVmaXgnXSAhPSAkd3BkYi0+cHJlZml4ICkgewoJCQkJJHRoaXMtPl9lcnJvciggX18oICdFcnJvciA
jMjM4OTM5NDogRGF0YWJhc2UgcHJlZml4IGRvZX
Mgbm90IG1hdGNoLiBZb3UgY2Fubm90IHJvbGwgYmFjayB0aGUgZGF0YWJhc2UgaWYgdGhlIGRhdGFiYXNlI
HByZWZpeCBoYXMgY2hhbmdlZCBvciBmb3IgYmFja3VwcyBvciBhbm90aGVyIHNpdGUuIFVzZSBpbXBvcnRi
dWRkeS5waHAgdG8gcmVzdG9yZSBvciBtaWdyYXRlIGluc3RlYWQuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHk
nICkgKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoKCQkJcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydyb2
xsYmFja19jbGVhbnVwcyddWyAkdGhpcy0+X3N0YXRlWydzZXJpYWwnXSBdID0gdGltZSgpOwoJCQlwYl9iY
WNrdXBidWRkeTo6c2F2ZSgpOwoKCQkJLy8gR2VuZXJhdGUgVU5ETyBzY3JpcHQuCgkJCXBiX2JhY2t1cGJ1
ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0dlbmVyYXRpbmcgdW5kbyBzY3JpcHQuJyApOwoJCQkkdGhpcy0
+X3N0YXRlWyd1bmRvRmlsZSddID0gJ2JhY2t1cGJ1ZGR5X3JvbGxiYWNrX3VuZG8tJyAuICR0aGlzLT5fc3
RhdGVbJ3NlcmlhbCddIC4gJy5waHAnOwoJCQkkdW5kb1VSTCA9IHJ0cmltKCBzaXRlX3VybCgpLCAnL1xcJ
yApIC4gJy8nIC4gJHRoaXMtPl9zdGF0ZVsndW5kb0ZpbGUnXTsKCQkJJHVuZG9fc291cmNlID0gZGlybmFt
ZSggX19GSUxFX18gKSAuICcvX3JvbGxiYWNrX3VuZG8ucGhwJzsKCQkJJHVuZG9fZGVzdCA9IEFCU1BBVEg
gLiAkdGhpcy0+X3N0YXRlWyd1bmRvRmlsZSddOwoJCQlpZiAoIGZhbHNlID09PSBjb3B5KCAkdW5kb19zb3
VyY2UsICR1bmRvX2Rlc3QgKSApIHsKCQkJCSR0aGlzLT5fZXJyb3IoICdXYXJuaW5nOiBVbmFibGUgdG8gY
3JlYXRlIHVuZG8gc2NyaXB0IGluIHNpdGUgcm9vdC4gWW91IHdpbGwgbm90IGJlIGFibGUgdG8gYXV0b21h
dGVkIHVuZG9pbmcgdGhlIHJvbGxiYWNrIGlmIHNvbWV0aGluZyBmYWlscyBzbyBCYWNrdXBCdWRkeSB3aWx
sIG5vdCBjb250aW51ZS4gVHJpZWQgdG8gY29weSBmaWxlIGAnIC4gJHVuZG9fc291cmNlIC4gJ2AgdG8gYC
cgLiAkdW5kb19kZXN0IC4gJ2AuJyApOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJCSR0aGlzLT5fc3Rhd
GVbJ3VuZG9VUkwnXSA9ICR1bmRvVVJMOwoJCX0KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFp
bHMnLCAnRmluaXNoZWQgc3RhcnRpbmcgZnVuY3Rpb24uJyApOwoJCXJldHVybiB0cnVlOwoJfSAvLyBFbmQ
gc3RhcnQoKS4KCgoKCS8qIGV4dHJhY3REYXRhYmFzZSgpCgkgKgoJICogUk9MTEJBQ0ssIFJFU1RPUkUKCS
AqIEV4dHJhY3RzIGRhdGFiYXNlIGZpbGUocykgaW50byB0ZW1wIGRpci4KCSAqCgkgKiBAcGFyYW0JYm9vb
AkJdHJ1ZSBvbiBzdWNjZXNzLCBlbHNlIGZhbHNlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZXh0cmFjdERh
dGFiYXNlKCkgewoJCSR0aGlzLT5fYmVmb3JlKCBfX0ZVTkNUSU9OX18gKTsKCgkJZGllKCAnIEVSUk9SICM
zNDg0Mzc4NDM3ODQ6IERFUFJFQ0FURUQgRlVOQ1RJT04gQ0FMTCEgJyApOwoKCQkkdGhpcy0+X3ByaW9yUm
9sbGJhY2tDbGVhbnVwKCk7CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0xvYWRpb
mcgemlwYnVkZHkuJyApOwoJCXJlcXVpcmVfb25jZSggcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkg
LiAnL2xpYi96aXBidWRkeS96aXBidWRkeS5waHAnICk7CgkJJHppcGJ1ZGR5ID0gbmV3IHBsdWdpbmJ1ZGR
5X3ppcGJ1ZGR5KCBkaXJuYW1lKCAkdGhpcy0+X3N0YXRlWydhcmNoaXZlJ10gKSApOwoJCXBiX2JhY2t1cG
J1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1ppcGJ1ZGR5IGxvYWRlZC4nICk7CgoJCS8vIEZpbmQgU1FMI
GZpbGUgbG9jYXRpb24gaW4gYXJjaGl2ZS4KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycs
ICdDYWxjdWxhdGluZyBwb3NzaWJsZSBTUUwgZmlsZSBsb2NhdGlvbnMuJyApOwoJCSRkZXRlY3RlZFNRTEx
vY2F0aW9uID0gJyc7CgkJJHBvc3NpYmxlU1FMTG9jYXRpb25zID0gYXJyYXkoKTsKCgkJJHBvc3NpYmxlU1
FMTG9jYXRpb25zW10gPSB0cmltKCBydHJpbSggc3RyX3JlcGxhY2UoICdiYWNrdXBidWRkeV9kYXQucGhwJ
ywgJycsICR0aGlzLT5fc3RhdGVbJ2RhdExvY2F0aW9uJ10gKSwgJ1xcLycgKSAuICcvZGJfMS5zcWwnLCAn
XFwvJyApOyAvLyBTUUwgZmlsZSBtb3N0IGxpa2VseSBpcyBpbiB0aGUgc2FtZSBzcG90IHRoZSBkYXQgZml
sZSB3YXMuCgkJJHBvc3NpYmxlU1FMTG9jYXRpb25zW10gPSAnZGJfMS5zcWwnOyAvLyBEQiBiYWNrdXAuIH
YyLngrCgkJJHBvc3NpYmxlU1FMTG9jYXRpb25zW10gPSAnd3AtY29udGVudC91cGxvYWRzL2JhY2t1cGJ1Z
GR5X3RlbXAvJyAuICR0aGlzLT5fc3RhdGVbJ3NlcmlhbCddIC4gJy9kYl8xLnNxbCc7IC8vIEZ1bGwgYmFj
a3VwLgoKCQkkcG9zc2libGVTUUxMb2NhdGlvbnNbXSA9ICdkYi5zcWwnOyAvLyBEQiBiYWNrdXAuIHYxLng
KCQkkcG9zc2libGVTUUxMb2NhdGlvbnNbXSA9ICd3cC1jb250ZW50L3VwbG9hZHMvYmFja3VwYnVkZHlfdG
VtcC8nIC4gJHRoaXMtPl9zdGF0ZVsnc2VyaWFsJ10gLiAnL2RiLnNxbCc7IC8vIEZ1bGwgYmFja3VwIHYxL
nguCgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1Bvc3NpYmxlIFNRTCBmaWxlIGxv
Y2F0aW9uczogYCcgLiBpbXBsb2RlKCAnOycsICRwb3NzaWJsZVNRTExvY2F0aW9ucyApIC4gJ2AuJyApOwo
JCSRwb3NzaWJsZVNRTExvY2F0aW9ucyA9IGFycmF5X3VuaXF1ZSggJHBvc3NpYmxlU1FMTG9jYXRpb25zIC
k7CgkJZm9yZWFjaCAoICRwb3NzaWJsZVNRTExvY2F0aW9ucyBhcyAkcG9zc2libGVTUUxMb2NhdGlvbiApI
HsKCQkJaWYgKCB0cnVlID09PSAkemlwYnVkZHktPmZpbGVfZXhpc3RzKCAkdGhpcy0+X3N0YXRlWydhcmNo
aXZlJ10sICRwb3NzaWJsZVNRTExvY2F0aW9uLCAkbGVhdmVfb3BlbiA9IHRydWUgKSApIHsKCQkJCSRkZXR
lY3RlZFNRTExvY2F0aW9uID0gJHBvc3NpYmxlU1FMTG9jYXRpb247CgkJCQlicmVhazsKCQkJfQoJCX0gLy
8gZW5kIGZvcmVhY2guCgoJCWlmICggJycgPT0gJGRldGVjdGVkU1FMTG9jYXRpb24gKSB7CgkJCSR0aGlzL
T5fZXJyb3IoICdFcnJvciAjODQ4Mzc4MzogVW5hYmxlIHRvIGZpbmQgU1FMIGZpbGUocykgbG9jYXRpb24u
JyApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscyc
sICdDb25maXJtZWQgU1FMIGZpbGUgbG9jYXRpb246IGAnIC4gJGRldGVjdGVkU1FMTG9jYXRpb24gLiAnYC
4nICk7CgkJJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydzcWxGaWxlJ10gPSAkZGV0ZWN0Z
WRTUUxMb2NhdGlvbjsKCgkJLy8gR2V0IFNRTCBmaWxlLgoJCSRmaWxlcyA9IGFycmF5KAoJCQkkZGV0ZWN0
ZWRTUUxMb2NhdGlvbiA9PiAnZGJfMS5zcWwnLAoJCSk7CgkJcGJfYmFja3VwYnVkZHk6OiRmaWxlc3lzdGV
tLT51bmxpbmtfcmVjdXJzaXZlKCAkdGhpcy0+X3N0YXRlWyd0ZW1wUGF0aCddICk7IC8vIFJlbW92ZSBpZi
BhbHJlYWR5IGV4aXN0cy4KCQlta2RpciggJHRoaXMtPl9zdGF0ZVsndGVtcFBhdGgnXSApOyAvLyBNYWtlI
GVtcHR5IGRpcmVjdG9yeS4KCQlyZXF1aXJlKCBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcv
Y2xhc3Nlcy9fcmVzdG9yZUZpbGVzLnBocCcgKTsKCgkJLy8gRXh0cmFjdCBTUUwgZmlsZS4KCQlwYl9iYWN
rdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdFeHRyYWN0aW5nIFNRTCBmaWxlKHMpLicgKTsKCQlpZi
AoIGZhbHNlID09PSBiYWNrdXBidWRkeV9yZXN0b3JlX2ZpbGVzOjpyZXN0b3JlKCAkdGhpcy0+X3N0YXRlW
ydhcmNoaXZlJ10sICRmaWxlcywgJHRoaXMtPl9zdGF0ZVsndGVtcFBhdGgnXSwgJHppcGJ1ZGR5ICkgKSB7
CgkJCSR0aGlzLT5fZXJyb3IoICdFcnJvciAjODUzODQ6IFVuYWJsZSB0byByZXN0b3JlIG9uZSBvciBtb3J
lIGRhdGFiYXNlIGZpbGVzLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJcGJfYmFja3VwYnVkZHk6On
N0YXR1cyggJ2RldGFpbHMnLCAnRmluaXNoZWQgZGF0YWJhc2UgZXh0cmFjdGlvbiBmdW5jdGlvbi4nICk7C
gkJcmV0dXJuIHRydWU7Cgl9IC8vIEVuZCBleHRyYWN0RGF0YWJhc2UoKS4KCgoKCXB1YmxpYyBmdW5jdGlv
biBkZXRlcm1pbmVEYXRhYmFzZUZpbGVzKCkgewoJCSR0aGlzLT5fYmVmb3JlKCBfX0ZVTkNUSU9OX18gKTs
KCgkJLy8gVHJ5IHRvIGZpbmQgU1FMIGZpbGUgc2luY2UgaXQgaGFzIG5vdCBiZWVuIGZvdW5kIHlldC4KCQ
lwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEZXRlcm1pbmluZyBTUUwgZmlsZSBsb2Nhd
Glvbi4uLicgKTsKCgkJJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydzcWxGaWxlc0xvY2F0
aW9uJ10gPSAnJzsKCQkkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ3NxbEZpbGVzJ10gPSB
hcnJheSgpOwoKCQkkcG9zc2libGVfc3FsX2ZpbGVfcGF0aHMgPSBhcnJheSggLy8gUG9zc2libGUgbG9jYX
Rpb25zIG9mIC5TUUwgZmlsZS4gTG9vayBmb3IgU1FMIGZpbGVzIGluIHJvb3QgTEFTVCBpbiBjYXNlIHVzZ
XIgbGVmdCBmaWxlcyB0aGVyZS4KCQkJJHRoaXMtPl9zdGF0ZVsncmVzdG9yZUZpbGVSb290J10gLiAnd3At
Y29udGVudC91cGxvYWRzL3RlbXBfJyAuICR0aGlzLT5fc3RhdGVbJ3NlcmlhbCddIC4gJy8nLCAgICAgICA
gICAgICAgLy8gRnVsbCBiYWNrdXAgPCB2Mi4wLgoJCQkkdGhpcy0+X3N0YXRlWydyZXN0b3JlRmlsZVJvb3
QnXSAuICd3cC1jb250ZW50L3VwbG9hZHMvYmFja3VwYnVkZHlfdGVtcC8nIC4gJHRoaXMtPl9zdGF0ZVsnc
2VyaWFsJ10gLiAnLycsICAvLyBGdWxsIGJhY2t1cCA+PSB2Mi4wLgoJCQkkdGhpcy0+X3N0YXRlWyd0ZW1w
UGF0aCddLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmVkIGZyb20gZGV0ZWN0aW5nIERBVCBmaW
xlLiBTaG91bGQgYWx3YXlzIGJlIHRoZSBsb2NhdGlvbiByZWFsbHkuLi4gQXMgb2YgdjQuMS4KCQkJJHRoa
XMtPl9zdGF0ZVsncmVzdG9yZUZpbGVSb290J10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGF0YWJhc2UgYmFja3VwIDw
gdjIuMC4KCQkJQUJTUEFUSCAuICd3cC1jb250ZW50L3VwbG9hZHMvYmFja3VwYnVkZHlfdGVtcC8nIC4gJH
RoaXMtPl9zdGF0ZVsnc2VyaWFsJ10gLiAnLycsICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFud
WFsbHkgZXh0cmFjdGVkIGJhY2t1cC4KCQkJQUJTUEFUSCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgLy8gTWFudWFsbHkgdW56aXBwZWQgZGIgYmFja3VwIGxvY2F0aW9uLgoJCSk7CgkJJGZvdW
5kU1FMID0gZmFsc2U7CgoJCWZvcmVhY2ggKCAkcG9zc2libGVfc3FsX2ZpbGVfcGF0aHMgYXMgJHBvc3NpY
mxlX3NxbF9maWxlX3BhdGggKSB7IC8vIENoZWNrIGVhY2ggZmlsZSBsb2NhdGlvbiB0byBzZWUgd2hpY2gg
aGl0cy4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTG9va2luZyBmb3IgU1FMIGZ
pbGVzIGluIGAnIC4gJHBvc3NpYmxlX3NxbF9maWxlX3BhdGggLiAnYC4nICk7CgkJCSRwb3NzaWJsZV9zcW
xfZmlsZXMgPSBnbG9iKCAkcG9zc2libGVfc3FsX2ZpbGVfcGF0aCAuICcqLnNxbCcgKTsKCQkJaWYgKCAhI
GlzX2FycmF5KCAkcG9zc2libGVfc3FsX2ZpbGVzICkgfHwgKCAwID09IGNvdW50KCAkcG9zc2libGVfc3Fs
X2ZpbGVzICkgKSApIHsgLy8gTm8gU1FMIGZpbGVzIGhlcmUuCgkJCQljb250aW51ZTsKCQkJfQoKCQkJLy8
gRm91bmQgZGlyZWN0b3J5IHdpdGggU1FMIGZpbGVzIGluIGl0LgoJCQkkdGhpcy0+X3N0YXRlWydkYXRhYm
FzZVNldHRpbmdzJ11bJ3NxbEZpbGVzTG9jYXRpb24nXSA9ICRwb3NzaWJsZV9zcWxfZmlsZV9wYXRoOwoKC
QkJLy8gUmVtb3ZlIHBhdGggaW5mb3JtYXRpb24uCgkJCSRwb3NzaWJsZV9zcWxfZmlsZXMgPSBhcnJheV9t
YXAoICdiYXNlbmFtZScsICRwb3NzaWJsZV9zcWxfZmlsZXMgKTsKCgkJCS8vIFRha2UgU1FMIGZpbGVzIG9
1dCBvZiBsaXN0IHRoYXQgYmVnaW4gd2l0aCB1bmRlcnNjb3JlIChCYWNrdXBCdWRkeSBTdGFzaCBMaXZlIH
RpbWVzdGFtcGVkIGZpbGVzKSB0byBwdXQgdGhlbSBhdCBlbmQgb2YgdGhlIGFycmF5IHRvIHBsYXkgYmFja
yBhdCB0aGUgZW5kLgoJCQkkbGl2ZV9zcWxfZmlsZXMgPSBhcnJheSgpOwoJCQlmb3JlYWNoICggJHBvc3Np
YmxlX3NxbF9maWxlcyBhcyAkaW5kZXggPT4gJHNxbF9maWxlICkgewoJCQkJaWYgKCAnXycgPT0gc3Vic3R
yKCAkc3FsX2ZpbGUsIDAsIDEgKSApIHsKCQkJCQkkbGl2ZV9zcWxfZmlsZXNbXSA9ICRzcWxfZmlsZTsgLy
8gQ29weSBpbnRvIG5ldyBhcnJheS4KCQkJCQl1bnNldCggJHBvc3NpYmxlX3NxbF9maWxlc1sgJGluZGV4I
F0gKTsgLy8gUmVtb3ZlIGZyb20gb3JpZ2luYWwgYXJyYXkuCgkJCQl9CgkJCX0KCgkJCS8vIEZpeCBtaXNz
aW5nIGluZGV4ZXMgb2YgcmVtb3ZlZCBpdGVtcy4KCQkJJHBvc3NpYmxlX3NxbF9maWxlcyA9IGFycmF5X2Z
pbHRlciggJHBvc3NpYmxlX3NxbF9maWxlcyApOwoKCQkJLy8gQXBwZW5kIExJVkUgU1FMIGZpbGVzIHRvIG
VuZCBvZiBub3JtYWwgU1FMIGZpbGVzIGxpc3QuCgkJCSRwb3NzaWJsZV9zcWxfZmlsZXMgPSBhcnJheV9tZ
XJnZSggJHBvc3NpYmxlX3NxbF9maWxlcywgJGxpdmVfc3FsX2ZpbGVzICk7CgoJCQkkdGhpcy0+X3N0YXRl
WydkYXRhYmFzZVNldHRpbmdzJ11bJ3NxbEZpbGVzJ10gPSAkcG9zc2libGVfc3FsX2ZpbGVzOwoJCQlwYl9
iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGb3VuZCAnIC4gY291bnQoICR0aGlzLT5fc3RhdG
VbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnc3FsRmlsZXMnXSApIC4gJyBTUUwgZmlsZXMgaW4gYCcgLiAkcG9zc
2libGVfc3FsX2ZpbGVfcGF0aCAuICdgLicgKTsKCQkJYnJlYWs7CgoJCX0gLy8gRW5kIGZvcmVhY2goKS4K
CQl1bnNldCggJHBvc3NpYmxlX3NxbF9maWxlX3BhdGhzICk7CgoJCWlmICggZmFsc2UgIT09ICR0aGlzLT5
fc3RhdGVbJ3Jlc3RvcmVEYXRhYmFzZSddICkgewoJCQlpZiAoIGNvdW50KCAkdGhpcy0+X3N0YXRlWydkYX
RhYmFzZVNldHRpbmdzJ11bJ3NxbEZpbGVzJ10gKSA9PSAwICkgewoJCQkJaWYgKCAnZGVwbG95JyA9PSAkd
Ghpcy0+X3N0YXRlWyd0eXBlJ10gKSB7IC8vIENhbiBiZSBub3JtYWwgZm9yIGRlcGxveW1lbnQgc28gbm8g
d2FybmluZy4KCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdVbmFibGUgdG8gZml
uZCBkYl8xLnNxbCBvciBvdGhlciBleHBlY3RlZCBkYXRhYmFzZSBmaWxlIGluIHRoZSBleHRyYWN0ZWQgZm
lsZXMgaW4gdGhlIGV4cGVjdGVkIGxvY2F0aW9uL
iBUaGlzIGlzIG5vcm1hbCBpZiBubyB0YWJsZXMgd2VyZSBzZWxlY3RlZCB0byBiYWNrIHVwLiBNYWtlIHN1
cmUgeW91IGRpZCBub3QgcmVuYW1lIHlvdXIgYmFja3VwIFpJUCBmaWxlLiBZb3UgbWF5IG1hbnVhbGx5IHJ
lc3RvcmUgeW91ciBTUUwgZmlsZSBpZiB5b3UgY2FuIGZpbmQgaXQgdmlhIHBocG15YWRtaW4gb3Igc2ltaW
xhciB0b29sIHRoZW4gb24gU3RlcCAxIG9mIEltcG9ydEJ1ZGR5IHNlbGVjdCB0aGUgYWR2YW5jZWQgb3B0a
W9uIHRvIHNraXAgZGF0YWJhc2UgaW1wb3J0LiBUaGlzIHdpbGwgYWxsb3cgeW91IHRvIHByb2NlZWQuJyAp
OwoJCQkJfSBlbHNlIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnd2FybmluZycsICdXYXJuaW5
nICMzNDc0ODczNDogVW5hYmxlIHRvIGZpbmQgZGJfMS5zcWwgb3Igb3RoZXIgZXhwZWN0ZWQgZGF0YWJhc2
UgZmlsZSBpbiB0aGUgZXh0cmFjdGVkIGZpbGVzIGluIHRoZSBleHBlY3RlZCBsb2NhdGlvbi4gVGhpcyBpc
yBub3JtYWwgaWYgbm8gdGFibGVzIHdlcmUgc2VsZWN0ZWQgdG8gYmFjayB1cC4gTWFrZSBzdXJlIHlvdSBk
aWQgbm90IHJlbmFtZSB5b3VyIGJhY2t1cCBaSVAgZmlsZS4gWW91IG1heSBtYW51YWxseSByZXN0b3JlIHl
vdXIgU1FMIGZpbGUgaWYgeW91IGNhbiBmaW5kIGl0IHZpYSBwaHBteWFkbWluIG9yIHNpbWlsYXIgdG9vbC
B0aGVuIG9uIFN0ZXAgMSBvZiBJbXBvcnRCdWRkeSBzZWxlY3QgdGhlIGFkdmFuY2VkIG9wdGlvbiB0byBza
2lwIGRhdGFiYXNlIGltcG9ydC4gVGhpcyB3aWxsIGFsbG93IHlvdSB0byBwcm9jZWVkLicgKTsKCQkJCX0K
CQkJCXJldHVybiBmYWxzZTsKCQkJfSBlbHNlIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXR
haWxzJywgJ1NRTCBmaWxlcyBmb3VuZC4gRmluaXNoZWQgZGV0ZXJtaW5pbmcgZGF0YWJhc2UgZmlsZXMuJy
ApOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9Cgl9IC8vIEVuZCBkZXRlcm1pbmVEYXRhYmFzZUZpbGVzK
CkuCgoKCgkvKiByZXN0b3JlRGF0YWJhc2UoKQoJICoKCSAqIFJPTExCQUNLLCBSRVNUT1JFCgkgKiBSZW5h
bWVzIGV4aXN0aW5nIHRhYmxlcyB0aGVuIGltcG9ydHMgdGhlIGRhdGFiYXNlIFNRTCBkYXRhIGludG8gbXl
zcWwuIFR1cm5zIG9uIG1haW50ZW5hbmNlIG1vZGUgZHVyaW5nIHRoaXMuCgkgKgoJIDggQHBhcmFtCXN0cm
luZwkJJG92ZXJyaWRlUHJlZml4CQlJZiBub3QgZW1wdHkgc3RyaW5nIHRoZW4gdXNlIHRoaXMgZGIgcHJlZ
ml4IGluc2VhZCBvZiB0aGUgb25lIHNldCBpbiB0aGUgc3RhdGUgZGF0YS4KCSAqIEByZXR1cm4JYm9vbHxh
cnJheQkJCQkJCXRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZSwgT1IgYXJyYXkgaWYgY2h1bmt
pbmcgbmVlZGVkIGZvciBEQiBjb250aW51YXRpb24uIGNodW5rcyBtaWQtZGIgdGFibGUgaW1wb3J0IGFuZC
9vciBmb3IgZWFjaCBpbmRpdmlkdWFsIC5zcWwgZmlsZS4gZGVwZW5kcyBvbiBtZXRob2QsIHJ1bnRpbWUgb
GVmdCwgZXRjLiBzZWUgbXlzcWxidWRkeSBmb3IgY2h1bmtpbmcgZGV0YWlscy4KCSAqLwoJcHVibGljIGZ1
bmN0aW9uIHJlc3RvcmVEYXRhYmFzZSggJG92ZXJyaWRlUHJlZml4ID0gJycgKSB7CgkJJHRoaXMtPl9iZWZ
vcmUoIF9fRlVOQ1RJT05fXyApOwoJCWdsb2JhbCAkd3BkYjsKCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cy
ggJ2RldGFpbHMnLCAnUmVzdG9yaW5nIGRhdGFiYXNlIHRhYmxlcy4nICk7CgoJCWlmICggISBpc3NldCggJ
HRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydzcWxGaWxlc0xvY2F0aW9uJ10gKSB8fCAoICcn
ID09ICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnc3FsRmlsZXNMb2NhdGlvbiddICkgKSB
7CgkJCSR0aGlzLT5kZXRlcm1pbmVEYXRhYmFzZUZpbGVzKCk7CgkJfQoKCQlpZiAoICdyb2xsYmFjaycgPT
0gJHRoaXMtPl9zdGF0ZVsndHlwZSddICkgewoJCQkkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ
11bJ3NlcnZlciddID0gREJfSE9TVDsKCQkJJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydk
YXRhYmFzZSddID0gREJfTkFNRTsKCQkJJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWyd1c2V
ybmFtZSddID0gREJfVVNFUjsKCQkJJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydwYXNzd2
9yZCddID0gREJfUEFTU1dPUkQ7CgoJCQkkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ3ByZ
WZpeCddID0gJ2JibmV3LScgLiBzdWJzdHIoICR0aGlzLT5fc3RhdGVbJ3NlcmlhbCddLCAwLCA0ICkgLiAn
Xyc7CgoJCQkkZm9yY2VNeXNxbE1ldGhvZHMgPSBhcnJheSggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd
kYXRhYmFzZV9tZXRob2Rfc3RyYXRlZ3knXSApOwoJCX0KCgkJLy8gQWxsb3cgb3ZlcnJpZGluZyBwcmVmaX
ggaW4gcGFyYW1ldGVycy4KCQlpZiAoICcnID09ICRvdmVycmlkZVByZWZpeCApIHsKCQkJJGltcG9ydFByZ
WZpeCA9ICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsncHJlZml4J107CgkJfSBlbHNlIHsK
CQkJJGltcG9ydFByZWZpeCA9ICRvdmVycmlkZVByZWZpeDsKCQl9CgoJCS8vIERldGVybWluZSBkYXRhYmF
zZSBzdHJhdGVneS4KCQlpZiAoICdwaHAnID09ICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXV
snZGF0YWJhc2VNZXRob2RTdHJhdGVneSddICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0Y
WlscycsICdEYXRhYmFzZSBtZXRob2Qgc2V0IHRvIFBIUCBvbmx5LicgKTsKCQkJJGZvcmNlTXlzcWxNZXRo
b2RzID0gYXJyYXkoICdwaHAnICk7CgkJfSBlbHNlaWYgKCAnY29tbWFuZGxpbmUnID09ICR0aGlzLT5fc3R
hdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnZGF0YWJhc2VNZXRob2RTdHJhdGVneSddICkgewoJCQlwYl9iYW
NrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEYXRhYmFzZSBtZXRob2Qgc2V0IHRvIGNvbW1hbmQgb
GluZSBvbmx5LicgKTsKCQkJJGZvcmNlTXlzcWxNZXRob2RzID0gYXJyYXkoICdjb21tYW5kbGluZScgKTsK
CQl9IGVsc2VpZiAoICdhbGwnID09ICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnZGF0YWJ
hc2VNZXRob2RTdHJhdGVneSddICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIC
dEYXRhYmFzZSBtZXRob2Qgc2V0IHRvIGFsbCAtLSB1c2luZyBpbiBwcmVmZXJyZWQgb3JkZXI6IHBocCwgY
29tbWFuZGxpbmUuJyApOwoJCQkkZm9yY2VNeXNxbE1ldGhvZHMgPSBhcnJheSggJ3BocCcsICdjb21tYW5k
bGluZScgKTsKCQl9IGVsc2UgeyAvLyBOb3QgcGFzc2VkIGZvciBzb21lIG9kZCByZWFzb24/IFNldCBkZWZ
hdWx0LgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnd2FybmluZycsICdEYXRhYmFzZSBtZXRob2Qgbm
90IHBhc3NlZCB0aG91Z2ggZXhwZWN0ZWQuIFVzaW5nIGRlZmF1bHQgb2YgUEhQIG9ubHkuJyApOwoJCQkkZ
m9yY2VNeXNxbE1ldGhvZHMgPSBhcnJheSggJ3BocCcgKTsKCQl9CgoJCS8vIEluaXRpYWxpemUgbXlzcWxi
dWRkeS4KCQlyZXF1aXJlX29uY2UoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9saWIvbXl
zcWxidWRkeS9teXNxbGJ1ZGR5LnBocCcgKTsKCQlwYl9iYWNrdXBidWRkeTo6JGNsYXNzZXNbJ215c3FsYn
VkZHknXSA9IG5ldyBwYl9iYWNrdXBidWRkeV9teXNxbGJ1ZGR5KCAkdGhpcy0+X3N0YXRlWydkYXRhYmFzZ
VNldHRpbmdzJ11bJ3NlcnZlciddLCAkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ2RhdGFi
YXNlJ10sICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsndXNlcm5hbWUnXSwgJHRoaXMtPl9
zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydwYXNzd29yZCddLCAkaW1wb3J0UHJlZml4LCAkZm9yY2VNeX
NxbE1ldGhvZHMsICR0aGlzLT5fc3RhdGVbJ21heEV4ZWN1dGlvblRpbWUnXSApOyAvLyAkZGF0YWJhc2Vfa
G9zdCwgJGRhdGFiYXNlX25hbWUsICRkYXRhYmFzZV91c2VyLCAkZGF0YWJhc2VfcGFzcywgJG9sZF9wcmVm
aXgsICRmb3JjZV9tZXRob2QgPSBhcnJheSgpCgkJaWYgKCBpc3NldCggJHRoaXMtPl9zdGF0ZVsnZGF0J11
bJ2RiX3ZlcnNpb24nXSApICkgewoJCQlwYl9iYWNrdXBidWRkeTo6JGNsYXNzZXNbJ215c3FsYnVkZHknXS
0+c2V0X2luY29taW5nX3NxbF92ZXJzaW9uKCAkdGhpcy0+X3N0YXRlWydkYXQnXVsnZGJfdmVyc2lvbiddI
Ck7IC8vIFRlbGwgbXlzcWxidWRkeSB0aGUgdmVyc2lvbiBvZiB0aGUgaW5jb21pbmcgU1FMIGZpbGUncyBt
eXNxbC4KCQl9CgoJCS8vIFJlc3RvcmUgZWFjaCBTUUwgZmlsZSBhcyBpdHMgb3duIHBhZ2UgbG9hZC4KCQl
pZiAoICEgaXNzZXQoICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnaW1wb3J0UmVzdW1lRm
lsZXMnXSApICkgeyAvLyBGaXJzdCBwYXNzIHNvIHBvcHVsYXRlIGxpc3Qgb2YgU1FMIGZpbGVzIG5lZWRpb
mcgaW1wb3J0ZWQuCgkJCSR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnaW1wb3J0UmVzdW1l
RmlsZXMnXSA9ICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnc3FsRmlsZXMnXTsKCQl9Cgk
JJGZpbGVzUmVtYWluaW5nID0gJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydpbXBvcnRSZX
N1bWVGaWxlcyddOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1NRTCBmaWxlcyB0b
yBpbXBvcnQ6ICcgLiBjb3VudCggJGZpbGVzUmVtYWluaW5nICkgKTsKCQlmb3JlYWNoICggJGZpbGVzUmVt
YWluaW5nIGFzICRzcWxfZmlsZSApIHsKCQkJJGZ1bGxfZmlsZSA9ICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXN
lU2V0dGluZ3MnXVsnc3FsRmlsZXNMb2NhdGlvbiddIC4gJHNxbF9maWxlOwoJCQlwYl9iYWNrdXBidWRkeT
o6c3RhdHVzKCAnZGV0YWlscycsICdJbXBvcnRpbmcgU1FMIGZpbGUgYCcgLiBiYXNlbmFtZSggJHNxbF9ma
WxlICkgLiAnYCAoc2l6ZTogJyAuIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5maWxlX3NpemUoIEBmaWxl
c2l6ZSggJGZ1bGxfZmlsZSApICkgLiAnKS4nICk7CgkJCS8vIFRlbGwgbXlzcWxidWRkeSB0byBJTVBPUlQ
gdGhlIFNRTCBmaWxlLgoJCQkkaW1wb3J0X3Jlc3VsdCA9IHBiX2JhY2t1cGJ1ZGR5OjokY2xhc3Nlc1snbX
lzcWxidWRkeSddLT5pbXBvcnQoICRmdWxsX2ZpbGUsICRvbGRQcmVmaXggPSAkdGhpcy0+X3N0YXRlWydkY
XQnXVsnZGJfcHJlZml4J10sICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnaW1wb3J0UmVz
dW1lUG9pbnQnXSwgJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydpZ25vcmVTcWxFcnJvcnM
nXSApOwoKCQkJaWYgKCBmYWxzZSA9PT0gJGltcG9ydF9yZXN1bHQgKSB7CgkJCQkkdGhpcy0+X2Vycm9yKC
AnRXJyb3IgIzk1MzgzNDogUHJvYmxlbSBpbXBvcnRpbmcgZGF0YWJhc2UuIFNlZSBzdGF0dXMgbG9nIGFib
3ZlIGZvciBkZXRhaWxzLicgKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfSBlbHNlaWYgKCB0cnVlID09PSAk
aW1wb3J0X3Jlc3VsdCApIHsgLy8gU3VjY2VzcyBvbiB0aGlzIFNRTCBmaWxlLgoJCQkJaWYgKCAnJyAhPSA
kdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ2ltcG9ydFJlc3VtZVBvaW50J10gKSB7IC8vIE
NodW5raW5nIHdhcyB1c2VkLiBHaXZlIHNvbWUgc3RhdHMuCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1c
yggJ2RldGFpbHMnLCAnQ2h1bmtpbmcgaW1wb3J0ZWQgYCcgLiAkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNl
dHRpbmdzJ11bJ2ltcG9ydGVkUmVzdW1lUm93cyddIC4gJ2Agcm93cyBpbiBgJyAuIHJvdW5kKCAkdGhpcy0
+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ2ltcG9ydGVkUmVzdW1lVGltZSddLCAzICkgLiAnYCBzZW
NvbmRzLiBgJyAuICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnaW1wb3J0ZWRSZXN1bWVGY
WlscyddIC4gJ2AgU1FMIHF1ZXJ5IGZhaWx1cmVzLicgKTsKCQkJCX0KCgkJCQlhcnJheV9zaGlmdCggJHRo
aXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydpbXBvcnRSZXN1bWVGaWxlcyddICk7IC8vIEZpbml
zaGVkIHRoaXMgdGFibGUgc28gdGFrZSBpdCBvZmYgdGhlIHN0YWNrLgoKCQkJCS8vIFJlc2V0IGNodW5raW
5nIGRhdGEgc2luY2UgdGhpcyBmaWxlIGlzIGZpbmlzaGVkLgoJCQkJJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc
2VTZXR0aW5ncyddWydpbXBvcnRSZXN1bWVQb2ludCddID0gJyc7CgkJCQkkdGhpcy0+X3N0YXRlWydkYXRh
YmFzZVNldHRpbmdzJ11bJ2ltcG9ydGVkUmVzdW1lUm93cyddID0gMDsKCQkJCSR0aGlzLT5fc3RhdGVbJ2R
hdGFiYXNlU2V0dGluZ3MnXVsnaW1wb3J0ZWRSZXN1bWVGYWlscyddID0gMDsKCQkJCSR0aGlzLT5fc3RhdG
VbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnaW1wb3J0ZWRSZXN1bWVUaW1lJ10gPSAwOwoKCQkJCXBiX2JhY2t1c
GJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0ZpbmlzaGVkIGltcG9ydGluZyBTUUwgZmlsZSBgJyAuIGJh
c2VuYW1lKCAkc3FsX2ZpbGUgKSAuICdgLiBEYXRhYmFzZSBmaWxlcyByZW1haW5pbmc6ICcgLiBjb3VudCg
gJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydpbXBvcnRSZXN1bWVGaWxlcyddICkgKTsKCQ
kJCS8vIE5PVEU6IEFzIG9mIHY3IG5vIGxvbmdlciBjaHVua2luZyBwZXIgU1FMIGZpbGUgdG8gbWFrZSBiZ
XR0ZXIgdXNlIG9mIHRpbWUgZm9yIG5ldyBMaXZlIHNtYWxsIHNxbCBmaWxlcy4gV0FTOiByZXR1cm4gYXJy
YXkoKTsgLy8gQW55IGFycmF5IHJldHVybmVkIGhlcmUgcmVzdWx0cyBpbiByZXN1bWluZyB1c2luZyB0aGU
gbGF0ZXN0IHN0YXRlIGRhdGEuIHNxbEZpbGVzUmVtYW5pbmcgaXMgd2hhdCB3ZSBjYXJlIGFib3V0IGtlZX
BpbmcgdXAgdG8gZGF0ZSBvbiB3aGljaCBmaWxlIHRvIGRvLgoJCQl9IGVsc2UgeyAvLyBSZXN1bWVkIGNod
W5raW5nIG5lZWRlZC4KCQkJCWlmICggISBpc19hcnJheSggJGltcG9ydF9yZXN1bHQgKSApIHsKCQkJCQlw
Yl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3IgIzkzNDg0OiBFeHBlY3RlZCBhcnJheS4
gR290OiBgJyAuICRpbXBvcnRfcmVzdWx0IC4gJ2AuJyApOwoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0gZW
xzZSB7CgkJCQkJJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydpbXBvcnRSZXN1bWVQb2lud
CddID0gJGltcG9ydF9yZXN1bHRbMF07CgkJCQkJJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncydd
WydpbXBvcnRlZFJlc3VtZVJvd3MnXSArPSAkaW1wb3J0X3Jlc3VsdFsxXTsKCQkJCQkkdGhpcy0+X3N0YXR
lWydkYXRhYmFzZVNldHRpbmdzJ11bJ2ltcG9ydGVkUmVzdW1lRmFpbHMnXSArPSAkaW1wb3J0X3Jlc3VsdF
syXTsKCQkJCQkkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ2ltcG9ydGVkUmVzdW1lVGltZ
SddICs9ICRpbXBvcnRfcmVzdWx0WzNdOwoJCQkJ
CXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0RhdGFiYXNlIGltcG9ydCBub3QgeWV0IGZ
pbmlzaGVkLiBSZXN1bWUgbmV4dCBhdCBgJyAuICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXV
snaW1wb3J0UmVzdW1lUG9pbnQnXSAuICdgLicgKTsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZ
GV0YWlscycsICdTbyBmYXIgaW1wb3J0ZWQgYCcgLiAkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdz
J11bJ2ltcG9ydGVkUmVzdW1lUm93cyddIC4gJ2Agcm93cyBpbiBgJyAuIHJvdW5kKCAkdGhpcy0+X3N0YXR
lWydkYXRhYmFzZVNldHRpbmdzJ11bJ2ltcG9ydGVkUmVzdW1lVGltZSddLCAzICkgLiAnYCBzZWNvbmRzLi
BgJyAuICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnaW1wb3J0ZWRSZXN1bWVGYWlscyddI
C4gJ2AgU1FMIHF1ZXJ5IGZhaWx1cmVzLicgKTsKCQkJCQlyZXR1cm4gJGltcG9ydF9yZXN1bHQ7CgkJCQl9
CgkJCX0KCQl9IC8vIGVuZCBmb3JlYWNoLgoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscyc
sICdEYXRhYmFzZSByZXN0b3JlIGZpbmlzaGVkIGltcG9ydGluZyBhbGwgU1FMIGZpbGVzLicgKTsKCQlyZX
R1cm4gdHJ1ZTsKCX0gLy8gRW5kIHJlc3RvcmVEYXRhYmFzZSgpLgoKCgoJLyoqCgkgKiBDb3BpZXMgQlVCI
HNldHRpbmdzIGZyb20gb2xkIG9wdGlvbnMgdGFibGUgb3ZlciB0byBuZXcgb3B0aW9ucyB0YWJsZQoJICog
VGhpcyBmdW5jdGlvbiBpcyBub3QgY3VycmVudGx5IGNhbGxlZCBpZiB0aGUgb3B0aW9ucyB0YWJsZSB3YXM
gbm90IGluY2x1ZGVkIGluIHRoZSBiYWNrdXAKCSAqIE5PVEU6IEFsc28gaGFuZGxlcyBzd2FwcGluZyBpVG
hlbWVzIExpY2Vuc2luZyAmIFN5bmMgYXV0aGVudGljYXRpb24uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzd
2FwRGF0YWJhc2VCQlNldHRpbmdzKCkgewoJCSR0aGlzLT5fYmVmb3JlKCBfX0ZVTkNUSU9OX18gKTsKCgkJ
aWYgKCAnZGVwbG95JyAhPSAkdGhpcy0+X3N0YXRlWyd0eXBlJ10gKSB7CgkJCXJldHVybiAkdGhpcy0+X2V
ycm9yKCAnVGhpcyByZXN0b3JlIHR5cGUgYCcgLiAkdGhpcy0+X3N0YXRlWyd0eXBlJ10gLiAnYCBkb2VzIG
5vdCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLicgKTsKCQl9CgoJCS8vIENhbGN1bGF0ZSB0ZW1wb3Jhcnkgd
GFibGUgcHJlZml4ZXMuCgkJJG5ld1ByZWZpeCA9ICdiYm5ldy0nIC4gc3Vic3RyKCAkdGhpcy0+X3N0YXRl
WydzZXJpYWwnXSwgMCwgNCApIC4gJ18nIC4gJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWyd
wcmVmaXgnXTsgLy8gSW5jb21pbmcgc2l0ZS4KCQkkb2xkUHJlZml4ID0gJHRoaXMtPl9zdGF0ZVsnZGF0YW
Jhc2VTZXR0aW5ncyddWydwcmVmaXgnXTsgLy8gQ3VycmVudCBsaXZlIHNpdGUgcHJlZml4LgoJCWdsb2Jhb
CAkd3BkYjsKCgkJJG9wdGlvbnNfdG9fa2VlcCA9IGFycmF5KAoJCQkncGJfYmFja3VwYnVkZHknLAoJCQkn
aXRoZW1lcy11cGRhdGVyLWtleXMnLAoJCQknaXRoZW1lcy1zeW5jLWNhY2hlJywKCQkJJ2l0aGVtZXMtc3l
uYy1hZG1pbl9tZW51JywKCQkJJ2l0aGVtZXMtc3luYy1hdXRoZW50aWNhdGVkJywKCQkJJ2l0c2VjX2hpZG
VfYmFja2VuZCcsIC8vIFByZXZlbnRzIGN1c3RvbSBsb2dpbiBVUkwgZnJvbSB0cmFuc2ZlcnJpbmcuCgkJK
TsKCgkJZm9yZWFjaCAoICRvcHRpb25zX3RvX2tlZXAgYXMgJG9wdGlvbiApIHsKCQkJLy8gR2V0IGN1cnJl
bnQgaVRoZW1lcyBMaWNlbnNpbmcgZm9yIGN1cnJlbnQgc2l0ZSAoaWYgYW55KS4KCQkJcGJfYmFja3VwYnV
kZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQ29weWluZyBkYXRhIGZyb20gb3B0aW9ucyB0YWJsZSBmb3Igb3
B0aW9uIGAnIC4gJG9wdGlvbiAuICdgLCBmcm9tIHRhYmxlIHByZWZpeGVkIHdpdGggYCcgLiAkb2xkUHJlZ
ml4IC4gJ2AgdG8gYCcgLiAkbmV3UHJlZml4IC4gJ2AgdG8gcmV0YWluIGFuZCBub3QgZ2V0IG92ZXJ3cml0
dGVuIGJ5IGluY29taW5nIHNpdGUgZGF0YS4nICk7CgkJCSRzcWwgPSAiU0VMRUNUIG9wdGlvbl92YWx1ZSB
GUk9NIGB7JG9sZFByZWZpeH1vcHRpb25zYCBXSEVSRSBvcHRpb25fbmFtZT0neyRvcHRpb259JyBMSU1JVC
AxOyI7CgkJCSRyZXN1bHRzID0gJHdwZGItPmdldF9yZXN1bHRzKCAkc3FsLCBBUlJBWV9BICk7CgkJCWlmI
CggY291bnQoICRyZXN1bHRzICkgPiAwICkgewoJCQkJLy8gRGVsZXRlIGFueSBleGlzdGluZyBzZXR0aW5n
cy4KCQkJCSR3cGRiLT5xdWVyeSggIkRFTEVURSBGUk9NIGB7JG5ld1ByZWZpeH1vcHRpb25zYCBXSEVSRSB
vcHRpb25fbmFtZT0neyRvcHRpb259JyBMSU1JVCAxOyIgKTsKCQkJCS8vIE92ZXJ3cml0ZSBpbmNvbWluZy
BzaXRlIEJhY2t1cEJ1ZGR5IHNldHRpbmdzIGluIGl0cyB0ZW1wIHRhYmxlLgoJCQkJaWYgKCBmYWxzZSA9P
T0gJHdwZGItPnF1ZXJ5KCAiSU5TRVJUIElOVE8gYHskbmV3UHJlZml4fW9wdGlvbnNgICggb3B0aW9uX25h
bWUsIG9wdGlvbl92YWx1ZSApIFZBTFVFUyggJyIgLiAkb3B0aW9uIC4gIicsICciIC4gYmFja3VwYnVkZHl
fY29yZTo6ZGJFc2NhcGUoICRyZXN1bHRzWzBdWydvcHRpb25fdmFsdWUnXSApIC4gIicgKSIgKSApIHsKCQ
kJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3IgIzIzNzkzMzI6IFVuYWJsZSB0b
yBjb3B5IG92ZXIgZGF0YSBmcm9tIGxpdmUgc2l0ZSB0byBpbmNvbWluZyBkYXRhYmFzZSBpbiB0ZW1wIHRh
YmxlLiBEZXRhaWxzOiBgJyAuICR3cGRiLT5sYXN0X2Vycm9yIC4gJ2AuIE9wdGlvbiBuYW1lOiBgJyAuICR
vcHRpb24gLiAnYC4nICk7CgkJCQl9IGVsc2UgewoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZX
RhaWxzJywgJ01haW50YWluZWQgZGF0YSBieSBjb3B5aW5nIGl0IG92ZXIgaW5jb21pbmcgZGF0YWJhc2UuI
E9wdGlvbnMgbmFtZTogYCcgLiAkb3B0aW9uIC4gJ2AuJyApOwoJCQkJfQoJCQl9IGVsc2UgewoJCQkJcGJf
YmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnT3B0aW9uIHdpdGggbmFtZSBgJyAuICRvcHRpb24
gLiAnYCBub3QgZm91bmQuIFNraXBwaW5nLicgKTsKCQkJfQoJCX0KCgkJcmV0dXJuIHRydWU7CgoJfSAvLy
BFbmQgc3dhcERhdGFiYXNlQkJTZXR0aW5ncygpLgoKCgkvKiBzd2FwRGF0YWJhc2VzKCkKCSAqCgkgKiBST
0xMQkFDSwoJICogU3dhcCBvdXQgdGhlIHJlY2VudGx5IGltcG9ydGVkIGRhdGFiYXNlIHRhYmxlcyB3aXRo
IHRlbXAgcHJlZml4IGZvciB0aGUgbGl2ZSBkYXRhYmFzZS4KCSAqIFNldHMgbWFpbnRlbmFuY2UgbW9kZSB
kdXJpbmcgdGhlIHN3YXAsIGFsdGhvdWdoIGl0IHNob3VsZCBiZSB2ZXJ5IGJyaWVmLgoJICoKCSAqLwoJcH
VibGljIGZ1bmN0aW9uIHN3YXBEYXRhYmFzZXMoKSB7CgkJJHRoaXMtPl9iZWZvcmUoIF9fRlVOQ1RJT05fX
yApOwoKCQlpZiAoICggJ3JvbGxiYWNrJyAhPSAkdGhpcy0+X3N0YXRlWyd0eXBlJ10gKSAmJiAoICdkZXBs
b3knICE9ICR0aGlzLT5fc3RhdGVbJ3R5cGUnXSApICkgeyAvLyBSZXN0b3JlIG1vZGUgdXNlZCBmb3IgcmV
zdG9yeWluZyBkdXJpbmcgZGVwbG95bWVudC4KCQkJJHRoaXMtPl9lcnJvciggJ1RoaXMgcmVzdG9yZSB0eX
BlIGAnIC4gJHRoaXMtPl9zdGF0ZVsndHlwZSddIC4gJ2AgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wZXJhd
Glvbi4nICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCS8vIFR1cm4gb24gbWFpbnRlbmFuY2UgbW9kZS4K
CQlpZiAoIGZhbHNlID09PSAkdGhpcy0+bWFpbnRlbmFuY2VPbigpICkgewoJCQkkdGhpcy0+X2Vycm9yKCA
nQ291bGQgbm90IGVuYWJsZSBtYWludGVuYW5jZSBtb2RlLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCg
kJZ2xvYmFsICR3cGRiOwoKCQkvLyBDYWxjdWxhdGUgdGVtcG9yYXJ5IHRhYmxlIHByZWZpeGVzLgoJCSRuZ
XdQcmVmaXggPSAnYmJuZXctJyAuIHN1YnN0ciggJHRoaXMtPl9zdGF0ZVsnc2VyaWFsJ10sIDAsIDQgKSAu
ICdfJzsgLy8gVGVtcCBwcmVmaXggZm9yIGhvbGRpbmcgdGhlIE5FV2x5IGltcG9ydGVkIGRhdGEuCgkJJG9
sZFByZWZpeCA9ICdiYm9sZC0nIC4gc3Vic3RyKCAkdGhpcy0+X3N0YXRlWydzZXJpYWwnXSwgMCwgNCApIC
4gJ18nOyAvLyBUZW1wIHByZWZpeCBmb3IgaG9sZGluZyB0aGUgT0xEIChjdXJyZW50bHkgbGl2ZSkgZGF0Y
S4KCgkJLy8gR2V0IG5ld2x5IGltcG9ydGVkIHRhYmxlcyB3aXRoIHRoZSB0ZW1wIHByZWZpeC4KCQlwYl9i
YWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdDaGVja2luZyBmb3IgbmV3bHkgaW1wb3J0ZWQgcm9
sbGJhY2sgdGFibGVzIHdpdGggdGVtcCBwcmVmaXggYCcgLiAkbmV3UHJlZml4IC4gJ2AuJyApOwoJCSRzcW
wgPSAiU0VMRUNUIHRhYmxlX25hbWUgQVMgYHRhYmxlX25hbWVgIEZST00gaW5mb3JtYXRpb25fc2NoZW1hL
nRhYmxlcyBXSEVSRSB0YWJsZV9uYW1lIExJS0UgJyIgLiBzdHJfcmVwbGFjZSggJ18nLCAnXF8nLCAkbmV3
UHJlZml4ICkgLiAiJScgQU5EIHRhYmxlX3NjaGVtYSA9IERBVEFCQVNFKCkiOwoJCSRyZXN1bHRzID0gJHd
wZGItPmdldF9yZXN1bHRzKCAkc3FsLCBBUlJBWV9BICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2
RldGFpbHMnLCAnRm91bmQgJyAuIGNvdW50KCAkcmVzdWx0cyApIC4gJyBtYXRjaGluZyB0YWJsZXMuJyApO
woJCWlmICggMCA9PSBjb3VudCggJHJlc3VsdHMgKSApIHsKCQkJJHRoaXMtPl9lcnJvciggJ0Vycm9yIGdl
dHRpbmcgdGFibGVzIG9yIG5vbmUgZm91bmQuIFNRTCBRdWVyeTogJyAuIGh0bWxlbnRpdGllcyggJHNxbCA
pICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCS8vIFJlbmFtZSBuZXdseSBpbXBvcnRlZCB0YWJsZXMgd2
l0aCB0ZW1wIHByZWZpeCwgcmVuYW1pbmcgdGhlIGV4aXN0aW5nIGxpdmUgdGFibGUgZmlyc3QuCgkJcGJfY
mFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUmVuYW1lIGFsbCBleGlzdGluZyB0YWJsZXMgd2l0
aCB0aGlzIHRlbXAgcHJlZml4IHRvIHByZWZpeCBgJyAuICR3cGRiLT5wcmVmaXggLiAnYC4nICk7CgkJZm9
yZWFjaCAoICRyZXN1bHRzIGFzICRyZXN1bHQgKSB7CgoJCQkkbmV3VGFibGVOYW1lID0gc3RyX3JlcGxhY2
UoICRuZXdQcmVmaXgsICcnLCAkd3BkYi0+cHJlZml4IC4gJHJlc3VsdFsndGFibGVfbmFtZSddICk7IC8vI
HRoZSB0YXJnZXQgbmV3IHRhYmxlIG5hbWUgd2UgYXJlIGltcG9ydGluZy4KCQkJJG9sZFRhYmxlTmFtZSA9
ICRvbGRQcmVmaXggLiAkbmV3VGFibGVOYW1lOyAvLyB0aGUgdGFyZ2V0IG5hbWUgZm9yIHRoZSBvbGQgdGF
ibGUgd2hlcmUgd2UgaG9sZCBpdCBpbiBjYXNlIGl0IG5lZWRzIHVuZG9pbmcuCgoJCQkvLyBDaGVjayBpZi
BleGlzdGluZyBzaXRlIGFscmVhZHkgaGFkIHRoaXMgdGFibGUuIElmIHNvIHRoZW4gd2Ugd2lsbCBuZWVkI
HRvIHJlbmFtZSBpdCB0byBhIHRlbXAgdGFibGUgbmFtZSB0byBhbGxvdyBmb3IgdW5kb2luZy4KCQkJJHNx
bCA9ICJTSE9XIFRBQkxFUyBMSUtFICciIC4gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoICRuZXdUYWJ
sZU5hbWUgKSAuICInOyI7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1NRTDogYC
cgLiAkc3FsIC4gJ2AuJyApOwoJCQkkcmVzdWx0cyA9ICR3cGRiLT5nZXRfcmVzdWx0cyggJHNxbCwgQVJSQ
VlfQSApOwoJCQlpZiAoIGNvdW50KCAkcmVzdWx0cyApID4gMCApIHsgLy8gVGhpcyB0YWJsZSBleGlzdGVk
IGluIHRoZSBleGlzdGluZyBzaXRlIHNvIGl0IG5lZWRzIHRvIGJlIHJlbmFtZWQuCgkJCQlwYl9iYWNrdXB
idWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdSZW5hbWluZyB0YWJsZSBgJyAuICRuZXdUYWJsZU5hbWUgLi
AnYCAoYWxyZWFkeSBleGlzdHMgaW4gdGhpcyBzaXRlKSB0byBgJyAuICRvbGRUYWJsZU5hbWUgLiAnYC4nI
Ck7CgkJCQlpZiAoIGZhbHNlID09PSAkd3BkYi0+cXVlcnkoICdSRU5BTUUgVEFCTEUgYCcgLiBiYWNrdXBi
dWRkeV9jb3JlOjpkYkVzY2FwZSggJG5ld1RhYmxlTmFtZSApIC4gJ2AgVE8gYCcgLiBiYWNrdXBidWRkeV9
jb3JlOjpkYkVzY2FwZSggJG9sZFRhYmxlTmFtZSApIC4gJ2A7JyApICkgewoJCQkJCSR0aGlzLT5fZXJyb3
IoICdFcnJvciAjODQ0Mzg5YTogVW5hYmxlIHRvIHJlbmFtZSB0YWJsZSBgJyAuICRuZXdUYWJsZU5hbWUgL
iAnYCB0byBgJyAuICRvbGRUYWJsZU5hbWUgLiAnYC4gRGV0YWlsczogYCcgLiAkd3BkYi0+bGFzdF9lcnJv
ciAuICdgLicgKTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlwYl9iYWNrdXB
idWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdUYWJsZSBgJyAuICRuZXdUYWJsZU5hbWUgLiAnYCBkaWQgbm
90IGFscmVhZHkgZXhpc3Qgc28gTk9UIHJlbmFtaW5nIHRvIGAnIC4gJG9sZFRhYmxlTmFtZSAuICdgLicgK
TsKCQkJfQoKCQkJLy8gUmVuYW1lIGltcG9ydGVkIHRhYmxlIHRvIGxpdmUgcHJlZml4LgoJCQlwYl9iYWNr
dXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdSZW5hbWluZyBpbmNvbWluZyB0YWJsZSBgJyAuICRyZXN
1bHRbJ3RhYmxlX25hbWUnXSAuICdgIHRvIGAnIC4gJG5ld1RhYmxlTmFtZSAuICdgLicgKTsKCQkJaWYgKC
BmYWxzZSA9PT0gJHdwZGItPnF1ZXJ5KCAnUkVOQU1FIFRBQkxFIGAnIC4gYmFja3VwYnVkZHlfY29yZTo6Z
GJFc2NhcGUoICRyZXN1bHRbJ3RhYmxlX25hbWUnXSApIC4gJ2AgVE8gYCcgLiBiYWNrdXBidWRkeV9jb3Jl
OjpkYkVzY2FwZSggJG5ld1RhYmxlTmFtZSApIC4gJ2A7JyApICkgewoJCQkJJHRoaXMtPl9lcnJvciggJ0V
ycm9yICM4NDQzODliOiBVbmFibGUgdG8gcmVuYW1lIHRhYmxlIGAnIC4gJHJlc3VsdFsndGFibGVfbmFtZS
ddIC4gJ2AgdG8gYCcgLiAkbmV3VGFibGVOYW1lIC4gJ2AuIERldGFpbHM6IGAnIC4gJHdwZGItPmxhc3RfZ
XJyb3IgLiAnYC4nICk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9IC8vIGVuZCBmb3JlYWNoLgoKCQkv
LyBUdXJuIG9mZiBtYWludGVuYW5jZSBtb2RlLgoJCSR0aGlzLT5tYWludGVuYW5jZU9mZigpOwoKCQlyZXR
1cm4gdHJ1ZTsKCX0gLy8gRW5kCgoKCgkvKiBmaW5hbGl6ZVJvbGxiYWNrKCkKCSAqCgkgKiBST0xMQkFDSw
oJICogRmluYWxpemUgdGhlIHJvbGxiYWNrLCBkZWxldGluZyBvcmlnaW5hbCB0YWJsZXMgJiBjbGVhbmluZ
yB1cCB0ZW1wIGZpbGVzLgoJICoKCSAqIEByZXR1cm4gdHJ1ZQoJICovCglwdWJsaWMgZnVuY3Rpb24gZmlu
YWxpemVSb2xsYmFjaygpIHsKCQkkdGhpcy0+X2JlZm9yZSggX19GVU5DVElPTl9fICk7CgoJCWdsb2JhbCA
kd3BkYjsKCQkkc3FsID0gIlNFTEVDVCB0YWJsZV9uYW1lIEFTIGB0YWJsZV9uYW1lYCBGUk9NIGluZm9ybW
F0aW9uX3NjaGVtYS50YWJsZXMgV0hFUkUgdGFibGVfbmFtZSBMSUtFICdiYm9sZC0iIC4gc3Vic3RyKCAkd
Ghpcy0+X3N0YXRlWydzZXJpYWwnXSwgMCwgNCApIC4gIlxfJScgQU5EIHRhYmxlX3NjaGVtYSA9IERBVEFC
QVNFKCkiOwoJCS8vZWNobyAkc3FsOwoJCSRyZXN
1bHRzID0gJHdwZGItPmdldF9yZXN1bHRzKCAkc3FsLCBBUlJBWV9BICk7CgkJcGJfYmFja3VwYnVkZHk6On
N0YXR1cyggJ2RldGFpbHMnLCAnRm91bmQgJyAuIGNvdW50KCAkcmVzdWx0cyApIC4gJyB0YWJsZXMgdG8gZ
HJvcC4nICk7CgkJZm9yZWFjaCAoICRyZXN1bHRzIGFzICRyZXN1bHQgKSB7CgkJCWlmICggZmFsc2UgPT09
ICR3cGRiLT5xdWVyeSggJ0RST1AgVEFCTEUgYCcgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJHJ
lc3VsdFsndGFibGVfbmFtZSddICkgLiAnYCcgKSApIHsKCQkJCSR0aGlzLT5fZXJyb3IoICdVbmFibGUgdG
8gZGVsZXRlIG9sZCB0YWJsZSBgJyAuICRyZXN1bHRbJ3RhYmxlX25hbWUnXSAuICdgLicgKTsKCQkJfQoJC
X0KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGVsZXRpbmcgdW5kbyBmaWxlLicg
KTsKCQlAdW5saW5rKCBBQlNQQVRIIC4gJHRoaXMtPl9zdGF0ZVsndW5kb0ZpbGUnXSApOwoJCXBiX2JhY2t
1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0RlbGV0aW5nIHRlbXAgZmlsZXMuJyApOwoJCXBiX2JhY2
t1cGJ1ZGR5OjokZmlsZXN5c3RlbS0+dW5saW5rX3JlY3Vyc2l2ZSggJHRoaXMtPl9zdGF0ZVsndGVtcFBhd
GgnXSApOwoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGaW5pc2hlZCBmaW5hbGl6
ZSBmdW5jdGlvbi4nICk7CgkJcmV0dXJuIHRydWU7Cgl9IC8vIGVuZCBmaW5hbGl6ZVJvbGxiYWNrKCkuCgo
KCglwdWJsaWMgZnVuY3Rpb24gcmVzdG9yZUZpbGVzKCkgewoJCSR0aGlzLT5fYmVmb3JlKCBfX0ZVTkNUSU
9OX18gKTsKCgkJLy8gWmlwICYgVW56aXAgbGlicmFyeSBzZXR1cC4KCQlyZXF1aXJlX29uY2UoIHBiX2JhY
2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9saWIvemlwYnVkZHkvemlwYnVkZHkucGhwJyApOwoJCXBi
X2JhY2t1cGJ1ZGR5OjokY2xhc3Nlc1snemlwYnVkZHknXSA9IG5ldyBwbHVnaW5idWRkeV96aXBidWRkeSg
gJHRoaXMtPl9zdGF0ZVsncmVzdG9yZUZpbGVSb290J10sIGFycmF5KCksICd1bnppcCcgKTsKCgkJaWYgKC
AhIGZpbGVfZXhpc3RzKCAkdGhpcy0+X3N0YXRlWydhcmNoaXZlJ10gKSApIHsKCQkJcGJfYmFja3VwYnVkZ
Hk6OnN0YXR1cyggJ2Vycm9yJywgJ1VuYWJsZSB0byBmaW5kIHNwZWNpZmllZCBiYWNrdXAgYXJjaGl2ZSBg
JyAuICR0aGlzLT5fc3RhdGVbJ2FyY2hpdmUnXSAuICdgJyApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQl
wYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdVbnppcHBpbmcgYXJjaGl2ZSBgJyAuICR0aG
lzLT5fc3RhdGVbJ2FyY2hpdmUnXSAuICdgIGludG8gYCcgLiAkdGhpcy0+X3N0YXRlWydyZXN0b3JlRmlsZ
VJvb3QnXSAuICdgJyApOwoKCQkvLyBTZXQgY29tcGF0aWJpbGl0eSBtb2RlIGlmIGRlZmluZWQgaW4gYWR2
YW5jZWQgb3B0aW9ucy4KCQlpZiAoICdhbGwnID09ICR0aGlzLT5fc3RhdGVbJ3ppcE1ldGhvZFN0cmF0ZWd
5J10gKSB7CgkJCSRjb21wYXRpYmlsaXR5TW9kZSA9IGZhbHNlOwoJCX0gZWxzZSB7CgkJCSRjb21wYXRpYm
lsaXR5TW9kZSA9ICR0aGlzLT5fc3RhdGVbJ3ppcE1ldGhvZFN0cmF0ZWd5J107CgkJfQoKCQkvLyBFeHRyY
WN0IHppcCBmaWxlICYgdmVyaWZ5IGl0IHdvcmtlZC4KCQkkcmVzdWx0ID0gcGJfYmFja3VwYnVkZHk6OiRj
bGFzc2VzWyd6aXBidWRkeSddLT51bnppcCggJHRoaXMtPl9zdGF0ZVsnYXJjaGl2ZSddLCAkdGhpcy0+X3N
0YXRlWydyZXN0b3JlRmlsZVJvb3QnXSwgJGNvbXBhdGliaWxpdHlNb2RlICk7CgkJaWYgKCB0cnVlICE9PS
AkcmVzdWx0ICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRmFpbHVyZSBleHRyY
WN0aW5nIGJhY2t1cCBhcmNoaXZlLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0gZWxzZSB7CgkJCXBiX2Jh
Y2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1N1Y2Nlc3MgZXh0cmFjdGluZyBiYWNrdXAgYXJjaGl
2ZS4nICk7CgkJCXJldHVybiB0cnVlOwoJCX0KCgl9IC8vIEVuZCByZXN0b3JlRmlsZXMoKS4KCgoKCS8qIF
9wcmlvclJvbGxiYWNrQ2xlYW51cCgpCgkgKgoJICogUk9MTEJBQ0sKCSAqIENsZWFucyB1cCBhbnkgZXhpc
3RpbmcgdGVtcCBkYXRhYmFzZSB0YWJsZXMgdGhhdCBleGlzdCBmcm9tIGEgcHJpb3IgZmFpbGVkL2luY29t
cGxldGUgcm9sbGJhY2sgdGhhdCBuZWVkIHJlbW92ZWQuCgkgKgoJICovCglwcml2YXRlIGZ1bmN0aW9uIF9
wcmlvclJvbGxiYWNrQ2xlYW51cCgpIHsKCQkkdGhpcy0+X2JlZm9yZSggX19GVU5DVElPTl9fICk7CgoJCX
BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NoZWNraW5nIGZvciBhbnkgcHJpb3IgZmFpb
GVkIHJvbGxiYWNrIGRhdGEgdG8gY2xlYW4gdXAuJyApOwoJCWdsb2JhbCAkd3BkYjsKCgkJJHNob3J0U2Vy
aWFsID0gc3Vic3RyKCAkdGhpcy0+X3N0YXRlWydzZXJpYWwnXSwgMCwgNCApOwoKCQkvLyBORVcgcHJlZml
4CgkJJHNxbCA9ICJTRUxFQ1QgdGFibGVfbmFtZSBBUyBgdGFibGVfbmFtZWAgRlJPTSBpbmZvcm1hdGlvbl
9zY2hlbWEudGFibGVzIFdIRVJFIHRhYmxlX25hbWUgTElLRSAnYmJuZXctIiAuICRzaG9ydFNlcmlhbCAuI
CJcXyUnIEFORCB0YWJsZV9zY2hlbWEgPSBEQVRBQkFTRSgpIjsKCQkkcmVzdWx0cyA9ICR3cGRiLT5nZXRf
cmVzdWx0cyggJHNxbCwgQVJSQVlfQSApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJyw
gJ0ZvdW5kICcgLiBjb3VudCggJHJlc3VsdHMgKSAuICcgdGFibGVzIHRvIGRyb3Agd2l0aCB0aGUgcHJlZm
l4IGBiYm5ldy0nIC4gJHNob3J0U2VyaWFsIC4gJ19gLicgKTsKCQkkZHJvcENvdW50ID0gMDsKCQlmb3JlY
WNoICggJHJlc3VsdHMgYXMgJHJlc3VsdCApIHsKCQkJaWYgKCBmYWxzZSA9PT0gJHdwZGItPnF1ZXJ5KCAn
RFJPUCBUQUJMRSBgJyAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYXBlKCAkcmVzdWx0Wyd0YWJsZV9uYW1
lJ10gKSAuICdgJyApICkgewoJCQkJJHRoaXMtPl9lcnJvciggJ1VuYWJsZSB0byBkZWxldGUgdGFibGUgYC
cgLiAkcmVzdWx0Wyd0YWJsZV9uYW1lJ10gLiAnYC4nICk7CgkJCX0gZWxzZSB7CgkJCQkkZHJvcENvdW50K
ys7CgkJCX0KCQl9CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRHJvcHBlZCBgJyAu
ICRkcm9wQ291bnQgLiAnYCBuZXcgdGFibGVzLicgKTsKCgkJLy8gT0xEIHByZWZpeAoJCSRzcWwgPSAiU0V
MRUNUIHRhYmxlX25hbWUgQVMgYHRhYmxlX25hbWVgIEZST00gaW5mb3JtYXRpb25fc2NoZW1hLnRhYmxlcy
BXSEVSRSB0YWJsZV9uYW1lIExJS0UgJ2Jib2xkLSIgLiAkc2hvcnRTZXJpYWwgLiAiXF8lJyBBTkQgdGFib
GVfc2NoZW1hID0gREFUQUJBU0UoKSI7CgkJJHJlc3VsdHMgPSAkd3BkYi0+Z2V0X3Jlc3VsdHMoICRzcWws
IEFSUkFZX0EgKTsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGb3VuZCAnIC4gY29
1bnQoICRyZXN1bHRzICkgLiAnIHRhYmxlcyB0byBkcm9wIHdpdGggdGhlIHByZWZpeCBgYmJvbGQtJyAuIC
RzaG9ydFNlcmlhbCAuICdfYC4nICk7CgkJJGRyb3BDb3VudCA9IDA7CgkJZm9yZWFjaCAoICRyZXN1bHRzI
GFzICRyZXN1bHQgKSB7CgkJCWlmICggZmFsc2UgPT09ICR3cGRiLT5xdWVyeSggJ0RST1AgVEFCTEUgYCcg
LiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJHJlc3VsdFsndGFibGVfbmFtZSddICkgLiAnYCcgKSA
pIHsKCQkJCSR0aGlzLT5fZXJyb3IoICdVbmFibGUgdG8gZGVsZXRlIHRhYmxlIGAnIC4gJHJlc3VsdFsndG
FibGVfbmFtZSddIC4gJ2AuJyApOwoJCQl9IGVsc2UgewoJCQkJJGRyb3BDb3VudCsrOwoJCQl9CgkJfQoJC
XBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0Ryb3BwZWQgYCcgLiAkZHJvcENvdW50IC4g
J2Agb2xkIHRhYmxlcy4nICk7CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0Zpbml
zaGVkIHByaW9yIHJvbGxiYWNrIGNsZWFudXAuJyApOwoJfSAvLyBlbmQuCgoKCgkvKiBtYWludGVuYW5jZU
9uKCkKCSAqCgkgKiBUdXJuIE9OIFdvcmRQcmVzcyBtYWludGVuYW5jZSBtb2RlLgoJICoKCSAqLwoJcHVib
GljIGZ1bmN0aW9uIG1haW50ZW5hbmNlT24oKSB7CgkJJHRoaXMtPl9iZWZvcmUoIF9fRlVOQ1RJT05fXyAp
OwoKCQkvLyBUdXJuIG9uIG1haW50ZW5hbmNlIG1vZGUuCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2R
ldGFpbHMnLCAnVHVybmluZyBvbiBtYWludGVuYW5jZSBtb2RlIG9uLicgKTsKCQlpZiAoICEgZmlsZV9leG
lzdHMoIEFCU1BBVEggLiAnLm1haW50ZW5hbmNlJyApICkgewoJCQkkbWFpbnRlbmFuY2VfcmVzdWx0ID0gQ
GZpbGVfcHV0X2NvbnRlbnRzKCBBQlNQQVRIIC4gJy5tYWludGVuYW5jZScsICI8P3BocCBpZiAoIGVtcHR5
KCBcJF9SRVFVRVNUWydhY3Rpb24nXSApIHx8ICdwYl9iYWNrdXBidWRkeV9iYWNrdXBidWRkeScgIT0gXCR
fUkVRVUVTVFsnYWN0aW9uJ10gKSB7IGhlYWRlcignSFRUUC8xLjEgNTAzIFNlcnZpY2UgVGVtcG9yYXJpbH
kgVW5hdmFpbGFibGUnKTsgaGVhZGVyKCdTdGF0dXM6IDUwMyBTZXJ2aWNlIFRlbXBvcmFyaWx5IFVuYXZha
WxhYmxlJyk7IGhlYWRlcignUmV0cnktQWZ0ZXI6IDM2MDAnKTsgZGllKCAnU2l0ZSB1bmRlcmdvaW5nIG1h
aW50ZW5hbmNlLicgKTsgfSIgKTsKCQkJaWYgKCBmYWxzZSA9PT0gJG1haW50ZW5hbmNlX3Jlc3VsdCApIHs
KCQkJCSR0aGlzLT5fZXJyb3IoICcubWFpbnRlbmFuY2UgZmlsZSB1bmFibGUgdG8gYmUgZ2VuZXJhdGVkIH
RvIHByZXZlbnQgdmlld2luZy4nICk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0gZWxzZSB7CgkJCQlwYl9iY
WNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICcubWFpbnRlbmFuY2UgZmlsZSBnZW5lcmF0ZWQgdG8g
cHJldmVudCB2aWV3aW5nIHBhcnRpYWxseSBtaWdyYXRlZCBzaXRlLicgKTsKCQkJfQoJCX0gZWxzZSB7Cgk
JCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJy5tYWludGVuYW5jZSBmaWxlIGFscmVhZH
kgZXhpc3RzLiBTa2lwcGluZyBjcmVhdGlvbi4nICk7CgkJfQoJCXJldHVybiB0cnVlOwoJfSAvLyBFbmQgb
WFpbnRlbmFuY2VPbigpLgoKCgoJLyogbWFpbnRlbmFuY2VPZmYoKQoJICoKCSAqIFR1cm4gT0ZGIFdvcmRQ
cmVzcyBtYWludGVuYW5jZSBtb2RlLgoJICoKCSAqLwoJcHVibGljIGZ1bmN0aW9uIG1haW50ZW5hbmNlT2Z
mKCAkb25seURlbGV0ZU91ckZpbGUgPSBmYWxzZSApIHsKCQkkdGhpcy0+X2JlZm9yZSggX19GVU5DVElPTl
9fICk7CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1R1cm4gb2ZmIG1haW50ZW5hb
mNlIG1vZGUgb2ZmIGlmIG9uLicgKTsKCQlpZiAoIGZpbGVfZXhpc3RzKCBBQlNQQVRIIC4gJy5tYWludGVu
YW5jZScgKSApIHsKCgkJCWlmICggZmFsc2UgPT09ICRvbmx5RGVsZXRlT3VyRmlsZSApIHsKCQkJCXBiX2J
hY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJy5tYWludGVuYW5jZSBmaWxlIGV4aXN0cy4gRGVsZX
Rpbmcgd2hldGhlciBpbXBvcnRidWRkeS1jcmVhdGVkIG9yIG5vdC4uLicgKTsKCQkJCWlmICggZmFsc2UgP
T09IEB1bmxpbmsoIEFCU1BBVEggLiAnLm1haW50ZW5hbmNlJyApICkgewoJCQkJCXBiX2JhY2t1cGJ1ZGR5
OjpzdGF0dXMoICdlcnJvcicsICdVbmFibGUgdG8gZGVsZXRlIHRlbXBvcmFyeSAubWFpbnRlbmFuY2UgZml
sZS4gIFRoaXMgaXMgbGlrZWx5IGR1ZSB0byBwZXJtaXNzaW9ucy4gWW91IG1heSBuZWVkIHRvIG1hbnVhbG
x5IGRlbGV0ZSBpdCB0byB2aWV3IHlvdXIgc2l0ZS4nICk7CgkJCQkJJHRoaXMtPl9lcnJvciggJ1VuYWJsZ
SB0byBkZWxldGUgLm1haW50ZW5hbmNlIGZpbGUuJyApOwoJCQkJfSBlbHNlIHsKCQkJCQlwYl9iYWNrdXBi
dWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICcubWFpbnRlbmFuY2UgZmlsZSBkZWxldGVkIHdoZXRoZXIgaW1
wb3J0YnVkZHktY3JlYXRlZCBvciBub3QuJyApOwoJCQkJfQoJCQl9IGVsc2UgeyAvLyBTZWUgaWYgSW1wb3
J0QnVkZHkgY3JlYXRlZCBpdCBiZWZvcmUgZGVsZXRpbmcuCgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1c
yggJ2RldGFpbHMnLCAnLm1haW50ZW5hbmNlIGZpbGUgZXhpc3RzLiBDaGVja2luZyB0byBzZWUgaWYgSW1w
b3J0QnVkZHkgZ2VuZXJhdGVkIGl0LicgKTsKCQkJCSRtYWludGVuYW5jZV9jb250ZW50cyA9IEBmaWxlX2d
ldF9jb250ZW50cyggQUJTUEFUSCAuICcubWFpbnRlbmFuY2UnICk7CgkJCQlpZiAoIGZhbHNlID09PSAkbW
FpbnRlbmFuY2VfY29udGVudHMgKSB7IC8vIENhbm5vdCByZWFkLgoJCQkJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdlcnJvcicsICcubWFpbnRlbmFuY2UgZmlsZSB1bnJlYWRhYmxlLiBZb3UgbWF5IG5lZWQgdG8g
bWFudWFsbHkgZGVsZXRlIGl0IHRvIHZpZXcgeW91ciBzaXRlLicgKTsKCQkJCX0gZWxzZSB7IC8vIFJlYWQ
gZmlsZSBzdWNjZWVkZWQuCgkJCQkJaWYgKCB0cmltKCAkbWFpbnRlbmFuY2VfY29udGVudHMgKSA9PSAiPD
9waHAgaWYgKCBlbXB0eSggXCRfUkVRVUVTVFsnYWN0aW9uJ10gKSB8fCAncGJfYmFja3VwYnVkZHlfYmFja
3VwYnVkZHknICE9IFwkX1JFUVVFU1RbJ2FjdGlvbiddICkgeyBoZWFkZXIoJ0hUVFAvMS4xIDUwMyBTZXJ2
aWNlIFRlbXBvcmFyaWx5IFVuYXZhaWxhYmxlJyk7IGhlYWRlcignU3RhdHVzOiA1MDMgU2VydmljZSBUZW1
wb3JhcmlseSBVbmF2YWlsYWJsZScpOyBoZWFkZXIoJ1JldHJ5LUFmdGVyOiAzNjAwJyk7IGRpZSggJ1NpdG
UgdW5kZXJnb2luZyBtYWludGVuYW5jZS4nICk7IH0iICkgeyAvLyBPdXIgZmlsZS4gRGVsZXRlIGl0IQoJC
QkJCQkkbWFpbnRlbmFuY2VfdW5saW5rID0gQHVubGluayggQUJTUEFUSCAuICcubWFpbnRlbmFuY2UnICk7
CgkJCQkJCWlmICggdHJ1ZSA9PT0gJG1haW50ZW5hbmNlX3VubGluayApIHsKCQkJCQkJCXBiX2JhY2t1cGJ
1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1RlbXBvcmFyeSAubWFpbnRlbmFuY2UgZmlsZSBjcmVhdGVkIG
J5IEltcG9ydEJ1ZGR5IHN1Y2Nlc3NmdWxseSBkZWxldGVkLicgKTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJC
XBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdVbmFibGUgdG8gZGVsZXRlIHRlbXBvcmFyeSAu
bWFpbnRlbmFuY2UgZmlsZS4gIFRoaXMgaXMgbGlrZWx5IGR1ZSB0byBwZXJtaXNzaW9ucy4gWW91IG1heSB
uZWVkIHRvIG1hbnVhbGx5IGRlbGV0ZSBpdCB0byB2aWV3IHlvdXIgc2l0ZS4nICk7CgkJCQkJCX0KCQkJCQ
l9IGVsc2UgeyAvLyBOb3Qgb3VyIGZpbGUuIExlYXZlIGFsb25lLiBXZSB3aWxsIHdhcm4gYWJvdXQgdGhpc
yBsYXRlciB0aG91Z2guCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJy5tYWlu
dGVuYW5jZSBmaWxlIG5vdCBnZW5lcmF0ZWQgYnkgSW1wb3J0QnVkZHkuIExlYXZpbmcgYXMgaXMuIFlvdSB
tYXkgbmVlZCB0byBkZWxldGUgaXQgdG8gdmlldy
B5b3VyIHNpdGUuJyApOwoJCQkJCX0KCQkJCX0KCQkJfQoJCX0gZWxzZSB7CgkJCXBiX2JhY2t1cGJ1ZGR5O
jpzdGF0dXMoICdkZXRhaWxzJywgJy5tYWludGVuYW5jZSBmaWxlIGRvZXMgbm90IGV4aXN0LicgKTsKCQl9
Cgl9IC8vIEVuZCBtYWludGVuYW5jZU9mZigpLgoKCgoJLyoqCgkgKiAgbWlncmF0ZVdwQ29uZmlnKCkKCSA
qCgkgKiAgQHJldHVybiAgICAgdHJ1ZSBvbiBzdWNjZXNzLCBuZXcgd3AgY29uZmlnIGZpbGUgY29udGVudC
BvbiBmYWlsdXJlLgoJICovCglmdW5jdGlvbiBtaWdyYXRlV3BDb25maWcoKSB7CgkJaWYgKCAnZGVwbG95J
yA9PSAkdGhpcy0+X3N0YXRlWyd0eXBlJ10gKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgJ1NraXBwaW5nIHdwLWNvbmZpZy5waHAgbWlncmF0aW9uIGR1ZSB0byBiZWluZyBEZXBsb3ltZW5
0LicgKTsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCWlmICggaXNzZXQoICR0aGlzLT5fc3RhdGVbJ2RhdCddWy
d3cC1jb25maWdfaW5fcGFyZW50J10gKSApIHsKCQkJaWYgKCAkdGhpcy0+X3N0YXRlWydkYXQnXVsnd3AtY
29uZmlnX2luX3BhcmVudCddID09PSB0cnVlICkgeyAvLyB3cC1jb25maWcucGhwIHVzZWQgdG8gYmUgaW4g
cGFyZW50LiBNdXN0IGNvcHkgZnJvbSB0ZW1wIGRpciB0byByb290LgoJCQkJcGJfYmFja3VwYnVkZHk6OnN
0YXR1cyggJ2RldGFpbHMnLCAnREFUIGZpbGUgaW5kaWNhdGVzIHdwLWNvbmZpZy5waHAgd2FzIHByZXZpb3
VzbHkgaW4gdGhlIHBhcmVudCBkaXJlY3RvcnkuIENvcHlpbmcgaW50byBzaXRlIHJvb3QuJyApOwoKCQkJC
SRjb25maWdfc291cmNlID0gQUJTUEFUSCAuICd3cC1jb250ZW50L3VwbG9hZHMvYmFja3VwYnVkZHlfdGVt
cC8nIC4gJHRoaXMtPl9zdGF0ZVsnc2VyaWFsJ10gLiAnL3dwLWNvbmZpZy5waHAnOwoJCQkJJHJlc3VsdCA
9IGNvcHkoICRjb25maWdfc291cmNlLCBBQlNQQVRIIC4gJ3dwLWNvbmZpZy5waHAnICk7CgkJCQlpZiAoIC
RyZXN1bHQgPT09IHRydWUgKSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnd
3AtY29uZmlnLnBocCBmaWxlIHdhcyByZXN0b3JlZCB0byB0aGUgcm9vdCBvZiB0aGUgc2l0ZSBgJyAuIEFC
U1BBVEggLiAnd3AtY29uZmlnLnBocGAuIEl0IHdhcyBwcmV2aW91c2x5IGluIHRoZSBwYXJlbnQgZGlyZWN
0b3J5IG9mIHRoZSBzb3VyY2Ugc2l0ZS4gWW91IG1heSBtb3ZlIGl0IG1hbnVhbGx5IHRvIHRoZSBwYXJlbn
QgZGlyZWN0b3J5LicgKTsKCQkJCX0gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vyc
m9yJywgJ1VuYWJsZSB0byBtb3ZlIHdwLWNvbmZpZy5waHAgZmlsZSBmcm9tIHRlbXBvcmFyeSBsb2NhdGlv
biBgJyAuICRjb25maWdfc291cmNlIC4gJ2AgdG8gcm9vdC4nICk7CgkJCQl9CgkJCX0gZWxzZSB7IC8vIHd
wLWNvbmZpZy5waHAgd2FzIGluIG5vcm1hbCBsb2NhdGlvbiBvbiBzb3VyY2Ugc2l0ZS4gTm90aGluZyB0by
Bkby4KCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0RBVCBmaWxlIGluZGljYXRlc
yB3cC1jb25maWcucGhwIHdhcyBwcmV2aW91c2x5IGluIHRoZSBub3JtYWwgbG9jYXRpb24uJyApOwoJCQl9
CgkJfSBlbHNlIHsgLy8gUHJlIDMuMCBiYWNrdXAKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGF
pbHMnLCAnQmFja3VwIHByZS12My4wIHNvIHdwLWNvbmZpZy5waHAgbXVzdCBiZSBpbiBub3JtYWwgbG9jYX
Rpb24uJyApOwoJCX0KCgkJaWYgKCAnZmlsZXMnID09ICR0aGlzLT5fc3RhdGVbJ2RhdCddWydiYWNrdXBfd
HlwZSddICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTa2lwcGluZyB1cGRh
dGUgb2YgRGF0YWJhc2UgU2V0dGluZ3MgYW5kIFVSTHMgaW4gd3AtY29uZmlnLnBocCBhcyB0aGlzIGlzIGE
gRmlsZXMgT25seSBCYWNrdXAuJyApOwoJCQkkbWlncmF0ZVJlc3VsdCA9IHRydWU7CgkJfSBlbHNlIHsKCQ
kJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnVXBkYXRpbmcgRGF0YWJhc2UgU2V0dGluZ
3MgYW5kIFVSTHMgaW4gd3AtY29uZmlnLnBocCBhcyB0aGlzIGlzIG5vdCBhIEZpbGVzIE9ubHkgQmFja3Vw
LicgKTsKCQkJJG1pZ3JhdGVSZXN1bHQgPSAkdGhpcy0+X21pZ3JhdGVXcENvbmZpZ0dydW50d29yaygpOwo
JCX0KCQlyZXR1cm4gJG1pZ3JhdGVSZXN1bHQ7Cgl9IC8vIEVuZCBtaWdyYXRlV3BDb25maWcoKS4KCgoKCS
8qKgoJICogIF9taWdyYXRlV3BDb25maWdHcnVudHdvcmsoKQoJICoKCSAqICBNaWdyYXRlcyBhbmQgdXBkY
XRlcyB0aGUgd3AtY29uZmlnLnBocCBmaWxlIGNvbnRlbnRzIGFzIG5lZWRlZC4KCSAqCgkgKiAgQHJldHVy
biAgICAgICAgIHRydWV8c3RyaW5nICAgICAgICAgVHJ1ZSBvbiBzdWNjZXNzLiBPbiBmYWxzZSByZXR1cm5
zIHRoZSBuZXcgd3AtY29uZmlnIGZpbGUgY29udGVudC4KCSAqLwoJZnVuY3Rpb24gX21pZ3JhdGVXcENvbm
ZpZ0dydW50d29yaygpIHsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdTdGFydGluZ
yBtaWdyYXRpb24gb2Ygd3AtY29uZmlnLnBocCBmaWxlLi4uJyApOwoKCQlwYl9iYWNrdXBidWRkeTo6Zmx1
c2goKTsKCgkJJGNvbmZpZ0ZpbGUgPSBBQlNQQVRIIC4gJ3dwLWNvbmZpZy5waHAnOwoJCXBiX2JhY2t1cGJ
1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NvbmZpZyBmaWxlOiBgJyAuICRjb25maWdGaWxlIC4gJ2AuJy
ApOwoKCQlpZiAoIGZpbGVfZXhpc3RzKCAkY29uZmlnRmlsZSApICkgewoJCQkvLyBVc2VmdWwgUkVHRVggc
2l0ZTogaHR0cDovL2dza2lubmVyLmNvbS9SZWdFeHIvCgoJCQkkdXBkYXRlZF9ob21lX3VybCA9IGZhbHNl
OwoJCQkkd3BfY29uZmlnICAgICAgICA9IGFycmF5KCk7CgkJCSRsaW5lcyAgICAgICAgICAgID0gZmlsZSg
gJGNvbmZpZ0ZpbGUgKTsKCQkJJG9yaWdpbmFsX2xpbmVzICAgPSAkbGluZXM7CgoJCQkkcGF0dGVybnMgIC
AgICAgICA9IGFycmF5KCk7CgkJCSRyZXBsYWNlbWVudHMgICAgID0gYXJyYXkoKTsKCgkJCS8qCgkJCVVwZ
GF0ZSBXUF9TSVRFVVJMLCBXUF9IT01FIGlmIHRoZXkgZXhpc3QuCgkJCVVwZGF0ZSBkYXRhYmFzZSBEQl9O
QU1FLCBEQl9VU0VSLCBEQl9QQVNTV09SRCwgYW5kIERCX0hPU1QuCgkJCVJlZ0V4cDogL2RlZmluZVwoW1x
zXSooJ3wiKVdQX1NJVEVVUkwoJ3wiKSxbXHNdKignfCIpKC4pKignfCIpW1xzXSpcKTsvZ2kKCQkJcGF0dG
VybjogZGVmaW5lXChbXHNdKignfCIpV1BfU0lURVVSTCgnfCIpLFtcc10qKCd8IikoLikqKCd8IilbXHNdK
lwpOwoJCQkqLwoJCQkkV1BfU0lURV9VUkwgPSBwYl9pc19zdGFuZGFsb25lKCkgPyBpdF9idWJfaW1wb3J0
YnVkZHlfYXBwbHlfZmlsdGVycyggJ2NvbmZpZ19jb25zdGFudF9zaXRldXJsJywgJHRoaXMtPl9zdGF0ZVs
nc2l0ZXVybCddICkgOiAkdGhpcy0+X3N0YXRlWydzaXRldXJsJ107CgkJCSRXUF9IT01FICAgICA9IHBiX2
lzX3N0YW5kYWxvbmUoKSA/IGl0X2J1Yl9pbXBvcnRidWRkeV9hcHBseV9maWx0ZXJzKCAnY29uZmlnX2Nvb
nN0YW50X2hvbWUnLCAkdGhpcy0+X3N0YXRlWydob21ldXJsJ10gKSA6ICR0aGlzLT5fc3RhdGVbJ2hvbWV1
cmwnXTsKCgkJCSRwYXR0ZXJuWzBdID0gJy9kZWZpbmVcKFtcc10qKFwnfCIpV1BfU0lURVVSTChcJ3wiKSx
bXHNdKihcJ3wiKSguKSooXCd8IilbXHNdKlwpOy9pJzsKCQkJJHJlcGxhY2VbMF0gPSAiZGVmaW5lKCAnV1
BfU0lURVVSTCcsICciIC4gdHJpbSggJFdQX1NJVEVfVVJMLCAnLycgKSAuICInICk7IjsKCQkJcGJfYmFja
3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnd3AtY29uZmlnLnBocDogU2V0dGluZyBXUF9TSVRFVVJM
IChpZiBhcHBsaWNhYmxlKSB0byBgJyAuIHRyaW0oICRXUF9TSVRFX1VSTCwgJy8nICkgLiAnYC4nICk7Cgk
JCSRwYXR0ZXJuWzFdID0gJy9kZWZpbmVcKFtcc10qKFwnfCIpV1BfSE9NRShcJ3wiKSxbXHNdKihcJ3wiKS
guKSooXCd8IilbXHNdKlwpOy9pJzsKCQkJJHJlcGxhY2VbMV0gPSAiZGVmaW5lKCAnV1BfSE9NRScsICciI
C4gdHJpbSggJFdQX0hPTUUsICcvJyApIC4gIicgKTsiOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
ZGV0YWlscycsICd3cC1jb25maWcucGhwOiBTZXR0aW5nIFdQX0hPTUUgKGlmIGFwcGxpY2FibGUpIHRvIGA
nIC4gdHJpbSggJFdQX0hPTUUsICcvJyApIC4gJ2AuJyApOwoKCQkJJHBhdHRlcm5bMl0gPSAnL2RlZmluZV
woW1xzXSooXCd8IilEQl9OQU1FKFwnfCIpLFtcc10qKFwnfCIpKC4pKihcJ3wiKVtcc10qXCk7L2knOwoJC
QkkcmVwbGFjZVsyXSA9ICJkZWZpbmUoICdEQl9OQU1FJywgJyIgLiAkdGhpcy0+X3N0YXRlWydkYXRhYmFz
ZVNldHRpbmdzJ11bJ2RhdGFiYXNlJ10gLiAiJyApOyI7CgkJCSRwYXR0ZXJuWzNdID0gJy9kZWZpbmVcKFt
cc10qKFwnfCIpREJfVVNFUihcJ3wiKSxbXHNdKihcJ3wiKSguKSooXCd8IilbXHNdKlwpOy9pJzsKCQkJJH
JlcGxhY2VbM10gPSAiZGVmaW5lKCAnREJfVVNFUicsICciIC4gJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZ
XR0aW5ncyddWyd1c2VybmFtZSddIC4gIicgKTsiOwoJCQkkcGF0dGVybls0XSA9ICcvZGVmaW5lXChbXHNd
KihcJ3wiKURCX1BBU1NXT1JEKFwnfCIpLFtcc10qKFwnfCIpKC4pKihcJ3wiKVtcc10qXCk7L2knOwoJCQk
kcmVwbGFjZVs0XSA9ICJkZWZpbmUoICdEQl9QQVNTV09SRCcsICciIC4gJHRoaXMtPl9wcmVnX2VzY2FwZV
9iYWNrKCAkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ3Bhc3N3b3JkJ10gKSAuICInICk7I
jsKCQkJJHBhdHRlcm5bNV0gPSAnL2RlZmluZVwoW1xzXSooXCd8IilEQl9IT1NUKFwnfCIpLFtcc10qKFwn
fCIpKC4pKihcJ3wiKVtcc10qXCk7L2knOwoJCQkkcmVwbGFjZVs1XSA9ICJkZWZpbmUoICdEQl9IT1NUJyw
gJyIgLiAkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ3NlcnZlciddIC4gIicgKTsiOwoKCQ
kJLy8gSWYgbXVsdGlzaXRlLCB1cGRhdGUgZG9tYWluLgoJCQlpZiAoIGlzc2V0KCBwYl9iYWNrdXBidWRke
To6JG9wdGlvbnNbJ2RvbWFpbiddICkgJiYgKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2RvbWFpbidd
ICE9ICcnICkgKSB7CgkJCQkkcGF0dGVybls2XSA9ICcvZGVmaW5lXChbXHNdKihcJ3wiKURPTUFJTl9DVVJ
SRU5UX1NJVEUoXCd8IiksW1xzXSooXCd8IikoLikqKFwnfCIpW1xzXSpcKTsvaSc7CgkJCQkkcmVwbGFjZV
s2XSA9ICJkZWZpbmUoICdET01BSU5fQ1VSUkVOVF9TSVRFJywgJyIgLiAkdGhpcy0+X3N0YXRlWydkZWZhd
Wx0RG9tYWluJ10gLiAiJyApOyI7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd3
cC1jb25maWcucGhwOiBTZXR0aW5nIERPTUFJTl9DVVJSRU5UX1NJVEUgKGlmIGFwcGxpY2FibGUpIHRvIGA
nIC4gJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydkZWZhdWx0RG9tYWluJ10gLiAnYC4nIC
k7CgkJCX0gZWxzZSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd3cC1jb25ma
WcucGhwIGRpZCBub3QgdXBkYXRlIERPTUFJTl9DVVJSRU5UX1NJVEUgYXMgaXQgd2FzIGJsYW5rLicgKTsK
CQkJfQoJCQkvKgoJCQlVcGRhdGUgdGFibGUgcHJlZml4LgoJCQlSZWdFeHA6IC9cJHRhYmxlX3ByZWZpeFt
cc10qPVtcc10qKCd8IikoLikqKCd8Iik7L2dpCgkJCXBhdHRlcm46IFwkdGFibGVfcHJlZml4W1xzXSo9W1
xzXSooJ3wiKSguKSooJ3wiKTsKCQkJKi8KCQkJJHBhdHRlcm5bN10gPSAnL1wkdGFibGVfcHJlZml4W1xzX
So9W1xzXSooXCd8IikoLikqKFwnfCIpOy9pJzsKCQkJJHJlcGxhY2VbN10gPSAnJHRhYmxlX3ByZWZpeCA9
IFwnJyAuICR0aGlzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsncHJlZml4J10gLiAnXCc7JzsKCgk
JCWlmICggaXNzZXQoICR0aGlzLT5fc3RhdGVbJ2RhdCddWyd3cF9jb250ZW50X3VybCddICkgKSB7CgkJCQ
kkbmV3X2NvbnRlbnRfdXJsID0gc3RyX3JlcGxhY2UoIHRyaW0oICR0aGlzLT5fc3RhdGVbJ2RhdCddWydza
XRldXJsJ10sICdcXC8nICksIHRyaW0oICR0aGlzLT5fc3RhdGVbJ3NpdGV1cmwnXSwgJy8nICksICR0aGlz
LT5fc3RhdGVbJ2RhdCddWyd3cF9jb250ZW50X3VybCddICk7CgkJCQkkcGF0dGVybls4XSA9ICcvZGVmaW5
lXChbXHNdKihcJ3wiKVdQX0NPTlRFTlRfVVJMKFwnfCIpLFtcc10qKFwnfCIpKC4pKihcJ3wiKVtcc10qXC
k7L2knOwoJCQkJJHJlcGxhY2VbOF0gPSAiZGVmaW5lKCAnV1BfQ09OVEVOVF9VUkwnLCAnIiAuICRuZXdfY
29udGVudF91cmwgLiAiJyApOyI7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd3
cC1jb25maWcucGhwOiBTZXR0aW5nIFdQX0NPTlRFTlRfVVJMIChpZiBhcHBsaWNhYmxlKSB0byBgJyAuICR
uZXdfY29udGVudF91cmwgLiAnYC4nICk7CgkJCX0KCQkJaWYgKCBpc3NldCggJHRoaXMtPl9zdGF0ZVsnZG
F0J11bJ3dwX2NvbnRlbnRfZGlyJ10gKSApIHsKCQkJCSRuZXdfY29udGVudF9kaXIgPSBzdHJfcmVwbGFjZ
SggJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ2Fic3BhdGgnXSwgQUJTUEFUSCwgJHRoaXMtPl9zdGF0ZVsnZGF0
J11bJ3dwX2NvbnRlbnRfZGlyJ10gKTsKCQkJCSRwYXR0ZXJuWzldID0gJy9kZWZpbmVcKFtcc10qKFwnfCI
pV1BfQ09OVEVOVF9ESVIoXCd8IiksW1xzXSooXCd8IikoLikqKFwnfCIpW1xzXSpcKTsvaSc7CgkJCQkkcm
VwbGFjZVs5XSA9ICJkZWZpbmUoICdXUF9DT05URU5UX0RJUicsICciIC4gJG5ld19jb250ZW50X2RpciAuI
CInICk7IjsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ3dwLWNvbmZpZy5waHA6
IFNldHRpbmcgV1BfQ09OVEVOVF9ESVIgKGlmIGFwcGxpY2FibGUpIHRvIGAnIC4gJG5ld19jb250ZW50X2R
pciAuICdgLicgKTsKCQkJfQoKCQkJLy8gUGVyZm9ybSB0aGUgYWN0dWFsIHJlcGxhY2VtZW50LgoJCQkkbG
luZXMgPSBwcmVnX3JlcGxhY2UoICRwYXR0ZXJuLCAkcmVwbGFjZSwgJGxpbmVzICk7CgoJCQkvLyBJbXBvc
nRidWRkeSBEcm9waW5nIEhvb2tzCgkJCSRsaW5lcyA9IGl0X2J1Yl9pbXBvcnRidWRkeV9hcHBseV9maWx0
ZXJzKCAnd3BfY29uZmlnX2xpbmVzJywgJGxpbmVzICk7CgoJCQkvLyBDaGVjayB0aGF0IHdlIGNhbiB3cml
0ZSB0byB0aGlzIGZpbGUuCgkJCWlmICggISBpc193cml0YWJsZSggJGNvbmZpZ0ZpbGUgKSApIHsKCQkJCX
BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ1dhcm5pbmcgIzI4NTcyOiB3cC1jb25maWcuc
GhwIHNob3dzIHRvIGJlIHVud3JpdGFibGUuIEF0dGVtcHRpbmcgdG8gb3ZlcnJpZGUgcGVybWlzc2lvbnMg
dGVtcG9yYXJpbHkuJyApOwoJCQkJJG9sZFBlcm1zID0gKCBmaWxlcGVybXMoICRjb25maWdGaWxlICkgJiA
wNzc3ICk7CgkJCQlAY2htb2QoICRjb25maWdGaWxlLCAwNjQ0ICk7IC8vIFRyeSB0byBtYWtlIHdyaXRhYm
xlLgoJCQl9CgoJCQkvLyBXcml0ZSBjaGFuZ2VzI
HRvIGNvbmZpZyBmaWxlLgoJCQlpZiAoIGZhbHNlID09PSAoIGZpbGVfcHV0X2NvbnRlbnRzKCAkY29uZmln
RmlsZSwgJGxpbmVzICkgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ0VSUk9SICM4NDkyODo
gVW5hYmxlIHRvIHNhdmUgY2hhbmdlcyB0byB3cC1jb25maWcucGhwLiBWZXJpZnkgdGhpcyBmaWxlIGhhcy
Bwcm9wZXIgd3JpdGUgcGVybWlzc2lvbnMuIFlvdSBtYXkgbmVlZCB0byBtYW51YWxseSBlZGl0IGl0LicsI
HRydWUsICc5MDIwJyApOwoJCQkJcmV0dXJuIGltcGxvZGUoICJcbiIsICRsaW5lcyApOwoJCQl9IGVsc2Ug
ewoJCQkJJGFyZ3MgPSBhcnJheSgKCQkJCQknY29uZmlnRmlsZScgPT4gJGNvbmZpZ0ZpbGUsCgkJCQkJJ29
yaWdpbmFsJyAgID0+ICRvcmlnaW5hbF9saW5lcywKCQkJCQkndXBkYXRlZCcgICAgPT4gJGxpbmVzLAoJCQ
kJCSdwZXJtcycgICAgICA9PiBlbXB0eSggJG9sZFBlcm1zICkgPyBmYWxzZSA6ICRvbGRQZXJtcywKCQkJC
Sk7CgkJCQlpdF9idWJfaW1wb3J0YnVkZHlfZG9fYWN0aW9uKCAnd3BfY29uZmlnX3Jld3JpdGVfY29tcGxl
dGUnLCAkYXJncyApOwoJCQl9CgoJCQkvLyBSZXN0b3JlIHByaW9yIHBlcm1pc3Npb25zIGlmIGFwcGxpY2F
ibGUuCgkJCWlmICggaXNzZXQoICRvbGRQZXJtcyApICkgewoJCQkJQGNobW9kKCAkY29uZmlnRmlsZSwgJG
9sZFBlcm1zICk7CgkJCX0KCgkJCXVuc2V0KCAkbGluZXMgKTsKCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBid
WRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdXYXJuaW5nOiB3cC1jb25maWcucGhwIGZpbGUgbm90IGZvdW5k
LicgKTsKCQkJLy9wYl9iYWNrdXBidWRkeTo6YWxlcnQoICdOb3RlOiB3cC1jb25maWcucGhwIGZpbGUgbm9
0IGZvdW5kLiBUaGlzIGlzIG5vcm1hbCBmb3IgYSBkYXRhYmFzZSBvbmx5IGJhY2t1cC4nICk7CgkJfQoKCQ
lwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdNaWdyYXRpb24gb2Ygd3AtY29uZmlnLnBoc
CBjb21wbGV0ZS4nICk7CgoJCXJldHVybiB0cnVlOwoJfSAvLyBFbmQgX21pZ3JhdGVXcENvbmZpZ0dydW50
d29yaygpLgoKCgoJLyoJX3ByZWdfZXNjYXBlX2JhY2soKQogICAgICoKCSAqCUVzY2FwZSBiYWNrcmVmZXJ
lbmNlcyBmcm9tIHN0cmluZyBmb3IgdXNlIHdpdGggcmVnZXguIFVzZWQgYnkgbWlncmF0ZV93cF9jb25maW
coKS4KCSAqCUBzZWUgbWlncmF0ZV93cF9jb25maWcoKQogICAgICoKCSAqCUBwYXJhbQkJc3RyaW5nCQkkc
3RyaW5nCQlTdHJpbmcgdG8gZXNjYXBlLgoJICoJQHJldHVybgkJc3RyaW5nCQkJCQlFc2NhcGVkIHN0cmlu
Zy4KCSAqLwoJZnVuY3Rpb24gX3ByZWdfZXNjYXBlX2JhY2soICRzdHJpbmcgKSB7CgkJLy8gUmVwbGFjZSA
kIHdpdGggXCQsIFwgd2l0aCBcXCwgYW5kICcgd2l0aCBcJwoJCSRzdHJpbmcgPSBwcmVnX3JlcGxhY2UoIC
cjKD88IVxcXFwpKFxcJHxcXFxcKSMnLCAnXFxcXCQxJywgJHN0cmluZyApOwoJCSRzdHJpbmcgPSBzdHJfc
mVwbGFjZSggIiciLCAiXCciLCAkc3RyaW5nICk7CgkJcmV0dXJuICRzdHJpbmc7Cgl9IC8vIEVuZCBfcHJl
Z19lc2NhcGVfYmFjaygpLgoKCgoJLyogdHJvdWJsZVNjYW4oKQoJICoKCSAqIFNjYW5zIGZvciBwb3RlbnR
pYWwgcHJvYmxlbXMgYW5kIHByb3ZpZGVkIGluZm9ybWF0aXZlIHdhcm5pbmdzLgoJICoKCSAqIEByZXR1cm
4gYXJyYXkgQXJyYXkgb2YgdGV4dCB3YXJuaW5ncyB0byBkaXNwbGF5IHRvIHVzZXIuCgkgKgoJICovCglmd
W5jdGlvbiB0cm91YmxlU2NhbigpIHsKCQkkdHJvdWJsZSA9IGFycmF5KCk7CgoJCS8vIC5tYWludGVuYW5j
ZQoJCWlmICggZmlsZV9leGlzdHMoIEFCU1BBVEggLiAnLm1haW50ZW5hbmNlJyApICkgewoJCQkkdHJvdWJ
sZVtdID0gJy5tYWludGVuYW5jZSBmaWxlIGZvdW5kIGluIFdvcmRQcmVzcyByb290LiBUaGUgc2l0ZSBtYX
kgbm90IGJlIGFjY2Vzc2libGUgdW5sZXNzIHRoaXMgZmlsZSBpcyBkZWxldGVkLic7CgkJfQoKCQkvLyBpb
mRleC5odG0KCQlpZiAoIGZpbGVfZXhpc3RzKCBBQlNQQVRIIC4gJ2luZGV4Lmh0bScgKSApIHsKCQkJJHRy
b3VibGVbXSA9ICdpbmRleC5odG0gZmlsZSBmb3VuZCBpbiBXb3JkUHJlc3Mgcm9vdC4gVGhpcyBtYXkgcHJ
ldmVudCBXb3JkUHJlc3MgZnJvbSBsb2FkaW5nIG9uIHNvbWUgc2VydmVycy4gU29sdXRpb246IERlbGV0ZS
B0aGUgZmlsZS4nOwoJCX0KCgkJLy8gaW5kZXguaHRtbAoJCWlmICggZmlsZV9leGlzdHMoIEFCU1BBVEggL
iAnaW5kZXguaHRtbCcgKSApIHsKCQkJJHRyb3VibGVbXSA9ICdpbmRleC5odG1sIGZpbGUgZm91bmQgaW4g
V29yZFByZXNzIHJvb3QuIFRoaXMgbWF5IHByZXZlbnQgV29yZFByZXNzIGZyb20gbG9hZGluZyBvbiBzb21
lIHNlcnZlcnMuIFNvbHV0aW9uOiBEZWxldGUgdGhlIGZpbGUuJzsKCQl9CgoJCS8vIHdwLWNvbmZpZy5waH
AKCQlpZiAoICEgZmlsZV9leGlzdHMoIEFCU1BBVEggLiAnd3AtY29uZmlnLnBocCcgKSApIHsKCQkJJHRyb
3VibGVbXSA9ICdXYXJuaW5nIG9ubHk6IHdwLWNvbmZpZy5waHAgZmlsZSBub3QgZm91bmQgV29yZFByZXNz
IHJvb3QuIDxpPklmIHRoaXMgaXMgYSBkYXRhYmFzZS1vbmx5IHJlc3RvcmUgeW91IHNob3VsZCByZXN0b3J
lIGEgZnVsbCBiYWNrdXAuPC9pPic7CgkJfSBlbHNlIHsgLy8gd3AtY29uZmlnLnBocCBleGlzdHMgc28gY2
hlY2sgZm9yIHVuY2hhbmdlZCBVUkxzIG5vdCB1cGRhdGVkIGR1ZSB0byBwcm92ZW5hbmNlIHVua25vd24uC
goJCQlpZiAoICdmaWxlcycgPT0gJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ2JhY2t1cF90eXBlJ10gKSB7CgkJ
CQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTa2lwcGluZyBVUkwgc2NhbiBmb3Igd3A
tY29uZmlnLnBocCBhcyB0aGlzIGlzIGEgRmlsZXMgT25seSByZXN0b3JlLicgKTsKCQkJfSBlbHNlIHsKCQ
kJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NoZWNraW5nIHdwLWNvbmZpZy5waHAgZ
mlsZSBmb3IgdW5jaGFuZ2VkIFVSTHMuJyApOwoJCQkJJGNvbmZpZ19jb250ZW50cyA9IEBmaWxlX2dldF9j
b250ZW50cyggQUJTUEFUSCAuICd3cC1jb25maWcucGhwJyApOwoJCQkJaWYgKCBmYWxzZSA9PT0gJGNvbmZ
pZ19jb250ZW50cyApIHsgLy8gVW5hYmxlIHRvIG9wZW4uCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cy
ggJ2Vycm9yJywgJ1VuYWJsZSB0byBvcGVuIHdwLWNvbmZpZy5waHAgZm9yIGNoZWNraW5nIHRob3VnaCBpd
CBleGlzdHMuIFZlcmlmeSBwZXJtaXNzaW9ucy4nICk7CgkJCQl9IGVsc2UgeyAvLyBBYmxlIHRvIG9wZW4u
CgkJCQkJJG5ld19jb250ZW50X3VybCA9ICcnOwoJCQkJCWlmICggaXNzZXQoICR0aGlzLT5fc3RhdGVbJ2R
hdCddWyd3cF9jb250ZW50X3VybCddICkgKSB7CgkJCQkJCSRuZXdfY29udGVudF91cmwgPSBzdHJfcmVwbG
FjZSggdHJpbSggJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ3NpdGV1cmwnXSwgJ1xcLycgKSwgdHJpbSggJHRoa
XMtPl9zdGF0ZVsnc2l0ZXVybCddLCAnLycgKSwgJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ3dwX2NvbnRlbnRf
dXJsJ10gKTsKCQkJCQl9CgoJCQkJCXByZWdfbWF0Y2hfYWxsKCAnI1xiaHR0cHM/Oi8vW15ccygpPD5dKyg
/OlwoW1x3XGRdK1wpfChbXls6cHVuY3Q6XVxzXXwvKSkjJywgJGNvbmZpZ19jb250ZW50cywgJG1hdGNoZX
MgKTsKCQkJCQkkbWF0Y2hlcyA9ICRtYXRjaGVzWzBdOwoJCQkJCWZvcmVhY2ggKCAkbWF0Y2hlcyBhcyAkb
WF0Y2ggKSB7CgkJCQkJCWlmICggZmFsc2UgIT09IHN0cmlzdHIoICRtYXRjaCwgJ2FwaS53b3JkcHJlc3Mu
b3JnJyApICkgewoJCQkJCQkJY29udGludWU7CgkJCQkJCX0KCQkJCQkJaWYgKCBmYWxzZSAhPT0gc3RyaXN
0ciggJG1hdGNoLCAnY29kZXgud29yZHByZXNzLm9yZycgKSApIHsKCQkJCQkJCWNvbnRpbnVlOwoJCQkJCQ
l9CgkJCQkJCWlmICggJG1hdGNoID09ICRuZXdfY29udGVudF91cmwgKSB7IC8vIElnbm9yZSBuZXcgV1BfQ
09OVEVOVF9VUkwgZGVmaW5lIHRoYXQgd2FzIHVwZGF0ZWQuCgkJCQkJCQljb250aW51ZTsKCQkJCQkJfQoJ
CQkJCQkkdHJvdWJsZVtdID0gJ0EgVVJMIGZvdW5kIGluIG9uZSBvciBtb3JlIGxvY2F0aW9ucyBpbiB3cC1
jb25maWcucGhwIHdhcyBub3QgbWlncmF0ZWQgYXMgaXQgd2FzIGVpdGhlciBub3QgcmVjb2duaXplZCBvci
BpbiBhbiB1bnJlY29nbml6ZWQgbG9jYXRpb24gaW4gdGhlIGZpbGU6ICInIC4gaHRtbGVudGl0aWVzKCAkb
WF0Y2ggKSAuICciICh0aGlzIG1heSBub3QgYmUgYSBwcm9ibGVtISkuJzsKCQkJCQl9CgoJCQkJCWlmICgg
ZmFsc2UgIT09IHN0cmlzdHIoICRjb25maWdfY29udGVudHMsICdDT09LSUVfRE9NQUlOJyApICkgeyAvLyB
Gb3VuZCBjb29raWUgZG9tYWluLgoJCQkJCQkkdHJvdWJsZVtdID0gJ0Nvb2tpZSBkb21haW4gc2V0IGluIH
dwLWNvbmZpZy5waHAgZmlsZSBhbmQgaGFzIG5vdCBiZWVuIHVwZGF0ZWQuIFlvdSBtYXkgbmVlZCB0byBtY
W51YWx5IHVwZGF0ZSB0aGlzLic7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoKCQkvLyAuaHRhY2Nlc3MKCQlp
ZiAoICEgZmlsZV9leGlzdHMoIEFCU1BBVEggLiAnLmh0YWNjZXNzJyApICkgewoJCQkkbm9faHRhY2Nlc3N
fd2FybmluZyA9ICdXYXJuaW5nIG9ubHk6IC5odGFjY2VzcyBmaWxlIG5vdCBmb3VuZCBpbiBXb3JkUHJlc3
Mgcm9vdC4gVGhpcyBpcyB1c2VkIGZvciBwZXJtYWxpbmtzIG9uIHNlcnZlcnMgd2hpY2ggc3VwcG9ydCBpd
C4gSWYgbmVlZGVkIG9yIFVSTHMgcmVzdWx0IGluIGEgNDA0IHlvdSBtYXkgcmVnZW5lcmF0ZSB0aGlzIGZp
bGUgYnkgbG9nZ2luZyBpbnRvIHRoZSB3cC1hZG1pbiAmIG5hdmlnYXRpbmcgdG8gU2V0dGluZ3M6IFBlcm1
hbGlua3MgYW5kIGNsaWNraW5nICJTYXZlIi4nOwoJCQkkdHJvdWJsZVtdID0gaXRfYnViX2ltcG9ydGJ1ZG
R5X2FwcGx5X2ZpbHRlcnMoICdub19odGFjY2Vzc193YXJuaW5nJywgJG5vX2h0YWNjZXNzX3dhcm5pbmcgK
TsKCQl9IGVsc2UgeyAvLyBFeGlzdHMsIGNoZWNrIGlmIEFkZEhhbmRsZXIgaW5zaWRlLgoJCQkkY29udGVu
dHMgPSBAZmlsZV9nZXRfY29udGVudHMoIEFCU1BBVEggLiAnLmh0YWNjZXNzJyApOwoJCQlpZiAoIHN0cnN
0ciggJGNvbnRlbnRzLCAnQWRkSGFuZGxlcicgKSApIHsKCQkJCSR0cm91YmxlW10gPSAnV2FybmluZzogQW
4gQWRkSGFuZGxlciBkaXJlY3RpdmUgaGFzIGJlZW4gZm91bmQgaW4geW91ciAuaHRhY2Nlc3MgZmlsZS4gV
GhpcyBjb3VsZCByZXN1bHQgaW4gV29yZFByZXNzIGFuZCBQSFAgbm90IHJ1bm5pbmcgcHJvcGVybHkgaWYg
Y29uZmlndXJlZCBpbXByb3Blcmx5LCBlc3BlY2lhbGx5IHdoZW4gbWlncmF0aW5nIHRvIGEgbmV3IHNlcnZ
lci4gSWYgeW91IGVuY291bnRlciBwcm9ibGVtcyBzdWNoIGFzIGFuIEludGVybmFsIFNlcnZlciBFcnJvci
BvciBFcnJvciA1MDAsIHRyeSByZW1vdmluZyB0aGlzIGxpbmUgZnJvbSB5b3VyIC5odGFjY2VzcyBmaWxlL
iBTb2x1dGlvbjogRGVsZXRlIHRoaXMgQWRkSGFuZGxlciBsaW5lIGZyb20gdGhlIC5odGFjY2VzcyBmaWxl
LiA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9pdGhlbWVzaGVscC56ZW5kZXNrLmNvbS9oYy9
lbi11cy9hcnRpY2xlcy8yMTExMzIzNTctRnJlcXVlbnRseS1TZWVuLVN1cHBvcnQtSXNzdWVzI0FkZGhhbm
RsZXIiPkNsaWNrIGhlcmUgZm9yIG1vcmUgaW5mb3JtYXRpb24gJiBoZWxwLjwvYT4nOwoJCQl9CgkJfQoKC
QkvLyBwaHAuaW5pCgkJaWYgKCBmaWxlX2V4aXN0cyggQUJTUEFUSCAuICdwaHAuaW5pJyApICkgewoJCQkk
dHJvdWJsZVtdID0gJ0EgcGhwLmluaSBmaWxlIHdhcyByZXN0b3JlZCBpbiB0aGUgaW1wb3J0IHByb2Nlc3M
gaW4gdGhlIHNpdGUgcm9vdC4gVGhpcyBtYXkgY2F1c2UgcHJvYmxlbXMgd2l0aCBzaXRlIGZ1bmN0aW9uYW
xpdHkgaWYgaW1wb3J0ZWQgdG8gYSBkaWZmZXJlbnQgc2VydmVyIGFzIGNvbmZpZ3VyYXRpb24gb3B0aW9uc
yBvZnRlbiBkaWZmZXIgYmV0d2VlbiBzZXJ2ZXJzLCBwb3NzaWJseSByZXN1bHRpbmcgaW4gZGVncmFkZWQg
cGVyZm9ybWFuY2Ugb3IgdW5leHBlY3RlZCBiZWhhdmlvci4nOwoJCX0KCgkJaWYgKCBjb3VudCggJHRyb3V
ibGUgKSA+IDAgKSB7CgkJCS8vcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ3dhcm5pbmcnLCAnUG90ZW50aW
FsIHByb2JsZW1zIHRoYXQgbWF5IG5lZWQgeW91ciBhdHRlbnRpb246ICcgLiBpbXBsb2RlKCAnOyAnLCAkd
HJvdWJsZSApICk7CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAn
Tm8gcG90ZW50aWFsIHByb2JsZW1zIGRldGVjdGVkLicgKTsKCQl9CgoJCXJldHVybiAkdHJvdWJsZTsKCgl
9IC8vIEVuZCB0cm91YmxlU2NhbigpLgoKCgoJLyogc2NydWJJbmRleEZpbGVzKCkKCSAqCgkgKiBEZWxldG
VzIGluZGV4Lmh0bSBmaWxlIGlmIGl0IGFwcGVhcnMgdG8gaGF2ZSB0aGUgY29udGVudHMgdGhhdCBJbXBvc
nRCdWRkeSBjcmVhdGVkIGl0IHdpdGguCgkgKiBOb24taW1wb3J0YnVkZHkgY3JlYXRlZCBpbmRleC5odG0g
ZmlsZXMgYXJlIGxlZnQgaW4gcGxhY2UgdG8gYmUgd2FybmVkIGFib3V0IGxhdGVyIGFzIHRoZSB1c2VyIG1
heSB3YW50IGl0IHRoZXJlLgoJICoKCSAqLwoJZnVuY3Rpb24gc2NydWJJbmRleEZpbGVzKCkgewoJCSR0aG
lzLT5fYmVmb3JlKCBfX0ZVTkNUSU9OX18gKTsKCgkJJGluZGV4RmlsZXMgPSBhcnJheSggJ2luZGV4Lmh0b
ScsICdpbmRleC5odG1sJyApOwoJCWZvcmVhY2ggKCAkaW5kZXhGaWxlcyBhcyAkaW5kZXhGaWxlICkgewoJ
CQlpZiAoIGZpbGVfZXhpc3RzKCBBQlNQQVRIIC4gJGluZGV4RmlsZSApICkgewoJCQkJcGJfYmFja3VwYnV
kZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAkaW5kZXhGaWxlIC4gJyBmaWxlIGV4aXN0cy4gQ2hlY2tpbmcgdG
8gc2VlIGlmIEltcG9ydEJ1ZGR5IGdlbmVyYXRlZCBpdCBvciBpdCBpcyBlbXB0eS4nICk7CgkJCQkkaW5kZ
XhfY29udGVudHMgPSBAZmlsZV9nZXRfY29udGVudHMoIEFCU1BBVEggLiAkaW5kZXhGaWxlICk7CgkJCQlp
ZiAoIGZhbHNlID09PSAkaW5kZXhfY29udGVudHMgKSB7IC8vIENhbm5vdCByZWFkLgoJCQkJCXBiX2JhY2t
1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRpbmRleEZpbGUgLiAnIGZpbGUgdW5yZWFkYWJsZS4gWW91IG
1heSBuZWVkIHRvIG1hbnVhbGx5IGRlbGV0ZSBpdCB0byB2aWV3IHlvdXIgc2l0ZS4nICk7CgkJCQl9IGVsc
2UgeyAvLyBSZWFkIGZpbGUgc3VjY2VlZGVkLgoJCQkJCSRpbmRleF9jb250ZW50cyA9IHRyaW0oICRpbmRl
eF9jb250ZW50cyApOwoJCQkJCWlmICggKCAkaW5kZXhfY29udGVudHMgPT0gJzxodG1sPjwvaHRtbD4nICk
gfHwgKCAnJyA9PSAkaW5kZXhfY29udGVudHMgKSApIHsgLy8gT3VyIGZpbGUuIERlbGV0ZSBpdCEKCQkJCQ
kJJGluZGV4X3VubGluayA9IEB1bmxpbmsoIEFCU1BBVEggLiAkaW5kZXhGaWxlICk7CgkJCQkJCWlmICggd
HJ1ZSA9PT0gJGluZGV4X3VubGluayApIHsKCQkJ
CQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJGluZGV4RmlsZSAuICcgZmlsZSBzdWN
jZXNzZnVsbHkgZGVsZXRlZC4nICk7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3
RhdHVzKCAnZXJyb3InLCAnVW5hYmxlIHRvIGRlbGV0ZSAnIC4gJGluZGV4RmlsZSAuICcgZmlsZS4gIFRoa
XMgaXMgbGlrZWx5IGR1ZSB0byBwZXJtaXNzaW9ucy4gWW91IG1heSBuZWVkIHRvIG1hbnVhbGx5IGRlbGV0
ZSBpdCB0byB2aWV3IHlvdXIgc2l0ZS4nICk7CgkJCQkJCX0KCQkJCQl9IGVsc2UgeyAvLyBOb3Qgb3VyIGZ
pbGUuIExlYXZlIGFsb25lLiBXZSB3aWxsIHdhcm4gYWJvdXQgdGhpcyBsYXRlciB0aG91Z2guCgkJCQkJCX
BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJGluZGV4RmlsZSAuICcgZmlsZSBub3QgZ2VuZ
XJhdGVkIGJ5IEltcG9ydEJ1ZGR5IGFuZCBub3QgZW1wdHkuIExlYXZpbmcgYXMgaXMuIFlvdSBtYXkgbmVl
ZCB0byBkZWxldGUgaXQgdG8gdmlldyB5b3VyIHNpdGUuJyApOwoJCQkJCX0KCQkJCX0KCQkJfSBlbHNlIHs
gLy8gTm8gaW5kZXguaHRtIGZpbGUuCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIC
RpbmRleEZpbGUgLiAnIGZpbGUgbm90IGZvdW5kLiBTa2lwcGluZyBkZWxldGlvbi4nICk7CgkJCX0KCQl9C
gkJcmV0dXJuIHRydWU7Cgl9IC8vIEVuZCBzY3J1YkluZGV4RmlsZXMoKS4KCgoJLyoqCgkgKiBSZW5hbWVz
IC5odGFjY2VzcyB0byAuaHRhY2Nlc3MuYmJfdGVtcCB1bnRpbCBsYXN0IEltcG9ydEJ1ZGR5IHN0ZXAgdG8
gYXZvaWQgY29tcGxpY2F0aW9ucy4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgdHJ1ZSAgQWx3YXlzIHJldHVybn
MgdHJ1ZS4KCSAqLwoJZnVuY3Rpb24gcmVuYW1lSHRhY2Nlc3NUZW1wKCkgewoJCSR0aGlzLT5fYmVmb3JlK
CBfX0ZVTkNUSU9OX18gKTsKCgkJaWYgKCAhIGZpbGVfZXhpc3RzKCBBQlNQQVRIIC4gJy5odGFjY2Vzcycg
KSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTm8gLmh0YWNjZXNzIGZpbGU
gZm91bmQuIFNraXBwaW5nIHRlbXBvcmFyeSBmaWxlIHJlbmFtZS4nICk7CgkJfQoKCQlpdF9idWJfaW1wb3
J0YnVkZHlfZG9fYWN0aW9uKCAnYmFja3VwX2h0YWNjZXNzX2ZpbGUnLCBBQlNQQVRIIC4gJy5odGFjY2Vzc
ycgKTsKCgkJJHJlc3VsdCA9IEByZW5hbWUoIEFCU1BBVEggLiAnLmh0YWNjZXNzJywgQUJTUEFUSCAuICcu
aHRhY2Nlc3MuYmJfdGVtcCcgKTsKCQlpZiAoICRyZXN1bHQgPT09IHRydWUgKSB7IC8vIFJlbmFtZSBzdWN
jZWVkZWQuCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ1JlbmFtZWQgYC5odGFjY2
Vzc2AgZmlsZSB0byBgLmh0YWNjZXNzLmJiX3RlbXBgIHVudGlsIGZpbmFsIEltcG9ydEJ1ZGR5IHN0ZXAuJ
yApOwoJCX0gZWxzZSB7IC8vIFJlbmFtZSBmYWlsZWQuCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3
YXJuaW5nJywgJ1VuYWJsZSB0byByZW5hbWUgYC5odGFjY2Vzc2AgZmlsZSB0byBgLmh0YWNjZXNzLmJiX3R
lbXBgLiBZb3VyIGZpbGUgcGVybWlzc2lvbnMgbWF5IGJlIHRvbyBzdHJpY3QuIFlvdSBtYXkgd2lzaCB0by
BtYW51YWxseSByZW5hbWUgdGhpcyBmaWxlIGFuZC9vciBjaGVjayBwZXJtaXNzaW9ucyBiZWZvcmUgcHJvY
2VlZGluZy4nICk7CgkJfQoJCXJldHVybiB0cnVlOwoKCX0gLy8gRW5kIHJlbmFtZUh0YWNjZXNzVGVtcCgp
LgoKCgoJLyoJcmVuYW1lSHRhY2Nlc3NUZW1wQmFjaygpCiAgICAgKgoJICoJUmVuYW1lcyAuaHRhY2Nlc3M
gdG8gLmh0YWNjZXNzLmJiX3RlbXAgdW50aWwgbGFzdCBJbXBvcnRCdWRkeSBzdGVwIHRvIGF2b2lkIGNvbX
BsaWNhdGlvbnMuCiAgICAgKgoJICoJQHJldHVybgkJbnVsbAoJICovCglmdW5jdGlvbiByZW5hbWVIdGFjY
2Vzc1RlbXBCYWNrKCkgewoJCSR0aGlzLT5fYmVmb3JlKCBfX0ZVTkNUSU9OX18gKTsKCgkJJHRlbXBGaWxl
ID0gQUJTUEFUSCAuICcuaHRhY2Nlc3MuYmJfdGVtcCc7CgkJJGZpbmFsRmlsZSA9IEFCU1BBVEggLiAnLmh
0YWNjZXNzJzsKCgkJaWYgKCAhIGZpbGVfZXhpc3RzKCAkdGVtcEZpbGUgKSApIHsKCQkJcGJfYmFja3VwYn
VkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTm8gYC5odGFjY2Vzcy5iYl90ZW1wYCBmaWxlIGZvdW5kLiBTa
2lwcGluZyB0ZW1wb3JhcnkgZmlsZSByZW5hbWUuJyApOwoJCQlyZXR1cm47CgkJfQoKCQkkcmVzdWx0ID0g
QHJlbmFtZSggJHRlbXBGaWxlLCAkZmluYWxGaWxlICk7CgkJaWYgKCAkcmVzdWx0ID09PSB0cnVlICkgeyA
vLyBSZW5hbWUgc3VjY2VlZGVkLgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdSZW
5hbWVkIGAuaHRhY2Nlc3MuYmJfdGVtcGAgZmlsZSB0byBgLmh0YWNjZXNzYCB1bnRpbCBmaW5hbCBJbXBvc
nRCdWRkeSBzdGVwLicgKTsKCQl9IGVsc2UgeyAvLyBSZW5hbWUgZmFpbGVkLgoJCQlwYl9iYWNrdXBidWRk
eTo6c3RhdHVzKCAnZXJyb3InLCAnVW5hYmxlIHRvIHJlbmFtZSBgLmh0YWNjZXNzLmJiX3RlbXBgIGZpbGU
gdG8gYC5odGFjY2Vzc2AuIFlvdXIgZmlsZSBwZXJtaXNzaW9ucyBtYXkgYmUgdG9vIHN0cmljdC4gWW91IG
1heSB3aXNoIHRvIG1hbnVhbGx5IHJlbmFtZSAuaHRhY2Nlc3MuYmJfdGVtcCBhdCBgJyAuICR0ZW1wRmlsZ
SAuICdgIHRvIC5odGFjY2Vzcy4nICk7CgkJfQoKCQlyZXR1cm47Cgl9IC8vIEVuZCByZW5hbWVIdGFjY2Vz
c1RlbXBCYWNrKCkuCgoJLyoqCgkgKiBQYXJzZSBVUkwgYW5kIGFkanVzdCB0byBwcmVwYXJlIHRvIGJ1aWx
kIHBhdGguCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdXJsICBVUkwgdG8gcGFyc2UuCgkgKgoJICogQHJldH
VybiBhcnJheSAgUGFyc2VkIFVSTC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHBhcnNlX3VybCggJHVybCA9I
CcnICkgewoJCWlmICggZW1wdHkoICR1cmwgKSB8fCAhIGlzX3N0cmluZyggJHVybCApICkgewoJCQlwYl9i
YWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdJbnZhaWQgZm9ybWF0IGZvciBVUkw6ICcgLiBwcml
udF9yKCAkdXJsLCB0cnVlICkgKTsKCQkJcmV0dXJuICR1cmw7CgkJfQoKCQkkcGFyc2VkX3VybCA9IHBhcn
NlX3VybCggJHVybCApOwoJCSRwYXJzZWRfdXJsWydwYXRoJ10gPSBpc3NldCggJHBhcnNlZF91cmxbJ3Bhd
GgnXSApID8gdHJpbSggJHBhcnNlZF91cmxbJ3BhdGgnXSwgJy8nICkgOiAnJzsKCQkkcGFyc2VkX3VybFsn
c2VnbWVudHMnXSA9ICRwYXJzZWRfdXJsWydwYXRoJ10gPyBleHBsb2RlKCAnLycsICRwYXJzZWRfdXJsWyd
wYXRoJ10gKSA6IGFycmF5KCk7CgoJCXJldHVybiAkcGFyc2VkX3VybDsKCX0KCgkvKioKCSAqIEJ1aWxkIF
BhdGggYmFzZWQgb24gcGFyc2VkIFVSTAoJICoKCSAqIEBwYXJhbSBhcnJheSAkcGFyc2VkX3VybCAgUmV0d
XJuIGFycmF5IGZyb20gJHRoaXMtPnBhcnNlX3VybCgpLgoJICoKCSAqIEByZXR1cm4gc3RyaW5nICBGdWxs
IHVybCBwYXRoLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0X3BhdGhfZnJvbV9wYXJzZWRfdXJsKCAkcGF
yc2VkX3VybCA9IGFycmF5KCkgKSB7CgkJaWYgKCAhICRwYXJzZWRfdXJsIHx8ICEgaXNfYXJyYXkoICRwYX
JzZWRfdXJsICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ0ludmFpZCBmb
3JtYXQgZm9yIHBhcnNlZCBVUkw6ICcgLiBwcmludF9yKCAkcGFyc2VkX3VybCwgdHJ1ZSApICk7CgkJCXJl
dHVybiAkcGFyc2VkX3VybDsKCQl9CgoJCWlmICggZW1wdHkoICRwYXJzZWRfdXJsWydzZWdtZW50cyddICk
gKSB7CgkJCSRwYXRoID0gJy8nOwoJCX0gZWxzZSB7CgkJCSRwYXRoID0gJy8nIC4gaW1wbG9kZSggJy8nLC
AkcGFyc2VkX3VybFsnc2VnbWVudHMnXSApIC4gJy8nOwoJCX0KCgkJcmV0dXJuICRwYXRoOwoJfQoKCS8qK
goJICogQnVpbGQgYWxsIHBhdGhzIGZvciBoYW5kbGluZyBodGFjY2VzcyByZXdyaXRlLgoJICoKCSAqIEBy
ZXR1cm4gYXJyYXkgJHBhdGhzICBDb250YWlucyBvbGR1cmwsIG5ld3VybCwgb2xkX3BhdGgsIHJld3JpdGV
fcGF0aAoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2h0YWNjZXNzX3BhdGhzKCkgewoJCSRvbGR1cmwgPS
BzdHJ0b2xvd2VyKCAkdGhpcy0+X3N0YXRlWydkYXQnXVsnc2l0ZXVybCddICk7CgkJJG9sZHVybCA9ICR0a
GlzLT5wYXJzZV91cmwoICRvbGR1cmwgKTsKCQkkb2xkX3BhdGggPSAkdGhpcy0+Z2V0X3BhdGhfZnJvbV9w
YXJzZWRfdXJsKCAkb2xkdXJsICk7CgoJCS8vIERvIHRoZSBleGFjdCBzYW1lIHRoaW5nIHRvIHRoZSBOZXc
gVVJMLgoJCSRuZXd1cmwgPSBzdHJ0b2xvd2VyKCAkdGhpcy0+X3N0YXRlWydzaXRldXJsJ10gKTsKCQkkbm
V3dXJsID0gJHRoaXMtPnBhcnNlX3VybCggJG5ld3VybCApOwoJCSRyZXdyaXRlX3BhdGggPSAkdGhpcy0+Z
2V0X3BhdGhfZnJvbV9wYXJzZWRfdXJsKCAkbmV3dXJsICk7CgoJCXJldHVybiBhcnJheSgKCQkJJ29sZHVy
bCcgPT4gJG9sZHVybCwKCQkJJ25ld3VybCcgPT4gJG5ld3VybCwKCQkJJ29sZF9wYXRoJyA9PiAkb2xkX3B
hdGgsCgkJCSdyZXdyaXRlX3BhdGgnID0+ICRyZXdyaXRlX3BhdGgsCgkJKTsKCX0KCgkvKioKCSAqICBtaW
dyYXRlSHRhY2Nlc3MoKQoJICoKCSAqICBNaWdyYXRlcyAuaHRhY2Nlc3MuYmJfdGVtcCBmaWxlIGlmIGl0I
GV4aXN0cy4KCSAqCgkgKiAgQHJldHVybiAgICAgYm9vbGVhbiAgICAgRmFsc2Ugb25seSBpZiBmaWxlIGlz
IHVud3JpdGFibGUuIFRydWUgaWYgd3JpdGUgc3VjY2VzczsgdHJ1ZSBpZiBmaWxlIGRvZXMgbm90IGV2ZW4
gZXhpc3QuCgkgKgoJICovCglmdW5jdGlvbiBtaWdyYXRlSHRhY2Nlc3MoKSB7CgoJCSRodGFjY2Vzc0ZpbG
UgPSBBQlNQQVRIIC4gJy5odGFjY2Vzcy5iYl90ZW1wJzsKCgkJLy8gSWYgbm8gLmh0YWNjZXNzLmJiX3Rlb
XAgZmlsZSBleGlzdHMgdGhlbiBjcmVhdGUgYSBiYXNpYyBkZWZhdWx0IG9uZSB0aGVuIG1pZ3JhdGUgdGhh
dCBhcyBuZWVkZWQuIEBzaW5jZSAyLjIuMzIuCgkJaWYgKCAhIGZpbGVfZXhpc3RzKCAkaHRhY2Nlc3NGaWx
lICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ05vIGAnIC4gYmFzZW5hbW
UoICRodGFjY2Vzc0ZpbGUgKSAuICdgIGZpbGUgZm91bmQuIENyZWF0aW5nIGJhc2ljIGRlZmF1bHQgLmh0Y
WNjZXNzLmJiX3RlbXAgZmlsZSAodG8gYmUgbGF0ZXIgcmVuYW1lZCB0byAuaHRhY2Nlc3MpLicgKTsKCgkJ
CS8vIERlZmF1bHQgLmh0YWNjZXNzIGZpbGUuCgkJCSRodGFjY2Vzc19jb250ZW50cyA9CiIjIEJFR0lOIFd
vcmRQcmVzcyAtIEJVQiBJbXBvcnRidWRkeQo8SWZNb2R1bGUgbW9kX3Jld3JpdGUuYz4KUmV3cml0ZUVuZ2
luZSBPbgpSZXdyaXRlQmFzZSAvClJld3JpdGVSdWxlIF5pbmRleFxcLnBocCQgLSBbTF0KUmV3cml0ZUNvb
mQgJXtSRVFVRVNUX0ZJTEVOQU1FfSAhLWYKUmV3cml0ZUNvbmQgJXtSRVFVRVNUX0ZJTEVOQU1FfSAhLWQK
UmV3cml0ZVJ1bGUgLiAvaW5kZXgucGhwIFtMXQo8L0lmTW9kdWxlPgojIEVORCBXb3JkUHJlc3MiOwoJCQl
maWxlX3B1dF9jb250ZW50cyggJGh0YWNjZXNzRmlsZSwgJGh0YWNjZXNzX2NvbnRlbnRzICk7CgkJCXVuc2
V0KCAkaHRhY2Nlc3NfY29udGVudHMgKTsKCQl9CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzY
WdlJywgJ01pZ3JhdGluZyBgJyAuIGJhc2VuYW1lKCAkaHRhY2Nlc3NGaWxlICkgLiAnYCBmaWxlLi4uJyAp
OwoKCQkkcGF0aHMgPSAkdGhpcy0+Z2V0X2h0YWNjZXNzX3BhdGhzKCk7CgoJCXBiX2JhY2t1cGJ1ZGR5Ojp
zdGF0dXMoICdtZXNzYWdlJywgJ0NoZWNraW5nIGAnIC4gYmFzZW5hbWUoICRodGFjY2Vzc0ZpbGUgKSAuIC
dgIGZpbGUuJyApOwoJCWlmICggJHBhdGhzWyduZXd1cmwnXSAhPT0gJHBhdGhzWydvbGR1cmwnXSApIHsKC
QkJaWYgKCAkcGF0aHNbJ29sZF9wYXRoJ10gPT09ICRwYXRoc1sncmV3cml0ZV9wYXRoJ10gKSB7CgkJCQkv
LyBvbmx5IGNoYW5nZSB3YXMgZWl0aGVyIHRvL2Zyb20gaHR0cC9odHRwcyBvciBkaWZmZXJlbnQgZG9tYWl
uLgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnUmV3cml0ZSBwYXRocyByZW1haW
4gdGhlIHNhbWUuIE5vIHBhdGggbW9kaWZpY2F0aW9ucyBuZWNlc3NhcnkuJyApOwoJCQl9IGVsc2UgewoJC
QkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnVVJMIGRpcmVjdG9yeSBoYXMgY2hhbmdl
ZC4gVXBkYXRpbmcgZnJvbSBgJyAuICRwYXRoc1snb2xkX3BhdGgnXSAuICdgIHRvIGAnIC4gJHBhdGhzWyd
yZXdyaXRlX3BhdGgnXSAuICdgLicgKTsKCQkJfQoJCX0KCgkJJHJld3JpdGVfbGluZXMgICAgICAgICA9IG
FycmF5KCk7CgkJJGdvdF9yZXdyaXRlICAgICAgICAgICA9IGZhbHNlOwoJCSRmaWxlX2FycmF5ICAgICAgI
CAgICAgPSBmaWxlKCAkaHRhY2Nlc3NGaWxlICk7CgkJJGh0YWNjZXNzTmVlZHNVcGRhdGluZyA9IGZhbHNl
OwoKCQkvLyBUT0RPOiBDb25zaWRlciB1c2luZyBleHRyYWN0X2Zyb21fbWFya2VycygpIGhlcmUuCgoJCS8
vIExvb3AgdGhyb3VnaCAuaHRhY2Nlc3MgbGluZXMsIHVwZGF0aW5nIGFzIG5lZWRlZC4KCQlmb3JlYWNoIC
ggKGFycmF5KSAkZmlsZV9hcnJheSBhcyAkbGluZV9udW1iZXIgPT4gJGxpbmUgKSB7CgkJCWlmICggcHJlZ
19tYXRjaCggJy9BZGQoSGFuZGxlcnxUeXBlKShcaCopXGIuKlwucGhwLycsICRsaW5lLCAkYWRkX3R5cGUg
KSApIHsgLy8gSGFzIEFkZEhhbmRsZXIuIERpc2FibGUgdGhpcyBsaW5lIC0tIGlmIGltcG9ydGJ1ZGR5IGl
zIHJ1bm5pbmcgbm93IHRoZW4gd2UgZG8gbm90IG5lZWQgdGhpcyBtb3N0IGxpa2VseS4KCQkJCWlmICggcH
JlZ19tYXRjaCggJy9eXGgqIy4qJC9pbScsICRsaW5lICkgKSB7CgkJCQkJJHJld3JpdGVfbGluZXNbXSA9I
CRsaW5lOyAvLyBLZWVwIGZ1bGx5IGNvbW1lbnRlZCBvdXQgbGluZXMgb3V0c2lkZSBvZiAjQkVHSU4vRU5E
IFdvcmRQcmVzcy4KCQkJCQljb250aW51ZTsKCQkJCX0KCgkJCQkkbWVzc2FnZSA9IHNwcmludGYoICdBbiA
lcyBkaXJlY3RpdmUgY2hhbmdpbmcgaG93IC5waHAgZmlsZXMgYXJlIHRyZWF0ZWQgaGFzIGJlZW4gZm91bm
QgaW4geW91ciAuaHRhY2Nlc3MgZmlsZSBhbmQgYmVlbiBkaXNhYmxlZC4gVGhpcyBjb3VsZCByZXN1bHQga
W4gV29yZFByZXNzIGFuZCBQSFAgbm90IHJ1bm5pbmcgcHJvcGVybHkgaWYgY29uZmlndXJlZCBpbXByb3Bl
cmx5LCBlc3BlY2lhbGx5IHdoZW4gbWlncmF0aW5nIHRvIGEgbmV3IHNlcnZlci4gSWYgeW91IGVuY291bnR
lciBwcm9ibGVtcyBzdWNoIGFzIGFuIEludGVybmFsIFNlcnZlciBFcnJvciBvciBFcnJvciA1MDAsIHRyeS
B1bmNvbW1lbnRpbmcgdGhpcyBsaW5lIGluIHlvdXIgLmh0YWNjZXNzIGZpbGUuIExpbmUgIyVkOiAiJXMiL
icsIHRyaW0oICRhZGRfdHlwZVswXSApLCAkbGluZV9udW1iZXIsICRsaW5lICk7CgkJCQlwYl9iYWNrdXBi
dWRkeTo6c3RhdHVzKCAnd2FybmluZycsICRtZXN
zYWdlICk7CgkJCQlwYl9iYWNrdXBidWRkeTo6YWxlcnQoICRtZXNzYWdlICk7CgoJCQkJJHJld3JpdGVfbG
luZXNbXSA9ICcjICcgLiAkbGluZTsgLy8gS2VlcCBsaW5lLCBidXQgY29tbWVudCBvdXQuCgkJCQljb250a
W51ZTsKCQkJfQoKCQkJaWYgKCAkcGF0aHNbJ25ld3VybCddID09PSAkcGF0aHNbJ29sZHVybCddICkgewoJ
CQkJLy8gRG9uJ3QgZG8gYW55dGhpbmcgZWxzZSBleGNlcHQga2VlcCBjaGVja2luZyBmb3IgQWRkSGFuZGx
lci4KCQkJCWNvbnRpbnVlOwoJCQl9CgoJCQlpZiAoIGZhbHNlID09PSAkZ290X3Jld3JpdGUgKSB7CgkJCQ
lpZiAoIHByZWdfbWF0Y2goICcvQkVHSU4oXGgqKVdvcmRQcmVzcy8nLCAkbGluZSApICkgeyAvLyBCZWdpb
m5pbmcgb2YgYSBXb3JkUHJlc3MgYmxvY2sgc28gc3RhcnQgcmVwbGFjaW5nLgoJCQkJCSRnb3RfcmV3cml0
ZSA9IHRydWU7CgkJCQl9CgkJCQkkcmV3cml0ZV9saW5lc1tdID0gJGxpbmU7IC8vIENhcHR1cmVzIHRoZSB
jdXJyZW50IGxpbmUgYXMgaXMuCgkJCQljb250aW51ZTsKCQkJfSBlbHNlaWYgKCBwcmVnX21hdGNoKCAnL0
VORChcaCopV29yZFByZXNzLycsICRsaW5lICkgKSB7IC8vIEVuZCBvZiBhIFdvcmRQcmVzcyBibG9jayBzb
yBzdG9wIHJlcGxhY2luZy4KCQkJCSRnb3RfcmV3cml0ZSA9IGZhbHNlOwoJCQkJJHJld3JpdGVfbGluZXNb
XSA9ICRsaW5lOyAvLyBDYXB0dXJlcyB0aGUgY3VycmVudCBsaW5lIGFzIGlzLgoJCQkJY29udGludWU7Cgk
JCX0KCgkJCWlmICggcHJlZ19tYXRjaCggJy9eXGgqIy4qJC9pbScsICRsaW5lICkgKSB7CgkJCQkkcmV3cm
l0ZV9saW5lc1tdID0gJGxpbmU7IC8vIEtlZXAgZnVsbHkgY29tbWVudGVkIG91dCBsaW5lcy4KCQkJCWNvb
nRpbnVlOwoJCQl9CgoJCQkkbmV3X2xpbmUgPSAkbGluZTsKCgkJCS8vIFRPRE86IFVzZSBwcmVnX3JlcGxh
Y2UgaGVyZSB0byBrZWVwIGZsYWdzIGxpa2UgW0xdIGludGFjdC4KCQkJaWYgKCBzdHJzdHIoICRsaW5lLCA
nUmV3cml0ZUJhc2UnICkgKSB7IC8vIFJld3JpdGVCYXNlLgoJCQkJJG5ld19saW5lID0gJ1Jld3JpdGVCYX
NlICcgLiAkcGF0aHNbJ3Jld3JpdGVfcGF0aCddIC4gIlxuIjsKCQkJfSBlbHNlaWYgKCBzdHJzdHIoICRsa
W5lLCAnUmV3cml0ZVJ1bGUnICkgKSB7IC8vIFJld3JpdGVSdWxlLgoJCQkJaWYgKCBzdHJzdHIoICRsaW5l
LCAnXmluZGV4XC5waHAkJyApICkgeyAvLyBIYW5kbGUgbmV3IHN0cmFuZ2UgcmV3cml0ZXJ1bGUuIExlYXZ
lIGFzIGlzLgoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJy5odGFjY2VzcyBeaW
5kZXhcLnBocCQgZGV0ZWN0ZWQuIExlYXZpbmcgYXMgaXMuJyApOwoJCQkJfSBlbHNlaWYgKCAhIHN0cnN0c
iggJGxpbmUsICdSZXdyaXRlUnVsZSAuICcgKSApIHsKCQkJCQkvLyBIYW5kbGUgd2hhdCBpcyBwcm9iYWJs
eSBhIHVzZXIgZ2VuZXJhdGVkIHJ1bGUgLSBiZXR0ZXIgZGV0ZWN0aW9uIG5lZWRlZC4KCQkJCQkkbmV3X2x
pbmUgPSBzdHJfcmVwbGFjZSggJHBhdGhzWydvbGRfcGF0aCddLCAkcGF0aHNbJ3Jld3JpdGVfcGF0aCddLC
AkbGluZSApOyAvLyBUT0RPOiBOZWVkcyBjaGVjayBmb3IgcmVsYXRpdmUgcGF0aHMuCgkJCQl9IGVsc2Uge
yAvLyBOb3JtYWwgc3BvdC4KCQkJCQkkbmV3X2xpbmUgPSAnUmV3cml0ZVJ1bGUgLiAnIC4gJHBhdGhzWydy
ZXdyaXRlX3BhdGgnXSAuICdpbmRleC5waHAgW0xdJyAuICJcbiI7CgkJCQl9CgkJCX0gZWxzZSB7IC8vIFV
zZXIgY3VzdG9tIHJld3JpdGVydWxlIHdlIGRpZCBub3QgdXBkYXRlLgoJCQkJLy8gSSBkb24ndCB0aGluay
B0aGlzIHJ1bGUgd2lsbCBldmVyIGhpdCBzaW5jZSBpdCdsbCBhbHdheXMgc3RvcCBhdCBsaW5lIDEzOTQuI
C9iZC4KCQkJCWlmICggZmFsc2UgIT09IHN0cnN0ciggJGxpbmUsICdSZXdyaXRlUnVsZSAuICcgKSApIHsg
Ly8gUmV3cml0ZVJ1bGUsIHdhcm4gdXNlciBwb3RlbnRpYWxseSBpZiBwYXRoIG1heSBuZWVkIGNoYW5nZWQ
uCgkJCQkJaWYgKCAkcGF0aHNbJ29sZF9wYXRoJ10gIT09ICRwYXRoc1sncmV3cml0ZV9wYXRoJ10gKSB7Cg
kJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ1VzZXItZGVmaW5lZCBSZXdyaXRlU
nVsZSBmb3VuZCBhbmQgV29yZFByZXNzIHBhdGggaGFzIGNoYW5nZWQgc28gdGhpcyBydWxlIE1BWSBuZWVk
IG1hbnVhbGx5IHVwZGF0ZWQgYnkgeW91IHRvIGZ1bmN0aW9uIHByb3Blcmx5LiBMaW5lICMnIC4gJGxpbmV
fbnVtYmVyIC4gJzogIicgLiAkbGluZSAuICciLicgKTsKCQkJCQl9CgkJCQl9CgkJCX0KCgkJCWlmICggJG
5ld19saW5lICE9ICRsaW5lICkgewoJCQkJJHJld3JpdGVfbGluZXNbXSA9ICRuZXdfbGluZTsKCQkJCSRod
GFjY2Vzc05lZWRzVXBkYXRpbmcgPSB0cnVlOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3Nh
Z2UnLCAnLmh0YWNjZXNzIExpbmUgIycgLiAkbGluZV9udW1iZXIgLiAnIGNoYW5nZWQgZnJvbSBgJyAuIHR
yaW0oICRsaW5lICkgLiAnYCB0byBgJyAuIHRyaW0oICRuZXdfbGluZSApIC4gJ2AuJyApOwoJCQl9IGVsc2
UgewoJCQkJJHJld3JpdGVfbGluZXNbXSA9ICRsaW5lOyAvLyBDYXB0dXJlcyBldmVyeXRoaW5nIGluc2lkZ
SBXb3JkUHJlc3MgYmxvY2sgd2UgYXJlbnQgbW9kaWZ5aW5nLgoJCQl9CgkJfSAvLyBlbmQgZm9yZWFjaC4K
CgkJLy8gSWYgdGhlIFVSTCAoZG9tYWluIGFuZC9vciBVUkwgc3ViZGlyZWN0b3J5ICkgaGFzIGNoYW5nZWQ
sIHRoZW4gbmVlZCB0byB1cGRhdGUgLmh0YWNjZXNzLmJiX3RlbXAgZmlsZS4KCgkJJHJld3JpdGVfbGluZX
MgICAgICAgICA9IGl0X2J1Yl9pbXBvcnRidWRkeV9hcHBseV9maWx0ZXJzKCAnaHRhY2Nlc3NfY29udGVud
F9hcnJheScsICRyZXdyaXRlX2xpbmVzICk7CgkJJGh0YWNjZXNzTmVlZHNVcGRhdGluZyA9IGl0X2J1Yl9p
bXBvcnRidWRkeV9hcHBseV9maWx0ZXJzKCAnaHRhY2Nlc3NfbmVlZHNfdXBkYXRpbmcnLCAkaHRhY2Nlc3N
OZWVkc1VwZGF0aW5nICk7CgoJCWlmICggdHJ1ZSA9PT0gJGh0YWNjZXNzTmVlZHNVcGRhdGluZyApIHsKCQ
kJLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gd3JpdGUgdG8gdGhpcyBmaWxlIChpZiBpdCBhbHJlYWR5IGV4aXN0c
ykuCgkJCWlmICggZmlsZV9leGlzdHMoICRodGFjY2Vzc0ZpbGUgKSAmJiAoICEgaXNfd3JpdGFibGUoICRo
dGFjY2Vzc0ZpbGUgKSApICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ3dhcm5pbmcnLCAnV2F
ybmluZyAjMjg1NzM6IFRlbXAgYCcgLiBiYXNlbmFtZSggJGh0YWNjZXNzRmlsZSApIC4gJ2AgZmlsZSBzaG
93cyB0byBiZSB1bndyaXRhYmxlLiBBdHRlbXB0aW5nIHRvIG92ZXJyaWRlIHBlcm1pc3Npb25zIHRlbXBvc
mFyaWx5LicgKTsKCQkJCSRvbGRQZXJtcyA9ICggZmlsZXBlcm1zKCAkaHRhY2Nlc3NGaWxlICkgJiAwNzc3
ICk7CgkJCQlAY2htb2QoICRodGFjY2Vzc0ZpbGUsIDA2NDQgKTsgLy8gVHJ5IHRvIG1ha2Ugd3JpdGFibGU
uCgkJCQkvLyBDaGVjayBpZiBzdGlsbCBub3Qgd3JpdGFibGUuLi4KCQkJCWlmICggISBpc193cml0YWJsZS
ggJGh0YWNjZXNzRmlsZSApICkgewoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFc
nJvciAjOTAyMDogVW5hYmxlIHRvIHdyaXRlIHRvIGAnIC4gYmFzZW5hbWUoICRodGFjY2Vzc0ZpbGUgKSAu
ICdgIGZpbGUuIFZlcmlmeSBwZXJtaXNzaW9ucy4nICk7CgkJCQkJcGJfYmFja3VwYnVkZHk6OmFsZXJ0KCA
nV2FybmluZzogVW5hYmxlIHRvIHdyaXRlIHRvIHRlbXBvcmFyeSAuaHRhY2Nlc3MgZmlsZS4gVmVyaWZ5IH
RoaXMgZmlsZSBoYXMgcHJvcGVyIHdyaXRlIHBlcm1pc3Npb25zLiBZb3UgbWF5IHJlY2VpdmUgNDA0IE5vd
CBGb3VuZCBlcnJvcnMgb24geW91ciBzaXRlIGlmIHRoaXMgaXMgbm90IGNvcnJlY3RlZC4gVG8gZml4IGFm
dGVyIG1pZ3JhdGlvbiBjb21wbGV0ZXM6IExvZyBpbiB0byB5b3VyIFdvcmRQcmVzcyBhZG1pbiBhbmQgc2V
sZWN0IFNldHRpbmdzOiBQZXJtYWxpbmtzIGZyb20gdGhlIGxlZnQgbWVudSB0aGVuIHNhdmUuIFRvIG1hbn
VhbGx5IHVwZGF0ZSwgY29weS9wYXN0ZSB0aGUgZm9sbG93aW5nIGludG8geW91ciAuaHRhY2Nlc3MgZmlsZ
TogPHRleHRhcmVhPicgLiBpbXBsb2RlKCAkcmV3cml0ZV9saW5lcyApIC4gJzwvdGV4dGFyZWE+JywgJzkw
MjAnICk7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgoJCQkkaGFuZGxpbmcgPSBmb3BlbiggJGh
0YWNjZXNzRmlsZSwgJ3cnICk7CgkJCWZ3cml0ZSggJGhhbmRsaW5nLCBpbXBsb2RlKCAkcmV3cml0ZV9saW
5lcyApICk7CgkJCWZjbG9zZSggJGhhbmRsaW5nICk7CgkJCXVuc2V0KCAkaGFuZGxpbmcgKTsKCgkJCS8vI
FJlc3RvcmUgcHJpb3IgcGVybWlzc2lvbnMgaWYgYXBwbGljYWJsZS4KCQkJaWYgKCBpc3NldCggJG9sZFBl
cm1zICkgKSB7CgkJCQlAY2htb2QoICRodGFjY2Vzc0ZpbGUsICRvbGRQZXJtcyApOwoJCQl9CgoJCQlwYl9
iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdNaWdyYXRlZCBgJyAuIGJhc2VuYW1lKCAkaHRhY2
Nlc3NGaWxlICkgLiAnYCBmaWxlLiBJdCB3aWxsIGJlIHJlbmFtZWQgYmFjayB0byBgLmh0YWNjZXNzYCBvb
iB0aGUgZmluYWwgc3RlcC4nICk7CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21l
c3NhZ2UnLCAnTm8gY2hhbmdlcyBuZWVkZWQgZm9yIGAnIC4gYmFzZW5hbWUoICRodGFjY2Vzc0ZpbGUgKSA
uICdgIGZpbGUuJyApOwoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9IC8vIEVuZCBtaWdyYXRlSHRhY2Nlc3MoKS
4KCgoKCWZ1bmN0aW9uIGdldERlZmF1bHRVcmwoKSB7CgkJJHRoaXMtPl9iZWZvcmUoIF9fRlVOQ1RJT05fX
yApOwoKCQkvLyBHZXQgdGhlIGN1cnJlbnQgVVJMIG9mIHdoZXJlIHRoZSBpbXBvcnRidWRkeSB0b29sIGlz
IHJ1bm5pbmcuCgkJJHVybCA9IHN0cl9yZXBsYWNlKCAkX1NFUlZFUlsnUVVFUllfU1RSSU5HJ10sICcnLCA
kX1NFUlZFUlsnUkVRVUVTVF9VUkknXSApOwoJCSR1cmwgPSBzdHJfcmVwbGFjZSggYmFzZW5hbWUoICR1cm
wgKSAsICcnLCAkdXJsICk7CgkJJHVybCA9IHByZWdfcmVwbGFjZSggJ3wvKiR8JywgJycsICR1cmwgKTsgI
C8vIHN0cmlwcyB0cmFpbGluZyBzbGFzaChlcykuCgoJCWlmICggKCBpc3NldCggJF9TRVJWRVJbJ0hUVFBT
J10gKSAmJiAoICRfU0VSVkVSWydIVFRQUyddICE9PSAnb2ZmJykgKSB8fCAoIGlzc2V0KCAkX1NFUlZFUls
nU0VSVkVSX1BPUlQnXSApICYmICggJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10gPT0gNDQzICkgKSApIHsgLy
8gU1NMLgoJCQkkdXJsX3ByZWZpeCA9ICdodHRwczovLyc7CgkJfSBlbHNlIHsKCQkJJHVybF9wcmVmaXggP
SAnaHR0cDovLyc7CgkJfQoKCQkkdXJsID0gJHVybF9wcmVmaXggLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10g
LiAkdXJsOwoKCQlyZXR1cm4gJHVybDsKCX0gLy8gRW5kIGdldERlZmF1bHRVcmwoKS4KCgoKCWZ1bmN0aW9
uIGdldERlZmF1bHREb21haW4oKSB7CgkJJHRoaXMtPl9iZWZvcmUoIF9fRlVOQ1RJT05fXyApOwoKCQlwcm
VnX21hdGNoKCAnL14oaHR0cDpcL1wvKT8oW15cL10rKS9pJywgJHRoaXMtPmdldERlZmF1bHRVcmwoKSwgJ
GRvbWFpbiApOwoJCXJldHVybiAkZG9tYWluWzJdOwoJfSAvLyBFbmQgZ2V0RGVmYXVsdERvbWFpbigpLgoK
CgoJLyoqCgkgKiAgY29ubmVjdERhdGFiYXNlKCkKCSAqCgkgKiAgSW5pdGlhbGl6ZXMgYSBjb25uZWN0aW9
uIHRvIHRoZSBteXNxbCBkYXRhYmFzZS4KCSAqICBSRVFVSVJFUzogZGF0YWJhc2VTZXR0aW5ncyBwb3J0aW
9uIG9mIHN0YXRlIHRvIGJlIHNldC4KCSAqCgkgKiAgQHJldHVybiAgICAgYm9vbGVhbiAgICAgVHJ1ZSBvb
iBzdWNjZXNzOyBlbHNlIGZhbHNlLiBTdWNjZXNzIHRlc3RpbmcgaXMgdmVyeSBsb29zZS4KCSAqLwoJZnVu
Y3Rpb24gY29ubmVjdERhdGFiYXNlKCkgewoJCSR0aGlzLT5fYmVmb3JlKCBfX0ZVTkNUSU9OX18gKTsKCgk
JaWYgKCB0cnVlID09PSAkdGhpcy0+X2RiQ29ubmVjdGVkICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdH
VzKCAnZGV0YWlscycsICdBbHJlYWR5IGNvbm5lY3RlZCB0byBkYXRhYmFzZSBmcm9tIHByaW9yIGNvbm5lY
3REYXRhYmFzZSgpIGNhbGwuIFNraXBwaW5nLicgKTsKCQkJcmV0dXJuIHRydWU7CgkJfQoKCQlnbG9iYWwg
JHdwZGI7CgkJJHdwZGIgPSBuZXcgd3BkYiggJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWyd
1c2VybmFtZSddLCAkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ3Bhc3N3b3JkJ10sICR0aG
lzLT5fc3RhdGVbJ2RhdGFiYXNlU2V0dGluZ3MnXVsnZGF0YWJhc2UnXSwkdGhpcy0+X3N0YXRlWydkYXRhY
mFzZVNldHRpbmdzJ11bJ3NlcnZlciddICk7CgoJCS8vIFNlZSBpZiB3ZSBoYXZlIGEgc3BlY2lmaWVkIGNo
YXJhY3RlciBzZXQgYW5kIGNvbGxhdGlvbiB0byB1c2UgZnJvbSB0aGUgc291cmNlIHNpdGUuCgkJJGNoYXJ
zZXQgPSBudWxsOwoJCSRjb2xsYXRlID0gbnVsbDsKCQlpZiAoIGlzc2V0KCAkdGhpcy0+X3N0YXRlWydkYX
QnXVsnZGJfY2hhcnNldCddICkgKSB7CgkJCSRjaGFyc2V0ID0gJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ2RiX
2NoYXJzZXQnXTsKCQl9CgkJaWYgKCBpc3NldCggJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ2RiX2NvbGxhdGUn
XSApICkgewoJCQkkY29sbGF0ZSA9ICR0aGlzLT5fc3RhdGVbJ2RhdCddWydkYl9jb2xsYXRlJ107CgkJfQo
JCWlmICggKCBudWxsICE9PSAkY2hhcnNldCApIHx8ICggbnVsbCAhPT0gJGNvbGxhdGUgKSApIHsKCQkJcG
JfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnU2V0dGluZyBjaGFyc2V0IHRvIGAnIC4gJGNoY
XJzZXQgLiAnYCBhbmQgY29sbGF0ZSB0byBgJyAuICRjb2xsYXRlIC4gJ2AgYmFzZWQgb24gc291cmNlIHNp
dGUuJyApOwoJCQkkd3BkYi0+c2V0X2NoYXJzZXQoICR3cGRiLT5kYmgsICRjaGFyc2V0LCAkY29sbGF0ZSA
pOwoJCX0gZWxzZSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NoYXJzZXQgbm
9yIGNvbGxhdGUgYXJlIGluIERBVCBmaWxlLiBVc2luZyBkZWZhdWx0cyBmb3IgZGF0YWJhc2UgY29ubmVjd
Glvbi4nICk7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NoYXJzZXQgaW4gd3Bk
YjogJyAuICR3cGRiLT5jaGFyc2V0ICk7CgkJfQoKCQkvLyBXYXJuIGlmIG15c3FsIHZlcnNpb25zIGFyZSB
pbmNvbXBhdGlibGU7IGVnIGltcG9ydGluZyBhIG15c3FsIDwgNS4xIHZlcnNpb24gaW50byBhIHNlcnZlci
BydW5uaW5nIDUuMSsuCgkJZ2xvYmFsICR3cGRiOwoJCSR0aGlzVmVyc2lvbiA9ICR3cGRiLT5kYl92ZXJza
W9uKCk7CgkJaWYgKCBpc3NldCggJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ2RiX3ZlcnNpb24nXSApICkgewoJ
CQkkaW5jb21pbmdWZXJzaW9uID0gJHRoaXMtPl9zdGF0ZVsnZGF0J11bJ2RiX3ZlcnNpb24nXTsKCQkJcGJ
fYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbH
MnLCAnSW5jb21pbmcgbXlzcWwgdmVyc2lvbjogYCcgLiAkaW5jb21pbmdWZXJzaW9uIC4gJ2AuIFRoaXMgc
2VydmVyXCdzIG15c3FsIHZlcnNpb246IGAnIC4gJHRoaXNWZXJzaW9uIC4gJ2AuJyApOwoJCQlpZiAoIHZl
cnNpb25fY29tcGFyZSggJGluY29taW5nVmVyc2lvbiwgJzUuMS4wJywgJzwnICkgJiYgdmVyc2lvbl9jb21
wYXJlKCAkdGhpc1ZlcnNpb24sICc1LjEuMCcsICc+PScgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdG
F0dXMoICd3YXJuaW5nJywgJ0Vycm9yICM3MDAxOiBUaGlzIHNlcnZlclwncyBteXNxbCB2ZXJzaW9uLCBgJ
yAuICR0aGlzVmVyc2lvbiAuICdgIG1heSBoYXZlIFNRTCBxdWVyeSBpbmNvbXBhdGliaWxpdGllcyB3aXRo
IHRoZSBiYWNrdXAgbXlzcWwgdmVyc2lvbiBgJyAuICRpbmNvbWluZ1ZlcnNpb24gLiAnYC4gVGhpcyBtYXk
gcmVzdWx0IGluICM5MDEwIGVycm9ycyBkdWUgdG8gc3ludGF4IG9mIFRZUEU9IGNoYW5naW5nIHRvIEVOR0
lORT0uIElmIG5vbmUgb2NjdXIgeW91IG1heSBpZ25vcmUgdGhpcyBlcnJvci4nICk7CgkJCX0KCQl9IGVsc
2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdJbmNvbWluZyBteXNxbCB2ZXJz
aW9uOiBgVW5rbm93bmAuIFRoaXMgc2VydmVyXCdzIG15c3FsIHZlcnNpb246IGAnIC4gJHRoaXNWZXJzaW9
uIC4gJ2AuJyApOwoJCX0KCgkJJHRoaXMtPl9kYkNvbm5lY3RlZCA9IHRydWU7CgoJCXJldHVybiB0cnVlOw
oJfSAvLyBFbmQgY29ubmVjdERhdGFiYXNlKCkuCgoKCglmdW5jdGlvbiBnZXRCbG9nUHVibGljU2V0dGluZ
ygpIHsKCQkkdGhpcy0+X2JlZm9yZSggX19GVU5DVElPTl9fICk7CgkJaWYgKCB0cnVlICE9PSBzZWxmOjpj
b25uZWN0RGF0YWJhc2UoKSApIHsKCQkJcmV0dXJuICcnOwoJCX0KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR
1cyggJ2RldGFpbHMnLCAnQ2hlY2tpbmcgY3VycmVudCBibG9nX3B1YmxpYyBvcHRpb24gc2V0dGluZy4nIC
k7CgoJCWdsb2JhbCAkd3BkYjsKCgkJLy8gTkVXIHByZWZpeAoJCSRzcWwgPSAnU0VMRUNUIG9wdGlvbl92Y
Wx1ZSBGUk9NIGAnIC4gJHRoaXMtPl9zdGF0ZVsnZGF0YWJhc2VTZXR0aW5ncyddWydwcmVmaXgnXSAuICJv
cHRpb25zYCBXSEVSRSBvcHRpb25fbmFtZT0nYmxvZ19wdWJsaWMnOyI7CgkJJHJlc3VsdHMgPSAkd3BkYi0
+Z2V0X3Jlc3VsdHMoICRzcWwsIEFSUkFZX0EgKTsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YW
lscycsICdGb3VuZCAnIC4gY291bnQoICRyZXN1bHRzICkgLiAnIHJlc3VsdHMgc2Vla2luZyBibG9nX3B1Y
mxpYyBvcHRpb24uJyApOwoKCQlyZXR1cm4gJHJlc3VsdHNbMF1bJ29wdGlvbl92YWx1ZSddOwoJfSAvLyBF
bmQgZ2V0QmxvZ1B1YmxpY1NldHRpbmcoKS4KCgoKCS8vIHRydWUgb24gc3VjY2VzcywgZWxzZSBmYWxzZQo
JZnVuY3Rpb24gc2V0QmxvZ1B1YmxpYyggJHNldHRpbmcgKSB7CgkJaWYgKCAnJyA9PT0gJHNldHRpbmcgKS
B7IC8vIE5vIGNoYW5nZS4KCQkJcmV0dXJuIHRydWU7CgkJfQoKCQkkdGhpcy0+X2JlZm9yZSggX19GVU5DV
ElPTl9fICk7CgkJaWYgKCB0cnVlICE9PSBzZWxmOjpjb25uZWN0RGF0YWJhc2UoKSApIHsKCQkJcmV0dXJu
IGZhbHNlOwoJCX0KCgkJaWYgKCB0cnVlID09PSAkc2V0dGluZyApIHsKCQkJJHNldHRpbmcgPSAnMSc7Cgk
JfSBlbHNlaWYgKCBmYWxzZSA9PT0gJHNldHRpbmcgKSB7CgkJCSRzZXR0aW5nID0gJzAnOwoJCX0gZWxzZS
B7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjNDgzNzQ3MzQ6IFVuZXhwZ
WN0ZWQgaW52YWxpZCBzZXRCbG9nUHVibGljKCkgdmFsdWUgYCcgLiAkc2V0dGluZyAuICdgLicgKTsKCQkJ
cmV0dXJuIGZhbHNlOwoJCX0KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnU2V0dGl
uZyBuZXcgYmxvZ19wdWJsaWMgc2VhcmNoIGVuZ2luZSB2aXNpYmlsaXR5IHNldHRpbmcgdG8gYCcgLiAkc2
V0dGluZyAuICdgLicgKTsKCgkJZ2xvYmFsICR3cGRiOwoKCQkvLyBORVcgcHJlZml4CgkJJHNxbCA9ICdVU
ERBVEUgYCcgLiAkdGhpcy0+X3N0YXRlWydkYXRhYmFzZVNldHRpbmdzJ11bJ3ByZWZpeCddIC4gIm9wdGlv
bnNgIFNFVCBvcHRpb25fdmFsdWU9JyIgLiBiYWNrdXBidWRkeV9jb3JlOjpkYkVzY2FwZSggJHNldHRpbmc
gKSAuICInIFdIRVJFIG9wdGlvbl9uYW1lPSdibG9nX3B1YmxpYycgTElNSVQgMTsiOwoJCSR3cGRiLT5xdW
VyeSggJHNxbCApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ01vZGlmaWVkICcgL
iAkd3BkYi0+cm93c19hZmZlY3RlZCAuICcgcm93KHMpIHdoaWxlIHVwZGF0aW5nIGJsb2dfcHVibGljLicg
KTsKCQlpZiAoICEgZW1wdHkoICR3cGRiLT5sYXN0X2Vycm9yICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5Ojp
zdGF0dXMoICdlcnJvcicsICdteXNxbCBlcnJvcjogJyAuICR3cGRiLT5sYXN0X2Vycm9yICk7IH0KCgkJcm
V0dXJuIHRydWU7Cgl9CgoKCgkvKiBfZXJyb3IoKQoJICoKCSAqIExvZ3MgZXJyb3IgbWVzc2FnZXMgZm9yI
HJldHJpZXZhbCB3aXRoIGdldEVycm9ycygpLgoJICoKCSAqIEBwYXJhbQlzdHJpbmcJCSRtZXNzYWdlCUVy
cm9yIG1lc3NhZ2UgdG8gbG9nLgoJICogQHJldHVybgludWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gX2V
ycm9yKCAkbWVzc2FnZSApIHsKCQkkdGhpcy0+X2Vycm9yc1tdID0gJG1lc3NhZ2U7CgkJcGJfYmFja3VwYn
VkZHk6OnN0YXR1cyggJ2Vycm9yJywgJG1lc3NhZ2UgKTsKCQlyZXR1cm4gZmFsc2U7Cgl9CgoKCgkvKiBnZ
XRFcnJvcnMoKQoJICoKCSAqIEdldCBhbnkgZXJyb3JzIHdoaWNoIG1heSBoYXZlIG9jY3VycmVkLgoJICoK
CSAqIEByZXR1cm4JYXJyYXkgCQlSZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZyBlcnJvciBtZXNzYWdlcy4
KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldEVycm9ycygpIHsKCQlyZXR1cm4gJHRoaXMtPl9lcnJvcnM7Cg
l9IC8vIEVuZCBnZXRFcnJvcnMoKTsKCgoKCS8qIGdldFN0YXRlKCkKCSAqCgkgKiBHZXQgc3RhdGUgYXJyY
XkgZGF0YSBmb3IgcGFzc2luZyB0byB0aGUgY29uc3RydWN0b3IgZm9yIHN1YnNlcXVlbnQgY2FsbHMuCgkg
KgoJICogQHJldHVybglhcnJheSAJCVJldHVybnMgYW4gYXJyYXkgb2Ygc3RhdGUgZGF0YS4KCSAqLwoJcHV
ibGljIGZ1bmN0aW9uIGdldFN0YXRlKCkgewoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJy
wgJ0dldHRpbmcgcm9sbGJhY2sgc3RhdGUuJyApOwoJCXJldHVybiAkdGhpcy0+X3N0YXRlOwoJfSAvLyBFb
mQgZ2V0U3RhdGUoKS4KCgoKCS8qIHNldFN0YXRlKCkKCSAqCgkgKiBSZXBsYWNlIGN1cnJlbnQgc3RhdGUg
YXJyYXkgd2l0aCBwcm92aWRlZCBvbmUuCgkgKgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0U3RhdGUoICR
zdGF0ZURhdGEgKSB7CgkJJHRoaXMtPl9zdGF0ZSA9ICRzdGF0ZURhdGE7Cgl9IC8vIEVuZCBzZXRTdGF0ZS
gpLgoKCgoJLyogX2JlZm9yZSgpCgkgKgoJICogUnVucyBiZWZvcmUgZXZlcnkgZnVuY3Rpb24gdG8ga2Vlc
CB0cmFjayBvZiByYW4gZnVuY3Rpb25zIGluIHRoZSBzdGF0ZSBkYXRhIGZvciBkZWJ1Z2dpbmcuCgkgKgoJ
ICogQHJldHVybgludWxsCgkgKi8KCXByaXZhdGUgZnVuY3Rpb24gX2JlZm9yZSggJGZ1bmN0aW9uTmFtZSA
pIHsKCQkkdGhpcy0+X3N0YXRlWydzdGVwSGlzdG9yeSddW10gPSBhcnJheSgKCQkJJ2Z1bmN0aW9uJyA9Pi
AkZnVuY3Rpb25OYW1lLAoJCQknc3RhcnQnID0+IHRpbWUoKSwKCQkpOwoJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdkZXRhaWxzJywgJ1N0YXJ0aW5nIGZ1bmN0aW9uIGAnIC4gJGZ1bmN0aW9uTmFtZSAuICdgLicg
KTsKCQlyZXR1cm47Cgl9IC8vIEVuZCBfYmVmb3JlKCkuCgoKCgkvKglzaHV0ZG93bl9mdW5jdGlvbigpCiA
gICAgKgoJICoJVXNlZCBmb3IgY2F0Y2hpbmcgZmF0YWwgUEhQIGVycm9ycyBkdXJpbmcgYmFja3VwIHRvIH
dyaXRlIHRvIGxvZyBmb3IgZGVidWdnaW5nLgogICAgICoKCSAqCUByZXR1cm4JCW51bGwKCSAqLwoJcHVib
GljIGZ1bmN0aW9uIHNodXRkb3duX2Z1bmN0aW9uKCkgewoKCQkvLyBHZXQgZXJyb3IgbWVzc2FnZS4KCQkv
LyBFcnJvciB0eXBlczogaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2Vycm9yZnVuYy5jb25zdGFudHMucGh
wCgkJJGUgPSBlcnJvcl9nZXRfbGFzdCgpOwoJCWlmICggJGUgPT09IG51bGwgKSB7IC8vIE5vIGVycm9yIG
9mIGFueSBraW5kLgoJCQlyZXR1cm47CgkJfSBlbHNlIHsgLy8gU29tZSB0eXBlIG9mIGVycm9yLgoJCQlpZ
iAoICEgaXNfYXJyYXkoICRlICkgfHwgKCAkZVsndHlwZSddICE9IEVfRVJST1IgKSAmJiAoICRlWyd0eXBl
J10gIT0gRV9VU0VSX0VSUk9SICkgKSB7IC8vIFJldHVybiBpZiBub3QgYSBmYXRhbCBlcnJvci4KCQkJCXJ
ldHVybjsKCQkJfQoJCX0KCgkJJGVfc3RyaW5nID0gJyc7CgkJZm9yZWFjaCAoIChhcnJheSkgJGUgYXMgJG
VfbGluZV90aXRsZSA9PiAkZV9saW5lICkgewoJCQkkZV9zdHJpbmcgLj0gJGVfbGluZV90aXRsZSAuICcgP
T4gJyAuICRlX2xpbmUgLiAiXG4iOwoJCX0KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywg
J0ZBVEFMIFBIUCBFUlJPUjogJyAuICRlX3N0cmluZyApOwoKCX0gLy8gRW5kIHNodXRkb3duX2Z1bmN0aW9
uLgoKCgoJZnVuY3Rpb24gX2FycmF5X3JlcGxhY2VfcmVjdXJzaXZlKCAkYXJyYXksICRhcnJheTEgKSB7Cg
kJZnVuY3Rpb24gYmJfcmVjdXJzZSggJGFycmF5LCAkYXJyYXkxICkgewoJCQlmb3JlYWNoICggJGFycmF5M
SBhcyAka2V5ID0+ICR2YWx1ZSApIHsKCQkJCS8vIGNyZWF0ZSBuZXcga2V5IGluICRhcnJheSwgaWYgaXQg
aXMgZW1wdHkgb3Igbm90IGFuIGFycmF5CgkJCQlpZiAoICEgaXNzZXQoICRhcnJheVsgJGtleSBdICkgfHw
gKGlzc2V0KCAkYXJyYXlbICRrZXkgXSApICYmICEgaXNfYXJyYXkoICRhcnJheVsgJGtleSBdICkpICkgew
oJCQkJCSRhcnJheVsgJGtleSBdID0gYXJyYXkoKTsKCQkJCX0KCgkJCQkvLyBvdmVyd3JpdGUgdGhlIHZhb
HVlIGluIHRoZSBiYXNlIGFycmF5CgkJCQlpZiAoIGlzX2FycmF5KCAkdmFsdWUgKSApIHsKCQkJCQkkdmFs
dWUgPSBiYl9yZWN1cnNlKCAkYXJyYXlbICRrZXkgXSwgJHZhbHVlICk7CgkJCQl9CgkJCQkkYXJyYXlbICR
rZXkgXSA9ICR2YWx1ZTsKCQkJfQoJCQlyZXR1cm4gJGFycmF5OwoJCX0KCgkJLy8gaGFuZGxlIHRoZSBhcm
d1bWVudHMsIG1lcmdlIG9uZSBieSBvbmUKCQkkYXJncyA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCQkkYXJyYXkgP
SAkYXJnc1swXTsKCQlpZiAoICEgaXNfYXJyYXkoICRhcnJheSApICkgewoJCQlyZXR1cm4gJGFycmF5OwoJ
CX0KCQlmb3IgKCAkaSA9IDE7ICRpIDwgY291bnQoICRhcmdzICk7ICRpKysgKSB7CgkJCWlmICggaXNfYXJ
yYXkoICRhcmdzWyAkaSBdICkgKSB7CgkJCQkkYXJyYXkgPSBiYl9yZWN1cnNlKCAkYXJyYXksICRhcmdzWy
AkaSBdICk7CgkJCX0KCQl9CgkJcmV0dXJuICRhcnJheTsKCX0KCgoKfSAvLyBlbmQgY2xhc3MuCg==
###PACKDATA,FILE_END,/classes/restore.php,importbuddy/classes/restore.php
###PACKDATA,FILE_START,/classes/_restoreFiles.php,importbuddy/classes/_restoreFiles
.php
PD9waHAKY2xhc3MgYmFja3VwYnVkZHlfcmVzdG9yZV9maWxlcyB7CgoJLyogcmVzdG9yZSgpCgkgKgoJICo
gUmVzdG9yZSBvbmUgb3IgbW9yZSBmaWxlcyB0byBhIHBhdGguCgkgKgoJICogQHBhcmFtCSRhcmNoaXZlX2
ZpbGUJQmFja3VwIHppcCBhcmNoaXZlIGZpbGUgdG8gcmVzdG9yZSBmaWxlcyBmcm9tLgoJICogQHBhcmFtC
SRmaWxlcwkJCUFycmF5IG9mIGZpbGVzIHRvIHJlc3RvcmUuIEVhY2gga2V5IGFuZCB2YWx1ZSBtdXN0IGJl
IHRoZSBzYW1lLiBGb3JtYXQ6IGFycmF5KCAnZmlsZW5hbWUudHh0JyA9PiAnZmlsZW5hbWUudHh0JyApOwo
JICogQHBhcmFtCSRmaW5hbFBhdGgJCURlc3RpbmF0aW9uIHBhdGggdG8gZXh0cmFjdCBpbnRvLgoJICogQH
JldHVybglib29sCQkJVHJ1ZSBvbiBzdWNjZXNzLCBlbHNlIGZhbHNlLgoJICoKCSAqLwoJcHVibGljIHN0Y
XRpYyBmdW5jdGlvbiByZXN0b3JlKCAkYXJjaGl2ZV9maWxlLCAkZmlsZXMsICRmaW5hbFBhdGgsICYkemlw
YnVkZHkgPSBudWxsICkgewoJCWlmICggISBwYl9pc19zdGFuZGFsb25lKCkgKSB7CgkJCWlmICggISBjdXJ
yZW50X3VzZXJfY2FuKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3JvbGVfYWNjZXNzJ10gKSApIHsKCQ
kJCWRpZSggJ0Vycm9yICM0NzM2MjMuIEFjY2VzcyBEZW5pZWQuJyApOwoJCQl9CgkJfQoKCQkkc2VyaWFsI
D0gYmFja3VwYnVkZHlfY29yZTo6Z2V0X3NlcmlhbF9mcm9tX2ZpbGUoICRhcmNoaXZlX2ZpbGUgKTsgLy8g
c2VyaWFsIG9mIGFyY2hpdmUuCgkJJHN1Y2Nlc3MgPSBmYWxzZTsKCgkJZm9yZWFjaCggJGZpbGVzIGFzICR
maWxlICkgewoJCQkkZmlsZSA9IHN0cl9yZXBsYWNlKCAnKicsICcnLCAkZmlsZSApOyAvLyBSZW1vdmUgYW
55IHdpbGRjYXJkLgoJCQlpZiAoIGZpbGVfZXhpc3RzKCAkZmluYWxQYXRoIC4gJGZpbGUgKSAmJiBpc19ka
XIoICRmaW5hbFBhdGggLiAkZmlsZSApICkgewoJCQkJaWYgKCAoICRmaWxlX2NvdW50ID0gQHNjYW5kaXIo
ICRmaW5hbFBhdGggLiAkZmlsZSApICkgJiYgKCBjb3VudCggJGZpbGVfY291bnQgKSA+IDIgKSApIHsKCQk
JCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCBfXyggJ0Vycm9yICM5MDM2LiBUaGUgZGVzdG
luYXRpb24gZGlyZWN0b3J5IGJlaW5nIHJlc3RvcmVkIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBOT1QgZW1wd
HkuIFRoZSBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgcmVzdG9yZWQgdG8gcHJldmVudCBpbmFkdmVydGVudGx5
IGxvc2luZyBmaWxlcyB3aXRoaW4gdGhlIGV4aXN0aW5nIGRpcmVjdG9yeS4gRGVsZXRlIGV4aXN0aW5nIGR
pcmVjdG9yeSBmaXJzdCBpZiB5b3Ugd2lzaCB0byBwcm9jZWVkIG9yIHJlc3RvcmUgaW5kaXZpZHVhbCBmaW
xlcy4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICcgRXhpc3RpbmcgZGlyZWN0b3J5OiBgJyAuICRma
W5hbFBhdGggLiAkZmlsZSAuICdgLicgKTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCQl9CgoK
CQlpZiAoIG51bGwgPT09ICR6aXBidWRkeSApIHsKCQkJcmVxdWlyZV9vbmNlKCBwYl9iYWNrdXBidWRkeTo
6cGx1Z2luX3BhdGgoKSAuICcvbGliL3ppcGJ1ZGR5L3ppcGJ1ZGR5LnBocCcgKTsKCQkJJHppcGJ1ZGR5ID
0gbmV3IHBsdWdpbmJ1ZGR5X3ppcGJ1ZGR5KCBiYWNrdXBidWRkeV9jb3JlOjpnZXRCYWNrdXBEaXJlY3Rvc
nkoKSApOwoJCX0KCgoJCS8vIENhbGN1bGF0ZSB0ZW1wIGRpcmVjdG9yeSAmIGxvY2sgaXQgZG93bi4KCQkk
dGVtcF9kaXIgPSBnZXRfdGVtcF9kaXIoKTsKCQkkZGVzdGluYXRpb24gPSAkdGVtcF9kaXIgLiAnYmFja3V
wYnVkZHktJyAuICRzZXJpYWw7CgkJaWYgKCAoICggISBmaWxlX2V4aXN0cyggJGRlc3RpbmF0aW9uICkgKS
AmJiAoIGZhbHNlID09PSBta2RpciggJGRlc3RpbmF0aW9uLCAwNzc3LCB0cnVlICkgKSApICkgewoJCQkkZ
XJyb3IgPSAnRXJyb3IgIzQ1ODQ4NTk0NTogVW5hYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgbG9jYXRpb24g
YCcgLiAkZGVzdGluYXRpb24gLiAnYC4gQ2hlY2sgcGVybWlzc2lvbnMuJzsKCQkJcGJfYmFja3VwYnVkZHk
6OnN0YXR1cyggJ2Vycm9yJywgJGVycm9yICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoKCQkvLyBJZiB0ZW
1wIGRpcmVjdG9yeSBpcyB3aXRoaW4gd2Vicm9vdCB0aGVuIGxvY2sgaXQgZG93bi4KCQkkdGVtcF9kaXIgP
SBzdHJfcmVwbGFjZSggJ1xcJywgJy8nLCAkdGVtcF9kaXIgKTsgLy8gTm9ybWFsaXplIGZvciBXaW5kb3dz
LgoJCSR0ZW1wX2RpciA9IHJ0cmltKCAkdGVtcF9kaXIsICcvXFwnICkgLiAnLyc7IC8vIEVuZm9yY2Ugc2l
uZ2xlIHRyYWlsaW5nIHNsYXNoLgoJCWlmICggRkFMU0UgIT09IHN0cmlzdHIoICR0ZW1wX2RpciwgQUJTUE
FUSCApICkgeyAvLyBUZW1wIGRpciBpcyB3aXRoaW4gd2Vicm9vdC4KCQkJcGJfYmFja3VwYnVkZHk6OmFud
GlfZGlyZWN0b3J5X2Jyb3dzaW5nKCAkZGVzdGluYXRpb24gKTsKCQl9CgkJdW5zZXQoICR0ZW1wX2RpciAp
OwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0V4dHJhY3RpbmcgaW50byB0ZW1wb3J
hcnkgZGlyZWN0b3J5ICInIC4gJGRlc3RpbmF0aW9uIC4gJyIuJyApOwoKCQkkcHJldHR5RmlsZXNMaXN0ID
0gYXJyYXkoKTsKCQlmb3JlYWNoKCAkZmlsZXMgYXMgJGZpbGVTb3VyY2UgPT4gJGZpbGVEZXN0aW5hdGlvb
iApIHsKCQkJJHByZXR0eUZpbGVzTGlzdFtdID0gJGZpbGVTb3VyY2UgLiAnID0+ICcgLiAkZmlsZURlc3Rp
bmF0aW9uOwoJCX0KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGaWxlcyB0byBleHR
yYWN0OiBgJyAuIGh0bWxlbnRpdGllcyggaW1wbG9kZSggJywgJywgJHByZXR0eUZpbGVzTGlzdCApICkgLi
AnYC4nICk7CgkJdW5zZXQoICRwcmV0dHlGaWxlc0xpc3QgKTsKCgkJcGJfYmFja3VwYnVkZHk6OmZsdXNoK
Ck7CgoJCS8vIERvIHRoZSBhY3R1YWwgZXh0cmFjdGlvbi4KCQkkZXh0cmFjdF9zdWNjZXNzID0gdHJ1ZTsK
CQlpZiAoIGZhbHNlID09PSAkemlwYnVkZHktPmV4dHJhY3QoICRhcmNoaXZlX2ZpbGUsICRkZXN0aW5hdGl
vbiwgJGZpbGVzICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjNT
g0OTg0NDU4Yi4gVW5hYmxlIHRvIGV4dHJhY3QuJyApOwoJCQkkZXh0cmFjdF9zdWNjZXNzID0gZmFsc2U7C
gkJfQoKCQlpZiAoIHRydWUgPT09ICRleHRyYWN0X3N1Y2Nlc3MgKSB7CgoJCQkvLyBWZXJpZnkgYWxsIGZp
bGVzL2RpcmVjdG9yaWVzIHRvIGJlIGV4dHJhY3RlZCBleGlzdCBpbiB0ZW1wIGRlc3RpbmF0aW9uIGRpcmV
jdG9yeS4gSWYgYW55IG1pc3NpbmcgdGhlbiBkZWxldGUgZXZlcnl0aGluZyBhbmQgYmFpbCBvdXQuCgkJCW
ZvcmVhY2goICRmaWxlcyBhcyAmJGZpbGUgKSB7CgkJCQkkZmlsZSA9IHN0cl9yZXBsYWNlKCAnKicsICcnL
CAkZmlsZSApOyAvLyBSZW1vdmUgYW55IHdpbGRjYXJkLgoJCQkJaWYgKCAhIGZpbGVfZXhpc3RzKCAkZGVz
dGluYXRpb24gLiAnLycgLiAkZmlsZSApICkgewoJCQkJCS8vIENsZWFudXAuCgkJCQkJZm9yZWFjaCggJGZ
pbGVzIGFzICRmaWxlICkgewoJCQkJCQlAdHJpZ2dlcl9lcnJvciggJycgKTsgLy8gQ2xlYXIgb3V0IGxhc3
QgZXJyb3IuCgkJCQkJCUB1bmxpbmsoICRkZXN0aW5hdGlvbiAuICcvJyAuICRmaWxlKTsKCQkJCQkJJGxhc
3RfZXJyb3IgPSBlcnJvcl9nZXRfbGFzdCgpOwoJCQkJCQlpZiAoIGlzX2FycmF5KCAkbGFzdF9lcnJvciAp
ICkgewoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJGxhc3RfZXJyb3JbJ21lc3N
hZ2UnXSAuICcgRmlsZTogYCcgLiAkbGFzdF9lcnJvclsnZmlsZSddIC4gJ2AuIExpbmU6IGAnIC4gJGxhc3
RfZXJyb3JbJ2xpbmUnXSAuICdgLicgKTsKCQkJCQkJfQoJCQkJCX0KCQkJCQlwYl9iYWNrdXBidWRkeTo6c
3RhdHVzKCAnZXJyb3InLCAnRXJyb3IgIzg1NDc4MzQ3NC4gT25lIG9yIG1vcmUgZXhwZWN0ZWQgZmlsZXMg
LyBkaXJlY3RvcmllcyBtaXNzaW5nLicgKTsKCgkJCQkJJGV4dHJhY3Rfc3VjY2VzcyA9IGZhbHNlOwoJCQk
JCWJyZWFrOwoJCQkJfQoJCQl9CgkJCXVuc2V0KCAkZmlsZSApOwoKCQkJLy8gTWFkZSBpdCB0aGlzIGZhci
BzbyBmaWxlcyBhbGwgZXhpc3QuIE1vdmUgdGhlbSBhbGwuCgkJCWZvcmVhY2goICRmaWxlcyBhcyAkZmlsZ
SApIHsKCQkJCUB0cmlnZ2VyX2Vycm9yKCAnJyApOyAvLyBDbGVhciBvdXQgbGFzdCBlcnJvci4KCQkJCWlm
ICggZmFsc2UgPT09IHBiX2JhY2t1cGJ1ZGR5OjokZmlsZXN5c3RlbS0+cmVjdXJzaXZlX2NvcHkoICRkZXN
0aW5hdGlvbiAuICcvJyAuICRmaWxlLCAkZmluYWxQYXRoIC4gJGZpbGUgKSApIHsKCQkJCQkkbGFzdF9lcn
JvciA9IGVycm9yX2dldF9sYXN0KCk7CgkJCQkJaWYgKCBpc19hcnJheSggJGxhc3RfZXJyb3IgKSApIHsKC
QkJCQkJLy9wcmludF9yKCAkbGFzdF9lcnJvciApOwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
ZXJyb3InLCAkbGFzdF9lcnJvclsnbWVzc2FnZSddIC4gJyBGaWxlOiBgJyAuICRsYXN0X2Vycm9yWydmaWx
lJ10gLiAnYC4gTGluZTogYCcgLiAkbGFzdF9lcnJvclsnbGluZSddIC4gJ2AuJyApOwoJCQkJCX0KCQkJCQ
kkZXJyb3IgPSAnRXJyb3IgIzkwMzUuIFVuYWJsZSB0byBjb3B5cmVzdG9yZWQgZmlsZSBgJyAuICRkZXN0a
W5hdGlvbiAuICcvJyAuICRmaWxlIC4gJ2AgdG8gYCcgLiAkZmluYWxQYXRoIC4gJGZpbGUgLiAnYC4gVmVy
aWZ5IHBlcm1pc3Npb25zIG9uIGRlc3RpbmF0aW9uIGxvY2F0aW9uICYgdGhhdCB0aGUgZGVzdGluYXRpb24
gZGlyZWN0b3J5L2ZpbGUgZG9lcyBub3QgYWxyZWFkeSBleGlzdC4nOwoJCQkJCXBiX2JhY2t1cGJ1ZGR5Oj
pzdGF0dXMoICdlcnJvcicsICRlcnJvciApOwoJCQkJfSBlbHNlIHsKCQkJCQkkZGV0YWlscyA9ICdSZWN1c
nNpdmVseSBtb3ZlZCBgJyAuICRkZXN0aW5hdGlvbiAuICcvJyAuICRmaWxlIC4gJ2AgdG8gYCcgLiAkZmlu
YWxQYXRoIC4gJGZpbGUgLiAnYC48YnI+JzsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWl
scycsICRkZXRhaWxzICk7CgkJCQkJJHN1Y2Nlc3MgPSB0cnVlOwoJCQkJfQoJCQl9CgoJCX0gLy8gZW5kIG
V4dHJhY3Qgc3VjY2Vzcy4KCgoJCS8vIFRyeSB0byBjbGVhbnVwLgoJCWlmICggZmlsZV9leGlzdHMoICRkZ
XN0aW5hdGlvbiApICkgewoJCQlpZiAoIGZhbHNlID09PSBwYl9iYWNrdXBidWRkeTo6JGZpbGVzeXN0ZW0t
PnVubGlua19yZWN1cnNpdmUoICRkZXN0aW5hdGlvbiApICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR
1cyggJ2RldGFpbHMnLCAnVW5hYmxlIHRvIGRlbGV0ZSB0ZW1wb3JhcnkgaG9sZGluZyBkaXJlY3RvcnkgYC
cgLiAkZGVzdGluYXRpb24gLiAnYC4nICk7CgkJCX0gZWxzZSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3Rhd
HVzKCAnZGV0YWlscycsICdDbGVhbmVkIHVwIHRlbXBvcmFyeSBmaWxlcy4nICk7CgkJCX0KCQl9CgoKCQlp
ZiAoIHRydWUgPT09ICRzdWNjZXNzICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZSc
sICdGaWxlIHJldHJpZXZhbCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LicgKTsKCQkJcmV0dXJuIHRydWU7Cg
kJfSBlbHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgl9IC8vIEVuZCBmdW5jdGlvbiByZXN0b3JlKCkuC
gp9IC8vIEVuZCBjbGFzcy4=
###PACKDATA,FILE_END,/classes/_restoreFiles.php,importbuddy/classes/_restoreFiles.p
hp
###PACKDATA,FILE_START,/classes/remote_api.php,importbuddy/classes/remote_api.php
PD9waHAKcmVxdWlyZV9vbmNlKCBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvY2xhc3Nlcy9
jb3JlLnBocCcgKTsKCgpjbGFzcyBiYWNrdXBidWRkeV9yZW1vdGVfYXBpIHsKCQoJcHJpdmF0ZSBzdGF0aW
MgJF9lcnJvcnMgPSBhcnJheSgpOwkJLy8gSG9sZCBlcnJvciBzdHJpbmdzIHRvIHJldHJpZXZlIHdpdGggZ
2V0RXJyb3JzKCkuCglwcml2YXRlIHN0YXRpYyAkX2luY29taW5nUGF5bG9hZCA9ICcnOwoJCglwdWJsaWMg
c3RhdGljIGZ1bmN0aW9uIGxvY2FsQ2FsbCggJGtleVNldCA9IGZhbHNlLCAkaW1wb3J0YnVkZHkgPSBmYWx
zZSApIHsKCQlpZiAoIHRydWUgIT09ICRrZXlTZXQgKSB7CgkJCWRpZSggJzxodG1sPjQwMyBBY2Nlc3MgRG
VuaWVkPC9odG1sPicgKTsKCQl9CgkJCgkJcmVnaXN0ZXJfc2h1dGRvd25fZnVuY3Rpb24oIGFycmF5KCAnY
mFja3VwYnVkZHlfcmVtb3RlX2FwaScsICdzaHV0ZG93bl9mdW5jdGlvbicgKSApOwoJCQoJCWhlYWRlcigg
J0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyApOwoJCQoJCWlmICggdHJ1ZSAhPT0
gc2VsZjo6aW5pdF9pbmNvbWluZ19jYWxsKCkgKSB7CgkJCSRtZXNzYWdlID0gJ0Vycm9yICM4MDAyOiBFcn
JvciB2YWxpZGF0aW5nIEFQSSBjYWxsIGF1dGhlbnRpY2l0eS4gVmVyaWZ5IHlvdSBhcmUgdXNpbmcgdGhlI
GNvcnJlY3QgYWN0aXZlIEFQSSBrZXkuJzsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywg
JG1lc3NhZ2UgKTsKCQkJc2VsZjo6X3JlcGx5KCBhcnJheSggJ3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3I
nID0+ICRtZXNzYWdlICkgKTsKCQl9CgkJCgkJLy8gSWYgaGVyZSB0aGVuIHZhbGlkYXRpb24gd2FzIGFsbC
Bnb29kLiBBUEkgY2FsbCBpcyBhdXRob3JpemVkLgoJCQoJCWlmICggdHJ1ZSAhPT0gJGltcG9ydGJ1ZGR5I
CkgewoJCQkkZnVuY3Rpb25OYW1lID0gJ192ZXJiXycgLiBiYWNrdXBidWRkeV9jb3JlOjpnZXRIdHRwSGVh
ZGVyKCAnYmFja3VwYnVkZHktdmVyYicgKTsKCQl9IGVsc2UgewoJCQkkZnVuY3Rpb25OYW1lID0gJ192ZXJ
iX2ltcG9ydGJ1ZGR5XycgLiBiYWNrdXBidWRkeV9jb3JlOjpnZXRIdHRwSGVhZGVyKCAnYmFja3VwYnVkZH
ktdmVyYicgKTsKCQl9CgkJCgkJLy8gRG9lcyB2ZXJiIGV4aXN0PwoJCWlmICggZmFsc2UgPT09IG1ldGhvZ
F9leGlzdHMoICdiYWNrdXBidWRkeV9yZW1vdGVfYXBpJywgJGZ1bmN0aW9uTmFtZSApICkgewoJCQkkbWVz
c2FnZSA9ICdFcnJvciAjODQzNDg5OTc0OiBVbmtub3duIHZlcmIgYCcgLiBiYWNrdXBidWRkeV9jb3JlOjp
nZXRIdHRwSGVhZGVyKCAnYmFja3VwYnVkZHktdmVyYicgKSAuICdgLic7CgkJCXBiX2JhY2t1cGJ1ZGR5Oj
pzdGF0dXMoICdlcnJvcicsICRtZXNzYWdlICk7CgkJCXNlbGY6Ol9yZXBseSggYXJyYXkoICdzdWNjZXNzJ
yA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAkbWVzc2FnZSApICk7CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVk
ZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQ2FsbGluZyBpbmNvbWluZyBBUEkgZnVuY3Rpb24gYCcgLiAkZnV
uY3Rpb25OYW1lIC4gJ2AuJyApOwoJCQljYWxsX3VzZXJfZnVuY19hcnJheSggJ2JhY2t1cGJ1ZGR5X3JlbW
90ZV9hcGk6OicgLiAkZnVuY3Rpb25OYW1lLCBhcnJheSgpICk7CgkJfQoJCQoJCS8vIENsZWFudXAKCQlzZ
WxmOjokX2luY29taW5nUGF5bG9hZCA9ICcnOwoKCQkvLyBmdW5jdGlvbjogdmVyYl9bVkVSQkhFUkVdCgl9
CgkKCQoJCgkvKglzaHV0ZG93bl9mdW5jdGlvbigpCgkgKgkKCSAqCVVzZWQgZm9yIGNhdGNoaW5nIGZhdGF
sIFBIUCBlcnJvcnMgZHVyaW5nIGJhY2t1cCB0byB3cml0ZSB0byBsb2cgZm9yIGRlYnVnZ2luZy4KCSAqCQ
oJICoJQHJldHVybgkJbnVsbAoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHNodXRkb3duX2Z1bmN0a
W9uKCkgewoJCQoJCQoJCS8vIEdldCBlcnJvciBtZXNzYWdlLgoJCS8vIEVycm9yIHR5cGVzOiBodHRwOi8v
cGhwLm5ldC9tYW51YWwvZW4vZXJyb3JmdW5jLmNvbnN0YW50cy5waHAKCQkkZSA9IGVycm9yX2dldF9sYXN
0KCk7CgkJaWYgKCAkZSA9PT0gTlVMTCApIHsgLy8gTm8gZXJyb3Igb2YgYW55IGtpbmQuCgkJCXJldHVybj
sKCQl9IGVsc2UgeyAvLyBTb21lIHR5cGUgb2YgZXJyb3IuCgkJCWlmICggIWlzX2FycmF5KCAkZSApIHx8I
CggJGVbJ3R5cGUnXSAhPSBFX0VSUk9SICkgJiYgKCAkZVsndHlwZSddICE9IEVfVVNFUl9FUlJPUiApICkg
eyAvLyBSZXR1cm4gaWYgbm90IGEgZmF0YWwgZXJyb3IuCgkJCQlyZXR1cm47CgkJCX0KCQl9CgkJCgkJCgk
JLy8gQ2FsY3VsYXRlIGxvZyBkaXJlY3RvcnkuCgkJJGxvZ19kaXJlY3RvcnkgPSBiYWNrdXBidWRkeV9jb3
JlOjpnZXRMb2dEaXJlY3RvcnkoKTsKCQkkbWFpbl9maWxlID0gJGxvZ19kaXJlY3RvcnkgLiAnbG9nLScgL
iBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2xvZ19zZXJpYWwnXSAuICcudHh0JzsKCQkKCQkKCQkvLyBE
ZXRlcm1pbmUgaWYgd3JpdGluZyB0byBhIHNlcmlhbCBsb2cuCgkJaWYgKCBwYl9iYWNrdXBidWRkeTo6JF9
zdGF0dXNfc2VyaWFsICE9ICcnICkgewoJCQkkc2VyaWFsID0gcGJfYmFja3VwYnVkZHk6OiRfc3RhdHVzX3
NlcmlhbDsKCQkJJHNlcmlhbF9maWxlID0gJGxvZ19kaXJlY3RvcnkgLiAnc3RhdHVzLScgLiAkc2VyaWFsI
C4gJ18nIC4gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydsb2dfc2VyaWFsJ10gLiAnLnR4dCc7CgkJCSR3
cml0ZV9zZXJpYWwgPSB0cnVlOwoJCX0gZWxzZSB7CgkJCSR3cml0ZV9zZXJpYWwgPSBmYWxzZTsKCQl9Cgk
JCgkJCgkJLy8gRm9ybWF0IGVycm9yIG1lc3NhZ2UuCgkJJGVfc3RyaW5nID0gJ1BIUF9FUlJPUiAnIC4gX1
8oICdFcnJvciAjMzI4OTMuIEZhdGFsIFBIUCBlcnJvciBlbmNvdW50ZXJlZDonLCAnaXQtbDEwbi1iYWNrd
XBidWRkeScgKTsKCQlmb3JlYWNoKCAoYXJyYXkpJGUgYXMgJGVfbGluZV90aXRsZSA9PiAkZV9saW5lICkg
ewoJCQkkZV9zdHJpbmcgLj0gJGVfbGluZV90aXRsZSAuICcgPT4gJyAuICRlX2xpbmUgLiAiOyAiOwoJCX0
KCQkkZV9zdHJpbmcgLj0gIi5cbiI7CgkJCgkJCgkJLy8gV3JpdGUgdG8gbG9nLgoJCUBmaWxlX3B1dF9jb2
50ZW50cyggJG1haW5fZmlsZSwgJGVfc3RyaW5nLCBGSUxFX0FQUEVORCApOwoJCWlmICggJHdyaXRlX3Nlc
mlhbCA9PT0gdHJ1ZSApIHsKCQkJQGZpbGVfcHV0X2NvbnRlbnRzKCAkc2VyaWFsX2ZpbGUsICRlX3N0cmlu
ZywgRklMRV9BUFBFTkQgKTsKCQl9CgkJCgkJCgl9IC8vIEVuZCBzaHV0ZG93bl9mdW5jdGlvbi4KCQoJCgk
KCS8qIHJlbW90ZUNhbGwoKQoJICoKCSAqIFNlbmQgYW4gQVBJIGNhbGwgdG8gYSByZW1vdGUgc2VydmVyLg
oJICogQHBhcmFtCWFycmF5IAkkcmVtb3RlQVBJCQlSZW1vdGUgQVBJIHN0YXRlIGFycmF5IGluY2x1ZGluZ
yBVUkwsIGV0Yy4gU3RvcmVkIGluIGRlc3RpbmF0aW9uIHNldHRpbmdzLgoJICogQHBhcmFtCXN0cmluZwkk
dmVyYgkJCUFQSSB2ZXJiIHRvIGNhbGwgb24gcmVtb3RlIHNlcnZlci4KCSAqIEBwYXJhbQlhcnJheSAJJG1
vcmVQYXJhbXMJCU9wdGlvbmFsOiBBZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8gYXBwZW5kIHRvIHRob3NlIH
NlbnQuICBJZiBuZWVkaW5nIHRvIHNlbmQgYSBub24tc3RyaW5nIHRoaXMgc2hvdWxkIGJlIGVuY29kZWQga
W4gc29tZSBtYW5uZXIgYW5kIGRlY29kZWQgb24gcmVtb3RlLgoJICogQHBhcmFtCWludAkJJHRpbWVvdXQJ
CU9wdGlvbmFsOiBIb3cgbG9uZyB3ZSBleHBlY3QgdGhpcyBjYW4gbGFzdCBiZWZvcmUgYSBzZXJ2ZXIgdGl
tZXMgb3V0LiAgVHlwaWNhbGx5IHRoZSBtaW5pbXVtIG9mIHRoZSBsb2NhbCBhbmQgcmVtb3RlIHRpbWVvdX
RzLgoJICogQHBhcmFtCXN0cmluZwkkZmlsZQkJCU9wdGlvbmFsOiBGaWxlIHdlIGFyZSBzZW5kaW5nLiBUa
GlzIGlzIHBhc3NlZCBzbyB0aGF0IHZhcmlvdXMgQ1JDIGRhdGEgY2FuIGJlIGNhbGN1bGF0ZWQuCgkgKiBA
cGFyYW0Jc3RyaW5nCSRmaWxlRGF0YQkJT3B0aW9uYWw6IFJhdyBmaWxlIGNvbnRlbnRzIHRvIHNlbmQgKGZ
vciB0aGlzIGNodW5rIGlmIHVzaW5nIGNodW5raW5nKS4gRCB1c3RpbiBCIG9sdG9uCgkgKiBAcGFyYW0JaW
50CQkkc2Vla1RvCQkJT3B0aW9uYWw6IExvY2F0aW9uIHRvIGZzZWVrIHRvIGluIHRoZSBmaWxlIGZvciB3c
ml0aW5nLgoJICogQHBhcmFtCWJvb2wJJGlzRmlsZVRlc3QJCU9wdGlvbmFsOiBXaGVuIHRydWUgdGhlIGRl
c3RpbmF0aW9uIHdpbGwgYXV0by1kZWxldGUgdGhlIGZpbGUgYWZ0ZXIgdGVzdGluZy4KCSAqIEBwYXJhbQl
ib29sCSRpc0ZpbGVEb25lCQlPcHRpb25hbDogUGFzcyB0cnVlIHdoZW4gdGhlIGxhc3QgY2h1bmsgKG9yIG
9ubHkgY2h1bmspIG9mIHRoZSBmaWxlIGlzIGJlaW5nIHNlbnQgc28gZGVzdGluYXRpb24ga25vd3Mgbm90I
HRvIGV4cGVjdCBhbnkgb3RoZXIgcGllY2VzLgoJICogQHBhcmFtCWludAkJJGZpbGVTaXplCQlPcHRpb25h
bDogU2l6ZSBvZiB0aGUgZmlsZSBzZW5kaW5nLgoJICogQHBhcmFtCXN0cmluZwkkZmlsZVBhdGgJCU9wdGl
vbmFsOiBSZW1vdGUgZmlsZSBwYXRoIGluIHJlbGF0aW9uIHRvIHRoZSByb290IGxvY2F0aW9uIHdoZXJlIH
RoZSBmaWxlIGlzIGJlaW5nIHN0b3JlZCwgYmFzZWQgb24gZmlsZSB0eXBlIChiYXNlZCBvbiB2ZXJiKS4KC
SAqIEBwYXJhbQlib29sCSRyZXR1cm5SYXcJCVdoZW4gdHJ1ZSByZXR1cm5zIGJvZHkgcmF3IHRleHQvZGF0
YSByYXRoZXIgdGhhbiBkZWNvZGluZyBlbmNvZGVkIGRhdGEgZmlyc3QuCgkgKgoJICovCglwdWJsaWMgc3R
hdGljIGZ1bmN0aW9uIHJlbW90ZUNhbGwoICRyZW1vdGVBUEksICR2ZXJiLCAkbW9yZVBhcmFtcyA9IGFycm
F5KCksICR0aW1lb3V0LCAkZmlsZXMgPSBhcnJheSgpLCAkcmV0dXJuUmF3ID0gZmFsc2UgKSB7CgkJcGJfY
mFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUHJlcGFyaW5nIHJlbW90ZSBBUEkgY2FsbCB2ZXJi
IGAnIC4gJHZlcmIgLiAnYC4nICk7CgkJJG5vdyA9IHRpbWUoKTsKCQkKCQkkYm9keSA9IGFycmF5KCk7Cgk
JCgkJaWYgKCAhIGlzX251bWVyaWMoICR0aW1lb3V0ICkgKSB7CgkJCSR0aW1lb3V0ID0gYmFja3VwYnVkZH
lfY29uc3RhbnRzOjpERVBMT1lNRU5UX1JFTU9URV9BUElfREVGQVVMVF9USU1FT1VUOwoJCX0KCQlwYl9iY
WNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdyZW1vdGVDYWxsKCkgSFRUUCB3YWl0IHRpbWVvdXQ6
IGAnIC4gJHRpbWVvdXQgLiAnYCBzZWNvbmRzLicgKTsKCQkKCQkkZGVmYXVsdEZpbGUgPSBhcnJheSgKCQk
JJ2ZpbGUnICAgID0+ICcnLAoJCQknc2l6ZScgICAgPT4gJycsCgkJCSdzZWVrdG8nICA9PiAnJywKCQkJJ2
RvbmUnICAgID0+IGZhbHNlLAoJCQkndGVzdCcgICAgPT4gZmFsc2UsCgkJCSdlbmNvZGVkJyA9PiBmYWxzZ
SwKCQkJJ2RhdGFsZW4nID0+IDAsCgkJCSdkYXRhJyAgICA9PiAnJywKCQkpOwoJCQoJCS8vIEFwcGx5IGRl
ZmF1bHRzIGZvciBlYWNoIGZpbGUuCgkJZm9yZWFjaCggJGZpbGVzIGFzICYkZmlsZSApIHsKCQkJJGZpbGU
gPSBhcnJheV9tZXJnZSggJGRlZmF1bHRGaWxlLCAkZmlsZSApOwoJCX0KCQkKCQkkYm9keVsnZmlsZXMnXS
A9ICRmaWxlczsKCgkJaWYgKCAhIGlzX2FycmF5KCAkbW9yZVBhcmFtcyApICkgewoJCQllcnJvcl9sb2coI
CdCYWNrdXBCdWRkeSBFcnJvciAjNDg5Mzc4MzQ0NyByZW1vdGVfYXBpLnBocDsgJG1vcmVQYXJhbXMgbXVz
dCBiZSBwYXNzZWQgYXMgYXJyYXkuJyApOwoJCX0KCQkkYm9keSA9IHNlcmlhbGl6ZSggYXJyYXlfbWVyZ2U
oICRib2R5LCAkbW9yZVBhcmFtcyApICk7CgkJCgkJLy9wcmludF9yKCAkYXBpS2V5ICk7CgkJJHNpZ25hdH
VyZSA9IG1kNSggJG5vdyAuICR2ZXJiIC4gJHJlbW90ZUFQSVsna2V5X3B1YmxpYyddIC4gJHJlbW90ZUFQS
Vsna2V5X3NlY3JldCddIC4gJGJvZHkgKTsKCQkKCQlpZiAoIGRlZmluZWQoICdCQUNLVVBCVUREWV9ERVYn
ICkgJiYgKCB0cnVlID09PSBCQUNLVVBCVUREWV9ERVYgKSApIHsKCQkJZXJyb3JfbG9nKCAnQkFDS1VQQlV
ERFlfREVWLXJlbW90ZSBhcGkgaHR0cCBib2R5IFNFTkQtICcgLiBwcmludF9yKCAkYm9keSwgdHJ1ZSApIC
k7CgkJfQoJCQoJCSRzc2x2ZXJpZnkgPSB0cnVlOwoJCWlmICggJzAnID09IHBiX2JhY2t1cGJ1ZGR5Ojokb
3B0aW9uc1snZGVwbG95X3NzbHZlcmlmeSddICkgewoJCQkkc3NsdmVyaWZ5ID0gZmFsc2U7CgkJCXBiX2Jh
Y2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1NraXBwaW5nIFNTTCBjZXJ0IHZlcmlmaWNhdGlvbiB
iYXNlZCBvbiBhZHZhbmNlZCBzZXR0aW5ncy4nICk7CgkJfQoJCQoJCS8vZXJyb3JfbG9nKCAnY29ubmVjdF
RvOiAnIC4gJHJlbW90ZUFQSVsnc2l0ZXVybCddICk7CgkJJHJlc3BvbnNlID0gd3BfcmVtb3RlX3Bvc3QoI
HJ0cmltKCAkcmVtb3RlQVBJWydzaXRldXJsJ10sICcvJyApIC4gJy8nLCBhcnJheSgKCQkJCSdtZXRob2Qn
ID0+ICdQT1NUJywKCQkJCSd0aW1lb3V0JyA9PiAoICR0aW1lb3V0IC0gMiApLAoJCQkJJ3JlZGlyZWN0aW9
uJyA9PiAwLCAvLyBSZWRpcmVjdCB3aWxsIG5vdCB3b3JrIHNpbmNlIHdlIGFyZSBwYXNzaW5nIGhlYWRlcn
MuCgkJCQknaHR0cHZlcnNpb24nID0+ICcxLjAnLAoJCQkJJ2Jsb2NraW5nJyA9PiB0cnVlLAoJCQkJJ3Nzb
HZlcmlmeScgPT4gJHNzbHZlcmlmeSwKCQkJCSdoZWFkZXJzJyA9PiBhcnJheSgKCQkJCQkJJ1JlZmVyZXIn
ID0+ICRyZW1vdGVBUElbJ3NpdGV1cmwnXSAuICcvVEFDT1MnLAoJCQkJCQknQ29udGVudC1UeXBlJyA9PiA
nYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtL01PTktFWVMnLCAvLyBiaW5hcnkKCQkJCQkJJ2JhY2t1cGJ1ZG
R5LWFwaS1rZXknID0+ICRyZW1vdGVBUElbJ2tleV9wdWJsaWMnXSwKCQkJCQkJJ2JhY2t1cGJ1ZGR5LXZlc
nNpb24nID0+IHBiX2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3ZlcnNpb24nICksCgkJCQkJCSdiYWNrdXBi
dWRkeS12ZXJiJyA9PiAkdmVyYiwKCQkJCQkJJ2JhY2t1cGJ1ZGR5LW5vdycgPT4gJG5vdywKCQkJCQkJJ2J
hY2t1cGJ1ZGR5LXNpZ25hdHVyZScgPT4gJHNpZ25hdHVyZSwKCQkJCQkpLCAvLyBTZW5kaW5nIHJlZmVyZX
IgaGVhZGVyIGhlbHBzIHByZXZlbnQgc2VjdXJpdHkgYmxvY2tzLgoJCQkJJ2JvZHknID0+ICRib2R5LCAvL
yBJTVBPUlRBTlQ6IEFMV0FZUyBmb3Igc2VjdXJpdHkgdmVyaWZ5IHNpZ25hdHVyZSBwcmlvciB0byBldmVy
IHVuc2VyaWFsaXppbmcgYW55IGluY29taW5nIGRhdGEuCgkJCQknY29va2llcycgPT4gYXJyYXkoKQoJCQk
pCgkJKTsKCQkKCQlpZiAoIGlzX3dwX2Vycm9yKCAkcmVzcG9uc2UgKSApIHsKCQkJcmV0dXJuIHNlbGY6Ol
9lcnJvciggJ0Vycm9yICM5MDM3OiBVbmFibGUgdG8gY29ubmVjdCB0byByZW1vdGUgc2VydmVyIG9yIHVuZ
XhwZWN0ZWQgcmVzcG9uc2UuIERldGFpbHM6IGAnIC4gJHJlc3BvbnNlLT5nZXRfZXJyb3JfbWVzc2FnZSgp
IC4gJ2AgLSBTaXRlIFVSTDogYCcgLiAkcmVtb3R
lQVBJWydzaXRldXJsJ10gLiAnYCwgSG9tZSBVUkw6IGAnIC4gJHJlbW90ZUFQSVsnaG9tZXVybCddIC4gJ2
AuJyApOwoJCX0gZWxzZSB7CgkJCWlmICggdHJ1ZSA9PT0gJHJldHVyblJhdyApIHsKCQkJCXJldHVybiAkc
mVzcG9uc2VbJ2JvZHknXTsKCQkJfQoJCQkvL2Vycm9yX2xvZyggJzMzMzNSZXNwb25zZTogJyAuICRyZXNw
b25zZVsnYm9keSddICk7CgkJCQoJCQlpZiAoIGZhbHNlICE9PSBzdHJpcG9zKCAkcmVzcG9uc2VbJ2JvZHk
nXSwgJ1JlcXVlc3QgRW50aXR5IFRvbyBMYXJnZScgKSApIHsKCQkJCXJldHVybiBzZWxmOjpfZXJyb3IoIC
dFcnJvciAjODAwMWI6IFJlcXVlc3QgRW50aXR5IFRvbyBMYXJnZS4gVGhlIGRlc3RpbmF0aW9uIHNlcnZlc
iBzYXlzIHdlIHNlbnQgdG9vIG11Y2ggZGF0YS4gRWl0aGVyIGNoYW5nZSB0aGUgRGVwbG95bWVudCBBZHZh
bmNlZCBTZXR0aW5nICJNYXggQ2h1bmsgU2l6ZSIgdG8gYSBsb3dlciB2YWx1ZSBvciBjaGFuZ2UgdGhlIHN
lcnZlciBjb25maWd1cmF0aW9uIHRvIGFjY2VwdCBhIGxhcmdlciB2YWx1ZS4gU2VlIHRoZSBmb2xsb3dpbm
cgd2VicGFnZSBmb3IgdGhlIHNlcnZlciBzb2x1dGlvbiBmb3IgQXBhY2hlLCBuZ2lueCwgb3IgSUlTOiBod
HRwczovL2NyYWZ0Y21zLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8yMzI4LzQxMy1yZXF1ZXN0LWVu
dGl0eS10b28tbGFyZ2UtZXJyb3Itd2l0aC11cGxvYWRpbmctYS1maWxlICAuLi4gUmV0dXJuIGRhdGE6IGA
nIC4gaHRtbGVudGl0aWVzKCAkcmVzcG9uc2VbJ2JvZHknXSApIC4gJ2AuJyApOwoJCQl9CgkJCQoJCQlpZi
AoIGZhbHNlID09PSAoICRyZXR1cm4gPSBAdW5zZXJpYWxpemUoICRyZXNwb25zZVsnYm9keSddICkgKSApI
HsKCQkJCSRlcnJvciA9ICJFcnJvciAjODAwMTogVW5hYmxlIHRvIGRlY29kZSBEZXBsb3ltZW50IHJlc3Bv
bnNlLiBUaGluZ3MgdG8gY2hlY2s6IDEpIFZlcmlmeSBib3RoIHNpdGVzIGFyZSBydW5uaW5nIHRoZSBsYXR
lc3QgQmFja3VwQnVkZHkgdmVyc2lvbiAodjguMS4xLjEgaW50cm9kdWNlZCBub24tYmFja3dhcmQtY29tcG
F0aWJsZSBjaGFuZ2VzKS4gMikgQ2hlY2sgdGhlIHJlbW90ZSBzaXRlIEFQSSBVUkwgaXMgY29ycmVjdDogI
iAuICRyZW1vdGVBUElbJ3NpdGV1cmwnXSAuICIuIDMpIElmIHlvdSBjaGFuZ2VkIHRoZSByZW1vdGUgc2l0
ZSBBUEkga2V5IHlvdSBtdXN0IHVwZGF0ZSBpdCBpbnRvIHRoaXMgc2l0ZS4gNCkgTWFrZSBzdXJlIHRoZSB
yZW1vdGUgc2l0ZSBoYXMgdGhlIEFQSSBlbmFibGVkIGluIGl0cyB3cC1jb25maWcucGhwIGJ5IGFkZGluZy
BkZWZpbmUoICdCQUNLVVBCVUREWV9BUElfRU5BQkxFJywgdHJ1ZSApOyBzb21ld2hlcmUgQUJPVkUgdGhlI
GxpbmUgYFRoYXQncyBhbGwsIHN0b3AgZWRpdGluZyFgLiBWZXJiOiBgIiAuICR2ZXJiIC4gImAuIFRyb3Vi
bGVzaG9vdGluZzogYDx0ZXh0YXJlYSBzdHlsZT0nd2lkdGg6IDEwMCU7IGhlaWdodDogNTAwcHg7JyB3cmF
wPSdvZmYnPiIgLiBodG1sZW50aXRpZXMoIHByaW50X3IoICRyZXNwb25zZSwgdHJ1ZSApICkgLiAiPC90ZX
h0YXJlYT5gLiI7CgkJCQkKCQkJCS8qCgkJCQlwYl9iYWNrdXBidWRkeTo6YWRkX3N0YXR1c19zZXJpYWwoI
CdyZW1vdGVfYXBpJyApOyAvLyBBbHNvIGxvZyBhbGwgaW5jb21pbmcgcmVtb3RlIEFQSSBjYWxscy4KCQkJ
CXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdSRU1PVEUgRVJST1I6ICcgLiAkZXJyb3IgKTs
KCQkJCXBiX2JhY2t1cGJ1ZGR5OjpyZW1vdmVfc3RhdHVzX3NlcmlhbCggJ3JlbW90ZV9hcGknICk7CgkJCQ
kqLwoJCQkJCgkJCQlyZXR1cm4gc2VsZjo6X2Vycm9yKCAkZXJyb3IgKTsKCQkJfSBlbHNlIHsKCQkJCWlmI
CggaXNzZXQoICRyZXR1cm5bJ2xvZ3MnXSApICkgewoJCQkJCS8vcGJfYmFja3VwYnVkZHk6OmFkZF9zdGF0
dXNfc2VyaWFsKCAncmVtb3RlX2FwaScgKTsgLy8gQWxzbyBsb2cgYWxsIGluY29taW5nIHJlbW90ZSBBUEk
gY2FsbHMuCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnKioqIEJlZ2luIEV4dG
VybmFsIExvZyAoUmVtb3RlIEFQSSBDYWxsIFJlc3BvbnNlKScgKTsKCQkJCQlmb3JlYWNoKCAkcmV0dXJuW
ydsb2dzJ10gYXMgJGxvZyApIHsKCQkJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgJyogJyAuIHByaW50X3IoICRsb2csIHRydWUgKSApOwoJCQkJCX0KCQkJCQlwYl9iYWNrdXBidWR
keTo6c3RhdHVzKCAnZGV0YWlscycsICcqKiogRW5kIEV4dGVybmFsIExvZyAoUmVtb3RlIEFQSSBDYWxsIF
Jlc3BvbnNlKScgKTsKCQkJCQkvL3BiX2JhY2t1cGJ1ZGR5OjpyZW1vdmVfc3RhdHVzX3NlcmlhbCggJ3Jlb
W90ZV9hcGknICk7CgkJCQl9CgkJCQkKCQkJCWlmICggISBpc3NldCggJHJldHVyblsnc3VjY2VzcyddICkg
fHwgKCB0cnVlICE9PSAkcmV0dXJuWydzdWNjZXNzJ10gKSApIHsgLy8gRmFpbC4KCQkJCQkkZXJyb3IgPSA
nJzsKCQkJCQlpZiAoIGlzc2V0KCAkcmV0dXJuWydlcnJvciddICkgKSB7CgkJCQkJCSRlcnJvciA9ICRyZX
R1cm5bJ2Vycm9yJ107CgkJCQkJfSBlbHNlIHsKCQkJCQkJJGVycm9yID0gJ0Vycm9yICM4Mzg0Mzg3MzQ6I
E5vIGVycm9yIGdpdmVuLiBGdWxsIHJlc3BvbnNlOiAiJyAuICRyZXR1cm4gLiAnIi4nOwoJCQkJCX0KCQkJ
CQlyZXR1cm4gc2VsZjo6X2Vycm9yKCAiRXJyb3IgIzMyODkzNzk6IEFQSSBkaWQgbm90IHJlcG9ydCBzdWN
jZXNzLiBFcnJvciBkZXRhaWxzOiBgIiAuICRlcnJvciAuICJgLiBUcm91Ymxlc2hvb3Rpbmc6IGA8dGV4dG
FyZWEgc3R5bGU9J3dpZHRoOiAxMDAlOyBoZWlnaHQ6IDUwMHB4Oycgd3JhcD0nb2ZmJz4iIC4gaHRtbGVud
Gl0aWVzKCBwcmludF9yKCAkcmVzcG9uc2UsIHRydWUgKSApIC4gIjwvdGV4dGFyZWE+YC4iICk7CgkJCQl9
IGVsc2UgeyAvLyBTdWNjZXNzLgoJCQkJCWlmICggaXNzZXQoICRyZXR1cm5bJ21lc3NhZ2UnXSApICkgewo
JCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdSZXNwb25zZSBtZXNzYWdlIGZyb2
0gQVBJOiAnIC4gJHJldHVyblsnbWVzc2FnZSddIC4gJyIuJyApOwoJCQkJCX0KCQkJCQlyZXR1cm4gJHJld
HVybjsKCQkJCX0KCQkJfQoJCX0KCX0gLy8gRW5kIHJlbW90ZUNhbGwoKS4KCQoJCglwcml2YXRlIHN0YXRp
YyBmdW5jdGlvbiBfcmVwbHkoICRyZXNwb25zZV9hcnIgKSB7CgkJJHJlc3BvbnNlX2FyclsnbG9ncyddID0
gcGJfYmFja3VwYnVkZHk6OmdldF9zdGF0dXMoICdyZW1vdGVfYXBpJywgdHJ1ZSwgdHJ1ZSwgdHJ1ZSApOy
AvLyBBcnJheSBvZiBzdGF0dXMgbG9ncy4KCQkKCQkvL2Vycm9yX2xvZyggJ1JFU1BPTlNFOicgKTsKCQkvL
2Vycm9yX2xvZyggcHJpbnRfciggJHJlc3BvbnNlX2FyciwgdHJ1ZSApICk7CgkJCgkJZGllKCBzZXJpYWxp
emUoICRyZXNwb25zZV9hcnIgKSApOwoJfQoJCgkKCS8qIF92ZXJiX3J1bkJhY2t1cCgpCgkgKgoJICogUnV
uIGEgYmFja3VwIHdpdGggYSBzcGVjaWZpZWQgY3VzdG9tIHByb2ZpbGU7IGVnIGEgZGIgYmFja3VwIGZvci
BwdWxsaW5nIGRlcGxveW1lbnQuCgkgKiBQYXJhbXM6IFBPU1QgInByb2ZpbGUiIC0gQmFzZTY0IGVuY29kZ
WQganNvbiBlbmNvZGVkIHByb2ZpbGUgYXJyYXkuCgkgKgoJICovCglwcml2YXRlIHN0YXRpYyBmdW5jdGlv
biBfdmVyYl9ydW5CYWNrdXAoKSB7CgkJJGJhY2t1cFNlcmlhbCA9IHBiX2JhY2t1cGJ1ZGR5OjpyYW5kb21
fc3RyaW5nKCAxMCApOwoJCSRwcm9maWxlQXJyYXkgPSBzZWxmOjokX2luY29taW5nUGF5bG9hZFsgJ3Byb2
ZpbGUnIF07CgkJaWYgKCBmYWxzZSA9PT0gKCAkcHJvZmlsZUFycmF5ID0gYmFzZTY0X2RlY29kZSggJHByb
2ZpbGVBcnJheSApICkgKSB7CgkJCSRtZXNzYWdlID0gJ0Vycm9yICM4MzQzNzI4OiBVbmFibGUgdG8gYmFz
ZTY0IGRlY29kZSBwcm9maWxlIGRhdGEuJzsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJyw
gJG1lc3NhZ2UsICRiYWNrdXBTZXJpYWwgKTsKCQkJc2VsZjo6X3JlcGx5KCBhcnJheSggJ3N1Y2Nlc3MnID
0+IGZhbHNlLCAnZXJyb3InID0+ICRtZXNzYWdlICkgKTsKCQl9CgkJaWYgKCBOVUxMID09PSAoICRwcm9ma
WxlQXJyYXkgPSBqc29uX2RlY29kZSggJHByb2ZpbGVBcnJheSwgdHJ1ZSApICkgKSB7CgkJCSRtZXNzYWdl
ID0gJ0Vycm9yICMzMjcyMzgzOiBVbmFibGUgdG8ganNvbiBkZWNvZGUgcHJvZmlsZSBkYXRhLic7CgkJCXB
iX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRtZXNzYWdlLCAkYmFja3VwU2VyaWFsICk7CgkJCX
NlbGY6Ol9yZXBseSggYXJyYXkoICdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAkbWVzc2FnZSApI
CkgOwoJCX0KCQkKCQkvLyBBcHBlbmRzIHNlc3Npb24gdG9rZW5zIGZyb20gdGhlIHB1bGxpbmcgc2l0ZSBz
byB0aGV5IHdvbnQgZ2V0IGxvZ2dlZCBvdXQgd2hlbiB0aGlzIGRhdGFiYXNlIGlzIHJlc3RvcmVkIHRoZXJ
lLgoJCWlmICggaXNzZXQoICRwcm9maWxlQXJyYXlbJ3Nlc3Npb25Ub2tlbnMnXSApICYmICggaXNfYXJyYX
koICRwcm9maWxlQXJyYXlbJ3Nlc3Npb25Ub2tlbnMnXSApICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdkZXRhaWxzJywgJ1JlbW90ZSBzZXNzaW9uIHRva2VucyBuZWVkIHVwZGF0ZWQuJywgJGJhY2t1
cFNlcmlhbCApOwoJCQkvL2Vycm9yX2xvZyggJ25lZWR0b2tlbicgKTsKCQkJCgkJCWlmICggISBpc19udW1
lcmljKCAkcHJvZmlsZUFycmF5WydzZXNzaW9uSUQnXSApICkgewoJCQkJJG1lc3NhZ2UgPSAnRXJyb3IgIz
MyODk4OTg5My4gSW52YWxpZCBzZXNzaW9uIElELiBNdXN0IGJlIG51bWVyaWMuJzsKCQkJCXBiX2JhY2t1c
GJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRtZXNzYWdlICk7CgkJCQlzZWxmOjpfcmVwbHkoIGFycmF5KCAn
c3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJG1lc3NhZ2UgKSApOwoJCQl9CgkJCQoJCQkvLyBHZXQ
gY3VycmVudCBzZXNzaW9uIHRva2Vucy4KCQkJZ2xvYmFsICR3cGRiOwoJCQkkc3FsID0gIlNFTEVDVCBtZX
RhX3ZhbHVlIEZST00gYCIgLiBEQl9OQU1FIC4gImAuYCIgLiAkd3BkYi0+cHJlZml4IC4gInVzZXJtZXRhY
CBXSEVSRSBgdXNlcl9pZGAgPSAnIiAuICRwcm9maWxlQXJyYXlbJ3Nlc3Npb25JRCddIC4gIicgQU5EIGBt
ZXRhX2tleWAgPSAnc2Vzc2lvbl90b2tlbnMnOyI7CgkJCSRyZXN1bHRzID0gJHdwZGItPmdldF92YXIoICR
zcWwgKTsKCQkJJG9sZFNlc3Npb25Ub2tlbnMgPSBAdW5zZXJpYWxpemUoICRyZXN1bHRzICk7CgkJCQoJCQ
kvLyBBZGQgcmVtb3RlIHRva2Vucy4KCQkJaWYgKCAhIGlzX2FycmF5KCAkb2xkU2Vzc2lvblRva2VucyApI
CkgewoJCQkJJG9sZFNlc3Npb25Ub2tlbnMgPSBhcnJheSgpOwoJCQl9CgkJCSRuZXdTZXNzaW9uVG9rZW5z
ID0gYXJyYXlfbWVyZ2UoICRvbGRTZXNzaW9uVG9rZW5zLCAkcHJvZmlsZUFycmF5WydzZXNzaW9uVG9rZW5
zJ10gKTsKCQkJCgkJCS8vIFJlLXNlcmlhbGl6ZS4KCQkJJG5ld1Nlc3Npb25Ub2tlbnMgPSBzZXJpYWxpem
UoICRuZXdTZXNzaW9uVG9rZW5zICk7CgkJCQoJCQkvLyBTYXZlIG1lcmdlZCB0b2tlbnMgaGVyZS4KCQkJJ
HNxbCA9ICJVUERBVEUgYCIgLiBEQl9OQU1FIC4gImAuYCIgLiAkd3BkYi0+cHJlZml4IC4gInVzZXJtZXRh
YCBTRVQgbWV0YV92YWx1ZT0gJXMgV0hFUkUgYHVzZXJfaWRgID0gJyIgLiAkcHJvZmlsZUFycmF5WydzZXN
zaW9uSUQnXSAuICInIEFORCBgbWV0YV9rZXlgID0gJ3Nlc3Npb25fdG9rZW5zJzsiOwoJCQkkc3RyaW5nZW
RTZXNzaW9uVG9rZW5zID0gc2VyaWFsaXplKCAkcHJvZmlsZUFycmF5WydzZXNzaW9uVG9rZW5zJ10gKTsKC
QkJCgkJCWlmICggZmFsc2UgPT09ICR3cGRiLT5xdWVyeSggJHdwZGItPnByZXBhcmUoICRzcWwsICRzdHJp
bmdlZFNlc3Npb25Ub2tlbnMgKSApICkgewoJCQkJJG1lc3NhZ2UgPSAnRXJyb3IgIzQzNzM0Nzg0OiBVbmF
ibGUgdG8gdXBkYXRlIHJlbW90ZSBzZXNzaW9uIHRva2VuLic7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdH
VzKCAnZXJyb3InLCAkbWVzc2FnZSwgJGJhY2t1cFNlcmlhbCApOwoJCQkJc2VsZjo6X3JlcGx5KCBhcnJhe
SggJ3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICRtZXNzYWdlICkgKTsKCQkJfQoJCQkKCQkJcGJf
YmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnVXBkYXRlZCByZW1vdGUgc2Vzc2lvbiB0b2tlbnM
uJywgJGJhY2t1cFNlcmlhbCApOwoJCX0KCQkKCQlpZiAoIHRydWUgIT09ICggJG1heWJlTWVzc2FnZSA9IG
JhY2t1cGJ1ZGR5X2FwaTo6cnVuQmFja3VwKCAkcHJvZmlsZUFycmF5LCAkdHJpZ2dlclRpdGxlID0gJ2Rlc
GxveW1lbnRfcHVsbGluZycsICRiYWNrdXBNb2RlID0gJycsICRiYWNrdXBTZXJpYWwgKSApICkgewoJCQkk
bWVzc2FnZSA9ICdFcnJvciAjNDgzOTQ4NzM6IFVuYWJsZSB0byBsYXVuY2ggYmFja3VwIGF0IHNvdXJjZS4
gRGV0YWlsczogYCcgLiAkbWF5YmVNZXNzYWdlIC4gJ2AuJzsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cy
ggJ2Vycm9yJywgJG1lc3NhZ2UsICRiYWNrdXBTZXJpYWwgKTsKCQkJc2VsZjo6X3JlcGx5KCBhcnJheSggJ
3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICRtZXNzYWdlICkgKTsKCQl9IGVsc2UgewoJCQkkYXJj
aGl2ZUZpbGVuYW1lID0gYmFzZW5hbWUoIGJhY2t1cGJ1ZGR5X2NvcmU6OmNhbGN1bGF0ZUFyY2hpdmVGaWx
lbmFtZSggJGJhY2t1cFNlcmlhbCwgJHByb2ZpbGVBcnJheVsndHlwZSddLCAkcHJvZmlsZUFycmF5ICkgKT
sKCQkJc2VsZjo6X3JlcGx5KCBhcnJheSggJ3N1Y2Nlc3MnID0+IHRydWUsICdiYWNrdXBTZXJpYWwnID0+I
CRiYWNrdXBTZXJpYWwsICdiYWNrdXBGaWxlJyA9PiAkYXJjaGl2ZUZpbGVuYW1lICkgKTsKCQl9Cgl9IC8v
IEVuZCBfdmVyYl9ydW5CYWNrdXAoKS4KCQoJCgkKCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF92ZXJiX2d
ldEJhY2t1cFN0YXR1cygpIHsKCQkkYmFja3VwU2VyaWFsID0gc2VsZjo6JF9pbmNvbWluZ1BheWxvYWRbIC
dzZXJpYWwnIF07CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnKioqIEVuZCBSZW1vd
GUgQmFja3VwIExvZyBzZWN0aW9uJywgJGJhY2t1cFNlcmlhbCApOyAvLyBQbGFjZSBhdCBlbmQgb2YgbG9n
LgoJCWJhY2t1cGJ1ZGR5X2FwaTo6Z2V0QmFja3VwU3RhdHVzKCAkYmFja3VwU2VyaWFsICk7IC8vIGVjaG9
zIG91dC4gVXNlICRyZXR1cm5SYXcgPSB0cnVlIGZvciByZW1vdGVfYXBpIGNhbGwgZm9yIHRoaXMgc3BlY2
lhbCB2ZXJiIHRoYXQgZG9lcyBub3QgcmV0dXJuIGpzb24uCgkJCgkJLy8gRml4IG1pc3NpbmcgV1AgY3Jvb
iBjb25zdGFudC4KCQlpZiAoICFkZWZpbmVkKCAnV1BfQ1JPTl9MT0NLX1RJTUVPVVQnICkgKSB7CgkJCWRl
ZmluZSgnV1BfQ1JPTl9MT0NLX1RJTUVPVVQnLCA2MCk7ICAvLyBJbiBzZWNvbmRzCgkJfQoJCQoJCWlmICg
gJzEnICE9IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW
9uc1snc2tpcF9zcGF3bl9jcm9uX2NhbGwnXSApIHsKCQkJdXBkYXRlX29wdGlvbiggJ190cmFuc2llbnRfZ
G9pbmdfY3JvbicsIDAgKTsgLy8gUHJldmVudCBjcm9uLWJsb2NraW5nIGZvciBuZXh0IGl0ZW0uCgkJCXNw
YXduX2Nyb24oIHRpbWUoKSArIDE1MCApOyAvLyBBZGRzID4gNjAgc2Vjb25kcyB0byBnZXQgYXJvdW5kIG9
uY2UgcGVyIG1pbnV0ZSBjcm9uIHJ1bm5pbmcgbGltaXQuCgkJfQoJfSAvLyBlbmQgX3ZlcmJfZ2V0QmFja3
VwU3RhdHVzKCkuCgkKCQoJCgkvKiBfdmVyYl9jb25maXJtRGVwbG95bWVudCgpCgkgKgoJICogVXNlciBjb
25maXJtZWQgdGhlIGRlcGxveW1lbnQgc28gY2xlYW51cCBhbnkgcmVtYWluaW5nIHRlbXBvcmFyeSBzdHVm
ZiBzdWNoIGFzIHRlbXAgZGIgdGFibGVzLiBOb3RlOiBpbXBvcnRidWRkeSwgYmFja3VwIGZpbGVzLCBldGM
gc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIGNsZWFuZWQgdXAgYnkgaW1wb3J0YnVkZHkgaXRzZWxmIGF0IH
RoaXMgcG9pbnQuCgkgKgoJICovCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfdmVyYl9jb25maXJtRGVwb
G95bWVudCgpIHsKCQkKCQkvLyBSZW1vdmUgVGVtcCBUYWJsZXMKCQkkc2VyaWFsID0gc2VsZjo6JF9pbmNv
bWluZ1BheWxvYWRbICdzZXJpYWwnIF07CgkJcmVxdWlyZV9vbmNlKCBwYl9iYWNrdXBidWRkeTo6cGx1Z2l
uX3BhdGgoKSAuICcvY2xhc3Nlcy9ob3VzZWtlZXBpbmcucGhwJyApOwoJCWJhY2t1cGJ1ZGR5X2hvdXNla2
VlcGluZzo6cmVtb3ZlX3RlbXBfdGFibGVzKCAkc2VyaWFsICk7CgoJCS8vIFJlbW92ZSBpbXBvcnRidWR5I
ERpcmVjdG9yeQoJCWlmICggZmlsZV9leGlzdHMoIEFCU1BBVEggLiAnaW1wb3J0YnVkZHkvJyApICkgewoJ
CQlwYl9iYWNrdXBidWRkeTo6JGZpbGVzeXN0ZW0tPnVubGlua19yZWN1cnNpdmUoIEFCU1BBVEggLiAnaW1
wb3J0YnVkZHkvJyApOwoJCX0KCgkJLy8gUmVtb3ZlIGltcG9ydGJ1ZGR5IGZpbGVzCgkJJGltcG9ydGJ1ZG
R5RmlsZXMgPSBnbG9iKCBBQlNQQVRIIC4gJ2ltcG9ydGJ1ZGR5Ki5waHAnICk7CgkJaWYgKCAhIGlzX2Fyc
mF5KCAkaW1wb3J0YnVkZHlGaWxlcyApICkgewoJCQkkaW1wb3J0YnVkZHlGaWxlcyA9IGFycmF5KCk7CgkJ
fQoJCWZvcmVhY2goICRpbXBvcnRidWRkeUZpbGVzIGFzICRpbXBvcnRidWRkeUZpbGUgKSB7CgkJCXVubGl
uayggJGltcG9ydGJ1ZGR5RmlsZSApOwoJCX0KCQkKCQlzZWxmOjpfcmVwbHkoIGFycmF5KCAnc3VjY2Vzcy
cgPT4gdHJ1ZSApICk7CgkJCgl9IC8vIEVuZCBfdmVyYl9jb25maXJtRGVwbG95bWVudCgpLgoJCgkKCS8vI
FJlY2VpdmUgYmFja3VwIGFyY2hpdmUuCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfdmVyYl9zZW5kRmls
ZV9iYWNrdXAoKSB7CgkJc2VsZjo6X3NlbmRGaWxlcyggJ2JhY2t1cCcgKTsKCX0gLy8gRW5kIF92ZXJiX3N
lbmRGaWxlX2JhY2t1cCgpLgoJCgkKCS8vIFJlY2VpdmUgdGhlbWUgZmlsZS4KCXByaXZhdGUgc3RhdGljIG
Z1bmN0aW9uIF92ZXJiX3NlbmRGaWxlX3RoZW1lKCkgewoJCXNlbGY6Ol9zZW5kRmlsZXMoICd0aGVtZScgK
TsKCX0gLy8gRW5kIF92ZXJiX3NlbmRGaWxlX3RoZW1lKCkuCgkKCS8vIFJlY2VpdmUgY2hpbGQgdGhlbWUg
ZmlsZS4KCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF92ZXJiX3NlbmRGaWxlX2NoaWxkVGhlbWUoKSB7Cgk
Jc2VsZjo6X3NlbmRGaWxlcyggJ2NoaWxkVGhlbWUnICk7Cgl9IC8vIEVuZCBfdmVyYl9zZW5kRmlsZV9jaG
lsZHRoZW1lKCkuCgkKCS8vIFJlY2VpdmUgcGx1Z2luIGZpbGUuCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvb
iBfdmVyYl9zZW5kRmlsZV9wbHVnaW4oKSB7CgkJc2VsZjo6X3NlbmRGaWxlcyggJ3BsdWdpbicgKTsKCX0g
Ly8gRW5kIF92ZXJiX3NlbmRGaWxlX3BsdWdpbigpLgoJCgkvLyBSZWNlaXZlIGJhY2t1cCBhcmNoaXZlLgo
JcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX3ZlcmJfc2VuZEZpbGVfbWVkaWEoKSB7CgkJc2VsZjo6X3Nlbm
RGaWxlcyggJ21lZGlhJyApOwoJfSAvLyBFbmQgX3ZlcmJfc2VuZEZpbGVfbWVkaWEoKS4KCQoJLy8gUmVjZ
Wl2ZSBhZGRpdGlvbmFsIGV4dHJhIGluY2x1c2lvbi4KCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF92ZXJi
X3NlbmRGaWxlX2V4dHJhKCkgewoJCXNlbGY6Ol9zZW5kRmlsZXMoICdleHRyYScgKTsKCX0gLy8gRW5kIF9
2ZXJiX3NlbmRGaWxlX2V4dHJhKCkuCgkKCS8vIFRlc3RpbmcgZmlsZSBzZW5kIGFiaWxpdHkuIEZpbGUgaX
MgdHJhbnNpZW50OyBzdG9yZWQgaW4gdGVtcCBkaXIgbW9tZW50YXJpbHkuCglwcml2YXRlIHN0YXRpYyBmd
W5jdGlvbiBfdmVyYl9zZW5kRmlsZV90ZXN0KCkgewoJCXNlbGY6Ol9zZW5kRmlsZXMoICd0ZXN0JyApOwoJ
fSAvLyBFbmQgX3ZlcmJfc2VuZEZpbGVfdGVzdCgpLgoJCgkKCQoJLy8gR2V0IGJhY2t1cCBhcmNoaXZlLgo
JcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX3ZlcmJfZ2V0RmlsZV9iYWNrdXAoKSB7CgkJc2VsZjo6X2dldE
ZpbGUoICdiYWNrdXAnICk7Cgl9IC8vIEVuZCBfdmVyYl9nZXRGaWxlX2JhY2t1cCgpLgoJCgkvLyBHZXQgd
GhlbWUgZmlsZS4KCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF92ZXJiX2dldEZpbGVfdGhlbWUoKSB7CgkJ
c2VsZjo6X2dldEZpbGUoICd0aGVtZScgKTsKCX0gLy8gRW5kIF92ZXJiX2dldEZpbGVfdGhlbWUoKS4KCQo
JLy8gR2V0IGNoaWxkIHRoZW1lIGZpbGUuCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfdmVyYl9nZXRGaW
xlX2NoaWxkVGhlbWUoKSB7CgkJc2VsZjo6X2dldEZpbGUoICdjaGlsZFRoZW1lJyApOwoJfSAvLyBFbmQgX
3ZlcmJfZ2V0RmlsZV9jaGlsZFRlbWUoKS4KCQoJLy8gR2V0IHBsdWdpbiBmaWxlLgoJcHJpdmF0ZSBzdGF0
aWMgZnVuY3Rpb24gX3ZlcmJfZ2V0RmlsZV9wbHVnaW4oKSB7CgkJc2VsZjo6X2dldEZpbGUoICdwbHVnaW4
nICk7Cgl9IC8vIEVuZCBfdmVyYl9nZXRGaWxlX3BsdWdpbigpLgoJCgkvLyBHZXQgbWVkaWEgZmlsZS4KCX
ByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF92ZXJiX2dldEZpbGVfbWVkaWEoKSB7CgkJc2VsZjo6X2dldEZpb
GUoICdtZWRpYScgKTsKCX0gLy8gRW5kIF92ZXJiX2dldEZpbGVfbWVkaWEoKS4KCQoJLy8gR2V0IGFkZGl0
aW9uYWwgZXh0cmEgaW5jbHVzaW9uLgoJcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX3ZlcmJfZ2V0RmlsZV9
leHRyYSgpIHsKCQlzZWxmOjpfZ2V0RmlsZSggJ2V4dHJhJyApOwoJfSAvLyBFbmQgX3ZlcmJfZ2V0RmlsZV
9leHRyYSgpLgoJCgkKCQoJLyogX2dldEZpbGVQYXRoQnlUeXBlKCkKCSAqCgkgKiBDYWxjdWxhdGVzIHJvb
3QgZGlyZWN0b3J5IHRvIHN0b3JlIHRoZSBzcGVjaWZpZWQgdHlwZSBpbi4gQ29udGFpbnMgdHJhaWxpbmcg
c2xhc2guIERpZXMgaWYgdW5rbm93biBmaWxlIHR5cGUgc3BlY2lmaWVkIGluIHBhcmFtcy4KCSAqCgkgKiB
AcGFyYW0Jc3RyaW5nCQkkdHlwZQkJRmlsZSB0eXBlL2xvY2F0aW9uIG5hbWUgdG8gc3RvcmUgaW4uIFZhbG
lkIHZhbHVlczogYmFja3VwLCBtZWRpYSwgcGx1Z2luLCB0aGVtZS4KCSAqCgkgKi8KCXByaXZhdGUgc3Rhd
GljIGZ1bmN0aW9uIF9nZXRGaWxlUGF0aEJ5VHlwZSggJHR5cGUgKSB7CgkJaWYgKCAnYmFja3VwJyA9PSAk
dHlwZSApIHsKCQkJJHJvb3REaXIgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRCYWNrdXBEaXJlY3RvcnkoKTs
gLy8gSW5jbHVkZSB0cmFpbGluZyBzbGFzaC4KCQkJcGJfYmFja3VwYnVkZHk6OmFudGlfZGlyZWN0b3J5X2
Jyb3dzaW5nKCAkcm9vdERpciwgJGRpZSA9IGZhbHNlICk7CgkJfSBlbHNlaWYgKCAnbWVkaWEnID09ICR0e
XBlICkgewoJCQkkd3BfdXBsb2FkX2RpciA9IHdwX3VwbG9hZF9kaXIoKTsKCQkJJHJvb3REaXIgPSAkd3Bf
dXBsb2FkX2RpclsnYmFzZWRpciddIC4gJy8nOwoJCQl1bnNldCggJHdwX3VwbG9hZF9kaXIgKTsKCQl9IGV
sc2VpZiAoICdwbHVnaW4nID09ICR0eXBlICkgewoJCQkkcm9vdERpciA9IHdwX25vcm1hbGl6ZV9wYXRoKC
BXUF9QTFVHSU5fRElSICkgLiAnLyc7CgkJfSBlbHNlaWYgKCAndGhlbWUnID09ICR0eXBlICkgewoJCQkkc
m9vdERpciA9IGdldF90ZW1wbGF0ZV9kaXJlY3RvcnkoKSAuICcvJzsKCQl9IGVsc2VpZiAoICdjaGlsZFRo
ZW1lJyA9PSAkdHlwZSApIHsKCQkJJHJvb3REaXIgPSBnZXRfc3R5bGVzaGVldF9kaXJlY3RvcnkoKSAuICc
vJzsKCQl9IGVsc2VpZiggJ3Rlc3QnID09ICR0eXBlICkgewoJCQkkcm9vdERpciA9IGJhY2t1cGJ1ZGR5X2
NvcmU6OmdldFRlbXBEaXJlY3RvcnkoKTsKCQl9IGVsc2VpZiggJ2V4dHJhJyA9PSAkdHlwZSApIHsKCQkJJ
HJvb3REaXIgPSBBQlNQQVRIOyAvLyBpbmNsdWRlcyB0cmFpbGluZyBzbGFzaC4KCQl9IGVsc2UgewoJCQkk
ZXJyb3IgPSAnRXJyb3IgIzg0OTM0OTg0LiBZb3UgbXVzdCBzcGVjaWZ5IGEgc2VuZGZpbGUgdHlwZTogVW5
rbm93biBmaWxlIHR5cGUgYCcgLiBodG1sZW50aXRpZXMoICR0eXBlICkgLiAnYC4nOwoJCQlwYl9iYWNrdX
BidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAkZXJyb3IgKTsKCQkJZXJyb3JfbG9nKCAnQmFja3VwQnVkZHkgQ
VBJIGVycm9yOiAnIC4gJGVycm9yICk7CgkJCXNlbGY6Ol9yZXBseSggYXJyYXkoICdzdWNjZXNzJyA9PiBm
YWxzZSwgJ2Vycm9yJyA9PiAkbWVzc2FnZSApICk7CgkJfQoJCS8vZXJyb3JfbG9nKCAncm9vdERpcjogJyA
uICRyb290RGlyICk7CgkJcmV0dXJuICRyb290RGlyOwoJfSAvLyBFbmQgX2dldEZpbGVQYXRoQnlUeXBlKC
kuCgkKCQoJLyogX2dldEZpbGUoKQoJICoKCSAqIENhbGxpbmcgc2l0ZSBpcyB3YW50aW5nIHRvIGdldCBhI
GZpbGUgRlJPTSB0aGlzIHNpdGUuCgkgKgoJICovCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfZ2V0Rmls
ZSggJHR5cGUgKSB7CgkJJHJvb3REaXIgPSBzZWxmOjpfZ2V0RmlsZVBhdGhCeVR5cGUoICR0eXBlICk7IC8
vIGNvbnRhaW5zIHRyYWlsaW5nIHNsYXNoLgoJCSRmaWxlUGF0aCA9IHN0cmlwc2xhc2hlc19kZWVwKCBzZW
xmOjokX2luY29taW5nUGF5bG9hZFsgJ2ZpbGVuYW1lJyBdICk7CgkJJGZ1bGxGaWxlbmFtZSA9ICRyb290R
GlyIC4gJGZpbGVQYXRoOwoJCQoJCSRzZWVrVG8gPSBzZWxmOjokX2luY29taW5nUGF5bG9hZFsgJ3NlZWt0
bycgXTsKCQlpZiAoICEgaXNfbnVtZXJpYyggJHNlZWtUbyApICkgewoJCQkkc2Vla1RvID0gMDsKCQl9Cgk
JCgkJJG1heFBheWxvYWQgPSBzZWxmOjokX2luY29taW5nUGF5bG9hZFsgJ21heFBheWxvYWQnIF07IC8vIE
1heCBwYXlsb2FkIGluIGJ5dGVzLgoJCSRtYXhQYXlsb2FkQnl0ZXMgPSAkbWF4UGF5bG9hZCAqIDEwMjQgK
iAxMDI0OwoJCQoJCS8vIEZpbGUgZXhpc3Q/IChub3RlOiBpZiB1dGY4IHRoZW4gdGhpcyBmaXJzdCBjaGVj
ayB3aWxsIGZhaWwgYW5kIGluc2lkZSB3ZSB3aWxsIGNoZWNrIGZvciB0aGUgZmlsZSBhZnRlciB1dGY4IGR
lY29kaW5nLikKCQlpZiAoICEgZmlsZV9leGlzdHMoICRmdWxsRmlsZW5hbWUgKSApIHsKCQkJLy8gQ2hlY2
sgaWYgdXRmOCBkZWNvZGluZyB0aGUgZmlsZW5hbWUgaGVscHMgdXMgZmluZCBpdC4KCQkJJHV0Zl9kZWNvZ
GVkX2ZpbGVuYW1lID0gdXRmOF9kZWNvZGUoICRmaWxlUGF0aCApOwoJCQlpZiAoIGZpbGVfZXhpc3RzKCAk
cm9vdERpciAuICR1dGZfZGVjb2RlZF9maWxlbmFtZSApICkgewoJCQkJJGZ1bGxGaWxlbmFtZSA9ICRyb29
0RGlyIC4gJHV0Zl9kZWNvZGVkX2ZpbGVuYW1lOwoJCQl9IGVsc2UgewoJCQkJJG1lc3NhZ2UgPSAnRXJyb3
IgIzgzOTI5ODM4OiBSZXF1ZXN0ZWQgYCcgLiAkdHlwZSAuICdgIGZpbGUgd2l0aCBmdWxsIHBhdGggYCcgL
iAkZnVsbEZpbGVuYW1lIC4gJ2AgZG9lcyBub3QgZXhpc3QuIFdhcyBpdCBqdXN0IGRlbGV0ZWQ/IFNlZSBs
b2cgZm9yIGRldGFpbHMuJzsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRtZXNzYWd
lICk7CgkJCQlzZWxmOjpfcmVwbHkoIGFycmF5KCAnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJG
1lc3NhZ2UgKSApOwoJCQl9CgkJfQoJCQoJCSRzaXplID0gZmlsZXNpemUoICRmdWxsRmlsZW5hbWUgKTsKC
QlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGaWxlIHNpemUgb2YgZmlsZSB0byBnZXQ6
ICcgLiBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+ZmlsZV9zaXplKCAkc2l6ZSApICk7CgkJCgkJaWYgKCA
kc2l6ZSA+ICRtYXhQYXlsb2FkQnl0ZXMgKSB7CgkJCSRjaHVua3NUb3RhbCA9IGNlaWwoICRzaXplIC8gJG
1heFBheWxvYWRCeXRlcyApOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdUaGlzI
GZpbGUgKyBlbmNvZGluZyBleGNlZWRzIHRoZSBtYXhpbXVtIHBlci1jaHVuayBwYXlsb2FkIHNpemUgc28g
d2lsbCBiZSByZWFkIGluIGFuZCBzZW50IGluIGNodW5rcyBvZiAnIC4gc2VsZjo6JF9pbmNvbWluZ1BheWx
vYWRbICdtYXhQYXlsb2FkJyBdIC4gJ01CICgnIC4gJG1heFBheWxvYWRCeXRlcyAuICcgYnl0ZXMpIHRvdG
FsaW5nIGFwcHJveGltYXRlbHkgJyAuICRjaHVua3NUb3RhbCAuICcgY2h1bmtzLicgKTsKCQl9IGVsc2Uge
woJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdUaGlzIGZpbGUgKyBlbmNvZGluZyBk
b2VzIG5vdCBleGNlZWQgcGVyLWNodW5rIHBheWxvYWQgc2l6ZSBvZiAnIC4gc2VsZjo6JF9pbmNvbWluZ1B
heWxvYWRbICdtYXhQYXlsb2FkJyBdIC4gJ01CICgnIC4gcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPmZpbG
Vfc2l6ZSggJG1heFBheWxvYWRCeXRlcyApIC4gJykgc28gc2VuZGluZyBpbiBvbmUgcGFzcy4nICk7CgkJf
QoJCSRwcmV2UG9pbnRlciA9IDA7CgkJCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAn
UmVhZGluZyBpbiBgJyAuICRtYXhQYXlsb2FkQnl0ZXMgLiAnYCBieXRlcyBhdCBhIHRpbWUuJyApOwoJCQo
JCS8vIE9wZW4gZm9yIHJlYWRpbmcuCgkJaWYgKCBmYWxzZSA9PT0gKCAkZnMgPSBmb3BlbiggJGZ1bGxGaW
xlbmFtZSwgJ3JiJyApICkpIHsKCQkJJG1lc3NhZ2UgPSAnRXJyb3IgIzIzNTUzMjogVW5hYmxlIHRvIGZvc
GVuIGZpbGUgYCcgLiAkZnVsbEZpbGVuYW1lIC4gJ2AuJzsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cygg
J2Vycm9yJywgJG1lc3NhZ2UgKTsKCQkJc2VsZjo6X3JlcGx5KCBhcnJheSggJ3N1Y2Nlc3MnID0+IGZhbHN
lLCAnZXJyb3InID0+ICRtZXNzYWdlICkgKTsKCQl9CgkJCgkJLy8gU2VlayB0byBwb3NpdGlvbiAoaWYgYX
BwbGljYWJsZSkuCgkJaWYgKCAwICE9ICRzZWVrVG8gKSB7CgkJCWlmICggMCAhPSBmc2VlayggJGZzLCAkc
2Vla1RvICkgKSB7CgkJCQlAZmNsb3NlKCAkZnMgKTsKCQkJCSRtZXNzYWdlID0gJ0Vycm9yICM2NDY0NTM0
MjI5OiBVbmFibGUgdG8gZnNlZWsgZmlsZS4nOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9
yJywgJG1lc3NhZ2UgKTsKCQkJCXNlbGY6Ol9yZXBseSggYXJyYXkoICdzdWNjZXNzJyA9PiBmYWxzZSwgJ2
Vycm9yJyA9PiAkbWVzc2FnZSApICk7CgkJCX0KC
Ql9CgkJCgkJJHJlc3VtZVBvaW50ID0gMDsKCQkkZmlsZURvbmUgPSBmYWxzZTsKCQkkZmlsZURhdGEgPSBm
cmVhZCggJGZzLCAkbWF4UGF5bG9hZEJ5dGVzICk7CgkJaWYgKCBmZW9mKCAkZnMgKSApIHsKCQkJcGJfYmF
ja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUmVhZCB0byBlbmQgb2YgZmlsZSAoZmVvZiB0cnVlKS
4gTm8gbW9yZSBjaHVua3MgbGVmdCBhZnRlciB0aGlzLicgKTsKCQkJJGZpbGVEb25lID0gdHJ1ZTsKCQl9I
GVsc2UgewoJCQlpZiAoIEZBTFNFID09PSAoICRyZXN1bWVQb2ludCA9IGZ0ZWxsKCAkZnMgKSApICkgewoJ
CQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICM0MjM1MzIxMjogVW5hYmxlIHR
vIGdldCBmdGVsbCBwb2ludGVyIG9mIGZpbGUgaGFuZGxlLicgKTsKCQkJCUBmY2xvc2UoICRmcyApOwoJCQ
kJcmV0dXJuIGZhbHNlOwoJCQl9IGVsc2UgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpb
HMnLCAnRmlsZSBwb2ludGVyIHJlc3VtZSBwb2ludDogYCcgLiAkcmVzdW1lUG9pbnQgLiAnYC4nICk7CgkJ
CX0KCQl9CgkJQGZjbG9zZSggJGZzICk7CgkJCgkJLy8gVE9ETzogSW4gZnV0dXJlIHBlcmhhcHMgcGFzcyB
kYXRhIGFzIHRoZSBodHRwIHJlc3BvbnNlIGJvZHkgYW5kIHRoZXNlIGl0ZW1zIGluIGEgaHR0cCBoZWFkZX
IgdG8gcHJldmVudCBwb3NzaWJsZSBjb3JydXB0aW9uIGluIHRoZSBzZXJpYWxpemVkIGRhdGEuCgkJJGZpb
GUgPSBhcnJheSgKCQkJJ3N1Y2Nlc3MnICAgICAgPT4gdHJ1ZSwKCQkJJ2RhdGFsZW4nICAgICAgPT4gc3Ry
bGVuKCAkZmlsZURhdGEgKSwKCQkJJ2RvbmUnICAgICAgICAgPT4gJGZpbGVEb25lLAoJCQknc2l6ZScgICA
gICAgICA9PiAkc2l6ZSwKCQkJJ3Jlc3VtZXBvaW50JyAgPT4gJHJlc3VtZVBvaW50LAoJCQknZW5jb2RlZC
cgICAgICA9PiBpc3NldCggJHV0Zl9kZWNvZGVkX2ZpbGVuYW1lICksIC8vIG9ubHkgaXNzZXQgaWYgdXRmO
CB3YXMgbmVlZGVkIHRvIGZpbmQgdGhpcyBmaWxlLgoJCQknZGF0YScgICAgICAgICA9PiAkZmlsZURhdGEs
CgkJKTsKCQkKCQlzZWxmOjpfcmVwbHkoICRmaWxlICk7CgkJCgl9IC8vIEVuZCBfZ2V0RmlsZSgpLgoJCgk
KCQoJLyogX3NlbmRGaWxlcygpCgkgKgoJICogQ2FsbGluZyBzaXRlIGlzIHdhbnRpbmcgdG8gc2VuZCBmaW
xlKHMpIFRPIHRoaXMgc2l0ZS4gQ2FsbGVkIGJ5IHZhcmlvdXMgdmVyYnMgdGhhdCBwYXNzIHRoZSBhcHByb
3ByaWF0ZSAkdHlwZSB0aGF0IGRldGVybWluZXMgcm9vdCBwYXRoLiBWYWxpZCB0eXBlczogYmFja3VwLCB0
aGVtZSwgcGx1Z2luLCBtZWRpYQoJICoKCSAqLwoJcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX3NlbmRGaWx
lcyggJHR5cGUgPSAnJyApIHsKCQkvL2Vycm9yX2xvZyggJ3R5cGU6JyAuICR0eXBlICk7CgkJJHJvb3REaX
IgPSBzZWxmOjpfZ2V0RmlsZVBhdGhCeVR5cGUoICR0eXBlICk7IC8vIGNvbnRhaW5zIHRyYWlsaW5nIHNsY
XNoLgoJCS8vZXJyb3JfbG9nKCAnQVBJIHNhdmluZyBmaWxlIHRvIGRpcjogYCcgLiAkcm9vdERpciAuICdg
LicgKTsKCQkKCQkkZmlsZVJlY2VpdmVDb3VudCA9IDA7CgkJJGJ5dGVzUmVjZWl2ZWQgPSAwOwoJCQoJCWZ
vcmVhY2goIHNlbGY6OiRfaW5jb21pbmdQYXlsb2FkWydmaWxlcyddIGFzICRmaWxlICkgewoJCQkvL2Vycm
9yX2xvZyggJ2ZpbGU6ICcgLiAkZmlsZSApOwoJCQkvLyRmaWxlID0gc3RyX3JlcGxhY2UoIGFycmF5KCAnX
FwnLCAnLycgKSwgJycsIHN0cmlwc2xhc2hlc19kZWVwKCBzZWxmOjokX2luY29taW5nUGF5bG9hZFsgJ2Zp
bGVuYW1lJyBdICkgKTsKCQkJJGZpbGVQYXRoID0gJyc7CgkJCWlmICggaXNzZXQoICRmaWxlWyAnZmlsZXB
hdGgnIF0gKSApIHsKCQkJCSRmaWxlUGF0aCA9ICRmaWxlWyAnZmlsZXBhdGgnIF07CgkJCX0KCQkJaWYgKC
AnJyAhPSAkZmlsZVBhdGggKSB7IC8vIEZpbGVwYXRoIHNwZWNpZmllZCBzbyBnb2VzIGluIGEgc3ViZGlyZ
WN0b3J5IHVuZGVyIHRoZSByb290RGlyLgoJCQkJaWYgKCAkZmlsZSAhPSBiYXNlbmFtZSggJGZpbGVQYXRo
ICkgKSB7CgkJCQkJLy8gQ2hlY2sgaWYgdXRmOCBkZWNvZGluZyB0aGUgZmlsZW5hbWUgaGVscHMgbWF0Y2g
gY29ycmVjdGx5CgkJCQkJJHV0Zl9kZWNvZGVkX2ZpbGVQYXRoID0gdXRmOF9kZWNvZGUoICRmaWxlUGF0aC
ApOwoJCQkJCWlmICggJGZpbGUgPT0gYmFzZW5hbWUoICR1dGZfZGVjb2RlZF9maWxlUGF0aCApICkgewoJC
QkJCQkkZmlsZVBhdGggPSAkc3ViRmlsZVBhdGggPSAkdXRmX2RlY29kZWRfZmlsZVBhdGg7CgkJCQkJfSBl
bHNlIHsKCQkJCQkJJG1lc3NhZ2UgPSAnRXJyb3IgIzQ5Mzg0NDogVGhlIHNwZWNpZmllZCBmaWxlbmFtZSB
3aXRoaW4gdGhlIGZpbGVwYXRoIHBhcmFtZXRlciBkb2VzIG5vdCBtYXRjaCB0aGUgc3VwcGxpZWQgZmlsZW
5hbWUgcGFyYW1ldGVyLiB8IGNsZWFuZmlsZTogJyAuICRmaWxlIC4gJyB8IGZpbGVQYXRoOiB8ICcgLiAkZ
mlsZVBhdGg7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRtZXNzYWdlICk7CgkJ
CQkJCXNlbGY6Ol9yZXBseSggYXJyYXkoICdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAkbWVzc2F
nZSApICk7CgkJCQkJfQoJCQkJfSBlbHNlIHsgLy8gRmlsZW5hbWUgd2l0aCBwYXRoLgoJCQkJCSRzdWJGaW
xlUGF0aCA9ICRmaWxlUGF0aDsKCQkJCX0KCQkJfSBlbHNlIHsgLy8gSnVzdCB0aGUgZmlsZW5hbWUuIE5vI
HBhdGguCgkJCQkkc3ViRmlsZVBhdGggPSAkZmlsZVsnZmlsZSddOwoJCQl9CgkJCQoJCQkvL2Vycm9yX2xv
ZyggJ2E6JyAuICRyb290RGlyICk7CgkJCS8vZXJyb3JfbG9nKCAnYjonIC4gJHN1YkZpbGVQYXRoICk7Cgk
JCSRzYXZlRmlsZSA9ICRyb290RGlyIC4gJHN1YkZpbGVQYXRoOwoJCQkvL2Vycm9yX2xvZyggJ3NhdmVGaW
xlOiAnIC4gJHNhdmVGaWxlICk7CgkJCS8vZXJyb3JfbG9nKCBwcmludF9yKCAkZmlsZSwgdHJ1ZSApICk7C
gkJCQoJCQkvLyBDYWxjdWxhdGUgc2VlayBwb3NpdGlvbi4KCQkJJHNlZWtUbyA9ICRmaWxlWyAnc2Vla3Rv
JyBdOwoJCQlpZiAoICEgaXNfbnVtZXJpYyggJHNlZWtUbyApICkgewoJCQkJJHNlZWtUbyA9IDA7CgkJCX0
KCQkJCgkJCS8vIENoZWNrIGlmIGRpcmVjdG9yeSBleGlzdHMgJiBjcmVhdGUgaWYgbmVlZGVkLgoJCQkkc2
F2ZURpciA9IGRpcm5hbWUoICRzYXZlRmlsZSApOwoJCQkKCQkJCgkJCS8vIERlbGV0ZSBleGlzdGluZyBka
XJlY3RvcnkgZm9yIHNvbWUgdHlwZXMgb2YgdHJhbnNmZXJzLgoJCQkKCQkJaWYgKCAoIDAgPT0gJHNlZWtU
byApICYmICggZmlsZV9leGlzdHMoICRzYXZlRmlsZSApICkgKSB7IC8vIE5ldyBmaWxlIHRyYW5zZmVyIG9
ubHkuIERvIG5vdCBkZWxldGUgZXhpc3RpbmcgZmlsZSBpZiBjaHVua2luZy4KCQkJCWlmICggdHJ1ZSAhPT
0gQHVubGluayggJHNhdmVGaWxlICkgKSB7CgkJCQkJJG1lc3NhZ2UgPSAnRXJyb3IgIzIzODcyMjogVW5hY
mxlIHRvIGRlbGV0ZSBleGlzdGluZyBmaWxlIGAnIC4gJHNhdmVGaWxlIC4gJ2AuJzsKCQkJCQlwYl9iYWNr
dXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAkbWVzc2FnZSApOwoJCQkJCXNlbGY6Ol9yZXBseSggYXJyYXk
oICdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAkbWVzc2FnZSApICk7CgkJCQl9CgkJCX0KCQkJCg
kJCWlmICggISBpc19kaXIoICRzYXZlRGlyICkgKSB7CgkJCQlpZiAoIHRydWUgIT09IHBiX2JhY2t1cGJ1Z
GR5OjokZmlsZXN5c3RlbS0+bWtkaXIoICRzYXZlRGlyICkgKSB7CgkJCQkJJG1lc3NhZ2UgPSAnRXJyb3Ig
IzMyNzgzMjogVW5hYmxlIHRvIGNyZWF0ZSBkaXJlY3RvcnkgYCcgLiAkc2F2ZURpciAuICdgLiBDaGVjayB
wZXJtaXNzaW9ucyBvciBtYW51YWxseSBjcmVhdGUuIEhhbHRpbmcgdG8gcHJlc2VydmUgZGVwbG95bWVudC
BpbnRlZ3JpdHknOwoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRtZXNzYWdlICk7C
gkJCQkJc2VsZjo6X3JlcGx5KCBhcnJheSggJ3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICRtZXNz
YWdlICkgKTsKCQkJCX0KCQkJfQoJCQkKCQkJLy8gT3Blbi9jcmVhdGUgZmlsZSBmb3Igd3JpdGUvYXBwZW5
kLgoJCQlpZiAoIGZhbHNlID09PSAoICRmcyA9IGZvcGVuKCAkc2F2ZUZpbGUsICdhJyApICkpIHsKCQkJCS
RtZXNzYWdlID0gJ0Vycm9yICM0ODkzMzk4NDg6IFVuYWJsZSB0byBmb3BlbiBmaWxlIGAnIC4gJHNhdmVGa
WxlIC4gJ2AuJzsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICRtZXNzYWdlICk7CgkJ
CQlzZWxmOjpfcmVwbHkoIGFycmF5KCAnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJG1lc3NhZ2U
gKSApOwoJCQl9CgkJCQoJCQkvLyBTZWVrIHRvIHBvc2l0aW9uIChpZiBhcHBsaWNhYmxlKS4KCQkJaWYgKC
AwICE9IGZzZWVrKCAkZnMsICRzZWVrVG8gKSApIHsKCQkJCUBmY2xvc2UoICRmcyApOwoJCQkJJG1lc3NhZ
2UgPSAnRXJyb3IgIzg1ODQ4ODQ6IFVuYWJsZSB0byBmc2VlayBmaWxlLic7CgkJCQlwYl9iYWNrdXBidWRk
eTo6c3RhdHVzKCAnZXJyb3InLCAkbWVzc2FnZSApOwoJCQkJc2VsZjo6X3JlcGx5KCBhcnJheSggJ3N1Y2N
lc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICRtZXNzYWdlICkgKTsKCQkJfQoJCQkKCQkJLy8gQ2hlY2sgZG
F0YSBsZW5ndGguCgkJCSRnb3RMZW5ndGggPSBzdHJsZW4oICRmaWxlWyAnZGF0YScgXSApOwoJCQlpZiAoI
CRmaWxlWydkYXRhbGVuJ10gIT0gJGdvdExlbmd0aCApIHsKCQkJCUBmY2xvc2UoICRmcyApOwoJCQkJJG1l
c3NhZ2UgPSAnRXJyb3IgIzQzNTU0NDU6IFJlY2VpdmVkIGRhdGEgb2YgbGVuZ3RoIGAnIC4gJGdvdExlbmd
0aCAuICdgIGRpZCBub3QgbWF0Y2ggc2VudCBsZW5ndGggb2YgYCcgLiAkZmlsZVsgJ2RhdGFsZW4nIF0gLi
AnYC4gRGF0YSBtYXkgaGF2ZSBiZWVuIHRydW5jYXRlZC4nOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1c
yggJ2Vycm9yJywgJG1lc3NhZ2UgKTsKCQkJCXNlbGY6Ol9yZXBseSggYXJyYXkoICdzdWNjZXNzJyA9PiBm
YWxzZSwgJ2Vycm9yJyA9PiAkbWVzc2FnZSApICk7CgkJCX0KCQkJCgkJCS8vIFdyaXRlIHRvIGZpbGUuCgk
JCWlmICggZmFsc2UgPT09ICggJGJ5dGVzV3JpdHRlbiA9IGZ3cml0ZSggJGZzLCAkZmlsZVsgJ2RhdGEnIF
0gKSApICkgewoJCQkJQGZjbG9zZSggJGZzICk7CgkJCQlAdW5saW5rKCAkc2F2ZUZpbGUgKTsKCQkJCSRtZ
XNzYWdlID0gJ0Vycm9yICMzOTg0Mzk0OiBFcnJvciB3cml0aW5nIHRvIGZpbGUgYCcgLiAkc2F2ZUZpbGUg
LiAnYC4nOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJG1lc3NhZ2UgKTsKCQkJCXN
lbGY6Ol9yZXBseSggYXJyYXkoICdzdWNjZXNzJyA9PiBmYWxzZSwgJ2Vycm9yJyA9PiAkbWVzc2FnZSApIC
k7CgkJCX0gZWxzZSB7CgkJCQlAZmNsb3NlKCAkZnMgKTsKCQkJCQoJCQkJJG1lc3NhZ2UgPSAnV3JvdGUgY
CcgLiAkYnl0ZXNXcml0dGVuIC4gJ2AgYnl0ZXMgdG8gYCcgLiAkc2F2ZUZpbGUgLiAnYC4nOwoJCQkJJGJ5
dGVzUmVjZWl2ZWQgKz0gJGJ5dGVzV3JpdHRlbjsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXR
haWxzJywgJG1lc3NhZ2UgKTsKCQkJCQoJCQkJaWYgKCAoICcxJyA9PSAkZmlsZVsgJ3Rlc3QnIF0gKSB8fC
AoICd0ZXN0JyA9PSAkdHlwZSApICkgewoJCQkJCUB1bmxpbmsoICRzYXZlRmlsZSApOwoJCQkJfSBlbHNlI
HsKCQkJCQlpZiAoIHRydWUgPT09ICRmaWxlWydkb25lJ10gKSB7CgkJCQkJCSRkZXN0RmlsZSA9IEFCU1BB
VEggLiBiYXNlbmFtZSggJHNhdmVGaWxlICk7CgkJCQkJCS8qCgkJCQkJCWlmICggZmFsc2UgPT09IEBjb3B
5KCAkc2F2ZUZpbGUsICRkZXN0RmlsZSApICkgewoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2
Vycm9yJywgJ0Vycm9yICM5NDg0NTQ6IFVuYWJsZSB0byBjb3B5IHRlbXBvcmFyeSBmaWxlIGAnIC4gJHNhd
mVGaWxlIC4gJ2AgdG8gYCcgLiAkZGVzdEZpbGUgLiAnYC4nICk7CgkJCQkJCX0KCQkJCQkJQHVubGluaygg
JHNhdmVGaWxlICk7CgkJCQkJCSovCgkJCQkJCQoJCQkJCQkvLyBNZWRpYSBmaWxlcyBuZWVkIHRoZWlyIHR
odW1ibmFpbHMgcmVnZW5lcmF0ZWQgc28gZ2V0IGF0dGFjaG1lbnQgSUQuCgkJCQkJCS8qIENBTk5PVCBETy
BUSElTIEhFUkUgLi4uIGJlY2F1c2UgaXRlbSBtYXkgbm90IGJlIGluIHRoZSBEQiB5ZXQuIG5lZWQgdG8gd
HJhbnNmZXIgdGh1bWJuYWlscz8KCQkJCQkJaWYgKCAnbWVkaWEnID09ICR0eXBlICkgewoJCQkJCQkJZ2xv
YmFsICR3cGRiOwoJCQkJCQkJJHNxbCA9ICJTRUxFQ1QgcG9zdF9pZCBGUk9NIGAiIC4gREJfTkFNRSAuICJ
gLmAiIC4gJHdwZGItPnByZWZpeCAuICJwb3N0bWV0YWAgV0hFUkUgYG1ldGFfdmFsdWVgID0gJXMgQU5EIG
BtZXRhX2tleWAgPSAnX3dwX2F0dGFjaGVkX2ZpbGUnIjsKCQkJCQkJCSRzcWwgPSAkd3BkYi0+cHJlcGFyZ
SggJHNxbCwgJGZpbGVQYXRoICk7CgkJCQkJCQllcnJvcl9sb2coICRzcWwgKTsKCQkJCQkJCSRhdHRhY2ht
ZW50X2lkID0gJHdwZGItPmdldF92YXIoICRzcWwgKTsKCQkJCQkJCWVycm9yX2xvZyggJ0lEOiAnIC4gJGF
0dGFjaG1lbnRfaWQgKTsKCQkJCQkJCWVycm9yX2xvZyggJ3NhdmVmaWxlOiAnIC4gJHNhdmVGaWxlICk7Cg
kJCQkJCQlyZXF1aXJlICggQUJTUEFUSCAuICd3cC1hZG1pbi9pbmNsdWRlcy9pbWFnZS5waHAnICk7CgkJC
QkJCQkkYXR0YWNoX2RhdGEgPSB3cF9nZW5lcmF0ZV9hdHRhY2htZW50X21ldGFkYXRhKCAkYXR0YWNobWVu
dF9pZCwgJHNhdmVGaWxlICk7CgkJCQkJCQl3cF91cGRhdGVfYXR0YWNobWVudF9tZXRhZGF0YSggJGF0dGF
jaG1lbnRfaWQsICAkYXR0YWNoX2RhdGEgKTsKCQkJCQkJfQoJCQkJCQkqLwoJCQkJCQkKCQkJCQkJJGZpbG
VSZWNlaXZlQ291bnQrKzsKCQkJCQl9CgkJCQl9CgkJCQkKCQkJCWNvbnRpbnVlOwoJCQl9CgkJfQoJCQoJC
XNlbGY6Ol9yZXBseSggYXJyYXkoICdzdWNjZXNzJyA9PiB0cnVlLCAnbWVzc2FnZScgPT4gJ1JlY2VpdmVk
IGEgdG90YWwgb2YgYCcgLiAkZmlsZVJlY2VpdmVDb3VudCAuICcgZmlsZXMsIGAnIC4gJGJ5dGVzUmVjZWl
2ZWQgLiAnYCBieXRlcy4nICkgKTsKCQkKCX0gLy8gRW5kIF9zZW5kRmlsZSgpLgoJCgkKCQoJcHJpdmF0ZS
BzdGF0aWMgZnVuY3Rpb24gX3ZlcmJfZ2V0UHJlRGVwbG95SW5mbygpIHsKCQkkc2hhMSA9IGZhbHNlOwoJC
WlmICggJzEnID09IHNlbGY6OiRfaW5jb21pbmdQYXlsb2FkWyAnc2hhMScgXSApIHsKCQkJJHNoYTEgPSB0
cnVlOwoJCX0KCQkKCQlzZWxmOjpfcmVwbHkoIGFycmF5KCAnc3VjY2VzcycgPT4gdHJ1ZSwgJ2RhdGEnID0
+IGJhY2t1cGJ1ZGR5X2FwaTo6Z2V0UHJlRGVwbG95SW5mbyggJHNoYTEsIHNlbGY6OiRfaW5jb21pbmdQYX
lsb2FkWyAnZGVzdGluYXRpb25TZXR0aW5ncycgXSApICkgKTsKCX0gLy8gRW5kIF92ZXJiX2dldFByZURlc
GxveUluZm8oKS4KCQoJCglwcml2YXRlIHN0YXRp
YyBmdW5jdGlvbiBfdmVyYl9yZW5kZXJJbXBvcnRCdWRkeSgpIHsKCQkkYmFja3VwRmlsZSA9IHNlbGY6OiR
faW5jb21pbmdQYXlsb2FkWyAnYmFja3VwRmlsZScgXTsKCQkkcGFzc3dvcmQgPSBtZDUoIG1kNSggYmFja3
VwYnVkZHlfY29yZTo6Z2V0SHR0cEhlYWRlciggJ2JhY2t1cGJ1ZGR5LWFwaS1rZXknICkgKSApOwoJCSRtY
XhfZXhlY3V0aW9uX3RpbWUgPSBzZWxmOjokX2luY29taW5nUGF5bG9hZFsnbWF4X2V4ZWN1dGlvbl90aW1l
J107CgkJCgkJJGRvSW1wb3J0Q2xlYW51cCA9IHRydWU7CgkJaWYgKCAndHJ1ZScgPT0gc2VsZjo6JF9pbmN
vbWluZ1BheWxvYWRbJ2RvSW1wb3J0Q2xlYW51cCddICkgewoJCQkkZG9JbXBvcnRDbGVhbnVwID0gdHJ1ZT
sKCQl9IGVsc2VpZiAoICdmYWxzZScgPT0gc2VsZjo6JF9pbmNvbWluZ1BheWxvYWRbJ2RvSW1wb3J0Q2xlY
W51cCddICkgewoJCQkkZG9JbXBvcnRDbGVhbnVwID0gZmFsc2U7CgkJfQoJCQoJCQoJCS8vIFN0b3JlIHRo
aXMgc2VyaWFsIGluIHNldHRpbmdzIHRvIGNsZWFudXAgYW55IHRlbXAgZGIgdGFibGVzIGluIHRoZSBmdXR
1cmUgd2l0aCB0aGlzIHNlcmlhbCB3aXRoIHBlcmlvZGljIGNsZWFudXAuCgkJJGJhY2t1cFNlcmlhbCA9IG
JhY2t1cGJ1ZGR5X2NvcmU6OmdldF9zZXJpYWxfZnJvbV9maWxlKCAkYmFja3VwRmlsZSApOwoJCXBiX2JhY
2t1cGJ1ZGR5Ojokb3B0aW9uc1sncm9sbGJhY2tfY2xlYW51cHMnXVsgJGJhY2t1cFNlcmlhbCBdID0gdGlt
ZSgpOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzYXZlKCk7CgkJCgkJJHNldEJsb2dQdWJsaWMgPSAnJzsKCQlpZiA
oICd0cnVlJyA9PSBzZWxmOjokX2luY29taW5nUGF5bG9hZFsnc2V0QmxvZ1B1YmxpYyddICkgewoJCQkkc2
V0QmxvZ1B1YmxpYyA9IHRydWU7CgkJfSBlbHNlaWYgKCAnZmFsc2UnID09IHNlbGY6OiRfaW5jb21pbmdQY
Xlsb2FkWydzZXRCbG9nUHVibGljJ10gKSB7CgkJCSRzZXRCbG9nUHVibGljID0gZmFsc2U7CgkJfQoJCSRh
ZGRpdGlvbmFsU3RhdGVJbmZvID0gYXJyYXkoCgkJCSdjbGVhbnVwJyA9PiBhcnJheSgKCQkJCSdzZXRfYmx
vZ19wdWJsaWMnID0+ICRzZXRCbG9nUHVibGljLAoJCQkpCgkJKTsKCQlpZiAoIGlzX251bWVyaWMoICRtYX
hfZXhlY3V0aW9uX3RpbWUgKSApIHsKCQkJJGFkZGl0aW9uYWxTdGF0ZUluZm9bJ21heEV4ZWN1dGlvblRpb
WUnXSA9ICRtYXhfZXhlY3V0aW9uX3RpbWU7CgkJfQoJCQoJCSRpbXBvcnRGaWxlU2VyaWFsID0gYmFja3Vw
YnVkZHlfY29yZTo6ZGVwbG95bWVudEltcG9ydEJ1ZGR5KCAkcGFzc3dvcmQsIGJhY2t1cGJ1ZGR5X2NvcmU
6OmdldEJhY2t1cERpcmVjdG9yeSgpIC4gJGJhY2t1cEZpbGUsICRhZGRpdGlvbmFsU3RhdGVJbmZvLCAkZG
9JbXBvcnRDbGVhbnVwICk7CgkJaWYgKCBpc19hcnJheSggJGltcG9ydEZpbGVTZXJpYWwgKSApIHsKCQkJc
2VsZjo6X3JlcGx5KCBhcnJheSggJ3N1Y2Nlc3MnID0+IGZhbHNlLCAnZXJyb3InID0+ICRpbXBvcnRGaWxl
U2VyaWFsWzFdICkgKTsKCQl9IGVsc2UgewoJCQlzZWxmOjpfcmVwbHkoIGFycmF5KCAnc3VjY2VzcycgPT4
gdHJ1ZSwgJ2ltcG9ydEZpbGVTZXJpYWwnID0+ICRpbXBvcnRGaWxlU2VyaWFsICkgKTsKCQl9CgkJCgl9IC
8vIEVuZCBfdmVyYl9yZW5kZXJJbXBvcnRCdWRkeSgpLgoJCgkKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24ga
W5pdF9pbmNvbWluZ19jYWxsKCkgewoJCSRrZXlfcHVibGljID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0SHR0
cEhlYWRlciggJ2JhY2t1cGJ1ZGR5LWFwaS1rZXknICk7CgkJJHZlcmIgPSBiYWNrdXBidWRkeV9jb3JlOjp
nZXRIdHRwSGVhZGVyKCAnYmFja3VwYnVkZHktdmVyYicgKTsKCQkkdGltZSA9IGJhY2t1cGJ1ZGR5X2Nvcm
U6OmdldEh0dHBIZWFkZXIoICdiYWNrdXBidWRkeS1ub3cnICk7CgkJJHNpZ25hdHVyZSA9IGJhY2t1cGJ1Z
GR5X2NvcmU6OmdldEh0dHBIZWFkZXIoICdiYWNrdXBidWRkeS1zaWduYXR1cmUnICk7CgoJCS8vIFRlbXBv
cmFyeSBob2xkIG9mIGluY29taW5nIHBheWxvYWQuIFJlYWRpbmcgcGhwOi8vaW5wdXQgY2xlYXJzIGl0IHN
vIGl0IGNhbm5vdCBiZSByZS1yZWFkLiBXQVJOSU5HOiBEbyBOT1QgdW5zZXJpYWxpemUgdW50aWwgY29uZm
lybWVkIGZyb20gdmFsaWQga2V5LgoJCWlmICggZmFsc2UgPT09ICggJF9pbmNvbWluZ1BheWxvYWQgPSBAZ
mlsZV9nZXRfY29udGVudHMoJ3BocDovL2lucHV0JykgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1
cyggJ2Vycm9yJywgJ0Vycm9yICM0Mzg5MzQ4NDM0MzogVW5hYmxlIHRvIHJlYWQgcGhwOi8vaW5wdXQgKHZ
hbD1mYWxzZSkuJyApOwoJCX0KCQkKCQkkbWF4QWdlID0gNjAqNjA7IC8vIFRpbWUgaW4gc2Vjb25kcyBhZn
RlciB3aGljaCBhIHNpZ25lZCByZXF1ZXN0IGlzIGRlZW1lZCB0b28gb2xkLiBIZWxwIHByZXZlbnQgcmVwb
GF5cy4gMWhyLgoJCWlmICggMCA9PSBjb3VudCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydyZW1vdGVf
YXBpJ11bJ2tleXMnXSApICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3I
gIzM0ODQ5NDg5MzQzOiBObyBBUEkga2V5cyBmb3VuZC4gU2hvdWxkIG5vdCBoYXBwZW4uJyApOwoJCQlyZX
R1cm4gZmFsc2U7CgkJfQoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0Fib3V0IHRvI
GNoZWNrIGtleXMuLi4nICk7CgkJZm9yZWFjaCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydyZW1vdGVf
YXBpJ11bJ2tleXMnXSBhcyAka2V5ICkgewoJCQkka2V5QXJyID0gc2VsZjo6a2V5X3RvX2FycmF5KCAka2V
5ICk7CgkJCWlmICggZmFsc2UgPT09ICRrZXlBcnIgKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKC
AnZGV0YWlscycsICdEZXBsb3ltZW50IGluY29taW5nIGNhbGw6IEFQSSBrZXkgYCcgLiAka2V5IC4gJ2AgZ
GlkIE5PVCBtYXRjaC4gVHJ5aW5nIG5leHQgKGlmIGFueSkuLi4nICk7CgkJCQkKCQkJCXNlbGY6Ol9lcnJv
ciggJ1dhcm5pbmcgIzgzNDk4MzQ0MzogRmFpbHVyZSBkZWNvZGluZyBrZXkuIFNlZSByZXR1cm5lZCBsb2c
gZGV0YWlscy4nICk7CgkJCQljb250aW51ZTsKCQkJfQoJCQlpZiAoICRrZXlfcHVibGljID09ICRrZXlBcn
JbJ2tleV9wdWJsaWMnXSApIHsgLy8gSW5jb21pbmcgcHVibGljIGtleSBtYXRjaGVzIGEgc3RvcmVkIHB1Y
mxpYyBrZXkuCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEZXBsb3ltZW50IGlu
Y29taW5nIGNhbGw6IEtleSBtYXRjaGVzLicgKTsKCQkJCQoJCQkJLy8gSGFzIGNhbGwgZXhwaXJlZD8KCQk
JCWlmICggKCAhIGlzX251bWVyaWMoICR0aW1lICkgKSB8fCAoICggdGltZSgpIC0gJHRpbWUgKSA+ICRtYX
hBZ2UgKSApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEZXBsb3ltZW50I
GluY29taW5nIGNhbGw6IEtleSB0aW1lc3RhbXAgZXhwaXJlZC4gVG9vIG9sZCEgQ3VycmVudGx5OiBgJyAu
IHRpbWUoKSAuICdgLiBLZXkgdGltZTogYCcgLiAkdGltZSAuICdgLicgKTsKCQkJCQkKCQkJCQkkbWVzc2F
nZSA9ICdFcnJvciAjNDg0NTk4NTogQVBJIGNhbGwgdGltZXN0YW1wIGlzIHRvbyBvbGQuIFZlcmlmeSB0aG
UgcmVhbHRpbWUgY2xvY2sgb24gZWFjaCBzZXJ2ZXIgaXMgcmVsYXRpdmVseSBpbiBzeW5jLic7CgkJCQkJc
GJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJG1lc3NhZ2UgKTsKCQkJCQlzZWxmOjpfcmVwbHko
IGFycmF5KCAnc3VjY2VzcycgPT4gZmFsc2UsICdlcnJvcicgPT4gJG1lc3NhZ2UgKSApOwoJCQkJCXJldHV
ybiBmYWxzZTsKCQkJCX0KCQkJCS8vIFZlcmlmeSBzaWduYXR1cmUuCgkJCQkkY2FsY3VsYXRlZFNpZ25hdH
VyZSA9IG1kNSggJHRpbWUgLiAkdmVyYiAuICRrZXlfcHVibGljIC4gJGtleUFyclsna2V5X3NlY3JldCddI
C4gJF9pbmNvbWluZ1BheWxvYWQgKTsKCQkJCWlmICggJGNhbGN1bGF0ZWRTaWduYXR1cmUgIT0gJHNpZ25h
dHVyZSApIHsgLy8gS2V5IG1hdGNoZWQgYnV0IHNpZ25hdHVyZSBmYWlsZWQuIERhdGEgaGFzIGJlZW4gdGV
tcGVyZWQgd2l0aCBvciBkYW1hZ2VkIGluIHRyYW5zaXQuCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cy
ggJ2Vycm9yJywgJ0RlcGxveW1lbnQgaW5jb21pbmcgY2FsbDogS2V5IHNpZ25hdHVyZSBtYXRjaCBmYWlsZ
WQuJyApOwoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0gZWxzZSB7IC8vIFNpZ25hdHVyZSBnb29kLgoJCQkJ
CXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdEZXBsb3ltZW50IGluY29taW5nIGNhbGw6IFN
pZ25hdHVyZSBnb29kLicgKTsKCQkJCQkKCQkJCQlpZiAoIGZhbHNlID09PSAoIHNlbGY6OiRfaW5jb21pbm
dQYXlsb2FkID0gQHVuc2VyaWFsaXplKCAkX2luY29taW5nUGF5bG9hZCApICkgKSB7IC8vIENvcnJ1cHQgc
GF5bG9hZC4KCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0RlcGxveW1lbnQgaW5j
b21pbmcgY2FsbDogUGF5bG9hZCBjb3JydXB0L3VuZGVjb2RhYmxlLicgKTsKCQkJCQkJCgkJCQkJCXNlbGY
6OiRfaW5jb21pbmdQYXlsb2FkID0gJyc7CgkJCQkJCSRtZXNzYWdlID0gJ0JhY2t1cEJ1ZGR5IEVycm9yIC
MzODkzMzgzOiBWYWxpZCBrZXkgYnV0IGluY29taW5nIHBheWxvYWQgdW5zZXJpYWxpemFibGUuIENvcnJ1c
HQ/JzsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJG1lc3NhZ2UgKTsKCQkJCQkJ
ZXJyb3JfbG9nKCAkbWVzc2FnZSApOwoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJCQoJCQkJCXB
iX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0RlcGxveW1lbnQgaW5jb21pbmcgY2FsbDogS2
V5IGF1dGggc3VjY2Vzcy4gUHJvY2VlZGluZy4uLicgKTsKCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCX0KCQkJf
SBlbHNlIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ1dhcm5pbmcgIzQ4OTM0
OTgzNDogSW5jb21pbmcga2V5IGRpZCBub3QgbWF0Y2ggcHVibGljIGtleS4gT2xkIGtleSBiZWluZyB1c2V
kPyBUaGlzIHNpdGUgcHVibGljIGtleTogYCcgLiAka2V5QXJyWydrZXlfcHVibGljJ10gLiAnYC4gUmVjZW
l2ZWQ6IGAnIC4gJGtleV9wdWJsaWMgLiAnYC4nICk7CgkJCX0KCQl9CgkJcGJfYmFja3VwYnVkZHk6OnN0Y
XR1cyggJ2Vycm9yJywgJ0Vycm9yICM4MzkzODQ5NDogTWFkZSBpdCB0byBlbmQgb2YgY2FsbCBpbml0Licg
KTsKCQlyZXR1cm4gZmFsc2U7Cgl9IC8vIEVuZCBpbml0X2luY29taW5nX2NhbGwoKS4KCgkKCXB1YmxpYyB
zdGF0aWMgZnVuY3Rpb24ga2V5X3RvX2FycmF5KCAka2V5ICkgewoJCSRrZXkgPSB0cmltKCAka2V5ICk7Cg
kJaWYgKCBmYWxzZSA9PT0gKCAka2V5QiA9IGJhc2U2NF9kZWNvZGUoICRrZXkgKSApICkgewoJCQlwYl9iY
WNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3IgIzg0OTM0ODc0OTgzNDogVW5hYmxlIHRvIGRl
Y29kZSBrZXkgZGF0YSBgJyAuICRrZXkgLiAnYC4nICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJaWYgKCB
mYWxzZSA9PT0gKCAka2V5QyA9IHVuc2VyaWFsaXplKCAka2V5QiApICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZG
R5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjMzI4OTM3MjMzOiBVbmFibGUgdG8gdW5zZXJpYWxpemUga
2V5IGRhdGEgYCcgLiAka2V5QiAuICdgLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlyZXR1cm4gJGtl
eUM7Cgl9CgkKCQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB2YWxpZGF0ZV9hcGlfa2V5KCAka2V5ICkgewo
JCWlmICggISBkZWZpbmVkKCAnQkFDS1VQQlVERFlfQVBJX0VOQUJMRScgKSB8fCAoIFRSVUUgIT0gQkFDS1
VQQlVERFlfQVBJX0VOQUJMRSApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCS8qCgkJaWYgKCAhIGRlZ
mluZWQoICdCQUNLVVBCVUREWV9BUElfU0FMVCcgKSB8fCAoICdDSEFOR0VNRScgPT0gQkFDS1VQQlVERFlf
QVBJX1NBTFQgKSB8fCAoIHN0cmxlbiggQkFDS1VQQlVERFlfQVBJX1NBTFQgKSA8IDUgKSApIHsKCQkJcmV
0dXJuIGZhbHNlOwoJCX0KCQkqLwoJCWlmICggJycgPT0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydhcG
lfa2V5J10gKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJCgkJCgkJJGtleSA9IHNlbGY6OmtleV90b19hc
nJheSggJGtleSApOwoJCWlmICggJGtleSA9PSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2FwaV9rZXkn
XSApIHsKCQkJcmV0dXJuIHRydWU7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkKCX0gLy8
gRW5kIHZhbGlkYXRlX2FwaV9rZXkoKS4KCQoJCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlX2
tleSgpIHsKCQlpZiAoICEgZGVmaW5lZCggJ0JBQ0tVUEJVRERZX0FQSV9FTkFCTEUnICkgfHwgKCBUUlVFI
CE9IEJBQ0tVUEJVRERZX0FQSV9FTkFCTEUgKSApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkvKgoJCWlm
ICggISBkZWZpbmVkKCAnQkFDS1VQQlVERFlfQVBJX1NBTFQnICkgfHwgKCAnQ0hBTkdFTUUnID09IEJBQ0t
VUEJVRERZX0FQSV9TQUxUICkgfHwgKCBzdHJsZW4oIEJBQ0tVUEJVRERZX0FQSV9TQUxUICkgPCA1ICkgKS
B7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJKi8KCQkKCQkkc2l0ZXVybCA9IHNpdGVfdXJsKCk7CgkJJGhvb
WV1cmwgPSBob21lX3VybCgpOwoJCSRyYW5kID0gcGJfYmFja3VwYnVkZHk6OnJhbmRvbV9zdHJpbmcoIDEy
ICk7CgkJJHJhbmQyID0gcGJfYmFja3VwYnVkZHk6OnJhbmRvbV9zdHJpbmcoIDEyICk7CgkJCgkJJGtleSA
9IGFycmF5KAoJCQkna2V5X3ZlcnNpb24nID0+IDEsCgkJCSdrZXlfcHVibGljJyA9PiBtZDUoICRyYW5kIC
4gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydsb2dfc2VyaWFsJ10gLiAkc2l0ZXVybCAuICRob21ldXJsI
C4gdGltZSgpICksCgkJCSdrZXlfc2VjcmV0JyA9PiBtZDUoICRyYW5kMiAuIHBiX2JhY2t1cGJ1ZGR5Ojok
b3B0aW9uc1snbG9nX3NlcmlhbCddIC4gJHNpdGV1cmwgLiAkaG9tZXVybCAuIHRpbWUoKSApLAoJCQkna2V
5X2NyZWF0ZWQnID0+IHRpbWUoKSwKCQkJJ3NpdGV1cmwnID0+ICRzaXRldXJsLAoJCQknaG9tZXVybCcgPT
4gJGhvbWV1cmwsCgkJKTsKCQkKCQkKCQlyZXR1cm4gYmFzZTY0X2VuY29kZSggc2VyaWFsaXplKCAka2V5I
CkgKTsKCQkKCX0gLy8gRW5kIGdlbmVyYXRlX2FwaV9rZXkoKS4KCQoJCgkvKiBfZXJyb3IoKQoJICoKCSAq
IExvZ3MgZXJyb3IgbWVzc2FnZXMgZm9yIHJldHJpZXZhbCB3aXRoIGdldEVycm9ycygpLgoJICoKCSAqIEB
wYXJhbQlzdHJpbmcJCSRtZXNzYWdlCUVycm9yIG1lc3NhZ2UgdG8gbG9nLgoJICogQHJldHVybgludWxsCg
kgKi8KCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9lcnJvciggJG1lc3NhZ2UgKSB7CgkJLy9lcnJvcl9sb
2coICRtZXNzYWdlICk7CgkJc2VsZjo6JF9lcnJvcnNbXSA9ICRtZXNzYWdlOwoJCXBiX2JhY2t1cGJ1ZGR5
OjpzdGF0dXMoICdlcnJvcicsICRtZXNzYWdlICk
7CgkJcmV0dXJuIGZhbHNlOwoJfQoJCgkKCQoJLyogZ2V0RXJyb3JzKCkKCSAqCgkgKiBHZXQgYW55IGVycm
9ycyB3aGljaCBtYXkgaGF2ZSBvY2N1cnJlZC4KCSAqCgkgKiBAcmV0dXJuCWFycmF5IAkJUmV0dXJucyBhb
iBhcnJheSBvZiBzdHJpbmcgZXJyb3IgbWVzc2FnZXMuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24g
Z2V0RXJyb3JzKCkgewoJCXJldHVybiBzZWxmOjokX2Vycm9yczsKCX0gLy8gRW5kIGdldEVycm9ycygpOwo
JCgkKCQp9IC8vIEVuZCBjbGFzcy4K
###PACKDATA,FILE_END,/classes/remote_api.php,importbuddy/classes/remote_api.php
###PACKDATA,FILE_START,/js/jquery.leanModal.min.js,importbuddy/js/jquery.leanModal.
min.js
KGZ1bmN0aW9uKCQpewogCiAgICAkLmZuLmV4dGVuZCh7IAogICAgICAgICAKICAgICAgICBsZWFuTW9kYWw
6IGZ1bmN0aW9uKG9wdGlvbnMpIHsKIAkJCQogCQkJdmFyIHdpbiA9IHdpbmRvdy5kaWFsb2dBcmd1bWVudH
MgfHwgb3BlbmVyIHx8IHBhcmVudCB8fCB0b3A7CiAJCQkKICAgICAgICAgICAgdmFyIGRlZmF1bHRzID0ge
wogICAgICAgICAgICAgICAgdG9wOiAxMDAsCiAgICAgICAgICAgICAgICBvdmVybGF5OiAwLjUsCiAgICAg
ICAgICAgICAgICBjbG9zZUJ1dHRvbjogbnVsbAogICAgICAgICAgICB9OwogICAgICAgICAgICAKICAgICA
gICAgICAgdmFyIG92ZXJsYXkgPSAkKCI8ZGl2IGlkPSdsZWFuX292ZXJsYXknPjwvZGl2PiIpOwogICAgIC
AgICAgICAKICAgICAgICAgICAgJCgiYm9keSIpLmFwcGVuZChvdmVybGF5KTsKICAgICAgICAgICAgICAgI
CAKICAgICAgICAgICAgb3B0aW9ucyA9ICAkLmV4dGVuZChkZWZhdWx0cywgb3B0aW9ucyk7CiAKICAgICAg
ICAgICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgCiAgICAgICAgICAgICA
gICB2YXIgbyA9IG9wdGlvbnM7CiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJCh0aGlzKS5jbG
ljayhmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgCXZhciBtb2RhbF9pZCA9I
CQodGhpcykuYXR0cigiaHJlZiIpOwoKCQkJCSQoIiNsZWFuX292ZXJsYXkiKS5jbGljayhmdW5jdGlvbigp
IHsgCiAgICAgICAgICAgICAgICAgICAgIGNsb3NlX21vZGFsKG1vZGFsX2lkKTsgICAgICAgICAgICAgICA
gICAgIAogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICQoby
5jbG9zZUJ1dHRvbikuY2xpY2soZnVuY3Rpb24oKSB7IAogICAgICAgICAgICAgICAgICAgICBjbG9zZV9tb
2RhbChtb2RhbF9pZCk7ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgICAgICAgICAgICAgCQogICAgICAgICAgICAgIAl2YXIgbW9kYWxfaGVpZ2h0ID0gJChtb2RhbF9
pZCkub3V0ZXJIZWlnaHQoZmFsc2UpOwogICAgICAgIAkgIAl2YXIgbW9kYWxfd2lkdGggPSAkKG1vZGFsX2
lkKS5vdXRlcldpZHRoKGZhbHNlKTsKCiAgICAgICAgCQkkKCcjbGVhbl9vdmVybGF5JykuY3NzKHsgJ2Rpc
3BsYXknIDogJ2Jsb2NrJywgb3BhY2l0eSA6IDAgfSk7CgogICAgICAgIAkJJCgnI2xlYW5fb3ZlcmxheScp
LmZhZGVUbygyMDAsby5vdmVybGF5KTsKCiAgICAgICAgCQkkKG1vZGFsX2lkKS5jc3MoeyAKICAgICAgICA
JCQogICAgICAgIAkJCSdkaXNwbGF5JyA6ICdibG9jaycsCiAgICAgICAgCQkJJ3Bvc2l0aW9uJyA6ICdmaX
hlZCcsCiAgICAgICAgCQkJJ29wYWNpdHknIDogMCwKICAgICAgICAJCQknei1pbmRleCc6IDExMDAwLAogI
CAgICAgIAkJCSdsZWZ0JyA6IDUwICsgJyUnLAogICAgICAgIAkJCSdtYXJnaW4tbGVmdCcgOiAtKG1vZGFs
X3dpZHRoLzIpICsgInB4IiwKICAgICAgICAJCQkndG9wJyA6IG8udG9wICsgInB4IgogICAgICAgIAkJCiA
gICAgICAgCQl9KTsKCiAgICAgICAgCQkkKG1vZGFsX2lkKS5mYWRlVG8oMjAwLDEpOwoKICAgICAgICAgIC
AgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIAl9KTsKI
CAgICAgICAgICAgIAogICAgICAgICAgICB9KTsKCgkJCWZ1bmN0aW9uIGNsb3NlX21vZGFsKG1vZGFsX2lk
KXsKCiAgICAgICAgCQkkKCIjbGVhbl9vdmVybGF5IikuZmFkZU91dCgyMDApOwoKICAgICAgICAJCSQobW9
kYWxfaWQpLmNzcyh7ICdkaXNwbGF5JyA6ICdub25lJyB9KTsKCQkJCgkJCX0KICAgIAogICAgICAgIH0KIC
AgIH0pOwogICAgIAp9KShqUXVlcnkpOw==
###PACKDATA,FILE_END,/js/jquery.leanModal.min.js,importbuddy/js/jquery.leanModal.mi
n.js
###PACKDATA,FILE_START,/css/animate.css,importbuddy/css/animate.css
QGNoYXJzZXQgIlVURi04IjsKCi8qIQogKiBhbmltYXRlLmNzcyAtaHR0cDovL2RhbmVkZW4ubWUvYW5pbWF
0ZQogKiBWZXJzaW9uIC0gMy41LjEKICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIC0gaHR0cD
ovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL01JVAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTYgRGFuaWVsI
EVkZW4KICovCgouYW5pbWF0ZWR7LXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246MXM7YW5pbWF0aW9uLWR1
cmF0aW9uOjFzOy13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTpib3RoO2FuaW1hdGlvbi1maWxsLW1vZGU
6Ym90aH0uYW5pbWF0ZWQuaW5maW5pdGV7LXdlYmtpdC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZm
luaXRlO2FuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6aW5maW5pdGV9LmFuaW1hdGVkLmhpbmdley13ZWJra
XQtYW5pbWF0aW9uLWR1cmF0aW9uOjJzO2FuaW1hdGlvbi1kdXJhdGlvbjoyc30uYW5pbWF0ZWQuYm91bmNl
SW4sLmFuaW1hdGVkLmJvdW5jZU91dCwuYW5pbWF0ZWQuZmxpcE91dFgsLmFuaW1hdGVkLmZsaXBPdXRZey1
3ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOi43NXM7YW5pbWF0aW9uLWR1cmF0aW9uOi43NXN9QC13ZWJraX
Qta2V5ZnJhbWVzIGJvdW5jZXswJSwyMCUsNTMlLDgwJSx0b3std2Via2l0LWFuaW1hdGlvbi10aW1pbmctZ
nVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yMTUsLjYxLC4zNTUsMSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlv
bjpjdWJpYy1iZXppZXIoLjIxNSwuNjEsLjM1NSwxKTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDA
pO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfTQwJSw0MyV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2
QoMCwtMzBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMzBweCwwKX00MCUsNDMlLDcwJXstd2Via
2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC43NTUsLjA1LC44NTUsLjA2KTth
bmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNzU1LC4wNSwuODU1LC4wNil9NzAley1
3ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTE1cHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKD
AsLTE1cHgsMCl9OTAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTRweCwwKTt0cmFuc2Zvc
m06dHJhbnNsYXRlM2QoMCwtNHB4LDApfX1Aa2V5ZnJhbWVzIGJvdW5jZXswJSwyMCUsNTMlLDgwJSx0b3st
d2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yMTUsLjYxLC4zNTUsMSk
7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjIxNSwuNjEsLjM1NSwxKTstd2Via2
l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfTQwJSw0MyV7LXdlY
mtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMzBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwt
MzBweCwwKX00MCUsNDMlLDcwJXstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV
6aWVyKC43NTUsLjA1LC44NTUsLjA2KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllci
guNzU1LC4wNSwuODU1LC4wNil9NzAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTE1cHgsM
Ck7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTE1cHgsMCl9OTAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5z
bGF0ZTNkKDAsLTRweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtNHB4LDApfX0uYm91bmNley13ZWJ
raXQtYW5pbWF0aW9uLW5hbWU6Ym91bmNlO2FuaW1hdGlvbi1uYW1lOmJvdW5jZTstd2Via2l0LXRyYW5zZm
9ybS1vcmlnaW46Y2VudGVyIGJvdHRvbTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBib3R0b219QC13ZWJra
XQta2V5ZnJhbWVzIGZsYXNoezAlLDUwJSx0b3tvcGFjaXR5OjF9MjUlLDc1JXtvcGFjaXR5OjB9fUBrZXlm
cmFtZXMgZmxhc2h7MCUsNTAlLHRve29wYWNpdHk6MX0yNSUsNzUle29wYWNpdHk6MH19LmZsYXNoey13ZWJ
raXQtYW5pbWF0aW9uLW5hbWU6Zmxhc2g7YW5pbWF0aW9uLW5hbWU6Zmxhc2h9QC13ZWJraXQta2V5ZnJhbW
VzIHB1bHNlezAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlWCgxKTt0cmFuc2Zvcm06c2NhbGVYKDEpfTUwJ
Xstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKDEuMDUsMS4wNSwxLjA1KTt0cmFuc2Zvcm06c2NhbGUzZCgx
LjA1LDEuMDUsMS4wNSl9dG97LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVYKDEpO3RyYW5zZm9ybTpzY2FsZVg
oMSl9fUBrZXlmcmFtZXMgcHVsc2V7MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVYKDEpO3RyYW5zZm9ybT
pzY2FsZVgoMSl9NTAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMS4wNSwxLjA1LDEuMDUpO3RyYW5zZ
m9ybTpzY2FsZTNkKDEuMDUsMS4wNSwxLjA1KX10b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZVgoMSk7dHJh
bnNmb3JtOnNjYWxlWCgxKX19LnB1bHNley13ZWJraXQtYW5pbWF0aW9uLW5hbWU6cHVsc2U7YW5pbWF0aW9
uLW5hbWU6cHVsc2V9QC13ZWJraXQta2V5ZnJhbWVzIHJ1YmJlckJhbmR7MCV7LXdlYmtpdC10cmFuc2Zvcm
06c2NhbGVYKDEpO3RyYW5zZm9ybTpzY2FsZVgoMSl9MzAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoM
S4yNSwuNzUsMSk7dHJhbnNmb3JtOnNjYWxlM2QoMS4yNSwuNzUsMSl9NDAley13ZWJraXQtdHJhbnNmb3Jt
OnNjYWxlM2QoLjc1LDEuMjUsMSk7dHJhbnNmb3JtOnNjYWxlM2QoLjc1LDEuMjUsMSl9NTAley13ZWJraXQ
tdHJhbnNmb3JtOnNjYWxlM2QoMS4xNSwuODUsMSk7dHJhbnNmb3JtOnNjYWxlM2QoMS4xNSwuODUsMSl9Nj
Uley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjk1LDEuMDUsMSk7dHJhbnNmb3JtOnNjYWxlM2QoLjk1L
DEuMDUsMSl9NzUley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMS4wNSwuOTUsMSk7dHJhbnNmb3JtOnNj
YWxlM2QoMS4wNSwuOTUsMSl9dG97LXdlYmtpdC10cmFuc2Zvcm06c2NhbGVYKDEpO3RyYW5zZm9ybTpzY2F
sZVgoMSl9fUBrZXlmcmFtZXMgcnViYmVyQmFuZHswJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZVgoMSk7dH
JhbnNmb3JtOnNjYWxlWCgxKX0zMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLjI1LC43NSwxKTt0c
mFuc2Zvcm06c2NhbGUzZCgxLjI1LC43NSwxKX00MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguNzUs
MS4yNSwxKTt0cmFuc2Zvcm06c2NhbGUzZCguNzUsMS4yNSwxKX01MCV7LXdlYmtpdC10cmFuc2Zvcm06c2N
hbGUzZCgxLjE1LC44NSwxKTt0cmFuc2Zvcm06c2NhbGUzZCgxLjE1LC44NSwxKX02NSV7LXdlYmtpdC10cm
Fuc2Zvcm06c2NhbGUzZCguOTUsMS4wNSwxKTt0cmFuc2Zvcm06c2NhbGUzZCguOTUsMS4wNSwxKX03NSV7L
XdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLjA1LC45NSwxKTt0cmFuc2Zvcm06c2NhbGUzZCgxLjA1LC45
NSwxKX10b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZVgoMSk7dHJhbnNmb3JtOnNjYWxlWCgxKX19LnJ1YmJ
lckJhbmR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpydWJiZXJCYW5kO2FuaW1hdGlvbi1uYW1lOnJ1YmJlck
JhbmR9QC13ZWJraXQta2V5ZnJhbWVzIHNoYWtlezAlLHRvey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0Z
VooMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9MTAlLDMwJSw1MCUsNzAlLDkwJXstd2Via2l0LXRyYW5z
Zm9ybTp0cmFuc2xhdGUzZCgtMTBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTBweCwwLDApfTI
wJSw0MCUsNjAlLDgwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMHB4LDAsMCk7dHJhbnNmb3
JtOnRyYW5zbGF0ZTNkKDEwcHgsMCwwKX19QGtleWZyYW1lcyBzaGFrZXswJSx0b3std2Via2l0LXRyYW5zZ
m9ybTp0cmFuc2xhdGVaKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfTEwJSwzMCUsNTAlLDcwJSw5MCV7
LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2Q
oLTEwcHgsMCwwKX0yMCUsNDAlLDYwJSw4MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTBweC
wwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMHB4LDAsMCl9fS5zaGFrZXstd2Via2l0LWFuaW1hdGlvb
i1uYW1lOnNoYWtlO2FuaW1hdGlvbi1uYW1lOnNoYWtlfUAtd2Via2l0LWtleWZyYW1lcyBoZWFkU2hha2V7
MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgwKX02LjU
ley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTZweCkgcm90YXRlWSgtOWRlZyk7dHJhbnNmb3JtOn
RyYW5zbGF0ZVgoLTZweCkgcm90YXRlWSgtOWRlZyl9MTguNSV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsY
XRlWCg1cHgpIHJvdGF0ZVkoN2RlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoNXB4KSByb3RhdGVZKDdkZWcp
fTMxLjUley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVgoLTNweCkgcm90YXRlWSgtNWRlZyk7dHJhbnN
mb3JtOnRyYW5zbGF0ZVgoLTNweCkgcm90YXRlWSgtNWRlZyl9NDMuNSV7LXdlYmtpdC10cmFuc2Zvcm06dH
JhbnNsYXRlWCgycHgpIHJvdGF0ZVkoM2RlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMnB4KSByb3RhdGVZK
DNkZWcpfTUwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVY
KDApfX1Aa2V5ZnJhbWVzIGhlYWRTaGFrZXswJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDApO3R
yYW5zZm9ybTp0cmFuc2xhdGVYKDApfTYuNSV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCgtNnB4KS
Byb3RhdGVZKC05ZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtNnB4KSByb3RhdGVZKC05ZGVnKX0xOC41J
Xstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDVweCkgcm90YXRlWSg3ZGVnKTt0cmFuc2Zvcm06dHJh
bnNsYXRlWCg1cHgpIHJvdGF0ZVkoN2RlZyl9MzEuNSV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWCg
tM3B4KSByb3RhdGVZKC01ZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlWCgtM3B4KSByb3RhdGVZKC01ZGVnKX
00My41JXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVYKDJweCkgcm90YXRlWSgzZGVnKTt0cmFuc2Zvc
m06dHJhbnNsYXRlWCgycHgpIHJvdGF0ZVkoM2RlZyl9NTAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0
ZVgoMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVgoMCl9fS5oZWFkU2hha2V7LXdlYmtpdC1hbmltYXRpb24tdGl
taW5nLWZ1bmN0aW9uOmVhc2UtaW4tb3V0O2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbi1vdX
Q7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpoZWFkU2hha2U7YW5pbWF0aW9uLW5hbWU6aGVhZFNoYWtlfUAtd
2Via2l0LWtleWZyYW1lcyBzd2luZ3syMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE1ZGVnKTt0cmFu
c2Zvcm06cm90YXRlKDE1ZGVnKX00MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xMGRlZyk7dHJhbnN
mb3JtOnJvdGF0ZSgtMTBkZWcpfTYwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNWRlZyk7dHJhbnNmb3
JtOnJvdGF0ZSg1ZGVnKX04MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC01ZGVnKTt0cmFuc2Zvcm06c
m90YXRlKC01ZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJvdGF0
ZSgwZGVnKX19QGtleWZyYW1lcyBzd2luZ3syMCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDE1ZGVnKTt
0cmFuc2Zvcm06cm90YXRlKDE1ZGVnKX00MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0xMGRlZyk7dH
JhbnNmb3JtOnJvdGF0ZSgtMTBkZWcpfTYwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNWRlZyk7dHJhb
nNmb3JtOnJvdGF0ZSg1ZGVnKX04MCV7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC01ZGVnKTt0cmFuc2Zv
cm06cm90YXRlKC01ZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMGRlZyk7dHJhbnNmb3JtOnJ
vdGF0ZSgwZGVnKX19LnN3aW5ney13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjp0b3AgY2VudGVyO3RyYW5zZm
9ybS1vcmlnaW46dG9wIGNlbnRlcjstd2Via2l0LWFuaW1hdGlvbi1uYW1lOnN3aW5nO2FuaW1hdGlvbi1uY
W1lOnN3aW5nfUAtd2Via2l0LWtleWZyYW1lcyB0YWRhezAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlWCgx
KTt0cmFuc2Zvcm06c2NhbGVYKDEpfTEwJSwyMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguOSwuOSw
uOSkgcm90YXRlKC0zZGVnKTt0cmFuc2Zvcm06c2NhbGUzZCguOSwuOSwuOSkgcm90YXRlKC0zZGVnKX0zMC
UsNTAlLDcwJSw5MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLjEsMS4xLDEuMSkgcm90YXRlKDNkZ
WcpO3RyYW5zZm9ybTpzY2FsZTNkKDEuMSwxLjEsMS4xKSByb3RhdGUoM2RlZyl9NDAlLDYwJSw4MCV7LXdl
YmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLjEsMS4xLDEuMSkgcm90YXRlKC0zZGVnKTt0cmFuc2Zvcm06c2N
hbGUzZCgxLjEsMS4xLDEuMSkgcm90YXRlKC0zZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpzY2FsZVgoMS
k7dHJhbnNmb3JtOnNjYWxlWCgxKX19QGtleWZyYW1lcyB0YWRhezAley13ZWJraXQtdHJhbnNmb3JtOnNjY
WxlWCgxKTt0cmFuc2Zvcm06c2NhbGVYKDEpfTEwJSwyMCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgu
OSwuOSwuOSkgcm90YXRlKC0zZGVnKTt0cmFuc2Zvcm06c2NhbGUzZCguOSwuOSwuOSkgcm90YXRlKC0zZGV
nKX0zMCUsNTAlLDcwJSw5MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLjEsMS4xLDEuMSkgcm90YX
RlKDNkZWcpO3RyYW5zZm9ybTpzY2FsZTNkKDEuMSwxLjEsMS4xKSByb3RhdGUoM2RlZyl9NDAlLDYwJSw4M
CV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLjEsMS4xLDEuMSkgcm90YXRlKC0zZGVnKTt0cmFuc2Zv
cm06c2NhbGUzZCgxLjEsMS4xLDEuMSkgcm90YXRlKC0zZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpzY2F
sZVgoMSk7dHJhbnNmb3JtOnNjYWxlWCgxKX19LnRhZGF7LXdlYmtpdC1hbmltYXRpb24tbmFtZTp0YWRhO2
FuaW1hdGlvbi1uYW1lOnRhZGF9QC13ZWJraXQta2V5ZnJhbWVzIHdvYmJsZXswJXstd2Via2l0LXRyYW5zZ
m9ybTpub25lO3RyYW5zZm9ybTpub25lfTE1JXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMjUl
LDAsMCkgcm90YXRlKC01ZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTI1JSwwLDApIHJvdGF0ZSgtNWR
lZyl9MzAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDIwJSwwLDApIHJvdGF0ZSgzZGVnKTt0cm
Fuc2Zvcm06dHJhbnNsYXRlM2QoMjAlLDAsMCkgcm90YXRlKDNkZWcpfTQ1JXstd2Via2l0LXRyYW5zZm9yb
Tp0cmFuc2xhdGUzZCgtMTUlLDAsMCkgcm90YXRlKC0zZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTE1
JSwwLDApIHJvdGF0ZSgtM2RlZyl9NjAley13ZWJ
raXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwJSwwLDApIHJvdGF0ZSgyZGVnKTt0cmFuc2Zvcm06dHJhbn
NsYXRlM2QoMTAlLDAsMCkgcm90YXRlKDJkZWcpfTc1JXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZ
CgtNSUsMCwwKSByb3RhdGUoLTFkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtNSUsMCwwKSByb3RhdGUo
LTFkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUBrZXlmcmFtZXMgd29
iYmxlezAley13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9MTUley13ZWJraXQtdHJhbn
Nmb3JtOnRyYW5zbGF0ZTNkKC0yNSUsMCwwKSByb3RhdGUoLTVkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZ
CgtMjUlLDAsMCkgcm90YXRlKC01ZGVnKX0zMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMjAl
LDAsMCkgcm90YXRlKDNkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMCUsMCwwKSByb3RhdGUoM2RlZyl
9NDUley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xNSUsMCwwKSByb3RhdGUoLTNkZWcpO3RyYW
5zZm9ybTp0cmFuc2xhdGUzZCgtMTUlLDAsMCkgcm90YXRlKC0zZGVnKX02MCV7LXdlYmtpdC10cmFuc2Zvc
m06dHJhbnNsYXRlM2QoMTAlLDAsMCkgcm90YXRlKDJkZWcpO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMCUs
MCwwKSByb3RhdGUoMmRlZyl9NzUley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC01JSwwLDApIHJ
vdGF0ZSgtMWRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC01JSwwLDApIHJvdGF0ZSgtMWRlZyl9dG97LX
dlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX19LndvYmJsZXstd2Via2l0LWFuaW1hdGlvb
i1uYW1lOndvYmJsZTthbmltYXRpb24tbmFtZTp3b2JibGV9QC13ZWJraXQta2V5ZnJhbWVzIGplbGxvezAl
LDExLjElLHRvey13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9MjIuMiV7LXdlYmtpdC1
0cmFuc2Zvcm06c2tld1goLTEyLjVkZWcpIHNrZXdZKC0xMi41ZGVnKTt0cmFuc2Zvcm06c2tld1goLTEyLj
VkZWcpIHNrZXdZKC0xMi41ZGVnKX0zMy4zJXstd2Via2l0LXRyYW5zZm9ybTpza2V3WCg2LjI1ZGVnKSBza
2V3WSg2LjI1ZGVnKTt0cmFuc2Zvcm06c2tld1goNi4yNWRlZykgc2tld1koNi4yNWRlZyl9NDQuNCV7LXdl
YmtpdC10cmFuc2Zvcm06c2tld1goLTMuMTI1ZGVnKSBza2V3WSgtMy4xMjVkZWcpO3RyYW5zZm9ybTpza2V
3WCgtMy4xMjVkZWcpIHNrZXdZKC0zLjEyNWRlZyl9NTUuNSV7LXdlYmtpdC10cmFuc2Zvcm06c2tld1goMS
41NjI1ZGVnKSBza2V3WSgxLjU2MjVkZWcpO3RyYW5zZm9ybTpza2V3WCgxLjU2MjVkZWcpIHNrZXdZKDEuN
TYyNWRlZyl9NjYuNiV7LXdlYmtpdC10cmFuc2Zvcm06c2tld1goLS43ODEyNWRlZykgc2tld1koLS43ODEy
NWRlZyk7dHJhbnNmb3JtOnNrZXdYKC0uNzgxMjVkZWcpIHNrZXdZKC0uNzgxMjVkZWcpfTc3Ljcley13ZWJ
raXQtdHJhbnNmb3JtOnNrZXdYKC4zOTA2MjVkZWcpIHNrZXdZKC4zOTA2MjVkZWcpO3RyYW5zZm9ybTpza2
V3WCguMzkwNjI1ZGVnKSBza2V3WSguMzkwNjI1ZGVnKX04OC44JXstd2Via2l0LXRyYW5zZm9ybTpza2V3W
CgtLjE5NTMxMjVkZWcpIHNrZXdZKC0uMTk1MzEyNWRlZyk7dHJhbnNmb3JtOnNrZXdYKC0uMTk1MzEyNWRl
Zykgc2tld1koLS4xOTUzMTI1ZGVnKX19QGtleWZyYW1lcyBqZWxsb3swJSwxMS4xJSx0b3std2Via2l0LXR
yYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfTIyLjIley13ZWJraXQtdHJhbnNmb3JtOnNrZXdYKC0xMi
41ZGVnKSBza2V3WSgtMTIuNWRlZyk7dHJhbnNmb3JtOnNrZXdYKC0xMi41ZGVnKSBza2V3WSgtMTIuNWRlZ
yl9MzMuMyV7LXdlYmtpdC10cmFuc2Zvcm06c2tld1goNi4yNWRlZykgc2tld1koNi4yNWRlZyk7dHJhbnNm
b3JtOnNrZXdYKDYuMjVkZWcpIHNrZXdZKDYuMjVkZWcpfTQ0LjQley13ZWJraXQtdHJhbnNmb3JtOnNrZXd
YKC0zLjEyNWRlZykgc2tld1koLTMuMTI1ZGVnKTt0cmFuc2Zvcm06c2tld1goLTMuMTI1ZGVnKSBza2V3WS
gtMy4xMjVkZWcpfTU1LjUley13ZWJraXQtdHJhbnNmb3JtOnNrZXdYKDEuNTYyNWRlZykgc2tld1koMS41N
jI1ZGVnKTt0cmFuc2Zvcm06c2tld1goMS41NjI1ZGVnKSBza2V3WSgxLjU2MjVkZWcpfTY2LjYley13ZWJr
aXQtdHJhbnNmb3JtOnNrZXdYKC0uNzgxMjVkZWcpIHNrZXdZKC0uNzgxMjVkZWcpO3RyYW5zZm9ybTpza2V
3WCgtLjc4MTI1ZGVnKSBza2V3WSgtLjc4MTI1ZGVnKX03Ny43JXstd2Via2l0LXRyYW5zZm9ybTpza2V3WC
guMzkwNjI1ZGVnKSBza2V3WSguMzkwNjI1ZGVnKTt0cmFuc2Zvcm06c2tld1goLjM5MDYyNWRlZykgc2tld
1koLjM5MDYyNWRlZyl9ODguOCV7LXdlYmtpdC10cmFuc2Zvcm06c2tld1goLS4xOTUzMTI1ZGVnKSBza2V3
WSgtLjE5NTMxMjVkZWcpO3RyYW5zZm9ybTpza2V3WCgtLjE5NTMxMjVkZWcpIHNrZXdZKC0uMTk1MzEyNWR
lZyl9fS5qZWxsb3std2Via2l0LWFuaW1hdGlvbi1uYW1lOmplbGxvO2FuaW1hdGlvbi1uYW1lOmplbGxvOy
13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9QC13ZWJra
XQta2V5ZnJhbWVzIGJvdW5jZUluezAlLDIwJSw0MCUsNjAlLDgwJSx0b3std2Via2l0LWFuaW1hdGlvbi10
aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yMTUsLjYxLC4zNTUsMSk7YW5pbWF0aW9uLXRpbWluZy1
mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjIxNSwuNjEsLjM1NSwxKX0wJXtvcGFjaXR5OjA7LXdlYmtpdC10cm
Fuc2Zvcm06c2NhbGUzZCguMywuMywuMyk7dHJhbnNmb3JtOnNjYWxlM2QoLjMsLjMsLjMpfTIwJXstd2Via
2l0LXRyYW5zZm9ybTpzY2FsZTNkKDEuMSwxLjEsMS4xKTt0cmFuc2Zvcm06c2NhbGUzZCgxLjEsMS4xLDEu
MSl9NDAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjksLjksLjkpO3RyYW5zZm9ybTpzY2FsZTNkKC4
5LC45LC45KX02MCV7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoMS4wMywxLjAzLDEuMD
MpO3RyYW5zZm9ybTpzY2FsZTNkKDEuMDMsMS4wMywxLjAzKX04MCV7LXdlYmtpdC10cmFuc2Zvcm06c2Nhb
GUzZCguOTcsLjk3LC45Nyk7dHJhbnNmb3JtOnNjYWxlM2QoLjk3LC45NywuOTcpfXRve29wYWNpdHk6MTst
d2Via2l0LXRyYW5zZm9ybTpzY2FsZVgoMSk7dHJhbnNmb3JtOnNjYWxlWCgxKX19QGtleWZyYW1lcyBib3V
uY2VJbnswJSwyMCUsNDAlLDYwJSw4MCUsdG97LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOm
N1YmljLWJlemllciguMjE1LC42MSwuMzU1LDEpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtY
mV6aWVyKC4yMTUsLjYxLC4zNTUsMSl9MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2Qo
LjMsLjMsLjMpO3RyYW5zZm9ybTpzY2FsZTNkKC4zLC4zLC4zKX0yMCV7LXdlYmtpdC10cmFuc2Zvcm06c2N
hbGUzZCgxLjEsMS4xLDEuMSk7dHJhbnNmb3JtOnNjYWxlM2QoMS4xLDEuMSwxLjEpfTQwJXstd2Via2l0LX
RyYW5zZm9ybTpzY2FsZTNkKC45LC45LC45KTt0cmFuc2Zvcm06c2NhbGUzZCguOSwuOSwuOSl9NjAle29wY
WNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKDEuMDMsMS4wMywxLjAzKTt0cmFuc2Zvcm06c2Nh
bGUzZCgxLjAzLDEuMDMsMS4wMyl9ODAley13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjk3LC45NywuOTc
pO3RyYW5zZm9ybTpzY2FsZTNkKC45NywuOTcsLjk3KX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm
06c2NhbGVYKDEpO3RyYW5zZm9ybTpzY2FsZVgoMSl9fS5ib3VuY2VJbnstd2Via2l0LWFuaW1hdGlvbi1uY
W1lOmJvdW5jZUluO2FuaW1hdGlvbi1uYW1lOmJvdW5jZUlufUAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VJ
bkRvd257MCUsNjAlLDc1JSw5MCUsdG97LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1Yml
jLWJlemllciguMjE1LC42MSwuMzU1LDEpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aW
VyKC4yMTUsLjYxLC4zNTUsMSl9MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkK
DAsLTMwMDBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMzAwMHB4LDApfTYwJXtvcGFjaXR5OjE7
LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwyNXB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCg
wLDI1cHgsMCl9NzUley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwcHgsMCk7dHJhbnNmb3
JtOnRyYW5zbGF0ZTNkKDAsLTEwcHgsMCl9OTAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsN
XB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDVweCwwKX10b3std2Via2l0LXRyYW5zZm9ybTpub25l
O3RyYW5zZm9ybTpub25lfX1Aa2V5ZnJhbWVzIGJvdW5jZUluRG93bnswJSw2MCUsNzUlLDkwJSx0b3std2V
ia2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yMTUsLjYxLC4zNTUsMSk7YW
5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjIxNSwuNjEsLjM1NSwxKX0wJXtvcGFja
XR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMzAwMHB4LDApO3RyYW5zZm9ybTp0cmFu
c2xhdGUzZCgwLC0zMDAwcHgsMCl9NjAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGU
zZCgwLDI1cHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMjVweCwwKX03NSV7LXdlYmtpdC10cmFuc2
Zvcm06dHJhbnNsYXRlM2QoMCwtMTBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTBweCwwKX05M
CV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCw1cHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNk
KDAsNXB4LDApfXRvey13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fS5ib3VuY2VJbkR
vd257LXdlYmtpdC1hbmltYXRpb24tbmFtZTpib3VuY2VJbkRvd247YW5pbWF0aW9uLW5hbWU6Ym91bmNlSW
5Eb3dufUAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VJbkxlZnR7MCUsNjAlLDc1JSw5MCUsdG97LXdlYmtpd
C1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMjE1LC42MSwuMzU1LDEpO2FuaW1h
dGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yMTUsLjYxLC4zNTUsMSl9MCV7b3BhY2l0eTo
wOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0zMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYX
RlM2QoLTMwMDBweCwwLDApfTYwJXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoM
jVweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgyNXB4LDAsMCl9NzUley13ZWJraXQtdHJhbnNmb3Jt
OnRyYW5zbGF0ZTNkKC0xMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMHB4LDAsMCl9OTAley1
3ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDVweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCg1cH
gsMCwwKX10b3std2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1Aa2V5ZnJhbWVzIGJvd
W5jZUluTGVmdHswJSw2MCUsNzUlLDkwJSx0b3std2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246
Y3ViaWMtYmV6aWVyKC4yMTUsLjYxLC4zNTUsMSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1
iZXppZXIoLjIxNSwuNjEsLjM1NSwxKX0wJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYX
RlM2QoLTMwMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMzAwMHB4LDAsMCl9NjAle29wYWNpd
Hk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgyNXB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0
ZTNkKDI1cHgsMCwwKX03NSV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwcHgsMCwwKTt0cmF
uc2Zvcm06dHJhbnNsYXRlM2QoLTEwcHgsMCwwKX05MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2
QoNXB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDVweCwwLDApfXRvey13ZWJraXQtdHJhbnNmb3JtO
m5vbmU7dHJhbnNmb3JtOm5vbmV9fS5ib3VuY2VJbkxlZnR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpib3Vu
Y2VJbkxlZnQ7YW5pbWF0aW9uLW5hbWU6Ym91bmNlSW5MZWZ0fUAtd2Via2l0LWtleWZyYW1lcyBib3VuY2V
JblJpZ2h0ezAlLDYwJSw3NSUsOTAlLHRvey13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdW
JpYy1iZXppZXIoLjIxNSwuNjEsLjM1NSwxKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJle
mllciguMjE1LC42MSwuMzU1LDEpfTAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUz
ZCgzMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMzAwMHB4LDAsMCl9NjAle29wYWNpdHk6MTs
td2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMjVweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZC
gtMjVweCwwLDApfTc1JXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMHB4LDAsMCk7dHJhbnNmb
3JtOnRyYW5zbGF0ZTNkKDEwcHgsMCwwKX05MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTVw
eCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtNXB4LDAsMCl9dG97LXdlYmtpdC10cmFuc2Zvcm06bm9
uZTt0cmFuc2Zvcm06bm9uZX19QGtleWZyYW1lcyBib3VuY2VJblJpZ2h0ezAlLDYwJSw3NSUsOTAlLHRvey
13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjIxNSwuNjEsLjM1NSwxK
TthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMjE1LC42MSwuMzU1LDEpfTAle29w
YWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgzMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJ
hbnNsYXRlM2QoMzAwMHB4LDAsMCl9NjAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdG
UzZCgtMjVweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMjVweCwwLDApfTc1JXstd2Via2l0LXRyY
W5zZm9ybTp0cmFuc2xhdGUzZCgxMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwcHgsMCwwKX05
MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTVweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGU
zZCgtNXB4LDAsMCl9dG97LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX19LmJvdW5jZU
luUmlnaHR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpib3VuY2VJblJpZ2h0O2FuaW1hdGlvbi1uYW1lOmJvd
W5jZUluUmlnaHR9QC13ZWJraXQta2V5ZnJhbWVzIGJvdW5jZUluVXB7MCUsNjAlLDc1JSw5MCUsdG97LXdl
YmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMjE1LC42MSwuMzU1LDEpO2F
uaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaW
MtYmV6aWVyKC4yMTUsLjYxLC4zNTUsMSl9MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zb
GF0ZTNkKDAsMzAwMHB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDMwMDBweCwwKX02MCV7b3BhY2l0
eToxOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF
0ZTNkKDAsLTIwcHgsMCl9NzUley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTBweCwwKTt0cm
Fuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMHB4LDApfTkwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZ
CgwLC01cHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTVweCwwKX10b3std2Via2l0LXRyYW5zZm9y
bTp0cmFuc2xhdGVaKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfX1Aa2V5ZnJhbWVzIGJvdW5jZUluVXB
7MCUsNjAlLDc1JSw5MCUsdG97LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlem
llciguMjE1LC42MSwuMzU1LDEpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4yM
TUsLjYxLC4zNTUsMSl9MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMzAw
MHB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDMwMDBweCwwKX02MCV7b3BhY2l0eToxOy13ZWJraXQ
tdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwcH
gsMCl9NzUley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTBweCwwKTt0cmFuc2Zvcm06dHJhb
nNsYXRlM2QoMCwxMHB4LDApfTkwJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC01cHgsMCk7
dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTVweCwwKX10b3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGV
aKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfX0uYm91bmNlSW5VcHstd2Via2l0LWFuaW1hdGlvbi1uYW
1lOmJvdW5jZUluVXA7YW5pbWF0aW9uLW5hbWU6Ym91bmNlSW5VcH1ALXdlYmtpdC1rZXlmcmFtZXMgYm91b
mNlT3V0ezIwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKC45LC45LC45KTt0cmFuc2Zvcm06c2NhbGUz
ZCguOSwuOSwuOSl9NTAlLDU1JXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCgxLjEsMS4
xLDEuMSk7dHJhbnNmb3JtOnNjYWxlM2QoMS4xLDEuMSwxLjEpfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW
5zZm9ybTpzY2FsZTNkKC4zLC4zLC4zKTt0cmFuc2Zvcm06c2NhbGUzZCguMywuMywuMyl9fUBrZXlmcmFtZ
XMgYm91bmNlT3V0ezIwJXstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKC45LC45LC45KTt0cmFuc2Zvcm06
c2NhbGUzZCguOSwuOSwuOSl9NTAlLDU1JXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCg
xLjEsMS4xLDEuMSk7dHJhbnNmb3JtOnNjYWxlM2QoMS4xLDEuMSwxLjEpfXRve29wYWNpdHk6MDstd2Via2
l0LXRyYW5zZm9ybTpzY2FsZTNkKC4zLC4zLC4zKTt0cmFuc2Zvcm06c2NhbGUzZCguMywuMywuMyl9fS5ib
3VuY2VPdXR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpib3VuY2VPdXQ7YW5pbWF0aW9uLW5hbWU6Ym91bmNl
T3V0fUAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VPdXREb3duezIwJXstd2Via2l0LXRyYW5zZm9ybTp0cmF
uc2xhdGUzZCgwLDEwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTBweCwwKX00MCUsNDUle29wYW
NpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMHB4LDApO3RyYW5zZm9ybTp0cmFuc
2xhdGUzZCgwLC0yMHB4LDApfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgw
LDIwMDBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwyMDAwcHgsMCl9fUBrZXlmcmFtZXMgYm91bmN
lT3V0RG93bnsyMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMHB4LDApO3RyYW5zZm9ybT
p0cmFuc2xhdGUzZCgwLDEwcHgsMCl9NDAlLDQ1JXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhb
nNsYXRlM2QoMCwtMjBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjBweCwwKX10b3tvcGFjaXR5
OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwyMDAwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF
0ZTNkKDAsMjAwMHB4LDApfX0uYm91bmNlT3V0RG93bnstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmJvdW5jZU
91dERvd247YW5pbWF0aW9uLW5hbWU6Ym91bmNlT3V0RG93bn1ALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlT
3V0TGVmdHsyMCV7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDIwcHgsMCwwKTt0
cmFuc2Zvcm06dHJhbnNsYXRlM2QoMjBweCwwLDApfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp
0cmFuc2xhdGUzZCgtMjAwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yMDAwcHgsMCwwKX19QG
tleWZyYW1lcyBib3VuY2VPdXRMZWZ0ezIwJXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsY
XRlM2QoMjBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMHB4LDAsMCl9dG97b3BhY2l0eTowOy13
ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2Q
oLTIwMDBweCwwLDApfX0uYm91bmNlT3V0TGVmdHstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmJvdW5jZU91dE
xlZnQ7YW5pbWF0aW9uLW5hbWU6Ym91bmNlT3V0TGVmdH1ALXdlYmtpdC1rZXlmcmFtZXMgYm91bmNlT3V0U
mlnaHR7MjAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMjBweCwwLDApO3Ry
YW5zZm9ybTp0cmFuc2xhdGUzZCgtMjBweCwwLDApfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp
0cmFuc2xhdGUzZCgyMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMjAwMHB4LDAsMCl9fUBrZX
lmcmFtZXMgYm91bmNlT3V0UmlnaHR7MjAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhd
GUzZCgtMjBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMjBweCwwLDApfXRve29wYWNpdHk6MDst
d2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2Q
oMjAwMHB4LDAsMCl9fS5ib3VuY2VPdXRSaWdodHstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmJvdW5jZU91dF
JpZ2h0O2FuaW1hdGlvbi1uYW1lOmJvdW5jZU91dFJpZ2h0fUAtd2Via2l0LWtleWZyYW1lcyBib3VuY2VPd
XRVcHsyMCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTBweCwwKTt0cmFuc2Zvcm06dHJh
bnNsYXRlM2QoMCwtMTBweCwwKX00MCUsNDUle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2x
hdGUzZCgwLDIwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMjBweCwwKX10b3tvcGFjaXR5OjA7LX
dlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjAwMHB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZ
CgwLC0yMDAwcHgsMCl9fUBrZXlmcmFtZXMgYm91bmNlT3V0VXB7MjAley13ZWJraXQtdHJhbnNmb3JtOnRy
YW5zbGF0ZTNkKDAsLTEwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwcHgsMCl9NDAlLDQ1JXt
vcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwyMHB4LDApO3RyYW5zZm9ybTp0cm
Fuc2xhdGUzZCgwLDIwcHgsMCl9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkK
DAsLTIwMDBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjAwMHB4LDApfX0uYm91bmNlT3V0VXB7
LXdlYmtpdC1hbmltYXRpb24tbmFtZTpib3VuY2VPdXRVcDthbmltYXRpb24tbmFtZTpib3VuY2VPdXRVcH1
ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluezAle29wYWNpdHk6MH10b3tvcGFjaXR5OjF9fUBrZXlmcmFtZX
MgZmFkZUluezAle29wYWNpdHk6MH10b3tvcGFjaXR5OjF9fS5mYWRlSW57LXdlYmtpdC1hbmltYXRpb24tb
mFtZTpmYWRlSW47YW5pbWF0aW9uLW5hbWU6ZmFkZUlufUAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW5Eb3du
ezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApO3RyYW5zZm9
ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3
RyYW5zZm9ybTpub25lfX1Aa2V5ZnJhbWVzIGZhZGVJbkRvd257MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhb
nNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCl9
dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fS5mYWRlSW5Eb3d
uey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ZmFkZUluRG93bjthbmltYXRpb24tbmFtZTpmYWRlSW5Eb3dufU
Atd2Via2l0LWtleWZyYW1lcyBmYWRlSW5Eb3duQmlnezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9yb
Tp0cmFuc2xhdGUzZCgwLC0yMDAwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwMDBweCwwKX10
b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX19QGtleWZyYW1lcyB
mYWRlSW5Eb3duQmlnezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMD
AwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTIwMDBweCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpd
C10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX19LmZhZGVJbkRvd25CaWd7LXdlYmtpdC1hbmltYXRp
b24tbmFtZTpmYWRlSW5Eb3duQmlnO2FuaW1hdGlvbi1uYW1lOmZhZGVJbkRvd25CaWd9QC13ZWJraXQta2V
5ZnJhbWVzIGZhZGVJbkxlZnR7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC
0xMDAlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCl9dG97b3BhY2l0eToxOy13ZWJra
XQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUBrZXlmcmFtZXMgZmFkZUluTGVmdHswJXtvcGFj
aXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMCUsMCwwKTt0cmFuc2Zvcm06dHJhbnN
sYXRlM2QoLTEwMCUsMCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm
06bm9uZX19LmZhZGVJbkxlZnR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmYWRlSW5MZWZ0O2FuaW1hdGlvb
i1uYW1lOmZhZGVJbkxlZnR9QC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJbkxlZnRCaWd7MCV7b3BhY2l0eTow
Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXR
lM2QoLTIwMDBweCwwLDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybT
pub25lfX1Aa2V5ZnJhbWVzIGZhZGVJbkxlZnRCaWd7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtO
nRyYW5zbGF0ZTNkKC0yMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTIwMDBweCwwLDApfXRv
e29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX0uZmFkZUluTGVmdEJ
pZ3std2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhZGVJbkxlZnRCaWc7YW5pbWF0aW9uLW5hbWU6ZmFkZUluTG
VmdEJpZ31ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZUluUmlnaHR7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhb
nNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApfXRv
e29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1Aa2V5ZnJhbWVzIGZ
hZGVJblJpZ2h0ezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMDAlLDAsMC
k7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvc
m06bm9uZTt0cmFuc2Zvcm06bm9uZX19LmZhZGVJblJpZ2h0ey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ZmFk
ZUluUmlnaHQ7YW5pbWF0aW9uLW5hbWU6ZmFkZUluUmlnaHR9QC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJblJ
pZ2h0QmlnezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgyMDAwcHgsMCwwKT
t0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMjAwMHB4LDAsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb
3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fUBrZXlmcmFtZXMgZmFkZUluUmlnaHRCaWd7MCV7b3BhY2l0eTow
Oy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDIwMDBweCwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGU
zZCgyMDAwcHgsMCwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm
9uZX19LmZhZGVJblJpZ2h0Qmlney13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ZmFkZUluUmlnaHRCaWc7YW5pb
WF0aW9uLW5hbWU6ZmFkZUluUmlnaHRCaWd9QC13ZWJraXQta2V5ZnJhbWVzIGZhZGVJblVwezAle29wYWNp
dHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF
0ZTNkKDAsMTAwJSwwKX10b3tvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm
9uZX19QGtleWZyYW1lcyBmYWRlSW5VcHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsY
XRlM2QoMCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCl9dG97b3BhY2l0eToxOy13
ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmV9fS5mYWRlSW5VcHstd2Via2l0LWFuaW1hdGl
vbi1uYW1lOmZhZGVJblVwO2FuaW1hdGlvbi1uYW1lOmZhZGVJblVwfUAtd2Via2l0LWtleWZyYW1lcyBmYW
RlSW5VcEJpZ3swJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwyMDAwcHgsM
Ck7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMjAwMHB4LDApfXRve29wYWNpdHk6MTstd2Via2l0LXRyYW5z
Zm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1Aa2V5ZnJhbWVzIGZhZGVJblVwQmlnezAle29wYWNpdHk6MDs
td2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDIwMDBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2
QoMCwyMDAwcHgsMCl9dG97b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vb
mV9fS5mYWRlSW5VcEJpZ3std2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhZGVJblVwQmlnO2FuaW1hdGlvbi1u
YW1lOmZhZGVJblVwQmlnfUAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0ezAle29wYWNpdHk6MX10b3tvcGF
jaXR5OjB9fUBrZXlmcmFtZXMgZmFkZU91dHswJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowfX0uZmFkZU91dH
std2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhZGVPd
XQ7YW5pbWF0aW9uLW5hbWU6ZmFkZU91dH1ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dERvd257MCV7b3Bh
Y2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCk7dHJ
hbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwJSwwKX19QGtleWZyYW1lcyBmYWRlT3V0RG93bnswJXtvcGFjaX
R5OjF9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwJSwwKTt0cmFuc
2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApfX0uZmFkZU91dERvd257LXdlYmtpdC1hbmltYXRpb24tbmFt
ZTpmYWRlT3V0RG93bjthbmltYXRpb24tbmFtZTpmYWRlT3V0RG93bn1ALXdlYmtpdC1rZXlmcmFtZXMgZmF
kZU91dERvd25CaWd7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2
xhdGUzZCgwLDIwMDBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwyMDAwcHgsMCl9fUBrZXlmcmFtZ
XMgZmFkZU91dERvd25CaWd7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0
cmFuc2xhdGUzZCgwLDIwMDBweCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwyMDAwcHgsMCl9fS5mYWR
lT3V0RG93bkJpZ3std2Via2l0LWFuaW1hdGlvbi1uYW1lOmZhZGVPdXREb3duQmlnO2FuaW1hdGlvbi1uYW
1lOmZhZGVPdXREb3duQmlnfUAtd2Via2l0LWtleWZyYW1lcyBmYWRlT3V0TGVmdHswJXtvcGFjaXR5OjF9d
G97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCk7dHJhbnNmb3Jt
OnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCl9fUBrZXlmcmFtZXMgZmFkZU91dExlZnR7MCV7b3BhY2l0eToxfXR
ve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTAwJSwwLDApO3RyYW5zZm9ybT
p0cmFuc2xhdGUzZCgtMTAwJSwwLDApfX0uZmFkZU91dExlZnR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmY
WRlT3V0TGVmdDthbmltYXRpb24tbmFtZTpmYWRlT3V0TGVmdH1ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91
dExlZnRCaWd7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGU
zZCgtMjAwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0yMDAwcHgsMCwwKX19QGtleWZyYW1lcy
BmYWRlT3V0TGVmdEJpZ3swJXtvcGFjaXR5OjF9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyY
W5zbGF0ZTNkKC0yMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTIwMDBweCwwLDApfX0uZmFk
ZU91dExlZnRCaWd7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmYWRlT3V0TGVmdEJpZzthbmltYXRpb24tbmF
tZTpmYWRlT3V0TGVmdEJpZ31ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dFJpZ2h0ezAle29wYWNpdHk6MX
10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApO3RyYW5zZm9yb
Tp0cmFuc2xhdGUzZCgxMDAlLDAsMCl9fUBrZXlmcmFtZXMgZmFkZU91dFJpZ2h0ezAle29wYWNpdHk6MX10
b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApO3RyYW5zZm9ybTp
0cmFuc2xhdGUzZCgxMDAlLDAsMCl9fS5mYWRlT3V0UmlnaHR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmYW
RlT3V0UmlnaHQ7YW5pbWF0aW9uLW5hbWU6ZmFkZU91dFJpZ2h0fUAtd2Via2l0LWtleWZyYW1lcyBmYWRlT
3V0UmlnaHRCaWd7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xh
dGUzZCgyMDAwcHgsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMjAwMHB4LDAsMCl9fUBrZXlmcmFtZXM
gZmFkZU91dFJpZ2h0QmlnezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dH
JhbnNsYXRlM2QoMjAwMHB4LDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDIwMDBweCwwLDApfX0uZmFkZ
U91dFJpZ2h0Qmlney13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ZmFkZU91dFJpZ2h0QmlnO2FuaW1hdGlvbi1u
YW1lOmZhZGVPdXRSaWdodEJpZ31ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dFVwezAle29wYWNpdHk6MX1
0b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKTt0cmFuc2Zvcm
06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKX19QGtleWZyYW1lcyBmYWRlT3V0VXB7MCV7b3BhY2l0eToxfXRve
29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0xMDAlLDApO3RyYW5zZm9ybTp0
cmFuc2xhdGUzZCgwLC0xMDAlLDApfX0uZmFkZU91dFVwey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ZmFkZU9
1dFVwO2FuaW1hdGlvbi1uYW1lOmZhZGVPdXRVcH1ALXdlYmtpdC1rZXlmcmFtZXMgZmFkZU91dFVwQmlnez
Ale29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMjAwM
HB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMDAwcHgsMCl9fUBrZXlmcmFtZXMgZmFkZU91dFVw
QmlnezAle29wYWNpdHk6MX10b3tvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCw
tMjAwMHB4LDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLC0yMDAwcHgsMCl9fS5mYWRlT3V0VXBCaWd7LX
dlYmtpdC1hbmltYXRpb24tbmFtZTpmYWRlT3V0VXBCaWc7YW5pbWF0aW9uLW5hbWU6ZmFkZU91dFVwQmlnf
UAtd2Via2l0LWtleWZyYW1lcyBmbGlwezAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4
KSByb3RhdGVZKC0xdHVybik7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC0xdHVybil
9MCUsNDAley13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLW91dDthbmltYXRpb24tdG
ltaW5nLWZ1bmN0aW9uOmVhc2Utb3V0fTQwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBwe
CkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgtMTkwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAw
cHgpIHRyYW5zbGF0ZVooMTUwcHgpIHJvdGF0ZVkoLTE5MGRlZyl9NTAley13ZWJraXQtdHJhbnNmb3JtOnB
lcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDE1MHB4KSByb3RhdGVZKC0xNzBkZWcpO3RyYW5zZm9ybT
pwZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgtMTcwZGVnKX01MCUsODAle
y13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO2FuaW1hdGlvbi10aW1pbmctZnVu
Y3Rpb246ZWFzZS1pbn04MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHNjYWxlM2Q
oLjk1LC45NSwuOTUpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgc2NhbGUzZCguOTUsLjk1LC45NS
l9dG97LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpO3RyYW5zZm9ybTpwZXJzcGVjdGl2Z
Sg0MDBweCk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW47YW5pbWF0aW9uLXRp
bWluZy1mdW5jdGlvbjplYXNlLWlufX1Aa2V5ZnJhbWVzIGZsaXB7MCV7LXdlYmtpdC10cmFuc2Zvcm06cGV
yc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTF0dXJuKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIH
JvdGF0ZVkoLTF0dXJuKX0wJSw0MCV7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2Utb
3V0O2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXR9NDAley13ZWJraXQtdHJhbnNmb3JtOnBl
cnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDE1MHB4KSByb3RhdGVZKC0xOTBkZWcpO3RyYW5zZm9ybTp
wZXJzcGVjdGl2ZSg0MDBweCkgdHJhbnNsYXRlWigxNTBweCkgcm90YXRlWSgtMTkwZGVnKX01MCV7LXdlYm
tpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHRyYW5zbGF0ZVooMTUwcHgpIHJvdGF0ZVkoLTE3M
GRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSB0cmFuc2xhdGVaKDE1MHB4KSByb3RhdGVZKC0x
NzBkZWcpfTUwJSw4MCV7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW47YW5pbWF
0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWlufTgwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZS
g0MDBweCkgc2NhbGUzZCguOTUsLjk1LC45NSk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSBzY2FsZ
TNkKC45NSwuOTUsLjk1KX10b3std2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCk7dHJhbnNm
b3JtOnBlcnNwZWN0aXZlKDQwMHB4KTstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1
pbjthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW59fS5hbmltYXRlZC5mbGlwey13ZWJraXQtYm
Fja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlO2JhY2tmYWNlLXZpc2liaWxpdHk6dmlzaWJsZTstd2Via2l0L
WFuaW1hdGlvbi1uYW1lOmZsaXA7YW5pbWF0aW9uLW5hbWU6ZmxpcH1ALXdlYmtpdC1rZXlmcmFtZXMgZmxp
cEluWHswJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCg5MGRlZyk7dHJ
hbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKTtvcGFjaXR5OjB9MCUsNDAley13ZW
JraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb
246ZWFzZS1pbn00MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTIw
ZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTIwZGVnKX02MCV7LXdlYmtpdC1
0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoMTBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdG
l2ZSg0MDBweCkgcm90YXRlWCgxMGRlZyk7b3BhY2l0eToxfTgwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzc
GVjdGl2ZSg0MDBweCkgcm90YXRlWCgtNWRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3Rh
dGVYKC01ZGVnKX10b3std2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCk7dHJhbnNmb3JtOnB
lcnNwZWN0aXZlKDQwMHB4KX19QGtleWZyYW1lcyBmbGlwSW5YezAley13ZWJraXQtdHJhbnNmb3JtOnBlcn
NwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvd
GF0ZVgoOTBkZWcpO29wYWNpdHk6MH0wJSw0MCV7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9u
OmVhc2UtaW47YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWlufTQwJXstd2Via2l0LXRyYW5zZm9
ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWCgtMjBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MD
BweCkgcm90YXRlWCgtMjBkZWcpfTYwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgc
m90YXRlWCgxMGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDEwZGVnKTtvcGFj
aXR5OjF9ODAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC01ZGVnKTt
0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTVkZWcpfXRvey13ZWJraXQtdHJhbnNmb3
JtOnBlcnNwZWN0aXZlKDQwMHB4KTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpfX0uZmxpcEluWHstd
2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6dmlzaWJsZSFpbXBvcnRhbnQ7YmFja2ZhY2UtdmlzaWJpbGl0
eTp2aXNpYmxlIWltcG9ydGFudDstd2Via2l0LWFuaW1hdGlvbi1uYW1lOmZsaXBJblg7YW5pbWF0aW9uLW5
hbWU6ZmxpcEluWH1ALXdlYmtpdC1rZXlmcmFtZXMgZmxpcEluWXswJXstd2Via2l0LXRyYW5zZm9ybTpwZX
JzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg5MGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb
3RhdGVZKDkwZGVnKTtvcGFjaXR5OjB9MCUsNDAley13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlv
bjplYXNlLWluO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbn00MCV7LXdlYmtpdC10cmFuc2Z
vcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTIwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoND
AwcHgpIHJvdGF0ZVkoLTIwZGVnKX02MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpI
HJvdGF0ZVkoMTBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgxMGRlZyk7b3Bh
Y2l0eToxfTgwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtNWRlZyk
7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKX10b3std2Via2l0LXRyYW5zZm
9ybTpwZXJzcGVjdGl2ZSg0MDBweCk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KX19QGtleWZyYW1lc
yBmbGlwSW5ZezAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDkwZGVn
KTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoOTBkZWcpO29wYWNpdHk6MH0wJSw0MCV
7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW47YW5pbWF0aW9uLXRpbWluZy1mdW
5jdGlvbjplYXNlLWlufTQwJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlW
SgtMjBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgtMjBkZWcpfTYwJXstd2Vi
a2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSgxMGRlZyk7dHJhbnNmb3JtOnBlcnN
wZWN0aXZlKDQwMHB4KSByb3RhdGVZKDEwZGVnKTtvcGFjaXR5OjF9ODAley13ZWJraXQtdHJhbnNmb3JtOn
BlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC01ZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpI
HJvdGF0ZVkoLTVkZWcpfXRvey13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KTt0cmFuc2Zv
cm06cGVyc3BlY3RpdmUoNDAwcHgpfX0uZmxpcEluWXstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6dml
zaWJsZSFpbXBvcnRhbnQ7YmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudDstd2Via2l0LW
FuaW1hdGlvbi1uYW1lOmZsaXBJblk7YW5pbWF0aW9uLW5hbWU6ZmxpcEluWX1ALXdlYmtpdC1rZXlmcmFtZ
XMgZmxpcE91dFh7MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpO3RyYW5zZm9ybTpw
ZXJzcGVjdGl2ZSg0MDBweCl9MzAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3R
hdGVYKC0yMGRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKC0yMGRlZyk7b3BhY2
l0eToxfXRvey13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVYKDkwZGVnKTt0c
mFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJv
dGF0ZVgoOTBkZWcpO29wYWNpdHk6MH19QGtleWZyYW1lcyBmbGlwT3V0WHswJXstd2Via2l0LXRyYW5zZm9
ybTpwZXJzcGVjdGl2ZSg0MDBweCk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KX0zMCV7LXdlYmtpdC
10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTIwZGVnKTt0cmFuc2Zvcm06cGVyc3BlY
3RpdmUoNDAwcHgpIHJvdGF0ZVgoLTIwZGVnKTtvcGFjaXR5OjF9dG97LXdlYmtpdC10cmFuc2Zvcm06cGVy
c3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVgoOTBkZWcpO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm9
0YXRlWCg5MGRlZyk7b3BhY2l0eTowfX0uZmxpcE91dFh7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmbGlwT3
V0WDthbmltYXRpb24tbmFtZTpmbGlwT3V0WDstd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6dmlzaWJsZ
SFpbXBvcnRhbnQ7YmFja2ZhY2UtdmlzaWJpbGl0eTp2aXNpYmxlIWltcG9ydGFudH1ALXdlYmtpdC1rZXlm
cmFtZXMgZmxpcE91dFl7MCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpO3RyYW5zZm9
ybTpwZXJzcGVjdGl2ZSg0MDBweCl9MzAley13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KS
Byb3RhdGVZKC0xNWRlZyk7dHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKC0xNWRlZyk7b
3BhY2l0eToxfXRvey13ZWJraXQtdHJhbnNmb3JtOnBlcnNwZWN0aXZlKDQwMHB4KSByb3RhdGVZKDkwZGVn
KTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoOTBkZWcpO29wYWNpdHk6MH19QGtleWZ
yYW1lcyBmbGlwT3V0WXswJXstd2Via2l0LXRyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCk7dHJhbnNmb3
JtOnBlcnNwZWN0aXZlKDQwMHB4KX0zMCV7LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpI
HJvdGF0ZVkoLTE1ZGVnKTt0cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoLTE1ZGVnKTtv
cGFjaXR5OjF9dG97LXdlYmtpdC10cmFuc2Zvcm06cGVyc3BlY3RpdmUoNDAwcHgpIHJvdGF0ZVkoOTBkZWc
pO3RyYW5zZm9ybTpwZXJzcGVjdGl2ZSg0MDBweCkgcm90YXRlWSg5MGRlZyk7b3BhY2l0eTowfX0uZmxpcE
91dFl7LXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OnZpc2libGUhaW1wb3J0YW50O2JhY2tmYWNlLXZpc
2liaWxpdHk6dmlzaWJsZSFpbXBvcnRhbnQ7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpmbGlwT3V0WTthbmlt
YXRpb24tbmFtZTpmbGlwT3V0WX1ALXdlYmtpdC1rZXlmcmFtZXMgbGlnaHRTcGVlZEluezAley13ZWJraXQ
tdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKSBza2V3WCgtMzBkZWcpO3RyYW5zZm9ybTp0cmFuc2
xhdGUzZCgxMDAlLDAsMCkgc2tld1goLTMwZGVnKTtvcGFjaXR5OjB9NjAley13ZWJraXQtdHJhbnNmb3JtO
nNrZXdYKDIwZGVnKTt0cmFuc2Zvcm06c2tld1goMjBkZWcpfTYwJSw4MCV7b3BhY2l0eToxfTgwJXstd2Vi
a2l0LXRyYW5zZm9ybTpza2V3WCgtNWRlZyk7dHJhbnNmb3JtOnNrZXdYKC01ZGVnKX10b3std2Via2l0LXR
yYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lO29wYWNpdHk6MX19QGtleWZyYW1lcyBsaWdodFNwZWVkSW
57MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApIHNrZXdYKC0zMGRlZyk7dHJhb
nNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKSBza2V3WCgtMzBkZWcpO29wYWNpdHk6MH02MCV7LXdlYmtp
dC10cmFuc2Zvcm06c2tld1goMjBkZWcpO3RyYW5zZm9ybTpza2V3WCgyMGRlZyl9NjAlLDgwJXtvcGFjaXR
5OjF9ODAley13ZWJraXQtdHJhbnNmb3JtOnNrZXdYKC01ZGVnKTt0cmFuc2Zvcm06c2tld1goLTVkZWcpfX
Rvey13ZWJraXQtdHJhbnNmb3JtOm5vbmU7dHJhbnNmb3JtOm5vbmU7b3BhY2l0eToxfX0ubGlnaHRTcGVlZ
Eluey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6bGlnaHRTcGVlZEluO2FuaW1hdGlvbi1uYW1lOmxpZ2h0U3Bl
ZWRJbjstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1vdXQ7YW5pbWF0aW9uLXRpbWl
uZy1mdW5jdGlvbjplYXNlLW91dH1ALXdlYmtpdC1rZXlmcmFtZXMgbGlnaHRTcGVlZE91dHswJXtvcGFjaX
R5OjF9dG97LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApIHNrZXdYKDMwZGVnKTt0c
mFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApIHNrZXdYKDMwZGVnKTtvcGFjaXR5OjB9fUBrZXlmcmFt
ZXMgbGlnaHRTcGVlZE91dHswJXtvcGFjaXR5OjF9dG97LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2Q
oMTAwJSwwLDApIHNrZXdYKDMwZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApIHNrZXdYKD
MwZGVnKTtvcGFjaXR5OjB9fS5saWdodFNwZWVkT3V0ey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6bGlnaHRTc
GVlZE91dDthbmltYXRpb24tbmFtZTpsaWdodFNwZWVkT3V0Oy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1m
dW5jdGlvbjplYXNlLWluO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbn1ALXdlYmtpdC1rZXl
mcmFtZXMgcm90YXRlSW57MCV7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7LXdlYmtpdC10cmFuc2Zvcm06cm
90YXRlKC0yMDBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoLTIwMGRlZyk7b3BhY2l0eTowfTAlLHRvey13ZWJra
XQtdHJhbnNmb3JtLW9yaWdpbjpjZW50ZXJ9dG97dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7LXdlYmtpdC10
cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgcm90YXRlSW57MCV
7dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC0yMDBkZWcpO3RyYW
5zZm9ybTpyb3RhdGUoLTIwMGRlZyk7b3BhY2l0eTowfTAlLHRvey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpb
jpjZW50ZXJ9dG97dHJhbnNmb3JtLW9yaWdpbjpjZW50ZXI7LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFu
c2Zvcm06bm9uZTtvcGFjaXR5OjF9fS5yb3RhdGVJbnstd2Via2l0LWFuaW1hdGlvbi1uYW1lOnJvdGF0ZUl
uO2FuaW1hdGlvbi1uYW1lOnJvdGF0ZUlufUAtd2Via2l0LWtleWZyYW1lcyByb3RhdGVJbkRvd25MZWZ0ez
Ale3RyYW5zZm9ybS1vcmlnaW46bGVmdCBib3R0b207LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZ
yk7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO29wYWNpdHk6MH0wJSx0b3std2Via2l0LXRyYW5zZm9ybS1v
cmlnaW46bGVmdCBib3R0b219dG97dHJhbnNmb3JtLW9yaWdpbjpsZWZ0IGJvdHRvbTstd2Via2l0LXRyYW5
zZm9ybTpub25lO3RyYW5zZm9ybTpub25lO29wYWNpdHk6MX19QGtleWZyYW1lcyByb3RhdGVJbkRvd25MZW
Z0ezAle3RyYW5zZm9ybS1vcmlnaW46bGVmdCBib3R0b207LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00N
WRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO29wYWNpdHk6MH0wJSx0b3std2Via2l0LXRyYW5zZm9y
bS1vcmlnaW46bGVmdCBib3R0b219dG97dHJhbnNmb3JtLW9yaWdpbjpsZWZ0IGJvdHRvbTstd2Via2l0LXR
yYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lO29wYWNpdHk6MX19LnJvdGF0ZUluRG93bkxlZnR7LXdlYm
tpdC1hbmltYXRpb24tbmFtZTpyb3RhdGVJbkRvd25MZWZ0O2FuaW1hdGlvbi1uYW1lOnJvdGF0ZUluRG93b
kxlZnR9QC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZUluRG93blJpZ2h0ezAle3RyYW5zZm9ybS1vcmlnaW46
cmlnaHQgYm90dG9tOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg0NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg
0NWRlZyk7b3BhY2l0eTowfTAlLHRvey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpyaWdodCBib3R0b219dG
97dHJhbnNmb3JtLW9yaWdpbjpyaWdodCBib3R0b207LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvc
m06bm9uZTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgcm90YXRlSW5Eb3duUmlnaHR7MCV7dHJhbnNmb3JtLW9y
aWdpbjpyaWdodCBib3R0b207LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2Zvcm06cm9
0YXRlKDQ1ZGVnKTtvcGFjaXR5OjB9MCUsdG97LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0IGJvdH
RvbX10b3t0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0IGJvdHRvbTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyY
W5zZm9ybTpub25lO29wYWNpdHk6MX19LnJvdGF0ZUluRG93blJpZ2h0ey13ZWJraXQtYW5pbWF0aW9uLW5h
bWU6cm90YXRlSW5Eb3duUmlnaHQ7YW5pbWF0aW9uLW5hbWU6cm90YXRlSW5Eb3duUmlnaHR9QC13ZWJraXQ
ta2V5ZnJhbWVzIHJvdGF0ZUluVXBMZWZ0ezAle3RyYW5zZm9ybS1vcmlnaW46bGVmdCBib3R0b207LXdlYm
tpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTtvcGFjaXR5OjB9M
CUsdG97LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOmxlZnQgYm90dG9tfXRve3RyYW5zZm9ybS1vcmlnaW46
bGVmdCBib3R0b207LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZTtvcGFjaXR5OjF9fUB
rZXlmcmFtZXMgcm90YXRlSW5VcExlZnR7MCV7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0IGJvdHRvbTstd2Via2
l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO29wYWNpdHk6MH0wJ
Sx0b3std2Via2l0LXRyYW5zZm9ybS1vcmlnaW46bGVmdCBib3R0b219dG97dHJhbnNmb3JtLW9yaWdpbjps
ZWZ0IGJvdHRvbTstd2Via2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lO29wYWNpdHk6MX19LnJ
vdGF0ZUluVXBMZWZ0ey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6cm90YXRlSW5VcExlZnQ7YW5pbWF0aW9uLW
5hbWU6cm90YXRlSW5VcExlZnR9QC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZUluVXBSaWdodHswJXt0cmFuc
2Zvcm0tb3JpZ2luOnJpZ2h0IGJvdHRvbTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTt0cmFu
c2Zvcm06cm90YXRlKC05MGRlZyk7b3BhY2l0eTowfTAlLHRvey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjp
yaWdodCBib3R0b219dG97dHJhbnNmb3JtLW9yaWdpbjpyaWdodCBib3R0b207LXdlYmtpdC10cmFuc2Zvcm
06bm9uZTt0cmFuc2Zvcm06bm9uZTtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgcm90YXRlSW5VcFJpZ2h0ezAle
3RyYW5zZm9ybS1vcmlnaW46cmlnaHQgYm90dG9tOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgtOTBkZWcp
O3RyYW5zZm9ybTpyb3RhdGUoLTkwZGVnKTtvcGFjaXR5OjB9MCUsdG97LXdlYmtpdC10cmFuc2Zvcm0tb3J
pZ2luOnJpZ2h0IGJvdHRvbX10b3t0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0IGJvdHRvbTstd2Via2l0LXRyYW
5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lO29wYWNpdHk6MX19LnJvdGF0ZUluVXBSaWdodHstd2Via2l0L
WFuaW1hdGlvbi1uYW1lOnJvdGF0ZUluVXBSaWdodDthbmltYXRpb24tbmFtZTpyb3RhdGVJblVwUmlnaHR9
QC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZU91dHswJXt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtvcGFjaXR
5OjF9MCUsdG97LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn10b3t0cmFuc2Zvcm0tb3JpZ2luOm
NlbnRlcjstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjAwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDIwMGRlZ
yk7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIHJvdGF0ZU91dHswJXt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcjtv
cGFjaXR5OjF9MCUsdG97LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOmNlbnRlcn10b3t0cmFuc2Zvcm0tb3J
pZ2luOmNlbnRlcjstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMjAwZGVnKTt0cmFuc2Zvcm06cm90YXRlKD
IwMGRlZyk7b3BhY2l0eTowfX0ucm90YXRlT3V0ey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6cm90YXRlT3V0O
2FuaW1hdGlvbi1uYW1lOnJvdGF0ZU91dH1ALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlT3V0RG93bkxlZnR7
MCV7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0IGJvdHRvbTtvcGFjaXR5OjF9MCUsdG97LXdlYmtpdC10cmFuc2Z
vcm0tb3JpZ2luOmxlZnQgYm90dG9tfXRve3RyYW5zZm9ybS1vcmlnaW46bGVmdCBib3R0b207LXdlYmtpdC
10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTtvcGFjaXR5OjB9fUBrZ
XlmcmFtZXMgcm90YXRlT3V0RG93bkxlZnR7MCV7dHJhbnNmb3JtLW9yaWdpbjpsZWZ0IGJvdHRvbTtvcGFj
aXR5OjF9MCUsdG97LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOmxlZnQgYm90dG9tfXRve3RyYW5zZm9ybS1
vcmlnaW46bGVmdCBib3R0b207LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKDQ1ZGVnKTt0cmFuc2Zvcm06cm
90YXRlKDQ1ZGVnKTtvcGFjaXR5OjB9fS5yb3RhdGVPdXREb3duTGVmdHstd2Via2l0LWFuaW1hdGlvbi1uY
W1lOnJvdGF0ZU91dERvd25MZWZ0O2FuaW1hdGlvbi1uYW1lOnJvdGF0ZU91dERvd25MZWZ0fUAtd2Via2l0
LWtleWZyYW1lcyByb3RhdGVPdXREb3duUmlnaHR7MCV7dHJhbnNmb3JtLW9yaWdpbjpyaWdodCBib3R0b20
7b3BhY2l0eToxfTAlLHRvey13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpyaWdodCBib3R0b219dG97dHJhbn
Nmb3JtLW9yaWdpbjpyaWdodCBib3R0b207LXdlYmtpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7dHJhb
nNmb3JtOnJvdGF0ZSgtNDVkZWcpO29wYWNpdHk6MH19QGtleWZyYW1lcyByb3RhdGVPdXREb3duUmlnaHR7
MCV7dHJhbnNmb3JtLW9yaWdpbjpyaWdodCBib3R0b207b3BhY2l0eToxfTAlLHRvey13ZWJraXQtdHJhbnN
mb3JtLW9yaWdpbjpyaWdodCBib3R0b219dG97dHJhbnNmb3JtLW9yaWdpbjpyaWdodCBib3R0b207LXdlYm
tpdC10cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7dHJhbnNmb3JtOnJvdGF0ZSgtNDVkZWcpO29wYWNpdHk6M
H19LnJvdGF0ZU91dERvd25SaWdodHstd2Via2l0LWFuaW1hdGlvbi1uYW1lOnJvdGF0ZU91dERvd25SaWdo
dDthbmltYXRpb24tbmFtZTpyb3RhdGVPdXREb3duUmlnaHR9QC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZU9
1dFVwTGVmdHswJXt0cmFuc2Zvcm0tb3JpZ2luOmxlZnQgYm90dG9tO29wYWNpdHk6MX0wJSx0b3std2Via2
l0LXRyYW5zZm9ybS1vcmlnaW46bGVmdCBib3R0b219dG97dHJhbnNmb3JtLW9yaWdpbjpsZWZ0IGJvdHRvb
Tstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0cmFuc2Zvcm06cm90YXRlKC00NWRlZyk7b3Bh
Y2l0eTowfX1Aa2V5ZnJhbWVzIHJvdGF0ZU91dFVwTGVmdHswJXt0cmFuc2Zvcm0tb3JpZ2luOmxlZnQgYm9
0dG9tO29wYWNpdHk6MX0wJSx0b3std2Via2l0LXRyYW5zZm9ybS1vcmlnaW46bGVmdCBib3R0b219dG97dH
JhbnNmb3JtLW9yaWdpbjpsZWZ0IGJvdHRvbTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoLTQ1ZGVnKTt0c
mFuc2Zvcm06cm90YXRlKC00NWRlZyk7b3BhY2l0eTowfX0ucm90YXRlT3V0VXBMZWZ0ey13ZWJraXQtYW5p
bWF0aW9uLW5hbWU6cm90YXRlT3V0VXBMZWZ0O2F
uaW1hdGlvbi1uYW1lOnJvdGF0ZU91dFVwTGVmdH1ALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlT3V0VXBSaW
dodHswJXt0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0IGJvdHRvbTtvcGFjaXR5OjF9MCUsdG97LXdlYmtpdC10c
mFuc2Zvcm0tb3JpZ2luOnJpZ2h0IGJvdHRvbX10b3t0cmFuc2Zvcm0tb3JpZ2luOnJpZ2h0IGJvdHRvbTst
d2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO29wYWNpdHk
6MH19QGtleWZyYW1lcyByb3RhdGVPdXRVcFJpZ2h0ezAle3RyYW5zZm9ybS1vcmlnaW46cmlnaHQgYm90dG
9tO29wYWNpdHk6MX0wJSx0b3std2Via2l0LXRyYW5zZm9ybS1vcmlnaW46cmlnaHQgYm90dG9tfXRve3RyY
W5zZm9ybS1vcmlnaW46cmlnaHQgYm90dG9tOy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7dHJh
bnNmb3JtOnJvdGF0ZSg5MGRlZyk7b3BhY2l0eTowfX0ucm90YXRlT3V0VXBSaWdodHstd2Via2l0LWFuaW1
hdGlvbi1uYW1lOnJvdGF0ZU91dFVwUmlnaHQ7YW5pbWF0aW9uLW5hbWU6cm90YXRlT3V0VXBSaWdodH1ALX
dlYmtpdC1rZXlmcmFtZXMgaGluZ2V7MCV7dHJhbnNmb3JtLW9yaWdpbjp0b3AgbGVmdH0wJSwyMCUsNjAle
y13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjp0b3AgbGVmdDstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVu
Y3Rpb246ZWFzZS1pbi1vdXQ7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjplYXNlLWluLW91dH0yMCUsNjA
ley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg4MGRlZyk7dHJhbnNmb3JtOnJvdGF0ZSg4MGRlZyk7dHJhbn
Nmb3JtLW9yaWdpbjp0b3AgbGVmdH00MCUsODAley13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg2MGRlZyk7d
HJhbnNmb3JtOnJvdGF0ZSg2MGRlZyk7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOnRvcCBsZWZ0O3RyYW5z
Zm9ybS1vcmlnaW46dG9wIGxlZnQ7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW4
tb3V0O2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbi1vdXQ7b3BhY2l0eToxfXRvey13ZWJraX
QtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsNzAwcHgsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsNzAwc
HgsMCk7b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIGhpbmdlezAle3RyYW5zZm9ybS1vcmlnaW46dG9wIGxlZnR9
MCUsMjAlLDYwJXstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46dG9wIGxlZnQ7LXdlYmtpdC1hbmltYXRpb24
tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW4tb3V0O2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ZWFzZS1pbi
1vdXR9MjAlLDYwJXstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoODBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoO
DBkZWcpO3RyYW5zZm9ybS1vcmlnaW46dG9wIGxlZnR9NDAlLDgwJXstd2Via2l0LXRyYW5zZm9ybTpyb3Rh
dGUoNjBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNjBkZWcpOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjp0b3A
gbGVmdDt0cmFuc2Zvcm0tb3JpZ2luOnRvcCBsZWZ0Oy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdG
lvbjplYXNlLWluLW91dDthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmVhc2UtaW4tb3V0O29wYWNpdHk6M
X10b3std2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDcwMHB4LDApO3RyYW5zZm9ybTp0cmFuc2xh
dGUzZCgwLDcwMHB4LDApO29wYWNpdHk6MH19Lmhpbmdley13ZWJraXQtYW5pbWF0aW9uLW5hbWU6aGluZ2U
7YW5pbWF0aW9uLW5hbWU6aGluZ2V9QC13ZWJraXQta2V5ZnJhbWVzIHJvbGxJbnswJXtvcGFjaXR5OjA7LX
dlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMCUsMCwwKSByb3RhdGUoLTEyMGRlZyk7dHJhbnNmb
3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCkgcm90YXRlKC0xMjBkZWcpfXRve29wYWNpdHk6MTstd2Via2l0
LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX1Aa2V5ZnJhbWVzIHJvbGxJbnswJXtvcGFjaXR5OjA
7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMCUsMCwwKSByb3RhdGUoLTEyMGRlZyk7dHJhbn
Nmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCkgcm90YXRlKC0xMjBkZWcpfXRve29wYWNpdHk6MTstd2Via
2l0LXRyYW5zZm9ybTpub25lO3RyYW5zZm9ybTpub25lfX0ucm9sbEluey13ZWJraXQtYW5pbWF0aW9uLW5h
bWU6cm9sbEluO2FuaW1hdGlvbi1uYW1lOnJvbGxJbn1ALXdlYmtpdC1rZXlmcmFtZXMgcm9sbE91dHswJXt
vcGFjaXR5OjF9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKS
Byb3RhdGUoMTIwZGVnKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApIHJvdGF0ZSgxMjBkZWcpf
X1Aa2V5ZnJhbWVzIHJvbGxPdXR7MCV7b3BhY2l0eToxfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9y
bTp0cmFuc2xhdGUzZCgxMDAlLDAsMCkgcm90YXRlKDEyMGRlZyk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDE
wMCUsMCwwKSByb3RhdGUoMTIwZGVnKX19LnJvbGxPdXR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpyb2xsT3
V0O2FuaW1hdGlvbi1uYW1lOnJvbGxPdXR9QC13ZWJraXQta2V5ZnJhbWVzIHpvb21JbnswJXtvcGFjaXR5O
jA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguMywuMywuMyk7dHJhbnNmb3JtOnNjYWxlM2QoLjMsLjMs
LjMpfTUwJXtvcGFjaXR5OjF9fUBrZXlmcmFtZXMgem9vbUluezAle29wYWNpdHk6MDstd2Via2l0LXRyYW5
zZm9ybTpzY2FsZTNkKC4zLC4zLC4zKTt0cmFuc2Zvcm06c2NhbGUzZCguMywuMywuMyl9NTAle29wYWNpdH
k6MX19Lnpvb21Jbnstd2Via2l0LWFuaW1hdGlvbi1uYW1lOnpvb21JbjthbmltYXRpb24tbmFtZTp6b29tS
W59QC13ZWJraXQta2V5ZnJhbWVzIHpvb21JbkRvd257MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3Jt
OnNjYWxlM2QoLjEsLjEsLjEpIHRyYW5zbGF0ZTNkKDAsLTEwMDBweCwwKTt0cmFuc2Zvcm06c2NhbGUzZCg
uMSwuMSwuMSkgdHJhbnNsYXRlM2QoMCwtMTAwMHB4LDApOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW
5jdGlvbjpjdWJpYy1iZXppZXIoLjU1LC4wNTUsLjY3NSwuMTkpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb
246Y3ViaWMtYmV6aWVyKC41NSwuMDU1LC42NzUsLjE5KX02MCV7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNm
b3JtOnNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5zbGF0ZTNkKDAsNjBweCwwKTt0cmFuc2Zvcm06c2N
hbGUzZCguNDc1LC40NzUsLjQ3NSkgdHJhbnNsYXRlM2QoMCw2MHB4LDApOy13ZWJraXQtYW5pbWF0aW9uLX
RpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3NSwuODg1LC4zMiwxKTthbmltYXRpb24tdGltaW5nL
WZ1bmN0aW9uOmN1YmljLWJlemllciguMTc1LC44ODUsLjMyLDEpfX1Aa2V5ZnJhbWVzIHpvb21JbkRvd257
MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjEsLjEsLjEpIHRyYW5zbGF0ZTNkKDA
sLTEwMDBweCwwKTt0cmFuc2Zvcm06c2NhbGUzZCguMSwuMSwuMSkgdHJhbnNsYXRlM2QoMCwtMTAwMHB4LD
ApOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjU1LC4wNTUsLjY3N
SwuMTkpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC41NSwuMDU1LC42NzUsLjE5
KX02MCV7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5
zbGF0ZTNkKDAsNjBweCwwKTt0cmFuc2Zvcm06c2NhbGUzZCguNDc1LC40NzUsLjQ3NSkgdHJhbnNsYXRlM2
QoMCw2MHB4LDApOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3N
SwuODg1LC4zMiwxKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTc1LC44ODUs
LjMyLDEpfX0uem9vbUluRG93bnstd2Via2l0LWFuaW1hdGlvbi1uYW1lOnpvb21JbkRvd247YW5pbWF0aW9
uLW5hbWU6em9vbUluRG93bn1ALXdlYmtpdC1rZXlmcmFtZXMgem9vbUluTGVmdHswJXtvcGFjaXR5OjA7LX
dlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguMSwuMSwuMSkgdHJhbnNsYXRlM2QoLTEwMDBweCwwLDApO3RyY
W5zZm9ybTpzY2FsZTNkKC4xLC4xLC4xKSB0cmFuc2xhdGUzZCgtMTAwMHB4LDAsMCk7LXdlYmtpdC1hbmlt
YXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNTUsLjA1NSwuNjc1LC4xOSk7YW5pbWF0aW9
uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjU1LC4wNTUsLjY3NSwuMTkpfTYwJXtvcGFjaXR5Oj
E7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguNDc1LC40NzUsLjQ3NSkgdHJhbnNsYXRlM2QoMTBweCwwL
DApO3RyYW5zZm9ybTpzY2FsZTNkKC40NzUsLjQ3NSwuNDc1KSB0cmFuc2xhdGUzZCgxMHB4LDAsMCk7LXdl
YmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTc1LC44ODUsLjMyLDEpO2F
uaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNzUsLjg4NSwuMzIsMSl9fUBrZXlmcm
FtZXMgem9vbUluTGVmdHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguMSwuMSwuM
SkgdHJhbnNsYXRlM2QoLTEwMDBweCwwLDApO3RyYW5zZm9ybTpzY2FsZTNkKC4xLC4xLC4xKSB0cmFuc2xh
dGUzZCgtMTAwMHB4LDAsMCk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJleml
lciguNTUsLjA1NSwuNjc1LC4xOSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLj
U1LC4wNTUsLjY3NSwuMTkpfTYwJXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguNDc1L
C40NzUsLjQ3NSkgdHJhbnNsYXRlM2QoMTBweCwwLDApO3RyYW5zZm9ybTpzY2FsZTNkKC40NzUsLjQ3NSwu
NDc1KSB0cmFuc2xhdGUzZCgxMHB4LDAsMCk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN
1YmljLWJlemllciguMTc1LC44ODUsLjMyLDEpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYm
V6aWVyKC4xNzUsLjg4NSwuMzIsMSl9fS56b29tSW5MZWZ0ey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6em9vb
UluTGVmdDthbmltYXRpb24tbmFtZTp6b29tSW5MZWZ0fUAtd2Via2l0LWtleWZyYW1lcyB6b29tSW5SaWdo
dHswJXtvcGFjaXR5OjA7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguMSwuMSwuMSkgdHJhbnNsYXRlM2Q
oMTAwMHB4LDAsMCk7dHJhbnNmb3JtOnNjYWxlM2QoLjEsLjEsLjEpIHRyYW5zbGF0ZTNkKDEwMDBweCwwLD
ApOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjU1LC4wNTUsLjY3N
SwuMTkpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC41NSwuMDU1LC42NzUsLjE5
KX02MCV7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5
zbGF0ZTNkKC0xMHB4LDAsMCk7dHJhbnNmb3JtOnNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5zbGF0ZT
NkKC0xMHB4LDAsMCk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguM
Tc1LC44ODUsLjMyLDEpO2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNzUsLjg4
NSwuMzIsMSl9fUBrZXlmcmFtZXMgem9vbUluUmlnaHR7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3J
tOnNjYWxlM2QoLjEsLjEsLjEpIHRyYW5zbGF0ZTNkKDEwMDBweCwwLDApO3RyYW5zZm9ybTpzY2FsZTNkKC
4xLC4xLC4xKSB0cmFuc2xhdGUzZCgxMDAwcHgsMCwwKTstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY
3Rpb246Y3ViaWMtYmV6aWVyKC41NSwuMDU1LC42NzUsLjE5KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9u
OmN1YmljLWJlemllciguNTUsLjA1NSwuNjc1LC4xOSl9NjAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9
ybTpzY2FsZTNkKC40NzUsLjQ3NSwuNDc1KSB0cmFuc2xhdGUzZCgtMTBweCwwLDApO3RyYW5zZm9ybTpzY2
FsZTNkKC40NzUsLjQ3NSwuNDc1KSB0cmFuc2xhdGUzZCgtMTBweCwwLDApOy13ZWJraXQtYW5pbWF0aW9uL
XRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3NSwuODg1LC4zMiwxKTthbmltYXRpb24tdGltaW5n
LWZ1bmN0aW9uOmN1YmljLWJlemllciguMTc1LC44ODUsLjMyLDEpfX0uem9vbUluUmlnaHR7LXdlYmtpdC1
hbmltYXRpb24tbmFtZTp6b29tSW5SaWdodDthbmltYXRpb24tbmFtZTp6b29tSW5SaWdodH1ALXdlYmtpdC
1rZXlmcmFtZXMgem9vbUluVXB7MCV7b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjEsL
jEsLjEpIHRyYW5zbGF0ZTNkKDAsMTAwMHB4LDApO3RyYW5zZm9ybTpzY2FsZTNkKC4xLC4xLC4xKSB0cmFu
c2xhdGUzZCgwLDEwMDBweCwwKTstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV
6aWVyKC41NSwuMDU1LC42NzUsLjE5KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllci
guNTUsLjA1NSwuNjc1LC4xOSl9NjAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKC40N
zUsLjQ3NSwuNDc1KSB0cmFuc2xhdGUzZCgwLC02MHB4LDApO3RyYW5zZm9ybTpzY2FsZTNkKC40NzUsLjQ3
NSwuNDc1KSB0cmFuc2xhdGUzZCgwLC02MHB4LDApOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGl
vbjpjdWJpYy1iZXppZXIoLjE3NSwuODg1LC4zMiwxKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1Ym
ljLWJlemllciguMTc1LC44ODUsLjMyLDEpfX1Aa2V5ZnJhbWVzIHpvb21JblVwezAle29wYWNpdHk6MDstd
2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKC4xLC4xLC4xKSB0cmFuc2xhdGUzZCgwLDEwMDBweCwwKTt0cmFu
c2Zvcm06c2NhbGUzZCguMSwuMSwuMSkgdHJhbnNsYXRlM2QoMCwxMDAwcHgsMCk7LXdlYmtpdC1hbmltYXR
pb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNTUsLjA1NSwuNjc1LC4xOSk7YW5pbWF0aW9uLX
RpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjU1LC4wNTUsLjY3NSwuMTkpfTYwJXtvcGFjaXR5OjE7L
XdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguNDc1LC40NzUsLjQ3NSkgdHJhbnNsYXRlM2QoMCwtNjBweCww
KTt0cmFuc2Zvcm06c2NhbGUzZCguNDc1LC40NzUsLjQ3NSkgdHJhbnNsYXRlM2QoMCwtNjBweCwwKTstd2V
ia2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNzUsLjg4NSwuMzIsMSk7YW
5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3NSwuODg1LC4zMiwxKX19Lnpvb21Jb
lVwey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6em9vbUluVXA7YW5pbWF0aW9uLW5hbWU6em9vbUluVXB9QC13
ZWJraXQta2V5ZnJhbWVzIHpvb21PdXR7MCV7b3BhY2l0eToxfTUwJXstd2Via2l0LXRyYW5zZm9ybTpzY2F
sZTNkKC4zLC4zLC4zKTt0cmFuc2Zvcm06c2NhbG
UzZCguMywuMywuMyl9NTAlLHRve29wYWNpdHk6MH19QGtleWZyYW1lcyB6b29tT3V0ezAle29wYWNpdHk6M
X01MCV7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguMywuMywuMyk7dHJhbnNmb3JtOnNjYWxlM2QoLjMs
LjMsLjMpfTUwJSx0b3tvcGFjaXR5OjB9fS56b29tT3V0ey13ZWJraXQtYW5pbWF0aW9uLW5hbWU6em9vbU9
1dDthbmltYXRpb24tbmFtZTp6b29tT3V0fUAtd2Via2l0LWtleWZyYW1lcyB6b29tT3V0RG93bns0MCV7b3
BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5zbGF0ZTNkK
DAsLTYwcHgsMCk7dHJhbnNmb3JtOnNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5zbGF0ZTNkKDAsLTYw
cHgsMCk7LXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNTUsLjA1NSw
uNjc1LC4xOSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjU1LC4wNTUsLjY3NS
wuMTkpfXRve29wYWNpdHk6MDstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKC4xLC4xLC4xKSB0cmFuc2xhd
GUzZCgwLDIwMDBweCwwKTt0cmFuc2Zvcm06c2NhbGUzZCguMSwuMSwuMSkgdHJhbnNsYXRlM2QoMCwyMDAw
cHgsMCk7LXdlYmtpdC10cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBib3R0b207dHJhbnNmb3JtLW9yaWdpbjp
jZW50ZXIgYm90dG9tOy13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLj
E3NSwuODg1LC4zMiwxKTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTc1LC44O
DUsLjMyLDEpfX1Aa2V5ZnJhbWVzIHpvb21PdXREb3duezQwJXtvcGFjaXR5OjE7LXdlYmtpdC10cmFuc2Zv
cm06c2NhbGUzZCguNDc1LC40NzUsLjQ3NSkgdHJhbnNsYXRlM2QoMCwtNjBweCwwKTt0cmFuc2Zvcm06c2N
hbGUzZCguNDc1LC40NzUsLjQ3NSkgdHJhbnNsYXRlM2QoMCwtNjBweCwwKTstd2Via2l0LWFuaW1hdGlvbi
10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC41NSwuMDU1LC42NzUsLjE5KTthbmltYXRpb24tdGlta
W5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNTUsLjA1NSwuNjc1LC4xOSl9dG97b3BhY2l0eTowOy13ZWJr
aXQtdHJhbnNmb3JtOnNjYWxlM2QoLjEsLjEsLjEpIHRyYW5zbGF0ZTNkKDAsMjAwMHB4LDApO3RyYW5zZm9
ybTpzY2FsZTNkKC4xLC4xLC4xKSB0cmFuc2xhdGUzZCgwLDIwMDBweCwwKTstd2Via2l0LXRyYW5zZm9ybS
1vcmlnaW46Y2VudGVyIGJvdHRvbTt0cmFuc2Zvcm0tb3JpZ2luOmNlbnRlciBib3R0b207LXdlYmtpdC1hb
mltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguMTc1LC44ODUsLjMyLDEpO2FuaW1hdGlv
bi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNzUsLjg4NSwuMzIsMSl9fS56b29tT3V0RG93bns
td2Via2l0LWFuaW1hdGlvbi1uYW1lOnpvb21PdXREb3duO2FuaW1hdGlvbi1uYW1lOnpvb21PdXREb3dufU
Atd2Via2l0LWtleWZyYW1lcyB6b29tT3V0TGVmdHs0MCV7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtO
nNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5zbGF0ZTNkKDQycHgsMCwwKTt0cmFuc2Zvcm06c2NhbGUz
ZCguNDc1LC40NzUsLjQ3NSkgdHJhbnNsYXRlM2QoNDJweCwwLDApfXRve29wYWNpdHk6MDstd2Via2l0LXR
yYW5zZm9ybTpzY2FsZSguMSkgdHJhbnNsYXRlM2QoLTIwMDBweCwwLDApO3RyYW5zZm9ybTpzY2FsZSguMS
kgdHJhbnNsYXRlM2QoLTIwMDBweCwwLDApOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpsZWZ0IGNlbnRlc
jt0cmFuc2Zvcm0tb3JpZ2luOmxlZnQgY2VudGVyfX1Aa2V5ZnJhbWVzIHpvb21PdXRMZWZ0ezQwJXtvcGFj
aXR5OjE7LXdlYmtpdC10cmFuc2Zvcm06c2NhbGUzZCguNDc1LC40NzUsLjQ3NSkgdHJhbnNsYXRlM2QoNDJ
weCwwLDApO3RyYW5zZm9ybTpzY2FsZTNkKC40NzUsLjQ3NSwuNDc1KSB0cmFuc2xhdGUzZCg0MnB4LDAsMC
l9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC4xKSB0cmFuc2xhdGUzZCgtMjAwMHB4L
DAsMCk7dHJhbnNmb3JtOnNjYWxlKC4xKSB0cmFuc2xhdGUzZCgtMjAwMHB4LDAsMCk7LXdlYmtpdC10cmFu
c2Zvcm0tb3JpZ2luOmxlZnQgY2VudGVyO3RyYW5zZm9ybS1vcmlnaW46bGVmdCBjZW50ZXJ9fS56b29tT3V
0TGVmdHstd2Via2l0LWFuaW1hdGlvbi1uYW1lOnpvb21PdXRMZWZ0O2FuaW1hdGlvbi1uYW1lOnpvb21PdX
RMZWZ0fUAtd2Via2l0LWtleWZyYW1lcyB6b29tT3V0UmlnaHR7NDAle29wYWNpdHk6MTstd2Via2l0LXRyY
W5zZm9ybTpzY2FsZTNkKC40NzUsLjQ3NSwuNDc1KSB0cmFuc2xhdGUzZCgtNDJweCwwLDApO3RyYW5zZm9y
bTpzY2FsZTNkKC40NzUsLjQ3NSwuNDc1KSB0cmFuc2xhdGUzZCgtNDJweCwwLDApfXRve29wYWNpdHk6MDs
td2Via2l0LXRyYW5zZm9ybTpzY2FsZSguMSkgdHJhbnNsYXRlM2QoMjAwMHB4LDAsMCk7dHJhbnNmb3JtOn
NjYWxlKC4xKSB0cmFuc2xhdGUzZCgyMDAwcHgsMCwwKTstd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46cmlna
HQgY2VudGVyO3RyYW5zZm9ybS1vcmlnaW46cmlnaHQgY2VudGVyfX1Aa2V5ZnJhbWVzIHpvb21PdXRSaWdo
dHs0MCV7b3BhY2l0eToxOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5
zbGF0ZTNkKC00MnB4LDAsMCk7dHJhbnNmb3JtOnNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5zbGF0ZT
NkKC00MnB4LDAsMCl9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlKC4xKSB0cmFuc2xhd
GUzZCgyMDAwcHgsMCwwKTt0cmFuc2Zvcm06c2NhbGUoLjEpIHRyYW5zbGF0ZTNkKDIwMDBweCwwLDApOy13
ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpyaWdodCBjZW50ZXI7dHJhbnNmb3JtLW9yaWdpbjpyaWdodCBjZW5
0ZXJ9fS56b29tT3V0UmlnaHR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTp6b29tT3V0UmlnaHQ7YW5pbWF0aW
9uLW5hbWU6em9vbU91dFJpZ2h0fUAtd2Via2l0LWtleWZyYW1lcyB6b29tT3V0VXB7NDAle29wYWNpdHk6M
Tstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTNkKC40NzUsLjQ3NSwuNDc1KSB0cmFuc2xhdGUzZCgwLDYwcHgs
MCk7dHJhbnNmb3JtOnNjYWxlM2QoLjQ3NSwuNDc1LC40NzUpIHRyYW5zbGF0ZTNkKDAsNjBweCwwKTstd2V
ia2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC41NSwuMDU1LC42NzUsLjE5KT
thbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllciguNTUsLjA1NSwuNjc1LC4xOSl9dG97b
3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3JtOnNjYWxlM2QoLjEsLjEsLjEpIHRyYW5zbGF0ZTNkKDAsLTIw
MDBweCwwKTt0cmFuc2Zvcm06c2NhbGUzZCguMSwuMSwuMSkgdHJhbnNsYXRlM2QoMCwtMjAwMHB4LDApOy1
3ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpjZW50ZXIgYm90dG9tO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIG
JvdHRvbTstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNzUsLjg4N
SwuMzIsMSk7YW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3NSwuODg1LC4zMiwx
KX19QGtleWZyYW1lcyB6b29tT3V0VXB7NDAle29wYWNpdHk6MTstd2Via2l0LXRyYW5zZm9ybTpzY2FsZTN
kKC40NzUsLjQ3NSwuNDc1KSB0cmFuc2xhdGUzZCgwLDYwcHgsMCk7dHJhbnNmb3JtOnNjYWxlM2QoLjQ3NS
wuNDc1LC40NzUpIHRyYW5zbGF0ZTNkKDAsNjBweCwwKTstd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY
3Rpb246Y3ViaWMtYmV6aWVyKC41NSwuMDU1LC42NzUsLjE5KTthbmltYXRpb24tdGltaW5nLWZ1bmN0aW9u
OmN1YmljLWJlemllciguNTUsLjA1NSwuNjc1LC4xOSl9dG97b3BhY2l0eTowOy13ZWJraXQtdHJhbnNmb3J
tOnNjYWxlM2QoLjEsLjEsLjEpIHRyYW5zbGF0ZTNkKDAsLTIwMDBweCwwKTt0cmFuc2Zvcm06c2NhbGUzZC
guMSwuMSwuMSkgdHJhbnNsYXRlM2QoMCwtMjAwMHB4LDApOy13ZWJraXQtdHJhbnNmb3JtLW9yaWdpbjpjZ
W50ZXIgYm90dG9tO3RyYW5zZm9ybS1vcmlnaW46Y2VudGVyIGJvdHRvbTstd2Via2l0LWFuaW1hdGlvbi10
aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKC4xNzUsLjg4NSwuMzIsMSk7YW5pbWF0aW9uLXRpbWluZy1
mdW5jdGlvbjpjdWJpYy1iZXppZXIoLjE3NSwuODg1LC4zMiwxKX19Lnpvb21PdXRVcHstd2Via2l0LWFuaW
1hdGlvbi1uYW1lOnpvb21PdXRVcDthbmltYXRpb24tbmFtZTp6b29tT3V0VXB9QC13ZWJraXQta2V5ZnJhb
WVzIHNsaWRlSW5Eb3duezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCk7dHJh
bnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCk7dmlzaWJpbGl0eTp2aXNpYmxlfXRvey13ZWJraXQtdHJ
hbnNmb3JtOnRyYW5zbGF0ZVooMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9fUBrZXlmcmFtZXMgc2xpZG
VJbkRvd257MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwtMTAwJSwwKTt0cmFuc2Zvcm06d
HJhbnNsYXRlM2QoMCwtMTAwJSwwKTt2aXNpYmlsaXR5OnZpc2libGV9dG97LXdlYmtpdC10cmFuc2Zvcm06
dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX19LnNsaWRlSW5Eb3duey13ZWJraXQtYW5
pbWF0aW9uLW5hbWU6c2xpZGVJbkRvd247YW5pbWF0aW9uLW5hbWU6c2xpZGVJbkRvd259QC13ZWJraXQta2
V5ZnJhbWVzIHNsaWRlSW5MZWZ0ezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsM
Ck7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCk7dmlzaWJpbGl0eTp2aXNpYmxlfXRvey13ZWJr
aXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9fUBrZXlmcmFtZXM
gc2xpZGVJbkxlZnR7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoLTEwMCUsMCwwKTt0cmFuc2
Zvcm06dHJhbnNsYXRlM2QoLTEwMCUsMCwwKTt2aXNpYmlsaXR5OnZpc2libGV9dG97LXdlYmtpdC10cmFuc
2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX19LnNsaWRlSW5MZWZ0ey13ZWJr
aXQtYW5pbWF0aW9uLW5hbWU6c2xpZGVJbkxlZnQ7YW5pbWF0aW9uLW5hbWU6c2xpZGVJbkxlZnR9QC13ZWJ
raXQta2V5ZnJhbWVzIHNsaWRlSW5SaWdodHswJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMD
AlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKTt2aXNpYmlsaXR5OnZpc2libGV9dG97L
XdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwKTt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX19QGtleWZy
YW1lcyBzbGlkZUluUmlnaHR7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApO3R
yYW5zZm9ybTp0cmFuc2xhdGUzZCgxMDAlLDAsMCk7dmlzaWJpbGl0eTp2aXNpYmxlfXRvey13ZWJraXQtdH
JhbnNmb3JtOnRyYW5zbGF0ZVooMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9fS5zbGlkZUluUmlnaHR7L
XdlYmtpdC1hbmltYXRpb24tbmFtZTpzbGlkZUluUmlnaHQ7YW5pbWF0aW9uLW5hbWU6c2xpZGVJblJpZ2h0
fUAtd2Via2l0LWtleWZyYW1lcyBzbGlkZUluVXB7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2Q
oMCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCk7dmlzaWJpbGl0eTp2aXNpYmxlfX
Rvey13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9fUBrZ
XlmcmFtZXMgc2xpZGVJblVwezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsMTAwJSwwKTt0
cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwxMDAlLDApO3Zpc2liaWxpdHk6dmlzaWJsZX10b3std2Via2l0LXR
yYW5zZm9ybTp0cmFuc2xhdGVaKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfX0uc2xpZGVJblVwey13ZW
JraXQtYW5pbWF0aW9uLW5hbWU6c2xpZGVJblVwO2FuaW1hdGlvbi1uYW1lOnNsaWRlSW5VcH1ALXdlYmtpd
C1rZXlmcmFtZXMgc2xpZGVPdXREb3duezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7dHJh
bnNmb3JtOnRyYW5zbGF0ZVooMCl9dG97dmlzaWJpbGl0eTpoaWRkZW47LXdlYmtpdC10cmFuc2Zvcm06dHJ
hbnNsYXRlM2QoMCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCl9fUBrZXlmcmFtZX
Mgc2xpZGVPdXREb3duezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZVooMCk7dHJhbnNmb3JtOnRyY
W5zbGF0ZVooMCl9dG97dmlzaWJpbGl0eTpoaWRkZW47LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlM2Qo
MCwxMDAlLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLDEwMCUsMCl9fS5zbGlkZU91dERvd257LXdlYmt
pdC1hbmltYXRpb24tbmFtZTpzbGlkZU91dERvd247YW5pbWF0aW9uLW5hbWU6c2xpZGVPdXREb3dufUAtd2
Via2l0LWtleWZyYW1lcyBzbGlkZU91dExlZnR7MCV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlWigwK
Tt0cmFuc2Zvcm06dHJhbnNsYXRlWigwKX10b3t2aXNpYmlsaXR5OmhpZGRlbjstd2Via2l0LXRyYW5zZm9y
bTp0cmFuc2xhdGUzZCgtMTAwJSwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgtMTAwJSwwLDApfX1Aa2V
5ZnJhbWVzIHNsaWRlT3V0TGVmdHswJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3RyYW5zZm
9ybTp0cmFuc2xhdGVaKDApfXRve3Zpc2liaWxpdHk6aGlkZGVuOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zb
GF0ZTNkKC0xMDAlLDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKC0xMDAlLDAsMCl9fS5zbGlkZU91dExl
ZnR7LXdlYmtpdC1hbmltYXRpb24tbmFtZTpzbGlkZU91dExlZnQ7YW5pbWF0aW9uLW5hbWU6c2xpZGVPdXR
MZWZ0fUAtd2Via2l0LWtleWZyYW1lcyBzbGlkZU91dFJpZ2h0ezAley13ZWJraXQtdHJhbnNmb3JtOnRyYW
5zbGF0ZVooMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZVooMCl9dG97dmlzaWJpbGl0eTpoaWRkZW47LXdlYmtpd
C10cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgxMDAlLDAs
MCl9fUBrZXlmcmFtZXMgc2xpZGVPdXRSaWdodHswJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDA
pO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfXRve3Zpc2liaWxpdHk6aGlkZGVuOy13ZWJraXQtdHJhbnNmb3
JtOnRyYW5zbGF0ZTNkKDEwMCUsMCwwKTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMTAwJSwwLDApfX0uc2xpZ
GVPdXRSaWdodHstd2Via2l0LWFuaW1hdGlvbi1uYW1lOnNsaWRlT3V0UmlnaHQ7YW5pbWF0aW9uLW5hbWU6
c2xpZGVPdXRSaWdodH1ALXdlYmtpdC1rZXlmcmFtZXMgc2xpZGVPdXRVcHswJXstd2Via2l0LXRyYW5zZm9
ybTp0cmFuc2xhdGVaKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDApfXRve3Zpc2liaWxpdHk6aGlkZGVuOy
13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkK
DAsLTEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCl9fUBrZXlmcmFtZXMgc2xpZGVP
dXRVcHswJXstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGVaKDApO3RyYW5zZm9ybTp0cmFuc2xhdGVaKDA
pfXRve3Zpc2liaWxpdHk6aGlkZGVuOy13ZWJraXQtdHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMC
k7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsLTEwMCUsMCl9fS5zbGlkZU91dFVwey13ZWJraXQtYW5pbWF0a
W9uLW5hbWU6c2xpZGVPdXRVcDthbmltYXRpb24tbmFtZTpzbGlkZU91dFVwfQ==
###PACKDATA,FILE_END,/css/animate.css,importbuddy/css/animate.css
###PACKDATA,FILE_START,/images/working.gif,importbuddy/images/working.gif
R0lGODlhKwALAPEAAPn5+SiKt5LC2CiKtyH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWp
heGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAKwALAAACMoSOCMuW2diD88UKG95W88uF4DaGWFmhZid93pq+pw
xnLUnXh8ou+sSz+T64oCAyTBUAACH5BAkKAAAALAAAAAArAAsAAAI9xI4IyyAPYWOxmoTHrHzzmGHe94xkm
JifyqFKQ0pwLLgHa82xrekkDrIBZRQab1jyfY7KTtPimixiUsevAAAh+QQJCgAAACwAAAAAKwALAAACPYSO
CMswD2FjqZpqW9xv4g8KE7d54XmMpNSgqLoOpgvC60xjNonnyc7p+VKamKw1zDCMR8rp8pksYlKorgAAIfk
ECQoAAAAsAAAAACsACwAAAkCEjgjLltnYmJS6Bxt+sfq5ZUyoNJ9HHlEqdCfFrqn7DrE2m7Wdj/2y45FkQ1
3t5itKdshFExC8YCLOEBX6AhQAADs=
###PACKDATA,FILE_END,/images/working.gif,importbuddy/images/working.gif
###PACKDATA,FILE_START,/images/bullet_go.png,importbuddy/images/bullet_go.png
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHd
hcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEsSURBVDjLY/j//z8DJZhhmBuQvdj8a+p8w//xc3U5yTIgeb
7h18bNUf/DZ2j8958qz0nQgPyltv9zF5v/TV9o/Ddxrv7fmvWh/1ednvi/ZLX/f9d+8b+23YI8eA0AOvn/h
nPT/q89OwWsccXpCf8n7Cn5v/B41/+MpW7/TdvZ/
+o2M/LjNADoZLDmvl35/zt3ZP9v3Zb2v2Fz4v+mren/Zxxq/h+zwOa/aj3DH5wGRM/W/L/y1IT/S0/0/l94
rOv/vKMdQEOy/k8/1PQ/banHf8VahlfSlQwGOA0InK74z3Oi9D/nftF/1t38/+LmW/2fdrDhf9Jit//ytQz
PJSsZtEiKBe1mxq/xC53/y1czPAFqVic5GoFO/ipXzfxftJJBkeyUKFzOwDm48wIAh5XH+g7drOwAAAAASU
VORK5CYII=
###PACKDATA,FILE_END,/images/bullet_go.png,importbuddy/images/bullet_go.png
###PACKDATA,FILE_START,/images/favicon.png,importbuddy/images/favicon.png
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1B
QaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghod
kVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRN
YAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCE
AcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYh
EAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8l
c88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9e
M4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOna
V/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGL
c5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2Sy
cQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzAB
hzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyB
CQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvy
GvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsT
gsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTq
Eu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuy
BzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlK
vUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZx
l3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM
1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXE
JrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpa
XllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+
6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRu
dE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vf
t2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOX
YBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2D
PjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn
8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLe
WV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4K
tguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3p
tnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOw
vSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOl
LOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAV
ZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxed
sK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+F
YmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fN
KNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZft
J+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx+
+/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3n
r8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb+
+6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9
L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89Hc
R/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O
/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLd
sAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAACFdJREFUeNrkl21sleUZx
3/383JeaE9L29Pa8iZ9se0E0SHoBDUUt+gkQxd0aqImW5aZuUzNsky36cZcBl+2D3OLLhr1wxKikQwN4CYd
bBYNQoeg0hSspOXQck4tbc9L29Nz7ue+r304BwaCxg8mftidXHmS50nu+3dd93X9r+tRIsKXuRy+5PWlA3g
HDhxARPA8j3g8TnV1NVVVVVgR1PQ0JpPBra5m6t1DhJsX1+R27Vo129fXWBwYCIVaWsLF48cDt7o68NvaZi
pvvLHfrYz1KtfBjcVQCxZgfZ+Q75PP5/F9n0KhwODgIFprlFJ4n0WnfB+3sjJeHBpaP/32W3ePP/N0hz09v
ojCLG4oRNDfjxuJYsfGmBkeJv+fgzNe4yWJ2E039UQvv3xLqLLyTRsEnx2Bi5+scB2nenZ4+JGxF164d7qn
p410GtdxcJXCiUZpePJJIkuXAlAcGGD0sccIhhNzCsMnO6cPHOj0Wlp+MHfDhn9V33nnn5yKim2fG0CUwlH
q66Nbt/7h46eeWmaTpwhFo7jhMK4CZ7aIN38B4dWrccPh0iZ1dah583AnJlCREFhBf/QRyU2butK793Qt+t
UTf3VaWx9F6+SnJqGIoByHaCz22Knnn3998Bc/X6ZHR3Gjc1AolDEoY1EmoIBQPKd6rbUYgCBAjEVZixPyc
cJhMm/tpf+BB+4z/f3/9MPhlZ8se0cphYhgRaifP/93Ey+/vHngyd/6EhhsoUiQzZYsk0Gn0xTHx4nMm0ck
FDq7Sdj38S9dzOzpcYLJNEE6U7JsDkSYPnqUvgcfvLyYSOzwIpFrrbUopUrW09NDJBKho7PzAWdk5C/7N9y
ByqSpbGigvmstflUML1ZJqC4OIvj1DUSXfxWvqek8T8zYGPlDh9BjY9hiEWsMs6lRdDbLx3t2kzkxRP3627
jqueeGPjp+fM3kxMQJEYHdu3fz3gcfdIpI+uDDD8trNTWyq6FBUq+8Il/UOvXSS/J6bY281tQkqV27RES27
ty5U7344os4+XyeS1taHi+MjlYPv/EG4ji49fXE16z5wsSmYe1avMYmZtNphl57FWBDY1PTN+bNm4fX3Nz8
lao5c24f3bePqWSSynCY7GyBd/7+D2oWL+bCKoFLlyylsmbuee+nJic50deHKufYuak2fuxD0tkcbjjM2Lu
HCaam6Fyy5KF9e/fu8rTW6xRUJN9/n8BYAsDJZuj97vcomAAXVZKG8mZFLEt+
+CPWP/3n8wD+vfE3HHnqj/g4+I4i4jhYAQO4rsMl1VUEIZ/JE0Pkx8eJLlp0fVVV1WKvpqZmBcBYIoHWmqI
JEXEcOupq8ABXKVQZQAE6l8MdGb4gMnNOnGDFnCh+rKqsZQojQoCgBWasJbBCvjBNoDWeUtVLly692ovFYs
0AudkC2hq0tSixiFK4gKdUSQfK9auDgJjnXtjVXIcZYwmCAJTCIhjAiqABLRAg5ApF8vlZaoDDhw/P90SkA
sDGKpk2hpA1JV+VwkUwSuEASkApCKzFXmSGMFYoGoNYiyAICoNgbBkAwQhkxWLKDuRyuUpvenp6pra2lrrO
Tg5YS8xaLGBR+ICrQFGGALQxWKUuALCKEoAxiKJ0/yIEQCCgFRQKBfQljVTW1gIwMzMz46RSqQRA5/U3kI5
ESReKaGspWEPBWgrGUDxj1hAAmfEJ8oViGRQKgWEqk0FTikLB2PKzZEVrMNYwVCxSt/xq5tbXEwQBSqmUNz
Q0dHjlypUb5l3WRuet6+j721aWOQ6eAiPglqPgUEpGLxImtf8Az6y+nlhtLQJMT0wS7j9CLByhUI6gQbBl7
0VBRhtOAXfdfx/KcchMTuYSicRhb3Bw8PXx8fFf1tXVRe544nHe697F0VyWtnAIT8qHC7hlAK0UYQlwDvai
y+GPAH4oRN5RWBGsFUQpAgQBckY4ojXL132LlbffBkBfX19vMpk86l5zzTVJpdS17e3tHXMbG6mqjfPmju3
MGENUlbLfihCIYBECsQQi4LrgOOA6iOuikdJdi6BFMCJosYxb4WgQ0HRZO4+8/BIVc+cyNTXF9u3bf6q17n
e7urpIpVLHFy1adG9NTY3fsuJqouEI+3fvYdxaRM4kIoiU7twIBOckWCClw40IRkqtOQuMGMugWBa2d/Czb
dtovKwNgO7u7j3Hjh37te/7xu3q6kJrPTIyMkJnZ+faSCRCxw3Xs6C9naP73yGRzZKRUv8PynlhylJrKdW7
BorAlEAGSFrLSRGywNe+eSsPbdlCU0c7AAcPHpzcs2fPXZ7nJZVSuGvWrMF1XbLZ7NsnT55c0NraujwajbL
wiitYfed3cEU4nUgwnMsxKUJGhLQIk2WbEOF02UYRRsuR6Vixkvs3beaezZuorKuDkvDM7Nix4x5r7duOU5
qF1MaNG8/WcrFYDDU0NPx+3bp1P25razv7fmJkhN5tr3J0bw8f7ttP9vQYpqgJjEah8PwQoUiYxtY22m9Yz
VW33MJVN9+MckuCEwQBPT09qZ6enu9ba3e67v+U9DwAAK01oVDovuuuu27zqlWr5ldUVJz3PZ/LMTY4SDqZ
Ijs2RigSIdZQT3zhQmrmz8c7Z1ICGB4epru7u3tgYOAnvu8fOeP5pwKcmfGCIGiNx+OPXnnlld9etmxZPB6
Pf+7+HwQBiUSC3t7e9wcGBp6dnZ191vd9fdEB/GIAZ/XdGLTWrdXV1Xc3NjauX7hwYUtzc3M8FovheR6+75
+BRWtNKpUKBgcHR5LJ5OFUKrUlCIKdnudNf9Lrzw1wLogxBqVUq+M4y4GGSCRSF41G640xs/l8/rTWOiMix
6y1h5RSac/zUBfpGRcA/N//Hf93AHiGrdXcwqWjAAAAAElFTkSuQmCC
###PACKDATA,FILE_END,/images/favicon.png,importbuddy/images/favicon.png
###PACKDATA,FILE_START,/images/sort_down.png,importbuddy/images/sort_down.png
iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJ
lYWR5ccllPAAAAHBJREFUeNqMkD0OABEQRmcmVChIqN3/WBJHoLVYxK7GK4TvZwIMIcANrC0xxpJSOkzOOX
jvASvUBOdcOxzBoXeDRhO11p+QlBKEEKtNc2OMAcbYKxL1aTsrWE201u4lPB4zUUphzrn8r9HA2+95BBgA3
YASwqCieowAAAAASUVORK5CYII=
###PACKDATA,FILE_END,/images/sort_down.png,importbuddy/images/sort_down.png
###PACKDATA,FILE_START,/images/icon_menu_32x32.png,importbuddy/images/icon_menu_32x
32.png
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1B
QaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghod
kVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRN
YAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCE
AcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYh
EAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8l
c88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9e
M4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOna
V/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGL
c5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2Sy
cQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzAB
hzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyB
CQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvy
GvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsT
gsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTq
Eu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuy
BzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlK
vUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZx
l3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM
1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXE
JrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpa
XllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+
6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRu
dE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vf
t2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOX
YBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2D
PjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn
8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLe
WV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4K
tguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3p
tnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOw
vSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOl
LOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAV
ZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxed
sK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+F
YmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fN
KNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZft
J+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx+
+/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3n
r8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb+
+6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9
L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89Hc
R/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O
/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLd
sAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABtNJREFUeNrsl39sVeUZx
z/ve85pL9iWUmxHKdCCLrK6pZAZsWQQfiwWxcAYGT+WuWyJcygz/jGW4bKYGHEi8Q9nwhK2JTOybBQWt5g5
QJNFMRFRQKqGoUDpLVDoD25vb2/Lveec93n2x72ttLBh/Id/fJM359z3nPN+v+/3eZ/n/V6jqtzMZrnJ7Us
C/p9bW6/74Gvbt2MNGMAag6FwjzLLGHN3MGfO1621FkBEJDp58piqvgdcUGNo27z58xH4Xw+cCGrAKJStWP
FonEw+5DqTd0p2qMQA0YkTABhjUFWUAkNTMSkXzJ7dtqCjY+c7DQ1/uhEBs2v37msGH1y/np6LF8uG33jjq
YFXXtkYtbdPNBg8AygMO8e81w+QmDYNgHhwkPeaF1Dm+yggxQVMmNs0OGnNmh2l8+c/U1NbmwUYj3ddBVI9
Pau7d+x4qW/P3grPgGcsRhWsRVU5mxmkuQgO4JeX0+P5JJxDVRFV1BgGjhwtTx/7YMvURzb+NNXT83BVTc3
f/m8IWhYtKikpKXm5fevWdanXXsMD1FpEY6wxOAcOZc76tdeQnv29NQzu2oVnDBhDLIIag4sjki/
+dnKuv39vuq+vNQzDHx44eDC8JgT3LlxYVVpa+veuvXsXnX7uOVSVu3buJJg0iep77vlCOzzKZOg7dIgjGz
cCcOf27UxZuvRgPp9f/frbb6fGpKHv+3skl1v08fPPMxxFVK5axbSWli8MDhBUVFDb0oLMncuVOKJt61YML
PJ9f8+YENy3ePGWIAiWnWltJT+UxYnyn6PHGHjqaa5XqGc0NTHvOyvHjH3wj1c519ZGMRlGvzPA2VNnmBxG
5Hu6ufTWW9QuXrzsvsWLt+x7881tpquzc2oikegMgiD459p15I8fQ1RJi5JWJS+CBTxjsCgO+MrdzTx2YN8
YAi+2LKfn8Luj4FLsgTVMtpbJxmKNoer+
+1nywgtEURTlcrmZvog87nleANDX2Ulp7DDGMBGlVBU8D6taKEpqiExh0vFtgrVM8yyBfkbAGUAUXxSxSuw
clz79FADP8wIRedwX2GBMYcJsmMcTKQIaAsAXwahiixUxJ4U0u6amqzJRlNKiAk4VMaZwBaIoQo0h79xoAR
PY4Jf4ft0IAZlaS763Fx/wDCiFCaw1eArGQCzKcCrFcDrNxMpKAIbTabKpFBOdK4TAGJzIaBjEGGIUJxDUN
4wSKPH9Ot96nq+qGGNoWLiQj48e5VbP4hmwWli1rwYHGFUiYOCjD/n5rTXEV+3k2sAnKLBGriKvQFxUods5
lixcCICqYj3PN+eTSS0vK8NaS6anh199o4nbEBLGFGQHbJGMMWAwDKuSBaIicQ+lDJiAKSoAMo7IENBdXsF
vPvqQIJFARBjMZrEDmUwoIgBU1NTw7cd+xqkwZlAcsSqxKqETQhFCJ0QieCKUqVCpyiQRylXxR94VIRIlUi
USJXSOfudoz8esevJJgkSC4gnKQCYT2svpdHtcrOEAK5/YwrzvrqY9Ei7FjpxzhCpEKkRFgFgEdQJS6CpC7
ITQOUIR8sVrzjkuOqEjFpZseoRvPfiDUflj57icTrd7yx94IFEzZcq9QRBgrcVayzdXrSTMh7Qdepe0gtNC
KBTFqeLMSJ6bQrqpEpvC7xglB/SJ0iVwxfNZv+1ZVvxi82fgcUw2m+XkmTPbzK7du8uqq6ouzm1sLCstLcX
zPEay4uzRY7Ru+SXtR44BkAAmoASABwTFehcWieQx5DDkUQyGxmVLWfvM09TecccouHOOfD7P8RMnsr2pVO
3IYbTuq/X1uxtmzGA8CYD299/nnb/8leP/2kemp6e41QqKFMqtGb2vmj6du1atpPn7G6hrbByd42rwjnPnO
JVMrgdaR09Da+0fbps586H6ujpKSkrwfZ+i4xrTetvP0vXJJwx0d48ZnzJjOnWNjVTW1l7zjYgQxzFhGJK8
cIEznZ1/FJGfjPEDIrLpVEeHH4bhjxqmTyeRSOD7/qgaI4pUz55F9exZNzwJVbVgTpwjimNyuRwd58+T7Op
6Cdh0PUMSAj9OdnVd6Ovvf+L2+npbVVlJEAR4njeGyNWExgOOdOcczjmiKCKVTnM6mZShK1eeBX59Q08IzA
V+V1lR0VxbXU11VdWoGnaEyPgVF0lIETiOY3pTKS729pLOZA4BjwLHP68rPj6/qWnB4ba25elM5uHTyeTKi
vJyr+KWW6goK2NiMTwjKqgqLo4ZyuXIZLNkhobIDA66KI5fBX4P7L+hLdcR339Vm9/UtB/Yf7itrfpyf//S
y/39zUAzcDtQNd7LAqeBQ8X+b6D3hrb8yz+nN5vAfwcArs2hchpwFZgAAAAASUVORK5CYII=
###PACKDATA,FILE_END,/images/icon_menu_32x32.png,importbuddy/images/icon_menu_32x32
.png
###PACKDATA,FILE_START,/lib/dbreplace/dbreplace.php,importbuddy/lib/dbreplace/dbrep
lace.php
PD9waHAKLyoqCiAqCXBsdWdpbmJ1ZGR5X2RicmVwbGFjZSBDbGFzcwogKgogKglIYW5kbGVzIHJlcGxhY2V
tZW50IG9mIGRhdGEgaW4gYSB0YWJsZS9kYXRhYmFzZSwgdGV4dCBvciBzZXJpYWxpemVkLiBBIGRhdGFiYX
NlIGNvbm5lY3Rpb24gc2hvdWxkIGJlIGluaXRpYWxpemVkIGJlZm9yZSBpbnN0YW50aWF0aW9uLgogKgkKI
CoJQHNpbmNlIDEuMC4wCiAqCUBhdXRob3IgRHVzdGluIEJvbHRvbgogKgogKglAcGFyYW0JCSRzdGF0dXNf
Y2FsbGJhY2sJCW9iamVjdAkJT3B0aW9uYWwgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHN0YXR1cygpIGZ1bmN
0aW9uIGZvciByZXBvcnRpbmcgYmFjayBpbmZvcm1hdGlvbi4KICoJQHJldHVybgkJbnVsbAogKgogKi8KaW
YgKCFjbGFzc19leGlzdHMoInBsdWdpbmJ1ZGR5X2RicmVwbGFjZSIpKSB7CgljbGFzcyBwbHVnaW5idWRke
V9kYnJlcGxhY2UgewoJCXZhciAkX3ZlcnNpb24gPSAnMS4wJzsKCQkKCQl2YXIgJHN0YXJ0VGltZTsKCQl2
YXIgJHRpbWVXaWdnbGVSb29tOwoJCXZhciAkbWF4RXhlY3V0aW9uVGltZTsKCQkKCQljb25zdCBNQVhfUk9
XU19QRVJfU0VMRUNUID0gNTAwOwoJCQoJCQoJCS8qKgoJCSAqCV9fY29uc3RydWN0KCkKCQkgKgkKCQkgKg
lEZWZhdWx0IGNvbnN0cnVjdG9yLiBTZXRzIHVwIG9wdGlvbmFsIHN0YXR1cygpIGZ1bmN0aW9uIGNsYXNzI
GlmIGFwcGxpY2FibGUuCgkJICoJCgkJICoJQHBhcmFtCQlyZWZlcmVuY2UJJiRzdGF0dXNfY2FsbGJhY2sJ
CVtvcHRpb25hbF0gUmVmZXJlbmNlIHRvIHRoZSBjbGFzcyBjb250YWluaW5nIHRoZSBzdGF0dXMoKSBmdW5
jdGlvbiBmb3Igc3RhdHVzIHVwZGF0ZXMuCgkJICoJQHJldHVybgkJbnVsbAoJCSAqCgkJICovCgkJZnVuY3
Rpb24gX19jb25zdHJ1Y3QoICRzdGFydFRpbWUgPSAnJywgJHRpbWVXaWdnbGVSb29tID0gMSwgJG1heEV4Z
WN1dGlvblRpbWUgPSAzMCApIHsKCQkJaWYgKCAnJyA9PSAkc3RhcnRUaW1lICkgewoJCQkJJHRoaXMtPnN0
YXJ0VGltZSA9IG1pY3JvdGltZSggdHJ1ZSApOwoJCQl9IGVsc2UgewoJCQkJJHRoaXMtPnN0YXJ0VGltZSA
9ICRzdGFydFRpbWU7CgkJCX0KCQkJJHRoaXMtPnRpbWVXaWdnbGVSb29tID0gJHRpbWVXaWdnbGVSb29tOw
oJCQkkdGhpcy0+bWF4RXhlY3V0aW9uVGltZSA9ICRtYXhFeGVjdXRpb25UaW1lOwoJCX0KCQkKCQkKCQkKC
QkvKioKCQkgKgl0ZXh0KCkKCQkgKgkKCQkgKglSZXBsYWNlcyB0ZXh0IHdpdGhpbiBhIHRhYmxlIGJ5IHNw
ZWNpZnlpbmcgdGhlIHRhYmxlLCByb3dzIHRvIHJlcGxhY2Ugd2l0aGluIGFuZCB0aGUgb2xkIGFuZCBuZXc
gdmFsdWUocykuCgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJCSR0YWJsZQkJVGFibGUgdG8gcmVwbGFjZS
B0ZXh0IGluLgoJCSAqCUBwYXJhbQkJbWl4ZWQJCSRvbGRzCQlPbGQgdmFsdWUocykgdG8gZmluZCBmb3Igc
mVwbGFjZW1lbnQuIE1heSBiZSBhIHN0cmluZyBvciBhcnJheSBvZiB2YWx1ZXMuCgkJICoJQHBhcmFtCQlt
aXhlZAkJJG5ld3MJCU5ldyB2YWx1ZShzKSB0byBiZSByZXBsYWNlZCB3aXRoLiBNYXkgYmUgYSBzdHJpbmc
gb3IgYXJyYXkuIElmIGFycmF5IHRoZXJlIG11c3QgYmUgdGhlIHNhbWUgbnVtYmVyIG9mIHZhbHVlcyBhcy
Akb2xkcy4KCQkgKglAcGFyYW0JCW1peGVkCQkkcm93cwkJVGFibGUgcm93KHMpIHRvIHJlcGxhY2Ugd2l0a
GluLiBNYXkgYmUgYW4gYXJyYXkgb2YgdGFibGVzLgoJCSAqCUByZXR1cm4JCW51bGwKCQkgKgoJCSAqLwoJ
CXB1YmxpYyBmdW5jdGlvbiB0ZXh0KCAkdGFibGUsICRvbGRzLCAkbmV3cywgJHJvd3MgKSB7CgkJCSRyb3d
zX3NxbCA9IGFycmF5KCk7CgkJCQoJCQlpZiAoICFpc19hcnJheSggJG9sZHMgKSApIHsKCQkJCSRvbGRzID
0gYXJyYXkoICRvbGRzICk7CgkJCX0KCQkJaWYgKCAhaXNfYXJyYXkoICRuZXdzICkgKSB7CgkJCQkkbmV3c
yA9IGFycmF5KCAkbmV3cyApOwoJCQl9CgkJCWlmICggIWlzX2FycmF5KCAkcm93cyApICkgewoJCQkJJHJv
d3MgPSBhcnJheSggJHJvd3MgKTsKCQkJfQoJCQkKCQkJLy8gUHJldmVudCB0cnlpbmcgdG8gcmVwbGFjZSB
kYXRhIHdpdGggdGhlIHNhbWUgZGF0YSBmb3IgcGVyZm9ybWFuY2UuCgkJCSR0aGlzLT5yZW1vdmVfbWF0Y2
hpbmdfYXJyYXlfZWxlbWVudHMoICRvbGRzLCAkbmV3cyApOwoJCQkKCQkJZm9yZWFjaCAoICRyb3dzIGFzI
CRyb3cgKSB7CgkJCQkkaSA9IDA7CgkJCQlmb3JlYWNoICggJG9sZHMgYXMgJG9sZCApIHsKCQkJCQkkcm93
c19zcWxbXSA9ICRyb3cgLiAiID0gcmVwbGFjZSggeyRyb3d9LCAneyRvbGR9JywgJ3skbmV3c1skaV19Jyk
iOwoJCQkJCSRpKys7CgkJCQl9CgkJCX0KCQkJCgkJCWdsb2JhbCAkd3BkYjsKCQkJJHdwZGItPnF1ZXJ5KC
AiVVBEQVRFIGB7JHRhYmxlfWAgU0VUICIgLiBpbXBsb2RlKCAnLCcsICRyb3dzX3NxbCApIC4gIjsiICk7C
gkJCQoJCQlyZXR1cm4gdHJ1ZTsKCQkJCgkJfSAvLyBFbmQgdGV4dCgpLgoJCQoJCQoJCS8qKgoJCSAqCXNl
cmlhbGl6ZWQoKQoJCSAqCQoJCSAqCVJlcGxhY2VzIHNlcmlhbGl6ZWQgdGV4dCB3aXRoaW4gYSB0YWJsZSB
ieSBzcGVjaWZ5aW5nIHRoZSB0YWJsZSwgcm93cyB0byByZXBsYWNlIHdpdGhpbiBhbmQgdGhlIG9sZCBhbm
QgbmV3IHZhbHVlKHMpLgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCQkkdGFibGUJCVRhYmxlIHRvIHJlc
GxhY2UgdGV4dCBpbi4KCQkgKglAcGFyYW0JCW1peGVkCQkkb2xkcwkJT2xkIHZhbHVlKHMpIHRvIGZpbmQg
Zm9yIHJlcGxhY2VtZW50LiBNYXkgYmUgYSBzdHJpbmcgb3IgYXJyYXkgb2YgdmFsdWVzLgoJCSAqCUBwYXJ
hbQkJbWl4ZWQJCSRuZXdzCQlOZXcgdmFsdWUocykgdG8gYmUgcmVwbGFjZWQgd2l0aC4gTWF5IGJlIGEgc3
RyaW5nIG9yIGFycmF5LiBJZiBhcnJheSB0aGVyZSBtdXN0IGJlIHRoZSBzYW1lIG51bWJlciBvZiB2YWx1Z
XMgYXMgJG9sZHMuCgkJICoJQHBhcmFtCQltaXhlZAkJJHJvd3MJCVRhYmxlIHJvdyhzKSB0byByZXBsYWNl
IHdpdGhpbi4gTWF5IGJlIGFuIGFycmF5IG9mIHRhYmxlcy4KCQkgKglAcGFyYW0JCWludAkJCSRyb3dzX3N
0YXJ0CVJvdyB0byBzdGFydCBhdC4gVXNlZCBmb3IgcmVzdW1pbmcuCgkJICoJQHJldHVybgkJbnVsbAoJCS
AqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIHNlcmlhbGl6ZWQoICR0YWJsZSwgJG9sZHMsICRuZXdzLCAkc
m93cywgJHJvd3Nfc3RhcnQgPSAnJyApIHsKCQkJaWYgKCAhaXNfYXJyYXkoICRvbGRzICkgKSB7CgkJCQkk
b2xkcyA9IGFycmF5KCAkb2xkcyApOwoJCQl9CgkJCWlmICggIWlzX2FycmF5KCAkbmV3cyApICkgewoJCQk
JJG5ld3MgPSBhcnJheSggJG5ld3MgKTsKCQkJfQoJCQlpZiAoICFpc19hcnJheSggJHJvd3MgKSApIHsKCQ
kJCSRyb3dzID0gYXJyYXkoICRyb3dzICk7CgkJCX0KCQkJCgkJCWdsb2JhbCAkd3BkYjsKCQkJCgkJCS8vI
EdldCB0aGUgdG90YWwgcm93IGNvdW50IGZvciB0aGlzIHRhYmxlCgkJCSR0b3RhbF9yb3dzID0gMDsKCQkJ
JHRhYmxlc19zdGF0dXMgPSAkd3BkYi0+Z2V0X3Jlc3VsdHMoICJTSE9XIFRBQkxFIFNUQVRVUyIsIEFSUkF
ZX0EgKTsKCQkJCgkJCWZvcmVhY2ggKCAkdGFibGVzX3N0YXR1cyBhcyAkdGFibGVfc3RhdHVzICkgewoJCQ
kKCQkJCWlmICggJHRhYmxlID09PSAkdGFibGVfc3RhdHVzWyAnTmFtZScgXSApIHsKCQkJCQoJCQkJCS8vI
EZpeCB1cCByb3cgY291bnQgYW5kIGF2ZXJhZ2Ugcm93IGxlbmd0aCBmb3IgSW5ub0RCIGVuZ2luZSB3aGlj
aCByZXR1cm5zIGluYWNjdXJhdGUKCQkJCQkvLyAoYW5kIGNoYW5naW5nKSB2YWx1ZXMgZm9yIHRoZXNlCgk
JCQkJaWYgKCAnSW5ub0RCJyA9PT0gJHRhYmxlX3N0YXR1c1sgJ0VuZ2luZScgXSApIHsKCQkJCQkJaWYgKC
BmYWxzZSAhPT0gKCAkY291bnQgPSAkd3BkYi0+Z2V0X3ZhciggIlNFTEVDVCBDT1VOVCgxKSBGUk9NIGB7J
HRhYmxlX3N0YXR1c1snTmFtZSddfWAiICkgKSApIHsKCQkJCQkJCSR0YWJsZV9zdGF0dXNbICdSb3dzJyBd
ID0gJGNvdW50OwoJCQkJCQl9CgkJCQkJfQoJCQkKCQkJCQkkdG90YWxfcm93cyA9ICR0YWJsZV9zdGF0dXN
bICdSb3dzJyBdOwoJCQkJCgkJCQl9CgkJCQoJCQl9CgkJCQoJCQkvLyBQcmV2ZW50IHRyeWluZyB0byByZX
BsYWNlIGRhdGEgd2l0aCB0aGUgc2FtZSBkYXRhIGZvciBwZXJmb3JtYW5jZS4KCQkJJHRoaXMtPnJlbW92Z
V9tYXRjaGluZ19hcnJheV9lbGVtZW50cyggJG9sZHMsICRuZXdzICk7CgkJCSRrZXlfcmVzdWx0cyA9ICR3
cGRiLT5nZXRfcmVzdWx0cyggIlNIT1cgS0VZUyBGUk9NIGB7JHRhYmxlfWAgV0hFUkUgS2V5X25hbWU9J1B
SSU1BUlknOyIsIEFSUkFZX0EgKTsKCQkJaWYgKCAka2V5X3Jlc3VsdHMgPT09IGZhbHNlICkgewoJCQkJcG
JfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnVGFibGUgYCcgLiAkdGFibGUgLiAnYCBkb2VzI
G5vdCBleGlzdDsgc2tpcHBpbmcgbWlncmF0aW9uIG9mIHRoaXMgdGFibGUuJyApOwoJCQkJcmV0dXJuOwoJ
CQl9CgkJCQoJCQkvLyBObyBwcmltYXJ5IGtleSBmb3VuZDsgdW5zYWZlIHRvIGVkaXQgdGhpcyB0YWJsZS4
gQHNpbmNlIDIuMi4zMi4KCQkJaWYgKCBjb3VudCggJGtleV9yZXN1bHRzICkgPT0gMCApIHsKCQkJCXBiX2
JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ0Vycm9yICM5MDI5OiBXYXJuaW5nIG9ubHkhIFRhY
mxlIGAnLiAgJHRhYmxlIC4nYCBkb2VzIG5vdCBjb250YWluIGEgcHJpbWFyeSBrZXk7IEJhY2t1cEJ1ZGR5
IGNhbm5vdCBzYWZlbHkgbW9kaWZ5IHRoZSBjb250ZW50cyBvZiB0aGlzIHRhYmxlLiBTa2lwcGluZyBtaWd
yYXRpb24gb2YgdGhpcyB0YWJsZS4gKHNlcmlhbGl6ZWQoKSkuJyApOwoJCQkJcmV0dXJuIHRydWU7CgkJCX
0KCQkJCgkJCSRwcmltYXJ5X2tleSA9ICRrZXlfcmVzdWx0c1swXVsnQ29sdW1uX25hbWUnXTsKCQkJdW5zZ
XQoICRrZXlfcmVzdWx0ICk7CgkJCQoJCQkkdXBkYXRlZCA9IGZhbHNlOyAvLyBXYXMgc29tZXRoaW5nIGlu
IERCIHVwZGF0ZWQ/CgkJCSRyb3dzX3JlbWFpbiA9IHRydWU7IC8vIE1vcmUgcm93cyByZW1haW5pbmcgLyB
ha2EgYW5vdGhlciBxdWVyeSBmb3IgbW9yZSByb3dzIG5lZWRlZC4KCQkJaWYgKCAnJyA9PSAkcm93c19zdG
FydCApIHsKCQkJCSRyb3dzX3N0YXJ0ID0gMDsKCQkJfQoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZ
GV0YWlscycsICdGaW5kaW5nIHJvd3MgaW4gdGFibGUgYCcgLiAkdGFibGUgLiAnYCB0byB1cGRhdGUuJyAp
OwoJCQl3aGlsZSAoIHRydWUgPT09ICRyb3dzX3JlbWFpbiApIHsgLy8gS2VlcCBsb29waW5nIHRocm91Z2g
gcm93cyB1bnRpbCBub25lIHJlbWFpbi4gTG9vcGluZyB0aHJvdWdoIGxpa2UgdGhpcyB0byBsaW1pdCBtZW
1vcnkgdXNhZ2UgYXMgd3BkYiBjbGFzc2VzIGxvYWRzIGFsbCByZXN1bHRzIGludG8gbWVtb3J5LgoJCQkJJ
HJvd3NSZXN1bHQgPSAkd3BkYi0+Z2V0X3Jlc3VsdHMoICJTRUxFQ1QgYCIgLiBpbXBsb2RlKCAnYCxgJywg
JHJvd3MgKSAuICJgLGB7JHByaW1hcnlfa2V5fWAgRlJPTSBgeyR0YWJsZX1gIExJTUlUICIgLiAkcm93c19
zdGFydCAuICcsJyAuIHNlbGY6Ok1BWF9ST1dTX1BFUl9TRUxFQ1QgKTsKCQkJCSRyb3dzQ291bnQgPSBjb3
VudCggJHJvd3NSZXN1bHQgKTsKCgkJCQkvLyBQcm92aWRlIGFuIHVwZGF0ZSBvbiBwcm9ncmVzcwoJCQkJa
WYgKCAwID09PSAkcm93c0NvdW50ICkgewoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxz
JywgJ1RhYmxlOiBgJy4gJHRhYmxlIC4gJ2AgLSBwcm9jZXNzaW5nICcgLiAkcm93c0NvdW50IC4gJyByb3d
zICggb2YgJyAuICR0b3RhbF9yb3dzIC4gJyApJyApOwkJCQkKCQkJCX0gZWxzZSB7CgkJCQkJcGJfYmFja3
VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnVGFibGU6IGAnLiAkdGFibGUgLiAnYCAtIHByb2Nlc3Npb
mcgJyAuICRyb3dzQ291bnQgLiAnIHJvd3MgKCBSb3dzICcgLiAkcm93c19zdGFydCAuICctJyAuICggJHJv
d3Nfc3RhcnQgKyAkcm93c0NvdW50IC0gMSApIC4gJyBvZiAnIC4gJHRvdGFsX3Jvd3MgLiAnICknICk7CQo
JCQkJfQoJCQkJCgkJCQkkcm93c19zdGFydCArPSBzZWxmOjpNQVhfUk9XU19QRVJfU0VMRUNUOyAvLyBOZX
h0IGxvb3Agd2Ugd2lsbCBiZWdpbiBhdCB0aGlzIG9mZnNldC4KCQkJCWlmICggKCAwID09ICRyb3dzQ291b
nQgKSB8fCAoICRyb3dzQ291bnQgPCBzZWxmOjpNQVhfUk9XU19QRVJfU0VMRUNUICkgKSB7CgkJCQkJJHJv
d3NfcmVtYWluID0gZmFsc2U7CgkJCQl9CgkJCQkKCQkJCWZvcmVhY2goICRyb3dzUmVzdWx0IGFzICRyb3c
gKSB7CgkJCQkJJG5lZWRzX3VwZGF0ZSA9IGZhbHNlOwoJCQkJCSRzcWxfdXBkYXRlID0gYXJyYXkoKTsKCQ
kJCQkKCQkJCQlmb3JlYWNoKCAkcm93IGFzICRjb2x1bW4gPT4gJHZhbHVlICkgewoJCQkJCQlpZiAoICRjb
2x1bW4gIT0gJHByaW1hcnlfa2V5ICkgewoJCQkJCQkJaWYgKCBmYWxzZSAhPT0gKCAkZWRpdGVkX2RhdGEg
PSAkdGhpcy0+cmVwbGFjZV9tYXliZV9zZXJpYWxpemVkKCAkdmFsdWUsICRvbGRzLCAkbmV3cyApICkgKSB
7IC8vIERhdGEgY2hhbmdlZC4KCQkJCQkJCQkkbmVlZHNfdXBkYXRlID0gdHJ1ZTsKCQkJCQkJCQkkc3FsX3
VwZGF0ZVtdID0gJGNvbHVtbiAuICI9ICciIC4gYmFja3VwYnVkZHlfY29yZTo6ZGJFc2NhcGUoICRlZGl0Z
WRfZGF0YSApIC4gIiciOwoJCQkJCQkJfQoJCQkJCQl9IGVsc2UgewoJCQkJCQkJJHByaW1hcnlfa2V5X3Zh
bHVlID0gJHZhbHVlOwoJCQkJCQl9CgkJCQkJfQoJCQkJCQoJCQkJCWlmICggJG5lZWRzX3VwZGF0ZSA9PT0
gdHJ1ZSApIHsKCQkJCQkJJHVwZGF0ZWQgPSB0cnVlOwoJCQkJCQkkd3BkYi0+cXVlcnkoICJVUERBVEUgYH
skdGFibGV9YCBTRVQgIiAuIGltcGxvZGUoICcsJywgJHNxbF91cGRhdGUgKSAuICIgV0hFUkUgYHskcHJpb
WFyeV9rZXl9YCA9ICd7JHByaW1hcnlfa2V5X3ZhbHVlfScgTElNSVQgMSIgKTsKCQkJCQl9CgkJCQl9CgkJ
CQl1bnNldCggJHJvd3NSZXN1bHQgKTsKCQkJCQoJCQkJLy8gU2VlIGhvdyB3ZSBhcmUgZG9pbmcgb24gdGl
tZS4gVHJpZ2dlciBjaHVua2luZyBpZiBuZWVkZWQuCgkJCQlpZiAoICggKCBtaWNyb3RpbWUoIHRydWUgKS
AtICR0aGlzLT5zdGFydFRpbWUgKSArICR0aGlzLT50aW1lV2lnZ2xlUm9vbSApID49ICR0aGlzLT5tYXhFe
GVjdXRpb25UaW1lICkgewoJCQkJCXJldHVybiBhcnJheSggJHJvd3Nfc3RhcnQgKTsKCQkJCX0KCQkJfQoJ
CQkKCQkJaWYgKCAkdXBkYXRlZCA9PT0gdHJ1ZSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd
kZXRhaWxzJywgJ1VwZGF0ZWQgc2VyaWFsaXplZCBkYXRhIGluIHRhYmxlIGAnIC4gJHRhYmxlIC4gJ2AuJy
ApOwoJCQl9IGVsc2UgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTm90aGluZ
yBmb3VuZCB0byB1cGRhdGUgaW4gdGFibGUgYCcgLiAkdGFibGUgLiAnYC4nICk7CgkJCX0KCQkJcmV0dXJu
IHRydWU7CgkJfSAvLyBFbmQgc2VyaWFsaXplZCg
pLgoJCQoJCQoJCS8qKgoJCSAqCXJlcGxhY2VfbWF5YmVfc2VyaWFsaXplZCgpCgkJICoJCgkJICoJUmVwbG
FjZXMgcG9zc2libHkgc2VyaWFsaXplZCAob3Igbm9uLXNlcmlhbGl6ZWQpIHRleHQgaWYgYSBjaGFuZ2Uga
XMgbmVlZGVkLiBSZXR1cm5zIGZhbHNlIGlmIHRoZXJlIHdhcyBubyBjaGFuZ2UuCgkJICogIE5vdGU6IEFz
IG9mIEJCIHYzLjIueCBzdXBwb3J0cyBkb3VibGUgc2VyaWFsaXplZCBkYXRhLgoJCSAqCQoJCSAqCUBwYXJ
hbQkJc3RyaW5nCQkkdGFibGUJCVRleHQgKHBvc3NpYmx5IHNlcmlhbGl6ZWQpIHRvIHVwZGF0ZS4KCQkgKg
lAcGFyYW0JCW1peGVkCQkkb2xkcwkJVGV4dCB0byBzZWFyY2ggZm9yIHRvIHJlcGxhY2UuIE1heSBiZSBhb
iBhcnJheSBvZiBzdHJpbmdzIHRvIHNlYXJjaCBmb3IuCgkJICoJQHBhcmFtCQltaXhlZAkJJG5ld3MJCU5l
dyB2YWx1ZShzKSB0byBiZSByZXBsYWNlZCB3aXRoLiBNYXkgYmUgYSBzdHJpbmcgb3IgYXJyYXkuIElmIGF
ycmF5IHRoZXJlIG11c3QgYmUgdGhlIHNhbWUgbnVtYmVyIG9mIHZhbHVlcyBhcyAkb2xkcy4KCQkgKglAcm
V0dXJuCQltaXhlZAkJCQkJUmV0dXJucyBtb2RpZmllZCBzdHJpbmcgZGF0YSBpZiBzZXJpYWxpemVkIGRhd
GEgd2FzIHJlcGxhY2VkLiBGYWxzZSBpZiBubyBjaGFuZ2Ugd2FzIG1hZGUuCgkJICoKCQkgKi8KCQlmdW5j
dGlvbiByZXBsYWNlX21heWJlX3NlcmlhbGl6ZWQoICRkYXRhLCAkb2xkcywgJG5ld3MgKSB7CgkJCWlmICg
gIWlzX2FycmF5KCAkb2xkcyApICkgewoJCQkJJG9sZHMgPSBhcnJheSggJG9sZHMgKTsKCQkJfQoJCQlpZi
AoICFpc19hcnJheSggJG5ld3MgKSApIHsKCQkJCSRuZXdzID0gYXJyYXkoICRuZXdzICk7CgkJCX0KCQkJC
gkJCSR0eXBlID0gJyc7CgkJCSR1bnNlcmlhbGl6ZWQgPSBmYWxzZTsgLy8gZmlyc3QgYXNzdW1lIG5vdCBz
ZXJpYWxpemVkIGRhdGEKCQkJaWYgKCBpc19zZXJpYWxpemVkKCAkZGF0YSApICkgeyAvLyBjaGVjayBpZiB
0aGlzIGlzIHNlcmlhbGl6ZWQgZGF0YQoJCQkJJHVuc2VyaWFsaXplZCA9IEB1bnNlcmlhbGl6ZSggJGRhdG
EgKTsgLy8gdW5zZXJpYWxpc2UgLSBpZiBmYWxzZSBpcyByZXR1cm5lZCB3ZSB3b24ndCB0cnkgdG8gcHJvY
2VzcyBpdCBhcyBzZXJpYWxpc2VkLgoJCQl9CgkJCWlmICggJHVuc2VyaWFsaXplZCAhPT0gZmFsc2UgKSB7
IC8vIFNlcmlhbGl6ZWQgZGF0YS4KCQkJCSR0eXBlID0gJ3NlcmlhbGl6ZWQnOwoJCQkJCgkJCQkkZG91Ymx
lX3NlcmlhbGl6ZWQgPSBmYWxzZTsKCQkJCWlmICggaXNfc2VyaWFsaXplZCggJHVuc2VyaWFsaXplZCApIC
kgeyAvLyBkb3VibGUtc2VyaWFsaXplZCBkYXRhIChvcHBvc2l0ZSBvZiBhIGRvdWJsZSByYWluYm93KS4gU
29tZSBwbHVnaW5zIHNlZW0gdG8gZG91YmxlLXNlcmlhbGl6ZSBmb3Igc29tZSB1bmtub3duIHdhY2t5IHJl
YXNvbi4uLgoJCQkJCSR1bnNlcmlhbGl6ZWQgPSBAdW5zZXJpYWxpemUoICR1bnNlcmlhbGl6ZWQgKTsgLy8
gdW5zZXJpYWxpc2UgLSBpZiBmYWxzZSBpcyByZXR1cm5lZCB3ZSB3b24ndCB0cnkgdG8gcHJvY2VzcyBpdC
BhcyBzZXJpYWxpc2VkLgoJCQkJCSRkb3VibGVfc2VyaWFsaXplZCA9IHRydWU7CgkJCQl9CgkJCQkKCQkJC
SRpID0gMDsKCQkJCWZvcmVhY2ggKCAkb2xkcyBhcyAkb2xkICkgewoJCQkJCSR0aGlzLT5yZWN1cnNpdmVf
YXJyYXlfcmVwbGFjZSggJG9sZCwgJG5ld3NbJGldLCAkdW5zZXJpYWxpemVkICk7CgkJCQkJJGkrKzsKCQk
JCX0KCQkJCQoJCQkJJGVkaXRlZF9kYXRhID0gc2VyaWFsaXplKCAkdW5zZXJpYWxpemVkICk7CgkJCQlpZi
AoIHRydWUgPT09ICRkb3VibGVfc2VyaWFsaXplZCApIHsKCQkJCQkkZWRpdGVkX2RhdGEgPSBzZXJpYWxpe
mUoICRlZGl0ZWRfZGF0YSApOwoJCQkJfQoJCQkJCgkJCX0JZWxzZSB7IC8vIE5vbi1zZXJpYWxpemVkIGRh
dGEuCgkJCQkkdHlwZSA9ICd0ZXh0JzsKCQkJCSRlZGl0ZWRfZGF0YSA9ICRkYXRhOwoJCQkJJGkgPSAwOwo
JCQkJZm9yZWFjaCAoICRvbGRzIGFzICRvbGQgKSB7CgkJCQkJJGVkaXRlZF9kYXRhID1zdHJfaXJlcGxhY2
UoICRvbGQsICRuZXdzWyRpXSwgJGVkaXRlZF9kYXRhICk7CgkJCQkJJGkrKzsKCQkJCX0KCQkJfQoJCQkKC
QkJLy8gUmV0dXJuIHRoZSByZXN1bHRzLgoJCQlpZiAoICRkYXRhICE9ICRlZGl0ZWRfZGF0YSApIHsKCQkJ
CXJldHVybiAkZWRpdGVkX2RhdGE7CgkJCX0gZWxzZSB7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9IC8
vIEVuZCByZXBsYWNlX21heWJlX3NlcmlhbGl6ZWQoKS4KCQkKCQkKCQkvKioKCQkgKglicnV0ZWZvcmNlX3
RhYmxlKCkKCQkgKgoJCSAqCSEhISBIQU5ETEVTIFNFUklBTElaRUQgREFUQSAhISEhCgkJICoJUmVwbGFjZ
XMgdGV4dCwgc2VyaWFsaXplZCBvciBub3QsIHdpdGhpbiB0aGUgZW50aXJlIHRhYmxlLiBCcnV0ZWZvcmNl
IG1ldGhvZCBpdGVyYXRlcyB0aHJvdWdoIGV2ZXJ5IHJvdyAmIGNvbHVtbiBpbiB0aGUgZW50aXJlIHRhYmx
lIGFuZCByZXBsYWNlcyBpZiBuZWVkZWQuCgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJCSR0YWJsZQkJVG
V4dCAocG9zc2libHkgc2VyaWFsaXplZCkgdG8gdXBkYXRlLgoJCSAqCUBwYXJhbQkJbWl4ZWQJCSRvbGRzC
QlUZXh0IHRvIHNlYXJjaCBmb3IgdG8gcmVwbGFjZS4gTWF5IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MgdG8g
c2VhcmNoIGZvci4KCQkgKglAcGFyYW0JCW1peGVkCQkkbmV3cwkJTmV3IHZhbHVlKHMpIHRvIGJlIHJlcGx
hY2VkIHdpdGguIE1heSBiZSBhIHN0cmluZyBvciBhcnJheS4gSWYgYXJyYXkgdGhlcmUgbXVzdCBiZSB0aG
Ugc2FtZSBudW1iZXIgb2YgdmFsdWVzIGFzICRvbGRzLgoJCSAqCUByZXR1cm4JCWludAkJCQkJCU51bWJlc
iBvZiByb3dzIGNoYW5nZWQuCgkJICoKCQkgKi8KCQlmdW5jdGlvbiBicnV0ZWZvcmNlX3RhYmxlKCAkdGFi
bGUsICRvbGRzLCAkbmV3cywgJHJvd3Nfc3RhcnQgPSAnJyApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR
1cyggJ21lc3NhZ2UnLCAnU3RhcnRpbmcgYnJ1dGUgZm9yY2UgZGF0YSBtaWdyYXRpb24gZm9yIHRhYmxlIG
AnIC4gJHRhYmxlIC4gJ2AuLi4nICk7CgkJCWlmICggIWlzX2FycmF5KCAkb2xkcyApICkgewoJCQkJJG9sZ
HMgPSBhcnJheSggJG9sZHMgKTsKCQkJfQoJCQlpZiAoICFpc19hcnJheSggJG5ld3MgKSApIHsKCQkJCSRu
ZXdzID0gYXJyYXkoICRuZXdzICk7CgkJCX0KCQkJCgkJCSRjb3VudF9pdGVtc19jaGVja2VkID0gMDsKCQk
JJGNvdW50X2l0ZW1zX2NoYW5nZWQgPSAwOwoJCQkKCQkJZ2xvYmFsICR3cGRiOwoJCQkKCQkJLy8gR2V0IH
RoZSB0b3RhbCByb3cgY291bnQgZm9yIHRoaXMgdGFibGUKCQkJJHRvdGFsX3Jvd3MgPSAwOwoJCQkkdGFib
GVzX3N0YXR1cyA9ICR3cGRiLT5nZXRfcmVzdWx0cyggIlNIT1cgVEFCTEUgU1RBVFVTIiwgQVJSQVlfQSAp
OwoJCQkKCQkJZm9yZWFjaCAoICR0YWJsZXNfc3RhdHVzIGFzICR0YWJsZV9zdGF0dXMgKSB7CgkJCQoJCQk
JaWYgKCAkdGFibGUgPT09ICR0YWJsZV9zdGF0dXNbICdOYW1lJyBdICkgewoJCQkJCgkJCQkJLy8gRml4IH
VwIHJvdyBjb3VudCBhbmQgYXZlcmFnZSByb3cgbGVuZ3RoIGZvciBJbm5vREIgZW5naW5lIHdoaWNoIHJld
HVybnMgaW5hY2N1cmF0ZQoJCQkJCS8vIChhbmQgY2hhbmdpbmcpIHZhbHVlcyBmb3IgdGhlc2UKCQkJCQlp
ZiAoICdJbm5vREInID09PSAkdGFibGVfc3RhdHVzWyAnRW5naW5lJyBdICkgewoJCQkJCQlpZiAoIGZhbHN
lICE9PSAoICRjb3VudCA9ICR3cGRiLT5nZXRfdmFyKCAiU0VMRUNUIENPVU5UKDEpIEZST00gYHskdGFibG
Vfc3RhdHVzWydOYW1lJ119YCIgKSApICkgewoJCQkJCQkJJHRhYmxlX3N0YXR1c1sgJ1Jvd3MnIF0gPSAkY
291bnQ7CgkJCQkJCX0KCQkJCQl9CgkJCQoJCQkJCSR0b3RhbF9yb3dzID0gJHRhYmxlX3N0YXR1c1sgJ1Jv
d3MnIF07CgkJCQkKCQkJCX0KCQkJCgkJCX0KCQkJCgkJCSRmaWVsZHMgPSAkd3BkYi0+Z2V0X3Jlc3VsdHM
oICJERVNDUklCRSBgeyR0YWJsZX1gIiwgQVJSQVlfQSApOwoJCQkkY29sdW1uX25hbWUgPSBhcnJheSgpOw
oJCQkkdGFibGVfaW5kZXggPSBhcnJheSgpOwoJCQkkaSA9IDA7CgkJCQoJCQkkZm91bmRfcHJpbWFyeV9rZ
XkgPSBmYWxzZTsKCQkJCgkJCWZvcmVhY2goICRmaWVsZHMgYXMgJGZpZWxkICkgewoJCQkJJGNvbHVtbl9u
YW1lWyRpKytdID0gJGZpZWxkWydGaWVsZCddOwoJCQkJaWYgKCAkZmllbGRbJ0tleSddID09ICdQUkknICk
gewoJCQkJCSR0YWJsZV9pbmRleFskaV0gPSB0cnVlOwoJCQkJCSRmb3VuZF9wcmltYXJ5X2tleSA9IHRydW
U7CgkJCQl9CgkJCX0KCQkJCgkJCS8vIFNraXBzIG1pZ3JhdGlvbiBvZiB0aGlzIHRhYmxlIGlmIHRoZXJlI
GlzIG5vIHByaW1hcnkga2V5LiBNb2RpZnlpbmcgb24gYW55IG90aGVyIGtleSBpcyBub3Qgc2FmZS4gbXlz
cWwgYXV0b21hdGljYWxseSByZXR1cm5zIGEgUFJJTUFSWSBpZiBhIFVOSVFVRSBub24tcHJpbWFyeSBpcyB
mb3VuZCBhY2NvcmRpbmcgdG8gaHR0cDovL2Rldi5teXNxbC5jb20vZG9jL3JlZm1hbi81LjEvZW4vY3JlYX
RlLXRhYmxlLmh0bWwgIEBzaW5jZSAyLjIuMzIuCgkJCWlmICggJGZvdW5kX3ByaW1hcnlfa2V5ID09PSBmY
WxzZSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ0Vycm9yICM5MDI5Yjog
V2FybmluZyBvbmx5ISBUYWJsZSBgJyAuICR0YWJsZSAuICdgIGRvZXMgbm90IGNvbnRhaW4gYSBwcmltYXJ
5IGtleTsgQmFja3VwQnVkZHkgY2Fubm90IHNhZmVseSBtb2RpZnkgdGhlIGNvbnRlbnRzIG9mIHRoaXMgdG
FibGUuIFNraXBwaW5nIG1pZ3JhdGlvbiBvZiB0aGlzIHRhYmxlLiAoYnJ1dGVmb3JjZV90YWJsZSgpKS4nI
Ck7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCQkKCQkJJHJvd19sb29wID0gMDsKCgkJCSRyb3dzX3JlbWFp
biA9IHRydWU7IC8vIE1vcmUgcm93cyByZW1haW5pbmcgLyBha2EgYW5vdGhlciBxdWVyeSBmb3IgbW9yZSB
yb3dzIG5lZWRlZC4KCQkJaWYgKCAnJyA9PSAkcm93c19zdGFydCApIHsKCQkJCSRyb3dzX3N0YXJ0ID0gMD
sKCQkJfQoKCQkJd2hpbGUgKCB0cnVlID09PSAkcm93c19yZW1haW4gKSB7IC8vIEtlZXAgbG9vcGluZyB0a
HJvdWdoIHJvd3MgdW50aWwgbm9uZSByZW1haW4uIExvb3BpbmcgdGhyb3VnaCBsaWtlIHRoaXMgdG8gbGlt
aXQgbWVtb3J5IHVzYWdlIGFzIHdwZGIgY2xhc3NlcyBsb2FkcyBhbGwgcmVzdWx0cyBpbnRvIG1lbW9yeS4
KCgkJCQkkZGF0YSA9ICR3cGRiLT5nZXRfcmVzdWx0cyggIlNFTEVDVCAqIEZST00gYHskdGFibGV9YCBMSU
1JVCB7JHJvd3Nfc3RhcnR9LCIgLiBzZWxmOjpNQVhfUk9XU19QRVJfU0VMRUNULCBBUlJBWV9BICk7CgkJC
QlpZiAoIGZhbHNlID09PSAkZGF0YSApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3In
LCAnRVJST1IgIzQ0NTQ1MzQzIC4uLiBTUUwgRVJST1I6ICcgLiAkd3BkYi0+bGFzdF9lcnJvciApOwoJCQk
JfQoJCQkJCgkJCQkvLyBQcm92aWRlIGFuIHVwZGF0ZSBvbiBwcm9ncmVzcwoJCQkJJHJvd3NDb3VudCA9IG
NvdW50KCAkZGF0YSApOwoJCQkJaWYgKCAwID09PSAkcm93c0NvdW50ICkgewoJCQkJCXBiX2JhY2t1cGJ1Z
GR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1RhYmxlOiBgJy4gJHRhYmxlIC4gJ2AgLSBwcm9jZXNzaW5nICcg
LiAkcm93c0NvdW50IC4gJyByb3dzICggb2YgJyAuICR0b3RhbF9yb3dzIC4gJyApJyApOwkJCQkKCQkJCX0
gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnVGFibGU6IGAnLiAkdG
FibGUgLiAnYCAtIHByb2Nlc3NpbmcgJyAuICRyb3dzQ291bnQgLiAnIHJvd3MgKCBSb3dzICcgLiAkcm93c
19zdGFydCAuICctJyAuICggJHJvd3Nfc3RhcnQgKyAkcm93c0NvdW50IC0gMSApIC4gJyBvZiAnIC4gJHRv
dGFsX3Jvd3MgLiAnICknICk7CQoJCQkJfQoJCQkJCgkJCQkkcm93c19zdGFydCArPSBzZWxmOjpNQVhfUk9
XU19QRVJfU0VMRUNUOyAvLyBOZXh0IGxvb3Agd2Ugd2lsbCBiZWdpbiBhdCB0aGlzIG9mZnNldC4KCQkJCW
lmICggKCAwID09ICRyb3dzQ291bnQgKSB8fCAoICRyb3dzQ291bnQgPCBzZWxmOjpNQVhfUk9XU19QRVJfU
0VMRUNUICkgKSB7CgkJCQkJJHJvd3NfcmVtYWluID0gZmFsc2U7CgkJCQl9CgkJCgkJCQlmb3JlYWNoKCAk
ZGF0YSBhcyAkcm93ICkgewoJCQkJCSRuZWVkX3RvX3VwZGF0ZSA9IGZhbHNlOwoJCQkJCSRVUERBVEVfU1F
MID0gJ1VQREFURSBgJyAuICR0YWJsZSAuICdgIFNFVCAnOwoJCQkJCSRXSEVSRV9TUUwgPSAnIFdIRVJFIC
c7CgkJCQkKCQkJCQkkaiA9IDA7CgkJCQkJZm9yZWFjaCAoICRjb2x1bW5fbmFtZSBhcyAkY3VycmVudF9jb
2x1bW4gKSB7CgkJCQkJCSRqKys7CgkJCQkJCSRjb3VudF9pdGVtc19jaGVja2VkKys7CgkJCQkJCgkJCQkJ
CSRkYXRhX3RvX2ZpeCA9ICRyb3dbJGN1cnJlbnRfY29sdW1uXTsKCQkJCQkJaWYgKCBmYWxzZSAhPT0gKCA
kZWRpdGVkX2RhdGEgPSAkdGhpcy0+cmVwbGFjZV9tYXliZV9zZXJpYWxpemVkKCAkZGF0YV90b19maXgsIC
RvbGRzLCAkbmV3cyApICkgKSB7IC8vIG5vIGNoYW5nZSBuZWVkZWQKCQkJCQkJCSRjb3VudF9pdGVtc19ja
GFuZ2VkKys7CgkJCQkJCQlpZiAoICRuZWVkX3RvX3VwZGF0ZSAhPSBmYWxzZSApIHsgLy8gSWYgdGhpcyBp
c24ndCBvdXIgZmlyc3QgdGltZSBoZXJlLCB3ZSBuZWVkIHRvIGFkZCBhIGNvbW1hLgoJCQkJCQkJCSRVUER
BVEVfU1FMID0gJFVQREFURV9TUUwgLiAnLCc7CgkJCQkJCQl9CgkJCQkJCQkkVVBEQVRFX1NRTCA9ICRVUE
RBVEVfU1FMIC4gJyAnIC4gJGN1cnJlbnRfY29sdW1uIC4gJyA9ICInIC4gYmFja3VwYnVkZHlfY29yZTo6Z
GJFc2NhcGUoICRlZGl0ZWRfZGF0YSApIC4gJyInOwoJCQkJCQkJJG5lZWRfdG9fdXBkYXRlID0gdHJ1ZTsg
Ly8gT25seSBzZXQgaWYgd2UgbmVlZCB0byB1cGRhdGUgLSBhdm9pZHMgd2FzdGVkIFVQREFURSBzdGF0ZW1
lbnRzLgoJCQkJCQl9CgkJCQkJCgkJCQkJCWlmICggaXNzZXQoICR0YWJsZV9pbmRleFskal0gKSApIHsKCQ
kJCQkJCSRXSEVSRV9TUUwgPSAkV0hFUkVfU1FMIC4gJ2AnIC4gJGN1cnJlbnRfY29sdW1uIC4gJ2AgPSAiJ
yAuIGJhY2t1cGJ1ZGR5X2NvcmU6OmRiRXNjYXBlKCAkcm93WyRjdXJyZW50X2NvbHVtbl0gKSAuICciIEFO
RCAnOwoJCQkJCQl9CgkJCQkJfQoJCQkJCgkJCQkJaWYgKCAkbmVlZF90b191cGRhdGUgKSB7CgkJCQkJCSR
XSEVSRV9TUUwgPSBzdWJzdHIoICRXSEVSRV9TUUwgLCAwLCAtNCApOyAvLyBTdHJpcCBvZmYgdGhlIGV4Y2
VzcyBBTkQgLSB0aGUgZWFzaWVzdCB3YXkgdG8gY29kZSB0aGlzIHdpdGhvdXQgZXh0cmEgZmxhZ3MsIGV0Y
y4KCQkJCQkJJFVQREFURV9TUUwgPSAkVVBEQVRFX1NRTCAuICRXSEVSRV9TUUw7CgkJCQkJCSRyZXN1bHQg
PSAkd3BkYi0+cXVlcnkoICRVUERBVEVfU1FMICk7CgkJCQkJCWlmICggZmFsc2UgPT09ICRyZXN1bHQgKSB
7CgkJCQkJCQlpZiAoICEgZW1wdHkoICR3cGRiLT
51c2VfbXlzcWxpICkgKSB7CgkJCQkJCQkJJG15c3FsX2Vycm9yID0gbXlzcWxpX2Vycm9yKCAkd3BkYi0+Z
GJoICk7CgkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCSRteXNxbF9lcnJvciA9IG15c3FsX2Vycm9yKCAkd3Bk
Yi0+ZGJoICk7CgkJCQkJCQl9CgkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRVJ
ST1I6IG15c3FsIGVycm9yIHVwZGF0aW5nIGRiOiAnIC4gJG15c3FsX2Vycm9yIC4gJy4gU1FMIFF1ZXJ5Oi
AnIC4gaHRtbGVudGl0aWVzKCAkVVBEQVRFX1NRTCApICk7CgkJCQkJCX0gCgkJCQkJfQoJCQkJCQoJCQkJf
QoKCQkJCXVuc2V0KCAkZGF0YSApOwoKCQkJCS8vIFNlZSBob3cgd2UgYXJlIGRvaW5nIG9uIHRpbWUuIFRy
aWdnZXIgY2h1bmtpbmcgaWYgbmVlZGVkLgoJCQkJaWYgKCAoICggbWljcm90aW1lKCB0cnVlICkgLSAkdGh
pcy0+c3RhcnRUaW1lICkgKyAkdGhpcy0+dGltZVdpZ2dsZVJvb20gKSA+PSAkdGhpcy0+bWF4RXhlY3V0aW
9uVGltZSApIHsKCQkJCQlyZXR1cm4gYXJyYXkoICRyb3dzX3N0YXJ0ICk7CgkJCQl9CgkJCX0KCQkJCgkJC
XBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ0JydXRlIGZvcmNlIGRhdGEgbWlncmF0aW9u
IGZvciB0YWJsZSBgJyAuICR0YWJsZSAuICdgIGNvbXBsZXRlLiBDaGVja2VkICcgLiAkY291bnRfaXRlbXN
fY2hlY2tlZCAuICcgaXRlbXM7ICcgLiAkY291bnRfaXRlbXNfY2hhbmdlZCAuICcgY2hhbmdlZC4nICk7Cg
kJCQoJCQlyZXR1cm4gdHJ1ZTsKCQl9IC8vIEVuZCBicnV0ZWZvcmNlX3RhYmxlKCkuCgkJCgkJCgkJLyoqC
gkJICoJcmVjdXJzaXZlX2FycmF5X3JlcGxhY2UoKQoJCSAqCQoJCSAqCVJlY3Vyc2l2ZWx5IHJlcGxhY2Ug
dGV4dCBpbiBhbiBhcnJheSwgc3RlcHBpbmcgdGhyb3VnaCBhcnJheXMvb2JqZWN0cyB3aXRoaW4gYXJyYXl
zL29iamVjdHMgYXMgbmVlZGVkLgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCQkkZmluZAkJVGV4dCB0by
BmaW5kLgoJCSAqCUBwYXJhbQkJc3RyaW5nCQkkcmVwbGFjZQlUZXh0IHRvIHJlcGxhY2UgZm91bmQgdGV4d
CB3aXRoLgoJCSAqCUBwYXJhbQkJcmVmZXJlbmNlCSYkZGF0YQkJUGFzcyB0aGUgdmFyaWFibGUgdG8gY2hh
bmdlIHRoZSBkYXRhIHdpdGhpbi4KCQkgKglAcmV0dXJuCQlib29sZWFuCQkJCQlBbHdheXMgdHJ1ZSBjdXJ
yZW50bHkuCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gcmVjdXJzaXZlX2FycmF5X3JlcGxhY2UoIC
RmaW5kLCAkcmVwbGFjZSwgJiRkYXRhICkgewoJCQlpZiAoIGlzX2FycmF5KCAkZGF0YSApICkgewoJCQkJZ
m9yZWFjaCAoICRkYXRhIGFzICRrZXkgPT4gJHZhbHVlICkgewoJCQkJCS8vIEFSUkFZUwoJCQkJCWlmICgg
aXNfYXJyYXkoICR2YWx1ZSApICkgewoJCQkJCQkkdGhpcy0+cmVjdXJzaXZlX2FycmF5X3JlcGxhY2UoICR
maW5kLCAkcmVwbGFjZSwgJGRhdGFbJGtleV0gKTsKCQkJCQkJCgkJCQkJLy8gU1RSSU5HUwoJCQkJCX0gZW
xzZWlmICggaXNfc3RyaW5nKCAkdmFsdWUgKSApIHsKCQkJCQkJJGRhdGFbJGtleV0gPSBzdHJfcmVwbGFjZ
SggJGZpbmQsICRyZXBsYWNlLCAkdmFsdWUgKTsKCQkJCQkKCQkJCQkvLyBPQkpFQ1RTCgkJCQkJfSBlbHNl
aWYgKCBpc19vYmplY3QoICR2YWx1ZSApICkgewoJCQkJCQkvL2Vycm9yX2xvZyggdmFyX2V4cG9ydCggJGR
hdGFbJGtleV0sIHRydWUgKSApOwoJCQkJCQkkdGhpcy0+cmVjdXJzaXZlX29iamVjdF9yZXBsYWNlKCAkZm
luZCwgJHJlcGxhY2UsICRkYXRhWyRrZXldICk7CgkJCQkJCS8vZXJyb3JfbG9nKCB2YXJfZXhwb3J0KCAkZ
GF0YVska2V5XSwgdHJ1ZSApICk7CgkJCQkJfQoJCQkJfQoJCQl9IGVsc2VpZiAoIGlzX3N0cmluZyggJGRh
dGEgKSApIHsKCQkJCSRkYXRhID0gc3RyX3JlcGxhY2UoICRmaW5kLCAkcmVwbGFjZSwgJGRhdGEgKTsKCQk
JfSBlbHNlaWYgKCBpc19vYmplY3QoICRkYXRhICkgKSB7CgkJCQkkdGhpcy0+cmVjdXJzaXZlX29iamVjdF
9yZXBsYWNlKCAkZmluZCwgJHJlcGxhY2UsICRkYXRhICk7CgkJCX0KCQl9CgkJCgkJCgkJLyoqCgkJICoJc
mVjdXJzaXZlX29iamVjdF9yZXBsYWNlKCkKCQkgKgkKCQkgKglSZWN1cnNpdmVseSByZXBsYWNlIHRleHQg
aW4gYW4gb2JqZWN0LCBzdGVwcGluZyB0aHJvdWdoIG9iamVjdHMvYXJyYXlzIHdpdGhpbiBvYmplY3RzL2F
ycmF5cyBhcyBuZWVkZWQuCgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJCSRmaW5kCQlUZXh0IHRvIGZpbm
QuCgkJICoJQHBhcmFtCQlzdHJpbmcJCSRyZXBsYWNlCVRleHQgdG8gcmVwbGFjZSBmb3VuZCB0ZXh0IHdpd
GguCgkJICoJQHBhcmFtCQlyZWZlcmVuY2UJJiRkYXRhCQlQYXNzIHRoZSB2YXJpYWJsZSB0byBjaGFuZ2Ug
dGhlIGRhdGEgd2l0aGluLgoJCSAqCUByZXR1cm4JCWJvb2xlYW4JCQkJCUFsd2F5cyB0cnVlIGN1cnJlbnR
seS4KCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiByZWN1cnNpdmVfb2JqZWN0X3JlcGxhY2UoICRmaW
5kLCAkcmVwbGFjZSwgJiRkYXRhICkgewoJCQlpZiAoIGlzX29iamVjdCggJGRhdGEgKSApIHsKCQkJCSR2Y
XJzID0gZ2V0X29iamVjdF92YXJzKCAkZGF0YSApOwoJCQkJZm9yZWFjaCggJHZhcnMgYXMgJGtleSA9PiAk
dmFyICkgewoJCQkJCS8vIEFSUkFZUwoJCQkJCWlmICggaXNfYXJyYXkoICRkYXRhLT57JGtleX0gKSApIHs
KCQkJCQkJJHRoaXMtPnJlY3Vyc2l2ZV9hcnJheV9yZXBsYWNlKCAkZmluZCwgJHJlcGxhY2UsICRkYXRhLT
57JGtleX0gKTsKCQkJCQkvLyBPQkpFQ1RTCgkJCQkJfSBlbHNlaWYgKCBpc19vYmplY3QoICRkYXRhLT57J
GtleX0gKSApIHsKCQkJCQkJJHRoaXMtPnJlY3Vyc2l2ZV9vYmplY3RfcmVwbGFjZSggJGZpbmQsICRyZXBs
YWNlLCAkZGF0YS0+eyRrZXl9ICk7CgkJCQkJLy8gU1RSSU5HUwoJCQkJCX0gZWxzZWlmICggaXNfc3RyaW5
nKCAkZGF0YS0+eyRrZXl9ICkgKSB7CgkJCQkJCSRkYXRhLT57JGtleX0gPSBzdHJfcmVwbGFjZSggJGZpbm
QsICRyZXBsYWNlLCAkZGF0YS0+eyRrZXl9ICk7CgkJCQkJfQoJCQkJfQoJCQl9IGVsc2VpZiAoIGlzX3N0c
mluZyggJGRhdGEgKSApIHsKCQkJCSRkYXRhID0gc3RyX3JlcGxhY2UoICRmaW5kLCAkcmVwbGFjZSwgJGRh
dGEgKTsKCQkJfSBlbHNlaWYgKCBpc19hcnJheSggJGRhdGEgKSApIHsKCQkJCSR0aGlzLT5yZWN1cnNpdmV
fYXJyYXlfcmVwbGFjZSggJGZpbmQsICRyZXBsYWNlLCAkZGF0YSApOwoJCQl9CgkJfSAvLyBFbmQgcmVjdX
JzaXZlX29iamVjdF9yZXBsYWNlKCkuCgkJCgkJCgkJLyoqCgkJICogQ2hlY2sgdmFsdWUgdG8gZmluZCBpZ
iBpdCB3YXMgc2VyaWFsaXplZC4KCQkgKgoJCSAqIElmICRkYXRhIGlzIG5vdCBhbiBzdHJpbmcsIHRoZW4g
cmV0dXJuZWQgdmFsdWUgd2lsbCBhbHdheXMgYmUgZmFsc2UuCgkJICogU2VyaWFsaXplZCBkYXRhIGlzIGF
sd2F5cyBhIHN0cmluZy4KCQkgKgoJCSAqIENvdXJ0ZXN5IFdvcmRQcmVzczsgc2luY2UgV29yZFByZXNzID
IuMC41LgoJCSAqCgkJICogQHBhcmFtIG1peGVkICRkYXRhIFZhbHVlIHRvIGNoZWNrIHRvIHNlZSBpZiB3Y
XMgc2VyaWFsaXplZC4KCQkgKiBAcmV0dXJuIGJvb2wgRmFsc2UgaWYgbm90IHNlcmlhbGl6ZWQgYW5kIHRy
dWUgaWYgaXQgd2FzLgoJCSAqLwoJCWZ1bmN0aW9uIGlzX3NlcmlhbGl6ZWQoICRkYXRhICkgewoJCQkvLyB
pZiBpdCBpc24ndCBhIHN0cmluZywgaXQgaXNuJ3Qgc2VyaWFsaXplZAoJCQlpZiAoICEgaXNfc3RyaW5nKC
AkZGF0YSApICkKCQkJCXJldHVybiBmYWxzZTsKCQkJJGRhdGEgPSB0cmltKCAkZGF0YSApOwoJCSAJaWYgK
CAnTjsnID09ICRkYXRhICkKCQkJCXJldHVybiB0cnVlOwoJCQkkbGVuZ3RoID0gc3RybGVuKCAkZGF0YSAp
OwoJCQlpZiAoICRsZW5ndGggPCA0ICkKCQkJCXJldHVybiBmYWxzZTsKCQkJaWYgKCAnOicgIT09ICRkYXR
hWzFdICkKCQkJCXJldHVybiBmYWxzZTsKCQkJJGxhc3RjID0gJGRhdGFbJGxlbmd0aC0xXTsKCQkJaWYgKC
AnOycgIT09ICRsYXN0YyAmJiAnfScgIT09ICRsYXN0YyApCgkJCQlyZXR1cm4gZmFsc2U7CgkJCSR0b2tlb
iA9ICRkYXRhWzBdOwoJCQlzd2l0Y2ggKCAkdG9rZW4gKSB7CgkJCQljYXNlICdzJyA6CgkJCQkJaWYgKCAn
IicgIT09ICRkYXRhWyRsZW5ndGgtMl0gKQoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQljYXNlICdhJyA6Cgk
JCQljYXNlICdPJyA6CgkJCQkJcmV0dXJuIChib29sKSBwcmVnX21hdGNoKCAiL157JHRva2VufTpbMC05XS
s6L3MiLCAkZGF0YSApOwoJCQkJY2FzZSAnYicgOgoJCQkJY2FzZSAnaScgOgoJCQkJY2FzZSAnZCcgOgoJC
QkJCXJldHVybiAoYm9vbCkgcHJlZ19tYXRjaCggIi9eeyR0b2tlbn06WzAtOS5FLV0rO1wkLyIsICRkYXRh
ICk7CgkJCX0KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkKCQkKCQkvKioKCQkgKglyZW1vdmVfbWF0Y2hpbmd
fYXJyYXlfZWxlbWVudHMoKQoJCSAqCQoJCSAqCVJlbW92ZXMgaWRlbnRpY2FsIGVsZW1lbnRzIChzYW1lIG
luZGV4IGFuZCB2YWx1ZSkgZnJvbSBib3RoIGFycmF5cyB3aGVyZSB0aGV5IG1hdGNoLgoJCSAqCgkJICoJR
Xg6CgkJICoJCS8vIEJlZm9yZToKCQkgKgkJJGEgPSBhcnJheSggJ2FwcGxlJywgJ2JhbmFuYScsICdjYXJy
b3QnICk7CgkJICoJCSRiID0gYXJyYXkoICdhcHBsZScsICdiZWVmJywgJ2N1Y3VtYmVyJyApOwoJCSAqCQl
yZW1vdmVfbWF0Y2hpbmdfYXJyYXlfZWxlbWVudHMoICRhLCAkYiApOwoJCSAqCQkvLyBBZnRlcjoKCQkgKg
kJJGEgPSBhcnJheSggJ2JhbmFuYScsICdjYXJyb3QnICk7CgkJICoJCSRiID0gYXJyYXkoICdiZWVmJywgJ
2N1Y3VtYmVyJyApOwoJCSAqCQoJCSAqCUBwYXJhbQkJYXJyYXkJCSYkYQkJRmlyc3QgYXJyYXkgdG8gY29t
cGFyZSB3aXRoIHNlY29uZC4gKHJlZmVyZW5jZSkKCQkgKglAcGFyYW0JCWFycmF5CQkmJGIJCVNlY29uZCB
hcnJheSB0byBjb21wYXJlIHdpdGggZmlyc3QuIChyZWZlcmVuY2UpCgkJICoJQHJldHVybgkJbnVsbAkJCQ
lBcnJheXMgcGFzc2VkIGFyZSB1cGRhdGVkIGFzIHRoZXkgYXJlIHBhc3NlZCBieSByZWZlcmVuY2UuCgkJI
CoKCQkgKi8KCQlmdW5jdGlvbiByZW1vdmVfbWF0Y2hpbmdfYXJyYXlfZWxlbWVudHMoICYkYSwgJiRiICkg
ewoJCQkkc2l6ZW9mID0gc2l6ZW9mKCAkYSApOwoJCQlmb3IoICRpPTA7ICRpIDwgJHNpemVvZjsgJGkrKyA
pIHsKCQkJCWlmICggJGFbJGldID09ICRiWyRpXSApIHsKCQkJCQl1bnNldCggJGFbJGldICk7CgkJCQkJdW
5zZXQoICRiWyRpXSApOwoJCQkJfQoJCQl9CgkJCQoJCQkkYSA9IGFycmF5X21lcmdlKCAkYSApOyAvLyBSZ
XNldCBudW1iZXJpbmcgb2Yga2V5cy4KCQkJJGIgPSBhcnJheV9tZXJnZSggJGIgKTsgLy8gUmVzZXQgbnVt
YmVyaW5nIG9mIGtleXMuCgkJfQoJCQoJCQoJfSAvLyBlbmQgcGx1Z2luYnVkZHlfZGJyZXBsYWNlIGNsYXN
zLgp9Cj8+Cg==
###PACKDATA,FILE_END,/lib/dbreplace/dbreplace.php,importbuddy/lib/dbreplace/dbrepla
ce.php
###PACKDATA,FILE_START,/lib/dbreplace/history.txt,importbuddy/lib/dbreplace/history
.txt
MS4wLjAgLSAyMDExLTA4LTE4IC0gRHVzdGluIEJvbHRvbgoJQ3JlYXRlZCBkYnJlcGxhY2UgY2xhc3Mu
###PACKDATA,FILE_END,/lib/dbreplace/history.txt,importbuddy/lib/dbreplace/history.t
xt
###PACKDATA,FILE_START,/lib/dbreplace/index.htm,importbuddy/lib/dbreplace/index.htm
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/lib/dbreplace/index.htm,importbuddy/lib/dbreplace/index.htm
###PACKDATA,FILE_START,/lib/dbreplace/index.php,importbuddy/lib/dbreplace/index.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/lib/dbreplace/index.php,importbuddy/lib/dbreplace/index.php
###PACKDATA,FILE_START,/lib/commandbuddy/commandbuddy.php,importbuddy/lib/commandbu
ddy/commandbuddy.php
PD9waHAKLy8gVE9ETzogRXZlbnR1YWxseSBwdWxsIG91dCBhbGwgY29tbWFuZCBsaW5lIGV4ZWN1dGlvbiB
0byBydW4gdGhyb3VnaCB0aGlzIGxpYnJhcnkuCi8vCQlDdXJyZW50bHkgY29kZSBpcyBkdWNwbGljYXRlZC
BiZXR3ZWVuIHRoZSBsaWJyYXJpZXMgdGhhdCBydW4gY29tbWFuZCBsaW5lIGNvbW1hbmRzLgoKY2xhc3Mgc
GJfYmFja3VwYnVkZHlfY29tbWFuZGJ1ZGR5IHsKCQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkg
ewoJfQoJCgkvKglleGVjdXRlKCkKCSAqCQoJICoJRXhlY3V0ZSBhIGNvbW1hbmQgdmlhIHRoZSBjb21tYW5
kIGxpbmUuCgkgKglFeGFtcGxlIHVzYWdlOgoJICoJCWxpc3QoICRleGVjX291dHB1dCwgJGV4ZWNfZXhpdF
9jb2RlICkgPSAkdGhpcy0+ZXhlY3V0ZSggJ0NPTU1BTkRISEVSRScgKTsKCSAqCQoJICoJQHBhcmFtCQlzd
HJpbmcJCSRjb21tYW5kCQlDb21tYW5kIGxpbmUgdG8gcnVuLgoJICoJQHJldHVybgkJYXJyYXkJCQkJCQlB
c3NvY2lhdGl2ZSBhcnJheSBvZiB0aGUgcmVzcG9uc2Ugb3V0cHV0IGFuZCBleGlzdCBjb2RlLiBVc2Ugd2l
0aCBsaXN0IHRvIGFzc2lnbiB2YXJpYWJsZXMuCgkgKgkJCQkJCQkJCQkJRm9ybWF0OiBhcnJheSggRVhFQ1
9PVVRQVVQsIEVYSVRfQ09ERSApOwoJICovCglwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSggJGNvbW1hbmQgK
SB7CgkJaWYgKCBzdHJpc3RyKCBQSFBfT1MsICdXSU4nICkgJiYgIXN0cmlzdHIoIFBIUF9PUywgJ0RBUldJ
TicgKSApIHsKCQkJLy8gV2luZG93czsgZG8gbm90aGluZy4KCQl9IGVsc2UgeyAvLyBMaW51eC9NYWMKCQk
JaWYgKCAoIGluaV9nZXQoICdleGVjX2RpcicgKSAhPT0gZmFsc2UgKSAmJiAoIGluaV9nZXQoICdleGVjX2
RpcicgKSAhPSAnJyApICkgeyAvLyBleGVjX2RpciBQSFAgcGF0Y2ggaW4gcGxhY2U6IGh0dHA6Ly93d3cua
3liZXJkaWdpLmN6L3Byb2plY3RzL2V4ZWNkaXIvCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0
YWlscycsICdleGVjX2RpciBkZXRlY3RlZC4gU2tpcHBpbmcgcGF0aCBhc3NpZ25tZW50LicgKTsKCQkJfSB
lbHNlIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ2V4ZWNfZGlyIG5vdCBkZX
RlY3RlZC4gUHJvY2VlZGluZyBub3JtYWxseS4nICk7CgkJCQkkY29tbWFuZCA9ICdQQVRIPSRQQVRIOi91c
3IvYmluLzovdXNyL2xvY2FsL2Jpbi86dXNyL2xvY2FsL2JpbjovdXNyL2xvY2FsL3NiaW4vOi91c3Ivc2Jp
bi86L3NiaW4vOi91c3IvOi9iaW4vJyAuICc7ICcgLiAkY29tbWFuZDsKCQkJfQoJCX0KCQkKCQkvLyBPdXR
wdXQgY29tbWFuZCAoc3RyaXBzIG15c3FsZHVtcCBwYXNzd29yZHMpLgoJCWlmICggc3Ryc3RyKCAkY29tbW
FuZCwgJy0tcGFzc3dvcmQ9JyApICkgewoJCQkkcGFzc3dvcmRfcG9ydGlvbl9iZWdpbiA9IHN0cnBvcyggJ
GNvbW1hbmQsICctLXBhc3N3b3JkPScgKTsKCQkJJHBhc3N3b3JkX3BvcnRpb25fZW5kID0gc3RycG9zKCAk
Y29tbWFuZCwgJyAnLCAkcGFzc3dvcmRfcG9ydGlvbl9iZWdpbiApOwoJCQkvL3BiX2JhY2t1cGJ1ZGR5Ojp
zdGF0dXMoICdkZXRhaWxzJywgJ3Bhc3Mgc3RhcnQ6IGAnIC4gJHBhc3N3b3JkX3BvcnRpb25fYmVnaW4gLi
AnYC4gcGFzcyBlbmQ6IGAnIC4gJHBhc3N3b3JkX3BvcnRpb25fZW5kIC4gJ2AnICk7CgkJCSRwYXNzd29yZ
F9wb3J0aW9uID0gc3Vic3RyKCAkY29tbWFuZCwgJHBhc3N3b3JkX3BvcnRpb25fYmVnaW4sICggJHBhc3N3
b3JkX3BvcnRpb25fZW5kIC0gJHBhc3N3b3JkX3BvcnRpb25fYmVnaW4gKSApOwoJCQkvL3BiX2JhY2t1cGJ
1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ3Bhc3MgcG9ydGlvbjogYCcgLiAkcGFzc3dvcmRfcG9ydGlvbi
AuICdgLicgKTsKCQkJJHVucGFzc3dvcmRlZF9jb21tYW5kID0gc3RyX3JlcGxhY2UoICRwYXNzd29yZF9wb
3J0aW9uLCAnLS1wYXNzd29yZD0qSElEREVOKicsICRjb21tYW5kICk7CgkJCXBiX2JhY2t1cGJ1ZGR5Ojpz
dGF0dXMoICdkZXRhaWxzJywgJ2V4ZWMoKSBjb21tYW5kIChwYXNzd29yZCBoaWRkZW4pIGAnIC4gJHVucGF
zc3dvcmRlZF9jb21tYW5kIC4gJ2AgKHdpdGggcGF0aCBkZWZpbml0aW9uKS4nICk7CgkJCXVuc2V0KCAkdW
5wYXNzd29yZGVkX2NvbW1hbmQgKTsKCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZ
GV0YWlscycsICdleGVjKCkgY29tbWFuZCBgJyAuICRjb21tYW5kIC4gJ2AgKHdpdGggcGF0aCBkZWZpbml0
aW9uKS4nICk7CgkJfQoJCQoJCSRleGVjX291dHB1dCA9IGFycmF5KCk7CgkJQGV4ZWMoICRjb21tYW5kLCA
kZXhlY19vdXRwdXQsICRleGVjX2V4aXRfY29kZSk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldG
FpbHMnLCAnZXhlYygpIGNvbW1hbmQgb3V0cHV0OiBgJyAuIGltcGxvZGUoICcsJywgJGV4ZWNfb3V0cHV0I
CkgLiAnYDsgRXhpdCBjb2RlOiBgJyAuICRleGVjX2V4aXRfY29kZSAuICdgOyBFeGl0IGNvZGUgZGVzY3Jp
cHRpb246IGAnIC4gcGJfYmFja3VwYnVkZHk6OiRmaWxlc3lzdGVtLT5leGl0X2NvZGVfbG9va3VwKCAkZXh
lY19leGl0X2NvZGUgKSAuICdgJyApOwoJCQoJCXJldHVybiBhcnJheSggJGV4ZWNfb3V0cHV0LCAkZXhlY1
9leGl0X2NvZGUgKTsKCX0gLy8gRW5kIGV4ZWN1dGUoKS4KfQ==
###PACKDATA,FILE_END,/lib/commandbuddy/commandbuddy.php,importbuddy/lib/commandbudd
y/commandbuddy.php
###PACKDATA,FILE_START,/lib/commandbuddy/index.php,importbuddy/lib/commandbuddy/ind
ex.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/lib/commandbuddy/index.php,importbuddy/lib/commandbuddy/index
.php
###PACKDATA,FILE_START,/lib/pclzip/index.php,importbuddy/lib/pclzip/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/lib/pclzip/index.php,importbuddy/lib/pclzip/index.php
###PACKDATA,FILE_START,/lib/pclzip/pclzip.php,importbuddy/lib/pclzip/pclzip.php
PD9waHAKLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gUGhwQ29uY2VwdCBMaWJyYXJ5IC0gWmlwIE1vZHVsZS
AyLjguMgovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQovLyBMaWNlbnNlIEdOVS9MR1BMIC0gVmluY2VudCBCbGF2
ZXQgLSBBdWd1c3QgMjAwOQovLyBodHRwOi8vd3d3LnBocGNvbmNlcHQubmV0Ci8vIC0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tCi8vCi8vIFByZXNlbnRhdGlvbiA6Ci8vICAgUGNsWmlwIGlzIGEgUEhQIGxpYnJhcnkgdGhhdCBtY
W5hZ2UgWklQIGFyY2hpdmVzLgovLyAgIFNvIGZhciB0ZXN0cyBzaG93IHRoYXQgYXJjaGl2ZXMgZ2VuZXJh
dGVkIGJ5IFBjbFppcCBhcmUgcmVhZGFibGUgYnkKLy8gICBXaW5aaXAgYXBwbGljYXRpb24gYW5kIG90aGV
yIHRvb2xzLgovLwovLyBEZXNjcmlwdGlvbiA6Ci8vICAgU2VlIHJlYWRtZS50eHQgYW5kIGh0dHA6Ly93d3
cucGhwY29uY2VwdC5uZXQKLy8KLy8gV2FybmluZyA6Ci8vICAgVGhpcyBsaWJyYXJ5IGFuZCB0aGUgYXNzb
2NpYXRlZCBmaWxlcyBhcmUgbm9uIGNvbW1lcmNpYWwsIG5vbiBwcm9mZXNzaW9uYWwKLy8gICB3b3JrLgov
LyAgIEl0IHNob3VsZCBub3QgaGF2ZSB1bmV4cGVjdGVkIHJlc3VsdHMuIEhvd2V2ZXIgaWYgYW55IGRhbWF
nZSBpcyBjYXVzZWQgYnkKLy8gICB0aGlzIHNvZnR3YXJlIHRoZSBhdXRob3IgY2FuIG5vdCBiZSByZXNwb2
5zaWJsZS4KLy8gICBUaGUgdXNlIG9mIHRoaXMgc29mdHdhcmUgaXMgYXQgdGhlIHJpc2sgb2YgdGhlIHVzZ
XIuCi8vCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vICRJZDogcGNsemlwLmxpYi5waHAsdiAxLjYwIDIwMDk
vMDkvMzAgMjE6MDE6MDQgdmJsYXZldCBFeHAgJAovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tL
SBDb25zdGFudHMKICBpZiAoIWRlZmluZWQoJ1BDTFpJUF9SRUFEX0JMT0NLX1NJWkUnKSkgewogICAgZGVm
aW5lKCAnUENMWklQX1JFQURfQkxPQ0tfU0laRScsIDIwNDggKTsKICB9CgogIC8vIC0tLS0tIEZpbGUgbGl
zdCBzZXBhcmF0b3IKICAvLyBJbiB2ZXJzaW9uIDEueCBvZiBQY2xaaXAsIHRoZSBzZXBhcmF0b3IgZm9yIG
ZpbGUgbGlzdCBpcyBhIHNwYWNlCiAgLy8gKHdoaWNoIGlzIG5vdCBhIHZlcnkgc21hcnQgY2hvaWNlLCBzc
GVjaWZpY2FsbHkgZm9yIHdpbmRvd3MgcGF0aHMgISkuCiAgLy8gQSBiZXR0ZXIgc2VwYXJhdG9yIHNob3Vs
ZCBiZSBhIGNvbW1hICgsKS4gVGhpcyBjb25zdGFudCBnaXZlcyB5b3UgdGhlCiAgLy8gYWJpbHR5IHRvIGN
oYW5nZSB0aGF0LgogIC8vIEhvd2V2ZXIgbm90aWNlIHRoYXQgY2hhbmdpbmcgdGhpcyB2YWx1ZSwgbWF5IG
hhdmUgaW1wYWN0IG9uIGV4aXN0aW5nCiAgLy8gc2NyaXB0cywgdXNpbmcgc3BhY2Ugc2VwYXJhdGVkIGZpb
GVuYW1lcy4KICAvLyBSZWNvbW1hbmRlZCB2YWx1ZXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB2
ZXJzaW9ucyA6CiAgLy9kZWZpbmUoICdQQ0xaSVBfU0VQQVJBVE9SJywgJyAnICk7CiAgLy8gUmVjb21tYW5
kZWQgdmFsdWVzIGZvciBzbWFydCBzZXBhcmF0aW9uIG9mIGZpbGVuYW1lcy4KICBpZiAoIWRlZmluZWQoJ1
BDTFpJUF9TRVBBUkFUT1InKSkgewogICAgZGVmaW5lKCAnUENMWklQX1NFUEFSQVRPUicsICcsJyApOwogI
H0KCiAgLy8gLS0tLS0gRXJyb3IgY29uZmlndXJhdGlvbgogIC8vIDAgOiBQY2xaaXAgQ2xhc3MgaW50ZWdy
YXRlZCBlcnJvciBoYW5kbGluZwogIC8vIDEgOiBQY2xFcnJvciBleHRlcm5hbCBsaWJyYXJ5IGVycm9yIGh
hbmRsaW5nLiBCeSBlbmFibGluZyB0aGlzCiAgLy8gICAgIHlvdSBtdXN0IGVuc3VyZSB0aGF0IHlvdSBoYX
ZlIGluY2x1ZGVkIFBjbEVycm9yIGxpYnJhcnkuCiAgLy8gWzIsLi4uXSA6IHJlc2VydmVkIGZvciBmdXR1c
iB1c2UKICBpZiAoIWRlZmluZWQoJ1BDTFpJUF9FUlJPUl9FWFRFUk5BTCcpKSB7CiAgICBkZWZpbmUoICdQ
Q0xaSVBfRVJST1JfRVhURVJOQUwnLCAwICk7CiAgfQoKICAvLyAtLS0tLSBPcHRpb25hbCBzdGF0aWMgdGV
tcG9yYXJ5IGRpcmVjdG9yeQogIC8vICAgICAgIEJ5IGRlZmF1bHQgdGVtcG9yYXJ5IGZpbGVzIGFyZSBnZW
5lcmF0ZWQgaW4gdGhlIHNjcmlwdCBjdXJyZW50CiAgLy8gICAgICAgcGF0aC4KICAvLyAgICAgICBJZiBkZ
WZpbmVkIDoKICAvLyAgICAgICAtIE1VU1QgQkUgdGVybWluYXRlZCBieSBhICcvJy4KICAvLyAgICAgICAt
IE1VU1QgYmUgYSB2YWxpZCwgYWxyZWFkeSBjcmVhdGVkIGRpcmVjdG9yeQogIC8vICAgICAgIFNhbXBsZXM
gOgogIC8vIGRlZmluZSggJ1BDTFpJUF9URU1QT1JBUllfRElSJywgJy90ZW1wLycgKTsKICAvLyBkZWZpbm
UoICdQQ0xaSVBfVEVNUE9SQVJZX0RJUicsICdDOi9UZW1wLycgKTsKICBpZiAoIWRlZmluZWQoJ1BDTFpJU
F9URU1QT1JBUllfRElSJykpIHsKICAgIGRlZmluZSggJ1BDTFpJUF9URU1QT1JBUllfRElSJywgJycgKTsK
ICB9CgogIC8vIC0tLS0tIE9wdGlvbmFsIHRocmVzaG9sZCByYXRpbyBmb3IgdXNlIG9mIHRlbXBvcmFyeSB
maWxlcwogIC8vICAgICAgIFBjbHppcCBzZW5zZSB0aGUgc2l6ZSBvZiB0aGUgZmlsZSB0byBhZGQvZXh0cm
FjdCBhbmQgZGVjaWRlIHRvCiAgLy8gICAgICAgdXNlIG9yIG5vdCB0ZW1wb3JhcnkgZmlsZS4gVGhlIGFsZ
29yeXRobSBpcyBsb29raW5nIGZvcgogIC8vICAgICAgIG1lbW9yeV9saW1pdCBvZiBQSFAgYW5kIGFwcGx5
IGEgcmF0aW8uCiAgLy8gICAgICAgdGhyZXNob2xkID0gbWVtb3J5X2xpbWl0ICogcmF0aW8uCiAgLy8gICA
gICAgUmVjb21tZW5kZWQgdmFsdWVzIGFyZSB1bmRlciAwLjUuIERlZmF1bHQgMC40Ny4KICAvLyAgICAgIC
BTYW1wbGVzIDoKICAvLyBkZWZpbmUoICdQQ0xaSVBfVEVNUE9SQVJZX0ZJTEVfUkFUSU8nLCAwLjUgKTsKI
CBpZiAoIWRlZmluZWQoJ1BDTFpJUF9URU1QT1JBUllfRklMRV9SQVRJTycpKSB7CiAgICBkZWZpbmUoICdQ
Q0xaSVBfVEVNUE9SQVJZX0ZJTEVfUkFUSU8nLCAwLjQ3ICk7CiAgfQoKLy8gLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0KLy8gKioqKiogVU5ERVIgVEhJUyBMSU5FIE5PVEhJTkcgTkVFRFMgVE8gQkUgTU9ESUZJRUQgKioqKioKL
y8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0gR2xvYmFsIHZhcmlhYmxlcwogICRnX3BjbHppcF9
2ZXJzaW9uID0gIjIuOC4yIjsKCiAgLy8gLS0tLS0gRXJyb3IgY29kZXMKICAvLyAgIC0xIDogVW5hYmxlIH
RvIG9wZW4gZmlsZSBpbiBiaW5hcnkgd3JpdGUgbW9kZQogIC8vICAgLTIgOiBVbmFibGUgdG8gb3BlbiBma
WxlIGluIGJpbmFyeSByZWFkIG1vZGUKICAvLyAgIC0zIDogSW52YWxpZCBwYXJhbWV0ZXJzCiAgLy8gICAt
NCA6IEZpbGUgZG9lcyBub3QgZXhpc3QKICAvLyAgIC01IDogRmlsZW5hbWUgaXMgdG9vIGxvbmcgKG1heC4
gMjU1KQogIC8vICAgLTYgOiBOb3QgYSB2YWxpZCB6aXAgZmlsZQogIC8vICAgLTcgOiBJbnZhbGlkIGV4dH
JhY3RlZCBmaWxlIHNpemUKICAvLyAgIC04IDogVW5hYmxlIHRvIGNyZWF0ZSBkaXJlY3RvcnkKICAvLyAgI
C05IDogSW52YWxpZCBhcmNoaXZlIGV4dGVuc2lvbgogIC8vICAtMTAgOiBJbnZhbGlkIGFyY2hpdmUgZm9y
bWF0CiAgLy8gIC0xMSA6IFVuYWJsZSB0byBkZWxldGUgZmlsZSAodW5saW5rKQogIC8vICAtMTIgOiBVbmF
ibGUgdG8gcmVuYW1lIGZpbGUgKHJlbmFtZSkKICAvLyAgLTEzIDogSW52YWxpZCBoZWFkZXIgY2hlY2tzdW
0KICAvLyAgLTE0IDogSW52YWxpZCBhcmNoaXZlIHNpemUKICBkZWZpbmUoICdQQ0xaSVBfRVJSX1VTRVJfQ
UJPUlRFRCcsIDIgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJSX05PX0VSUk9SJywgMCApOwogIGRlZmluZSgg
J1BDTFpJUF9FUlJfV1JJVEVfT1BFTl9GQUlMJywgLTEgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJSX1JFQUR
fT1BFTl9GQUlMJywgLTIgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVEVSJywgLT
MgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJSX01JU1NJTkdfRklMRScsIC00ICk7CiAgZGVmaW5lKCAnUENMW
klQX0VSUl9GSUxFTkFNRV9UT09fTE9ORycsIC01ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9JTlZBTElE
X1pJUCcsIC02ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9CQURfRVhUUkFDVEVEX0ZJTEUnLCAtNyApOwo
gIGRlZmluZSggJ1BDTFpJUF9FUlJfRElSX0NSRUFURV9GQUlMJywgLTggKTsKICBkZWZpbmUoICdQQ0xaSV
BfRVJSX0JBRF9FWFRFTlNJT04nLCAtOSApOwogIGRlZmluZSggJ1BDTFpJUF9FUlJfQkFEX0ZPUk1BVCcsI
C0xMCApOwogIGRlZmluZSggJ1BDTFpJUF9FUlJfREVMRVRFX0ZJTEVfRkFJTCcsIC0xMSApOwogIGRlZmlu
ZSggJ1BDTFpJUF9FUlJfUkVOQU1FX0ZJTEVfRkFJTCcsIC0xMiApOwogIGRlZmluZSggJ1BDTFpJUF9FUlJ
fQkFEX0NIRUNLU1VNJywgLTEzICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9JTlZBTElEX0FSQ0hJVkVfWk
lQJywgLTE0ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9NSVNTSU5HX09QVElPTl9WQUxVRScsIC0xNSApO
wogIGRlZmluZSggJ1BDTFpJUF9FUlJfSU5WQUxJRF9PUFRJT05fVkFMVUUnLCAtMTYgKTsKICBkZWZpbmUo
ICdQQ0xaSVBfRVJSX0FMUkVBRFlfQV9ESVJFQ1RPUlknLCAtMTcgKTsKICBkZWZpbmUoICdQQ0xaSVBfRVJ
SX1VOU1VQUE9SVEVEX0NPTVBSRVNTSU9OJywgLTE4ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9VTlNVUF
BPUlRFRF9FTkNSWVBUSU9OJywgLTE5ICk7CiAgZGVmaW5lKCAnUENMWklQX0VSUl9JTlZBTElEX0FUVFJJQ
lVURV9WQUxVRScsIC0yMCApOwogIGRlZmluZSggJ1BDTFpJUF9FUlJfRElSRUNUT1JZX1JFU1RSSUNUSU9O
JywgLTIxICk7CgogIC8vIC0tLS0tIE9wdGlvbnMgdmFsdWVzCiAgZGVmaW5lKCAnUENMWklQX09QVF9QQVR
IJywgNzcwMDEgKTsKICBkZWZpbmUoICdQQ0xaSVBfT1BUX0FERF9QQVRIJywgNzcwMDIgKTsKICBkZWZpbm
UoICdQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIJywgNzcwMDMgKTsKICBkZWZpbmUoICdQQ0xaSVBfT1BUX1JFT
U9WRV9BTExfUEFUSCcsIDc3MDA0ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9TRVRfQ0hNT0QnLCA3NzAw
NSApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfRVhUUkFDVF9BU19TVFJJTkcnLCA3NzAwNiApOwogIGRlZml
uZSggJ1BDTFpJUF9PUFRfTk9fQ09NUFJFU1NJT04nLCA3NzAwNyApOwogIGRlZmluZSggJ1BDTFpJUF9PUF
RfQllfTkFNRScsIDc3MDA4ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9CWV9JTkRFWCcsIDc3MDA5ICk7C
iAgZGVmaW5lKCAnUENMWklQX09QVF9CWV9FUkVHJywgNzcwMTAgKTsKICBkZWZpbmUoICdQQ0xaSVBfT1BU
X0JZX1BSRUcnLCA3NzAxMSApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfQ09NTUVOVCcsIDc3MDEyICk7CiA
gZGVmaW5lKCAnUENMWklQX09QVF9BRERfQ09NTUVOVCcsIDc3MDEzICk7CiAgZGVmaW5lKCAnUENMWklQX0
9QVF9QUkVQRU5EX0NPTU1FTlQnLCA3NzAxNCApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfRVhUUkFDVF9JT
l9PVVRQVVQnLCA3NzAxNSApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfUkVQTEFDRV9ORVdFUicsIDc3MDE2
ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9TVE9QX09OX0VSUk9SJywgNzcwMTcgKTsKICAvLyBIYXZpbmc
gYmlnIHRyb3VibGUgd2l0aCBjcnlwdC4gTmVlZCB0byBtdWx0aXBseSAyIGxvbmcgaW50CiAgLy8gd2hpY2
ggaXMgbm90IGNvcnJlY3RseSBzdXBwb3J0ZWQgYnkgUEhQIC4uLgogIC8vZGVmaW5lKCAnUENMWklQX09QV
F9DUllQVCcsIDc3MDE4ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9FWFRSQUNUX0RJUl9SRVNUUklDVElP
TicsIDc3MDE5ICk7CiAgZGVmaW5lKCAnUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEJywgNzcwMjA
gKTsKICBkZWZpbmUoICdQQ0xaSVBfT1BUX0FERF9URU1QX0ZJTEVfVEhSRVNIT0xEJywgNzcwMjAgKTsgLy
8gYWxpYXMKICBkZWZpbmUoICdQQ0xaSVBfT1BUX1RFTVBfRklMRV9PTicsIDc3MDIxICk7CiAgZGVmaW5lK
CAnUENMWklQX09QVF9BRERfVEVNUF9GSUxFX09OJywgNzcwMjEgKTsgLy8gYWxpYXMKICBkZWZpbmUoICdQ
Q0xaSVBfT1BUX1RFTVBfRklMRV9PRkYnLCA3NzAyMiApOwogIGRlZmluZSggJ1BDTFpJUF9PUFRfQUREX1R
FTVBfRklMRV9PRkYnLCA3NzAyMiApOyAvLyBhbGlhcwoKICAvLyAtLS0tLSBGaWxlIGRlc2NyaXB0aW9uIG
F0dHJpYnV0ZXMKICBkZWZpbmUoICdQQ0xaSVBfQVRUX0ZJTEVfTkFNRScsIDc5MDAxICk7CiAgZGVmaW5lK
CAnUENMWklQX0FUVF9GSUxFX05FV19TSE9SVF9OQU1FJywgNzkwMDIgKTsKICBkZWZpbmUoICdQQ0xaSVBf
QVRUX0ZJTEVfTkVXX0ZVTExfTkFNRScsIDc5MDAzICk7CiAgZGVmaW5lKCAnUENMWklQX0FUVF9GSUxFX01
USU1FJywgNzkwMDQgKTsKICBkZWZpbmUoICdQQ0xaSVBfQVRUX0ZJTEVfQ09OVEVOVCcsIDc5MDA1ICk7Ci
AgZGVmaW5lKCAnUENMWklQX0FUVF9GSUxFX0NPTU1FTlQnLCA3OTAwNiApOwoKICAvLyAtLS0tLSBDYWxsI
GJhY2tzIHZhbHVlcwogIGRlZmluZSggJ1BDTFpJUF9DQl9QUkVfRVhUUkFDVCcsIDc4MDAxICk7CiAgZGVm
aW5lKCAnUENMWklQX0NCX1BPU1RfRVhUUkFDVCcsIDc4MDAyICk7CiAgZGVmaW5lKCAnUENMWklQX0NCX1B
SRV9BREQnLCA3ODAwMyApOwogIGRlZmluZSggJ1BDTFpJUF9DQl9QT1NUX0FERCcsIDc4MDA0ICk7CiAgLy
ogRm9yIGZ1dHVyIHVzZQogIGRlZmluZSggJ1BDTFpJUF9DQl9QUkVfTElTVCcsIDc4MDA1ICk7CiAgZGVma
W5lKCAnUENMWklQX0NCX1BPU1RfTElTVCcsIDc4MDA2ICk7CiAgZGVmaW5lKCAnUENMWklQX0NCX1BSRV9E
RUxFVEUnLCA3ODAwNyApOwogIGRlZmluZSggJ1BDTFpJUF9DQl9QT1NUX0RFTEVURScsIDc4MDA4ICk7CiA
gKi8KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBDbGFzcyA6IFBjbFppcAogIC8vIERlc2NyaXB0a
W9uIDoKICAvLyAgIFBjbFppcCBpcyB0aGUgY2xhc3MgdGhhdCByZXByZXNlbnQgYSBaaXAgYXJjaGl2ZS4K
ICAvLyAgIFRoZSBwdWJsaWMgbWV0aG9kcyBhbGx
vdyB0aGUgbWFuaXB1bGF0aW9uIG9mIHRoZSBhcmNoaXZlLgogIC8vIEF0dHJpYnV0ZXMgOgogIC8vICAgQX
R0cmlidXRlcyBtdXN0IG5vdCBiZSBhY2Nlc3NlZCBkaXJlY3RseS4KICAvLyBNZXRob2RzIDoKICAvLyAgI
FBjbFppcCgpIDogT2JqZWN0IGNyZWF0b3IKICAvLyAgIGNyZWF0ZSgpIDogQ3JlYXRlcyB0aGUgWmlwIGFy
Y2hpdmUKICAvLyAgIGxpc3RDb250ZW50KCkgOiBMaXN0IHRoZSBjb250ZW50IG9mIHRoZSBaaXAgYXJjaGl
2ZQogIC8vICAgZXh0cmFjdCgpIDogRXh0cmFjdCB0aGUgY29udGVudCBvZiB0aGUgYXJjaGl2ZQogIC8vIC
AgcHJvcGVydGllcygpIDogTGlzdCB0aGUgcHJvcGVydGllcyBvZiB0aGUgYXJjaGl2ZQogIC8vIC0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCiAgY2xhc3MgUGNsWmlwCiAgewogICAgLy8gLS0tLS0gRmlsZW5hbWUgb2YgdGhlIHp
pcCBmaWxlCiAgICB2YXIgJHppcG5hbWUgPSAnJzsKCiAgICAvLyAtLS0tLSBGaWxlIGRlc2NyaXB0b3Igb2
YgdGhlIHppcCBmaWxlCiAgICB2YXIgJHppcF9mZCA9IDA7CgogICAgLy8gLS0tLS0gSW50ZXJuYWwgZXJyb
3IgaGFuZGxpbmcKICAgIHZhciAkZXJyb3JfY29kZSA9IDE7CiAgICB2YXIgJGVycm9yX3N0cmluZyA9ICcn
OwoKICAgIC8vIC0tLS0tIEN1cnJlbnQgc3RhdHVzIG9mIHRoZSBtYWdpY19xdW90ZXNfcnVudGltZQogICA
gLy8gVGhpcyB2YWx1ZSBzdG9yZSB0aGUgcGhwIGNvbmZpZ3VyYXRpb24gZm9yIG1hZ2ljX3F1b3RlcwogIC
AgLy8gVGhlIGNsYXNzIGNhbiB0aGVuIGRpc2FibGUgdGhlIG1hZ2ljX3F1b3RlcyBhbmQgcmVzZXQgaXQgY
WZ0ZXIKICAgIHZhciAkbWFnaWNfcXVvdGVzX3N0YXR1czsKCiAgICBmdW5jdGlvbiBfX2NvbnN0cnVjdCgk
cF96aXBuYW1lKSB7CgkJcmV0dXJuICR0aGlzLT5QY2xaaXAoJHBfemlwbmFtZSk7Cgl9CgogIC8vIC0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBQY2xaaXAoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvL
yAgIENyZWF0ZXMgYSBQY2xaaXAgb2JqZWN0IGFuZCBzZXQgdGhlIG5hbWUgb2YgdGhlIGFzc29jaWF0ZWQg
WmlwIGFyY2hpdmUKICAvLyAgIGZpbGVuYW1lLgogIC8vICAgTm90ZSB0aGF0IG5vIHJlYWwgYWN0aW9uIGl
zIHRha2VuLCBpZiB0aGUgYXJjaGl2ZSBkb2VzIG5vdCBleGlzdCBpdCBpcyBub3QKICAvLyAgIGNyZWF0ZW
QuIFVzZSBjcmVhdGUoKSBmb3IgdGhhdC4KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIFBj
bFppcCgkcF96aXBuYW1lKQogIHsKCiAgICAvLyAtLS0tLSBUZXN0cyB0aGUgemxpYgogICAgaWYgKCFmdW5
jdGlvbl9leGlzdHMoJ2d6b3BlbicpKQogICAgewogICAgICBkaWUoJ0Fib3J0ICcuYmFzZW5hbWUoX19GSU
xFX18pLicgOiBNaXNzaW5nIHpsaWIgZXh0ZW5zaW9ucycpOwogICAgfQoKICAgIC8vIC0tLS0tIFNldCB0a
GUgYXR0cmlidXRlcwogICAgJHRoaXMtPnppcG5hbWUgPSAkcF96aXBuYW1lOwogICAgJHRoaXMtPnppcF9m
ZCA9IDA7CiAgICAkdGhpcy0+bWFnaWNfcXVvdGVzX3N0YXR1cyA9IC0xOwoKICAgIC8vIC0tLS0tIFJldHV
ybgogICAgcmV0dXJuOwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogIC8vIEZ1bmN0aW9uIDoKICAvLyAgIGNyZWF0ZSgkcF9maWxlbGlzdCwgJHBfYWRkX2Rpcj0iIiw
gJHBfcmVtb3ZlX2Rpcj0iIikKICAvLyAgIGNyZWF0ZSgkcF9maWxlbGlzdCwgJHBfb3B0aW9uLCAkcF9vcH
Rpb25fdmFsdWUsIC4uLikKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gICBUaGlzIG1ldGhvZCBzdXBwb3J0c
yB0d28gZGlmZmVyZW50IHN5bm9wc2lzLiBUaGUgZmlyc3Qgb25lIGlzIGhpc3RvcmljYWwuCiAgLy8gICBU
aGlzIG1ldGhvZCBjcmVhdGVzIGEgWmlwIEFyY2hpdmUuIFRoZSBaaXAgZmlsZSBpcyBjcmVhdGVkIGluIHR
oZQogIC8vICAgZmlsZXN5c3RlbS4gVGhlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbmRpY2F0ZWQgaW4gJH
BfZmlsZWxpc3QKICAvLyAgIGFyZSBhZGRlZCBpbiB0aGUgYXJjaGl2ZS4gU2VlIHRoZSBwYXJhbWV0ZXJzI
GRlc2NyaXB0aW9uIGZvciB0aGUKICAvLyAgIHN1cHBvcnRlZCBmb3JtYXQgb2YgJHBfZmlsZWxpc3QuCiAg
Ly8gICBXaGVuIGEgZGlyZWN0b3J5IGlzIGluIHRoZSBsaXN0LCB0aGUgZGlyZWN0b3J5IGFuZCBpdHMgY29
udGVudCBpcyBhZGRlZAogIC8vICAgaW4gdGhlIGFyY2hpdmUuCiAgLy8gICBJbiB0aGlzIHN5bm9wc2lzLC
B0aGUgZnVuY3Rpb24gdGFrZXMgYW4gb3B0aW9uYWwgdmFyaWFibGUgbGlzdCBvZgogIC8vICAgb3B0aW9uc
y4gU2VlIGJlbGxvdyB0aGUgc3VwcG9ydGVkIG9wdGlvbnMuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICAk
cF9maWxlbGlzdCA6IEFuIGFycmF5IGNvbnRhaW5pbmcgZmlsZSBvciBkaXJlY3RvcnkgbmFtZXMsIG9yCiA
gLy8gICAgICAgICAgICAgICAgIGEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIGZpbGVuYW1lIG9yIG9uZSBkaX
JlY3RvcnkgbmFtZSwgb3IKICAvLyAgICAgICAgICAgICAgICAgYSBzdHJpbmcgY29udGFpbmluZyBhIGxpc
3Qgb2YgZmlsZW5hbWVzIGFuZC9vciBkaXJlY3RvcnkKICAvLyAgICAgICAgICAgICAgICAgbmFtZXMgc2Vw
YXJhdGVkIGJ5IHNwYWNlcy4KICAvLyAgICRwX2FkZF9kaXIgOiBBIHBhdGggdG8gYWRkIGJlZm9yZSB0aGU
gcmVhbCBwYXRoIG9mIHRoZSBhcmNoaXZlZCBmaWxlLAogIC8vICAgICAgICAgICAgICAgIGluIG9yZGVyIH
RvIGhhdmUgaXQgbWVtb3JpemVkIGluIHRoZSBhcmNoaXZlLgogIC8vICAgJHBfcmVtb3ZlX2RpciA6IEEgc
GF0aCB0byByZW1vdmUgZnJvbSB0aGUgcmVhbCBwYXRoIG9mIHRoZSBmaWxlIHRvIGFyY2hpdmUsCiAgLy8g
ICAgICAgICAgICAgICAgICAgaW4gb3JkZXIgdG8gaGF2ZSBhIHNob3J0ZXIgcGF0aCBtZW1vcml6ZWQgaW4
gdGhlIGFyY2hpdmUuCiAgLy8gICAgICAgICAgICAgICAgICAgV2hlbiAkcF9hZGRfZGlyIGFuZCAkcF9yZW
1vdmVfZGlyIGFyZSBzZXQsICRwX3JlbW92ZV9kaXIKICAvLyAgICAgICAgICAgICAgICAgICBpcyByZW1vd
mVkIGZpcnN0LCBiZWZvcmUgJHBfYWRkX2RpciBpcyBhZGRlZC4KICAvLyBPcHRpb25zIDoKICAvLyAgIFBD
TFpJUF9PUFRfQUREX1BBVEggOgogIC8vICAgUENMWklQX09QVF9SRU1PVkVfUEFUSCA6CiAgLy8gICBQQ0x
aSVBfT1BUX1JFTU9WRV9BTExfUEFUSCA6CiAgLy8gICBQQ0xaSVBfT1BUX0NPTU1FTlQgOgogIC8vICAgUE
NMWklQX0NCX1BSRV9BREQgOgogIC8vICAgUENMWklQX0NCX1BPU1RfQUREIDoKICAvLyBSZXR1cm4gVmFsd
WVzIDoKICAvLyAgIDAgb24gZmFpbHVyZSwKICAvLyAgIFRoZSBsaXN0IG9mIHRoZSBhZGRlZCBmaWxlcywg
d2l0aCBhIHN0YXR1cyBvZiB0aGUgYWRkIGFjdGlvbi4KICAvLyAgIChzZWUgUGNsWmlwOjpsaXN0Q29udGV
udCgpIGZvciBsaXN0IGVudHJ5IGZvcm1hdCkKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uI
GNyZWF0ZSgkcF9maWxlbGlzdCkKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICAvLyAtLS0tLSBSZXNldCB0
aGUgZXJyb3IgaGFuZGxlcgogICAgJHRoaXMtPnByaXZFcnJvclJlc2V0KCk7CgogICAgLy8gLS0tLS0gU2V
0IGRlZmF1bHQgdmFsdWVzCiAgICAkdl9vcHRpb25zID0gYXJyYXkoKTsKICAgICR2X29wdGlvbnNbUENMWk
lQX09QVF9OT19DT01QUkVTU0lPTl0gPSBGQUxTRTsKCiAgICAvLyAtLS0tLSBMb29rIGZvciB2YXJpYWJsZ
SBvcHRpb25zIGFyZ3VtZW50cwogICAgJHZfc2l6ZSA9IGZ1bmNfbnVtX2FyZ3MoKTsKCiAgICAvLyAtLS0t
LSBMb29rIGZvciBhcmd1bWVudHMKICAgIGlmICgkdl9zaXplID4gMSkgewogICAgICAvLyAtLS0tLSBHZXQ
gdGhlIGFyZ3VtZW50cwogICAgICAkdl9hcmdfbGlzdCA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgIC8vIC
0tLS0tIFJlbW92ZSBmcm9tIHRoZSBvcHRpb25zIGxpc3QgdGhlIGZpcnN0IGFyZ3VtZW50CiAgICAgIGFyc
mF5X3NoaWZ0KCR2X2FyZ19saXN0KTsKICAgICAgJHZfc2l6ZS0tOwoKICAgICAgLy8gLS0tLS0gTG9vayBm
b3IgZmlyc3QgYXJnCiAgICAgIGlmICgoaXNfaW50ZWdlcigkdl9hcmdfbGlzdFswXSkpICYmICgkdl9hcmd
fbGlzdFswXSA+IDc3MDAwKSkgewoKICAgICAgICAvLyAtLS0tLSBQYXJzZSB0aGUgb3B0aW9ucwogICAgIC
AgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2UGFyc2VPcHRpb25zKCR2X2FyZ19saXN0LCAkdl9zaXplLCAkd
l9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5IChQ
Q0xaSVBfT1BUX1JFTU9WRV9QQVRIID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQVRIID0+ICdvcHRpb2
5hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJU
F9PUFRfQUREX1BBVEggPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUENMWklQX0NCX1BSRV9BREQgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX0NCX1BPU1RfQUREID0+IC
dvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
FBDTFpJUF9PUFRfTk9fQ09NUFJFU1NJT04gPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9DT01NRU5UID0+ICdvcHRpb25hbCc
sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUF
RfVEVNUF9GSUxFX1RIUkVTSE9MRCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX1RFTVBfRklMRV9PTiA9PiAnb3B0aW9uYWwn
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1B
UX1RFTVBfRklMRV9PRkYgPT4gJ29wdGlvbmFsJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAvLywgUENMWklQX09QVF9DUllQVCA9PiAnb3B0aW9uYWwnCiAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpOwogICAgICAgIGlmICgkdl9yZXN1bHQg
IT0gMSkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICB9CgogICAgICAvLyAtLS0tLSB
Mb29rIGZvciAyIGFyZ3MKICAgICAgLy8gSGVyZSB3ZSBuZWVkIHRvIHN1cHBvcnQgdGhlIGZpcnN0IGhpc3
RvcmljIHN5bm9wc2lzIG9mIHRoZQogICAgICAvLyBtZXRob2QuCiAgICAgIGVsc2UgewoKICAgICAgICAvL
yAtLS0tLSBHZXQgdGhlIGZpcnN0IGFyZ3VtZW50CiAgICAgICAgJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX0FE
RF9QQVRIXSA9ICR2X2FyZ19saXN0WzBdOwoKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciB0aGUgb3B0aW9
uYWwgc2Vjb25kIGFyZ3VtZW50CiAgICAgICAgaWYgKCR2X3NpemUgPT0gMikgewogICAgICAgICAgJHZfb3
B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIXSA9ICR2X2FyZ19saXN0WzFdOwogICAgICAgIH0KICAgI
CAgICBlbHNlIGlmICgkdl9zaXplID4gMikgewogICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENM
WklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiwKCQkgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIG5
1bWJlciAvIHR5cGUgb2YgYXJndW1lbnRzIik7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgIC
AgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBMb29rIGZvciBkZWZhdWx0IG9wdGlvbiB2YWx1ZXMKICAgICR0a
GlzLT5wcml2T3B0aW9uRGVmYXVsdFRocmVzaG9sZCgkdl9vcHRpb25zKTsKCiAgICAvLyAtLS0tLSBJbml0
CiAgICAkdl9zdHJpbmdfbGlzdCA9IGFycmF5KCk7CiAgICAkdl9hdHRfbGlzdCA9IGFycmF5KCk7CiAgICA
kdl9maWxlZGVzY3JfbGlzdCA9IGFycmF5KCk7CiAgICAkcF9yZXN1bHRfbGlzdCA9IGFycmF5KCk7CgogIC
AgLy8gLS0tLS0gTG9vayBpZiB0aGUgJHBfZmlsZWxpc3QgaXMgcmVhbGx5IGFuIGFycmF5CiAgICBpZiAoa
XNfYXJyYXkoJHBfZmlsZWxpc3QpKSB7CgogICAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSBmaXJzdCBlbGVt
ZW50IGlzIGFsc28gYW4gYXJyYXkKICAgICAgLy8gICAgICAgVGhpcyB3aWxsIG1lYW4gdGhhdCB0aGlzIGl
zIGEgZmlsZSBkZXNjcmlwdGlvbiBlbnRyeQogICAgICBpZiAoaXNzZXQoJHBfZmlsZWxpc3RbMF0pICYmIG
lzX2FycmF5KCRwX2ZpbGVsaXN0WzBdKSkgewogICAgICAgICR2X2F0dF9saXN0ID0gJHBfZmlsZWxpc3Q7C
iAgICAgIH0KCiAgICAgIC8vIC0tLS0tIFRoZSBsaXN0IGlzIGEgbGlzdCBvZiBzdHJpbmcgbmFtZXMKICAg
ICAgZWxzZSB7CiAgICAgICAgJHZfc3RyaW5nX2xpc3QgPSAkcF9maWxlbGlzdDsKICAgICAgfQogICAgfQo
KICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2ZpbGVsaXN0IGlzIGEgc3RyaW5nCiAgICBlbHNlIGlmIC
hpc19zdHJpbmcoJHBfZmlsZWxpc3QpKSB7CiAgICAgIC8vIC0tLS0tIENyZWF0ZSBhIGxpc3QgZnJvbSB0a
GUgc3RyaW5nCiAgICAgICR2X3N0cmluZ19saXN0ID0gZXhwbG9kZShQQ0xaSVBfU0VQQVJBVE9SLCAkcF9m
aWxlbGlzdCk7CiAgICB9CgogICAgLy8gLS0tLS0gSW52YWxpZCB2YXJpYWJsZSB0eXBlIGZvciAkcF9maWx
lbGlzdAogICAgZWxzZSB7CiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF
9QQVJBTUVURVIsICJJbnZhbGlkIHZhcmlhYmxlIHR5cGUgcF9maWxlbGlzdCIpOwogICAgICByZXR1cm4gM
DsKICAgIH0KCiAgICAvLyAtLS0tLSBSZWZvcm1hdCB0aGUgc3RyaW5nIGxpc3QKICAgIGlmIChzaXplb2Yo
JHZfc3RyaW5nX2xpc3QpICE9IDApIHsKICAgICAgZm9yZWFjaCAoJHZfc3RyaW5nX2xpc3QgYXMgJHZfc3R
yaW5nKSB7CiAgICAgICAgaWYgKCR2X3N0cmluZy
AhPSAnJykgewogICAgICAgICAgJHZfYXR0X2xpc3RbXVtQQ0xaSVBfQVRUX0ZJTEVfTkFNRV0gPSAkdl9zd
HJpbmc7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8v
IC0tLS0tIEZvciBlYWNoIGZpbGUgaW4gdGhlIGxpc3QgY2hlY2sgdGhlIGF0dHJpYnV0ZXMKICAgICR2X3N
1cHBvcnRlZF9hdHRyaWJ1dGVzCiAgICA9IGFycmF5ICggUENMWklQX0FUVF9GSUxFX05BTUUgPT4gJ21hbm
RhdG9yeScKICAgICAgICAgICAgICxQQ0xaSVBfQVRUX0ZJTEVfTkVXX1NIT1JUX05BTUUgPT4gJ29wdGlvb
mFsJwogICAgICAgICAgICAgLFBDTFpJUF9BVFRfRklMRV9ORVdfRlVMTF9OQU1FID0+ICdvcHRpb25hbCcK
ICAgICAgICAgICAgICxQQ0xaSVBfQVRUX0ZJTEVfTVRJTUUgPT4gJ29wdGlvbmFsJwogICAgICAgICAgICA
gLFBDTFpJUF9BVFRfRklMRV9DT05URU5UID0+ICdvcHRpb25hbCcKICAgICAgICAgICAgICxQQ0xaSVBfQV
RUX0ZJTEVfQ09NTUVOVCA9PiAnb3B0aW9uYWwnCgkJCQkJCSk7CiAgICBmb3JlYWNoICgkdl9hdHRfbGlzd
CBhcyAkdl9lbnRyeSkgewogICAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkZpbGVEZXNjclBhcnNlQXR0
KCR2X2VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2X2Z
pbGVkZXNjcl9saXN0W10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgJHZfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkd
l9zdXBwb3J0ZWRfYXR0cmlidXRlcyk7CiAgICAgIGlmICgkdl9yZXN1bHQgIT0gMSkgewogICAgICAgIHJl
dHVybiAwOwogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gRXhwYW5kIHRoZSBmaWxlbGlzdCAoZXhwYW5
kIGRpcmVjdG9yaWVzKQogICAgJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZGaWxlRGVzY3JFeHBhbmQoJHZfZm
lsZWRlc2NyX2xpc3QsICR2X29wdGlvbnMpOwogICAgaWYgKCR2X3Jlc3VsdCAhPSAxKSB7CiAgICAgIHJld
HVybiAwOwogICAgfQoKICAgIC8vIC0tLS0tIENhbGwgdGhlIGNyZWF0ZSBmY3QKICAgICR2X3Jlc3VsdCA9
ICR0aGlzLT5wcml2Q3JlYXRlKCR2X2ZpbGVkZXNjcl9saXN0LCAkcF9yZXN1bHRfbGlzdCwgJHZfb3B0aW9
ucyk7CiAgICBpZiAoJHZfcmVzdWx0ICE9IDEpIHsKICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8gLS
0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHBfcmVzdWx0X2xpc3Q7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOgogIC8vICAgYWRkKCRwX2ZpbG
VsaXN0LCAkcF9hZGRfZGlyPSIiLCAkcF9yZW1vdmVfZGlyPSIiKQogIC8vICAgYWRkKCRwX2ZpbGVsaXN0L
CAkcF9vcHRpb24sICRwX29wdGlvbl92YWx1ZSwgLi4uKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRo
aXMgbWV0aG9kIHN1cHBvcnRzIHR3byBzeW5vcHNpcy4gVGhlIGZpcnN0IG9uZSBpcyBoaXN0b3JpY2FsLgo
gIC8vICAgVGhpcyBtZXRob2RzIGFkZCB0aGUgbGlzdCBvZiBmaWxlcyBpbiBhbiBleGlzdGluZyBhcmNoaX
ZlLgogIC8vICAgSWYgYSBmaWxlIHdpdGggdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0cywgaXQgaXMgY
WRkZWQgYXQgdGhlIGVuZCBvZiB0aGUKICAvLyAgIGFyY2hpdmUsIHRoZSBmaXJzdCBvbmUgaXMgc3RpbGwg
cHJlc2VudC4KICAvLyAgIElmIHRoZSBhcmNoaXZlIGRvZXMgbm90IGV4aXN0LCBpdCBpcyBjcmVhdGVkLgo
gIC8vIFBhcmFtZXRlcnMgOgogIC8vICAgJHBfZmlsZWxpc3QgOiBBbiBhcnJheSBjb250YWluaW5nIGZpbG
Ugb3IgZGlyZWN0b3J5IG5hbWVzLCBvcgogIC8vICAgICAgICAgICAgICAgICBhIHN0cmluZyBjb250YWlua
W5nIG9uZSBmaWxlbmFtZSBvciBvbmUgZGlyZWN0b3J5IG5hbWUsIG9yCiAgLy8gICAgICAgICAgICAgICAg
IGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBsaXN0IG9mIGZpbGVuYW1lcyBhbmQvb3IgZGlyZWN0b3J5CiAgLy8
gICAgICAgICAgICAgICAgIG5hbWVzIHNlcGFyYXRlZCBieSBzcGFjZXMuCiAgLy8gICAkcF9hZGRfZGlyID
ogQSBwYXRoIHRvIGFkZCBiZWZvcmUgdGhlIHJlYWwgcGF0aCBvZiB0aGUgYXJjaGl2ZWQgZmlsZSwKICAvL
yAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBoYXZlIGl0IG1lbW9yaXplZCBpbiB0aGUgYXJjaGl2ZS4K
ICAvLyAgICRwX3JlbW92ZV9kaXIgOiBBIHBhdGggdG8gcmVtb3ZlIGZyb20gdGhlIHJlYWwgcGF0aCBvZiB
0aGUgZmlsZSB0byBhcmNoaXZlLAogIC8vICAgICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGhhdmUgYS
BzaG9ydGVyIHBhdGggbWVtb3JpemVkIGluIHRoZSBhcmNoaXZlLgogIC8vICAgICAgICAgICAgICAgICAgI
FdoZW4gJHBfYWRkX2RpciBhbmQgJHBfcmVtb3ZlX2RpciBhcmUgc2V0LCAkcF9yZW1vdmVfZGlyCiAgLy8g
ICAgICAgICAgICAgICAgICAgaXMgcmVtb3ZlZCBmaXJzdCwgYmVmb3JlICRwX2FkZF9kaXIgaXMgYWRkZWQ
uCiAgLy8gT3B0aW9ucyA6CiAgLy8gICBQQ0xaSVBfT1BUX0FERF9QQVRIIDoKICAvLyAgIFBDTFpJUF9PUF
RfUkVNT1ZFX1BBVEggOgogIC8vICAgUENMWklQX09QVF9SRU1PVkVfQUxMX1BBVEggOgogIC8vICAgUENMW
klQX09QVF9DT01NRU5UIDoKICAvLyAgIFBDTFpJUF9PUFRfQUREX0NPTU1FTlQgOgogIC8vICAgUENMWklQ
X09QVF9QUkVQRU5EX0NPTU1FTlQgOgogIC8vICAgUENMWklQX0NCX1BSRV9BREQgOgogIC8vICAgUENMWkl
QX0NCX1BPU1RfQUREIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAgIDAgb24gZmFpbHVyZSwKICAvLy
AgIFRoZSBsaXN0IG9mIHRoZSBhZGRlZCBmaWxlcywgd2l0aCBhIHN0YXR1cyBvZiB0aGUgYWRkIGFjdGlvb
i4KICAvLyAgIChzZWUgUGNsWmlwOjpsaXN0Q29udGVudCgpIGZvciBsaXN0IGVudHJ5IGZvcm1hdCkKICAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIGFkZCgkcF9maWxlbGlzdCkKICB7CiAgICAkdl9yZX
N1bHQ9MTsKCiAgICAvLyAtLS0tLSBSZXNldCB0aGUgZXJyb3IgaGFuZGxlcgogICAgJHRoaXMtPnByaXZFc
nJvclJlc2V0KCk7CgogICAgLy8gLS0tLS0gU2V0IGRlZmF1bHQgdmFsdWVzCiAgICAkdl9vcHRpb25zID0g
YXJyYXkoKTsKICAgICR2X29wdGlvbnNbUENMWklQX09QVF9OT19DT01QUkVTU0lPTl0gPSBGQUxTRTsKCiA
gICAvLyAtLS0tLSBMb29rIGZvciB2YXJpYWJsZSBvcHRpb25zIGFyZ3VtZW50cwogICAgJHZfc2l6ZSA9IG
Z1bmNfbnVtX2FyZ3MoKTsKCiAgICAvLyAtLS0tLSBMb29rIGZvciBhcmd1bWVudHMKICAgIGlmICgkdl9za
XplID4gMSkgewogICAgICAvLyAtLS0tLSBHZXQgdGhlIGFyZ3VtZW50cwogICAgICAkdl9hcmdfbGlzdCA9
IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgIC8vIC0tLS0tIFJlbW92ZSBmb3JtIHRoZSBvcHRpb25zIGxpc3Q
gdGhlIGZpcnN0IGFyZ3VtZW50CiAgICAgIGFycmF5X3NoaWZ0KCR2X2FyZ19saXN0KTsKICAgICAgJHZfc2
l6ZS0tOwoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZmlyc3QgYXJnCiAgICAgIGlmICgoaXNfaW50ZWdlc
igkdl9hcmdfbGlzdFswXSkpICYmICgkdl9hcmdfbGlzdFswXSA+IDc3MDAwKSkgewoKICAgICAgICAvLyAt
LS0tLSBQYXJzZSB0aGUgb3B0aW9ucwogICAgICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2UGFyc2VPcHR
pb25zKCR2X2FyZ19saXN0LCAkdl9zaXplLCAkdl9vcHRpb25zLAogICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgIGFycmF5IChQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIID0+ICdvcHRpb25hb
CcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9P
UFRfUkVNT1ZFX0FMTF9QQVRIID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfQUREX1BBVEggPT4gJ29wdGlvbmFsJywKICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX0NCX1BSRV9BR
EQgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgUENMWklQX0NCX1BPU1RfQUREID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfTk9fQ09NUFJFU1NJT04gPT4gJ29wdG
lvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMW
klQX09QVF9DT01NRU5UID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfQUREX0NPTU1FTlQgPT4gJ29wdGlvbmFsJywKICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9QUkVQRU
5EX0NPTU1FTlQgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEID0+ICdvcHRpb25hbCcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfVEV
NUF9GSUxFX09OID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgIFBDTFpJUF9PUFRfVEVNUF9GSUxFX09GRiA9PiAnb3B0aW9uYWwnCiAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLCBQQ0xaSVBfT1BUX0NSWVBU
ID0+ICdvcHRpb25hbCcKCQkJCQkJCQkJCQkJICAgKSk7CiAgICAgICAgaWYgKCR2X3Jlc3VsdCAhPSAxKSB
7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgZm
9yIDIgYXJncwogICAgICAvLyBIZXJlIHdlIG5lZWQgdG8gc3VwcG9ydCB0aGUgZmlyc3QgaGlzdG9yaWMgc
3lub3BzaXMgb2YgdGhlCiAgICAgIC8vIG1ldGhvZC4KICAgICAgZWxzZSB7CgogICAgICAgIC8vIC0tLS0t
IEdldCB0aGUgZmlyc3QgYXJndW1lbnQKICAgICAgICAkdl9vcHRpb25zW1BDTFpJUF9PUFRfQUREX1BBVEh
dID0gJHZfYWRkX3BhdGggPSAkdl9hcmdfbGlzdFswXTsKCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgdG
hlIG9wdGlvbmFsIHNlY29uZCBhcmd1bWVudAogICAgICAgIGlmICgkdl9zaXplID09IDIpIHsKICAgICAgI
CAgICR2X29wdGlvbnNbUENMWklQX09QVF9SRU1PVkVfUEFUSF0gPSAkdl9hcmdfbGlzdFsxXTsKICAgICAg
ICB9CiAgICAgICAgZWxzZSBpZiAoJHZfc2l6ZSA+IDIpIHsKICAgICAgICAgIC8vIC0tLS0tIEVycm9yIGx
vZwogICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUi
wgIkludmFsaWQgbnVtYmVyIC8gdHlwZSBvZiBhcmd1bWVudHMiKTsKCiAgICAgICAgICAvLyAtLS0tLSBSZ
XR1cm4KICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0t
IExvb2sgZm9yIGRlZmF1bHQgb3B0aW9uIHZhbHVlcwogICAgJHRoaXMtPnByaXZPcHRpb25EZWZhdWx0VGh
yZXNob2xkKCR2X29wdGlvbnMpOwoKICAgIC8vIC0tLS0tIEluaXQKICAgICR2X3N0cmluZ19saXN0ID0gYX
JyYXkoKTsKICAgICR2X2F0dF9saXN0ID0gYXJyYXkoKTsKICAgICR2X2ZpbGVkZXNjcl9saXN0ID0gYXJyY
XkoKTsKICAgICRwX3Jlc3VsdF9saXN0ID0gYXJyYXkoKTsKCiAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSAk
cF9maWxlbGlzdCBpcyByZWFsbHkgYW4gYXJyYXkKICAgIGlmIChpc19hcnJheSgkcF9maWxlbGlzdCkpIHs
KCiAgICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlIGZpcnN0IGVsZW1lbnQgaXMgYWxzbyBhbiBhcnJheQogIC
AgICAvLyAgICAgICBUaGlzIHdpbGwgbWVhbiB0aGF0IHRoaXMgaXMgYSBmaWxlIGRlc2NyaXB0aW9uIGVud
HJ5CiAgICAgIGlmIChpc3NldCgkcF9maWxlbGlzdFswXSkgJiYgaXNfYXJyYXkoJHBfZmlsZWxpc3RbMF0p
KSB7CiAgICAgICAgJHZfYXR0X2xpc3QgPSAkcF9maWxlbGlzdDsKICAgICAgfQoKICAgICAgLy8gLS0tLS0
gVGhlIGxpc3QgaXMgYSBsaXN0IG9mIHN0cmluZyBuYW1lcwogICAgICBlbHNlIHsKICAgICAgICAkdl9zdH
JpbmdfbGlzdCA9ICRwX2ZpbGVsaXN0OwogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gTG9vayBpZiB0a
GUgJHBfZmlsZWxpc3QgaXMgYSBzdHJpbmcKICAgIGVsc2UgaWYgKGlzX3N0cmluZygkcF9maWxlbGlzdCkp
IHsKICAgICAgLy8gLS0tLS0gQ3JlYXRlIGEgbGlzdCBmcm9tIHRoZSBzdHJpbmcKICAgICAgJHZfc3RyaW5
nX2xpc3QgPSBleHBsb2RlKFBDTFpJUF9TRVBBUkFUT1IsICRwX2ZpbGVsaXN0KTsKICAgIH0KCiAgICAvLy
AtLS0tLSBJbnZhbGlkIHZhcmlhYmxlIHR5cGUgZm9yICRwX2ZpbGVsaXN0CiAgICBlbHNlIHsKICAgICAgU
GNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiwgIkludmFsaWQgdmFy
aWFibGUgdHlwZSAnIi5nZXR0eXBlKCRwX2ZpbGVsaXN0KS4iJyBmb3IgcF9maWxlbGlzdCIpOwogICAgICB
yZXR1cm4gMDsKICAgIH0KCiAgICAvLyAtLS0tLSBSZWZvcm1hdCB0aGUgc3RyaW5nIGxpc3QKICAgIGlmIC
hzaXplb2YoJHZfc3RyaW5nX2xpc3QpICE9IDApIHsKICAgICAgZm9yZWFjaCAoJHZfc3RyaW5nX2xpc3QgY
XMgJHZfc3RyaW5nKSB7CiAgICAgICAgJHZfYXR0X2xpc3RbXVtQQ0xaSVBfQVRUX0ZJTEVfTkFNRV0gPSAk
dl9zdHJpbmc7CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBGb3IgZWFjaCBmaWxlIGluIHRoZSBsaXN
0IGNoZWNrIHRoZSBhdHRyaWJ1dGVzCiAgICAkdl9zdXBwb3J0ZWRfYXR0cmlidXRlcwogICAgPSBhcnJheS
AoIFBDTFpJUF9BVFRfRklMRV9OQU1FID0+ICdtYW5kYXRvcnknCiAgICAgICAgICAgICAsUENMWklQX0FUV
F9GSUxFX05FV19TSE9SVF9OQU1FID0+ICdvcHRpb25hbCcKICAgICAgICAgICAgICxQQ0xaSVBfQVRUX0ZJ
TEVfTkVXX0ZVTExfTkFNRSA9PiAnb3B0aW9uYWwnCiAgICAgICAgICAgICAsUENMWklQX0FUVF9GSUxFX01
USU1FID0+ICdvcHRpb25hbCcKICAgICAgICAgICAgICxQQ0xaSVBfQVRUX0ZJTEVfQ09OVEVOVCA9PiAnb3
B0aW9uYWwnCiAgICAgICAgICAgICAsUENMWklQX
0FUVF9GSUxFX0NPTU1FTlQgPT4gJ29wdGlvbmFsJwoJCQkJCQkpOwogICAgZm9yZWFjaCAoJHZfYXR0X2xp
c3QgYXMgJHZfZW50cnkpIHsKICAgICAgJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZGaWxlRGVzY3JQYXJzZUF
0dCgkdl9lbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdl
9maWxlZGVzY3JfbGlzdFtdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICR2X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JHZfc3VwcG9ydGVkX2F0dHJpYnV0ZXMpOwogICAgICBpZiAoJHZfcmVzdWx0ICE9IDEpIHsKICAgICAgICB
yZXR1cm4gMDsKICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIEV4cGFuZCB0aGUgZmlsZWxpc3QgKGV4cG
FuZCBkaXJlY3RvcmllcykKICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2RmlsZURlc2NyRXhwYW5kKCR2X
2ZpbGVkZXNjcl9saXN0LCAkdl9vcHRpb25zKTsKICAgIGlmICgkdl9yZXN1bHQgIT0gMSkgewogICAgICBy
ZXR1cm4gMDsKICAgIH0KCiAgICAvLyAtLS0tLSBDYWxsIHRoZSBjcmVhdGUgZmN0CiAgICAkdl9yZXN1bHQ
gPSAkdGhpcy0+cHJpdkFkZCgkdl9maWxlZGVzY3JfbGlzdCwgJHBfcmVzdWx0X2xpc3QsICR2X29wdGlvbn
MpOwogICAgaWYgKCR2X3Jlc3VsdCAhPSAxKSB7CiAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIC0tL
S0tIFJldHVybgogICAgcmV0dXJuICRwX3Jlc3VsdF9saXN0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogbGlzdENvbnRlbnQoKQogIC8vI
ERlc2NyaXB0aW9uIDoKICAvLyAgIFRoaXMgcHVibGljIG1ldGhvZCwgZ2l2ZXMgdGhlIGxpc3Qgb2YgdGhl
IGZpbGVzIGFuZCBkaXJlY3Rvcmllcywgd2l0aCB0aGVpcgogIC8vICAgcHJvcGVydGllcy4KICAvLyAgIFR
oZSBwcm9wZXJ0aWVzIG9mIGVhY2ggZW50cmllcyBpbiB0aGUgbGlzdCBhcmUgKHVzZWQgYWxzbyBpbiBvdG
hlciBmdW5jdGlvbnMpIDoKICAvLyAgICAgZmlsZW5hbWUgOiBOYW1lIG9mIHRoZSBmaWxlLiBGb3IgYSBjc
mVhdGUgb3IgYWRkIGFjdGlvbiBpdCBpcyB0aGUgZmlsZW5hbWUKICAvLyAgICAgICAgICAgICAgICBnaXZl
biBieSB0aGUgdXNlci4gRm9yIGFuIGV4dHJhY3QgZnVuY3Rpb24gaXQgaXMgdGhlIGZpbGVuYW1lCiAgLy8
gICAgICAgICAgICAgICAgb2YgdGhlIGV4dHJhY3RlZCBmaWxlLgogIC8vICAgICBzdG9yZWRfZmlsZW5hbW
UgOiBOYW1lIG9mIHRoZSBmaWxlIC8gZGlyZWN0b3J5IHN0b3JlZCBpbiB0aGUgYXJjaGl2ZS4KICAvLyAgI
CAgc2l6ZSA6IFNpemUgb2YgdGhlIHN0b3JlZCBmaWxlLgogIC8vICAgICBjb21wcmVzc2VkX3NpemUgOiBT
aXplIG9mIHRoZSBmaWxlJ3MgZGF0YSBjb21wcmVzc2VkIGluIHRoZSBhcmNoaXZlCiAgLy8gICAgICAgICA
gICAgICAgICAgICAgICh3aXRob3V0IHRoZSBoZWFkZXJzIG92ZXJoZWFkKQogIC8vICAgICBtdGltZSA6IE
xhc3Qga25vd24gbW9kaWZpY2F0aW9uIGRhdGUgb2YgdGhlIGZpbGUgKFVOSVggdGltZXN0YW1wKQogIC8vI
CAgICBjb21tZW50IDogQ29tbWVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGZpbGUKICAvLyAgICAgZm9sZGVy
IDogdHJ1ZSB8IGZhbHNlCiAgLy8gICAgIGluZGV4IDogaW5kZXggb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2h
pdmUKICAvLyAgICAgc3RhdHVzIDogc3RhdHVzIG9mIHRoZSBhY3Rpb24gKGRlcGVuZGluZyBvZiB0aGUgYW
N0aW9uKSA6CiAgLy8gICAgICAgICAgICAgIFZhbHVlcyBhcmUgOgogIC8vICAgICAgICAgICAgICAgIG9rI
DogT0sgIQogIC8vICAgICAgICAgICAgICAgIGZpbHRlcmVkIDogdGhlIGZpbGUgLyBkaXIgaXMgbm90IGV4
dHJhY3RlZCAoZmlsdGVyZWQgYnkgdXNlcikKICAvLyAgICAgICAgICAgICAgICBhbHJlYWR5X2FfZGlyZWN
0b3J5IDogdGhlIGZpbGUgY2FuIG5vdCBiZSBleHRyYWN0ZWQgYmVjYXVzZSBhCiAgLy8gICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSB3aXRoIHRoZSBzYW1lIG5hbWUgYWxyZWFke
SBleGlzdHMKICAvLyAgICAgICAgICAgICAgICB3cml0ZV9wcm90ZWN0ZWQgOiB0aGUgZmlsZSBjYW4gbm90
IGJlIGV4dHJhY3RlZCBiZWNhdXNlIGEgZmlsZQogIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgIHdpdGggdGhlIHNhbWUgbmFtZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXMKICAvLyAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICB3cml0ZSBwcm90ZWN0ZWQKICAvLyAgICAgICAgICAgICAgICBuZXdlc
l9leGlzdCA6IHRoZSBmaWxlIHdhcyBub3QgZXh0cmFjdGVkIGJlY2F1c2UgYSBuZXdlciBmaWxlIGV4aXN0
cwogIC8vICAgICAgICAgICAgICAgIHBhdGhfY3JlYXRpb25fZmFpbCA6IHRoZSBmaWxlIGlzIG5vdCBleHR
yYWN0ZWQgYmVjYXVzZSB0aGUgZm9sZGVyCiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgZG9lcyBub3QgZXhpc3QgYW5kIGNhbiBub3QgYmUgY3JlYXRlZAogIC8vICAgICAgICAgICAgICAgI
HdyaXRlX2Vycm9yIDogdGhlIGZpbGUgd2FzIG5vdCBleHRyYWN0ZWQgYmVjYXVzZSB0aGVyZSB3YXMgYQog
IC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3Igd2hpbGUgd3JpdGluZyB0aGUgZmlsZQo
gIC8vICAgICAgICAgICAgICAgIHJlYWRfZXJyb3IgOiB0aGUgZmlsZSB3YXMgbm90IGV4dHJhY3RlZCBiZW
NhdXNlIHRoZXJlIHdhcyBhIGVycm9yCiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlI
HJlYWRpbmcgdGhlIGZpbGUKICAvLyAgICAgICAgICAgICAgICBpbnZhbGlkX2hlYWRlciA6IHRoZSBmaWxl
IHdhcyBub3QgZXh0cmFjdGVkIGJlY2F1c2Ugb2YgYW4gYXJjaGl2ZQogIC8vICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgZm9ybWF0IGVycm9yIChiYWQgZmlsZSBoZWFkZXIpCiAgLy8gICBOb3RlIHRoYX
QgZWFjaCB0aW1lIGEgbWV0aG9kIGNhbiBjb250aW51ZSBvcGVyYXRpbmcgd2hlbiB0aGVyZQogIC8vICAga
XMgYW4gYWN0aW9uIGVycm9yIG9uIGEgZmlsZSwgdGhlIGVycm9yIGlzIG9ubHkgbG9nZ2VkIGluIHRoZSBm
aWxlIHN0YXR1cy4KICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAgIDAgb24gYW4gdW5yZWNvdmVyYWJsZSB
mYWlsdXJlLAogIC8vICAgVGhlIGxpc3Qgb2YgdGhlIGZpbGVzIGluIHRoZSBhcmNoaXZlLgogIC8vIC0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gbGlzdENvbnRlbnQoKQogIHsKICAgICR2X3Jlc3VsdD0xOwoK
ICAgIC8vIC0tLS0tIFJlc2V0IHRoZSBlcnJvciBoYW5kbGVyCiAgICAkdGhpcy0+cHJpdkVycm9yUmVzZXQ
oKTsKCiAgICAvLyAtLS0tLSBDaGVjayBhcmNoaXZlCiAgICBpZiAoISR0aGlzLT5wcml2Q2hlY2tGb3JtYX
QoKSkgewogICAgICByZXR1cm4oMCk7CiAgICB9CgogICAgLy8gLS0tLS0gQ2FsbCB0aGUgZXh0cmFjdGluZ
yBmY3QKICAgICRwX2xpc3QgPSBhcnJheSgpOwogICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkxp
c3QoJHBfbGlzdCkpICE9IDEpCiAgICB7CiAgICAgIHVuc2V0KCRwX2xpc3QpOwogICAgICByZXR1cm4oMCk
7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHBfbGlzdDsKICB9CiAgLy8gLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6CiAgLy8gICB
leHRyYWN0KCRwX3BhdGg9Ii4vIiwgJHBfcmVtb3ZlX3BhdGg9IiIpCiAgLy8gICBleHRyYWN0KFskcF9vcH
Rpb24sICRwX29wdGlvbl92YWx1ZSwgLi4uXSkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gICBUaGlzIG1ld
GhvZCBzdXBwb3J0cyB0d28gc3lub3BzaXMuIFRoZSBmaXJzdCBvbmUgaXMgaGlzdG9yaWNhbC4KICAvLyAg
IFRoaXMgbWV0aG9kIGV4dHJhY3QgYWxsIHRoZSBmaWxlcyAvIGRpcmVjdG9yaWVzIGZyb20gdGhlIGFyY2h
pdmUgdG8gdGhlCiAgLy8gICBmb2xkZXIgaW5kaWNhdGVkIGluICRwX3BhdGguCiAgLy8gICBJZiB5b3Ugd2
FudCB0byBpZ25vcmUgdGhlICdyb290JyBwYXJ0IG9mIHBhdGggb2YgdGhlIG1lbW9yaXplZCBmaWxlcwogI
C8vICAgeW91IGNhbiBpbmRpY2F0ZSB0aGlzIGluIHRoZSBvcHRpb25hbCAkcF9yZW1vdmVfcGF0aCBwYXJh
bWV0ZXIuCiAgLy8gICBCeSBkZWZhdWx0LCBpZiBhIG5ld2VyIGZpbGUgd2l0aCB0aGUgc2FtZSBuYW1lIGF
scmVhZHkgZXhpc3RzLCB0aGUKICAvLyAgIGZpbGUgaXMgbm90IGV4dHJhY3RlZC4KICAvLwogIC8vICAgSW
YgYm90aCBQQ0xaSVBfT1BUX1BBVEggYW5kIFBDTFpJUF9PUFRfQUREX1BBVEggYW9wdGlvbnMKICAvLyAgI
GFyZSB1c2VkLCB0aGUgcGF0aCBpbmRpY2F0ZWQgaW4gUENMWklQX09QVF9BRERfUEFUSCBpcyBhcHBlbmQK
ICAvLyAgIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGggdmFsdWUgb2YgUENMWklQX09QVF9QQVRILgogIC8vIFB
hcmFtZXRlcnMgOgogIC8vICAgJHBfcGF0aCA6IFBhdGggd2hlcmUgdGhlIGZpbGVzIGFuZCBkaXJlY3Rvcm
llcyBhcmUgdG8gYmUgZXh0cmFjdGVkCiAgLy8gICAkcF9yZW1vdmVfcGF0aCA6IEZpcnN0IHBhcnQgKCdyb
290JyBwYXJ0KSBvZiB0aGUgbWVtb3JpemVkIHBhdGgKICAvLyAgICAgICAgICAgICAgICAgICAgKGlmIGFu
eSBzaW1pbGFyKSB0byByZW1vdmUgd2hpbGUgZXh0cmFjdGluZy4KICAvLyBPcHRpb25zIDoKICAvLyAgIFB
DTFpJUF9PUFRfUEFUSCA6CiAgLy8gICBQQ0xaSVBfT1BUX0FERF9QQVRIIDoKICAvLyAgIFBDTFpJUF9PUF
RfUkVNT1ZFX1BBVEggOgogIC8vICAgUENMWklQX09QVF9SRU1PVkVfQUxMX1BBVEggOgogIC8vICAgUENMW
klQX0NCX1BSRV9FWFRSQUNUIDoKICAvLyAgIFBDTFpJUF9DQl9QT1NUX0VYVFJBQ1QgOgogIC8vIFJldHVy
biBWYWx1ZXMgOgogIC8vICAgMCBvciBhIG5lZ2F0aXZlIHZhbHVlIG9uIGZhaWx1cmUsCiAgLy8gICBUaGU
gbGlzdCBvZiB0aGUgZXh0cmFjdGVkIGZpbGVzLCB3aXRoIGEgc3RhdHVzIG9mIHRoZSBhY3Rpb24uCiAgLy
8gICAoc2VlIFBjbFppcDo6bGlzdENvbnRlbnQoKSBmb3IgbGlzdCBlbnRyeSBmb3JtYXQpCiAgLy8gLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBleHRyYWN0KCkKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICA
vLyAtLS0tLSBSZXNldCB0aGUgZXJyb3IgaGFuZGxlcgogICAgJHRoaXMtPnByaXZFcnJvclJlc2V0KCk7Cg
ogICAgLy8gLS0tLS0gQ2hlY2sgYXJjaGl2ZQogICAgaWYgKCEkdGhpcy0+cHJpdkNoZWNrRm9ybWF0KCkpI
HsKICAgICAgcmV0dXJuKDApOwogICAgfQoKICAgIC8vIC0tLS0tIFNldCBkZWZhdWx0IHZhbHVlcwogICAg
JHZfb3B0aW9ucyA9IGFycmF5KCk7Ci8vICAgICR2X3BhdGggPSAiLi8iOwogICAgJHZfcGF0aCA9ICcnOwo
gICAgJHZfcmVtb3ZlX3BhdGggPSAiIjsKICAgICR2X3JlbW92ZV9hbGxfcGF0aCA9IGZhbHNlOwoKICAgIC
8vIC0tLS0tIExvb2sgZm9yIHZhcmlhYmxlIG9wdGlvbnMgYXJndW1lbnRzCiAgICAkdl9zaXplID0gZnVuY
19udW1fYXJncygpOwoKICAgIC8vIC0tLS0tIERlZmF1bHQgdmFsdWVzIGZvciBvcHRpb24KICAgICR2X29w
dGlvbnNbUENMWklQX09QVF9FWFRSQUNUX0FTX1NUUklOR10gPSBGQUxTRTsKCiAgICAvLyAtLS0tLSBMb29
rIGZvciBhcmd1bWVudHMKICAgIGlmICgkdl9zaXplID4gMCkgewogICAgICAvLyAtLS0tLSBHZXQgdGhlIG
FyZ3VtZW50cwogICAgICAkdl9hcmdfbGlzdCA9IGZ1bmNfZ2V0X2FyZ3MoKTsKCiAgICAgIC8vIC0tLS0tI
Exvb2sgZm9yIGZpcnN0IGFyZwogICAgICBpZiAoKGlzX2ludGVnZXIoJHZfYXJnX2xpc3RbMF0pKSAmJiAo
JHZfYXJnX2xpc3RbMF0gPiA3NzAwMCkpIHsKCiAgICAgICAgLy8gLS0tLS0gUGFyc2UgdGhlIG9wdGlvbnM
KICAgICAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdlBhcnNlT3B0aW9ucygkdl9hcmdfbGlzdCwgJHZfc2
l6ZSwgJHZfb3B0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc
nJheSAoUENMWklQX09QVF9QQVRIID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfUkVNT1ZFX1BBVEggPT4gJ29wdGlvbmFsJyw
KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF
9SRU1PVkVfQUxMX1BBVEggPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9BRERfUEFUSCA9PiAnb3B0aW9uYWwnLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfQ0JfUFJFX0VYVFJ
BQ1QgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgUENMWklQX0NCX1BPU1RfRVhUUkFDVCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX1NFVF9DSE1PRCA9PiAnb3B0
aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0x
aSVBfT1BUX0JZX05BTUUgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9CWV9FUkVHID0+ICdvcHRpb25hbCcsCiAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfQllfUFJFRyA9
PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICBQQ0xaSVBfT1BUX0JZX0lOREVYID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfRVhUUkFDVF9BU19TVFJJTkcgPT4gJ29wd
GlvbmFsJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9FWFRSQUNUX0lOX09VVFBVVCA9PiA
nb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
BQQ0xaSVBfT1BUX1JFUExBQ0VfTkVXRVIgPT4gJ29wdGlvbmFsJwogICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAsUENMWklQX09QVF9TVE9QX09OX0VSUk9SID0+ICdvcHRp
b25hbCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLFBDTFp
JUF9PUFRfRVhUUkFDVF9ESVJfUkVTVFJJQ1RJT04gPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT
0xEID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBDTFpJUF9PUFRfVEVNUF9GSUxFX09OID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfVEVNUF9GSUxFX09GRiA9Pi
Anb3B0aW9uYWwnCgkJCQkJCQkJCQkJCSAgICApKTsKICAgICAgICBpZiAoJHZfcmVzdWx0ICE9IDEpIHsKI
CAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0gU2V0IHRoZSBhcmd1bWVu
dHMKICAgICAgICBpZiAoaXNzZXQoJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1BBVEhdKSkgewogICAgICAgICA
gJHZfcGF0aCA9ICR2X29wdGlvbnNbUENMWklQX09QVF9QQVRIXTsKICAgICAgICB9CiAgICAgICAgaWYgKG
lzc2V0KCR2X29wdGlvbnNbUENMWklQX09QVF9SRU1PVkVfUEFUSF0pKSB7CiAgICAgICAgICAkdl9yZW1vd
mVfcGF0aCA9ICR2X29wdGlvbnNbUENMWklQX09QVF9SRU1PVkVfUEFUSF07CiAgICAgICAgfQogICAgICAg
IGlmIChpc3NldCgkdl9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQVRIXSkpIHsKICAgICAgICA
gICR2X3JlbW92ZV9hbGxfcGF0aCA9ICR2X29wdGlvbnNbUENMWklQX09QVF9SRU1PVkVfQUxMX1BBVEhdOw
ogICAgICAgIH0KICAgICAgICBpZiAoaXNzZXQoJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX0FERF9QQVRIXSkpI
HsKICAgICAgICAgIC8vIC0tLS0tIENoZWNrIGZvciAnLycgaW4gbGFzdCBwYXRoIGNoYXIKICAgICAgICAg
IGlmICgoc3RybGVuKCR2X3BhdGgpID4gMCkgJiYgKHN1YnN0cigkdl9wYXRoLCAtMSkgIT0gJy8nKSkgewo
gICAgICAgICAgICAkdl9wYXRoIC49ICcvJzsKICAgICAgICAgIH0KICAgICAgICAgICR2X3BhdGggLj0gJH
Zfb3B0aW9uc1tQQ0xaSVBfT1BUX0FERF9QQVRIXTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIC0tL
S0tIExvb2sgZm9yIDIgYXJncwogICAgICAvLyBIZXJlIHdlIG5lZWQgdG8gc3VwcG9ydCB0aGUgZmlyc3Qg
aGlzdG9yaWMgc3lub3BzaXMgb2YgdGhlCiAgICAgIC8vIG1ldGhvZC4KICAgICAgZWxzZSB7CgogICAgICA
gIC8vIC0tLS0tIEdldCB0aGUgZmlyc3QgYXJndW1lbnQKICAgICAgICAkdl9wYXRoID0gJHZfYXJnX2xpc3
RbMF07CgogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHRoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1lbnQKI
CAgICAgICBpZiAoJHZfc2l6ZSA9PSAyKSB7CiAgICAgICAgICAkdl9yZW1vdmVfcGF0aCA9ICR2X2FyZ19s
aXN0WzFdOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICgkdl9zaXplID4gMikgewogICAgICAgICAgLy8
gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVk
FMSURfUEFSQU1FVEVSLCAiSW52YWxpZCBudW1iZXIgLyB0eXBlIG9mIGFyZ3VtZW50cyIpOwoKICAgICAgI
CAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICB9CiAgICB9
CgogICAgLy8gLS0tLS0gTG9vayBmb3IgZGVmYXVsdCBvcHRpb24gdmFsdWVzCiAgICAkdGhpcy0+cHJpdk9
wdGlvbkRlZmF1bHRUaHJlc2hvbGQoJHZfb3B0aW9ucyk7CgogICAgLy8gLS0tLS0gVHJhY2UKCiAgICAvLy
AtLS0tLSBDYWxsIHRoZSBleHRyYWN0aW5nIGZjdAogICAgJHBfbGlzdCA9IGFycmF5KCk7CiAgICAkdl9yZ
XN1bHQgPSAkdGhpcy0+cHJpdkV4dHJhY3RCeVJ1bGUoJHBfbGlzdCwgJHZfcGF0aCwgJHZfcmVtb3ZlX3Bh
dGgsCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHZfcmVtb3ZlX2FsbF9wYXRoLCA
kdl9vcHRpb25zKTsKICAgIGlmICgkdl9yZXN1bHQgPCAxKSB7CiAgICAgIHVuc2V0KCRwX2xpc3QpOwogIC
AgICByZXR1cm4oMCk7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHBfbGlzdDsKI
CB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3
Rpb24gOgogIC8vICAgZXh0cmFjdEJ5SW5kZXgoJHBfaW5kZXgsICRwX3BhdGg9Ii4vIiwgJHBfcmVtb3ZlX
3BhdGg9IiIpCiAgLy8gICBleHRyYWN0QnlJbmRleCgkcF9pbmRleCwgWyRwX29wdGlvbiwgJHBfb3B0aW9u
X3ZhbHVlLCAuLi5dKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRoaXMgbWV0aG9kIHN1cHBvcnRzIHR
3byBzeW5vcHNpcy4gVGhlIGZpcnN0IG9uZSBpcyBoaXN0b3JpY2FsLgogIC8vICAgVGhpcyBtZXRob2QgaX
MgZG9pbmcgYSBwYXJ0aWFsIGV4dHJhY3Qgb2YgdGhlIGFyY2hpdmUuCiAgLy8gICBUaGUgZXh0cmFjdGVkI
GZpbGVzIG9yIGZvbGRlcnMgYXJlIGlkZW50aWZpZWQgYnkgdGhlaXIgaW5kZXggaW4gdGhlCiAgLy8gICBh
cmNoaXZlIChmcm9tIDAgdG8gbikuCiAgLy8gICBOb3RlIHRoYXQgaWYgdGhlIGluZGV4IGlkZW50aWZ5IGE
gZm9sZGVyLCBvbmx5IHRoZSBmb2xkZXIgZW50cnkgaXMKICAvLyAgIGV4dHJhY3RlZCwgbm90IGFsbCB0aG
UgZmlsZXMgaW5jbHVkZWQgaW4gdGhlIGFyY2hpdmUuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICAkcF9pb
mRleCA6IEEgc2luZ2xlIGluZGV4IChpbnRlZ2VyKSBvciBhIHN0cmluZyBvZiBpbmRleGVzIG9mIGZpbGVz
IHRvCiAgLy8gICAgICAgICAgICAgIGV4dHJhY3QuIFRoZSBmb3JtIG9mIHRoZSBzdHJpbmcgaXMgIjAsNC0
2LDgtMTIiIHdpdGggb25seSBudW1iZXJzCiAgLy8gICAgICAgICAgICAgIGFuZCAnLScgZm9yIHJhbmdlIG
9yICcsJyB0byBzZXBhcmF0ZSByYW5nZXMuIE5vIHNwYWNlcyBvciAnOycKICAvLyAgICAgICAgICAgICAgY
XJlIGFsbG93ZWQuCiAgLy8gICAkcF9wYXRoIDogUGF0aCB3aGVyZSB0aGUgZmlsZXMgYW5kIGRpcmVjdG9y
aWVzIGFyZSB0byBiZSBleHRyYWN0ZWQKICAvLyAgICRwX3JlbW92ZV9wYXRoIDogRmlyc3QgcGFydCAoJ3J
vb3QnIHBhcnQpIG9mIHRoZSBtZW1vcml6ZWQgcGF0aAogIC8vICAgICAgICAgICAgICAgICAgICAoaWYgYW
55IHNpbWlsYXIpIHRvIHJlbW92ZSB3aGlsZSBleHRyYWN0aW5nLgogIC8vIE9wdGlvbnMgOgogIC8vICAgU
ENMWklQX09QVF9QQVRIIDoKICAvLyAgIFBDTFpJUF9PUFRfQUREX1BBVEggOgogIC8vICAgUENMWklQX09Q
VF9SRU1PVkVfUEFUSCA6CiAgLy8gICBQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUEFUSCA6CiAgLy8gICBQQ0x
aSVBfT1BUX0VYVFJBQ1RfQVNfU1RSSU5HIDogVGhlIGZpbGVzIGFyZSBleHRyYWN0ZWQgYXMgc3RyaW5ncy
BhbmQKICAvLyAgICAgbm90IGFzIGZpbGVzLgogIC8vICAgICBUaGUgcmVzdWx0aW5nIGNvbnRlbnQgaXMga
W4gYSBuZXcgZmllbGQgJ2NvbnRlbnQnIGluIHRoZSBmaWxlCiAgLy8gICAgIHN0cnVjdHVyZS4KICAvLyAg
ICAgVGhpcyBvcHRpb24gbXVzdCBiZSB1c2VkIGFsb25lIChhbnkgb3RoZXIgb3B0aW9ucyBhcmUgaWdub3J
lZCkuCiAgLy8gICBQQ0xaSVBfQ0JfUFJFX0VYVFJBQ1QgOgogIC8vICAgUENMWklQX0NCX1BPU1RfRVhUUk
FDVCA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gICAwIG9uIGZhaWx1cmUsCiAgLy8gICBUaGUgbGlzd
CBvZiB0aGUgZXh0cmFjdGVkIGZpbGVzLCB3aXRoIGEgc3RhdHVzIG9mIHRoZSBhY3Rpb24uCiAgLy8gICAo
c2VlIFBjbFppcDo6bGlzdENvbnRlbnQoKSBmb3IgbGlzdCBlbnRyeSBmb3JtYXQpCiAgLy8gLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0KICAvL2Z1bmN0aW9uIGV4dHJhY3RCeUluZGV4KCRwX2luZGV4LCBvcHRpb25zLi4uKQogI
GZ1bmN0aW9uIGV4dHJhY3RCeUluZGV4KCRwX2luZGV4KQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC8v
IC0tLS0tIFJlc2V0IHRoZSBlcnJvciBoYW5kbGVyCiAgICAkdGhpcy0+cHJpdkVycm9yUmVzZXQoKTsKCiA
gICAvLyAtLS0tLSBDaGVjayBhcmNoaXZlCiAgICBpZiAoISR0aGlzLT5wcml2Q2hlY2tGb3JtYXQoKSkgew
ogICAgICByZXR1cm4oMCk7CiAgICB9CgogICAgLy8gLS0tLS0gU2V0IGRlZmF1bHQgdmFsdWVzCiAgICAkd
l9vcHRpb25zID0gYXJyYXkoKTsKLy8gICAgJHZfcGF0aCA9ICIuLyI7CiAgICAkdl9wYXRoID0gJyc7CiAg
ICAkdl9yZW1vdmVfcGF0aCA9ICIiOwogICAgJHZfcmVtb3ZlX2FsbF9wYXRoID0gZmFsc2U7CgogICAgLy8
gLS0tLS0gTG9vayBmb3IgdmFyaWFibGUgb3B0aW9ucyBhcmd1bWVudHMKICAgICR2X3NpemUgPSBmdW5jX2
51bV9hcmdzKCk7CgogICAgLy8gLS0tLS0gRGVmYXVsdCB2YWx1ZXMgZm9yIG9wdGlvbgogICAgJHZfb3B0a
W9uc1tQQ0xaSVBfT1BUX0VYVFJBQ1RfQVNfU1RSSU5HXSA9IEZBTFNFOwoKICAgIC8vIC0tLS0tIExvb2sg
Zm9yIGFyZ3VtZW50cwogICAgaWYgKCR2X3NpemUgPiAxKSB7CiAgICAgIC8vIC0tLS0tIEdldCB0aGUgYXJ
ndW1lbnRzCiAgICAgICR2X2FyZ19saXN0ID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgLy8gLS0tLS0gUm
Vtb3ZlIGZvcm0gdGhlIG9wdGlvbnMgbGlzdCB0aGUgZmlyc3QgYXJndW1lbnQKICAgICAgYXJyYXlfc2hpZ
nQoJHZfYXJnX2xpc3QpOwogICAgICAkdl9zaXplLS07CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBmaXJz
dCBhcmcKICAgICAgaWYgKChpc19pbnRlZ2VyKCR2X2FyZ19saXN0WzBdKSkgJiYgKCR2X2FyZ19saXN0WzB
dID4gNzcwMDApKSB7CgogICAgICAgIC8vIC0tLS0tIFBhcnNlIHRoZSBvcHRpb25zCiAgICAgICAgJHZfcm
VzdWx0ID0gJHRoaXMtPnByaXZQYXJzZU9wdGlvbnMoJHZfYXJnX2xpc3QsICR2X3NpemUsICR2X29wdGlvb
nMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgKFBDTFpJUF9P
UFRfUEFUSCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICBQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQ
VRIID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFBDTFpJUF9PUFRfRVhUUkFDVF9BU19TVFJJTkcgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9BRERfUEFUSCA9Pi
Anb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CBQQ0xaSVBfQ0JfUFJFX0VYVFJBQ1QgPT4gJ29wdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX0NCX1BPU1RfRVhUUkFDVCA9PiAnb3B0aW9uYWw
nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfT1
BUX1NFVF9DSE1PRCA9PiAnb3B0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgICAgICAgICAgICAgICBQQ0xaSVBfT1BUX1JFUExBQ0VfTkVXRVIgPT4gJ29wdGlvbmFsJwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsUENMWklQX09QVF9TVE9QX09
OX0VSUk9SID0+ICdvcHRpb25hbCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgLFBDTFpJUF9PUFRfRVhUUkFDVF9ESVJfUkVTVFJJQ1RJT04gPT4gJ29wdGlvbmFsJywKI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9U
RU1QX0ZJTEVfVEhSRVNIT0xEID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfVEVNUF9GSUxFX09OID0+ICdvcHRpb25hbCcsCi
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9PUFRfV
EVNUF9GSUxFX09GRiA9PiAnb3B0aW9uYWwnCgkJCQkJCQkJCQkJCSAgICkpOwogICAgICAgIGlmICgkdl9y
ZXN1bHQgIT0gMSkgewogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICAvLyAtLS0tLSB
TZXQgdGhlIGFyZ3VtZW50cwogICAgICAgIGlmIChpc3NldCgkdl9vcHRpb25zW1BDTFpJUF9PUFRfUEFUSF
0pKSB7CiAgICAgICAgICAkdl9wYXRoID0gJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1BBVEhdOwogICAgICAgI
H0KICAgICAgICBpZiAoaXNzZXQoJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIXSkpIHsKICAg
ICAgICAgICR2X3JlbW92ZV9wYXRoID0gJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIXTsKICA
gICAgICB9CiAgICAgICAgaWYgKGlzc2V0KCR2X29wdGlvbnNbUENMWklQX09QVF9SRU1PVkVfQUxMX1BBVE
hdKSkgewogICAgICAgICAgJHZfcmVtb3ZlX2FsbF9wYXRoID0gJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFT
U9WRV9BTExfUEFUSF07CiAgICAgICAgfQogICAgICAgIGlmIChpc3NldCgkdl9vcHRpb25zW1BDTFpJUF9P
UFRfQUREX1BBVEhdKSkgewogICAgICAgICAgLy8gLS0tLS0gQ2hlY2sgZm9yICcvJyBpbiBsYXN0IHBhdGg
gY2hhcgogICAgICAgICAgaWYgKChzdHJsZW4oJHZfcGF0aCkgPiAwKSAmJiAoc3Vic3RyKCR2X3BhdGgsIC
0xKSAhPSAnLycpKSB7CiAgICAgICAgICAgICR2X3BhdGggLj0gJy8nOwogICAgICAgICAgfQogICAgICAgI
CAgJHZfcGF0aCAuPSAkdl9vcHRpb25zW1BDTFpJUF9PUFRfQUREX1BBVEhdOwogICAgICAgIH0KICAgICAg
ICBpZiAoIWlzc2V0KCR2X29wdGlvbnNbUENMWkl
QX09QVF9FWFRSQUNUX0FTX1NUUklOR10pKSB7CiAgICAgICAgICAkdl9vcHRpb25zW1BDTFpJUF9PUFRfRV
hUUkFDVF9BU19TVFJJTkddID0gRkFMU0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgIH0KI
CAgICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgMiBhcmdzCiAgICAgIC8vIEhlcmUgd2UgbmVlZCB0
byBzdXBwb3J0IHRoZSBmaXJzdCBoaXN0b3JpYyBzeW5vcHNpcyBvZiB0aGUKICAgICAgLy8gbWV0aG9kLgo
gICAgICBlbHNlIHsKCiAgICAgICAgLy8gLS0tLS0gR2V0IHRoZSBmaXJzdCBhcmd1bWVudAogICAgICAgIC
R2X3BhdGggPSAkdl9hcmdfbGlzdFswXTsKCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgdGhlIG9wdGlvb
mFsIHNlY29uZCBhcmd1bWVudAogICAgICAgIGlmICgkdl9zaXplID09IDIpIHsKICAgICAgICAgICR2X3Jl
bW92ZV9wYXRoID0gJHZfYXJnX2xpc3RbMV07CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKCR2X3NpemU
gPiAyKSB7CiAgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgIFBjbFppcDo6cHJpdkVycm
9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9QQVJBTUVURVIsICJJbnZhbGlkIG51bWJlciAvIHR5cGUgb2YgY
XJndW1lbnRzIik7CgogICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICByZXR1cm4gMDsKICAg
ICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBUcmFjZQoKICAgIC8vIC0tLS0tIFRyaWNrCiA
gICAvLyBIZXJlIEkgd2FudCB0byByZXVzZSBleHRyYWN0QnlSdWxlKCksIHNvIEkgbmVlZCB0byBwYXJzZS
B0aGUgJHBfaW5kZXgKICAgIC8vIHdpdGggcHJpdlBhcnNlT3B0aW9ucygpCiAgICAkdl9hcmdfdHJpY2sgP
SBhcnJheSAoUENMWklQX09QVF9CWV9JTkRFWCwgJHBfaW5kZXgpOwogICAgJHZfb3B0aW9uc190cmljayA9
IGFycmF5KCk7CiAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdlBhcnNlT3B0aW9ucygkdl9hcmdfdHJpY2s
sIHNpemVvZigkdl9hcmdfdHJpY2spLCAkdl9vcHRpb25zX3RyaWNrLAogICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgYXJyYXkgKFBDTFpJUF9PUFRfQllfSU5ERVggPT4gJ29wdGlvbmFsJyApK
TsKICAgIGlmICgkdl9yZXN1bHQgIT0gMSkgewogICAgICAgIHJldHVybiAwOwogICAgfQogICAgJHZfb3B0
aW9uc1tQQ0xaSVBfT1BUX0JZX0lOREVYXSA9ICR2X29wdGlvbnNfdHJpY2tbUENMWklQX09QVF9CWV9JTkR
FWF07CgogICAgLy8gLS0tLS0gTG9vayBmb3IgZGVmYXVsdCBvcHRpb24gdmFsdWVzCiAgICAkdGhpcy0+cH
Jpdk9wdGlvbkRlZmF1bHRUaHJlc2hvbGQoJHZfb3B0aW9ucyk7CgogICAgLy8gLS0tLS0gQ2FsbCB0aGUgZ
Xh0cmFjdGluZyBmY3QKICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZFeHRyYWN0QnlSdWxlKCRw
X2xpc3QsICR2X3BhdGgsICR2X3JlbW92ZV9wYXRoLCAkdl9yZW1vdmVfYWxsX3BhdGgsICR2X29wdGlvbnM
pKSA8IDEpIHsKICAgICAgICByZXR1cm4oMCk7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZX
R1cm4gJHBfbGlzdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0KICAvLyBGdW5jdGlvbiA6CiAgLy8gICBkZWxldGUoWyRwX29wdGlvbiwgJHBfb3B0aW9uX3ZhbHVlLC
AuLi5dKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRoaXMgbWV0aG9kIHJlbW92ZXMgZmlsZXMgZnJvb
SB0aGUgYXJjaGl2ZS4KICAvLyAgIElmIG5vIHBhcmFtZXRlcnMgYXJlIGdpdmVuLCB0aGVuIGFsbCB0aGUg
YXJjaGl2ZSBpcyBlbXB0aWVkLgogIC8vIFBhcmFtZXRlcnMgOgogIC8vICAgTm9uZSBvciBvcHRpb25hbCB
hcmd1bWVudHMuCiAgLy8gT3B0aW9ucyA6CiAgLy8gICBQQ0xaSVBfT1BUX0JZX0lOREVYIDoKICAvLyAgIF
BDTFpJUF9PUFRfQllfTkFNRSA6CiAgLy8gICBQQ0xaSVBfT1BUX0JZX0VSRUcgOgogIC8vICAgUENMWklQX
09QVF9CWV9QUkVHIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAgIDAgb24gZmFpbHVyZSwKICAvLyAg
IFRoZSBsaXN0IG9mIHRoZSBmaWxlcyB3aGljaCBhcmUgc3RpbGwgcHJlc2VudCBpbiB0aGUgYXJjaGl2ZS4
KICAvLyAgIChzZWUgUGNsWmlwOjpsaXN0Q29udGVudCgpIGZvciBsaXN0IGVudHJ5IGZvcm1hdCkKICAvLy
AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIGRlbGV0ZSgpCiAgewogICAgJHZfcmVzdWx0PTE7Cgog
ICAgLy8gLS0tLS0gUmVzZXQgdGhlIGVycm9yIGhhbmRsZXIKICAgICR0aGlzLT5wcml2RXJyb3JSZXNldCg
pOwoKICAgIC8vIC0tLS0tIENoZWNrIGFyY2hpdmUKICAgIGlmICghJHRoaXMtPnByaXZDaGVja0Zvcm1hdC
gpKSB7CiAgICAgIHJldHVybigwKTsKICAgIH0KCiAgICAvLyAtLS0tLSBTZXQgZGVmYXVsdCB2YWx1ZXMKI
CAgICR2X29wdGlvbnMgPSBhcnJheSgpOwoKICAgIC8vIC0tLS0tIExvb2sgZm9yIHZhcmlhYmxlIG9wdGlv
bnMgYXJndW1lbnRzCiAgICAkdl9zaXplID0gZnVuY19udW1fYXJncygpOwoKICAgIC8vIC0tLS0tIExvb2s
gZm9yIGFyZ3VtZW50cwogICAgaWYgKCR2X3NpemUgPiAwKSB7CiAgICAgIC8vIC0tLS0tIEdldCB0aGUgYX
JndW1lbnRzCiAgICAgICR2X2FyZ19saXN0ID0gZnVuY19nZXRfYXJncygpOwoKICAgICAgLy8gLS0tLS0gU
GFyc2UgdGhlIG9wdGlvbnMKICAgICAgJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZQYXJzZU9wdGlvbnMoJHZf
YXJnX2xpc3QsICR2X3NpemUsICR2X29wdGlvbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICBhcnJheSAoUENMWklQX09QVF9CWV9OQU1FID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09QVF9CWV9FUkVHID0+ICdvcHRpb
25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENMWklQX09Q
VF9CWV9QUkVHID0+ICdvcHRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
gICAgICAgICAgUENMWklQX09QVF9CWV9JTkRFWCA9PiAnb3B0aW9uYWwnICkpOwogICAgICBpZiAoJHZfcm
VzdWx0ICE9IDEpIHsKICAgICAgICAgIHJldHVybiAwOwogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gT
WFnaWMgcXVvdGVzIHRyaWNrCiAgICAkdGhpcy0+cHJpdkRpc2FibGVNYWdpY1F1b3RlcygpOwoKICAgIC8v
IC0tLS0tIENhbGwgdGhlIGRlbGV0ZSBmY3QKICAgICR2X2xpc3QgPSBhcnJheSgpOwogICAgaWYgKCgkdl9
yZXN1bHQgPSAkdGhpcy0+cHJpdkRlbGV0ZUJ5UnVsZSgkdl9saXN0LCAkdl9vcHRpb25zKSkgIT0gMSkgew
ogICAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKICAgICAgdW5zZXQoJHZfbGlzdCk7C
iAgICAgIHJldHVybigwKTsKICAgIH0KCiAgICAvLyAtLS0tLSBNYWdpYyBxdW90ZXMgdHJpY2sKICAgICR0
aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJ
uICR2X2xpc3Q7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
CiAgLy8gRnVuY3Rpb24gOiBkZWxldGVCeUluZGV4KCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gICAqKio
qKiBEZXByZWNhdGVkICoqKioqCiAgLy8gICBkZWxldGUoUENMWklQX09QVF9CWV9JTkRFWCwgJHBfaW5kZX
gpIHNob3VsZCBiZSBwcmVmZXJlZC4KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIGRlbGV0
ZUJ5SW5kZXgoJHBfaW5kZXgpCiAgewoKICAgICRwX2xpc3QgPSAkdGhpcy0+ZGVsZXRlKFBDTFpJUF9PUFR
fQllfSU5ERVgsICRwX2luZGV4KTsKCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkcF9saXN0Ow
ogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN
0aW9uIDogcHJvcGVydGllcygpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVGhpcyBtZXRob2QgZ2l2ZX
MgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGFyY2hpdmUuCiAgLy8gICBUaGUgcHJvcGVydGllcyBhcmUgOgogI
C8vICAgICBuYiA6IE51bWJlciBvZiBmaWxlcyBpbiB0aGUgYXJjaGl2ZQogIC8vICAgICBjb21tZW50IDog
Q29tbWVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGFyY2hpdmUgZmlsZQogIC8vICAgICBzdGF0dXMgOiBub3R
fZXhpc3QsIG9rCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICBOb25lCiAgLy8gUmV0dXJuIFZhbHVlcyA6Ci
AgLy8gICAwIG9uIGZhaWx1cmUsCiAgLy8gICBBbiBhcnJheSB3aXRoIHRoZSBhcmNoaXZlIHByb3BlcnRpZ
XMuCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcm9wZXJ0aWVzKCkKICB7CgogICAgLy8
gLS0tLS0gUmVzZXQgdGhlIGVycm9yIGhhbmRsZXIKICAgICR0aGlzLT5wcml2RXJyb3JSZXNldCgpOwoKIC
AgIC8vIC0tLS0tIE1hZ2ljIHF1b3RlcyB0cmljawogICAgJHRoaXMtPnByaXZEaXNhYmxlTWFnaWNRdW90Z
XMoKTsKCiAgICAvLyAtLS0tLSBDaGVjayBhcmNoaXZlCiAgICBpZiAoISR0aGlzLT5wcml2Q2hlY2tGb3Jt
YXQoKSkgewogICAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKICAgICAgcmV0dXJuKDA
pOwogICAgfQoKICAgIC8vIC0tLS0tIERlZmF1bHQgcHJvcGVydGllcwogICAgJHZfcHJvcCA9IGFycmF5KC
k7CiAgICAkdl9wcm9wWydjb21tZW50J10gPSAnJzsKICAgICR2X3Byb3BbJ25iJ10gPSAwOwogICAgJHZfc
HJvcFsnc3RhdHVzJ10gPSAnbm90X2V4aXN0JzsKCiAgICAvLyAtLS0tLSBMb29rIGlmIGZpbGUgZXhpc3Rz
CiAgICBpZiAoQGlzX2ZpbGUoJHRoaXMtPnppcG5hbWUpKQogICAgewogICAgICAvLyAtLS0tLSBPcGVuIHR
oZSB6aXAgZmlsZQogICAgICBpZiAoKCR0aGlzLT56aXBfZmQgPSBAZm9wZW4oJHRoaXMtPnppcG5hbWUsIC
dyYicpKSA9PSAwKQogICAgICB7CiAgICAgICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7C
gogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJ
UF9FUlJfUkVBRF9PUEVOX0ZBSUwsICdVbmFibGUgdG8gb3BlbiBhcmNoaXZlIFwnJy4kdGhpcy0+emlwbmF
tZS4nXCcgaW4gYmluYXJ5IHJlYWQgbW9kZScpOwoKICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgIC
ByZXR1cm4gMDsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgY2VudHJhbCBkaXJlY3Rvcnkga
W5mb3JtYXRpb25zCiAgICAgICR2X2NlbnRyYWxfZGlyID0gYXJyYXkoKTsKICAgICAgaWYgKCgkdl9yZXN1
bHQgPSAkdGhpcy0+cHJpdlJlYWRFbmRDZW50cmFsRGlyKCR2X2NlbnRyYWxfZGlyKSkgIT0gMSkKICAgICA
gewogICAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwogICAgICAgIHJldHVybiAwOw
ogICAgICB9CgogICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgemlwIGZpbGUKICAgICAgJHRoaXMtPnByaXZDb
G9zZUZkKCk7CgogICAgICAvLyAtLS0tLSBTZXQgdGhlIHVzZXIgYXR0cmlidXRlcwogICAgICAkdl9wcm9w
Wydjb21tZW50J10gPSAkdl9jZW50cmFsX2RpclsnY29tbWVudCddOwogICAgICAkdl9wcm9wWyduYiddID0
gJHZfY2VudHJhbF9kaXJbJ2VudHJpZXMnXTsKICAgICAgJHZfcHJvcFsnc3RhdHVzJ10gPSAnb2snOwogIC
AgfQoKICAgIC8vIC0tLS0tIE1hZ2ljIHF1b3RlcyB0cmljawogICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ
2ljUXVvdGVzKCk7CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcHJvcDsKICB9CiAgLy8g
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IGR1c
GxpY2F0ZSgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVGhpcyBtZXRob2QgY3JlYXRlcyBhbiBhcmNo
aXZlIGJ5IGNvcHlpbmcgdGhlIGNvbnRlbnQgb2YgYW4gb3RoZXIgb25lLiBJZgogIC8vICAgdGhlIGFyY2h
pdmUgYWxyZWFkeSBleGlzdCwgaXQgaXMgcmVwbGFjZWQgYnkgdGhlIG5ldyBvbmUgd2l0aG91dCBhbnkgd2
FybmluZy4KICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAgICRwX2FyY2hpdmUgOiBUaGUgZmlsZW5hbWUgb2YgY
SB2YWxpZCBhcmNoaXZlLCBvcgogIC8vICAgICAgICAgICAgICAgIGEgdmFsaWQgUGNsWmlwIG9iamVjdC4K
ICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAgIDEgb24gc3VjY2Vzcy4KICAvLyAgIDAgb3IgYSBuZWdhdGl
2ZSB2YWx1ZSBvbiBlcnJvciAoZXJyb3IgY29kZSkuCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jd
GlvbiBkdXBsaWNhdGUoJHBfYXJjaGl2ZSkKICB7CiAgICAkdl9yZXN1bHQgPSAxOwoKICAgIC8vIC0tLS0t
IFJlc2V0IHRoZSBlcnJvciBoYW5kbGVyCiAgICAkdGhpcy0+cHJpdkVycm9yUmVzZXQoKTsKCiAgICAvLyA
tLS0tLSBMb29rIGlmIHRoZSAkcF9hcmNoaXZlIGlzIGEgUGNsWmlwIG9iamVjdAogICAgaWYgKChpc19vYm
plY3QoJHBfYXJjaGl2ZSkpICYmIChnZXRfY2xhc3MoJHBfYXJjaGl2ZSkgPT0gJ3BjbHppcCcpKQogICAge
woKICAgICAgLy8gLS0tLS0gRHVwbGljYXRlIHRoZSBhcmNoaXZlCiAgICAgICR2X3Jlc3VsdCA9ICR0aGlz
LT5wcml2RHVwbGljYXRlKCRwX2FyY2hpdmUtPnppcG5hbWUpOwogICAgfQoKICAgIC8vIC0tLS0tIExvb2s
gaWYgdGhlICRwX2FyY2hpdmUgaXMgYSBzdHJpbm
cgKHNvIGEgZmlsZW5hbWUpCiAgICBlbHNlIGlmIChpc19zdHJpbmcoJHBfYXJjaGl2ZSkpCiAgICB7CgogI
CAgICAvLyAtLS0tLSBDaGVjayB0aGF0ICRwX2FyY2hpdmUgaXMgYSB2YWxpZCB6aXAgZmlsZQogICAgICAv
LyBUQkMgOiBTaG91bGQgYWxzbyBjaGVjayB0aGUgYXJjaGl2ZSBmb3JtYXQKICAgICAgaWYgKCFpc19maWx
lKCRwX2FyY2hpdmUpKSB7CiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAgUGNsWmlwOjpwcm
l2RXJyb3JMb2coUENMWklQX0VSUl9NSVNTSU5HX0ZJTEUsICJObyBmaWxlIHdpdGggZmlsZW5hbWUgJyIuJ
HBfYXJjaGl2ZS4iJyIpOwogICAgICAgICR2X3Jlc3VsdCA9IFBDTFpJUF9FUlJfTUlTU0lOR19GSUxFOwog
ICAgICB9CiAgICAgIGVsc2UgewogICAgICAgIC8vIC0tLS0tIER1cGxpY2F0ZSB0aGUgYXJjaGl2ZQogICA
gICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2RHVwbGljYXRlKCRwX2FyY2hpdmUpOwogICAgICB9CiAgIC
B9CgogICAgLy8gLS0tLS0gSW52YWxpZCB2YXJpYWJsZQogICAgZWxzZQogICAgewogICAgICAvLyAtLS0tL
SBFcnJvciBsb2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFN
RVRFUiwgIkludmFsaWQgdmFyaWFibGUgdHlwZSBwX2FyY2hpdmVfdG9fYWRkIik7CiAgICAgICR2X3Jlc3V
sdCA9IFBDTFpJUF9FUlJfSU5WQUxJRF9QQVJBTUVURVI7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCi
AgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogbWVyZ2UoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIF
RoaXMgbWV0aG9kIG1lcmdlIHRoZSAkcF9hcmNoaXZlX3RvX2FkZCBhcmNoaXZlIGF0IHRoZSBlbmQgb2Ygd
GhlIGN1cnJlbnQKICAvLyAgIG9uZSAoJHRoaXMpLgogIC8vICAgSWYgdGhlIGFyY2hpdmUgKCR0aGlzKSBk
b2VzIG5vdCBleGlzdCwgdGhlIG1lcmdlIGJlY29tZXMgYSBkdXBsaWNhdGUuCiAgLy8gICBJZiB0aGUgJHB
fYXJjaGl2ZV90b19hZGQgYXJjaGl2ZSBkb2VzIG5vdCBleGlzdCwgdGhlIG1lcmdlIGlzIGEgc3VjY2Vzcy
4KICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAgICRwX2FyY2hpdmVfdG9fYWRkIDogSXQgY2FuIGJlIGRpcmVjd
Gx5IHRoZSBmaWxlbmFtZSBvZiBhIHZhbGlkIHppcCBhcmNoaXZlLAogIC8vICAgICAgICAgICAgICAgICAg
ICAgICBvciBhIFBjbFppcCBvYmplY3QgYXJjaGl2ZS4KICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAgIDE
gb24gc3VjY2VzcywKICAvLyAgIDAgb3IgbmVnYXRpdmUgdmFsdWVzIG9uIGVycm9yIChzZWUgYmVsb3cpLg
ogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gbWVyZ2UoJHBfYXJjaGl2ZV90b19hZGQpCiAg
ewogICAgJHZfcmVzdWx0ID0gMTsKCiAgICAvLyAtLS0tLSBSZXNldCB0aGUgZXJyb3IgaGFuZGxlcgogICA
gJHRoaXMtPnByaXZFcnJvclJlc2V0KCk7CgogICAgLy8gLS0tLS0gQ2hlY2sgYXJjaGl2ZQogICAgaWYgKC
EkdGhpcy0+cHJpdkNoZWNrRm9ybWF0KCkpIHsKICAgICAgcmV0dXJuKDApOwogICAgfQoKICAgIC8vIC0tL
S0tIExvb2sgaWYgdGhlICRwX2FyY2hpdmVfdG9fYWRkIGlzIGEgUGNsWmlwIG9iamVjdAogICAgaWYgKChp
c19vYmplY3QoJHBfYXJjaGl2ZV90b19hZGQpKSAmJiAoZ2V0X2NsYXNzKCRwX2FyY2hpdmVfdG9fYWRkKSA
9PSAncGNsemlwJykpCiAgICB7CgogICAgICAvLyAtLS0tLSBNZXJnZSB0aGUgYXJjaGl2ZQogICAgICAkdl
9yZXN1bHQgPSAkdGhpcy0+cHJpdk1lcmdlKCRwX2FyY2hpdmVfdG9fYWRkKTsKICAgIH0KCiAgICAvLyAtL
S0tLSBMb29rIGlmIHRoZSAkcF9hcmNoaXZlX3RvX2FkZCBpcyBhIHN0cmluZyAoc28gYSBmaWxlbmFtZSkK
ICAgIGVsc2UgaWYgKGlzX3N0cmluZygkcF9hcmNoaXZlX3RvX2FkZCkpCiAgICB7CgogICAgICAvLyAtLS0
tLSBDcmVhdGUgYSB0ZW1wb3JhcnkgYXJjaGl2ZQogICAgICAkdl9vYmplY3RfYXJjaGl2ZSA9IG5ldyBQY2
xaaXAoJHBfYXJjaGl2ZV90b19hZGQpOwoKICAgICAgLy8gLS0tLS0gTWVyZ2UgdGhlIGFyY2hpdmUKICAgI
CAgJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZNZXJnZSgkdl9vYmplY3RfYXJjaGl2ZSk7CiAgICB9CgogICAg
Ly8gLS0tLS0gSW52YWxpZCB2YXJpYWJsZQogICAgZWxzZQogICAgewogICAgICAvLyAtLS0tLSBFcnJvciB
sb2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiwgIk
ludmFsaWQgdmFyaWFibGUgdHlwZSBwX2FyY2hpdmVfdG9fYWRkIik7CiAgICAgICR2X3Jlc3VsdCA9IFBDT
FpJUF9FUlJfSU5WQUxJRF9QQVJBTUVURVI7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1
cm4gJHZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCgogIC8vIC0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tCiAgLy8gRnVuY3Rpb24gOiBlcnJvckNvZGUoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJh
bWV0ZXJzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIGVycm9yQ29kZSgpCiAgewogIC
AgaWYgKFBDTFpJUF9FUlJPUl9FWFRFUk5BTCA9PSAxKSB7CiAgICAgIHJldHVybihQY2xFcnJvckNvZGUoK
Sk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgcmV0dXJuKCR0aGlzLT5lcnJvcl9jb2RlKTsKICAgIH0KICB9
CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvb
iA6IGVycm9yTmFtZSgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gZXJyb3JOYW1lKCRwX3dpdGhfY29kZT1mYWxzZSkKICB7CiAgIC
Akdl9uYW1lID0gYXJyYXkgKCBQQ0xaSVBfRVJSX05PX0VSUk9SID0+ICdQQ0xaSVBfRVJSX05PX0VSUk9SJ
ywKICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9FUlJfV1JJVEVfT1BFTl9GQUlMID0+ICdQQ0xaSVBf
RVJSX1dSSVRFX09QRU5fRkFJTCcsCiAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfRVJSX1JFQURfT1B
FTl9GQUlMID0+ICdQQ0xaSVBfRVJSX1JFQURfT1BFTl9GQUlMJywKICAgICAgICAgICAgICAgICAgICAgIF
BDTFpJUF9FUlJfSU5WQUxJRF9QQVJBTUVURVIgPT4gJ1BDTFpJUF9FUlJfSU5WQUxJRF9QQVJBTUVURVInL
AogICAgICAgICAgICAgICAgICAgICAgUENMWklQX0VSUl9NSVNTSU5HX0ZJTEUgPT4gJ1BDTFpJUF9FUlJf
TUlTU0lOR19GSUxFJywKICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9FUlJfRklMRU5BTUVfVE9PX0x
PTkcgPT4gJ1BDTFpJUF9FUlJfRklMRU5BTUVfVE9PX0xPTkcnLAogICAgICAgICAgICAgICAgICAgICAgUE
NMWklQX0VSUl9JTlZBTElEX1pJUCA9PiAnUENMWklQX0VSUl9JTlZBTElEX1pJUCcsCiAgICAgICAgICAgI
CAgICAgICAgICBQQ0xaSVBfRVJSX0JBRF9FWFRSQUNURURfRklMRSA9PiAnUENMWklQX0VSUl9CQURfRVhU
UkFDVEVEX0ZJTEUnLAogICAgICAgICAgICAgICAgICAgICAgUENMWklQX0VSUl9ESVJfQ1JFQVRFX0ZBSUw
gPT4gJ1BDTFpJUF9FUlJfRElSX0NSRUFURV9GQUlMJywKICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF
9FUlJfQkFEX0VYVEVOU0lPTiA9PiAnUENMWklQX0VSUl9CQURfRVhURU5TSU9OJywKICAgICAgICAgICAgI
CAgICAgICAgIFBDTFpJUF9FUlJfQkFEX0ZPUk1BVCA9PiAnUENMWklQX0VSUl9CQURfRk9STUFUJywKICAg
ICAgICAgICAgICAgICAgICAgIFBDTFpJUF9FUlJfREVMRVRFX0ZJTEVfRkFJTCA9PiAnUENMWklQX0VSUl9
ERUxFVEVfRklMRV9GQUlMJywKICAgICAgICAgICAgICAgICAgICAgIFBDTFpJUF9FUlJfUkVOQU1FX0ZJTE
VfRkFJTCA9PiAnUENMWklQX0VSUl9SRU5BTUVfRklMRV9GQUlMJywKICAgICAgICAgICAgICAgICAgICAgI
FBDTFpJUF9FUlJfQkFEX0NIRUNLU1VNID0+ICdQQ0xaSVBfRVJSX0JBRF9DSEVDS1NVTScsCiAgICAgICAg
ICAgICAgICAgICAgICBQQ0xaSVBfRVJSX0lOVkFMSURfQVJDSElWRV9aSVAgPT4gJ1BDTFpJUF9FUlJfSU5
WQUxJRF9BUkNISVZFX1pJUCcsCiAgICAgICAgICAgICAgICAgICAgICBQQ0xaSVBfRVJSX01JU1NJTkdfT1
BUSU9OX1ZBTFVFID0+ICdQQ0xaSVBfRVJSX01JU1NJTkdfT1BUSU9OX1ZBTFVFJywKICAgICAgICAgICAgI
CAgICAgICAgIFBDTFpJUF9FUlJfSU5WQUxJRF9PUFRJT05fVkFMVUUgPT4gJ1BDTFpJUF9FUlJfSU5WQUxJ
RF9PUFRJT05fVkFMVUUnLAogICAgICAgICAgICAgICAgICAgICAgUENMWklQX0VSUl9VTlNVUFBPUlRFRF9
DT01QUkVTU0lPTiA9PiAnUENMWklQX0VSUl9VTlNVUFBPUlRFRF9DT01QUkVTU0lPTicsCiAgICAgICAgIC
AgICAgICAgICAgICBQQ0xaSVBfRVJSX1VOU1VQUE9SVEVEX0VOQ1JZUFRJT04gPT4gJ1BDTFpJUF9FUlJfV
U5TVVBQT1JURURfRU5DUllQVElPTicKICAgICAgICAgICAgICAgICAgICAgICxQQ0xaSVBfRVJSX0lOVkFM
SURfQVRUUklCVVRFX1ZBTFVFID0+ICdQQ0xaSVBfRVJSX0lOVkFMSURfQVRUUklCVVRFX1ZBTFVFJwogICA
gICAgICAgICAgICAgICAgICAgLFBDTFpJUF9FUlJfRElSRUNUT1JZX1JFU1RSSUNUSU9OID0+ICdQQ0xaSV
BfRVJSX0RJUkVDVE9SWV9SRVNUUklDVElPTicKICAgICAgICAgICAgICAgICAgICApOwoKICAgIGlmIChpc
3NldCgkdl9uYW1lWyR0aGlzLT5lcnJvcl9jb2RlXSkpIHsKICAgICAgJHZfdmFsdWUgPSAkdl9uYW1lWyR0
aGlzLT5lcnJvcl9jb2RlXTsKICAgIH0KICAgIGVsc2UgewogICAgICAkdl92YWx1ZSA9ICdOb05hbWUnOwo
gICAgfQoKICAgIGlmICgkcF93aXRoX2NvZGUpIHsKICAgICAgcmV0dXJuKCR2X3ZhbHVlLicgKCcuJHRoaX
MtPmVycm9yX2NvZGUuJyknKTsKICAgIH0KICAgIGVsc2UgewogICAgICByZXR1cm4oJHZfdmFsdWUpOwogI
CAgfQogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIE
Z1bmN0aW9uIDogZXJyb3JJbmZvKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgL
y8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBlcnJvckluZm8oJHBfZnVsbD1mYWxzZSkKICB7CiA
gICBpZiAoUENMWklQX0VSUk9SX0VYVEVSTkFMID09IDEpIHsKICAgICAgcmV0dXJuKFBjbEVycm9yU3RyaW
5nKCkpOwogICAgfQogICAgZWxzZSB7CiAgICAgIGlmICgkcF9mdWxsKSB7CiAgICAgICAgcmV0dXJuKCR0a
GlzLT5lcnJvck5hbWUodHJ1ZSkuIiA6ICIuJHRoaXMtPmVycm9yX3N0cmluZyk7CiAgICAgIH0KICAgICAg
ZWxzZSB7CiAgICAgICAgcmV0dXJuKCR0aGlzLT5lcnJvcl9zdHJpbmcuIiBbY29kZSAiLiR0aGlzLT5lcnJ
vcl9jb2RlLiJdIik7CiAgICAgIH0KICAgIH0KICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgovLyAtL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQovLyAqKioqKiBVTkRFUiBUSElTIExJTkUgQVJFIERFRklORUQgUFJJVkFURSB
JTlRFUk5BTCBGVU5DVElPTlMgKioqKioKLy8gKioqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAgICoqKioqCi8vICoqKioqICAgICAgIFRIRVNFUyBGVU5DVElPT
lMgTVVTVCBOT1QgQkUgVVNFRCBESVJFQ1RMWSAgICAgICAqKioqKgovLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo
KCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2Q2hlY2tGb3JtYXQoKQogI
C8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRoaXMgbWV0aG9kIGNoZWNrIHRoYXQgdGhlIGFyY2hpdmUgZXhp
c3RzIGFuZCBpcyBhIHZhbGlkIHppcCBhcmNoaXZlLgogIC8vICAgU2V2ZXJhbCBsZXZlbCBvZiBjaGVjayB
leGlzdHMuIChmdXR1cikKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAgICRwX2xldmVsIDogTGV2ZWwgb2YgY2
hlY2suIERlZmF1bHQgMC4KICAvLyAgICAgICAgICAgICAgMCA6IENoZWNrIHRoZSBmaXJzdCBieXRlcyAob
WFnaWMgY29kZXMpIChkZWZhdWx0IHZhbHVlKSkKICAvLyAgICAgICAgICAgICAgMSA6IDAgKyBDaGVjayB0
aGUgY2VudHJhbCBkaXJlY3RvcnkgKGZ1dHVyKQogIC8vICAgICAgICAgICAgICAyIDogMSArIENoZWNrIGV
hY2ggZmlsZSBoZWFkZXIgKGZ1dHVyKQogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vICAgdHJ1ZSBvbiBzdW
NjZXNzLAogIC8vICAgZmFsc2Ugb24gZXJyb3IsIHRoZSBlcnJvciBjb2RlIGlzIHNldC4KICAvLyAtLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZDaGVja0Zvcm1hdCgkcF9sZXZlbD0wKQogIHsKICAgICR
2X3Jlc3VsdCA9IHRydWU7CgoJLy8gLS0tLS0gUmVzZXQgdGhlIGZpbGUgc3lzdGVtIGNhY2hlCiAgICBjbG
VhcnN0YXRjYWNoZSgpOwoKICAgIC8vIC0tLS0tI
FJlc2V0IHRoZSBlcnJvciBoYW5kbGVyCiAgICAkdGhpcy0+cHJpdkVycm9yUmVzZXQoKTsKCiAgICAvLyAt
LS0tLSBMb29rIGlmIHRoZSBmaWxlIGV4aXRzCiAgICBpZiAoIWlzX2ZpbGUoJHRoaXMtPnppcG5hbWUpKSB
7CiAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRV
JSX01JU1NJTkdfRklMRSwgIk1pc3NpbmcgYXJjaGl2ZSBmaWxlICciLiR0aGlzLT56aXBuYW1lLiInIik7C
iAgICAgIHJldHVybihmYWxzZSk7CiAgICB9CgogICAgLy8gLS0tLS0gQ2hlY2sgdGhhdCB0aGUgZmlsZSBp
cyByZWFkZWFibGUKICAgIGlmICghaXNfcmVhZGFibGUoJHRoaXMtPnppcG5hbWUpKSB7CiAgICAgIC8vIC0
tLS0tIEVycm9yIGxvZwogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX1JFQURfT1BFTl
9GQUlMLCAiVW5hYmxlIHRvIHJlYWQgYXJjaGl2ZSAnIi4kdGhpcy0+emlwbmFtZS4iJyIpOwogICAgICByZ
XR1cm4oZmFsc2UpOwogICAgfQoKICAgIC8vIC0tLS0tIENoZWNrIHRoZSBtYWdpYyBjb2RlCiAgICAvLyBU
QkMKCiAgICAvLyAtLS0tLSBDaGVjayB0aGUgY2VudHJhbCBoZWFkZXIKICAgIC8vIFRCQwoKICAgIC8vIC0
tLS0tIENoZWNrIGVhY2ggZmlsZSBoZWFkZXIKICAgIC8vIFRCQwoKICAgIC8vIC0tLS0tIFJldHVybgogIC
AgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZQYXJzZU9wdGlvbnMoKQogIC8vIERlc2NyaXB0aW9uID
oKICAvLyAgIFRoaXMgaW50ZXJuYWwgbWV0aG9kcyByZWFkcyB0aGUgdmFyaWFibGUgbGlzdCBvZiBhcmd1b
WVudHMgKCRwX29wdGlvbnNfbGlzdCwKICAvLyAgICRwX3NpemUpIGFuZCBnZW5lcmF0ZSBhbiBhcnJheSB3
aXRoIHRoZSBvcHRpb25zIGFuZCB2YWx1ZXMgKCR2X3Jlc3VsdF9saXN0KS4KICAvLyAgICR2X3JlcXVlc3R
lZF9vcHRpb25zIGNvbnRhaW5zIHRoZSBvcHRpb25zIHRoYXQgY2FuIGJlIHByZXNlbnQgYW5kIHRob3NlIH
RoYXQKICAvLyAgIG11c3QgYmUgcHJlc2VudC4KICAvLyAgICR2X3JlcXVlc3RlZF9vcHRpb25zIGlzIGFuI
GFycmF5LCB3aXRoIHRoZSBvcHRpb24gdmFsdWUgYXMga2V5LCBhbmQgJ29wdGlvbmFsJywKICAvLyAgIG9y
ICdtYW5kYXRvcnknIGFzIHZhbHVlLgogIC8vIFBhcmFtZXRlcnMgOgogIC8vICAgU2VlIGFib3ZlLgogIC8
vIFJldHVybiBWYWx1ZXMgOgogIC8vICAgMSBvbiBzdWNjZXNzLgogIC8vICAgMCBvbiBmYWlsdXJlLgogIC
8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdlBhcnNlT3B0aW9ucygmJHBfb3B0aW9uc19s
aXN0LCAkcF9zaXplLCAmJHZfcmVzdWx0X2xpc3QsICR2X3JlcXVlc3RlZF9vcHRpb25zPWZhbHNlKQogIHs
KICAgICR2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIFJlYWQgdGhlIG9wdGlvbnMKICAgICRpPTA7CiAgIC
B3aGlsZSAoJGk8JHBfc2l6ZSkgewoKICAgICAgLy8gLS0tLS0gQ2hlY2sgaWYgdGhlIG9wdGlvbiBpcyBzd
XBwb3J0ZWQKICAgICAgaWYgKCFpc3NldCgkdl9yZXF1ZXN0ZWRfb3B0aW9uc1skcF9vcHRpb25zX2xpc3Rb
JGldXSkpIHsKICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICBQY2xaaXA6OnByaXZFcnJvckx
vZyhQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVEVSLCAiSW52YWxpZCBvcHRpb25hbCBwYXJhbWV0ZXIgJy
IuJHBfb3B0aW9uc19saXN0WyRpXS4iJyBmb3IgdGhpcyBtZXRob2QiKTsKCiAgICAgICAgLy8gLS0tLS0gU
mV0dXJuCiAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgIH0KCiAgICAgIC8vIC0t
LS0tIExvb2sgZm9yIG5leHQgb3B0aW9uCiAgICAgIHN3aXRjaCAoJHBfb3B0aW9uc19saXN0WyRpXSkgewo
gICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIG9wdGlvbnMgdGhhdCByZXF1ZXN0IGEgcGF0aCB2YWx1ZQogIC
AgICAgIGNhc2UgUENMWklQX09QVF9QQVRIIDoKICAgICAgICBjYXNlIFBDTFpJUF9PUFRfUkVNT1ZFX1BBV
EggOgogICAgICAgIGNhc2UgUENMWklQX09QVF9BRERfUEFUSCA6CiAgICAgICAgICAvLyAtLS0tLSBDaGVj
ayB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMKICAgICAgICAgIGlmICgoJGkrMSkgPj0gJHBfc2l6ZSkgewo
gICAgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2
coUENMWklQX0VSUl9NSVNTSU5HX09QVElPTl9WQUxVRSwgIk1pc3NpbmcgcGFyYW1ldGVyIHZhbHVlIGZvc
iBvcHRpb24gJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuIiciKTsKCiAg
ICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGU
oKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBHZXQgdGhlIHZhbHVlCiAgICAgICAgICAkdl
9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGldXSA9IFBjbFppcFV0aWxUcmFuc2xhdGVXaW5QYXRoK
CRwX29wdGlvbnNfbGlzdFskaSsxXSwgRkFMU0UpOwogICAgICAgICAgJGkrKzsKICAgICAgICBicmVhazsK
CiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX1RFTVBfRklMRV9USFJFU0hPTEQgOgogICAgICAgICAgLy8gLS0
tLS0gQ2hlY2sgdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzCiAgICAgICAgICBpZiAoKCRpKzEpID49ICRwX3
NpemUpIHsKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9NSVNTSU5HX09QV
ElPTl9WQUxVRSwgIk1pc3NpbmcgcGFyYW1ldGVyIHZhbHVlIGZvciBvcHRpb24gJyIuUGNsWmlwVXRpbE9w
dGlvblRleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuIiciKTsKICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo
6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gQ2hlY2sgZm9yIGluY29tcG
F0aWJsZSBvcHRpb25zCiAgICAgICAgICBpZiAoaXNzZXQoJHZfcmVzdWx0X2xpc3RbUENMWklQX09QVF9UR
U1QX0ZJTEVfT0ZGXSkpIHsKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9J
TlZBTElEX1BBUkFNRVRFUiwgIk9wdGlvbiAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkcF9vcHRpb25zX2x
pc3RbJGldKS4iJyBjYW4gbm90IGJlIHVzZWQgd2l0aCBvcHRpb24gJ1BDTFpJUF9PUFRfVEVNUF9GSUxFX0
9GRiciKTsKICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CgogI
CAgICAgICAgLy8gLS0tLS0gQ2hlY2sgdGhlIHZhbHVlCiAgICAgICAgICAkdl92YWx1ZSA9ICRwX29wdGlv
bnNfbGlzdFskaSsxXTsKICAgICAgICAgIGlmICgoIWlzX2ludGVnZXIoJHZfdmFsdWUpKSB8fCAoJHZfdmF
sdWU8MCkpIHsKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX0
9QVElPTl9WQUxVRSwgIkludGVnZXIgZXhwZWN0ZWQgZm9yIG9wdGlvbiAnIi5QY2xaaXBVdGlsT3B0aW9uV
GV4dCgkcF9vcHRpb25zX2xpc3RbJGldKS4iJyIpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJv
ckNvZGUoKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBHZXQgdGhlIHZhbHVlIChhbmQgY29
udmVydCBpdCBpbiBieXRlcykKICAgICAgICAgICR2X3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGlzdFskaV
1dID0gJHZfdmFsdWUqMTA0ODU3NjsKICAgICAgICAgICRpKys7CiAgICAgICAgYnJlYWs7CgogICAgICAgI
GNhc2UgUENMWklQX09QVF9URU1QX0ZJTEVfT04gOgogICAgICAgICAgLy8gLS0tLS0gQ2hlY2sgZm9yIGlu
Y29tcGF0aWJsZSBvcHRpb25zCiAgICAgICAgICBpZiAoaXNzZXQoJHZfcmVzdWx0X2xpc3RbUENMWklQX09
QVF9URU1QX0ZJTEVfT0ZGXSkpIHsKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0
VSUl9JTlZBTElEX1BBUkFNRVRFUiwgIk9wdGlvbiAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkcF9vcHRpb
25zX2xpc3RbJGldKS4iJyBjYW4gbm90IGJlIHVzZWQgd2l0aCBvcHRpb24gJ1BDTFpJUF9PUFRfVEVNUF9G
SUxFX09GRiciKTsKICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB
9CgogICAgICAgICAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV0gPSB0cnVlOwogICAgIC
AgIGJyZWFrOwoKICAgICAgICBjYXNlIFBDTFpJUF9PUFRfVEVNUF9GSUxFX09GRiA6CiAgICAgICAgICAvL
yAtLS0tLSBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9wdGlvbnMKICAgICAgICAgIGlmIChpc3NldCgkdl9y
ZXN1bHRfbGlzdFtQQ0xaSVBfT1BUX1RFTVBfRklMRV9PTl0pKSB7CiAgICAgICAgICAgIFBjbFppcDo6cHJ
pdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9QQVJBTUVURVIsICJPcHRpb24gJyIuUGNsWmlwVXRpbE
9wdGlvblRleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuIicgY2FuIG5vdCBiZSB1c2VkIHdpdGggb3B0aW9uI
CdQQ0xaSVBfT1BUX1RFTVBfRklMRV9PTiciKTsKICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JD
b2RlKCk7CiAgICAgICAgICB9CiAgICAgICAgICAvLyAtLS0tLSBDaGVjayBmb3IgaW5jb21wYXRpYmxlIG9
wdGlvbnMKICAgICAgICAgIGlmIChpc3NldCgkdl9yZXN1bHRfbGlzdFtQQ0xaSVBfT1BUX1RFTVBfRklMRV
9USFJFU0hPTERdKSkgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOV
kFMSURfUEFSQU1FVEVSLCAiT3B0aW9uICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdGlvbnNfbGlz
dFskaV0pLiInIGNhbiBub3QgYmUgdXNlZCB3aXRoIG9wdGlvbiAnUENMWklQX09QVF9URU1QX0ZJTEVfVEh
SRVNIT0xEJyIpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH
0KCiAgICAgICAgICAkdl9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGldXSA9IHRydWU7CiAgICAgI
CAgYnJlYWs7CgogICAgICAgIGNhc2UgUENMWklQX09QVF9FWFRSQUNUX0RJUl9SRVNUUklDVElPTiA6CiAg
ICAgICAgICAvLyAtLS0tLSBDaGVjayB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMKICAgICAgICAgIGlmICg
oJGkrMSkgPj0gJHBfc2l6ZSkgewogICAgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgIC
AgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9NSVNTSU5HX09QVElPTl9WQUxVRSwgIk1pc3Npb
mcgcGFyYW1ldGVyIHZhbHVlIGZvciBvcHRpb24gJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9u
c19saXN0WyRpXSkuIiciKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICByZXR
1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBHZXQgdG
hlIHZhbHVlCiAgICAgICAgICBpZiAoICAgaXNfc3RyaW5nKCRwX29wdGlvbnNfbGlzdFskaSsxXSkKICAgI
CAgICAgICAgICAmJiAoJHBfb3B0aW9uc19saXN0WyRpKzFdICE9ICcnKSkgewogICAgICAgICAgICAkdl9y
ZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGldXSA9IFBjbFppcFV0aWxUcmFuc2xhdGVXaW5QYXRoKCR
wX29wdGlvbnNfbGlzdFskaSsxXSwgRkFMU0UpOwogICAgICAgICAgICAkaSsrOwogICAgICAgICAgfQogIC
AgICAgICAgZWxzZSB7CiAgICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgICAgIC8vIC0tLS0tIExvb
2sgZm9yIG9wdGlvbnMgdGhhdCByZXF1ZXN0IGFuIGFycmF5IG9mIHN0cmluZyBmb3IgdmFsdWUKICAgICAg
ICBjYXNlIFBDTFpJUF9PUFRfQllfTkFNRSA6CiAgICAgICAgICAvLyAtLS0tLSBDaGVjayB0aGUgbnVtYmV
yIG9mIHBhcmFtZXRlcnMKICAgICAgICAgIGlmICgoJGkrMSkgPj0gJHBfc2l6ZSkgewogICAgICAgICAgIC
AvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSU
l9NSVNTSU5HX09QVElPTl9WQUxVRSwgIk1pc3NpbmcgcGFyYW1ldGVyIHZhbHVlIGZvciBvcHRpb24gJyIu
UGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuIiciKTsKCiAgICAgICAgICAgIC8
vIC0tLS0tIFJldHVybgogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgIC
AgIH0KCiAgICAgICAgICAvLyAtLS0tLSBHZXQgdGhlIHZhbHVlCiAgICAgICAgICBpZiAoaXNfc3RyaW5nK
CRwX29wdGlvbnNfbGlzdFskaSsxXSkpIHsKICAgICAgICAgICAgICAkdl9yZXN1bHRfbGlzdFskcF9vcHRp
b25zX2xpc3RbJGldXVswXSA9ICRwX29wdGlvbnNfbGlzdFskaSsxXTsKICAgICAgICAgIH0KICAgICAgICA
gIGVsc2UgaWYgKGlzX2FycmF5KCRwX29wdGlvbnNfbGlzdFskaSsxXSkpIHsKICAgICAgICAgICAgICAkdl
9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGldXSA9ICRwX29wdGlvbnNfbGlzdFskaSsxXTsKICAgI
CAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAg
ICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX09QVElPTl9WQUxVRSwgIld
yb25nIHBhcmFtZXRlciB2YWx1ZSBmb3Igb3B0aW9uICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdG
lvbnNfbGlzdFskaV0pLiInIik7CgogICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgICAgc
mV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CiAgICAgICAgICAkaSsrOwogICAgICAg
IGJyZWFrOwoKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBvcHRpb25zIHRoYXQgcmVxdWVzdCBhbiBFUkV
HIG9yIFBSRUcgZXhwcmVzc2lvbgogICAgICAgIGNhc2UgUENMWklQX09QVF9CWV9FUkVHIDoKICAgICAgIC
AgIC8vIGVyZWcoKSBpcyBkZXByZWNhdGVkIHN0YXJ0aW5nIHdpdGggUEhQIDUuMy4gTW92ZSBQQ0xaSVBfT
1BUX0JZX0VSRUcKICAgICAgICAgIC8vIHRvIFBDTFpJUF9PUFRfQllfUFJFRwogICAgICAgICAgJHBfb3B0
aW9uc19saXN0WyRpXSA9IFBDTFpJUF9PUFRfQllfUFJFRzsKICAgICAgICBjYXNlIFBDTFpJUF9PUFRfQll
fUFJFRyA6CiAgICAgICAgLy9jYXNlIFBDTFpJUF9PUFRfQ1JZUFQgOgogICAgICAgICAgLy8gLS0tLS0gQ2
hlY2sgdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzCiAgICAgICAgICBpZiAoKCRpKzEpID49ICRwX3NpemUpI
HsKICAgICAgICAgICAgLy8gLS0tLS0gRXJyb3Ig
bG9nCiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfTUlTU0lOR19PUFRJT05
fVkFMVUUsICJNaXNzaW5nIHBhcmFtZXRlciB2YWx1ZSBmb3Igb3B0aW9uICciLlBjbFppcFV0aWxPcHRpb2
5UZXh0KCRwX29wdGlvbnNfbGlzdFskaV0pLiInIik7CgogICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KI
CAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CgogICAgICAgICAg
Ly8gLS0tLS0gR2V0IHRoZSB2YWx1ZQogICAgICAgICAgaWYgKGlzX3N0cmluZygkcF9vcHRpb25zX2xpc3R
bJGkrMV0pKSB7CiAgICAgICAgICAgICAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV0gPS
AkcF9vcHRpb25zX2xpc3RbJGkrMV07CiAgICAgICAgICB9CiAgICAgICAgICBlbHNlIHsKICAgICAgICAgI
CAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9F
UlJfSU5WQUxJRF9PUFRJT05fVkFMVUUsICJXcm9uZyBwYXJhbWV0ZXIgdmFsdWUgZm9yIG9wdGlvbiAnIi5
QY2xaaXBVdGlsT3B0aW9uVGV4dCgkcF9vcHRpb25zX2xpc3RbJGldKS4iJyIpOwoKICAgICAgICAgICAgLy
8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgI
CAgfQogICAgICAgICAgJGkrKzsKICAgICAgICBicmVhazsKCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3Ig
b3B0aW9ucyB0aGF0IHRha2VzIGEgc3RyaW5nCiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX0NPTU1FTlQgOgo
gICAgICAgIGNhc2UgUENMWklQX09QVF9BRERfQ09NTUVOVCA6CiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX1
BSRVBFTkRfQ09NTUVOVCA6CiAgICAgICAgICAvLyAtLS0tLSBDaGVjayB0aGUgbnVtYmVyIG9mIHBhcmFtZ
XRlcnMKICAgICAgICAgIGlmICgoJGkrMSkgPj0gJHBfc2l6ZSkgewogICAgICAgICAgICAvLyAtLS0tLSBF
cnJvciBsb2cKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9NSVNTSU5HX09
QVElPTl9WQUxVRSwKCQkJICAgICAgICAgICAgICAgICAgICAgIk1pc3NpbmcgcGFyYW1ldGVyIHZhbHVlIG
ZvciBvcHRpb24gJyIKCQkJCQkJCQkgLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdGlvbnNfbGlzdFska
V0pCgkJCQkJCQkJIC4iJyIpOwoKICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgIHJl
dHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIC0tLS0tIEdldCB
0aGUgdmFsdWUKICAgICAgICAgIGlmIChpc19zdHJpbmcoJHBfb3B0aW9uc19saXN0WyRpKzFdKSkgewogIC
AgICAgICAgICAgICR2X3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGlzdFskaV1dID0gJHBfb3B0aW9uc19sa
XN0WyRpKzFdOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIC0tLS0tIEVy
cm9yIGxvZwogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfT1B
USU9OX1ZBTFVFLAoJCQkgICAgICAgICAgICAgICAgICAgICAiV3JvbmcgcGFyYW1ldGVyIHZhbHVlIGZvci
BvcHRpb24gJyIKCQkJCQkJCQkgLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdGlvbnNfbGlzdFskaV0pC
gkJCQkJCQkJIC4iJyIpOwoKICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgIHJldHVy
biBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgICAgfQogICAgICAgICAgJGkrKzsKICAgICAgICBicmV
hazsKCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3Igb3B0aW9ucyB0aGF0IHJlcXVlc3QgYW4gYXJyYXkgb2
YgaW5kZXgKICAgICAgICBjYXNlIFBDTFpJUF9PUFRfQllfSU5ERVggOgogICAgICAgICAgLy8gLS0tLS0gQ
2hlY2sgdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzCiAgICAgICAgICBpZiAoKCRpKzEpID49ICRwX3NpemUp
IHsKICAgICAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9
yTG9nKFBDTFpJUF9FUlJfTUlTU0lOR19PUFRJT05fVkFMVUUsICJNaXNzaW5nIHBhcmFtZXRlciB2YWx1ZS
Bmb3Igb3B0aW9uICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdGlvbnNfbGlzdFskaV0pLiInIik7C
gogICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JD
b2RlKCk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gR2V0IHRoZSB2YWx1ZQogICAgICAgICA
gJHZfd29ya19saXN0ID0gYXJyYXkoKTsKICAgICAgICAgIGlmIChpc19zdHJpbmcoJHBfb3B0aW9uc19saX
N0WyRpKzFdKSkgewoKICAgICAgICAgICAgICAvLyAtLS0tLSBSZW1vdmUgc3BhY2VzCiAgICAgICAgICAgI
CAgJHBfb3B0aW9uc19saXN0WyRpKzFdID0gc3RydHIoJHBfb3B0aW9uc19saXN0WyRpKzFdLCAnICcsICcn
KTsKCiAgICAgICAgICAgICAgLy8gLS0tLS0gUGFyc2UgaXRlbXMKICAgICAgICAgICAgICAkdl93b3JrX2x
pc3QgPSBleHBsb2RlKCIsIiwgJHBfb3B0aW9uc19saXN0WyRpKzFdKTsKICAgICAgICAgIH0KICAgICAgIC
AgIGVsc2UgaWYgKGlzX2ludGVnZXIoJHBfb3B0aW9uc19saXN0WyRpKzFdKSkgewogICAgICAgICAgICAgI
CR2X3dvcmtfbGlzdFswXSA9ICRwX29wdGlvbnNfbGlzdFskaSsxXS4nLScuJHBfb3B0aW9uc19saXN0WyRp
KzFdOwogICAgICAgICAgfQogICAgICAgICAgZWxzZSBpZiAoaXNfYXJyYXkoJHBfb3B0aW9uc19saXN0WyR
pKzFdKSkgewogICAgICAgICAgICAgICR2X3dvcmtfbGlzdCA9ICRwX29wdGlvbnNfbGlzdFskaSsxXTsKIC
AgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgI
CAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX09QVElPTl9WQUxVRSwg
IlZhbHVlIG11c3QgYmUgaW50ZWdlciwgc3RyaW5nIG9yIGFycmF5IGZvciBvcHRpb24gJyIuUGNsWmlwVXR
pbE9wdGlvblRleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuIiciKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIF
JldHVybgogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KCiAgI
CAgICAgICAvLyAtLS0tLSBSZWR1Y2UgdGhlIGluZGV4IGxpc3QKICAgICAgICAgIC8vIGVhY2ggaW5kZXgg
aXRlbSBpbiB0aGUgbGlzdCBtdXN0IGJlIGEgY291cGxlIHdpdGggYSBzdGFydCBhbmQKICAgICAgICAgIC8
vIGFuIGVuZCB2YWx1ZSA6IFswLDNdLCBbNS01XSwgWzgtMTBdLCAuLi4KICAgICAgICAgIC8vIC0tLS0tIE
NoZWNrIHRoZSBmb3JtYXQgb2YgZWFjaCBpdGVtCiAgICAgICAgICAkdl9zb3J0X2ZsYWc9ZmFsc2U7CiAgI
CAgICAgICAkdl9zb3J0X3ZhbHVlPTA7CiAgICAgICAgICBmb3IgKCRqPTA7ICRqPHNpemVvZigkdl93b3Jr
X2xpc3QpOyAkaisrKSB7CiAgICAgICAgICAgICAgLy8gLS0tLS0gRXhwbG9kZSB0aGUgaXRlbQogICAgICA
gICAgICAgICR2X2l0ZW1fbGlzdCA9IGV4cGxvZGUoIi0iLCAkdl93b3JrX2xpc3RbJGpdKTsKICAgICAgIC
AgICAgICAkdl9zaXplX2l0ZW1fbGlzdCA9IHNpemVvZigkdl9pdGVtX2xpc3QpOwoKICAgICAgICAgICAgI
CAvLyAtLS0tLSBUQkMgOiBIZXJlIHdlIG1pZ2h0IGNoZWNrIHRoYXQgZWFjaCBpdGVtIGlzIGEKICAgICAg
ICAgICAgICAvLyByZWFsIGludGVnZXIgLi4uCgogICAgICAgICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHN
pbmdsZSB2YWx1ZQogICAgICAgICAgICAgIGlmICgkdl9zaXplX2l0ZW1fbGlzdCA9PSAxKSB7CiAgICAgIC
AgICAgICAgICAgIC8vIC0tLS0tIFNldCB0aGUgb3B0aW9uIHZhbHVlCiAgICAgICAgICAgICAgICAgICR2X
3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGlzdFskaV1dWyRqXVsnc3RhcnQnXSA9ICR2X2l0ZW1fbGlzdFsw
XTsKICAgICAgICAgICAgICAgICAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV1bJGpdWyd
lbmQnXSA9ICR2X2l0ZW1fbGlzdFswXTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZWlmIC
gkdl9zaXplX2l0ZW1fbGlzdCA9PSAyKSB7CiAgICAgICAgICAgICAgICAgIC8vIC0tLS0tIFNldCB0aGUgb
3B0aW9uIHZhbHVlCiAgICAgICAgICAgICAgICAgICR2X3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGlzdFsk
aV1dWyRqXVsnc3RhcnQnXSA9ICR2X2l0ZW1fbGlzdFswXTsKICAgICAgICAgICAgICAgICAgJHZfcmVzdWx
0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV1bJGpdWydlbmQnXSA9ICR2X2l0ZW1fbGlzdFsxXTsKICAgIC
AgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgIC8vIC0tLS0tIEVyc
m9yIGxvZwogICAgICAgICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFM
SURfT1BUSU9OX1ZBTFVFLCAiVG9vIG1hbnkgdmFsdWVzIGluIGluZGV4IHJhbmdlIGZvciBvcHRpb24gJyI
uUGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9uc19saXN0WyRpXSkuIiciKTsKCiAgICAgICAgICAgIC
AgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZ
GUoKTsKICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBsaXN0IHNv
cnQKICAgICAgICAgICAgICBpZiAoJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV1bJGpdWyd
zdGFydCddIDwgJHZfc29ydF92YWx1ZSkgewogICAgICAgICAgICAgICAgICAkdl9zb3J0X2ZsYWc9dHJ1ZT
sKCiAgICAgICAgICAgICAgICAgIC8vIC0tLS0tIFRCQyA6IEFuIGF1dG9tYXRpYyBzb3J0IHNob3VsZCBiZ
SB3cml0ZW4gLi4uCiAgICAgICAgICAgICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgICAgICAg
ICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfT1BUSU9OX1ZBTFVFLCAiSW5
2YWxpZCBvcmRlciBvZiBpbmRleCByYW5nZSBmb3Igb3B0aW9uICciLlBjbFppcFV0aWxPcHRpb25UZXh0KC
RwX29wdGlvbnNfbGlzdFskaV0pLiInIik7CgogICAgICAgICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KI
CAgICAgICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICR2X3NvcnRfdmFsdWUgPSAkdl9yZXN1bHRfbGlzdFskcF9vcHRpb25zX2xpc3RbJGl
dXVskal1bJ3N0YXJ0J107CiAgICAgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gU29ydCB0aGUgaXRlbX
MKICAgICAgICAgIGlmICgkdl9zb3J0X2ZsYWcpIHsKICAgICAgICAgICAgICAvLyBUQkMgOiBUbyBCZSBDb
21wbGV0ZWQKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBOZXh0IG9wdGlvbgogICAgICAgICAg
JGkrKzsKICAgICAgICBicmVhazsKCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3Igb3B0aW9ucyB0aGF0IHJ
lcXVlc3Qgbm8gdmFsdWUKICAgICAgICBjYXNlIFBDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQVRIIDoKICAgIC
AgICBjYXNlIFBDTFpJUF9PUFRfRVhUUkFDVF9BU19TVFJJTkcgOgogICAgICAgIGNhc2UgUENMWklQX09QV
F9OT19DT01QUkVTU0lPTiA6CiAgICAgICAgY2FzZSBQQ0xaSVBfT1BUX0VYVFJBQ1RfSU5fT1VUUFVUIDoK
ICAgICAgICBjYXNlIFBDTFpJUF9PUFRfUkVQTEFDRV9ORVdFUiA6CiAgICAgICAgY2FzZSBQQ0xaSVBfT1B
UX1NUT1BfT05fRVJST1IgOgogICAgICAgICAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV
0gPSB0cnVlOwogICAgICAgIGJyZWFrOwoKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBvcHRpb25zIHRoY
XQgcmVxdWVzdCBhbiBvY3RhbCB2YWx1ZQogICAgICAgIGNhc2UgUENMWklQX09QVF9TRVRfQ0hNT0QgOgog
ICAgICAgICAgLy8gLS0tLS0gQ2hlY2sgdGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzCiAgICAgICAgICBpZiA
oKCRpKzEpID49ICRwX3NpemUpIHsKICAgICAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAgIC
AgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfTUlTU0lOR19PUFRJT05fVkFMVUUsICJNaXNza
W5nIHBhcmFtZXRlciB2YWx1ZSBmb3Igb3B0aW9uICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdGlv
bnNfbGlzdFskaV0pLiInIik7CgogICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgICAgcmV
0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gR2V0IH
RoZSB2YWx1ZQogICAgICAgICAgJHZfcmVzdWx0X2xpc3RbJHBfb3B0aW9uc19saXN0WyRpXV0gPSAkcF9vc
HRpb25zX2xpc3RbJGkrMV07CiAgICAgICAgICAkaSsrOwogICAgICAgIGJyZWFrOwoKICAgICAgICAvLyAt
LS0tLSBMb29rIGZvciBvcHRpb25zIHRoYXQgcmVxdWVzdCBhIGNhbGwtYmFjawogICAgICAgIGNhc2UgUEN
MWklQX0NCX1BSRV9FWFRSQUNUIDoKICAgICAgICBjYXNlIFBDTFpJUF9DQl9QT1NUX0VYVFJBQ1QgOgogIC
AgICAgIGNhc2UgUENMWklQX0NCX1BSRV9BREQgOgogICAgICAgIGNhc2UgUENMWklQX0NCX1BPU1RfQUREI
DoKICAgICAgICAvKiBmb3IgZnV0dXIgdXNlCiAgICAgICAgY2FzZSBQQ0xaSVBfQ0JfUFJFX0RFTEVURSA6
CiAgICAgICAgY2FzZSBQQ0xaSVBfQ0JfUE9TVF9ERUxFVEUgOgogICAgICAgIGNhc2UgUENMWklQX0NCX1B
SRV9MSVNUIDoKICAgICAgICBjYXNlIFBDTFpJUF9DQl9QT1NUX0xJU1QgOgogICAgICAgICovCiAgICAgIC
AgICAvLyAtLS0tLSBDaGVjayB0aGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMKICAgICAgICAgIGlmICgoJGkrM
SkgPj0gJHBfc2l6ZSkgewogICAgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgICAgUGNs
WmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9NSVNTSU5HX09QVElPTl9WQUxVRSwgIk1pc3NpbmcgcGF
yYW1ldGVyIHZhbHVlIGZvciBvcHRpb24gJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHBfb3B0aW9uc19saX
N0WyRpXSkuIiciKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICByZXR1cm4gU
GNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBHZXQgdGhlIHZh
bHVlCiAgICAgICAgICAkdl9mdW5jdGlvbl9uYW1lID0gJHBfb3B0aW9uc19saXN0WyRpKzFdOwoKICAgICA
gICAgIC8vIC0tLS0tIENoZWNrIHRoYXQgdGhlIHZhbHVlIGlzIGEgdmFsaWQgZXhpc3RpbmcgZnVuY3Rpb2
4KICAgICAgICAgIGlmICghZnVuY3Rpb25fZXhpc3RzKCR2X2Z1bmN0aW9uX25hbWUpKSB7CiAgICAgICAgI
CAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBf
RVJSX0lOVkFMSURfT1BUSU9OX1ZBTFVFLCAiRnV
uY3Rpb24gJyIuJHZfZnVuY3Rpb25fbmFtZS4iKCknIGlzIG5vdCBhbiBleGlzdGluZyBmdW5jdGlvbiBmb3
Igb3B0aW9uICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCRwX29wdGlvbnNfbGlzdFskaV0pLiInIik7CgogI
CAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2Rl
KCk7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gU2V0IHRoZSBhdHRyaWJ1dGUKICAgICAgICA
gICR2X3Jlc3VsdF9saXN0WyRwX29wdGlvbnNfbGlzdFskaV1dID0gJHZfZnVuY3Rpb25fbmFtZTsKICAgIC
AgICAgICRpKys7CiAgICAgICAgYnJlYWs7CgogICAgICAgIGRlZmF1bHQgOgogICAgICAgICAgLy8gLS0tL
S0gRXJyb3IgbG9nCiAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURf
UEFSQU1FVEVSLAoJCSAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gcGFyYW1ldGVyICciCgkJCQk
JCQkgICAuJHBfb3B0aW9uc19saXN0WyRpXS4iJyIpOwoKICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogIC
AgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIE5le
HQgb3B0aW9ucwogICAgICAkaSsrOwogICAgfQoKICAgIC8vIC0tLS0tIExvb2sgZm9yIG1hbmRhdG9yeSBv
cHRpb25zCiAgICBpZiAoJHZfcmVxdWVzdGVkX29wdGlvbnMgIT09IGZhbHNlKSB7CiAgICAgIGZvciAoJGt
leT1yZXNldCgkdl9yZXF1ZXN0ZWRfb3B0aW9ucyk7ICRrZXk9a2V5KCR2X3JlcXVlc3RlZF9vcHRpb25zKT
sgJGtleT1uZXh0KCR2X3JlcXVlc3RlZF9vcHRpb25zKSkgewogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yI
G1hbmRhdG9yeSBvcHRpb24KICAgICAgICBpZiAoJHZfcmVxdWVzdGVkX29wdGlvbnNbJGtleV0gPT0gJ21h
bmRhdG9yeScpIHsKICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWYgcHJlc2VudAogICAgICAgICAgaWYgKCF
pc3NldCgkdl9yZXN1bHRfbGlzdFska2V5XSkpIHsKICAgICAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCi
AgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9QQVJBTUVURVIsI
CJNaXNzaW5nIG1hbmRhdG9yeSBwYXJhbWV0ZXIgIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgka2V5KS4iKCIu
JGtleS4iKSIpOwoKICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgIHJldHVybiBQY2x
aaXA6OmVycm9yQ29kZSgpOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIC
0tLS0tIExvb2sgZm9yIGRlZmF1bHQgdmFsdWVzCiAgICBpZiAoIWlzc2V0KCR2X3Jlc3VsdF9saXN0W1BDT
FpJUF9PUFRfVEVNUF9GSUxFX1RIUkVTSE9MRF0pKSB7CgogICAgfQoKICAgIC8vIC0tLS0tIFJldHVybgog
ICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZPcHRpb25EZWZhdWx0VGhyZXNob2xkKCkKICAvLyBE
ZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2T3B0aW9uRGVmYXVsdFRocmVzaG9sZCgmJHBfb3B0aW9uc
ykKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICBpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1RF
TVBfRklMRV9USFJFU0hPTERdKQogICAgICAgIHx8IGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9URU1
QX0ZJTEVfT0ZGXSkpIHsKICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBHZX
QgJ21lbW9yeV9saW1pdCcgY29uZmlndXJhdGlvbiB2YWx1ZQogICAgJHZfbWVtb3J5X2xpbWl0ID0gaW5pX
2dldCgnbWVtb3J5X2xpbWl0Jyk7CiAgICAkdl9tZW1vcnlfbGltaXQgPSB0cmltKCR2X21lbW9yeV9saW1p
dCk7CiAgICAkbGFzdCA9IHN0cnRvbG93ZXIoc3Vic3RyKCR2X21lbW9yeV9saW1pdCwgLTEpKTsKCiAgICB
pZigkbGFzdCA9PSAnZycpCiAgICAgICAgLy8kdl9tZW1vcnlfbGltaXQgPSAkdl9tZW1vcnlfbGltaXQqMT
AyNCoxMDI0KjEwMjQ7CiAgICAgICAgJHZfbWVtb3J5X2xpbWl0ID0gJHZfbWVtb3J5X2xpbWl0KjEwNzM3N
DE4MjQ7CiAgICBpZigkbGFzdCA9PSAnbScpCiAgICAgICAgLy8kdl9tZW1vcnlfbGltaXQgPSAkdl9tZW1v
cnlfbGltaXQqMTAyNCoxMDI0OwogICAgICAgICR2X21lbW9yeV9saW1pdCA9ICR2X21lbW9yeV9saW1pdCo
xMDQ4NTc2OwogICAgaWYoJGxhc3QgPT0gJ2snKQogICAgICAgICR2X21lbW9yeV9saW1pdCA9ICR2X21lbW
9yeV9saW1pdCoxMDI0OwoKICAgICRwX29wdGlvbnNbUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEX
SA9IGZsb29yKCR2X21lbW9yeV9saW1pdCpQQ0xaSVBfVEVNUE9SQVJZX0ZJTEVfUkFUSU8pOwoKCiAgICAv
LyAtLS0tLSBTYW5pdHkgY2hlY2sgOiBObyB0aHJlc2hvbGQgaWYgdmFsdWUgbG93ZXIgdGhhbiAxTQogICA
gaWYgKCRwX29wdGlvbnNbUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEXSA8IDEwNDg1NzYpIHsKIC
AgICAgdW5zZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1RFTVBfRklMRV9USFJFU0hPTERdKTsKICAgIH0KC
iAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2RmlsZURlc2NyU
GFyc2VBdHQoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFs
dWVzIDoKICAvLyAgIDEgb24gc3VjY2Vzcy4KICAvLyAgIDAgb24gZmFpbHVyZS4KICAvLyAtLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZGaWxlRGVzY3JQYXJzZUF0dCgmJHBfZmlsZV9saXN0LCAmJHBfZ
mlsZWRlc2NyLCAkdl9vcHRpb25zLCAkdl9yZXF1ZXN0ZWRfb3B0aW9ucz1mYWxzZSkKICB7CiAgICAkdl9y
ZXN1bHQ9MTsKCiAgICAvLyAtLS0tLSBGb3IgZWFjaCBmaWxlIGluIHRoZSBsaXN0IGNoZWNrIHRoZSBhdHR
yaWJ1dGVzCiAgICBmb3JlYWNoICgkcF9maWxlX2xpc3QgYXMgJHZfa2V5ID0+ICR2X3ZhbHVlKSB7CgogIC
AgICAvLyAtLS0tLSBDaGVjayBpZiB0aGUgb3B0aW9uIGlzIHN1cHBvcnRlZAogICAgICBpZiAoIWlzc2V0K
CR2X3JlcXVlc3RlZF9vcHRpb25zWyR2X2tleV0pKSB7CiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAg
ICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiwgIkludmF
saWQgZmlsZSBhdHRyaWJ1dGUgJyIuJHZfa2V5LiInIGZvciB0aGlzIGZpbGUiKTsKCiAgICAgICAgLy8gLS
0tLS0gUmV0dXJuCiAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgIH0KCiAgICAgI
C8vIC0tLS0tIExvb2sgZm9yIGF0dHJpYnV0ZQogICAgICBzd2l0Y2ggKCR2X2tleSkgewogICAgICAgIGNh
c2UgUENMWklQX0FUVF9GSUxFX05BTUUgOgogICAgICAgICAgaWYgKCFpc19zdHJpbmcoJHZfdmFsdWUpKSB
7CiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9BVFRSSUJVVE
VfVkFMVUUsICJJbnZhbGlkIHR5cGUgIi5nZXR0eXBlKCR2X3ZhbHVlKS4iLiBTdHJpbmcgZXhwZWN0ZWQgZ
m9yIGF0dHJpYnV0ZSAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkdl9rZXkpLiInIik7CiAgICAgICAgICAg
IHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgICAgfQoKICAgICAgICAgICRwX2ZpbGVkZXN
jclsnZmlsZW5hbWUnXSA9IFBjbFppcFV0aWxQYXRoUmVkdWN0aW9uKCR2X3ZhbHVlKTsKCiAgICAgICAgIC
BpZiAoJHBfZmlsZWRlc2NyWydmaWxlbmFtZSddID09ICcnKSB7CiAgICAgICAgICAgIFBjbFppcDo6cHJpd
kVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9BVFRSSUJVVEVfVkFMVUUsICJJbnZhbGlkIGVtcHR5IGZp
bGVuYW1lIGZvciBhdHRyaWJ1dGUgJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJHZfa2V5KS4iJyIpOwogICA
gICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgIH0KCiAgICAgICAgYnJlYW
s7CgogICAgICAgIGNhc2UgUENMWklQX0FUVF9GSUxFX05FV19TSE9SVF9OQU1FIDoKICAgICAgICAgIGlmI
CghaXNfc3RyaW5nKCR2X3ZhbHVlKSkgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xa
SVBfRVJSX0lOVkFMSURfQVRUUklCVVRFX1ZBTFVFLCAiSW52YWxpZCB0eXBlICIuZ2V0dHlwZSgkdl92YWx
1ZSkuIi4gU3RyaW5nIGV4cGVjdGVkIGZvciBhdHRyaWJ1dGUgJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJH
Zfa2V5KS4iJyIpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgI
H0KCiAgICAgICAgICAkcF9maWxlZGVzY3JbJ25ld19zaG9ydF9uYW1lJ10gPSBQY2xaaXBVdGlsUGF0aFJl
ZHVjdGlvbigkdl92YWx1ZSk7CgogICAgICAgICAgaWYgKCRwX2ZpbGVkZXNjclsnbmV3X3Nob3J0X25hbWU
nXSA9PSAnJykgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSU
RfQVRUUklCVVRFX1ZBTFVFLCAiSW52YWxpZCBlbXB0eSBzaG9ydCBmaWxlbmFtZSBmb3IgYXR0cmlidXRlI
CciLlBjbFppcFV0aWxPcHRpb25UZXh0KCR2X2tleSkuIiciKTsKICAgICAgICAgICAgcmV0dXJuIFBjbFpp
cDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CiAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgUENMWkl
QX0FUVF9GSUxFX05FV19GVUxMX05BTUUgOgogICAgICAgICAgaWYgKCFpc19zdHJpbmcoJHZfdmFsdWUpKS
B7CiAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9BVFRSSUJVV
EVfVkFMVUUsICJJbnZhbGlkIHR5cGUgIi5nZXR0eXBlKCR2X3ZhbHVlKS4iLiBTdHJpbmcgZXhwZWN0ZWQg
Zm9yIGF0dHJpYnV0ZSAnIi5QY2xaaXBVdGlsT3B0aW9uVGV4dCgkdl9rZXkpLiInIik7CiAgICAgICAgICA
gIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgICAgfQoKICAgICAgICAgICRwX2ZpbGVkZX
NjclsnbmV3X2Z1bGxfbmFtZSddID0gUGNsWmlwVXRpbFBhdGhSZWR1Y3Rpb24oJHZfdmFsdWUpOwoKICAgI
CAgICAgIGlmICgkcF9maWxlZGVzY3JbJ25ld19mdWxsX25hbWUnXSA9PSAnJykgewogICAgICAgICAgICBQ
Y2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfQVRUUklCVVRFX1ZBTFVFLCAiSW52YWx
pZCBlbXB0eSBmdWxsIGZpbGVuYW1lIGZvciBhdHRyaWJ1dGUgJyIuUGNsWmlwVXRpbE9wdGlvblRleHQoJH
Zfa2V5KS4iJyIpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICAgICAgI
H0KICAgICAgICBicmVhazsKCiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3Igb3B0aW9ucyB0aGF0IHRha2Vz
IGEgc3RyaW5nCiAgICAgICAgY2FzZSBQQ0xaSVBfQVRUX0ZJTEVfQ09NTUVOVCA6CiAgICAgICAgICBpZiA
oIWlzX3N0cmluZygkdl92YWx1ZSkpIHsKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWk
lQX0VSUl9JTlZBTElEX0FUVFJJQlVURV9WQUxVRSwgIkludmFsaWQgdHlwZSAiLmdldHR5cGUoJHZfdmFsd
WUpLiIuIFN0cmluZyBleHBlY3RlZCBmb3IgYXR0cmlidXRlICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCR2
X2tleSkuIiciKTsKICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB
9CgogICAgICAgICAgJHBfZmlsZWRlc2NyWydjb21tZW50J10gPSAkdl92YWx1ZTsKICAgICAgICBicmVhaz
sKCiAgICAgICAgY2FzZSBQQ0xaSVBfQVRUX0ZJTEVfTVRJTUUgOgogICAgICAgICAgaWYgKCFpc19pbnRlZ
2VyKCR2X3ZhbHVlKSkgewogICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lO
VkFMSURfQVRUUklCVVRFX1ZBTFVFLCAiSW52YWxpZCB0eXBlICIuZ2V0dHlwZSgkdl92YWx1ZSkuIi4gSW5
0ZWdlciBleHBlY3RlZCBmb3IgYXR0cmlidXRlICciLlBjbFppcFV0aWxPcHRpb25UZXh0KCR2X2tleSkuIi
ciKTsKICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgICAgICB9CgogICAgI
CAgICAgJHBfZmlsZWRlc2NyWydtdGltZSddID0gJHZfdmFsdWU7CiAgICAgICAgYnJlYWs7CgogICAgICAg
IGNhc2UgUENMWklQX0FUVF9GSUxFX0NPTlRFTlQgOgogICAgICAgICAgJHBfZmlsZWRlc2NyWydjb250ZW5
0J10gPSAkdl92YWx1ZTsKICAgICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdCA6CiAgICAgICAgICAvLy
AtLS0tLSBFcnJvciBsb2cKICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQ
UxJRF9QQVJBTUVURVIsCgkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVua25vd24gcGFyYW1ldGVy
ICciLiR2X2tleS4iJyIpOwoKICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgcmV0dXJuIFB
jbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIG1hbmRhdG9yeS
BvcHRpb25zCiAgICAgIGlmICgkdl9yZXF1ZXN0ZWRfb3B0aW9ucyAhPT0gZmFsc2UpIHsKICAgICAgICBmb
3IgKCRrZXk9cmVzZXQoJHZfcmVxdWVzdGVkX29wdGlvbnMpOyAka2V5PWtleSgkdl9yZXF1ZXN0ZWRfb3B0
aW9ucyk7ICRrZXk9bmV4dCgkdl9yZXF1ZXN0ZWRfb3B0aW9ucykpIHsKICAgICAgICAgIC8vIC0tLS0tIEx
vb2sgZm9yIG1hbmRhdG9yeSBvcHRpb24KICAgICAgICAgIGlmICgkdl9yZXF1ZXN0ZWRfb3B0aW9uc1ska2
V5XSA9PSAnbWFuZGF0b3J5JykgewogICAgICAgICAgICAvLyAtLS0tLSBMb29rIGlmIHByZXNlbnQKICAgI
CAgICAgICAgaWYgKCFpc3NldCgkcF9maWxlX2xpc3RbJGtleV0pKSB7CiAgICAgICAgICAgICAgUGNsWmlw
Ojpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiwgIk1pc3NpbmcgbWFuZGF0b3J
5IHBhcmFtZXRlciAiLlBjbFppcFV0aWxPcHRpb2
5UZXh0KCRrZXkpLiIoIi4ka2V5LiIpIik7CiAgICAgICAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb
2RlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KCiAgICAvLyBlbmQg
Zm9yZWFjaAogICAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiA
gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6
IHByaXZGaWxlRGVzY3JFeHBhbmQoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRoaXMgbWV0aG9kIGx
vb2sgZm9yIGVhY2ggaXRlbSBvZiB0aGUgbGlzdCB0byBzZWUgaWYgaXRzIGEgZmlsZSwgYSBmb2xkZXIKIC
AvLyAgIG9yIGEgc3RyaW5nIHRvIGJlIGFkZGVkIGFzIGZpbGUuIEZvciBhbnkgb3RoZXIgdHlwZSBvZiBma
WxlcyAobGluaywgb3RoZXIpCiAgLy8gICBqdXN0IGlnbm9yZSB0aGUgaXRlbS4KICAvLyAgIFRoZW4gcHJl
cGFyZSB0aGUgaW5mb3JtYXRpb24gdGhhdCB3aWxsIGJlIHN0b3JlZCBmb3IgdGhhdCBmaWxlLgogIC8vICA
gV2hlbiBpdHMgYSBmb2xkZXIsIGV4cGFuZCB0aGUgZm9sZGVyIHdpdGggYWxsIHRoZSBmaWxlcyB0aGF0IG
FyZSBpbiB0aGF0CiAgLy8gICBmb2xkZXIgKHJlY3Vyc2l2ZWx5KS4KICAvLyBQYXJhbWV0ZXJzIDoKICAvL
yBSZXR1cm4gVmFsdWVzIDoKICAvLyAgIDEgb24gc3VjY2Vzcy4KICAvLyAgIDAgb24gZmFpbHVyZS4KICAv
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZGaWxlRGVzY3JFeHBhbmQoJiRwX2ZpbGVkZX
Njcl9saXN0LCAmJHBfb3B0aW9ucykKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICAvLyAtLS0tLSBDcmVhd
GUgYSByZXN1bHQgbGlzdAogICAgJHZfcmVzdWx0X2xpc3QgPSBhcnJheSgpOwoKICAgIC8vIC0tLS0tIExv
b2sgZWFjaCBlbnRyeQogICAgZm9yICgkaT0wOyAkaTxzaXplb2YoJHBfZmlsZWRlc2NyX2xpc3QpOyAkaSs
rKSB7CgogICAgICAvLyAtLS0tLSBHZXQgZmlsZWRlc2NyCiAgICAgICR2X2Rlc2NyID0gJHBfZmlsZWRlc2
NyX2xpc3RbJGldOwoKICAgICAgLy8gLS0tLS0gUmVkdWNlIHRoZSBmaWxlbmFtZQogICAgICAkdl9kZXNjc
lsnZmlsZW5hbWUnXSA9IFBjbFppcFV0aWxUcmFuc2xhdGVXaW5QYXRoKCR2X2Rlc2NyWydmaWxlbmFtZSdd
LCBmYWxzZSk7CiAgICAgICR2X2Rlc2NyWydmaWxlbmFtZSddID0gUGNsWmlwVXRpbFBhdGhSZWR1Y3Rpb24
oJHZfZGVzY3JbJ2ZpbGVuYW1lJ10pOwoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgcmVhbCBmaWxlIG9yIG
ZvbGRlcgogICAgICBpZiAoZmlsZV9leGlzdHMoJHZfZGVzY3JbJ2ZpbGVuYW1lJ10pKSB7CiAgICAgICAga
WYgKEBpc19maWxlKCR2X2Rlc2NyWydmaWxlbmFtZSddKSkgewogICAgICAgICAgJHZfZGVzY3JbJ3R5cGUn
XSA9ICdmaWxlJzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoQGlzX2Rpcigkdl9kZXNjclsnZmlsZW5
hbWUnXSkpIHsKICAgICAgICAgICR2X2Rlc2NyWyd0eXBlJ10gPSAnZm9sZGVyJzsKICAgICAgICB9CiAgIC
AgICAgZWxzZSBpZiAoQGlzX2xpbmsoJHZfZGVzY3JbJ2ZpbGVuYW1lJ10pKSB7CiAgICAgICAgICAvLyBza
2lwCiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAvLyBz
a2lwCiAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2s
gZm9yIHN0cmluZyBhZGRlZCBhcyBmaWxlCiAgICAgIGVsc2UgaWYgKGlzc2V0KCR2X2Rlc2NyWydjb250ZW
50J10pKSB7CiAgICAgICAgJHZfZGVzY3JbJ3R5cGUnXSA9ICd2aXJ0dWFsX2ZpbGUnOwogICAgICB9CgogI
CAgICAvLyAtLS0tLSBNaXNzaW5nIGZpbGUKICAgICAgZWxzZSB7CiAgICAgICAgLy8gLS0tLS0gRXJyb3Ig
bG9nCiAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9NSVNTSU5HX0ZJTEUsICJGaWx
lICciLiR2X2Rlc2NyWydmaWxlbmFtZSddLiInIGRvZXMgbm90IGV4aXN0Iik7CgogICAgICAgIC8vIC0tLS
0tIFJldHVybgogICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICB9CgogICAgICAvL
yAtLS0tLSBDYWxjdWxhdGUgdGhlIHN0b3JlZCBmaWxlbmFtZQogICAgICAkdGhpcy0+cHJpdkNhbGN1bGF0
ZVN0b3JlZEZpbGVuYW1lKCR2X2Rlc2NyLCAkcF9vcHRpb25zKTsKCiAgICAgIC8vIC0tLS0tIEFkZCB0aGU
gZGVzY3JpcHRvciBpbiByZXN1bHQgbGlzdAogICAgICAkdl9yZXN1bHRfbGlzdFtzaXplb2YoJHZfcmVzdW
x0X2xpc3QpXSA9ICR2X2Rlc2NyOwoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZm9sZGVyCiAgICAgIGlmI
Cgkdl9kZXNjclsndHlwZSddID09ICdmb2xkZXInKSB7CiAgICAgICAgLy8gLS0tLS0gTGlzdCBvZiBpdGVt
cyBpbiBmb2xkZXIKICAgICAgICAkdl9kaXJsaXN0X2Rlc2NyID0gYXJyYXkoKTsKICAgICAgICAkdl9kaXJ
saXN0X25iID0gMDsKICAgICAgICBpZiAoJHZfZm9sZGVyX2hhbmRsZXIgPSBAb3BlbmRpcigkdl9kZXNjcl
snZmlsZW5hbWUnXSkpIHsKICAgICAgICAgIHdoaWxlICgoJHZfaXRlbV9oYW5kbGVyID0gQHJlYWRkaXIoJ
HZfZm9sZGVyX2hhbmRsZXIpKSAhPT0gZmFsc2UpIHsKCiAgICAgICAgICAgIC8vIC0tLS0tIFNraXAgJy4n
IGFuZCAnLi4nCiAgICAgICAgICAgIGlmICgoJHZfaXRlbV9oYW5kbGVyID09ICcuJykgfHwgKCR2X2l0ZW1
faGFuZGxlciA9PSAnLi4nKSkgewogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KCi
AgICAgICAgICAgIC8vIC0tLS0tIENvbXBvc2UgdGhlIGZ1bGwgZmlsZW5hbWUKICAgICAgICAgICAgJHZfZ
GlybGlzdF9kZXNjclskdl9kaXJsaXN0X25iXVsnZmlsZW5hbWUnXSA9ICR2X2Rlc2NyWydmaWxlbmFtZSdd
LicvJy4kdl9pdGVtX2hhbmRsZXI7CgogICAgICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBkaWZmZXJlbnQ
gc3RvcmVkIGZpbGVuYW1lCiAgICAgICAgICAgIC8vIEJlY2F1c2UgdGhlIG5hbWUgb2YgdGhlIGZvbGRlci
B3YXMgY2hhbmdlZCwgdGhlIG5hbWUgb2YgdGhlCiAgICAgICAgICAgIC8vIGZpbGVzL3N1Yi1mb2xkZXJzI
GFsc28gY2hhbmdlCiAgICAgICAgICAgIGlmICgoJHZfZGVzY3JbJ3N0b3JlZF9maWxlbmFtZSddICE9ICR2
X2Rlc2NyWydmaWxlbmFtZSddKQogICAgICAgICAgICAgICAgICYmICghaXNzZXQoJHBfb3B0aW9uc1tQQ0x
aSVBfT1BUX1JFTU9WRV9BTExfUEFUSF0pKSkgewogICAgICAgICAgICAgIGlmICgkdl9kZXNjclsnc3Rvcm
VkX2ZpbGVuYW1lJ10gIT0gJycpIHsKICAgICAgICAgICAgICAgICR2X2Rpcmxpc3RfZGVzY3JbJHZfZGlyb
GlzdF9uYl1bJ25ld19mdWxsX25hbWUnXSA9ICR2X2Rlc2NyWydzdG9yZWRfZmlsZW5hbWUnXS4nLycuJHZf
aXRlbV9oYW5kbGVyOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICA
gICAgICR2X2Rpcmxpc3RfZGVzY3JbJHZfZGlybGlzdF9uYl1bJ25ld19mdWxsX25hbWUnXSA9ICR2X2l0ZW
1faGFuZGxlcjsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICR2X2Rpcmxpc
3RfbmIrKzsKICAgICAgICAgIH0KCiAgICAgICAgICBAY2xvc2VkaXIoJHZfZm9sZGVyX2hhbmRsZXIpOwog
ICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIC8vIFRCQyA6IHVuYWJsZSB0byBvcGVuIGZvbGR
lciBpbiByZWFkIG1vZGUKICAgICAgICB9CgogICAgICAgIC8vIC0tLS0tIEV4cGFuZCBlYWNoIGVsZW1lbn
Qgb2YgdGhlIGxpc3QKICAgICAgICBpZiAoJHZfZGlybGlzdF9uYiAhPSAwKSB7CiAgICAgICAgICAvLyAtL
S0tLSBFeHBhbmQKICAgICAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZGaWxlRGVzY3JFeHBh
bmQoJHZfZGlybGlzdF9kZXNjciwgJHBfb3B0aW9ucykpICE9IDEpIHsKICAgICAgICAgICAgcmV0dXJuICR
2X3Jlc3VsdDsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBDb25jYXQgdGhlIHJlc3VsdGluZy
BsaXN0CiAgICAgICAgICAkdl9yZXN1bHRfbGlzdCA9IGFycmF5X21lcmdlKCR2X3Jlc3VsdF9saXN0LCAkd
l9kaXJsaXN0X2Rlc2NyKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgfQoKICAgICAgICAv
LyAtLS0tLSBGcmVlIGxvY2FsIGFycmF5CiAgICAgICAgdW5zZXQoJHZfZGlybGlzdF9kZXNjcik7CiAgICA
gIH0KICAgIH0KCiAgICAvLyAtLS0tLSBHZXQgdGhlIHJlc3VsdCBsaXN0CiAgICAkcF9maWxlZGVzY3JfbG
lzdCA9ICR2X3Jlc3VsdF9saXN0OwoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3Vsd
DsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW
5jdGlvbiA6IHByaXZDcmVhdGUoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvL
yBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZDcmVhdGU
oJHBfZmlsZWRlc2NyX2xpc3QsICYkcF9yZXN1bHRfbGlzdCwgJiRwX29wdGlvbnMpCiAgewogICAgJHZfcm
VzdWx0PTE7CiAgICAkdl9saXN0X2RldGFpbCA9IGFycmF5KCk7CgogICAgLy8gLS0tLS0gTWFnaWMgcXVvd
GVzIHRyaWNrCiAgICAkdGhpcy0+cHJpdkRpc2FibGVNYWdpY1F1b3RlcygpOwoKICAgIC8vIC0tLS0tIE9w
ZW4gdGhlIGZpbGUgaW4gd3JpdGUgbW9kZQogICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdk9wZW5
GZCgnd2InKSkgIT0gMSkKICAgIHsKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiAkdl9yZX
N1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gQWRkIHRoZSBsaXN0IG9mIGZpbGVzCiAgICAkdl9yZXN1bHQgP
SAkdGhpcy0+cHJpdkFkZExpc3QoJHBfZmlsZWRlc2NyX2xpc3QsICRwX3Jlc3VsdF9saXN0LCAkcF9vcHRp
b25zKTsKCiAgICAvLyAtLS0tLSBDbG9zZQogICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CgogICAgLy8gLS0
tLS0gTWFnaWMgcXVvdGVzIHRyaWNrCiAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCi
AgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2QWRkKCkKICAvLy
BEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2QWRkKCRwX2ZpbGVkZXNjcl9saXN0LCAmJHBfcmVzdWx
0X2xpc3QsICYkcF9vcHRpb25zKQogIHsKICAgICR2X3Jlc3VsdD0xOwogICAgJHZfbGlzdF9kZXRhaWwgPS
BhcnJheSgpOwoKICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlIGFyY2hpdmUgZXhpc3RzIG9yIGlzIGVtcHR5C
iAgICBpZiAoKCFpc19maWxlKCR0aGlzLT56aXBuYW1lKSkgfHwgKGZpbGVzaXplKCR0aGlzLT56aXBuYW1l
KSA9PSAwKSkKICAgIHsKCiAgICAgIC8vIC0tLS0tIERvIGEgY3JlYXRlCiAgICAgICR2X3Jlc3VsdCA9ICR
0aGlzLT5wcml2Q3JlYXRlKCRwX2ZpbGVkZXNjcl9saXN0LCAkcF9yZXN1bHRfbGlzdCwgJHBfb3B0aW9ucy
k7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KICAgIC8vI
C0tLS0tIE1hZ2ljIHF1b3RlcyB0cmljawogICAgJHRoaXMtPnByaXZEaXNhYmxlTWFnaWNRdW90ZXMoKTsK
CiAgICAvLyAtLS0tLSBPcGVuIHRoZSB6aXAgZmlsZQogICAgaWYgKCgkdl9yZXN1bHQ9JHRoaXMtPnByaXZ
PcGVuRmQoJ3JiJykpICE9IDEpCiAgICB7CiAgICAgIC8vIC0tLS0tIE1hZ2ljIHF1b3RlcyB0cmljawogIC
AgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgogI
CAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKICAgIC8vIC0tLS0tIFJlYWQgdGhlIGNlbnRyYWwgZGly
ZWN0b3J5IGluZm9ybWF0aW9ucwogICAgJHZfY2VudHJhbF9kaXIgPSBhcnJheSgpOwogICAgaWYgKCgkdl9
yZXN1bHQgPSAkdGhpcy0+cHJpdlJlYWRFbmRDZW50cmFsRGlyKCR2X2NlbnRyYWxfZGlyKSkgIT0gMSkKIC
AgIHsKICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY
1F1b3RlcygpOwogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKICAgIC8vIC0tLS0tIEdvIHRvIGJl
Z2lubmluZyBvZiBGaWxlCiAgICBAcmV3aW5kKCR0aGlzLT56aXBfZmQpOwoKICAgIC8vIC0tLS0tIENyZWF
0ZXMgYSB0ZW1wb3JheSBmaWxlCiAgICAkdl96aXBfdGVtcF9uYW1lID0gUENMWklQX1RFTVBPUkFSWV9ESV
IudW5pcWlkKCdwY2x6aXAtJykuJy50bXAnOwoKICAgIC8vIC0tLS0tIE9wZW4gdGhlIHRlbXBvcmFyeSBma
WxlIGluIHdyaXRlIG1vZGUKICAgIGlmICgoJHZfemlwX3RlbXBfZmQgPSBAZm9wZW4oJHZfemlwX3RlbXBf
bmFtZSwgJ3diJykpID09IDApCiAgICB7CiAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAkdGh
pcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTF
pJUF9FUlJfUkVBRF9PUEVOX0ZBSUwsICdVbmFibGUgdG8gb3BlbiB0ZW1wb3JhcnkgZmlsZSBcJycuJHZfe
mlwX3RlbXBfbmFtZS4nXCcgaW4gYmluYXJ5IHdyaXRlIG1vZGUnKTsKCiAgICAgIC8vIC0tLS0tIFJldHVy
bgogICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBDb3B5IHR
oZSBmaWxlcyBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSB0ZW1wb3JhcnkgZmlsZQogICAgLy8gVEJDIDogSG
VyZSBJIHNob3VsZCBiZXR0ZXIgYXBwZW5kIHRoZ
SBmaWxlIGFuZCBnbyBiYWNrIHRvIGVyYXNlIHRoZSBjZW50cmFsIGRpcgogICAgJHZfc2l6ZSA9ICR2X2Nl
bnRyYWxfZGlyWydvZmZzZXQnXTsKICAgIHdoaWxlICgkdl9zaXplICE9IDApCiAgICB7CiAgICAgICR2X3J
lYWRfc2l6ZSA9ICgkdl9zaXplIDwgUENMWklQX1JFQURfQkxPQ0tfU0laRSA/ICR2X3NpemUgOiBQQ0xaSV
BfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgJHZfYnVmZmVyID0gZnJlYWQoJHRoaXMtPnppcF9mZCwgJHZfc
mVhZF9zaXplKTsKICAgICAgQGZ3cml0ZSgkdl96aXBfdGVtcF9mZCwgJHZfYnVmZmVyLCAkdl9yZWFkX3Np
emUpOwogICAgICAkdl9zaXplIC09ICR2X3JlYWRfc2l6ZTsKICAgIH0KCiAgICAvLyAtLS0tLSBTd2FwIHR
oZSBmaWxlIGRlc2NyaXB0b3IKICAgIC8vIEhlcmUgaXMgYSB0cmljayA6IEkgc3dhcCB0aGUgdGVtcG9yYX
J5IGZkIHdpdGggdGhlIHppcCBmZCwgaW4gb3JkZXIgdG8gdXNlCiAgICAvLyB0aGUgZm9sbG93aW5nIG1ld
GhvZHMgb24gdGhlIHRlbXBvcmFyeSBmaWwgYW5kIG5vdCB0aGUgcmVhbCBhcmNoaXZlCiAgICAkdl9zd2Fw
ID0gJHRoaXMtPnppcF9mZDsKICAgICR0aGlzLT56aXBfZmQgPSAkdl96aXBfdGVtcF9mZDsKICAgICR2X3p
pcF90ZW1wX2ZkID0gJHZfc3dhcDsKCiAgICAvLyAtLS0tLSBBZGQgdGhlIGZpbGVzCiAgICAkdl9oZWFkZX
JfbGlzdCA9IGFycmF5KCk7CiAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2QWRkRmlsZUxpc3QoJ
HBfZmlsZWRlc2NyX2xpc3QsICR2X2hlYWRlcl9saXN0LCAkcF9vcHRpb25zKSkgIT0gMSkKICAgIHsKICAg
ICAgZmNsb3NlKCR2X3ppcF90ZW1wX2ZkKTsKICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgIEB
1bmxpbmsoJHZfemlwX3RlbXBfbmFtZSk7CiAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3Rlcy
gpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgL
y8gLS0tLS0gU3RvcmUgdGhlIG9mZnNldCBvZiB0aGUgY2VudHJhbCBkaXIKICAgICR2X29mZnNldCA9IEBm
dGVsbCgkdGhpcy0+emlwX2ZkKTsKCiAgICAvLyAtLS0tLSBDb3B5IHRoZSBibG9jayBvZiBmaWxlIGhlYWR
lcnMgZnJvbSB0aGUgb2xkIGFyY2hpdmUKICAgICR2X3NpemUgPSAkdl9jZW50cmFsX2Rpclsnc2l6ZSddOw
ogICAgd2hpbGUgKCR2X3NpemUgIT0gMCkKICAgIHsKICAgICAgJHZfcmVhZF9zaXplID0gKCR2X3NpemUgP
CBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFID8gJHZfc2l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwog
ICAgICAkdl9idWZmZXIgPSBAZnJlYWQoJHZfemlwX3RlbXBfZmQsICR2X3JlYWRfc2l6ZSk7CiAgICAgIEB
md3JpdGUoJHRoaXMtPnppcF9mZCwgJHZfYnVmZmVyLCAkdl9yZWFkX3NpemUpOwogICAgICAkdl9zaXplIC
09ICR2X3JlYWRfc2l6ZTsKICAgIH0KCiAgICAvLyAtLS0tLSBDcmVhdGUgdGhlIENlbnRyYWwgRGlyIGZpb
GVzIGhlYWRlcgogICAgZm9yICgkaT0wLCAkdl9jb3VudD0wOyAkaTxzaXplb2YoJHZfaGVhZGVyX2xpc3Qp
OyAkaSsrKQogICAgewogICAgICAvLyAtLS0tLSBDcmVhdGUgdGhlIGZpbGUgaGVhZGVyCiAgICAgIGlmICg
kdl9oZWFkZXJfbGlzdFskaV1bJ3N0YXR1cyddID09ICdvaycpIHsKICAgICAgICBpZiAoKCR2X3Jlc3VsdC
A9ICR0aGlzLT5wcml2V3JpdGVDZW50cmFsRmlsZUhlYWRlcigkdl9oZWFkZXJfbGlzdFskaV0pKSAhPSAxK
SB7CiAgICAgICAgICBmY2xvc2UoJHZfemlwX3RlbXBfZmQpOwogICAgICAgICAgJHRoaXMtPnByaXZDbG9z
ZUZkKCk7CiAgICAgICAgICBAdW5saW5rKCR2X3ppcF90ZW1wX25hbWUpOwogICAgICAgICAgJHRoaXMtPnB
yaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgogICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgIC
ByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0KICAgICAgICAkdl9jb3VudCsrOwogICAgICB9CgogICAgI
CAvLyAtLS0tLSBUcmFuc2Zvcm0gdGhlIGhlYWRlciB0byBhICd1c2FibGUnIGluZm8KICAgICAgJHRoaXMt
PnByaXZDb252ZXJ0SGVhZGVyMkZpbGVJbmZvKCR2X2hlYWRlcl9saXN0WyRpXSwgJHBfcmVzdWx0X2xpc3R
bJGldKTsKICAgIH0KCiAgICAvLyAtLS0tLSBaaXAgZmlsZSBjb21tZW50CiAgICAkdl9jb21tZW50ID0gJH
ZfY2VudHJhbF9kaXJbJ2NvbW1lbnQnXTsKICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQ
09NTUVOVF0pKSB7CiAgICAgICR2X2NvbW1lbnQgPSAkcF9vcHRpb25zW1BDTFpJUF9PUFRfQ09NTUVOVF07
CiAgICB9CiAgICBpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0FERF9DT01NRU5UXSkpIHsKICA
gICAgJHZfY29tbWVudCA9ICR2X2NvbW1lbnQuJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0FERF9DT01NRU5UXT
sKICAgIH0KICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfUFJFUEVORF9DT01NRU5UXSkpI
HsKICAgICAgJHZfY29tbWVudCA9ICRwX29wdGlvbnNbUENMWklQX09QVF9QUkVQRU5EX0NPTU1FTlRdLiR2
X2NvbW1lbnQ7CiAgICB9CgogICAgLy8gLS0tLS0gQ2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBjZW50cmF
sIGhlYWRlcgogICAgJHZfc2l6ZSA9IEBmdGVsbCgkdGhpcy0+emlwX2ZkKS0kdl9vZmZzZXQ7CgogICAgLy
8gLS0tLS0gQ3JlYXRlIHRoZSBjZW50cmFsIGRpciBmb290ZXIKICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoa
XMtPnByaXZXcml0ZUNlbnRyYWxIZWFkZXIoJHZfY291bnQrJHZfY2VudHJhbF9kaXJbJ2VudHJpZXMnXSwg
JHZfc2l6ZSwgJHZfb2Zmc2V0LCAkdl9jb21tZW50KSkgIT0gMSkKICAgIHsKICAgICAgLy8gLS0tLS0gUmV
zZXQgdGhlIGZpbGUgbGlzdAogICAgICB1bnNldCgkdl9oZWFkZXJfbGlzdCk7CiAgICAgICR0aGlzLT5wcm
l2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiAkd
l9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gU3dhcCBiYWNrIHRoZSBmaWxlIGRlc2NyaXB0b3IKICAg
ICR2X3N3YXAgPSAkdGhpcy0+emlwX2ZkOwogICAgJHRoaXMtPnppcF9mZCA9ICR2X3ppcF90ZW1wX2ZkOwo
gICAgJHZfemlwX3RlbXBfZmQgPSAkdl9zd2FwOwoKICAgIC8vIC0tLS0tIENsb3NlCiAgICAkdGhpcy0+cH
JpdkNsb3NlRmQoKTsKCiAgICAvLyAtLS0tLSBDbG9zZSB0aGUgdGVtcG9yYXJ5IGZpbGUKICAgIEBmY2xvc
2UoJHZfemlwX3RlbXBfZmQpOwoKICAgIC8vIC0tLS0tIE1hZ2ljIHF1b3RlcyB0cmljawogICAgJHRoaXMt
PnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgogICAgLy8gLS0tLS0gRGVsZXRlIHRoZSB6aXAgZmlsZQo
gICAgLy8gVEJDIDogSSBzaG91bGQgdGVzdCB0aGUgcmVzdWx0IC4uLgogICAgQHVubGluaygkdGhpcy0+em
lwbmFtZSk7CgogICAgLy8gLS0tLS0gUmVuYW1lIHRoZSB0ZW1wb3JhcnkgZmlsZQogICAgLy8gVEJDIDogS
SBzaG91bGQgdGVzdCB0aGUgcmVzdWx0IC4uLgogICAgLy9AcmVuYW1lKCR2X3ppcF90ZW1wX25hbWUsICR0
aGlzLT56aXBuYW1lKTsKICAgIFBjbFppcFV0aWxSZW5hbWUoJHZfemlwX3RlbXBfbmFtZSwgJHRoaXMtPnp
pcG5hbWUpOwoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZ
PcGVuRmQoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAtLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLQogIGZ1bmN0aW9uIHByaXZPcGVuRmQoJHBfbW9kZSkKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAg
ICAvLyAtLS0tLSBMb29rIGlmIGFscmVhZHkgb3BlbgogICAgaWYgKCR0aGlzLT56aXBfZmQgIT0gMCkKICA
gIHsKICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF
9FUlJfUkVBRF9PUEVOX0ZBSUwsICdaaXAgZmlsZSBcJycuJHRoaXMtPnppcG5hbWUuJ1wnIGFscmVhZHkgb
3BlbicpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgp
OwogICAgfQoKICAgIC8vIC0tLS0tIE9wZW4gdGhlIHppcCBmaWxlCiAgICBpZiAoKCR0aGlzLT56aXBfZmQ
gPSBAZm9wZW4oJHRoaXMtPnppcG5hbWUsICRwX21vZGUpKSA9PSAwKQogICAgewogICAgICAvLyAtLS0tLS
BFcnJvciBsb2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9SRUFEX09QRU5fRkFJT
CwgJ1VuYWJsZSB0byBvcGVuIGFyY2hpdmUgXCcnLiR0aGlzLT56aXBuYW1lLidcJyBpbiAnLiRwX21vZGUu
JyBtb2RlJyk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2R
lKCk7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLy
AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogcHJ
pdkNsb3NlRmQoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAtLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZDbG9zZUZkKCkKICB7CiAgICAkdl9yZXN1bHQ9MTsKCiAgICBp
ZiAoJHRoaXMtPnppcF9mZCAhPSAwKQogICAgICBAZmNsb3NlKCR0aGlzLT56aXBfZmQpOwogICAgJHRoaXM
tPnppcF9mZCA9IDA7CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KIC
AvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDo
gcHJpdkFkZExpc3QoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgICRwX2FkZF9kaXIgYW5kICRwX3JlbW
92ZV9kaXIgd2lsbCBnaXZlIHRoZSBhYmlsaXR5IHRvIG1lbW9yaXplIGEgcGF0aCB3aGljaCBpcwogIC8vI
CAgZGlmZmVyZW50IGZyb20gdGhlIHJlYWwgcGF0aCBvZiB0aGUgZmlsZS4gVGhpcyBpcyB1c2VmdWxsIGlm
IHlvdSB3YW50IHRvIGhhdmUgUGNsVGFyCiAgLy8gICBydW5uaW5nIGluIGFueSBkaXJlY3RvcnksIGFuZCB
tZW1vcml6ZSByZWxhdGl2ZSBwYXRoIGZyb20gYW4gb3RoZXIgZGlyZWN0b3J5LgogIC8vIFBhcmFtZXRlcn
MgOgogIC8vICAgJHBfbGlzdCA6IEFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIGZpbGUgb3IgZGlyZWN0b3J5I
G5hbWVzIHRvIGFkZCBpbiB0aGUgdGFyCiAgLy8gICAkcF9yZXN1bHRfbGlzdCA6IGxpc3Qgb2YgYWRkZWQg
ZmlsZXMgd2l0aCB0aGVpciBwcm9wZXJ0aWVzIChzcGVjaWFsbHkgdGhlIHN0YXR1cyBmaWVsZCkKICAvLyA
gICRwX2FkZF9kaXIgOiBQYXRoIHRvIGFkZCBpbiB0aGUgZmlsZW5hbWUgcGF0aCBhcmNoaXZlZAogIC8vIC
AgJHBfcmVtb3ZlX2RpciA6IFBhdGggdG8gcmVtb3ZlIGluIHRoZSBmaWxlbmFtZSBwYXRoIGFyY2hpdmVkC
iAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gIGZ1bmN0aW9uIHByaXZ
BZGRMaXN0KCRwX2xpc3QsICYkcF9yZXN1bHRfbGlzdCwgJHBfYWRkX2RpciwgJHBfcmVtb3ZlX2RpciwgJH
BfcmVtb3ZlX2FsbF9kaXIsICYkcF9vcHRpb25zKQogIGZ1bmN0aW9uIHByaXZBZGRMaXN0KCRwX2ZpbGVkZ
XNjcl9saXN0LCAmJHBfcmVzdWx0X2xpc3QsICYkcF9vcHRpb25zKQogIHsKICAgICR2X3Jlc3VsdD0xOwoK
ICAgIC8vIC0tLS0tIEFkZCB0aGUgZmlsZXMKICAgICR2X2hlYWRlcl9saXN0ID0gYXJyYXkoKTsKICAgIGl
mICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZBZGRGaWxlTGlzdCgkcF9maWxlZGVzY3JfbGlzdCwgJHZfaG
VhZGVyX2xpc3QsICRwX29wdGlvbnMpKSAhPSAxKQogICAgewogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgI
CAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBTdG9yZSB0aGUgb2Zmc2V0IG9mIHRo
ZSBjZW50cmFsIGRpcgogICAgJHZfb2Zmc2V0ID0gQGZ0ZWxsKCR0aGlzLT56aXBfZmQpOwoKICAgIC8vIC0
tLS0tIENyZWF0ZSB0aGUgQ2VudHJhbCBEaXIgZmlsZXMgaGVhZGVyCiAgICBmb3IgKCRpPTAsJHZfY291bn
Q9MDsgJGk8c2l6ZW9mKCR2X2hlYWRlcl9saXN0KTsgJGkrKykKICAgIHsKICAgICAgLy8gLS0tLS0gQ3JlY
XRlIHRoZSBmaWxlIGhlYWRlcgogICAgICBpZiAoJHZfaGVhZGVyX2xpc3RbJGldWydzdGF0dXMnXSA9PSAn
b2snKSB7CiAgICAgICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdldyaXRlQ2VudHJhbEZpbGVIZWF
kZXIoJHZfaGVhZGVyX2xpc3RbJGldKSkgIT0gMSkgewogICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgIC
AgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0KICAgICAgICAkdl9jb3VudCsrOwogICAgICB9C
gogICAgICAvLyAtLS0tLSBUcmFuc2Zvcm0gdGhlIGhlYWRlciB0byBhICd1c2FibGUnIGluZm8KICAgICAg
JHRoaXMtPnByaXZDb252ZXJ0SGVhZGVyMkZpbGVJbmZvKCR2X2hlYWRlcl9saXN0WyRpXSwgJHBfcmVzdWx
0X2xpc3RbJGldKTsKICAgIH0KCiAgICAvLyAtLS0tLSBaaXAgZmlsZSBjb21tZW50CiAgICAkdl9jb21tZW
50ID0gJyc7CiAgICBpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0NPTU1FTlRdKSkgewogICAgI
CAkdl9jb21tZW50ID0gJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0NPTU1FTlRdOwogICAgfQoKICAgIC8vIC0t
LS0tIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUgY2VudHJhbCBoZWFkZXIKICAgICR2X3NpemUgPSBAZnR
lbGwoJHRoaXMtPnppcF9mZCktJHZfb2Zmc2V0OwoKICAgIC8vIC0tLS0tIENyZWF0ZSB0aGUgY2VudHJhbC
BkaXIgZm9vdGVyCiAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2V3JpdGVDZW50cmFsSGVhZGVyK
CR2X2NvdW50LCAkdl9zaXplLCAkdl9vZmZzZXQs
ICR2X2NvbW1lbnQpKSAhPSAxKQogICAgewogICAgICAvLyAtLS0tLSBSZXNldCB0aGUgZmlsZSBsaXN0CiA
gICAgIHVuc2V0KCR2X2hlYWRlcl9saXN0KTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICByZXR1cm
4gJHZfcmVzdWx0OwogICAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKI
CB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdG
lvbiA6IHByaXZBZGRGaWxlTGlzdCgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogI
C8vICAgJHBfZmlsZWRlc2NyX2xpc3QgOiBBbiBhcnJheSBjb250YWluaW5nIHRoZSBmaWxlIGRlc2NyaXB0
aW9uCiAgLy8gICAgICAgICAgICAgICAgICAgICAgb3IgZGlyZWN0b3J5IG5hbWVzIHRvIGFkZCBpbiB0aGU
gemlwCiAgLy8gICAkcF9yZXN1bHRfbGlzdCA6IGxpc3Qgb2YgYWRkZWQgZmlsZXMgd2l0aCB0aGVpciBwcm
9wZXJ0aWVzIChzcGVjaWFsbHkgdGhlIHN0YXR1cyBmaWVsZCkKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvL
yAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIHByaXZBZGRGaWxlTGlzdCgkcF9maWxlZGVzY3JfbGl
zdCwgJiRwX3Jlc3VsdF9saXN0LCAmJHBfb3B0aW9ucykKICB7CiAgICAkdl9yZXN1bHQ9MTsKICAgICR2X2
hlYWRlciA9IGFycmF5KCk7CgogICAgLy8gLS0tLS0gUmVjdXBlcmF0ZSB0aGUgY3VycmVudCBudW1iZXIgb
2YgZWx0IGluIGxpc3QKICAgICR2X25iID0gc2l6ZW9mKCRwX3Jlc3VsdF9saXN0KTsKCiAgICAvLyAtLS0t
LSBMb29wIG9uIHRoZSBmaWxlcwogICAgZm9yICgkaj0wOyAoJGo8c2l6ZW9mKCRwX2ZpbGVkZXNjcl9saXN
0KSkgJiYgKCR2X3Jlc3VsdD09MSk7ICRqKyspIHsKICAgICAgLy8gLS0tLS0gRm9ybWF0IHRoZSBmaWxlbm
FtZQogICAgICAkcF9maWxlZGVzY3JfbGlzdFskal1bJ2ZpbGVuYW1lJ10KICAgICAgPSBQY2xaaXBVdGlsV
HJhbnNsYXRlV2luUGF0aCgkcF9maWxlZGVzY3JfbGlzdFskal1bJ2ZpbGVuYW1lJ10sIGZhbHNlKTsKCgog
ICAgICAvLyAtLS0tLSBTa2lwIGVtcHR5IGZpbGUgbmFtZXMKICAgICAgLy8gVEJDIDogQ2FuIHRoaXMgYmU
gcG9zc2libGUgPyBub3QgY2hlY2tlZCBpbiBEZXNjclBhcnNlQXR0ID8KICAgICAgaWYgKCRwX2ZpbGVkZX
Njcl9saXN0WyRqXVsnZmlsZW5hbWUnXSA9PSAiIikgewogICAgICAgIGNvbnRpbnVlOwogICAgICB9CgogI
CAgICAvLyAtLS0tLSBDaGVjayB0aGUgZmlsZW5hbWUKICAgICAgaWYgKCAgICgkcF9maWxlZGVzY3JfbGlz
dFskal1bJ3R5cGUnXSAhPSAndmlydHVhbF9maWxlJykKICAgICAgICAgICYmICghZmlsZV9leGlzdHMoJHB
fZmlsZWRlc2NyX2xpc3RbJGpdWydmaWxlbmFtZSddKSkpIHsKICAgICAgICBQY2xaaXA6OnByaXZFcnJvck
xvZyhQQ0xaSVBfRVJSX01JU1NJTkdfRklMRSwgIkZpbGUgJyIuJHBfZmlsZWRlc2NyX2xpc3RbJGpdWydma
WxlbmFtZSddLiInIGRvZXMgbm90IGV4aXN0Iik7CiAgICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2Rl
KCk7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgaWYgaXQgaXMgYSBmaWxlIG9yIGEgZGlyIHdpdGg
gbm8gYWxsIHBhdGggcmVtb3ZlIG9wdGlvbgogICAgICAvLyBvciBhIGRpciB3aXRoIGFsbCBpdHMgcGF0aC
ByZW1vdmVkCi8vICAgICAgaWYgKCAgIChpc19maWxlKCRwX2ZpbGVkZXNjcl9saXN0WyRqXVsnZmlsZW5hb
WUnXSkpCi8vICAgICAgICAgIHx8ICggICBpc19kaXIoJHBfZmlsZWRlc2NyX2xpc3RbJGpdWydmaWxlbmFt
ZSddKQogICAgICBpZiAoICAgKCRwX2ZpbGVkZXNjcl9saXN0WyRqXVsndHlwZSddID09ICdmaWxlJykKICA
gICAgICAgIHx8ICgkcF9maWxlZGVzY3JfbGlzdFskal1bJ3R5cGUnXSA9PSAndmlydHVhbF9maWxlJykKIC
AgICAgICAgIHx8ICggICAoJHBfZmlsZWRlc2NyX2xpc3RbJGpdWyd0eXBlJ10gPT0gJ2ZvbGRlcicpCiAgI
CAgICAgICAgICAgJiYgKCAgICFpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX0FMTF9QQVRI
XSkKICAgICAgICAgICAgICAgICAgfHwgISRwX29wdGlvbnNbUENMWklQX09QVF9SRU1PVkVfQUxMX1BBVEh
dKSkKICAgICAgICAgICkgewoKICAgICAgICAvLyAtLS0tLSBBZGQgdGhlIGZpbGUKICAgICAgICAkdl9yZX
N1bHQgPSAkdGhpcy0+cHJpdkFkZEZpbGUoJHBfZmlsZWRlc2NyX2xpc3RbJGpdLCAkdl9oZWFkZXIsCiAgI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwX29wdGlvbnMpOwogICAgICAgIGlmICgk
dl9yZXN1bHQgIT0gMSkgewogICAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgICAgICB9CgogICAgICA
gIC8vIC0tLS0tIFN0b3JlIHRoZSBmaWxlIGluZm9zCiAgICAgICAgJHBfcmVzdWx0X2xpc3RbJHZfbmIrK1
0gPSAkdl9oZWFkZXI7CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkd
l9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi
AgLy8gRnVuY3Rpb24gOiBwcml2QWRkRmlsZSgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlc
nMgOgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJ
pdkFkZEZpbGUoJHBfZmlsZWRlc2NyLCAmJHBfaGVhZGVyLCAmJHBfb3B0aW9ucykKICB7CiAgICAkdl9yZX
N1bHQ9MTsKCiAgICAvLyAtLS0tLSBXb3JraW5nIHZhcmlhYmxlCiAgICAkcF9maWxlbmFtZSA9ICRwX2Zpb
GVkZXNjclsnZmlsZW5hbWUnXTsKCiAgICAvLyBUQkMgOiBBbHJlYWR5IGRvbmUgaW4gdGhlIGZpbGVBdHQg
Y2hlY2sgLi4uID8KICAgIGlmICgkcF9maWxlbmFtZSA9PSAiIikgewogICAgICAvLyAtLS0tLSBFcnJvciB
sb2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiwgIk
ludmFsaWQgZmlsZSBsaXN0IHBhcmFtZXRlciAoaW52YWxpZCBvciBlbXB0eSBsaXN0KSIpOwoKICAgICAgL
y8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgfQoKICAgIC8v
IC0tLS0tIExvb2sgZm9yIGEgc3RvcmVkIGRpZmZlcmVudCBmaWxlbmFtZQogICAgLyogVEJDIDogUmVtb3Z
lZAogICAgaWYgKGlzc2V0KCRwX2ZpbGVkZXNjclsnc3RvcmVkX2ZpbGVuYW1lJ10pKSB7CiAgICAgICR2X3
N0b3JlZF9maWxlbmFtZSA9ICRwX2ZpbGVkZXNjclsnc3RvcmVkX2ZpbGVuYW1lJ107CiAgICB9CiAgICBlb
HNlIHsKICAgICAgJHZfc3RvcmVkX2ZpbGVuYW1lID0gJHBfZmlsZWRlc2NyWydzdG9yZWRfZmlsZW5hbWUn
XTsKICAgIH0KICAgICovCgogICAgLy8gLS0tLS0gU2V0IHRoZSBmaWxlIHByb3BlcnRpZXMKICAgIGNsZWF
yc3RhdGNhY2hlKCk7CiAgICAkcF9oZWFkZXJbJ3ZlcnNpb24nXSA9IDIwOwogICAgJHBfaGVhZGVyWyd2ZX
JzaW9uX2V4dHJhY3RlZCddID0gMTA7CiAgICAkcF9oZWFkZXJbJ2ZsYWcnXSA9IDA7CiAgICAkcF9oZWFkZ
XJbJ2NvbXByZXNzaW9uJ10gPSAwOwogICAgJHBfaGVhZGVyWydjcmMnXSA9IDA7CiAgICAkcF9oZWFkZXJb
J2NvbXByZXNzZWRfc2l6ZSddID0gMDsKICAgICRwX2hlYWRlclsnZmlsZW5hbWVfbGVuJ10gPSBzdHJsZW4
oJHBfZmlsZW5hbWUpOwogICAgJHBfaGVhZGVyWydleHRyYV9sZW4nXSA9IDA7CiAgICAkcF9oZWFkZXJbJ2
Rpc2snXSA9IDA7CiAgICAkcF9oZWFkZXJbJ2ludGVybmFsJ10gPSAwOwogICAgJHBfaGVhZGVyWydvZmZzZ
XQnXSA9IDA7CiAgICAkcF9oZWFkZXJbJ2ZpbGVuYW1lJ10gPSAkcF9maWxlbmFtZTsKLy8gVEJDIDogUmVt
b3ZlZCAgICAkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddID0gJHZfc3RvcmVkX2ZpbGVuYW1lOwogICA
gJHBfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXSA9ICRwX2ZpbGVkZXNjclsnc3RvcmVkX2ZpbGVuYW1lJ1
07CiAgICAkcF9oZWFkZXJbJ2V4dHJhJ10gPSAnJzsKICAgICRwX2hlYWRlclsnc3RhdHVzJ10gPSAnb2snO
wogICAgJHBfaGVhZGVyWydpbmRleCddID0gLTE7CgogICAgLy8gLS0tLS0gTG9vayBmb3IgcmVndWxhciBm
aWxlCiAgICBpZiAoJHBfZmlsZWRlc2NyWyd0eXBlJ109PSdmaWxlJykgewogICAgICAkcF9oZWFkZXJbJ2V
4dGVybmFsJ10gPSAweDAwMDAwMDAwOwogICAgICAkcF9oZWFkZXJbJ3NpemUnXSA9IGZpbGVzaXplKCRwX2
ZpbGVuYW1lKTsKICAgIH0KCiAgICAvLyAtLS0tLSBMb29rIGZvciByZWd1bGFyIGZvbGRlcgogICAgZWxzZ
SBpZiAoJHBfZmlsZWRlc2NyWyd0eXBlJ109PSdmb2xkZXInKSB7CiAgICAgICRwX2hlYWRlclsnZXh0ZXJu
YWwnXSA9IDB4MDAwMDAwMTA7CiAgICAgICRwX2hlYWRlclsnbXRpbWUnXSA9IGZpbGVtdGltZSgkcF9maWx
lbmFtZSk7CiAgICAgICRwX2hlYWRlclsnc2l6ZSddID0gZmlsZXNpemUoJHBfZmlsZW5hbWUpOwogICAgfQ
oKICAgIC8vIC0tLS0tIExvb2sgZm9yIHZpcnR1YWwgZmlsZQogICAgZWxzZSBpZiAoJHBfZmlsZWRlc2NyW
yd0eXBlJ10gPT0gJ3ZpcnR1YWxfZmlsZScpIHsKICAgICAgJHBfaGVhZGVyWydleHRlcm5hbCddID0gMHgw
MDAwMDAwMDsKICAgICAgJHBfaGVhZGVyWydzaXplJ10gPSBzdHJsZW4oJHBfZmlsZWRlc2NyWydjb250ZW5
0J10pOwogICAgfQoKCiAgICAvLyAtLS0tLSBMb29rIGZvciBmaWxldGltZQogICAgaWYgKGlzc2V0KCRwX2
ZpbGVkZXNjclsnbXRpbWUnXSkpIHsKICAgICAgJHBfaGVhZGVyWydtdGltZSddID0gJHBfZmlsZWRlc2NyW
ydtdGltZSddOwogICAgfQogICAgZWxzZSBpZiAoJHBfZmlsZWRlc2NyWyd0eXBlJ10gPT0gJ3ZpcnR1YWxf
ZmlsZScpIHsKICAgICAgJHBfaGVhZGVyWydtdGltZSddID0gdGltZSgpOwogICAgfQogICAgZWxzZSB7CiA
gICAgICRwX2hlYWRlclsnbXRpbWUnXSA9IGZpbGVtdGltZSgkcF9maWxlbmFtZSk7CiAgICB9CgogICAgLy
8gLS0tLS0tIExvb2sgZm9yIGZpbGUgY29tbWVudAogICAgaWYgKGlzc2V0KCRwX2ZpbGVkZXNjclsnY29tb
WVudCddKSkgewogICAgICAkcF9oZWFkZXJbJ2NvbW1lbnRfbGVuJ10gPSBzdHJsZW4oJHBfZmlsZWRlc2Ny
Wydjb21tZW50J10pOwogICAgICAkcF9oZWFkZXJbJ2NvbW1lbnQnXSA9ICRwX2ZpbGVkZXNjclsnY29tbWV
udCddOwogICAgfQogICAgZWxzZSB7CiAgICAgICRwX2hlYWRlclsnY29tbWVudF9sZW4nXSA9IDA7CiAgIC
AgICRwX2hlYWRlclsnY29tbWVudCddID0gJyc7CiAgICB9CgogICAgLy8gLS0tLS0gTG9vayBmb3IgcHJlL
WFkZCBjYWxsYmFjawogICAgaWYgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX0NCX1BSRV9BRERdKSkgewoK
ICAgICAgLy8gLS0tLS0gR2VuZXJhdGUgYSBsb2NhbCBpbmZvcm1hdGlvbgogICAgICAkdl9sb2NhbF9oZWF
kZXIgPSBhcnJheSgpOwogICAgICAkdGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIyRmlsZUluZm8oJHBfaGVhZG
VyLCAkdl9sb2NhbF9oZWFkZXIpOwoKICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgY2FsbGJhY2sKICAgICAgL
y8gSGVyZSBJIGRvIG5vdCB1c2UgY2FsbF91c2VyX2Z1bmMoKSBiZWNhdXNlIEkgbmVlZCB0byBzZW5kIGEg
cmVmZXJlbmNlIHRvIHRoZQogICAgICAvLyBoZWFkZXIuCiAgICAgICR2X3Jlc3VsdCA9ICRwX29wdGlvbnN
bUENMWklQX0NCX1BSRV9BRERdKFBDTFpJUF9DQl9QUkVfQURELCAkdl9sb2NhbF9oZWFkZXIpOwogICAgIC
BpZiAoJHZfcmVzdWx0ID09IDApIHsKICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgc3RhdHVzC
iAgICAgICAgJHBfaGVhZGVyWydzdGF0dXMnXSA9ICJza2lwcGVkIjsKICAgICAgICAkdl9yZXN1bHQgPSAx
OwogICAgICB9CgogICAgICAvLyAtLS0tLSBVcGRhdGUgdGhlIGluZm9ybWF0aW9ucwogICAgICAvLyBPbmx
5IHNvbWUgZmllbGRzIGNhbiBiZSBtb2RpZmllZAogICAgICBpZiAoJHBfaGVhZGVyWydzdG9yZWRfZmlsZW
5hbWUnXSAhPSAkdl9sb2NhbF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddKSB7CiAgICAgICAgJHBfaGVhZ
GVyWydzdG9yZWRfZmlsZW5hbWUnXSA9IFBjbFppcFV0aWxQYXRoUmVkdWN0aW9uKCR2X2xvY2FsX2hlYWRl
clsnc3RvcmVkX2ZpbGVuYW1lJ10pOwogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gTG9vayBmb3IgZW1
wdHkgc3RvcmVkIGZpbGVuYW1lCiAgICBpZiAoJHBfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXSA9PSAiIi
kgewogICAgICAkcF9oZWFkZXJbJ3N0YXR1cyddID0gImZpbHRlcmVkIjsKICAgIH0KCiAgICAvLyAtLS0tL
SBDaGVjayB0aGUgcGF0aCBsZW5ndGgKICAgIGlmIChzdHJsZW4oJHBfaGVhZGVyWydzdG9yZWRfZmlsZW5h
bWUnXSkgPiAweEZGKSB7CiAgICAgICRwX2hlYWRlclsnc3RhdHVzJ10gPSAnZmlsZW5hbWVfdG9vX2xvbmc
nOwogICAgfQoKICAgIC8vIC0tLS0tIExvb2sgaWYgbm8gZXJyb3IsIG9yIGZpbGUgbm90IHNraXBwZWQKIC
AgIGlmICgkcF9oZWFkZXJbJ3N0YXR1cyddID09ICdvaycpIHsKCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yI
GEgZmlsZQogICAgICBpZiAoJHBfZmlsZWRlc2NyWyd0eXBlJ10gPT0gJ2ZpbGUnKSB7CiAgICAgICAgLy8g
LS0tLS0gTG9vayBmb3IgdXNpbmcgdGVtcG9yYXJ5IGZpbGUgdG8gemlwCiAgICAgICAgaWYgKCAoIWlzc2V
0KCRwX29wdGlvbnNbUENMWklQX09QVF9URU1QX0ZJTEVfT0ZGXSkpCiAgICAgICAgICAgICYmIChpc3NldC
gkcF9vcHRpb25zW1BDTFpJUF9PUFRfVEVNUF9GSUxFX09OXSkKICAgICAgICAgICAgICAgIHx8IChpc3Nld
CgkcF9vcHRpb25zW1BDTFpJUF9PUFRfVEVNUF9GSUxFX1RIUkVTSE9MRF0pCiAgICAgICAgICAgICAgICAg
ICAgJiYgKCRwX29wdGlvbnNbUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEXSA8PSAkcF9oZWFkZXJ
bJ3NpemUnXSkpICkgKSB7CiAgICAgICAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkFkZEZpbGVVc2luZ1
RlbXBGaWxlKCRwX2ZpbGVkZXNjciwgJHBfaGVhZGVyLCAkcF9vcHRpb25zKTsKICAgICAgICAgIGlmICgkd
l9yZXN1bHQgPCBQQ0xaSVBfRVJSX05PX0VSUk9SKSB7CiAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7
CiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICA
gICAvLyAtLS0tLSBVc2UgImluIG1lbW9yeSIgemlwIGFsZ28KICAgICAgICBlbHNlIHsKCiAgICAgICAgLy
8gLS0tLS0gT3BlbiB0aGUgc291cmNlIGZpbGUKICAgICAgICBpZiAoKCR2X2ZpbGUgPSBAZm9wZW4oJHBfZ
mlsZW5hbWUsICJyYiIpKSA9PSAwKSB7CiAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBf
RVJSX1JFQURfT1BFTl9GQUlMLCAiVW5hYmxlIHRvIG9wZW4gZmlsZSAnJHBfZmlsZW5hbWUnIGluIGJpbmF
yeSByZWFkIG1vZGUiKTsKICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgIH
0KCiAgICAgICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlsZSBjb250ZW50CiAgICAgICAgJHZfY29udGVudCA9I
EBmcmVhZCgkdl9maWxlLCAkcF9oZWFkZXJbJ3NpemUnXSk7CgogICAgICAgIC8vIC0tLS0tIENsb3NlIHRo
ZSBmaWxlCiAgICAgICAgQGZjbG9zZSgkdl9maWxlKTsKCiAgICAgICAgLy8gLS0tLS0gQ2FsY3VsYXRlIHR
oZSBDUkMKICAgICAgICAkcF9oZWFkZXJbJ2NyYyddID0gQGNyYzMyKCR2X2NvbnRlbnQpOwoKICAgICAgIC
AvLyAtLS0tLSBMb29rIGZvciBubyBjb21wcmVzc2lvbgogICAgICAgIGlmICgkcF9vcHRpb25zW1BDTFpJU
F9PUFRfTk9fQ09NUFJFU1NJT05dKSB7CiAgICAgICAgICAvLyAtLS0tLSBTZXQgaGVhZGVyIHBhcmFtZXRl
cnMKICAgICAgICAgICRwX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSAkcF9oZWFkZXJbJ3NpemUnXTs
KICAgICAgICAgICRwX2hlYWRlclsnY29tcHJlc3Npb24nXSA9IDA7CiAgICAgICAgfQoKICAgICAgICAvLy
AtLS0tLSBMb29rIGZvciBub3JtYWwgY29tcHJlc3Npb24KICAgICAgICBlbHNlIHsKICAgICAgICAgIC8vI
C0tLS0tIENvbXByZXNzIHRoZSBjb250ZW50CiAgICAgICAgICAkdl9jb250ZW50ID0gQGd6ZGVmbGF0ZSgk
dl9jb250ZW50KTsKCiAgICAgICAgICAvLyAtLS0tLSBTZXQgaGVhZGVyIHBhcmFtZXRlcnMKICAgICAgICA
gICRwX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSBzdHJsZW4oJHZfY29udGVudCk7CiAgICAgICAgIC
AkcF9oZWFkZXJbJ2NvbXByZXNzaW9uJ10gPSA4OwogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0gQ2Fsb
CB0aGUgaGVhZGVyIGdlbmVyYXRpb24KICAgICAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2V3Jp
dGVGaWxlSGVhZGVyKCRwX2hlYWRlcikpICE9IDEpIHsKICAgICAgICAgIEBmY2xvc2UoJHZfZmlsZSk7CiA
gICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0gV3JpdGUgdG
hlIGNvbXByZXNzZWQgKG9yIG5vdCkgY29udGVudAogICAgICAgIEBmd3JpdGUoJHRoaXMtPnppcF9mZCwgJ
HZfY29udGVudCwgJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSk7CgogICAgICAgIH0KCiAgICAgIH0K
CiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGEgdmlydHVhbCBmaWxlIChhIGZpbGUgZnJvbSBzdHJpbmcpCiA
gICAgIGVsc2UgaWYgKCRwX2ZpbGVkZXNjclsndHlwZSddID09ICd2aXJ0dWFsX2ZpbGUnKSB7CgogICAgIC
AgICR2X2NvbnRlbnQgPSAkcF9maWxlZGVzY3JbJ2NvbnRlbnQnXTsKCiAgICAgICAgLy8gLS0tLS0gQ2FsY
3VsYXRlIHRoZSBDUkMKICAgICAgICAkcF9oZWFkZXJbJ2NyYyddID0gQGNyYzMyKCR2X2NvbnRlbnQpOwoK
ICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBubyBjb21wcmVzc2lvbgogICAgICAgIGlmICgkcF9vcHRpb25
zW1BDTFpJUF9PUFRfTk9fQ09NUFJFU1NJT05dKSB7CiAgICAgICAgICAvLyAtLS0tLSBTZXQgaGVhZGVyIH
BhcmFtZXRlcnMKICAgICAgICAgICRwX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSAkcF9oZWFkZXJbJ
3NpemUnXTsKICAgICAgICAgICRwX2hlYWRlclsnY29tcHJlc3Npb24nXSA9IDA7CiAgICAgICAgfQoKICAg
ICAgICAvLyAtLS0tLSBMb29rIGZvciBub3JtYWwgY29tcHJlc3Npb24KICAgICAgICBlbHNlIHsKICAgICA
gICAgIC8vIC0tLS0tIENvbXByZXNzIHRoZSBjb250ZW50CiAgICAgICAgICAkdl9jb250ZW50ID0gQGd6ZG
VmbGF0ZSgkdl9jb250ZW50KTsKCiAgICAgICAgICAvLyAtLS0tLSBTZXQgaGVhZGVyIHBhcmFtZXRlcnMKI
CAgICAgICAgICRwX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSBzdHJsZW4oJHZfY29udGVudCk7CiAg
ICAgICAgICAkcF9oZWFkZXJbJ2NvbXByZXNzaW9uJ10gPSA4OwogICAgICAgIH0KCiAgICAgICAgLy8gLS0
tLS0gQ2FsbCB0aGUgaGVhZGVyIGdlbmVyYXRpb24KICAgICAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT
5wcml2V3JpdGVGaWxlSGVhZGVyKCRwX2hlYWRlcikpICE9IDEpIHsKICAgICAgICAgIEBmY2xvc2UoJHZfZ
mlsZSk7CiAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0g
V3JpdGUgdGhlIGNvbXByZXNzZWQgKG9yIG5vdCkgY29udGVudAogICAgICAgIEBmd3JpdGUoJHRoaXMtPnp
pcF9mZCwgJHZfY29udGVudCwgJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXSk7CiAgICAgIH0KCiAgIC
AgIC8vIC0tLS0tIExvb2sgZm9yIGEgZGlyZWN0b3J5CiAgICAgIGVsc2UgaWYgKCRwX2ZpbGVkZXNjclsnd
HlwZSddID09ICdmb2xkZXInKSB7CiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZGlyZWN0b3J5IGxhc3Qg
Jy8nCiAgICAgICAgaWYgKEBzdWJzdHIoJHBfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXSwgLTEpICE9ICc
vJykgewogICAgICAgICAgJHBfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXSAuPSAnLyc7CiAgICAgICAgfQ
oKICAgICAgICAvLyAtLS0tLSBTZXQgdGhlIGZpbGUgcHJvcGVydGllcwogICAgICAgICRwX2hlYWRlclsnc
2l6ZSddID0gMDsKICAgICAgICAvLyRwX2hlYWRlclsnZXh0ZXJuYWwnXSA9IDB4NDFGRjAwMTA7ICAgLy8g
VmFsdWUgZm9yIGEgZm9sZGVyIDogdG8gYmUgY2hlY2tlZAogICAgICAgICRwX2hlYWRlclsnZXh0ZXJuYWw
nXSA9IDB4MDAwMDAwMTA7ICAgLy8gVmFsdWUgZm9yIGEgZm9sZGVyIDogdG8gYmUgY2hlY2tlZAoKICAgIC
AgICAvLyAtLS0tLSBDYWxsIHRoZSBoZWFkZXIgZ2VuZXJhdGlvbgogICAgICAgIGlmICgoJHZfcmVzdWx0I
D0gJHRoaXMtPnByaXZXcml0ZUZpbGVIZWFkZXIoJHBfaGVhZGVyKSkgIT0gMSkKICAgICAgICB7CiAgICAg
ICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIEx
vb2sgZm9yIHBvc3QtYWRkIGNhbGxiYWNrCiAgICBpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfQ0JfUE
9TVF9BRERdKSkgewoKICAgICAgLy8gLS0tLS0gR2VuZXJhdGUgYSBsb2NhbCBpbmZvcm1hdGlvbgogICAgI
CAkdl9sb2NhbF9oZWFkZXIgPSBhcnJheSgpOwogICAgICAkdGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIyRmls
ZUluZm8oJHBfaGVhZGVyLCAkdl9sb2NhbF9oZWFkZXIpOwoKICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgY2F
sbGJhY2sKICAgICAgLy8gSGVyZSBJIGRvIG5vdCB1c2UgY2FsbF91c2VyX2Z1bmMoKSBiZWNhdXNlIEkgbm
VlZCB0byBzZW5kIGEgcmVmZXJlbmNlIHRvIHRoZQogICAgICAvLyBoZWFkZXIuCiAgICAgICR2X3Jlc3Vsd
CA9ICRwX29wdGlvbnNbUENMWklQX0NCX1BPU1RfQUREXShQQ0xaSVBfQ0JfUE9TVF9BREQsICR2X2xvY2Fs
X2hlYWRlcik7CiAgICAgIGlmICgkdl9yZXN1bHQgPT0gMCkgewogICAgICAgIC8vIC0tLS0tIElnbm9yZWQ
KICAgICAgICAkdl9yZXN1bHQgPSAxOwogICAgICB9CgogICAgICAvLyAtLS0tLSBVcGRhdGUgdGhlIGluZm
9ybWF0aW9ucwogICAgICAvLyBOb3RoaW5nIGNhbiBiZSBtb2RpZmllZAogICAgfQoKICAgIC8vIC0tLS0tI
FJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8
gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZBZGRGaWxlVXNpbmdUZW1wRmlsZSgpC
iAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8v
IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdkFkZEZpbGVVc2luZ1RlbXBGaWxlKCRwX2ZpbG
VkZXNjciwgJiRwX2hlYWRlciwgJiRwX29wdGlvbnMpCiAgewogICAgJHZfcmVzdWx0PVBDTFpJUF9FUlJfT
k9fRVJST1I7CgogICAgLy8gLS0tLS0gV29ya2luZyB2YXJpYWJsZQogICAgJHBfZmlsZW5hbWUgPSAkcF9m
aWxlZGVzY3JbJ2ZpbGVuYW1lJ107CgoKICAgIC8vIC0tLS0tIE9wZW4gdGhlIHNvdXJjZSBmaWxlCiAgICB
pZiAoKCR2X2ZpbGUgPSBAZm9wZW4oJHBfZmlsZW5hbWUsICJyYiIpKSA9PSAwKSB7CiAgICAgIFBjbFppcD
o6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfUkVBRF9PUEVOX0ZBSUwsICJVbmFibGUgdG8gb3BlbiBmaWxlI
CckcF9maWxlbmFtZScgaW4gYmluYXJ5IHJlYWQgbW9kZSIpOwogICAgICByZXR1cm4gUGNsWmlwOjplcnJv
ckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBDcmVhdGVzIGEgY29tcHJlc3NlZCB0ZW1wb3JhcnkgZml
sZQogICAgJHZfZ3ppcF90ZW1wX25hbWUgPSBQQ0xaSVBfVEVNUE9SQVJZX0RJUi51bmlxaWQoJ3BjbHppcC
0nKS4nLmd6JzsKICAgIGlmICgoJHZfZmlsZV9jb21wcmVzc2VkID0gQGd6b3Blbigkdl9nemlwX3RlbXBfb
mFtZSwgIndiIikpID09IDApIHsKICAgICAgZmNsb3NlKCR2X2ZpbGUpOwogICAgICBQY2xaaXA6OnByaXZF
cnJvckxvZyhQQ0xaSVBfRVJSX1dSSVRFX09QRU5fRkFJTCwgJ1VuYWJsZSB0byBvcGVuIHRlbXBvcmFyeSB
maWxlIFwnJy4kdl9nemlwX3RlbXBfbmFtZS4nXCcgaW4gYmluYXJ5IHdyaXRlIG1vZGUnKTsKICAgICAgcm
V0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICB9CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlsZSBie
SBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFIG9jdGV0cyBibG9ja3MKICAgICR2X3NpemUgPSBmaWxlc2l6ZSgk
cF9maWxlbmFtZSk7CiAgICB3aGlsZSAoJHZfc2l6ZSAhPSAwKSB7CiAgICAgICR2X3JlYWRfc2l6ZSA9ICg
kdl9zaXplIDwgUENMWklQX1JFQURfQkxPQ0tfU0laRSA/ICR2X3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS1
9TSVpFKTsKICAgICAgJHZfYnVmZmVyID0gQGZyZWFkKCR2X2ZpbGUsICR2X3JlYWRfc2l6ZSk7CiAgICAgI
C8vJHZfYmluYXJ5X2RhdGEgPSBwYWNrKCdhJy4kdl9yZWFkX3NpemUsICR2X2J1ZmZlcik7CiAgICAgIEBn
enB1dHMoJHZfZmlsZV9jb21wcmVzc2VkLCAkdl9idWZmZXIsICR2X3JlYWRfc2l6ZSk7CiAgICAgICR2X3N
pemUgLT0gJHZfcmVhZF9zaXplOwogICAgfQoKICAgIC8vIC0tLS0tIENsb3NlIHRoZSBmaWxlCiAgICBAZm
Nsb3NlKCR2X2ZpbGUpOwogICAgQGd6Y2xvc2UoJHZfZmlsZV9jb21wcmVzc2VkKTsKCiAgICAvLyAtLS0tL
SBDaGVjayB0aGUgbWluaW11bSBmaWxlIHNpemUKICAgIGlmIChmaWxlc2l6ZSgkdl9nemlwX3RlbXBfbmFt
ZSkgPCAxOCkgewogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0JBRF9GT1JNQVQsICd
nemlwIHRlbXBvcmFyeSBmaWxlIFwnJy4kdl9nemlwX3RlbXBfbmFtZS4nXCcgaGFzIGludmFsaWQgZmlsZX
NpemUgLSBzaG91bGQgYmUgbWluaW11bSAxOCBieXRlcycpOwogICAgICByZXR1cm4gUGNsWmlwOjplcnJvc
kNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBFeHRyYWN0IHRoZSBjb21wcmVzc2VkIGF0dHJpYnV0ZXMK
ICAgIGlmICgoJHZfZmlsZV9jb21wcmVzc2VkID0gQGZvcGVuKCR2X2d6aXBfdGVtcF9uYW1lLCAicmIiKSk
gPT0gMCkgewogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX1JFQURfT1BFTl9GQUlMLC
AnVW5hYmxlIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgXCcnLiR2X2d6aXBfdGVtcF9uYW1lLidcJyBpbiBia
W5hcnkgcmVhZCBtb2RlJyk7CiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgfQoKICAg
IC8vIC0tLS0tIFJlYWQgdGhlIGd6aXAgZmlsZSBoZWFkZXIKICAgICR2X2JpbmFyeV9kYXRhID0gQGZyZWF
kKCR2X2ZpbGVfY29tcHJlc3NlZCwgMTApOwogICAgJHZfZGF0YV9oZWFkZXIgPSB1bnBhY2soJ2ExaWQxL2
ExaWQyL2ExY20vYTFmbGFnL1ZtdGltZS9hMXhmbC9hMW9zJywgJHZfYmluYXJ5X2RhdGEpOwoKICAgIC8vI
C0tLS0tIENoZWNrIHNvbWUgcGFyYW1ldGVycwogICAgJHZfZGF0YV9oZWFkZXJbJ29zJ10gPSBiaW4yaGV4
KCR2X2RhdGFfaGVhZGVyWydvcyddKTsKCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBnemlwIGZpbGUgZm9vdGV
yCiAgICBAZnNlZWsoJHZfZmlsZV9jb21wcmVzc2VkLCBmaWxlc2l6ZSgkdl9nemlwX3RlbXBfbmFtZSktOC
k7CiAgICAkdl9iaW5hcnlfZGF0YSA9IEBmcmVhZCgkdl9maWxlX2NvbXByZXNzZWQsIDgpOwogICAgJHZfZ
GF0YV9mb290ZXIgPSB1bnBhY2soJ1ZjcmMvVmNvbXByZXNzZWRfc2l6ZScsICR2X2JpbmFyeV9kYXRhKTsK
CiAgICAvLyAtLS0tLSBTZXQgdGhlIGF0dHJpYnV0ZXMKICAgICRwX2hlYWRlclsnY29tcHJlc3Npb24nXSA
9IG9yZCgkdl9kYXRhX2hlYWRlclsnY20nXSk7CiAgICAvLyRwX2hlYWRlclsnbXRpbWUnXSA9ICR2X2RhdG
FfaGVhZGVyWydtdGltZSddOwogICAgJHBfaGVhZGVyWydjcmMnXSA9ICR2X2RhdGFfZm9vdGVyWydjcmMnX
TsKICAgICRwX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSBmaWxlc2l6ZSgkdl9nemlwX3RlbXBfbmFt
ZSktMTg7CgogICAgLy8gLS0tLS0gQ2xvc2UgdGhlIGZpbGUKICAgIEBmY2xvc2UoJHZfZmlsZV9jb21wcmV
zc2VkKTsKCiAgICAvLyAtLS0tLSBDYWxsIHRoZSBoZWFkZXIgZ2VuZXJhdGlvbgogICAgaWYgKCgkdl9yZX
N1bHQgPSAkdGhpcy0+cHJpdldyaXRlRmlsZUhlYWRlcigkcF9oZWFkZXIpKSAhPSAxKSB7CiAgICAgIHJld
HVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gQWRkIHRoZSBjb21wcmVzc2VkIGRhdGEKICAg
IGlmICgoJHZfZmlsZV9jb21wcmVzc2VkID0gQGZvcGVuKCR2X2d6aXBfdGVtcF9uYW1lLCAicmIiKSkgPT0
gMCkKICAgIHsKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9SRUFEX09QRU5fRkFJTC
wgJ1VuYWJsZSB0byBvcGVuIHRlbXBvcmFyeSBmaWxlIFwnJy4kdl9nemlwX3RlbXBfbmFtZS4nXCcgaW4gY
mluYXJ5IHJlYWQgbW9kZScpOwogICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCiAg
ICAvLyAtLS0tLSBSZWFkIHRoZSBmaWxlIGJ5IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUgb2N0ZXRzIGJsb2N
rcwogICAgZnNlZWsoJHZfZmlsZV9jb21wcmVzc2
VkLCAxMCk7CiAgICAkdl9zaXplID0gJHBfaGVhZGVyWydjb21wcmVzc2VkX3NpemUnXTsKICAgIHdoaWxlI
Cgkdl9zaXplICE9IDApCiAgICB7CiAgICAgICR2X3JlYWRfc2l6ZSA9ICgkdl9zaXplIDwgUENMWklQX1JF
QURfQkxPQ0tfU0laRSA/ICR2X3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgJHZfYnV
mZmVyID0gQGZyZWFkKCR2X2ZpbGVfY29tcHJlc3NlZCwgJHZfcmVhZF9zaXplKTsKICAgICAgLy8kdl9iaW
5hcnlfZGF0YSA9IHBhY2soJ2EnLiR2X3JlYWRfc2l6ZSwgJHZfYnVmZmVyKTsKICAgICAgQGZ3cml0ZSgkd
Ghpcy0+emlwX2ZkLCAkdl9idWZmZXIsICR2X3JlYWRfc2l6ZSk7CiAgICAgICR2X3NpemUgLT0gJHZfcmVh
ZF9zaXplOwogICAgfQoKICAgIC8vIC0tLS0tIENsb3NlIHRoZSBmaWxlCiAgICBAZmNsb3NlKCR2X2ZpbGV
fY29tcHJlc3NlZCk7CgogICAgLy8gLS0tLS0gVW5saW5rIHRoZSB0ZW1wb3JhcnkgZmlsZQogICAgQHVubG
luaygkdl9nemlwX3RlbXBfbmFtZSk7CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzd
Wx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIE
Z1bmN0aW9uIDogcHJpdkNhbGN1bGF0ZVN0b3JlZEZpbGVuYW1lKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgL
y8gICBCYXNlZCBvbiBmaWxlIGRlc2NyaXB0b3IgcHJvcGVydGllcyBhbmQgZ2xvYmFsIG9wdGlvbnMsIHRo
aXMgbWV0aG9kCiAgLy8gICBjYWxjdWxhdGUgdGhlIGZpbGVuYW1lIHRoYXQgd2lsbCBiZSBzdG9yZWQgaW4
gdGhlIGFyY2hpdmUuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2Q2FsY3VsYXRlU3RvcmVkRmlsZW5hbWUoJiRwX2ZpbGVk
ZXNjciwgJiRwX29wdGlvbnMpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gV29ya2luZyB
2YXJpYWJsZXMKICAgICRwX2ZpbGVuYW1lID0gJHBfZmlsZWRlc2NyWydmaWxlbmFtZSddOwogICAgaWYgKG
lzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9BRERfUEFUSF0pKSB7CiAgICAgICRwX2FkZF9kaXIgPSAkc
F9vcHRpb25zW1BDTFpJUF9PUFRfQUREX1BBVEhdOwogICAgfQogICAgZWxzZSB7CiAgICAgICRwX2FkZF9k
aXIgPSAnJzsKICAgIH0KICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX1BBVEh
dKSkgewogICAgICAkcF9yZW1vdmVfZGlyID0gJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIXT
sKICAgIH0KICAgIGVsc2UgewogICAgICAkcF9yZW1vdmVfZGlyID0gJyc7CiAgICB9CiAgICBpZiAoaXNzZ
XQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUEFUSF0pKSB7CiAgICAgICRwX3JlbW92ZV9h
bGxfZGlyID0gJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUEFUSF07CiAgICB9CiAgICBlbHN
lIHsKICAgICAgJHBfcmVtb3ZlX2FsbF9kaXIgPSAwOwogICAgfQoKCiAgICAvLyAtLS0tLSBMb29rIGZvci
BmdWxsIG5hbWUgY2hhbmdlCiAgICBpZiAoaXNzZXQoJHBfZmlsZWRlc2NyWyduZXdfZnVsbF9uYW1lJ10pK
SB7CiAgICAgIC8vIC0tLS0tIFJlbW92ZSBkcml2ZSBsZXR0ZXIgaWYgYW55CiAgICAgICR2X3N0b3JlZF9m
aWxlbmFtZSA9IFBjbFppcFV0aWxUcmFuc2xhdGVXaW5QYXRoKCRwX2ZpbGVkZXNjclsnbmV3X2Z1bGxfbmF
tZSddKTsKICAgIH0KCiAgICAvLyAtLS0tLSBMb29rIGZvciBwYXRoIGFuZC9vciBzaG9ydCBuYW1lIGNoYW
5nZQogICAgZWxzZSB7CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBzaG9ydCBuYW1lIGNoYW5nZQogICAgI
CAvLyBJdHMgd2hlbiB3ZSBjYWhuZ2UganVzdCB0aGUgZmlsZW5hbWUgYnV0IG5vdCB0aGUgcGF0aAogICAg
ICBpZiAoaXNzZXQoJHBfZmlsZWRlc2NyWyduZXdfc2hvcnRfbmFtZSddKSkgewogICAgICAgICR2X3BhdGh
faW5mbyA9IHBhdGhpbmZvKCRwX2ZpbGVuYW1lKTsKICAgICAgICAkdl9kaXIgPSAnJzsKICAgICAgICBpZi
AoJHZfcGF0aF9pbmZvWydkaXJuYW1lJ10gIT0gJycpIHsKICAgICAgICAgICR2X2RpciA9ICR2X3BhdGhfa
W5mb1snZGlybmFtZSddLicvJzsKICAgICAgICB9CiAgICAgICAgJHZfc3RvcmVkX2ZpbGVuYW1lID0gJHZf
ZGlyLiRwX2ZpbGVkZXNjclsnbmV3X3Nob3J0X25hbWUnXTsKICAgICAgfQogICAgICBlbHNlIHsKICAgICA
gICAvLyAtLS0tLSBDYWxjdWxhdGUgdGhlIHN0b3JlZCBmaWxlbmFtZQogICAgICAgICR2X3N0b3JlZF9maW
xlbmFtZSA9ICRwX2ZpbGVuYW1lOwogICAgICB9CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBhbGwgcGF0a
CB0byByZW1vdmUKICAgICAgaWYgKCRwX3JlbW92ZV9hbGxfZGlyKSB7CiAgICAgICAgJHZfc3RvcmVkX2Zp
bGVuYW1lID0gYmFzZW5hbWUoJHBfZmlsZW5hbWUpOwogICAgICB9CiAgICAgIC8vIC0tLS0tIExvb2sgZm9
yIHBhcnRpYWwgcGF0aCByZW1vdmUKICAgICAgZWxzZSBpZiAoJHBfcmVtb3ZlX2RpciAhPSAiIikgewogIC
AgICAgIGlmIChzdWJzdHIoJHBfcmVtb3ZlX2RpciwgLTEpICE9ICcvJykKICAgICAgICAgICRwX3JlbW92Z
V9kaXIgLj0gIi8iOwoKICAgICAgICBpZiAoICAgKHN1YnN0cigkcF9maWxlbmFtZSwgMCwgMikgPT0gIi4v
IikKICAgICAgICAgICAgfHwgKHN1YnN0cigkcF9yZW1vdmVfZGlyLCAwLCAyKSA9PSAiLi8iKSkgewoKICA
gICAgICAgIGlmICggICAoc3Vic3RyKCRwX2ZpbGVuYW1lLCAwLCAyKSA9PSAiLi8iKQogICAgICAgICAgIC
AgICYmIChzdWJzdHIoJHBfcmVtb3ZlX2RpciwgMCwgMikgIT0gIi4vIikpIHsKICAgICAgICAgICAgJHBfc
mVtb3ZlX2RpciA9ICIuLyIuJHBfcmVtb3ZlX2RpcjsKICAgICAgICAgIH0KICAgICAgICAgIGlmICggICAo
c3Vic3RyKCRwX2ZpbGVuYW1lLCAwLCAyKSAhPSAiLi8iKQogICAgICAgICAgICAgICYmIChzdWJzdHIoJHB
fcmVtb3ZlX2RpciwgMCwgMikgPT0gIi4vIikpIHsKICAgICAgICAgICAgJHBfcmVtb3ZlX2RpciA9IHN1Yn
N0cigkcF9yZW1vdmVfZGlyLCAyKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICR2X2NvbXBhc
mUgPSBQY2xaaXBVdGlsUGF0aEluY2x1c2lvbigkcF9yZW1vdmVfZGlyLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAkdl9zdG9yZWRfZmlsZW5hbWUpOwogICAgICAgIGlmICgkdl9
jb21wYXJlID4gMCkgewogICAgICAgICAgaWYgKCR2X2NvbXBhcmUgPT0gMikgewogICAgICAgICAgICAkdl
9zdG9yZWRfZmlsZW5hbWUgPSAiIjsKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgewogICAgICAgICAgI
CAkdl9zdG9yZWRfZmlsZW5hbWUgPSBzdWJzdHIoJHZfc3RvcmVkX2ZpbGVuYW1lLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKCRwX3JlbW92ZV9kaXIpKTsKICAgICAgICAgIH0
KICAgICAgICB9CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIFJlbW92ZSBkcml2ZSBsZXR0ZXIgaWYgYW55Ci
AgICAgICR2X3N0b3JlZF9maWxlbmFtZSA9IFBjbFppcFV0aWxUcmFuc2xhdGVXaW5QYXRoKCR2X3N0b3JlZ
F9maWxlbmFtZSk7CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBwYXRoIHRvIGFkZAogICAgICBpZiAoJHBf
YWRkX2RpciAhPSAiIikgewogICAgICAgIGlmIChzdWJzdHIoJHBfYWRkX2RpciwgLTEpID09ICIvIikKICA
gICAgICAgICR2X3N0b3JlZF9maWxlbmFtZSA9ICRwX2FkZF9kaXIuJHZfc3RvcmVkX2ZpbGVuYW1lOwogIC
AgICAgIGVsc2UKICAgICAgICAgICR2X3N0b3JlZF9maWxlbmFtZSA9ICRwX2FkZF9kaXIuIi8iLiR2X3N0b
3JlZF9maWxlbmFtZTsKICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIEZpbGVuYW1lIChyZWR1Y2UgdGhl
IHBhdGggb2Ygc3RvcmVkIG5hbWUpCiAgICAkdl9zdG9yZWRfZmlsZW5hbWUgPSBQY2xaaXBVdGlsUGF0aFJ
lZHVjdGlvbigkdl9zdG9yZWRfZmlsZW5hbWUpOwogICAgJHBfZmlsZWRlc2NyWydzdG9yZWRfZmlsZW5hbW
UnXSA9ICR2X3N0b3JlZF9maWxlbmFtZTsKCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZ
XN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy
8gRnVuY3Rpb24gOiBwcml2V3JpdGVGaWxlSGVhZGVyKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyY
W1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGl
vbiBwcml2V3JpdGVGaWxlSGVhZGVyKCYkcF9oZWFkZXIpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy
8gLS0tLS0gU3RvcmUgdGhlIG9mZnNldCBwb3NpdGlvbiBvZiB0aGUgZmlsZQogICAgJHBfaGVhZGVyWydvZ
mZzZXQnXSA9IGZ0ZWxsKCR0aGlzLT56aXBfZmQpOwoKICAgIC8vIC0tLS0tIFRyYW5zZm9ybSBVTklYIG10
aW1lIHRvIERPUyBmb3JtYXQgbWRhdGUvbXRpbWUKICAgICR2X2RhdGUgPSBnZXRkYXRlKCRwX2hlYWRlcls
nbXRpbWUnXSk7CiAgICAkdl9tdGltZSA9ICgkdl9kYXRlWydob3VycyddPDwxMSkgKyAoJHZfZGF0ZVsnbW
ludXRlcyddPDw1KSArICR2X2RhdGVbJ3NlY29uZHMnXS8yOwogICAgJHZfbWRhdGUgPSAoKCR2X2RhdGVbJ
3llYXInXS0xOTgwKTw8OSkgKyAoJHZfZGF0ZVsnbW9uJ108PDUpICsgJHZfZGF0ZVsnbWRheSddOwoKICAg
IC8vIC0tLS0tIFBhY2tlZCBkYXRhCiAgICAkdl9iaW5hcnlfZGF0YSA9IHBhY2soIlZ2dnZ2dlZWVnZ2Iiw
gMHgwNDAzNGI1MCwKCSAgICAgICAgICAgICAgICAgICAgICAkcF9oZWFkZXJbJ3ZlcnNpb25fZXh0cmFjdG
VkJ10sICRwX2hlYWRlclsnZmxhZyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICRwX2hlYWRlclsnY
29tcHJlc3Npb24nXSwgJHZfbXRpbWUsICR2X21kYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICRw
X2hlYWRlclsnY3JjJ10sICRwX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ10sCgkJCQkJCSAgJHBfaGVhZGV
yWydzaXplJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKCRwX2hlYWRlclsnc3RvcmVkX2
ZpbGVuYW1lJ10pLAoJCQkJCQkgICRwX2hlYWRlclsnZXh0cmFfbGVuJ10pOwoKICAgIC8vIC0tLS0tIFdya
XRlIHRoZSBmaXJzdCAxNDggYnl0ZXMgb2YgdGhlIGhlYWRlciBpbiB0aGUgYXJjaGl2ZQogICAgZnB1dHMo
JHRoaXMtPnppcF9mZCwgJHZfYmluYXJ5X2RhdGEsIDMwKTsKCiAgICAvLyAtLS0tLSBXcml0ZSB0aGUgdmF
yaWFibGUgZmllbGRzCiAgICBpZiAoc3RybGVuKCRwX2hlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10pICE9ID
ApCiAgICB7CiAgICAgIGZwdXRzKCR0aGlzLT56aXBfZmQsICRwX2hlYWRlclsnc3RvcmVkX2ZpbGVuYW1lJ
10sIHN0cmxlbigkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddKSk7CiAgICB9CiAgICBpZiAoJHBfaGVh
ZGVyWydleHRyYV9sZW4nXSAhPSAwKQogICAgewogICAgICBmcHV0cygkdGhpcy0+emlwX2ZkLCAkcF9oZWF
kZXJbJ2V4dHJhJ10sICRwX2hlYWRlclsnZXh0cmFfbGVuJ10pOwogICAgfQoKICAgIC8vIC0tLS0tIFJldH
VybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZXcml0ZUNlbnRyYWxGaWxlSGVhZGVyKCkKIC
AvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2V3JpdGVDZW50cmFsRmlsZUhlYWRlcigmJHBfaGV
hZGVyKQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC8vIFRCQwogICAgLy9mb3IocmVzZXQoJHBfaGVhZG
VyKTsgJGtleSA9IGtleSgkcF9oZWFkZXIpOyBuZXh0KCRwX2hlYWRlcikpIHsKICAgIC8vfQoKICAgIC8vI
C0tLS0tIFRyYW5zZm9ybSBVTklYIG10aW1lIHRvIERPUyBmb3JtYXQgbWRhdGUvbXRpbWUKICAgICR2X2Rh
dGUgPSBnZXRkYXRlKCRwX2hlYWRlclsnbXRpbWUnXSk7CiAgICAkdl9tdGltZSA9ICgkdl9kYXRlWydob3V
ycyddPDwxMSkgKyAoJHZfZGF0ZVsnbWludXRlcyddPDw1KSArICR2X2RhdGVbJ3NlY29uZHMnXS8yOwogIC
AgJHZfbWRhdGUgPSAoKCR2X2RhdGVbJ3llYXInXS0xOTgwKTw8OSkgKyAoJHZfZGF0ZVsnbW9uJ108PDUpI
CsgJHZfZGF0ZVsnbWRheSddOwoKCiAgICAvLyAtLS0tLSBQYWNrZWQgZGF0YQogICAgJHZfYmluYXJ5X2Rh
dGEgPSBwYWNrKCJWdnZ2dnZ2VlZWdnZ2dnZWViIsIDB4MDIwMTRiNTAsCgkgICAgICAgICAgICAgICAgICA
gICAgJHBfaGVhZGVyWyd2ZXJzaW9uJ10sICRwX2hlYWRlclsndmVyc2lvbl9leHRyYWN0ZWQnXSwKICAgIC
AgICAgICAgICAgICAgICAgICAgICAkcF9oZWFkZXJbJ2ZsYWcnXSwgJHBfaGVhZGVyWydjb21wcmVzc2lvb
iddLAoJCQkJCQkgICR2X210aW1lLCAkdl9tZGF0ZSwgJHBfaGVhZGVyWydjcmMnXSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAkcF9oZWFkZXJbJ2NvbXByZXNzZWRfc2l6ZSddLCAkcF9oZWFkZXJbJ3NpemUnXSw
KICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oJHBfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXS
ksCgkJCQkJCSAgJHBfaGVhZGVyWydleHRyYV9sZW4nXSwgJHBfaGVhZGVyWydjb21tZW50X2xlbiddLAogI
CAgICAgICAgICAgICAgICAgICAgICAgICRwX2hlYWRlclsnZGlzayddLCAkcF9oZWFkZXJbJ2ludGVybmFs
J10sCgkJCQkJCSAgJHBfaGVhZGVyWydleHRlcm5hbCddLCAkcF9oZWFkZXJbJ29mZnNldCddKTsKCiAgICA
vLyAtLS0tLSBXcml0ZSB0aGUgNDIgYnl0ZXMgb2YgdGhlIGhlYWRlciBpbiB0aGUgemlwIGZpbGUKICAgIG
ZwdXRzKCR0aGlzLT56aXBfZmQsICR2X2JpbmFye
V9kYXRhLCA0Nik7CgogICAgLy8gLS0tLS0gV3JpdGUgdGhlIHZhcmlhYmxlIGZpZWxkcwogICAgaWYgKHN0
cmxlbigkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddKSAhPSAwKQogICAgewogICAgICBmcHV0cygkdGh
pcy0+emlwX2ZkLCAkcF9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddLCBzdHJsZW4oJHBfaGVhZGVyWydzdG
9yZWRfZmlsZW5hbWUnXSkpOwogICAgfQogICAgaWYgKCRwX2hlYWRlclsnZXh0cmFfbGVuJ10gIT0gMCkKI
CAgIHsKICAgICAgZnB1dHMoJHRoaXMtPnppcF9mZCwgJHBfaGVhZGVyWydleHRyYSddLCAkcF9oZWFkZXJb
J2V4dHJhX2xlbiddKTsKICAgIH0KICAgIGlmICgkcF9oZWFkZXJbJ2NvbW1lbnRfbGVuJ10gIT0gMCkKICA
gIHsKICAgICAgZnB1dHMoJHRoaXMtPnppcF9mZCwgJHBfaGVhZGVyWydjb21tZW50J10sICRwX2hlYWRlcl
snY29tbWVudF9sZW4nXSk7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzd
Wx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIE
Z1bmN0aW9uIDogcHJpdldyaXRlQ2VudHJhbEhlYWRlcigpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhc
mFtZXRlcnMgOgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3R
pb24gcHJpdldyaXRlQ2VudHJhbEhlYWRlcigkcF9uYl9lbnRyaWVzLCAkcF9zaXplLCAkcF9vZmZzZXQsIC
RwX2NvbW1lbnQpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gUGFja2VkIGRhdGEKICAgI
CR2X2JpbmFyeV9kYXRhID0gcGFjaygiVnZ2dnZWVnYiLCAweDA2MDU0YjUwLCAwLCAwLCAkcF9uYl9lbnRy
aWVzLAoJICAgICAgICAgICAgICAgICAgICAgICRwX25iX2VudHJpZXMsICRwX3NpemUsCgkJCQkJCSAgJHB
fb2Zmc2V0LCBzdHJsZW4oJHBfY29tbWVudCkpOwoKICAgIC8vIC0tLS0tIFdyaXRlIHRoZSAyMiBieXRlcy
BvZiB0aGUgaGVhZGVyIGluIHRoZSB6aXAgZmlsZQogICAgZnB1dHMoJHRoaXMtPnppcF9mZCwgJHZfYmluY
XJ5X2RhdGEsIDIyKTsKCiAgICAvLyAtLS0tLSBXcml0ZSB0aGUgdmFyaWFibGUgZmllbGRzCiAgICBpZiAo
c3RybGVuKCRwX2NvbW1lbnQpICE9IDApCiAgICB7CiAgICAgIGZwdXRzKCR0aGlzLT56aXBfZmQsICRwX2N
vbW1lbnQsIHN0cmxlbigkcF9jb21tZW50KSk7CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZX
R1cm4gJHZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLQogIC8vIEZ1bmN0aW9uIDogcHJpdkxpc3QoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbW
V0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9u
IHByaXZMaXN0KCYkcF9saXN0KQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIE1hZ2ljIHF
1b3RlcyB0cmljawogICAgJHRoaXMtPnByaXZEaXNhYmxlTWFnaWNRdW90ZXMoKTsKCiAgICAvLyAtLS0tLS
BPcGVuIHRoZSB6aXAgZmlsZQogICAgaWYgKCgkdGhpcy0+emlwX2ZkID0gQGZvcGVuKCR0aGlzLT56aXBuY
W1lLCAncmInKSkgPT0gMCkKICAgIHsKICAgICAgLy8gLS0tLS0gTWFnaWMgcXVvdGVzIHRyaWNrCiAgICAg
ICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiA
gICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfUkVBRF9PUEVOX0ZBSUwsICdVbmFibGUgdG
8gb3BlbiBhcmNoaXZlIFwnJy4kdGhpcy0+emlwbmFtZS4nXCcgaW4gYmluYXJ5IHJlYWQgbW9kZScpOwoKI
CAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgfQoK
ICAgIC8vIC0tLS0tIFJlYWQgdGhlIGNlbnRyYWwgZGlyZWN0b3J5IGluZm9ybWF0aW9ucwogICAgJHZfY2V
udHJhbF9kaXIgPSBhcnJheSgpOwogICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdlJlYWRFbmRDZW
50cmFsRGlyKCR2X2NlbnRyYWxfZGlyKSkgIT0gMSkKICAgIHsKICAgICAgJHRoaXMtPnByaXZTd2FwQmFja
01hZ2ljUXVvdGVzKCk7CiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gR28g
dG8gYmVnaW5uaW5nIG9mIENlbnRyYWwgRGlyCiAgICBAcmV3aW5kKCR0aGlzLT56aXBfZmQpOwogICAgaWY
gKEBmc2VlaygkdGhpcy0+emlwX2ZkLCAkdl9jZW50cmFsX2Rpclsnb2Zmc2V0J10pKQogICAgewogICAgIC
AkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogI
CAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfQVJDSElWRV9aSVAsICdJbnZh
bGlkIGFyY2hpdmUgc2l6ZScpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA
6OmVycm9yQ29kZSgpOwogICAgfQoKICAgIC8vIC0tLS0tIFJlYWQgZWFjaCBlbnRyeQogICAgZm9yICgkaT
0wOyAkaTwkdl9jZW50cmFsX2RpclsnZW50cmllcyddOyAkaSsrKQogICAgewogICAgICAvLyAtLS0tLSBSZ
WFkIHRoZSBmaWxlIGhlYWRlcgogICAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2UmVhZENlbnRy
YWxGaWxlSGVhZGVyKCR2X2hlYWRlcikpICE9IDEpCiAgICAgIHsKICAgICAgICAkdGhpcy0+cHJpdlN3YXB
CYWNrTWFnaWNRdW90ZXMoKTsKICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICB9CiAgICAgICR2X2
hlYWRlclsnaW5kZXgnXSA9ICRpOwoKICAgICAgLy8gLS0tLS0gR2V0IHRoZSBvbmx5IGludGVyZXN0aW5nI
GF0dHJpYnV0ZXMKICAgICAgJHRoaXMtPnByaXZDb252ZXJ0SGVhZGVyMkZpbGVJbmZvKCR2X2hlYWRlciwg
JHBfbGlzdFskaV0pOwogICAgICB1bnNldCgkdl9oZWFkZXIpOwogICAgfQoKICAgIC8vIC0tLS0tIENsb3N
lIHRoZSB6aXAgZmlsZQogICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CgogICAgLy8gLS0tLS0gTWFnaWMgcX
VvdGVzIHRyaWNrCiAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAvLyAtLS0tL
SBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8
vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2Q29udmVydEhlYWRlcjJGaWxlSW5mb
ygpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgZmlsZSBpbmZv
cm1hdGlvbnMgZnJvbSB0aGUgY2VudHJhbCBkaXJlY3RvcnkKICAvLyAgIGVudHJpZXMgYW5kIGV4dHJhY3Q
gdGhlIGludGVyZXN0aW5nIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIGdpdmVuIGJhY2suCiAgLy8gICBUaG
UgcmVzdWx0aW5nIGZpbGUgaW5mb3MgYXJlIHNldCBpbiB0aGUgYXJyYXkgJHBfaW5mbwogIC8vICAgICAkc
F9pbmZvWydmaWxlbmFtZSddIDogRmlsZW5hbWUgd2l0aCBmdWxsIHBhdGguIEdpdmVuIGJ5IHVzZXIgKGFk
ZCksCiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYWN0ZWQgaW4gdGhlIGZpbGVzeXN0ZW0
gKGV4dHJhY3QpLgogIC8vICAgICAkcF9pbmZvWydzdG9yZWRfZmlsZW5hbWUnXSA6IFN0b3JlZCBmaWxlbm
FtZSBpbiB0aGUgYXJjaGl2ZS4KICAvLyAgICAgJHBfaW5mb1snc2l6ZSddID0gU2l6ZSBvZiB0aGUgZmlsZ
S4KICAvLyAgICAgJHBfaW5mb1snY29tcHJlc3NlZF9zaXplJ10gPSBDb21wcmVzc2VkIHNpemUgb2YgdGhl
IGZpbGUuCiAgLy8gICAgICRwX2luZm9bJ210aW1lJ10gPSBMYXN0IG1vZGlmaWNhdGlvbiBkYXRlIG9mIHR
oZSBmaWxlLgogIC8vICAgICAkcF9pbmZvWydjb21tZW50J10gPSBDb21tZW50IGFzc29jaWF0ZWQgd2l0aC
B0aGUgZmlsZS4KICAvLyAgICAgJHBfaW5mb1snZm9sZGVyJ10gPSB0cnVlL2ZhbHNlIDogaW5kaWNhdGVzI
GlmIHRoZSBlbnRyeSBpcyBhIGZvbGRlciBvciBub3QuCiAgLy8gICAgICRwX2luZm9bJ3N0YXR1cyddID0g
c3RhdHVzIG9mIHRoZSBhY3Rpb24gb24gdGhlIGZpbGUuCiAgLy8gICAgICRwX2luZm9bJ2NyYyddID0gQ1J
DIG9mIHRoZSBmaWxlIGNvbnRlbnQuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6Ci
AgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2Q29udmVydEhlYWRlcjJGaWxlSW5mbygk
cF9oZWFkZXIsICYkcF9pbmZvKQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIEdldCB0aGU
gaW50ZXJlc3RpbmcgYXR0cmlidXRlcwogICAgJHZfdGVtcF9wYXRoID0gUGNsWmlwVXRpbFBhdGhSZWR1Y3
Rpb24oJHBfaGVhZGVyWydmaWxlbmFtZSddKTsKICAgICRwX2luZm9bJ2ZpbGVuYW1lJ10gPSAkdl90ZW1wX
3BhdGg7CiAgICAkdl90ZW1wX3BhdGggPSBQY2xaaXBVdGlsUGF0aFJlZHVjdGlvbigkcF9oZWFkZXJbJ3N0
b3JlZF9maWxlbmFtZSddKTsKICAgICRwX2luZm9bJ3N0b3JlZF9maWxlbmFtZSddID0gJHZfdGVtcF9wYXR
oOwogICAgJHBfaW5mb1snc2l6ZSddID0gJHBfaGVhZGVyWydzaXplJ107CiAgICAkcF9pbmZvWydjb21wcm
Vzc2VkX3NpemUnXSA9ICRwX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ107CiAgICAkcF9pbmZvWydtdGltZ
SddID0gJHBfaGVhZGVyWydtdGltZSddOwogICAgJHBfaW5mb1snY29tbWVudCddID0gJHBfaGVhZGVyWydj
b21tZW50J107CiAgICAkcF9pbmZvWydmb2xkZXInXSA9ICgoJHBfaGVhZGVyWydleHRlcm5hbCddJjB4MDA
wMDAwMTApPT0weDAwMDAwMDEwKTsKICAgICRwX2luZm9bJ2luZGV4J10gPSAkcF9oZWFkZXJbJ2luZGV4J1
07CiAgICAkcF9pbmZvWydzdGF0dXMnXSA9ICRwX2hlYWRlclsnc3RhdHVzJ107CiAgICAkcF9pbmZvWydjc
mMnXSA9ICRwX2hlYWRlclsnY3JjJ107CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVz
dWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vI
EZ1bmN0aW9uIDogcHJpdkV4dHJhY3RCeVJ1bGUoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIEV4dHJh
Y3QgYSBmaWxlIG9yIGRpcmVjdG9yeSBkZXBlbmRpbmcgb2YgcnVsZXMgKGJ5IGluZGV4LCBieSBuYW1lLCA
uLi4pCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICAkcF9maWxlX2xpc3QgOiBBbiBhcnJheSB3aGVyZSB3aW
xsIGJlIHBsYWNlZCB0aGUgcHJvcGVydGllcyBvZiBlYWNoCiAgLy8gICAgICAgICAgICAgICAgICBleHRyY
WN0ZWQgZmlsZQogIC8vICAgJHBfcGF0aCA6IFBhdGggdG8gYWRkIHdoaWxlIHdyaXRpbmcgdGhlIGV4dHJh
Y3RlZCBmaWxlcwogIC8vICAgJHBfcmVtb3ZlX3BhdGggOiBQYXRoIHRvIHJlbW92ZSAoZnJvbSB0aGUgZml
sZSBtZW1vcml6ZWQgcGF0aCkgd2hpbGUgd3JpdGluZyB0aGUKICAvLyAgICAgICAgICAgICAgICAgICAgZX
h0cmFjdGVkIGZpbGVzLiBJZiB0aGUgcGF0aCBkb2VzIG5vdCBtYXRjaCB0aGUgZmlsZSBwYXRoLAogIC8vI
CAgICAgICAgICAgICAgICAgICB0aGUgZmlsZSBpcyBleHRyYWN0ZWQgd2l0aCBpdHMgbWVtb3JpemVkIHBh
dGguCiAgLy8gICAgICAgICAgICAgICAgICAgICRwX3JlbW92ZV9wYXRoIGRvZXMgbm90IGFwcGx5IHRvICd
saXN0JyBtb2RlLgogIC8vICAgICAgICAgICAgICAgICAgICAkcF9wYXRoIGFuZCAkcF9yZW1vdmVfcGF0aC
BhcmUgY29tbXVsYXRpdmUuCiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gICAxIG9uIHN1Y2Nlc3MsMCBvc
iBsZXNzIG9uIGVycm9yIChzZWUgZXJyb3IgY29kZSBsaXN0KQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiA
gZnVuY3Rpb24gcHJpdkV4dHJhY3RCeVJ1bGUoJiRwX2ZpbGVfbGlzdCwgJHBfcGF0aCwgJHBfcmVtb3ZlX3
BhdGgsICRwX3JlbW92ZV9hbGxfcGF0aCwgJiRwX29wdGlvbnMpCiAgewogICAgJHZfcmVzdWx0PTE7CgogI
CAgLy8gLS0tLS0gTWFnaWMgcXVvdGVzIHRyaWNrCiAgICAkdGhpcy0+cHJpdkRpc2FibGVNYWdpY1F1b3Rl
cygpOwoKICAgIC8vIC0tLS0tIENoZWNrIHRoZSBwYXRoCiAgICBpZiAoICAgKCRwX3BhdGggPT0gIiIpCgk
gICAgfHwgKCAgIChzdWJzdHIoJHBfcGF0aCwgMCwgMSkgIT0gIi8iKQoJCSAgICAmJiAoc3Vic3RyKCRwX3
BhdGgsIDAsIDMpICE9ICIuLi8iKQoJCQkmJiAoc3Vic3RyKCRwX3BhdGgsMSwyKSE9IjovIikpKQogICAgI
CAkcF9wYXRoID0gIi4vIi4kcF9wYXRoOwoKICAgIC8vIC0tLS0tIFJlZHVjZSB0aGUgcGF0aCBsYXN0IChh
bmQgZHVwbGljYXRlZCkgJy8nCiAgICBpZiAoKCRwX3BhdGggIT0gIi4vIikgJiYgKCRwX3BhdGggIT0gIi8
iKSkKICAgIHsKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgdGhlIHBhdGggZW5kICcvJwogICAgICB3aGlsZS
Aoc3Vic3RyKCRwX3BhdGgsIC0xKSA9PSAiLyIpCiAgICAgIHsKICAgICAgICAkcF9wYXRoID0gc3Vic3RyK
CRwX3BhdGgsIDAsIHN0cmxlbigkcF9wYXRoKS0xKTsKICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIExv
b2sgZm9yIHBhdGggdG8gcmVtb3ZlIGZvcm1hdCAoc2hvdWxkIGVuZCBieSAvKQogICAgaWYgKCgkcF9yZW1
vdmVfcGF0aCAhPSAiIikgJiYgKHN1YnN0cigkcF9yZW1vdmVfcGF0aCwgLTEpICE9ICcvJykpCiAgICB7Ci
AgICAgICRwX3JlbW92ZV9wYXRoIC49ICcvJzsKICAgIH0KICAgICRwX3JlbW92ZV9wYXRoX3NpemUgPSBzd
HJsZW4oJHBfcmVtb3ZlX3BhdGgpOwoKICAgIC8v
IC0tLS0tIE9wZW4gdGhlIHppcCBmaWxlCiAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2T3BlbkZ
kKCdyYicpKSAhPSAxKQogICAgewogICAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKIC
AgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBjZW50cmFsIGRpc
mVjdG9yeSBpbmZvcm1hdGlvbnMKICAgICR2X2NlbnRyYWxfZGlyID0gYXJyYXkoKTsKICAgIGlmICgoJHZf
cmVzdWx0ID0gJHRoaXMtPnByaXZSZWFkRW5kQ2VudHJhbERpcigkdl9jZW50cmFsX2RpcikpICE9IDEpCiA
gICB7CiAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSB6aXAgZmlsZQogICAgICAkdGhpcy0+cHJpdkNsb3NlRm
QoKTsKICAgICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgogICAgICByZXR1cm4gJHZfc
mVzdWx0OwogICAgfQoKICAgIC8vIC0tLS0tIFN0YXJ0IGF0IGJlZ2lubmluZyBvZiBDZW50cmFsIERpcgog
ICAgJHZfcG9zX2VudHJ5ID0gJHZfY2VudHJhbF9kaXJbJ29mZnNldCddOwoKICAgIC8vIC0tLS0tIFJlYWQ
gZWFjaCBlbnRyeQogICAgJGpfc3RhcnQgPSAwOwogICAgZm9yICgkaT0wLCAkdl9uYl9leHRyYWN0ZWQ9MD
sgJGk8JHZfY2VudHJhbF9kaXJbJ2VudHJpZXMnXTsgJGkrKykKICAgIHsKCiAgICAgIC8vIC0tLS0tIFJlY
WQgbmV4dCBDZW50cmFsIGRpciBlbnRyeQogICAgICBAcmV3aW5kKCR0aGlzLT56aXBfZmQpOwogICAgICBp
ZiAoQGZzZWVrKCR0aGlzLT56aXBfZmQsICR2X3Bvc19lbnRyeSkpCiAgICAgIHsKICAgICAgICAvLyAtLS0
tLSBDbG9zZSB0aGUgemlwIGZpbGUKICAgICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAkdG
hpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgI
CAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX0FSQ0hJVkVfWklQLCAnSW52
YWxpZCBhcmNoaXZlIHNpemUnKTsKCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgcmV0dXJuIFB
jbFppcDo6ZXJyb3JDb2RlKCk7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZpbGUgaGVhZG
VyCiAgICAgICR2X2hlYWRlciA9IGFycmF5KCk7CiAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnBya
XZSZWFkQ2VudHJhbEZpbGVIZWFkZXIoJHZfaGVhZGVyKSkgIT0gMSkKICAgICAgewogICAgICAgIC8vIC0t
LS0tIENsb3NlIHRoZSB6aXAgZmlsZQogICAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICR
0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogIC
AgICB9CgogICAgICAvLyAtLS0tLSBTdG9yZSB0aGUgaW5kZXgKICAgICAgJHZfaGVhZGVyWydpbmRleCddI
D0gJGk7CgogICAgICAvLyAtLS0tLSBTdG9yZSB0aGUgZmlsZSBwb3NpdGlvbgogICAgICAkdl9wb3NfZW50
cnkgPSBmdGVsbCgkdGhpcy0+emlwX2ZkKTsKCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHRoZSBzcGVjaWZ
pYyBleHRyYWN0IHJ1bGVzCiAgICAgICR2X2V4dHJhY3QgPSBmYWxzZTsKCiAgICAgIC8vIC0tLS0tIExvb2
sgZm9yIGV4dHJhY3QgYnkgbmFtZSBydWxlCiAgICAgIGlmICggICAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaS
VBfT1BUX0JZX05BTUVdKSkKICAgICAgICAgICYmICgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfTkFNRV0g
IT0gMCkpIHsKCiAgICAgICAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSBmaWxlbmFtZSBpcyBpbiB0aGUgbGl
zdAogICAgICAgICAgZm9yICgkaj0wOyAoJGo8c2l6ZW9mKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9OQU
1FXSkpICYmICghJHZfZXh0cmFjdCk7ICRqKyspIHsKCiAgICAgICAgICAgICAgLy8gLS0tLS0gTG9vayBmb
3IgYSBkaXJlY3RvcnkKICAgICAgICAgICAgICBpZiAoc3Vic3RyKCRwX29wdGlvbnNbUENMWklQX09QVF9C
WV9OQU1FXVskal0sIC0xKSA9PSAiLyIpIHsKCiAgICAgICAgICAgICAgICAgIC8vIC0tLS0tIExvb2sgaWY
gdGhlIGRpcmVjdG9yeSBpcyBpbiB0aGUgZmlsZW5hbWUgcGF0aAogICAgICAgICAgICAgICAgICBpZiAoIC
AgKHN0cmxlbigkdl9oZWFkZXJbJ3N0b3JlZF9maWxlbmFtZSddKSA+IHN0cmxlbigkcF9vcHRpb25zW1BDT
FpJUF9PUFRfQllfTkFNRV1bJGpdKSkKICAgICAgICAgICAgICAgICAgICAgICYmIChzdWJzdHIoJHZfaGVh
ZGVyWydzdG9yZWRfZmlsZW5hbWUnXSwgMCwgc3RybGVuKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9OQU1
FXVskal0pKSA9PSAkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfTkFNRV1bJGpdKSkgewogICAgICAgICAgIC
AgICAgICAgICAgJHZfZXh0cmFjdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgI
CB9CiAgICAgICAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgYSBmaWxlbmFtZQogICAgICAgICAgICAgIGVs
c2VpZiAoJHZfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXSA9PSAkcF9vcHRpb25zW1BDTFpJUF9PUFRfQll
fTkFNRV1bJGpdKSB7CiAgICAgICAgICAgICAgICAgICR2X2V4dHJhY3QgPSB0cnVlOwogICAgICAgICAgIC
AgIH0KICAgICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZXh0cmFjdCBieSBlc
mVnIHJ1bGUKICAgICAgLy8gZXJlZygpIGlzIGRlcHJlY2F0ZWQgd2l0aCBQSFAgNS4zCiAgICAgIC8qCiAg
ICAgIGVsc2UgaWYgKCAgIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfRVJFR10pKQogICAgICA
gICAgICAgICAmJiAoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0VSRUddICE9ICIiKSkgewoKICAgICAgIC
AgIGlmIChlcmVnKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9FUkVHXSwgJHZfaGVhZGVyWydzdG9yZWRfZ
mlsZW5hbWUnXSkpIHsKICAgICAgICAgICAgICAkdl9leHRyYWN0ID0gdHJ1ZTsKICAgICAgICAgIH0KICAg
ICAgfQogICAgICAqLwoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZXh0cmFjdCBieSBwcmVnIHJ1bGUKICA
gICAgZWxzZSBpZiAoICAgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9QUkVHXSkpCiAgICAgIC
AgICAgICAgICYmICgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfUFJFR10gIT0gIiIpKSB7CgogICAgICAgI
CAgaWYgKHByZWdfbWF0Y2goJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX1BSRUddLCAkdl9oZWFkZXJbJ3N0
b3JlZF9maWxlbmFtZSddKSkgewogICAgICAgICAgICAgICR2X2V4dHJhY3QgPSB0cnVlOwogICAgICAgICA
gfQogICAgICB9CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBleHRyYWN0IGJ5IGluZGV4IHJ1bGUKICAgIC
AgZWxzZSBpZiAoICAgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9JTkRFWF0pKQogICAgICAgI
CAgICAgICAmJiAoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0lOREVYXSAhPSAwKSkgewoKICAgICAgICAg
IC8vIC0tLS0tIExvb2sgaWYgdGhlIGluZGV4IGlzIGluIHRoZSBsaXN0CiAgICAgICAgICBmb3IgKCRqPSR
qX3N0YXJ0OyAoJGo8c2l6ZW9mKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9JTkRFWF0pKSAmJiAoISR2X2
V4dHJhY3QpOyAkaisrKSB7CgogICAgICAgICAgICAgIGlmICgoJGk+PSRwX29wdGlvbnNbUENMWklQX09QV
F9CWV9JTkRFWF1bJGpdWydzdGFydCddKSAmJiAoJGk8PSRwX29wdGlvbnNbUENMWklQX09QVF9CWV9JTkRF
WF1bJGpdWydlbmQnXSkpIHsKICAgICAgICAgICAgICAgICAgJHZfZXh0cmFjdCA9IHRydWU7CiAgICAgICA
gICAgICAgfQogICAgICAgICAgICAgIGlmICgkaT49JHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0lOREVYXV
skal1bJ2VuZCddKSB7CiAgICAgICAgICAgICAgICAgICRqX3N0YXJ0ID0gJGorMTsKICAgICAgICAgICAgI
CB9CgogICAgICAgICAgICAgIGlmICgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfSU5ERVhdWyRqXVsnc3Rh
cnQnXT4kaSkgewogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICB9CiAgICAgICAgICB
9CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIG5vIHJ1bGUsIHdoaWNoIG1lYW5zIGV4dHJhY3
QgYWxsIHRoZSBhcmNoaXZlCiAgICAgIGVsc2UgewogICAgICAgICAgJHZfZXh0cmFjdCA9IHRydWU7CiAgI
CAgIH0KCgkgIC8vIC0tLS0tIENoZWNrIGNvbXByZXNzaW9uIG1ldGhvZAoJICBpZiAoICAgKCR2X2V4dHJh
Y3QpCgkgICAgICAmJiAoICAgKCR2X2hlYWRlclsnY29tcHJlc3Npb24nXSAhPSA4KQoJCSAgICAgICYmICg
kdl9oZWFkZXJbJ2NvbXByZXNzaW9uJ10gIT0gMCkpKSB7CiAgICAgICAgICAkdl9oZWFkZXJbJ3N0YXR1cy
ddID0gJ3Vuc3VwcG9ydGVkX2NvbXByZXNzaW9uJzsKCiAgICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBQQ
0xaSVBfT1BUX1NUT1BfT05fRVJST1IKICAgICAgICAgIGlmICggICAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xa
SVBfT1BUX1NUT1BfT05fRVJST1JdKSkKCQkgICAgICAmJiAoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1NUT1B
fT05fRVJST1JdPT09dHJ1ZSkpIHsKCiAgICAgICAgICAgICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljUX
VvdGVzKCk7CgogICAgICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfVU5TVVBQT
1JURURfQ09NUFJFU1NJT04sCgkJCSAgICAgICAgICAgICAgICAgICAgICAgIkZpbGVuYW1lICciLiR2X2hl
YWRlclsnc3RvcmVkX2ZpbGVuYW1lJ10uIicgaXMgIgoJCQkJICAJICAgIAkgIAkgICAuImNvbXByZXNzZWQ
gYnkgYW4gdW5zdXBwb3J0ZWQgY29tcHJlc3Npb24gIgoJCQkJICAJICAgIAkgIAkgICAuIm1ldGhvZCAoIi
4kdl9oZWFkZXJbJ2NvbXByZXNzaW9uJ10uIikgIik7CgogICAgICAgICAgICAgIHJldHVybiBQY2xaaXA6O
mVycm9yQ29kZSgpOwoJCSAgfQoJICB9CgoJICAvLyAtLS0tLSBDaGVjayBlbmNyeXB0ZWQgZmlsZXMKCSAg
aWYgKCgkdl9leHRyYWN0KSAmJiAoKCR2X2hlYWRlclsnZmxhZyddICYgMSkgPT0gMSkpIHsKICAgICAgICA
gICR2X2hlYWRlclsnc3RhdHVzJ10gPSAndW5zdXBwb3J0ZWRfZW5jcnlwdGlvbic7CgogICAgICAgICAgLy
8gLS0tLS0gTG9vayBmb3IgUENMWklQX09QVF9TVE9QX09OX0VSUk9SCiAgICAgICAgICBpZiAoICAgKGlzc
2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9TVE9QX09OX0VSUk9SXSkpCgkJICAgICAgJiYgKCRwX29wdGlv
bnNbUENMWklQX09QVF9TVE9QX09OX0VSUk9SXT09PXRydWUpKSB7CgogICAgICAgICAgICAgICR0aGlzLT5
wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKICAgICAgICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZy
hQQ0xaSVBfRVJSX1VOU1VQUE9SVEVEX0VOQ1JZUFRJT04sCgkJCSAgICAgICAgICAgICAgICAgICAgICAgI
lVuc3VwcG9ydGVkIGVuY3J5cHRpb24gZm9yICIKCQkJCSAgCSAgICAJICAJICAgLiIgZmlsZW5hbWUgJyIu
JHZfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXQoJCQkJCQkJCSAgIC4iJyIpOwoKICAgICAgICAgICAgICB
yZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKCQkgIH0KICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgZm
9yIHJlYWwgZXh0cmFjdGlvbgogICAgICBpZiAoKCR2X2V4dHJhY3QpICYmICgkdl9oZWFkZXJbJ3N0YXR1c
yddICE9ICdvaycpKSB7CiAgICAgICAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIy
RmlsZUluZm8oJHZfaGVhZGVyLAoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA
kcF9maWxlX2xpc3RbJHZfbmJfZXh0cmFjdGVkKytdKTsKICAgICAgICAgIGlmICgkdl9yZXN1bHQgIT0gMS
kgewogICAgICAgICAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAgICAgICR0aGlzLT5wc
ml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwogICAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAg
ICAgICB9CgogICAgICAgICAgJHZfZXh0cmFjdCA9IGZhbHNlOwogICAgICB9CgogICAgICAvLyAtLS0tLSB
Mb29rIGZvciByZWFsIGV4dHJhY3Rpb24KICAgICAgaWYgKCR2X2V4dHJhY3QpCiAgICAgIHsKCiAgICAgIC
AgLy8gLS0tLS0gR28gdG8gdGhlIGZpbGUgcG9zaXRpb24KICAgICAgICBAcmV3aW5kKCR0aGlzLT56aXBfZ
mQpOwogICAgICAgIGlmIChAZnNlZWsoJHRoaXMtPnppcF9mZCwgJHZfaGVhZGVyWydvZmZzZXQnXSkpCiAg
ICAgICAgewogICAgICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHppcCBmaWxlCiAgICAgICAgICAkdGhpcy0
+cHJpdkNsb3NlRmQoKTsKCiAgICAgICAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCi
AgICAgICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDT
FpJUF9FUlJfSU5WQUxJRF9BUkNISVZFX1pJUCwgJ0ludmFsaWQgYXJjaGl2ZSBzaXplJyk7CgogICAgICAg
ICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgICA
gICB9CgogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGV4dHJhY3Rpb24gYXMgc3RyaW5nCiAgICAgICAgaW
YgKCRwX29wdGlvbnNbUENMWklQX09QVF9FWFRSQUNUX0FTX1NUUklOR10pIHsKCiAgICAgICAgICAkdl9zd
HJpbmcgPSAnJzsKCiAgICAgICAgICAvLyAtLS0tLSBFeHRyYWN0aW5nIHRoZSBmaWxlCiAgICAgICAgICAk
dl9yZXN1bHQxID0gJHRoaXMtPnByaXZFeHRyYWN0RmlsZUFzU3RyaW5nKCR2X2hlYWRlciwgJHZfc3RyaW5
nLCAkcF9vcHRpb25zKTsKICAgICAgICAgIGlmICgkdl9yZXN1bHQxIDwgMSkgewogICAgICAgICAgICAkdG
hpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAgICAgJHRoaXMtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzK
Ck7CiAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQxOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIC0t
LS0tIEdldCB0aGUgb25seSBpbnRlcmVzdGluZyBhdHRyaWJ1dGVzCiAgICAgICAgICBpZiAoKCR2X3Jlc3V
sdCA9ICR0aGlzLT5wcml2Q29udmVydEhlYWRlcjJGaWxlSW5mbygkdl9oZWFkZXIsICRwX2ZpbGVfbGlzdF
skdl9uYl9leHRyYWN0ZWRdKSkgIT0gMSkKICAgICAgICAgIHsKICAgICAgICAgICAgLy8gLS0tLS0gQ2xvc
2UgdGhlIHppcCBmaWxlCiAgICAgICAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAgICAk
dGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ
7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gU2V0IHRoZSBmaWxlIGNvbnRlbnQKICAgICAgIC
AgICRwX2ZpbGVfbGlzdFskdl9uYl9leHRyYWN0ZWRdWydjb250ZW50J10gPSAkdl9zdHJpbmc7CgogICAgI
CAgICAgLy8gLS0tLS0gTmV4dCBleHRyYWN0ZWQgZmlsZQogICAgICAgICAgJHZfbmJfZXh0cmFjdGVkKys7
CgogICAgICAgICAgLy8gLS0tLS0gTG9vayBmb3I
gdXNlciBjYWxsYmFjayBhYm9ydAogICAgICAgICAgaWYgKCR2X3Jlc3VsdDEgPT0gMikgewogICAgICAgIC
AgCWJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBleHRyY
WN0aW9uIGluIHN0YW5kYXJkIG91dHB1dAogICAgICAgIGVsc2VpZiAoICAgKGlzc2V0KCRwX29wdGlvbnNb
UENMWklQX09QVF9FWFRSQUNUX0lOX09VVFBVVF0pKQoJCSAgICAgICAgJiYgKCRwX29wdGlvbnNbUENMWkl
QX09QVF9FWFRSQUNUX0lOX09VVFBVVF0pKSB7CiAgICAgICAgICAvLyAtLS0tLSBFeHRyYWN0aW5nIHRoZS
BmaWxlIGluIHN0YW5kYXJkIG91dHB1dAogICAgICAgICAgJHZfcmVzdWx0MSA9ICR0aGlzLT5wcml2RXh0c
mFjdEZpbGVJbk91dHB1dCgkdl9oZWFkZXIsICRwX29wdGlvbnMpOwogICAgICAgICAgaWYgKCR2X3Jlc3Vs
dDEgPCAxKSB7CiAgICAgICAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAgICAkdGhpcy0
+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKICAgICAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDE7CiAgIC
AgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gR2V0IHRoZSBvbmx5IGludGVyZXN0aW5nIGF0dHJpYnV0Z
XMKICAgICAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZDb252ZXJ0SGVhZGVyMkZpbGVJbmZv
KCR2X2hlYWRlciwgJHBfZmlsZV9saXN0WyR2X25iX2V4dHJhY3RlZCsrXSkpICE9IDEpIHsKICAgICAgICA
gICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1
F1b3RlcygpOwogICAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgICAgfQoKICAgICAgICAgI
C8vIC0tLS0tIExvb2sgZm9yIHVzZXIgY2FsbGJhY2sgYWJvcnQKICAgICAgICAgIGlmICgkdl9yZXN1bHQx
ID09IDIpIHsKICAgICAgICAgIAlicmVhazsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gLS0
tLS0gTG9vayBmb3Igbm9ybWFsIGV4dHJhY3Rpb24KICAgICAgICBlbHNlIHsKICAgICAgICAgIC8vIC0tLS
0tIEV4dHJhY3RpbmcgdGhlIGZpbGUKICAgICAgICAgICR2X3Jlc3VsdDEgPSAkdGhpcy0+cHJpdkV4dHJhY
3RGaWxlKCR2X2hlYWRlciwKCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwX3Bh
dGgsICRwX3JlbW92ZV9wYXRoLAoJCQkJCQkJCQkJCSAgJHBfcmVtb3ZlX2FsbF9wYXRoLAoJCQkJCQkJCQk
JCSAgJHBfb3B0aW9ucyk7CiAgICAgICAgICBpZiAoJHZfcmVzdWx0MSA8IDEpIHsKICAgICAgICAgICAgJH
RoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICAgICAgICR0aGlzLT5wcml2U3dhcEJhY2tNYWdpY1F1b3Rlc
ygpOwogICAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0MTsKICAgICAgICAgIH0KCiAgICAgICAgICAvLyAt
LS0tLSBHZXQgdGhlIG9ubHkgaW50ZXJlc3RpbmcgYXR0cmlidXRlcwogICAgICAgICAgaWYgKCgkdl9yZXN
1bHQgPSAkdGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIyRmlsZUluZm8oJHZfaGVhZGVyLCAkcF9maWxlX2xpc3
RbJHZfbmJfZXh0cmFjdGVkKytdKSkgIT0gMSkKICAgICAgICAgIHsKICAgICAgICAgICAgLy8gLS0tLS0gQ
2xvc2UgdGhlIHppcCBmaWxlCiAgICAgICAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAg
ICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCiAgICAgICAgICAgIHJldHVybiAkdl9yZXN
1bHQ7CiAgICAgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgdXNlciBjYWxsYmFjayBhYm
9ydAogICAgICAgICAgaWYgKCR2X3Jlc3VsdDEgPT0gMikgewogICAgICAgICAgCWJyZWFrOwogICAgICAgI
CAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIENsb3NlIHRoZSB6aXAgZmlsZQog
ICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAkdGhpcy0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTs
KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2RXh0cmFjdEZ
pbGUoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyBSZXR1cm4gVmFsdWVzID
oKICAvLwogIC8vIDEgOiAuLi4gPwogIC8vIFBDTFpJUF9FUlJfVVNFUl9BQk9SVEVEKDIpIDogVXNlciBhc
2sgZm9yIGV4dHJhY3Rpb24gc3RvcCBpbiBjYWxsYmFjawogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnV
uY3Rpb24gcHJpdkV4dHJhY3RGaWxlKCYkcF9lbnRyeSwgJHBfcGF0aCwgJHBfcmVtb3ZlX3BhdGgsICRwX3
JlbW92ZV9hbGxfcGF0aCwgJiRwX29wdGlvbnMpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tL
S0gUmVhZCB0aGUgZmlsZSBoZWFkZXIKICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZSZWFkRmls
ZUhlYWRlcigkdl9oZWFkZXIpKSAhPSAxKQogICAgewogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV
0dXJuICR2X3Jlc3VsdDsKICAgIH0KCgogICAgLy8gLS0tLS0gQ2hlY2sgdGhhdCB0aGUgZmlsZSBoZWFkZX
IgaXMgY29oZXJlbnQgd2l0aCAkcF9lbnRyeSBpbmZvCiAgICBpZiAoJHRoaXMtPnByaXZDaGVja0ZpbGVIZ
WFkZXJzKCR2X2hlYWRlciwgJHBfZW50cnkpICE9IDEpIHsKICAgICAgICAvLyBUQkMKICAgIH0KCiAgICAv
LyAtLS0tLSBMb29rIGZvciBhbGwgcGF0aCB0byByZW1vdmUKICAgIGlmICgkcF9yZW1vdmVfYWxsX3BhdGg
gPT0gdHJ1ZSkgewogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGZvbGRlciBlbnRyeSB0aGF0IG5vdCBuZW
VkIHRvIGJlIGV4dHJhY3RlZAogICAgICAgIGlmICgoJHBfZW50cnlbJ2V4dGVybmFsJ10mMHgwMDAwMDAxM
Ck9PTB4MDAwMDAwMTApIHsKCiAgICAgICAgICAgICRwX2VudHJ5WydzdGF0dXMnXSA9ICJmaWx0ZXJlZCI7
CgogICAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0gR2V
0IHRoZSBiYXNlbmFtZSBvZiB0aGUgcGF0aAogICAgICAgICRwX2VudHJ5WydmaWxlbmFtZSddID0gYmFzZW
5hbWUoJHBfZW50cnlbJ2ZpbGVuYW1lJ10pOwogICAgfQoKICAgIC8vIC0tLS0tIExvb2sgZm9yIHBhdGggd
G8gcmVtb3ZlCiAgICBlbHNlIGlmICgkcF9yZW1vdmVfcGF0aCAhPSAiIikKICAgIHsKICAgICAgaWYgKFBj
bFppcFV0aWxQYXRoSW5jbHVzaW9uKCRwX3JlbW92ZV9wYXRoLCAkcF9lbnRyeVsnZmlsZW5hbWUnXSkgPT0
gMikKICAgICAgewoKICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgc3RhdHVzCiAgICAgICAgJH
BfZW50cnlbJ3N0YXR1cyddID0gImZpbHRlcmVkIjsKCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgI
CAgcmV0dXJuICR2X3Jlc3VsdDsKICAgICAgfQoKICAgICAgJHBfcmVtb3ZlX3BhdGhfc2l6ZSA9IHN0cmxl
bigkcF9yZW1vdmVfcGF0aCk7CiAgICAgIGlmIChzdWJzdHIoJHBfZW50cnlbJ2ZpbGVuYW1lJ10sIDAsICR
wX3JlbW92ZV9wYXRoX3NpemUpID09ICRwX3JlbW92ZV9wYXRoKQogICAgICB7CgogICAgICAgIC8vIC0tLS
0tIFJlbW92ZSB0aGUgcGF0aAogICAgICAgICRwX2VudHJ5WydmaWxlbmFtZSddID0gc3Vic3RyKCRwX2Vud
HJ5WydmaWxlbmFtZSddLCAkcF9yZW1vdmVfcGF0aF9zaXplKTsKCiAgICAgIH0KICAgIH0KCiAgICAvLyAt
LS0tLSBBZGQgdGhlIHBhdGgKICAgIGlmICgkcF9wYXRoICE9ICcnKSB7CiAgICAgICRwX2VudHJ5WydmaWx
lbmFtZSddID0gJHBfcGF0aC4iLyIuJHBfZW50cnlbJ2ZpbGVuYW1lJ107CiAgICB9CgogICAgLy8gLS0tLS
0gQ2hlY2sgYSBiYXNlX2Rpcl9yZXN0cmljdGlvbgogICAgaWYgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX
09QVF9FWFRSQUNUX0RJUl9SRVNUUklDVElPTl0pKSB7CiAgICAgICR2X2luY2x1c2lvbgogICAgICA9IFBj
bFppcFV0aWxQYXRoSW5jbHVzaW9uKCRwX29wdGlvbnNbUENMWklQX09QVF9FWFRSQUNUX0RJUl9SRVNUUkl
DVElPTl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHBfZW50cnlbJ2ZpbGVuYW1lJ10pOw
ogICAgICBpZiAoJHZfaW5jbHVzaW9uID09IDApIHsKCiAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coU
ENMWklQX0VSUl9ESVJFQ1RPUllfUkVTVFJJQ1RJT04sCgkJCSAgICAgICAgICAgICAgICAgICAgICJGaWxl
bmFtZSAnIi4kcF9lbnRyeVsnZmlsZW5hbWUnXS4iJyBpcyAiCgkJCQkJCQkJIC4ib3V0c2lkZSBQQ0xaSVB
fT1BUX0VYVFJBQ1RfRElSX1JFU1RSSUNUSU9OIik7CgogICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ2
9kZSgpOwogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gTG9vayBmb3IgcHJlLWV4dHJhY3QgY2FsbGJhY
2sKICAgIGlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9DQl9QUkVfRVhUUkFDVF0pKSB7CgogICAgICAv
LyAtLS0tLSBHZW5lcmF0ZSBhIGxvY2FsIGluZm9ybWF0aW9uCiAgICAgICR2X2xvY2FsX2hlYWRlciA9IGF
ycmF5KCk7CiAgICAgICR0aGlzLT5wcml2Q29udmVydEhlYWRlcjJGaWxlSW5mbygkcF9lbnRyeSwgJHZfbG
9jYWxfaGVhZGVyKTsKCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGNhbGxiYWNrCiAgICAgIC8vIEhlcmUgS
SBkbyBub3QgdXNlIGNhbGxfdXNlcl9mdW5jKCkgYmVjYXVzZSBJIG5lZWQgdG8gc2VuZCBhIHJlZmVyZW5j
ZSB0byB0aGUKICAgICAgLy8gaGVhZGVyLgogICAgICAkdl9yZXN1bHQgPSAkcF9vcHRpb25zW1BDTFpJUF9
DQl9QUkVfRVhUUkFDVF0oUENMWklQX0NCX1BSRV9FWFRSQUNULCAkdl9sb2NhbF9oZWFkZXIpOwogICAgIC
BpZiAoJHZfcmVzdWx0ID09IDApIHsKICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgc3RhdHVzC
iAgICAgICAgJHBfZW50cnlbJ3N0YXR1cyddID0gInNraXBwZWQiOwogICAgICAgICR2X3Jlc3VsdCA9IDE7
CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGFib3J0IHJlc3VsdAogICAgICBpZiAoJHZfcmV
zdWx0ID09IDIpIHsKICAgICAgICAvLyAtLS0tLSBUaGlzIHN0YXR1cyBpcyBpbnRlcm5hbCBhbmQgd2lsbC
BiZSBjaGFuZ2VkIGluICdza2lwcGVkJwogICAgICAgICRwX2VudHJ5WydzdGF0dXMnXSA9ICJhYm9ydGVkI
jsKICAgICAgCSR2X3Jlc3VsdCA9IFBDTFpJUF9FUlJfVVNFUl9BQk9SVEVEOwogICAgICB9CgogICAgICAv
LyAtLS0tLSBVcGRhdGUgdGhlIGluZm9ybWF0aW9ucwogICAgICAvLyBPbmx5IHNvbWUgZmllbGRzIGNhbiB
iZSBtb2RpZmllZAogICAgICAkcF9lbnRyeVsnZmlsZW5hbWUnXSA9ICR2X2xvY2FsX2hlYWRlclsnZmlsZW
5hbWUnXTsKICAgIH0KCgogICAgLy8gLS0tLS0gTG9vayBpZiBleHRyYWN0aW9uIHNob3VsZCBiZSBkb25lC
iAgICBpZiAoJHBfZW50cnlbJ3N0YXR1cyddID09ICdvaycpIHsKCiAgICAvLyAtLS0tLSBMb29rIGZvciBz
cGVjaWZpYyBhY3Rpb25zIHdoaWxlIHRoZSBmaWxlIGV4aXN0CiAgICBpZiAoZmlsZV9leGlzdHMoJHBfZW5
0cnlbJ2ZpbGVuYW1lJ10pKQogICAgewoKICAgICAgLy8gLS0tLS0gTG9vayBpZiBmaWxlIGlzIGEgZGlyZW
N0b3J5CiAgICAgIGlmIChpc19kaXIoJHBfZW50cnlbJ2ZpbGVuYW1lJ10pKQogICAgICB7CgogICAgICAgI
C8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzdGF0dXMKICAgICAgICAkcF9lbnRyeVsnc3RhdHVzJ10gPSAi
YWxyZWFkeV9hX2RpcmVjdG9yeSI7CgogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIFBDTFpJUF9PUFRfU1R
PUF9PTl9FUlJPUgogICAgICAgIC8vIEZvciBoaXN0b3JpY2FsIHJlYXNvbiBmaXJzdCBQY2xaaXAgaW1wbG
VtZW50YXRpb24gZG9lcyBub3Qgc3RvcAogICAgICAgIC8vIHdoZW4gdGhpcyBraW5kIG9mIGVycm9yIG9jY
3Vycy4KICAgICAgICBpZiAoICAgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9TVE9QX09OX0VSUk9S
XSkpCgkJICAgICYmICgkcF9vcHRpb25zW1BDTFpJUF9PUFRfU1RPUF9PTl9FUlJPUl09PT10cnVlKSkgewo
KICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9BTFJFQURZX0FfRElSRUNUT1
JZLAoJCQkgICAgICAgICAgICAgICAgICAgICAiRmlsZW5hbWUgJyIuJHBfZW50cnlbJ2ZpbGVuYW1lJ10uI
icgaXMgIgoJCQkJCQkJCSAuImFscmVhZHkgdXNlZCBieSBhbiBleGlzdGluZyBkaXJlY3RvcnkiKTsKCiAg
ICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwoJCSAgICB9CiAgICAgIH0KICAgICAgLy8
gLS0tLS0gTG9vayBpZiBmaWxlIGlzIHdyaXRlIHByb3RlY3RlZAogICAgICBlbHNlIGlmICghaXNfd3JpdG
VhYmxlKCRwX2VudHJ5WydmaWxlbmFtZSddKSkKICAgICAgewoKICAgICAgICAvLyAtLS0tLSBDaGFuZ2Ugd
GhlIGZpbGUgc3RhdHVzCiAgICAgICAgJHBfZW50cnlbJ3N0YXR1cyddID0gIndyaXRlX3Byb3RlY3RlZCI7
CgogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIFBDTFpJUF9PUFRfU1RPUF9PTl9FUlJPUgogICAgICAgIC8
vIEZvciBoaXN0b3JpY2FsIHJlYXNvbiBmaXJzdCBQY2xaaXAgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3
RvcAogICAgICAgIC8vIHdoZW4gdGhpcyBraW5kIG9mIGVycm9yIG9jY3Vycy4KICAgICAgICBpZiAoICAgK
Glzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9TVE9QX09OX0VSUk9SXSkpCgkJICAgICYmICgkcF9vcHRp
b25zW1BDTFpJUF9PUFRfU1RPUF9PTl9FUlJPUl09PT10cnVlKSkgewoKICAgICAgICAgICAgUGNsWmlwOjp
wcml2RXJyb3JMb2coUENMWklQX0VSUl9XUklURV9PUEVOX0ZBSUwsCgkJCSAgICAgICAgICAgICAgICAgIC
AgICJGaWxlbmFtZSAnIi4kcF9lbnRyeVsnZmlsZW5hbWUnXS4iJyBleGlzdHMgIgoJCQkJCQkJCSAuImFuZ
CBpcyB3cml0ZSBwcm90ZWN0ZWQiKTsKCiAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgp
OwoJCSAgICB9CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgaWYgdGhlIGV4dHJhY3RlZCBmaWxlIGl
zIG9sZGVyCiAgICAgIGVsc2UgaWYgKGZpbGVtdGltZSgkcF9lbnRyeVsnZmlsZW5hbWUnXSkgPiAkcF9lbn
RyeVsnbXRpbWUnXSkKICAgICAgewogICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzdGF0dXMKI
CAgICAgICBpZiAoICAgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9SRVBMQUNFX05FV0VSXSkpCgkJ
ICAgICYmICgkcF9vcHRpb25zW1BDTFpJUF9PUFRfUkVQTEFDRV9ORVdFUl09PT10cnVlKSkgewoJICAJICB
9CgkJICAgIGVsc2UgewogICAgICAgICAgICAkcF
9lbnRyeVsnc3RhdHVzJ10gPSAibmV3ZXJfZXhpc3QiOwoKICAgICAgICAgICAgLy8gLS0tLS0gTG9vayBmb
3IgUENMWklQX09QVF9TVE9QX09OX0VSUk9SCiAgICAgICAgICAgIC8vIEZvciBoaXN0b3JpY2FsIHJlYXNv
biBmaXJzdCBQY2xaaXAgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3RvcAogICAgICAgICAgICAvLyB3aGV
uIHRoaXMga2luZCBvZiBlcnJvciBvY2N1cnMuCiAgICAgICAgICAgIGlmICggICAoaXNzZXQoJHBfb3B0aW
9uc1tQQ0xaSVBfT1BUX1NUT1BfT05fRVJST1JdKSkKCQkgICAgICAgICYmICgkcF9vcHRpb25zW1BDTFpJU
F9PUFRfU1RPUF9PTl9FUlJPUl09PT10cnVlKSkgewoKICAgICAgICAgICAgICAgIFBjbFppcDo6cHJpdkVy
cm9yTG9nKFBDTFpJUF9FUlJfV1JJVEVfT1BFTl9GQUlMLAoJCQkgICAgICAgICAgICAgIk5ld2VyIHZlcnN
pb24gb2YgJyIuJHBfZW50cnlbJ2ZpbGVuYW1lJ10uIicgZXhpc3RzICIKCQkJCQkgICAgLiJhbmQgb3B0aW
9uIFBDTFpJUF9PUFRfUkVQTEFDRV9ORVdFUiBpcyBub3Qgc2VsZWN0ZWQiKTsKCiAgICAgICAgICAgICAgI
CByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKCQkgICAgICB9CgkJICAgIH0KICAgICAgfQogICAgICBl
bHNlIHsKICAgICAgfQogICAgfQoKICAgIC8vIC0tLS0tIENoZWNrIHRoZSBkaXJlY3RvcnkgYXZhaWxhYml
saXR5IGFuZCBjcmVhdGUgaXQgaWYgbmVjZXNzYXJ5CiAgICBlbHNlIHsKICAgICAgaWYgKCgoJHBfZW50cn
lbJ2V4dGVybmFsJ10mMHgwMDAwMDAxMCk9PTB4MDAwMDAwMTApIHx8IChzdWJzdHIoJHBfZW50cnlbJ2Zpb
GVuYW1lJ10sIC0xKSA9PSAnLycpKQogICAgICAgICR2X2Rpcl90b19jaGVjayA9ICRwX2VudHJ5WydmaWxl
bmFtZSddOwogICAgICBlbHNlIGlmICghc3Ryc3RyKCRwX2VudHJ5WydmaWxlbmFtZSddLCAiLyIpKQogICA
gICAgICR2X2Rpcl90b19jaGVjayA9ICIiOwogICAgICBlbHNlCiAgICAgICAgJHZfZGlyX3RvX2NoZWNrID
0gZGlybmFtZSgkcF9lbnRyeVsnZmlsZW5hbWUnXSk7CgogICAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoa
XMtPnByaXZEaXJDaGVjaygkdl9kaXJfdG9fY2hlY2ssICgoJHBfZW50cnlbJ2V4dGVybmFsJ10mMHgwMDAw
MDAxMCk9PTB4MDAwMDAwMTApKSkgIT0gMSkgewoKICAgICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZml
sZSBzdGF0dXMKICAgICAgICAgICRwX2VudHJ5WydzdGF0dXMnXSA9ICJwYXRoX2NyZWF0aW9uX2ZhaWwiOw
oKICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgLy9yZXR1cm4gJHZfcmVzdWx0OwogICAgI
CAgICAgJHZfcmVzdWx0ID0gMTsKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBMb29r
IGlmIGV4dHJhY3Rpb24gc2hvdWxkIGJlIGRvbmUKICAgIGlmICgkcF9lbnRyeVsnc3RhdHVzJ10gPT0gJ29
rJykgewoKICAgICAgLy8gLS0tLS0gRG8gdGhlIGV4dHJhY3Rpb24gKGlmIG5vdCBhIGZvbGRlcikKICAgIC
AgaWYgKCEoKCRwX2VudHJ5WydleHRlcm5hbCddJjB4MDAwMDAwMTApPT0weDAwMDAwMDEwKSkKICAgICAge
wogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIG5vdCBjb21wcmVzc2VkIGZpbGUKICAgICAgICBpZiAoJHBf
ZW50cnlbJ2NvbXByZXNzaW9uJ10gPT0gMCkgewoKICAgIAkJICAvLyAtLS0tLSBPcGVuaW5nIGRlc3RpbmF
0aW9uIGZpbGUKICAgICAgICAgIGlmICgoJHZfZGVzdF9maWxlID0gQGZvcGVuKCRwX2VudHJ5WydmaWxlbm
FtZSddLCAnd2InKSkgPT0gMCkKICAgICAgICAgIHsKCiAgICAgICAgICAgIC8vIC0tLS0tIENoYW5nZSB0a
GUgZmlsZSBzdGF0dXMKICAgICAgICAgICAgJHBfZW50cnlbJ3N0YXR1cyddID0gIndyaXRlX2Vycm9yIjsK
CiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICA
gICAgICAgfQoKCiAgICAgICAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaWxlIGJ5IFBDTFpJUF9SRUFEX0JMT0
NLX1NJWkUgb2N0ZXRzIGJsb2NrcwogICAgICAgICAgJHZfc2l6ZSA9ICRwX2VudHJ5Wydjb21wcmVzc2VkX
3NpemUnXTsKICAgICAgICAgIHdoaWxlICgkdl9zaXplICE9IDApCiAgICAgICAgICB7CiAgICAgICAgICAg
ICR2X3JlYWRfc2l6ZSA9ICgkdl9zaXplIDwgUENMWklQX1JFQURfQkxPQ0tfU0laRSA/ICR2X3NpemUgOiB
QQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgICAgICAgJHZfYnVmZmVyID0gQGZyZWFkKCR0aGlzLT
56aXBfZmQsICR2X3JlYWRfc2l6ZSk7CiAgICAgICAgICAgIC8qIFRyeSB0byBzcGVlZCB1cCB0aGUgY29kZ
QogICAgICAgICAgICAkdl9iaW5hcnlfZGF0YSA9IHBhY2soJ2EnLiR2X3JlYWRfc2l6ZSwgJHZfYnVmZmVy
KTsKICAgICAgICAgICAgQGZ3cml0ZSgkdl9kZXN0X2ZpbGUsICR2X2JpbmFyeV9kYXRhLCAkdl9yZWFkX3N
pemUpOwogICAgICAgICAgICAqLwogICAgICAgICAgICBAZndyaXRlKCR2X2Rlc3RfZmlsZSwgJHZfYnVmZm
VyLCAkdl9yZWFkX3NpemUpOwogICAgICAgICAgICAkdl9zaXplIC09ICR2X3JlYWRfc2l6ZTsKICAgICAgI
CAgIH0KCiAgICAgICAgICAvLyAtLS0tLSBDbG9zaW5nIHRoZSBkZXN0aW5hdGlvbiBmaWxlCiAgICAgICAg
ICBmY2xvc2UoJHZfZGVzdF9maWxlKTsKCiAgICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIGZpbGUgbXR
pbWUKICAgICAgICAgIHRvdWNoKCRwX2VudHJ5WydmaWxlbmFtZSddLCAkcF9lbnRyeVsnbXRpbWUnXSk7Cg
oKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAvLyAtLS0tLSBUQkMKICAgICAgICAgIC8vI
E5lZWQgdG8gYmUgZmluaXNoZWQKICAgICAgICAgIGlmICgoJHBfZW50cnlbJ2ZsYWcnXSAmIDEpID09IDEp
IHsKICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9VTlNVUFBPUlRFRF9FTkN
SWVBUSU9OLCAnRmlsZSBcJycuJHBfZW50cnlbJ2ZpbGVuYW1lJ10uJ1wnIGlzIGVuY3J5cHRlZC4gRW5jcn
lwdGVkIGZpbGVzIGFyZSBub3Qgc3VwcG9ydGVkLicpOwogICAgICAgICAgICByZXR1cm4gUGNsWmlwOjplc
nJvckNvZGUoKTsKICAgICAgICAgIH0KCgogICAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgdXNpbmcgdGVt
cG9yYXJ5IGZpbGUgdG8gdW56aXAKICAgICAgICAgIGlmICggKCFpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9
PUFRfVEVNUF9GSUxFX09GRl0pKQogICAgICAgICAgICAgICYmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF
9PUFRfVEVNUF9GSUxFX09OXSkKICAgICAgICAgICAgICAgICAgfHwgKGlzc2V0KCRwX29wdGlvbnNbUENMW
klQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEXSkKICAgICAgICAgICAgICAgICAgICAgICYmICgkcF9vcHRp
b25zW1BDTFpJUF9PUFRfVEVNUF9GSUxFX1RIUkVTSE9MRF0gPD0gJHBfZW50cnlbJ3NpemUnXSkpICkgKSB
7CiAgICAgICAgICAgICR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2RXh0cmFjdEZpbGVVc2luZ1RlbXBGaWxlKC
RwX2VudHJ5LCAkcF9vcHRpb25zKTsKICAgICAgICAgICAgaWYgKCR2X3Jlc3VsdCA8IFBDTFpJUF9FUlJfT
k9fRVJST1IpIHsKICAgICAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgICAgICB9CiAgICAg
ICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZXh0cmFjdCBpbiBtZW1vcnkKICAgICAgICA
gIGVsc2UgewoKCiAgICAgICAgICAgIC8vIC0tLS0tIFJlYWQgdGhlIGNvbXByZXNzZWQgZmlsZSBpbiBhIG
J1ZmZlciAob25lIHNob3QpCiAgICAgICAgICAgICR2X2J1ZmZlciA9IEBmcmVhZCgkdGhpcy0+emlwX2ZkL
CAkcF9lbnRyeVsnY29tcHJlc3NlZF9zaXplJ10pOwoKICAgICAgICAgICAgLy8gLS0tLS0gRGVjb21wcmVz
cyB0aGUgZmlsZQogICAgICAgICAgICAkdl9maWxlX2NvbnRlbnQgPSBAZ3ppbmZsYXRlKCR2X2J1ZmZlcik
7CiAgICAgICAgICAgIHVuc2V0KCR2X2J1ZmZlcik7CiAgICAgICAgICAgIGlmICgkdl9maWxlX2NvbnRlbn
QgPT09IEZBTFNFKSB7CgogICAgICAgICAgICAgIC8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzdGF0dXMKI
CAgICAgICAgICAgICAvLyBUQkMKICAgICAgICAgICAgICAkcF9lbnRyeVsnc3RhdHVzJ10gPSAiZXJyb3Ii
OwoKICAgICAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgICAgICB9CgogICAgICAgICAgICA
vLyAtLS0tLSBPcGVuaW5nIGRlc3RpbmF0aW9uIGZpbGUKICAgICAgICAgICAgaWYgKCgkdl9kZXN0X2ZpbG
UgPSBAZm9wZW4oJHBfZW50cnlbJ2ZpbGVuYW1lJ10sICd3YicpKSA9PSAwKSB7CgogICAgICAgICAgICAgI
C8vIC0tLS0tIENoYW5nZSB0aGUgZmlsZSBzdGF0dXMKICAgICAgICAgICAgICAkcF9lbnRyeVsnc3RhdHVz
J10gPSAid3JpdGVfZXJyb3IiOwoKICAgICAgICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgICA
gICB9CgogICAgICAgICAgICAvLyAtLS0tLSBXcml0ZSB0aGUgdW5jb21wcmVzc2VkIGRhdGEKICAgICAgIC
AgICAgQGZ3cml0ZSgkdl9kZXN0X2ZpbGUsICR2X2ZpbGVfY29udGVudCwgJHBfZW50cnlbJ3NpemUnXSk7C
iAgICAgICAgICAgIHVuc2V0KCR2X2ZpbGVfY29udGVudCk7CgogICAgICAgICAgICAvLyAtLS0tLSBDbG9z
aW5nIHRoZSBkZXN0aW5hdGlvbiBmaWxlCiAgICAgICAgICAgIEBmY2xvc2UoJHZfZGVzdF9maWxlKTsKCiA
gICAgICAgICB9CgogICAgICAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIG10aW1lCiAgICAgICAgIC
BAdG91Y2goJHBfZW50cnlbJ2ZpbGVuYW1lJ10sICRwX2VudHJ5WydtdGltZSddKTsKICAgICAgICB9CgogI
CAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGNobW9kIG9wdGlvbgogICAgICAgIGlmIChpc3NldCgkcF9vcHRp
b25zW1BDTFpJUF9PUFRfU0VUX0NITU9EXSkpIHsKCiAgICAgICAgICAvLyAtLS0tLSBDaGFuZ2UgdGhlIG1
vZGUgb2YgdGhlIGZpbGUKICAgICAgICAgIEBjaG1vZCgkcF9lbnRyeVsnZmlsZW5hbWUnXSwgJHBfb3B0aW
9uc1tQQ0xaSVBfT1BUX1NFVF9DSE1PRF0pOwogICAgICAgIH0KCiAgICAgIH0KICAgIH0KCiAgCS8vIC0tL
S0tIENoYW5nZSBhYm9ydCBzdGF0dXMKICAJaWYgKCRwX2VudHJ5WydzdGF0dXMnXSA9PSAiYWJvcnRlZCIp
IHsKICAgICAgICAkcF9lbnRyeVsnc3RhdHVzJ10gPSAic2tpcHBlZCI7CiAgCX0KCiAgICAvLyAtLS0tLSB
Mb29rIGZvciBwb3N0LWV4dHJhY3QgY2FsbGJhY2sKICAgIGVsc2VpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0
xaSVBfQ0JfUE9TVF9FWFRSQUNUXSkpIHsKCiAgICAgIC8vIC0tLS0tIEdlbmVyYXRlIGEgbG9jYWwgaW5mb
3JtYXRpb24KICAgICAgJHZfbG9jYWxfaGVhZGVyID0gYXJyYXkoKTsKICAgICAgJHRoaXMtPnByaXZDb252
ZXJ0SGVhZGVyMkZpbGVJbmZvKCRwX2VudHJ5LCAkdl9sb2NhbF9oZWFkZXIpOwoKICAgICAgLy8gLS0tLS0
gQ2FsbCB0aGUgY2FsbGJhY2sKICAgICAgLy8gSGVyZSBJIGRvIG5vdCB1c2UgY2FsbF91c2VyX2Z1bmMoKS
BiZWNhdXNlIEkgbmVlZCB0byBzZW5kIGEgcmVmZXJlbmNlIHRvIHRoZQogICAgICAvLyBoZWFkZXIuCiAgI
CAgICR2X3Jlc3VsdCA9ICRwX29wdGlvbnNbUENMWklQX0NCX1BPU1RfRVhUUkFDVF0oUENMWklQX0NCX1BP
U1RfRVhUUkFDVCwgJHZfbG9jYWxfaGVhZGVyKTsKCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGFib3J0IHJ
lc3VsdAogICAgICBpZiAoJHZfcmVzdWx0ID09IDIpIHsKICAgICAgCSR2X3Jlc3VsdCA9IFBDTFpJUF9FUl
JfVVNFUl9BQk9SVEVEOwogICAgICB9CiAgICB9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJ
HZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ
ogIC8vIEZ1bmN0aW9uIDogcHJpdkV4dHJhY3RGaWxlVXNpbmdUZW1wRmlsZSgpCiAgLy8gRGVzY3JpcHRpb
24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tCiAgZnVuY3Rpb24gcHJpdkV4dHJhY3RGaWxlVXNpbmdUZW1wRmlsZSgmJHBfZW50cnksICYkcF9vcH
Rpb25zKQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIENyZWF0ZXMgYSB0ZW1wb3JhcnkgZ
mlsZQogICAgJHZfZ3ppcF90ZW1wX25hbWUgPSBQQ0xaSVBfVEVNUE9SQVJZX0RJUi51bmlxaWQoJ3BjbHpp
cC0nKS4nLmd6JzsKICAgIGlmICgoJHZfZGVzdF9maWxlID0gQGZvcGVuKCR2X2d6aXBfdGVtcF9uYW1lLCA
id2IiKSkgPT0gMCkgewogICAgICBmY2xvc2UoJHZfZmlsZSk7CiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG
9nKFBDTFpJUF9FUlJfV1JJVEVfT1BFTl9GQUlMLCAnVW5hYmxlIHRvIG9wZW4gdGVtcG9yYXJ5IGZpbGUgX
CcnLiR2X2d6aXBfdGVtcF9uYW1lLidcJyBpbiBiaW5hcnkgd3JpdGUgbW9kZScpOwogICAgICByZXR1cm4g
UGNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCgogICAgLy8gLS0tLS0gV3JpdGUgZ3ogZmlsZSBmb3JtYXQ
gaGVhZGVyCiAgICAkdl9iaW5hcnlfZGF0YSA9IHBhY2soJ3ZhMWExVmExYTEnLCAweDhiMWYsIENocigkcF
9lbnRyeVsnY29tcHJlc3Npb24nXSksIENocigweDAwKSwgdGltZSgpLCBDaHIoMHgwMCksIENocigzKSk7C
iAgICBAZndyaXRlKCR2X2Rlc3RfZmlsZSwgJHZfYmluYXJ5X2RhdGEsIDEwKTsKCiAgICAvLyAtLS0tLSBS
ZWFkIHRoZSBmaWxlIGJ5IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUgb2N0ZXRzIGJsb2NrcwogICAgJHZfc2l
6ZSA9ICRwX2VudHJ5Wydjb21wcmVzc2VkX3NpemUnXTsKICAgIHdoaWxlICgkdl9zaXplICE9IDApCiAgIC
B7CiAgICAgICR2X3JlYWRfc2l6ZSA9ICgkdl9zaXplIDwgUENMWklQX1JFQURfQkxPQ0tfU0laRSA/ICR2X
3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgJHZfYnVmZmVyID0gQGZyZWFkKCR0aGlz
LT56aXBfZmQsICR2X3JlYWRfc2l6ZSk7CiAgICAgIC8vJHZfYmluYXJ5X2RhdGEgPSBwYWNrKCdhJy4kdl9
yZWFkX3NpemUsICR2X2J1ZmZlcik7CiAgICAgIEBmd3JpdGUoJHZfZGVzdF9maWxlLCAkdl9idWZmZXIsIC
R2X3JlYWRfc2l6ZSk7CiAgICAgICR2X3NpemUgLT0gJHZfcmVhZF9zaXplOwogICAgfQoKICAgIC8vIC0tL
S0tIFdyaXRlIGd6IGZpbGUgZm9ybWF0IGZvb3RlcgogICAgJHZfYmluYXJ5X2RhdGEgPSBwYWNrKCdWVics
ICRwX2VudHJ5WydjcmMnXSwgJHBfZW50cnlbJ3NpemUnXSk7CiAgICBAZndyaXRlKCR2X2Rlc3RfZmlsZSw
gJHZfYmluYXJ5X2RhdGEsIDgpOwoKICAgIC8vIC0tLS0tIENsb3NlIHRoZSB0ZW1wb3JhcnkgZmlsZQogIC
AgQGZjbG9zZSgkdl9kZXN0X2ZpbGUpOwoKICAgI
C8vIC0tLS0tIE9wZW5pbmcgZGVzdGluYXRpb24gZmlsZQogICAgaWYgKCgkdl9kZXN0X2ZpbGUgPSBAZm9w
ZW4oJHBfZW50cnlbJ2ZpbGVuYW1lJ10sICd3YicpKSA9PSAwKSB7CiAgICAgICRwX2VudHJ5WydzdGF0dXM
nXSA9ICJ3cml0ZV9lcnJvciI7CiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS
0gT3BlbiB0aGUgdGVtcG9yYXJ5IGd6IGZpbGUKICAgIGlmICgoJHZfc3JjX2ZpbGUgPSBAZ3pvcGVuKCR2X
2d6aXBfdGVtcF9uYW1lLCAncmInKSkgPT0gMCkgewogICAgICBAZmNsb3NlKCR2X2Rlc3RfZmlsZSk7CiAg
ICAgICRwX2VudHJ5WydzdGF0dXMnXSA9ICJyZWFkX2Vycm9yIjsKICAgICAgUGNsWmlwOjpwcml2RXJyb3J
Mb2coUENMWklQX0VSUl9SRUFEX09QRU5fRkFJTCwgJ1VuYWJsZSB0byBvcGVuIHRlbXBvcmFyeSBmaWxlIF
wnJy4kdl9nemlwX3RlbXBfbmFtZS4nXCcgaW4gYmluYXJ5IHJlYWQgbW9kZScpOwogICAgICByZXR1cm4gU
GNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCgogICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlsZSBieSBQQ0xa
SVBfUkVBRF9CTE9DS19TSVpFIG9jdGV0cyBibG9ja3MKICAgICR2X3NpemUgPSAkcF9lbnRyeVsnc2l6ZSd
dOwogICAgd2hpbGUgKCR2X3NpemUgIT0gMCkgewogICAgICAkdl9yZWFkX3NpemUgPSAoJHZfc2l6ZSA8IF
BDTFpJUF9SRUFEX0JMT0NLX1NJWkUgPyAkdl9zaXplIDogUENMWklQX1JFQURfQkxPQ0tfU0laRSk7CiAgI
CAgICR2X2J1ZmZlciA9IEBnenJlYWQoJHZfc3JjX2ZpbGUsICR2X3JlYWRfc2l6ZSk7CiAgICAgIC8vJHZf
YmluYXJ5X2RhdGEgPSBwYWNrKCdhJy4kdl9yZWFkX3NpemUsICR2X2J1ZmZlcik7CiAgICAgIEBmd3JpdGU
oJHZfZGVzdF9maWxlLCAkdl9idWZmZXIsICR2X3JlYWRfc2l6ZSk7CiAgICAgICR2X3NpemUgLT0gJHZfcm
VhZF9zaXplOwogICAgfQogICAgQGZjbG9zZSgkdl9kZXN0X2ZpbGUpOwogICAgQGd6Y2xvc2UoJHZfc3JjX
2ZpbGUpOwoKICAgIC8vIC0tLS0tIERlbGV0ZSB0aGUgdGVtcG9yYXJ5IGZpbGUKICAgIEB1bmxpbmsoJHZf
Z3ppcF90ZW1wX25hbWUpOwoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB
9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlv
biA6IHByaXZFeHRyYWN0RmlsZUluT3V0cHV0KCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGV
ycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwc
ml2RXh0cmFjdEZpbGVJbk91dHB1dCgmJHBfZW50cnksICYkcF9vcHRpb25zKQogIHsKICAgICR2X3Jlc3Vs
dD0xOwoKICAgIC8vIC0tLS0tIFJlYWQgdGhlIGZpbGUgaGVhZGVyCiAgICBpZiAoKCR2X3Jlc3VsdCA9ICR
0aGlzLT5wcml2UmVhZEZpbGVIZWFkZXIoJHZfaGVhZGVyKSkgIT0gMSkgewogICAgICByZXR1cm4gJHZfcm
VzdWx0OwogICAgfQoKCiAgICAvLyAtLS0tLSBDaGVjayB0aGF0IHRoZSBmaWxlIGhlYWRlciBpcyBjb2hlc
mVudCB3aXRoICRwX2VudHJ5IGluZm8KICAgIGlmICgkdGhpcy0+cHJpdkNoZWNrRmlsZUhlYWRlcnMoJHZf
aGVhZGVyLCAkcF9lbnRyeSkgIT0gMSkgewogICAgICAgIC8vIFRCQwogICAgfQoKICAgIC8vIC0tLS0tIEx
vb2sgZm9yIHByZS1leHRyYWN0IGNhbGxiYWNrCiAgICBpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfQ0
JfUFJFX0VYVFJBQ1RdKSkgewoKICAgICAgLy8gLS0tLS0gR2VuZXJhdGUgYSBsb2NhbCBpbmZvcm1hdGlvb
gogICAgICAkdl9sb2NhbF9oZWFkZXIgPSBhcnJheSgpOwogICAgICAkdGhpcy0+cHJpdkNvbnZlcnRIZWFk
ZXIyRmlsZUluZm8oJHBfZW50cnksICR2X2xvY2FsX2hlYWRlcik7CgogICAgICAvLyAtLS0tLSBDYWxsIHR
oZSBjYWxsYmFjawogICAgICAvLyBIZXJlIEkgZG8gbm90IHVzZSBjYWxsX3VzZXJfZnVuYygpIGJlY2F1c2
UgSSBuZWVkIHRvIHNlbmQgYSByZWZlcmVuY2UgdG8gdGhlCiAgICAgIC8vIGhlYWRlci4KICAgICAgJHZfc
mVzdWx0ID0gJHBfb3B0aW9uc1tQQ0xaSVBfQ0JfUFJFX0VYVFJBQ1RdKFBDTFpJUF9DQl9QUkVfRVhUUkFD
VCwgJHZfbG9jYWxfaGVhZGVyKTsKICAgICAgaWYgKCR2X3Jlc3VsdCA9PSAwKSB7CiAgICAgICAgLy8gLS0
tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0YXR1cwogICAgICAgICRwX2VudHJ5WydzdGF0dXMnXSA9ICJza2lwcG
VkIjsKICAgICAgICAkdl9yZXN1bHQgPSAxOwogICAgICB9CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBhY
m9ydCByZXN1bHQKICAgICAgaWYgKCR2X3Jlc3VsdCA9PSAyKSB7CiAgICAgICAgLy8gLS0tLS0gVGhpcyBz
dGF0dXMgaXMgaW50ZXJuYWwgYW5kIHdpbGwgYmUgY2hhbmdlZCBpbiAnc2tpcHBlZCcKICAgICAgICAkcF9
lbnRyeVsnc3RhdHVzJ10gPSAiYWJvcnRlZCI7CiAgICAgIAkkdl9yZXN1bHQgPSBQQ0xaSVBfRVJSX1VTRV
JfQUJPUlRFRDsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gVXBkYXRlIHRoZSBpbmZvcm1hdGlvbnMKICAgI
CAgLy8gT25seSBzb21lIGZpZWxkcyBjYW4gYmUgbW9kaWZpZWQKICAgICAgJHBfZW50cnlbJ2ZpbGVuYW1l
J10gPSAkdl9sb2NhbF9oZWFkZXJbJ2ZpbGVuYW1lJ107CiAgICB9CgogICAgLy8gLS0tLS0gVHJhY2UKCiA
gICAvLyAtLS0tLSBMb29rIGlmIGV4dHJhY3Rpb24gc2hvdWxkIGJlIGRvbmUKICAgIGlmICgkcF9lbnRyeV
snc3RhdHVzJ10gPT0gJ29rJykgewoKICAgICAgLy8gLS0tLS0gRG8gdGhlIGV4dHJhY3Rpb24gKGlmIG5vd
CBhIGZvbGRlcikKICAgICAgaWYgKCEoKCRwX2VudHJ5WydleHRlcm5hbCddJjB4MDAwMDAwMTApPT0weDAw
MDAwMDEwKSkgewogICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIG5vdCBjb21wcmVzc2VkIGZpbGUKICAgICA
gICBpZiAoJHBfZW50cnlbJ2NvbXByZXNzZWRfc2l6ZSddID09ICRwX2VudHJ5WydzaXplJ10pIHsKCiAgIC
AgICAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaWxlIGluIGEgYnVmZmVyIChvbmUgc2hvdCkKICAgICAgICAgI
CR2X2J1ZmZlciA9IEBmcmVhZCgkdGhpcy0+emlwX2ZkLCAkcF9lbnRyeVsnY29tcHJlc3NlZF9zaXplJ10p
OwoKICAgICAgICAgIC8vIC0tLS0tIFNlbmQgdGhlIGZpbGUgdG8gdGhlIG91dHB1dAogICAgICAgICAgZWN
obyAkdl9idWZmZXI7CiAgICAgICAgICB1bnNldCgkdl9idWZmZXIpOwogICAgICAgIH0KICAgICAgICBlbH
NlIHsKCiAgICAgICAgICAvLyAtLS0tLSBSZWFkIHRoZSBjb21wcmVzc2VkIGZpbGUgaW4gYSBidWZmZXIgK
G9uZSBzaG90KQogICAgICAgICAgJHZfYnVmZmVyID0gQGZyZWFkKCR0aGlzLT56aXBfZmQsICRwX2VudHJ5
Wydjb21wcmVzc2VkX3NpemUnXSk7CgogICAgICAgICAgLy8gLS0tLS0gRGVjb21wcmVzcyB0aGUgZmlsZQo
gICAgICAgICAgJHZfZmlsZV9jb250ZW50ID0gZ3ppbmZsYXRlKCR2X2J1ZmZlcik7CiAgICAgICAgICB1bn
NldCgkdl9idWZmZXIpOwoKICAgICAgICAgIC8vIC0tLS0tIFNlbmQgdGhlIGZpbGUgdG8gdGhlIG91dHB1d
AogICAgICAgICAgZWNobyAkdl9maWxlX2NvbnRlbnQ7CiAgICAgICAgICB1bnNldCgkdl9maWxlX2NvbnRl
bnQpOwogICAgICAgIH0KICAgICAgfQogICAgfQoKCS8vIC0tLS0tIENoYW5nZSBhYm9ydCBzdGF0dXMKCWl
mICgkcF9lbnRyeVsnc3RhdHVzJ10gPT0gImFib3J0ZWQiKSB7CiAgICAgICRwX2VudHJ5WydzdGF0dXMnXS
A9ICJza2lwcGVkIjsKCX0KCiAgICAvLyAtLS0tLSBMb29rIGZvciBwb3N0LWV4dHJhY3QgY2FsbGJhY2sKI
CAgIGVsc2VpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfQ0JfUE9TVF9FWFRSQUNUXSkpIHsKCiAgICAg
IC8vIC0tLS0tIEdlbmVyYXRlIGEgbG9jYWwgaW5mb3JtYXRpb24KICAgICAgJHZfbG9jYWxfaGVhZGVyID0
gYXJyYXkoKTsKICAgICAgJHRoaXMtPnByaXZDb252ZXJ0SGVhZGVyMkZpbGVJbmZvKCRwX2VudHJ5LCAkdl
9sb2NhbF9oZWFkZXIpOwoKICAgICAgLy8gLS0tLS0gQ2FsbCB0aGUgY2FsbGJhY2sKICAgICAgLy8gSGVyZ
SBJIGRvIG5vdCB1c2UgY2FsbF91c2VyX2Z1bmMoKSBiZWNhdXNlIEkgbmVlZCB0byBzZW5kIGEgcmVmZXJl
bmNlIHRvIHRoZQogICAgICAvLyBoZWFkZXIuCiAgICAgICR2X3Jlc3VsdCA9ICRwX29wdGlvbnNbUENMWkl
QX0NCX1BPU1RfRVhUUkFDVF0oUENMWklQX0NCX1BPU1RfRVhUUkFDVCwgJHZfbG9jYWxfaGVhZGVyKTsKCi
AgICAgIC8vIC0tLS0tIExvb2sgZm9yIGFib3J0IHJlc3VsdAogICAgICBpZiAoJHZfcmVzdWx0ID09IDIpI
HsKICAgICAgCSR2X3Jlc3VsdCA9IFBDTFpJUF9FUlJfVVNFUl9BQk9SVEVEOwogICAgICB9CiAgICB9Cgog
ICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZFeHRyYWN0RmlsZUFzU3RyaW5nKCkKICAvLyBEZXNj
cmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2RXh0cmFjdEZpbGVBc1N0cmluZygmJHBfZW50cnksICYkcF9zd
HJpbmcsICYkcF9vcHRpb25zKQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIFJlYWQgdGhl
IGZpbGUgaGVhZGVyCiAgICAkdl9oZWFkZXIgPSBhcnJheSgpOwogICAgaWYgKCgkdl9yZXN1bHQgPSAkdGh
pcy0+cHJpdlJlYWRGaWxlSGVhZGVyKCR2X2hlYWRlcikpICE9IDEpCiAgICB7CiAgICAgIC8vIC0tLS0tIF
JldHVybgogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKCiAgICAvLyAtLS0tLSBDaGVjayB0aGF0I
HRoZSBmaWxlIGhlYWRlciBpcyBjb2hlcmVudCB3aXRoICRwX2VudHJ5IGluZm8KICAgIGlmICgkdGhpcy0+
cHJpdkNoZWNrRmlsZUhlYWRlcnMoJHZfaGVhZGVyLCAkcF9lbnRyeSkgIT0gMSkgewogICAgICAgIC8vIFR
CQwogICAgfQoKICAgIC8vIC0tLS0tIExvb2sgZm9yIHByZS1leHRyYWN0IGNhbGxiYWNrCiAgICBpZiAoaX
NzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfQ0JfUFJFX0VYVFJBQ1RdKSkgewoKICAgICAgLy8gLS0tLS0gR2VuZ
XJhdGUgYSBsb2NhbCBpbmZvcm1hdGlvbgogICAgICAkdl9sb2NhbF9oZWFkZXIgPSBhcnJheSgpOwogICAg
ICAkdGhpcy0+cHJpdkNvbnZlcnRIZWFkZXIyRmlsZUluZm8oJHBfZW50cnksICR2X2xvY2FsX2hlYWRlcik
7CgogICAgICAvLyAtLS0tLSBDYWxsIHRoZSBjYWxsYmFjawogICAgICAvLyBIZXJlIEkgZG8gbm90IHVzZS
BjYWxsX3VzZXJfZnVuYygpIGJlY2F1c2UgSSBuZWVkIHRvIHNlbmQgYSByZWZlcmVuY2UgdG8gdGhlCiAgI
CAgIC8vIGhlYWRlci4KICAgICAgJHZfcmVzdWx0ID0gJHBfb3B0aW9uc1tQQ0xaSVBfQ0JfUFJFX0VYVFJB
Q1RdKFBDTFpJUF9DQl9QUkVfRVhUUkFDVCwgJHZfbG9jYWxfaGVhZGVyKTsKICAgICAgaWYgKCR2X3Jlc3V
sdCA9PSAwKSB7CiAgICAgICAgLy8gLS0tLS0gQ2hhbmdlIHRoZSBmaWxlIHN0YXR1cwogICAgICAgICRwX2
VudHJ5WydzdGF0dXMnXSA9ICJza2lwcGVkIjsKICAgICAgICAkdl9yZXN1bHQgPSAxOwogICAgICB9CgogI
CAgICAvLyAtLS0tLSBMb29rIGZvciBhYm9ydCByZXN1bHQKICAgICAgaWYgKCR2X3Jlc3VsdCA9PSAyKSB7
CiAgICAgICAgLy8gLS0tLS0gVGhpcyBzdGF0dXMgaXMgaW50ZXJuYWwgYW5kIHdpbGwgYmUgY2hhbmdlZCB
pbiAnc2tpcHBlZCcKICAgICAgICAkcF9lbnRyeVsnc3RhdHVzJ10gPSAiYWJvcnRlZCI7CiAgICAgIAkkdl
9yZXN1bHQgPSBQQ0xaSVBfRVJSX1VTRVJfQUJPUlRFRDsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gVXBkY
XRlIHRoZSBpbmZvcm1hdGlvbnMKICAgICAgLy8gT25seSBzb21lIGZpZWxkcyBjYW4gYmUgbW9kaWZpZWQK
ICAgICAgJHBfZW50cnlbJ2ZpbGVuYW1lJ10gPSAkdl9sb2NhbF9oZWFkZXJbJ2ZpbGVuYW1lJ107CiAgICB
9CgoKICAgIC8vIC0tLS0tIExvb2sgaWYgZXh0cmFjdGlvbiBzaG91bGQgYmUgZG9uZQogICAgaWYgKCRwX2
VudHJ5WydzdGF0dXMnXSA9PSAnb2snKSB7CgogICAgICAvLyAtLS0tLSBEbyB0aGUgZXh0cmFjdGlvbiAoa
WYgbm90IGEgZm9sZGVyKQogICAgICBpZiAoISgoJHBfZW50cnlbJ2V4dGVybmFsJ10mMHgwMDAwMDAxMCk9
PTB4MDAwMDAwMTApKSB7CiAgICAgICAgLy8gLS0tLS0gTG9vayBmb3Igbm90IGNvbXByZXNzZWQgZmlsZQo
gIC8vICAgICAgaWYgKCRwX2VudHJ5Wydjb21wcmVzc2VkX3NpemUnXSA9PSAkcF9lbnRyeVsnc2l6ZSddKQ
ogICAgICAgIGlmICgkcF9lbnRyeVsnY29tcHJlc3Npb24nXSA9PSAwKSB7CgogICAgICAgICAgLy8gLS0tL
S0gUmVhZGluZyB0aGUgZmlsZQogICAgICAgICAgJHBfc3RyaW5nID0gQGZyZWFkKCR0aGlzLT56aXBfZmQs
ICRwX2VudHJ5Wydjb21wcmVzc2VkX3NpemUnXSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICA
gICAgIC8vIC0tLS0tIFJlYWRpbmcgdGhlIGZpbGUKICAgICAgICAgICR2X2RhdGEgPSBAZnJlYWQoJHRoaX
MtPnppcF9mZCwgJHBfZW50cnlbJ2NvbXByZXNzZWRfc2l6ZSddKTsKCiAgICAgICAgICAvLyAtLS0tLSBEZ
WNvbXByZXNzIHRoZSBmaWxlCiAgICAgICAgICBpZiAoKCRwX3N0cmluZyA9IEBnemluZmxhdGUoJHZfZGF0
YSkpID09PSBGQUxTRSkgewogICAgICAgICAgICAgIC8vIFRCQwogICAgICAgICAgfQogICAgICAgIH0KCiA
gICAgICAgLy8gLS0tLS0gVHJhY2UKICAgICAgfQogICAgICBlbHNlIHsKICAgICAgICAgIC8vIFRCQyA6IG
Vycm9yIDogY2FuIG5vdCBleHRyYWN0IGEgZm9sZGVyIGluIGEgc3RyaW5nCiAgICAgIH0KCiAgICB9CgogI
AkvLyAtLS0tLSBDaGFuZ2UgYWJvcnQgc3RhdHVzCiAgCWlmICgkcF9lbnRyeVsnc3RhdHVzJ10gPT0gImFi
b3J0ZWQiKSB7CiAgICAgICAgJHBfZW50cnlbJ3N0YXR1cyddID0gInNraXBwZWQiOwogIAl9CgogICAgLy8
gLS0tLS0gTG9vayBmb3IgcG9zdC1leHRyYWN0IGNhbGxiYWNrCiAgICBlbHNlaWYgKGlzc2V0KCRwX29wdG
lvbnNbUENMWklQX0NCX1BPU1RfRVhUUkFDVF0pKSB7CgogICAgICAvLyAtLS0tLSBHZW5lcmF0ZSBhIGxvY
2FsIGluZm9ybWF0aW9uCiAgICAgICR2X2xvY2Fs
X2hlYWRlciA9IGFycmF5KCk7CiAgICAgICR0aGlzLT5wcml2Q29udmVydEhlYWRlcjJGaWxlSW5mbygkcF9
lbnRyeSwgJHZfbG9jYWxfaGVhZGVyKTsKCiAgICAgIC8vIC0tLS0tIFN3YXAgdGhlIGNvbnRlbnQgdG8gaG
VhZGVyCiAgICAgICR2X2xvY2FsX2hlYWRlclsnY29udGVudCddID0gJHBfc3RyaW5nOwogICAgICAkcF9zd
HJpbmcgPSAnJzsKCiAgICAgIC8vIC0tLS0tIENhbGwgdGhlIGNhbGxiYWNrCiAgICAgIC8vIEhlcmUgSSBk
byBub3QgdXNlIGNhbGxfdXNlcl9mdW5jKCkgYmVjYXVzZSBJIG5lZWQgdG8gc2VuZCBhIHJlZmVyZW5jZSB
0byB0aGUKICAgICAgLy8gaGVhZGVyLgogICAgICAkdl9yZXN1bHQgPSAkcF9vcHRpb25zW1BDTFpJUF9DQl
9QT1NUX0VYVFJBQ1RdKFBDTFpJUF9DQl9QT1NUX0VYVFJBQ1QsICR2X2xvY2FsX2hlYWRlcik7CgogICAgI
CAvLyAtLS0tLSBTd2FwIGJhY2sgdGhlIGNvbnRlbnQgdG8gaGVhZGVyCiAgICAgICRwX3N0cmluZyA9ICR2
X2xvY2FsX2hlYWRlclsnY29udGVudCddOwogICAgICB1bnNldCgkdl9sb2NhbF9oZWFkZXJbJ2NvbnRlbnQ
nXSk7CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBhYm9ydCByZXN1bHQKICAgICAgaWYgKCR2X3Jlc3VsdC
A9PSAyKSB7CiAgICAgIAkkdl9yZXN1bHQgPSBQQ0xaSVBfRVJSX1VTRVJfQUJPUlRFRDsKICAgICAgfQogI
CAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IHByaXZSZWFkR
mlsZUhlYWRlcigpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIFJldHVybiBW
YWx1ZXMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdlJlYWRGaWxlSGVhZGVyKC
YkcF9oZWFkZXIpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgNCBieXRlc
yBzaWduYXR1cmUKICAgICR2X2JpbmFyeV9kYXRhID0gQGZyZWFkKCR0aGlzLT56aXBfZmQsIDQpOwogICAg
JHZfZGF0YSA9IHVucGFjaygnVmlkJywgJHZfYmluYXJ5X2RhdGEpOwoKICAgIC8vIC0tLS0tIENoZWNrIHN
pZ25hdHVyZQogICAgaWYgKCR2X2RhdGFbJ2lkJ10gIT0gMHgwNDAzNGI1MCkKICAgIHsKCiAgICAgIC8vIC
0tLS0tIEVycm9yIGxvZwogICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0JBRF9GT1JNQ
VQsICdJbnZhbGlkIGFyY2hpdmUgc3RydWN0dXJlJyk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAg
cmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICB9CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlyc3Q
gNDIgYnl0ZXMgb2YgdGhlIGhlYWRlcgogICAgJHZfYmluYXJ5X2RhdGEgPSBmcmVhZCgkdGhpcy0+emlwX2
ZkLCAyNik7CgogICAgLy8gLS0tLS0gTG9vayBmb3IgaW52YWxpZCBibG9jayBzaXplCiAgICBpZiAoc3Ryb
GVuKCR2X2JpbmFyeV9kYXRhKSAhPSAyNikKICAgIHsKICAgICAgJHBfaGVhZGVyWydmaWxlbmFtZSddID0g
IiI7CiAgICAgICRwX2hlYWRlclsnc3RhdHVzJ10gPSAiaW52YWxpZF9oZWFkZXIiOwoKICAgICAgLy8gLS0
tLS0gRXJyb3IgbG9nCiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfQkFEX0ZPUk1BVC
wgIkludmFsaWQgYmxvY2sgc2l6ZSA6ICIuc3RybGVuKCR2X2JpbmFyeV9kYXRhKSk7CgogICAgICAvLyAtL
S0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICB9CgogICAgLy8gLS0t
LS0gRXh0cmFjdCB0aGUgdmFsdWVzCiAgICAkdl9kYXRhID0gdW5wYWNrKCd2dmVyc2lvbi92ZmxhZy92Y29
tcHJlc3Npb24vdm10aW1lL3ZtZGF0ZS9WY3JjL1Zjb21wcmVzc2VkX3NpemUvVnNpemUvdmZpbGVuYW1lX2
xlbi92ZXh0cmFfbGVuJywgJHZfYmluYXJ5X2RhdGEpOwoKICAgIC8vIC0tLS0tIEdldCBmaWxlbmFtZQogI
CAgJHBfaGVhZGVyWydmaWxlbmFtZSddID0gZnJlYWQoJHRoaXMtPnppcF9mZCwgJHZfZGF0YVsnZmlsZW5h
bWVfbGVuJ10pOwoKICAgIC8vIC0tLS0tIEdldCBleHRyYV9maWVsZHMKICAgIGlmICgkdl9kYXRhWydleHR
yYV9sZW4nXSAhPSAwKSB7CiAgICAgICRwX2hlYWRlclsnZXh0cmEnXSA9IGZyZWFkKCR0aGlzLT56aXBfZm
QsICR2X2RhdGFbJ2V4dHJhX2xlbiddKTsKICAgIH0KICAgIGVsc2UgewogICAgICAkcF9oZWFkZXJbJ2V4d
HJhJ10gPSAnJzsKICAgIH0KCiAgICAvLyAtLS0tLSBFeHRyYWN0IHByb3BlcnRpZXMKICAgICRwX2hlYWRl
clsndmVyc2lvbl9leHRyYWN0ZWQnXSA9ICR2X2RhdGFbJ3ZlcnNpb24nXTsKICAgICRwX2hlYWRlclsnY29
tcHJlc3Npb24nXSA9ICR2X2RhdGFbJ2NvbXByZXNzaW9uJ107CiAgICAkcF9oZWFkZXJbJ3NpemUnXSA9IC
R2X2RhdGFbJ3NpemUnXTsKICAgICRwX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSAkdl9kYXRhWydjb
21wcmVzc2VkX3NpemUnXTsKICAgICRwX2hlYWRlclsnY3JjJ10gPSAkdl9kYXRhWydjcmMnXTsKICAgICRw
X2hlYWRlclsnZmxhZyddID0gJHZfZGF0YVsnZmxhZyddOwogICAgJHBfaGVhZGVyWydmaWxlbmFtZV9sZW4
nXSA9ICR2X2RhdGFbJ2ZpbGVuYW1lX2xlbiddOwoKICAgIC8vIC0tLS0tIFJlY3VwZXJhdGUgZGF0ZSBpbi
BVTklYIGZvcm1hdAogICAgJHBfaGVhZGVyWydtZGF0ZSddID0gJHZfZGF0YVsnbWRhdGUnXTsKICAgICRwX
2hlYWRlclsnbXRpbWUnXSA9ICR2X2RhdGFbJ210aW1lJ107CiAgICBpZiAoJHBfaGVhZGVyWydtZGF0ZSdd
ICYmICRwX2hlYWRlclsnbXRpbWUnXSkKICAgIHsKICAgICAgLy8gLS0tLS0gRXh0cmFjdCB0aW1lCiAgICA
gICR2X2hvdXIgPSAoJHBfaGVhZGVyWydtdGltZSddICYgMHhGODAwKSA+PiAxMTsKICAgICAgJHZfbWludX
RlID0gKCRwX2hlYWRlclsnbXRpbWUnXSAmIDB4MDdFMCkgPj4gNTsKICAgICAgJHZfc2Vjb25kZSA9ICgkc
F9oZWFkZXJbJ210aW1lJ10gJiAweDAwMUYpKjI7CgogICAgICAvLyAtLS0tLSBFeHRyYWN0IGRhdGUKICAg
ICAgJHZfeWVhciA9ICgoJHBfaGVhZGVyWydtZGF0ZSddICYgMHhGRTAwKSA+PiA5KSArIDE5ODA7CiAgICA
gICR2X21vbnRoID0gKCRwX2hlYWRlclsnbWRhdGUnXSAmIDB4MDFFMCkgPj4gNTsKICAgICAgJHZfZGF5ID
0gJHBfaGVhZGVyWydtZGF0ZSddICYgMHgwMDFGOwoKICAgICAgLy8gLS0tLS0gR2V0IFVOSVggZGF0ZSBmb
3JtYXQKICAgICAgJHBfaGVhZGVyWydtdGltZSddID0gQG1rdGltZSgkdl9ob3VyLCAkdl9taW51dGUsICR2
X3NlY29uZGUsICR2X21vbnRoLCAkdl9kYXksICR2X3llYXIpOwoKICAgIH0KICAgIGVsc2UKICAgIHsKICA
gICAgJHBfaGVhZGVyWydtdGltZSddID0gdGltZSgpOwogICAgfQoKICAgIC8vIFRCQwogICAgLy9mb3Iocm
VzZXQoJHZfZGF0YSk7ICRrZXkgPSBrZXkoJHZfZGF0YSk7IG5leHQoJHZfZGF0YSkpIHsKICAgIC8vfQoKI
CAgIC8vIC0tLS0tIFNldCB0aGUgc3RvcmVkIGZpbGVuYW1lCiAgICAkcF9oZWFkZXJbJ3N0b3JlZF9maWxl
bmFtZSddID0gJHBfaGVhZGVyWydmaWxlbmFtZSddOwoKICAgIC8vIC0tLS0tIFNldCB0aGUgc3RhdHVzIGZ
pZWxkCiAgICAkcF9oZWFkZXJbJ3N0YXR1cyddID0gIm9rIjsKCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIH
JldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2UmVhZENlbnRyYWxGaWxlSGVhZGVyKCkKICAvLyBEZXNjcm
lwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KICBmdW5jdGlvbiBwcml2UmVhZENlbnRyYWxGaWxlSGVhZGVyKCYkcF9oZWFkZXIpCiAgewo
gICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgNCBieXRlcyBzaWduYXR1cmUKICAgIC
R2X2JpbmFyeV9kYXRhID0gQGZyZWFkKCR0aGlzLT56aXBfZmQsIDQpOwogICAgJHZfZGF0YSA9IHVucGFja
ygnVmlkJywgJHZfYmluYXJ5X2RhdGEpOwoKICAgIC8vIC0tLS0tIENoZWNrIHNpZ25hdHVyZQogICAgaWYg
KCR2X2RhdGFbJ2lkJ10gIT0gMHgwMjAxNGI1MCkKICAgIHsKCiAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwo
gICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0JBRF9GT1JNQVQsICdJbnZhbGlkIGFyY2
hpdmUgc3RydWN0dXJlJyk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuIFBjbFppcDo6Z
XJyb3JDb2RlKCk7CiAgICB9CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgZmlyc3QgNDIgYnl0ZXMgb2YgdGhl
IGhlYWRlcgogICAgJHZfYmluYXJ5X2RhdGEgPSBmcmVhZCgkdGhpcy0+emlwX2ZkLCA0Mik7CgogICAgLy8
gLS0tLS0gTG9vayBmb3IgaW52YWxpZCBibG9jayBzaXplCiAgICBpZiAoc3RybGVuKCR2X2JpbmFyeV9kYX
RhKSAhPSA0MikKICAgIHsKICAgICAgJHBfaGVhZGVyWydmaWxlbmFtZSddID0gIiI7CiAgICAgICRwX2hlY
WRlclsnc3RhdHVzJ10gPSAiaW52YWxpZF9oZWFkZXIiOwoKICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAg
ICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfQkFEX0ZPUk1BVCwgIkludmFsaWQgYmxvY2s
gc2l6ZSA6ICIuc3RybGVuKCR2X2JpbmFyeV9kYXRhKSk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgIC
AgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICB9CgogICAgLy8gLS0tLS0gRXh0cmFjdCB0aGUgd
mFsdWVzCiAgICAkcF9oZWFkZXIgPSB1bnBhY2soJ3Z2ZXJzaW9uL3Z2ZXJzaW9uX2V4dHJhY3RlZC92Zmxh
Zy92Y29tcHJlc3Npb24vdm10aW1lL3ZtZGF0ZS9WY3JjL1Zjb21wcmVzc2VkX3NpemUvVnNpemUvdmZpbGV
uYW1lX2xlbi92ZXh0cmFfbGVuL3Zjb21tZW50X2xlbi92ZGlzay92aW50ZXJuYWwvVmV4dGVybmFsL1ZvZm
ZzZXQnLCAkdl9iaW5hcnlfZGF0YSk7CgogICAgLy8gLS0tLS0gR2V0IGZpbGVuYW1lCiAgICBpZiAoJHBfa
GVhZGVyWydmaWxlbmFtZV9sZW4nXSAhPSAwKQogICAgICAkcF9oZWFkZXJbJ2ZpbGVuYW1lJ10gPSBmcmVh
ZCgkdGhpcy0+emlwX2ZkLCAkcF9oZWFkZXJbJ2ZpbGVuYW1lX2xlbiddKTsKICAgIGVsc2UKICAgICAgJHB
faGVhZGVyWydmaWxlbmFtZSddID0gJyc7CgogICAgLy8gLS0tLS0gR2V0IGV4dHJhCiAgICBpZiAoJHBfaG
VhZGVyWydleHRyYV9sZW4nXSAhPSAwKQogICAgICAkcF9oZWFkZXJbJ2V4dHJhJ10gPSBmcmVhZCgkdGhpc
y0+emlwX2ZkLCAkcF9oZWFkZXJbJ2V4dHJhX2xlbiddKTsKICAgIGVsc2UKICAgICAgJHBfaGVhZGVyWydl
eHRyYSddID0gJyc7CgogICAgLy8gLS0tLS0gR2V0IGNvbW1lbnQKICAgIGlmICgkcF9oZWFkZXJbJ2NvbW1
lbnRfbGVuJ10gIT0gMCkKICAgICAgJHBfaGVhZGVyWydjb21tZW50J10gPSBmcmVhZCgkdGhpcy0+emlwX2
ZkLCAkcF9oZWFkZXJbJ2NvbW1lbnRfbGVuJ10pOwogICAgZWxzZQogICAgICAkcF9oZWFkZXJbJ2NvbW1lb
nQnXSA9ICcnOwoKICAgIC8vIC0tLS0tIEV4dHJhY3QgcHJvcGVydGllcwoKICAgIC8vIC0tLS0tIFJlY3Vw
ZXJhdGUgZGF0ZSBpbiBVTklYIGZvcm1hdAogICAgLy9pZiAoJHBfaGVhZGVyWydtZGF0ZSddICYmICRwX2h
lYWRlclsnbXRpbWUnXSkKICAgIC8vIFRCQyA6IGJ1ZyA6IHRoaXMgd2FzIGlnbm9yaW5nIHRpbWUgd2l0aC
AwLzAvMAogICAgaWYgKDEpCiAgICB7CiAgICAgIC8vIC0tLS0tIEV4dHJhY3QgdGltZQogICAgICAkdl9ob
3VyID0gKCRwX2hlYWRlclsnbXRpbWUnXSAmIDB4RjgwMCkgPj4gMTE7CiAgICAgICR2X21pbnV0ZSA9ICgk
cF9oZWFkZXJbJ210aW1lJ10gJiAweDA3RTApID4+IDU7CiAgICAgICR2X3NlY29uZGUgPSAoJHBfaGVhZGV
yWydtdGltZSddICYgMHgwMDFGKSoyOwoKICAgICAgLy8gLS0tLS0gRXh0cmFjdCBkYXRlCiAgICAgICR2X3
llYXIgPSAoKCRwX2hlYWRlclsnbWRhdGUnXSAmIDB4RkUwMCkgPj4gOSkgKyAxOTgwOwogICAgICAkdl9tb
250aCA9ICgkcF9oZWFkZXJbJ21kYXRlJ10gJiAweDAxRTApID4+IDU7CiAgICAgICR2X2RheSA9ICRwX2hl
YWRlclsnbWRhdGUnXSAmIDB4MDAxRjsKCiAgICAgIC8vIC0tLS0tIEdldCBVTklYIGRhdGUgZm9ybWF0CiA
gICAgICRwX2hlYWRlclsnbXRpbWUnXSA9IEBta3RpbWUoJHZfaG91ciwgJHZfbWludXRlLCAkdl9zZWNvbm
RlLCAkdl9tb250aCwgJHZfZGF5LCAkdl95ZWFyKTsKCiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICRwX
2hlYWRlclsnbXRpbWUnXSA9IHRpbWUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBTZXQgdGhlIHN0b3JlZCBm
aWxlbmFtZQogICAgJHBfaGVhZGVyWydzdG9yZWRfZmlsZW5hbWUnXSA9ICRwX2hlYWRlclsnZmlsZW5hbWU
nXTsKCiAgICAvLyAtLS0tLSBTZXQgZGVmYXVsdCBzdGF0dXMgdG8gb2sKICAgICRwX2hlYWRlclsnc3RhdH
VzJ10gPSAnb2snOwoKICAgIC8vIC0tLS0tIExvb2sgaWYgaXQgaXMgYSBkaXJlY3RvcnkKICAgIGlmIChzd
WJzdHIoJHBfaGVhZGVyWydmaWxlbmFtZSddLCAtMSkgPT0gJy8nKSB7CiAgICAgIC8vJHBfaGVhZGVyWydl
eHRlcm5hbCddID0gMHg0MUZGMDAxMDsKICAgICAgJHBfaGVhZGVyWydleHRlcm5hbCddID0gMHgwMDAwMDA
xMDsKICAgIH0KCgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLy
AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogcHJ
pdkNoZWNrRmlsZUhlYWRlcnMoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLy
BSZXR1cm4gVmFsdWVzIDoKICAvLyAgIDEgb24gc3VjY2VzcywKICAvLyAgIDAgb24gZXJyb3I7CiAgLy8gL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiB
wcml2Q2hlY2tGaWxlSGVhZGVycygmJHBfbG9jYWxfaGVhZGVyLCAmJHBfY2VudHJhbF9oZWFkZXIpCiAgew
ogICAgJHZfcmVzdWx0PTE7CgogIAkvLyAtLS0tLSBDaGVjayB0aGUgc3RhdGljIHZhbHVlcwogIAkvLyBUQ
kMKICAJaWYgKCRwX2xvY2FsX2hlYWRlclsnZmlsZW5hbWUnXSAhPSAkcF9jZW50cmFsX2hlYWRlclsnZmls
ZW5hbWUnXSkgewogIAl9CiAgCWlmICgkcF9sb2NhbF9oZWFkZXJbJ3ZlcnNpb25fZXh0cmFjdGVkJ10gIT0
gJHBfY2VudHJhbF9oZWFkZXJbJ3ZlcnNpb25fZXh0cmFjdGVkJ10pIHsKICAJfQogIAlpZiAoJHBfbG9jYW
xfaGVhZGVyWydmbGFnJ10gIT0gJHBfY2VudHJhbF9oZWFkZXJbJ2ZsYWcnXSkgewogIAl9CiAgCWlmICgkc
F9sb2NhbF9oZWFkZXJbJ2NvbXByZXNzaW9uJ10gIT0gJHBfY2VudHJhbF9oZWFkZXJbJ2NvbXByZXNzaW9u
J10pIHsKICAJfQogIAlpZiAoJHBfbG9jYWxfaGVhZGVyWydtdGltZSddICE9ICRwX2NlbnRyYWxfaGVhZGV
yWydtdGltZSddKSB7CiAgCX0KICAJaWYgKCRwX2xvY2FsX2hlYWRlclsnZmlsZW5hbWVfbGVuJ10gIT0gJH
BfY2VudHJhbF9oZWFkZXJbJ2ZpbGVuYW1lX2xlbiddKSB7CiAgCX0KCiAgCS8vIC0tLS0tIExvb2sgZm9yI
GZsYWcgYml0IDMKICAJaWYgKCgkcF9sb2NhbF9oZWFkZXJbJ2ZsYWcnXSAmIDgpID09IDgpIHsKICAgICAg
ICAgICRwX2xvY2FsX2hlYWRlclsnc2l6ZSddID0gJHBfY2VudHJhbF9oZWFkZXJbJ3NpemUnXTsKICAgICA
gICAgICRwX2xvY2FsX2hlYWRlclsnY29tcHJlc3NlZF9zaXplJ10gPSAkcF9jZW50cmFsX2hlYWRlclsnY2
9tcHJlc3NlZF9zaXplJ107CiAgICAgICAgICAkcF9sb2NhbF9oZWFkZXJbJ2NyYyddID0gJHBfY2VudHJhb
F9oZWFkZXJbJ2NyYyddOwogIAl9CgogICAgLy8gLS0tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0
OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1b
mN0aW9uIDogcHJpdlJlYWRFbmRDZW50cmFsRGlyKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1l
dGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbi
Bwcml2UmVhZEVuZENlbnRyYWxEaXIoJiRwX2NlbnRyYWxfZGlyKQogIHsKICAgICR2X3Jlc3VsdD0xOwoKI
CAgIC8vIC0tLS0tIEdvIHRvIHRoZSBlbmQgb2YgdGhlIHppcCBmaWxlCiAgICAkdl9zaXplID0gZmlsZXNp
emUoJHRoaXMtPnppcG5hbWUpOwogICAgQGZzZWVrKCR0aGlzLT56aXBfZmQsICR2X3NpemUpOwogICAgaWY
gKEBmdGVsbCgkdGhpcy0+emlwX2ZkKSAhPSAkdl9zaXplKQogICAgewogICAgICAvLyAtLS0tLSBFcnJvci
Bsb2cKICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9CQURfRk9STUFULCAnVW5hYmxlI
HRvIGdvIHRvIHRoZSBlbmQgb2YgdGhlIGFyY2hpdmUgXCcnLiR0aGlzLT56aXBuYW1lLidcJycpOwoKICAg
ICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgfQoKICA
gIC8vIC0tLS0tIEZpcnN0IHRyeSA6IGxvb2sgaWYgdGhpcyBpcyBhbiBhcmNoaXZlIHdpdGggbm8gY29tbW
VudGFyaWVzIChtb3N0IG9mIHRoZSB0aW1lKQogICAgLy8gaW4gdGhpcyBjYXNlIHRoZSBlbmQgb2YgY2Vud
HJhbCBkaXIgaXMgYXQgMjIgYnl0ZXMgb2YgdGhlIGZpbGUgZW5kCiAgICAkdl9mb3VuZCA9IDA7CiAgICBp
ZiAoJHZfc2l6ZSA+IDI2KSB7CiAgICAgIEBmc2VlaygkdGhpcy0+emlwX2ZkLCAkdl9zaXplLTIyKTsKICA
gICAgaWYgKCgkdl9wb3MgPSBAZnRlbGwoJHRoaXMtPnppcF9mZCkpICE9ICgkdl9zaXplLTIyKSkKICAgIC
AgewogICAgICAgIC8vIC0tLS0tIEVycm9yIGxvZwogICAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDT
FpJUF9FUlJfQkFEX0ZPUk1BVCwgJ1VuYWJsZSB0byBzZWVrIGJhY2sgdG8gdGhlIG1pZGRsZSBvZiB0aGUg
YXJjaGl2ZSBcJycuJHRoaXMtPnppcG5hbWUuJ1wnJyk7CgogICAgICAgIC8vIC0tLS0tIFJldHVybgogICA
gICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICB9CgogICAgICAvLyAtLS0tLSBSZWFkIG
ZvciBieXRlcwogICAgICAkdl9iaW5hcnlfZGF0YSA9IEBmcmVhZCgkdGhpcy0+emlwX2ZkLCA0KTsKICAgI
CAgJHZfZGF0YSA9IEB1bnBhY2soJ1ZpZCcsICR2X2JpbmFyeV9kYXRhKTsKCiAgICAgIC8vIC0tLS0tIENo
ZWNrIHNpZ25hdHVyZQogICAgICBpZiAoJHZfZGF0YVsnaWQnXSA9PSAweDA2MDU0YjUwKSB7CiAgICAgICA
gJHZfZm91bmQgPSAxOwogICAgICB9CgogICAgICAkdl9wb3MgPSBmdGVsbCgkdGhpcy0+emlwX2ZkKTsKIC
AgIH0KCiAgICAvLyAtLS0tLSBHbyBiYWNrIHRvIHRoZSBtYXhpbXVtIHBvc3NpYmxlIHNpemUgb2YgdGhlI
ENlbnRyYWwgRGlyIEVuZCBSZWNvcmQKICAgIGlmICghJHZfZm91bmQpIHsKICAgICAgJHZfbWF4aW11bV9z
aXplID0gNjU1NTc7IC8vIDB4RkZGRiArIDIyOwogICAgICBpZiAoJHZfbWF4aW11bV9zaXplID4gJHZfc2l
6ZSkKICAgICAgICAkdl9tYXhpbXVtX3NpemUgPSAkdl9zaXplOwogICAgICBAZnNlZWsoJHRoaXMtPnppcF
9mZCwgJHZfc2l6ZS0kdl9tYXhpbXVtX3NpemUpOwogICAgICBpZiAoQGZ0ZWxsKCR0aGlzLT56aXBfZmQpI
CE9ICgkdl9zaXplLSR2X21heGltdW1fc2l6ZSkpCiAgICAgIHsKICAgICAgICAvLyAtLS0tLSBFcnJvciBs
b2cKICAgICAgICBQY2xaaXA6OnByaXZFcnJvckxvZyhQQ0xaSVBfRVJSX0JBRF9GT1JNQVQsICdVbmFibGU
gdG8gc2VlayBiYWNrIHRvIHRoZSBtaWRkbGUgb2YgdGhlIGFyY2hpdmUgXCcnLiR0aGlzLT56aXBuYW1lLi
dcJycpOwoKICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZ
GUoKTsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gUmVhZCBieXRlIHBlciBieXRlIGluIG9yZGVyIHRvIGZp
bmQgdGhlIHNpZ25hdHVyZQogICAgICAkdl9wb3MgPSBmdGVsbCgkdGhpcy0+emlwX2ZkKTsKICAgICAgJHZ
fYnl0ZXMgPSAweDAwMDAwMDAwOwogICAgICB3aGlsZSAoJHZfcG9zIDwgJHZfc2l6ZSkKICAgICAgewogIC
AgICAgIC8vIC0tLS0tIFJlYWQgYSBieXRlCiAgICAgICAgJHZfYnl0ZSA9IEBmcmVhZCgkdGhpcy0+emlwX
2ZkLCAxKTsKCiAgICAgICAgLy8gLS0tLS0gIEFkZCB0aGUgYnl0ZQogICAgICAgIC8vJHZfYnl0ZXMgPSAo
JHZfYnl0ZXMgPDwgOCkgfCBPcmQoJHZfYnl0ZSk7CiAgICAgICAgLy8gTm90ZSB3ZSBtYXNrIHRoZSBvbGQ
gdmFsdWUgZG93biBzdWNoIHRoYXQgb25jZSBzaGlmdGVkIHdlIGNhbiBuZXZlciBlbmQgdXAgd2l0aCBtb3
JlIHRoYW4gYSAzMmJpdCBudW1iZXIKICAgICAgICAvLyBPdGhlcndpc2Ugb24gc3lzdGVtcyB3aGVyZSB3Z
SBoYXZlIDY0Yml0IGludGVnZXJzIHRoZSBjaGVjayBiZWxvdyBmb3IgdGhlIG1hZ2ljIG51bWJlciB3aWxs
IGZhaWwuCiAgICAgICAgJHZfYnl0ZXMgPSAoICgkdl9ieXRlcyAmIDB4RkZGRkZGKSA8PCA4KSB8IE9yZCg
kdl9ieXRlKTsKCiAgICAgICAgLy8gLS0tLS0gQ29tcGFyZSB0aGUgYnl0ZXMKICAgICAgICBpZiAoJHZfYn
l0ZXMgPT0gMHg1MDRiMDUwNikKICAgICAgICB7CiAgICAgICAgICAkdl9wb3MrKzsKICAgICAgICAgIGJyZ
WFrOwogICAgICAgIH0KCiAgICAgICAgJHZfcG9zKys7CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sg
aWYgbm90IGZvdW5kIGVuZCBvZiBjZW50cmFsIGRpcgogICAgICBpZiAoJHZfcG9zID09ICR2X3NpemUpCiA
gICAgIHsKCiAgICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2
coUENMWklQX0VSUl9CQURfRk9STUFULCAiVW5hYmxlIHRvIGZpbmQgRW5kIG9mIENlbnRyYWwgRGlyIFJlY
29yZCBzaWduYXR1cmUiKTsKCiAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgcmV0dXJuIFBjbFpp
cDo6ZXJyb3JDb2RlKCk7CiAgICAgIH0KICAgIH0KCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaXJzdCAxOCB
ieXRlcyBvZiB0aGUgaGVhZGVyCiAgICAkdl9iaW5hcnlfZGF0YSA9IGZyZWFkKCR0aGlzLT56aXBfZmQsID
E4KTsKCiAgICAvLyAtLS0tLSBMb29rIGZvciBpbnZhbGlkIGJsb2NrIHNpemUKICAgIGlmIChzdHJsZW4oJ
HZfYmluYXJ5X2RhdGEpICE9IDE4KQogICAgewoKICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgIFBj
bFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfQkFEX0ZPUk1BVCwgIkludmFsaWQgRW5kIG9mIENlbnR
yYWwgRGlyIFJlY29yZCBzaXplIDogIi5zdHJsZW4oJHZfYmluYXJ5X2RhdGEpKTsKCiAgICAgIC8vIC0tLS
0tIFJldHVybgogICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tL
SBFeHRyYWN0IHRoZSB2YWx1ZXMKICAgICR2X2RhdGEgPSB1bnBhY2soJ3ZkaXNrL3ZkaXNrX3N0YXJ0L3Zk
aXNrX2VudHJpZXMvdmVudHJpZXMvVnNpemUvVm9mZnNldC92Y29tbWVudF9zaXplJywgJHZfYmluYXJ5X2R
hdGEpOwoKICAgIC8vIC0tLS0tIENoZWNrIHRoZSBnbG9iYWwgc2l6ZQogICAgaWYgKCgkdl9wb3MgKyAkdl
9kYXRhWydjb21tZW50X3NpemUnXSArIDE4KSAhPSAkdl9zaXplKSB7CgoJICAvLyAtLS0tLSBSZW1vdmVkI
GluIHJlbGVhc2UgMi4yIHNlZSByZWFkbWUgZmlsZQoJICAvLyBUaGUgY2hlY2sgb2YgdGhlIGZpbGUgc2l6
ZSBpcyBhIGxpdHRsZSB0b28gc3RyaWN0LgoJICAvLyBTb21lIGJ1Z3Mgd2hlcmUgZm91bmQgd2hlbiBhIHp
pcCBpcyBlbmNyeXB0ZWQvZGVjcnlwdGVkIHdpdGggJ2NyeXB0Jy4KCSAgLy8gV2hpbGUgZGVjcnlwdGVkLC
B6aXAgaGFzIHRyYWluaW5nIDAgYnl0ZXMKCSAgaWYgKDApIHsKICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nC
iAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfQkFEX0ZPUk1BVCwKCSAgICAgICAgICAg
ICAgICAgICAgICAgJ1RoZSBjZW50cmFsIGRpciBpcyBub3QgYXQgdGhlIGVuZCBvZiB0aGUgYXJjaGl2ZS4
nCgkJCQkJCSAgIC4nIFNvbWUgdHJhaWxpbmcgYnl0ZXMgZXhpc3RzIGFmdGVyIHRoZSBhcmNoaXZlLicpOw
oKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwoJICB9C
iAgICB9CgogICAgLy8gLS0tLS0gR2V0IGNvbW1lbnQKICAgIGlmICgkdl9kYXRhWydjb21tZW50X3NpemUn
XSAhPSAwKSB7CiAgICAgICRwX2NlbnRyYWxfZGlyWydjb21tZW50J10gPSBmcmVhZCgkdGhpcy0+emlwX2Z
kLCAkdl9kYXRhWydjb21tZW50X3NpemUnXSk7CiAgICB9CiAgICBlbHNlCiAgICAgICRwX2NlbnRyYWxfZG
lyWydjb21tZW50J10gPSAnJzsKCiAgICAkcF9jZW50cmFsX2RpclsnZW50cmllcyddID0gJHZfZGF0YVsnZ
W50cmllcyddOwogICAgJHBfY2VudHJhbF9kaXJbJ2Rpc2tfZW50cmllcyddID0gJHZfZGF0YVsnZGlza19l
bnRyaWVzJ107CiAgICAkcF9jZW50cmFsX2Rpclsnb2Zmc2V0J10gPSAkdl9kYXRhWydvZmZzZXQnXTsKICA
gICRwX2NlbnRyYWxfZGlyWydzaXplJ10gPSAkdl9kYXRhWydzaXplJ107CiAgICAkcF9jZW50cmFsX2Rpcl
snZGlzayddID0gJHZfZGF0YVsnZGlzayddOwogICAgJHBfY2VudHJhbF9kaXJbJ2Rpc2tfc3RhcnQnXSA9I
CR2X2RhdGFbJ2Rpc2tfc3RhcnQnXTsKCiAgICAvLyBUQkMKICAgIC8vZm9yKHJlc2V0KCRwX2NlbnRyYWxf
ZGlyKTsgJGtleSA9IGtleSgkcF9jZW50cmFsX2Rpcik7IG5leHQoJHBfY2VudHJhbF9kaXIpKSB7CiAgICA
vL30KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2RGVsZXR
lQnlSdWxlKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbH
VlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml2RGVsZXRlQnlSdWxlKCYkcF9y
ZXN1bHRfbGlzdCwgJiRwX29wdGlvbnMpCiAgewogICAgJHZfcmVzdWx0PTE7CiAgICAkdl9saXN0X2RldGF
pbCA9IGFycmF5KCk7CgogICAgLy8gLS0tLS0gT3BlbiB0aGUgemlwIGZpbGUKICAgIGlmICgoJHZfcmVzdW
x0PSR0aGlzLT5wcml2T3BlbkZkKCdyYicpKSAhPSAxKQogICAgewogICAgICAvLyAtLS0tLSBSZXR1cm4KI
CAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBSZWFkIHRoZSBjZW50cmFsIGRp
cmVjdG9yeSBpbmZvcm1hdGlvbnMKICAgICR2X2NlbnRyYWxfZGlyID0gYXJyYXkoKTsKICAgIGlmICgoJHZ
fcmVzdWx0ID0gJHRoaXMtPnByaXZSZWFkRW5kQ2VudHJhbERpcigkdl9jZW50cmFsX2RpcikpICE9IDEpCi
AgICB7CiAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgf
QoKICAgIC8vIC0tLS0tIEdvIHRvIGJlZ2lubmluZyBvZiBGaWxlCiAgICBAcmV3aW5kKCR0aGlzLT56aXBf
ZmQpOwoKICAgIC8vIC0tLS0tIFNjYW4gYWxsIHRoZSBmaWxlcwogICAgLy8gLS0tLS0gU3RhcnQgYXQgYmV
naW5uaW5nIG9mIENlbnRyYWwgRGlyCiAgICAkdl9wb3NfZW50cnkgPSAkdl9jZW50cmFsX2Rpclsnb2Zmc2
V0J107CiAgICBAcmV3aW5kKCR0aGlzLT56aXBfZmQpOwogICAgaWYgKEBmc2VlaygkdGhpcy0+emlwX2ZkL
CAkdl9wb3NfZW50cnkpKQogICAgewogICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgemlwIGZpbGUKICAgICAg
JHRoaXMtPnByaXZDbG9zZUZkKCk7CgogICAgICAvLyAtLS0tLSBFcnJvciBsb2cKICAgICAgUGNsWmlwOjp
wcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX0FSQ0hJVkVfWklQLCAnSW52YWxpZCBhcmNoaXZlIH
NpemUnKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoK
TsKICAgIH0KCiAgICAvLyAtLS0tLSBSZWFkIGVhY2ggZW50cnkKICAgICR2X2hlYWRlcl9saXN0ID0gYXJy
YXkoKTsKICAgICRqX3N0YXJ0ID0gMDsKICAgIGZvciAoJGk9MCwgJHZfbmJfZXh0cmFjdGVkPTA7ICRpPCR
2X2NlbnRyYWxfZGlyWydlbnRyaWVzJ107ICRpKy
spCiAgICB7CgogICAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaWxlIGhlYWRlcgogICAgICAkdl9oZWFkZXJfb
GlzdFskdl9uYl9leHRyYWN0ZWRdID0gYXJyYXkoKTsKICAgICAgaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+
cHJpdlJlYWRDZW50cmFsRmlsZUhlYWRlcigkdl9oZWFkZXJfbGlzdFskdl9uYl9leHRyYWN0ZWRdKSkgIT0
gMSkKICAgICAgewogICAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSB6aXAgZmlsZQogICAgICAgICR0aGlzLT
5wcml2Q2xvc2VGZCgpOwoKICAgICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgICB9CgoKICAgICAgLy8gL
S0tLS0gU3RvcmUgdGhlIGluZGV4CiAgICAgICR2X2hlYWRlcl9saXN0WyR2X25iX2V4dHJhY3RlZF1bJ2lu
ZGV4J10gPSAkaTsKCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIHRoZSBzcGVjaWZpYyBleHRyYWN0IHJ1bGV
zCiAgICAgICR2X2ZvdW5kID0gZmFsc2U7CgogICAgICAvLyAtLS0tLSBMb29rIGZvciBleHRyYWN0IGJ5IG
5hbWUgcnVsZQogICAgICBpZiAoICAgKGlzc2V0KCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9OQU1FXSkpC
iAgICAgICAgICAmJiAoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX05BTUVdICE9IDApKSB7CgogICAgICAg
ICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgZmlsZW5hbWUgaXMgaW4gdGhlIGxpc3QKICAgICAgICAgIGZvciA
oJGo9MDsgKCRqPHNpemVvZigkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfTkFNRV0pKSAmJiAoISR2X2ZvdW
5kKTsgJGorKykgewoKICAgICAgICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBhIGRpcmVjdG9yeQogICAgI
CAgICAgICAgIGlmIChzdWJzdHIoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX05BTUVdWyRqXSwgLTEpID09
ICIvIikgewoKICAgICAgICAgICAgICAgICAgLy8gLS0tLS0gTG9vayBpZiB0aGUgZGlyZWN0b3J5IGlzIGl
uIHRoZSBmaWxlbmFtZSBwYXRoCiAgICAgICAgICAgICAgICAgIGlmICggICAoc3RybGVuKCR2X2hlYWRlcl
9saXN0WyR2X25iX2V4dHJhY3RlZF1bJ3N0b3JlZF9maWxlbmFtZSddKSA+IHN0cmxlbigkcF9vcHRpb25zW
1BDTFpJUF9PUFRfQllfTkFNRV1bJGpdKSkKICAgICAgICAgICAgICAgICAgICAgICYmIChzdWJzdHIoJHZf
aGVhZGVyX2xpc3RbJHZfbmJfZXh0cmFjdGVkXVsnc3RvcmVkX2ZpbGVuYW1lJ10sIDAsIHN0cmxlbigkcF9
vcHRpb25zW1BDTFpJUF9PUFRfQllfTkFNRV1bJGpdKSkgPT0gJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0
5BTUVdWyRqXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICR2X2ZvdW5kID0gdHJ1ZTsKICAgICAgICAgI
CAgICAgICAgfQogICAgICAgICAgICAgICAgICBlbHNlaWYgKCAgICgoJHZfaGVhZGVyX2xpc3RbJHZfbmJf
ZXh0cmFjdGVkXVsnZXh0ZXJuYWwnXSYweDAwMDAwMDEwKT09MHgwMDAwMDAxMCkgLyogSW5kaWNhdGVzIGE
gZm9sZGVyICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCR2X2hlYWRlcl9saXN0WyR2X25iX2
V4dHJhY3RlZF1bJ3N0b3JlZF9maWxlbmFtZSddLicvJyA9PSAkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfT
kFNRV1bJGpdKSkgewogICAgICAgICAgICAgICAgICAgICAgJHZfZm91bmQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGEgZml
sZW5hbWUKICAgICAgICAgICAgICBlbHNlaWYgKCR2X2hlYWRlcl9saXN0WyR2X25iX2V4dHJhY3RlZF1bJ3
N0b3JlZF9maWxlbmFtZSddID09ICRwX29wdGlvbnNbUENMWklQX09QVF9CWV9OQU1FXVskal0pIHsKICAgI
CAgICAgICAgICAgICAgJHZfZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAg
ICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZXh0cmFjdCBieSBlcmVnIHJ1bGUKICAgICAgLy8gZXJ
lZygpIGlzIGRlcHJlY2F0ZWQgd2l0aCBQSFAgNS4zCiAgICAgIC8qCiAgICAgIGVsc2UgaWYgKCAgIChpc3
NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfRVJFR10pKQogICAgICAgICAgICAgICAmJiAoJHBfb3B0a
W9uc1tQQ0xaSVBfT1BUX0JZX0VSRUddICE9ICIiKSkgewoKICAgICAgICAgIGlmIChlcmVnKCRwX29wdGlv
bnNbUENMWklQX09QVF9CWV9FUkVHXSwgJHZfaGVhZGVyX2xpc3RbJHZfbmJfZXh0cmFjdGVkXVsnc3RvcmV
kX2ZpbGVuYW1lJ10pKSB7CiAgICAgICAgICAgICAgJHZfZm91bmQgPSB0cnVlOwogICAgICAgICAgfQogIC
AgICB9CiAgICAgICovCgogICAgICAvLyAtLS0tLSBMb29rIGZvciBleHRyYWN0IGJ5IHByZWcgcnVsZQogI
CAgICBlbHNlIGlmICggICAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX1BSRUddKSkKICAgICAg
ICAgICAgICAgJiYgKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9QUkVHXSAhPSAiIikpIHsKCiAgICAgICA
gICBpZiAocHJlZ19tYXRjaCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQllfUFJFR10sICR2X2hlYWRlcl9saX
N0WyR2X25iX2V4dHJhY3RlZF1bJ3N0b3JlZF9maWxlbmFtZSddKSkgewogICAgICAgICAgICAgICR2X2Zvd
W5kID0gdHJ1ZTsKICAgICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3IgZXh0cmFj
dCBieSBpbmRleCBydWxlCiAgICAgIGVsc2UgaWYgKCAgIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFR
fQllfSU5ERVhdKSkKICAgICAgICAgICAgICAgJiYgKCRwX29wdGlvbnNbUENMWklQX09QVF9CWV9JTkRFWF
0gIT0gMCkpIHsKCiAgICAgICAgICAvLyAtLS0tLSBMb29rIGlmIHRoZSBpbmRleCBpcyBpbiB0aGUgbGlzd
AogICAgICAgICAgZm9yICgkaj0kal9zdGFydDsgKCRqPHNpemVvZigkcF9vcHRpb25zW1BDTFpJUF9PUFRf
QllfSU5ERVhdKSkgJiYgKCEkdl9mb3VuZCk7ICRqKyspIHsKCiAgICAgICAgICAgICAgaWYgKCgkaT49JHB
fb3B0aW9uc1tQQ0xaSVBfT1BUX0JZX0lOREVYXVskal1bJ3N0YXJ0J10pICYmICgkaTw9JHBfb3B0aW9uc1
tQQ0xaSVBfT1BUX0JZX0lOREVYXVskal1bJ2VuZCddKSkgewogICAgICAgICAgICAgICAgICAkdl9mb3VuZ
CA9IHRydWU7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIGlmICgkaT49JHBfb3B0aW9uc1tQQ0xa
SVBfT1BUX0JZX0lOREVYXVskal1bJ2VuZCddKSB7CiAgICAgICAgICAgICAgICAgICRqX3N0YXJ0ID0gJGo
rMTsKICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgIGlmICgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQl
lfSU5ERVhdWyRqXVsnc3RhcnQnXT4kaSkgewogICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgI
CAgICB9CiAgICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSB7CiAgICAgIAkkdl9mb3VuZCA9IHRydWU7
CiAgICAgIH0KCiAgICAgIC8vIC0tLS0tIExvb2sgZm9yIGRlbGV0aW9uCiAgICAgIGlmICgkdl9mb3VuZCk
KICAgICAgewogICAgICAgIHVuc2V0KCR2X2hlYWRlcl9saXN0WyR2X25iX2V4dHJhY3RlZF0pOwogICAgIC
B9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICR2X25iX2V4dHJhY3RlZCsrOwogICAgICB9CiAgICB9C
gogICAgLy8gLS0tLS0gTG9vayBpZiBzb21ldGhpbmcgbmVlZCB0byBiZSBkZWxldGVkCiAgICBpZiAoJHZf
bmJfZXh0cmFjdGVkID4gMCkgewoKICAgICAgICAvLyAtLS0tLSBDcmVhdGVzIGEgdGVtcG9yYXkgZmlsZQo
gICAgICAgICR2X3ppcF90ZW1wX25hbWUgPSBQQ0xaSVBfVEVNUE9SQVJZX0RJUi51bmlxaWQoJ3BjbHppcC
0nKS4nLnRtcCc7CgogICAgICAgIC8vIC0tLS0tIENyZWF0ZXMgYSB0ZW1wb3JhcnkgemlwIGFyY2hpdmUKI
CAgICAgICAkdl90ZW1wX3ppcCA9IG5ldyBQY2xaaXAoJHZfemlwX3RlbXBfbmFtZSk7CgogICAgICAgIC8v
IC0tLS0tIE9wZW4gdGhlIHRlbXBvcmFyeSB6aXAgZmlsZSBpbiB3cml0ZSBtb2RlCiAgICAgICAgaWYgKCg
kdl9yZXN1bHQgPSAkdl90ZW1wX3ppcC0+cHJpdk9wZW5GZCgnd2InKSkgIT0gMSkgewogICAgICAgICAgIC
AkdGhpcy0+cHJpdkNsb3NlRmQoKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgI
CByZXR1cm4gJHZfcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0gTG9vayB3aGljaCBmaWxl
IG5lZWQgdG8gYmUga2VwdAogICAgICAgIGZvciAoJGk9MDsgJGk8c2l6ZW9mKCR2X2hlYWRlcl9saXN0KTs
gJGkrKykgewoKICAgICAgICAgICAgLy8gLS0tLS0gQ2FsY3VsYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgaG
VhZGVyCiAgICAgICAgICAgIEByZXdpbmQoJHRoaXMtPnppcF9mZCk7CiAgICAgICAgICAgIGlmIChAZnNlZ
WsoJHRoaXMtPnppcF9mZCwgICR2X2hlYWRlcl9saXN0WyRpXVsnb2Zmc2V0J10pKSB7CiAgICAgICAgICAg
ICAgICAvLyAtLS0tLSBDbG9zZSB0aGUgemlwIGZpbGUKICAgICAgICAgICAgICAgICR0aGlzLT5wcml2Q2x
vc2VGZCgpOwogICAgICAgICAgICAgICAgJHZfdGVtcF96aXAtPnByaXZDbG9zZUZkKCk7CiAgICAgICAgIC
AgICAgICBAdW5saW5rKCR2X3ppcF90ZW1wX25hbWUpOwoKICAgICAgICAgICAgICAgIC8vIC0tLS0tIEVyc
m9yIGxvZwogICAgICAgICAgICAgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElE
X0FSQ0hJVkVfWklQLCAnSW52YWxpZCBhcmNoaXZlIHNpemUnKTsKCiAgICAgICAgICAgICAgICAvLyAtLS0
tLSBSZXR1cm4KICAgICAgICAgICAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSgpOwogICAgICAgIC
AgICB9CgogICAgICAgICAgICAvLyAtLS0tLSBSZWFkIHRoZSBmaWxlIGhlYWRlcgogICAgICAgICAgICAkd
l9sb2NhbF9oZWFkZXIgPSBhcnJheSgpOwogICAgICAgICAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5w
cml2UmVhZEZpbGVIZWFkZXIoJHZfbG9jYWxfaGVhZGVyKSkgIT0gMSkgewogICAgICAgICAgICAgICAgLy8
gLS0tLS0gQ2xvc2UgdGhlIHppcCBmaWxlCiAgICAgICAgICAgICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKT
sKICAgICAgICAgICAgICAgICR2X3RlbXBfemlwLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAgICAgICAgQ
HVubGluaygkdl96aXBfdGVtcF9uYW1lKTsKCiAgICAgICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAg
ICAgICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIC0
tLS0tIENoZWNrIHRoYXQgbG9jYWwgZmlsZSBoZWFkZXIgaXMgc2FtZSBhcyBjZW50cmFsIGZpbGUgaGVhZG
VyCiAgICAgICAgICAgIGlmICgkdGhpcy0+cHJpdkNoZWNrRmlsZUhlYWRlcnMoJHZfbG9jYWxfaGVhZGVyL
AoJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2X2hlYWRlcl9saXN0WyRpXSkgIT0gMSkg
ewogICAgICAgICAgICAgICAgLy8gVEJDCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdW5zZXQoJHZfbG9
jYWxfaGVhZGVyKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIFdyaXRlIHRoZSBmaWxlIGhlYWRlcgogICAgIC
AgICAgICBpZiAoKCR2X3Jlc3VsdCA9ICR2X3RlbXBfemlwLT5wcml2V3JpdGVGaWxlSGVhZGVyKCR2X2hlY
WRlcl9saXN0WyRpXSkpICE9IDEpIHsKICAgICAgICAgICAgICAgIC8vIC0tLS0tIENsb3NlIHRoZSB6aXAg
ZmlsZQogICAgICAgICAgICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICAgICAgICAgICAkdl9
0ZW1wX3ppcC0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAgICAgICAgIEB1bmxpbmsoJHZfemlwX3RlbXBfbm
FtZSk7CgogICAgICAgICAgICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgICAgICAgICAgICByZXR1cm4gJ
HZfcmVzdWx0OwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyAtLS0tLSBSZWFkL3dyaXRlIHRoZSBk
YXRhIGJsb2NrCiAgICAgICAgICAgIGlmICgoJHZfcmVzdWx0ID0gUGNsWmlwVXRpbENvcHlCbG9jaygkdGh
pcy0+emlwX2ZkLCAkdl90ZW1wX3ppcC0+emlwX2ZkLCAkdl9oZWFkZXJfbGlzdFskaV1bJ2NvbXByZXNzZW
Rfc2l6ZSddKSkgIT0gMSkgewogICAgICAgICAgICAgICAgLy8gLS0tLS0gQ2xvc2UgdGhlIHppcCBmaWxlC
iAgICAgICAgICAgICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAgICAgICAgICR2X3RlbXBf
emlwLT5wcml2Q2xvc2VGZCgpOwogICAgICAgICAgICAgICAgQHVubGluaygkdl96aXBfdGVtcF9uYW1lKTs
KCiAgICAgICAgICAgICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgICAgICAgICAgIHJldHVybiAkdl9yZX
N1bHQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIC0tLS0tIFN0b3JlIHRoZSBvZmZzZ
XQgb2YgdGhlIGNlbnRyYWwgZGlyCiAgICAgICAgJHZfb2Zmc2V0ID0gQGZ0ZWxsKCR2X3RlbXBfemlwLT56
aXBfZmQpOwoKICAgICAgICAvLyAtLS0tLSBSZS1DcmVhdGUgdGhlIENlbnRyYWwgRGlyIGZpbGVzIGhlYWR
lcgogICAgICAgIGZvciAoJGk9MDsgJGk8c2l6ZW9mKCR2X2hlYWRlcl9saXN0KTsgJGkrKykgewogICAgIC
AgICAgICAvLyAtLS0tLSBDcmVhdGUgdGhlIGZpbGUgaGVhZGVyCiAgICAgICAgICAgIGlmICgoJHZfcmVzd
Wx0ID0gJHZfdGVtcF96aXAtPnByaXZXcml0ZUNlbnRyYWxGaWxlSGVhZGVyKCR2X2hlYWRlcl9saXN0WyRp
XSkpICE9IDEpIHsKICAgICAgICAgICAgICAgICR2X3RlbXBfemlwLT5wcml2Q2xvc2VGZCgpOwogICAgICA
gICAgICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICAgICAgICAgICBAdW5saW5rKCR2X3ppcF
90ZW1wX25hbWUpOwoKICAgICAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICAgICAgc
mV0dXJuICR2X3Jlc3VsdDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gLS0tLS0gVHJhbnNmb3Jt
IHRoZSBoZWFkZXIgdG8gYSAndXNhYmxlJyBpbmZvCiAgICAgICAgICAgICR2X3RlbXBfemlwLT5wcml2Q29
udmVydEhlYWRlcjJGaWxlSW5mbygkdl9oZWFkZXJfbGlzdFskaV0sICRwX3Jlc3VsdF9saXN0WyRpXSk7Ci
AgICAgICAgfQoKCiAgICAgICAgLy8gLS0tLS0gWmlwIGZpbGUgY29tbWVudAogICAgICAgICR2X2NvbW1lb
nQgPSAnJzsKICAgICAgICBpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0NPTU1FTlRdKSkgewog
ICAgICAgICAgJHZfY29tbWVudCA9ICRwX29wdGlvbnNbUENMWklQX09QVF9DT01NRU5UXTsKICAgICAgICB
9CgogICAgICAgIC8vIC0tLS0tIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUgY2VudHJhbCBoZWFkZXIKIC
AgICAgICAkdl9zaXplID0gQGZ0ZWxsKCR2X3RlbXBfemlwLT56aXBfZmQpLSR2X29mZnNldDsKCiAgICAgI
CAgLy8gLS0tLS0gQ3JlYXRlIHRoZSBjZW50cmFsIGRpciBmb290ZXIKICAgICAgICBpZiAoKCR2X3Jlc3Vs
dCA9ICR2X3RlbXBfemlwLT5wcml2V3JpdGVDZW50cmFsSGVhZGVyKHNpemVvZigkdl9oZWFkZXJfbGlzdCk
sICR2X3NpemUsICR2X29mZnNldCwgJHZfY29tbWVudCkpICE9IDEpIHsKICAgICAgICAgICAgLy8gLS0tLS
0gUmVzZXQgdGhlIGZpbGUgbGlzdAogICAgICAgI
CAgICB1bnNldCgkdl9oZWFkZXJfbGlzdCk7CiAgICAgICAgICAgICR2X3RlbXBfemlwLT5wcml2Q2xvc2VG
ZCgpOwogICAgICAgICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAgICAgQHVubGluaygkdl9
6aXBfdGVtcF9uYW1lKTsKCiAgICAgICAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICAgICAgICByZXR1cm
4gJHZfcmVzdWx0OwogICAgICAgIH0KCiAgICAgICAgLy8gLS0tLS0gQ2xvc2UKICAgICAgICAkdl90ZW1wX
3ppcC0+cHJpdkNsb3NlRmQoKTsKICAgICAgICAkdGhpcy0+cHJpdkNsb3NlRmQoKTsKCiAgICAgICAgLy8g
LS0tLS0gRGVsZXRlIHRoZSB6aXAgZmlsZQogICAgICAgIC8vIFRCQyA6IEkgc2hvdWxkIHRlc3QgdGhlIHJ
lc3VsdCAuLi4KICAgICAgICBAdW5saW5rKCR0aGlzLT56aXBuYW1lKTsKCiAgICAgICAgLy8gLS0tLS0gUm
VuYW1lIHRoZSB0ZW1wb3JhcnkgZmlsZQogICAgICAgIC8vIFRCQyA6IEkgc2hvdWxkIHRlc3QgdGhlIHJlc
3VsdCAuLi4KICAgICAgICAvL0ByZW5hbWUoJHZfemlwX3RlbXBfbmFtZSwgJHRoaXMtPnppcG5hbWUpOwog
ICAgICAgIFBjbFppcFV0aWxSZW5hbWUoJHZfemlwX3RlbXBfbmFtZSwgJHRoaXMtPnppcG5hbWUpOwoKICA
gICAgICAvLyAtLS0tLSBEZXN0cm95IHRoZSB0ZW1wb3JhcnkgYXJjaGl2ZQogICAgICAgIHVuc2V0KCR2X3
RlbXBfemlwKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZW1vdmUgZXZlcnkgZmlsZXMgOiByZXNldCB0aGUgZ
mlsZQogICAgZWxzZSBpZiAoJHZfY2VudHJhbF9kaXJbJ2VudHJpZXMnXSAhPSAwKSB7CiAgICAgICAgJHRo
aXMtPnByaXZDbG9zZUZkKCk7CgogICAgICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZPcGVuRmQ
oJ3diJykpICE9IDEpIHsKICAgICAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICAgICAgfQoKICAgICAgIC
BpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2V3JpdGVDZW50cmFsSGVhZGVyKDAsIDAsIDAsICcnKSkgI
T0gMSkgewogICAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgICAgICB9CgogICAgICAgICR0aGlzLT5w
cml2Q2xvc2VGZCgpOwogICAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDs
KICB9CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5j
dGlvbiA6IHByaXZEaXJDaGVjaygpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgQ2hlY2sgaWYgYSBkaXJ
lY3RvcnkgZXhpc3RzLCBpZiBub3QgaXQgY3JlYXRlcyBpdCBhbmQgYWxsIHRoZSBwYXJlbnRzIGRpcmVjdG
9yeQogIC8vICAgd2hpY2ggbWF5IGJlIHVzZWZ1bC4KICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAgICRwX2Rpc
iA6IERpcmVjdG9yeSBwYXRoIHRvIGNoZWNrLgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8vICAgIDEgOiBP
SwogIC8vICAgLTEgOiBVbmFibGUgdG8gY3JlYXRlIGRpcmVjdG9yeQogIC8vIC0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tCiAgZnVuY3Rpb24gcHJpdkRpckNoZWNrKCRwX2RpciwgJHBfaXNfZGlyPWZhbHNlKQogIHsKICAgICR2X
3Jlc3VsdCA9IDE7CgoKICAgIC8vIC0tLS0tIFJlbW92ZSB0aGUgZmluYWwgJy8nCiAgICBpZiAoKCRwX2lz
X2RpcikgJiYgKHN1YnN0cigkcF9kaXIsIC0xKT09Jy8nKSkKICAgIHsKICAgICAgJHBfZGlyID0gc3Vic3R
yKCRwX2RpciwgMCwgc3RybGVuKCRwX2RpciktMSk7CiAgICB9CgogICAgLy8gLS0tLS0gQ2hlY2sgdGhlIG
RpcmVjdG9yeSBhdmFpbGFiaWxpdHkKICAgIGlmICgoaXNfZGlyKCRwX2RpcikpIHx8ICgkcF9kaXIgPT0gI
iIpKQogICAgewogICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvLyAtLS0tLSBFeHRyYWN0IHBhcmVudCBk
aXJlY3RvcnkKICAgICRwX3BhcmVudF9kaXIgPSBkaXJuYW1lKCRwX2Rpcik7CgogICAgLy8gLS0tLS0gSnV
zdCBhIGNoZWNrCiAgICBpZiAoJHBfcGFyZW50X2RpciAhPSAkcF9kaXIpCiAgICB7CiAgICAgIC8vIC0tLS
0tIExvb2sgZm9yIHBhcmVudCBkaXJlY3RvcnkKICAgICAgaWYgKCRwX3BhcmVudF9kaXIgIT0gIiIpCiAgI
CAgIHsKICAgICAgICBpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2RGlyQ2hlY2soJHBfcGFyZW50X2Rp
cikpICE9IDEpCiAgICAgICAgewogICAgICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgICAgICB9CiAgICA
gIH0KICAgIH0KCiAgICAvLyAtLS0tLSBDcmVhdGUgdGhlIGRpcmVjdG9yeQogICAgaWYgKCFAbWtkaXIoJH
BfZGlyLCAwNzc3KSkKICAgIHsKICAgICAgLy8gLS0tLS0gRXJyb3IgbG9nCiAgICAgIFBjbFppcDo6cHJpd
kVycm9yTG9nKFBDTFpJUF9FUlJfRElSX0NSRUFURV9GQUlMLCAiVW5hYmxlIHRvIGNyZWF0ZSBkaXJlY3Rv
cnkgJyRwX2RpciciKTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICByZXR1cm4gUGNsWmlwOjplcnJ
vckNvZGUoKTsKICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQ
ogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24
gOiBwcml2TWVyZ2UoKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIElmICRwX2FyY2hpdmVfdG9fYWRkIG
RvZXMgbm90IGV4aXN0LCB0aGUgZnVuY3Rpb24gZXhpdCB3aXRoIGEgc3VjY2VzcyByZXN1bHQuCiAgLy8gU
GFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5
jdGlvbiBwcml2TWVyZ2UoJiRwX2FyY2hpdmVfdG9fYWRkKQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC
8vIC0tLS0tIExvb2sgaWYgdGhlIGFyY2hpdmVfdG9fYWRkIGV4aXN0cwogICAgaWYgKCFpc19maWxlKCRwX
2FyY2hpdmVfdG9fYWRkLT56aXBuYW1lKSkKICAgIHsKCiAgICAgIC8vIC0tLS0tIE5vdGhpbmcgdG8gbWVy
Z2UsIHNvIG1lcmdlIGlzIGEgc3VjY2VzcwogICAgICAkdl9yZXN1bHQgPSAxOwoKICAgICAgLy8gLS0tLS0
gUmV0dXJuCiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gTG9vayBpZiB0aG
UgYXJjaGl2ZSBleGlzdHMKICAgIGlmICghaXNfZmlsZSgkdGhpcy0+emlwbmFtZSkpCiAgICB7CgogICAgI
CAvLyAtLS0tLSBEbyBhIGR1cGxpY2F0ZQogICAgICAkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdkR1cGxpY2F0
ZSgkcF9hcmNoaXZlX3RvX2FkZC0+emlwbmFtZSk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV
0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAvLyAtLS0tLSBPcGVuIHRoZSB6aXAgZmlsZQogICAgaWYgKC
gkdl9yZXN1bHQ9JHRoaXMtPnByaXZPcGVuRmQoJ3JiJykpICE9IDEpCiAgICB7CiAgICAgIC8vIC0tLS0tI
FJldHVybgogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICAgfQoKICAgIC8vIC0tLS0tIFJlYWQgdGhlIGNl
bnRyYWwgZGlyZWN0b3J5IGluZm9ybWF0aW9ucwogICAgJHZfY2VudHJhbF9kaXIgPSBhcnJheSgpOwogICA
gaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+cHJpdlJlYWRFbmRDZW50cmFsRGlyKCR2X2NlbnRyYWxfZGlyKS
kgIT0gMSkKICAgIHsKICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgIHJldHVybiAkdl9yZXN1b
HQ7CiAgICB9CgogICAgLy8gLS0tLS0gR28gdG8gYmVnaW5uaW5nIG9mIEZpbGUKICAgIEByZXdpbmQoJHRo
aXMtPnppcF9mZCk7CgogICAgLy8gLS0tLS0gT3BlbiB0aGUgYXJjaGl2ZV90b19hZGQgZmlsZQogICAgaWY
gKCgkdl9yZXN1bHQ9JHBfYXJjaGl2ZV90b19hZGQtPnByaXZPcGVuRmQoJ3JiJykpICE9IDEpCiAgICB7Ci
AgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVyb
iAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gUmVhZCB0aGUgY2VudHJhbCBkaXJlY3RvcnkgaW5m
b3JtYXRpb25zCiAgICAkdl9jZW50cmFsX2Rpcl90b19hZGQgPSBhcnJheSgpOwogICAgaWYgKCgkdl9yZXN
1bHQgPSAkcF9hcmNoaXZlX3RvX2FkZC0+cHJpdlJlYWRFbmRDZW50cmFsRGlyKCR2X2NlbnRyYWxfZGlyX3
RvX2FkZCkpICE9IDEpCiAgICB7CiAgICAgICR0aGlzLT5wcml2Q2xvc2VGZCgpOwogICAgICAkcF9hcmNoa
XZlX3RvX2FkZC0+cHJpdkNsb3NlRmQoKTsKCiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAg
Ly8gLS0tLS0gR28gdG8gYmVnaW5uaW5nIG9mIEZpbGUKICAgIEByZXdpbmQoJHBfYXJjaGl2ZV90b19hZGQ
tPnppcF9mZCk7CgogICAgLy8gLS0tLS0gQ3JlYXRlcyBhIHRlbXBvcmF5IGZpbGUKICAgICR2X3ppcF90ZW
1wX25hbWUgPSBQQ0xaSVBfVEVNUE9SQVJZX0RJUi51bmlxaWQoJ3BjbHppcC0nKS4nLnRtcCc7CgogICAgL
y8gLS0tLS0gT3BlbiB0aGUgdGVtcG9yYXJ5IGZpbGUgaW4gd3JpdGUgbW9kZQogICAgaWYgKCgkdl96aXBf
dGVtcF9mZCA9IEBmb3Blbigkdl96aXBfdGVtcF9uYW1lLCAnd2InKSkgPT0gMCkKICAgIHsKICAgICAgJHR
oaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICRwX2FyY2hpdmVfdG9fYWRkLT5wcml2Q2xvc2VGZCgpOwoKIC
AgICAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9SRUFEX09QRU5fRkFJTCwgJ1VuYWJsZSB0b
yBvcGVuIHRlbXBvcmFyeSBmaWxlIFwnJy4kdl96aXBfdGVtcF9uYW1lLidcJyBpbiBiaW5hcnkgd3JpdGUg
bW9kZScpOwoKICAgICAgLy8gLS0tLS0gUmV0dXJuCiAgICAgIHJldHVybiBQY2xaaXA6OmVycm9yQ29kZSg
pOwogICAgfQoKICAgIC8vIC0tLS0tIENvcHkgdGhlIGZpbGVzIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIH
RlbXBvcmFyeSBmaWxlCiAgICAvLyBUQkMgOiBIZXJlIEkgc2hvdWxkIGJldHRlciBhcHBlbmQgdGhlIGZpb
GUgYW5kIGdvIGJhY2sgdG8gZXJhc2UgdGhlIGNlbnRyYWwgZGlyCiAgICAkdl9zaXplID0gJHZfY2VudHJh
bF9kaXJbJ29mZnNldCddOwogICAgd2hpbGUgKCR2X3NpemUgIT0gMCkKICAgIHsKICAgICAgJHZfcmVhZF9
zaXplID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFID8gJHZfc2l6ZSA6IFBDTFpJUF9SRU
FEX0JMT0NLX1NJWkUpOwogICAgICAkdl9idWZmZXIgPSBmcmVhZCgkdGhpcy0+emlwX2ZkLCAkdl9yZWFkX
3NpemUpOwogICAgICBAZndyaXRlKCR2X3ppcF90ZW1wX2ZkLCAkdl9idWZmZXIsICR2X3JlYWRfc2l6ZSk7
CiAgICAgICR2X3NpemUgLT0gJHZfcmVhZF9zaXplOwogICAgfQoKICAgIC8vIC0tLS0tIENvcHkgdGhlIGZ
pbGVzIGZyb20gdGhlIGFyY2hpdmVfdG9fYWRkIGludG8gdGhlIHRlbXBvcmFyeSBmaWxlCiAgICAkdl9zaX
plID0gJHZfY2VudHJhbF9kaXJfdG9fYWRkWydvZmZzZXQnXTsKICAgIHdoaWxlICgkdl9zaXplICE9IDApC
iAgICB7CiAgICAgICR2X3JlYWRfc2l6ZSA9ICgkdl9zaXplIDwgUENMWklQX1JFQURfQkxPQ0tfU0laRSA/
ICR2X3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgJHZfYnVmZmVyID0gZnJlYWQoJHB
fYXJjaGl2ZV90b19hZGQtPnppcF9mZCwgJHZfcmVhZF9zaXplKTsKICAgICAgQGZ3cml0ZSgkdl96aXBfdG
VtcF9mZCwgJHZfYnVmZmVyLCAkdl9yZWFkX3NpemUpOwogICAgICAkdl9zaXplIC09ICR2X3JlYWRfc2l6Z
TsKICAgIH0KCiAgICAvLyAtLS0tLSBTdG9yZSB0aGUgb2Zmc2V0IG9mIHRoZSBjZW50cmFsIGRpcgogICAg
JHZfb2Zmc2V0ID0gQGZ0ZWxsKCR2X3ppcF90ZW1wX2ZkKTsKCiAgICAvLyAtLS0tLSBDb3B5IHRoZSBibG9
jayBvZiBmaWxlIGhlYWRlcnMgZnJvbSB0aGUgb2xkIGFyY2hpdmUKICAgICR2X3NpemUgPSAkdl9jZW50cm
FsX2Rpclsnc2l6ZSddOwogICAgd2hpbGUgKCR2X3NpemUgIT0gMCkKICAgIHsKICAgICAgJHZfcmVhZF9za
XplID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFID8gJHZfc2l6ZSA6IFBDTFpJUF9SRUFE
X0JMT0NLX1NJWkUpOwogICAgICAkdl9idWZmZXIgPSBAZnJlYWQoJHRoaXMtPnppcF9mZCwgJHZfcmVhZF9
zaXplKTsKICAgICAgQGZ3cml0ZSgkdl96aXBfdGVtcF9mZCwgJHZfYnVmZmVyLCAkdl9yZWFkX3NpemUpOw
ogICAgICAkdl9zaXplIC09ICR2X3JlYWRfc2l6ZTsKICAgIH0KCiAgICAvLyAtLS0tLSBDb3B5IHRoZSBib
G9jayBvZiBmaWxlIGhlYWRlcnMgZnJvbSB0aGUgYXJjaGl2ZV90b19hZGQKICAgICR2X3NpemUgPSAkdl9j
ZW50cmFsX2Rpcl90b19hZGRbJ3NpemUnXTsKICAgIHdoaWxlICgkdl9zaXplICE9IDApCiAgICB7CiAgICA
gICR2X3JlYWRfc2l6ZSA9ICgkdl9zaXplIDwgUENMWklQX1JFQURfQkxPQ0tfU0laRSA/ICR2X3NpemUgOi
BQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgJHZfYnVmZmVyID0gQGZyZWFkKCRwX2FyY2hpdmVfd
G9fYWRkLT56aXBfZmQsICR2X3JlYWRfc2l6ZSk7CiAgICAgIEBmd3JpdGUoJHZfemlwX3RlbXBfZmQsICR2
X2J1ZmZlciwgJHZfcmVhZF9zaXplKTsKICAgICAgJHZfc2l6ZSAtPSAkdl9yZWFkX3NpemU7CiAgICB9Cgo
gICAgLy8gLS0tLS0gTWVyZ2UgdGhlIGZpbGUgY29tbWVudHMKICAgICR2X2NvbW1lbnQgPSAkdl9jZW50cm
FsX2RpclsnY29tbWVudCddLicgJy4kdl9jZW50cmFsX2Rpcl90b19hZGRbJ2NvbW1lbnQnXTsKCiAgICAvL
yAtLS0tLSBDYWxjdWxhdGUgdGhlIHNpemUgb2YgdGhlIChuZXcpIGNlbnRyYWwgaGVhZGVyCiAgICAkdl9z
aXplID0gQGZ0ZWxsKCR2X3ppcF90ZW1wX2ZkKS0kdl9vZmZzZXQ7CgogICAgLy8gLS0tLS0gU3dhcCB0aGU
gZmlsZSBkZXNjcmlwdG9yCiAgICAvLyBIZXJlIGlzIGEgdHJpY2sgOiBJIHN3YXAgdGhlIHRlbXBvcmFyeS
BmZCB3aXRoIHRoZSB6aXAgZmQsIGluIG9yZGVyIHRvIHVzZQogICAgLy8gdGhlIGZvbGxvd2luZyBtZXRob
2RzIG9uIHRoZSB0ZW1wb3JhcnkgZmlsIGFuZCBub3QgdGhlIHJlYWwgYXJjaGl2ZSBmZAogICAgJHZfc3dh
cCA9ICR0aGlzLT56aXBfZmQ7CiAgICAkdGhpcy0+emlwX2ZkID0gJHZfemlwX3RlbXBfZmQ7CiAgICAkdl9
6aXBfdGVtcF9mZCA9ICR2X3N3YXA7CgogICAgLy8gLS0tLS0gQ3JlYXRlIHRoZSBjZW50cmFsIGRpciBmb2
90ZXIKICAgIGlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZXcml0ZUNlbnRyYWxIZWFkZXIoJHZfY2Vud
HJhbF9kaXJbJ2VudHJpZXMnXSskdl9jZW50cmFs
X2Rpcl90b19hZGRbJ2VudHJpZXMnXSwgJHZfc2l6ZSwgJHZfb2Zmc2V0LCAkdl9jb21tZW50KSkgIT0gMSk
KICAgIHsKICAgICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CiAgICAgICRwX2FyY2hpdmVfdG9fYWRkLT5wcm
l2Q2xvc2VGZCgpOwogICAgICBAZmNsb3NlKCR2X3ppcF90ZW1wX2ZkKTsKICAgICAgJHRoaXMtPnppcF9mZ
CA9IG51bGw7CgogICAgICAvLyAtLS0tLSBSZXNldCB0aGUgZmlsZSBsaXN0CiAgICAgIHVuc2V0KCR2X2hl
YWRlcl9saXN0KTsKCiAgICAgIC8vIC0tLS0tIFJldHVybgogICAgICByZXR1cm4gJHZfcmVzdWx0OwogICA
gfQoKICAgIC8vIC0tLS0tIFN3YXAgYmFjayB0aGUgZmlsZSBkZXNjcmlwdG9yCiAgICAkdl9zd2FwID0gJH
RoaXMtPnppcF9mZDsKICAgICR0aGlzLT56aXBfZmQgPSAkdl96aXBfdGVtcF9mZDsKICAgICR2X3ppcF90Z
W1wX2ZkID0gJHZfc3dhcDsKCiAgICAvLyAtLS0tLSBDbG9zZQogICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7
CiAgICAkcF9hcmNoaXZlX3RvX2FkZC0+cHJpdkNsb3NlRmQoKTsKCiAgICAvLyAtLS0tLSBDbG9zZSB0aGU
gdGVtcG9yYXJ5IGZpbGUKICAgIEBmY2xvc2UoJHZfemlwX3RlbXBfZmQpOwoKICAgIC8vIC0tLS0tIERlbG
V0ZSB0aGUgemlwIGZpbGUKICAgIC8vIFRCQyA6IEkgc2hvdWxkIHRlc3QgdGhlIHJlc3VsdCAuLi4KICAgI
EB1bmxpbmsoJHRoaXMtPnppcG5hbWUpOwoKICAgIC8vIC0tLS0tIFJlbmFtZSB0aGUgdGVtcG9yYXJ5IGZp
bGUKICAgIC8vIFRCQyA6IEkgc2hvdWxkIHRlc3QgdGhlIHJlc3VsdCAuLi4KICAgIC8vQHJlbmFtZSgkdl9
6aXBfdGVtcF9uYW1lLCAkdGhpcy0+emlwbmFtZSk7CiAgICBQY2xaaXBVdGlsUmVuYW1lKCR2X3ppcF90ZW
1wX25hbWUsICR0aGlzLT56aXBuYW1lKTsKCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZ
XN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy
8gRnVuY3Rpb24gOiBwcml2RHVwbGljYXRlKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVyc
yA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBwcml
2RHVwbGljYXRlKCRwX2FyY2hpdmVfZmlsZW5hbWUpCiAgewogICAgJHZfcmVzdWx0PTE7CgogICAgLy8gLS
0tLS0gTG9vayBpZiB0aGUgJHBfYXJjaGl2ZV9maWxlbmFtZSBleGlzdHMKICAgIGlmICghaXNfZmlsZSgkc
F9hcmNoaXZlX2ZpbGVuYW1lKSkKICAgIHsKCiAgICAgIC8vIC0tLS0tIE5vdGhpbmcgdG8gZHVwbGljYXRl
LCBzbyBkdXBsaWNhdGUgaXMgYSBzdWNjZXNzLgogICAgICAkdl9yZXN1bHQgPSAxOwoKICAgICAgLy8gLS0
tLS0gUmV0dXJuCiAgICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgICB9CgogICAgLy8gLS0tLS0gT3BlbiB0aG
UgemlwIGZpbGUKICAgIGlmICgoJHZfcmVzdWx0PSR0aGlzLT5wcml2T3BlbkZkKCd3YicpKSAhPSAxKQogI
CAgewogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKICAgIH0KCiAgICAv
LyAtLS0tLSBPcGVuIHRoZSB0ZW1wb3JhcnkgZmlsZSBpbiB3cml0ZSBtb2RlCiAgICBpZiAoKCR2X3ppcF9
0ZW1wX2ZkID0gQGZvcGVuKCRwX2FyY2hpdmVfZmlsZW5hbWUsICdyYicpKSA9PSAwKQogICAgewogICAgIC
AkdGhpcy0+cHJpdkNsb3NlRmQoKTsKCiAgICAgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfU
kVBRF9PUEVOX0ZBSUwsICdVbmFibGUgdG8gb3BlbiBhcmNoaXZlIGZpbGUgXCcnLiRwX2FyY2hpdmVfZmls
ZW5hbWUuJ1wnIGluIGJpbmFyeSB3cml0ZSBtb2RlJyk7CgogICAgICAvLyAtLS0tLSBSZXR1cm4KICAgICA
gcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7CiAgICB9CgogICAgLy8gLS0tLS0gQ29weSB0aGUgZmlsZX
MgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgdGVtcG9yYXJ5IGZpbGUKICAgIC8vIFRCQyA6IEhlcmUgSSBza
G91bGQgYmV0dGVyIGFwcGVuZCB0aGUgZmlsZSBhbmQgZ28gYmFjayB0byBlcmFzZSB0aGUgY2VudHJhbCBk
aXIKICAgICR2X3NpemUgPSBmaWxlc2l6ZSgkcF9hcmNoaXZlX2ZpbGVuYW1lKTsKICAgIHdoaWxlICgkdl9
zaXplICE9IDApCiAgICB7CiAgICAgICR2X3JlYWRfc2l6ZSA9ICgkdl9zaXplIDwgUENMWklQX1JFQURfQk
xPQ0tfU0laRSA/ICR2X3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgJHZfYnVmZmVyI
D0gZnJlYWQoJHZfemlwX3RlbXBfZmQsICR2X3JlYWRfc2l6ZSk7CiAgICAgIEBmd3JpdGUoJHRoaXMtPnpp
cF9mZCwgJHZfYnVmZmVyLCAkdl9yZWFkX3NpemUpOwogICAgICAkdl9zaXplIC09ICR2X3JlYWRfc2l6ZTs
KICAgIH0KCiAgICAvLyAtLS0tLSBDbG9zZQogICAgJHRoaXMtPnByaXZDbG9zZUZkKCk7CgogICAgLy8gLS
0tLS0gQ2xvc2UgdGhlIHRlbXBvcmFyeSBmaWxlCiAgICBAZmNsb3NlKCR2X3ppcF90ZW1wX2ZkKTsKCiAgI
CAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2RXJyb3JMb2coKQogI
C8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ
1bmN0aW9uIHByaXZFcnJvckxvZygkcF9lcnJvcl9jb2RlPTAsICRwX2Vycm9yX3N0cmluZz0nJykKICB7Ci
AgICBpZiAoUENMWklQX0VSUk9SX0VYVEVSTkFMID09IDEpIHsKICAgICAgUGNsRXJyb3IoJHBfZXJyb3JfY
29kZSwgJHBfZXJyb3Jfc3RyaW5nKTsKICAgIH0KICAgIGVsc2UgewogICAgICAkdGhpcy0+ZXJyb3JfY29k
ZSA9ICRwX2Vycm9yX2NvZGU7CiAgICAgICR0aGlzLT5lcnJvcl9zdHJpbmcgPSAkcF9lcnJvcl9zdHJpbmc
7CiAgICB9CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
Ly8gRnVuY3Rpb24gOiBwcml2RXJyb3JSZXNldCgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXR
lcnMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdkVycm9yUmVzZXQoKQogIHsKI
CAgIGlmIChQQ0xaSVBfRVJST1JfRVhURVJOQUwgPT0gMSkgewogICAgICBQY2xFcnJvclJlc2V0KCk7CiAg
ICB9CiAgICBlbHNlIHsKICAgICAgJHRoaXMtPmVycm9yX2NvZGUgPSAwOwogICAgICAkdGhpcy0+ZXJyb3J
fc3RyaW5nID0gJyc7CiAgICB9CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2RGlzYWJsZU1hZ2ljUXVvdGVzKCkKICAvLyBEZXNjcml
wdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0KICBmdW5jdGlvbiBwcml2RGlzYWJsZU1hZ2ljUXVvdGVzKCkKICB7CiAgICAkdl9yZXN1bHQ9
MTsKCiAgICAvLyAtLS0tLSBMb29rIGlmIGZ1bmN0aW9uIGV4aXN0cwogICAgaWYgKCAgICghZnVuY3Rpb25
fZXhpc3RzKCJnZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUiKSkKCSAgICB8fCAoIWZ1bmN0aW9uX2V4aXN0cy
gic2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lIikpKSB7CiAgICAgIHJldHVybiAkdl9yZXN1bHQ7Cgl9CgogI
CAgLy8gLS0tLS0gTG9vayBpZiBhbHJlYWR5IGRvbmUKICAgIGlmICgkdGhpcy0+bWFnaWNfcXVvdGVzX3N0
YXR1cyAhPSAtMSkgewogICAgICByZXR1cm4gJHZfcmVzdWx0OwoJfQoKCS8vIC0tLS0tIEdldCBhbmQgbWV
tb3JpemUgdGhlIG1hZ2ljX3F1b3RlIHZhbHVlCgkkdGhpcy0+bWFnaWNfcXVvdGVzX3N0YXR1cyA9IEBnZX
RfbWFnaWNfcXVvdGVzX3J1bnRpbWUoKTsKCgkvLyAtLS0tLSBEaXNhYmxlIG1hZ2ljX3F1b3RlcwoJaWYgK
CR0aGlzLT5tYWdpY19xdW90ZXNfc3RhdHVzID09IDEpIHsKCSAgQHNldF9tYWdpY19xdW90ZXNfcnVudGlt
ZSgwKTsKCX0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBwcml2
U3dhcEJhY2tNYWdpY1F1b3RlcygpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vIFBhcmFtZXRlcnMgOgogIC8
vIFJldHVybiBWYWx1ZXMgOgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb24gcHJpdlN3YXBCY
WNrTWFnaWNRdW90ZXMoKQogIHsKICAgICR2X3Jlc3VsdD0xOwoKICAgIC8vIC0tLS0tIExvb2sgaWYgZnVu
Y3Rpb24gZXhpc3RzCiAgICBpZiAoICAgKCFmdW5jdGlvbl9leGlzdHMoImdldF9tYWdpY19xdW90ZXNfcnV
udGltZSIpKQoJICAgIHx8ICghZnVuY3Rpb25fZXhpc3RzKCJzZXRfbWFnaWNfcXVvdGVzX3J1bnRpbWUiKS
kpIHsKICAgICAgcmV0dXJuICR2X3Jlc3VsdDsKCX0KCiAgICAvLyAtLS0tLSBMb29rIGlmIHNvbWV0aGluZ
yB0byBkbwogICAgaWYgKCR0aGlzLT5tYWdpY19xdW90ZXNfc3RhdHVzICE9IC0xKSB7CiAgICAgIHJldHVy
biAkdl9yZXN1bHQ7Cgl9CgoJLy8gLS0tLS0gU3dhcCBiYWNrIG1hZ2ljX3F1b3RlcwoJaWYgKCR0aGlzLT5
tYWdpY19xdW90ZXNfc3RhdHVzID09IDEpIHsKICAJICBAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKCR0aG
lzLT5tYWdpY19xdW90ZXNfc3RhdHVzKTsKCX0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkd
l9yZXN1bHQ7CiAgfQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIH0KICAvLyBFbmQgb2YgY2xhc3MKICA
vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDog
UGNsWmlwVXRpbFBhdGhSZWR1Y3Rpb24oKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyBQYXJhbWV0ZXJzIDo
KICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIFBjbFppc
FV0aWxQYXRoUmVkdWN0aW9uKCRwX2RpcikKICB7CiAgICAkdl9yZXN1bHQgPSAiIjsKCiAgICAvLyAtLS0t
LSBMb29rIGZvciBub3QgZW1wdHkgcGF0aAogICAgaWYgKCRwX2RpciAhPSAiIikgewogICAgICAvLyAtLS0
tLSBFeHBsb2RlIHBhdGggYnkgZGlyZWN0b3J5IG5hbWVzCiAgICAgICR2X2xpc3QgPSBleHBsb2RlKCIvIi
wgJHBfZGlyKTsKCiAgICAgIC8vIC0tLS0tIFN0dWR5IGRpcmVjdG9yaWVzIGZyb20gbGFzdCB0byBmaXJzd
AogICAgICAkdl9za2lwID0gMDsKICAgICAgZm9yICgkaT1zaXplb2YoJHZfbGlzdCktMTsgJGk+PTA7ICRp
LS0pIHsKICAgICAgICAvLyAtLS0tLSBMb29rIGZvciBjdXJyZW50IHBhdGgKICAgICAgICBpZiAoJHZfbGl
zdFskaV0gPT0gIi4iKSB7CiAgICAgICAgICAvLyAtLS0tLSBJZ25vcmUgdGhpcyBkaXJlY3RvcnkKICAgIC
AgICAgIC8vIFNob3VsZCBiZSB0aGUgZmlyc3QgJGk9MCwgYnV0IG5vIGNoZWNrIGlzIGRvbmUKICAgICAgI
CB9CiAgICAgICAgZWxzZSBpZiAoJHZfbGlzdFskaV0gPT0gIi4uIikgewoJCSAgJHZfc2tpcCsrOwogICAg
ICAgIH0KICAgICAgICBlbHNlIGlmICgkdl9saXN0WyRpXSA9PSAiIikgewoJCSAgLy8gLS0tLS0gRmlyc3Q
gJy8nIGkuZS4gcm9vdCBzbGFzaAoJCSAgaWYgKCRpID09IDApIHsKICAgICAgICAgICAgJHZfcmVzdWx0ID
0gIi8iLiR2X3Jlc3VsdDsKCQkgICAgaWYgKCR2X3NraXAgPiAwKSB7CgkJICAgICAgICAvLyAtLS0tLSBJd
CBpcyBhbiBpbnZhbGlkIHBhdGgsIHNvIHRoZSBwYXRoIGlzIG5vdCBtb2RpZmllZAoJCSAgICAgICAgLy8g
VEJDCgkJICAgICAgICAkdl9yZXN1bHQgPSAkcF9kaXI7CiAgICAgICAgICAgICAgICAkdl9za2lwID0gMDs
KCQkgICAgfQoJCSAgfQoJCSAgLy8gLS0tLS0gTGFzdCAnLycgaS5lLiBpbmRpY2F0ZXMgYSBkaXJlY3Rvcn
kKCQkgIGVsc2UgaWYgKCRpID09IChzaXplb2YoJHZfbGlzdCktMSkpIHsKICAgICAgICAgICAgJHZfcmVzd
Wx0ID0gJHZfbGlzdFskaV07CgkJICB9CgkJICAvLyAtLS0tLSBEb3VibGUgJy8nIGluc2lkZSB0aGUgcGF0
aAoJCSAgZWxzZSB7CiAgICAgICAgICAgIC8vIC0tLS0tIElnbm9yZSBvbmx5IHRoZSBkb3VibGUgJy8vJyB
pbiBwYXRoLAogICAgICAgICAgICAvLyBidXQgbm90IHRoZSBmaXJzdCBhbmQgbGFzdCAnLycKCQkgIH0KIC
AgICAgICB9CiAgICAgICAgZWxzZSB7CgkJICAvLyAtLS0tLSBMb29rIGZvciBpdGVtIHRvIHNraXAKCQkgI
GlmICgkdl9za2lwID4gMCkgewoJCSAgICAkdl9za2lwLS07CgkJICB9CgkJICBlbHNlIHsKICAgICAgICAg
ICAgJHZfcmVzdWx0ID0gJHZfbGlzdFskaV0uKCR
pIT0oc2l6ZW9mKCR2X2xpc3QpLTEpPyIvIi4kdl9yZXN1bHQ6IiIpOwoJCSAgfQogICAgICAgIH0KICAgIC
AgfQoKICAgICAgLy8gLS0tLS0gTG9vayBmb3Igc2tpcAogICAgICBpZiAoJHZfc2tpcCA+IDApIHsKICAgI
CAgICB3aGlsZSAoJHZfc2tpcCA+IDApIHsKICAgICAgICAgICAgJHZfcmVzdWx0ID0gJy4uLycuJHZfcmVz
dWx0OwogICAgICAgICAgICAkdl9za2lwLS07CiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgLy8gLS0
tLS0gUmV0dXJuCiAgICByZXR1cm4gJHZfcmVzdWx0OwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKI
CAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIC8vIEZ1bmN0aW9uIDogUGNsWmlwVXRpbFBhdGhJbmNsdXNpb24
oKQogIC8vIERlc2NyaXB0aW9uIDoKICAvLyAgIFRoaXMgZnVuY3Rpb24gaW5kaWNhdGVzIGlmIHRoZSBwYX
RoICRwX3BhdGggaXMgdW5kZXIgdGhlICRwX2RpciB0cmVlLiBPciwKICAvLyAgIHNhaWQgaW4gYW4gb3RoZ
XIgd2F5LCBpZiB0aGUgZmlsZSBvciBzdWItZGlyICRwX3BhdGggaXMgaW5zaWRlIHRoZSBkaXIKICAvLyAg
ICRwX2Rpci4KICAvLyAgIFRoZSBmdW5jdGlvbiBpbmRpY2F0ZXMgYWxzbyBpZiB0aGUgcGF0aCBpcyBleGF
jdGx5IHRoZSBzYW1lIGFzIHRoZSBkaXIuCiAgLy8gICBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHBhdGggd2
l0aCBkdXBsaWNhdGVkICcvJyBsaWtlICcvLycsIGJ1dCBkb2VzIG5vdAogIC8vICAgc3VwcG9ydCAnLicgb
3IgJy4uJyBzdGF0ZW1lbnRzLgogIC8vIFBhcmFtZXRlcnMgOgogIC8vIFJldHVybiBWYWx1ZXMgOgogIC8v
ICAgMCBpZiAkcF9wYXRoIGlzIG5vdCBpbnNpZGUgZGlyZWN0b3J5ICRwX2RpcgogIC8vICAgMSBpZiAkcF9
wYXRoIGlzIGluc2lkZSBkaXJlY3RvcnkgJHBfZGlyCiAgLy8gICAyIGlmICRwX3BhdGggaXMgZXhhY3RseS
B0aGUgc2FtZSBhcyAkcF9kaXIKICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGZ1bmN0aW9uIFBjbFppcFV0
aWxQYXRoSW5jbHVzaW9uKCRwX2RpciwgJHBfcGF0aCkKICB7CiAgICAkdl9yZXN1bHQgPSAxOwoKICAgIC8
vIC0tLS0tIExvb2sgZm9yIHBhdGggYmVnaW5uaW5nIGJ5IC4vCiAgICBpZiAoICAgKCRwX2RpciA9PSAnLi
cpCiAgICAgICAgfHwgKChzdHJsZW4oJHBfZGlyKSA+PTIpICYmIChzdWJzdHIoJHBfZGlyLCAwLCAyKSA9P
SAnLi8nKSkpIHsKICAgICAgJHBfZGlyID0gUGNsWmlwVXRpbFRyYW5zbGF0ZVdpblBhdGgoZ2V0Y3dkKCks
IEZBTFNFKS4nLycuc3Vic3RyKCRwX2RpciwgMSk7CiAgICB9CiAgICBpZiAoICAgKCRwX3BhdGggPT0gJy4
nKQogICAgICAgIHx8ICgoc3RybGVuKCRwX3BhdGgpID49MikgJiYgKHN1YnN0cigkcF9wYXRoLCAwLCAyKS
A9PSAnLi8nKSkpIHsKICAgICAgJHBfcGF0aCA9IFBjbFppcFV0aWxUcmFuc2xhdGVXaW5QYXRoKGdldGN3Z
CgpLCBGQUxTRSkuJy8nLnN1YnN0cigkcF9wYXRoLCAxKTsKICAgIH0KCiAgICAvLyAtLS0tLSBFeHBsb2Rl
IGRpciBhbmQgcGF0aCBieSBkaXJlY3Rvcnkgc2VwYXJhdG9yCiAgICAkdl9saXN0X2RpciA9IGV4cGxvZGU
oIi8iLCAkcF9kaXIpOwogICAgJHZfbGlzdF9kaXJfc2l6ZSA9IHNpemVvZigkdl9saXN0X2Rpcik7CiAgIC
Akdl9saXN0X3BhdGggPSBleHBsb2RlKCIvIiwgJHBfcGF0aCk7CiAgICAkdl9saXN0X3BhdGhfc2l6ZSA9I
HNpemVvZigkdl9saXN0X3BhdGgpOwoKICAgIC8vIC0tLS0tIFN0dWR5IGRpcmVjdG9yaWVzIHBhdGhzCiAg
ICAkaSA9IDA7CiAgICAkaiA9IDA7CiAgICB3aGlsZSAoKCRpIDwgJHZfbGlzdF9kaXJfc2l6ZSkgJiYgKCR
qIDwgJHZfbGlzdF9wYXRoX3NpemUpICYmICgkdl9yZXN1bHQpKSB7CgogICAgICAvLyAtLS0tLSBMb29rIG
ZvciBlbXB0eSBkaXIgKHBhdGggcmVkdWN0aW9uKQogICAgICBpZiAoJHZfbGlzdF9kaXJbJGldID09ICcnK
SB7CiAgICAgICAgJGkrKzsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBpZiAoJHZfbGlzdF9w
YXRoWyRqXSA9PSAnJykgewogICAgICAgICRqKys7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KCiAgICA
gIC8vIC0tLS0tIENvbXBhcmUgdGhlIGl0ZW1zCiAgICAgIGlmICgoJHZfbGlzdF9kaXJbJGldICE9ICR2X2
xpc3RfcGF0aFskal0pICYmICgkdl9saXN0X2RpclskaV0gIT0gJycpICYmICggJHZfbGlzdF9wYXRoWyRqX
SAhPSAnJykpICB7CiAgICAgICAgJHZfcmVzdWx0ID0gMDsKICAgICAgfQoKICAgICAgLy8gLS0tLS0gTmV4
dCBpdGVtcwogICAgICAkaSsrOwogICAgICAkaisrOwogICAgfQoKICAgIC8vIC0tLS0tIExvb2sgaWYgZXZ
lcnl0aGluZyBzZWVtcyB0byBiZSB0aGUgc2FtZQogICAgaWYgKCR2X3Jlc3VsdCkgewogICAgICAvLyAtLS
0tLSBTa2lwIGFsbCB0aGUgZW1wdHkgaXRlbXMKICAgICAgd2hpbGUgKCgkaiA8ICR2X2xpc3RfcGF0aF9za
XplKSAmJiAoJHZfbGlzdF9wYXRoWyRqXSA9PSAnJykpICRqKys7CiAgICAgIHdoaWxlICgoJGkgPCAkdl9s
aXN0X2Rpcl9zaXplKSAmJiAoJHZfbGlzdF9kaXJbJGldID09ICcnKSkgJGkrKzsKCiAgICAgIGlmICgoJGk
gPj0gJHZfbGlzdF9kaXJfc2l6ZSkgJiYgKCRqID49ICR2X2xpc3RfcGF0aF9zaXplKSkgewogICAgICAgIC
8vIC0tLS0tIFRoZXJlIGFyZSBleGFjdGx5IHRoZSBzYW1lCiAgICAgICAgJHZfcmVzdWx0ID0gMjsKICAgI
CAgfQogICAgICBlbHNlIGlmICgkaSA8ICR2X2xpc3RfZGlyX3NpemUpIHsKICAgICAgICAvLyAtLS0tLSBU
aGUgcGF0aCBpcyBzaG9ydGVyIHRoYW4gdGhlIGRpcgogICAgICAgICR2X3Jlc3VsdCA9IDA7CiAgICAgIH0
KICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBQY2xaaXB
VdGlsQ29weUJsb2NrKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICAkcF
9tb2RlIDogcmVhZC93cml0ZSBjb21wcmVzc2lvbiBtb2RlCiAgLy8gICAgICAgICAgICAgMCA6IHNyYyAmI
GRlc3Qgbm9ybWFsCiAgLy8gICAgICAgICAgICAgMSA6IHNyYyBnemlwLCBkZXN0IG5vcm1hbAogIC8vICAg
ICAgICAgICAgIDIgOiBzcmMgbm9ybWFsLCBkZXN0IGd6aXAKICAvLyAgICAgICAgICAgICAzIDogc3JjICY
gZGVzdCBnemlwCiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jd
GlvbiBQY2xaaXBVdGlsQ29weUJsb2NrKCRwX3NyYywgJHBfZGVzdCwgJHBfc2l6ZSwgJHBfbW9kZT0wKQog
IHsKICAgICR2X3Jlc3VsdCA9IDE7CgogICAgaWYgKCRwX21vZGU9PTApCiAgICB7CiAgICAgIHdoaWxlICg
kcF9zaXplICE9IDApCiAgICAgIHsKICAgICAgICAkdl9yZWFkX3NpemUgPSAoJHBfc2l6ZSA8IFBDTFpJUF
9SRUFEX0JMT0NLX1NJWkUgPyAkcF9zaXplIDogUENMWklQX1JFQURfQkxPQ0tfU0laRSk7CiAgICAgICAgJ
HZfYnVmZmVyID0gQGZyZWFkKCRwX3NyYywgJHZfcmVhZF9zaXplKTsKICAgICAgICBAZndyaXRlKCRwX2Rl
c3QsICR2X2J1ZmZlciwgJHZfcmVhZF9zaXplKTsKICAgICAgICAkcF9zaXplIC09ICR2X3JlYWRfc2l6ZTs
KICAgICAgfQogICAgfQogICAgZWxzZSBpZiAoJHBfbW9kZT09MSkKICAgIHsKICAgICAgd2hpbGUgKCRwX3
NpemUgIT0gMCkKICAgICAgewogICAgICAgICR2X3JlYWRfc2l6ZSA9ICgkcF9zaXplIDwgUENMWklQX1JFQ
URfQkxPQ0tfU0laRSA/ICRwX3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgICAkdl9i
dWZmZXIgPSBAZ3pyZWFkKCRwX3NyYywgJHZfcmVhZF9zaXplKTsKICAgICAgICBAZndyaXRlKCRwX2Rlc3Q
sICR2X2J1ZmZlciwgJHZfcmVhZF9zaXplKTsKICAgICAgICAkcF9zaXplIC09ICR2X3JlYWRfc2l6ZTsKIC
AgICAgfQogICAgfQogICAgZWxzZSBpZiAoJHBfbW9kZT09MikKICAgIHsKICAgICAgd2hpbGUgKCRwX3Npe
mUgIT0gMCkKICAgICAgewogICAgICAgICR2X3JlYWRfc2l6ZSA9ICgkcF9zaXplIDwgUENMWklQX1JFQURf
QkxPQ0tfU0laRSA/ICRwX3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgICAkdl9idWZ
mZXIgPSBAZnJlYWQoJHBfc3JjLCAkdl9yZWFkX3NpemUpOwogICAgICAgIEBnendyaXRlKCRwX2Rlc3QsIC
R2X2J1ZmZlciwgJHZfcmVhZF9zaXplKTsKICAgICAgICAkcF9zaXplIC09ICR2X3JlYWRfc2l6ZTsKICAgI
CAgfQogICAgfQogICAgZWxzZSBpZiAoJHBfbW9kZT09MykKICAgIHsKICAgICAgd2hpbGUgKCRwX3NpemUg
IT0gMCkKICAgICAgewogICAgICAgICR2X3JlYWRfc2l6ZSA9ICgkcF9zaXplIDwgUENMWklQX1JFQURfQkx
PQ0tfU0laRSA/ICRwX3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKICAgICAgICAkdl9idWZmZX
IgPSBAZ3pyZWFkKCRwX3NyYywgJHZfcmVhZF9zaXplKTsKICAgICAgICBAZ3p3cml0ZSgkcF9kZXN0LCAkd
l9idWZmZXIsICR2X3JlYWRfc2l6ZSk7CiAgICAgICAgJHBfc2l6ZSAtPSAkdl9yZWFkX3NpemU7CiAgICAg
IH0KICAgIH0KCiAgICAvLyAtLS0tLSBSZXR1cm4KICAgIHJldHVybiAkdl9yZXN1bHQ7CiAgfQogIC8vIC0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb24gOiBQY2xa
aXBVdGlsUmVuYW1lKCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gICBUaGlzIGZ1bmN0aW9uIHRyaWVzIHR
vIGRvIGEgc2ltcGxlIHJlbmFtZSgpIGZ1bmN0aW9uLiBJZiBpdCBmYWlscywgaXQKICAvLyAgIHRyaWVzIH
RvIGNvcHkgdGhlICRwX3NyYyBmaWxlIGluIGEgbmV3ICRwX2Rlc3QgZmlsZSBhbmQgdGhlbiB1bmxpbmsgd
GhlCiAgLy8gICBmaXJzdCBvbmUuCiAgLy8gUGFyYW1ldGVycyA6CiAgLy8gICAkcF9zcmMgOiBPbGQgZmls
ZW5hbWUKICAvLyAgICRwX2Rlc3QgOiBOZXcgZmlsZW5hbWUKICAvLyBSZXR1cm4gVmFsdWVzIDoKICAvLyA
gIDEgb24gc3VjY2VzcywgMCBvbiBmYWlsdXJlLgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgZnVuY3Rpb
24gUGNsWmlwVXRpbFJlbmFtZSgkcF9zcmMsICRwX2Rlc3QpCiAgewogICAgJHZfcmVzdWx0ID0gMTsKCiAg
ICAvLyAtLS0tLSBUcnkgdG8gcmVuYW1lIHRoZSBmaWxlcwogICAgaWYgKCFAcmVuYW1lKCRwX3NyYywgJHB
fZGVzdCkpIHsKCiAgICAgIC8vIC0tLS0tIFRyeSB0byBjb3B5ICYgdW5saW5rIHRoZSBzcmMKICAgICAgaW
YgKCFAY29weSgkcF9zcmMsICRwX2Rlc3QpKSB7CiAgICAgICAgJHZfcmVzdWx0ID0gMDsKICAgICAgfQogI
CAgICBlbHNlIGlmICghQHVubGluaygkcF9zcmMpKSB7CiAgICAgICAgJHZfcmVzdWx0ID0gMDsKICAgICAg
fQogICAgfQoKICAgIC8vIC0tLS0tIFJldHVybgogICAgcmV0dXJuICR2X3Jlc3VsdDsKICB9CiAgLy8gLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0KCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAvLyBGdW5jdGlvbiA6IFBjbFpp
cFV0aWxPcHRpb25UZXh0KCkKICAvLyBEZXNjcmlwdGlvbiA6CiAgLy8gICBUcmFuc2xhdGUgb3B0aW9uIHZ
hbHVlIGluIHRleHQuIE1haW5seSBmb3IgZGVidWcgcHVycG9zZS4KICAvLyBQYXJhbWV0ZXJzIDoKICAvLy
AgICRwX29wdGlvbiA6IHRoZSBvcHRpb24gdmFsdWUuCiAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gICBUa
GUgb3B0aW9uIHRleHQgdmFsdWUuCiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBmdW5jdGlvbiBQY2xaaXB
VdGlsT3B0aW9uVGV4dCgkcF9vcHRpb24pCiAgewoKICAgICR2X2xpc3QgPSBnZXRfZGVmaW5lZF9jb25zdG
FudHMoKTsKICAgIGZvciAocmVzZXQoJHZfbGlzdCk7ICR2X2tleSA9IGtleSgkdl9saXN0KTsgbmV4dCgkd
l9saXN0KSkgewoJICAgICR2X3ByZWZpeCA9IHN1YnN0cigkdl9rZXksIDAsIDEwKTsKCSAgICBpZiAoKCAg
ICgkdl9wcmVmaXggPT0gJ1BDTFpJUF9PUFQnKQogICAgICAgICAgIHx8ICgkdl9wcmVmaXggPT0gJ1BDTFp
JUF9DQl8nKQogICAgICAgICAgIHx8ICgkdl9wcmVmaXggPT0gJ1BDTFpJUF9BVFQnKSkKCSAgICAgICAgJi
YgKCR2X2xpc3RbJHZfa2V5XSA9PSAkcF9vcHRpb24pKSB7CiAgICAgICAgcmV0dXJuICR2X2tleTsKCSAgI
CB9CiAgICB9CgogICAgJHZfcmVzdWx0ID0gJ1Vua25vd24nOwoKICAgIHJldHVybiAkdl9yZXN1bHQ7CiAg
fQogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgLy8gRnVuY3Rpb
24gOiBQY2xaaXBVdGlsVHJhbnNsYXRlV2luUGF0aCgpCiAgLy8gRGVzY3JpcHRpb24gOgogIC8vICAgVHJh
bnNsYXRlIHdpbmRvd3MgcGF0aCBieSByZXBsYWNpbmcgJ1wnIGJ5ICcvJyBhbmQgb3B0aW9uYWxseSByZW1
vdmluZwogIC8vICAgZHJpdmUgbGV0dGVyLgogIC8vIFBhcmFtZXRlcnMgOgogIC8vICAgJHBfcGF0aCA6IH
BhdGggdG8gdHJhbnNsYXRlLgogIC8vICAgJHBfcmVtb3ZlX2Rpc2tfbGV0dGVyIDogdHJ1ZSB8IGZhbHNlC
iAgLy8gUmV0dXJuIFZhbHVlcyA6CiAgLy8gICBUaGUgcGF0aCB0cmFuc2xhdGVkLgogIC8vIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tCiAgZnVuY3Rpb24gUGNsWmlwVX
RpbFRyYW5zbGF0ZVdpblBhdGgoJHBfcGF0aCwgJHBfcmVtb3ZlX2Rpc2tfbGV0dGVyPXRydWUpCiAgewogI
CAgaWYgKHN0cmlzdHIocGhwX3VuYW1lKCksICd3aW5kb3dzJykpIHsKICAgICAgLy8gLS0tLS0gTG9vayBm
b3IgcG90ZW50aWFsIGRpc2sgbGV0dGVyCiAgICAgIGlmICgoJHBfcmVtb3ZlX2Rpc2tfbGV0dGVyKSAmJiA
oKCR2X3Bvc2l0aW9uID0gc3RycG9zKCRwX3BhdGgsICc6JykpICE9IGZhbHNlKSkgewogICAgICAgICAgJH
BfcGF0aCA9IHN1YnN0cigkcF9wYXRoLCAkdl9wb3NpdGlvbisxKTsKICAgICAgfQogICAgICAvLyAtLS0tL
SBDaGFuZ2UgcG90ZW50aWFsIHdpbmRvd3MgZGlyZWN0b3J5IHNlcGFyYXRvcgogICAgICBpZiAoKHN0cnBv
cygkcF9wYXRoLCAnXFwnKSA+IDApIHx8IChzdWJzdHIoJHBfcGF0aCwgMCwxKSA9PSAnXFwnKSkgewogICA
gICAgICAgJHBfcGF0aCA9IHN0cnRyKCRwX3BhdGgsICdcXCcsICcvJyk7CiAgICAgIH0KICAgIH0KICAgIH
JldHVybiAkcF9wYXRoOwogIH0KICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=
###PACKDATA,FILE_END,/lib/pclzip/pclzip.php,importbuddy/lib/pclzip/pclzip.php
###PACKDATA,FILE_START,/lib/zipbuddy/history.txt,importbuddy/lib/zipbuddy/history.t
xt
Mi4wLjAgLSAyMDExLTEwLTA4IC0gRHVzdGluIEJvbHRvbgoJQWRkZWQgaGlzdG9yeS50eHQuCglBZGRlZCB
1bnppcCBmdW5jdGlvbmFsaXR5Lg==
###PACKDATA,FILE_END,/lib/zipbuddy/history.txt,importbuddy/lib/zipbuddy/history.txt
###PACKDATA,FILE_START,/lib/zipbuddy/index.php,importbuddy/lib/zipbuddy/index.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/lib/zipbuddy/index.php,importbuddy/lib/zipbuddy/index.php
###PACKDATA,FILE_START,/lib/zipbuddy/legacy.zipbuddy.php,importbuddy/lib/zipbuddy/l
egacy.zipbuddy.php
PD9waHAKLyoqCiAqCXBsdWdpbmJ1ZGR5X3ppcGJ1ZGR5IENsYXNzCiAqCiAqCUhhbmRsZXMgemlwcGluZyB
hbmQgdW56aXBwaW5nLCB1c2luZyB0aGUgYmVzdCBtZXRob2RzIGF2YWlsYWJsZSBhbmQgZmFsbGluZyBiYW
NrIHRvIHdvcnNlIG1ldGhvZHMKICoJYXMgbmVlZGVkIGZvciBjb21wYXRpYmlsaXR5LiBBbGxvd3MgZm9yI
GZvcmNpbmcgY29tcGF0aWJpbGl0eSBtb2Rlcy4KICoJCiAqCUBzaW5jZSAzLjAuMAogKglAYXV0aG9yIER1
c3RpbiBCb2x0b24KICoKICoJJHRlbXBfZGlyCQlzdHJpbmcJCVRlbXBvcmFyeSBkaXJlY3RvcnkgYWJzb2x
1dGUgcGF0aCBmb3IgdGVtcG9yYXJ5IGZpbGUgc3RvcmFnZS4gTXVzdCBiZSB3cml0YWJsZSEKICoJJHppcF
9tZXRob2RzCWFycmF5CQlPcHRpb25hbC4gQXJyYXkgb2YgYXZhaWxhYmxlIHppcCBtZXRob2RzIHRvIHVzZ
S4gVXNlZnVsIGZvciBub3QgaGF2aW5nIHRvIHJlLXRlc3QgZXZlcnkgdGltZS4KICoJCQkJCQkJCUlmIG9t
aXR0ZWQgdGhlbiBhIHRlc3Qgd2lsbCBiZSBwZXJmb3JtZWQgdG8gZmluZCB0aGUgbWV0aG9kcyB0aGF0IHd
vcmsgb24gdGhpcyBob3N0LgogKgkkbW9kZQkJCXN0cmluZwkJRnV0dXJlIHVzZSB0byBhbGxvdyBmb3Igb3
RoZXIgY29tcHJlc3Npb24gbWV0aG9kcyBvdGhlciB0aGFuIHppcC4gQ3VycmVudGx5IG5vdCBpbiB1c2UuC
iAqCiAqLwoKCgovLyBUcnkgYW5kIGxvYWQgdGhlIGV4cGVyaW1lbnRhbCB2ZXJzaW9uIC0gaWYgc3VjY2Vz
c2Z1bCB0aGVuIGNsYXNzIHdpbGwgZXhpc3QgYW5kIHJlbWFpbmluZyBjb2RlIHdpbGwgYmUgaWdub3JlZAp
pZiAoCgkJKCBkZWZpbmVkKCAnVVNFX0VYUEVSSU1FTlRBTF9aSVBCVUREWScgKSAmJiAoIHRydWUgPT09IF
VTRV9FWFBFUklNRU5UQUxfWklQQlVERFkgKSApCgkJfHwKCQkoIGlzc2V0KCBwYl9iYWNrdXBidWRkeTo6J
G9wdGlvbnNbJ2FsdGVybmF0aXZlX3ppcCddICkgJiYgKCAnMScgPT0gcGJfYmFja3VwYnVkZHk6OiRvcHRp
b25zWydhbHRlcm5hdGl2ZV96aXAnXSApICkKCSkgewoJCXJlcXVpcmVfb25jZSggZGlybmFtZSggX19GSUx
FX18gKSAuICcveC16aXBidWRkeS5waHAnICk7Cn0KCgoKaWYgKCAhY2xhc3NfZXhpc3RzKCAicGx1Z2luYn
VkZHlfemlwYnVkZHkiICkgKSB7CgljbGFzcyBwbHVnaW5idWRkeV96aXBidWRkeSB7CgkJCgkJCgkJLyoqK
ioqKioqKiogUHJvcGVydGllcyAqKioqKioqKioqLwoJCQoJCQoJCWNvbnN0IFpJUF9NRVRIT0RTX1RSQU5T
SUVOVCA9ICdwYl9iYWNrdXBidWRkeV9hdmFpbF96aXBfbWV0aG9kc19jbGFzc2ljJzsKCQljb25zdCBaSVB
fRVhFQ1BBVEhfVFJBTlNJRU5UID0gJ3BiX2JhY2t1cGJ1ZGR5X2V4ZWNfcGF0aF9jbGFzc2ljJzsKCQljb2
5zdCBaSVBfVFJBTlNJRU5UX0xJRkUgPSA2MDsKCQljb25zdCBOT1JNX0RJUkVDVE9SWV9TRVBBUkFUT1IgP
SAnLyc7CgkJY29uc3QgRElSRUNUT1JZX1NFUEFSQVRPUlMgPSAnL1xcJzsKCQkKCQlwcml2YXRlICRfY29t
bWFuZGJ1ZGR5OwoJCXB1YmxpYyAkX3ppcF9tZXRob2RzOwkJLy8gQXJyYXkgb2YgYXZhaWxhYmxlIHppcCB
tZXRob2RzLgoJCQoJCQoJCS8qKioqKioqKioqIE1ldGhvZHMgKioqKioqKioqKi8KCQkKCQkKCQlmdW5jdG
lvbiBfX2NvbnN0cnVjdCggJHRlbXBfZGlyLCAkemlwX21ldGhvZHMgPSBhcnJheSgpLCAkbW9kZSA9ICd6a
XAnICkgewoJCQkvLyR0aGlzLT5fc3RhdHVzID0gYXJyYXkoKTsKCQkJJHRoaXMtPl90ZW1wZGlyID0gJHRl
bXBfZGlyOwoJCQkkdGhpcy0+X2V4ZWNwYXRoID0gJyc7CgkJCQoJCQkvLyBIYW5kbGVzIGNvbW1hbmQgbGl
uZSBleGVjdXRpb24uCgkJCXJlcXVpcmVfb25jZSggcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLi
AnL2xpYi9jb21tYW5kYnVkZHkvY29tbWFuZGJ1ZGR5LnBocCcgKTsKCQkJJHRoaXMtPl9jb21tYW5kYnVkZ
HkgPSBuZXcgcGJfYmFja3VwYnVkZHlfY29tbWFuZGJ1ZGR5KCk7CgkJCQoJCQlpZiAoICFlbXB0eSggJHpp
cF9tZXRob2RzICkgJiYgKCBjb3VudCggJHppcF9tZXRob2RzICkgPiAwICkgKSB7CgkJCQkkdGhpcy0+X3p
pcF9tZXRob2RzID0gJHppcF9tZXRob2RzOwoJCQl9IGVsc2UgewoJCQkJaWYgKCBmdW5jdGlvbl9leGlzdH
MoICdnZXRfdHJhbnNpZW50JyApICkgeyAvLyBJbnNpZGUgV29yZFByZXNzCgkJCQkJCgkJCQkJaWYgKCBwY
l9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2Rpc2FibGVfemlwbWV0aG9kX2NhY2hpbmcnXSA9PSAnMScgKSB7
CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1ppcCBtZXRob2QgY2FjaGluZyB
kaXNhYmxlZCBiYXNlZCBvbiBzZXR0aW5ncy4nICk7CgkJCQkJCSRhdmFpbGFibGVfbWV0aG9kcyA9IGZhbH
NlOwoJCQkJCQkkZXhlY19wYXRoID0gZmFsc2U7CgkJCQkJfSBlbHNlIHsgLy8gVXNlIGNhY2hpbmcuCgkJC
QkJCSRhdmFpbGFibGVfbWV0aG9kcyA9IGdldF90cmFuc2llbnQoIHNlbGY6OlpJUF9NRVRIT0RTX1RSQU5T
SUVOVCApOwoJCQkJCQkkZXhlY19wYXRoID0gZ2V0X3RyYW5zaWVudCggc2VsZjo6WklQX0VYRUNQQVRIX1R
SQU5TSUVOVCApOwoJCQkJCX0KCQkJCQkKCQkJCQlpZiAoICggJGF2YWlsYWJsZV9tZXRob2RzID09PSBmYW
xzZSApIHx8ICggJGV4ZWNfcGF0aCA9PT0gZmFsc2UgKSApIHsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0Y
XR1cyggJ2RldGFpbHMnLCAnWmlwIG1ldGhvZHMgb3IgZXhlYyBwYXRoIHdlcmUgbm90IGNhY2hlZDsgZGV0
ZWN0aW5nLi4uJyApOwoJCQkJCQkkdGhpcy0+X3ppcF9tZXRob2RzID0gJHRoaXMtPmF2YWlsYWJsZV96aXB
fbWV0aG9kcyggZmFsc2UsICRtb2RlICk7CgkJCQkJCXNldF90cmFuc2llbnQoIHNlbGY6OlpJUF9NRVRIT0
RTX1RSQU5TSUVOVCwgJHRoaXMtPl96aXBfbWV0aG9kcywgc2VsZjo6WklQX1RSQU5TSUVOVF9MSUZFICk7C
gkJCQkJCXNldF90cmFuc2llbnQoIHNlbGY6OlpJUF9FWEVDUEFUSF9UUkFOU0lFTlQsICR0aGlzLT5fZXhl
Y3BhdGgsIHNlbGY6OlpJUF9UUkFOU0lFTlRfTElGRSApOyAvLyBDYWxjdWxhdGVkIGFuZCBzZXQgaW4gYXZ
haWxhYmxlX3ppcF9tZXRob2RzKCkuCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJy
wgJ0NhY2hpbmcgemlwYnVkZHkgY2xhc3NpYyBtZXRob2RzICYgZXhlYyBwYXRoIGZvciBgJyAuIHNlbGY6O
lpJUF9UUkFOU0lFTlRfTElGRSAuICdgIHNlY29uZHMuJyApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCXBiX2Jh
Y2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1VzaW5nIGNhY2hlZCB6aXBidWRkeSBjbGFzc2ljIG1
ldGhvZHM6IGAnIC4gaW1wbG9kZSggJywnLCAkYXZhaWxhYmxlX21ldGhvZHMgKSAuICdgLicgKTsKCQkJCQ
kJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnVXNpbmcgY2FjaGVkIHppcGJ1ZGR5IGNsY
XNzaWMgZXhlYyBwYXRoOiBgJyAuICRleGVjX3BhdGggLiAnYC4nICk7CgkJCQkJCSR0aGlzLT5femlwX21l
dGhvZHMgPSAkYXZhaWxhYmxlX21ldGhvZHM7CgkJCQkJfQoJCQkJfSBlbHNlIHsgLy8gT3V0c2lkZSBXb3J
kUHJlc3MKCQkJCQkkdGhpcy0+X3ppcF9tZXRob2RzID0gJHRoaXMtPmF2YWlsYWJsZV96aXBfbWV0aG9kcy
ggZmFsc2UsICRtb2RlICk7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnWmlwY
nVkZHkgY2xhc3NpYyBtZXRob2RzIG5vdCBjYWNoZWQgZHVlIHRvIGJlaW5nIG91dHNpZGUgV29yZFByZXNz
LicgKTsKCQkJCX0KCQkJfQoJCX0KCQkKCQkKCQkvLyBGdW5jdGlvbiB0byB0cmFuc2xhdGUgYSBaaXBBcmN
oaXZlIGVycm9yIGNvZGUgaW50byBhbiBpbmZvcm1hdGl2ZSBzdHJpbmcgZGVzY3JpcHRpb24KCQlmdW5jdG
lvbiB6aXBhcmNoaXZlX2Vycm9yX2luZm8oICRlcnJvciwgJGZ1bGwgPSB0cnVlICkgewoJCQoJCQkvLyBGb
3Igc2FmZXR5IGxldCdzIGNoZWNrIHRoYXQgdGhlIGNsYXNzIGFjdHVhbGx5IGV4aXN0cy4uLgoJCQlpZiAo
IGNsYXNzX2V4aXN0cyggJ1ppcEFyY2hpdmUnLCBmYWxzZSApICkgewoJCQkKCQkJCS8vIFdlIGNhbiBjaGV
jayB0aGUgc3ltYm9saWMgdmFsdWVzCgkJCQlzd2l0Y2goIChpbnQpICRlcnJvciApIHsKCQkJCSBjYXNlIF
pJUEFSQ0hJVkU6OkVSX09LOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZFOjpFUlJfT0siOwoJC
QkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiTm8gZXJyb3IiOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJ
UEFSQ0hJVkU6OkVSX09QRU46CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSX09QRU4iOwo
JCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiQ2FuJ3Qgb3BlbiBmaWxlIjsKCQkJCSAJYnJlYWs7CgkJCQ
kgY2FzZSBaSVBBUkNISVZFOjpFUl9NRU1PUlk6CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6O
kVSX01FTU9SWSI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJNZW1vcnkgYWxsb2NhdGlvbiBmYWls
dXJlIjsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjpFUl9FWElTVFM6CgkJCQkgCSRlcnJ
vcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSUl9FWElTVFMiOwoJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPS
AiRmlsZSBhbHJlYWR5IGV4aXN0cyI7CgkJCQkgCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfS
U5DT05TOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZFOjpFUl9JTkNPTlMiOwoJCQkJIAkkZXJy
b3JfZGVzY3JpcHRpb24gPSAiWmlwIGFyY2hpdmUgaW5jb25zaXN0ZW50IjsKCQkJCSAJYnJlYWs7CgkJCQk
gY2FzZSBaSVBBUkNISVZFOjpFUl9JTlZBTDoKCQkJCSAJJGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6RV
JfSU5WQUwiOwoJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiSW52YWxpZCBhcmd1bWVudCI7CgkJCQkgC
WJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfTk9FTlQ6CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJ
UEFSQ0hJVkU6OkVSX05PRU5UIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW9uID0gIk5vIHN1Y2ggZmlsZSI
7CgkJCQkgCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfTk9aSVA6CgkJCQkgCSRlcnJvcl9uYW
1lID0gIlpJUEFSQ0hJVkU6OkVSX05PWklQIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW9uID0gIk5vdCBhI
HppcCBhcmNoaXZlIjsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjpFUl9SRUFEOgoJCQkJ
IAkkZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZFOjpFUl9SRUFEIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW9
uID0gIlJlYWQgZXJyb3IiOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX1NFRUs6Cg
kJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSX1NFRUsiOwoJCQkJIAkkZXJyb3JfZGVzY3Jpc
HRpb24gPSAiU2VlayBlcnJvciI7CgkJCQkgCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfTVVM
VElESVNLOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZFOjpFUl9NVUxUSURJU0siOwoJCQkJIAk
kZXJyb3JfZGVzY3JpcHRpb24gPSAiTXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZCI7Cg
kJCQkgCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfUkVOQU1FOgoJCQkJIAkkZXJyb3JfbmFtZ
SA9ICJaSVBBUkNISVZFOjpFUl9SRU5BTUUiOwoJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiUmVuYW1p
bmcgdGVtcG9yYXJ5IGZpbGUgZmFpbGVkIjsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjp
FUl9DTE9TRToKCQkJCSAJJGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJfQ0xPU0UiOwoJCQkJIAkkZX
Jyb3JfZGVzY3JpcHRpb24gPSAiQ2xvc2luZyB6aXAgYXJjaGl2ZSBmYWlsZWQiOwoJCQkJIAlicmVhazsKC
QkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX1dSSVRFOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZF
OjpFUl9XUklURSI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJXcml0ZSBlcnJvciI7CgkJCQkgCWJ
yZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfQ1JDOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBBUk
NISVZFOjpFUl9DUkMiOwoJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiQ1JDIGVycm9yIjsKCQkJCSAJY
nJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjpFUl9aSVBDTE9TRUQ6CgkJCQkgCSRlcnJvcl9uYW1lID0g
IlpJUEFSQ0hJVkU6OkVSX1pJUENMT1NFRCI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJDb250YWl
uaW5nIHppcCBhcmNoaXZlIHdhcyBjbG9zZWQiOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVk
U6OkVSX1RNUE9QRU46CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSX1RNUE9QRU4iOwoJC
QkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiRmFpbHVyZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUiOwoJ
CQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX1pMSUI6CgkJCQkgCSRlcnJvcl9uYW1lID0
gIlpJUEFSQ0hJVkU6OkVSX1pMSUIiOwoJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiWmxpYiBlcnJvci
I7CgkJCQkgCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfQ0hBTkdFRDoKCQkJCSAJJGVycm9yX
25hbWUgPSAiWklQQVJDSElWRTo6RVJfQ0hBTkdFRCI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJF
bnRyeSBoYXMgYmVlbiBjaGFuZ2VkIjsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjpFUl9
DT01QTk9UU1VQUDoKCQkJCSAJJGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJfQ09NUE5PVFNVUFAiOw
oJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiQ29tcHJlc3Npb24gbWV0aG9kIG5vdCBzdXBwb3J0ZWQiO
woJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX0VPRjoKCQkJCSAJJGVycm9yX25hbWUg
PSAiWklQQVJDSElWRTo6RVJfRU9GIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW9uID0gIlByZW1hdHVyZSB
FT0YiOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX0lOVEVSTkFMOgoJCQkJIAkkZX
Jyb3JfbmFtZSA9ICJaSVBBUkNISVZFOjpFUl9JTlRFUk5BTCI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvb
iA9ICJJbnRlcm5hbCBlcnJvciI7CgkJCQkgCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfUkVN
T1ZFOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZFOjpFUl9SRU1PVkUiOwoJCQkJIAkkZXJyb3J
fZGVzY3JpcHRpb24gPSAiQ2FuJ3QgcmVtb3ZlIGZpbGUiOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUE
FSQ0hJVkU6OkVSX0RFTEVURUQ6CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSX0RFTEVUR
UQiOwoJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiRW50cnkgaGFzIGJlZW4gZGVsZXRlZCI7CgkJCQkg
CWJyZWFrOwoJCQkJIGRlZmF1bHQ6CgkJCQkgCSR
lcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSUl9VTktOT1dOIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW
9uID0gIlVua21vd24gZXJyb3IiOwoJCQkJfQoJCQkJCgkJCQkkZXJyb3Jfc3RyaW5nID0gJGVycm9yX25hb
WUgLiAiKCIgLiAkZXJyb3IgLiAiKSA6ICIgLiAkZXJyb3JfZGVzY3JpcHRpb247CgkJCQoJCQl9IGVsc2Ug
ewoJCQkKCQkJCS8vIElmIHRoZSBaaXBBcmNoaXZlIGNsYXNzIGRvZXNuJ3QgZXhpc3RzIGp1c3QgcmV0dXJ
uIGEgZ2VuZXJpYwoJCQkJJGVycm9yX3N0cmluZyA9ICJaSVBBUkNISVZFOjpFUl9VTktOT1dOKCIgLiAkZX
Jyb3IgLiAiKSA6IFVua25vd24gZXJyb3IiOwoJCQkKCQkJfQoJCQkKCQkJLy8gT25lIHdheSBvciBhbm90a
GVyIHdlIGhhdmUgYSBzdHJpbmcgdG8gcmV0dXJuCgkJCXJldHVybiAkZXJyb3Jfc3RyaW5nOwoJCQoJCX0K
CQkKCQkvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGZpbGUgKHdpdGggcGF0aCkgZXhpc3RzIGluIHRoZSBaSVA
uCgkJLy8gSWYgbGVhdmVfb3BlbiBpcyB0cnVlIHRoZW4gdGhlIHppcCBvYmplY3Qgd2lsbCBiZSBsZWZ0IG
9wZW4gZm9yIGZhc3RlciBjaGVja2luZyBmb3Igc3Vic2VxdWVudCBmaWxlcyB3aXRoaW4gdGhpcyB6aXAKC
QkvLyBOb3RlOiBsZWF2ZV9vcGVuIGZ1bmN0aW9uYWxpdHkgY3VycmVudGx5IG5vdCBpbXBsZW1lbnRlZAoJ
CWZ1bmN0aW9uIGZpbGVfZXhpc3RzKCAkemlwX2ZpbGUsICRsb2NhdGVfZmlsZSwgJGxlYXZlX29wZW4gPSB
mYWxzZSApIHsKCgkJCS8vIFVzZSBaaXBBcmNoaXZlIGlmIGF2YWlsYWJsZQoJCQlpZiAoIGluX2FycmF5KC
AnemlwYXJjaGl2ZScsICR0aGlzLT5femlwX21ldGhvZHMgKSApIHsKCQkJCgkJCQkvLyBNYWtlIGRvdWJse
SBzdXJlIGl0IGlzIGF2YWlsYWJsZSAtIGlmIG5vdCB3ZSdsbCBqdXN0IGRyb3AgdGhyb3VnaAoJCQkJaWYg
KCBjbGFzc19leGlzdHMoICdaaXBBcmNoaXZlJywgZmFsc2UpICkgewoJCQkJCgkJCQkJJHphID0gbmV3IFp
pcEFyY2hpdmUoKTsKCQkJCQkkcmVzdWx0ID0gJHphLT5vcGVuKCAkemlwX2ZpbGUgKTsKCQkJCQkKCQkJCQ
kvLyBNYWtlIHN1cmUgd2Ugb3BlbmVkIHRoZSB6aXAgb2sKCQkJCQlpZiAoICRyZXN1bHQgPT09IHRydWUgK
SB7CgkJCQkJCgkJCQkJCS8vIE5vdyB0cnkgYW5kIGZpbmQgdGhlIGluZGV4IG9mIHRoZSBmaWxlCgkJCQkJ
CSRpbmRleCA9ICR6YS0+bG9jYXRlTmFtZSggJGxvY2F0ZV9maWxlICk7CgkJCQkJCQoJCQkJCQkvLyBXZSB
oYXZlIGZpbmlzaGVkIHdpdGggdGhlIGFyY2hpdmUgKGxlYXZlX29wZW4gaWdub3JlZCBmb3Igbm93KQoJCQ
kJCQkkemEtPmNsb3NlKCk7CgkJCQkJCQoJCQkJCQkvLyBJZiB3ZSBnb3QgYW4gaW5kZXggd2UgZm91bmQga
XQgb3RoZXJ3aXNlIG5vdCBmb3VuZAoJCQkJCQlpZiAoICRpbmRleCAhPT0gZmFsc2UgKSB7CgkJCQkJCQoJ
CQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnRmlsZSBmb3VuZCAoemlwYXJ
jaGl2ZSknLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzogJyAuICRsb2NhdGVfZmlsZSApOwoJCQkJCQ
kJcmV0dXJuIHRydWU7CgkJCQkJCQkKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCgkJCQkJCQlwYl9iYWNrdXBid
WRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGaWxlIG5vdCBmb3VuZCAoemlwYXJjaGl2ZSknLCdpdC1s
MTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzogJyAuICRsb2NhdGVfZmlsZSApOwoJCQkJCQkJcmV0dXJuIGZhbHN
lOwoJCQkJCQkJCgkJCQkJCX0KCQkJCQkJCgkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gQ291bGRuJ3
Qgb3BlbiBhcmNoaXZlIC0gZHJvcCB0aHJvdWdoIGFzIG1heWJlIG90aGVyIG1ldGhvZCB3aWxsIHN1Y2NlZ
WQ/CgkJCQkJCSRlcnJvcl9zdHJpbmcgPSAkdGhpcy0+emlwYXJjaGl2ZV9lcnJvcl9pbmZvKCAkcmVzdWx0
ICk7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ1ppcEF
yY2hpdmUgZmFpbGVkIHRvIG9wZW4gZmlsZSB0byBjaGVjayBpZiBmaWxlIGV4aXN0cyAobG9va2luZyBmb3
IgJTEkcyBpbiAlMiRzKSAtIEVycm9yIEluZm86ICUzJHMuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJ
GxvY2F0ZV9maWxlICwgJHppcF9maWxlLCAkZXJyb3Jfc3RyaW5nICkgKTsKCgkJCQkJfQoJCQkJCgkJCQl9
IGVsc2UgewoJCQkJCgkJCQkJLy8gU29tZXRoaW5nIGZpc2h5IC0gdGhlIG1ldGhvZHMgaW5kaWNhdGVkIHp
pcGFyY2hpdmUgYnV0IHdlIGNvdWxkbid0IGZpbmQgdGhlIGNsYXNzCgkJCQkJcGJfYmFja3VwYnVkZHk6On
N0YXR1cyggJ2RldGFpbHMnLCBfXygnemlwYXJjaGl2ZSBpbmRpY2F0ZWQgYXMgYXZhaWxhYmxlIG1ldGhvZ
CBidXQgWmlwQXJjaGl2ZSBjbGFzcyBub24tZXhpc3RlbnQnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7
CgoJCQkJfQoJCQkJCgkJCX0KCQkJCgkJCS8vIERyb3BwZWQgdGhyb3VnaCBiZWNhdXNlIFppcEFyY2hpdmU
gbm90IGF2YWlsYWJsZSBvciBmYWlsZWQgdG8gb3BlbiBmaWxlCgkJCWlmICggaW5fYXJyYXkoICdwY2x6aX
AnLCAkdGhpcy0+X3ppcF9tZXRob2RzICkgKSB7CgkJCQoJCQkJLy8gTWFrZSBzdXJlIHdlIGhhdmUgaXQKC
QkJCWlmICggIWNsYXNzX2V4aXN0cyggJ1BjbFppcCcsIGZhbHNlICkgKSB7CgkJCQkKCQkJCQkvLyBJdCdz
IG5vdCBhbHJlYWR5IGxvYWRlZCBzbyB0cnkgYW5kIGZpbmQvbG9hZCBpdCBmcm9tIHBvc3NpYmxlIGxvY2F
0aW9ucwoJCQkJCWlmICggZmlsZV9leGlzdHMoIEFCU1BBVEggLiAnd3AtYWRtaW4vaW5jbHVkZXMvY2xhc3
MtcGNsemlwLnBocCcgKSApIHsKCQkJCQkKCQkJCQkJLy8gUnVubmluZyB1bmRlciBXb3JkUHJlc3MKCQkJC
QkJQGluY2x1ZGVfb25jZSggQUJTUEFUSCAuICd3cC1hZG1pbi9pbmNsdWRlcy9jbGFzcy1wY2x6aXAucGhw
JyApOwoJCQkJCQkKCQkJCQl9IGVsc2VpZiAoIGZpbGVfZXhpc3RzKCBwYl9iYWNrdXBidWRkeTo6cGx1Z2l
uX3BhdGgoKSAuICcvbGliL3BjbHppcC9wY2x6aXAucGhwJyApICkgewoJCQkJCQoJCQkJCQkvLyBSdW5uaW
5nIFN0YW5kYWxvbmUgKGltcG9ydGJ1ZGR5KQoJCQkJCQlAaW5jbHVkZV9vbmNlKCBwYl9iYWNrdXBidWRke
To6cGx1Z2luX3BhdGgoKSAuICcvbGliL3BjbHppcC9wY2x6aXAucGhwJyApOwoJCQkJCQkKCQkJCQl9CgkJ
CQkJCgkJCQl9CgkJCQkKCQkJCS8vIE1ha2Ugc3VyZSB3ZSBkaWQgbG9hZCBpdAoJCQkJaWYgKCBjbGFzc19
leGlzdHMoICdQY2xaaXAnLCBmYWxzZSApICkgewoJCQkJCgkJCQkJJHphID0gbmV3IFBjbFppcCggJHppcF
9maWxlICk7CgkJCQkJCgkJCQkJLy8gTWFrZSBzdXJlIHdlIG9wZW5lZCB0aGUgemlwIG9rIGFuZCBpdCBoY
XMgY29udGVudAoJCQkJCWlmICggKCAkY29udGVudF9saXN0ID0gJHphLT5saXN0Q29udGVudCgpICkgIT09
IDAgKSB7CgkJCQkJCgkJCQkJCS8vIEdldCBlYWNoIGZpbGUgaW4gc2VxdWVuY2UgYnkgaW5kZXggYW5kIGd
ldCB0aGUgcHJvcGVydGllcwoJCQkJCQlmb3IgKCAkaSA9IDA7ICRpIDwgc2l6ZW9mKCAkY29udGVudF9saX
N0ICk7ICRpKysgKSB7CgkJCQkJCQoJCQkJCQkJJHN0YXQgPSAkY29udGVudF9saXN0WyAkaSBdOwoJCQkJC
QkJCgkJCQkJCQkvLyBBc3N1bWUgdGhlIGtleSBleGlzdHMgKGNvbnNpZGVyIHRlc3RpbmcpCgkJCQkJCQlp
ZiAoICRzdGF0WyAnZmlsZW5hbWUnIF0gPT0gJGxvY2F0ZV9maWxlICkgewoJCQkJCQkJCgkJCQkJCQkJLy8
gRmlsZSBmb3VuZCBzbyB3ZSBjYW4ganVzdCByZXR1cm4KCQkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdH
VzKCAnZGV0YWlscycsIF9fKCdGaWxlIGZvdW5kIChwY2x6aXApJywnaXQtbDEwbi1iYWNrdXBidWRkeScgK
SAuICc6ICcgLiAkbG9jYXRlX2ZpbGUgKTsKCQkJCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQkJCQkKCQkJCQkJ
CX0KCQkJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCQkvLyBPbmx5IGdldCBoZXJlIGlmIHRoZSBmaWxlIHd
hc24ndCBmb3VuZAoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGaWxlIG
5vdCBmb3VuZCAocGNsemlwKScsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gJGxvY2F0ZV9ma
WxlICk7CgkJCQkJCXJldHVybiBmYWxzZTsKCgkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gQ291bGRu
J3Qgb3BlbiBhcmNoaXZlIC0gZHJvcCB0aHJvdWdoIGFzIG1heWJlIG90aGVyIG1ldGhvZCB3aWxsIHN1Y2N
lZWQ/CgkJCQkJCSRlcnJvcl9zdHJpbmcgPSAkemEtPmVycm9ySW5mbyggdHJ1ZSApOwoJCQkJCQlwYl9iYW
NrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdwY2x6aXAgZmFpbGVkIHRvIG9wZ
W4gZmlsZSB0byBjaGVjayBpZiBmaWxlIGV4aXN0cyAobG9va2luZyBmb3IgJTEkcyBpbiAlMiRzKSAtIEVy
cm9yIEluZm86ICUzJHMuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJGxvY2F0ZV9maWxlICwgJHppcF9
maWxlLCAkZXJyb3Jfc3RyaW5nICkgKTsKCgkJCQkJfQoJCQkJCQkJCQoJCQkJfSBlbHNlIHsKCQkJCQoJCQ
kJCS8vIFNvbWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCBwY2x6aXAgYnV0IHdlIGNvd
Wxkbid0IGZpbmQgdGhlIGNsYXNzCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBf
XygncGNsemlwIGluZGljYXRlZCBhcyBhdmFpbGFibGUgbWV0aG9kIGJ1dCBjbGFzcyBQY2xaaXAgbm9uLWV
4aXN0ZW50JywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoKCQkJCX0KCQkJCQoJCQl9CgkJCQoJCQkvLy
BJZiB3ZSBnb3QgdGhpcyBmYXIgdGhlbiBubyBtZXRob2QgdG8gY2hlY2sgYmFja3VwIGNvbnRlbnQgd2FzI
GF2YWlsYWJsZSBvciB3b3JrZWQKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJp
bnRmKCBfXygnVW5hYmxlIHRvIGNoZWNrIGlmIGZpbGUgZXhpc3RzIChsb29raW5nIGZvciAlMSRzIGluICU
yJHMpOiBObyBjb21wYXRpYmxlIHppcCBtZXRob2QgZm91bmQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKS
wgJGxvY2F0ZV9maWxlLCAkemlwX2ZpbGUgKSApOwoJCQlyZXR1cm4gZmFsc2U7CgoJCX0KCQkKCQkKCQkKC
QkvKglzZXRfY29tbWVudCgpCgkJICoJCgkJICoJUmV0cmlldmUgYXJjaGl2ZSBjb21tZW50LgoJCSAqCQoJ
CSAqCUBwYXJhbQkJc3RyaW5nCQkJJHppcF9maWxlCQlGaWxlbmFtZSBvZiBhcmNoaXZlIHRvIHNldCBjb21
tZW50IG9uLgoJCSAqCUBwYXJhbQkJc3RyaW5nCQkJJGNvbW1lbnQJCUNvbW1lbnQgdG8gYXBwbHkgdG8gYX
JjaGl2ZS4KCQkgKglAcmV0dXJuCQlib29sZWFuL3N0cmluZwkJCQkJdHJ1ZSBvbiBzdWNjZXNzLCBlcnJvc
iBtZXNzYWdlIG90aGVyd2lzZS4KCQkgKi8KCQlmdW5jdGlvbiBzZXRfY29tbWVudCggJHppcF9maWxlLCAk
Y29tbWVudCApIHsKCQkKCQkJLy9Vc2UgWmlwQXJjaGl2ZSBpZiBhdmFpbGFibGUKCQkJaWYgKCBpbl9hcnJ
heSggJ3ppcGFyY2hpdmUnLCAkdGhpcy0+X3ppcF9tZXRob2RzICkgKSB7CgkJCQoJCQkJLy8gTWFrZSBkb3
VibHkgc3VyZSBpdCBpcyBhdmFpbGFibGUKCQkJCWlmICggY2xhc3NfZXhpc3RzKCAnWmlwQXJjaGl2ZScsI
GZhbHNlICkgKSB7CgkJCQkKCQkJCQkkemEgPSBuZXcgWmlwQXJjaGl2ZTsKCQkJCQkkcmVzdWx0ID0gJHph
LT5vcGVuKCAkemlwX2ZpbGUgKTsKCQkJCQkKCQkJCQkvLyBNYWtlIHN1cmUgYXQgbGVhc3QgdGhlIHppcCB
maWxlIG9wZW5lZCBvawoJCQkJCWlmICggJHJlc3VsdCA9PT0gdHJ1ZSApIHsKCQkJCQkKCQkJCQkJCS8vIF
NldCB0aGUgY29tbWVudCAtIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZQoJCQkJCQkJJHJlc
3VsdCA9ICR6YS0+c2V0QXJjaGl2ZUNvbW1lbnQoICRjb21tZW50ICk7CgkJCQkJCQkkemEtPmNsb3NlKCk7
CgkJCQkJCQkKCQkJCQkJCS8vIElmIHdlIGdvdCBiYWNrIHRydWUgdGhlbiBhbGwgaXMgd2VsbCB3aXRoIHR
oZSB3b3JsZAoJCQkJCQkJaWYgKCAkcmVzdWx0ID09PSB0cnVlICkgewoJCQkJCQkJCgkJCQkJCQkJcGJfYm
Fja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnWmlwQXJjaGl2ZSBzZXQgY29tb
WVudCBpbiBmaWxlICUxJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2ZpbGUgKSApOwoJCQkJ
CQkJCXJldHVybiB0cnVlOwoJCQkJCQkJCQoJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQoJCQkJCQkJCS8vIEl
mIHdlIGZhaWxlZCB0byBzZXQgdGhlIGNvbW1uZW50IHRoZW4gbG9nIGl0ICg/KSBhbmQgZHJvcCB0aHJvdW
doCgkJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnWmlwQ
XJjaGl2ZSBmYWlsZWQgdG8gc2V0IGNvbW1lbnQgaW4gZmlsZSAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRk
eScgKSwgJHppcF9maWxlICkgKTsKCgkJCQkJCQl9CgkJCQkJCQkKCQkJCQl9IGVsc2UgewoJCQkJCQoJCQk
JCQkvLyBJZiB3ZSBjb3VsZG4ndCBvcGVuIHRoZSB6aXAgZmlsZSB0aGVuIGxvZyBpdCAoPykgYW5kIGRyb3
AgdGhyb3VnaAoJCQkJCQkkZXJyb3Jfc3RyaW5nID0gJHRoaXMtPnppcGFyY2hpdmVfZXJyb3JfaW5mbyggJ
HJlc3VsdCApOwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9f
KCdaaXBBcmNoaXZlIGZhaWxlZCB0byBvcGVuIGZpbGUgdG8gc2V0IGNvbW1lbnQgaW4gZmlsZSAlMSRzIC0
gRXJyb3IgSW5mbzogJTIkcycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGVycm9yX3
N0cmluZyApICk7CgkJCQkJCQoJCQkJCX0KCQkJCQkJCQkJCgkJCQl9IGVsc2UgewoJCQkJCgkJCQkJLy8gU
29tZXRoaW5nIGZpc2h5IC0gdGhlIG1ldGhvZHMgaW5kaWNhdGVkIHppcGFyY2hpdmUgYnV0IHdlIGNvdWxk
bid0IGZpbmQgdGhlIGNsYXNzCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyg
nemlwYXJjaGl2ZSBpbmRpY2F0ZWQgYXMgYXZhaWxhYmxlIG1ldGhvZCBidXQgWmlwQXJjaGl2ZSBjbGFzcy
Bub24tZXhpc3RlbnQnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgoJCQkJfQoJCQkJCgkJCX0KCQkJC
gkJCS8vIERyb3BwZWQgdGhyb3VnaCBiZWNhdXNlIFppcEFyY2hpdmUgbm90IGF2YWlsYWJsZSBvciBmYWls
ZWQgZm9yIHNvbWUgcmVhc29uCgkJCWlmICggaW5fYXJyYXkoICdwY2x6aXAnLCAkdGhpcy0+X3ppcF9tZXR
ob2RzICkgKSB7CgkJCQoJCQkJLy8gTWFrZSBzdXJlIHdlIGhhdmUgaXQKCQkJCWlmICggIWNsYXNzX2V4aX
N0cyggJ1BjbFppcCcsIGZhbHNlICkgKSB7CgkJCQkKCQkJCQkvLyBJdCdzIG5vdCBhbHJlYWR5IGxvYWRlZ
CBzbyB0cnkgYW5kIGZpbmQvbG9hZCBpdCBmcm9tIHBvc3NpYmxlIGxvY2F0aW9ucwoJCQkJCWlmICggZmls
ZV9leGlzdHMoIEFCU1BBVEggLiAnd3AtYWRtaW4vaW5jbHVkZXMvY2xhc3MtcGNsemlwLnBocCcgKSApIHs
KCQkJCQkKCQkJCQkJLy8gUnVubmluZyB1bmRlci
BXb3JkUHJlc3MKCQkJCQkJQGluY2x1ZGVfb25jZSggQUJTUEFUSCAuICd3cC1hZG1pbi9pbmNsdWRlcy9jb
GFzcy1wY2x6aXAucGhwJyApOwoJCQkJCQkKCQkJCQl9IGVsc2VpZiAoIGZpbGVfZXhpc3RzKCBwYl9iYWNr
dXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvbGliL3BjbHppcC9wY2x6aXAucGhwJyApICkgewoJCQkJCQo
JCQkJCQkvLyBSdW5uaW5nIFN0YW5kYWxvbmUgKGltcG9ydGJ1ZGR5KQoJCQkJCQlAaW5jbHVkZV9vbmNlKC
BwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvbGliL3BjbHppcC9wY2x6aXAucGhwJyApOwoJC
QkJCQkKCQkJCQl9CgkJCQkJCgkJCQl9CgkJCQkKCQkJCS8vIE1ha2Ugc3VyZSB3ZSBkaWQgbG9hZCBpdAoJ
CQkJaWYgKCBjbGFzc19leGlzdHMoICdQY2xaaXAnLCBmYWxzZSkgKSB7CgkJCQkKCQkJCQkkemEgPSBuZXc
gUGNsWmlwKCAkemlwX2ZpbGUgKTsKCQkJCQkKCQkJCQkvLyBNYWtlIHN1cmUgd2Ugb3BlbmVkIHRoZSB6aX
Agb2sgYW5kIHdlIGFkZGVkIHRoZSBjb21tZW50IG9rCgkJCQkJLy8gTm90ZTogdXNpbmcgZW1wdHkgYXJyY
XkgYXMgd2UgZG9uJ3QgYWN0dWFsbHkgd2FudCB0byBhZGQgYW55IGZpbGVzCgkJCQkJaWYgKCAoICRsaXN0
ID0gJHphLT5hZGQoIGFycmF5KCksIFBDTFpJUF9PUFRfQ09NTUVOVCwgJGNvbW1lbnQgKSApICE9PSAwICk
gewoJCQkJCQoJCQkJCQkvLyBXZSBnb3QgYSBsaXN0IGJhY2sgc28gYWRkaW5nIGNvbW1lbnQgc2hvdWxkIG
hhdmUgYmVlbiBzdWNjZXNzZnVsCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc
3ByaW50ZiggX18oJ1BjbFppcCBzZXQgY29tbWVudCBpbiBmaWxlICUxJHMnLCdpdC1sMTBuLWJhY2t1cGJ1
ZGR5JyApLCAkemlwX2ZpbGUgKSApOwoJCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQkJCgkJCQkJfSBlbHNlIHs
KCQkJCQkKCQkJCQkJLy8gSWYgd2UgZmFpbGVkIHRvIHNldCB0aGUgY29tbW5lbnQgdGhlbiBsb2cgaXQgKD
8pIGFuZCBkcm9wIHRocm91Z2gKCQkJCQkJJGVycm9yX3N0cmluZyA9ICR6YS0+ZXJyb3JJbmZvKCB0cnVlI
Ck7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ1BjbFpp
cCBmYWlsZWQgdG8gc2V0IGNvbW1lbnQgaW4gZmlsZSAlMSRzIC0gRXJyb3IgSW5mbzogJTIkcycsJ2l0LWw
xMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGVycm9yX3N0cmluZyApICk7CgkJCQkJCQoJCQkJCX
0KCQkJCQoJCQkJfSBlbHNlIHsKCQkJCQoJCQkJCS8vIFNvbWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2RzI
GluZGljYXRlZCBwY2x6aXAgYnV0IHdlIGNvdWxkbid0IGZpbmQgdGhlIGNsYXNzCgkJCQkJcGJfYmFja3Vw
YnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygncGNsemlwIGluZGljYXRlZCBhcyBhdmFpbGFibGUgbWV
0aG9kIGJ1dCBjbGFzcyBQY2xaaXAgbm9uLWV4aXN0ZW50JywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOw
oKCQkJCX0KCQkJCQoJCQl9CgkJCQoJCQkvLyBXZSBjb3VsZG4ndCBzZXQgYSBjb21tZW50IGF0IGFsbCAtI
GVpdGhlciBubyBhdmFpbGFibGUgbWV0aG9kIG9yIGFsbCBtZXRob2RzIGZhaWxlZAoJCQlwYl9iYWNrdXBi
dWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdVbmFibGUgdG8gc2V0IGNvbW1lbnQgaW4
gZmlsZSAlMSRzOiBObyBjb21wYXRpYmxlIHppcCBtZXRob2QgZm91bmQgb3IgYWxsIG1ldGhvZHMgZmFpbG
VkIC0gbm90ZSBzdG9yZWQgaW50ZXJuYWxseSBvbmx5LicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6a
XBfZmlsZSApICk7CgoJCQkvLyBSZXR1cm4gbWVzc2FnZSBmb3IgZGlzcGxheSAtIG1heWJlIHNob3VsZCBy
ZXR1cm4gZmFsc2UgYW5kIGhhdmUgY2FsbGVyIGRpc3BsYXkgaXQncyBvd24gbWVzc2FnZT8KCQkJJG1lc3N
hZ2UgPSAiXG5cblVuYWJsZSB0byBzZXQgbm90ZSBpbiBmaWxlLlxuVGhlIG5vdGUgd2lsbCBvbmx5IGJlIH
N0b3JlZCBpbnRlcm5hbGx5IGluIHlvdXIgc2V0dGluZ3MgYW5kIG5vdCBpbiB0aGUgemlwIGZpbGUgaXRzZ
WxmLiI7CgkJCXJldHVybiAkbWVzc2FnZTsKCQkJCgkJfSAvLyBFbmQgc2V0X2NvbW1lbnQoKS4KCQkKCQkK
CQkKCQkvKglnZXRfY29tbWVudCgpCgkJICoJCgkJICoJUmV0cmlldmUgYXJjaGl2ZSBjb21tZW50LgoJCSA
qCQoJCSAqCUBwYXJhbQkJc3RyaW5nCQkkemlwX2ZpbGUJCUZpbGVuYW1lIG9mIGFyY2hpdmUgdG8gcmV0cm
lldmUgY29tbWVudCBmcm9tLgoJCSAqCUByZXR1cm4JCXN0cmluZwkJCQkJCVppcCBjb21tZW50LgoJCSAqL
woJCWZ1bmN0aW9uIGdldF9jb21tZW50KCAkemlwX2ZpbGUgKSB7CgkJCgkJCS8vIFVzZSBaaXBBcmNoaXZl
IGlmIGF2YWlsYWJsZQoJCQlpZiAoIGluX2FycmF5KCAnemlwYXJjaGl2ZScsICR0aGlzLT5femlwX21ldGh
vZHMgKSApIHsKCQkJCgkJCQkvLyBNYWtlIGRvdWJseSBzdXJlIGl0IGlzIGF2YWlsYWJsZQoJCQkJaWYgKC
BjbGFzc19leGlzdHMoICdaaXBBcmNoaXZlJywgZmFsc2UgKSApIHsKCQkJCQoJCQkJCSR6YSA9IG5ldyBaa
XBBcmNoaXZlKCk7CgkJCQkJJHJlc3VsdCA9ICR6YS0+b3BlbiggJHppcF9maWxlICk7CgkJCQkJCgkJCQkJ
Ly8gTWFrZSBzdXJlIHRoYXQgYXQgbGVhc3QgdGhlIHppcCBmaWxlIG9wZW5lZCBvawoJCQkJCWlmICggJHJ
lc3VsdCA9PT0gdHJ1ZSApIHsKCQkJCQkKCQkJCQkJLy8gR2V0IHRoZSBjb21tZW50IG9yIGZhbHNlIG9uIG
ZhaWx1cmUgZm9yIHNvbWUgcmVhc29uCgkJCQkJCSRjb21tZW50ID0gJHphLT5nZXRBcmNoaXZlQ29tbWVud
CgpOwoJCQkJCQkkemEtPmNsb3NlKCk7CgkJCQkJCQoJCQkJCQkvLyBJZiB3ZSBoYXZlIGEgY29tbWVudCAo
ZXZlbiBpZiBlbXB0eSkgdGhlbiByZXR1cm4gaXQKCQkJCQkJaWYgKCAkY29tbWVudCAhPT0gZmFsc2UgKSB
7CgkJCQkJCQoJCQkJCQkJLy8gTm90ZTogbmV3IGFyY2hpdmVzIHdpbGwgcmV0dXJuIGFuIGVtcHR5IGNvbW
1lbnQgaWYgb25lIHdhcyBub3QgYWRkZWQgYXQgY3JlYXRpb24KCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ1ppcEFyY2hpdmUgcmV0cmlldmVkIGNvbW1lbnQgaW4g
ZmlsZSAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlICkgKTsKCgkJCQkJCQkvLyB
Gb3JtYXQgaGFzIGNoYW5nZWQgYW5kIG5vIGxvbmdlciBlbmNvZGluZyBhcyBodG1sZW10aXRpZXMgd2hlbi
BzZXR0aW5nIGNvbW1lbnQKCQkJCQkJCS8vIEZvciBvbGRlciBiYWNrdXBzIG1heSBuZWVkIHRvIHJlbW92Z
SBlbmNvZGluZyAtIGFjdGlvbiBfc2hvdWxkXyBiZSBudWxsIGlmIE4vQQoJCQkJCQkJLy8gT25seSBzcGFu
bmVyIHdvdWxkIGJlIGlmIHNvbWVvbmUgaGFkIHB1dCBhbiBlbnRpdHkgaW4gdGhlaXIgY29tbWVudCBidXQ
gdGhhdCBpcwoJCQkJCQkJLy8gcmVhbGx5IGFuIG91dHNpZGVyIGFuZCBpbiBhbnkgY2FzZSB0aGUgY29ycm
VjdGlvbiBpcyBzaW1wbHkgdG8gZWRpdCBhbmQgcmVzYXZlCgkJCQkJCQkvLyBUT0RPOiBSZW1vdmUgdGhpc
yB3aGVuIG5ldyBmb3JtYXQgaGFzIGJlZW4gaW4gdXNlIGZvciBzb21lIHRpbWUKCQkJCQkJCSRjb21tZW50
ID0gaHRtbF9lbnRpdHlfZGVjb2RlKCAkY29tbWVudCApOwkJCQkKCgkJCQkJCQlyZXR1cm4gJGNvbW1lbnQ
7CgkJCQkJCQkKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCgkJCQkJCQkvLyBJZiB3ZSBmYWlsZWQgdG8gZ2V0IH
RoZSBjb21tbmVudCB0aGVuIGxvZyBpdCAoPykgYW5kIGRyb3AgdGhyb3VnaAoJCQkJCQkJcGJfYmFja3VwY
nVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnWmlwQXJjaGl2ZSBmYWlsZWQgdG8gcmV0
cmlldmUgY29tbWVudCBpbiBmaWxlICUxJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2ZpbGU
gKSApOwoKCQkJCQkJfQoKCQkJCQl9IGVsc2UgewoJCQkJCQoJCQkJCQkvLyBJZiB3ZSBjb3VsZG4ndCBvcG
VuIHRoZSB6aXAgZmlsZSB0aGVuIGxvZyBpdCAoPykgYW5kIGRyb3AgdGhyb3VnaAoJCQkJCQkkZXJyb3Jfc
3RyaW5nID0gJHRoaXMtPnppcGFyY2hpdmVfZXJyb3JfaW5mbyggJHJlc3VsdCApOwoJCQkJCQlwYl9iYWNr
dXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdaaXBBcmNoaXZlIGZhaWxlZCB0byB
vcGVuIGZpbGUgdG8gcmV0cmlldmUgY29tbWVudCBpbiBmaWxlICUxJHMgLSBFcnJvciBJbmZvOiAlMiRzJy
wnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlLCAkZXJyb3Jfc3RyaW5nICkgKTsKCgkJCQkJf
QoJCQkJCgkJCQl9IGVsc2UgewoJCQkJCgkJCQkJLy8gU29tZXRoaW5nIGZpc2h5IC0gdGhlIG1ldGhvZHMg
aW5kaWNhdGVkIHppcGFyY2hpdmUgYnV0IHdlIGNvdWxkbid0IGZpbmQgdGhlIGNsYXNzCgkJCQkJcGJfYmF
ja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnemlwYXJjaGl2ZSBpbmRpY2F0ZWQgYXMgYXZhaW
xhYmxlIG1ldGhvZCBidXQgWmlwQXJjaGl2ZSBjbGFzcyBub24tZXhpc3RlbnQnLCdpdC1sMTBuLWJhY2t1c
GJ1ZGR5JyApICk7CgoJCQkJfQoJCQkJCgkJCX0KCQkJCgkJCS8vIERyb3BwZWQgdGhyb3VnaCBiZWNhdXNl
IFppcEFyY2hpdmUgbm90IGF2YWlsYWJsZSBvciBmYWlsZWQgZm9yIHNvbWUgcmVhc29uCgkJCWlmICggaW5
fYXJyYXkoICdwY2x6aXAnLCAkdGhpcy0+X3ppcF9tZXRob2RzICkgKSB7CgkJCQoJCQkJLy8gTWFrZSBzdX
JlIHdlIGhhdmUgaXQKCQkJCWlmICggIWNsYXNzX2V4aXN0cyggJ1BjbFppcCcsIGZhbHNlICkgKSB7CgkJC
QkKCQkJCQkvLyBJdCdzIG5vdCBhbHJlYWR5IGxvYWRlZCBzbyB0cnkgYW5kIGZpbmQvbG9hZCBpdCBmcm9t
IHBvc3NpYmxlIGxvY2F0aW9ucwoJCQkJCWlmICggZmlsZV9leGlzdHMoIEFCU1BBVEggLiAnd3AtYWRtaW4
vaW5jbHVkZXMvY2xhc3MtcGNsemlwLnBocCcgKSApIHsKCQkJCQkKCQkJCQkJLy8gUnVubmluZyB1bmRlci
BXb3JkUHJlc3MKCQkJCQkJQGluY2x1ZGVfb25jZSggQUJTUEFUSCAuICd3cC1hZG1pbi9pbmNsdWRlcy9jb
GFzcy1wY2x6aXAucGhwJyApOwoJCQkJCQkKCQkJCQl9IGVsc2VpZiAoIGZpbGVfZXhpc3RzKCBwYl9iYWNr
dXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvbGliL3BjbHppcC9wY2x6aXAucGhwJyApICkgewoJCQkJCQo
JCQkJCQkvLyBSdW5uaW5nIFN0YW5kYWxvbmUgKGltcG9ydGJ1ZGR5KQoJCQkJCQlAaW5jbHVkZV9vbmNlKC
BwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvbGliL3BjbHppcC9wY2x6aXAucGhwJyApOwoJC
QkJCQkKCQkJCQl9CgkJCQkJCgkJCQl9CgkJCQkKCQkJCS8vIE1ha2Ugc3VyZSB3ZSBkaWQgbG9hZCBpdAoJ
CQkJaWYgKCBjbGFzc19leGlzdHMoICdQY2xaaXAnLCBmYWxzZSkgKSB7CgkJCQkKCQkJCQkkemEgPSBuZXc
gUGNsWmlwKCAkemlwX2ZpbGUgKTsKCQkJCQkKCQkJCQkvLyBNYWtlIHN1cmUgd2Ugb3BlbmVkIHRoZSB6aX
Agb2sgYW5kIGl0IGhhcyBwcm9wZXJ0aWVzCgkJCQkJaWYgKCAoICRwcm9wZXJ0aWVzID0gJHphLT5wcm9wZ
XJ0aWVzKCkgKSAhPT0gMCApIHsKCQkJCQkKCQkJCQkJLy8gV2UgZ290IHByb3BlcnRpZXMgc28gc2hvdWxk
IGhhdmUgYSBjb21tZW50IHRvIHJldHVybiwgZXZlbiBpZiBlbXB0eQoJCQkJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdQY2xaaXAgcmV0cmlldmVkIGNvbW1lbnQgaW4gZm
lsZSAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlICkgKTsKCQkJCQkJJGNvbW1lb
nQgPSAkcHJvcGVydGllc1sgJ2NvbW1lbnQnIF07CgoJCQkJCQkvLyBGb3JtYXQgaGFzIGNoYW5nZWQgYW5k
IG5vIGxvbmdlciBlbmNvZGluZyBhcyBodG1sZW10aXRpZXMgd2hlbiBzZXR0aW5nIGNvbW1lbnQKCQkJCQk
JLy8gRm9yIG9sZGVyIGJhY2t1cHMgbWF5IG5lZWQgdG8gcmVtb3ZlIGVuY29kaW5nIC0gYWN0aW9uIF9zaG
91bGRfIGJlIG51bGwgaWYgTi9BCgkJCQkJCS8vIE9ubHkgc3Bhbm5lciB3b3VsZCBiZSBpZiBzb21lb25lI
GhhZCBwdXQgYW4gZW50aXR5IGluIHRoZWlyIGNvbW1lbnQgYnV0IHRoYXQgaXMKCQkJCQkJLy8gcmVhbGx5
IGFuIG91dHNpZGVyIGFuZCBpbiBhbnkgY2FzZSB0aGUgY29ycmVjdGlvbiBpcyBzaW1wbHkgdG8gZWRpdCB
hbmQgcmVzYXZlCgkJCQkJCS8vIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gbmV3IGZvcm1hdCBoYXMgYmVlbi
BpbiB1c2UgZm9yIHNvbWUgdGltZQoJCQkJCQkkY29tbWVudCA9IGh0bWxfZW50aXR5X2RlY29kZSggJGNvb
W1lbnQgKTsKCQkJCQkKCQkJCQkJcmV0dXJuICRjb21tZW50OwoJCQkJCQkKCQkJCQl9IGVsc2UgewoJCQkJ
CQoJCQkJCQkvLyBJZiB3ZSBmYWlsZWQgdG8gZ2V0IHRoZSBjb21tbmVudCB0aGVuIGxvZyBpdCAoPykgYW5
kIGRyb3AgdGhyb3VnaAoJCQkJCQkkZXJyb3Jfc3RyaW5nID0gJHphLT5lcnJvckluZm8oIHRydWUgKTsKCQ
kJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnUGNsWmlwIGZha
WxlZCB0byByZXRyaWV2ZSBjb21tZW50IGluIGZpbGUgJTEkcyAtIEVycm9yIEluZm86ICUyJHMnLCdpdC1s
MTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2ZpbGUsICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJCQkKCQkJCQl
9CgkJCQkKCQkJCX0gZWxzZSB7CgkJCQkKCQkJCQkvLyBTb21ldGhpbmcgZmlzaHkgLSB0aGUgbWV0aG9kcy
BpbmRpY2F0ZWQgcGNsemlwIGJ1dCB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBjbGFzcwoJCQkJCXBiX2JhY2t1c
GJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ3BjbHppcCBpbmRpY2F0ZWQgYXMgYXZhaWxhYmxlIG1l
dGhvZCBidXQgY2xhc3MgUGNsWmlwIG5vbi1leGlzdGVudCcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTs
KCgkJCQl9CgkJCQkKCQkJfQoJCQkKCQkJLy8gV2UgY291bGRuJ3QgZ2V0IGEgY29tbWVudCBhdCBhbGwgLS
BlaXRoZXIgbm8gYXZhaWxhYmxlIG1ldGhvZCBvciBhbGwgbWV0aG9kcyBmYWlsZWQKCQkJcGJfYmFja3VwY
nVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnVW5hYmxlIHRvIGdldCBjb21tZW50OiBObyBjb21wYXRp
YmxlIHppcCBtZXRob2QgZm91bmQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQlyZXR1cm4gZmF
sc2U7CgkJCQoJCX0gLy8gRW5kIGdldF9jb21tZW50KCkuCgkJCgkJCgkJCgkJLy8gRk9SIEZVVFVSRSBVU0
U7IE5PVCBZRVQgSU1QTEVNRU5URUQuIFVzZSB0byBjaGVjayAuc3FsIGZpbGUgaXMgbm9uLWVtcHR5LgoJC
WZ1bmN0aW9uIGZpbGVfc3RhdHMoICR6aXBfZmlsZSwgJGxvY2F0ZV9maWxlLCAkbGVhdmVfb3BlbiA9IGZh
bHNlICkgewoJCQlpZiAoIGluX2FycmF5KCAnemlwYXJjaGl2ZScsICR0aGlzLT5femlwX21ldGhvZHMgKSA
pIHsKCQkJCSR0aGlzLT5femlwID0gbmV3IFppcEFyY2hpdmU7CgkJCQlpZiAoICR0aGlzLT5femlwLT5vcG
VuKCAkemlwX2ZpbGUgKSA9PT0gdHJ1ZSApIHsKC
QkJCQlpZiAoICggJHN0YXRzID0gJHRoaXMtPl96aXAtPnN0YXROYW1lKCAkbG9jYXRlX2ZpbGUgKSApID09
PSBmYWxzZSApIHsgLy8gRmlsZSBub3QgZm91bmQgaW4gemlwLgoJCQkJCQkkdGhpcy0+X3ppcC0+Y2xvc2U
oKTsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnRmlsZSBub3QgZm91bm
QgKHppcGFyY2hpdmUpIGZvciBzdGF0cycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gJGxvY
2F0ZV9maWxlICk7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQkJJHRoaXMtPl96aXAtPmNsb3Nl
KCk7CgkJCQkJcmV0dXJuICRzdGF0czsKCQkJCX0gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR
1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnWmlwQXJjaGl2ZSBmYWlsZWQgdG8gb3BlbiBmaWxlIHRvIG
NoZWNrIHN0YXRzIChsb29raW5nIGluICUxJHMpLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZ
mlsZSApICk7CgkJCQkJCgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkJCQoJCQkvLyBJZiB3ZSBt
YWRlIGl0IHRoaXMgZmFyIHRoZW4gemlwYXJjaGl2ZSBub3QgYXZhaWxhYmxlL2ZhaWxlZC4KCQkJaWYgKCB
pbl9hcnJheSggJ3BjbHppcCcsICR0aGlzLT5femlwX21ldGhvZHMgKSApIHsKCQkJCXJlcXVpcmVfb25jZS
ggQUJTUEFUSCAuICd3cC1hZG1pbi9pbmNsdWRlcy9jbGFzcy1wY2x6aXAucGhwJyApOwoJCQkJJHRoaXMtP
l96aXAgPSBuZXcgUGNsWmlwKCAkemlwX2ZpbGUgKTsKCQkJCWlmICggKCAkZmlsZV9saXN0ID0gJHRoaXMt
Pl96aXAtPmxpc3RDb250ZW50KCkgKSA9PSAwICkgeyAvLyBJZiB6ZXJvLCB6aXAgaXMgY29ycnVwdCBvciB
lbXB0eS4KCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICR0aGlzLT5femlwLT5lcn
JvckluZm8oIHRydWUgKSApOwoJCQkJfSBlbHNlIHsKCQkJCQlmb3JlYWNoKCAkZmlsZV9saXN0IGFzICRma
WxlICkgewoJCQkJCQlpZiAoICRmaWxlWydmaWxlbmFtZSddID09ICRsb2NhdGVfZmlsZSApIHsgLy8gRm91
bmQgZmlsZS4KCQkJCQkJCXJldHVybiB0cnVlOwoJCQkJCQl9CgkJCQkJfQoJCQkJCXBiX2JhY2t1cGJ1ZGR
5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ0ZpbGUgbm90IGZvdW5kIChwY2x6aXApJywnaXQtbDEwbi1iYW
NrdXBidWRkeScgKSAuICc6ICcgLiAkbG9jYXRlX2ZpbGUgKTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9C
gkJCX0gZWxzZSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdVbmFibGUg
dG8gY2hlY2sgaWYgZmlsZSBleGlzdHM6IE5vIGNvbXBhdGlibGUgemlwIG1ldGhvZCBmb3VuZC4nLCdpdC1
sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJCgkJCgkJCgkJLy
oJZ2V0X3ppcF9tZXRob2RzKCkKCQkgKgkKCQkgKglHZXQgYW4gYXJyYXkgb2YgdGhlIHppcCBtZXRob2RzL
iBVc2VmdWwgZm9yIHRyYW5zaWVudCBjYWNoaW5nIGZvciBjb25zdHJ1Y3Rvci4KCQkgKgkKCQkgKglAcmV0
dXJuCQlhcnJheQkJQXJyYXkgb2YgbWV0aG9kcy4KCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0X3ppcF9
tZXRob2RzKCkgewoJCQkkdGhpcy0+X3ppcF9tZXRob2RzOwoJCX0gLy8gRW5kIGdldF96aXBfbWV0aG9kcy
gpOwoJCQoJCQoJCQoJCS8qKgoJCSAqCWFkZF9kaXJlY3RvcnlfdG9femlwKCkKCQkgKgoJCSAqCUFkZHMgY
SBkaXJlY3RvcnkgdG8gYSBuZXcgb3IgZXhpc3RpbmcgKFRPRE86IG5vdCB5ZXQgYXZhaWxhYmxlKSBaSVAg
ZmlsZS4KCQkgKgoJCSAqCSR6aXBfZmlsZQkJCQkJc3RyaW5nCQkJCQkJRnVsbCBwYXRoICYgZmlsZW5hbWU
gb2YgWklQIGZpbGUgdG8gY3JlYXRlLgoJCSAqCSRhZGRfZGlyZWN0b3J5CQkJCXN0cmluZwkJCQkJCUZ1bG
wgZGlyZWN0b3J5IHRvIGFkZCB0byB6aXAgZmlsZS4KCQkgKgkkY29tcHJlc3Npb24JCQkJYm9vbGVhbgkJC
QkJCVRydWUgdG8gZW5hYmxlIFpJUCBjb21wcmVzc2lvbiwKCQkgKgkJCQkJCQkJCQkJCQkJCShpZiBwb3Nz
aWJsZSB3aXRoIGF2YWlsYWJsZSB6aXAgbWV0aG9kcykKCQkgKgkkZXhjbHVkZXMJCQkJCWFycmF5KHN0cml
uZ3MpCQkJCUFycmF5IG9mIHN0cmluZ3Mgb2YgcGF0aHMvZmlsZXMgdG8gZXhjbHVkZSBmcm9tIHppcHBpbm
csCgkJICoJCQkJCQkJCQkJCQkJCQkoaWYgcG9zc2libGUgd2l0aCBhdmFpbGFibGUgemlwIG1ldGhvZHMpL
goJCSAqCSR0ZW1wb3JhcnlfemlwX2RpcmVjdG9yeQlzdHJpbmcJCQkJCQlPcHRpb25hbC4gRnVsbCBkaXJl
Y3RvcnkgcGF0aCB0byBkaXJlY3RvcnkgdG8gdGVtcG9yYXJpbHkgcGxhY2UgWklQCgkJICoJCQkJCQkJCQk
JCQkJCQlmaWxlIHdoaWxlIGNyZWF0aW5nLiBVc2VzIHNhbWUgZGlyZWN0b3J5IGlmIG9taXR0ZWQuCgkJIC
oJJGZvcmNlX2NvbXBhdGliaWxpdHlfbW9kZQlib29sZWFuCQkJCQkJVHJ1ZTogb25seSB1c2UgUENMWmlwL
iBGYWxzZTogdHJ5IGV4ZWMgZmlyc3QgaWYgYXZhaWxhYmxlLAoJCSAqCQkJCQkJCQkJCQkJCQkJYW5kIGZh
bGxiYWNrIHRvIGxlc3NlciBtZXRob2RzIGFzIHJlcXVpcmVkLgoJCSAqCgkJICoJQHJldHVybgkJCQkJCQk
JCQkJCQl0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQoJCSAqCgkJICovCgkJZnVuY3Rpb24gYW
RkX2RpcmVjdG9yeV90b196aXAoICR6aXBfZmlsZSwgJGFkZF9kaXJlY3RvcnksICRjb21wcmVzc2lvbiwgJ
GV4Y2x1ZGVzID0gYXJyYXkoKSwgJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ID0gJycsICRmb3JjZV9jb21w
YXRpYmlsaXR5X21vZGUgPSBmYWxzZSApIHsKCQkJaWYgKCAkZm9yY2VfY29tcGF0aWJpbGl0eV9tb2RlID0
9PSB0cnVlICkgewoJCQkJJHppcF9tZXRob2RzID0gYXJyYXkoICdwY2x6aXAnICk7CgkJCQlwYl9iYWNrdX
BidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsIF9fKCdGb3JjZWQgY29tcGF0aWJpbGl0eSBtb2RlIChQQ0xaa
XApIGJhc2VkIG9uIHNldHRpbmdzLiBUaGlzIGlzIHNsb3dlciBhbmQgbGVzcyByZWxpYWJsZS4nLCdpdC1s
MTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCX0gZWxzZSB7CgkJCQkkemlwX21ldGhvZHMgPSAkdGhpcy0+X3p
pcF9tZXRob2RzOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnVXNpbmcgYW
xsIGF2YWlsYWJsZSB6aXAgbWV0aG9kcyBpbiBwcmVmZXJyZWQgb3JkZXIuJywnaXQtbDEwbi1iYWNrdXBid
WRkeScgKSApOwoJCQl9CgkJCQoJCQkkYXBwZW5kID0gZmFsc2U7IC8vIFBvc3NpYmxlIGZ1dHVyZSBvcHRp
b24gdG8gYWxsb3cgYXBwZW5kaW5nIGlmIGZpbGUgZXhpc3RzLgoJCQkKCQkJLy8gTm9ybWFsaXplICR0ZW1
wb3JhcnlfemlwX2RpcmVjdG9yeSB0byBmb3JtYXQ6IC94eHgveXl5L3p6ei8uCgkJCSR0ZW1wb3Jhcnlfem
lwX2RpcmVjdG9yeSA9IHJ0cmltKCAkdGVtcG9yYXJ5X3ppcF9kaXJlY3RvcnksICcvXFwnICkgLiAnLyc7C
gkJCQoJCQlpZiAoICFlbXB0eSggJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ICkgKSB7CgkJCQlpZiAoICFm
aWxlX2V4aXN0cyggJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ICkgKSB7IC8vIENyZWF0ZSB0ZW1wIGRpciB
pZiBpdCBkb2VzIG5vdCBleGlzdC4KCQkJCQlta2RpciggJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ICk7Cg
kJCQl9CgkJCX0KCQkJCgkJCWlmICggaXNfYXJyYXkoICRleGNsdWRlcyApICkgewoJCQkJJGV4Y2x1ZGVzX
3RleHQgPSBpbXBsb2RlKCAnLCcsICRleGNsdWRlcyApOwoJCQl9IGVsc2UgewoJCQkJJGV4Y2x1ZGVzX3Rl
eHQgPSAnKGluIGZpbGU6IGAnIC4gJGV4Y2x1ZGVzIC4gJ2ApJzsKCQkJfQoJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdDcmVhdGluZyBaSVAgZmlsZScsJ2l0LWwxMG4tYmFja3VwYnVkZH
knICkgLiAnIGAnIC4gJHppcF9maWxlIC4gJ2AuICcgLiBfXygnQWRkaW5nIGRpcmVjdG9yeScsJ2l0LWwxM
G4tYmFja3VwYnVkZHknICkgLiAnIGAnIC4gJGFkZF9kaXJlY3RvcnkgLiAnYC4gJyAuIF9fKCdDb21wcmVz
c2lvbicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gJGNvbXByZXNzaW9uIC4gJzsgJyAuIF9
fKCdFeGNsdWRlcycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gJGV4Y2x1ZGVzX3RleHQgKT
sKCQkJdW5zZXQoICRleGNsdWRlc190ZXh0ICk7CgkJCQoJCQlpZiAoIGluX2FycmF5KCAnZXhlYycsICR6a
XBfbWV0aG9kcyApICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnVXNp
bmcgZXhlYygpIG1ldGhvZCBmb3IgWklQLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQoJCQk
JJGNvbW1hbmQgPSAnemlwIC1xIC1yJzsKCQkJCQoJCQkJaWYgKCAkY29tcHJlc3Npb24gIT09IHRydWUgKS
B7CgkJCQkJJGNvbW1hbmQgLj0gJyAtMCc7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpb
HMnLCBfXygnRXhlYyBjb21wcmVzc2lvbiBkaXNhYmxlZCBiYXNlZCBvbiBzZXR0aW5ncy4nLCdpdC1sMTBu
LWJhY2t1cGJ1ZGR5JyApICk7CgkJCQl9CgkJCQlpZiAoIGZpbGVfZXhpc3RzKCAkemlwX2ZpbGUgKSApIHs
KCQkJCQlpZiAoICRhcHBlbmQgPT09IHRydWUgKSB7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoIC
dkZXRhaWxzJywgX18oJ1pJUCBmaWxlIGV4aXN0cy4gQXBwZW5kaW5nIGJhc2VkIG9uIG9wdGlvbnMuJywna
XQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQkkY29tbWFuZCAuPSAnIC1nJzsKCQkJCQl9IGVsc2Ug
ewoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaSVAgZmlsZSBleGlzdHM
uIERlbGV0aW5nICYgd3JpdGluZyBiYXNlZCBvbiBvcHRpb25zLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknIC
kgKTsKCQkJCQkJdW5saW5rKCAkemlwX2ZpbGUgKTsKCQkJCQl9CgkJCQl9CgkJCQkKCQkJCS8vJGNvbW1hb
mQgLj0gIiAtciI7CgkJCQkKCQkJCS8vIFNldCB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIFpJUCB3
aGlsZSBpdCdzIGJlaW5nIGdlbmVyYXRlZC4KCQkJCWlmICggIWVtcHR5KCAkdGVtcG9yYXJ5X3ppcF9kaXJ
lY3RvcnkgKSApIHsKCQkJCQkkY29tbWFuZCAuPSAiIC1iICd7JHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5fS
ciOwoJCQkJfQoJCQkJCgkJCQkkY29tbWFuZCAuPSAiICd7JHppcF9maWxlfScgLiI7CgkJCQkvLyAtaSAnK
iciOyAvLyBOb3QgbmVlZGVkLiBaaXAgZGVmYXVsdHMgdG8gZG9pbmcgdGhpcy4gUmVtb3ZlZCBKdWx5IDEw
LCAyMDEyIGZvciB2My4wLjQxLgoJCQkJCgkJCQkJCQkJCgkJCQkvLyBIYW5kbGUgZXhjbHVzaW9ucyBieSB
wbGFjaW5nIHRoZW0gaW4gYW4gZXhjbHVzaW9uIHRleHQgZmlsZS4KCQkJCSRleGNsdXNpb25fZmlsZSA9IC
R0ZW1wb3JhcnlfemlwX2RpcmVjdG9yeSAuICdleGNsdXNpb25zLnR4dCc7CgkJCQkkdGhpcy0+X3JlbmRlc
l9leGNsdXNpb25zX2ZpbGUoICRleGNsdXNpb25fZmlsZSwgJGV4Y2x1ZGVzLCAkYWRkX2RpcmVjdG9yeSAp
OwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnVXNpbmcgZXhjbHVzaW9uIGZpbGU
gYCcgLiAkZXhjbHVzaW9uX2ZpbGUgLiAnYC4nICk7CgkJCQkkY29tbWFuZCAuPSAnIC14QCcgLiAiJ3skZX
hjbHVzaW9uX2ZpbGV9JyI7CgkJCQkKCQkJCQoJCQkJJGNvbW1hbmQgLj0gJyAyPiYxJzsgLy8gIDI+JjEgc
mVkaXJlY3RzIFNUREVSUiB0byBTVERPVVQKCQkJCQoJCQkJJHdvcmtpbmdfZGlyID0gZ2V0Y3dkKCk7CgkJ
CQljaGRpciggJGFkZF9kaXJlY3RvcnkgKTsgLy8gQ2hhbmdlIGRpcmVjdG9yeSB0byB0aGUgcGF0aCB3ZSB
hcmUgYWRkaW5nLgoJCQkJCgkJCQlpZiAoICR0aGlzLT5fZXhlY3BhdGggIT0gJycgKSB7CgkJCQkJcGJfYm
Fja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ1VzaW5nIGN1c3RvbSBleGVjKCkgcGF0aDogJ
ywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkdGhpcy0+X2V4ZWNwYXRoICk7CgkJCQl9CgkJCQkKCQkJ
CS8vIFJ1biBaSVAgY29tbWFuZC4KCQkJCWlmICggc3RyaXN0ciggUEhQX09TLCAnV0lOJyApICYmICFzdHJ
pc3RyKCBQSFBfT1MsICdEQVJXSU4nICkgKSB7IC8vIFJ1bm5pbmcgV2luZG93cy4gKG5vdCBkYXJ3aW4pCg
kJCQkJaWYgKCBmaWxlX2V4aXN0cyggQUJTUEFUSCAuICd6aXAuZXhlJyApICkgewoJCQkJCQlwYl9iYWNrd
XBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsIF9fKCdBdHRlbXB0aW5nIHRvIHVzZSBwcm92aWRlZCBXaW5k
b3dzIHppcC5leGUuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQkkY29tbWFuZCA9IHN0cl9
yZXBsYWNlKCAnXCcnLCAnIicsICRjb21tYW5kICk7IC8vIFdpbmRvd3Mgd2FudHMgZG91YmxlIHF1b3Rlcw
oJCQkJCQkkY29tbWFuZCA9IEFCU1BBVEggLiAkY29tbWFuZDsKCQkJCQl9CgkJCQkJCgkJCQkJcGJfYmFja
3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnRXhlYyBjb21tYW5kIChXaW5kb3dzKScsJ2l0LWwx
MG4tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gJGNvbW1hbmQgKTsKCQkJCQlsaXN0KCAkZXhlY19vdXRwdXQ
sICRleGVjX2V4aXRfY29kZSApID0gJHRoaXMtPl9jb21tYW5kYnVkZHktPmV4ZWN1dGUoICR0aGlzLT5fZX
hlY3BhdGggLiAkY29tbWFuZCApOwoJCQkJfSBlbHNlIHsgLy8gQWxsb3cgZXhlYyB3YXJuaW5ncyBub3Qga
W4gV2luZG93cwoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ0V4ZWMgY29t
bWFuZCAoTGludXgpJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICc6ICcgLiAkY29tbWFuZCApOwoJCQk
JCWxpc3QoICRleGVjX291dHB1dCwgJGV4ZWNfZXhpdF9jb2RlICkgPSAkdGhpcy0+X2NvbW1hbmRidWRkeS
0+ZXhlY3V0ZSggJHRoaXMtPl9leGVjcGF0aCAuICRjb21tYW5kICk7CgkJCQl9CgkJCQkKCQkJCQoJCQkJL
y8gQ2xlYW51cCBleGNsdXNpb25zIGZpbGUgaWYgaXQgZXhpc3RzLgoJCQkJaWYgKCBmaWxlX2V4aXN0cygg
JHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5IC4gJ2V4Y2x1c2lvbnMudHh0JyApICkgewoJCQkJCUB1bmxpbms
oICR0ZW1wb3JhcnlfemlwX2RpcmVjdG9yeSAuICdleGNsdXNpb25zLnR4dCcgKTsKCQkJCX0KCQkJCQoJCQ
kJCgkJCQlzbGVlcCggMSApOwoJCQkJCgkJCQkvLyBXZSBtYXkgbm90IGhhdmUgYSB6aXAgZmlsZSBvciB3Z
SBtYXkgaGF2ZSBvbmUgYnV0IHRoZXJlIHdhcyBlcnJvci93YXJuaW5nIHdoZW4gcHJvZHVjaW5nIGl0CgkJ
CQkvLyBOb3RlOiBJbiBldmVudCBvZiB3YXJuaW5ncyB3ZSBjb3VsZCBzdGlsbCBnZXQgYSB6aXAgZmlsZSB
pZiB0aGUgc2NyaXB0IHRlcm1pbmF0ZXMgd2hpbHN0IHppcCBjb21tYW5kIHN0aWxsIHJ1bm5pbmcKCQkJCQ
oJCQkJaWYgKCAoICEgZmlsZV9leGlzdHMoICR6aXBfZmlsZSApICkgfHwgKCAkZXhlY19leGl0X2NvZGUgI
T0gMCApICkgewoJCQkJCQoJCQkJCS8vIExvZyB0
aGUgZmFpbHVyZQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgX18oICdGdWxsIHN
wZWVkIG1vZGUgZGlkIG5vdCBjb21wbGV0ZS4gVHJ5aW5nIGNvbXBhdGliaWxpdHkgbW9kZSBuZXh0LicsJ2
l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkKCQkJCQkvLyBDaGVjayB3aGV0aGVyIGEgemlwIGZpb
GUgd2FzIGFjdHVhbGx5IHByb2R1Y2VkIGluIHRoZSBiYWNrdXBzIGRpcmVjdG9yeSAoYXMgb3Bwb3NlZCB0
byB0aGUgdGVtcCB6aXAgZGlyZWN0b3J5KQoJCQkJCWlmICggISBmaWxlX2V4aXN0cyggJHppcF9maWxlICk
gKSB7CgkJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oICdFeGVjIG
NvbW1hbmQgcmFuIGJ1dCBaSVAgZmlsZSBkaWQgbm90IGV4aXN0LicsJ2l0LWwxMG4tYmFja3VwYnVkZHknI
CkgKTsKCQkJCQkJCgkJCQkJfQoJCQkJCQoJCQkJCS8vIFdlIGRpZCBnZXQgYSB6aXAgZmlsZSBidXQgY2Fu
bm90IHRydWVzdCBpdCBzbyBtdXN0IGRlbGV0ZSBpdAoJCQkJCWlmICggZmlsZV9leGlzdHMoICR6aXBfZml
sZSApICkgewoJCQkJCQoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCAnQ2
xlYW5pbmcgdXAgZGFtYWdlZCBaSVAgZmlsZS4gSXNzdWUgIzM0ODkzMjg5OTguJywnaXQtbDEwbi1iYWNrd
XBidWRkeScgKSApOwoJCQkJCQl1bmxpbmsoICR6aXBfZmlsZSApOwoJCQkJCQkKCQkJCQl9CgkJCQkJCgkJ
CQkJLy8gTmVlZCB0byBjbGVhbiB1cCBhbnkgdGVtcG9yYXJ5IHppcCBkaXJlY3RvcnkKCQkJCQlpZiAoIGZ
pbGVfZXhpc3RzKCAkdGVtcG9yYXJ5X3ppcF9kaXJlY3RvcnkgKSApIHsKCQkJCQkKCQkJCQkJcGJfYmFja3
VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ0NsZWFuaW5nIHVwIGluY29tcGxldGUgdGVtcG9yY
XJ5IFpJUCBmaWxlLiBJc3N1ZSAjMzQzODk0LicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkJ
aWYgKCAhKCAkdGhpcy0+ZGVsZXRlX2RpcmVjdG9yeV9yZWN1cnNpdmUoICR0ZW1wb3JhcnlfemlwX2RpcmV
jdG9yeSApICkgKSB7CgkJCQkJCQoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLC
BfXyggJ1VuYWJsZSB0byBkZWxldGUgdGVtcG9yYXJ5IHppcCBkaXJlY3RvcnknLCdpdC1sMTBuLWJhY2t1c
GJ1ZGR5JyApICk7CgkJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCX0gZWxzZSB7CgkJ
CQkKCQkJCQkvLyBXZSBnb3QgYSB6aXAgZmlsZSBhbmQgbm8gZXJyb3JzL3dhcm5pbmdzIHNvIGdvb2QgdG8
gZ28KCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsIF9fKCAnRnVsbCBzcGVlZCBtb2
RlIGNvbXBsZXRlZCAmIGdlbmVyYXRlZCBaSVAgZmlsZS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7C
gkJCQkJaWYgKCAhKCAkdGhpcy0+ZGVsZXRlX2RpcmVjdG9yeV9yZWN1cnNpdmUoICR0ZW1wb3Jhcnlfemlw
X2RpcmVjdG9yeSApICkgKSB7CgkJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWx
zJywgX18oICdVbmFibGUgdG8gZGVsZXRlIHRlbXBvcmFyeSB6aXAgZGlyZWN0b3J5JywnaXQtbDEwbi1iYW
NrdXBidWRkeScgKSApOwoJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQkKCQkJC
X0KCQkJCQoJCQkJY2hkaXIoICR3b3JraW5nX2RpciApOwoJCQkJCgkJCQl1bnNldCggJGNvbW1hbmQgKTsK
CQkJCXVuc2V0KCAkZXhjbHVkZSApOwoJCQkJdW5zZXQoICRleGNsdWRpbmdfYWRkaXRpb25hbCApOwoJCQk
JCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdFeGVjIGNvbW1hbmQgZGlkIG
5vdCBzdWNjZWVkLiBGYWxsaW5nIGJhY2suJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCgkJC
X0KCQkJCgkJCWlmICggaW5fYXJyYXkoICdwY2x6aXAnLCAkemlwX21ldGhvZHMgKSApIHsKCQkJCXBiX2Jh
Y2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgX18oJ1VzaW5nIENvbXBhdGliaWxpdHkgTW9kZSBmb3I
gWklQLiBUaGlzIGlzIHNsb3dlciBhbmQgbGVzcyByZWxpYWJsZS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5Jy
ApICk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsIF9fKCdJZiB5b3VyIGJhY2t1c
CB0aW1lcyBvdXQgaW4gY29tcGF0aWJpbGl0eSBtb2RlIHRyeSBkaXNhYmxlZCB6aXAgY29tcHJlc3Npb24u
JywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3N
hZ2UnLCBfXygnV0FSTklORzogRGlyZWN0b3J5L2ZpbGUgZXhjbHVzaW9uIHVuYXZhaWxhYmxlIGluIENvbX
BhdGliaWxpdHkgTW9kZS4gRXZlbiBleGlzdGluZyBvbGQgYmFja3VwcyB3aWxsIGJlIGJhY2tlZCB1cC4nL
CdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkKCQkJCXJlcXVpcmVfb25jZSggQUJTUEFUSCAuICd3
cC1hZG1pbi9pbmNsdWRlcy9jbGFzcy1wY2x6aXAucGhwJyApOwoJCQkJCgkJCQkvLyBEZXRlcm1pbmUgeml
wIGZpbGUgbmFtZSAvIHBhdGguCgkJCQlpZiAoICFlbXB0eSggJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5IC
kgKSB7CgkJCQkJJHBjbHppcF9maWxlID0gJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5IC4gYmFzZW5hbWUoI
CR6aXBfZmlsZSApOwoJCQkJfSBlbHNlIHsKCQkJCQkkcGNsemlwX2ZpbGUgPSAkemlwX2ZpbGU7CgkJCQl9
CgkJCQkKCQkJCWlmICggIWZpbGVfZXhpc3RzKCBkaXJuYW1lKCAkcGNsemlwX2ZpbGUgKSApICkgewoJCQk
JCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0NyZWF0aW5nIFBDTFppcCBmaWxlIGRpcm
VjdG9yeSBgJyAuIGRpcm5hbWUoICRwY2x6aXBfZmlsZSApIC4gJ2AuJyApOwoJCQkJCW1rZGlyKCBkaXJuY
W1lKCAkcGNsemlwX2ZpbGUgKSApOwoJCQkJfQoJCQkJCgkJCQkvLyBJbnN0YW50aWF0ZSBQY2xaaXAgT2Jq
ZWN0LgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUGNsWmlwIHppcCBmaWxlbmF
tZTogYCcgLiAkcGNsemlwX2ZpbGUgLiAnYC4nICk7CgkJCQkkcGNsemlwID0gbmV3IFBjbFppcCggJHBjbH
ppcF9maWxlICk7CgkJCQkKCQkJCWlmICggJGNvbXByZXNzaW9uICE9PSB0cnVlICkgewoJCQkJCXBiX2JhY
2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1BDTFppcCBjb21wcmVzc2lvbiBkaXNhYmxlZCBi
YXNlZCBvbiBzZXR0aW5ncy4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJJGFyZ3VtZW50cyA
9IGFycmF5KCAkYWRkX2RpcmVjdG9yeSwgUENMWklQX09QVF9OT19DT01QUkVTU0lPTiwgUENMWklQX09QVF
9SRU1PVkVfUEFUSCwgJGFkZF9kaXJlY3RvcnkgKTsKCQkJCX0gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZ
Hk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnUENMWmlwIGNvbXByZXNzaW9uIGVuYWJsZWQgYmFzZWQgb24g
c2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCSRhcmd1bWVudHMgPSBhcnJheSg
gJGFkZF9kaXJlY3RvcnksIFBDTFpJUF9PUFRfUkVNT1ZFX1BBVEgsICRhZGRfZGlyZWN0b3J5ICk7CgkJCQ
l9CgkJCQkKCQkJCSRtb2RlID0gJ2NyZWF0ZSc7CgkJCQlpZiAoIGZpbGVfZXhpc3RzKCAkemlwX2ZpbGUgK
SAmJiAoICRhcHBlbmQgPT09IHRydWUgKSApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0
YWlscycsIF9fKCdaSVAgZmlsZSBleGlzdHMuIEFwcGVuZGluZyBiYXNlZCBvbiBvcHRpb25zLicsJ2l0LWw
xMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkkbW9kZSA9ICdhcHBlbmQnOwoJCQkJfQoJCQkJCgkJCQlpZi
AoICRtb2RlID09ICdhcHBlbmQnICkgewoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJ
ywgX18oJ0FwcGVuZGluZyB0byBaSVAgZmlsZSB2aWEgUENMWmlwLicsJ2l0LWwxMG4tYmFja3VwYnVkZHkn
ICkgKTsKCQkJCQkkcmV0dmFsID0gY2FsbF91c2VyX2Z1bmNfYXJyYXkoIGFycmF5KCAmJHBjbHppcCwgJ2F
kZCcgKSwgJGFyZ3VtZW50cyApOwoJCQkJfSBlbHNlIHsgLy8gY3JlYXRlCgkJCQkJcGJfYmFja3VwYnVkZH
k6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ0NyZWF0aW5nIFpJUCBmaWxlIHZpYSBQQ0xaaXAnLCdpdC1sM
TBuLWJhY2t1cGJ1ZGR5JyApIC4gJzonIC4gaW1wbG9kZSggJzsnLCAkYXJndW1lbnRzICkgKTsKCQkJCQkv
L2Vycm9yX2xvZyggJ3BjbHppcCBhcmdzOiAnIC4gcHJpbnRfciggJGFyZ3VtZW50cywgdHJ1ZSApIC4gIlx
uIiApOwoJCQkJCSRyZXR2YWwgPSBjYWxsX3VzZXJfZnVuY19hcnJheSggYXJyYXkoICYkcGNsemlwLCAnY3
JlYXRlJyApLCAkYXJndW1lbnRzICk7CgkJCQl9CgkJCQkKCQkJCS8vIE1vdmUgdGhlIHppcCBmaWxlIGlmI
HdlIHdlcmUgY3JlYXRpbmcgaXQgaW4gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5CgkJCQlpZiAoICFlbXB0eSgg
JHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ICkgKSB7CgkJCQkJaWYgKCBmaWxlX2V4aXN0cyggJHRlbXBvcmF
yeV96aXBfZGlyZWN0b3J5IC4gYmFzZW5hbWUoICR6aXBfZmlsZSApICkgKSB7CgkJCQkJCXBiX2JhY2t1cG
J1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1JlbmFtaW5nIFBDTFppcCBGaWxlLi4uJywnaXQtbDEwb
i1iYWNrdXBidWRkeScgKSApOwoJCQkJCQlyZW5hbWUoICR0ZW1wb3JhcnlfemlwX2RpcmVjdG9yeSAuIGJh
c2VuYW1lKCAkemlwX2ZpbGUgKSwgJHppcF9maWxlICk7CgkJCQkJCWlmICggZmlsZV9leGlzdHMoICR6aXB
fZmlsZSApICkgewoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnUmVuYW
1pbmcgUENMWmlwIHN1Y2Nlc3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQl9IGVsc2Uge
woJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnUmVuYW1pbmcgUENMWmlw
IGZhaWx1cmUuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQl9CgkJCQkJfSBlbHNlIHsKCQk
JCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnVGVtcG9yYXJ5IFBDTFppcCBhcm
NoaXZlIGZpbGUgZXhwZWN0ZWQgYnV0IG5vdCBmb3VuZC4gUGxlYXNlIHZlcmlmeSBwZXJtaXNzaW9ucyBvb
iB0aGUgWklQIGFyY2hpdmUgZGlyZWN0b3J5LicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQl9
CgkJCQl9CgkJCQkKCQkJCS8vIFdvcmsgb3V0IHdoZXRoZXIgd2UgaGF2ZSBhIHByb2JsZW0gb3Igbm90Cgk
JCQlpZiAoIGlzX2FycmF5KCAkcmV0dmFsICkgKSB7CgkJCQkKCQkJCQkvLyBJdCdzIGFuIGFycmF5IHNvIG
EgZ29vZCByZXN1bHQKCQkJCQkkZXhpdGNvZGUgPSAwOwoJCQkJCgkJCQl9IGVsc2UgewoJCQkJCgkJCQkJL
y8gTm90IGFuIGFycmF5IHNvIGEgYmFkIGVycm9yIGNvZGUKCQkJCQkkZXhpdGNvZGUgPSAkcGNsemlwLT5l
cnJvckNvZGUoKTsKCQkJCQoJCQkJfQoJCQkJCgkJCQkvLyBDb252ZW5pZW5jZSBmb3IgaGFuZGxpbmcgZGl
mZmVyZW50IHNjYW5hcmlvcwoJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCgkJCQkvLyBTZWUgaWYgd2UgY2
FuIGZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5lZCAtIG5vdGUgdGhhdCAkZXhpdGNvZGUgY291bGQgYmUgbm9uL
Xplcm8gZm9yIGEgd2FybmluZyBvciBlcnJvcgoJCQkJLy8gVGhlcmUgbWF5IGJlIG5vIHppcCBmaWxlIGF0
IGFsbCBpZiB0aGVyZSB3YXMgYSBwcm9ibGVtIGNyZWF0aW5nIGl0IG9yIGl0IG1heSBiZSBsZWZ0IGluIHR
oZSB0ZW1wCgkJCQkvLyBkaXJlY3RvcnkgaWYgaXQgY291bGRuJ3QgYmUgbW92ZWQKCQkJCWlmICggKCAhIG
ZpbGVfZXhpc3RzKCAkemlwX2ZpbGUgKSApIHx8ICggJGV4aXRjb2RlICE9IDAgKSApIHsKCQkJCQoJCQkJC
S8vIElmIHdlIGhhZCBhIG5vbi16ZXJvIGV4aXQgY29kZSB0aGVuIHNob3VsZCByZXBvcnQgaXQgKGZpbGUg
bWF5IG9yIG1heSBub3QgYmUgY3JlYXRlZCkKCQkJCQlpZiAoICRleGl0Y29kZSAhPSAwICkgewoJCQkJCQo
JCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaaXAgcHJvY2VzcyBleGl0IG
NvZGU6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkZXhpdGNvZGUgKTsKCQkJCQkJCgkJCQkJfQoJC
gkJCQkJLy8gUmVwb3J0IHdoZXRoZXIgb3Igbm90IHRoZSB6aXAgZmlsZSB3YXMgY3JlYXRlZAkJCQkKCQkJ
CQlpZiAoICEgZmlsZV9leGlzdHMoICR6aXBfZmlsZSApICkgewoJCQkJCQoJCQkJCQlwYl9iYWNrdXBidWR
keTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCAnWmlwIEFyY2hpdmUgZmlsZSBub3QgY3JlYXRlZCAtIGNoZW
NrIHByb2Nlc3MgZXhpdCBjb2RlLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkJCgkJCQkJf
SBlbHNlIHsKCQkJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oICda
aXAgQXJjaGl2ZSBmaWxlIGNyZWF0ZWQgYnV0IHdpbGwgYmUgcmVtb3ZlZCAtIGNoZWNrIHByb2Nlc3MgZXh
pdCBjb2RlLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQoJCQkJCQlAdW5saW5rKCAkemlwX2ZpbG
UgKTsKCQkJCQkJCgkJCQkJfQoJCQkJCQoJCQkJCS8vIFB1dCB0aGUgZXJyb3IgaW5mb3JtYXRpb24gaW50b
yBhbiBhcnJheSBmb3IgY29uc2lzdGVuY3kKCQkJCQkkemlwX291dHB1dFtdID0gJHBjbHppcC0+ZXJyb3JJ
bmZvKCB0cnVlICk7CgkJCQkJCgkJCQkJLy8gTm93IHdlIGRvbid0IG1vdmUgaXQgKGJlY2F1c2UgZWl0aGV
yIGl0IGRvZXNuJ3QgZXhpc3Qgb3IgbWF5IGJlIGluY29tcGxldGUpIGJ1dCB3ZSdsbCBzaG93IGFueSBlcn
Jvci93YXJ0bmluZyBvdXRwdXQKCQkJCQlpZiAoICFlbXB0eSggJHppcF9vdXRwdXQgKSApIHsKCQkJCQkKC
QkJCQkJLy8gQXNzdW1lIHdlIGRvbid0IGhhdmUgYSBsb3Qgb2YgbGluZXMgZm9yIG5vdyAtIGNvdWxkIGJl
IHJpc2t5IGFzc3VtcHRpb24hCgkJCQkJCWZvcmVhY2ggKCAkemlwX291dHB1dCBhcyAkbGluZSApIHsKCQk
JCQkJCgkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCAnWmlwIHByb2Nlc3
MgcmVwb3J0ZWQ6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkbGluZSApOwoJCQkJCQkKCQkJCQkJf
QoJCQkJCQoJCQkJCQkvLyBFeHRyYSBkZXRhaWxzIGZvciBwYXJ0aWN1bGFyIGVycm9yCgkJCQkJCWlmICgg
ZmFsc2UgIT09IHN0cnBvcyggJHBjbHppcC0+ZXJyb3JJbmZvKCB0cnVlICksICdQQ0xaSVBfRVJSX1JFQUR
fT1BFTl9GQUlMJyApICkgewoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXy
ggJ1BDTFpJUF9FUlJfUkVBRF9PUEVOX0ZBSUwgZGV0YWlsczogVGhpcyBlcnJvciBpbmRpY2F0ZXMgdGhhd
CBmb3BlbiBmYWlsZWQgKHJldHVybmVkIGZhbHNlKSB3aGVuIHRyeWluZyB0byBvcGVuIHRoZSBmaWxlIGlu
IHRoZSBtb2RlIHNwZWNpZmllZC4gVGhpcyBpcyB
hbG1vc3QgYWx3YXlzIGR1ZSB0byBwZXJtaXNzaW9ucy4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOw
oJCQkJCQl9CgkJCQkJCQkJCQkKCQkJCQl9CgkJCQkJCgkJCQkJLy8gT25lIHdheSBvciBhbm90aGVyIHdlI
GZhaWxlZAoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkKCQkJCX0gZWxzZSB7CgkJCQkKCQkJCQkvLyBH
b3QgZmlsZSB3aXRoIG5vIGVycm9yIG9yIHdhcm5pbmdzIGF0IGFsbCBzbyBpdCBzaG91bGQgYmUgZ29vZCB
0byBnbwoJCQkJCQoJCQkJCWlmICggZmlsZV9leGlzdHMoICR6aXBfZmlsZSApICkgewoJCQkJCQoJCQkJCQ
lwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaaXAgQXJjaGl2ZSBmaWxlIG1vdmVkI
HRvIGxvY2FsIGFyY2hpdmUgZGlyZWN0b3J5LicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkJ
cGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCBfXyggJ1ppcCBBcmNoaXZlIGZpbGUgc3VjY2V
zc2Z1bGx5IGNyZWF0ZWQgd2l0aCBubyBlcnJvcnMgb3Igd2FybmluZ3MuJywnaXQtbDEwbi1iYWNrdXBidW
RkeScgKSApOwoJCQkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQkJCgkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJC
QkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnWmlwIEFyY2hpdmUgZmlsZSBjb3Vs
ZCBub3QgYmUgbW92ZWQgdG8gbG9jYWwgYXJjaGl2ZSBkaXJlY3RvcnkuJywnaXQtbDEwbi1iYWNrdXBidWR
keScgKSApOwoJCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkJCQoJCQkJCX0KCQkJCQkJCQkJCgkJCQl9CQ
kJCgkKCQkJCWlmICggIWVtcHR5KCAkdGVtcG9yYXJ5X3ppcF9kaXJlY3RvcnkgKSApIHsKCQkJCQoJCQkJC
S8vIENsZWFudXAgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhhdCB3aWxsIGhhdmUgYWxsIGRldHJpdHVz
IGFuZCBtYXliZSBpbmNvbXBsZXRlIHppcCBmaWxlCQkJCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyg
gJ2RldGFpbHMnLCBfXygnUmVtb3ZpbmcgdGVtcG9yYXJ5IGRpcmVjdG9yeS4nLCdpdC1sMTBuLWJhY2t1cG
J1ZGR5JyApICk7CgkJCQkJCgkJCQkJaWYgKCAhKCAkdGhpcy0+ZGVsZXRlX2RpcmVjdG9yeV9yZWN1cnNpd
mUoICR0ZW1wb3JhcnlfemlwX2RpcmVjdG9yeSApICkgKSB7CgkJCQkJCgkJCQkJCQlwYl9iYWNrdXBidWRk
eTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdUZW1wb3JhcnkgZGlyZWN0b3J5IGNvdWxkIG5vdCBiZSBkZWx
ldGVkOiAnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ICk7Cg
kJCQkJCgkJCQkJfQoJCQkJCgkJCQl9CgkJCQkKCQkJCWlmICggJHJlc3VsdCApIHJldHVybiAkcmVzdWx0O
woJCQkJCgkJCX0KCQkJCgkJCS8vIElmIHdlIG1hZGUgaXQgdGhpcyBmYXIgdGhlbiBzb21ldGhpbmcgZGlk
bnQgcmVzdWx0IGluIGEgc3VjY2Vzcy4KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkKCQkKCQkKCQkvKioKCQk
gKgl1bnppcCgpCgkJICoKCQkgKglFeHRyYWN0cyB0aGUgY29udGVudHMgb2YgYSB6aXAgZmlsZSB0byB0aG
Ugc3BlY2lmaWVkIGRpcmVjdG9yeSB1c2luZyB0aGUgYmVzdCB1bnppcCBtZXRob2RzIHBvc3NpYmxlLgoJC
SAqCgkJICoJJHppcF9maWxlCQkJCQlzdHJpbmcJCUZ1bGwgcGF0aCAmIGZpbGVuYW1lIG9mIFpJUCBmaWxl
IHRvIGNyZWF0ZS4KCQkgKgkkZGVzdGluYXRpb25fZGlyZWN0b3J5CQlzdHJpbmcJCUZ1bGwgZGlyZWN0b3J
5IHBhdGggdG8gZXh0cmFjdCBpbnRvLgoJCSAqCSRmb3JjZV9jb21wYXRpYmlsaXR5X21vZGUJbWl4ZWQJCW
ZhbHNlIChkZWZhdWx0KTogdXNlIGJlc3QgbWV0aG9kcyBhdmFpbGFibGUgKHppcCBleGVjIGZpcnN0KSwgZ
mFsbGluZyBiYWNrIGFzIG5lZWRlZC4KCQkgKgkJCQkJCQkJCQkJemlwYXJjaGl2ZTogZmlyc3QgZmFsbGJh
Y2sgbWV0aG9kLiAoTWVkaXVtIHBlcmZvcm1hbmNlKQoJCSAqCQkJCQkJCQkJCQlwY2x6aXA6IHNlY29uZCB
mYWxsYmFjayBtZXRob2QuIChXb3JzdCBwZXJmb3JtYW5jZTsgYnVnZ3kpCgkJICoKCQkgKglAcmV0dXJuYG
AJCQkJCQkJCXRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCgkJICovCgkJZnVuY3Rpb24gdW56a
XAoICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgJGZvcmNlX2NvbXBhdGliaWxpdHlfbW9k
ZSA9IGZhbHNlICkgewoJCQkKCQkJJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSA9IHJ0cmltKCAkZGVzdGluYXR
pb25fZGlyZWN0b3J5LCAnXFwvJyApIC4gJy8nOyAvLyBNYWtlIHN1cmUgdHJhaWxpbmcgc2xhc2ggZXhpc3
RzIHRvIG5vcm1hbGl6ZS4KCQkJCgkJCWlmICggJGZvcmNlX2NvbXBhdGliaWxpdHlfbW9kZSA9PSAnemlwY
XJjaGl2ZScgKSB7CgkJCQkkemlwX21ldGhvZHMgPSBhcnJheSggJ3ppcGFyY2hpdmUnICk7CgkJCQlwYl9i
YWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsIF9fKCdGb3JjZWQgY29tcGF0aWJpbGl0eSBtb2RlICh
aaXBBcmNoaXZlOyBtZWRpdW0gc3BlZWQpIGJhc2VkIG9uIHNldHRpbmdzLiBUaGlzIGlzIHNsb3dlciBhbm
QgbGVzcyByZWxpYWJsZS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCX0gZWxzZWlmICggJGZvc
mNlX2NvbXBhdGliaWxpdHlfbW9kZSA9PSAncGNsemlwJyApIHsKCQkJCSR6aXBfbWV0aG9kcyA9IGFycmF5
KCAncGNsemlwJyApOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCBfXygnRm9yY2V
kIGNvbXBhdGliaWxpdHkgbW9kZSAoUENMWmlwOyBzbG93IHNwZWVkKSBiYXNlZCBvbiBzZXR0aW5ncy4gVG
hpcyBpcyBzbG93ZXIgYW5kIGxlc3MgcmVsaWFibGUuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJC
Ql9IGVsc2UgewoJCQkJJHppcF9tZXRob2RzID0gJHRoaXMtPl96aXBfbWV0aG9kczsKCQkJCXBiX2JhY2t1
cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1VzaW5nIGFsbCBhdmFpbGFibGUgemlwIG1ldGhvZHM
gaW4gcHJlZmVycmVkIG9yZGVyLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJfQoJCQkKCQkJaW
YgKCBpbl9hcnJheSggJ2V4ZWMnLCAkemlwX21ldGhvZHMgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdkZXRhaWxzJywgICdTdGFydGluZyBoaWdoc3BlZWQgZXh0cmFjdGlvbiAoZXhlYykuLi4gVGhp
cyBtYXkgdGFrZSBhIG1vbWVudC4uLicgKTsKCQkJCQoJCQkJJGNvbW1hbmQgPSAndW56aXAgLXFvJzsgLy8
gcSA9IHF1aWV0LCBvID0gb3ZlcndyaXRlIHdpdGhvdXQgcHJvbXB0LgoJCQkJJGNvbW1hbmQgLj0gIiAnJH
ppcF9maWxlJyAtZCAnJGRlc3RpbmF0aW9uX2RpcmVjdG9yeScgLXggJ2ltcG9ydGJ1ZGR5LnBocCciOyAvL
yB4IGV4Y2x1ZGVzIGltcG9ydGJ1ZGR5IHNjcmlwdCB0byBwcmV2ZW50IG92ZXJ3cml0aW5nIG5ld2VyIGlt
cG9ydGJ1ZGR5IG9uIGV4dHJhY3Qgc3RlcC4KCQkJCgkJCQkvLyBIYW5kbGUgd2luZG93cy4KCQkJCWlmICg
gc3RyaXN0ciggUEhQX09TLCAnV0lOJyApICYmICFzdHJpc3RyKCBQSFBfT1MsICdEQVJXSU4nICkgKSB7IC
8vIFJ1bm5pbmcgV2luZG93cy4gKG5vdCBkYXJ3aW4pCgkJCQkJaWYgKCBmaWxlX2V4aXN0cyggQUJTUEFUS
CAuICd1bnppcC5leGUnICkgKSB7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywg
ICdBdHRlbXB0aW5nIHRvIHVzZSBXaW5kb3dzIHVuemlwLmV4ZS4nICk7CgkJCQkJCSRjb21tYW5kID0gc3R
yX3JlcGxhY2UoICdcJycsICciJywgJGNvbW1hbmQgKTsgLy8gV2luZG93cyB3YW50cyBkb3VibGUgcXVvdG
VzCgkJCQkJCSRjb21tYW5kID0gQUJTUEFUSCAuICRjb21tYW5kOwoJCQkJCX0KCQkJCX0KCQkJCQoJCQkJJ
GNvbW1hbmQgLj0gJyAgMj4mMSc7IC8vIFJlZGlyZWN0IFNUREVSUiB0byBTVERPVVQuCgkJCQkKCQkJCWlm
ICggJHRoaXMtPl9leGVjcGF0aCAhPSAnJyApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV
0YWlscycsIF9fKCAnVXNpbmcgY3VzdG9tIGV4ZWMoKSBwYXRoOiAnLCAnaXQtbDEwbi1iYWNrdXBidWRkeS
cgKSAuICR0aGlzLT5fZXhlY3BhdGggKTsKCQkJCX0KCQkJCQoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1c
yggJ2RldGFpbHMnLCAnUnVubmluZyBaSVAgY29tbWFuZC4gVGhpcyBtYXkgdGFrZSBhIG1vbWVudC4nICk7
CgkJCQlsaXN0KCAkZXhlY19vdXRwdXQsICRleGVjX2V4aXRfY29kZSApID0gJHRoaXMtPl9jb21tYW5kYnV
kZHktPmV4ZWN1dGUoICR0aGlzLT5fZXhlY3BhdGggLiAkY29tbWFuZCApOwoJCQkJCgkJCQkkZmFpbGVkID
0gZmFsc2U7IC8vIERlZmF1bHQuCgkJCQkKCQkJCWlmICggIWZpbGVfZXhpc3RzKCAkZGVzdGluYXRpb25fZ
GlyZWN0b3J5IC4gJ3dwLWxvZ2luLnBocCcgKSAmJiAhZmlsZV9leGlzdHMoICRkZXN0aW5hdGlvbl9kaXJl
Y3RvcnkgLiAnZGJfMS5zcWwnICkgJiYgIWZpbGVfZXhpc3RzKCAkZGVzdGluYXRpb25fZGlyZWN0b3J5IC4
gJ3dvcmRwcmVzcy93cC1sb2dpbi5waHAnICkgKSB7IC8vIHdwLWxvZ2luLnBocCBmb3IgV29yZFByZXNzLC
BkYl8xLnNxbCBmb3IgREIgYmFja3VwLCB3b3JkcHJlc3Mvd3AtbG9naW4ucGhwIGZvciBmcmVzaCBXb3JkU
HJlc3MgZG93bmxvYWRlZCBmcm9tIHdwLm9yZyBmb3IgTVMgZXhwb3J0CgkJCQkJcGJfYmFja3VwYnVkZHk6
OnN0YXR1cyggJ2Vycm9yJywgJ0JvdGggd3AtbG9naW4ucGhwIChmdWxsIGJhY2t1cHMpIGFuZCBkYl8xLnN
xbCAoZGF0YWJhc2Ugb25seSBiYWNrdXBzKSBhcmUgbWlzc2luZyBhZnRlciBleHRyYWN0aW9uLiBVbnppcC
Bwcm9jZXNzIGFwcGVhcnMgdG8gaGF2ZSBmYWlsZWQuJyApOwoJCQkJCSRmYWlsZWQgPSB0cnVlOwoJCQkJf
QoJCQkJCgkJCQlpZiAoICRleGVjX2V4aXRfY29kZSAhPSAnMCcgKSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6
OnN0YXR1cyggJ2Vycm9yJywgICdFeGl0IGNvZGUgYCcgLiAkZXhlY19leGl0X2NvZGUgLiAnYCBpbmRpY2F
0ZXMgYSBwcm9ibGVtIHdhcyBlbmNvdW50ZXJlZC4nICk7CgkJCQkJJGZhaWxlZCA9IHRydWU7CgkJCQl9Cg
kJCQkKCQkJCS8vIFNvbWV0aW1lcyBleGVjIHJldHVybnMgc3VjY2VzcyBjb2RlcyBidXQgbmV2ZXIgZXh0c
mFjdGVkIGFjdHVhbCBmaWxlcy4gRG8gYSBjaGVjayB0byBtYWtlIHN1cmUga25vd24gZmlsZXMgd2VyZSBl
eHRyYWN0ZWQgdG8gdmVyaWZ5IGFnYWluc3QgdGhhdC4KCQkJCWlmICggJGZhaWxlZCA9PT0gZmFsc2UgKSB
7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnRmlsZSBleHRyYWN0aW9uIGNvbX
BsZXRlLicgKTsKCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCX0gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6O
nN0YXR1cyggJ21lc3NhZ2UnLCAgJ0ZhbGxpbmcgYmFjayB0byBuZXh0IGNvbXBhdGliaWxpdHkgbW9kZS4n
ICk7CgkJCQl9CgkJCX0KCQkJCgkJCWlmICggaW5fYXJyYXkoICd6aXBhcmNoaXZlJywgJHppcF9tZXRob2R
zICkgKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICAnU3RhcnRpbmcgbWVkaX
VtIHNwZWVkIGV4dHJhY3Rpb24gKHppcGFyY2hpdmUpLi4uIFRoaXMgbWF5IHRha2UgYSBtb21lbnQuLi4nI
Ck7CgkJCQkKCQkJCSR6aXAgPSBuZXcgWmlwQXJjaGl2ZTsKCQkJCWlmICggJHppcC0+b3BlbiggJHppcF9m
aWxlICkgPT09IHRydWUgKSB7CgkJCQkJaWYgKCB0cnVlID09PSAkemlwLT5leHRyYWN0VG8oICRkZXN0aW5
hdGlvbl9kaXJlY3RvcnkgKSApIHsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLC
AgJ1ppcEFyY2hpdmUgZXh0cmFjdGlvbiBzdWNjZXNzLicgKTsKCQkJCQkJJHppcC0+Y2xvc2UoKTsKCQkJC
QkJcmV0dXJuIHRydWU7CgkJCQkJfSBlbHNlIHsKCQkJCQkJJHppcC0+Y2xvc2UoKTsKCQkJCQkJcGJfYmFj
a3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAgJ0Vycm9yOiBaaXBBcmNoaXZlIHdhcyBhdmFpbGFibGU
gYnV0IGZhaWxlZCBleHRyYWN0aW5nIGZpbGVzLiAgRmFsbGluZyBiYWNrIHRvIG5leHQgY29tcGF0aWJpbG
l0eSBtb2RlLicgKTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoI
CdtZXNzYWdlJywgICdFcnJvcjogVW5hYmxlIHRvIG9wZW4gemlwIGZpbGUgdmlhIFppcEFyY2hpdmUuIEZh
bGxpbmcgYmFjayB0byBuZXh0IGNvbXBhdGliaWxpdHkgbW9kZS4nICk7CgkJCQl9CgkJCX0KCQkJCgkJCWl
mICggaW5fYXJyYXkoICdwY2x6aXAnLCAkemlwX21ldGhvZHMgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5Oj
pzdGF0dXMoICdkZXRhaWxzJywgICdTdGFydGluZyBsb3cgc3BlZWQgZXh0cmFjdGlvbiAocGNsemlwKS4uL
iBUaGlzIG1heSB0YWtlIGEgbW9tZW50Li4uJyApOwoJCQkJCgkJCQlpZiAoICFjbGFzc19leGlzdHMoICdQ
Y2xaaXAnICkgKSB7CgkJCQkJJHBjbHppcF9maWxlID0gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCk
gLiAnL2xpYi9wY2x6aXAvcGNsemlwLnBocCc7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldG
FpbHMnLCAnUENMWmlwIGNsYXNzIG5vdCBmb3VuZC4gQXR0ZW1wdGluZyB0byBsb2FkIGZyb20gYCcgLiAkc
GNsemlwX2ZpbGUgLiAnYC4nICk7CgkJCQkJaWYgKCBmaWxlX2V4aXN0cyggJHBjbHppcF9maWxlICkgKSB7
CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0xvYWRpbmcgYCcgLiAkcGNseml
wX2ZpbGUgLiAnYC4nICk7CgkJCQkJCXJlcXVpcmVfb25jZSggJHBjbHppcF9maWxlICk7CgkJCQkJfSBlbH
NlIHsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUENMWmlwIGZpbGUgbm90I
GZvdW5kOiBgJyAuICRwY2x6aXBfZmlsZSAuICdgLicgKTsKCQkJCQl9CgkJCQl9CgkJCQkKCQkJCSRhcmNo
aXZlID0gbmV3IFBjbFppcCggJHppcF9maWxlICk7CgkJCQkkcmVzdWx0ID0gJGFyY2hpdmUtPmV4dHJhY3Q
oKTsgLy8gRXh0cmFjdCB0byBjdXJyZW50IGRpcmVjdG9yeS4gRXhwbGljaXR5IHVzaW5nIFBDTFpJUF9PUF
RfUEFUSCByZXN1bHRzIGluIGV4dHJhY3Rpb24gdG8gYSBQQ0xaSVBfT1BUX1BBVEggc3ViZm9sZGVyLgoJC
QkJCgkJCQlpZiAoIDAgPT0gJHJlc3VsdCApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0
YWlscycsICAnUENMWmlwIEZhaWx1cmU6ICcgLiAkYXJjaGl2ZS0+ZXJyb3JJbmZvKCB0cnVlICkgKTsKCQk
JCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICAnTG93IHNwZWVkIChQQ0xaaXApIGV4dH
JhY3Rpb24gZmFpbGVkLicsICRhcmNoaXZlLT5lcnJvckluZm8oIHRydWUgKSApOwoJCQkJfSBlbHNlIHsKC
QkJCQlyZXR1cm4gdHJ1ZTsKCQkJCX0KCQkJfQoJCQkKCQkJLy8gTm90aGluZyBzdWNjZWVkZWQgaWYgd2Ug
bWFkZSBpdCB0aGlzIGZhci4uLgoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJCQoJCQoJCS8vIFRlc3QgYXZ
haWxhYmlsaXR5IG9mIFppcEFyY2hpdmUgYW5kIH
RoYXQgaXQgYWN0dWFsbHkgd29ya3MuCgkJZnVuY3Rpb24gdGVzdF96aXBhcmNoaXZlKCkgewoJCQlpZiAoI
GNsYXNzX2V4aXN0cyggJ1ppcEFyY2hpdmUnICkgKSB7CgkJCQkkdGVzdF9maWxlID0gJHRoaXMtPl90ZW1w
ZGlyIC4gJ3RlbXBfdGVzdF8nIC4gdW5pcWlkKCkgLiAnLnppcCc7CgkJCQkKCQkJCSR6aXAgPSBuZXcgWml
wQXJjaGl2ZTsKCQkJCWlmICggJHppcC0+b3BlbiggJHRlc3RfZmlsZSwgWklQQVJDSElWRTo6Q1JFQVRFIH
wgWklQQVJDSElWRTo6T1ZFUldSSVRFICkgPT09IHRydWUgKSB7CgkJCQkJJHppcC0+YWRkRmlsZSggX19GS
UxFX18sICd0aGlzX2lzX2FfdGVzdC50eHQnKTsKCQkJCQkkemlwLT5jbG9zZSgpOwoJCQkJCWlmICggZmls
ZV9leGlzdHMoICR0ZXN0X2ZpbGUgKSApIHsKCQkJCQkJdW5saW5rKCAkdGVzdF9maWxlICk7CgkJCQkJCXB
iX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1ppcEFyY2hpdmUgdGVzdCBwYXNzZWQuJy
wnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQl9IGVsc2UgewoJC
QkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaaXBBcmNoaXZlIHRlc3QgZmFp
bGVkOiBaaXAgZmlsZSBub3QgZm91bmQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQlyZXR
1cm4gZmFsc2U7CgkJCQkJfQoJCQkJfSBlbHNlIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZG
V0YWlscycsIF9fKCdaaXBBcmNoaXZlIHRlc3QgRkFJTEVEOiBVbmFibGUgdG8gY3JlYXRlL29wZW4gemlwI
GZpbGUuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJ
fQoJCX0KCQkKCQkKCQkKCQkvKglnZXRfZmlsZV9saXN0KCkKCQkgKgkKCQkgKglHZXQgYW4gYXJyYXkgb2Y
gYWxsIGZpbGVzIGluIGEgemlwIGZpbGUuCgkJICoJCgkJICoJQHBhcmFtCQkKCQkgKglAcmV0dXJuCQlhcn
JheQkKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0X2ZpbGVfbGlzdCggJHppcF9maWxlICkgewoJCQoJC
QkkZmlsZV9saXN0ID0gYXJyYXkoKTsKCQkJCgkJCS8vIFVzZSBaaXBBcmNoaXZlIGlmIGF2YWlsYWJsZQoJ
CQlpZiAoIGluX2FycmF5KCAnemlwYXJjaGl2ZScsICR0aGlzLT5femlwX21ldGhvZHMgKSApIHsKCQkJCgk
JCQkvLyBNYWtlIGRvdWJseSBzdXJlIGl0IGlzIGF2YWlsYWJsZQoJCQkJaWYgKCBjbGFzc19leGlzdHMoIC
daaXBBcmNoaXZlJywgZmFsc2UpICkgewoJCQkJCgkJCQkJJHphID0gbmV3IFppcEFyY2hpdmUoKTsKCQkJC
QkkcmVzdWx0ID0gJHphLT5vcGVuKCAkemlwX2ZpbGUgKTsKCQkJCQkKCQkJCQkvLyBNYWtlIHN1cmUgd2Ug
b3BlbmVkIHRoZSB6aXAgb2sgYW5kIGl0IGhhcyBjb250ZW50CgkJCQkJaWYgKCAkcmVzdWx0ID09PSB0cnV
lICkgewoJCQkJCQoJCQkJCQlpZiAoICggJGZpbGVfY291bnQgPSAkemEtPm51bUZpbGVzICkgPiAwICkgew
oJCQkJCQoJCQkJCQkJLy8gR2V0IGVhY2ggZmlsZSBpbiBzZXF1ZW5jZSBieSBpbmRleCBhbmQgZ2V0IHRoZ
SBwcm9wZXJ0aWVzCgkJCQkJCQlmb3IoICRpID0gMDsgJGkgPCAkZmlsZV9jb3VudDsgJGkrKyApewoJCQkJ
CQkJCgkJCQkJCQkJJHN0YXQgPSAkemEtPnN0YXRJbmRleCggJGkgKTsKCQkJCQkJCQkKCQkJCQkJCQkvLyB
Bc3N1bWUgYWxsIHRoZXNlIGtleXMgZG8gZXhpc3QgKGNvbnNpZGVyIHRlc3RpbmcpCgkJCQkJCQkJJGZpbG
VfbGlzdFtdID0gYXJyYXkoCgkJCQkJCQkJCSRzdGF0WyduYW1lJ10sCgkJCQkJCQkJCSRzdGF0WydzaXplJ
10sCgkJCQkJCQkJCSRzdGF0Wydjb21wX3NpemUnXSwKCQkJCQkJCQkJJHN0YXRbJ210aW1lJ10sCgkJCQkJ
CQkJKTsKCQkJCQkJCQkKCQkJCQkJCX0KCQkJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCQkkemEtPmNsb3N
lKCk7CgkJCQkJCQoJCQkJCQlyZXR1cm4gJGZpbGVfbGlzdDsKCQkJCQkJCgkJCQkJfSBlbHNlIHsKCQkJCQ
kKCQkJCQkJLy8gQ291bGRuJ3Qgb3BlbiBhcmNoaXZlIC0gZHJvcCB0aHJvdWdoIGFzIG1heWJlIG90aGVyI
G1ldGhvZCB3aWxsIHN1Y2NlZWQ/CgkJCQkJCSRlcnJvcl9zdHJpbmcgPSAkdGhpcy0+emlwYXJjaGl2ZV9l
cnJvcl9pbmZvKCAkcmVzdWx0ICk7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJyw
gc3ByaW50ZiggX18oJ1ppcEFyY2hpdmUgZmFpbGVkIHRvIG9wZW4gZmlsZSB0byBsaXN0IGNvbnRlbnQgaW
4gZmlsZSAlMSRzIC0gRXJyb3IgSW5mbzogJTIkcy4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX
2ZpbGUsICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJCQoJCQkJCX0KCQkJCQoJCQkJfSBlbHNlIHsKCQkJCQoJ
CQkJCS8vIFNvbWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCB6aXBhcmNoaXZlIGJ1dCB
3ZSBjb3VsZG4ndCBmaW5kIHRoZSBjbGFzcwoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaW
xzJywgX18oJ3ppcGFyY2hpdmUgaW5kaWNhdGVkIGFzIGF2YWlsYWJsZSBtZXRob2QgYnV0IFppcEFyY2hpd
mUgY2xhc3Mgbm9uLWV4aXN0ZW50JywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCgkJCQl9CgkJ
CQkKCQkJfQoJCQkKCQkJLy8gRHJvcHBlZCB0aHJvdWdoIGJlY2F1c2UgWmlwQXJjaGl2ZSBub3QgYXZhaWx
hYmxlIG9yIGZhaWxlZCB0byBvcGVuIGZpbGUKCQkJaWYgKCBpbl9hcnJheSggJ3BjbHppcCcsICR0aGlzLT
5femlwX21ldGhvZHMgKSApIHsKCQkJCgkJCQkvLyBNYWtlIHN1cmUgd2UgaGF2ZSBpdAoJCQkJaWYgKCAhY
2xhc3NfZXhpc3RzKCAnUGNsWmlwJywgZmFsc2UgKSApIHsKCQkJCQoJCQkJCS8vIEl0J3Mgbm90IGFscmVh
ZHkgbG9hZGVkIHNvIHRyeSBhbmQgZmluZC9sb2FkIGl0IGZyb20gcG9zc2libGUgbG9jYXRpb25zCgkJCQk
JaWYgKCBmaWxlX2V4aXN0cyggQUJTUEFUSCAuICd3cC1hZG1pbi9pbmNsdWRlcy9jbGFzcy1wY2x6aXAucG
hwJyApICkgewoJCQkJCQoJCQkJCQkvLyBSdW5uaW5nIHVuZGVyIFdvcmRQcmVzcwoJCQkJCQlAaW5jbHVkZ
V9vbmNlKCBBQlNQQVRIIC4gJ3dwLWFkbWluL2luY2x1ZGVzL2NsYXNzLXBjbHppcC5waHAnICk7CgkJCQkJ
CQoJCQkJCX0gZWxzZWlmICggZmlsZV9leGlzdHMoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4
gJy9saWIvcGNsemlwL3BjbHppcC5waHAnICkgKSB7CgkJCQkJCgkJCQkJCS8vIFJ1bm5pbmcgU3RhbmRhbG
9uZSAoaW1wb3J0YnVkZHkpCgkJCQkJCUBpbmNsdWRlX29uY2UoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fc
GF0aCgpIC4gJy9saWIvcGNsemlwL3BjbHppcC5waHAnICk7CgkJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCX0K
CQkJCQoJCQkJLy8gTWFrZSBzdXJlIHdlIGRpZCBsb2FkIGl0CgkJCQlpZiAoIGNsYXNzX2V4aXN0cyggJ1B
jbFppcCcsIGZhbHNlICkgKSB7CgkJCQkKCQkJCQkkemEgPSBuZXcgUGNsWmlwKCAkemlwX2ZpbGUgKTsKCQ
kJCQkKCQkJCQkvLyBNYWtlIHN1cmUgd2Ugb3BlbmVkIHRoZSB6aXAgb2sgYW5kIGl0IGhhcyBjb250ZW50C
gkJCQkJaWYgKCAoICRjb250ZW50X2xpc3QgPSAkemEtPmxpc3RDb250ZW50KCkgKSAhPT0gMCApIHsKCQkJ
CQkKCQkJCQkJJGZpbGVfY291bnQgPSBzaXplb2YoICRjb250ZW50X2xpc3QgKTsKCQkJCQkJCgkJCQkJCS8
vIEdldCBlYWNoIGZpbGUgaW4gc2VxdWVuY2UgYnkgaW5kZXggYW5kIGdldCB0aGUgcHJvcGVydGllcwoJCQ
kJCQlmb3IgKCAkaSA9IDA7ICRpIDwgJGZpbGVfY291bnQ7ICRpKysgKSB7CgkJCQkJCQoJCQkJCQkJJHN0Y
XQgPSAkY29udGVudF9saXN0WyAkaSBdOwoJCQkJCQkJCgkJCQkJCQkvLyBBc3N1bWUgYWxsIHRoZXNlIGtl
eXMgZG8gZXhpc3QgKGNvbnNpZGVyIHRlc3RpbmcpCgkJCQkJCQkkZmlsZV9saXN0W10gPSBhcnJheSgKCQk
JCQkJCQkkc3RhdFsgJ2ZpbGVuYW1lJyBdLAoJCQkJCQkJCSRzdGF0WyAnc2l6ZScgXSwKCQkJCQkJCQkkc3
RhdFsgJ2NvbXByZXNzZWRfc2l6ZScgXSwKCQkJCQkJCQkkc3RhdFsgJ210aW1lJyBdCgkJCQkJCQkpOwoJC
QkJCQkJCgkJCQkJCX0KCQkJCQkJCgkJCQkJCXJldHVybiAkZmlsZV9saXN0OwoKCQkJCQl9IGVsc2UgewoJ
CQkJCQoJCQkJCQkvLyBDb3VsZG4ndCBvcGVuIGFyY2hpdmUgLSBkcm9wIHRocm91Z2ggYXMgbWF5YmUgb3R
oZXIgbWV0aG9kIHdpbGwgc3VjY2VlZD8KCQkJCQkJJGVycm9yX3N0cmluZyA9ICR6YS0+ZXJyb3JJbmZvKC
B0cnVlICk7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ
1BjbFppcCBmYWlsZWQgdG8gb3BlbiBmaWxlIHRvIGxpc3QgY29udGVudCBpbiBmaWxlICUxJHMgLSBFcnJv
ciBJbmZvOiAlMiRzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGVycm9yX3N0cml
uZyApICk7CgkJCQkJCgkJCQkJfQoJCQkJCQoJCQkJfSBlbHNlIHsKCQkJCQoJCQkJCS8vIFNvbWV0aGluZy
BmaXNoeSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCBwY2x6aXAgYnV0IHdlIGNvdWxkbid0IGZpbmQgdGhlI
GNsYXNzCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygncGNsemlwIGluZGlj
YXRlZCBhcyBhdmFpbGFibGUgbWV0aG9kIGJ1dCBjbGFzcyBQY2xaaXAgbm9uLWV4aXN0ZW50JywnaXQtbDE
wbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCgkJCQl9CgkJCQoJCQl9CgkJCQoJCQkvLyBJZiB3ZSBnb3QgdG
hpcyBmYXIgdGhlbiBubyBtZXRob2QgdG8gbGlzdCBiYWNrdXAgY29udGVudCB3YXMgYXZhaWxhYmxlIG9yI
HdvcmtlZAoJCQlyZXR1cm4gZmFsc2U7CgkJCQoJCX0gLy8gRW5kIGdldF9maWxlX2xpc3QoKS4KCQkKCQkK
CQkJCQkJCQkKCQkvKglhdmFpbGFibGVfemlwX21ldGhvZHMoKQoJCSAqCQoJCSAqCVRlc3QgYXZhaWxhYml
saXR5IG9mIHppcCBtZXRob2RzIHRvIGRldGVybWluZSB3aGljaCBleGlzdCBhbmQgYWN0dWFsbHkgd29yay
4KCQkgKglEZXRlY3RzIHRoZSBhdmFpbGFibGUgemlwcGluZyBtZXRob2RzIG9uIHRoaXMgc2VydmVyLiBUZ
XN0cyBjb21tYW5kIGxpbmUgemlwIHZpYSBleGVjKCksIFBIUCdzIFppcEFyY2hpdmUsIG9yIGVtdWxhdGVk
IHppcCB2aWEgdGhlIFBIUCBQQ0xaaXAgbGlicmFyeS4KCQkgKglUT0RPOiBBY3R1YWxseSB0ZXN0IHVueml
wcGluZyBpbiB1bnppcCBtb2RlIG5vdCBqdXN0IHppcHBpbmcgYW5kIGFzc3VtaW5nIHRoZSBvdGhlciB3aW
xsIHdvcmsKCQkgKgkKCQkgKglAcGFyYW0JCWJvb2xlYW4JCSRyZXR1cm5fYmVzdAkKCQkgKglAcGFyYW0JC
XN0cmluZwkJJG1vZGUJCQlQb3NzaWJsZSB2YWx1ZXM6IHppcCwgdW56aXAKCQkgKglAcmV0dXJuCQlhcnJh
eQkJCQkJCVBvc3NpYmxlIHJldHVybiB2YWx1ZXM6IGV4ZWMsIHppcGFyY2hpdmUsIHBjbHppcAoJCSAqLwo
JCWZ1bmN0aW9uIGF2YWlsYWJsZV96aXBfbWV0aG9kcyggJHJldHVybl9iZXN0ID0gdHJ1ZSwgJG1vZGUgPS
AnemlwJyApIHsKCQkJJHJldHVybiA9IGFycmF5KCk7CgkJCSR0ZXN0X2ZpbGUgPSAkdGhpcy0+X3RlbXBka
XIgLiAndGVtcF8nIC4gdW5pcWlkKCkgLiAnLnppcCc7CgkJCQoJCQkvLyBUZXN0IGNvbW1hbmQtbGluZSBa
SVAuCgkJCWlmICggZnVuY3Rpb25fZXhpc3RzKCAnZXhlYycgKSApIHsKCQkJCSRjb21tYW5kID0gJ3ppcCc
7CgkJCQkkcnVuX2V4ZWNfemlwX3Rlc3QgPSB0cnVlOwoJCQkJCgkJCQkvLyBIYW5kbGUgd2luZG93cy4KCQ
kJCWlmICggc3RyaXN0ciggUEhQX09TLCAnV0lOJyApICYmICFzdHJpc3RyKCBQSFBfT1MsICdEQVJXSU4nI
CkgKSB7IC8vIFJ1bm5pbmcgV2luZG93cy4gKG5vdCBkYXJ3aW4pCgkJCQkJaWYgKCBmaWxlX2V4aXN0cygg
QUJTUEFUSCAuICd6aXAuZXhlJyApICkgewoJCQkJCQkkY29tbWFuZCA9IEFCU1BBVEggLiAkY29tbWFuZDs
KCQkJCQl9CgkJCQkJLy8gSWYgdW56aXAgbW9kZSBhbmQgdW56aXAuZXhlIGlzIGZvdW5kIHRoZW4gYXNzdW
1lIHdlIGhhdmUgdGhhdCBvcHRpb24gZm9yIHVuemlwcGluZyBzaW5jZSB3ZSBhcmVudCBhY3R1YWxseSB0Z
XN0aW5nIHVuemlwLgoJCQkJCWlmICggJG1vZGUgPT0gJ3VuemlwJyApIHsKCQkJCQkJJHJ1bl9leGVjX3pp
cF90ZXN0ID0gZmFsc2U7CgkJCQkJCWlmICggZmlsZV9leGlzdHMoIEFCU1BBVEggLiAndW56aXAuZXhlJyA
pICkgewoJCQkJCQkJYXJyYXlfcHVzaCggJHJldHVybiwgJ2V4ZWMnICk7CgkJCQkJCX0KCQkJCQl9CgkJCQ
kJCgkJCQkJJGV4ZWNfcGF0aHMgPSBhcnJheSggJycgKTsKCQkJCX0gZWxzZSB7IC8vICpOSVggc3lzdGVtL
goJCQkJCSRleGVjX3BhdGhzID0gYXJyYXkoICcnLCAnL3Vzci9iaW4vJywgJy91c3IvbG9jYWwvYmluLycs
ICcvdXNyL2xvY2FsL3NiaW4vJywgJy91c3Ivc2Jpbi8nLCAnL3NiaW4vJywgJy9iaW4vJyApOyAvLyBJbmN
sdWRlIHByZWNlZWRpbmcgJiB0cmFpbGluZyBzbGFzaC4KCQkJCX0KCQkJCQoJCQkJaWYgKCAkcnVuX2V4ZW
NfemlwX3Rlc3QgPT09IHRydWUgKSB7CgkJCQkJLy8gUG9zc2libGUgbG9jYXRpb25zIHRvIGZpbmQgdGhlI
FpJUCBleGVjdXRhYmxlLiBTdGFydCB3aXRoIGEgYmxhbmsgc3RyaW5nIHRvIGF0dGVtcHQgdG8gcnVuIGlu
IGN1cnJlbnQgZGlyZWN0b3J5LgoJCQkJCQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWx
zJywgJ1RyeWluZyBleGVjKCkgaW4gdGhlIGZvbGxvd2luZyBwYXRoczogYCcgLiBpbXBsb2RlKCAnLCcsIC
RleGVjX3BhdGhzICkgLiAnYCcgKTsKCQkJCQkKCQkJCQkkZXhlY19jb21wbGV0aW9uID0gZmFsc2U7IC8vI
GRlZmF1bHQgc3RhdGUuCgkJCQkJd2hpbGUoICRleGVjX2NvbXBsZXRpb24gPT09IGZhbHNlICkgeyAvLyBD
aGVjayBhbGwgcG9zc2libGUgemlwIHBhdGggbG9jYXRpb25zIHN0YXJ0aW5nIHdpdGggY3VycmVudCBkaXI
uIFVzdWFsbHkgdGhlIHBhdGggaXMgc2V0IHRvIG1ha2UgdGhpcyB3b3JrIHdpdGhvdXQgaHVudGluZy4KCQ
kJCQkJaWYgKCBlbXB0eSggJGV4ZWNfcGF0aHMgKSApIHsKCQkJCQkJCSRleGVjX2NvbXBsZXRpb24gPSB0c
nVlOwoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgX18oICdFeGhhdXN0ZWQgYWxs
IGtub3duIGV4ZWMoKSBwYXRoIHBvc3NpYmlsaXRpZXMgd2l0aCBubyBzdWNjZXNzLicsICdpdC1sMTBuLWJ
hY2t1cGJ1ZGR5JyApICk7CgkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCQkkcGF0aCA9IGFycmF5X3NoaW
Z0KCAkZXhlY19wYXRocyApOwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fK
CAnVHJ5aW5nIGV4ZWMoKSBaSVAgcGF0aDonLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICcgYCcgLiAk
cGF0aCAuICdgLicgKTsKCQkJCQkJCgkJCQkJCSRleGVjX2NvbW1hbmQgPSAkcGF0aCAuICRjb21tYW5kIC4
gJyAiJyAuICR0ZXN0X2ZpbGUgLiAnIiAiJyAuIF9fRklMRV9fIC4gJyIgIDI+JjEnOyAvLyAgMj4mMSB0by
ByZWRpcmVjdCBTVFJFUlIgdG8gU1RET1VULgoJC
QkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdaaXAgdGVzdCBleGVjKCkgY29tbWFu
ZDogYCcgLiAkZXhlY19jb21tYW5kIC4gJ2AnICk7CgkJCQkJCWxpc3QoICRleGVjX291dHB1dCwgJGV4ZWN
fZXhpdF9jb2RlICkgPSAkdGhpcy0+X2NvbW1hbmRidWRkeS0+ZXhlY3V0ZSggJGV4ZWNfY29tbWFuZCApOw
oJCQkJCQkKCQkJCQkJaWYgKCAoICFmaWxlX2V4aXN0cyggJHRlc3RfZmlsZSApICkgfHwgKCAkZXhlY19le
Gl0X2NvZGUgPT0gJy0xJyApICkgeyAvLyBGaWxlIG5vdCBtYWRlIG9yIGVycm9yIHJldHVybmVkLgoJCQkJ
CQkJJGV4ZWNfY29tcGxldGlvbiA9IGZhbHNlOwoJCQkJCQkJCgkJCQkJCQlpZiAoICRleGVjX2V4aXRfY29
kZSA9PSAnLTEnICkgewoJCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oIC
dFeGVjIGNvbW1hbmQgcmV0dXJuZWQgLTEuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkJC
X0KCQkJCQkJCWlmICggIWZpbGVfZXhpc3RzKCAkdGVzdF9maWxlICkgKSB7CgkJCQkJCQkJcGJfYmFja3Vw
YnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ0V4ZWMgY29tbWFuZCByYW4gYnV0IFpJUCBmaWxlIGR
pZCBub3QgZXhpc3QuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkJCX0KCQkJCQkJCWlmIC
ggZmlsZV9leGlzdHMoICR0ZXN0X2ZpbGUgKSApIHsgLy8gSWYgZmlsZSB3YXMgc29tZWhvdyBjcmVhdGVkL
CBkbyBjbGVhbnVwIG9uIGl0LgoJCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywg
X18oICdDbGVhbmluZyB1cCBkYW1hZ2VkIFpJUCBmaWxlLiBJc3N1ZSAjMzQ4OTMyODk5OC4nLCAnaXQtbDE
wbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQkJCXVubGluayggJHRlc3RfZmlsZSApOwoJCQkJCQkJfQoJCQ
kJCQl9IGVsc2UgeyAvLyBTdWNjZXNzLgoJCQkJCQkJJGV4ZWNfY29tcGxldGlvbiA9IHRydWU7CgkJCQkJC
QkKCQkJCQkJCWlmICggIXVubGluayggJHRlc3RfZmlsZSApICkgewoJCQkJCQkJCWVjaG8gc3ByaW50Zigg
X18oICdFcnJvciAjNTY0NjM0LiBVbmFibGUgdG8gZGVsZXRlIHRlc3QgZmlsZSAoJXMpIScsICdpdC1sMTB
uLWJhY2t1cGJ1ZGR5JyApLCAkdGVzdF9maWxlICk7CgkJCQkJCQl9CgkJCQkJCQlhcnJheV9wdXNoKCAkcm
V0dXJuLCAnZXhlYycgKTsKCQkJCQkJCSR0aGlzLT5fZXhlY3BhdGggPSAkcGF0aDsKCQkJCQkJCQoJCQkJC
QkJYnJlYWs7CgkJCQkJCX0KCQkJCQl9IC8vIGVuZCB3aGlsZQoJCQkJfSAvLyBFbmQgJHJ1bl9leGVjX3Rl
c3QgPT09IHRydWUuCgkJCX0gLy8gRW5kIGZ1bmN0aW9uX2V4aXN0cyggJ2V4ZWMnICkuCgkJCQoJCQkvLyB
UZXN0IFppcEFyY2hpdmUKCQkJaWYgKCBjbGFzc19leGlzdHMoICdaaXBBcmNoaXZlJyApICkgewoJCQkJaW
YgKCAkdGhpcy0+dGVzdF96aXBhcmNoaXZlKCkgPT09IHRydWUgKSB7CgkJCQkJYXJyYXlfcHVzaCggJHJld
HVybiwgJ3ppcGFyY2hpdmUnICk7CgkJCQl9CgkJCX0KCQkJCgkJCS8vIFRlc3QgUENMWmlwCgkJCWlmICgg
Y2xhc3NfZXhpc3RzKCAnUGNsWmlwJyApICkgeyAvLyBDbGFzcyBhbHJlYWR5IGxvYWRlZC4KCQkJCWFycmF
5X3B1c2goICRyZXR1cm4sICdwY2x6aXAnICk7CgkJCX0gZWxzZSB7IC8vIENsYXNzIG5vdCBsb2FkZWQuIF
NlZWsgaXQgb3V0LgoJCQkJCgkJCQlpZiAoIGZpbGVfZXhpc3RzKCBBQlNQQVRIIC4gJ3dwLWFkbWluL2luY
2x1ZGVzL2NsYXNzLXBjbHppcC5waHAnICkgKSB7IC8vIEluc2lkZSBXUC4KCQkJCQlyZXF1aXJlX29uY2Uo
IEFCU1BBVEggLiAnd3AtYWRtaW4vaW5jbHVkZXMvY2xhc3MtcGNsemlwLnBocCcgKTsKCQkJCQlhcnJheV9
wdXNoKCAkcmV0dXJuLCAncGNsemlwJyApOwoJCQkJfSBlbHNlaWYgKCBmaWxlX2V4aXN0cyggcGJfYmFja3
VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2xpYi9wY2x6aXAvcGNsemlwLnBocCcgKSApIHsgLy8gSW1wb
3J0QnVkZHkuCgkJCQkJcmVxdWlyZV9vbmNlKCBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcv
bGliL3BjbHppcC9wY2x6aXAucGhwJyApOwoJCQkJCWFycmF5X3B1c2goICRyZXR1cm4sICdwY2x6aXAnICk
7CgkJCQl9CgkJCQkKCQkJfQoJCQkKCQkJcmV0dXJuICRyZXR1cm47CgkJfSAvLyBFbmQgYXZhaWxhYmxlX3
ppcF9tZXRob2RzKCkuCgkJCgkJCgkJCgkJLy8gUmVjdXJzaXZlbHkgZGVsZXRlIGEgZGlyZWN0b3J5IGFuZ
CBhbGwgY29udGVudCB3aXRoaW4uCgkJZnVuY3Rpb24gZGVsZXRlX2RpcmVjdG9yeV9yZWN1cnNpdmUoICRk
aXJlY3RvcnkgKSB7CgkJCWlmICggJycgPT0gJGRpcmVjdG9yeSApIHsKCQkJCWVycm9yX2xvZyggJ0JhY2t
1cEJ1ZGR5IEVycm9yICM0NzM4NDNiOiBIYWx0ZWQgZW1wdHkgZGlyZWN0b3J5IGRlbGV0aW9uLicgKTsKCQ
kJCXJldHVybiBmYWxzZTsKCQkJfQoJCQkKCQkJJGRpcmVjdG9yeSA9IHByZWdfcmVwbGFjZSggJ3xbL1xcX
FxdKyR8JywgJycsICRkaXJlY3RvcnkgKTsKCQkJCgkJCSRmaWxlcyA9IGdsb2IoICRkaXJlY3RvcnkgLiAn
LyonLCBHTE9CX01BUksgKTsKCQkJaWYgKCBpc19hcnJheSggJGZpbGVzICkgJiYgIWVtcHR5KCAkZmlsZXM
gKSApIHsKCQkJCWZvcmVhY2goICRmaWxlcyBhcyAkZmlsZSApIHsKCQkJCQlpZiggJy8nID09PSBzdWJzdH
IoICRmaWxlLCAtMSApICkKCQkJCQkJJHRoaXMtPmRlbGV0ZV9kaXJlY3RvcnlfcmVjdXJzaXZlKCAkZmlsZ
SApOwoJCQkJCWVsc2UKCQkJCQkJdW5saW5rKCAkZmlsZSApOwoJCQkJfQoJCQl9CgkJCQoJCQlpZiAoIGlz
X2RpciggJGRpcmVjdG9yeSApICkgcm1kaXIoICRkaXJlY3RvcnkgKTsKCQkJCgkJCWlmICggaXNfZGlyKCA
kZGlyZWN0b3J5ICkgKQoJCQkJcmV0dXJuIGZhbHNlOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9IC8vIEVuZCBkZW
xldGVfZGlyZWN0b3J5X3JlY3Vyc2l2ZSgpLgoJCQoJCQoJCQoJCWZ1bmN0aW9uIHNldF96aXBfbWV0aG9kc
yggJG1ldGhvZHMgKSB7CgkJCSR0aGlzLT5femlwX21ldGhvZHMgPSAkbWV0aG9kczsKCQl9IC8vIEVuZCBz
ZXRfemlwX21ldGhvZHMoKS4KCQkKCQkKCQkKCQkvKglfcmVuZGVyX2V4Y2x1c2lvbnNfZmlsZSgpCgkJICo
JCgkJICoJZnVuY3Rpb24gZGVzY3JpcHRpb24KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJJGZpbGUJCQ
lGaWxlIHRvIHdyaXRlIGV4Y2x1c2lvbnMgaW50by4KCQkgKglAcGFyYW0JCWFycmF5CQkkZXhjbHVzaW9uc
wkJQXJyYXkgb2YgZGlyZWN0b3JpZXMvcGF0aHMgdG8gZXhjbHVkZS4gT25lIHBlciBsaW5lLgoJCSAqCUBw
YXJhbQkJYXRyaW5nCQkkcm9vdAkJCVJvb3QgZGlyZWN0b3J5IHRvIGV4Y2x1ZGUgcmVsYXRpdmUgdG8uCgk
JICoJQHJldHVybgkJbnVsbAoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBfcmVuZGVyX2V4Y2x1c2lvbnNfZm
lsZSggJGZpbGUsICRleGNsdXNpb25zLCAkcm9vdCA9ICcnICkgewoJCQlpZiAoICcnID09ICRyb290ICkge
woJCQkJJHJvb3QgPSBBQlNQQVRIOwoJCQl9IGVsc2UgewoJCQkJJHJvb3QgPSBydHJpbSggJHJvb3QsIERJ
UkVDVE9SWV9TRVBBUkFUT1IgKSAuIERJUkVDVE9SWV9TRVBBUkFUT1I7CgkJCX0KCgkJCS8vIEFycmF5IGZ
vciBjbGVhbmVkIHVwIGV4Y2x1c2lvbnMgbGlzdAoJCQkkc2FuaXRpemVkX2V4Y2x1c2lvbnMgPSBhcnJheS
gpOwoJCQkKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQ3JlYXRpbmcgYmFja3VwI
GV4Y2x1c2lvbnMgZmlsZSBgJyAuICRmaWxlIC4gJ2AuJyApOwoJCQkvLyRleGNsdXNpb25zID0gYmFja3Vw
YnVkZHlfY29yZTo6Z2V0X2RpcmVjdG9yeV9leGNsdXNpb25zKCk7CgkJCQoJCQkvLyBUZXN0IGVhY2ggZXh
jbHVzaW9uIGZvciB2YWxpZGl0eSAocHJlc2VuY2UpIGFuZCBkcm9wIHRob3NlIG5vdCBhY3R1YWxseSBwcm
VzZW50CgkJCWZvcmVhY2goICRleGNsdXNpb25zIGFzICRleGNsdXNpb24gKSB7CgkJCQkKCQkJCS8vIE1ha
2Ugc3VyZSBwbGF0Zm9ybSBzcGVjaWZpYyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgdXNlZCAoY291bGQg
aGF2ZSBtaWdyYXRlZCBmcm9tIGRpZmZlcmVudCBwbGF0Zm9ybSkKCQkJCSRleGNsdXNpb24gPSBwcmVnX3J
lcGxhY2UoICd8WycgLiBhZGRzbGFzaGVzKCBzZWxmOjpESVJFQ1RPUllfU0VQQVJBVE9SUyApIC4gJ10rfC
csIERJUkVDVE9SWV9TRVBBUkFUT1IsICRleGNsdXNpb24gKTsKCQkJCQoJCQkJLy8gRElSRUNUT1JZLgoJC
QkJaWYgKCBpc19kaXIoICRyb290IC4gbHRyaW0oICRleGNsdXNpb24sIERJUkVDVE9SWV9TRVBBUkFUT1Ig
KSApICkgewoJCQkJCQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0V4Y2x1ZGl
uZyBkaXJlY3RvcnkgYCcgLiAkZXhjbHVzaW9uIC4gJ2AuJyApOwoJCQkJCQoJCQkJCS8vIE5lZWQgdG8gYW
RkIHRoZSB3aWxkY2FyZCBzbyB0aGF0IHppcCB3aWxsIGV4Y2x1ZGUgdGhlIGRpcmVjdG9yeSBhbmQgY29ud
GVudAoJCQkJCSRleGNsdXNpb24gPSBydHJpbSggJGV4Y2x1c2lvbiwgRElSRUNUT1JZX1NFUEFSQVRPUiAp
IC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICcqJzsKCQkJCQoJCQkJLy8gRklMRS4KCQkJCX0gZWxzZWlmICg
gaXNfZmlsZSggJHJvb3QgLiBsdHJpbSggJGV4Y2x1c2lvbiwgRElSRUNUT1JZX1NFUEFSQVRPUiApICkgKS
B7CgkJCQkJCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRXhjbHVkaW5nIGZpb
GUgYCcgLiAkZXhjbHVzaW9uIC4gJ2AuJyApOwoJCQkJCgkJCQkvLyBTWU1CT0xJQyBMSU5LLgoJCQkJfSBl
bHNlaWYgKCBpc19saW5rKCAkcm9vdCAuIGx0cmltKCAkZXhjbHVzaW9uLCBESVJFQ1RPUllfU0VQQVJBVE9
SICkgKSApIHsKCQkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdFeGNsdW
Rpbmcgc3ltYm9saWMgbGluayBgJyAuICRleGNsdXNpb24gLiAnYC4nICk7CgkJCQkKCQkJCS8vIERPRVMgT
k9UIEVYSVNULgoJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0
YWlscycsICdPbWl0dGluZyBleGNsdXNpb24gYXMgZmlsZS9kaXJlY3RvcnkgZG9lcyBub3QgY3VycmVudGx
5IGV4aXN0OiBgJyAuICRleGNsdXNpb24gLiAnYC4nICk7CgkJCQkJCgkJCQkJLy8gU2tpcCB0byBuZXh0IG
V4Y2x1c2lvbgoJCQkJCWNvbnRpbnVlOwoJCQkJCQoJCQkJfQoJCQkJCgkJCQkvLyBXZSBoYXZlIGEgdmFsa
WQgZXhjbHVkZSBzbyBhZGQgaXQKCQkJCSRzYW5pdGl6ZWRfZXhjbHVzaW9uc1tdID0gJGV4Y2x1c2lvbjsK
CQkJCQoJCQl9CgkJCQoJCQkvLyBQdXQgdGhlIGV4Y2x1c2lvbnMgdG8gYSBmaWxlIGFzIGEgc3RyaW5nCgk
JCWZpbGVfcHV0X2NvbnRlbnRzKCAkZmlsZSwgaW1wbG9kZSggUEhQX0VPTCwgJHNhbml0aXplZF9leGNsdX
Npb25zICkgLiBQSFBfRU9MICk7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0JhY
2t1cCBleGNsdXNpb25zIGZpbGUgY3JlYXRlZC4nICk7CgkJCQoJCX0gLy8gRW5kIHJlbmRlcl9leGNsdXNp
b25zX2ZpbGUoKS4KCQkKCQkKCQkKCX0gLy8gRW5kIGNsYXNzCgkKfQo/Pg==
###PACKDATA,FILE_END,/lib/zipbuddy/legacy.zipbuddy.php,importbuddy/lib/zipbuddy/leg
acy.zipbuddy.php
###PACKDATA,FILE_START,/lib/zipbuddy/zbdir.php,importbuddy/lib/zipbuddy/zbdir.php
PD9waHAKLyoqCiAqCXBsdWdpbmJ1ZGR5X3piZGlyIENsYXNzCiAqCiAqICBQcm92aWRlcyBhIGRpcmVjdG9
yeSBjbGFzcyBmb3IgemlwYnVkZHkgZm9yIGJ1aWxkaW5nIGEgZGlyZWN0b3J5IHRyZWUgZm9yIGJhY2t1cA
ogKgkKICoJVmVyc2lvbjogMS4wLjAKICoJQXV0aG9yOgogKglBdXRob3IgVVJJOgogKgogKglAcGFyYW0JC
SRwYXJlbnQJCW9iamVjdAkJT3B0aW9uYWwgcGFyZW50IG9iamVjdCB3aGljaCBjYW4gcHJvdmlkZSBmdW5j
dGlvbnMgZm9yIHJlcG9ydGluZywgZXRjLgogKglAcmV0dXJuCQludWxsCiAqCiAqLwppZiAoICFjbGFzc19
leGlzdHMoICJwbHVnaW5idWRkeV96YmRpciIgKSApIHsKCgljbGFzcyBwbHVnaW5idWRkeV96YmRpciB7Cg
kKCQkvLyBzdGF0dXMgbWV0aG9kIHR5cGUgcGFyYW1ldGVyIHZhbHVlcyAtIHdvdWxkIGxpa2UgYSBjbGFzc
yBmb3IgdGhpcwoJCWNvbnN0IFNUQVRVU19UWVBFX0RFVEFJTFMgPSAnZGV0YWlscyc7CgkJY29uc3QgTk9S
TV9ESVJFQ1RPUllfU0VQQVJBVE9SID0gJy8nOwoJCWNvbnN0IERJUkVDVE9SWV9TRVBBUkFUT1JTID0gJy9
cXCc7CgoJCXB1YmxpYyAkX3ZlcnNpb24gPSAnMS4wJzsKCgogICAgICAgIC8qKgogICAgICAgICAqIFRoZS
BwYXRoIG9mIHRoaXMgZGlyZWN0b3J5IG5vZGUKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIHBhdGggc
3RyaW5nCiAgICAgICAgICovCiAgICAgICAgcHJvdGVjdGVkICRfcGF0aCA9ICIiOwogICAgICAgIAogICAg
ICAgIC8qKgogICAgICAgICAqIFRoZSBhYnNvbHV0ZSBwYXRocyB0byBiZSBleGNsdWRlZCwgbXVzdCBiZSA
vIHRlcm1pbmF0ZWQKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIHBhdGhzX3RvX2V4Y2x1ZGUgYXJyYX
kgb2Ygc3RyaW5nCiAgICAgICAgICovCiAgICAgICAgcHJvdGVjdGVkICRfcGF0aHNfdG9fZXhjbHVkZSA9I
GFycmF5KCk7CgogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBkaXJlY3RvcnkgbGlzdGluZyBpdGVtcyB0
byBiZSBpZ25vcmVkCiAgICAgICAgICogCiAgICAgICAgICogQHZhciBpdGVtc190b19pZ25vcmUgYXJyYXk
gb2Ygc3RyaW5nCiAgICAgICAgICovCiAgICAgICAgcHJvdGVjdGVkICRfaXRlbXNfdG9faWdub3JlID0gYX
JyYXkoICIuIiwgIi4uIiwgIi5EU19TdG9yZSIgKTsKCiAgICAgICAgLyoqCiAgICAgICAgICogVGhlIGl0Z
W1zIHRoYXQgYXJlIHRlcm1pbmFscyBhbmQgd2UgY2FuIGFkZCBkaXJlY3RseSBmb3IgdGhpcyBkaXJlY3Rv
cnkgKGFic29sdXRlIHBhdGhzKQogICAgICAgICAqIAogICAgICAgICAqIEB2YXIgdGVybWluYWxzIGFycmF
5IG9mIHN0cmluZwogICAgICAgICAqLwogICAgICAgIHByb3RlY3RlZCAkX3Rlcm1pbmFscyA9IGFycmF5KC
k7CgogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBicmFuY2ggbm9kZXMgb2Ygc3Vib3JkaW5hdGUgZGlyZ
WN0b3JpZXMgdGhhdCBhcmUgb24gYW4gZXhjbHVzaW9uIHBhdGgKICAgICAgICAgKiAKICAgICAgICAgKiBA
dmFyIGJyYW5jaGVzIGFycmF5IG9mIHN0cmluZyA9PiBwbHVnaW5idWRkeV96YmRpcgogICAgICAgICAqLwo
gICAgICAgIHByb3RlY3RlZCAkX2JyYW5jaGVzID0gYXJyYXkoKTsKCiAgICAgICAgLyoqCiAgICAgICAgIC
ogV2hldGhlciBvciBub3Qgd2UgY2FuIGNhbGwgYSBzdGF0dXMgY2FsYmFjawogICAgICAgICAqIAogICAgI
CAgICAqIEB2YXIgaGF2ZV9zdGF0dXNfY2FsbGJhY2sgYm9vbAogICAgICAgICAqLwoJCXByb3RlY3RlZCAk
X2hhdmVfc3RhdHVzX2NhbGxiYWNrID0gZmFsc2U7CgkJCiAgICAgICAgLyoqCiAgICAgICAgICogT2JqZWN
0LT5tZXRob2QgYXJyYXkgZm9yIHN0YXR1cyBmdW5jdGlvbgogICAgICAgICAqIAogICAgICAgICAqIEB2YX
Igc3RhdHVzX2NhbGxiYWNrIGFycmF5CiAgICAgICAgICovCgkJcHJvdGVjdGVkICRfc3RhdHVzX2NhbGxiY
WNrID0gYXJyYXkoKTsKCQkKCQkvKioKCQkgKglfX2NvbnN0cnVjdCgpCgkJICoJCgkJICoJRGVmYXVsdCBj
b25zdHJ1Y3Rvci4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJJHBhdGgJCQlUaGUgcGF0aCB0byBmb3J
tIGEgbm9kZSBmb3IKCQkgKglAcGFyYW0JCWFycmF5CQkkZXhjbHVkZXMJCVRoZSBsaXN0IG9mIGRpcnMvZm
lsZXMgdG8gZXhjbHVkZSAoYWJzb2x1dGUgcGF0aHMgd2l0aCAvIHRlcm1pbmF0b3IgZm9yIGRpcnMpCgkJI
CoJQHJldHVybgkJbnVsbAoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAkcGF0
aCwgJGV4Y2x1ZGVzID0gYXJyYXkoKSApIHsKCgkJCS8vIE5vcm1hbGl6ZSB0aGUgdHJhaWxpbmcgZGlyZWN
0b3J5IHNlcGFyYXRvciBvbiB0aGUgcGF0aAoJCQkkcGF0aCA9IHJ0cmltKCAkcGF0aCwgc2VsZjo6RElSRU
NUT1JZX1NFUEFSQVRPUlMgKSAuIHNlbGY6Ok5PUk1fRElSRUNUT1JZX1NFUEFSQVRPUjsKCQkJCgkJCS8vI
E5vcm1hbGl6ZSBwbGF0Zm9ybSBzcGVjaWZpYyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBpbiBwYXRoCgkJCSR0
aGlzLT5fcGF0aCA9IHN0cl9yZXBsYWNlKCBESVJFQ1RPUllfU0VQQVJBVE9SLCBzZWxmOjpOT1JNX0RJUkV
DVE9SWV9TRVBBUkFUT1IsICRwYXRoICk7CgkJCQoJCQkkdGhpcy0+X3BhdGhzX3RvX2V4Y2x1ZGUgPSAkZX
hjbHVkZXM7CgkJCQoJCQkkY29udGVudCA9IHNjYW5kaXIoICR0aGlzLT5fcGF0aCApOyAvLyBHZXQgdGhlI
GRpcmVjdG9yeSBjb250ZW50LCB3aWxsIGJlIHNpbXBsZSBuYW1lcwoJCQkKCQkJLy8gUHJvY2VzcyBlYWNo
IGl0ZW0gZm9yIGlnbm9yaW5nLCB0cmVhdGluZyBhcyBhIHRlcm1pbmFsIG9yIGFzIGEgYnJhbmNoCgkJCWZ
vcmVhY2ggKCAkY29udGVudCBhcyAmJGl0ZW0gKSB7CgoJCQkJLy8gSW5pdGlhbGx5IGNoZWNrIHRoZSBzaW
1wbGUgbmFtZQoJCQkJaWYgKCBpbl9hcnJheSggJGl0ZW0sICR0aGlzLT5faXRlbXNfdG9faWdub3JlICkgK
SB7CgoJCQkJCS8vIFRoaXMgaXMganVzdCBmbHVmZiBpbiB0aGUgZGlyZWN0b3J5IGxpc3RpbmcKCQkJCQlj
b250aW51ZTsKCQkJCQkKCQkJCX0gZWxzZWlmICggaXNfZGlyKCAoICR0aGlzLT5fcGF0aCAuICRpdGVtICk
gKSApIHsKCgkJCQkJLy8gSXQncyBhIGRpcmVjdG9yeSwgY2hlY2sgZm9yIG1hdGNoaW5nIGV4Y2x1c2lvbi
BvciBiZWluZyBwcmVmaXggb2YgZXhjbHVzaW9uCgkJCQkJaWYgKCBpbl9hcnJheSggKCAkdGhpcy0+X3Bhd
GggLiAkaXRlbSAuIHNlbGY6Ok5PUk1fRElSRUNUT1JZX1NFUEFSQVRPUiApLCAkdGhpcy0+X3BhdGhzX3Rv
X2V4Y2x1ZGUgKSApIHsKCQkJCQkKCQkJCQkJLy8gRXhhY3QgbWF0Y2ggdG8gYW4gZXhjbHVzaW9uLCBleGN
sdWRlIHRoaXMgZGlyZWN0b3J5IGNvbXBsZXRlbHkKCQkJCQkJY29udGludWU7CgkJCQkJCQoJCQkJCX0gZW
xzZWlmICggJHRoaXMtPmluX2FycmF5X3ByZWZpeCggKCAkdGhpcy0+X3BhdGggLiAkaXRlbSAuIHNlbGY6O
k5PUk1fRElSRUNUT1JZX1NFUEFSQVRPUiApLCAkdGhpcy0+X3BhdGhzX3RvX2V4Y2x1ZGUgKSApIHsKCgkJ
CQkJCS8vIE5lZWQgYSBuZXcgbm9kZSwgYWRkIHRvIHRoZSBub2RlIGFycmF5IChhYnNvbHV0ZSBkaXIgcGF
0aCBpcyBrZXkpCgkJCQkJCSR0aGlzLT5fYnJhbmNoZXNbICggJHRoaXMtPl9wYXRoIC4gJGl0ZW0gKSBdID
0gbmV3IHBsdWdpbmJ1ZGR5X3piZGlyKCAoICR0aGlzLT5fcGF0aCAuICRpdGVtIC4gc2VsZjo6Tk9STV9ES
VJFQ1RPUllfU0VQQVJBVE9SICksICR0aGlzLT5fcGF0aHNfdG9fZXhjbHVkZSwgJHRoaXMgKTsKCQkJCQkJ
CgkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gTmVpdGhlciBleGNsdXNpb24gbm9yIGV4Y2x1c2lvbiB
wcmVmaXggc28gd2VsbCB0cmVhdCBpdCBhcyBhIHRlcm1pbmFsCgkJCQkJCSR0aGlzLT5fdGVybWluYWxzW1
0gPSAoICR0aGlzLT5fcGF0aCAuICRpdGVtICk7CgkJCQkJCgkJCQkJfQoJCQkJCQoJCQkJfSBlbHNlIHsKC
gkJCQkJLy8gQXNzdW1lIGl0J3MgYSBmaWxlLCBjaGVjayBmb3IgbWF0Y2hpbmcgZXhjbHVzaW9uCgkJCQkJ
aWYgKCBpbl9hcnJheSggKCAkdGhpcy0+X3BhdGggLiAkaXRlbSApLCAkdGhpcy0+X3BhdGhzX3RvX2V4Y2x
1ZGUgKSApIHsKCQkJCQkKCQkJCQkJLy8gRXhhY3QgbWF0Y2ggdG8gYW4gZXhjbHVzaW9uLCBleGNsdWRlIH
RoaXMgZmlsZSBjb21wbGV0ZWx5CgkJCQkJCWNvbnRpbnVlOwoJCQkJCQkKCQkJCQl9IGVsc2UgewoJCQkJC
QoJCQkJCQkvLyBOb3QgYW4gZXhjbHVzaW9uIHNvIGl0J3MgYSB0ZXJtaW5hbAoJCQkJCQkkdGhpcy0+X3Rl
cm1pbmFsc1tdID0gKCAkdGhpcy0+X3BhdGggLiAkaXRlbSApOwoJCQkJCQkKCQkJCQl9CgkJCQkJCgkJCQl
9CQoJCQl9CgkJCQkJCQkKCQl9CgkJCgkJLyoqCgkJICoJX19kZXN0cnVjdCgpCgkJICoJCgkJICoJRGVmYX
VsdCBkZXN0cnVjdG9yLgoJCSAqCQoJCSAqCUByZXR1cm4JCW51bGwKCQkgKgoJCSAqLwoJCXB1YmxpYyBmd
W5jdGlvbiBfX2Rlc3RydWN0KCApIHsKCgkJfQoJCQkJCgkJLyoqCgkJICoJc2V0X3N0YXR1c19jYWxsYmFj
aygpCgkJICoKCQkgKglTZXRzIGEgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWN
oIHN0YXR1cyB1cGRhdGUuCgkJICogIEFyZ3VtZW50IG11c3QgYXQgbGVhc3QgYmUgYSBub24tZW1wdHkgYX
JyYXkgd2l0aCAyIGVsZW1lbnRzCgkJICoKCQkgKglAcGFyYW0JCWFycmF5IAkkY2FsbGJhY2sJT2JqZWN0L
T5tZXRob2QgdG8gY2FsbCBmb3Igc3RhdHVzIHVwZGF0ZXMuCgkJICoJQHJldHVybgkJbnVsbAoJCSAqCgkJ
ICovCgkJcHVibGljIGZ1bmN0aW9uIHNldF9zdGF0dXNfY2FsbGJhY2soICRjYWxsYmFjayA9IGFycmF5KCk
gKSB7CgkJCgkJCWlmICggaXNfYXJyYXkoICRjYWxsYmFjayApICYmICFlbXB0eSggJGNhbGxiYWNrICkgJi
YgKCAyID09IGNvdW50KCAkY2FsbGJhY2sgKSApICkgewoJCQkKCQkJCSR0aGlzLT5fc3RhdHVzX2NhbGxiY
WNrID0gJGNhbGxiYWNrOwoJCQkJJHRoaXMtPl9oYXZlX3N0YXR1c19jYWxsYmFjayA9IHRydWU7CgoJCQl9
CgkJCQoJCX0KCQkKCQkvKioKCQkgKglzdGF0dXMoKQoJCSAqCQoJCSAqCUludm9rZSBzdGF0dXMgbWV0aG9
kIG9mIHBhcmVudCBpZiBpdCBleGlzdHMKCQkgKiAgTXVzdCBiZSBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIG
90aGVyd2lzZSBpZ25vcmUgdGhlIGNhbGwKCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJJHR5cGUJCShFe
HBlY3RlZCkgU3RhdHVzIG1lc3NhZ2UgdHlwZS4KCQkgKglAcGFyYW0JCXN0cmluZwkJJG1lc3NhZ2UJKEV4
cGVjdGVkKSBTdGF0dXMgbWVzc2FnZS4KCQkgKglAcmV0dXJuCQludWxsCgkJICoKCQkgKi8KCQlwdWJsaWM
gZnVuY3Rpb24gc3RhdHVzKCkgewoJCQoJCQlpZiAoICR0aGlzLT5faGF2ZV9zdGF0dXNfY2FsbGJhY2sgJi
YgKCBmdW5jX251bV9hcmdzKCkgPiAwICkgKSB7CgoJCQkJJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CgkJC
QljYWxsX3VzZXJfZnVuY19hcnJheSggJHRoaXMtPl9zdGF0dXNfY2FsbGJhY2ssICRhcmdzICk7CgkJCQkK
CQkJfQoJCQkKCQl9CgkJCgkJLyoqCgkJICoJZ2V0X3Rlcm1pbmFscygpCgkJICoJCgkJICoJUmV0dXJucyB
0aGUgYXJyYXkgb2YgdGVybWluYWxzIGZyb20gdGhpcyBkaXIgcGx1cyBzdWJvcmRpbmF0ZXMKCQkgKgkKCQ
kgKglAcmV0dXJuCQlhcnJheQlGbGF0IGFycmF5IG9mIHRlcm1pbmFsIGZpbGVuYW1lcyBhbmQgZGlyZWN0b
3J5IG5hbWVzCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0X3Rlcm1pbmFscyggKSB7CgkJCgkJ
CS8vIE1pbmltdW0gaXMgb3VyIHRlcm1pbmFscwoJCQkkYWxsX3Rlcm1pbmFscyA9ICR0aGlzLT5fdGVybWl
uYWxzOwoJCQkKCQkJLy8gTm93IGFkZCB0ZXJtaW5hbHMgZnJvbSBlYWNoIHN1Ym9yZGluYXRlCgkJCWZvcm
VhY2ggKCAkdGhpcy0+X2JyYW5jaGVzIGFzICRicmFuY2ggKSB7CgkJCQoJCQkJJGFsbF90ZXJtaW5hbHMgP
SBhcnJheV9tZXJnZSggJGFsbF90ZXJtaW5hbHMsICRicmFuY2gtPmdldF90ZXJtaW5hbHMoKSApOwoJCQkJ
CgkJCX0KCQkJCgkJCXJldHVybiAkYWxsX3Rlcm1pbmFsczsKCQkJCgkJfQoJCQoJCS8qKgoJCSAqCWdldF9
yZWxhdGl2ZV9leGNsdWRlcygpCgkJICoJCgkJICoJUmV0dXJucyB0aGUgYXJyYXkgb2YgZXhjbHVzaW9ucy
B3aXRoIG9wdGlvbmFsIGRpcmVjdG9yeSBwcmVmaXggcmVtb3ZlZAoJCSAqCQoJCSAqCUBwYXJhbQkJc3Rya
W5nCVRoZSBiYXNlIGRpcmVjdG9yeSBwcmVmaXggdG8gYmUgcmVtb3ZlZAoJCSAqCUByZXR1cm4JCWFycmF5
CUZsYXQgYXJyYXkgb2YgcmVsYXRpdmUgKHRvIHNpdGUgcm9vdCkgZXhjbHVkZWQgZmlsZW5hbWVzIGFuZCB
kaXJlY3RvcnkgbmFtZXMKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBnZXRfcmVsYXRpdmVfZXhjbH
VkZXMoICRiYXNlID0gJycgKSB7CgkJCgkJCS8vIFRoZSBiYXNlZGlyIG11c3QgaGF2ZSBhIHRyYWlsaW5nI
G5vcm1hbGl6ZWQgZGlyZWN0b3J5IHNlcGFyYXRvcgoJCQkkYmFzZWRpciA9ICggcnRyaW0oIHRyaW0oICRi
YXNlICksIHNlbGY6OkRJUkVDVE9SWV9TRVBBUkFUT1JTICkgKSAuIHNlbGY6Ok5PUk1fRElSRUNUT1JZX1N
FUEFSQVRPUjsKCQkKCQkJLy8gTm9ybWFsaXplIHBsYXRmb3JtIHNwZWNpZmljIGRpcmVjdG9yeSBzZXBhcm
F0b3JzIGluIHBhdGgKCQkJJGJhc2VkaXIgPSBzdHJfcmVwbGFjZSggRElSRUNUT1JZX1NFUEFSQVRPUiwgc
2VsZjo6Tk9STV9ESVJFQ1RPUllfU0VQQVJBVE9SLCAkYmFzZWRpciApOwoJCQkKCQkJJHJlbGF0aXZlX2V4
Y2x1ZGVzID0gJHRoaXMtPl9wYXRoc190b19leGNsdWRlOwoJCQkKCQkJZm9yZWFjaCAoICRyZWxhdGl2ZV9
leGNsdWRlcyBhcyAmJGV4Y2x1ZGUgKSB7CgkJCQoJCQkJLy8gUmVtb3ZlIGJhc2UgcHJlZml4IGJ1dCBsZW
F2ZSBsZWFkaW5nIG5vcm1hbGl6ZWQgZGlyZWN0b3J5IHNlcGFyYXRvcgoJCQkJJGV4Y2x1ZGUgPSBzdHJfc
mVwbGFjZSggcnRyaW0oICRiYXNlZGlyLCBzZWxmOjpOT1JNX0RJUkVDVE9SWV9TRVBBUkFUT1IgKSwgJycs
ICRleGNsdWRlICk7CgkJCQoJCQl9CgkJCQoJCQlyZXR1cm4gJHJlbGF0aXZlX2V4Y2x1ZGVzOwoJCQkKCQl
9CgkJCgkJLyoqCgkJICoJaW5fYXJyYXlfcHJlZml4KCkKCQkgKgkKCQkgKglDaGVjayBpZiB0aGUgZ2l2ZW
4gc3RyaW5nIGlzIGEgcHJlZml4IG9mIGFueSBzdHJpbmcgaW4gdGhlIGdpdmVuIGFycmF5CgkJICoJCgkJI
CogIEBwYXJhbQkJc3RyaW5nCSRwcmVmaXgJCVRoZSBwcmVmaXggc3RyaW5nCgkJICogIEBwYXJhbQkJYXJy
YXkJJGNhbmRpZGF0ZXMJVGhlIGFycmF5IG9mIHN0cmluZ3MKCQkgKglAcmV0dXJuCQlib29sCXRydWUgaWY
gdGhlIHN0cmluZyBpcyBhIHByZWZpeCwgZmFsc2Ugb3RoZXJ3aXNlCgkJICoKCQkgKi8KCQlwdWJsaWMgZn
VuY3Rpb24gaW5fYXJyYXlfcHJlZml4KCAkcHJlZml4LCBhcnJheSAkY2FuZGlkYXRlcyApIHsKCgkJCWZvc
mVhY2ggKCAkY2FuZGlkYXRlcyBhcyAkY2FuZGlkYXRlICkgewoJCQkKCQkJCWlmICggISggZmFsc2UgPT09
IHN0cnBvcyggJGNhbmRpZGF0ZSwgJHByZWZpeCA
pICkgKSB7CgoJCQkJCS8vIFdlIGZvdW5kIHRoZSBwcmVmaXgKCQkJCQlyZXR1cm4gdHJ1ZTsKCQkJCQkKCQ
kJCX0KCQkJCQoJCQl9CgkJCQoJCQkvLyBHb3QgdGhpcyBmYXIgc28gbm90IGEgcHJlZml4CgkJCXJldHVyb
iBmYWxzZTsKCQkJCgkJfQoJCQoJfSAvLyBlbmQgcGx1Z2luYnVkZHlfemJkaXIgY2xhc3MuCQoJCn0KPz4=
###PACKDATA,FILE_END,/lib/zipbuddy/zbdir.php,importbuddy/lib/zipbuddy/zbdir.php
###PACKDATA,FILE_START,/lib/zipbuddy/zbzip.php,importbuddy/lib/zipbuddy/zbzip.php
UEsDBAoAAAAAAC8ELUHj5ZWwDAAAAAwAAAAIABwAdGVzdC50eHRVVAkAA8obUVDjG1FQdXgLAAEE+AEAAAQ
UAAAASGVsbG8gV29ybGQKUEsBAh4DCgAAAAAALwQtQePllbAMAAAADAAAAAgAGAAAAAAAAQAAAKSBAAAAAH
Rlc3QudHh0VVQFAAPKG1FQdXgLAAEE+AEAAAQUAAAAUEsFBgAAAAABAAEATgAAAE4AAAAAAA==
###PACKDATA,FILE_END,/lib/zipbuddy/zbzip.php,importbuddy/lib/zipbuddy/zbzip.php
###PACKDATA,FILE_START,/lib/zipbuddy/zbzipcore.php,importbuddy/lib/zipbuddy/zbzipco
re.php
PD9waHAKLyoqCiAqCXBsdWdpbmJ1ZGR5X3piemlwY29yZSBDbGFzcwogKgogKiAgUHJvdmlkZXMgYW4gYWJ
zdHJhY3QgemlwIGNhcGFiaWxpdHkgY29yZSBjbGFzcwogKgkKICoJVmVyc2lvbjogMS4wLjAKICoJQXV0aG
9yOgogKglBdXRob3IgVVJJOgogKgogKglAcGFyYW0JCSRwYXJlbnQJCW9iamVjdAkJT3B0aW9uYWwgcGFyZ
W50IG9iamVjdCB3aGljaCBjYW4gcHJvdmlkZSBmdW5jdGlvbnMgZm9yIHJlcG9ydGluZywgZXRjLgogKglA
cmV0dXJuCQludWxsCiAqCiAqLwppZiAoICFjbGFzc19leGlzdHMoICJwbHVnaW5idWRkeV96YnppcGNvcmU
iICkgKSB7CgoJLyoqCgkgKglwbHVnaW5idWRkeV9zdGF0IENsYXNzCgkgKgoJICoJQ29udmVuaWVuY2UgZm
9yIGJlaW5nIGFibGUgdG8gYXVnbWVudCB0aGUgc3RhdCgpIGZ1bmN0aW9uIGVpdGhlciBpbiB0aGUgZXZlb
nQKCSAqCW9mIGZhaWx1cmUgb3IgZm9yIGNhc2VzIHdoZXJlIHRoZSBhY3R1YWwgZmlsZSBzaXplIHJlcG9y
dGVkIGlzIHRvbyBsYXJnZSBmb3IgdGhlCgkgKgkoc2lnbmVkKSBpbnRlZ2VyIHR5cGUgaW4gd2hpY2ggY2F
zZSB3ZSBjcmVhdGUgYW4gYWRkaXRpb25hbCBhc3NvY2lhdGl2ZSBmaWVsZCBpbgoJICoJdGhlIGFycmF5IH
doaWNoIGlzIGEgZG91YmxlIGFuZCBjb250YWlucyB0aGUgZmlsZSBzaXplLgoJICoJRm9yIG5vdyBpdCdzI
Gp1c3Qgc29tZSBzdGF0aWMgbWV0aG9kcyBidXQgbWlnaHQgZXh0ZW5kIHRvIGJlIGEgdHJ1ZSBjbGFzcy4K
CSAqCgkgKglAcGFyYW0Jc3RyaW5nCQkkZmlsZW5hbWUJVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gc3RhdAo
JICoJQHJldHVybglhcnJheXxib29sCQkJCUZhbHNlIG9uIGZhaWx1cmUgb3RoZXJ3aXNlIGFycmF5CgkgKg
oJICovCgljbGFzcyBwbHVnaW5idWRkeV9zdGF0IHsKCgkJY29uc3QgVEhJUlRZX1RXT19CSVQgPSAzMjsKC
Qljb25zdCBTSVhUWV9GT1VSX0JJVCA9IDY0OwoJCQoJCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaXNfcGhw
KCAkYml0cyApIHsKCQkKCQkJJHJlc3VsdCA9ICggKCBQSFBfSU5UX1NJWkUgKiA4ICkgPT0gJGJpdHMgKSA
/IHRydWUgOiBmYWxzZTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQoJCX0KCQoJCXB1YmxpYyBzdGF0aW
MgZnVuY3Rpb24gc3RhdCggJGZpbGVuYW1lICkgewoJCQoJCQkkcmVzdWx0ID0gZmFsc2U7CgoJCQkvLyBJZ
iB0aGUgZmlsZSBpcyByZWFkYWJsZSB0aGVuIHdlIHNob3VsZCBiZSBhYmxlIHRvIHN0YXQgaXQgCgkJCWlm
ICggQGlzX3JlYWRhYmxlKCAkZmlsZW5hbWUgKSApIHsKCQkJCgkJCQkkc3RhdHMgPSBAc3RhdCggJGZpbGV
uYW1lICk7CgkJCQkKCQkJCWlmICggZmFsc2UgIT09ICRzdGF0cyApIHsKCQkJCQoJCQkJCS8vIExvb2tzIG
xpa2Ugd2UgZ290IHNvbWUgdmFsaWQgZGF0YSAtIGZvciBub3cganVzdCBwcm9jZXNzIHRoZSBzaXplCgkJC
QkJaWYgKCBzZWxmOjppc19waHAoIHNlbGY6OlRISVJUWV9UV09fQklUICkgKSB7CgkJCQkJCgkJCQkJCS8v
IFBIUCBpcyAzMiBiaXRzIHNvIHdlIG1heSBoYXZlIGEgZmlsZSBzaXplIHByb2JsZW0gb3ZlciAyR0IuCgk
JCQkJCS8vIFRoaXMgaXMgb25lIHdheSB0byB0ZXN0IGZvciBhIGZpbGUgc2l6ZSBwcm9ibGVtIC0gdGhlcm
UgYXJlIG90aGVycwoJCQkJCQlpZiAoIDAgPiAkc3RhdHNbICdzaXplJyBdICkgewoJCQkJCQkKCQkJCQkJC
S8vIFVuc2lnbmVkIGxvbmcgaGFzIGJlZW4gaW50ZXJwcmV0ZWQgYXMgYSBzaWduZWQgaW50IGFuZCBoYXMg
c2lnbiBiaXQKCQkJCQkJCS8vIHNldCBzbyBpcyBhcHBlYXJpbmcgYXMgbmVnYXRpdmUgLSBtYWdpY2FsbHk
gY29udmVydCBpdCB0byBhIGRvdWJsZQoJCQkJCQkJLy8gTm90ZTogdGhpcyBvbmx5IHdvcmtzIHRvIGdpdm
UgdXMgYW4gZXh0ZW5zaW9uIGZyb20gMkdCIHRvIDRHQiBidXQgdGhhdAoJCQkJCQkJLy8gc2hvdWxkIGJlI
GVub3VnaCBhcyB0aGUgdW5kZXJseWluZyBPUyBwcm9iYWJseSBjYW4ndCBzdXBwb3J0ID40R0Igb3IKCQkJ
CQkJCS8vIHppcCBjb21tYW5kIGNhbm5vdCBhbnl3YXkKCQkJCQkJCSRzdGF0c1sgJ2RzaXplJyBdID0gKCA
oZG91YmxlKTB4ODAwMDAwMDAgKyAoICRzdGF0c1sgJ3NpemUnIF0gJiAweDdGRkZGRkZGICkgKTsKCQkJCQ
kJCgkJCQkJCX0gZWxzZSB7CgkJCQkJCQoJCQkJCQkJLy8gQXNzdW1lIGl0J3MgdmFsaWQKCQkJCQkJCSRzd
GF0c1sgJ2RzaXplJyBdID0gKGRvdWJsZSkkc3RhdHNbICdzaXplJyBdOwoJCQkJCQkKCQkJCQkJfQoJCQkJ
CQkJCQkJCQkKCQkJCQl9IGVsc2UgewoJCQkJCQoJCQkJCQkvLyBMb29rcyBsaWtlIDY0IGJpdCBQSFAgc28
gZmlsZSBzaXplIHNob3VsZCBiZSBmaW5lCgkJCQkJCS8vIEZvcmNlIGFkZGVkIGl0ZW0gdG8gZG91YmxlIG
ZvciBjb25zaXN0ZW5jeQoJCQkJCQkkc3RhdHNbICdkc2l6ZScgXSA9IChkb3VibGUpJHN0YXRzWyAnc2l6Z
ScgXTsKCQkJCQkKCQkJCQl9CgkJCQkJCgkJCQkJLy8gQWRkIGFuIGFkZGl0aW9uYWwgaXRlbSBmb3Igc2hv
cnQgb2N0YWwgcmVwcmVzZW50YXRpb24gb2YgbW9kZQoJCQkJCSRzdGF0c1sgJ21vZGVfb2N0YWxfZm91cic
gXSA9IHN1YnN0ciggc3ByaW50ZiggJyVvJywgJHN0YXRzWyAnbW9kZScgXSApLCAtNCApOwoJCQkJCQoJCQ
kJCSRyZXN1bHQgPSAkc3RhdHM7CgkJCQkKCQkJCX0gZWxzZSB7CgkJCQkKCQkJCQkvLyBIbW0sIHN0YXQoK
SBmYWlsZWQgZm9yIHNvbWUgcmVhc29uIC0gY291bGQgYmUgYW4gTEZTIHByb2JsZW0gd2l0aCB0aGUKCQkJ
CQkvLyB3YXkgUEhQIGhhcyBiZWVuIGJ1aWx0IDotKAoJCQkJCS8vIFRPRE86IENvbnNpZGVyIGFsdGVybmF
0aXZlcyAtIG1heSBiZSBhYmxlIHRvIHVzZSBleGVjIHRvIHJ1biB0aGUKCQkJCQkvLyBjb21tYW5kIGxpbm
Ugc3RhdCBmdW5jdGlvbiB3aGljaCBfc2hvdWxkXyBiZSBvayBhbmQgd2UgY2FuIG1hcCBvdXRwdXQKCQkJC
QkvLyBpbnRvIHRoZSBzYW1lIGFycmF5IGZvcm1hdC4gVGhpcyBkb2VzIGRlcGVuZCBvbiBoYXZpbmcgZXhl
YygpIGFuZCB0aGUKCQkJCQkvLyBzdGF0IGNvbW1hbmQgYXZhaWxhYmxlIGFuZCBpdCdzIGRlZmluaXRlbHk
gbm90IGEgbmljZSBvcHRpb24KCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkKCQkJCX0KCQkJCgkJCX0KCQ
kJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQoJfQoKCWFic3RyYWN0IGNsYXNzIHBsdWdpbmJ1ZGR5X3pie
mlwY29yZSB7CgkKCQkvLyBzdGF0dXMgbWV0aG9kIHR5cGUgcGFyYW1ldGVyIHZhbHVlcyAtIHdvdWxkIGxp
a2UgYSBjbGFzcyBmb3IgdGhpcwoJCWNvbnN0IFNUQVRVU19UWVBFX0RFVEFJTFMgICAgICAgPSAnZGV0YWl
scyc7CgkJCgkJLy8gQ29uc3RhbnRzIGZvciBoYW5kbGluZyBwYXRocwoJCWNvbnN0IE5PUk1fRElSRUNUT1
JZX1NFUEFSQVRPUiAgPSAnLyc7CgkJY29uc3QgRElSRUNUT1JZX1NFUEFSQVRPUlMgICAgICA9ICcvXFwnO
woKCQkvLyBDb25zdGFudHMgZm9yIHJlc3VsdCBoYW5kbGluZwoJCWNvbnN0IE1BWF9FUlJPUl9MSU5FU19U
T19TSE9XICAgPSAyMDsKCQljb25zdCBNQVhfV0FSTklOR19MSU5FU19UT19TSE9XID0gMjA7CgkJY29uc3Q
gTUFYX09USEVSX0xJTkVTX1RPX1NIT1cgICA9IDIwOwoJCQoJCS8vIEVudW1lcmF0ZWQgdHlwZXMgdGhhdC
B3ZSBuZWVkIGZvciBub3cKCQkvLyBOb3RlOiBWYWx1ZXMgbXVzdCBiZSBzZXF1ZW50aWFsCgkJY29uc3QgT
1NfVFlQRV9VTktOT1dOIAk9CTA7CgkJY29uc3QgT1NfVFlQRV9OSVgJCT0JMTsKCQljb25zdCBPU19UWVBF
X1dJTgkJPQkyOwoJCWNvbnN0IE9TX1RZUEVfTUFYCQk9CTI7CgoJCWNvbnN0IFpJUF9XQVJOSU5HX1VOS05
PV04gIAkJCT0gMDsKCQljb25zdCBaSVBfV0FSTklOR19HRU5FUklDICAJCQk9IDE7CgkJY29uc3QgWklQX1
dBUk5JTkdfU0tJUFBFRCAgCQkJPSAyOwoJCWNvbnN0IFpJUF9XQVJOSU5HX0ZJTFRFUkVEIAkJCT0gMzsKC
Qljb25zdCBaSVBfV0FSTklOR19MT05HUEFUSCAJCQk9IDQ7CgkJY29uc3QgWklQX1dBUk5JTkdfSUdOT1JF
RF9TWU1MSU5LIAk9IDU7CgkJCgkJY29uc3QgWklQX09USEVSX1VOS05PV04gICAgICAgICA9IDA7CgkJY29
uc3QgWklQX09USEVSX0dFTkVSSUMgICAgICAgICA9IDE7CgkJY29uc3QgWklQX09USEVSX1NLSVBQRUQgIA
kJPSAyOwoJCWNvbnN0IFpJUF9PVEhFUl9GSUxURVJFRCAJCT0gMzsKCQljb25zdCBaSVBfT1RIRVJfTE9OR
1BBVEggCQk9IDQ7CgkJY29uc3QgWklQX09USEVSX0lHTk9SRURfU1lNTElOSwk9IDU7CgkJCgkJY29uc3Qg
Q09NTUFORF9VTktOT1dOX1BBVEgJPSAwOwoJCWNvbnN0IENPTU1BTkRfWklQX1BBVEgJCT0gMTsKCQljb25
zdCBDT01NQU5EX1VOWklQX1BBVEgJPSAyOwoKCQlwdWJsaWMgJF92ZXJzaW9uID0gJzEuMCc7CgoKICAgIC
AgICAvKioKICAgICAgICAgKiBUaGUgcGx1Z2luIHBhdGggZm9yIHRoaXMgcGx1Z2luCiAgICAgICAgICogC
iAgICAgICAgICogQHZhciAkX3BsdWdpblBhdGggc3RyaW5nCiAgICAgICAgICovCiAgICAgICAgcHVibGlj
ICRfcGx1Z2luUGF0aCA9ICcnOwoKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgcGF0aCBvZiB0aGlzIGR
pcmVjdG9yeSBub2RlCiAgICAgICAgICogCiAgICAgICAgICogQHZhciBwYXRoIHN0cmluZwogICAgICAgIC
AqLwogICAgICAgIHByb3RlY3RlZCAkX3BhdGggPSAiIjsKICAgICAgICAKICAgICAgICAvKioKICAgICAgI
CAgKiBUaGUgYWJzb2x1dGUgcGF0aHMgdG8gYmUgZXhjbHVkZWQsIG11c3QgYmUgLyB0ZXJtaW5hdGVkCiAg
ICAgICAgICogCiAgICAgICAgICogQHZhciBwYXRoc190b19leGNsdWRlIGFycmF5IG9mIHN0cmluZwogICA
gICAgICAqLwogICAgICAgIHByb3RlY3RlZCAkX3BhdGhzX3RvX2V4Y2x1ZGUgPSBhcnJheSgpOwoKICAgIC
AgICAvKioKICAgICAgICAgKiBUaGUgZGV0YWlscyBvZiB0aGUgbWV0aG9kCiAgICAgICAgICogCiAgICAgI
CAgICogQHZhciBtZXRob2RfZGV0YWlscyBhcnJheQogICAgICAgICAqLwoJCXByb3RlY3RlZCAkX21ldGhv
ZF9kZXRhaWxzID0gYXJyYXkoKTsKCQkKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgc2V0IG9mIHBhdGh
zIHdoZXJlIHRvIGxvb2sgZm9yIGV4ZWN1dGFibGVzCiAgICAgICAgICogCiAgICAgICAgICogQHZhciAgZX
hlY3V0YWJsZV9wYXRocwlhcnJheQogICAgICAgICAqLwoJCXByb3RlY3RlZCAkX2V4ZWN1dGFibGVfcGF0a
HMgPSBhcnJheSgpOwoJCQogICAgICAgIC8qKgogICAgICAgICAqIEFycmF5IG9mIHN0YXR1cyBpbmZvcm1h
dGlvbgogICAgICAgICAqIAogICAgICAgICAqIEB2YXIgc3RhdHVzIGFycmF5CiAgICAgICAgICovCgkJcHJ
vdGVjdGVkICRfc3RhdHVzID0gYXJyYXkoKTsKCQkKICAgICAgICAvKioKICAgICAgICAgKiBFbnVtZXJhdG
VkIE9TIHR5cGUKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIG9zX3R5cGUJaW50CiAgICAgICAgICovC
gkJcHJvdGVjdGVkICRfb3NfdHlwZSA9IHNlbGY6Ok9TX1RZUEVfVU5LTk9XTjsKCQkKICAgICAgICAvKioK
ICAgICAgICAgKiBDb252ZW5pZW5jZSBib29sZWFuIGluZGljYXRpbmcgaWYgUEhQIGhhcyBleGVjX2RpciB
zZXQgb3Igbm90CiAgICAgICAgICogCiAgICAgICAgICogQHZhciBleGVjX2Rpcl9zZXQJYm9vbAogICAgIC
AgICAqLwoJCXByb3RlY3RlZCAkX2V4ZWNfZGlyX3NldCA9IGZhbHNlOwoJCQogICAgICAgIC8qKgogICAgI
CAgICAqIENvbnZlbmllbmNlIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBXYXJuaW5ncyBzaG91bGQgYmUgaWdu
b3JlZCB3aGVuIGJ1aWxkaW5nIGFyY2hpdmVzCiAgICAgICAgICogCiAgICAgICAgICogQHZhciBpZ25vcmV
fd2FybmluZ3MJYm9vbAogICAgICAgICAqLwoJCXByb3RlY3RlZCAkX2lnbm9yZV93YXJuaW5ncyA9IGZhbH
NlOwoJCQogICAgICAgIC8qKgogICAgICAgICAqIENvbnZlbmllbmNlIGJvb2xlYW4gaW5kaWNhdGluZyBpZ
iBzeW1saW5rcyBzaG91bGQgYmUgaWdub3JlZC9ub3QtZm9sbG93ZWQgd2hlbiBidWlsZGluZyBhcmNoaXZl
cwogICAgICAgICAqIAogICAgICAgICAqIEB2YXIgaWdub3JlX3N5bWxpbmtzCWJvb2wKICAgICAgICAgKi8
KCQlwcm90ZWN0ZWQgJF9pZ25vcmVfc3ltbGlua3MgPSBmYWxzZTsKCQkKICAgICAgICAgLyoqCiAgICAgIC
AgICogQ29udmVuaWVuY2UgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGNvbXByZXNzaW9uIHNob3VsIGRiZSB1c
2VkIHdoZW4gYnVpbGRpbmcgYXJjaGl2ZXMKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIGNvbXByZXNz
aW9uCWJvb2wKICAgICAgICAgKi8KCQlwcm90ZWN0ZWQgJF9jb21wcmVzc2lvbiA9IGZhbHNlOwoJCQogICA
gICAgLyoqCiAgICAgICAgICogVXNlZCB0byB0cmFuc2xhdGUgb3VyIHdhcm5pbmdzIHJlYXNvbnMgaW50by
BhIGxvbmdlciBkZXNjcmlwdGlvbgogICAgICAgICAqIAogICAgICAgICAqIEB2YXIgYXJyYXkKICAgICAgI
CAgKi8KCQlwdWJsaWMgc3RhdGljICRfd2FybmluZ19kZXNjID0gYXJyYXkoIHNlbGY6OlpJUF9XQVJOSU5H
X1VOS05PV04gIAkJCT0+ICd3YXJuaW5nIHJlYXNvbiB1bmtub3duJywKCQkJCQkJCQkJCQkgIHNlbGY6Olp
JUF9XQVJOSU5HX0dFTkVSSUMgIAkJCT0+ICdnZW5lcmFsIHByb2JsZW0gYXMgaW5kaWNhdGVkJywKCQkJCQ
kJCQkJCQkgIHNlbGY6OlpJUF9XQVJOSU5HX1NLSVBQRUQgIAkJCT0+ICdmaWxlIHVucmVhZGFibGUgb3IgZ
G9lcyBub3QgZXhpc3QnLAoJCQkJCQkJCQkJCSAgc2VsZjo6WklQX1dBUk5JTkdfRklMVEVSRUQgCQkJPT4g
J2ZpbGUgZmlsdGVyZWQnLAoJCQkJCQkJCQkJCSAgc2VsZjo6WklQX1dBUk5JTkdfTE9OR1BBVEggCQkJPT4
gJ2ZpbGVuYW1lIHBhdGggdG9vIGxvbmcnLAoJCQkJCQkJCQkJCSAgc2VsZjo6WklQX1dBUk5JTkdfSUdOT1
JFRF9TWU1MSU5LICAJPT4gJ2ZpbGUgaXMgYSBzeW1saW5rIGFuZCBpcyBpZ25vcmVkIGJhc2VkIG9uIHNld
HRpbmdzJywKCQkJCQkJCQkJCQkgKTsKCgkJcHVibGljIHN0YXRpYyAkX290aGVyX2Rlc2MgICA9IGFycmF5
KCBzZWxmOjpaSVBfT1RIRVJfVU5LTk9XTiAJCQk9PiAnb3RoZXIgcmVhc29uIHVua25vd24nLAoJCQkJCQk
JCQkJCSAgc2VsZjo6WklQX09USEVSX0dFTkVSSUMgCQkJPT4gJ290aGVyIHByb2JsZW0gYXMgaW5kaWNhdG
VkJywKCQkJCQkJCQkJCQkgIHNlbGY6OlpJUF9PVEhFUl9TS0lQUEVEIAkJCT0+ICdmaWxlIHVucmVhZGFib
GUgb3IgZG9lcyBub3QgZXhpc3QnLAoJCQkJCQkJCQkJCSAgc2VsZjo6WklQX09USEVSX0ZJTFRFUkVECQkJ
PT4gJ2ZpbGUgZmlsdGVyZWQnLAoJCQkJCQkJCQkJCSAgc2VsZjo6WklQX09USEVSX0xPTkdQQVRIIAkJCT0
+ICdmaWxlbmFtZSBwYXRoIHRvbyBsb25nJywKCQkJCQkJCQkJCQkgIHNlbGY6OlpJUF9PVEhFUl9JR05PUk
VEX1NZTUxJTksJPT4gJ2ZpbGUgaXMgYSBzeW1saW5rIGFuZCBpcyBpZ25vcmVkIGJhc2VkIG9uIHNldHRpb
mdzJywKCQkJCQkJCQkJCQkgKTsKCiAgICAgICAgLyoqCiAgICAgICAgICogVGhlIFNlcnZlciBBUEkgdGhh
dCBpcyBpbiB1c2UKICAgICAgICAgKiAKICAgICA
gICAgKiBAdmFyIHN0cmluZwogICAgICAgICAqLwoJCXByb3RlY3RlZCAkX3NhcGlfbmFtZSA9ICIiOwoKCQ
kvKioKCQkgKglfX2NvbnN0cnVjdCgpCgkJICoJCgkJICoJRGVmYXVsdCBjb25zdHJ1Y3Rvci4KCQkgKgkKC
QkgKglAcmV0dXJuCQludWxsCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7
CgkJCgkJCS8vIE1ha2Ugc3VyZSB3ZSBrbm93IHdoYXQgd2UgYXJlIHJ1bm5pbmcgb24gZm9yIGxhdGVyCgk
JCSR0aGlzLT5zZXRfb3NfdHlwZSgpOwoJCQkKCQkJLy8gRGVyaXZlIHdoZXRoZXIgd2UgYXJlIGlnbm9yaW
5nIFdhcm5pbmdzIG9yIG5vdCAoZXhwZWN0ZWQgdG8gYmUgb3ZlcnJpZGRlbiBieSB1c2VyKQoJCQkkdGhpc
y0+c2V0X2lnbm9yZV93YXJuaW5ncygpOwoJCQkKCQkJLy8gRGVyaXZlIHdoZXRoZXIgd2UgYXJlIGlnbm9y
aW5nL25vdC1mb2xsb3dpbmcgc3ltbGlua3Mgb3Igbm90IChleHBlY3RlZCB0byBiZSBvdmVycmlkZGVuIGJ
5IHVzZXIpCgkJCSR0aGlzLT5zZXRfaWdub3JlX3N5bWxpbmtzKCk7CgkJCQoJCQkvLyBEZXJpdmUgd2hldG
hlciBjb21wcmVzc2lvbiBzaG91bGQgYmUgdXNlZCAoZXhwZWN0ZWQgdG8gYmUgb3ZlcnJpZGRlbiBieSB1c
2VyKQoJCQkkdGhpcy0+c2V0X2NvbXByZXNzaW9uKCk7CgkJCQoJCQkvLyBTcGVjaWZpYyBtZXRob2QgY29u
c3RydWN0b3Igd2lsbCBvdmVycmlkZSBzb21lIG9mIHRoZXNlIGFuZCB0aGUgdGVzdHMgbWF5IG92ZXJyaWR
lIG90aGVycwoJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXSA9IGFycmF5KCAnbmFtZScgPT
4gJ1Vua25vd24gTWV0aG9kJywKCQkJCQkJCQkJCQkJCSAgJ2NvbXBhdGliaWxpdHknID0+IGZhbHNlICwKC
QkJCQkJCQkJCQkJCSAgJ2lzX2NoZWNrZXInID0+IGZhbHNlLAoJCQkJCQkJCQkJCQkJICAnaXNfbGlzdGVy
JyA9PiBmYWxzZSwKCQkJCQkJCQkJCQkJCSAgJ2lzX2FyY2hpdmVyJyA9PiBmYWxzZSwKCQkJCQkJCQkJCQk
JCSAgJ2lzX3VuYXJjaGl2ZXInID0+IGZhbHNlLAoJCQkJCQkJCQkJCQkJICAnaXNfY29tbWVudGVyJyA9Pi
BmYWxzZSwKCQkJCQkJCQkJCQkJCSAgJ2lzX3ppcHBlcicgPT4gZmFsc2UsCgkJCQkJCQkJCQkJCQkgICdpc
191bnppcHBlcicgPT4gZmFsc2UsCgkJCQkJCQkJCQkJCQkgICdpc19leHRyYWN0b3InID0+IGZhbHNlLAoJ
CQkJCQkJCQkJCQkJICAnY2FuX2FkZF92aXJ0dWFsX2ZpbGUnID0+IGZhbHNlCgkJCQkJCQkJCQkJCQkgKTs
KCgkJCS8vIE11c3QgX25vdF8gZGVmYXVsdCAncGF0aCcgdmFsdWVzIGJlY2F1c2Ugd2UgdGVzdCB3aGV0aG
VyIHNldCBvciBub3QgdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlCgkJCSR0aGlzLT5fbWV0aG9kX2RldGFpb
HNbICdwYXJhbScgXSA9IGFycmF5KCAvLyAncGF0aCcgPT4gJycsCgkJCQkJCQkJCQkJCQkgICAnemlwJyA9
PiBhcnJheSggLy8gJ3BhdGgnID0+ICcnLAoJCQkJCQkJCQkJCQkJICAgCQkndmVyc2lvbicgPT4gYXJyYXk
oICdtYWpvcicgPT4gMCwgJ21pbm9yJyA9PiAwICksCgkJCQkJCQkJCQkJCQkgICAJCSdvcHRpb25zJyA9Pi
AnJywKCQkJCQkJCQkJCQkJCSAgIAkJJ2luZm8nID0+ICcnICksCgkJCQkJCQkJCQkJCQkgICAndW56aXAnI
D0+IGFycmF5KCAvLyAncGF0aCcgPT4gJycsCgkJCQkJCQkJCQkJCQkgICAJCSd2ZXJzaW9uJyA9PiBhcnJh
eSggJ21ham9yJyA9PiAwLCAnbWlub3InID0+IDAgKSwKCQkJCQkJCQkJCQkJCSAgIAkJJ29wdGlvbnMnID0
+ICcnLAoJCQkJCQkJCQkJCQkJICAgCQknaW5mbycgPT4gJycgKQoJCQkJCQkJCQkJCQkJICk7CgoJCX0KCQ
kKCQkvKioKCQkgKglfX2Rlc3RydWN0KCkKCQkgKgkKCQkgKglEZWZhdWx0IGRlc3RydWN0b3IuCgkJICoJC
gkJICoJQHJldHVybgkJbnVsbAoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoICkg
ewoKCQl9CgkJCQkKCQkvKioKCQkgKglzZXRfb3NfdHlwZSgpCgkJICoKCQkgKglTZXRzIHRoZSBpZGVudGl
maWVyIGZvciB0aGUgT1MgdHlwZSB0aGF0IHdlIGFyZSBydW5uaW5nIG9uIHRoYXQgY2FuIHRoZW4gYmUgdX
NlZCBmb3IKCQkgKglPUyBzcGVjaWZpYyBwcm9jZXNzaW5nLiBJZiBubyBlbnVtZXJhdGVkIHR5cGUgdmFsd
WUgaXMgcGFzc2VkIGluIHRoZW4gZGVkdWNlIHRoZQoJCSAqCXZhbHVlIHRvIHNldCBmcm9tIHN5c3RlbSBp
bmZvcm1hdGlvbi4KCQkgKglOb3RlOiBDdXJyZW50bHkgdXNlcyBQSFBfT1Mgd2hpY2ggc3RyaWN0bHkgc3B
lYWtpbmcgaXMgdGhlIE9TIHRoYXQgUEhQIHdhcyBidWlsdCBvbgoJCSAqCXdoZXJlYXMgcGhwX3VuYW1lKC
kgY291bGQgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBPUyBiZWluZyBydW4gb24gaWYgd2Ugc
mVhbGx5CgkJICoJbmVlZCB0aGF0IChhbmQgc29tZXRpbWVzIGl0IGhhcyB0byByZXZlcnQgYmFjayB0byBq
dXN0IHJldHVybmluZyB0aGUgUEhQX09TIHZhbHVlIGlmCgkJICoJdGhlIE9TIHVuYW1lIGxpYnJhcnkgZG9
lc24ndCBleGlzdCBvciBpc24ndCB3b3JraW5nIHByb3Blcmx5LgoJCSAqCgkJICoJQHBhcmFtCQkkb3NfdH
lwZQlpbnQJCU9TIHR5cGUgdG8gc2V0IChjYW4gYmUgdXNlZCB0byBvdmVycmlkZSBkZWR1Y2VkIHR5cGUpC
gkJICoKCQkgKi8KCQkgcHVibGljIGZ1bmN0aW9uIHNldF9vc190eXBlKCAkb3NfdHlwZSA9IFBIUF9JTlRf
TUFYICkgewoJCSAKCQkgCS8vIENoZWNrIGlmIHdlIGhhdmUgYmVlbiBnaXZlbiBhIHZhbGlkIGVudW1lcmF
0ZWQgdmFsdWUKCQkgCWlmICggKCBzZWxmOjpPU19UWVBFX1VOS05PV04gPCAkb3NfdHlwZSApICYmICggc2
VsZjo6T1NfVFlQRV9NQVggPj0gJG9zX3R5cGUgKSApIHsKCQkgCQoJCSAJCSR0aGlzLT5fb3NfdHlwZSA9I
CRvc190eXBlOwoJCSAJCQoJCSAJfSBlbHNlIHsKCQkgCQkKCQkgCQkvLyBVc2UgVUMgZm9yIGVhc2UgLSB0
aGlzIF9zaG91bGQgbm90PyBjYXVzZSBhbnkgYW1iaWd1aXR5CgkJIAkJJG9zX25hbWUgPSBzdHJ0b3VwcGV
yKCBQSFBfT1MgKTsKCQkgCgkJIAkJLy8gQ3VycmVudGx5IHdlJ2xsIGFzc3VtZSBhbnl0aGluZyB0aGF0IG
RvZXNuJ3QgbG9vayBsaWtlIFdpbmRvd3MgaXMgKm5peCBiYXNlZAoJCSAJCWlmICggc3Vic3RyKCAkb3Nfb
mFtZSwgMCwgMyApID09PSAnV0lOJykgewoJCSAJCQoJCSAJCQkkdGhpcy0+X29zX3R5cGUgPSBzZWxmOjpP
U19UWVBFX1dJTjsKCQkgCQkJCgkJIAkJfSBlbHNlIHsKCQkgCQkKCQkgCQkJJHRoaXMtPl9vc190eXBlID0
gc2VsZjo6T1NfVFlQRV9OSVg7CgkJIAkJCQoJCSAJCX0KCQkgCQoJCSAJfQoJCSAJCgkJIAlyZXR1cm4gJH
RoaXM7CgkJIAkKCQkgfQoKCQkvKioKCQkgKglnZXRfb3NfdHlwZSgpCgkJICoKCQkgKglHZXRzIHRoZSBlb
nVtZXJhdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBPUyB0eXBlIHRoYXQgd2UgYXJlIHJ1bm5pbmcgb24KCQkg
KgoJCSAqCUByZXR1cm4JCWludAkJRW51bWVyYXRlZCBPUyB0eXBlIHZhbHVlCgkJICoKCQkgKi8KCQkgcHV
ibGljIGZ1bmN0aW9uIGdldF9vc190eXBlKCApIHsKCQkgCgkJCXJldHVybiAkdGhpcy0+X29zX3R5cGU7Cg
oJCSB9CgoJCS8qKgoJCSAqCXNldF9leGVjX2Rpcl9mbGFnKCkKCQkgKgoJCSAqCUNoZWNrcyB3aGV0aGVyI
GV4ZWNfZGlyIGlzIHNldCBpbiBQSFAgZW52aXJvbm1lbnQgYW5kIHNldHMgaW50ZXJuYWwgZmxhZwoJCSAq
CgkJICoJQHJldHVybgkJYm9vbAkJVHJ1ZSBpcyBleGVjX2RpciBpcyBzZXQgYW5kIG5vdC1lbXB0eQoJCSA
qCgkJICovCgkJIHB1YmxpYyBmdW5jdGlvbiBzZXRfZXhlY19kaXJfZmxhZyggKSB7CgkJIAoJCSAJJGV4ZW
NfZGlyID0gJyc7CgkJIAkkcmVzdWx0ID0gZmFsc2U7CgoJCSAJaWYgKCAoIGZhbHNlICE9PSAoICRleGVjX
2RpciA9IGluaV9nZXQoICdleGVjX2RpcicgKSApICkgJiYgKCAnJyAhPSB0cmltKCAkZXhlY19kaXIgKSAp
ICkgewoJCSAJCgkJIAkJJHJlc3VsdCA9IHRydWU7CgkJIAkKCQkgCX0gZWxzZSB7CgkJIAkKCQkgCQkkcmV
zdWx0ID0gZmFsc2U7CgkJIAkJCgkJIAl9CgkJIAoJCSAJJHRoaXMtPl9leGVjX2Rpcl9zZXQgPSAkcmVzdW
x0OwoKCQkJcmV0dXJuICR0aGlzOwoKCQkgfQoKCQkvKioKCQkgKglnZXRfZXhlY19kaXJfZmxhZygpCgkJI
CoKCQkgKglHZXRzIHRoZSBmbGFnIGluZGljYXRpbmcgdGhlIHN0YXR1cyBvZiBleGVjX2RpciBzZXR0aW5n
CgkJICoKCQkgKglAcmV0dXJuCQlib29sCQlWYWx1ZSBvZiAkX2V4ZWNfZGlyX3NldAoJCSAqCgkJICovCgk
JIHB1YmxpYyBmdW5jdGlvbiBnZXRfZXhlY19kaXJfZmxhZygpIHsKCQkgCgkJCXJldHVybiAkdGhpcy0+X2
V4ZWNfZGlyX3NldDsKCgkJIH0KCgkJLyoqCgkJICoJc2V0X2lnbm9yZV93YXJuaW5ncygpCgkJICoKCQkgK
glDaGVja3MgY29uZGl0aW9ucyB0byBzZWUgaWYgd2FybmluZ3Mgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBh
cmNoaXZlcyBhcmUKCQkgKgliZWluZyBidWlsdC4KCQkgKgoJCSAqCUBwYXJhbQkJYm9vbAkkaWdub3JlCUZ
hbHNlIHRvIG5vdCBpZ25vcmUgd2FybmluZ3MsIFRydWUgdG8gZm9yY2UgaWdub3JlCgkJICoJQHJldHVybg
kJYm9vbAkJCVRydWUgaWYgY29uZGl0aW9ucyBpbmRpY2F0ZSB3YXJuaW5ncyBzaG91bGQgYmUgaWdub3JlZ
CwgZmFsc2Ugb3RoZXJ3aXNlCgkJICoKCQkgKi8KCQkgcHVibGljIGZ1bmN0aW9uIHNldF9pZ25vcmVfd2Fy
bmluZ3MoICRpZ25vcmUgPSBudWxsICkgewoJCSAKCQkgCSR0aGlzLT5faWdub3JlX3dhcm5pbmdzID0gKCB
pc19ib29sKCAkaWdub3JlICkgKSA/ICRpZ25vcmUgOiBmYWxzZSA7CgoJCQlyZXR1cm4gJHRoaXM7CgoJCS
B9CgoJCS8qKgoJCSAqCWdldF9pZ25vcmVfd2FybmluZ3MoKQoJCSAqCgkJICoJR2V0cyB0aGUgZmxhZyBpb
mRpY2F0aW5nIHdoZXRoZXIgd2FybmluZ3Mgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBidWlsZGluZyBhcmNo
aXZlcwoJCSAqCgkJICoJQHJldHVybgkJYm9vbAkJVmFsdWUgb2YgJF9pZ25vcmVfd2FybmluZ3MKCQkgKgo
JCSAqLwoJCSBwdWJsaWMgZnVuY3Rpb24gZ2V0X2lnbm9yZV93YXJuaW5ncygpIHsKCQkgCgkJCXJldHVybi
AkdGhpcy0+X2lnbm9yZV93YXJuaW5nczsKCgkJIH0KCgkJLyoqCgkJICoJc2V0X2lnbm9yZV9zeW5saW5rc
ygpCgkJICoKCQkgKglDaGVja3MgY29uZGl0aW9ucyB0byBzZWUgaWYgc3ltbGlua3Mgc2hvdWxkIGJlIGln
bm9yZWQvbm90LWZvbGxvd2VkIHdoZW4gYXJjaGl2ZXMgYXJlCgkJICoJYmVpbmcgYnVpbHQuCgkJICoKCQk
gKglAcGFyYW0JCWJvb2wJJGlnbm9yZQlGYWxzZSB0byBub3QgaWdub3JlIHN5bWxpbmtzLCBUcnVlIHRvIG
ZvcmNlIGlnbm9yZQoJCSAqCUByZXR1cm4JCWJvb2wJCQlUcnVlIGlmIGNvbmRpdGlvbnMgaW5kaWNhdGUgc
3ltbGlua3Mgc2hvdWxkIGJlIGlnbm9yZWQvbm90LWZvbGxvd2VkLCBmYWxzZSBvdGhlcndpc2UKCQkgKgoJ
CSAqLwoJCSBwdWJsaWMgZnVuY3Rpb24gc2V0X2lnbm9yZV9zeW1saW5rcyggJGlnbm9yZSA9IG51bGwgKSB
7CgkJIAoJCSAJJHRoaXMtPl9pZ25vcmVfc3ltbGlua3MgPSAgKCBpc19ib29sKCAkaWdub3JlICkgKSA/IC
RpZ25vcmUgOiB0cnVlIDsKCgkJCXJldHVybiAkdGhpczsKCgkJIH0KCgkJLyoqCgkJICoJZ2V0X2lnbm9yZ
V9zeW1saW5rcygpCgkJICoJCgkJICoJVGhpcyByZXR1cm5zIHRydWUgaWYgdGhlIG9wdGlvbiB0byBpZ25v
cmUgc3ltbGlua3MgaXMgc2V0LiBJbiB0aGlzIGNvbnRleHQgaWdub3JpbmcKCQkgKgltZWFucyBub3QgZm9
sbG93aW5nIGJ1dCB0aGUgc3ltbGluayBpdHNlbGYgaXMgcmVjb3JkZWQgaW4gdGhlIGJhY2t1cAoJCSAqCQ
oJCSAqCUByZXR1cm4JCWJvb2wJCQkJVmFsdWUgb2YgJF9pZ25vcmVfc3ltbGlua3MKCQkgKgoJCSAqLwoJC
XByb3RlY3RlZCBmdW5jdGlvbiBnZXRfaWdub3JlX3N5bWxpbmtzKCkgewoJCQoJCQlyZXR1cm4gJHRoaXMt
Pl9pZ25vcmVfc3ltbGlua3M7CgkJCgkJfQoJCQoJCS8qKgoJCSAqCXNldF9jb21wcmVzc2lvbigpCgkJICo
KCQkgKglDaGVja3MgY29uZGl0aW9ucyB0byBzZWUgaWYgY29tcHJlc3Npb24gc2hvdWxkIGJlIHVzZWQgd2
hlbiBidWlsZGluZyBhcmNoaXZlLgoJCSAqCgkJICoJQHBhcmFtCQlib29sCSRjb21wcmVzc2lvbglGYWxzZ
SB0byBwcm9oaWJpdCBjb21wcmVzc2lvbiwgVHJ1ZSB0byBmb3JjZSBjb21wcmVzc2lvbgoJCSAqCUByZXR1
cm4JCWJvb2wJCQkJCVRydWUgaWYgY29uZGl0aW9ucyBpbmRpY2F0ZSBjb21wcmVzc2lvbiBzaG91bGQgYmU
gdXNlZCwgZmFsc2Ugb3RoZXJ3aXNlCgkJICoKCQkgKi8KCQkgcHVibGljIGZ1bmN0aW9uIHNldF9jb21wcm
Vzc2lvbiggJGNvbXByZXNzaW9uID0gbnVsbCApIHsKCQkgCgkJIAkkdGhpcy0+X2NvbXByZXNzaW9uID0gI
CggaXNfYm9vbCggJGNvbXByZXNzaW9uICkgKSA/ICRjb21wcmVzc2lvbiA6IHRydWUgOwoKCQkJcmV0dXJu
ICR0aGlzOwoKCQkgfQoKCQkvKioKCQkgKglnZXRfY29tcHJlc3Npb24oKQoJCSAqCQoJCSAqCVRoaXMgcmV
0dXJucyB0cnVlIGlmIHRoZSBvcHRpb24gdG8gdXNlIGNvbXByZXNzaW9uIGlzIHNldC4KCQkgKgkKCQkgKg
lAcmV0dXJuCQlib29sCQkJCVZhbHVlIG9mICRfY29tcHJlc3Npb24KCQkgKgoJCSAqLwoJCXByb3RlY3RlZ
CBmdW5jdGlvbiBnZXRfY29tcHJlc3Npb24oKSB7CgkJCgkJCXJldHVybiAkdGhpcy0+X2NvbXByZXNzaW9u
OwoJCQoJCX0KCQkKCQkvKioKCQkgKglzZXRfc2FwaV9uYW1lKCkKCQkgKgoJCSAqCVNldHMgdGhlIHNhcGk
gbmFtZSB0byB0aGF0IGdpdmVuIG9yIGxlYXZlIGVtcHR5CgkJICoKCQkgKglAcGFyYW0Jc3RyaW5nCSRuYW
1lCUEgc2FwaSBuYW1lIHRvIHNldCAoZGVmYXVsdCBlbXB0eSkKCQkgKglAcmV0dXJuCW9iamVjdAkJCVRoa
XMgb2JqZWN0CgkJICovCgkJcHVibGljIGZ1bmN0aW9uIHNldF9zYXBpX25hbWUoICRzYXBpX25hbWUgPSAi
IiApIHsKCQkKCQkJJHRoaXMtPl9zYXBpX25hbWUgPSAkc2FwaV9uYW1lOwoJCQkKCQkJcmV0dXJuICR0aGl
zOwoJCQkKCQl9CgoJCS8qKgoJCSAqCWdldF9zYXBpX25hbWUoKQoJCSAqCgkJICoJUmV0dXJucyB0aGUgcH
JldmlvdXNseSBzZXQgc2FwaSBuYW1lCgkJICoKCQkgKglAcmV0dXJuCXN0cmluZwkJCVRoZSBzdG9yZWQgc
2FwaSBuYW1lCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGdldF9zYXBpX25hbWUoKSB7CgkJCQoJCQlyZXR1
cm4gJHRoaXMtPl9zYXBpX25hbWU7CgkJCQoJCX0KCgkJLyoqCgkJICoJZ2V0X3N0YXR1cygpCgkJICoJCgk
JICoJUmV0dXJucyB0aGUgc3RhdHVzIGFycmF5CgkJICoJCgkJICoJQHJldHVybgkJYXJyYXkJVGhlIHN0YX
R1cyBhcnJheQoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGdldF9zdGF0dXMoKSB7CgkJCgkJCXJld
HVybiAkdGhpcy0+X3N0YXR1czsKCQkKCQl9CgkJCgkJLyoqCgkJICoJbG9nX2FyY2hpdmVfZmlsZV9zdGF0
cygpCgkJICoJCgkJICoJUHJvZHVjZWQgYSBzdGF0dXMgbG9nIGVudHJ5IGZvciB0aGUgYXJjaGl2ZSBmaWx
lIHN0YXRzCgkJICoJCgkJICoJQHBhcmFtCXN0cm
luZwkkZmlsZQlUaGUgZmlsZSB0byBzdGF0IGFuZCBhbmQgbG9nCgkJICoJQHJldHVybgkJCgkJICoKCQkgK
i8KCQlwcm90ZWN0ZWQgZnVuY3Rpb24gbG9nX2FyY2hpdmVfZmlsZV9zdGF0cyggJGZpbGUgKSB7CgkJCgkJ
CS8vIEdldCB0aGUgZmlsZSBzdGF0cyBzbyB3ZSBjYW4gbG9nIHNvbWUgaW5mb3JtYXRpb24KCQkJJGZpbGV
fc3RhdHMgPSBwbHVnaW5idWRkeV9zdGF0OjpzdGF0KCAkZmlsZSApOwoJCQkKCQkJLy8gT25seSBsb2cgYW
55dGhpbmcgaWYgd2UgZ290IHNvbWUgdmFsaWQgZmlsZSBzdGF0cwoJCQlpZiAoIGZhbHNlICE9PSAkZmlsZ
V9zdGF0cyApIHsKCQkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYo
IF9fKCAnWmlwIEFyY2hpdmUgZmlsZSBzaXplOiAlMSRzIGJ5dGVzLCBvd25lZCBieSB1c2VyOmdyb3VwICU
yJHM6JTMkcyB3aXRoIHBlcm1pc3Npb25zICU0JHMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJGZpbG
Vfc3RhdHNbICdkc2l6ZScgXSwgJGZpbGVfc3RhdHNbICd1aWQnIF0sICRmaWxlX3N0YXRzWyAnZ2lkJyBdL
CAkZmlsZV9zdGF0c1sgJ21vZGVfb2N0YWxfZm91cicgXSApICk7CgoJCQl9CgkJCQoJCX0KCgkJLyoqCgkJ
ICoJZ2V0X21ldGhvZF90YWcoKQoJCSAqCQoJCSAqCVJldHVybnMgdGhlIChzdGF0aWMpIG1ldGhvZCB0YWc
KCQkgKgkKCQkgKglAcmV0dXJuCQlzdHJpbmcgVGhlIG1ldGhvZCB0YWcKCQkgKgoJCSAqLwoJCWFic3RyYW
N0IHB1YmxpYyBmdW5jdGlvbiBnZXRfbWV0aG9kX3RhZygpOwoKCQkvKioKCQkgKglnZXRfaXNfY29tcGF0a
WJpbGl0eV9tZXRob2QoKQoJCSAqCQoJCSAqCVJldHVybnMgdGhlIChzdGF0aWMpIGlzX2NvbXBhdGliaWxp
dHlfbWV0aG9kIGJvb2xlYW4KCQkgKgkKCQkgKglAcmV0dXJuCQlib29sCgkJICoKCQkgKi8KCQlhYnN0cmF
jdCBwdWJsaWMgZnVuY3Rpb24gZ2V0X2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kKCk7CgoJCS8qKgoJCSAqCW
dldF9tZXRob2RfZGV0YWlscygpCgkJICoJCgkJICoJUmV0dXJucyB0aGUgZGV0YWlscyBhcnJheQoJCSAqC
QoJCSAqCUByZXR1cm4JCWFycmF5CgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0X21ldGhvZF9k
ZXRhaWxzKCkgewoJCQoJCQlyZXR1cm4gJHRoaXMtPl9tZXRob2RfZGV0YWlsczsKCQkJCgkJfQoKCQkvKio
KCQkgKglzZXRfbWV0aG9kX2RldGFpbHMoKQoJCSAqCQoJCSAqCVNldHMgdGhlIGludGVybmFsIChzZXR0YW
JsZSkgZGV0YWlscwoJCSAqCQoJCSAqCUBwYXJhbQkJYXJyYXkKCQkgKglAcmV0dXJuCQludWxsCgkJICoKC
QkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gc2V0X21ldGhvZF9kZXRhaWxzKCBhcnJheSAkZGV0YWlscywgJG1l
cmdlID0gdHJ1ZSApIHsKCQkKCQkJaWYgKCB0cnVlID09PSAkbWVyZ2UgKSB7CgkJCQoJCQkJJHRoaXMtPl9
tZXRob2RfZGV0YWlsc1sgJ2F0dHInIF0gPSBhcnJheV9tZXJnZSggJHRoaXMtPl9tZXRob2RfZGV0YWlsc1
sgJ2F0dHInIF0sICRkZXRhaWxzWyAnYXR0cicgXSApOwoJCQkJJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ
3BhcmFtJyBdID0gYXJyYXlfbWVyZ2UoICR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXSwgJGRl
dGFpbHNbICdwYXJhbScgXSApOwoJCQkKCQkJfSBlbHNlIHsKCQkJCgkJCQkkdGhpcy0+X21ldGhvZF9kZXR
haWxzID0gJGRldGFpbHM7CgkJCQoJCQl9CgkJCQoJCQlyZXR1cm4gJHRoaXM7CgkJCQkJCQoJCX0KCgkJLy
oqCgkJICoJZ2V0X2V4ZWN1dGFibGVfcGF0aHMoKQoJCSAqCQoJCSAqCVJldHVybnMgdGhlIGV4ZWN1dGFib
GVfcGF0aHMgYXJyYXkKCQkgKgkKCQkgKglAcmV0dXJuCQlhcnJheQoJCSAqCgkJICovCgkJcHVibGljIGZ1
bmN0aW9uIGdldF9leGVjdXRhYmxlX3BhdGhzKCkgewoJCQoJCQlyZXR1cm4gJHRoaXMtPl9leGVjdXRhYmx
lX3BhdGhzOwoJCQkKCQl9CgoJCS8qKgoJCSAqCXNldF9leGVjdXRhYmxlX3BhdGhzKCkKCQkgKgkKCQkgKg
lTZXRzIHRoZSBleGVjdXRhYmxlX3BhdGhzIGFycmF5IHNvIGNhbiBiZSB1c2VkIHRvIGF1Z21lbnQgb3Igb
3ZlcnJpZGUgdGhlIGRlZmF1bHQKCQkgKgkKCQkgKglAcGFyYW0JCSRwYXRocwlhcnJheQlQYXRocyB0byBz
ZXQgb3IgbWVyZ2UKCQkgKglAcGFyYW0JCSRtZXJnZQlib29sCVRydWUgKGRlZmF1bHQpIGlmIG1lcmdpbmc
gcGF0aHMgd2l0aCBjdXJyZW50IHBhdGhzCgkJICoJQHBhcmFtCQkkYmVmb3JlCWJvb2wJVHJ1ZSAoZGVmYX
VsdCkgaWYgcGF0aHMgdG8gYmUgcHJlcGVuZGVkCgkJICoJQHJldHVybgkJbnVsbAoJCSAqCgkJICovCgkJc
HVibGljIGZ1bmN0aW9uIHNldF9leGVjdXRhYmxlX3BhdGhzKCBhcnJheSAkcGF0aHMsICRtZXJnZSA9IHRy
dWUsICRiZWZvcmUgPSB0cnVlICkgewoJCQoJCQlpZiAoIHRydWUgPT09ICRtZXJnZSApIHsKCQkJCgkJCQl
pZiAoIHRydWUgPT09ICRiZWZvcmUgKSB7CgkJCQkKCQkJCQkkdGhpcy0+X2V4ZWN1dGFibGVfcGF0aHMgPS
BhcnJheV9tZXJnZSggJHBhdGhzLCAkdGhpcy0+X2V4ZWN1dGFibGVfcGF0aHMgKTsKCQkJCQkKCQkJCX0gZ
WxzZSB7CgkJCQoJCQkJCSR0aGlzLT5fZXhlY3V0YWJsZV9wYXRocyA9IGFycmF5X21lcmdlKCAkdGhpcy0+
X2V4ZWN1dGFibGVfcGF0aHMsICRwYXRocyApOwoJCQkJCgkJCQl9CgkJCQoJCQl9IGVsc2UgewoJCQkKCQk
JCSR0aGlzLT5fZXhlY3V0YWJsZV9wYXRocyA9ICRwYXRoczsKCQkJCgkJCX0KCQkJCgkJCXJldHVybiAkdG
hpczsKCQkJCQkJCgkJfQoKCQkvKioKCQkgKglkZWxldGVfZGlyZWN0b3J5X3JlY3Vyc2l2ZSgpCgkJICoJC
gkJICoJUmVjdXJzaXZlbHkgZGVsZXRlIGEgZGlyZWN0b3J5IGFuZCBpdCdzIGNvbnRlbnQKCQkgKgkKCQkg
KglAcGFyYW0JCXN0cmluZwkkZGlyZWN0b3J5CURpcmVjdG9yeSB0byBkZWxldGUKCQkgKglAcmV0dXJuCQl
ib29sCQkJCVRydWUgaWYgb3BlcmF0aW9uIGZ1bGx5IHN1Y2Nlc3NmdWwsIG90aGVyd2lzZSBmYWxzZQoJCS
AqCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGRlbGV0ZV9kaXJlY3RvcnlfcmVjdXJzaXZlKCAkZGlyZ
WN0b3J5ICkgewoJCQlpZiAoICcnID09ICRkaXJlY3RvcnkgKSB7CgkJCQllcnJvcl9sb2coICdCYWNrdXBC
dWRkeSBFcnJvciAjNDczODQzYzogSGFsdGVkIGVtcHR5IGRpcmVjdG9yeSBkZWxldGlvbi4nICk7CgkJCQl
yZXR1cm4gZmFsc2U7CgkJCX0KCgkJCS8vIFJlbW92ZSBhbnkgdHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYX
RvciBzbyB3ZSBrbm93IHdoZXJlIHdlIGFyZQoJCQkkZGlyZWN0b3J5ID0gcnRyaW0oICRkaXJlY3RvcnksI
HNlbGY6OkRJUkVDVE9SWV9TRVBBUkFUT1JTICk7CgkJCQoJCQkvLyBOb24tZXhpc3RlbnQgZGlyZWN0b3J5
IHNvIHByZXRlbmQgd2UgZGVsZXRlZCBpdCBvawoJCQlpZiAoICFmaWxlX2V4aXN0cyggJGRpcmVjdG9yeSA
pICkgewoJCQkKCQkJCXJldHVybiB0cnVlOwoJCQkJCgkJCX0KCgkJCS8vIE1ha2Ugc3VyZSBpdCB3YXNuJ3
QganVzdCBhIGZpbGUgb3IgbGluayAtIGlmIHNvIGp1c3QgZGVsZXRlIGl0IGFuZCByZXR1cm4JCQkKCQkJa
WYgKCAhaXNfZGlyKCAkZGlyZWN0b3J5ICkgfHwgaXNfbGluayggJGRpcmVjdG9yeSApICkgewoJCQkKCQkJ
CXJldHVybiBAdW5saW5rKCAkZGlyZWN0b3J5ICk7CgkJCQkKCQkJfQoJCQkKCQkJLy8gU28gaXQgaXMgYSB
kaXJlY3Rvcnkgc28gcHJvY2VzcyBjb250ZW50CgkJCWZvcmVhY2ggKCBzY2FuZGlyKCAkZGlyZWN0b3J5IC
kgYXMgJGl0ZW0gKSB7CgkJCQoJCQkJLy8gU2tpcCB0aGUgdGhpcyBhbmQgcGFyZW50IGRpcmVjdG9yaWVzC
gkJCQlpZiAoICRpdGVtID09ICcuJyB8fCAkaXRlbSA9PSAnLi4nICkgewoJCQkJCgkJCQkJY29udGludWU7
CgkJCQkJCgkJCQl9CgkJCQkKCQkJCS8vIERlbGV0ZSB0aGUgaXRlbSBpZiB3ZSBjYW4JCQkKCQkJCWlmICg
gISR0aGlzLT5kZWxldGVfZGlyZWN0b3J5X3JlY3Vyc2l2ZSggJGRpcmVjdG9yeSAuICIvIiAuICRpdGVtIC
kgKSB7CgkJCQkKCQkJCQkvLyBUT0RPOiBTdXBwb3NlZGx5IGNoYW5nZSB0aGUgcGVybXMgb24gdGhlIGl0Z
W0gc28gd2UgY2FuIGRlbGV0ZSBpdD8KCQkJCQlAY2htb2QoICRkaXJlY3RvcnkgLiAiLyIgLiAkaXRlbSwg
MDc3NyApOwoJCQkJCQoJCQkJCWlmICggISR0aGlzLT5kZWxldGVfZGlyZWN0b3J5X3JlY3Vyc2l2ZSggJGR
pcmVjdG9yeSAuICIvIiAuICRpdGVtICkgKSB7CgkJCQkJCgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQkJCg
kJCQkJfQoJCQkJCQoJCQkJfQoJCQkJCgkJCX0KCQkJCgkJCXJldHVybiBAcm1kaXIoICRkaXJlY3RvcnkgK
TsKCQkJCQoJCX0KCQkKCQkvKglfcmVuZGVyX2V4Y2x1c2lvbnNfZmlsZSgpCgkJICoJCgkJICoJZnVuY3Rp
b24gZGVzY3JpcHRpb24KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJJGZpbGUJCQlGaWxlIHRvIHdyaXR
lIGV4Y2x1c2lvbnMgaW50by4KCQkgKglAcGFyYW0JCWFycmF5CQkkZXhjbHVzaW9ucwkJQXJyYXkgb2YgZG
lyZWN0b3JpZXMvcGF0aHMgdG8gZXhjbHVkZS4gT25lIHBlciBsaW5lLgoJCSAqCUBwYXJhbQkJYXRyaW5nC
Qkkcm9vdAkJCVJvb3QgZGlyZWN0b3J5IHRvIGV4Y2x1ZGUgcmVsYXRpdmUgdG8uCgkJICoJQHJldHVybgkJ
bnVsbAoJCSAqLwoJCXByb3RlY3RlZCBmdW5jdGlvbiBfcmVuZGVyX2V4Y2x1c2lvbnNfZmlsZSggJGZpbGU
sICRleGNsdXNpb25zLCAkcm9vdCA9ICcnICkgewoJCQlpZiAoICcnID09ICRyb290ICkgewoJCQkJJHJvb3
QgPSBBQlNQQVRIOwoJCQl9IGVsc2UgewoJCQkJJHJvb3QgPSBydHJpbSggJHJvb3QsIERJUkVDVE9SWV9TR
VBBUkFUT1IgKSAuIERJUkVDVE9SWV9TRVBBUkFUT1I7CgkJCX0KCgkJCS8vIEFycmF5IGZvciBjbGVhbmVk
IHVwIGV4Y2x1c2lvbnMgbGlzdAoJCQkkc2FuaXRpemVkX2V4Y2x1c2lvbnMgPSBhcnJheSgpOwoJCQkKCQk
JcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQ3JlYXRpbmcgYmFja3VwIGV4Y2x1c2lvbn
MgZmlsZSBgJyAuICRmaWxlIC4gJ2AuJyApOwoJCQkvLyRleGNsdXNpb25zID0gYmFja3VwYnVkZHlfY29yZ
To6Z2V0X2RpcmVjdG9yeV9leGNsdXNpb25zKCk7CgkJCQoJCQkvLyBUZXN0IGVhY2ggZXhjbHVzaW9uIGZv
ciB2YWxpZGl0eSAocHJlc2VuY2UpIGFuZCBkcm9wIHRob3NlIG5vdCBhY3R1YWxseSBwcmVzZW50CgkJCWZ
vcmVhY2goICRleGNsdXNpb25zIGFzICRleGNsdXNpb24gKSB7CgkJCQkKCQkJCS8vIE1ha2Ugc3VyZSBwbG
F0Zm9ybSBzcGVjaWZpYyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBhcmUgdXNlZCAoY291bGQgaGF2ZSBtaWdyY
XRlZCBmcm9tIGRpZmZlcmVudCBwbGF0Zm9ybSkKCQkJCSRleGNsdXNpb24gPSBwcmVnX3JlcGxhY2UoICd8
WycgLiBhZGRzbGFzaGVzKCBzZWxmOjpESVJFQ1RPUllfU0VQQVJBVE9SUyApIC4gJ10rfCcsIERJUkVDVE9
SWV9TRVBBUkFUT1IsICRleGNsdXNpb24gKTsKCQkJCQoJCQkJLy8gRElSRUNUT1JZLgoJCQkJaWYgKCBpc1
9kaXIoICRyb290IC4gbHRyaW0oICRleGNsdXNpb24sIERJUkVDVE9SWV9TRVBBUkFUT1IgKSApICkgewoJC
QkJCQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0V4Y2x1ZGluZyBkaXJlY3Rv
cnkgYCcgLiAkZXhjbHVzaW9uIC4gJ2AuJyApOwoJCQkJCQoJCQkJCS8vIE5lZWQgdG8gYWRkIHRoZSB3aWx
kY2FyZCBzbyB0aGF0IHppcCB3aWxsIGV4Y2x1ZGUgdGhlIGRpcmVjdG9yeSBhbmQgY29udGVudAoJCQkJCS
RleGNsdXNpb24gPSBydHJpbSggJGV4Y2x1c2lvbiwgRElSRUNUT1JZX1NFUEFSQVRPUiApIC4gRElSRUNUT
1JZX1NFUEFSQVRPUiAuICcqJzsKCQkJCQoJCQkJLy8gRklMRS4KCQkJCX0gZWxzZWlmICggaXNfZmlsZSgg
JHJvb3QgLiBsdHJpbSggJGV4Y2x1c2lvbiwgRElSRUNUT1JZX1NFUEFSQVRPUiApICkgKSB7CgkJCQkJCgk
JCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRXhjbHVkaW5nIGZpbGUgYCcgLiAkZX
hjbHVzaW9uIC4gJ2AuJyApOwoJCQkJCgkJCQkvLyBTWU1CT0xJQyBMSU5LLgoJCQkJfSBlbHNlaWYgKCBpc
19saW5rKCAkcm9vdCAuIGx0cmltKCAkZXhjbHVzaW9uLCBESVJFQ1RPUllfU0VQQVJBVE9SICkgKSApIHsK
CQkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdFeGNsdWRpbmcgc3ltYm9
saWMgbGluayBgJyAuICRleGNsdXNpb24gLiAnYC4nICk7CgkJCQkKCQkJCS8vIERPRVMgTk9UIEVYSVNULg
oJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdPb
Wl0dGluZyBleGNsdXNpb24gYXMgZmlsZS9kaXJlY3RvcnkgZG9lcyBub3QgY3VycmVudGx5IGV4aXN0OiBg
JyAuICRleGNsdXNpb24gLiAnYC4nICk7CgkJCQkJCgkJCQkJLy8gU2tpcCB0byBuZXh0IGV4Y2x1c2lvbgo
JCQkJCWNvbnRpbnVlOwoJCQkJCQoJCQkJfQoJCQkJCgkJCQkvLyBXZSBoYXZlIGEgdmFsaWQgZXhjbHVkZS
BzbyBhZGQgaXQKCQkJCSRzYW5pdGl6ZWRfZXhjbHVzaW9uc1tdID0gJGV4Y2x1c2lvbjsKCQkJCQoJCQl9C
gkJCQoJCQkvLyBQdXQgdGhlIGV4Y2x1c2lvbnMgdG8gYSBmaWxlIGFzIGEgc3RyaW5nCgkJCWZpbGVfcHV0
X2NvbnRlbnRzKCAkZmlsZSwgaW1wbG9kZSggUEhQX0VPTCwgJHNhbml0aXplZF9leGNsdXNpb25zICkgLiB
QSFBfRU9MICk7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0JhY2t1cCBleGNsdX
Npb25zIGZpbGUgY3JlYXRlZC4nICk7CgkJCQoJCX0gLy8gRW5kIHJlbmRlcl9leGNsdXNpb25zX2ZpbGUoK
S4KCQkKCQkvKioKCQkgKglzbGFzaGlmeSgpCgkJICoKCQkgKglBIGZ1bmN0aW9uIHRvIGFkZCBhIHNsYXNo
IHRvIHRoZSBlbmQgb2YgYSBwYXRoLiBJdCBpcyBtdWNoIGxpa2UgdGhlIFdvcmRQcmVzcyB0cmFpbGluZ3N
sYXNoaXQoKQoJCSAqCWJ1dCBhbGxvd3MgZm9yIG5vdCBhZGRpbmcgYSBzbGFzaCB0byBhbiBlbXB0eSBwYX
RoLiBXaWxsIGFkZCBhIG5vcm1hbGl6ZWQgc2xhc2ggdW5sZXNzIG92ZXJyaWRkZW4KCQkgKglOb3RlOiBXa
WxsIG5vdCBwcm9jZXNzIGFueSBlbWJlZGRlZCBkaXJlY3Rvcnkgc2VwYXJhdG9ycwoJCSAqCgkJICoJQHBh
cmFtCXN0cmluZwkkcGF0aAkJCQkJVGhlIHBhdGggdG8gYWRkIGEgdHJhaWxpbmcgc2xhc2ggdG8KCQkgKgl
AcGFyYW0JYm9vbAkkaWdub3JlX2VtcHR5CQkJVHJ1ZSAoZGVmYXVsdCkgaWYgc2hvdWxkIF9ub3RfIGFkZC
BhIHRyYWlsaW5nIHNsYXNoIHRvIGFuIGVtcHR5IHBhdGgKCQkgKglAcGFyYW0JYm9vbAkkdXNlX25vcm1hb
Gl6ZWRfc2xhc2gJVHJ1ZSAoZGVmYXVsdCkgdG8gYWRkIGEgbm9ybWFsaXplZCBzbGFzaCwgb3RoZXJ3aXNl
IGFkZCBwbGF0Zm9ybSBzZXBhcmF0b3IKCQkgKglAcmV0dXJuCXN0cmluZwkJCQkJCQlUaGUgcGF0aCB3aXR
oIHRyYWlsaW5nIHNsYXNoIG9wdGlvbmFsbHkgYWRkZWQKCQkgKgoJCSAqLwoJCSAKCQkgcHJvdGVjdGVkIG
Z1bmN0aW9uIHNsYXNoaWZ5KCAkcGF0aCwgJGlnb
m9yZV9lbXB0eSA9IHRydWUsICR1c2Vfbm9ybWFsaXplZF9zbGFzaCA9IHRydWUgKSB7CgkJIAoJCSAJLy8g
Q2hlY2sgaWYgaXQgaXMgZW1wdHkgbm93IGJlZm9yZSB3ZSBtYXkgcmVtb3ZlIGEgc2luZ2xlIHNsYXNoCgk
JIAlpZiAoICEgKCBlbXB0eSggJHBhdGggKSAmJiAoIHRydWUgPT09ICRpZ25vcmVfZW1wdHkgKSApICkgew
oJCSAJCgkJCQkvLyBGaXJzdCByZW1vdmUgYW55IHRyYWlsaW5nIHNsYXNoIHRoYXQgbWF5IGJlIHByZXNlb
nQKCQkJCSRwYXRoID0gJHRoaXMtPnVuc2xhc2hpZnkoICRwYXRoICk7CgkJCQkKCQkJCWlmICggdHJ1ZSA9
PT0gJHVzZV9ub3JtYWxpemVkX3NsYXNoICkgewoJCQkJCgkJCQkJJHBhdGggPSAkcGF0aCAuIHNlbGY6Ok5
PUk1fRElSRUNUT1JZX1NFUEFSQVRPUjsKCQkJCQoJCQkJfSBlbHNlIHsKCQkJCQoJCQkJCSRwYXRoID0gJH
BhdGggLiBESVJFQ1RPUllfU0VQQVJBVE9SOwoJCQkJCgkJCQl9CgkJCQkKCQkgCX0KCQkgCQoJCSAJcmV0d
XJuICRwYXRoOwoJCSAKCQkgfQoJCQoJCS8qKgoJCSAqCXVuc2xhc2hpZnkoKQoJCSAqCgkJICoJQSBmdW5j
dGlvbiB0byByZW1vdmUgYSBzbGFzaCB0byB0aGUgZW5kIG9mIGEgcGF0aC4gSXQgaXMgbXVjaCBsaWtlIHR
oZSBXb3JkUHJlc3MgdW50cmFpbGluZ3NsYXNoaXQoKQoJCSAqCWJ1dCBjb3BlcyB3aXRoIGVpdGhlciBmb3
JtIG9mIHRyYWlsaW5nIHNsYXNoLgoJCSAqCU5vdGU6IFdpbGwgbm90IHByb2Nlc3MgYW55IGVtYmVkZGVkI
GRpcmVjdG9yeSBzZXBhcmF0b3JzIGFuZCBtYXkgcHJvZHVjZSBhbiBlbXB0eSBwYXRoLgoJCSAqCgkJICoJ
QHBhcmFtCXN0cmluZwkkcGF0aAkJCQkJVGhlIHBhdGggdG8gcmVtb3ZlIGEgdHJhaWxpbmcgc2xhc2ggZnJ
vbQoJCSAqCUBwYXJhbQlib29sCSRpZ25vcmVfZW1wdHkJCQlUcnVlIChkZWZhdWx0KSBpZiBzaG91bGQgcH
JvY2VlZCBldmVuIGlmIHdpbGwgcHJvZHVjZSBhbiBlbXB0eSBwYXRoCgkJICoJQHJldHVybglzdHJpbmcJC
QkJCQkJVGhlIHBhdGggd2l0aCB0cmFpbGluZyBzbGFzaCByZW1vdmVkCgkJICoKCQkgKi8KCQkgCgkJIHBy
b3RlY3RlZCBmdW5jdGlvbiB1bnNsYXNoaWZ5KCAkcGF0aCwgJGlnbm9yZV9lbXB0eSA9IHRydWUgKSB7Cgk
JIAoJCSAJLy8gQ3JlYXRlIGEgY2FuZGlkYXRlIHBhdGggdG8gb3B0aW9uYWxseSByZXR1cm4KCQkgCSRjYW
5kaWRhdGVfcGF0aCA9IHJ0cmltKCAkcGF0aCwgc2VsZjo6RElSRUNUT1JZX1NFUEFSQVRPUlMgKTsKCQkgC
gkJIAkvLyBJZiBjYW5kaWRhdGUgaXNuJ3QgZW1wdHkgb3Igd2UncmUgaWdub3JpbmcgaXQgYmVpbmcgZW1w
dHkgYW55d2F5CgkJIAlpZiAoICFlbXB0eSggJGNhbmRpZGF0ZV9wYXRoICkgfHwgKCB0cnVlID09PSAkaWd
ub3JlX2VtcHR5ICkgKSB7CgkJIAkKCQkJCSRwYXRoID0gJGNhbmRpZGF0ZV9wYXRoOwoJCQkJCgkJIAl9Cg
kJIAkKCQkgCXJldHVybiAkcGF0aDsKCQkgCgkJIH0KCQkKCQkvKioKCQkgKglsb2dfemlwX3JlcG9ydHMoK
QoJCSAqCgkJICoJQSBmdW5jdGlvbiB0byBwcm9jZXNzIHJlcG9ydHMgcGFyc2VkIGZyb20gdGhlIHppcCBw
cm9jZXNzIG91dHB1dCBhbmQgbG9nIHRoZW0gYW5kIG9wdGlvbmFsbHkKCQkgKglzZW5kIHRvIGEgZmlsZSB
pZiB0aGVyZSBhcmUgYSBsb3Qgb2YgcmVwb3J0cy4gSWYgdGhlIG51bWJlciBvZiByZXBvcnRzIGlzIHN1Y2
ggdGhhdCB0aGV5IHJlcXVpcmUKCQkgKgl0byBiZSB3cml0dGVuIHRvIGEgZmlsZSB0aGVuIGFsbCB0aGUgc
mVwb3J0cyB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGZpbGUsIG5vdCBqdXN0IHRoZSBvdmVyZmxvdy4KLgkJ
ICoKCQkgKglAcGFyYW0JYXJyYXkJJHJlcG9ydHNfbG9nCQkJYXJyYXkgY29udGFpbmluZyB0aGUgdHlwZSB
vZiByZXBvcnRzIHRvIGxvZwoJCSAqCUBwYXJhbQlhcnJheQkkcmVwb3J0c19kZXNjCQkJYXJyYXkgY29udG
FpbmluZyB0ZXh0IGRlc2NyaXB0aW9uIG9mIHJlcG9ydCByZWFzb24KCQkgKglAcGFyYW0Jc3RyaW5nCSRyZ
XBvcnRfcHJlZml4CQkJYSBwcmVmaXggc3RyaW5nIHRvIGdvIGJlZm9yZSB0aGUgcmVwb3J0IHRleHQKCQkg
KglAcGFyYW0JaW50ZWdlcgkkcmVwb3J0X2xpbmVzX3RvX3Nob3cJdGhlIG51bWJlciBvZiByZXBvcnRzIHR
vIHNob3cgaW4gbG9nIGJlZm9yZSBvdmVyZmxvd2luZyB0byBhIGZpbGUKCQkgKglAcGFyYW0Jc3RyaW5nCS
RyZXBvcnRfZmlsZQkJCW92ZXJmbG93IGZpbGUgaWYgdG9vIG1hbnkgcmVwb3J0cyB0byBzaG93IGRpcmVjd
Gx5IGluIGxvZwoJCSAqCUByZXR1cm4JTi9BCQkJCQkJCQlDdXJyZW50bHkgbm8gcmV0dXJuIHBhcmFtZXRl
cgoJCSAqCgkJICovCgkJIAoJCXByb3RlY3RlZCBmdW5jdGlvbiBsb2dfemlwX3JlcG9ydHMoICRyZXBvcnR
zX2xvZywgJHJlcG9ydF9kZXNjLCAkcmVwb3J0X3ByZWZpeCwgJHJlcG9ydF9saW5lc190b19zaG93LCAkcm
Vwb3J0c19maWxlICkgewoKCQkJJHJlcG9ydHMgPSBhcnJheSgpOwoJCQkkcmVwb3J0c19jb3VudCA9IDA7C
gkJCSRyZXN1bHQgPSBmYWxzZTsKCgkJCS8vIE1ha2Ugc3VyZSB3ZSBjbGVhciB1cCBhbnQgcHJldmlvdXMg
cmVwb3J0cyBmaWxlIHRoYXQgbWF5IHN0aWxsIGJlIHByZXNlbnQKCQkJaWYgKCBAZmlsZV9leGlzdHMoICR
yZXBvcnRzX2ZpbGUgKSApIHsKCQoJCQkJQHVubGluayggJHJlcG9ydHNfZmlsZSApOwoJCQoJCQl9CgoJCQ
kvLyBQYXJzZSB0aGUgcmVwb3J0cyBhcnJheSBpbnRvIGFuIG9yZGVyZWQgYXJyYXkgYmFzZWQgb24gaWQgK
GxvZyBsaW5lIG51bWJlcikgYXMgc29ydCBrZXkKCQkJZm9yZWFjaCAoICRyZXBvcnRzX2xvZyBhcyAkcmVh
c29uID0+ICRyZXBvcnQgKSB7CgkKCQkJCWZvcmVhY2ggKCAkcmVwb3J0IGFzICRpZCA9PiAkZmlsZW5hbWU
gKSB7CgoJCQkJCSRyZXBvcnRzWyAkaWQgXSA9IHNwcmludGYoIF9fKCAnJTEkczogKCUyJHMpOiAlMyRzJy
AuIFBIUF9FT0wsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICRyZXBvcnRfcHJlZml4LCAkcmVwb3J0X2Rlc
2NbICRyZWFzb24gXSwgJGZpbGVuYW1lICk7CgoJCQkJfQoJCgkJCX0KCQoJCQkvLyBNYWtlIHN1cmUgYXJy
YXkgaXMgbm93IG9yZGVyZWQgYnkgdGhlIG51bWVyaWMgbG9nIGxpbmUgbnVtYmVyIGtleQoJCQkkcmVzdWx
0ID0ga3NvcnQoICRyZXBvcnRzLCBTT1JUX05VTUVSSUMgKTsKCgkJCS8vIEFsd2F5cyBzaG93IHRoZSBmaX
JzdCBudW1iZXIgb2YgbGluZXMgaW4gdGhlIGxvZwoJCQkkc2hvd19saW5lcyA9IGFycmF5X3NsaWNlKCAkc
mVwb3J0cywgMCwgJHJlcG9ydF9saW5lc190b19zaG93LCB0cnVlICk7CgoJCQlmb3JlYWNoICggJHNob3df
bGluZXMgYXMgJGxpbmUgKSB7CgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyg
gJ1ppcCBwcm9jZXNzIHJlcG9ydGVkOiAnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJGxpbmUgKTsKCg
kJCX0KCQkKCQkJLy8gSWYgdGhlcmUgd2VyZSBtb3JlIGxpbmVzIHRoZW4gb3V0cHV0IHRoZSB3aG9sZSB0b
yB0aGUgcmVwb3J0IGZpbGUKCQkJJHJlcG9ydHNfY291bnQgPSBzaXplb2YoICRyZXBvcnRzICk7CgkJCWlm
ICggJHJlcG9ydHNfY291bnQgID4gJHJlcG9ydF9saW5lc190b19zaG93ICkgewoJCgkJCQlAZmlsZV9wdXR
fY29udGVudHMoICRyZXBvcnRzX2ZpbGUsICRyZXBvcnRzICk7CgkJCgkJCQlpZiAoIEBmaWxlX2V4aXN0cy
ggJHJlcG9ydHNfZmlsZSApICkgewoJCQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJ
ywgc3ByaW50ZiggX18oICdaaXAgcHJvY2VzcyByZXBvcnRlZCAlMSRzIG1vcmUgJTIkcyByZXBvcnQlMyRz
IC0gcGxlYXNlIHJldmlldyBpbjogJTQkcycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICggJHJlcG9ydHN
fY291bnQgLSAkcmVwb3J0X2xpbmVzX3RvX3Nob3cgKSwgJHJlcG9ydF9wcmVmaXgsICggKCAxID09ICRyZX
BvcnRzX2NvdW50ICkgPyAnJyA6ICdzJyApLCAkcmVwb3J0c19maWxlICkgKTsKCQkJCgkJCQl9CgkJCgkJC
X0KCQkJCgkJfQoJCQoJCS8qKgoJCSAqCWlzX2F2YWlsYWJsZSgpCgkJICoJCgkJICoJQSBmdW5jdGlvbiB0
aGF0IHRlc3RzIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBzcGVjaWZpYyBtZXRob2QgYW5kIGl0cyB
hdmFpbGFibGUgbW9kZXMuIFdpbGwgdGVzdCBmb3IKCQkgKiAgbXVsdGlwbGUgbW9kZXMgKHppcCAmIHVuem
lwKSBhbmQgb25seSByZXR1cm4gZmFsc2UgaWYgbmVpdGhlciBpcyBhdmFpbGFibGUuIEFjdHVhbCBhdmFpb
GFibGUgbW9kZXMgd2lsbAoJCSAqICBiZSBpbmRpY2F0ZWQgaW4gdGhlIG1ldGhvZCBhdHRyaWJ1dGVzLgoJ
CSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCSR0ZW1wZGlyCVRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gdXNlIGZ
vciBhbnkgdGVzdCBmaWxlcyAobXVzdCBiZSB3cml0ZWFibGUpCgkJICoJQHJldHVybgkJYm9vbAkJCQlUcn
VlIGlmIHRoZSBtZXRob2QgaXMgYXZhaWxhYmxlIGZvciBhdCBsZWFzdCBvbmUgbW9kZSwgZmFsc2Ugb3RoZ
XJ3aXNlCgkJICoKCQkgKi8KCQlhYnN0cmFjdCBwdWJsaWMgZnVuY3Rpb24gaXNfYXZhaWxhYmxlKCAkdGVt
cGRpciApOwoJCQoJCS8qKgoJCSAqCWFkZF92aXJ0dWFsX2ZpbGUoKQoJCSAqCQoJCSAqCUEgZnVuY3Rpb24
gdGhhdCBhbGxvd3MgYSB2aXJ0dWFsIGZpbGUgdG8gYmUgYWRkZWQgdG8gYSB6aXAgYXJjaGl2ZQoJCSAqCQ
oJCSAqCVRoZSB2aXJ0dWFsIGZpbGUgZGVzY3JpcHRvciBpcyBhbiBhcnJheSBvZiBkZXNjcmlwdG9yIGFyc
mF5KHMpIHRoYXQgcHJvdmlkZSBhIGZpbGVuYW1lCgkJICoJZm9yIHRoZSB2aXJ0dWFsIGZpbGUgdG8gYmUg
YWRkZWQgKGNhbiBpbmNsdWRlIHBhdGggcHJlZml4KSBhbmQgYSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGU
KCQkgKglmaWxlIGNvbnRlbnQgKGNhbiBiZSBlbXB0eSBidXQgbXVzdCBiZSBwcmVzZW50KS4gRm9yIGV4YW
1wbGU6CgkJICoJYXJyYXkoIGFycmF5KCAnZmlsZW5hbWUnID0+ICdzb21lZmlsZS50eHQnLCAnY29udGVud
CcgPT4gJ0EgVGV4dCBTdHJpbmcnICkgKQoJCSAqCU5vdGUgdGhhdCB0aGUgYWN0dWFsIHppcCBmaWxlIHRv
IHdoaWNoIHRoZSBmaWxlIGlzIGFkZGVkIGlzIGZvcm1lZCBmcm9tIHRoZSBmaWxlbmFlbSBmcm9tCgkJICo
JdGhlICR6aXAgcGFyYW1ldGVyIGFwcGFlbmRlZCB0byB0aGUgJHRlbXBkaXIgZGlyZWN0b3J5IHBhdGguIF
RoaXMgaXMgc2xpZ2h0bHkgY2x1bmt5IGFuZAoJCSAqCW1heSBiZSBjaGFuZ2VkIGF0IHNvbWUgbGF0ZXIgZ
GF0ZS4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkemlwCQkJCQkJRnVsbCBwYXRoICYgZmlsZW5hbWUg
b2YgWklQIEFyY2hpdmUgZmlsZSB0byBhZGQgZmlsZSB0bwoJCSAqCUBwYXJhbQkJYXJyYXkJJHZpcnR1YWx
fZmlsZV9kZXNjcmlwdG9yCUZ1bGwgZGVzY3JpcHRvciBvZiBmaWxlKHMpIHRvIGFkZCB0byBaSVAgQXJjaG
l2ZSBmaWxlCgkJICoJQHBhcmFtCQlzdHJpbmcJJHRlbXBkaXIJCQkJCUZ1bGwgcGF0aCBvZiBkaXJlY3Rvc
nkgZm9yIHRlbXBvcmFyeSB1c2FnZQoJCSAqCUByZXR1cm4JCWJvb2wJCQkJCQkJCVRydWUgaWYgdGhlIGFk
ZGl0aW9uIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UKCQkgKgoJCSAqLwoJCWFic3RyYWN0IHB
1YmxpYyBmdW5jdGlvbiBhZGRfdmlydHVhbF9maWxlKCAkemlwLCAkdmlydHVhbF9maWxlX2Rlc2NyaXB0b3
IsICR0ZW1wZGlyICk7CgoJCS8qKgoJCSAqCWNyZWF0ZSgpCgkJICoJCgkJICoJQSBmdW5jdGlvbiB0aGF0I
GNyZWF0ZXMgYW4gYXJjaGl2ZSBmaWxlCgkJICoJCgkJICoJVGhlICRleGNsdWRlcyB3aWxsIGJlIGEgbGlz
dCBvciByZWxhdGl2ZSBwYXRoIGV4Y2x1ZGVzIGlmIHRoZSAkbGlzdG1ha2VyIG9iamVjdCBpcyBOVUxMIG9
0aGVyd2lzZQoJCSAqCXdpbGwgYmUgYWJzb2x1dGUgcGF0aCBleGNsdWRlcyBhbmQgcmVsYXRpdmUgcGF0aC
BleGNsdWRlcyBjYW4gYmUgaGFkIGZyb20gdGhlICRsaXN0bWFrZXIgb2JqZWN0CgkJICoJCgkJICoJQHBhc
mFtCQlzdHJpbmcJJHppcAkJCUZ1bGwgcGF0aCAmIGZpbGVuYW1lIG9mIFpJUCBBcmNoaXZlIGZpbGUgdG8g
Y3JlYXRlCgkJICoJQHBhcmFtCQlzdHJpbmcJJGRpcgkJCUZ1bGwgcGF0aCBvZiBkaXJlY3RvcnkgdG8gYWR
kIHRvIFpJUCBBcmNoaXZlIGZpbGUKCQkgKglAcGFyYW1lCQlhcnJheQkkZXhjbHVkZXMJCUxpc3Qgb2YgZW
l0aGVyIGFic29sdXRlIHBhdGggZXhjbHVzaW9ucyBvciByZWxhdGl2ZSBleGNsdXNpb25zCgkJICoJQHBhc
mFtCQlzdHJpbmcJJHRlbXBkaXIJCUZ1bGwgcGF0aCBvZiBkaXJlY3RvcnkgZm9yIHRlbXBvcmFyeSB1c2Fn
ZQoJCSAqCUBwYXJhbQkJb2JqZWN0CSRsaXN0bWFrZXIJCVRoZSBvYmplY3QgZnJvbSB3aGljaCB3ZSBjYW4
gZ2V0IGFuIGluY2x1c2lvbnMgbGlzdAoJCSAqCUByZXR1cm4JCWJvb2wJCQkJCVRydWUgaWYgdGhlIGNyZW
F0aW9uIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UKCQkgKgoJCSAqLwoJCWFic3RyYWN0IHB1Y
mxpYyBmdW5jdGlvbiBjcmVhdGUoICR6aXAsICRkaXIsICRleGNsdWRlcywgJHRlbXBkaXIsICRsaXN0bWFr
ZXIgPSBOVUxMICk7CgkJCgkJLyoqCgkJICoJZXh0cmFjdCgpCgkJICoKCQkgKglFeHRyYWN0cyB0aGUgY29
udGVudHMgb2YgYSB6aXAgZmlsZSB0byB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSB1c2luZyB0aGUgYmVzdC
B1bnppcCBtZXRob2RzIHBvc3NpYmxlLgoJCSAqCgkJICoJQHBhcmFtCXN0cmluZwkJJHppcF9maWxlCQkJC
QlGdWxsIHBhdGggJiBmaWxlbmFtZSBvZiBaSVAgZmlsZSB0byBleHRyYWN0IGZyb20uCgkJICoJQHBhcmFt
CXN0cmluZwkJJGRlc3RpbmF0aW9uX2RpcmVjdG9yeQkJRnVsbCBkaXJlY3RvcnkgcGF0aCB0byBleHRyYWN
0IGludG8uCgkJICoJQHBhcmFtCWFycmF5CQkkaXRlbXMJCQkJCQlNYXBwaW5nIG9mIHdoYXQgdG8gZXh0cm
FjdCBhbmQgdG8gd2hhdAoJCSAqCUByZXR1cm4JYm9vbAkJCQkJCQkJCXRydWUgb24gc3VjY2VzcyAoYWxsI
GV4dHJhY3Rpb25zIHN1Y2Nlc3NmdWwpLCBmYWxzZSBvdGhlcndpc2UKCQkgKi8KCQlhYnN0cmFjdCBwdWJs
aWMgZnVuY3Rpb24gZXh0cmFjdCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gJycsICR
pdGVtcyA9IGFycmF5KCkgKTsKCgkJLyoqCgkJICoJZmlsZV9leGlzdHMoKQoJCSAqCQoJCSAqCVRlc3RzIH
doZXRoZXIgYSBmaWxlICh3aXRoIHBhdGgpIGV4aXN0cyBpbiB0aGUgZ2l2ZW4gemlwIGZpbGUKCQkgKglJZ
iBsZWF2ZV9vcGVuIGlzIHRydWUgdGhlbiB0aGUgemlwIG9iamVjdCB3aWxsIGJlIGxlZnQgb3BlbiBmb3Ig
ZmFzdGVyIGNoZWNraW5nIGZvciBzdWJzZXF1ZW50IGZpbGVzIHdpdGhpbiB0aGlzIHppcAoJCSAqCQoJCSA
qCUBwYXJhbQkJc3RyaW5nCSR6aXBfZmlsZQkJVGhlIHppcCBmaWxlIHRvIGNoZWNrCgkJICoJQHBhcmFtCQ
lzdHJpbmcJJGxvY2F0ZV9maWxlCVRoZSBmaWxlIHRvIHRlc3QgZm9yCgkJICoJQHBhcmFtCQlib29sCSRsZ
WF2ZV9vcGVuCQlPcHRpb25hbDogVHJ1ZSBpZiB0
aGUgemlwIGZpbGUgc2hvdWxkIGJlIGxlZnQgb3BlbgoJCSAqCUByZXR1cm4JCWJvb2wJCQkJCVRydWUgaWY
gdGhlIGZpbGUgaXMgZm91bmQgaW4gdGhlIHppcCBvdGhlcndpc2UgZmFsc2UKCQkgKgoJCSAqLwoJCWFic3
RyYWN0IHB1YmxpYyBmdW5jdGlvbiBmaWxlX2V4aXN0cyggJHppcF9maWxlLCAkbG9jYXRlX2ZpbGUsICRsZ
WF2ZV9vcGVuID0gZmFsc2UgKTsKCQkKCQkvKglnZXRfZmlsZV9saXN0KCkKCQkgKgkKCQkgKglHZXQgYW4g
YXJyYXkgb2YgYWxsIGZpbGVzIGluIGEgemlwIGZpbGUgd2l0aCBzb21lIGZpbGUgcHJvcGVydGllcy4KCQk
gKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJJHppcF9maWxlCVRoZSBmaWxlIHRvIGxpc3QgdGhlIGNvbnRlbn
Qgb2YKCQkgKglAcmV0dXJuCQlib29sfGFycmF5CQkJCWZhbHNlIG9uIGZhaWx1cmUsIG90aGVyd2lzZSBhc
nJheSBvZiBmaWxlIHByb3BlcnRpZXMgKG1heSBiZSBlbXB0eSkKCQkgKi8KCQlhYnN0cmFjdCBwdWJsaWMg
ZnVuY3Rpb24gZ2V0X2ZpbGVfbGlzdCggJHppcF9maWxlICk7CgkJCgkJLyoJc2V0X2NvbW1lbnQoKQoJCSA
qCQoJCSAqCVJldHJpZXZlIGFyY2hpdmUgY29tbWVudC4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJCS
R6aXBfZmlsZQkJRmlsZW5hbWUgb2YgYXJjaGl2ZSB0byBzZXQgY29tbWVudCBvbi4KCQkgKglAcGFyYW0JC
XN0cmluZwkJCSRjb21tZW50CQlDb21tZW50IHRvIGFwcGx5IHRvIGFyY2hpdmUuCgkJICoJQHJldHVybgkJ
Ym9vbAkJCQkJCQl0cnVlIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSBmYWxzZS4KCQkgKi8KCQlhYnN0cmFjdCB
wdWJsaWMgZnVuY3Rpb24gc2V0X2NvbW1lbnQoICR6aXBfZmlsZSwgJGNvbW1lbnQgKTsKCgkJLyoJZ2V0X2
NvbW1lbnQoKQoJCSAqCQoJCSAqCVJldHJpZXZlIGFyY2hpdmUgY29tbWVudC4KCQkgKgkKCQkgKglAcGFyY
W0JCXN0cmluZwkJJHppcF9maWxlCQlGaWxlbmFtZSBvZiBhcmNoaXZlIHRvIHJldHJpZXZlIGNvbW1lbnQg
ZnJvbS4KCQkgKglAcmV0dXJuCQlib29sfHN0cmluZwkJCQkJZmFsc2Ugb24gZmFpbHVyZSwgWmlwIGNvbW1
lbnQgb3RoZXJ3aXNlLgoJCSAqLwoJCWFic3RyYWN0IHB1YmxpYyBmdW5jdGlvbiBnZXRfY29tbWVudCggJH
ppcF9maWxlICk7CgkJCgoJfSAvLyBlbmQgcGx1Z2luYnVkZHlfemJ6aXBjb3JlIGNsYXNzLgkKCQp9Cj8+C
g==
###PACKDATA,FILE_END,/lib/zipbuddy/zbzipcore.php,importbuddy/lib/zipbuddy/zbzipcore
.php
###PACKDATA,FILE_START,/lib/zipbuddy/zbzipexec.php,importbuddy/lib/zipbuddy/zbzipex
ec.php
PD9waHAKLyoqCiAqCXBsdWdpbmJ1ZGR5X3piemlwZXhlYyBDbGFzcwogKgogKiAgRXh0ZW5kcyB0aGUgeml
wIGNhcGFiaWxpdHkgY29yZSBjbGFzcyB3aXRoIHByb2Mgc3BlY2lmaWMgY2FwYWJpbGl0eQogKgkKICoJVm
Vyc2lvbjogMS4wLjAKICoJQXV0aG9yOgogKglBdXRob3IgVVJJOgogKgogKglAcGFyYW0JCSRwYXJlbnQJC
W9iamVjdAkJT3B0aW9uYWwgcGFyZW50IG9iamVjdCB3aGljaCBjYW4gcHJvdmlkZSBmdW5jdGlvbnMgZm9y
IHJlcG9ydGluZywgZXRjLgogKglAcmV0dXJuCQludWxsCiAqCiAqLwppZiAoICFjbGFzc19leGlzdHMoICJ
wbHVnaW5idWRkeV96YnppcGV4ZWMiICkgKSB7CgoJY2xhc3MgcGx1Z2luYnVkZHlfemJ6aXBleGVjIGV4dG
VuZHMgcGx1Z2luYnVkZHlfemJ6aXBjb3JlIHsKCQoJCS8vIENvbnN0YW50cyBmb3IgZmlsZSBoYW5kbGluZ
woJCWNvbnN0IFpJUF9MT0dfRklMRV9OQU1FICAgICAgICA9ICd0ZW1wX3ppcF9leGVjX2xvZy50eHQnOwoJ
CWNvbnN0IFpJUF9FUlJPUlNfRklMRV9OQU1FICAgICA9ICdsYXN0X2V4ZWNfZXJyb3JzLnR4dCc7CgkJY29
uc3QgWklQX1dBUk5JTkdTX0ZJTEVfTkFNRSAgID0gJ2xhc3RfZXhlY193YXJuaW5ncy50eHQnOwoJCWNvbn
N0IFpJUF9PVEhFUlNfRklMRV9OQU1FICAgICA9ICdsYXN0X2V4ZWNfb3RoZXJzLnR4dCc7CgkJY29uc3QgW
klQX0VYQ0xVU0lPTlNfRklMRV9OQU1FID0gJ2V4Y2x1c2lvbnMudHh0JzsKCQljb25zdCBaSVBfSU5DTFVT
SU9OU19GSUxFX05BTUUgPSAnaW5jbHVzaW9ucy50eHQnOwoJCWNvbnN0IFpJUF9URVNUX0ZJTEUgICAgICA
gICAgICA9ICcvemJ6aXAucGhwJzsgLy8gQ29udGFpbnMgZmlsZSB0ZXN0LnR4dCB3aXRoIGNvbnRlbnQgIk
hlbGxvIFdvcmxkIgoJCWNvbnN0IFpJUF9URVNUX0ZJTEVfU0lHICAgICAgICA9ICIwYTBmOWIyOGM1ZmY4O
WRmYjRmMmEwNDcyYmUwZWE4ZiI7CgkJCgkJLy8gUG9zc2libGUgZXhlY3V0YWJsZSBwYXRoIHNldHMKCQlj
b25zdCBERUZBVUxUX0VYRUNVVEFCTEVfUEFUSFMgPSAnL3Vzci9sb2NhbC9iaW46Oi91c3IvYmluOi91c3I
vbG9jYWwvc2JpbjovdXNyL3NiaW46L3NiaW46L2Jpbic7CgkJY29uc3QgV0lORE9XU19FWEVDVVRBQkxFX1
BBVEhTID0gJyc7CgkJCiAgICAgICAgLyoqCiAgICAgICAgICogbWV0aG9kIHRhZyB1c2VkIHRvIHJlZmVyI
HRvIHRoZSBtZXRob2QgYW5kIGVudGl0aWVzIGFzc29jaWF0ZWQgd2l0aCBpdCBzdWNoIGFzIGNsYXNzIG5h
bWUKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyICRfbWV0aG9kX3RhZyAJc3RyaW5nCiAgICAgICAgICo
vCgkJcHVibGljIHN0YXRpYyAkX21ldGhvZF90YWcgPSAnZXhlYyc7CgkJCQogICAgICAgIC8qKgogICAgIC
AgICAqIFRoaXMgdGVsbHMgdXMgd2hldGhlciB0aGlzIG1ldGhvZCBpcyByZWdhcmRlZCBhcyBhICJjb21wY
XRpYmlsaXR5IiBtZXRob2QKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIGJvb2wKICAgICAgICAgKi8K
CQlwdWJsaWMgc3RhdGljICRfaXNfY29tcGF0aWJpbGl0eV9tZXRob2QgPSBmYWxzZTsKCQkJCiAgICAgICA
gLyoqCiAgICAgICAgICogVGhpcyB0ZWxscyB1cyB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoaXMgbWV0aG9kIH
NvIHRoZXkgY2FuIGJlIGNoZWNrIHRvIHNlZSBpZiB0aGUgbWV0aG9kIGNhbiBiZSBzdXBwb3J0ZWQKICAgI
CAgICAgKiAKICAgICAgICAgKiBAdmFyIGFycmF5CiAgICAgICAgICovCgkJcHVibGljIHN0YXRpYyAkX21l
dGhvZF9kZXBlbmRlbmNpZXMgPSBhcnJheSggJ2NsYXNzZXMnID0+IGFycmF5KCksCgkJCQkJCQkJCQkJICA
JCSAnZnVuY3Rpb25zJyA9PiBhcnJheSggJ2V4ZWMnICksCgkJCQkJCQkJCQkJICAJCSAnZXh0ZW5zaW9ucy
cgPT4gYXJyYXkoKSwKCQkJCQkJCQkJCQkgIAkJICdmaWxlcycgPT4gYXJyYXkoKSwKCQkJCQkJCQkJCQkgI
AkJICdjaGVja19mdW5jJyA9PiAnY2hlY2tfbWV0aG9kX2RlcGVuZGVuY2llc19zdGF0aWMnCgkJCQkJCQkJ
CQkJCQkpOwoJCQkKICAgICAgICAvKioKICAgICAgICAgKiBCb29sZWFuIHRvIGluZGljYXRlIGlmIHdlIGN
hbiBzdXBwb3J0IGNvbW1lbnQgaGFuZGxpbmcgYmFzZWQgb24gZGVwZW5kZW5jeSBjaGVjawogICAgICAgIC
AqIAogICAgICAgICAqIEB2YXIgJF9hbGxvd19pc19jb21tZW50ZXIgYm9vbAogICAgICAgICAqLwogICAgI
CAgIHByb3RlY3RlZCBzdGF0aWMgJF9hbGxvd19pc19jb21tZW50ZXIgPSB0cnVlOwogICAgICAgIAoJCS8q
KgoJCSAqIAoJCSAqIGdldF9tZXRob2RfdGFnX3N0YXRpYygpCgkJICoKCQkgKiBHZXQgdGhlIHN0YXRpYyB
tZXRob2QgdGFnIGluIGEgc3RhdGljIGNvbnRleHQKCQkgKgoJCSAqIEByZXR1cm4JCXN0cmluZwlUaGUgbW
V0aG9kIHRhZwoJCSAqCgkJICovCgkJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbWV0aG9kX3RhZ19zd
GF0aWMoKSB7CgkJCgkJCXJldHVybiBzZWxmOjokX21ldGhvZF90YWc7CgkJCQoJCX0KCgkJLyoqCgkJICog
CgkJICogZ2V0X2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kX3N0YXRpYygpCgkJICoKCQkgKiBHZXQgdGhlIGN
vbXBhdGliaWxpdHkgbWV0aG9kIGluZGljYXRvciBpbiBhIHN0YXRpYyBjb250ZXh0CgkJICoKCQkgKiBAcm
V0dXJuCQlib29sCVRydWUgaWYgaXMgYSBjb21wYXRpYmlsaXR5IG1ldGhvZAoJCSAqCgkJICovCgkJcHVib
GljIHN0YXRpYyBmdW5jdGlvbiBnZXRfaXNfY29tcGF0aWJpbGl0eV9tZXRob2Rfc3RhdGljKCkgewoJCQoJ
CQlyZXR1cm4gc2VsZjo6JF9pc19jb21wYXRpYmlsaXR5X21ldGhvZDsKCQl9CgoJCS8qKgoJCSAqIAoJCSA
qIGdldF9tZXRob2RfZGVwZW5kZW5jaWVzX3N0YXRpYygpCgkJICoKCQkgKiBHZXQgdGhlIG1ldGhvZCBkZX
BlbmRlbmNpZXMgYXJyYXkgaW4gYSBzdGF0aWMgY29udGV4dAoJCSAqCgkJICogQHJldHVybgkJYXJyYXkJV
GhlIGRlcGVuZGVuY2llcyBvZiB0aGUgbWV0aG9kIHRoYXQgaXMgcmVxdWlyZXMgdG8gYmUgYSBzdXBwb3J0
ZWQgbWV0aG9kCgkJICoKCQkgKi8KCQlwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9tZXRob2RfZGVwZW5
kZW5jaWVzX3N0YXRpYygpIHsKCQkKCQkJcmV0dXJuIHNlbGY6OiRfbWV0aG9kX2RlcGVuZGVuY2llczsKCQ
l9CgoJCS8qKgoJCSAqIAoJCSAqIGNoZWNrX21ldGhvZF9kZXBlbmRlbmNpZXNfc3RhdGljKCkKCQkgKgoJC
SAqIEFsbG93cyBhZGRpdGlvbmFsIG1ldGhvZCBkZXBlbmRlbmN5IGNoZWNrcyBiZXlvbmQgdGhlIHN0YW5k
YXJkIGluIGEgc3RhdGljIGNvbnRleHQKCQkgKgoJCSAqIEByZXR1cm4JCWJvb2wJVHJ1ZSBpZiBhZGRpdGl
vbmFsIGRlcGVuZGVuY3kgY2hlY2tzIHBhc3NlZAoJCSAqCgkJICovCgkJcHVibGljIHN0YXRpYyBmdW5jdG
lvbiBjaGVja19tZXRob2RfZGVwZW5kZW5jaWVzX3N0YXRpYygpIHsKCQkKCQkJJHJlc3VsdCA9IHRydWU7C
gkJCQoJCQkvLyBOZWVkIHRvIGNoZWNrIGlmIGZ1bmN0aW9uIGVzY2FwZXNoZWxsYXJnIG9zIGF2YWlsYWJs
ZSAtIGlmIG5vdCB0aGVuIGV4ZWMgY2Fubm90CgkJCS8vIGJlIHVzZWQgZm9yIGNvbW1lbnQgaGFuZGxpbmc
uIFRoaXMgaXNuJ3QgYSBzaG93IHN0b3BwZXIgc28gd2UnbGwgcmV0dXJuIHRydWUKCQkJLy8gYnV0IHNldC
BhbiBpbnRlcm5hbCBmbGFnIHRvIGRpc2FibGUgY29tbWVudGluZyBjYXBhYmlsaXR5LgoJCQkKCQkJJGZ1b
mN0aW9ucyA9IGFycmF5KCAnZXNjYXBlc2hlbGxhcmcnICk7CgkJCQoJCQkkZGlzYWJsZWRfZnVuY3Rpb25z
ID0gYXJyYXlfbWFwKCAidHJpbSIsIGV4cGxvZGUoICcsJywgaW5pX2dldCggJ2Rpc2FibGVfZnVuY3Rpb25
zJyApICkgKTsKCQkJCgkJCS8vIENoZWNrIGVhY2ggZnVuY3Rpb24gZGVwZW5kZW5jeSBhbmQgYmFpbCBvdX
Qgb24gZmlyc3QgZmFpbHVyZQoJCQlmb3JlYWNoICggJGZ1bmN0aW9ucyBhcyAkZnVuY3Rpb24gKSB7CgkJC
QoJCQkJJGZ1bmN0aW9uID0gdHJpbSggJGZ1bmN0aW9uICk7CgkJCQkKCQkJCWlmICggISggKCBmdW5jdGlv
bl9leGlzdHMoICRmdW5jdGlvbiApICkgJiYgKCAhaW5fYXJyYXkoICRmdW5jdGlvbiwgJGRpc2FibGVkX2Z
1bmN0aW9ucyApICkgKSApIHsKCgkJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCWJyZWFrOwoJCQkJCQoJCQ
kJfQoJCQkKCQkJfQoJCQkKCQkJaWYgKCBmYWxzZSA9PT0gJHJlc3VsdCApIHsKCQkJCgkJCQkvLyBGb3VuZ
CB0aGF0IGVzY2FwZXNoZWxsYXJnIG5vdCBhdmFpbGFibGUgc28gZXhlYyBjYW5ub3QgYmUgdXNlZCBmb3Ig
Y29tbWVudCBoYW5kbGluZwoJCQkJc2VsZjo6JF9hbGxvd19pc19jb21tZW50ZXIgPSBmYWxzZTsKCQkJCgk
JCX0KCQkJCgkJCXJldHVybiB0cnVlOwoJCQoJCX0KCgkJLyoqCgkJICoJX19jb25zdHJ1Y3QoKQoJCSAqCQ
oJCSAqCURlZmF1bHQgY29uc3RydWN0b3IuCgkJICoJCgkJICoJQHBhcmFtCQlyZWZlcmVuY2UJJiRwYXJlb
nQJCVtvcHRpb25hbF0gUmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgc3RhdHVzKCkg
ZnVuY3Rpb24gZm9yIHN0YXR1cyB1cGRhdGVzLgoJCSAqCUByZXR1cm4JCW51bGwKCQkgKgoJCSAqLwoJCXB
1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJiRwYXJlbnQgPSBOVUxMICkgewoKCQkJcGFyZW50OjpfX2
NvbnN0cnVjdCggJHBhcmVudCApOwoJCQkKCQkJLy8gU2V0IHRoZSBpbnRlcm5hbCBmbGFnIGluZGljYXRpb
mcgaWYgZXhlY19kaXIgaXMgc2V0IGluIHRoZSBQSFAgZW52aXJvbm1lbnQKCQkJJHRoaXMtPnNldF9leGVj
X2Rpcl9mbGFnKCk7CgkJCQoJCQkvLyBPdmVycmlkZSBzb21lIG9mIHBhcmVudCBkZWZhdWx0cwoJCQkkdGh
pcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXSA9IGFycmF5X21lcmdlKCAkdGhpcy0+X21ldGhvZF9kZX
RhaWxzWyAnYXR0cicgXSwKCQkJCQkJCQkJCQkJCQkJYXJyYXkoICduYW1lJyA9PiAnRXhlYyBNZXRob2QnL
AoJCQkJCQkJCQkJCQkJICAJCQkgICAnY29tcGF0aWJpbGl0eScgPT4gcGx1Z2luYnVkZHlfemJ6aXBleGVj
OjokX2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kICkKCQkJCQkJCQkJCQkJCSAgCSAgICk7CgkJCQkJCQkJCQk
JCQkgIAkgICAKCQkJLy8gTm93IHNldCB1cCB0aGUgZGVmYXVsdCBleGVjdXRhYmxlIHBhdGhzIChub3QgbW
VyZ2luZyBidXQgc2V0dGluZykKCQkJLy8gTm90ZTogUGFyZW50IGNvbnN0cnVjdG9yIHNldCB0aGUgb3Mgd
HlwZSB2YWx1ZQoJCQlzd2l0Y2ggKCAkdGhpcy0+Z2V0X29zX3R5cGUoKSApIHsKCQkJCgkJCQljYXNlIHNl
bGY6Ok9TX1RZUEVfTklYOgoJCQkJCgkJCQkJJHRoaXMtPnNldF9leGVjdXRhYmxlX3BhdGhzKCBleHBsb2R
lKCBQQVRIX1NFUEFSQVRPUiwgc2VsZjo6REVGQVVMVF9FWEVDVVRBQkxFX1BBVEhTICksIGZhbHNlKTsKCQ
kJCQlicmVhazsKCQkJCQkKCQkJCWNhc2Ugc2VsZjo6T1NfVFlQRV9XSU46CgkJCQkJCgkJCQkJJHRoaXMtP
nNldF9leGVjdXRhYmxlX3BhdGhzKCBleHBsb2RlKCBQQVRIX1NFUEFSQVRPUiwgc2VsZjo6V0lORE9XU19F
WEVDVVRBQkxFX1BBVEhTICksIGZhbHNlKTsKCQkJCQkKCQkJCQkvLyBOZWVkIHRvIG1lcmdlIGluIEFCU1B
BVEggaGVyZSBiZWNhdXNlIHdlIGNhbm5vdCBzZXQgdGhhdCBpbiB0aGUgZGVmYXVsdHMgLSBpdCBpcyBwcm
VwZW5kZWQKCQkJCQkkdGhpcy0+c2V0X2V4ZWN1dGFibGVfcGF0aHMoIGFycmF5KCBydHJpbSggQUJTUEFUS
CwgRElSRUNUT1JZX1NFUEFSQVRPUiApICkgKTsKCQkJCQlicmVhazsKCQkJCQkKCQkJCWRlZmF1bHQ6CgkJ
CQkJLy8gTG9nIGVycm9yIGFuZCBsZWF2ZSBwYXRocyBlbXB0eQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF
0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ1Vua25vd24gT1MgdHlwZSAoJTEkcykgY291bGQgbm90IH
NldCBleGVjdXRhYmxlIHBhdGhzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHRoaXMtPmdldF9vc190e
XBlKCkgKSApOwoJCQkJCQoJCQl9CgkJCQoJCX0KCQkKCQkvKioKCQkgKglfX2Rlc3RydWN0KCkKCQkgKgkK
CQkgKglEZWZhdWx0IGRlc3RydWN0b3IuCgkJICoJCgkJICoJQHJldHVybgkJbnVsbAoJCSAqCgkJICovCgk
JcHVibGljIGZ1bmN0aW9uIF9fZGVzdHJ1Y3QoICkgewoJCQoJCQlwYXJlbnQ6Ol9fZGVzdHJ1Y3QoKTsKCg
kJfQoJCQoJCS8qKgoJCSAqCWdldF9tZXRob2RfdGFnKCkKCQkgKgkKCQkgKglSZXR1cm5zIHRoZSAoc3Rhd
GljKSBtZXRob2QgdGFnCgkJICoJCgkJICoJQHJldHVybgkJc3RyaW5nIFRoZSBtZXRob2QgdGFnCgkJICoK
CQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0X21ldGhvZF90YWcoKSB7CgkJCgkJCXJldHVybiBwbHVnaW5
idWRkeV96YnppcGV4ZWM6OiRfbWV0aG9kX3RhZzsKCQkJCgkJfQoJCQoJCS8qKgoJCSAqCWdldF9pc19jb2
1wYXRpYmlsaXR5X21ldGhvZCgpCgkJICoJCgkJICoJUmV0dXJucyB0aGUgKHN0YXRpYykgaXNfY29tcGF0a
WJpbGl0eV9tZXRob2QgYm9vbGVhbgoJCSAqCQoJCSAqCUByZXR1cm4JCWJvb2wKCQkgKgoJCSAqLwoJCXB1
YmxpYyBmdW5jdGlvbiBnZXRfaXNfY29tcGF0aWJpbGl0eV9tZXRob2QoKSB7CgkJCgkJCXJldHVybiBwbHV
naW5idWRkeV96YnppcGV4ZWM6OiRfaXNfY29tcGF0aWJpbGl0eV9tZXRob2Q7CgkJCQoJCX0KCQkKCQkvKi
oKCQkgKglnZXRfY29tbWFuZF9wYXRoKCkKCQkgKgkKCQkgKglUaGlzIHJldHVybnMgdGhlIHBhdGggZm9yI
HRoZSByZXF1ZXN0ZWQgY29tbWFuZCBmcm9tIHRoZSBtZXRob2QgZGV0YWlscwoJCSAqCUlmIG5vdCBmb3Vu
ZCB0aGVuIHdpbGwgcmV0dXJuIGVtcHR5IHN0cmluZyB3aGljaCBpcyB0aGUgc2FtZSBhcyBpZiB0aGUKCQk
gKgljb21tYW5kIGlzIGJlaW5nIGFjY2Vzc2VkIHRocm91Z2ggUEFUSAoJCSAqCQoJCSAqCUByZXR1cm4JCX
N0cmluZwkJCQlQYXRoIGZvciBjb21tYW5kLCB0cmltbWVkIC0gbWF5IGJlIGVtcHR5CgkJICoKCQkgKi8KC
Qlwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X2NvbW1hbmRfcGF0aCggJGNvbW1hbmQgPSBzZWxmOjpDT01NQU5E
X1VOS05PV05fUEFUSCApIHsKCQkKCQkJJHJlc3VsdCA9ICcnOwoJCQkKCQkJc3dpdGNoKCAkY29tbWFuZCA
pIHsKCQkJCgkJCQljYXNlIHNlbGY6OkNPTU1BTkRfWklQX1BBVEg6CgkJCQkKCQkJCQkvLyBJZiB0aGVyZS
BpcyBhIGNvbW1vbiBwYXRoIHVzZSBpdCBvdGhlcndpc2UgbG9vayBmb3IgdGhlIGNvbW1hbmQgc3BlY2lma
WMgcGF0aAoJCQkJCWlmICggaXNzZXQoICR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3Bh
dGgnIF0gKSApIHsKCQkJCQkKCQkJCQkJJHJlc3VsdCA9IHRyaW0oICR0aGlzLT5fbWV0aG9kX2RldGFpbHN
bICdwYXJhbScgXVsgJ3BhdGgnIF0gKTsKCQkJCQkJCgkJCQkJfSBlbHNlaWYgKCBpc3NldCggJHRoaXMtPl
9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAnemlwJyBdWyAncGF0aCcgXSApICkgewoJCQkJCQoJCQkJC
QkkcmVzdWx0ID0gdHJpbSggJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAnemlwJyBdWyAn
cGF0aCcgXSApOwoJCQkJCX0KCQkJCQkKCQkJCQl
icmVhazsKCQkJCQoJCQkJY2FzZSBzZWxmOjpDT01NQU5EX1VOWklQX1BBVEg6CgkJCQkKCQkJCQkvLyBJZi
B0aGVyZSBpcyBhIGNvbW1vbiBwYXRoIHVzZSBpdCBvdGhlcndpc2UgbG9vayBmb3IgdGhlIGNvbW1hbmQgc
3BlY2lmaWMgcGF0aAoJCQkJCWlmICggaXNzZXQoICR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScg
XVsgJ3BhdGgnIF0gKSApIHsKCQkJCQkKCQkJCQkJJHJlc3VsdCA9IHRyaW0oICR0aGlzLT5fbWV0aG9kX2R
ldGFpbHNbICdwYXJhbScgXVsgJ3BhdGgnIF0gKTsKCQkJCQkJCgkJCQkJfSBlbHNlaWYgKCBpc3NldCggJH
RoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAndW56aXAnIF1bICdwYXRoJyBdICkgKSB7CgkJC
QkJCgkJCQkJCSRyZXN1bHQgPSB0cmltKCAkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAncGFyYW0nIF1bICd1
bnppcCcgXVsgJ3BhdGgnIF0gKTsKCQkJCQl9CgkJCQkJCgkJCQkJYnJlYWs7CgkJCQkKCQkJCWRlZmF1bHQ
6CgkJCQkKCQkJCQkvLyBSZXR1cm4gdGhlIGVtcHR5IHN0cmluZyBkZWZhdWx0IGZvciBub3cKCQkJCgkJCX
0KCgkJCXJldHVybiAkcmVzdWx0OwoJCQoJCX0KCQkKCQkvKioKCQkgKglzZXRfemlwX3ZlcnNpb24oKQoJC
SAqCQoJCSAqCVRoaXMgc2V0cyB0aGUgemlwIHZlcnNpb24gaW5mb3JtYXRpb24gaW4gdGhlIG1ldGhvZCBk
ZXRhaWxzCgkJICoJVXNlICJ6aXAgLWgiIHRvIGdldCBhIHN0YW5kYXJkaXplZCBoZWxwIG91dHB1dCB0aGF
0IGNvbnRhaW5zIHRoZSB6aXAgdmVyc2lvbi4KCQkgKglUaGVvcmV0aWNhbGx5IHdlIHNob3VsZCBiZSBhYm
xlIHRvIHVzZSAiemlwIC12IiB0byBnZXQgemlwIHZlcnNpb24gYW5kIGJ1aWxkCgkJICoJZGV0YWlscyBid
XQgcHJlLXYzIHppcCBydW5uaW5nICJ6aXAgLXYiIHdpbGwgbm90IHByb2R1Y2UgdGhlIHJlcXVpcmVkIG91
dHB1dCBiZWNhdXNlCgkJICoJdGhlcmUgaXMgbm8gdHR5IGF0dGFjaGVkICh3aGVuIHJ1bm5pbmcgdGhyb3V
naCBleGVjKCkgb3IgZXF1aXZhbGVudCksIGluc3RlYWQKCQkgKglpdCB3aWxsIChvciBzaG91bGQpIHByb2
R1Y2UgYSB6aXAgZmlsZS4gSG93ZXZlciwgaXQgaGFzIGJlZW4gZm91bmQgdGhhdCBldmVuIHRoaXMKCQkgK
glpcyBub3QgcmVsaWFibGUgYW5kIHNvbWUgaW5zdGFsbGF0aW9ucyBqdXN0IHNlZW0gdG8gZnJlZXplIHdo
ZW4gInppcCAtdiIgaXMgcnVuCgkJICoJd2hpY2ggYm9ya3MgdGhlIHdob2xlIHByb2Nlc3MuCgkJICoJU28
gd2UgdXNlICJ6aXAgLWgiIGZpcnN0IHRvIGdldCB0aGUgYmFzaWMgemlwIHZlcnNpb24gaW5mb3JtYXRpb2
4gYW5kIGFzIGEgZnV0dXJlCgkJICoJZXh0ZW5zaW9uIGlmIGl0IGlzIHZlcnNpb24gMy4wKyAoMy4wIGlzI
GN1cnJlbnQgYW5kIDMuMSBoYXNuJ3QgYmVlbiBvZmZpY2lhbGx5CgkJICoJcmVsZWFzZWQpIHdlIG1heSB0
aGVuIHJ1biAiemlwIC12IiB0byBnZXQgdGhlIGV4dGVuZGVkIHZlcnNpb24gYW5kIGJ1aWxkIGluZm9ybWF
0aW9uLgoJCSAqCQoJCSAqCUBwYXJhbQkJaW50CQkkbWFqb3IJCVZhbHVlIHRvIHVzZSBpZiBub25lIGZvdW
5kIG9yIG92ZXJyaWRlIHRydWUKCQkgKglAcGFyYW0JCWludAkJJG1pbm9yCQlWYWx1ZSB0byB1c2UgaWYgb
m9uZSBmb3VuZCBvciBvdmVycmlkZSB0cnVlCgkJICoJQHBhcmFtCQlib29sCSRvdmVycmlkZQlUcnVlIHRv
IHVzZSBwYXNzZWQgaW4gdmFsdWUocykgcmVnYXJkbGVzcwoJCSAqCUByZXR1cm4JCW9iamVjdAkJCQlUaGl
zIG9iamVjdCByZWZlcmVuY2UKCQkgKgoJCSAqLwoJCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRfemlwX3Zlcn
Npb24oICRtYWpvciA9IDAsICRtaW5vciA9IDAsICRvdmVycmlkZSA9IGZhbHNlICkgewoJCQoJCQkkZXhpd
GNvZGUgPSAxMjc7CgkJCSRvdXRwdXQgPSBhcnJheSgpOwoJCQkkemlwcGF0aCA9ICcnOwoJCQkkY29tbWFu
ZCA9ICcnOwoJCQkkbWF0Y2hlcyA9IGFycmF5KCk7CgkJCSRpbmZvID0gJyc7CgkJCgkJCS8vIElmIHdlIGh
hdmUgYmVlbiBnaXZlbiBhIHZhbHVlIHRvIHVzZSB3aXRoIG92ZXJyaWRlIHRoZW4ganVzdCB1c2UgaXQKCQ
kJaWYgKCAoICggaXNfaW50KCAkbWFqb3IpICkgJiYgKCAwIDwgJG1ham9yICkgJiYgKCBpc19pbnQoICRta
W5vciApICkgKSAmJiAoIHRydWUgPT09ICRvdmVycmlkZSApICkgewoJCQkKCQkJCS8vIFNldCB0aGUgZ2l2
ZW4gdmVyc2lvbiByZWdhcmRsZXNzCgkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAncGFyYW0nIF1bICd
6aXAnIF1bICd2ZXJzaW9uJyBdID0gYXJyYXkoICdtYWpvcicgPT4gJG1ham9yLCAnbWlub3InID0+ICRtaW
5vciApOwoJCQkJcmV0dXJuICR0aGlzOyAKCQkJCgkJCX0KCQkJCgkJCS8vIEdldCB0aGUgY29tbWFuZCBwY
XRoIGZvciB0aGUgemlwIGNvbW1hbmQgLSBzaG91bGQgcmV0dXJuIGEgdHJpbW1lZCBzdHJpbmcKCQkJJHpp
cHBhdGggPSAkdGhpcy0+Z2V0X2NvbW1hbmRfcGF0aCggc2VsZjo6Q09NTUFORF9aSVBfUEFUSCApOwoJCQk
KCQkJLy8gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiByZXF1aXJlZAoJCQkkY29tbWFuZCA9ICR0aGlzLT
5zbGFzaGlmeSggJHppcHBhdGggKSAuICd6aXAgLWgnOwoJCQlAZXhlYyggJGNvbW1hbmQsICRvdXRwdXQsI
CRleGl0Y29kZSApOwoJCQkKCQkJaWYgKCAwID09PSAkZXhpdGNvZGUgKSB7CgkJCQoJCQkJLy8gRXhwZWN0
IGZvcm1hdCBsaWtlOiBaaXAgMy4wIChKdWx5IDV0aCAyMDA4KS4uLgoJCQkJLy8gICAgICAgICAgICAgICA
gICAgICBaaXAgMy4xYyBCRVRBIChKdW5lIDIybmQgMjAxMCkuLi4KCQkJCS8vIFRoZSBtYXRjaCBzaG91bG
QgdGFrZSBvbmx5IHRoZSBtYWpvci9taW5vciBkaWdpdHMgYW5kIGlnbm9yZSBhbnkgZm9sbG93aW5nIGFsc
GhhCgkJCQkvLyBNYXkgZXh0ZW5kIHRvIGNhcHR1cmUgdGhlIGFscGhhIGFuZCBhbHNvIHdoZXRoZXIgQkVU
QSBpbmRpY2F0ZWQgYnV0IG5vdCBjdXJyZW50bHkKCQkJCS8vIHJlcXVpcmVkLgoJCQkJZm9yZWFjaCAoICR
vdXRwdXQgYXMgJGxpbmUgKSB7CgoJCQkJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqKHppcClccysoP1A8bW
Fqb3I+XGQpXC4oP1A8bWlub3I+XGQrKS9pJywgJGxpbmUsICRtYXRjaGVzICkgKSB7CgkJCQkJCgkJCQkJC
SRtYWpvciA9IChpbnQpJG1hdGNoZXNbICdtYWpvcicgXTsKCQkJCQkJJG1pbm9yID0gKGludCkkbWF0Y2hl
c1sgJ21pbm9yJyBdOwoJCQkJCQlicmVhazsKCQkJCQkKCQkJCQl9CgkJCQkKCQkJCX0KCQkJCQoJCQkJLy8
gSWYgd2UgZGlkbid0IG1hdGNoIGEgdmVyc2lvbiB0aGVuIHN1c3BlY3QgdGhpcyBpcyBzdGlsbCBub3Qgdm
FsaWQgdmVyc2lvbiBpbmZvCi8vIAkJCQlpZiAoICFlbXB0eSggJG1hdGNoZXMgKSApIHsKLy8gCQkJCQovL
yAJCQkJCS8vIFdlIGRpZCBtYXRjaCBhIHZlcnNpb24gc28gY2hlY2sgaWYgd2UgaGF2ZSBhIGNoYW5jZSBv
ZiBnZXR0aW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KLy8gCQkJCQlpZiAoIDMgPT09ICRtYWpvciApIHs
KLy8gCQkJCQkKLy8gCQkJCQkJJGV4aXRjb2RlID0gMTI3OwovLyAJCQkJCQkkb3V0cHV0ID0gYXJyYXkoKT
sKLy8gCQkJCQkKLy8gCQkJCQkJLy8gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiByZXF1aXJlZAovLyAJC
QkJCQkkY29tbWFuZCA9ICR0aGlzLT5zbGFzaGlmeSggJHppcHBhdGggKSAuICd6aXAgLXYnOwovLyAJCQkJ
CQlAZXhlYyggJGNvbW1hbmQsICRvdXRwdXQsICRleGl0Y29kZSApOwovLyAJCQkJCQkKLy8gCQkJCQkJaWY
gKCAwID09PSAkZXhpdGNvZGUgKSB7Ci8vIAkJCQkKLy8gCQkJCQkJCS8vIE5vdyBjcmVhdGUgdGhlIGluZm
8gc3RyaW5nCi8vIAkJCQkJCQkvLyBOb3RlOiBub3Qgd29ydGggY29tcHJlc3NpbmcgYXMgdGhhdCBnaXZlc
yBhIGxhcmdlciBzdHJpbmcgYWZ0ZXIgY29udmVydGluZwovLyAJCQkJCQkJLy8gZnJvbSBiaW5hcnkgdG8g
aGV4IGZvcm1hdCBmb3Igc2F2aW5nCi8vIAkJCQkJCQkkaW5mbyA9IGltcGxvZGUoIFBIUF9FT0wsICRvdXR
wdXQgKTsKLy8gCQkJCQkJCSR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3ppcCcgXVsgJ2
luZm8nIF0gPSAkaW5mbzsKLy8gCQkJCQkJCi8vIAkJCQkJCX0KLy8gCQkJCQkKLy8gCQkJCQl9Ci8vIAkJC
QkKLy8gCQkJCX0KCQkJCgkJCX0KCgkJCS8vIE5vdyB1c2UgZWl0aGVyIHdoYXQgd2UgZ290IG9yIHdoYXQg
d2Ugd2VyZSBnaXZlbi4uLgoJCQlpZiAoICggaXNfaW50KCAkbWFqb3IpICkgJiYgKCAwIDwgJG1ham9yICk
gJiYgKCBpc19pbnQoICRtaW5vciApICkgKSB7CgkJCQoJCQkJLy8gU2V0IHRoZSBnaXZlbiB2ZXJzaW9uIH
JlZ2FyZGxlc3MKCQkJCSR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3ppcCcgXVsgJ3Zlc
nNpb24nIF0gPSBhcnJheSggJ21ham9yJyA9PiAkbWFqb3IsICdtaW5vcicgPT4gJG1pbm9yICk7CgkJCQoJ
CQl9CgkJCQoJCQlyZXR1cm4gJHRoaXM7IAoJCQoJCX0KCQkKCQkvKioKCQkgKglnZXRfemlwX3ZlcnNpb24
oKQoJCSAqCQoJCSAqCVRoaXMgZ2V0cyB0aGUgemlwIHZlcnNpb24gYXMgYW4gYXJyYXkgb2YgbWFqb3IvbW
lub3Igb3IgcmV0dXJucyBmYWxzZSBpZiBub3Qga25vd24KCQkgKglUT0RPOiBQYXNzIHBhcmFtZXRlciB0b
yBzcGVjaWZ5IHdoYXQgZm9ybWF0IHRvIHJldHVybiBpbgoJCSAqCQoJCSAqCUByZXR1cm4JCWFycmF5fGJv
b2wJCQkJUmV0dXJucyBhcnJheShtYWpvciwgbWlub3IpIG9yIGZhbHNlIGlmIG5vdCBrbm93bgoJCSAqCgk
JICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF96aXBfdmVyc2lvbigpIHsKCQkKCQkJJHJlc3VsdCA9IC
R0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3ppcCcgXVsgJ3ZlcnNpb24nIF07CgkJCQoJC
QlpZiAoIDAgPT09ICRyZXN1bHRbICdtYWpvcicgXSApIHsKCQkJCgkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJ
CQkKCQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQoJCX0KCQkKCQkvKioKCQkgKglzZXRfdW56aXB
fdmVyc2lvbigpCgkJICoJCgkJICoJVGhpcyBzZXRzIHRoZSB1bnppcCB2ZXJzaW9uIGluZm9ybWF0aW9uIG
luIHRoZSBtZXRob2QgZGV0YWlscwoJCSAqCQoJCSAqCUBwYXJhbQkJaW50CQkkbWFqb3IJCVZhbHVlIHRvI
HVzZSBpZiBub25lIGZvdW5kIG9yIG92ZXJyaWRlIHRydWUKCQkgKglAcGFyYW0JCWludAkJJG1pbm9yCQlW
YWx1ZSB0byB1c2UgaWYgbm9uZSBmb3VuZCBvciBvdmVycmlkZSB0cnVlCgkJICoJQHBhcmFtCQlib29sCSR
vdmVycmlkZQlUcnVlIHRvIHVzZSBwYXNzZWQgaW4gdmFsdWUocykgcmVnYXJkbGVzcwoJCSAqCUByZXR1cm
4JCW9iamVjdAkJCQlUaGlzIG9iamVjdCByZWZlcmVuY2UKCQkgKgoJCSAqLwoJCXByb3RlY3RlZCBmdW5jd
GlvbiBzZXRfdW56aXBfdmVyc2lvbiggJG1ham9yID0gMCwgJG1pbm9yID0gMCwgJG92ZXJyaWRlID0gZmFs
c2UgKSB7CgkJCgkJCSRleGl0Y29kZSA9IDA7CgkJCSRvdXRwdXQgPSBhcnJheSgpOwoJCQkkemlwcGF0aCA
9ICcnOwoJCQkkY29tbWFuZCA9ICcnOwoJCQkkbWF0Y2hlcyA9IGFycmF5KCk7CgkJCgkJCS8vIElmIHdlIG
hhdmUgYmVlbiBnaXZlbiBhIHZhbHVlIHRvIHVzZSB3aXRoIG92ZXJyaWRlIHRoZW4ganVzdCB1c2UgaXQKC
QkJaWYgKCAoICggaXNfaW50KCAkbWFqb3IpICkgJiYgKCAwIDwgJG1ham9yICkgJiYgKCBpc19pbnQoICRt
aW5vciApICkgKSAmJiAoIHRydWUgPT09ICRvdmVycmlkZSApICkgewoJCQkKCQkJCS8vIFNldCB0aGUgZ2l
2ZW4gdmVyc2lvbiByZWdhcmRsZXNzCgkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAncGFyYW0nIF1bIC
d1bnppcCcgXVsgJ3ZlcnNpb24nIF0gPSBhcnJheSggJ21ham9yJyA9PiAkbWFqb3IsICdtaW5vcicgPT4gJ
G1pbm9yICk7CgkJCQlyZXR1cm4gJHRoaXM7IAoJCQkKCQkJfQoJCQkKCQkJLy8gR2V0IHRoZSBjb21tYW5k
IHBhdGggZm9yIHRoZSB1bnppcCBjb21tYW5kIC0gc2hvdWxkIHJldHVybiBhIHRyaW1tZWQgc3RyaW5nCgk
JCSR6aXBwYXRoID0gJHRoaXMtPmdldF9jb21tYW5kX3BhdGgoIHNlbGY6OkNPTU1BTkRfVU5aSVBfUEFUSC
ApOwoJCQkKCQkJLy8gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiByZXF1aXJlZAoJCQkkY29tbWFuZCA9I
CR0aGlzLT5zbGFzaGlmeSggJHppcHBhdGggKSAuICd1bnppcCAtdic7CQoJCQlAZXhlYyggJGNvbW1hbmQs
ICRvdXRwdXQsICRleGl0Y29kZSApOwoJCQkKCQkJaWYgKCAwID09PSAkZXhpdGNvZGUgKSB7CgkJCQoJCQk
JLy8gU2hvdWxkIGJlIGdvb2Qgb3V0cHV0IHRvIHRyeSBhdCBsZWFzdAoJCQkJZm9yZWFjaCAoICRvdXRwdX
QgYXMgJGxpbmUgKSB7CgoJCQkJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqKHVuemlwKVxzKyg/UDxtYWpvc
j5cZClcLig/UDxtaW5vcj5cZCspL2knLCAkbGluZSwgJG1hdGNoZXMgKSApIHsKCQkJCQkKCQkJCQkJJG1h
am9yID0gKGludCkkbWF0Y2hlc1sgJ21ham9yJyBdOwoJCQkJCQkkbWlub3IgPSAoaW50KSRtYXRjaGVzWyA
nbWlub3InIF07CgkJCQkJCWJyZWFrOwoJCQkJCQoJCQkJCX0KCQkJCQoJCQkJfQoJCQkKCQkJCS8vIE5vdy
BjcmVhdGUgdGhlIGluZm8gc3RyaW5nCgkJCQkvLyBOb3RlOiBub3Qgd29ydGggY29tcHJlc3NpbmcgYXMgd
GhhdCBnaXZlcyBhIGxhcmdlciBzdHJpbmcgYWZ0ZXIgY29udmVydGluZwoJCQkJLy8gZnJvbSBiaW5hcnkg
dG8gaGV4IGZvcm1hdCBmb3Igc2F2aW5nCgkJCQkkaW5mbyA9IGltcGxvZGUoIFBIUF9FT0wsICRvdXRwdXQ
gKTsKCQkJCSR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3VuemlwJyBdWyAnaW5mbycgXS
A9ICRpbmZvOwoJCQkJCgkJCX0KCQkJCgkJCS8vIE5vdyB1c2UgZWl0aGVyIHdoYXQgd2UgZ290IG9yIHdoY
XQgd2Ugd2VyZSBnaXZlbi4uLgoJCQlpZiAoICggaXNfaW50KCAkbWFqb3IpICkgJiYgKCAwIDwgJG1ham9y
ICkgJiYgKCBpc19pbnQoICRtaW5vciApICkgKSB7CgkJCQoJCQkJLy8gU2V0IHRoZSBnaXZlbiB2ZXJzaW9
uIHJlZ2FyZGxlc3MKCQkJCSR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3VuemlwJyBdWy
AndmVyc2lvbicgXSA9IGFycmF5KCAnbWFqb3InID0+ICRtYWpvciwgJ21pbm9yJyA9PiAkbWlub3IgKTsKC
QkJCgkJCX0KCQkJCgkJCXJldHVybiAkdGhpczsgCgkJCgkJfQoJCQoJCS8qKgoJCSAqCWdldF91bnppcF92
ZXJzaW9uKCkKCQkgKgkKCQkgKglUaGlzIGdldHMgdGhlIHVuemlwIHZlcnNpb24gYXMgYW4gYXJyYXkgb2Y
gbWFqb3IvbWlub3Igb3IgcmV0dXJucyBmYWxzZSBpZiBub3Qga25vd24KCQkgKglUT0RPOiBQYXNzIHBhcm
FtZXRlciB0byBzcGVjaWZ5IHdoYXQgZm9ybWF0IHRvIHJldHVybiBpbgoJCSAqCQoJCSAqCUByZXR1cm4JC
WFycmF5fGJvb2wJCQkJUmV0dXJucyBhcnJheShtYWpvciwgbWlub3IpIG9yIGZhbHNlIGlmIG5vdCBrbm93
bgoJCSAqCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF91bnppcF92ZXJzaW9uKCkgewoJCQoJCQk
kcmVzdWx0ID0gJHRoaXMtPl9tZXRob2RfZGV0YW
lsc1sgJ3BhcmFtJyBdWyAndW56aXAnIF1bICd2ZXJzaW9uJyBdOwoJCQkKCQkJaWYgKCAwID09PSAkcmVzd
Wx0WyAnbWFqb3InIF0gKSB7CgkJCQoJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCgkJCX0KCQkJCgkJCXJl
dHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJCgkJLyoqCgkJICoJZ2V0X3ppcF9zdXBwb3J0c19sb2dmaWxlKCk
KCQkgKgkKCQkgKglUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgemlwIGluIHVzZSBpcyBhYmxlIHRvIHN1cH
BvcnQgbG9nZmlsZSB1c2FnZSBmb3IKCQkgKglsb2dnaW5nIHByb2dyZXNzIG9mIHppcCBvcGVyYXRpb24KC
QkgKgkKCQkgKglAcmV0dXJuCQlib29sCQkJCVRydWUgaWYgbG9nZmlsZSBzdXBwb3J0ZWQsIG90aGVyd2lz
ZSBmYWxzZQoJCSAqCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF96aXBfc3VwcG9ydHNfbG9nX2Z
pbGUoKSB7CgkJCgkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCgkJCS8vIEN1cnJlbnRseSBjaGVjayBiYXNlZC
BqdXN0IG9uIHRoZSB6aXAgbWFqb3IgdmVyc2lvbgoJCQkvLyBUT0RPOiBkZWNpZGUgaWYgYmV0dGVyIHRvI
HJlc3BvbmQgYmFzZWQgb24gdGhlIGF2YWlsYWJsZSBvcHRpb25zCgkJCWlmICggMyA8PSAkdGhpcy0+X21l
dGhvZF9kZXRhaWxzWyAncGFyYW0nIF1bICd6aXAnIF1bICd2ZXJzaW9uJyBdWyAnbWFqb3InIF0gKSB7Cgk
JCQoJCQkJJHJlc3VsdCA9IHRydWU7CgkJCQkKCQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCgkJfQ
oJCQoJCS8qKgoJCSAqCWlzX2F2YWlsYWJsZSgpCgkJICoJCgkJICoJQSBmdW5jdGlvbiB0aGF0IHRlc3RzI
GZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBzcGVjaWZpYyBtZXRob2QgYW5kIGl0cyBhdmFpbGFibGUg
bW9kZXMuIFdpbGwgdGVzdCBmb3IKCQkgKiAgbXVsdGlwbGUgbW9kZXMgKHppcCAmIHVuemlwKSBhbmQgb25
seSByZXR1cm4gZmFsc2UgaWYgbmVpdGhlciBpcyBhdmFpbGFibGUuIEFjdHVhbCBhdmFpbGFibGUgbW9kZX
Mgd2lsbAoJCSAqICBiZSBpbmRpY2F0ZWQgaW4gdGhlIG1ldGhvZCBhdHRyaWJ1dGVzLgoJCSAqCgkJICogI
E5vdGU6IGluIHRoaXMgY2FzZSBhcyB0aGUgemlwIGFuZCB1bnppcCBjYXBhYmlsaXRpZXMgYXJlIHByb3Zp
ZGVkIGJ5IGV4dGVybmFsIGNvbW1hbmRzIHdlIG5lZWQgdG8gdGVzdAoJCSAqICBmb3IgdGhlIGF2YWlsYWJ
pbGl0eSBvZiBib3RoIG9mIHRoZW0gYW5kIHNldCBhdHRyaWJ1dGVzIGFjY29yZGluZ2x5CgkJICoJCgkJIC
oJQHBhcmFtCQlzdHJpbmcJJHRlbXBkaXIJVGVtcG9yYXJ5IGRpcmVjdG9yeSB0byB1c2UgZm9yIGFueSB0Z
XN0IGZpbGVzIChtdXN0IGJlIHdyaXRlYWJsZSkKCQkgKglAcmV0dXJuCQlib29sCQkJCVRydWUgaWYgdGhl
IG1ldGhvZCBpcyBhdmFpbGFibGUgZm9yIGF0IGxlYXN0IG9uZSBtb2RlLCBmYWxzZSBvdGhlcndpc2UKCQk
gKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBpc19hdmFpbGFibGUoICR0ZW1wZGlyICkgewoJCQoJCQkkcm
VzdWx0ID0gZmFsc2U7CgkJCgkJCS8vIFRoaXMgaXMganVzdCBhIG5pY2V0eSBmb3Igbm93IHVudGlsIHBsY
XRmb3JtIGhhbmRsaW5nIGlzIGZ1bGx5IHJlc29sdmVkCgkJCXN3aXRjaCAoICR0aGlzLT5nZXRfb3NfdHlw
ZSgpICkgewoJCQkJY2FzZSBzZWxmOjpPU19UWVBFX05JWDoKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPmlzX2F
2YWlsYWJsZV9nZW5lcmljKCAkdGVtcGRpciApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSBzZWxmOjpPU19UWV
BFX1dJTjoKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPmlzX2F2YWlsYWJsZV9nZW5lcmljKCAkdGVtcGRpciApO
woJCQkJCWJyZWFrOwoJCQkJZGVmYXVsdDoKCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCX0KCQkJCgkJCXJl
dHVybiAkcmVzdWx0OwoJCQkJCSAgCQoJCX0KCQkKCQkvKioKCQkgKglpc19hdmFpbGFibGVfZ2VuZXJpYyg
pCgkJICoJCgkJICoJQSBmdW5jdGlvbiB0aGF0IHRlc3RzIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZS
BzcGVjaWZpYyBtZXRob2QgYW5kIGl0cyBhdmFpbGFibGUgbW9kZXMuIFdpbGwgdGVzdCBmb3IKCQkgKiAgb
XVsdGlwbGUgbW9kZXMgKHppcCAmIHVuemlwKSBhbmQgb25seSByZXR1cm4gZmFsc2UgaWYgbmVpdGhlciBp
cyBhdmFpbGFibGUuIEFjdHVhbCBhdmFpbGFibGUgbW9kZXMgd2lsbAoJCSAqICBiZSBpbmRpY2F0ZWQgaW4
gdGhlIG1ldGhvZCBhdHRyaWJ1dGVzLgoJCSAqCgkJICogIE5vdGU6IGluIHRoaXMgY2FzZSBhcyB0aGUgem
lwIGFuZCB1bnppcCBjYXBhYmlsaXRpZXMgYXJlIHByb3ZpZGVkIGJ5IGV4dGVybmFsIGNvbW1hbmRzIHdlI
G5lZWQgdG8gdGVzdAoJCSAqICBmb3IgdGhlIGF2YWlsYWJpbGl0eSBvZiBib3RoIG9mIHRoZW0gYW5kIHNl
dCBhdHRyaWJ1dGVzIGFjY29yZGluZ2x5CgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJJHRlbXBkaXIJVGV
tcG9yYXJ5IGRpcmVjdG9yeSB0byB1c2UgZm9yIGFueSB0ZXN0IGZpbGVzIChtdXN0IGJlIHdyaXRlYWJsZS
kKCQkgKglAcmV0dXJuCQlib29sCQkJCVRydWUgaWYgdGhlIG1ldGhvZCBpcyBhdmFpbGFibGUgZm9yIGF0I
GxlYXN0IG9uZSBtb2RlLCBmYWxzZSBvdGhlcndpc2UKCQkgKgoJCSAqLwoJCXByb3RlY3RlZCBmdW5jdGlv
biBpc19hdmFpbGFibGVfZ2VuZXJpYyggJHRlbXBkaXIgKSB7CgkJCgkJCSRyZXN1bHQgPSBmYWxzZTsKCQk
JJHBlbmRpbmdfcmVzdWx0ID0gZmFsc2U7CgkJCSRmb3VuZF96aXAgPSBmYWxzZTsKCQkJCgkJCS8vIFRoaX
MgaXMgYSBzYWZldHkgdmFsdWUgaW4gY2FzZSBleGVjKCkgZmFpbHMgLSBob3BlZnVsbHkgaXQgd2lsbCBub
3QgdXBkYXRlIHRoaXMKCQkJJGV4ZWNfZXhpdF9jb2RlID0gMTI3OwoJCQkKCQkJaWYgKCBmdW5jdGlvbl9l
eGlzdHMoICdleGVjJyApICkgewoJCQkKCQkJCSRjYW5kaWRhdGVfcGF0aHMgPSAkdGhpcy0+Z2V0X2V4ZWN
1dGFibGVfcGF0aHMoKTsKCQkJCQoJCQkJLy8gV2UgYXJlIHNlYXJjaGluZyBmb3IgemlwIHVzaW5nIHRoZS
BsaXN0IG9mIHBvc3NpYmxlIHBhdGhzCgkJCQl3aGlsZSAoICggZmFsc2UgPT0gJGZvdW5kX3ppcCApICYmI
CggIWVtcHR5KCAkY2FuZGlkYXRlX3BhdGhzICkgKSApIHsKCQkJCQoJCQkJCS8vIE1ha2Ugc3VyZSBpdCBp
cyBjbGVhbiBvZiBsZWFkaW5nL3RyYWlsaW5nIHdoaXRlc3BhY2UKCQkJCQkkcGF0aCA9IHRyaW0oIGFycmF
5X3NoaWZ0KCAkY2FuZGlkYXRlX3BhdGhzICkgKTsKCQkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdH
VzKCAnZGV0YWlscycsIF9fKCAnRXhlYyB0ZXN0ICh6aXApIHRyeWluZyBleGVjdXRhYmxlIHBhdGg6Jywna
XQtbDEwbi1iYWNrdXBidWRkeScgKSAuICcgYCcgLiAkcGF0aCAuICdgLicgKTsKCgkJCQkJJHRlc3RfZmls
ZSA9ICR0ZW1wZGlyIC4gJ3RlbXBfdGVzdF8nIC4gdW5pcWlkKCkgLiAnLnppcCc7CgkJCQkJCgkJCQkJJGN
vbW1hbmQgPSAkdGhpcy0+c2xhc2hpZnkoICRwYXRoICkgLiAnemlwJyAuICIgJ3skdGVzdF9maWxlfSciIC
4gIiAnIiAuIF9fRklMRV9fIC4gICInIjsKCQkJCQkKCQkJCQkkY29tbWFuZCA9ICggc2VsZjo6T1NfVFlQR
V9XSU4gPT09ICR0aGlzLT5nZXRfb3NfdHlwZSgpICkgPyBzdHJfcmVwbGFjZSggJ1wnJywgJyInLCAkY29t
bWFuZCApIDogJGNvbW1hbmQ7CgkJCQkJCQkJCQoJCQkJCUBleGVjKCAkY29tbWFuZCwgJGV4ZWNfb3V0cHV
0LCAkZXhlY19leGl0X2NvZGUgKTsKCQkJCgkJCQkJLy8gTXVzdCBoYXZlIGJvdGggYSBmaWxlIGFuZCBhIH
N1Y2Nlc3MgZXhpdCBjb2RlIHRvIGNvbnNpZGVyIHRoaXMgc3VjY2Vzc2Z1bAoJCQkJCWlmICggQGZpbGVfZ
Xhpc3RzKCAkdGVzdF9maWxlICkgJiYgKCAwID09PSAkZXhlY19leGl0X2NvZGUgKSApIHsKCQkJCgkJCQkJ
CS8vIFNldCB0aGUgcGFyYW1ldGVyIHRvIGJlIHJlbWVtYmVyZWQgKG5vdGU6IHBhdGggd2l0aG91dCB0cmF
pbGluZyBzbGFzaCkKCQkJCQkJJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAnemlwJyBdWy
AncGF0aCcgXSA9ICRwYXRoOwoJCQkJCQkKCQkJCQkJLy8gUGxhdGZvcm0gaW5kZXBlbmRlbnQgY2FwYWJpb
Gl0aWVzCgkJCQkJCSR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdhdHRyJyBdWyAnaXNfemlwcGVyJyBdID0g
dHJ1ZTsKCQkJCQkJJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ2F0dHInIF1bICdpc19hcmNoaXZlcicgXSA
9IHRydWU7CgkJCQkJCQoJCQkJCQkvLyBQbGF0Zm9ybSBzcGVjaWZpYyBjYXBhYmlsaXRpZXMKCQkJCQkJc3
dpdGNoICggJHRoaXMtPmdldF9vc190eXBlKCkgKSB7CgkJCQkJCQljYXNlIHNlbGY6Ok9TX1RZUEVfTklYO
goJCQkJCQkJCSR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdhdHRyJyBdWyAnaXNfY29tbWVudGVyJyBdID0g
dHJ1ZTsKCQkJCQkJCQlicmVhazsKCQkJCQkJCWNhc2Ugc2VsZjo6T1NfVFlQRV9XSU46CgkJCQkJCQkJLy8
gTm9uZSBBcHBsaWNhYmxlCgkJCQkJCQkJYnJlYWs7CgkJCQkJCQlkZWZhdWx0OgoJCQkJCQkJCS8vIFRoZX
JlIGlzIG5vIGRlZmF1bHQKCQkJCQkJfQoJCQkJCQkKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ
2RldGFpbHMnLCBfXygnRXhlYyB0ZXN0ICh6aXApIFBBU1NFRC4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyAp
ICk7CgkJCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCgkJCQkJCS8vIFRPRE86IENvbnNpZGVyIHBhcnNpbmc
gemlwIGZpbGUgdG8gZ2V0IHZlcnNpb24gb2YgemlwIHRoYXQgY3JlYXRlZCBpdC4gVGhpcyBtYXkgc2VlbS
BvZGQKCQkJCQkJLy8gYnV0IHByZS12MyB6aXAgaXQncyBub3QgcG9zc2libGUgdG8gcnVuICJ6aXAgLXYiI
HRocm91Z2ggZXhlYygpIG9yIGVxdWl2YWxlbnQgYXMgaXQgb25seQoJCQkJCQkvLyBwcm92aWRlcyB0aGUg
cmVxdWlyZWQgb3V0cHV0IGlmIGEgdHR5IGlzIGF0dGFjaGVkLCBvdGhlcndpc2UgaXQgY3JlYXRlcyBhIHp
pcCBmaWxlLiBXZQoJCQkJCQkvLyBtaWdodCBjb25zaWRlciBwYXJzaW5nIHRoZSBjcmVhdGVkIHppcCBmaW
xlIGJ1dCBhcyB3ZSBoYXZlIGFscmVhZHkgY3JlYXRlZCBvbmUgaGVyZSB3ZQoJCQkJCQkvLyBtaWdodCBhc
yB3ZWxsIHVzZSBpdAoJCQkJCQkKCQkJCQkJLy8gVGhpcyB3aWxsIGJyZWFrIHVzIG91dCBvZiB0aGUgbG9v
cAoJCQkJCQkkZm91bmRfemlwID0gdHJ1ZTsKCQkJCQkJCgkJCQkJfSBlbHNlIHsKCQkJCQoJCQkJCQkvLyB
EZWFsIHdpdGggdGhlIHBvc3NpYmxlIGZhaWx1cmUgY2F1c2VzCgkJCQkJCWlmICggIUBmaWxlX2V4aXN0cy
ggJHRlc3RfZmlsZSApICkgewoJCQkJCQkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRha
WxzJywgX18oJ0V4ZWMgdGVzdCAoemlwKSBGQUlMRUQ6IFRlc3QgemlwIGZpbGUgbm90IGZvdW5kLicsJ2l0
LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkJCgkJCQkJCX0KCQkJCQkJCgkJCQkJCWlmICggMCAhPT0
gJGV4ZWNfZXhpdF9jb2RlICkgewoJCQkJCQkKCQkJCQkJCSRlcnJvcl9zdHJpbmcgPSAkZXhlY19leGl0X2
NvZGU7CgkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdFeGVjIHRlc3QgK
HppcCkgRkFJTEVEOiBleGVjIEV4aXQgQ29kZTogJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICRlcnJv
cl9zdHJpbmcgKTsKCQkJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQk
KCQkJCQl9CgkJCQkJCgkJCQkJLy8gUmVtb3ZlIHRoZSB0ZXN0IHppcCBmaWxlIGlmIGl0IHdhcyBjcmVhdG
VkCgkJCQkJaWYgKCBAZmlsZV9leGlzdHMoICR0ZXN0X2ZpbGUgKSApIHsKCQkJCQkKCQkJCQkJaWYgKCAhQ
HVubGluayggJHRlc3RfZmlsZSApICkgewoJCQkJCgkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
ZGV0YWlscycsIHNwcmludGYoIF9fKCdFeGVjIHRlc3QgKHppcCkgdW5hYmxlIHRvIGRlbGV0ZSB0ZXN0IGZ
pbGUgKCVzKScsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR0ZXN0X2ZpbGUgKSApOwoJCQkJCQoJCQkJCQ
l9CgkJCQkKCQkJCQl9CgkJCQkJCgkJCQl9CgkJCQkKCQkJCQoJCQkJLy8gSWYgd2UgZGlkbid0IGZpbmQge
mlwIGFueXdoZXJlIChvciBtYXliZSBmb3VuZCBpdCBidXQgaXQgZmFpbGVkKSB0aGVuIGxvZyBpdAoJCQkJ
aWYgKCBmYWxzZSA9PT0gJGZvdW5kX3ppcCApIHsKCQkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHV
zKCAnZGV0YWlscycsIF9fKCdFeGVjIHRlc3QgKHppcCkgRkFJTEVEOiBVbmFibGUgdG8gZmluZCB6aXAgZX
hlY3V0YWJsZSBvbiBhbnkgc3BlY2lmaWVkIHBhdGguJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJC
QkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkKCQkJCX0KCQkJCQoJCQkJLy8gUmVtZW1iZXIgemlwIHJlc3Vs
dCBhbmQgcmVzZXQgZm9yIHVuemlwIHRlc3QKCQkJCSRwZW5kaW5nX3Jlc3VsdCA9ICRyZXN1bHQ7CgkJCQk
kcmVzdWx0ID0gZmFsc2U7CgkJCQkKCQkJCS8vIFNlZSBpZiB3ZSBjYW4gZGV0ZXJtaW5lIHppcCB2ZXJzaW
9uIGFuZCBwb3NzaWJseSBhdmFpbGFibGUgb3B0aW9ucy4gVGhpcyBjYW4gaGVscCB1cwoJCQkJLy8gZGV0Z
XJtaW5lIGhvdyB0byBleGVjdXRlIG9wZXJhdGlvbnMgc3VjaCBhcyBjcmVhdGluZyBhIHppcCBmaWxlCgkJ
CQlpZiAoIHRydWUgPT09ICRmb3VuZF96aXAgKSB7CgkJCQkJCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR
1cyggJ2RldGFpbHMnLCAnQ2hlY2tpbmcgemlwIHZlcnNpb24uLi4nICk7CgoJCQkJCSR0aGlzLT5zZXRfem
lwX3ZlcnNpb24oKTsKCQkJCQkKCQkJCQkkdmVyc2lvbiA9ICR0aGlzLT5nZXRfemlwX3ZlcnNpb24oKTsKC
QkJCQlpZiAoIHRydWUgPT09IGlzX2FycmF5KCAkdmVyc2lvbiApICkgewoJCQkKCQkJCQkJKCAoIDIgPT0g
JHZlcnNpb25bICdtYWpvcicgXSApICYmICggMCA9PSAkdmVyc2lvblsgJ21pbm9yJyBdICkgKSA/ICR2ZXJ
zaW9uWyAnbWlub3InIF0gPSAnWCcgOiB0cnVlIDsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2
RldGFpbHMnLCBzcHJpbnRmKCBfXyggJ0ZvdW5kIHppcCB2ZXJzaW9uOiAlMSRzLiUyJHMnLCAnaXQtbDEwb
i1iYWNrdXBidWRkeScgKSwgJHZlcnNpb25bICdtYWpvcicgXSwgJHZlcnNpb25bICdtaW5vcicgXSApICk7
CgkJCQkKCQkJCQl9IGVsc2UgewoJCQkKCQkJCQkJJHZlcnNpb24gPSBhcnJheSggIm1ham9yIiA9PiAiWCI
sICJtaW5vciIgPT4gIlkiICk7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3
ByaW50ZiggX18oICdGb3VuZCB6aXAgdmVyc2lvbjogJTEkcy4lMiRzJywgJ2l0LWwxMG4tYmFja3VwYnVkZ
HknICksICR2ZXJzaW9uWyAnbWFqb3InIF0sICR2ZXJzaW9uWyAnbWlub3InIF0gKSApOwoKCQkJCQl9CgoJ
CQkJfQoJCQkJCgkJCQkvLyBSZXNldCB0aGUgY2FuZGlkYXRlIHBhdGhzIGZvciBhIGZ1bGwgc2VhcmNoIGZ
vciB1bnppcAoJCQkJJGNhbmRpZGF0ZV9wYXRocyA9ICR0aGlzLT5fZXhlY3V0YWJsZV9wYXRoczsKCQkJCQ
kJICAKCQkJCS8vIFJlc2V0IHRoZSBzYWZldHkgd
mFsdWUgaW4gY2FzZQoJCQkJJGV4ZWNfZXhpdF9jb2RlID0gMTI3OwoJCQkJCgkJCQkvLyBOZXcgc2VhcmNo
CgkJCQkkZm91bmRfemlwID0gZmFsc2U7CgkJCQkKCQkJCS8vIFVzaW5nIGEgdGVzdCBmaWxlCgkJCQkkdGV
zdF9maWxlID0gZGlybmFtZSggX19GSUxFX18gKSAuIHNlbGY6OlpJUF9URVNUX0ZJTEU7CgkJCQkKCQkJCS
8vIEl0IGhhcyB0byBleGlzdCBhbmQgYmUgcmVhZGFibGUgb3RlaHJ3aXNlIHdlIGp1c3QgaGF2ZSB0byBiY
WlsIG9uIHRlc3RpbmcgZm9yIHVuemlwCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycs
IHNwcmludGYoIF9fKCAnRXhlYyB0ZXN0ICh1bnppcCkgY2hlY2tpbmcgdGVzdCBmaWxlIHJlYWRhYmxlOiA
lMSRzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR0ZXN0X2ZpbGUgKSApOwoJCQkJaWYgKCBpc19yZW
FkYWJsZSggJHRlc3RfZmlsZSApICkgewoJCQkJCgkJCQkJLy8gT25seSBwcm9jZWVkIGlmIHRoZSBmaWxlI
Gxvb2tzIGFzIGV4cGVjdGVkCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJp
bnRmKCBfXyggJ0V4ZWMgdGVzdCAodW56aXApIGNoZWNraW5nIHRlc3QgZmlsZSBpbnRhY3Q6ICUxJHMnLCA
naXQtbDEwbi1iYWNrdXBidWRkeScgKSwgc2VsZjo6WklQX1RFU1RfRklMRV9TSUcgKSApOwoJCQkJCWlmIC
ggc2VsZjo6WklQX1RFU1RfRklMRV9TSUcgPT09IG1kNV9maWxlKCAkdGVzdF9maWxlICkgKSB7CgkJCQkKC
QkJCQkJLy8gV2UgYXJlIHNlYXJjaGluZyBmb3IgdW56aXAgdXNpbmcgdGhlIGxpc3Qgb2YgcG9zc2libGUg
cGF0aHMKCQkJCQkJd2hpbGUgKCAoIGZhbHNlID09PSAkZm91bmRfemlwICkgJiYgKCAhZW1wdHkoICRjYW5
kaWRhdGVfcGF0aHMgKSApICkgewoJCQkJCgkJCQkJCQkvLyBNYWtlIHN1cmUgaXQgaXMgY2xlYW4gb2YgbG
VhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlCgkJCQkJCQkkcGF0aCA9IHRyaW0oIGFycmF5X3NoaWZ0KCAkY
2FuZGlkYXRlX3BhdGhzICkgKTsKCQkJCQkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgX18oICdFeGVjIHRlc3QgKHVuemlwKSB0cnlpbmcgZXhlY3V0YWJsZSBwYXRoOicsJ2l0LWwxMG4
tYmFja3VwYnVkZHknICkgLiAnIGAnIC4gJHBhdGggLiAnYC4nICk7CgoJCQkJCQkJJGNvbW1hbmQgPSAkdG
hpcy0+c2xhc2hpZnkoICRwYXRoICkgLiAndW56aXAgLXF0JyAuICIgJ3skdGVzdF9maWxlfSciIC4gIiAnd
GVzdC50eHQnIjsKCQkJCQkJCQkJCgkJCQkJCQkkY29tbWFuZCA9ICggc2VsZjo6T1NfVFlQRV9XSU4gPT09
ICR0aGlzLT5nZXRfb3NfdHlwZSgpICkgPyBzdHJfcmVwbGFjZSggJ1wnJywgJyInLCAkY29tbWFuZCApIDo
gJGNvbW1hbmQ7CgkJCQkJCgkJCQkJCQlAZXhlYyggJGNvbW1hbmQsICRleGVjX291dHB1dCwgJGV4ZWNfZX
hpdF9jb2RlICk7CgkJCQkJCgkJCQkJCQlpZiAoICRleGVjX2V4aXRfY29kZSA9PT0gMCApIHsKCQkJCQkJC
QoJCQkJCQkJCS8vIFNldCB0aGUgcGFyYW1ldGVyIHRvIGJlIHJlbWVtYmVyZWQgKG5vdGU6IHBhdGggd2l0
aG91dCB0cmFpbGluZyBzbGFzaCkKCQkJCQkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAncGFyYW0nIF1
bICd1bnppcCcgXVsgJ3BhdGgnIF0gPSAkcGF0aDsKCQkJCQkJCgkJCQkJCQkJLy8gUGxhdGZvcm0gaW5kZX
BlbmRlbnQgY2FwYWJpbGl0aWVzCgkJCQkJCQkJJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ2F0dHInIF1bI
Cdpc191bnppcHBlcicgXSA9IHRydWU7CgkJCQkJCQkJJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ2F0dHIn
IF1bICdpc19jaGVja2VyJyBdID0gdHJ1ZTsKCQkJCQkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR
0cicgXVsgJ2lzX3VuYXJjaGl2ZXInIF0gPSB0cnVlOwoJCQkJCQkJCSR0aGlzLT5fbWV0aG9kX2RldGFpbH
NbICdhdHRyJyBdWyAnaXNfbGlzdGVyJyBdID0gdHJ1ZTsKCQkJCQkJCQkkdGhpcy0+X21ldGhvZF9kZXRha
WxzWyAnYXR0cicgXVsgJ2lzX2V4dHJhY3RvcicgXSA9IHRydWU7CgkJCQkJCQoJCQkJCQkJCS8vIFBsYXRm
b3JtIHNwZWNpZmljIGNhcGFiaWxpdGllcwoJCQkJCQkJCXN3aXRjaCAoICR0aGlzLT5nZXRfb3NfdHlwZSg
pICkgewoJCQkJCQkJCQljYXNlIHNlbGY6Ok9TX1RZUEVfTklYOgoJCQkJCQkJCQoJCQkJCQkJCQkJLy8gVG
hpcyBpcyBzcGVjaWFsIC0gd2UgbXVzdCBoYXZlIHppcCBhbHNvIHNvIHRoaXMgd2lsbCBvbmx5IGVuZCB1c
CB0cnVlIGlmIHdlIHByZXZpb3VzbHkgZm91bmQgemlwCgkJCQkJCQkJCQkvLyBhbmQgc3BlY3VsYXRpdmVs
eSBzZXQgdGhpcyBhdHRyaWJ1dGUgdG8gYmUgdHJ1ZS4gQWxzbyB3ZSBuZWVkIGZvciBleGVjX2RpciB0byB
ub3QgYmUgYWN0aXZlIC0gaWYKCQkJCQkJCQkJCS8vIGl0IGlzIHRoZSBjb21tYW5kIGxpbmUgaXMgZXNjYX
BlZCBhbmQgdGhhdCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcGlwaW5nIHdlIGhhdmUgdG8gdXNlIHdoZ
W4KCQkJCQkJCQkJCS8vIHNldHRpbmcgYSBjb21tZW50LiBBbHNvIHdlIG5lZWQgdGhlIGVzY2FwZXNoZWxs
YXJnIGZ1bmN0aW9uIHRvIGJlIGF2YWlsYWJsZSBhbmQgdGhhdCB3YXMgY2hlY2tlZAoJCQkJCQkJCQkJLy8
gd2hlbiBkZXBlbmRlbmNpZXMgd2VyZSBjaGVja2VkCgkJCQkJCQkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaW
xzWyAnYXR0cicgXVsgJ2lzX2NvbW1lbnRlcicgXSA9ICR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdhdHRyJ
yBdWyAnaXNfY29tbWVudGVyJyBdICYmIHRydWUgJiYgISR0aGlzLT5nZXRfZXhlY19kaXJfZmxhZygpICYm
IHNlbGY6OiRfYWxsb3dfaXNfY29tbWVudGVyOwoJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJCWNhc2Ugc2V
sZjo6T1NfVFlQRV9XSU46CgkJCQkJCQkJCQkvLyBOb25lIEFwcGxpY2FibGUKCQkJCQkJCQkJCWJyZWFrOw
oJCQkJCQkJCQlkZWZhdWx0OgoJCQkJCQkJCQkJLy8gVGhlcmUgaXMgbm8gZGVmYXVsdAoJCQkJCQkJCX0KC
QkJCQkJCgkJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnRXhlYyB0ZXN0
ICh1bnppcCkgUEFTU0VELicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkJCQkkcmVzdWx0ID0
gdHJ1ZTsKCQkJCQoJCQkJCQkJCS8vIFRoaXMgd2lsbCBicmVhayB1cyBvdXQgb2YgdGhlIGxvb3AKCQkJCQ
kJCQkkZm91bmRfemlwID0gdHJ1ZTsKCQkJCQkJCgkJCQkJCQl9IGVsc2UgewoJCQkJCgkJCQkJCQkJJGVyc
m9yX3N0cmluZyA9ICRleGVjX2V4aXRfY29kZTsKCQkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
ZGV0YWlscycsIF9fKCdFeGVjIHRlc3QgKHVuemlwKSBGQUlMRUQ6IFRlc3QgdW56aXAgZmlsZSB0ZXN0IGZ
haWxlZC4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YX
R1cyggJ2RldGFpbHMnLCBfXygnRXhlYyB0ZXN0ICh1bnppcCkgRkFJTEVEOiBleGVjIEV4aXQgQ29kZTogJ
ywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICRlcnJvcl9zdHJpbmcgKTsKCQkJCQkJCQkkcmVzdWx0ID0g
ZmFsc2U7CgkJCQkKCQkJCQkJCX0KCQkJCQkKCQkJCQkJfQoJCQkJCQoJCQkJCX0gZWxzZSB7CgkJCQkKCQk
JCQkJLy8gVGhlIHRlc3QgZmlsZSBsb29rZWQgY29ycnVwdGVkIHNvIHdhcm4gYW5kIGJhaWwgb3V0CgkJCQ
kJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ0V4ZWMgdGVzdCAod
W56aXApIEZBSUxFRDogVGVzdCBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdGVkOiAlMSRzJywnaXQtbDEw
bi1iYWNrdXBidWRkeScgKSwgbWQ1X2ZpbGUoICR0ZXN0X2ZpbGUgKSApICk7CgoJCQkJCX0KCQkJCQoJCQk
JfSBlbHNlIHsKCQkJCQoJCQkJCS8vIFRoZSB0ZXN0IGZpbGUgZG9lc24ndCBzZWVtIHRvIGV4aXN0IG9yIG
JlIHJlYWRhYmxlIHNvIHdhcm4gYW5kIGJhaWwgb3V0CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ
2RldGFpbHMnLCBfXygnRXhlYyB0ZXN0ICh1bnppcCkgRkFJTEVEOiBUZXN0IGZpbGUgYXBwZWFycyB0byBl
aXRoZXIgbm90IGV4aXN0IG9yIG5vdCBiZSByZWFkYWJsZS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk
7CgkJCQkKCQkJCX0KCQkJCgkJCQkvLyBJZiB3ZSBkaWRuJ3QgZmluZCB1bnppcCBhbnl3aGVyZSAob3IgbW
F5YmUgZm91bmQgaXQgYnV0IGl0IGZhaWxlZCkgdGhlbiBsb2cgaXQKCQkJCWlmICggZmFsc2UgPT09ICRmb
3VuZF96aXAgKSB7CgkJCQkJCgkJCQkJLy8gV2Ugc3BlY3VsYXRpdmVseSBzZXQgdGhpcyB0cnVlIHdoZW4g
d2UgZm91bmQgemlwIGJ1dCB3ZSBuZWVkIGJvdGggemlwIGFuZCB1bnppcCBzbyBzZXQgaWYgZmFsc2UKCQk
JCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXVsgJ2lzX2NvbW1lbnRlcicgXSA9IGZhbHNlOw
oKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdFeGVjIHRlc3QgKHVuemlwK
SBGQUlMRUQ6IFVuYWJsZSB0byBmaW5kIHVuemlwIGV4ZWN1dGFibGUgb24gYW55IHNwZWNpZmllZCBwYXRo
LicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkJCgkJCQl
9IGVsc2UgewoJCQkJCgkJCQkJLy8gU2VlIGlmIHdlIGNhbiBkZXRlcm1pbmUgdW56aXAgdmVyc2lvbiBhbm
QgcG9zc2libHkgYXZhaWxhYmxlIG9wdGlvbnMuIFRoaXMgY2FuIGhlbHAgdXMKCQkJCQkvLyBkZXRlcm1pb
mUgaG93IHRvIGV4ZWN1dGUgb3BlcmF0aW9ucyBzdWNoIGFzIHVuemlwcGluZyBhIGZpbGUKCQkJCQkKCQkJ
CQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdDaGVja2luZyB1bnppcCB2ZXJzaW9uLi4
uJyApOwoKCQkJCQkkdGhpcy0+c2V0X3VuemlwX3ZlcnNpb24oKTsKCQkJCQoJCQkJCSR2ZXJzaW9uID0gJH
RoaXMtPmdldF91bnppcF92ZXJzaW9uKCk7CgkJCQkJaWYgKCB0cnVlID09PSBpc19hcnJheSggJHZlcnNpb
24gKSApIHsKCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50Zigg
X18oICdGb3VuZCB1bnppcCB2ZXJzaW9uOiAlMSRzLiUyJHMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSw
gJHZlcnNpb25bICdtYWpvcicgXSwgJHZlcnNpb25bICdtaW5vcicgXSApICk7CgkJCQkKCQkJCQl9IGVsc2
UgewoJCQkKCQkJCQkJJHZlcnNpb24gPSBhcnJheSggIm1ham9yIiA9PiAiWCIsICJtaW5vciIgPT4gIlkiI
Ck7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oICdGb3Vu
ZCB1bnppcCB2ZXJzaW9uOiAlMSRzLiUyJHMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHZlcnNpb25
bICdtYWpvcicgXSwgJHZlcnNpb25bICdtaW5vcicgXSApICk7CgoJCQkJCX0KCgkJCQl9CgkJCQkKCQkJfS
BlbHNlIHsKCQkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdFeGVjIHRlc
3QgKHppcC91bnppcCkgRkFJTEVEOiBPbmUgb3IgbW9yZSByZXF1aXJlZCBmdW5jdGlvbiBkbyBub3QgZXhp
c3QuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCSAgCgkJICA
JfQoJCSAgCQoJCSAgCS8vIElmIHdlIGZvdW5kIGJvdGggemlwIGFuZCB1bnppcCB0aGVuIGNvbXBhcmUgdG
hlIHBhdGhzIGFuZCBpZiB0aGUgc2FtZSB0aGVuIHNldCB0aGUgY29tbW9uIHBhdGgKCQkgIAlpZiAoICRwZ
W5kaW5nX3Jlc3VsdCAmJiAkcmVzdWx0ICkgewoJCSAgCQoJCSAgCQlpZiAoICR0aGlzLT5fbWV0aG9kX2Rl
dGFpbHNbICdwYXJhbScgXVsgJ3ppcCcgXVsgJ3BhdGgnIF0gPT09ICR0aGlzLT5fbWV0aG9kX2RldGFpbHN
bICdwYXJhbScgXVsgJ3VuemlwJyBdWyAncGF0aCcgXSApIHsKCQkgIAkJCgkJICAJCQkkdGhpcy0+X21ldG
hvZF9kZXRhaWxzWyAncGFyYW0nIF1bICdwYXRoJyBdID0gJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3Bhc
mFtJyBdWyAnemlwJyBdWyAncGF0aCcgXTsKCQkgIAkJCQoJCSAgCQl9CgkJICAJCQoJCSAgCX0KCQkgIAkK
CQkgIAkvLyBPdXIgcmVzdWx0IHdpbGwgYmUgdHJ1ZSBpZiB3ZSBmb3VuZCBlaXRoZXIgb3IgYm90aCBvZiB
6aXAgYW5kIHVuemlwCgkJICAJLy8gVGhlIG1ldGhvZCBhdHRyaWJ1dGVzIHdpbGwgdGVsbCB3aGljaCBpcy
BhdmFpbGFibGUKCQkgIAkkcmVzdWx0ID0gKCAkcGVuZGluZ19yZXN1bHQgfHwgJHJlc3VsdCApOwoJCSAgC
QoJCSAgCXJldHVybiAkcmVzdWx0OwoJCSAgCQoJCX0KCQkKCQkvKioKCQkgKglhZGRfdmlydHVhbF9maWxl
KCkKCQkgKgkKCQkgKglBIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIGEgdmlydHVhbCBmaWxlIHRvIGJlIGFkZGV
kIHRvIGEgemlwIGFyY2hpdmUKCQkgKgkKCQkgKglUaGUgdmlydHVhbCBmaWxlIGRlc2NyaXB0b3IgaXMgYW
4gYXJyYXkgb2YgZGVzY3JpcHRvciBhcnJheShzKSB0aGF0IHByb3ZpZGUgYSBmaWxlbmFtZQoJCSAqCWZvc
iB0aGUgdmlydHVhbCBmaWxlIHRvIGJlIGFkZGVkIChjYW4gaW5jbHVkZSBwYXRoIHByZWZpeCkgYW5kIGEg
c3RyaW5nIHRoYXQgY29udGFpbnMgdGhlCgkJICoJZmlsZSBjb250ZW50IChjYW4gYmUgZW1wdHkgYnV0IG1
1c3QgYmUgcHJlc2VudCkuIEZvciBleGFtcGxlOgoJCSAqCWFycmF5KCBhcnJheSggJ2ZpbGVuYW1lJyA9Pi
Anc29tZWZpbGUudHh0JywgJ2NvbnRlbnQnID0+ICdBIFRleHQgU3RyaW5nJyApICkKCQkgKglOb3RlIHRoY
XQgdGhlIGFjdHVhbCB6aXAgZmlsZSB0byB3aGljaCB0aGUgZmlsZSBpcyBhZGRlZCBpcyBmb3JtZWQgZnJv
bSB0aGUgZmlsZW5hZW0gZnJvbQoJCSAqCXRoZSAkemlwIHBhcmFtZXRlciBhcHBhZW5kZWQgdG8gdGhlICR
0ZW1wZGlyIGRpcmVjdG9yeSBwYXRoLiBUaGlzIGlzIHNsaWdodGx5IGNsdW5reSBhbmQKCQkgKgltYXkgYm
UgY2hhbmdlZCBhdCBzb21lIGxhdGVyIGRhdGUuCgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJJHppcAkJC
QkJCUZ1bGwgcGF0aCAmIGZpbGVuYW1lIG9mIFpJUCBBcmNoaXZlIGZpbGUgdG8gYWRkIGZpbGUgdG8KCQkg
KglAcGFyYW0JCWFycmF5CSR2aXJ0dWFsX2ZpbGVfZGVzY3JpcHRvcglGdWxsIGRlc2NyaXB0b3Igb2YgZml
sZShzKSB0byBhZGQgdG8gWklQIEFyY2hpdmUgZmlsZQoJCSAqCUBwYXJhbQkJc3RyaW5nCSR0ZW1wZGlyCQ
kJCQlGdWxsIHBhdGggb2YgZGlyZWN0b3J5IGZvciB0ZW1wb3JhcnkgdXNhZ2UKCQkgKglAcmV0dXJuCQlib
29sCQkJCQkJCQlUcnVlIGlmIHRoZSBhZGRpdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNl
CgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gYWRkX3ZpcnR1YWxfZmlsZSggJHppcCwgJHZpcnR1YWx
fZmlsZV9kZXNjcmlwdG9yLCAkdGVtcGRpciApIHsKCQkJCQoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKC
AnZGV0YWlscycsIF9fKCdUaGUgJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICR0aGlzLT5nZXRfbWV0a
G9kX3RhZygpIC4gX18oJyBtZXRob2QgaXMgbm90
IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIGJhY2t1cC4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7Cgk
JCXJldHVybiBmYWxzZTsKCQkKCQl9CgkJCgkJLyoqCgkJICoJY3JlYXRlKCkKCQkgKgkKCQkgKglBIGZ1bm
N0aW9uIHRoYXQgY3JlYXRlcyBhbiBhcmNoaXZlIGZpbGUKCQkgKglBbHdheXMgY2xlYW5zIHVwIGFmdGVyI
Gl0c2VsZgoJCSAqCQoJCSAqCVRoZSAkZXhjbHVkZXMgd2lsbCBiZSBhIGxpc3Qgb3IgcmVsYXRpdmUgcGF0
aCBleGNsdWRlcyBpZiB0aGUgJGxpc3RtYWtlciBvYmplY3QgaXMgTlVMTCBvdGVocndpc2UKCQkgKgl3aWx
sIGJlIGFic29sdXRlIHBhdGggZXhjbHVkZXMgYW5kIHJlbGF0aXZlIHBhdGggZXhjbHVkZXMgY2FuIGJlIG
hhZCBmcm9tIHRoZSAkbGlzdG1ha2VyIG9iamVjdAoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCSR6aXAJC
QlGdWxsIHBhdGggJiBmaWxlbmFtZSBvZiBaSVAgQXJjaGl2ZSBmaWxlIHRvIGNyZWF0ZQoJCSAqCUBwYXJh
bQkJc3RyaW5nCSRkaXIJCQlGdWxsIHBhdGggb2YgZGlyZWN0b3J5IHRvIGFkZCB0byBaSVAgQXJjaGl2ZSB
maWxlCgkJICoJQHBhcmFtZQkJYXJyYXkJJGV4Y2x1ZGVzCQlMaXN0IG9mIGVpdGhlciBhYnNvbHV0ZSBwYX
RoIGV4Y2x1c2lvbnMgb3IgcmVsYXRpdmUgZXhjbHVzaW9ucwoJCSAqCUBwYXJhbQkJc3RyaW5nCSR0ZW1wZ
GlyCQlGdWxsIHBhdGggb2YgZGlyZWN0b3J5IGZvciB0ZW1wb3JhcnkgdXNhZ2UKCQkgKglAcGFyYW0JCW9i
amVjdAkkbGlzdG1ha2VyCQlUaGUgb2JqZWN0IGZyb20gd2hpY2ggd2UgY2FuIGdldCBhbiBpbmNsdXNpb25
zIGxpc3QKCQkgKglAcmV0dXJuCQlib29sCQkJCQlUcnVlIGlmIHRoZSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2
Z1bCwgZmFsc2Ugb3RoZXJ3aXNlCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKCAkemlwL
CAkZGlyLCAkZXhjbHVkZXMsICR0ZW1wZGlyLCAkbGlzdG1ha2VyID0gTlVMTCApIHsKCQkKCQkJJHJlc3Vs
dCA9IGZhbHNlOwoJCQoJCQlzd2l0Y2ggKCAkdGhpcy0+Z2V0X29zX3R5cGUoKSApIHsKCQkJCWNhc2Ugc2V
sZjo6T1NfVFlQRV9OSVg6CgkJCQkJJHJlc3VsdCA9ICR0aGlzLT5jcmVhdGVfZ2VuZXJpYyggJHppcCwgJG
RpciwgJGV4Y2x1ZGVzLCAkdGVtcGRpciwgJGxpc3RtYWtlciApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSBzZ
WxmOjpPU19UWVBFX1dJTjoKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPmNyZWF0ZV9nZW5lcmljKCAkemlwLCAk
ZGlyLCAkZXhjbHVkZXMsICR0ZW1wZGlyLCAkbGlzdG1ha2VyICk7CgkJCQkJYnJlYWs7CgkJCQlkZWZhdWx
0OgoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQoJCX0KCQ
kJCgkJLyoqCgkJICoJY3JlYXRlX2dlbmVyaWMoKQoJCSAqCQoJCSAqCUEgZnVuY3Rpb24gdGhhdCBjcmVhd
GVzIGFuIGFyY2hpdmUgZmlsZQoJCSAqCQoJCSAqCVRoZSAkZXhjbHVkZXMgd2lsbCBiZSBhIGxpc3Qgb3Ig
cmVsYXRpdmUgcGF0aCBleGNsdWRlcyBpZiB0aGUgJGxpc3RtYWtlciBvYmplY3QgaXMgTlVMTCBvdGVocnd
pc2UKCQkgKgl3aWxsIGJlIGFic29sdXRlIHBhdGggZXhjbHVkZXMgYW5kIHJlbGF0aXZlIHBhdGggZXhjbH
VkZXMgY2FuIGJlIGhhZCBmcm9tIHRoZSAkbGlzdG1ha2VyIG9iamVjdAoJCSAqCQoJCSAqCUBwYXJhbQkJc
3RyaW5nCSR6aXAJCQlGdWxsIHBhdGggJiBmaWxlbmFtZSBvZiBaSVAgQXJjaGl2ZSBmaWxlIHRvIGNyZWF0
ZQoJCSAqCUBwYXJhbQkJc3RyaW5nCSRkaXIJCQlGdWxsIHBhdGggb2YgZGlyZWN0b3J5IHRvIGFkZCB0byB
aSVAgQXJjaGl2ZSBmaWxlCgkJICoJQHBhcmFtZQkJYXJyYXkJJGV4Y2x1ZGVzCQlMaXN0IG9mIGVpdGhlci
BhYnNvbHV0ZSBwYXRoIGV4Y2x1c2lvbnMgb3IgcmVsYXRpdmUgZXhjbHVzaW9ucwoJCSAqCUBwYXJhbQkJc
3RyaW5nCSR0ZW1wZGlyCQlbT3B0aW9uYWxdIEZ1bGwgcGF0aCBvZiBkaXJlY3RvcnkgZm9yIHRlbXBvcmFy
eSB1c2FnZQoJCSAqCUBwYXJhbQkJb2JqZWN0CSRsaXN0bWFrZXIJCVRoZSBvYmplY3QgZnJvbSB3aGljaCB
3ZSBjYW4gZ2V0IGFuIGluY2x1c2lvbnMgbGlzdAoJCSAqCUByZXR1cm4JCWJvb2wJCQkJCVRydWUgaWYgdG
hlIGNyZWF0aW9uIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UKCQkgKgoJCSAqLwoJCXByb3RlY
3RlZCBmdW5jdGlvbiBjcmVhdGVfZ2VuZXJpYyggJHppcCwgJGRpciwgJGV4Y2x1ZGVzLCAkdGVtcGRpciwg
JGxpc3RtYWtlciApIHsKCQkKCQkJJGV4aXRjb2RlID0gMDsKCQkJJG91dHB1dCA9IGFycmF5KCk7CgkJCSR
6aXBwYXRoID0gJyc7CgkJCSRjb21tYW5kID0gJyc7CgkJCSR0ZW1wX3ppcCA9ICcnOwoJCQkkZXhjbHVkaW
5nX2FkZGl0aW9uYWwgPSBmYWxzZTsKCQkJJGV4Y2x1ZGVfY291bnQgPSAwOwoJCQkkZXhjbHVzaW9ucyA9I
GFycmF5KCk7CgkJCSRoYXZlX3ppcF9lcnJvcnMgPSBmYWxzZTsKCQkJJHppcF9lcnJvcnNfY291bnQgPSAw
OwoJCQkkemlwX2Vycm9ycyA9IGFycmF5KCk7CgkJCSRoYXZlX3ppcF93YXJuaW5ncyA9IGZhbHNlOwoJCQk
kemlwX3dhcm5pbmdzX2NvdW50ID0gMDsKCQkJJHppcF93YXJuaW5ncyA9IGFycmF5KCk7CgkJCSRoYXZlX3
ppcF9hZGRpdGlvbnMgPSBmYWxzZTsKCQkJJHppcF9hZGRpdGlvbnNfY291bnQgPSAwOwoJCQkkemlwX2FkZ
Gl0aW9ucyA9IGFycmF5KCk7CgkJCSRoYXZlX3ppcF9kZWJ1ZyA9IGZhbHNlOwoJCQkkemlwX2RlYnVnX2Nv
dW50ID0gMDsKCQkJJHppcF9kZWJ1ZyA9IGFycmF5KCk7CgkJCSRoYXZlX3ppcF9vdGhlciA9IGZhbHNlOwo
JCQkkemlwX290aGVyX2NvdW50ID0gMDsKCQkJJHppcF9vdGhlciA9IGFycmF5KCk7CgkJCSR6aXBfdXNpbm
dfbG9nX2ZpbGUgPSBmYWxzZTsKCQkJJGxvZ2ZpbGVfbmFtZSA9ICcnOwoJCQkkemlwX2lnbm9yaW5nX3N5b
WxpbmtzID0gZmFsc2U7CgkJCgkJCS8vIFRoZSBiYXNlZGlyIG11c3QgaGF2ZSBhIHRyYWlsaW5nIGRpcmVj
dG9yeSBzZXBhcmF0b3IKCQkJJGJhc2VkaXIgPSAoIHJ0cmltKCB0cmltKCAkZGlyICksIERJUkVDVE9SWV9
TRVBBUkFUT1IgKSApIC4gRElSRUNUT1JZX1NFUEFSQVRPUjsKCQkJCgkJCWlmICggZW1wdHkoICR0ZW1wZG
lyICkgfHwgIUBmaWxlX2V4aXN0cyggJHRlbXBkaXIgKSApIHsKCQkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c
3RhdHVzKCAnZGV0YWlscycsIF9fKCdUZW1wb3Jhcnkgd29ya2luZyBkaXJlY3RvcnkgbXVzdCBiZSBhdmFp
bGFibGUuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwkJCQkKCQkJCXJldHVybiBmYWxzZTsKCQkJCQo
JCQl9CgkJCQoJCQkvLyBUZWxsIHdoaWNoIHppcCB2ZXJzaW9uIGlzIGJlaW5nIHVzZWQKCQkJJHZlcnNpb2
4gPSAkdGhpcy0+Z2V0X3ppcF92ZXJzaW9uKCk7CgkJCQoJCQlpZiAoIHRydWUgPT09IGlzX2FycmF5KCAkd
mVyc2lvbiApICkgewoJCQkKCQkJCSggKCAyID09ICR2ZXJzaW9uWyAnbWFqb3InIF0gKSAmJiAoIDAgPT0g
JHZlcnNpb25bICdtaW5vcicgXSApICkgPyAkdmVyc2lvblsgJ21pbm9yJyBdID0gJ1gnIDogdHJ1ZSA7Cgk
JCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCAnVXNpbmcgemlwIH
ZlcnNpb246ICUxJHMuJTIkcycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkdmVyc2lvblsgJ21ham9yJ
yBdLCAkdmVyc2lvblsgJ21pbm9yJyBdICkgKTsKCQkJCQoJCQl9IGVsc2UgewoJCQkKCQkJCSR2ZXJzaW9u
ID0gYXJyYXkoICJtYWpvciIgPT4gIlgiLCAibWlub3IiID0+ICJZIiApOwoJCQkJcGJfYmFja3VwYnVkZHk
6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXyggJ1VzaW5nIHppcCB2ZXJzaW9uOiAlMSRzLiUyJH
MnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHZlcnNpb25bICdtYWpvcicgXSwgJHZlcnNpb25bICdta
W5vcicgXSApICk7CgoJCQl9CgkJCQkJCgkJCS8vIEdldCB0aGUgY29tbWFuZCBwYXRoIGZvciB0aGUgemlw
IGNvbW1hbmQgLSBzaG91bGQgcmV0dXJuIGEgdHJpbW1lZCBzdHJpbmcKCQkJJHppcHBhdGggPSAkdGhpcy0
+Z2V0X2NvbW1hbmRfcGF0aCggc2VsZjo6Q09NTUFORF9aSVBfUEFUSCApOwoJCQkKCQkJLy8gRGV0ZXJtaW
5lIGlmIHdlIGFyZSB1c2luZyBhbiBhYnNvbHV0ZSBwYXRoCgkJCWlmICggIWVtcHR5KCAkemlwcGF0aCApI
CkgewoJCQkKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oICdVc2luZyBhYnNv
bHV0ZSB6aXAgcGF0aDogJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICR6aXBwYXRoICk7CgkJCQkKCQk
JfQoKCQkJLy8gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiByZXF1aXJlZAoJCQkkY29tbWFuZCA9ICR0aG
lzLT5zbGFzaGlmeSggJHppcHBhdGggKSAuICd6aXAnOwkKCQkJCgkJCS8vIEFsd2F5cyBncm93IGJlY2F1c
2Ugd2UgYWx3YXlzIGhhdmUgemlwIGFjaGl2ZSB3aXRoIGF0IGxlYXN0IG9uZSBmaWxlIHByZXNlbnQKCQkJ
JGNvbW1hbmQgLj0gJyAtZyc7CgoJCQkvLyBBbHdheXMgZG8gcmVjdXJzaXZlIG9wZXJhdGlvbgoJCQkkY29
tbWFuZCAuPSAnIC1yJzsKCQkJCgkJCS8vIENoZWNrIGlmIHRoZSB2ZXJzaW9uIG9mIHppcCBpbiB1c2Ugc3
VwcG9ydHMgbG9nIGZpbGUgKHdoaWNoIHdpbGwgaGVscCB3aXRoIG1lbW9yeSB1c2FnZSBmb3IgbGFyZ2Ugc
2l0ZXMpCgkJCWlmICggdHJ1ZSA9PT0gJHRoaXMtPmdldF96aXBfc3VwcG9ydHNfbG9nX2ZpbGUoKSApIHsK
CQkJCgkJCQkvLyBDaG9vc2UgdG8gdXNlIGxvZyBmaWxlIHNvIHF1aWV0ZW4gc3Rkb3V0IC0gd2UnbGwgc2V
0IHVwIHRoZSBsb2cgZmlsZSBsYXRlcgoJCQkJJGNvbW1hbmQgLj0gJyAtcSc7CgkJCQkkemlwX3VzaW5nX2
xvZ19maWxlID0gdHJ1ZTsKCQkJCgkJCX0KCQkJCgkJCS8vIENoZWNrIGlmIHdlIG5lZWQgdG8gdHVybiBvZ
mYgY29tcHJlc3Npb24gYnkgc2V0dGluZ3MgKGZhc3RlciBidXQgbGFyZ2VyIGJhY2t1cCkKCQkJaWYgKCB0
cnVlICE9PSAkdGhpcy0+Z2V0X2NvbXByZXNzaW9uKCkgKSB7CgkJCQoJCQkJJGNvbW1hbmQgLj0gJyAtMCc
7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaaXAgYXJjaGl2ZSBjcmVhdG
lvbiBjb21wcmVzc2lvbiBkaXNhYmxlZCBiYXNlZCBvbiBzZXR0aW5ncy4nLCdpdC1sMTBuLWJhY2t1cGJ1Z
GR5JyApICk7CgkJCQkKCQkJfSBlbHNlIHsKCQkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0
YWlscycsIF9fKCdaaXAgYXJjaGl2ZSBjcmVhdGlvbiBjb21wcmVzc2lvbiBlbmFibGVkIGJhc2VkIG9uIHN
ldHRpbmdzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCgkJCX0KCQkJCgkJCS8vIENoZWNrIG
lmIGlnbm9yaW5nIChub3QgZm9sbG93aW5nKSBzeW1saW5rcwoJCQlpZiAoIHRydWUgPT09ICR0aGlzLT5nZ
XRfaWdub3JlX3N5bWxpbmtzKCkgKSB7CgkJCQoJCQkJLy8gTm90IGFsbCBPUyBzdXBwb3J0IHRoaXMgZm9y
IGNvbW1hbmQgbGluZSB6aXAgYnV0IGJlc3QgdG8gaGFuZGxlIGl0IGxhdGUgYW5kIGp1c3QKCQkJCS8vIGl
uZGljYXRlIGhlcmUgaXQgaXMgcmVxdWVzdGVkIGJ1dCBub3Qgc3VwcG9ydGVkIGJ5IE9TCgkJCQlzd2l0Y2
ggKCAkdGhpcy0+Z2V0X29zX3R5cGUoKSApIHsKCQkJCQljYXNlIHNlbGY6Ok9TX1RZUEVfTklYOgoJCQkJC
QkvLyBXYW50IHRvIG5vdCBmb2xsb3cgc3ltbGlua3Mgc28gc2V0IGNvbW1hbmQgb3B0aW9uIGFuZCBzZXQg
ZmxhZyBmb3IgbGF0ZXIgdXNlCgkJCQkJCSRjb21tYW5kIC49ICcgLXknOwoJCQkJCQkkemlwX2lnbm9yaW5
nX3N5bWxpbmtzID0gdHJ1ZTsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXy
gnWmlwIGFyY2hpdmUgY3JlYXRpb24gc3ltYm9saWMgbGlua3Mgd2lsbCBub3QgYmUgZm9sbG93ZWQgYmFzZ
WQgb24gc2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQlicmVhazsKCQkJCQlj
YXNlIHNlbGY6Ok9TX1RZUEVfV0lOOgoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscyc
sIF9fKCdaaXAgYXJjaGl2ZSBjcmVhdGlvbiBzeW1ib2xpYyBsaW5rcyByZXF1ZXN0ZWQgdG8gbm90IGJlIG
ZvbGxvd2VkIGJhc2VkIG9uIHNldHRpbmdzIGJ1dCB0aGlzIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkIG9uI
HRoaXMgb3BlcmF0aW5nIHN5c3RlbS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCWJyZWFr
OwoJCQkJCWRlZmF1bHQ6CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1p
pcCBhcmNoaXZlIGNyZWF0aW9uIHN5bWJvbGljIGxpbmtzIHJlcXVlc3RlZCB0byBub3QgYmUgZm9sbG93ZW
QgYmFzZWQgb24gc2V0dGluZ3MgYnV0IHRoaXMgb3B0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBvc
GVyYXRpbmcgc3lzdGVtLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCX0KCQkJCQoJCQl9IGVs
c2UgewoJCQkKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1ppcCBhcmNoaXZ
lIGNyZWF0aW9uIHN5bWJvbGljIGxpbmtzIHdpbGwgYmUgZm9sbG93ZWQgYmFzZWQgb24gc2V0dGluZ3MuJy
wnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoKCQkJfQoJCQkKCQkJLy8gQ2hlY2sgaWYgd2UgYXJlIGlnb
m9yaW5nIHdhcm5pbmdzIC0gbWVhbmluZyBjYW4gc3RpbGwgZ2V0IGEgYmFja3VwIGV2ZW4KCQkJLy8gaWYs
IGUuZy4sIHNvbWUgZmlsZXMgY2Fubm90IGJlIHJlYWQKCQkJaWYgKCB0cnVlID09PSAkdGhpcy0+Z2V0X2l
nbm9yZV93YXJuaW5ncygpICkgewoJCQkKCQkJCS8vIE5vdGU6IHdhcm5pbmdzIGFyZSBiZWluZyBpZ25vcm
VkIGJ1dCB3aWxsIHN0aWxsIGJlIGdhdGhlcmVkIGFuZCBsb2dnZWQKCQkJCXBiX2JhY2t1cGJ1ZGR5Ojpzd
GF0dXMoICdkZXRhaWxzJywgX18oJ1ppcCBhcmNoaXZlIGNyZWF0aW9uIGFjdGlvbmFibGUgd2FybmluZ3Mg
d2lsbCBiZSBpZ25vcmVkIGJhc2VkIG9uIHNldHRpbmdzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTs
KCQkJCQoJCQl9IGVsc2UgewoJCQkKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX1
8oJ1ppcCBhcmNoaXZlIGNyZWF0aW9uIGFjdGlvbmFibGUgd2FybmluZ3Mgd2lsbCBub3QgYmUgaWdub3JlZ
CBiYXNlZCBvbiBzZXR0aW5ncy4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgoJCQl9CgkJCQoJCQkv
LyBEZWxldGUgYW55IGV4aXN0aW5nIHppcCBmaWxlIG9mIHNhbWUgbmFtZSAtIHJlYWxseSB0aGlzIHNob3V
sZCBuZXZlciBoYXBwZW4KCQkJaWYgKCBAZmlsZV9leGlzdHMoICR6aXAgKSApIHsKCgkJCQlwYl9iYWNrdX
BidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdFeGlzdGluZyBaSVAgQXJjaGl2ZSBmaWxlIHdpbGwgY
mUgcmVwbGFjZWQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJQHVubGluayggJHppcCApOwoK
CQkJfQoJCQkKCQkJLy8gTm93IHdlJ2xsIHNldCB
1cCB0aGUgbG9nZ2luZyB0byBmaWxlIGlmIHJlcXVpcmVkIC0gdXNlIGZ1bGwgbG9nZ2luZwoJCQlpZiAoIH
RydWUgPT09ICR6aXBfdXNpbmdfbG9nX2ZpbGUgKSB7CgkJCQoJCQkJJGxvZ2ZpbGVfbmFtZSA9ICR0ZW1wZ
GlyIC4gc2VsZjo6WklQX0xPR19GSUxFX05BTUU7CgkJCQkkY29tbWFuZCAuPSAiIC1sZiAneyRsb2dmaWxl
X25hbWV9JyAtbGkiOwoJCQkKCQkJfQoJCQkJCQkKCQkJLy8gU2V0IHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8
gc3RvcmUgWklQIHdoaWxlIGl0J3MgYmVpbmcgZ2VuZXJhdGVkLgkJCQoJCQkkY29tbWFuZCAuPSAiIC1iIC
d7JHRlbXBkaXJ9JyI7CgoJCQkvLyBBbHdheXMgY3JlYXRlIHRoZSB6aXAgYXJjaGl2ZSBpbiB0aGUgdGVtc
G9yYXJ5IGxvY2F0aW9uIGFuZCBpZiBpcyBidWlsdCBzdWNjZXNzZnVsbHkKCQkJLy8gd2l0aCBubyBlcnJv
cnMgb3Igd2FybmluZ3MgKG9yIHdpdGggd2FybmluZ3MgYnV0IGNvbmZpZ3VyZWQgdG8gaWdub3JlIHRoZXN
lKSB0aGVuIHdlCgkJCS8vIG1vdmUgaXR0byB0aGUgYWN0dWFsIGxvY2FsIGFyY2hpdmUgc3RvcmFlZyBkaX
JlY3RvcnkuIE5vdGUgdGhhdCB3ZSB1c2VkIHRvIGJ1aWxkIGluCgkJCS8vIHRoZSBmaW5hbCBsb2NhdGlvb
iBpZiB3YXJuaW5ncyB3ZXJlIGJlaW5nIGlnbm9yZWQgYnV0IHRoaXMgcmVhbGx5IGhhZCBsaXR0bGUgYmVu
ZWZpdAoJCQkvLyBzbyBiZXR0ZXIgdG8gbWFrZSBhbGwgbWV0aG9kcyBiZWhhdmUgaW4gdGVoIHNhbWUgd2F
5LgoJCQkkdGVtcF96aXAgPSAkdGVtcGRpciAuIGJhc2VuYW1lKCAkemlwICk7CQkJCQoKCQkJJGNvbW1hbm
QgLj0gIiAneyR0ZW1wX3ppcH0nIC4iOwoJCQkKCQkJLy8gTm93IHdvcmsgb3V0IGV4Y2x1c2lvbnMgZGVwZ
W5kZW50IG9uIHdoYXQgd2UgaGF2ZSBiZWVuIGdpdmVuCgkJCWlmICggaXNfb2JqZWN0KCAkbGlzdG1ha2Vy
ICkgJiYgKCBkZWZpbmVkKCAnVVNFX0VYUEVSSU1FTlRBTF9aSVBCVUREWV9JTkNMVVNJT04nICkgJiYgKCB
0cnVlID09PSBVU0VfRVhQRVJJTUVOVEFMX1pJUEJVRERZX0lOQ0xVU0lPTiApICkgKSB7CgkJCQoJCQkJLy
8gV2UncmUgZG9pbmcgYW4gaW5jbHVzaW9uIG9wZXJhdGlvbiwgYnV0IGZpcnN0IHdlJ2xsIGp1c3Qgc2hvd
yB0aGUgZXhjbHVzaW9zbgoJCQkJCgkJCQkvLyBGb3IgemlwIHdlIG5lZWQgcmVsYXRpdmUgcmF0aGVyIHRo
YW4gYWJzb2x1dGUgZXhjbHVzaW9uIHNwYXRocwoJCQkJJGV4Y2x1c2lvbnMgPSAkbGlzdG1ha2VyLT5nZXR
fcmVsYXRpdmVfZXhjbHVkZXMoICRiYXNlZGlyICk7CgkJCQkKCQkJCWlmICggY291bnQoICRleGNsdXNpb2
5zICkgPiAwICkgewoJCQkJCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnQ
2FsY3VsYXRpbmcgZGlyZWN0b3JpZXMgdG8gZXhjbHVkZSBmcm9tIGJhY2t1cC4nLCdpdC1sMTBuLWJhY2t1
cGJ1ZGR5JyApICk7CgkJCQkJCgkJCQkJJGV4Y2x1ZGluZ19hZGRpdGlvbmFsID0gZmFsc2U7CgkJCQkJJGV
4Y2x1ZGVfY291bnQgPSAwOwoJCQkJCWZvcmVhY2ggKCAkZXhjbHVzaW9ucyBhcyAkZXhjbHVkZSApIHsKCQ
kJCQkKCQkJCQkJaWYgKCAhc3Ryc3RyKCAkZXhjbHVkZSwgJ2JhY2t1cGJ1ZGR5X2JhY2t1cHMnICkgKSB7I
C8vIFNldCB2YXJpYWJsZSB0byBzaG93IHdlIGFyZSBleGNsdWRpbmcgYWRkaXRpb25hbCBkaXJlY3Rvcmll
cyBiZXNpZGVzIGJhY2t1cCBkaXIuCgkKCQkJCQkJCSRleGNsdWRpbmdfYWRkaXRpb25hbCA9IHRydWU7Cgk
JCQkJCQkJCgkJCQkJCX0KCQkJCQkJCQoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscy
csIF9fKCdFeGNsdWRpbmcnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzogJyAuICRleGNsdWRlICk7C
gkJCQkJCQkJCQkJCQkKCQkJCQkJJGV4Y2x1ZGVfY291bnQrKzsKCQkJCQkJCQoJCQkJCX0KCQkJCQkJCQkJ
CQoJCQkJfQoJCQkJCgkJCQkvLyBHZXQgdGhlIGxpc3Qgb2YgaW5jbHVzaW9ucyB0byBwcm9jZXNzCgkJCQk
kaW5jbHVzaW9ucyA9ICRsaXN0bWFrZXItPmdldF90ZXJtaW5hbHMoKTsKCQkJCQoJCQkJLy8gRm9yIGVhY2
ggZGlyZWN0b3J5IHdlIG5lZWQgdG8gcHV0IHRoZSAid2lsZGNhcmQiIG9uIHRoZSBlbmQKCQkJCWZvcmVhY
2ggKCAkaW5jbHVzaW9ucyBhcyAmJGluY2x1c2lvbiApIHsKCQkJCQoJCQkJCWlmICggaXNfZGlyKCAkaW5j
bHVzaW9uICkgKSB7CgkJCQkJCgkJCQkJCSRpbmNsdXNpb24gLj0gRElSRUNUT1JZX1NFUEFSQVRPUiAuICI
qIjsKCQkJCQl9CgkJCQkKCQkJCQkvLyBSZW1vdmUgZGlyZWN0b3J5IHBhdGggcHJlZml4IGV4Y2x1ZGluZy
BsZWFkaW5nIHNsYXNoIHRvIG1ha2UgcmVsYXRpdmUgKG5lZWRlZCBmb3IgemlwKQoJCQkJCSRpbmNsdXNpb
24gPSBzdHJfcmVwbGFjZSggcnRyaW0oICRiYXNlZGlyLCBESVJFQ1RPUllfU0VQQVJBVE9SICksICcnLCAk
aW5jbHVzaW9uICk7CgkJCQkJCQkJCQoJCQkJfQoJCQkJCgkJCQkvLyBOb3cgY3JlYXRlIHRoZSBpbmNsdXN
pb25zIGZpbGUgaW4gdGhlIHRlbXBkaXIKCQkJCQoJCQkJLy8gQW5kIHVwZGF0ZSB0aGUgY29tbWFuZCBvcH
Rpb25zCgkJCQkkaWZpbGUgPSAkdGVtcGRpciAuIHNlbGY6OlpJUF9JTkNMVVNJT05TX0ZJTEVfTkFNRTsKC
QkJCWlmICggZmlsZV9leGlzdHMoICRpZmlsZSApICkgewoJCQkJCgkJCQkJQHVubGluayggJGlmaWxlICk7
CgkJCQkKCQkJCX0KCQkJCQoJCQkJZmlsZV9wdXRfY29udGVudHMoICRpZmlsZSwgaW1wbG9kZSggUEhQX0V
PTCwgJGluY2x1c2lvbnMgKSAuIFBIUF9FT0wgLiBQSFBfRU9MICk7CgkJCQkKCQkJCSRjb21tYW5kIC49IC
IgLWlAIiAuICIneyRpZmlsZX0nIjsKCQkJCgkJCX0gZWxzZSB7CgkJCQoJCQkJLy8gV2UncmUgZG9pbmcgY
W4gZXhjbHVzaW9uIG9wZXJhdGlvbgoJCQkKCQkJCS8vJGNvbW1hbmQgLj0gIi1pICcqJyAiOyAvLyBOb3Qg
bmVlZGVkLiBaaXAgZGVmYXVsdHMgdG8gZG9pbmcgdGhpcy4gUmVtb3ZlZCBKdWx5IDEwLCAyMDEyIGZvciB
2My4wLjQxLgoJCQkJCgkJCQkvLyBTaW5jZSB3ZSBoYWQgbm8gJGxpc3RtYWtlciBvYmplY3Qgb3Igbm90IH
VzaW5nIGl0IGdldCB0aGUgc3RhbmRhcmQgcmVsYXRpdmUgZXhjbHVkZXMgdG8gcHJvY2VzcwoJCQkJJGV4Y
2x1c2lvbnMgPSAkZXhjbHVkZXM7CgkJCQkKCQkJCWlmICggY291bnQoICRleGNsdXNpb25zICkgPiAwICkg
ewoJCQkJCgkJCQkJLy8gSGFuZGxlIGV4Y2x1c2lvbnMgYnkgcGxhY2luZyB0aGVtIGluIGFuIGV4Y2x1c2l
vbiB0ZXh0IGZpbGUuCgkJCQkJJGV4Y2x1c2lvbl9maWxlID0gJHRlbXBkaXIgLiBzZWxmOjpaSVBfRVhDTF
VTSU9OU19GSUxFX05BTUU7CgkJCQkJJHRoaXMtPl9yZW5kZXJfZXhjbHVzaW9uc19maWxlKCAkZXhjbHVza
W9uX2ZpbGUsICRleGNsdXNpb25zLCAkZGlyICk7CgkJCQkJCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1
cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXyggJ1VzaW5nIGV4Y2x1c2lvbiBmaWxlIGAlMSRzYCcsICdpdC1
sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkZXhjbHVzaW9uX2ZpbGUgKSApOwoJCQkJCSRjb21tYW5kIC49ICcgLX
hAJyAuICIneyRleGNsdXNpb25fZmlsZX0nIjsKCQkJCQkJCQkJCQoJCQkJfQoJCQkKCQkJfQoJCQkKCQkJL
y8gSWYgd2UgY2FuJ3QgdXNlIGEgbG9nIGZpbGUgYnV0IGV4ZWNfZGlyIGlzbid0IGluIHVzZSB3ZSBjYW4g
cmVkaXJlY3Qgc3RkZXJyIHRvIHN0ZG91dAoJCQkvLyBJZiBleGVjX2RpciBpcyBpbiB1c2Ugd2UgY2Fubm9
0IHJlZGlyZWN0IGJlY2F1c2Ugb2YgY29tbWFuZCBsaW5lIGVzY2FwaW5nIHNvIGNhbm5vdCBsb2cgZXJyb3
JzL3dhcm5pbmdzCgkJCWlmICggZmFsc2UgPT09ICR6aXBfdXNpbmdfbG9nX2ZpbGUgKSB7CgkJCQoJCQkJa
WYgKCBmYWxzZSA9PT0gJHRoaXMtPmdldF9leGVjX2Rpcl9mbGFnKCkgKSB7CgkJCQoJCQkJCSRjb21tYW5k
IC49ICcgMj4mMSc7CgkJCQkKCQkJCX0gZWxzZSB7CgkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHV
zKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCAnWmlwIEVycm9ycy9XYXJuaW5ncyBjYW5ub3Qgbm90IGJlIG
xvZ2dlZCB3aXRoIHRoaXMgdmVyc2lvbiBvZiB6aXAgYW5kIGV4ZWNfZGlyIGFjdGl2ZScsICdpdC1sMTBuL
WJhY2t1cGJ1ZGR5JyApLCB0cnVlICkgKTsKCQkJCQoJCQkJfQoJCQkJCgkJCX0KCQkJCgkJCS8vIFJlbWVt
YmVyIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBhbmQgY2hhbmdlIHRvIHRoZSBkaXJlY3RvcnkgYmVpbmcgYWR
kZWQgc28gdGhhdCAiLiIgaXMgdmFsaWQgaW4gY29tbWFuZAoJCQkkd29ya2luZ19kaXIgPSBnZXRjd2QoKT
sKCQkJY2hkaXIoICRkaXIgKTsKCQkJCgkJCSRjb21tYW5kID0gKCBzZWxmOjpPU19UWVBFX1dJTiA9PT0gJ
HRoaXMtPmdldF9vc190eXBlKCkgKSA/IHN0cl9yZXBsYWNlKCAnXCcnLCAnIicsICRjb21tYW5kICkgOiAk
Y29tbWFuZDsKCQkJCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJHRoaXMtPmdldF9
tZXRob2RfdGFnKCkgLiBfXygnIGNvbW1hbmQnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzogJyAuIC
Rjb21tYW5kICk7CgkJCUBleGVjKCAkY29tbWFuZCwgJG91dHB1dCwgJGV4aXRjb2RlICk7CgkJCQkJCQoJC
QkvLyBTZXQgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBiYWNrIHRvIHdoZXJlIHdlIHdlcmUKCQkJY2hk
aXIoICR3b3JraW5nX2RpciApOwoJCQkKCQkJLy8gQ29udmVuaWVuY2UgZm9yIGhhbmRsaW5nIGRpZmZlcmV
udCBzY2FuYXJpb3MKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkKCQkJLy8gSWYgd2UgdXNlZCBhIGxvZyBmaW
xlIHRoZW4gcHJvY2VzcyB0aGUgbG9nIGZpbGUgLSBlbHNlIHByb2Nlc3Mgb3V0cHV0CgkJCS8vIEFsd2F5c
yBzY2FuIHRoZSBvdXRwdXQvbG9nZmlsZSBmb3Igd2FybmluZ3MsIGV0Yy4gYW5kIHNob3cgd2FybmluZ3Mg
ZXZlbiBpZiB1c2VyIGhhcyBjaG9zZW4gdG8gaWdub3JlIHRoZW0KCQkJaWYgKCB0cnVlID09PSAkemlwX3V
zaW5nX2xvZ19maWxlICkgewoJCQkKCQkJCXRyeSB7CgkJCQkKCQkJCQkkbG9nZmlsZSA9IG5ldyBTcGxGaW
xlT2JqZWN0KCAkbG9nZmlsZV9uYW1lLCAicmIiICk7CgkJCQkJCgkJCQkJd2hpbGUoICEkbG9nZmlsZS0+Z
W9mKCkgKSB7CgkJCQkJCgkJCQkJCSRsaW5lID0gJGxvZ2ZpbGUtPmN1cnJlbnQoKTsKCQkJCQkJJGlkID0g
JGxvZ2ZpbGUtPmtleSgpOyAvLyBVc2UgdGhlIGxpbmUgbnVtYmVyIGFzIHVuaXF1ZSBrZXkgZm9yIGxhdGV
yIHNvcnRpbmcKCQkJCQkJJGxvZ2ZpbGUtPm5leHQoKTsKCQkJCQkJCgkJCQkJCWlmICggcHJlZ19tYXRjaC
ggJy9eXHMqKHppcCB3YXJuaW5nOikvaScsICRsaW5lICkgKSB7CgkJCQkJCQoJCQkJCQkJLy8gTG9va2luZ
yBmb3Igc3BlY2lmaWMgdHlwZXMgb2Ygd2FybmluZyAtIGluIHBhcnRpY3VsYXIgd2FudCB0aGUgd2Fybmlu
ZyB0aGF0CgkJCQkJCQkvLyBpbmRpY2F0ZXMgYSBmaWxlIGNvdWxkbid0IGJlIHJlYWQgYXMgd2Ugd2FudCB
0byB0cmVhdCB0aGF0IGFzIGEgInNraXBwZWQiCgkJCQkJCQkvLyB3YXJuaW5nIHRoYXQgaW5kaWNhdGVzIH
RoYXQgemlwIGZsYWdnZWQgdGhpcyBhcyBhIHBvdGVudGlhbCBwcm9ibGVtIGJ1dAoJCQkJCQkJLy8gY3JlY
XRlZCB0aGUgemlwIGZpbGUgYW55d2F5IC0gYnV0IGl0IHdvdWxkIGhhdmUgZ2VuZXJhdGVkIHRoZSBub24t
emVybyBleGl0CgkJCQkJCQkvLyBjb2RlIG9mIDE4IGFuZCB3ZSBrZXkgb2ZmIHRoYXQgbGF0ZXIuIEFsbCB
vdGhlciB3YXJuaW5ncyBhcmUgbm90IGNvbnNpZGVyZWQKCQkJCQkJCS8vIHJlYXNvbnMgdG8gcmV0dXJuIG
Egbm9uLXplcm8gZXhpdCBjb2RlIHdoaWxzdCBzdGlsbCBjcmVhdGluZyBhIHppcCBmaWxlIHNvCgkJCQkJC
QkvLyB3ZSdsbCBmb2xsb3cgdGhlIGxlYWQgb24gdGhhdCBhbmQgbm90IGhhdmUgb3RoZXIgd2FybmluZyB0
eXBlcyBoYWx0IHRoZSBiYWNrdXAuCgkJCQkJCQkvLyBTbyB3ZSdsbCB0cnkgYW5kIGxvb2sgZm9yIGEgd2F
ybmluZyBvdXRwdXQgdGhhdCBsb29rcyBsaWtlIGl0IGlzIGZpbGUgcmVsYXRlZC4uLgoJCQkJCQkJaWYgKC
BwcmVnX21hdGNoKCAnL15ccyooemlwIHdhcm5pbmc6KVxzKihbXjpdKjopXHMqKC4qKS9pJywgJGxpbmUsI
CRtYXRjaGVzICkgKSB7CgkJCQkJCQkKCQkJCQkJCQkvLyBNYXRjaGVkIHRvIHdoYXQgbG9va3MgbGlrZSBh
IGZpbGUgcmVsYXRlZCB3YXJuaW5nIHNvIGNoZWNrIHBhcnRpY3VsYXIgY2FzZXMKCQkJCQkJCQlzd2l0Y2g
gKCBzdHJ0b2xvd2VyKCAkbWF0Y2hlc1sgMiBdICkgKSB7CgkJCQkJCQkJCWNhc2UgImNvdWxkIG5vdCBvcG
VuIGZvciByZWFkaW5nOiI6CQkJCQkJCQkJCQoJCQkJCQkJCQkJJHppcF93YXJuaW5nc1sgc2VsZjo6WklQX
1dBUk5JTkdfU0tJUFBFRCBdWyAkaWQgXSA9IHRyaW0oICRsaW5lICk7CgkJCQkJCQkJCQkkemlwX3dhcm5p
bmdzX2NvdW50Kys7CgkJCQkJCQkJCQlicmVhazsKCQkJCQkJCQkJY2FzZSAibmFtZSBub3QgbWF0Y2hlZDo
iOgkJCQkJCQkJCQkKCQkJCQkJCQkJCSR6aXBfb3RoZXJbIHNlbGY6OlpJUF9PVEhFUl9HRU5FUklDIF1bIC
RpZCBdID0gdHJpbSggJGxpbmUgKTsKCQkJCQkJCQkJCSR6aXBfb3RoZXJfY291bnQrKzsKCQkJCQkJCQkJC
WJyZWFrOwoJCQkJCQkJCQlkZWZhdWx0OgoJCQkJCQkJCQkJJHppcF93YXJuaW5nc1sgc2VsZjo6WklQX1dB
Uk5JTkdfR0VORVJJQyBdWyAkaWQgXSA9IHRyaW0oICRsaW5lICk7CgkJCQkJCQkJCQkkemlwX3dhcm5pbmd
zX2NvdW50Kys7CgkJCQkJCQkJfQoJCQkJCQkJCgkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCgkJCQkJCQkJLy
8gRGlkbid0IG1hdGNoIHRvIHdoYXQgd291bGQgbG9vayBsaWtlIGEgZmlsZSByZWxhdGVkIHdhcm5pbmcgc
28gY291bnQgaXQgcmVnYXJkbGVzcwoJCQkJCQkJCSR6aXBfd2FybmluZ3NbIHNlbGY6OlpJUF9XQVJOSU5H
X0dFTkVSSUMgXVsgJGlkIF0gPSB0cmltKCAkbGluZSApOwoJCQkJCQkJCSR6aXBfd2FybmluZ3NfY291bnQ
rKzsKCQkJCQkJCQkKCQkJCQkJCX0KCQkJCQkJCQoJCQkJCQl9IGVsc2VpZiAoIHByZWdfbWF0Y2goICcvXl
xzKih6aXAgZXJyb3I6KS9pJywgJGxpbmUgKSApIHsKCQkJCQkJCgkJCQkJCQkkemlwX2Vycm9yc1sgJGlkI
F0gPSB0cmltKCAkbGluZSApOwoJCQkJCQkJJHppcF9lcnJvcnNfY291bnQrKzsKCQkJCQkJCgkJCQkJCX0g
ZWxzZWlmICggcHJlZ19tYXRjaCggJy9eXHMqKGFkZGluZzopL2knLCAkbGluZSApICkgewoJCQkJCQkKCQk
JCQkJCS8vIEN1cnJlbnRseSBub3QgcHJvY2Vzc2luZyBhZGRpdGlvbnMgZW50cmllZAoJCQkJCQkJLy8kem
lwX2FkZGl0aW9uc1tdID0gdHJpbSggJGxpbmUgKTsKCQkJCQkJCS8vJHppcF9hZGRpdGlvbnNfY291bnQrK
zsKCQkJCQkJCgkJCQkJCX0gZWxzZWlmICggcHJlZ19tYXRjaCggJy9eXHMqKHNkOikvaScsICRsaW5lICkg
KSB7CgkJCQkJCQoJCQkJCQkJJHppcF9kZWJ1Z1sgJGlkIF0gPSB0cmltKCAkbGluZSApOwoJCQkJCQkJJHp
pcF9kZWJ1Z19jb3VudCsrOwoJCQkJCQkKCQkJCQ
kJfSBlbHNlIHsKCQkJCQkJCgkJCQkJCQkvLyBDdXJyZW50bHkgbm90IHByb2Nlc3Npbmcgb3RoZXIgZW50c
mllcwoJCQkJCQkJLy8kemlwX290aGVyW10gPSB0cmltKCAkbGluZSApOwoJCQkJCQkJLy8kemlwX290aGVy
X2NvdW50Kys7CgkJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCQl1bnNldCggJGxvZ2Z
pbGUgKTsKCQkJCQkKCQkJCQlAdW5saW5rKCAkbG9nZmlsZV9uYW1lICk7CgkJCQkJCgkJCQl9IGNhdGNoIC
ggRXhjZXB0aW9uICRlICkgewoJCQkJCgkJCQkJLy8gU29tZXRoaW5nIGZpc2h5IC0gd2Ugc2hvdWxkIGhhd
mUgYmVlbiBhYmxlIHRvIG9wZW4gdGhlIGxvZyBmaWxlLi4uCgkJCQkJJGVycm9yX3N0cmluZyA9ICRlLT5n
ZXRNZXNzYWdlKCk7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCB
fXygnTG9nIGZpbGUgY291bGQgbm90IGJlIG9wZW5lZCAtIGVycm9yIHJlcG9ydGVkOiAlMSRzJywnaXQtbD
Ewbi1iYWNrdXBidWRkeScgKSwgJGVycm9yX3N0cmluZyApICk7CgkJCQkJCgkJCQl9CgoJCQl9IGVsc2Uge
woJCQkKCQkJCS8vIFRPRE86ICRvdXRwdXQgY291bGQgYmUgbGFyZ2Ugc28gaWYgd2UgcGFyc2UgaXQgYWxs
IGludG8gc2VwYXJhdGUgYXJyYXlzIHRoZW4gbWF5IHdhbnQgdG8gc2hpZnQKCQkJCS8vIG91dCBlYWNoIGx
pbmUgYW5kIHRoZW4gZGlzY2FyZCBpdCBhZnRlciBjb3BpZWQgdG8gYW5vdGhlciBhcnJheQoJCQkJJGlkID
0gMDsgLy8gQ3JlYXRlIGEgdW5pcXVlIGtleSAobGlrZSBhIGxpbmUgbnVtYmVyKSBmb3IgbGF0ZXIgc29yd
GluZwoJCQkJZm9yZWFjaCAoICRvdXRwdXQgYXMgJGxpbmUgKSB7CgkJCQkKCQkJCQlpZiAoIHByZWdfbWF0
Y2goICcvXlxzKih6aXAgd2FybmluZzopL2knLCAkbGluZSApICkgewoJCQkJCQoJCQkJCQkvLyBMb29raW5
nIGZvciBzcGVjaWZpYyB0eXBlcyBvZiB3YXJuaW5nIC0gaW4gcGFydGljdWxhciB3YW50IHRoZSB3YXJuaW
5nIHRoYXQKCQkJCQkJLy8gaW5kaWNhdGVzIGEgZmlsZSBjb3VsZG4ndCBiZSByZWFkIGFzIHdlIHdhbnQgd
G8gdHJlYXQgdGhhdCBhcyBhICJza2lwcGVkIgoJCQkJCQkvLyB3YXJuaW5nIHRoYXQgaW5kaWNhdGVzIHRo
YXQgemlwIGZsYWdnZWQgdGhpcyBhcyBhIHBvdGVudGlhbCBwcm9ibGVtIGJ1dAoJCQkJCQkvLyBjcmVhdGV
kIHRoZSB6aXAgZmlsZSBhbnl3YXkgLSBidXQgaXQgd291bGQgaGF2ZSBnZW5lcmF0ZWQgdGhlIG5vbi16ZX
JvIGV4aXQKCQkJCQkJLy8gY29kZSBvZiAxOCBhbmQgd2Uga2V5IG9mZiB0aGF0IGxhdGVyLiBBbGwgb3RoZ
XIgd2FybmluZ3MgYXJlIG5vdCBjb25zaWRlcmVkCgkJCQkJCS8vIHJlYXNvbnMgdG8gcmV0dXJuIGEgbm9u
LXplcm8gZXhpdCBjb2RlIHdoaWxzdCBzdGlsbCBjcmVhdGluZyBhIHppcCBmaWxlIHNvCgkJCQkJCS8vIHd
lJ2xsIGZvbGxvdyB0aGUgbGVhZCBvbiB0aGF0IGFuZCBub3QgaGF2ZSBvdGhlciB3YXJuaW5nIHR5cGVzIG
hhbHQgdGhlIGJhY2t1cC4KCQkJCQkJLy8gU28gd2UnbGwgdHJ5IGFuZCBsb29rIGZvciBhIHdhcm5pbmcgb
3V0cHV0IHRoYXQgbG9va3MgbGlrZSBpdCBpcyBmaWxlIHJlbGF0ZWQuLi4KCQkJCQkJaWYgKCBwcmVnX21h
dGNoKCAnL15ccyooemlwIHdhcm5pbmc6KVxzKihbXjpdKjopXHMqKC4qKS9pJywgJGxpbmUsICRtYXRjaGV
zICkgKSB7CgkJCQkJCQoJCQkJCQkJLy8gTWF0Y2hlZCB0byB3aGF0IGxvb2tzIGxpa2UgYSBmaWxlIHJlbG
F0ZWQgd2FybmluZyBzbyBjaGVjayBwYXJ0aWN1bGFyIGNhc2VzCgkJCQkJCQlzd2l0Y2ggKCBzdHJ0b2xvd
2VyKCAkbWF0Y2hlc1sgMiBdICkgKSB7CgkJCQkJCQkJY2FzZSAiY291bGQgbm90IG9wZW4gZm9yIHJlYWRp
bmc6IjoJCQkJCQkJCQkJCgkJCQkJCQkJCSR6aXBfd2FybmluZ3NbIHNlbGY6OlpJUF9XQVJOSU5HX1NLSVB
QRUQgXVsgJGlkKysgXSA9IHRyaW0oICRsaW5lICk7CgkJCQkJCQkJCSR6aXBfd2FybmluZ3NfY291bnQrKz
sKCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJY2FzZSAibmFtZSBub3QgbWF0Y2hlZDoiOgkJCQkJCQkJCQkKC
QkJCQkJCQkJJHppcF9vdGhlclsgc2VsZjo6WklQX09USEVSX0dFTkVSSUMgXVsgJGlkKysgXSA9IHRyaW0o
ICRsaW5lICk7CgkJCQkJCQkJCSR6aXBfb3RoZXJfY291bnQrKzsKCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQk
JZGVmYXVsdDoKCQkJCQkJCQkJJHppcF93YXJuaW5nc1sgc2VsZjo6WklQX1dBUk5JTkdfR0VORVJJQyBdWy
AkaWQrKyBdID0gdHJpbSggJGxpbmUgKTsKCQkJCQkJCQkJJHppcF93YXJuaW5nc19jb3VudCsrOwoJCQkJC
QkJfQoJCQkJCQkKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCgkJCQkJCQkvLyBEaWRuJ3QgbWF0Y2ggdG8gd2hh
dCB3b3VsZCBsb29rIGxpa2UgYSBmaWxlIHJlbGF0ZWQgd2FybmluZyBzbyBjb3VudCBpdCByZWdhcmRsZXN
zCgkJCQkJCQkkemlwX3dhcm5pbmdzWyBzZWxmOjpaSVBfV0FSTklOR19HRU5FUklDIF1bICRpZCsrIF0gPS
B0cmltKCAkbGluZSApOwoJCQkJCQkJJHppcF93YXJuaW5nc19jb3VudCsrOwoJCQkJCQkJCgkJCQkJCX0KC
QkJCQkJCgkJCQkJfSBlbHNlaWYgKCBwcmVnX21hdGNoKCAnL15ccyooemlwIGVycm9yOikvaScsICRsaW5l
ICkgKSB7CgkJCQkJCgkJCQkJCSR6aXBfZXJyb3JzWyAkaWQrKyBdID0gdHJpbSggJGxpbmUgKTsKCQkJCQk
JJHppcF9lcnJvcnNfY291bnQrKzsKCQkJCQkKCQkJCQl9IGVsc2VpZiAoIHByZWdfbWF0Y2goICcvXlxzKi
hhZGRpbmc6KS9pJywgJGxpbmUgKSApIHsKCQkJCQkKCQkJCQkJLy8gQ3VycmVudGx5IG5vdCBwcm9jZXNza
W5nIGFkZGl0aW9ucyBlbnRyaWVkCgkJCQkJCS8vJHppcF9hZGRpdGlvbnNbXSA9IHRyaW0oICRsaW5lICk7
CgkJCQkJCS8vJHppcF9hZGRpdGlvbnNfY291bnQrKzsKCQkJCQkJJGlkKys7CgkJCQkJCgkJCQkJfSBlbHN
laWYgKCBwcmVnX21hdGNoKCAnL15ccyooc2Q6KS9pJywgJGxpbmUgKSApIHsKCQkJCQkKCQkJCQkJJHppcF
9kZWJ1Z1sgJGlkKysgXSA9IHRyaW0oICRsaW5lICk7CgkJCQkJCSR6aXBfZGVidWdfY291bnQrKzsKCQkJC
QkKCQkJCQl9IGVsc2UgewoJCQkJCQoJCQkJCQkvLyBDdXJyZW50bHkgbm90IHByb2Nlc3Npbmcgb3RoZXIg
ZW50cmllcwoJCQkJCQkvLyR6aXBfb3RoZXJbXSA9IHRyaW0oICRsaW5lICk7CgkJCQkJCS8vJHppcF9vdGh
lcl9jb3VudCsrOwoJCQkJCQkkaWQrKzsKCQkJCQkKCQkJCQl9CgkJCQkJCgkJCQl9CgkKCQkJCS8vIE5vdy
BmcmVlIHVwIHRoZSBtZW1vcnkuLi4KCQkJCXVuc2V0KCAkb3V0cHV0ICk7CgkJCQkKCQkJfQoJCQkKCQkJL
y8gU2V0IGNvbnZlbmllbmNlIGZsYWdzCQkJCgkJCSRoYXZlX3ppcF93YXJuaW5ncyA9ICggMCA8ICR6aXBf
d2FybmluZ3NfY291bnQgKTsKCQkJJGhhdmVfemlwX2Vycm9ycyA9ICggMCA8ICR6aXBfZXJyb3JzX2NvdW5
0ICk7CgkJCSRoYXZlX3ppcF9hZGRpdGlvbnMgPSAoIDAgPCAkemlwX2FkZGl0aW9uc19jb3VudCApOwoJCQ
kkaGF2ZV96aXBfZGVidWcgPSAoIDAgPCAkemlwX2RlYnVnX2NvdW50ICk7CgkJCSRoYXZlX3ppcF9vdGhlc
iA9ICggMCA8ICR6aXBfb3RoZXJfY291bnQgKTsKCQkJCgkJCS8vIEFsd2F5cyByZXBvcnQgdGhlIGV4aXQg
Y29kZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgd2UgbWlnaHQgaWdub3JlIGl0IG9yIG5vdAoJCQlwYl9iYWN
rdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaaXAgcHJvY2VzcyBleGl0IGNvZGU6ICcsJ2l0LW
wxMG4tYmFja3VwYnVkZHknICkgLiAkZXhpdGNvZGUgKTsKCQkJCgkJCS8vIEFsd2F5cyByZXBvcnQgdGhlI
G51bWJlciBvZiB3YXJuaW5ncyAtIGV2ZW4ganVzdCB0byBjb25maXJtIHRoYXQgd2UgZGlkbid0IGhhdmUg
YW55CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ1ppcCBwcm9
jZXNzIHJlcG9ydGVkOiAlMSRzIHdhcm5pbmclMiRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF
93YXJuaW5nc19jb3VudCwgKCAoIDEgPT0gJHppcF93YXJuaW5nc19jb3VudCApID8gJycgOiAncycgKSApI
Ck7CgoJCQkvLyBBbHdheXMgcmVwb3J0IHdhcm5pbmdzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB1c2VyIGhh
cyBzZWxlY3RlZCB0byBpZ25vcmUgdGhlbQoJCQlpZiAoIHRydWUgPT09ICRoYXZlX3ppcF93YXJuaW5ncyA
pIHsKCQkJCgkJCQkkdGhpcy0+bG9nX3ppcF9yZXBvcnRzKCAkemlwX3dhcm5pbmdzLCBzZWxmOjokX3dhcm
5pbmdfZGVzYywgIldBUk5JTkciLCBzZWxmOjpNQVhfV0FSTklOR19MSU5FU19UT19TSE9XLCBkaXJuYW1lK
CBkaXJuYW1lKCAkdGVtcGRpciApICkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3BiX2JhY2t1cGJ1ZGR5
JyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBzZWxmOjpaSVBfV0FSTklOR1NfRklMRV9OQU1FICk7CgoJCQl
9CgkJCQoJCQkvLyBBbHdheXMgcmVwb3J0IG90aGVyIHJlcG9ydHMgcmVnYXJkbGVzcwoJCQlpZiAoIHRydW
UgPT09ICRoYXZlX3ppcF9vdGhlciApIHsKCQkJCgkJCQkvLyBPbmx5IHJlcG9ydCBudW1iZXIgb2YgaW5mb
3JtYXRpb25hbHMgaWYgd2UgaGF2ZSBhbnkgYXMgdGhleSBhcmUgbm90IHRoYXQgaW1wb3J0YW50CgkJCQlw
Yl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdaaXAgcHJvY2VzcyByZXB
vcnRlZDogJTEkcyBpbmZvcm1hdGlvbiUyJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX290aG
VyX2NvdW50LCAoICggMSA9PSAkemlwX290aGVyX2NvdW50ICkgPyAnYWwnIDogJ2FscycgKSApICk7CgoJC
QkJJHRoaXMtPmxvZ196aXBfcmVwb3J0cyggJHppcF9vdGhlciwgc2VsZjo6JF9vdGhlcl9kZXNjLCAiSU5G
T1JNQVRJT04iLCBzZWxmOjpNQVhfT1RIRVJfTElORVNfVE9fU0hPVywgZGlybmFtZSggZGlybmFtZSggJHR
lbXBkaXIgKSApIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICdwYl9iYWNrdXBidWRkeScgLiBESVJFQ1RPUl
lfU0VQQVJBVE9SIC4gc2VsZjo6WklQX09USEVSU19GSUxFX05BTUUgKTsKCgkJCX0KCQkJCgkJCS8vIFNlZ
SBpZiB3ZSBjYW4gZmlndXJlIG91dCB3aGF0IGhhcHBlbmVkIC0gbm90ZSB0aGF0ICRleGl0Y29kZSBjb3Vs
ZCBiZSBub24temVybyBmb3IgYWN0aW9uYWJsZSB3YXJuaW5nKHMpIG9yIGVycm9yCgkJCS8vIGlmICggKG5
vIHppcCBmaWxlKSBvciAoZmF0YWwgZXhpdCBjb2RlKSBvciAobm90IGlnbm9yaW5nIHdhcm5hYmxlIGV4aX
QgY29kZSkgKQoJCQkvLyBUT0RPOiBIYW5kbGUgY29uZGl0aW9uIHRlc3Rpbmcgd2l0aCBmdW5jdGlvbiBjY
WxscyBiYXNlZCBvbiBtYXBwaW5nIGV4aXQgY29kZXMgdG8gZXhpdCB0eXBlIChmYXRhbCB2cyBub24tZmF0
YWwpCgkJCWlmICggKCAhIEBmaWxlX2V4aXN0cyggJHRlbXBfemlwICkgKSB8fAoJCQkJICggKCAwICE9ICR
leGl0Y29kZSApICYmICggMTggIT0gJGV4aXRjb2RlICkgKSB8fAoJCQkJICggKCAxOCA9PSAkZXhpdGNvZG
UgKSAmJiAhJHRoaXMtPmdldF9pZ25vcmVfd2FybmluZ3MoKSApICkgewoJCQkKCQkJCS8vIElmIHdlIGhhd
mUgYW55IHppcCBlcnJvcnMgcmVwb3J0ZWQgc2hvdyB0aGVtIHJlZ2FyZGxlc3MKCQkJCWlmICggdHJ1ZSA9
PT0gJGhhdmVfemlwX2Vycm9ycyApIHsKCQkJCQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXR
haWxzJywgc3ByaW50ZiggX18oJ1ppcCBwcm9jZXNzIHJlcG9ydGVkOiAlMSRzIGVycm9yJTIkcycsJ2l0LW
wxMG4tYmFja3VwYnVkZHknICksICR6aXBfZXJyb3JzX2NvdW50LCAoICggMSA9PSAkemlwX2Vycm9yc19jb
3VudCApID8gJycgOiAncycgKSAgKSApOwoJCQkJCQoJCQkJCWZvcmVhY2ggKCAkemlwX2Vycm9ycyBhcyAk
bGluZSApIHsKCQkJCQoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCAnWml
wIHByb2Nlc3MgcmVwb3J0ZWQ6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkbGluZSApOwoJCQkJCg
kJCQkJfQoJCQkJCQoJCQkJfQoKCQkJCS8vIFJlcG9ydCB3aGV0aGVyIG9yIG5vdCB0aGUgemlwIGZpbGUgd
2FzIGNyZWF0ZWQgKHdoZXRoZXIgdGhhdCBiZSBpbiB0aGUgZmluYWwgb3IgdGVtcG9yYXJ5IGxvY2F0aW9u
KQkJCQoJCQkJaWYgKCAhIEBmaWxlX2V4aXN0cyggJHRlbXBfemlwICkgKSB7CgkJCQkKCQkJCQlwYl9iYWN
rdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCAnWmlwIEFyY2hpdmUgZmlsZSBub3QgY3JlYXRlZC
AtIGNoZWNrIHByb2Nlc3MgZXhpdCBjb2RlLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkKC
QkJCX0gZWxzZSB7CgkJCQkJCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygg
J1ppcCBBcmNoaXZlIGZpbGUgY3JlYXRlZCBidXQgd2l0aCBlcnJvcnMvYWN0aW9uYWJsZS13YXJuaW5ncyB
zbyB3aWxsIGJlIGRlbGV0ZWQgLSBjaGVjayBwcm9jZXNzIGV4aXQgY29kZSBhbmQgd2FybmluZ3MuJywnaX
QtbDEwbi1iYWNrdXBidWRkeScgKSApOwoKCQkJCX0KCQkJCQoJCQkJLy8gVGhlIG9wZXJhdGlvbiBoYXMgZ
mFpbGVkIG9uZSB3YXkgb3IgYW5vdGhlci4KCQkJCQoJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCgkJCX0g
ZWxzZSB7CgkJCQoJCQkJLy8gR290IGZpbGUgd2l0aCBubyBlcnJvciBvciB3YXJuaW5ncyBfb3JfIHdpdGg
gd2FybmluZ3MgdGhhdCB0aGUgdXNlciBoYXMgY2hvc2VuIHRvIGlnbm9yZQoJCQkJLy8gRmlsZSBhbHdheX
MgYnVpbHQgaW4gdGVtcG9yYXJ5IGxvY2F0aW9uIHNvIGFsd2F5cyBuZWVkIHRvIG1vdmUgaXQgbGF0ZXIKC
QkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgX18oICdaaXAgQXJjaGl2ZSBmaWxlIHN1
Y2Nlc3NmdWxseSBjcmVhdGVkIHdpdGggbm8gZXJyb3JzIChhbnkgYWN0aW9uYWJsZSB3YXJuaW5ncyBpZ25
vcmVkIGJ5IHVzZXIgc2V0dGluZ3MpLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQoJCQkJJH
RoaXMtPmxvZ19hcmNoaXZlX2ZpbGVfc3RhdHMoICR0ZW1wX3ppcCApOwoKCQkJCSRyZXN1bHQgPSB0cnVlO
woJCQkJCgkJCX0JCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkJCQkJCQkJCQkKCQl9CgkJCgkJLyoq
CgkJICoJZXh0cmFjdCgpCgkJICoKCQkgKglFeHRyYWN0cyB0aGUgY29udGVudHMgb2YgYSB6aXAgZmlsZSB
0byB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSB1c2luZyB0aGUgYmVzdCB1bnppcCBtZXRob2RzIHBvc3NpYm
xlLgoJCSAqCUlmIG5vIHNwZWNpZmljIGl0ZW1zIGdpdmVuIHRvIGV4dHJhY3QgdGhlbiBpdCdzIGEgY29tc
GxldGUgdW56aXAKCQkgKgoJCSAqCUBwYXJhbQlzdHJpbmcJCSR6aXBfZmlsZQkJCQkJRnVsbCBwYXRoICYg
ZmlsZW5hbWUgb2YgWklQIGZpbGUgdG8gZXh0cmFjdCBmcm9tLgoJCSAqCUBwYXJhbQlzdHJpbmcJCSRkZXN
0aW5hdGlvbl9kaXJlY3RvcnkJCUZ1bGwgZGlyZWN0b3J5IHBhdGggdG8gZXh0cmFjdCBpbnRvLgoJCSAqCU
BwYXJhbQlhcnJheQkJJGl0ZW1zCQkJCQkJTWFwc
GluZyBvZiB3aGF0IHRvIGV4dHJhY3QgYW5kIHRvIHdoYXQKCQkgKglAcmV0dXJuCWJvb2wJCQkJCQkJCQl0
cnVlIG9uIHN1Y2Nlc3MgKGFsbCBleHRyYWN0aW9ucyBzdWNjZXNzZnVsKSwgZmFsc2Ugb3RoZXJ3aXNlCgk
JICovCgkJcHVibGljIGZ1bmN0aW9uIGV4dHJhY3QoICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG
9yeSA9ICcnLCAkaXRlbXMgPSBhcnJheSgpICkgewoJCQoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCgkJCXN3a
XRjaCAoICR0aGlzLT5nZXRfb3NfdHlwZSgpICkgewoJCQkJY2FzZSBzZWxmOjpPU19UWVBFX05JWDoKCQkJ
CQlpZiAoIGVtcHR5KCAkaXRlbXMgKSApIHsKCQkJCQkJJHJlc3VsdCA9ICR0aGlzLT5leHRyYWN0X2dlbmV
yaWNfZnVsbCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ICk7CgkJCQkJfSBlbHNlIHsKCQ
kJCQkJJHJlc3VsdCA9ICR0aGlzLT5leHRyYWN0X2dlbmVyaWNfc2VsZWN0ZWQoICR6aXBfZmlsZSwgJGRlc
3RpbmF0aW9uX2RpcmVjdG9yeSwgJGl0ZW1zICk7CQkJCQkKCQkJCQl9CgkJCQkJYnJlYWs7CgkJCQljYXNl
IHNlbGY6Ok9TX1RZUEVfV0lOOgoJCQkJCWlmICggZW1wdHkoICRpdGVtcyApICkgewoJCQkJCQkkcmVzdWx
0ID0gJHRoaXMtPmV4dHJhY3RfZ2VuZXJpY19mdWxsKCAkemlwX2ZpbGUsICRkZXN0aW5hdGlvbl9kaXJlY3
RvcnkgKTsKCQkJCQl9IGVsc2UgewoJCQkJCQkkcmVzdWx0ID0gJHRoaXMtPmV4dHJhY3RfZ2VuZXJpY19zZ
WxlY3RlZCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5LCAkaXRlbXMgKTsJCQkJCQoJCQkJ
CX0KCQkJCQlicmVhazsKCQkJCWRlZmF1bHQ6CgkJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQl9CgkJCQoJCQl
yZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoKCQkvKioKCQkgKglleHRyYWN0X2dlbmVyaWNfZnVsbCgpCgkJIC
oKCQkgKglFeHRyYWN0cyB0aGUgY29udGVudHMgb2YgYSB6aXAgZmlsZSB0byB0aGUgc3BlY2lmaWVkIGRpc
mVjdG9yeSB1c2luZyB0aGUgYmVzdCB1bnppcCBtZXRob2RzIHBvc3NpYmxlLgoJCSAqCgkJICoJQHBhcmFt
CXN0cmluZwkJJHppcF9maWxlCQkJCQlGdWxsIHBhdGggJiBmaWxlbmFtZSBvZiBaSVAgZmlsZSB0byBleHR
yYWN0IGZyb20uCgkJICoJQHBhcmFtCXN0cmluZwkJJGRlc3RpbmF0aW9uX2RpcmVjdG9yeQkJRnVsbCBkaX
JlY3RvcnkgcGF0aCB0byBleHRyYWN0IGludG8uCgkJICoJQHJldHVybglib29sCQkJCQkJCQkJdHJ1ZSBvb
iBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UKCQkgKi8KCQlwcm90ZWN0ZWQgZnVuY3Rpb24gZXh0cmFjdF9n
ZW5lcmljX2Z1bGwoICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSA9ICcnICkgewoJCQoJCQk
kc3VtbWFyeSA9ICcnOwoJCQkkb3V0cHV0ID0gYXJyYXkoKTsKCQkJJGV4aXRfY29kZSA9IDEyNzsKCQkJJG
1hdGNoZXMgPSBhcnJheSgpOwoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCSR6aXBwYXRoID0gJyc7CgkJCSRjb
21tYW5kID0gJyc7CgkJCQoJCQlpZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ2V4ZWMnICkgKSB7CgkJCQoJCQkJ
Ly8gR2V0IHRoZSBjb21tYW5kIHBhdGggZm9yIHRoZSB1bnppcCBjb21tYW5kIC0gc2hvdWxkIHJldHVybiB
hIHRyaW1tZWQgc3RyaW5nCgkJCQkkemlwcGF0aCA9ICR0aGlzLT5nZXRfY29tbWFuZF9wYXRoKCBzZWxmOj
pDT01NQU5EX1VOWklQX1BBVEggKTsKCQkJCQoJCQkJLy8gRGV0ZXJtaW5lIGlmIHdlIGFyZSB1c2luZyBhb
iBhYnNvbHV0ZSBwYXRoCgkJCQlpZiAoICFlbXB0eSAoICR6aXBwYXRoICkgKSB7CgkJCQkJcGJfYmFja3Vw
YnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ1VzaW5nIGFic29sdXRlIHVuemlwIHBhdGg6ICcsJ2l
0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkemlwcGF0aCApOwoJCQkJfQoJCQkJCgkJCQkvLyBBZGQgdGhlIH
RyYWlsaW5nIHNsYXNoIGlmIHJlcXVpcmVkCgkJCQkkY29tbWFuZCA9ICR0aGlzLT5zbGFzaGlmeSggJHppc
HBhdGggKSAuICd1bnppcCc7CgkKCQkJCS8vIFdlJ2xsIHRyeSBhbmQgZXh0cmFjdCBmcm9tIHRoZSBiYWNr
dXAgZmlsZSB0byB0aGUgZ2l2ZW4gZGlyZWN0b3J5LCB2ZXJ5IHF1aWV0bHkgd2l0aCBvdmVyd3JpdGUKCQk
JCS8vIElmIHdlIGp1c3QgZGlkIC1vIHdlIGNvdWxkIHRyeSBhbmQgZ2V0IGZpbGUgY291bnQgZnJvbSBwcm
9jZXNzaW5nICRvdXRwdXQgYnV0IGl0IHdvdWxkIGJlIGEgYml0IHRpbWUtY29uc3VtaW5nCgkJCQkkdW56a
XBfY29tbWFuZCA9ICRjb21tYW5kIC4gIiAtcXFvICd7JHppcF9maWxlfScgLWQgJ3skZGVzdGluYXRpb25f
ZGlyZWN0b3J5fScgLXggJ2ltcG9ydGJ1ZGR5LnBocCciOwoJCQkJCgkJCQkkdW56aXBfY29tbWFuZCA9ICg
gc2VsZjo6T1NfVFlQRV9XSU4gPT09ICR0aGlzLT5nZXRfb3NfdHlwZSgpICkgPyBzdHJfcmVwbGFjZSggJ1
wnJywgJyInLCAkdW56aXBfY29tbWFuZCApIDogJHVuemlwX2NvbW1hbmQ7CgkJCQkKCQkJCS8vIFRoaXMgY
29kZSBrZWVwcyBsb2FkIGJhbGFuY2VyIGNvbm5lY3Rpb25zIG9wZW4gdW50aWwgcHJvY2VzcyBpcyBjb21w
bGV0ZQoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ0F0dGVtcHRpbmcgdG8
gdXNlIHBvcGVuIHRvIGNhbGwgdW56aXAgdmlhIGV4ZWMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOw
oJCQkJJHBpcGUgPSBAcG9wZW4oICR1bnppcF9jb21tYW5kLCAncicgKTsKCQkJCWlmICggZW1wdHkoICRwa
XBlICkgKSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ2Bwb3Blbigp
YCBub3QgYXZhaWxhYmxlLiBDYWxsaW5nIHVuemlwIGRpcmVjdGx5IHZpYSBgZXhlYygpYCcsICdpdC1sMTB
uLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJQGV4ZWMoICR1bnppcF9jb21tYW5kLCAkb3V0cHV0LCAkZXhpdF
9jb2RlKTsKCQkJCX0gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfX
yggJ1VuemlwcGluZyB3aXRoIGBleGVjKClgIHZpYSBgcG9wZW4oKWAnLCAnaXQtbDEwbi1iYWNrdXBidWRk
eScgKSApOwoKCQkJCQkvLyBUZWxsIHRoZSBzdHJlYW0gd2Ugd2FudCBhbGwgdGhlIGRhdGEgYXMgaXRzIGF
2YWlsYWJsZQoJCQkJCXN0cmVhbV9zZXRfYmxvY2tpbmcoICRwaXBlLCBmYWxzZSApOwoKCQkJCQkvLyBVbn
ppcCAxMDI0IGF0IGEgdGltZSBhbmQgdGhlbiB1cGRhdGUgdGhlIGJyb3dzZXIgc28gaXQgZG9lc24ndCB0a
W1lb3V0LgoJCQkJCXdoaWxlICggISBmZW9mKCAkcGlwZSApICkgewoJCQkJCQlmcmVhZCggJHBpcGUsIDEw
MjQgKTsKCgkJCQkJCS8vIFRoaXMgZWNobyBpcyByZXF1aXJlZCB0byBrZWVwIExvYWQgQmFsYW5jZXIgY29
ubmVjdGlvbiBvcGVuCgkJCQkJCWVjaG8gIjwhLS0gUHJvY2Vzc2luZy4uLiAtLT4iOwoJCQkJCQlmbHVzaC
gpOwoJCQkJCX0KCgkJCQkJLy8gQ2xvc2UgdGhlIHBpcGUgYW5kIGdldCB0aGUgdW56aXAgZXhpdCBjb2RlL
goJCQkJCSRleGl0X2NvZGUgPSBwY2xvc2UoICRwaXBlICk7CgoJCQkJfSAvLyBFTkQgTG9hZEJhbGFuY2Vy
IENvZGUKCgkJCQkKCQkJCS8vIE5vdGU6IHdlIGRvbid0IG9wZW4gdGhlIGZpbGUgYW5kIHRoZW4gZG8gc3R
1ZmYgYnV0IGl0J3MgYWxsIGRvbmUgaW4gb25lIGFjdGlvbgoJCQkJLy8gc28gd2UgbmVlZCB0byBpbnRlcn
ByZXQgdGhlIHJldHVybiBjb2RlIHRvIGRlZGlkZSB3aGF0IHRvIGRvCgkJCQlzd2l0Y2ggKCAoaW50KSAkZ
XhpdF9jb2RlICkgewoJCQkJCWNhc2UgMDoKCQkJCQkJLy8gSGFuZGxlZCBhcmNoaXZlIGFuZCBhcHBhcmVu
dGx5IG5vIGV4dHJhY3Rpb24gcHJvYmxlbXMKCQkJCQkJCgkJCQkJCS8vIE5vdyB3ZSBoYXZlIHRvIGRvIGE
gc2Vjb25kIHJ1biB0byBmaW5kIG91dCB0aGUgZmlsZSBjb3VudCAoY3JhenkpCgkJCQkJCSRsaXN0X2NvbW
1hbmQgPSAkY29tbWFuZCAuICIgLXFsICd7JHppcF9maWxlfSciOwoJCQkJCQkKCQkJCQkJJGxpc3RfY29tb
WFuZCA9ICggc2VsZjo6T1NfVFlQRV9XSU4gPT09ICR0aGlzLT5nZXRfb3NfdHlwZSgpICkgPyBzdHJfcmVw
bGFjZSggJ1wnJywgJyInLCAkbGlzdF9jb21tYW5kICkgOiAkbGlzdF9jb21tYW5kOwoJCQkJCQkKCQkJCQk
JLy8kc3VtbWFyeSA9IEBleGVjKCAkbGlzdF9jb21tYW5kLCAkb3V0cHV0LCAkZXhpdF9jb2RlKTsKCQkJCQ
kJJHN1bW1hcnkgPSBAZXhlYyggJGxpc3RfY29tbWFuZCApOwoKCQkJCQkJLy8gQ3VycmVudGx5IGRvbid0I
GJvdGhlciB0byBjaGVjayBleGl0IGNvZGUsIGlmIHdlIGZhaWxlZCB0aGVuIHdoYXRldmVyIHdlIGdvdCBi
YWNrIGluCgkJCQkJCS8vIExhc3Qgb3V0cHV0IGxpbmUgX3Nob3VsZF8gaGF2ZSB0aGUgaW5mb3JtYXRpb24
gd2UgbmVlZCAoYW5kIHRoYXQgaXMgcmV0dXJuZWQgYnkgZXhlYykKCQkJCQkJLy8gJHN1bW1hcnkgaXMgdW
5saWtlbHkgdG8gbWF0Y2ggdGhlIHBhdHRlcm4gc28gZmlsZSBjb3VudCB3aWxsIGp1c3QgZGVmYXVsdCB0b
yAwCgkJCQkJCWlmICggcHJlZ19tYXRjaCgifFtbOl5kaWdpdDpdXSsoP1A8Ynl0ZV9jb3VudD5bWzpkaWdp
dDpdXSspW1s6XmRpZ2l0Ol1dKyg/UDxmaWxlX2NvdW50PltbOmRpZ2l0Ol1dKylbWzpzcGFjZTpdXSsoZml
sZXMpfCIsICRzdW1tYXJ5LCAkbWF0Y2hlcyApICkgewoJCQkJCQkKCQkJCQkJCS8vIFNob3VsZCBiZSBhYm
xlIHRvIHB1bGwgdGhpcyBzdHJhaWdodCBvdXQgcHJvdmlkZWQgdGhlIHVuemlwIHZlcnNpb24gc3R1Y2sgd
G8gdGhlIHJ1bGVzCgkJCQkJCQkkZmlsZV9jb3VudCA9ICRtYXRjaGVzWyAnZmlsZV9jb3VudCcgXTsKCQkJ
CQkJCQoJCQkJCQl9IGVsc2UgewoJCQkJCQkKCQkJCQkJCS8vIFNvbWUgcmVhc29uIHdlIGRpZG4ndCBnZXQ
gZ29vZCBvdXRwdXQgb3IgdGhlIGZvcm1hdCBpcyBvZGQKCQkJCQkJCSRmaWxlX2NvdW50ID0gMDsKCQkJCQ
kJfQoJCQkJCQkKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfX
ygnZXhlYyAodW56aXApIGV4dHJhY3RlZCBmaWxlIGNvbnRlbnRzICglMSRzIHRvICUyJHMpJywnaXQtbDEw
bi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ICkgKTsKCQoJCQk
JCQkkdGhpcy0+bG9nX2FyY2hpdmVfZmlsZV9zdGF0cyggJHppcF9maWxlICk7CgkJCQkJCQoJCQkJCQkkcm
VzdWx0ID0gdHJ1ZTsKCQkJCQkJYnJlYWs7CgoJCQkJCWRlZmF1bHQ6CgkJCQkJCS8vIEZvciBub3cgbGV0J
3MganVzdCBwcmludCB0aGUgZXJyb3IgY29kZSBhbmQgZHJvcCB0aHJvdWdoCgkJCQkJCSRlcnJvcl9zdHJp
bmcgPSAkZXhpdF9jb2RlOwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcml
udGYoIF9fKCdleGVjICh1bnppcCkgZmFpbGVkIHRvIG9wZW4vcHJvY2VzcyBmaWxlIHRvIGV4dHJhY3QgY2
9udGVudHMgKCUxJHMgdG8gJTIkcykgLSBFcnJvciBJbmZvOiAlMyRzLicsJ2l0LWwxMG4tYmFja3VwYnVkZ
HknICksICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgJGVycm9yX3N0cmluZyApICk7CgoJ
CQkJCQkvLyBSZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgYSBkZXNjcmlwdGlvbiAtIHRoaXMgbmVlZHMgdG8
gYmUgaGFuZGxlZCBtb3JlIGdlbmVyaWNhbGx5CgkJCQkJCS8vJHJlc3VsdCA9IGFycmF5KCAxLCAiVW5hYm
xlIHRvIGdldCBhcmNoaXZlIGNvbnRlbnRzIiApOwoJCQkJCQkvLyBDdXJyZW50bHkgYXMgd2UgYXJlIHJld
HVybmluZyBhbiBhcnJheSBhcyBhIHZhbGlkIHJlc3VsdCB3ZSBqdXN0IHJldHVybiBmYWxzZSBvbiBmYWls
dXJlCgkJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCX0KCQkJCQoJCQl9IGVsc2UgewoJCQkKCQkJCS8vIFN
vbWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCBleGVjIGJ1dCB3ZSBjb3VsZG4ndCBmaW
5kIHRoZSBmdW5jdGlvbgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnZXhlY
yBpbmRpY2F0ZWQgYXMgYXZhaWxhYmxlIG1ldGhvZCBidXQgZXhlYyBmdW5jdGlvbiBub24tZXhpc3RlbnQn
LCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgoJCQkJLy8gUmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIGE
gZGVzY3JpcHRpb24gLSB0aGlzIG5lZWRzIHRvIGJlIGhhbmRsZWQgbW9yZSBnZW5lcmljYWxseQoJCQkJLy
8kcmVzdWx0ID0gYXJyYXkoIDEsICJDbGFzcyBub3QgYXZhaWxhYmxlIHRvIG1hdGNoIG1ldGhvZCIgKTsKC
QkJCS8vIEN1cnJlbnRseSBhcyB3ZSBhcmUgcmV0dXJuaW5nIGFuIGFycmF5IGFzIGEgdmFsaWQgcmVzdWx0
IHdlIGp1c3QgcmV0dXJuIGZhbHNlIG9uIGZhaWx1cmUKCQkJCSRyZXN1bHQgPSBmYWxzZTsKCgkJCX0KCQk
JCgkJCXJldHVybiAkcmVzdWx0OwoJCQkJCQkKCQl9CgoJCS8qKgoJCSAqCWV4dHJhY3RfZ2VuZXJpY19zZW
xlY3RlZCgpCgkJICoKCQkgKglFeHRyYWN0cyB0aGUgY29udGVudHMgb2YgYSB6aXAgZmlsZSB0byB0aGUgc
3BlY2lmaWVkIGRpcmVjdG9yeSB1c2luZyB0aGUgYmVzdCB1bnppcCBtZXRob2RzIHBvc3NpYmxlLgoJCSAq
CgkJICoJQHBhcmFtCXN0cmluZwkJJHppcF9maWxlCQkJCQlGdWxsIHBhdGggJiBmaWxlbmFtZSBvZiBaSVA
gZmlsZSB0byBleHRyYWN0IGZyb20uCgkJICoJQHBhcmFtCXN0cmluZwkJJGRlc3RpbmF0aW9uX2RpcmVjdG
9yeQkJRnVsbCBkaXJlY3RvcnkgcGF0aCB0byBleHRyYWN0IGludG8uCgkJICoJQHBhcmFtCWFycmF5CQkka
XRlbXMJCQkJCQlNYXBwaW5nIG9mIHdoYXQgdG8gZXh0cmFjdCBhbmQgdG8gd2hhdAoJCSAqCUByZXR1cm4J
Ym9vbAkJCQkJCQkJCXRydWUgb24gc3VjY2VzcyAoYWxsIGV4dHJhY3Rpb25zIHN1Y2Nlc3NmdWwpLCBmYWx
zZSBvdGhlcndpc2UKCQkgKi8KCQlwcm90ZWN0ZWQgZnVuY3Rpb24gZXh0cmFjdF9nZW5lcmljX3NlbGVjdG
VkKCAkemlwX2ZpbGUsICRkZXN0aW5hdGlvbl9kaXJlY3RvcnkgPSAnJywgJGl0ZW1zICkgewoJCQoJCQkkc
3VtbWFyeSA9ICcnOwoJCQkkb3V0cHV0ID0gYXJyYXkoKTsKCQkJJGV4aXRfY29kZSA9IDEyNzsKCQkJJG1h
dGNoZXMgPSBhcnJheSgpOwoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCSR6aXBwYXRoID0gJyc7CgkJCSRjb21
tYW5kID0gJyc7CgkJCSRyZW5hbWVfcmVxdWlyZWQgPSBmYWxzZTsKCQkJCgkJCWlmICggZnVuY3Rpb25fZX
hpc3RzKCAnZXhlYycgKSApIHsKCQkJCgkJCQkvLyBHZXQgdGhlIGNvbW1hbmQgcGF0aCBmb3IgdGhlIHVue
mlwIGNvbW1hbmQgLSBzaG91bGQgcmV0dXJuIGEgdHJpbW1lZCBzdHJpbmcKCQkJCSR6aXBwYXRoID0gJHRo
aXMtPmdldF9jb21tYW5kX3BhdGgoIHNlbGY6OkNPTU1BTkRfVU5aSVBfUEFUSCApOwoJCQkJCgkJCQkvLyB
EZXRlcm1pbmUgaWYgd2UgYXJlIHVzaW5nIGFuIGFic29sdXRlIHBhdGgKCQkJCWlmICggIWVtcHR5ICggJH
ppcHBhdGggKSApIHsKCQkJCQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oI
CdVc2luZyBhYnNvbHV0ZSB1bnppcCBwYXRoOiAn
LCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJHppcHBhdGggKTsKCQkJCQkKCQkJCX0KCQkJCQoJCQkJLy8
gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiByZXF1aXJlZAoJCQkJJGNvbW1hbmQgPSAkdGhpcy0+c2xhc2
hpZnkoICR6aXBwYXRoICkgLiAndW56aXAnOwkKCQoJCQkJLy8gTm93IHdlIG5lZWQgdG8gdGFrZSBlYWNoI
Gl0ZW0gYW5kIHJ1biBhbiB1bnppcCBmb3IgaXQgLSB1bmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vIGVhc3kg
d2F5IG9mIGNvbWJpbmluZwoJCQkJLy8gYXJiaXRyYXJ5IGV4dHJhY3Rpb25zIGludG8gYSBzaW5nbGUgY29
tbWFuZCBpZiBzb21lIG1pZ2h0IGJlIHRvIGEgCgkJCQlmb3JlYWNoICggJGl0ZW1zIGFzICR3aGF0ID0+IC
R3aGVyZSApIHsKCQkJCQoJCQkJCSRyZW5hbWVfcmVxdWlyZWQgPSBmYWxzZTsKCQkJCQkkcmVzdWx0ID0gZ
mFsc2U7CgkJCQkKCQkJCQkvLyBEZWNpZGUgaG93IHRvIGV4dHJhY3QgYmFzZWQgb24gd2hlcmUKCQkJCQlp
ZiAoIGVtcHR5KCAkd2hlcmUpICkgewoJCQkJCQoJCQkJCQkvLyBFeHRyYWN0IGRpcmVjdCB0byBkZXN0aW5
hdGlvbiBkaXJlY3Rvcnkgd2l0aCBqdW5rZWQgcGF0aAoJCQkJCQkkdW56aXBfY29tbWFuZCA9ICRjb21tYW
5kIC4gIiAtcXFvaiAneyR6aXBfZmlsZX0nICd7JHdoYXR9JyAtZCAneyRkZXN0aW5hdGlvbl9kaXJlY3Rvc
nl9JyAiOwoJCQkJCQoJCQkJCX0gZWxzZWlmICggIWVtcHR5KCAkd2hlcmUgKSApIHsKCQkJCQkKCQkJCQkJ
aWYgKCAkd2hhdCA9PT0gJHdoZXJlICkgewoJCQkJCQkKCQkJCQkJCS8vIEV4dHJhY3QgdG8gc2FtZSBkaXJ
lY3Rvcnkgc3RydWN0dXJlIC0gZG9uJ3QganVuayBwYXRoLCBubyBuZWVkIHRvIGFkZCB3aGVyZSB0byBkZX
N0bmF0aW9uIGFzIGF1dG9tYXRpYwoJCQkJCQkJJHVuemlwX2NvbW1hbmQgPSAkY29tbWFuZCAuICIgLXFxb
yAneyR6aXBfZmlsZX0nICd7JHdoYXR9JyAtZCAneyRkZXN0aW5hdGlvbl9kaXJlY3Rvcnl9JyAiOwoJCQkJ
CQkKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCgkJCQkJCQkvLyBGaXJ0IHdlJ2xsIGV4dHJhY3QgYW5kIGp1bms
gdGhlIHBhdGgKCQkJCQkJCSR1bnppcF9jb21tYW5kID0gJGNvbW1hbmQgLiAiIC1xcW9qICd7JHppcF9maW
xlfScgJ3skd2hhdH0nIC1kICd7JGRlc3RpbmF0aW9uX2RpcmVjdG9yeX0nICI7CgkJCQkJCQkKCQkJCQkJC
S8vIFdpbGwgbmVlZCB0byByZW5hbWUgaWYgdGhlIGV4dHJhY3QgaXMgb2sKCQkJCQkJCSRyZW5hbWVfcmVx
dWlyZWQgPSB0cnVlOwoJCQkJCQkKCQkJCQkJfQoJCQkJCQoJCQkJCX0KCQkJCQoJCQkJCSR1bnppcF9jb21
tYW5kID0gKCBzZWxmOjpPU19UWVBFX1dJTiA9PT0gJHRoaXMtPmdldF9vc190eXBlKCkgKSA/IHN0cl9yZX
BsYWNlKCAnXCcnLCAnIicsICR1bnppcF9jb21tYW5kICkgOiAkdW56aXBfY29tbWFuZDsKCQkJCQoJCQkJC
UBleGVjKCAkdW56aXBfY29tbWFuZCwgJG91dHB1dCwgJGV4aXRfY29kZSk7CgkJCQkKCQkJCQkvLyBOb3Rl
OiB3ZSBkb24ndCBvcGVuIHRoZSBmaWxlIGFuZCB0aGVuIGRvIHN0dWZmIGJ1dCBpdCdzIGFsbCBkb25lIGl
uIG9uZSBhY3Rpb24KCQkJCQkvLyBzbyB3ZSBuZWVkIHRvIGludGVycHJldCB0aGUgcmV0dXJuIGNvZGUgdG
8gZGVkaWRlIHdoYXQgdG8gZG8KCQkJCQlzd2l0Y2ggKCAoaW50KSAkZXhpdF9jb2RlICkgewoJCQkJCQljY
XNlIDA6CgkJCQkJCQkvLyBIYW5kbGVkIGFyY2hpdmUgYW5kIGFwcGFyZW50bHkgbm8gZXh0cmFjdGlvbiBw
cm9ibGVtcwkJCQkJCQoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnR
mKCBfXygnZXhlYyAodW56aXApIGV4dHJhY3RlZCBmaWxlIGNvbnRlbnRzICglMSRzIGZyb20gJTIkcyB0by
AlMyRzJTQkcyknLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkd2hhdCwgJHppcF9maWxlLCAkZGVzdGluY
XRpb25fZGlyZWN0b3J5LCAkd2hlcmUgKSApOwoJCQkJCQkKCQkJCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJ
CQkJCgkJCQkJCQkvLyBSZW5hbWUgaWYgd2UgaGF2ZSB0bwoJCQkJCQkJaWYgKCB0cnVlID09PSAkcmVuYW1
lX3JlcXVpcmVkKSB7CgkJCQkJCQkKCQkJCQkJCQkvLyBOb3RlOiB3ZSBqdW5rZWQgdGhlIHBhdGggb24gdG
hlIGV4dHJhY3Rpb24gc28ganVzdCB0aGUgZmlsZW5hbWUgb2YgJHdoYXQgaXMgdGhlIHNvdXJjZSBidXQKC
QkJCQkJCQkvLyAkd2hlcmUgY291bGQgYmUgYSBzaW1wbGUgZmlsZSBuYW1lIG9yIGEgZmlsZSBwYXRoIAoJ
CQkJCQkJCSRyZXN1bHQgPSAkcmVzdWx0ICYmIHJlbmFtZSggJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSAuIER
JUkVDVE9SWV9TRVBBUkFUT1IgLiBiYXNlbmFtZSggJHdoYXQgKSwKCQkJCQkJCQkJCQkJCQkJICRkZXN0aW
5hdGlvbl9kaXJlY3RvcnkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHdoZXJlICk7CgkJCQkJCQkJCgkJC
QkJCQl9CgkJCQkJCQlicmVhazsKCgkJCQkJCWRlZmF1bHQ6CgkJCQkJCQkvLyBGb3Igbm93IGxldCdzIGp1
c3QgcHJpbnQgdGhlIGVycm9yIGNvZGUgYW5kIGRyb3AgdGhyb3VnaAoJCQkJCQkJJGVycm9yX3N0cmluZyA
9ICRleGl0X2NvZGU7CgkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludG
YoIF9fKCdleGVjICh1bnppcCkgZmFpbGVkIHRvIG9wZW4vcHJvY2VzcyBmaWxlIHRvIGV4dHJhY3QgY29ud
GVudHMgKCUxJHMgZnJvbSAlMiRzIHRvICUzJHMlNCRzKSAtIEVycm9yIEluZm86ICU1JHMuJywnaXQtbDEw
bi1iYWNrdXBidWRkeScgKSwgJHdoYXQsICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgJHd
oZXJlLCAkZXJyb3Jfc3RyaW5nICkgKTsKCgkJCQkJCQkvLyBSZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgYS
BkZXNjcmlwdGlvbiAtIHRoaXMgbmVlZHMgdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVyaWNhbGx5CgkJCQkJC
QkvLyRyZXN1bHQgPSBhcnJheSggMSwgIlVuYWJsZSB0byBnZXQgYXJjaGl2ZSBjb250ZW50cyIgKTsKCQkJ
CQkJCS8vIEN1cnJlbnRseSBhcyB3ZSBhcmUgcmV0dXJuaW5nIGFuIGFycmF5IGFzIGEgdmFsaWQgcmVzdWx
0IHdlIGp1c3QgcmV0dXJuIGZhbHNlIG9uIGZhaWx1cmUKCQkJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQ
l9CgkJCQkJCgkJCQkJLy8gSWYgdGhlIGV4dHJhY3Rpb24gZmFpbGVkIChvciByZW5hbWUgYWZ0ZXIgZXh0c
mFjdGlvbikgdGhlbiBicmVhayBvdXQgb2YgdGhlIGZvcmVhY2ggYW5kIHNpbXBseSByZXR1cm4gZmFsc2UK
CQkJCQlpZiAoIGZhbHNlID09PSAkcmVzdWx0ICkgewoJCQkJCQoJCQkJCQlicmVhazsKCQkJCQkJCgkJCQk
JfQoJCQkJCQoJCQkJfQoJCQkJCgkJCX0gZWxzZSB7CgkJCQoJCQkJLy8gU29tZXRoaW5nIGZpc2h5IC0gdG
hlIG1ldGhvZHMgaW5kaWNhdGVkIGV4ZWMgYnV0IHdlIGNvdWxkbid0IGZpbmQgdGhlIGZ1bmN0aW9uCgkJC
QlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdleGVjIGluZGljYXRlZCBhcyBhdmFp
bGFibGUgbWV0aG9kIGJ1dCBleGVjIGZ1bmN0aW9uIG5vbi1leGlzdGVudCcsJ2l0LWwxMG4tYmFja3VwYnV
kZHknICkgKTsKCgkJCQkvLyBSZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgYSBkZXNjcmlwdGlvbiAtIHRoaX
MgbmVlZHMgdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVyaWNhbGx5CgkJCQkvLyRyZXN1bHQgPSBhcnJheSggM
SwgIkNsYXNzIG5vdCBhdmFpbGFibGUgdG8gbWF0Y2ggbWV0aG9kIiApOwoJCQkJLy8gQ3VycmVudGx5IGFz
IHdlIGFyZSByZXR1cm5pbmcgYW4gYXJyYXkgYXMgYSB2YWxpZCByZXN1bHQgd2UganVzdCByZXR1cm4gZmF
sc2Ugb24gZmFpbHVyZQoJCQkJJHJlc3VsdCA9IGZhbHNlOwoKCQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bH
Q7CgkJCQkJCQoJCX0KCgkJLyoqCgkJICoJZmlsZV9leGlzdHMoKQoJCSAqCQoJCSAqCVRlc3RzIHdoZXRoZ
XIgYSBmaWxlICh3aXRoIHBhdGgpIGV4aXN0cyBpbiB0aGUgZ2l2ZW4gemlwIGZpbGUKCQkgKglJZiBsZWF2
ZV9vcGVuIGlzIHRydWUgdGhlbiB0aGUgemlwIG9iamVjdCB3aWxsIGJlIGxlZnQgb3BlbiBmb3IgZmFzdGV
yIGNoZWNraW5nIGZvciBzdWJzZXF1ZW50IGZpbGVzIHdpdGhpbiB0aGlzIHppcAoJCSAqICBOb3RlOiB0aG
lzIGlzIGlnbm9yZWQgaGVyZSBiZWNhdXNlIGl0IGhhcyBubyBtZWFuaW5nIGluIHRoZSB1c2Ugb2YgdGhlI
HVuemlwIGNvbW1hbmQKCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkemlwX2ZpbGUJCVRoZSB6aXAgZmls
ZSB0byBjaGVjawoJCSAqCUBwYXJhbQkJc3RyaW5nCSRsb2NhdGVfZmlsZQlUaGUgZmlsZSB0byB0ZXN0IGZ
vcgoJCSAqCUBwYXJhbQkJYm9vbAkkbGVhdmVfb3BlbgkJT3B0aW9uYWw6IFRydWUgaWYgdGhlIHppcCBmaW
xlIHNob3VsZCBiZSBsZWZ0IG9wZW4KCQkgKglAcmV0dXJuCQlib29sL2FycmF5CQkJCVRydWUgaWYgdGhlI
GZpbGUgaXMgZm91bmQgaW4gdGhlIHppcCBhbmQgZmFsc2UgaWYgbm90LCBhcnJheSBmb3Igb3RoZXIgcHJv
YmxlbQoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGZpbGVfZXhpc3RzKCAkemlwX2ZpbGUsICRsb2N
hdGVfZmlsZSwgJGxlYXZlX29wZW4gPSBmYWxzZSApIHsKCQkKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQoJCQ
lzd2l0Y2ggKCAkdGhpcy0+Z2V0X29zX3R5cGUoKSApIHsKCQkJCWNhc2Ugc2VsZjo6T1NfVFlQRV9OSVg6C
gkJCQkJJHJlc3VsdCA9ICR0aGlzLT5maWxlX2V4aXN0c19nZW5lcmljKCAkemlwX2ZpbGUsICRsb2NhdGVf
ZmlsZSApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSBzZWxmOjpPU19UWVBFX1dJTjoKCQkJCQkkcmVzdWx0ID0
gJHRoaXMtPmZpbGVfZXhpc3RzX2dlbmVyaWMoICR6aXBfZmlsZSwgJGxvY2F0ZV9maWxlICk7CgkJCQkJYn
JlYWs7CgkJCQlkZWZhdWx0OgoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJfQoJCQkKCQkJcmV0dXJuICRyZ
XN1bHQ7CgkJCQkJCQkJICAJCgkJfQoKCQkvKioKCQkgKglmaWxlX2V4aXN0c19nZW5lcmljKCkKCQkgKgkK
CQkgKglUZXN0cyB3aGV0aGVyIGEgZmlsZSAod2l0aCBwYXRoKSBleGlzdHMgaW4gdGhlIGdpdmVuIHppcCB
maWxlCgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJJHppcF9maWxlCQlUaGUgemlwIGZpbGUgdG8gY2hlY2
sKCQkgKglAcGFyYW0JCXN0cmluZwkkbG9jYXRlX2ZpbGUJVGhlIGZpbGUgdG8gdGVzdCBmb3IKCQkgKglAc
mV0dXJuCQlib29sL2FycmF5CQkJCVRydWUgaWYgdGhlIGZpbGUgaXMgZm91bmQgaW4gdGhlIHppcCBhbmQg
ZmFsc2UgaWYgbm90LCBhcnJheSBmb3Igb3RoZXIgcHJvYmxlbQoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN
0aW9uIGZpbGVfZXhpc3RzX2dlbmVyaWMoICR6aXBfZmlsZSwgJGxvY2F0ZV9maWxlICkgewoJCQoJCQkkcm
VzdWx0ID0gYXJyYXkoIDEsICJHZW5lcmljIGZhaWx1cmUgaW5kaWNhdGlvbiIgKTsKCQkJJHppcHBhdGggP
SAnJzsKCQkJJGNvbW1hbmQgPSAnJzsKCQkJCgkJCWlmICggZnVuY3Rpb25fZXhpc3RzKCAnZXhlYycgKSAp
IHsKCQkJCgkJCQkvLyBHZXQgdGhlIGNvbW1hbmQgcGF0aCBmb3IgdGhlIHVuemlwIGNvbW1hbmQgLSBzaG9
1bGQgcmV0dXJuIGEgdHJpbW1lZCBzdHJpbmcKCQkJCSR6aXBwYXRoID0gJHRoaXMtPmdldF9jb21tYW5kX3
BhdGgoIHNlbGY6OkNPTU1BTkRfVU5aSVBfUEFUSCApOwoJCQkJCgkJCQkvLyBEZXRlcm1pbmUgaWYgd2UgY
XJlIHVzaW5nIGFuIGFic29sdXRlIHBhdGgKCQkJCWlmICggIWVtcHR5ICggJHppcHBhdGggKSApIHsKCQkJ
CQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oICdVc2luZyBhYnNvbHV0ZSB
1bnppcCBwYXRoOiAnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJHppcHBhdGggKTsKCQkJCQkKCQkJCX
0KCQkJCQoJCQkJLy8gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiByZXF1aXJlZAoJCQkJJGNvbW1hbmQgP
SAkdGhpcy0+c2xhc2hpZnkoICR6aXBwYXRoICkgLiAndW56aXAnOwkKCQoJCQkJLy8gVHJ5IGFuIGFyY2hp
dmUgdGVzdCBvbiB0aGUgZmlsZSBhbmQgd2UnbGwganVzdCBsb29rIGF0IHRoZSByZXR1cm4gY29kZQoJCQk
JJGNvbW1hbmQgLj0gIiAtcXQgJ3skemlwX2ZpbGV9JyAneyRsb2NhdGVfZmlsZX0nIjsKCQkJCQoJCQkJJG
NvbW1hbmQgPSAoIHNlbGY6Ok9TX1RZUEVfV0lOID09PSAkdGhpcy0+Z2V0X29zX3R5cGUoKSApID8gc3RyX
3JlcGxhY2UoICdcJycsICciJywgJGNvbW1hbmQgKSA6ICRjb21tYW5kOwoKCQkJCUBleGVjKCAkY29tbWFu
ZCwgJG91dHB1dCwgJGV4aXRfY29kZSk7CgkJCQkKCQkJCS8vIE5vdGU6IHdlIGRvbid0IG9wZW4gdGhlIGZ
pbGUgYW5kIHRoZW4gZG8gc3R1ZmYgYnV0IGl0J3MgYWxsIGRvbmUgaW4gb25lIGFjdGlvbgoJCQkJLy8gc2
8gd2UgbmVlZCB0byBpbnRlcnByZXQgdGhlIHJldHVybiBjb2RlIHRvIGRlZGlkZSB3aGF0IHRvIGluZGljY
XRlCgkJCQlzd2l0Y2ggKCAoaW50KSAkZXhpdF9jb2RlICkgewoJCQkJCWNhc2UgMDoKCQkJCQkJLy8gSGFu
ZGxlZCBhcmNoaXZlIGFuZCBmaWxlIGZvdW5kIGFuZCBjaGVja2VkIG91dCBvayBzbyByZXR1cm4gc3VjY2V
zcwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGaWxlIGZvdW5kIChleG
VjKScsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gJGxvY2F0ZV9maWxlICk7CgkJCQkJCSRyZ
XN1bHQgPSB0cnVlOwoJCQkJCQlicmVhazsKCQkJCQljYXNlIDExOgoJCQkJCQkvLyBObyBwcm9ibGVtIGhh
bmRsaW5nIGFyY2hpdmUgYnV0IGZpbGUgc2ltcGx5IG5vdCBmb3VuZCBzbyByZXR1cm4gZmFpbHVyZQoJCQk
JCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGaWxlIG5vdCBmb3VuZCAoZXhlYy
knLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzogJyAuICRsb2NhdGVfZmlsZSApOwoJCQkJCQkkcmVzd
Wx0ID0gZmFsc2U7CgkJCQkJCWJyZWFrOwoJCQkJCWRlZmF1bHQ6CgkJCQkJCS8vIEZvciBub3cgbGV0J3Mg
anVzdCBwcmludCB0aGUgZXJyb3IgY29kZSBhbmQgZHJvcCB0aHJvdWdoCgkJCQkJCSRlcnJvcl9zdHJpbmc
gPSAkZXhpdF9jb2RlOwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludG
YoIF9fKCdleGVjICh1bnppcCkgZmFpbGVkIHRvIG9wZW4vcHJvY2VzcyBmaWxlIHRvIGNoZWNrIGlmIGZpb
GUgZXhpc3RzIChsb29raW5nIGZvciAlMSRzIGluICUyJHMpIC0gRXJyb3IgSW5mbzogJTMkcy4nLCdpdC1s
MTBuLWJhY2t1cGJ1ZGR5JyApLCAkbG9jYXRlX2ZpbGUgLCAkemlwX2ZpbGUsICRlcnJvcl9zdHJpbmcgKSA
pOwoKCQkJCQkJLy8gUmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIGEgZGVzY3JpcHRpb24gLSB0aGlzIG5lZW
RzIHRvIGJlIGhhbmRsZWQgbW9yZSBnZW5lcmljYWxseQoJCQkJCQkkcmVzdWx0ID0gYXJyYXkoIDEsICJGY
WlsZWQgdG8gb3Blbi9wcm9jZXNzIGZpbGUiICk7CgoJCQkJfQoJCQkJCgkJCX0gZWxzZSB7CgkJCQoJCQkJ
Ly8gU29tZXRoaW5nIGZpc2h5IC0gdGhlIG1ldGh
vZHMgaW5kaWNhdGVkIGV4ZWMgYnV0IHdlIGNvdWxkbid0IGZpbmQgdGhlIGZ1bmN0aW9uCgkJCQlwYl9iYW
NrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdleGVjIGluZGljYXRlZCBhcyBhdmFpbGFibGUgb
WV0aG9kIGJ1dCBleGVjIGZ1bmN0aW9uIG5vbi1leGlzdGVudCcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkg
KTsKCgkJCQkvLyBSZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgYSBkZXNjcmlwdGlvbiAtIHRoaXMgbmVlZHM
gdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVyaWNhbGx5CgkJCQkkcmVzdWx0ID0gYXJyYXkoIDEsICJGdW5jdG
lvbiBub3QgYXZhaWxhYmxlIHRvIG1hdGNoIG1ldGhvZCIgKTsKCgkJCX0KCQkJCgkJCXJldHVybiAkcmVzd
Wx0OwoKCQl9CgkJCgkJLyoJZ2V0X2ZpbGVfbGlzdCgpCgkJICoJCgkJICoJR2V0IGFuIGFycmF5IG9mIGFs
bCBmaWxlcyBpbiBhIHppcCBmaWxlIHdpdGggc29tZSBmaWxlIHByb3BlcnRpZXMuCgkJICoJCgkJICoJQHB
hcmFtCQlzdHJpbmcJCSR6aXBfZmlsZQlUaGUgZmlsZSB0byBsaXN0IHRoZSBjb250ZW50IG9mCgkJICoJQH
JldHVybgkJYm9vbHxhcnJheQkJCQlmYWxzZSBvbiBmYWlsdXJlLCBvdGhlcndpc2UgYXJyYXkgb2YgZmlsZ
SBwcm9wZXJ0aWVzIChtYXkgYmUgZW1wdHkpCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGdldF9maWxlX2xp
c3QoICR6aXBfZmlsZSApIHsKCQkKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQoJCQlzd2l0Y2ggKCAkdGhpcy0
+Z2V0X29zX3R5cGUoKSApIHsKCQkJCWNhc2Ugc2VsZjo6T1NfVFlQRV9OSVg6CgkJCQkJJHJlc3VsdCA9IC
R0aGlzLT5nZXRfZmlsZV9saXN0X2dlbmVyaWMoICR6aXBfZmlsZSApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZ
SBzZWxmOjpPU19UWVBFX1dJTjoKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPmdldF9maWxlX2xpc3RfZ2VuZXJp
YyggJHppcF9maWxlICk7CgkJCQkJYnJlYWs7CgkJCQlkZWZhdWx0OgoJCQkJCSRyZXN1bHQgPSBmYWxzZTs
KCQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQoJCX0KCQkKCQkvKglnZXRfZmlsZV9saXN0X2dlbm
VyaWMoKQoJCSAqCQoJCSAqCUdldCBhbiBhcnJheSBvZiBhbGwgZmlsZXMgaW4gYSB6aXAgZmlsZSB3aXRoI
HNvbWUgZmlsZSBwcm9wZXJ0aWVzLgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCQkkemlwX2ZpbGUJVGhl
IGZpbGUgdG8gbGlzdCB0aGUgY29udGVudCBvZgoJCSAqCUByZXR1cm4JCWJvb2x8YXJyYXkJCQkJZmFsc2U
gb24gZmFpbHVyZSwgb3RoZXJ3aXNlIGFycmF5IG9mIGZpbGUgcHJvcGVydGllcyAobWF5IGJlIGVtcHR5KQ
oJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBnZXRfZmlsZV9saXN0X2dlbmVyaWMoICR6aXBfZmlsZSApIHsKC
QkKCQkJJGZpbGVfbGlzdCA9IGFycmF5KCk7CgkJCSRzdGF0X2tleXMgPSBhcnJheSggJ3Blcm1pc3Npb25z
JywgJ3ppcF92ZXJzaW9uJywgJ3ppcF9vcycsICdzaXplJywgJ3R5cGVfYXR0cicsICdjb21wcmVzc2VkX3N
pemUnLCAnY29tcHJlc3Npb25fbWV0aG9kJywgJ21kYXRlJywgJ2ZpbGVuYW1lJyApOwoJCQkkb3V0cHV0ID
0gYXJyYXkoKTsKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkkemlwcGF0aCA9ICcnOwoJCQkkY29tbWFuZCA9I
CcnOwoJCQkKCQkJaWYgKCBmdW5jdGlvbl9leGlzdHMoICdleGVjJyApICkgewoJCQkKCQkJCS8vIEdldCB0
aGUgY29tbWFuZCBwYXRoIGZvciB0aGUgdW56aXAgY29tbWFuZCAtIHNob3VsZCByZXR1cm4gYSB0cmltbWV
kIHN0cmluZwoJCQkJJHppcHBhdGggPSAkdGhpcy0+Z2V0X2NvbW1hbmRfcGF0aCggc2VsZjo6Q09NTUFORF
9VTlpJUF9QQVRIICk7CgkJCQkKCQkJCS8vIERldGVybWluZSBpZiB3ZSBhcmUgdXNpbmcgYW4gYWJzb2x1d
GUgcGF0aAoJCQkJaWYgKCAhZW1wdHkgKCAkemlwcGF0aCApICkgewoJCQkJCgkJCQkJcGJfYmFja3VwYnVk
ZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ1VzaW5nIGFic29sdXRlIHVuemlwIHBhdGg6ICcsJ2l0LWw
xMG4tYmFja3VwYnVkZHknICkgLiAkemlwcGF0aCApOwoJCQkJCQoJCQkJfQoJCQkJCgkJCQkvLyBBZGQgdG
hlIHRyYWlsaW5nIHNsYXNoIGlmIHJlcXVpcmVkCgkJCQkkY29tbWFuZCA9ICR0aGlzLT5zbGFzaGlmeSggJ
HppcHBhdGggKSAuICd1bnppcCc7CQoKCQkJCS8vIFdlJ2xsIHRyeSBhbmQgZ2V0IGEgKm5peCBzdHlsZSBk
aXJlY3RvcnkgbGlzdGluZyBvdXRwdXQgYW5kIHByb2Nlc3MgaXQKCQkJCS8vIE5vdGU6IHdlJ2xsIGlnbm9
yZSBzdGRlcnIgb3V0cHV0IGZvciBub3cgYXMgaXQgbWlnaHQgaW50ZXJmZXJlCgkJCQkvLyBOb3RlOiB0aG
UgZmlsZSBkYXRlIGdpdmVuIGlzIHRoZSBzdG9yZWQgbG9jYWwgdGltZSAobm90IFVUQyB3aGljaCBtYXkgY
mUgc3RvcmVkIGFzIHdlbGwpCgkJCQkKCQkJCS8vIE91dHB1dCBmb3JtYXQgc2hvdWxkIGJlIGxpa2U6CgkJ
CQkvLyAtcnd4ci14ci14ICAyLjMgdW54ICAgICAyNzI5IHR4ICAgIDEwOTkgZGVmTiAyMDEyMDIyMC4yMzE
5NTYgZmlsZS9wYXRoL25hbWUuZXh0CgkJCQkkY29tbWFuZCAuPSAiIC1aIC0taCAtLXQgLWxUICd7JHppcF
9maWxlfSciOwoJCQkJCgkJCQkkY29tbWFuZCA9ICggc2VsZjo6T1NfVFlQRV9XSU4gPT09ICR0aGlzLT5nZ
XRfb3NfdHlwZSgpICkgPyBzdHJfcmVwbGFjZSggJ1wnJywgJyInLCAkY29tbWFuZCApIDogJGNvbW1hbmQ7
CgoJCQkJQGV4ZWMoICRjb21tYW5kLCAkb3V0cHV0LCAkZXhpdF9jb2RlKTsKCQkJCQoJCQkJLy8gTm90ZTo
gd2UgZG9uJ3Qgb3BlbiB0aGUgZmlsZSBhbmQgdGhlbiBkbyBzdHVmZiBidXQgaXQncyBhbGwgZG9uZSBpbi
BvbmUgYWN0aW9uCgkJCQkvLyBzbyB3ZSBuZWVkIHRvIGludGVycHJldCB0aGUgcmV0dXJuIGNvZGUgdG8gZ
GVkaWRlIHdoYXQgdG8gZG8KCQkJCXN3aXRjaCAoIChpbnQpICRleGl0X2NvZGUgKSB7CgkJCQkJY2FzZSAw
OgoJCQkJCQkvLyBIYW5kbGVkIGFyY2hpdmUgYW5kIGFwcGFyZW50bHkgZ290IGEgbGlzdCBzbyB0cnkgYW5
kIHByb2Nlc3MgaXQKCQkJCQkJCgkJCQkJCS8vIFNob3VsZCBiZSBvbmUgZmlsZSBwZXIgbGluZSwgbm8gbW
9yZSBubyBsZXNzCgkJCQkJCSRmaWxlX2NvdW50ID0gc2l6ZW9mKCAkb3V0cHV0ICk7CgkJCQkJCQoJCQkJC
Qlmb3JlYWNoICggJG91dHB1dCBhcyAkbGluZSApIHsKCQkJCQkJCgkJCQkJCQkvLyBCcmVhayB1cCB0aGUg
b3V0cHV0IGJhc2VkIG9uIHdoaXRlc3BhY2UgZm9yIG1heCBvZiA5IGZpZWxkcyAobGFzdCB3aWxsIGJlIGZ
pbGVuYW1lKQoJCQkJCQkJJHN0YXQgPSBhcnJheV9jb21iaW5lKCAgJHN0YXRfa2V5cyAsIHByZWdfc3BsaX
QoICIvW1xzLF0rLyIsICRsaW5lLCA5ICkgKTsKCQkJCQkJCQoJCQkJCQkJLy8gQ29udmVydCBzY3Jld3kgZ
GF0ZSBmb3JtYXQgdG8gYSBjb21tb24gbm90YXRpb24gKGNob29zZSBNeVNRTCBmb3JtYXQpCgkJCQkJCQkk
dHJhbnNsYXRlZF9tZGF0ZSA9IHByZWdfcmVwbGFjZSggJy8oXGR7NH0pKFxkezJ9KShcZHsyfSkuKFxkezJ
9KShcZHsyfSkoXGR7Mn0pLycsJyQxLSQyLSQzICQ0OiQ1OiQ2JyAsICRzdGF0WyAnbWRhdGUnIF0gKTsKCg
kJCQkJCQkvLyBNdXN0IGNvbnZlcnQgdG8gYSB0aW1lc3RhbXAgKHVzaW5nIGN1cnJlbnQgdGltZXpvbmUpC
gkJCQkJCQkkc3RhdFsgJ210aW1lJyBdID0gc3RydG90aW1lKCAkdHJhbnNsYXRlZF9tZGF0ZSApOwoJCQkJ
CQkJCgkJCQkJCQkkZmlsZV9saXN0W10gPSBhcnJheSgKCQkJCQkJCQkkc3RhdFsgJ2ZpbGVuYW1lJyBdLAo
JCQkJCQkJCSRzdGF0WyAnc2l6ZScgXSwKCQkJCQkJCQkkc3RhdFsgJ2NvbXByZXNzZWRfc2l6ZScgXSwKCQ
kJCQkJCQkkc3RhdFsgJ210aW1lJyBdCgkJCQkJCQkpOwoJCQkJCQkJCgkJCQkJCX0KCQkJCQkJCgkJCQkJC
XBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ2V4ZWMgKHVuemlwKSBs
aXN0ZWQgZmlsZSBjb250ZW50cyAoJTEkcyknLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2ZpbGU
gKSApOwoJCgkJCQkJCSR0aGlzLT5sb2dfYXJjaGl2ZV9maWxlX3N0YXRzKCAkemlwX2ZpbGUgKTsKCQkJCQ
kJCgkJCQkJCSRyZXN1bHQgPSAmJGZpbGVfbGlzdDsKCQkJCQkJYnJlYWs7CgoJCQkJCWRlZmF1bHQ6CgkJC
QkJCS8vIEZvciBub3cgbGV0J3MganVzdCBwcmludCB0aGUgZXJyb3IgY29kZSBhbmQgZHJvcCB0aHJvdWdo
CgkJCQkJCSRlcnJvcl9zdHJpbmcgPSAkZXhpdF9jb2RlOwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHV
zKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdleGVjICh1bnppcCkgZmFpbGVkIHRvIG9wZW4vcHJvY2Vzcy
BmaWxlIHRvIGxpc3QgY29udGVudHMgKCUxJHMpIC0gRXJyb3IgSW5mbzogJTIkcy4nLCdpdC1sMTBuLWJhY
2t1cGJ1ZGR5JyApLCAkemlwX2ZpbGUsICRlcnJvcl9zdHJpbmcgKSApOwoKCQkJCQkJLy8gUmV0dXJuIGFu
IGVycm9yIGNvZGUgYW5kIGEgZGVzY3JpcHRpb24gLSB0aGlzIG5lZWRzIHRvIGJlIGhhbmRsZWQgbW9yZSB
nZW5lcmljYWxseQoJCQkJCQkvLyRyZXN1bHQgPSBhcnJheSggMSwgIlVuYWJsZSB0byBnZXQgYXJjaGl2ZS
Bjb250ZW50cyIgKTsKCQkJCQkJLy8gQ3VycmVudGx5IGFzIHdlIGFyZSByZXR1cm5pbmcgYW4gYXJyYXkgY
XMgYSB2YWxpZCByZXN1bHQgd2UganVzdCByZXR1cm4gZmFsc2Ugb24gZmFpbHVyZQoJCQkJCQkkcmVzdWx0
ID0gZmFsc2U7CgkJCQl9CgkJCQkKCQkJfSBlbHNlIHsKCQkJCgkJCQkvLyBTb21ldGhpbmcgZmlzaHkgLSB
0aGUgbWV0aG9kcyBpbmRpY2F0ZWQgZXhlYyBidXQgd2UgY291bGRuJ3QgZmluZCB0aGUgZnVuY3Rpb24KCQ
kJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ2V4ZWMgaW5kaWNhdGVkIGFzIGF2Y
WlsYWJsZSBtZXRob2QgYnV0IGV4ZWMgZnVuY3Rpb24gbm9uLWV4aXN0ZW50JywnaXQtbDEwbi1iYWNrdXBi
dWRkeScgKSApOwoKCQkJCS8vIFJldHVybiBhbiBlcnJvciBjb2RlIGFuZCBhIGRlc2NyaXB0aW9uIC0gdGh
pcyBuZWVkcyB0byBiZSBoYW5kbGVkIG1vcmUgZ2VuZXJpY2FsbHkKCQkJCS8vJHJlc3VsdCA9IGFycmF5KC
AxLCAiQ2xhc3Mgbm90IGF2YWlsYWJsZSB0byBtYXRjaCBtZXRob2QiICk7CgkJCQkvLyBDdXJyZW50bHkgY
XMgd2UgYXJlIHJldHVybmluZyBhbiBhcnJheSBhcyBhIHZhbGlkIHJlc3VsdCB3ZSBqdXN0IHJldHVybiBm
YWxzZSBvbiBmYWlsdXJlCgkJCQkkcmVzdWx0ID0gZmFsc2U7CgoJCQl9CgoJCQlyZXR1cm4gJHJlc3VsdDs
KCQkJCQkJCSAgCQoJCX0KCQkKCQkvKglzZXRfY29tbWVudCgpCgkJICoJCgkJICoJUmV0cmlldmUgYXJjaG
l2ZSBjb21tZW50LgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCQkJJHppcF9maWxlCQlGaWxlbmFtZSBvZ
iBhcmNoaXZlIHRvIHNldCBjb21tZW50IG9uLgoJCSAqCUBwYXJhbQkJc3RyaW5nCQkJJGNvbW1lbnQJCUNv
bW1lbnQgdG8gYXBwbHkgdG8gYXJjaGl2ZS4KCQkgKglAcmV0dXJuCQlib29sCQkJCQkJCXRydWUgb24gc3V
jY2Vzcywgb3RoZXJ3aXNlIGZhbHNlLgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBzZXRfY29tbWVudCggJH
ppcF9maWxlLCAkY29tbWVudCApIHsKCQkKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQoJCQlzd2l0Y2ggKCAkd
Ghpcy0+Z2V0X29zX3R5cGUoKSApIHsKCQkJCWNhc2Ugc2VsZjo6T1NfVFlQRV9OSVg6CgkJCQkJJHJlc3Vs
dCA9ICR0aGlzLT5zZXRfY29tbWVudF9saW51eCggJHppcF9maWxlLCAkY29tbWVudCApOwoJCQkJCWJyZWF
rOwoJCQkJY2FzZSBzZWxmOjpPU19UWVBFX1dJTjoKCQkJCQkkcmVzdWx0ID0gJHRoaXMtPnNldF9jb21tZW
50X3dpbmRvd3MoICR6aXBfZmlsZSwgJGNvbW1lbnQgKTsKCQkJCQlicmVhazsKCQkJCWRlZmF1bHQ6CgkJC
QkJJHJlc3VsdCA9IGZhbHNlOwoJCQl9CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoKCQkvKglz
ZXRfY29tbWVudF93aW5kb3dzKCkKCQkgKgkKCQkgKglSZXRyaWV2ZSBhcmNoaXZlIGNvbW1lbnQuCgkJICo
JCgkJICoJQHBhcmFtCQlzdHJpbmcJCQkkemlwX2ZpbGUJCUZpbGVuYW1lIG9mIGFyY2hpdmUgdG8gc2V0IG
NvbW1lbnQgb24uCgkJICoJQHBhcmFtCQlzdHJpbmcJCQkkY29tbWVudAkJQ29tbWVudCB0byBhcHBseSB0b
yBhcmNoaXZlLgoJCSAqCUByZXR1cm4JCWJvb2wJCQkJCQkJdHJ1ZSBvbiBzdWNjZXNzLCBvdGhlcndpc2Ug
ZmFsc2UuCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIHNldF9jb21tZW50X3dpbmRvd3MoICR6aXBfZmlsZSw
gJGNvbW1lbnQgKSB7CgkJCgkJCS8vIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBidXQganVzdCBpbi
BjYXNlIHJldHVybiBmYWxzZSBzaWxlbnRseQoJCQlyZXR1cm4gZmFsc2U7CgkJCQoJCX0KCgkJLyoJc2V0X
2NvbW1lbnRfbGludXgoKQoJCSAqCQoJCSAqCVJldHJpZXZlIGFyY2hpdmUgY29tbWVudC4KCQkgKgkKCQkg
KglAcGFyYW0JCXN0cmluZwkJCSR6aXBfZmlsZQkJRmlsZW5hbWUgb2YgYXJjaGl2ZSB0byBzZXQgY29tbWV
udCBvbi4KCQkgKglAcGFyYW0JCXN0cmluZwkJCSRjb21tZW50CQlDb21tZW50IHRvIGFwcGx5IHRvIGFyY2
hpdmUuCgkJICoJQHJldHVybgkJYm9vbAkJCQkJCQl0cnVlIG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSBmYWxzZ
S4KCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gc2V0X2NvbW1lbnRfbGludXgoICR6aXBfZmlsZSwgJGNvbW1l
bnQgKSB7CgkJCgkJCSRvdXRwdXQgPSBhcnJheSgpOwoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCSR6aXBwYXR
oID0gJyc7CgkJCSRjb21tYW5kID0gJyc7CgkJCQoJCQlpZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ2V4ZWMnIC
kgKSB7CgkJCQoJCQkJLy8gR2V0IHRoZSBjb21tYW5kIHBhdGggZm9yIHRoZSB6aXAgY29tbWFuZCAtIHNob
3VsZCByZXR1cm4gYSB0cmltbWVkIHN0cmluZwoJCQkJJHppcHBhdGggPSAkdGhpcy0+Z2V0X2NvbW1hbmRf
cGF0aCggc2VsZjo6Q09NTUFORF9aSVBfUEFUSCApOwoJCQkJCgkJCQkvLyBEZXRlcm1pbmUgaWYgd2UgYXJ
lIHVzaW5nIGFuIGFic29sdXRlIHBhdGgKCQkJCWlmICggIWVtcHR5ICggJHppcHBhdGggKSApIHsKCQkJCQ
oJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oICdVc2luZyBhYnNvbHV0ZSB6a
XAgcGF0aDogJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICR6aXBwYXRoICk7CgkJCQkJCgkJCQl9CgkJ
CQkKCQkJCS8vIEFkZCB0aGUgdHJhaWxpbmcgc2xhc2ggaWYgcmVxdWlyZWQKCQkJCSRjb21tYW5kID0gJHR
oaXMtPnNsYXNoaWZ5KCAkemlwcGF0aCApIC4gJ3ppcCc7CQoKCQkJCS8vIFdlIGhhdmUgdG8gZmVlZCB0aG
UgY29tbWVudCBpbiAtIHRyeWluZyBieSBwaXBlIGhlcmUKCQkJCS8vIFdlIG5lZWQgdG8gcHJlcGVuZCB0a
GUgY29tbWVudCBpbnB1dAoJCQkJJGNvbW1hbmQgLj0gIiAteiAneyR6aXBfZmlsZX0nIjsKCQkJCQoJCQkJ
Ly8gTm90ZSB0aGF0IHdlIGVzY2FwZSB0aGUgY29tbWVudCBhcmcgZm9yIHRoZSBzaGVsbC4uLgoJCQkJJGN
vbW1hbmQgID0gJ2VjaG8gJyAuIGVzY2FwZXNoZW
xsYXJnKCAkY29tbWVudCApIC4gJyB8ICcgLiAkY29tbWFuZDsKCQkJCQoJCQkJQGV4ZWMoICRjb21tYW5kL
CAkb3V0cHV0LCAkZXhpdF9jb2RlKTsKCQkJCQoJCQkJLy8gTm90ZTogd2UgZG9uJ3Qgb3BlbiB0aGUgZmls
ZSBhbmQgdGhlbiBkbyBzdHVmZiBidXQgaXQncyBhbGwgZG9uZSBpbiBvbmUgYWN0aW9uCgkJCQkvLyBzbyB
3ZSBuZWVkIHRvIGludGVycHJldCB0aGUgcmV0dXJuIGNvZGUgdG8gZGVkaWRlIHdoYXQgdG8gZG8KCQkJCX
N3aXRjaCAoIChpbnQpICRleGl0X2NvZGUgKSB7CgkJCQkJY2FzZSAwOgoJCQkJCQkvLyBIYW5kbGVkIGFyY
2hpdmUgYW5kIGFwcGFyZW50bHkgc2V0IHRoZSBjb21tZW50IC0gbm8gZnVydGhlciBhY3Rpb24gcmVxdWly
ZWQKCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJyw
gc3ByaW50ZiggX18oJ2V4ZWMgKHppcCkgc2V0IGNvbW1lbnQgaW4gZmlsZSAlMSRzJywnaXQtbDEwbi1iYW
NrdXBidWRkeScgKSwgJHppcF9maWxlICkgKTsKCQkJCQkJCQoJCQkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJC
QkJYnJlYWs7CgoJCQkJCWRlZmF1bHQ6CgkJCQkJCS8vIEZvciBub3cgbGV0J3MganVzdCBwcmludCB0aGUg
ZXJyb3IgY29kZSBhbmQgZHJvcCB0aHJvdWdoCgkJCQkJCSRlcnJvcl9zdHJpbmcgPSAkZXhpdF9jb2RlOwo
JCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdleGVjICh6aX
ApIGZhaWxlZCB0byBvcGVuL3Byb2Nlc3MgZmlsZSB0byBzZXQgY29tbWVudCBpbiBmaWxlICUxJHMgLSBFc
nJvciBJbmZvOiAlMiRzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGVycm9yX3N0
cmluZyApICk7CgoJCQkJCQkvLyBSZXR1cm4gYW4gZXJyb3IgY29kZSBhbmQgYSBkZXNjcmlwdGlvbiAtIHR
oaXMgbmVlZHMgdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVyaWNhbGx5CgkJCQkJCS8vJHJlc3VsdCA9IGFycm
F5KCAxLCAiVW5hYmxlIHRvIGdldCBhcmNoaXZlIGNvbnRlbnRzIiApOwoJCQkJCQkvLyBDdXJyZW50bHkgY
XMgd2UgYXJlIHJldHVybmluZyBhIHN0cmluZyBhcyBhIHZhbGlkIHJlc3VsdCB3ZSBqdXN0IHJldHVybiBm
YWxzZSBvbiBmYWlsdXJlCgkJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCX0KCQkJCQoJCQl9IGVsc2Ugewo
JCQkKCQkJCS8vIFNvbWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCBleGVjIGJ1dCB3ZS
Bjb3VsZG4ndCBmaW5kIHRoZSBmdW5jdGlvbgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpb
HMnLCBfXygnZXhlYyBpbmRpY2F0ZWQgYXMgYXZhaWxhYmxlIG1ldGhvZCBidXQgZXhlYyBmdW5jdGlvbiBu
b24tZXhpc3RlbnQnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgoJCQkJLy8gUmV0dXJuIGFuIGVycm9
yIGNvZGUgYW5kIGEgZGVzY3JpcHRpb24gLSB0aGlzIG5lZWRzIHRvIGJlIGhhbmRsZWQgbW9yZSBnZW5lcm
ljYWxseQoJCQkJLy8kcmVzdWx0ID0gYXJyYXkoIDEsICJDbGFzcyBub3QgYXZhaWxhYmxlIHRvIG1hdGNoI
G1ldGhvZCIgKTsKCQkJCS8vIEN1cnJlbnRseSBhcyB3ZSBhcmUgcmV0dXJuaW5nIGEgc3RyaW5nIGFzIGEg
dmFsaWQgcmVzdWx0IHdlIGp1c3QgcmV0dXJuIGZhbHNlIG9uIGZhaWx1cmUKCQkJCSRyZXN1bHQgPSBmYWx
zZTsKCgkJCX0KCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkJCQkKCQl9CgoJCS8qCWdldF9jb21tZW50KC
kKCQkgKgkKCQkgKglSZXRyaWV2ZSBhcmNoaXZlIGNvbW1lbnQuCgkJICoJCgkJICoJQHBhcmFtCQlzdHJpb
mcJCSR6aXBfZmlsZQkJRmlsZW5hbWUgb2YgYXJjaGl2ZSB0byByZXRyaWV2ZSBjb21tZW50IGZyb20uCgkJ
ICoJQHJldHVybgkJYm9vbHxzdHJpbmcJCQkJCWZhbHNlIG9uIGZhaWx1cmUsIFppcCBjb21tZW50IG90aGV
yd2lzZS4KCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbW1lbnQoICR6aXBfZmlsZSApIHsKCQkKCQ
kJJHJlc3VsdCA9IGZhbHNlOwoJCQoJCQlzd2l0Y2ggKCAkdGhpcy0+Z2V0X29zX3R5cGUoKSApIHsKCQkJC
WNhc2Ugc2VsZjo6T1NfVFlQRV9OSVg6CgkJCQkJJHJlc3VsdCA9ICR0aGlzLT5nZXRfY29tbWVudF9saW51
eCggJHppcF9maWxlICk7CgkJCQkJYnJlYWs7CgkJCQljYXNlIHNlbGY6Ok9TX1RZUEVfV0lOOgoJCQkJCSR
yZXN1bHQgPSAkdGhpcy0+Z2V0X2NvbW1lbnRfd2luZG93cyggJHppcF9maWxlICk7CgkJCQkJYnJlYWs7Cg
kJCQlkZWZhdWx0OgoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7C
gkJCQoJCX0KCQkKCQkvKglnZXRfY29tbWVudF93aW5kb3dzKCkKCQkgKgkKCQkgKglSZXRyaWV2ZSBhcmNo
aXZlIGNvbW1lbnQuCgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJCSR6aXBfZmlsZQkJRmlsZW5hbWUgb2Y
gYXJjaGl2ZSB0byByZXRyaWV2ZSBjb21tZW50IGZyb20uCgkJICoJQHJldHVybgkJYm9vbHxzdHJpbmcJCQ
kJCWZhbHNlIG9uIGZhaWx1cmUsIFppcCBjb21tZW50IG90aGVyd2lzZS4KCQkgKi8KCQlwdWJsaWMgZnVuY
3Rpb24gZ2V0X2NvbW1lbnRfd2luZG93cyggJHppcF9maWxlICkgewoJCQoJCQkvLyBUaGlzIHNob3VsZCBu
ZXZlciBiZSBjYWxsZWQgYnV0IGp1c3QgaW4gY2FzZSByZXR1cm4gZmFsc2Ugc2lsZW50bHkKCQkJcmV0dXJ
uIGZhbHNlOwoJCQkKCQl9CgkKCQkvKglnZXRfY29tbWVudF9saW51eCgpCgkJICoJCgkJICoJUmV0cmlldm
UgYXJjaGl2ZSBjb21tZW50LgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCQkkemlwX2ZpbGUJCUZpbGVuY
W1lIG9mIGFyY2hpdmUgdG8gcmV0cmlldmUgY29tbWVudCBmcm9tLgoJCSAqCUByZXR1cm4JCWJvb2x8c3Ry
aW5nCQkJCQlmYWxzZSBvbiBmYWlsdXJlLCBaaXAgY29tbWVudCBvdGhlcndpc2UuCgkJICovCgkJcHVibGl
jIGZ1bmN0aW9uIGdldF9jb21tZW50X2xpbnV4KCAkemlwX2ZpbGUgKSB7CgoJCQkkb3V0cHV0ID0gYXJyYX
koKTsKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkkY29tbWVudCA9ICIiOwoJCQkkemlwcGF0aCA9ICcnOwoJC
QkkY29tbWFuZCA9ICcnOwoJCQkKCQkJaWYgKCBmdW5jdGlvbl9leGlzdHMoICdleGVjJyApICkgewoJCQkK
CQkJCS8vIEdldCB0aGUgY29tbWFuZCBwYXRoIGZvciB0aGUgdW56aXAgY29tbWFuZCAtIHNob3VsZCByZXR
1cm4gYSB0cmltbWVkIHN0cmluZwoJCQkJJHppcHBhdGggPSAkdGhpcy0+Z2V0X2NvbW1hbmRfcGF0aCggc2
VsZjo6Q09NTUFORF9VTlpJUF9QQVRIICk7CgkJCQkKCQkJCS8vIERldGVybWluZSBpZiB3ZSBhcmUgdXNpb
mcgYW4gYWJzb2x1dGUgcGF0aAoJCQkJaWYgKCAhZW1wdHkgKCAkemlwcGF0aCApICkgewoJCQkJCgkJCQkJ
cGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ1VzaW5nIGFic29sdXRlIHVuemlwIHB
hdGg6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkemlwcGF0aCApOwoJCQkJCQoJCQkJfQoJCQkJCg
kJCQkvLyBBZGQgdGhlIHRyYWlsaW5nIHNsYXNoIGlmIHJlcXVpcmVkCgkJCQkkY29tbWFuZCA9ICR0aGlzL
T5zbGFzaGlmeSggJHppcHBhdGggKSAuICd1bnppcCc7CQoKCQkJCS8vIFdlIGV4cGVjdCB0d28gbGluZXMg
b2Ygb3V0cHV0IC0gdGhlIGZpcnN0IHNocHVsZCBiZSB0aGUgYXJjaGl2ZSBuYW1lIGFuZCB0aGUgc2Vjb25
kIGNvbW1lbnQgaWYgcHJlc2VudAoJCQkJJGNvbW1hbmQgLj0gIiAteiAneyR6aXBfZmlsZX0nIjsKCQkJCQ
oJCQkJQGV4ZWMoICRjb21tYW5kLCAkb3V0cHV0LCAkZXhpdF9jb2RlKTsKCQkJCQoJCQkJLy8gTm90ZTogd
2UgZG9uJ3Qgb3BlbiB0aGUgZmlsZSBhbmQgdGhlbiBkbyBzdHVmZiBidXQgaXQncyBhbGwgZG9uZSBpbiBv
bmUgYWN0aW9uCgkJCQkvLyBzbyB3ZSBuZWVkIHRvIGludGVycHJldCB0aGUgcmV0dXJuIGNvZGUgdG8gZGV
kaWRlIHdoYXQgdG8gZG8KCQkJCXN3aXRjaCAoIChpbnQpICRleGl0X2NvZGUgKSB7CgkJCQkJY2FzZSAwOg
oJCQkJCQkvLyBIYW5kbGVkIGFyY2hpdmUgYW5kIGFwcGFyZW50bHkgZ290IGEgY29tbWVudCBzbyB0cnkgY
W5kIHByb2Nlc3MgaXQKCQkJCQkJCgkJCQkJCS8vIFNob3VsZCBiZSBvbmUgZmlsZSBwZXIgbGluZSwgbm8g
bW9yZSBubyBsZXNzCgkJCQkJCSRsaW5lX2NvdW50ID0gc2l6ZW9mKCAkb3V0cHV0ICk7CgkJCQkJCQoJCQk
JCQkvLyBNdXN0IGhhdmUgYXQgbGVhc3QgMiBsaW5lcyBmb3IgdGhlcmUgdG8gYmUgYSBub24tZW1wdHkgY2
9tbWVudAoJCQkJCQlpZiAoICRsaW5lX2NvdW50ID4gMSApIHsKCQkJCQkJCgkJCQkJCQkvLyBTaW1wbGUgY
3JpdGVyaWEgZm9yIG5vdyAtIGp1c3QgdGFrZSB0aGUgZmluYWwgbGluZQoJCQkJCQkJLy8gTm90ZSB0aGF0
IGlmIHRoZXJlIGlzIG5vIGNvbW1lbnQgdGhpcyBpcyBzdGlsbCB2YWxpZCBhcyBhbiBlbXB0eSBjb21tZW5
0CgkJCQkJCQkvLyBzbyB3ZSBkb24ndCB0cmVhdCB0aGlzIGFzIGFuIGVycm9yCgkJCQkJCQkvLyRjb21tZW
50ID0gJG91dHB1dFsgJGxpbmVfY291bnQgLSAxXTsKCQkJCQkJCXVuc2V0KCAkb3V0cHV0WzBdICk7CgkJC
QkJCQkkY29tbWVudCA9IGltcGxvZGUoICcnLCAkb3V0cHV0ICk7CgkJCQkJCQoJCQkJCQl9CgkJCQkJCXBi
X2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ2V4ZWMgKHVuemlwKSByZXR
yaWV2ZWQgY29tbWVudCBpbiBmaWxlICUxJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2ZpbG
UgKSApOwoJCQkJCQkJCgkJCQkJCSRyZXN1bHQgPSAkY29tbWVudDsKCQkJCQkJYnJlYWs7CgoJCQkJCWRlZ
mF1bHQ6CgkJCQkJCS8vIEZvciBub3cgbGV0J3MganVzdCBwcmludCB0aGUgZXJyb3IgY29kZSBhbmQgZHJv
cCB0aHJvdWdoCgkJCQkJCSRlcnJvcl9zdHJpbmcgPSAkZXhpdF9jb2RlOwoJCQkJCQlwYl9iYWNrdXBidWR
keTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdleGVjICh1bnppcCkgZmFpbGVkIHRvIG9wZW
4vcHJvY2VzcyBnZXQgY29tbWVudCBpbiBmaWxlICUxJHMgLSBFcnJvciBJbmZvOiAlMiRzLicsJ2l0LWwxM
G4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGVycm9yX3N0cmluZyApICk7CgoJCQkJCQkvLyBSZXR1
cm4gYW4gZXJyb3IgY29kZSBhbmQgYSBkZXNjcmlwdGlvbiAtIHRoaXMgbmVlZHMgdG8gYmUgaGFuZGxlZCB
tb3JlIGdlbmVyaWNhbGx5CgkJCQkJCS8vJHJlc3VsdCA9IGFycmF5KCAxLCAiVW5hYmxlIHRvIGdldCBhcm
NoaXZlIGNvbnRlbnRzIiApOwoJCQkJCQkvLyBDdXJyZW50bHkgYXMgd2UgYXJlIHJldHVybmluZyBhIHN0c
mluZyBhcyBhIHZhbGlkIHJlc3VsdCB3ZSBqdXN0IHJldHVybiBmYWxzZSBvbiBmYWlsdXJlCgkJCQkJCSRy
ZXN1bHQgPSBmYWxzZTsKCQkJCX0KCQkJCQoJCQl9IGVsc2UgewoJCQkKCQkJCS8vIFNvbWV0aGluZyBmaXN
oeSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCBleGVjIGJ1dCB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBmdW5jdG
lvbgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnZXhlYyBpbmRpY2F0ZWQgY
XMgYXZhaWxhYmxlIG1ldGhvZCBidXQgZXhlYyBmdW5jdGlvbiBub24tZXhpc3RlbnQnLCdpdC1sMTBuLWJh
Y2t1cGJ1ZGR5JyApICk7CgoJCQkJLy8gUmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIGEgZGVzY3JpcHRpb24
gLSB0aGlzIG5lZWRzIHRvIGJlIGhhbmRsZWQgbW9yZSBnZW5lcmljYWxseQoJCQkJLy8kcmVzdWx0ID0gYX
JyYXkoIDEsICJDbGFzcyBub3QgYXZhaWxhYmxlIHRvIG1hdGNoIG1ldGhvZCIgKTsKCQkJCS8vIEN1cnJlb
nRseSBhcyB3ZSBhcmUgcmV0dXJuaW5nIGEgc3RyaW5nIGFzIGEgdmFsaWQgcmVzdWx0IHdlIGp1c3QgcmV0
dXJuIGZhbHNlIG9uIGZhaWx1cmUKCQkJCSRyZXN1bHQgPSBmYWxzZTsKCgkJCX0KCQkJCgkJCXJldHVybiA
kcmVzdWx0OwoJCQkKCQl9CgkJCgl9IC8vIGVuZCBwbHVnaW5idWRkeV96YnppcGV4ZWMgY2xhc3MuCQoJCn
0K
###PACKDATA,FILE_END,/lib/zipbuddy/zbzipexec.php,importbuddy/lib/zipbuddy/zbzipexec
.php
###PACKDATA,FILE_START,/lib/zipbuddy/zbzippclzip.php,importbuddy/lib/zipbuddy/zbzip
pclzip.php
PD9waHAKLyoqCiAqCXBsdWdpbmJ1ZGR5X3piemlwcGNsemlwIENsYXNzCiAqCiAqICBFeHRlbmRzIHRoZSB
6aXAgY2FwYWJpbGl0eSBjb3JlIGNsYXNzIHdpdGggcGNsemlwIHNwZWNpZmljIGNhcGFiaWxpdHkKICoJCi
AqCVZlcnNpb246IDEuMC4wCiAqCUF1dGhvcjoKICoJQXV0aG9yIFVSSToKICoKICoJQHBhcmFtCQkkcGFyZ
W50CQlvYmplY3QJCU9wdGlvbmFsIHBhcmVudCBvYmplY3Qgd2hpY2ggY2FuIHByb3ZpZGUgZnVuY3Rpb25z
IGZvciByZXBvcnRpbmcsIGV0Yy4KICoJQHJldHVybgkJbnVsbAogKgogKi8KaWYgKCAhY2xhc3NfZXhpc3R
zKCAicGx1Z2luYnVkZHlfemJ6aXBwY2x6aXAiICkgKSB7CgoJLyoqCgkgKglwbHVnaW5idWRkeV9QY2xaaX
AgQ2xhc3MKCSAqCgkgKglXcmFwcGVyIGZvciBQY2xaaXAgdG8gZW5jYXBzdWxhdGUgdGhlIHByb2Nlc3Mgb
2YgbG9hZGluZyB0aGUgUGNsWmlwIGxpYnJhcnkgKGlmIG5vdAoJICoJYWxyZWFkeSBsb2FkZWQsIHdoaWNo
IGl0IHNob3VsZG4ndCBiZSBnZW5lcmFsbHkpIGFuZCBhbHNvIHN1cnJvdW5kaW5nIG1ldGhvZCBjYWxscwo
JICoJd2l0aCB0aGUgdW5wbGVhc2FudCB3b3JrYXJvdW5kIGZvciB0aGUgbWJzdHJpbmcgaXNzdWUgd2hlcm
UgdGhpbmdzIG1heSBmYWlsIGJlY2F1c2UKCSAqCVBjbFppcCBpcyB1c2luZyBzdHJpbmcgZnVuY3Rpb25zI
HRvIHByb2Nlc3MgYmluYXJ5IGRhdGEgYW5kIGlmIHRoZSBzdHJpbmcgZnVuY3Rpb25zCgkgKglhcmUgb3Zl
cmxvYWRlZCB3aXRoIHRoZSBtdWx0aS1ieXRlIHZlcnNpb25zIHRoZSBwcm9jZXNzaW5nIGNhbiAocHJvYmF
ibHkgd2lsbCkgZmFpbC4KCSAqCgkgKglAcGFyYW0Jc3RyaW5nCSR6aXBfZmlsZW5hbWUJVGhlIG5hbWUgb2
YgdGhlIHppcCBmaWxlIHRoYXQgd2lsbCBiZSBtYW5hZ2VkCgkgKiAJQHBhcmFtCWJvb2wJJGxvYWRfb25se
QkJVHJ1ZSwgb25seSBsb2FkIHRoZSBwY2x6aXAgbGlicmFyeQoJICoJQHJldHVybgludWxsCgkgKgoJICov
CgljbGFzcyBwbHVnaW5idWRkeV9QY2xaaXAgewoKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgY3JlYXR
lZCBQY2xaaXAgb2JqZWN0IGlmIGl0IGNhbiBiZSBjcmVhdGVkCiAgICAgICAgICogCiAgICAgICAgICogQH
ZhciAkX3phIAlvYmplY3QKICAgICAgICAgKi8KCQlwcml2YXRlICRfemEgPSBudWxsOwoJCQoJCS8qKgoJC
SAqCV9fY29uc3RydWN0KCkKCQkgKgkKCQkgKglEZWZhdWx0IGNvbnN0cnVjdG9yLgoJCSAqCVRoaXMgaXMg
dXNlZCB0byB0cnkgYW5kIGxvYWQgdGhlIFBjbFppcCBsaWJyYXJ5IGFuZCB0aGVuIGNyZWF0ZSBhbiBpbnN
0YW5jZSBvZgoJCSAqCWFuIGFyY2hpdmUgd2l0aCB0aGF0LiBJZiB0aGUgbGlicmFyeSBjYW5ub3QgYmUgbW
FkZSBhdmFpbGFibGUgdGhlbiBhbiBleGNlcHRpb24KCQkgKglpcyB0aHJvd24gYW5kIHRoYXQgaXMgaGFuZ
GxlZCBieSB0aGUgY2FsbGVyLgoJCSAqIAlUaGUgJGxvYWRfb25seSBwYXJhbWV0ZXIgcHJvdmlkZXMgdG8g
b3B0aW9uIHRvIG9ubHkgbG9hZCB0aGUgcGNsemlwIGxpYnJhcnkKCQkgKiAJd2hpY2ggbWF5IGJlIHJlcXV
pcmVkIHRvIGJlIGFibGUgdG8gdXNlIGRlZmluZWQgY29uc3RhbnRzIGJlZm9yZSB3ZSBhcmUgcmVhZHkKCQ
kgKiAJdG8gYWN0dWFsbHkgY3JlYXRlIGEgemlwIGZpbGUuIElmIGNhbGxlZCB3aXRoIHRoaXMgcGFyYW1ld
GVyIHRydWUgdGhlbiB0aGUKCQkgKiAJdmFsdWUgb2YgdGhlICR6aXBfZmlsZW5hbWUgcGFyYW1ldGVyIGlz
IGlycmVsZXZhbnQuCgkJICoJTm90ZTogUGNsWmlwIG5lZWRzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byB
1c2UgZm9yIHRlbXBvcmFyeSBmaWxlcyBhbmQgdGhpcyBtdXN0CgkJICoJYmUgZGVmaW5lZCBhcyBQQ0xaSV
BfVEVNUE9SQVJZX0RJUkVDVE9SWSBjb25zdGFudCBfYmVmb3JlXyBQY2xaaXAgY2xhc3MgbGlicmFyeQoJC
SAqCWlzIGxvYWRlZCBiZWNhdXNlIGxvYWRpbmcgdGhlIGxpYnJhcnkgbG9ja3MgaW4gdGhlIHZhbHVlIG9m
IHRoYXQgY29uc3RhbnQuIE91cgoJCSAqCWNob2ljZSBpcyB0byB1c2UgdGhlIGdldF90ZW1wX2RpcigpIGZ
1bmN0aW9uIHRvIHByb3ZpZGUgYSB2YWxpZC93cml0YWJsZSBkaXJlY3RvcnkKCQkgKglhbmQgd2UgYXJlIG
5vdCBhbGxvd2luZyB0aGUgY2FsbGVyIHRvIG92ZXJyaWRlIHRoaXMgYXMgaXQganVzdCBnZXRzIHRvbyBjb
21wbGljYXRlZC4KCQkgKglCb3RoIFdvcmRQcmVzcyBhbmQgaW1wb3J0YnVkZHkgKHRocm91Z2ggdGhlIHN0
YW5kYWxvbmUgcHJlbG9hZGVyKSBwcm92aWRlIGEgZ2V0X3RlbXBfZGlyKCkKCQkgKglmdW5jdGlvbiB0aGF
0IF9zaG91bGRfIGJlIGFibGUgdG8gcHJvdmlkZSBhIHZhbGlkL3dyaXRhYmxlIGRpcmVjdG9yeSBvbmUgd2
F5IG9yIGFub3RoZXIKCQkgKgkoZXZlbiBpZiBpdCByZXF1aXJlcyB0aGUgdXNlciB0byBkbyBzb21lIGNvb
mZpZ3VyYXRpb24pIHNvIHRoaXMgaXMgdGhlIGJlc3QgYXBwcm9hY2gKCQkgKgl0byBkZWNvdXBsZSBQY2xa
aXAgZnJvbSBhbnkgYXBwbGljYXRpb24gZnVuY3Rpb25hbGl0eS4KCQkgKglOb3RlOiBXZSBoYXZlIG9uZSB
wb3NzaWJsZSBpc3N1ZSB3aXRoIHRoaXMgaW4gdGhhdCBzb21ldGhpbmcgZWxzZSBtaWdodCBkZWZpbmUKCQ
kgKglQQ0xaSVBfVEVNUE9SQVJZX0RJUiBiZWZvcmUgd2UgZ2V0IHRoZSBjaGFuY2UgYW5kIHRoZSBkaXJlY
3RvcnkgdGh1cyBkZWZpbmVkIG1heSBub3QKCQkgKgliZSB2YWxpZC93cml0YWJsZSAtIHVuZm9ydHVuYXRl
bHkgd2UgY25ub3QgZG8gYW55dGhpbmcgYWJvdXQgdGhhdCBvdGhlciB0aGFuIGZsYWcgdXAKCQkgKgl0aGU
gcG9zc2liaWxpdHkgYXMgYSB0cm91Ymxlc2hvb3RpbmcgaGludC4KCQkgKglUT0RPOiBDb25zaWRlciBoYX
ZpbmcgYSAic3VwcHJlc3Mgd2FybmluZ3MiIHBhcmFtZXRlciB0byBkZXRlcm1pbmUgd2hldGhlciBtZXRob
2RzCgkJICoJc2hvdWxkIGJlIGludm9rZWQgd2l0aCB3YXJuaW5ncyBzdXBwcmVzc2VkIG9yIG5vdC4gRm9y
IGlzX2F2YWlsYWJsZSgpIHVzYWdlIHdlIHdvdWxkCgkJICoJd2FudCB0byBzbyBhcyBub3QgdG8gcG90ZW5
0aWFsbHkgZmxvb2QgdGhlIFBIUCBlcnJvciBsb2cuIEZvciBvdGhlciBmdW5jdGlvbnMgdGhhdAoJCSAqCW
FyZSBub3QgY2FsbGVkIGZyZXF1ZW50bHkgd2UgbWlnaHQgbm90IHdhbnQgdG8gc3VwcHJlc3MgdGhlIHdhc
m5pbmdzLgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCQkkemlwX2ZpbGVuYW1lCVRoZSBuYW1lIG9mIHRo
ZSB6aXAgZmlsZSB0aGF0IHdpbGwgYmUgbWFuYWdlZAoJCSAqIAlAcGFyYW0JCWJvb2wJCSRsb2FkX29ubHk
JCVRydWUsIG9ubHkgbG9hZCB0aGUgcGNsemlwIGxpYnJhcnkKCQkgKglAcGFyYW0JCW1peGVkCQkkdGVtcG
RpcgkJU3RyaW5nLCB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHVzZSAobnVzdCBleGlzdCBhbmQgYmUgdXN1Y
WJsZSksIG51bGwgZm9yIGRlcml2ZQoJCSAqCUByZXR1cm4JCW51bGwKCQkgKgoJCSAqLwoJCXB1YmxpYyBm
dW5jdGlvbiBfX2NvbnN0cnVjdCggJHppcF9maWxlbmFtZSwgJGxvYWRfb25seSA9IGZhbHNlLCAkdG1wZGl
yID0gbnVsbCApIHsKCQkJCgkJCS8vIFJlbWVtYmVyIGlmIHdlIGhhdmUgbG9nZ2VkIHRoZSBwY2x6aXBfdG
VtcG9yYXJ5X2RpciB2YWx1ZSAtIHRoaXMgc3RvcHMKCQkJLy8gdXMgcmVwZWF0ZWRseSBsb2dnaW5nIGlmI
F93ZV8gbG9hZGVkIHBjbHppcCBvciBhZnRlciB0aGUgZmlyc3QgdGltZSB3ZQoJCQkvLyBsb2cgdGhlIHBj
bHppcF90ZW1wb3JhcnlfZGlyIHZhbHVlIGJlY2F1c2Ugc29tZXRoaW5nIGVsc2UgbG9hZGVkIHBjbHppcAo
JCQlzdGF0aWMgJGxvZ2dlZF90ZW1wZGlyID0gZmFsc2U7CgkJCgkJCS8vIFRoZSBQY2xaaXAgY2xhc3MgaG
FzIHRvIGJlIGF2YWlsYWJsZSBmb3IgdXMgc28gbGV0J3MgaGF2ZSBhIGdvCgkJCS8vIE5vdGU6IGl0IGlzI
G5vdCByZXF1aXJlZCBiZWNhdXNlIG5vdGhpbmcgd2lsbCBicmVhayB3aXRob3V0IGl0IGJ1dCB0aGUgbWV0
aG9kIHdpbGwgCgkJCS8vIHNpbXBseSBub3QgYmUgYXZhaWxhYmxlCgkJCS8vIFRoaXMgbWF5IHNlZW0gbGF
ib3Jpb3VzIGJ1dCBpdCdzIHJvYnVzdCBhZ2FpbnN0IGluY2x1ZGVfb25jZSBub3QgcGxheWluZyBuaWNlIG
lmIHRoZQoJCQkvLyBjbGFzcyBpcyBhbHJlYWR5IGluY2x1ZGVkIGFuZCB0cnlpbmcgdG8gaW5jbHVkZSBpd
CBhZ2FpbgoJCQlpZiAoICFAY2xhc3NfZXhpc3RzKCAnUGNsWmlwJywgZmFsc2UgKSApIHsKCQkJCgkJCQkk
cG9zc2libGVzID0gYXJyYXkoIEFCU1BBVEggLiAnd3AtYWRtaW4vaW5jbHVkZXMvY2xhc3MtcGNsemlwLnB
ocCcsIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9saWIvcGNsemlwL3BjbHppcC5waHAnIC
k7CgkJCQkKCQkJCWZvcmVhY2ggKCAkcG9zc2libGVzIGFzICRwb3NzaWJsZSkgewoJCQkJCgkJCQkJaWYgK
CBAaXNfcmVhZGFibGUoICRwb3NzaWJsZSApICkgewoJCQkJCQoJCQkJCQkvLyBGb3VuZCBvbmUgdGhhdCBz
aG91bGQgYmUgbG9hZGFibGUgc28gdHJ5IGl0IGFuZCB0aGVuIGJyZWFrIG91dAoJCQkJCQlwYl9iYWNrdXB
idWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdQQ0xaaXAgY2xhc3Mgbm90IGZvdW5kLiBBdHRlbXB0aW5nIH
RvIGxvYWQgZnJvbSBgJyAuICRwb3NzaWJsZSAuICdgLicgKTsKCgkJCQkJCS8vIFdlIGFyZSBnb2luZyB0b
yBsb2FkIHNvIGNoZWNrIGlmIHBjbHppcF90ZW1wb3JhcnlfZGlyIGlzIGFscmVhZHkKCQkJCQkJLy8gZGVm
aW5lZCBhbmQgaWYgaXQgaXMgd2UgaGF2ZSB0byB3YXJuIGJlY2F1c2UgaXQgKHByb2JhYmx5KSB3YXNuJ3Q
KCQkJCQkJLy8gc2V0IGJ5IHVzCgkJCQkJCWlmICggZGVmaW5lZCggJ1BDTFpJUF9URU1QT1JBUllfRElSJy
ApICkgewoJCQkJCQkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1BDT
FpJUF9URU1QT1JBUllfRElSIGFscmVhZHkgZGVmaW5lZCAoMSkgLSBtYXkgY2F1c2UgcHJvYmxlbXMgaWYg
dGhpcyBpcyBub3QgYXZhaWxhYmxlOiAnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJ2AnIC4gUENMWkl
QX1RFTVBPUkFSWV9ESVIgLiAnYCcpOwoJCQkJCQkKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQoJCQkJCQkJJH
RlbXBkaXIgPSAoIGlzX3N0cmluZyggJHRtcGRpciApICkgPyAkdG1wZGlyIDogZ2V0X3RlbXBfZGlyKCkgO
woJCQkJCQkKCQkJCQkJCWRlZmluZSggJ1BDTFpJUF9URU1QT1JBUllfRElSJywgJHRlbXBkaXIgKTsKCQkJ
CQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1BDTFpJUF9URU1QT1JBUllfREl
SIGRlZmluZWQ6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnYCcgLiBQQ0xaSVBfVEVNUE9SQVJZX0
RJUiAuICdgJyk7CgkJCQkJCQkKCQkJCQkJfQoJCQkJCQkKCQkJCQkJLy8gVGhpcyBzdG9wcyB1cyBsb2dna
W5nIGFnYWluIG9uIHJlcGVhdGVkIHVzZXMKCQkJCQkJJGxvZ2dlZF90ZW1wZGlyID0gdHJ1ZTsKCgkJCQkJ
CUBpbmNsdWRlX29uY2UoICRwb3NzaWJsZSApOwoJCQkJCQlicmVhazsKCQkJCQkJCQkJCQoJCQkJCX0gCgk
JCQkKCQkJCX0KCgkJCX0gZWxzZSB7CgkJCQkKCQkJCS8vIFRoZSBjbGFzcyBhbHJlYWR5IGV4aXN0cyBzby
B3ZSBtaWdodCBoYXZlIGxvYWRlZCBpdCBvciBzb21ldGhpbmcKCQkJCS8vIGVsc2UgbWlnaHQgaGF2ZSBsb
2FkZWQgaXQuIFdlJ2xsIGxvZyBQQ0xaSVBfVEVNUE9SQVJZX0RJUiB1bmxlc3MKCQkJCS8vIHdlIGFscmVh
ZHkgbG9nZ2VkIGl0IHdoaWNoIHdlIHdvdWxkIGhhdmUgZG9uZSBpZiB3ZSBsb2FkZWQgcGNsemlwCgkJCQl
pZiAoIGRlZmluZWQoICdQQ0xaSVBfVEVNUE9SQVJZX0RJUicgKSAmJiAoIGZhbHNlID09PSAkbG9nZ2VkX3
RlbXBkaXIgKSApIHsKCQkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fK
CdQQ0xaSVBfVEVNUE9SQVJZX0RJUiBhbHJlYWR5IGRlZmluZWQgKDIpIC0gbWF5IGNhdXNlIHByb2JsZW1z
IGlmIHRoaXMgaXMgbm90IGF2YWlsYWJsZTogJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICdgJyAuIFB
DTFpJUF9URU1QT1JBUllfRElSIC4gJ2AnKTsKCgkJCQkJLy8gTm93IHdlIGxvZ2dlZCBpdCBtYWtlIHN1cm
Ugd2UgZG9uJ3Qga2VlcCBkb2luZyBzbwoJCQkJCSRsb2dnZWRfdGVtcGRpciA9IHRydWU7CgoJCQkJfQoKC
QkJfQoJCQkKCQkJLy8gQnkgbm93IFBjbFppcCBfc2hvdWxkXyBiZSBhdmFpbGFibGUgc28gbGV0J3Mgc2Vl
Li4uCgkJCWlmICggQGNsYXNzX2V4aXN0cyggJ1BjbFppcCcsIGZhbHNlICkgKSB7CgkJCQoJCQkJLy8gSXQ
ncyBhdmFpbGFibGUgc28gY3JlYXRlIHRoZSBwcml2YXRlIGluc3RhbmNlIGlmIHJlcXVpcmVkCgkJCQlpZi
AoIGZhbHNlID09PSAkbG9hZF9vbmx5ICkgewoJCQkJCQoJCQkJCSR0aGlzLT5femEgPSBuZXcgUGNsWmlwK
CAkemlwX2ZpbGVuYW1lICk7CgkJCQkJCgkJCQl9CgkJCQkKCQkJfSBlbHNlIHsKCQkJCgkJCQkvLyBOb3Qg
YXZhaWxhYmxlIHNvIHRocm93IHRoZSBleGNlcHRpb24gZm9yIHRoZSBjYWxsZXIgdG8gaGFuZGxlCgkJCQl
0aHJvdyBuZXcgRXhjZXB0aW9uKCAnUGNsWmlwIGNsYXNzIGRvZXMgbm90IGV4aXN0LicgKTsKCQkJCgkJCX
0KCQkJCgkJCXJldHVybjsKCQkKCQl9CgkJCgkJLyoqCgkJICoJX19kZXN0cnVjdCgpCgkJICoJCgkJICoJR
GVmYXVsdCBkZXN0cnVjdG9yLgoJCSAqCQoJCSAqCUByZXR1cm4JCW51bGwKCQkgKgoJCSAqLwoJCXB1Ymxp
YyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkgewoJCQoJCQlpZiAoIG51bGwgIT0gJHRoaXMtPl96YSApIHsgdW5
zZXQgKCAkdGhpcy0+X3phICk7IH0KCQkJCgkJCXJldHVybjsKCQkKCQl9CgkJCgkJLy8gLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0KCQkvLyBGdW5jdGlvbiA6CgkJLy8gICBhZGQoJHBfZmlsZWxpc3QsICRwX2FkZF9kaXI9IiIs
ICRwX3JlbW92ZV9kaXI9IiIpCgkJLy8gICBhZGQoJHBfZmlsZWxpc3QsICRwX29wdGlvbiwgJHBfb3B0aW9
uX3ZhbHVlLCAuLi4pCgkJLy8gRGVzY3JpcHRpb24gOgoJCS8vICAgVGhpcyBtZXRob2Qgc3VwcG9ydHMgdH
dvIHN5bm9wc2lzLiBUaGUgZmlyc3Qgb25lIGlzIGhpc3RvcmljYWwuCgkJLy8gICBUaGlzIG1ldGhvZHMgY
WRkIHRoZSBsaXN0IG9mIGZpbGVzIGluIGFuIGV4aXN0aW5nIGFyY2hpdmUuCgkJLy8gICBJZiBhIGZpbGUg
d2l0aCB0aGUgc2FtZSBuYW1lIGFscmVhZHkgZXhpc3RzLCBpdCBpcyBhZGRlZCBhdCB0aGUgZW5kIG9mIHR
oZQoJCS8vICAgYXJjaGl2ZSwgdGhlIGZpcnN0IG9uZSBpcyBzdGlsbCBwcmVzZW50LgoJCS8vICAgSWYgdG
hlIGFyY2hpdmUgZG9lcyBub3QgZXhpc3QsIGl0IGlzIGNyZWF0ZWQuCgkJLy8gUGFyYW1ldGVycyA6CgkJL
y8gICAkcF9maWxlbGlzdCA6IEFuIGFycmF5IGNvbnRhaW5pbmcgZmlsZSBvciBkaXJlY3RvcnkgbmFtZXMs
IG9yCgkJLy8gICAgICAgICAgICAgICAgIGEgc3R
yaW5nIGNvbnRhaW5pbmcgb25lIGZpbGVuYW1lIG9yIG9uZSBkaXJlY3RvcnkgbmFtZSwgb3IKCQkvLyAgIC
AgICAgICAgICAgICAgYSBzdHJpbmcgY29udGFpbmluZyBhIGxpc3Qgb2YgZmlsZW5hbWVzIGFuZC9vciBka
XJlY3RvcnkKCQkvLyAgICAgICAgICAgICAgICAgbmFtZXMgc2VwYXJhdGVkIGJ5IHNwYWNlcy4KCQkvLyAg
ICRwX2FkZF9kaXIgOiBBIHBhdGggdG8gYWRkIGJlZm9yZSB0aGUgcmVhbCBwYXRoIG9mIHRoZSBhcmNoaXZ
lZCBmaWxlLAoJCS8vICAgICAgICAgICAgICAgIGluIG9yZGVyIHRvIGhhdmUgaXQgbWVtb3JpemVkIGluIH
RoZSBhcmNoaXZlLgoJCS8vICAgJHBfcmVtb3ZlX2RpciA6IEEgcGF0aCB0byByZW1vdmUgZnJvbSB0aGUgc
mVhbCBwYXRoIG9mIHRoZSBmaWxlIHRvIGFyY2hpdmUsCgkJLy8gICAgICAgICAgICAgICAgICAgaW4gb3Jk
ZXIgdG8gaGF2ZSBhIHNob3J0ZXIgcGF0aCBtZW1vcml6ZWQgaW4gdGhlIGFyY2hpdmUuCgkJLy8gICAgICA
gICAgICAgICAgICAgV2hlbiAkcF9hZGRfZGlyIGFuZCAkcF9yZW1vdmVfZGlyIGFyZSBzZXQsICRwX3JlbW
92ZV9kaXIKCQkvLyAgICAgICAgICAgICAgICAgICBpcyByZW1vdmVkIGZpcnN0LCBiZWZvcmUgJHBfYWRkX
2RpciBpcyBhZGRlZC4KCQkvLyBPcHRpb25zIDoKCQkvLyAgIFBDTFpJUF9PUFRfQUREX1BBVEggOgoJCS8v
ICAgUENMWklQX09QVF9SRU1PVkVfUEFUSCA6CgkJLy8gICBQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUEFUSCA
6CgkJLy8gICBQQ0xaSVBfT1BUX0NPTU1FTlQgOgoJCS8vICAgUENMWklQX09QVF9BRERfQ09NTUVOVCA6Cg
kJLy8gICBQQ0xaSVBfT1BUX1BSRVBFTkRfQ09NTUVOVCA6CgkJLy8gICBQQ0xaSVBfQ0JfUFJFX0FERCA6C
gkJLy8gICBQQ0xaSVBfQ0JfUE9TVF9BREQgOgoJCS8vIFJldHVybiBWYWx1ZXMgOgoJCS8vICAgMCBvbiBm
YWlsdXJlLAoJCS8vICAgVGhlIGxpc3Qgb2YgdGhlIGFkZGVkIGZpbGVzLCB3aXRoIGEgc3RhdHVzIG9mIHR
oZSBhZGQgYWN0aW9uLgoJCS8vICAgKHNlZSBQY2xaaXA6Omxpc3RDb250ZW50KCkgZm9yIGxpc3QgZW50cn
kgZm9ybWF0KQoJCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkJZnVuY3Rpb24gX2FkZCgkcF9maWxlbGlzdCkK
CQl7CgkJJHZfcmVzdWx0PTE7CgoJCS8vIC0tLS0tIFJlc2V0IHRoZSBlcnJvciBoYW5kbGVyCgkJJHRoaXM
tPl96YS0+cHJpdkVycm9yUmVzZXQoKTsKCgkJLy8gLS0tLS0gU2V0IGRlZmF1bHQgdmFsdWVzCgkJJHZfb3
B0aW9ucyA9IGFycmF5KCk7CgkJJHZfb3B0aW9uc1tQQ0xaSVBfT1BUX05PX0NPTVBSRVNTSU9OXSA9IEZBT
FNFOwoKCQkvLyAtLS0tLSBMb29rIGZvciB2YXJpYWJsZSBvcHRpb25zIGFyZ3VtZW50cwoJCSR2X3NpemUg
PSBmdW5jX251bV9hcmdzKCk7CgoJCS8vIC0tLS0tIExvb2sgZm9yIGFyZ3VtZW50cwoJCWlmICgkdl9zaXp
lID4gMSkgewoJCSAgLy8gLS0tLS0gR2V0IHRoZSBhcmd1bWVudHMKCQkgICR2X2FyZ19saXN0ID0gZnVuY1
9nZXRfYXJncygpOwoKCQkgIC8vIC0tLS0tIFJlbW92ZSBmb3JtIHRoZSBvcHRpb25zIGxpc3QgdGhlIGZpc
nN0IGFyZ3VtZW50CgkJICBhcnJheV9zaGlmdCgkdl9hcmdfbGlzdCk7CgkJICAkdl9zaXplLS07CgoJCSAg
Ly8gLS0tLS0gTG9vayBmb3IgZmlyc3QgYXJnCgkJICBpZiAoKGlzX2ludGVnZXIoJHZfYXJnX2xpc3RbMF0
pKSAmJiAoJHZfYXJnX2xpc3RbMF0gPiA3NzAwMCkpIHsKCgkJCS8vIC0tLS0tIFBhcnNlIHRoZSBvcHRpb2
5zCgkJCSR2X3Jlc3VsdCA9ICR0aGlzLT5femEtPnByaXZQYXJzZU9wdGlvbnMoJHZfYXJnX2xpc3QsICR2X
3NpemUsICR2X29wdGlvbnMsCgkJCQkJCQkJCQkJCWFycmF5IChQQ0xaSVBfT1BUX1JFTU9WRV9QQVRIID0+
ICdvcHRpb25hbCcsCgkJCQkJCQkJCQkJCQkgICBQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUEFUSCA9PiAnb3B
0aW9uYWwnLAoJCQkJCQkJCQkJCQkJICAgUENMWklQX09QVF9BRERfUEFUSCA9PiAnb3B0aW9uYWwnLAoJCQ
kJCQkJCQkJCQkJICAgUENMWklQX0NCX1BSRV9BREQgPT4gJ29wdGlvbmFsJywKCQkJCQkJCQkJCQkJCSAgI
FBDTFpJUF9DQl9QT1NUX0FERCA9PiAnb3B0aW9uYWwnLAoJCQkJCQkJCQkJCQkJICAgUENMWklQX09QVF9O
T19DT01QUkVTU0lPTiA9PiAnb3B0aW9uYWwnLAoJCQkJCQkJCQkJCQkJICAgUENMWklQX09QVF9DT01NRU5
UID0+ICdvcHRpb25hbCcsCgkJCQkJCQkJCQkJCQkgICBQQ0xaSVBfT1BUX0FERF9DT01NRU5UID0+ICdvcH
Rpb25hbCcsCgkJCQkJCQkJCQkJCQkgICBQQ0xaSVBfT1BUX1BSRVBFTkRfQ09NTUVOVCA9PiAnb3B0aW9uY
WwnLAoJCQkJCQkJCQkJCQkJICAgUENMWklQX09QVF9URU1QX0ZJTEVfVEhSRVNIT0xEID0+ICdvcHRpb25h
bCcsCgkJCQkJCQkJCQkJCQkgICBQQ0xaSVBfT1BUX1RFTVBfRklMRV9PTiA9PiAnb3B0aW9uYWwnLAoJCQk
JCQkJCQkJCQkJICAgUENMWklQX09QVF9URU1QX0ZJTEVfT0ZGID0+ICdvcHRpb25hbCcKCQkJCQkJCQkJCQ
kJCSAgIC8vLCBQQ0xaSVBfT1BUX0NSWVBUID0+ICdvcHRpb25hbCcKCQkJCQkJCQkJCQkJCSAgICkpOwoJC
QlpZiAoJHZfcmVzdWx0ICE9IDEpIHsKCQkJICByZXR1cm4gMDsKCQkJfQoJCSAgfQoKCQkgIC8vIC0tLS0t
IExvb2sgZm9yIDIgYXJncwoJCSAgLy8gSGVyZSB3ZSBuZWVkIHRvIHN1cHBvcnQgdGhlIGZpcnN0IGhpc3R
vcmljIHN5bm9wc2lzIG9mIHRoZQoJCSAgLy8gbWV0aG9kLgoJCSAgZWxzZSB7CgoJCQkvLyAtLS0tLSBHZX
QgdGhlIGZpcnN0IGFyZ3VtZW50CgkJCSR2X29wdGlvbnNbUENMWklQX09QVF9BRERfUEFUSF0gPSAkdl9hZ
GRfcGF0aCA9ICR2X2FyZ19saXN0WzBdOwoKCQkJLy8gLS0tLS0gTG9vayBmb3IgdGhlIG9wdGlvbmFsIHNl
Y29uZCBhcmd1bWVudAoJCQlpZiAoJHZfc2l6ZSA9PSAyKSB7CgkJCSAgJHZfb3B0aW9uc1tQQ0xaSVBfT1B
UX1JFTU9WRV9QQVRIXSA9ICR2X2FyZ19saXN0WzFdOwoJCQl9CgkJCWVsc2UgaWYgKCR2X3NpemUgPiAyKS
B7CgkJCSAgLy8gLS0tLS0gRXJyb3IgbG9nCgkJCSAgUGNsWmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSU
l9JTlZBTElEX1BBUkFNRVRFUiwgIkludmFsaWQgbnVtYmVyIC8gdHlwZSBvZiBhcmd1bWVudHMiKTsKCgkJ
CSAgLy8gLS0tLS0gUmV0dXJuCgkJCSAgcmV0dXJuIDA7CgkJCX0KCQkgIH0KCQl9CgoJCS8vIC0tLS0tIEx
vb2sgZm9yIGRlZmF1bHQgb3B0aW9uIHZhbHVlcwoJCSR0aGlzLT5femEtPnByaXZPcHRpb25EZWZhdWx0VG
hyZXNob2xkKCR2X29wdGlvbnMpOwoKCQkvLyAtLS0tLSBJbml0CgkJJHZfc3RyaW5nX2xpc3QgPSBhcnJhe
SgpOwoJCSR2X2F0dF9saXN0ID0gYXJyYXkoKTsKCQkkdl9maWxlZGVzY3JfbGlzdCA9IGFycmF5KCk7CgkJ
JHBfcmVzdWx0X2xpc3QgPSBhcnJheSgpOwoKCQkvLyAtLS0tLSBMb29rIGlmIHRoZSAkcF9maWxlbGlzdCB
pcyByZWFsbHkgYW4gYXJyYXkKCQlpZiAoaXNfYXJyYXkoJHBfZmlsZWxpc3QpKSB7CgoJCSAgLy8gLS0tLS
0gTG9vayBpZiB0aGUgZmlyc3QgZWxlbWVudCBpcyBhbHNvIGFuIGFycmF5CgkJICAvLyAgICAgICBUaGlzI
HdpbGwgbWVhbiB0aGF0IHRoaXMgaXMgYSBmaWxlIGRlc2NyaXB0aW9uIGVudHJ5CgkJICBpZiAoaXNzZXQo
JHBfZmlsZWxpc3RbMF0pICYmIGlzX2FycmF5KCRwX2ZpbGVsaXN0WzBdKSkgewoJCQkkdl9hdHRfbGlzdCA
9ICRwX2ZpbGVsaXN0OwoJCSAgfQoKCQkgIC8vIC0tLS0tIFRoZSBsaXN0IGlzIGEgbGlzdCBvZiBzdHJpbm
cgbmFtZXMKCQkgIGVsc2UgewoJCQkkdl9zdHJpbmdfbGlzdCA9ICRwX2ZpbGVsaXN0OwoJCSAgfQoJCX0KC
gkJLy8gLS0tLS0gTG9vayBpZiB0aGUgJHBfZmlsZWxpc3QgaXMgYSBzdHJpbmcKCQllbHNlIGlmIChpc19z
dHJpbmcoJHBfZmlsZWxpc3QpKSB7CgkJICAvLyAtLS0tLSBDcmVhdGUgYSBsaXN0IGZyb20gdGhlIHN0cml
uZwoJCSAgJHZfc3RyaW5nX2xpc3QgPSBleHBsb2RlKFBDTFpJUF9TRVBBUkFUT1IsICRwX2ZpbGVsaXN0KT
sKCQl9CgoJCS8vIC0tLS0tIEludmFsaWQgdmFyaWFibGUgdHlwZSBmb3IgJHBfZmlsZWxpc3QKCQllbHNlI
HsKCQkgIFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfSU5WQUxJRF9QQVJBTUVURVIsICJJbnZh
bGlkIHZhcmlhYmxlIHR5cGUgJyIuZ2V0dHlwZSgkcF9maWxlbGlzdCkuIicgZm9yIHBfZmlsZWxpc3QiKTs
KCQkgIHJldHVybiAwOwoJCX0KCgkJLy8gLS0tLS0gUmVmb3JtYXQgdGhlIHN0cmluZyBsaXN0CgkJaWYgKH
NpemVvZigkdl9zdHJpbmdfbGlzdCkgIT0gMCkgewoJCSAgZm9yZWFjaCAoJHZfc3RyaW5nX2xpc3QgYXMgJ
HZfc3RyaW5nKSB7CgkJCSR2X2F0dF9saXN0W11bUENMWklQX0FUVF9GSUxFX05BTUVdID0gJHZfc3RyaW5n
OwoJCSAgfQoJCX0KCgkJLy8gLS0tLS0gRm9yIGVhY2ggZmlsZSBpbiB0aGUgbGlzdCBjaGVjayB0aGUgYXR
0cmlidXRlcwoJCSR2X3N1cHBvcnRlZF9hdHRyaWJ1dGVzCgkJPSBhcnJheSAoIFBDTFpJUF9BVFRfRklMRV
9OQU1FID0+ICdtYW5kYXRvcnknCgkJCQkgLFBDTFpJUF9BVFRfRklMRV9ORVdfU0hPUlRfTkFNRSA9PiAnb
3B0aW9uYWwnCgkJCQkgLFBDTFpJUF9BVFRfRklMRV9ORVdfRlVMTF9OQU1FID0+ICdvcHRpb25hbCcKCQkJ
CSAsUENMWklQX0FUVF9GSUxFX01USU1FID0+ICdvcHRpb25hbCcKCQkJCSAsUENMWklQX0FUVF9GSUxFX0N
PTlRFTlQgPT4gJ29wdGlvbmFsJwoJCQkJICxQQ0xaSVBfQVRUX0ZJTEVfQ09NTUVOVCA9PiAnb3B0aW9uYW
wnCgkJCQkJCQkpOwoJCWZvcmVhY2ggKCR2X2F0dF9saXN0IGFzICR2X2VudHJ5KSB7CgkJICAkdl9yZXN1b
HQgPSAkdGhpcy0+X3phLT5wcml2RmlsZURlc2NyUGFyc2VBdHQoJHZfZW50cnksCgkJCQkJCQkJCQkJCSAg
ICR2X2ZpbGVkZXNjcl9saXN0W10sCgkJCQkJCQkJCQkJCSAgICR2X29wdGlvbnMsCgkJCQkJCQkJCQkJCSA
gICR2X3N1cHBvcnRlZF9hdHRyaWJ1dGVzKTsKCQkgIGlmICgkdl9yZXN1bHQgIT0gMSkgewoJCQlyZXR1cm
4gMDsKCQkgIH0KCQl9CgoJCS8vIC0tLS0tIEV4cGFuZCB0aGUgZmlsZWxpc3QgKGV4cGFuZCBkaXJlY3Rvc
mllcykKCQkkdl9yZXN1bHQgPSAkdGhpcy0+X3phLT5wcml2RmlsZURlc2NyRXhwYW5kKCR2X2ZpbGVkZXNj
cl9saXN0LCAkdl9vcHRpb25zKTsKCQlpZiAoJHZfcmVzdWx0ICE9IDEpIHsKCQkgIHJldHVybiAwOwoJCX0
KCgkJLy8gLS0tLS0gQ2FsbCB0aGUgY3JlYXRlIGZjdAoJCSR2X3Jlc3VsdCA9ICR0aGlzLT5wcml2QWRkKC
R2X2ZpbGVkZXNjcl9saXN0LCAkcF9yZXN1bHRfbGlzdCwgJHZfb3B0aW9ucyk7CgkJaWYgKCR2X3Jlc3Vsd
CAhPSAxKSB7CgkJICByZXR1cm4gMDsKCQl9CgoJCS8vIC0tLS0tIFJldHVybgoJCXJldHVybiAkcF9yZXN1
bHRfbGlzdDsKCQl9CgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KC
QkvLyBGdW5jdGlvbiA6IHByaXZBZGQoKQoJCS8vIERlc2NyaXB0aW9uIDoKCQkvLyBQYXJhbWV0ZXJzIDoK
CQkvLyBSZXR1cm4gVmFsdWVzIDoKCQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCWZ1bmN0aW9uIHByaXZBZG
QoJHBfZmlsZWRlc2NyX2xpc3QsICYkcF9yZXN1bHRfbGlzdCwgJiRwX29wdGlvbnMpCgkJewoJCSR2X3Jlc
3VsdD0xOwoJCSR2X2xpc3RfZGV0YWlsID0gYXJyYXkoKTsKCgkJLy8gLS0tLS0gTG9vayBpZiB0aGUgYXJj
aGl2ZSBleGlzdHMgb3IgaXMgZW1wdHkKCQlpZiAoKCFpc19maWxlKCR0aGlzLT5femEtPnppcG5hbWUpKSB
8fCAoZmlsZXNpemUoJHRoaXMtPl96YS0+emlwbmFtZSkgPT0gMCkpCgkJewoKCQkgIC8vIC0tLS0tIERvIG
EgY3JlYXRlCgkJICAkdl9yZXN1bHQgPSAkdGhpcy0+X3phLT5wcml2Q3JlYXRlKCRwX2ZpbGVkZXNjcl9sa
XN0LCAkcF9yZXN1bHRfbGlzdCwgJHBfb3B0aW9ucyk7CgoJCSAgLy8gLS0tLS0gUmV0dXJuCgkJICByZXR1
cm4gJHZfcmVzdWx0OwoJCX0KCQkvLyAtLS0tLSBNYWdpYyBxdW90ZXMgdHJpY2sKCQkkdGhpcy0+X3phLT5
wcml2RGlzYWJsZU1hZ2ljUXVvdGVzKCk7CgoJCS8vIC0tLS0tIE9wZW4gdGhlIHppcCBmaWxlCgkJaWYgKC
gkdl9yZXN1bHQ9JHRoaXMtPl96YS0+cHJpdk9wZW5GZCgncmInKSkgIT0gMSkKCQl7CgkJICAvLyAtLS0tL
SBNYWdpYyBxdW90ZXMgdHJpY2sKCQkgICR0aGlzLT5femEtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7
CgoJCSAgLy8gLS0tLS0gUmV0dXJuCgkJICByZXR1cm4gJHZfcmVzdWx0OwoJCX0KCgkJLy8gLS0tLS0gUmV
hZCB0aGUgY2VudHJhbCBkaXJlY3RvcnkgaW5mb3JtYXRpb25zCgkJJHZfY2VudHJhbF9kaXIgPSBhcnJheS
gpOwoJCWlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPl96YS0+cHJpdlJlYWRFbmRDZW50cmFsRGlyKCR2X2Nlb
nRyYWxfZGlyKSkgIT0gMSkKCQl7CgkJICAkdGhpcy0+X3phLT5wcml2Q2xvc2VGZCgpOwoJCSAgJHRoaXMt
Pl96YS0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCQkgIHJldHVybiAkdl9yZXN1bHQ7CgkJfQoKCQk
vLyAtLS0tLSBHbyB0byBiZWdpbm5pbmcgb2YgRmlsZQoJCUByZXdpbmQoJHRoaXMtPl96YS0+emlwX2ZkKT
sKCgkJLy8gLS0tLS0gQ3JlYXRlcyBhIHRlbXBvcmF5IGZpbGUKCQkkdl96aXBfdGVtcF9uYW1lID0gUENMW
klQX1RFTVBPUkFSWV9ESVIudW5pcWlkKCdwY2x6aXAtJykuJy50bXAnOwoKCQkvLyAtLS0tLSBPcGVuIHRo
ZSB0ZW1wb3JhcnkgZmlsZSBpbiB3cml0ZSBtb2RlCgkJaWYgKCgkdl96aXBfdGVtcF9mZCA9IEBmb3Blbig
kdl96aXBfdGVtcF9uYW1lLCAnd2InKSkgPT0gMCkKCQl7CgkJICAkdGhpcy0+X3phLT5wcml2Q2xvc2VGZC
gpOwoJCSAgJHRoaXMtPl96YS0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCgkJICBQY2xaaXA6OnBya
XZFcnJvckxvZyhQQ0xaSVBfRVJSX1JFQURfT1BFTl9GQUlMLCAnVW5hYmxlIHRvIG9wZW4gdGVtcG9yYXJ5
IGZpbGUgXCcnLiR2X3ppcF90ZW1wX25hbWUuJ1wnIGluIGJpbmFyeSB3cml0ZSBtb2RlJyk7CgoJCSAgLy8
gLS0tLS0gUmV0dXJuCgkJICByZXR1cm4gUGNsWmlwOjplcnJvckNvZGUoKTsKCQl9CgoJCS8vIC0tLS0tIE
NvcHkgdGhlIGZpbGVzIGZyb20gdGhlIGFyY2hpdmUgdG8gdGhlIHRlbXBvcmFyeSBmaWxlCgkJLy8gVEJDI
DogSGVyZSBJIHNob3VsZCBiZXR0ZXIgYXBwZW5kIHRoZSBmaWxlIGFuZCBnbyBiYWNrIHRvIGVyYXNlIHRo
ZSBjZW50cmFsIGRpcgoJCSR2X3NpemUgPSAkdl9jZW50cmFsX2Rpclsnb2Zmc2V0J107CgkJd2hpbGUgKCR
2X3NpemUgIT0gMCkKCQl7CgkJICAkdl9yZWFkX3
NpemUgPSAoJHZfc2l6ZSA8IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUgPyAkdl9zaXplIDogUENMWklQX1JFQ
URfQkxPQ0tfU0laRSk7CgkJICAkdl9idWZmZXIgPSBmcmVhZCgkdGhpcy0+X3phLT56aXBfZmQsICR2X3Jl
YWRfc2l6ZSk7CgkJICBAZndyaXRlKCR2X3ppcF90ZW1wX2ZkLCAkdl9idWZmZXIsICR2X3JlYWRfc2l6ZSk
7CgkJICAkdl9zaXplIC09ICR2X3JlYWRfc2l6ZTsKCQl9CgoJCS8vIC0tLS0tIFN3YXAgdGhlIGZpbGUgZG
VzY3JpcHRvcgoJCS8vIEhlcmUgaXMgYSB0cmljayA6IEkgc3dhcCB0aGUgdGVtcG9yYXJ5IGZkIHdpdGggd
GhlIHppcCBmZCwgaW4gb3JkZXIgdG8gdXNlCgkJLy8gdGhlIGZvbGxvd2luZyBtZXRob2RzIG9uIHRoZSB0
ZW1wb3JhcnkgZmlsIGFuZCBub3QgdGhlIHJlYWwgYXJjaGl2ZQoJCSR2X3N3YXAgPSAkdGhpcy0+X3phLT5
6aXBfZmQ7CgkJJHRoaXMtPl96YS0+emlwX2ZkID0gJHZfemlwX3RlbXBfZmQ7CgkJJHZfemlwX3RlbXBfZm
QgPSAkdl9zd2FwOwoKCQkvLyAtLS0tLSBBZGQgdGhlIGZpbGVzCgkJJHZfaGVhZGVyX2xpc3QgPSBhcnJhe
SgpOwoJCWlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPl96YS0+cHJpdkFkZEZpbGVMaXN0KCRwX2ZpbGVkZXNj
cl9saXN0LCAkdl9oZWFkZXJfbGlzdCwgJHBfb3B0aW9ucykpICE9IDEpCgkJewoJCSAgZmNsb3NlKCR2X3p
pcF90ZW1wX2ZkKTsKCQkgICR0aGlzLT5femEtPnByaXZDbG9zZUZkKCk7CgkJICBAdW5saW5rKCR2X3ppcF
90ZW1wX25hbWUpOwoJCSAgJHRoaXMtPl96YS0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCgkJICAvL
yAtLS0tLSBSZXR1cm4KCQkgIHJldHVybiAkdl9yZXN1bHQ7CgkJfQoKCQkvLyAtLS0tLSBTdG9yZSB0aGUg
b2Zmc2V0IG9mIHRoZSBjZW50cmFsIGRpcgoJCSR2X29mZnNldCA9IEBmdGVsbCgkdGhpcy0+X3phLT56aXB
fZmQpOwoKCQkvLyAtLS0tLSBDb3B5IHRoZSBibG9jayBvZiBmaWxlIGhlYWRlcnMgZnJvbSB0aGUgb2xkIG
FyY2hpdmUKCQkkdl9zaXplID0gJHZfY2VudHJhbF9kaXJbJ3NpemUnXTsKCQl3aGlsZSAoJHZfc2l6ZSAhP
SAwKQoJCXsKCQkgICR2X3JlYWRfc2l6ZSA9ICgkdl9zaXplIDwgUENMWklQX1JFQURfQkxPQ0tfU0laRSA/
ICR2X3NpemUgOiBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFKTsKCQkgICR2X2J1ZmZlciA9IEBmcmVhZCgkdl9
6aXBfdGVtcF9mZCwgJHZfcmVhZF9zaXplKTsKCQkgIEBmd3JpdGUoJHRoaXMtPl96YS0+emlwX2ZkLCAkdl
9idWZmZXIsICR2X3JlYWRfc2l6ZSk7CgkJICAkdl9zaXplIC09ICR2X3JlYWRfc2l6ZTsKCQl9CgoJCS8vI
C0tLS0tIENyZWF0ZSB0aGUgQ2VudHJhbCBEaXIgZmlsZXMgaGVhZGVyCgkJZm9yICgkaT0wLCAkdl9jb3Vu
dD0wOyAkaTxzaXplb2YoJHZfaGVhZGVyX2xpc3QpOyAkaSsrKQoJCXsKCQkgIC8vIC0tLS0tIENyZWF0ZSB
0aGUgZmlsZSBoZWFkZXIKCQkgIGlmICgkdl9oZWFkZXJfbGlzdFskaV1bJ3N0YXR1cyddID09ICdvaycpIH
sKCQkJaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+X3phLT5wcml2V3JpdGVDZW50cmFsRmlsZUhlYWRlcigkd
l9oZWFkZXJfbGlzdFskaV0pKSAhPSAxKSB7CgkJCSAgZmNsb3NlKCR2X3ppcF90ZW1wX2ZkKTsKCQkJICAk
dGhpcy0+X3phLT5wcml2Q2xvc2VGZCgpOwoJCQkgIEB1bmxpbmsoJHZfemlwX3RlbXBfbmFtZSk7CgkJCSA
gJHRoaXMtPl96YS0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCgkJCSAgLy8gLS0tLS0gUmV0dXJuCg
kJCSAgcmV0dXJuICR2X3Jlc3VsdDsKCQkJfQoJCQkkdl9jb3VudCsrOwoJCSAgfQoKCQkgIC8vIC0tLS0tI
FRyYW5zZm9ybSB0aGUgaGVhZGVyIHRvIGEgJ3VzYWJsZScgaW5mbwoJCSAgJHRoaXMtPl96YS0+cHJpdkNv
bnZlcnRIZWFkZXIyRmlsZUluZm8oJHZfaGVhZGVyX2xpc3RbJGldLCAkcF9yZXN1bHRfbGlzdFskaV0pOwo
JCX0KCgkJLy8gLS0tLS0gWmlwIGZpbGUgY29tbWVudAoJCSR2X2NvbW1lbnQgPSAkdl9jZW50cmFsX2Rpcl
snY29tbWVudCddOwoJCWlmIChpc3NldCgkcF9vcHRpb25zW1BDTFpJUF9PUFRfQ09NTUVOVF0pKSB7CgkJI
CAkdl9jb21tZW50ID0gJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0NPTU1FTlRdOwoJCX0KCQlpZiAoaXNzZXQo
JHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0FERF9DT01NRU5UXSkpIHsKCQkgICR2X2NvbW1lbnQgPSAkdl9jb21
tZW50LiRwX29wdGlvbnNbUENMWklQX09QVF9BRERfQ09NTUVOVF07CgkJfQoJCWlmIChpc3NldCgkcF9vcH
Rpb25zW1BDTFpJUF9PUFRfUFJFUEVORF9DT01NRU5UXSkpIHsKCQkgICR2X2NvbW1lbnQgPSAkcF9vcHRpb
25zW1BDTFpJUF9PUFRfUFJFUEVORF9DT01NRU5UXS4kdl9jb21tZW50OwoJCX0KCgkJLy8gLS0tLS0gQ2Fs
Y3VsYXRlIHRoZSBzaXplIG9mIHRoZSBjZW50cmFsIGhlYWRlcgoJCSR2X3NpemUgPSBAZnRlbGwoJHRoaXM
tPl96YS0+emlwX2ZkKS0kdl9vZmZzZXQ7CgoJCS8vIC0tLS0tIENyZWF0ZSB0aGUgY2VudHJhbCBkaXIgZm
9vdGVyCgkJaWYgKCgkdl9yZXN1bHQgPSAkdGhpcy0+X3phLT5wcml2V3JpdGVDZW50cmFsSGVhZGVyKCR2X
2NvdW50KyR2X2NlbnRyYWxfZGlyWydlbnRyaWVzJ10sICR2X3NpemUsICR2X29mZnNldCwgJHZfY29tbWVu
dCkpICE9IDEpCgkJewoJCSAgLy8gLS0tLS0gUmVzZXQgdGhlIGZpbGUgbGlzdAoJCSAgdW5zZXQoJHZfaGV
hZGVyX2xpc3QpOwoJCSAgJHRoaXMtPl96YS0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCgkJICAvLy
AtLS0tLSBSZXR1cm4KCQkgIHJldHVybiAkdl9yZXN1bHQ7CgkJfQoKCQkvLyAtLS0tLSBTd2FwIGJhY2sgd
GhlIGZpbGUgZGVzY3JpcHRvcgoJCSR2X3N3YXAgPSAkdGhpcy0+X3phLT56aXBfZmQ7CgkJJHRoaXMtPl96
YS0+emlwX2ZkID0gJHZfemlwX3RlbXBfZmQ7CgkJJHZfemlwX3RlbXBfZmQgPSAkdl9zd2FwOwoKCQkvLyA
tLS0tLSBDbG9zZQoJCSR0aGlzLT5femEtPnByaXZDbG9zZUZkKCk7CgoJCS8vIC0tLS0tIENsb3NlIHRoZS
B0ZW1wb3JhcnkgZmlsZQoJCUBmY2xvc2UoJHZfemlwX3RlbXBfZmQpOwoKCQkvLyAtLS0tLSBNYWdpYyBxd
W90ZXMgdHJpY2sKCQkkdGhpcy0+X3phLT5wcml2U3dhcEJhY2tNYWdpY1F1b3RlcygpOwoKCQkvLyAtLS0t
LSBEZWxldGUgdGhlIHppcCBmaWxlCgkJLy8gVEJDIDogSSBzaG91bGQgdGVzdCB0aGUgcmVzdWx0IC4uLgo
JCUB1bmxpbmsoJHRoaXMtPl96YS0+emlwbmFtZSk7CgoJCS8vIC0tLS0tIFJlbmFtZSB0aGUgdGVtcG9yYX
J5IGZpbGUKCQkvLyBUQkMgOiBJIHNob3VsZCB0ZXN0IHRoZSByZXN1bHQgLi4uCgkJLy9AcmVuYW1lKCR2X
3ppcF90ZW1wX25hbWUsICR0aGlzLT56aXBuYW1lKTsKCQlQY2xaaXBVdGlsUmVuYW1lKCR2X3ppcF90ZW1w
X25hbWUsICR0aGlzLT5femEtPnppcG5hbWUpOwoKCQkvLyAtLS0tLSBSZXR1cm4KCQlyZXR1cm4gJHZfcmV
zdWx0OwoJCX0KCQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCS8v
IEZ1bmN0aW9uIDoKCQkvLyAgIGdyb3coJHBfZmlsZWxpc3QsICRwX2FkZF9kaXI9IiIsICRwX3JlbW92ZV9
kaXI9IiIpCgkJLy8gICBncm93KCRwX2ZpbGVsaXN0LCAkcF9vcHRpb24sICRwX29wdGlvbl92YWx1ZSwgLi
4uKQoJCS8vIERlc2NyaXB0aW9uIDoKCQkvLyAgIFRoaXMgbWV0aG9kIHN1cHBvcnRzIHR3byBzeW5vcHNpc
y4gVGhlIGZpcnN0IG9uZSBpcyBoaXN0b3JpY2FsLgoJCS8vICAgVGhpcyBtZXRob2RzIGFkZCB0aGUgbGlz
dCBvZiBmaWxlcyBpbiBhbiBleGlzdGluZyBhcmNoaXZlLgoJCS8vICAgSWYgYSBmaWxlIHdpdGggdGhlIHN
hbWUgbmFtZSBhbHJlYWR5IGV4aXN0cywgaXQgaXMgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUKCQkvLyAgIG
FyY2hpdmUsIHRoZSBmaXJzdCBvbmUgaXMgc3RpbGwgcHJlc2VudC4KCQkvLyAgIElmIHRoZSBhcmNoaXZlI
GRvZXMgbm90IGV4aXN0LCBpdCBpcyBjcmVhdGVkLgoJCS8vIFBhcmFtZXRlcnMgOgoJCS8vICAgJHBfZmls
ZWxpc3QgOiBBbiBhcnJheSBjb250YWluaW5nIGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzLCBvcgoJCS8vICA
gICAgICAgICAgICAgICBhIHN0cmluZyBjb250YWluaW5nIG9uZSBmaWxlbmFtZSBvciBvbmUgZGlyZWN0b3
J5IG5hbWUsIG9yCgkJLy8gICAgICAgICAgICAgICAgIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSBsaXN0IG9mI
GZpbGVuYW1lcyBhbmQvb3IgZGlyZWN0b3J5CgkJLy8gICAgICAgICAgICAgICAgIG5hbWVzIHNlcGFyYXRl
ZCBieSBzcGFjZXMuCgkJLy8gICAkcF9hZGRfZGlyIDogQSBwYXRoIHRvIGFkZCBiZWZvcmUgdGhlIHJlYWw
gcGF0aCBvZiB0aGUgYXJjaGl2ZWQgZmlsZSwKCQkvLyAgICAgICAgICAgICAgICBpbiBvcmRlciB0byBoYX
ZlIGl0IG1lbW9yaXplZCBpbiB0aGUgYXJjaGl2ZS4KCQkvLyAgICRwX3JlbW92ZV9kaXIgOiBBIHBhdGggd
G8gcmVtb3ZlIGZyb20gdGhlIHJlYWwgcGF0aCBvZiB0aGUgZmlsZSB0byBhcmNoaXZlLAoJCS8vICAgICAg
ICAgICAgICAgICAgIGluIG9yZGVyIHRvIGhhdmUgYSBzaG9ydGVyIHBhdGggbWVtb3JpemVkIGluIHRoZSB
hcmNoaXZlLgoJCS8vICAgICAgICAgICAgICAgICAgIFdoZW4gJHBfYWRkX2RpciBhbmQgJHBfcmVtb3ZlX2
RpciBhcmUgc2V0LCAkcF9yZW1vdmVfZGlyCgkJLy8gICAgICAgICAgICAgICAgICAgaXMgcmVtb3ZlZCBma
XJzdCwgYmVmb3JlICRwX2FkZF9kaXIgaXMgYWRkZWQuCgkJLy8gT3B0aW9ucyA6CgkJLy8gICBQQ0xaSVBf
T1BUX0FERF9QQVRIIDoKCQkvLyAgIFBDTFpJUF9PUFRfUkVNT1ZFX1BBVEggOgoJCS8vICAgUENMWklQX09
QVF9SRU1PVkVfQUxMX1BBVEggOgoJCS8vICAgUENMWklQX09QVF9DT01NRU5UIDoKCQkvLyAgIFBDTFpJUF
9PUFRfQUREX0NPTU1FTlQgOgoJCS8vICAgUENMWklQX09QVF9QUkVQRU5EX0NPTU1FTlQgOgoJCS8vICAgU
ENMWklQX0NCX1BSRV9BREQgOgoJCS8vICAgUENMWklQX0NCX1BPU1RfQUREIDoKCQkvLyBSZXR1cm4gVmFs
dWVzIDoKCQkvLyAgIDAgb24gZmFpbHVyZSwKCQkvLyAgIFRoZSBsaXN0IG9mIHRoZSBhZGRlZCBmaWxlcyw
gd2l0aCBhIHN0YXR1cyBvZiB0aGUgYWRkIGFjdGlvbi4KCQkvLyAgIChzZWUgUGNsWmlwOjpsaXN0Q29udG
VudCgpIGZvciBsaXN0IGVudHJ5IGZvcm1hdCkKCQkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCWZ1bmN0aW9u
IF9ncm93KCRwX2ZpbGVsaXN0KQoJCXsKCQkkdl9yZXN1bHQ9MTsKCgkJLy8gLS0tLS0gUmVzZXQgdGhlIGV
ycm9yIGhhbmRsZXIKCQkkdGhpcy0+X3phLT5wcml2RXJyb3JSZXNldCgpOwoKCQkvLyAtLS0tLSBTZXQgZG
VmYXVsdCB2YWx1ZXMKCQkkdl9vcHRpb25zID0gYXJyYXkoKTsKCQkkdl9vcHRpb25zW1BDTFpJUF9PUFRfT
k9fQ09NUFJFU1NJT05dID0gRkFMU0U7CgoJCS8vIC0tLS0tIExvb2sgZm9yIHZhcmlhYmxlIG9wdGlvbnMg
YXJndW1lbnRzCgkJJHZfc2l6ZSA9IGZ1bmNfbnVtX2FyZ3MoKTsKCgkJLy8gLS0tLS0gTG9vayBmb3IgYXJ
ndW1lbnRzCgkJaWYgKCR2X3NpemUgPiAxKSB7CgkJICAvLyAtLS0tLSBHZXQgdGhlIGFyZ3VtZW50cwoJCS
AgJHZfYXJnX2xpc3QgPSBmdW5jX2dldF9hcmdzKCk7CgoJCSAgLy8gLS0tLS0gUmVtb3ZlIGZvcm0gdGhlI
G9wdGlvbnMgbGlzdCB0aGUgZmlyc3QgYXJndW1lbnQKCQkgIGFycmF5X3NoaWZ0KCR2X2FyZ19saXN0KTsK
CQkgICR2X3NpemUtLTsKCgkJICAvLyAtLS0tLSBMb29rIGZvciBmaXJzdCBhcmcKCQkgIGlmICgoaXNfaW5
0ZWdlcigkdl9hcmdfbGlzdFswXSkpICYmICgkdl9hcmdfbGlzdFswXSA+IDc3MDAwKSkgewoKCQkJLy8gLS
0tLS0gUGFyc2UgdGhlIG9wdGlvbnMKCQkJJHZfcmVzdWx0ID0gJHRoaXMtPl96YS0+cHJpdlBhcnNlT3B0a
W9ucygkdl9hcmdfbGlzdCwgJHZfc2l6ZSwgJHZfb3B0aW9ucywKCQkJCQkJCQkJCQkJYXJyYXkgKFBDTFpJ
UF9PUFRfUkVNT1ZFX1BBVEggPT4gJ29wdGlvbmFsJywKCQkJCQkJCQkJCQkJCSAgIFBDTFpJUF9PUFRfUkV
NT1ZFX0FMTF9QQVRIID0+ICdvcHRpb25hbCcsCgkJCQkJCQkJCQkJCQkgICBQQ0xaSVBfT1BUX0FERF9QQV
RIID0+ICdvcHRpb25hbCcsCgkJCQkJCQkJCQkJCQkgICBQQ0xaSVBfQ0JfUFJFX0FERCA9PiAnb3B0aW9uY
WwnLAoJCQkJCQkJCQkJCQkJICAgUENMWklQX0NCX1BPU1RfQUREID0+ICdvcHRpb25hbCcsCgkJCQkJCQkJ
CQkJCQkgICBQQ0xaSVBfT1BUX05PX0NPTVBSRVNTSU9OID0+ICdvcHRpb25hbCcsCgkJCQkJCQkJCQkJCQk
gICBQQ0xaSVBfT1BUX0NPTU1FTlQgPT4gJ29wdGlvbmFsJywKCQkJCQkJCQkJCQkJCSAgIFBDTFpJUF9PUF
RfQUREX0NPTU1FTlQgPT4gJ29wdGlvbmFsJywKCQkJCQkJCQkJCQkJCSAgIFBDTFpJUF9PUFRfUFJFUEVOR
F9DT01NRU5UID0+ICdvcHRpb25hbCcsCgkJCQkJCQkJCQkJCQkgICBQQ0xaSVBfT1BUX1RFTVBfRklMRV9U
SFJFU0hPTEQgPT4gJ29wdGlvbmFsJywKCQkJCQkJCQkJCQkJCSAgIFBDTFpJUF9PUFRfVEVNUF9GSUxFX09
OID0+ICdvcHRpb25hbCcsCgkJCQkJCQkJCQkJCQkgICBQQ0xaSVBfT1BUX1RFTVBfRklMRV9PRkYgPT4gJ2
9wdGlvbmFsJwoJCQkJCQkJCQkJCQkJICAgLy8sIFBDTFpJUF9PUFRfQ1JZUFQgPT4gJ29wdGlvbmFsJwoJC
QkJCQkJCQkJCQkJICAgKSk7CgkJCWlmICgkdl9yZXN1bHQgIT0gMSkgewoJCQkgIHJldHVybiAwOwoJCQl9
CgkJICB9CgoJCSAgLy8gLS0tLS0gTG9vayBmb3IgMiBhcmdzCgkJICAvLyBIZXJlIHdlIG5lZWQgdG8gc3V
wcG9ydCB0aGUgZmlyc3QgaGlzdG9yaWMgc3lub3BzaXMgb2YgdGhlCgkJICAvLyBtZXRob2QuCgkJICBlbH
NlIHsKCgkJCS8vIC0tLS0tIEdldCB0aGUgZmlyc3QgYXJndW1lbnQKCQkJJHZfb3B0aW9uc1tQQ0xaSVBfT
1BUX0FERF9QQVRIXSA9ICR2X2FkZF9wYXRoID0gJHZfYXJnX2xpc3RbMF07CgoJCQkvLyAtLS0tLSBMb29r
IGZvciB0aGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50CgkJCWlmICgkdl9zaXplID09IDIpIHsKCQkJICA
kdl9vcHRpb25zW1BDTFpJUF9PUFRfUkVNT1ZFX1BBVEhdID0gJHZfYXJnX2xpc3RbMV07CgkJCX0KCQkJZW
xzZSBpZiAoJHZfc2l6ZSA+IDIpIHsKCQkJICAvLyAtLS0tLSBFcnJvciBsb2cKCQkJICBQY2xaaXA6OnBya
XZFcnJvckxvZyhQQ0xaSVBfRVJSX0lOVkFMSURfUEFSQU1FVEVSLCAiSW52YWxpZCBudW1iZXIgLyB0eXBl
IG9mIGFyZ3VtZW50cyIpOwoKCQkJICAvLyAtLS0tLSBSZXR1cm4KCQkJICByZXR1cm4gMDsKCQkJfQoJCSA
gfQoJCX0KCgkJLy8gLS0tLS0gTG9vayBmb3IgZGVmYXVsdCBvcHRpb24gdmFsdWVzCgkJJHRoaXMtPl96YS
0+cHJpdk9wdGlvbkRlZmF1bHRUaHJlc2hvbGQoJ
HZfb3B0aW9ucyk7CgoJCS8vIC0tLS0tIEluaXQKCQkkdl9zdHJpbmdfbGlzdCA9IGFycmF5KCk7CgkJJHZf
YXR0X2xpc3QgPSBhcnJheSgpOwoJCSR2X2ZpbGVkZXNjcl9saXN0ID0gYXJyYXkoKTsKCQkkcF9yZXN1bHR
fbGlzdCA9IGFycmF5KCk7CgoJCS8vIC0tLS0tIExvb2sgaWYgdGhlICRwX2ZpbGVsaXN0IGlzIHJlYWxseS
BhbiBhcnJheQoJCWlmIChpc19hcnJheSgkcF9maWxlbGlzdCkpIHsKCgkJICAvLyAtLS0tLSBMb29rIGlmI
HRoZSBmaXJzdCBlbGVtZW50IGlzIGFsc28gYW4gYXJyYXkKCQkgIC8vICAgICAgIFRoaXMgd2lsbCBtZWFu
IHRoYXQgdGhpcyBpcyBhIGZpbGUgZGVzY3JpcHRpb24gZW50cnkKCQkgIGlmIChpc3NldCgkcF9maWxlbGl
zdFswXSkgJiYgaXNfYXJyYXkoJHBfZmlsZWxpc3RbMF0pKSB7CgkJCSR2X2F0dF9saXN0ID0gJHBfZmlsZW
xpc3Q7CgkJICB9CgoJCSAgLy8gLS0tLS0gVGhlIGxpc3QgaXMgYSBsaXN0IG9mIHN0cmluZyBuYW1lcwoJC
SAgZWxzZSB7CgkJCSR2X3N0cmluZ19saXN0ID0gJHBfZmlsZWxpc3Q7CgkJICB9CgkJfQoKCQkvLyAtLS0t
LSBMb29rIGlmIHRoZSAkcF9maWxlbGlzdCBpcyBhIHN0cmluZwoJCWVsc2UgaWYgKGlzX3N0cmluZygkcF9
maWxlbGlzdCkpIHsKCQkgIC8vIC0tLS0tIENyZWF0ZSBhIGxpc3QgZnJvbSB0aGUgc3RyaW5nCgkJICAkdl
9zdHJpbmdfbGlzdCA9IGV4cGxvZGUoUENMWklQX1NFUEFSQVRPUiwgJHBfZmlsZWxpc3QpOwoJCX0KCgkJL
y8gLS0tLS0gSW52YWxpZCB2YXJpYWJsZSB0eXBlIGZvciAkcF9maWxlbGlzdAoJCWVsc2UgewoJCSAgUGNs
WmlwOjpwcml2RXJyb3JMb2coUENMWklQX0VSUl9JTlZBTElEX1BBUkFNRVRFUiwgIkludmFsaWQgdmFyaWF
ibGUgdHlwZSAnIi5nZXR0eXBlKCRwX2ZpbGVsaXN0KS4iJyBmb3IgcF9maWxlbGlzdCIpOwoJCSAgcmV0dX
JuIDA7CgkJfQoKCQkvLyAtLS0tLSBSZWZvcm1hdCB0aGUgc3RyaW5nIGxpc3QKCQlpZiAoc2l6ZW9mKCR2X
3N0cmluZ19saXN0KSAhPSAwKSB7CgkJICBmb3JlYWNoICgkdl9zdHJpbmdfbGlzdCBhcyAkdl9zdHJpbmcp
IHsKCQkJJHZfYXR0X2xpc3RbXVtQQ0xaSVBfQVRUX0ZJTEVfTkFNRV0gPSAkdl9zdHJpbmc7CgkJICB9Cgk
JfQoKCQkvLyAtLS0tLSBGb3IgZWFjaCBmaWxlIGluIHRoZSBsaXN0IGNoZWNrIHRoZSBhdHRyaWJ1dGVzCg
kJJHZfc3VwcG9ydGVkX2F0dHJpYnV0ZXMKCQk9IGFycmF5ICggUENMWklQX0FUVF9GSUxFX05BTUUgPT4gJ
21hbmRhdG9yeScKCQkJCSAsUENMWklQX0FUVF9GSUxFX05FV19TSE9SVF9OQU1FID0+ICdvcHRpb25hbCcK
CQkJCSAsUENMWklQX0FUVF9GSUxFX05FV19GVUxMX05BTUUgPT4gJ29wdGlvbmFsJwoJCQkJICxQQ0xaSVB
fQVRUX0ZJTEVfTVRJTUUgPT4gJ29wdGlvbmFsJwoJCQkJICxQQ0xaSVBfQVRUX0ZJTEVfQ09OVEVOVCA9Pi
Anb3B0aW9uYWwnCgkJCQkgLFBDTFpJUF9BVFRfRklMRV9DT01NRU5UID0+ICdvcHRpb25hbCcKCQkJCQkJC
Sk7CgkJZm9yZWFjaCAoJHZfYXR0X2xpc3QgYXMgJHZfZW50cnkpIHsKCQkgICR2X3Jlc3VsdCA9ICR0aGlz
LT5femEtPnByaXZGaWxlRGVzY3JQYXJzZUF0dCgkdl9lbnRyeSwKCQkJCQkJCQkJCQkJICAgJHZfZmlsZWR
lc2NyX2xpc3RbXSwKCQkJCQkJCQkJCQkJICAgJHZfb3B0aW9ucywKCQkJCQkJCQkJCQkJICAgJHZfc3VwcG
9ydGVkX2F0dHJpYnV0ZXMpOwoJCSAgaWYgKCR2X3Jlc3VsdCAhPSAxKSB7CgkJCXJldHVybiAwOwoJCSAgf
QoJCX0KCgkJLy8gLS0tLS0gRXhwYW5kIHRoZSBmaWxlbGlzdCAoZXhwYW5kIGRpcmVjdG9yaWVzKQoJCSR2
X3Jlc3VsdCA9ICR0aGlzLT5femEtPnByaXZGaWxlRGVzY3JFeHBhbmQoJHZfZmlsZWRlc2NyX2xpc3QsICR
2X29wdGlvbnMpOwoJCWlmICgkdl9yZXN1bHQgIT0gMSkgewoJCSAgcmV0dXJuIDA7CgkJfQoKCQkvLyAtLS
0tLSBDYWxsIHRoZSBjcmVhdGUgZmN0CgkJJHZfcmVzdWx0ID0gJHRoaXMtPnByaXZHcm93KCR2X2ZpbGVkZ
XNjcl9saXN0LCAkcF9yZXN1bHRfbGlzdCwgJHZfb3B0aW9ucyk7CgkJaWYgKCR2X3Jlc3VsdCAhPSAxKSB7
CgkJICByZXR1cm4gMDsKCQl9CgoJCS8vIC0tLS0tIFJldHVybgoJCXJldHVybiAkcF9yZXN1bHRfbGlzdDs
KCQl9CgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQkvLyBGdW5j
dGlvbiA6IHByaXZHcm93KCkKCQkvLyBEZXNjcmlwdGlvbiA6CgkJLy8gUGFyYW1ldGVycyA6CgkJLy8gUmV
0dXJuIFZhbHVlcyA6CgkJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCQlmdW5jdGlvbiBwcml2R3JvdygkcF9ma
WxlZGVzY3JfbGlzdCwgJiRwX3Jlc3VsdF9saXN0LCAmJHBfb3B0aW9ucykKCQl7CgkJJHZfcmVzdWx0PTE7
CgkJJHZfbGlzdF9kZXRhaWwgPSBhcnJheSgpOwoKCQkvLyAtLS0tLSBMb29rIGlmIHRoZSBhcmNoaXZlIGV
4aXN0cyBvciBpcyBlbXB0eQoJCWlmICgoIWlzX2ZpbGUoJHRoaXMtPl96YS0+emlwbmFtZSkpIHx8IChmaW
xlc2l6ZSgkdGhpcy0+X3phLT56aXBuYW1lKSA9PSAwKSkKCQl7CgoJCSAgLy8gLS0tLS0gRG8gYSBjcmVhd
GUKCQkgICR2X3Jlc3VsdCA9ICR0aGlzLT5femEtPnByaXZDcmVhdGUoJHBfZmlsZWRlc2NyX2xpc3QsICRw
X3Jlc3VsdF9saXN0LCAkcF9vcHRpb25zKTsKCgkJICAvLyAtLS0tLSBSZXR1cm4KCQkgIHJldHVybiAkdl9
yZXN1bHQ7CgkJfQoJCS8vIC0tLS0tIE1hZ2ljIHF1b3RlcyB0cmljawoJCSR0aGlzLT5femEtPnByaXZEaX
NhYmxlTWFnaWNRdW90ZXMoKTsKCiAgICAJLy8gLS0tLS0gT3BlbiB0aGUgemlwIGZpbGUKCQkvLyAtLS0tL
SBPcGVuIHRoZSB6aXAgZmlsZSBpbiByL3cgYmluYXJ5IG1vZGUgd2l0aCBubyB0cnVuY2F0aW9uIGFuZCBm
aWxlIHBvaW50ZXIgYXQgc3RhcnQKCQlpZiAoKCR2X3Jlc3VsdD0kdGhpcy0+X3phLT5wcml2T3BlbkZkKCd
jK2InKSkgIT0gMSkKCQl7CgkJICAvLyAtLS0tLSBNYWdpYyBxdW90ZXMgdHJpY2sKCQkgICR0aGlzLT5fem
EtPnByaXZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgoJCSAgLy8gLS0tLS0gUmV0dXJuCgkJICByZXR1cm4gJ
HZfcmVzdWx0OwoJCX0KCgkJLy8gLS0tLS0gUmVhZCB0aGUgY2VudHJhbCBkaXJlY3RvcnkgaW5mb3JtYXRp
b25zCgkJJHZfY2VudHJhbF9kaXIgPSBhcnJheSgpOwoJCWlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPl96YS0
+cHJpdlJlYWRFbmRDZW50cmFsRGlyKCR2X2NlbnRyYWxfZGlyKSkgIT0gMSkKCQl7CgkJICAkdGhpcy0+X3
phLT5wcml2Q2xvc2VGZCgpOwoJCSAgJHRoaXMtPl96YS0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKC
QkgIHJldHVybiAkdl9yZXN1bHQ7CgkJfQoKCQkvLyAtLS0tLSBHbyB0byBiZWdpbm5pbmcgb2YgRmlsZQoJ
CS8vQHJld2luZCgkdGhpcy0+X3phLT56aXBfZmQpOwoJCS8vIC0tLS0tIEdvIHRvIHRoZSBzdGFydCBvZiB
0aGUgY2VudHJhbCBkaXIKCQlAZnNlZWsoJHRoaXMtPl96YS0+emlwX2ZkLCAkdl9jZW50cmFsX2Rpclsnb2
Zmc2V0J10pOwoKCQkvLyAtLS0tLSBDcmVhdGVzIGEgdGVtcG9yYXkgZmlsZQoJCS8vJHZfemlwX3RlbXBfb
mFtZSA9IFBDTFpJUF9URU1QT1JBUllfRElSLnVuaXFpZCgncGNsemlwLScpLicudG1wJzsKCQkkdl96aXBf
dGVtcF9uYW1lID0gJ3BocDovL3RlbXAvbWF4bWVtb3J5OjEwNDg1NzYwJzsKCgkgICAgLy8gLS0tLS0gT3B
lbiB0aGUgdGVtcG9yYXJ5IGZpbGUgaW4gd3JpdGUgbW9kZQoJICAgIC8vaWYgKCgkdl96aXBfdGVtcF9mZC
A9IEBmb3Blbigkdl96aXBfdGVtcF9uYW1lLCAnd2InKSkgPT0gMCkKCQkvLyAtLS0tLSBPcGVuIHRoZSB0Z
W1wb3JhcnkgZmlsZSBpbiByZWFkL3dyaXRlIG1vZGUKCQlpZiAoKCR2X3ppcF90ZW1wX2ZkID0gQGZvcGVu
KCR2X3ppcF90ZW1wX25hbWUsICd3K2InKSkgPT0gMCkKCQl7CgkJICAkdGhpcy0+X3phLT5wcml2Q2xvc2V
GZCgpOwoJCSAgJHRoaXMtPl96YS0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCgkJICAvL1BjbFppcD
o6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfUkVBRF9PUEVOX0ZBSUwsICdVbmFibGUgdG8gb3BlbiB0ZW1wb
3JhcnkgZmlsZSBcJycuJHZfemlwX3RlbXBfbmFtZS4nXCcgaW4gYmluYXJ5IHdyaXRlIG1vZGUnKTsKCQkg
IFBjbFppcDo6cHJpdkVycm9yTG9nKFBDTFpJUF9FUlJfUkVBRF9PUEVOX0ZBSUwsICdVbmFibGUgdG8gb3B
lbiB0ZW1wb3JhcnkgZmlsZSBcJycuJHZfemlwX3RlbXBfbmFtZS4nXCcgaW4gYmluYXJ5IHJlYWQvd3JpdG
UgbW9kZScpOwoKCQkgIC8vIC0tLS0tIFJldHVybgoJCSAgcmV0dXJuIFBjbFppcDo6ZXJyb3JDb2RlKCk7C
gkJfQoKCQkvLyAtLS0tLSBDb3B5IHRoZSBmaWxlcyBmcm9tIHRoZSBhcmNoaXZlIHRvIHRoZSB0ZW1wb3Jh
cnkgZmlsZQoJCS8vIFRCQyA6IEhlcmUgSSBzaG91bGQgYmV0dGVyIGFwcGVuZCB0aGUgZmlsZSBhbmQgZ28
gYmFjayB0byBlcmFzZSB0aGUgY2VudHJhbCBkaXIKCQkvLyR2X3NpemUgPSAkdl9jZW50cmFsX2Rpclsnb2
Zmc2V0J107CgkJLy8gLS0tLS0gQ29weSB0aGUgZXhpc3RpbmcgY2VudHJhbCBkaXIgdG8gYSB0ZW1wb3Jhc
nkgZmlsZQoJCSR2X3NpemUgPSAkdl9jZW50cmFsX2Rpclsnc2l6ZSddOwoJCXdoaWxlICgkdl9zaXplICE9
IDApCgkJewoJCSAgJHZfcmVhZF9zaXplID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFID8
gJHZfc2l6ZSA6IFBDTFpJUF9SRUFEX0JMT0NLX1NJWkUpOwoJCSAgJHZfYnVmZmVyID0gZnJlYWQoJHRoaX
MtPl96YS0+emlwX2ZkLCAkdl9yZWFkX3NpemUpOwoJCSAgQGZ3cml0ZSgkdl96aXBfdGVtcF9mZCwgJHZfY
nVmZmVyLCAkdl9yZWFkX3NpemUpOwoJCSAgJHZfc2l6ZSAtPSAkdl9yZWFkX3NpemU7CgkJfQoKCQkvLyAt
LS0tLSBTd2FwIHRoZSBmaWxlIGRlc2NyaXB0b3IKCQkvLyBIZXJlIGlzIGEgdHJpY2sgOiBJIHN3YXAgdGh
lIHRlbXBvcmFyeSBmZCB3aXRoIHRoZSB6aXAgZmQsIGluIG9yZGVyIHRvIHVzZQoJCS8vIHRoZSBmb2xsb3
dpbmcgbWV0aG9kcyBvbiB0aGUgdGVtcG9yYXJ5IGZpbCBhbmQgbm90IHRoZSByZWFsIGFyY2hpdmUKCQkvL
yR2X3N3YXAgPSAkdGhpcy0+X3phLT56aXBfZmQ7CgkJLy8kdGhpcy0+X3phLT56aXBfZmQgPSAkdl96aXBf
dGVtcF9mZDsKCQkvLyR2X3ppcF90ZW1wX2ZkID0gJHZfc3dhcDsKCQkvLyAtLS0tLSBNb2RpZnkgZXhpc3R
pbmcgemlwIGZpbGUgc28ga2VlcCBmaWxlIGRlc2NyaXB0b3JzIGFzIHRoZXkgYXJlCgkJCgkJLy8gLS0tLS
0gTm93IHRydW5jYXRlIGFmdGVyIGV4aXN0aW5nIGZpbGVzIGFuZCBzZWVrIHRvIGVuZCB0byBhZGQgbmV3I
GZpbGVzCgkJQHJld2luZCgkdGhpcy0+X3phLT56aXBfZmQpOwoJCUBmdHJ1bmNhdGUoJHRoaXMtPl96YS0+
emlwX2ZkLCAkdl9jZW50cmFsX2Rpclsnb2Zmc2V0J10pOwoJCUBmc2VlaygkdGhpcy0+X3phLT56aXBfZmQ
sIDAsIFNFRUtfRU5EKTsKCgkJLy8gLS0tLS0gQWRkIHRoZSBmaWxlcwoJCSR2X2hlYWRlcl9saXN0ID0gYX
JyYXkoKTsKCQlpZiAoKCR2X3Jlc3VsdCA9ICR0aGlzLT5femEtPnByaXZBZGRGaWxlTGlzdCgkcF9maWxlZ
GVzY3JfbGlzdCwgJHZfaGVhZGVyX2xpc3QsICRwX29wdGlvbnMpKSAhPSAxKQoJCXsKCQkgIGZjbG9zZSgk
dl96aXBfdGVtcF9mZCk7CgkJICAkdGhpcy0+X3phLT5wcml2Q2xvc2VGZCgpOwoJCSAgLy9AdW5saW5rKCR
2X3ppcF90ZW1wX25hbWUpOwoJCSAgJHRoaXMtPl96YS0+cHJpdlN3YXBCYWNrTWFnaWNRdW90ZXMoKTsKCg
kJICAvLyAtLS0tLSBSZXR1cm4KCQkgIHJldHVybiAkdl9yZXN1bHQ7CgkJfQoKCQkvLyAtLS0tLSBTdG9yZ
SB0aGUgb2Zmc2V0IG9mIHRoZSBjZW50cmFsIGRpcgoJCSR2X29mZnNldCA9IEBmdGVsbCgkdGhpcy0+X3ph
LT56aXBfZmQpOwoJCQoJCS8vIC0tLS0tIFJld2luZCB0ZW1wIGZpbGUgcmVhZHkgdG8gY29weSBvcmlnaW5
hbCBjZW50cmFsIGRpciBlbnRyaWVzCgkJQHJld2luZCgkdl96aXBfdGVtcF9mZCk7CgoJCS8vIC0tLS0tIE
NvcHkgdGhlIGJsb2NrIG9mIGZpbGUgaGVhZGVycyBmcm9tIHRoZSBvbGQgYXJjaGl2ZQoJCSR2X3NpemUgP
SAkdl9jZW50cmFsX2Rpclsnc2l6ZSddOwoJCXdoaWxlICgkdl9zaXplICE9IDApCgkJewoJCSAgJHZfcmVh
ZF9zaXplID0gKCR2X3NpemUgPCBQQ0xaSVBfUkVBRF9CTE9DS19TSVpFID8gJHZfc2l6ZSA6IFBDTFpJUF9
SRUFEX0JMT0NLX1NJWkUpOwoJCSAgJHZfYnVmZmVyID0gQGZyZWFkKCR2X3ppcF90ZW1wX2ZkLCAkdl9yZW
FkX3NpemUpOwoJCSAgQGZ3cml0ZSgkdGhpcy0+X3phLT56aXBfZmQsICR2X2J1ZmZlciwgJHZfcmVhZF9za
XplKTsKCQkgICR2X3NpemUgLT0gJHZfcmVhZF9zaXplOwoJCX0KCgkJLy8gLS0tLS0gQ3JlYXRlIHRoZSBD
ZW50cmFsIERpciBmaWxlcyBoZWFkZXIKCQlmb3IgKCRpPTAsICR2X2NvdW50PTA7ICRpPHNpemVvZigkdl9
oZWFkZXJfbGlzdCk7ICRpKyspCgkJewoJCSAgLy8gLS0tLS0gQ3JlYXRlIHRoZSBmaWxlIGhlYWRlcgoJCS
AgaWYgKCR2X2hlYWRlcl9saXN0WyRpXVsnc3RhdHVzJ10gPT0gJ29rJykgewoJCQlpZiAoKCR2X3Jlc3Vsd
CA9ICR0aGlzLT5femEtPnByaXZXcml0ZUNlbnRyYWxGaWxlSGVhZGVyKCR2X2hlYWRlcl9saXN0WyRpXSkp
ICE9IDEpIHsKCQkJICBmY2xvc2UoJHZfemlwX3RlbXBfZmQpOwoJCQkgICR0aGlzLT5femEtPnByaXZDbG9
zZUZkKCk7CgkJCSAgLy9AdW5saW5rKCR2X3ppcF90ZW1wX25hbWUpOwoJCQkgICR0aGlzLT5femEtPnByaX
ZTd2FwQmFja01hZ2ljUXVvdGVzKCk7CgoJCQkgIC8vIC0tLS0tIFJldHVybgoJCQkgIHJldHVybiAkdl9yZ
XN1bHQ7CgkJCX0KCQkJJHZfY291bnQrKzsKCQkgIH0KCgkJICAvLyAtLS0tLSBUcmFuc2Zvcm0gdGhlIGhl
YWRlciB0byBhICd1c2FibGUnIGluZm8KCQkgICR0aGlzLT5femEtPnByaXZDb252ZXJ0SGVhZGVyMkZpbGV
JbmZvKCR2X2hlYWRlcl9saXN0WyRpXSwgJHBfcmVzdWx0X2xpc3RbJGldKTsKCQl9CgoJCS8vIC0tLS0tIF
ppcCBmaWxlIGNvbW1lbnQKCQkkdl9jb21tZW50ID0gJHZfY2VudHJhbF9kaXJbJ2NvbW1lbnQnXTsKCQlpZ
iAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX0NPTU1FTlRdKSkgewoJCSAgJHZfY29tbWVudCA9ICRw
X29wdGlvbnNbUENMWklQX09QVF9DT01NRU5UXTsKCQl9CgkJaWYgKGlzc2V0KCRwX29wdGlvbnNbUENMWkl
QX09QVF9BRERfQ09NTUVOVF0pKSB7CgkJICAkdl9jb21tZW50ID0gJHZfY29tbWVudC4kcF9vcHRpb25zW1
BDTFpJUF9PUFRfQUREX0NPTU1FTlRdOwoJCX0KCQlpZiAoaXNzZXQoJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX
1BSRVBFTkRfQ09NTUVOVF0pKSB7CgkJICAkdl9j
b21tZW50ID0gJHBfb3B0aW9uc1tQQ0xaSVBfT1BUX1BSRVBFTkRfQ09NTUVOVF0uJHZfY29tbWVudDsKCQl
9CgoJCS8vIC0tLS0tIENhbGN1bGF0ZSB0aGUgc2l6ZSBvZiB0aGUgY2VudHJhbCBoZWFkZXIKCQkkdl9zaX
plID0gQGZ0ZWxsKCR0aGlzLT5femEtPnppcF9mZCktJHZfb2Zmc2V0OwoKCQkvLyAtLS0tLSBDcmVhdGUgd
GhlIGNlbnRyYWwgZGlyIGZvb3RlcgoJCWlmICgoJHZfcmVzdWx0ID0gJHRoaXMtPl96YS0+cHJpdldyaXRl
Q2VudHJhbEhlYWRlcigkdl9jb3VudCskdl9jZW50cmFsX2RpclsnZW50cmllcyddLCAkdl9zaXplLCAkdl9
vZmZzZXQsICR2X2NvbW1lbnQpKSAhPSAxKQoJCXsKCQkgIC8vIC0tLS0tIFJlc2V0IHRoZSBmaWxlIGxpc3
QKCQkgIHVuc2V0KCR2X2hlYWRlcl9saXN0KTsKCQkgICR0aGlzLT5femEtPnByaXZTd2FwQmFja01hZ2ljU
XVvdGVzKCk7CgoJCSAgLy8gLS0tLS0gUmV0dXJuCgkJICByZXR1cm4gJHZfcmVzdWx0OwoJCX0KCgkJLy8g
LS0tLS0gU3dhcCBiYWNrIHRoZSBmaWxlIGRlc2NyaXB0b3IKCQkvLyR2X3N3YXAgPSAkdGhpcy0+X3phLT5
6aXBfZmQ7CgkJLy8kdGhpcy0+X3phLT56aXBfZmQgPSAkdl96aXBfdGVtcF9mZDsKCQkvLyR2X3ppcF90ZW
1wX2ZkID0gJHZfc3dhcDsKCQkvLyAtLS0tLSBGaWxlIGRlc2NyaXB0b3JzIG5ldmVyIHN3YXBwZWQgb3JpZ
2luYWxseQoKCQkvLyAtLS0tLSBDbG9zZQoJCSR0aGlzLT5femEtPnByaXZDbG9zZUZkKCk7CgoJCS8vIC0t
LS0tIENsb3NlIHRoZSB0ZW1wb3JhcnkgZmlsZQoJCUBmY2xvc2UoJHZfemlwX3RlbXBfZmQpOwoKCQkvLyA
tLS0tLSBNYWdpYyBxdW90ZXMgdHJpY2sKCQkkdGhpcy0+X3phLT5wcml2U3dhcEJhY2tNYWdpY1F1b3Rlcy
gpOwoKCQkvLyAtLS0tLSBEZWxldGUgdGhlIHppcCBmaWxlCgkJLy8gVEJDIDogSSBzaG91bGQgdGVzdCB0a
GUgcmVzdWx0IC4uLgoJCS8vQHVubGluaygkdGhpcy0+X3phLT56aXBuYW1lKTsKCQkvLyAtLS0tLSBEZWxl
dGUgdGhlIHRlbXBvcmFyeSBmaWxlCgkJLy9AdW5saW5rKCR2X3ppcF90ZW1wX25hbWUpOwoKCQkvLyAtLS0
tLSBSZW5hbWUgdGhlIHRlbXBvcmFyeSBmaWxlCgkJLy8gVEJDIDogSSBzaG91bGQgdGVzdCB0aGUgcmVzdW
x0IC4uLgoJCS8vQHJlbmFtZSgkdl96aXBfdGVtcF9uYW1lLCAkdGhpcy0+emlwbmFtZSk7CgkJLy9QY2xaa
XBVdGlsUmVuYW1lKCR2X3ppcF90ZW1wX25hbWUsICR0aGlzLT5femEtPnppcG5hbWUpOwoJCS8vIC0tLS0t
IFdlIGdyZXcgdGhlIGV4aXN0aW5nIHppcCBmaWxlIHNvIG5vIHJlbmFtaW5nIHRvIGRvCgoJCS8vIC0tLS0
tIFJldHVybgoJCXJldHVybiAkdl9yZXN1bHQ7CgkJfQoJCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoJCS8qK
goJCSAqCV9fY2FsbCgpCgkJICoJCgkJICoJTWFnaWMgbWV0aG9kIGludGVyY2VwdGluZyBjYWxscyB0byB1
bmtub3duIG1ldGhvZHMuIFRoaXMgYWxsb3dzIHVzIHRvIGludGVyY2VwdAoJCSAqCWFsbCBtZXRob2QgY2F
sbHMgYW5kIGFkZCBhZGRpdGlvbmFsIHByb2Nlc3NpbmcuIE5vdGUgdGhhdCB0aGUgbWFpbiB3cmFwcGluZy
B3ZQoJCSAqCXdhbnQgdG8gYXBwbHkgaXMgc2V0dGluZyB0aGUgaW50ZXJuYWwgZW5jb2RpbmcgaWYgcmVxd
WlyZWQgc28gdGhhdCBzdHJpbmcgZnVuY3Rpb25zCgkJICoJY2FuIGJlIHVzZWQgb24gYmluYXJ5IGRhdGEg
YnV0IHdlIGFsc28gbmVlZCB0byBpbnRlcmNlcHQgc29tZSBtZXRob2RzIGFuZCBvdmVycmlkZQoJCSAqCXR
oZW0uIFdlIGNvdWxkIGRvIHRoaXMganVzdCBieSBoYXZpbmcgYSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS
BidXQgdGhhdCB3b3VsZAoJCSAqCWJ5cGFzcyB0aGUgd3JhcHBlciBzbyB3ZSBuZWVkIHRvIGhhbmRsZSB0a
G9zZSBpbnRlcmNlcHRlZCBtZXRob2RzIHdpdGhpbiB0aGlzCgkJICoJbWFnaWMgbWV0aG9kIGFzIHdlbGwu
CgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJJG1ldGhvZAkJVGhlIG5hbWUgb2YgdGhlIGludGVyY2VwdGV
kIG1ldGhvZAoJCSAqCUBwYXJhbQkJYXJyYXkJJGFyZ3VtZW50cwlBcnJheSBvZiB0aGUgYXJndW1lbnRzIG
Fzc29jaWF0ZWQgd2l0aCB0aGUgbWV0aG9kIGNhbGwKCQkgKglAcmV0dXJuCQltaXhlZAkkcmVzdWx0CQlXa
GF0ZXZlciB0aGUgaW52b2tlZCB3cmFwcGVyIG1ldGhvZCBjYWxsIHJldHVybnMKCQkgKgoJCSAqLwoJCXB1
YmxpYyBmdW5jdGlvbiBfX2NhbGwoICRtZXRob2QsICRhcmd1bWVudHMgKSB7CgkJCgkJCSRyZXN1bHQgPSB
mYWxzZTsKCQkKCQkJLy8gU2VlICMxNTc4OSAtIFBjbFppcCB1c2VzIHN0cmluZyBmdW5jdGlvbnMgb24gYm
luYXJ5IGRhdGEKCQkJLy8gSWYgaXQncyBvdmVybG9hZGVkIHdpdGggTXVsdGlieXRlIHNhZmUgZnVuY3Rpb
25zIHRoZSByZXN1bHRzIGFyZSBpbmNvcnJlY3QuCgkJCWlmICggQGluaV9nZXQoICdtYnN0cmluZy5mdW5j
X292ZXJsb2FkJyApICYmIEBmdW5jdGlvbl9leGlzdHMoICdtYl9pbnRlcm5hbF9lbmNvZGluZycgKSApIHs
KCQkJCgkJCQkkcHJldmlvdXNfZW5jb2RpbmcgPSBAbWJfaW50ZXJuYWxfZW5jb2RpbmcoKTsKCQkJCUBtYl
9pbnRlcm5hbF9lbmNvZGluZyggJ0lTTy04ODU5LTEnICk7CgkJCQkKCQkJfQoJCQkKCQkJc3dpdGNoICggJ
G1ldGhvZCApIHsKCQkJCQoJCQkJY2FzZSAnYWRkJzoKCQkJCQkkcmVzdWx0ID0gQGNhbGxfdXNlcl9mdW5j
X2FycmF5KCBhcnJheSggJHRoaXMsICdfJyAuICRtZXRob2QgKSwgJGFyZ3VtZW50cyApOwoJCQkJCWJyZWF
rOwoJCQkJY2FzZSAnZ3Jvdyc6CgkJCQkJJHJlc3VsdCA9IEBjYWxsX3VzZXJfZnVuY19hcnJheSggYXJyYX
koICR0aGlzLCAnXycgLiAkbWV0aG9kICksICRhcmd1bWVudHMgKTsKCQkJCQlicmVhazsKCQkJCWRlZmF1b
HQ6CgkJCQkJJHJlc3VsdCA9IEBjYWxsX3VzZXJfZnVuY19hcnJheSggYXJyYXkoICR0aGlzLT5femEsICRt
ZXRob2QgKSwgJGFyZ3VtZW50cyApOwoJCQkKCQkJfQoJCQkKCQkJLy8gTm93IHVuZG8gYW55IGNoYW5nZSB
3ZSBtYXkgaGF2ZSBtYWRlIHRvIHRoZSBlbmNvZGluZwoJCQlpZiAoIGlzc2V0KCAkcHJldmlvdXNfZW5jb2
RpbmcgKSApIHsKCQkJCgkJCQlAbWJfaW50ZXJuYWxfZW5jb2RpbmcoICRwcmV2aW91c19lbmNvZGluZyApO
woJCQkJdW5zZXQoICRwcmV2aW91c19lbmNvZGluZyApOwoKCQkJfQoJCQoJCQlyZXR1cm4gJHJlc3VsdDsK
CQkKCQl9CgkKCX0KCgljbGFzcyBwbHVnaW5idWRkeV96YnppcHBjbHppcCBleHRlbmRzIHBsdWdpbmJ1ZGR
5X3piemlwY29yZSB7CgkKCQkvLyBDb25zdGFudHMgZm9yIGZpbGUgaGFuZGxpbmcKCQljb25zdCBaSVBfRV
JST1JTX0ZJTEVfTkFNRSAgID0gJ2xhc3RfcGNsemlwX2Vycm9ycy50eHQnOwoJCWNvbnN0IFpJUF9XQVJOS
U5HU19GSUxFX05BTUUgPSAnbGFzdF9wY2x6aXBfd2FybmluZ3MudHh0JzsKCQljb25zdCBaSVBfT1RIRVJT
X0ZJTEVfTkFNRSAgID0gJ2xhc3RfcGNsemlwX290aGVycy50eHQnOwoJCWNvbnN0IFpJUF9DT05URU5UX0Z
JTEVfTkFNRSAgPSAnbGFzdF9wY2x6aXBfbGlzdC50eHQnOwoJCQogICAgICAgIC8qKgogICAgICAgICAqIG
1ldGhvZCB0YWcgdXNlZCB0byByZWZlciB0byB0aGUgbWV0aG9kIGFuZCBlbnRpdGllcyBhc3NvY2lhdGVkI
HdpdGggaXQgc3VjaCBhcyBjbGFzcyBuYW1lCiAgICAgICAgICogCiAgICAgICAgICogQHZhciAkX21ldGhv
ZF90YWcgCXN0cmluZwogICAgICAgICAqLwoJCXB1YmxpYyBzdGF0aWMgJF9tZXRob2RfdGFnID0gJ3BjbHp
pcCc7CgkJCQogICAgICAgIC8qKgogICAgICAgICAqIFRoaXMgdGVsbHMgdXMgd2hldGhlciB0aGlzIG1ldG
hvZCBpcyByZWdhcmRlZCBhcyBhICJjb21wYXRpYmlsaXR5IiBtZXRob2QKICAgICAgICAgKiAKICAgICAgI
CAgKiBAdmFyIGJvb2wKICAgICAgICAgKi8KCQlwdWJsaWMgc3RhdGljICRfaXNfY29tcGF0aWJpbGl0eV9t
ZXRob2QgPSB0cnVlOwoJCQkKICAgICAgICAvKioKICAgICAgICAgKiBUaGlzIHRlbGxzIHVzIHRoZSBkZXB
lbmRlbmNpZXMgb2YgdGhpcyBtZXRob2Qgc28gdGhleSBjYW4gYmUgY2hlY2sgdG8gc2VlIGlmIHRoZSBtZX
Rob2QgY2FuIGJlIHN1cHBvcnRlZAogICAgICAgICAqIE5vdGU6IFBjbFppcCBjb25zdHJ1Y3RvciBjaGVja
3MgZm9yIGd6b3BlbiBmdW5jdGlvbiBhbmQgZGllcyBvbiBmYWlsdXJlIHNvIHdlIG1heSBhcyB3ZWxsIHBy
ZS1lbXB0IHRoYXQKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIGFycmF5CiAgICAgICAgICovCgkJcHV
ibGljIHN0YXRpYyAkX21ldGhvZF9kZXBlbmRlbmNpZXMgPSBhcnJheSggJ2NsYXNzZXMnID0+IGFycmF5KC
ksCgkJCQkJCQkJCQkJICAJCSAnZnVuY3Rpb25zJyA9PiBhcnJheSggJ2d6b3BlbicgKSwKCQkJCQkJCQkJC
QkgIAkJICdleHRlbnNpb25zJyA9PiBhcnJheSggKSwKCQkJCQkJCQkJCQkgIAkJICdmaWxlcycgPT4gYXJy
YXkoKSwKCQkJCQkJCQkJCQkgIAkJICdjaGVja19mdW5jJyA9PiAnY2hlY2tfbWV0aG9kX2RlcGVuZGVuY2l
lc19zdGF0aWMnCgkJCQkJCQkJCQkJCQkpOwoJCQkKCQkvKioKCQkgKiAKCQkgKiBnZXRfbWV0aG9kX3RhZ1
9zdGF0aWMoKQoJCSAqCgkJICogR2V0IHRoZSBzdGF0aWMgbWV0aG9kIHRhZyBpbiBhIHN0YXRpYyBjb250Z
Xh0CgkJICoKCQkgKiBAcmV0dXJuCQlzdHJpbmcJVGhlIG1ldGhvZCB0YWcKCQkgKgoJCSAqLwoJCXB1Ymxp
YyBzdGF0aWMgZnVuY3Rpb24gZ2V0X21ldGhvZF90YWdfc3RhdGljKCkgewoJCQoJCQlyZXR1cm4gc2VsZjo
6JF9tZXRob2RfdGFnOwoJCQkKCQl9CgoJCS8qKgoJCSAqIAoJCSAqIGdldF9pc19jb21wYXRpYmlsaXR5X2
1ldGhvZF9zdGF0aWMoKQoJCSAqCgkJICogR2V0IHRoZSBjb21wYXRpYmlsaXR5IG1ldGhvZCBpbmRpY2F0b
3IgaW4gYSBzdGF0aWMgY29udGV4dAoJCSAqCgkJICogQHJldHVybgkJYm9vbAlUcnVlIGlmIGlzIGEgY29t
cGF0aWJpbGl0eSBtZXRob2QKCQkgKgoJCSAqLwoJCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X2lzX2N
vbXBhdGliaWxpdHlfbWV0aG9kX3N0YXRpYygpIHsKCQkKCQkJcmV0dXJuIHNlbGY6OiRfaXNfY29tcGF0aW
JpbGl0eV9tZXRob2Q7CgkJfQoKCQkvKioKCQkgKiAKCQkgKiBnZXRfbWV0aG9kX2RlcGVuZGVuY2llc19zd
GF0aWMoKQoJCSAqCgkJICogR2V0IHRoZSBtZXRob2QgZGVwZW5kZW5jaWVzIGFycmF5IGluIGEgc3RhdGlj
IGNvbnRleHQKCQkgKgoJCSAqIEByZXR1cm4JCWFycmF5CVRoZSBkZXBlbmRlbmNpZXMgb2YgdGhlIG1ldGh
vZCB0aGF0IGlzIHJlcXVpcmVzIHRvIGJlIGEgc3VwcG9ydGVkIG1ldGhvZAoJCSAqCgkJICovCgkJcHVibG
ljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbWV0aG9kX2RlcGVuZGVuY2llc19zdGF0aWMoKSB7CgkJCgkJCXJld
HVybiBzZWxmOjokX21ldGhvZF9kZXBlbmRlbmNpZXM7CgkJfQoKCQkvKioKCQkgKiAKCQkgKiBjaGVja19t
ZXRob2RfZGVwZW5kZW5jaWVzX3N0YXRpYygpCgkJICoKCQkgKiBBbGxvd3MgYWRkaXRpb25hbCBtZXRob2Q
gZGVwZW5kZW5jeSBjaGVja3MgYmV5b25kIHRoZSBzdGFuZGFyZCBpbiBhIHN0YXRpYyBjb250ZXh0CgkJIC
oKCQkgKiBAcmV0dXJuCQlib29sCVRydWUgaWYgYWRkaXRpb25hbCBkZXBlbmRlbmN5IGNoZWNrcyBwYXNzZ
WQKCQkgKgoJCSAqLwoJCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tfbWV0aG9kX2RlcGVuZGVuY2ll
c19zdGF0aWMoKSB7CgkJCgkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCgkJCS8vIE5lZWQgdG8gdmVyaWZ5IHR
oYXQgYXQgbGVhc3QgUGNsWmlwIHNob3VsZCBiZSBhdmFpbGFibGUgdG8gYmUgbG9hZGVkIChidXQgd2UKCQ
kJLy8gZG9uJ3QgYWN0dWFsbHkgd2FudCB0byBsb2FkIGl0IGhlcmUpCgkJCSRwb3NzaWJsZXMgPSBhcnJhe
SggQUJTUEFUSCAuICd3cC1hZG1pbi9pbmNsdWRlcy9jbGFzcy1wY2x6aXAucGhwJywgcGJfYmFja3VwYnVk
ZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2xpYi9wY2x6aXAvcGNsemlwLnBocCcgKTsKCQkJCgkJCWZvcmVhY2g
gKCAkcG9zc2libGVzIGFzICRwb3NzaWJsZSkgewoJCQkKCQkJCWlmICggQGlzX3JlYWRhYmxlKCAkcG9zc2
libGUgKSApIHsKCQkJCQoJCQkJCS8vIEZvdW5kIG9uZSB0aGF0IHNob3VsZCBiZSBsb2FkYWJsZSBzbyBic
mVhayBvdXQKCQkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQlicmVhazsKCQkJCQkJCQkJCgkJCQl9IAoJCQkK
CQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCgkJfQoKCQkvKioKCQkgKglfX2NvbnN0cnVjdCgpCgk
JICoJCgkJICoJRGVmYXVsdCBjb25zdHJ1Y3Rvci4KCQkgKgkKCQkgKglAcGFyYW0JCXJlZmVyZW5jZQkmJH
BhcmVudAkJW29wdGlvbmFsXSBSZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBjb250YWluaW5nIHRoZSBzdGF0d
XMoKSBmdW5jdGlvbiBmb3Igc3RhdHVzIHVwZGF0ZXMuCgkJICoJQHJldHVybgkJbnVsbAoJCSAqCgkJICov
CgkJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAmJHBhcmVudCA9IE5VTEwgKSB7CgoJCQlwYXJlbnQ
6Ol9fY29uc3RydWN0KCAkcGFyZW50ICk7CgkJCQoJCQkvLyBPdmVycmlkZSBzb21lIG9mIHBhcmVudCBkZW
ZhdWx0cwoJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXSA9IGFycmF5X21lcmdlKCAkdGhpc
y0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXSwKCQkJCQkJCQkJCQkJCQkJYXJyYXkoICduYW1lJyA9PiAn
UGNsWmlwIE1ldGhvZCcsCgkJCQkJCQkJCQkJCQkgIAkJCSAgICdjb21wYXRpYmlsaXR5JyA9PiBwbHVnaW5
idWRkeV96YnppcHBjbHppcDo6JF9pc19jb21wYXRpYmlsaXR5X21ldGhvZCApCgkJCQkJCQkJCQkJCQkgIA
kgICApOwoKCQkJLy8gTm8gcmVsZXZhbnQgcGFyYW1ldGVycyBmb3IgdGhpcyBtZXRob2QKCQkJJHRoaXMtP
l9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdID0gYXJyYXkoKTsKCQkJCgkJfQoJCQoJCS8qKgoJCSAqCV9f
ZGVzdHJ1Y3QoKQoJCSAqCQoJCSAqCURlZmF1bHQgZGVzdHJ1Y3Rvci4KCQkgKgkKCQkgKglAcmV0dXJuCQl
udWxsCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCggKSB7CgkJCgkJCXBhcmVudD
o6X19kZXN0cnVjdCgpOwoKCQl9CgkJCgkJLyoqCgkJICoJZ2V0X21ldGhvZF90YWcoKQoJCSAqCQoJCSAqC
VJldHVybnMgdGhlIChzdGF0aWMpIG1ldGhvZCB0YWcKCQkgKgkKCQkgKglAcmV0dXJuCQlzdHJpbmcgVGhl
IG1ldGhvZCB0YWcKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBnZXRfbWV0aG9kX3RhZygpIHsKCQk
KCQkJcmV0dXJuIHBsdWdpbmJ1ZGR5X3piemlwcGNsemlwOjokX21ldGhvZF90YWc7CgkJCQoJCX0KCQkKCQ
kJLyoqCgkJICoJZ2V0X2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kKCkKCQkgKgkKCQkgKglSZXR1cm5zIHRoZ
SAoc3RhdGljKSBpc19jb21wYXRpYmlsaXR5X21ldGhvZCBib29sZWFuCgkJICoJCgkJICoJQHJldHVybgkJ
Ym9vbAoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN
0aW9uIGdldF9pc19jb21wYXRpYmlsaXR5X21ldGhvZCgpIHsKCQkKCQkJcmV0dXJuIHBsdWdpbmJ1ZGR5X3
piemlwcGNsemlwOjokX2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kOwoJCQkKCQl9CgkJCgkJLyoqCgkJICoJa
XNfYXZhaWxhYmxlKCkKCQkgKgkKCQkgKglBIGZ1bmN0aW9uIHRoYXQgdGVzdHMgZm9yIHRoZSBhdmFpbGFi
aWxpdHkgb2YgdGhlIHNwZWNpZmljIG1ldGhvZCBhbmQgaXRzIGF2YWlsYWJsZSBtb2Rlcy4gV2lsbCB0ZXN
0IGZvcgoJCSAqICBtdWx0aXBsZSBtb2RlcyAoemlwICYgdW56aXApIGFuZCBvbmx5IHJldHVybiBmYWxzZS
BpZiBuZWl0aGVyIGlzIGF2YWlsYWJsZS4gQWN0dWFsIGF2YWlsYWJsZSBtb2RlcyB3aWxsCgkJICogIGJlI
GluZGljYXRlZCBpbiB0aGUgbWV0aG9kIGF0dHJpYnV0ZXMuCgkJICoKCQkgKiAgTm90ZTogaW4gdGhpcyBj
YXNlIGFzIHRoZSB6aXAgYW5kIHVuemlwIGNhcGFiaWxpdGllcyBhcmUgYWxsIHdyYXBwZWQgdXAgaW4gdGh
lIHNhbWUgY2xhc3MgdGhlbiBpZiB3ZQoJCSAqICBjYW4gemlwIHRoZW4gd2UnbGwgYXNzdW1lIChmb3Igbm
93KSB0aGF0IHdlIGNhbiB1bnppcCBhcyB3ZWxsIHNvIGF0dHJpYnV0ZXMgYXJlIHNldCBhY2NvcmRpbmdse
S4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkdGVtcGRpcglUZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHVz
ZSBmb3IgYW55IHRlc3QgZmlsZXMgKG11c3QgYmUgd3JpdGVhYmxlKQoJCSAqCUByZXR1cm4JCWJvb2wJCQk
JVHJ1ZSBpZiB0aGUgbWV0aG9kIGlzIGF2YWlsYWJsZSBmb3IgYXQgbGVhc3Qgb25lIG1vZGUsIGZhbHNlIG
90aGVyd2lzZQoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGlzX2F2YWlsYWJsZSggJHRlbXBkaXIgK
SB7CgkJCgkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJJHphID0gTlVMTDsKCQkJCgkJCSR0ZXN0X2ZpbGUgPSAk
dGVtcGRpciAuICd0ZW1wX3Rlc3RfJyAuIHVuaXFpZCgpIC4gJy56aXAnOwoJCQkKCQkJLy8gVGhpcyBzaG9
1bGQgZ2l2ZSB1cyBhIG5ldyBhcmNoaXZlIG9iamVjdCwgb2Ygbm90IGNhdGNoIGl0IGFuZCBiYWlsIG91dA
oJCQl0cnkgewoJCQkKCQkJCSR6YSA9IG5ldyBwbHVnaW5idWRkeV9QY2xaaXAoICR0ZXN0X2ZpbGUgKTsKC
QkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCgkJCX0gY2F0Y2ggKCBFeGNlcHRpb24gJGUgKSB7CgkJCQoJCQkJ
JGVycm9yX3N0cmluZyA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCA
nZGV0YWlscycsIHNwcmludGYoIF9fKCdQY2xaaXAgdGVzdCBGQUlMRUQ6ICUxJHMnLCdpdC1sMTBuLWJhY2
t1cGJ1ZGR5JyApLCAkZXJyb3Jfc3RyaW5nICkgKTsKCQkJCSRyZXN1bHQgPSBmYWxzZTsKCgkJCX0KCQkJC
gkJCS8vIE9ubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHZhbGlkIGFyY2hpdmUgb2JqZWN0CgkJCWlmICgg
dHJ1ZSA9PT0gJHJlc3VsdCApIHsKCQkJCQoJCQkJaWYgKCAkemEtPmNyZWF0ZSggX19GSUxFX18gLCBQQ0x
aSVBfT1BUX1JFTU9WRV9QQVRILCBkaXJuYW1lKCBfX0ZJTEVfXykgICkgIT09IDAgKSB7CgkJCQkJCQoJCQ
kJCWlmICggQGZpbGVfZXhpc3RzKCAkdGVzdF9maWxlICkgKSB7CgkJCQkJCgkJCQkJCWlmICggIUB1bmxpb
msoICR0ZXN0X2ZpbGUgKSApIHsKCQkJCQkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgc3ByaW50ZiggX18oJ0Vycm9yICM1NjQ2MzQuIFVuYWJsZSB0byBkZWxldGUgdGVzdCBmaWxlICg
lcykhJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHRlc3RfZmlsZSApICk7CgkJCQkJCQoJCQkJCQl9Cg
kJCQkJCQoJCQkJCQkvLyBUaGUgemlwIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCAtIGltcGxpZXMgY2FuI
HppcCBhbmQgdW56aXAgYW5kIGhlbmNlIGFyY2hpdmUsIGNoZWNrIGFuZCBsaXN0CgkJCQkJCSR0aGlzLT5f
bWV0aG9kX2RldGFpbHNbICdhdHRyJyBdWyAnaXNfemlwcGVyJyBdID0gdHJ1ZTsKCQkJCQkJJHRoaXMtPl9
tZXRob2RfZGV0YWlsc1sgJ2F0dHInIF1bICdpc191bnppcHBlcicgXSA9IHRydWU7CgkJCQkJCSR0aGlzLT
5fbWV0aG9kX2RldGFpbHNbICdhdHRyJyBdWyAnaXNfYXJjaGl2ZXInIF0gPSB0cnVlOwoJCQkJCQkkdGhpc
y0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXVsgJ2lzX2NoZWNrZXInIF0gPSB0cnVlOwoJCQkJCQkkdGhp
cy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXVsgJ2lzX2xpc3RlcicgXSA9IHRydWU7CgkJCQkJCSR0aGl
zLT5fbWV0aG9kX2RldGFpbHNbICdhdHRyJyBdWyAnaXNfY29tbWVudGVyJyBdID0gdHJ1ZTsKCQkJCQkJJH
RoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ2F0dHInIF1bICdpc191bmFyY2hpdmVyJyBdID0gdHJ1ZTsKCQkJC
QkJJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ2F0dHInIF1bICdpc19leHRyYWN0b3InIF0gPSB0cnVlOwoJ
CQkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXVsgJ2Nhbl9hZGRfdmlydHVhbF9maWxlJyB
dID0gdHJ1ZTsKCQkJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1
BjbFppcCB0ZXN0IFBBU1NFRC4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCSRyZXN1bHQgP
SB0cnVlOwoJCQkJCQkKCQkJCQl9IGVsc2UgewoJCQkJCQoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVz
KCAnZGV0YWlscycsIF9fKCdQY2xaaXAgdGVzdCBGQUlMRUQ6IFppcCBmaWxlIG5vdCBmb3VuZC4nLCdpdC1
sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkJCgkJCQkJfQoJCQ
kJCQoJCQkJfSBlbHNlIHsKCQkJCQoJCQkJCSRlcnJvcl9zdHJpbmcgPSAkemEtPmVycm9ySW5mbyggdHJ1Z
SApOwoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1BjbFppcCB0ZXN0IEZB
SUxFRDogVW5hYmxlIHRvIGNyZWF0ZS9vcGVuIHppcCBmaWxlLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICk
gKTsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdQY2xaaXAgRXJyb3I6IC
csJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkZXJyb3Jfc3RyaW5nICk7CgkJCQkJJHJlc3VsdCA9IGZhb
HNlOwoJCQkJCQoJCQkJfQoJCQkJCgkJCX0KCQkgIAkKCQkgIAlpZiAoIE5VTEwgIT0gJHphICkgeyB1bnNl
dCggJHphICk7IH0KCQkgIAkKCQkgIAlyZXR1cm4gJHJlc3VsdDsKCQkgIAkKCQl9CgoJCS8qKgoJCSAqCWF
kZF92aXJ0dWFsX2ZpbGUoKQoJCSAqCQoJCSAqCUEgZnVuY3Rpb24gdGhhdCBhbGxvd3MgYSB2aXJ0dWFsIG
ZpbGUgdG8gYmUgYWRkZWQgdG8gYSB6aXAgYXJjaGl2ZQoJCSAqCQoJCSAqCVRoZSB2aXJ0dWFsIGZpbGUgZ
GVzY3JpcHRvciBpcyBhbiBhcnJheSBvZiBkZXNjcmlwdG9yIGFycmF5KHMpIHRoYXQgcHJvdmlkZSBhIGZp
bGVuYW1lCgkJICoJZm9yIHRoZSB2aXJ0dWFsIGZpbGUgdG8gYmUgYWRkZWQgKGNhbiBpbmNsdWRlIHBhdGg
gcHJlZml4KSBhbmQgYSBzdHJpbmcgdGhhdCBjb250YWlucyB0aGUKCQkgKglmaWxlIGNvbnRlbnQgKGNhbi
BiZSBlbXB0eSBidXQgbXVzdCBiZSBwcmVzZW50KS4gRm9yIGV4YW1wbGU6CgkJICoJYXJyYXkoIGFycmF5K
CAnZmlsZW5hbWUnID0+ICdzb21lZmlsZS50eHQnLCAnY29udGVudCcgPT4gJ0EgVGV4dCBTdHJpbmcnICkg
KQoJCSAqCU5vdGUgdGhhdCB0aGUgYWN0dWFsIHppcCBmaWxlIHRvIHdoaWNoIHRoZSBmaWxlIGlzIGFkZGV
kIGlzIGZvcm1lZCBmcm9tIHRoZSBmaWxlbmFlbSBmcm9tCgkJICoJdGhlICR6aXAgcGFyYW1ldGVyIGFwcG
FlbmRlZCB0byB0aGUgJHRlbXBkaXIgZGlyZWN0b3J5IHBhdGguIFRoaXMgaXMgc2xpZ2h0bHkgY2x1bmt5I
GFuZAoJCSAqCW1heSBiZSBjaGFuZ2VkIGF0IHNvbWUgbGF0ZXIgZGF0ZS4KCQkgKgkKCQkgKglAcGFyYW0J
CXN0cmluZwkkemlwCQkJCQkJRnVsbCBwYXRoICYgZmlsZW5hbWUgb2YgWklQIEFyY2hpdmUgZmlsZSB0byB
hZGQgZmlsZSB0bwoJCSAqCUBwYXJhbQkJYXJyYXkJJHZpcnR1YWxfZmlsZV9kZXNjcmlwdG9yCUZ1bGwgZG
VzY3JpcHRvciBvZiBmaWxlKHMpIHRvIGFkZCB0byBaSVAgQXJjaGl2ZSBmaWxlCgkJICoJQHBhcmFtCQlzd
HJpbmcJJHRlbXBkaXIJCQkJCUZ1bGwgcGF0aCBvZiBkaXJlY3RvcnkgZm9yIHRlbXBvcmFyeSB1c2FnZQoJ
CSAqCUByZXR1cm4JCWJvb2wJCQkJCQkJCVRydWUgaWYgdGhlIGFkZGl0aW9uIHdhcyBzdWNjZXNzZnVsLCB
mYWxzZSBvdGhlcndpc2UKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBhZGRfdmlydHVhbF9maWxlKC
AkemlwLCAkdmlydHVhbF9maWxlX2Rlc2NyaXB0b3IsICR0ZW1wZGlyICkgewoJCQoJCQkkemEgPSBOVUxMO
woJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCSRleGl0Y29kZSA9IDA7CgkJCSR6aXBfb3V0cHV0ID0gYXJyYXko
KTsKCQkJJHZpcnR1YWxfZmlsZV9saXN0ID0gYXJyYXkoKTsKCQkJCgkJCS8vIE5vdGU6IGNvdWxkIGVuZm9
yY2UgdHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvciBmb3Igcm9idXN0bmVzcwoJCQlpZiAoIGVtcHR5KC
AkdGVtcGRpciApIHx8ICFmaWxlX2V4aXN0cyggJHRlbXBkaXIgKSApIHsKCQkJCgkJCQkvLyBUaGlzIGJyZ
WFrcyB0aGUgcnVsZSBvZiBzaW5nbGUgcG9pbnQgb2YgZXhpdCAoYXQgZW5kKSBidXQgaXQncyBlYXJseSBl
bm91Z2ggdG8gbm90IGJlIGEgcHJvYmxlbQoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHM
nLCBfXygnVGVtcG9yYXJ5IHdvcmtpbmcgZGlyZWN0b3J5IG11c3QgYmUgYXZhaWxhYmxlLicsJ2l0LWwxMG
4tYmFja3VwYnVkZHknICkgKTsJCQkJCgkJCQlyZXR1cm4gZmFsc2U7CgkJCQkKCQkJfQoJCQkKCQkJLy8gV
2UgbmVlZCB0byBmb3JjZSB0aGUgcGNsemlwIGxpYnJhcnkgdG8gbG9hZCBhdCB0aGlzIHBvaW50IGlmIGl0
IGlzCgkJCS8vIG5vdCBhbHJlYWR5IGxvYWRlZCBzbyB0aGF0IHdlIGNhbiB1c2UgZGVmaW5lZCBjb25zdGF
udHMgaXQgY3JlYXRlcwoJCQkvLyBidXQgd2UgZG9uJ3QgYWN0dWFsbHkgd2FudCB0byBjcmVhdGUgYSB6aX
AgYXJjaGl2ZSBhdCB0aGlzIHBvaW50LgoJCQkvLyBXZSBjYW4gYWxzbyB1c2UgdGhpcyBhcyBhbiBlYXJse
SB0ZXN0IG9mIGJlaW5nIGFibGUgdG8gdXNlIHRoZSBsaWJyYXJ5CgkJCS8vIGFzIGFuIGV4Y2VwdGlvbiB3
aWxsIGJlIHJhaXNlZCBpZiB0aGUgY2xhc3MgZG9lcyBub3QgZXhpc3QuCgkJCS8vIE5vdGUgdGhhdCB0aGl
zIGlzIG9ubHkgcmVhbGx5IHJlcXVpcmVkIHdoZW4gemlwIG1ldGhvZCBjYWNoaW5nIGlzCgkJCS8vIGluIH
VzZSwgaWYgdGhpcyBpcyBkaXNhYmxlZCB0aGVuIHRoZSBsaWJyYXJ5IHdvdWxkIGFscmVhZHkgaGF2ZSBiZ
WVuCgkJCS8vIGxvYWRlZCBieSB0aGUgbWV0aG9kIHRlc3RpbmcuCQkJCgkJCXRyeSB7CgkJCQkKCQkJCS8v
IFNlbGVjdCB0byBqdXN0IGxvYWQgdGhlIHBjbHppcCBsaWJyYXJ5IG9ubHkgYW5kIHRlbGwgaXQgdGhlCgk
JCQkvLyB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHVzZSBpZiByZXF1aXJlZCAodGhpcyBpcyBvbmx5IHBvc3
NpYmxlCgkJCQkvLyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGxvYWRlZCBhbmQgdGhlIHRlbXAgZGlyI
GRlZmluZWQpCgkJCQkkemEgPSBuZXcgcGx1Z2luYnVkZHlfUGNsWmlwKCAiIiwgdHJ1ZSwgJHRlbXBkaXIg
KTsKCQkJCQoJCQkJLy8gV2UgaGF2ZSBubyBwdXJwb3NlIGZvciB0aGlzIG9iamVjdCBhbnkgbG9uZ2VyLCB
0aGUgbGlicmFyeQoJCQkJLy8gd2lsbCByZW1haW4gbG9hZGVkCgkJCQl1bnNldCggJHphICk7CgkJCQkkcm
VzdWx0ID0gdHJ1ZTsKCQkJCgkJCX0gY2F0Y2ggKCBFeGNlcHRpb24gJGUgKSB7CgkJCgkJCQkvLyBTb21ld
GhpbmcgZmlzaHkgLSB0aGUgbWV0aG9kcyBpbmRpY2F0ZWQgcGNsemlwIGJ1dCB3ZSBjb3VsZG4ndCBmaW5k
IHRoZSBjbGFzcwoJCQkJJGVycm9yX3N0cmluZyA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJCQlwYl9iYWNrdXB
idWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdaaXAgcHJvY2VzcyByZXBvcnRlZDogcG
NsemlwIGluZGljYXRlZCBhcyBhdmFpbGFibGUgbWV0aG9kIGJ1dCBlcnJvciByZXBvcnRlZDogJTEkcycsJ
2l0LWwxMG4tYmFja3VwYnVkZHknICksICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJJHJlc3VsdCA9IGZhbHNl
OwoJCQkKCQkJfQoKCQkJaWYgKCB0cnVlID09PSAkcmVzdWx0ICkgewoJCQkKCQkJCS8vIFNvIHdlIGtub3c
gd2UgY2FuIGNvbnRpbnVlIHNvIGxldHMgc2V0IHVwIHRvIGRvIHRoZSBhY3Rpb24KCQkJCQoJCQkJLy8gTW
FwIHRoZSBpbmNvbWluZyB2aXJ0dWFsIGZpbGUgZGVzY3JpcHRvciBmb3JtYXQgdG8gdGhhdCByZXF1aXJlZ
CBieSB0aGUgbWV0aG9kCgkJCQlmb3JlYWNoICggJHZpcnR1YWxfZmlsZV9kZXNjcmlwdG9yIGFzICR2aXJ0
dWFsX2ZpbGUgKSB7CgkJCQkKCQkJCQkkdmlydHVhbF9maWxlX2xpc3RbXSA9IGFycmF5KCBQQ0xaSVBfQVR
UX0ZJTEVfTkFNRSA9PiAkdmlydHVhbF9maWxlWyAnZmlsZW5hbWUnIF0sCgkJCQkJCQkJCQkJCSAgUENMWk
lQX0FUVF9GSUxFX0NPTlRFTlQgPT4gJHZpcnR1YWxfZmlsZVsgJ2NvbnRlbnQnIF0gKTsKCQkJCQkKCQkJC
X0KCQkJCQoJCQkJLy8gR2V0IHN0YXJ0ZWQgd2l0aCBvdXQgemlwIG9iamVjdAoJCQkJJHRlbXBfemlwID0g
JHppcDsKCQkJCgkJCQkvLyBUaGlzIHNob3VsZCBnaXZlIHVzIGEgbmV3IGFyY2hpdmUgb2JqZWN0LCBvZiB
ub3QgY2F0Y2ggaXQgYW5kIGJhaWwgb3V0CgkJCQl0cnkgewoJCQkJCQoJCQkJCSR6YSA9IG5ldyBwbHVnaW
5idWRkeV9QY2xaaXAoICR0ZW1wX3ppcCApOwoJCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCgkJCQl9IGNhd
GNoICggRXhjZXB0aW9uICRlICkgewoJCQkKCQkJCQkvLyBTb21ldGhpbmcgZmlzaHkgLSB0aGUgbWV0aG9k
cyBpbmRpY2F0ZWQgcGNsemlwIGJ1dCB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBjbGFzcwoJCQkJCSRlcnJvcl9
zdHJpbmcgPSAkZS0+Z2V0TWVzc2FnZSgpOwoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaW
xzJywgc3ByaW50ZiggX18oJ3BjbHppcCBpbmRpY2F0ZWQgYXMgYXZhaWxhYmxlIG1ldGhvZCBidXQgZXJyb
3IgcmVwb3J0ZWQ6ICUxJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkZXJyb3Jfc3RyaW5nICkgKTsK
CQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkKCQkJCX0KCQkJCgkJCQkvLyBPbmx5IGNvbnRpbnVlIGlmIHd
lIGhhdmUgYSB2YWxpZCBhcmNoaXZlIG9iamVjdAoJCQkJaWYgKCB0cnVlID09PSAkcmVzdWx0ICkgewoJCQ
kJCgkJCQkJLy8gQmFzaWMgYXJndW1lbnQgbGlzdAoJCQkJCSRhcmd1bWVudHMgPSBhcnJheSgpOwoJCQkJC
WFycmF5X3B1c2goICRhcmd1bWVudHMsICR2aXJ0dWFsX2ZpbGVfbGlzdCApOwoKCQkJCQkkY29tbWFuZCA9
ICdncm93JzsKCQkJCQkkb3V0cHV0ID0gY2FsbF91c2VyX2Z1bmNfYXJyYXkoIGFycmF5KCAmJHphLCAkY29
tbWFuZCApLCAkYXJndW1lbnRzICk7CgkJCQkJCg
kJCQkJaWYgKCBpc19hcnJheSggJG91dHB1dCApICkgewoJCQkJCQoJCQkJCQkvLyBBcnJheSByZXR1cm4ga
W1wbGllcyBmaWxlcyB3ZSBhZGRlZCAtIGZvciBub3cgd2UnbGwgbm90IGFjdHVhbGx5IGNoZWNrIGZvciBw
cm9ibGVtcwoJCQkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQkJCgkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQk
JJHJlc3VsdCA9IGZhbHNlOwoJCQkJCQkKCQkJCQl9CgoJCQkJfQoJCQkJCgkJCX0KCQkJCgkJICAJaWYgKC
BOVUxMICE9ICR6YSApIHsgdW5zZXQoICR6YSApOyB9CgkJICAJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkJC
QkKCQl9CgoJCQoJCS8qKgoJCSAqCWNyZWF0ZSgpCgkJICoJCgkJICoJQSBmdW5jdGlvbiB0aGF0IGNyZWF0
ZXMgYW4gYXJjaGl2ZSBmaWxlCgkJICoJCgkJICoJVGhlICRleGNsdWRlcyB3aWxsIGJlIGEgbGlzdCBvciB
yZWxhdGl2ZSBwYXRoIGV4Y2x1ZGVzIGlmIHRoZSAkbGlzdG1ha2VyIG9iamVjdCBpcyBOVUxMIG90ZWhyd2
lzZQoJCSAqCXdpbGwgYmUgYWJzb2x1dGUgcGF0aCBleGNsdWRlcyBhbmQgcmVsYXRpdmUgcGF0aCBleGNsd
WRlcyBjYW4gYmUgaGFkIGZyb20gdGhlICRsaXN0bWFrZXIgb2JqZWN0CgkJICoJCgkJICoJQHBhcmFtCQlz
dHJpbmcJJHppcAkJCUZ1bGwgcGF0aCAmIGZpbGVuYW1lIG9mIFpJUCBBcmNoaXZlIGZpbGUgdG8gY3JlYXR
lCgkJICoJQHBhcmFtCQlzdHJpbmcJJGRpcgkJCUZ1bGwgcGF0aCBvZiBkaXJlY3RvcnkgdG8gYWRkIHRvIF
pJUCBBcmNoaXZlIGZpbGUKCQkgKglAcGFyYW1lCQlhcnJheQkkZXhjbHVkZXMJCUxpc3Qgb2YgZWl0aGVyI
GFic29sdXRlIHBhdGggZXhjbHVzaW9ucyBvciByZWxhdGl2ZSBleGNsdXNpb25zCgkJICoJQHBhcmFtCQlz
dHJpbmcJJHRlbXBkaXIJCUZ1bGwgcGF0aCBvZiBkaXJlY3RvcnkgZm9yIHRlbXBvcmFyeSB1c2FnZQoJCSA
qCUBwYXJhbQkJb2JqZWN0CSRsaXN0bWFrZXIJCVRoZSBvYmplY3QgZnJvbSB3aGljaCB3ZSBjYW4gZ2V0IG
FuIGluY2x1c2lvbnMgbGlzdAoJCSAqCUByZXR1cm4JCWJvb2wJCQkJCVRydWUgaWYgdGhlIGNyZWF0aW9uI
HdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBj
cmVhdGUoICR6aXAsICRkaXIsICRleGNsdWRlcywgJHRlbXBkaXIsICRsaXN0bWFrZXIgPSBOVUxMICkgewo
JCQoJCQkkemEgPSBOVUxMOwoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCSRleGl0Y29kZSA9IDA7CgkJCSR6aX
Bfb3V0cHV0ID0gYXJyYXkoKTsKCQkJJHRlbXBfemlwID0gJyc7CgkJCSRleGNsdWRpbmdfYWRkaXRpb25hb
CA9IGZhbHNlOwoJCQkkZXhjbHVkZV9jb3VudCA9IDA7CgkJCSRleGNsdXNpb25zID0gYXJyYXkoKTsKCQkJ
JHRlbXBfZmlsZV9jb21wcmVzc2lvbl90aHJlc2hvbGQgPSA1OwoJCQkkcHJlX2FkZF9mdW5jID0gJyc7Cgk
JCSRoYXZlX3ppcF9lcnJvcnMgPSBmYWxzZTsKCQkJJHppcF9lcnJvcnNfY291bnQgPSAwOwoJCQkkemlwX2
Vycm9ycyA9IGFycmF5KCk7CgkJCSRoYXZlX3ppcF93YXJuaW5ncyA9IGZhbHNlOwoJCQkkemlwX3dhcm5pb
mdzX2NvdW50ID0gMDsKCQkJJHppcF93YXJuaW5ncyA9IGFycmF5KCk7CgkJCSRoYXZlX3ppcF9hZGRpdGlv
bnMgPSBmYWxzZTsKCQkJJHppcF9hZGRpdGlvbnNfY291bnQgPSAwOwoJCQkkemlwX2FkZGl0aW9ucyA9IGF
ycmF5KCk7CgkJCSRoYXZlX3ppcF9kZWJ1ZyA9IGZhbHNlOwoJCQkkemlwX2RlYnVnX2NvdW50ID0gMDsKCQ
kJJHppcF9kZWJ1ZyA9IGFycmF5KCk7CgkJCSRoYXZlX3ppcF9vdGhlciA9IGZhbHNlOwoJCQkkemlwX290a
GVyX2NvdW50ID0gMDsKCQkJJHppcF9vdGhlciA9IGFycmF5KCk7CgkJCSR6aXBfaWdub3Jpbmdfc3ltbGlu
a3MgPSBmYWxzZTsKCQkJJHN5bWxpbmtzX2ZvdW5kID0gYXJyYXkoKTsKCQkJCgkJCS8vIFRoZSBiYXNlZGl
yIG11c3QgaGF2ZSBhIHRyYWlsaW5nIG5vcm1hbGl6ZWQgZGlyZWN0b3J5IHNlcGFyYXRvcgoJCQkkYmFzZW
RpciA9ICggcnRyaW0oIHRyaW0oICRkaXIgKSwgc2VsZjo6RElSRUNUT1JZX1NFUEFSQVRPUlMgKSApIC4gc
2VsZjo6Tk9STV9ESVJFQ1RPUllfU0VQQVJBVE9SOwoJCQoJCQkvLyBOb3JtYWxpemUgcGxhdGZvcm0gc3Bl
Y2lmaWMgZGlyZWN0b3J5IHNlcGFyYXRvcnMgaW4gcGF0aAoJCQkkYmFzZWRpciA9IHN0cl9yZXBsYWNlKCB
ESVJFQ1RPUllfU0VQQVJBVE9SLCBzZWxmOjpOT1JNX0RJUkVDVE9SWV9TRVBBUkFUT1IsICRiYXNlZGlyIC
k7CgkJCQoJCQkvLyBFbnN1cmUgbm8gc3RhbGUgZmlsZSBpbmZvcm1hdGlvbgoJCQljbGVhcnN0YXRjYWNoZ
SgpOwoJCQkKCQkJLy8gTm90ZTogY291bGQgZW5mb3JjZSB0cmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9y
IGZvciByb2J1c3RuZXNzCgkJCWlmICggZW1wdHkoICR0ZW1wZGlyICkgfHwgIWZpbGVfZXhpc3RzKCAkdGV
tcGRpciApICkgewoJCQkKCQkJCS8vIFRoaXMgYnJlYWtzIHRoZSBydWxlIG9mIHNpbmdsZSBwb2ludCBvZi
BleGl0IChhdCBlbmQpIGJ1dCBpdCdzIGVhcmx5IGVub3VnaCB0byBub3QgYmUgYSBwcm9ibGVtCgkJCQlwY
l9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdUZW1wb3Jhcnkgd29ya2luZyBkaXJlY3Rv
cnkgbXVzdCBiZSBhdmFpbGFibGUuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwkJCQkKCQkJCXJldHV
ybiBmYWxzZTsKCQkJCQoJCQl9CgkJCQoJCQkvLyBMb2cgdGhlIHRlbXBvcmFyeSB3b3JraW5nIGRpcmVjdG
9yeSBzbyB3ZSBtaWdodCBiZSBhYmxlIHRvIHNwb3QgcHJvYmxlbXMKCQkJcGJfYmFja3VwYnVkZHk6OnN0Y
XR1cyggJ2RldGFpbHMnLCBfXygnWmlwIHByb2Nlc3MgcmVwb3J0ZWQ6IFRlbXBvcmFyeSB3b3JraW5nIGRp
cmVjdG9yeSBhdmFpbGFibGU6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnYCcgLiAkdGVtcGRpciA
uICdgJyApOwkJCQkKCQkJCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgX18oJ1VzaW
5nIENvbXBhdGliaWxpdHkgTW9kZS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCXBiX2JhY2t1c
GJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgX18oJ0lmIHlvdXIgYmFja3VwIHRpbWVzIG91dCBpbiBDb21w
YXRpYmlsaXR5IE1vZGUgdHJ5IGRpc2FibGluZyB6aXAgY29tcHJlc3Npb24gaW4gU2V0dGluZ3MuJywnaXQ
tbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkKCQkJLy8gV2UgbmVlZCB0byBmb3JjZSB0aGUgcGNsemlwIG
xpYnJhcnkgdG8gbG9hZCBhdCB0aGlzIHBvaW50IGlmIGl0IGlzCgkJCS8vIG5vdCBhbHJlYWR5IGxvYWRlZ
CBzbyB0aGF0IHdlIGNhbiB1c2UgZGVmaW5lZCBjb25zdGFudHMgaXQgY3JlYXRlcwoJCQkvLyBidXQgd2Ug
ZG9uJ3QgYWN0dWFsbHkgd2FudCB0byBjcmVhdGUgYSB6aXAgYXJjaGl2ZSBhdCB0aGlzIHBvaW50LgoJCQk
vLyBXZSBjYW4gYWxzbyB1c2UgdGhpcyBhcyBhbiBlYXJseSB0ZXN0IG9mIGJlaW5nIGFibGUgdG8gdXNlIH
RoZSBsaWJyYXJ5CgkJCS8vIGFzIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBpZiB0aGUgY2xhc3MgZ
G9lcyBub3QgZXhpc3QuCgkJCS8vIE5vdGUgdGhhdCB0aGlzIGlzIG9ubHkgcmVhbGx5IHJlcXVpcmVkIHdo
ZW4gemlwIG1ldGhvZCBjYWNoaW5nIGlzCgkJCS8vIGluIHVzZSwgaWYgdGhpcyBpcyBkaXNhYmxlZCB0aGV
uIHRoZSBsaWJyYXJ5IHdvdWxkIGFscmVhZHkgaGF2ZSBiZWVuCgkJCS8vIGxvYWRlZCBieSB0aGUgbWV0aG
9kIHRlc3RpbmcuCQkJCgkJCXRyeSB7CgkJCQkKCQkJCS8vIFNlbGVjdCB0byBqdXN0IGxvYWQgdGhlIHBjb
HppcCBsaWJyYXJ5IG9ubHkgYW5kIHRlbGwgaXQgdGhlCgkJCQkvLyB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRv
IHVzZSBpZiByZXF1aXJlZCAodGhpcyBpcyBvbmx5IHBvc3NpYmxlCgkJCQkvLyBpZiBpdCBoYXNuJ3QgYWx
yZWFkeSBiZWVuIGxvYWRlZCBhbmQgdGhlIHRlbXAgZGlyIGRlZmluZWQpCgkJCQkkemEgPSBuZXcgcGx1Z2
luYnVkZHlfUGNsWmlwKCAiIiwgdHJ1ZSwgJHRlbXBkaXIgKTsKCQkJCQoJCQkJLy8gV2UgaGF2ZSBubyBwd
XJwb3NlIGZvciB0aGlzIG9iamVjdCBhbnkgbG9uZ2VyLCB0aGUgbGlicmFyeQoJCQkJLy8gd2lsbCByZW1h
aW4gbG9hZGVkCgkJCQl1bnNldCggJHphICk7CgkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCgkJCX0gY2F0Y2g
gKCBFeGNlcHRpb24gJGUgKSB7CgkJCgkJCQkvLyBTb21ldGhpbmcgZmlzaHkgLSB0aGUgbWV0aG9kcyBpbm
RpY2F0ZWQgcGNsemlwIGJ1dCB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBjbGFzcwoJCQkJJGVycm9yX3N0cmluZ
yA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNw
cmludGYoIF9fKCdaaXAgcHJvY2VzcyByZXBvcnRlZDogcGNsemlwIGluZGljYXRlZCBhcyBhdmFpbGFibGU
gbWV0aG9kIGJ1dCBlcnJvciByZXBvcnRlZDogJTEkcycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICRlcn
Jvcl9zdHJpbmcgKSApOwoJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkKCQkJfQoJCQkKCQkJLy8gT25seSBjb
250aW51ZSBpZiBwY2x6aXAgaXMgYWN0dWFsbHkgYXZhaWxhYmxlCgkJCWlmICggdHJ1ZSA9PT0gJHJlc3Vs
dCApIHsKCQkJCgkJCQkvLyBEZWNpZGUgd2hldGhlciB3ZSBhcmUgb2ZmZXJpbmcgZXhjbHVzaW9ucyBvciB
ub3QKCQkJCS8vIE5vdGUgdGhhdCB1bmxpa2UgcHJvYyBhbmQgemlwIHdlIGFsd2F5cyB1c2UgaW5jbHVzaW
9uIGlmIGF2YWlsYWJsZSB0byBvZmZlciBleGNsdXNpb24gY2FwYWJpbGl0eSBmb3IgcGNsemlwCgkJCQlpZ
iAoIGlzX29iamVjdCggJGxpc3RtYWtlciApICkgewoJCQkJCgkJCQkJLy8gTmVlZCB0byBnZXQgdGhlIHJl
bGF0aXZlIGV4Y2x1c2lvbnMgc28gd2UgY2FuIGxvZyB3aGF0IGlzIGJlaW5nIGV4Y2x1ZGVkLi4uCgkJCQk
JJGV4Y2x1c2lvbnMgPSAkbGlzdG1ha2VyLT5nZXRfcmVsYXRpdmVfZXhjbHVkZXMoICRiYXNlZGlyICk7Cg
kJCQkKCQkJCQkvLyBCdWlsZCB0aGUgZXhjbHVzaW9uIGxpc3QgLSBmaXJzdCB0aGUgcmVsYXRpdmUgZGlyZ
WN0b3JpZXMKCQkJCQlpZiAoIGNvdW50KCAkZXhjbHVzaW9ucyApID4gMCApIHsKCQkJCQoJCQkJCQlwYl9i
YWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdDYWxjdWxhdGluZyBkaXJlY3Rvcmllcy9maWx
lcyB0byBleGNsdWRlIGZyb20gYmFja3VwIChyZWxhdGl2ZSB0byBzaXRlIHJvb3QpLicsJ2l0LWwxMG4tYm
Fja3VwYnVkZHknICkgKTsKCQkJCQkKCQkJCQkJZm9yZWFjaCAoICRleGNsdXNpb25zIGFzICRleGNsdWRlI
CkgewoJCQkJCQoJCQkJCQkJaWYgKCAhc3Ryc3RyKCAkZXhjbHVkZSwgJ2JhY2t1cGJ1ZGR5X2JhY2t1cHMn
ICkgKSB7CgkKCQkJCQkJCQkvLyBTZXQgdmFyaWFibGUgdG8gc2hvdyB3ZSBhcmUgZXhjbHVkaW5nIGFkZGl
0aW9uYWwgZGlyZWN0b3JpZXMgYmVzaWRlcyBiYWNrdXAgZGlyLgoJCQkJCQkJCSRleGNsdWRpbmdfYWRkaX
Rpb25hbCA9IHRydWU7CgkJCQkJCQkJCgkJCQkJCQl9CgkJCQkJCQkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5O
jpzdGF0dXMoICdkZXRhaWxzJywgX18oJ0V4Y2x1ZGluZycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAn
OiAnIC4gJGV4Y2x1ZGUgKTsKCQkJCQkJCgkJCQkJCQkkZXhjbHVkZV9jb3VudCsrOwoJCQkJCQkJCgkJCQk
JCX0KCQkJCQkKCQkJCQl9CgkJCQkKCQkJCQoJCQkJCWlmICggdHJ1ZSA9PT0gJGV4Y2x1ZGluZ19hZGRpdG
lvbmFsICkgewoJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgX18oICdFe
GNsdWRpbmcgYXJjaGl2ZXMgZGlyZWN0b3J5IGFuZCBhZGRpdGlvbmFsIGRpcmVjdG9yaWVzIGRlZmluZWQg
aW4gc2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICcgJyAuICRleGNsdWRlX2NvdW50IC4
gJyAnIC4gX18oICd0b3RhbCcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnLicgKTsKCQkJCQkKCQkJCQ
l9IGVsc2UgewoJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgX18oICdPb
mx5IGV4Y2x1ZGluZyBhcmNoaXZlcyBkaXJlY3RvcnkgYmFzZWQgb24gc2V0dGluZ3MuJywnaXQtbDEwbi1i
YWNrdXBidWRkeScgKSAuICcgJyAuICRleGNsdWRlX2NvdW50IC4gJyAnIC4gX18oICd0b3RhbCcsJ2l0LWw
xMG4tYmFja3VwYnVkZHknICkgLiAnLicgKTsKCQkJCQkKCQkJCQl9CgkJCQkKCQkJCQkvLyBOb3cgZ2V0IH
RoZSBsaXN0IGZyb20gdGhlIHRvcCBub2RlCgkJCQkJJHRoZV9saXN0ID0gJGxpc3RtYWtlci0+Z2V0X3Rlc
m1pbmFscygpOwoJCQkJCgkJCQkJLy8gUmV0YWluIHRoaXMgZm9yIHJlZmVyZW5jZSBmb3Igbm93CgkJCQkJ
Ly9maWxlX3B1dF9jb250ZW50cyggKCBkaXJuYW1lKCAkdGVtcGRpciApIC4gRElSRUNUT1JZX1NFUEFSQVR
PUiAuIHNlbGY6OlpJUF9DT05URU5UX0ZJTEVfTkFNRSApLCBwcmludF9yKCAkdGhlX2xpc3QsIHRydWUgKS
ApOwoJCQkKCQkJCX0gZWxzZSB7CgkJCgkJCQkJLy8gV2UgZG9uJ3QgaGF2ZSB0aGUgaW5jbHVzaW9uIGxpc
3Qgc28gd2UgYXJlIG5vdCBvZmZlcmluZyBleGNsdXNpb25zCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1
cyggJ21lc3NhZ2UnLCBfXygnV0FSTklORzogRGlyZWN0b3J5L2ZpbGUgZXhjbHVzaW9uIHVuYXZhaWxhYmx
lIGluIENvbXBhdGliaWxpdHkgTW9kZS4gRXZlbiBleGlzdGluZyBvbGQgYmFja3VwcyB3aWxsIGJlIGJhY2
tlZCB1cC4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJJHRoZV9saXN0ID0gYXJyYXkoICRka
XIgKTsKCQkJCgkJCQl9CgkJCgkJCQkvLyBHZXQgc3RhcnRlZCB3aXRoIG91dCB6aXAgb2JqZWN0CgkJCQkv
LyBQdXQgb3VyIGZpbmFsIHppcCBmaWxlIGluIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IC0gaXQgd2lsbCB
iZSBtb3ZlZCBsYXRlcgoJCQkJJHRlbXBfemlwID0gJHRlbXBkaXIgLiBiYXNlbmFtZSggJHppcCApOwoJCQ
kKCQkJCS8vIFRoaXMgc2hvdWxkIGdpdmUgdXMgYSBuZXcgYXJjaGl2ZSBvYmplY3QsIG9mIG5vdCBjYXRja
CBpdCBhbmQgYmFpbCBvdXQKCQkJCXRyeSB7CgkJCQkJCgkJCQkJJHphID0gbmV3IHBsdWdpbmJ1ZGR5X1Bj
bFppcCggJHRlbXBfemlwICk7CgkJCQkJJHJlc3VsdCA9IHRydWU7CgkJCQkKCQkJCX0gY2F0Y2ggKCBFeGN
lcHRpb24gJGUgKSB7CgkJCQoJCQkJCS8vIFNvbWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2RzIGluZGljYX
RlZCBwY2x6aXAgYnV0IHdlIGNvdWxkbid0IGZpbmQgdGhlIGNsYXNzCgkJCQkJJGVycm9yX3N0cmluZyA9I
CRlLT5nZXRNZXNzYWdlKCk7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJp
bnRmKCBfXygncGNsemlwIGluZGljYXRlZCBhcyBhdmFpbGFibGUgbWV0aG9kIGJ1dCBlcnJvciByZXBvcnR
lZDogJTEkcycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJCSRyZX
N1bHQgPSBmYWxzZTsKCQkJCQoJCQkJfQoJCQkKC
QkJCS8vIE9ubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHZhbGlkIGFyY2hpdmUgb2JqZWN0CgkJCQlpZiAo
IHRydWUgPT09ICRyZXN1bHQgKSB7CgkJCQoJCQkJCS8vIEJhc2ljIGFyZ3VtZW50IGxpc3QKCQkJCQkkYXJ
ndW1lbnRzID0gYXJyYXkoKTsKCQkJCQlhcnJheV9wdXNoKCAkYXJndW1lbnRzLCAkdGhlX2xpc3QgKTsKCQ
kJCQlhcnJheV9wdXNoKCAkYXJndW1lbnRzLCBQQ0xaSVBfT1BUX1JFTU9WRV9QQVRILCAkZGlyICk7CQkJC
QoKCQkJCQlpZiAoIHRydWUgIT09ICR0aGlzLT5nZXRfY29tcHJlc3Npb24oKSApIHsKCQkJCQoJCQkJCQkv
LyBOb3RlOiBkb24ndCBuZWVkIHRvIGZvcmNlIHVzZSBvZiB0ZW1wb3JhcnkgZmlsZXMgZm9yIGNvbXByZXN
zaW9uCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1ppcCBhcmNoaXZlIG
NyZWF0aW9uIGNvbXByZXNzaW9uIGRpc2FibGVkIGJhc2VkIG9uIHNldHRpbmdzLicsJ2l0LWwxMG4tYmFja
3VwYnVkZHknICkgKTsKCQkJCQkJYXJyYXlfcHVzaCggJGFyZ3VtZW50cywgUENMWklQX09QVF9OT19DT01Q
UkVTU0lPTiApOwoJCQkJCQoJCQkJCX0gZWxzZSB7CgkKCQkJCQkJLy8gTm90ZTogZm9yY2UgdGhlIHVzZSB
vZiB0ZW1wb3JhcnkgZmlsZXMgZm9yIGNvbXByZXNzaW9uIHdoZW4gZmlsZSBzaXplIGV4Y2VlZHMgZ2l2ZW
4gdmFsdWUuCgkJCQkJCS8vIFRoaXMgb3Zlci1yaWRlcyB0aGUgImF1dG8tc2Vuc2UiIHdoaWNoIGlzIGJhc
2VkIG9uIG1lbW9yeV9saW1pdCBhbmQgdGhpcyBfbWF5XyBpbmRpY2F0ZSBhCgkJCQkJCS8vIG1lbW9yeSBh
dmFpbGFiaWxpdHkgdGhhdCBpcyBoaWdoZXIgdGhhbiByZWFsaXR5IGxlYWRpbmcgdG8gbWVtb3J5IGFsbG9
jYXRpb24gZmFpbHVyZSBpZgoJCQkJCQkvLyB0cnlpbmcgdG8gY29tcHJlc3MgbGFyZ2UgZmlsZXMuIFNldC
B0aGUgdGhyZXNob2xkIGxvdyBlbm91Z2ggKHNwZWNpZnkgaW4gTUIpIHNvIHRoYXQgZXhjZXB0IGluCgkJC
QkJCS8vIFRoZSB0aWdodGVzdCBtZW1vcnkgc2l0dWF0aW9ucyB3ZSBzaG91bGQgYmUgb2suIENvdWxkIGhh
dmUgb3B0aW9uIHRvIGZvcmNlIHVzZSBvZiB0ZW1wb3JhcnkKCQkJCQkJLy8gZmlsZXMgcmVnYXJkbGVzcy4
KCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnWmlwIGFyY2hpdmUgY3JlYX
Rpb24gY29tcHJlc3Npb24gZW5hYmxlZCBiYXNlZCBvbiBzZXR0aW5ncy4nLCdpdC1sMTBuLWJhY2t1cGJ1Z
GR5JyApICk7CgkJCQkJCWFycmF5X3B1c2goICRhcmd1bWVudHMsIFBDTFpJUF9PUFRfVEVNUF9GSUxFX1RI
UkVTSE9MRCwgJHRlbXBfZmlsZV9jb21wcmVzc2lvbl90aHJlc2hvbGQgKTsKCQkJCQkJCgkJCQkJfQoJCQk
JCgkJCQkJLy8gQ2hlY2sgaWYgaWdub3JpbmcgKG5vdCBmb2xsb3dpbmcpIHN5bWxpbmtzCgkJCQkJaWYgKC
B0cnVlID09PSAkdGhpcy0+Z2V0X2lnbm9yZV9zeW1saW5rcygpICkgewoJCQkKCQkJCQkJLy8gV2FudCB0b
yBub3QgZm9sbG93IHN5bWxpbmtzIHNvIHNldCBmbGFnIGZvciBsYXRlciB1c2UKCQkJCQkJJHppcF9pZ25v
cmluZ19zeW1saW5rcyA9IHRydWU7CgkJCQkKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGF
pbHMnLCBfXygnWmlwIGFyY2hpdmUgY3JlYXRpb24gc3ltYm9saWMgbGlua3Mgd2lsbCBiZSBpZ25vcmVkIG
Jhc2VkIG9uIHNldHRpbmdzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCgkJCQkJfSBlbHNlIHsKC
QkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1ppcCBhcmNoaXZlIGNy
ZWF0aW9uIHN5bWJvbGljIGxpbmtzIHdpbGwgbm90IGJlIGlnbm9yZWQgYmFzZWQgb24gc2V0dGluZ3MuJyw
naXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoKCQkJCQl9CgkJCQoJCQkJCS8vIENoZWNrIGlmIHdlIGFyZS
BpZ25vcmluZyB3YXJuaW5ncyAtIG1lYW5pbmcgY2FuIHN0aWxsIGdldCBhIGJhY2t1cCBldmVuCgkJCQkJL
y8gaWYsIGUuZy4sIHNvbWUgZmlsZXMgY2Fubm90IGJlIHJlYWQKCQkJCQlpZiAoIHRydWUgPT09ICR0aGlz
LT5nZXRfaWdub3JlX3dhcm5pbmdzKCkgKSB7CgkJCQkKCQkJCQkJLy8gTm90ZTogd2FybmluZ3MgYXJlIGJ
laW5nIGlnbm9yZWQgYnV0IHdpbGwgc3RpbGwgYmUgZ2F0aGVyZWQgYW5kIGxvZ2dlZAoJCQkJCQlwYl9iYW
NrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaaXAgYXJjaGl2ZSBjcmVhdGlvbiBhY3Rpb25hY
mxlIHdhcm5pbmdzIHdpbGwgYmUgaWdub3JlZCBiYXNlZCBvbiBzZXR0aW5ncy4nLCdpdC1sMTBuLWJhY2t1
cGJ1ZGR5JyApICk7CgkJCQkJCgkJCQkJfSBlbHNlIHsKCQkJCQoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3R
hdHVzKCAnZGV0YWlscycsIF9fKCdaaXAgYXJjaGl2ZSBjcmVhdGlvbiBhY3Rpb25hYmxlIHdhcm5pbmdzIH
dpbGwgbm90IGJlIGlnbm9yZWQgYmFzZWQgb24gc2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgK
SApOwoKCQkJCQl9CgkJCQkKCQkJCQkvLyBVc2UgYW5vbnltb3VzIGZ1bmN0aW9uIHRvIHdlZWQgb3V0IHRo
ZSB1bnJlYWRhYmxlIGFuZCBub24tZXhpc3RlbnQgZmlsZXMgKGNvbW1vbiByZWFzb24gZm9yIGZhaWx1cmU
pCgkJCQkJLy8gYW5kIHBvc3NpYmx5IHN5bWxpbmtzIGJhc2VkIG9uIHVzZXIgc2V0dGluZ3MuCgkJCQkJLy
8gUGNsWmlwIHdpbGwgcmVjb3JkIHRoZXNlIGZpbGVzIGFzICdza2lwcGVkJyBpbiB0aGUgZmlsZSBzdGF0d
XMgYW5kIHdlIGNhbiBwb3N0LXByb2Nlc3MgdG8gZGV0ZXJtaW5lCgkJCQkJLy8gaWYgd2UgaGFkIGFueSBv
ZiB0aGVzZSBhbmQgaGVuY2UgZWl0aGVyIHN0b3AgdGhlIGJhY2t1cCBvciBjb250aW51ZSBkZXBlbmRlbnQ
gb24gd2hldGhlciB0aGUgdXNlcgoJCQkJCS8vIGhhcyBjaG9zZW4gdG8gaWdub3JlIHdhcm5pbmdzIG9yIG
5vdCBhbmQvb3IgaWdub3JlIHN5bWxpbmtzIG9yIG5vdC4KCQkJCQkvLyBVbmZvcnR1bmF0ZWx5IHdlIGNhb
m5vdCBkaXJlY3RseSB0YWcgdGhlIGZpbGUgd2l0aCB0aGUgcmVhc29uIHdoeSBpdCBoYXMgYmVlbiBza2lw
cGVkIHNvIHdoZW4gd2UKCQkJCQkvLyBoYXZlIHRvIHByb2Nlc3MgdGhlIHNraXBwZWQgaXRlbXMgd2UgaGF
2ZSB0byB0cnkgYW5kIHdvcmsgb3V0IHdoeSBpdCB3YXMgc2tpcHBlZCAtIGJ1dCBzaG91bGRuJ3QKCQkJCQ
kvLyBiZSB0b28gaGFyZC4KCQkJCQkvLyBUT0RPOiBDb25zaWRlciBtb3ZpbmcgdGhpcyBpbnRvIHRoZSBQY
2xaaXAgd3JhcHBlciBhbmQgaGF2ZSBhIG1ldGhvZCB0byBzZXQgdGhlIHZhcmlvdXMgcHJlL3Bvc3QKCQkJ
CQkvLyBmdW5jdGlvbnMgb3Igc2VsZWN0IHByZWRlZmluZWQgZnVuY3Rpb25zIChzdWNoIGFzIHRoaXMpLgo
JCQkJCWlmICggdHJ1ZSApIHsKCQkJCQoJCQkJCQkvLyBOb3RlOiBUaGlzIGNvdWxkIGJlIHNpbXBsaWZpZW
QgLSBpdCdzIHdyaXR0ZW4gdG8gYmUgZXh0ZW5zaWJsZSBidXQgbWF5IG5vdCBuZWVkIHRvIGJlCgkJCQkJC
SRhcmdzID0gJyRldmVudCwgJiRoZWFkZXInOwoJCQkJCQkkY29kZSA9ICcnOwoJCQkJCQkkY29kZSAuPSAn
c3RhdGljICRzeW1saW5rcyA9IGFycmF5KCk7ICc7CgkJCQkJCSRjb2RlIC49ICckcmVzdWx0ID0gdHJ1ZTs
gJzsKCQkJCQkKCQkJCQkJLy8gSGFuZGxlIHN5bWxpbmtzIC0ga2VlcCB0aGUgdHdvIGNhc2VzIG9mIGlnbm
9yaW5nL25vdC1pZ25vcmluZyBzZXBhcmF0ZSBmb3Igbm93IHRvIG1ha2UgbG9naWMgbW9yZQoJCQkJCQkvL
yBhcHBhcmVudCAtIGJ1dCBjb3VsZCBiZSBtZXJnZWQgd2l0aCBkaWZmZXJlbnQgY29uZGl0aW9uYWwgaGFu
ZGxpbmcKCQkJCQkJLy8gRm9yIGEgdmFsaWQgc3ltbGluazogaXNfbGluaygpIC0+IHRydWU7IGlzX2ZpbGU
oKS9pc19kaXIoKSAtPiB0cnVlOyBmaWxlX2V4aXN0cygpIC0+IHRydWUKCQkJCQkJLy8gRm9yIGEgYnJva2
VuIHN5bWxpbms6IGlzX2xpbmsoKSAtPiB0cnVlOyBpc19maWxlKCkvaXNfZGlyKCkgLT4gZmFsc2U7IGZpb
GVfZXhpc3RzKCkgLT4gZmFsc2UKCQkJCQkJLy8gTm90ZTogcGNsemlwIGZpcnN0IHRlc3RzIGV2ZXJ5IGZp
bGUgdXNpbmcgZmlsZV9leGlzdHMoKSBiZWZvcmUgZXZlciB0cnlpbmcgdG8gYWRkIHRoZSBmaWxlIHNvCgk
JCQkJCS8vIGZvciBhIGJyb2tlbiBzeW1saW5rIGl0IHdpbGwgX2Fsd2F5c18gZXJyb3Igb3V0IGltbWVkaW
F0ZWx5IGl0IGRpc2NvdmVycyBhIGJyb2tlbiBzeW1saW5rIHNvCgkJCQkJCS8vIHdlIG5ldmVyIGhhdmUgY
SBjaGFuY2UgdG8gZmlsdGVyIHRoZXNlIG91dCBhdCB0aGlzIHN0YWdlLgoJCQkJCQlpZiAoIHRydWUgPT09
ICR6aXBfaWdub3Jpbmdfc3ltbGlua3MgKSB7CgkJCQkJCgkJCQkJCQkvLyBJZiBpdCdzIGEgc3ltbGluayB
vciBpdCdzIG5laXRoZXIgYSBmaWxlIG5vciBhIGRpcmVjdG9yeSB0aGVuIGlnbm9yZSBpdC4gQSBicm9rZW
4gc3ltbGluawoJCQkJCQkJLy8gd2lsbCBuZXZlciBnZXQgdGhpcyBmYXIgYmVjYXVzZSBwY2x6aXAgd2lsb
CBoYXZlIGNob2tlZCBvbiBpdAoJCQkJCQkJJGNvZGUgLj0gJ2lmICggKCB0cnVlID09PSAkcmVzdWx0ICkg
JiYgISggQGlzX2xpbmsoICRoZWFkZXJbXCdmaWxlbmFtZVwnXSApICkgKSB7ICc7CgkJCQkJCQkkY29kZSA
uPSAnICAgIGlmICggQGlzX2ZpbGUoICRoZWFkZXJbXCdmaWxlbmFtZVwnXSApIHx8IEBpc19kaXIoICRoZW
FkZXJbXCdmaWxlbmFtZVwnXSApICkgeyAnOwoJCQkJCQkJJGNvZGUgLj0gJyAgICAgICAgJHJlc3VsdCA9I
HRydWU7ICc7CgkJCQkJCQkkY29kZSAuPSAnICAgICAgICBmb3JlYWNoICggJHN5bWxpbmtzIGFzICRwcmVm
aXggKSB7ICc7CgkJCQkJCQkkY29kZSAuPSAnICAgICAgICAgICAgaWYgKCAhKCBmYWxzZSA9PT0gc3RycG9
zKCAkaGVhZGVyW1wnZmlsZW5hbWVcJ10sICRwcmVmaXggKSApICkgeyAnOwoJCQkJCQkJJGNvZGUgLj0gJy
AgICAgICAgICAgICAgICAkcmVzdWx0ID0gZmFsc2U7ICc7CgkJCQkJCQkkY29kZSAuPSAnICAgICAgICAgI
CAgICAgIGJyZWFrOyAnOwoJCQkJCQkJJGNvZGUgLj0gJyAgICAgICAgICAgICB9ICc7CgkJCQkJCQkkY29k
ZSAuPSAnICAgICAgICB9ICc7CgkJCQkJCQkkY29kZSAuPSAnICAgIH0gZWxzZSB7ICc7Ci8vCQkJCQkJCSR
jb2RlIC49ICcgICAgICAgIGVycm9yX2xvZyggIk5laXRoZXIgYSBmaWxlIG5vciBhIGRpcmVjdG9yeSAoaW
dub3JpbmcpOiBcJyIgLiAkaGVhZGVyW1wnZmlsZW5hbWVcJ10gLiAiXCciICk7ICc7CgkJCQkJCQkkY29kZ
SAuPSAnICAgICAgICAkcmVzdWx0ID0gZmFsc2U7ICc7CgkJCQkJCQkkY29kZSAuPSAnICAgIH0gJzsKCQkJ
CQkJCSRjb2RlIC49ICd9IGVsc2UgeyAnOwovLwkJCQkJCQkkY29kZSAuPSAnICAgIGVycm9yX2xvZyggIkZ
pbGUgaXMgYSBzeW1saW5rIChpZ25vcmluZyk6IFwnIiAuICRoZWFkZXJbXCdmaWxlbmFtZVwnXSAuICJcJy
IgKTsgJzsKCQkJCQkJCSRjb2RlIC49ICcgICAgJHN5bWxpbmtzW10gPSAkaGVhZGVyW1wnZmlsZW5hbWVcJ
107ICc7Ci8vCQkJCQkJCSRjb2RlIC49ICcgICAgZXJyb3JfbG9nKCAiU3ltbGlua3MgQXJyYXk6IFwnIiAu
IHByaW50X3IoICRzeW1saW5rcywgdHJ1ZSApIC4gIlwnIiApOyAnOwoJCQkJCQkJJGNvZGUgLj0gJyAgICA
kcmVzdWx0ID0gZmFsc2U7ICc7CgkJCQkJCQkkY29kZSAuPSAnfSAnOwoJCQkJCQkKCQkJCQkJfSBlbHNlIH
sKCQkJCQkKCQkJCQkJCS8vIElmIGl0J3MgbmVpdGhlciBhIGZpbGUgbm9yIGRpcmVjdG9yeSB0aGVuIGlnb
m9yZSBpdCAtIGEgdmFsaWQgc3ltbGluayB3aWxsIHJlZ2lzdGVyIGFzIGEgZmlsZQoJCQkJCQkJLy8gb3Ig
ZGlyZWN0b3J5IGRlcGVuZGVudCBvbiB3aGF0IGl0IGlzIHBvaW50aW5nIGF0LiBBIGJyb2tlbiBzeW1saW5
rIHdpbGwgbmV2ZXIgZ2V0IHRoaXMgZmFyLgoJCQkJCQkJJGNvZGUgLj0gJ2lmICggKCB0cnVlID09PSAkcm
VzdWx0ICkgJiYgKCBAaXNfZmlsZSggJGhlYWRlcltcJ2ZpbGVuYW1lXCddICkgfHwgQGlzX2RpciggJGhlY
WRlcltcJ2ZpbGVuYW1lXCddICkgKSApIHsgJzsKCQkJCQkJCSRjb2RlIC49ICcgICAgJHJlc3VsdCA9IHRy
dWU7ICc7CgkJCQkJCQkkY29kZSAuPSAnfSBlbHNlIHsgJzsKLy8JCQkJCQkJJGNvZGUgLj0gJyAgICBlcnJ
vcl9sb2coICJOZWl0aGVyIGEgZmlsZSBub3IgYSBkaXJlY3RvcnkgKGlnbm9yaW5nKTogXCciIC4gJGhlYW
RlcltcJ2ZpbGVuYW1lXCddIC4gIlwnIiApOyAnOwoJCQkJCQkJJGNvZGUgLj0gJyAgICAkcmVzdWx0ID0gZ
mFsc2U7ICc7CgkJCQkJCQkkY29kZSAuPSAnfSAnOwoJCQkJCQkKCQkJCQkJfQoJCQkJCQoJCQkJCQkvLyBB
ZGQgdGhlIGNvZGUgYmxvY2sgZm9yIGlnbm9yaW5nIHVucmVhZGFibGUgZmlsZXMKCQkJCQkJaWYgKCB0cnV
lICkgewoJCQkJCQoJCQkJCQkJJGNvZGUgLj0gJ2lmICggKCB0cnVlID09PSAkcmVzdWx0ICkgJiYgKCBAaX
NfcmVhZGFibGUoICRoZWFkZXJbXCdmaWxlbmFtZVwnXSApICkgKSB7ICc7CgkJCQkJCQkkY29kZSAuPSAnI
CAgICRyZXN1bHQgPSB0cnVlOyAnOwoJCQkJCQkJJGNvZGUgLj0gJ30gZWxzZSB7ICc7Ci8vCQkJCQkJCSRj
b2RlIC49ICcgICAgZXJyb3JfbG9nKCAiRmlsZSBub3QgcmVhZGFibGU6IFwnIiAuICRoZWFkZXJbXCdmaWx
lbmFtZVwnXSAuICJcJyIgKTsgJzsKCQkJCQkJCSRjb2RlIC49ICcgICAgJHJlc3VsdCA9IGZhbHNlOyAnOw
oJCQkJCQkJJGNvZGUgLj0gJ30gJzsKCQkJCQkKCQkJCQkJfQoJCQkJCQoJCQkJCQkvLyBSZXR1cm4gdHJ1Z
SAodG8gaW5jbHVkZSBmaWxlKSBpZiBmaWxlIHBhc3NlcyBjb25kaXRpb25zIG90aGVyd2lzZSBmYWxzZSAo
dG8gc2tpcCBmaWxlKSBpZiBub3QKCQkJCQkJJGNvZGUgLj0gJ3JldHVybiAoICggdHJ1ZSA9PT0gJHJlc3V
sdCApID8gMSA6IDAgKTsgJzsKCgkJCQkJCSRwcmVfYWRkX2Z1bmMgPSBjcmVhdGVfZnVuY3Rpb24oICRhcm
dzLCAkY29kZSApOwoJCQkJCgkJCQkJfQoJCQkJCgkJCQkJLy8gSWYgd2UgaGFkIGNhdXNlIHRvIGNyZWF0Z
SBhIHByZSBhZGQgZnVuY3Rpb24gdGhlbiBhZGQgaXQgdG8gdGhlIGFyZ3VtZW50IGxpc3QgaGVyZQoJCQkJ
CWlmICggIWVtcHR5KCAkcHJlX2FkZF9mdW5jICkgKSB7CgkJCQkKCQkJCQkJYXJyYXlfcHVzaCggJGFyZ3V
tZW50cywgUENMWklQX0NCX1BSRV9BREQsICRwcmVfYWRkX2Z1bmMgKTsKCQkKCQkJCQl9CgkJCQkKCQkJCQ
lpZiAoIEBmaWxlX2V4aXN0cyggJHppcCApICkgewoJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoI
CdkZXRhaWxzJywgX18oJ0V4aXN0aW5nIFpJUCBBcmNoaXZlIGZpbGUgd2lsbCBiZSByZXBsYWNlZC4nLCdp
dC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCUB1bmxpbmsoICR6aXAgKTsKCQoJCQkJCX0KCQkJCQo
JCQkJCS8vIGFkZCgpIG1ldGhvZCB3aWxsIGNyZWF0ZSBhcmNoaXZlIGZpbGUgaWYgaXQgZG9lc24ndCBhbG
VhZHkgZXhpc3QKCQkJCQkvLyRjb21tYW5kID0gJ2FkZCc7CgkJCQkJJGNvbW1hbmQgPSAnZ3Jvdyc7CgoJC
QkJCS8vIE5vdyBhY3R1YWxseSBjcmVhdGUgdGhl
IHppcCBhcmNoaXZlIGZpbGUKCQkJCQkvLyBGaXJzdCBpbXBsb2RlIGFueSBlbWJlZGRlZCBhcnJheSBpbiB
0aGUgYXJndW1lbnQgbGlzdCBhbmQgdHJ1bmNhdGUgdGhlIHJlc3VsdCBpZiB0b28gbG9uZwoJCQkJCS8vIE
Fzc3VtZSBubyBhcnJheXMgZW1iZWRkZWQgaW4gYXJyYXlzIC0gY3VycmVudGx5IG5vIHJlYXNvbiBmb3Igd
GhhdAoJCQkJCS8vIFRPRE86IE1ha2UgdGhlIHN1bW1hcnkgbGVuZ3RoIGNvbmZpZ3VyYWJsZSBzbyB0aGF0
IGNhbiBzZWUgbW9yZSBpZiByZXF1aXJlZAoJCQkJCS8vIFRPRE86IENvbnNpZGVyIG1hcHBpbmcgcGNseml
wIGFyZ3VtZW50IGlkZW50aWZpZXJzIHRvIHN0cmluZyByZXByZXNlbnRhdGlvbnMgZm9yIGNsYXJpdHkKCQ
kJCQkkYXJncyA9ICckaXRlbSc7CgkJCQkJJGNvZGUgPSAnaWYgKCBpc19hcnJheSggJGl0ZW0gKSApIHsgJ
HN0cmluZ19pdGVtID0gaW1wbG9kZSggIiwiLCAkaXRlbSk7IHJldHVybiAoICggc3RybGVuKCAkc3RyaW5n
X2l0ZW0gKSA8PSA1MCApID8gJHN0cmluZ19pdGVtIDogIkxpc3Q6ICIgLiBzdWJzdHIoICRzdHJpbmdfaXR
lbSwgMCwgNTAgKSAuICIuLi4iICk7IH0gZWxzZSB7IHJldHVybiAkaXRlbTsgfTsgJzsKCQkJCQkkaW1wbG
9kZXJfZnVuYyA9IGNyZWF0ZV9mdW5jdGlvbiggJGFyZ3MsICRjb2RlICk7CgkJCQkJJGltcGxvZGVkX2FyZ
3VtZW50cyA9IGFycmF5X21hcCggJGltcGxvZGVyX2Z1bmMsICRhcmd1bWVudHMgKTsKCQkJCQoJCQkJCXBi
X2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJHRoaXMtPmdldF9tZXRob2RfdGFnKCkgLiBfXyg
gJyBjb21tYW5kIGFyZ3VtZW50cycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gaW1wbG9kZS
ggJzsnLCAkaW1wbG9kZWRfYXJndW1lbnRzICkgKTsKCQkJCQoJCQkJCSRvdXRwdXQgPSBjYWxsX3VzZXJfZ
nVuY19hcnJheSggYXJyYXkoICYkemEsICRjb21tYW5kICksICRhcmd1bWVudHMgKTsKCQkJCQoJCQkJCS8v
IFdvcmsgb3V0IHdoZXRoZXIgd2UgaGF2ZSBhIHByb2JsZW0gb3Igbm90CgkJCQkJaWYgKCBpc19hcnJheSg
gJG91dHB1dCApICkgewoJCQkJCgkJCQkJCS8vIEl0J3MgYW4gYXJyYXkgc28gYXQgbGVhc3Qgd2UgcHJvZH
VjZWQgYSB6aXAgYXJjaGl2ZSAKCQkJCQkJJGV4aXRjb2RlID0gMDsKCQkJCQkKCQkJCQkJLy8gUHJvY2Vzc
yB0aGUgYXJyYXkgZm9yIGFueSAid2FybmluZ3MiIG9yIG90aGVyIHJlcG9ydGFibGUgY29uZGl0aW9ucwoJ
CQkJCQkkaWQgPSAwOyAvLyBDcmVhdGUgYSB1bmlxdWUga2V5IChsaWtlIGEgbGluZSBudW1iZXIpIGZvciB
sYXRlciBzb3J0aW5nCgkJCQkJCWZvcmVhY2goICRvdXRwdXQgYXMgJGZpbGUgKSB7CgkJCQkJCgkJCQkJCQ
lzd2l0Y2ggKCAkZmlsZVsgJ3N0YXR1cycgXSApIHsKCQkJCQkJCQljYXNlICJza2lwcGVkIjoKCQkJCQkJC
QoJCQkJCQkJCQkvLyBGaXJzdCBuZWVkIHRvIGZpbHRlciBvdXQgYW55IGZpbGVzIHNraXBwZWQgYmVjYXVz
ZSB1bmRlciBhIHN5bWxpbmsgZGlyCgkJCQkJCQkJCWZvcmVhY2ggKCAkc3ltbGlua3NfZm91bmQgYXMgJHB
yZWZpeCApIHsKCQkJCQkJCQkKCQkJCQkJCQkJCWlmICggISggZmFsc2UgPT09IHN0cnBvcyggJGZpbGVbIC
dmaWxlbmFtZScgXSwgJHByZWZpeCApICkgKSB7CgkJCQkJCQkJCQoJCQkJCQkJCQkJCSRpZCsrOwoJCQkJC
QkJCQkJCS8vIGJyZWFrIG91dCBvZiB0aGUgZm9yZWFjaCBhbmQgdGhlIHN3aXRjaAoJCQkJCQkJCQkJCWJy
ZWFrIDI7CgkJCQkJCQkJCQkKCQkJCQkJCQkJCX0KCQkJCQkJCQkJCgkJCQkJCQkJCX0KCQkJCQkJCQkKCQk
JCQkJCQkJLy8gRm9yIHNraXBwZWQgZmlsZXMgbmVlZCB0byBkZXRlcm1pbmUgd2h5IGl0IHdhcyBza2lwcG
VkCgkJCQkJCQkJCWlmICggKCB0cnVlID09PSAkemlwX2lnbm9yaW5nX3N5bWxpbmtzICkgJiYgQGlzX2xpb
msoICRmaWxlWyAnZmlsZW5hbWUnIF0gKSApIHsKCQkJCQkJCQkKCQkJCQkJCQkJCS8vIFJlbWVtYmVyIHRo
aXMgZm9yIGZpbHRlcmluZyBvdGhlciBmaWxlcyBza2lwcGVkIGJlY2F1c2UgaW4gc3ltbGluayBkaXJlY3R
vcnkKCQkJCQkJCQkJCSRzeW1saW5rc19mb3VuZFtdID0gJGZpbGVbICdmaWxlbmFtZScgXTsKCQkJCQkJCQ
kJCgkJCQkJCQkJCQkvLyBTa2lwcGVkIGJlY2F1c2Ugd2UgYXJlIGlnbm9yaW5nIHN5bWxpbmtzIGFuZCB0a
GlzIGlzIGEgc3ltbGluawoJCQkJCQkJCQkJJHppcF9vdGhlclsgc2VsZjo6WklQX09USEVSX0lHTk9SRURf
U1lNTElOSyBdWyAkaWQrKyBdID0gJGZpbGVbICdmaWxlbmFtZScgXTsKCQkJCQkJCQkJCSR6aXBfb3RoZXJ
fY291bnQrKzsKCQkJCQkJCQkJCgkJCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCgkJCQkJCQkJCQkvL1NraX
BwZWQgYmVjYXVzZSBwcm9iYWJseSB1bnJlYWRhYmxlIG9yIG5vbi1leGlzdGVudCAoY2F0Y2gtYWxsIGZvc
iBub3cpCgkJCQkJCQkJCQkkemlwX3dhcm5pbmdzWyBzZWxmOjpaSVBfV0FSTklOR19TS0lQUEVEIF1bICRp
ZCsrIF0gPSAkZmlsZVsgJ2ZpbGVuYW1lJyBdOwoJCQkJCQkJCQkJJHppcF93YXJuaW5nc19jb3VudCsrOwo
JCQkJCQkJCQkKCQkJCQkJCQkJfQoJCQkJCQkJCQlicmVhazsKCQkJCQkJCQljYXNlICJmaWx0ZXJlZCI6Cg
kJCQkJCQkJCSR6aXBfd2FybmluZ3NbIHNlbGY6OlpJUF9PVEhFUl9GSUxURVJFRCBdWyAkaWQrKyBdID0gJ
GZpbGVbICdmaWxlbmFtZScgXTsKCQkJCQkJCQkJJHppcF93YXJuaW5nc19jb3VudCsrOwoJCQkJCQkJCQli
cmVhazsKCQkJCQkJCQljYXNlICJmaWxlbmFtZV90b29fbG9uZyI6CgkJCQkJCQkJCSR6aXBfd2FybmluZ3N
bIHNlbGY6OlpJUF9PVEhFUl9MT05HUEFUSCBdWyAkaWQrKyBdID0gJGZpbGVbICdmaWxlbmFtZScgXTsKCQ
kJCQkJCQkJJHppcF93YXJuaW5nc19jb3VudCsrOwoJCQkJCQkJCQlicmVhazsKCQkJCQkJCQlkZWZhdWx0O
goJCQkJCQkJCQkvLyBDdXJyZW50bHkgbm90IHByb2Nlc3NpbmcgIm9rIiBlbnRyaWVzCgkJCQkJCQkJCSRp
ZCsrOwoJCQkJCQkJfQoJCQkJCQoJCQkJCQl9CgkJCQkJCgkJCQkJCS8vIE5vdyBmcmVlIHVwIHRoZSBtZW1
vcnkuLi4KCQkJCQkJdW5zZXQoICRvdXRwdXQgKTsKCQkJCQkKCQkJCQkJLy8gU2V0IGNvbnZlbmllbmNlIG
ZsYWdzCQkJCgkJCQkJCSRoYXZlX3ppcF93YXJuaW5ncyA9ICggMCA8ICR6aXBfd2FybmluZ3NfY291bnQgK
TsKCQkJCQkJJGhhdmVfemlwX290aGVyID0gKCAwIDwgJHppcF9vdGhlcl9jb3VudCApOwoJCQkJCgkJCQkJ
fSBlbHNlIHsKCQkJCQoJCQkJCQkvLyBOb3QgYW4gYXJyYXkgc28gYSBiYWQgZXJyb3IgY29kZSwgc29tZXR
oaW5nIHdlIGRpZG4ndCBvciBjb3VsZG4ndCBjYXRjaAoJCQkJCQkkZXhpdGNvZGUgPSAkemEtPmVycm9yQ2
9kZSgpOwoJCQkJCQoJCQkJCQkvLyBQdXQgdGhlIGVycm9yIGluZm9ybWF0aW9uIGludG8gYW4gYXJyYXkgZ
m9yIGNvbnNpc3RlbmN5CgkJCQkJCSR6aXBfZXJyb3JzW10gPSAkemEtPmVycm9ySW5mbyggdHJ1ZSApOwoJ
CQkJCQkkemlwX2Vycm9yc19jb3VudCA9IHNpemVvZiggJHppcF9lcnJvcnMgKTsKCQkJCQkJJGhhdmVfeml
wX2Vycm9ycyA9ICggMCA8ICR6aXBfZXJyb3JzX2NvdW50ICk7CgkJCQkKCQkJCQl9CgkJCQkKCQkJCQkvLy
BDb252ZW5pZW5jZSBmb3IgaGFuZGxpbmcgZGlmZmVyZW50IHNjYW5hcmlvcwoJCQkJCSRyZXN1bHQgPSBmY
WxzZTsKCQkJCQoJCQkJCS8vIEFsd2F5cyByZXBvcnQgdGhlIGV4aXQgY29kZSByZWdhcmRsZXNzIG9mIHdo
ZXRoZXIgd2UgbWlnaHQgaWdub3JlIGl0IG9yIG5vdAoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd
kZXRhaWxzJywgX18oJ1ppcCBwcm9jZXNzIGV4aXQgY29kZTogJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKS
AuICRleGl0Y29kZSApOwoJCgkJCQkJLy8gQWx3YXlzIHJlcG9ydCB0aGUgbnVtYmVyIG9mIHdhcm5pbmdzI
C0gZXZlbiBqdXN0IHRvIGNvbmZpcm0gdGhhdCB3ZSBkaWRuJ3QgaGF2ZSBhbnkKCQkJCQlwYl9iYWNrdXBi
dWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdaaXAgcHJvY2VzcyByZXBvcnRlZDogJTE
kcyB3YXJuaW5nJTIkcycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfd2FybmluZ3NfY291bnQsIC
ggKCAxID09ICR6aXBfd2FybmluZ3NfY291bnQgKSA/ICcnIDogJ3MnICkgKSApOwoJCQkJCgkJCQkJLy8gQ
Wx3YXlzIHJlcG9ydCB3YXJuaW5ncyByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdXNlciBoYXMgc2VsZWN0ZWQg
dG8gaWdub3JlIHRoZW0KCQkJCQlpZiAoIHRydWUgPT09ICRoYXZlX3ppcF93YXJuaW5ncyApIHsKCQkJCgk
JCQkJCSR0aGlzLT5sb2dfemlwX3JlcG9ydHMoICR6aXBfd2FybmluZ3MsIHNlbGY6OiRfd2FybmluZ19kZX
NjLCAiV0FSTklORyIsIHNlbGY6Ok1BWF9XQVJOSU5HX0xJTkVTX1RPX1NIT1csIGRpcm5hbWUoIGRpcm5hb
WUoICR0ZW1wZGlyICkgKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAncGJfYmFja3VwYnVkZHknIC4gRElS
RUNUT1JZX1NFUEFSQVRPUiAuIHNlbGY6OlpJUF9XQVJOSU5HU19GSUxFX05BTUUgKTsKCgkJCQkJfQoJCQk
KCQkJCQkvLyBBbHdheXMgcmVwb3J0IG90aGVyIHJlcG9ydHMgcmVnYXJkbGVzcwoJCQkJCWlmICggdHJ1ZS
A9PT0gJGhhdmVfemlwX290aGVyICkgewoJCQkKCQkJCQkJLy8gT25seSByZXBvcnQgbnVtYmVyIG9mIGluZ
m9ybWF0aW9uYWxzIGlmIHdlIGhhdmUgYW55IGFzIHRoZXkgYXJlIG5vdCB0aGF0IGltcG9ydGFudAoJCQkJ
CQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdaaXAgcHJvY2VzcyB
yZXBvcnRlZDogJTEkcyBpbmZvcm1hdGlvbiUyJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2
90aGVyX2NvdW50LCAoICggMSA9PSAkemlwX290aGVyX2NvdW50ICkgPyAnYWwnIDogJ2FscycgKSApICk7C
goJCQkJCQkkdGhpcy0+bG9nX3ppcF9yZXBvcnRzKCAkemlwX290aGVyLCBzZWxmOjokX290aGVyX2Rlc2Ms
ICJJTkZPUk1BVElPTiIsIHNlbGY6Ok1BWF9PVEhFUl9MSU5FU19UT19TSE9XLCBkaXJuYW1lKCBkaXJuYW1
lKCAkdGVtcGRpciApICkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3BiX2JhY2t1cGJ1ZGR5JyAuIERJUk
VDVE9SWV9TRVBBUkFUT1IgLiBzZWxmOjpaSVBfT1RIRVJTX0ZJTEVfTkFNRSApOwoKCQkJCQl9CgkJCQoJC
QkJCS8vIFNlZSBpZiB3ZSBjYW4gZmlndXJlIG91dCB3aGF0IGhhcHBlbmVkCgkJCQkJLy8gTm90ZTogb25s
eSBleHBlY3QgZXhpdGNvZGUgdG8gYmUgbm9uLXplcm8gZm9yIGFuIGVycm9yIHdlIGNvdWxkbid0IHByZS1
lbXB0CgkJCQkJLy8gTm90ZTogd2FybmluZ3Mgd2lsbCBjYXVzZSB0aGUgb3BlcmF0aW9uIHRvIGJlIHN0b3
BwZWQgaWYgdXNlciBoYXNuJ3QgY2hvc2VuIHRvIGlnbm9yZSByZWdhcmRsZXNzCgkJCQkJLy8gb2Ygd2hld
GhlciB3ZSBnb3QgYSB6aXAgZmlsZSAod2hpY2ggd2UgbW9zdCBsaWtlbHkgZGlkKS4KCQkJCQkvLyBOb3Rl
OiBhIG5vbi16ZXJvIGV4aXRjb2RlIGFuZCBwcmVzZW5jZSBvZiB3YXJuaW5ncyBhcmUgbXV0dWFsbHkgZXh
jbHVzaXZlCgkJCQkJaWYgKCAoICEgQGZpbGVfZXhpc3RzKCAkdGVtcF96aXAgKSApIHx8CgkJCQkJCSAoID
AgIT0gJGV4aXRjb2RlICkgfHwKCQkJCQkJICggKCB0cnVlID09ICRoYXZlX3ppcF93YXJuaW5ncyApICYmI
CEkdGhpcy0+Z2V0X2lnbm9yZV93YXJuaW5ncygpICkgKSB7CgkJCQkKCQkJCQkJLy8gSWYgd2UgaGF2ZSBh
bnkgemlwIGVycm9ycyByZXBvcnRlZCBzaG93IHRoZW0gcmVnYXJkbGVzcwoJCQkJCQlpZiAoIHRydWUgPT0
gJGhhdmVfemlwX2Vycm9ycyApIHsKCQkJCQkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZX
RhaWxzJywgc3ByaW50ZiggX18oJ1ppcCBwcm9jZXNzIHJlcG9ydGVkOiAlMSRzIGVycm9yJTIkcycsJ2l0L
WwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZXJyb3JzX2NvdW50LCAoICggMSA9PSAkemlwX2Vycm9yc19j
b3VudCApID8gJycgOiAncycgKSAgKSApOwoJCQkJCQoJCQkJCQkJZm9yZWFjaCAoICR6aXBfZXJyb3JzIGF
zICRsaW5lICkgewoJCQkJCQkKCQkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF
9fKCAnWmlwIHByb2Nlc3MgcmVwb3J0ZWQ6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkbGluZSApO
woJCQkJCQkKCQkJCQkJCX0KCQkJCQkKCQkJCQkJfQoJCQkJCQoJCQkJCQkvLyBSZXBvcnQgd2hldGhlciBv
ciBub3QgdGhlIHppcCBmaWxlIHdhcyBjcmVhdGVkICh0aGlzIHdpbGwgYWx3YXlzIGJlIGluIHRoZSB0ZW1
wb3JhcnkgbG9jYXRpb24pCQkJCgkJCQkJCWlmICggISBAZmlsZV9leGlzdHMoICR0ZW1wX3ppcCApICkgew
oJCQkJCQoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ1ppcCBBcmNoa
XZlIGZpbGUgbm90IGNyZWF0ZWQgLSBjaGVjayBwcm9jZXNzIGV4aXQgY29kZS4nLCdpdC1sMTBuLWJhY2t1
cGJ1ZGR5JyApICk7CgkJCQkJCQoJCQkJCQl9IGVsc2UgewoJCQkJCQkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR
5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oICdaaXAgQXJjaGl2ZSBmaWxlIGNyZWF0ZWQgYnV0IHdpdGggZX
Jyb3JzL2FjdGlvbmFibGUtd2FybmluZ3Mgc28gd2lsbCBiZSBkZWxldGVkIC0gY2hlY2sgcHJvY2VzcyBle
Gl0IGNvZGUgYW5kIHdhcm5pbmdzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQoJCQkJCQl9CgkJ
CQkJCgkJCQkJCS8vIFRoZSBvcGVyYXRpb24gaGFzIGZhaWxlZCBvbmUgd2F5IG9yIGFub3RoZXIuCgkJCQk
JCgkJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkKCQkJCQl9IGVsc2UgewoJCQkJCgkJCQkJCS8vIEdvdC
BmaWxlIHdpdGggbm8gZXJyb3Igb3Igd2FybmluZ3MgX29yXyB3aXRoIHdhcm5pbmdzIHRoYXQgdGhlIHVzZ
XIgaGFzIGNob3NlbiB0byBpZ25vcmUKCQkJCQkJLy8gRmlsZSBhbHdheXMgYnVpbHQgaW4gdGVtcG9yYXJ5
IGxvY2F0aW9uIHNvIGFsd2F5cyBuZWVkIHRvIG1vdmUgaXQgbGF0ZXIKCQkJCQkJcGJfYmFja3VwYnVkZHk
6OnN0YXR1cyggJ21lc3NhZ2UnLCBfXyggJ1ppcCBBcmNoaXZlIGZpbGUgc3VjY2Vzc2Z1bGx5IGNyZWF0ZW
Qgd2l0aCBubyBlcnJvcnMgKGFueSBhY3Rpb25hYmxlIHdhcm5pbmdzIGlnbm9yZWQgYnkgdXNlciBzZXR0a
W5ncykuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQkKCQkJCQkJJHRoaXMtPmxvZ19hcmNo
aXZlX2ZpbGVfc3RhdHMoICR0ZW1wX3ppcCApOwoKCQkJCQkJJHJlc3VsdCA9IHRydWU7CgkJCQkJCQkJCQo
JCQkJCX0KCgkJCQl9CgkJCQkKCQkJfQoJCQkKCQkgIAlpZiAoIE5VTEwgIT0gJHphICkgeyB1bnNldCggJH
phICk7IH0KCQkgIAkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQkJCQkJCQkJCQkJCQoJCX0KCQkKCQkvKioKC
QkgKglleHRyYWN0KCkKCQkgKgoJCSAqCUV4dHJhY3RzIHRoZSBjb250ZW50cyBvZiBhIHppcCBmaWxlIHRv
IHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IHVzaW5
nIHRoZSBiZXN0IHVuemlwIG1ldGhvZHMgcG9zc2libGUuCgkJICoJSWYgbm8gc3BlY2lmaWMgaXRlbXMgZ2
l2ZW4gdG8gZXh0cmFjdCB0aGVuIGl0J3MgYSBjb21wbGV0ZSB1bnppcAoJCSAqCgkJICoJQHBhcmFtCXN0c
mluZwkJJHppcF9maWxlCQkJCQlGdWxsIHBhdGggJiBmaWxlbmFtZSBvZiBaSVAgZmlsZSB0byBleHRyYWN0
IGZyb20uCgkJICoJQHBhcmFtCXN0cmluZwkJJGRlc3RpbmF0aW9uX2RpcmVjdG9yeQkJRnVsbCBkaXJlY3R
vcnkgcGF0aCB0byBleHRyYWN0IGludG8uCgkJICoJQHBhcmFtCWFycmF5CQkkaXRlbXMJCQkJCQlNYXBwaW
5nIG9mIHdoYXQgdG8gZXh0cmFjdCBhbmQgdG8gd2hhdAoJCSAqCUByZXR1cm4JYm9vbAkJCQkJCQkJCXRyd
WUgb24gc3VjY2VzcyAoYWxsIGV4dHJhY3Rpb25zIHN1Y2Nlc3NmdWwpLCBmYWxzZSBvdGhlcndpc2UKCQkg
Ki8KCQlwdWJsaWMgZnVuY3Rpb24gZXh0cmFjdCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J
5ID0gJycsICRpdGVtcyA9IGFycmF5KCkgKSB7CgkJCgkJCSRyZXN1bHQgPSBmYWxzZTsKCQkKCQkJc3dpdG
NoICggJHRoaXMtPmdldF9vc190eXBlKCkgKSB7CgkJCQljYXNlIHNlbGY6Ok9TX1RZUEVfTklYOgoJCQkJC
WlmICggZW1wdHkoICRpdGVtcyApICkgewoJCQkJCQkkcmVzdWx0ID0gJHRoaXMtPmV4dHJhY3RfZ2VuZXJp
Y19mdWxsKCAkemlwX2ZpbGUsICRkZXN0aW5hdGlvbl9kaXJlY3RvcnkgKTsKCQkJCQl9IGVsc2UgewoJCQk
JCQkkcmVzdWx0ID0gJHRoaXMtPmV4dHJhY3RfZ2VuZXJpY19zZWxlY3RlZCggJHppcF9maWxlLCAkZGVzdG
luYXRpb25fZGlyZWN0b3J5LCAkaXRlbXMgKTsJCQkJCQoJCQkJCX0KCQkJCQlicmVhazsKCQkJCWNhc2Ugc
2VsZjo6T1NfVFlQRV9XSU46CgkJCQkJaWYgKCBlbXB0eSggJGl0ZW1zICkgKSB7CgkJCQkJCSRyZXN1bHQg
PSAkdGhpcy0+ZXh0cmFjdF9nZW5lcmljX2Z1bGwoICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9
yeSApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRyZXN1bHQgPSAkdGhpcy0+ZXh0cmFjdF9nZW5lcmljX3NlbG
VjdGVkKCAkemlwX2ZpbGUsICRkZXN0aW5hdGlvbl9kaXJlY3RvcnksICRpdGVtcyApOwkJCQkJCgkJCQkJf
QoJCQkJCWJyZWFrOwoJCQkJZGVmYXVsdDoKCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCX0KCQkJCgkJCXJl
dHVybiAkcmVzdWx0OwoJCQkKCQl9CgoJCS8qKgoJCSAqCWV4dHJhY3RfZ2VuZXJpY19mdWxsKCkKCQkgKgo
JCSAqCUV4dHJhY3RzIHRoZSBjb250ZW50cyBvZiBhIHppcCBmaWxlIHRvIHRoZSBzcGVjaWZpZWQgZGlyZW
N0b3J5IHVzaW5nIHRoZSBiZXN0IHVuemlwIG1ldGhvZHMgcG9zc2libGUuCgkJICoKCQkgKglAcGFyYW0Jc
3RyaW5nCQkkemlwX2ZpbGUJCQkJCUZ1bGwgcGF0aCAmIGZpbGVuYW1lIG9mIFpJUCBmaWxlIHRvIGV4dHJh
Y3QgZnJvbS4KCQkgKglAcGFyYW0Jc3RyaW5nCQkkZGVzdGluYXRpb25fZGlyZWN0b3J5CQlGdWxsIGRpcmV
jdG9yeSBwYXRoIHRvIGV4dHJhY3QgaW50by4KCQkgKglAcmV0dXJuCWJvb2wJCQkJCQkJCQl0cnVlIG9uIH
N1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQoJCSAqLwoJCXByb3RlY3RlZCBmdW5jdGlvbiBleHRyYWN0X2dlb
mVyaWNfZnVsbCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gJycgKSB7CgkJCgkJCSRy
ZXN1bHQgPSBmYWxzZTsKCQkJJHphID0gTlVMTDsKCQkJCQkJCQkKCQkJLy8gVXBkYXRlIHRoZSBkZWZpbml
0aW9uIGJlZm9yZSBpdCBpcyB1c2VkIGJ5IGxvYWRpbmcgdGhlIGxpYnJhcnkKCQkJLy8gVGhpcyB3aWxsIG
5vdCB3b2sgaWYgcGVyY2hhbmNlIHRoZSBmaWxlIGhhcyBhbHJlYWR5IGJlZW4gbG9hZGVkIDotKAoJCQkvL
yBUT0RPOiBOZWVkIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0aGF0IHdlIGNhbiB1c2UgZm9yIHRoaXMKCQkJ
Ly9kZWZpbmUoICdQQ0xaSVBfVEVNUE9SQVJZX0RJUicsICR0ZW1wZGlyICk7CgkJCQoJCQkvLyBUaGlzIHN
ob3VsZCBnaXZlIHVzIGEgbmV3IGFyY2hpdmUgb2JqZWN0LCBpZiBub3QgY2F0Y2ggaXQgYW5kIGJhaWwgb3
V0CgkJCXRyeSB7CgkJCQkJCgkJCQkkemEgPSBuZXcgcGx1Z2luYnVkZHlfUGNsWmlwKCAkemlwX2ZpbGUgK
TsKCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCgkJCX0gY2F0Y2ggKCBFeGNlcHRpb24gJGUgKSB7CgkJCQoJ
CQkJLy8gU29tZXRoaW5nIGZpc2h5IC0gdGhlIG1ldGhvZHMgaW5kaWNhdGVkIHBjbHppcCBidXQgd2UgY29
1bGRuJ3QgZmluZCB0aGUgY2xhc3MKCQkJCSRlcnJvcl9zdHJpbmcgPSAkZS0+Z2V0TWVzc2FnZSgpOwoJCQ
kJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygncGNsemlwIGluZGljY
XRlZCBhcyBhdmFpbGFibGUgbWV0aG9kIGJ1dCBlcnJvciByZXBvcnRlZDogJTEkcycsJ2l0LWwxMG4tYmFj
a3VwYnVkZHknICksICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCgkJCX0
KCQkJCgkJCS8vIE9ubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHZhbGlkIGFyY2hpdmUgb2JqZWN0CgkJCW
lmICggdHJ1ZSA9PT0gJHJlc3VsdCApIHsKCQkJIAkKCQkJCS8vIE1ha2Ugc3VyZSB3ZSBvcGVuZWQgdGhlI
HppcCBvayBhbmQgaXQgaGFzIGNvbnRlbnQKCQkJCWlmICggKCAkY29udGVudF9saXN0ID0gJHphLT5leHRy
YWN0KCBQQ0xaSVBfT1BUX1BBVEgsICRkZXN0aW5hdGlvbl9kaXJlY3RvcnkgKSApICE9PSAwICkgewoJCQk
JCgkJCQkJLy8gSG93IG1hbnkgZmlsZXMgLSBtdXN0IGJlID4wIHRvIGhhdmUgZ290IGhlcmUKCQkJCQkkZm
lsZV9jb3VudCA9IHNpemVvZiggJGNvbnRlbnRfbGlzdCApOwoJCQkJCQoJCQkJCXBiX2JhY2t1cGJ1ZGR5O
jpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ3BjbHppcCBleHRyYWN0ZWQgZmlsZSBjb250ZW50
cyAoJTEkcyB0byAlMiRzKScsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGRlc3RpbmF
0aW9uX2RpcmVjdG9yeSApICk7CgoJCQkJCSR0aGlzLT5sb2dfYXJjaGl2ZV9maWxlX3N0YXRzKCAkemlwX2
ZpbGUgKTsJCgkJCQkJCgkJCQkJJHJlc3VsdCA9IHRydWU7CgkJCQkJCgkJCQl9IGVsc2UgewoJCQkJCgkJC
QkJLy8gQ291bGRuJ3Qgb3BlbiBhcmNoaXZlIC0gd2lsbCByZXR1cm4gZm9yIG1heWJlIGFub3RoZXIgbWV0
aG9kIHRvIHRyeQoJCQkJCSRlcnJvcl9zdHJpbmcgPSAkemEtPmVycm9ySW5mbyggdHJ1ZSApOwoJCQkJCXB
iX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ3BjbHppcCBmYWlsZWQgdG
8gb3BlbiBmaWxlIHRvIGV4dHJhY3QgY29udGVudHMgKCUxJHMgdG8gJTIkcykgLSBFcnJvciBJbmZvOiAlM
yRzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9y
eSwgJGVycm9yX3N0cmluZyApICk7CgoJCQkJCS8vIFJldHVybiBhbiBlcnJvciBjb2RlIGFuZCBhIGRlc2N
yaXB0aW9uIC0gdGhpcyBuZWVkcyB0byBiZSBoYW5kbGVkIG1vcmUgZ2VuZXJpY2FsbHkKCQkJCQkvLyRyZX
N1bHQgPSBhcnJheSggMSwgIlVuYWJsZSB0byBnZXQgYXJjaGl2ZSBjb250ZW50cyIgKTsKCQkJCQkvLyBDd
XJyZW50bHkgYXMgd2UgYXJlIHJldHVybmluZyBhbiBhcnJheSBhcyBhIHZhbGlkIHJlc3VsdCB3ZSBqdXN0
IHJldHVybiBmYWxzZSBvbiBmYWlsdXJlCgkJCQkJJHJlc3VsdCA9IGZhbHNlOwoKCQkJCX0KCQkJCQkJCQo
JCQl9CgkJCQoJCSAgCWlmICggTlVMTCAhPSAkemEgKSB7IHVuc2V0KCAkemEgKTsgfQkJCgkJCQoJCQlyZX
R1cm4gJHJlc3VsdDsKCQkJCgkJfQoKCQkvKioKCQkgKglleHRyYWN0X2dlbmVyaWNfc2VsZWN0ZWQoKQoJC
SAqCgkJICoJRXh0cmFjdHMgdGhlIGNvbnRlbnRzIG9mIGEgemlwIGZpbGUgdG8gdGhlIHNwZWNpZmllZCBk
aXJlY3RvcnkgdXNpbmcgdGhlIGJlc3QgdW56aXAgbWV0aG9kcyBwb3NzaWJsZS4KCQkgKgoJCSAqCUBwYXJ
hbQlzdHJpbmcJCSR6aXBfZmlsZQkJCQkJRnVsbCBwYXRoICYgZmlsZW5hbWUgb2YgWklQIGZpbGUgdG8gZX
h0cmFjdCBmcm9tLgoJCSAqCUBwYXJhbQlzdHJpbmcJCSRkZXN0aW5hdGlvbl9kaXJlY3RvcnkJCUZ1bGwgZ
GlyZWN0b3J5IHBhdGggdG8gZXh0cmFjdCBpbnRvLgoJCSAqCUBwYXJhbQlhcnJheQkJJGl0ZW1zCQkJCQkJ
TWFwcGluZyBvZiB3aGF0IHRvIGV4dHJhY3QgYW5kIHRvIHdoYXQKCQkgKglAcmV0dXJuCWJvb2wJCQkJCQk
JCQl0cnVlIG9uIHN1Y2Nlc3MgKGFsbCBleHRyYWN0aW9ucyBzdWNjZXNzZnVsKSwgZmFsc2Ugb3RoZXJ3aX
NlCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGV4dHJhY3RfZ2VuZXJpY19zZWxlY3RlZCggJHppcF9ma
WxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gJycsICRpdGVtcyApIHsKCQkKCQkJJHJlc3VsdCA9IGZh
bHNlOwoJCQkkemEgPSBOVUxMOwoJCQkkc3RhdCA9IGFycmF5KCk7CgkJCQoJCQkvLyBUaGlzIHNob3VsZCB
naXZlIHVzIGEgbmV3IGFyY2hpdmUgb2JqZWN0LCBpZiBub3QgY2F0Y2ggaXQgYW5kIGJhaWwgb3V0CgkJCX
RyeSB7CgkJCQoJCQkJJHphID0gbmV3IHBsdWdpbmJ1ZGR5X1BjbFppcCggJHppcF9maWxlICk7CgkJCQkkc
mVzdWx0ID0gdHJ1ZTsKCQkJCQoJCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkKCQkJCS8vIFNv
bWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCB6aXBhcmNoaXZlIGJ1dCB3ZSBjb3VsZG4
ndCBmaW5kIHRoZSBjbGFzcwoJCQkJJGVycm9yX3N0cmluZyA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJCQlwYl
9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdwY2x6aXAgaW5kaWNhdGVkI
GFzIGF2YWlsYWJsZSBtZXRob2QgYnV0IGVycm9yIHJlcG9ydGVkOiAlMSRzJywnaXQtbDEwbi1iYWNrdXBi
dWRkeScgKSwgJGVycm9yX3N0cmluZyApICk7CgkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkKCQkJfQoJCQk
KCQkJLy8gT25seSBjb250aW51ZSBpZiB3ZSBoYXZlIGEgdmFsaWQgYXJjaGl2ZSBvYmplY3QKCQkJaWYgKC
B0cnVlID09PSAkcmVzdWx0ICkgewoJCQkJCgkJCQkvLyBNYWtlIHN1cmUgd2Ugb3BlbmVkIHRoZSB6aXAgb
2sgYW5kIGl0IGhhcyBjb250ZW50CgkJCQlpZiAoICggJGNvbnRlbnRfbGlzdCA9ICR6YS0+bGlzdENvbnRl
bnQoKSApICE9PSAwICkgewoJCQkJCgkJCQkJLy8gTm93IHdlIG5lZWQgdG8gdGFrZSBlYWNoIGl0ZW0gYW5
kIHJ1biBhbiB1bnppcCBmb3IgaXQgLSB1bmZvcnR1bmF0ZWx5IHRoZXJlIGlzIG5vIGVhc3kgd2F5IG9mIG
NvbWJpbmluZwoJCQkJCS8vIGFyYml0cmFyeSBleHRyYWN0aW9ucyBpbnRvIGEgc2luZ2xlIGNvbW1hbmQga
WYgc29tZSBtaWdodCBiZSB0byBhIAoJCQkJCWZvcmVhY2ggKCAkaXRlbXMgYXMgJHdoYXQgPT4gJHdoZXJl
ICkgewoJCQkKCQkJCQkJJHJlbmFtZV9yZXF1aXJlZCA9IGZhbHNlOwoJCQkJCQkkcmVzdWx0ID0gZmFsc2U
7CgkJCQkKCQkJCQkJLy8gRGVjaWRlIGhvdyB0byBleHRyYWN0IGJhc2VkIG9uIHdoZXJlCgkJCQkJCWlmIC
ggZW1wdHkoICR3aGVyZSkgKSB7CgkJCQkJCgkJCQkJCQkvLyBGaXJzdCB3ZSdsbCBleHRyYWN0IGFuZCBqd
W5rIHRoZSBwYXRoCgkJCQkJCQkvLyBOb3RlOiBGb3Igc29tZSBvZGQgcmVhc29uIHdoZW4gd2UgaGF2ZSBh
ICR3aGF0IGZpbGUgdGhhdCBpcyBhIGhpZGRlbiAoZG90KSBmaWxlCgkJCQkJCQkvLyB0aGUgZmlsZV9leGl
zdHMoKSB0ZXN0IGluIHBjbHppcCBmb3IgdGhlIGZpbGVwYXRoIHRvIGV4dHJhY3QgdG8gcmV0dXJucyB0cn
VlIGV2ZW4KCQkJCQkJCS8vIHRob3VnaCBvbmx5IHRoZSBwYXJlbnQgZGlyZWN0b3J5IGV4aXN0cyBhbmQgb
m90IHRoZSBmaWxlIGl0c2VsZi4gTm8gaWRlYSB3aHkgYXQKCQkJCQkJCS8vIHByZXNlbnQuIEJlY2F1c2Ug
b2YgdGhhdCB3ZSBoYXZlIHRvIHVzZSB0aGUgUENMX1pJUF9PUFRfUkVQTEFDRV9ORVdFUiBvcHRpb24KCQk
JCQkJCS8vIHNvIHRoZSBmYWN0IHRoZSB0ZXN0IHJldHVybnMgdHJ1ZSBpcyBpZ25vcmVkLgoJCQkJCQkJJG
V4dHJhY3RfbGlzdCA9ICR6YS0+ZXh0cmFjdCggUENMWklQX09QVF9QQVRILCAkZGVzdGluYXRpb25fZGlyZ
WN0b3J5LCBQQ0xaSVBfT1BUX0JZX05BTUUsICR3aGF0LCBQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUEFUSCwg
UENMWklQX09QVF9SRVBMQUNFX05FV0VSICk7CgkJCQkJCQkJCgkJCQkJCQkvLyBDaGVjayB3aGV0aGVyIHd
lIHN1Y2NlZWRlZCBvciBub3QgKHdvdWxkIG9ubHkgYmUgbm8gbGlzdCBhcnJheSBmb3IgYSB6aXAgZmlsZS
Bwcm9ibGVtKQoJCQkJCQkJLy8gYnV0IGV4dHJhY3Rpb24gb2YgdGhlIGZpbGUgaXRzZWxmIG1heSBzdGlsb
CBoYXZlIGZhaWxlZAoJCQkJCQkJJHJlc3VsdCA9ICggJGV4dHJhY3RfbGlzdCAhPT0gMCAgJiYgKCAkZXh0
cmFjdF9saXN0WyAwIF1bICdzdGF0dXMnIF0gPT0gJ29rJyApICk7CgkJCQkJCQkJCQkJCQkJCQoJCQkJCQl
9IGVsc2VpZiAoICFlbXB0eSggJHdoZXJlICkgKSB7CgkJCQkJCgkJCQkJCQlpZiAoICR3aGF0ID09PSAkd2
hlcmUgKSB7CgkJCQkJCQkKCQkJCQkJCQkvLyBDaGVjayBmb3Igd2lsZGNhcmQgZGlyZWN0b3J5IGV4dHJhY
3Rpb24gbGlrZSBkaXIvKiA9PiBkaXIvKgoJCQkJCQkJCWlmICggIioiID09IHN1YnN0ciggdHJpbSggJHdo
YXQgKSwgLTEgKSApIHsKCgkJCQkJCQkJCS8vIFR1cm4gdGhpcyBpbnRvIGEgcHJlZ19tYXRjaCBwYXR0ZXJ
uCgkJCQkJCQkJCSR3aGF0bWF0Y2ggPSAifF4iIC4gJHdoYXQgLiAifCI7CQkJCQkJCQkJCgoJCQkJCQkJCQ
kvLyBGaXJzdCB3ZSdsbCBleHRyYWN0IGJ1dCB3ZSdyZSBub3QganVua2luZyB0aGUgcGF0aHMKCQkJCQkJC
QkJLy8gTm90ZTogRm9yIHNvbWUgb2RkIHJlYXNvbiB3aGVuIHdlIGhhdmUgYSAkd2hhdCBmaWxlIHRoYXQg
aXMgYSBoaWRkZW4gKGRvdCkgZmlsZQoJCQkJCQkJCQkvLyB0aGUgZmlsZV9leGlzdHMoKSB0ZXN0IGluIHB
jbHppcCBmb3IgdGhlIGZpbGVwYXRoIHRvIGV4dHJhY3QgdG8gcmV0dXJucyB0cnVlIGV2ZW4KCQkJCQkJCQ
kJLy8gdGhvdWdoIG9ubHkgdGhlIHBhcmVudCBkaXJlY3RvcnkgZXhpc3RzIGFuZCBub3QgdGhlIGZpbGUga
XRzZWxmLiBObyBpZGVhIHdoeSBhdAoJCQkJCQkJCQkvLyBwcmVzZW50LiBCZWNhdXNlIG9mIHRoYXQgd2Ug
aGF2ZSB0byB1c2UgdGhlIFBDTF9aSVBfT1BUX1JFUExBQ0VfTkVXRVIgb3B0aW9uCgkJCQkJCQkJCS8vIHN
vIHRoZSBmYWN0IHRoZSB0ZXN0IHJldHVybnMgdHJ1ZSBpcyBpZ25vcmVkLgoJCQkJCQkJCQkkZXh0cmFjdF
9saXN0ID0gJHphLT5leHRyYWN0KCBQQ0xaSVBfT1BUX1BBVEgsICRkZXN0aW5hdGlvbl9kaXJlY3RvcnksI
FBDTFpJUF9PUFRfQllfUFJFRywgJHdoYXRtYXRjaCwgUENMWklQX09QVF9SRVBMQUNFX05FV0VSICk7CgoJ
CQkJCQkJCQkvLyBDaGVjayB3aGV0aGVyIHdlIHN1Y2NlZWRlZCBvciBub3QgKHdvdWxkIG9ubHkgYmUgbm8
gbGlzdCBhcnJheSBmb3IgYSB6aXAgZmlsZSBwcm
9ibGVtKQoJCQkJCQkJCQkvLyBidXQgZXh0cmFjdGlvbiBvZiBpbmRpdmlkdWFsIGZpbGVzIHRoZW1zZWx2Z
XMgbWF5IHN0aWxsIGhhdmUgZmFpbGVkCgkJCQkJCQkJCWlmICggMCAhPT0gJGV4dHJhY3RfbGlzdCApIHsK
CQkJCQkJCQkJCgkJCQkJCQkJCQkvLyBTbyBmYXIgc28gZ29vZCAtIGFzc3VtZSBldmVyeXRoaW5nIHdpbGw
gYmUgb2sKCQkJCQkJCQkJCSRyZXN1bHQgPSB0cnVlOwoJCgkJCQkJCQkJCQkvLyBBdCBsZWFzdCB3ZSBnb3
Qgbm8gbWFqb3IgZmFpbHVyZSBzbyBjaGVjayB0aGUgZXh0cmFjdGVkIGZpbGVzCgkJCQkJCQkJCQlmb3JlY
WNoICggJGV4dHJhY3RfbGlzdCBhcyAkZmlsZSApIHsKCQkJCQkJCQkJCQoJCQkJCQkJCQkJCWlmICggJ29r
JyAhPT0gJGZpbGVbICdzdGF0dXMnIF0gKSB7CgkJCQkJCQkJCQkJCgkJCQkJCQkJCQkJCS8vIE9vcHMgLSB
3ZSBmb3VuZCBhIGZpbGUgdGhhdCBkaWRuJ3QgZXh0cmFjdCBvayBzbyBiYWlsIG91dCB3aXRoIGZhbHNlCg
kJCQkJCQkJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJCQkJCgkJC
QkJCQkJCQkJfQoJCQkJCQkJCQkJCgkJCQkJCQkJCQl9CgkJCQkJCQkJCQoJCQkJCQkJCQl9CgkJCQkJCQkJ
CgkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkKCQkJCQkJCQkJLy8gSXQncyBqdXN0IGEgc2luZ2xlIGZpbGU
gZXh0cmFjdGlvbiAtIGJyZWF0aCBhIHNpZ24gb2YgcmVsaWVmCgkJCQkJCQkJCS8vIEV4dHJhY3QgdG8gc2
FtZSBkaXJlY3Rvcnkgc3RydWN0dXJlIC0gZG9uJ3QganVuayBwYXRoLCBubyBuZWVkIHRvIGFkZCB3aGVyZ
SB0byBkZXN0bmF0aW9uIGFzIGF1dG9tYXRpYwoJCQkJCQkJCQkvLyBOb3RlOiBGb3Igc29tZSBvZGQgcmVh
c29uIHdoZW4gd2UgaGF2ZSBhICR3aGF0IGZpbGUgdGhhdCBpcyBhIGhpZGRlbiAoZG90KSBmaWxlCgkJCQk
JCQkJCS8vIHRoZSBmaWxlX2V4aXN0cygpIHRlc3QgaW4gcGNsemlwIGZvciB0aGUgZmlsZXBhdGggdG8gZX
h0cmFjdCB0byByZXR1cm5zIHRydWUgZXZlbgoJCQkJCQkJCQkvLyB0aG91Z2ggb25seSB0aGUgcGFyZW50I
GRpcmVjdG9yeSBleGlzdHMgYW5kIG5vdCB0aGUgZmlsZSBpdHNlbGYuIE5vIGlkZWEgd2h5IGF0CgkJCQkJ
CQkJCS8vIHByZXNlbnQuIEJlY2F1c2Ugb2YgdGhhdCB3ZSBoYXZlIHRvIHVzZSB0aGUgUENMX1pJUF9PUFR
fUkVQTEFDRV9ORVdFUiBvcHRpb24KCQkJCQkJCQkJLy8gc28gdGhlIGZhY3QgdGhlIHRlc3QgcmV0dXJucy
B0cnVlIGlzIGlnbm9yZWQuCgkJCQkJCQkJCSRleHRyYWN0X2xpc3QgPSAkemEtPmV4dHJhY3QoIFBDTFpJU
F9PUFRfUEFUSCwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgUENMWklQX09QVF9CWV9OQU1FLCAkd2hhdCwg
UENMWklQX09QVF9SRVBMQUNFX05FV0VSICk7CgkJCQkJCQkJCQoJCQkJCQkJCQkvLyBDaGVjayB3aGV0aGV
yIHdlIHN1Y2NlZWRlZCBvciBub3QgKHdvdWxkIG9ubHkgYmUgbm8gbGlzdCBhcnJheSBmb3IgYSB6aXAgZm
lsZSBwcm9ibGVtKQoJCQkJCQkJCQkvLyBidXQgZXh0cmFjdGlvbiBvZiB0aGUgZmlsZSBpdHNlbGYgbWF5I
HN0aWxsIGhhdmUgZmFpbGVkCgkJCQkJCQkJCSRyZXN1bHQgPSAoICRleHRyYWN0X2xpc3QgIT09IDAgICYm
ICggaXNzZXQoICRleHRyYWN0X2xpc3RbIDAgXSApICkgJiYgKCAkZXh0cmFjdF9saXN0WyAwIF1bICdzdGF
0dXMnIF0gPT0gJ29rJyApICk7CgoJCQkJCQkJCX0KCQkJCQkJCgkJCQkJCQl9IGVsc2UgewoKCQkJCQkJCQ
kvLyBGaXJzdCB3ZSdsbCBleHRyYWN0IGFuZCBqdW5rIHRoZSBwYXRoCgkJCQkJCQkJLy8gTm90ZTogRm9yI
HNvbWUgb2RkIHJlYXNvbiB3aGVuIHdlIGhhdmUgYSAkd2hhdCBmaWxlIHRoYXQgaXMgYSBoaWRkZW4gKGRv
dCkgZmlsZQoJCQkJCQkJCS8vIHRoZSBmaWxlX2V4aXN0cygpIHRlc3QgaW4gcGNsemlwIGZvciB0aGUgZml
sZXBhdGggdG8gZXh0cmFjdCB0byByZXR1cm5zIHRydWUgZXZlbgoJCQkJCQkJCS8vIHRob3VnaCBvbmx5IH
RoZSBwYXJlbnQgZGlyZWN0b3J5IGV4aXN0cyBhbmQgbm90IHRoZSBmaWxlIGl0c2VsZi4gTm8gaWRlYSB3a
HkgYXQKCQkJCQkJCQkvLyBwcmVzZW50LiBCZWNhdXNlIG9mIHRoYXQgd2UgaGF2ZSB0byB1c2UgdGhlIFBD
TF9aSVBfT1BUX1JFUExBQ0VfTkVXRVIgb3B0aW9uCgkJCQkJCQkJLy8gc28gdGhlIGZhY3QgdGhlIHRlc3Q
gcmV0dXJucyB0cnVlIGlzIGlnbm9yZWQuCgkJCQkJCQkJJGV4dHJhY3RfbGlzdCA9ICR6YS0+ZXh0cmFjdC
ggUENMWklQX09QVF9QQVRILCAkZGVzdGluYXRpb25fZGlyZWN0b3J5LCBQQ0xaSVBfT1BUX0JZX05BTUUsI
CR3aGF0LCBQQ0xaSVBfT1BUX1JFTU9WRV9BTExfUEFUSCwgUENMWklQX09QVF9SRVBMQUNFX05FV0VSICk7
CgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQkJLy8gQ2hlY2sgd2hldGhlciB3ZSBzdWNjZWVkZWQ
gb3Igbm90ICh3b3VsZCBvbmx5IGJlIG5vIGxpc3QgYXJyYXkgZm9yIGEgemlwIGZpbGUgcHJvYmxlbSkKCQ
kJCQkJCQkvLyBidXQgZXh0cmFjdGlvbiBvZiB0aGUgZmlsZSBpdHNlbGYgbWF5IHN0aWxsIGhhdmUgZmFpb
GVkCgkJCQkJCQkJJHJlc3VsdCA9ICggJGV4dHJhY3RfbGlzdCAhPT0gMCAgJiYgKCAkZXh0cmFjdF9saXN0
WyAwIF1bICdzdGF0dXMnIF0gPT0gJ29rJyApICk7CgoJCQkJCQkJCS8vIFdpbGwgbmVlZCB0byByZW5hbWU
gaWYgdGhlIGV4dHJhY3QgaXMgb2sKCQkJCQkJCQkkcmVuYW1lX3JlcXVpcmVkID0gdHJ1ZTsKCQkJCQkJCg
kJCQkJCQl9CgkJCQkJCgkJCQkJCX0KCQkJCQoJCQkJCQkvLyBOb3RlOiB3ZSBkb24ndCBvcGVuIHRoZSBma
WxlIGFuZCB0aGVuIGRvIHN0dWZmIGJ1dCBpdCdzIGFsbCBkb25lIGluIG9uZSBhY3Rpb24KCQkJCQkJLy8g
c28gd2UgbmVlZCB0byBpbnRlcnByZXQgdGhlIHJldHVybiBjb2RlIHRvIGRlZGlkZSB3aGF0IHRvIGRvCgk
JCQkJCS8vIEN1cnJlbnRseSB3ZSBjYW4gb25seSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHN1Y2Nlc3MgYW5kIG
ZhaWx1cmUgYnV0IG5vIGZpbmVyIGdyYWluCgkJCQkJCWlmICggdHJ1ZSA9PT0gJHJlc3VsdCApIHsKCQkJC
QkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ3BjbHpp
cCBleHRyYWN0ZWQgZmlsZSBjb250ZW50cyAoJTEkcyBmcm9tICUyJHMgdG8gJTMkcyU0JHMpJywnaXQtbDE
wbi1iYWNrdXBidWRkeScgKSwgJHdoYXQsICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgJH
doZXJlICkgKTsKCgkJCQkJCQkvLyBSZW5hbWUgaWYgd2UgaGF2ZSB0bwoJCQkJCQkJaWYgKCB0cnVlID09P
SAkcmVuYW1lX3JlcXVpcmVkKSB7CgkJCQkJCQkKCQkJCQkJCQkvLyBOb3RlOiB3ZSBqdW5rZWQgdGhlIHBh
dGggb24gdGhlIGV4dHJhY3Rpb24gc28ganVzdCB0aGUgZmlsZW5hbWUgb2YgJHdoYXQgaXMgdGhlIHNvdXJ
jZSBidXQKCQkJCQkJCQkvLyAkd2hlcmUgY291bGQgYmUgYSBzaW1wbGUgZmlsZSBuYW1lIG9yIGEgZmlsZS
BwYXRoIAoJCQkJCQkJCSRyZXN1bHQgPSAkcmVzdWx0ICYmIHJlbmFtZSggJGRlc3RpbmF0aW9uX2RpcmVjd
G9yeSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBiYXNlbmFtZSggJHdoYXQgKSwKCQkJCQkJCQkJCQkJCQkJ
ICRkZXN0aW5hdGlvbl9kaXJlY3RvcnkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHdoZXJlICk7CgkJCQk
JCQkKCQkJCQkJCX0KCgkJCQkJCX0gZWxzZSB7CgkJCQkJCgkJCQkJCQkvLyBGb3Igbm93IGxldCdzIGp1c3
QgcHJpbnQgdGhlIGVycm9yIGNvZGUgYW5kIGRyb3AgdGhyb3VnaAoJCQkJCQkJJGVycm9yX3N0cmluZyA9I
CR6YS0+ZXJyb3JJbmZvKCk7CgkJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNw
cmludGYoIF9fKCdwY2x6aXAgZmFpbGVkIHRvIG9wZW4vcHJvY2VzcyBmaWxlIHRvIGV4dHJhY3QgZmlsZSB
jb250ZW50cyAoJTEkcyBmcm9tICUyJHMgdG8gJTMkcyU0JHMpIC0gRXJyb3IgSW5mbzogJTUkcy4nLCdpdC
1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkd2hhdCwgJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5L
CAkd2hlcmUsICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJCQoJCQkJCQkJLy8gTWF5IHNlZW0gcmVkdW5kYW50
IGJ1dCBiZWx0J24nYnJhY2VzCgkJCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkJCQkKCQkJCQkJfQoJCQk
JCQoJCQkJCQkvLyBJZiB0aGUgZXh0cmFjdGlvbiBmYWlsZWQgKG9yIHJlbmFtZSBhZnRlciBleHRyYWN0aW
9uKSB0aGVuIGJyZWFrIG91dCBvZiB0aGUgZm9yZWFjaCBhbmQgc2ltcGx5IHJldHVybiBmYWxzZQoJCQkJC
QlpZiAoIGZhbHNlID09PSAkcmVzdWx0ICkgewoJCQkJCQoJCQkJCQkJYnJlYWs7CgkJCQkJCQoJCQkJCQl9
CgkJCQkJCgkJCQkJfQoJCQkJCgkJCQl9IGVsc2UgewoJCQkJCgkJCQkJLy8gQ291bGRuJ3Qgb3BlbiBhcmN
oaXZlIC0gd2lsbCByZXR1cm4gZm9yIG1heWJlIGFub3RoZXIgbWV0aG9kIHRvIHRyeQoJCQkJCSRlcnJvcl
9zdHJpbmcgPSAkemEtPmVycm9ySW5mbyggJHJlc3VsdCApOwoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0d
XMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ3BjbHppcCBmYWlsZWQgdG8gb3BlbiBmaWxlIHRvIGV4dHJh
Y3QgY29udGVudHMgKCUxJHMgdG8gJTIkcykgLSBFcnJvciBJbmZvOiAlMyRzLicsJ2l0LWwxMG4tYmFja3V
wYnVkZHknICksICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgJGVycm9yX3N0cmluZyApIC
k7CgoJCQkJCS8vIFJldHVybiBhbiBlcnJvciBjb2RlIGFuZCBhIGRlc2NyaXB0aW9uIC0gdGhpcyBuZWVkc
yB0byBiZSBoYW5kbGVkIG1vcmUgZ2VuZXJpY2FsbHkKCQkJCQkvLyRyZXN1bHQgPSBhcnJheSggMSwgIlVu
YWJsZSB0byBnZXQgYXJjaGl2ZSBjb250ZW50cyIgKTsKCQkJCQkvLyBDdXJyZW50bHkgYXMgd2UgYXJlIHJ
ldHVybmluZyBhbiBhcnJheSBhcyBhIHZhbGlkIHJlc3VsdCB3ZSBqdXN0IHJldHVybiBmYWxzZSBvbiBmYW
lsdXJlCgkJCQkJJHJlc3VsdCA9IGZhbHNlOwoKCQkJCX0KCQkJCQoJCQkJJHphLT5jbG9zZSgpOwoJCQkKC
QkJfQoJCQkKCQkgIAlpZiAoIE5VTEwgIT0gJHphICkgeyB1bnNldCggJHphICk7IH0JCQoJCQkKCQkJcmV0
dXJuICRyZXN1bHQ7CgkJCQoJCX0KCQkKCQkvKioKCQkgKglmaWxlX2V4aXN0cygpCgkJICoJCgkJICoJVGV
zdHMgd2hldGhlciBhIGZpbGUgKHdpdGggcGF0aCkgZXhpc3RzIGluIHRoZSBnaXZlbiB6aXAgZmlsZQoJCS
AqCUlmIGxlYXZlX29wZW4gaXMgdHJ1ZSB0aGVuIHRoZSB6aXAgb2JqZWN0IHdpbGwgYmUgbGVmdCBvcGVuI
GZvciBmYXN0ZXIgY2hlY2tpbmcgZm9yIHN1YnNlcXVlbnQgZmlsZXMgd2l0aGluIHRoaXMgemlwCgkJICoJ
CgkJICoJQHBhcmFtCQlzdHJpbmcJJHppcF9maWxlCQlUaGUgemlwIGZpbGUgdG8gY2hlY2sKCQkgKglAcGF
yYW0JCXN0cmluZwkkbG9jYXRlX2ZpbGUJVGhlIGZpbGUgdG8gdGVzdCBmb3IKCQkgKglAcGFyYW0JCWJvb2
wJJGxlYXZlX29wZW4JCU9wdGlvbmFsOiBUcnVlIGlmIHRoZSB6aXAgZmlsZSBzaG91bGQgYmUgbGVmdCBvc
GVuCgkJICoJQHJldHVybgkJYm9vbC9hcnJheQkJCQlUcnVlIGlmIHRoZSBmaWxlIGlzIGZvdW5kIGluIHRo
ZSB6aXAgYW5kIGZhbHNlIGlmIG5vdCwgYXJyYXkgZm9yIG90aGVyIHByb2JsZW0KCQkgKgoJCSAqLwoJCXB
1YmxpYyBmdW5jdGlvbiBmaWxlX2V4aXN0cyggJHppcF9maWxlLCAkbG9jYXRlX2ZpbGUsICRsZWF2ZV9vcG
VuID0gZmFsc2UgKSB7CgkJCgkJCSRyZXN1bHQgPSBhcnJheSggMSwgIkdlbmVyaWMgZmFpbHVyZSBpbmRpY
2F0aW9uIiApOwoJCQkkemEgPSBOVUxMOwoJCQkkc3RhdCA9IGFycmF5KCk7CgkJCQkJCQkJCgkJCQoJCQkv
LyBUaGlzIHNob3VsZCBnaXZlIHVzIGEgbmV3IGFyY2hpdmUgb2JqZWN0LCBvZiBub3QgY2F0Y2ggaXQgYW5
kIGJhaWwgb3V0CgkJCXRyeSB7CgkJCQoJCQkJJHphID0gbmV3IHBsdWdpbmJ1ZGR5X1BjbFppcCggJHppcF
9maWxlICk7CgkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQoJCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkge
woJCQkKCQkJCS8vIFNvbWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCBwY2x6aXAgYnV0
IHdlIGNvdWxkbid0IGZpbmQgdGhlIGNsYXNzCgkJCQkkZXJyb3Jfc3RyaW5nID0gJGUtPmdldE1lc3NhZ2U
oKTsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ3BjbHppcC
BpbmRpY2F0ZWQgYXMgYXZhaWxhYmxlIG1ldGhvZCBidXQgZXJyb3IgcmVwb3J0ZWQ6ICUxJHMnLCdpdC1sM
TBuLWJhY2t1cGJ1ZGR5JyApLCAkZXJyb3Jfc3RyaW5nICkgKTsKCgkJCQkvLyBSZXR1cm4gYW4gZXJyb3Ig
Y29kZSBhbmQgYSBkZXNjcmlwdGlvbiAtIHRoaXMgbmVlZHMgdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVyaWN
hbGx5CgkJCQkkcmVzdWx0ID0gYXJyYXkoIDEsICJDbGFzcyBub3QgYXZhaWxhYmxlIHRvIG1hdGNoIG1ldG
hvZCIgKTsKCQkJCQoJCQl9CgkJCQoJCQkvLyBPbmx5IGNvbnRpbnVlIGlmIHdlIGhhdmUgYSB2YWxpZCBhc
mNoaXZlIG9iamVjdAoJCQlpZiAoIHRydWUgPT09ICRyZXN1bHQgKSB7CgkJCQkKCQkJCS8vIE1ha2Ugc3Vy
ZSB3ZSBvcGVuZWQgdGhlIHppcCBvayBhbmQgaXQgaGFzIGNvbnRlbnQKCQkJCWlmICggKCAkY29udGVudF9
saXN0ID0gJHphLT5saXN0Q29udGVudCgpICkgIT09IDAgKSB7CgkJCQkKCQkJCQkvLyBBc3N1bWUgZmFpbH
VyZQoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkKCQkJCQkvLyBHZXQgZWFjaCBmaWxlIGluIHNlcXVlb
mNlIGJ5IGluZGV4IGFuZCBnZXQgdGhlIHByb3BlcnRpZXMKCQkJCQlmb3IgKCAkaSA9IDA7ICRpIDwgc2l6
ZW9mKCAkY29udGVudF9saXN0ICk7ICRpKysgKSB7CgkJCQkJCgkJCQkJCSRzdGF0ID0gJGNvbnRlbnRfbGl
zdFsgJGkgXTsKCQkJCQkJCgkJCQkJCS8vIEFzc3VtZSB0aGUga2V5IGV4aXN0cyAoY29uc2lkZXIgdGVzdG
luZykKCQkJCQkJaWYgKCAkc3RhdFsgJ2ZpbGVuYW1lJyBdID09ICRsb2NhdGVfZmlsZSApIHsKCQkJCQkJC
gkJCQkJCQkvLyBGaWxlIGZvdW5kIHNvIHdlIGNhbiBub3RlIHRoYXQKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5
OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ0ZpbGUgZm91bmQgKHBjbHppcCknLCdpdC1sMTBuLWJhY2t1cGJ
1ZGR5JyApIC4gJzogJyAuICRsb2NhdGVfZmlsZSApOwoJCQkJCQkJJHJlc3VsdCA9IHRydWU7CgkJCQkJCQ
kKCQkJCQkJCS8vIE5lZWQgdG8gZXhpdCB0aGUgZm9yIGxvb3AKCQkJCQkJCWJyZWFrOwoJCQkJCQkJCgkJC
QkJCX0KCQkJCQkJCgkJCQkJfQoJCQkJCQoJCQkJCWlmICggZmFsc2UgPT09ICRyZXN1bHQgKSB7CgkJCQkJ
CgkJCQkJCS8vIE9ubHkgZ2V0IGhlcmUgaWYgdGhlIGZpbGUgd2Fzbid0IGZvdW5kCgkJCQkJCXBiX2JhY2t
1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ0ZpbGUgbm90IGZvdW5kIChwY2x6aXApJywnaXQtbD
Ewbi1iYWNrdXBidWRkeScgKSAuICc6ICcgLiAkb
G9jYXRlX2ZpbGUgKTsKCQkJCQkJCgkJCQkJfQoKCQkJCX0gZWxzZSB7CgkJCQkKCQkJCQkvLyBDb3VsZG4n
dCBvcGVuIGFyY2hpdmUgLSB3aWxsIHJldHVybiBmb3IgbWF5YmUgYW5vdGhlciBtZXRob2QgdG8gdHJ5Cgk
JCQkJJGVycm9yX3N0cmluZyA9ICR6YS0+ZXJyb3JJbmZvKCB0cnVlICk7CgkJCQkJcGJfYmFja3VwYnVkZH
k6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygncGNsemlwIGZhaWxlZCB0byBvcGVuIGZpbGUgd
G8gY2hlY2sgaWYgZmlsZSBleGlzdHMgKGxvb2tpbmcgZm9yICUxJHMgaW4gJTIkcykgLSBFcnJvciBJbmZv
OiAlMyRzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICRsb2NhdGVfZmlsZSAsICR6aXBfZmlsZSwgJGV
ycm9yX3N0cmluZyApICk7CgoJCQkJCS8vIFJldHVybiBhbiBlcnJvciBjb2RlIGFuZCBhIGRlc2NyaXB0aW
9uIC0gdGhpcyBuZWVkcyB0byBiZSBoYW5kbGVkIG1vcmUgZ2VuZXJpY2FsbHkKCQkJCQkkcmVzdWx0ID0gY
XJyYXkoIDEsICJGYWlsZWQgdG8gb3Blbi9wcm9jZXNzIGZpbGUiICk7CgoJCQkJfQoJCQkJCQkJCgkJCX0K
CQkJCgkJICAJaWYgKCBOVUxMICE9ICR6YSApIHsgdW5zZXQoICR6YSApOyB9CQkKCQkJCgkJCXJldHVybiA
kcmVzdWx0OwoJCQkJCgkJfQoJCQkJCgkJLyoJZ2V0X2ZpbGVfbGlzdCgpCgkJICoJCgkJICoJR2V0IGFuIG
FycmF5IG9mIGFsbCBmaWxlcyBpbiBhIHppcCBmaWxlIHdpdGggc29tZSBmaWxlIHByb3BlcnRpZXMuCgkJI
CoJCgkJICoJQHBhcmFtCQlzdHJpbmcJCSR6aXBfZmlsZQlUaGUgZmlsZSB0byBsaXN0IHRoZSBjb250ZW50
IG9mCgkJICoJQHJldHVybgkJYm9vbHxhcnJheQkJCQlmYWxzZSBvbiBmYWlsdXJlLCBvdGhlcndpc2UgYXJ
yYXkgb2YgZmlsZSBwcm9wZXJ0aWVzIChtYXkgYmUgZW1wdHkpCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIG
dldF9maWxlX2xpc3QoICR6aXBfZmlsZSApIHsKCQkKCQkJJGZpbGVfbGlzdCA9IGFycmF5KCk7CgkJCSRyZ
XN1bHQgPSBmYWxzZTsKCQkJJHphID0gTlVMTDsKCQkJJHN0YXQgPSBhcnJheSgpOwoJCQkJCQkJCQoJCQkv
LyBUaGlzIHNob3VsZCBnaXZlIHVzIGEgbmV3IGFyY2hpdmUgb2JqZWN0LCBvZiBub3QgY2F0Y2ggaXQgYW5
kIGJhaWwgb3V0CgkJCXRyeSB7CgkJCQkJCgkJCQkkemEgPSBuZXcgcGx1Z2luYnVkZHlfUGNsWmlwKCAkem
lwX2ZpbGUgKTsKCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCgkJCX0gY2F0Y2ggKCBFeGNlcHRpb24gJGUgK
SB7CgkJCQoJCQkJLy8gU29tZXRoaW5nIGZpc2h5IC0gdGhlIG1ldGhvZHMgaW5kaWNhdGVkIHBjbHppcCBi
dXQgd2UgY291bGRuJ3QgZmluZCB0aGUgY2xhc3MKCQkJCSRlcnJvcl9zdHJpbmcgPSAkZS0+Z2V0TWVzc2F
nZSgpOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygncGNsem
lwIGluZGljYXRlZCBhcyBhdmFpbGFibGUgbWV0aG9kIGJ1dCBlcnJvciByZXBvcnRlZDogJTEkcycsJ2l0L
WwxMG4tYmFja3VwYnVkZHknICksICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJJHJlc3VsdCA9IGZhbHNlOwoJ
CQkJCgkJCX0KCQkJCgkJCS8vIE9ubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHZhbGlkIGFyY2hpdmUgb2J
qZWN0CgkJCWlmICggdHJ1ZSA9PT0gJHJlc3VsdCApIHsKCQkJCQoJCQkJLy8gTWFrZSBzdXJlIHdlIG9wZW
5lZCB0aGUgemlwIG9rIGFuZCBpdCBoYXMgY29udGVudAoJCQkJaWYgKCAwICE9PSAoICRjb250ZW50X2xpc
3QgPSAkemEtPmxpc3RDb250ZW50KCkgKSApIHsKCQkJCQoJCQkJCS8vIEhvdyBtYW55IGZpbGVzIC0gbXVz
dCBiZSA+MCB0byBoYXZlIGdvdCBoZXJlCgkJCQkJJGZpbGVfY291bnQgPSBzaXplb2YoICRjb250ZW50X2x
pc3QgKTsKCQkJCQkKCQkJCQkvLyBHZXQgZWFjaCBmaWxlIGluIHNlcXVlbmNlIGJ5IGluZGV4IGFuZCBnZX
QgdGhlIHByb3BlcnRpZXMKCQkJCQlmb3IgKCAkaSA9IDA7ICRpIDwgJGZpbGVfY291bnQ7ICRpKysgKSB7C
gkJCQkJCgkJCQkJCSRzdGF0ID0gJGNvbnRlbnRfbGlzdFsgJGkgXTsKCQkJCQkJCgkJCQkJCS8vIEFzc3Vt
ZSBhbGwgdGhlc2Uga2V5cyBkbyBleGlzdCAoY29uc2lkZXIgdGVzdGluZykKCQkJCQkJJGZpbGVfbGlzdFt
dID0gYXJyYXkoCgkJCQkJCQkkc3RhdFsgJ2ZpbGVuYW1lJyBdLAoJCQkJCQkJJHN0YXRbICdzaXplJyBdLA
oJCQkJCQkJJHN0YXRbICdjb21wcmVzc2VkX3NpemUnIF0sCgkJCQkJCQkkc3RhdFsgJ210aW1lJyBdCgkJC
QkJCSk7CgkJCQkJCQkJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
ZGV0YWlscycsIHNwcmludGYoIF9fKCdwY2x6aXAgbGlzdGVkIGZpbGUgY29udGVudHMgKCUxJHMpJywnaXQ
tbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlICkgKTsKCgkJCQkJJHRoaXMtPmxvZ19hcmNoaXZlX2
ZpbGVfc3RhdHMoICR6aXBfZmlsZSApOwoJCQkJCQoJCQkJCSRyZXN1bHQgPSAmJGZpbGVfbGlzdDsKCQkJC
QkKCQkJCX0gZWxzZSB7CgkJCQkKCQkJCQkvLyBDb3VsZG4ndCBvcGVuIGFyY2hpdmUgLSB3aWxsIHJldHVy
biBmb3IgbWF5YmUgYW5vdGhlciBtZXRob2QgdG8gdHJ5CgkJCQkJJGVycm9yX3N0cmluZyA9ICR6YS0+ZXJ
yb3JJbmZvKCB0cnVlICk7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbn
RmKCBfXygncGNsemlwIGZhaWxlZCB0byBvcGVuIGZpbGUgdG8gbGlzdCBjb250ZW50cyAoJTEkcykgLSBFc
nJvciBJbmZvOiAlMiRzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGVycm9yX3N0
cmluZyApICk7CgoJCQkJCS8vIFJldHVybiBhbiBlcnJvciBjb2RlIGFuZCBhIGRlc2NyaXB0aW9uIC0gdGh
pcyBuZWVkcyB0byBiZSBoYW5kbGVkIG1vcmUgZ2VuZXJpY2FsbHkKCQkJCQkvLyRyZXN1bHQgPSBhcnJheS
ggMSwgIlVuYWJsZSB0byBnZXQgYXJjaGl2ZSBjb250ZW50cyIgKTsKCQkJCQkvLyBDdXJyZW50bHkgYXMgd
2UgYXJlIHJldHVybmluZyBhbiBhcnJheSBhcyBhIHZhbGlkIHJlc3VsdCB3ZSBqdXN0IHJldHVybiBmYWxz
ZSBvbiBmYWlsdXJlCgkJCQkJJHJlc3VsdCA9IGZhbHNlOwoKCQkJCX0KCQkJCQkJCQoJCQl9IAoJCQkKCQk
gIAlpZiAoIE5VTEwgIT0gJHphICkgeyB1bnNldCggJHphICk7IH0JCQoJCQkKCQkJcmV0dXJuICRyZXN1bH
Q7CgkJCQkKCQl9CgkJCgkJLyoJc2V0X2NvbW1lbnQoKQoJCSAqCQoJCSAqCVJldHJpZXZlIGFyY2hpdmUgY
29tbWVudC4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJCSR6aXBfZmlsZQkJRmlsZW5hbWUgb2YgYXJj
aGl2ZSB0byBzZXQgY29tbWVudCBvbi4KCQkgKglAcGFyYW0JCXN0cmluZwkJCSRjb21tZW50CQlDb21tZW5
0IHRvIGFwcGx5IHRvIGFyY2hpdmUuCgkJICoJQHJldHVybgkJYm9vbAkJCQkJCQl0cnVlIG9uIHN1Y2Nlc3
MsIG90aGVyd2lzZSBmYWxzZS4KCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gc2V0X2NvbW1lbnQoICR6aXBfZ
mlsZSwgJGNvbW1lbnQgKSB7CgkJCgkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJJHphID0gTlVMTDsKCQkJCgkJ
CS8vIFRoaXMgc2hvdWxkIGdpdmUgdXMgYSBuZXcgYXJjaGl2ZSBvYmplY3QsIG9mIG5vdCBjYXRjaCBpdCB
hbmQgYmFpbCBvdXQKCQkJdHJ5IHsKCQkJCQkKCQkJCSR6YSA9IG5ldyBwbHVnaW5idWRkeV9QY2xaaXAoIC
R6aXBfZmlsZSApOwoJCQkJJHJlc3VsdCA9IHRydWU7CgkJCQkKCQkJfSBjYXRjaCAoIEV4Y2VwdGlvbiAkZ
SApIHsKCQkJCgkJCQkvLyBTb21ldGhpbmcgZmlzaHkgLSB0aGUgbWV0aG9kcyBpbmRpY2F0ZWQgcGNsemlw
IGJ1dCB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBjbGFzcwoJCQkJJGVycm9yX3N0cmluZyA9ICRlLT5nZXRNZXN
zYWdlKCk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdwY2
x6aXAgaW5kaWNhdGVkIGFzIGF2YWlsYWJsZSBtZXRob2QgYnV0IGVycm9yIHJlcG9ydGVkOiAlMSRzJywna
XQtbDEwbi1iYWNrdXBidWRkeScgKSwgJGVycm9yX3N0cmluZyApICk7CgkJCQkkcmVzdWx0ID0gZmFsc2U7
CgkJCQkKCQkJfQoJCQkKCQkJLy8gT25seSBjb250aW51ZSBpZiB3ZSBoYXZlIGEgdmFsaWQgYXJjaGl2ZSB
vYmplY3QKCQkJaWYgKCB0cnVlID09PSAkcmVzdWx0ICkgewoJCQkJCgkJCQkvLyBNYWtlIHN1cmUgd2Ugb3
BlbmVkIHRoZSB6aXAgb2sgYW5kIHdlIGFkZGVkIHRoZSBjb21tZW50IG9rCgkJCQkvLyBOb3RlOiB1c2luZ
yBlbXB0eSBhcnJheSBhcyB3ZSBkb24ndCBhY3R1YWxseSB3YW50IHRvIGFkZCBhbnkgZmlsZXMKCQkJCWlm
ICggMCAhPT0gKCAkbGlzdCA9ICR6YS0+YWRkKCBhcnJheSgpLCBQQ0xaSVBfT1BUX0NPTU1FTlQsICRjb21
tZW50ICkgKSApIHsKCQkJCQoJCQkJCS8vIFdlIGdvdCBhIGxpc3QgYmFjayBzbyBhZGRpbmcgY29tbWVudC
BzaG91bGQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWwKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0Y
WlscycsIHNwcmludGYoIF9fKCdQY2xaaXAgc2V0IGNvbW1lbnQgaW4gZmlsZSAlMSRzJywnaXQtbDEwbi1i
YWNrdXBidWRkeScgKSwgJHppcF9maWxlICkgKTsKCQkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQkKCQkJCX0
gZWxzZSB7CgkJCQkKCQkJCQkvLyBJZiB3ZSBmYWlsZWQgdG8gc2V0IHRoZSBjb21tbmVudCB0aGVuIGxvZy
BpdCAoPykgYW5kIGRyb3AgdGhyb3VnaAoJCQkJCSRlcnJvcl9zdHJpbmcgPSAkemEtPmVycm9ySW5mbyggd
HJ1ZSApOwoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ1Bj
bFppcCBmYWlsZWQgdG8gc2V0IGNvbW1lbnQgaW4gZmlsZSAlMSRzIC0gRXJyb3IgSW5mbzogJTIkcycsJ2l
0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGVycm9yX3N0cmluZyApICk7CgkJCQkJJHJlc3
VsdCA9IGZhbHNlOwoJCQkJCQkJCQkJCgkJCQl9CgkJCQoJCQl9CgkJCQoJCSAgCWlmICggTlVMTCAhPSAke
mEgKSB7IHVuc2V0KCAkemEgKTsgfQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCQoJCX0KCgkJLyoJ
Z2V0X2NvbW1lbnQoKQoJCSAqCQoJCSAqCVJldHJpZXZlIGFyY2hpdmUgY29tbWVudC4KCQkgKgkKCQkgKgl
AcGFyYW0JCXN0cmluZwkJJHppcF9maWxlCQlGaWxlbmFtZSBvZiBhcmNoaXZlIHRvIHJldHJpZXZlIGNvbW
1lbnQgZnJvbS4KCQkgKglAcmV0dXJuCQlib29sfHN0cmluZwkJCQkJZmFsc2Ugb24gZmFpbHVyZSwgWmlwI
GNvbW1lbnQgb3RoZXJ3aXNlLgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBnZXRfY29tbWVudCggJHppcF9m
aWxlICkgewoJCQoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCSR6YSA9IE5VTEw7CgkJCQoJCQkvLyBUaGlzIHN
ob3VsZCBnaXZlIHVzIGEgbmV3IGFyY2hpdmUgb2JqZWN0LCBvZiBub3QgY2F0Y2ggaXQgYW5kIGJhaWwgb3
V0CgkJCXRyeSB7CgkJCQkJCgkJCQkkemEgPSBuZXcgcGx1Z2luYnVkZHlfUGNsWmlwKCAkemlwX2ZpbGUgK
TsKCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCgkJCX0gY2F0Y2ggKCBFeGNlcHRpb24gJGUgKSB7CgkJCQoJ
CQkJLy8gU29tZXRoaW5nIGZpc2h5IC0gdGhlIG1ldGhvZHMgaW5kaWNhdGVkIHBjbHppcCBidXQgd2UgY29
1bGRuJ3QgZmluZCB0aGUgY2xhc3MKCQkJCSRlcnJvcl9zdHJpbmcgPSAkZS0+Z2V0TWVzc2FnZSgpOwoJCQ
kJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygncGNsemlwIGluZGljY
XRlZCBhcyBhdmFpbGFibGUgbWV0aG9kIGJ1dCBlcnJvciByZXBvcnRlZDogJTEkcycsJ2l0LWwxMG4tYmFj
a3VwYnVkZHknICksICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCgkJCX0
KCQkJCgkJCS8vIE9ubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHZhbGlkIGFyY2hpdmUgb2JqZWN0CgkJCW
lmICggdHJ1ZSA9PT0gJHJlc3VsdCApIHsKCQkJCQoJCQkJLy8gTWFrZSBzdXJlIHdlIG9wZW5lZCB0aGUge
mlwIG9rIGFuZCBpdCBoYXMgcHJvcGVydGllcwoJCQkJaWYgKCAwICE9PSAoICRwcm9wZXJ0aWVzID0gJHph
LT5wcm9wZXJ0aWVzKCkgKSApIHsKCQkJCQoJCQkJCS8vIFdlIGdvdCBwcm9wZXJ0aWVzIHNvIHNob3VsZCB
oYXZlIGEgY29tbWVudCB0byByZXR1cm4sIGV2ZW4gaWYgZW1wdHkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3
RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdQY2xaaXAgcmV0cmlldmVkIGNvbW1lbnQgaW4gZmlsZ
SAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlICkgKTsKCQkJCQkkcmVzdWx0ID0g
JHByb3BlcnRpZXNbICdjb21tZW50JyBdOwoJCQkJCQoJCQkJfSBlbHNlIHsKCQkJCQoJCQkJCS8vIElmIHd
lIGZhaWxlZCB0byBnZXQgdGhlIGNvbW1uZW50IHRoZW4gbG9nIGl0ICg/KSBhbmQgZHJvcCB0aHJvdWdoCg
kJCQkJJGVycm9yX3N0cmluZyA9ICR6YS0+ZXJyb3JJbmZvKCB0cnVlICk7CgkJCQkJcGJfYmFja3VwYnVkZ
Hk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnUGNsWmlwIGZhaWxlZCB0byByZXRyaWV2ZSBj
b21tZW50IGluIGZpbGUgJTEkcyAtIEVycm9yIEluZm86ICUyJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyA
pLCAkemlwX2ZpbGUsICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkKCQ
kJCX0KCQkJCQoJCQkKCQkJfQoJCQkKCQkgIAlpZiAoIE5VTEwgIT0gJHphICkgeyB1bnNldCggJHphICk7I
H0JCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQkKCQl9CgkJCgl9IC8vIGVuZCBwbHVnaW5idWRkeV96
YnppcHBjbHppcCBjbGFzcy4JCgkKfQo/Pgo=
###PACKDATA,FILE_END,/lib/zipbuddy/zbzippclzip.php,importbuddy/lib/zipbuddy/zbzippc
lzip.php
###PACKDATA,FILE_START,/lib/zipbuddy/zbzipproc.php,importbuddy/lib/zipbuddy/zbzippr
oc.php
PD9waHAKLyoqCiAqCXBsdWdpbmJ1ZGR5X3piemlwcHJvYyBDbGFzcwogKgogKiAgRXh0ZW5kcyB0aGUgeml
wIGNhcGFiaWxpdHkgY29yZSBjbGFzcyB3aXRoIHByb2Mgc3BlY2lmaWMgY2FwYWJpbGl0eQogKgkKICoJVm
Vyc2lvbjogMS4wLjAKICoJQXV0aG9yOgogKglBdXRob3IgVVJJOgogKgogKglAcGFyYW0JCSRwYXJlbnQJC
W9iamVjdAkJT3B0aW9uYWwgcGFyZW50IG9iamVjdCB3aGljaCBjYW4gcHJvdmlkZSBmdW5jdGlvbnMgZm9y
IHJlcG9ydGluZywgZXRjLgogKglAcmV0dXJuCQludWxsCiAqCiAqLwppZiAoICFjbGFzc19leGlzdHMoICJ
wbHVnaW5idWRkeV96YnppcHByb2MiICkgKSB7CgoJY2xhc3MgcGx1Z2luYnVkZHlfemJ6aXBwcm9jIGV4dG
VuZHMgcGx1Z2luYnVkZHlfemJ6aXBjb3JlIHsKCQoJCS8vIENvbnN0YW50cyBmb3IgZmlsZSBoYW5kbGluZ
woJCWNvbnN0IFpJUF9MT0dfRklMRV9OQU1FICAgICAgICA9ICd0ZW1wX3ppcF9wcm9jX2xvZy50eHQnOwoJ
CWNvbnN0IFpJUF9FUlJPUlNfRklMRV9OQU1FICAgICA9ICdsYXN0X3Byb2NfZXJyb3JzLnR4dCc7CgkJY29
uc3QgWklQX1dBUk5JTkdTX0ZJTEVfTkFNRSAgID0gJ2xhc3RfcHJvY193YXJuaW5ncy50eHQnOwoJCWNvbn
N0IFpJUF9PVEhFUlNfRklMRV9OQU1FICAgICA9ICdsYXN0X3Byb2Nfb3RoZXJzLnR4dCc7CgkJY29uc3QgW
klQX0VYQ0xVU0lPTlNfRklMRV9OQU1FID0gJ2V4Y2x1c2lvbnMudHh0JzsKCQljb25zdCBaSVBfSU5DTFVT
SU9OU19GSUxFX05BTUUgPSAnaW5jbHVzaW9ucy50eHQnOwoJCgkJLy8gUG9zc2libGUgZXhlY3V0YWJsZSB
wYXRoIHNldHMKCQljb25zdCBERUZBVUxUX0VYRUNVVEFCTEVfUEFUSFMgPSAnL3Vzci9sb2NhbC9iaW46Oi
91c3IvYmluOi91c3IvbG9jYWwvc2JpbjovdXNyL3NiaW46L3NiaW46L2Jpbic7CgkJY29uc3QgV0lORE9XU
19FWEVDVVRBQkxFX1BBVEhTID0gJyc7CgkJCiAgICAgICAgLyoqCiAgICAgICAgICogbWV0aG9kIHRhZyB1
c2VkIHRvIHJlZmVyIHRvIHRoZSBtZXRob2QgYW5kIGVudGl0aWVzIGFzc29jaWF0ZWQgd2l0aCBpdCBzdWN
oIGFzIGNsYXNzIG5hbWUKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIHN0cmluZwogICAgICAgICAqLw
oJCXB1YmxpYyBzdGF0aWMgJF9tZXRob2RfdGFnID0gJ3Byb2MnOwoJCQogICAgICAgIC8qKgogICAgICAgI
CAqIFRoaXMgdGVsbHMgdXMgd2hldGhlciB0aGlzIG1ldGhvZCBpcyByZWdhcmRlZCBhcyBhICJjb21wYXRp
YmlsaXR5IiBtZXRob2QKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIGJvb2wKICAgICAgICAgKi8KCQl
wdWJsaWMgc3RhdGljICRfaXNfY29tcGF0aWJpbGl0eV9tZXRob2QgPSBmYWxzZTsKCQkKICAgICAgICAvKi
oKICAgICAgICAgKiBUaGlzIHRlbGxzIHVzIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBtZXRob2Qgc28gd
GhleSBjYW4gYmUgY2hlY2sgdG8gc2VlIGlmIHRoZSBtZXRob2QgY2FuIGJlIHN1cHBvcnRlZAogICAgICAg
ICAqIAogICAgICAgICAqIEB2YXIgYXJyYXkKICAgICAgICAgKi8KCQlwdWJsaWMgc3RhdGljICRfbWV0aG9
kX2RlcGVuZGVuY2llcyA9IGFycmF5KCAnY2xhc3NlcycgPT4gYXJyYXkoKSwKCQkJCQkJCQkJCQkgIAkJIC
dmdW5jdGlvbnMnID0+IGFycmF5KCAncHJvY19vcGVuJywgJ3Byb2NfY2xvc2UnLCAncHJvY19nZXRfc3Rhd
HVzJywgJ3Byb2NfdGVybWluYXRlJyApLAoJCQkJCQkJCQkJCSAgCQkgJ2V4dGVuc2lvbnMnID0+IGFycmF5
KCksCgkJCQkJCQkJCQkJICAJCSAnZmlsZXMnID0+IGFycmF5KCksCgkJCQkJCQkJCQkJICAJCSAnY2hlY2t
fZnVuYycgPT4gJ2NoZWNrX21ldGhvZF9kZXBlbmRlbmNpZXNfc3RhdGljJwoJCQkJCQkJCQkJCQkJKTsKCQ
kJCgkJLyoqCgkJICogCgkJICogZ2V0X21ldGhvZF90YWdfc3RhdGljKCkKCQkgKgoJCSAqIEdldCB0aGUgc
3RhdGljIG1ldGhvZCB0YWcgaW4gYSBzdGF0aWMgY29udGV4dAoJCSAqCgkJICogQHJldHVybgkJc3RyaW5n
CVRoZSBtZXRob2QgdGFnCgkJICoKCQkgKi8KCQlwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9tZXRob2R
fdGFnX3N0YXRpYygpIHsKCQkKCQkJcmV0dXJuIHNlbGY6OiRfbWV0aG9kX3RhZzsKCQkJCgkJfQoKCQkvKi
oKCQkgKiAKCQkgKiBnZXRfaXNfY29tcGF0aWJpbGl0eV9tZXRob2Rfc3RhdGljKCkKCQkgKgoJCSAqIEdld
CB0aGUgY29tcGF0aWJpbGl0eSBtZXRob2QgaW5kaWNhdG9yIGluIGEgc3RhdGljIGNvbnRleHQKCQkgKgoJ
CSAqIEByZXR1cm4JCWJvb2wJVHJ1ZSBpZiBpcyBhIGNvbXBhdGliaWxpdHkgbWV0aG9kCgkJICoKCQkgKi8
KCQlwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9pc19jb21wYXRpYmlsaXR5X21ldGhvZF9zdGF0aWMoKS
B7CgkJCgkJCXJldHVybiBzZWxmOjokX2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kOwoJCQkKCQl9CgoJCS8qK
goJCSAqIAoJCSAqIGdldF9tZXRob2RfZGVwZW5kZW5jaWVzX3N0YXRpYygpCgkJICoKCQkgKiBHZXQgdGhl
IG1ldGhvZCBkZXBlbmRlbmNpZXMgYXJyYXkgaW4gYSBzdGF0aWMgY29udGV4dAoJCSAqCgkJICogQHJldHV
ybgkJYXJyYXkJVGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgbWV0aG9kIHRoYXQgaXMgcmVxdWlyZXMgdG8gYm
UgYSBzdXBwb3J0ZWQgbWV0aG9kCgkJICoKCQkgKi8KCQlwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9tZ
XRob2RfZGVwZW5kZW5jaWVzX3N0YXRpYygpIHsKCQkKCQkJcmV0dXJuIHNlbGY6OiRfbWV0aG9kX2RlcGVu
ZGVuY2llczsKCQkJCgkJfQoJCQoJCS8qKgoJCSAqIAoJCSAqIGNoZWNrX21ldGhvZF9kZXBlbmRlbmNpZXN
fc3RhdGljKCkKCQkgKgoJCSAqIEFsbG93cyBhZGRpdGlvbmFsIG1ldGhvZCBkZXBlbmRlbmN5IGNoZWNrcy
BiZXlvbmQgdGhlIHN0YW5kYXJkIGluIGEgc3RhdGljIGNvbnRleHQKCQkgKgoJCSAqIEByZXR1cm4JCWJvb
2wJVHJ1ZSBpZiBhZGRpdGlvbmFsIGRlcGVuZGVuY3kgY2hlY2tzIHBhc3NlZAoJCSAqCgkJICovCgkJcHVi
bGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja19tZXRob2RfZGVwZW5kZW5jaWVzX3N0YXRpYygpIHsKCQkKCQk
JJHJlc3VsdCA9IGZhbHNlOwoJCQkKCQkJLy8gTmVlZCB0byBhZGRpdGlvbmFsbHkgY2hlY2sgdGhlIE9TIC
0gbmVlZCAqbml4IHR5cGUgYXQgbGVhc3QKCQkJCQoJCQkvLyBVc2UgVUMgZm9yIGVhc2UgLSB0aGlzIF9za
G91bGQgbm90PyBjYXVzZSBhbnkgYW1iaWd1aXR5CgkJCSRvc19uYW1lID0gc3RydG91cHBlciggUEhQX09T
ICk7CgkgCgkJCS8vIEN1cnJlbnRseSB3ZSdsbCBhc3N1bWUgYW55dGhpbmcgdGhhdCBkb2Vzbid0IGxvb2s
gbGlrZSBXaW5kb3dzIGlzICpuaXggYmFzZWQKCQkJaWYgKCAhKCBzdWJzdHIoICRvc19uYW1lLCAwLCAzIC
kgPT09ICdXSU4nKSApIHsKCQkJCgkJCQkvLyBXZSdyZSBvayBhcyBtZWV0IGRlcGVuZGVuY3kgdGhhdCB0a
GlzIGlzbid0IFdpbmRvd3MgYmFzZWQgT1MKCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkKCQkJfQkKCQkJCgkJ
CXJldHVybiAkcmVzdWx0OwoJCQoJCX0KCgkJLyoqCgkJICoJX19jb25zdHJ1Y3QoKQoJCSAqCQoJCSAqCUR
lZmF1bHQgY29uc3RydWN0b3IuCgkJICoJCgkJICoJQHBhcmFtCQlyZWZlcmVuY2UJJiRwYXJlbnQJCVtvcH
Rpb25hbF0gUmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgc3RhdHVzKCkgZnVuY3Rpb
24gZm9yIHN0YXR1cyB1cGRhdGVzLgoJCSAqCUByZXR1cm4JCW51bGwKCQkgKgoJCSAqLwoJCXB1YmxpYyBm
dW5jdGlvbiBfX2NvbnN0cnVjdCggJiRwYXJlbnQgPSBOVUxMICkgewoKCQkJcGFyZW50OjpfX2NvbnN0cnV
jdCggJHBhcmVudCApOwoJCQkKCQkJLy8gT3ZlcnJpZGUgc29tZSBvZiBwYXJlbnQgZGVmYXVsdHMKCQkJJH
RoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ2F0dHInIF0gPSBhcnJheV9tZXJnZSggJHRoaXMtPl9tZXRob2RfZ
GV0YWlsc1sgJ2F0dHInIF0sCgkJCQkJCQkJCQkJCQkJCWFycmF5KCAnbmFtZScgPT4gJ1Byb2MgTWV0aG9k
JywKCQkJCQkJCQkJCQkJCSAgCQkJICAgJ2NvbXBhdGliaWxpdHknID0+IHNlbGY6OiRfaXNfY29tcGF0aWJ
pbGl0eV9tZXRob2QgKQoJCQkJCQkJCQkJCQkJICAJICAgKTsKCgkJCS8vIE5vdyBzZXQgdXAgdGhlIGRlZm
F1bHQgZXhlY3V0YWJsZSBwYXRocyAobm90IG1lcmdpbmcgYnV0IHNldHRpbmcpCgkJCS8vIE5vdGU6IFBhc
mVudCBjb25zdHJ1Y3RvciBzZXQgdGhlIG9zIHR5cGUgdmFsdWUKCQkJc3dpdGNoICggJHRoaXMtPmdldF9v
c190eXBlKCkgKSB7CgkJCQoJCQkJY2FzZSBzZWxmOjpPU19UWVBFX05JWDoKCQkJCQoJCQkJCSR0aGlzLT5
zZXRfZXhlY3V0YWJsZV9wYXRocyggZXhwbG9kZSggUEFUSF9TRVBBUkFUT1IsIHNlbGY6OkRFRkFVTFRfRV
hFQ1VUQUJMRV9QQVRIUyApLCBmYWxzZSk7CgkJCQkJYnJlYWs7CgkJCQkJCgkJCQljYXNlIHNlbGY6Ok9TX
1RZUEVfV0lOOgoJCQkJCQoJCQkJCSR0aGlzLT5zZXRfZXhlY3V0YWJsZV9wYXRocyggZXhwbG9kZSggUEFU
SF9TRVBBUkFUT1IsIHNlbGY6OldJTkRPV1NfRVhFQ1VUQUJMRV9QQVRIUyApLCBmYWxzZSk7CgkJCQkJCgk
JCQkJLy8gTmVlZCB0byBtZXJnZSBpbiBBQlNQQVRIIGhlcmUgYmVjYXVzZSB3ZSBjYW5ub3Qgc2V0IHRoYX
QgaW4gdGhlIGRlZmF1bHRzIC0gaXQgaXMgcHJlcGVuZGVkCgkJCQkJJHRoaXMtPnNldF9leGVjdXRhYmxlX
3BhdGhzKCBhcnJheSggcnRyaW0oIEFCU1BBVEgsIERJUkVDVE9SWV9TRVBBUkFUT1IgKSApICk7CgkJCQkJ
YnJlYWs7CgkJCQkJCgkJCQlkZWZhdWx0OgoJCQkJCS8vIExvZyBlcnJvciBhbmQgbGVhdmUgcGF0aHMgZW1
wdHkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdVbmtub3
duIE9TIHR5cGUgKCUxJHMpIGNvdWxkIG5vdCBzZXQgZXhlY3V0YWJsZSBwYXRocycsJ2l0LWwxMG4tYmFja
3VwYnVkZHknICksICR0aGlzLT5nZXRfb3NfdHlwZSgpICkgKTsKCQkJCQkKCQkJfQoJCQkKCQl9CgkJCgkJ
LyoqCgkJICoJX19kZXN0cnVjdCgpCgkJICoJCgkJICoJRGVmYXVsdCBkZXN0cnVjdG9yLgoJCSAqCQoJCSA
qCUByZXR1cm4JCW51bGwKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCApIHsKCQ
kKCQkJcGFyZW50OjpfX2Rlc3RydWN0KCk7CgoJCX0KCQkKCQkvKioKCQkgKglnZXRfbWV0aG9kX3RhZygpC
gkJICoJCgkJICoJUmV0dXJucyB0aGUgKHN0YXRpYykgbWV0aG9kIHRhZwoJCSAqCQoJCSAqCUByZXR1cm4J
CXN0cmluZyBUaGUgbWV0aG9kIHRhZwoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGdldF9tZXRob2R
fdGFnKCkgewoJCQoJCQlyZXR1cm4gc2VsZjo6JF9tZXRob2RfdGFnOwoJCQkKCQl9CgkJCgkJLyoqCgkJIC
oJZ2V0X2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kKCkKCQkgKgkKCQkgKglSZXR1cm5zIHRoZSAoc3RhdGljK
SBpc19jb21wYXRpYmlsaXR5X21ldGhvZCBib29sZWFuCgkJICoJCgkJICoJQHJldHVybgkJYm9vbAoJCSAq
CgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGdldF9pc19jb21wYXRpYmlsaXR5X21ldGhvZCgpIHsKCQkKCQk
JcmV0dXJuIHNlbGY6OiRfaXNfY29tcGF0aWJpbGl0eV9tZXRob2Q7CgkJCQoJCX0KCQkKCQkvKioKCQkgKg
lnZXRfY29tbWFuZF9wYXRoKCkKCQkgKgkKCQkgKglUaGlzIHJldHVybnMgdGhlIHBhdGggZm9yIHRoZSByZ
XF1ZXN0ZWQgY29tbWFuZCBmcm9tIHRoZSBtZXRob2QgZGV0YWlscwoJCSAqCUlmIG5vdCBmb3VuZCB0aGVu
IHdpbGwgcmV0dXJuIGVtcHR5IHN0cmluZyB3aGljaCBpcyB0aGUgc2FtZSBhcyBpZiB0aGUKCQkgKgljb21
tYW5kIGlzIGJlaW5nIGFjY2Vzc2VkIHRocm91Z2ggUEFUSAoJCSAqCQoJCSAqCUByZXR1cm4JCXN0cmluZw
kJCQlQYXRoIGZvciBjb21tYW5kLCB0cmltbWVkIC0gbWF5IGJlIGVtcHR5CgkJICoKCQkgKi8KCQlwcm90Z
WN0ZWQgZnVuY3Rpb24gZ2V0X2NvbW1hbmRfcGF0aCggJGNvbW1hbmQgPSBzZWxmOjpDT01NQU5EX1VOS05P
V05fUEFUSCApIHsKCQkKCQkJJHJlc3VsdCA9ICcnOwoJCQkKCQkJc3dpdGNoKCAkY29tbWFuZCApIHsKCQk
JCgkJCQljYXNlIHNlbGY6OkNPTU1BTkRfWklQX1BBVEg6CgkJCQkKCQkJCQkvLyBJZiB0aGVyZSBpcyBhIG
NvbW1vbiBwYXRoIHVzZSBpdCBvdGhlcndpc2UgbG9vayBmb3IgdGhlIGNvbW1hbmQgc3BlY2lmaWMgcGF0a
AoJCQkJCWlmICggaXNzZXQoICR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3BhdGgnIF0g
KSApIHsKCQkJCQkKCQkJCQkJJHJlc3VsdCA9IHRyaW0oICR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJ
hbScgXVsgJ3BhdGgnIF0gKTsKCQkJCQkJCgkJCQkJfSBlbHNlaWYgKCBpc3NldCggJHRoaXMtPl9tZXRob2
RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAnemlwJyBdWyAncGF0aCcgXSApICkgewoJCQkJCQoJCQkJCQkkcmVzd
Wx0ID0gdHJpbSggJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAnemlwJyBdWyAncGF0aCcg
XSApOwoJCQkJCX0KCQkJCQkKCQkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSBzZWxmOjpDT01NQU5EX1VOWkl
QX1BBVEg6CgkJCQkKCQkJCQkvLyBJZiB0aGVyZSBpcyBhIGNvbW1vbiBwYXRoIHVzZSBpdCBvdGhlcndpc2
UgbG9vayBmb3IgdGhlIGNvbW1hbmQgc3BlY2lmaWMgcGF0aAoJCQkJCWlmICggaXNzZXQoICR0aGlzLT5fb
WV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3BhdGgnIF0gKSApIHsKCQkJCQkKCQkJCQkJJHJlc3VsdCA9
IHRyaW0oICR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3BhdGgnIF0gKTsKCQkJCQkJCgk
JCQkJfSBlbHNlaWYgKCBpc3NldCggJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAndW56aX
AnIF1bICdwYXRoJyBdICkgKSB7CgkJCQkJCgkJCQkJCSRyZXN1bHQgPSB0cmltKCAkdGhpcy0+X21ldGhvZ
F9kZXRhaWxzWyAncGFyYW0nIF1bICd1bnppcCcgXVsgJ3BhdGgnIF0gKTsKCQkJCQl9CgkJCQkJCgkJCQkJ
YnJlYWs7CgkJCQkKCQkJCWRlZmF1bHQ6CgkJCQkKCQkJCQkvLyBSZXR1cm4gdGhlIGVtcHR5IHN0cmluZyB
kZWZhdWx0IGZvciBub3cKCQkJCgkJCX0KCgkJCXJldHVybiAkcmVzdWx0OwoJCQoJCX0KCQkKCQkvKioKCQ
kgKglzZXRfemlwX3ZlcnNpb24oKQoJCSAqCQoJCSAqCVRoaXMgc2V0cyB0aGUgemlwIHZlcnNpb24gaW5mb
3JtYXRpb24gaW4gdGhlIG1ldGhvZCBkZXRhaWxzCgkJICoJTm90ZTogcHJlLXYzIHppcCBydW5uaW5nICJ6
aXAgLXYiIHdpbGwgbm90IHByb2R1Y2UgdGhlIHJlcXVpcmVkIG91dHB1dCBiZWNhdXNlCgkJICoJdGhlcmU
gaXMgbm8gdHR5IGF0dGFjaGVkICh3aGVuIHJ1bm5pbmcgdGhyb3VnaCBleGVjKCkgb3IgZXF1aXZhbGVudC
ksIGluc3RlYWQKCQkgKglpdCB3aWxsIHByb2R1Y2UgYSB6aXAgZmlsZS5DdXJyZW50bHkgd2UnbGwganVzd
CBkZXRlY3QgdGhhdCBhbmQgc2V0IHRoZSB2ZXJzaW9uCgkJICoJYXMgMi4wIGFuZCBub3Qgc2V0IHRoZSBp
bmZvLgoJCSAqCVRPRE86IFdlIGNvdWxkIHBhcnN
lIHRoZSB6aXAgZmlsZSB0byBnZXQgdGhlIHZlcnNpb24gYnV0IGFsc28gY29uc2lkZXJpbmcgZG9pbmcKCQ
kgKgl0aGF0IGluIHRoZSBpc19hdmFpbGFibGUoKSB0ZXN0IHdoZXJlIHdlIGFscmVhZHkgY3JlYXRlZCBhI
HppcCBmaWxlLgoJCSAqCVRPRE86IENvbnNpZGVyIHRlc3RpbmcgaWYgbWV0aG9kIGNhbiB6aXAgYW5kIG9u
bHkgdGhlbiBydW4gdGhlIHRlc3QKCQkgKglUT0RPOiBUaGlzIG5lZWRzIHJlZmFjdG9yaW5nIHRvIG1ha2U
gaXQgY2xlYW5lcgoJCSAqCQoJCSAqCUBwYXJhbQkJaW50CQkkbWFqb3IJCVZhbHVlIHRvIHVzZSBpZiBub2
5lIGZvdW5kIG9yIG92ZXJyaWRlIHRydWUKCQkgKglAcGFyYW0JCWludAkJJG1pbm9yCQlWYWx1ZSB0byB1c
2UgaWYgbm9uZSBmb3VuZCBvciBvdmVycmlkZSB0cnVlCgkJICoJQHBhcmFtCQlib29sCSRvdmVycmlkZQlU
cnVlIHRvIHVzZSBwYXNzZWQgaW4gdmFsdWUocykgcmVnYXJkbGVzcwoJCSAqCUByZXR1cm4JCW9iamVjdAk
JCQlUaGlzIG9iamVjdCByZWZlcmVuY2UKCQkgKgoJCSAqLwoJCXByb3RlY3RlZCBmdW5jdGlvbiBzZXRfem
lwX3ZlcnNpb24oICRtYWpvciA9IDAsICRtaW5vciA9IDAsICRvdmVycmlkZSA9IGZhbHNlICkgewoJCQoJC
QkkZXhpdGNvZGUgPSAxMjc7CgkJCSRvdXRwdXQgPSBhcnJheSgpOwoJCQkkemlwcGF0aCA9ICcnOwoJCQkk
Y29tbWFuZCA9ICcnOwoJCQkkbWF0Y2hlcyA9IGFycmF5KCk7CgkJCSRpbmZvID0gJyc7CgkJCgkJCS8vIEl
mIHdlIGhhdmUgYmVlbiBnaXZlbiBhIHZhbHVlIHRvIHVzZSB3aXRoIG92ZXJyaWRlIHRoZW4ganVzdCB1c2
UgaXQKCQkJaWYgKCAoICggaXNfaW50KCAkbWFqb3IpICkgJiYgKCAwIDwgJG1ham9yICkgJiYgKCBpc19pb
nQoICRtaW5vciApICkgKSAmJiAoIHRydWUgPT09ICRvdmVycmlkZSApICkgewoJCQkKCQkJCS8vIFNldCB0
aGUgZ2l2ZW4gdmVyc2lvbiByZWdhcmRsZXNzCgkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAncGFyYW0
nIF1bICd6aXAnIF1bICd2ZXJzaW9uJyBdID0gYXJyYXkoICdtYWpvcicgPT4gJG1ham9yLCAnbWlub3InID
0+ICRtaW5vciApOwoJCQkJcmV0dXJuICR0aGlzOyAKCQkJCgkJCX0KCQkJCgkJCS8vIEdldCB0aGUgY29tb
WFuZCBwYXRoIGZvciB0aGUgemlwIGNvbW1hbmQgLSBzaG91bGQgcmV0dXJuIGEgdHJpbW1lZCBzdHJpbmcK
CQkJJHppcHBhdGggPSAkdGhpcy0+Z2V0X2NvbW1hbmRfcGF0aCggc2VsZjo6Q09NTUFORF9aSVBfUEFUSCA
pOwoJCQkKCQkJLy8gQWRkIHRoZSB0cmFpbGluZyBzbGFzaCBpZiByZXF1aXJlZAoJCQkkY29tbWFuZCA9IC
R0aGlzLT5zbGFzaGlmeSggJHppcHBhdGggKSAuICd6aXAgLXYnOwoJCQkKCQkJLy9AZXhlYyggJGNvbW1hb
mQsICRvdXRwdXQsICRleGl0Y29kZSApOwoJCQkKCQkJLy8gR2V0IGEgdGVtcG9yYXJ5IGZpbGUgdG8gdXNl
IGZvciBjb21tYW5kIG91dHB1dAoJCQkkb3V0ZmlsZV9uYW1lID0gdGVtcG5hbSggc3lzX2dldF90ZW1wX2R
pcigpLCB1bmlxaWQoICdwYl8nICkgKTsKCQkJCgkJCS8vIE1ha2Ugc3VyZSB3ZSBvbmx5IGRvIHRoaXMgaW
Ygd2UgaGF2ZSBhIGZpbGUgd2UgY2FuIHdyaXRlIHRvCgkJCWlmICggaXNfc3RyaW5nKCAkb3V0ZmlsZV9uY
W1lICkgJiYgaXNfd3JpdGFibGUoICRvdXRmaWxlX25hbWUgKSApIHsgCgkJCQoJCQkJJGRlc2NyaXB0b3Jz
cGVjID0gYXJyYXkoCgkJCQkJMCA9PiBhcnJheSggInBpcGUiLCAiciIgKSwKCQkJCQkxID0+IGFycmF5KCA
iZmlsZSIsICRvdXRmaWxlX25hbWUsICJ3IiApLAoJCQkJCTIgPT4gYXJyYXkoICJmaWxlIiwgIi9kZXYvbn
VsbCIsICJhIiApCQoJCQkJKTsKCQkJCQoJCQkJJHByb2Nlc3MgPSBOVUxMOyAvLyBNYXliZSBpdCBkb2Vzb
id0IHdvcmsKCQkJCQoJCQkJJHByb2Nlc3MgPSBAcHJvY19vcGVuKCAkY29tbWFuZCwgJGRlc2NyaXB0b3Jz
cGVjLCAkcGlwZXMgKTsKCQkJCQoJCQkJaWYgKCBpc19yZXNvdXJjZSggJHByb2Nlc3MgKSApIHsKCQkJCQo
JCQkJCWZjbG9zZSggJHBpcGVzWzBdICk7IC8vIE5ldmVyIHdhbnQgdG8gc2VuZCBpbnB1dCBzbyBqdXN0IG
Nsb3NlIGl0CgkJCQkJCgkJCQkJJHBzdGF0dXMgPSBwcm9jX2dldF9zdGF0dXMoICRwcm9jZXNzICk7CgkJC
QkJCgkJCQkJLy8gTWFrZSBzdXJlIHdlIG9ubHkgZG8gNCBsb29wIG1heAoJCQkJCSRjb3VudCA9IDA7CgkJ
CQkJCgkJCQkJd2hpbGUgKCB0cnVlID09ICRwc3RhdHVzWyAncnVubmluZyddICYmICggJGNvdW50KysgPCA
0ICkgKSB7CgkJCQkJCXVzbGVlcCggNTAwMDAwICk7CgkJCQkJCSRwc3RhdHVzID0gcHJvY19nZXRfc3RhdH
VzKCAkcHJvY2VzcyApOwoJCQkJCX0KCQkJCQkKCQkJCQlpZiAoIHRydWUgPT09ICRwc3RhdHVzWyAncnVub
mluZycgXSApIHsKCQkJCQkJLy8gSG1tLCBzaG91bGRuJ3Qgc3RpbGwgYmUgcnVubmluZywgdHJ5IHRvIGtp
bGwgaXQgYW5kIG1vdmUgb24KCQkJCQkJQHByb2NfdGVybWluYXRlKCAkcHJvY2VzcyApOwoJCQkJCQkKCQk
JCQkJLy8gR2V0IHN0YXR1cyBhZ2FpbiBhbmQgc2VlIGlmIG5vdyBub3QgcnVubmluZywgaWYgc28gZ2V0IG
V4aXQgY29kZQoJCQkJCQkKCQkJCQl9IGVsc2UgewoJCQkJCQoJCQkJCQkvLyBQcm9jZXNzIGZpbmlzaGVkI
G5vcm1hbGx5IHNvIGdldCBleGl0IGNvZGUgZm9yIHBvc3NpYmxlIHVzZQoJCQkJCQkkZXhpdGNvZGUgPSAk
cHN0YXR1c1sgJ2V4aXRjb2RlJyBdOwoJCQkJCQkKCQkJCQl9CgkJCQkJCgkJCQkJLy8gSWdub3JlIGFueSB
jbG9zZSBpc3N1ZSwgc2hvdWxkbid0IGdldCBzdHVjayBoZXJlIGJ1dCBpdCBpcyBwb3NzaWJsZSBpZgoJCQ
kJCS8vIHdlIHByb2Nlc3Mgd2FzIHN0aWxsIHJ1bm5pbmcgYW5kIHdlIGZhaWxlZCB0byB0ZXJtaW5hdGUga
XQgLSB0cmlja3kgb25lCgkJCQkJLy8gdG8gb3ZlcmNvbWUgYnV0IF9zaG91bGRfIGJlIHJhcmUKCQkJCQlA
cHJvY19jbG9zZSggJHByb2Nlc3MgKTsKCQkJCQkKCQkJCX0KCQkJCQoJCQl9CgkJCQoJCQkvLyBOb3RlOiB
pZiB3ZSBjb3VsZG4ndCBjcmVhdGUgYSBwcm9jZXNzIGp1c3QgZmFsbCB0aHJvdWdoIHNpbGVudGx5CgkJCQ
oJCQlpZiAoIDAgPT09ICRleGl0Y29kZSApIHsKCQkJCgkJCQkvLyBQdXQgdGhlIGZpbGUgY29udGVudCBpb
nRvIGFuIGFycmF5CgkJCQl0cnkgewoJCQkJCgkJCQkJJG91dGZpbGUgPSBuZXcgU3BsRmlsZU9iamVjdCgg
JG91dGZpbGVfbmFtZSwgInJiIiApOwoJCQkJCQoJCQkJCXdoaWxlKCAhJG91dGZpbGUtPmVvZigpICkgewo
JCQkJCQoJCQkJCQkvLyBOZWVkIHRvIHRyaW0gbGluZSBlbmRpbmdzIGJlY2F1c2Ugb2YgaW1wbG9kaW5nIH
dpdGggUEhQX0VPTCBsYXRlcgoJCQkJCQkkb3V0cHV0W10gPSBydHJpbSggJG91dGZpbGUtPmN1cnJlbnQoK
SApOwoJCQkJCQkkb3V0ZmlsZS0+bmV4dCgpOwoJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCQl1bnNldCggJG91
dGZpbGUgKTsKCQkJCQkKCQkJCX0gY2F0Y2ggKCBFeGNlcHRpb24gJGUgKSB7CgkJCQkKCQkJCQkvLyBNYXl
iZSB0aGUgZmlsZSBkaWRuJ3QgZXhpc3QgZm9yIHNvbWUgcmVhc29uPwoJCQkJCS8vIEluIGFueSBjYXNlIG
p1c3QgZmFsbCB0aHJvdWdoIHNpbGVudGx5CgkJCQkJCgkJCQl9CgkJCQoJCQkJLy8gU2hvdWxkIGJlIGdvb
2Qgb3V0cHV0IHRvIHRyeSBhdCBsZWFzdAoJCQkJLy8gSWYgdGhpcyBoYXMgYSB6aXAgZmlsZSBzaWduYXR1
cmUgdGhlbiBpdCBtdXN0IGJlIHByZS12MyB6aXAKCQkJCSR6X2RhdGEgPSB1bnBhY2soICdWc2lnJywgJG9
1dHB1dFswXSApOwoJCQkKCQkJCWlmICggMHgwNDAzNGI1MCA9PSAkel9kYXRhWyAnc2lnJyBdICkgewoJCQ
kJCgkJCQkJLy8gVE9ETzogQ29uc2lkZXIgdGhhdCB3ZSBjb3VsZCB1c2UgdW56aXAgLVogLXYgb24gdGhpc
yBmaWxlIGFuZCBwYXJzZSB0aGUKCQkJCQkvLyBvdXRwdXQgZm9yIHRoZSBDZW50cmFsIERpciBpbmZvIG9u
IHdoYXQgdmVyc2lvbiBvZiB6aXAgY3JlYXRlZCB0aGUgZmlsZS4KCQkJCQkvLyBDdXJyZW50bHksIHdoZXJ
lIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLCB3ZSBkb24ndCBrbm93IGlmIHdlIGhhdmUgdW56aXAKCQkJCQ
kvLyBzbyB3ZSBjYW4ndCBhc3N1bWUgLSB3aXRoIGEgcmVqaWcgd2UgY291bGQgY2FsbCB0aGlzIGxhdGVyI
GFuZCB1c2UgdW56aXAKCQkJCQkvLyBpZiBhdmFpbGFibGUuCgkJCQkJLy8gQ2FuJ3QgdGVsbCB3aGljaCAy
LlggdmVyc2lvbiwgY2Fubm90IHBvcHVsYXRlICRpbmZvCgkJCQkJJG1ham9yID0gMjsKCQkJCQkkbWlub3I
gPSAwOwoJCQkJCQoJCQkJfSBlbHNlIHsKCQkJCQoJCQkJCS8vIERvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgem
lwIGZpbGUgc28gc2hvdWxkIGJlIHZlcnNpb24gaW5mbwoJCQkJCS8vIEV4cGVjdCBmb3JtYXQgbGlrZTogV
GhpcyBpcyBaaXAgMy4wIChKdWx5IDV0aCAyMDA4KS4uLgoJCQkJCS8vICAgICAgICAgICAgICAgICAgICAg
VGhpcyBpcyBaaXAgMy4xYyBCRVRBIChKdW5lIDIybmQgMjAxMCkuLi4KCQkJCQkvLyBUaGUgbWF0Y2ggc2h
vdWxkIHRha2Ugb25seSB0aGUgbWFqb3IvbWlub3IgZGlnaXRzIGFuZCBpZ25vcmUgYW55IGZvbGxvd2luZy
BhbHBoYQoJCQkJCS8vIE1heSBleHRlbmQgdG8gY2FwdHVyZSB0aGUgYWxwaGEgYW5kIGFsc28gd2hldGhlc
iBCRVRBIGluZGljYXRlZCBidXQgbm90IGN1cnJlbnRseQoJCQkJCS8vIHJlcXVpcmVkLgoJCQkJCWZvcmVh
Y2ggKCAkb3V0cHV0IGFzICRsaW5lICkgewoJCgkJCQkJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqKHRoaXM
pXHMrKGlzKVxzKyh6aXApXHMrKD9QPG1ham9yPlxkKVwuKD9QPG1pbm9yPlxkKykvaScsICRsaW5lLCAkbW
F0Y2hlcyApICkgewoJCQkJCQkKCQkJCQkJCSRtYWpvciA9IChpbnQpJG1hdGNoZXNbICdtYWpvcicgXTsKC
QkJCQkJCSRtaW5vciA9IChpbnQpJG1hdGNoZXNbICdtaW5vcicgXTsKCQkJCQkJCWJyZWFrOwoJCQkJCQkK
CQkJCQkJfQoJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCQkvLyBJZiB3ZSBkaWRuJ3QgbWF0Y2ggYSB2ZXJzaW9
uIHRoZW4gc3VzcGVjdCB0aGlzIGlzIHN0aWxsIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm8KCQkJCQlpZiAoIC
FlbXB0eSggJG1hdGNoZXMgKSApIHsKCQkJCQkKCQkJCQkJLy8gTm93IGNyZWF0ZSB0aGUgaW5mbyBzdHJpb
mcKCQkJCQkJLy8gTm90ZTogbm90IHdvcnRoIGNvbXByZXNzaW5nIGFzIHRoYXQgZ2l2ZXMgYSBsYXJnZXIg
c3RyaW5nIGFmdGVyIGNvbnZlcnRpbmcKCQkJCQkJLy8gZnJvbSBiaW5hcnkgdG8gaGV4IGZvcm1hdCBmb3I
gc2F2aW5nCgkJCQkJCSRpbmZvID0gaW1wbG9kZSggUEhQX0VPTCwgJG91dHB1dCApOwoJCQkJCQkkdGhpcy
0+X21ldGhvZF9kZXRhaWxzWyAncGFyYW0nIF1bICd6aXAnIF1bICdpbmZvJyBdID0gJGluZm87CgkJCQkJC
gkJCQkJfQoJCQkJCgkJCQl9CgkJCQkKCQkJfQoJCQkKCQkJLy8gTm93IHVzZSBlaXRoZXIgd2hhdCB3ZSBn
b3Qgb3Igd2hhdCB3ZSB3ZXJlIGdpdmVuLi4uCgkJCWlmICggKCBpc19pbnQoICRtYWpvcikgKSAmJiAoIDA
gPCAkbWFqb3IgKSAmJiAoIGlzX2ludCggJG1pbm9yICkgKSApIHsKCQkJCgkJCQkvLyBTZXQgdGhlIGdpdm
VuIHZlcnNpb24gcmVnYXJkbGVzcwoJCQkJJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAne
mlwJyBdWyAndmVyc2lvbicgXSA9IGFycmF5KCAnbWFqb3InID0+ICRtYWpvciwgJ21pbm9yJyA9PiAkbWlu
b3IgKTsKCQkJCgkJCX0KCQkJCgkJCS8vIENhdGNoLWFsbCBjbGVhbnVwIG9mIHRoZSBvdXRwdXQgZmlsZQo
JCQlpZiAoIEBmaWxlX2V4aXN0cyggJG91dGZpbGVfbmFtZSApICkgewoJCQkKCQkJCUB1bmxpbmsoICRvdX
RmaWxlX25hbWUgKTsKCQkJCQoJCQl9CgkJCQoJCQlyZXR1cm4gJHRoaXM7IAoJCQoJCX0KCQkKCQkvKioKC
QkgKglnZXRfemlwX3ZlcnNpb24oKQoJCSAqCQoJCSAqCVRoaXMgZ2V0cyB0aGUgemlwIHZlcnNpb24gYXMg
YW4gYXJyYXkgb2YgbWFqb3IvbWlub3Igb3IgcmV0dXJucyBmYWxzZSBpZiBub3Qga25vd24KCQkgKglUT0R
POiBQYXNzIHBhcmFtZXRlciB0byBzcGVjaWZ5IHdoYXQgZm9ybWF0IHRvIHJldHVybiBpbgoJCSAqCQoJCS
AqCUByZXR1cm4JCWFycmF5fGJvb2wJCQkJUmV0dXJucyBhcnJheShtYWpvciwgbWlub3IpIG9yIGZhbHNlI
GlmIG5vdCBrbm93bgoJCSAqCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF96aXBfdmVyc2lvbigp
IHsKCQkKCQkJJHJlc3VsdCA9ICR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3ppcCcgXVs
gJ3ZlcnNpb24nIF07CgkJCQoJCQlpZiAoIDAgPT09ICRyZXN1bHRbICdtYWpvcicgXSApIHsKCQkJCgkJCQ
kkcmVzdWx0ID0gZmFsc2U7CgkJCQkKCQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQoJCX0KCQkKC
QkvKioKCQkgKglzZXRfdW56aXBfdmVyc2lvbigpCgkJICoJCgkJICoJVGhpcyBzZXRzIHRoZSB6aXAgdmVy
c2lvbiBpbmZvcm1hdGlvbiBpbiB0aGUgbWV0aG9kIGRldGFpbHMKCQkgKglUT0RPOiBUaGlzIG5lZWRzIHJ
lZmFjdG9yaW5nIHRvIG1ha2UgaXQgY2xlYW5lcgoJCSAqCQoJCSAqCUBwYXJhbQkJaW50CQkkbWFqb3IJCV
ZhbHVlIHRvIHVzZSBpZiBub25lIGZvdW5kIG9yIG92ZXJyaWRlIHRydWUKCQkgKglAcGFyYW0JCWludAkJJ
G1pbm9yCQlWYWx1ZSB0byB1c2UgaWYgbm9uZSBmb3VuZCBvciBvdmVycmlkZSB0cnVlCgkJICoJQHBhcmFt
CQlib29sCSRvdmVycmlkZQlUcnVlIHRvIHVzZSBwYXNzZWQgaW4gdmFsdWUocykgcmVnYXJkbGVzcwoJCSA
qCUByZXR1cm4JCW9iamVjdAkJCQlUaGlzIG9iamVjdCByZWZlcmVuY2UKCQkgKgoJCSAqLwoJCXByb3RlY3
RlZCBmdW5jdGlvbiBzZXRfdW56aXBfdmVyc2lvbiggJG1ham9yID0gMCwgJG1pbm9yID0gMCwgJG92ZXJya
WRlID0gZmFsc2UgKSB7CgkJCgkJCSRleGl0Y29kZSA9IDEyNzsKCQkJJG91dHB1dCA9IGFycmF5KCk7CgkJ
CSR6aXBwYXRoID0gJyc7CgkJCSRjb21tYW5kID0gJyc7CgkJCSRtYXRjaGVzID0gYXJyYXkoKTsKCQkJJGl
uZm8gPSAnJzsKCQkKCQkJLy8gSWYgd2UgaGF2ZSBiZWVuIGdpdmVuIGEgdmFsdWUgdG8gdXNlIHdpdGggb3
ZlcnJpZGUgdGhlbiBqdXN0IHVzZSBpdAoJCQlpZiAoICggKCBpc19pbnQoICRtYWpvcikgKSAmJiAoIDAgP
CAkbWFqb3IgKSAmJiAoIGlzX2ludCggJG1pbm9yICkgKSApICYmICggdHJ1ZSA9PT0gJG92ZXJyaWRlICkg
KSB7CgkJCQoJCQkJLy8gU2V0IHRoZSBnaXZlbiB2ZXJzaW9uIHJlZ2FyZGxlc3MKCQkJCSR0aGlzLT5fbWV
0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3VuemlwJyBdWyAndmVyc2lvbicgXSA9IGFycmF5KCAnbWFqb3
InID0+ICRtYWpvciwgJ21pbm9yJyA9PiAkbWlub3IgKTsKCQkJCXJldHVybiAkdGhpczsgCgkJCQoJCQl9C
gkJCQoJCQkvLyBHZXQgdGhlIGNvbW1hbmQgcGF0aCBmb3IgdGhlIHVuemlwIGNvbW1hbmQgLSBzaG91bGQg
cmV0dXJuIGEgdHJpbW1lZCBzdHJpbmcKCQkJJHppcHBhdGggPSAkdGhpcy0+Z2V0X2NvbW1hbmRfcGF0aCg
gc2VsZjo6Q09NTUFORF9VTlpJUF9QQVRIICk7Cg
kJCQoJCQkvLyBBZGQgdGhlIHRyYWlsaW5nIHNsYXNoIGlmIHJlcXVpcmVkCgkJCSRjb21tYW5kID0gJHRoa
XMtPnNsYXNoaWZ5KCAkemlwcGF0aCApIC4gJ3VuemlwIC12JzsKCQkJCgkJCS8vQGV4ZWMoICRjb21tYW5k
LCAkb3V0cHV0LCAkZXhpdGNvZGUgKTsKCQkJCgkJCS8vIEdldCBhIHRlbXBvcmFyeSBmaWxlIHRvIHVzZSB
mb3IgY29tbWFuZCBvdXRwdXQKCQkJJG91dGZpbGVfbmFtZSA9IHRlbXBuYW0oIHN5c19nZXRfdGVtcF9kaX
IoKSwgdW5pcWlkKCAncGJfJyApICk7CgkJCQoJCQkvLyBNYWtlIHN1cmUgd2Ugb25seSBkbyB0aGlzIGlmI
HdlIGhhdmUgYSBmaWxlIHdlIGNhbiB3cml0ZSB0bwoJCQlpZiAoIGlzX3N0cmluZyggJG91dGZpbGVfbmFt
ZSApICYmIGlzX3dyaXRhYmxlKCAkb3V0ZmlsZV9uYW1lICkgKSB7IAoJCQkKCQkJCSRkZXNjcmlwdG9yc3B
lYyA9IGFycmF5KAoJCQkJCTAgPT4gYXJyYXkoICJwaXBlIiwgInIiICksCgkJCQkJMSA9PiBhcnJheSggIm
ZpbGUiLCAkb3V0ZmlsZV9uYW1lLCAidyIgKSwKCQkJCQkyID0+IGFycmF5KCAiZmlsZSIsICIvZGV2L251b
GwiLCAiYSIgKQkKCQkJCSk7CgkJCQkKCQkJCSRwcm9jZXNzID0gTlVMTDsgLy8gTWF5YmUgaXQgZG9lc24n
dCB3b3JrCgkJCQkKCQkJCSRwcm9jZXNzID0gQHByb2Nfb3BlbiggJGNvbW1hbmQsICRkZXNjcmlwdG9yc3B
lYywgJHBpcGVzICk7CgkJCQkKCQkJCWlmICggaXNfcmVzb3VyY2UoICRwcm9jZXNzICkgKSB7CgkJCQkKCQ
kJCQlmY2xvc2UoICRwaXBlc1swXSApOyAvLyBOZXZlciB3YW50IHRvIHNlbmQgaW5wdXQgc28ganVzdCBjb
G9zZSBpdAoJCQkJCQoJCQkJCSRwc3RhdHVzID0gcHJvY19nZXRfc3RhdHVzKCAkcHJvY2VzcyApOwoJCQkJ
CQoJCQkJCS8vIE1ha2Ugc3VyZSB3ZSBvbmx5IGRvIDQgbG9vcCBtYXgKCQkJCQkkY291bnQgPSAwOwoJCQk
JCQoJCQkJCXdoaWxlICggdHJ1ZSA9PSAkcHN0YXR1c1sgJ3J1bm5pbmcnXSAmJiAoICRjb3VudCsrIDwgNC
ApICkgewoJCQkJCQl1c2xlZXAoIDUwMDAwMCApOwoJCQkJCQkkcHN0YXR1cyA9IHByb2NfZ2V0X3N0YXR1c
yggJHByb2Nlc3MgKTsKCQkJCQl9CgkJCQkJCgkJCQkJaWYgKCB0cnVlID09PSAkcHN0YXR1c1sgJ3J1bm5p
bmcnIF0gKSB7CgkJCQkJCS8vIEhtbSwgc2hvdWxkbid0IHN0aWxsIGJlIHJ1bm5pbmcsIHRyeSB0byBraWx
sIGl0IGFuZCBtb3ZlIG9uCgkJCQkJCUBwcm9jX3Rlcm1pbmF0ZSggJHByb2Nlc3MgKTsKCQkJCQkJCgkJCQ
kJCS8vIEdldCBzdGF0dXMgYWdhaW4gYW5kIHNlZSBpZiBub3cgbm90IHJ1bm5pbmcsIGlmIHNvIGdldCBle
Gl0IGNvZGUKCQkJCQkJCgkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gUHJvY2VzcyBmaW5pc2hlZCBu
b3JtYWxseSBzbyBnZXQgZXhpdCBjb2RlIGZvciBwb3NzaWJsZSB1c2UKCQkJCQkJJGV4aXRjb2RlID0gJHB
zdGF0dXNbICdleGl0Y29kZScgXTsKCQkJCQkJCgkJCQkJfQoJCQkJCQoJCQkJCS8vIElnbm9yZSBhbnkgY2
xvc2UgaXNzdWUsIHNob3VsZG4ndCBnZXQgc3R1Y2sgaGVyZSBidXQgaXQgaXMgcG9zc2libGUgaWYKCQkJC
QkvLyB3ZSBwcm9jZXNzIHdhcyBzdGlsbCBydW5uaW5nIGFuZCB3ZSBmYWlsZWQgdG8gdGVybWluYXRlIGl0
IC0gdHJpY2t5IG9uZQoJCQkJCS8vIHRvIG92ZXJjb21lIGJ1dCBfc2hvdWxkXyBiZSByYXJlCgkJCQkJQHB
yb2NfY2xvc2UoICRwcm9jZXNzICk7CgkJCQkJCgkJCQl9CgkJCQkKCQkJfQoJCQkKCQkJLy8gTm90ZTogaW
Ygd2UgY291bGRuJ3QgY3JlYXRlIGEgcHJvY2VzcyBqdXN0IGZhbGwgdGhyb3VnaCBzaWxlbnRseQoJCQkKC
QkJaWYgKCAwID09PSAkZXhpdGNvZGUgKSB7CgkJCQoJCQkJLy8gUHV0IHRoZSBmaWxlIGNvbnRlbnQgaW50
byBhbiBhcnJheQoJCQkJdHJ5IHsKCQkJCQoJCQkJCSRvdXRmaWxlID0gbmV3IFNwbEZpbGVPYmplY3QoICR
vdXRmaWxlX25hbWUsICJyYiIgKTsKCQkJCQkKCQkJCQl3aGlsZSggISRvdXRmaWxlLT5lb2YoKSApIHsKCQ
kJCQkKCQkJCQkJLy8gTmVlZCB0byB0cmltIGxpbmUgZW5kaW5ncyBiZWNhdXNlIG9mIGltcGxvZGluZyB3a
XRoIFBIUF9FT0wgbGF0ZXIKCQkJCQkJJG91dHB1dFtdID0gcnRyaW0oICRvdXRmaWxlLT5jdXJyZW50KCkg
KTsKCQkJCQkJJG91dGZpbGUtPm5leHQoKTsKCQkJCQkKCQkJCQl9CgkJCQkJCgkJCQkJdW5zZXQoICRvdXR
maWxlICk7CgkJCQkJCgkJCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkJCgkJCQkJLy8gTWF5Ym
UgdGhlIGZpbGUgZGlkbid0IGV4aXN0IGZvciBzb21lIHJlYXNvbj8KCQkJCQkvLyBJbiBhbnkgY2FzZSBqd
XN0IGZhbGwgdGhyb3VnaCBzaWxlbnRseQoJCQkJCQoJCQkJfQoJCQkKCQkJCS8vIFNob3VsZCBiZSBnb29k
IG91dHB1dCB0byB0cnkgYXQgbGVhc3QKCQkJCWZvcmVhY2ggKCAkb3V0cHV0IGFzICRsaW5lICkgewoKCQk
JCQlpZiAoIHByZWdfbWF0Y2goICcvXlxzKih1bnppcClccysoP1A8bWFqb3I+XGQpXC4oP1A8bWlub3I+XG
QrKS9pJywgJGxpbmUsICRtYXRjaGVzICkgKSB7CgkJCQkJCgkJCQkJCSRtYWpvciA9IChpbnQpJG1hdGNoZ
XNbICdtYWpvcicgXTsKCQkJCQkJJG1pbm9yID0gKGludCkkbWF0Y2hlc1sgJ21pbm9yJyBdOwoJCQkJCQli
cmVhazsKCQkJCQkKCQkJCQl9CgkJCQkKCQkJCX0KCQkJCQoJCQkJLy8gTm93IGNyZWF0ZSB0aGUgaW5mbyB
zdHJpbmcKCQkJCS8vIE5vdGU6IG5vdCB3b3J0aCBjb21wcmVzc2luZyBhcyB0aGF0IGdpdmVzIGEgbGFyZ2
VyIHN0cmluZyBhZnRlciBjb252ZXJ0aW5nCgkJCQkvLyBmcm9tIGJpbmFyeSB0byBoZXggZm9ybWF0IGZvc
iBzYXZpbmcKCQkJCSRpbmZvID0gaW1wbG9kZSggUEhQX0VPTCwgJG91dHB1dCApOwoJCQkJJHRoaXMtPl9t
ZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAndW56aXAnIF1bICdpbmZvJyBdID0gJGluZm87CgkJCQkKCQk
JfQoJCQkKCQkJLy8gTm93IHVzZSBlaXRoZXIgd2hhdCB3ZSBnb3Qgb3Igd2hhdCB3ZSB3ZXJlIGdpdmVuLi
4uCgkJCWlmICggKCBpc19pbnQoICRtYWpvcikgKSAmJiAoIDAgPCAkbWFqb3IgKSAmJiAoIGlzX2ludCggJ
G1pbm9yICkgKSApIHsKCQkJCgkJCQkvLyBTZXQgdGhlIGdpdmVuIHZlcnNpb24gcmVnYXJkbGVzcwoJCQkJ
JHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAndW56aXAnIF1bICd2ZXJzaW9uJyBdID0gYXJ
yYXkoICdtYWpvcicgPT4gJG1ham9yLCAnbWlub3InID0+ICRtaW5vciApOwoJCQkKCQkJfQoJCQkKCQkJLy
8gQ2F0Y2gtYWxsIGNsZWFudXAgb2YgdGhlIG91dHB1dCBmaWxlCgkJCWlmICggQGZpbGVfZXhpc3RzKCAkb
3V0ZmlsZV9uYW1lICkgKSB7CgkJCQoJCQkJQHVubGluayggJG91dGZpbGVfbmFtZSApOwoJCQkJCgkJCX0K
CQkJCgkJCXJldHVybiAkdGhpczsgCgkJCgkJfQoJCQoJCS8qKgoJCSAqCWdldF91bnppcF92ZXJzaW9uKCk
KCQkgKgkKCQkgKglUaGlzIGdldHMgdGhlIHVuemlwIHZlcnNpb24gYXMgYW4gYXJyYXkgb2YgbWFqb3IvbW
lub3Igb3IgcmV0dXJucyBmYWxzZSBpZiBub3Qga25vd24KCQkgKglUT0RPOiBQYXNzIHBhcmFtZXRlciB0b
yBzcGVjaWZ5IHdoYXQgZm9ybWF0IHRvIHJldHVybiBpbgoJCSAqCQoJCSAqCUByZXR1cm4JCWFycmF5fGJv
b2wJCQkJUmV0dXJucyBhcnJheShtYWpvciwgbWlub3IpIG9yIGZhbHNlIGlmIG5vdCBrbm93bgoJCSAqCgk
JICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF91bnppcF92ZXJzaW9uKCkgewoJCQoJCQkkcmVzdWx0ID
0gJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAndW56aXAnIF1bICd2ZXJzaW9uJyBdOwoJC
QkKCQkJaWYgKCAwID09PSAkcmVzdWx0WyAnbWFqb3InIF0gKSB7CgkJCQoJCQkJJHJlc3VsdCA9IGZhbHNl
OwoJCQkJCgkJCX0KCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJCgkJLyoqCgkJICoJZ2V0X3p
pcF9zdXBwb3J0c19sb2dmaWxlKCkKCQkgKgkKCQkgKglUaGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgemlwIG
luIHVzZSBpcyBhYmxlIHRvIHN1cHBvcnQgbG9nZmlsZSB1c2FnZSBmb3IKCQkgKglsb2dnaW5nIHByb2dyZ
XNzIG9mIHppcCBvcGVyYXRpb24KCQkgKgkKCQkgKglAcmV0dXJuCQlib29sCQkJCVRydWUgaWYgbG9nZmls
ZSBzdXBwb3J0ZWQsIG90aGVyd2lzZSBmYWxzZQoJCSAqCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGd
ldF96aXBfc3VwcG9ydHNfbG9nX2ZpbGUoKSB7CgkJCgkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCgkJCS8vIE
N1cnJlbnRseSBjaGVjayBiYXNlZCBqdXN0IG9uIHRoZSB6aXAgbWFqb3IgdmVyc2lvbgoJCQkvLyBUT0RPO
iBkZWNpZGUgaWYgYmV0dGVyIHRvIHJlc3BvbmQgYmFzZWQgb24gdGhlIGF2YWlsYWJsZSBvcHRpb25zCgkJ
CWlmICggMyA8PSAkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAncGFyYW0nIF1bICd6aXAnIF1bICd2ZXJzaW9
uJyBdWyAnbWFqb3InIF0gKSB7CgkJCQoJCQkJJHJlc3VsdCA9IHRydWU7CgkJCQkKCQkJfQoJCQkKCQkJcm
V0dXJuICRyZXN1bHQ7CgkJCgkJfQoJCQoJCS8qKgoJCSAqCWlzX2F2YWlsYWJsZSgpCgkJICoJCgkJICoJQ
SBmdW5jdGlvbiB0aGF0IHRlc3RzIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBzcGVjaWZpYyBtZXRo
b2QgYW5kIGl0cyBhdmFpbGFibGUgbW9kZXMuIFdpbGwgdGVzdCBmb3IKCQkgKiAgbXVsdGlwbGUgbW9kZXM
gKHppcCAmIHVuemlwKSBhbmQgb25seSByZXR1cm4gZmFsc2UgaWYgbmVpdGhlciBpcyBhdmFpbGFibGUuIE
FjdHVhbCBhdmFpbGFibGUgbW9kZXMgd2lsbAoJCSAqICBiZSBpbmRpY2F0ZWQgaW4gdGhlIG1ldGhvZCBhd
HRyaWJ1dGVzLgoJCSAqCgkJICogIE5vdGU6IGluIHRoaXMgY2FzZSBhcyB0aGUgemlwIGFuZCB1bnppcCBj
YXBhYmlsaXRpZXMgYXJlIHByb3ZpZGVkIGJ5IGV4dGVybmFsIGNvbW1hbmRzIHdlIG5lZWQgdG8gdGVzdAo
JCSAqICBmb3IgdGhlIGF2YWlsYWJpbGl0eSBvZiBib3RoIG9mIHRoZW0gYW5kIHNldCBhdHRyaWJ1dGVzIG
FjY29yZGluZ2x5CgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJJHRlbXBkaXIJVGVtcG9yYXJ5IGRpcmVjd
G9yeSB0byB1c2UgZm9yIGFueSB0ZXN0IGZpbGVzIChtdXN0IGJlIHdyaXRlYWJsZSkKCQkgKglAcmV0dXJu
CQlib29sCQkJCVRydWUgaWYgdGhlIG1ldGhvZCBpcyBhdmFpbGFibGUgZm9yIGF0IGxlYXN0IG9uZSBtb2R
lLCBmYWxzZSBvdGhlcndpc2UKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBpc19hdmFpbGFibGUoIC
R0ZW1wZGlyICkgewoJCQoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQoJCQlzd2l0Y2ggKCAkdGhpcy0+Z2V0X
29zX3R5cGUoKSApIHsKCQkJCWNhc2Ugc2VsZjo6T1NfVFlQRV9OSVg6CgkJCQkJJHJlc3VsdCA9ICR0aGlz
LT5pc19hdmFpbGFibGVfbGludXgoICR0ZW1wZGlyICk7CgkJCQkJYnJlYWs7CgkJCQljYXNlIHNlbGY6Ok9
TX1RZUEVfV0lOOgoJCQkJCSRyZXN1bHQgPSAkdGhpcy0+aXNfYXZhaWxhYmxlX3dpbmRvd3MoICR0ZW1wZG
lyICk7CgkJCQkJYnJlYWs7CgkJCQlkZWZhdWx0OgoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJfQoJCQkKC
QkJcmV0dXJuICRyZXN1bHQ7CgkJCQkJICAJCgkJfQoKCQkvKioKCQkgKglpc19hdmFpbGFibGVfd2luZG93
cygpCgkJICoJCgkJICoJQSBmdW5jdGlvbiB0aGF0IHRlc3RzIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIHR
oZSBzcGVjaWZpYyBtZXRob2QgYW5kIGl0cyBhdmFpbGFibGUgbW9kZXMuIFdpbGwgdGVzdCBmb3IKCQkgKi
AgbXVsdGlwbGUgbW9kZXMgKHppcCAmIHVuemlwKSBhbmQgb25seSByZXR1cm4gZmFsc2UgaWYgbmVpdGhlc
iBpcyBhdmFpbGFibGUuIEFjdHVhbCBhdmFpbGFibGUgbW9kZXMgd2lsbAoJCSAqICBiZSBpbmRpY2F0ZWQg
aW4gdGhlIG1ldGhvZCBhdHRyaWJ1dGVzLgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCSR0ZW1wZGlyCVR
lbXBvcmFyeSBkaXJlY3RvcnkgdG8gdXNlIGZvciBhbnkgdGVzdCBmaWxlcyAobXVzdCBiZSB3cml0ZWFibG
UpCgkJICoJQHJldHVybgkJYm9vbAkJCQlUcnVlIGlmIHRoZSBtZXRob2QgaXMgYXZhaWxhYmxlIGZvciBhd
CBsZWFzdCBvbmUgbW9kZSwgZmFsc2Ugb3RoZXJ3aXNlCgkJICoKCQkgKi8KCQlwcm90ZWN0ZWQgZnVuY3Rp
b24gaXNfYXZhaWxhYmxlX3dpbmRvd3MoICR0ZW1wZGlyICkgewoJCQoJCQkvLyBKdXN0IHJldHVybiBmYWx
zZSBzaWxlbnRseSBvdGhlcndpc2Ugd2UnZCBiZSBsb2dnaW5nIHJlcGVhdGVkbHkuLi4KCQkJLy9wYl9iYW
NrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICR0aGlzLT5fbWV0aG9kX3RhZyAuIF9fKCcgbWV0aG9kI
G5vdCBzdXBwb3J0ZWQgb24gV2luZG93cy4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCXJldHVy
biBmYWxzZTsKCQkJCgkJfQoJCQoJCS8qKgoJCSAqCWlzX2F2YWlsYWJsZV9saW51eCgpCgkJICoJCgkJICo
JQSBmdW5jdGlvbiB0aGF0IHRlc3RzIGZvciB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoZSBzcGVjaWZpYyBtZX
Rob2QgYW5kIGl0cyBhdmFpbGFibGUgbW9kZXMuIFdpbGwgdGVzdCBmb3IKCQkgKiAgbXVsdGlwbGUgbW9kZ
XMgKHppcCAmIHVuemlwKSBhbmQgb25seSByZXR1cm4gZmFsc2UgaWYgbmVpdGhlciBpcyBhdmFpbGFibGUu
IEFjdHVhbCBhdmFpbGFibGUgbW9kZXMgd2lsbAoJCSAqICBiZSBpbmRpY2F0ZWQgaW4gdGhlIG1ldGhvZCB
hdHRyaWJ1dGVzLgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCSR0ZW1wZGlyCVRlbXBvcmFyeSBkaXJlY3
RvcnkgdG8gdXNlIGZvciBhbnkgdGVzdCBmaWxlcyAobXVzdCBiZSB3cml0ZWFibGUpCgkJICoJQHJldHVyb
gkJYm9vbAkJCQlUcnVlIGlmIHRoZSBtZXRob2QgaXMgYXZhaWxhYmxlIGZvciBhdCBsZWFzdCBvbmUgbW9k
ZSwgZmFsc2Ugb3RoZXJ3aXNlCgkJICoKCQkgKi8KCQlwcm90ZWN0ZWQgZnVuY3Rpb24gaXNfYXZhaWxhYmx
lX2xpbnV4KCAkdGVtcGRpciApIHsKCQkKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkkcGVuZGluZ19yZXN1bH
QgPSBmYWxzZTsKCQkJJGZvdW5kX3ppcCA9IGZhbHNlOwoJCQkkcHN0YXR1cyA9IGFycmF5KCk7CgkJCQoJC
QkvLyBUaGlzIGlzIGEgc2FmZXR5IHZhbHVlIGluIGNhc2Ugc29tZXRoaW5nIG9kZCBoYXBwZW5zCgkJCSRl
eGVjX2V4aXRfY29kZSA9IDEyNzsKCQkJCgkJCWlmICggZnVuY3Rpb25fZXhpc3RzKCAncHJvY19vcGVuJyA
pICYmIGZ1bmN0aW9uX2V4aXN0cyggJ3Byb2NfY2xvc2UnICkgJiYKCQkJCSBmdW5jdGlvbl9leGlzdHMoIC
dwcm9jX2dldF9zdGF0dXMnICkgJiYgZnVuY3Rpb25fZXhpc3RzKCAncHJvY190ZXJtaW5hdGUnICkgKSB7C
gkJCQkgCgkJCQkkY2FuZGlkYXRlX3BhdGhzID0gJHRoaXMtPl9leGVjdXRhYmxlX3BhdGhzOwoJCQkJCgkJ
CQkvLyBXZSBhcmUgc2VhcmNoaW5nIGZvciB6aXAgdXNpbmcgdGhlIGxpc3Qgb2YgcG9zc2libGUgcGF0aHM
KCQkJCXdoaWxlICggKCBmYWxzZSA9PSAkZm91bmRfemlwICkgJiYgKCAhZW1wdHkoICRjYW5kaWRhdGVfcG
F0aHMgKSApICkgewoJCQkJCgkJCQkJLy8gTWFrZ
SBzdXJlIGl0IGlzIGNsZWFuIG9mIGxlYWRpbmcvdHJhaWxpbmcgd2hpdGVzcGFjZQoJCQkJCSRwYXRoID0g
dHJpbSggYXJyYXlfc2hpZnQoICRjYW5kaWRhdGVfcGF0aHMgKSApOwoJCQkJCQoJCQkJCXBiX2JhY2t1cGJ
1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oICdUcnlpbmcgZXhlY3V0YWJsZSBwYXRoIGZvciB6aXAgcH
JvYzonLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJyBgJyAuICRwYXRoIC4gJ2AuJyApOwoKCQkJCQkkd
GVzdF9maWxlID0gJHRlbXBkaXIgLiAndGVtcF90ZXN0XycgLiB1bmlxaWQoKSAuICcuemlwJzsKCQkJCQkK
CQkJCQkkY29tbWFuZCA9ICdleGVjICcgLiAkdGhpcy0+c2xhc2hpZnkoICRwYXRoICkgLiAnemlwICInIC4
gJHRlc3RfZmlsZSAuICciICInIC4gX19GSUxFX18gLiAnIic7CgkKCQkJCQkkZGVzY3JpcHRvcnNwZWMgPS
BhcnJheSgKCQkJCQkJMCA9PiBhcnJheSggInBpcGUiLCAiciIgKSwKCQkJCQkJMSA9PiBhcnJheSggImZpb
GUiLCAiL2Rldi9udWxsIiwgImEiICksCgkJCQkJCTIgPT4gYXJyYXkoICJmaWxlIiwgIi9kZXYvbnVsbCIs
ICJhIiApCQoJCQkJCSk7CgkJCQkJCgkJCQkJJHByb2Nlc3MgPSBOVUxMOyAvLyBNYXliZSBpdCBkb2Vzbid
0IHdvcmsKCQkJCQkKCQkJCQkkcHJvY2VzcyA9IEBwcm9jX29wZW4oICRjb21tYW5kLCAkZGVzY3JpcHRvcn
NwZWMsICRwaXBlcyApOwoJCQkJCQoJCQkJCWlmICggaXNfcmVzb3VyY2UoICRwcm9jZXNzICkgKSB7CgkJC
QkJCgkJCQkJCWZjbG9zZSggJHBpcGVzWzBdICk7IC8vIE5ldmVyIHdhbnQgdG8gc2VuZCBpbnB1dCBzbyBq
dXN0IGNsb3NlIGl0CgkJCQkJCQoJCQkJCQkkcHN0YXR1cyA9IHByb2NfZ2V0X3N0YXR1cyggJHByb2Nlc3M
gKTsKCQkJCQkJCgkJCQkJCS8vIE1ha2Ugc3VyZSB3ZSBvbmx5IGRvIDQgbG9vcCBtYXgKCQkJCQkJJGNvdW
50ID0gMDsKCQkJCQkJCgkJCQkJCXdoaWxlICggdHJ1ZSA9PSAkcHN0YXR1c1sgJ3J1bm5pbmcnXSAmJiAoI
CRjb3VudCsrIDwgNCApICkgewoJCQkJCQkJdXNsZWVwKCA1MDAwMDAgKTsKCQkJCQkJCSRwc3RhdHVzID0g
cHJvY19nZXRfc3RhdHVzKCAkcHJvY2VzcyApOwoJCQkJCQl9CgkJCQkJCQoJCQkJCQlpZiAoIHRydWUgPT0
9ICRwc3RhdHVzWyAncnVubmluZycgXSApIHsKCQkJCQkJCS8vIEhtbSwgc2hvdWxkbid0IHN0aWxsIGJlIH
J1bm5pbmcsIHRyeSB0byBraWxsIGl0IGFuZCBtb3ZlIG9uCgkJCQkJCQlAcHJvY190ZXJtaW5hdGUoICRwc
m9jZXNzICk7CgkJCQkJCQkKCQkJCQkJCS8vIEdldCBzdGF0dXMgYWdhaW4gYW5kIHNlZSBpZiBub3cgbm90
IHJ1bm5pbmcsIGlmIHNvIGdldCBleGl0IGNvZGUKCQkJCQkJCQoJCQkJCQl9IGVsc2UgewoJCQkJCQkKCQk
JCQkJCS8vIFByb2Nlc3MgZmluaXNoZWQgbm9ybWFsbHkgc28gZ2V0IGV4aXQgY29kZSBmb3IgcG9zc2libG
UgdXNlCgkJCQkJCQkkZXhlY19leGl0X2NvZGUgPSAkcHN0YXR1c1sgJ2V4aXRjb2RlJyBdOwoJCQkJCQkJC
gkJCQkJCX0KCQkJCQkJCgkJCQkJCS8vIElnbm9yZSBhbnkgY2xvc2UgaXNzdWUsIHNob3VsZG4ndCBnZXQg
c3R1Y2sgaGVyZSBidXQgaXQgaXMgcG9zc2libGUgaWYKCQkJCQkJLy8gd2UgcHJvY2VzcyB3YXMgc3RpbGw
gcnVubmluZyBhbmQgd2UgZmFpbGVkIHRvIHRlcm1pbmF0ZSBpdCAtIHRyaWNreSBvbmUKCQkJCQkJLy8gdG
8gb3ZlcmNvbWUgYnV0IF9zaG91bGRfIGJlIHJhcmUKCQkJCQkJQHByb2NfY2xvc2UoICRwcm9jZXNzICk7C
gkJCQkJCQoJCQkJCQkvLyBNdXN0IGhhdmUgYm90aCBhIGZpbGUgYW5kIGEgc3VjY2VzcyBleGl0IGNvZGUg
dG8gY29uc2lkZXIgdGhpcyBzdWNjZXNzZnVsCgkJCQkJCWlmICggQGZpbGVfZXhpc3RzKCAkdGVzdF9maWx
lICkgJiYgKCAwID09PSAkZXhlY19leGl0X2NvZGUgKSApIHsKCQkJCQoJCQkJCQkJLy8gU2V0IHRoZSBwYX
JhbWV0ZXIgdG8gYmUgcmVtZW1iZXJlZCAobm90ZTogcGF0aCB3aXRob3V0IHRyYWlsaW5nIHNsYXNoKQoJC
QkJCQkJJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAnemlwJyBdWyAncGF0aCcgXSA9ICRw
YXRoOwoJCQkJCQkJCgkJCQkJCQkvLyBUaGUgemlwIG9wZXJhdGlvbiB3YXMgc3VjY2Vzc2Z1bCBzbyB3ZSB
jYW4gYXQgbGVhc3QgemlwIGFuZCBhcmNoaXZlCgkJCQkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYX
R0cicgXVsgJ2lzX3ppcHBlcicgXSA9IHRydWU7CgkJCQkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnY
XR0cicgXVsgJ2lzX2FyY2hpdmVyJyBdID0gdHJ1ZTsKCQkJCQkJCQoJCQkJCQkJcGJfYmFja3VwYnVkZHk6
OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnUHJvYyB0ZXN0ICh6aXApIFBBU1NFRC4nLCdpdC1sMTBuLWJhY2t
1cGJ1ZGR5JyApICk7CgkJCQkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQkKCQkJCQkJCS8vIFRPRE86IENvbn
NpZGVyIHBhcnNpbmcgemlwIGZpbGUgdG8gZ2V0IHZlcnNpb24gb2YgemlwIHRoYXQgY3JlYXRlZCBpdC4gV
GhpcyBtYXkgc2VlbSBvZGQKCQkJCQkJCS8vIGJ1dCBwcmUtdjMgemlwIGl0J3Mgbm90IHBvc3NpYmxlIHRv
IHJ1biAiemlwIC12IiB0aHJvdWdoIGV4ZWMoKSBvciBlcXVpdmFsZW50IGFzIGl0IG9ubHkKCQkJCQkJCS8
vIHByb3ZpZGVzIHRoZSByZXF1aXJlZCBvdXRwdXQgaWYgYSB0dHkgaXMgYXR0YWNoZWQsIG90aGVyd2lzZS
BpdCBjcmVhdGVzIGEgemlwIGZpbGUuIFdlCgkJCQkJCQkvLyBtaWdodCBjb25zaWRlciBwYXJzaW5nIHRoZ
SBjcmVhdGVkIHppcCBmaWxlIGJ1dCBhcyB3ZSBoYXZlIGFscmVhZHkgY3JlYXRlZCBvbmUgaGVyZSB3ZQoJ
CQkJCQkJLy8gbWlnaHQgYXMgd2VsbCB1c2UgaXQKCQkJCQkJCQoJCQkJCQkJLy8gVGhpcyB3aWxsIGJyZWF
rIHVzIG91dCBvZiB0aGUgbG9vcAoJCQkJCQkJJGZvdW5kX3ppcCA9IHRydWU7CgkJCQkJCQkKCQkJCQkJfS
BlbHNlIHsKCQkJCQkKCQkJCQkJCS8vIERlYWwgd2l0aCB0aGUgcG9zc2libGUgZmFpbHVyZSBjYXVzZXMKC
QkJCQkJCWlmICggIUBmaWxlX2V4aXN0cyggJHRlc3RfZmlsZSApICkgewoJCQkJCQkJCgkJCQkJCQkJcGJf
YmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnUHJvYyB0ZXN0ICh6aXApIEZBSUxFRDogVGV
zdCB6aXAgZmlsZSBub3QgZm91bmQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQkJCgkJCQ
kJCQl9CgkJCQkJCQkKCQkJCQkJCWlmICggMCA9PT0gJGV4ZWNfZXhpdF9jb2RlICkgewoJCQkJCQkJCgkJC
QkJCQkJJGVycm9yX3N0cmluZyA9ICRleGVjX2V4aXRfY29kZTsKCQkJCQkJCQlwYl9iYWNrdXBidWRkeTo6
c3RhdHVzKCAnZGV0YWlscycsIF9fKCdQcm9jIHRlc3QgKHppcCkgRkFJTEVEOiBwcm9jIEV4aXQgQ29kZTo
gJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICRlcnJvcl9zdHJpbmcgKTsKCQkJCQkJCQkKCQkJCQkJCX
0KCQkJCQkJCQoJCQkJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCQkvL
yBSZW1vdmUgdGhlIHRlc3QgemlwIGZpbGUgaWYgaXQgd2FzIGNyZWF0ZWQKCQkJCQkJaWYgKCBAZmlsZV9l
eGlzdHMoICR0ZXN0X2ZpbGUgKSApIHsKCQkJCQkJCgkJCQkJCQlpZiAoICFAdW5saW5rKCAkdGVzdF9maWx
lICkgKSB7CgkJCQkJCgkJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbn
RmKCBfXygnUHJvYyB0ZXN0ICh6aXApIHVuYWJsZSB0byBkZWxldGUgdGVzdCBmaWxlICglcyknLCdpdC1sM
TBuLWJhY2t1cGJ1ZGR5JyApLCAkdGVzdF9maWxlICkgKTsKCQkJCQkJCgkJCQkJCQl9CgkJCQkJCgkJCQkJ
CX0KCQkJCQkJCgkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2R
ldGFpbHMnLCBfXygnUHJvYyB0ZXN0IEZBSUxFRDogVW5hYmxlIHRvIGNyZWF0ZSB0ZXN0IHppcCBmaWxlIH
Byb2Nlc3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJC
QkJCgkJCQkJfQoJCQkJCgkJCQl9CgkJCQkKCQkJCWlmICggZmFsc2UgPT0gJGZvdW5kX3ppcCApIHsKCQkJ
CQoJCQkJCS8vIE5ldmVyIGZvdW5kIHppcCBvbiBhbnkgY2FuZGlkYXRlIHBhdGgKCQkJCQlwYl9iYWNrdXB
idWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdQcm9jIHRlc3QgRmFpbGVkOiBVbmFibGUgdG8gZmluZC
B6aXAgZXhlY3V0YWJsZSBvbiBhbnkgc3BlY2lmaWVkIHBhdGguJywnaXQtbDEwbi1iYWNrdXBidWRkeScgK
SApOwoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkJCQkJCQoJCQkJfQoJCQkJCSAgCgkJCQkvLyBSZW1l
bWJlciB6aXAgcmVzdWx0IGFuZCByZXNldCBmb3IgdW56aXAgdGVzdAoJCQkJJHBlbmRpbmdfcmVzdWx0ID0
gJHJlc3VsdDsKCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQoJCQkJLy8gU2VlIGlmIHdlIGNhbiBkZXRlcm
1pbmUgemlwIHZlcnNpb24gYW5kIHBvc3NpYmx5IGF2YWlsYWJsZSBvcHRpb25zLiBUaGlzIGNhbiBoZWxwI
HVzCgkJCQkvLyBkZXRlcm1pbmUgaG93IHRvIGV4ZWN1dGUgb3BlcmF0aW9ucyBzdWNoIGFzIGNyZWF0aW5n
IGEgemlwIGZpbGUKCQkJCWlmICggdHJ1ZSA9PT0gJGZvdW5kX3ppcCApIHsKCQkJCQoJCQkJCSR0aGlzLT5
zZXRfemlwX3ZlcnNpb24oKTsKCQkJCQoJCQkJfQoJCQkJCgkJCQkvLyBSZXNldCB0aGUgY2FuZGlkYXRlIH
BhdGhzIGZvciBhIGZ1bGwgc2VhcmNoIGZvciB1bnppcAoJCQkJJGNhbmRpZGF0ZV9wYXRocyA9ICR0aGlzL
T5fZXhlY3V0YWJsZV9wYXRoczsKCQkJCQkJICAKCQkJCS8vIFJlc2V0IHRoZSBzYWZldHkgdmFsdWUgaW4g
Y2FzZQoJCQkJJGV4ZWNfZXhpdF9jb2RlID0gMTI3OwoJCQkJCgkJCQkvLyBOZXcgc2VhcmNoCgkJCQkkZm9
1bmRfemlwID0gZmFsc2U7CgkJCQkKCQkJCS8vIE5lZWQgdG8gY3JlYXRlIGEgdGVzdCB6aXAgZmlsZSAtIG
hlcmUncyBvbmUgSSBwcmVwYXJlZCBlYXJsaWVyCgkJCQkvLyBjb250YWluaW5nIHRoZSBvbmUgZmlsZSB0Z
XN0LnR4dCAod2l0aCBjb250ZW50ICJIZWxsbyBXb3JsZCIpCgkJCQkvLyBDYW4gdXNlIHRoaXMgZm9yIGFs
bCBjYXNlIHRlc3RzIGFuZCBkZWxldGUgYXQgZW5kCgkJCQkkdGVzdF9maWxlID0gJHRlbXBkaXIgLiAndGV
tcF90ZXN0XycgLiB1bmlxaWQoKSAuICcuemlwJzsKCQkJCUBmaWxlX3B1dF9jb250ZW50cyggJHRlc3RfZm
lsZSwgYmFzZTY0X2RlY29kZSggIlVFc0RCQW9BQUFBQUFDOEVMVUhqNVpXd0RBQUFBQXdBQUFBSUFCd0FkR
1Z6ZEM1MGVIUlZWQWtBQThvYlVWRGpHMUZRZFhnTEFBRUUrQUVBQUFRVUFBQUFTR1ZzYkc4Z1YyOXliR1FL
VUVzQkFoNERDZ0FBQUFBQUx3UXRRZVBsbGJBTUFBQUFEQUFBQUFnQUdBQUFBQUFBQVFBQUFLU0JBQUFBQUh
SbGMzUXVkSGgwVlZRRkFBUEtHMUZRZFhnTEFBRUUrQUVBQUFRVUFBQUFVRXNGQmdBQUFBQUJBQUVBVGdBQU
FFNEFBQUFBQUE9PSIgKSApOwoKCQkJCS8vIFdlIGFyZSBzZWFyY2hpbmcgZm9yIHppcCB1c2luZyB0aGUgb
GlzdCBvZiBwb3NzaWJsZSBwYXRocwoJCQkJd2hpbGUgKCAoIGZhbHNlID09ICRmb3VuZF96aXAgKSAmJiAo
ICFlbXB0eSggJGNhbmRpZGF0ZV9wYXRocyApICkgKSB7CgkJCQkKCQkJCQkvLyBNYWtlIHN1cmUgaXQgaXM
gY2xlYW4gb2YgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlCgkJCQkJJHBhdGggPSB0cmltKCBhcnJheV
9zaGlmdCggJGNhbmRpZGF0ZV9wYXRocyApICk7CgoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZ
XRhaWxzJywgX18oICdUcnlpbmcgZXhlY3V0YWJsZSBwYXRoIGZvciB1bnppcDonLCdpdC1sMTBuLWJhY2t1
cGJ1ZGR5JyApIC4gJyBgJyAuICRwYXRoIC4gJ2AuJyApOwoJCQkJCQoJCQkJCSRjb21tYW5kID0gJ2V4ZWM
gJyAuICR0aGlzLT5zbGFzaGlmeSggJHBhdGggKSAuICd1bnppcCAtcXQgJyAuICcgIicgLiAkdGVzdF9maW
xlIC4gJyIgInRlc3QudHh0Iic7CgkKCQkJCQkkZGVzY3JpcHRvcnNwZWMgPSBhcnJheSgKCQkJCQkJMCA9P
iBhcnJheSggInBpcGUiLCAiciIgKSwKCQkJCQkJMSA9PiBhcnJheSggImZpbGUiLCAiL2Rldi9udWxsIiwg
ImEiICksCgkJCQkJCTIgPT4gYXJyYXkoICJmaWxlIiwgIi9kZXYvbnVsbCIsICJhIiApCQoJCQkJCSk7Cgk
JCQkJCgkJCQkJJHByb2Nlc3MgPSBOVUxMOyAvLyBNYXliZSBpdCBkb2Vzbid0IHdvcmsKCQkJCQkKCQkJCQ
kkcHJvY2VzcyA9IEBwcm9jX29wZW4oICRjb21tYW5kLCAkZGVzY3JpcHRvcnNwZWMsICRwaXBlcyApOwoJC
QkJCQoJCQkJCWlmICggaXNfcmVzb3VyY2UoICRwcm9jZXNzICkgKSB7CgkJCQkJCgkJCQkJCWZjbG9zZSgg
JHBpcGVzWzBdICk7IC8vIE5ldmVyIHdhbnQgdG8gc2VuZCBpbnB1dCBzbyBqdXN0IGNsb3NlIGl0CgkJCQk
JCQoJCQkJCQkkcHN0YXR1cyA9IHByb2NfZ2V0X3N0YXR1cyggJHByb2Nlc3MgKTsKCQkJCQkJCgkJCQkJCS
8vIE1ha2Ugc3VyZSB3ZSBvbmx5IGRvIDQgbG9vcCBtYXgKCQkJCQkJJGNvdW50ID0gMDsKCQkJCQkJCgkJC
QkJCXdoaWxlICggdHJ1ZSA9PSAkcHN0YXR1c1sgJ3J1bm5pbmcnXSAmJiAoICRjb3VudCsrIDwgNCApICkg
ewoJCQkJCQkJdXNsZWVwKCA1MDAwMDAgKTsKCQkJCQkJCSRwc3RhdHVzID0gcHJvY19nZXRfc3RhdHVzKCA
kcHJvY2VzcyApOwoJCQkJCQl9CgkJCQkJCQoJCQkJCQlpZiAoIHRydWUgPT09ICRwc3RhdHVzWyAncnVubm
luZycgXSApIHsKCQkJCQkJCS8vIEhtbSwgc2hvdWxkbid0IHN0aWxsIGJlIHJ1bm5pbmcsIHRyeSB0byBra
WxsIGl0IGFuZCBtb3ZlIG9uCgkJCQkJCQlAcHJvY190ZXJtaW5hdGUoICRwcm9jZXNzICk7CgkJCQkJCQkK
CQkJCQkJCS8vIEdldCBzdGF0dXMgYWdhaW4gYW5kIHNlZSBpZiBub3cgbm90IHJ1bm5pbmcsIGlmIHNvIGd
ldCBleGl0IGNvZGUKCQkJCQkJCQoJCQkJCQl9IGVsc2UgewoJCQkJCQkKCQkJCQkJCS8vIFByb2Nlc3MgZm
luaXNoZWQgbm9ybWFsbHkgc28gZ2V0IGV4aXQgY29kZSBmb3IgcG9zc2libGUgdXNlCgkJCQkJCQkkZXhlY
19leGl0X2NvZGUgPSAkcHN0YXR1c1sgJ2V4aXRjb2RlJyBdOwoJCQkJCQkJCgkJCQkJCX0KCQkJCQkJCgkJ
CQkJCS8vIElnbm9yZSBhbnkgY2xvc2UgaXNzdWUsIHNob3VsZG4ndCBnZXQgc3R1Y2sgaGVyZSBidXQgaXQ
gaXMgcG9zc2libGUgaWYKCQkJCQkJLy8gd2UgcHJvY2VzcyB3YXMgc3RpbGwgcnVubmluZyBhbmQgd2UgZm
FpbGVkIHRvIHRlcm1pbmF0ZSBpdCAtIHRyaWNreSBvbmUKCQkJCQkJLy8gdG8gb3ZlcmNvbWUgYnV0IF9za
G91bGRfIGJlIHJhcmUKCQkJCQkJQHByb2NfY2xvc2UoICRwcm9jZXNzICk7CgkJCQkJCQoJCQkJCQlpZiAo
ICRleGVjX2V4aXRfY29kZSA9PSAwICkgewoJCQkJCQkKCQkJCQkJCS8vIFNldCB0aGUgcGFyYW1ldGVyIHR
vIGJlIHJlbWVtYmVyZWQgKG5vdGU6IHBhdGggd2l0aG91dCB0cmFpbGluZyBzbGFzaCkKCQkJCQkJCSR0aG
lzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3VuemlwJyBdWyAncGF0aCcgXSA9ICRwYXRoOwoJC
QkJCQkJCgkJCQkJCQkvLyBUaGUgdW56aXAgb3Bl
cmF0aW9uIHdhcyBzdWNjZXNzZnVsIHNvIHdlIGNhbiBhdCBsZWFzdCB1bnppcAoJCQkJCQkJLy8gTm90ZTo
gd2UgZG8gbm90IHdhbnQgdG8gdXNlIHRoaXMgZm9yIGNoZWNraW5nIHlldAkKCQkJCQkJCSR0aGlzLT5fbW
V0aG9kX2RldGFpbHNbICdhdHRyJyBdWyAnaXNfdW56aXBwZXInIF0gPSB0cnVlOwoJCQkJCQkKCQkJCQkJC
XBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1Byb2MgdGVzdCAodW56aXApIFBBU1NF
RC4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQkJCQo
JCQkJCQkJLy8gVGhpcyB3aWxsIGJyZWFrIHVzIG91dCBvZiB0aGUgbG9vcAoJCQkJCQkJJGZvdW5kX3ppcC
A9IHRydWU7CgkJCQkJCQkKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCgkJCQkJCQkkZXJyb3Jfc3RyaW5nID0gJ
GV4ZWNfZXhpdF9jb2RlOwoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygn
UHJvYyB0ZXN0ICh1bnppcCkgRkFJTEVEOiBUZXN0IHVuemlwIGZpbGUgdGVzdCBmYWlsZWQuJywnaXQtbDE
wbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLC
BfXygnUHJvYyBFeGl0IENvZGU6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkZXJyb3Jfc3RyaW5nI
Ck7CgkJCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCX0gZWxzZSB7
CgkJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1Byb2MgdGVzdCB
GQUlMRUQ6IFVuYWJsZSB0byBjcmVhdGUgdGVzdCB1bnppcCBmaWxlIHByb2Nlc3MuJywnaXQtbDEwbi1iYW
NrdXBidWRkeScgKSApOwoJCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkJCgkJCQkJfQoJCQkJCgkJCQl9C
gkJCQkKCQkJCS8vIFJlbW92ZSB0aGUgdGVzdCB6aXAgZmlsZSBpZiBpdCB3YXMgY3JlYXRlZAoJCQkJaWYg
KCBAZmlsZV9leGlzdHMoICR0ZXN0X2ZpbGUgKSApIHsKCQkJCQoJCQkJCWlmICggIUB1bmxpbmsoICR0ZXN
0X2ZpbGUgKSApIHsKCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW
50ZiggX18oJ1Byb2MgdGVzdCAodW56aXApIHVuYWJsZSB0byBkZWxldGUgdGVzdCBmaWxlICglcyknLCdpd
C1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkdGVzdF9maWxlICkgKTsKCQkJCQoJCQkJCX0KCQkJCgkJCQl9CgkJ
CQoJCQkJLy8gSWYgd2UgZGlkbid0IGZpbmQgdW56aXAgYW55d2hlcmUgKG9yIG1heWJlIGZvdW5kIGl0IGJ
1dCBpdCBmYWlsZWQpIHRoZW4gbG9nIGl0CgkJCQlpZiAoIGZhbHNlID09ICRmb3VuZF96aXAgKSB7CgkJCQ
kKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdQcm9jIHRlc3QgRmFpbGVkO
iBVbmFibGUgdG8gZmluZCB1bnppcCBleGVjdXRhYmxlIG9uIGFueSBzcGVjaWZpZWQgcGF0aC4nLCdpdC1s
MTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCQkJCQkJCgkJCQl9IGV
sc2UgewoJCQkJCgkJCQkJLy8gU2VlIGlmIHdlIGNhbiBkZXRlcm1pbmUgdW56aXAgdmVyc2lvbiBhbmQgcG
9zc2libHkgYXZhaWxhYmxlIG9wdGlvbnMuIFRoaXMgY2FuIGhlbHAgdXMKCQkJCQkvLyBkZXRlcm1pbmUga
G93IHRvIGV4ZWN1dGUgb3BlcmF0aW9ucyBzdWNoIGFzIHVuemlwcGluZyBhIGZpbGUKCQkJCQkKCQkJCQkk
dGhpcy0+c2V0X3VuemlwX3ZlcnNpb24oKTsKCQkJCQoJCQkJfQoJCQkJCgkJCX0gZWxzZSB7CgkJCQoJCQk
JcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnUHJvYyB0ZXN0IEZBSUxFRDogT25lIG
9yIG1vcmUgcmVxdWlyZWQgZnVuY3Rpb24gZG8gbm90IGV4aXN0LicsJ2l0LWwxMG4tYmFja3VwYnVkZHknI
CkgKTsKCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkgIAoJCQl9CgkJICAJCgkJICAJLy8gSWYgd2UgZm91bmQg
Ym90aCB6aXAgYW5kIHVuemlwIHRoZW4gY29tcGFyZSB0aGUgcGF0aHMgYW5kIGlmIHRoZSBzYW1lIHRoZW4
gc2V0IHRoZSBjb21tb24gcGF0aAoJCSAgCWlmICggJHBlbmRpbmdfcmVzdWx0ICYmICRyZXN1bHQgKSB7Cg
kJICAJCgkJICAJCWlmICggJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAnemlwJyBdWyAnc
GF0aCcgXSA9PT0gJHRoaXMtPl9tZXRob2RfZGV0YWlsc1sgJ3BhcmFtJyBdWyAndW56aXAnIF1bICdwYXRo
JyBdICkgewoJCSAgCQkKCQkgIAkJCSR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdwYXJhbScgXVsgJ3BhdGg
nIF0gPSAkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAncGFyYW0nIF1bICd6aXAnIF1bICdwYXRoJyBdOwoJCS
AgCQkJCgkJICAJCX0KCQkgIAkJCgkJICAJfQoJCSAgCQoJCSAgCS8vIE91ciByZXN1bHQgd2lsbCBiZSB0c
nVlIGlmIHdlIGZvdW5kIGVpdGhlciBvciBib3RoIG9mIHppcCBhbmQgdW56aXAKCQkgIAkvLyBUaGUgbWV0
aG9kIGF0dHJpYnV0ZXMgd2lsbCB0ZWxsIHdoaWNoIGlzIGF2YWlsYWJsZQoJCSAgCSRyZXN1bHQgPSAoICR
wZW5kaW5nX3Jlc3VsdCB8fCAkcmVzdWx0ICk7CgkJICAJCgkJICAJcmV0dXJuICRyZXN1bHQ7CgkJICAJCg
kJfQoJCQoJCS8qKgoJCSAqCWNyZWF0ZSgpCgkJICoJCgkJICoJQSBmdW5jdGlvbiB0aGF0IGNyZWF0ZXMgY
W4gYXJjaGl2ZSBmaWxlCgkJICoJQWx3YXlzIGNsZWFucyB1cCBhZnRlciBpdHNlbGYKCQkgKgkKCQkgKglU
aGUgJGV4Y2x1ZGVzIHdpbGwgYmUgYSBsaXN0IG9yIHJlbGF0aXZlIHBhdGggZXhjbHVkZXMgaWYgdGhlICR
saXN0bWFrZXIgb2JqZWN0IGlzIE5VTEwgb3RlaHJ3aXNlCgkJICoJd2lsbCBiZSBhYnNvbHV0ZSBwYXRoIG
V4Y2x1ZGVzIGFuZCByZWxhdGl2ZSBwYXRoIGV4Y2x1ZGVzIGNhbiBiZSBoYWQgZnJvbSB0aGUgJGxpc3RtY
WtlciBvYmplY3QKCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkemlwCQkJRnVsbCBwYXRoICYgZmlsZW5h
bWUgb2YgWklQIEFyY2hpdmUgZmlsZSB0byBjcmVhdGUKCQkgKglAcGFyYW0JCXN0cmluZwkkZGlyCQkJRnV
sbCBwYXRoIG9mIGRpcmVjdG9yeSB0byBhZGQgdG8gWklQIEFyY2hpdmUgZmlsZQoJCSAqCUBwYXJhbWUJCW
FycmF5CSRleGNsdWRlcwkJTGlzdCBvZiBlaXRoZXIgYWJzb2x1dGUgcGF0aCBleGNsdXNpb25zIG9yIHJlb
GF0aXZlIGV4Y2x1c2lvbnMKCQkgKglAcGFyYW0JCXN0cmluZwkkdGVtcGRpcgkJRnVsbCBwYXRoIG9mIGRp
cmVjdG9yeSBmb3IgdGVtcG9yYXJ5IHVzYWdlCgkJICoJQHBhcmFtCQlvYmplY3QJJGxpc3RtYWtlcgkJVGh
lIG9iamVjdCBmcm9tIHdoaWNoIHdlIGNhbiBnZXQgYW4gaW5jbHVzaW9ucyBsaXN0CgkJICoJQHJldHVybg
kJYm9vbAkJCQkJVHJ1ZSBpZiB0aGUgY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZ
QoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGNyZWF0ZSggJHppcCwgJGRpciwgJGV4Y2x1ZGVzLCAk
dGVtcGRpciwgJGxpc3RtYWtlciA9IE5VTEwgKSB7CgkJCgkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCgkJCXN
3aXRjaCAoICR0aGlzLT5nZXRfb3NfdHlwZSgpICkgewoJCQkJY2FzZSBzZWxmOjpPU19UWVBFX05JWDoKCQ
kJCQkkcmVzdWx0ID0gJHRoaXMtPmNyZWF0ZV9saW51eCggJHppcCwgJGRpciwgJGV4Y2x1ZGVzLCAkdGVtc
GRpciwgJGxpc3RtYWtlciApOwoJCQkJCWJyZWFrOwoJCQkJY2FzZSBzZWxmOjpPU19UWVBFX1dJTjoKCQkJ
CQkkcmVzdWx0ID0gJHRoaXMtPmNyZWF0ZV93aW5kb3dzKCAkemlwLCAkZGlyLCAkZXhjbHVkZXMsICR0ZW1
wZGlyLCAkbGlzdG1ha2VyICk7CgkJCQkJYnJlYWs7CgkJCQlkZWZhdWx0OgoJCQkJCSRyZXN1bHQgPSBmYW
xzZTsKCQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQoJCX0KCQkJCgkJLyoqCgkJICoJY3JlYXRlX
3dpbmRvd3MoKQoJCSAqCQoJCSAqCUEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGFuIGFyY2hpdmUgZmlsZSBv
biBMaW51eAoJCSAqCUFsd2F5cyBjbGVhbnMgdXAgYWZ0ZXIgaXRzZWxmCgkJICoKCQkgKglUaGUgJGV4Y2x
1ZGVzIHdpbGwgYmUgYSBsaXN0IG9yIHJlbGF0aXZlIHBhdGggZXhjbHVkZXMgaWYgdGhlICRsaXN0bWFrZX
Igb2JqZWN0IGlzIE5VTEwgb3RlaHJ3aXNlCgkJICoJd2lsbCBiZSBhYnNvbHV0ZSBwYXRoIGV4Y2x1ZGVzI
GFuZCByZWxhdGl2ZSBwYXRoIGV4Y2x1ZGVzIGNhbiBiZSBoYWQgZnJvbSB0aGUgJGxpc3RtYWtlciBvYmpl
Y3QKCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkemlwCQkJRnVsbCBwYXRoICYgZmlsZW5hbWUgb2YgWkl
QIEFyY2hpdmUgZmlsZSB0byBjcmVhdGUKCQkgKglAcGFyYW0JCXN0cmluZwkkZGlyCQkJRnVsbCBwYXRoIG
9mIGRpcmVjdG9yeSB0byBhZGQgdG8gWklQIEFyY2hpdmUgZmlsZQoJCSAqCUBwYXJhbWUJCWFycmF5CSRle
GNsdWRlcwkJTGlzdCBvZiBlaXRoZXIgYWJzb2x1dGUgcGF0aCBleGNsdXNpb25zIG9yIHJlbGF0aXZlIGV4
Y2x1c2lvbnMKCQkgKglAcGFyYW0JCXN0cmluZwkkdGVtcGRpcgkJRnVsbCBwYXRoIG9mIGRpcmVjdG9yeSB
mb3IgdGVtcG9yYXJ5IHVzYWdlCgkJICoJQHBhcmFtCQlvYmplY3QJJGxpc3RtYWtlcgkJVGhlIG9iamVjdC
Bmcm9tIHdoaWNoIHdlIGNhbiBnZXQgYW4gaW5jbHVzaW9ucyBsaXN0CgkJICoJQHJldHVybgkJYm9vbAkJC
QkJVHJ1ZSBpZiB0aGUgY3JlYXRpb24gd2FzIHN1Y2Nlc3NmdWwsIGZhbHNlIG90aGVyd2lzZQoJCSAqCgkJ
ICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGNyZWF0ZV93aW5kb3dzKCAkemlwLCAkZGlyLCAkZXhjbHVkZXM
sICR0ZW1wZGlyLCAkbGlzdG1ha2VyICkgewoJCQoJCQkvLyBUaGlzIHNob3VsZCBuZXZlciBiZSBjYWxsZW
QgYnV0IGp1c3QgaW4gY2FzZSByZXR1cm4gZmFsc2Ugc2lsZW50bHkKCQkJLy9wYl9iYWNrdXBidWRkeTo6c
3RhdHVzKCAnZGV0YWlscycsIF9fKCdUaGUgJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICR0aGlzLT5n
ZXRfbWV0aG9kX3RhZygpIC4gX18oJyBtZXRob2QgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgZm9yIGF
yY2hpdmluZy4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCXJldHVybiBmYWxzZTsKCgkJfQkJCQ
oJCQoJCS8qKgoJCSAqCWNyZWF0ZV9saW51eCgpCgkJICoJCgkJICoJQSBmdW5jdGlvbiB0aGF0IGNyZWF0Z
XMgYW4gYXJjaGl2ZSBmaWxlIG9uIExpbnV4CgkJICoJQWx3YXlzIGNsZWFucyB1cCBhZnRlciBpdHNlbGYK
CQkgKgoJCSAqCVRoZSAkZXhjbHVkZXMgd2lsbCBiZSBhIGxpc3Qgb3IgcmVsYXRpdmUgcGF0aCBleGNsdWR
lcyBpZiB0aGUgJGxpc3RtYWtlciBvYmplY3QgaXMgTlVMTCBvdGVocndpc2UKCQkgKgl3aWxsIGJlIGFic2
9sdXRlIHBhdGggZXhjbHVkZXMgYW5kIHJlbGF0aXZlIHBhdGggZXhjbHVkZXMgY2FuIGJlIGhhZCBmcm9tI
HRoZSAkbGlzdG1ha2VyIG9iamVjdAoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCSR6aXAJCQlGdWxsIHBh
dGggJiBmaWxlbmFtZSBvZiBaSVAgQXJjaGl2ZSBmaWxlIHRvIGNyZWF0ZQoJCSAqCUBwYXJhbQkJc3RyaW5
nCSRkaXIJCQlGdWxsIHBhdGggb2YgZGlyZWN0b3J5IHRvIGFkZCB0byBaSVAgQXJjaGl2ZSBmaWxlCgkJIC
oJQHBhcmFtZQkJYXJyYXkJJGV4Y2x1ZGVzCQlMaXN0IG9mIGVpdGhlciBhYnNvbHV0ZSBwYXRoIGV4Y2x1c
2lvbnMgb3IgcmVsYXRpdmUgZXhjbHVzaW9ucwoJCSAqCUBwYXJhbQkJc3RyaW5nCSR0ZW1wZGlyCQlGdWxs
IHBhdGggb2YgZGlyZWN0b3J5IGZvciB0ZW1wb3JhcnkgdXNhZ2UKCQkgKglAcGFyYW0JCW9iamVjdAkkbGl
zdG1ha2VyCQlUaGUgb2JqZWN0IGZyb20gd2hpY2ggd2UgY2FuIGdldCBhbiBpbmNsdXNpb25zIGxpc3QKCQ
kgKglAcmV0dXJuCQlib29sCQkJCQlUcnVlIGlmIHRoZSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFsc
2Ugb3RoZXJ3aXNlCgkJICoKCQkgKi8KCQlwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlX2xpbnV4KCAkemlw
LCAkZGlyLCAkZXhjbHVkZXMsICR0ZW1wZGlyLCAkbGlzdG1ha2VyICkgewoJCQoJCQkkZXhpdGNvZGUgPSA
wOwoJCQkkb3V0cHV0ID0gYXJyYXkoKTsKCQkJJHppcHBhdGggPSAnJzsKCQkJJGNvbW1hbmQgPSAnJzsKCQ
kJJHRlbXBfemlwID0gJyc7CgkJCSRleGNsdWRpbmdfYWRkaXRpb25hbCA9IGZhbHNlOwoJCQkkZXhjbHVkZ
V9jb3VudCA9IDA7CgkJCSRleGNsdXNpb25zID0gYXJyYXkoKTsKCQkJJGhhdmVfemlwX2Vycm9ycyA9IGZh
bHNlOwoJCQkkemlwX2Vycm9yc19jb3VudCA9IDA7CgkJCSR6aXBfZXJyb3JzID0gYXJyYXkoKTsKCQkJJGh
hdmVfemlwX3dhcm5pbmdzID0gZmFsc2U7CgkJCSR6aXBfd2FybmluZ3NfY291bnQgPSAwOwoJCQkkemlwX3
dhcm5pbmdzID0gYXJyYXkoKTsKCQkJJGhhdmVfemlwX2FkZGl0aW9ucyA9IGZhbHNlOwoJCQkkemlwX2FkZ
Gl0aW9uc19jb3VudCA9IDA7CgkJCSR6aXBfYWRkaXRpb25zID0gYXJyYXkoKTsKCQkJJGhhdmVfemlwX2Rl
YnVnID0gZmFsc2U7CgkJCSR6aXBfZGVidWdfY291bnQgPSAwOwoJCQkkemlwX2RlYnVnID0gYXJyYXkoKTs
KCQkJJGhhdmVfemlwX290aGVyID0gZmFsc2U7CgkJCSR6aXBfb3RoZXJfY291bnQgPSAwOwoJCQkkemlwX2
90aGVyID0gYXJyYXkoKTsKCQkJJHppcF91c2luZ19sb2dfZmlsZSA9IGZhbHNlOwoJCQkkbG9nZmlsZV9uY
W1lID0gJyc7CgkJCSR6aXBfaWdub3Jpbmdfc3ltbGlua3MgPSBmYWxzZTsKCQkKCQkJLy8gVGhlIGJhc2Vk
aXIgbXVzdCBoYXZlIGEgdHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvcgoJCQkkYmFzZWRpciA9ICggcnR
yaW0oIHRyaW0oICRkaXIgKSwgRElSRUNUT1JZX1NFUEFSQVRPUiApICkgLiBESVJFQ1RPUllfU0VQQVJBVE
9SOwoJCQkKCQkJaWYgKCBlbXB0eSggJHRlbXBkaXIgKSB8fCAhQGZpbGVfZXhpc3RzKCAkdGVtcGRpciApI
CkgewoJCQkKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1RlbXBvcmFyeSB3
b3JraW5nIGRpcmVjdG9yeSBtdXN0IGJlIGF2YWlsYWJsZS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk
7CQkJCQoJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCgkJCX0KCQkJCQkKCQkJLy8gVGVsbCB3aGljaCB6aXAgdm
Vyc2lvbiBpcyBiZWluZyB1c2VkCgkJCSR2ZXJzaW9uID0gJHRoaXMtPmdldF96aXBfdmVyc2lvbigpOwoJC
QkKCQkJaWYgKCB0cnVlID09PSBpc19hcnJheSggJHZlcnNpb24gKSApIHsKCQkJCgkJCQkoICggMiA9PSAk
dmVyc2lvblsgJ21ham9yJyBdICkgJiYgKCAwID09ICR2ZXJzaW9uWyAnbWlub3InIF0gKSApID8gJHZlcnN
pb25bICdtaW5vcicgXSA9ICdYJyA6IHRydWUgOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldG
FpbHMnLCBzcHJpbnRmKCBfXyggJ1VzaW5nIHppcCB2ZXJzaW9uOiAlMSRzLiUyJHMnLCAnaXQtbDEwbi1iY
WNrdXBidWRkeScgKSwgJHZlcnNpb25bICdtYWpvcicgXSwgJHZlcnNpb25bICdtaW5vcicgXSApICk7CgkJ
CQkKCQkJfSBlbHNlIHsKCQkJCgkJCQkkdmVyc2l
vbiA9IGFycmF5KCAibWFqb3IiID0+ICJYIiwgIm1pbm9yIiA9PiAiWSIgKTsKCQkJCXBiX2JhY2t1cGJ1ZG
R5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oICdVc2luZyB6aXAgdmVyc2lvbjogJTEkcy4lM
iRzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR2ZXJzaW9uWyAnbWFqb3InIF0sICR2ZXJzaW9uWyAn
bWlub3InIF0gKSApOwoKCQkJfQoJCQkKCQkJLy8gR2V0IHRoZSBjb21tYW5kIHBhdGggZm9yIHRoZSB6aXA
gY29tbWFuZCAtIHNob3VsZCByZXR1cm4gYSB0cmltbWVkIHN0cmluZwoJCQkkemlwcGF0aCA9ICR0aGlzLT
5nZXRfY29tbWFuZF9wYXRoKCBzZWxmOjpDT01NQU5EX1pJUF9QQVRIICk7CgkJCQoJCQkvLyBEZXRlcm1pb
mUgaWYgd2UgYXJlIHVzaW5nIGFuIGFic29sdXRlIHBhdGgKCQkJaWYgKCAhZW1wdHkoICR6aXBwYXRoICkg
KSB7CgkJCQoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ1VzaW5nIGFic29
sdXRlIHppcCBwYXRoOiAnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJHppcHBhdGggKTsKCQkJCQoJCQ
l9CgoJCQkvLyBBZGQgdGhlIHRyYWlsaW5nIHNsYXNoIGlmIHJlcXVpcmVkCgkJCSRjb21tYW5kID0gJHRoa
XMtPnNsYXNoaWZ5KCAkemlwcGF0aCApIC4gJ3ppcCc7CQoKCQkJLy8gSGFyZGNvZGluZyBzb21lIGFkZGl0
aW9uYWwgb3B0aW9ucyBmb3Igbm93CgkJCS8vJGNvbW1hbmQgLj0gJyAtcSAtcic7CgkJCS8vIE5vdGU6IG5
vIGxvbmdlciB1c2luZyBxdWlldCBfYnV0XyBtYXkgdXNlIGl0IGlmIG91dHB1dCBpcyBiZWluZyBzZW50IH
RvIGxvZyBmaWxlCgkJCSRjb21tYW5kIC49ICcgLXInOwoJCQkKCQkJLy8gQ2hlY2sgaWYgdGhlIHZlcnNpb
24gb2YgemlwIGluIHVzZSBzdXBwb3J0cyBsb2cgZmlsZSAod2hpY2ggd2lsbCBoZWxwIHdpdGggbWVtb3J5
IHVzYWdlIGZvciBsYXJnZSBzaXRlcykKCQkJaWYgKCAkdGhpcy0+Z2V0X3ppcF9zdXBwb3J0c19sb2dfZml
sZSgpICkgewoJCQkKCQkJCS8vIENob29zZSB0byB1c2UgbG9nIGZpbGUgc28gcXVpZXRlbiBzdGRvdXQgLS
B3ZSdsbCBzZXQgdXAgdGhlIGxvZyBmaWxlIGxhdGVyCgkJCQkkY29tbWFuZCAuPSAnIC1xJzsKCQkJCSR6a
XBfdXNpbmdfbG9nX2ZpbGUgPSB0cnVlOwoJCQkKCQkJfQoJCQkKCQkJLy8gQ2hlY2sgaWYgd2UgbmVlZCB0
byB0dXJuIG9mZiBjb21wcmVzc2lvbiBieSBzZXR0aW5ncyAoZmFzdGVyIGJ1dCBsYXJnZXIgYmFja3VwKQo
JCQlpZiAoIHRydWUgIT09ICR0aGlzLT5nZXRfY29tcHJlc3Npb24oKSApIHsKCQkJCgkJCQkkY29tbWFuZC
AuPSAnIC0wJzsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1ppcCBhcmNoa
XZlIGNyZWF0aW9uIGNvbXByZXNzaW9uIGRpc2FibGVkIGJhc2VkIG9uIHNldHRpbmdzLicsJ2l0LWwxMG4t
YmFja3VwYnVkZHknICkgKTsKCQkJCQoJCQl9IGVsc2UgewoJCQkKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF
0dXMoICdkZXRhaWxzJywgX18oJ1ppcCBhcmNoaXZlIGNyZWF0aW9uIGNvbXByZXNzaW9uIGVuYWJsZWQgYm
FzZWQgb24gc2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkKCQkJfQoJCQkKCQkJL
y8gQ2hlY2sgaWYgaWdub3JpbmcgKG5vdCBmb2xsb3dpbmcpIHN5bWxpbmtzCgkJCWlmICggdHJ1ZSA9PT0g
JHRoaXMtPmdldF9pZ25vcmVfc3ltbGlua3MoKSApIHsKCQkJCgkJCQkvLyBXYW50IHRvIG5vdCBmb2xsb3c
gc3ltbGlua3Mgc28gc2V0IGNvbW1hbmQgb3B0aW9uIGFuZCBzZXQgZmxhZyBmb3IgbGF0ZXIgdXNlCgkJCQ
lpZiAoICR0aGlzLT5nZXRfb3NfdHlwZSgpICE9IHNlbGY6Ok9TX1RZUEVfV0lOICkgewoJCQkJCSRjb21tY
W5kIC49ICcgLXknOwoJCQkJCSR6aXBfaWdub3Jpbmdfc3ltbGlua3MgPSB0cnVlOwoJCQkJfQoJCQkJCgkJ
CQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaaXAgYXJjaGl2ZSBjcmVhdGlvbiB
zeW1ib2xpYyBsaW5rcyB3aWxsIG5vdCBiZSBmb2xsb3dlZCBiYXNlZCBvbiBzZXR0aW5ncy4nLCdpdC1sMT
BuLWJhY2t1cGJ1ZGR5JyApICk7CgoJCQl9IGVsc2UgewoJCQkKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0d
XMoICdkZXRhaWxzJywgX18oJ1ppcCBhcmNoaXZlIGNyZWF0aW9uIHN5bWJvbGljIGxpbmtzIHdpbGwgYmUg
Zm9sbG93ZWQgYmFzZWQgb24gc2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoKCQkJfQo
JCQkKCQkJLy8gQ2hlY2sgaWYgd2UgYXJlIGlnbm9yaW5nIHdhcm5pbmdzIC0gbWVhbmluZyBjYW4gc3RpbG
wgZ2V0IGEgYmFja3VwIGV2ZW4KCQkJLy8gaWYsIGUuZy4sIHNvbWUgZmlsZXMgY2Fubm90IGJlIHJlYWQKC
QkJaWYgKCB0cnVlID09PSAkdGhpcy0+Z2V0X2lnbm9yZV93YXJuaW5ncygpICkgewoJCQkKCQkJCS8vIE5v
dGU6IHdhcm5pbmdzIGFyZSBiZWluZyBpZ25vcmVkIGJ1dCB3aWxsIHN0aWxsIGJlIGdhdGhlcmVkIGFuZCB
sb2dnZWQKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1ppcCBhcmNoaXZlIG
NyZWF0aW9uIHdhcm5pbmdzIHdpbGwgYmUgaWdub3JlZCBiYXNlZCBvbiBzZXR0aW5ncy4nLCdpdC1sMTBuL
WJhY2t1cGJ1ZGR5JyApICk7CgkJCQkKCQkJfSBlbHNlIHsKCQkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c3Rh
dHVzKCAnZGV0YWlscycsIF9fKCdaaXAgYXJjaGl2ZSBjcmVhdGlvbiB3YXJuaW5ncyB3aWxsIG5vdCBiZSB
pZ25vcmVkIGJhc2VkIG9uIHNldHRpbmdzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCgkJCX0KCQ
kJCQoJCQkvLyBEZWxldGUgYW55IGV4aXN0aW5nIHppcCBmaWxlIG9mIHNhbWUgbmFtZSAtIHJlYWxseSB0a
GlzIHNob3VsZCBuZXZlciBoYXBwZW4KCQkJaWYgKCBAZmlsZV9leGlzdHMoICR6aXAgKSApIHsKCgkJCQlw
Yl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdFeGlzdGluZyBaSVAgQXJjaGl2ZSBmaWx
lIHdpbGwgYmUgcmVwbGFjZWQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJQHVubGluayggJH
ppcCApOwoKCQkJfQoJCQkJCQkKCQkJLy8gTm93IHdlJ2xsIHNldCB1cCB0aGUgbG9nZ2luZyB0byBmaWxlI
GlmIHJlcXVpcmVkIC0gdXNlIGZ1bGwgbG9nZ2luZwoJCQkvLyBOb3RlOiB3ZSBhbHdheXMgdXNlIHRoaXMg
ZmlsZSBlaXRoZXIgZm9yIGNvbW1hbmQgbGluZSBsb2cgb3B0aW9uIG9yIGNhcHR1cmVkIG91dHB1dAoJCQk
vLyBzbyBhbHdheXMgc2V0IGl0CgkJCSRsb2dmaWxlX25hbWUgPSAkdGVtcGRpciAuIHNlbGY6OlpJUF9MT0
dfRklMRV9OQU1FOwoJCQlpZiAoIHRydWUgPT09ICR6aXBfdXNpbmdfbG9nX2ZpbGUgKSB7CgkJCQoJCQkJL
y8gVXNpbmcgdGhlIGNvbW1hbmQgbGluZSBsb2dmaWxlIG9wdGlvbgoJCQkJJGNvbW1hbmQgLj0gIiAtbGYg
J3skbG9nZmlsZV9uYW1lfScgLWxpIjsKCQkJCQoJCQkJLy8gQWN0dWFsIGNvbW1hbmQgb3V0cHV0IHdpbGw
gYmUgc2VudCB0byB0aGUgYml0LWJ1Y2tldCBpbiB0aGUgc2t5CgkJCQkvLyBUT0RPOiBpZiB3ZSB3YW50IH
RvIGNhcHR1cmUgZGVidWcgb3V0cHV0IHdlJ2xsIG5lZWQgYSByZWFsIGZpbGUKCQkJCS8vIGlzIGl0IHNhZ
mUgdG8gdXNlIHRoZSBzYW1lIGZpbGVuYW1lIChwcm9iYWJseSBub3QpCgkJCQkkb3V0cHV0ID0gJy9kZXYv
bnVsbCc7CgkJCQoJCQl9IGVsc2UgewoJCQkKCQkJCS8vIE9sZCBzdHlsZWUgemlwIG5vdCBzdXBwb3J0aW5
nIGxvZ2ZpbGUgc28gcmVkaXJlY3Qgb3V0cHV0IHRvIHRoZSBmaWxlIGluc3RlYWQKCQkJCSRvdXRwdXQgPS
AkbG9nZmlsZV9uYW1lOwoJCQkKCQkJfQoJCQkJCQkKCQkJLy8gU2V0IHRlbXBvcmFyeSBkaXJlY3Rvcnkgd
G8gc3RvcmUgWklQIHdoaWxlIGl0J3MgYmVpbmcgZ2VuZXJhdGVkLgkJCQoJCQkkY29tbWFuZCAuPSAiIC1i
ICd7JHRlbXBkaXJ9JyI7CgoJCQkvLyBJZiB3YXJuaW5ncyBhcmUgYmVpbmcgaWdub3JlZCB3ZSBjYW4gdGV
sbCB6aXAgdG8gY3JlYXRlIHRoZSB6aXAgYXJjaGl2ZSBpbiB0aGUgZmluYWwKCQkJLy8gbG9jYXRpb24gLS
BvdGhlcndpc2Ugd2UgbXVzdCBwdXQgaXQgaW4gYSB0ZW1wb3JhcnkgbG9jYXRpb24gYW5kIG1vdmUgaXQgb
GF0ZXIgb25seQoJCQkvLyBpZiB0aGVyZSBhcmUgbm8gd2FybmluZ3MuIFRoaXMgY29wZXMgd2l0aCB0aGUg
Y2FzZSB3aGVyZSAodGhpcykgY29udHJvbGxpbmcgc2NyaXB0CgkJCS8vIGdldHMgdGltZWQgb3V0IGJ5IHR
oZSBzZXJ2ZXIgYW5kIGlmIHRoZSBmaWxlIHdlcmUgY3JlYXRlZCBpbiB0aGUgZmluYWwgbG9jYXRpb24gd2
l0aAoJCQkvLyB3YXJuaW5ncyB0aGF0IHNob3VsZCBub3QgYmUgaWdub3JlZCB3ZSBjYW5ub3QgcHJldmVud
CBpdCBiZWluZyBjcmVhdGVkLiBUaGUgLU1NIG9wdGlvbgoJCQkvLyBjb3VsZCBiZSB1c2VkIGJ1dCB0aGlz
IHByZXZlbnRzIHVzIGNhdGNoaW5nIHN1Y2ggd2FybmluZ3MgYW5kIGJlaW5nIGFibGUgdG8gcmVwb3J0Cgk
JCS8vIHRoZW0gdG8gdGhlIHVzZXIgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlIHNjcmlwdCBoYXNuJ3QgYmVlbi
B0ZXJtaW5hdGVkLiBBZGRpdGlvbmFsbHkgdGhlCgkJCS8vIC1NTSBvcHRpb24gd291bGQgYmFpbCBvdXQgb
24gdGhlIGZpcnN0IGVuY291bnRlcmVkIHByb2JsZW0gYW5kIHNvIGlmIHRoZXJlIHdlcmUgYSBmZXcKCQkJ
Ly8gcHJvYmxlbXMgdGhleSB3b3VsZCBlYWNoIG5vdCBiZSBmb3VuZCB1bnRpbCB0aGUgY3VycmVudCBvbmU
gaXMgZml4ZWQgYW5kIHRyeSBhZ2Fpbi4KCQkJaWYgKCB0cnVlID09PSAkdGhpcy0+Z2V0X2lnbm9yZV93YX
JuaW5ncygpICkgewoJCQkKCQkJCSR0ZW1wX3ppcCA9ICR6aXA7CgkJCQoJCQl9IGVsc2UgewoJCQkKCQkJC
SR0ZW1wX3ppcCA9ICR0ZW1wZGlyIC4gYmFzZW5hbWUoICR6aXAgKTsKCQkJCQoJCQl9CQkKCgkJCSRjb21t
YW5kIC49ICIgJ3skdGVtcF96aXB9JyAuIjsKCQkJCgkJCS8vIE5vdyB3b3JrIG91dCBleGNsdXNpb25zIGR
lcGVuZGVudCBvbiB3aGF0IHdlIGhhdmUgYmVlbiBnaXZlbgoJCQlpZiAoIGlzX29iamVjdCggJGxpc3RtYW
tlciApICYmICggZGVmaW5lZCggJ1VTRV9FWFBFUklNRU5UQUxfWklQQlVERFlfSU5DTFVTSU9OJyApICYmI
CggdHJ1ZSA9PT0gVVNFX0VYUEVSSU1FTlRBTF9aSVBCVUREWV9JTkNMVVNJT04gKSApICkgewoJCQkKCQkJ
CS8vIFdlJ3JlIGRvaW5nIGFuIGluY2x1c2lvbiBvcGVyYXRpb24sIGJ1dCBmaXJzdCB3ZSdsbCBqdXN0IHN
ob3cgdGhlIGV4Y2x1c2lvc24KCQkJCQoJCQkJLy8gRm9yIHppcCB3ZSBuZWVkIHJlbGF0aXZlIHJhdGhlci
B0aGFuIGFic29sdXRlIGV4Y2x1c2lvbiBzcGF0aHMKCQkJCSRleGNsdXNpb25zID0gJGxpc3RtYWtlci0+Z
2V0X3JlbGF0aXZlX2V4Y2x1ZGVzKCAkYmFzZWRpciApOwoJCQkJCgkJCQlpZiAoIGNvdW50KCAkZXhjbHVz
aW9ucyApID4gMCApIHsKCQkJCQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18
oJ0NhbGN1bGF0aW5nIGRpcmVjdG9yaWVzIHRvIGV4Y2x1ZGUgZnJvbSBiYWNrdXAuJywnaXQtbDEwbi1iYW
NrdXBidWRkeScgKSApOwoJCQkJCQoJCQkJCSRleGNsdWRpbmdfYWRkaXRpb25hbCA9IGZhbHNlOwoJCQkJC
SRleGNsdWRlX2NvdW50ID0gMDsKCQkJCQlmb3JlYWNoICggJGV4Y2x1c2lvbnMgYXMgJGV4Y2x1ZGUgKSB7
CgkJCQkJCgkJCQkJCWlmICggIXN0cnN0ciggJGV4Y2x1ZGUsICdiYWNrdXBidWRkeV9iYWNrdXBzJyApICk
geyAvLyBTZXQgdmFyaWFibGUgdG8gc2hvdyB3ZSBhcmUgZXhjbHVkaW5nIGFkZGl0aW9uYWwgZGlyZWN0b3
JpZXMgYmVzaWRlcyBiYWNrdXAgZGlyLgoJCgkJCQkJCQkkZXhjbHVkaW5nX2FkZGl0aW9uYWwgPSB0cnVlO
woJCQkJCQkJCQoJCQkJCQl9CgkJCQkJCQkKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFp
bHMnLCBfXygnRXhjbHVkaW5nJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICc6ICcgLiAkZXhjbHVkZSA
pOwoJCQkJCQkJCQkJCQkJCgkJCQkJCSRleGNsdWRlX2NvdW50Kys7CgkJCQkJCQkKCQkJCQl9CgkJCQkJCQ
kJCQkKCQkJCX0KCQkJCQoJCQkJLy8gR2V0IHRoZSBsaXN0IG9mIGluY2x1c2lvbnMgdG8gcHJvY2VzcwoJC
QkJJGluY2x1c2lvbnMgPSAkbGlzdG1ha2VyLT5nZXRfdGVybWluYWxzKCk7CgkJCQkKCQkJCS8vIEZvciBl
YWNoIGRpcmVjdG9yeSB3ZSBuZWVkIHRvIHB1dCB0aGUgIndpbGRjYXJkIiBvbiB0aGUgZW5kCgkJCQlmb3J
lYWNoICggJGluY2x1c2lvbnMgYXMgJiRpbmNsdXNpb24gKSB7CgkJCQkKCQkJCQlpZiAoIGlzX2RpciggJG
luY2x1c2lvbiApICkgewoJCQkJCQoJCQkJCQkkaW5jbHVzaW9uIC49IERJUkVDVE9SWV9TRVBBUkFUT1IgL
iAiKiI7CgkJCQkJfQoJCQkJCgkJCQkJLy8gUmVtb3ZlIGRpcmVjdG9yeSBwYXRoIHByZWZpeCBleGNsdWRp
bmcgbGVhZGluZyBzbGFzaCB0byBtYWtlIHJlbGF0aXZlIChuZWVkZWQgZm9yIHppcCkKCQkJCQkkaW5jbHV
zaW9uID0gc3RyX3JlcGxhY2UoIHJ0cmltKCAkYmFzZWRpciwgRElSRUNUT1JZX1NFUEFSQVRPUiApLCAnJy
wgJGluY2x1c2lvbiApOwoJCQkJCQkJCQkKCQkJCX0KCQkJCQoJCQkJLy8gTm93IGNyZWF0ZSB0aGUgaW5jb
HVzaW9ucyBmaWxlIGluIHRoZSB0ZW1wZGlyCgkJCQkKCQkJCS8vIEFuZCB1cGRhdGUgdGhlIGNvbW1hbmQg
b3B0aW9ucwoJCQkJJGlmaWxlID0gJHRlbXBkaXIgLiBzZWxmOjpaSVBfSU5DTFVTSU9OU19GSUxFX05BTUU
7CgkJCQlpZiAoIGZpbGVfZXhpc3RzKCAkaWZpbGUgKSApIHsKCQkJCQoJCQkJCUB1bmxpbmsoICRpZmlsZS
ApOwoJCQkJCgkJCQl9CgkJCQkKCQkJCWZpbGVfcHV0X2NvbnRlbnRzKCAkaWZpbGUsIGltcGxvZGUoIFBIU
F9FT0wsICRpbmNsdXNpb25zICkgLiBQSFBfRU9MIC4gUEhQX0VPTCApOwoJCQkJCgkJCQkkY29tbWFuZCAu
PSAiIC1pQCIgLiAiJ3skaWZpbGV9JyI7CgkJCQoJCQl9IGVsc2UgewoJCQkKCQkJCS8vIFdlJ3JlIGRvaW5
nIGFuIGV4Y2x1c2lvbiBvcGVyYXRpb24KCQkJCgkJCQkvLyRjb21tYW5kIC49ICItaSAnKicgIjsgLy8gTm
90IG5lZWRlZC4gWmlwIGRlZmF1bHRzIHRvIGRvaW5nIHRoaXMuIFJlbW92ZWQgSnVseSAxMCwgMjAxMiBmb
3IgdjMuMC40MS4KCQkJCQoJCQkJLy8gU2luY2Ugd2UgaGFkIG5vICRsaXN0bWFrZXIgb2JqZWN0IG9yIG5v
dCB1c2luZyBpdCBnZXQgdGhlIHN0YW5kYXJkIHJlbGF0aXZlIGV4Y2x1ZGVzIHRvIHByb2Nlc3MKCQkJCSR
leGNsdXNpb25zID0gJGV4Y2x1ZGVzOwoJCQkJCgkJCQlpZiAoIGNvdW50KCAkZXhjbHVzaW9ucyApID4gMC
ApIHsKCQkJCQoJCQkJCS8vIEhhbmRsZSBleGNsdXNpb25zIGJ5IHBsYWNpbmcgdGhlbSBpbiBhbiBleGNsd
XNpb24gdGV4dCBmaWxlLgoJCQkJCSRleGNsdXNpb25fZmlsZSA9ICR0ZW1wZGlyIC4gc2VsZjo6WklQX0VY
Q0xVU0lPTlNfRklMRV9OQU1FOwoJCQkJCSR0aGlzLT5fcmVuZGVyX2V4Y2x1c2lvbnNfZmlsZSggJGV4Y2x
1c2lvbl9maWxlLCAkZXhjbHVzaW9ucywgJGRpci
ApOwoJCQkJCQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oI
CdVc2luZyBleGNsdXNpb24gZmlsZSBgJTEkc2AnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJGV4Y2x1
c2lvbl9maWxlICkgKTsKCQkJCQkkY29tbWFuZCAuPSAnIC14QCcgLiAiJ3skZXhjbHVzaW9uX2ZpbGV9JyI
7CgkJCQkJCQkJCQkKCQkJCX0KCQkJCgkJCX0KCQkJCgkJCS8vIFJlbWVtYmVyIHRoZSBjdXJyZW50IGRpcm
VjdG9yeSBhbmQgY2hhbmdlIHRvIHRoZSBkaXJlY3RvcnkgYmVpbmcgYWRkZWQgc28gdGhhdCAiLiIgaXMgd
mFsaWQgaW4gY29tbWFuZAoJCQkkd29ya2luZ19kaXIgPSBnZXRjd2QoKTsKCQkJY2hkaXIoICRkaXIgKTsK
CQkJCgkJCS8vIEV4ZWN1dGUgWklQIGNvbW1hbmQgLSB3ZSBkb24ndCBjYXJlIGEgYWJvdXQgV2luZG93cyB
oZXJlIGJlY2F1c2UgdGhpcyBtZXRob2QgaXNuJ3Qgc3VwcG9ydGVkIHlldAoJCQkvLyBQcmVwZW5kICJleG
VjIiBzbyB0aGF0IHNwYXduZWQgcHJvY2VzcyBiZWNvbWVzIHRoZSBhY3R1YWwgemlwIHByb2Nlc3MKCQkJJ
GNvbW1hbmQgPSAnZXhlYyAnIC4gJGNvbW1hbmQ7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgJHRoaXMtPmdldF9tZXRob2RfdGFnKCkgLiBfXygnIGNvbW1hbmQgKExpbnV4KScsJ2l0LWwxMG4
tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gJGNvbW1hbmQgKTsKCQkJCgkJCS8vIFNldCBzdGRpbiB0byBiZS
BhIHBpcGUgdGhhdCB3ZSdsbCBjbG9zZSBpbW1lZGlhdGVseSBhbnl3YXkKCQkJLy8gU2VuZCBzdGRvdXQgd
G8gYSBmaWxlIG9yIGR1bXAgaXQgZGVwZW5kZW50IG9uIHRoZSB6aXAgdmVyc2lvbiAodGhlIGRlc3RpbmF0
aW9uIGlzIHNldCBhYm92ZSkKCQkJLy8gU2VuZCBzdGRlcnIgdG8gd2hlcmV2ZXIgc3Rkb3V0IGlzIGdvaW5
nIChvbiBwcmUtdjMgemlwIHdlIG5lZWQgc3RkZXJyIGZvciB3YXJuaW5ncykKCQkJJGRlc2NyaXB0b3JzcG
VjID0gYXJyYXkoCgkJCQkwID0+IGFycmF5KCAicGlwZSIsICJyIiApLAoJCQkJMSA9PiBhcnJheSggImZpb
GUiLCAkb3V0cHV0LCAidyIgKSwKCQkJCTIgPT4gYXJyYXkoICJmaWxlIiwgJG91dHB1dCwgInciICkKCQkJ
KTsKCQkJCgkJCSRwcm9jZXNzID0gcHJvY19vcGVuKCAkY29tbWFuZCwgJGRlc2NyaXB0b3JzcGVjLCAkcGl
wZXMgKTsKCQkJCgkJCWlmICggaXNfcmVzb3VyY2UoICRwcm9jZXNzICkgKSB7CgkJCQoJCQkJZmNsb3NlKC
AkcGlwZXNbIDAgXSApOyAvLyBOZXZlciB3YW50IHRvIHNlbmQgaW5wdXQgc28ganVzdCBjbG9zZSBpdAoJC
QkJCgkJCQkkc3RhdHVzID0gcHJvY19nZXRfc3RhdHVzKCAkcHJvY2VzcyApOwoJCQkJCgkJCQl3aGlsZSAo
IHRydWUgPT0gJHN0YXR1c1sgJ3J1bm5pbmcnXSApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCA
nZGV0YWlscycsIF9fKCdaaXAgQXJjaGl2ZSBmaWxlIGNyZWF0aW9uIGluIHByb2dyZXNzLicsJ2l0LWwxMG
4tYmFja3VwYnVkZHknICkgKTsKCQkJCQlzbGVlcCg1KTsKCQkJCQkkc3RhdHVzID0gcHJvY19nZXRfc3Rhd
HVzKCAkcHJvY2VzcyApOwoJCQkJCQoJCQkJCS8vIENvdWxkIGFsc28gY2hlY2sgZm9yIHBlcnNpc3RlbnQg
ZmluYWwgemlwIGZpbGUgKGkuZS4sIHByZXNlbnQgb3ZlciB0d28gbG9vcHMpCgkJCQkJLy8gd2hpY2ggbWl
naHQgbWVhbiB3ZSBhcmUgc29tZWhvdyBub3Qgc2VlaW5nIHRoZSBwcm9jZXNzIGFzIGZpbmlzaGVkIHNvIH
dlIHNob3VsZAoJCQkJCS8vIHRlcm1pbmF0ZSBpdCBhbmQgY2xvc2UgaXQgLSBhbmQgaW5kaWNhdGUgc29tZ
SBmYWlsdXJlCgkJCQl9CgkJCQkKCQkJCSRleGl0Y29kZSA9ICRzdGF0dXNbICdleGl0Y29kZScgXTsKCQkJ
CQoJCQkJcHJvY19jbG9zZSggJHByb2Nlc3MgKTsKCQkJCQoJCQl9IGVsc2UgewoJCQkKCQkJCS8vIE11c3Q
gY2xlYW4gdXAgdGVtcG9yYXJ5IGRpcmVjdG9yeQoJCQkKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoIC
dkZXRhaWxzJywgX18oJ0ZhaWxlZCB0byBjcmVhdGUgWmlwIHByb2Nlc3M6ICcsJ2l0LWwxMG4tYmFja3VwY
nVkZHknICkgKTsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1JlbW92aW5n
IHRlbXBvcmFyeSBkaXJlY3RvcnkuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCgkJCQlpZiA
oICEoICR0aGlzLT5kZWxldGVfZGlyZWN0b3J5X3JlY3Vyc2l2ZSggJHRlbXBkaXIgKSApICkgewoJCQkJCg
kJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1RlbXBvcmFyeSBkaXJlY3Rvc
nkgY291bGQgbm90IGJlIGRlbGV0ZWQ6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkdGVtcGRpciAp
OwoJCQkJCgkJCQl9CgkJCQkKCQkJCWNoZGlyKCAkd29ya2luZ19kaXIgKTsKCQkJCXJldHVybiBmYWxzZTs
KCQkJCQoJCQl9CgkJCQoJCQkvLyBTZXQgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBiYWNrIHRvIHdoZX
JlIHdlIHdlcmUKCQkJY2hkaXIoICR3b3JraW5nX2RpciApOwoJCQkKCQkJLy8gQ29udmVuaWVuY2UgZm9yI
GhhbmRsaW5nIGRpZmZlcmVudCBzY2FuYXJpb3MKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkKCQkJLy8gTG9n
IGZpbGUgaXMgYWx3YXlzIHByZXNlbnQgLSBlaXRoZXIgY2FwdHVyaW5nIG91dHB1dCBvciBhcyBjb21tYW5
kIGxpbmUgb3B0aW9uCgkJCS8vIEFsd2F5cyBzY2FuIHRoZSBsb2dmaWxlIGZvciB3YXJuaW5ncywgZXRjLi
BhbmQgc2hvdyB3YXJuaW5ncyBldmVuIGlmIHVzZXIgaGFzIGNob3NlbiB0byBpZ25vcmUgdGhlbQoJCQl0c
nkgewoJCQkKCQkJCSRsb2dmaWxlID0gbmV3IFNwbEZpbGVPYmplY3QoICRsb2dmaWxlX25hbWUsICJyYiIg
KTsKCQkJCQoJCQkJd2hpbGUoICEkbG9nZmlsZS0+ZW9mKCkgKSB7CgkJCQkKCQkJCQkkbGluZSA9ICRsb2d
maWxlLT5jdXJyZW50KCk7CgkJCQkJJGlkID0gJGxvZ2ZpbGUtPmtleSgpOyAvLyBVc2UgdGhlIGxpbmUgbn
VtYmVyIGFzIHVuaXF1ZSBrZXkgZm9yIGxhdGVyIHNvcnRpbmcKCQkJCQkkbG9nZmlsZS0+bmV4dCgpOwoJC
QkJCQoJCQkJCWlmICggcHJlZ19tYXRjaCggJy9eXHMqKHppcCB3YXJuaW5nOikvaScsICRsaW5lICkgKSB7
CgkJCQkJCgkJCQkJCS8vIExvb2tpbmcgZm9yIHNwZWNpZmljIHR5cGVzIG9mIHdhcm5pbmcgLSBpbiBwYXJ
0aWN1bGFyIHdhbnQgdGhlIHdhcm5pbmcgdGhhdAoJCQkJCQkvLyBpbmRpY2F0ZXMgYSBmaWxlIGNvdWxkbi
d0IGJlIHJlYWQgYXMgd2Ugd2FudCB0byB0cmVhdCB0aGF0IGFzIGEgInNraXBwZWQiCgkJCQkJCS8vIHdhc
m5pbmcgdGhhdCBpbmRpY2F0ZXMgdGhhdCB6aXAgZmxhZ2dlZCB0aGlzIGFzIGEgcG90ZW50aWFsIHByb2Js
ZW0gYnV0CgkJCQkJCS8vIGNyZWF0ZWQgdGhlIHppcCBmaWxlIGFueXdheSAtIGJ1dCBpdCB3b3VsZCBoYXZ
lIGdlbmVyYXRlZCB0aGUgbm9uLXplcm8gZXhpdAoJCQkJCQkvLyBjb2RlIG9mIDE4IGFuZCB3ZSBrZXkgb2
ZmIHRoYXQgbGF0ZXIuIEFsbCBvdGhlciB3YXJuaW5ncyBhcmUgbm90IGNvbnNpZGVyZWQKCQkJCQkJLy8gc
mVhc29ucyB0byByZXR1cm4gYSBub24temVybyBleGl0IGNvZGUgd2hpbHN0IHN0aWxsIGNyZWF0aW5nIGEg
emlwIGZpbGUgc28KCQkJCQkJLy8gd2UnbGwgZm9sbG93IHRoZSBsZWFkIG9uIHRoYXQgYW5kIG5vdCBoYXZ
lIG90aGVyIHdhcm5pbmcgdHlwZXMgaGFsdCB0aGUgYmFja3VwLgoJCQkJCQkvLyBTbyB3ZSdsbCB0cnkgYW
5kIGxvb2sgZm9yIGEgd2FybmluZyBvdXRwdXQgdGhhdCBsb29rcyBsaWtlIGl0IGlzIGZpbGUgcmVsYXRlZ
C4uLgoJCQkJCQlpZiAoIHByZWdfbWF0Y2goICcvXlxzKih6aXAgd2FybmluZzopXHMqKFteOl0qOilccyoo
LiopL2knLCAkbGluZSwgJG1hdGNoZXMgKSApIHsKCQkJCQkJCgkJCQkJCQkvLyBNYXRjaGVkIHRvIHdoYXQ
gbG9va3MgbGlrZSBhIGZpbGUgcmVsYXRlZCB3YXJuaW5nIHNvIGNoZWNrIHBhcnRpY3VsYXIgY2FzZXMKCQ
kJCQkJCXN3aXRjaCAoIHN0cnRvbG93ZXIoICRtYXRjaGVzWyAyIF0gKSApIHsKCQkJCQkJCQljYXNlICJjb
3VsZCBub3Qgb3BlbiBmb3IgcmVhZGluZzoiOgkJCQkJCQkJCQkKCQkJCQkJCQkJJHppcF93YXJuaW5nc1sg
c2VsZjo6WklQX1dBUk5JTkdfU0tJUFBFRCBdWyAkaWQgXSA9IHRyaW0oICRsaW5lICk7CgkJCQkJCQkJCSR
6aXBfd2FybmluZ3NfY291bnQrKzsKCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJY2FzZSAibmFtZSBub3QgbW
F0Y2hlZDoiOgkJCQkJCQkJCQkKCQkJCQkJCQkJJHppcF9vdGhlclsgc2VsZjo6WklQX09USEVSX0dFTkVSS
UMgXVsgJGlkIF0gPSB0cmltKCAkbGluZSApOwoJCQkJCQkJCQkkemlwX290aGVyX2NvdW50Kys7CgkJCQkJ
CQkJCWJyZWFrOwoJCQkJCQkJCWRlZmF1bHQ6CgkJCQkJCQkJCSR6aXBfd2FybmluZ3NbIHNlbGY6OlpJUF9
XQVJOSU5HX0dFTkVSSUMgXVsgJGlkIF0gPSB0cmltKCAkbGluZSApOwoJCQkJCQkJCQkkemlwX3dhcm5pbm
dzX2NvdW50Kys7CgkJCQkJCQl9CgkJCQkJCQoJCQkJCQl9IGVsc2UgewoJCQkJCQkKCQkJCQkJCS8vIERpZ
G4ndCBtYXRjaCB0byB3aGF0IHdvdWxkIGxvb2sgbGlrZSBhIGZpbGUgcmVsYXRlZCB3YXJuaW5nIHNvIGNv
dW50IGl0IHJlZ2FyZGxlc3MKCQkJCQkJCSR6aXBfd2FybmluZ3NbIHNlbGY6OlpJUF9XQVJOSU5HX0dFTkV
SSUMgXVsgJGlkIF0gPSB0cmltKCAkbGluZSApOwoJCQkJCQkJJHppcF93YXJuaW5nc19jb3VudCsrOwoJCQ
kJCQkJCgkJCQkJCX0KCQkJCQkJCgkJCQkJfSBlbHNlaWYgKCBwcmVnX21hdGNoKCAnL15ccyooemlwIGVyc
m9yOikvaScsICRsaW5lICkgKSB7CgkJCQkJCgkJCQkJCSR6aXBfZXJyb3JzWyAkaWQgXSA9IHRyaW0oICRs
aW5lICk7CgkJCQkJCSR6aXBfZXJyb3JzX2NvdW50Kys7CgkJCQkJCgkJCQkJfSBlbHNlaWYgKCBwcmVnX21
hdGNoKCAnL15ccyooYWRkaW5nOikvaScsICRsaW5lICkgKSB7CgkJCQkJCgkJCQkJCS8vIEN1cnJlbnRseS
Bub3QgcHJvY2Vzc2luZyBhZGRpdGlvbnMgZW50cmllZAoJCQkJCQkvLyR6aXBfYWRkaXRpb25zW10gPSB0c
mltKCAkbGluZSApOwoJCQkJCQkvLyR6aXBfYWRkaXRpb25zX2NvdW50Kys7CgkJCQkJCgkJCQkJfSBlbHNl
aWYgKCBwcmVnX21hdGNoKCAnL15ccyooc2Q6KS9pJywgJGxpbmUgKSApIHsKCQkJCQkKCQkJCQkJJHppcF9
kZWJ1Z1sgJGlkIF0gPSB0cmltKCAkbGluZSApOwoJCQkJCQkkemlwX2RlYnVnX2NvdW50Kys7CgkJCQkJCg
kJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gQ3VycmVudGx5IG5vdCBwcm9jZXNzaW5nIG90aGVyIGVud
HJpZXMKCQkJCQkJLy8kemlwX290aGVyW10gPSB0cmltKCAkbGluZSApOwoJCQkJCQkvLyR6aXBfb3RoZXJf
Y291bnQrKzsKCQkJCQkKCQkJCQl9CgkJCQkJCgkJCQl9CgkJCQkKCQkJCXVuc2V0KCAkbG9nZmlsZSApOwo
JCQkJCgkJCQlAdW5saW5rKCAkbG9nZmlsZV9uYW1lICk7CgkJCQkKCQkJfSBjYXRjaCAoIEV4Y2VwdGlvbi
AkZSApIHsKCQkJCgkJCQkvLyBTb21ldGhpbmcgZmlzaHkgLSB3ZSBzaG91bGQgaGF2ZSBiZWVuIGFibGUgd
G8gb3BlbiB0aGUgbG9nIGZpbGUuLi4KCQkJCSRlcnJvcl9zdHJpbmcgPSAkZS0+Z2V0TWVzc2FnZSgpOwoJ
CQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnTG9nIGZpbGUgY29
1bGQgbm90IGJlIG9wZW5lZCAtIGVycm9yIHJlcG9ydGVkOiAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRkeS
cgKSwgJGVycm9yX3N0cmluZyApICk7CgkJCQkKCQkJfQoJCQkKCQkJLy8gU2V0IGNvbnZlbmllbmNlIGZsY
WdzCQkJCgkJCSRoYXZlX3ppcF93YXJuaW5ncyA9ICggMCA8ICR6aXBfd2FybmluZ3NfY291bnQgKTsKCQkJ
JGhhdmVfemlwX2Vycm9ycyA9ICggMCA8ICR6aXBfZXJyb3JzX2NvdW50ICk7CgkJCSRoYXZlX3ppcF9hZGR
pdGlvbnMgPSAoIDAgPCAkemlwX2FkZGl0aW9uc19jb3VudCApOwoJCQkkaGF2ZV96aXBfZGVidWcgPSAoID
AgPCAkemlwX2RlYnVnX2NvdW50ICk7CgkJCSRoYXZlX3ppcF9vdGhlciA9ICggMCA8ICR6aXBfb3RoZXJfY
291bnQgKTsKCQkJCgkJCS8vIEFsd2F5cyByZXBvcnQgdGhlIGV4aXQgY29kZSByZWdhcmRsZXNzIG9mIHdo
ZXRoZXIgd2UgbWlnaHQgaWdub3JlIGl0IG9yIG5vdAoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV
0YWlscycsIF9fKCdaaXAgcHJvY2VzcyBleGl0IGNvZGU6ICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLi
AkZXhpdGNvZGUgKTsKCQkJCgkJCS8vIEFsd2F5cyByZXBvcnQgdGhlIG51bWJlciBvZiB3YXJuaW5ncyAtI
GV2ZW4ganVzdCB0byBjb25maXJtIHRoYXQgd2UgZGlkbid0IGhhdmUgYW55CgkJCXBiX2JhY2t1cGJ1ZGR5
OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ1ppcCBwcm9jZXNzIHJlcG9ydGVkOiAlMSRzIHd
hcm5pbmclMiRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF93YXJuaW5nc19jb3VudCwgKCAoID
EgPT0gJHppcF93YXJuaW5nc19jb3VudCApID8gJycgOiAncycgKSApICk7CgoJCQkvLyBBbHdheXMgcmVwb
3J0IHdhcm5pbmdzIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB1c2VyIGhhcyBzZWxlY3RlZCB0byBpZ25vcmUg
dGhlbQoJCQlpZiAoIHRydWUgPT09ICRoYXZlX3ppcF93YXJuaW5ncyApIHsKCQkJCgkJCQkkdGhpcy0+bG9
nX3ppcF9yZXBvcnRzKCAkemlwX3dhcm5pbmdzLCBzZWxmOjokX3dhcm5pbmdfZGVzYywgIldBUk5JTkciLC
BzZWxmOjpNQVhfV0FSTklOR19MSU5FU19UT19TSE9XLCBkaXJuYW1lKCBkaXJuYW1lKCAkdGVtcGRpciApI
CkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJ3BiX2JhY2t1cGJ1ZGR5JyAuIERJUkVDVE9SWV9TRVBBUkFU
T1IgLiBzZWxmOjpaSVBfV0FSTklOR1NfRklMRV9OQU1FICk7CgoJCQl9CgkJCQoJCQkvLyBBbHdheXMgcmV
wb3J0IG90aGVyIHJlcG9ydHMgcmVnYXJkbGVzcwoJCQlpZiAoIHRydWUgPT09ICRoYXZlX3ppcF9vdGhlci
ApIHsKCQkJCgkJCQkvLyBPbmx5IHJlcG9ydCBudW1iZXIgb2YgaW5mb3JtYXRpb25hbHMgaWYgd2UgaGF2Z
SBhbnkgYXMgdGhleSBhcmUgbm90IHRoYXQgaW1wb3J0YW50CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVz
KCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdaaXAgcHJvY2VzcyByZXBvcnRlZDogJTEkcyBpbmZvcm1hdGl
vbiUyJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX290aGVyX2NvdW50LCAoICggMSA9PSAkem
lwX290aGVyX2NvdW50ICkgPyAnYWwnIDogJ2FscycgKSApICk7CgoJCQkJJHRoaXMtPmxvZ196aXBfcmVwb
3J0cyggJHppcF9vdGhlciwgc2VsZjo6JF9vdGhlcl9kZXNjLCAiSU5GT1JNQVRJT04iLCBzZWxmOjpNQVhf
T1RIRVJfTElORVNfVE9fU0hPVywgZGlybmFtZSggZGlybmFtZSggJHRlbXBkaXIgKSApIC4gRElSRUNUT1J
ZX1NFUEFSQVRPUiAuICdwYl9iYWNrdXBidWRkeScgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gc2VsZjo6Wk
lQX09USEVSU19GSUxFX05BTUUgKTsKCgkJCX0KC
QkJCgkJCQkvLyBTZWUgaWYgd2UgY2FuIGZpZ3VyZSBvdXQgd2hhdCBoYXBwZW5lZCAtIG5vdGUgdGhhdCAk
ZXhpdGNvZGUgY291bGQgYmUgbm9uLXplcm8gZm9yIGFjdGlvbmFibGUgd2FybmluZyhzKSBvciBlcnJvcgo
JCQkJLy8gaWYgKCAobm8gemlwIGZpbGUpIG9yIChmYXRhbCBleGl0IGNvZGUpIG9yIChub3QgaWdub3Jpbm
cgd2FybmFibGUgZXhpdCBjb2RlKSApCgkJCQlpZiAoICggISBAZmlsZV9leGlzdHMoICR0ZW1wX3ppcCApI
CkgfHwKCQkJCSAoICggMCAhPSAkZXhpdGNvZGUgKSAmJiAoIDE4ICE9ICRleGl0Y29kZSApICkgfHwKCQkJ
CSAoICggMTggPT0gJGV4aXRjb2RlICkgJiYgISR0aGlzLT5nZXRfaWdub3JlX3dhcm5pbmdzKCkgKSApIHs
KCQkJCQoJCQkJLy8gSWYgd2UgaGF2ZSBhbnkgemlwIGVycm9ycyByZXBvcnRlZCBzaG93IHRoZW0gcmVnYX
JkbGVzcwoJCQkJaWYgKCB0cnVlID09PSAkaGF2ZV96aXBfZXJyb3JzICkgewoJCQkJCgkJCQkJcGJfYmFja
3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnWmlwIHByb2Nlc3MgcmVwb3J0ZWQ6
ICUxJHMgZXJyb3JzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9lcnJvcnNfY291bnQgKSApOwo
JCQkJCQoJCQkJCWZvcmVhY2ggKCAkemlwX2Vycm9ycyBhcyAkbGluZSApIHsKCQkJCQoJCQkJCQlwYl9iYW
NrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCAnWmlwIHByb2Nlc3MgcmVwb3J0ZWQ6ICcsJ2l0L
WwxMG4tYmFja3VwYnVkZHknICkgLiAkbGluZSApOwoJCQkJCgkJCQkJfQoJCQkJCQoJCQkJfQoKCQkJCS8v
IFJlcG9ydCB3aGV0aGVyIG9yIG5vdCB0aGUgemlwIGZpbGUgd2FzIGNyZWF0ZWQgKHdoZXRoZXIgdGhhdCB
iZSBpbiB0aGUgZmluYWwgb3IgdGVtcG9yYXJ5IGxvY2F0aW9uKQkJCQoJCQkJaWYgKCAhIEBmaWxlX2V4aX
N0cyggJHRlbXBfemlwICkgKSB7CgkJCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlsc
ycsIF9fKCAnWmlwIEFyY2hpdmUgZmlsZSBub3QgY3JlYXRlZCAtIGNoZWNrIHByb2Nlc3MgZXhpdCBjb2Rl
LicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkKCQkJCX0gZWxzZSB7CgkJCQkJCgkJCQkJcGJ
fYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ1ppcCBBcmNoaXZlIGZpbGUgY3JlYXRlZC
BidXQgd2l0aCBlcnJvcnMvYWN0aW9uYWJsZS13YXJuaW5ncyBzbyB3aWxsIGJlIGRlbGV0ZWQgLSBjaGVja
yBwcm9jZXNzIGV4aXQgY29kZSBhbmQgd2FybmluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoK
CQkJCX0KCQkJCQoJCQkJLy8gVGhlIG9wZXJhdGlvbiBoYXMgZmFpbGVkIG9uZSB3YXkgb3IgYW5vdGhlci4
gTm90ZSB0aGF0IGFzIHRoZSB1c2VyIGRpZG4ndCBjaG9vc2UgdG8gaWdub3JlIGVycm9ycyB0aGUgemlwIG
ZpbGUKCQkJCS8vIGlzIGFsd2F5cyBjcmVhdGVkIGluIGEgdGVtcG9yYXJ5IGxvY2F0aW9uIGFuZCB0aGVuI
G9ubHkgbW92ZWQgdG8gZmluYWwgbG9jYXRpb24gb24gc3VjY2VzcyB3aXRob3V0IGVycm9yIG9yIHdhcm5p
bmdzLgoJCQkJLy8gVGhlcmVmb3JlIGlmIHRoZXJlIGlzIGEgemlwIGZpbGUgKHByb2R1Y2VkIGJ1dCB3aXR
oIHdhcm5pbmdzKSBpdCB3aWxsIG5vdCBiZSB2aXNpYmxlIGFuZCB3aWxsIGJlIGRlbGV0ZWQgd2hlbiB0aG
UKCQkJCS8vIHRlbXBvcmFyeSBkaXJlY3RvcnkgaXMgZGVsZXRlZCBiZWxvdy4KCQkJCQoJCQkJJHJlc3Vsd
CA9IGZhbHNlOwoJCQkJCgkJCX0gZWxzZSB7CgkJCQoJCQkJLy8gR290IGZpbGUgd2l0aCBubyBlcnJvciBv
ciB3YXJuaW5ncyBfb3JfIHdpdGggd2FybmluZ3MgdGhhdCB0aGUgdXNlciBoYXMgY2hvc2VuIHRvIGlnbm9
yZQoJCQkJaWYgKCBmYWxzZSA9PT0gJHRoaXMtPmdldF9pZ25vcmVfd2FybmluZ3MoKSApIHsKCQkJCQoJCQ
kJCS8vIEJlY2F1c2Ugbm90IGlnbm9yaW5nIHdhcm5pbmdzIHRoZSB6aXAgYXJjaGl2ZSB3YXMgYnVpbHQga
W4gdGVtcG9yYXJ5IGxvY2F0aW9uIHNvIHdlIG5lZWQgdG8gbW92ZSBpdAoJCQkJCXBiX2JhY2t1cGJ1ZGR5
OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ01vdmluZyBaaXAgQXJjaGl2ZSBmaWxlIHRvIGxvY2FsIGFyY2h
pdmUgZGlyZWN0b3J5LicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQoJCQkJCS8vIE1ha2Ugc3
VyZSBubyBzdGFsZSBmaWxlIGluZm9ybWF0aW9uCgkJCQkJY2xlYXJzdGF0Y2FjaGUoKTsKCQkJCQkKCQkJC
QlAcmVuYW1lKCAkdGVtcF96aXAsICR6aXAgKTsKCQkJCQkKCQkJCQlpZiAoIEBmaWxlX2V4aXN0cyggJHpp
cCApICkgewoJCQkJCQoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaaXA
gQXJjaGl2ZSBmaWxlIG1vdmVkIHRvIGxvY2FsIGFyY2hpdmUgZGlyZWN0b3J5LicsJ2l0LWwxMG4tYmFja3
VwYnVkZHknICkgKTsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCBfXyggJ1ppc
CBBcmNoaXZlIGZpbGUgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgd2l0aCBubyBlcnJvcnMgb3IgYWN0aW9uYWJs
ZSB3YXJuaW5ncy4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCQoJCQkJCQkkdGhpcy0+bG9
nX2FyY2hpdmVfZmlsZV9zdGF0cyggJHppcCApOwoJCQkJCQkJCgkJCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQ
kJCQkKCQkJCQl9IGVsc2UgewoJCQkJCQoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlsc
ycsIF9fKCdaaXAgQXJjaGl2ZSBmaWxlIGNvdWxkIG5vdCBiZSBtb3ZlZCB0byBsb2NhbCBhcmNoaXZlIGRp
cmVjdG9yeS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQk
JCQkJCgkJCQkJfQoJCQkJCQkKCQkJCX0gZWxzZSB7CgkJCQkKCQkJCQkvLyBXYXJuaW5ncyB3ZXJlIGJlaW
5nIGlnbm9yZWQgc28gYnVpbHQgaW4gZmluYWwgbG9jYXRpb24gc28gbm8gbmVlZCB0byBtb3ZlIGl0CgkJC
QkJaWYgKCBAZmlsZV9leGlzdHMoICR6aXAgKSApIHsKCQkJCQkKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0
YXR1cyggJ21lc3NhZ2UnLCBfXyggJ1ppcCBBcmNoaXZlIGZpbGUgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgd2l
0aCBubyBlcnJvcnMgKGFueSBhY3Rpb25hYmxlIHdhcm5pbmdzIGlnbm9yZWQgYnkgdXNlciBzZXR0aW5ncy
kuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQkKCQkJCQkJJHRoaXMtPmxvZ19hcmNoaXZlX
2ZpbGVfc3RhdHMoICR6aXAgKTsKCQkJCQkJCQoJCQkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQkJCgkJCQkJ
fSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gT2RkIGNvbmRpdGlvbiAtIGZpbGUgc2hvdWxkIGJlIHByZXNlbnQ
gYnV0IGFwcGFyZW50bHkgbm90PwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF
9fKCdaaXAgQXJjaGl2ZSBmaWxlIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiBsb2NhbCBhcmNoaXZlIGRpcmVjd
G9yeS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkJ
CgkJCQkJfQoJCQkJCgkJCQl9CgkJCQkKCQkJfQkJCQoKCQkJLy8gQ2xlYW51cCB0aGUgdGVtcG9yYXJ5IGR
pcmVjdG9yeSB0aGF0IHdpbGwgaGF2ZSBhbGwgZGV0cml0dXMgYW5kIG1heWJlIGluY29tcGxldGUgemlwIG
ZpbGUJCQkKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnUmVtb3ZpbmcgdGVtc
G9yYXJ5IGRpcmVjdG9yeS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQoJCQlpZiAoICEoICR0
aGlzLT5kZWxldGVfZGlyZWN0b3J5X3JlY3Vyc2l2ZSggJHRlbXBkaXIgKSApICkgewoJCQkKCQkJCQlwYl9
iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdUZW1wb3JhcnkgZGlyZWN0b3J5IGNvdWxkIG
5vdCBiZSBkZWxldGVkOiAnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJHRlbXBkaXIgKTsKCQkJCgkJC
X0KCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkJCQkJCQkJCQkKCQl9CgkJCgkJLyoqCgkJICoJZXh0cmFj
dCgpCgkJICoKCQkgKglFeHRyYWN0cyB0aGUgY29udGVudHMgb2YgYSB6aXAgZmlsZSB0byB0aGUgc3BlY2l
maWVkIGRpcmVjdG9yeSB1c2luZyB0aGUgYmVzdCB1bnppcCBtZXRob2RzIHBvc3NpYmxlLgoJCSAqCUlmIG
5vIHNwZWNpZmljIGl0ZW1zIGdpdmVuIHRvIGV4dHJhY3QgdGhlbiBpdCdzIGEgY29tcGxldGUgdW56aXAKC
QkgKgoJCSAqCUBwYXJhbQlzdHJpbmcJCSR6aXBfZmlsZQkJCQkJRnVsbCBwYXRoICYgZmlsZW5hbWUgb2Yg
WklQIGZpbGUgdG8gZXh0cmFjdCBmcm9tLgoJCSAqCUBwYXJhbQlzdHJpbmcJCSRkZXN0aW5hdGlvbl9kaXJ
lY3RvcnkJCUZ1bGwgZGlyZWN0b3J5IHBhdGggdG8gZXh0cmFjdCBpbnRvLgoJCSAqCUBwYXJhbQlhcnJheQ
kJJGl0ZW1zCQkJCQkJTWFwcGluZyBvZiB3aGF0IHRvIGV4dHJhY3QgYW5kIHRvIHdoYXQKCQkgKglAcmV0d
XJuCWJvb2wJCQkJCQkJCQl0cnVlIG9uIHN1Y2Nlc3MgKGFsbCBleHRyYWN0aW9ucyBzdWNjZXNzZnVsKSwg
ZmFsc2Ugb3RoZXJ3aXNlCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGV4dHJhY3QoICR6aXBfZmlsZSwgJGR
lc3RpbmF0aW9uX2RpcmVjdG9yeSA9ICcnLCAkaXRlbXMgPSBhcnJheSgpICkgewoJCQoJCQkkcmVzdWx0ID
0gZmFsc2U7CgkJCgkJCXN3aXRjaCAoICR0aGlzLT5nZXRfb3NfdHlwZSgpICkgewoJCQkJY2FzZSBzZWxmO
jpPU19UWVBFX05JWDoKCQkJCQlpZiAoIGVtcHR5KCAkaXRlbXMgKSApIHsKCQkJCQkJJHJlc3VsdCA9ICR0
aGlzLT5leHRyYWN0X2dlbmVyaWNfZnVsbCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ICk
7CgkJCQkJfSBlbHNlIHsKCQkJCQkJJHJlc3VsdCA9ICR0aGlzLT5leHRyYWN0X2dlbmVyaWNfc2VsZWN0ZW
QoICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgJGl0ZW1zICk7CQkJCQkKCQkJCQl9CgkJC
QkJYnJlYWs7CgkJCQljYXNlIHNlbGY6Ok9TX1RZUEVfV0lOOgoJCQkJCWlmICggZW1wdHkoICRpdGVtcyAp
ICkgewoJCQkJCQkkcmVzdWx0ID0gJHRoaXMtPmV4dHJhY3RfZ2VuZXJpY19mdWxsKCAkemlwX2ZpbGUsICR
kZXN0aW5hdGlvbl9kaXJlY3RvcnkgKTsKCQkJCQl9IGVsc2UgewoJCQkJCQkkcmVzdWx0ID0gJHRoaXMtPm
V4dHJhY3RfZ2VuZXJpY19zZWxlY3RlZCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5LCAka
XRlbXMgKTsJCQkJCQoJCQkJCX0KCQkJCQlicmVhazsKCQkJCWRlZmF1bHQ6CgkJCQkJJHJlc3VsdCA9IGZh
bHNlOwoJCQl9CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoKCQkvKioKCQkgKglleHRyYWN0KCk
KCQkgKgoJCSAqCUV4dHJhY3RzIHRoZSBjb250ZW50cyBvZiBhIHppcCBmaWxlIHRvIHRoZSBzcGVjaWZpZW
QgZGlyZWN0b3J5IHVzaW5nIHRoZSBiZXN0IHVuemlwIG1ldGhvZHMgcG9zc2libGUuCgkJICoKCQkgKglAc
GFyYW0Jc3RyaW5nCQkkemlwX2ZpbGUJCQkJCUZ1bGwgcGF0aCAmIGZpbGVuYW1lIG9mIFpJUCBmaWxlIHRv
IGV4dHJhY3QgZnJvbS4KCQkgKglAcGFyYW0Jc3RyaW5nCQkkZGVzdGluYXRpb25fZGlyZWN0b3J5CQlGdWx
sIGRpcmVjdG9yeSBwYXRoIHRvIGV4dHJhY3QgaW50by4KCQkgKglAcmV0dXJuCWJvb2wJCQkJCQkJCQl0cn
VlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90aGVyd2lzZQoJCSAqLwoJCXByb3RlY3RlZCBmdW5jdGlvbiBleHRyY
WN0X2dlbmVyaWNfZnVsbCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gJycpIHsKCQkK
CQkJLy8gVGhpcyBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGJ1dCBqdXN0IGluIGNhc2UgcmV0dXJuIGZhbHN
lIHNpbGVudGx5CgkJCS8vcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnVGhlICcsJ2
l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkdGhpcy0+Z2V0X21ldGhvZF90YWcoKSAuIF9fKCcgbWV0aG9kI
GlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciB1bmFyY2hpdmluZy4nLCdpdC1sMTBuLWJhY2t1cGJ1
ZGR5JyApICk7CgkJCXJldHVybiBmYWxzZTsKCQkJCgkJfQoKCQkvKioKCQkgKglleHRyYWN0X2dlbmVyaWN
fc2VsZWN0ZWQoKQoJCSAqCgkJICoJRXh0cmFjdHMgdGhlIGNvbnRlbnRzIG9mIGEgemlwIGZpbGUgdG8gdG
hlIHNwZWNpZmllZCBkaXJlY3RvcnkgdXNpbmcgdGhlIGJlc3QgdW56aXAgbWV0aG9kcyBwb3NzaWJsZS4KC
QkgKgoJCSAqCUBwYXJhbQlzdHJpbmcJCSR6aXBfZmlsZQkJCQkJRnVsbCBwYXRoICYgZmlsZW5hbWUgb2Yg
WklQIGZpbGUgdG8gZXh0cmFjdCBmcm9tLgoJCSAqCUBwYXJhbQlzdHJpbmcJCSRkZXN0aW5hdGlvbl9kaXJ
lY3RvcnkJCUZ1bGwgZGlyZWN0b3J5IHBhdGggdG8gZXh0cmFjdCBpbnRvLgoJCSAqCUBwYXJhbQlhcnJheQ
kJJGl0ZW1zCQkJCQkJTWFwcGluZyBvZiB3aGF0IHRvIGV4dHJhY3QgYW5kIHRvIHdoYXQKCQkgKglAcmV0d
XJuCWJvb2wJCQkJCQkJCQl0cnVlIG9uIHN1Y2Nlc3MgKGFsbCBleHRyYWN0aW9ucyBzdWNjZXNzZnVsKSwg
ZmFsc2Ugb3RoZXJ3aXNlCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGV4dHJhY3RfZ2VuZXJpY19zZWx
lY3RlZCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ID0gJycsICRpdGVtcyApIHsKCQkKCQ
kJLy8gU2hvdWxkIG5ldmVyIGdldCBoZXJlCgkJCXJldHVybiBmYWxzZTsKCQkJCgkJfQoJCQoJCS8qKgoJC
SAqCWZpbGVfZXhpc3RzKCkKCQkgKgkKCQkgKglUZXN0cyB3aGV0aGVyIGEgZmlsZSAod2l0aCBwYXRoKSBl
eGlzdHMgaW4gdGhlIGdpdmVuIHppcCBmaWxlCgkJICoJSWYgbGVhdmVfb3BlbiBpcyB0cnVlIHRoZW4gdGh
lIHppcCBvYmplY3Qgd2lsbCBiZSBsZWZ0IG9wZW4gZm9yIGZhc3RlciBjaGVja2luZyBmb3Igc3Vic2VxdW
VudCBmaWxlcyB3aXRoaW4gdGhpcyB6aXAKCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkemlwX2ZpbGUJC
VRoZSB6aXAgZmlsZSB0byBjaGVjawoJCSAqCUBwYXJhbQkJc3RyaW5nCSRsb2NhdGVfZmlsZQlUaGUgZmls
ZSB0byB0ZXN0IGZvcgoJCSAqCUBwYXJhbQkJYm9vbAkkbGVhdmVfb3BlbgkJT3B0aW9uYWw6IFRydWUgaWY
gdGhlIHppcCBmaWxlIHNob3VsZCBiZSBsZWZ0IG9wZW4KCQkgKglAcmV0dXJuCQlib29sL2FycmF5CQkJCV
RydWUgaWYgdGhlIGZpbGUgaXMgZm91bmQgaW4gdGhlIHppcCBhbmQgZmFsc2UgaWYgbm90LCBhcnJheSBmb
3Igb3RoZXIgcHJvYmxlbQoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGZpbGVfZXhpc3RzKCAkemlw
X2ZpbGUsICRsb2NhdGVfZmlsZSwgJGxlYXZlX29wZW4gPSBmYWxzZSApIHsKCQkKCQkJLy8gVGhpcyBzaG9
1bGQgbmV2ZXIgYmUgY2FsbGVkIGJ1dCBqdXN0IGluIGNhc2UgcmV0dXJuIGZhbHNlIHNpbGVudGx5CgkJCS
8vcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnVGhlICcsJ2l0LWwxMG4tYmFja3VwY
nVkZHknICkgLiAkdGhpcy0+Z2V0X21ldGhvZF90
YWcoKSAuIF9fKCcgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciBhcmNoaXZlIGZpbGU
gY2hlY2tpbmcuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQlyZXR1cm4gYXJyYXkoIDEsICJNZX
Rob2QgZG9lcyBub3Qgc3VwcG9ydCBhY3Rpb24iICk7CgoJCX0KCQkKCQkvKglnZXRfZmlsZV9saXN0KCkKC
QkgKgkKCQkgKglHZXQgYW4gYXJyYXkgb2YgYWxsIGZpbGVzIGluIGEgemlwIGZpbGUgd2l0aCBzb21lIGZp
bGUgcHJvcGVydGllcy4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJJHppcF9maWxlCVRoZSBmaWxlIHR
vIGxpc3QgdGhlIGNvbnRlbnQgb2YKCQkgKglAcmV0dXJuCQlib29sfGFycmF5CQkJCWZhbHNlIG9uIGZhaW
x1cmUsIG90aGVyd2lzZSBhcnJheSBvZiBmaWxlIHByb3BlcnRpZXMgKG1heSBiZSBlbXB0eSkKCQkgKi8KC
QlwdWJsaWMgZnVuY3Rpb24gZ2V0X2ZpbGVfbGlzdCggJHppcF9maWxlICkgewoJCQoJCQkvLyBUaGlzIHNo
b3VsZCBuZXZlciBiZSBjYWxsZWQgYnV0IGp1c3QgaW4gY2FzZSByZXR1cm4gZmFsc2Ugc2lsZW50bHkKCQk
JLy9wYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdUaGUgJywnaXQtbDEwbi1iYWNrdX
BidWRkeScgKSAuICR0aGlzLT5nZXRfbWV0aG9kX3RhZygpIC4gX18oJyBtZXRob2QgaXMgbm90IGN1cnJlb
nRseSBzdXBwb3J0ZWQgZm9yIGFyY2hpdmUgZmlsZSBsaXN0aW5nLicsJ2l0LWwxMG4tYmFja3VwYnVkZHkn
ICkgKTsKCQkJcmV0dXJuIGZhbHNlOwoKCQl9CgkJCgkJLyoJc2V0X2NvbW1lbnQoKQoJCSAqCQoJCSAqCVJ
ldHJpZXZlIGFyY2hpdmUgY29tbWVudC4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJCSR6aXBfZmlsZQ
kJRmlsZW5hbWUgb2YgYXJjaGl2ZSB0byBzZXQgY29tbWVudCBvbi4KCQkgKglAcGFyYW0JCXN0cmluZwkJC
SRjb21tZW50CQlDb21tZW50IHRvIGFwcGx5IHRvIGFyY2hpdmUuCgkJICoJQHJldHVybgkJYm9vbHxzdHJp
bmcJCQkJCQl0cnVlIG9uIHN1Y2Nlc3MsIGVycm9yIG1lc3NhZ2Ugb3RoZXJ3aXNlLgoJCSAqLwoJCXB1Ymx
pYyBmdW5jdGlvbiBzZXRfY29tbWVudCggJHppcF9maWxlLCAkY29tbWVudCApIHsKCQkKCQkJLy8gVGhpcy
BzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGJ1dCBqdXN0IGluIGNhc2UgcmV0dXJuIGZhbHNlIHNpbGVudGx5C
gkJCS8vcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnVGhlICcsJ2l0LWwxMG4tYmFj
a3VwYnVkZHknICkgLiAkdGhpcy0+Z2V0X21ldGhvZF90YWcoKSAuIF9fKCcgbWV0aG9kIGlzIG5vdCBjdXJ
yZW50bHkgc3VwcG9ydGVkIGZvciBhcmNoaXZlIGNvbW1lbnQgc2V0dGluZy4nLCdpdC1sMTBuLWJhY2t1cG
J1ZGR5JyApICk7CgkJCXJldHVybiAiTWV0aG9kIGRvZXMgbm90IHN1cHBvcnQgYWN0aW9uIjsKCgkJfQoKC
QkvKglnZXRfY29tbWVudCgpCgkJICoJCgkJICoJUmV0cmlldmUgYXJjaGl2ZSBjb21tZW50LgoJCSAqCQoJ
CSAqCUBwYXJhbQkJc3RyaW5nCQkkemlwX2ZpbGUJCUZpbGVuYW1lIG9mIGFyY2hpdmUgdG8gcmV0cmlldmU
gY29tbWVudCBmcm9tLgoJCSAqCUByZXR1cm4JCWJvb2x8c3RyaW5nCQkJCQlmYWxzZSBvbiBmYWlsdXJlLC
BaaXAgY29tbWVudCBvdGhlcndpc2UuCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGdldF9jb21tZW50KCAke
mlwX2ZpbGUgKSB7CgkJCgkJCS8vIFRoaXMgc2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBidXQganVzdCBpbiBj
YXNlIHJldHVybiBmYWxzZSBzaWxlbnRseQoJCQkvL3BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWx
zJywgX18oJ1RoZSAnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJHRoaXMtPmdldF9tZXRob2RfdGFnKC
kgLiBfXygnIG1ldGhvZCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBmb3IgYXJjaGl2ZSBjb21tZW50I
HJldHJpZXZhbC4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCXJldHVybiBmYWxzZTsKCgkJfQoJ
CQoJfSAvLyBlbmQgcGx1Z2luYnVkZHlfemJ6aXBwcm9jIGNsYXNzLgkKCQp9Cj8+Cg==
###PACKDATA,FILE_END,/lib/zipbuddy/zbzipproc.php,importbuddy/lib/zipbuddy/zbzipproc
.php
###PACKDATA,FILE_START,/lib/zipbuddy/zbzipziparchive.php,importbuddy/lib/zipbuddy/z
bzipziparchive.php
PD9waHAKLyoqCiAqCXBsdWdpbmJ1ZGR5X3piemlwemlwYXJjaGl2ZSBDbGFzcwogKgogKiAgRXh0ZW5kcyB
0aGUgemlwIGNhcGFiaWxpdHkgY29yZSBjbGFzcyB3aXRoIHByb2Mgc3BlY2lmaWMgY2FwYWJpbGl0eQogKg
kKICoJVmVyc2lvbjogMS4wLjAKICoJQXV0aG9yOgogKglBdXRob3IgVVJJOgogKgogKglAcGFyYW0JCSRwY
XJlbnQJCW9iamVjdAkJT3B0aW9uYWwgcGFyZW50IG9iamVjdCB3aGljaCBjYW4gcHJvdmlkZSBmdW5jdGlv
bnMgZm9yIHJlcG9ydGluZywgZXRjLgogKglAcmV0dXJuCQludWxsCiAqCiAqLwppZiAoICFjbGFzc19leGl
zdHMoICJwbHVnaW5idWRkeV96YnppcHppcGFyY2hpdmUiICkgKSB7CgoJLyoqCgkgKglwbHVnaW5idWRkeV
9aaXBBcmNoaXZlIENsYXNzCgkgKgoJICoJV3JhcHBlciBmb3IgWmlwQXJjaGl2ZSB0byBoYW5kbGUgZXJyb
3Igc2l0dWF0aW9ucyBhbmQgcHJvdmlkZSBhZGRpdGlvbmFsIGZ1bmN0aW9ucwoJICoKCSAqCUBwYXJhbQlu
b25lCgkgKglAcmV0dXJuCW51bGwKCSAqCgkgKi8KCWNsYXNzIHBsdWdpbmJ1ZGR5X1ppcEFyY2hpdmUgewo
KICAgICAgICAvKioKICAgICAgICAgKiBUaGUgY3JlYXRlZCBaaXBBcmNoaXZlIG9iamVjdCBpZiBpdCBjYW
4gYmUgY3JlYXRlZAogICAgICAgICAqIAogICAgICAgICAqIEB2YXIgJF96YSAJb2JqZWN0CiAgICAgICAgI
CovCgkJcHJpdmF0ZSAkX3phID0gTlVMTDsKCQkKCQkvKioKCQkgKglfX2NvbnN0cnVjdCgpCgkJICoJCgkJ
ICoJRGVmYXVsdCBjb25zdHJ1Y3Rvci4KCQkgKglUT0RPOiBDb25zaWRlciBoYXZpbmcgYSAic3VwcHJlc3M
gd2FybmluZ3MiIHBhcmFtZXRlciB0byBkZXRlcm1pbmUgd2hldGhlciBtZXRob2RzCgkJICoJc2hvdWxkIG
JlIGludm9rZWQgd2l0aCB3YXJuaW5ncyBzdXBwcmVzc2VkIG9yIG5vdC4gRm9yIGlzX2F2YWlsYWJsZSgpI
HVzYWdlIHdlIHdvdWxkCgkJICoJd2FudCB0byBzbyBhcyBub3QgdG8gcG90ZW50aWFsbHkgZmxvb2QgdGhl
IFBIUCBlcnJvciBsb2cuIEZvciBvdGhlciBmdW5jdGlvbnMgdGhhdAoJCSAqCWFyZSBub3QgY2FsbGVkIGZ
yZXF1ZW50bHkgd2UgbWlnaHQgbm90IHdhbnQgdG8gc3VwcHJlc3MgdGhlIHdhcm5pbmdzLgoJCSAqCQoJCS
AqCUBwYXJhbQkJbm9uZQoJCSAqCUByZXR1cm4JCW51bGwKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvb
iBfX2NvbnN0cnVjdCgpIHsKCQkJCgkJCWlmICggY2xhc3NfZXhpc3RzKCAnWmlwQXJjaGl2ZScsIGZhbHNl
ICkgKSB7CgkJCQoJCQkJLy8gSXQncyBhdmFpbGFibGUgc28gY3JlYXRlIHRoZSBwcml2YXRlIGluc3RhbmN
lCgkJCQkkdGhpcy0+X3phID0gbmV3IFppcEFyY2hpdmUoKTsKCQkJCQoJCQl9IGVsc2UgewoJCQkKCQkJCS
8vIE5vdCBhdmFpbGFibGUgc28gdGhyb3cgdGhlIGV4Y2VwdGlvbiBmb3IgdGhlIGNhbGxlciB0byBoYW5kb
GUKCQkJCXRocm93IG5ldyBFeGNlcHRpb24oICdaaXBBcmNoaXZlIGNsYXNzIGRvZXMgbm90IGV4aXN0Licg
KTsKCQkJCgkJCX0KCQkJCgkJCXJldHVybjsKCQkKCQl9CgkJCgkJLyoqCgkJICoJX19kZXN0cnVjdCgpCgk
JICoJCgkJICoJRGVmYXVsdCBkZXN0cnVjdG9yLgoJCSAqCQoJCSAqCUByZXR1cm4JCW51bGwKCQkgKgoJCS
AqLwoJCXB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkgewoJCQoJCQlpZiAoIE5VTEwgIT0gJHRoaXMtP
l96YSApIHsgdW5zZXQgKCAkdGhpcy0+X3phICk7IH0KCQkJCgkJCXJldHVybjsKCQkKCQl9CgkJCgkJLyoq
CgkJICoJX19jYWxsKCkKCQkgKgkKCQkgKglNYWdpYyBtZXRob2QgaW50ZXJjZXB0aW5nIGNhbGxzIHRvIHV
ua25vd24gbWV0aG9kcy4gVGhpcyBhbGxvd3MgdXMgdG8gaW50ZXJjZXB0CgkJICoJYWxsIG1ldGhvZCBjYW
xscyBhbmQgYWRkIGFkZGl0aW9uYWwgcHJvY2Vzc2luZwoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCSRtZ
XRob2QJCVRoZSBuYW1lIG9mIHRoZSBpbnRlcmNlcHRlZCBtZXRob2QKCQkgKglAcGFyYW0JCWFycmF5CSRh
cmd1bWVudHMJQXJyYXkgb2YgdGhlIGFyZ3VtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIG1ldGhvZCBjYWx
sCgkJICoJQHJldHVybgkJbWl4ZWQJJHJlc3VsdAkJV2hhdGV2ZXIgdGhlIGludm9rZWQgd3JhcHBlciBtZX
Rob2QgY2FsbCByZXR1cm5zCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCAkbWV0aG9kL
CAkYXJndW1lbnRzICkgewoJCQoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCgkJCSRyZXN1bHQgPSBAY2FsbF91
c2VyX2Z1bmNfYXJyYXkoIGFycmF5KCAkdGhpcy0+X3phLCAkbWV0aG9kICksICRhcmd1bWVudHMgKTsKCQk
JCgkJCXJldHVybiAkcmVzdWx0OwoJCQoJCX0KCQkKCQkvKioKCQkgKglfX2dldCgpCgkJICoJCgkJICoJTW
FnaWMgbWV0aG9kIGludGVyY2VwdGluZyBjYWxscyB0byB1bmtub3duIHByb3BlcnRpZXMuIFRoaXMgbWVhb
nMgd2UgaGF2ZSB0bwoJCSAqCXByb3ZpZGUgdGhlIHByb3BlcnRpZXMgb2YgdGhlIHdyYXBwZWQgb2JqZWN0
IGJ1dCB0aGF0J3Mgb2sgYXMgdGhlcmUgYXJlbid0IG1hbnkuCgkJICoJTm90ZTogTWF5YmUgd2UgY2FuIGd
ldCB0aGUgb2JqZWN0IHByb3BlcnRpZXMgYW5kIGF1dG9tYXRlIHRoaXM/CgkJICoJCgkJICoJQHBhcmFtCQ
lzdHJpbmcJJG5hbWUJCVRoZSBuYW1lIG9mIHRoZSBwcm9wZXJ0eQoJCSAqCUByZXR1cm4JCW1peGVkCSRyZ
XN1bHQJCVdoYXRldmVyIHRoZSB3cmFwcGVkIG9iamVjdCBwcm9wZXJ0eSByZXR1cm5zCgkJICoKCQkgKi8K
CQlwdWJsaWMgZnVuY3Rpb24gX19nZXQoICRuYW1lICkgewoJCQoJCQlzd2l0Y2ggKCAkbmFtZSApIHsKCQk
JCgkJCQljYXNlICJjb21tZW50IjoKCQkJCQoJCQkJCSRyZXN1bHQgPSAkdGhpcy0+X3phLT5jb21tZW50Ow
oJCQkJCWJyZWFrOwoJCQkJCgkJCQljYXNlICJudW1GaWxlcyI6CgkJCQkKCQkJCQkkcmVzdWx0ID0gJHRoa
XMtPl96YS0+bnVtRmlsZXM7CgkJCQkJYnJlYWs7CgkJCQkKCQkJCWNhc2UgImZpbGVuYW1lIjoKCQkJCQoJ
CQkJCSRyZXN1bHQgPSAkdGhpcy0+X3phLT5maWxlbmFtZTsKCQkJCQlicmVhazsKCQkJCQoJCQkJY2FzZSA
ic3RhdHVzIjoKCQkJCQoJCQkJCSRyZXN1bHQgPSAkdGhpcy0+X3phLT5zdGF0dXM7CgkJCQkJYnJlYWs7Cg
kJCQkJCgkJCQljYXNlICJzdGF0dXNTeXMiOgoJCQkJCgkJCQkJJHJlc3VsdCA9ICR0aGlzLT5femEtPnN0Y
XR1c1N5czsKCQkJCQlicmVhazsKCQkJCQkKCQkJCWRlZmF1bHQ6CgkJCQkKCQkJCQkvLyBIbW0sIG5vdCBx
dWl0ZSBzdXJlIHdoYXQgd2Ugc2hvdWxkIHJldHVybiBoZXJlLi4uCgkJCQkJJHJlc3VsdCA9IGZhbHNlOwo
JCgkJCX0KCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQoJCX0KCQoJCS8qKgoJCSAqCWVycm9ySW5mbygpCg
kJICoJCgkJICoJVHJhbnNsYXRlIGEgWmlwQXJjaGl2ZSBlcnJvciBjb2RlIGludG8gYW4gaW5mb3JtYXRpd
mUgc3RyaW5nIGRlc2NyaXB0aW9uCgkJICoJYW5kIHJldHVybnMgdGhlIHN0cmluZy4gQW4gZXJyb3IgbnVt
YmVyIGNhbiBiZSBwYXNzZWQgaW4sIG90aGVyd2lzZSB3aWxsCgkJICoJZ2V0IHRoZSBzdGF0dXMgcHJvcGV
ydHkgYW5kIHVzZSB0aGF0IChpZiBub3QgaW5kaWNhdGluZyBubyBlcnJvcikgb3IgdGhlCgkJICoJc3RhdH
VzU3lzIHByb3BlcnR5IGFuZCB1c2UgdGhhdCAoaWYgbm90IGluZGljYXRpbmcgbm8gZXJyb3IpLiBJbiB0a
GUgY2FzZQoJCSAqCW9mIHRoZSBzdGF0dXNTeXMgcHJvcGVydHkgd2lsbCBnZXQgdGhlIGVycm9yIHN0cmlu
ZyBmcm9tIHRoZSBnZXRTdGF0dXNTdHJpbmcoKQoJCSAqCW1ldGhvZCwgb3RoZXJ3aXNlIGZvciBzdGF0dXM
gcHJvcGVydHkgb3IgcGFzc2VkIGluIHZhbHVlIHVzZSB0aGUgbWFwcGluZ3MKCQkgKgliZWxvdy4KCQkgKg
lOb3RlOiBUaGlzIGRvZXMgbWVhbiB0aGF0IGEgc3RhdHVzU3lzIGVycm9yIG5vIHNob3VsZCBub3QgYmUgc
GFzc2VkIGluCgkJICoJcHJlc2VudGx5LiBJbiBmdXR1cmUgbWF5IGNob29zZSB0byB1c2UgYW4gb2Zmc2V0
IG1hcHBpbmcgdG8gaGFuZGxlIHRoYXQuCgkJICoJCgkJICoJQHBhcmFtCQlpbnRlZ2VyCSRlcnJvcglPcHR
pb25hbDogVGhlIGVycm9yIGNvZGUKCQkgKglAcGFyYW0JCWJvb2wJJGZ1bGwJT3B0aW9uYWw6IFRydWUgdG
8gcHJvdmlkZSBhIG5hbWUvdmFsdWUvZGVzY3JpcHRpb24gc3RyaW5nCgkJICoJQHJldHVybgkJc3RyaW5nC
QkJSW5mb3JtYXRpdmUgZXJyb3Igc3RyaW5nCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZXJyb3JJ
bmZvKCAkZXJyb3IgPSBQSFBfSU5UX01BWCwgJGZ1bGwgPSB0cnVlICkgewoJCQoJCQkvLyBHZXQgc3RhdHV
zU3lzIHByb3BlcnR5IHZhbHVlIGluIGNhc2Ugd2UgbmVlZCBpdAoJCQkkZXJyb3Jfc3lzID0gJHRoaXMtPl
96YS0+c3RhdHVzU3lzOwoJCQkKCQkJLy8gQ2hlY2sgd2hldGhlciB3ZSBoYXZlIGJlZW4gZ2l2ZW4gb3Igb
mVlZCB0byBnZXQgYSBzdGF0dXMgdmFsdWUKCQkJaWYgKCBQSFBfSU5UX01BWCA9PSAkZXJyb3IpIHsKCQkJ
CgkJCQkvLyBObyBlcnJvciBudW1iZXIgcGFzc2VkIGluLCBsZXRzIGdldCBvbmUKCQkJCSRlcnJvciA9ICR
0aGlzLT5femEtPnN0YXR1czsKCQkJCgkJCX0KCQkJCgkJCWlmICggKCBaSVBBUkNISVZFOjpFUl9PSyA9PS
AkZXJyb3IgKSAmJiAoIDAgPCAkZXJyb3Jfc3lzICkgKSB7CgkJCQoJCQkJLy8gTm8gYmFzaWMgZXJyb3IgQ
U5EIHdlIGhhdmUgYSBzeXN0ZW0gZXJyb3IKCQkJCSRlcnJvcl9zdHJpbmcgPSAiWkxJQiIgLiAiKCIgLiAk
ZXJyb3Jfc3lzIC4gIikgOiAiIC4gJHRoaXMtPl96YS0+Z2V0U3RhdHVzU3RyaW5nKCk7CgkJCQoJCQl9IGV
sc2UgewoJCQkKCQkJCSRlcnJvcl9uYW1lID0gJyc7CgkJCQkkZXJyb3JfZGVzY3JpcHRpb24gPSAnJzsKCQ
kJCgkJCQkvLyBJdCdzIGVpdGhlciBhIGJhc2ljIGVycm9yIE9SIG5vIHN5c3RlbSBlcnJvcgoJCQkJLy8gV
2UgY2FuIGNoZWNrIHRoZSBzeW1ib2xpYyB2YWx1ZXMKCQkJCXN3aXRjaCggKGludCkgJGVycm9yICkgewoJ
CQkJIGNhc2UgWklQQVJDSElWRTo6RVJfT0s6CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkV
SUl9PSyI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJObyBlcnJvciI7CgkJCQkgCWJyZWFrOwoJCQ
kJIGNhc2UgWklQQVJDSElWRTo6RVJfT1BFTjoKCQkJCSAJJGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6R
VJfT1BFTiI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJDYW4ndCBvcGVuIGZpbGUiOwoJCQkJIAli
cmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX01FTU9SWToKCQkJCSAJJGVycm9yX25hbWUgPSAiWkl
QQVJDSElWRTo6RVJfTUVNT1JZIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW9uID0gIk1lbW9yeSBhbGxvY2
F0aW9uIGZhaWx1cmUiOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX0VYSVNUUzoKC
QkJCSAJJGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJSX0VYSVNUUyI7CgkJCQkgCSRlcnJvcl9kZXNj
cmlwdGlvbiA9ICJGaWxlIGFscmVhZHkgZXhpc3RzIjsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkN
ISVZFOjpFUl9JTkNPTlM6CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSX0lOQ09OUyI7Cg
kJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJaaXAgYXJjaGl2ZSBpbmNvbnNpc3RlbnQiOwoJCQkJIAlic
mVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX0lOVkFMOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBB
UkNISVZFOjpFUl9JTlZBTCI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJJbnZhbGlkIGFyZ3VtZW5
0IjsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjpFUl9OT0VOVDoKCQkJCSAJJGVycm9yX2
5hbWUgPSAiWklQQVJDSElWRTo6RVJfTk9FTlQiOwoJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiTm8gc
3VjaCBmaWxlIjsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjpFUl9OT1pJUDoKCQkJCSAJ
JGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJfTk9aSVAiOwoJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24
gPSAiTm90IGEgemlwIGFyY2hpdmUiOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX1
JFQUQ6CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSX1JFQUQiOwoJCQkJIAkkZXJyb3JfZ
GVzY3JpcHRpb24gPSAiUmVhZCBlcnJvciI7CgkJCQkgCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6
RVJfU0VFSzoKCQkJCSAJJGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJfU0VFSyI7CgkJCQkgCSRlcnJ
vcl9kZXNjcmlwdGlvbiA9ICJTZWVrIGVycm9yIjsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISV
ZFOjpFUl9NVUxUSURJU0s6CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSX01VTFRJRElTS
yI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJNdWx0aS1kaXNrIHppcCBhcmNoaXZlcyBub3Qgc3Vw
cG9ydGVkIjsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjpFUl9SRU5BTUU6CgkJCQkgCSR
lcnJvcl9uYW1lID0gIlpJUEFSQ0hJVkU6OkVSX1JFTkFNRSI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbi
A9ICJSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQiOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJU
EFSQ0hJVkU6OkVSX0NMT1NFOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZFOjpFUl9DTE9TRSI7
CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJDbG9zaW5nIHppcCBhcmNoaXZlIGZhaWxlZCI7CgkJCQk
gCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfV1JJVEU6CgkJCQkgCSRlcnJvcl9uYW1lID0gIl
pJUEFSQ0hJVkU6OkVSX1dSSVRFIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW9uID0gIldyaXRlIGVycm9yI
jsKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjpFUl9DUkM6CgkJCQkgCSRlcnJvcl9uYW1l
ID0gIlpJUEFSQ0hJVkU6OkVSX0NSQyI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJDUkMgZXJyb3I
iOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX1pJUENMT1NFRDoKCQkJCSAJJGVycm
9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJfWklQQ0xPU0VEIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW9uI
D0gIkNvbnRhaW5pbmcgemlwIGFyY2hpdmUgd2FzIGNsb3NlZCI7CgkJCQkgCWJyZWFrOwoJCQkJIGNhc2Ug
WklQQVJDSElWRTo6RVJfVE1QT1BFTjoKCQkJCSAJJGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJfVE1
QT1BFTiI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3Jhcn
kgZmlsZSI7CgkJCQkgCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfWkxJQjoKCQkJCSAJJGVyc
m9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJfWkxJQiI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJa
bGliIGVycm9yIjsKCQkJCSAJYnJlYWs7CgkJCQk
gY2FzZSBaSVBBUkNISVZFOjpFUl9DSEFOR0VEOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZFOj
pFUl9DSEFOR0VEIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW9uID0gIkVudHJ5IGhhcyBiZWVuIGNoYW5nZ
WQiOwoJCQkJIAlicmVhazsKCQkJCSBjYXNlIFpJUEFSQ0hJVkU6OkVSX0NPTVBOT1RTVVBQOgoJCQkJIAkk
ZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZFOjpFUl9DT01QTk9UU1VQUCI7CgkJCQkgCSRlcnJvcl9kZXNjcml
wdGlvbiA9ICJDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZCI7CgkJCQkgCWJyZWFrOwoJCQkJIG
Nhc2UgWklQQVJDSElWRTo6RVJfRU9GOgoJCQkJIAkkZXJyb3JfbmFtZSA9ICJaSVBBUkNISVZFOjpFUl9FT
0YiOwoJCQkJIAkkZXJyb3JfZGVzY3JpcHRpb24gPSAiUHJlbWF0dXJlIEVPRiI7CgkJCQkgCWJyZWFrOwoJ
CQkJIGNhc2UgWklQQVJDSElWRTo6RVJfSU5URVJOQUw6CgkJCQkgCSRlcnJvcl9uYW1lID0gIlpJUEFSQ0h
JVkU6OkVSX0lOVEVSTkFMIjsKCQkJCSAJJGVycm9yX2Rlc2NyaXB0aW9uID0gIkludGVybmFsIGVycm9yIj
sKCQkJCSAJYnJlYWs7CgkJCQkgY2FzZSBaSVBBUkNISVZFOjpFUl9SRU1PVkU6CgkJCQkgCSRlcnJvcl9uY
W1lID0gIlpJUEFSQ0hJVkU6OkVSX1JFTU9WRSI7CgkJCQkgCSRlcnJvcl9kZXNjcmlwdGlvbiA9ICJDYW4n
dCByZW1vdmUgZmlsZSI7CgkJCQkgCWJyZWFrOwoJCQkJIGNhc2UgWklQQVJDSElWRTo6RVJfREVMRVRFRDo
KCQkJCSAJJGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJfREVMRVRFRCI7CgkJCQkgCSRlcnJvcl9kZX
NjcmlwdGlvbiA9ICJFbnRyeSBoYXMgYmVlbiBkZWxldGVkIjsKCQkJCSAJYnJlYWs7CgkJCQkgZGVmYXVsd
DoKCQkJCSAJJGVycm9yX25hbWUgPSAiWklQQVJDSElWRTo6RVJSX1VOS05PV04iOwoJCQkJIAkkZXJyb3Jf
ZGVzY3JpcHRpb24gPSAiVW5rbW93biBlcnJvciI7CgkJCQl9CgkJCQkKCQkJCSRlcnJvcl9zdHJpbmcgPSA
kZXJyb3JfbmFtZSAuICIoIiAuICRlcnJvciAuICIpIDogIiAuICRlcnJvcl9kZXNjcmlwdGlvbjsKCQkJCQ
oJCQl9CgkJCQoJCQkvLyBPbmUgd2F5IG9yIGFub3RoZXIgd2UgaGF2ZSBhIHN0cmluZyB0byByZXR1cm4KC
QkJcmV0dXJuICRlcnJvcl9zdHJpbmc7CgkJCgkJfQoJCQoJfQoKCWNsYXNzIHBsdWdpbmJ1ZGR5X3piemlw
emlwYXJjaGl2ZSBleHRlbmRzIHBsdWdpbmJ1ZGR5X3piemlwY29yZSB7CgkKICAgICAgICAvKioKICAgICA
gICAgKiBtZXRob2QgdGFnIHVzZWQgdG8gcmVmZXIgdG8gdGhlIG1ldGhvZCBhbmQgZW50aXRpZXMgYXNzb2
NpYXRlZCB3aXRoIGl0IHN1Y2ggYXMgY2xhc3MgbmFtZQogICAgICAgICAqIAogICAgICAgICAqIEB2YXIgJ
F9tZXRob2RfdGFnIAlzdHJpbmcKICAgICAgICAgKi8KCQlwdWJsaWMgc3RhdGljICRfbWV0aG9kX3RhZyA9
ICd6aXBhcmNoaXZlJzsKCQkJCiAgICAgICAgLyoqCiAgICAgICAgICogVGhpcyB0ZWxscyB1cyB3aGV0aGV
yIHRoaXMgbWV0aG9kIGlzIHJlZ2FyZGVkIGFzIGEgImNvbXBhdGliaWxpdHkiIG1ldGhvZAogICAgICAgIC
AqIAogICAgICAgICAqIEB2YXIgYm9vbAogICAgICAgICAqLwoJCXB1YmxpYyBzdGF0aWMgJF9pc19jb21wY
XRpYmlsaXR5X21ldGhvZCA9IGZhbHNlOwoJCQkKICAgICAgICAvKioKICAgICAgICAgKiBUaGlzIHRlbGxz
IHVzIHRoZSBkZXBlbmRlbmNpZXMgb2YgdGhpcyBtZXRob2Qgc28gdGhleSBjYW4gYmUgY2hlY2sgdG8gc2V
lIGlmIHRoZSBtZXRob2QgY2FuIGJlIHN1cHBvcnRlZAogICAgICAgICAqIAogICAgICAgICAqIEB2YXIgYX
JyYXkKICAgICAgICAgKi8KCQlwdWJsaWMgc3RhdGljICRfbWV0aG9kX2RlcGVuZGVuY2llcyA9IGFycmF5K
CAnY2xhc3NlcycgPT4gYXJyYXkoICdaaXBBcmNoaXZlJyApLAoJCQkJCQkJCQkJCSAgCQkgJ2Z1bmN0aW9u
cycgPT4gYXJyYXkoKSwKCQkJCQkJCQkJCQkgIAkJICdleHRlbnNpb25zJyA9PiBhcnJheSgpLAoJCQkJCQk
JCQkJCSAgCQkgJ2ZpbGVzJyA9PiBhcnJheSgpCgkJCQkJCQkJCQkJCQkpOwoJCQkKCQkvKioKCQkgKiAKCQ
kgKiBnZXRfbWV0aG9kX3RhZ19zdGF0aWMoKQoJCSAqCgkJICogR2V0IHRoZSBzdGF0aWMgbWV0aG9kIHRhZ
yBpbiBhIHN0YXRpYyBjb250ZXh0CgkJICoKCQkgKiBAcmV0dXJuCQlzdHJpbmcJVGhlIG1ldGhvZCB0YWcK
CQkgKgoJCSAqLwoJCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X21ldGhvZF90YWdfc3RhdGljKCkgewo
JCQoJCQlyZXR1cm4gc2VsZjo6JF9tZXRob2RfdGFnOwoJCQkKCQl9CgoJCS8qKgoJCSAqIAoJCSAqIGdldF
9pc19jb21wYXRpYmlsaXR5X21ldGhvZF9zdGF0aWMoKQoJCSAqCgkJICogR2V0IHRoZSBjb21wYXRpYmlsa
XR5IG1ldGhvZCBpbmRpY2F0b3IgaW4gYSBzdGF0aWMgY29udGV4dAoJCSAqCgkJICogQHJldHVybgkJYm9v
bAlUcnVlIGlmIGlzIGEgY29tcGF0aWJpbGl0eSBtZXRob2QKCQkgKgoJCSAqLwoJCXB1YmxpYyBzdGF0aWM
gZnVuY3Rpb24gZ2V0X2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kX3N0YXRpYygpIHsKCQkKCQkJcmV0dXJuIH
NlbGY6OiRfaXNfY29tcGF0aWJpbGl0eV9tZXRob2Q7CgkJfQoKCQkvKioKCQkgKiAKCQkgKiBnZXRfbWV0a
G9kX2RlcGVuZGVuY2llc19zdGF0aWMoKQoJCSAqCgkJICogR2V0IHRoZSBtZXRob2QgZGVwZW5kZW5jaWVz
IGFycmF5IGluIGEgc3RhdGljIGNvbnRleHQKCQkgKgoJCSAqIEByZXR1cm4JCWFycmF5CVRoZSBkZXBlbmR
lbmNpZXMgb2YgdGhlIG1ldGhvZCB0aGF0IGlzIHJlcXVpcmVzIHRvIGJlIGEgc3VwcG9ydGVkIG1ldGhvZA
oJCSAqCgkJICovCgkJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbWV0aG9kX2RlcGVuZGVuY2llc19zd
GF0aWMoKSB7CgkJCgkJCXJldHVybiBzZWxmOjokX21ldGhvZF9kZXBlbmRlbmNpZXM7CgkJfQoKCQkvKioK
CQkgKglfX2NvbnN0cnVjdCgpCgkJICoJCgkJICoJRGVmYXVsdCBjb25zdHJ1Y3Rvci4KCQkgKgkKCQkgKgl
AcGFyYW0JCXJlZmVyZW5jZQkmJHBhcmVudAkJW29wdGlvbmFsXSBSZWZlcmVuY2UgdG8gdGhlIG9iamVjdC
Bjb250YWluaW5nIHRoZSBzdGF0dXMoKSBmdW5jdGlvbiBmb3Igc3RhdHVzIHVwZGF0ZXMuCgkJICoJQHJld
HVybgkJbnVsbAoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAmJHBhcmVudCA9
IE5VTEwgKSB7CgoJCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCAkcGFyZW50ICk7CgkJCQoJCQkvLyBPdmVycml
kZSBzb21lIG9mIHBhcmVudCBkZWZhdWx0cwoJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXS
A9IGFycmF5X21lcmdlKCAkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXSwKCQkJCQkJCQkJCQkJC
QkJYXJyYXkoICduYW1lJyA9PiAnWmlwQXJjaGl2ZSBNZXRob2QnLAoJCQkJCQkJCQkJCQkJICAJCQkgICAn
Y29tcGF0aWJpbGl0eScgPT4gcGx1Z2luYnVkZHlfemJ6aXB6aXBhcmNoaXZlOjokX2lzX2NvbXBhdGliaWx
pdHlfbWV0aG9kICkKCQkJCQkJCQkJCQkJCSAgCSAgICk7CgoJCQkvLyBObyByZWxldmFudCBwYXJhbWV0ZX
JzIGZvciB0aGlzIG1ldGhvZAoJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAncGFyYW0nIF0gPSBhcnJhe
SgpOwoJCQkKCQl9CgkJCgkJLyoqCgkJICoJX19kZXN0cnVjdCgpCgkJICoJCgkJICoJRGVmYXVsdCBkZXN0
cnVjdG9yLgoJCSAqCQoJCSAqCUByZXR1cm4JCW51bGwKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiB
fX2Rlc3RydWN0KCApIHsKCQkKCQkJcGFyZW50OjpfX2Rlc3RydWN0KCk7CgoJCX0KCQkKCQkvKioKCQkgKg
lnZXRfbWV0aG9kX3RhZygpCgkJICoJCgkJICoJUmV0dXJucyB0aGUgKHN0YXRpYykgbWV0aG9kIHRhZwoJC
SAqCQoJCSAqCUByZXR1cm4JCXN0cmluZyBUaGUgbWV0aG9kIHRhZwoJCSAqCgkJICovCgkJcHVibGljIGZ1
bmN0aW9uIGdldF9tZXRob2RfdGFnKCkgewoJCQoJCQlyZXR1cm4gcGx1Z2luYnVkZHlfemJ6aXB6aXBhcmN
oaXZlOjokX21ldGhvZF90YWc7CgkJCQoJCX0KCQkKCQkvKioKCQkgKglnZXRfaXNfY29tcGF0aWJpbGl0eV
9tZXRob2QoKQoJCSAqCQoJCSAqCVJldHVybnMgdGhlIChzdGF0aWMpIGlzX2NvbXBhdGliaWxpdHlfbWV0a
G9kIGJvb2xlYW4KCQkgKgkKCQkgKglAcmV0dXJuCQlib29sCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rp
b24gZ2V0X2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kKCkgewoJCQoJCQlyZXR1cm4gcGx1Z2luYnVkZHlfemJ
6aXB6aXBhcmNoaXZlOjokX2lzX2NvbXBhdGliaWxpdHlfbWV0aG9kOwoJCQkKCQl9CgkJCgkJLyoqCgkJIC
oJaXNfYXZhaWxhYmxlKCkKCQkgKgkKCQkgKglBIGZ1bmN0aW9uIHRoYXQgdGVzdHMgZm9yIHRoZSBhdmFpb
GFiaWxpdHkgb2YgdGhlIHNwZWNpZmljIG1ldGhvZCBhbmQgaXRzIGF2YWlsYWJsZSBtb2Rlcy4gV2lsbCB0
ZXN0IGZvcgoJCSAqICBtdWx0aXBsZSBtb2RlcyAoemlwICYgdW56aXApIGFuZCBvbmx5IHJldHVybiBmYWx
zZSBpZiBuZWl0aGVyIGlzIGF2YWlsYWJsZS4gQWN0dWFsIGF2YWlsYWJsZSBtb2RlcyB3aWxsCgkJICogIG
JlIGluZGljYXRlZCBpbiB0aGUgbWV0aG9kIGF0dHJpYnV0ZXMuCgkJICoKCQkgKiAgTm90ZTogaW4gdGhpc
yBjYXNlIGFzIHRoZSB6aXAgYW5kIHVuemlwIGNhcGFiaWxpdGllcyBhcmUgYWxsIHdyYXBwZWQgdXAgaW4g
dGhlIHNhbWUgY2xhc3MgdGhlbiBpZiB3ZQoJCSAqICBjYW4gemlwIHRoZW4gd2UnbGwgYXNzdW1lIChmb3I
gbm93KSB0aGF0IHdlIGNhbiB1bnppcCBhcyB3ZWxsIHNvIGF0dHJpYnV0ZXMgYXJlIHNldCBhY2NvcmRpbm
dseS4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkdGVtcGRpcglUZW1wb3JhcnkgZGlyZWN0b3J5IHRvI
HVzZSBmb3IgYW55IHRlc3QgZmlsZXMgKG11c3QgYmUgd3JpdGVhYmxlKQoJCSAqCUByZXR1cm4JCWJvb2wJ
CQkJVHJ1ZSBpZiB0aGUgbWV0aG9kIGlzIGF2YWlsYWJsZSBmb3IgYXQgbGVhc3Qgb25lIG1vZGUsIGZhbHN
lIG90aGVyd2lzZQoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGlzX2F2YWlsYWJsZSggJHRlbXBkaX
IgKSB7CgkJCgkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJJHphID0gTlVMTDsKCQkJCgkJCSR0ZXN0X2ZpbGUgP
SAkdGVtcGRpciAuICd0ZW1wX3Rlc3RfJyAuIHVuaXFpZCgpIC4gJy56aXAnOwoJCQkKCQkJLy8gVGhpcyBz
aG91bGQgZ2l2ZSB1cyBhIG5ldyBhcmNoaXZlIG9iamVjdCwgb2Ygbm90IGNhdGNoIGl0IGFuZCBiYWlsIG9
1dAoJCQl0cnkgewoJCQkKCQkJCSR6YSA9IG5ldyBwbHVnaW5idWRkeV9aaXBBcmNoaXZlKCk7CgkJCQkkcm
VzdWx0ID0gdHJ1ZTsKCQkJCQoJCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkKCQkJCSRlcnJvc
l9zdHJpbmcgPSAkZS0+Z2V0TWVzc2FnZSgpOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFp
bHMnLCBzcHJpbnRmKCBfXygnWmlwQXJjaGl2ZSB0ZXN0IEZBSUxFRDogJTEkcycsJ2l0LWwxMG4tYmFja3V
wYnVkZHknICksICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJJHJlc3VsdCA9IGZhbHNlOwoKCQkJfQoJCQkKCQ
kJLy8gT25seSBjb250aW51ZSBpZiB3ZSBoYXZlIGEgdmFsaWQgYXJjaGl2ZSBvYmplY3QKCQkJaWYgKCB0c
nVlID09PSAkcmVzdWx0ICkgewoJCQkJCgkJCQkvLyBUaGlzIHJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLCBm
YWxzZSBmb3Igc29tZSBlcnJvciBzY2VuYXJpb3Mgb3IgYW4gZXJyb3IgY29kZQoJCQkJLy8gSWYgaXQgcmV
0dXJuIGZhbHNlIHdlIGRvbid0IHJlYWxseSBrbm93IHdoeSAtIHRoZXJlIG1heSBoYXZlIGJlZW4gYSBXYX
JuaW5nIGdlbmVyYXRlZAoJCQkJLy8gYnV0IHdlIG5lZWQgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYmVjYXVzZ
SBvZiB0aGUgZnJlcXVlbmN5IHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkCgkJCQkvLyBzbyB3ZSBjYW4gb25s
eSBpbmRpY2F0ZSBhIGdlbmVyYWwgZmFpbHVyZQoJCQkJJHJlcyA9ICR6YS0+b3BlbiggJHRlc3RfZmlsZSw
gWklQQVJDSElWRTo6Q1JFQVRFIHwgWklQQVJDSElWRTo6T1ZFUldSSVRFICk7CgkJCQkKCQkJCWlmICggdH
J1ZSA9PT0gJHJlcyApIHsKCQkJCQoJCQkJCWlmICggISR6YS0+YWRkRmlsZSggX19GSUxFX18sICd0aGlzX
2lzX2FfdGVzdC50eHQnKSApIHsKCQkJCQkKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFp
bHMnLCAgX18oJ1ppcEFyY2hpdmUgdGVzdCBGQUlMRUQ6IFVuYWJsZSB0byBhZGQgZmlsZSB0byB6aXAgZml
sZS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCSRlcnJvcl9zdHJpbmcgPSAkemEtPmVycm
9ySW5mbygpOwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICBfXygnWmlwQXJja
Gl2ZSBFcnJvcjogJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICRlcnJvcl9zdHJpbmcgKTsKCQkJCQkJ
CgkJCQkJfQoJCQkJCQoJCQkJCWlmICggISR6YS0+Y2xvc2UoKSApIHsKCQkJCQkKCQkJCQkJcGJfYmFja3V
wYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAgX18oJ1ppcEFyY2hpdmUgdGVzdCBGQUlMRUQ6IFByb2JsZW
0gY3JlYXRpbmcvY2xvc2luZyB6aXAgZmlsZS4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJC
SRlcnJvcl9zdHJpbmcgPSAkemEtPmVycm9ySW5mbygpOwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVz
KCAnZGV0YWlscycsICBfXygnWmlwQXJjaGl2ZSBFcnJvcjogJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSA
uICRlcnJvcl9zdHJpbmcgKTsKCQkJCQkJCgkJCQkJfQoJCQkJCQoJCQkJCWlmICggQGZpbGVfZXhpc3RzKC
AkdGVzdF9maWxlICkgKSB7CgkJCQkJCgkJCQkJCWlmICggIUB1bmxpbmsoICR0ZXN0X2ZpbGUgKSApIHsKC
QkJCQkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0Vycm9yICM1NjQ2MzQu
IFVuYWJsZSB0byBkZWxldGUgdGVzdCBmaWxlIGAnIC4gJHRlc3RfZmlsZSAuICdgLicgKTsKCQkJCQkJCgk
JCQkJCX0KCQkJCQkKCQkJCQkJLy8gVGhlIHppcCBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWwgLSBpbXBsaW
VzIGNhbiB6aXAgYW5kIHVuemlwIGFuZCBoZW5jZSBjaGVjayBhbmQgbGlzdAoJCQkJCQkvLyBOb3RlOiB3Z
SBhY3R1YWxseSBkb24ndCB3YW50IHRvIGRvIGFyY2hpdmluZyB3aXRoIHRoaXMgbWV0aG9kIHlldAoJCQkJ
CQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXVsgJ2lzX3ppcHBlcicgXSA9IHRydWU7CgkJCQk
JCSR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdhdHRyJyBdWyAnaXNfdW56aXBwZXInIF0gPSB0cnVlOwoJCQ
kJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXVsgJ2lzX2NoZWNrZXInIF0gPSB0cnVlOwoJC
QkJCQkkdGhpcy0+X21ldGhvZF9kZXRhaWxzWyAnYXR0cicgXVsgJ2lzX2xpc3RlcicgXSA9IHRydWU7CgkJ
CQkJCSR0aGlzLT5fbWV0aG9kX2RldGFpbHNbICdhdHRyJyBdWyAnaXNfY29tbWVudGVyJyBdID0gdHJ1ZTs
KCQkJCQkJJHRoaXMtPl9tZXRob2RfZGV0YWlsc1
sgJ2F0dHInIF1bICdpc191bmFyY2hpdmVyJyBdID0gdHJ1ZTsKCQkJCQkJJHRoaXMtPl9tZXRob2RfZGV0Y
Wlsc1sgJ2F0dHInIF1bICdpc19leHRyYWN0b3InIF0gPSB0cnVlOwoJCQkJCQkKCQkJCQkJcGJfYmFja3Vw
YnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnWmlwQXJjaGl2ZSB0ZXN0IFBBU1NFRC4nLCdpdC1sMTB
uLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCQkKCQkJCQl9IGVsc2Ugew
oJCQkJCQoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdaaXBBcmNoaXZlI
HRlc3QgRkFJTEVEOiBaaXAgZmlsZSBub3QgZm91bmQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJ
CQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCX0gZWxzZSB7CgkJCQkKCQk
JCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICBfXygnWmlwQXJjaGl2ZSB0ZXN0IEZBSU
xFRDogVW5hYmxlIHRvIGNyZWF0ZS9vcGVuIHppcCBmaWxlLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgK
TsKCQkJCQkKCQkJCQkvLyBJZiB3ZSBnb3QgYW4gZXJyb3IgY29kZSAocmF0aGVyIHRoYW4gc2ltcGx5IGEg
ZmFsc2UgZmFpbHVyZSBpbmRpY2F0aW9uKSB0aGVuIHRyYW5zbGF0ZSBpdAoJCQkJCS8vIEl0IHNlZW1zIHR
oYXQgaW4gdGhlc2UgY2FzZXMgdGhlIGludGVybmFsIHN0YXR1cyBkb2Vzbid0IGluZGljYXRlIGFueXRoaW
5nIHNvIHdlIGNhbm5vdCB1c2UgdGhhdAoJCQkJCWlmICggZmFsc2UgIT09ICRyZXMgKSB7CgkJCQkJCgkJC
QkJCSRlcnJvcl9zdHJpbmcgPSAkemEtPmVycm9ySW5mbyggJHJlcyApOwoJCQkJCQlwYl9iYWNrdXBidWRk
eTo6c3RhdHVzKCAnZGV0YWlscycsICBfXygnWmlwQXJjaGl2ZSBFcnJvcjogJywnaXQtbDEwbi1iYWNrdXB
idWRkeScgKSAuICRlcnJvcl9zdHJpbmcgKTsKCQkJCQkKCQkJCQl9CgkJCQkJCgkJCQkJJHphLT5jbG9zZS
gpOwoJCQkJCQoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkKCQkJCX0KCQkJCQoJCQl9CgkJICAJCgkJI
CAJaWYgKCBOVUxMICE9ICR6YSApIHsgdW5zZXQoICR6YSApOyB9CgkJICAJCgkJICAJcmV0dXJuICRyZXN1
bHQ7CgkJICAJCgkJfQoJCQoJCS8qKgoJCSAqCWFkZF92aXJ0dWFsX2ZpbGUoKQoJCSAqCQoJCSAqCUEgZnV
uY3Rpb24gdGhhdCBhbGxvd3MgYSB2aXJ0dWFsIGZpbGUgdG8gYmUgYWRkZWQgdG8gYSB6aXAgYXJjaGl2ZQ
oJCSAqCQoJCSAqCVRoZSB2aXJ0dWFsIGZpbGUgZGVzY3JpcHRvciBpcyBhbiBhcnJheSBvZiBkZXNjcmlwd
G9yIGFycmF5KHMpIHRoYXQgcHJvdmlkZSBhIGZpbGVuYW1lCgkJICoJZm9yIHRoZSB2aXJ0dWFsIGZpbGUg
dG8gYmUgYWRkZWQgKGNhbiBpbmNsdWRlIHBhdGggcHJlZml4KSBhbmQgYSBzdHJpbmcgdGhhdCBjb250YWl
ucyB0aGUKCQkgKglmaWxlIGNvbnRlbnQgKGNhbiBiZSBlbXB0eSBidXQgbXVzdCBiZSBwcmVzZW50KS4gRm
9yIGV4YW1wbGU6CgkJICoJYXJyYXkoIGFycmF5KCAnZmlsZW5hbWUnID0+ICdzb21lZmlsZS50eHQnLCAnY
29udGVudCcgPT4gJ0EgVGV4dCBTdHJpbmcnICkgKQoJCSAqCU5vdGUgdGhhdCB0aGUgYWN0dWFsIHppcCBm
aWxlIHRvIHdoaWNoIHRoZSBmaWxlIGlzIGFkZGVkIGlzIGZvcm1lZCBmcm9tIHRoZSBmaWxlbmFlbSBmcm9
tCgkJICoJdGhlICR6aXAgcGFyYW1ldGVyIGFwcGFlbmRlZCB0byB0aGUgJHRlbXBkaXIgZGlyZWN0b3J5IH
BhdGguIFRoaXMgaXMgc2xpZ2h0bHkgY2x1bmt5IGFuZAoJCSAqCW1heSBiZSBjaGFuZ2VkIGF0IHNvbWUgb
GF0ZXIgZGF0ZS4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkemlwCQkJCQkJRnVsbCBwYXRoICYgZmls
ZW5hbWUgb2YgWklQIEFyY2hpdmUgZmlsZSB0byBhZGQgZmlsZSB0bwoJCSAqCUBwYXJhbQkJYXJyYXkJJHZ
pcnR1YWxfZmlsZV9kZXNjcmlwdG9yCUZ1bGwgZGVzY3JpcHRvciBvZiBmaWxlKHMpIHRvIGFkZCB0byBaSV
AgQXJjaGl2ZSBmaWxlCgkJICoJQHBhcmFtCQlzdHJpbmcJJHRlbXBkaXIJCQkJCUZ1bGwgcGF0aCBvZiBka
XJlY3RvcnkgZm9yIHRlbXBvcmFyeSB1c2FnZQoJCSAqCUByZXR1cm4JCWJvb2wJCQkJCQkJCVRydWUgaWYg
dGhlIGFkZGl0aW9uIHdhcyBzdWNjZXNzZnVsLCBmYWxzZSBvdGhlcndpc2UKCQkgKgoJCSAqLwoJCXB1Ymx
pYyBmdW5jdGlvbiBhZGRfdmlydHVhbF9maWxlKCAkemlwLCAkdmlydHVhbF9maWxlX2Rlc2NyaXB0b3IsIC
R0ZW1wZGlyICkgewoJCQkJCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1RoZ
SAnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJHRoaXMtPmdldF9tZXRob2RfdGFnKCkgLiBfXygnIG1l
dGhvZCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBmb3IgYmFja3VwLicsJ2l0LWwxMG4tYmFja3VwYnV
kZHknICkgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCQoJCX0KCQkKCQkvKioKCQkgKgljcmVhdGUoKQoJCSAqCQ
oJCSAqCUEgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGFuIGFyY2hpdmUgZmlsZQoJCSAqCQoJCSAqCVRoZSAkZ
XhjbHVkZXMgd2lsbCBiZSBhIGxpc3Qgb3IgcmVsYXRpdmUgcGF0aCBleGNsdWRlcyBpZiB0aGUgJGxpc3Rt
YWtlciBvYmplY3QgaXMgTlVMTCBvdGVocndpc2UKCQkgKgl3aWxsIGJlIGFic29sdXRlIHBhdGggZXhjbHV
kZXMgYW5kIHJlbGF0aXZlIHBhdGggZXhjbHVkZXMgY2FuIGJlIGhhZCBmcm9tIHRoZSAkbGlzdG1ha2VyIG
9iamVjdAoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCSR6aXAJCQlGdWxsIHBhdGggJiBmaWxlbmFtZSBvZ
iBaSVAgQXJjaGl2ZSBmaWxlIHRvIGNyZWF0ZQoJCSAqCUBwYXJhbQkJc3RyaW5nCSRkaXIJCQlGdWxsIHBh
dGggb2YgZGlyZWN0b3J5IHRvIGFkZCB0byBaSVAgQXJjaGl2ZSBmaWxlCgkJICoJQHBhcmFtZQkJYXJyYXk
JJGV4Y2x1ZGVzCQlMaXN0IG9mIGVpdGhlciBhYnNvbHV0ZSBwYXRoIGV4Y2x1c2lvbnMgb3IgcmVsYXRpdm
UgZXhjbHVzaW9ucwoJCSAqCUBwYXJhbQkJc3RyaW5nCSR0ZW1wZGlyCQlGdWxsIHBhdGggb2YgZGlyZWN0b
3J5IGZvciB0ZW1wb3JhcnkgdXNhZ2UKCQkgKglAcGFyYW0JCW9iamVjdAkkbGlzdG1ha2VyCQlUaGUgb2Jq
ZWN0IGZyb20gd2hpY2ggd2UgY2FuIGdldCBhbiBpbmNsdXNpb25zIGxpc3QKCQkgKglAcmV0dXJuCQlib29
sCQkJCQlUcnVlIGlmIHRoZSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlCgkJIC
oKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gY3JlYXRlKCAkemlwLCAkZGlyLCAkZXhjbHVkZXMsICR0ZW1wZ
GlyLCAkbGlzdG1ha2VyID0gTlVMTCApIHsKCQkKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFp
bHMnLCBfXygnVGhlICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkdGhpcy0+Z2V0X21ldGhvZF90YWc
oKSAuIF9fKCcgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciBiYWNrdXAuJywnaXQtbD
Ewbi1iYWNrdXBidWRkeScgKSApOwoJCQlyZXR1cm4gZmFsc2U7CgkJCgkJfQoJCQoJCS8qKgoJCSAqCWV4d
HJhY3QoKQoJCSAqCgkJICoJRXh0cmFjdHMgdGhlIGNvbnRlbnRzIG9mIGEgemlwIGZpbGUgdG8gdGhlIHNw
ZWNpZmllZCBkaXJlY3RvcnkgdXNpbmcgdGhlIGJlc3QgdW56aXAgbWV0aG9kcyBwb3NzaWJsZS4KCQkgKgl
JZiBubyBzcGVjaWZpYyBpdGVtcyBnaXZlbiB0byBleHRyYWN0IHRoZW4gaXQncyBhIGNvbXBsZXRlIHVuem
lwCgkJICoKCQkgKglAcGFyYW0Jc3RyaW5nCQkkemlwX2ZpbGUJCQkJCUZ1bGwgcGF0aCAmIGZpbGVuYW1lI
G9mIFpJUCBmaWxlIHRvIGV4dHJhY3QgZnJvbS4KCQkgKglAcGFyYW0Jc3RyaW5nCQkkZGVzdGluYXRpb25f
ZGlyZWN0b3J5CQlGdWxsIGRpcmVjdG9yeSBwYXRoIHRvIGV4dHJhY3QgaW50by4KCQkgKglAcGFyYW0JYXJ
yYXkJCSRpdGVtcwkJCQkJCU1hcHBpbmcgb2Ygd2hhdCB0byBleHRyYWN0IGFuZCB0byB3aGF0CgkJICoJQH
JldHVybglib29sCQkJCQkJCQkJdHJ1ZSBvbiBzdWNjZXNzIChhbGwgZXh0cmFjdGlvbnMgc3VjY2Vzc2Z1b
CksIGZhbHNlIG90aGVyd2lzZQoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBleHRyYWN0KCAkemlwX2ZpbGUs
ICRkZXN0aW5hdGlvbl9kaXJlY3RvcnkgPSAnJywgJGl0ZW1zID0gYXJyYXkoKSApIHsKCQkKCQkJJHJlc3V
sdCA9IGZhbHNlOwoJCQoJCQlzd2l0Y2ggKCAkdGhpcy0+Z2V0X29zX3R5cGUoKSApIHsKCQkJCWNhc2Ugc2
VsZjo6T1NfVFlQRV9OSVg6CgkJCQkJaWYgKCBlbXB0eSggJGl0ZW1zICkgKSB7CgkJCQkJCSRyZXN1bHQgP
SAkdGhpcy0+ZXh0cmFjdF9nZW5lcmljX2Z1bGwoICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9y
eSApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRyZXN1bHQgPSAkdGhpcy0+ZXh0cmFjdF9nZW5lcmljX3NlbGV
jdGVkKCAkemlwX2ZpbGUsICRkZXN0aW5hdGlvbl9kaXJlY3RvcnksICRpdGVtcyApOwkJCQkJCgkJCQkJfQ
oJCQkJCWJyZWFrOwoJCQkJY2FzZSBzZWxmOjpPU19UWVBFX1dJTjoKCQkJCQlpZiAoIGVtcHR5KCAkaXRlb
XMgKSApIHsKCQkJCQkJJHJlc3VsdCA9ICR0aGlzLT5leHRyYWN0X2dlbmVyaWNfZnVsbCggJHppcF9maWxl
LCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ICk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJJHJlc3VsdCA9ICR0aGl
zLT5leHRyYWN0X2dlbmVyaWNfc2VsZWN0ZWQoICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeS
wgJGl0ZW1zICk7CQkJCQkKCQkJCQl9CgkJCQkJYnJlYWs7CgkJCQlkZWZhdWx0OgoJCQkJCSRyZXN1bHQgP
SBmYWxzZTsKCQkJfQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQoJCX0KCgkJLyoqCgkJICoJZXh0cmFj
dF9nZW5lcmljX2Z1bGwoKQoJCSAqCgkJICoJRXh0cmFjdHMgdGhlIGNvbnRlbnRzIG9mIGEgemlwIGZpbGU
gdG8gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgdXNpbmcgdGhlIGJlc3QgdW56aXAgbWV0aG9kcyBwb3NzaW
JsZS4KCQkgKgoJCSAqCUBwYXJhbQlzdHJpbmcJCSR6aXBfZmlsZQkJCQkJRnVsbCBwYXRoICYgZmlsZW5hb
WUgb2YgWklQIGZpbGUgdG8gZXh0cmFjdCBmcm9tLgoJCSAqCUBwYXJhbQlzdHJpbmcJCSRkZXN0aW5hdGlv
bl9kaXJlY3RvcnkJCUZ1bGwgZGlyZWN0b3J5IHBhdGggdG8gZXh0cmFjdCBpbnRvLgoJCSAqCUByZXR1cm4
JYm9vbAkJCQkJCQkJCXRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCgkJICovCgkJcHJvdGVjdG
VkIGZ1bmN0aW9uIGV4dHJhY3RfZ2VuZXJpY19mdWxsKCAkemlwX2ZpbGUsICRkZXN0aW5hdGlvbl9kaXJlY
3RvcnkgPSAnJyApIHsKCQkKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkkemEgPSBOVUxMOwoJCQkkc3RhdCA9
IGFycmF5KCk7CgkJCQoJCQkvLyBUaGlzIHNob3VsZCBnaXZlIHVzIGEgbmV3IGFyY2hpdmUgb2JqZWN0LCB
pZiBub3QgY2F0Y2ggaXQgYW5kIGJhaWwgb3V0CgkJCXRyeSB7CgkJCQoJCQkJJHphID0gbmV3IHBsdWdpbm
J1ZGR5X1ppcEFyY2hpdmUoKTsKCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCgkJCX0gY2F0Y2ggKCBFeGNlc
HRpb24gJGUgKSB7CgkJCQoJCQkJLy8gU29tZXRoaW5nIGZpc2h5IC0gdGhlIG1ldGhvZHMgaW5kaWNhdGVk
IHppcGFyY2hpdmUgYnV0IHdlIGNvdWxkbid0IGZpbmQgdGhlIGNsYXNzCgkJCQkkZXJyb3Jfc3RyaW5nID0
gJGUtPmdldE1lc3NhZ2UoKTsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW
50ZiggX18oJ3ppcGFyY2hpdmUgaW5kaWNhdGVkIGFzIGF2YWlsYWJsZSBtZXRob2QgYnV0IGVycm9yIHJlc
G9ydGVkOiAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJGVycm9yX3N0cmluZyApICk7CgkJCQkk
cmVzdWx0ID0gZmFsc2U7CgkJCQkKCQkJfQoJCQkKCQkJLy8gT25seSBjb250aW51ZSBpZiB3ZSBoYXZlIGE
gdmFsaWQgYXJjaGl2ZSBvYmplY3QKCQkJaWYgKCB0cnVlID09PSAkcmVzdWx0ICkgewoJCQkJCgkJCQkkcm
VzdWx0ID0gJHphLT5vcGVuKCAkemlwX2ZpbGUgKTsKCQkJCQoJCQkJLy8gTWFrZSBzdXJlIHdlIG9wZW5lZ
CB0aGUgemlwIG9rCgkJCQlpZiAoIHRydWUgPT09ICRyZXN1bHQgKSB7CgkJCQkKCQkJCQkvLyBIb3cgbWFu
eSBmaWxlcyAtIGNvdWxkIGJlIDAgaWYgd2UgaGFkIGFuIGVtcHR5IHppcCBmaWxlCgkJCQkJJGZpbGVfY29
1bnQgPSAkemEtPm51bUZpbGVzOwoJCQkJCQoJCQkJCS8vIE9ubHkgcmV0dXJucyB0cnVlIGZvciBzdWNjZX
NzIG9yIGZhbHNlIGZvciBmYWlsdXJlIC0gbm8gaW5kaWNhdGlvbiBvZiB3aHkgZmFpbGVkCgkJCQkJJHJlc
3VsdCA9ICR6YS0+ZXh0cmFjdFRvKCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ICk7CgkJCQkJCQkJCQoJCQkJ
CS8vIEN1cnJlbnRseSB3ZSBjYW4gb25seSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHN1Y2Nlc3MgYW5kIGZhaWx
1cmUgYnV0IG5vIGZpbmVyIGdyYWluCgkJCQkJaWYgKCB0cnVlID09PSAkcmVzdWx0ICkgewoJCQkJCQoJCQ
kJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCd6aXBhcmNoaXZlI
GV4dHJhY3RlZCBmaWxlIGNvbnRlbnRzICglMSRzIHRvICUyJHMpJywnaXQtbDEwbi1iYWNrdXBidWRkeScg
KSwgJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5ICkgKTsKCgkJCQkJfSBlbHNlIHsKCQkJCQk
KCQkJCQkJJGVycm9yX3N0cmluZyA9ICR6YS0+ZXJyb3JJbmZvKCk7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5Oj
pzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ3ppcGFyY2hpdmUgZmFpbGVkIHRvIGV4dHJhY3QgZ
mlsZSBjb250ZW50cyAoJTEkcyB0byAlMiRzKSAtIEVycm9yIEluZm86ICUzJHMuJywnaXQtbDEwbi1iYWNr
dXBidWRkeScgKSwgJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5LCAkZXJyb3Jfc3RyaW5nICk
gKTsKCQkJCQkKCQkJCQkJLy8gTWF5IHNlZW0gcmVkdW5kYW50IGJ1dCBiZWx0J24nYnJhY2VzCgkJCQkJCS
RyZXN1bHQgPSBmYWxzZTsKCQkJCQl9CgkJCQkJCgkJCQkJJHRoaXMtPmxvZ19hcmNoaXZlX2ZpbGVfc3Rhd
HMoICR6aXBfZmlsZSApOwoJCQkJCQoJCQkJfSBlbHNlIHsKCQkJCQoJCQkJCS8vIENvdWxkbid0IG9wZW4g
YXJjaGl2ZSAtIHdpbGwgcmV0dXJuIGZvciBtYXliZSBhbm90aGVyIG1ldGhvZCB0byB0cnkKCQkJCQkkZXJ
yb3Jfc3RyaW5nID0gJHphLT5lcnJvckluZm8oICRyZXN1bHQgKTsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3
RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdaaXBBcmNoaXZlIGZhaWxlZCB0byBvcGVuIGZpbGUgd
G8gZXh0cmFjdCBjb250ZW50cyAoJTEkcyB0byAlMiRzKSAtIEVycm9yIEluZm86ICUzJHMuJywnaXQtbDEw
bi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGlyZWN0b3J5LCAkZXJyb3Jfc3R
yaW5nICkgKTsKCgkJCQkJLy8gUmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIGEgZGVzY3JpcHRpb24gLSB0aG
lzIG5lZWRzIHRvIGJlIGhhbmRsZWQgbW9yZSBnZ
W5lcmljYWxseQoJCQkJCS8vJHJlc3VsdCA9IGFycmF5KCAxLCAiVW5hYmxlIHRvIGdldCBhcmNoaXZlIGNv
bnRlbnRzIiApOwoJCQkJCS8vIEN1cnJlbnRseSBhcyB3ZSBhcmUgcmV0dXJuaW5nIGFuIGFycmF5IGFzIGE
gdmFsaWQgcmVzdWx0IHdlIGp1c3QgcmV0dXJuIGZhbHNlIG9uIGZhaWx1cmUKCQkJCQkkcmVzdWx0ID0gZm
Fsc2U7CgoJCQkJfQoJCQkJCgkJCQkkemEtPmNsb3NlKCk7CgkJCQoJCQl9CgkJCQoJCSAgCWlmICggTlVMT
CAhPSAkemEgKSB7IHVuc2V0KCAkemEgKTsgfQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCQkJCgkJ
fQoKCQkvKioKCQkgKglleHRyYWN0X2dlbmVyaWNfc2VsZWN0ZWQoKQoJCSAqCgkJICoJRXh0cmFjdHMgdGh
lIGNvbnRlbnRzIG9mIGEgemlwIGZpbGUgdG8gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgdXNpbmcgdGhlIG
Jlc3QgdW56aXAgbWV0aG9kcyBwb3NzaWJsZS4KCQkgKgoJCSAqCUBwYXJhbQlzdHJpbmcJCSR6aXBfZmlsZ
QkJCQkJRnVsbCBwYXRoICYgZmlsZW5hbWUgb2YgWklQIGZpbGUgdG8gZXh0cmFjdCBmcm9tLgoJCSAqCUBw
YXJhbQlzdHJpbmcJCSRkZXN0aW5hdGlvbl9kaXJlY3RvcnkJCUZ1bGwgZGlyZWN0b3J5IHBhdGggdG8gZXh
0cmFjdCBpbnRvLgoJCSAqCUBwYXJhbQlhcnJheQkJJGl0ZW1zCQkJCQkJTWFwcGluZyBvZiB3aGF0IHRvIG
V4dHJhY3QgYW5kIHRvIHdoYXQKCQkgKglAcmV0dXJuCWJvb2wJCQkJCQkJCQl0cnVlIG9uIHN1Y2Nlc3MgK
GFsbCBleHRyYWN0aW9ucyBzdWNjZXNzZnVsKSwgZmFsc2Ugb3RoZXJ3aXNlCgkJICovCgkJcHJvdGVjdGVk
IGZ1bmN0aW9uIGV4dHJhY3RfZ2VuZXJpY19zZWxlY3RlZCggJHppcF9maWxlLCAkZGVzdGluYXRpb25fZGl
yZWN0b3J5ID0gJycsICRpdGVtcyApIHsKCQkKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkkemEgPSBOVUxMOw
oJCQkKCQkJLy8gVGhpcyBzaG91bGQgZ2l2ZSB1cyBhIG5ldyBhcmNoaXZlIG9iamVjdCwgaWYgbm90IGNhd
GNoIGl0IGFuZCBiYWlsIG91dAoJCQl0cnkgewoJCQkKCQkJCSR6YSA9IG5ldyBwbHVnaW5idWRkeV9aaXBB
cmNoaXZlKCk7CgkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQoJCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICk
gewoJCQkKCQkJCS8vIFNvbWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCB6aXBhcmNoaX
ZlIGJ1dCB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBjbGFzcwoJCQkJJGVycm9yX3N0cmluZyA9ICRlLT5nZXRNZ
XNzYWdlKCk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCd6
aXBhcmNoaXZlIGluZGljYXRlZCBhcyBhdmFpbGFibGUgbWV0aG9kIGJ1dCBlcnJvciByZXBvcnRlZDogJTE
kcycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJJHJlc3VsdCA9IG
ZhbHNlOwoJCQkJCgkJCX0KCQkJCgkJCS8vIE9ubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHZhbGlkIGFyY
2hpdmUgb2JqZWN0CgkJCWlmICggdHJ1ZSA9PT0gJHJlc3VsdCApIHsKCQkJCQoJCQkJJHJlc3VsdCA9ICR6
YS0+b3BlbiggJHppcF9maWxlICk7CgkJCQkKCQkJCS8vIE1ha2Ugc3VyZSB3ZSBvcGVuZWQgdGhlIHppcCB
vawoJCQkJaWYgKCB0cnVlID09PSAkcmVzdWx0ICkgewoJCQkJCgkJCQkJLy8gTm93IHdlIG5lZWQgdG8gdG
FrZSBlYWNoIGl0ZW0gYW5kIHJ1biBhbiB1bnppcCBmb3IgaXQgLSB1bmZvcnR1bmF0ZWx5IHRoZXJlIGlzI
G5vIGVhc3kgd2F5IG9mIGNvbWJpbmluZwoJCQkJCS8vIGFyYml0cmFyeSBleHRyYWN0aW9ucyBpbnRvIGEg
c2luZ2xlIGNvbW1hbmQgaWYgc29tZSBtaWdodCBiZSB0byBhIAoJCQkJCWZvcmVhY2ggKCAkaXRlbXMgYXM
gJHdoYXQgPT4gJHdoZXJlICkgewoJCQkKCQkJCQkJJHJlbmFtZV9yZXF1aXJlZCA9IGZhbHNlOwoJCQkJCQ
kkcmVzdWx0ID0gZmFsc2U7CgkJCQkKCQkJCQkJLy8gRGVjaWRlIGhvdyB0byBleHRyYWN0IGJhc2VkIG9uI
HdoZXJlCgkJCQkJCWlmICggZW1wdHkoICR3aGVyZSkgKSB7CgkJCQkJCgkJCQkJCQkvLyBGaXJzdCB3ZSds
bCBleHRyYWN0IGFuZCB0aGVuIGp1bmsgdGhlIHBhdGgKCQkJCQkJCSRyZXN1bHQgPSAkemEtPmV4dHJhY3R
UbyggJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgJHdoYXQgKTsKCQkJCQkJCQkKCQkJCQkJCS8vIFVubGlrZS
BleGVjIHppcCB3ZSBoYXZlIHRvIGVmZmVjdGl2ZWx5IGp1bmsgdGhlIHBhdGggYWZ0ZXIgdGhlIGV4dHJhY
3Rpb24KCQkJCQkJCS8vIERvIHRoaXMgYnkgcmVuYW1pbmcgdGhlIGZpbGUgdG8gdGhlIGRlc3RpbmF0aW9u
IGRpcmVjdG9yeSBhbmQgdGhlbiBnZXR0aW5nIHJpZCBvZiBhbnkgZGlyZWN0b3J5CgkJCQkJCQkvLyBzdHJ
1Y3R1cmUgaXQgd2FzIHVuZGVyLiBJZiBkaXJuYW1lIGlzIG5vdCAuIHRoZW4gd2Uga25vdyB0aGVyZSBpcy
BhIGRpcmVjdHJ5IHBhdGggYW5kIG5vdAoJCQkJCQkJLy8ganVzdCBhIHNpbXBsZSBmaWxlIG5hbWUgKHJlb
WVtYmVyIHRoYXQgJHdoYXQgc2hvdWxkIF9ub3RfIGhhdmUgYW55IGxlYWRpbmcgc2xhc2ggd2hldGhlcgoJ
CQkJCQkJLy8gaXQgaXMgYSBmaWxlcGF0aCBvciBhIHNpbXBsZSBmaWxlbmFtZSkKCQkJCQkJCWlmICggIi4
iICE9IGRpcm5hbWUoICR3aGF0ICkgKSB7CgkJCQkJCQkKCQkJCQkJCQlyZW5hbWUoICRkZXN0aW5hdGlvbl
9kaXJlY3RvcnkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHdoYXQsCgkJCQkJCQkJCQkkZGVzdGluYXRpb
25fZGlyZWN0b3J5IC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIGJhc2VuYW1lKCAkd2hhdCkgKTsKCQkJCQkJ
CQkJCQoJCQkJCQkJCS8vIEdldCB0aGUgcGF0aCBjb21wb25lbnQgb2YgJHdoYXQgLSBub3RlIHRoYXQgZGl
ybmFtZSgpIGFkZHMgYSBsZWFkaW5nIHNsYXNoCgkJCQkJCQkJLy8gZXZlbiBpZiBub25lIHdhcyBwcmVzZW
50IG9yaWdpbmFsbHkuIFdlIG11c3QgZ2V0IHRoZSBmaXJzdCBkaXJlY3RvcnkgY29tcG9uZW50IG9ubHkKC
QkJCQkJCQkvLyBzbyB3ZSBjYW4gZG8gYSByZWN1cnNpdmUgZGVsZXRlIG9uIGl0LiBUaGlzIGlzIGEgYml0
IGtsdW5reSBidXQgZnVuY3Rpb25hbC4KCQkJCQkJCQkkd2hhdHBhdGggPSAkd2hhdDsKCQkJCQkJCQlkbyB
7CgkJCQkJCQkJCSR3aGF0cGF0aCA9IGRpcm5hbWUoICR3aGF0cGF0aCApOwoJCQkJCQkJCX0gd2hpbGUgKC
AxIDwgc3RybGVuKCBkaXJuYW1lKCAkd2hhdHBhdGggKSApICk7CgoJCQkJCQkJCS8vIE5vdyB3ZSBjYW4gZ
G8gdGhlIHJlY3Vyc2l2ZSBkZWxldGUgZnJvbSB0aGF0IHRvcCBsZXZlbCBjb21wb25lbnQKCQkJCQkJCQkk
dGhpcy0+ZGVsZXRlX2RpcmVjdG9yeV9yZWN1cnNpdmUoICRkZXN0aW5hdGlvbl9kaXJlY3RvcnkgLiAkd2h
hdHBhdGggKTsKCgkJCQkJCQl9CgkJCQkJCQkJCQkJCQkJCQoJCQkJCQoJCQkJCQl9IGVsc2VpZiAoICFlbX
B0eSggJHdoZXJlICkgKSB7CgkJCQkJCgkJCQkJCQlpZiAoICR3aGF0ID09PSAkd2hlcmUgKSB7CgkJCQkJC
QkKCQkJCQkJCQkvLyBDaGVjayBmb3Igd2lsZGNhcmQgZGlyZWN0b3J5IGV4dHJhY3Rpb24gbGlrZSBkaXIv
KiA9PiBkaXIvKgoJCQkJCQkJCWlmICggIioiID09IHN1YnN0ciggdHJpbSggJHdoYXQgKSwgLTEgKSApIHs
KCQkJCQkJCQkKCQkJCQkJCQkJLy8gR2V0IG91ciBwYXRoIG1hdGNoIHN0cmluZyAoanVzdCBjbGlwIG9mZi
B0aGUgd2lsZGNhcmQpCgkJCQkJCQkJCSR3aGF0cm9vdCA9IHN1YnN0ciggdHJpbSggJHdoYXQgKSwgMCwgL
TEgKTsKCQkJCQkJCQkJJGZpbGVfY291bnQgPSAkemEtPm51bUZpbGVzOwoJCQkJCQkJCQoJCQkJCQkJCQkv
LyBDcmlrZXksIGl0J3MgYSBkaXJlY3RvcnkgdHJlZSBleHRyYWN0aW9uIC0gZG9uJ3QgcGFuaWMKCQkJCQk
JCQkJLy8gV2UgbmVlZCB0byBnbyB0aHJvdWdoIHRoZSB3aG9sZSB6aXAgYW5kIGV4dHJhY3QgZWFjaCBmaW
xlIHRoYXQgbWF0Y2hlcwoJCQkJCQkJCQlmb3IgKCAkaSA9IDA7ICRpIDwgJGZpbGVfY291bnQ7ICRpKysgK
SB7CgkJCQkJCQkJCQoJCQkJCQkJCQkJLy8gR2V0IHRoZSBmaWxlbmFtZSBieSBpbmRleCBhbmQgc2VlIGlm
IGl0J3MgaW4gdGhlIHRyZWUKCQkJCQkJCQkJCSRmaWxlbmFtZSA9ICR6YS0+Z2V0TmFtZUluZGV4KCAkaSA
pOwoJCQkJCQkJCQkJaWYgKCAwID09PSBzdHJwb3MoICRmaWxlbmFtZSwgJHdoYXRyb290ICkgKSB7CgkJCQ
kJCQkJCQkKCQkJCQkJCQkJCQkvLyAkd2hhdCBtYXRjaGVkIHRoZSByb290IG9mIHRoaXMgZmlsZW5hbWUgc
28gZXh0cmFjdCBpdAoJCQkJCQkJCQkJCSRyZXN1bHQgPSAkemEtPmV4dHJhY3RUbyggJGRlc3RpbmF0aW9u
X2RpcmVjdG9yeSwgJGZpbGVuYW1lICk7CgoJCQkJCQkJCQkJCWlmICggZmFsc2UgPT09ICRyZXN1bHQgKSB
7CgkJCQkJCQkJCQkJCQoJCQkJCQkJCQkJCQkvLyBBbiBleHRyYWN0aW9uIGZhaWxlZCBzbyBiYWlsIG91dC
BoZXJlIC0gdGhpcyBzaG91bGQganVzdAoJCQkJCQkJCQkJCQkvLyBkcm9wIHVzIHRocm91Z2ggdG8gdGhlI
HBvc3QtcHJvY2Vzc2luZyBvZiAkcmVzdWx0IHdoaWNoIG9uCgkJCQkJCQkJCQkJCS8vIGEgZmFsc2Ugc2hv
dWxkIHRoZW4gZHJvcCB1cyBvdXQgb2YgdGhlIGZvcmVhY2ggbG9vcAoJCQkJCQkJCQkJCQlicmVhazsKCQk
JCQkJCQkJCQkJCgkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJCgkJCQkJCQkJCQl9CgkJCQkJCQkJCQoJCQkJCQ
kJCQl9CgkJCQkJCQkJCgkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkKCQkJCQkJCQkJLy8gSXQncyBqdXN0I
GEgc2luZ2xlIGZpbGUgZXh0cmFjdGlvbiAtIGJyZWF0aCBhIHNpZ24gb2YgcmVsaWVmCgkJCQkJCQkJCS8v
IEV4dHJhY3QgdG8gc2FtZSBkaXJlY3Rvcnkgc3RydWN0dXJlIC0gZG9uJ3QganVuayBwYXRoLCBubyBuZWV
kIHRvIGFkZCB3aGVyZSB0byBkZXN0bmF0aW9uIGFzIGF1dG9tYXRpYwoJCQkJCQkJCQkkcmVzdWx0ID0gJH
phLT5leHRyYWN0VG8oICRkZXN0aW5hdGlvbl9kaXJlY3RvcnksICR3aGF0ICk7CgoJCQkJCQkJCX0KCQkJC
QkJCgkJCQkJCQl9IGVsc2UgewoJCQkJCQkKCQkJCQkJCQkvLyBGaXJzdCB3ZSdsbCBleHRyYWN0IGFuZCB0
aGVuIGp1bmsgdGhlIHBhdGgKCQkJCQkJCQkkcmVzdWx0ID0gJHphLT5leHRyYWN0VG8oICRkZXN0aW5hdGl
vbl9kaXJlY3RvcnksICR3aGF0ICk7CgkJCQkJCQkJCgkJCQkJCQkJLy8gVW5saWtlIGV4ZWMgemlwIHdlIG
hhdmUgdG8gZWZmZWN0aXZlbHkganVuayB0aGUgcGF0aCBhZnRlciB0aGUgZXh0cmFjdGlvbgoJCQkJCQkJC
S8vIERvIHRoaXMgYnkgcmVuYW1pbmcgdGhlIGZpbGUgdG8gdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBh
bmQgdGhlbiBnZXR0aW5nIHJpZCBvZiBhbnkgZGlyZWN0b3J5CgkJCQkJCQkJLy8gc3RydWN0dXJlIGl0IHd
hcyB1bmRlci4gSWYgZGlybmFtZSBpcyBub3QgLiB0aGVuIHdlIGtub3cgdGhlcmUgaXMgYSBkaXJlY3RyeS
BwYXRoIGFuZCBub3QKCQkJCQkJCQkvLyBqdXN0IGEgc2ltcGxlIGZpbGUgbmFtZSAocmVtZW1iZXIgdGhhd
CAkd2hhdCBzaG91bGQgX25vdF8gaGF2ZSBhbnkgbGVhZGluZyBzbGFzaCB3aGV0aGVyCgkJCQkJCQkJLy8g
aXQgaXMgYSBmaWxlcGF0aCBvciBhIHNpbXBsZSBmaWxlbmFtZSkKCQkJCQkJCQlpZiAoICIuIiAhPSBkaXJ
uYW1lKCAkd2hhdCApICkgewoJCQkJCQkJCQoJCQkJCQkJCQlyZW5hbWUoICRkZXN0aW5hdGlvbl9kaXJlY3
RvcnkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHdoYXQsCgkJCQkJCQkJCQkJJGRlc3RpbmF0aW9uX2Rpc
mVjdG9yeSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiBiYXNlbmFtZSggJHdoYXQpICk7CgkJCQkJCQkJCQkJ
CgkJCQkJCQkJCS8vIEdldCB0aGUgcGF0aCBjb21wb25lbnQgb2YgJHdoYXQgLSBub3RlIHRoYXQgZGlybmF
tZSgpIGFkZHMgYSBsZWFkaW5nIHNsYXNoCgkJCQkJCQkJCS8vIGV2ZW4gaWYgbm9uZSB3YXMgcHJlc2VudC
BvcmlnaW5hbGx5LiBXZSBtdXN0IGdldCB0aGUgZmlyc3QgZGlyZWN0b3J5IGNvbXBvbmVudCBvbmx5CgkJC
QkJCQkJCS8vIHNvIHdlIGNhbiBkbyBhIHJlY3Vyc2l2ZSBkZWxldGUgb24gaXQuIFRoaXMgaXMgYSBiaXQg
a2x1bmt5IGJ1dCBmdW5jdGlvbmFsLgoJCQkJCQkJCQkkd2hhdHBhdGggPSAkd2hhdDsKCQkJCQkJCQkJZG8
gewoJCQkJCQkJCQkJJHdoYXRwYXRoID0gZGlybmFtZSggJHdoYXRwYXRoICk7CgkJCQkJCQkJCX0gd2hpbG
UgKCAxIDwgc3RybGVuKCBkaXJuYW1lKCAkd2hhdHBhdGggKSApICk7CgoJCQkJCQkJCQkvLyBOb3cgd2UgY
2FuIGRvIHRoZSByZWN1cnNpdmUgZGVsZXRlIGZyb20gdGhhdCB0b3AgbGV2ZWwgY29tcG9uZW50CgkJCQkJ
CQkJCSR0aGlzLT5kZWxldGVfZGlyZWN0b3J5X3JlY3Vyc2l2ZSggJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSA
uICR3aGF0cGF0aCApOwoKCQkJCQkJCQl9CgkJCQkJCQkJCQkJCQkJCQoJCQkJCQkJCS8vIFdpbGwgbmVlZC
B0byByZW5hbWUgaWYgdGhlIGV4dHJhY3QgaXMgb2sKCQkJCQkJCQkkcmVuYW1lX3JlcXVpcmVkID0gdHJ1Z
TsKCQkJCQkJCgkJCQkJCQl9CgkJCQkJCgkJCQkJCX0KCQkJCQoJCQkJCQkvLyBOb3RlOiB3ZSBkb24ndCBv
cGVuIHRoZSBmaWxlIGFuZCB0aGVuIGRvIHN0dWZmIGJ1dCBpdCdzIGFsbCBkb25lIGluIG9uZSBhY3Rpb24
KCQkJCQkJLy8gc28gd2UgbmVlZCB0byBpbnRlcnByZXQgdGhlIHJldHVybiBjb2RlIHRvIGRlZGlkZSB3aG
F0IHRvIGRvCgkJCQkJCS8vIEN1cnJlbnRseSB3ZSBjYW4gb25seSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHN1Y
2Nlc3MgYW5kIGZhaWx1cmUgYnV0IG5vIGZpbmVyIGdyYWluCgkJCQkJCWlmICggdHJ1ZSA9PT0gJHJlc3Vs
dCApIHsKCQkJCQkKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50Zig
gX18oJ3ppcGFyY2hpdmUgZXh0cmFjdGVkIGZpbGUgY29udGVudHMgKCUxJHMgZnJvbSAlMiRzIHRvICUzJH
MlNCRzKScsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR3aGF0LCAkemlwX2ZpbGUsICRkZXN0aW5hdGlvb
l9kaXJlY3RvcnksICR3aGVyZSApICk7CgoJCQkJCQkJLy8gUmVuYW1lIGlmIHdlIGhhdmUgdG8KCQkJCQkJ
CWlmICggdHJ1ZSA9PT0gJHJlbmFtZV9yZXF1aXJlZCkgewoJCQkJCQkJCgkJCQkJCQkJLy8gTm90ZTogd2U
ganVua2VkIHRoZSBwYXRoIG9uIHRoZSBleHRyYWN0aW9uIHNvIGp1c3QgdGhlIGZpbGVuYW1lIG9mICR3aG
F0IGlzIHRoZSBzb3VyY2UgYnV0CgkJCQkJCQkJLy8gJHdoZXJlIGNvdWxkIGJlIGEgc2ltcGxlIGZpbGUgb
mFtZSBvciBhIGZpbGUgcGF0aCAKCQkJCQkJCQkkcmVzdWx0ID0gJHJlc3VsdCAmJiByZW5hbWUoICRkZXN0
aW5hdGlvbl9kaXJlY3RvcnkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gYmFzZW5hbWUoICR3aGF0ICksCgk
JCQkJCQkJCQkJCQkJCSAkZGVzdGluYXRpb25fZGlyZWN0b3J5IC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuIC
R3aGVyZSApOwoJCQkJCQkJCgkJCQkJCQl9CgoJCQkJCQl9IGVsc2UgewoJCQkJCQoJCQkJCQkJLy8gRm9yI
G5vdyBsZXQncyBqdXN0IHByaW50IHRoZSBlcnJv
ciBjb2RlIGFuZCBkcm9wIHRocm91Z2gKCQkJCQkJCSRlcnJvcl9zdHJpbmcgPSAkemEtPmVycm9ySW5mbyg
pOwoJCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnemlwYX
JjaGl2ZSBmYWlsZWQgdG8gb3Blbi9wcm9jZXNzIGZpbGUgdG8gZXh0cmFjdCBmaWxlIGNvbnRlbnRzICglM
SRzIGZyb20gJTIkcyB0byAlMyRzJTQkcykgLSBFcnJvciBJbmZvOiAlNSRzLicsJ2l0LWwxMG4tYmFja3Vw
YnVkZHknICksICR3aGF0LCAkemlwX2ZpbGUsICRkZXN0aW5hdGlvbl9kaXJlY3RvcnksICR3aGVyZSwgJGV
ycm9yX3N0cmluZyApICk7CgkJCQkJCgkJCQkJCQkvLyBNYXkgc2VlbSByZWR1bmRhbnQgYnV0IGJlbHQnbi
dicmFjZXMKCQkJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkJCQoJCQkJCQl9CgkJCQkJCgkJCQkJCS8vI
ElmIHRoZSBleHRyYWN0aW9uIGZhaWxlZCAob3IgcmVuYW1lIGFmdGVyIGV4dHJhY3Rpb24pIHRoZW4gYnJl
YWsgb3V0IG9mIHRoZSBmb3JlYWNoIGFuZCBzaW1wbHkgcmV0dXJuIGZhbHNlCgkJCQkJCWlmICggZmFsc2U
gPT09ICRyZXN1bHQgKSB7CgkJCQkJCgkJCQkJCQlicmVhazsKCQkJCQkJCgkJCQkJCX0KCQkJCQkKCQkJCQ
l9CgkJCQkKCQkJCX0gZWxzZSB7CgkJCQkKCQkJCQkvLyBDb3VsZG4ndCBvcGVuIGFyY2hpdmUgLSB3aWxsI
HJldHVybiBmb3IgbWF5YmUgYW5vdGhlciBtZXRob2QgdG8gdHJ5CgkJCQkJJGVycm9yX3N0cmluZyA9ICR6
YS0+ZXJyb3JJbmZvKCAkcmVzdWx0ICk7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHM
nLCBzcHJpbnRmKCBfXygnWmlwQXJjaGl2ZSBmYWlsZWQgdG8gb3BlbiBmaWxlIHRvIGV4dHJhY3QgY29udG
VudHMgKCUxJHMgdG8gJTIkcykgLSBFcnJvciBJbmZvOiAlMyRzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknI
CksICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSwgJGVycm9yX3N0cmluZyApICk7CgoJCQkJ
CS8vIFJldHVybiBhbiBlcnJvciBjb2RlIGFuZCBhIGRlc2NyaXB0aW9uIC0gdGhpcyBuZWVkcyB0byBiZSB
oYW5kbGVkIG1vcmUgZ2VuZXJpY2FsbHkKCQkJCQkvLyRyZXN1bHQgPSBhcnJheSggMSwgIlVuYWJsZSB0by
BnZXQgYXJjaGl2ZSBjb250ZW50cyIgKTsKCQkJCQkvLyBDdXJyZW50bHkgYXMgd2UgYXJlIHJldHVybmluZ
yBhbiBhcnJheSBhcyBhIHZhbGlkIHJlc3VsdCB3ZSBqdXN0IHJldHVybiBmYWxzZSBvbiBmYWlsdXJlCgkJ
CQkJJHJlc3VsdCA9IGZhbHNlOwoKCQkJCX0KCQkJCQoJCQkJJHphLT5jbG9zZSgpOwoJCQkKCQkJfQoJCQk
KCQkgIAlpZiAoIE5VTEwgIT0gJHphICkgeyB1bnNldCggJHphICk7IH0JCQoJCQkKCQkJcmV0dXJuICRyZX
N1bHQ7CgkJCQkJCQoJCX0KCQkKCQkvKioKCQkgKglmaWxlX2V4aXN0cygpCgkJICoJCgkJICoJVGVzdHMgd
2hldGhlciBhIGZpbGUgKHdpdGggcGF0aCkgZXhpc3RzIGluIHRoZSBnaXZlbiB6aXAgZmlsZQoJCSAqCUlm
IGxlYXZlX29wZW4gaXMgdHJ1ZSB0aGVuIHRoZSB6aXAgb2JqZWN0IHdpbGwgYmUgbGVmdCBvcGVuIGZvciB
mYXN0ZXIgY2hlY2tpbmcgZm9yIHN1YnNlcXVlbnQgZmlsZXMgd2l0aGluIHRoaXMgemlwCgkJICoJCgkJIC
oJQHBhcmFtCQlzdHJpbmcJJHppcF9maWxlCQlUaGUgemlwIGZpbGUgdG8gY2hlY2sKCQkgKglAcGFyYW0JC
XN0cmluZwkkbG9jYXRlX2ZpbGUJVGhlIGZpbGUgdG8gdGVzdCBmb3IKCQkgKglAcGFyYW0JCWJvb2wJJGxl
YXZlX29wZW4JCU9wdGlvbmFsOiBUcnVlIGlmIHRoZSB6aXAgZmlsZSBzaG91bGQgYmUgbGVmdCBvcGVuCgk
JICoJQHJldHVybgkJYm9vbC9hcnJheQkJCQlUcnVlIGlmIHRoZSBmaWxlIGlzIGZvdW5kIGluIHRoZSB6aX
AgYW5kIGZhbHNlIGlmIG5vdCwgYXJyYXkgZm9yIG90aGVyIHByb2JsZW0KCQkgKgoJCSAqLwoJCXB1YmxpY
yBmdW5jdGlvbiBmaWxlX2V4aXN0cyggJHppcF9maWxlLCAkbG9jYXRlX2ZpbGUsICRsZWF2ZV9vcGVuID0g
ZmFsc2UgKSB7CgkJCgkJCSRyZXN1bHQgPSBhcnJheSggMSwgIkdlbmVyaWMgZmFpbHVyZSBpbmRpY2F0aW9
uIiApOwoJCQkkemEgPSBOVUxMOwoJCQkKCQkJLy8gVGhpcyBzaG91bGQgZ2l2ZSB1cyBhIG5ldyBhcmNoaX
ZlIG9iamVjdCwgb2Ygbm90IGNhdGNoIGl0IGFuZCBiYWlsIG91dAoJCQl0cnkgewoJCQkKCQkJCSR6YSA9I
G5ldyBwbHVnaW5idWRkeV9aaXBBcmNoaXZlKCk7CgkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQoJCQl9IGNh
dGNoICggRXhjZXB0aW9uICRlICkgewoJCQkKCQkJCS8vIFNvbWV0aGluZyBmaXNoeSAtIHRoZSBtZXRob2R
zIGluZGljYXRlZCB6aXBhcmNoaXZlIGJ1dCB3ZSBjb3VsZG4ndCBmaW5kIHRoZSBjbGFzcwoJCQkJJGVycm
9yX3N0cmluZyA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0Y
WlscycsIHNwcmludGYoIF9fKCd6aXBhcmNoaXZlIGluZGljYXRlZCBhcyBhdmFpbGFibGUgbWV0aG9kIGJ1
dCBlcnJvciByZXBvcnRlZDogJTEkcycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICRlcnJvcl9zdHJpbmc
gKSApOwoKCQkJCS8vIFJldHVybiBhbiBlcnJvciBjb2RlIGFuZCBhIGRlc2NyaXB0aW9uIC0gdGhpcyBuZW
VkcyB0byBiZSBoYW5kbGVkIG1vcmUgZ2VuZXJpY2FsbHkKCQkJCSRyZXN1bHQgPSBhcnJheSggMSwgIkNsY
XNzIG5vdCBhdmFpbGFibGUgdG8gbWF0Y2ggbWV0aG9kIiApOwoJCQkJCgkJCX0KCQkJCgkJCS8vIE9ubHkg
Y29udGludWUgaWYgd2UgaGF2ZSBhIHZhbGlkIGFyY2hpdmUgb2JqZWN0CgkJCWlmICggdHJ1ZSA9PT0gJHJ
lc3VsdCApIHsKCQkJCQoJCQkJJHJlc3VsdCA9ICR6YS0+b3BlbiggJHppcF9maWxlICk7CgkJCQkKCQkJCS
8vIE1ha2Ugc3VyZSB3ZSBvcGVuZWQgdGhlIHppcCBvawoJCQkJaWYgKCB0cnVlID09PSAkcmVzdWx0ICkge
woJCQkJCgkJCQkJLy8gTm93IHRyeSBhbmQgZmluZCB0aGUgaW5kZXggb2YgdGhlIGZpbGUKCQkJCQkkaW5k
ZXggPSAkemEtPmxvY2F0ZU5hbWUoICRsb2NhdGVfZmlsZSApOwoJCQkJCQoJCQkJCS8vIElmIHdlIGdvdCB
hbiBpbmRleCB3ZSBmb3VuZCBpdCBvdGhlcndpc2Ugbm90IGZvdW5kCgkJCQkJaWYgKCBmYWxzZSAhPT0gJG
luZGV4ICkgewoJCQkJCQoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGa
WxlIGZvdW5kICh6aXBhcmNoaXZlKScsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gJGxvY2F0
ZV9maWxlICk7CgkJCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCQkKCQkJCQl9IGVsc2UgewoJCQkJCQoJCQk
JCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGaWxlIG5vdCBmb3VuZCAoemlwYX
JjaGl2ZSknLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzogJyAuICRsb2NhdGVfZmlsZSApOwoJCQkJC
QkkcmVzdWx0ID0gZmFsc2U7CgkJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCX0gZWxzZSB7CgkJCQkKCQkJCQkv
LyBDb3VsZG4ndCBvcGVuIGFyY2hpdmUgLSB3aWxsIHJldHVybiBmb3IgbWF5YmUgYW5vdGhlciBtZXRob2Q
gdG8gdHJ5CgkJCQkJJGVycm9yX3N0cmluZyA9ICR6YS0+ZXJyb3JJbmZvKCAkcmVzdWx0ICk7CgkJCQkJcG
JfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnWmlwQXJjaGl2ZSBmYWlsZ
WQgdG8gb3BlbiBmaWxlIHRvIGNoZWNrIGlmIGZpbGUgZXhpc3RzIChsb29raW5nIGZvciAlMSRzIGluICUy
JHMpIC0gRXJyb3IgSW5mbzogJTMkcy4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkbG9jYXRlX2ZpbGU
gLCAkemlwX2ZpbGUsICRlcnJvcl9zdHJpbmcgKSApOwoKCQkJCQkvLyBSZXR1cm4gYW4gZXJyb3IgY29kZS
BhbmQgYSBkZXNjcmlwdGlvbiAtIHRoaXMgbmVlZHMgdG8gYmUgaGFuZGxlZCBtb3JlIGdlbmVyaWNhbGx5C
gkJCQkJJHJlc3VsdCA9IGFycmF5KCAxLCAiRmFpbGVkIHRvIG9wZW4vcHJvY2VzcyBmaWxlIiApOwoKCQkJ
CX0KCQkJCgkJCQkvLyBXZSBoYXZlIGZpbmlzaGVkIHdpdGggdGhlIGFyY2hpdmUgKGxlYXZlX29wZW4gaWd
ub3JlZCBmb3Igbm93KQoJCQkJJHphLT5jbG9zZSgpOwoJCQkJCgkJCX0KCQkJCgkJICAJaWYgKCBOVUxMIC
E9ICR6YSApIHsgdW5zZXQoICR6YSApOyB9CQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkJCgkJfQoJC
QoJCS8qCWdldF9maWxlX2xpc3QoKQoJCSAqCQoJCSAqCUdldCBhbiBhcnJheSBvZiBhbGwgZmlsZXMgaW4g
YSB6aXAgZmlsZSB3aXRoIHNvbWUgZmlsZSBwcm9wZXJ0aWVzLgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5
nCQkkemlwX2ZpbGUJVGhlIGZpbGUgdG8gbGlzdCB0aGUgY29udGVudCBvZgoJCSAqCUByZXR1cm4JCWJvb2
x8YXJyYXkJCQkJZmFsc2Ugb24gZmFpbHVyZSwgb3RoZXJ3aXNlIGFycmF5IG9mIGZpbGUgcHJvcGVydGllc
yAobWF5IGJlIGVtcHR5KQoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBnZXRfZmlsZV9saXN0KCAkemlwX2Zp
bGUgKSB7CgkJCgkJCSRmaWxlX2xpc3QgPSBhcnJheSgpOwoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCSR6YSA
9IE5VTEw7CgkJCSRzdGF0ID0gYXJyYXkoKTsKCQkJCgkJCS8vIFRoaXMgc2hvdWxkIGdpdmUgdXMgYSBuZX
cgYXJjaGl2ZSBvYmplY3QsIG9mIG5vdCBjYXRjaCBpdCBhbmQgYmFpbCBvdXQKCQkJdHJ5IHsKCQkJCgkJC
QkkemEgPSBuZXcgcGx1Z2luYnVkZHlfWmlwQXJjaGl2ZSgpOwoJCQkJJHJlc3VsdCA9IHRydWU7CgkJCQkK
CQkJfSBjYXRjaCAoIEV4Y2VwdGlvbiAkZSApIHsKCQkJCgkJCQkvLyBTb21ldGhpbmcgZmlzaHkgLSB0aGU
gbWV0aG9kcyBpbmRpY2F0ZWQgemlwYXJjaGl2ZSBidXQgd2UgY291bGRuJ3QgZmluZCB0aGUgY2xhc3MKCQ
kJCSRlcnJvcl9zdHJpbmcgPSAkZS0+Z2V0TWVzc2FnZSgpOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1c
yggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnemlwYXJjaGl2ZSBpbmRpY2F0ZWQgYXMgYXZhaWxhYmxlIG1l
dGhvZCBidXQgZXJyb3IgcmVwb3J0ZWQ6ICUxJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkZXJyb3J
fc3RyaW5nICkgKTsKCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQoJCQl9CgkJCQoJCQkvLyBPbmx5IGNvbn
RpbnVlIGlmIHdlIGhhdmUgYSB2YWxpZCBhcmNoaXZlIG9iamVjdAoJCQlpZiAoIHRydWUgPT09ICRyZXN1b
HQgKSB7CgkJCQkKCQkJCSRyZXN1bHQgPSAkemEtPm9wZW4oICR6aXBfZmlsZSApOwoJCQkJCgkJCQkvLyBN
YWtlIHN1cmUgd2Ugb3BlbmVkIHRoZSB6aXAgb2sKCQkJCWlmICggdHJ1ZSA9PT0gJHJlc3VsdCApIHsKCQk
JCQoJCQkJCWlmICggKCAkZmlsZV9jb3VudCA9ICR6YS0+bnVtRmlsZXMgKSA+IDAgKSB7CgkJCQkKCQkJCQ
kJLy8gR2V0IGVhY2ggZmlsZSBpbiBzZXF1ZW5jZSBieSBpbmRleCBhbmQgZ2V0IHRoZSBwcm9wZXJ0aWVzC
gkJCQkJCWZvciggJGkgPSAwOyAkaSA8ICRmaWxlX2NvdW50OyAkaSsrICl7CgkJCQkJCQoJCQkJCQkJJHN0
YXQgPSAkemEtPnN0YXRJbmRleCggJGkgKTsKCQkJCQkJCQoJCQkJCQkJLy8gQXNzdW1lIGFsbCB0aGVzZSB
rZXlzIGRvIGV4aXN0IChjb25zaWRlciB0ZXN0aW5nKQoJCQkJCQkJJGZpbGVfbGlzdFtdID0gYXJyYXkoCg
kJCQkJCQkJJHN0YXRbJ25hbWUnXSwKCQkJCQkJCQkkc3RhdFsnc2l6ZSddLAoJCQkJCQkJCSRzdGF0Wydjb
21wX3NpemUnXSwKCQkJCQkJCQkkc3RhdFsnbXRpbWUnXSwKCQkJCQkJCSk7CgkJCQkJCQkKCQkJCQkJfQoJ
CQkJCQkKCQkJCQl9CgkJCQkJCgkJCQkJCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHM
nLCBzcHJpbnRmKCBfXygnemlwYXJjaGl2ZSBsaXN0ZWQgZmlsZSBjb250ZW50cyAoJTEkcyknLCdpdC1sMT
BuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2ZpbGUgKSApOwoKCQkJCQkkdGhpcy0+bG9nX2FyY2hpdmVfZmlsZ
V9zdGF0cyggJHppcF9maWxlICk7CQoKCQkJCQkkcmVzdWx0ID0gJiRmaWxlX2xpc3Q7CgkJCQkJCgkJCQl9
IGVsc2UgewoJCQkJCgkJCQkJLy8gQ291bGRuJ3Qgb3BlbiBhcmNoaXZlIC0gd2lsbCByZXR1cm4gZm9yIG1
heWJlIGFub3RoZXIgbWV0aG9kIHRvIHRyeQoJCQkJCSRlcnJvcl9zdHJpbmcgPSAkemEtPmVycm9ySW5mby
ggJHJlc3VsdCApOwoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX
18oJ1ppcEFyY2hpdmUgZmFpbGVkIHRvIG9wZW4gZmlsZSB0byBsaXN0IGNvbnRlbnRzICglMSRzKSAtIEVy
cm9yIEluZm86ICUyJHMuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlLCAkZXJyb3Jfc3R
yaW5nICkgKTsKCgkJCQkJLy8gUmV0dXJuIGFuIGVycm9yIGNvZGUgYW5kIGEgZGVzY3JpcHRpb24gLSB0aG
lzIG5lZWRzIHRvIGJlIGhhbmRsZWQgbW9yZSBnZW5lcmljYWxseQoJCQkJCS8vJHJlc3VsdCA9IGFycmF5K
CAxLCAiVW5hYmxlIHRvIGdldCBhcmNoaXZlIGNvbnRlbnRzIiApOwoJCQkJCS8vIEN1cnJlbnRseSBhcyB3
ZSBhcmUgcmV0dXJuaW5nIGFuIGFycmF5IGFzIGEgdmFsaWQgcmVzdWx0IHdlIGp1c3QgcmV0dXJuIGZhbHN
lIG9uIGZhaWx1cmUKCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgoJCQkJfQoJCQkJCgkJCQkkemEtPmNsb3NlKC
k7CgkJCQoJCQl9CgkJCQoJCSAgCWlmICggTlVMTCAhPSAkemEgKSB7IHVuc2V0KCAkemEgKTsgfQkJCgkJC
QoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoJCQoJCS8qCXNldF9jb21tZW50KCkKCQkgKgkKCQkgKglS
ZXRyaWV2ZSBhcmNoaXZlIGNvbW1lbnQuCgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJCQkkemlwX2ZpbGU
JCUZpbGVuYW1lIG9mIGFyY2hpdmUgdG8gc2V0IGNvbW1lbnQgb24uCgkJICoJQHBhcmFtCQlzdHJpbmcJCQ
kkY29tbWVudAkJQ29tbWVudCB0byBhcHBseSB0byBhcmNoaXZlLgoJCSAqCUByZXR1cm4JCWJvb2wJCQkJC
QkJdHJ1ZSBvbiBzdWNjZXNzLCBvdGhlcndpc2UgZmFsc2UuCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIHNl
dF9jb21tZW50KCAkemlwX2ZpbGUsICRjb21tZW50ICkgewoJCQoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCSR
6YSA9IE5VTEw7CgkJCQoJCQkvLyBUaGlzIHNob3VsZCBnaXZlIHVzIGEgbmV3IGFyY2hpdmUgb2JqZWN0LC
BvZiBub3QgY2F0Y2ggaXQgYW5kIGJhaWwgb3V0CgkJCXRyeSB7CgkJCQoJCQkJJHphID0gbmV3IHBsdWdpb
mJ1ZGR5X1ppcEFyY2hpdmUoKTsKCQkJCSRyZXN1bHQgPSB0cnVlOwoJCQkJCgkJCX0gY2F0Y2ggKCBFeGNl
cHRpb24gJGUgKSB7CgkJCQoJCQkJLy8gU29tZXRoaW5nIGZpc2h5IC0gdGhlIG1ldGhvZHMgaW5kaWNhdGV
kIHppcGFyY2hpdmUgYnV0IHdlIGNvdWxkbid0IGZpbmQgdGhlIGNsYXNzCgkJCQkkZXJyb3Jfc3RyaW5nID
0gJGUtPmdldE1lc3NhZ2UoKTsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3Bya
W50ZiggX18oJ3ppcGFyY2hpdmUgaW5kaWNhdGVkIGFzIGF2YWlsYWJsZSBtZXRob2QgYnV0IGVycm9yIHJl
cG9ydGVkOiAlMSRzJywnaXQtbDEwbi1iYWNrdXB
idWRkeScgKSwgJGVycm9yX3N0cmluZyApICk7CgkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCQkKCQkJfQoJCQ
kKCQkJLy8gT25seSBjb250aW51ZSBpZiB3ZSBoYXZlIGEgdmFsaWQgYXJjaGl2ZSBvYmplY3QKCQkJaWYgK
CB0cnVlID09PSAkcmVzdWx0ICkgewoJCQkJCgkJCQkkcmVzdWx0ID0gJHphLT5vcGVuKCAkemlwX2ZpbGUg
KTsKCQkJCQoJCQkJLy8gTWFrZSBzdXJlIGF0IGxlYXN0IHRoZSB6aXAgZmlsZSBvcGVuZWQgb2sKCQkJCWl
mICggdHJ1ZSA9PT0gJHJlc3VsdCApIHsKCQkJCQoJCQkJCS8vIFNldCB0aGUgY29tbWVudCAtIHRydWUgb2
4gc3VjY2VzcywgZmFsc2Ugb24gZmFpbHVyZQoJCQkJCSRyZXN1bHQgPSAkemEtPnNldEFyY2hpdmVDb21tZ
W50KCAkY29tbWVudCApOwoJCQkJCQoJCQkJCS8vIElmIHdlIGdvdCBiYWNrIHRydWUgdGhlbiBhbGwgaXMg
d2VsbCB3aXRoIHRoZSB3b3JsZAoJCQkJCWlmICggdHJ1ZSA9PT0gJHJlc3VsdCApIHsKCQkJCQkKCQkJCQk
JcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnWmlwQXJjaGl2ZSBzZX
QgY29tbWVudCBpbiBmaWxlICUxJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2ZpbGUgKSApO
woJCQkJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCQkJCgkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gSWYg
d2UgZmFpbGVkIHRvIHNldCB0aGUgY29tbW5lbnQgdGhlbiBsb2cgaXQgKD8pIGFuZCBkcm9wIHRocm91Z2g
KCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnWmlwQXJjaG
l2ZSBmYWlsZWQgdG8gc2V0IGNvbW1lbnQgaW4gZmlsZSAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgK
SwgJHppcF9maWxlICkgKTsKCQkJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCQkKCQkJCQl9CgkJCQkJCQoJ
CQkJfSBlbHNlIHsKCQkJCQoJCQkJCS8vIElmIHdlIGNvdWxkbid0IG9wZW4gdGhlIHppcCBmaWxlIHRoZW4
gbG9nIGl0ICg/KSBhbmQgZHJvcCB0aHJvdWdoCgkJCQkJJGVycm9yX3N0cmluZyA9ICR6YS0+ZXJyb3JJbm
ZvKCAkcmVzdWx0ICk7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmK
CBfXygnWmlwQXJjaGl2ZSBmYWlsZWQgdG8gb3BlbiBmaWxlIHRvIHNldCBjb21tZW50IGluIGZpbGUgJTEk
cyAtIEVycm9yIEluZm86ICUyJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2ZpbGUsICRlcnJ
vcl9zdHJpbmcgKSApOwoJCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCQkJCQkJCQoJCQkJfQoJCQkJCQkJCQ
oJCQkJJHphLT5jbG9zZSgpOwoJCQkJCgkJCX0KCQkJCgkJICAJaWYgKCBOVUxMICE9ICR6YSApIHsgdW5zZ
XQoICR6YSApOyB9CQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgoJCS8qCWdldF9jb21tZW50
KCkKCQkgKgkKCQkgKglSZXRyaWV2ZSBhcmNoaXZlIGNvbW1lbnQuCgkJICoJCgkJICoJQHBhcmFtCQlzdHJ
pbmcJCSR6aXBfZmlsZQkJRmlsZW5hbWUgb2YgYXJjaGl2ZSB0byByZXRyaWV2ZSBjb21tZW50IGZyb20uCg
kJICoJQHJldHVybgkJYm9vbHxzdHJpbmcJCQkJCWZhbHNlIG9uIGZhaWx1cmUsIFppcCBjb21tZW50IG90a
GVyd2lzZS4KCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbW1lbnQoICR6aXBfZmlsZSApIHsKCQkK
CQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkkemEgPSBOVUxMOwoJCQkKCQkJLy8gVGhpcyBzaG91bGQgZ2l2ZSB
1cyBhIG5ldyBhcmNoaXZlIG9iamVjdCwgb2Ygbm90IGNhdGNoIGl0IGFuZCBiYWlsIG91dAoJCQl0cnkgew
oJCQkKCQkJCSR6YSA9IG5ldyBwbHVnaW5idWRkeV9aaXBBcmNoaXZlKCk7CgkJCQkkcmVzdWx0ID0gdHJ1Z
TsKCQkJCQoJCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkKCQkJCS8vIFNvbWV0aGluZyBmaXNo
eSAtIHRoZSBtZXRob2RzIGluZGljYXRlZCB6aXBhcmNoaXZlIGJ1dCB3ZSBjb3VsZG4ndCBmaW5kIHRoZSB
jbGFzcwoJCQkJJGVycm9yX3N0cmluZyA9ICRlLT5nZXRNZXNzYWdlKCk7CgkJCQlwYl9iYWNrdXBidWRkeT
o6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCd6aXBhcmNoaXZlIGluZGljYXRlZCBhcyBhdmFpb
GFibGUgbWV0aG9kIGJ1dCBlcnJvciByZXBvcnRlZDogJTEkcycsJ2l0LWwxMG4tYmFja3VwYnVkZHknICks
ICRlcnJvcl9zdHJpbmcgKSApOwoJCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQkJCgkJCX0KCQkJCgkJCS8vIE9
ubHkgY29udGludWUgaWYgd2UgaGF2ZSBhIHZhbGlkIGFyY2hpdmUgb2JqZWN0CgkJCWlmICggdHJ1ZSA9PT
0gJHJlc3VsdCApIHsKCQkJCQoJCQkJJHJlc3VsdCA9ICR6YS0+b3BlbiggJHppcF9maWxlICk7CgkJCQkKC
QkJCS8vIE1ha2Ugc3VyZSBhdCBsZWFzdCB0aGUgemlwIGZpbGUgb3BlbmVkIG9rCgkJCQlpZiAoIHRydWUg
PT09ICRyZXN1bHQgKSB7CgkJCQkKCQkJCQkvLyBHZXQgdGhlIGNvbW1lbnQgb3IgZmFsc2Ugb24gZmFpbHV
yZSBmb3Igc29tZSByZWFzb24KCQkJCQkvLyBOb3RlOiBDdXJyZW50bHksIGR1ZSB0byBhIGJ1ZyBpbiBaaX
BBcmNoaXZlLCBnZXRBcmNoaXZlQ29tbWVudCgpCgkJCQkJLy8gcmV0dXJucyBmYWxzZSBmb3IgYW4gZW1wd
HkgY29tbWVudCB3aGVyZWFzIGl0IHNob3VsZCBqdXN0IHJldHVybiBhbgoJCQkJCS8vIGVtcHR5IHN0cmlu
Zy4gV2UnbGwgbGl2ZSB3aXRoIHRoaXMgZm9yIG5vdyBhcyBpdCBzaG91bGQgb25seSBoYXBwZW4KCQkJCQk
vLyB3aGVuIGFuIGFyY2hpdmUgaXMgZnJlc2ggYW5kIGhhcyB0aGUgSW50ZWdyaXR5IENoZWNrIHJ1biAob3
Igd2hlbiB0aGUKCQkJCQkvLyBjaGVjayBpcyByZXJ1bikuIE9uY2UgYSBjb21tZW50IGlzIGFkZGVkIHRoZ
SBmdW5jdGlvbiBiZWhhdmVzLgoJCQkJCS8vIElmIGFueSBwcm9ibGVtcyBhcmUgdGhyb3duIHVwIHRoZW4g
dGhlcmUgaXMgdGhlIG9wdGlvbiB0byB1c2UgdGhlCgkJCQkJLy8gYXJjaGl2ZSBwcm9wZXJ0eSBidXQgdGh
hdCBoYXMgYSBkb3duc2lkZSBpbiB0aGF0IGl0IGNhbiBvbmx5IGV2ZXIKCQkJCQkvLyByZXR1cm4gYSBzdH
Jpbmcgc28gaWYgdGhlcmUgcmVhbGx5IGlzIGFuIGVycm9yIGluIHJlYWRpbmcgdGhlIGNvbW1lbnQKCQkJC
QkvLyBpdCBpcyBub3QgcG9zc2libGUgdG8ga25vdyAoQUZBSUspLiBQZXJoYXBzIGFuIGVycm9yIHN0YXR1
cyB2YWx1ZSBtaWdodAoJCQkJCS8vIGJlIHNldCBzb21ld2hlcmU/CgkJCQkJLy8gVGhlIGJ1ZyB3aWxsIGJ
lIHJlcG9ydGVkIHRvIFBIUCBkZXZlbG9wZXJzIGJ1dCB3ZSB3aWxsIHN0aWxsIGhhdmUgdG8KCQkJCQkvLy
BsaXZlIHdpdGggdGhpcyBmb3IgYSB3aGlsZSBiZWNhdXNlIGl0IHRha2VzIGhvc3RzIGFnZXMgdG8gY2F0Y
2ggdXAgdG8KCQkJCQkvLyB1cGRhdGVkIFBIUCB2ZXJzaW9ucy4KCQkJCQkkY29tbWVudCA9ICR6YS0+Z2V0
QXJjaGl2ZUNvbW1lbnQoIFpJUEFSQ0hJVkU6OkZMX1VOQ0hBTkdFRCApOwoJCQkJCS8vJGNvbW1lbnQgPSA
kemEtPmNvbW1lbnQ7CgkJCQkJCgkJCQkJLy8gSWYgd2UgaGF2ZSBhIGNvbW1lbnQgKGV2ZW4gaWYgZW1wdH
kpIHRoZW4gcmV0dXJuIGl0CgkJCQkJaWYgKCBmYWxzZSAhPT0gJGNvbW1lbnQgKSB7CgoJCQkJCQkvLyBOb
3RlOiBuZXcgYXJjaGl2ZXMgd2lsbCByZXR1cm4gYW4gZW1wdHkgY29tbWVudCBpZiBvbmUgd2FzIG5vdCBh
ZGRlZCBhdCBjcmVhdGlvbgoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcml
udGYoIF9fKCdaaXBBcmNoaXZlIHJldHJpZXZlZCBjb21tZW50IGluIGZpbGUgJTEkcycsJ2l0LWwxMG4tYm
Fja3VwYnVkZHknICksICR6aXBfZmlsZSApICk7CgkJCQkJCSRyZXN1bHQgPSAkY29tbWVudDsKCQkJCQkJC
gkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gSWYgd2UgZmFpbGVkIHRvIGdldCB0aGUgY29tbW5lbnQg
dGhlbiBsb2cgaXQgKD8pIGFuZCBkcm9wIHRocm91Z2gKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyg
gJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnWmlwQXJjaGl2ZSBmYWlsZWQgdG8gcmV0cmlldmUgY29tbWVudC
BpbiBmaWxlICUxJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkemlwX2ZpbGUgKSApOwoJCQkJCQkkc
mVzdWx0ID0gZmFsc2U7CgkJCQkJCQoJCQkJCX0KCgkJCQl9IGVsc2UgewoJCQkJCgkJCQkJLy8gSWYgd2Ug
Y291bGRuJ3Qgb3BlbiB0aGUgemlwIGZpbGUgdGhlbiBsb2cgaXQgKD8pIGFuZCBkcm9wIHRocm91Z2gKCQk
JCQkkZXJyb3Jfc3RyaW5nID0gJHphLT5lcnJvckluZm8oICRyZXN1bHQgKTsKCQkJCQlwYl9iYWNrdXBidW
RkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdaaXBBcmNoaXZlIGZhaWxlZCB0byBvcGVuI
GZpbGUgdG8gZ2V0IGNvbW1lbnQgaW4gZmlsZSAlMSRzIC0gRXJyb3IgSW5mbzogJTIkcycsJ2l0LWwxMG4t
YmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGVycm9yX3N0cmluZyApICk7CgkJCQkJJHJlc3VsdCA9IGZ
hbHNlOwoJCQkJCQkJCQkJCgkJCQl9CgkJCQkKCQkJCSR6YS0+Y2xvc2UoKTsKCQkJCQkJCQkKCQkJfSBlbH
NlIHsKCQkJCgkJCQkvLyBTb21ldGhpbmcgZmlzaHkgLSB0aGUgbWV0aG9kcyBpbmRpY2F0ZWQgemlwYXJja
Gl2ZSBidXQgd2UgY291bGRuJ3QgZmluZCB0aGUgY2xhc3MKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMo
ICdkZXRhaWxzJywgX18oJ3ppcGFyY2hpdmUgaW5kaWNhdGVkIGFzIGF2YWlsYWJsZSBtZXRob2QgYnV0IFp
pcEFyY2hpdmUgY2xhc3Mgbm9uLWV4aXN0ZW50JywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJJH
Jlc3VsdCA9IGZhbHNlOwoJCQkJCgkJCX0KCQkJCgkJICAJaWYgKCBOVUxMICE9ICR6YSApIHsgdW5zZXQoI
CR6YSApOyB9CQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJCgl9IC8vIGVuZCBwbHVnaW5i
dWRkeV96YnppcHppcGFyY2hpdmUgY2xhc3MuCQoJCn0KPz4K
###PACKDATA,FILE_END,/lib/zipbuddy/zbzipziparchive.php,importbuddy/lib/zipbuddy/zbz
ipziparchive.php
###PACKDATA,FILE_START,/lib/zipbuddy/zipbuddy.php,importbuddy/lib/zipbuddy/zipbuddy
.php
PD9waHAKLyoqCiAqCXBsdWdpbmJ1ZGR5X3ppcGJ1ZGR5IENsYXNzIChFeHBlcmltZW50YWwpCiAqCiAqCUh
hbmRsZXMgemlwcGluZyBhbmQgdW56aXBwaW5nLCB1c2luZyB0aGUgYmVzdCBtZXRob2RzIGF2YWlsYWJsZS
BhbmQgZmFsbGluZyBiYWNrIHRvIHdvcnNlIG1ldGhvZHMKICoJYXMgbmVlZGVkIGZvciBjb21wYXRpYmlsa
XR5LiBBbGxvd3MgZm9yIGZvcmNpbmcgY29tcGF0aWJpbGl0eSBtb2Rlcy4KICoJCiAqCVZlcnNpb246IDEu
MC4wCiAqCUF1dGhvcjogCiAqCUF1dGhvciBVUkk6IAogKgogKgogKi8KCi8vIFRlc3QgaWYgd2UgYXJlIGx
vYWRpbmcgYXMgc3RhbmRhcmQgb3IgZXhwZXJpbWVudGFsIC0gaWYgZXhwZXJpbWVudGFsIGp1c3QgZHJvcC
B0aHJvdWdoCmlmICggMCA9PT0gc3RyY21wKCBiYXNlbmFtZSggZGlybmFtZSggX19GSUxFX18gKSApLCAne
mlwYnVkZHknICkgKSB7CgkKCS8vIExlZ2FjeSB6aXAuCglpZiAoIGlzc2V0KCBwYl9iYWNrdXBidWRkeTo6
JG9wdGlvbnNbJ2FsdGVybmF0aXZlX3ppcF8xJ10gKSAmJiAoICcxJyA9PSBwYl9iYWNrdXBidWRkeTo6JG9
wdGlvbnNbJ2FsdGVybmF0aXZlX3ppcF8xJ10gKSApIHsKCiAgICAgICAgcGJfYmFja3VwYnVkZHk6OiRvcH
Rpb25zWydhbHRlcm5hdGl2ZV96aXBfMSddID0gMDsKICAgICAgICBwYl9iYWNrdXBidWRkeTo6JG9wdGlvb
nNbJ2FsdGVybmF0aXZlX3ppcF8yJ10gPSAwOwogICAgICAgIHBiX2JhY2t1cGJ1ZGR5OjpzYXZlKCk7CgkK
CQkvKgoJCS8vIFVzZXIgZW5hYmxlZCBleHBlcmltZW50YWwgc28gbG9vayBmb3IgaXQgYW5kIGxvYWQgaXQ
gaXMgZm91bmQsIG90aGVyd2lzZSBsb2cKCQkkbGVnYWN5X3ppcGJ1ZGR5ID0gZGlybmFtZSggZGlybmFtZS
ggX19GSUxFX18gKSApIC4gJy96aXBidWRkeS9sZWdhY3kuemlwYnVkZHkucGhwJzsKCQlpZiAoIEBpc19yZ
WFkYWJsZSggJGxlZ2FjeV96aXBidWRkeSApICkgewoJCQkKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cygg
J2RldGFpbHMnLCAnTG9hZGluZyBsZWdhY3kgemlwYnVkZHkuJyApOwoJCQlyZXF1aXJlX29uY2UoICRsZWd
hY3lfemlwYnVkZHkgKTsKCQkJcmV0dXJuOwoJCQkKCQl9IGVsc2UgewoJCQkKCQkJcGJfYmFja3VwYnVkZH
k6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnTGVnYWN5IFppcCBTeXN0ZW0gZW5hYmxlZCBid
XQgbm90IGZvdW5kL3JlYWRhYmxlIGF0OiAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJCRsZWdh
Y3lfemlwYnVkZHkgKSApOwoJCQkKCQkKCQl9CgkJKi8KCQoJfQoJCgkKCS8vIEN1cnJlbnRseSBsb2FkaW5
nIGFzIHN0YW5kYXJkIHNvIGRldGVybWluZSBpZiB3ZSBuZWVkIHRvIGxvYWQgZXhwZXJpbWVudGFsCglpZi
AoIGlzc2V0KCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2FsdGVybmF0aXZlX3ppcF8yJ10gKSAmJiAoI
CcxJyA9PSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2FsdGVybmF0aXZlX3ppcF8yJ10gKSApIHsKCQoJ
CS8vIFVzZXIgZW5hYmxlZCBleHBlcmltZW50YWwgc28gbG9vayBmb3IgaXQgYW5kIGxvYWQgaXQgaXMgZm9
1bmQsIG90aGVyd2lzZSBsb2cKCQkkZXhwZXJpbWVudGFsX3ppcGJ1ZGR5ID0gZGlybmFtZSggZGlybmFtZS
ggX19GSUxFX18gKSApIC4gJy94emlwYnVkZHkvemlwYnVkZHkucGhwJzsKCQlpZiAoIEBpc19yZWFkYWJsZ
SggJGV4cGVyaW1lbnRhbF96aXBidWRkeSApICkgewoJCQkKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cygg
J2RldGFpbHMnLCAnTG9hZGluZyBleHBlcmltZW50YWwgemlwYnVkZHkuJyApOwoJCQlyZXF1aXJlX29uY2U
oICRleHBlcmltZW50YWxfemlwYnVkZHkgKTsKCQkJCgkJfSBlbHNlIHsKCQkKCQkJcGJfYmFja3VwYnVkZH
k6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnQWx0ZXJuYXRlIFppcCBTeXN0ZW0gZW5hYmxlZ
CBidXQgbm90IGZvdW5kL3JlYWRhYmxlIGF0OiAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJGV4
cGVyaW1lbnRhbF96aXBidWRkeSApICk7CgoJCQoJCX0KCQoJfQoKfSAKCmlmICggIWNsYXNzX2V4aXN0cyg
gInBsdWdpbmJ1ZGR5X3ppcGJ1ZGR5IiApICkgewoKCWNsYXNzIHBsdWdpbmJ1ZGR5X3ppcGJ1ZGR5IHsKCQ
oJCWNvbnN0IFpJUF9NRVRIT0RTX1RSQU5TSUVOVCA9ICdwYl9iYWNrdXBidWRkeV9hdmFpbF96aXBfbWV0a
G9kcyc7CgkJY29uc3QgWklQX01FVEhPRFNfVFJBTlNJRU5UX0VYUEVSSU1FTlRBTCA9ICdwYl9iYWNrdXBi
dWRkeV9hdmFpbF94emlwX21ldGhvZHMnOwoJCWNvbnN0IFpJUF9NRVRIT0RTX1RSQU5TSUVOVF9MSUZFID0
gNDMyMDA7IC8vIDEyIEhvdXJzIC0gcmVhbGx5IHNob3VsZG4ndCBjaGFuZ2UgdW5sZXNzIHNlcnZlciBwcm
9ibGVtCgkJY29uc3QgTk9STV9ESVJFQ1RPUllfU0VQQVJBVE9SID0gJy8nOwoJCWNvbnN0IERJUkVDVE9SW
V9TRVBBUkFUT1JTID0gJy9cXCc7CgoKICAgICAgICAvKioKICAgICAgICAgKiBUaGUgcGx1Z2luIHBhdGgg
Zm9yIHRoaXMgcGx1Z2luCiAgICAgICAgICogCiAgICAgICAgICogQHZhciBzdHJpbmcKICAgICAgICAgKi8
KICAgICAgICBwdWJsaWMgJF9wbHVnaW5QYXRoID0gJyc7CgogICAgICAgIC8qKgogICAgICAgICAqIFRoZS
BwYXRoIG9mIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRoYXQgY2FuIGJlIHVzZWQgZm9yIGNyZWF0aW5nI
GZpbGVzIGFuZCBzdHVmZgogICAgICAgICAqIAogICAgICAgICAqIEB2YXIgc3RyaW5nCiAgICAgICAgICov
CiAgICAgICAgcHJvdGVjdGVkICRfdGVtcGRpciA9ICIiOwogICAgICAgIAogICAgICAgIC8qKgogICAgICA
gICAqIFRoZSBsaXN0IG9mIHppcCBtZXRob2RzIHRoYXQgYXJlIHJlcXVlc3RlZCB0byBiZSB1c2VkCiAgIC
AgICAgICogCiAgICAgICAgICogQHZhciBhcnJheSBvZiBzdHJpbmcKICAgICAgICAgKi8KICAgICAgICBwc
m90ZWN0ZWQgJF9yZXF1ZXN0ZWRfemlwX21ldGhvZHMgPSBhcnJheSgpOwoKICAgICAgICAvKioKICAgICAg
ICAgKiBUaGUgbW9kZSB3aGljaCB0aGUgb2JqZWN0IGlzIGJlaW5nIGNyZWF0ZWQgZm9yCiAgICAgICAgICo
gTm90ZTogVGhpcyBpcyBub3cgaWdub3JlZCBhcyBhbiBvYmplY3QgaXMgaW5zdGFudGlhdGVkIGZvciBib3
RoIHppcCAmIHVuemlwIHNlcnZpY2VzCiAgICAgICAgICogCiAgICAgICAgICogQHZhciBzdHJpbmcKICAgI
CAgICAgKi8KICAgICAgICBwcm90ZWN0ZWQgJF9tb2RlID0gIiI7CgogICAgICAgIC8qKgogICAgICAgICAq
IFN0YXR1cyBtZXNzYWdlIGFycmF5IHVzZWQgd2hlbiBjYWxsaW5nIG90aGVyIG1ldGhvZHMgdG8gZ2V0IHN
0YXR1cyBpbmZvcm1hdGlvbiBiYWNrCiAgICAgICAgICogCiAgICAgICAgICogQHZhciBhcnJheSBvZiBzdH
JpbmcKICAgICAgICAgKi8KICAgICAgICBwdWJsaWMgJF9zdGF0dXMgPSBhcnJheSgpOwoKICAgICAgICAvK
ioKICAgICAgICAgKiBUaGUgbGlzdCBvZiB6aXAgbWV0aG9kcyB0aGF0IGFyZSB0byBiZSB1c2VkIG9yIGFy
ZSBhdmFpbGFibGUKICAgICAgICAgKiBIYWQgdG8gbWFrZSB0aGlzIHB1YmxpYyBmb3Igbm93IGJlY2F1c2U
gc29tZXRoaW5nIGFjY2Vzc2VzIGl0IGRpcmVjdGx5IC0gYmFkIGthcm1hCiAgICAgICAgICogCiAgICAgIC
AgICogQHZhciBhcnJheSBvZiBzdHJpbmcKICAgICAgICAgKi8KICAgICAgICBwdWJsaWMgJF96aXBfbWV0a
G9kcyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgLyoqCiAgICAgICAgICogVGhlIGRldGFpbHMgb2Yg
dGhlIHZhcmlvdXMgemlwIG1ldGhvZHMgdGhhdCBhcmUgYXZhaWxhYmxlCiAgICAgICAgICogSGF2ZSB0byB
tYWtlIHRoaXMgYSBzZXBhcmF0ZSBhcnJheSBpbmRleGVkIGJ5IHRoZSBtZXRob2QgdGFnLiBJZGVhbGx5IH
dvdWxkIGJlIGNvbWJpbmVkCiAgICAgICAgICogd2l0aCB0aGUgemlwIG1ldGhvZHMgYXJyYXkgYnV0IHRoY
XQgd291bGQgaW52b2x2ZSBtb3JlIGdlbmVyYWwgY2hhbmdlcyBlbHNld2hlcmUgc28gdGhhdAogICAgICAg
ICAqIHJlZmFjdG9yaW5nIGNhbiBiZSBkb25lIGxhdGVyIC0gbWFpbiBwcm9ibGVtIGlzIHRoZSBkaXJlY3Q
gYWNjZXNzIHRvIHRoZSB6aXAgbWV0aG9kcwogICAgICAgICAqIGFycmF5IHRoYXQgaXMgbWFkZSByYXRoZX
IgdGhhbiB0aHJvdWdoIGEgZnVuY3Rpb24uCiAgICAgICAgICogCiAgICAgICAgICogQHZhciBhcnJheSBvZ
iBhcnJheSBvZiBhcnJheQogICAgICAgICAqLwogICAgICAgIHByb3RlY3RlZCAkX3ppcF9tZXRob2RzX2Rl
dGFpbHMgPSBhcnJheSgpOwogICAgICAgIAogICAgICAgIC8qKgogICAgICAgICAqIFRoZSBsaXN0IG9mIHp
pcCBtZXRob2RzIHRoYXQgYXJlIHN1cHBvcnRlZCwgaS5lLiwgdGhlcmUgaXMgYSBzdXBwb3J0aW5nIGNsYX
NzIGRlZmluZWQKICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIGFycmF5IG9mIHN0cmluZwogICAgICAgI
CAqLwogICAgICAgIHByb3RlY3RlZCAkX3N1cHBvcnRlZF96aXBfbWV0aG9kcyA9IGFycmF5KCk7CiAgICAg
ICAgCiAgICAgICAgLyoqCiAgICAgICAgICogV2hldGhlciBvciBub3Qgd2UgYXJlIGZvcmNlIG92ZXJyaWR
pbmcgemlwIG1ldGhvZCBjYWNoaW5nIGZvciB0aGlzIGluc3RhbmNlIG9mIHppcGJ1ZGR5CiAgICAgICAgIC
ogCiAgICAgICAgICogQHZhciBib29sZWFuCiAgICAgICAgICovCgkJcHJvdGVjdGVkICRfemlwX21ldGhvZ
F9jYWNoaW5nX2ZvcmNlX2Rpc2FibGVkID0gZmFsc2U7CgogICAgICAgIC8qKgogICAgICAgICAqIFdoZXRo
ZXIgb3Igbm90IHdlIGNhbiBjYWxsIGEgc3RhdHVzIGNhbGJhY2sKICAgICAgICAgKiAKICAgICAgICAgKiB
AdmFyIGJvb2wKICAgICAgICAgKi8KCQlwcm90ZWN0ZWQgJF9oYXZlX3N0YXR1c19jYWxsYmFjayA9IGZhbH
NlOwoJCQogICAgICAgIC8qKgogICAgICAgICAqIE9iamVjdC0+bWV0aG9kIGFycmF5IGZvciBzdGF0dXMgZ
nVuY3Rpb24KICAgICAgICAgKiAKICAgICAgICAgKiBAdmFyIGFycmF5CiAgICAgICAgICovCgkJcHJvdGVj
dGVkICRfc3RhdHVzX2NhbGxiYWNrID0gYXJyYXkoKTsKCQkKICAgICAgICAvKioKICAgICAgICAgKiBUaGU
gZGlyZWN0b3J5IG5hbWUgdGhhdCB3ZSBhcmUgbG9hZGVkIGZyb20gKG5vdDogbm90IHBhdGgpCiAgICAgIC
AgICogCiAgICAgICAgICogQHZhciBzdHJpbmcKICAgICAgICAgKi8KCQlwcm90ZWN0ZWQgJF93aGVyZWFta
SA9ICIiOwoJCQogICAgICAgIC8qKgogICAgICAgICAqIFdoZXRoZXIgd2UgYXJlIGxvYWRlZCBhcyB0aGUg
ZXhwZXJpbWVudGFsIHppcGJ1ZGR5CiAgICAgICAgICogCiAgICAgICAgICogQHZhciBib29sCiAgICAgICA
gICovCgkJcHJvdGVjdGVkICRfaXNfZXhwZXJpbWVudGFsID0gZmFsc2U7CgkJCiAgICAgICAgLyoqCiAgIC
AgICAgICogVGhlIG5hbWUgb2YgdGhlIHppcCBtZXRob2RzIHRyYW5zaWVudCB3aWxsIGJlIGRlcGVuZGVud
CBvbiBpZiB3ZSBhcmUgc3RhbmRhcmQgb3IgZXhwZXJpbWVudGFsCiAgICAgICAgICogCiAgICAgICAgICog
QHZhciBzdHJpbmcKICAgICAgICAgKi8KCQlwcm90ZWN0ZWQgJF96aXBfbWV0aG9kc190cmFuc2llbnQgPSA
iIjsKCiAgICAgICAgLyoqCiAgICAgICAgICogVGhlIFNlcnZlciBBUEkgdGhhdCBpcyBpbiB1c2UKICAgIC
AgICAgKiAKICAgICAgICAgKiBAdmFyIHN0cmluZwogICAgICAgICAqLwoJCXByb3RlY3RlZCAkX3NhcGlfb
mFtZSA9ICIiOwoKICAgICAgICAvKioKICAgICAgICAgKiBDb252ZW5pZW5jZSBib29sZWFuIGluZGljYXRp
bmcgaWYgV2FybmluZ3Mgc2hvdWxkIGJlIGlnbm9yZWQgd2hlbiBidWlsZGluZyBhcmNoaXZlcwogICAgICA
gICAqIAogICAgICAgICAqIEB2YXIgaWdub3JlX3dhcm5pbmdzCWJvb2wKICAgICAgICAgKi8KCQlwcm90ZW
N0ZWQgJF9pZ25vcmVfd2FybmluZ3MgPSBudWxsOwoJCQogICAgICAgIC8qKgogICAgICAgICAqIENvbnZlb
mllbmNlIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBzeW1saW5rcyBzaG91bGQgYmUgaWdub3JlZC9ub3QtZm9s
bG93ZWQgd2hlbiBidWlsZGluZyBhcmNoaXZlcwogICAgICAgICAqIAogICAgICAgICAqIEB2YXIgaWdub3J
lX3N5bWxpbmtzCWJvb2wKICAgICAgICAgKi8KCQlwcm90ZWN0ZWQgJF9pZ25vcmVfc3ltbGlua3MgPSBudW
xsOwoJCQogICAgICAgICAvKioKICAgICAgICAgKiBDb252ZW5pZW5jZSBib29sZWFuIGluZGljYXRpbmcga
WYgY29tcHJlc3Npb24gc2hvdWwgZGJlIHVzZWQgd2hlbiBidWlsZGluZyBhcmNoaXZlcwogICAgICAgICAq
IAogICAgICAgICAqIEB2YXIgY29tcHJlc3Npb24JYm9vbAogICAgICAgICAqLwoJCXByb3RlY3RlZCAkX2N
vbXByZXNzaW9uID0gbnVsbDsKCQkKCQkvKioKCQkgKiAKCQkgKiBnZXRfdHJhbnNpZW50X25hbWVzX3N0YX
RpYygpCgkJICoKCQkgKiBHZXQgdGhlIHRyYW5zaWVudCBuYW1lKHMpIHRoYXQgbWF5IGJlIGluIHVzZQoJC
SAqCgkJICogQHJldHVybgkJYXJyYXkJVGhlIHRyYW5zaWVudCBuYW1lKHMpCgkJICoKCQkgKi8KCQlwdWJs
aWMgc3RhdGljIGZ1bmN0aW9uIGdldF90cmFuc2llbnRfbmFtZXNfc3RhdGljKCkgewoJCQoJCQlyZXR1cm4
gYXJyYXkoIHNlbGY6OlpJUF9NRVRIT0RTX1RSQU5TSUVOVCwKCQkJCQkJICBzZWxmOjpaSVBfTUVUSE9EU1
9UUkFOU0lFTlRfRVhQRVJJTUVOVEFMICk7CgkJCQoJCX0KCgkJLyoqCgkJICoJX19jb25zdHJ1Y3QoKQoJC
SAqCQoJCSAqCURlZmF1bHQgY29uc3RydWN0b3IuCgkJICoJCgkJICoJQHBhcmFtCQlzdHJpbmcJCSR0ZW1w
X2RpcgkJVGhlIHBhdGggb2YgdGhlIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gdXNlCgkJICoJQHBhcmFtCQl
hcnJheQkJJHppcF9tZXRob2RzCU9wdGlvbmFsOiBUaGUgc2V0IG9mIHppcCBtZXRob2RzIHJlcXVlc3RlZC
B0byB1c2UKCQkgKglAcGFyYW0JCXN0cmluZwkJJG1vZGUJCQlPcHRpb25hbDogVGhlIHppcCBtb2RlIGZvc
iB0aGUgb2JqZWN0IChpZ25vcmVkIGN1cnJlbnRseSAtIG1heSBiZSByZXVzZWQ/KQoJCSAqCUByZXR1cm4J
CW51bGwKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJHRlbXBfZGlyLCAkeml
wX21ldGhvZHMgPSBhcnJheSgpLCAkbW9kZSA9ICd6aXAnICkgewoKCQkJLy8gTm9ybWFsaXplIHRoZSB0cm
FpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9yIG9uIHRoZSBwYXRoCgkJCSR0ZW1wX2RpciA9IHJ0cmltKCAkd
GVtcF9kaXIsIHNlbGY6OkRJUkVDVE9SWV9TRVBBUkFUT1JTICkgLiBzZWxmOjpOT1JNX0RJUkVDVE9SWV9T
RVBBUkFUT1I7CgkJCQoJCQkvLyBOb3JtYWxpemUgcGxhdGZvcm0gc3BlY2lmaWMgZGlyZWN0b3J5IHNlcGF
yYXRvcnMgaW4gcGF0aAoJCQkkdGhpcy0+X3RlbXBkaXIgPSBzdHJfcmVwbGFjZSggRElSRUNUT1JZX1NFUE
FSQVRPUiwgc2VsZjo6Tk9STV9ESVJFQ1RPUllfU0VQQVJBVE9SLCAkdGVtcF9kaXIgKTsKCQkJCgkJCS8vI
E5vdGU6IHRoaXMgd2lsbCBiZSByZW1vdmVkIGFuZCBzaG91bGQgbm8gbG9uZ2VyIGJlIHVzZWQgLSBhbiBv
YmplY3QgaXMgaW5zdGFudGlhdGVkIGZvcgoJCQk
vLyBib3RoIHppcCAmIHVuemlwIHNlcnZpY2VzCgkJCSR0aGlzLT5fbW9kZSA9ICRtb2RlOwoJCQkKCQkJLy
8gUmVjb3JkIHdoZXJlIHdlIGFyZSBsb2NhdGVkICh0aGUgZGlyZWN0b3J5IG5hbWUpCgkJCSR0aGlzLT5fd
2hlcmVhbWkgPSBiYXNlbmFtZSggZGlybmFtZSggX19GSUxFX18gKSApOwoJCQkKCQkJLy8gVXNlIG91ciBs
b2NhdGlvbiB0byBkZXRlcm1pbmUgd2hpY2ggemlwIG1ldGhvZHMgdHJhbnNpZW50IHdlIHNob3VsZCBiZSB
1c2luZwoJCQkkdGhpcy0+X3ppcF9tZXRob2RzX3RyYW5zaWVudCA9ICggMCA9PT0gc3RyY21wKCAkdGhpcy
0+X3doZXJlYW1pLCAnemlwYnVkZHknICkgKSA/IHNlbGY6OlpJUF9NRVRIT0RTX1RSQU5TSUVOVCA6IHNlb
GY6OlpJUF9NRVRIT0RTX1RSQU5TSUVOVF9FWFBFUklNRU5UQUwgOwoKCQkJLy8gU2V0IGEgZmxhZyBmb3Ig
ZWFzeSBjb25kaXRpb25hbCB0ZXN0aW5nCgkJCSR0aGlzLT5faXNfZXhwZXJpbWVudGFsID0gKCAwID09PSB
zdHJjbXAoICR0aGlzLT5fd2hlcmVhbWksICd6aXBidWRkeScgKSApID8gZmFsc2UgOiB0cnVlIDsKCgkJCS
8vIFNldCB0aGUgc2FwaSBuYW1lIHNvIHdlIGNhbiB1c2UgaXQgbGF0ZXIJCQkKCQkJJHRoaXMtPnNldF9zY
XBpX25hbWUoKTsKCQkJCgkJCS8vIERlcml2ZSB3aGV0aGVyIHdlIGFyZSBpZ25vcmluZyBXYXJuaW5ncyBv
ciBub3QgKGNhbiBiZSBvdmVycmlkZGVuIGJ5IG1ldGhvZCBjYWxsKQoJCQkkdGhpcy0+c2V0X2lnbm9yZV9
3YXJuaW5ncygpOwoJCQkKCQkJLy8gRGVyaXZlIHdoZXRoZXIgd2UgYXJlIGlnbm9yaW5nL25vdC1mb2xsb3
dpbmcgc3ltbGlua3Mgb3Igbm90IChjYW4gYmUgb3ZlcnJpZGRlbiBieSBtZXRob2QgY2FsbCkKCQkJJHRoa
XMtPnNldF9pZ25vcmVfc3ltbGlua3MoKTsKCQkJCgkJCS8vIERlcml2ZSB3aGV0aGVyIGNvbXByZXNzaW9u
IHNob3VsZCBiZSB1c2VkIChjYW4gYmUgb3ZlcnJpZGRlbiBieSBtZXRob2QgY2FsbCkKCQkJJHRoaXMtPnN
ldF9jb21wcmVzc2lvbigpOwoJCQkJCQkKCQkJLy8gTWFrZSBzdXJlIHdlIGxvYWQgdGhlIGNvcmUgYWJzdH
JhY3QgY2xhc3MgYXMgdGhpcyB3aWxsIGFsd2F5cyBiZSBuZWVkZWQKCQkJcmVxdWlyZV9vbmNlKCBwYl9iY
WNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvbGliLycgLiAkdGhpcy0+X3doZXJlYW1pIC4gJy96Ynpp
cGNvcmUucGhwJyApOwoJCQkKCQkJLy8gSWYgd2UgbG9hZGVkIHRoYXQgb2sgdGhlbiB0cnkgdGhlIG1ldGh
vZCBzcGVjaWZpYyBjbGFzc2VzCgkJCS8vIENvdWxkIG1ha2UgdGhpcyBtb3JlIGdlbmVyaWMgYmFzZWQgb2
4gY29uZmlnIG9yIHNvbWVzdWNoCgkJCWlmICggY2xhc3NfZXhpc3RzKCAncGx1Z2luYnVkZHlfemJ6aXBjb
3JlJyApICkgewovLyAJCQkKLy8gCQkJCS8vIE9ubHkgcHJvdmlkZSBwcm9jIG1vZGUgd2hlbiBleHBlcmlt
ZW50YWwgemlwIGVuYWJsZWQKLy8gCQkJCWlmICggdHJ1ZSA9PT0gJHRoaXMtPl9pc19leHBlcmltZW50YWw
gKSB7Ci8vIAkJCQkKLy8gCQkJCQlpbmNsdWRlX29uY2UoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aC
gpIC4gJy9saWIvJyAuICR0aGlzLT5fd2hlcmVhbWkgLiAnL3piemlwcHJvYy5waHAnICk7Ci8vIAkJCQkJC
i8vIAkJCQkJaWYgKCBjbGFzc19leGlzdHMoICdwbHVnaW5idWRkeV96YnppcHByb2MnICkgKSB7Ci8vIAkJ
CQkJCi8vIAkJCQkJCWlmICggJHRoaXMtPmNoZWNrX21ldGhvZF9kZXBlbmRlbmNpZXMoICdwbHVnaW5idWR
keV96YnppcHByb2MnICkgKSB7Ci8vIAkJCQkJCQovLyAJCQkJCQkJJHRoaXMtPnNldF9zdXBwb3J0ZWRfem
lwX21ldGhvZHMoIHBsdWdpbmJ1ZGR5X3piemlwcHJvYzo6Z2V0X21ldGhvZF90YWdfc3RhdGljKCkgKTsKL
y8gCQkJCQkJCQovLyAJCQkJCQl9Ci8vIAkJCQkJCQovLyAJCQkJCX0KLy8gCQkJCQovLyAJCQkJfQovLyAJ
CQkJCgkJCQlpbmNsdWRlX29uY2UoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9saWIvJyA
uICR0aGlzLT5fd2hlcmVhbWkgLiAnL3piemlwZXhlYy5waHAnICk7CgkJCQlpZiAoIGNsYXNzX2V4aXN0cy
ggJ3BsdWdpbmJ1ZGR5X3piemlwZXhlYycgKSApIHsKCQkJCQoJCQkJCWlmICggJHRoaXMtPmNoZWNrX21ld
GhvZF9kZXBlbmRlbmNpZXMoICdwbHVnaW5idWRkeV96YnppcGV4ZWMnICkgKSB7CgkJCQkJCgkJCQkJCSR0
aGlzLT5zZXRfc3VwcG9ydGVkX3ppcF9tZXRob2RzKCBwbHVnaW5idWRkeV96YnppcGV4ZWM6OmdldF9tZXR
ob2RfdGFnX3N0YXRpYygpICk7CgkJCQkJCQoJCQkJCX0KCgkJCQl9CgkJCQkKCQkJCWluY2x1ZGVfb25jZS
ggcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2xpYi8nIC4gJHRoaXMtPl93aGVyZWFtaSAuI
CcvemJ6aXB6aXBhcmNoaXZlLnBocCcgKTsKCQkJCWlmICggY2xhc3NfZXhpc3RzKCAncGx1Z2luYnVkZHlf
emJ6aXB6aXBhcmNoaXZlJyApICkgewoJCQkJCgkJCQkJaWYgKCAkdGhpcy0+Y2hlY2tfbWV0aG9kX2RlcGV
uZGVuY2llcyggJ3BsdWdpbmJ1ZGR5X3piemlwemlwYXJjaGl2ZScgKSApIHsKCQkJCQkKCQkJCQkJJHRoaX
MtPnNldF9zdXBwb3J0ZWRfemlwX21ldGhvZHMoIHBsdWdpbmJ1ZGR5X3piemlwemlwYXJjaGl2ZTo6Z2V0X
21ldGhvZF90YWdfc3RhdGljKCkgKTsKCQkJCQkJCgkJCQkJfQoKCQkJCX0KCQkJCQoJCQkJaW5jbHVkZV9v
bmNlKCBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvbGliLycgLiAkdGhpcy0+X3doZXJlYW1
pIC4gJy96YnppcHBjbHppcC5waHAnICk7CgkJCQlpZiAoIGNsYXNzX2V4aXN0cyggJ3BsdWdpbmJ1ZGR5X3
piemlwcGNsemlwJyApICkgewoJCQkJCgkJCQkJaWYgKCAkdGhpcy0+Y2hlY2tfbWV0aG9kX2RlcGVuZGVuY
2llcyggJ3BsdWdpbmJ1ZGR5X3piemlwcGNsemlwJyApICkgewoJCQkJCQoJCQkJCQkkdGhpcy0+c2V0X3N1
cHBvcnRlZF96aXBfbWV0aG9kcyggcGx1Z2luYnVkZHlfemJ6aXBwY2x6aXA6OmdldF9tZXRob2RfdGFnX3N
0YXRpYygpICk7CgkJCQkJCQoJCQkJCX0KCgkJCQl9CgkJCQkKCQkJfQoJCQkKIAkJCS8vIFdvcmsgb3V0IH
RoZSBsaXN0IG9mIHppcCBtZXRob2RzIGZyb20gdGhlIHJlcXVlc3RlZCBhbmQgYXZhaWxhYmxlIGFsb25nI
HdpdGggdGhlaXIgZGV0YWlscwoJCQkkdGhpcy0+c2V0X3ppcF9tZXRob2RzKCAkemlwX21ldGhvZHMgKTsK
CQkJCgkJfQoJCQoJCQoJCS8qKgoJCSAqCV9fZGVzdHJ1Y3QoKQoJCSAqCQoJCSAqCURlZmF1bHQgZGVzdHJ
1Y3Rvci4KCQkgKgkKCQkgKglAcmV0dXJuCQludWxsCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gX1
9kZXN0cnVjdCggKSB7CgoJCX0KCQkKCQkvKioKCQkgKglzZXRfc2FwaV9uYW1lKCkKCQkgKgoJCSAqCVNld
HMgdGhlIHNhcGkgbmFtZSB0byB0aGF0IGdpdmVuIG9yIHJldHJpZXZlcyBmcm9tIFBIUAoJCSAqCVRPRE86
IEV4dGVuZCB0byBhbHNvIHNldCBhIHNhcGkgaWQgY29uc3RhbnQgYmFzZWQgb24gdGhlIG5hbWU/CgkJICo
KCQkgKglAcGFyYW0Jc3RyaW5nCSRuYW1lCUEgc2FwaSBuYW1lIHRvIHNldCAoZGVmYXVsdCBlbXB0eSkKCQ
kgKglAcmV0dXJuCW9iamVjdAkJCVRoaXMgb2JqZWN0CgkJICovCgkJcHVibGljIGZ1bmN0aW9uIHNldF9zY
XBpX25hbWUoICRzYXBpX25hbWUgPSAiIiApIHsKCQkKCQkJaWYgKCBlbXB0eSggJHNhcGlfbmFtZSApICkg
ewoJCQkJCgkJCQkkc2FwaV9uYW1lID0gcGhwX3NhcGlfbmFtZSgpOwoJCQkJCgkJCX0KCQkJCgkJCSR0aGl
zLT5fc2FwaV9uYW1lID0gJHNhcGlfbmFtZTsKCQkJCgkJCXJldHVybiAkdGhpczsKCQkJCgkJfQoKCQkvKi
oKCQkgKglnZXRfc2FwaV9uYW1lKCkKCQkgKgoJCSAqCVJldHVybnMgdGhlIHByZXZpb3VzbHkgc2V0IHNhc
GkgbmFtZQoJCSAqCgkJICoJQHJldHVybglzdHJpbmcJCQlUaGUgc3RvcmVkIHNhcGkgbmFtZQoJCSAqLwoJ
CXB1YmxpYyBmdW5jdGlvbiBnZXRfc2FwaV9uYW1lKCkgewoJCQkKCQkJcmV0dXJuICR0aGlzLT5fc2FwaV9
uYW1lOwoJCQkKCQl9CgoJCS8qKgoJCSAqCWRlcml2ZV9vcHRpb25hbF9ib29sKCkKCQkgKgoJCSAqCVV0aW
xpdHkgZnVuY3Rpb24gdG8gZGVyaXZlIHRoZSB2YWx1ZSBvZiBhbiBvcHRpb25hbCBib29sZWFuIGZsYWcgY
mFzZWQgb24gZWl0aGVyCgkJICoJYSBzcGVjaWZjIHZhbHVlIGJlaW5nIGdpdmVuIG9yIHRoZSByZWxhdGVk
IGdsb2JhbCBvcHRpb24gYmVpbmcgc2V0IG9yIGEgZ2l2ZW4KCQkgKglkZWZhdXRsIHZhbHVlIG90aGVyaXN
lLiBJZiB0aGUgcHJvdmlkZWQgJHZhbHVlIGlzIG51bGwgdGhlbiB0aGlzIGZvcmNlcyB0aGUgdXNlCgkJIC
oJb2YgdGhlIGdsb2JhbCBvcHRpb24gaWYgaXQgaXMgc2V0IG9yIG90aGVyd2lzZSB0aGUgZGVmYXVsdCB2Y
Wx1ZSBnaXZlbgoJCSAqCgkJICoJQHBhcmFtCQlzdHJpbmcJCSRvcHRpb24JCVRoZSBvcHRpb24gbmFtZSBp
biB0aGUgZ2xvYmFsIG9wdGlvbnMgYXJyYXkKCQkgKglAcGFyYW0JCWJvb2wJCSR2YWx1ZQkJU2hvdWxkIGJ
lIGJvb2wgdHJ1ZXxmYWxzZSBidXQgY291bGQgYmUgbnVsbAoJCSAqCUByZXR1cm4JCWJvb2wJCVZhbHVlIG
9mICRfaWdub3JlX3dhcm5pbmdzCgkJICoKCQkgKi8KCQkgcHJvdGVjdGVkIGZ1bmN0aW9uIGRlcml2ZV9vc
HRpb25hbF9ib29sKCAkb3B0aW9uLCAkdmFsdWUsICRkZWZhdWx0ICkgewoJCSAJJHJlc3VsdCA9IGZhbHNl
OwoJCSAJaWYgKCBpc19ib29sKCAkdmFsdWUgKSkgewoJCSAJCSRyZXN1bHQgPSAkdmFsdWU7CgkJIAl9IGV
sc2VpZiAoIGlzc2V0KCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbICRvcHRpb24gXSApICkgewoJCSAJCS
ggKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbICRvcHRpb24gXSA9PSAnMScgKSB8fCAoIHBiX2JhY2t1c
GJ1ZGR5Ojokb3B0aW9uc1sgJG9wdGlvbiBdID09IHRydWUgKSApID8gJHJlc3VsdCA9IHRydWUgOiAkcmVz
dWx0ID0gZmFsc2UgOwoJCSAJfSBlbHNlIHsKCQkgCQkkcmVzdWx0ID0gJGRlZmF1bHQ7CgkJIAl9CgkJIAl
yZXR1cm4gJHJlc3VsdDsKCQkgfQoJCSAKCQkvKioKCQkgKglzZXRfaWdub3JlX3dhcm5pbmdzKCkKCQkgKg
oJCSAqCUBwYXJhbQltaXhlZAkkaWdub3JlCQl0cnVlfGZhbHNlIGZvciBzcGVjaWZpYyBzZXR0aW5nIG9yI
G51bGwgZm9yIGNob2ljZQkKCQkgKglAcmV0dXJuCW9iamVjdAkJCQlUaGlzIG9iamVjdAoJCSAqLwoJCXB1
YmxpYyBmdW5jdGlvbiBzZXRfaWdub3JlX3dhcm5pbmdzKCAkaWdub3JlID0gbnVsbCApIHsKCQkKCQkgCSR
0aGlzLT5faWdub3JlX3dhcm5pbmdzID0gJHRoaXMtPmRlcml2ZV9vcHRpb25hbF9ib29sKCAnaWdub3JlX3
ppcF93YXJuaW5ncycsICRpZ25vcmUsIGZhbHNlICk7CgkJIAkKCQkJcmV0dXJuICR0aGlzOwoJCQkKCQl9C
goJCS8qKgoJCSAqCWdldF9pZ25vcmVfd2FybmluZ3MoKQoJCSAqCgkJICoJUmV0dXJucyB0aGUgcHJldmlv
dXNseSBzZXQgaWdub3JlIHdhcm5pbmdzIGZsYWcKCQkgKgoJCSAqCUByZXR1cm4JbWl4ZWQJCQlUaGUgc3R
vcmVkIGlnbm9yZSB3YXJuaW5ncyBmbGFnIHRydWV8ZmFsc2V8bnVsbAoJCSAqLwoJCXB1YmxpYyBmdW5jdG
lvbiBnZXRfaWdub3JlX3dhcm5pbmdzKCkgewoJCQkKCQkJcmV0dXJuICR0aGlzLT5faWdub3JlX3dhcm5pb
mdzOwoJCQkKCQl9CgoJCS8qKgoJCSAqCXNldF9pZ25vcmVfc3ltbGlua3MoKQoJCSAqCgkJICoJQHBhcmFt
CW1peGVkCSRpZ25vcmUJCXRydWV8ZmFsc2UgZm9yIHNwZWNpZmljIHNldHRpbmcgb3IgbnVsbCBmb3IgY2h
vaWNlCQoJCSAqCUByZXR1cm4Jb2JqZWN0CQkJCVRoaXMgb2JqZWN0CgkJICovCgkJcHVibGljIGZ1bmN0aW
9uIHNldF9pZ25vcmVfc3ltbGlua3MoICRpZ25vcmUgPSBudWxsICkgewoJCQoJCSAJJHRoaXMtPl9pZ25vc
mVfc3ltbGlua3MgPSAkdGhpcy0+ZGVyaXZlX29wdGlvbmFsX2Jvb2woICdpZ25vcmVfemlwX3N5bWxpbmtz
JywgJGlnbm9yZSwgdHJ1ZSApOwoJCQkKCQkJcmV0dXJuICR0aGlzOwoJCQkKCQl9CgoJCS8qKgoJCSAqCWd
ldF9pZ25vcmVfc3ltbGlua3MoKQoJCSAqCgkJICoJUmV0dXJucyB0aGUgcHJldmlvdXNseSBzZXQgaWdub3
JlIHN5bWxpbmtzIGZsYWcKCQkgKgoJCSAqCUByZXR1cm4JbWl4ZWQJCQlUaGUgc3RvcmVkIGlnbm9yZSBze
W1saW5rcyBmbGFnIHRydWV8ZmFsc2V8bnVsbAoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBnZXRfaWdub3Jl
X3N5bWxpbmtzKCkgewoJCQkKCQkJcmV0dXJuICR0aGlzLT5faWdub3JlX3N5bWxpbmtzOwoJCQkKCQl9Cgo
JCS8qKgoJCSAqCXNldF9jb21wcmVzc2lvbigpCgkJICoKCQkgKglAcGFyYW0JbWl4ZWQJJGNvbXByZXNzaW
9uCXRydWV8ZmFsc2UgZm9yIHNwZWNpZmljIHNldHRpbmcgb3IgbnVsbCBmb3IgY2hvaWNlCQoJCSAqCUByZ
XR1cm4Jb2JqZWN0CQkJCQlUaGlzIG9iamVjdAoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBzZXRfY29tcHJl
c3Npb24oICRjb21wcmVzc2lvbiA9IG51bGwgKSB7CgkJCgkJIAkkdGhpcy0+X2NvbXByZXNzaW9uID0gJHR
oaXMtPmRlcml2ZV9vcHRpb25hbF9ib29sKCAnY29tcHJlc3Npb24nLCAkY29tcHJlc3Npb24sIHRydWUgKT
sKCQkJCgkJCXJldHVybiAkdGhpczsKCQkJCgkJfQoKCQkvKioKCQkgKglnZXRfY29tcHJlc3Npb24oKQoJC
SAqCgkJICoJUmV0dXJucyB0aGUgcHJldmlvdXNseSBzZXQgY29tcHJlc3Npb24gZmxhZwoJCSAqCgkJICoJ
QHJldHVybgltaXhlZAkJCVRoZSBzdG9yZWQgY29tcHJlc3Npb24gZmxhZyB0cnVlfGZhbHNlfG51bGwKCQk
gKi8KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbXByZXNzaW9uKCkgewoJCQkKCQkJcmV0dXJuICR0aGlzLT
5fY29tcHJlc3Npb247CgkJCQoJCX0KCgkJLyoqCgkJICoJc2V0X3N1cHBvcnRlZF96aXBfbWV0aG9kcygpC
gkJICoKCQkgKglBcHBlbmRzIG9yIHByZXBlbmRzIHRoZSBtZXRob2Qgb3IgbWV0aG9kcyBwYXNzZWQgdG8g
dGhlIGV4aXN0aW5nIHN1cHBvcnRlZCBtZXRob2RzIGFycmF5CgkJICoKCQkgKglAcGFyYW0Jc3RyaW5nL2F
ycmF5CSRtZXRob2RzCUVpdGhlciBhIChjb21tYSBzZXBhcmF0ZWQpIHN0cmluZyBvZiBtZXRob2RzIG9yIG
FuIGFycmF5CgkJICoJQHBhcmFtCWJvb2wJCQkkYXBwZW5kCQlUcnVlIGlmICRtZXRob2RzIHNob3VsZCBiZ
SBhcHBlbmRlZCB0byBleGlzdGluZyBzdXBwb3J0ZWQgbWV0aG9kcwoJCSAqCUByZXR1cm4JYm9vbAkJCQkJ
CVRydWUgaWYgc2V0IHN1Y2NlZWRlZCwgb3RoZXJ3aXNlIGZhbHNlCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN
0aW9uIHNldF9zdXBwb3J0ZWRfemlwX21ldGhvZHMoICRtZXRob2RzLCAkYXBwZW5kID0gdHJ1ZSApIHsKCQ
kKCQkJJHJlc3VsdCA9IGZhbHNlOwoJCQoJCQkvLyBJZiAkbWV0aG9kcyBpcyBhIHN0cmluZyB3ZSBuZWVkI
HRvIHR1cm4gaXQgaW50byBhbiBhcnJheSAob2Ygb25lIG9yIG1vcmUgZWxlbWVudHMpIG9yCgkJCS8vIG90
aGVyd2lzZSBhc3N1bWUgaXQgaXMgYW4gYXJyYXkgYWxyZWFkeSAoYnV0IHdlIGRvdWJsZSBjaGVjayBpbiB
hIG1vKQoJCQkoIGlzX3N0cmluZyggJG1ldGhvZH
MgKSApID8gJG1ldGhvZHNfdG9fYWRkID0gZXhwbG9kZSggIiwiLCAkbWV0aG9kcyApIDogJG1ldGhvZHNfd
G9fYWRkID0gJG1ldGhvZHM7CgoJCQkvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhbiBhcnJheSBhbmQgaWYgc28g
dGhlbiBlaXRoZXIgYXBwZW5kIG9yIHByZXBlbmQgdG8gZXhpc3Rpbmcgc3VwcG9ydGVkIG1ldGhvZHMKCQk
JaWYgKCBpc19hcnJheSggJG1ldGhvZHNfdG9fYWRkICkgKSB7CgkJCQoJCQkJKCAkYXBwZW5kICkgPyAkdG
hpcy0+X3N1cHBvcnRlZF96aXBfbWV0aG9kcyA9IGFycmF5X21lcmdlKCAkdGhpcy0+X3N1cHBvcnRlZF96a
XBfbWV0aG9kcywgJG1ldGhvZHNfdG9fYWRkICkgOgoJCQkJCQkJICAkdGhpcy0+X3N1cHBvcnRlZF96aXBf
bWV0aG9kcyA9IGFycmF5X21lcmdlKCAkbWV0aG9kc190b19hZGQsICR0aGlzLT5fc3VwcG9ydGVkX3ppcF9
tZXRob2RzICk7CgkJCQoJCQkJJHJlc3VsdCA9IHRydWU7CQkJCgkJCQoJCQl9CgkJCQoJCQkvLyBXaWxsIH
JldHVybiBmYWxzZSBpZiB3ZSBzb21laG93IGRpZG4ndCBlbmQgdXAgd2l0aCBhbiBhcnJheSB0byBtZXJnZ
QoJCQlyZXR1cm4gJHJlc3VsdDsKCQkKCQl9CgkJCgkJLyoqCgkJICoJY2hlY2tfbWV0aG9kX2RlcGVuZGVu
Y2llcygpCgkJICoKCQkgKglDaGVja3MgdGhlIGRlcGVuZGVuY2llcyB0aGF0IGEgbWV0aG9kIGRlZmluZXM
gZm9yIGl0c2VsZiAtIHRoaXMgbWF5IG9wdGlvbmFsbHkgYWxzbyBtZWFuCgkJICoJY2FsbGluZyBhIGdpdm
VuIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIHRoZSBtZXRob2QgdG8gYWRkIGl0J3Mgb3duIHZlc
nkgc3BlY2lmaWMgY2hlY2tzCgkJICoJYmV5b25kIHRob3NlIHRoYXQgYXJlIHJ1biBhcyBzdGFuZGFyZC4K
CQkgKgoJCSAqCUBwYXJhbQlzdHJpbmcJCSRjbGFzc19uYW1lCQlUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8
gY2hlY2ssIG5lZWRlZCBiZWNhdXNlIHRoaXMgaXMgc3RhdGljIGNoZWNraW5nCgkJICoJQHJldHVybglib2
9sCQkJCQkJVHJ1ZSBpZiBkZXBlbmRlbmN5IGNoZWNrIHN1Y2NlZWRlZCwgb3RoZXJ3aXNlIGZhbHNlCgkJI
CovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGNoZWNrX21ldGhvZF9kZXBlbmRlbmNpZXMoICRjbGFzc19uYW1l
ICkgewoJCQoJCQkvLyBBc3N1bWUgZGVwZW5kZW5jeSBjaGVja3Mgd2lsbCBwYXNzIC0gd2lsbCBiZSBzZXQ
gZmFsc2UgaWYgYSBjaGVjayBmYWlscwoJCQkkcmVzdWx0ID0gdHJ1ZTsKCQkJCgkJCWlmICggIW1ldGhvZF
9leGlzdHMoICRjbGFzc19uYW1lLCAnZ2V0X21ldGhvZF9kZXBlbmRlbmNpZXNfc3RhdGljJyApICkgewoJC
QkKCQkJCSRyZXN1bHQgPSBmYWxzZTsKCQkJCgkJCX0gZWxzZSB7CgkJCgkJCQkkbWV0aG9kX2RlcGVuZGVu
Y2llcyA9IGNhbGxfdXNlcl9mdW5jKCBhcnJheSggJGNsYXNzX25hbWUsICdnZXRfbWV0aG9kX2RlcGVuZGV
uY2llc19zdGF0aWMnICkgKTsKCQkJCQoJCQl9CgkJCQoJCQlpZiAoICggJHJlc3VsdCApICYmIGlzc2V0KC
AkbWV0aG9kX2RlcGVuZGVuY2llc1sgJ2NsYXNzZXMnIF0gKSAmJiAhZW1wdHkoICRtZXRob2RfZGVwZW5kZ
W5jaWVzWyAnY2xhc3NlcycgXSApICkgewoJCQkKCQkJCSRjbGFzc2VzID0gJG1ldGhvZF9kZXBlbmRlbmNp
ZXNbICdjbGFzc2VzJyBdOwoJCQkKCQkJCSRkaXNhYmxlZF9jbGFzc2VzID0gYXJyYXlfbWFwKCAidHJpbSI
sIGV4cGxvZGUoICcsJywgaW5pX2dldCggJ2Rpc2FibGVfY2xhc3NlcycgKSApICk7CgkJCQkKCQkJCS8vIE
NoZWNrIGVhY2ggZnVuY3Rpb24gZGVwZW5kZW5jeSBhbmQgYmFpbCBvdXQgb24gZmlyc3QgZmFpbHVyZQoJC
QkJZm9yZWFjaCAoICRjbGFzc2VzIGFzICRjbGFzcyApIHsKCQkJCQoJCQkJCSRjbGFzcyA9IHRyaW0oICRj
bGFzcyApOwoJCQkJCQoJCQkJCWlmICggISggKCBjbGFzc19leGlzdHMoICRjbGFzcyApICkgJiYgKCAhaW5
fYXJyYXkoICRjbGFzcywgJGRpc2FibGVkX2NsYXNzZXMgKSApICkgKSB7CgoJCQkJCQkkcmVzdWx0ID0gZm
Fsc2U7CgkJCQkJCWJyZWFrOwoJCQkJCQkKCQkJCQl9CgkJCQkKCQkJCX0KCQkJfQoJCQkKCQkJaWYgKCAoI
CRyZXN1bHQgKSAmJiBpc3NldCggJG1ldGhvZF9kZXBlbmRlbmNpZXNbICdmdW5jdGlvbnMnIF0gKSAmJiAh
ZW1wdHkoICRtZXRob2RfZGVwZW5kZW5jaWVzWyAnZnVuY3Rpb25zJyBdICkgKSB7CgkJCQoJCQkJJGZ1bmN
0aW9ucyA9ICRtZXRob2RfZGVwZW5kZW5jaWVzWyAnZnVuY3Rpb25zJyBdOwoJCQkJCgkJCQkkZGlzYWJsZW
RfZnVuY3Rpb25zID0gYXJyYXlfbWFwKCAidHJpbSIsIGV4cGxvZGUoICcsJywgaW5pX2dldCggJ2Rpc2Fib
GVfZnVuY3Rpb25zJyApICkgKTsKCQkJCQoJCQkJLy8gQ2hlY2sgZWFjaCBmdW5jdGlvbiBkZXBlbmRlbmN5
IGFuZCBiYWlsIG91dCBvbiBmaXJzdCBmYWlsdXJlCgkJCQlmb3JlYWNoICggJGZ1bmN0aW9ucyBhcyAkZnV
uY3Rpb24gKSB7CgkJCQkKCQkJCQkkZnVuY3Rpb24gPSB0cmltKCAkZnVuY3Rpb24gKTsKCQkJCQkKCQkJCQ
lpZiAoICEoICggZnVuY3Rpb25fZXhpc3RzKCAkZnVuY3Rpb24gKSApICYmICggIWluX2FycmF5KCAkZnVuY
3Rpb24sICRkaXNhYmxlZF9mdW5jdGlvbnMgKSApICkgKSB7CgoJCQkJCQkkcmVzdWx0ID0gZmFsc2U7CgkJ
CQkJCWJyZWFrOwoJCQkJCQkKCQkJCQl9CgkJCQkKCQkJCX0KCQkJCgkJCX0KCQkJCgkJCS8vIE5vIGV4dGV
uc2lvbiBjaGVja3MgeWV0CgkJCQoJCQkvLyBObyBmaWxlIGNoZWNrcyB5ZXQgKG5lZWQgdG8gZGV0ZXJtaW
5lIGhvdyB0aGlzIG1pZ2h0IHdvcmsgYSBiaXQgYmV0dGVyKQoJCQkKCQkJaWYgKCAoICRyZXN1bHQgKSAmJ
iBpc3NldCggJG1ldGhvZF9kZXBlbmRlbmNpZXNbICdjaGVja19mdW5jJyBdICkgJiYgIWVtcHR5KCAkbWV0
aG9kX2RlcGVuZGVuY2llc1sgJ2NoZWNrX2Z1bmMnIF0gKSApIHsKCQkJCgkJCQkkcmVzdWx0ID0gY2FsbF9
1c2VyX2Z1bmMoIGFycmF5KCAkY2xhc3NfbmFtZSwgJG1ldGhvZF9kZXBlbmRlbmNpZXNbICdjaGVja19mdW
5jJyBdICkgKTsKCQkJCQoJCQl9CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkKCQl9CgkJCgkJLyoqCgkJI
CoJZGVkdWNlX3ppcF9tZXRob2RzKCkKCQkgKgkKCQkgKglSZXR1cm5zIHRoZSBhcnJheSBvZiB6aXAgbWV0
aG9kcyB0aGF0IGFyZSBhdmFpbGFibGUgKG9yIGp1c3QgdGhlIGJlc3QpIGZpbHRlcmVkIGJ5IHJlcXVlc3R
lZCBtZXRob2RzLgoJCSAqCUJlY2F1c2UgdGhlIGF2YWlsYWJsZSBtZXRob2RzIGRvbid0IHJlYWxseSBjaG
FuZ2Ugb2Z0ZW4gKHJhcmVseSBvbmNlIHN0YWJsZSkgd2UgdXNlIGEgdHJhbnNpZW50CgkJICoJd2hpY2gga
GFzIHNvbWUgZGVmaW5lZCBsaWZldGltZSBzbyB3ZSBkb24ndCB3YXN0ZSB0aW1lIHJlcGVhdGluZyB0aGUg
dGVzdGluZyB3aGljaCBpbnZvbHZlcyBjcmVhdGluZwoJCSAqCW9iamVjdHMgYW5kIHByb2Nlc3NlcyBhbmQ
gZmlsZXMgd2hpY2ggY2FuIGJlIHRpbWUgY29uc3VtaW5nLgoJCSAqCVRoZSB1c2luZyBzY3JpcHQgY2FuIG
RlY2lkZSB0byBoYXZlIHRoZSB0cmFuc2llbnQgcmVmcmVzaGVkIGJ5IGRlbGV0aW5nIGl0IGFuZCB0aGVuI
Gl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQuCgkJICoJTm90ZTogVGhlcmUgaXMgYW4gaW5jbHVkZWQgInNpZ25h
dHVyZSIgc28gdGhhdCB3ZSBjYW4gZGV0ZWN0IHNlcnZlciBvciBvdGhlciBtb3ZlcyBhbmQgcmVnZW5lcmF
0ZS4KCQkgKglOb3RlOiBmaWxlbXRpbWUoKSBpcyB1c2VkIGJlY2F1c2UgdGhpcyB3aWxsIChzaG91bGQpIG
ZvcmNlIHRoZSB0cmFuc2llbnQgdG8gdXBkYXRlIGlmIHRoZSBwbHVnaW4gaXMKCQkgKgl1cGRhdGVkIGJlY
2F1c2UgdGhlIGZpbGUgbW9kaWZpY2F0aW9uIHRpbWUgb2YgdGhlIGZpbGUgd2lsbCBjaGFuZ2UgYmVjYXVz
ZSB0aGUgcGx1Z2luIGlzIGluc3RhbGxlZCBpbiBhCgkJICoJZGlmZmVyZW50IGRpc2sgbG9jYXRpb24gd2l
0aCBuZXdseSB3cml0dGVuIGZpbGVzIC0gdGhlIHNhbWUgc2hvdWxkIGFwcGx5IGlmIHRoZSBzaXRlIGlzIH
Jlc3RvcmVkL21pZ3JhdGVkLgoJCSAqCQoJCSAqCUBwYXJhbQkJYXJyYXkJQXJyYXkgcmVmZXJlbmNlIGZvc
iB0aGUgZGVkdWNlZCB6aXAgbWV0aG9kcwoJCSAqCUBwYXJhbQkJYXJyYXkJQXJyeSByZWZlcmVuY2UgZm9y
IHRoZSBkZXRhaWxzIG9mIHRoZSBkZWR1Y2VkIG1ldGhvZHMKCQkgKglAcGFyYW0JCWFycmF5CUZsYXQgYXJ
yYXkgb2YgcmVxdWVzdGVkIChwcmVmZXJyZWQpIHppcCBtZXRob2RzCgkJICoJQHBhcmFtCQlib29sCVRydW
UgaWYgb25seSB0aGUgYmVzdCBhdmFpbGFibGUgbWV0aG9kIHdhbnRlZAoJCSAqCUBwYXJhbQkJc3RyaW5nC
VdoaWNoIHppcCBtb2RlIGJlaW5nIHRlc3RlZAoJCSAqCUByZXR1cm4JCWJvb2wJVHJ1ZSBpZiBtZXRob2Rz
IGFyZSBhdmFpbGFibGUsIEZhbHNlIG90aGVyd2lzZQoJCSAqCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9
uIGRlZHVjZV96aXBfbWV0aG9kcyggYXJyYXkgJiRtZXRob2RzLCBhcnJheSAmJG1ldGhvZHNfZGV0YWlscy
wgYXJyYXkgJHJlcXVlc3RlZCwgJGJlc3Rfb25seSApIHsKCQkJCgkJCSRhdmFpbGFibGVfbWV0aG9kcyA9I
GFycmF5KCk7CgkJCSRhdmFpbGFibGVfbWV0aG9kc19kZXRhaWxzID0gYXJyYXkoKTsKCQkJJGFnZ3JlZ2F0
ZV9hdmFpbGFibGVfbWV0aG9kcyA9IGFycmF5KCk7CgkJCSRzZXJ2ZXJfc2lnbmF0dXJlX3N0cmluZyA9ICI
iOwoJCQkkc2VydmVyX3NpZ25hdHVyZSA9ICIiOwoKCQkJLy8gRGVjaWRlIGlmIHdlIHNob3VsZCB0cnkgZm
9yIGNhY2hlZCBtZXRob2RzIG9yIG5vdAkJCQoJCQlpZiAoICR0aGlzLT51c2VfY2FjaGVkX21ldGhvZHMoK
SApIHsKCgkJCQkkYWdncmVnYXRlX2F2YWlsYWJsZV9tZXRob2RzID0gZ2V0X3RyYW5zaWVudCggJHRoaXMt
Pl96aXBfbWV0aG9kc190cmFuc2llbnQgKTsKCQkJCQoJCQkJLy8gRHJvcCB0aHJvdWdoIGlmIHdlIGRpZG4
ndCBnZXQgYSB0cmFuc2llbnQgb3RoZXJ3aXNlIHdlJ2xsIHRlc3QgaXQgZm9yIHZhbGlkaXR5CgkJCQlpZi
AoIGZhbHNlICE9PSAkYWdncmVnYXRlX2F2YWlsYWJsZV9tZXRob2RzICkgewoJCQkJCgkJCQkJLy8gR2VuZ
XJhdGUgc2VydmVyIHNpZ25hdHVyZSBhbmQgY2hlY2sgaXQgbWF0Y2hlcyB0aGUgY2FjaGVkIHNpZ25hdHVy
ZQoJCQkJCSRzZXJ2ZXJfc2lnbmF0dXJlX3N0cmluZyA9IF9fRklMRV9fIC4gIiA6ICIgLiAoICggJGZpbGV
tb2R0aW1lID0gZmlsZW10aW1lKCBfX0ZJTEVfXyApICkgPyAoc3RyaW5nKSAkZmlsZW1vZHRpbWUgOiAnMS
cgKTsKCQkJCQkkc2VydmVyX3NpZ25hdHVyZSA9IG1kNSggJHNlcnZlcl9zaWduYXR1cmVfc3RyaW5nICk7C
gkJCQkJCgkJCQkJaWYgKCAoIGZhbHNlID09PSBpc3NldCggJGFnZ3JlZ2F0ZV9hdmFpbGFibGVfbWV0aG9k
c1sgJ2NvbnRyb2wnIF1bICdzaWduYXR1cmUnIF0gKSApIHx8CgkJCQkJCSAoICRzZXJ2ZXJfc2lnbmF0dXJ
lICE9PSAkYWdncmVnYXRlX2F2YWlsYWJsZV9tZXRob2RzWyAnY29udHJvbCcgXVsgJ3NpZ25hdHVyZScgXS
ApICkgewoKCQkJCQkJLy8gRWl0aGVyIG5vIHNpZ25hdHVyZSBwcmV2aW91c2x5IHNldCBvciBpdCBoYXMgY
2hhbmdlZCAtIGVpdGhlciB3YXkgd2UgbmVlZCB0byByZWV2YWx1YXRlIGF2YWlsYWJsZSBtZXRob2RzCgkJ
CQkJCSRhZ2dyZWdhdGVfYXZhaWxhYmxlX21ldGhvZHMgPSBmYWxzZTsKCQkJCQkJIAoJCQkJCX0KCQkJCQo
JCQkJfQoKCQkJfSBlbHNlIHsKCQkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIC
daaXAgbWV0aG9kIGNhY2hpbmcgZGlzYWJsZWQgYmFzZWQgb24gc2V0dGluZ3Mgb3IgdW5hdmFpbGFibGUuJ
yApOwoJCQkJJGFnZ3JlZ2F0ZV9hdmFpbGFibGVfbWV0aG9kcyA9IGZhbHNlOwoJCQkJCgkJCX0KCQkJCgkJ
CS8vIENyZWF0ZSBuZXcgdHJhbnNpZW50IGlmIHdlIGRpZG4ndCBoYXZlIG9uZSwgaXQgd2FzIGV4cGlyZWQ
gb3Igd2UgbnVrZWQgaXQgYmVjYXVzZSBpbnZhbGlkCgkJCWlmICggZmFsc2UgPT09ICRhZ2dyZWdhdGVfYX
ZhaWxhYmxlX21ldGhvZHMgKSB7CgoJCQkJLy8gR2V0IGFsbCBhdmFpbGFibGUgbWV0aG9kcyBpbiAkYXZha
WxhYmxlX21ldGhvZHMgLSBtdXN0IHJldHVybiB0aGVtIGluIG9yZGVyIGJlc3QgLT4gd29yc3QKCQkJCS8v
IEFsc28gZ2V0dGluZyB0aGUgbWV0aG9kIGRldGFpbHMgYXJyYXkgd2hpY2ggaXMga2V5ZWQgYnkgbWV0aG9
kIHRhZwoJCQkJJHRoaXMtPmdldF9hdmFpbGFibGVfemlwX21ldGhvZHMoICR0aGlzLT5fc3VwcG9ydGVkX3
ppcF9tZXRob2RzLCAkYXZhaWxhYmxlX21ldGhvZHMsICRhdmFpbGFibGVfbWV0aG9kc19kZXRhaWxzICk7C
gkJCQkKCQkJCS8vIE5vdyB3ZSBoYXZlIHRvIGNvbWJpbmUgdGhlIHR3byBhcnJheXMgaW50byBhbiBhZ2dy
ZWdhdGUgdG8gc2F2ZQoJCQkJJGFnZ3JlZ2F0ZV9hdmFpbGFibGVfbWV0aG9kc1sgJ21ldGhvZHMnIF0gPSA
kYXZhaWxhYmxlX21ldGhvZHM7CgkJCQkkYWdncmVnYXRlX2F2YWlsYWJsZV9tZXRob2RzWyAnZGV0YWlscy
cgXSA9ICRhdmFpbGFibGVfbWV0aG9kc19kZXRhaWxzOwoJCQkJCgkJCQkvLyBPbmx5IHNhdmUgaWYgd2UgY
XJlIHVzaW5nIGNhY2hpbmcKCQkJCWlmICggJHRoaXMtPnVzZV9jYWNoZWRfbWV0aG9kcygpICkgewoJCQkJ
CgkJCQkJLy8gQWRkIHRoZSBzZXJ2ZXIgc2lnbmF0dXJlIGZvciBkZXRlY3RpbmcgaW52YWxpZGF0ZWQgbWV
0aG9kcyBkZXRhaWxzIG9uIGEgbWlncmF0aW9uIG9yIHNvbWUgb3RoZXIgY2hhbmdlCgkJCQkJLy8gTm90ZT
ogU2VlIGRpc2N1c3Npb24gYWJvdmUgb24gZGVyaXZhdGlvbiBvZiBzaWduYXR1cmUKCQkJCQkvLyBUT0RPO
iBDaGVjaywgcHJvYmFibHkgY2FuIHVzZSB0aGUgc2VydmVyIHNpZ25hdHVyZSBjYWxjdWxhdGVkIGFib3Zl
CgkJCQkJJHNlcnZlcl9zaWduYXR1cmVfc3RyaW5nID0gX19GSUxFX18gLiAiIDogIiAuICggKCAkZmlsZW1
vZHRpbWUgPSBmaWxlbXRpbWUoIF9fRklMRV9fICkgKSA/IChzdHJpbmcpICRmaWxlbW9kdGltZSA6ICcxJy
ApOwoJCQkJCSRzZXJ2ZXJfc2lnbmF0dXJlID0gbWQ1KCAkc2VydmVyX3NpZ25hdHVyZV9zdHJpbmcgKTsKC
QkJCQkkYWdncmVnYXRlX2F2YWlsYWJsZV9tZXRob2RzWyAnY29udHJvbCcgXVsgJ3NpZ25hdHVyZScgXSA9
ICRzZXJ2ZXJfc2lnbmF0dXJlOwoJCQkJCQoJCQkJCXNldF90cmFuc2llbnQoICR0aGlzLT5femlwX21ldGh
vZHNfdHJhbnNpZW50LCAkYWdncmVnYXRlX2F2YWlsYWJsZV9tZXRob2RzLCBzZWxmOjpaSVBfTUVUSE9EU1
9UUkFOU0lFTlRfTElGRSApOwoJCQkJCQoJCQkJfQoJCQkJCQkJCgkJCX0gZWxzZSB7CgkJCQoJCQkJLy8gV
2UgZ290IGEgdmFsaWQgdHJhbnNpZW50IHZhbHVlIHNvIG5vdyBzZXBhcmF0ZSB0aGUgYWdncmVnYXRlIGlu
dG8gdHdvCgkJCQkkYXZhaWxhYmxlX21ldGhvZHMgPSAkYWdncmVnYXRlX2F2YWlsYWJsZV9tZXRob2RzWyA
nbWV0aG9kcycgXTsKCQkJCSRhdmFpbGFibGVfbWV0aG9kc19kZXRhaWxzID0gJGFnZ3JlZ2F0ZV9hdmFpbG
FibGVfbWV0aG9kc1sgJ2RldGFpbHMnIF07CgkJC
QoJCQl9CgkJCQoJCQkvLyBDaGVjayB3aGV0aGVyIHRoZXNlIG5lZWQgdG8gYmUgZmlsdGVyZWQgYnkgcmVx
dWVzdGVkIG1ldGhvZHMKCQkJaWYgKCAhZW1wdHkoICRyZXF1ZXN0ZWQgKSApIHsKCQkJCgkJCQkvLyBGaWx
0ZXIgdGhlIGF2YWlsYWJsZSBtZXRob2RzIC0gcmVzdWx0IGNvdWxkIGJlIGVtcHR5CgkJCQkvLyBPcmRlci
B3aWxsIGJlIHJldGFpbmVkIHJlZ2FyZGxlc3Mgb2Ygb3JkZXIgb2YgcmVxdWVzdGVkIG1ldGhvZHMKCQkJC
SRhdmFpbGFibGVfbWV0aG9kcyA9IGFycmF5X2ludGVyc2VjdCggJGF2YWlsYWJsZV9tZXRob2RzLCAkcmVx
dWVzdGVkICk7CgkJCQkKCQkJfQoKCQkJLy8gSWYganVzdCB0aGUgYmVzdCBhdmFpbGFibGUgcmVxdWVzdGV
kIHRoZW4gc2xpY2UgaXQgb2ZmCgkJCWlmICggKCB0cnVlID09PSAkYmVzdF9vbmx5ICkgJiYgKCAhZW1wdH
koICRhdmFpbGFibGVfbWV0aG9kcyApICkgKSB7CgkJCQoJCQkJJG1ldGhvZHMgPSBhcnJheV9zbGljZSggJ
GF2YWlsYWJsZV9tZXRob2RzLCAwLCAxICk7CgkJCQkkbWV0aG9kc19kZXRhaWxzID0gJGF2YWlsYWJsZV9t
ZXRob2RzX2RldGFpbHM7CgkJCQkKCQkJfSBlbHNlIHsKCQkJCgkJCQkkbWV0aG9kcyA9ICRhdmFpbGFibGV
fbWV0aG9kczsKCQkJCSRtZXRob2RzX2RldGFpbHMgPSAkYXZhaWxhYmxlX21ldGhvZHNfZGV0YWlsczsKCQ
kJCgkJCX0KCQkJCgkJCWlmICggIWVtcHR5KCAkbWV0aG9kcyApICkgewoJCQkKCQkJCXJldHVybiB0cnVlO
woJCQkJCgkJCX0gZWxzZSB7CgkJCQoJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCgkJCX0KCQkKCQl9CgkJCQkK
CQkvKioKCQkgKglzZXRfemlwX21ldGhvZF9jYWNoaW5nX2ZvcmNlX2Rpc2FibGVkKCkKCQkgKgkKCQkgKgl
TZXQgd2hldGhlciBvciBub3QgemlwIG1ldGhvZCBjYWNoaW5nIHNob3VsZCBiZSBmb3JjZSBkaXNhYmxlZC
Bmb3IgdGhpcyBpbnN0YW5jZSBvZiB6aXBidWRkeQoJCSAqCQoJCSAqCUBwYXJhbQkJYm9vbAkkZGlzYWJsZ
WQJT3B0aW9uYWw6IFRydWUgdG8gZGlzYWJsZTsgZmFsc2UgKGRlZmF1bHQpIHRvIG5vdCBkaXNhYmxlCgkJ
ICoJQHJldHVybgkJb2JqZWN0CQkJCVRoaXMgb2JqZWN0CgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24
gc2V0X3ppcF9tZXRob2RfY2FjaGluZ19mb3JjZV9kaXNhYmxlZCggJGRpc2FibGVkID0gZmFsc2UgKSB7Cg
kJCgkJCSR0aGlzLT5femlwX21ldGhvZF9jYWNoaW5nX2ZvcmNlX2Rpc2FibGVkID0gJGRpc2FibGVkOwoJC
QkKCQkJcmV0dXJuICR0aGlzOwoJCQoJCX0KCQkKCQkvKioKCQkgKglnZXRfemlwX21ldGhvZF9jYWNoaW5n
X2ZvcmNlX2Rpc2FibGVkKCkKCQkgKgkKCQkgKglSZXR1cm5zIHRoZSBib29sZWFuIG9mIHdoZXRoZXIgeml
wIG1ldGhkIGNhY2hpbmcgZm9yIHRoaXMgaW5zdGFuY2Ugb2YgemlwYnVkZHkgaXMgZGlzYWJsZWQgb3Igbm
90CgkJICoJCgkJICoJQHJldHVybgkJYm9vbGVhbgkJVHJ1ZSBpZiBjYWNoaW5nIGZvcmNlIGRpc2FibGVkL
CBGYWxzZSBpZiBub3QKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBnZXRfemlwX21ldGhvZF9jYWNo
aW5nX2ZvcmNlX2Rpc2FibGVkKCkgewoJCQoJCQlyZXR1cm4gJHRoaXMtPl96aXBfbWV0aG9kX2NhY2hpbmd
fZm9yY2VfZGlzYWJsZWQ7CgkJCgkJfQoJCQkJCgkJLyoqCgkJICoJdXNlX2NhY2hlZF9tZXRob2RzKCkKCQ
kgKgkKCQkgKglSZXR1cm5zIHdoZXRoZXIgY29uZGl0aW9ucy9jb25maWd1cmF0aW9uIGluZGljYXRlIGNhY
2hlZCBtZXRob2RzIHNob3VsZCBiZSB1c2VkCgkJICoJTm90ZTogVGVtcG9yYXJpbHkgYWRkIHRoZSBjb25k
aXRpb24gZm9yIHdoZXRoZXIgZ2V0Xy9zZXRfdHJhbnNpZW50IGZ1bmN0aW9ucwoJCSAqCWV4aXN0IC0gaWY
gbm90IChtZWFuaW5nIHdlIGFyZSBwcm9iYWJseSBydW5uaW5nIHVuZGVyIGltcG9ydGJ1ZGR5KSB0aGVuIH
dlIGFsc28KCQkgKglza2lwIGNhY2hpbmcuIFRoaXMgYWRkcyBhIGxpdHRsZSB0aW1lIHdoZW4gaW5zdGFud
GlhdGluZyBiZWNhdXNlIHdlIGhhdmUgdG8gdGVzdAoJCSAqCWV2ZXJ5IHRpbWUgYnV0IGl0J3MgYWNjZXB0
YWJsZSBmb3Igbm93LiBJbiB0aGUgbG9uZ2VyIHRlcm0gd2Ugd2lsbCBoYXZlIGFuCgkJICoJYWx0ZXJuYXR
pdmUgd2F5IHRvIGhhbmRsZSB0aGUgdHJhbnNpZW50IGRhdGEgb3V0c2lkZSBvZiBXb3JkUHJlc3MuCgkJIC
oJCgkJICoJQHJldHVybgkJYm9vbAl0cnVlIGlmIHVzZSBjYWNoZWQgbWV0aG9kcywgZmFsc2Ugb3RoZXJ3a
XNlCgkJICoKCQkgKi8KCQlwcm90ZWN0ZWQgZnVuY3Rpb24gdXNlX2NhY2hlZF9tZXRob2RzKCkgewoJCQoJ
CQkvLyBCeSBkZWZhdWx0IHdlJ2xsIGJlIHVzaW5nIGNhY2hpbmcKCQkJJHJlc3VsdCA9IHRydWU7CgkJCQo
JCQkvLyBIYXMgY2FjaGluZyBiZWVuIGV4cGxpY2l0bHkgZGlzYWJsZWQKCQkJJGNhY2hpbmdfZGlzYWJsZW
QgPSAoIGlzc2V0KCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2Rpc2FibGVfemlwbWV0aG9kX2NhY2hpb
mcnXSApICYmCgkJCQkJCQkJICAoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snZGlzYWJsZV96aXBtZXRo
b2RfY2FjaGluZyddID09ICcxJykgKTsKCgkJCS8vIERvIHdlIGhhdmUgdGhlIG1lYW5zIHRvIGNhY2hlCgk
JCSRjYWNoaW5nX3VuYXZhaWxhYmxlID0gKCAhKCBmdW5jdGlvbl9leGlzdHMoICdnZXRfdHJhbnNpZW50Jy
ApICYmIGZ1bmN0aW9uX2V4aXN0cyggJ3NldF90cmFuc2llbnQnICkgKSApOwkKCgkJCS8vIEhhcyBjYWNoa
W5nIGJlZW4gZm9yY2UgZGlzYWJsZWQgZm9yIHRoaXMgcGFydGljdWxhciBpbnN0YW5jZSBvZiB6aXBidWRk
eQoJCQkkY2FjaGluZ19mb3JjZV9kaXNhYmxlZCA9ICR0aGlzLT5nZXRfemlwX21ldGhvZF9jYWNoaW5nX2Z
vcmNlX2Rpc2FibGVkKCk7CgoJCQlpZiAoICRjYWNoaW5nX2Rpc2FibGVkIHx8ICRjYWNoaW5nX3VuYXZhaW
xhYmxlIHx8ICRjYWNoaW5nX2ZvcmNlX2Rpc2FibGVkICkgewoJCQkKCQkJCSRyZXN1bHQgPSBmYWxzZTsKC
QkJCQoJCQl9CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkKCQl9CgkJCQkKCQkvKioKCQkgKglnZXRfemlw
X21ldGhvZHMoKQoJCSAqCQoJCSAqCVJldHVybnMgdGhlIGFycmF5IG9mIHppcCBtZXRob2RzIHByZXZpb3V
zbHkgZGVkdWNlZAoJCSAqCQoJCSAqCUByZXR1cm4JCWFycmF5CUZsYXQgYXJyYXkgb2YgemlwIG1ldGhvZH
MgKGNvdWxkIGJlIGVtcHR5KQoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGdldF96aXBfbWV0aG9kc
ygpIHsKCQkJCgkJCXJldHVybiAkdGhpcy0+X3ppcF9tZXRob2RzOwoJCQoJCX0KCQkJCQoJCS8qKgoJCSAq
CXNldF96aXBfbWV0aG9kcygpCgkJICoJCgkJICoJUmVzZXRzIHRoZSB6aXAgbWV0aG9kcyBiYXNlZCBvbiB
uZXcgY3JpdGVyaWEgYW5kIHJldHVybnMgdGhlIGFycmF5IG9mIHppcCBtZXRob2RzCgkJICoJSWYgdGhlIG
ZpcnN0IGF0dGVtcHQgdG8gZGVkdWNlIG1ldGhvZHMgcmV0dXJucyBhbiBlbXB0eSByZXN1bHQgdGhlbiBmb
3JjZSBkaXNhYmxlCgkJICoJdXNlIG9mIGNhY2hlZCB6aXAgbWV0aG9kcyBhbmQgdHJ5IGFnYWluLgoJCSAq
CQoJCSAqCUBwYXJhbQkJYXJyYXkJJHJlcXVlc3RlZAlGbGF0IGFycmF5IG9mIHJlcXVlc3RlZCAocHJlZmV
ycmVkKSB6aXAgbWV0aG9kcwoJCSAqCUBwYXJhbQkJYm9vbAkkYmVzdF9vbmx5CU9wdGlvbmFsOiBUcnVlIG
lmIG9ubHkgdGhlIGJlc3QgYXZhaWxhYmxlIG1ldGhvZCB3YW50ZWQKCQkgKglAcmV0dXJuCQlvYmplY3QJC
QkJVGhpcyBvYmplY3QKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlvbiBzZXRfemlwX21ldGhvZHMoIGFy
cmF5ICRyZXF1ZXN0ZWQsICRiZXN0X29ubHkgPSBmYWxzZSApIHsKCQkJCgkJCSRtZXRob2RzX2F2YWlsYWJ
sZSA9IGZhbHNlOwoKCQkJLy8gVXBkYXRlIHRoZSBtZW1vcnkgb2Ygd2hhdCB6aXAgbWV0aG9kcyB3ZXJlIH
JlcXVlc3RlZCAtIG1ha2UgaXQgY2xlYW4KCQkJJHRoaXMtPl9yZXF1ZXN0ZWRfemlwX21ldGhvZHMgPSBhc
nJheV9tYXAoICd0cmltJywgJHJlcXVlc3RlZCApOwoJCQkKCQkJLy8gV29yayBvdXQgdGhlIGxpc3Qgb2Yg
emlwIG1ldGhvZHMgZnJvbSB0aGUgcmVxdWVzdGVkIGFuZCBhdmFpbGFibGUKCQkJJG1ldGhvZHNfYXZhaWx
hYmxlID0gJHRoaXMtPmRlZHVjZV96aXBfbWV0aG9kcyggJHRoaXMtPl96aXBfbWV0aG9kcywgJHRoaXMtPl
96aXBfbWV0aG9kc19kZXRhaWxzLCAkdGhpcy0+X3JlcXVlc3RlZF96aXBfbWV0aG9kcywgJGJlc3Rfb25se
SApOwoJCQkKCQkJLy8gSWYgd2UgZW5kIHVwIHdpdGggbm8gemlwIG1ldGhvZHMgY291bGQgYmUgdGhhdCBj
YWNoaW5nIG5vdCBmdW5jdGlvbmFsIG9uIHRoaXMKCQkJLy8gc2VydmVyIHNvIHdlJ2xsIGZvcmNlIG92ZXJ
yaWRlIGFuZCB0cnkgYWdhaW4gZm9yIGx1Y2sKCQkJaWYgKCB0cnVlICE9PSAkbWV0aG9kc19hdmFpbGFibG
UgKSB7CgkJCQoJCQkJLy8gTG9nIHRoYXQgd2UgYXJlIG92ZXJyaWRpbmcgY2FjaGluZwoJCQkJcGJfYmFja
3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnWmlwIG1ldGhvZCBjYWNoaW5nIGZvcmNlIGRpc2FibGVk
LicgKTsKCQkJCgkJCQkkdGhpcy0+c2V0X3ppcF9tZXRob2RfY2FjaGluZ19mb3JjZV9kaXNhYmxlZCggdHJ
1ZSApOwoJCQkJJHRoaXMtPmRlZHVjZV96aXBfbWV0aG9kcyggJHRoaXMtPl96aXBfbWV0aG9kcywgJHRoaX
MtPl96aXBfbWV0aG9kc19kZXRhaWxzLCAkdGhpcy0+X3JlcXVlc3RlZF96aXBfbWV0aG9kcywgJGJlc3Rfb
25seSApOwoKCQkJfQoKCQkJcmV0dXJuICR0aGlzOwoJCQoJCX0KCQkJCQkJCQkKCQkvKioKCQkgKglyZWZy
ZXNoX3ppcF9tZXRob2RzKCkKCQkgKgoJCSAqCVJlZnJlc2ggdGhlIGluZm9ybWF0aW9uIG9uIHRoZSBhdmF
pbGFibGUgemlwIG1ldGhvZHMKCQkgKglUT0RPOiBQZXJoYXBzIHRoZSB0cmFuc2llbnQgY291bGQgYmUgZG
VsZXRlZCBoZXJlIHJhdGhlciB0aGFuIGJ5IHRoZSBjYWxsZXI/CgkJICoKCQkgKglAcGFyYW0JCWFycmF5C
QkkemlwX21ldGhvZHMJT3B0aW9uYWw6IFRoZSBzZXQgb2YgemlwIG1ldGhvZHMgcmVxdWVzdGVkIHRvIHVz
ZQoJCSAqCUByZXR1cm4JCW9iamVjdAkJCQkJCVRoaXMgb2JqZWN0CgkJICovCgkJcHVibGljIGZ1bmN0aW9
uIHJlZnJlc2hfemlwX21ldGhvZHMoICR6aXBfbWV0aG9kcyA9IGFycmF5KCkgKSB7CgkJCgkJCSR0aGlzLT
5zZXRfemlwX21ldGhvZHMoICR6aXBfbWV0aG9kcyApOwoJCQkKCQkJcmV0dXJuICR0aGlzOwoJCQkKCQl9C
goJCS8qKgoJCSAqCXNhbml0aXplX2V4Y2x1ZGVzKCkKCQkgKgoJCSAqCVRha2UgYW4gZXhjbHVzaW9uIGxp
c3Qgb2YgZGlyZWN0b3JpZXMgYW5kL29yIGZpbGVzIGFuZCBwcm9kdWNlIGEgc2FuaXRpemVkIGV4Y2x1c2l
vbiBsaXN0CgkJICoJRGlyZWN0b3JpZXMgd2lsbCBiZSByZWNvZ25pemVkIGJ5IGhhdmluZyBhIHRyYWlsaW
5nIGRpcmVjdG9yeSBzZXBhcmF0b3Igb3RoZXJ3aXNlIHdpbGwgYmUKCQkgKgl0cmVhdGVkIGFzIGEgZmlsZ
SAobm90ZSB0aGF0IGhlcmUgd2UgYXJlIHdvcmtpbmcgd2l0aCBwYXR0ZXJucyBhbmQgbm90IHRlc3Rpbmcg
dG8gc2VlCgkJICoJd2hldGhlciBzb21ldGhpbmcgX2lzXyBhIGRpcmVjdG9yeSBvciBub3QgYmVjYXVzZSB
3ZSBkb24ndCBuZWNlc3NhcmlseSBoYXZlIHRoZSBmdWxsCgkJICoJZGlyZWN0b3J5IHBhdGgpLgoJCSAqCU
5vdGU6IEFueXRoaW5nIHRoYXQgY29udGFpbnMgYSB3aWxkY2FyZCBjaGFyYWN0ZXIgKCogb3IgPykgaXMga
Wdub3JlZCBhcyB0aGVzZSBhcmUgbm90CgkJICoJY3VycmVudGx5IHN1cHBvcnRlZCAoYW5kIG1heWJlIG5l
dmVyIHdpbGwgYWNyb3NzIHRoZSBib2FyZCkuIEZvciBjb21tYW5kIHppcCB6aXAgd2UgY2FuCgkJICoJY29
uc2lkZXIgYW4gb3B0aW9uIHRvIGhhdmUgdGhlc2UgYXMgc2VwYXJhdGUgZXhjbHVzaW9ucyAoYW5kIGN1cn
JlbnRseSB3ZSBjYW4gYWNjb21vZGF0ZQoJCSAqCXRoZW4gdGhyb3VnaCBzcGVjaWZ5aW5nIGVudmlyb25tZ
W50IFpJUE9QVFMuCgkJICoKCQkgKglAcGFyYW0JYXJyYXkJCUxpc3Qgb2YgcHJpbWFyeSBleGNsdXNpb25z
IC0gbWF5IGJlIGVtcHR5CgkJICoJQHBhcmFtCWFycmF5CQlMaXN0IG9mIHNlY29uZGFyeSBleGNsdXNpb25
zIC0gbWF5IGJlIGVtcHR5CgkJICoJQHBhcmFtCXN0cmluZwkJVGhlIGJhc2UgZGlyZWN0b3J5IHRvIGJlIH
VzZWQgaWYgbm9ybWFsaXppbmcKCQkgKgoJCSAqCUByZXR1cm4JbWl4ZWQJCWFycmF5IG9uIHN1Y2Nlc3MsI
GZhbHNlIG90aGVyd2lzZQoJCSAqLwoJCXByb3RlY3RlZCBmdW5jdGlvbiBzYW5pdGl6ZV9leGNsdWRlcygg
JHByaW1hcnksICRzZWNvbmRhcnksICRiYXNlID0gJycgKSB7CgoJCQkkc2FuaXRpemVkID0gYXJyYXkoKTs
KCQkJCgkJCSRiYXNlZGlyID0gdHJpbSggJGJhc2UgKTsKCQkJJG5vcm1hbGl6ZSA9ICFlbXB0eSggJGJhc2
VkaXIgKTsKCQkJCgkJCS8vIE5vcm1hbGl6ZSB0aGUgdHJhaWxpbmcgZGlyZWN0b3J5IHNlcGFyYXRvciBvb
iB0aGUgcGF0aAoJCQkkYmFzZWRpciA9IHJ0cmltKCAkYmFzZWRpciwgc2VsZjo6RElSRUNUT1JZX1NFUEFS
QVRPUlMgKSAuIHNlbGY6Ok5PUk1fRElSRUNUT1JZX1NFUEFSQVRPUjsKCQkJCgkJCS8vIE5vcm1hbGl6ZSB
wbGF0Zm9ybSBzcGVjaWZpYyBkaXJlY3Rvcnkgc2VwYXJhdG9ycyBpbiBwYXRoCgkJCSRiYXNlZGlyID0gc3
RyX3JlcGxhY2UoIERJUkVDVE9SWV9TRVBBUkFUT1IsIHNlbGY6Ok5PUk1fRElSRUNUT1JZX1NFUEFSQVRPU
iwgJGJhc2VkaXIgKTsKCQkKCQkJLy8gJHByaW1hcnkgaXMgY29uc2lkZXJlZCB0byBiZSB1bmNsZWFuCgkJ
CWZvcmVhY2ggKCAkcHJpbWFyeSBhcyAkZXhjbHVkZSApIHsKCQkJCgkJCQkvLyBSZXNldCBmbGFnIGZvciB
3aGV0aGVyIHRoaXMgZXhjbHVkZSBpcyBhIGRpcmVjdG9yeS1saWtlIGV4Y2x1ZGUKCQkJCSRpc19kaXJlY3
RvcnlfcGF0aCA9IGZhbHNlOwoJCQkJCgkJCQkvLyBHZXQgcmlkIG9mIHN0YW5kYXJkIHByZWZpeC9zdWZma
XggZGV0cml0dXMKCQkJCSRleGNsdWRlID0gdHJpbSggJGV4Y2x1ZGUgKTsKCQkJCQoJCQkJLy8gUG9zc2li
bGUgdGhhdCB3ZSBjb3VsZCBlbmQgdXAgd2l0aCBhbiBlbXB0eSBlbnRyeQoJCQkJLy8gQWxzbyBpZ25vcmU
gaWYgYW55IHdpbGRjYXJkIGNoYXJhY3RlcnMgcHJlc2VudAoJCQkJaWYgKCAhZW1wdHkoICRleGNsdWRlIC
kgJiYgKCAhcHJlZ19tYXRjaCggJ3xbPypdfCcsICRleGNsdWRlICkgKSApIHsKCQkJCQoJCQkJCS8vIFJlb
WVtYmVyIGlmIGl0IGhhcyBhIGRpcmVjdG9yeSBzZXBhcmF0b3Igc3VmZml4CgkJCQkJaWYgKCBwcmVnX21h
dGNoKCAnfFsnIC4gYWRkc2xhc2hlcyggc2VsZjo6RElSRUNUT1JZX1NFUEFSQVRPUlMgKSAuICddJHwnLCA
kZXhjbHVkZSApICkgewoJCQkJCQoJCQkJCQkkaXNfZGlyZWN0b3J5X3BhdGggPSB0cnVlOwoJCQkJCQoJCQ
kJCX0KCQkJCQkKCQkJCQkvLyBSZW1vdmUgd2hhdCBjb3VsZCBiZSBtdWx0aXBsZSBwcmVmaXggb3Igc3VmZ
ml4IGRpcmVjdG9yeSBzZXBhcmF0b3JzCgkJCQkJ
JGV4Y2x1ZGUgPSB0cmltKCAkZXhjbHVkZSwgc2VsZjo6RElSRUNUT1JZX1NFUEFSQVRPUlMgKTsKCQkJCQk
KCQkJCQkvLyBNYWtlIHN1cmUgcGxhdGZvcm0gc3BlY2lmaWMgZGlyZWN0b3J5IHNlcGFyYXRvcnMgaW4gcG
F0aCBiZWNvbWUgbm9ybWFsaXplZAoJCQkJCSRleGNsdWRlID0gc3RyX3JlcGxhY2UoIERJUkVDVE9SWV9TR
VBBUkFUT1IsIHNlbGY6Ok5PUk1fRElSRUNUT1JZX1NFUEFSQVRPUiwgJGV4Y2x1ZGUgKTsKCQkJCQkKCQkJ
CQkvLyBBbmQgYWRkIGJhY2sgYSBzaW5nbGUgaW5zdGFuY2UgcHJlZml4CgkJCQkJJGV4Y2x1ZGUgPSBzZWx
mOjpOT1JNX0RJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZXhjbHVkZTsKCQkJCQkKCQkJCQkvLyBBbmQgb3B0aW
9uYWxseSBhIHNpbmdsZSBpbnN0YW5jZSBzdWZmaXgKCQkJCQlpZiAoICRpc19kaXJlY3RvcnlfcGF0aCApI
HsKCQkJCQkKCQkJCQkJJGV4Y2x1ZGUgLj0gc2VsZjo6Tk9STV9ESVJFQ1RPUllfU0VQQVJBVE9SOwoJCQkJ
CQkKCQkJCQl9CgkJCQkJCQkJCQkKCQkJCQkkc2FuaXRpemVkW10gPSAkZXhjbHVkZTsKCQkJCQkKCQkJCX0
KCQkJCQoJCQl9CgkJCQoJCQkvLyAkc2Vjb25kYXJ5IGlzIGNvbnNpZGVyZWQgdG8gYmUgY2xlYW4KCQkJaW
YgKCAhZW1wdHkoICRzZWNvbmRhcnkgKSApIHsKCQkJCgkJCQkkc2FuaXRpemVkID0gYXJyYXlfbWVyZ2UoI
CRzYW5pdGl6ZWQsICRzZWNvbmRhcnkgKTsgCgkJCQoJCQl9CgkJCQoJCQkvLyBHZXQgdW5pcXVlIGVudHJp
ZXMgYW5kIHJlbnVtYmVyIG51bWVyaWMga2V5cwoJCQkkc2FuaXRpemVkID0gYXJyYXlfbWVyZ2UoIGFycmF
5X3VuaXF1ZSggJHNhbml0aXplZCApICk7CgkJCQoJCQlpZiAoIHRydWUgPT0gJG5vcm1hbGl6ZSApIHsKCQ
kJCgkJCQkvLyBNYWtlIHN1cmUgdGhlIG5vcm1hbGl6ZSBiYXNlIGhhcyBhIHRyYWlsaW5nIGRpcmVjdG9ye
SBzZXBhcmF0b3IKCQkJCSRiYXNlZGlyID0gKCBydHJpbSggJGJhc2VkaXIsIHNlbGY6Ok5PUk1fRElSRUNU
T1JZX1NFUEFSQVRPUiApICkgLiBzZWxmOjpOT1JNX0RJUkVDVE9SWV9TRVBBUkFUT1I7CgkJCQoJCQkJZm9
yZWFjaCAoICRzYW5pdGl6ZWQgYXMgJiRleGNsdXNpb24gKSB7CgkJCQkKCQkJCQkvLyBNdXN0IHJlbW92ZS
BhbnkgbGVhZGluZyBESVJFQ1RPUllfU0VQQVJBVE9SIGJlY2F1c2UgJGJhc2VkaXIgYWx3YXlzIGhhcyB0c
mFpbGluZwoJCQkJCSRleGNsdXNpb24gPSBsdHJpbSggJGV4Y2x1c2lvbiwgc2VsZjo6Tk9STV9ESVJFQ1RP
UllfU0VQQVJBVE9SICk7CgkJCQkJJGV4Y2x1c2lvbiA9ICggJGJhc2VkaXIgLiAkZXhjbHVzaW9uICk7Cgk
JCQkJCgkJCQl9CgkJCQkJCQkJCgkJCX0KCQkJCQkKCQkJcmV0dXJuICRzYW5pdGl6ZWQ7CgkJCgkJfQoKCQ
kvKioKCQkgKglnZXRfYXZhaWxhYmxlX3ppcF9tZXRob2RzKCkKCQkgKgkKCQkgKglSZXR1cm5zIHRoZSBhc
nJheSBvZiB6aXAgbWV0aG9kcyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIHRoZSBtb2RlIG9mIHRoaXMgb2Jq
ZWN0CgkJICoJTGlicmFyaWVzIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBhbHJlYWR5CgkJICoJCgkJICoJQHB
hcmFtCQlhcnJheQlUaGUgc3VwcG9ydGVkIHppcCBtZXRob2RzCgkJICoJQHBhcmFtCQlhcnJheQlUaGUgYX
JyYXkgd2hpY2ggd2lsbCBob2xkIHRoZSBhdmFpbGFibGUgbWV0aG9kcwoJCSAqCUBwYXJhbQkJYXJyYXkJV
GhlIGFycmF5IHRoYXQgd2lsbCBob2xkIHRoZSBhdmFpbGFibGUgbWV0aG9kcyBhdHRyaWJ1dGVzIChtZXRo
b2QgdGFnIGlzIGtleSkKCQkgKglAcmV0dXJuCQlib29sCVRydWUgaWYgbWV0aG9kcyBhdmFpbGFibGUsIEZ
hbHNlIG90aGVyd2lzZQoJCSAqCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9hdmFpbGFibGVfem
lwX21ldGhvZHMoIGFycmF5ICRzdXBwb3J0ZWRfemlwX21ldGhvZHMsICYkYXZhaWxhYmxlX21ldGhvZHMsI
CYkYXZhaWxhYmxlX21ldGhvZHNfZGV0YWlscyApIHsKCQkKCQkJLy8gTWFrZSBzdXJlIHRoZXNlIGFyZSBj
bGVhcmVkIGFzIHRoZSBjYWxsZXIgbWlnaHQgbm90IGhhdmUgZG9uZSBzbwoJCQkkYXZhaWxhYmxlX21ldGh
vZHMgPSBhcnJheSgpOwoJCQkkYXZhaWxhYmxlX21ldGhvZHNfZGV0YWlscyA9IGFycmF5KCk7CgkJCQoJCQ
kvLyBUcnkgZWFjaCBzdXBwb3J0ZWQgemlwIG1ldGhvZCB0byBzZWUgd2hhdCBpdCBjYW4gZG8gb24gdGhpc
yBzeXN0ZW0JCQoJCQlmb3JlYWNoICggJHN1cHBvcnRlZF96aXBfbWV0aG9kcyBhcyAkbWV0aG9kX3RhZyAp
IHsKCgkJCQkkY2xhc3NfbmFtZSA9ICdwbHVnaW5idWRkeV96YnppcCcgLiAkbWV0aG9kX3RhZzsKCQoJCQk
JJHppcHBlciA9IG5ldyAkY2xhc3NfbmFtZSggJHRoaXMgKTsKCQkJCQoJCQkJaWYgKCB0cnVlID09PSAkem
lwcGVyLT5pc19hdmFpbGFibGUoICR0aGlzLT5fdGVtcGRpciApICkgewoJCQkJCgkJCQkJJGF2YWlsYWJsZ
V9tZXRob2RzW10gPSAkbWV0aG9kX3RhZzsKCQkJCQkkYXZhaWxhYmxlX21ldGhvZHNfZGV0YWlsc1sgJG1l
dGhvZF90YWcgXSA9ICR6aXBwZXItPmdldF9tZXRob2RfZGV0YWlscygpOwoJCQkJCQoJCQkJfQoJCQkJCgk
JCQl1bnNldCggJHppcHBlciApOwoJCQl9CgkJCQkJCQoJCQlyZXR1cm4gKCAhZW1wdHkoICRhdmFpbGFibG
VfbWV0aG9kcyApICk7CgoJCX0KCQkJCQkJCgkJLyoqCgkJICoJZ2V0X2NvbXBhdGliaWxpdHlfemlwX21ld
GhvZHMoKQoJCSAqCQoJCSAqCVJldHVybnMgdGhlIGFycmF5IG9mIHppcCBtZXRob2RzIHRoYXQgYXJlIHJl
Z2FyZGVkIGFzICJjb21wYXRpYmlsaXR5IiBtZXRob2RzCgkJICoJTGlicmFyaWVzIG11c3QgaGF2ZSBiZWV
uIGxvYWRlZCBhbHJlYWR5CgkJICoJCgkJICoJQHJldHVybgkJYXJyYXkJRmxhdCBhcnJheSBvZiB6aXAgbW
V0aG9kcyAoY291bGQgYmUgZW1wdHkpCgkJICoKCQkgKi8KCQlwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X2Nvb
XBhdGliaWxpdHlfemlwX21ldGhvZHMoKSB7CgkJCgkJCSRjb21wYXRpYmlsaXR5X21ldGhvZHMgPSBhcnJh
eSgpOwoJCQkKCQkJZm9yZWFjaCAoICR0aGlzLT5femlwX21ldGhvZHMgYXMgJG1ldGhvZF90YWcgKSB7Cgo
JCQkJJGNsYXNzX25hbWUgPSAncGx1Z2luYnVkZHlfemJ6aXAnIC4gJG1ldGhvZF90YWc7CgkKCQkJCSR6aX
BwZXIgPSBuZXcgJGNsYXNzX25hbWUoICR0aGlzICk7CgkJCQkKCQkJCWlmICggJHppcHBlci0+Z2V0X2lzX
2NvbXBhdGliaWxpdHlfbWV0aG9kKCkgPT09IHRydWUgKSB7CgkJCQkKCQkJCQkkY29tcGF0aWJpbGl0eV9t
ZXRob2RzW10gPSAkbWV0aG9kX3RhZzsKCQkJCQkKCQkJCX0KCQkJCQoJCQkJdW5zZXQoICR6aXBwZXIgKTs
KCQkJfQoJCQkKCQkJcmV0dXJuICRjb21wYXRpYmlsaXR5X21ldGhvZHM7CgkJCQoJCX0KCQkKCQkvKioKCQ
kgKglnZXRfYmVzdF96aXBfbWV0aG9kcygpCgkJICoJCgkJICoJUmV0dXJucyB0aGUgYXJyYXkgb2YgYmVzd
CB6aXAgbWV0aG9kKHMpCgkJICoJRm9yIG5vdyB3ZSBhc3N1bWUgb25seSBvbmUgImJlc3QiIG1ldGhvZCBh
cyBiZWluZyB0aGUgZmlyc3QgbWV0aG9kIGluIHRoZSBsaXN0CgkJICoJdGhhdCBoYXMgdGhlIHJlcXVlc3R
lZCBhdHRyaWJ1dGUocykuCgkJICoJTGlicmFyaWVzIG11c3QgaGF2ZSBiZWVuIGxvYWRlZCBhbHJlYWR5Cg
kJICoJCgkJICoJQHBhcmFtCQlhcnJheQkkYXR0cmlidXRlcwlBcnJheSBvZiBhdHRyaWJ1dGVzIHRvIGNoZ
WNrIG1ldGhvZCBzdXBwb3J0cwoJCSAqCUByZXR1cm4JCWFycmF5CQkJCUZsYXQgYXJyYXkgb2YgemlwIG1l
dGhvZHMgKGNvdWxkIGJlIGVtcHR5KQoJCSAqCgkJICovCgkJcHJvdGVjdGVkIGZ1bmN0aW9uIGdldF9iZXN
0X3ppcF9tZXRob2RzKCAkYXR0cmlidXRlcyA9IGFycmF5KCkgKSB7CgkJCgkJCSRiZXN0X21ldGhvZHMgPS
BhcnJheSgpOwoJCQkKCQkJaWYgKCAhZW1wdHkoICR0aGlzLT5femlwX21ldGhvZHMgKSApIHsKCQkJCgkJC
QlpZiAoIGVtcHR5KCAkYXR0cmlidXRlcyApICkgewoJCQkJCgkJCQkJLy8gTm8gYXR0cmlidXRlcyB0byB0
ZXN0IGZvciBzbyBqdXN0IHRha2UgdGhlIGZpcnN0IGluIHRoZSBsaXN0CgkJCQkJJGJlc3RfbWV0aG9kc1t
dID0gJHRoaXMtPl96aXBfbWV0aG9kc1sgMCBdOwoJCQkJCQoJCQkJfSBlbHNlIHsKCQkJCgkJCQkJLy8gSG
F2ZSBzb21lIGF0dHJpYnV0ZXMgdG8gdGVzdCBzbyB3b3JrIGFsb25nIHRoZSBsaXN0IHVudGlsIHdlIGZpb
mQgYSBtYXRjaCBvciBlbmQgb2YgbGlzdAoJCQkJCWZvcmVhY2ggKCAkdGhpcy0+X3ppcF9tZXRob2RzIGFz
ICRtZXRob2RfdGFnICkgewoJCQkJCgkJCQkJCS8vIFN0YXJ0IGFmcmVzaCBlYWNoIHRpbWUgLSBhc3N1bWU
gc3VjY2VzcwoJCQkJCQkkbWF0Y2ggPSB0cnVlOwoJCQkJCQlmb3JlYWNoICggJGF0dHJpYnV0ZXMgYXMgJG
F0dHJpYnV0ZSApIHsKCQkJCQkJCgkJCQkJCQkvLyBDaGVjayBlYWNoIGF0dHJpYnV0ZSBpbiB0dXJuIChwc
mVjb25kaXRpb24gdGhhdCBhbGwgYXR0cmlidXRlcyBzZXQgdHJ1ZS9mYWxzZSkKCQkJCQkJCSRtYXRjaCA9
ICggJG1hdGNoICYmICggJHRoaXMtPl96aXBfbWV0aG9kc19kZXRhaWxzWyAkbWV0aG9kX3RhZyBdWyAnYXR
0cicgXVsgJGF0dHJpYnV0ZSBdID09PSB0cnVlICkgKTsKCQkJCQkJCgkJCQkJCX0KCQkJCQkJCgkJCQkJCW
lmICggdHJ1ZSA9PT0gJG1hdGNoICkgewoJCQkJCQkKCQkJCQkJCS8vIEZvdW5kIG91ciBtYXRjaGluZyBtZ
XRob2Qgc28gYnJlYWsgb3V0IG9mIHRoZSB0ZXN0IGxvb3AgdG8gcmV0dXJuCgkJCQkJCQkkYmVzdF9tZXRo
b2RzW10gPSAkbWV0aG9kX3RhZzsKCQkJCQkJCWJyZWFrOwoJCQkJCQkKCQkJCQkJfQkJCQkJCQoKCQkJCQl
9CgkJCQkKCQkJCX0KCQkJCgkJCQoJCQl9CgkJCQkJCQoJCQlyZXR1cm4gJGJlc3RfbWV0aG9kczsKCQkJCg
kJfQoJCQoJCS8qKgoJCSAqCWNyZWF0ZV9lbXB0eV96aXAoKQoJCSAqCQoJCSAqCUEgZnVuY3Rpb24gdGhhd
CBjcmVhdGVzIGFuIGVtcHR5IGFyY2hpdmUgZmlsZSB3aXRoIG9wdGlvbmFsIGNvbW1lbnQKCQkgKgkKCQkg
KglDcmVhdGUgYW4gZW1wdHkgemlwIGFyY2hpdmUgKGp1c3QgdGhlIGVuZCBvZiBjZW50cmFsIGRpcikgd2l
0aCBhbiBvcHRpb25hbAoJCSAqCWNvbW1lbnQgYXMgd2VsbC4gVGhpcyBoYXMgYSB3ZWxsIGtub3duIGJhc2
ljIHN0cnVjdHVyZSBhbmQgY29udGVudCBzbyB3ZSBjYW4KCQkgKgl3cml0ZSBpdCBkaXJlY3RseSBhcyBia
W5hcnkgZGF0YS4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkemlwCQkJRnVsbCBwYXRoICYgZmlsZW5h
bWUgb2YgWklQIEFyY2hpdmUgZmlsZSB0byBjcmVhdGUKCQkgKglAcGFyYW0JCXN0cmluZwkkY29tbWVudAk
JQ29tbWVudCB0byBhcHBseSB0byBhcmNoaXZlLiAobWF5IGJlIGVtcHR5KQoJCSAqCUBwYXJhbQkJc3RyaW
5nCSR0ZW1wZGlyCQlGdWxsIHBhdGggb2YgZGlyZWN0b3J5IGZvciB0ZW1wb3JhcnkgdXNhZ2UKCQkgKglAc
mV0dXJuCQlib29sCQkJCQlUcnVlIGlmIHRoZSBjcmVhdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3Ro
ZXJ3aXNlCgkJICoKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gY3JlYXRlX2VtcHR5X3ppcCggJHppcCwgJGN
vbW1lbnQsICR0ZW1wZGlyICkgewoJCQoJCQkkcmVzdWx0ID0gZmFsc2U7CgkJCSR6aXBfZmlsZV9uYW1lID
0gJHppcDsKCQkJCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oI
CdaaXAgcHJvY2VzcyByZXBvcnRlZDogSW5pdGlhbGl6aW5nIHppcCBhcmNoaXZlIGZpbGU6ICUxJHMnLCAn
aXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlX25hbWUgKSApOwoJCQkKCQkJdHJ5IHsKCQkJCgk
JCQkkemlwX2ZpbGUgPSBuZXcgU3BsRmlsZU9iamVjdCggJHppcF9maWxlX25hbWUsICJ3YiIgKTsKCgkJCQ
kvLyBFbmNvZGUgJGNvbW1lbnQgaWYgYW4gYXJyYXkuCgkJCQlpZiAoIGlzX2FycmF5KCAkY29tbWVudCApI
CkgewoJCQkJCgkJCQkJJGNvbW1lbnQgPSBqc29uX2VuY29kZSggJGNvbW1lbnQgKTsKCQkJCQkKCQkJCX0K
CQkJCQoJCQkJLy8gRG9uJ3QgYWRkIGFuIGVtcHR5IGNvbW1lbnQgLSBzbyBpZiB0aGUgZW5jb2RlZCBzdHJ
pbmcgaXMgZW1wdHkgb3IgYW4gZW1wdHkKCQkJCS8vIHN0cmluZyB3YXMgcGFzc2VkIGluIG9yaWdpbmFsbH
kgZG9uJ3QgZG8gYW55dGhpbmcuCgkJCQlpZiAoIDAgIT0gc3RybGVuKCAkY29tbWVudCApICkgewoJCQkJC
gkJCQkJJGNvbW1lbnQgPSAnTWV0YURhdGE6JyAuICRjb21tZW50IC4gJ01ldGFEYXRhLUVuZDonOwoJCQkJ
CQoJCQkJfQoJCQkJCgkJCQkvLyAtLS0tLSBQYWNrZWQgZGF0YQoJCQkJJGJpbmFyeV9kYXRhID0gcGFjayg
gIlZ2dnZ2VlZ2IiwgMHgwNjA1NGI1MCwgMCwgMCwgMCwgMCwgMCwgMCwgc3RybGVuKCAkY29tbWVudCApIC
k7CgoJCQkJLy8gLS0tLS0gV3JpdGUgdGhlIDIyIGJ5dGVzIG9mIHRoZSBoZWFkZXIgaW4gdGhlIHppcCBma
WxlCgkJCQkkemlwX2ZpbGUtPmZ3cml0ZSggJGJpbmFyeV9kYXRhLCAyMiApOwoKCQkJCS8vIC0tLS0tIFdy
aXRlIHRoZSB2YXJpYWJsZSBmaWVsZHMKCQkJCWlmICggMCAhPSBzdHJsZW4oICRjb21tZW50ICkgKSB7Cgk
JCQkKCQkJCSAgJHppcF9maWxlLT5md3JpdGUoICRjb21tZW50LCBzdHJsZW4oICRjb21tZW50ICkgKTsKCQ
kJCSAgCgkJCQl9CgkJCQkKCQkJCXVuc2V0KCAkemlwX2ZpbGUgKTsKCQkJCQoJCQkJcGJfYmFja3VwYnVkZ
Hk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXyggJ1ppcCBwcm9jZXNzIHJlcG9ydGVkOiBJbml0
aWFsaXplZCB6aXAgYXJjaGl2ZSBmaWxlJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKSApOwoJCQkJJHJ
lc3VsdCA9IHRydWU7CgkJCQoJCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkKCQkJCSRlcnJvcl
9zdHJpbmcgPSAkZS0+Z2V0TWVzc2FnZSgpOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpb
HMnLCBzcHJpbnRmKCBfXygnWmlwIHByb2Nlc3MgcmVwb3J0ZWQ6IEZhaWx1cmUgdG8gaW5pdGlhbGl6ZSB6
aXAgYXJjaGl2ZSBmaWxlIC0gZXJyb3IgcmVwb3J0ZWQ6ICUxJHMnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyA
pLCAkZXJyb3Jfc3RyaW5nICkgKTsKCQkJfQoKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQoJCX0KCQkKCQkvKi
oKCQkgKglhZGRfdmlydHVhbF9maWxlX3RvX3ppcCgpCgkJICoKCQkgKglBZGRzIGEgdmlydHVhbCBmaWxlI
HRvIGEgemlwIGFyY2hpdmUKCQkgKgoJCSAqCUBwYXJhbQlzdHJpbmcJCQkJRnVsbCBwYXRoICYgZmlsZW5h
bWUgb2YgWklQIGZpbGUgdG8gYWRkIHZpcnR1YWwgZmlsZSB0bwoJCSAqCUBwYXJhbQlhcnJheQkJCQlWaXJ
0dWFsIGZpbGUocykgZGVzY3JpcHRvcgoJCSAqCUBwYXJhbQlzdHJpbmcJCQkJRnVsbCBkaXJlY3RvcnkgcG
F0aCB0byBkaXJlY3RvcnkgdG8gdGVtcG9yYXJpbHkgcGxhY2UgWklQCgkJICoKCQkgKglAcmV0dXJuCQkJC
QkJdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UKCQkgKgoJCSAqLwoJCXB1YmxpYyBmdW5jdGlv
biBhZGRfdmlydHVhbF9maWxlX3RvX3ppcCggJHp
pcF9maWxlLCAkdmlydHVhbF9maWxlX2Rlc2NyaXB0b3IsICR0ZW1wb3JhcnlfemlwX2RpcmVjdG9yeSA9IC
cnICkgewoJCQoJCQkkemlwX21ldGhvZHMgPSBhcnJheSgpOwoJCQkKCQkJLy8gVXNlIHdoaWNoZXZlciBtZ
XRob2Qgc3VwcG9ydHMgYWRkaW5nIHZpcnR1YWwgZmlsZXMKCQkJJHppcF9tZXRob2RzID0gJHRoaXMtPl96
aXBfbWV0aG9kczsKCgkJCS8vIEJldHRlciBtYWtlIHN1cmUgd2UgaGF2ZSBzb21lIGF2YWlsYWJsZSBtZXR
ob2RzCgkJCWlmICggZW1wdHkoICR6aXBfbWV0aG9kcyApICkgewoJCQkKCQkJCS8vIEhtbSwgd2UgZG9uJ3
Qgc2VlbSB0byBoYXZlIGFueSBhdmFpbGFibGUgbWV0aG9kcywgb29wcywgYmVzdCBnbyBubyBmdXJ0aGVyC
gkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGYWlsZWQgdG8gYWRkIHZpcnR1
YWwgZmlsZSAtIG5vIGF2YWlsYWJsZSBtZXRob2RzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQk
JCQoJCQkJLy8gV2Ugc2hvdWxkIGhhdmUgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LCBtdXN0IGdldCByaWQgb2
YgaXQsIGNhbiBzaW1wbHkgcm1kaXIgaXQgYXMgaXQgd2lsbCAoc2hvdWxkKSBiZSBlbXB0eQoJCQkJaWYgK
CAhZW1wdHkoICR0ZW1wb3JhcnlfemlwX2RpcmVjdG9yeSApICYmIGZpbGVfZXhpc3RzKCAkdGVtcG9yYXJ5
X3ppcF9kaXJlY3RvcnkgKSApIHsKCQkJCQkKCQkJCQlpZiAoICFybWRpciggJHRlbXBvcmFyeV96aXBfZGl
yZWN0b3J5ICkgKSB7CgkJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX1
8oJ1RlbXBvcmFyeSBkaXJlY3RvcnkgY291bGQgbm90IGJlIGRlbGV0ZWQ6ICcsJ2l0LWwxMG4tYmFja3VwY
nVkZHknICkgLiAkdGVtcG9yYXJ5X3ppcF9kaXJlY3RvcnkgKTsKCQkJCQkKCQkJCQl9CgkJCQkJCQoJCQkJ
fQoKCQkJCXJldHVybiBmYWxzZTsKCQkJCQoJCQl9CgkJCQoJCQkvLyBJdGVyYXRlIG92ZXIgdGhlIG1ldGh
vZHMgLSBvbmNlIHdlIHN1Y2NlZWQganVzdCByZXR1cm4gZGlyZWN0bHkgb3RoZXJ3aXNlIGRyb3AgdGhyb3
VnaAoJCQlmb3JlYWNoICggJHppcF9tZXRob2RzIGFzICRtZXRob2RfdGFnICkgewoJCQkKCQkJCS8vIEZpc
nN0IG1ha2Ugc3VyZSB3ZSBjYW4gYXJjaGl2ZSB3aXRoIHRoaXMgbWV0aG9kCgkJCQlpZiAoICggJHRoaXMt
Pl96aXBfbWV0aG9kc19kZXRhaWxzWyAkbWV0aG9kX3RhZyBdWyAnYXR0cicgXVsgJ2lzX2FyY2hpdmVyJyB
dID09PSB0cnVlICkgJiYKCQkJCSAgICAgKCAkdGhpcy0+X3ppcF9tZXRob2RzX2RldGFpbHNbICRtZXRob2
RfdGFnIF1bICdhdHRyJyBdWyAnY2FuX2FkZF92aXJ0dWFsX2ZpbGUnIF0gPT09IHRydWUgKSApIHsKCgkJC
QkJJGNsYXNzX25hbWUgPSAncGx1Z2luYnVkZHlfemJ6aXAnIC4gJG1ldGhvZF90YWc7CgkJCgkJCQkJJHpp
cHBlciA9IG5ldyAkY2xhc3NfbmFtZSggJHRoaXMgKTsKCQkJCQkKCQkJCQkvLyBTZXQgdGhlc2Ugb24gc3B
lY2lmaWMgemlwcGVyIGJhc2VkIG9uIHRoZSB2YWx1ZXMgd2UgZGVyaXZlZCBhdCBjb25zdHJ1bmN0aW9uIG
9yCgkJCQkJLy8gb3ZlcnJpZGRlbiBieSBzdWJzZXF1ZW50IG1ldGhvZCBjYWxscwoJCQkJCSR6aXBwZXItP
nNldF9jb21wcmVzc2lvbiggJHRoaXMtPmdldF9jb21wcmVzc2lvbigpICk7CgkJCQkJJHppcHBlci0+c2V0
X2lnbm9yZV9zeW1saW5rcyggJHRoaXMtPmdldF9pZ25vcmVfc3ltbGlua3MoKSApOwoJCQkJCSR6aXBwZXI
tPnNldF9pZ25vcmVfd2FybmluZ3MoICR0aGlzLT5nZXRfaWdub3JlX3dhcm5pbmdzKCkgKTsKCQkJCQkKCQ
kJCQkvLyBXZSBuZWVkIHRvIHRlbGwgdGhlIG1ldGhvZCB3aGF0IGRldGFpbHMgYmVsb25nIHRvIGl0CgkJC
QkJJHppcHBlci0+c2V0X21ldGhvZF9kZXRhaWxzKCAkdGhpcy0+X3ppcF9tZXRob2RzX2RldGFpbHNbICRt
ZXRob2RfdGFnIF0gKTsKCQkJCQkKCQkJCQkvLyBUZWxsIHRoZSBtZXRob2QgdGhlIHNlcnZlciBhcGkgaW4
gdXNlCgkJCQkJJHppcHBlci0+c2V0X3NhcGlfbmFtZSggJHRoaXMtPmdldF9zYXBpX25hbWUoKSApOwoJCQ
kJCQkJCQkJCgkJCQkJLy8gQXMgd2UgYXJlIGxvb3BpbmcgbWFrZSBzdXJlIHdlIGhhdmUgbm8gc3RhbGUgZ
mlsZSBpbmZvcm1hdGlvbgoJCQkJCWNsZWFyc3RhdGNhY2hlKCk7CgkJCQkJCgkJCQkJLy8gVGhlIHRlbXBv
cmFyeSB6aXAgZGlyZWN0b3J5IF9tdXN0XyBleGlzdAoJCQkJCWlmICggIWVtcHR5KCAkdGVtcG9yYXJ5X3p
pcF9kaXJlY3RvcnkgKSApIHsKCQkJCQkKCQkJCQkJaWYgKCAhZmlsZV9leGlzdHMoICR0ZW1wb3Jhcnlfem
lwX2RpcmVjdG9yeSApICkgeyAvLyBDcmVhdGUgdGVtcCBkaXIgaWYgaXQgZG9lcyBub3QgZXhpc3QuCgkJC
QkJCQoJCQkJCQkJbWtkaXIoICR0ZW1wb3JhcnlfemlwX2RpcmVjdG9yeSApOwoJCQkJCQkJCgkJCQkJCX0K
CQkJCQkJCgkJCQkJfQoJCQkJCQoJCQkJCS8vIE5vdyB3ZSBhcmUgcmVhZHkgdG8gdHJ5IGFuZCBhZGQgdGh
lIHZpcnR1YWwgZmlsZQoJCQkJCSRyZXN1bHQgPSAkemlwcGVyLT5hZGRfdmlydHVhbF9maWxlKCAkemlwX2
ZpbGUsICR2aXJ0dWFsX2ZpbGVfZGVzY3JpcHRvciwgJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ICk7CgoJC
QkJCS8vIFdpbGwgYmUgZmFsc2UgaWYgd2UgY291bGRuJ3QgYWRkIHRoZSB2aXJ0dWFsIGZpbGUgdG8gdGhl
IGFyY2hpdmUKCQkJCQlpZiAoICRyZXN1bHQgPT09IHRydWUgKSB7CgkJCQkJCgkJCQkJCS8vIE11c3QgYXN
zdW1lIHRoYXQgd2UgYWRkZWQgdGhlIGZpbGUgb2sKCQkJCQkJdW5zZXQoICR6aXBwZXIgKTsKCQkJCQkJCg
kJCQkJCS8vIFdlIGhhdmUgdG8gcmV0dXJuIGhlcmUgYmVjYXVzZSB3ZSBjYW5ub3QgYnJlYWsgb3V0IG9mI
GZvcmVhY2gKCQkJCQkJcmV0dXJuIHRydWU7CgkKCQkJCQl9IGVsc2UgewoJCQkJCQoJCQkJCQkvLyBUaGUg
emlwcGVyIGVuY291bnRlcmVkIGFuIGVycm9yIHNvIHdlIG5lZWQgdG8gZHJvcCB0aHJvdWdoIGFuZCBsb29
wIHJvdW5kIHRvIHRyeSBhbm90aGVyCgkJCQkJCS8vIFdlJ2xsIG5vdCBwcm9jZXNzIHRoZSByZXN1bHQgaG
VyZSwganVzdCBkcm9wIHRocm91Z2ggc2lsZW50bHkgKHRoZSBtZXRob2Qgd2lsbCBoYXZlIGxvZ2dlZCBpd
CkJCQkKCQkJCQkJdW5zZXQoICR6aXBwZXIgKTsKCQkJCQkJCgkJCQkJfQoJCQkJCQoJCQkJfQoJCQkJCgkJ
CX0KCQkJCgkJCS8vIElmIHdlIGdldCBoZXJlIHRoZW4gaGF2ZSBmYWlsZWQgaW4gYWxsIGF0dGVtcHRzCgk
JCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ0ZhaWxlZCB0byBhZGQgdmlydHVhbC
BmaWxlIHdpdGggYW55IG5vbWluYXRlZCBtZXRob2QuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJC
QkKCQkJcmV0dXJuIGZhbHNlOwoJCQkKCQl9CgkJCgkJLyoqCgkJICoJYWRkX2RpcmVjdG9yeV90b196aXAo
KQoJCSAqCgkJICoJQWRkcyBhIGRpcmVjdG9yeSB0byBhIG5ldyBvciBleGlzdGluZyAoVE9ETzogbm90IHl
ldCBhdmFpbGFibGUpIFpJUCBmaWxlLgoJCSAqCgkJICoJQHBhcmFtCXN0cmluZwkJCQlGdWxsIHBhdGggJi
BmaWxlbmFtZSBvZiBaSVAgZmlsZSB0byBjcmVhdGUuCgkJICoJQHBhcmFtCXN0cmluZwkJCQlGdWxsIGRpc
mVjdG9yeSB0byBhZGQgdG8gemlwIGZpbGUuCgkJICoJQHBhcmFtCWFycmF5KCBzdHJpbmcgKQkJQXJyYXkg
b2Ygc3RyaW5ncyBvZiBwYXRocy9maWxlcyB0byBleGNsdWRlIGZyb20gemlwcGluZwoJCSAqCUBwYXJhbQl
zdHJpbmcJCQkJRnVsbCBkaXJlY3RvcnkgcGF0aCB0byBkaXJlY3RvcnkgdG8gdGVtcG9yYXJpbHkgcGxhY2
UgWklQCgkJICoJQHBhcmFtCWJvb2xlYW4JCQkJVHJ1ZTogb25seSB1c2UgUENMWmlwLiBGYWxzZTogdHJ5I
GFsbCBhdmFpbGFibGUKCQkgKgoJCSAqCUByZXR1cm4JCQkJCQl0cnVlIG9uIHN1Y2Nlc3MsIGZhbHNlIG90
aGVyd2lzZQoJCSAqCgkJICovCgkJcHVibGljIGZ1bmN0aW9uIGFkZF9kaXJlY3RvcnlfdG9femlwKCAkeml
wX2ZpbGUsICRhZGRfZGlyZWN0b3J5LCAkZXhjbHVkZXMgPSBhcnJheSgpLCAkdGVtcG9yYXJ5X3ppcF9kaX
JlY3RvcnkgPSAnJyApIHsKCQkJaWYgKCB0cnVlID09PSAkdGhpcy0+X2lzX2V4cGVyaW1lbnRhbCApIHsKC
QkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsIF9fKCdSdW5uaW5nIGFsdGVybmF0
aXZlIFpJUCBzeXN0ZW0gKEJFVEEpIGJhc2VkIG9uIHNldHRpbmdzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHk
nICkgKTsKCQkJCgkJCX0gZWxzZSB7CgkJCQoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2
UnLCBfXygnUnVubmluZyBzdGFuZGFyZCBaSVAgc3lzdGVtIGJhc2VkIG9uIHNldHRpbmdzLicsJ2l0LWwxM
G4tYmFja3VwYnVkZHknICkgKTsKCQkJCgkJCX0KCQkJCgkJCS8vIExldCdzIGp1c3QgbG9nIGlmIHRoaXMg
aXMgYSAzMiBvciA2NCBiaXQgc3lzdGVtCgkJCSRwaHBfc2l6ZSA9ICggcGx1Z2luYnVkZHlfc3RhdDo6aXN
fcGhwKCBwbHVnaW5idWRkeV9zdGF0OjpUSElSVFlfVFdPX0JJVCApICkgPyAiMzIiIDogIjY0IiA7CgkJCX
BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oICdSdW5uaW5nIHVuZGVyI
CUxJHMtYml0IFBIUCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkcGhwX3NpemUgKSApOwoJCQkKCQkJ
Ly8gTWFrZSBzdXJlIHdlIHRlbGwgd2hhdCB0aGUgc2FwaSBpcwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHV
zKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCAnU2VydmVyIEFQSTogJTEkcycsICdpdC1sMTBuLWJhY2t1cG
J1ZGR5JyApLCAkdGhpcy0+Z2V0X3NhcGlfbmFtZSgpICkgKTsJCQkKCQkJCQkKCQkJJHppcF9tZXRob2RzI
D0gYXJyYXkoKTsKCQkJJHNhbml0aXplZF9leGNsdWRlcyA9IGFycmF5KCk7CgkJCSRsaXN0bWFrZXIgPSBO
VUxMOwoJCQkKCQkJLy8gU2V0IHNvbWUgYWRkaXRpb25hbCBzeXN0ZW0gZXhjbHVkZXMgaGVyZSBmb3Igbm9
3IC0gdGhlc2UgYXJlIGFsbCBmcm9tIHRoZSBzaXRlIGluc3RhbGwgcm9vdAoJCQkkYWRkaXRpb25hbF9leG
NsdWRlcyA9IGFycmF5KCk7CgkJCQoJCQkvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhIHZhbGlkIHppcCBtZXRob
2Qgc3RyYXRlZ3kgc2V0dGluZyB0byB1c2Ugb3RoZXJ3aXNlIGZhbGwgYmFjayB0byBlbWVyZ2VuY3kgY29t
cGF0aWJpbGl0eQoJCQlpZiAoIGlzc2V0KCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbICd6aXBfbWV0aG9
kX3N0cmF0ZWd5JyBdICkgJiYgCSggJzAnICE9PSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbICd6aXBfbW
V0aG9kX3N0cmF0ZWd5JyBdICkgKSB7CgkJCQoJCQkJJHppcF9tZXRob2Rfc3RyYXRlZ3kgPSBwYl9iYWNrd
XBidWRkeTo6JG9wdGlvbnNbICd6aXBfbWV0aG9kX3N0cmF0ZWd5JyBdOwoJCQkJc3dpdGNoICggJHppcF9t
ZXRob2Rfc3RyYXRlZ3kgKSB7CgkJCQkJY2FzZSAiMSI6CgkJCQkJCS8vIEJlc3QgQXZhaWxhYmxlCgkJCQk
JCSR6aXBfbWV0aG9kcyA9ICR0aGlzLT5nZXRfYmVzdF96aXBfbWV0aG9kcyggYXJyYXkoICdpc19hcmNoaX
ZlcicgKSApOwoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdVc2luZyBCZ
XN0IEF2YWlsYWJsZSB6aXAgbWV0aG9kIGJhc2VkIG9uIHNldHRpbmdzLicsJ2l0LWwxMG4tYmFja3VwYnVk
ZHknICkgKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAiMiI6CgkJCQkJCS8vIEFsbCBBdmFpbGFibGUKCQk
JCQkJJHppcF9tZXRob2RzID0gJHRoaXMtPl96aXBfbWV0aG9kczsKCQkJCQkJcGJfYmFja3VwYnVkZHk6On
N0YXR1cyggJ2RldGFpbHMnLCBfXygnVXNpbmcgQWxsIEF2YWlsYWJsZSB6aXAgbWV0aG9kcyBpbiBwcmVmZ
XJyZWQgb3JkZXIgYmFzZWQgb24gc2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJ
CQlicmVhazsKCQkJCQljYXNlICIzIjoKCQkJCQkJLy8gRm9yY2UgQ29tcGF0aWJpbGl0eQoJCQkJCQkkeml
wX21ldGhvZHMgPSAkdGhpcy0+Z2V0X2NvbXBhdGliaWxpdHlfemlwX21ldGhvZHMoKTsJCQkJCgkJCQkJCX
BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgX18oJ1VzaW5nIEZvcmNlZCBDb21wYXRpYmlsa
XR5IHppcCBtZXRob2QgYmFzZWQgb24gc2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJ
CQkJCQlicmVhazsKCQkJCQlkZWZhdWx0OgoJCQkJCQkvLyBIbW0uLi51bnJlY29nbml6ZWQgdmFsdWUgLSB
lbWVyZ2VuY3kgY29tcGF0aWJpbGl0eQoJCQkJCQkkemlwX21ldGhvZHMgPSAkdGhpcy0+Z2V0X2NvbXBhdG
liaWxpdHlfemlwX21ldGhvZHMoKTsJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzY
WdlJywgc3ByaW50ZiggX18oJ0ZvcmNlZCBDb21wYXRpYmlsaXR5IE1vZGUgYXMgWmlwIE1ldGhvZCBTdHJh
dGVneSBzZXR0aW5nIG5vdCByZWNvZ25pemVkOiAlMSRzJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHp
pcF9tZXRob2Rfc3RyYXRlZ3kgKSApOwoJCQkJfQoJCQkJCgkJCX0gZWxzZSB7CgkJCQoJCQkJLy8gV2UgZ2
90IG5vIG9yIGFuIGludmFsaWQgemlwIG1ldGhvZCBzdHJhdGVneSB3aGljaCBpcyBhIGJhZCBzaXR1YXRpb
24gLSBlbWVyZ2VuY3kgY29tcGF0aWJpbGl0eSBpcyB0aGUgb3JkZXIgb2YgdGhlIGRheQoJCQkJJHppcF9t
ZXRob2RzID0gJHRoaXMtPmdldF9jb21wYXRpYmlsaXR5X3ppcF9tZXRob2RzKCk7CQkJCQoJCQkJcGJfYmF
ja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCBfXygnRm9yY2VkIENvbXBhdGliaWxpdHkgTW9kZSBhcy
BaaXAgTWV0aG9kIFN0cmF0ZWd5IG5vdCBzZXQgb3Igc2V0dGluZyBub3QgcmVjb2duaXplZC4nLCdpdC1sM
TBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQoJCQl9CgkJCQoJCQkvLyBCZXR0ZXIgbWFrZSBzdXJlIHdlIGhh
dmUgc29tZSBhdmFpbGFibGUgbWV0aG9kcwoJCQlpZiAoIGVtcHR5KCAkemlwX21ldGhvZHMgKSApIHsKCQk
JCgkJCQkvLyBIbW0sIHdlIGRvbid0IHNlZW0gdG8gaGF2ZSBhbnkgYXZhaWxhYmxlIG1ldGhvZHMsIG9vcH
MsIGJlc3QgZ28gbm8gZnVydGhlcgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfX
ygnRmFpbGVkIHRvIGNyZWF0ZSBhIFppcCBBcmNoaXZlIGZpbGUgLSBubyBhdmFpbGFibGUgbWV0aG9kcy4n
LCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkKCQkJCS8vIFdlIHNob3VsZCBoYXZlIGEgdGVtcG9
yYXJ5IGRpcmVjdG9yeSwgbXVzdCBnZXQgcmlkIG9mIGl0LCBjYW4gc2ltcGx5IHJtZGlyIGl0IGFzIGl0IH
dpbGwgKHNob3VsZCkgYmUgZW1wdHkKCQkJCWlmICggIWVtcHR5KCAkdGVtcG9yYXJ5X3ppcF9kaXJlY3Rvc
nkgKSAmJiBmaWxlX2V4aXN0cyggJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ICkgKSB7CgkJCQkJCgkJCQkJ
aWYgKCAhcm1kaXIoICR0ZW1wb3JhcnlfemlwX2RpcmVjdG9yeSApICkgewoJCQkJCQoJCQkJCQlwYl9iYWN
rdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF
9fKCdUZW1wb3JhcnkgZGlyZWN0b3J5IGNvdWxkIG5vdCBiZSBkZWxldGVkOiAnLCdpdC1sMTBuLWJhY2t1c
GJ1ZGR5JyApIC4gJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ICk7CgkJCQkJCgkJCQkJfQoJCQkJCQkKCQkJ
CX0KCgkJCQlyZXR1cm4gZmFsc2U7CgkJCQkKCQkJfQoJCQkKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyg
gJ2RldGFpbHMnLCBfXygnQ3JlYXRpbmcgWklQIGZpbGUnLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJy
BgJyAuICR6aXBfZmlsZSAuICdgLiAnIC4gX18oJ0FkZGluZyBkaXJlY3RvcnknLCdpdC1sMTBuLWJhY2t1c
GJ1ZGR5JyApIC4gJyBgJyAuICRhZGRfZGlyZWN0b3J5IC4gJ2AuICcgLiBfXygnRXhjbHVkZXMnLCdpdC1s
MTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzogJyAuIGltcGxvZGUoICcsJywgJGV4Y2x1ZGVzICkgKTsKCQkJCgk
JCS8vIFdlJ2xsIHRyeSBhbmQgYWxsb3cgZXhjbHVzaW9ucyBmb3IgcGNsemlwIGlmIHdlIGNhbgoJCQlpbm
NsdWRlX29uY2UoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9saWIvJyAuICR0aGlzLT5fd
2hlcmVhbWkgLiAnL3piZGlyLnBocCcgKTsKCQkJaWYgKCBjbGFzc19leGlzdHMoICdwbHVnaW5idWRkeV96
YmRpcicgKSApIHsKCQkJCgkJCQkvLyBHZW5lcmF0ZSBvdXIgc2FuaXRpemVkIGxpc3Qgb2YgZGlyZWN0b3J
pZXMvZmlsZXMgdG8gZXhjbHVkZSBhcyBhYnNvbHV0ZSBwYXRocyAobm9ybWFsaXplZCkgZm9yIHpiZGlyCg
kJCQkkc2FuaXRpemVkX2V4Y2x1ZGVzID0gJHRoaXMtPnNhbml0aXplX2V4Y2x1ZGVzKCAkZXhjbHVkZXMsI
CRhZGRpdGlvbmFsX2V4Y2x1ZGVzLCAkYWRkX2RpcmVjdG9yeSApOwoKCQkJCS8vIE5vdyBsZXQncyBjcmVh
dGUgdGhlIGxpc3Qgb2YgaXRlbXMgdG8gYWRkIHRvIHRoZSB6aXAgLSBmaXJzdCBidWlsZCB0aGUgdHJlZQo
JCQkJJGxpc3RtYWtlciA9IG5ldyBwbHVnaW5idWRkeV96YmRpciggJGFkZF9kaXJlY3RvcnksICRzYW5pdG
l6ZWRfZXhjbHVkZXMgKTsKCQkJCQoJCQkJLy8gUmUtZ2VuZXJhdGUgb3VyIHNhbml0aXplZCBsaXN0IG9mI
GRpcmVjdG9yaWVzL2ZpbGVzIHRvIGV4Y2x1ZGUgYXMgcmVsYXRpdmUgcGF0aHMKCQkJCS8vIFNsaWdodCBr
bHVkZ2UgdG8gZGVhbCB3aXRoIGJlaW5nIGFibGUgdG8gZW5hYmxlL2Rpc2FibGUgdGhlIGluY2x1c2lvbiB
wcm9jZXNzaW5nCgkJCQkvLyAoY3VycmVudGx5IGNvbmZpZ3VyZWQgaW4gd3AtY29uZmlnLnBocCkgc28gYW
x3YXlzIG5lZWQgdG8gcHJvdmlkZSB0aGUgZXhjbHVkZXMgYXMKCQkJCS8vIHJlbGF0aXZlIHBhdGggZm9yI
G5vdy4gVGhpcyBuZWVkcyB0byBiZSB0aWRpZWQgdXAgaW4gZnV0dXJlIGlmL3doZW4gdGhlIGNhcGFiaWxp
dHkKCQkJCS8vIGlzIGVzdGFibGlzaGVkIGFzIHN0YW5kYXJkCgkJCQkkc2FuaXRpemVkX2V4Y2x1ZGVzID0
gJHRoaXMtPnNhbml0aXplX2V4Y2x1ZGVzKCAkZXhjbHVkZXMsICRhZGRpdGlvbmFsX2V4Y2x1ZGVzICk7CQ
kJCQoKCQkJfSBlbHNlIHsKCQkJCgkJCQkvLyBHZW5lcmF0ZSBvdXIgc2FuaXRpemVkIGxpc3Qgb2YgZGlyZ
WN0b3JpZXMvZmlsZXMgdG8gZXhjbHVkZSBhcyByZWxhdGl2ZSBwYXRocwoJCQkJJHNhbml0aXplZF9leGNs
dWRlcyA9ICR0aGlzLT5zYW5pdGl6ZV9leGNsdWRlcyggJGV4Y2x1ZGVzLCAkYWRkaXRpb25hbF9leGNsdWR
lcyApOwoJCQkKCQkJfQoJCQkKCQkJLy8gSXRlcmF0ZSBvdmVyIHRoZSBtZXRob2RzIC0gb25jZSB3ZSBzdW
NjZWVkIGp1c3QgcmV0dXJuIGRpcmVjdGx5IG90aGVyd2lzZSBkcm9wIHRocm91Z2gKCQkJZm9yZWFjaCAoI
CR6aXBfbWV0aG9kcyBhcyAkbWV0aG9kX3RhZyApIHsKCQkJCgkJCQkvLyBGaXJzdCBtYWtlIHN1cmUgd2Ug
Y2FuIGFyY2hpdmUgd2l0aCB0aGlzIG1ldGhvZAoJCQkJaWYgKCAkdGhpcy0+X3ppcF9tZXRob2RzX2RldGF
pbHNbICRtZXRob2RfdGFnIF1bICdhdHRyJyBdWyAnaXNfYXJjaGl2ZXInIF0gPT09IHRydWUgKSB7CgoJCQ
kJCSRjbGFzc19uYW1lID0gJ3BsdWdpbmJ1ZGR5X3piemlwJyAuICRtZXRob2RfdGFnOwoJCQoJCQkJCSR6a
XBwZXIgPSBuZXcgJGNsYXNzX25hbWUoICR0aGlzICk7CgkJCQkJCgkJCQkJLy8gU2V0IHRoZXNlIG9uIHNw
ZWNpZmljIHppcHBlciBiYXNlZCBvbiB0aGUgdmFsdWVzIHdlIGRlcml2ZWQgYXQgY29uc3RydW5jdGlvbiB
vcgoJCQkJCS8vIG92ZXJyaWRkZW4gYnkgc3Vic2VxdWVudCBtZXRob2QgY2FsbHMKCQkJCQkkemlwcGVyLT
5zZXRfY29tcHJlc3Npb24oICR0aGlzLT5nZXRfY29tcHJlc3Npb24oKSApOwoJCQkJCSR6aXBwZXItPnNld
F9pZ25vcmVfc3ltbGlua3MoICR0aGlzLT5nZXRfaWdub3JlX3N5bWxpbmtzKCkgKTsKCQkJCQkkemlwcGVy
LT5zZXRfaWdub3JlX3dhcm5pbmdzKCAkdGhpcy0+Z2V0X2lnbm9yZV93YXJuaW5ncygpICk7CgkJCQkJCgk
JCQkJLy8gV2UgbmVlZCB0byB0ZWxsIHRoZSBtZXRob2Qgd2hhdCBkZXRhaWxzIGJlbG9uZyB0byBpdAoJCQ
kJCSR6aXBwZXItPnNldF9tZXRob2RfZGV0YWlscyggJHRoaXMtPl96aXBfbWV0aG9kc19kZXRhaWxzWyAkb
WV0aG9kX3RhZyBdICk7CgkJCQkJCgkJCQkJLy8gVGVsbCB0aGUgbWV0aG9kIHRoZSBzZXJ2ZXIgYXBpIGlu
IHVzZQoJCQkJCSR6aXBwZXItPnNldF9zYXBpX25hbWUoICR0aGlzLT5nZXRfc2FwaV9uYW1lKCkgKTsKCQk
JCQkKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdUcnlpbmcgJywgJ2l0LW
wxMG4tYmFja3VwYnVkZHknICkgLiAkbWV0aG9kX3RhZyAuIF9fKCcgbWV0aG9kIGZvciBaSVAuJywnaXQtb
DEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCQoJCQkJCS8vIEFzIHdlIGFyZSBsb29waW5nIG1ha2Ugc3Vy
ZSB3ZSBoYXZlIG5vIHN0YWxlIGZpbGUgaW5mb3JtYXRpb24KCQkJCQljbGVhcnN0YXRjYWNoZSgpOwoJCQk
JCQoJCQkJCS8vIFRoZSB0ZW1wb3JhcnkgemlwIGRpcmVjdG9yeSBfbXVzdF8gZXhpc3QKCQkJCQlpZiAoIC
FlbXB0eSggJHRlbXBvcmFyeV96aXBfZGlyZWN0b3J5ICkgKSB7CgkJCQkJCgkJCQkJCWlmICggIWZpbGVfZ
Xhpc3RzKCAkdGVtcG9yYXJ5X3ppcF9kaXJlY3RvcnkgKSApIHsgLy8gQ3JlYXRlIHRlbXAgZGlyIGlmIGl0
IGRvZXMgbm90IGV4aXN0LgoJCQkJCQkKCQkJCQkJCW1rZGlyKCAkdGVtcG9yYXJ5X3ppcF9kaXJlY3Rvcnk
gKTsKCQkJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCX0KCQkJCQkKCQkJCQkvLyBOb3cgd2UgYXJlIHJlYW
R5IHRvIHRyeSBhbmQgcHJvZHVjZSB0aGUgYmFja3VwCgkJCQkJaWYgKCAkemlwcGVyLT5jcmVhdGUoICR6a
XBfZmlsZSwgJGFkZF9kaXJlY3RvcnksICRzYW5pdGl6ZWRfZXhjbHVkZXMsICR0ZW1wb3JhcnlfemlwX2Rp
cmVjdG9yeSwgJGxpc3RtYWtlciApID09PSB0cnVlICkgewoJCQkJCQoJCQkJCQkvLyBHb3QgYSB2YWxpZCB
6aXAgZmlsZSBzbyB3ZSBjYW4ganVzdCByZXR1cm4gLSBtZXRob2Qgd2lsbCBoYXZlIGNsZWFuZWQgdXAgdG
hlIHRlbXBvcmFyeSBkaXJlY3RvcnkKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnL
CBfXygnVGhlICcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJG1ldGhvZF90YWcgLiBfXygnIG1ldGhv
ZCBmb3IgWklQIHdhcyBzdWNjZXNzZnVsLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkJdW5
zZXQoICR6aXBwZXIgKTsKCQkJCQkJCgkJCQkJCS8vIFdlIGhhdmUgdG8gcmV0dXJuIGhlcmUgYmVjYXVzZS
B3ZSBjYW5ub3QgYnJlYWsgb3V0IG9mIGZvcmVhY2gKCQkJCQkJcmV0dXJuIHRydWU7CgkKCQkJCQl9IGVsc
2UgewoJCQkJCQoJCQkJCQkvLyBNZXRob2Qgd2lsbCBoYXZlIGNsZWFuZWQgdXAgdGhlIHRlbXBvcmFyeSBk
aXJlY3RvcnkJCQkJCgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ1RoZSA
nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICRtZXRob2RfdGFnIC4gX18oJyBtZXRob2QgZm9yIFpJUC
B3YXMgdW5zdWNjZXNzZnVsLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQkJCQkJCQkJCQkJC
QoJCQkJCQl1bnNldCggJHppcHBlciApOwoJCQkJCQkKCQkJCQl9CgkJCQkKCQkJCX0gZWxzZSB7CgkJCQkK
CQkJCQkvLyBUaGlzIG1ldGhvZCBpcyBub3QgY29uc2lkZXJlZCBzdWl0YWJsZSAocmVsaWFibGUgZW5vdWd
oKSBmb3IgY3JlYXRpbmcgYXJjaGl2ZXMgb3IgbGFja2VkIHppcCBjYXBhYmlsaXR5CgkJCQkJcGJfYmFja3
VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnVGhlICcsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgL
iAkbWV0aG9kX3RhZyAuIF9fKCcgbWV0aG9kIGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGZvciBiYWNr
dXAuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwkJCQkJCgkJCQkKCQkJCX0KCQkJCQoJCQl9CgkJCQo
JCQkvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGhhdmUgZmFpbGVkIGluIGFsbCBhdHRlbXB0cwoJCQlwYl9iYW
NrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGYWlsZWQgdG8gY3JlYXRlIGEgWmlwIEFyY2hpd
mUgZmlsZSB3aXRoIGFueSBub21pbmF0ZWQgbWV0aG9kLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsK
CQkJCgkJCXJldHVybiBmYWxzZTsKCQoJCX0KCgkJLyoqCgkJICoJdW56aXAoKQoJCSAqCgkJICoJRXh0cmF
jdHMgdGhlIGNvbnRlbnRzIG9mIGEgemlwIGZpbGUgdG8gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkgdXNpbm
cgdGhlIGJlc3QgdW56aXAgbWV0aG9kcyBwb3NzaWJsZS4KCQkgKgoJCSAqCUBwYXJhbQlzdHJpbmcJCSR6a
XBfZmlsZQkJCQkJRnVsbCBwYXRoICYgZmlsZW5hbWUgb2YgWklQIGZpbGUgdG8gZXh0cmFjdCBmcm9tLgoJ
CSAqCUBwYXJhbQlzdHJpbmcJCSRkZXN0aW5hdGlvbl9kaXJlY3RvcnkJCUZ1bGwgZGlyZWN0b3J5IHBhdGg
gdG8gZXh0cmFjdCBpbnRvLgoJCSAqCUBwYXJhbQlib29sfHN0cmluZyAkZm9yY2VfY29tcGF0aWJpbGl0eV
9tb2RlCUZhbHNlOiB1c2UgYWxsIGF2YWlsYWJsZSwgU3RyaW5nOiB1c2UgdGhhdCBtZXRob2QKCQkgKgoJC
SAqCUByZXR1cm4JYm9vbAkJCQkJCQkJCXRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlCgkJICov
CgkJcHVibGljIGZ1bmN0aW9uIHVuemlwKCAkemlwX2ZpbGUsICRkZXN0aW5hdGlvbl9kaXJlY3RvcnksICR
mb3JjZV9jb21wYXRpYmlsaXR5X21vZGUgPSBmYWxzZSApIHsKCgkJCSR6aXBfbWV0aG9kcyA9IGFycmF5KC
k7CgkJCQoJCQkvLyBUaGUgZm9sbG93aW5nIGlzIGp1c3QgdG8gbWF0Y2ggY3VycmVudCBmdW5jdGlvbmFsa
XR5IGZvciBpbXBvcnRidWRkeSAtIGlkZWFsbHkgd291bGQgcmF0aGVyCgkJCS8vIGRvIGl0IGJ5IHNlbGVj
dGluZyBhdmFpbGFibGUgY29tcGF0aWJpbGl0eSBtZXRob2RzIGJhc2VkIG9uIG1ldGhvZCBhdHRyaWJ1dGV
zIC0gbWF5IGRvIHRoYXQgbGF0ZXIKCQkJLy8gKHdvdWxkIGFsc28gbmVlZCBnZXRfY29tcGF0aWJpbGl0eV
96aXBfbWV0aG9kcygpIHRvIGJlIHVwZGF0ZWQgdG8gdGFrZSBwYXJhbWV0ZXIgdG8gY2hlY2sKCQkJLy8gd
2hldGhlciBjb21wYXRpYmlsaXR5IG1ldGhvZCBmb3IgdGhhdCBwYXJ0aWN1bGFyIGZ1bmN0aW9uLgoJCQkJ
CQkKCQkJLy8gRGVjaWRlIHdoaWNoIG1ldGhvZHMgd2UgYXJlIGdvaW5nIHRvIHRyeQoJCQlpZiAoICRmb3J
jZV9jb21wYXRpYmlsaXR5X21vZGUgPT0gJ3ppcGFyY2hpdmUnICkgewoKCQkJCSR6aXBfbWV0aG9kcyA9IG
FycmF5KCAnemlwYXJjaGl2ZScgKTsJCQkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZ
ScsIF9fKCdGb3JjZWQgY29tcGF0aWJpbGl0eSB1bnppcCBtZXRob2QgKFppcEFyY2hpdmU7IG1lZGl1bSBz
cGVlZCkgYmFzZWQgb24gc2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCQkJCgkJCX0
gZWxzZWlmICggJGZvcmNlX2NvbXBhdGliaWxpdHlfbW9kZSA9PSAncGNsemlwJyApIHsKCQkJCgkJCQkkem
lwX21ldGhvZHMgPSBhcnJheSggJ3BjbHppcCcgKTsJCQkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzK
CAnbWVzc2FnZScsIF9fKCdGb3JjZWQgY29tcGF0aWJpbGl0eSB1bnppcCBtZXRob2QgKFBDTFppcDsgc2xv
dyBzcGVlZCkgYmFzZWQgb24gc2V0dGluZ3MuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSApOwkJCQoJCQk
KCQkJfSBlbHNlIHsKCQkJCgkJCQkkemlwX21ldGhvZHMgPSAkdGhpcy0+X3ppcF9tZXRob2RzOwoJCQkJcG
JfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnVXNpbmcgYWxsIGF2YWlsYWJsZSB1bnppc
CBtZXRob2RzIGluIHByZWZlcnJlZCBvcmRlci4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCX0K
CQkJCQkJCgkJCS8vIEJldHRlciBtYWtlIHN1cmUgd2UgaGF2ZSBzb21lIGF2YWlsYWJsZSBtZXRob2RzCgk
JCWlmICggZW1wdHkoICR6aXBfbWV0aG9kcyApICkgewoJCQkKCQkJCS8vIEhtbSwgd2UgZG9uJ3Qgc2VlbS
B0byBoYXZlIGFueSBhdmFpbGFibGUgbWV0aG9kcywgb29wcywgYmVzdCBnbyBubyBmdXJ0aGVyCgkJCQlwY
l9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdVbmFibGUgdG8gZXh0cmFj
dCBiYWNrdXAgZmlsZSBjb250ZW50cyAoJTEkcyB0byAlMiRzKTogTm8gYXZhaWxhYmxlIHVuemlwIG1ldGh
vZHMgZm91bmQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlLCAkZGVzdGluYXRpb25fZG
lyZWN0b3J5ICkgKTsKCQkJCQoJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCgkJCX0KCgkJCS8vIE1ha2Ugc3VyZ
SB3ZSBoYXZlIGEgbm9ybWFsaXplZCBkaXJlY3Rvcnkgc2VwYXJhdG9yIHN1ZmZpeAkKCQkJJGRlc3RpbmF0
aW9uX2RpcmVjdG9yeSA9IHJ0cmltKCAkZGVzdGluYXRpb25fZGlyZWN0b3J5LCBzZWxmOjpESVJFQ1RPUll
fU0VQQVJBVE9SUyApIC4gc2VsZjo6Tk9STV9ESVJFQ1RPUllfU0VQQVJBVE9SOwkJCgoJCQkvLyBJdGVyYX
RlIG92ZXIgdGhlIG1ldGhvZHMgLSBvbmNlIHdlIHN1Y2NlZWQganVzdCByZXR1cm4gZGlyZWN0bHkgb3RoZ
XJ3aXNlIGRyb3AgdGhyb3VnaAoJCQlmb3JlYWNoICggJHppcF9tZXRob2RzIGFzICRtZXRob2RfdGFnICkg
ewoJCQkKCQkJCS8vIEZpcnN0IG1ha2Ugc3VyZSB3ZSBjYW4gY2hlY2sgZmlsZSBleGlzdGVuY2Ugd2l0aCB
0aGlzIG1ldGhvZCAoaWdub3JlIHNpbGVudGx5IGlmIG5vdCkKCQkJCS8vIE5vdGU6IGhhcyB0byBiZSBhYm
xlIHRvIHVuemlwIGFzIHdlbGwgYnV0IGlmIHRoYXQgZnVuY3Rpb25hbGl0eSB3YXNuJ3QgYXZhaWxhYmxlI
GluCgkJCQkvLyB0aGUgbWV0aG9kIHRoZSBpc19jaGVja2VyIGF0dHJpYnV0ZSB3aWxsIGhhdmUgYmVlbiBz
ZXQgZmFsc2UKCQkJCWlmICggJHRoaXMtPl96aXBfbWV0aG9kc19kZXRhaWxzWyAkbWV0aG9kX3RhZyBdWyA
nYXR0cicgXVsgJ2lzX3VuYXJjaGl2ZXInIF0gPT09IHRydWUgKSB7CgoJCQkJCSRjbGFzc19uYW1lID0gJ3
BsdWdpbmJ1ZGR5X3piemlwJyAuICRtZXRob2Rfd
GFnOwoJCQoJCQkJCSR6aXBwZXIgPSBuZXcgJGNsYXNzX25hbWUoICR0aGlzICk7CgkJCQkJCgkJCQkJLy8g
V2UgbmVlZCB0byB0ZWxsIHRoZSBtZXRob2Qgd2hhdCBkZXRhaWxzIGJlbG9uZyB0byBpdAoJCQkJCSR6aXB
wZXItPnNldF9tZXRob2RfZGV0YWlscyggJHRoaXMtPl96aXBfbWV0aG9kc19kZXRhaWxzWyAkbWV0aG9kX3
RhZyBdICk7CgkJCQkJCQkJCQkKCQkJCQkvLyBOb3cgd2UgYXJlIHJlYWR5IHRvIHRyeSBhbmQgZXh0cmFjd
CB0aGUgYmFja3VwCgkJCQkJJHJlc3VsdCA9ICR6aXBwZXItPmV4dHJhY3QoICR6aXBfZmlsZSwgJGRlc3Rp
bmF0aW9uX2RpcmVjdG9yeSApOwoJCQkJCQoJCQkJCS8vIFdpbGwgYmUgZmFsc2UgaWYgd2UgY291bGRuJ3Q
gZXh0cmFjdCB0aGUgYmFja3VwCgkJCQkJaWYgKCAkcmVzdWx0ID09PSB0cnVlICkgewoJCQkJCQoJCQkJCQ
kvLyBNdXN0IGFzc3VtZSB0aGF0IHdlIGV4dHJhY3RlZCBvawoJCQkJCQl1bnNldCggJHppcHBlciApOwoJC
QkJCQkKCQkJCQkJLy8gV2UgaGF2ZSB0byByZXR1cm4gaGVyZSBiZWNhdXNlIHdlIGNhbm5vdCBicmVhayBv
dXQgb2YgZm9yZWFjaAoJCQkJCQlyZXR1cm4gdHJ1ZTsKCQoJCQkJCX0gZWxzZSB7CgkJCQkJCgkJCQkJCS8
vIFRoZSB6aXBwZXIgZW5jb3VudGVyZWQgYW4gZXJyb3Igc28gd2UgbmVlZCB0byBkcm9wIHRocm91Z2ggYW
5kIGxvb3Agcm91bmQgdG8gdHJ5IGFub3RoZXIKCQkJCQkJLy8gV2UnbGwgbm90IHByb2Nlc3MgdGhlIHJlc
3VsdCBoZXJlLCBqdXN0IGRyb3AgdGhyb3VnaCBzaWxlbnRseSAodGhlIG1ldGhvZCB3aWxsIGhhdmUgbG9n
Z2VkIGl0KQkJCQoJCQkJCQl1bnNldCggJHppcHBlciApOwoJCQkJCQkKCQkJCQl9CgkJCQkKCQkJCX0KCQk
JCQoJCQl9CgkJCQoJCQkvLyBJZiB3ZSBnb3QgdGhpcyBmYXIgdGhlbiBubyBtZXRob2QgdG8gZXh0cmFjdC
BiYWNrdXAgY29udGVudCB3YXMgYXZhaWxhYmxlIG9yIHdvcmtlZAoJCQlwYl9iYWNrdXBidWRkeTo6c3Rhd
HVzKCAnZGV0YWlscycsIHNwcmludGYoIF9fKCdVbmFibGUgdG8gZXh0cmFjdCBiYWNrdXAgZmlsZSBjb250
ZW50cyAoJTEkcyB0byAlMiRzKTogTm8gY29tcGF0aWJsZSB6aXAgbWV0aG9kIGZvdW5kLicsJ2l0LWwxMG4
tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSApICk7CgkJCXJldH
VybiBmYWxzZTsKCQkJCgkJfQoJCQoJCS8qKgoJCSAqCWV4dHJhY3QoKQoJCSAqCgkJICoJRXh0cmFjdHMgd
GhlIHNwZWNpZmllZCBjb250ZW50cyBvZiBhIHppcCBmaWxlIHRvIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRp
b24gdXNpbmcgdGhlIGJlc3QgdW56aXAgbWV0aG9kcyBwb3NzaWJsZS4KCQkgKglUaGUgZGVzdGluYXRpb24
gZGlyZWN0b3J5IF9tdXN0XyBhbHJlYWR5IGV4aXN0IGFuZCBiZSB3cml0YWJsZSAtIHRoaXMgZnVuY3Rpb2
4gZG9lcyBub3QgY3JlYXRlIGl0CgkJICoJVGhlIGl0ZW1zIGFyZSBhbiBhcnJheSBvZiBtYXBwaW5nIG9mI
HdoYXQgPT4gd2hlcmUsIGUuZy4KCQkgKglhcnJheSggImRpci9teWZpbGUudHh0IiA9PiAiIiwgImRpci9t
eWZpbGUudHh0IiA9PiAidG1wZmlsZW5hbWUiLCAiZGlyL215ZmlsZS50eHQiID0+ICJkaXIvbXlmaWxlLnR
4dCIgKQoJCSAqCUluIHRoZSBmaXJzdCBjYXNlIHRoZSBmaWxlIGlzIGV4dHJhY3RlZCB0byAkZGVzdGluYX
Rpb25fZGlyZWN0b3J5L215ZmlsZS50eHQKCQkgKglJbiB0aGUgc2Vjb25kIGNhc2UgdGhlIGZpbGUgaXMgZ
Xh0cmFjdGVkIHRvICRkZXN0aW5hdGlvbl9kaXJlY3RvcnkvdG1wZmlsZW5hbWUKCQkgKglJbiB0aGUgdGhp
cmQgY2FzZSB0aGUgZmlsZSBpcyBleHRyYWN0ZWQgdG8gJGRlc3RpbmF0aW9uX2RpcmVjdG9yeS9kaXIvbXl
maWxlLnR4dAoJCSAqCU5vdGU6IGluIHRoZSBzZWNvbmQgY2FzZSB0aGUgZmlsZSBpcyBpbml0aWFsbHkgZX
h0cmNhdGVkIGFzIG15ZmlsZS50eHQgYW5kIHRoZW4gcmVuYW1lIHRvIHRtcGZpbGVuYW1lCgkJICoJQW5vd
GhlciBleGFtcGxlIGlzIGZvciBkaXJlY3RvcnkgZXh0cmFjdGlvbjoKCQkgKglhcnJheSggImRpci8qIiA9
PiAiZGlyLyoiICkKCQkgKglXaGVyZWJ5IHRoZSBkaXJlY3RvcnkgZGlyIGFuZCBhbGwgaXQncyBjb250ZW5
0IChyZWN1cnNpdmVseSkgaXMgZXh0cmFjdGVkIHRvICRkZXN0aW5hdGlvbi9kaXIKCQkgKglOb3RlOiB0aG
UgKiBpcyByZXF1aXJlZCBvdGhlcndpc2UgeW91IGp1c3QgZ2V0IGFuIGVtcHR5IGRpcmVjdG9yeQoJCSAqC
gkJICoJQHBhcmFtCXN0cmluZwkkemlwX2ZpbGUJCQkJRnVsbCBwYXRoICYgZmlsZW5hbWUgb2YgWklQIGZp
bGUgdG8gZXh0cmFjdCBmcm9tLgoJCSAqCUBwYXJhbQlzdHJpbmcJJGRlc3RpbmF0aW9uX2RpcmVjdG9yeQl
GdWxsIGRpcmVjdG9yeSBwYXRoIHRvIGV4dHJhY3QgdG8KCQkgKglAcGFyYW0JYXJyYXkJJGl0ZW1zCQkJCQ
lNYXBwaW5nIG9mIHdoYXQgdG8gZXh0cmFjdCBhbmQgdG8gd2hhdAoJCSAqCgkJICoJQHJldHVybglib29sC
QkJCQkJCXRydWUgb24gc3VjY2VzcyAoYWxsIGV4dHJhY3Rpb25zIHN1Y2Nlc3NmdWwpLCBmYWxzZSBvdGhl
cndpc2UKCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZXh0cmFjdCggJHppcF9maWxlLCAkZGVzdGluYXRpb25
fZGlyZWN0b3J5LCAkaXRlbXMgKSB7CgoJCQkkemlwX21ldGhvZHMgPSBhcnJheSgpOwoJCQkKCQkJLy8gVG
hlIGZvbGxvd2luZyBpcyBqdXN0IHRvIG1hdGNoIGN1cnJlbnQgZnVuY3Rpb25hbGl0eSBmb3IgaW1wb3J0Y
nVkZHkgLSBpZGVhbGx5IHdvdWxkIHJhdGhlcgoJCQkvLyBkbyBpdCBieSBzZWxlY3RpbmcgYXZhaWxhYmxl
IGNvbXBhdGliaWxpdHkgbWV0aG9kcyBiYXNlZCBvbiBtZXRob2QgYXR0cmlidXRlcyAtIG1heSBkbyB0aGF
0IGxhdGVyCgkJCS8vICh3b3VsZCBhbHNvIG5lZWQgZ2V0X2NvbXBhdGliaWxpdHlfemlwX21ldGhvZHMoKS
B0byBiZSB1cGRhdGVkIHRvIHRha2UgcGFyYW1ldGVyIHRvIGNoZWNrCgkJCS8vIHdoZXRoZXIgY29tcGF0a
WJpbGl0eSBtZXRob2QgZm9yIHRoYXQgcGFydGljdWxhciBmdW5jdGlvbi4KCQkJCQkJCgkJCSR6aXBfbWV0
aG9kcyA9ICR0aGlzLT5femlwX21ldGhvZHM7CgkJCQkJCQoJCQkvLyBCZXR0ZXIgbWFrZSBzdXJlIHdlIGh
hdmUgc29tZSBhdmFpbGFibGUgbWV0aG9kcwoJCQlpZiAoIGVtcHR5KCAkemlwX21ldGhvZHMgKSApIHsKCQ
kJCgkJCQkvLyBIbW0sIHdlIGRvbid0IHNlZW0gdG8gaGF2ZSBhbnkgYXZhaWxhYmxlIG1ldGhvZHMsIG9vc
HMsIGJlc3QgZ28gbm8gZnVydGhlcgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBz
cHJpbnRmKCBfXygnVW5hYmxlIHRvIGV4dHJhY3QgZnJvbSBiYWNrdXAgZmlsZSAoJTEkcyB0byAlMiRzKTo
gTm8gYXZhaWxhYmxlIHVuemlwIG1ldGhvZHMgZm91bmQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJH
ppcF9maWxlLCAkZGVzdGluYXRpb24gKSApOwoJCQkJCgkJCQlyZXR1cm4gZmFsc2U7CgkJCQkKCQkJfQoJC
QkKCQkJaWYgKCAhKCBmaWxlX2V4aXN0cyggJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSApICYmIGlzX2Rpcigg
JGRlc3RpbmF0aW9uX2RpcmVjdG9yeSApICYmIGlzX3dyaXRhYmxlKCAkZGVzdGluYXRpb25fZGlyZWN0b3J
5ICkgKSApIHsKCQkJCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIHNwcmludGYoIF
9fKCdVbmFibGUgdG8gZXh0cmFjdCBmcm9tIGJhY2t1cCBmaWxlICglMSRzIHRvICUyJHMpOiAlMiRzIGRvZ
XMgbm90IGV4aXN0LCBpcyBub3QgYSBkaXJlY3Rvcnkgb3IgaXMgbm90IHdyaXRlYWJsZScsJ2l0LWwxMG4t
YmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSApICk7CgkJCQoJCQk
JcmV0dXJuIGZhbHNlOwoJCQkJCgkJCX0KCQkJCgkJCS8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgbm9ybWFsaX
plZCBkaXJlY3Rvcnkgc2VwYXJhdG9yIHN1ZmZpeAkKCQkJJGRlc3RpbmF0aW9uX2RpcmVjdG9yeSA9IHJ0c
mltKCAkZGVzdGluYXRpb25fZGlyZWN0b3J5LCBzZWxmOjpESVJFQ1RPUllfU0VQQVJBVE9SUyApIC4gc2Vs
Zjo6Tk9STV9ESVJFQ1RPUllfU0VQQVJBVE9SOwkJCgoJCQkvLyBJdGVyYXRlIG92ZXIgdGhlIG1ldGhvZHM
gLSBvbmNlIHdlIHN1Y2NlZWQganVzdCByZXR1cm4gZGlyZWN0bHkgb3RoZXJ3aXNlIGRyb3AgdGhyb3VnaA
oJCQlmb3JlYWNoICggJHppcF9tZXRob2RzIGFzICRtZXRob2RfdGFnICkgewoJCQkKCQkJCS8vIEZpcnN0I
G1ha2Ugc3VyZSB3ZSBjYW4gY2hlY2sgZmlsZSBleGlzdGVuY2Ugd2l0aCB0aGlzIG1ldGhvZCAoaWdub3Jl
IHNpbGVudGx5IGlmIG5vdCkKCQkJCS8vIE5vdGU6IGhhcyB0byBiZSBhYmxlIHRvIHVuemlwIGFzIHdlbGw
gYnV0IGlmIHRoYXQgZnVuY3Rpb25hbGl0eSB3YXNuJ3QgYXZhaWxhYmxlIGluCgkJCQkvLyB0aGUgbWV0aG
9kIHRoZSBpc19jaGVja2VyIGF0dHJpYnV0ZSB3aWxsIGhhdmUgYmVlbiBzZXQgZmFsc2UKCQkJCWlmICggJ
HRoaXMtPl96aXBfbWV0aG9kc19kZXRhaWxzWyAkbWV0aG9kX3RhZyBdWyAnYXR0cicgXVsgJ2lzX2V4dHJh
Y3RvcicgXSA9PT0gdHJ1ZSApIHsKCgkJCQkJJGNsYXNzX25hbWUgPSAncGx1Z2luYnVkZHlfemJ6aXAnIC4
gJG1ldGhvZF90YWc7CgkJCgkJCQkJJHppcHBlciA9IG5ldyAkY2xhc3NfbmFtZSggJHRoaXMgKTsKCQkJCQ
kKCQkJCQkvLyBXZSBuZWVkIHRvIHRlbGwgdGhlIG1ldGhvZCB3aGF0IGRldGFpbHMgYmVsb25nIHRvIGl0C
gkJCQkJJHppcHBlci0+c2V0X21ldGhvZF9kZXRhaWxzKCAkdGhpcy0+X3ppcF9tZXRob2RzX2RldGFpbHNb
ICRtZXRob2RfdGFnIF0gKTsKCQkJCQkJCQkJCQoJCQkJCS8vIE5vdyB3ZSBhcmUgcmVhZHkgdG8gdHJ5IGF
uZCBleHRyYWN0IGZyb20gdGhlIGJhY2t1cAoJCQkJCSRyZXN1bHQgPSAkemlwcGVyLT5leHRyYWN0KCAkem
lwX2ZpbGUsICRkZXN0aW5hdGlvbl9kaXJlY3RvcnksICRpdGVtcyApOwoJCQkJCQoJCQkJCS8vIFdpbGwgY
mUgZmFsc2UgaWYgd2UgY291bGRuJ3QgZXh0cmFjdCBmcm9tIHRoZSBiYWNrdXAKCQkJCQlpZiAoICRyZXN1
bHQgPT09IHRydWUgKSB7CgkJCQkJCgkJCQkJCS8vIE11c3QgYXNzdW1lIHRoYXQgd2UgZXh0cmFjdGVkIG9
rCgkJCQkJCXVuc2V0KCAkemlwcGVyICk7CgkJCQkJCQoJCQkJCQkvLyBXZSBoYXZlIHRvIHJldHVybiBoZX
JlIGJlY2F1c2Ugd2UgY2Fubm90IGJyZWFrIG91dCBvZiBmb3JlYWNoCgkJCQkJCXJldHVybiB0cnVlOwoJC
gkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gVGhlIHppcHBlciBlbmNvdW50ZXJlZCBhbiBlcnJvciBz
byB3ZSBuZWVkIHRvIGRyb3AgdGhyb3VnaCBhbmQgbG9vcCByb3VuZCB0byB0cnkgYW5vdGhlcgoJCQkJCQk
vLyBXZSdsbCBub3QgcHJvY2VzcyB0aGUgcmVzdWx0IGhlcmUsIGp1c3QgZHJvcCB0aHJvdWdoIHNpbGVudG
x5ICh0aGUgbWV0aG9kIHdpbGwgaGF2ZSBsb2dnZWQgaXQpCQkJCgkJCQkJCXVuc2V0KCAkemlwcGVyICk7C
gkJCQkJCQoJCQkJCX0KCQkJCQoJCQkJfQoJCQkJCgkJCX0KCQkJCgkJCS8vIElmIHdlIGdvdCB0aGlzIGZh
ciB0aGVuIG5vIG1ldGhvZCB0byBleHRyYWN0IGZyb20gYmFja3VwIGNvbnRlbnQgd2FzIGF2YWlsYWJsZSB
vciB3b3JrZWQKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnVW
5hYmxlIHRvIGV4dHJhY3QgZnJvbSBiYWNrdXAgZmlsZSAoJTEkcyB0byAlMiRzKTogTm8gY29tcGF0aWJsZ
SB6aXAgbWV0aG9kIGZvdW5kLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSwgJGRlc3Rp
bmF0aW9uX2RpcmVjdG9yeSApICk7CgkJCXJldHVybiBmYWxzZTsKCQkJCgkJfQoJCQoJCS8qKgoJCSAqCWZ
pbGVfZXhpc3RzKCkKCQkgKgkKCQkgKglUZXN0cyB3aGV0aGVyIGEgZmlsZSAod2l0aCBwYXRoKSBleGlzdH
MgaW4gdGhlIGdpdmVuIHppcCBmaWxlCgkJICoJSWYgbGVhdmVfb3BlbiBpcyB0cnVlIHRoZW4gdGhlIHppc
CBvYmplY3Qgd2lsbCBiZSBsZWZ0IG9wZW4gZm9yIGZhc3RlciBjaGVja2luZyBmb3Igc3Vic2VxdWVudCBm
aWxlcyB3aXRoaW4gdGhpcyB6aXAKCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkkemlwX2ZpbGUJCVRoZSB
6aXAgZmlsZSB0byBjaGVjawoJCSAqCUBwYXJhbQkJc3RyaW5nCSRsb2NhdGVfZmlsZQlUaGUgZmlsZSB0by
B0ZXN0IGZvcgoJCSAqCUBwYXJhbQkJYm9vbAkkbGVhdmVfb3BlbgkJT3B0aW9uYWw6IFRydWUgaWYgdGhlI
HppcCBmaWxlIHNob3VsZCBiZSBsZWZ0IG9wZW4KCQkgKglAcmV0dXJuCQlib29sCQkJCQlUcnVlIGlmIHRo
ZSBmaWxlIGlzIGZvdW5kIGluIHRoZSB6aXAgb3RoZXJ3aXNlIGZhbHNlCgkJICoKCQkgKi8KCQlwdWJsaWM
gZnVuY3Rpb24gZmlsZV9leGlzdHMoICR6aXBfZmlsZSwgJGxvY2F0ZV9maWxlLCAkbGVhdmVfb3BlbiA9IG
ZhbHNlICkgewoJCQkJCQoJCQkkemlwX21ldGhvZHMgPSBhcnJheSgpOwoJCQkJCQkKCQkJJHppcF9tZXRob
2RzID0gJHRoaXMtPl96aXBfbWV0aG9kczsKCQkJCgkJCS8vIEJldHRlciBtYWtlIHN1cmUgd2UgaGF2ZSBz
b21lIGF2YWlsYWJsZSBtZXRob2RzCgkJCWlmICggZW1wdHkoICR6aXBfbWV0aG9kcyApICkgewoJCQkKCQk
JCS8vIEhtbSwgd2UgZG9uJ3Qgc2VlbSB0byBoYXZlIGFueSBhdmFpbGFibGUgbWV0aG9kcywgb29wcywgYm
VzdCBnbyBubyBmdXJ0aGVyCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGY
WlsZWQgdG8gY2hlY2sgZmlsZSBleGlzdHMgLSBubyBhdmFpbGFibGUgbWV0aG9kcy4nLCdpdC1sMTBuLWJh
Y2t1cGJ1ZGR5JyApICk7CgkJCQkKCQkJCXJldHVybiBmYWxzZTsKCQkJCQoJCQl9CgkJCQkJCQoJCQkvLyB
JdGVyYXRlIG92ZXIgdGhlIG1ldGhvZHMgLSBvbmNlIHdlIHN1Y2NlZWQganVzdCByZXR1cm4gZGlyZWN0bH
kgb3RoZXJ3aXNlIGRyb3AgdGhyb3VnaAoJCQlmb3JlYWNoICggJHppcF9tZXRob2RzIGFzICRtZXRob2Rfd
GFnICkgewoJCQkKCQkJCS8vIEZpcnN0IG1ha2Ugc3VyZSB3ZSBjYW4gY2hlY2sgZmlsZSBleGlzdGVuY2Ug
d2l0aCB0aGlzIG1ldGhvZCAoaWdub3JlIHNpbGVudGx5IGlmIG5vdCkKCQkJCS8vIE5vdGU6IGhhcyB0byB
iZSBhYmxlIHRvIHVuemlwIGFzIHdlbGwgYnV0IGlmIHRoYXQgZnVuY3Rpb25hbGl0eSB3YXNuJ3QgYXZhaW
xhYmxlIGluCgkJCQkvLyB0aGUgbWV0aG9kIHRoZSBpc19jaGVja2VyIGF0dHJpYnV0ZSB3aWxsIGhhdmUgY
mVlbiBzZXQgZmFsc2UKCQkJCWlmICggJHRoaXMtPl96aXBfbWV0aG9kc19kZXRhaWxzWyAkbWV0aG9kX3Rh
ZyBdWyAnYXR0cicgXVsgJ2lzX2NoZWNrZXInIF0gPT09IHRydWUgKSB7CgoJCQkJCSRjbGFzc19uYW1lID0
gJ3BsdWdpbmJ1ZGR5X3piemlwJyAuICRtZXRob2RfdGFnOwoJCQoJCQkJCSR6aXBwZXIgPSBuZXcgJGNsYX
NzX25hbWUoICR0aGlzICk7CgkJCQkJCgkJCQkJLy8gV2UgbmVlZCB0byB0ZWxsIHRoZSBtZXRob2Qgd2hhd
CBkZXRhaWxzIGJlbG9uZyB0byBpdAoJCQkJCSR6
aXBwZXItPnNldF9tZXRob2RfZGV0YWlscyggJHRoaXMtPl96aXBfbWV0aG9kc19kZXRhaWxzWyAkbWV0aG9
kX3RhZyBdICk7CgkJCQkJCQkJCQkKCQkJCQkvLyBOb3cgd2UgYXJlIHJlYWR5IHRvIHRyeSBhbmQgdGVzdC
Bmb3IgdGhlIGZpbGUgZXhpc3RlbmNlCgkJCQkJJHJlc3VsdCA9ICR6aXBwZXItPmZpbGVfZXhpc3RzKCAke
mlwX2ZpbGUsICRsb2NhdGVfZmlsZSwgJGxlYXZlX29wZW4gKTsKCQkJCQkKCQkJCQkvLyBXaWxsIGJlIHRy
dWUvZmFsc2UgaWYgZmlsZSBmb3VuZC9ub3QtZm91bmQgb3RoZXJ3aXNlIGVycm9yIGluZm9ybWF0aW9uIGF
ycmF5CgkJCQkJaWYgKCAhaXNfYXJyYXkoICRyZXN1bHQgKSApIHsKCQkJCQkKCQkJCQkJLy8gRWl0aGVyIH
dlIGZvdW5kIHRoZSBmaWxlIG9yIHdlIGRpZG4ndCBidXQgd2UgaGF2ZSBhIHZhbGlkIHJlc3VsdAoJCQkJC
Ql1bnNldCggJHppcHBlciApOwoJCQkJCQkKCQkJCQkJLy8gV2UgaGF2ZSB0byByZXR1cm4gaGVyZSBiZWNh
dXNlIHdlIGNhbm5vdCBicmVhayBvdXQgb2YgZm9yZWFjaAoJCQkJCQlyZXR1cm4gJHJlc3VsdDsKCQoJCQk
JCX0gZWxzZSB7CgkJCQkJCgkJCQkJCS8vIFRoZSB6aXBwZXIgZW5jb3VudGVyZWQgYW4gZXJyb3Igc28gd2
UgbmVlZCB0byBkcm9wIHRocm91Z2ggYW5kIGxvb3Agcm91bmQgdG8gdHJ5IGFub3RoZXIKCQkJCQkJLy8gV
2UnbGwgbm90IHByb2Nlc3MgdGhlIHJlc3VsdCBoZXJlLCBqdXN0IGRyb3AgdGhyb3VnaCBzaWxlbnRseSAo
dGhlIG1ldGhvZCB3aWxsIGhhdmUgbG9nZ2VkIGl0KQkJCQoJCQkJCQl1bnNldCggJHppcHBlciApOwoJCQk
JCQkKCQkJCQl9CgkJCQkKCQkJCX0KCQkJCQoJCQl9CgkJCQoJCQkvLyBJZiB3ZSBnb3QgdGhpcyBmYXIgdG
hlbiBubyBtZXRob2QgdG8gY2hlY2sgYmFja3VwIGNvbnRlbnQgd2FzIGF2YWlsYWJsZSBvciB3b3JrZWQKC
QkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygnVW5hYmxlIHRvIGNo
ZWNrIGlmIGZpbGUgZXhpc3RzIChsb29raW5nIGZvciAlMSRzIGluICUyJHMpOiBObyBjb21wYXRpYmxlIHp
pcCBtZXRob2QgZm91bmQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJGxvY2F0ZV9maWxlLCAkemlwX2
ZpbGUgKSApOwoJCQlyZXR1cm4gZmFsc2U7CgkJCQoJCX0KCQkJCQoJCS8qCWdldF9maWxlX2xpc3QoKQoJC
SAqCQoJCSAqCUdldCBhbiBhcnJheSBvZiBhbGwgZmlsZXMgaW4gYSB6aXAgZmlsZSB3aXRoIHNvbWUgZmls
ZSBwcm9wZXJ0aWVzLgoJCSAqCQoJCSAqCUBwYXJhbQkJc3RyaW5nCQkkemlwX2ZpbGUJVGhlIGZpbGUgdG8
gbGlzdCB0aGUgY29udGVudCBvZgoJCSAqCUByZXR1cm4JCWJvb2x8YXJyYXkJCQkJZmFsc2Ugb24gZmFpbH
VyZSwgb3RoZXJ3aXNlIGFycmF5IG9mIGZpbGUgcHJvcGVydGllcyAobWF5IGJlIGVtcHR5KQoJCSAqLwoJC
XB1YmxpYyBmdW5jdGlvbiBnZXRfZmlsZV9saXN0KCAkemlwX2ZpbGUgKSB7CgoJCQkkemlwX21ldGhvZHMg
PSBhcnJheSgpOwoJCQkJCQkKCQkJJHppcF9tZXRob2RzID0gJHRoaXMtPl96aXBfbWV0aG9kczsKCQkJCgk
JCS8vIEJldHRlciBtYWtlIHN1cmUgd2UgaGF2ZSBzb21lIGF2YWlsYWJsZSBtZXRob2RzCgkJCWlmICggZW
1wdHkoICR6aXBfbWV0aG9kcyApICkgewoJCQkKCQkJCS8vIEhtbSwgd2UgZG9uJ3Qgc2VlbSB0byBoYXZlI
GFueSBhdmFpbGFibGUgbWV0aG9kcywgb29wcywgYmVzdCBnbyBubyBmdXJ0aGVyCgkJCQlwYl9iYWNrdXBi
dWRkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdGYWlsZWQgdG8gbGlzdCBiYWNrdXAgZmlsZSBjb250ZW5
0cyAtIG5vIGF2YWlsYWJsZSBtZXRob2RzLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQkJCQoJCQ
kJcmV0dXJuIGZhbHNlOwoJCQkJCgkJCX0KCQkJCQkJCgkJCS8vIEl0ZXJhdGUgb3ZlciB0aGUgbWV0aG9kc
yAtIG9uY2Ugd2Ugc3VjY2VlZCBqdXN0IHJldHVybiBkaXJlY3RseSBvdGhlcndpc2UgZHJvcCB0aHJvdWdo
CgkJCWZvcmVhY2ggKCAkemlwX21ldGhvZHMgYXMgJG1ldGhvZF90YWcgKSB7CgkJCQoJCQkJLy8gRmlyc3Q
gbWFrZSBzdXJlIHdlIGNhbiBsaXN0IGJhY2t1cCBmaWxlIGNvbnRlbnQgd2l0aCB0aGlzIG1ldGhvZCAoaW
dub3JlIHNpbGVudGx5IGlmIG5vdCkKCQkJCS8vIE5vdGU6IGhhcyB0byBiZSBhYmxlIHRvIHVuemlwIGFzI
HdlbGwgYnV0IGlmIHRoYXQgZnVuY3Rpb25hbGl0eSB3YXNuJ3QgYXZhaWxhYmxlIGluCgkJCQkvLyB0aGUg
bWV0aG9kIHRoZSBpc19saXN0ZXIgYXR0cmlidXRlIHdpbGwgaGF2ZSBiZWVuIHNldCBmYWxzZQoJCQkJaWY
gKCAkdGhpcy0+X3ppcF9tZXRob2RzX2RldGFpbHNbICRtZXRob2RfdGFnIF1bICdhdHRyJyBdWyAnaXNfbG
lzdGVyJyBdID09PSB0cnVlICkgewoKCQkJCQkkY2xhc3NfbmFtZSA9ICdwbHVnaW5idWRkeV96YnppcCcgL
iAkbWV0aG9kX3RhZzsKCQkKCQkJCQkkemlwcGVyID0gbmV3ICRjbGFzc19uYW1lKCAkdGhpcyApOwoJCQkJ
CQoJCQkJCS8vIFdlIG5lZWQgdG8gdGVsbCB0aGUgbWV0aG9kIHdoYXQgZGV0YWlscyBiZWxvbmcgdG8gaXQ
KCQkJCQkkemlwcGVyLT5zZXRfbWV0aG9kX2RldGFpbHMoICR0aGlzLT5femlwX21ldGhvZHNfZGV0YWlsc1
sgJG1ldGhvZF90YWcgXSApOwoJCQkJCQkJCQkJCgkJCQkJLy8gTm93IHdlIGFyZSByZWFkeSB0byB0cnkgY
W5kIHRlc3QgZm9yIHRoZSBmaWxlIGV4aXN0ZW5jZQoJCQkJCSRyZXN1bHQgPSAkemlwcGVyLT5nZXRfZmls
ZV9saXN0KCAkemlwX2ZpbGUgKTsKCQkJCQkKCQkJCQkvLyBXaWxsIGJlIGZhbHNlIGlmIHdlIGNvdWxkbid
0IGxpc3QgY29udGVudHMgb3IgZmlsZSBsaXN0IGFycmF5IG90aGVyd2lzZQoJCQkJCWlmICggaXNfYXJyYX
koICRyZXN1bHQgKSApIHsKCQkJCQkKCQkJCQkJLy8gV2UgZ290IGEgbGlzdCBzbyBiZXR0ZXIgYXNzdW1lI
Gl0IGlzIG9rCgkJCQkJCXVuc2V0KCAkemlwcGVyICk7CgkJCQkJCQoJCQkJCQkvLyBXZSBoYXZlIHRvIHJl
dHVybiBoZXJlIGJlY2F1c2Ugd2UgY2Fubm90IGJyZWFrIG91dCBvZiBmb3JlYWNoCgkJCQkJCXJldHVybiA
kcmVzdWx0OwoJCgkJCQkJfSBlbHNlIHsKCQkJCQkKCQkJCQkJLy8gVGhlIHppcHBlciBlbmNvdW50ZXJlZC
BhbiBlcnJvciBzbyB3ZSBuZWVkIHRvIGRyb3AgdGhyb3VnaCBhbmQgbG9vcCByb3VuZCB0byB0cnkgYW5vd
GhlcgoJCQkJCQkvLyBXZSdsbCBub3QgcHJvY2VzcyB0aGUgcmVzdWx0IGhlcmUsIGp1c3QgZHJvcCB0aHJv
dWdoIHNpbGVudGx5ICh0aGUgbWV0aG9kIHdpbGwgaGF2ZSBsb2dnZWQgaXQpCQkJCgkJCQkJCXVuc2V0KCA
kemlwcGVyICk7CgkJCQkJCQoJCQkJCX0KCQkJCQoJCQkJfQoJCQkJCgkJCX0KCQkJCgkJCS8vIElmIHdlIG
dvdCB0aGlzIGZhciB0aGVuIG5vIG1ldGhvZCB0byBsaXN0IGJhY2t1cCBmaWxlIGNvbnRlbnQgd2FzIGF2Y
WlsYWJsZSBvciB3b3JrZWQKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRm
KCBfXygnVW5hYmxlIHRvIGNoZWNrIGZpbGUgY29udGVudCBvZiBiYWNrdXAgKCUxJHMpOiBObyBjb21wYXR
pYmxlIHppcCBtZXRob2QgZm91bmQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwgJHppcF9maWxlICkgKT
sKCQkJcmV0dXJuIGZhbHNlOwoJCQkKCQl9CgkJCgkJLyoJc2V0X2NvbW1lbnQoKQoJCSAqCQoJCSAqCVJld
HJpZXZlIGFyY2hpdmUgY29tbWVudC4KCQkgKgkKCQkgKglAcGFyYW0JCXN0cmluZwkJCSR6aXBfZmlsZQkJ
RmlsZW5hbWUgb2YgYXJjaGl2ZSB0byBzZXQgY29tbWVudCBvbi4KCQkgKglAcGFyYW0JCXN0cmluZ3xhcnJ
heQkkY29tbWVudAkJQ29tbWVudCB0byBhcHBseSB0byBhcmNoaXZlLiBJZiBhcnJheSwganNvbiBlbmNvZG
VkLiBEZWxpbWluYXRlZCB3aXRoIE1ldGFEYXRhOiBhbmQgTWV0YURhdGEtRW5kOi4KCQkgKglAcmV0dXJuC
Qlib29sfHN0cmluZwkJCQkJCXRydWUgb24gc3VjY2VzcywgZXJyb3IgbWVzc2FnZSBvdGhlcndpc2UuCgkJ
ICovCgkJcHVibGljIGZ1bmN0aW9uIHNldF9jb21tZW50KCAkemlwX2ZpbGUsICRjb21tZW50ICkgewoJCQk
KCQkJJHppcF9tZXRob2RzID0gYXJyYXkoKTsKCQkJCQkJCgkJCSR6aXBfbWV0aG9kcyA9ICR0aGlzLT5fem
lwX21ldGhvZHM7CgkJCQoJCQkvLyBCZXR0ZXIgbWFrZSBzdXJlIHdlIGhhdmUgc29tZSBhdmFpbGFibGUgb
WV0aG9kcwoJCQlpZiAoIGVtcHR5KCAkemlwX21ldGhvZHMgKSApIHsKCQkJCgkJCQkvLyBIbW0sIHdlIGRv
bid0IHNlZW0gdG8gaGF2ZSBhbnkgYXZhaWxhYmxlIG1ldGhvZHMsIG9vcHMsIGJlc3QgZ28gbm8gZnVydGh
lcgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXygnRmFpbGVkIHRvIHNldCBjb2
1tZW50IGluIGJhY2t1cCBmaWxlIC0gbm8gYXZhaWxhYmxlIG1ldGhvZHMuJywnaXQtbDEwbi1iYWNrdXBid
WRkeScgKSApOwoJCQkJCgkJCQlyZXR1cm4gZmFsc2U7CgkJCQkKCQkJfQoJCQkKCQkJLy8gRW5jb2RlICRj
b21tZW50IGlmIGFuIGFycmF5LiBIYW5kbGUgZGVsaW1pbmF0aW9uLgoJCQlpZiAoIGlzX2FycmF5KCAkY29
tbWVudCApICkgewoJCQkJJGNvbW1lbnQgPSBqc29uX2VuY29kZSggJGNvbW1lbnQgKTsKCQkJfQoJCQkkY2
9tbWVudCA9ICdNZXRhRGF0YTonIC4gJGNvbW1lbnQgLiAnTWV0YURhdGEtRW5kOic7CgkJCQoJCQkvLyBJd
GVyYXRlIG92ZXIgdGhlIG1ldGhvZHMgLSBvbmNlIHdlIHN1Y2NlZWQganVzdCByZXR1cm4gZGlyZWN0bHkg
b3RoZXJ3aXNlIGRyb3AgdGhyb3VnaAoJCQlmb3JlYWNoICggJHppcF9tZXRob2RzIGFzICRtZXRob2RfdGF
nICkgewoJCQkJCQoJCQkJLy8gRmlyc3QgbWFrZSBzdXJlIHdlIGNhbiBtYW5hZ2UgY29tbWVudHMgd2l0aC
B0aGlzIG1ldGhvZCAoaWdub3JlIHNpbGVudGx5IGlmIG5vdCkKCQkJCWlmICggJHRoaXMtPl96aXBfbWV0a
G9kc19kZXRhaWxzWyAkbWV0aG9kX3RhZyBdWyAnYXR0cicgXVsgJ2lzX2NvbW1lbnRlcicgXSA9PT0gdHJ1
ZSApIHsKCQkJCQkKCQkJCQkkY2xhc3NfbmFtZSA9ICdwbHVnaW5idWRkeV96YnppcCcgLiAkbWV0aG9kX3R
hZzsKCQkJCQkKCQkJCQkkemlwcGVyID0gbmV3ICRjbGFzc19uYW1lKCAkdGhpcyApOwoJCQkJCQoJCQkJCS
8vIFdlIG5lZWQgdG8gdGVsbCB0aGUgbWV0aG9kIHdoYXQgZGV0YWlscyBiZWxvbmcgdG8gaXQKCQkJCQkke
mlwcGVyLT5zZXRfbWV0aG9kX2RldGFpbHMoICR0aGlzLT5femlwX21ldGhvZHNfZGV0YWlsc1sgJG1ldGhv
ZF90YWcgXSApOwoJCQkJCQkJCQkJCgkJCQkJLy8gTm93IHdlIGFyZSByZWFkeSB0byB0cnkgYW5kIHRlc3Q
gZm9yIHRoZSBmaWxlIGV4aXN0ZW5jZQoJCQkJCSRyZXN1bHQgPSAkemlwcGVyLT5zZXRfY29tbWVudCggJH
ppcF9maWxlLCAkY29tbWVudCApOwoJCQkJCQoJCQkJCS8vIFdpbGwgYmUgZmFsc2UgaWYgd2UgY291bGRuJ
3Qgc2V0IHRoZSBjb21tZW50CgkJCQkJaWYgKCAkcmVzdWx0ID09PSB0cnVlICkgewoJCQkJCQoJCQkJCQkv
LyBNdXN0IGFzc3VtZSB0aGF0IGNvbW1lbnQgd2FzIHNldCBvawoJCQkJCQl1bnNldCggJHppcHBlciApOwo
JCQkJCQkKCQkJCQkJLy8gV2UgaGF2ZSB0byByZXR1cm4gaGVyZSBiZWNhdXNlIHdlIGNhbm5vdCBicmVhay
BvdXQgb2YgZm9yZWFjaAoJCQkJCQlyZXR1cm4gdHJ1ZTsKCQoJCQkJCX0gZWxzZSB7CgkJCQkJCgkJCQkJC
S8vIFRoZSB6aXBwZXIgZW5jb3VudGVyZWQgYW4gZXJyb3Igc28gd2UgbmVlZCB0byBkcm9wIHRocm91Z2gg
YW5kIGxvb3Agcm91bmQgdG8gdHJ5IGFub3RoZXIKCQkJCQkJLy8gV2UnbGwgbm90IHByb2Nlc3MgdGhlIHJ
lc3VsdCBoZXJlLCBqdXN0IGRyb3AgdGhyb3VnaCBzaWxlbnRseSAodGhlIG1ldGhvZCB3aWxsIGhhdmUgbG
9nZ2VkIGl0KQkJCQoJCQkJCQl1bnNldCggJHppcHBlciApOwoJCQkJCQkKCQkJCQl9CgkJCQkKCQkJCX0KC
QkJCQoJCQl9CgkJCQoJCQkvLyBJZiB3ZSBnb3QgdGhpcyBmYXIgdGhlbiBjb3VsZG4ndCBzZXQgYSBjb21t
ZW50IGF0IGFsbCAtIGVpdGhlciBubyBhdmFpbGFibGUgbWV0aG9kIG9yIGFsbCBtZXRob2QgZmFpbGVkCgk
JCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oJ1VuYWJsZSB0byBzZX
QgY29tbWVudCBpbiBmaWxlICUxJHM6IE5vIGNvbXBhdGlibGUgemlwIG1ldGhvZCBmb3VuZCBvciBhbGwgb
WV0aG9kcyBmYWlsZWQgLSBub3RlIHN0b3JlZCBpbnRlcm5hbGx5IG9ubHkuJywnaXQtbDEwbi1iYWNrdXBi
dWRkeScgKSwgJHppcF9maWxlICkgKTsKCgkJCS8vIFJldHVybiBtZXNzYWdlIGZvciBkaXNwbGF5IC0gbWF
5YmUgc2hvdWxkIHJldHVybiBmYWxzZSBhbmQgaGF2ZSBjYWxsZXIgZGlzcGxheSBpdCdzIG93biBtZXNzYW
dlPwoJCQkkbWVzc2FnZSA9ICJcblxuVW5hYmxlIHRvIHNldCBub3RlIGluIGZpbGUuXG5UaGUgbm90ZSB3a
WxsIG9ubHkgYmUgc3RvcmVkIGludGVybmFsbHkgaW4geW91ciBzZXR0aW5ncyBhbmQgbm90IGluIHRoZSB6
aXAgZmlsZSBpdHNlbGYuIjsKCQkJcmV0dXJuICRtZXNzYWdlOwoJCQkKCQl9CgkJCgkJLyoJZ2V0X2NvbW1
lbnQoKQoJCSAqCQoJCSAqCVJldHJpZXZlIGFyY2hpdmUgY29tbWVudC4KCQkgKgkKCQkgKglAcGFyYW0JCX
N0cmluZwkJCQkkemlwX2ZpbGUJCUZpbGVuYW1lIG9mIGFyY2hpdmUgdG8gcmV0cmlldmUgY29tbWVudCBmc
m9tLgoJCSAqCUBwYXJhbQkJYm9vbAkJCQkkcmF3X2NvbW1lbnQJSWYgdHJ1ZSB0aGVuIHJhdyBjb21tZW50
IGZpZWxkIGRhdGEgcmV0dXJuZWQgd2l0aG91dCBwcm9jZXNzaW5nIGRlbGltaW5hdG9ycyBub3IganNvbi4
gRGVmYXVsdHMgZmFsc2UuCgkJICoJQHJldHVybgkJYm9vbHxzdHJpbmd8YXJyYXkJCQkJCWZhbHNlIG9uIG
ZhaWx1cmUsIFppcCBjb21tZW50IG90aGVyd2lzZS4gSWYgY29tbWVudCBpcyBqc29uIGVuY29kZWQgYXJyY
XkgcmV0dXJucyBhcnJheS4KCQkgKi8KCQlwdWJsaWMgZnVuY3Rpb24gZ2V0X2NvbW1lbnQoICR6aXBfZmls
ZSwgJHJhd19jb21tZW50ID0gZmFsc2UgKSB7CgkJCQoJCQkkemlwX21ldGhvZHMgPSBhcnJheSgpOwoJCQk
JCQkKCQkJJHppcF9tZXRob2RzID0gJHRoaXMtPl96aXBfbWV0aG9kczsKCQkJCgkJCS8vIEJldHRlciBtYW
tlIHN1cmUgd2UgaGF2ZSBzb21lIGF2YWlsYWJsZSBtZXRob2RzCgkJCWlmICggZW1wdHkoICR6aXBfbWV0a
G9kcyApICkgewoJCQkJCgkJCQkvLyBIbW0sIHdlIGRvbid0IHNlZW0gdG8gaGF2ZSBhbnkgYXZhaWxhYmxl
IG1ldGhvZHMsIG9vcHMsIGJlc3QgZ28gbm8gZnVydGhlcgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyg
gJ2RldGFpbHMnLCBfXygnRmFpbGVkIHRvIGdldCBjb21tZW50IGZyb20gYmFja3VwIGZpbGUgLSBubyBhdm
FpbGFibGUgbWV0aG9kcy4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQkKCQkJCXJldHVybiBmY
WxzZTsKCQkJCQoJCQl9CgkJCQoJCQkvLyBJdGVyYXRlIG92ZXIgdGhlIG1ldGhvZHMgLSBvbmNlIHdlIHN1
Y2NlZWQganVzdCByZXR1cm4gZGlyZWN0bHkgb3R
oZXJ3aXNlIGRyb3AgdGhyb3VnaAoJCQlmb3JlYWNoICggJHppcF9tZXRob2RzIGFzICRtZXRob2RfdGFnIC
kgewoJCQkKCQkJCS8vIEZpcnN0IG1ha2Ugc3VyZSB3ZSBjYW4gbWFuYWdlIGNvbW1lbnRzIHdpdGggdGhpc
yBtZXRob2QgKGlnbm9yZSBzaWxlbnRseSBpZiBub3QpCgkJCQlpZiAoICR0aGlzLT5femlwX21ldGhvZHNf
ZGV0YWlsc1sgJG1ldGhvZF90YWcgXVsgJ2F0dHInIF1bICdpc19jb21tZW50ZXInIF0gPT09IHRydWUgKSB
7CgkJCQkJCgkJCQkJJGNsYXNzX25hbWUgPSAncGx1Z2luYnVkZHlfemJ6aXAnIC4gJG1ldGhvZF90YWc7Cg
kJCQkJCgkJCQkJJHppcHBlciA9IG5ldyAkY2xhc3NfbmFtZSggJHRoaXMgKTsKCQkJCQkKCQkJCQkvLyBXZ
SBuZWVkIHRvIHRlbGwgdGhlIG1ldGhvZCB3aGF0IGRldGFpbHMgYmVsb25nIHRvIGl0CgkJCQkJJHppcHBl
ci0+c2V0X21ldGhvZF9kZXRhaWxzKCAkdGhpcy0+X3ppcF9tZXRob2RzX2RldGFpbHNbICRtZXRob2RfdGF
nIF0gKTsKCQkJCQkJCQkJCQoJCQkJCS8vIE5vdyB3ZSBhcmUgcmVhZHkgdG8gdHJ5IGFuZCB0ZXN0IGZvci
B0aGUgZmlsZSBleGlzdGVuY2UKCQkJCQkkcmVzdWx0ID0gJHppcHBlci0+Z2V0X2NvbW1lbnQoICR6aXBfZ
mlsZSApOwoJCQkJCQoJCQkJCS8vIFdpbGwgYmUgZmFsc2UgaWYgd2UgY291bGRuJ3Qgc2V0IHRoZSBjb21t
ZW50CgkJCQkJaWYgKCBpc19zdHJpbmcgKCAkcmVzdWx0ICkgKSB7CgkJCQkJCgkJCQkJCS8vIEZvcm1hdCB
oYXMgY2hhbmdlZCBhbmQgbm8gbG9uZ2VyIGVuY29kaW5nIGFzIGh0bWxlbXRpdGllcyB3aGVuIHNldHRpbm
cgY29tbWVudAoJCQkJCQkvLyBGb3Igb2xkZXIgYmFja3VwcyBtYXkgbmVlZCB0byByZW1vdmUgZW5jb2Rpb
mcgLSBhY3Rpb24gX3Nob3VsZF8gYmUgbnVsbCBpZiBOL0EKCQkJCQkJLy8gT25seSBzcGFubmVyIHdvdWxk
IGJlIGlmIHNvbWVvbmUgaGFkIHB1dCBhbiBlbnRpdHkgaW4gdGhlaXIgY29tbWVudCBidXQgdGhhdCBpcwo
JCQkJCQkvLyByZWFsbHkgYW4gb3V0c2lkZXIgYW5kIGluIGFueSBjYXNlIHRoZSBjb3JyZWN0aW9uIGlzIH
NpbXBseSB0byBlZGl0IGFuZCByZXNhdmUKCQkJCQkJLy8gVE9ETzogUmVtb3ZlIHRoaXMgd2hlbiBuZXcgZ
m9ybWF0IGhhcyBiZWVuIGluIHVzZSBmb3Igc29tZSB0aW1lCgkJCQkJCSRyZXN1bHQgPSBodG1sX2VudGl0
eV9kZWNvZGUoICRyZXN1bHQgKTsKCQkJCQkKCQkJCQkJLy8gTXVzdCBhc3N1bWUgdGhhdCBjb21tZW50IHd
hcyByZXRyaWV2ZWQgb2sKCQkJCQkJdW5zZXQoICR6aXBwZXIgKTsKCQkJCQkJCgkJCQkJCS8vIFJldHVybi
ByYXcgY29tbWVudCBhcy1pcyB3aXRoIG5vIHByb2Nlc3NpbmcgaWYgc3BlY2lmaWVkLgoJCQkJCQlpZiAoI
HRydWUgPT09ICRyYXdfY29tbWVudCApIHsKCQkJCQkJCXJldHVybiAkcmVzdWx0OwoJCQkJCQl9CgkJCQkJ
CQoJCQkJCQkvLyBIYW5kbGUgZGVsaW1pbmF0aW9uLiBEZWNvZGUgJHJlc3VsdCBpZiBqc29uIGRlY29kZWQ
gKGFzc29jaWF0aXZlIGFycmF5IG1vZGUpLgoJCQkJCQkkc3RhcnRfZGVsaW1pbmF0b3IgPSBzdHJwb3MoIC
RyZXN1bHQsICdNZXRhRGF0YTonICk7CgkJCQkJCSRlbmRfZGVsaW1pbmF0b3IgPSBzdHJwb3MoICRyZXN1b
HQsICdNZXRhRGF0YS1FbmQ6JyApOwoJCQkJCQlpZiAoICggZmFsc2UgIT09ICRzdGFydF9kZWxpbWluYXRv
ciApICYmICggZmFsc2UgIT09ICRlbmRfZGVsaW1pbmF0b3IgKSApIHsgLy8gRm91bmQgYm90aCBkZWxpbWl
uYXRvcnMuCgkJCQkJCQkkcmVzdWx0ID0gc3Vic3RyKCAkcmVzdWx0LCAkc3RhcnRfZGVsaW1pbmF0b3IrOS
wgJGVuZF9kZWxpbWluYXRvci05ICk7CgkJCQkJCQlpZiAoIE5VTEwgPT09ICggJGRlY29kZWRfcmVzdWx0I
D0ganNvbl9kZWNvZGUoICRyZXN1bHQsIHRydWUgKSApICkgeyAvLyBKc29uIGRlY29kZSBmYWlsZWQgc28g
cmV0dXJuIHN0cmluZy4KCQkJCQkJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCQkJCX0gZWxzZSB7IC8vIEpzb24
gZGVjb2RlIHN1Y2Nlc3Mgc28gcmV0dXJuaW5nIHZhcmlhYmxlIChzaG91bGQgYmUgYW4gYXJyYXkgbW9zdC
BsaWtlbHkpLgoJCQkJCQkJCXJldHVybiAkZGVjb2RlZF9yZXN1bHQ7CgkJCQkJCQl9CgkJCQkJCQkKCQkJC
QkJfQoJCQkJCQkKCQkJCQkJLy8gTm8gZGVsaW1pbmF0b3JzIGZvdW5kIGlmIG1hZGUgaXQgdG8gdGhpcyBw
b2ludCBzbyBhc3N1bWluZyBwbGFpbiB0ZXh0IGxlZ2FjeSBjb21tZW50IChvciBkZWxpbWluYXRvcnMgbWl
zc2luZy9jb3JydXB0KS4KCQkJCQkJCgkJCQkJCS8vIFdlIGhhdmUgdG8gcmV0dXJuIGhlcmUgYmVjYXVzZS
B3ZSBjYW5ub3QgYnJlYWsgb3V0IG9mIGZvcmVhY2gKCQkJCQkJcmV0dXJuICRyZXN1bHQ7CgkJCQkJCQoJC
QkJCX0gZWxzZSB7CgkJCQkJCgkJCQkJCS8vIFRoZSB6aXBwZXIgZW5jb3VudGVyZWQgYW4gZXJyb3Igc28g
d2UgbmVlZCB0byBkcm9wIHRocm91Z2ggYW5kIGxvb3Agcm91bmQgdG8gdHJ5IGFub3RoZXIKCQkJCQkJLy8
gV2UnbGwgbm90IHByb2Nlc3MgdGhlIHJlc3VsdCBoZXJlLCBqdXN0IGRyb3AgdGhyb3VnaCBzaWxlbnRseS
AodGhlIG1ldGhvZCB3aWxsIGhhdmUgbG9nZ2VkIGl0KQkJCQoJCQkJCQl1bnNldCggJHppcHBlciApOwoJC
QkJCQkKCQkJCQl9CgkJCQkKCQkJCX0KCQkJCQoJCQl9CgkJCQoJCQkvLyBJZiB3ZSBnb3QgdGhpcyBmYXIg
dGhlbiBjb3VsZG4ndCBnZXQgYSBjb21tZW50IGF0IGFsbCAtIGVpdGhlciBubyBhdmFpbGFibGUgbWV0aG9
kIG9yIGFsbCBtZXRob2QgZmFpbGVkCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgc3
ByaW50ZiggX18oJ1VuYWJsZSB0byBnZXQgY29tbWVudCBpbiBmaWxlICUxJHM6IE5vIGNvbXBhdGlibGUge
mlwIG1ldGhvZCBmb3VuZCBvciBhbGwgbWV0aG9kcyBmYWlsZWQuJywnaXQtbDEwbi1iYWNrdXBidWRkeScg
KSwgJHppcF9maWxlICkgKTsKCgkJCXJldHVybiBmYWxzZTsKCQkJCgkJfQoJCQkJCgkJLy8gRk9SIEZVVFV
SRSBVU0U7IE5PVCBZRVQgSU1QTEVNRU5URUQuIFVzZSB0byBjaGVjayAuc3FsIGZpbGUgaXMgbm9uLWVtcH
R5LgoJCWZ1bmN0aW9uIGZpbGVfc3RhdHMoICR6aXBfZmlsZSwgJGxvY2F0ZV9maWxlLCAkbGVhdmVfb3Blb
iA9IGZhbHNlICkgewoJCQlpZiAoIGluX2FycmF5KCAnemlwYXJjaGl2ZScsICR0aGlzLT5femlwX21ldGhv
ZHMgKSApIHsKCQkJCSR0aGlzLT5femlwID0gbmV3IFppcEFyY2hpdmU7CgkJCQlpZiAoICR0aGlzLT5feml
wLT5vcGVuKCAkemlwX2ZpbGUgKSA9PT0gdHJ1ZSApIHsKCQkJCQlpZiAoICggJHN0YXRzID0gJHRoaXMtPl
96aXAtPnN0YXROYW1lKCAkbG9jYXRlX2ZpbGUgKSApID09PSBmYWxzZSApIHsgLy8gRmlsZSBub3QgZm91b
mQgaW4gemlwLgoJCQkJCQkkdGhpcy0+X3ppcC0+Y2xvc2UoKTsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0
YXR1cyggJ2RldGFpbHMnLCBfXygnRmlsZSBub3QgZm91bmQgKHppcGFyY2hpdmUpIGZvciBzdGF0cycsJ2l
0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnOiAnIC4gJGxvY2F0ZV9maWxlICk7CgkJCQkJCXJldHVybiBmYW
xzZTsKCQkJCQl9CgkJCQkJJHRoaXMtPl96aXAtPmNsb3NlKCk7CgkJCQkJcmV0dXJuICRzdGF0czsKCQkJC
X0gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBzcHJpbnRmKCBfXygn
WmlwQXJjaGl2ZSBmYWlsZWQgdG8gb3BlbiBmaWxlIHRvIGNoZWNrIHN0YXRzIChsb29raW5nIGluICUxJHM
pLicsJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICR6aXBfZmlsZSApICk7CgkJCQkJCgkJCQkJcmV0dXJuIG
ZhbHNlOwoJCQkJfQoJCQl9CgkJCQoJCQkvLyBJZiB3ZSBtYWRlIGl0IHRoaXMgZmFyIHRoZW4gemlwYXJja
Gl2ZSBub3QgYXZhaWxhYmxlL2ZhaWxlZC4KCQkJaWYgKCBpbl9hcnJheSggJ3BjbHppcCcsICR0aGlzLT5f
emlwX21ldGhvZHMgKSApIHsKCQkJCXJlcXVpcmVfb25jZSggQUJTUEFUSCAuICd3cC1hZG1pbi9pbmNsdWR
lcy9jbGFzcy1wY2x6aXAucGhwJyApOwoJCQkJJHRoaXMtPl96aXAgPSBuZXcgUGNsWmlwKCAkemlwX2ZpbG
UgKTsKCQkJCWlmICggKCAkZmlsZV9saXN0ID0gJHRoaXMtPl96aXAtPmxpc3RDb250ZW50KCkgKSA9PSAwI
CkgeyAvLyBJZiB6ZXJvLCB6aXAgaXMgY29ycnVwdCBvciBlbXB0eS4KCQkJCQlwYl9iYWNrdXBidWRkeTo6
c3RhdHVzKCAnZGV0YWlscycsICR0aGlzLT5femlwLT5lcnJvckluZm8oIHRydWUgKSApOwoJCQkJfSBlbHN
lIHsKCQkJCQlmb3JlYWNoKCAkZmlsZV9saXN0IGFzICRmaWxlICkgewoJCQkJCQlpZiAoICRmaWxlWydmaW
xlbmFtZSddID09ICRsb2NhdGVfZmlsZSApIHsgLy8gRm91bmQgZmlsZS4KCQkJCQkJCXJldHVybiB0cnVlO
woJCQkJCQl9CgkJCQkJfQoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oJ0Zp
bGUgbm90IGZvdW5kIChwY2x6aXApJywnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICc6ICcgLiAkbG9jYXR
lX2ZpbGUgKTsKCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0gZWxzZSB7CgkJCQlwYl9iYWNrdXBidW
RkeTo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCdVbmFibGUgdG8gY2hlY2sgaWYgZmlsZSBleGlzdHM6IE5vI
GNvbXBhdGlibGUgemlwIG1ldGhvZCBmb3VuZC4nLCdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQly
ZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJCQoJfSAvLyBFbmQgY2xhc3MKCQoJLy8kcGx1Z2luYnVkZHlfeml
wYnVkZHkgPSBuZXcgcGx1Z2luYnVkZHlfemlwYnVkZHkoICR0aGlzLT5fb3B0aW9uc1snYmFja3VwX2Rpcm
VjdG9yeSddICk7Cgp9Cg==
###PACKDATA,FILE_END,/lib/zipbuddy/zipbuddy.php,importbuddy/lib/zipbuddy/zipbuddy.p
hp
###PACKDATA,FILE_START,/lib/mysqlbuddy/index.php,importbuddy/lib/mysqlbuddy/index.p
hp
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/lib/mysqlbuddy/index.php,importbuddy/lib/mysqlbuddy/index.php
###PACKDATA,FILE_START,/lib/mysqlbuddy/mysqlbuddy.php,importbuddy/lib/mysqlbuddy/my
sqlbuddy.php
PD9waHAKLyoqCiAqIEJhY2t1cEJ1ZGR5IE15U1FMQnVkZHkgY2xhc3MKICoKICogSGVscHMgYmFja3VwIGF
uZCByZXN0b3JlIGRhdGFiYXNlIHRhYmxlcy4KICogRHVtcHMgYSBteXNxbCBkYXRhYmFzZSAoYWxsIHRhYm
xlcywgdGFibGVzIHdpdGggYSBjZXJ0YWluIHByZWZpeCwgb3Igbm9uZSkgd2l0aCBhZGRpdGlvbmFsIGluY
2x1c2lvbnMvZXhjbHVzaW9ucyBvZiB0YWJsZXMgcG9zc2libGUuCiAqIEF1dG9tYXRpY2FsbHkgZGV0ZXJt
aW5lcyBhdmFpbGFibGUgZHVtcCBtZXRob2RzICh1bmxlc3MgbWV0aG9kIGlzIGZvcmNlZCkuIFJ1bnMgbWV
0aG9kcyBpbiBvcmRlciBvZiBwcmVmZXJlbmNlLiBGYWxscyBiYWNrIGF1dG9tYXRpY2FsbHkKICogdG8gYW
55IGBsZXNzZXJgIG1ldGhvZHMgaWYgYW55IGZhaWwuCiAqIEJvdGggZHVtcCBhbmQgaW1wb3J0IHN1cHBvc
nQgYm90aCBQSFAtYmFzZWQgYW5kIGNvbW1hbmQgbGluZSBtZXRob2RzLiBQSFAtYmFzZWQgaXMgcHJlZmVy
cmVkIHNpbmNlIGl0IHN1cHBvcnRzIGNodW5raW5nIGFuZCBidXJzdGluZy4KICoKICogUmVxdWlyZW1lbnR
zOgogKgogKiAgICAgRXhwZWN0cyBteXNxbCB0byBhbHJlYWR5IGJlIHNldCB1cCBhbmQgY29ubmVjdGVkLg
ogKgogKiBHZW5lcmFsIHByb2Nlc3Mgb3JkZXI6CiAqCiAqICAgICBDb25zdHJ1Y3Rpb246IF9fY29uc3Ryd
WN0KCkgLT4gW2F2YWlsYWJsZV96aXBfbWV0aG9kcygpXQogKiAgICAgRHVtcDogZHVtcCgpIC0+IF9jYWxj
dWxhdGVfdGFibGVzKCkgLT4gW19teXNxbCBhbmQvb3IgX3BocF0KICoKICogICAgIE1ldGhvZCBwcm9jZXN
zOgogKiAgICAgICAgIF9teXNxbCBtZXRob2QgKEZBU1QpOgogKiAgICAgICAgICAgICBCdWlsZHMgdGhlIG
NvbW1hbmQgbGluZSAtPiBydW5zIGNvbW1hbmQgdmlhIGV4ZWMoKSAtPiBjaGVja3MgZXhpdCBjb2RlIC0+I
HZlcmlmaWVzIC5zcWwgZmlsZSB3YXMgY3JlYXRlZDsgZmFsbHMgdG8gbmV4dCBtZXRob2QgaWYgZXhpdCBj
b2RlIGlzIGJhZCBvciAuc3FsIGZpbGUgaXMgbWlzc2luZy4KICogICAgICAgICBfcGhwIG1ldGhvZCAoU0x
PVzsgY29tcGF0aWJpbGl0eSBtb2RlOyBvbmx5IG1vZGUgcHJlLTMuMCk6CiAqICAgICAgICAgICAgIEl0ZX
JhdGVzIHRocm91Z2ggYWxsIHRhYmxlcyBpc3N1aW5nIFNRTCBjb21tYW5kcyB0byBzZXJ2ZXIgdG8gZ2V0I
GNyZWF0ZSBzdGF0ZW1lbnRzIGFuZCBhbGwgZGF0YWJhc2UgY29udGVudC4gVmVyeSBicnV0ZSBmb3JjZSBt
ZXRob2QuCiAqCiAqIEBwYWNrYWdlIEJhY2t1cEJ1ZGR5CiAqIEBhdXRob3IgRHVzdGluIEJvbHRvbgogKiB
Ac2luY2UgMy4wLjAKICovCgovKioKICogTXlTUUwgQnVkZHkgTWFpbiBDbGFzcwogKi8KY2xhc3MgcGJfYm
Fja3VwYnVkZHlfbXlzcWxidWRkeSB7CgoJLyoqCgkgKiBJZiBjb21tYW5kIGxpbmUgaXMgbG9uZ2VyIHRoY
W4gdGhpcyB0aGVuIHdlIHdpbGwgdHJ5IHRvIGRldGVybWluZSBtYXggY29tbWFuZCBsaW5lIGxlbmd0aC4K
CSAqCgkgKiBAdmFyIGludAoJICovCgljb25zdCBDT01NQU5EX0xJTkVfTEVOR1RIX0NIRUNLX1RIUkVTSE9
MRCA9IDI1MDsKCgkvKioKCSAqIE51bWJlciBvZiBzZWNvbmRzIHRvIGZ1ZGdlIHVwIHRoZSB0aW1lIGVsYX
BzZWQgdG8gZ2l2ZSBhIGxpdHRsZSB3aWdnbGUgcm9vbSBzbyB3ZSBkb24ndCBhY2NpZGVudGx5IGhpdCB0a
GUgZWRnZSBhbmQgdGltZSBvdXQuCgkgKgoJICogQHZhciBpbnQKCSAqLwoJY29uc3QgVElNRV9XSUdHTEVf
Uk9PTSA9IDQ7CgoJLyoqCgkgKiBOdW1iZXIgb2Ygcm93cy9xdWVyaWVzIHRvIGhlYXJ0YmVhdCBhZnRlciw
gbG9nZ2luZyBudW1iZXIgb2Ygcm93cyBoYW5kbGVkLgoJICoKCSAqIEB2YXIgaW50CgkgKi8KCWNvbnN0IE
hFQVJUQkVBVF9DT1VOVF9MSU1JVCA9IDIwMDA7CgoJLyoqCgkgKiBJbnRlcm5hbCB2ZXJzaW9uIG51bWJlc
iBmb3IgdGhpcyBsaWJyYXJ5LgoJICoKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByaXZhdGUgJF92ZXJzaW9u
ID0gJzAuMC4xJzsKCgkvKioKCSAqIERhdGFiYXNlIGhvc3Qvc2VydmVyLgoJICoKCSAqIEBzZWUgX19jb25
zdHJ1Y3QoKQoJICoKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByaXZhdGUgJF9kYXRhYmFzZV9ob3N0ID0gJy
c7CgoJLyoqCgkgKiBJZiB1c2luZyBzb2NrZXRzLCBwb2ludHMgdG8gc29ja2V0IGZpbGUuIExlZnQgYmxhb
msgaWYgc29ja2V0cyBub3QgaW4gdXNlLgoJICoKCSAqIEBzZWUgX19jb25zdHJ1Y3QoKQoJICoKCSAqIEB2
YXIgc3RyaW5nCgkgKi8KCXByaXZhdGUgJF9kYXRhYmFzZV9zb2NrZXQgPSAnJzsKCgkvKioKCSAqIERhdGF
iYXNlIG5hbWUuCgkgKgoJICogQHNlZSBfX2NvbnN0cnVjdCgpCgkgKgoJICogQHZhciBzdHJpbmcKCSAqLw
oJcHJpdmF0ZSAkX2RhdGFiYXNlX25hbWUgPSAnJzsKCgkvKioKCSAqIERhdGFiYXNlIHVzZXJuYW1lLgoJI
CoKCSAqIEBzZWUgX19jb25zdHJ1Y3QoKQoJICoKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByaXZhdGUgJF9k
YXRhYmFzZV91c2VyID0gJyc7CgoJLyoqCgkgKiBEYXRhYmFzZSBwYXNzd29yZC4KCSAqCgkgKiBAc2VlIF9
fY29uc3RydWN0KCkKCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcml2YXRlICRfZGF0YWJhc2VfcGFzcy
A9ICcnOwoKCS8qKgoJICogRGF0YWJhc2UgdGFibGUgcHJlZml4IHRvIGJhY2t1cCB3aGVuIGluIHByZWZpe
CBtb2RlLgoJICoKCSAqIEBzZWUgX19jb25zdHJ1Y3QoKQoJICoKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXBy
aXZhdGUgJF9kYXRhYmFzZV9wcmVmaXggPSAnJzsKCgkvKioKCSAqIERhdGFiYXNlIHBvcnQgdG8gRk9SQ0U
uIERlZmF1bHQgYmxhbmsuIElmIHNldCB0aGVuIHRoaXMgcG9ydCB3aWxsIGJlIHNwZWNpZmllZCBpbiBjb2
5uZWN0aW9uLiBMZWF2ZSBibGFuayB0byB1c2UgZGVmYXVsdCBmb3Igc2VydmVyLgoJICoKCSAqIEBzZWUgX
19jb25zdHJ1Y3QoKQoJICoKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByaXZhdGUgJF9kYXRhYmFzZV9wb3J0
ID0gJyc7CgoJLyoqCgkgKiBEZXRlcm1pbmVzIGJhc2UgdGFibGVzIHRvIGluY2x1ZGUgaW4gYmFja3VwLiB
FeDogbm9uZSwgYWxsLCBvciBieSBwcmVmaXguCgkgKgoJICogQHNlZSBfX2NvbnN0cnVjdCgpCgkgKgoJIC
ogQHZhciBzdHJpbmcKCSAqLwoJcHJpdmF0ZSAkX2Jhc2VfZHVtcF9tb2RlID0gJyc7CgoJLyoqCgkgKiBBZ
GRpdGlvbmFsIHRhYmxlcyB0byBiYWNrdXAgaW4gYWRkaXRpb24gdG8gdGhvc2UgZGV0ZXJtaW5lZCBieSBi
YXNlIG1vZGUuCgkgKgoJICogQHZhciBhcnJheQoJICovCglwcml2YXRlICRfYWRkaXRpb25hbF9pbmNsdWR
lcyA9IGFycmF5KCk7CgoJLyoqCgkgKiBUYWJsZXMgdG8gZXhjbHVkZSBmcm9tICggJF9hZGRpdGlvbmFsX2
luY2x1ZGVzICsgdGhvc2UgZGV0ZXJtaW5lZCBieSBiYXNlIG1vZGUgKS4KCSAqCgkgKiBAdmFyIGFycmF5C
gkgKi8KCXByaXZhdGUgJF9hZGRpdGlvbmFsX2V4Y2x1ZGVzID0gYXJyYXkoKTsKCgkvKioKCSAqIEF2YWls
YWJsZSBtZWNoYW5pc21zIGZvciBkdW1waW5nIGluIG9yZGVyIG9mIHByZWZlcmVuY2UuCgkgKgoJICogQHZ
hciBhcnJheQoJICovCglwcml2YXRlICRfbWV0aG9kcyA9IGFycmF5KCk7CgoJLyoqCgkgKiBQb3B1bGF0ZW
QgYnkgX2NhbGN1bGF0ZV9teXNxbF9kaXJlY3RvcnkoKS4KCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXBya
XZhdGUgJF9teXNxbF9kaXJlY3RvcmllcyA9IGFycmF5KCk7CgoJLyoqCgkgKiBJZiBteXNxbCB0ZWxscyB1
cyB3aGVyZSBpdHMgaW5zdGFsbGVkIHdlIHByZXBlbmQgdG8gdGhpcy4gQmVnaW5uaW5nIGFuZCB0cmFpbGl
uZyBzbGFzaGVzLgoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHJpdmF0ZSAkX2RlZmF1bHRfbXlzcWxfZG
lyZWN0b3JpZXMgPSBhcnJheSgKCQknL3Vzci9iaW4vJywKCQknL3Vzci9iaW4vbXlzcWwvJywKCQknL3Vzc
i9sb2NhbC9iaW4vJywKCSk7CgoJLyoqCgkgKiBUZXN0ZWQgd29ya2luZyBteXNxbCBkaXJlY3RvcnkgdG8g
dXNlIGZvciBhY3R1YWwgZHVtcC4KCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcml2YXRlICRfbXlzcWx
fZGlyZWN0b3J5ID0gJyc7CgoJLyoqCgkgKiBJbnN0YW5jZSBvZiBjb21tYW5kYnVkZHkgY2xhc3MuCgkgKg
oJICogQHZhciBvYmplY3QKCSAqLwoJcHJpdmF0ZSAkX2NvbW1hbmRidWRkeTsKCgkvKioKCSAqIFZlcnNpb
24gb2YgdGhlIG15c3FsIHNlcnZlciB0aGF0IGR1bXBlZCB0aGlzIFNRTC4gSGFuZGxlIHdvcmthcm91bmRz
IG9mIFNRTCBzeW50YXggY2hhbmdlcy4KCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcml2YXRlICRfaW5
jb21pbmdfc3FsX3ZlcnNpb24gPSAnJzsKCgkvKioKCSAqIFZlcnNpb24gb2YgdGhlIG15c3FsIHNlcnZlci
BydW5uaW5nIGxvY2FsbHksIGNhbGN1bGF0ZWQgb24gY29uc3RydWN0LgoJICoKCSAqIEB2YXIgc3RyaW5nC
gkgKi8KCXByaXZhdGUgJF9jdXJyZW50X3NxbF92ZXJzaW9uID0gJyc7CgoJLyoqCgkgKiBXaGV0aGVyIG9y
IG5vdCB0byBtaWdyYXRlIFNRTCBzeW50YXggZm9yIGluY29taW5nIG15c3FsIDwgdjUuMSB3aGVuIGltcG9
ydGluZyB0byBteXNxbCA1LjErLgoJICoKCSAqIEB2YXIgYm9vbAoJICovCglwcml2YXRlICRfaG90Zml4Xz
cwMDEgPSBmYWxzZTsKCgkvKioKCSAqIE1heCBFeGVjdXRpb24gVGltZS4KCSAqCgkgKiBAdmFyIGludAoJI
CovCglwcml2YXRlICRfbWF4RXhlY3V0aW9uVGltZSA9ICcnOwoKCS8qKgoJICogTWF4IHJvd3MgcGVyIHNl
bGVjdC4KCSAqCgkgKiBAdmFyIGludAoJICovCglwcml2YXRlICRfbWF4X3Jvd3NfcGVyX3NlbGVjdCA9IDE
wMDA7CgoJLyoqCgkgKiBOdW1iZXIgb2YgOTAxMCBFcnJvcnMgZW5jb3VudGVyZWQuCgkgKgoJICogQHZhci
BpbnQKCSAqLwoJcHJpdmF0ZSAkXzkwMTBzX2VuY291bnRlcmVkID0gMDsKCgkvKioKCSAqIEFmdGVyIHRoa
XMgcG9pbnQgYW4gZXJyb3Igd2lsbCBiZSBzaG93biBpbmRpY2F0aW5nIHN1YnNlcXVlbnQgZXJyb3JzIHdp
bGwgYmUgaGlkZGVuLiBBbGwgOTAxMCBsb2cgdG86IEFCU1BBVEggLiAnaW1wb3J0YnVkZHkvbXlzcWxfOTA
xMF9sb2ctJyAuIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbG9nX3NlcmlhbCddIC4gJy50eHQnCgkgKg
oJICogQHZhciBpbnQKCSAqLwoJcHJpdmF0ZSAkX21heF85MDEwc19hbGxvd2VkID0gOTsKCgkvKioKCSAqI
FdoZW4gZW5hYmxlZCwgQmFja3VwQnVkZHkgd2lsbCBkdW1wIGluZGl2aWR1YWwgdGFibGVzIHRvIHRoZWly
IG93biBkYXRhYmFzZSBmaWxlIChlZyB3cF9vcHRpb25zLnNxbCwgd3BfcG9zdHMuc3FsLCBldGMpIHdoZW4
gcG9zc2libGUgYmFzZWQgb24gb3RoZXIgY3JpdGVyaWEgc3VjaCBhcyB0aGUgZHVtcCBtZXRob2QgYW5kIH
doZXRoZXIgYnJlYWtpbmcgb3V0IGJpZyB0YWJsZXMgaXMgZW5hYmxlZC4KCSAqCgkgKiBAdmFyIGJvb2wKC
SAqLwoJcHJpdmF0ZSAkX2ZvcmNlX3NpbmdsZV9kYl9maWxlID0gZmFsc2U7CgoJLyoqCgkgKiBDdXJyZW50
IFNRTCBmaWxlIG9wZXJhdGVkIG9uLiBVc2VkIGZvciBsb2dnaW5nLgoJICoKCSAqIEB2YXIgc3RyaW5nCgk
gKi8KCXByaXZhdGUgJF9jdXJyZW50X3NxbF9maWxlID0gJyc7CgoJLyoqCgkgKiBEZWZhdWx0IHJvd3MgcG
VyIHNlbGVjdCBpcyBkZXRlcm1pbmVkIGJ5IGRlZmF1bHQgcHJpdmF0ZSB2YXIgYWJvdmUgaWYgbm9uZSBwY
XNzZWQuIE92ZXJyaWRlbiBieSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3BocG15c3FsZHVtcF9tYXhy
b3dzJ10gaWYgbm90IGJsYW5rIGFuZCBpcyBudW1lcmljIGFuZCBvdmVycmlkZW4gYnkgcGFzc2VkIHBhcmF
tZXRlciBpZiBkZWZpbmVkLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGFiYXNlX2hvc3QgICAgICAgIE
hvc3QgLyBzZXJ2ZXIgb2YgZGF0YWJhc2UgdG8gcHVsbCBmcm9tLiBNYXkgYmUgaW4gdGhlIGZvcm1hdDogY
GxvY2FsaG9zdGAgZm9yIG5vcm1hbDsgYGxvY2FsaG9zdDovcGF0aC90by9teXNxbC5zb2NrYCBmb3Igc29j
a2V0cy4gSWYgc29ja2V0cyB0aGVuIHBhcmFzZWQgYW5kIGludGVybmFsIGNsYXNzIHZhcmlhYmxlcyBzZXQ
gYXBwcm9wcmlhdGVseS4KCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGFiYXNlX25hbWUgICAgICAgIE5hbWUgb2
YgZGF0YWJhc2UgdG8gcHVsbCBmcm9tLgoJICogQHBhcmFtIHN0cmluZyAkZGF0YWJhc2VfdXNlciAgICAgI
CAgVXNlciBvZiBkYXRhYmFzZSB0byBwdWxsIGZyb20uCgkgKiBAcGFyYW0gc3RyaW5nICRkYXRhYmFzZV9w
YXNzICAgICAgICBQYXNzIG9mIGRhdGFiYXNlIHRvIHB1bGwgZnJvbS4KCSAqIEBwYXJhbSBzdHJpbmcgJGR
hdGFiYXNlX3ByZWZpeCAgICAgIFByZWZpeCBvZiB0YWJsZXMgaW4gZGF0YWJhc2UgdG8gcHVsbCBmcm9tIC
8gaW5zZXJ0IGludG8gKG9ubHkgdXNlZCBpZiBiYXNlIG1vZGUgaXMgYHByZWZpeGApLgoJICogQHBhcmFtI
GFycmF5ICAkZm9yY2VfbWV0aG9kcyAgICAgICAgT3B0aW9uYWwuIFBvc3NpYmxlIG1ldGhvZHM6IGNvbW1h
bmRsaW5lLCBwaHAgLSBPdmVycmlkZSBhdXRvbWF0aWMgbWV0aG9kIGRldGVjdGlvbi4gU2tpcHMgdGVzdCB
hbmQgcnVucyBmaXJzdCBtZXRob2QgZmlyc3QuIEZhbGxzIGJhY2sgdG8gb3RoZXIgbWV0aG9kcyBpZiBhbn
kgZmFpbHVyZS4KCSAqIEBwYXJhbSBpbnQgICAgJG1heF9leGVjdXRpb24gICAgICAgIE9wdGlvbmFsLiBNY
XhpbXVtIGV4ZWN1dGlvbiB0aW1lIHRvIHJ1biBmb3IgYmVmb3JlIHN0b3BwaW5nIHRvIGFsbG93IGZvciBj
b250aW51aW5nIHRoZSBuZXh0IGltcG9ydCBwaWNraW5nIHVwIHdoZXJlIHdlIGxlZnQgb2ZmLiBJZiBibGF
uayB3ZSB0cnkgYW5kIGRlZHVjZSBpdC4gSWYgLTEgdGhlbiB3ZSBkbyBOT1QgdXNlIGNodW5raW5nLiBVc2
VmdWwgZm9yIGNsYXNzaWMgbW9kZS4KCSAqIEBwYXJhbSBpbnQgICAgJG1heF9yb3dzX3Blcl9zZWxlY3QgI
E9wdGlvbmFsLiBGb3IgUEhQLWJhc2VkIG15c3FsIGR1bXAsIG1heCBudW1iZXIgb2Ygcm93cyBwZXIgc2Vs
ZWN0IHRvIGdyYWIuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJGRhdGFiYXNlX2hvc3Q
sICRkYXRhYmFzZV9uYW1lLCAkZGF0YWJhc2VfdXNlciwgJGRhdGFiYXNlX3Bhc3MsICRkYXRhYmFzZV9wcm
VmaXgsICRmb3JjZV9tZXRob2RzID0gYXJyYXkoKSwgJG1heF9leGVjdXRpb24gPSAnJywgJG1heF9yb3dzX
3Blcl9zZWxlY3QgPSAnJyApIHsKCgkJaWYgKCBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydw
aHBteXNxbGR1bXBfbWF4cm93cyddICkgJiYgKCAnJyAhPSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3B
ocG15c3FsZHVtcF9tYXhyb3dzJ10gKSAmJiAoIGlzX251bWVyaWMoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW
9uc1sncGhwbXlzcWxkdW1wX21heHJvd3MnXSApICkgKSB7CgkJCSR0aGlzLT5fbWF4X3Jvd3NfcGVyX3Nlb
GVjdCA9IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sncGhwbXlzcWxkdW1wX21heHJvd3MnXTsKCQl9CgkJ
aWYgKCAoICcnICE9ICRtYXhfcm93c19wZXJfc2V
sZWN0ICkgJiYgKCBpc19udW1lcmljKCAkbWF4X3Jvd3NfcGVyX3NlbGVjdCApICkgKSB7CgkJCSR0aGlzLT
5fbWF4X3Jvd3NfcGVyX3NlbGVjdCA9ICRtYXhfcm93c19wZXJfc2VsZWN0OwoJCX0KCQlwYl9iYWNrdXBid
WRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdQSFAtYmFzZWQgbXlzcWxkdW1wIChpZiBhcHBsaWNhYmxlKSBt
YXggcm93cyBwZXIgc2VsZWN0IHNldCB0byAnIC4gJHRoaXMtPl9tYXhfcm93c19wZXJfc2VsZWN0IC4gJy4
nICk7CgoJCS8vIEhhbmRsZXMgY29tbWFuZCBsaW5lIGV4ZWN1dGlvbi4KCQlyZXF1aXJlX29uY2UgcGJfYm
Fja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2xpYi9jb21tYW5kYnVkZHkvY29tbWFuZGJ1ZGR5LnBoc
Cc7CgkJJHRoaXMtPl9jb21tYW5kYnVkZHkgPSBuZXcgcGJfYmFja3VwYnVkZHlfY29tbWFuZGJ1ZGR5KCk7
CgoJCS8vIENoZWNrIGZvciB1c2Ugb2Ygc29ja2V0cyBpbiBob3N0LiBIYW5kbGUgaWYgdXNpbmcgc29ja2V
0cy4KCQlpZiAoIHN0cnBvcyggJGRhdGFiYXNlX2hvc3QsICc6JyApID09PSBmYWxzZSApIHsgLy8gTm9ybW
FsIGhvc3QuIE5vIHNvY2tldCBvciBwb3J0IHNwZWNpZmllZC4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1c
yggJ2RldGFpbHMnLCAnRGF0YWJhc2UgaG9zdCBmb3IgZHVtcGluZzogYCcgLiAkZGF0YWJhc2VfaG9zdCAu
ICdgJyApOwoJCQkkdGhpcy0+X2RhdGFiYXNlX2hvc3QgPSAkZGF0YWJhc2VfaG9zdDsKCQl9IGVsc2UgeyA
vLyBOb24tbm9ybWFsIGhvc3Qgc3BlY2lmaWNhdGlvbi4gRWl0aGVyIHNvY2tldCBvciBwb3J0IG51bWJlci
BpcyBzcGVjaWZpZWQuCgkJCSRob3N0X3NwbGl0ID0gZXhwbG9kZSggJzonLCAkZGF0YWJhc2VfaG9zdCApO
woJCQlpZiAoICEgaXNfbnVtZXJpYyggJGhvc3Rfc3BsaXRbMV0gKSApIHsgLy8gU3RyaW5nIHNvIGFzc3Vt
ZSBhIHNvY2tldC4KCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0RhdGFiYXNlIGh
vc3QgKHNvY2tldCkgZm9yIGR1bXBpbmcuIEhvc3Q6IGAnIC4gJGhvc3Rfc3BsaXRbMF0gLiAnYDsgU29ja2
V0OiBgJyAuICRob3N0X3NwbGl0WzFdIC4gJ2AuJyApOwoJCQkJJHRoaXMtPl9kYXRhYmFzZV9ob3N0ICAgP
SAkaG9zdF9zcGxpdFswXTsKCQkJCSR0aGlzLT5fZGF0YWJhc2Vfc29ja2V0ID0gJGhvc3Rfc3BsaXRbMV07
CgkJCX0gZWxzZWlmICggaXNfbnVtZXJpYyggJGhvc3Rfc3BsaXRbMV0gKSApIHsgLy8gUG9ydCBudW1iZXI
gc3BlY2lmaWVkLgoJCQkJJHRoaXMtPl9kYXRhYmFzZV9ob3N0ID0gJGhvc3Rfc3BsaXRbMF07CgkJCQkkdG
hpcy0+X2RhdGFiYXNlX3BvcnQgPSAkaG9zdF9zcGxpdFsxXTsKCQkJfSBlbHNlIHsgLy8gVWtub3duLiBMZ
WF2ZSBhcyBvbmUgcGllY2UuCgkJCQkkdGhpcy0+X2RhdGFiYXNlX2hvc3QgPSAkZGF0YWJhc2VfaG9zdDsK
CQkJfQoJCX0KCQl1bnNldCggJGhvc3Rfc3BsaXQgKTsKCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2R
ldGFpbHMnLCAnTG9hZGluZyBteXNxbGJ1ZGR5IGxpYnJhcnkuJyApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdG
F0dXMoICdkZXRhaWxzJywgJ015c3FsIHNlcnZlciBkZWZhdWx0IGRpcmVjdG9yaWVzOiBgJyAuIGltcGxvZ
GUoICcsJywgJHRoaXMtPl9kZWZhdWx0X215c3FsX2RpcmVjdG9yaWVzICkgLiAnYCcgKTsKCgkJJHRoaXMt
Pl9kYXRhYmFzZV9uYW1lICAgPSAkZGF0YWJhc2VfbmFtZTsKCQkkdGhpcy0+X2RhdGFiYXNlX3VzZXIgICA
9ICRkYXRhYmFzZV91c2VyOwoJCSR0aGlzLT5fZGF0YWJhc2VfcGFzcyAgID0gJGRhdGFiYXNlX3Bhc3M7Cg
kJJHRoaXMtPl9kYXRhYmFzZV9wcmVmaXggPSAkZGF0YWJhc2VfcHJlZml4OwoKCQlpZiAoIGlzX2FycmF5K
CAkZm9yY2VfbWV0aG9kcyApICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdt
eXNxbGJ1ZGR5OiBGb3JjZSBtZXRob2Qgb2YgYCcgLiBjb3VudCggJGZvcmNlX21ldGhvZHMgKSAuICdgIHB
hc3NlZC4nICk7CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnbX
lzcWxidWRkeTogRm9yY2UgbWV0aG9kIG5vdCBhbiBhcnJheS4nICk7CgkJfQoKCQkvLyBTZXQgbWVjaGFua
XNtIGZvciBkdW1waW5nIC8gcmVzdG9yaW5nLgoJCWlmICggY291bnQoICRmb3JjZV9tZXRob2RzICkgPiAw
ICkgeyAvLyBNZWNoYW5pc20gZm9yY2VkLiBPdmVycmlkaW5nIGF1dG9tYXRpYyBjaGVjay4KCQkJcGJfYmF
ja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnbXlzcWxidWRkeTogU2V0dGluZ3Mgb3ZlcnJpZGluZy
BhdXRvbWF0aWMgZGV0ZWN0aW9uIG9mIGF2YWlsYWJsZSBkYXRhYmFzZSBkdW1wIG1ldGhvZHMuIFVzaW5nI
GZvcmNlZCBvdmVycmlkZSBtZXRob2RzOiBgJyAuIGltcGxvZGUoICcsJywgJGZvcmNlX21ldGhvZHMgKSAu
ICdgLicgKTsKCQkJaWYgKCBpbl9hcnJheSggJ2NvbW1hbmRsaW5lJywgJGZvcmNlX21ldGhvZHMgKSApIHs
KCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0ZvcmNlZCBtZXRob2RzIGluY2x1ZG
UgY29tbWFuZGxpbmUgc28gY2FsY3VsYXRpbmcgbXlzcWwgZGlyZWN0b3J5LicgKTsKCQkJCSR0aGlzLT5fb
XlzcWxfZGlyZWN0b3JpZXMgPSAkdGhpcy0+X2NhbGN1bGF0ZV9teXNxbF9kaXIoKTsgLy8gVHJ5IHRvIGRl
dGVybWluZSBteXNxbCBsb2NhdGlvbiAvIHBvc3NpYmxlIGxvY2F0aW9ucy4KCQkJCSR0aGlzLT5fbWV0aG9
kcyAgICAgICAgICAgPSAkdGhpcy0+YXZhaWxhYmxlX2R1bXBfbWV0aG9kcygpOyAvLyBSdW4gYWZ0ZXIgX2
NhbGN1bGF0ZV9teXNxbF9kaXIoKS4KCQkJfQoJCQkkdGhpcy0+X21ldGhvZHMgPSAkZm9yY2VfbWV0aG9kc
zsKCQl9IGVsc2UgeyAvLyBObyBtZXRob2QgZGVmaW5lZDsgYXV0by1kZXRlY3QgdGhlIGJlc3QuCgkJCXBi
X2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ215c3FsYnVkZHk6IE1ldGhvZCBub3QgZm9yY2V
kLiBBYm91dCB0byBkZXRlY3QgZGlyZWN0b3J5IGFuZCBhdmFpbGFibGUgbWV0aG9kcy4nICk7CgoJCQkkdG
hpcy0+X215c3FsX2RpcmVjdG9yaWVzID0gJHRoaXMtPl9jYWxjdWxhdGVfbXlzcWxfZGlyKCk7IC8vIFRye
SB0byBkZXRlcm1pbmUgbXlzcWwgbG9jYXRpb24gLyBwb3NzaWJsZSBsb2NhdGlvbnMuCgkJCSR0aGlzLT5f
bWV0aG9kcyAgICAgICAgICAgPSAkdGhpcy0+YXZhaWxhYmxlX2R1bXBfbWV0aG9kcygpOyAvLyBSdW4gYWZ
0ZXIgX2NhbGN1bGF0ZV9teXNxbF9kaXIoKS4KCQl9CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3
NhZ2UnLCAnbXlzcWxidWRkeTogRGV0ZWN0ZWQgZGF0YWJhc2UgZHVtcCBtZXRob2RzOiBgJyAuIGltcGxvZ
GUoICcsJywgJHRoaXMtPl9tZXRob2RzICkgLiAnYC4nICk7CgoJCS8vIEZpZ3VyZSBvdXQgbWF4IGV4ZWN1
dGlvbiB0aW1lIGFsbG93ZWQuCgkJaWYgKCAoICcnICE9ICRtYXhfZXhlY3V0aW9uICkgJiYgKCBpc19udW1
lcmljKCAkbWF4X2V4ZWN1dGlvbiApICkgKSB7CgkJCSR0aGlzLT5fbWF4RXhlY3V0aW9uVGltZSA9ICRtYX
hfZXhlY3V0aW9uOwoJCX0gZWxzZSB7IC8vIE5vdCBwYXNzZWQuIERlZHVjZS4KCQkJaWYgKCBpc3NldCggc
GJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydtYXhfZXhlY3V0aW9uX3RpbWUnXSApICkgewoJCQkJJHRoaXMt
Pl9tYXhFeGVjdXRpb25UaW1lID0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydtYXhfZXhlY3V0aW9uX3R
pbWUnXTsKCQkJfSBlbHNlIHsKCQkJCS8vIERldGVjdCBtYXggZXhlY3V0aW9uIHRpbWUuCgkJCQkkdGhpcy
0+X21heEV4ZWN1dGlvblRpbWUgPSBiYWNrdXBidWRkeV9jb3JlOjpkZXRlY3RNYXhFeGVjdXRpb25UaW1lK
Ck7CgkJCX0KCQl9CgkJaWYgKCAnLTEnID09ICR0aGlzLT5fbWF4RXhlY3V0aW9uVGltZSApIHsKCQkJcGJf
YmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTWF4IGV4ZWN1dGlvbiB0aW1lIGNodW5raW5nIGR
pc2FibGVkIGJ5IHBhc3NpbmcgLTEgdG8gY29uc3RydWN0b3IuIE5vIGNodW5raW5nIHdpbGwgYmUgdXNlZC
Bmb3IgdGhlIGRhdGFiYXNlIGR1bXAuJyApOwoJCX0gZWxzZSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0d
XMoICdkZXRhaWxzJywgJ0lmIGFwcGxpY2FibGUsIGJyZWFraW5nIHVwIHdpdGggbWF4IGV4ZWN1dGlvbiB0
aW1lIGAnIC4gJHRoaXMtPl9tYXhFeGVjdXRpb25UaW1lIC4gJ2Agc2Vjb25kcy4nICk7CgkJfQoKCQlnbG9
iYWwgJHdwZGI7CgoJCSR0aGlzLT5fY3VycmVudF9zcWxfdmVyc2lvbiA9IFBCX0JhY2t1cGJ1ZGR5X0RCX0
hlbHBlcnM6OmdldF9kYl92ZXJzaW9uKCk7CgkJaWYgKCBQQl9CYWNrdXBidWRkeV9EQl9IZWxwZXJzOjppc
19tYXJpYV9kYigpICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdUaGlzIHNl
cnZlclwncyBtYXJpYWRiIHZlcnNpb246IGAnIC4gJHRoaXMtPl9jdXJyZW50X3NxbF92ZXJzaW9uIC4gJ2A
uJyApOwoJCX0gZWxzZSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1RoaXMgc2
VydmVyXCdzIG15c3FsIHZlcnNpb246IGAnIC4gJHRoaXMtPl9jdXJyZW50X3NxbF92ZXJzaW9uIC4gJ2AuJ
yApOwoJCX0KCgl9IC8vIEVuZCBfX2NvbnN0cnVjdCgpLgoKCS8qKgoJICogU2V0IHRoZSBteXNxbCB2ZXJz
aW9uIHdoaWNoIGNyZWF0aW5nIHRoZSBTUUwgZmlsZShzKSB3ZSB3aWxsIGJlIGltcG9ydGluZy4KCSAqCgk
gKiBAcGFyYW0gc3RyaW5nICR2ZXJzaW9uICBJbmNvbWluZyBTUUwgdmVyc2lvbiBudW1iZXIuCgkgKi8KCX
B1YmxpYyBmdW5jdGlvbiBzZXRfaW5jb21pbmdfc3FsX3ZlcnNpb24oICR2ZXJzaW9uICkgewoJCSR0aGlzL
T5faW5jb21pbmdfc3FsX3ZlcnNpb24gPSAkdmVyc2lvbjsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
ZGV0YWlscycsICdTZXQgaW5jb21pbmcgU1FMIG15c3FsIHZlcnNpb24gdG8gYCcgLiAkdGhpcy0+X2luY29
taW5nX3NxbF92ZXJzaW9uIC4gJ2AuJyApOwoKCQlpZiAoIHZlcnNpb25fY29tcGFyZSggJHRoaXMtPl9pbm
NvbWluZ19zcWxfdmVyc2lvbiwgJzUuMS4wJywgJzwnICkgJiYgdmVyc2lvbl9jb21wYXJlKCAkdGhpcy0+X
2N1cnJlbnRfc3FsX3ZlcnNpb24sICc1LjEuMCcsICc+PScgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0
YXR1cyggJ3dhcm5pbmcnLCAnRXJyb3IgIzcwMDE6IFRoaXMgc2VydmVyXCdzIG15c3FsIHZlcnNpb24sIGA
nIC4gJHRoaXMtPl9jdXJyZW50X3NxbF92ZXJzaW9uIC4gJ2AgbWF5IGhhdmUgU1FMIHF1ZXJ5IGluY29tcG
F0aWJpbGl0aWVzIHdpdGggdGhlIGJhY2t1cCBteXNxbCB2ZXJzaW9uIGAnIC4gJHRoaXMtPl9pbmNvbWluZ
19zcWxfdmVyc2lvbiAuICdgLiBUaGlzIG1heSByZXN1bHQgaW4gIzkwMTAgZXJyb3JzIGR1ZSB0byBzeW50
YXggb2YgVFlQRT0gY2hhbmdpbmcgdG8gRU5HSU5FPS4gSWYgbm9uZSBvY2N1ciB5b3UgbWF5IGlnbm9yZSB
0aGlzIGVycm9yLicgKTsKCQkJJHRoaXMtPl9ob3RmaXhfNzAwMSA9IHRydWU7CgkJCXBiX2JhY2t1cGJ1ZG
R5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0VuYWJsaW5nIGhvdGZpeCAjNzAwMSB0byByZXBsYWNlIFRZUEU9I
HdpdGggRU5HSU5FPSBpbiBTUUwgc3ludGF4LicgKTsKCQl9Cgl9IC8vIEVuZCBzZXRfaW5jb21pbmdfc3Fs
X3ZlcnNpb24oKS4KCgkvKioKCSAqIFdoZW4gZW5hYmxlZCBieSBwYXNzaW5nIHRydWUsIEJhY2t1cEJ1ZGR
5IHdpbGwgZHVtcCBpbmRpdmlkdWFsIHRhYmxlcyB0byB0aGVpciBvd24gZGF0YWJhc2UgZmlsZSAoZWcgd3
Bfb3B0aW9ucy5zcWwsIHdwX3Bvc3RzLnNxbCwgZXRjKSB3aGVuIHBvc3NpYmxlIGJhc2VkIG9uIG90aGVyI
GNyaXRlcmlhIHN1Y2ggYXMgdGhlIGR1bXAgbWV0aG9kIGFuZCB3aGV0aGVyIGJyZWFraW5nIG91dCBiaWcg
dGFibGVzIGlzIGVuYWJsZWQuCgkgKgoJICogQHBhcmFtIGJvb2wgJGZvcmNlICBXaGV0aGVyIG9yIG5vdCB
0byBmb3JjZSB0byBzaW5nbGUgZmlsZS4gRGVmYXVsdHMgdG8gVFJVRSBpZiB0aGlzIGZ1bmN0aW9uIGlzIG
NhbGxlZC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGZvcmNlX3NpbmdsZV9kYl9maWxlKCAkZm9yY2UgPSB0c
nVlICkgewoJCWlmICggdHJ1ZSA9PT0gJGZvcmNlICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAn
ZGV0YWlscycsICdGb3JjaW5nIGRhdGFiYXNlIGJhY2t1cHMgdG8gZ28gaW50byBhIHNpbmdsZSBkYl8xLnN
xbCBmaWxlIGRlc3BpdGUgb3RoZXIgc2V0dGluZ3MuJyApOwoJCQkkdGhpcy0+X2ZvcmNlX3NpbmdsZV9kYl
9maWxlID0gdHJ1ZTsKCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsI
CdFbmFibGluZyBkYXRhYmFzZSBiYWNrdXBzIHRvIGdvIGludG8gaW5kaXZpZHVhbCB0YWJsZW5hbWUuc3Fs
IGZpbGVzIGFzIHBvc3NpYmxlLicgKTsKCQkJJHRoaXMtPl9mb3JjZV9zaW5nbGVfZGJfZmlsZSA9IGZhbHN
lOwoJCX0KCX0gLy8gRW5kIGZvcmNlX3NpbmdsZV9kYl9maWxlKCkuCgoJLyoqCgkgKiBSZXR1cm5zIGF2YW
lsYWJsZSBkdW1wIG1ldGhvZHMKCSAqCgkgKiBAcmV0dXJuIHN0cmluZyBQb3NzaWJsZSByZXR1cm5zOiAgb
XlzcWxkdW1wLCBwaHAKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGF2YWlsYWJsZV9kdW1wX21ldGhvZHMoKSB7
CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ215c3FsZHVtcCB0ZXN0OiBUZXN0aW5
nIGF2YWlsYWJsZSBteXNxbCBkYXRhYmFzZSBkdW1wIG1ldGhvZHMuJyApOwoJCWlmICggZnVuY3Rpb25fZX
hpc3RzKCAnZXhlYycgKSApIHsgLy8gRXhlYyBpcyBhdmFpbGFibGUgc28gdGVzdCBteXNxbGR1bXAgZnJvb
SBoZXJlLgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdteXNxbGR1bXAgdGVzdDog
ZXhlYygpIGZ1bmN0aW9uIGV4aXN0cy4gVGVzdGluZyBydW5uaW5nIG15c3FsZHVtcCB2aWEgZXhlYygpLic
gKTsKCgkJCS8qKioqKioqKioqIEJlZ2luIHByZXBhcmluZyBjb21tYW5kICovCgkJCS8vIEhhbmRsZSBXaW
5kb3dzIHdhbnRpbmcgLmV4ZS4KCQkJaWYgKCBzdHJpc3RyKCBQSFBfT1MsICdXSU4nICkgJiYgISBzdHJpc
3RyKCBQSFBfT1MsICdEQVJXSU4nICkgKSB7IC8vIFJ1bm5pbmcgV2luZG93cy4gKG5vdCBkYXJ3aW4pLgoJ
CQkJJGNvbW1hbmQgPSAnbXNxbGR1bXAuZXhlJzsKCQkJfSBlbHNlIHsKCQkJCSRjb21tYW5kID0gJ215c3F
sZHVtcCc7CgkJCX0KCgkJCSRjb21tYW5kIC49ICcgLS12ZXJzaW9uJzsKCgkJCS8vIFJlZGlyZWN0IFNURE
VSUiB0byBTVERPVVQuCgkJCSRjb21tYW5kIC49ICcgIDI+JjEnOwoKCQkJLyoqKioqKioqKiogRW5kIHByZ
XBhcmluZyBjb21tYW5kICovCgoJCQkvLyBMb29wIHRocm91Z2ggYWxsIHBvc3NpYmxlIGRpcmVjdG9yaWVz
IHRvIHJ1biBjb21tYW5kIHRocm91Z2guCgkJCWZvcmVhY2ggKCAkdGhpcy0+X215c3FsX2RpcmVjdG9yaWV
zIGFzICRteXNxbF9kaXJlY3RvcnkgKSB7IC8vIF
RyeSBlYWNoIHBvc3NpYmxlIGRpcmVjdG9yeS4gbXlzcWwgZGlyZWN0b3J5IGluY2x1ZGVkIHRyYWlsaW5nI
HNsYXNoLgoKCQkJCS8vIFJ1biBjb21tYW5kLgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFp
bHMnLCAnbXlzcWxkdW1wIHRlc3QgcnVubmluZyBuZXh0LicgKTsKCQkJCWxpc3QoICRleGVjX291dHB1dCw
gJGV4ZWNfZXhpdF9jb2RlICkgPSAkdGhpcy0+X2NvbW1hbmRidWRkeS0+ZXhlY3V0ZSggJG15c3FsX2Rpcm
VjdG9yeSAuICRjb21tYW5kICk7CgoJCQkJaWYgKCBzdHJpc3RyKCBpbXBsb2RlKCAnICcsICRleGVjX291d
HB1dCApLCAnVmVyJyApICE9PSBmYWxzZSApIHsgLy8gU3RyaW5nIFZlciBhcHBlYXJlZCBpbiByZXNwb25z
ZSAoZXhwZWN0ZWQgcmVzcG9uc2UgdG8gbXlzcWxkdW1wIC0tdmVyc2lvbi4KCQkJCQlwYl9iYWNrdXBidWR
keTo6c3RhdHVzKCAnZGV0YWlscycsICdteXNxbGR1bXAgdGVzdDogQ29tbWFuZCBhcHBlYXJzIHRvIGJlIG
FjY2Vzc2libGUgYW5kIHJldHVybnMgZXhwZWN0ZWQgcmVzcG9uc2UuJyApOwoJCQkJCSR0aGlzLT5fbXlzc
WxfZGlyZWN0b3J5ID0gJG15c3FsX2RpcmVjdG9yeTsgLy8gU2V0IHRvIHVzZSB0aGlzIGRpcmVjdG9yeSBm
b3IgdGhlIHJlYWwgZHVtcC4KCQkJCQlyZXR1cm4gYXJyYXkoICdwaHAnLCAnY29tbWFuZGxpbmUnICk7IC8
vIG15c3FsZHVtcCBiZXN0LCBwaHAgbmV4dC4KCQkJCX0KCQkJfQoJCX0gZWxzZSB7IC8vIE5vIGV4ZWMoKS
BzbyBtdXN0IGZhbGwgYmFjayB0byBQSFAgbWV0aG9kIG9ubHkuCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0d
XMoICdkZXRhaWxzJywgJ215c3FsZHVtcCB0ZXN0OiBleGVjKCkgdW5hdmFpbGFibGUgc28gc2tpcHBpbmcg
Y29tbWFuZCBsaW5lIG15c3FsZHVtcCBjaGVjay4nICk7CgkJCXJldHVybiBhcnJheSggJ3BocCcgKTsKCQl
9CgoJCXJldHVybiBhcnJheSggJ3BocCcgKTsKCgl9IC8vIEVuZCBhdmFpbGFibGVfZHVtcF9tZXRob2QoKS
4KCgkvKioKCSAqIFRyaWVzIHRvIGRldGVybWluZSB0aGUgcGF0aCB0byB3aGVyZSBteXNxbCBpcyBpbnN0Y
WxsZWQuICBOZWVkZWQgZm9yIHJ1bm5pbmcgYnkgY29tbWFuZCBsaW5lLiAgUHJlcGVuZHMgZm91bmQgbG9j
YXRpb24gdG8gbGlzdCBvZiBwb3NzaWJsZSBkZWZhdWx0IG15c3FsIGRpcmVjdG9yaWVzLgoJICoKCSAqIEB
yZXR1cm4gYXJyYXkgIEFycmF5IG9mIGRpcmVjdG9yaWVzIGluIHByZWZlcnJlZCBvcmRlci4KCSAqLwoJcH
JpdmF0ZSBmdW5jdGlvbiBfY2FsY3VsYXRlX215c3FsX2RpcigpIHsKCgkJcGJfYmFja3VwYnVkZHk6OnN0Y
XR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogQXR0ZW1wdGluZyB0byBjYWxjdWxhdGUgZXhhY3QgbXlz
cWwgZGlyZWN0b3J5LicgKTsKCQkkZmFpbGVkICAgICAgICAgICAgPSB0cnVlOwoJCSRteXNxbF9kaXJlY3R
vcmllcyA9ICR0aGlzLT5fZGVmYXVsdF9teXNxbF9kaXJlY3RvcmllczsKCgkJZ2xvYmFsICR3cGRiOwoJCS
RiYXNlZGlyID0gJHdwZGItPmdldF9yZXN1bHRzKCAiU0hPVyBWQVJJQUJMRVMgTElLRSAnYmFzZWRpciciL
CBBUlJBWV9OICk7CgkJaWYgKCBmYWxzZSAhPT0gJGJhc2VkaXIgKSB7CgkJCSRiYXNlZGlydHJpbSA9IHJ0
cmltKCAkYmFzZWRpclswXVsxXSwgJy9cXCcgKTsgLy8gVHJpbSB0cmFpbGluZyBzbGFzaGVzLgoJCQkkbXl
zcWxkaXIgICAgPSAkYmFzZWRpcnRyaW0gLiAnL2Jpbi8nOwoJCQlhcnJheV91bnNoaWZ0KCAkbXlzcWxfZG
lyZWN0b3JpZXMsICRteXNxbGRpciApOyAvLyBQcmVwZW5kcyB0aGUganVzdCBmb3VuZCBkaXJlY3Rvcnkgd
G8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbGlzdC4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFp
bHMnLCAnbXlzcWxidWRkeTogTXlzcWwgcmVwb3J0ZWQgaXRzIGRpcmVjdG9yeS4gUmVwb3J0ZWQ6IGAnIC4
gJGJhc2VkaXJbMF1bMV0gLiAnYDsgQWRkaW5nIGJpbmFyeSBsb2NhdGlvbiB0byBiZWdpbm5pbmcgb2YgbX
lzcWwgZGlyZWN0b3J5IGxpc3Q6IGAnIC4gJG15c3FsZGlyIC4gJ2AnICk7CgkJCSRmYWlsZWQgPSBmYWxzZ
TsKCQl9CgoJCWlmICggdHJ1ZSA9PT0gJGZhaWxlZCApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cygg
J2RldGFpbHMnLCAnbXlzcWxidWRkeTogTXlzcWwgd291bGQgbm90IHJlcG9ydCBpdHMgZGlyZWN0b3J5Lic
gKTsKCQl9CgoJCXJldHVybiAkbXlzcWxfZGlyZWN0b3JpZXM7CgoJfSAvLyBFbmQgX2NhbGN1bGF0ZV9teX
NxbF9kaXIoKS4KCgkvKioKCSAqIER1bXBzIFNRTCBiYXNlZCBvbiBjaG9zZW4gbWV0aG9kLgoJICoKCSAqI
EBzZWUgX215c3FsZHVtcCgpCgkgKiBAc2VlIF9waHBkdW1wKCkKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRv
dXRwdXRfZGlyZWN0b3J5ICBEaXJlY3RvcnkgdG8gb3V0cHV0IHRvLiBNYXkgYWxzbyBiZSB1c2VkIGFzIGE
gdGVtcG9yYXJ5IGZpbGUgbG9jYXRpb24uIFRyYWlsaW5nIHNsYXNoIGF1dG8tYWRkZWQgaWYgbWlzc2luZy
4KCSAqIEBwYXJhbSBhcnJheSAgJHRhYmxlcyAgICAgICAgICAgIEFycmF5IG9mIHRhYmxlcyB0byBkdW1wL
goJICogQHBhcmFtIGludCAgICAkcm93c19zdGFydCAgICAgICAgU3RhcnRpbmcgcm93LCBpZiBhbnkuIE9u
bHkgd29ya3Mgd2l0aCBQSFAgbW9kZS4gVXNlZCB3aXRoIGNodW5raW5nLgoJICoKCSAqIEByZXR1cm4gYm9
vbCAgSWYgc3VjY2Vzc2Z1bCBvciBub3QuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBkdW1wKCAkb3V0cHV0X2
RpcmVjdG9yeSwgJHRhYmxlcyA9IGFycmF5KCksICRyb3dzX3N0YXJ0ID0gMCApIHsKCQkkb3V0cHV0X2Rpc
mVjdG9yeSA9IHJ0cmltKCAkb3V0cHV0X2RpcmVjdG9yeSwgJy8nICkgLiAnLyc7IC8vIE1ha2Ugc3VyZSB3
ZSBoYXZlIHRyYWlsaW5nIHNsYXNoLgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtaWxlc3RvbmUnLCA
nc3RhcnRfZGF0YWJhc2UnICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnU3Rhcn
RpbmcgZGF0YWJhc2UgZHVtcCBwcm9jZWR1cmUuJyApOwoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZ
XRhaWxzJywgIm15c3FsYnVkZHk6IE91dHB1dCBkaXJlY3Rvcnk6IGB7JG91dHB1dF9kaXJlY3Rvcnl9YC4i
ICk7CgkJaWYgKCBjb3VudCggJHRhYmxlcyApID09IDEgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXM
oICdkZXRhaWxzJywgJ0R1bXBpbmcgc2luZ2xlIHRhYmxlIGAnIC4gJHRhYmxlc1swXSAuICdgLicgKTsKCQ
l9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdUYWJsZSBkdW1wIGNvd
W50OiBgJyAuIGNvdW50KCAkdGFibGVzICkgLiAnYC4nICk7CgkJfQoJCWlmICggZmlsZV9leGlzdHMoICRv
dXRwdXRfZGlyZWN0b3J5IC4gJ2RiXzEuc3FsJyApICkgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCA
nZGV0YWlscycsICdEYXRhYmFzZSBTUUwgZmlsZSBleGlzdHMuIEl0IHdpbGwgYmUgYXBwZW5kZWQgdG8uJy
ApOwoJCX0KCgkJLy8gQXR0ZW1wdCBlYWNoIG1ldGhvZCBpbiBvcmRlci4KCQlwYl9iYWNrdXBidWRkeTo6c
3RhdHVzKCAnZGV0YWlscycsICdQcmVwYXJpbmcgdG8gZHVtcCB1c2luZyBhdmFpbGFibGUgbWV0aG9kKHMp
IGJ5IHByaW9yaXR5LiBNZXRob2RzOiBgJyAuIGltcGxvZGUoICcsJywgJHRoaXMtPl9tZXRob2RzICkgLiA
nYCcgKTsKCQlmb3JlYWNoICggJHRoaXMtPl9tZXRob2RzIGFzICRtZXRob2QgKSB7CgkJCSRyZXR1cm4gPS
BmYWxzZTsKCQkJaWYgKCBtZXRob2RfZXhpc3RzKCAkdGhpcywgIl9kdW1wX3skbWV0aG9kfSIgKSApIHsKC
QkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ215c3FsYnVkZHk6IEF0dGVtcHRpbmcg
ZHVtcCBtZXRob2QgYCcgLiAkbWV0aG9kIC4gJ2AuJyApOwoJCQkJJHJlc3VsdCA9IGNhbGxfdXNlcl9mdW5
jKCBhcnJheSggJHRoaXMsICJfZHVtcF97JG1ldGhvZH0iICksICRvdXRwdXRfZGlyZWN0b3J5LCAkdGFibG
VzLCAkcm93c19zdGFydCApOwoKCQkJCWlmICggdHJ1ZSA9PT0gJHJlc3VsdCApIHsgLy8gRHVtcCBjb21wb
GV0ZWQgc3VjY2VzZnVsbHkgd2l0aCB0aGlzIG1ldGhvZC4KCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVz
KCAnZGV0YWlscycsICdteXNxbGJ1ZGR5OiBEdW1wIG1ldGhvZCBgJyAuICRtZXRob2QgLiAnYCBjb21wbGV
0ZWQgc3VjY2Vzc2Z1bGx5LicgKTsKCQkJCQkkcmV0dXJuID0gdHJ1ZTsKCQkJCQlicmVhazsKCQkJCX0gZW
xzZWlmICggZmFsc2UgPT09ICRyZXN1bHQgKSB7IC8vIER1bXAgZmFpbGVkIHRoaXMgbWV0aG9kLiBXaWxsI
HRyeSBjb21wYXRpYmlsaXR5IGZhbGxiYWNrIHRvIG5leHQgbW9kZSBpZiBhYmxlLgoJCQkJCS8vIERvIG5v
dGhpbmcuIFdpbGwgdHJ5IG5leHQgbW9kZSBuZXh0IGxvb3AuCgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR
1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogRHVtcCBtZXRob2QgYCcgLiAkbWV0aG9kIC4gJ2AgZmFpbG
VkLiBUcnlpbmcgYW5vdGhlciBjb21wYXRpYmlsaXR5IG1vZGUgbmV4dCBpZiBhYmxlLicgKTsKCQkJCX0gZ
WxzZWlmICggaXNfYXJyYXkoICRyZXN1bHQgKSApIHsgLy8gQ2h1bmtpbmcuCgkJCQkJcGJfYmFja3VwYnVk
ZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogRHVtcCBtZXRob2QgYCcgLiAkbWV0aG9kIC4
gJ2AgaXMgdXNpbmcgY2h1bmtpbmcuJyApOwoJCQkJCXJldHVybiAkcmVzdWx0OwoJCQkJfSBlbHNlIHsgLy
8gU29tZXRoaW5nIGVsc2UgcmV0dXJuZWQ7IG5lZWQgdG8gcmVzdW1lPyBUT0RPOiB0aGlzIGlzIGZvciBmd
XR1cmUgdXNlIGZvciByZXN1bWluZyBkdW1wLgoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgJ215c3FsYnVkZHk6IFVuZXhlcGVjdGVkIHJlc3BvbnNlOiBgJyAuIGltcGxvZGUoICcsJywgJHJ
lc3VsdCApIC4gJ2AnICk7CgkJCQkJJHJldHVybiA9IGZhbHNlOwoJCQkJfQoJCQl9CgkJfSAvLyBlbmQgZm
9yZWFjaC4KCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21pbGVzdG9uZScsICdmaW5pc2hfZGF0YWJhc
2UnICk7CgoJCWlmICggdHJ1ZSA9PT0gJHJldHVybiApIHsgLy8gU3VjY2Vzcy4KCQkJcGJfYmFja3VwYnVk
ZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnRGF0YWJhc2UgZHVtcCBwcm9jZWR1cmUgc3VjY2VlZGVkLicgKTs
KCQkJcmV0dXJuIHRydWU7CgkJfSBlbHNlIHsgLy8gT3ZlcmFsbCBmYWlsdXJlLgoJCQlwYl9iYWNrdXBidW
RkeTo6c3RhdHVzKCAnZXJyb3InLCAnRGF0YWJhc2UgZHVtcCBwcm9jZWR1cmUgZmFpbGVkLicgKTsKCQkJc
mV0dXJuIGZhbHNlOwoJCX0KCgl9IC8vIEVuZCBkdW1wKCkuCgoKCS8qKgoJICogRHVtcCB2aWEgQ29tbWFu
ZGxpbmUuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkb3V0cHV0X2RpcmVjdG9yeSAgRGlyZWN0b3J5IHRvIG9
1dHB1dCB0by4gTWF5IGFsc28gYmUgdXNlZCBhcyBhIHRlbXBvcmFyeSBmaWxlIGxvY2F0aW9uLiBUcmFpbG
luZyBzbGFzaCByZXF1aXJlZC4gZHVtcCgpIGF1dG8tYWRkcyB0cmFpbGluZyBzbGFzaCBiZWZvcmUgcGFzc
2luZy4KCSAqIEBwYXJhbSBhcnJheSAgJHRhYmxlcyAgICAgICAgICAgIEFycmF5IG9mIHRhYmxlcyB0byBk
dW1wLiBJZiBvbmx5IG9uZSB0YWJsZSBpbiBhcnJheSB0aGVuIHdpbGwgdXNlIFRBQkxFTkFNRS5zcWwgaW5
zdGVhZCBvZiBkYl8xLnNxbC4KCSAqIEBwYXJhbSBpbnQgICAgJHJvd3Nfc3RhcnQgICAgICAgIE4vQS4gTm
90IHVzZWQgYnkgdGhpcyBtZXRob2QuCgkgKgoJICogQHJldHVybiBib29sICBJZiBzdWNjZXNzZnVsIG9yI
G5vdC4KCSAqLwoJcHJpdmF0ZSBmdW5jdGlvbiBfZHVtcF9jb21tYW5kbGluZSggJG91dHB1dF9kaXJlY3Rv
cnksICR0YWJsZXMsICRyb3dzX3N0YXJ0ID0gMCApIHsKCQlpZiAoICggY291bnQoICR0YWJsZXMgKSA9PSA
xICkgJiYgKCBmYWxzZSA9PT0gJHRoaXMtPl9mb3JjZV9zaW5nbGVfZGJfZmlsZSApICkgeyAvLyBJZiBvbm
x5IG9uZSB0YWJsZSB0aGVuIG5hbWUgLnNxbCBmaWxlIGFmdGVyIGl0LgoJCQkkb3V0cHV0X2ZpbGUgPSAkb
3V0cHV0X2RpcmVjdG9yeSAuICR0YWJsZXNbMF0gLiAnLnNxbCc7CgkJfSBlbHNlIHsgLy8gTXVsdGlwbGUg
dGFibGVzIHNvIHVzZSBnZW5lcmFpYyBkYl8xLnNxbCBmaWxlIHRvIGR1bXAgaW50by4KCQkJJG91dHB1dF9
maWxlID0gJG91dHB1dF9kaXJlY3RvcnkgLiAnZGJfMS5zcWwnOwoJCX0KCQlwYl9iYWNrdXBidWRkeTo6c3
RhdHVzKCAnc3FsRmlsZScsIGJhc2VuYW1lKCAkb3V0cHV0X2ZpbGUgKSApOyAvLyBUZWxscyBzdGF0dXMgY
2hlY2tlciB3aGljaCBmaWxlIHRvIHJlcXVlc3Qgc2l6ZSBkYXRhIGZvciB3aGVuIHBvbGxpbmcgc2VydmVy
LgoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdteXNxbGJ1ZGR5OiBQcmVwYXJpbmc
gdG8gcnVuIGNvbW1hbmQgbGluZSBteXNxbGR1bXAgdmlhIGV4ZWMoKS4nICk7CgkJJGV4Y2x1ZGVfY29tbW
FuZCA9ICcnOwoKCQkkdGFibGVzX3N0cmluZyA9IGltcGxvZGUoICcgJywgJHRhYmxlcyApOyAvLyBTcGVja
WZpYyB0YWJsZXMgbGlzdGVkIHRvIGR1bXAuCgoJCS8qKiBCZWdpbiBwcmVwYXJpbmcgY29tbWFuZCAqLwoJ
CS8vIEhhbmRsZSBXaW5kb3dzIHdhbnRpbmcgLmV4ZS4KCQlpZiAoIHN0cmlzdHIoIFBIUF9PUywgJ1dJTic
gKSAmJiAhIHN0cmlzdHIoIFBIUF9PUywgJ0RBUldJTicgKSApIHsgLy8gUnVubmluZyBXaW5kb3dzLiAobm
90IGRhcndpbikuCgkJCSRjb21tYW5kID0gJHRoaXMtPl9teXNxbF9kaXJlY3RvcnkgLiAnbXNxbGR1bXAuZ
XhlJzsKCQl9IGVsc2UgewoJCQkkY29tbWFuZCA9ICR0aGlzLT5fbXlzcWxfZGlyZWN0b3J5IC4gJ215c3Fs
ZHVtcCc7CgkJfQoKCQkvLyBIYW5kbGUgcG9zc2libGUgc29ja2V0cy4KCQlpZiAoICcnICE9ICR0aGlzLT5
fZGF0YWJhc2Vfc29ja2V0ICkgewoJCQkkY29tbWFuZCAuPSAiIC0tc29ja2V0PXskdGhpcy0+X2RhdGFiYX
NlX3NvY2tldH0iOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdteXNxbGJ1ZGR5O
iBVc2luZyBzb2NrZXRzIGluIGNvbW1hbmQuJyApOwoJCX0KCgkJLy8gSGFuZGxlIG92ZXJyaWRpbmcgcG9y
dC4KCQlpZiAoICcnICE9ICR0aGlzLT5fZGF0YWJhc2VfcG9ydCApIHsKCQkJJGNvbW1hbmQgLj0gIiAtLXB
vcnQ9eyR0aGlzLT5fZGF0YWJhc2VfcG9ydH0iOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YW
lscycsICdteXNxbGJ1ZGR5OiBVc2luZyBjdXN0b20gcG9ydCBgJyAuICR0aGlzLT5fZGF0YWJhc2VfcG9yd
CAuICdgIGJhc2VkIG9uIERCX0hPU1Qgc2V0dGluZy4nICk7CgkJfQoKCQkvLyBTZXQgZGVmYXVsdCBjaGFy
c2V0IGlmIGF2YWlsYWJsZS4KCQlnbG9iYWwgJHdwZGI7CgkJaWYgKCBpc3NldCggJHdwZGIgKSApIHsKCQk
JcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnd3BkYiBjaGFyc2V0IG92ZXJyaWRlIGZvci
Bjb21tYW5kbGluZTogJyAuICR3cGRiLT5jaGFyc
2V0ICk7CgkJCSRjb21tYW5kIC49ICcgLS1kZWZhdWx0LWNoYXJhY3Rlci1zZXQ9JyAuICR3cGRiLT5jaGFy
c2V0OwoJCX0KCgkJLyoqCgkJVE9ETzogV0lORE9XUyBOT1RFOiBpbmZvcm1hdGlvbiBpbiB0aGUgTXlTUUw
gZG9jdW1lbnRhdGlvbiBhYm91dCBteXNxbGR1bXAgbmVlZGluZyB0byB1c2UgLS1yZXN1bHQtZmlsZT0gb2
4gV2luZG93cyB0byBhdm9pZCBzb21lIGlzc3VlIHdpdGggbGluZSBlbmRpbmdzLgoKCQlOb3RlczoKCQkJL
S1za2lwLW9wdCAgICAgICAgU2tpcHMgc29tZSBkZWZhdWx0IG9wdGlvbnMuIE1VU1QgYWRkIGJhY2sgaW4g
Y3JlYXRlLW9wdGlvbnMgZWxzZSBhdXRvaW5jcmVtZW50IHdpbGwgYmUgbG9zdCEgU2VlIGh0dHA6Ly9kZXY
ubXlzcWwuY29tL2RvYy9yZWZtYW4vNS41L2VuL215c3FsZHVtcC5odG1sI29wdGlvbl9teXNxbGR1bXBfb3
B0CgkJCS0tcXVpY2sKCQkJLS1za2lwLWNvbW1lbnRzICAgRG9udCBib3RoZXIgd2l0aCBleHRyYSBjb21tZ
W50cy4KCQkJLS1jcmVhdGUtb3B0aW9ucyAgUmVxdWlyZWQgdG8gYWRkIGluIGF1dG8gaW5jcmVtZW50IG9w
dGlvbi4KCQkJLS1kaXNhYmxlLWtleXMgICAgUHJldmVudCByZS1pbmRleGluZyB0aGUgZGF0YWJhc2UgYWZ
0ZXIgZWFjaCBhbmQgZXZlcnkgaW5zZXJ0IHVudGlsIHRoZSBlbnRpcmUgdGFibGUgaXMgaW5zZXJ0ZWQuIF
ByZXZlbnRzIHRpbWVvdXRzIHdoZW4gYSBkYiB0YWJsZSBoYXMgZnVsbHRleHQga2V5cyBlc3BlY2lhbGx5L
goJCSovCgkJJGNvbW1hbmQgLj0gJyAtLWhvc3Q9JyAuIGVzY2FwZXNoZWxsYXJnKCAkdGhpcy0+X2RhdGFi
YXNlX2hvc3QgKSAuICcgLS11c2VyPScgLiBlc2NhcGVzaGVsbGFyZyggJHRoaXMtPl9kYXRhYmFzZV91c2V
yICkgLiAnIC0tcGFzc3dvcmQ9JyAuIGVzY2FwZXNoZWxsYXJnKCAkdGhpcy0+X2RhdGFiYXNlX3Bhc3MgKS
AuICIgLS1za2lwLW9wdCAtLXF1aWNrIC0tZGlzYWJsZS1rZXlzIC0tc2tpcC1jb21tZW50cyAtLWNyZWF0Z
S1vcHRpb25zIHskZXhjbHVkZV9jb21tYW5kfSAiIC4gZXNjYXBlc2hlbGxhcmcoICR0aGlzLT5fZGF0YWJh
c2VfbmFtZSApIC4gIiB7JHRhYmxlc19zdHJpbmd9IDI+JjEgPj4geyRvdXRwdXRfZmlsZX0iOyAvLyAyPiY
xIHJlZGlyZWN0IFNUREVSUiB0byBTVERPVVQuCgkJLyoqKioqKioqKiogRW5kIHByZXBhcmluZyBjb21tYW
5kICovCgoJCS8qKioqKioqKioqIEJlZ2luIGNvbW1hbmQgbGluZSBsZW5ndGggY2hlY2sgKi8KCQkvLyBTa
W1wbGUgY2hlY2sgY29tbWFuZCBsaW5lIGxlbmd0aC4gSWYgaXQgYXBwZWFycyBsb25nIHRoZW4gZG8gYWR2
YW5jZWQgY2hlY2sgdmlhIGNvbW1hbmQgbGluZSB0byBzZWUgd2hhdCBhY3R1YWwgbGltaXQgaXMuIEZhbGx
zIGJhY2sgaWYgdG9vIGxvbmcgdG8gZXhlY3V0ZSBvdXIgcHJvY2VzcyBpbiBvbmUgZ28uCgkJLy8gVE9ETz
ogSW4gdGhlIGZ1dHVyZSBoYW5kbGUgZmFsbGJhY2sgYmV0dGVyIGJ5IHBvc3NpYmx5IGJyZWFraW5nIHRoZ
SBjb21tYW5kIHVwIGlmIHBvc3NpYmxlIHJhdGhlciB0aGFuIHN0cmljdCBmYWxsYmFjayB0byBQSFAgZHVt
cGluZy4KCQkkY29tbWFuZF9sZW5ndGggPSBzdHJsZW4oICRjb21tYW5kICk7CgkJcGJfYmFja3VwYnVkZHk
6OnN0YXR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogQ29tbWFuZCBsZW5ndGg6IGAnIC4gJGNvbW1hbm
RfbGVuZ3RoIC4gJ2AuJyApOwoJCWlmICggJzEnID09IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snaWdub
3JlX2NvbW1hbmRfbGVuZ3RoX2NoZWNrJ10gKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRh
aWxzJywgJ215c3FsYnVkZHk6IEFkdmFuY2VkIG9wdGlvbiB0byBza2lwIGNvbW1hbmQgbGluZSBsZW5ndGg
gY2hlY2sgcmVzdWx0cyBpbiBlbmFibGVkLiBTa2lwcGluZy4nICk7CgkJfSBlbHNlIHsKCQkJaWYgKCAkY2
9tbWFuZF9sZW5ndGggPiBzZWxmOjpDT01NQU5EX0xJTkVfTEVOR1RIX0NIRUNLX1RIUkVTSE9MRCApIHsgL
y8gQXJiaXRyYXJ5IGxlbmd0aC4gU2VlbXMgc3RhbmRhcmQgbWF4IGxlbmd0aHMgYXJlID4gMjAwMDAwIG9u
IExpbnV4LiB+ODYwMCBvbiBXaW5kb3dzPwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHM
nLCAnbXlzcWxidWRkeTogQ29tbWFuZCBsaW5lIGxlbmd0aCBvZiBgJyAuICRjb21tYW5kX2xlbmd0aCAuIC
dgIChieXRlcykgaXMgbGFyZ2UgZW5vdWdoICggPicgLiBzZWxmOjpDT01NQU5EX0xJTkVfTEVOR1RIX0NIR
UNLX1RIUkVTSE9MRCAuICcgKSB0byB2ZXJpZnkgY29tcGF0aWJpbGl0eS4gQ2hlY2tpbmcgbWF4aW11bSBh
bGxvd2VkIGNvbW1hbmQgbGluZSBsZW5ndGggZm9yIHRoaXMgc3l0ZW0uJyApOwoKCQkJCS8vIENoZWNrIG1
heCBjb21tYW5kIGxlbmd0aCBzdXBwb3J0ZWQgYnkgc2VydmVyLgoJCQkJbGlzdCggJGV4ZWNfb3V0cHV0LC
AkZXhlY19leGl0X2NvZGUgKSA9ICR0aGlzLT5fY29tbWFuZGJ1ZGR5LT5leGVjdXRlKCAnZWNobyAkKCggJ
ChnZXRjb25mIEFSR19NQVgpIC0gJChlbnYgfCB3YyAtYykgKSknICk7IC8vIFZhbHVlIHdpbGwgYmUgYSBu
dW1iZXIuIFRoaXMgaXMgdGhlIG1heGltdW0gYnl0ZSBzaXplIG9mIHRoZSBjb21tYW5kIGxpbmUuCgoJCQk
JcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogQ29tbWFuZCBvdXRwdX
Q6IGAnIC4gaW1wbG9kZSggJywnLCAkZXhlY19vdXRwdXQgKSAuICdgOyBFeGl0IGNvZGU6IGAnIC4gJGV4Z
WNfZXhpdF9jb2RlIC4gJ2A7IEV4aXQgY29kZSBkZXNjcmlwdGlvbjogYCcgLiBwYl9iYWNrdXBidWRkeTo6
JGZpbGVzeXN0ZW0tPmV4aXRfY29kZV9sb29rdXAoICRleGVjX2V4aXRfY29kZSApIC4gJ2AnICk7CgkJCQl
pZiAoIGlzX2FycmF5KCAkZXhlY19vdXRwdXQgKSAmJiBpc19udW1lcmljKCAkZXhlY19vdXRwdXRbMF0gKS
ApIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdteXNxbGJ1ZGR5OiBEZXRlY
3RlZCBtYXhpbXVtIGNvbW1hbmQgbGluZSBsZW5ndGggZm9yIHRoaXMgc3lzdGVtOiBgJyAuICRleGVjX291
dHB1dFswXSAuICdgLicgKTsKCQkJCQlpZiAoICRjb21tYW5kX2xlbmd0aCA+ICggJGV4ZWNfb3V0cHV0WzB
dIC0gMTAwICkgKSB7IC8vIENoZWNrIGlmIHdlIGV4Y2VlZCBtYXhpbXVtIGxlbmd0aC4gU3VidHJhY3QgMT
AwIHRvIG1ha2Ugcm9vbSBmb3IgcGF0aCBkZWZpbml0aW9uLgoJCQkJCQlpZiAoICcxJyA9PSBwYl9iYWNrd
XBidWRkeTo6JG9wdGlvbnNbJ2lnbm9yZV9jb21tYW5kX2xlbmd0aF9jaGVjayddICkgewoJCQkJCQkJcGJf
YmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogVGhpcyBzeXN0ZW1cJ3MgbWF
4aW11bSBjb21tYW5kIGxpbmUgbGVuZ3RoIG9mIGAnIC4gJGV4ZWNfb3V0cHV0WzBdIC4gJ2AgaXMgc2hvcn
RlciB0aGFuIGNvbW1hbmQgbGVuZ3RoIG9mIGAnIC4gJGNvbW1hbmRfbGVuZ3RoIC4gJ2AuIEhvd2V2ZXIsI
HRoZSBvcHRpb24gdG8gaWdub3JlIGNvbW1hbmQgbGluZSBsZW5ndGggY2hlY2sgaXMgZW5hYmxlZCBiYXNl
ZCBvbiBzZXR0aW5ncyBzbyBjb250aW51aW5nIGFueXdheXMuJyApOwoJCQkJCQl9IGVsc2UgewoJCQkJCQk
JaWYgKCAkZXhlY19vdXRwdXRbMF0gPCAwICkgewoJCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoIC
d3YXJuaW5nJywgJ215c3FsYnVkZHk6IFRoaXMgc3lzdGVtIHJlcG9ydGVkIGEgbmVnYXRpdmUgbnVtYmVyI
GZvciB0aGUgbWF4aW11bSBjb21tYW5kIGxpbmUgbGVuZ3RoLiBUaGlzIG1lYW5zIHRoYXQgQmFja3VwQnVk
ZHkgY2Fubm90IHNhZmVseSBkZXRlY3QgdGhpcyBzeXN0ZW1cJ3MgbGltaXQuICBUaGlzIGNoZWNrIGNhbiB
iZSBvdmVycmlkZGVuIGJ5IGVuYWJsaW5nIHRoZSAiU2tpcCBjb21tYW5kIGxpbmUgbGVuZ3RoIGNoZWNrIi
BhZHZhbmNlZCBvcHRpb24gb24gdGhlIFNldHRpbmdzIHBhZ2UgaW4gQmFja3VwQnVkZHkgYXMgYSB3b3JrY
XJvdW5kLiBnZXRfY29uZiBBUkdfTUFYIGxpa2VseSBmYWlsZWQuJyApOwoJCQkJCQkJfQoJCQkJCQkJcGJf
YmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogVGhpcyBzeXN0ZW1cJ3MgbWF
4aW11bSBjb21tYW5kIGxpbmUgbGVuZ3RoIG9mIGAnIC4gJGV4ZWNfb3V0cHV0WzBdIC4gJ2AgaXMgc2hvcn
RlciB0aGFuIGNvbW1hbmQgbGVuZ3RoIG9mIGAnIC4gJGNvbW1hbmRfbGVuZ3RoIC4gJ2AuIEZhbGxpbmcgY
mFjayBpbnRvIGNvbXBhdGliaWxpdHkgbW9kZSB0byBpbnN1cmUgZGF0YWJhc2UgZHVtcCBpbnRlZ3JpdHku
JyApOwoJCQkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJCQl9CgkJCQkJfSBlbHNlIHsKCQkJCQkJcGJfYmFja3V
wYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogVGhpcyBzeXN0ZW1cJ3MgbWF4aW11bS
Bjb21tYW5kIGxpbmUgbGVuZ3RoIG9mIGAnIC4gJGV4ZWNfb3V0cHV0WzBdIC4gJ2AgaXMgbG9uZ2VyIHRoY
W4gY29tbWFuZCBsZW5ndGggb2YgYCcgLiAkY29tbWFuZF9sZW5ndGggLiAnYC4gQ29udGludWluZy4nICk7
CgkJCQkJfQoJCQkJfSBlbHNlIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd
teXNxbGJ1ZGR5OiBVbmFibGUgdG8gZGV0ZXJtaW5lIG1heGltdW0gY29tbWFuZCBsaW5lIGxlbmd0aC4gRm
FsbGluZyBiYWNrIGludG8gY29tcGF0aWJpbGl0eSBtb2RlIHRvIGluc3VyZSBkYXRhYmFzZSBkdW1wIGlud
GVncml0eS4nICk7CgkJCQkJcmV0dXJuIGZhbHNlOyAvLyBGYWxsIGJhY2sgdG8gY29tcGF0aWJpbHR5IG1v
ZGUganVzdCBpbiBjYXNlLgoJCQkJfQoJCQl9IGVsc2UgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyg
gJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogQ29tbWFuZCBsaW5lIGxlbmd0aCBsZW5ndGggY2hlY2sgc2tpcH
BlZCBzaW5jZSBpdCBpcyBsZXNzIHRoYW4gY2hlY2sgdGhyZXNob2xkIGAnIC4gc2VsZjo6Q09NTUFORF9MS
U5FX0xFTkdUSF9DSEVDS19USFJFU0hPTEQgLiAnYC4nICk7CgkJCX0KCQl9CgkJLyoqKioqKioqKiogRW5k
IGNvbW1hbmQgbGluZSBsZW5ndGggY2hlY2sgKi8KCgkJLy8gUnVuIGNvbW1hbmQuCgkJcGJfYmFja3VwYnV
kZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogUnVubmluZyBkdW1wIHZpYSBjb21tYW5kbG
luZSBuZXh0LicgKTsKCQlsaXN0KCAkZXhlY19vdXRwdXQsICRleGVjX2V4aXRfY29kZSApID0gJHRoaXMtP
l9jb21tYW5kYnVkZHktPmV4ZWN1dGUoICRjb21tYW5kICk7CgoJCS8vIENoZWNrIGZvciB1bmV4cGVjdGVk
IG15c3FsIGNvbW1hbmQgbGluZSByZXNwb25zZSB0ZXh0Li4uCgkJaWYgKCBpc19hcnJheSggJGV4ZWNfb3V
0cHV0ICkgKSB7CgkJCWZvcmVhY2ggKCAkZXhlY19vdXRwdXQgYXMgJGV4ZWNfb3V0cHV0X2xpbmUgKSB7Cg
kJCQlpZiAoIGZhbHNlICE9PSBzdHJpc3RyKCAkZXhlY19vdXRwdXRfbGluZSwgJ3VucmVjb2duaXplZCBvc
HRpb24nICkgKSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ215c3FsZHVtcCBk
aWQgbm90IHJlY29nbml6ZSBvbmUgb3IgbW9yZSBvcHRpb25zLiBWZXJpZnkgbXlzcWxkdW1wIHZlcnNpb24
gaXMgdXAgdG8gZGF0ZS4gRmFsbGluZyBiYWNrIHRvIGNvbXBhdGliaWxpdHkgbW9kZS4gRXJyb3I6IGAnIC
4gJGV4ZWNfb3V0cHV0X2xpbmUgLiAnYC4nICk7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkJf
QoKCQlAaW5jbHVkZV9vbmNlIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9saWIvd3BkYnV0
aWxzL3dwZGJ1dGlscy5waHAnOwoJCWlmICggY2xhc3NfZXhpc3RzKCAncGx1Z2luYnVkZHlfd3BkYnV0aWx
zJyApICkgewoJCQlnbG9iYWwgJHdwZGI7CgkJCSRkYmhlbHBlciA9IG5ldyBwbHVnaW5idWRkeV93cGRidX
RpbHMoICR3cGRiICk7CgkJCWlmICggISAkZGJoZWxwZXItPmtpY2soKSApIHsKCQkJCXBiX2JhY2t1cGJ1Z
GR5OjpzdGF0dXMoICdlcnJvcicsIF9fKCAnRGF0YWJhc2UgU2VydmVyIGhhcyBnb25lIGF3YXksIHVuYWJs
ZSB0byBzY2hlZHVsZSBuZXh0IGJhY2t1cCBzdGVwLiBUaGUgYmFja3VwIGNhbm5vdCBjb250aW51ZS4gVGh
pcyBpcyBtb3N0IG9mdGVuIGNhdXNlZCBieSBteXNxbCBydW5uaW5nIG91dCBvZiBtZW1vcnkgb3IgdGltaW
5nIG91dCBmYXIgdG9vIGVhcmx5LiBQbGVhc2UgY29udGFjdCB5b3VyIGhvc3QuJywgJ2l0LWwxMG4tYmFja
3VwYnVkZHknICkgKTsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdoYWx0U2NyaXB0JywgJycgKTsg
Ly8gSGFsdCBKUyBvbiBwYWdlLgoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfSBlbHNlIHsKCQkJcGJfYmF
ja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCBfXyggJ0RhdGFiYXNlIFNlcnZlciBjb25uZWN0aW9uIH
N0YXR1cyB1bnZlcmlmaWVkLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJfQoKCQkvLyBDaGVja
yB0aGUgcmVzdWx0IG9mIHRoZSBleGl0IGNvZGUuCgkJaWYgKCAnMCcgPT0gJGV4ZWNfZXhpdF9jb2RlICkg
ewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdteXNxbGJ1ZGR5OiBDb21tYW5kIGF
wcGVhcnMgdG8gc3VjY2VlZGVkIGFuZCByZXR1cm5lZCBwcm9wZXIgcmVzcG9uc2UuJyApOwoJCQlpZiAoIG
ZpbGVfZXhpc3RzKCAkb3V0cHV0X2ZpbGUgKSApIHsgLy8gU1FMIGZpbGUgZm91bmQuIFNVQ0NFU1MhCgkJC
QlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdteXNxbGJ1ZGR5OiBEYXRhYmFzZSBkdW1w
IFNRTCBmaWxlIGV4aXN0cy4nICk7CgoJCQkJLy8gRGlzcGxheSBmaW5hbCBTUUwgZmlsZSBzaXplLgoJCQk
JJHNxbF9maWxlc2l6ZSA9IHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5maWxlX3NpemUoIGZpbGVzaXplKC
Akb3V0cHV0X2ZpbGUgKSApOwoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRmluY
WwgU1FMIGRhdGFiYXNlIGR1bXAgZmlsZSBzaXplIG9mIGAnIC4gYmFzZW5hbWUoICRvdXRwdXRfZmlsZSAp
IC4gJ2A6ICcgLiAkc3FsX2ZpbGVzaXplIC4gJy4nICk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCA
nZmluaXNoVGFibGVEdW1wJywgJycgKTsKCgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfSBlbHNlIHsgLy8gU1FMIG
ZpbGUgTUlTU0lORy4gRkFJTFVSRSEKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdte
XNxbGJ1ZGR5OiBUaG91Z2ggY29tbWFuZCByZXBvcnRlZCBzdWNjZXNzIGRhdGFiYXNlIGR1bXAgU1FMIGZp
bGUgaXMgbWlzc2luZzogYCcgLiAkb3V0cHV0X2ZpbGUgLiAnYC4nICk7CgkJCQlyZXR1cm4gZmFsc2U7Cgk
JCX0KCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdteXNxbGJ1ZG
R5OiBXYXJuaW5nICM5MDMwLiBDb21tYW5kIGRpZCBub3QgZXhpdCBub3JtYWxseS4gVGhpcyBpcyBub3JtY
WwgaXMgeW91ciBzZXJ2ZXIgZG9lcyBub3Qgc3Vw
cG9ydCBjb21tYW5kIGxpbmUgbXlzcWwgZnVuY3Rpb25hbGl0eS4gRmFsbGluZyBiYWNrIHRvIGRhdGFiYXN
lIGR1bXAgY29tcGF0aWJpbGl0eSBtb2Rlcy4nICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCS8vIFNob3
VsZCBuZXZlciBnZXQgdG8gaGVyZS4KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnbXlzc
WxidWRkeTogVW5jYXVnaHQgZXhjZXB0aW9uICM0NTM4OTAuJyApOwoJCXJldHVybiBmYWxzZTsKCgl9IC8v
IEVuZCBfZHVtcF9jb21tYW5kbGluZSgpLgoKCgoJLyoKCSAgX3BocGR1bXAoKQoJICoKCSAqCgkgKgoJICo
JQHBhcmFtCQkJCSRvdXRwdXRfZGlyZWN0b3J5CgkgKglAcGFyYW0JCQkJJHRhYmxlcwoJICoJQHJldHVybg
kJbWl4ZWQJCQkJCQkJCQkJdHJ1ZSBvbiBzdWNjZXNzLCBmYWxzZSBvbiBmYWlsLCBhcnJheSggcmVtYWlua
W5nX3RhYmxlcywgcm93X3N0YXJ0ICkgb24gY2h1bmtpbmcuCgkgKi8KCS8qKgoJICogUEhQLWJhc2VkIGR1
bXBpbmcgb2YgU1FMIGRhdGEuIENvbXBhdGliaWxpdHkgbW9kZS4gV2FzIG9ubHkgbW9kZSBwcmUtMy4wLgo
JICoKCSAqIEBwYXJhbSBzdHJpbmcgJG91dHB1dF9kaXJlY3RvcnkgICAgIERpcmVjdG9yeSB0byBvdXRwdX
QgdG8uIE1heSBhbHNvIGJlIHVzZWQgYXMgYSB0ZW1wb3JhcnkgZmlsZSBsb2NhdGlvbi4gVHJhaWxpbmcgc
2xhc2ggcmVxdWlyZWQuIGR1bXAoKSBhdXRvLWFkZHMgdHJhaWxpbmcgc2xhc2ggYmVmb3JlIHBhc3Npbmcu
CgkgKiBAcGFyYW0gYXJyYXkgICR0YWJsZXMgICAgICAgICAgICAgICBBcnJheSBvZiB0YWJsZXMgdG8gZHV
tcC4KCSAqIEBwYXJhbSBpbnQgICAgJHJlc3VtZV9zdGFydGluZ19yb3cgIFN0YXJ0aW5nIHJvdywgaWYgYW
55LiBPbmx5IHdvcmtzIHdpdGggUEhQIG1vZGUuIFVzZWQgd2l0aCBjaHVua2luZy4KCSAqCgkgKiBAcmV0d
XJuIGJvb2wgIElmIHN1Y2Nlc3NmdWwgb3Igbm90LgoJICovCglwcml2YXRlIGZ1bmN0aW9uIF9kdW1wX3Bo
cCggJG91dHB1dF9kaXJlY3RvcnksICR0YWJsZXMsICRyZXN1bWVfc3RhcnRpbmdfcm93ID0gMCApIHsKCQk
kdGhpcy0+dGltZV9zdGFydCAgICAgICAgICAgPSBtaWNyb3RpbWUoIHRydWUgKTsKCQkkbGFzdF9maWxlX3
NpemVfb3V0cHV0ICAgICAgPSBtaWNyb3RpbWUoIHRydWUgKTsKCQkkb3V0cHV0X2ZpbGVfc2l6ZV9ldmVye
V9tYXggPSA1OyAvLyBPdXRwdXQgY3VycmVudCBTUUwgZmlsZSBzaXplIG5vIG1vcmUgb2Z0ZW4gdGhhbiB0
aGlzLiBPbmx5IGNoZWNrcyBpZiBpdCBoYXMgYmVlbiBlbm91Z2ggdGltZSBvbmNlIGVhY2ggYnVyc3Qgb2Y
gbWF4IHJvd3MgcGVyIHNlbGVjdCBpcyBwcm9jZXNzZWQuCgoJCSRtYXhfcm93c19wZXJfc2VsZWN0ID0gJH
RoaXMtPl9tYXhfcm93c19wZXJfc2VsZWN0OwoKCQlpZiAoICRyZXN1bWVfc3RhcnRpbmdfcm93ID4gMCApI
HsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUmVzdW1pbmcgY2h1bmtlZCBkdW1w
IGF0IHJvdyBgJyAuICRyZXN1bWVfc3RhcnRpbmdfcm93IC4gJ2AuJyApOwoJCX0KCgkJZ2xvYmFsICR3cGR
iOwoJCWlmICggISBpc19vYmplY3QoICR3cGRiICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoIC
dlcnJvcicsICdXb3JkUHJlc3MgZGF0YWJhc2Ugb2JqZWN0ICR3cGRiIGRpZCBub3QgZXhpc3QuIFRoaXMgc
2hvdWxkIG5vdCBoYXBwZW4uJyApOwoJCQllcnJvcl9sb2coICdXb3JkUHJlc3MgZGF0YWJhc2Ugb2JqZWN0
ICR3cGRiIGRpZCBub3QgZXhpc3QuIFRoaXMgc2hvdWxkIG5vdCBoYXBwZW4uIEJhY2t1cEJ1ZGR5IEVycm9
yICM4OTQ1NTg3OTczLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJGluc2VydF9zcWwgPSAnJzsKCg
kJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTG9hZGluZyBEQiBraWNrZXIgZm9yIHVzZ
SBsZXRlciBpbiBjYXNlIGRhdGFiYXNlIGdvZXMgYXdheS4nICk7CgkJQGluY2x1ZGVfb25jZSBwYl9iYWNr
dXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvbGliL3dwZGJ1dGlscy93cGRidXRpbHMucGhwJzsKCQlpZiA
oIGNsYXNzX2V4aXN0cyggJ3BsdWdpbmJ1ZGR5X3dwZGJ1dGlscycgKSApIHsKCQkJZ2xvYmFsICR3cGRiOw
oJCQkkZGJoZWxwZXIgPSBuZXcgcGx1Z2luYnVkZHlfd3BkYnV0aWxzKCAkd3BkYiApOwoJCX0gZWxzZSB7C
gkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgX18oICdEYXRhYmFzZSBTZXJ2ZXIgY29u
bmVjdGlvbiBzdGF0dXMgd2lsbCBub3QgYmUgdmVyaWZpZWQgYXMga2lja2VyIGlzIG5vdCBhdmFpbGFibGU
uJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCQl9CgoJCWdsb2JhbCAkd3BkYjsgLy8gVXNlZCBsYX
RlciBmb3IgY2hlY2tpbmcgdGhhdCB3ZSBhcmUgc3RpbGwgY29ubmVjdGVkIHRvIERCLgoKCQkvLyBJdGVyY
XRlIHRocm91Z2ggYWxsIHRoZSB0YWJsZXMgdG8gYmFja3VwLgoJCS8vIFRPRE86IEZ1dHVyZSBhYmlsaXR5
IHRvIGJyZWFrIHVwIERCIGV4cG9ydGluZyB0byBtdWx0aXBsZSBwYWdlIGxvYWRzIGlmIG5lZWRlZC4KCQk
kcmVtYWluaW5nX3RhYmxlcyA9ICR0YWJsZXM7CgkJZm9yZWFjaCAoICR0YWJsZXMgYXMgJHRhYmxlX2tleS
A9PiAkdGFibGUgKSB7CgkJCSRfY291bnQgICAgID0gMDsKCQkJJGluc2VydF9zcWwgPSAnJzsKCgkJCWlmI
CggJHJlc3VtZV9zdGFydGluZ19yb3cgPiAwICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Rl
dGFpbHMnLCAnQ2h1bmtlZCByZXN1bWUgb24gZHVtcGluZyBgJyAuICR0YWJsZSAuICdgLiBSZXN1bWluZyB
3aGVyZSBsZWZ0IG9mZiBhdCBgJyAuICRyZXN1bWVfc3RhcnRpbmdfcm93IC4gJ2AuJyApOwoJCQkJJHJvd3
Nfc3RhcnQgICAgICAgICAgPSAkcmVzdW1lX3N0YXJ0aW5nX3JvdzsKCQkJCSRyZXN1bWVfc3RhcnRpbmdfc
m93ID0gMDsgLy8gRG9uJ3Qgd2FudCB0byBza2lwIGFueXRoaW5nIG9uIG5leHQgdGFibGUuCgkJCX0gZWxz
ZSB7CgkJCQkkcm93c19zdGFydCA9IDA7CgkJCX0KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGF
pbHMnLCAnRHVtcGluZyBkYXRhYmFzZSB0YWJsZSBgJyAuICR0YWJsZSAuICdgLiBNYXggcm93cyBwZXIgc2
VsZWN0OiAnIC4gJG1heF9yb3dzX3Blcl9zZWxlY3QgLiAnLiBTdGFydGluZyBhdCByb3cgYCcgLiAkcmVzd
W1lX3N0YXJ0aW5nX3JvdyAuICdgLicgKTsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ3N0YXJ0VGFi
bGVEdW1wJywgJHRhYmxlICk7CgoJCQlpZiAoIGZhbHNlID09PSAkdGhpcy0+X2ZvcmNlX3NpbmdsZV9kYl9
maWxlICkgewoJCQkJJG91dHB1dF9maWxlID0gJG91dHB1dF9kaXJlY3RvcnkgLiAkdGFibGUgLiAnLnNxbC
c7CgkJCX0gZWxzZSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdBZHZhbmNlZ
CBvcHRpb24gdG8gZm9yY2UgdG8gc2luZ2xlIC5zcWwgZmlsZSBlbmFibGVkLicgKTsKCQkJCSRvdXRwdXRf
ZmlsZSA9ICRvdXRwdXRfZGlyZWN0b3J5IC4gJ2RiXzEuc3FsJzsKCQkJfQoJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZGV0YWlscycsICdTUUwgZHVtcCBmaWxlIGAnIC4gJG91dHB1dF9maWxlIC4gJ2AuJyApOw
oJCQlpZiAoICctMScgPT0gJHRoaXMtPl9tYXhFeGVjdXRpb25UaW1lICkgewoJCQkJcGJfYmFja3VwYnVkZ
Hk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGF0YWJhc2UgbWF4IGV4ZWN1dGlvbiB0aW1lIGNodW5raW5nIGRp
c2FibGVkIGJhc2VkIG9uIC0xIHBhc3NlZC4nICk7CgkJCX0gZWxzZSB7CgkJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZGV0YWlscycsICdteXNxbGJ1ZGR5OiBQSFAtYmFzZWQgZGF0YWJhc2UgZHVtcCB3aXRoIG
1heCBleGVjdXRpb24gdGltZSBmb3IgdGhpcyBydW46ICcgLiAkdGhpcy0+X21heEV4ZWN1dGlvblRpbWUgL
iAnIHNlY29uZHMuJyApOwoJCQl9CgkJCWlmICggZmFsc2UgPT09ICggJGZpbGVfaGFuZGxlID0gZm9wZW4o
ICRvdXRwdXRfZmlsZSwgJ2EnICkgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcic
sICdFcnJvciAjOTAxODogRGF0YWJhc2UgZmlsZSBpcyBub3QgY3JlYXRhYmxlL3dyaXRhYmxlLiBDaGVjay
B5b3VyIHBlcm1pc3Npb25zIGZvciBmaWxlIGAnIC4gJG91dHB1dF9maWxlIC4gJ2AgaW4gZGlyZWN0b3J5I
GAnIC4gJG91dHB1dF9kaXJlY3RvcnkgLiAnYC4nICk7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCgkJCXBi
X2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdzcWxGaWxlJywgYmFzZW5hbWUoICRvdXRwdXRfZmlsZSApICk7IC8
vIFRlbGxzIHN0YXR1cyBjaGVja2VyIHdoaWNoIGZpbGUgdG8gcmVxdWVzdCBzaXplIGRhdGEgZm9yIHdoZW
4gcG9sbGluZyBzZXJ2ZXIuCgoJCQlpZiAoIDAgPT0gJHJvd3Nfc3RhcnQgKSB7CgoJCQkJJGNyZWF0ZV90Y
WJsZSA9ICR3cGRiLT5nZXRfcmVzdWx0cyggIlNIT1cgQ1JFQVRFIFRBQkxFIGB7JHRhYmxlfWAiLCBBUlJB
WV9OICk7CgkJCQlpZiAoIGZhbHNlID09PSAkY3JlYXRlX3RhYmxlICkgewoJCQkJCXBiX2JhY2t1cGJ1ZGR
5OjpzdGF0dXMoICdlcnJvcicsICdVbmFibGUgdG8gYWNjZXNzIGFuZCBkdW1wIGRhdGFiYXNlIHRhYmxlIG
AnIC4gJHRhYmxlIC4gJ2AuIFRhYmxlIG1heSBub3QgZXhpc3QuIFNraXBwaW5nIGJhY2t1cCBvZiB0aGlzI
HRhYmxlLicgKTsKCQkJCQljb250aW51ZTsgLy8gU2tpcCB0aGlzIGl0ZXJhdGlvbiBhcyBhY2Nlc3Npbmcg
dGhpcyB0YWJsZSBmYWlsZWQuCgkJCQl9CgkJCQkvLyBUYWJsZSBjcmVhdGlvbiB0ZXh0LgoJCQkJaWYgKCA
hIGlzc2V0KCAkY3JlYXRlX3RhYmxlWzBdICkgKSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2
Vycm9yJywgJ0Vycm9yICM4NTc4MzU6IFVuYWJsZSB0byBnZXQgdGFibGUgY3JlYXRpb24gU1FMIGZvciB0Y
WJsZSBgJyAuICR0YWJsZSAuICdgLiBSZXN1bHQ6IGAnIC4gcHJpbnRfciggJGNyZWF0ZV90YWJsZSApIC4g
J2AuIFZlcmlmeSB0aGF0IGl0IGV4aXN0cyBhbmQgbXlzcWwgcGVybWlzc2lvbnMgYWxsb3cgdGhpcy4gSWY
geW91IG1hbnVhbGx5IGluY2x1ZGVkIHRoaXMgYXMgYW4gYWRkaXRpb25hbCB0YWJsZSwgbWFrZSBzdXJlIG
l0IGlzIHRoZSBjb3JyZWN0IHRhYmxlIG5hbWUuJyApOwoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJC
SRjcmVhdGVfdGFibGVfYXJyYXkgPSAkY3JlYXRlX3RhYmxlWzBdOwoJCQkJdW5zZXQoICRjcmVhdGVfdGFi
bGUgKTsKCQkJCSRpbnNlcnRfc3FsIC49IHN0cl9yZXBsYWNlKCAiXG4iLCAnJywgJGNyZWF0ZV90YWJsZV9
hcnJheVsxXSApIC4gIjtcbiI7IC8vIFJlbW92ZSBpbnRlcm5hbCBsaW5lYnJlYWtzOyBvbmx5IHB1dCBvbm
UgYXQgZW5kLgoJCQkJdW5zZXQoICRjcmVhdGVfdGFibGVfYXJyYXkgKTsKCgkJCQkvLyBEaXNhYmxlIGtle
XMgZm9yIHRoaXMgdGFibGUuCgkJCQkkaW5zZXJ0X3NxbCAuPSAiLyohNDAwMDAgQUxURVIgVEFCTEUgYHsk
dGFibGV9YCBESVNBQkxFIEtFWVMgKi87XG4iOwoKCQkJCS8vIERpc2FibGUgZm9yZWlnbiBrZXkgYW5kIHV
uaXF1ZSBjaGVja3MgdGVtcG9yYXJpbHkgdG8gaGVscCBhdm9pZCBlcnJvcnMuCgkJCQkkaW5zZXJ0X3NxbC
AuPSAiU0VUIEZPUkVJR05fS0VZX0NIRUNLUyA9IDA7XG4iOwoJCQkJJGluc2VydF9zcWwgLj0gIlNFVCBVT
klRVUVfQ0hFQ0tTID0gMDtcbiI7CgkJCX0KCgkJCSRxdWVyeV9jb3VudCA9IDA7CgkJCSRyb3dzX3JlbWFp
biA9IHRydWU7CgkJCXdoaWxlICggdHJ1ZSA9PT0gJHJvd3NfcmVtYWluICkgewoJCQkJLy8gUm93IGNyZWF
0aW9uIHRleHQgZm9yIGFsbCByb3dzIHdpdGhpbiB0aGlzIHRhYmxlLgoJCQkJJHF1ZXJ5ICAgICAgID0gIl
NFTEVDVCAqIEZST00gYCR0YWJsZWAgTElNSVQgIiAuICRyb3dzX3N0YXJ0IC4gJywnIC4gJG1heF9yb3dzX
3Blcl9zZWxlY3Q7CgkJCQkkdGFibGVfcXVlcnkgPSAkd3BkYi0+Z2V0X3Jlc3VsdHMoICRxdWVyeSwgQVJS
QVlfTiApOwoJCQkJJHJvd3Nfc3RhcnQgKz0gJG1heF9yb3dzX3Blcl9zZWxlY3Q7IC8vIE5leHQgbG9vcCB
3ZSB3aWxsIGJlZ2luIGF0IHRoaXMgb2Zmc2V0LgoJCQkJaWYgKCBmYWxzZSA9PT0gJHRhYmxlX3F1ZXJ5IC
kgewoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFUlJPUiAjODU0NDk3NDUuIFVuY
WJsZSB0byByZXRyaWV2ZSBkYXRhIGZyb20gdGFibGUgYCcgLiAkdGFibGUgLiAnYC4gVGhpcyB0YWJsZSBt
YXkgYmUgY29ycnVwdCAodHJ5IHJlcGFpcmluZyB0aGUgZGF0YWJhc2UpIG9yIHRvbyBsYXJnZSB0byBob2x
kIGluIG1lbW9yeSAoaW5jcmVhc2UgbXlzcWwgYW5kL29yIFBIUCBtZW1vcnkpLiBDaGVjayB5b3VyIFBIUC
BlcnJvciBsb2cgZm9yIGZ1cnRoZXIgZXJyb3JzIHdoaWNoIG1heSBwcm92aWRlIGZ1cnRoZXIgaW5mb3JtY
XRpb24uIE5vdCBjb250aW51aW5nIGRhdGFiYXNlIGR1bXAgdG8gaW5zdXJlIGJhY2t1cCBpbnRlZ3JpdHku
JyApOwoJCQkJCXJldHVybiBmYWxzZTsKCQkJCX0KCQkJCSR0YWJsZV9jb3VudCA9IGNvdW50KCAkdGFibGV
fcXVlcnkgKTsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0dvdCBgJyAuICR0YW
JsZV9jb3VudCAuICdgIHJvd3MgZnJvbSBgJyAuICR0YWJsZSAuICdgIG9mIGAnIC4gJG1heF9yb3dzX3Blc
l9zZWxlY3QgLiAnYCBtYXguJyApOwoJCQkJaWYgKCAwID09ICR0YWJsZV9jb3VudCB8fCAkdGFibGVfY291
bnQgPCAkbWF4X3Jvd3NfcGVyX3NlbGVjdCApIHsKCQkJCQkkcm93c19yZW1haW4gPSBmYWxzZTsKCQkJCX0
KCgkJCQkkY29sdW1ucyAgICA9ICR3cGRiLT5nZXRfY29sX2luZm8oKTsKCQkJCSRudW1fZmllbGRzID0gY2
91bnQoICRjb2x1bW5zICk7CgkJCQlmb3JlYWNoICggJHRhYmxlX3F1ZXJ5IGFzICRmZXRjaF9yb3cgKSB7C
gkJCQkJJGluc2VydF9zcWwgLj0gIklOU0VSVCBJTlRPIGAkdGFibGVgIFZBTFVFUygiOwoJCQkJCWZvciAo
ICRuID0gMTsgJG4gPD0gJG51bV9maWVsZHM7ICRuKysgKSB7CgkJCQkJCSRtID0gJG4gLSAxOwoKCQkJCQk
JaWYgKCBudWxsID09PSAkZmV0Y2hfcm93WyAkbSBdICkgewoJCQkJCQkJJGluc2VydF9zcWwgLj0gJ05VTE
wsICc7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQkkaW5zZXJ0X3NxbCAuPSAiJyIgLiBiYWNrdXBidWRkeV9jb
3JlOjpkYkVzY2FwZSggJGZldGNoX3Jvd1sgJG0gXSApIC4gIicsICI7CgkJCQkJCX0KCQkJCQl9CgkJCQkJ
JGluc2VydF9zcWwgID0gc3Vic3RyKCAkaW5zZXJ0X3NxbCwgMCwgLTIgKTsKCQkJCQkkaW5zZXJ0X3NxbCA
uPSAiKTtcbiI7CgoJCQkJCSR3cml0ZV9yZXR1cm4gPSBmd3JpdGUoICRmaWxlX2hhbmRsZSwgJGluc2VydF
9zcWwgKTsKCQkJCQlpZiAoIGZhbHNlID09PSAkd3JpdGVfcmV0dXJuIHx8IDAgPT0gJHdyaXRlX3JldHVyb
iApIHsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICM4NDM5NDg6IFVu
YWJsZSB0byB3cml0ZSB0byBTUUwgZmlsZS4gUmV
0dXJuIGVycm9yL2J5dGVzIHdyaXR0ZW46IGAnIC4gJHdyaXRlX3JldHVybiAuICdgLicgKTsKCQkJCQkJQG
ZjbG9zZSggJGZpbGVfaGFuZGxlICk7CgkJCQkJCXJldHVybiBmYWxzZTsKCQkJCQl9CgkJCQkJJGluc2Vyd
F9zcWwgPSAnJzsKCgkJCQkJJF9jb3VudCsrOwoKCQkJCQkvLyBTaG93IGEgaGVhcnRiZWF0IHRvIGtlZXAg
dXNlciB1cCB0byBkYXRlIFthbmQgZW50ZXJ0YWluZWQgOyldLgoJCQkJCWlmICggMCA9PT0gJF9jb3VudCA
lIHNlbGY6OkhFQVJUQkVBVF9DT1VOVF9MSU1JVCB8fCAwID09PSAkX2NvdW50ICUgY2VpbCggJG1heF9yb3
dzX3Blcl9zZWxlY3QgLyAyICkgKSB7IC8vIERpc3BsYXkgZXZlcnkgWCBxdWVyaWVzIGJhc2VkIG9uIGhlY
XJ0YmVhdCBPUiBhdCBsZWFzdCBkaXNwbGF5IGV2ZXJ5IGhhbGYgbWF4IHJvd3MgcGVyIHNlbGVjdC4KCQkJ
CQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnV29ya2luZy4uLiBEdW1wZWQgYCcgLiA
kX2NvdW50IC4gJ2Agcm93cyBmcm9tIGAnIC4gJHRhYmxlIC4gJ2Agc28gZmFyLicgKTsKCQkJCQl9CgkJCQ
l9IC8vIGVuZCBmb3JlYWNoIHRhYmxlIHJvdy4KCgkJCQlpZiAoIGZhbHNlID09PSAkcm93c19yZW1haW4gK
SB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRHVtcGVkIGAnIC4gJF9jb3Vu
dCAuICdgIHJvd3MgdG90YWwgZnJvbSBgJyAuICR0YWJsZSAuICdgLiBObyByb3dzIHJlbWFpbi4nICk7Cgk
JCQl9IGVsc2UgewoJCQkJCWlmICggKCBtaWNyb3RpbWUoIHRydWUgKSAtICRsYXN0X2ZpbGVfc2l6ZV9vdX
RwdXQgKSA+ICRvdXRwdXRfZmlsZV9zaXplX2V2ZXJ5X21heCApIHsgLy8gSXQncyBiZWVuIGxvbmcgZW5vd
WdoIHRvIGdldCB0aGUgY3VycmVudCBmaWxlIHNpemUgb2YgU1FMIGZpbGUuCgkJCQkJCS8vIERpc3BsYXkg
ZmluYWwgU1FMIGZpbGUgc2l6ZS4KCQkJCQkJJHNxbF9maWxlc2l6ZSA9IHBiX2JhY2t1cGJ1ZGR5OjokZm9
ybWF0LT5maWxlX3NpemUoIGZpbGVzaXplKCAkb3V0cHV0X2ZpbGUgKSApOwoJCQkJCQlwYl9iYWNrdXBidW
RkeTo6c3RhdHVzKCAnZGV0YWlscycsICdDdXJyZW50IGRhdGFiYXNlIGR1bXAgZmlsZSBgJyAuIGJhc2VuY
W1lKCAkb3V0cHV0X2ZpbGUgKSAuICdgIHNpemU6ICcgLiAkc3FsX2ZpbGVzaXplIC4gJy4nICk7CgkJCQkJ
CSRsYXN0X2ZpbGVfc2l6ZV9vdXRwdXQgPSBtaWNyb3RpbWUoIHRydWUgKTsKCQkJCQl9CgoJCQkJCS8vIEl
mIHdlIGFyZSB3aXRoaW4gWCBzZWNvbmRzIChzZWxmOjpUSU1FX1dJR0dMRV9ST09NKSBvZiByZWFjaGluZy
BtYXhpbXVtIFBIUCBydW50aW1lIEFORCByb3dzIHJlbWFpbiB0aGVuIHN0b3AgaGVyZSBhbmQgQ0hVTksgc
28gdGhhdCBpdCBjYW4gYmUgcGlja2VkIHVwIGluIGFub3RoZXIgUEhQIHByb2Nlc3MuLi4KCQkJCQlpZiAo
ICctMScgIT0gJHRoaXMtPl9tYXhFeGVjdXRpb25UaW1lICkgewoJCQkJCQlpZiAoICggKCBtaWNyb3RpbWU
oIHRydWUgKSAtIHBiX2JhY2t1cGJ1ZGR5Ojokc3RhcnRfdGltZSApICsgc2VsZjo6VElNRV9XSUdHTEVfUk
9PTSApID49ICR0aGlzLT5fbWF4RXhlY3V0aW9uVGltZSApIHsgLy8gdXNlZCB0byB1c2UgJHRoaXMtPnRpb
WVfc3RhcnQgYnV0IHRoaXMgZGlkIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aW1lIHVzZWQgcHJpb3IgdG8g
ZGIgc3RlcC4KCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0FwcHJvYWNoaW5
nIGxpbWl0IG9mIGF2YWlsYWJsZSBQSFAgY2h1bmtpbmcgdGltZSBvZiBgJyAuICR0aGlzLT5fbWF4RXhlY3
V0aW9uVGltZSAuICdgIHNlYy4gUEhQIHJhbiBmb3IgJyAuIHJvdW5kKCBtaWNyb3RpbWUoIHRydWUgKSAtI
HBiX2JhY2t1cGJ1ZGR5Ojokc3RhcnRfdGltZSwgMyApIC4gJyBzZWMsIGRhdGFiYXNlIGR1bXBpbmcgcmFu
IGZvciAnIC4gcm91bmQoIG1pY3JvdGltZSggdHJ1ZSApIC0gJHRoaXMtPnRpbWVfc3RhcnQsIDMgKSAuICc
gc2VjIGhhdmluZyBkdW1wZWQgYCcgLiAkX2NvdW50IC4gJ2Agcm93cy4gUHJvY2VlZGluZyB0byB1c2UgY2
h1bmtpbmcgb24gcmVtYWluaW5nIHRhYmxlczogJyAuIGltcGxvZGUoICcsJywgJHJlbWFpbmluZ190YWJsZ
XMgKSApOwoJCQkJCQkJQGZjbG9zZSggJGZpbGVfaGFuZGxlICk7CgkJCQkJCQlyZXR1cm4gYXJyYXkoICRy
ZW1haW5pbmdfdGFibGVzLCAkcm93c19zdGFydCApOwoJCQkJCQl9IC8vIEVuZCBpZi4KCQkJCQl9CgkJCQl
9CgoJCQkJLy8gVmVyaWZ5IGRhdGFiYXNlIGlzIHN0aWxsIGNvbm5lY3RlZCBhbmQgd29ya2luZyBwcm9wZX
JseS4gU29tZXRpbWVzIG15c3FsIHJ1bnMgb3V0IG9mIG1lbW9yeSBhbmQgZGllcyBpbiB0aGUgYWJvdmUgZ
m9yZWFjaC4KCQkJCS8vIE5vIHBvaW50IGluIHJlY29ubmVjdGluZyBhcyB3ZSBjYW4gTk9UIHRydXN0IHRo
YXQgb3VyIGR1bXAgd2FzIHN1Y2Nlc2Z1bCBhbnltb3JlIChpdCBtb3N0IGxpa2VseSB3YXMgbm90KS4KCQk
JCWlmICggaXNzZXQoICRkYmhlbHBlciApICkgewoJCQkJCWlmICggISAkZGJoZWxwZXItPmtpY2soKSApIH
sKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgX18oICdFUlJPUiAjOTAyNjogVGhlI
G15U1FMIHNlcnZlciB3ZW50IGF3YXkgdW5leHBlY3RlZGx5IGR1cmluZyBkYXRhYmFzZSBkdW1wIG9mIHRh
YmxlIGAnIC4gJHRhYmxlIC4gJ2AuIFRoaXMgaXMgYWxtb3N0IGFsd2F5cyBjYXVzZWQgYnkgbXlTUUwgcnV
ubmluZyBvdXQgb2YgbWVtb3J5LiBUaGUgYmFja3VwIGludGVncml0eSBjYW4gbm8gbG9uZ2VyIGJlIGd1YX
JhbnRlZWQgc28gdGhlIGJhY2t1cCBoYXMgYmVlbiBoYWx0ZWQuJyApIC4gJyAnIC4gX18oICdMYXN0IHRhY
mxlIGR1bXBlZCBiZWZvcmUgZGF0YWJhc2Ugc2VydmVyIHdlbnQgYXdheTogJyApIC4gJ2AnIC4gJHRhYmxl
IC4gJ2AuJyApOwoJCQkJCQlAZmNsb3NlKCAkZmlsZV9oYW5kbGUgKTsKCQkJCQkJcmV0dXJuIGZhbHNlOwo
JCQkJCX0KCQkJCX0gZWxzZSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRG
F0YWJhc2Uga2lja2VyIHVuYXZhaWxhYmxlIHNvIGNvbm5lY3Rpb24gc3RhdHVzIHVudmVyaWZpZWQuJyApO
woJCQkJfQoJCQl9IC8vIEVuZCB3aGlsZSByb3dzIHJlbWFpbi4KCgkJCS8vIFJlbW92ZSB0aGUgY3VycmVu
dCB0YWJsZSBmcm9tIHRoZSBsaXN0IG9mIHRhYmxlcyB0byBkdW1wIGFzIGl0IGlzIGRvbmUuCgkJCXVuc2V
0KCAkcmVtYWluaW5nX3RhYmxlc1sgJHRhYmxlX2tleSBdICk7CgoJCQkvLyBSZS1lbmFibGUga2V5cyBmb3
IgdGhpcyB0YWJsZS4KCQkJJGluc2VydF9zcWwgIC49ICIvKiE0MDAwMCBBTFRFUiBUQUJMRSBgeyR0YWJsZ
X1gIEVOQUJMRSBLRVlTICovO1xuIjsKCQkJJGluc2VydF9zcWwgIC49ICJTRVQgRk9SRUlHTl9LRVlfQ0hF
Q0tTID0gMTtcbiI7CgkJCSRpbnNlcnRfc3FsICAuPSAiU0VUIFVOSVFVRV9DSEVDS1MgPSAxO1xuIjsKCQk
JJHdyaXRlX3JldHVybiA9IGZ3cml0ZSggJGZpbGVfaGFuZGxlLCAkaW5zZXJ0X3NxbCApOwoJCQlpZiAoIG
ZhbHNlID09PSAkd3JpdGVfcmV0dXJuIHx8IDAgPT0gJHdyaXRlX3JldHVybiApIHsKCQkJCXBiX2JhY2t1c
GJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjODQzOTQ4OiBVbmFibGUgdG8gd3JpdGUgdG8gU1FM
IGZpbGUuIFJldHVybiBlcnJvci9ieXRlcyB3cml0dGVuOiBgJyAuICR3cml0ZV9yZXR1cm4gLiAnYC4nICk
7CgkJCQlAZmNsb3NlKCAkZmlsZV9oYW5kbGUgKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCQkkaW5zZX
J0X3NxbCA9ICcnOwoKCQkJQGZjbG9zZSggJGZpbGVfaGFuZGxlICk7CgoJCQlwYl9iYWNrdXBidWRkeTo6c
3RhdHVzKCAnZGV0YWlscycsICdGaW5pc2hlZCBkdW1waW5nIGRhdGFiYXNlIHRhYmxlIGAnIC4gJHRhYmxl
IC4gJ2AuJyApOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZmluaXNoVGFibGVEdW1wJywgJHRhYmx
lICk7CgkJCWlmICggaXNzZXQoICRvdXRwdXRfZmlsZSApICkgewoJCQkJJHN0YXRzID0gc3RhdCggJG91dH
B1dF9maWxlICk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdEYXRhYmFzZSBTU
UwgZHVtcCBmaWxlICgnIC4gYmFzZW5hbWUoICRvdXRwdXRfZmlsZSApIC4gJykgc2l6ZTogJyAuIHBiX2Jh
Y2t1cGJ1ZGR5OjokZm9ybWF0LT5maWxlX3NpemUoICRzdGF0c1snc2l6ZSddICkgKTsKCQkJCXBiX2JhY2t
1cGJ1ZGR5OjpzdGF0dXMoICdzcWxTaXplJywgJHN0YXRzWydzaXplJ10gKTsKCQkJfQoJCQlwYl9iYWNrdX
BidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdBYm91dCB0byBmbHVzaC4uLicgKTsKCQkJcGJfYmFja3VwY
nVkZHk6OmZsdXNoKCk7CgoJCX0gLy8gZW5kIGZvcmVhY2ggdGFibGUuCgoJCUBmY2xvc2UoICRmaWxlX2hh
bmRsZSApOwoJCXVuc2V0KCAkZmlsZV9oYW5kbGUgKTsKCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2R
ldGFpbHMnLCBfXyggJ0ZpbmlzaGVkIFBIUCBiYXNlZCBTUUwgZHVtcCBtZXRob2QuIFJhbiBmb3IgJyAuIH
JvdW5kKCBtaWNyb3RpbWUoIHRydWUgKSAtICR0aGlzLT50aW1lX3N0YXJ0LCAzICkgLiAnIHNlYy4nLCAna
XQtbDEwbi1iYWNrdXBidWRkeScgKSApOwoJCXJldHVybiB0cnVlOwoKCX0gLy8gRW5kIF9waHBkdW1wKCku
CgoKCS8qKgoJICogR2V0IGFuIGFycmF5IG9mIG1ldGhvZHMuIE5vdGU6IElmIGZvcmNlIG92ZXJyaWRpbmc
gbWV0aG9kcyB0aGVuIGRldGVjdGVkIG1ldGhvZHMgd2lsbCBub3QgYmUgYWJsZSB0byBkaXNwbGF5LgoJIC
oKCSAqIEByZXR1cm4gYXJyYXkgIEFycmF5IG9mIG1ldGhvZHMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZ
XRfbWV0aG9kcygpIHsKCQlyZXR1cm4gJHRoaXMtPl9tZXRob2RzOwoJfQoKCS8qKgoJICogSW1wb3J0IFNR
TCBjb250ZW50cyBvZiBhIC5zcWwgZmlsZSBpbnRvIHRoZSBkYXRhYmFzZS4gT25seSBtb2RpZmljYXRpb24
gaXMgdG8gdGFibGUgcHJlZml4IGlmIG5lZWRlZC4gUHJlZml4ZXMgKG5ldyBhbmQgb2xkKSBwcm92aWRlZC
BpbiBjb25zdHJ1Y3Rvci4KCSAqIEF1dG9tYXRpY2FsbHkgaGFuZGxlcyBmYWxsYmFjayBiYXNlZCBvbiBiZ
XN0IGF2YWlsYWJsZSBtZXRob2RzLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHNxbF9maWxlICAgICAgICAg
RnVsbCBhYnNvbHV0ZSBwYXRoIHRvIC5zcWwgZmlsZSB0byBpbXBvcnQgZnJvbS4KCSAqIEBwYXJhbSBzdHJ
pbmcgJG9sZF9wcmVmaXggICAgICAgT2xkIGRhdGFiYXNlIHByZWZpeC4gTmV3IHByZWZpeCBwcm92aWRlZC
BpbiBjb25zdHJ1Y3Rvci4KCSAqIEBwYXJhbSBpbnQgICAgJHF1ZXJ5X3N0YXJ0ICAgICAgUXVlcnkgbnVtY
mVyIChha2EgbGluZSBudW1iZXIpIHRvIHJlc3VtZSBpbXBvcnQgYXQuCgkgKiBAcGFyYW0gYm9vbCAgICRp
Z25vcmVfZXhpc3RpbmcgIE5PVEU6IEJhc2ljYWxseSBpZ25vcmVzIG15c3FsIGVycm9ycyB0aGVzZSBkYXl
zLiBQYXN0IHB1cnBvc2U6IFdoZXRoZXIgb3Igbm90IHRvIGFsbG93IGltcG9ydCBpZiB0YWJsZXMgZXhpc3
QgYWxyZWFkeS4gRGVmYXVsdDogZmFsc2UuCgkgKgoJICogQHJldHVybiBtaXhlZCAgdHJ1ZSBvbiBzdWNjZ
XNzIChib29sZWFuKSwgZmFsc2Ugb24gZmFpbHVyZSAoYm9vbGVhbiksIGludGVnZXIgKGludCkgb24gbmVl
ZGluZyBhIHJlc3Vtc2UgKGludGVnZXIgaXMgcmVzdW1lIG51bWJlciBmb3IgbmV4dCBwYWdlIGxvYWRzICR
xdWVyeV9zdGFydCkuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpbXBvcnQoICRzcWxfZmlsZSwgJG9sZF9wcm
VmaXgsICRxdWVyeV9zdGFydCA9IDAsICRpZ25vcmVfZXhpc3RpbmcgPSBmYWxzZSApIHsKCQkkcmV0dXJuI
CAgICAgICAgICAgICAgICAgPSBmYWxzZTsKCQkkdGhpcy0+X2N1cnJlbnRfc3FsX2ZpbGUgPSAkc3FsX2Zp
bGU7CgoJCS8vIFJlcXVpcmUgYSBuZXcgdGFibGUgcHJlZml4LgoJCWlmICggJycgPT0gJHRoaXMtPl9kYXR
hYmFzZV9wcmVmaXggKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFUlJPUiA5MD
A4OiBBIGRhdGFiYXNlIHByZWZpeCBpcyByZXF1aXJlZCBmb3IgaW1wb3J0aW5nLicgKTsKCQl9CgoJCWlmI
CggJHF1ZXJ5X3N0YXJ0ID4gMCApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAn
Q29udGludWluZyB0byByZXN0b3JlIGRhdGFiYXNlIGR1bXAgc3RhcnRpbmcgYXQgZmlsZSBsb2NhdGlvbiB
gJyAuICRxdWVyeV9zdGFydCAuICdgLicgKTsKCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdH
VzKCAnbWVzc2FnZScsICdSZXN0b3JpbmcgZGF0YWJhc2UgZHVtcC4gVGhpcyBtYXkgdGFrZSBhIG1vbWVud
C4uLicgKTsKCQl9CgoJCWlmICggdHJ1ZSA9PT0gJGlnbm9yZV9leGlzdGluZyApIHsKCQkJcGJfYmFja3Vw
YnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnT3B0aW9uIHNldCB0byBpZ25vcmUgbXlzcWwgZXJyb3JzL2V
4aXN0aW5nIHRhYmxlcy4nICk7CgkJfQoKCQlnbG9iYWwgJHdwZGI7CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdG
F0dXMoICdtZXNzYWdlJywgJ1N0YXJ0aW5nIGRhdGFiYXNlIGltcG9ydCBwcm9jZWR1cmUuJyApOwoJCWlmI
CggJy0xJyA9PSAkdGhpcy0+X21heEV4ZWN1dGlvblRpbWUgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0
dXMoICdkZXRhaWxzJywgJ0RhdGFiYXNlIG1heCBleGVjdXRpb24gdGltZSBjaHVua2luZyBkaXNhYmxlZCB
iYXNlZCBvbiAtMSBwYXNzZWQuJyApOwoJCX0gZWxzZSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoIC
dkZXRhaWxzJywgJ215c3FsYnVkZHk6IE1heGltdW0gZXhlY3V0aW9uIHRpbWUgZm9yIHRoaXMgcnVuOiAnI
C4gJHRoaXMtPl9tYXhFeGVjdXRpb25UaW1lIC4gJyBzZWNvbmRzLicgKTsKCQl9CgkJcGJfYmFja3VwYnVk
ZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogT2xkIHByZWZpeDogYCcgLiAkb2xkX3ByZWZ
peCAuICdgOyBOZXcgcHJlZml4OiBgJyAuICR0aGlzLT5fZGF0YWJhc2VfcHJlZml4IC4gJ2AuJyApOwoJCX
BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgIm15c3FsYnVkZHk6IEltcG9ydGluZyBTUUwgZ
mlsZTogYHskc3FsX2ZpbGV9YC4gT2xkIHByZWZpeDogYHskb2xkX3ByZWZpeH1gLiBRdWVyeSBzdGFydDog
YHskcXVlcnlfc3RhcnR9YC4iICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQWJ
vdXQgdG8gZmx1c2guLi4nICk7CgkJcGJfYmFja3VwYnVkZHk6OmZsdXNoKCk7CgoJCS8vIEF0dGVtcHQgZW
FjaCBtZXRob2QgaW4gb3JkZXIuCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUHJlc
GFyaW5nIHRvIGltcG9ydCB1c2luZyBhdmFpbGFibGUgbWV0aG9kKHMpIGJ5IHByaW9yaXR5LiBCYXNpbmcg
aW1wb3J0IG1ldGhvZHMgb2ZmIGR1bXAgbWV0aG9kczogYCcgLiBpbXBsb2RlKCAnLCcsICR0aGlzLT5fbWV
0aG9kcyApIC4gJ2AnICk7CgkJZm9yZWFjaCAoIC
R0aGlzLT5fbWV0aG9kcyBhcyAkbWV0aG9kICkgewoJCQlpZiAoIG1ldGhvZF9leGlzdHMoICR0aGlzLCAiX
2ltcG9ydF97JG1ldGhvZH0iICkgKSB7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycs
ICdteXNxbGJ1ZGR5OiBBdHRlbXB0aW5nIGltcG9ydCBtZXRob2QgYCcgLiAkbWV0aG9kIC4gJ2AuJyApOwo
JCQkJJHJlc3VsdCA9IGNhbGxfdXNlcl9mdW5jKCBhcnJheSggJHRoaXMsICJfaW1wb3J0X3skbWV0aG9kfS
IgKSwgJHNxbF9maWxlLCAkb2xkX3ByZWZpeCwgJHF1ZXJ5X3N0YXJ0LCAkaWdub3JlX2V4aXN0aW5nICk7C
goJCQkJaWYgKCB0cnVlID09PSAkcmVzdWx0ICkgeyAvLyBEdW1wIGNvbXBsZXRlZCBzdWNjZXNmdWxseSB3
aXRoIHRoaXMgbWV0aG9kLgoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ215c3F
sYnVkZHk6IEltcG9ydCBtZXRob2QgYCcgLiAkbWV0aG9kIC4gJ2AgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS
4nICk7CgkJCQkJJHJldHVybiA9IHRydWU7CgkJCQkJYnJlYWs7CgkJCQl9IGVsc2VpZiAoIGZhbHNlID09P
SAkcmVzdWx0ICkgeyAvLyBEdW1wIGZhaWxlZCB0aGlzIG1ldGhvZC4gV2lsbCB0cnkgY29tcGF0aWJpbGl0
eSBmYWxsYmFjayB0byBuZXh0IG1vZGUgaWYgYWJsZS4KCQkJCQkvLyBEbyBub3RoaW5nLiBXaWxsIHRyeSB
uZXh0IG1vZGUgbmV4dCBsb29wLgoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ2
15c3FsYnVkZHk6IEltcG9ydCBtZXRob2QgYCcgLiAkbWV0aG9kIC4gJ2AgZmFpbGVkLiBUcnlpbmcgYW5vd
GhlciBjb21wYXRpYmlsaXR5IG1vZGUgbmV4dCBpZiBhYmxlLicgKTsKCQkJCX0gZWxzZSB7IC8vIFNvbWV0
aGluZyBlbHNlIHJldHVybmVkOyB1c2VkIGZvciByZXN1bWluZyAoaW50ZWdlcikgb3IgYSBtZXNzYWdlICh
zdHJpbmcpLgoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ215c3FsYnVkZHk6IE
5vbi1ib29sZWFuIHJlc3BvbnNlICh1c3VhbGx5IG1lYW5zIHJlc3VtZSBpcyBuZWVkZWQpOiBgJyAuIGltc
GxvZGUoICcsJywgJHJlc3VsdCApIC4gJ2AnICk7CgkJCQkJcmV0dXJuICRyZXN1bHQ7IC8vIERvbnQgZmFs
bGJhY2sgaWYgdGhpcyBoYXBwZW5zLiBVc3VhbGx5IG1lYW5zIHJlc3VtZSBpcyBuZWVkZWQgdG8gZmluaXN
oLgoJCQkJfQoJCQl9CgkJfQoKCQlpZiAoIHRydWUgPT09ICRyZXR1cm4gKSB7IC8vIFN1Y2Nlc3MuCgkJCX
BiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ0RhdGFiYXNlIGltcG9ydCBvZiBgJyAuIGJhc
2VuYW1lKCAkc3FsX2ZpbGUgKSAuICdgIHN1Y2NlZWRlZC4nICk7CgkJCXJldHVybiB0cnVlOwoJCX0gZWxz
ZSB7IC8vIE92ZXJhbGwgZmFpbHVyZS4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0R
hdGFiYXNlIGltcG9ydCBwcm9jZWR1cmUgZGlkIG5vdCBjb21wbGV0ZSBvciBmYWlsZWQuJyApOwoJCQlyZX
R1cm4gZmFsc2U7CgkJfQoKCX0gLy8gRW5kIGltcG9ydCgpLgoKCgkvKioKCSAqIEltcG9ydCB2aWEgY29tb
WFuZGxpbmUKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRzcWxfZmlsZSAgICAgICAgIEZ1bGwgYWJzb2x1dGUg
cGF0aCB0byAuc3FsIGZpbGUgdG8gaW1wb3J0IGZyb20uCgkgKiBAcGFyYW0gc3RyaW5nICRvbGRfcHJlZml
4ICAgICAgIE9sZCBkYXRhYmFzZSBwcmVmaXguIE5ldyBwcmVmaXggcHJvdmlkZWQgaW4gY29uc3RydWN0b3
IuCgkgKiBAcGFyYW0gaW50ICAgICRxdWVyeV9zdGFydCAgICAgIFF1ZXJ5IG51bWJlciAoYWthIGxpbmUgb
nVtYmVyKSB0byByZXN1bWUgaW1wb3J0IGF0LgoJICogQHBhcmFtIGJvb2wgICAkaWdub3JlX2V4aXN0aW5n
ICBOT1RFOiBCYXNpY2FsbHkgaWdub3JlcyBteXNxbCBlcnJvcnMgdGhlc2UgZGF5cy4gUGFzdCBwdXJwb3N
lOiBXaGV0aGVyIG9yIG5vdCB0byBhbGxvdyBpbXBvcnQgaWYgdGFibGVzIGV4aXN0IGFscmVhZHkuIERlZm
F1bHQ6IGZhbHNlLgoJICoKCSAqIEByZXR1cm4gYm9vbCAgSWYgc3VjY2Vzc2Z1bCBvciBub3QuCgkgKi8KC
XB1YmxpYyBmdW5jdGlvbiBfaW1wb3J0X2NvbW1hbmRsaW5lKCAkc3FsX2ZpbGUsICRvbGRfcHJlZml4LCAk
cXVlcnlfc3RhcnQgPSAwLCAkaWdub3JlX2V4aXN0aW5nID0gZmFsc2UgKSB7CgkJcGJfYmFja3VwYnVkZHk
6OnN0YXR1cyggJ2RldGFpbHMnLCAnbXlzcWxidWRkeTogUHJlcGFyaW5nIHRvIHJ1biBjb21tYW5kIGxpbm
UgbXlzcWwgaW1wb3J0IHZpYSBleGVjKCkuJyApOwoKCQkvLyBJZiBwcmVmaXggaGFzIGNoYW5nZWQgdGhlb
iBuZWVkIHRvIHVwZGF0ZSB0aGUgZmlsZS4KCQlpZiAoICRvbGRfcHJlZml4ICE9ICR0aGlzLT5fZGF0YWJh
c2VfcHJlZml4ICkgewoJCQlpZiAoICEgaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5OjokY2xhc3Nlc1sndGV4dHJ
lcGxhY2VidWRkeSddICkgKSB7CgkJCQlyZXF1aXJlX29uY2UgcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYX
RoKCkgLiAnL2xpYi90ZXh0cmVwbGFjZWJ1ZGR5L3RleHRyZXBsYWNlYnVkZHkucGhwJzsKCQkJCXBiX2JhY
2t1cGJ1ZGR5OjokY2xhc3Nlc1sndGV4dHJlcGxhY2VidWRkeSddID0gbmV3IHBiX2JhY2t1cGJ1ZGR5X3Rl
eHRyZXBsYWNlYnVkZHkoKTsKCQkJfTsKCQkJcGJfYmFja3VwYnVkZHk6OiRjbGFzc2VzWyd0ZXh0cmVwbGF
jZWJ1ZGR5J10tPnNldF9tZXRob2RzKCBhcnJheSggJ2NvbW1hbmRsaW5lJyApICk7IC8vIGRvbnQgZmFsbG
JhY2sgaW50byB0ZXh0IHZlcnNpb24gaGVyZS4KCgkJCSRyZWdleF9jb25kaXRpb24gPSAiKElOU0VSVCBJT
lRPfENSRUFURSBUQUJMRXxSRUZFUkVOQ0VTfENPTlNUUkFJTlR8QUxURVIgVEFCTEUpIChgPyl7JG9sZF9w
cmVmaXh9KGA/KSI7CgkJCXBiX2JhY2t1cGJ1ZGR5OjokY2xhc3Nlc1sndGV4dHJlcGxhY2VidWRkeSddLT5
zdHJpbmdfcmVwbGFjZSggJHNxbF9maWxlLCAkb2xkX3ByZWZpeCwgJHRoaXMtPl9kYXRhYmFzZV9wcmVmaX
gsICRyZWdleF9jb25kaXRpb24gKTsKCgkJCSRzcWxfZmlsZSA9ICRzcWxfZmlsZSAuICcudG1wJzsgLy8gT
mV3IFNRTCBmaWxlIGNyZWF0ZWQgYnkgdGV4dHJlcGxhY2VidWRkeS4KCQl9CgoJCS8qKiBCZWdpbiBwcmVw
YXJpbmcgY29tbWFuZCAqLwoJCS8vIEhhbmRsZSBXaW5kb3dzIHdhbnRpbmcgLmV4ZS4gTm90ZTogZXhlY3V
0YWJsZSBkaXJlY3RvcnkgcGF0aCBpcyBwcmVwZW5kZWQgb24gZXhlYygpIGxpbmUgb2YgY29kZS4KCQkkY2
9tbWFuZCA9ICdteXNxbCc7CgkJaWYgKCBzdHJpc3RyKCBQSFBfT1MsICdXSU4nICkgJiYgISBzdHJpc3RyK
CBQSFBfT1MsICdEQVJXSU4nICkgKSB7IC8vIFJ1bm5pbmcgV2luZG93cy4gKG5vdCBkYXJ3aW4pLgoJCQkk
Y29tbWFuZCA9ICdtc3FsLmV4ZSc7CgkJfQoKCQkvLyBIYW5kbGUgcG9zc2libGUgc29ja2V0cy4KCQlpZiA
oICcnICE9ICR0aGlzLT5fZGF0YWJhc2Vfc29ja2V0ICkgewoJCQkkY29tbWFuZCAuPSAiIC0tc29ja2V0PX
skdGhpcy0+X2RhdGFiYXNlX3NvY2tldH0iOwoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlsc
ycsICdteXNxbGJ1ZGR5OiBVc2luZyBzb2NrZXRzIGluIGNvbW1hbmQuJyApOwoJCX0KCgkJLy8gU2V0IGRl
ZmF1bHQgY2hhcnNldCBpZiBhdmFpbGFibGUuCgkJZ2xvYmFsICR3cGRiOwoJCWlmICggaXNzZXQoICR3cGR
iICkgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ3dwZGIgY2hhcnNldCBvdm
VycmlkZSBmb3IgY29tbWFuZGxpbmU6ICcgLiAkd3BkYi0+Y2hhcnNldCApOwoJCQkkY29tbWFuZCAuPSAnI
C0tZGVmYXVsdC1jaGFyYWN0ZXItc2V0PScgLiAkd3BkYi0+Y2hhcnNldDsKCQl9CgoJCSRjb21tYW5kIC49
ICcgLS1ob3N0PScgLiBlc2NhcGVzaGVsbGFyZyggJHRoaXMtPl9kYXRhYmFzZV9ob3N0ICkgLiAnIC0tdXN
lcj0nIC4gZXNjYXBlc2hlbGxhcmcoICR0aGlzLT5fZGF0YWJhc2VfdXNlciApIC4gJyAtLXBhc3N3b3JkPS
cgLiBlc2NhcGVzaGVsbGFyZyggJHRoaXMtPl9kYXRhYmFzZV9wYXNzICkgLiAnICcgLiBlc2NhcGVzaGVsb
GFyZyggJHRoaXMtPl9kYXRhYmFzZV9uYW1lICkgLiAiIDI+JjEgPCB7JHNxbF9maWxlfSI7IC8vIDI+JjEg
cmVkaXJlY3QgU1RERVJSIHRvIFNURE9VVC4KCQkvKiogRW5kIHByZXBhcmluZyBjb21tYW5kICovCgoJCS8
vIFJ1biBjb21tYW5kLgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ215c3FsYnVkZH
k6IFJ1bm5pbmcgaW1wb3J0IHZpYSBjb21tYW5kIGxpbmUgbmV4dC4nICk7CgkJbGlzdCggJGV4ZWNfb3V0c
HV0LCAkZXhlY19leGl0X2NvZGUgKSA9ICR0aGlzLT5fY29tbWFuZGJ1ZGR5LT5leGVjdXRlKCAkdGhpcy0+
X215c3FsX2RpcmVjdG9yeSAuICRjb21tYW5kICk7CgoJCS8vIFRPRE86IFJlbW92ZWQgbXlzcWwgcGluZ2l
uZyBoZXJlLiBEbyB3ZSBuZWVkIChvciBldmVuIHdhbnQpIHRoYXQgaGVyZT8KCQkvLyBDaGVjayB0aGUgcm
VzdWx0IG9mIHRoZSBleGVjdXRpb24uCgkJaWYgKCAnMCcgPT0gJGV4ZWNfZXhpdF9jb2RlICkgewoJCQlwY
l9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdteXNxbGJ1ZGR5OiBDb21tYW5kIGFwcGVhcnMg
dG8gc3VjY2VlZGVkIGFuZCByZXR1cm5lZCBwcm9wZXIgcmVzcG9uc2UuJyApOwoJCQlyZXR1cm4gdHJ1ZTs
KCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnbXlzcWxidWRkeTogQ2
9tbWFuZCBkaWQgbm90IGV4aXQgbm9ybWFsbHkuIEZhbGxpbmcgYmFjayB0byBkYXRhYmFzZSBkdW1wIGNvb
XBhdGliaWxpdHkgbW9kZXMuJyApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQkvLyBTaG91bGQgbmV2ZXIg
Z2V0IHRvIGhlcmUuCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ215c3FsYnVkZHk6IFV
uY2F1Z2h0IGV4Y2VwdGlvbiAjNDMzMDUzODkwLicgKTsKCQlyZXR1cm4gZmFsc2U7Cgl9IC8vIEVuZCBfaW
1wb3J0X2NvbW1hbmRsaW5lKCkuCgoKCgkvKioKCSAqIENoZWNrIGlmIHN0cmluZyBiZWdpbnMgd2l0aCBzc
GVjaWZpYyBjaGFyYWN0ZXJzCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc3RyaW5nICBTdHJpbmcgdG8gc2Vh
cmNoLgoJICogQHBhcmFtIHN0cmluZyAkc2VhcmNoICBDaGFyYWN0ZXJzIHRvIGNoZWNrIGlmIHNlYXJjaCB
zdHJpbmcgYmVnaW5zIHdpdGguCgkgKgoJICogQHJldHVybiBib29sICBXaGV0aGVyIG9yIG5vdCBpdCBiZW
dpbnMgd2l0aCB0aGUgc2VhcmNoIHN0cmluZy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHN0cmluZ19iZWdpb
nNfd2l0aCggJHN0cmluZywgJHNlYXJjaCApIHsKCQlyZXR1cm4gMCA9PSBzdHJuY21wKCAkc3RyaW5nLCAk
c2VhcmNoLCBzdHJsZW4oICRzZWFyY2ggKSApOwoJfQoKCS8qKgoJICogSW1wb3J0IGZyb20gLlNRTCBmaWx
lIGludG8gZGF0YWJhc2UgdmlhIFBIUCBieSByZWFkaW5nIGluIGZpbGUgbGluZSBieSBsaW5lLgoJICogVX
NpbmcgY29kZWJhc2UgZnJvbSBCYWNrdXBCdWRkeSAvIGltcG9ydGJ1ZGR5IDIueC4KCSAqCgkgKiBAc2VlI
GltcG9ydCgpCgkgKiBAc2luY2UgMi4wLjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRzcWxfZmlsZSAgICAg
ICAgIEZ1bGwgYWJzb2x1dGUgcGF0aCB0byAuc3FsIGZpbGUgdG8gaW1wb3J0IGZyb20uCgkgKiBAcGFyYW0
gc3RyaW5nICRvbGRfcHJlZml4ICAgICAgIE9sZCBkYXRhYmFzZSBwcmVmaXguIE5ldyBwcmVmaXggcHJvdm
lkZWQgaW4gY29uc3RydWN0b3IuCgkgKiBAcGFyYW0gc3RyaW5nICRyZXN1bWVfcG9pbnQgICAgIFBvaW50I
GF0IHdoaWNoIHRvIHJlc3VtZS4KCSAqIEBwYXJhbSBib29sICAgJGlnbm9yZV9leGlzdGluZyAgTk9URTog
QmFzaWNhbGx5IGlnbm9yZXMgbXlzcWwgZXJyb3JzIHRoZXNlIGRheXMuIFBhc3QgcHVycG9zZTogV2hldGh
lciBvciBub3QgdG8gYWxsb3cgaW1wb3J0IGlmIHRhYmxlcyBleGlzdCBhbHJlYWR5LiBEZWZhdWx0OiBmYW
xzZS4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUgb24gc3VjY2VzcyAoYW5kIGNvbXBsZXRpb24pLCBpb
mNvbXBsZXRlL2NodW5raW5nIHJlcXVpcmVkPSBhcnJheSggZmlsZSBwb2ludGVyW2ZvciByZXN1bWluZ10s
IHF1ZXJpZXMgc28gZmFyW2luZm9ybWF0aXZlIG9ubHldICksIGZhbHNlIG9uIGZhaWx1cmUuCgkgKi8KCXB
1YmxpYyBmdW5jdGlvbiBfaW1wb3J0X3BocCggJHNxbF9maWxlLCAkb2xkX3ByZWZpeCwgJHJlc3VtZV9wb2
ludCA9ICcnLCAkaWdub3JlX2V4aXN0aW5nID0gZmFsc2UgKSB7CgkJJHRoaXMtPnRpbWVfc3RhcnQgPSBta
WNyb3RpbWUoIHRydWUgKTsKCgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnU3RhcnRp
bmcgaW1wb3J0IG9mIFNRTCBkYXRhLi4uIFRoaXMgbWF5IHRha2UgYSBtb21lbnQuLi4nICk7CgkJcGJfYmF
ja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnTG9hZGluZyBTUUwgZnJvbSBmaWxlIGAnIC4gJHNxbF
9maWxlIC4gJ2AuJyApOwoKCQkvLyBPcGVuIFNRTCBmaWxlIGZvciByZWFkaW5nLgoJCSRmcyA9IEBmb3Blb
iggJHNxbF9maWxlLCAncicgKTsKCQlpZiAoIGZhbHNlID09PSAkZnMgKSB7CgkJCXBiX2JhY2t1cGJ1ZGR5
OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjOTAwOTogVW5hYmxlIHRvIGZpbmQgYW55IGRhdGFiYXNlIGJ
hY2t1cCBkYXRhIGluIHRoZSBzZWxlY3RlZCBiYWNrdXAgb3IgY291bGQgbm90IG9wZW4gZmlsZSAocG9zc2
libHkgZHVlIHRvIHBlcm1pc3Npb25zKS4gVHJpZWQgb3BlbmluZyBmaWxlIGAnIC4gJHNxbF9maWxlIC4gJ
2AuIEVycm9yICM5MDA5LicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gSWYgY2h1bmtlZCByZXN1
bWluZyB0aGVuIHNlZWsgdG8gdGhlIGNvcnJlY3QgcGxhY2UgaW4gdGhlIGZpbGUuCgkJaWYgKCAnJyAhPSA
kcmVzdW1lX3BvaW50ICYmICRyZXN1bWVfcG9pbnQgPiAwICkgewoJCQlpZiAoIDAgIT09IGZzZWVrKCAkZn
MsICRyZXN1bWVfcG9pbnQgKSApIHsgLy8gUmV0dXJucyAwIG9uIHN1Y2Nlc3MuCgkJCQlwYl9iYWNrdXBid
WRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3IgIzk0ODM0NTM6IEZhaWxlZCB0byBzZWVrIFNRTCBmaWxl
IHRvIHJlc3VtZSBwb2ludCBgJyAuICRyZXN1bWVfcG9pbnQgLiAnYCB2aWEgZnNlZWsoKS4nICk7CgkJCQl
yZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoJCWdsb2JhbCAkd3BkYjsKCgkJLy8gVHVybiBvZmYgZm9yZWlnbi
BrZXkgY2hlY2tzLgoJCSRyZXN1bHRzID0gJHdwZGItPnF1ZXJ5KCAnU0VUIEZPUkVJR05fS0VZX0NIRUNLU
z0wOycgKTsKCQlpZiAoIGZhbHNlID09PSAkcmVzdWx0cyApIHsKCQkJaWYgKCBlbXB0eSggJHdwZGItPnVz
ZV9teXNxbGkgKSApIHsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ1dhcm5pbmc
gIzg0OTM4NDQ6ICcgLiBAbXlzcWxfZXJyb3IoICR3cGRiLT5kYmggKSApOwoJCQl9IGVsc2UgewoJCQkJcG
JfYmFja3VwYnVkZHk6OnN0YXR1cyggJ3dhcm5pb
mcnLCAnV2FybmluZyAjODQ5Mzg0NDogJyAuIEBteXNxbGlfZXJyb3IoKSApOwoJCQl9CgkJfQoKCQkvLyBM
b29wIHRocm91Z2ggZmlsZSBsaW5lLWJ5LWxpbmUsIGV4ZWN1dGluZyB0aGUgU1FMIGFzIHdlIGdvLiBQcmV
maXggd2lsbCBiZSBjaGFuZ2VkIGxpbmUgYnkgbGluZSBhcyBuZWVkZWQuCgkJJHF1ZXJ5X2NvdW50ICAgIC
A9IDA7CgkJJGZhaWxlZF9xdWVyaWVzICA9IDA7CgkJJHByZXZfcXVlcnlfZGF0YSA9ICcnOwoKCQl3aGlsZ
SAoIGZhbHNlICE9PSAoICRxdWVyeSA9IGZnZXRzKCAkZnMgKSApICkgeyAvLyBHcmFiIGxpbmUgYnkgbGlu
ZSBhcyBsb25nIGFzIGZnZXRzIGRvZXNuJ3QgcmV0dXJuIEZBTFNFLgoKCQkJLy8gQ2xlYW4gdXAgU1FMIGF
uZCBpZ25vcmUgYW55IGNvbW1lbnQgbGluZXMuCgkJCWlmICggZW1wdHkoICRxdWVyeSApIHx8ICggJHRoaX
MtPnN0cmluZ19iZWdpbnNfd2l0aCggJHF1ZXJ5LCAnLyohNDAxMDMnICkgKSApIHsgLy8gSWYgYmxhbmsgb
GluZSBvciBzdGFydHMgd2l0aCAvKiE0MDEwMyAobXlzcWxkdW1wIGZpbGUgaGFzIHRoaXMganVuayBpbiBp
dCkuCgkJCQljb250aW51ZTsKCQkJfQoKCQkJaWYgKCBmYWxzZSA9PT0gc3RycG9zKCAkcXVlcnksICc7JyA
pICkgeyAvLyBEb24ndCBoYXZlIHRoZSBmdWxsIHF1ZXJ5IHlldC4gTmVlZCB0byBncmFiIG1vcmUgbGluZX
MuCgkJCQkkcHJldl9xdWVyeV9kYXRhIC49ICRxdWVyeTsKCQkJCWNvbnRpbnVlOyAvLyBHbyBncmFiIG1vc
mUuCgkJCX0KCgkJCS8vIEV4ZWN1dGUgdGhlIFNRTCBsaW5lLgoJCQkkcmVzdWx0ID0gJHRoaXMtPl9pbXBv
cnRfc3FsX2R1bXBfbGluZSggdHJpbSggJHByZXZfcXVlcnlfZGF0YSAuICRxdWVyeSApLCAkb2xkX3ByZWZ
peCwgJGlnbm9yZV9leGlzdGluZyApOyAvLyBBZGRlZCB0cmltKCkgYXMgb2YgQkIgdjUgdG8gcmlwIG9mZi
Bzb21ldGltZXMtbGVhZGluZyBuZXdsaW5lIGNoYXIuCgkJCWlmICggZmFsc2UgPT09ICRyZXN1bHQgKSB7C
gkJCQkvLyBHb3QgRkFMU0UgYXMgcmVzcG9uc2UuLi4gU2tpcHBlZCBxdWVyeSBzbyBjb250aW51ZSB0byB0
aGUgbmV4dC4KCQkJCSRmYWlsZWRfcXVlcmllcysrOwoJCQkJY29udGludWU7CgkJCX0KCQkJJHByZXZfcXV
lcnlfZGF0YSA9ICcnOyAvLyBDbGVhciBvdXQgYW55IHByZXZpb3VzIHF1ZXJ5IGRhdGEgdGhhdCB3YXMgbm
90IHVzZWQgZHVlIHRvIG5vdCBoYXZpbmcgdGhlIGZ1bGwgc3RhdGVtZW50LgoJCQkkcXVlcnlfY291bnQrK
zsKCgkJCS8vIFNob3cgYSBoZWFydGJlYXQgdG8ga2VlcCB1c2VyIHVwIHRvIGRhdGUgW2FuZCBlbnRlcnRh
aW5lZCA7KV0uCgkJCWlmICggMCA9PT0gKCAkcXVlcnlfY291bnQgJSBzZWxmOjpIRUFSVEJFQVRfQ09VTlR
fTElNSVQgKSApIHsgLy8gRGlzcGxheSBldmVyeSBYIHF1ZXJpZXMuCgkJCQlwYl9iYWNrdXBidWRkeTo6c3
RhdHVzKCAnbWVzc2FnZScsICdXb3JraW5nLi4uIEltcG9ydGVkICcgLiAkcXVlcnlfY291bnQgLiAnIHF1Z
XJpZXMgc28gZmFyLicgKTsKCQkJfQoKCQkJLy8gSWYgd2UgYXJlIHdpdGhpbiAxIHNlY29uZCBvZiByZWFj
aGluZyBtYXhpbXVtIFBIUCBydW50aW1lIHRoZW4gc3RvcCBoZXJlIHNvIHRoYXQgaXQgY2FuIGJlIHBpY2t
lZCB1cCBpbiBhbm90aGVyIFBIUCBwcm9jZXNzLi4uCgkJCWlmICggJy0xJyAhPSAkdGhpcy0+X21heEV4ZW
N1dGlvblRpbWUgKSB7IC8vIC0xIGRpc2FibGVkIGNodW5raW5nLgoJCQkJaWYgKCAoICggbWljcm90aW1lK
CB0cnVlICkgLSBwYl9iYWNrdXBidWRkeTo6JHN0YXJ0X3RpbWUgKSArIHNlbGY6OlRJTUVfV0lHR0xFX1JP
T00gKSA+PSAkdGhpcy0+X21heEV4ZWN1dGlvblRpbWUgKSB7IC8vIHdhcyAkdGhpcy0+dGltZV9zdGFydCB
idXQgZGlkIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aW1lIHVzZWQgdXAgYmVmb3JlIGRiIHN0dWZmLgoJCQ
kJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ0FwcHJvYWNoaW5nIGxpbWl0IG9mIGF2Y
WlsYWJsZSBQSFAgY2h1bmtpbmcgdGltZSBvZiBgJyAuICR0aGlzLT5fbWF4RXhlY3V0aW9uVGltZSAuICdg
IHNlYy4gUEhQIHJhbiBmb3IgJyAuIHJvdW5kKCBtaWNyb3RpbWUoIHRydWUgKSAtIHBiX2JhY2t1cGJ1ZGR
5Ojokc3RhcnRfdGltZSwgMyApIC4gJywgZGF0YWJhc2UgaW1wb3J0IHJhbiBmb3IgJyAuIHJvdW5kKCBtaW
Nyb3RpbWUoIHRydWUgKSAtICR0aGlzLT50aW1lX3N0YXJ0LCAzICkgLiAnIHNlYy4gUHJvY2VlZGluZyB0b
yB1c2UgY2h1bmtpbmcuJyApOwoJCQkJCSRmc19wb2ludGVyID0gZnRlbGwoICRmcyApOwoJCQkJCWlmICgg
ZmFsc2UgPT09ICRmc19wb2ludGVyICkgewoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3I
nLCAnRXJyb3IgIzMyODkyMzg6IFVuYWJsZSB0byBnZXQgZnRlbGwgcG9pbnRlciBvZiBTUUwgZmlsZSBoYW
5kbGUuJyApOwoJCQkJCQlyZXR1cm4gZmFsc2U7CgkJCQkJfQoJCQkJCUBmY2xvc2UoICRmcyApOwoKCQkJC
QkvLyBUdXJuIGJhY2sgb24gZm9yZWlnbiBrZXkgY2hlY2tzLgoJCQkJCSRyZXN1bHRzID0gJHdwZGItPnF1
ZXJ5KCAnU0VUIEZPUkVJR05fS0VZX0NIRUNLUz0xOycgKTsKCQkJCQlpZiAoIGZhbHNlID09PSAkcmVzdWx
0cyApIHsKCQkJCQkJaWYgKCBlbXB0eSggJHdwZGItPnVzZV9teXNxbGkgKSApIHsKCQkJCQkJCXBiX2JhY2
t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ1dhcm5pbmcgIzM5Mzc5NzkyNDM0OiAnIC4gQG15c3FsX
2Vycm9yKCAkd3BkYi0+ZGJoICkgKTsKCQkJCQkJfSBlbHNlIHsKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5Ojpz
dGF0dXMoICd3YXJuaW5nJywgJ1dhcm5pbmcgIzg5NDc3NDQ3ODU0OTogJyAuIEBteXNxbGlfZXJyb3IoKSA
pOwoJCQkJCQl9CgkJCQkJfQoKCQkJCQlyZXR1cm4gYXJyYXkoICRmc19wb2ludGVyLCAkcXVlcnlfY291bn
QsICRmYWlsZWRfcXVlcmllcywgKCBtaWNyb3RpbWUoIHRydWUgKSAtICR0aGlzLT50aW1lX3N0YXJ0ICkgK
TsgLy8gZmlsZXBvaW50ZXIgbG9jYXRpb24sIG51bWJlciBvZiBxdWVyaWVzIGRvbmUgdGhpcyBwYXNzLCBu
dW1iZXIgb2Ygc3FsIHFldXJpZXMgdGhhdCBmYWlsZWQsIGVsYXBzZWQgdGltZSBkdXJpbmcgdGhlIGltcG9
ydC4KCQkJCX0gLy8gRW5kIGlmLgoJCQl9CgkJfSAvLyBlbmQgd2hpbGUuCgoJCWlmICggISBmZW9mKCAkZn
MgKSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ0Vycm9yICM4OTQ0MzogZmdld
HMgZmFpbGVkIHByZW1hdHVyZWx5LiBOb3QgYXQgRU9GLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQlm
Y2xvc2UoICRmcyApOwoKCQkvLyBUdXJuIGJhY2sgb24gZm9yZWlnbiBrZXkgY2hlY2tzLgoJCSRyZXN1bHR
zID0gJHdwZGItPnF1ZXJ5KCAnU0VUIEZPUkVJR05fS0VZX0NIRUNLUz0xOycgKTsKCQlpZiAoIGZhbHNlID
09PSAkcmVzdWx0cyApIHsKCQkJaWYgKCBlbXB0eSggJHdwZGItPnVzZV9teXNxbGkgKSApIHsKCQkJCXBiX
2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd3YXJuaW5nJywgJ1dhcm5pbmcgIzM0MzQzMzQ6ICcgLiBAbXlzcWxf
ZXJyb3IoICR3cGRiLT5kYmggKSApOwoJCQl9IGVsc2UgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyg
gJ3dhcm5pbmcnLCAnV2FybmluZyAjODU4NTU4NTQ5OiAnIC4gQG15c3FsaV9lcnJvcigpICk7CgkJCX0KCQ
l9CgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ0ltcG9ydCBvZiBTUUwgZGF0YSBpb
iBQSFAgbW9kZSBjb21wbGV0ZS4nICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAn
VG9vayAnIC4gcm91bmQoIG1pY3JvdGltZSggdHJ1ZSApIC0gJHRoaXMtPnRpbWVfc3RhcnQsIDMgKSAuICc
gc2Vjb25kcyBvbiAnIC4gJHF1ZXJ5X2NvdW50IC4gJyBxdWVyaWVzLiAnICk7CgoJCXJldHVybiB0cnVlOw
oKCX0gLy8gRW5kIF9pbXBvcnRfcGhwKCkuCgoJLyoqCgkgKiBJbXBvcnRzIGEgbGluZS9xdWVyeSBpbnRvI
HRoZSBkYXRhYmFzZS4KCSAqIEhhbmRsZXMgdXNpbmcgdGhlIHNwZWNpZmllZCB0YWJsZSBwcmVmaXguCgkg
KgoJICogQHNpbmNlIDIuMC4wCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcXVlcnkgICAgICAgICAgICBRdWV
yeSBzdHJpbmcgdG8gcnVuIGZvciBpbXBvcnRpbmcuCgkgKiBAcGFyYW0gc3RyaW5nICRvbGRfcHJlZml4IC
AgICAgIE5ldyBwcmVmaXggd2FzIHBhc3NlZCBpbiBjb25zdHJ1Y3Rvci4KCSAqIEBwYXJhbSBib29sICAgJ
Glnbm9yZV9leGlzdGluZyAgSWYgdHJ1ZSBzdXBwcmVzcyBteXNxbCBlcnJvcnMuCgkgKgoJICogQHJldHVy
biBib29sIFRydWU9c3VjY2VzcywgRmFsc2U9ZmFpbGVkLgoJICovCglwdWJsaWMgZnVuY3Rpb24gX2ltcG9
ydF9zcWxfZHVtcF9saW5lKCAkcXVlcnksICRvbGRfcHJlZml4LCAkaWdub3JlX2V4aXN0aW5nID0gZmFsc2
UgKSB7CgkJJG5ld19wcmVmaXggPSAkdGhpcy0+X2RhdGFiYXNlX3ByZWZpeDsKCgkJJHF1ZXJ5X29wZXJhd
G9ycyA9ICdJTlNFUlQgSU5UT3xDUkVBVEUgVEFCTEV8UkVGRVJFTkNFU3xDT05TVFJBSU5UfEFMVEVSIFRB
QkxFfFwvXCohXGQrXHMrQUxURVIgVEFCTEUnOwoKCQkvLyBSZXBsYWNlIGRhdGFiYXNlIHByZWZpeCBpbiB
xdWVyeS4KCQlpZiAoICRvbGRfcHJlZml4ICE9PSAkbmV3X3ByZWZpeCApIHsKCQkJJHF1ZXJ5ID0gcHJlZ1
9yZXBsYWNlKCAiL14oJHF1ZXJ5X29wZXJhdG9ycykoXHMrYD8pJG9sZF9wcmVmaXgvaSIsICJcJHsxfVwke
zJ9JG5ld19wcmVmaXgiLCAkcXVlcnkgKTsgLy8gQWRkZWQgb24gNC0yOS0xMS4KCQl9CgoJCS8vIFRoaXMg
aXMgYSB0YWJsZSBjcmVhdGlvbiBsaW5lLiBPdXRwdXQgd2hpY2ggdGFibGUgd2UgYXJlIGFibGUgdG8gY3J
lYXRlIHRvIGhlbHAgZ2V0IGFuIGlkZWEgd2hlcmUgd2UgYXJlIGluIHRoZSBpbXBvcnQuIEFsc28gcG9zc2
libHkgaGFuZGxlIGhvdGZpeCBFcnJvciAjNzAwMS4KCQlpZiAoIDEgPT0gcHJlZ19tYXRjaCggJy9eQ1JFQ
VRFIFRBQkxFIGA/KChcd3wtKSspYD8vaScsICRxdWVyeSwgJG1hdGNoZXMgKSApIHsKCQkJcGJfYmFja3Vw
YnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnQ3JlYXRpbmcgdGFibGUgYCcgLiAkbWF0Y2hlc1sxXSAuICd
gLicgKTsKCQkJaWYgKCBkZWZpbmVkKCAnUEJfSU1QT1JUQlVERFknICkgKSB7CgkJCQllY2hvICI8c2NyaX
B0PmJiX2FjdGlvbiggJ2ltcG9ydGluZ1RhYmxlJywgJyIgLiAkbWF0Y2hlc1sxXSAuICInICk7PC9zY3Jpc
HQ+IjsKCQkJfQoKCQkJaWYgKCB0cnVlID09PSAkdGhpcy0+X2hvdGZpeF83MDAxICkgewoJCQkJJHF1ZXJ5
ID0gc3RyX2lyZXBsYWNlKCAnVFlQRT0nLCAnRU5HSU5FPScsICRxdWVyeSApOwoJCQl9CgkJfQoKCQlnbG9
iYWwgJHdwZGI7CgoJCS8vIFJ1biB0aGUgcXVlcnkuCgkJJHJlc3VsdHMgPSAkd3BkYi0+cXVlcnkoICRxdW
VyeSApOwoKCQkvLyBIYW5kbGUgcmVzdWx0cyBvZiBydW5uaW5nIHF1ZXJ5LgoJCWlmICggZmFsc2UgPT09I
CRyZXN1bHRzICkgewoJCQlpZiAoIHRydWUgIT09ICRpZ25vcmVfZXhpc3RpbmcgKSB7CgoJCQkJaWYgKCBl
bXB0eSggJHdwZGItPnVzZV9teXNxbGkgKSApIHsKCQkJCQkkbXlzcWxfZXJyb3IgPSBAbXlzcWxfZXJyb3I
oICR3cGRiLT5kYmggKTsKCQkJCX0gZWxzZSB7CgkJCQkJJG15c3FsX2Vycm9yID0gQG15c3FsaV9lcnJvci
gpOwoJCQkJfQoKCQkJCWlmICggJycgPT0gJG15c3FsX2Vycm9yICkgewoJCQkJCSRteXNxbF9lcnJvciA9I
CR3cGRiLT5sYXN0X2Vycm9yOwoJCQkJfQoKCQkJCWlmICggZW1wdHkoICR3cGRiLT51c2VfbXlzcWxpICkg
KSB7CgkJCQkJJG15c3FsX2Vycm5vID0gQG15c3FsX2Vycm5vKCAkd3BkYi0+ZGJoICk7CgkJCQl9IGVsc2U
gewoJCQkJCSRteXNxbF9lcnJubyA9IEBteXNxbGlfZXJybm8oICR3cGRiLT5kYmggKTsKCQkJCX0KCgkJCQ
kkbXlzcWxfOTAxMF9sb2cgPSBBQlNQQVRIIC4gJ2ltcG9ydGJ1ZGR5L215c3FsXzkwMTBfbG9nLScgLiBwY
l9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2xvZ19zZXJpYWwnXSAuICcudHh0JzsKCQkJCWlmICggMCA9PSAk
dGhpcy0+XzkwMTBzX2VuY291bnRlcmVkICkgeyAvLyBQbGFjZSBhIGhlYWRlciBhdCB0aGUgdG9wIG9mIHR
oaXMgbG9nIHdpdGggc29tZSBkZWJ1Z2dpbmcgaW5mby4KCQkJCQkvLyBAdW5saW5rKCAkbXlzcWxfOTAxMF
9sb2cgKTsgLy8gRGVsZXRlIGlmIGFscmVhZHkgZXhpc3RzIHRvIGF2b2lkIG11bHRpcGxlIGxvZ2dpbmcgb
2YgZW50aXJlIHByb2Nlc3MuIE5PIExPTkdFUiBERUxFVEVEIHNpbmNlIHRoaXMgbWF5IGJlIG11bHRpcGFy
dCBjaHVua2VkLgoJCQkJCUBmaWxlX3B1dF9jb250ZW50cygKCQkJCQkJJG15c3FsXzkwMTBfbG9nLAoJCQk
JCQkiIyMjIyNcbiMgVGhpcyBsb2cgY29udGFpbnMgYWxsIDkwMTAgZXJyb3JzIGVuY291bnRlcmVkLlxuIy
BPbGQgcHJlZml4OiBgeyRvbGRfcHJlZml4fWAuXG4jIE5ldyBwcmVmaXg6IGB7JG5ld19wcmVmaXh9YC5cb
iMgVGltZTogYCIgLiB0aW1lKCkgLiAiYC5cbiMjIyMjXG57JHRlc3R9XG4iLAoJCQkJCQlGSUxFX0FQUEVO
RAoJCQkJCSk7CgkJCQl9CgoJCQkJQGZpbGVfcHV0X2NvbnRlbnRzKAoJCQkJCSRteXNxbF85MDEwX2xvZyw
KCQkJCQknUVVFUlkgZnJvbSBmaWxlIGAnIC4gJHRoaXMtPl9jdXJyZW50X3NxbF9maWxlIC4gImA6XG4iIC
4gJHF1ZXJ5IC4gIlxuRVJST1I6XG4iIC4gJG15c3FsX2Vycm9yIC4gIlxuXG4iLAoJCQkJCUZJTEVfQVBQR
U5ECgkJCQkpOwoKCQkJCSR0aGlzLT5fOTAxMHNfZW5jb3VudGVyZWQrKzsKCQkJCWlmICggJHRoaXMtPl85
MDEwc19lbmNvdW50ZXJlZCA+ICR0aGlzLT5fbWF4XzkwMTBzX2FsbG93ZWQgKSB7IC8vIFRvbyBtYW55LCB
kb24ndCBzaG93IG1vcmUuCgkJCQkJaWYgKCAkdGhpcy0+XzkwMTBzX2VuY291bnRlcmVkID09ICR0aGlzLT
5fbWF4XzkwMTBzX2FsbG93ZWQgKyAxICkgewoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb
3InLCAnQWRkaXRpb25hbCA5MDEwIGVycm9ycyB3ZXJlIGVuY291bnRlcmVkIGJ1dCBoYXZlIG5vdCBiZWVu
IGRpc3BsYXllZCB0byBhdm9pZCBmbG9vZGluZyB0aGUgc2NyZWVuLiBBbGwgOTAxMCBlcnJvcnMgYXJlIGx
vZ2dlZCB0byBgJyAuICRteXNxbF85MDEwX2xvZyAuICdgIGlmIHBvc3NpYmxlLicgKTsKCQkJCQl9CgkJCQ
l9IGVsc2UgeyAvLyBTaG93IGVycm9yLgoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsI
CdFcnJvciAjOTAxMDogVW5hYmxlIHRvIGltcG9ydCBTUUwgcXVlcnkuIEVycm9yOiBgJyAuICRteXNxbF9l
cnJvciAuICdgIEVycm5vOiBgJyAuICRteXNxbF9lcnJubyAuICdgLicgKTsKCQkJCQlpZiAoIGZhbHNlICE
9PSBzdHJpc3RyKCAkbXlzcWxfZXJyb3IsICdzZXJ2ZXIgaGFzIGdvbmUgYXdheScgKSApIHsgLy8gaWYgc3
RyaW5nIGRlbm90ZXMgdGhhdCBteXNxbCBzZXJ2ZXIgaGFzIGdvbmUgYXdheSBiYWlsIHNpbmNlIGl0IHdpb
GwgbGlrZWx5IGp1c3QgZmxvb2QgdXNlciB3aXRo
IGVycm9ycy4uLgoJCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAnRXJyb3IgIzkwMTB
iOiBIYWx0aW5nIGJhY2t1cCBwcm9jZXNzIGFzIG15c3FsIHNlcnZlciBoYXMgZ29uZSBhd2F5IGFuZCBkYX
RhYmFzZSBkYXRhIGNvdWxkIG5vdCBiZSBpbXBvcnRlZC4gVHlwaWNhbGx5IHRoZSByZXN0b3JlIGNhbm5vd
CBjb250aW51ZSBzbyB0aGUgcHJvY2VzcyBoYXMgYmVlbiBoYWx0ZWQuIFRoaXMgaXMgdXN1YWxseSBjYXVz
ZWQgYnkgYSBwcm9ibGVtYXRpYyBteXNxbCBzZXJ2ZXIgYXQgeW91ciBob3N0aW5nIHByb3ZpZGVyLCBsb3c
gbXlzcWwgdGltZW91dHMsIGV0Yy4gQ29udGFjdCB5b3VyIGhvc3RpbmcgY29tcGFueSBmb3Igc3VwcG9ydC
4nICk7CgkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0xhc3QgcXVlcnkgYXR0Z
W1wdGVkOiBgJyAuICRxdWVyeSAuICdgLicgKTsKCQkJCQkJZGllKCAnRXJyb3IgIzk0ODM0MzogRkFUQUwg
RVJST1IgLSBJTVBPUlQgSEFMVEVEJyApOwoJCQkJCX0KCQkJCX0KCQkJfQoJCQlyZXR1cm4gZmFsc2U7Cgk
JfSBlbHNlIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoKCX0gLy8gRW5kIF9pbXBvcnRfc3FsX2R1bXBfbGluZS
gpLgoKfSAvLyBFbmQgcGJfYmFja3VwYnVkZHlfbXlzcWxidWRkeSBjbGFzcy4K
###PACKDATA,FILE_END,/lib/mysqlbuddy/mysqlbuddy.php,importbuddy/lib/mysqlbuddy/mysq
lbuddy.php
###PACKDATA,FILE_START,/lib/textreplacebuddy/index.php,importbuddy/lib/textreplaceb
uddy/index.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/lib/textreplacebuddy/index.php,importbuddy/lib/textreplacebud
dy/index.php
###PACKDATA,FILE_START,/lib/textreplacebuddy/textreplacebuddy.php,importbuddy/lib/t
extreplacebuddy/textreplacebuddy.php
PD9waHAKLyoJcGJfYmFja3VwYnVkZHlfdGV4dHJlcGxhY2VidWRkeSBjbGFzcwogKgkKICoJQGF1dGhvciB
EdXN0aW4gQm9sdG9uCiAqCUBzaW5jZSAzLjAuMAogKgogKglUZXh0IHJlcGxhY2VtZW50cyB1c2luZyBjb2
1tYW5kIGxpbmUgaWYgYXZhaWxhYmxlLiBUaGVyZSBpcyBubyBnb29kIHdheSB0byBkbyB0ZXh0IHJlcGxhY
2VtZW50cwogKglvbiBhIGxhcmdlIHNjYWxlIGluIFBIUCBlZmZpY2llbnRseS4KICoKICoJUmVzdWx0aW5n
IGZpbGUgc3RvcmVkIGF0ICRmaWxlIC4gJy50bXAnLiBPcmlnaW5hbCBmaWxlIGlzIE5PVCByZXBsYWNlZC4
KICoKICovCmNsYXNzIHBiX2JhY2t1cGJ1ZGR5X3RleHRyZXBsYWNlYnVkZHkgewoJCgkKCS8qKioqKioqKi
oqIFByb3BlcnRpZXMgKioqKioqKioqKi8KCQoJCglwcml2YXRlICRfdmVyc2lvbiA9ICcwLjAuMic7CQkJC
QkJCQkJCQkJCQkJCQkJLy8gSW50ZXJuYWwgdmVyc2lvbiBudW1iZXIgZm9yIHRoaXMgbGlicmFyeS4KCQoJ
cHJpdmF0ZSAkX21ldGhvZHMgPSBhcnJheSgpOwkJCQkJCQkJCQkJCQkJCQkJCQkJLy8gQXZhaWxhYmxlIG1
lY2hhbmlzbXMgZm9yIGR1bXBpbmcgaW4gb3JkZXIgb2YgcHJlZmVyZW5jZS4KCXByaXZhdGUgJF9jb21tYW
5kYnVkZHk7CgkKCS8qKioqKioqKioqIE1ldGhvZHMgKioqKioqKioqKi8KCQoJCgkvKglfX2NvbnN0cnVjd
CgpCgkgKgkKCSAqCURlZmF1bHQgY29uc3RydWN0b3IuCgkgKgkKCSAqCUBwYXJhbQkJYXJyYXkJCSRmb3Jj
ZV9tZXRob2RzCQkJT3B0aW9uYWwgcGFyYW1ldGVyIHRvIG92ZXJyaWRlIGF1dG9tYXRpYyBtZXRob2QgZGV
0ZWN0aW9uLiBTa2lwcyB0ZXN0IGFuZCBydW5zIGZpcnN0IG1ldGhvZCBmaXJzdC4gIEZhbGxzIGJhY2sgdG
8gb3RoZXIgbWV0aG9kcyBpZiBhbnkgZmFpbHVyZS4KCSAqCUByZXR1cm4JCQoJICovCglwdWJsaWMgZnVuY
3Rpb24gX19jb25zdHJ1Y3QoICRmb3JjZV9tZXRob2RzID0gYXJyYXkoKSApIHsKCQkKCQlwYl9iYWNrdXBi
dWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd0ZXh0cmVwbGFjZWJ1ZGR5OiBMb2FkaW5nIHRleHRyZXBsYWN
lYnVkZHkgbGlicmFyeS4nICk7CgkJCgkJLy8gSGFuZGxlcyBjb21tYW5kIGxpbmUgZXhlY3V0aW9uLgoJCX
JlcXVpcmVfb25jZSggcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2xpYi9jb21tYW5kYnVkZ
HkvY29tbWFuZGJ1ZGR5LnBocCcgKTsKCQkkdGhpcy0+X2NvbW1hbmRidWRkeSA9IG5ldyBwYl9iYWNrdXBi
dWRkeV9jb21tYW5kYnVkZHkoKTsKCQkKCQkvLyBTZXQgbWVjaGFuaXNtIGZvciBkdW1waW5nIC8gcmVzdG9
yaW5nLgoJCWlmICggY291bnQoICRmb3JjZV9tZXRob2RzICkgPiAwICkgeyAvLyBNZWNoYW5pc20gZm9yY2
VkLiBPdmVycmlkaW5nIGF1dG9tYXRpYyBjaGVjay4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc
3NhZ2UnLCAndGV4dHJlcGxhY2VidWRkeTogU2V0dGluZ3Mgb3ZlcnJpZGluZyBhdXRvbWF0aWMgZGV0ZWN0
aW9uIG9mIGF2YWlsYWJsZSBkYXRhYmFzZSBkdW1wIG1ldGhvZHMuIFVzaW5nIGZvcmNlZCBvdmVycmlkZSB
tZXRob2RzOiBgJyAuIGltcGxvZGUoICcsJywgJGZvcmNlX21ldGhvZHMgKSAuICdgLicgKTsKCQkJJHRoaX
MtPl9tZXRob2RzID0gJGZvcmNlX21ldGhvZHM7CgkJfSBlbHNlIHsgLy8gTm8gbWV0aG9kIGRlZmluZWQ7I
GF1dG8tZGV0ZWN0IHRoZSBiZXN0LgoJCQkkdGhpcy0+X21ldGhvZHMgPSAkdGhpcy0+YXZhaWxhYmxlX3Rl
eHRyZXBsYWNlX21ldGhvZHMoKTsKCQl9CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCA
ndGV4dHJlcGxhY2VidWRkeTogRGV0ZWN0ZWQgdGV4dCByZXBsYWNlbWVudCBtZXRob2RzOiBgJyAuIGltcG
xvZGUoICcsJywgJHRoaXMtPl9tZXRob2RzICkgLiAnYC4nICk7CgkJCgl9IC8vIEVuZCBfX2NvbnN0cnVjd
CgpLgoJCgkKCQoJLyoJYXZhaWxhYmxlX2R1bXBfbWV0aG9kcygpCgkgKgkKCSAqCWZ1bmN0aW9uIGRlc2Ny
aXB0aW9uCgkgKgkKCSAqCUBwYXJhbQkJCgkgKglAcmV0dXJuCQlzdHJpbmcJCQkJUG9zc2libGUgcmV0dXJ
uczogIG15c3FsZHVtcCwgcGhwCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBhdmFpbGFibGVfdGV4dHJlcGxhY2
VfbWV0aG9kcygpIHsKCQkKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd0ZXh0cmVwb
GFjZSB0ZXN0OiBUZXN0aW5nIGF2YWlsYWJsZSB0ZXh0IHJlcGxhY2VtZW50IG1ldGhvZHMuJyApOwoJCWlm
ICggZnVuY3Rpb25fZXhpc3RzKCAnZXhlYycgKSApIHsgLy8gRXhlYyBpcyBhdmFpbGFibGUgc28gdGVzdCB
teXNxbGR1bXAgZnJvbSBoZXJlLgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd0ZX
h0cmVwbGFjZSB0ZXN0OiBleGVjKCkgZnVuY3Rpb24gZXhpc3RzLiBUZXN0aW5nIHJ1bm5pbmcgc2VkICh0Z
Xh0IHJlcGxhY2UgY29tbWFuZCkgdmlhIGV4ZWMoKS4nICk7CgkJCQoJCQkKCQkJLyoqKioqKioqKiogQmVn
aW4gcHJlcGFyaW5nIGNvbW1hbmQgKioqKioqKioqKi8KCQkJLy8gSGFuZGxlIFdpbmRvd3Mgd2FudGluZyA
uZXhlLgoJCQlpZiAoIHN0cmlzdHIoIFBIUF9PUywgJ1dJTicgKSAmJiAhc3RyaXN0ciggUEhQX09TLCAnRE
FSV0lOJyApICkgeyAvLyBSdW5uaW5nIFdpbmRvd3MuIChub3QgZGFyd2luKQoJCQkJcmV0dXJuIGFycmF5K
CAncGhwJyApOyAvLyBOb3RoaW5nIGdvb2QgaW4gV2luZG93cyBhdmFpbGFibGUgdG8gdGV4dCByZXBsYWNl
LgoJCQl9IGVsc2UgewoJCQkJJGNvbW1hbmQgPSAiZWNobyBiYWNrdXAgfCBzZWQgJ3MvYmFja3VwL2J1ZGR
5LyciOyAvLyBXaWxsIGF0dGVtcHQgdG8gcmVwbGFjZSBiYWNrdXAgd2l0aCBidWRkeQoJCQl9CgkJCQoJCQ
kvLyBSZWRpcmVjdCBTVERFUlIgdG8gU1RET1VULgoJCQkkY29tbWFuZCAuPSAnICAyPiYxJzsKCQkJCgkJC
S8qKioqKioqKioqIEVuZCBwcmVwYXJpbmcgY29tbWFuZCAqKioqKioqKioqLwoJCQkKCQkJCgkJCS8vIFJ1
biBjb21tYW5kLgoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd0ZXh0cmVwbGFjZSB
0ZXN0OiBSdW5uaW5nIHRlc3QgY29tbWFuZCBuZXh0LicgKTsKCQkJbGlzdCggJGV4ZWNfb3V0cHV0LCAkZX
hlY19leGl0X2NvZGUgKSA9ICR0aGlzLT5fY29tbWFuZGJ1ZGR5LT5leGVjdXRlKCAkY29tbWFuZCApOwoJC
QkKCQkJaWYgKCBzdHJpc3RyKCBpbXBsb2RlKCAnICcsICRleGVjX291dHB1dCApLCAnYnVkZHknICkgIT09
IGZhbHNlICkgeyAvLyBTdHJpbmcgVmVyIGFwcGVhcmVkIGluIHJlc3BvbnNlIG9yIHVzYWdlIGV4cGxhbmF
0aW9ucy4gU29tZSB2ZXJzaW9uIGRvbnQgZ2l2ZSB2ZXJzaW9uLgoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YX
R1cyggJ2RldGFpbHMnLCAndGV4dHJlcGxhY2UgdGVzdDogQ29tbWFuZCBhcHBlYXJzIHRvIGJlIGFjY2Vzc
2libGUgYW5kIHJldHVybnMgZXhwZWN0ZWQgcmVzcG9uc2UuJyApOwoJCQkJcmV0dXJuIGFycmF5KCAnY29t
bWFuZGxpbmUnLCAncGhwJyApOyAvLyBteXNxbGR1bXAgYmVzdCwgcGhwIG5leHQuCgkJCX0KCQkJCgkJCQo
JCX0gZWxzZSB7IC8vIE5vIGV4ZWMoKSBzbyBtdXN0IGZhbGwgYmFjayB0byBQSFAgbWV0aG9kIG9ubHkuCg
kJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ3RleHRyZXBsYWNlIHRlc3Q6IEZhbGxpb
mcgYmFjayB0byB0ZXh0cmVwbGFjZSBjb21wYXRpYmlsaXR5IG1vZGUgKFBIUCByZXBsYWNlKS4gVGhpcyBp
cyBzbG93ZXIgYW5kIG1vcmUgbWVtb3J5IGludGVuc2l2ZS4nICk7CgkJCXJldHVybiBhcnJheSggJ3BocCc
gKTsKCQl9CgkJCgkJcmV0dXJuIGFycmF5KCAncGhwJyApOwoJCQoJfSAvLyBFbmQgYXZhaWxhYmxlX2R1bX
BfbWV0aG9kKCkuCgkKCQoJCgkvKglyZXBsYWNlKCkKCSAqCQoJICoJUmVwbGFjZSBhbGwgaW5zdGFuY2VzI
G9mIGEgc3RyaW5nIHdpdGhpbiBhIGZpbGUuIEF1dG9tYXRpY2FsbHkgZmFsbHMgYmFjay4KCSAqCVJlc3Vs
dGluZyBmaWxlIHN0b3JlZCBpbiAkZmlsZSAuICd0bXAnLiBPcmlnaW5hbCBmaWxlIGlzIE5PVCByZXBsYWN
lZC4KCSAqCgkgKglAcGFyYW0JCXN0cmluZwkJJGZpbGUJCQkJRnVsbCBmaWxlIHBhdGggdG8gZmlsZSB0by
BzZWFyY2guIEEgLnRtcCB2ZXJzaW9uIGlzIG1hZGUgd2l0aCB0aGUgZmluYWwgcmVzdWx0cy4gT3JpZ2luY
WwgZmlsZSBpcyBOT1QgcmVwbGFjZWQuCgkgKglAcGFyYW0JCXN0cmluZwkJJHNlYXJjaAkJCQlTdHJpbmcg
dG8gc2VhcmNoIGZvci4KCSAqCUBwYXJhbQkJc3RyaW5nCQkkcmVwbGFjZW1lbnQJCVN0cmluZyB0byByZXB
sYWNlIHdpdGguCgkgKglAcGFyYW0JCXN0cmluZwkJJHJlZ2V4X2NvbmRpdGlvbglDb25kaXRpb24gd2hlbi
ByZXBsYWNlbWVudHMgbWF5IGhhcHBlbi4gT3B0aW9uYWwuCgkgKglAcGFyYW0JCXN0cmluZwkJJHJlZ2V4X
3JlcGxhY2UJCUlmIGZhbGxlbiBiYWNrIGludG8gUEhQIG1vZGUgdGhlbiB0aGlzIGlzIG5lZWRlZCBJRiAk
cmVnZXhfY29uZGl0aW9uIGlzIHBhc3NlZC4gT3B0aW9uYWwuCgkgKglAcmV0dXJuCgkgKi8KCXB1YmxpYyB
mdW5jdGlvbiBzdHJpbmdfcmVwbGFjZSggJGZpbGUsICRzZWFyY2gsICRyZXBsYWNlbWVudCwgJHJlZ2V4X2
NvbmRpdGlvbiA9ICcnLCAkcmVnZXhfcmVwbGFjZSA9ICcnICkgewoJCSRyZXR1cm4gPSBmYWxzZTsKCQkKC
QlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnbWVzc2FnZScsICdTdGFydGluZyB0ZXh0IHJlcGxhY2VtZW50
IHByb2NlZHVyZS4nICk7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAidGV4dHJlcGx
hY2UgYmVpbmcgcGVyZm9ybWVkIG9uIGZpbGUgYHskZmlsZX1gIHJlcGxhY2luZyBgeyRzZWFyY2h9YCB3aX
RoIGB7JHJlcGxhY2VtZW50fWAuIiApOwoJCQoJCS8vIEF0dGVtcHQgZWFjaCBtZXRob2QgaW4gb3JkZXIuC
gkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnUHJlcGFyaW5nIHRvIHRleHRyZXBsYWNl
IHVzaW5nIGF2YWlsYWJsZSBtZXRob2QocykgYnkgcHJpb3JpdHkuIE1ldGhvZHM6IGAnIC4gaW1wbG9kZSg
gJywnLCAkdGhpcy0+X21ldGhvZHMgKSAuICdgJyApOwoJCWZvcmVhY2goICR0aGlzLT5fbWV0aG9kcyBhcy
AkbWV0aG9kICkgewoJCQlpZiAoIG1ldGhvZF9leGlzdHMoICR0aGlzLCAiX3N0cmluZ3JlcGxhY2VfeyRtZ
XRob2R9IiApICkgewoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAndGV4dHJlcGxh
Y2VidWRkeTogQXR0ZW1wdGluZyByZXBsYWNlIG1ldGhvZCBgJyAuICRtZXRob2QgLiAnYC4nICk7CgkJCQk
kcmVzdWx0ID0gY2FsbF91c2VyX2Z1bmMoIGFycmF5KCAkdGhpcywgIl9zdHJpbmdyZXBsYWNlX3skbWV0aG
9kfSIgKSwgJGZpbGUsICRzZWFyY2gsICRyZXBsYWNlbWVudCwgJHJlZ2V4X2NvbmRpdGlvbiwgJHJlZ2V4X
3JlcGxhY2UgKTsKCQkJCQoJCQkJaWYgKCAkcmVzdWx0ID09PSB0cnVlICkgeyAvLyBEdW1wIGNvbXBsZXRl
ZCBzdWNjZXNmdWxseSB3aXRoIHRoaXMgbWV0aG9kLgoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICd
kZXRhaWxzJywgJ3RleHRyZXBsYWNlYnVkZHk6IFJlcGxhY2UgbWV0aG9kIGAnIC4gJG1ldGhvZCAuICdgIG
NvbXBsZXRlZCBzdWNjZXNzZnVsbHkuJyApOwoJCQkJCSRyZXR1cm4gPSB0cnVlOwoJCQkJCWJyZWFrOwoJC
QkJfSBlbHNlaWYgKCAkcmVzdWx0ID09PSBmYWxzZSApIHsgLy8gRHVtcCBmYWlsZWQgdGhpcyBtZXRob2Qu
IFdpbGwgdHJ5IGNvbXBhdGliaWxpdHkgZmFsbGJhY2sgdG8gbmV4dCBtb2RlIGlmIGFibGUuCgkJCQkJLy8
gRG8gbm90aGluZy4gV2lsbCB0cnkgbmV4dCBtb2RlIG5leHQgbG9vcC4KCQkJCQlwYl9iYWNrdXBidWRkeT
o6c3RhdHVzKCAnZGV0YWlscycsICd0ZXh0cmVwbGFjZWJ1ZGR5OiBSZXBsYWNlIG1ldGhvZCBgJyAuICRtZ
XRob2QgLiAnYCBmYWlsZWQuIFRyeWluZyBhbm90aGVyIGNvbXBhdGliaWxpdHkgbW9kZSBuZXh0IGlmIGFi
bGUuJyApOwoJCQkJfSBlbHNlIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd
0ZXh0cmVwbGFjZWJ1ZGR5OiBVbmV4ZXBlY3RlZCByZXNwb25zZTogYCcgLiBpbXBsb2RlKCAnLCcsICRyZX
N1bHQgKSAuICdgJyApOwoJCQkJfQoJCQl9CgkJfQoJCQoJCWlmICggJHJldHVybiA9PT0gdHJ1ZSApIHsgL
y8gU3VjY2Vzcy4KCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3NhZ2UnLCAnVGV4dCByZXBsYWNl
IHByb2NlZHVyZSBzdWNjZWVkZWQuJyApOwoJCQlyZXR1cm4gdHJ1ZTsKCQl9IGVsc2UgeyAvLyBPdmVyYWx
sIGZhaWx1cmUuCgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdUZXh0IHJlcGxhY2UgcH
JvY2VkdXJlIGZhaWxlZC4nICk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJCgl9IC8vIEVuZCBkdW1wKCkuC
gkKCQoJCgkvKglfc3RyaW5ncmVwbGFjZV9jb21tYW5kbGluZSgpCgkgKgkKCSAqCVBlcmZvcm1zIGFjdHVh
bCBjb21tYW5kIGxpbmUgc3RyaW5nIHJlcGxhY2VtZW50LiBWSUEgc2VkIChjb21tYW5kIGxpbmUgcmVwbGF
jZSkuCgkgKglDYXNlIHNlbnNpdGl2ZS4KCSAqCVJlc3VsdGluZyBmaWxlIHN0b3JlZCBpbiAkZmlsZSAuIC
d0bXAnLiBPcmlnaW5hbCBmaWxlIGlzIE5PVCByZXBsYWNlZC4KCSAqCQoJICoJQHBhcmFtCQlzdHJpbmcJC
SRmaWxlCQkJCUZ1bGwgZmlsZSBwYXRoIHRvIGZpbGUgdG8gcmVwbGFjZSBpbi4gYSAudG1wIHZlcnNpb24g
aXMgdGVtcG9yYXJpbHkgbWFkZS4KCSAqCUBwYXJhbQkJc3RyaW5nCQkkc2VhcmNoCQkJCVN0cmluZyB0byB
zZWFyY2ggZm9yLgoJICoJQHBhcmFtCQlzdHJpbmcJCSRyZXBsYWNlbWVudAkJU3RyaW5nIHRvIHJlcGxhY2
Ugd2l0aC4KCSAqCUBwYXJhbQkJc3RyaW5nCQkkcmVnZXhfY29uZGl0aW9uCUNvbmRpdGlvbiB3aGVuIHJlc
GxhY2VtZW50cyBtYXkgaGFwcGVuLiBPcHRpb25hbC4KCSAqCUBwYXJhbQkJc3RyaW5nCQkkcmVnZXhfcmVw
bGFjZQkJTk9UIHVzZWQgaW4gY29tbWFuZGxpbmUgbW9kZS4KCSAqCUBwYXJhbQkJYm9vbGVhbgkJJGdsb2J
hbAkJCQlXaGV0aGVyIG9yIG5vdCB0byBnbG9iYWxseSByZXBsYWNlIGluIHJlZ2V4LiBEZWZhdWx0OiBmYW
xzZSAob25seSByZXBsYWNlIGZpcnN0IGluc3RhbmNlIHBlciBsaW5lKS4KCSAqCUByZXR1cm4JCWJvb2xlY
W4JCQkJCQkJVHJ1ZSBvbiBzdWNjZXNzOyBlbHNlIGZhbHNlLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIF9z
dHJpbmdyZXBsYWNlX2NvbW1hbmRsaW5lKCAkZmlsZSwgJHNlYXJjaCwgJHJlcGxhY2VtZW50LCAkcmVnZXh
fY29uZGl0aW9uID0gJycsICRyZWdleF9yZXBsYWNlID0gJycsICRnbG9iYWwgPSBmYWxzZSApIHsKCQkKCQ
lwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICd0ZXh0cmVwbGFjZWJ1ZGR5OiBQcmVwYXJpb
mcgdG8gcnVuIGNvbW1hbmQgbGluZSBzZWQgKHJlcGxhY2VtZW50IGNvbW1lbnQpIHZpYSBleGVjKCkuJyAp
OwoJCQoJCS8vIEhhbmRsZSBvcHRpb25hbCBnbG9
iYWwgcmVwbGFjZW1lbnQuCgkJaWYgKCAkZ2xvYmFsID09PSB0cnVlICkgewoJCQkkZ2xvYmFsX2ZsYWcgPS
AnZyc7CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ3RleHRyZXBsYWNlYnVkZHk6I
FVzaW5nIGdsb2JhbCByZXBsYWNlIHBlciBsaW5lLicgKTsKCQl9IGVsc2UgewoJCQkkZ2xvYmFsX2ZsYWcg
PSAnJzsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAndGV4dHJlcGxhY2VidWRkeTo
gVXNpbmcgZmlyc3QgaW5zdGFuY2UgcmVwbGFjZSBwZXIgbGluZS4nICk7CgkJfQoJCQoJCS8qKioqKioqKi
oqIEJlZ2luIHByZXBhcmluZyBjb21tYW5kICoqKioqKioqKiovCgkJLy8gSGFuZGxlIFdpbmRvd3Mgd2Fud
GluZyAuZXhlLgoJCWlmICggc3RyaXN0ciggUEhQX09TLCAnV0lOJyApICYmICFzdHJpc3RyKCBQSFBfT1Ms
ICdEQVJXSU4nICkgKSB7IC8vIFJ1bm5pbmcgV2luZG93cy4gKG5vdCBkYXJ3aW4pCgkJCXJldHVybiBmYWx
zZTsKCQl9IGVsc2UgewoJCQlpZiAoICRyZWdleF9jb25kaXRpb24gPT0gJycgKSB7IC8vIE5vcm1hbCBzdH
JpbmcgcmVwbGFjZS4KCQkJCSRjb21tYW5kID0gInNlZCBzL3skc2VhcmNofS97JHJlcGxhY2VtZW50fS97J
Gdsb2JhbF9mbGFnfSB7JGZpbGV9ID4geyRmaWxlfS50bXAiOwoJCQl9IGVsc2UgeyAvLyBDdXN0b20gcmVn
ZXggY29uZGl0aW9ucy4KCQkJCSRjb21tYW5kID0gInNlZCAtRSAnL3skcmVnZXhfY29uZGl0aW9ufS9zL3s
kc2VhcmNofS97JHJlcGxhY2VtZW50fS97JGdsb2JhbF9mbGFnfScgeyRmaWxlfSA+IHskZmlsZX0udG1wIj
sKCQkJfQoJCX0KCQkKCQkvLyBSZWRpcmVjdCBTVERFUlIgdG8gU1RET1VULgoJCSRjb21tYW5kIC49ICcgI
DI+JjEnOwoJCQoJCS8qKioqKioqKioqIEVuZCBwcmVwYXJpbmcgY29tbWFuZCAqKioqKioqKioqLwoJCQoJ
CS8vIFJ1biBjb21tYW5kLgoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ3RleHRyZXB
sYWNlYnVkZHk6IFJ1bm5pbmcgcmVwbGFjZSBjb21tYW5kIHZpYSBleGVjIG5leHQuJyApOwoJCWxpc3QoIC
RleGVjX291dHB1dCwgJGV4ZWNfZXhpdF9jb2RlICkgPSAkdGhpcy0+X2NvbW1hbmRidWRkeS0+ZXhlY3V0Z
SggJGNvbW1hbmQgKTsKCQkKCQkvLyBDaGVjayB0aGUgcmVzdWx0LgoJCWlmICggJGV4ZWNfZXhpdF9jb2Rl
ID09ICcwJyApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAndGV4dHJlcGxhY2V
idWRkeTogQ29tbWFuZCBhcHBlYXJzIHRvIHN1Y2NlZWRlZCBhbmQgcmV0dXJuZWQgcHJvcGVyIHJlc3Bvbn
NlLicgKTsKCQkJaWYgKCBmaWxlX2V4aXN0cyggJGZpbGUgLiAnLnRtcCcgKSApIHsgLy8gVGVtcCByZXBsY
WNlbWVudCBmaWxlIGZvdW5kLiBTVUNDRVNTIQoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ21lc3Nh
Z2UnLCAndGV4dHJlcGxhY2VidWRkeTogVGVtcG9yYXJ5IHRleHQgcmVwbGFjZW1lbnQgZmlsZSBjcmVhdGl
vbiB2ZXJpZmllZC4nICk7CgkJCQkvKgoJCQkJaWYgKCB0cnVlID09PSByZW5hbWUoICRmaWxlIC4gJy50bX
AnLCAkZmlsZSApICkgewoJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdtZXNzYWdlJywgJ3RleHRyZ
XBsYWNlYnVkZHk6IFRlbXBvcmFyeSBtb3ZlZCBiYWNrIHRvIG9yaWdpbmFsIGZpbGUuIFN1Y2Nlc3MuJyAp
OwoJCQkJCXJldHVybiB0cnVlOwoJCQkJfSBlbHNlIHsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCA
nZXJyb3InLCAndGV4dHJlcGxhY2VidWRkeTogVGVtcG9yYXJ5IGNvdWxkIG5vdCBiZSBtb3ZlZCBiYWNrIH
RvIG9yaWdpbmFsIGZpbGUuIEZhaWx1cmUuIFZlcmlmeSBwZXJtaXNzaW9ucy4nICk7CgkJCQkJcmV0dXJuI
GZhbHNlOwoJCQkJfQoJCQkJKi8KCQkJCXJldHVybiB0cnVlOwoJCQl9IGVsc2UgeyAvLyBTUUwgZmlsZSBN
SVNTSU5HLiBGQUlMVVJFIQoJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ3RleHRyZXB
sYWNlYnVkZHk6IFRob3VnaCBjb21tYW5kIHJlcG9ydGVkIHN1Y2Nlc3MgdGVtcG9yYXJ5IHJlcGxhY2VtZW
50IGZpbGUgaXMgbWlzc2luZzogYCcgLiAkb3V0cHV0X2ZpbGUgLiAnYC4nICk7CgkJCQlyZXR1cm4gZmFsc
2U7CgkJCX0KCQl9IGVsc2UgewoJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAndGV4dHJl
cGxhY2VidWRkeTogQ29tbWFuZCBkaWQgbm90IGV4aXQgbm9ybWFsbHkuIEZhbGxpbmcgYmFjayB0byB0ZXh
0IHJlcGxhY2VtZW50IGNvbXBhdGliaWxpdHkgbW9kZXMuJyApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQ
oJCQoJCS8vIFNob3VsZCBuZXZlciBnZXQgdG8gaGVyZS4KCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZ
XJyb3InLCAndGV4dHJlcGxhY2VidWRkeTogVW5jYXVnaHQgZXhjZXB0aW9uICM0NTMyMzg5MC4nICk7CgkJ
cmV0dXJuIGZhbHNlOwoJCQoJfSAvLyBFbmQgX3N0cmluZ3JlcGxhY2VfY29tbWFuZGxpbmUoKS4KCQoJCgk
KCS8qCV9zdHJpbmdyZXBsYWNlX3BocCgpCgkgKgkKCSAqCVBlcmZvcm1zIGFjdHVhbCBjb21tYW5kIGxpbm
Ugc3RyaW5nIHJlcGxhY2VtZW50LiBWSUEgUEhQLgoJICoJQ2FzZSBzZW5zaXRpdmUuCgkgKglSZXN1bHRpb
mcgZmlsZSBzdG9yZWQgaW4gJGZpbGUgLiAndG1wJy4KCSAqCQoJICoJQHBhcmFtCQlzdHJpbmcJCSRmaWxl
CQkJCUZ1bGwgZmlsZSBwYXRoIHRvIGZpbGUgdG8gcmVwbGFjZSBpbi4gYSAudG1wIHZlcnNpb24gaXMgdGV
tcG9yYXJpbHkgbWFkZS4KCSAqCUBwYXJhbQkJc3RyaW5nCQkkc2VhcmNoCQkJCVN0cmluZyB0byBzZWFyY2
ggZm9yLgoJICoJQHBhcmFtCQlzdHJpbmcJCSRyZXBsYWNlbWVudAkJU3RyaW5nIHRvIHJlcGxhY2Ugd2l0a
C4KCSAqCUBwYXJhbQkJc3RyaW5nCQkkcmVnZXhfY29uZGl0aW9uCUNvbmRpdGlvbiB3aGVuIHJlcGxhY2Vt
ZW50cyBtYXkgaGFwcGVuLiBPcHRpb25hbC4KCSAqCUBwYXJhbQkJc3RyaW5nCQkkcmVnZXhfcmVwbGFjZQk
JSWYgZmFsbGVuIGJhY2sgaW50byBQSFAgbW9kZSB0aGVuIHRoaXMgaXMgbmVlZGVkIElGICRyZWdleF9jb2
5kaXRpb24gaXMgcGFzc2VkLiBPcHRpb25hbC4KCSAqCUByZXR1cm4JCWJvb2xlYW4JCQkJCQkJVHJ1ZSBvb
iBzdWNjZXNzOyBlbHNlIGZhbHNlLgoJICovCglwcml2YXRlIGZ1bmN0aW9uIF9zdHJpbmdyZXBsYWNlX3Bo
cCggJGZpbGUsICRzZWFyY2gsICRyZXBsYWNlbWVudCwgJHJlZ2V4X2NvbmRpdGlvbiA9ICcnLCAkcmVnZXh
fcmVwbGFjZSA9ICcnICkgewoJCQoJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ3RleH
RyZXBsYWNlYnVkZHk6IFN0YXJ0aW5nIGNvbXB0aWJpbGl0eSBtb2RlIFBIUCB0ZXh0IHJlcGxhY2VtZW50L
icgKTsKCQkKCQkKCQkkZmlsZV9vID0gZm9wZW4oICRmaWxlLCAncicgKTsKCQkkdGVtcCA9ICRmaWxlIC4g
Jy50bXAnOwoJCQoJCWlmICggIWlzX3dyaXRhYmxlKCAkdGVtcCApICkgewoJCQlwYl9iYWNrdXBidWRkeTo
6c3RhdHVzKCAnZXJyb3InLCAndGV4dHJlcGxhY2VidWRkeTogUGVybWlzc2lvbiBkZW5pZWQgd3JpdGluZy
B0ZW1wb3JhcnkgZmlsZSBgJyAuICR0ZW1wIC4gJ2AuJyApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJC
WlmICggaXNfcmVzb3VyY2UoICRmaWxlX28gKSA9PT0gdHJ1ZSApIHsKCQkJd2hpbGUgKCBmZW9mKCAkZmls
ZV9vICkgPT09IGZhbHNlICkgewoJCQkKCQkJCWlmICggJHJlZ2V4X2NvbmRpdGlvbiAhPSAnJyApIHsgLy8
gcmVnZXgKCQkJCQkkY29udGVudCA9IHByZWdfcmVwbGFjZSggIi9eeyRyZWdleF9jb25kaXRpb259L2kiLC
AkcmVnZXhfcmVwbGFjZSwgZmdldHMoICRmaWxlX28gKSApOwoJCQkJfSBlbHNlIHsgLy8gc3RhbmRhcmQgc
3RyaW5nCgkJCQkJJGNvbnRlbnQgPSBzdHJfcmVwbGFjZSggJHNlYXJjaCwgJHJlcGxhY2VtZW50LCBmZ2V0
cyggJGZpbGVfbyApICk7CgkJCQl9CgkJCQlmaWxlX3B1dF9jb250ZW50cyggJHRlbXAsICRjb250ZW50LCB
GSUxFX0FQUEVORCApOwoJCQl9CgkJCQoJCQlmY2xvc2UoICRmaWxlX28gKTsKCQl9CgkJCgkJLy91bmxpbm
soJGZpbGUpOwoJCQoJCS8qCgkJJHJlc3VsdCA9IHJlbmFtZSggJHRlbXAsICRmaWxlICk7CgkJaWYgKCAkc
mVzdWx0ID09PSBmYWxzZSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJ3RleHRy
ZXBsYWNlYnVkZHk6IFVuYWJsZSB0byBtb3ZlIHRlbXBvcmFyeSBmaWxlIGJhY2sgdG8gb3JpZ2luYWwgZml
sZS4gRmFpbHVyZS4nICk7CgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2RldGFpbH
MnLCAndGV4dHJlcGxhY2VidWRkeTogTW92ZWQgdGVtcG9yYXJ5IGZpbGUgYmFjayB0byBvcmlnaW5hbCBma
WxlLiBTdWNjZXNzLicgKTsKCQl9CgkJKi8KCQkKCQlyZXR1cm4gJHJlc3VsdDsKCQkKCX0gLy8gRW5kIF9z
dHJpbmdyZXBsYWNlX3BocCgpLgoJCgkKCQoJLyoJZ2V0X21ldGhvZHMoKQoJICoJCgkgKglHZXQgYW4gYXJ
yYXkgb2YgbWV0aG9kcy4gTm90ZTogSWYgZm9yY2Ugb3ZlcnJpZGluZyBtZXRob2RzIHRoZW4gZGV0ZWN0ZW
QgbWV0aG9kcyB3aWxsIG5vdCBiZSBhYmxlIHRvIGRpc3BsYXkuCgkgKgkKCSAqCUByZXR1cm4JCWFycmF5C
QkJCUFycmF5IG9mIG1ldGhvZHMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfbWV0aG9kcygpIHsKCQly
ZXR1cm4gJHRoaXMtPl9tZXRob2RzOwoJfSAvLyBFbmQgZ2V0X21ldGhvZHMoKS4KCQoJCgkKCS8qCXNldF9
tZXRob2RzKCkKCSAqCQoJICoJU2V0IG1ldGhvZHMuIE92ZXJyaWRlcyBkZXRlY3RlZC4KCSAqCQoJICoJQH
BhcmFtCQlhcnJheQkJJG1ldGhvZHMJCUFycmF5IG9mIG1ldGhvZHMgdG8gc2V0LgoJICoJQHJldHVybgkJb
nVsbAoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0X21ldGhvZHMoICRtZXRob2RzID0gYXJyYXkoKSApIHsK
CQkkdGhpcy0+X21ldGhvZHMgPSAkbWV0aG9kczsKCX0gLy8gRW5kIHNldF9tZXRob2RzKCkuCgkKCQoJCn0
gLy8gRW5kIHBiX2JhY2t1cGJ1ZGR5X215c3FsYnVkZHkgY2xhc3MuCj8+
###PACKDATA,FILE_END,/lib/textreplacebuddy/textreplacebuddy.php,importbuddy/lib/tex
treplacebuddy/textreplacebuddy.php
###PACKDATA,FILE_START,/lib/cpanel/cpanel.php,importbuddy/lib/cpanel/cpanel.php
PD9waHAKLyoqCiAqIE1hbmFnZSBzb20gZWNwYW5lbCBzZXR0aW5ncy4KICoKICogQHBhY2thZ2UgQmFja3V
wQnVkZHkvY1BhbmVsCiAqLwoKLyoKRVhBTVBMRToKCnJlcXVpcmVfb25jZSggcGJfYmFja3VwYnVkZHk6On
BsdWdpbl9wYXRoKCkgLiAnL2xpYi9jcGFuZWwvY3BhbmVsLnBocCcgKTsKCiRjcGFuZWxfdXNlciA9IHBiX
2JhY2t1cGJ1ZGR5OjpfR0VUKCAndXNlcicgKTsKJGNwYW5lbF9wYXNzd29yZCA9IHBiX2JhY2t1cGJ1ZGR5
OjpfR0VUKCAncGFzcycgKTsKJGNwYW5lbF9ob3N0ID0gImZvby5jb20iOwokZGJfbmFtZSA9ICdhcHBsZXM
nOwokZGJfdXNlciA9ICdvcmFuZ2VzJzsKJGRiX3Bhc3MgPSAnYmFuYW5hcyc7CiRjcmVhdGVfZGJfcmVzdW
x0ID0gcGJfYmFja3VwYnVkZHlfY3BhbmVsOjpjcmVhdGVfZGIoICRjcGFuZWxfdXNlciwgJGNwYW5lbF9wY
XNzd29yZCwgJGNwYW5lbF9ob3N0LCAkZGJfbmFtZSwgJGRiX3VzZXIsICRkYl9wYXNzICk7CgppZiAoICRj
cmVhdGVfZGJfcmVzdWx0ID09PSB0cnVlICkgewoJZWNobyAnU3VjY2VzcyEgQ3JlYXRlZCBkYXRhYmFzZSw
gdXNlciwgYW5kIGFzc2lnbmVkIHVzZWQgdG8gZGF0YWJhc2UuJzsKfSBlbHNlIHsKCWVjaG8gJ0Vycm9yKH
MpOjxicj48cHJlPicgLiBwcmludF9yKCAkY3JlYXRlX2RiX3Jlc3VsdCwgdHJ1ZSApIC4gJzwvcHJlPic7C
n0KCiovCgovKioKICogQ3BhbmVsIENsYXNzCiAqCiAqIE1hbmFnZSBzb21lIGNwYW5lbCBzZXR0aW5ncy4K
ICovCmNsYXNzIHBiX2JhY2t1cGJ1ZGR5X2NwYW5lbCB7CgoJLyoqCgkgKiBDcmVhdGUgYSBkYXRhYmFzZSB
hbmQgYXNzaWduIGEgdXNlciB0byBpdCB3aXRoIGFsbCBwcml2aWxhZ2VzLgoJICoKCSAqIFRPRE86IFVzZS
Btb3JlIHJvYnVzdCB0aGFuIGZpbGVfZ2V0X2NvbnRlbnRzKCkuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkY
3BhbmVsX3VzZXIgICAgICBjUGFuZWwgdXNlcm5hbWUuCgkgKiBAcGFyYW0gc3RyaW5nICRjcGFuZWxfcGFz
c3dvcmQgIGNQYW5lbCBwYXNzd29yZC4KCSAqIEBwYXJhbSBzdHJpbmcgJGNwYW5lbF9ob3N0ICAgICAgY1B
hbmVsIGhvc3RuYW1lLgoJICogQHBhcmFtIHN0cmluZyAkZGJfbmFtZSAgICAgICAgICBEYXRhYmFzZSBuYW
1lLgoJICogQHBhcmFtIHN0cmluZyAkZGJfdXNlciAgICAgICAgICBEYXRhYmFzZSB1c2VybmFtZS4KCSAqI
EBwYXJhbSBzdHJpbmcgJGRiX3VzZXJwYXNzICAgICAgRGF0YWJhc2UgcGFzc3dvcmQuCgkgKiBAcGFyYW0g
aW50ICAgICRjcGFuZWxfcG9ydCAgICAgIGNQYW5lbCBwb3J0IG51bWJlci4KCSAqIEBwYXJhbSBzdHJpbmc
gJGNwYW5lbF9wcm90b2NvbCAgY1BhbmVsIHByb3RvY29sLgoJICoKCSAqIEByZXR1cm4gdHJ1ZXxhcnJheS
AgQm9vbGVhbiB0cnVlIG9uIHN1Y2Nlc3MsIGVsc2UgYW4gYXJyYXkgb2YgZXJyb3JzLgoJICovCglwdWJsa
WMgc3RhdGljIGZ1bmN0aW9uIGNyZWF0ZV9kYiggJGNwYW5lbF91c2VyLCAkY3BhbmVsX3Bhc3N3b3JkLCAk
Y3BhbmVsX2hvc3QsICRkYl9uYW1lLCAkZGJfdXNlciwgJGRiX3VzZXJwYXNzLCAkY3BhbmVsX3BvcnQgPSA
nMjA4MicsICRjcGFuZWxfcHJvdG9jb2wgPSAnaHR0cDovLycgKSB7CgkJJGNwYW5lbF9za2luID0gJ3gzJz
sKCQkkZXJyb3JzICAgICAgPSBhcnJheSgpOwoKCQkkY3BhbmVsX3Bhc3N3b3JkID0gdXJsZW5jb2RlKCAkY
3BhbmVsX3Bhc3N3b3JkICk7IC8vIFBhc3Mgb2Z0ZW4gaGFzIHNwZWNpYWwgY2hhcnMgc28gZW5jb2RlLgoK
CQkvLyBDYWxjdWxhdGUgYmFzZSBVUkwuCgkJJGJhc2VfdXJsID0gInskY3BhbmVsX3Byb3RvY29sfXskY3B
hbmVsX3VzZXJ9OnskY3BhbmVsX3Bhc3N3b3JkfUB7JGNwYW5lbF9ob3N0fTp7JGNwYW5lbF9wb3J0fS9leG
VjdXRlL015c3FsIjsKCgkJLy8gR2VuZXJhdGUgY3JlYXRlIGRhdGFiYXNlIFVSTC4KCQkkY3JlYXRlX2Rhd
GFiYXNlX3VybCA9ICRiYXNlX3VybCAuICIvY3JlYXRlX2RhdGFiYXNlP25hbWU9eyRjcGFuZWxfdXNlcn1f
eyRkYl9uYW1lfSI7CgoJCS8vIENyZWF0ZSByZXF1ZXN0IGNvcmUgb2JqIGZvciBjb25uZWN0aW5nIHRvIEh
UVFAuCgkJJHJlcXVlc3QgPSBuZXcgUmVxdWVzdENvcmUoICRjcmVhdGVfZGF0YWJhc2VfdXJsICk7CgkJdH
J5IHsKCQkJJHJlc3VsdCA9ICRyZXF1ZXN0LT5zZW5kX3JlcXVlc3QoIHRydWUgKTsKCQl9IGNhdGNoICggR
XhjZXB0aW9uICRlICkgewoJCQlpZiAoIHN0cmlzdHIoICRlLT5nZXRNZXNzYWdlKCksICdjb3VsZG5cJ3Qg
Y29ubmVjdCB0byBob3N0JyApICE9PSBmYWxzZSApIHsKCQkJCSRlcnJvcnNbXSA9IGVzY19odG1sX18oICd
VbmFibGUgdG8gY29ubmVjdCB0byBob3N0JywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnIGAnIC4gJG
NwYW5lbF9ob3N0IC4gJ2AgJyAuIGVzY19odG1sX18oICdvbiBwb3J0JywgJ2l0LWwxMG4tYmFja3VwYnVkZ
HknICkgLiAnIGAnIC4gJGNwYW5lbF9wb3J0IC4gJ2AuICcgLiBlc2NfaHRtbF9fKCAnVmVyaWZ5IHRoZSBj
UGFuZWwgZG9tYWluL1VSTCBhbmQgbWFrZSBzdXJlIHRoZSBzZXJ2ZXIgaXMgYWJsZSB0byBpbml0aWF0ZSB
vdXRnb2luZyBodHRwIGNvbm5lY3Rpb25zIG9uIHBvcnQgJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLi
AkY3BhbmVsX3BvcnQgLiAnLiAnIC4gZXNjX2h0bWxfXyggJ1NvbWUgaG9zdHMgYmxvY2sgdGhpcy4nLCAna
XQtbDEwbi1iYWNrdXBidWRkeScgKTsKCQkJCXJldHVybiAkZXJyb3JzOwoJCQl9CgkJCSRlcnJvcnNbXSA9
IGVzY19odG1sX18oICdDYXVnaHQgZXhjZXB0aW9uOiAnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICR
lLT5nZXRNZXNzYWdlKCkgLiAnLiAnIC4gZXNjX2h0bWxfXyggJ0Z1bGwgVVJMOiAnLCAnaXQtbDEwbi1iYW
NrdXBidWRkeScgKSAuICRjcmVhdGVfZGF0YWJhc2VfdXJsOwoJCQlyZXR1cm4gJGVycm9yczsKCQl9CgoJC
S8vIEdlbmVyYXRlIGNyZWF0ZSBkYXRhYmFzZSB1c2VyIFVSTC4KCQkkY3JlYXRlX3VzZXJfdXJsID0gJGJh
c2VfdXJsIC4gIi9jcmVhdGVfdXNlcj9uYW1lPXskY3BhbmVsX3VzZXJ9X3skZGJfdXNlcn0mcGFzc3dvcmQ
9eyRkYl91c2VycGFzc30iOwoKCQkvLyBHZW5lcmF0ZSBhc3NpZ24gdXNlciBkYXRhYmFzZSBhY2Nlc3MgVV
JMLgoJCSRhc3NpZ25fdXNlcl91cmwgPSAkYmFzZV91cmwgLiAiL3NldF9wcml2aWxlZ2VzX29uX2RhdGFiY
XNlP3VzZXI9eyRjcGFuZWxfdXNlcn1feyRkYl91c2VyfSZkYXRhYmFzZT17JGNwYW5lbF91c2VyfV97JGRi
X25hbWV9JnByaXZpbGVnZXM9QUxMIjsKCgkJaWYgKCBmYWxzZSA9PT0gJHJlc3VsdC0+aXNPSygpICkgewo
JCQkkZXJyb3JzW10gPSBlc2NfaHRtbF9fKCAnVW5hYmxlIHRvIGNyZWF0ZSBkYXRhYmFzZSAtIHJlc3Bvbn
NlIHN0YXR1cyBjb2RlOiAnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICRyZXN1bHQtPnN0YXR1czsKC
Ql9IGVsc2UgewoJCQkkcmVzdWx0X2FycmF5ID0ganNvbl9kZWNvZGUoICRyZXN1bHQtPmJvZHksIHRydWUg
KTsKCQkJaWYgKCBpc3NldCggJHJlc3VsdF9hcnJheVsnc3RhdHVzJ10gKSAmJiAwID09ICRyZXN1bHRfYXJ
yYXlbJ3N0YXR1cyddICkgewoJCQkJLy8gc3RhdHVzID0gMCBtZWFucyBhIGZhaWx1cmUuCgkJCQkkZXJyb3
JzW10gPSBlc2NfaHRtbF9fKCAnVW5hYmxlIHRvIGNyZWF0ZSBkYXRhYmFzZTonLCAnaXQtbDEwbi1iYWNrd
XBidWRkeScgKTsKCQkJCWlmICggaXNzZXQoICRyZXN1bHRfYXJyYXlbJ2Vycm9ycyddICkgJiYgKCBpc19h
cnJheSggJHJlc3VsdF9hcnJheVsnZXJyb3JzJ10gKSApICkgewoJCQkJCWZvcmVhY2ggKCAkcmVzdWx0X2F
ycmF5WydlcnJvcnMnXSBhcyAkZXJyb3IgKSB7CgkJCQkJCSRlcnJvcnNbXSA9ICRlcnJvcjsKCQkJCQl9Cg
kJCQl9CgkJCX0KCQl9CgoJCS8vIFJ1biBjcmVhdGUgZGF0YWJhc2UgdXNlci4KCQlpZiAoIGNvdW50KCAkZ
XJyb3JzICkgPT09IDAgKSB7CgkJCSRyZXF1ZXN0ID0gbmV3IFJlcXVlc3RDb3JlKCAkY3JlYXRlX3VzZXJf
dXJsICk7CgkJCXRyeSB7CgkJCQkkcmVzdWx0ID0gJHJlcXVlc3QtPnNlbmRfcmVxdWVzdCggdHJ1ZSApOwo
JCQl9IGNhdGNoICggRXhjZXB0aW9uICRlICkgewoJCQkJJGVycm9yc1tdID0gZXNjX2h0bWxfXyggJ0NhdW
dodCBleGNlcHRpb246ICcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJGUtPmdldE1lc3NhZ2UoKTsKC
QkJCXJldHVybiAkZXJyb3JzOwoJCQl9CgoJCQlpZiAoIGZhbHNlID09PSAkcmVzdWx0LT5pc09LKCkgKSB7
CgkJCQkkZXJyb3JzW10gPSBlc2NfaHRtbF9fKCAnVW5hYmxlIHRvIGNyZWFldCB1c2VyIC0gcmVzcG9uc2U
gc3RhdHVzIGNvZGU6ICcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJHJlc3VsdC0+c3RhdHVzOwoJCQ
l9IGVsc2UgewoJCQkJJHJlc3VsdF9hcnJheSA9IGpzb25fZGVjb2RlKCAkcmVzdWx0LT5ib2R5LCB0cnVlI
Ck7CgkJCQlpZiAoIGlzc2V0KCAkcmVzdWx0X2FycmF5WydzdGF0dXMnXSApICYmIDAgPT0gJHJlc3VsdF9h
cnJheVsnc3RhdHVzJ10gKSB7CgkJCQkJLy8gc3RhdHVzID0gMCBtZWFucyBhIGZhaWx1cmUuCgkJCQkJJGV
ycm9yc1tdID0gZXNjX2h0bWxfXyggJ1VuYWJsZSB0byBjcmVhdGUgdXNlcjonLCAnaXQtbDEwbi1iYWNrdX
BidWRkeScgKTsKCQkJCQlpZiAoIGlzc2V0KCAkcmVzdWx0X2FycmF5WydlcnJvcnMnXSApICYmICggaXNfY
XJyYXkoICRyZXN1bHRfYXJyYXlbJ2Vycm9ycyddICkgKSApIHsKCQkJCQkJZm9yZWFjaCAoICRyZXN1bHRf
YXJyYXlbJ2Vycm9ycyddIGFzICRlcnJvciApIHsKCQkJCQkJCSRlcnJvcnNbXSA9ICRlcnJvcjsKCQkJCQk
JfQoJCQkJCX0KCQkJCX0KCQkJfQoJCX0KCgkJLy8gUnVuIGFzc2lnbiB1c2VyIHRvIGRhdGFiYXNlLgoJCW
lmICggY291bnQoICRlcnJvcnMgKSA9PT0gMCApIHsKCQkJJHJlcXVlc3QgPSBuZXcgUmVxdWVzdENvcmUoI
CRhc3NpZ25fdXNlcl91cmwgKTsKCQkJdHJ5IHsKCQkJCSRyZXN1bHQgPSAkcmVxdWVzdC0+c2VuZF9yZXF1
ZXN0KCB0cnVlICk7CgkJCX0gY2F0Y2ggKCBFeGNlcHRpb24gJGUgKSB7CgkJCQkkZXJyb3JzW10gPSBlc2N
faHRtbF9fKCAnQ2F1Z2h0IGV4Y2VwdGlvbjogJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAkZS0+Z2
V0TWVzc2FnZSgpOwoJCQkJcmV0dXJuICRlcnJvcnM7CgkJCX0KCgkJCWlmICggZmFsc2UgPT09ICRyZXN1b
HQtPmlzT0soKSApIHsKCQkJCSRlcnJvcnNbXSA9IGVzY19odG1sX18oICdVbmFibGUgdG8gc2V0IHByaXZp
bGVnZXMgZm9yIHVzZXIgLSByZXNwb25zZSBzdGF0dXMgY29kZTogJywgJ2l0LWwxMG4tYmFja3VwYnVkZHk
nICkgLiAkcmVzdWx0LT5zdGF0dXM7CgkJCX0gZWxzZSB7CgkJCQkkcmVzdWx0X2FycmF5ID0ganNvbl9kZW
NvZGUoICRyZXN1bHQtPmJvZHksIHRydWUgKTsKCQkJCWlmICggaXNzZXQoICRyZXN1bHRfYXJyYXlbJ3N0Y
XR1cyddICkgJiYgKCAwID09ICRyZXN1bHRfYXJyYXlbJ3N0YXR1cyddICkgKSB7CgkJCQkJLy8gc3RhdHVz
ID0gMCBtZWFucyBhIGZhaWx1cmUuCgkJCQkJJGVycm9yc1tdID0gZXNjX2h0bWxfXyggJ1VuYWJsZSB0byB
zZXQgcHJpdmlsZWdlcyBmb3IgdXNlcjonLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsKCQkJCQlpZiAoIG
lzc2V0KCAkcmVzdWx0X2FycmF5WydlcnJvcnMnXSApICYmICggaXNfYXJyYXkoICRyZXN1bHRfYXJyYXlbJ
2Vycm9ycyddICkgKSApIHsKCQkJCQkJZm9yZWFjaCAoICRyZXN1bHRfYXJyYXlbJ2Vycm9ycyddIGFzICRl
cnJvciApIHsKCQkJCQkJCSRlcnJvcnNbXSA9ICRlcnJvcjsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfQo
JCX0KCgkJaWYgKCBjb3VudCggJGVycm9ycyApID4gMCApIHsgLy8gT25lIG9yIG1vcmUgZXJyb3JzLgoJCQ
lyZXR1cm4gJGVycm9yczsKCQl9IGVsc2UgewoJCQlyZXR1cm4gdHJ1ZTsgLy8gU3VjY2VzcyEKCQl9CgoJf
QoKfSAvLyBlbmQgY2xhc3MuCg==
###PACKDATA,FILE_END,/lib/cpanel/cpanel.php,importbuddy/lib/cpanel/cpanel.php
###PACKDATA,FILE_START,/lib/cpanel/index.php,importbuddy/lib/cpanel/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/lib/cpanel/index.php,importbuddy/lib/cpanel/index.php
###PACKDATA,FILE_START,/pluginbuddy/_pluginbuddy.php,importbuddy/pluginbuddy/_plugi
nbuddy.php
PD9waHAKLyoqCiAqIEZyYW1ld29yayBmb3IgaGFuZGxpbmcgYWxsIHBsdWdpbiBmdW5jdGlvYWxpdHksIGF
yY2hpdGVjdHVyZSwgZXRjLgogKiAkc2V0dGluZ3MgdmFyaWFibGUgaXMgZXhwZWN0ZWQgdG8gYmUgaW4gdG
hlIHNhbWUgc2NvcGUgb2YgdGhpcyBmaWxlIGFuZCBwcmV2aW91c2x5IHBvcHVsYXRlZCB3aXRoIGFsbCBwb
HVnaW4gc2V0dGluZ3MuCiAqCiAqIEBhdXRob3IgRHVzdGluIEJvbHRvbgogKiBAcGFja2FnZSBCYWNrdXBC
dWRkeQogKiBAc3VicGFja2FnZSBQbHVnaW5CdWRkeQogKi8KCi8qKgogKiBQbHVnaW5CdWRkeSBDbGFzcwo
gKi8KY2xhc3MgcGJfYmFja3VwYnVkZHkgewoKCS8qKgoJICogUGx1Z2luQnVkZHkgRnJhbWV3b3JrIFZlcn
Npb24KCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcml2YXRlIHN0YXRpYyAkcGJmcmFtZXdvcmtfdmVyc
2lvbiA9ICcxLjAuMjgnOwoKCS8qKgoJICogTWljcm90aW1lIHdoZW4gaW5pdCgpIHdhcyBmaXJzdCBydW4u
CgkgKgoJICogQHZhciBmbG9hdAoJICovCglwdWJsaWMgc3RhdGljICRzdGFydF90aW1lOwoKCS8qKgoJICo
gU3RvcmVzIGFsbCBvcHRpb25zIGZvciBwbHVnaW4gdGhhdCB3aWxsIGNoYW5nZSBzdWNoIGFzIHVzZXIgZG
VmaW5lZCBzZXR0aW5ncy4KCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXB1YmxpYyBzdGF0aWMgJG9wdGlvb
nM7CgoJLyoqCgkgKiBVc2VyIGludGVyZmFjZSBjbGFzcyBmb3IgcmFwaWRseSBjb25zdHJ1Y3RpbmcgV1At
c3R5bGVkIEdVSXMuCgkgKgoJICogUkVNT1ZFRC4gTm93IGFkZGVkIGF0IHJ1bnRpbWUgd2hlbiBpbml0X2N
sYXNzX2NvbnRyb2xsZXIoKSBjYWxsZWQKCSAqCgkgKiBAdmFyIG9iamVjdAoJICovCglwdWJsaWMgc3RhdG
ljICR1aTsKCgkvKioKCSAqIENsYXNzIGZvciBtYW5pcHVsYXRpbmcgJiBpbnRlcmZhY2luZyBmaWxlIHN5c
3RlbS4KCSAqCgkgKiBAdmFyIG9iamVjdAoJICovCglwdWJsaWMgc3RhdGljICRmaWxlc3lzdGVtOwoKCS8q
KgoJICogQ2xhc3MgZm9yIGZvcm1hdHRpbmcgZGF0YSBvciB0ZXh0IGluIGh1bWFuIGZyaWVuZGx5IGZvcm1
zLgoJICoKCSAqIEB2YXIgb2JqZWN0CgkgKi8KCXB1YmxpYyBzdGF0aWMgJGZvcm1hdDsKCgkvKioKCSAqIE
FycmF5IGhvbGRlciBmb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgbmVlZGVkIGdsb2JhbGx5IGJ5IHBsdWdpb
i4gU2V0L2dldCB3aXRoICRjbGFzc1snY2xhc3Nfc2x1ZyddLgoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJ
cHVibGljIHN0YXRpYyAkY2xhc3NlcyA9IGFycmF5KCk7CgoJLyoqCgkgKiBBcnJheSBob2xkZXIgZm9yIHV
zZXItZGVmaW5lZCB2YXJpYWJsZXMgbmVlZGVkIGdsb2JhbGx5IGJ5IHBsdWdpbi4KCSAqIFNldC9nZXQgd2
l0aCAkdmFyaWFibGVzWyd2YXJfbmFtZSddLiBVc2VmdWwgZm9yIHRoaW5ncyBzdWNoIGFzIGFuIGluc3Rhb
mNlIGNvdW50ZXIgdGhhdCBpbmNyZW1lbnRzLgoJICoKCSAqIEB2YXIgYXJyYXkKCSAqLwoJcHVibGljIHN0
YXRpYyAkdmFyaWFibGVzID0gYXJyYXkoKTsKCgoJLyoqCgkgKiBEZWZhdWx0IGZyYW1ld29yayBzZXR0aW5
ncyBmb3IgdGhpcyBwbHVnaW4uCgkgKiBOT1QgdGhlIHNhbWUgYXMgb3B0aW9ucy4KCSAqCgkgKiBBY2Nlc3
MgdmlhIHNlbGY6OnNldHRpbmdzKCkuCgkgKgoJICogQHZhciBhcnJheQoJICovCglwcml2YXRlIHN0YXRpY
yAkX3NldHRpbmdzID0gYXJyYXkoCgkJJ3NsdWcnICAgICAgICAgICAgPT4gJycsCgkJJ3NlcmllcycgICAg
ICAgICAgPT4gJycsCgkJJ2RlZmF1bHRfb3B0aW9ucycgPT4gJycsCgkJJ2xvZ19zZXJpYWwnICAgICAgPT4
gJycsCgkJJ2luaXQnICAgICAgICAgICAgPT4gJycsCgkpOwoKCS8qKgoJICogSG9sZHMgYWRtaW4gcGFnZS
BzZXR0aW5ncyBmb3IgYWRkaW5nIHRvIHRoZSBhZG1pbiBtZW51IG9uIGEgaG9vayBsYXRlci4KCSAqCgkgK
iBAdmFyIGFycmF5CgkgKi8KCXByaXZhdGUgc3RhdGljICRfcGFnZV9zZXR0aW5nczsKCgkvKioKCSAqIFNl
cmlhbCBmb3Igd3JpdGluZyB0aGUgc3RhdHVzIGZvciB0aGlzIHBhZ2UgbG9hZC4KCSAqCgkgKiBAdmFyIHN
0cmluZwoJICovCglwdWJsaWMgc3RhdGljICRfc3RhdHVzX3NlcmlhbCA9ICcnOwoKCS8qKgoJICogV2hldG
hlciBvciBub3QgZmx1c2goKSBoYXMgYmVlbiBjYWxsZWQgeWV0IG9yIG5vdC4KCSAqCgkgKiBAdmFyIGJvb
2wKCSAqLwoJcHJpdmF0ZSBzdGF0aWMgJF9oYXNfZmx1c2hlZCA9IGZhbHNlOwoKCS8qKgoJICogQ29udHJv
bGxlciBvYmplY3RzLiBTZWU6IC9jb250cm9sbGVycy8gZGlyZWN0b3J5LgoJICovCgoJLyoqCgkgKiBDb25
0cm9sbGVyIGZvciBXb3JkUHJlc3MgYWN0aW9ucy4KCSAqCgkgKiBAdmFyIG9iamVjdAoJICovCglwcml2YX
RlIHN0YXRpYyAkX2FjdGlvbnM7CgoJLyoqCgkgKiBDb250cm9sbGVyIGZvciBXb3JkUHJlc3MgQUpBWCBhY
3Rpb25zLgoJICoKCSAqIEB2YXIgb2JqZWN0CgkgKi8KCXB1YmxpYyBzdGF0aWMgJF9hamF4OwoKCS8qKgoJ
ICogQ29udHJvbGxlciBmb3IgV29yZFByZXNzIHNjaGVkdWxlZCBjcm9ucy4KCSAqCgkgKiBAdmFyIG9iamV
jdAoJICovCglwcml2YXRlIHN0YXRpYyAkX2Nyb247CgoJLyoqCgkgKiBDb250cm9sbGVyIGZvciBXb3JkUH
Jlc3MgYWRtaW4gZGFzaGJvYXJkIGl0ZW1zLgoJICoKCSAqIEB2YXIgb2JqZWN0CgkgKi8KCXByaXZhdGUgc
3RhdGljICRfZGFzaGJvYXJkOwoKCS8qKgoJICogQ29udHJvbGxlciBmb3IgV29yZFByZXNzIGZpbHRlcnMu
CgkgKgoJICogQHZhciBvYmplY3QKCSAqLwoJcHJpdmF0ZSBzdGF0aWMgJF9maWx0ZXJzOwoKCS8qKgoJICo
gQ29udHJvbGxlciBmb3IgV29yZFByZXNzIHNob3J0Y29kZXMuCgkgKgoJICogQHZhciBvYmplY3QKCSAqLw
oJcHJpdmF0ZSBzdGF0aWMgJF9zaG9ydGNvZGVzOwoKCS8qKgoJICogQ29udHJvbGxlciBmb3IgV29yZFByZ
XNzIHdpZGdldHMuCgkgKi8KCS8vIHByaXZhdGUgc3RhdGljICRfd2lkZ2V0czsKCgkvKioKCSAqIENvbnRy
b2xsZXIgZm9yIFdvcmRQcmVzcyBwYWdlcy4gU2VlIC9jb250cm9sbGVycy9wYWdlcy8gZGlyZWN0b3J5Lgo
JICoKCSAqIEB2YXIgb2JqZWN0CgkgKi8KCXByaXZhdGUgc3RhdGljICRfcGFnZXM7CgoJLyoqCgkgKiBMb2
NhbCBwYXRoIHRvIHBsdWdpbi4KCSAqIEV4OiAvdXNlcnMvcGIvd3d3L3dwLWNvbnRlbnQvcGx1Z2lucy9te
V9wbHVnaW4gKG5vIHRyYWlsaW5nIHNsYXNoKQoJICoKCSAqIEBzZWUgcGx1Z2luYnVkZHk6cGx1Z2luX3Bh
dGgoKQoJICoKCSAqIEB2YXIgc3RyaW5nCgkgKi8KCXByaXZhdGUgc3RhdGljICRfcGx1Z2luX3BhdGg7Cgo
JLyoqCgkgKiBVUkwgdG8gcGx1Z2luIGRpcmVjdG9yeS4KCSAqIEV4OiBodHRwOi8vcGx1Z2luYnVkZHkuY2
9tL3dwLWNvbnRlbnQvcGx1Z2lucy9teV9wbHVnaW4vICh3aXRoIHRyYWlsaW5nIHNsYXNoKQoJICoKCSAqI
EBzZWUgc2VsZjo6cGx1Z2luX3VybCgpCgkgKgoJICogQHZhciBzdHJpbmcKCSAqLwoJcHJpdmF0ZSBzdGF0
aWMgJF9wbHVnaW5fdXJsOwoKCS8qKgoJICogUmV0dXJucyBVUkwgdG8gdGhlIGN1cnJlbnQgYWRtaW4gcGF
nZSBpZiBvbiBhIHBsdWdpbiBwYWdlLgoJICogRXg6IGh0dHA6Ly9wbHVnaW5idWRkeS5jb20vd3AtYWRtaW
4vaW5kZXgucGhwP3BhZ2U9cGJfbXlwbHVnaW4KCSAqCgkgKiBAc2VlIHNlbGY6OnBhZ2VfbGluaygpCgkgK
goJICogQHZhciBzdHJpbmcKCSAqLwoJcHJpdmF0ZSBzdGF0aWMgJF9zZWxmX2xpbms7CgoJLyoqCgkgKiBE
SVNBQkxFRC4gVXNpbmcgY3JlYXRlX2Z1bmN0aW9uKCkgdG8gYnlwYXNzIG5lZWQgZm9yIHRoaXMuIEN1cnJ
lbnRseSBvbmx5IGhvbGRpbmcgY2FsbGJhY2sgZm9yIHRoZSBhZG1pbiBtZW51LgoJICogTm90ZTogVHJ5IG
5vdCB0byB1c2UgY3JlYXRlX2Z1bmN0aW9uKCkuCgkgKgoJICogQHNlZSBwbHVnaW5idWRkeV9jYWxsYmFja
3MgY2xhc3MKCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCS8vIHByaXZhdGUgc3RhdGljICRfY2FsbGJhY2tz
OwoKCS8qKgoJICogSG9sZHMgdGFnIGFuZCB0aXRsZSBmb3IgdW5jb25zdHJ1Y3RlZCBkYXNoYm9hcmQgd2l
kZ2V0cyB0ZW1wb3JhcmlseS4KCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXB1YmxpYyBzdGF0aWMgJF9kYX
NoYm9hcmRfd2lkZ2V0czsKCgkvKioKCSAqIENvbnRhaW5zIHVwZGF0ZXIgb2JqZWN0IChpZiBlbmFibGVkK
SBvZiB0aGUgbW9zdCB1cCB0byBkYXRlIHVwZGF0ZXIgZm91bmQuIFBvcHVsYXRlZCBvbiBpbml0IGhvb2su
CgkgKgoJICogQHZhciBvYmplY3QKCSAqLwoJcHVibGljIHN0YXRpYyAkX3VwZGF0ZXI7CgoJLyoqCgkgKiB
JZiB1bmFibGUgdG8gd3JpdGUgdG8gbG9nIHRoZW4gc2tpcCBhbGwgZnV0dXJlIGF0dGVtcHRzLgoJICoKCS
AqIEB2YXIgYm9vbAoJICovCglwcml2YXRlIHN0YXRpYyAkX3NraXBsb2c7CgoJLyoqCgkgKiBDb25zdHJ1Y
3RvciBmb3IgdGhpcyBzdGF0aWMgY2xhc3MuCgkgKgoJICogQ2FsbGVkIGZyb20gdGhlIHBsdWdpbidzIGlu
aXQgKG9yIG90aGVyIGRlZmluZWQgaW4gcGJfYmFja3VwYnVkZHk6OnNldHRpbmdzKCAnaW5pdCcgKSkgZml
sZS4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgICRwbHVnaW5idWRkeV9zZXR0aW5ncyAgQXJyYXkgb2YgcGx1Z2
luIHNldHRpbmdzIHN1Y2ggYXMgc2x1ZywgZGVmYXVsdCBvcHRpb25zLgoJICogQHBhcmFtIHN0cmluZyAkc
Gx1Z2luYnVkZHlfaW5pdCAgICAgIEluaXQgZmlsZS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBp
bml0KCAkcGx1Z2luYnVkZHlfc2V0dGluZ3MsICRwbHVnaW5idWRkeV9pbml0ID0gJ2luaXQucGhwJyApIHs
KCQlzZWxmOjokc3RhcnRfdGltZSA9IG1pY3JvdGltZSggdHJ1ZSApOwoJCXNlbGY6OiRfc2V0dGluZ3MgID
0gYXJyYXlfbWVyZ2UoIChhcnJheSkgc2VsZjo6JF9zZXR0aW5ncywgKGFycmF5KSAkcGx1Z2luYnVkZHlfc
2V0dGluZ3MgKTsgLy8gTWVyZ2Ugc2V0dGluZ3Mgb3ZlciBmcmFtZXdvcmsgZGVmYXVsdHMuCgoJCWlmICgg
ZnVuY3Rpb25fZXhpc3RzKCAncGx1Z2luX2Rpcl91cmwnICkgKSB7IC8vIFVSTCBhbmQgcGF0aCBmdW5jdGl
vbnMgYXZhaWxhYmxlIChub3QgaW4gSW1wb3J0QnVkZHkgYnV0IGluc2lkZSBXb3JkUHJlc3MpLgoJCQlzZW
xmOjokX3BsdWdpbl9wYXRoID0gcnRyaW0oIHBsdWdpbl9kaXJfcGF0aCggZGlybmFtZSggX19GSUxFX18gK
SApLCAnL1xcJyApOwoJCQlzZWxmOjokX3BsdWdpbl91cmwgID0gcnRyaW0oIHBsdWdpbl9kaXJfdXJsKCBk
aXJuYW1lKCBfX0ZJTEVfXyApICksICcvXFwnICk7CgkJfSBlbHNlIHsgLy8gR2VuZXJhdGUgVVJMIGFuZCB
wYXRocyBvbGQgd2F5IChvbGQgV29yZFByZXNzIHZlcnNpb25zIG9yIGluc2lkZSBJbXBvcnRCdWRkeSkuCg
kJCXNlbGY6OiRfcGx1Z2luX3BhdGggPSBkaXJuYW1lKCBkaXJuYW1lKCBfX0ZJTEVfXyApICk7CgkJCSRyZ
WxhdGl2ZV9wYXRoICAgICAgPSBsdHJpbSggc3RyX3JlcGxhY2UoICdcXCcsICcvJywgc3RyX3JlcGxhY2Uo
IHJ0cmltKCBBQlNQQVRILCAnXFxcLycgKSwgJycsIHNlbGY6OiRfcGx1Z2luX3BhdGggKSApLCAnXFxcLyc
gKTsKCQkJaWYgKCBwYl9pc19zdGFuZGFsb25lKCkgKSB7CgkJCQlzZWxmOjokX3BsdWdpbl91cmwgPSAnaW
1wb3J0YnVkZHknOyAvLyBSZWxhdGl2ZSBpbXBvcnRidWRkeSBwYXRoLgoJCQl9IGVsc2UgeyAvLyBOb3JtY
WwgZnVsbCBwYXRoLgoJCQkJc2VsZjo6JF9wbHVnaW5fdXJsID0gc2l0ZV91cmwoKSAuICcvJyAuIGx0cmlt
KCAkcmVsYXRpdmVfcGF0aCwgJy8nICk7CgkJCQlpZiAoIGlzc2V0KCAkX1NFUlZFUlsnSFRUUFMnXSApICY
mICdvbicgPT09ICRfU0VSVkVSWydIVFRQUyddICkgeyAvLyBIYW5kbGUgaHR0cHMgVVJMcyBwcm9wZXJseS
4KCQkJCQlzZWxmOjokX3BsdWdpbl91cmwgPSBzdHJfcmVwbGFjZSggJ2h0dHA6Ly8nLCAnaHR0cHM6Ly8nL
CBzZWxmOjokX3BsdWdpbl91cmwgKTsKCQkJCX0KCQkJfQoJCX0KCgkJaWYgKCBpc3NldCggJF9HRVRbJ3Bh
Z2UnXSApICkgeyAvLyBJZiBpbiBhbiBhZG1pbiBwYWdlIHRoZW4gYXBwZW5kIHBhZ2UgcXVlcnlzdHJpbmc
uCgkJCSRhcnIgICAgICAgICAgICAgID0gZXhwbG9kZSggJz8nLCAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXS
ApOyAvLyBhdm9pZCByZWZlcmVuY2UgZXJyb3IgYnkgc2V0dGluZyBoZXJlLgoJCQlzZWxmOjokX3NlbGZfb
GluayA9IGFycmF5X3NoaWZ0KCAkYXJyICkgLiAnP3BhZ2U9JyAuIGh0bWxlbnRpdGllcyggJF9HRVRbJ3Bh
Z2UnXSApOwoJCQl1bnNldCggJGFyciApOwoJCX0KCgkJLy8gU2V0IHRoZSBpbml0IGZpbGUuCgkJc2VsZjo
6JF9zZXR0aW5nc1snaW5pdCddID0gJHBsdWdpbmJ1ZGR5X2luaXQ7CgoJCS8vIGZpbGVzeXN0ZW0gY2xhc3
MgY29udHJvbGxlci4KCQlpZiAoIGlzc2V0KCBzZWxmOjokX3NldHRpbmdzWydtb2R1bGVzJ11bJ2ZpbGVze
XN0ZW0nXSApICYmIHRydWUgPT09IHNlbGY6OiRfc2V0dGluZ3NbJ21vZHVsZXMnXVsnZmlsZXN5c3RlbSdd
ICkgewoJCQlzZWxmOjppbml0X2NsYXNzX2NvbnRyb2xsZXIoICdmaWxlc3lzdGVtJyApOwoJCX0KCQkvLyB
mb3JtYXQgY2xhc3MgY29udHJvbGxlci4KCQlpZiAoIGlzc2V0KCBzZWxmOjokX3NldHRpbmdzWydtb2R1bG
VzJ11bJ2Zvcm1hdCddICkgJiYgdHJ1ZSA9PT0gc2VsZjo6JF9zZXR0aW5nc1snbW9kdWxlcyddWydmb3JtY
XQnXSApIHsKCQkJc2VsZjo6aW5pdF9jbGFzc19jb250cm9sbGVyKCAnZm9ybWF0JyApOwoJCX0KCgkJaWYg
KCBpc19hZG1pbigpICkgewoKCQkJLy8gTG9hZCBVSSBzeXN0ZW0uCgkJCXNlbGY6OmluaXRfY2xhc3NfY29
udHJvbGxlciggJ3VpJyApOwoKCQkJLy8gTG9hZCBhY3RpdmF0aW9uIGhvb2sgaWYgaW4gYWRtaW4gYW5kIG
FjdGl2YXRpb24gZmlsZSBleGlzdHMuCgkJCWlmICggZmlsZV9leGlzdHMoIHNlbGY6OiRfcGx1Z2luX3Bhd
GggLiAnL2NvbnRyb2xsZXJzL2FjdGl2YXRpb24ucGhwJyApICkgewoJCQkJcmVnaXN0ZXJfYWN0aXZhdGlv
bl9ob29rKCBzZWxmOjokX3BsdWdpbl9wYXRoIC4gJy8nIC4gcGJfYmFja3VwYnVkZHk6OnNldHRpbmdzKCA
naW5pdCcgKSwgYXJyYXkoICdwYl9iYWNrdXBidWRkeScsICdsb2FkX2FjdGl2YXRpb25fY29udHJvbGxlci
cgKSApOyAvLyBSdW4gc29tZSBjb2RlIHdoZW4gcGx1Z2luIGlzIGFjdGl2YXRlZCBpbiBkYXNoYm9hcmQuC
gkJCX0KCQl9CgoJfSAvLyBFbmQgaW5pdCgpLgoKCS8qKgoJICogTG9hZHMgQWN0aXZhdGlvbiBDb250cm9s
bGVyCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZF9hY3RpdmF0aW9uX2NvbnRyb2xsZXIoKSB
7CgkJLy8gUmVwbGFjZSBhIHBhdGggc3RhcnRpbmcgd2l0aCBcXCB0byBiZSBcXFxcIHNvIHRoYXQgd2hlbi
BjcmVhdGVfZnVuY3Rpb24gcGFyc2VzIHRoZSBiYWNrc2xhc2ggaXQgd2lsbCByZXR1cm4gYmFjayB0byBcX
C4KCQkkZXNjYXBlZF9wbHVnaW5fcGF0aCA9IHByZWdfcmVwbGFjZSggJyNeXFxcXFxcXFwjJywgJ1xcXFxc
XFxcXFxcXFxcXFwnLCBzZWxmOjokX3BsdWdpbl9
wYXRoICk7CgkJcmVxdWlyZV9vbmNlICRlc2NhcGVkX3BsdWdpbl9wYXRoIC4gJy9jb250cm9sbGVycy9hY3
RpdmF0aW9uLnBocCc7Cgl9CgoJLyoqCgkgKiBSZXR1cm5zIGxvY2FsIHBhdGggdG8gcGx1Z2luLkV4OiAvd
XNlcnMvcGIvd3d3L3dwLWNvbnRlbnQvcGx1Z2lucy9teV9wbHVnaW4gKG5vIHRyYWlsaW5nIHNsYXNoKQoJ
ICoKCSAqIEByZXR1cm4gc3RyaW5nIFBsdWdpbiBwYXRoIGRpcmVjdG9yeSAobm8gdHJhaWxpbmcgc2xhc2g
pLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBsdWdpbl9wYXRoKCkgewoJCXJldHVybiBzZWxmOj
okX3BsdWdpbl9wYXRoOwoJfSAvLyBFbmQgcGx1Z2luX3BhdGgoKS4KCgkvKioKCSAqIFJldHVybnMgVVJMI
HRvIHBsdWdpbiBkaXJlY3RvcnkuCgkgKiBFeDogaHR0cDovL3BsdWdpbmJ1ZGR5LmNvbS93cC1jb250ZW50
L3BsdWdpbnMvbXlfcGx1Z2luLyAod2l0aCB0cmFpbGluZyBzbGFzaCkKCSAqCgkgKiBAcmV0dXJuIHN0cml
uZyAgUGx1Z2luIHBhdGggVVJMICh3aXRoIHRyYWlsaW5nIHNsYXNoKS4KCSAqLwoJcHVibGljIHN0YXRpYy
BmdW5jdGlvbiBwbHVnaW5fdXJsKCkgewoJCXJldHVybiBzZWxmOjokX3BsdWdpbl91cmw7Cgl9IC8vIEVuZ
CBwbHVnaW5fdXJsKCkuCgoJLyoqCgkgKiBSZXR1cm5zIFVSTCB0byB0aGUgY3VycmVudCBhZG1pbiBwYWdl
IGlmIG9uIGEgcGx1Z2luIHBhZ2UuCgkgKiBFeDogaHR0cDovL3BsdWdpbmJ1ZGR5LmNvbS93cC1hZG1pbi9
pbmRleC5waHA/cGFnZT1wYl9teXBsdWdpbgoJICoKCSAqIEByZXR1cm4gc3RyaW5nICBQbHVnaW4gcGFnZS
BVUkwgKHdpdGggdHJhaWxpbmcgc2xhc2gpLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHBhZ2Vfd
XJsKCkgewoJCXJldHVybiBzZWxmOjokX3NlbGZfbGluazsKCX0gLy8gRW5kIHBhZ2VfdXJsKCkuCgoJLyoq
CgkgKiBSZXR1cm5zIHRoZSBhZG1pbi1zaWRlIEFKQVggVVJMLiBQcm9wZXJseSBoYW5kbGVzIHByZWZpeGl
uZyBhbmQgZXZlcnl0aGluZyBmb3IgUEIgZnJhbWV3b3JrLgoJICoKCSAqIEB0b2RvIHByb3ZpZGUgbm9uLW
FkbWluLXNpZGUgZnVuY3Rpb25hbGl0eT8KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR0YWcgIFRhZyAvIHNsd
Wcgb2YgQUpBWC4KCSAqCgkgKiBAcmV0dXJuIHN0cmluZyAgVVJMIGZvciBBSkFYLgoJICovCglwdWJsaWMg
c3RhdGljIGZ1bmN0aW9uIGFqYXhfdXJsKCAkdGFnICkgewoJCXJldHVybiBhZG1pbl91cmwoICdhZG1pbi1
hamF4LnBocD9hY3Rpb249cGJfJyAuIHNlbGY6OnNldHRpbmdzKCAnc2x1ZycgKSAuICdfYmFja3VwYnVkZH
kmZnVuY3Rpb249JyAuICR0YWcgKTsKCX0gLy8gRW5kIGFqYXhfdXJsKCkuCgoJLyoqCgkgKiBSZXRyaWV2Z
XMgbWlzYyBwbHVnaW4gc2V0dGluZ3MgYm90aCBwYXNzZWQgZnJvbSB0aGUgaW5pdCBmaWxlICggZGVmaW5l
ZCBpbiBwYl9iYWNrdXBidWRkeTo6c2V0dGluZ3MoICdpbml0JyApICkgaW50byBzZWxmOjokX3NldHRpbmd
zCgkgKgoJICogQWxzbyBwbHVnaW4gc2V0dGluZ3MgZGVmaW5lZCBpbiB0aGUgaW5pdCBmaWxlICggZGVmaW
5lZCBpbiBwYl9iYWNrdXBidWRkeTo6c2V0dGluZ3MoICdpbml0JyApICkgaGVhZGVyIGluY2x1ZGluZzoKC
SAqIG5hbWUsIHRpdGxlLCBkZXNjcmlwdGlvbiwgYXV0aG9yLCBhdXRob3J1cmksIHZlcnNpb24sIHBsdWdp
bnVyaSBPUiB1cmwsIHRleHRkb21haW4sIGRvbWFpbnBhdGgsIG5ldHdvcmsuCgkgKgoJICogQHNlZSBzZWx
mOjppbml0KCkKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR0eXBlICBUeXBlIG9mIHNldHRpbmcgdG8gcmV0cm
lldmUuCgkgKgoJICogQHJldHVybiBtaXhlZCBWYWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhhdCBzZXR0aW5nc
y4gTnVsbCBpZiBub3QgZm91bmQuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2V0dGluZ3MoICR0
eXBlICkgewoJCWlmICggaXNzZXQoIHNlbGY6OiRfc2V0dGluZ3NbICR0eXBlIF0gKSApIHsKCQkJcmV0dXJ
uIHNlbGY6OiRfc2V0dGluZ3NbICR0eXBlIF07CgkJfQoKCQlpZiAoIHBiX2lzX3N0YW5kYWxvbmUoKSApIH
sKCQkJaWYgKCAndmVyc2lvbicgPT0gJHR5cGUgKSB7CgkJCQlyZXR1cm4gUEJfQkJfVkVSU0lPTjsKCQkJf
QoJCX0KCgkJLy8gVGhlIHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0IHNvIGNoZWNrIHRvIHNlZSBpZiBpdCBj
YW4gYmUgZXh0cmFjdGVkIGZyb20gdGhlIHBsdWdpbidzIGhlYWRlci4KCQlpZiAoICEgaXNzZXQoIHNlbGY
6OiRfc2V0dGluZ3NbJ25hbWUnXSApIHx8ICcnID09IHNlbGY6OiRfc2V0dGluZ3NbJ25hbWUnXSApIHsKCQ
kJaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ2dldF9wbHVnaW5fZGF0YScgKSApIHsKCQkJCXJlcXVpcmVfb
25jZSBBQlNQQVRIIC4gJ3dwLWFkbWluL2luY2x1ZGVzL3BsdWdpbi5waHAnOwoJCQl9CgkJCSRpbmZvICAg
ICAgICA9IGFycmF5X2NoYW5nZV9rZXlfY2FzZSggZ2V0X3BsdWdpbl9kYXRhKCBzZWxmOjokX3BsdWdpbl9
wYXRoIC4gJy8nIC4gcGJfYmFja3VwYnVkZHk6OnNldHRpbmdzKCAnaW5pdCcgKSwgZmFsc2UsIGZhbHNlIC
ksIENBU0VfTE9XRVIgKTsKCQkJJGluZm9bJ3VybCddID0gJGluZm9bJ3BsdWdpbnVyaSddOwoJCQl1bnNld
CggJGluZm9bJ3BsdWdpbnVyaSddICk7CgkJCXNlbGY6OiRfc2V0dGluZ3MgPSBhcnJheV9tZXJnZSggc2Vs
Zjo6JF9zZXR0aW5ncywgJGluZm8gKTsKCQl9CgoJCS8vIFRyeSB0byByZXR1cm4gc2V0dGluZyBvdGhlcnd
pc2UgdGhyb3cgYW4gZXJyb3IuCgkJaWYgKCBpc3NldCggc2VsZjo6JF9zZXR0aW5nc1sgJHR5cGUgXSApIC
kgewoJCQlyZXR1cm4gc2VsZjo6JF9zZXR0aW5nc1sgJHR5cGUgXTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gJ
3tVbmtub3duIHNldHRpbmdzKCkgdmFyaWFibGUgYCcgLiAkdHlwZSAuICdgfSc7CgkJfQoJfSAvLyBFbmQg
c2V0dGluZ3MoKS4KCgkvKioKCSAqIFJldHVybnMgd2hldGhlciBhIG5vdCBhIHZhcmlhYmxlIGlzIGJsYW5
rIChlbXB0eSBzdHJpbmcsIG51bGwsIHVuZGVmaW5lZCkgb3Igbm90LgoJICogQmUgc3VyZSB0byBzdXBwcm
VzcyBlcnJvcnMgaWYgdXNpbmcgdGhpcyBmdW5jdGlvbiB3aGVyZSBpbmRleGVzIG1heSBiZSBub24tZXhpc
3RhbnQgd2l0aCBAIHNpZ24uCgkgKgoJICogQHBhcmFtIG1peGVkICR2YWx1ZSAgVmFyaWFibGUgdG8gZGV0
ZXJtaW5lIGlmIGl0IGlzIGJsYW5rIG9yIG5vdC4KCSAqCgkgKiBAcmV0dXJuIGJvb2xlYW4gIFRydWUgaWY
gdmFyaWFibGUgaXMgc2V0IGFuZCBpcyBub3QgYW4gZW1wdHkgc3RyaW5nLgoJICovCglwdWJsaWMgc3RhdG
ljIGZ1bmN0aW9uIGJsYW5rKCAkdmFsdWUgKSB7CgkJcmV0dXJuIGVtcHR5KCAkdmFsdWUgKSAmJiAhIGlzX
251bWVyaWMoICR2YWx1ZSApOwoJfSAvLyBFbmQgYmxhbmsoKS4KCgkvKioKCSAqIFJldHVybnMgJF9QT1NU
IHZhbHVlIGlmIGF2YWlsYWJsZSwgZWxzZSByZXR1cm5zIGEgYmxhbmsuIFByZXZlbnRzIGhhdmluZyB0byB
jaGVjayBpc3NldCBmaXJzdC4gU3RyaXBzIFdQJ3MgYWRkZWQgc2xhc2hlcy4KCSAqCgkgKiBAcGFyYW0gc3
RyaW5nICR2YWx1ZSAgS2V5IG9mIFBPU1QgdmFyaWFibGUgdG8gY2hlY2suCgkgKgoJICogQHJldHVybiBta
XhlZCAgVmFsdWUgb2YgUE9TVCB2YXJpYWJsZSBpZiBzZXQuIElmIG5vdCBzZXQgcmV0dXJucyBhIGJsYW5r
IHN0cmluZyAnJy4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBfUE9TVCggJHZhbHVlID0gbnVsbCA
pIHsKCQlpZiAoICcnID09ICR2YWx1ZSB8fCBudWxsID09ICR2YWx1ZSApIHsgLy8gUmVxdWVzdGluZyAkX1
BPU1QgdmFyaWFibGUuCgkJCWlmICggcGJfaXNfc3RhbmRhbG9uZSgpICYmICEgZ2V0X21hZ2ljX3F1b3Rlc
19ncGMoKSApIHsgLy8gSWYgaW4gSW1wb3J0QnVkZHkgbW9kZSBBTkQgbWFnaWMgcXVvdGVzIGlzIG5vdCBv
biwgZG9udCBzdHJpcC4gV1AgZXNjYXBlcyBmb3IgdXMgaWYgbWFnaWMgcXVvdGVzIGFyZSBvZmYuCgkJCQl
yZXR1cm4gJF9QT1NUOwoJCQl9CgkJCXJldHVybiBzdHJpcHNsYXNoZXNfZGVlcCggJF9QT1NUICk7CgkJfS
BlbHNlIHsKCQkJJHBvc3RfdmFsdWUgPSAnJzsKCQkJaWYgKCBpc3NldCggJF9QT1NUWyAkdmFsdWUgXSApI
CkgewoJCQkJJHBvc3RfdmFsdWUgPSAkX1BPU1RbICR2YWx1ZSBdOwoJCQl9CgkJCWlmICggcGJfaXNfc3Rh
bmRhbG9uZSgpICYmICEgZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSApIHsgLy8gSWYgaW4gSW1wb3J0QnVkZHk
gbW9kZSBBTkQgbWFnaWMgcXVvdGVzIGlzIG5vdCBvbiwgZG9udCBzdHJpcC4gV1AgZXNjYXBlcyBmb3IgdX
MgaWYgbWFnaWMgcXVvdGVzIGFyZSBvZmYuCgkJCQlyZXR1cm4gJHBvc3RfdmFsdWU7CgkJCX0gZWxzZSB7C
gkJCQlyZXR1cm4gc3RyaXBzbGFzaGVzX2RlZXAoICRwb3N0X3ZhbHVlICk7IC8vIFJlbW92ZSBXb3JkUHJl
c3MnIG1hZ2ljLXF1b3Rlcy1zdHlsZSBlc2NhcGluZyBvZiBkYXRhLgoJCQl9CgkJfQoJfSAvLyBFbmQgX1B
PU1QoKS4KCgkvKioKCSAqIFJldHVybnMgJF9HRVQgdmFsdWUgaWYgYXZhaWxhYmxlLCBlbHNlIHJldHVybn
MgYSBibGFuay4gUHJldmVudHMgaGF2aW5nIHRvIGNoZWNrIGlzc2V0IGZpcnN0LgoJICoKCSAqIEB0b2RvI
ERvIHdlIG5lZWQgdG8gc3RyaXBzbGFzaGVzX2RlZXAoKSBvbiBHRVQgdmFycyBhbHNvIGxpa2UgUE9TVHM/
CgkgKgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUgIEtleSBvZiBQT1NUIHZhcmlhYmxlIHRvIGNoZWNrLgo
JICoKCSAqIEByZXR1cm4gbWl4ZWQgIFZhbHVlIG9mIFBPU1QgdmFyaWFibGUgaWYgc2V0LiBJZiBub3Qgc2
V0IHJldHVybnMgYSBibGFuayBzdHJpbmcgJycuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gX0dFV
CggJHZhbHVlID0gJycgKSB7CgkJaWYgKCAnJyA9PSAkdmFsdWUgfHwgbnVsbCA9PSAkdmFsdWUgKSB7IC8v
IFJlcXVlc3RpbmcgJF9HRVQgdmFyaWFibGUuCgkJCWlmICggcGJfaXNfc3RhbmRhbG9uZSgpICYmICEgZ2V
0X21hZ2ljX3F1b3Rlc19ncGMoKSApIHsgLy8gSWYgaW4gSW1wb3J0QnVkZHkgbW9kZSBBTkQgbWFnaWMgcX
VvdGVzIGlzIG5vdCBvbiwgZG9udCBzdHJpcC4gV1AgZXNjYXBlcyBmb3IgdXMgaWYgbWFnaWMgcXVvdGVzI
GFyZSBvZmYuCgkJCQlyZXR1cm4gJF9HRVQ7CgkJCX0KCQkJcmV0dXJuIHN0cmlwc2xhc2hlc19kZWVwKCAk
X0dFVCApOwoJCX0gZWxzZSB7CgkJCSRnZXRfdmFsdWUgPSAnJzsKCQkJaWYgKCBpc3NldCggJF9HRVRbICR
2YWx1ZSBdICkgKSB7CgkJCQkkZ2V0X3ZhbHVlID0gJF9HRVRbICR2YWx1ZSBdOwoJCQl9CgkJCWlmICggcG
JfaXNfc3RhbmRhbG9uZSgpICYmICEgZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSApIHsgLy8gSWYgaW4gSW1wb
3J0QnVkZHkgbW9kZSBBTkQgbWFnaWMgcXVvdGVzIGlzIG5vdCBvbiwgZG9udCBzdHJpcC4gV1AgZXNjYXBl
cyBmb3IgdXMgaWYgbWFnaWMgcXVvdGVzIGFyZSBvZmYuCgkJCQlyZXR1cm4gJGdldF92YWx1ZTsKCQkJfSB
lbHNlIHsKCQkJCXJldHVybiBzdHJpcHNsYXNoZXNfZGVlcCggJGdldF92YWx1ZSApOyAvLyBSZW1vdmUgV2
9yZFByZXNzJyBtYWdpYy1xdW90ZXMtc3R5bGUgZXNjYXBpbmcgb2YgZGF0YS4KCQkJfQoJCX0KCX0gLy8gR
W5kIF9HRVQoKS4KCgkvKioKCSAqIEdyYWJzICYgcmV0dXJucyBhIHJlZmVyZW5jZSB0byBhIHNwZWNpZmll
ZCBwb2ludCBpbiB0aGUgb3B0aW9ucyBhcnJheS4KCSAqIEV4IHVzYWdlOiAkZ3JvdXAgPSAmc2VsZjo6Z2V
0X2dyb3VwKCAnZ3JvdXBzIycgLiAkX0dFVFsnZWRpdCddICk7CgkgKgoJICogQHBhcmFtIHN0cmluZyAkc2
F2ZXBvaW50X3Jvb3QgIFBhdGggaW4gdGhlIGFycmF5IHRvIHJldHVybiBhIHJlZmVyZW5jZSB0by4KCSAqI
CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeDogZ3JvdXBzIzUgd2lsbCBncmFiIHNlbGY6OiRv
cHRpb25zWydncm91cHMnXVs1XS4KCSAqCgkgKiBAcmV0dXJuIG1peGVkICBWYWx1ZSB3aXRoaW4gdGhlIGF
ycmF5IGF0IHRoZSBzcGVjaWZpZWQgcG9pbnQuCgkgKiAgICAgICAgICAgICAgICBDYW4gYmUgdXNlZCBhcy
BhIHJlZmVyZW5jZS4gU2VlIGV4YW1wbGUgaW4gZGVzY3JpcHRpb24uCgkgKiAgICAgICAgICAgICAgICBOT
1RFOiBSZXR1cm5zIGZhbHNlIGlmIG5vdCBmb3VuZC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiAm
Z2V0X2dyb3VwKCAkc2F2ZXBvaW50X3Jvb3QgKSB7CgkJaWYgKCAnJyA9PSAkc2F2ZXBvaW50X3Jvb3QgKSB
7IC8vIFJvb3Qgd2FzIHJlcXVlc3RlZC4KCQkJJHJldHVybiA9ICZzZWxmOjokb3B0aW9uczsKCQkJcmV0dX
JuICRyZXR1cm47CgkJfQoKCQkkc2F2ZXBvaW50X3N1YnNlY3Rpb24gPSAmc2VsZjo6JG9wdGlvbnM7CgkJJ
HNhdmVwb2ludF9sZXZlbHMgICAgID0gZXhwbG9kZSggJyMnLCAkc2F2ZXBvaW50X3Jvb3QgKTsKCQlmb3Jl
YWNoICggJHNhdmVwb2ludF9sZXZlbHMgYXMgJHNhdmVwb2ludF9sZXZlbCApIHsKCQkJaWYgKCBpc3NldCg
gJHNhdmVwb2ludF9zdWJzZWN0aW9ueyRzYXZlcG9pbnRfbGV2ZWx9ICkgKSB7CgkJCQkkc2F2ZXBvaW50X3
N1YnNlY3Rpb24gPSAmJHNhdmVwb2ludF9zdWJzZWN0aW9ueyRzYXZlcG9pbnRfbGV2ZWx9OwoJCQl9IGVsc
2UgewoJCQkJZWNobyAne0Vycm9yICM0NDg5MDQ1OiBJbnZhbGlkIGFycmF5IGluIHBhdGg6IGAnIC4gJHNh
dmVwb2ludF9yb290IC4gJ2B9JzsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCgkJcmV0dXJuICRzYXZ
lcG9pbnRfc3Vic2VjdGlvbjsKCX0gLy8gRW5kIGdldF9ncm91cCgpLgoKCS8qKgoJICogTG9hZCBmcm9tIE
JhY2t1cAoJICoKCSAqIEB0b2RvIGkxOG4uCgkgKgoJICogQHJldHVybiBtaXhlZCAgJHNldHRpbmdzIG9yI
GZhbHNlLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxvYWRfZnJvbV9iYWNrdXAoKSB7CgkJJHJl
c3RvcmVfZmFpbF9tZXNzYWdlICAgID0gJ0Vycm9yICM4NDkzODk0MzogWW91ciBCYWNrdXBCdWRkeSBTZXR
0aW5ncyB3ZXJlIGRldGVjdGVkIGFzIG1pc3Npbmcgb3IgY29ycnVwdC4gQmFja3VwQnVkZHkgaGFzIGF0dG
VtcHRlZCB0byBsb2FkIEJhY2t1cEJ1ZGR5IHNldHRpbmdzIGZyb20gaXRzIHNldHRpbmdzIGJhY2t1cCBma
WxlIGJ1dCBmYWlsZWQuIFZlcmlmeSB5b3VyIEJhY2t1cEJ1ZGR5IHNldHRpbmdzIGFyZSBzdGlsbCBpbnRh
Y3QgYW5kIHZhbGlkLiBUaGlzIGNvdWxkIGhhdmUgYmVlbiBjYXVzZWQgYnkgYSBkYXRhYmFzZSBlcnJvciB
vciBjb3JydXB0aW9uLic7CgkJJHJlc3RvcmVfc3VjY2Vzc19tZXNzYWdlID0gJ1dhcm5pbmcgIzg5NDM4ND
ogWW91ciBCYWNrdXBCdWRkeSBTZXR0aW5ncyB3ZXJlIGRldGVjdGVkIGFzIG1pc3Npbmcgb3IgY29ycnVwd
C4gQmFja3VwQnVkZHkgaGFzIHJlc3RvcmVkIHlvdXIgcHJldmlvdXMgQmFja3VwQnVkZHkgc2V0dGluZ3Mg
ZnJvbSBpdHMgc2V0dGluZ3MgYmFja3VwIGZpbGUuIFBsZWFzZSB2ZXJpZnkgeW91ciByZXN0b3JlZCBCYWN
rdXBCdWRkeSBzZXR0aW5ncyBsb29rIG9rYXkuIF
RoaXMgY291bGQgaGF2ZSBiZWVuIGNhdXNlZCBieSBhIGRhdGFiYXNlIGVycm9yIG9yIGNvcnJ1cHRpb24uJ
zsKCgkJcmVxdWlyZV9vbmNlIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy9jbGFzc2VzL2Nv
cmUucGhwJzsKCQkkYmFja3VwX2RpciAgICAgICA9IGJhY2t1cGJ1ZGR5X2NvcmU6OmdldExvZ0RpcmVjdG9
yeSgpOwoJCSRleGlzdGluZ19iYWNrdXBzID0gZ2xvYiggJGJhY2t1cF9kaXIgLiAnc2V0dGluZ3NfYmFja3
VwLSoucGhwJyApOwoJCWlmICggISBpc19hcnJheSggJGV4aXN0aW5nX2JhY2t1cHMgKSB8fCBjb3VudCggJ
GV4aXN0aW5nX2JhY2t1cHMgKSA8IDEgKSB7IC8vIE5vIGJhY2t1cHMgc28ganVzdCBsb2FkIGRlZmF1bHRz
LiBNYXkgYmUgYSBuZXcgaW5zdGFsbC4KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gRklYTUU6IEF2b2l
kIEAgc3ltYm9sIGhlcmUuIFBvc3NpYmx5IHVzZSB0cnkvY2F0Y2g/CgkJJHNldHRpbmdzID0gQGZpbGVfZ2
V0X2NvbnRlbnRzKCAkZXhpc3RpbmdfYmFja3Vwc1swXSApOwoJCWlmICggZmFsc2UgPT09ICRzZXR0aW5nc
yApIHsKCQkJYmFja3VwYnVkZHlfY29yZTo6bWFpbF9lcnJvciggJHJlc3RvcmVfZmFpbF9tZXNzYWdlIC4g
JyBEZXRhaWxzOiBVbmFibGUgdG8gb3Blbi9yZWFkIGJhY2t1cCBmaWxlIHRoYXQgd2FzIGZvdW5kLicgKTs
KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gU2tpcCBmaXJzdCBsaW5lLgoJCSRzZWNvbmRfbGluZV9wb3
MgPSBzdHJwb3MoICRzZXR0aW5ncywgIlxuIiApICsgMTsKCQkkc2V0dGluZ3MgICAgICAgID0gc3Vic3RyK
CAkc2V0dGluZ3MsICRzZWNvbmRfbGluZV9wb3MgKTsKCgkJLy8gRGVjb2RlIGJhY2sgaW50byBhbiBhcnJh
eS4KCQkkc2V0dGluZ3MgPSB1bnNlcmlhbGl6ZSggYmFzZTY0X2RlY29kZSggJHNldHRpbmdzICkgKTsKCgk
JaWYgKCBpc19hcnJheSggJHNldHRpbmdzICkgJiYgKCBpc3NldCggJHNldHRpbmdzWydkYXRhX3ZlcnNpb2
4nXSApICkgKSB7IC8vIEdvb2QgcmVzdG9yZS4KCQkJcmV0dXJuICRzZXR0aW5nczsKCQl9IGVsc2UgeyAvL
yBSZXN0b3JlIGZhaWxlZC4gQmFkIGRhdGEhCgkJCWVycm9yX2xvZyggJ0JhY2t1cEJ1ZGR5IHNldHRpbmdz
IGZhaWxlZCByZXN0b3JlLicgKTsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgl9IC8vIEVuZCBsb2FkX2Zyb21
fYmFja3VwKCkuCgoJLyoqCgkgKiBMb2FkcyB0aGUgcGx1Z2luIG9wdGlvbnMgYXJyYXkgY29udGFpbmluZy
BhbGwgdXNlci1jb25maWd1cmFibGUgb3B0aW9ucywgZXRjLgoJICogQWNjZXNzIG9wdGlvbnMgdmlhIHNlb
GY6OiRvcHRpb25zLiBCeXBhc3NlcyBXUCBvcHRpb25zIGNhY2hpbmcgZm9yIHJlbGlhYmlsaXR5LgoJICoK
CSAqIEBwYXJhbSBib29sICRyZXRyeV9kYiAgUmV0cnkgREIuCgkgKgoJICogQHJldHVybiBudWxsCgkgKi8
KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9hZCggJHJldHJ5X2RiID0gdHJ1ZSApIHsKCQlpZiAoIHBiX2
lzX3N0YW5kYWxvbmUoKSApIHsgLy8gU3RhbmRhbG9uZSBmcmFtZXdvcmsgbW9kZSAob3V0c2lkZSBXb3JkU
HJlc3MpLgoJCQkvLyBMb2FkIG9wdGlvbnMgZnJvbSBmaWxlIGlmIGl0IGV4aXN0cy4KCQkJJGRhdF9maWxl
ID0gQUJTUEFUSCAuICdpbXBvcnRidWRkeS9fc2V0dGluZ3NfZGF0LnBocCc7CgkJCWlmICggZmlsZV9leGl
zdHMoICRkYXRfZmlsZSApICkgewoJCQkJJG9wdGlvbnMgPSBmaWxlX2dldF9jb250ZW50cyggJGRhdF9maW
xlICk7CgoJCQkJLy8gU2tpcCBmaXJzdCBsaW5lLgoJCQkJJHNlY29uZF9saW5lX3BvcyA9IHN0cnBvcyggJ
G9wdGlvbnMsICJcbiIgKSArIDE7CgkJCQkkb3B0aW9ucyAgICAgICAgID0gc3Vic3RyKCAkb3B0aW9ucywg
JHNlY29uZF9saW5lX3BvcyApOwoKCQkJCS8vIERlY29kZSBiYWNrIGludG8gYW4gYXJyYXkuCgkJCQkkb3B
0aW9ucyA9IGpzb25fZGVjb2RlKCBiYXNlNjRfZGVjb2RlKCAkb3B0aW9ucyApLCB0cnVlICk7CgkJCX0gZW
xzZSB7IC8vIE5vIGV4aXN0aW5nIG9wdGlvbnMuIEVtcHR5IG9wdGlvbnMuCgkJCQkkb3B0aW9ucyA9IGFyc
mF5KCk7CgkJCX0KCgkJCS8vIE1lcmdlIGRlZmF1bHRzLgoJCQkkb3B0aW9ucyA9IGFycmF5X21lcmdlKCAo
YXJyYXkpIHNlbGY6OnNldHRpbmdzKCAnZGVmYXVsdF9vcHRpb25zJyApLCAkb3B0aW9ucyApOwoKCQkJcGJ
fYmFja3VwYnVkZHk6OiRvcHRpb25zID0gJG9wdGlvbnM7CgkJfSBlbHNlIHsgLy8gTm9ybWFsIEJCIGluIF
dvcmRQcmVzcy4KCQkJc2VsZjo6JG9wdGlvbnMgPSBzZWxmOjpfZ2V0X29wdGlvbiggJ3BiXycgLiBzZWxmO
jpzZXR0aW5ncyggJ3NsdWcnICkgKTsKCQl9CgoJCS8vIE1lcmdlIGRlZmF1bHRzIGludG8gdGVtcG9yYXJ5
ICRvcHRpb25zIHZhcmlhYmxlIGFuZCBzYXZlIGlmIGl0IGRpZmZlcnMgd2l0aCB0aGUgcHJlLW1lcmdlIG9
wdGlvbnMuIE9ubHkgcmV0cmllcyB0aGlzIG9uY2UuCgkJaWYgKCAoIGVtcHR5KCBzZWxmOjokb3B0aW9ucy
ApIHx8ICEgaXNzZXQoIHNlbGY6OiRvcHRpb25zWydkYXRhX3ZlcnNpb24nXSApICkgJiYgdHJ1ZSA9PT0gJ
HJldHJ5X2RiICkgeyAvLyBJZiBlbXB0eSBvcHRpb25zIG9yIGNvcnJ1cHQuCgkJCWdsb2JhbCAkd3BkYjsK
CQkJLy8gSWYgdGhlIGRhdGFiYXNlIGdvZXMgYXdheSBpbiB0aGUgbWlkZGxlIG9mIGEgcXVlcnksIHdhaXQ
gNSBzZWNvbmRzIGFuZCB0cnkgYWdhaW4uIE90aGVyd2lzZSwgd2UgdW5pbnRlbnRpb25hbGx5IG92ZXJ3cm
l0ZSB0aGUgc2V0dGluZ3MuCgkJCWlmICggISBlbXB0eSggJHdwZGItPmxhc3RfZXJyb3IgKSAmJiBmYWxzZ
SAhPT0gc3RycG9zKCAkd3BkYi0+bGFzdF9lcnJvciwgIlNFTEVDVCBvcHRpb25fdmFsdWUgRlJPTSBgJHdw
ZGItPm9wdGlvbnNgIFdIRVJFIG9wdGlvbl9uYW1lID0gJ3BiX2JhY2t1cGJ1ZGR5JyIgKSApIHsKCQkJCXN
sZWVwKCA1ICk7CgkJCQlzZWxmOjpsb2FkKCBmYWxzZSApOwoJCQkJcmV0dXJuOwoJCQl9IGVsc2UgeyAvLy
BNaXNzaW5nIG9yIGNvcnJ1cHQgb3B0aW9ucyB3aGVuIGxvYWRpbmcuIEVpdGhlciBhIG5ldyBpbnN0YWxsI
G9yIHNldHRpbmdzIHdlbnQgbWlzc2luZy4KCgkJCQkvLyBDaGVjayBmb3IgYSBzZXR0aW5ncyBiYWNrdXAg
YW5kIHRyeSB0byBsb2FkIGl0IGlmIHdlcmUgbm90IGluIGEgc3RhbmRhbG9uZSBzY3JpcHQuCgkJCQlpZiA
oICEgcGJfaXNfc3RhbmRhbG9uZSgpICkgewoJCQkJCSRyZXN0b3JlZF9zZXR0aW5ncyA9IHNlbGY6OmxvYW
RfZnJvbV9iYWNrdXAoKTsKCQkJCQlpZiAoIGZhbHNlICE9PSAkcmVzdG9yZWRfc2V0dGluZ3MgKSB7CgkJC
QkJCSRvcHRpb25zID0gJHJlc3RvcmVkX3NldHRpbmdzOwoJCQkJCX0gZWxzZSB7IC8vIExvYWQgZGVmYXVs
dHMuCgkJCQkJCSRvcHRpb25zID0gKGFycmF5KSBzZWxmOjpzZXR0aW5ncyggJ2RlZmF1bHRfb3B0aW9ucyc
gKTsKCQkJCQl9CgkJCQl9CgkJCX0KCQl9IGVsc2UgeyAvLyBOb3JtYWwgbWVyZ2UuCgkJCSRkZWZhdWx0cy
A9IChhcnJheSkgc2VsZjo6c2V0dGluZ3MoICdkZWZhdWx0X29wdGlvbnMnICk7CgoJCQkvLyBBcHBseSBkZ
WZhdWx0cy4KCQkJJG9wdGlvbnMgPSBhcnJheV9tZXJnZSggJGRlZmF1bHRzLCAoYXJyYXkpIHNlbGY6OiRv
cHRpb25zICk7CgoJCQkvLyBBcHBseSBkZWZhdWx0IHByb2ZpbGVzLgoJCQkkb3B0aW9uc1sncHJvZmlsZXM
nXSA9IChhcnJheSkgc2VsZjo6JG9wdGlvbnNbJ3Byb2ZpbGVzJ10gKyAkZGVmYXVsdHNbJ3Byb2ZpbGVzJ1
07IC8vIE1lcmdlIGFycmF5cyBvbiBudW1lcmljIGluZGljZXMuIExlZnQgc2lkZSBpcyBwcmVzZXJ2ZWQgK
G9wcG9zaXRlIG9mIGFycmF5X21lcmdlKCkpLgoJCX0KCQlpZiAoIHNlbGY6OiRvcHRpb25zICE9PSAkb3B0
aW9ucyApIHsKCQkJc2VsZjo6JG9wdGlvbnMgPSAkb3B0aW9uczsKCQkJc2VsZjo6c2F2ZSgpOwoJCX0KCX0
gLy8gRW5kIGxvYWQoKS4KCgkvKioKCSAqIEJ5cGFzc2VzIFdvcmRQcmVzcyBvcHRpb25zIGNhY2hlLiBVbm
ZvcnR1bmF0ZWx5IHRoZXJlIGFwcGVhcnMgdG8gYmUgcmFjZSBjb25kaXRpb24gaXNzdWVzIHdpdGggdGhlI
GJ1aWx0LWluIFdQIG9wdGlvbnMgc3lzdGVtLgoJICogVXNlZCBieSBsb2FkKCkgZnVuY3Rpb24gaW50ZXJu
YWxseS4gVGFrZW4gYW5kIG1vZGlmaWVkIGZyb20gV29yZFByZXNzIGNvcmUuCgkgKgoJICogQHNlZSBsb2F
kKCkKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRvcHRpb24gICBPcHRpb24gbmFtZS4KCSAqIEBwYXJhbSBtaX
hlZCAgJGRlZmF1bHQgIGRlZmF1bHQgPSBmYWxzZTsgd2UgZG8gbm90IHVzZSB0aGlzLgoJICoKCSAqIEByZ
XR1cm4gbWl4ZWQgU2F2ZWQgb3B0aW9uIHZhbHVlLgoJICovCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBf
Z2V0X29wdGlvbiggJG9wdGlvbiwgJGRlZmF1bHQgPSBmYWxzZSApIHsKCQlnbG9iYWwgJHdwZGI7CgoJCSR
vcHRpb24gPSB0cmltKCAkb3B0aW9uICk7CgkJaWYgKCBlbXB0eSggJG9wdGlvbiApICkgewoJCQlyZXR1cm
4gZmFsc2U7CgkJfQoKCQlpZiAoIGRlZmluZWQoICdXUF9TRVRVUF9DT05GSUcnICkgKSB7CgkJCXJldHVyb
iBmYWxzZTsKCQl9CgoJCS8vIEZJWE1FOiBwb3NzaWJseSB1c2UgZ2V0X3NpdGVfb3B0aW9uKCkgaGVyZT8K
CQkkYmFzZV9wcmVmaXggPSAkd3BkYi0+YmFzZV9wcmVmaXg7CgkJJHJvdyAgICAgICAgID0gJHdwZGItPmd
ldF9yb3coICR3cGRiLT5wcmVwYXJlKCAiU0VMRUNUIG9wdGlvbl92YWx1ZSBGUk9NIHskYmFzZV9wcmVmaX
h9b3B0aW9ucyBXSEVSRSBvcHRpb25fbmFtZSA9ICVzIExJTUlUIDEiLCAkb3B0aW9uICkgKTsKCQkvLyBIY
XMgdG8gYmUgZ2V0X3JvdyBpbnN0ZWFkIG9mIGdldF92YXIgYmVjYXVzZSBvZiBmdW5raW5lc3Mgd2l0aCAw
LCBmYWxzZSwgbnVsbCB2YWx1ZXMuCgkJaWYgKCBpc19vYmplY3QoICRyb3cgKSApIHsKCQkJJHZhbHVlID0
gJHJvdy0+b3B0aW9uX3ZhbHVlOwoJCX0gZWxzZSB7CgkJCSR2YWx1ZSA9ICRkZWZhdWx0OwoJCX0KCgkJLy
8gSWYgaG9tZSBpcyBub3Qgc2V0IHVzZSBzaXRldXJsLgoJCWlmICggJ2hvbWUnID09ICRvcHRpb24gJiYgJ
ycgPT0gJHZhbHVlICkgewoJCQlyZXR1cm4gZ2V0X29wdGlvbiggJ3NpdGV1cmwnICk7CgkJfQoKCQlpZiAo
IGluX2FycmF5KCAkb3B0aW9uLCBhcnJheSggJ3NpdGV1cmwnLCAnaG9tZScsICdjYXRlZ29yeV9iYXNlJyw
gJ3RhZ19iYXNlJyApICkgKSB7CgkJCSR2YWx1ZSA9IHVudHJhaWxpbmdzbGFzaGl0KCAkdmFsdWUgKTsKCQ
l9CgoJCSR2YWx1ZSA9IG1heWJlX3Vuc2VyaWFsaXplKCAkdmFsdWUgKTsKCgkJcmV0dXJuICR2YWx1ZTsKC
X0gLy8gRW5kIGdldF9vcHRpb24oKS4KCgkvKioKCSAqIFNhdmUgcGx1Z2luIG9wdGlvbnMgdG8gZGF0YWJh
c2UuCgkgKgoJICogQHJldHVybiBib29sICBUcnVlIGlmIHNhdmUgc3VjY2VlZGVkLCBmYWxzZSBvdGhlcnd
pc2UuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gc2F2ZSgpIHsKCQlpZiAoIHBiX2lzX3N0YW5kYW
xvbmUoKSApIHsKCQkJJG9wdGlvbnNfY29udGVudCA9IGJhc2U2NF9lbmNvZGUoIGpzb25fZW5jb2RlKCBwY
l9iYWNrdXBidWRkeTo6JG9wdGlvbnMgKSApOwoJCQkkcmVzdWx0ICAgICAgICAgID0gZmlsZV9wdXRfY29u
dGVudHMoIEFCU1BBVEggLiAnaW1wb3J0YnVkZHkvX3NldHRpbmdzX2RhdC5waHAnLCAiPD9waHAgZGllKCc
8IS0tIC8vIFNpbGVuY2UgaXMgZ29sZGVuLiAtLT4nKTsgPz5cbiIgLiAkb3B0aW9uc19jb250ZW50ICk7Cg
kJCS8vIEZJWE1FOiBDb3VsZCB3ZSBqdXN0IHJldHVybiAkcmVzdWx0PwoJCQlpZiAoIGZhbHNlID09PSAkc
mVzdWx0ICkgewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9IGVsc2UgewoJCQkJcmV0dXJuIHRydWU7CgkJCX0K
CQl9CgoJCWFkZF9zaXRlX29wdGlvbiggJ3BiXycgLiBzZWxmOjpzZXR0aW5ncyggJ3NsdWcnICksIHNlbGY
6OiRvcHRpb25zLCAnJywgJ25vJyApOyAvLyAnTm8nIHByZXZlbnRzIGF1dG9sb2FkIGlmIHdlIHdvbnQgYW
x3YXlzIG5lZWQgdGhlIGRhdGEgbG9hZGVkLgoJCXJldHVybiBzZWxmOjpfdXBkYXRlX29wdGlvbiggJ3BiX
ycgLiBzZWxmOjpzZXR0aW5ncyggJ3NsdWcnICksIHNlbGY6OiRvcHRpb25zICk7Cgl9IC8vIEVuZCBzYXZl
KCkuCgoJLyoqCgkgKiBCeXBhc3NlcyBXb3JkUHJlc3MgYnVpbHQgaW4gdXBkYXRlIG9wdGlvbiBjYWNoZS4
gVGFrZW4gZnJvbSBXb3JkUHJlc3MgY29yZSBhbmQgbW9kaWZpZWQuCgkgKgoJICogQHNlZSBzZWxmOjpfZ2
V0X29wdGlvbigpCgkgKiBAc2VlIHNlbGY6OnNhdmUoKQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG9wdGlvb
iAgICBPcHRpb24gbmFtZS4KCSAqIEBwYXJhbSBtaXhlZCAgJG5ld3ZhbHVlICBOZXcgdmFsdWUgdG8gc2F2
ZSBpbnRvIG9wdGlvbi4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUgb24gc3VjY2VzczsgZmFsc2Ugb3R
oZXJ3aXNlLgoJICovCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfdXBkYXRlX29wdGlvbiggJG9wdGlvbi
wgJG5ld3ZhbHVlICkgewoJCWdsb2JhbCAkd3BkYjsKCgkJJG9wdGlvbiA9IHRyaW0oICRvcHRpb24gKTsKC
QlpZiAoIGVtcHR5KCAkb3B0aW9uICkgKSB7CgkJCXJldHVybiBmYWxzZTsKCQl9CgoJCSRvbGR2YWx1ZSA9
IGdldF9vcHRpb24oICRvcHRpb24gKTsKCQlpZiAoIGZhbHNlID09PSAkb2xkdmFsdWUgKSB7CgkJCXJldHV
ybiBhZGRfb3B0aW9uKCAkb3B0aW9uLCAkbmV3dmFsdWUgKTsKCQl9IGVsc2UgewoJCQkkbmV3dmFsdWUgPS
BzYW5pdGl6ZV9vcHRpb24oICRvcHRpb24sICRuZXd2YWx1ZSApOwoJCQkkbmV3dmFsdWUgPSBtYXliZV9zZ
XJpYWxpemUoICRuZXd2YWx1ZSApOwoJCQkkcmVzdWx0ICAgPSAkd3BkYi0+dXBkYXRlKAoJCQkJJHdwZGIt
Pm9wdGlvbnMsIGFycmF5KAoJCQkJCSdvcHRpb25fdmFsdWUnID0+ICRuZXd2YWx1ZSwKCQkJCSksIGFycmF
5KAoJCQkJCSdvcHRpb25fbmFtZScgPT4gJG9wdGlvbiwKCQkJCSkKCQkJKTsKCgkJCWlmICggJHJlc3VsdC
ApIHsKCQkJCXJldHVybiB0cnVlOwoJCQl9CgkJfQoKCQlyZXR1cm4gZmFsc2U7Cgl9IC8vIEVuZCBfdXBkY
XRlX29wdGlvbigpLgoKCS8qKgoJICogSGVscHMgc2VjdXJpdHkgYnkgYXR0ZW1wdGluZyB0byBibG9jayBk
aXJlY3RvcnkgYnJvd3NpbmcgYnkgY3JlYXRpbmcKCSAqIGJvdGggaW5kZXguaHRtIGZpbGVzIGFuZCAuaHR
hY2Nlc3MgZmlsZXMgdHVybmluZyBicm93c2luZyBvZmYuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkZGlyZW
N0b3J5ICAgICAgIEZ1bGwgYWJzb2x1dGUgcGFzcyB0byBpbnNlcnQgYW50aS1kaXJlY3RvcnktYnJvd3Npb
mcgZmlsZXMgaW50by4gTm8gdHJhaWxpbmcgc2xhc2guCgkgKiBAcGFyYW0gYm9vbCAgICRkaWVfb25fZmFp
bCAgICAgV2hlbiB0cnVlIGFsc28gZW5mb3JjZSBkZW55aW5nIEFMTCB3ZWItYmFzZWQgYWNjZXNzIHRvIGR
pcmVjdG9yeS4gRGVmYXVsdCBmYWxzZS4KCSAqIEBwYXJhbSBib29sICAgJGRlbnlfYWxsICAgICAgICBEZW
55IGFsbC4KCSAqIEBwYXJhbSBib29sICAgJHN1c
HByZXNzX2FsZXJ0ICBTdXBwcmVzcyBhbGVydC4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUgb24gc3Vj
Y2VzcyBzZWN1cmluZyBkaXJlY3RvcnksIGZhbHNlIG90aGVyd2lzZS4KCSAqLwoJcHVibGljIHN0YXRpYyB
mdW5jdGlvbiBhbnRpX2RpcmVjdG9yeV9icm93c2luZyggJGRpcmVjdG9yeSA9ICcnLCAkZGllX29uX2ZhaW
wgPSB0cnVlLCAkZGVueV9hbGwgPSBmYWxzZSwgJHN1cHByZXNzX2FsZXJ0ID0gZmFsc2UgKSB7CgoJCS8vI
ENoZWNrIGRpcmVjdG9yeSBleGlzdHMgJiBjcmVhdGUgaWYgaXQgZG9lc24ndC4KCQlpZiAoICEgZmlsZV9l
eGlzdHMoICRkaXJlY3RvcnkgKSApIHsKCQkJJG1vZGUgICAgPSBhcHBseV9maWx0ZXJzKCAnaXRidWItZGV
mYXVsdC1maWxlLW1vZGUnLCAwNzU1ICk7CgkJCSRyZWN1cnNlID0gdHJ1ZTsKCQkJaWYgKCBzZWxmOjokZm
lsZXN5c3RlbS0+bWtkaXIoICRkaXJlY3RvcnksICRtb2RlLCAkcmVjdXJzZSApID09PSBmYWxzZSApIHsKC
QkJCSRlcnJvciA9ICdFcnJvciAjOTAwMjogQmFja3VwQnVkZHkgdW5hYmxlIHRvIGNyZWF0ZSBkaXJlY3Rv
cnkgYCcgLiAkZGlyZWN0b3J5IC4gJ2AuIFBsZWFzZSB2ZXJpZnkgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHR
oZSBwYXJlbnQgZGlyZWN0b3J5IGAnIC4gZGlybmFtZSggJGRpcmVjdG9yeSApIC4gJ2Agb3IgbWFudWFsbH
kgY3JlYXRlIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5ICYgc2V0IHBlcm1pc3Npb25zLic7CgkJCQlpZiAoI
HRydWUgIT09ICRzdXBwcmVzc19hbGVydCApIHsKCQkJCQlzZWxmOjphbGVydCggJGVycm9yLCB0cnVlLCAn
OTAwMicgKTsKCQkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZXJyb3InLCAkZXJyb3IgKTsKCQkJCX0
KCQkJCWlmICggdHJ1ZSA9PT0gJGRpZV9vbl9mYWlsICkgewoJCQkJCWRpZSggJGVycm9yICk7CgkJCQl9Cg
kJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoJCS8vIENoZWNrIHdyaXRhYmxlLgoJCWlmICggISBpc193c
ml0YWJsZSggJGRpcmVjdG9yeSApICkgewoJCQkkZXJyb3IgPSAnRXJyb3IgIzkwMDJkOiBCYWNrdXBCdWRk
eSBkaXJlY3RvcnkgYCcgLiAkZGlyZWN0b3J5IC4gJ2AgaXMgaW5kaWNhdGVkIGFzIE5PVCBiZWluZyB3cml
0YWJsZS4gUGxlYXNlIHZlcmlmeSB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgaXQgYW5kIHBhcmVudCBkaXJlY3
RvcmllcyBhcyBhcHBsaWNhYmxlLic7CgkJCWlmICggdHJ1ZSAhPT0gJHN1cHByZXNzX2FsZXJ0ICkgewoJC
QkJc2VsZjo6YWxlcnQoICRlcnJvciwgdHJ1ZSwgJzkwMDInICk7CgkJCQlwYl9iYWNrdXBidWRkeTo6c3Rh
dHVzKCAnZXJyb3InLCAkZXJyb3IgKTsKCQkJfQoJCQlpZiAoIHRydWUgPT09ICRkaWVfb25fZmFpbCApIHs
KCQkJCWRpZSggJGVycm9yICk7CgkJCX0KCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJLy8gLmh0YWNjZXNzIG
NvbnRlbnRzIGZvciBkZW55aW5nLgoJCWlmICggdHJ1ZSA9PT0gJGRlbnlfYWxsICkgewoJCQkkZGVueV9hb
GwgPSAiXG5kZW55IGZyb20gYWxsIjsKCQl9IGVsc2UgewoJCQkkZGVueV9hbGwgPSAnJzsKCQl9CgoJCSRl
cnJvciA9ICcnOwoKCQlpZiAoICEgZmlsZV9leGlzdHMoICRkaXJlY3RvcnkgLiAnL2luZGV4LnBocCcgKSA
pIHsKCQkJLy8gRklYTUU6IEF2b2lkIEAgc3ltYm9sIGhlcmUuIFBvc3NpYmx5IHVzZSB0cnkvY2F0Y2g/Cg
kJCWlmICggZmFsc2UgPT09IEBmaWxlX3B1dF9jb250ZW50cyggJGRpcmVjdG9yeSAuICcvaW5kZXgucGhwJ
ywgJzxodG1sPjwvaHRtbD4nICkgKSB7CgkJCQkkZXJyb3IgLj0gJ1VuYWJsZSB0byB3cml0ZSBpbmRleC5w
aHAgZmlsZS4gJzsKCQkJfQoJCX0KCgkJaWYgKCAhIGZpbGVfZXhpc3RzKCAkZGlyZWN0b3J5IC4gJy9pbmR
leC5odG0nICkgKSB7CgkJCS8vIEZJWE1FOiBBdm9pZCBAIHN5bWJvbCBoZXJlLiBQb3NzaWJseSB1c2UgdH
J5L2NhdGNoPwoJCQlpZiAoIGZhbHNlID09PSBAZmlsZV9wdXRfY29udGVudHMoICRkaXJlY3RvcnkgLiAnL
2luZGV4Lmh0bScsICc8aHRtbD48L2h0bWw+JyApICkgewoJCQkJJGVycm9yIC49ICdVbmFibGUgdG8gd3Jp
dGUgaW5kZXguaHRtIGZpbGUuICc7CgkJCX0KCQl9CgoJCWlmICggISBmaWxlX2V4aXN0cyggJGRpcmVjdG9
yeSAuICcvaW5kZXguaHRtbCcgKSApIHsKCQkJLy8gRklYTUU6IEF2b2lkIEAgc3ltYm9sIGhlcmUuIFBvc3
NpYmx5IHVzZSB0cnkvY2F0Y2g/CgkJCWlmICggZmFsc2UgPT09IEBmaWxlX3B1dF9jb250ZW50cyggJGRpc
mVjdG9yeSAuICcvaW5kZXguaHRtbCcsICc8aHRtbD48L2h0bWw+JyApICkgewoJCQkJJGVycm9yIC49ICdV
bmFibGUgdG8gd3JpdGUgaW5kZXguaHRtbCBmaWxlLiAnOwoJCQl9CgkJfQoKCQkvLyAuaHRhY2Nlc3MgaWY
gd2UgYXJlbid0IGluIHRoZSBpbXBvcnRidWRkeSBzY3JpcHQuCgkJaWYgKCAhIGZpbGVfZXhpc3RzKCAkZG
lyZWN0b3J5IC4gJy8uaHRhY2Nlc3MnICkgKSB7CgkJCS8vIEZJWE1FOiBBdm9pZCBAIHN5bWJvbCBoZXJlL
iBQb3NzaWJseSB1c2UgdHJ5L2NhdGNoPwoJCQlpZiAoIGZhbHNlID09PSBAZmlsZV9wdXRfY29udGVudHMo
ICRkaXJlY3RvcnkgLiAnLy5odGFjY2VzcycsICdPcHRpb25zIC1JbmRleGVzJyAuICRkZW55X2FsbCApICk
gewoJCQkJJGVycm9yIC49ICdVbmFibGUgdG8gd3JpdGUgLmh0YWNjZXNzIGZpbGUuICc7CgkJCX0KCQl9Cg
oJCWlmICggJycgIT0gJGVycm9yICkgeyAvLyBGYWlsdXJlLgoJCQlpZiAoIHRydWUgIT09ICRzdXBwcmVzc
19hbGVydCApIHsKCQkJCSRlcnJvciA9ICdFcnJvciBjcmVhdGluZyBhbnRpIGRpcmVjdG9yeSBicm93c2lu
ZyBzZWN1cml0eSBmaWxlcyBpbiBkaXJlY3RvcnkgYCcgLiAkZGlyZWN0b3J5IC4gJ2AuIFBsZWFzZSB2ZXJ
pZnkgdGhpcyBkaXJlY3RvcnlcJ3MgcGVybWlzc2lvbnMgYWxsb3cgd3JpdGluZyAmIHJlYWRpbmcuIEVycm
9yczogYCcgLiAkZXJyb3IgLiAnYC4nOwoJCQkJc2VsZjo6YWxlcnQoICRlcnJvciApOwoJCQkJcGJfYmFja
3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJGVycm9yICk7CgkJCX0KCQkJaWYgKCB0cnVlID09PSAkZGll
X29uX2ZhaWwgKSB7CgkJCQlkaWUoICdTY3JpcHQgaGFsdGVkIGZvciBzZWN1cml0eS4gUGxlYXNlIHZlcml
meSBwZXJtaXNzaW9ucyBhbmQgdHJ5IGFnYWluLicgKTsKCQkJfQoJCX0gZWxzZSB7IC8vIFN1Y2Nlc3MuCg
kJCXJldHVybiB0cnVlOwoJCX0KCX0gLy8gRW5kIGFudGlfZGlyZWN0b3J5X2Jyb3dzaW5nKCkuCgoJLyoqC
gkgKiBEZWZpbmUgYSBkZWZhdWx0IHNlcmlhbCBmb3IgYWxsIHN1YnNlcXVlbnQgc3RhdHVzKCkgY2FsbHMu
CgkgKgoJICogQHBhcmFtIHN0cmluZyAkc2VyaWFsICBVbmlxdWUgaWRlbnRpZmllciB0byB1c2UgYXMgZGV
mYXVsdCBzZXJpYWwuCgkgKgoJICogQHJldHVybiBudWxsCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb2
4gc2V0X3N0YXR1c19zZXJpYWwoICRzZXJpYWwgKSB7CgkJc2VsZjo6JF9zdGF0dXNfc2VyaWFsID0gJHNlc
mlhbDsKCQlyZXR1cm47Cgl9IC8vIEVuZCBzZXRfc3RhdHVzX3NlcmlhbCgpLgoKCS8qKgoJICogQWRkIGEg
c2VyaWFsIGZvciBhbGwgc3Vic2VxdWVudCBzdGF0dXMoKSBjYWxscyB0byBsb2cgdG8gaW4gYWRkaXRpb24
gdG8gYW55IGN1cnJlbnRseSBsb2dnaW5nIHNlcmlhbHMuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc2VyaW
FsICBVbmlxdWUgaWRlbnRpZmllciB0byBhZGQgdG8gc2VyaWFscyB0byBsb2cgdG8uCgkgKgoJICogcmV0d
XJuIG51bGwKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhZGRfc3RhdHVzX3NlcmlhbCggJHNlcmlh
bCApIHsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdBZGRpbmcgc3RhdHVzIHNlcml
hbCBgJyAuICRzZXJpYWwgLiAnYC4nICk7CgkJaWYgKCBpc19hcnJheSggc2VsZjo6JF9zdGF0dXNfc2VyaW
FsICkgKSB7CgkJCXNlbGY6OiRfc3RhdHVzX3NlcmlhbFtdID0gJHNlcmlhbDsKCQl9IGVsc2UgewoJCQlzZ
WxmOjokX3N0YXR1c19zZXJpYWwgPSBhcnJheSggc2VsZjo6JF9zdGF0dXNfc2VyaWFsLCAkc2VyaWFsICk7
CgkJfQoJCXJldHVybjsKCX0gLy8gRW5kIGFkZF9zdGF0dXNfc2VyaWFsKCkuCgoJLyoqCgkgKiBSZW1vdmU
gYSBzZXJpYWwgZm9yIGFsbCBzdWJzZXF1ZW50IHN0YXR1cygpIGNhbGxzIHRvIGxvZyB0byBpbiBhZGRpdG
lvbiB0byBhbnkgY3VycmVudGx5IGxvZ2dpbmcgc2VyaWFscy4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRzZ
XJpYWwgIFVuaXF1ZSBpZGVudGlmaWVyIHRvIHJlbW92ZSBmcm9tIHNlcmlhbHMgdG8gbG9nIHRvLgoJICoK
CSAqIEByZXR1cm4gbnVsbAoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlbW92ZV9zdGF0dXNfc2V
yaWFsKCAkc2VyaWFsICkgewoJCWlmICggaXNfYXJyYXkoIHNlbGY6OiRfc3RhdHVzX3NlcmlhbCApICkgew
oJCQlmb3JlYWNoICggc2VsZjo6JF9zdGF0dXNfc2VyaWFsIGFzICRpID0+ICR0aGlzX3NlcmlhbCApIHsKC
QkJCWlmICggJHRoaXNfc2VyaWFsID09ICRzZXJpYWwgKSB7CgkJCQkJdW5zZXQoIHNlbGY6OiRfc3RhdHVz
X3NlcmlhbFsgJGkgXSApOwoJCQkJCXJldHVybjsKCQkJCX0KCQkJfQoJCX0gZWxzZSB7IC8vIHNob3VsZCB
iZSBhIHN0cmluZy4KCQkJaWYgKCBzZWxmOjokX3N0YXR1c19zZXJpYWwgPT0gJHNlcmlhbCApIHsKCQkJCX
NlbGY6OiRfc3RhdHVzX3NlcmlhbCA9ICcnOwoJCQl9CgkJfQoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzK
CAnZGV0YWlscycsICdSZW1vdmVkIHN0YXR1cyBzZXJpYWwgYCcgLiAkc2VyaWFsIC4gJ2AuJyApOwoKCQly
ZXR1cm47Cgl9IC8vIEVuZCByZW1vdmVfc3RhdHVzX3NlcmlhbCgpLgoKCS8qKgoJICogR2V0IGN1cnJlbnQ
gc2VyaWFsIHN0YXR1cyBsb2dzIGFyZSBnb2luZyB0by4KCSAqCgkgKiBAcmV0dXJuIHN0cmluZyAkc3RhdH
VzX3NlcmlhbCAgQ3VycmVudCBzZXJpYWwgc2V0LgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdld
F9zdGF0dXNfc2VyaWFsKCkgewoJCXJldHVybiBzZWxmOjokX3N0YXR1c19zZXJpYWw7Cgl9IC8vIEVuZCBn
ZXRfc3RhdHVzX3NlcmlhbCgpLgoKCS8qKgoJICogTG9ncyBkYXRhIHRvIGEgQ1NWIGZpbGUuIE9wdGlvbmF
sIHVuaXF1ZSBzZXJpYWwgaWRlbnRpZmllci4KCSAqIElmIGEgc2VyaWFsIGlzIHBhc3NlZCB0aGVuIEVWRV
JZVEhJTkcgd2lsbCBiZSBsb2dnZWQgdG8gdGhlIHNwZWNpZmllZCBzZXJpYWwgZmlsZSBpbiBhZGRpdGlvb
iB0byB3aGF0ZXZlciAoaWYgYW55dGhpbmcpIGlzIGxvZ2dlZCB0byBtYWluIHN0YXR1cyBmaWxlLgoJICog
QWx3YXlzIGxvZ3MgdG8gbWFpbiBzdGF0dXMgZmlsZSBiYXNlZCBvbiBsb2dnaW5nIHNldHRpbmdzIHdoZXR
oZXIgc2VyaWFsIGlzIHBhc3NlZCBvciBub3QuCgkgKgoJICogTk9URTogV2hlbiBmdWxsIGxvZ2dpbmcgaX
Mgb24gQU5EIGEgc2VyaWFsIGlzIHBhc3NlZCwgaXQgd2lsbCBiZSB3cml0dGVuIHRvIGEgX3N1bV8gdGV4d
CBmaWxlIGluc3RlYWQgb2YgdGhlIG1haW4gbG9nIGZpbGUuCgkgKgoJICogQHNlZSBzZWxmOjpnZXRfc3Rh
dHVzKCkuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkdHlwZSAgICAgICAgICAgIFZhbGlkIHR5cGVzOiBlcnJ
vciwgd2FybmluZywgZGV0YWlscywgbWVzc2FnZS4KCSAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UgICAgIC
AgICBNZXNzYWdlIHRvIGxvZy4KCSAqIEBwYXJhbSBzdHJpbmcgJHNlcmlhbHMgICAgICAgICBPcHRpb25hb
C4gT3B0aW9uYWwgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcGx1Z2luJ3MgbWVzc2FnZS4KCSAqICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXMgbWVzc2FnZXMgYXJlIHVuaXF1ZSBwZXIgcGx
1Z2luIHNvIHRoaXMgYWRkcyBhbiBhZGRpdGlvbmFsIHVuaXF1ZSBsYXllciBmb3IgcmV0cmlldmFsLgoJIC
ogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHNlbGY6OiRfc3RhdHVzX3NlcmlhbCBoYXMgY
mVlbiBzZXQgYnkgc2V0X3N0YXR1c19zZXJpYWwoKSB0aGVuIGl0IHdpbGwgb3ZlcnJpZGUgaWYgJHNlcmlh
bCBpcyBibGFuay4KCSAqIEBwYXJhbSBib29sICAgJGpzX21vZGUgICAgICAgICBJZiBKUyBtb2RlLgoJICo
gQHBhcmFtIGJvb2wgICAkZWNob19ub3Rfd3JpdGUgIEVjaG8gb3V0cHV0IGluc3RlYWQgb2Ygd3JpdGUgdG
8gZmlsZS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdGF0dXMoICR0eXBlLCAkbWVzc2FnZSwgJ
HNlcmlhbHMgPSAnJywgJGpzX21vZGUgPSBmYWxzZSwgJGVjaG9fbm90X3dyaXRlID0gZmFsc2UgKSB7CgoJ
CWlmICggISBjbGFzc19leGlzdHMoICdiYWNrdXBidWRkeV9jb3JlJyApICkgewoJCQlyZXF1aXJlX29uY2U
gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2NsYXNzZXMvY29yZS5waHAnOwoJCX0KCgkJaW
YgKCAhIGlzc2V0KCBzZWxmOjokb3B0aW9uc1snbG9nX2xldmVsJ10gKSApIHsgLy8gSWYgc2V0dGluZ3MgY
XJlIGNvcnJ1cHRlZCBkZWZhdWx0IHRvIG5vIGxvZ2dpbmcuCgkJCXNlbGY6OiRvcHRpb25zWydsb2dfbGV2
ZWwnXSA9IDA7CgkJfQoKCQlpZiAoICcnICE9IHNlbGY6OiRfc3RhdHVzX3NlcmlhbCAmJiAnJyA9PSAkc2V
yaWFscyApIHsKCQkJJHNlcmlhbHMgPSBzZWxmOjokX3N0YXR1c19zZXJpYWw7CgkJfQoKCQlpZiAoIGRlZm
luZWQoICdCQUNLVVBCVUREWV9XUF9DTEknICkgJiYgdHJ1ZSA9PT0gQkFDS1VQQlVERFlfV1BfQ0xJICkge
woJCQlpZiAoIGNsYXNzX2V4aXN0cyggJ1dQX0NMSScgKSApIHsKCQkJCVdQX0NMSTo6bGluZSggJHR5cGUg
LiAnIC0gJyAuICRtZXNzYWdlICk7CgkJCX0KCQl9CgoJCS8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGEgdW5pcXV
lIGxvZyBzZXJpYWwgZm9yIGFsbCBsb2dzIGZvciBzZWN1cml0eS4KCQlpZiAoICEgaXNzZXQoIHNlbGY6Oi
RvcHRpb25zWydsb2dfc2VyaWFsJ10gKSB8fCAnJyA9PSBzZWxmOjokb3B0aW9uc1snbG9nX3NlcmlhbCddI
CkgewoJCQlzZWxmOjokb3B0aW9uc1snbG9nX3NlcmlhbCddID0gc2VsZjo6cmFuZG9tX3N0cmluZyggMTUg
KTsKCQkJc2VsZjo6c2F2ZSgpOwoJCX0KCgkJaWYgKCAhIGlzX2FycmF5KCAkc2VyaWFscyApICkgewoJCQk
kc2VyaWFscyA9IGFycmF5KCAkc2VyaWFscyApOwoJCX0KCgkJLy8gQ2FsY3VsYXRlIGxvZyBkaXJlY3Rvcn
kuCgkJJGxvZ19kaXJlY3RvcnkgPSBiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3RvcnkoKTsgLy8gQ
WxzbyBoYW5kbGVzIHdoZW4gd2l0aGluIGltcG9ydGJ1ZGR5LgoKCQkvLyBQcmVwYXJlIGRpcmVjdG9yeSBm
b3IgbG9nIGZpbGVzLiBSZXR1cm4gaWYgdW5hYmxlIHRvIGRvIHNvLgoJCWlmICggdHJ1ZSA9PT0gc2VsZjo
6JF9za2lwbG9nICkgeyAvLyBib29sIHRydWUgc28gc2tpcC4KCQkJcmV0dXJuOwoJCX0gZWxzZWlmICggZm
Fsc2UgIT09IHNlbGY6OiRfc2tpcGxvZyApIHsgLy8gc29tZXRoaW5nIG90aGVyIHRoYW4gYm9vbCBmYWxzZ
SBzbyBjaGVjayBkaXJlY3RvcnkgYmVmb3JlIHBy
b2NlZWRpbmcuCgkJCSRkaWVfb25fZmFpbCAgICA9IGZhbHNlOwoJCQkkZGVueV9hbGwgICAgICAgPSBmYWx
zZTsKCQkJJHN1cHByZXNzX2FsZXJ0ID0gdHJ1ZTsKCQkJaWYgKCB0cnVlICE9PSBzZWxmOjphbnRpX2Rpcm
VjdG9yeV9icm93c2luZyggJGxvZ19kaXJlY3RvcnksICRkaWVfb25fZmFpbCwgJGRlbnlfYWxsLCAkc3Vwc
HJlc3NfYWxlcnQgKSApIHsgLy8gVW5hYmxlIHRvIHNlY3VyZSBkaXJlY3RvcnkuIEZhaWwuCgkJCQlzZWxm
OjokX3NraXBsb2cgPSB0cnVlOwoJCQkJcmV0dXJuOwoJCQl9IGVsc2UgewoJCQkJc2VsZjo6JF9za2lwbG9
nID0gZmFsc2U7CgkJCX0KCQl9CgoJCWZvcmVhY2ggKCAkc2VyaWFscyBhcyAkc2VyaWFsICkgewoKCQkJLy
8gSW1wb3J0QnVkZHkgYWx3YXlzIHdyaXRlIHRvIG1haW4gc3RhdHVzIGxvZy4KCQkJaWYgKCBkZWZpbmVkK
CAnUEJfSU1QT1JUQlVERFknICkgJiYgKCBQQl9JTVBPUlRCVUREWSA9PT0gdHJ1ZSApICkgeyAvLyBJTVBP
UlRCVUREWS4KCgkJCQkkd3JpdGVfc2VyaWFsID0gZmFsc2U7CgkJCQkkd3JpdGVfbWFpbiAgID0gdHJ1ZTs
KCQkJCSRtYWluX2ZpbGUgICAgPSAkbG9nX2RpcmVjdG9yeSAuICdzdGF0dXMtJyAuIHNlbGY6OiRvcHRpb2
5zWydsb2dfc2VyaWFsJ10gLiAnLnR4dCc7CgoJCQl9IGVsc2UgeyAvLyBTVEFOREFMT05FLgoKCQkJCS8vI
ERldGVybWluZSB3aGV0aGVyIHdyaXRpbmcgdG8gbWFpbiBleHRyYW5lb3VzIGxvZyBmaWxlLgoJCQkJJHdy
aXRlX21haW4gPSBmYWxzZTsKCQkJCWlmICggMCA9PSBzZWxmOjokb3B0aW9uc1snbG9nX2xldmVsJ10gKSB
7IC8vIE5vIGxvZ2dpbmcuCgkJCQkJCSR3cml0ZV9tYWluID0gZmFsc2U7CgkJCQl9IGVsc2VpZiAoIDEgPT
0gc2VsZjo6JG9wdGlvbnNbJ2xvZ19sZXZlbCddICkgeyAvLyBFcnJvcnMgb25seS4KCQkJCQlpZiAoICdlc
nJvcicgPT09ICR0eXBlICkgewoJCQkJCQkkd3JpdGVfbWFpbiA9IHRydWU7CgkJCQkJCXNlbGY6OmxvZygg
J1snIC4gJHNlcmlhbCAuICddICcgLiAkbWVzc2FnZSwgJ2Vycm9yJyApOwoJCQkJCX0KCQkJCX0gZWxzZSB
7IC8vIEV2ZXJ5dGhpbmcgZWxzZS4KCQkJCQkkd3JpdGVfbWFpbiA9IHRydWU7CgkJCQkJc2VsZjo6bG9nKC
AnWycgLiAkc2VyaWFsIC4gJ10gJyAuICRtZXNzYWdlLCAkdHlwZSApOwoJCQkJfQoKCQkJCS8vIERldGVyb
WluZSB3aGljaCBub3JtYWwgc3RhdHVzIGxvZyBmaWxlcyB0byB3cml0ZS4KCQkJCWlmICggJycgIT0gJHNl
cmlhbCApIHsKCQkJCQkkd3JpdGVfc2VyaWFsID0gdHJ1ZTsKCQkJCQkkd3JpdGVfbWFpbiAgID0gZmFsc2U
7CgkJCQkJaWYgKCAoIGZhbHNlID09PSBzdHJpc3RyKCAkc2VyaWFsLCAncmVtb3RlX3NlbmQtJyApICkgJi
YgKCBmYWxzZSA9PT0gc3RyaXN0ciggJHNlcmlhbCwgJ2xpdmVfcGVyaW9kaWMnICkgKSApIHsgLy8gT25se
SB3cml0ZSBzdW0gZmlsZSBpZiBOT1QgYSByZW1vdGUgc2VuZCBhbmQgTk9UIExpdmUgbG9nLgoJCQkJCQkk
d3JpdGVfbWFpbiA9IHRydWU7CgkJCQkJCSRtYWluX2ZpbGUgID0gJGxvZ19kaXJlY3RvcnkgLiAnc3RhdHV
zLScgLiAkc2VyaWFsIC4gJ19zdW1fJyAuIHNlbGY6OiRvcHRpb25zWydsb2dfc2VyaWFsJ10gLiAnLnR4dC
c7CgkJCQkJfQoJCQkJfSBlbHNlIHsKCQkJCQkkd3JpdGVfc2VyaWFsID0gZmFsc2U7CgkJCQkJJHdyaXRlX
21haW4gICA9IGZhbHNlOwoJCQkJfQoJCQl9CgoJCQlpZiAoICEgZnVuY3Rpb25fZXhpc3RzKCAnd3JpdGVf
c3RhdHVzX2xpbmUnICkgKSB7CgkJCQkvKioKCQkJCSAqIEZ1bmN0aW9uIGZvciB3cml0aW5nIGFjdHVhbCB
sb2cgQ1NWIGRhdGEuIFVzZWQgbGF0ZXIuCgkJCQkgKgoJCQkJICogQHBhcmFtIHN0cmluZyAkZmlsZSAgIC
AgICAgICAgRmlsZSB0byB3cml0ZS4KCQkJCSAqIEBwYXJhbSBhcnJheSAgJGNvbnRlbnRfYXJyYXkgIEFyc
mF5IG9mIGNvbnRlbnQgdG8gd3JpdGUuCgkJCQkgKiBAcGFyYW0gYm9vbCAgICRlY2hvICAgICAgICAgICBF
Y2hvIGluc3RlYWQgb2Ygd3JpdGUuCgkJCQkgKi8KCQkJCWZ1bmN0aW9uIHdyaXRlX3N0YXR1c19saW5lKCA
kZmlsZSwgJGNvbnRlbnRfYXJyYXksICRlY2hvICkgewoJCQkJCSR3cml0ZV9kYXRhID0ganNvbl9lbmNvZG
UoICRjb250ZW50X2FycmF5ICkgLiBQSFBfRU9MOwoJCQkJCWlmICggdHJ1ZSA9PT0gJGVjaG8gKSB7IC8vI
EVjaG8gZGF0YSBpbnN0ZWFkIG9mIHdyaXRpbmcgdG8gZmlsZS4gVXNlZCBieSBhamF4IHdoZW4gY2hlY2tp
bmcgc3RhdHVzIGxvZyBhbmQgbmVlZGluZyB0byBwcmVwZW5kIGJlZm9yZSBsb2cuCgkJCQkJCWVjaG8gJHd
yaXRlX2RhdGE7CgkJCQkJfSBlbHNlIHsKCQkJCQkJLy8gRklYTUU6IEF2b2lkIEAgc3ltYm9sIGhlcmUuCg
kJCQkJCSRmaWxlX2hhbmRsZSA9IEBmb3BlbiggJGZpbGUsICdhJyApOwoJCQkJCQlpZiAoIGZhbHNlICE9P
SAkZmlsZV9oYW5kbGUgKSB7IC8vIEFwcGVuZCBtb2RlLgoJCQkJCQkJLy8gRklYTUU6IEF2b2lkIEAgc3lt
Ym9sIGhlcmUuCgkJCQkJCQlAZndyaXRlKCAkZmlsZV9oYW5kbGUsICR3cml0ZV9kYXRhICk7CgkJCQkJCQk
vLyBGSVhNRTogQXZvaWQgQCBzeW1ib2wgaGVyZS4KCQkJCQkJCUBmY2xvc2UoICRmaWxlX2hhbmRsZSApOw
oJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgoJCQkkY29udGVudF9hcnJheSA9IGFycmF5KAoJCQkJJ2V2Z
W50JyA9PiAkdHlwZSwKCQkJCSd0aW1lJyAgPT4gcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPmxvY2FsaXpl
X3RpbWUoIHRpbWUoKSApLCAvLyBUaW1lIHRoaXMgaGFwcGVuZWQuCgkJCQkndScgICAgID0+IHN1YnN0cig
gKHN0cmluZykgbWljcm90aW1lKCksIDIsIDIgKSwKCQkJCSdydW4nICAgPT4gc3ByaW50ZiggJyUwMS4yZi
csIHJvdW5kKCBtaWNyb3RpbWUoIHRydWUgKSAtIHNlbGY6OiRzdGFydF90aW1lLCAyICkgKSwgLy8gRWxhc
HNlZCBQSFAgdGltZS4KCQkJCSdtZW0nICAgPT4gc3ByaW50ZiggJyUwMS4yZicsIHJvdW5kKCBtZW1vcnlf
Z2V0X3VzYWdlKCkgLyAxMDQ4NTc2LCAyICkgKSwgLy8gTWVtb3J5IHVzZWQuCVByZS03LjAgd2FzOiBtZW1
vcnlfZ2V0X3BlYWtfdXNhZ2UoKS4KCQkJCSdkYXRhJyAgPT4gc3RyX3JlcGxhY2UoIGNociggOSApLCAnIC
AgJywgJG1lc3NhZ2UgKSwgLy8gQm9keSBvZiB0aGUgbWVzc2FnZS4KCQkJKTsKCgkJCS8qKioqKioqKioqI
E1BSU4gTE9HIEZJTEUgb3IgU1VNIEZJTEUgKi8KCQkJaWYgKCB0cnVlID09PSAkd3JpdGVfbWFpbiApIHsg
Ly8gV1JJVEUgVE8gTUFJTiBMT0cgRklMRSBvciBTVU0gRklMRS4KCQkJCXdyaXRlX3N0YXR1c19saW5lKCA
kbWFpbl9maWxlLCAkY29udGVudF9hcnJheSwgJGVjaG9fbm90X3dyaXRlICk7CgkJCX0KCgkJCS8qKioqKi
oqKioqIFNFUklBTCBMT0cgRklMRSAqLwoJCQlpZiAoIHRydWUgPT09ICR3cml0ZV9zZXJpYWwgKSB7CgkJC
Qkkc2VyaWFsX2ZpbGUgPSAkbG9nX2RpcmVjdG9yeSAuICdzdGF0dXMtJyAuICRzZXJpYWwgLiAnXycgLiBz
ZWxmOjokb3B0aW9uc1snbG9nX3NlcmlhbCddIC4gJy50eHQnOwoJCQkJd3JpdGVfc3RhdHVzX2xpbmUoICR
zZXJpYWxfZmlsZSwgJGNvbnRlbnRfYXJyYXksICRlY2hvX25vdF93cml0ZSApOwoJCQl9CgoJCQkvLyBPdX
RwdXQgaW1wb3J0YnVkZHkgc3RhdHVzIGxvZyB0byBzY3JlZW4uCgkJCWdsb2JhbCAkcGJfYmFja3VwYnVkZ
HlfanNfc3RhdHVzOwoJCQlpZiAoICggZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApIHx8ICggaXNzZXQo
ICRwYl9iYWNrdXBidWRkeV9qc19zdGF0dXMgKSAmJiB0cnVlID09PSAkcGJfYmFja3VwYnVkZHlfanNfc3R
hdHVzICkgKSAmJiAoICd0cnVlJyAhPSBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ2RlcGxveScgKSApICkgey
AvLyBJZiBpbXBvcnRidWRkeSwganMgbW9kZSwgYW5kIG5vdCBhIGRlcGxveW1lbnQuCgkJCQllY2hvICc8c
2NyaXB0PnBiX3N0YXR1c19hcHBlbmQoICcgLiBqc29uX2VuY29kZSggJGNvbnRlbnRfYXJyYXkgKSAuICcg
KTs8L3NjcmlwdD4nIC4gIlxuIjsKCQkJCXBiX2JhY2t1cGJ1ZGR5OjpmbHVzaCgpOwoJCQl9CgkJfSAvLyB
lbmQgZm9yZWFjaCAkc2VyaWFscy4KCgl9IC8vIEVuZCBzdGF0dXMoKS4KCgkvKioKCSAqIEdldHMgYWxsIH
N0YXR1cyBpbmZvcm1hdGlvbiBsb2dnZWQgdmlhIHN0YXR1cygpLiBSZXR1cm5zIGFuIGFycmF5IG9mIGFyc
mF5cyB3aXRoIGxvZ2dlZCBkYXRhLgoJICoKCSAqICBSZXR1cm4gZm9ybWF0OgoJICogICAgIGFycmF5KAoJ
ICogICAgICAgICBhcnJheSggVElNRVNUQU1QLCBUSU1FX0lOLCBQRUFLX01FTU9SWSwgVFlQRSwgTUVTU0F
HRSApLAoJICogICAgICAgICBhcnJheSggVElNRVNUQU1QLCBUWVBFLCBNRVNTQUdFICksCgkgKiAgICAgKQ
oJICoKCSAqIEBzZWUgc2VsZjo6c3RhdHVzKCkuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc2VyaWFsICAgI
CAgICAgICAgICBVbmlxdWUgaWRlbnRpZmllci4gUmV0cmlldmVzIGEgc3Vic2V0IG9mIGxvZ2dlZCBpbmZv
cm1hdGlvbiBiYXNlZCBvbiB0aGlzIHVuaXF1ZSBJRCB0aGF0IHdhcyBwYXNzZWQgdG8gc3RhdHVzKCkgd2h
lbiBsb2dnaW5nLgoJICogQHBhcmFtIGJvb2wgICAkY2xlYXJfcmV0cmlldmVkICAgICAgRGVmYXVsdDogdH
J1ZS4gT24gdHJ1ZSBzdGF0dXMgaW5mb3JtYXRpb24gd2lsbCBiZSBwdXJnZWQgYWZ0ZXIgcmV0cmlldmFsL
goJICogQHBhcmFtIGJvb2wgICAkZXJhc2VfcmV0cmlldmVkICAgICAgRGVmYXVsdDogdHJ1ZS4gV2hldGhl
ciBvciBub3QgdG8gZGVsZXRlIGxvZyBmaWxlIG9uIHJldHJpZXZhbC4gTk9URTogUENMWmlwIGNhbiBOT1Q
gbG9zZSBmaWxlcyBtaWQtYmFja3VwIHNvIGxvZyBmaWxlcyBjYW5ub3QgZGVsZXRlIG1pZC16aXAuCgkgKi
BAcGFyYW0gYm9vbCAgICRoaWRlX2dldHRpbmdfc3RhdHVzICBEZWZhdWx0OiBmYWxzZS4gV2hldGhlciBvc
iBub3QgdG8gb3V0cHV0IHN0YXR1cyByZXRyaWV2YWwgbWVzc2FnZS4KCSAqIEBwYXJhbSBib29sICAgJGNv
cHlfcmV0cmlldmVkICAgICAgIEFycmF5IG9mIGFycmF5cy4gIEVhY2ggc3ViLWFycmF5IGNvbnRhaW5zIHR
ocmVlIHZhbHVlczogdGltZXN0YW1wLCB0eXBlIG9mIG1lc3NhZ2UsIGFuZCB0aGUgbWVzc2FnZSBpdHNlbG
YuIFNlZSBmdW5jdGlvbiBkZXNjcmlwdGlvbiBmb3IgZGV0YWlscy4gRW1wdHkgYXJyYXkgaWYgbm9uLWV4a
XN0aW5nIGxvZy4KCSAqCgkgKiBAcmV0dXJuIGFycmF5ICRzdGF0dXNfbGluZXMgIE9yIE51bGwgaWYgc3Rh
dHVzIGZpbGUgaXNuJ3Qgd3JpdGVhYmxlLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9zdGF
0dXMoICRzZXJpYWwgPSAnJywgJGNsZWFyX3JldHJpZXZlZCA9IHRydWUsICRlcmFzZV9yZXRyaWV2ZWQgPS
B0cnVlLCAkaGlkZV9nZXR0aW5nX3N0YXR1cyA9IGZhbHNlLCAkY29weV9yZXRyaWV2ZWQgPSBmYWxzZSApI
HsKCQkvLyBDYWxjdWxhdGUgbG9nIGRpcmVjdG9yeS4KCQkkbG9nX2RpcmVjdG9yeSA9IGJhY2t1cGJ1ZGR5
X2NvcmU6OmdldExvZ0RpcmVjdG9yeSgpOyAvLyBBbHNvIGhhbmRsZXMgd2hlbiBpbXBvcnRidWRkeS4KCgk
JJHN0YXR1c19maWxlID0gJGxvZ19kaXJlY3RvcnkgLiAnc3RhdHVzLSc7CgkJaWYgKCAnJyAhPSAkc2VyaW
FsICkgewoJCQkkc3RhdHVzX2ZpbGUgLj0gJHNlcmlhbCAuICdfJzsKCQl9CgkJJHN0YXR1c19maWxlIC49I
HNlbGY6OiRvcHRpb25zWydsb2dfc2VyaWFsJ10gLiAnLnR4dCc7CgoJCWlmICggISBmaWxlX2V4aXN0cygg
JHN0YXR1c19maWxlICkgKSB7CgkJCXJldHVybiBhcnJheSgpOyAvLyBObyBsb2cuCgkJfQoKCQlpZiAoIGZ
hbHNlID09PSAkaGlkZV9nZXR0aW5nX3N0YXR1cyApIHsKCQkJc2VsZjo6c3RhdHVzKCAnZGV0YWlscycsIC
dHZXR0aW5nIHN0YXR1cyBmb3Igc2VyaWFsIGAnIC4gJHNlcmlhbCAuICdgLiBDbGVhcjogYCcgLiAoICRjb
GVhcl9yZXRyaWV2ZWQgPyAndHJ1ZScgOiAnZmFsc2UnICkgLiAnYCcsICRzZXJpYWwgKTsKCQl9CgoJCS8v
IEZJWE1FOiBBdm9pZCBAIHN5bWJvbCBoZXJlLgoJCSRmaCA9IEBmb3BlbiggJHN0YXR1c19maWxlLCAncic
gKTsKCQlpZiAoIGZhbHNlICE9PSAkZmggKSB7IC8vIFJlYWQgd3JpdGUgbW9kZS4KCQkJJHN0YXR1c19saW
5lcyA9IGFycmF5KCk7CgkJCXdoaWxlICggZmFsc2UgIT09ICggJHN0YXR1c19saW5lID0gZmdldHMoICRma
CApICkgKSB7CgkJCQkkc3RhdHVzX2xpbmVzW10gPSAkc3RhdHVzX2xpbmU7CgkJCX0KCQkJZmNsb3NlKCAk
ZmggKTsKCgkJCWlmICggdHJ1ZSA9PT0gJGNsZWFyX3JldHJpZXZlZCApIHsKCQkJCWZpbGVfcHV0X2NvbnR
lbnRzKCAkc3RhdHVzX2ZpbGUsICcnICk7CgkJCX0KCgkJCWlmICggdHJ1ZSA9PT0gJGVyYXNlX3JldHJpZX
ZlZCApIHsKCQkJCS8vIEZJWE1FOiBBdm9pZCBAIHN5bWJvbCBoZXJlLiBUcnkvQ2F0Y2ggZXJyb3JzIG9uI
HRoaXM/IHN1cHByZXNzPwoJCQkJQHVubGluayggJHN0YXR1c19maWxlICk7CgkJCX0KCgkJCWlmICggZmFs
c2UgIT09ICRjb3B5X3JldHJpZXZlZCApIHsKCQkJCUBmaWxlX3B1dF9jb250ZW50cyggJGNvcHlfcmV0cml
ldmVkLCAkc3RhdHVzX2xpbmVzLCBGSUxFX0FQUEVORCApOwoJCQl9CgoJCQlyZXR1cm4gJHN0YXR1c19saW
5lczsKCQl9IGVsc2UgewoJCQkvLyBUT0RPOiBMb2cgYW4gZXJyb3IgaGVyZT8KCQkJLy8gc2VsZjo6YWxlc
nQoICdVbmFibGUgdG8gb3BlbiBmaWxlIGhhbmRsZXIgZm9yIHN0YXR1cyBmaWxlIGAnIC4gJHN0YXR1c19m
aWxlIC4gJ2AuIFVuYWJsZSB0byB3cml0ZSBzdGF0dXMgbG9nLicgKTsKCQl9Cgl9IC8vIEVuZCBnZXRfc3R
hdHVzKCkuCgoJLyoqCgkgKiBEaXNwbGF5cyBhIHRleHRhcmVhIGZvciBwbGFjaW5nIHN0YXR1cyB0ZXh0IG
ludG8uCgkgKgoJICogQHBhcmFtIHN0cmluZyAkZGVmYXVsdF90ZXh0ICBGaXJzdCBsaW5lIG9mIHRleHQgd
G8gZGlzcGxheS4KCSAqIEBwYXJhbSBib29sICAgJGhpZGRlbiAgICAgICAgICBXaGV0aGVyIG9yIG5vdCB0
byBhcHBseSBkaXNwbGF5OiBub25lOyBDU1MuCgkgKgoJICogQHJldHVybiBzdHJpbmcgIEhUTUwgZm9yIHR
leHRhcmVhLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN0YXR1c19ib3goICRkZWZhdWx0X3RleH
QgPSAnJywgJGhpZGRlbiA9IGZhbHNlICkgewoJCWRlZmluZSggJ1BCX1NUQVRVUycsIHRydWUgKTsgLy8gV
GVsbHMgZnJhbWV3b3JrIHN0YXR1cygpIGZ1bmN0aW9uIHRvIG91dHB1dCBmdXR1cmUgbG9nZ2luZyBpbmZv
IGludG8gc3RhdHVzIGJveCB2aWEgamF2YXNjcmlwdC4KCQkkcmV0dXJuID0gJzx0ZXh0YXJlYSByZWFkb25
seT0icmVhZG9ubHkiIGlkPSJwYl9iYWNrdXBidWRkeV9zdGF0dXMiIHdyYXA9Im9mZiInOwoJCWlmICggdH
J1ZSA9PT0gJGhpZGRlbiApIHsKCQkJJHJldHVybiAuPSAnIHN0eWxlPSJkaXNwbGF5OiBub25lOyAiJzsKC
Ql9CgkJJHJldHVybiAuPSAnPicgLiAkZGVmYXVsdF90ZXh0IC4gJzwvdGV4dGFyZWE+JzsKCgkJcmV0dXJu
ICRyZXR1cm47Cgl9IC8vIEVuZCBzdGF0dXNfYm9
4KCkuCgoJLyoqCgkgKiBTZXRzIGdyZWVkeSBzY3JpcHQgbGltaXRzIHRvIGhlbHAgcHJldmVudCB0aW1lb3
V0cywgcnVubmluZyBvdXQgb2YgbWVtb3J5LCBldGMuCgkgKgoJICogQHBhcmFtIGJvb2wgJHN1cHJlc3Nfc
3RhdHVzICBEbyBub3Qgc2V0IHN0YXR1cyBtZXNzYWdlLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9u
IHNldF9ncmVlZHlfc2NyaXB0X2xpbWl0cyggJHN1cHJlc3Nfc3RhdHVzID0gZmFsc2UgKSB7CgoJCSRyZXF
1ZXN0ZWRfc29ja2V0X3RpbWVvdXQgPSA2MCAqIDYwICogMjsKCQkkcmVxdWVzdGVkX2V4ZWN1dGlvbl90aW
1lID0gNjAgKiA2MCAqIDI7CgoJCS8vIERvbid0IGFib3J0IHNjcmlwdCBpZiB0aGUgY2xpZW50IGNvbm5lY
3Rpb24gaXMgbG9zdC9jbG9zZWQKCQlAaWdub3JlX3VzZXJfYWJvcnQoIHRydWUgKTsKCgkJLy8gU2V0IHNv
Y2tldCB0aW1lb3V0IHRvIHJlcXVlc3RlZCBwZXJpb2QuCgkJQGluaV9zZXQoICdkZWZhdWx0X3NvY2tldF9
0aW1lb3V0JywgJHJlcXVlc3RlZF9zb2NrZXRfdGltZW91dCApOwoKCQlwYl9iYWNrdXBidWRkeTo6c3RhdH
VzKCAnZGV0YWlscycsICdDaGVja2luZyBtYXggUEhQIGV4ZWN1dGlvbiB0aW1lIHNldHRpbmdzLicgKTsKC
QkvLyBTZXQgbWF4aW11bSBleGVjdXRpb24gdGltZSB0byByZXF1ZXN0ZWQgcGVyaW9kIGlmIG5vdCBhbHJl
YWR5IGJldHRlciB0aGFuIHRoYXQKCQkvLyBTZWUgaWYgd2UgY2FuIGdldCBhIGN1cnJlbnQgdmFsdWUgKG9
mIGFueSBzb3J0KQoJCSRvcmlnaW5hbF9leGVjdXRpb25fdGltZSA9IEBpbmlfZ2V0KCAnbWF4X2V4ZWN1dG
lvbl90aW1lJyApOwoJCWlmICggZmFsc2UgPT09ICRvcmlnaW5hbF9leGVjdXRpb25fdGltZSApIHsKCQkJJ
G9yaWdpbmFsX2V4ZWN1dGlvbl90aW1lID0gJ1Vua25vd24nOwoJCX0KCgkJLy8gQ2hlY2sgaWYgd2UgbmVl
ZCB0byB0cnkgYW5kIHNldC9pbmNyZWFzZS4KCQlpZiAoIGlzX251bWVyaWMoICRvcmlnaW5hbF9leGVjdXR
pb25fdGltZSApICYmICggKCAwID09ICRvcmlnaW5hbF9leGVjdXRpb25fdGltZSApIHx8ICggJHJlcXVlc3
RlZF9leGVjdXRpb25fdGltZSA8PSAkb3JpZ2luYWxfZXhlY3V0aW9uX3RpbWUgKSApICkgewoJCQkvLyBUa
GVyZSBpcyBubyBuZWVkIHRvIGNoYW5nZSBtYXhfZXhlY3V0aW9uX3RpbWUKCQkJaWYgKCBmYWxzZSA9PT0g
JHN1cHJlc3Nfc3RhdHVzICkgewoJCQkJaWYgKCBmYWxzZSA9PT0gKCAkY29uZmlndXJlZF9leGVjdXRpb25
fdGltZSA9IEBnZXRfY2ZnX3ZhciggJ21heF9leGVjdXRpb25fdGltZScgKSApICkgewoJCQkJCSRjb25maW
d1cmVkX2V4ZWN1dGlvbl90aW1lID0gJ1Vua25vd24nOwoJCQkJfQoJCQkJJGN1cnJlbnRfZXhlY3V0aW9uX
3RpbWUgPSBAaW5pX2dldCggJ21heF9leGVjdXRpb25fdGltZScgKTsKCQkJCWlmICggZmFsc2UgPT09ICRj
dXJyZW50X2V4ZWN1dGlvbl90aW1lICkgewoJCQkJCSRjdXJyZW50X2V4ZWN1dGlvbl90aW1lID0gJ1Vua25
vd24nOwoJCQkJfQoJCQkJc2VsZjo6c3RhdHVzKCAnZGV0YWlscycsIF9fKCAnTWF4aW11bSBQSFAgZXhlY3
V0aW9uIHRpbWUgd2FzIG5vdCBtb2RpZmllZCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApICk7CgkJCQlzZ
WxmOjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oICdSZXBvcnRlZCBQSFAgZXhlY3V0aW9uIHRp
bWUgLSBDb25maWd1cmVkOiAlMSRzOyBPcmlnaW5hbDogJTIkczsgQ3VycmVudDogJTMkcycsICdpdC1sMTB
uLWJhY2t1cGJ1ZGR5JyApLCAkY29uZmlndXJlZF9leGVjdXRpb25fdGltZSwgJG9yaWdpbmFsX2V4ZWN1dG
lvbl90aW1lLCAkY3VycmVudF9leGVjdXRpb25fdGltZSApICk7CgkJCX0KCQl9IGVsc2UgeyAvLyBFaXRoZ
XIgbm90IGEgbnVtZXJpYyB2YWx1ZSBvciB3ZSBuZWVkIHRvIHRyeSBhbmQgaW5jcmVhc2UKCgkJCWlmICgg
aXNzZXQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc2V0X2dyZWVkeV9leGVjdXRpb25fdGltZSddICk
gJiYgKCAnMScgPT0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydzZXRfZ3JlZWR5X2V4ZWN1dGlvbl90aW
1lJ10gKSApIHsKCQkJCWlmICggZmFsc2UgPT09ICRzdXByZXNzX3N0YXR1cyApIHsKCQkJCQlzZWxmOjpzd
GF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oICdBdHRlbXB0aW5nIHRvIHNldCBQSFAgZXhlY3V0aW9u
IHRpbWUgdG8gJTEkcycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkcmVxdWVzdGVkX2V4ZWN1dGlvbl9
0aW1lICkgKTsKCQkJCX0KCQkJCUBzZXRfdGltZV9saW1pdCggJHJlcXVlc3RlZF9leGVjdXRpb25fdGltZS
ApOwoJCQl9IGVsc2VpZiAoIGZhbHNlID09PSAkc3VwcmVzc19zdGF0dXMgKSB7Ly8gZW5kIHNldHRpbmcgb
WF4IGV4ZWN1dGlvbiB0aW1lCgkJCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdTa2lw
cGVkIGF0dGVtcHRpbmcgdG8gb3ZlcnJpZGUgbWF4IFBIUCBleGVjdXRpb24gdGltZSBiYXNlZCBvbiBzZXR
0aW5ncy4nICk7CgkJCX0KCgkJCWlmICggZmFsc2UgPT09ICRzdXByZXNzX3N0YXR1cyApIHsKCQkJCSRjb2
5maWd1cmVkX2V4ZWN1dGlvbl90aW1lID0gQGdldF9jZmdfdmFyKCAnbWF4X2V4ZWN1dGlvbl90aW1lJyApO
woJCQkJaWYgKCBmYWxzZSA9PT0gJGNvbmZpZ3VyZWRfZXhlY3V0aW9uX3RpbWUgKSB7CgkJCQkJJGNvbmZp
Z3VyZWRfZXhlY3V0aW9uX3RpbWUgPSAnVW5rbm93bic7CgkJCQl9CgkJCQkkY3VycmVudF9leGVjdXRpb25
fdGltZSA9IEBpbmlfZ2V0KCAnbWF4X2V4ZWN1dGlvbl90aW1lJyApOwoJCQkJaWYgKCBmYWxzZSA9PT0gJG
N1cnJlbnRfZXhlY3V0aW9uX3RpbWUgKSB7CgkJCQkJJGN1cnJlbnRfZXhlY3V0aW9uX3RpbWUgPSAnVW5rb
m93bic7CgkJCQl9CgkJCQlzZWxmOjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oICdSZXBvcnRl
ZCBQSFAgZXhlY3V0aW9uIHRpbWUgLSBDb25maWd1cmVkOiAlMSRzOyBPcmlnaW5hbDogJTIkczsgQ3VycmV
udDogJTMkcycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLCAkY29uZmlndXJlZF9leGVjdXRpb25fdGltZS
wgJG9yaWdpbmFsX2V4ZWN1dGlvbl90aW1lLCAkY3VycmVudF9leGVjdXRpb25fdGltZSApICk7CgkJCX0KC
Ql9CgoJCS8vIFNldCBtZW1vcnlfbGltaXQgdG8gZWl0aGVyIHRoZSB1c2VyIGRlZmluZWQgKFdvcmRQcmVz
cyBkZWZhdWx0ZWQpIG9yIG92ZXItcmlkZGVuIHZhbHVlLgoJCS8vIE5lZWQgdG8gZ2V0IHRoZSBvcmlnaW5
hbCB2YWx1ZSBoZXJlIGFzIHdlIHdpbGwgYmUgdXBkYXRpbmcgaXQuCgkJJG9yaWdpbmFsX21lbW9yeV9saW
1pdCA9IEBpbmlfZ2V0KCAnbWVtb3J5X2xpbWl0JyApOwoJCWlmICggZmFsc2UgPT09ICRvcmlnaW5hbF9tZ
W1vcnlfbGltaXQgKSB7CgkJCSRvcmlnaW5hbF9tZW1vcnlfbGltaXQgPSAnVW5rbm93bic7CgkJfQoKCQkv
LyBOZWVkIHRvIGNoZWNrIGlmIHdlIGFyZSBydW5uaW5nIG91dHNpZGUgb2YgV29yZFByZXNzIGluIHdoaWN
oIGNhc2Ugd2UgZG9uJ3QgdHJ5IGFuZCBjaGFuZ2UgYW55dGhpbmcKCQkvLyBidXQganVzdCByZXBvcnQgdG
hlIG1lbW9yeV9saW1pdCB2YWx1ZXMuIFRoZSB1c2VyIHdpbGwgaGF2ZSB0byB1cGRhdGUgY29uZmlnIGlmI
G5lY2Vzc2FyeSBiZWNhdXNlCgkJLy8gdGhlcmUgaXMgbm8gb3RoZXIgbWVjaGFuaXNtIHRvIHNldCB0aGUg
dmFsaWQgbWVtb3J5X2xpbWl0LgoJCS8vIElmIHdlIGFyZSBydW5uaW5nIHVuZGVyIFdvcmRQcmVzcyB0aGV
uIG5lZWQgYSBsaXR0bGUgZmFrZXJ5IGZvciBlYXJsaWVyIHZlcnNpb25zLgoJCWlmICggISBwYl9pc19zdG
FuZGFsb25lKCkgKSB7CgkJCS8vIE5vdGU6IFdQX01BWF9NRU1PUllfTElNSVQgd2FzIGludHJvZHVjZWQgV
1AzLjIgc28gd2UgbmVlZCB0byBmYWtlIGl0IGlmIGNvbnN0YW50IG5vdCBhbHJlYWR5IGRlZmluZWQKCQkJ
Ly8gVXNlIHRoZSBkZWZhdWx0IHZhbHVlIHRoYXQgV29yZFByZXNzIHVzZXMgaWYgdGhlIHVzZXIgaGFzbid
0IGRlZmluZWQgaXQKCQkJaWYgKCAhIGRlZmluZWQoICdXUF9NQVhfTUVNT1JZX0xJTUlUJyApICkgewoJCQ
kJZGVmaW5lKCAnV1BfTUFYX01FTU9SWV9MSU1JVCcsICcyNTZNJyApOwoJCQl9CgkJCUBpbmlfc2V0KCAnb
WVtb3J5X2xpbWl0JywgYXBwbHlfZmlsdGVycyggJ2FkbWluX21lbW9yeV9saW1pdCcsIFdQX01BWF9NRU1P
UllfTElNSVQgKSApOwoJCQlpZiAoIGZhbHNlID09PSAkc3VwcmVzc19zdGF0dXMgKSB7CgkJCQlzZWxmOjp
zdGF0dXMoICdkZXRhaWxzJywgc3ByaW50ZiggX18oICdBdHRlbXB0ZWQgdG8gc2V0IFBIUCBtZW1vcnkgbG
ltaXQgdG8gdXNlciBkZWZpbmVkIFdQX01BWF9NRU1PUllfTElNSVQgKCUxJHMpIG9yIG92ZXItcmlkZGVuI
HZhbHVlJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksIFdQX01BWF9NRU1PUllfTElNSVQgKSApOwoJCQl9
CgkJfQoJCWlmICggZmFsc2UgPT09ICRzdXByZXNzX3N0YXR1cyApIHsKCQkJJGNvbmZpZ3VyZWRfbWVtb3J
5X2xpbWl0ID0gQGdldF9jZmdfdmFyKCAnbWVtb3J5X2xpbWl0JyApOwoJCQlpZiAoIGZhbHNlID09PSAkY2
9uZmlndXJlZF9tZW1vcnlfbGltaXQgKSB7CgkJCQkkY29uZmlndXJlZF9tZW1vcnlfbGltaXQgPSAnVW5rb
m93bic7CgkJCX0KCQkJJGN1cnJlbnRfbWVtb3J5X2xpbWl0ID0gQGluaV9nZXQoICdtZW1vcnlfbGltaXQn
ICk7CgkJCWlmICggZmFsc2UgPT09ICRjdXJyZW50X21lbW9yeV9saW1pdCApIHsKCQkJCSRjdXJyZW50X21
lbW9yeV9saW1pdCA9ICdVbmtub3duJzsKCQkJfQoJCQlzZWxmOjpzdGF0dXMoICdkZXRhaWxzJywgc3ByaW
50ZiggX18oICdSZXBvcnRlZCBQSFAgbWVtb3J5IGxpbWl0cyAtIENvbmZpZ3VyZWQ6ICUxJHM7IE9yaWdpb
mFsOiAlMiRzOyBDdXJyZW50OiAlMyRzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksICRjb25maWd1cmVk
X21lbW9yeV9saW1pdCwgJG9yaWdpbmFsX21lbW9yeV9saW1pdCwgJGN1cnJlbnRfbWVtb3J5X2xpbWl0ICk
gKTsKCQl9CgoJfSAvLyBFbmQgc2V0X2dyZWVkeV9zY3JpcHRfbGltaXRzKCkuCgoJLyoqCgkgKiBMb2dzIH
RvIGEgdGV4dCBmaWxlIGRlcGVuZGluZyBvbiBzZXR0aW5ncy4KCSAqCgkgKiAwID0gbm9uZQoJICogMSA9I
GVycm9ycyBvbmx5CgkgKiAyID0gZXJyb3JzICsgd2FybmluZ3MKCSAqIDMgPSBkZWJ1Z2dpbmcgKGFsbCBr
aW5kcyBvZiBhY3Rpb25zKQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHRleHQgICAgICBUZXh0IHRvIGxvZy4
KCSAqIEBwYXJhbSBzdHJpbmcgJGxvZ190eXBlICBWYWxpZCBvcHRpb25zOiBlcnJvciwgd2FybmluZywgYW
xsIChkZWZhdWx0IHNvIG1heSBiZSBvbWl0dGVkKS4KCSAqCgkgKiBAcmV0dXJuIFt0eXBlXSBbZGVzY3Jpc
HRpb25dCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9nKCAkdGV4dCwgJGxvZ190eXBlID0gJ2Fs
bCcgKSB7CgkJaWYgKCBkZWZpbmVkKCAnUEJfREVNT19NT0RFJyApIHx8ICEgaXNzZXQoIHNlbGY6OiRvcHR
pb25zWydsb2dfbGV2ZWwnXSApIHx8IDAgPT0gc2VsZjo6JG9wdGlvbnNbJ2xvZ19sZXZlbCddICkgeyAvLy
BObyBsb2dnaW5nIGluIHRoaXMgcGx1Z2luIG9yIGRpc2FibGVkLgoJCQlyZXR1cm47CgkJfQoKCQkkd3Jpd
GUgPSBmYWxzZTsKCQlpZiAoIDEgPT0gc2VsZjo6JG9wdGlvbnNbJ2xvZ19sZXZlbCddICkgeyAvLyBFcnJv
cnMgb25seS4KCQkJaWYgKCAnZXJyb3InID09PSAkbG9nX3R5cGUgKSB7CgkJCQkkd3JpdGUgPSB0cnVlOwo
JCQl9CgkJfSBlbHNlIHsgLy8gQWxsIGxvZ2dpbmcgKGRlYnVnIG1vZGUpLgoJCQkkd3JpdGUgPSB0cnVlOw
oJCX0KCgkJaWYgKCB0cnVlID09PSAkd3JpdGUgKSB7CgkJCWlmICggISBpc3NldCggc2VsZjo6JG9wdGlvb
nNbJ2xvZ19zZXJpYWwnXSApICkgewoJCQkJc2VsZjo6JG9wdGlvbnNbJ2xvZ19zZXJpYWwnXSA9IHNlbGY6
OnJhbmRvbV9zdHJpbmcoIDE1ICk7CgkJCQlzZWxmOjpzYXZlKCk7CgkJCX0KCQkJJGZoID0gQGZvcGVuKCB
iYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3RvcnkoKSAuICdsb2ctJyAuIHNlbGY6OiRvcHRpb25zWy
dsb2dfc2VyaWFsJ10gLiAnLnR4dCcsICdhJyApOwoJCQlpZiAoICRmaCApIHsKCQkJCWlmICggZnVuY3Rpb
25fZXhpc3RzKCAnZ2V0X29wdGlvbicgKSApIHsKCQkJCQkkZ210X29mZnNldCA9IGdldF9vcHRpb24oICdn
bXRfb2Zmc2V0JyApOwoJCQkJfSBlbHNlIHsKCQkJCQkkZ210X29mZnNldCA9IDA7CgkJCQl9CgkJCQlmd3J
pdGUoICRmaCwgJ1snIC4gZGF0ZSggJ00gaiwgWSBIOmk6cyAnIC4gJGdtdF9vZmZzZXQsIHRpbWUoKSArIC
ggJGdtdF9vZmZzZXQgKiAzNjAwICkgKSAuICctJyAuICRsb2dfdHlwZSAuICddICcgLiAkdGV4dCAuICJcb
iIgKTsKCQkJCWZjbG9zZSggJGZoICk7CgkJCX0KCQl9Cgl9IC8vIEVuZCBsb2coKS4KCgkvKioKCSAqIEdl
bmVyYXRlIGEgcmFuZG9tIHN0cmluZyBvZiBjaGFyYWN0ZXJzLgoJICoKCSAqIEBwYXJhbSBpbnQgICAgJGx
lbmd0aCAgTGVuZ3RoIG9mIHJhbmRvbSBzdHJpbmcuCgkgKiBAcGFyYW0gc3RyaW5nICRjaGFycyAgIENoYX
JhY3RlcnMgdG8gaW5jbHVkZSBpbiBzdHJpbmcuCgkgKgoJICogQHJldHVybiBzdHJpbmcgJHN0cmluZyAgU
mFuZG9tIHN0cmluZy4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByYW5kb21fc3RyaW5nKCAkbGVu
Z3RoID0gMzIsICRjaGFycyA9ICdhYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6MTIzNDU2Nzg5MCcgKSB7Cgk
JJGNoYXJzX2xlbmd0aCA9ICggc3RybGVuKCAkY2hhcnMgKSAtIDEgKTsKCQkkc3RyaW5nICAgICAgID0gJG
NoYXJze3JhbmQoIDAsICRjaGFyc19sZW5ndGggKX07CgkJZm9yICggJGkgPSAxOyAkaSA8ICRsZW5ndGg7I
CRpID0gc3RybGVuKCAkc3RyaW5nICkgKSB7CgkJCSRyID0gJGNoYXJze3JhbmQoIDAsICRjaGFyc19sZW5n
dGggKX07CgkJCWlmICggJHIgIT0gJHN0cmluZ3skaSAtIDF9ICkgewoJCQkJJHN0cmluZyAuPSAkcjsKCQk
JfQoJCX0KCQlyZXR1cm4gJHN0cmluZzsKCX0gLy8gRW5kIHJhbmRvbV9zdHJpbmcoKS4KCgkvKioKCSAqIE
Rpc3BsYXlzIGEgbWVzc2FnZSB0byB0aGUgdXNlciB3aGVuIHRoZXkgaG92ZXIgb3ZlciB0aGUgcXVlc3Rpb
24gbWFyay4gR3JhY2VmdWxseSBmYWxscyBiYWNrIHRvIG5vcm1hbCB0b29sdGlwLgoJICogSFRNTCBpcyBh
bGxvd2VkIHdpdGhpbiB0b29sdGlwcy4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR2aWRlb19rZXkgIFlvdVR
1YmUgdmlkZW8ga2V5IGZyb20gdGhlIFVSTCA/dj1WSURFT19LRVlfSEVSRS4KCSAqIEBwYXJhbSBzdHJpbm
cgJHRpdGxlICAgICAgKE9wdGlvbmFsKSBUaXRsZSBvZiBtZXNzYWdlIHRvIHNob3cgdG8gdXNlci4gVGhpc
yBpcyBkaXNwbGF5ZWQgYXQgdG9wIG9mIHRpcCBpbiBiaWdnZXIgbGV0dGVycy4gRGVmYXVsdCBpcyBibGFu
ay4KCSAqIEBwYXJhbSBib29sICAgJGVjaG9fdGlwICAgKE9wdGlvbmFsKSBXaGV0aGVyIHRvIGVjaG8gdGh
lIHRpcCAoZGVmYXVsdDsgdHJ1ZSksIG9yIHJldH
VybiB0aGUgdGlwIChmYWxzZSkuCgkgKgoJICogQHJldHVybiBtaXhlZCAgSWYgbm90IGVjaG9pbmcgdGlwI
HRoZW4gdGhlIHN0cmluZyB3aWxsIGJlIHJldHVybmVkLiBXaGVuIGVjaG9pbmcgdGhlcmUgaXMgbm8gcmV0
dXJuLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZpZGVvKCAkdmlkZW9fa2V5LCAkdGl0bGUgPSA
nJywgJGVjaG9fdGlwID0gdHJ1ZSApIHsKCQlzZWxmOjppbml0X2NsYXNzX2NvbnRyb2xsZXIoICd1aScgKT
sgLy8gJHVpIGNsYXNzIHJlcXVpcmVkIHBhZ2VzIGNvbnRyb2xsZXIgYW5kIG1heSBub3QgYmUgc2V0IHVwI
GlmIG5vdCBpbiBvdXIgb3duIHBhZ2VzLgoJCXJldHVybiBzZWxmOjokdWktPnZpZGVvKCAkdmlkZW9fa2V5
LCAkdGl0bGUsICRlY2hvX3RpcCApOwoJfSAvLyBFbmQgdmlkZW8oKS4KCgkvKioKCSAqIEVucXVldWVzIHR
oZSByZXF1aXJlZCBzY3JpcHRzIC8gc3R5bGVzIG5lZWRlZCB0byB1c2UgdGhpY2tib3gKCSAqCgkgKiBAcm
V0dXJuIG51bGwKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlbnF1ZXVlX3RoaWNrYm94KCkgewoJC
XNlbGY6OmluaXRfY2xhc3NfY29udHJvbGxlciggJ3VpJyApOyAvLyAkdWkgY2xhc3MgcmVxdWlyZWQgcGFn
ZXMgY29udHJvbGxlciBhbmQgbWF5IG5vdCBiZSBzZXQgdXAgaWYgbm90IGluIG91ciBvd24gcGFnZXMuCgk
JcmV0dXJuIHNlbGY6OiR1aS0+ZW5xdWV1ZV90aGlja2JveCgpOwoJfSAvLyBFbmQgZW5xdWV1ZV90aGlja2
JveAoKCS8qKgoJICogRGlzcGxheXMgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIGF0IHRoZSB0b3Agb2YgdGhlI
HBhZ2Ugd2hlbiBpbiB0aGUgZGFzaGJvYXJkLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UgICAg
IE1lc3NhZ2UgeW91IHdhbnQgdG8gZGlzcGxheSB0byB0aGUgdXNlci4KCSAqIEBwYXJhbSBib29sICAgJGV
ycm9yICAgICAgIE9QVElPTkFMISB0cnVlIGluZGljYXRlcyB0aGlzIGFsZXJ0IGlzIGFuIGVycm9yIGFuZC
BkaXNwbGF5cyBhcyByZWQuIERlZmF1bHQ6IGZhbHNlLgoJICogQHBhcmFtIHN0cmluZyAkZXJyb3JfY29kZ
SAgT1BUSU9OQUwhIEVycm9yIGNvZGUgbnVtYmVyIHRvIHVzZSBpbiBsaW5raW5nIGluIHRoZSB3aWtpIGZv
ciBlYXN5IHJlZmVyZW5jZS4KCSAqIEBwYXJhbSBzdHJpbmcgJHJlbF90YWcgICAgIElmIG5vdCBlY2hvaW5
nIGFsZXJ0IHRoZW4gdGhlIHN0cmluZyB3aWxsIGJlIHJldHVybmVkLiBXaGVuIGVjaG9pbmcgdGhlcmUgaX
Mgbm8gcmV0dXJuLgoJICoKCSAqIEByZXR1cm4gbWl4ZWQgIFN0cmluZyBvciBudWxsLgoJICovCglwdWJsa
WMgc3RhdGljIGZ1bmN0aW9uIGFsZXJ0KCAkbWVzc2FnZSwgJGVycm9yID0gZmFsc2UsICRlcnJvcl9jb2Rl
ID0gJycsICRyZWxfdGFnID0gJycgKSB7CgkJc2VsZjo6aW5pdF9jbGFzc19jb250cm9sbGVyKCAndWknICk
7IC8vICR1aSBjbGFzcyByZXF1aXJlZCBwYWdlcyBjb250cm9sbGVyIGFuZCBtYXkgbm90IGJlIHNldCB1cC
BpZiBub3QgaW4gb3VyIG93biBwYWdlcy4KCQlzZWxmOjokdWktPmFsZXJ0KCAkbWVzc2FnZSwgJGVycm9yL
CAkZXJyb3JfY29kZSwgJHJlbF90YWcgKTsKCX0gLy8gRW5kIGFsZXJ0KCkuCgoJLyoqCgkgKiBEaXNtaXNz
YWJsZSBhbGVydCBzeXN0ZW0uCgkgKgoJICogQHVzZXMgYWxlcnQoKQoJICoKCSAqIEBwYXJhbSBzdHJpbmc
gJHVuaXF1ZV9pZCAgVW5pcXVlIElEIGZvciBhbGVydC4KCSAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UgIC
AgTWVzc2FnZSB5b3Ugd2FudCB0byBkaXNwbGF5IHRvIHRoZSB1c2VyLgoJICogQHBhcmFtIGJvb2wgICAkZ
XJyb3IgICAgICBPcHRpb25hbC4gRXJyb3IgY29kZSBudW1iZXIgdG8gdXNlIGluIGxpbmtpbmcgdG8gdGhl
IHdpa2kgZm9yIGVhc3kgcmVmZXJlbmNlLgoJICogQHBhcmFtIHN0cmluZyAkbW9yZV9jc3MgICBBZGRpdGl
vbmFsIGNzcyB0byBhcHBseSB0byBhbGVydC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkaXNhbG
VydCggJHVuaXF1ZV9pZCwgJG1lc3NhZ2UsICRlcnJvciA9IGZhbHNlLCAkbW9yZV9jc3MgPSAnJyApIHsKC
QlzZWxmOjppbml0X2NsYXNzX2NvbnRyb2xsZXIoICd1aScgKTsgLy8gJHVpIGNsYXNzIHJlcXVpcmVkIHBh
Z2VzIGNvbnRyb2xsZXIgYW5kIG1heSBub3QgYmUgc2V0IHVwIGlmIG5vdCBpbiBvdXIgb3duIHBhZ2VzLgo
JCXNlbGY6OiR1aS0+ZGlzYWxlcnQoICR1bmlxdWVfaWQsICRtZXNzYWdlLCAkZXJyb3IsICRtb3JlX2Nzcy
ApOwoJfSAvLyBFbmQgZGlzYWxlcnQoKS4KCgkvKioKCSAqIERpc3BsYXlzIGEgbWVzc2FnZSB0byB0aGUgd
XNlciB3aGVuIHRoZXkgaG92ZXIgb3ZlciB0aGUgcXVlc3Rpb24gbWFyay4gR3JhY2VmdWxseSBmYWxscyBi
YWNrIHRvIG5vcm1hbCB0b29sdGlwLgoJICogSFRNTCBpcyBhbGxvd2VkIHdpdGhpbiB0b29sdGlwcy4KCSA
qCgkgKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlICAgQWN0dWFsIG1lc3NhZ2UgdG8gc2hvdyB0byB1c2VyLg
oJICogQHBhcmFtIHN0cmluZyAkdGl0bGUgICAgIFRpdGxlIG9mIG1lc3NhZ2UgdG8gc2hvdyB0byB1c2VyL
iBUaGlzIGlzIGRpc3BsYXllZCBhdCB0b3Agb2YgdGlwIGluIGJpZ2dlciBsZXR0ZXJzLiAob3B0aW9uYWwp
IERlZmF1bHQgaXMgYmxhbmsuCgkgKiBAcGFyYW0gYm9vbCAgICRlY2hvX3RpcCAgKE9wdGlvbmFsKSBXaGV
0aGVyIHRvIGVjaG8gdGhlIHRpcCAoZGVmYXVsdDsgdHJ1ZSksIG9yIHJldHVybiB0aGUgdGlwIChmYWxzZS
kuCgkgKgoJICogQHJldHVybiBtaXhlZCAgSWYgbm90IGVjaG9pbmcgdGlwIHRoZW4gdGhlIHN0cmluZyB3a
WxsIGJlIHJldHVybmVkLiBXaGVuIGVjaG9pbmcgdGhlcmUgaXMgbm8gcmV0dXJuLgoJICovCglwdWJsaWMg
c3RhdGljIGZ1bmN0aW9uIHRpcCggJG1lc3NhZ2UsICR0aXRsZSA9ICcnLCAkZWNob190aXAgPSB0cnVlICk
gewoJCXNlbGY6OmluaXRfY2xhc3NfY29udHJvbGxlciggJ3VpJyApOyAvLyAkdWkgY2xhc3MgcmVxdWlyZW
QgcGFnZXMgY29udHJvbGxlciBhbmQgbWF5IG5vdCBiZSBzZXQgdXAgaWYgbm90IGluIG91ciBvd24gcGFnZ
XMuCgkJcmV0dXJuIHNlbGY6OiR1aS0+dGlwKCAkbWVzc2FnZSwgJHRpdGxlLCAkZWNob190aXAgKTsKCX0g
Ly8gRW5kIHRpcCgpLgoKCS8qKgoJICogQWRkcyBhIHBhZ2UgaW50byB0aGUgYWRtaW4uIFN0b3JlcyBtZW5
1IGl0ZW1zIHRvIGFkZCBpbiBzZWxmOjokX3BhZ2Vfc2V0dGluZ3MgYXJyYXkuIFJlZ2lzdGVycyBjYWxsYm
FjayB0byByZWdpc3Rlcl9hZG1pbl9tZW51KCkgd2l0aCBXb3JkUHJlc3MgdG8gYWN0dWFsbHkgc2V0IHVwI
HRoZSBwYWdlcy4KCSAqCgkgKiBAc2VlIHNlbGY6OnJlZ2lzdGVyX2FkbWluX21lbnUoKQoJICoKCSAqIEBw
YXJhbSBzdHJpbmcgJHBhcmVudF9zbHVnICBTbHVnIG9mIHRoZSBwYXJlbnQgbWVudSBpdGVtIHRvIGdvIHV
uZGVyLiBJZiBhIHNlcmllcyB1c2UgYFNFUklFU2AgZm9yIHRoZSB2YWx1ZSB0byBhdXRvbWF0aWNhbGx5IG
hhbmRsZSB0aGUgc2VyaWVzLiBQQiBwcmVmaXggYXV0b21hdGljYWxseSBhcHBsaWVkIHVubGVzcyAkc2x1Z
19wcmVmaXggb3ZlcnJpZGVzLgoJICogQHBhcmFtIHN0cmluZyAkcGFnZV9zbHVnICAgIFNsdWcgZm9yIHRo
aXMgcGFnZS4gUEIgcHJlZml4IGF1dG9tYXRpY2FsbHkgYXBwbGllZCB1bmxlc3MgJHNsdWdfcHJlZml4IG9
2ZXJyaWRlcy4KCSAqIEBwYXJhbSBzdHJpbmcgJHBhZ2VfdGl0bGUgICBUaXRsZSBvZiB0aGUgcGFnZS4gSW
YgdGhpcyBtZW51IGl0ZW0gaGFzIG5vIHBhcmVudCB0aGlzIGNhbiBiZSBhbiBhcnJheSBvZiBUV08gdGl0b
GVzLiBUaGUgcm9vdCBtZW51IGFuZCB0aGUgZmlyc3Qgc3VibWVudSBpdGVtIHRoYXQgbGlua3MgdG8gdGhl
IHNhbWUgcGxhY2UuCgkgKiBAcGFyYW0gc3RyaW5nICRjYXBhYmlsaXR5ICAgQ2FwYWJpbGl0eSByZXF1aXJ
lZCB0byBhY2Nlc3MgcGFnZS4gRGVmYXVsdDogYWN0aXZhdGVfcGx1Z2lucy4KCSAqIEBwYXJhbSBzdHJpbm
cgJGljb24gICAgICAgICBNZW51IGljb24gZ3JhcGhpYy4gQXV0b21hdGljYWxseSBwcmVmaXhlcyB0aGlzI
HZhbHVlIHdpdGggdGhlIGZ1bGwgVVJMIHRvIHBsdWdpbidzIGltYWdlcyBkaXJlY3RvcnkuIERlZmF1bHQ6
IGljb25fMTZ4MTYucG5nLgoJICogQHBhcmFtIHN0cmluZyAkc2x1Z19wcmVmaXggIFByZWZpeCB0byB1c2U
gd2l0aCB0aGlzIG1lbnUuIE92ZXJyaWRlIGlmIG5lZWRpbmcgdG8gYWRkIG1lbnUgdW5kZXIgYW5vdGhlci
BwbHVnaW4gb3IgY29yZSBtZW51cy4gRGVmYXVsdDogREVGQVVMVC4KCSAqIEBwYXJhbSBpbnQgICAgJHBvc
2l0aW9uICAgICBQcmlvcml0eSBvbiB3aGVyZSBpbiB0aGUgbWVudSB0byBhZGQgdGhpcy4gQnkgZGVmYXVs
dCBpdCBpcyBhZGRlZCB0byB0aGUgYm90dG9tIG9mIHRoZSBtZW51LiBJdCdzIHBvc3NpYmxlIHRvIG92ZXJ
3cml0ZSBhbm90aGVyIG1lbnUgaXRlbSBpZiB0aGlzIG51bWJlciBtYXRjaGVzLiBVc2UgY2F1dGlvbi4gRG
VmYXVsdDogbnVsbC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhZGRfcGFnZSggJHBhcmVudF9zb
HVnLCAkcGFnZV9zbHVnLCAkcGFnZV90aXRsZSwgJGNhcGFiaWxpdHkgPSAnYWN0aXZhdGVfcGx1Z2lucycs
ICRpY29uID0gJ2ljb25fbWVudV8xNngxNi5wbmcnLCAkc2x1Z19wcmVmaXggPSAnREVGQVVMVCcsICRwb3N
pdGlvbiA9IG51bGwgKSB7CgkJaWYgKCAnREVGQVVMVCcgPT0gJHNsdWdfcHJlZml4ICkgewoJCQkkc2x1Z1
9wcmVmaXggPSAncGJfJyAuIHNlbGY6OnNldHRpbmdzKCAnc2x1ZycgKSAuICdfJzsKCQl9CgoJCWlmICggI
SBpc19vYmplY3QoIHNlbGY6OiRfcGFnZXMgKSApIHsKCQkJc2VsZjo6X2luaXRfY29yZV9jb250cm9sbGVy
KCAncGFnZXMnICk7CgoJCQlpZiAoIGlzX25ldHdvcmtfYWRtaW4oKSApIHsgLy8gTXVsdGlzaXRlIGluc3R
hbGxhdGlvbiBhZG1pbjsgdXNlcyBkaWZmZXJlbnQgaG9vay4KCQkJCWFkZF9hY3Rpb24oICduZXR3b3JrX2
FkbWluX21lbnUnLCBhcnJheSggJ3BiX2JhY2t1cGJ1ZGR5JywgJ2luaXRfcmVnaXN0ZXJfYWRtaW5fbWVud
ScgKSApOwoJCQl9IGVsc2UgeyAvLyBTdGFuZGFsb25lIGFkbWluLgoJCQkJYWRkX2FjdGlvbiggJ2FkbWlu
X21lbnUnLCBhcnJheSggJ3BiX2JhY2t1cGJ1ZGR5JywgJ2luaXRfcmVnaXN0ZXJfYWRtaW5fbWVudScgKSA
pOwoJCQl9CgkJfQoKCQlzZWxmOjokX3BhZ2Vfc2V0dGluZ3NbXSA9IGFycmF5KAoJCQkncGFyZW50JyAgIC
AgID0+ICRwYXJlbnRfc2x1ZywKCQkJJ3NsdWcnICAgICAgICA9PiAkcGFnZV9zbHVnLAoJCQkndGl0bGUnI
CAgICAgID0+ICRwYWdlX3RpdGxlLAoJCQknY2FwYWJpbGl0eScgID0+ICRjYXBhYmlsaXR5LAoJCQknaWNv
bicgICAgICAgID0+ICRpY29uLAoJCQknc2x1Z19wcmVmaXgnID0+ICRzbHVnX3ByZWZpeCwKCQkJJ3Bvc2l
0aW9uJyAgICA9PiAkcG9zaXRpb24sCgkJKTsKCX0gLy8gRW5kIGFkZF9wYWdlKCkuCgoJLyoqCgkgKiBDYW
xsIENsYXNzIEFkbWluIE1lbnUgUmVnaXN0cmF0aW9uCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24ga
W5pdF9yZWdpc3Rlcl9hZG1pbl9tZW51KCkgewoJCSRjbGFzcyA9ICdwYl8nIC4gc2VsZjo6c2V0dGluZ3Mo
ICdzbHVnJyApOwoJCWNhbGxfdXNlcl9mdW5jKCBhcnJheSggJGNsYXNzLCAncmVnaXN0ZXJfYWRtaW5fbWV
udScgKSApOwoJfQoKCS8qKgoJICogSW50ZXJuYWwgY2FsbGJhY2sgZm9yIGFjdHVhbGx5IHJlZ2lzdGVyaW
5nIHRoZSBtZW51IGl0ZW1zIGludG8gV29yZFByZXNzLiBSZWdpc3RlcnMgcGFnZXMgZGVmaW5lZCBieSBzZ
WxmOjphZGRfcGFnZSgpLgoJICoKCSAqIEBzZWUgc2VsZjo6YWRkX3BhZ2UoKQoJICovCglwdWJsaWMgc3Rh
dGljIGZ1bmN0aW9uIHJlZ2lzdGVyX2FkbWluX21lbnUoKSB7CgkJaWYgKCAhIHNlbGY6OmJsYW5rKCBzZWx
mOjokX3NldHRpbmdzWydzZXJpZXMnXSApICkgeyAvLyBTRVJJRVMuCgkJCSRzZXJpZXNfc2x1ZyA9ICdwYl
8nIC4gc2VsZjo6JF9zZXR0aW5nc1snc2VyaWVzJ107CgkJCS8vIFdlIG5lZWQgdG8gc2VlIGZpcnN0IGlmI
HRoaXMgc2VyaWVzJyByb290IG1lbnUgaGFzIGJlZW4gY3JlYXRlZCBieSBhIHBsdWdpbiB5ZXQuCgkJCWds
b2JhbCAkbWVudTsKCQkJJGZvdW5kX3NlcmllcyA9IGZhbHNlOwoJCQlmb3JlYWNoICggJG1lbnUgYXMgJG1
lbnVzID0+ICRpdGVtICkgeyAvLyBMb29wIHRocm91Z2ggZXhpc3RpbmcgbWVudSBpdGVtcyBsb29raW5nIG
ZvciBvdXIgc2VyaWVzLgoJCQkJaWYgKCAkaXRlbVswXSA9PSAkc2VyaWVzX3NsdWcgKSB7CgkJCQkJJGZvd
W5kX3NlcmllcyA9IHRydWU7CgkJCQl9CgkJCX0KCQkJaWYgKCBmYWxzZSA9PT0gJGZvdW5kX3NlcmllcyAp
IHsgLy8gU2VyaWVzIHJvb3QgbWVudSBkb2VzIG5vdCBleGlzdDsgY3JlYXRlIGl0LgoJCQkJYWRkX21lbnV
fcGFnZSggc2VsZjo6JF9zZXR0aW5nc1snc2VyaWVzJ10gLiAnIEdldHRpbmcgU3RhcnRlZCcsIHNlbGY6Oi
Rfc2V0dGluZ3NbJ3NlcmllcyddLCAnYWN0aXZhdGVfcGx1Z2lucycsICRzZXJpZXNfc2x1ZywgYXJyYXkoI
CZzZWxmOjokX3BhZ2VzLCAnZ2V0dGluZ19zdGFydGVkJyApLCBzZWxmOjpwbHVnaW5fdXJsKCkgLiAnL2lt
YWdlcy9zZXJpZXNfaWNvbl8xNngxNi5wbmcnICk7IC8vICwgJHBhZ2VbJ3Bvc2l0aW9uJ10KCQkJCWFkZF9
zdWJtZW51X3BhZ2UoICRzZXJpZXNfc2x1Zywgc2VsZjo6JF9zZXR0aW5nc1snc2VyaWVzJ10gLiAnIEdldH
RpbmcgU3RhcnRlZCcsICdHZXR0aW5nIFN0YXJ0ZWQnLCAnYWN0aXZhdGVfcGx1Z2lucycsICRzZXJpZXNfc
2x1ZywgYXJyYXkoICZzZWxmOjokX3BhZ2VzLCAnZ2V0dGluZ19zdGFydGVkJyApICk7CgkJCX0KCgkJCS8v
IFJlZ2lzdGVyIGZvciBnZXR0aW5nIHN0YXJ0ZWQgcGFnZS4KCQkJZ2xvYmFsICRwbHVnaW5idWRkeV9zZXJ
pZXM7CgkJCWlmICggISBpc3NldCggJHBsdWdpbmJ1ZGR5X3Nlcmllc1sgc2VsZjo6JF9zZXR0aW5nc1snc2
VyaWVzJ10gXSApICkgewoJCQkJJHBsdWdpbmJ1ZGR5X3Nlcmllc1sgc2VsZjo6JF9zZXR0aW5nc1snc2Vya
WVzJ10gXSA9IGFycmF5KCk7CgkJCX0KCgkJCS8vIEFkZCB0aGlzIHBsdWdpbiBpbnRvIGdsb2JhbCBzZXJp
ZXMgdmFyaWFibGUuCgkJCSRwbHVnaW5idWRkeV9zZXJpZXNbIHNlbGY6OiRfc2V0dGluZ3NbJ3Nlcmllcyd
dIF1bIHNlbGY6OiRfc2V0dGluZ3NbJ3NsdWcnXSBdID0gYXJyYXkoCgkJCQkncGF0aCcgPT4gc2VsZjo6cG
x1Z2luX3BhdGgoKSwKCQkJCSduYW1lJyA9PiBzZWxmOjpzZXR0aW5ncyggJ25hbWUnICksCgkJCQknc2x1Z
ycgPT4gc2VsZjo6c2V0dGluZ3MoICdzbHVnJyApLAoJCQkpOwoJCX0KCgkJLy8gQWRkIGFsbCByZWdpc3Rl
cmVkIHBhZ2VzIGZvciB0aGlzIHBsdWdpbi4KCQlmb3JlYWNoICggc2VsZjo6JF9wYWdlX3NldHRpbmdzIGF
zICRwYWdlICkgewoJCQkkbWVudV9zbHVnID0gJHBhZ2VbJ3NsdWdfcHJlZml4J10gLiAkcGFnZVsnc2x1Zy
ddOwoJCQlpZiAoICdTRVJJRVMnID09PSAkcGFnZ
VsncGFyZW50J10gKSB7IC8vIEFkZGluZyBwYWdlIGludG8gc2VyaWVzLgoJCQkJJHBhcmVudF9zbHVnID0g
J3BiXycgLiBzZWxmOjokX3NldHRpbmdzWydzZXJpZXMnXTsKCQkJCWlmICggc2VsZjo6YmxhbmsoIHNlbGY
6OiRfc2V0dGluZ3NbJ3NlcmllcyddICkgKSB7IC8vIE5vIHNlcmllcyBzZXQgYnV0IG1lbnUgaXMgcmVnaX
N0ZXJlZCBpbnRvIGEgc2VyaWVzLgoJCQkJCWVjaG8gJ3tXQVJOSU5HOiBNZW51IGl0ZW0gcmVnaXN0ZXJlZ
CBpbnRvIGEgc2VyaWVzIGJ1dCBubyBwbHVnaW4gc2VyaWVzIGlzIGRlZmluZWQufSc7CgkJCQl9CgkJCX0g
ZWxzZSB7IC8vIE5vbi1zZXJpZXMgcGFnZS4KCQkJCSRwYXJlbnRfc2x1ZyA9ICRwYWdlWydzbHVnX3ByZWZ
peCddIC4gJHBhZ2VbJ3BhcmVudCddOwoJCQl9CgoJCQlpZiAoIGlzX2FycmF5KCAkcGFnZVsndGl0bGUnXS
ApICkgewoJCQkJJHBhZ2VfdGl0bGUgICAgID0gJHBhZ2VbJ3RpdGxlJ11bMF07CgkJCQkkcGFnZV90aXRsZ
V9hbHQgPSAkcGFnZVsndGl0bGUnXVsxXTsKCQkJfSBlbHNlIHsgLy8gTm90IGFuIGFycmF5IHNvIG9ubHkg
b25lIHBhZ2UgdGl0bGUuCgkJCQkkcGFnZV90aXRsZSAgICAgPSAkcGFnZVsndGl0bGUnXTsKCQkJCSRwYWd
lX3RpdGxlX2FsdCA9ICRwYWdlWyd0aXRsZSddOwoJCQl9CgoJCQkvLyBDYWxjdWxhdGUgaWNvbi4KCQkJaW
YgKCAnJyAhPSAkcGFnZVsnaWNvbiddICkgeyAvLyBJZiBpY29uIHNwZWNpZmllZCB0aGVuIGZpZ3VyZSBvd
XQgdXJsLgoJCQkJJGljb24gPSAkcGFnZVsnaWNvbiddOwoJCQl9IGVsc2UgeyAvLyBObyBpY29uLiBVc3Vh
bGx5IHVzZWQgd2hlbiBtYW51YWxseSBkb2luZyBDU1MgZm9yIHJldGluYSBpY29uLgoJCQkJJGljb24gPSA
nJzsKCQkJfQoKCQkJaWYgKCBzZWxmOjpibGFuayggJHBhZ2VbJ3BhcmVudCddICkgKSB7IC8vIFRvcC1sZX
ZlbCBtZW51LgoJCQkJYWRkX21lbnVfcGFnZSggJHBhZ2VfdGl0bGUsICRwYWdlX3RpdGxlLCAkcGFnZVsnY
2FwYWJpbGl0eSddLCAkbWVudV9zbHVnLCBhcnJheSggJnNlbGY6OiRfcGFnZXMsICRwYWdlWydzbHVnJ10g
KSwgJGljb24sICRwYWdlWydwb3NpdGlvbiddICk7CgkJCQlhZGRfc3VibWVudV9wYWdlKCAkbWVudV9zbHV
nLCBzZWxmOjpzZXR0aW5ncyggJ25hbWUnICkgLiAnICZsc2FxdW87ICcgLiAkcGFnZV90aXRsZV9hbHQsIC
RwYWdlX3RpdGxlX2FsdCwgJHBhZ2VbJ2NhcGFiaWxpdHknXSwgJG1lbnVfc2x1ZywgYXJyYXkoICZzZWxmO
jokX3BhZ2VzLCAkcGFnZVsnc2x1ZyddICkgKTsgLy8gQWxsb3dzIG5hbWluZyBvZiBmaXJzdCBzdWJtZW51
IGl0ZW0gZGlmZmVyZW50bHkgZnJvbSB0aGUgcGFyZW50LiBFbHNlIGl0cyBhdXRvIGNyZWF0ZWQgd2l0aCB
zYW1lIG5hbWUuCgkJCX0gZWxzZSB7IC8vIFN1Yi1tZW51LgoJCQkJYWRkX3N1Ym1lbnVfcGFnZSggJHBhcm
VudF9zbHVnLCBzZWxmOjpzZXR0aW5ncyggJ25hbWUnICkgLiAnICZsc2FxdW87ICcgLiAkcGFnZV90aXRsZ
SwgJHBhZ2VfdGl0bGUsICRwYWdlWydjYXBhYmlsaXR5J10sICRtZW51X3NsdWcsIGFycmF5KCAmc2VsZjo6
JF9wYWdlcywgJHBhZ2VbJ3NsdWcnXSApICk7CgkJCX0KCQl9Cgl9IC8vIEVuZCByZWdpc3Rlcl9hZG1pbl9
tZW51KCkuCgoJLyoqCgkgKiBSZWdpc3RlcnMgYSBXb3JkUHJlc3MgYWN0aW9uLiBBY3Rpb24gb2YgdGhlIG
5hbWUgJHRhZyB3aWxsIGNhbGwgdGhlIG1ldGhvZCBpbiAvY29udHJvbGxlcnMvYWN0aW9ucy5waHAgd2l0a
CB0aGUgbWF0Y2hpbmcgbmFtZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nL2FycmF5ICR0YWcgICAgICAgICAg
ICBUYWcgLyBzbHVnIGZvciB0aGUgYWN0aW9uLiBJZiBhbiBhcnJheSB0aGUgZmlyc3QgaXRlbSBpcyB0aGU
gdGFnLCB0aGUgc2Vjb25kIGlzIGFuIG9wdGlvbmFsIGN1c3RvbSBjYWxsYmFjayBtZXRob2QgbmFtZS4KCS
AqIEBwYXJhbSBpbnQgICAgICAgICAgJHByaW9yaXR5ICAgICAgIEludGVnZXIgcHJpb3JpdHkgbnVtYmVyI
GZvciB0aGUgYWN0aW9uLgoJICogQHBhcmFtIGludCAgICAgICAgICAkYWNjZXB0ZWRfYXJncyAgTnVtYmVy
IG9mIGFyZ3VtZW50cyB0aGlzIGFjdGlvbiBtYXkgYWNjZXB0IGluIGl0cyBtZXRob2QuCgkgKi8KCXB1Ymx
pYyBzdGF0aWMgZnVuY3Rpb24gYWRkX2FjdGlvbiggJHRhZywgJHByaW9yaXR5ID0gMTAsICRhY2NlcHRlZF
9hcmdzID0gMSApIHsKCQlpZiAoICEgaXNfb2JqZWN0KCBzZWxmOjokX2FjdGlvbnMgKSApIHsKCQkJc2VsZ
jo6X2luaXRfY29yZV9jb250cm9sbGVyKCAnYWN0aW9ucycgKTsgfQoJCWlmICggaXNfYXJyYXkoICR0YWcg
KSApIHsgLy8gSWYgYXJyYXkgdGhlbiBmaXJzdCBwYXJhbSBpcyB0YWcsIHNlY29uZCBwYXJhbSBpcyBjdXN
0b20gY2FsbGJhY2sgbWV0aG9kIG5hbWUuCgkJCSRjYWxsYmFja19tZXRob2QgPSAkdGFnWzFdOwoJCQkkdG
FnICAgICAgICAgICAgID0gJHRhZ1swXTsKCQl9IGVsc2UgeyAvLyBObyBjdXN0b20gbWV0aG9kIG5hbWUgc
28gdGFnIGFuZCBjYWxsYmFjayBtZXRob2QgbmFtZSBhcmUgdGhlIHNhbWUuCgkJCSRjYWxsYmFja19tZXRo
b2QgPSAkdGFnOwoJCQlpZiAoIHN0cnBvcyggJHRhZywgJy4nICkgIT09IGZhbHNlICkgewoJCQkJZWNobyA
ne1dhcm5pbmc6IFlvdXIgdGFnIGNvbnRhaW5zIGRpc2FsbG93ZWQgY2hhcmFjdGVycy4gVGFnIG5hbWVzIG
FyZSBlcXVhbCB0byB0aGUgUEhQIG1ldGhvZCB0aGF0IGlzIGNhbGxlZCBiYWNrIHNvIHRoZXkgbXVzdCBjb
25mb3JtIHRvIFBIUCBtZXRob2QgbmFtZSBzdGFuZGFyZHMuIEZvciBjdXN0b20gY2FsbGJhY2sgbWV0aG9k
IG5hbWVzIHVzZSBhbiBhcnJheSBmb3IgdGhlIHRhZyBwYXJhbWV0ZXIgaW4gdGhlIGZvcm06IGFycmF5KCB
cJ3RhZ1wnLCBcJ2NhbGxiYWNrX25hbWVcJyApLn0nOwoJCQl9CgkJfQoJCWFkZF9hY3Rpb24oICR0YWcsIG
FycmF5KCAmc2VsZjo6JF9hY3Rpb25zLCAkY2FsbGJhY2tfbWV0aG9kICksICRwcmlvcml0eSwgJGFjY2Vwd
GVkX2FyZ3MgKTsKCX0gLy8gRW5kIGFkZF9hY3Rpb24oKS4KCgkvKioKCSAqIFJlZ2lzdGVycyBhIFdvcmRQ
cmVzcyBhamF4IGFjdGlvbi4gQWpheCBhY3Rpb24gb2YgdGhlIG5hbWUgJHRhZyB3aWxsIGNhbGwgdGhlIG1
ldGhvZCBpbiAvY29udHJvbGxlcnMvYWpheC5waHAgd2l0aCB0aGUgbWF0Y2hpbmcgbmFtZS4KCSAqCgkgKi
BAcGFyYW0gc3RyaW5nL2FycmF5ICR0YWcgIFRhZyAvIHNsdWcgZm9yIHRoZSBhY3Rpb24uIElmIGFuIGFyc
mF5IHRoZSBmaXJzdCBpdGVtIGlzIHRoZSB0YWcsIHRoZSBzZWNvbmQgaXMgYW4gb3B0aW9uYWwgY3VzdG9t
IGNhbGxiYWNrIG1ldGhvZCBuYW1lLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFkZF9hamF4KCA
kdGFnICkgewoJCWlmICggISBpc19vYmplY3QoIHNlbGY6OiRfYWpheCApICkgewoJCQlzZWxmOjpfaW5pdF
9jb3JlX2NvbnRyb2xsZXIoICdhamF4JyApOyB9CgkJaWYgKCBpc19hcnJheSggJHRhZyApICkgeyAvLyBJZ
iBhcnJheSB0aGVuIGZpcnN0IHBhcmFtIGlzIHRhZywgc2Vjb25kIHBhcmFtIGlzIGN1c3RvbSBjYWxsYmFj
ayBtZXRob2QgbmFtZS4KCQkJJGNhbGxiYWNrX21ldGhvZCA9ICR0YWdbMV07CgkJCSR0YWcgICAgICAgICA
gICAgPSAkdGFnWzBdOwoJCX0gZWxzZSB7IC8vIE5vIGN1c3RvbSBtZXRob2QgbmFtZSBzbyB0YWcgYW5kIG
NhbGxiYWNrIG1ldGhvZCBuYW1lIGFyZSB0aGUgc2FtZS4KCQkJJGNhbGxiYWNrX21ldGhvZCA9ICR0YWc7C
gkJCWlmICggc3RycG9zKCAkdGFnLCAnLicgKSAhPT0gZmFsc2UgKSB7CgkJCQllY2hvICd7V2FybmluZzog
WW91ciB0YWcgY29udGFpbnMgZGlzYWxsb3dlZCBjaGFyYWN0ZXJzLiBUYWcgbmFtZXMgYXJlIGVxdWFsIHR
vIHRoZSBQSFAgbWV0aG9kIHRoYXQgaXMgY2FsbGVkIGJhY2sgc28gdGhleSBtdXN0IGNvbmZvcm0gdG8gUE
hQIG1ldGhvZCBuYW1lIHN0YW5kYXJkcy4gRm9yIGN1c3RvbSBjYWxsYmFjayBtZXRob2QgbmFtZXMgdXNlI
GFuIGFycmF5IGZvciB0aGUgdGFnIHBhcmFtZXRlciBpbiB0aGUgZm9ybTogYXJyYXkoIFwndGFnXCcsIFwn
Y2FsbGJhY2tfbmFtZVwnICkufSc7CgkJCX0KCQl9CgkJYWRkX2FjdGlvbiggJ3dwX2FqYXhfcGJfJyAuIHN
lbGY6OnNldHRpbmdzKCAnc2x1ZycgKSAuICdfJyAuICR0YWcsIGFycmF5KCAmc2VsZjo6JF9hamF4LCAkY2
FsbGJhY2tfbWV0aG9kICkgKTsKCX0gLy8gRW5kIGFkZF9hamF4KCkuCgoJLyoqCgkgKiBSZWdpc3RlcnMgY
SBXb3JkUHJlc3MgY3JvbiBjYWxsYmFjayAodGVjaG5pY2FsbHkgYW4gYWN0aW9uKS4gQ3JvbiBhY3Rpb24g
b2YgdGhlIG5hbWUgJHRhZyB3aWxsIGNhbGwgdGhlIG1ldGhvZCBpbiAvY29udHJvbGxlcnMvY3Jvbi5waHA
gd2l0aCB0aGUgbWF0Y2hpbmcgbmFtZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nL2FycmF5ICR0YWcgICAgIC
AgICAgICAgICAgVGFnIC8gc2x1ZyBmb3IgdGhlIGNyb24gYWN0aW9uLiBJZiBhbiBhcnJheSB0aGUgZmlyc
3QgaXRlbSBpcyB0aGUgdGFnLCB0aGUgc2Vjb25kIGlzIGFuIG9wdGlvbmFsIGN1c3RvbSBjYWxsYmFjayBt
ZXRob2QgbmFtZS4KCSAqIEBwYXJhbSBpbnQgICAgICAgICAgJHByaW9yaXR5ICAgICAgICAgICBJbnRlZ2V
yIHByaW9yaXR5IG51bWJlciBmb3IgdGhlIGNyb24gYWN0aW9uLgoJICogQHBhcmFtIGludCAgICAgICAgIC
AkYWNjZXB0ZWRfYXJnc19udW0gIE51bWJlciBvZiBhcmd1bWVudHMgdGhpcyBhY3Rpb24gbWF5IGFjY2Vwd
CBpbiBpdHMgbWV0aG9kLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGFkZF9jcm9uKCAkdGFnLCAk
cHJpb3JpdHkgPSAxMCwgJGFjY2VwdGVkX2FyZ3NfbnVtID0gMSApIHsKCQlpZiAoICEgaXNfb2JqZWN0KCB
zZWxmOjokX2Nyb24gKSApIHsKCQkJc2VsZjo6X2luaXRfY29yZV9jb250cm9sbGVyKCAnY3JvbicgKTsgfQ
oJCWlmICggaXNfYXJyYXkoICR0YWcgKSApIHsgLy8gSWYgYXJyYXkgdGhlbiBmaXJzdCBwYXJhbSBpcyB0Y
WcsIHNlY29uZCBwYXJhbSBpcyBjdXN0b20gY2FsbGJhY2sgbWV0aG9kIG5hbWUuCgkJCSRjYWxsYmFja19t
ZXRob2QgPSAkdGFnWzFdOwoJCQkkdGFnICAgICAgICAgICAgID0gJHRhZ1swXTsKCQl9IGVsc2UgeyAvLyB
ObyBjdXN0b20gbWV0aG9kIG5hbWUgc28gdGFnIGFuZCBjYWxsYmFjayBtZXRob2QgbmFtZSBhcmUgdGhlIH
NhbWUuCgkJCSRjYWxsYmFja19tZXRob2QgPSAkdGFnOwoJCQlpZiAoIHN0cnBvcyggJHRhZywgJy4nICkgI
T09IGZhbHNlICkgewoJCQkJZWNobyAne1dhcm5pbmc6IFlvdXIgdGFnIGNvbnRhaW5zIGRpc2FsbG93ZWQg
Y2hhcmFjdGVycy4gVGFnIG5hbWVzIGFyZSBlcXVhbCB0byB0aGUgUEhQIG1ldGhvZCB0aGF0IGlzIGNhbGx
lZCBiYWNrIHNvIHRoZXkgbXVzdCBjb25mb3JtIHRvIFBIUCBtZXRob2QgbmFtZSBzdGFuZGFyZHMuIEZvci
BjdXN0b20gY2FsbGJhY2sgbWV0aG9kIG5hbWVzIHVzZSBhbiBhcnJheSBmb3IgdGhlIHRhZyBwYXJhbWV0Z
XIgaW4gdGhlIGZvcm06IGFycmF5KCBcJ3RhZ1wnLCBcJ2NhbGxiYWNrX25hbWVcJyApLn0nOwoJCQl9CgkJ
fQoJCWFkZF9hY3Rpb24oIHNlbGY6OnNldHRpbmdzKCAnc2x1ZycgKSAuICdfJyAuICR0YWcsIGFycmF5KCA
mc2VsZjo6JF9jcm9uLCAkY2FsbGJhY2tfbWV0aG9kICksICRwcmlvcml0eSwgJGFjY2VwdGVkX2FyZ3Nfbn
VtICk7Cgl9IC8vIEVuZCBhZGRfY3JvbigpLgoKCS8qKgoJICogUmVnaXN0ZXJzIGEgV29yZFByZXNzIGFjd
Glvbi4gQWN0aW9uIG9mIHRoZSBuYW1lICR0YWcgd2lsbCBjYWxsIHRoZSBtZXRob2QgaW4gL2NvbnRyb2xs
ZXJzL2Rhc2hib2FyZC5waHAgd2l0aCB0aGUgbWF0Y2hpbmcgbmFtZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5
nL2FycmF5ICR0YWcgICAgICAgICBUYWcgLyBzbHVnIGZvciB0aGUgYWN0aW9uLgoJICogQHBhcmFtIHN0cm
luZyAgICAgICAkdGl0bGUgICAgICAgRGFzaGJvYXJkIHdpZGdldCB0aXRsZS4KCSAqIEBwYXJhbSBzdHJpb
mcgICAgICAgJGNhcGFiaWxpdHkgIFJlcXVpcmVkIGNhcGFiaWxpdHkgdG8gZGlzcGxheS4gQWxzbyBhY2Nl
cHRzIGBnb2Rtb2RlYCB0byBvbmx5IGFsbG93IHN1cGVyYWRtaW5zIGluIG11bHRpc2l0ZSBhbmQgYWRtaW5
zIGluIHN0YW5kYWxvbmUuCgkgKiBAcGFyYW0gYm9vbCAgICAgICAgICRmb3JjZV90b3AgICBOdW1iZXIgb2
YgYXJndW1lbnRzIHRoaXMgYWN0aW9uIG1heSBhY2NlcHQgaW4gaXRzIG1ldGhvZC4KCSAqLwoJcHVibGljI
HN0YXRpYyBmdW5jdGlvbiBhZGRfZGFzaGJvYXJkX3dpZGdldCggJHRhZywgJHRpdGxlLCAkY2FwYWJpbGl0
eSwgJGZvcmNlX3RvcCA9IGZhbHNlICkgewoJCWlmICggISBpc19vYmplY3QoIHNlbGY6OiRfZGFzaGJvYXJ
kICkgKSB7CgkJCXNlbGY6OiRfZGFzaGJvYXJkX3dpZGdldHMgPSBhcnJheSgpOyAvLyBJbml0IHZhcmlhYm
xlLgoKCQkJc2VsZjo6X2luaXRfY29yZV9jb250cm9sbGVyKCAnZGFzaGJvYXJkJyApOwoKCQkJaWYgKCBpc
19uZXR3b3JrX2FkbWluKCkgKSB7IC8vIE5ldHdvcmsgYWRtaW4uCgkJCQlhZGRfYWN0aW9uKCAnd3BfbmV0
d29ya19kYXNoYm9hcmRfc2V0dXAnLCBhcnJheSggJnNlbGY6OiRfZGFzaGJvYXJkLCAncmVnaXN0ZXJfd2l
kZ2V0cycgKSApOwoJCQl9IGVsc2UgeyAvLyBOb3JtYWwgYWRtaW4uCgkJCQlhZGRfYWN0aW9uKCAnd3BfZG
FzaGJvYXJkX3NldHVwJywgYXJyYXkoICZzZWxmOjokX2Rhc2hib2FyZCwgJ3JlZ2lzdGVyX3dpZGdldHMnI
CkgKTsKCQkJfQoJCX0KCQlzZWxmOjokX2Rhc2hib2FyZF93aWRnZXRzW10gPSBhcnJheSgKCQkJJ3RhZycg
ICAgICAgID0+ICR0YWcsCgkJCSd0aXRsZScgICAgICA9PiAkdGl0bGUsCgkJCSdjYXBhYmlsaXR5JyA9PiA
kY2FwYWJpbGl0eSwKCQkJJ2ZvcmNlX3RvcCcgID0+ICRmb3JjZV90b3AsCgkJKTsgLy8gUHVzaCBpbnRvIG
FycmF5IHRvIGJlIGxhdGVyIHJlZ2lzdGVyZWQgdmlhIGRhc2hib2FyZCBjb250cm9sbGVyJ3MgcmVnaXN0Z
XJfd2lkZ2V0cyBmdW5jdGlvbi4KCX0gLy8gRW5kIGFkZF9kYXNoYm9hcmRfd2lkZ2V0KCkuCgoJLyoqCgkg
KiBSZWdpc3RlcnMgYSBXb3JkUHJlc3MgZmlsdGVyLiBGaWx0ZXIgb2YgdGhlIG5hbWUgJHRhZyB3aWxsIGN
hbGwgdGhlIG1ldGhvZCBpbiAvY29udHJvbGxlcnMvZmlsdGVycy5waHAgd2l0aCB0aGUgbWF0Y2hpbmcgbm
FtZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nL2FycmF5ICR0YWcgICAgICAgICAgICBUYWcgLyBzbHVnIGZvc
iB0aGUgYWN0aW9uLiBJZiBhbiBhcnJheSB0aGUgZmlyc3QgaXRlbSBpcyB0aGUgdGFnLCB0aGUgc2Vjb25k
IGlzIGFuIG9wdGlvbmFsIGN1c3RvbSBjYWxsYmFjayBtZXRob2QgbmFtZS4KCSAqIEBwYXJhbSBpbnQgICA
gICAgICAgJHByaW9yaXR5ICAgICAgIEludGVnZXIgcHJpb3JpdHkgbnVtYmVyIGZvciB0aGUgZmlsdGVyLg
oJICogQHBhcmFtIGludCAgICAgICAgICAkYWNjZXB0ZWRfYXJncyAgTnVtYmVyIG9mIGFyZ3VtZW50cyB0a
GlzIGZpbHRlciBtYXkgYWNjZXB0IGluIGl0cyBt
ZXRob2QuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYWRkX2ZpbHRlciggJHRhZywgJHByaW9yaXR
5ID0gMTAsICRhY2NlcHRlZF9hcmdzID0gMSApIHsKCQlpZiAoICEgaXNfb2JqZWN0KCBzZWxmOjokX2ZpbH
RlcnMgKSApIHsKCQkJc2VsZjo6X2luaXRfY29yZV9jb250cm9sbGVyKCAnZmlsdGVycycgKTsgfQoJCWlmI
CggaXNfYXJyYXkoICR0YWcgKSApIHsgLy8gSWYgYXJyYXkgdGhlbiBmaXJzdCBwYXJhbSBpcyB0YWcsIHNl
Y29uZCBwYXJhbSBpcyBjdXN0b20gY2FsbGJhY2sgbWV0aG9kIG5hbWUuCgkJCSRjYWxsYmFja19tZXRob2Q
gPSAkdGFnWzFdOwoJCQkkdGFnICAgICAgICAgICAgID0gJHRhZ1swXTsKCQl9IGVsc2UgeyAvLyBObyBjdX
N0b20gbWV0aG9kIG5hbWUgc28gdGFnIGFuZCBjYWxsYmFjayBtZXRob2QgbmFtZSBhcmUgdGhlIHNhbWUuC
gkJCSRjYWxsYmFja19tZXRob2QgPSAkdGFnOwoJCQlpZiAoIHN0cnBvcyggJHRhZywgJy4nICkgIT09IGZh
bHNlICkgewoJCQkJZWNobyAne1dhcm5pbmc6IFlvdXIgdGFnIGNvbnRhaW5zIGRpc2FsbG93ZWQgY2hhcmF
jdGVycy4gVGFnIG5hbWVzIGFyZSBlcXVhbCB0byB0aGUgUEhQIG1ldGhvZCB0aGF0IGlzIGNhbGxlZCBiYW
NrIHNvIHRoZXkgbXVzdCBjb25mb3JtIHRvIFBIUCBtZXRob2QgbmFtZSBzdGFuZGFyZHMuIEZvciBjdXN0b
20gY2FsbGJhY2sgbWV0aG9kIG5hbWVzIHVzZSBhbiBhcnJheSBmb3IgdGhlIHRhZyBwYXJhbWV0ZXIgaW4g
dGhlIGZvcm06IGFycmF5KCBcJ3RhZ1wnLCBcJ2NhbGxiYWNrX25hbWVcJyApLn0nOwoJCQl9CgkJfQoJCWF
kZF9maWx0ZXIoICR0YWcsIGFycmF5KCAmc2VsZjo6JF9maWx0ZXJzLCAkY2FsbGJhY2tfbWV0aG9kICksIC
Rwcmlvcml0eSwgJGFjY2VwdGVkX2FyZ3MgKTsKCX0gLy8gRW5kIGFkZF9maWx0ZXIoKS4KCgkvKioKCSAqI
FJlZ2lzdGVycyBhIFdvcmRQcmVzcyBzaG9ydGNvZGUuIFNob3J0Y29kZSBvZiB0aGUgbmFtZSAkdGFnIHdp
bGwgY2FsbCB0aGUgbWV0aG9kIGluIC9jb250cm9sbGVycy9zaG9ydGNvZGVzLnBocCB3aXRoIHRoZSBtYXR
jaGluZyBuYW1lLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcvYXJyYXkgJHRhZyAgVGFnIC8gc2x1ZyBmb3IgdG
hlIHNob3J0Y29kZS4gSWYgYW4gYXJyYXkgdGhlIGZpcnN0IGl0ZW0gaXMgdGhlIHRhZywgdGhlIHNlY29uZ
CBpcyBhbiBvcHRpb25hbCBjdXN0b20gY2FsbGJhY2sgbWV0aG9kIG5hbWUuCgkgKi8KCXB1YmxpYyBzdGF0
aWMgZnVuY3Rpb24gYWRkX3Nob3J0Y29kZSggJHRhZyApIHsKCQlpZiAoICEgaXNfb2JqZWN0KCBzZWxmOjo
kX3Nob3J0Y29kZXMgKSApIHsKCQkJc2VsZjo6X2luaXRfY29yZV9jb250cm9sbGVyKCAnc2hvcnRjb2Rlcy
cgKTsgfQoJCWlmICggaXNfYXJyYXkoICR0YWcgKSApIHsgLy8gSWYgYXJyYXkgdGhlbiBmaXJzdCBwYXJhb
SBpcyB0YWcsIHNlY29uZCBwYXJhbSBpcyBjdXN0b20gY2FsbGJhY2sgbWV0aG9kIG5hbWUuCgkJCSRjYWxs
YmFja19tZXRob2QgPSAkdGFnWzFdOwoJCQkkdGFnICAgICAgICAgICAgID0gJHRhZ1swXTsKCQl9IGVsc2U
geyAvLyBObyBjdXN0b20gbWV0aG9kIG5hbWUgc28gdGFnIGFuZCBjYWxsYmFjayBtZXRob2QgbmFtZSBhcm
UgdGhlIHNhbWUuCgkJCSRjYWxsYmFja19tZXRob2QgPSAkdGFnOwoJCQlpZiAoIHN0cnBvcyggJHRhZywgJ
y4nICkgIT09IGZhbHNlICkgewoJCQkJZWNobyAne1dhcm5pbmc6IFlvdXIgdGFnIGNvbnRhaW5zIGRpc2Fs
bG93ZWQgY2hhcmFjdGVycy4gVGFnIG5hbWVzIGFyZSBlcXVhbCB0byB0aGUgUEhQIG1ldGhvZCB0aGF0IGl
zIGNhbGxlZCBiYWNrIHNvIHRoZXkgbXVzdCBjb25mb3JtIHRvIFBIUCBtZXRob2QgbmFtZSBzdGFuZGFyZH
MuIEZvciBjdXN0b20gY2FsbGJhY2sgbWV0aG9kIG5hbWVzIHVzZSBhbiBhcnJheSBmb3IgdGhlIHRhZyBwY
XJhbWV0ZXIgaW4gdGhlIGZvcm06IGFycmF5KCBcJ3RhZ1wnLCBcJ2NhbGxiYWNrX25hbWVcJyApLn0nOwoJ
CQl9CgkJfQoJCWFkZF9zaG9ydGNvZGUoICR0YWcsIGFycmF5KCAmc2VsZjo6JF9zaG9ydGNvZGVzLCAkY2F
sbGJhY2tfbWV0aG9kICkgKTsKCX0gLy8gRW5kIGFkZF9zaG9ydGNvZGUoKS4KCgkvKioKCSAqIFJlZ2lzdG
VycyB0aGUgVUkgY2xhc3MgaW50byB0aGUgcGx1Z2luYnVkZHkgZnJhbWV3b3JrIGZvciBwYWdlcy4gUmVna
XN0ZXJlZCBvbiBkZW1hbmQgYnkgcGFnZXMgY29udHJvbGxlci4KCSAqCgkgKiBAc2VlIHBhZ2VzIGNvbnRy
b2xsZXIKCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRjbGFzc19zbHVnICBTbHVnIG9mIGNsYXNzLgoJICovCgl
wdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluaXRfY2xhc3NfY29udHJvbGxlciggJGNsYXNzX3NsdWcgKSB7Cg
kJaWYgKCAhIGlzX29iamVjdCggc2VsZjo6JCRjbGFzc19zbHVnICkgKSB7CgkJCSRjbGFzc19maWxlID0gc
2VsZjo6cGx1Z2luX3BhdGgoKSAuICcvcGx1Z2luYnVkZHkvY2xhc3Nlcy8nIC4gJGNsYXNzX3NsdWcgLiAn
LnBocCc7CgkJCWlmICggZmlsZV9leGlzdHMoICRjbGFzc19maWxlICkgKSB7CgkJCQlyZXF1aXJlX29uY2U
gJGNsYXNzX2ZpbGU7CgkJCQkkY2xhc3NfbmFtZSAgICAgICAgPSAncGJfJyAuIHNlbGY6OnNldHRpbmdzKC
Anc2x1ZycgKSAuICdfJyAuICRjbGFzc19zbHVnOwoJCQkJc2VsZjo6JCRjbGFzc19zbHVnID0gbmV3ICRjb
GFzc19uYW1lKCk7CgkJCX0gZWxzZSB7CgkJCQllY2hvICd7RXJyb3I6IE1pc3NpbmcgY2xhc3MgY29udHJv
bGxlciBmaWxlIGAnIC4gJGNsYXNzX2ZpbGUgLiAnYC59JzsKCQkJfQoJCX0KCX0KCgkvKioKCSAqIEluaXR
pYWxpemUgYSBjb3JlIGNvbnRyb2xsZXIgY2xhc3MgKGV4OiBwYWdlcywgYWpheCwgZmlsdGVycywgZXRjKS
Bmb3IgcGx1Z2luYnVkZHkgZnJhbWV3b3JrIHVzYWdlLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgI
E5hbWUgb2YgdGhlIGNvbnRyb2xsZXIgdG8gcmVnaXN0ZXIuIFZhbGlkIGNvbnRyb2xsZXJzOiBhY3Rpb25z
LCBhamF4LCBjcm9uLCBkYXNoYm9hcmQsIGZpbHRlcnMsIHNob3J0Y29kZXMsIHBhZ2VzLgoJICovCglwcml
2YXRlIHN0YXRpYyBmdW5jdGlvbiBfaW5pdF9jb3JlX2NvbnRyb2xsZXIoICRuYW1lICkgewoJCWlmICggIS
Bpc19hcnJheSggc2VsZjo6JG9wdGlvbnMgKSApIHsKCQkJc2VsZjo6bG9hZCgpOwoJCX0gLy8gQXNzdW1lI
HdlIG5lZWQgcGx1Z2luIG9wdGlvbnMgbmVlZCBsb2FkZWQgaWYgY29udHJvbGxlcnMgYXJlIGxvYWRlZCBm
b3IgdGhpcyBzZXNzaW9uLgoKCQlyZXF1aXJlX29uY2Ugc2VsZjo6JF9wbHVnaW5fcGF0aCAuICcvY29udHJ
vbGxlcnMvJyAuICRuYW1lIC4gJy5waHAnOwoJCSRjbGFzc25hbWUgICAgICAgICAgICAgICAgID0gJ3BiX2
JhY2t1cGJ1ZGR5XycgLiAkbmFtZTsKCQkkaW50ZXJuYWxfY2xhc3NuYW1lICAgICAgICA9ICdfJyAuICRuY
W1lOwoJCXNlbGY6OiQkaW50ZXJuYWxfY2xhc3NuYW1lID0gbmV3ICRjbGFzc25hbWUoKTsKCX0gLy8gRW5k
IF9pbml0X2NvcmVfY29udHJvbGxlcigpLgoKCS8qKgoJICogRWNob3Mgb3IgcmV0dXJucyBhIFdvcmRQcmV
zcyBub25jZSBmb3IgdGhlIGZyYW1ld29yay4gSGFuZGxlcyBwcmVmaXhpbmcuIFVzZSB3aXRoIGZvcm1zIG
ZvciBzZWN1cml0eS4gVmVyaWZpZXMgdGhlIHVzZXIgY2FtZSBmcm9tIGEgV1AgZ2VuZXJhdGVkIHBhZ2UuC
gkgKgoJICogQHBhcmFtIGJvb2wgJGVjaG8gVHJ1ZTogZWNob3MgdGhlIG5vbmU7IGZhbHNlOiByZXR1cm5z
IG5vbmNlLgoJICoKCSAqIEByZXR1cm4gbnVsbC9zdHJpbmcgIHdwX25vbmNlX2ZpZWxkKCkKCSAqLwoJcHV
ibGljIHN0YXRpYyBmdW5jdGlvbiBub25jZSggJGVjaG8gPSB0cnVlICkgewoJCSRuYW1lICAgICAgICA9IC
dfd3Bub25jZSc7CgkJJG5vbmNlX2ZpZWxkID0gd3Bfbm9uY2VfZmllbGQoICdwYl8nIC4gc2VsZjo6c2V0d
GluZ3MoICduYW1lJyApIC4gJy1ub25jZScsICRuYW1lLCB0cnVlLCBmYWxzZSApOwoJCSRub25jZV9pZCAg
ICA9ICRuYW1lIC4gJ18nIC4gdW5pcWlkKCk7CgkJJG5vbmNlX2ZpZWxkID0gc3RyX3JlcGxhY2UoIGFycmF
5KCAnIGlkPSInIC4gJG5hbWUsICcgaWQ9XCcnIC4gJG5hbWUgKSwgYXJyYXkoICcgaWQ9IicgLiAkbm9uY2
VfaWQsICcgaWQ9XCcnIC4gJG5vbmNlX2lkICksICRub25jZV9maWVsZCApOwoJCWlmICggZmFsc2UgPT09I
CRlY2hvICkgewoJCQlyZXR1cm4gJG5vbmNlX2ZpZWxkOwoJCX0KCQllY2hvICRub25jZV9maWVsZDsKCX0g
Ly8gRW5kIG5vbmNlKCkuCgoJLyoqCgkgKiBXb3JkUHJlc3Mgbm9uY2UgZm9yIFVSTHMuIEhhbmRsZXMgcHJ
lZml4aW5nLiBVc2Ugd2l0aCBVUkxzIGZvciBzZWN1cml0eS4gVmVyaWZpZXMgdGhlIHVzZXIgY2FtZSBmcm
9tIGEgV1AgZ2VuZXJhdGVkIHBhZ2UuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkYmFyZV91cmwgIFVSTCB0b
yBub25jZS4KCSAqCgkgKiBAcmV0dXJuIHN0cmluZyB3cF9ub25jZV91cmwoKQoJICovCglwdWJsaWMgc3Rh
dGljIGZ1bmN0aW9uIG5vbmNlX3VybCggJGJhcmVfdXJsICkgewoJCXJldHVybiB3cF9ub25jZV91cmwoICR
iYXJlX3VybCwgJ3BiXycgLiBzZWxmOjpzZXR0aW5ncyggJ25hbWUnICkgLiAnLW5vbmNlJyApOwoJfQoKCS
8qKgoJICogVmVyaWZpZXMgdGhlIG5vbmNlIHN1Ym1pdHRlZCBpbiBmb3JtLgoJICogU2NyaXB0IGRpZSgpJ
3Mgb24gZmFpbHVyZQoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHZlcmlmeV9ub25jZSgpIHsKCQlj
aGVja19hZG1pbl9yZWZlcmVyKCAncGJfJyAuIHNlbGY6OnNldHRpbmdzKCAnbmFtZScgKSAuICctbm9uY2U
nICk7Cgl9IC8vIEVuZCB2ZXJpZnlfbm9uY2UoKS4KCgkvKioKCSAqIExvYWQgYSBKYXZhU2NyaXB0IGZpbG
UgaW50byB0aGUgcGFnZS4gSGFuZGxlcyBwcmVmaXhlZCwgZW5xdWV1aW5nLCBldGMuCgkgKgoJICogQHBhc
mFtIHN0cmluZyAkc2NyaXB0ICAgICAgIElmIGEgLmpzIGZpbGUgaXMgaW5jbHVkZWQgdGhlbiBhIGZpbGUg
aW4gdGhlIGpzIGRpcmVjdG9yeSBpcyBsb2FkZWQ7IGVsc2UgbG9hZHMgYSBidWlsdC1pbiBuYW1lZCBsaWJ
yYXJ5IHNjcmlwdC4KCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeDogbG9hZF9zY3JpcHQoIC
dzb3J0LmpzJyApIHdpbGwgbG9hZCAvd3AtY29udGVudC9wbHVnaW5zL215X3BsdWdpbi9qcy9zb3J0LmpzO
woJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRfc2NyaXB0KCAnanF1ZXJ5JyApIHdpbGwg
bG9hZCBpbnRlcm5hbCBqcXVlcnkgbGlicmFyeSBpbiBXb3JkUHJlc3MgaWYgaXQgZXhpc3RzLgoJICogQHB
hcmFtIGJvb2wgICAkY29yZV9zY3JpcHQgIElmIHRydWUgc2NyaXB0cyBhcmUgbG9hZGVkIGZyb20gL3BsdW
dpbmJ1ZGR5L2pzL1NDUklQVC5qcy4gRWxzZSBzY3JpcHRzIGxvYWRlZCBmcm9tIHBsdWdpbidzIGpzIGRpc
mVjdG9yeS4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkX3NjcmlwdCggJHNjcmlwdCwgJGNv
cmVfc2NyaXB0ID0gZmFsc2UgKSB7CgkJaWYgKCBzdHJzdHIoICRzY3JpcHQsICcuanMnICkgKSB7IC8vIEx
vYWRpbmcgYSBmaWxlIHNwZWNpZmljYWxseS4KCQkJaWYgKCB0cnVlID09PSAkY29yZV9zY3JpcHQgKSB7Cg
kJCQlpZiAoIHBiX2lzX3N0YW5kYWxvbmUoKSApIHsKCQkJCQkkdXJsX3BhdGggPSAnaW1wb3J0YnVkZHkvc
Gx1Z2luYnVkZHkvanMvJzsKCQkJCX0gZWxzZSB7CgkJCQkJJHVybF9wYXRoID0gc2VsZjo6JF9wbHVnaW5f
dXJsIC4gJy9wbHVnaW5idWRkeS9qcy8nOwoJCQkJfQoJCQkJJGxvY2FsX3BhdGggID0gc2VsZjo6JF9wbHV
naW5fcGF0aCAuICcvcGx1Z2luYnVkZHkvanMvJzsKCQkJCSRzY3JpcHRfbmFtZSA9ICdwYl8nIC4gc2VsZj
o6c2V0dGluZ3MoICdzbHVnJyApIC4gJ19jb3JlXycgLiAkc2NyaXB0OwoJCQl9IGVsc2UgewoJCQkJaWYgK
CBwYl9pc19zdGFuZGFsb25lKCkgKSB7CgkJCQkJJHVybF9wYXRoID0gJ2ltcG9ydGJ1ZGR5L2pzLyc7CgkJ
CQl9IGVsc2UgewoJCQkJCSR1cmxfcGF0aCA9IHNlbGY6OiRfcGx1Z2luX3VybCAuICcvanMvJzsKCQkJCX0
KCQkJCSRsb2NhbF9wYXRoICA9IHNlbGY6OiRfcGx1Z2luX3BhdGggLiAnL2pzLyc7CgkJCQkkc2NyaXB0X2
5hbWUgPSAncGJfJyAuIHNlbGY6OnNldHRpbmdzKCAnc2x1ZycgKSAuICdfJyAuICRzY3JpcHQ7CgkJCX0KC
gkJCWlmICggISB3cF9zY3JpcHRfaXMoICRzY3JpcHRfbmFtZSApICkgeyAvLyBPbmx5IGxvYWQgc2NyaXB0
IG9uY2UuCgkJCQlpZiAoIGZpbGVfZXhpc3RzKCAkbG9jYWxfcGF0aCAuICRzY3JpcHQgKSApIHsgLy8gTG9
hZCBvdXIgbG9jYWwgc2NyaXB0IGlmIGZpbGUgZXhpc3RzLgoJCQkJCXdwX2VucXVldWVfc2NyaXB0KCAkc2
NyaXB0X25hbWUsICR1cmxfcGF0aCAuICRzY3JpcHQsIGFycmF5KCksIHBiX2JhY2t1cGJ1ZGR5OjpzZXR0a
W5ncyggJ3ZlcnNpb24nICkgKTsKCQkJCQl3cF9wcmludF9zY3JpcHRzKCAkc2NyaXB0X25hbWUgKTsKCQkJ
CX0gZWxzZSB7CgkJCQkJZWNobyAne0Vycm9yOiBKYXZhc2NyaXB0IGZpbGUgd2FzIHNldCB0byBsb2FkIHR
oYXQgZGlkIG5vdCBleGlzdDogYCcgLiAkdXJsX3BhdGggLiAkc2NyaXB0IC4gJ2B9JzsKCQkJCX0KCQkJfQ
oJCX0gZWxzZSB7IC8vIE5vdCBhIHNwZWNpZmljIGZpbGUuCgkJCWlmICggISB3cF9zY3JpcHRfaXMoICRzY
3JpcHQsICdkb25lJyApICkgeyAvLyBPbmx5IFBSSU5UIHNjcmlwdCBvbmNlLiBDaGVja3MgdGhlIGRvbmUg
d3BzY3JpcHQgbGlzdCB0byBzZWUgaWYgaXQncyBiZWVuIHByaW50ZWQgeWV0IG9yIG5vdC4KCQkJCXdwX2V
ucXVldWVfc2NyaXB0KCAkc2NyaXB0ICk7CgkJCQl3cF9wcmludF9zY3JpcHRzKCAkc2NyaXB0ICk7CgkJCX
0KCQl9Cgl9IC8vIEVuZCBsb2FkX3NjcmlwdCgpLgoKCS8qKgoJICogTG9hZCBhIENTUyBmaWxlIGludG8gd
GhlIHBhZ2UuIEhhbmRsZXMgcHJlZml4ZWQsIGVucXVldWluZywgZXRjLgoJICoKCSAqIEBwYXJhbSBzdHJp
bmcgJHN0eWxlICAgICAgIElmIGEgLmNzcyBmaWxlIGlzIGluY2x1ZGVkIHRoZW4gYSBmaWxlIGluIHRoZSB
jc3MgZGlyZWN0b3J5IGlzIGxvYWRlZDsgZWxzZSBsb2FkcyBhIGJ1aWx0LWluIG5hbWVkIGxpYnJhcnkgc3
R5bGUuCgkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeDogbG9hZF9zdHlsZSggJ3NvcnQuY3NzJ
yApIHdpbGwgbG9hZCAvd3AtY29udGVudC9wbHVnaW5zL215X3BsdWdpbi9jc3Mvc29ydC5jc3M7CgkgKiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBsb2FkX3N0eWxlKCAnZGFzaGJvYXJkJyApIHdpbGwgbG9hZCB
pbnRlcm5hbCBkYXNoYm9hcmQgY3NzIGluIFdvcmRQcmVzcyBpZiBpdCBleGlzdHMuCgkgKiBAcGFyYW0gYm
9vbCAgICRjb3JlX3N0eWxlICBJZiB0cnVlIHN0eWxlcyBhcmUgbG9hZGVkIGZyb20gL3BsdWdpbmJ1ZGR5L
2Nzcy9TVFlMRS5jc3MuIEVsc2Ugc3R5bGVzIGxvYWRlZCBmcm9tIHBsdWdpbidzIGNzcyBkaXJlY3Rvcnku
CgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24
gbG9hZF9zdHlsZSggJHN0eWxlLCAkY29yZV9zdHlsZSA9IGZhbHNlICkgewoJCWlmICggc3Ryc3RyKCAkc3
R5bGUsICcuY3NzJyApICkgeyAvLyBMb2FkaW5nIGEgZmlsZSBzcGVjaWZpY2FsbHkuCgkJCWlmICggdHJ1Z
SA9PT0gJGNvcmVfc3R5bGUgKSB7CgkJCQlpZiAoIHBiX2lzX3N0YW5kYWxvbmUoKSApIHsKCQkJCQkkdXJs
X3BhdGggPSAnaW1wb3J0YnVkZHkvcGx1Z2luYnVkZHkvY3NzLyc7CgkJCQl9IGVsc2UgewoJCQkJCSR1cmx
fcGF0aCA9IHNlbGY6OiRfcGx1Z2luX3VybCAuICcvcGx1Z2luYnVkZHkvY3NzLyc7CgkJCQl9CgkJCQkkbG
9jYWxfcGF0aCA9IHNlbGY6OiRfcGx1Z2luX3BhdGggLiAnL3BsdWdpbmJ1ZGR5L2Nzcy8nOwoJCQkJJGNvc
mVfdHlwZSAgPSAnY29yZSc7CgkJCX0gZWxzZSB7CgkJCQlpZiAoIHBiX2lzX3N0YW5kYWxvbmUoKSApIHsK
CQkJCQkkdXJsX3BhdGggPSAnaW1wb3J0YnVkZHkvY3NzLyc7CgkJCQl9IGVsc2UgewoJCQkJCSR1cmxfcGF
0aCA9IHNlbGY6OiRfcGx1Z2luX3VybCAuICcvY3NzLyc7CgkJCQl9CgkJCQkkbG9jYWxfcGF0aCA9IHNlbG
Y6OiRfcGx1Z2luX3BhdGggLiAnL2Nzcy8nOwoJCQkJJGNvcmVfdHlwZSAgPSAnbm9uY29yZSc7CgkJCX0KC
QkJJHN0eWxlX25hbWUgPSAncGJfJyAuIHNlbGY6OnNldHRpbmdzKCAnc2x1ZycgKSAuICdfJyAuICRjb3Jl
X3R5cGUgLiAnXycgLiAkc3R5bGU7CgkJCWlmICggISB3cF9zdHlsZV9pcyggJHN0eWxlX25hbWUgKSApIHs
gLy8gT25seSBsb2FkIHN0eWxlIG9uY2UuCgkJCQlpZiAoIGZpbGVfZXhpc3RzKCAkbG9jYWxfcGF0aCAuIC
RzdHlsZSApICkgeyAvLyBMb2FkIG91ciBsb2NhbCBzdHlsZSBpZiBmaWxlIGV4aXN0cy4KCQkJCQl3cF9lb
nF1ZXVlX3N0eWxlKCAkc3R5bGVfbmFtZSwgJHVybF9wYXRoIC4gJHN0eWxlLCBhcnJheSgpLCBwYl9iYWNr
dXBidWRkeTo6c2V0dGluZ3MoICd2ZXJzaW9uJyApICk7CgkJCQkJd3BfcHJpbnRfc3R5bGVzKCAkc3R5bGV
fbmFtZSApOwoJCQkJfSBlbHNlIHsKCQkJCQllY2hvICd7RXJyb3I6IENTUyBmaWxlIHdhcyBzZXQgdG8gbG
9hZCB0aGF0IGRpZCBub3QgZXhpc3Q6IGAnIC4gJHVybF9wYXRoIC4gJHN0eWxlIC4gJ2B9JzsKCQkJCX0KC
QkJfQoJCX0gZWxzZSB7IC8vIE5vdCBhIHNwZWNpZmljIGZpbGUuCgkJCWlmICggISB3cF9zdHlsZV9pcygg
JHN0eWxlICkgKSB7IC8vIE9ubHkgbG9hZCBzdHlsZSBvbmNlLgoJCQkJd3BfZW5xdWV1ZV9zdHlsZSggJHN
0eWxlICk7CgkJCQl3cF9wcmludF9zdHlsZXMoICRzdHlsZSApOwoJCQl9CgkJfQoJfSAvLyBFbmQgbG9hZF
9zdHlsZSgpLgoKCS8qKgoJICogTG9hZHMgYSB2aWV3LiBUeXBpY2FsbHkgY2FsbGVkIGZyb20gd2l0aGluI
GEgY29udHJvbGxlci4gRGF0YSBwYXNzZWQgYXMgc2Vjb25kIGFyZ3VtZW50IHdpbGwgaGFzIGV4dHJhY3Qo
KSByYW4gb24gaXQgd2l0aGluIHRoZSB2aWV3IGZvciBlYXN5IHZhcmlhYmxlIGFjY2Vzcy4KCSAqCgkgKiB
AcGFyYW0gc3RyaW5nICR2aWV3X25hbWUgICAgICAgICBOYW1lIG9mIHZpZXcuIENvcnJlc3BvbmRzIHRvIH
RoZSB2aWV3IGZpbGVuYW1lOiAvdmlld3Mvdmlld19uYW1lLnBocC4KCSAqIEBwYXJhbSBhcnJheSAgJHBsd
WdpbmJ1ZGR5X2RhdGEgIEFycmF5IG9mIHZhcmlhYmxlcyB0byBiZSBleHRyYWN0ZWQgZm9yIHVzZSBieSB0
aGUgdmlldy4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkX3ZpZXcoICR2aWV3X25hbWUsICR
wbHVnaW5idWRkeV9kYXRhID0gYXJyYXkoKSApIHsKCQkvLyBWYXJpYWJsZSBuYW1lZCB0aGlzIHdheSBhcy
B0aGUgaW5jbHVkZWQgZmlsZSBpbmhlcml0cyB0aGlzIHZhcmlhYmxlIGFuZCB3ZSBkb24ndCB3YW50IGFuI
GFjY2lkZW50YWwgY29sbGlzaW9uLgoJCSRwbHVnaW5idWRkeV92aWV3X2ZpbGUgPSBzZWxmOjokX3BsdWdp
bl9wYXRoIC4gJy92aWV3cy8nIC4gJHZpZXdfbmFtZSAuICcucGhwJzsKCQlpZiAoIGZpbGVfZXhpc3RzKCA
kcGx1Z2luYnVkZHlfdmlld19maWxlICkgKSB7CgkJCXVuc2V0KCAkdmlld19uYW1lICk7CgkJCWlmICggaX
NfYXJyYXkoICRwbHVnaW5idWRkeV9kYXRhICkgKSB7CgkJCQlleHRyYWN0KCAkcGx1Z2luYnVkZHlfZGF0Y
SApOwoJCQl9IGVsc2UgewoJCQkJZWNobyAne1dhcm5pbmc6IERhdGEgcGFyYW1ldGVyIHBhc3NlZCB0byB2
aWV3IHdhcyBub3QgYW4gYXJyYXkufSc7CgkJCX0KCQkJcmVxdWlyZSAkcGx1Z2luYnVkZHlfdmlld19maWx
lOwoJCX0gZWxzZSB7CgkJCWVjaG8gJ3tJTlZBTElEIFZJRVc6IGAnIC4gJHZpZXdfbmFtZSAuICdgOyBmaW
xlIG5vdCBmb3VuZC59JzsKCQl9Cgl9IC8vIEVuZCBsb2FkX3ZpZXcoKS4KCgkvKioKCSAqIExvYWRzIGEgY
29udHJvbGxlci4gQ29udHJvbGxlcnMgbWF5IGxvYWQgY29udHJvbGxlcnMuIENvbnRyb2xsZXIgdXNlcyBy
ZXF1aXJlX29uY2UgdG8gYXZvaWQgcHJvYmxlbXMuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkY29udHJvbGx
lciAgTmFtZSBvZiBjb250cm9sbGVyLiBDb3JyZXNwb25kcyB0byB0aGUgY29udHJvbGxlciBmaWxlbmFtZT
ogL2NvbnRyb2xsZXJzL2NvbnRyb2xsZXJfbmFtZS5waHAuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb
24gbG9hZF9jb250cm9sbGVyKCAkY29udHJvbGxlciApIHsKCQkvLyBVc2luZyB0aGlzIG1ldGhvZCBzbyBs
b2FkX2NvbnRyb2xsZXIoKSBtYXkgYmUgdXNlZCBhbnl3aGVyZS4KCQlpZiAoIGZpbGVfZXhpc3RzKCBzZWx
mOjpwbHVnaW5fcGF0aCgpIC4gJy9jb250cm9sbGVycy8nIC4gJGNvbnRyb2xsZXIgLiAnLnBocCcgKSApIH
sKCQkJcmVxdWlyZV9vbmNlIHNlbGY6OnBsdWdpbl9wYXRoKCkgLiAnL2NvbnRyb2xsZXJzLycgLiAkY29ud
HJvbGxlciAuICcucGhwJzsKCQl9IGVsc2UgewoJCQllY2hvICd7RXJyb3I6IFVuYWJsZSB0byBsb2FkIHBh
Z2UgY29udHJvbGxlciBgJyAuICRjb250cm9sbGVyIC4gJ2A7IGZpbGUgbm90IGZvdW5kLn0nOwoJCX0KCX0
gLy8gRW5kIGxvYWRfY29udHJvbGxlcigpLgoKCS8qKgoJICogUmVnaXN0ZXJzIGEgd2lkZ2V0LiBXaWxsIH
JlZ2lzdGVyIHdpZGdldCBjbGFzcyBpbiAvY29udHJvbGxlcnMvd2lkZ2V0L3NsdWcucGhwLiBXaWRnZXQgY
2xhc3MgZXh0ZW5kIFdQX1dpZGdldHMuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc2x1ZyAgTmFtZSAvIHNs
dWcgZm9yIHdpZGdldC4gTXVzdCBtYXRjaCBmaWxlbmFtZSBpbiBjb250cm9sbGVyc1x3aWRnZXRzXCBkaXJ
lY3RvcnkuIENsYXNzIG5hbWUgaW4gdGhlIGZvcm1hdDogcGJfe1BMVUdJTlNMVUd9X3dpZGdldF97V0lER0
VUU0xVR30uCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gcmVnaXN0ZXJfd2lkZ2V0KCAkc2x1ZyApI
HsKCQlpZiAoIGZpbGVfZXhpc3RzKCBzZWxmOjpwbHVnaW5fcGF0aCgpIC4gJy9jb250cm9sbGVycy93aWRn
ZXRzLycgLiAkc2x1ZyAuICcucGhwJyApICkgewoJCQlyZXF1aXJlIHNlbGY6OnBsdWdpbl9wYXRoKCkgLiA
nL2NvbnRyb2xsZXJzL3dpZGdldHMvJyAuICRzbHVnIC4gJy5waHAnOwoJCQlhZGRfYWN0aW9uKCAnd2lkZ2
V0c19pbml0JywgYXJyYXkoICdwYl9iYWNrdXBidWRkeScsICdkb19yZWdpc3Rlcl93aWRnZXQnICkgKTsKC
Ql9IGVsc2UgewoJCQllY2hvICd7RXJyb3IgIzM0NDQ1NDg5MjI6IFVuYWJsZSB0byBsb2FkIHdpZGdldCBm
aWxlIGBjb250cm9sbGVycy93aWRnZXRzLycgLiAkc2x1ZyAuICcucGhwYC59JzsKCQl9Cgl9IC8vIEVuZCB
yZWdpc3Rlcl93aWRnZXQoKS4KCgkvKioKCSAqIEhhbmRsZSB0aGUgd2lkZ2V0IHJlZ2lzdHJhdGlvbi4KCS
AqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb19yZWdpc3Rlcl93aWRnZXQoKSB7CgkJcmVnaXN0ZXJfd
2lkZ2V0KCAncGJfJyAuIHNlbGY6OnNldHRpbmdzKCAnc2x1ZycgKSAuICdfd2lkZ2V0XycgLiAkc2x1ZyAp
OwoJfQoKCS8qKgoJICogUmVtb3ZlcyBhcnJheSB2YWx1ZXMgaW4gJHJlbW92ZSBmcm9tICRhcnJheS4KCSA
qCgkgKiBAcGFyYW0gYXJyYXkgJGFycmF5ICAgU291cmNlIGFycmF5LiBUaGlzIHdpbGwgaGF2ZSB2YWx1ZX
MgcmVtb3ZlZCBhbmQgYmUgcmV0dXJuZWQuCgkgKiBAcGFyYW0gYXJyYXkgJHJlbW92ZSAgQXJyYXkgb2Ygd
mFsdWVzIHRvIHNlYXJjaCBmb3IgaW4gJGFycmF5IGFuZCByZW1vdmUuCgkgKgoJICogQHJldHVybiBhcnJh
eSAgUmV0dXJucyBhcnJheSAkYXJyYXkgc3RyaXBwZWQgb2YgYWxsIHZhbHVlcyBmb3VuZCBpbiAkcmVtb3Z
lCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXJyYXlfcmVtb3ZlKCAkYXJyYXksICRyZW1vdmUgKS
B7CgkJaWYgKCAhIGlzX2FycmF5KCAkcmVtb3ZlICkgKSB7CgkJCSRyZW1vdmUgPSBhcnJheSggJHJlbW92Z
SApOwoJCX0KCQlyZXR1cm4gYXJyYXlfdmFsdWVzKCBhcnJheV9kaWZmKCAkYXJyYXksICRyZW1vdmUgKSAp
OwoJfSAvLyBFbmQgYXJyYXlfcmVtb3ZlKCkuCgoJLyoqCgkgKiBBdHRlbXB0IHRvIHN0cm9uZ2FybSBhIGZ
sdXNoIHRvIGFjdHVhbGx5IHdvcmsuCgkgKiBQcmV2ZW50IGZsdXNoaW5nIGJ5IGFkZGluZyB0aGlzIHRvIH
dwLWNvbmZpZy5waHA6CgkgKiAgICAgZGVmaW5lKCAnQkFDS1VQQlVERFlfTk9GTFVTSCcsIHRydWUgKTsKC
SAqIE9SCgkgKiAgICAgc2V0IGFkdmFuY2VkIG9wdGlvbiB0byBwcmV2ZW50IGZsdXNoCgkgKgoJICogQHBh
cmFtIGJvb2wgJGZvcmNlICBGb3JjZSBmbHVzaC4KCSAqCgkgKiBAcmV0dXJuIG51bGwKCSAqLwoJcHVibGl
jIHN0YXRpYyBmdW5jdGlvbiBmbHVzaCggJGZvcmNlID0gZmFsc2UgKSB7CgkJaWYgKCB0cnVlID09PSAkZm
9yY2UgKSB7CgkJCXNlbGY6OiRfaGFzX2ZsdXNoZWQgPSBmYWxzZTsKCQl9CgoJCWlmICggZGVmaW5lZCggJ
0JBQ0tVUEJVRERZX05PRkxVU0gnICkgJiYgKCBCQUNLVVBCVUREWV9OT0ZMVVNIID09PSB0cnVlICkgKSB7
IC8vIFNvbWUgc2VydmVycyBzZWVtIHRvIGRpZSBvbiBtdWx0aXBsZSBmbHVzaGVzIGluIHRoZSBzYW1lIHB
hZ2Vsb2FkLiBEZWZpbmUgdGhpcyB0byBwcmV2ZW50IGZsdXNoaW5nLgoJCQlyZXR1cm47CgkJfQoJCWlmIC
ggaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9ucyApICYmICggaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5O
jokb3B0aW9uc1sncHJldmVudF9mbHVzaCddICkgKSAmJiAoICcxJyA9PSBwYl9iYWNrdXBidWRkeTo6JG9w
dGlvbnNbJ3ByZXZlbnRfZmx1c2gnXSApICkgewoJCQlyZXR1cm47CgkJfQoJCWlmICggdHJ1ZSAhPT0gc2V
sZjo6JF9oYXNfZmx1c2hlZCApIHsgLy8gT25seSBydW4gdGhpcyBvbmNlLgoJCQlpZiAoIGZ1bmN0aW9uX2
V4aXN0cyggJ2FwYWNoZV9zZXRlbnYnICkgKSB7CgkJCQlAYXBhY2hlX3NldGVudiggJ25vLWd6aXAnLCAxI
Ck7IC8vIENvbXByZXNzaW9uIGNvdWxkIGNhdXNlIHNlcnZlciB0byB3YWl0IGZvciBwYWdlIHRvIGZpbmlz
aCBiZWZvcmUgcHJvY2VlZGluZy4gVHVybiBvZmYgY29tcHJlc3Npb24uCgkJCX0KCQkJQGluaV9zZXQoICd
6bGliLm91dHB1dF9jb21wcmVzc2lvbicsIDAgKTsgLy8gQ29tcHJlc3Npb24gY291bGQgY2F1c2Ugc2Vydm
VyIHRvIHdhaXQgZm9yIHBhZ2UgdG8gZmluaXNoIGJlZm9yZSBwcm9jZWVkaW5nLiBUdXJuIG9mZiBjb21wc
mVzc2lvbi4KCQkJc2VsZjo6JF9oYXNfZmx1c2hlZCA9IHRydWU7CgkJfQoJCWZsdXNoKCk7Cgl9IC8vIEVu
ZCBmbHVzaCgpLgoKCS8qKgoJICogUmVzZXQgcGx1Z2luIG9wdGlvbnMgdG8gZGVmYXVsdHMuIEdldHRpbmc
gc3RhcnRlZCBwYWdlIHVzZXMgdGhpcy4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUgb24gc3VjY2Vzcz
sgZmFsc2Ugb3RoZXJ3aXNlLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJlc2V0X2RlZmF1bHRzK
CkgewoJCWlmICggaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5OjokX3NldHRpbmdzWydkZWZhdWx0X29wdGlvbnMn
XSApICkgewoJCQlwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnMgPSBwYl9iYWNrdXBidWRkeTo6JF9zZXR0aW5
nc1snZGVmYXVsdF9vcHRpb25zJ107CgkJCXBiX2JhY2t1cGJ1ZGR5OjpzYXZlKCk7CgkJCXJldHVybiB0cn
VlOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9IC8vIEVuZCByZXNldF9kZWZhdWx0cygpLgoKCS8qKgoJICogT
G9ncyBjYWxsZXIgdG8gZXJyb3JfbG9nKCkgaWYgeGRlYnVnIGF2YWlsYWJsZS4KCSAqCgkgKiBAcmV0dXJu
IG51bGwKCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiB4ZGVidWcoKSB7CgkJaWYgKCAhIGZ1bmN0aW9
uX2V4aXN0cyggJ3hkZWJ1Z19jYWxsX2ZpbGUnICkgKSB7CgkJCXJldHVybjsKCQl9CgkJZXJyb3JfbG9nKC
AnQ2FsbGVkIEAgJyAuIHhkZWJ1Z19jYWxsX2ZpbGUoKSAuICc6JyAuIHhkZWJ1Z19jYWxsX2xpbmUoKSAuI
CcgZnJvbSAnIC4geGRlYnVnX2NhbGxfZnVuY3Rpb24oKSApOwoJfQoKfSAvLyBFbmQgY2xhc3MgcGx1Z2lu
YnVkZHkuCgovLyBMb2FkIHBsdWdpbmJ1ZGR5IGlzX3N0YW5kYWxvbmUgaGVscGVyIGZ1bmN0aW9ucy4KcmV
xdWlyZV9vbmNlICdoZWxwZXJzL2lzX3N0YW5kYWxvbmUucGhwJzsKCi8vIExvYWQgcGx1Z2luYnVkZHkgZG
F0YWJhc2UgaGVscGVyIGNsYXNzLgpyZXF1aXJlX29uY2UgJ2NsYXNzZXMvY2xhc3MtcGItYmFja3VwYnVkZ
HktZGItaGVscGVycy5waHAnOwoKLy8gRklYTUU6IElzb2xhdGUgY2xhc3MsIG1vdmUgdGhlIGZvbGxvd2lu
ZyBjb2RlIHNvbWV3aGVyZSBlbHNlLCBwb3NzaWJseSBhIGhlbHBlciBmdW5jdGlvbi4KaWYgKCBwYl9pc19
zdGFuZGFsb25lKCkgKSB7CglyZXF1aXJlX29uY2UgJ3N0YW5kYWxvbmVfcHJlbG9hZGVyLnBocCc7Cn0KCi
8vICoqKioqKioqKiogTG9hZCBjb3JlIGNsYXNzZXMgKioqKioqKioqKgpyZXF1aXJlX29uY2UgZGlybmFtZ
SggX19GSUxFX18gKSAuICcvY2xhc3Nlcy9jb3JlX2NvbnRyb2xsZXJzLnBocCc7CmlmICggaXNfYWRtaW4o
KSApIHsKCXJlcXVpcmVfb25jZSBkaXJuYW1lKCBfX0ZJTEVfXyApIC4gJy9jbGFzc2VzL2Zvcm0ucGhwJzs
KCXJlcXVpcmVfb25jZSBkaXJuYW1lKCBfX0ZJTEVfXyApIC4gJy9jbGFzc2VzL3NldHRpbmdzLnBocCc7Cn
0KCi8vICoqKioqKioqKiogSW5pdGlhbGl6ZSBQbHVnaW5CdWRkeSBmcmFtZXdvcmsgKioqKioqKioqKgppZ
iAoICEgaXNzZXQoICRwbHVnaW5idWRkeV9pbml0ICkgKSB7CgkkcGx1Z2luYnVkZHlfaW5pdCA9ICdpbml0
LnBocCc7IC8vIGRlZmF1bHQgaW5pdCBmaWxlLgp9CnBiX2JhY2t1cGJ1ZGR5Ojppbml0KCAkcGx1Z2luYnV
kZHlfc2V0dGluZ3MsICRwbHVnaW5idWRkeV9pbml0ICk7CnVuc2V0KCAkcGx1Z2luYnVkZHlfc2V0dGluZ3
MgKTsKdW5zZXQoICRwbHVnaW5idWRkeV9pbml0ICk7CgpwYl9iYWNrdXBidWRkeTo6bG9hZCgpOwoKLy8gK
ioqKioqKioqKiBMb2FkIGluaXRpYWxpemF0aW9uIGZpbGVzICoqKioqKioqKioKcmVxdWlyZV9vbmNlIGRp
cm5hbWUoIGRpcm5hbWUoIF9fRklMRV9fICkgKSAuICcvaW5pdF9nbG9iYWwucGhwJzsKaWYgKCBpc19hZG1
pbigpICkgewoJcmVxdWlyZV9vbmNlIGRpcm5hbW
UoIGRpcm5hbWUoIF9fRklMRV9fICkgKSAuICcvaW5pdF9hZG1pbi5waHAnOwp9CgppZiAoIHBiX2lzX3N0Y
W5kYWxvbmUoKSApIHsKCXBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX2NvbnRyb2xsZXIoICdwYWdlcy9kZWZhdWx0
JyApOwp9Cg==
###PACKDATA,FILE_END,/pluginbuddy/_pluginbuddy.php,importbuddy/pluginbuddy/_pluginb
uddy.php
###PACKDATA,FILE_START,/pluginbuddy/history.txt,importbuddy/pluginbuddy/history.txt
MS4wLjAgLSAyMDExLTEyLTEzIC0gRHVzdGluIEJvbHRvbgoJSW5pdGlhbCBwdXNoLgoxLjAuMSAtIDIwMTE
tMTItMTMgLSBEdXN0aW4gQm9sdG9uCglGaXhlZCBVSSB0aXRsZSgpIG5vdCBzaG93aW5nIGltYWdlLgoJRm
l4ZWQgbm9uLXNlcmllcyBHZXR0aW5nIFN0YXJ0ZWQgcGFnZSB1bmRlZmluZWQgaW5kZXguCglwYl9iYWNrd
XBidWRkeTo6c2V0dGluZ3MoKSByZXR1cm5zIGJsYW5rIGZvciBzZXJpZXMgdGFnIGlmIG5vdCBmb3VuZC4K
MS4wLjIgLSAyMDExLTAyLTEyIC0gRHVzdGluIEJvbHRvbgoJQWRkZWQgdXBkYXRlci4KMS4wLjMgLSAyMDE
yLTAxLTA0IC0gRHVzdGluIEJvbHRvbgoJRml4ZWQgdmFyaW91cyB3aWRnZXQgdGhpbmdzLgoJVXNpbmcgVU
kgZWxlbWVudHMgb24gcGFnZXMgdGhhdCBhcmVuJ3Qgb3VyIG93bi4KMS4wLjQgLSAyMDEyLTAxLTA1IC0gR
HVzdGluIEJvbHRvbgoJQWRkZWQgb3B0aW9uYWwgYWJpbGl0eSB0byBzcGVjaWZpYyB0aGUgZmlyc3QgcGFy
YW1ldGVyICgkdGFnKSBmb3IgYWRkX3Nob3J0Y3V0LCBhZGRfZmlsdGVyLCBhZGRfYWN0aW9uLCBldGMgdGh
hdCBhbGxvd3MgcGFzc2luZyBhIGN1c3RvbSBtZXRob2QgY2FsbGJhY2sgbmFtZSB0aGF0IGRpZmZlcnMgZn
JvbSB0aGUgdGFnLiBTb21lIGFjdGlvbnMgaGF2ZSBjaGFyYWN0ZXJzIGRpc2FsbG93ZWQgaW4gUEhQIG1ld
GhvZCBuYW1lcyBzbyB0aGV5IG5lZWQgdG8gZGlmZmVyLgoxLjAuNSAtIDIwMTItMDEtMDUgLSBEdXN0aW4g
Qm9sdG9uCglGaXhlZCBmb3JtIHZhbGlkYXRpb24gZm9yIGVtcHR5IGZvcm0gZWxlbWVudHMuCglGaXhlZCB
taXNzaW5nIHRvb2x0aXBzIGluIHNldHRpbmdzIGZvcm1zLgoxLjAuNiAtIDIwMTItMDEtMDUgLSBEdXN0aW
4gQm9sdG9uCglBZGRlZCBiZXR0ZXIgZXJyb3IgcmVwb3J0aW5nIG9uIGZvcm0gdmFsaWRhdGlvbiBmYWlsd
XJlLgoJTm93IGFsbG93aW5nIHBhcnRpYWwgZm9ybSBzYXZpbmcgb24gdmFsaWR0aW9uIGZhaWx1cmUuCglB
ZGRlZCByZWQgYm9yZGVyIGFyb3VuZCBmb3JtIGl0ZW1zIHRoYXQgZmFpbCB2YWxpZGF0aW9uIGZvciBlYXN
pZXIgcmVjb2duaXRpb24uCjEuMC43IC0gMjAxMi0wMS0wNiAtIER1c3RpbiBCb2x0b24KCUZvcm0gdmFsaW
RhdGlvbiBmdW5jdGlvbiBudW1iZXIgcnVsZSB3YXMgaW5wcm9wZXJseSBuYW1lZCBudW0uCjEuMC44IC0gM
jAxMi0wMS0xMyAtIER1c3RpbiBCb2x0b24KCUFkZGVkIGVycm9yIG1lc3NhZ2UgaWYgdXBkYXRlciBzZXR0
aW5ncyBwYXJhbWV0ZXIgbWlzc2luZy4KCUZpeGVkIHZlcnNpb24gbnVtYmVyLgoxLjAuOSAtIDIwMTItMDE
tMTMgLSBEdXN0aW4gQm9sdG9uCglGaXhlZCBwbHVnaW5idWRkeV9zZXR0aW5ncyBmb3JtIHNldHRpbmcgZm
9ybSBuYW1lIHN0YXRpY2FsbHkuCglDdXN0b20gcHJvY2Vzc2luZyBhZGRlZCBpbnRvIHBsdWdpbmJ1ZGR5X
3NldHRpbmdzIGNsYXNzIHZpYSBwcm9jZXNzKCk7IGp1c3Qgc2V0IHNhdmVwb2ludCBpbiBjb25zdHJ1Y3Rv
ciB0byBmYWxzZSB0byBhY3RpdmF0ZSB0aGlzIG1vZGUuCjEuMC4xMSAtIDIwMTItMDEtMTggLSBEdXN0aW4
gQm9sdG9uCglBZGRlZCBpbml0aWFsIHN0YXJ0aW5ncyBmb3IgbmV3IG1lZGlhIGxpYnJhcnkgc3lzdGVtLg
oJVHdlYWtlZCBkb3duc2l6ZXIgbG9hZGVyIHN5c3RlbS4KCVJlbmFtZWQgcGx1Z2luYnVkZHkgY2xhc3Mgd
G8gcGIgY2xhc3MuIEFsbCByZWZlcmVuY2VzIHRvIHBiX2JhY2t1cGJ1ZGR5Ojogc2hvdWxkIGNoYW5nZSB0
byBwYl9iYWNrdXBidWRkeTo6CjEuMC4xMiAtIDIwMTItMDEtMTggLSBEdXN0aW4gQm9sdG9uCQoJX2luaXR
fY29yZV9jb250cm9sbGVyKCkgY2xlYW51cC4KMS4wLjEzIC0gMjAxMi0wMS0xOSAtIER1c3RpbiBCb2x0b2
4JCglGaXhlZCBsYWNrIG9mIHJldHVybiBpbiBwYl9iYWNrdXBidWRkeTo6dGlwKCkgYW5kIHBiX2JhY2t1c
GJ1ZGR5Ojp2aWRlbygpLgoxLjAuMTQgLSAyMDEyLTAxLTE5IC0gRHVzdGluIEJvbHRvbgoJTW92ZWQgYWxs
IGZyYW1ld29yay1yZXF1aXJlZCBKUyBhbmQgQ1NTIGludG8gcGx1Z2luYnVkZHkgZGlyZWN0b3J5LgoxLjA
uMTUgLSAyMDEyLTAxLTI1IC0gRHVzdGluIEJvbHRvbgoJRml4ZWQgY29yZSBjb250cm9sbGVyIGZvciBkYX
NoYm9hcmQgd2lkZ2V0IGJlaW5nIGFibGUgdG8gYWNjZXNzIHByaXZhdGUgc3RhdGljIHZhci4KCUFkZGVkI
HBiX2JhY2t1cGJ1ZGR5OjphbnRpX2RpcmVjdG9yeV9icm93c2luZygpLgoJQWRkZWQgcGJfYmFja3VwYnVk
ZHk6Om1rZGlyKCkuCglBZGRlZCBwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCkuCglBZGRlZCBwYl9iYWNrdXB
idWRkeTo6Z2V0X3N0YXR1cygpLgoJQWRkZWQgcGJfYmFja3VwYnVkZHk6OmRlYnVnKCkuCjEuMC4xNiAtID
IwMTItMDEtMjYgLSBEdXN0aW4gQm9sdG9uCglBZGRlZCBwYl9iYWNrdXBidWRkeTo6JGZpbGVzeXN0ZW0gY
2xhc3MgY29udHJvbGxlciBmb3IgaW50ZXJmYWNpbmcgd2l0aCBmaWxlIHN5c3RlbS4KCUFkZGVkIHBiX2Jh
Y2t1cGJ1ZGR5OjokZm9ybWF0IGNsYXNzIGNvbnRyb2xsZXIgZm9yIGZvcm1hdHRpbmcgZGF0YSAvIHRleHQ
gaW4gaHVtYW4gcmVhZGFibGUgZm9ybWF0cy4KCWRvd25zaXplciwgdXBkYXRlciwgZmlsZXN5c3RlbSwgYW
5kIGZvcm1hdCAnbW9kdWxlcycgbm93IGNvbnRyb2xsZWQgdmlhIG1vZHVsZXMga2V5IGluIHRoZSAkc2V0d
GluZ3MgYXJyYXkuICBTZWUgbmV3IGluaXQucGhwLgoxLjAuMTkgLSAyMDEyLTAxLTMxIC0gRHVzdGluIEJv
bHRvbgoJRm9ybSBmaXguCglTZXR0aW5ncyBmaXguCglBZGRlZCBDU1Mgb3B0aW9ucyBmb3IgZ3JvdXAgbGl
zdCBpbiBVSSBjbGFzcy4KCUFkZGVkIHRpdGxlIHR5cGUgZm9yIGZvcm0vc2V0dGluZ3MgY2xhc3Nlcy4KCV
VwZGF0ZWQgYWRtaW4uY3NzIGZvciB0aXRsZSBzZXR0aW5ncyBmb3JtIHR5cGUuCjEuMC4yMCAtIDIwMTItM
DEtMDEgLSBEdXN0aW4gQm9sdG9uCglBZGRlZCBlcnJvciBjb2RlIGxvb2t1cCBmdW5jdGlvbiB0byBmaWxl
c3lzdGVtIGNsYXNzLiBGb3IgZXhpdCBjb2RlcyBmcm9tIGV4ZWMoKSBhbmQgc3VjaC4KCUZpeGVkIHN0YXR
1cygpIGJ1Z3Mgd2l0aCBuZXdsaW5lcywgYXJyYXlzIChjaGFuZ2VkIGRlbGltaXRlcikuCjEuMC4yMSAtID
IwMTItMDEtMDEgLSBEdXN0aW4gQm9sdG9uCglBZGRlZCB3eXNpd3lnIG9iamVjdCB5b3UgZm9ybSAmIHNld
HRpbmdzIHN5c3RlbS4KCVRvdWNodXAgdG8gZmlsZXN5c3RlbSBjbGFzcy4KCUFkZGVkIGhpZGRlbiBmb3Jt
IG9iamVjdC4KCVNldHRpbmcgdGhlIHRpdGxlIG9mIGFueSBmb3JtL3NldHRpbmdzIG9iamVjdCB0byAnJyB
3aWxsIGhpZGUgaXRzIGxlZnQgY29sdW1uIChjb2xsYXBzZXMgbGVmdCkuCglBZGRlZCB0aXRsZSBmb3JtIG
9iamVjdCB0eXBlIGZvciBmb3JtYXR0aW5nLgoxLjAuMjIgLSAyMDEyLTAxLTAzIC0gRHVzdGluIEJvbHRvb
goJQWRkZWQgcGI6OiRzdGFydF90aW1lIHRvIHVzZSB0byBjb21wYXJlIHBhc3NhZ2Ugb2YgdGltZS4KMS4w
LjIzIC0gMjAxMi0wMi0wOCAtIER1c3RpbiBCb2x0b24KCVVwZGF0ZWQgdXBkYXRlci4KMS4wLjI0IC0gMjA
xMi0wMi0wOCAtIER1c3RpbiBCb2x0b24KCUZpeGVkIGNoZWNrYm94ICJZRVMhIiBkZWJ1ZyBvdXRwdXQuCg
lGaXhlZCByYWRpbyBpbnB1dCBkZWZhdWx0IGNoZWNrZWQgc2VsZWN0aW9uIG5vdCBiZWluZyBhcHBsaWVkL
goxLjAuMjUgLSAyMDEyLTAyLTA5IC0gRHVzdGluIEJvbHRvbgoJQWRkZWQgb3JpZW50YXRpb24gb3B0aW9u
IHRvIHJhZGlvIGJ1dHRvbnMuICBQb3NzaWJsZSB2YWxzOiBob3Jpem9udGFsLCB2ZXJ0aWNhbAoxLjAuMjY
gLSAyMDEyLTAyLTA5IC0gRHVzdGluIEJvbHRvbgoJQWRkZWQgdGFiYmVkIGludGVyZmFjZXMgaW50byAkdW
kgY2xhc3MuCjEuMC4yNyAtIDIwMTItMDItMTAgLSBEdXN0aW4gQm9sdG9uCglGaXhlZCBHZXR0aW5nIFN0Y
XJ0ZWQgcGFnZSB3aXRoIG9sZGVyIHNlcmllcyBjb25mbGljdGluZy4KMS4wLjI4IC0gMjAxMi0wMi0xNyAt
IER1c3RpbiBCb2x0b24KCXN0cnN0cigpIHVzZWQgM3JkIHBhcmFtIHdoaWNoIHJlcXVpcmVkIFBIUCA+PSA
1LjMgaW4gZm9ybTo6dGVzdF9ydWxlKCkuCglDbGVhbmVkIHVwIGluaXQucGhwIGEgYml0LgoJQ29sb3IgcG
lja2VyOiBBZGRlZCBjb2xvciB0eXBlIHRvIGZvcm0vc2V0dGluZ3MuCgkKCUFkZGVkIHNldHRpbmdzIGNsY
XNzIG1ldGhvZDogc2V0X3ZhbHVlKCkgdG8gb3ZlcndyaXRlIHZhbHVlcy4KCQ==
###PACKDATA,FILE_END,/pluginbuddy/history.txt,importbuddy/pluginbuddy/history.txt
###PACKDATA,FILE_START,/pluginbuddy/index.php,importbuddy/pluginbuddy/index.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/pluginbuddy/index.php,importbuddy/pluginbuddy/index.php
###PACKDATA,FILE_START,/pluginbuddy/standalone_preloader.php,importbuddy/pluginbudd
y/standalone_preloader.php
PD9waHAKLyoqCiAqIElNUE9SVEFOVDogQ29weSBvZiB0aGlzIGZpbGUgKCBzdGFuZGFsb25lX3ByZWxvYWR
lci5waHAgKSBpbmNsdWRlZCBpbiBfcm9sbGJhY2tfdW5kby5waHAuCiAqCiAqIEBwYWNrYWdlIEJhY2t1cE
J1ZGR5CiAqLwoKJHBiX3N0eWxlcyAgPSBhcnJheSgpOwokcGJfc2NyaXB0cyA9IGFycmF5KCk7CiRwYl9hY
3Rpb25zID0gYXJyYXkoKTsKJHdwX3NjcmlwdHMgPSBhcnJheSgpOwoKLyoqCiAqIE5PVEU6IE1vZGlmaWVk
IGZyb20gV1AgdG8gcnRyaW0gb24gZGlybmFtZSgpIGR1ZSB0byBXaW5kb3dzIGlzc3Vlcy4KICoKICogQHJ
ldHVybiBzdHJpbmcgIFNpdGUgVVJMLgogKi8KZnVuY3Rpb24gc2l0ZV91cmwoKSB7CgkkcGFnZV91cmwgPS
AnaHR0cCc7CglpZiAoIGlzc2V0KCAkX1NFUlZFUlsnSFRUUFMnXSApICYmICggJF9TRVJWRVJbJ0hUVFBTJ
10gPT0gJ29uJyApICkgewoJCSRwYWdlX3VybCAuPSAncyc7fQoJJHBhZ2VfdXJsIC49ICc6Ly8nOwoJaWYg
KCAkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSAhPSAnODAnICkgewoJCSRwYWdlX3VybCAuPSAkX1NFUlZFUls
nU0VSVkVSX05BTUUnXSAuICc6JyAuICRfU0VSVkVSWydTRVJWRVJfUE9SVCddIC4gcnRyaW0oIGRpcm5hbW
UoICRfU0VSVkVSWydQSFBfU0VMRiddICksICcvXFwnICk7Cgl9IGVsc2UgewoJCSRwYWdlX3VybCAuPSAkX
1NFUlZFUlsnU0VSVkVSX05BTUUnXSAuIHJ0cmltKCBkaXJuYW1lKCAkX1NFUlZFUlsnUEhQX1NFTEYnXSAp
LCAnL1xcJyApOwoJfQoKCXJldHVybiAkcGFnZV91cmw7Cn0KCi8qKgogKiBOYXZpZ2F0ZXMgdGhyb3VnaCB
hbiBhcnJheSBhbmQgcmVtb3ZlcyBzbGFzaGVzIGZyb20gdGhlIHZhbHVlcy4KICoKICogSWYgYW4gYXJyYX
kgaXMgcGFzc2VkLCB0aGUgYXJyYXlfbWFwKCkgZnVuY3Rpb24gY2F1c2VzIGEgY2FsbGJhY2sgdG8gcGFzc
yB0aGUKICogdmFsdWUgYmFjayB0byB0aGUgZnVuY3Rpb24uIFRoZSBzbGFzaGVzIGZyb20gdGhpcyB2YWx1
ZSB3aWxsIHJlbW92ZWQuCiAqCiAqIEBzaW5jZSAyLjAuMAogKgogKiBAcGFyYW0gYXJyYXl8c3RyaW5nICR
2YWx1ZSBUaGUgYXJyYXkgb3Igc3RyaW5nIHRvIGJlIHN0cmlwcGVkLgogKiBAcmV0dXJuIGFycmF5fHN0cm
luZyBTdHJpcHBlZCBhcnJheSAob3Igc3RyaW5nIGluIHRoZSBjYWxsYmFjaykuCiAqLwpmdW5jdGlvbiBzd
HJpcHNsYXNoZXNfZGVlcCggJHZhbHVlICkgewoJaWYgKCBpc19hcnJheSggJHZhbHVlICkgKSB7CgkJJHZh
bHVlID0gYXJyYXlfbWFwKCAnc3RyaXBzbGFzaGVzX2RlZXAnLCAkdmFsdWUgKTsKCX0gZWxzZWlmICggaXN
fb2JqZWN0KCAkdmFsdWUgKSApIHsKCQkkdmFycyA9IGdldF9vYmplY3RfdmFycyggJHZhbHVlICk7CgkJZm
9yZWFjaCAoICR2YXJzIGFzICRrZXkgPT4gJGRhdGEgKSB7CgkJCSR2YWx1ZS0+eyRrZXl9ID0gc3RyaXBzb
GFzaGVzX2RlZXAoICRkYXRhICk7CgkJfQoJfSBlbHNlIHsKCQkkdmFsdWUgPSBzdHJpcHNsYXNoZXMoICR2
YWx1ZSApOwoJfQoKCXJldHVybiAkdmFsdWU7Cn0KCgovKioKICogQ2hlY2sgdmFsdWUgdG8gZmluZCBpZiB
pdCB3YXMgc2VyaWFsaXplZC4KICoKICogSWYgJGRhdGEgaXMgbm90IGFuIHN0cmluZywgdGhlbiByZXR1cm
5lZCB2YWx1ZSB3aWxsIGFsd2F5cyBiZSBmYWxzZS4KICogU2VyaWFsaXplZCBkYXRhIGlzIGFsd2F5cyBhI
HN0cmluZy4KICogQ291cnRlc3kgV29yZFByZXNzOyBzaW5jZSBXb3JkUHJlc3MgMi4wLjUuCiAqCiAqIEBw
YXJhbSBtaXhlZCAkZGF0YSBWYWx1ZSB0byBjaGVjayB0byBzZWUgaWYgd2FzIHNlcmlhbGl6ZWQuCiAqIEB
yZXR1cm4gYm9vbCBGYWxzZSBpZiBub3Qgc2VyaWFsaXplZCBhbmQgdHJ1ZSBpZiBpdCB3YXMuCiAqLwpmdW
5jdGlvbiBpc19zZXJpYWxpemVkKCAkZGF0YSApIHsKCS8vIElmIGl0IGlzbid0IGEgc3RyaW5nLCBpdCBpc
24ndCBzZXJpYWxpemVkLgoJaWYgKCAhIGlzX3N0cmluZyggJGRhdGEgKSApIHsKCQlyZXR1cm4gZmFsc2U7
Cgl9CgkkZGF0YSA9IHRyaW0oICRkYXRhICk7CglpZiAoICdOOycgPT0gJGRhdGEgKSB7CgkJcmV0dXJuIHR
ydWU7Cgl9CgkkbGVuZ3RoID0gc3RybGVuKCAkZGF0YSApOwoJaWYgKCAkbGVuZ3RoIDwgNCApIHsKCQlyZX
R1cm4gZmFsc2U7Cgl9CglpZiAoICc6JyAhPT0gJGRhdGFbMV0gKSB7CgkJcmV0dXJuIGZhbHNlOwoJfQoJJ
Gxhc3RjID0gJGRhdGFbICRsZW5ndGggLSAxIF07CglpZiAoICc7JyAhPT0gJGxhc3RjICYmICd9JyAhPT0g
JGxhc3RjICkgewoJCXJldHVybiBmYWxzZTsKCX0KCSR0b2tlbiA9ICRkYXRhWzBdOwoJc3dpdGNoICggJHR
va2VuICkgewoJCWNhc2UgJ3MnOgoJCQlpZiAoICciJyAhPT0gJGRhdGFbICRsZW5ndGggLSAyIF0gKSB7Cg
kJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQkJLy8gbm8gYnJlYWsuCgkJY2FzZSAnYSc6CgkJY2FzZSAnTyc6C
gkJCXJldHVybiAoYm9vbCkgcHJlZ19tYXRjaCggIi9eeyR0b2tlbn06WzAtOV0rOi9zIiwgJGRhdGEgKTsK
CQljYXNlICdiJzoKCQljYXNlICdpJzoKCQljYXNlICdkJzoKCQkJcmV0dXJuIChib29sKSBwcmVnX21hdGN
oKCAiL157JHRva2VufTpbMC05LkUtXSs7XCQvIiwgJGRhdGEgKTsKCX0KCXJldHVybiBmYWxzZTsKfSAvLy
BFbmQgaXNfc2VyaWFsaXplZCgpLgoKLyoqCiAqIFRyYW5zbGF0aW9uIEZ1bmN0aW9uLgogKgogKiBAcGFyY
W0gc3RyaW5nICR0ZXh0ICAgIFRleHQgdG8gdHJhbnNsYXRlLgogKiBAcGFyYW0gc3RyaW5nICRkb21haW4g
IFRleHQgZG9tYWluLgogKgogKiBAcmV0dXJuIHN0cmluZyAgVHJhbnNsYXRlZCBUZXh0LgogKi8KZnVuY3R
pb24gX18oICR0ZXh0LCAkZG9tYWluID0gJycgKSB7IC8vIEBjb2RpbmdTdGFuZGFyZHNJZ25vcmVMaW5lOi
BSZXBsYWNlbWVudCBmdW5jdGlvbiBkZWNsYXJhdGlvbi4KCXJldHVybiAkdGV4dDsKfQoKLyoqCiAqIEVzY
2FwZXMgaHRtbCBmcm9tIHRleHQuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHRleHQgICAgVGV4dCB0byBlc2Nh
cGUuCiAqIEBwYXJhbSBzdHJpbmcgJGRvbWFpbiAgVGV4dCBkb21haW4uCiAqCiAqIEByZXR1cm4gc3RyaW5
nICBFc2NhcGVkIHRyYW5zbGF0ZWQgVGV4dC4KICovCmZ1bmN0aW9uIGVzY19odG1sX18oICR0ZXh0LCAkZG
9tYWluID0gJycgKSB7IC8vIEBjb2RpbmdTdGFuZGFyZHNJZ25vcmVMaW5lOiBSZXBsYWNlbWVudCBmdW5jd
GlvbiBkZWNsYXJhdGlvbi4KCXJldHVybiBlc2NfaHRtbCggX18oICR0ZXh0LCAkZG9tYWluICkgKTsgLy8g
QGNvZGluZ1N0YW5kYXJkc0lnbm9yZUxpbmU6IEVzY2FwZSBIVE1MLCB0aGVuIHJlbGF5IF9fIGZ1bmN0aW9
uLgp9CgovKioKICogRXNjYXBlcyBodG1sIGZyb20gdmFyaWFibGUuIFBvb3IgbWFucyB2ZXJzaW9uLgogKg
ogKiBAcGFyYW0gc3RyaW5nICR0ZXh0ICAgIFRleHQgdG8gZXNjYXBlLgogKgogKiBAcmV0dXJuIHN0cmluZ
yAgVHJhbnNsYXRlZCBUZXh0LgogKi8KZnVuY3Rpb24gZXNjX2h0bWwoICR0ZXh0ICkgeyAvLyBAY29kaW5n
U3RhbmRhcmRzSWdub3JlTGluZTogUmVwbGFjZW1lbnQgZnVuY3Rpb24gZGVjbGFyYXRpb24uCglyZXR1cm4
gaHRtbGVudGl0aWVzKCAkdGV4dCApOyAvLyBAY29kaW5nU3RhbmRhcmRzSWdub3JlTGluZTogRXNjYXBlIE
hUTUwsIHRoZW4gcmVsYXkgX18gZnVuY3Rpb24uCn0KCi8qKgogKiBFY2hvIHRyYW5zbGF0ZWQgdGV4dC4KI
CoKICogQHBhcmFtIHN0cmluZyAkdGV4dCAgICBUZXh0IHRvIHRyYW5zbGF0ZS4KICogQHBhcmFtIHN0cmlu
ZyAkZG9tYWluICBUZXh0IGRvbWFpbi4KICovCmZ1bmN0aW9uIF9lKCAkdGV4dCwgJGRvbWFpbiA9ICcnICk
geyAvLyBAY29kaW5nU3RhbmRhcmRzSWdub3JlTGluZTogUmVwbGFjZW1lbnQgZnVuY3Rpb24gZGVjbGFyYX
Rpb24uCgllY2hvIF9fKCAkdGV4dCwgJGRvbWFpbiApOyAvLyBAY29kaW5nU3RhbmRhcmRzSWdub3JlTGluZ
TogUmVsYXkgX18gZnVuY3Rpb24uCn0KCi8qKgogKiBFc2NhcGVzIGh0bWwgYW5kIGVjaG8gdHJhbnNsYXRl
ZCB0ZXh0LgogKgogKiBAcGFyYW0gc3RyaW5nICR0ZXh0ICAgIFRleHQgdG8gdHJhbnNsYXRlLgogKiBAcGF
yYW0gc3RyaW5nICRkb21haW4gIFRleHQgZG9tYWluLgogKi8KZnVuY3Rpb24gZXNjX2h0bWxfZSggJHRleH
QsICRkb21haW4gPSAnJyApIHsgLy8gQGNvZGluZ1N0YW5kYXJkc0lnbm9yZUxpbmU6IFJlcGxhY2VtZW50I
GZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoJZWNobyBlc2NfaHRtbCggJHRleHQsICRkb21haW4gKTsgLy8gQGNv
ZGluZ1N0YW5kYXJkc0lnbm9yZUxpbmU6IFJlbGF5IGVzY19odG1sX18gZnVuY3Rpb24uCn0KCi8qKgogKiB
Fc2NhcGVzIEhUTUwgQXR0cmlidXRlCiAqCiAqIEBwYXJhbSBzdHJpbmcgJHRleHQgIFRleHQgdG8gZXNjYX
BlLgogKgogKiBAcmV0dXJuIHN0cmluZyAgRXNjYXBlZCB0ZXh0LgogKi8KZnVuY3Rpb24gZXNjX2F0dHIoI
CR0ZXh0ICkgewoJcmV0dXJuICR0ZXh0Owp9CgovKioKICogRXNjYXBlcyBIVE1MIEF0dHJpYnV0ZSBUZXh0
IFN0cmluZwogKgogKiBAcGFyYW0gc3RyaW5nICR0ZXh0ICAgIFRleHQgdG8gZXNjYXBlLgogKiBAcGFyYW0
gc3RyaW5nICRkb21haW4gIFRleHQgZG9tYWluLgogKi8KZnVuY3Rpb24gZXNjX2F0dHJfZSggJHRleHQsIC
Rkb21haW4gKSB7IC8vIEBjb2RpbmdTdGFuZGFyZHNJZ25vcmVMaW5lOiBSZXBsYWNlbWVudCBmdW5jdGlvb
iBkZWNsYXJhdGlvbi4KCWVjaG8gZXNjX2F0dHIoICR0ZXh0ICk7Cn0KCi8qKgogKiBDaGVjayBpZiBzdHls
ZSBleGlzdHMuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgIFN0eWxlIHRhZy4KICoKICogQHJldHVybiB
ib29sICBJZiBzdHlsZSB0YWcgZXhpc3RzLgogKi8KZnVuY3Rpb24gd3Bfc3R5bGVfaXMoICRuYW1lICkgew
oJZ2xvYmFsICRwYl9zdHlsZXM7CglyZXR1cm4gYXJyYXlfa2V5X2V4aXN0cyggJG5hbWUsICRwYl9zdHlsZ
XMgKTsKfQoKLyoqCiAqIFBvb3IgbWFuJ3MgdmVyc2lvbiBvZiBXUCBFbnF1ZXVlIFN0eWxlLgogKgogKiBA
cGFyYW0gc3RyaW5nICRuYW1lICBTdHlsZSB0YWcgbmFtZS4KICogQHBhcmFtIHN0cmluZyAkZmlsZSAgUGF
0aCB0byBmaWxlLgogKiBAcGFyYW0gYXJyYXkgICRkZXBzICBEZXBlbmRlbmNpZXMuCiAqIEBwYXJhbSBzdH
JpbmcgJHZlciAgIFZlcnNpb24uCiAqLwpmdW5jdGlvbiB3cF9lbnF1ZXVlX3N0eWxlKCAkbmFtZSwgJGZpb
GUsICRkZXBzID0gYXJyYXkoKSwgJHZlciA9ICcnICkgewoJZ2xvYmFsICRwYl9zdHlsZXM7CgkkcGJfc3R5
bGVzWyAkbmFtZSBdWydmaWxlJ10gICAgPSAkZmlsZTsKCSRwYl9zdHlsZXNbICRuYW1lIF1bJ3ZlcnNpb24
nXSA9ICR2ZXI7CgkkcGJfc3R5bGVzWyAkbmFtZSBdWydwcmludGVkJ10gPSBmYWxzZTsKfQovKioKICogUG
9vciBtYW4ncyBwcmludCBzdHlsZXMgZnVuY3Rpb24uCiAqCiAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgIFRhZ
yBuYW1lLgogKi8KZnVuY3Rpb24gd3BfcHJpbnRfc3R5bGVzKCAkbmFtZSApIHsKCWdsb2JhbCAkcGJfc3R5
bGVzOwoJaWYgKCBmYWxzZSA9PT0gJHBiX3N0eWxlc1sgJG5hbWUgXVsncHJpbnRlZCddICkgewoJCSRwYl9
zdHlsZXNbICRuYW1lIF1bJ3ByaW50ZWQnXSA9IHRydWU7CgoJCWVjaG8gJzxsaW5rIHJlbD0ic3R5bGVzaG
VldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9IicgLiAkcGJfc3R5bGVzWyAkbmFtZSBdWydmaWxlJ10gLiAnP
3Zlcj0nIC4gbWQ1KCAkcGJfc3R5bGVzWyAkbmFtZSBdWyd2ZXJzaW9uJ10gKSAuICciPic7Cgl9Cn0KCi8q
KgogKiBDaGVja3MgaWYgc2NyaXB0IGV4aXN0cy4KICoKICogQHBhcmFtIHN0cmluZyAkbmFtZSAgU2NyaXB
0IHRhZyBuYW1lLgogKgogKiBAcmV0dXJuIGJvb2wgIElmIHNjcmlwdCBleGlzdHMuCiAqLwpmdW5jdGlvbi
B3cF9zY3JpcHRfaXMoICRuYW1lICkgewoJZ2xvYmFsICRwYl9zY3JpcHRzOwoJcmV0dXJuIGFycmF5X2tle
V9leGlzdHMoICRuYW1lLCAkcGJfc2NyaXB0cyApOwp9CgovKioKICogUG9vciBtYW4ncyB2ZXJzaW9uIG9m
IFdQIEVucXVldWUgU2NyaXB0LgogKgogKiBAcGFyYW0gc3RyaW5nICRuYW1lICBTY3JpcHQgdGFnIG5hbWU
uCiAqIEBwYXJhbSBzdHJpbmcgJGZpbGUgIFBhdGggdG8gc2NyaXB0LgogKiBAcGFyYW0gYXJyYXkgICRkZX
BzICBEZXBlbmRlbmNpZXMuCiAqIEBwYXJhbSBzdHJpbmcgJHZlciAgIFZlcnNpb24uCiAqLwpmdW5jdGlvb
iB3cF9lbnF1ZXVlX3NjcmlwdCggJG5hbWUsICRmaWxlLCAkZGVwcyA9IGFycmF5KCksICR2ZXIgPSAnJyAp
IHsKCWdsb2JhbCAkcGJfc2NyaXB0czsKCSRwYl9zY3JpcHRzWyAkbmFtZSBdWydmaWxlJ10gICAgPSAkZml
sZTsKCSRwYl9zY3JpcHRzWyAkbmFtZSBdWyd2ZXJzaW9uJ10gPSAkdmVyOwoJJHBiX3NjcmlwdHNbICRuYW
1lIF1bJ3ByaW50ZWQnXSA9IGZhbHNlOwp9Ci8qKgogKiBQb29yIG1hbidzIFdQIFByaW50IFNjcmlwdHMKI
CoKICogQHBhcmFtIHN0cmluZyAkbmFtZSAgU2NyaXB0IHRhZyBuYW1lLgogKi8KZnVuY3Rpb24gd3BfcHJp
bnRfc2NyaXB0cyggJG5hbWUgKSB7CglnbG9iYWwgJHBiX3NjcmlwdHM7CglpZiAoICRwYl9zY3JpcHRzWyA
kbmFtZSBdWydwcmludGVkJ10gPT09IGZhbHNlICkgewoJCSRwYl9zY3JpcHRzWyAkbmFtZSBdWydwcmludG
VkJ10gPSB0cnVlOwoKCQllY2hvICc8c2NyaXB0IHNyYz0iJyAuICRwYl9zY3JpcHRzWyAkbmFtZSBdWydma
WxlJ10gLiAnP3Zlcj0nIC4gbWQ1KCAkcGJfc2NyaXB0c1sgJG5hbWUgXVsndmVyc2lvbiddICkgLiAnIiB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pic7Cgl9Cn0KCi8qKgogKiBQb29yIG1hbidzIGFkZF9
hY3Rpb24uCiAqCiAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgJHRhZyAgICAgICBBY3Rpb24gdG
FnLgogKiBAcGFyYW0gc3RyaW5nfGFycmF5fGZ1bmN0aW9uICRjYWxsYmFjayAgQ2FsbGJhY2sgZnVuY3Rpb
24gbmFtZSBvciBhcnJheS4KICovCmZ1bmN0aW9uIGFkZF9hY3Rpb24oICR0YWcsICRjYWxsYmFjayApIHsK
CWdsb2JhbCAkcGJfYWN0aW9uczsKCSRwYl9hY3Rpb25zWyAkdGFnIF1bJ2NhbGxiYWNrJ10gPSAkY2FsbGJ
hY2s7Cn0KCi8qKgogKiBDaGVjayBpZiBpcyBhZG1pbi4KICoKICogQHJldHVybiBib29sICBBbHdheXMgcm
V0dXJucyB0cnVlLgogKi8KZnVuY3Rpb24gaXNfYWRtaW4oKSB7CglyZXR1cm4gdHJ1ZTsKfQoKLyoqCiAqI
FBvb3IgbWFuJ3MgYXBwbHlfZmlsdGVycy4KICoKICogQHBhcmFtIHN0cmluZyAkZmlsdGVyICBGaWx0ZXIg
bmFtZS4KICogQHBhcmFtIG1peGVkICAkdmFsdWUgICBWYWx1ZSB0byBmaWx0ZXIuCiAqCiAqIEByZXR1cm4
gbWl4ZWQgIEZpbHRlcmVkICR2YWx1ZS4KICovCmZ1bmN0aW9uIGFwcGx5X2ZpbHRlcnMoICRmaWx0ZXIsIC
R2YWx1ZSApIHsKCXJldHVybiAkdmFsdWU7Cn0KCi8qKgogKiBQb29yIG1hbidzIHNhbml0aXplIHRpdGxlI
GZvciBJbXBvcnRCdWRkeQogKgogKiBAcGFyYW0gc3RyaW5nICR0aXRsZSAgVGl0bGUgc3RyaW5nIHRvIHNh
bml0aXplLgogKgogKiBAcmV0dXJuIHN0cmluZyA
gTG93ZXJjYXNlZCwgaHlwaGVuYXRlZCB0aXRsZS4KICovCmZ1bmN0aW9uIHNhbml0aXplX3RpdGxlKCAkdG
l0bGUgKSB7CgkkdGl0bGUgPSBzdHJpcF90YWdzKCAkdGl0bGUgKTsKCS8vIFByZXNlcnZlIGVzY2FwZWQgb
2N0ZXRzLgoJJHRpdGxlID0gcHJlZ19yZXBsYWNlKCAnfCUoW2EtZkEtRjAtOV1bYS1mQS1GMC05XSl8Jywg
Jy0tLSQxLS0tJywgJHRpdGxlICk7CgkvLyBSZW1vdmUgcGVyY2VudCBzaWducyB0aGF0IGFyZSBub3QgcGF
ydCBvZiBhbiBvY3RldC4KCSR0aXRsZSA9IHN0cl9yZXBsYWNlKCAnJScsICcnLCAkdGl0bGUgKTsKCS8vIF
Jlc3RvcmUgb2N0ZXRzLgoJJHRpdGxlID0gcHJlZ19yZXBsYWNlKCAnfC0tLShbYS1mQS1GMC05XVthLWZBL
UYwLTldKS0tLXwnLCAnJSQxJywgJHRpdGxlICk7CgoJJHRpdGxlID0gc3RydG9sb3dlciggJHRpdGxlICk7
CgoJJHRpdGxlID0gcHJlZ19yZXBsYWNlKCAnLyYuKz87LycsICcnLCAkdGl0bGUgKTsKCSR0aXRsZSA9IHN
0cl9yZXBsYWNlKCAnLicsICctJywgJHRpdGxlICk7CgoJJHRpdGxlID0gcHJlZ19yZXBsYWNlKCAnL1teJW
EtejAtOSBfLV0vJywgJycsICR0aXRsZSApOwoJJHRpdGxlID0gcHJlZ19yZXBsYWNlKCAnL1xzKy8nLCAnL
ScsICR0aXRsZSApOwoJJHRpdGxlID0gcHJlZ19yZXBsYWNlKCAnfC0rfCcsICctJywgJHRpdGxlICk7Cgkk
dGl0bGUgPSB0cmltKCAkdGl0bGUsICctJyApOwoKCXJldHVybiBhcHBseV9maWx0ZXJzKCAnc2FuaXRpemV
fdGl0bGUnLCAkdGl0bGUgKTsKfQoKLyoqCiAqIENsZWFudXAgSGVhZGVyIENvbW1lbnQuCiAqCiAqIEBwYX
JhbSBzdHJpbmcgJHN0ciAgSGVhZGVyIGNvbW1lbnQuCiAqCiAqIEByZXR1cm4gc3RyaW5nICBDbGVhbmVkI
HVwIGhlYWRlciBjb21tZW50LgogKi8KZnVuY3Rpb24gX2NsZWFudXBfaGVhZGVyX2NvbW1lbnQoICRzdHIg
KSB7CglyZXR1cm4gdHJpbSggcHJlZ19yZXBsYWNlKCAnL1xzKig/OlwqXC98XD8+KS4qLycsICcnLCAkc3R
yICkgKTsKfQoKLyoqCiAqIEdldCBQbHVnaW4gRGF0YSBmcm9tIHBsdWdpbiBoZWFkZXIuCiAqCiAqIEBwYX
JhbSBzdHJpbmcgJHBsdWdpbl9maWxlICBQYXRoIHRvIHBsdWdpbiBmaWxlLgogKiBAcGFyYW0gYm9vbCAgI
CRtYXJrdXAgICAgICAgSW5jbHVkZSBtYXJrdXAuCiAqIEBwYXJhbSBib29sICAgJHRyYW5zbGF0ZSAgICBU
cmFuc2xhdGUgb3V0cHV0LgogKgogKiBAcmV0dXJuIGFycmF5ICBQbHVnaW4gRGF0YSBhcnJheS4KICovCmZ
1bmN0aW9uIGdldF9wbHVnaW5fZGF0YSggJHBsdWdpbl9maWxlLCAkbWFya3VwID0gdHJ1ZSwgJHRyYW5zbG
F0ZSA9IHRydWUgKSB7CgoJJGRlZmF1bHRfaGVhZGVycyA9IGFycmF5KAoJCSdOYW1lJyAgICAgICAgPT4gJ
1BsdWdpbiBOYW1lJywKCQknUGx1Z2luVVJJJyAgID0+ICdQbHVnaW4gVVJJJywKCQknVmVyc2lvbicgICAg
ID0+ICdWZXJzaW9uJywKCQknRGVzY3JpcHRpb24nID0+ICdEZXNjcmlwdGlvbicsCgkJJ0F1dGhvcicgICA
gICA9PiAnQXV0aG9yJywKCQknQXV0aG9yVVJJJyAgID0+ICdBdXRob3IgVVJJJywKCQknVGV4dERvbWFpbi
cgID0+ICdUZXh0IERvbWFpbicsCgkJJ0RvbWFpblBhdGgnICA9PiAnRG9tYWluIFBhdGgnLAoJCSdOZXR3b
3JrJyAgICAgPT4gJ05ldHdvcmsnLAoJCS8vIFNpdGUgV2lkZSBPbmx5IGlzIGRlcHJlY2F0ZWQgaW4gZmF2
b3Igb2YgTmV0d29yay4KCQknX3NpdGV3aWRlJyAgID0+ICdTaXRlIFdpZGUgT25seScsCgkpOwoKCSRwbHV
naW5fZGF0YSA9IGdldF9maWxlX2RhdGEoICRwbHVnaW5fZmlsZSwgJGRlZmF1bHRfaGVhZGVycywgJ3BsdW
dpbicgKTsKCgkvLyBTaXRlIFdpZGUgT25seSBpcyB0aGUgb2xkIGhlYWRlciBmb3IgTmV0d29yay4KCWlmI
CggZW1wdHkoICRwbHVnaW5fZGF0YVsnTmV0d29yayddICkgJiYgISBlbXB0eSggJHBsdWdpbl9kYXRhWydf
c2l0ZXdpZGUnXSApICkgewoJCV9kZXByZWNhdGVkX2FyZ3VtZW50KCBfX0ZVTkNUSU9OX18sICczLjAnLCB
zcHJpbnRmKCBfXyggJ1RoZSA8Y29kZT4lMSRzPC9jb2RlPiBwbHVnaW4gaGVhZGVyIGlzIGRlcHJlY2F0ZW
QuIFVzZSA8Y29kZT4lMiRzPC9jb2RlPiBpbnN0ZWFkLicgKSwgJ1NpdGUgV2lkZSBPbmx5OiB0cnVlJywgJ
05ldHdvcms6IHRydWUnICkgKTsKCQkkcGx1Z2luX2RhdGFbJ05ldHdvcmsnXSA9ICRwbHVnaW5fZGF0YVsn
X3NpdGV3aWRlJ107Cgl9CgkkcGx1Z2luX2RhdGFbJ05ldHdvcmsnXSA9ICggJ3RydWUnID09IHN0cnRvbG9
3ZXIoICRwbHVnaW5fZGF0YVsnTmV0d29yayddICkgKTsKCXVuc2V0KCAkcGx1Z2luX2RhdGFbJ19zaXRld2
lkZSddICk7CgoJLy8gRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgYnkgZGVmYXVsdCBUaXRsZSBpcyB0a
GUgc2FtZSBhcyBOYW1lLgoJJHBsdWdpbl9kYXRhWydUaXRsZSddID0gJHBsdWdpbl9kYXRhWydOYW1lJ107
CgoJaWYgKCAkbWFya3VwIHx8ICR0cmFuc2xhdGUgKSB7CgkJJHBsdWdpbl9kYXRhID0gX2dldF9wbHVnaW5
fZGF0YV9tYXJrdXBfdHJhbnNsYXRlKCAkcGx1Z2luX2ZpbGUsICRwbHVnaW5fZGF0YSwgJG1hcmt1cCwgJH
RyYW5zbGF0ZSApOwoJfSBlbHNlIHsKCQkkcGx1Z2luX2RhdGFbJ0F1dGhvck5hbWUnXSA9ICRwbHVnaW5fZ
GF0YVsnQXV0aG9yJ107Cgl9CgoJcmV0dXJuICRwbHVnaW5fZGF0YTsKfQoKLyoqCiAqIEdldCBmaWxlIERh
dGEuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGZpbGUgICAgICAgICAgICAgUGF0aCB0byBmaWxlLgogKiBAcGF
yYW0gYXJyYXkgICRkZWZhdWx0X2hlYWRlcnMgIEFycmF5IG9mIEhlYWRlcnMuCiAqIEBwYXJhbSBzdHJpbm
cgJGNvbnRleHQgICAgICAgICAgQ29udGV4dC4KICoKICogQHJldHVybiBhcnJheSAgRmlsZSBkYXRhIGFyc
mF5LgogKi8KZnVuY3Rpb24gZ2V0X2ZpbGVfZGF0YSggJGZpbGUsICRkZWZhdWx0X2hlYWRlcnMsICRjb250
ZXh0ID0gJycgKSB7CgkvLyBXZSBkb24ndCBuZWVkIHRvIHdyaXRlIHRvIHRoZSBmaWxlLCBzbyBqdXN0IG9
wZW4gZm9yIHJlYWRpbmcuCgkkZnAgPSBmb3BlbiggJGZpbGUsICdyJyApOwoKCS8vIFB1bGwgb25seSB0aG
UgZmlyc3QgOGtpQiBvZiB0aGUgZmlsZSBpbi4KCSRmaWxlX2RhdGEgPSBmcmVhZCggJGZwLCA4MTkyICk7C
goJLy8gUEhQIHdpbGwgY2xvc2UgZmlsZSBoYW5kbGUsIGJ1dCB3ZSBhcmUgZ29vZCBjaXRpemVucy4KCWZj
bG9zZSggJGZwICk7CgoJaWYgKCAnJyAhPSAkY29udGV4dCApIHsKCQkkZXh0cmFfaGVhZGVycyA9IGFwcGx
5X2ZpbHRlcnMoICJleHRyYV97JGNvbnRleHR9X2hlYWRlcnMiLCBhcnJheSgpICk7CgoJCSRleHRyYV9oZW
FkZXJzID0gYXJyYXlfZmxpcCggJGV4dHJhX2hlYWRlcnMgKTsKCQlmb3JlYWNoICggJGV4dHJhX2hlYWRlc
nMgYXMgJGtleSA9PiAkdmFsdWUgKSB7CgkJCSRleHRyYV9oZWFkZXJzWyAka2V5IF0gPSAka2V5OwoJCX0K
CQkkYWxsX2hlYWRlcnMgPSBhcnJheV9tZXJnZSggJGV4dHJhX2hlYWRlcnMsIChhcnJheSkgJGRlZmF1bHR
faGVhZGVycyApOwoJfSBlbHNlIHsKCQkkYWxsX2hlYWRlcnMgPSAkZGVmYXVsdF9oZWFkZXJzOwoJfQoKCW
ZvcmVhY2ggKCAkYWxsX2hlYWRlcnMgYXMgJGZpZWxkID0+ICRyZWdleCApIHsKCQlwcmVnX21hdGNoKCAnL
15bIFx0XC8qI0BdKicgLiBwcmVnX3F1b3RlKCAkcmVnZXgsICcvJyApIC4gJzooLiopJC9taScsICRmaWxl
X2RhdGEsICR7JGZpZWxkfSApOwoJCWlmICggISBlbXB0eSggJHskZmllbGR9ICkgKSB7CgkJCSR7ICRmaWV
sZCB9ID0gX2NsZWFudXBfaGVhZGVyX2NvbW1lbnQoICR7ICRmaWVsZCB9WzFdICk7CgkJfSBlbHNlIHsKCQ
kJJHsgJGZpZWxkIH0gPSAnJzsKCQl9Cgl9CgoJJGZpbGVfZGF0YSA9IGNvbXBhY3QoIGFycmF5X2tleXMoI
CRhbGxfaGVhZGVycyApICk7CgoJcmV0dXJuICRmaWxlX2RhdGE7Cn0KCi8qKgogKiBQbGFjZWhvbGRlciBm
dW5jdGlvbiBmb3Igd3Bfbm9uY2VfZmllbGQoKS4KICoKICogQHJldHVybiBudWxsCiAqLwpmdW5jdGlvbiB
3cF9ub25jZV9maWVsZCgpIHsKCXJldHVybjsKfQoKaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ25nZXR0ZX
h0JyApICkgewoJLyoqCgkgKiBTb21lIFBIUCBpbnN0YWxscyBkb24ndCBoYXZlIG5nZXR0ZXh0LiBOZWVkZ
WQgYnkgaHVtYW5fdGltZV9kaWZmKCkuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkc2luZ3VsYXIgIFNpbmd1
bGFyIHZlcnNpb24uCgkgKiBAcGFyYW0gc3RyaW5nICRwbHVyYWwgICAgUGx1cmFsIHZlcnNpb24uCgkgKiB
AcGFyYW0gaW50ICAgICRudW0gICAgICAgTnVtYmVyIHRvIGNoZWNrIGZvciBwbHVyYWwuCgkgKgoJICogQH
JldHVybiBzdHJpbmcgIFNpbmd1bGFyIG9yIHBsdXJhbCB2ZXJzaW9uLgoJICovCglmdW5jdGlvbiBuZ2V0d
GV4dCggJHNpbmd1bGFyLCAkcGx1cmFsLCAkbnVtICkgewoJCWlmICggJG51bSA+IDEgKSB7CgkJCXJldHVy
biAkcGx1cmFsOwoJCX0KCQlyZXR1cm4gJHNpbmd1bGFyOwoJfQp9IC8vIEVuZCBuZ2V0dGV4dCgpLgoKLyo
qCiAqIERldGVybWluZXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gdGltZXN0YW1wcy4KICoKICogVG
hlIGRpZmZlcmVuY2UgaXMgcmV0dXJuZWQgaW4gYSBodW1hbiByZWFkYWJsZSBmb3JtYXQgc3VjaCBhcyAiM
SBob3VyIiwKICogIjUgbWlucyIsICIyIGRheXMiLgogKgogKiBAc2luY2UgMS41LjAKICoKICogQHBhcmFt
IGludCAkZnJvbSBVbml4IHRpbWVzdGFtcCBmcm9tIHdoaWNoIHRoZSBkaWZmZXJlbmNlIGJlZ2lucy4KICo
gQHBhcmFtIGludCAkdG8gT3B0aW9uYWwuIFVuaXggdGltZXN0YW1wIHRvIGVuZCB0aGUgdGltZSBkaWZmZX
JlbmNlLiBEZWZhdWx0IGJlY29tZXMgdGltZSgpIGlmIG5vdCBzZXQuCiAqIEByZXR1cm4gc3RyaW5nIEh1b
WFuIHJlYWRhYmxlIHRpbWUgZGlmZmVyZW5jZS4KICovCmZ1bmN0aW9uIGh1bWFuX3RpbWVfZGlmZiggJGZy
b20sICR0byA9ICcnICkgewoJaWYgKCBlbXB0eSggJHRvICkgKSB7CgkJJHRvID0gdGltZSgpOwoJfQoJJGR
pZmYgPSAoaW50KSBhYnMoICR0byAtICRmcm9tICk7CglpZiAoICRkaWZmIDw9IDM2MDAgKSB7CgkJJG1pbn
MgPSByb3VuZCggJGRpZmYgLyA2MCApOwoJCWlmICggJG1pbnMgPD0gMSApIHsKCQkJJG1pbnMgPSAxOwoJC
X0KCQkvKiB0cmFuc2xhdG9yczogbWluPW1pbnV0ZSAqLwoJCSRzaW5jZSA9IHNwcmludGYoIG5nZXR0ZXh0
KCAnJXMgbWluJywgJyVzIG1pbnMnLCAkbWlucyApLCAkbWlucyApOwoJfSBlbHNlaWYgKCAoICRkaWZmIDw
9IDg2NDAwICkgJiYgKCAkZGlmZiA+IDM2MDAgKSApIHsKCQkkaG91cnMgPSByb3VuZCggJGRpZmYgLyAzNj
AwICk7CgkJaWYgKCAkaG91cnMgPD0gMSApIHsKCQkJJGhvdXJzID0gMTsKCQl9CgkJJHNpbmNlID0gc3Bya
W50ZiggbmdldHRleHQoICclcyBob3VyJywgJyVzIGhvdXJzJywgJGhvdXJzICksICRob3VycyApOwoJfSBl
bHNlaWYgKCAkZGlmZiA+PSA4NjQwMCApIHsKCQkkZGF5cyA9IHJvdW5kKCAkZGlmZiAvIDg2NDAwICk7Cgk
JaWYgKCAkZGF5cyA8PSAxICkgewoJCQkkZGF5cyA9IDE7CgkJfQoJCSRzaW5jZSA9IHNwcmludGYoIG5nZX
R0ZXh0KCAnJXMgZGF5JywgJyVzIGRheXMnLCAkZGF5cyApLCAkZGF5cyApOwoJfQoJcmV0dXJuICRzaW5jZ
TsKfQoKCi8qKgogKiBVbnNlcmlhbGl6ZSB2YWx1ZSBvbmx5IGlmIGl0IHdhcyBzZXJpYWxpemVkLgogKgog
KiBAc2luY2UgMi4wLjAKICoKICogQHBhcmFtIHN0cmluZyAkb3JpZ2luYWwgTWF5YmUgdW5zZXJpYWxpemV
kIG9yaWdpbmFsLCBpZiBpcyBuZWVkZWQuCiAqIEByZXR1cm4gbWl4ZWQgVW5zZXJpYWxpemVkIGRhdGEgY2
FuIGJlIGFueSB0eXBlLgogKi8KZnVuY3Rpb24gbWF5YmVfdW5zZXJpYWxpemUoICRvcmlnaW5hbCApIHsKC
WlmICggaXNfc2VyaWFsaXplZCggJG9yaWdpbmFsICkgKSB7IC8vIGRvbid0IGF0dGVtcHQgdG8gdW5zZXJp
YWxpemUgZGF0YSB0aGF0IHdhc24ndCBzZXJpYWxpemVkIGdvaW5nIGluCgkJcmV0dXJuIEB1bnNlcmlhbGl
6ZSggJG9yaWdpbmFsICk7Cgl9CglyZXR1cm4gJG9yaWdpbmFsOwp9CgoKCi8vIE5PVCBJTVBMRU1FTlRFRC
BCVVQgTk9OLUJMT0NLSU5HLgovKioKICogTm90IGltcGxlbWVudGVkIGJ1dCBub24tYmxvY2tpbmcKICovC
mZ1bmN0aW9uIHJlZ2lzdGVyX2FjdGl2YXRpb25faG9vaygpIHsKfQovKioKICogTm90IGltcGxlbWVudGVk
IGJ1dCBub24tYmxvY2tpbmcKICovCmZ1bmN0aW9uIGxvYWRfcGx1Z2luX3RleHRkb21haW4oKSB7Cn0KLyo
qCiAqIE5vdCBpbXBsZW1lbnRlZCBidXQgbm9uLWJsb2NraW5nCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGNhcG
FiaWxpdHkgIFBlcm1pc3Npb24uCiAqCiAqIEByZXR1cm4gYm9vbCAgQWx3YXlzIHJldHVybnMgdHJ1ZS4KI
CovCmZ1bmN0aW9uIGN1cnJlbnRfdXNlcl9jYW4oICRjYXBhYmlsaXR5ICkgewoJcmV0dXJuIHRydWU7Cn0K
Ci8qKgogKiBHZXQgdGVtcCBkaXJlY3RvcnkuCiAqCiAqIEByZXR1cm4gc3RyaW5nICBUZW1wIGRpcmVjdG9
yeSBwYXRoLgogKi8KZnVuY3Rpb24gZ2V0X3RlbXBfZGlyKCkgewoKCWlmICggZnVuY3Rpb25fZXhpc3RzKC
Anc3lzX2dldF90ZW1wX2RpcicgKSApIHsKCQkkdGVtcCA9IHN5c19nZXRfdGVtcF9kaXIoKTsKCQlpZiAoI
EBpc19kaXIoICR0ZW1wICkgJiYgaXNfd3JpdGFibGUoICR0ZW1wICkgKSB7CgkJCXJldHVybiBydHJpbSgg
JHRlbXAsICcvXFwnICkgLiAnLyc7CgkJfQoJfQoKCSR0ZW1wID0gQUJTUEFUSCAuICd0ZW1wLyc7CglAbWt
kaXIoICR0ZW1wICk7CglpZiAoIGlzX2RpciggJHRlbXAgKSAmJiBpc193cml0YWJsZSggJHRlbXAgKSApIH
sKCQlyZXR1cm4gJHRlbXA7Cgl9CgoJJHRlbXAgPSAnL3RtcC8nOwoJQG1rZGlyKCAkdGVtcCApOwoJcmV0d
XJuICR0ZW1wOwp9CgovKioKICogUG9vciBtYW4ncyB3cF91cGxvYWRfZGlyCiAqCiAqIEByZXR1cm4gYXJy
YXkgIEFycmF5IG9mIHVwbG9hZCBkaXIgaW5mby4KICovCmZ1bmN0aW9uIHdwX3VwbG9hZF9kaXIoKSB7Cgl
yZXR1cm4gYXJyYXkoICdiYXNlZGlyJyA9PiBBQlNQQVRIICk7Cn0KCi8qKgogKiBQb29yIG1hbidzIHdwX2
RpZSBmdW5jdGlvbi4KICoKICogQHBhcmFtIHN0cmluZyAkbWVzc2FnZSAgTWVzc2FnZSB0byBkaXNwbGF5L
gogKi8KZnVuY3Rpb24gd3BfZGllKCAkbWVzc2FnZSApIHsKCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdl
cnJvcicsICd3cF9kaWUoKSBjYWxsZWQgd2l0aCBtZXNzYWdlOiAnIC4gJG1lc3NhZ2UgKTsKCWRpZSggJG1
lc3NhZ2UgKTsKfQoKLyoqCiAqIE5vdCBpbXBsZW1lbnRlZCBidXQgbm9uLWJsb2NraW5nCiAqLwpmdW5jdG
lvbiB3cF9sb2FkX3RyYW5zbGF0aW9uc19lYXJseSgpIHsKfQoKLyoqCiAqIE5vdCBpbXBsZW1lbnRlZCBid
XQgbm9uLWJsb2NraW5nCiAqLwpmdW5jdGlvbiB3cF9kZWJ1Z19iYWNrdHJhY2Vfc3VtbWFyeSgpIHsKfQoK
aWYgKCAhIGRlZmluZWQoICdXUF9ERUJVRycgKSApIHsKCWRlZmluZSggJ1dQX0RFQlVHJywgZmFsc2UgKTs
KfQppZiAoICEgZGVmaW5lZCggJ1dQX0RFQlVHX0
RJU1BMQVknICkgKSB7CglkZWZpbmUoICdXUF9ERUJVR19ESVNQTEFZJywgdHJ1ZSApOwp9CmlmICggISBkZ
WZpbmVkKCAnV1BfREVCVUdfTE9HJyApICkgewoJZGVmaW5lKCAnV1BfREVCVUdfTE9HJywgZmFsc2UgKTsK
fQppZiAoICEgZGVmaW5lZCggJ1dQX0NBQ0hFJyApICkgewoJZGVmaW5lKCAnV1BfQ0FDSEUnLCBmYWxzZSA
pOwp9CgovKioKICogTm90IGltcGxlbWVudGVkLCBhZGRzID8gYmVmb3JlIHBhcmFtLgogKgogKiBAcGFyYW
0gc3RyaW5nICR2YWwgIFVSTCB0byByZXR1cm4uCiAqCiAqIEByZXR1cm4gc3RyaW5nICAkdmFsLCBwcmVma
XhlZCB3aXRoID8KICovCmZ1bmN0aW9uIGFkbWluX3VybCggJHZhbCApIHsKCXJldHVybiAnPycgLiAkdmFs
Owp9CgoKLyoqCiAqIFdvcmRQcmVzcyBFcnJvciBjbGFzcy4KICoKICogQ29udGFpbmVyIGZvciBjaGVja2l
uZyBmb3IgV29yZFByZXNzIGVycm9ycyBhbmQgZXJyb3IgbWVzc2FnZXMuIFJldHVybgogKiBXUF9FcnJvci
BhbmQgdXNlIHtAbGluayBpc193cF9lcnJvcigpfSB0byBjaGVjayBpZiB0aGlzIGNsYXNzIGlzIHJldHVyb
mVkLgogKiBNYW55IGNvcmUgV29yZFByZXNzIGZ1bmN0aW9ucyBwYXNzIHRoaXMgY2xhc3MgaW4gdGhlIGV2
ZW50IG9mIGFuIGVycm9yIGFuZAogKiBpZiBub3QgaGFuZGxlZCBwcm9wZXJseSB3aWxsIHJlc3VsdCBpbiB
jb2RlIGVycm9ycy4KICoKICogQHBhY2thZ2UgV29yZFByZXNzCiAqIEBzaW5jZSAyLjEuMAogKi8KY2xhc3
MgV1BfRXJyb3IgewoJLyoqCgkgKiBTdG9yZXMgdGhlIGxpc3Qgb2YgZXJyb3JzLgoJICoKCSAqIEBzaW5jZ
SAyLjEuMAoJICogQHZhciBhcnJheQoJICovCglwdWJsaWMgJGVycm9ycyA9IGFycmF5KCk7CgoJLyoqCgkg
KiBTdG9yZXMgdGhlIGxpc3Qgb2YgZGF0YSBmb3IgZXJyb3IgY29kZXMuCgkgKgoJICogQHNpbmNlIDIuMS4
wCgkgKiBAdmFyIGFycmF5CgkgKi8KCXB1YmxpYyAkZXJyb3JfZGF0YSA9IGFycmF5KCk7CgoJLyoqCgkgKi
BJbml0aWFsaXplIHRoZSBlcnJvci4KCSAqCgkgKiBJZiBgJGNvZGVgIGlzIGVtcHR5LCB0aGUgb3RoZXIgc
GFyYW1ldGVycyB3aWxsIGJlIGlnbm9yZWQuCgkgKiBXaGVuIGAkY29kZWAgaXMgbm90IGVtcHR5LCBgJG1l
c3NhZ2VgIHdpbGwgYmUgdXNlZCBldmVuIGlmCgkgKiBpdCBpcyBlbXB0eS4gVGhlIGAkZGF0YWAgcGFyYW1
ldGVyIHdpbGwgYmUgdXNlZCBvbmx5IGlmIGl0CgkgKiBpcyBub3QgZW1wdHkuCgkgKgoJICogVGhvdWdoIH
RoZSBjbGFzcyBpcyBjb25zdHJ1Y3RlZCB3aXRoIGEgc2luZ2xlIGVycm9yIGNvZGUgYW5kCgkgKiBtZXNzY
WdlLCBtdWx0aXBsZSBjb2RlcyBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIGBhZGQoKWAgbWV0aG9kLgoJICoK
CSAqIEBzaW5jZSAyLjEuMAoJICoKCSAqIEBwYXJhbSBzdHJpbmd8aW50ICRjb2RlICAgICBFcnJvciBjb2R
lLgoJICogQHBhcmFtIHN0cmluZyAgICAgJG1lc3NhZ2UgIEVycm9yIG1lc3NhZ2UuCgkgKiBAcGFyYW0gbW
l4ZWQgICAgICAkZGF0YSAgICAgT3B0aW9uYWwuIEVycm9yIGRhdGEuCgkgKi8KCXB1YmxpYyBmdW5jdGlvb
iBfX2NvbnN0cnVjdCggJGNvZGUgPSAnJywgJG1lc3NhZ2UgPSAnJywgJGRhdGEgPSAnJyApIHsKCQlpZiAo
IGVtcHR5KCAkY29kZSApICkgewoJCQlyZXR1cm47CgkJfQoKCQkkdGhpcy0+ZXJyb3JzWyAkY29kZSBdW10
gPSAkbWVzc2FnZTsKCgkJaWYgKCAhIGVtcHR5KCAkZGF0YSApICkgewoJCQkkdGhpcy0+ZXJyb3JfZGF0YV
sgJGNvZGUgXSA9ICRkYXRhOwoJCX0KCX0KCgkvKioKCSAqIFJldHJpZXZlIGFsbCBlcnJvciBjb2Rlcy4KC
SAqCgkgKiBAc2luY2UgMi4xLjAKCSAqIEBhY2Nlc3MgcHVibGljCgkgKgoJICogQHJldHVybiBhcnJheSBM
aXN0IG9mIGVycm9yIGNvZGVzLCBpZiBhdmFpbGFibGUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfZXJ
yb3JfY29kZXMoKSB7CgkJaWYgKCBlbXB0eSggJHRoaXMtPmVycm9ycyApICkgewoJCQlyZXR1cm4gYXJyYX
koKTsKCQl9CgoJCXJldHVybiBhcnJheV9rZXlzKCAkdGhpcy0+ZXJyb3JzICk7Cgl9CgoJLyoqCgkgKiBSZ
XRyaWV2ZSBmaXJzdCBlcnJvciBjb2RlIGF2YWlsYWJsZS4KCSAqCgkgKiBAc2luY2UgMi4xLjAKCSAqIEBh
Y2Nlc3MgcHVibGljCgkgKgoJICogQHJldHVybiBzdHJpbmd8aW50IEVtcHR5IHN0cmluZywgaWYgbm8gZXJ
yb3IgY29kZXMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfZXJyb3JfY29kZSgpIHsKCQkkY29kZXMgPS
AkdGhpcy0+Z2V0X2Vycm9yX2NvZGVzKCk7CgoJCWlmICggZW1wdHkoICRjb2RlcyApICkgewoJCQlyZXR1c
m4gJyc7CgkJfQoKCQlyZXR1cm4gJGNvZGVzWzBdOwoJfQoKCS8qKgoJICogUmV0cmlldmUgYWxsIGVycm9y
IG1lc3NhZ2VzIG9yIGVycm9yIG1lc3NhZ2VzIG1hdGNoaW5nIGNvZGUuCgkgKgoJICogQHNpbmNlIDIuMS4
wCgkgKgoJICogQHBhcmFtIHN0cmluZ3xpbnQgJGNvZGUgT3B0aW9uYWwuIFJldHJpZXZlIG1lc3NhZ2VzIG
1hdGNoaW5nIGNvZGUsIGlmIGV4aXN0cy4KCSAqIEByZXR1cm4gYXJyYXkgRXJyb3Igc3RyaW5ncyBvbiBzd
WNjZXNzLCBvciBlbXB0eSBhcnJheSBvbiBmYWlsdXJlIChpZiB1c2luZyBjb2RlIHBhcmFtZXRlcikuCgkg
Ki8KCXB1YmxpYyBmdW5jdGlvbiBnZXRfZXJyb3JfbWVzc2FnZXMoICRjb2RlID0gJycgKSB7CgkJLy8gUmV
0dXJuIGFsbCBtZXNzYWdlcyBpZiBubyBjb2RlIHNwZWNpZmllZC4KCQlpZiAoIGVtcHR5KCAkY29kZSApIC
kgewoJCQkkYWxsX21lc3NhZ2VzID0gYXJyYXkoKTsKCQkJZm9yZWFjaCAoIChhcnJheSkgJHRoaXMtPmVyc
m9ycyBhcyAkY29kZSA9PiAkbWVzc2FnZXMgKSB7CgkJCQkkYWxsX21lc3NhZ2VzID0gYXJyYXlfbWVyZ2Uo
ICRhbGxfbWVzc2FnZXMsICRtZXNzYWdlcyApOwoJCQl9CgoJCQlyZXR1cm4gJGFsbF9tZXNzYWdlczsKCQl
9CgoJCWlmICggaXNzZXQoICR0aGlzLT5lcnJvcnNbICRjb2RlIF0gKSApIHsKCQkJcmV0dXJuICR0aGlzLT
5lcnJvcnNbICRjb2RlIF07CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGFycmF5KCk7CgkJfQoJfQoKCS8qKgoJI
CogR2V0IHNpbmdsZSBlcnJvciBtZXNzYWdlLgoJICoKCSAqIFRoaXMgd2lsbCBnZXQgdGhlIGZpcnN0IG1l
c3NhZ2UgYXZhaWxhYmxlIGZvciB0aGUgY29kZS4gSWYgbm8gY29kZSBpcwoJICogZ2l2ZW4gdGhlbiB0aGU
gZmlyc3QgY29kZSBhdmFpbGFibGUgd2lsbCBiZSB1c2VkLgoJICoKCSAqIEBzaW5jZSAyLjEuMAoJICoKCS
AqIEBwYXJhbSBzdHJpbmd8aW50ICRjb2RlIE9wdGlvbmFsLiBFcnJvciBjb2RlIHRvIHJldHJpZXZlIG1lc
3NhZ2UuCgkgKiBAcmV0dXJuIHN0cmluZwoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2Vycm9yX21lc3Nh
Z2UoICRjb2RlID0gJycgKSB7CgkJaWYgKCBlbXB0eSggJGNvZGUgKSApIHsKCQkJJGNvZGUgPSAkdGhpcy0
+Z2V0X2Vycm9yX2NvZGUoKTsKCQl9CgkJJG1lc3NhZ2VzID0gJHRoaXMtPmdldF9lcnJvcl9tZXNzYWdlcy
ggJGNvZGUgKTsKCQlpZiAoIGVtcHR5KCAkbWVzc2FnZXMgKSApIHsKCQkJcmV0dXJuICcnOwoJCX0KCQlyZ
XR1cm4gJG1lc3NhZ2VzWzBdOwoJfQoKCS8qKgoJICogUmV0cmlldmUgZXJyb3IgZGF0YSBmb3IgZXJyb3Ig
Y29kZS4KCSAqCgkgKiBAc2luY2UgMi4xLjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5nfGludCAkY29kZSBPcHR
pb25hbC4gRXJyb3IgY29kZS4KCSAqIEByZXR1cm4gbWl4ZWQgRXJyb3IgZGF0YSwgaWYgaXQgZXhpc3RzLg
oJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0X2Vycm9yX2RhdGEoICRjb2RlID0gJycgKSB7CgkJaWYgKCBlb
XB0eSggJGNvZGUgKSApIHsKCQkJJGNvZGUgPSAkdGhpcy0+Z2V0X2Vycm9yX2NvZGUoKTsKCQl9CgoJCWlm
ICggaXNzZXQoICR0aGlzLT5lcnJvcl9kYXRhWyAkY29kZSBdICkgKSB7CgkJCXJldHVybiAkdGhpcy0+ZXJ
yb3JfZGF0YVsgJGNvZGUgXTsKCQl9Cgl9CgoJLyoqCgkgKiBBZGQgYW4gZXJyb3Igb3IgYXBwZW5kIGFkZG
l0aW9uYWwgbWVzc2FnZSB0byBhbiBleGlzdGluZyBlcnJvci4KCSAqCgkgKiBAc2luY2UgMi4xLjAKCSAqI
EBhY2Nlc3MgcHVibGljCgkgKgoJICogQHBhcmFtIHN0cmluZ3xpbnQgJGNvZGUgRXJyb3IgY29kZS4KCSAq
IEBwYXJhbSBzdHJpbmcgICAgICRtZXNzYWdlIEVycm9yIG1lc3NhZ2UuCgkgKiBAcGFyYW0gbWl4ZWQgICA
gICAkZGF0YSBPcHRpb25hbC4gRXJyb3IgZGF0YS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGFkZCggJGNvZG
UsICRtZXNzYWdlLCAkZGF0YSA9ICcnICkgewoJCSR0aGlzLT5lcnJvcnNbICRjb2RlIF1bXSA9ICRtZXNzY
WdlOwoJCWlmICggISBlbXB0eSggJGRhdGEgKSApIHsKCQkJJHRoaXMtPmVycm9yX2RhdGFbICRjb2RlIF0g
PSAkZGF0YTsKCQl9Cgl9CgoJLyoqCgkgKiBBZGQgZGF0YSBmb3IgZXJyb3IgY29kZS4KCSAqCgkgKiBUaGU
gZXJyb3IgY29kZSBjYW4gb25seSBjb250YWluIG9uZSBlcnJvciBkYXRhLgoJICoKCSAqIEBzaW5jZSAyLj
EuMAoJICoKCSAqIEBwYXJhbSBtaXhlZCAgICAgICRkYXRhIEVycm9yIGRhdGEuCgkgKiBAcGFyYW0gc3Rya
W5nfGludCAkY29kZSBFcnJvciBjb2RlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gYWRkX2RhdGEoICRkYXRh
LCAkY29kZSA9ICcnICkgewoJCWlmICggZW1wdHkoICRjb2RlICkgKSB7CgkJCSRjb2RlID0gJHRoaXMtPmd
ldF9lcnJvcl9jb2RlKCk7CgkJfQoKCQkkdGhpcy0+ZXJyb3JfZGF0YVsgJGNvZGUgXSA9ICRkYXRhOwoJfQ
oKCS8qKgoJICogUmVtb3ZlcyB0aGUgc3BlY2lmaWVkIGVycm9yLgoJICoKCSAqIFRoaXMgZnVuY3Rpb24gc
mVtb3ZlcyBhbGwgZXJyb3IgbWVzc2FnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKCSAqIGVy
cm9yIGNvZGUsIGFsb25nIHdpdGggYW55IGVycm9yIGRhdGEgZm9yIHRoYXQgY29kZS4KCSAqCgkgKiBAc2l
uY2UgNC4xLjAKCSAqCgkgKiBAcGFyYW0gc3RyaW5nfGludCAkY29kZSBFcnJvciBjb2RlLgoJICovCglwdW
JsaWMgZnVuY3Rpb24gcmVtb3ZlKCAkY29kZSApIHsKCQl1bnNldCggJHRoaXMtPmVycm9yc1sgJGNvZGUgX
SApOwoJCXVuc2V0KCAkdGhpcy0+ZXJyb3JfZGF0YVsgJGNvZGUgXSApOwoJfQp9CgovKioKICogQ2hlY2sg
d2hldGhlciB2YXJpYWJsZSBpcyBhIFdvcmRQcmVzcyBFcnJvci4KICoKICogUmV0dXJucyB0cnVlIGlmICR
0aGluZyBpcyBhbiBvYmplY3Qgb2YgdGhlIFdQX0Vycm9yIGNsYXNzLgogKgogKiBAc2luY2UgMi4xLjAKIC
oKICogQHBhcmFtIG1peGVkICR0aGluZyBDaGVjayBpZiB1bmtub3duIHZhcmlhYmxlIGlzIGEgV1BfRXJyb
3Igb2JqZWN0LgogKiBAcmV0dXJuIGJvb2wgVHJ1ZSwgaWYgV1BfRXJyb3IuIEZhbHNlLCBpZiBub3QgV1Bf
RXJyb3IuCiAqLwpmdW5jdGlvbiBpc193cF9lcnJvciggJHRoaW5nICkgewoJcmV0dXJuICggJHRoaW5nIGl
uc3RhbmNlb2YgV1BfRXJyb3IgKTsKfQoKLyoqCiAqIFNldCB0aGUgbWJzdHJpbmcgaW50ZXJuYWwgZW5jb2
RpbmcgdG8gYSBiaW5hcnkgc2FmZSBlbmNvZGluZyB3aGVuIGZ1bmNfb3ZlcmxvYWQKICogaXMgZW5hYmxlZ
C4KICoKICogV2hlbiBtYnN0cmluZy5mdW5jX292ZXJsb2FkIGlzIGluIHVzZSBmb3IgbXVsdGktYnl0ZSBl
bmNvZGluZ3MsIHRoZSByZXN1bHRzIGZyb20KICogc3RybGVuKCkgYW5kIHNpbWlsYXIgZnVuY3Rpb25zIHJ
lc3BlY3QgdGhlIHV0ZjggY2hhcmFjdGVycywgY2F1c2luZyBiaW5hcnkgZGF0YQogKiB0byByZXR1cm4gaW
5jb3JyZWN0IGxlbmd0aHMuCiAqCiAqIFRoaXMgZnVuY3Rpb24gb3ZlcnJpZGVzIHRoZSBtYnN0cmluZyBlb
mNvZGluZyB0byBhIGJpbmFyeS1zYWZlIGVuY29kaW5nLCBhbmQKICogcmVzZXRzIGl0IHRvIHRoZSB1c2Vy
cyBleHBlY3RlZCBlbmNvZGluZyBhZnRlcndhcmRzIHRocm91Z2ggdGhlCiAqIGByZXNldF9tYnN0cmluZ19
lbmNvZGluZ2AgZnVuY3Rpb24uCiAqCiAqIEl0IGlzIHNhZmUgdG8gcmVjdXJzaXZlbHkgY2FsbCB0aGlzIG
Z1bmN0aW9uLCBob3dldmVyIGVhY2gKICogYG1ic3RyaW5nX2JpbmFyeV9zYWZlX2VuY29kaW5nKClgIGNhb
GwgbXVzdCBiZSBmb2xsb3dlZCB1cCB3aXRoIGFuIGVxdWFsIG51bWJlcgogKiBvZiBgcmVzZXRfbWJzdHJp
bmdfZW5jb2RpbmcoKWAgY2FsbHMuCiAqCiAqIEBzaW5jZSAzLjcuMAogKgogKiBAc2VlIHJlc2V0X21ic3R
yaW5nX2VuY29kaW5nKCkKICoKICogQHN0YXRpY3ZhciBhcnJheSAkZW5jb2RpbmdzCiAqIEBzdGF0aWN2YX
IgYm9vbCAgJG92ZXJsb2FkZWQKICoKICogQHBhcmFtIGJvb2wgJHJlc2V0IE9wdGlvbmFsLiBXaGV0aGVyI
HRvIHJlc2V0IHRoZSBlbmNvZGluZyBiYWNrIHRvIGEgcHJldmlvdXNseS1zZXQgZW5jb2RpbmcuCiAqICAg
ICAgICAgICAgICAgICAgICBEZWZhdWx0IGZhbHNlLgogKi8KZnVuY3Rpb24gbWJzdHJpbmdfYmluYXJ5X3N
hZmVfZW5jb2RpbmcoICRyZXNldCA9IGZhbHNlICkgewoJc3RhdGljICRlbmNvZGluZ3MgID0gYXJyYXkoKT
sKCXN0YXRpYyAkb3ZlcmxvYWRlZCA9IG51bGw7CgoJaWYgKCBpc19udWxsKCAkb3ZlcmxvYWRlZCApICkge
woJCSRvdmVybG9hZGVkID0gZnVuY3Rpb25fZXhpc3RzKCAnbWJfaW50ZXJuYWxfZW5jb2RpbmcnICkgJiYg
KCBpbmlfZ2V0KCAnbWJzdHJpbmcuZnVuY19vdmVybG9hZCcgKSAmIDIgKTsKCX0KCglpZiAoIGZhbHNlID0
9PSAkb3ZlcmxvYWRlZCApIHsKCQlyZXR1cm47Cgl9CgoJaWYgKCAhICRyZXNldCApIHsKCQkkZW5jb2Rpbm
cgPSBtYl9pbnRlcm5hbF9lbmNvZGluZygpOwoJCWFycmF5X3B1c2goICRlbmNvZGluZ3MsICRlbmNvZGluZ
yApOwoJCW1iX2ludGVybmFsX2VuY29kaW5nKCAnSVNPLTg4NTktMScgKTsKCX0KCglpZiAoICRyZXNldCAm
JiAkZW5jb2RpbmdzICkgewoJCSRlbmNvZGluZyA9IGFycmF5X3BvcCggJGVuY29kaW5ncyApOwoJCW1iX2l
udGVybmFsX2VuY29kaW5nKCAkZW5jb2RpbmcgKTsKCX0KfQoKLyoqCiAqIFJlc2V0IHRoZSBtYnN0cmluZy
BpbnRlcm5hbCBlbmNvZGluZyB0byBhIHVzZXJzIHByZXZpb3VzbHkgc2V0IGVuY29kaW5nLgogKgogKiBAc
2VlIG1ic3RyaW5nX2JpbmFyeV9zYWZlX2VuY29kaW5nKCkKICoKICogQHNpbmNlIDMuNy4wCiAqLwpmdW5j
dGlvbiByZXNldF9tYnN0cmluZ19lbmNvZGluZygpIHsKCW1ic3RyaW5nX2JpbmFyeV9zYWZlX2VuY29kaW5
nKCB0cnVlICk7Cn0KCi8qKgogKiBDaGVja3MgaWYgVGVtcGxhdGUgUmVkaXJlY3QgYWN0aW9uIGhhcyBoYX
BwZW5lZC4KICoKICogQHBhcmFtIHN0cmluZyAkYWN0aW9uICBDaGVja3MgaWYgYWN0aW9uIGhhcyBiZWVuI
HVzZWQuCiAqCiAqIEByZXR1cm4gYm9vbHxudWxsICBUcnVlIGlmICRhY3Rpb24gaXMgJ3RlbXBsYXRlX3Jl
ZGlyZWN0JwogKi8KZnVuY3Rpb24gZGlkX2FjdGlvbiggJGFjdGlvbiApIHsKCWlmICggJ3RlbXBsYXRlX3J
lZGlyZWN0JyA9PSAkYWN0aW9uICkgewoJCXJldHVybiB0cnVlOwoJfQp9CgovKioKICogUGxhY2Vob2xkZX
IgZnVuY3Rpb24gZm9yIFdQIERvaW5nIGl0IFdyb
25nIGZ1bmN0aW9uLiBOb3QgaW1wbGVtZW50ZWQuCiAqCiAqIEBwYXJhbSBzdHJpbmcgJGZ1bmN0aW9uICBG
dW5jdGlvbiBuYW1lLgogKiBAcGFyYW0gc3RyaW5nICRtZXNzYWdlICAgTWVzc2FnZSB0byBkaXNwbGF5Lgo
gKiBAcGFyYW0gc3RyaW5nICR2ZXJzaW9uICAgVmVyc2lvbiB0byBub3RlLgogKi8KZnVuY3Rpb24gX2RvaW
5nX2l0X3dyb25nKCAkZnVuY3Rpb24sICRtZXNzYWdlLCAkdmVyc2lvbiApIHsgLy8gQGNvZGluZ1N0YW5kY
XJkc0lnbm9yZUxpbmU6IFBsYWNlaG9sZGVyIGZ1bmN0aW9uLgp9CgovKioKICogUGxhY2Vob2xkZXIgZnVu
Y3Rpb24gZm9yIFdQIGhhc19maWx0ZXIuCiAqCiAqIEBwYXJhbSBzdHJpbmcgICAgICAgICAgICAgICAgJG5
hbWUgICAgICBOYW1lIG9mIGZpbHRlci4KICogQHBhcmFtIHN0cmluZ3xhcnJheXxmdW5jdGlvbiAkY2FsbG
JhY2sgIENhbGxiYWNrIGZ1bmN0aW9uIG5hbWUsIGFycmF5IG9yIGZ1bmN0aW9uLgogKgogKiBAcmV0dXJuI
GJvb2wgIEFsd2F5cyByZXR1cm5zIHRydWUuCiAqLwpmdW5jdGlvbiBoYXNfZmlsdGVyKCAkbmFtZSwgJGNh
bGxiYWNrICkgewoJcmV0dXJuIHRydWU7Cn0K
###PACKDATA,FILE_END,/pluginbuddy/standalone_preloader.php,importbuddy/pluginbuddy/
standalone_preloader.php
###PACKDATA,FILE_START,/pluginbuddy/classes/class-pb-backupbuddy-db-
helpers.php,importbuddy/pluginbuddy/classes/class-pb-backupbuddy-db-helpers.php
PD9waHAKLyoqCiAqIERhdGFiYXNlIEhlbHBlcnMgQ2xhc3MgZm9yIFBsdWdpbkJ1ZGR5CiAqCiAqIEBwYWN
rYWdlIEJhY2t1cEJ1ZGR5CiAqIEBhdXRob3IgQnJpYW4gRGlDaGlhcmEgPGJkaWNoaWFyYUBpdGhlbWVzLm
NvbT4KICogQHNpbmNlIDguMi43CiAqLwoKLyoqCiAqIEFkZHMgc3RhdGljIG1ldGhvZHMgdG8gZ2V0IGluZ
m9ybWF0aW9uIGFib3V0IGRhdGFiYXNlIHZlcnNpb24gYW5kIHR5cGUuCiAqLwpjbGFzcyBQQl9CYWNrdXBi
dWRkeV9EQl9IZWxwZXJzIHsKCgkvKioKCSAqIENoZWNrcyBpZiBwcm9wZXJ0aWVzIGhhdmUgYmVlbiBpbml
0aWFsaXplZCB5ZXQuCgkgKgoJICogQHZhciBib29sCgkgKi8KCXByaXZhdGUgc3RhdGljICRoYXNfaW5pdC
A9IGZhbHNlOwoKCS8qKgoJICogSXMgTWFyaWFEQiBiZWluZyB1c2VkPyBEZWZhdWx0IGZhbHNlLgoJICoKC
SAqIEB2YXIgYm9vbAoJICovCglwcml2YXRlIHN0YXRpYyAkaXNfbWFyaWFfZGIgPSBmYWxzZTsKCgkvKioK
CSAqIElzIE15U1FMIGJlaW5nIFVzZWQ/IERlZmF1bHQ6IHRydWUuCgkgKgoJICogQHZhciBib29sCgkgKi8
KCXByaXZhdGUgc3RhdGljICRpc19teXNxbCA9IHRydWU7CgoJLyoqCgkgKiBMb2NhbCBjYWNoZSBzdG9yYW
dlCgkgKgoJICogQHZhciBhcnJheQoJICovCglwcml2YXRlIHN0YXRpYyAkY2FjaGUgPSBhcnJheSgpOwoKC
S8qKgoJICogV1AgQ2FjaGUgR3JvdXAKCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcml2YXRlIHN0YXRp
YyAkd3BfY2FjaGVfZ3JvdXAgPSAnUEJfQmFja3VwYnVkZHlfREJfSGVscGVycyc7CgoJLyoqCgkgKiBMb2N
hbCBhbmQgV1AgQ2FjaGUgUmV0cmlldmFsCgkgKgoJICogQHBhcmFtIHN0cmluZyAka2V5ICBDYWNoZSBzdG
9yYWdlIGtleS4KCSAqCgkgKiBAcmV0dXJuIG1peGVkfGZhbHNlICBDYWNoZWQgdmFsdWUgb3IgZmFsc2Ugd
2hlbiBub3QgcHJlc2VudC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjYWNoZV9nZXQoICRrZXkg
KSB7CgkJJHZhbHVlID0gaXNzZXQoIHNlbGY6OiRjYWNoZVsgJGtleSBdICkgPyBzZWxmOjokY2FjaGVbICR
rZXkgXSA6IGZhbHNlOwoJCWlmICggZnVuY3Rpb25fZXhpc3RzKCAnd3BfY2FjaGVfZ2V0JyApICkgewoJCQ
kkdmFsdWUgPSB3cF9jYWNoZV9nZXQoICRrZXksIHNlbGY6OiR3cF9jYWNoZV9ncm91cCApOwoJCX0KCgkJc
mV0dXJuICR2YWx1ZTsKCX0KCgkvKioKCSAqIExvY2FsIGFuZCBXUCBDYWNoZSBzZXR0aW5nLgoJICoKCSAq
IEBwYXJhbSBzdHJpbmcgJGtleSAgICBDYWNoZSBzdG9yYWdlIGtleS4KCSAqIEBwYXJhbSBtaXhlZCAgJHZ
hbHVlICBWYWx1ZSB0byBzdG9yZS4KCSAqCgkgKiBAcmV0dXJuIHRydWUgIEFsd2F5cyByZXR1cm5zIHRydW
UuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2FjaGVfc2V0KCAka2V5LCAkdmFsdWUgKSB7CgkJc
2VsZjo6JGNhY2hlWyAka2V5IF0gPSAkdmFsdWU7CgoJCWlmICggZnVuY3Rpb25fZXhpc3RzKCAnd3BfY2Fj
aGVfc2V0JyApICkgewoJCQlyZXR1cm4gd3BfY2FjaGVfc2V0KCAka2V5LCAkdmFsdWUsIHNlbGY6OiR3cF9
jYWNoZV9ncm91cCApOwoJCX0KCgkJcmV0dXJuIHRydWU7Cgl9CgoJLyoqCgkgKiBSZXRyaWV2ZSBhbmQgc3
RvcmUgdmVyc2lvbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGF0YWJhc2UuCgkgKgoJICogQHJldHVybiBhc
nJheSAgQ29udGFpbnMgdmVyc2lvbiBhbmQgdHlwZSBpbmZvcm1hdGlvbi4KCSAqLwoJcHVibGljIHN0YXRp
YyBmdW5jdGlvbiBnZXRfZGJfdmVyc2lvbl9pbmZvKCkgewoJCS8vIFB1bGwgZnJvbSBjYWNoZSBmaXJzdC4
KCQkkdmVyc2lvbl9pbmZvID0gc2VsZjo6Y2FjaGVfZ2V0KCAnZGJfdmVyc2lvbl9pbmZvJyApOwoKCQlpZi
AoIGZhbHNlID09PSAkdmVyc2lvbl9pbmZvICkgewoJCQlnbG9iYWwgJHdwZGI7CgoJCQkkdmVyc2lvbl9pb
mZvID0gYXJyYXkoKTsKCgkJCS8vIFJldHJpZXZlcyByYXcgTXlTUUwgb3IgTWFyaWFEQiB2ZXJzaW9uLgoJ
CQkkcmVzdWx0ID0gJHdwZGItPmdldF9yb3coICdTRUxFQ1QgVkVSU0lPTigpIGFzIGB2ZXJzaW9uYCcgKTs
KCgkJCWlmICggJHJlc3VsdCApIHsKCQkJCSR2ZXJzaW9uX2luZm9bJ2RiX3ZlcnNpb24nXSA9ICRyZXN1bH
QtPnZlcnNpb247CgkJCX0KCgkJCS8vIEZhbGxiYWNrIG9uIG15c3FsKl9nZXRfc2VydmVyX2luZm8uCgkJC
WlmICggISBpc3NldCggJHZlcnNpb25faW5mb1snZGJfdmVyc2lvbiddICkgKSB7CgkJCQlpZiAoICR3cGRi
LT51c2VfbXlzcWxpICkgewoJCQkJCSR2ZXJzaW9uX2luZm9bJ2RiX3ZlcnNpb24nXSA9IG15c3FsaV9nZXR
fc2VydmVyX2luZm8oICR3cGRiLT5kYmggKTsKCQkJCX0gZWxzZSB7CgkJCQkJJHZlcnNpb25faW5mb1snZG
JfdmVyc2lvbiddID0gbXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCAkd3BkYi0+ZGJoICk7CgkJCQl9CgkJCX0KC
gkJCWlmICggaXNzZXQoICR2ZXJzaW9uX2luZm9bJ2RiX3ZlcnNpb24nXSApICkgewoJCQkJLy8gTWFyayBp
ZiB1c2luZyBNYXJpYURCLgoJCQkJJHZlcnNpb25faW5mb1snaXNfbWFyaWFkYiddID0gKCBmYWxzZSAhPT0
gc3RyaXBvcyggJHZlcnNpb25faW5mb1snZGJfdmVyc2lvbiddLCAnbWFyaWFkYicgKSApOwoJCQkJc2VsZj
o6JGlzX21hcmlhX2RiICAgICAgICAgID0gJHZlcnNpb25faW5mb1snaXNfbWFyaWFkYiddOwoJCQkJJHZlc
nNpb25faW5mb1snaXNfbXlzcWwnXSAgID0gISAkdmVyc2lvbl9pbmZvWydpc19tYXJpYWRiJ107IC8vIFN0
b3JlIHRoZSBvcHBvc2l0ZSBvZiBpZiBNYXJpYURCLgoJCQkJc2VsZjo6JGlzX215c3FsICAgICAgICAgICA
gID0gJHZlcnNpb25faW5mb1snaXNfbXlzcWwnXTsKCgkJCQkvLyBTdG9yZSByZWFsIHZlcnNpb24gbnVtYm
VyICh4LngueCksIHN0cmlwcGluZyBvdXQgYWRkaXRpb25hbCB0ZXh0LgoJCQkJaWYgKCB0cnVlID09PSAkd
mVyc2lvbl9pbmZvWydpc19tYXJpYWRiJ10gJiYgcHJlZ19tYXRjaCggJy8oLlxkK1wtKVxLKFxkK1wuKShc
ZCtcLikoXGQrKS8nLCAkdmVyc2lvbl9pbmZvWydkYl92ZXJzaW9uJ10sICRtYXJpYV9kYl92ZXJzaW9uICk
gKSB7CgkJCQkJLy8gTWFyaWFEQiBtYXkgbG9vayBsaWtlIDUuNS41LTEwLngueC1NYXJpYURCfiBzbyBjaG
VjayBmb3IgdGhpcyBmb3JtYXQgZmlyc3QuCgkJCQkJJHZlcnNpb25faW5mb1sndmVyc2lvbiddID0gJG1hc
mlhX2RiX3ZlcnNpb25bMF07CgkJCQl9IGVsc2VpZiAoIHByZWdfbWF0Y2goICcvKFxkK1wuKShcZCtcLiko
XGQrKS8nLCAkdmVyc2lvbl9pbmZvWydkYl92ZXJzaW9uJ10sICRyYXdfZGJfdmVyc2lvbiApICkgewoJCQk
JCS8vIElmIG5vdCBwcmVmaXhlZCB3aXRoIDUuNS41LSwganVzdCBnZXQgdGhlIGZpcnN0IHNlbWFudGljIH
ZlcnNpb24gbnVtYmVyLgoJCQkJCSR2ZXJzaW9uX2luZm9bJ3ZlcnNpb24nXSA9ICRyYXdfZGJfdmVyc2lvb
lswXTsKCQkJCX0gZWxzZSB7CgkJCQkJLy8gRmFsbGJhY2sgb24gd2hhdGV2ZXIgJHdwZGIgcmV0dXJucy4K
CQkJCQkkdmVyc2lvbl9pbmZvWyd2ZXJzaW9uJ10gPSAkd3BkYi0+ZGJfdmVyc2lvbigpOwoJCQkJfQoJCQl
9CgoJCQlpZiAoIGNvdW50KCAkdmVyc2lvbl9pbmZvICkgPiAwICkgewoJCQkJLy8gU3RvcmUgaW4gT2JqZW
N0IGNhY2hlLgoJCQkJc2VsZjo6Y2FjaGVfc2V0KCAnZGJfdmVyc2lvbl9pbmZvJywgJHZlcnNpb25faW5mb
yApOwoJCQl9CgoJCQlzZWxmOjokaGFzX2luaXQgPSB0cnVlOwoJCX0KCgkJcmV0dXJuICR2ZXJzaW9uX2lu
Zm87Cgl9CgoJLyoqCgkgKiBDaGVja3MgaWYgc2VydmVyIGlzIHJ1bm5pbmcgTWFyaWFEQi4KCSAqCgkgKiB
AcmV0dXJuIGJvb2wgIElmIE1hcmlhREIgaXMgYmVpbmcgdXNlZC4KCSAqLwoJcHVibGljIHN0YXRpYyBmdW
5jdGlvbiBpc19tYXJpYV9kYigpIHsKCQlpZiAoIGZhbHNlID09PSBzZWxmOjokaGFzX2luaXQgKSB7CgkJC
XNlbGY6OmdldF9kYl92ZXJzaW9uX2luZm8oKTsKCQl9CgkJcmV0dXJuIHNlbGY6OiRpc19tYXJpYV9kYjsK
CX0KCgkvKioKCSAqIENoZWNrcyBpZiBzZXJ2ZXIgaXMgcnVubmluZyBNeVNRTC4KCSAqCgkgKiBAcmV0dXJ
uIGJvb2wgIElmIE15U1FMIGlzIGJlaW5nIHVzZWQuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaX
NfbXlzcWwoKSB7CgkJaWYgKCBmYWxzZSA9PT0gc2VsZjo6JGhhc19pbml0ICkgewoJCQlzZWxmOjpnZXRfZ
GJfdmVyc2lvbl9pbmZvKCk7CgkJfQoJCXJldHVybiBzZWxmOjokaXNfbXlzcWw7Cgl9CgoJLyoqCgkgKiBH
ZXRzIFJlYWwgREIgVmVyc2lvbiwgZWl0aGVyIE1hcmlhREIgb3IgTXlTUUwgdmVyc2lvbi4KCSAqCgkgKiB
AcmV0dXJuIHN0cmluZyAgVmVyc2lvbiBvZiBNYXJpYURCIG9yIE15U1FMLgoJICovCglwdWJsaWMgc3RhdG
ljIGZ1bmN0aW9uIGdldF9kYl92ZXJzaW9uKCkgewoJCSR2ZXJzaW9uX2luZm8gPSBzZWxmOjpnZXRfZGJfd
mVyc2lvbl9pbmZvKCk7CgkJaWYgKCBpc3NldCggJHZlcnNpb25faW5mb1sndmVyc2lvbiddICkgKSB7CgkJ
CXJldHVybiAkdmVyc2lvbl9pbmZvWyd2ZXJzaW9uJ107CgkJfQoJCWdsb2JhbCAkd3BkYjsKCQlyZXR1cm4
gJHdwZGItPmRiX3ZlcnNpb24oKTsKCX0KfQo=
###PACKDATA,FILE_END,/pluginbuddy/classes/class-pb-backupbuddy-db-
helpers.php,importbuddy/pluginbuddy/classes/class-pb-backupbuddy-db-helpers.php
###PACKDATA,FILE_START,/pluginbuddy/classes/core_controllers.php,importbuddy/plugin
buddy/classes/core_controllers.php
PD9waHAKLyoqCiAqIENvcmUgQ29udHJvbGxlciBDbGFzc2VzCiAqCiAqIEB0b2RvIEJyZWFrIGludG8gc2V
wYXJhdGUgY2xhc3MgZmlsZXMuCiAqCiAqIEBwYWNrYWdlIEJhY2t1cEJ1ZGR5CiAqLwoKLyoqCiAqIEhhbm
RsZXMgYWN0aW9ucy4gQ3VycmVudGx5IGp1c3QgcmVwb3J0cyBpZiBhY3Rpb25zIHdlcmUgcmVnaXN0ZXJlZ
CBhbmQgY2FsbGVkIGJ1dCB0aGUgY2FsbGJhY2sgd2FzIG1pc3NpbmcuCiAqLwpjbGFzcyBwYl9iYWNrdXBi
dWRkeV9hY3Rpb25zY29yZSB7CgoJLyoqCgkgKiBNYWdpYyBtZXRob2QgaWYgYSBtZXRob2QgaXMgY2FsbGV
kIHRoYXQgZG9lcyBub3QgZXhpc3QuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkbmFtZSAgICAgICBGdW5jdG
lvbiBuYW1lLgoJICogQHBhcmFtIGFycmF5ICAkYXJndW1lbnRzICBBcnJheSBvZiBhcmd1bWVudHMgcGFzc
2VkIHRvIGZ1bmN0aW9uLgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCAkbmFtZSwgJGFyZ3VtZW50
cyApIHsKCQllY2hvICd7TWlzc2luZyBhY3Rpb25zIG1ldGhvZCBgJyAuICRuYW1lIC4gJ2AufSc7Cgl9IC8
vIEVuZCBfX2NhbGwoKS4KCn0gLy8gRW5kIGNsYXNzIHBiX2JhY2t1cGJ1ZGR5X2FjdGlvbnMuCgovKioKIC
ogSGFuZGxlcyBhamF4LiBDdXJyZW50bHkganVzdCByZXBvcnRzIGlmIGFqYXggd2FzIHJlZ2lzdGVyZWQgY
W5kIGNhbGxlZCBidXQgdGhlIGNhbGxiYWNrIHdhcyBtaXNzaW5nLgogKi8KY2xhc3MgcGJfYmFja3VwYnVk
ZHlfYWpheGNvcmUgewoKCS8qKgoJICogTWFnaWMgbWV0aG9kIGlmIGEgbWV0aG9kIGlzIGNhbGxlZCB0aGF
0IGRvZXMgbm90IGV4aXN0LgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgICAgICAgRnVuY3Rpb24gbm
FtZS4KCSAqIEBwYXJhbSBhcnJheSAgJGFyZ3VtZW50cyAgQXJyYXkgb2YgYXJndW1lbnRzIHBhc3NlZCB0b
yBmdW5jdGlvbi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY2FsbCggJG5hbWUsICRhcmd1bWVudHMgKSB7
CgkJZGllKCAne01pc3NpbmcgYWpheCBtZXRob2QgYCcgLiAkbmFtZSAuICdgLn0nICk7Cgl9IC8vIEVuZCB
fX2NhbGwoKS4KCn0gLy8gRW5kIGNsYXNzIHBiX2JhY2t1cGJ1ZGR5X2FqYXguCgovKioKICogSGFuZGxlcy
Bjcm9ucy4gQ3VycmVudGx5IGp1c3QgcmVwb3J0cyBpZiBjcm9ucyB3ZXJlIHJlZ2lzdGVyZWQgYW5kIGNhb
GxlZCBidXQgdGhlIGNhbGxiYWNrIHdhcyBtaXNzaW5nLgogKi8KY2xhc3MgcGJfYmFja3VwYnVkZHlfY3Jv
bmNvcmUgewoKCS8qKgoJICogTWFnaWMgbWV0aG9kIGlmIGEgbWV0aG9kIGlzIGNhbGxlZCB0aGF0IGRvZXM
gbm90IGV4aXN0LgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgICAgICAgRnVuY3Rpb24gbmFtZS4KCS
AqIEBwYXJhbSBhcnJheSAgJGFyZ3VtZW50cyAgQXJyYXkgb2YgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jd
Glvbi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIF9fY2FsbCggJG5hbWUsICRhcmd1bWVudHMgKSB7CgkJZGll
KCAne01pc3NpbmcgY3JvbiBtZXRob2QgYCcgLiAkbmFtZSAuICdgLn0nICk7Cgl9IC8vIEVuZCBfX2NhbGw
oKS4KCn0gLy8gRW5kIGNsYXNzIGJhY2t1cGJ1ZGR5X2Nyb24uCgovKioKICogSGFuZGxlcyBkYXNoYm9hcm
Qgd2lkZ2V0cyAob24gbWFpbiBhZG1pbiBzY3JlZW4pLiBSZXBvcnRzIGlmIGFkbWluIGRhc2hib2FyZCB3a
WRnZXRzIHdlcmUgcmVnaXN0ZXJlZCBhbmQgY2FsbGVkIGJ1dCB0aGUgY2FsbGJhY2sgd2FzIG1pc3Npbmcu
CiAqIEFsc28gaGFuZGxlcyB0aGUgYWN0dWFsIHJlZ2lzdGVyaW5nIG9mIHRoZSB3aWRnZXRzLgogKi8KY2x
hc3MgcGJfYmFja3VwYnVkZHlfZGFzaGJvYXJkY29yZSB7CgoJLyoqCgkgKiBNYWdpYyBtZXRob2QgaWYgYS
BtZXRob2QgaXMgY2FsbGVkIHRoYXQgZG9lcyBub3QgZXhpc3QuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkb
mFtZSAgICAgICBGdW5jdGlvbiBuYW1lLgoJICogQHBhcmFtIGFycmF5ICAkYXJndW1lbnRzICBBcnJheSBv
ZiBhcmd1bWVudHMgcGFzc2VkIHRvIGZ1bmN0aW9uLgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19jYWxsKCA
kbmFtZSwgJGFyZ3VtZW50cyApIHsKCQlkaWUoICd7TWlzc2luZyBkYXNoYm9hcmQgbWV0aG9kIGAnIC4gJG
5hbWUgLiAnYC59JyApOwoJfSAvLyBFbmQgX19jYWxsKCkuCgoJLyoqCgkgKiBDYWxsZWQgYmFjayBieSBXb
3JkUHJlc3MgdG8gYWN0dWFsbHkgcmVnaXN0ZXIgdGhlIGRhc2hib2FyZCB3aWRnZXQgaW4gdGhlIGFkbWlu
LgoJICovCglwdWJsaWMgZnVuY3Rpb24gcmVnaXN0ZXJfd2lkZ2V0cygpIHsKCQlmb3JlYWNoICggcGJfYmF
ja3VwYnVkZHk6OiRfZGFzaGJvYXJkX3dpZGdldHMgYXMgJHdpZGdldCApIHsKCgkJCWlmICggJ2dvZG1vZG
UnID09PSAkd2lkZ2V0WydjYXBhYmlsaXR5J10gKSB7IC8vIGdvZG1vZGUgY2FwYWJpbHRpeS4KCQkJCWlmI
CggaXNfbXVsdGlzaXRlKCkgJiYgYmFja3VwYnVkZHlfY29yZTo6aXNfbmV0d29ya19hY3RpdmF0ZWQoKSAp
IHsgLy8gSW4gYSBuZXR3b3JrIGluc3RhbGxhdGlvbi4KCQkJCQlpZiAoICEgY3VycmVudF91c2VyX2Nhbig
gJ21hbmFnZV9uZXR3b3JrJyApICkgewoJCQkJCQljb250aW51ZTsgLy8gU2tpcCB0aGlzIHdpZGdldC4gQW
NjZXNzIGRlbmllZCB0byBpdC4KCQkJCQl9CgkJCQl9IGVsc2UgeyAvLyBTdGFuZGFsb25lLgoJCQkJCWlmI
CggISBjdXJyZW50X3VzZXJfY2FuKCAnYWN0aXZhdGVfcGx1Z2lucycgKSApIHsKCQkJCQkJY29udGludWU7
IC8vIFNraXAgdGhpcyB3aWRnZXQuIEFjY2VzcyBkZW5pZWQgdG8gaXQuCgkJCQkJfQoJCQkJfQoJCQl9IGV
sc2UgeyAvLyBXUCBjYXBhYmlsaXR5LgoJCQkJaWYgKCAhIGN1cnJlbnRfdXNlcl9jYW4oICR3aWRnZXRbJ2
NhcGFiaWxpdHknXSApICkgewoJCQkJCWNvbnRpbnVlOyAvLyBTa2lwIHRoaXMgd2lkZ2V0LiBBY2Nlc3MgZ
GVuaWVkIHRvIGl0LgoJCQkJfQoJCQl9CgoJCQkkd2lkZ2V0X3NsdWcgPSAncGJfJyAuIHBiX2JhY2t1cGJ1
ZGR5OjpzZXR0aW5ncyggJ3NsdWcnICkgLiAnXycgLiAkd2lkZ2V0Wyd0YWcnXTsKCQkJd3BfYWRkX2Rhc2h
ib2FyZF93aWRnZXQoICR3aWRnZXRfc2x1ZywgJHdpZGdldFsndGl0bGUnXSwgYXJyYXkoICR0aGlzLCAkd2
lkZ2V0Wyd0YWcnXSApICk7CgoJCQkvLyBJZiBmb3JjZSB0b3AgaXMgZW5hYmxlZCB0aGVuIHdlIHdpbGwgY
XR0ZW1wdCB0byBmb3JjZSB0aGUgd2lkZ2V0IHRvIHRoZSB0b3AgaWYgcG9zc2libGUuCgkJCWlmICggaXNz
ZXQoICR3aWRnZXRbJ2ZvcmNlX3RvcCddICkgJiYgdHJ1ZSA9PT0gJHdpZGdldFsnZm9yY2VfdG9wJ10gKSB
7CgkJCQkvLyBOb3RlOiBPbmx5IHdvcmtzIGlmIHVzZXJzIGhhdmUgbmV2ZXIgcmUtYXJyYW5nZWQgdGhlaX
IgZGFzaGJvYXJkIHdpZGdldHMuCgkJCQlnbG9iYWwgJHdwX21ldGFfYm94ZXM7CgkJCQkkbm9ybWFsX2Rhc
2hib2FyZCA9ICR3cF9tZXRhX2JveGVzWydkYXNoYm9hcmQnXVsnbm9ybWFsJ11bJ2NvcmUnXTsKCQkJCSR3
aWRnZXRfYmFja3VwICAgID0gYXJyYXkoICR3aWRnZXRfc2x1ZyA9PiAkbm9ybWFsX2Rhc2hib2FyZFsgJHd
pZGdldF9zbHVnIF0gKTsgLy8gU2F2ZSBjb3B5IG9mIG91ciB3aWRnZXQuCgkJCQl1bnNldCggJG5vcm1hbF
9kYXNoYm9hcmRbICR3aWRnZXRfc2x1ZyBdICk7IC8vIERlbGV0ZSBvdXIgd2lkZ2V0LgoJCQkJJHdwX21ld
GFfYm94ZXNbJ2Rhc2hib2FyZCddWydub3JtYWwnXVsnY29yZSddID0gYXJyYXlfbWVyZ2UoICR3aWRnZXRf
YmFja3VwLCAkbm9ybWFsX2Rhc2hib2FyZCApOyAvLyBNZXJnZSBvdXIgd2lkZ2V0IGludG8gdGhlIHRvcC4
KCQkJfQoJCX0KCX0gLy8gRW5kIHJlZ2lzdGVyX3dpZGdldHMoKS4KCn0gLy8gRW5kIGNsYXNzIHBiX2JhY2
t1cGJ1ZGR5X2Rhc2hib2FyZC4KCi8qKgogKiBIYW5kbGVzIGZpbHRlcnMuIEN1cnJlbnRseSBqdXN0IHJlc
G9ydHMgaWYgZmlsdGVycyB3ZXJlIHJlZ2lzdGVyZWQgYW5kIGNhbGxlZCBidXQgdGhlIGNhbGxiYWNrIHdh
cyBtaXNzaW5nLgogKi8KY2xhc3MgcGJfYmFja3VwYnVkZHlfZmlsdGVyc2NvcmUgewoKCS8qKgoJICogTWF
naWMgbWV0aG9kIGlmIGEgbWV0aG9kIGlzIGNhbGxlZCB0aGF0IGRvZXMgbm90IGV4aXN0LgoJICoKCSAqIE
BwYXJhbSBzdHJpbmcgJG5hbWUgICAgICAgRnVuY3Rpb24gbmFtZS4KCSAqIEBwYXJhbSBhcnJheSAgJGFyZ
3VtZW50cyAgQXJyYXkgb2YgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbi4KCSAqCgkgKiBAcmV0dXJu
IFt0eXBlXSBbZGVzY3JpcHRpb25dCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoICRuYW1lLCAkYXJ
ndW1lbnRzICkgewoJCXJldHVybiAne01pc3NpbmcgZmlsdGVycyBtZXRob2QgYCcgLiAkbmFtZSAuICdgLn
0nOwoJfSAvLyBFbmQgX19jYWxsKCkuCgp9IC8vIEVuZCBjbGFzcyBwYl9iYWNrdXBidWRkeV9maWx0ZXJzL
goKLyoqCiAqIEhhbmRsZXMgYWRtaW4gcGFnZXMuIFJlcG9ydHMgaWYgcGFnZXMgd2VyZSByZWdpc3RlcmVk
IGFuZCBjYWxsZWQgYnV0IHRoZSBjYWxsYmFjayB3YXMgbWlzc2luZy4KICogQWxzbyBwcm92aWRlcyBsb2F
kX2NvbnRyb2xsZXIoKSBmdW5jdGlvbiBmb3IgcGFnZXMgdG8gY2FsbCB0byBsb2FkIGEgY29udHJvbGxlci
B3aGlsZSBpbiB0aGUgY29udHJvbGxlci4KICovCmNsYXNzIHBiX2JhY2t1cGJ1ZGR5X3BhZ2VzY29yZSB7C
goJLyoqCgkgKiBNYWdpYyBtZXRob2QgaWYgYSBtZXRob2QgaXMgY2FsbGVkIHRoYXQgZG9lcyBub3QgZXhp
c3QuCgkgKiBBdHRlbXB0cyB0byBsb2FkIGEgY29udHJvbGxlciBwYWdlIG1hdGNoaW5nIHRoZSBtZXRob2Q
gbmFtZSBpZiBwb3NzaWJsZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICAgICAgIEZ1bmN0aW9uIG
5hbWUuCgkgKiBAcGFyYW0gYXJyYXkgICRhcmd1bWVudHMgIEFycmF5IG9mIGFyZ3VtZW50cyBwYXNzZWQgd
G8gZnVuY3Rpb24uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NhbGwoICRuYW1lLCAkYXJndW1lbnRzICkg
ewoJCSRwYWdlX2ZpbGUgPSBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvY29udHJvbGxlcnM
vcGFnZXMvJyAuICRuYW1lIC4gJy5waHAnOwoJCWlmICggJ2dldHRpbmdfc3RhcnRlZCcgPT09ICRuYW1lIC
kgewoJCQkkcGFnZV9maWxlID0gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL3BsdWdpbmJ1Z
GR5L18nIC4gJG5hbWUgLiAnLnBocCc7CgkJfQoKCQlpZiAoIGZpbGVfZXhpc3RzKCAkcGFnZV9maWxlICkg
KSB7IC8vIExvYWQgZnJvbSAvY29udHJvbGxlcnMvcGFnZXMvUEFHRS5waHAgaWYgaXQgZXhpc3RzLgoKCQk
JLy8gRGlzcGxheSBwYWdlLgoJCQlwYl9iYWNrdXBidWRkeTo6bG9hZF9zY3JpcHQoICdhZG1pbi5qcycsIH
RydWUgKTsKCQkJcGJfYmFja3VwYnVkZHk6OmxvYWRfc3R5bGUoICdhZG1pbi5jc3MnICk7CgkJCXBiX2JhY
2t1cGJ1ZGR5Ojpsb2FkX3NjcmlwdCggJ2pxdWVyeS11aS10b29sdGlwJywgZmFsc2UgKTsKCQkJcGJfYmFj
a3VwYnVkZHk6OmxvYWRfc3R5bGUoICdqUXVlcnktdWktMS4xMS4yLmNzcycsIHRydWUgKTsKCQkJZWNobyA
nPGRpdiBjbGFzcz0id3JhcCI+JzsKCQkJcmVxdWlyZV9vbmNlICRwYWdlX2ZpbGU7CgkJCWVjaG8gJzwvZG
l2Pic7CgkJfSBlbHNlIHsgLy8gTm90IGZvdW5kLgoJCQllY2hvICd7TWlzc2luZyBwYWdlcyBtZXRob2QgY
CcgLiAkbmFtZSAuICdgLn0nOwoJCX0KCX0gLy8gRW5kIF9fY2FsbCgpLgoKCS8qKgoJICogTG9hZCBhIGNv
bnRyb2xsZXIgZnJvbSB3aXRoaW4gYSBwYWdlICh3aGljaCBpcyBsb2FkZWQgYnkgYSBjb250cm9sbGVyIGl
0c2VsZikuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkcGFnZSAgTmFtZSBvZiB0aGUgcGFnZS4gTG9hZHMgcG
FnZSBmcm9tIC9jb250cm9sbGVycy9wYWdlcy9OQU1FLnBocC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGxvY
WRfY29udHJvbGxlciggJHBhZ2UgKSB7CgkJJHBhZ2VfcGF0aCA9IHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5f
cGF0aCgpIC4gJy9jb250cm9sbGVycy9wYWdlcy8nIC4gJHBhZ2UgLiAnLnBocCc7CgkJaWYgKCBmaWxlX2V
4aXN0cyggJHBhZ2VfcGF0aCApICkgewoJCQlyZXF1aXJlX29uY2UgJHBhZ2VfcGF0aDsKCQl9IGVsc2Ugew
oJCQllY2hvICd7RXJyb3I6IFVuYWJsZSB0byBsb2FkIHBhZ2UgY29udHJvbGxlciBgJyAuICRwYWdlIC4gJ
2A7IGZpbGUgbm90IGZvdW5kLn0nOwoJCX0KCX0KCn0gLy8gRW5kIGNsYXNzIHBiX2JhY2t1cGJ1ZGR5X3Bh
Z2VzLgoKCi8qKgogKiBIYW5kbGVzIHNob3J0Y29kZXMuIEN1cnJlbnRseSBqdXN0IHJlcG9ydHMgaWYgc2h
vcnRjb2RlcyB3ZXJlIHJlZ2lzdGVyZWQgYW5kIGNhbGxlZCBidXQgdGhlIGNhbGxiYWNrIHdhcyBtaXNzaW
5nLgogKi8KY2xhc3MgcGJfYmFja3VwYnVkZHlfc2hvcnRjb2Rlc2NvcmUgewoKCS8qKgoJICogTWFnaWMgb
WV0aG9kIGlmIGEgbWV0aG9kIGlzIGNhbGxlZCB0aGF0IGRvZXMgbm90IGV4aXN0LgoJICoKCSAqIEBwYXJh
bSBzdHJpbmcgJG5hbWUgICAgICAgRnVuY3Rpb24gbmFtZS4KCSAqIEBwYXJhbSBhcnJheSAgJGFyZ3VtZW5
0cyAgQXJyYXkgb2YgYXJndW1lbnRzIHBhc3NlZCB0byBmdW5jdGlvbi4KCSAqLwoJcHVibGljIGZ1bmN0aW
9uIF9fY2FsbCggJG5hbWUsICRhcmd1bWVudHMgKSB7CgkJcmV0dXJuICd7TWlzc2luZyBzaG9ydGNvZGVzI
G1ldGhvZCBgJyAuICRuYW1lIC4gJ2AufSc7Cgl9IC8vIEVuZCBfX2NhbGwoKS4KCn0gLy8gRW5kIGNsYXNz
IHBiX2JhY2t1cGJ1ZGR5X3Nob3J0Y29kZXMuCg==
###PACKDATA,FILE_END,/pluginbuddy/classes/core_controllers.php,importbuddy/pluginbu
ddy/classes/core_controllers.php
###PACKDATA,FILE_START,/pluginbuddy/classes/filesystem.php,importbuddy/pluginbuddy/
classes/filesystem.php
PD9waHAKLyoqCiAqIEhhbmRsZXMgaW50ZXJmYWNpbmcgd2l0aCB0aGUgZmlsZSBzeXN0ZW0uCiAqCiAqIEB
hdXRob3IgRHVzdGluIEJvbHRvbgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8KCi8qKgogKiBGaWxlIF
N5c3RlbSBDbGFzcwogKi8KY2xhc3MgcGJfYmFja3VwYnVkZHlfZmlsZXN5c3RlbSB7CgoJLyoqCgkgKiBBI
G1rZGlyIGZ1bmN0aW9uIHRoYXQgZGVmYXVsdHMgdG8gcmVjdXJzaXZlIGJlaGF2aW91ci4gOTklIG9mIHRo
ZSB0aW1lIHRoaXMgaXMgd2hhdCB3ZSB3YW50LgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHBhdGhuYW1lICA
gUGF0aCBvZiBkaXJlY3RvcnkgdG8gY3JlYXRlLgoJICogQHBhcmFtIGludCAgICAkbW9kZSAgICAgICBEZW
ZhdWx0OiAwNzU1LiBTZWUgUEhQJ3MgbWtkaXIoKSBmdW5jdGlvbiBmb3IgZGV0YWlscy4KCSAqIEBwYXJhb
SBib29sICAgJHJlY3Vyc2l2ZSAgRGVmYXVsdDogdHJ1ZS4gU2VlIFBIUCdzIG1rZGlyKCkgZnVuY3Rpb24g
Zm9yIGRldGFpbHMuCgkgKgoJICogQHJldHVybiBib29sICBSZXR1cm5zIFRSVUUgb24gc3VjY2VzcyBvciB
GQUxTRSBvbiBmYWlsdXJlLgoJICovCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1rZGlyKCAkcGF0aG5hbW
UsICRtb2RlID0gMDc1NSwgJHJlY3Vyc2l2ZSA9IHRydWUgKSB7CgkJLy8gQXR0ZW1wdCB0byBtYWtlIHRoZ
SBkaXJlY3Rvcnkgd2l0aCB0aGUgcGFzc2VkIG1vZGUKCQkkcmVzdWx0ID0gQG1rZGlyKCAkcGF0aG5hbWUs
ICRtb2RlLCAkcmVjdXJzaXZlICk7CgoJCS8vIFNwZWNpZmljYWxseSBjaG1vZCB0aGUgZGlyZWN0b3J5IHR
vIHRoZSBjb3JyZWN0IG1vZGUuIFRoaXMgaXMgbmVlZGVkIG9uIHNvbWUgc3lzdGVtcy4KCQlpZiAoIHRydW
UgPT0gJHJlc3VsdCApIHsKCQkJQGNobW9kKCAkcGF0aG5hbWUsICRtb2RlICk7CgkJfQoJCXJldHVybiAkc
mVzdWx0OwoJfSAvLyBFbmQgbWtkaXIoKS4KCgkvKioKCSAqIFVubGluayBhIGRpcmVjdG9yeSByZWN1cnNp
dmVseS4gRmlsZXMgYWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB3aXRoaW4uIFVTRSBXSVRIIENBVVRJT04
uCgkgKgoJICogQHBhcmFtIHN0cmluZyAkZGlyICBEaXJlY3RvcnkgdG8gZGVsZXRlIC0tIGFsbCBjb250ZW
50cyB3aXRoaW4sIHN1YmRpcmVjdG9yaWVzLCBmaWxlcywgZXRjIHdpbGwgYmUgcGVybWFuZW50bHkgZGVsZ
XRlZC4KCSAqCgkgKiBAcmV0dXJuIGJvb2wgIFRydWUgb24gc3VjY2VzczsgZWxzZSBmYWxzZS4KCSAqLwoJ
cHVibGljIGZ1bmN0aW9uIHVubGlua19yZWN1cnNpdmUoICRkaXIgKSB7CgkJaWYgKCBkZWZpbmVkKCAnUEJ
fREVNT19NT0RFJyApICkgewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoICEgZmlsZV9leGlzdHMoIC
RkaXIgKSApIHsKCQkJcmV0dXJuIHRydWU7CgkJfQoJCWlmICggISBpc19kaXIoICRkaXIgKSB8fCBpc19sa
W5rKCAkZGlyICkgKSB7CgkJCUBjaG1vZCggJGRpciwgMDc3NyApOwoJCQlyZXR1cm4gdW5saW5rKCAkZGly
ICk7CgkJfQoJCWZvcmVhY2ggKCBzY2FuZGlyKCAkZGlyICkgYXMgJGl0ZW0gKSB7CgkJCWlmICggJy4nID0
9ICRpdGVtIHx8ICcuLicgPT0gJGl0ZW0gKSB7CgkJCQljb250aW51ZTsKCQkJfQoJCQlpZiAoICEgJHRoaX
MtPnVubGlua19yZWN1cnNpdmUoICRkaXIgLiAnLycgLiAkaXRlbSApICkgewoJCQkJQGNobW9kKCAkZGlyI
C4gJy8nIC4gJGl0ZW0sIDA3NzcgKTsKCQkJCWlmICggISAkdGhpcy0+dW5saW5rX3JlY3Vyc2l2ZSggJGRp
ciAuICcvJyAuICRpdGVtICkgKSB7CgkJCQkJcmV0dXJuIGZhbHNlOwoJCQkJfQoJCQl9CgkJfQoJCXJldHV
ybiBAcm1kaXIoICRkaXIgKTsKCX0gLy8gRW5kIHVubGlua19yZWN1cnNpdmUoKS4KCgkvKioKCSAqIExpa2
UgdGhlIGdsb2IoKSBmdW5jdGlvbiBleGNlcHQgd2Fsa3MgZG93biBpbnRvIHBhdGhzIHRvIGNyZWF0ZSBhI
GZ1bGwgbGlzdGluZyBvZiBhbGwgcmVzdWx0cyBpbiB0aGUgZGlyZWN0b3J5IGFuZCBhbGwgc3ViZGlyZWN0
b3JpZXMuCgkgKiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgcmVjdXJzaXZlIGdsb2IoKSBhbHRob3VnaCBpdCB
kb2VzIG5vdCB1c2UgcmVjdXJzaW9uIHRvIHBlcmZvcm0gdGhpcy4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nIC
RkaXIgICAgICAgUGF0aCB0byBwYXNzIHRvIGdsb2IgYW5kIHdhbGsgdGhyb3VnaC4KCSAqIEBwYXJhbSBhc
nJheSAgJGV4Y2x1ZGVzICBBcnJheSBvZiBkaXJlY3RvcmllcyB0byBleGNsdWRlLCByZWxhdGl2ZSB0byB0
aGUgJGRpci4gIEluY2x1ZGUgYmVnaW5uaW5nIHNsYXNoLiBObyB0cmFpbGluZyBzbGFzaC4KCSAqCgkgKiB
AcmV0dXJuIGFycmF5ICBSZXR1cm5zIGFycmF5IG9mIGFsbCBtYXRjaGVzIGZvdW5kLgoJICovCglwdWJsaW
MgZnVuY3Rpb24gZGVlcGdsb2IoICRkaXIsICRleGNsdWRlcyA9IGFycmF5KCkgKSB7CgkJJGRpciAgICAgI
D0gcnRyaW0oICRkaXIsICcvXFwnICk7IC8vIE1ha2Ugc3VyZSBubyB0cmFpbGluZyBzbGFzaC4KCQkkZXhj
bHVkZXMgPSBzdHJfcmVwbGFjZSggJGRpciwgJycsICRleGNsdWRlcyApOwoJCSRkaXJfbGVuICA9IHN0cmx
lbiggJGRpciApOwoKCQkkaXRlbXMgPSBnbG9iKCAkZGlyIC4gJy8qJyApOwoJCWlmICggZmFsc2UgPT09IC
RpdGVtcyApIHsKCQkJJGl0ZW1zID0gYXJyYXkoKTsKCQl9CgkJZm9yICggJGkgPSAwOyAkaSA8IGNvdW50K
CAkaXRlbXMgKTsgJGkrKyApIHsgLy8gJGl0ZW1zIGNoYW5nZXMgd2l0aGluIGxvb3AuCgkJCS8vIElmIHRo
aXMgZmlsZS9kaXJlY3RvcnkgYmVnaW5zIHdpdGggYW4gZXhjbHVzaW9uIHRoZW4ganVtcCB0byBuZXh0IGZ
pbGUvZGlyZWN0b3J5LgoJCQlmb3JlYWNoICggJGV4Y2x1ZGVzIGFzICRleGNsdWRlICkgewoJCQkJaWYgKC
BiYWNrdXBidWRkeV9jb3JlOjpzdGFydHNXaXRoKCBzdWJzdHIoICRpdGVtc1sgJGkgXSwgJGRpcl9sZW4gK
SwgJGV4Y2x1ZGUgKSApIHsKCQkJCQl1bnNldCggJGl0ZW1zWyAkaSBdICk7CgkJCQkJY29udGludWUgMjsK
CQkJCX0KCQkJfQoKCQkJaWYgKCBpc19kaXIoICRpdGVtc1sgJGkgXSApICkgewoJCQkJJGFkZCA9IGdsb2I
oICRpdGVtc1sgJGkgXSAuICcvKicgKTsKCQkJCWlmICggZmFsc2UgPT09ICRhZGQgKSB7CgkJCQkJJGFkZC
A9IGFycmF5KCk7CgkJCQl9CgkJCQkkaXRlbXMgPSBhcnJheV9tZXJnZSggJGl0ZW1zLCAkYWRkICk7CgkJC
X0KCQl9CgoJCXJldHVybiAkaXRlbXM7Cgl9IC8vIEVuZCBkZWVwZ2xvYigpLgoKCS8qKgoJICogTGlrZSB0
aGUgZ2xvYigpIGZ1bmN0aW9uIGV4Y2VwdCB3YWxrcyBkb3duIGludG8gcGF0aHMgdG8gY3JlYXRlIGEgZnV
sbCBsaXN0aW5nIG9mIGFsbCByZXN1bHRzIGluIHRoZSBkaXJlY3RvcnkgYW5kIGFsbCBzdWJkaXJlY3Rvcm
llcy4KCSAqIFRoaXMgaXMgZXNzZW50aWFsbHkgYSByZWN1cnNpdmUgZ2xvYigpIGFsdGhvdWdoIGl0IGRvZ
XMgbm90IHVzZSByZWN1cnNpb24gdG8gcGVyZm9ybSB0aGlzLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGRp
ciAgICAgICAgIFBhdGggdG8gcGFzcyB0byBnbG9iIGFuZCB3YWxrIHRocm91Z2guCgkgKiBAcGFyYW0gYXJ
yYXkgICRleGNsdWRlcyAgICBBcnJheSBvZiBkaXJlY3RvcmllcyB0byBleGNsdWRlLCByZWxhdGl2ZSB0by
B0aGUgJGRpci4gIEluY2x1ZGUgYmVnaW5uaW5nIHNsYXNoLiBObyB0cmFpbGluZyBzbGFzaC4KCSAqIEBwY
XJhbSBpbnQgICAgJHN0YXJ0X2F0ICAgIE9mZnNldCB0byBzdGFydCBjYWxjdWxhdGluZyBmcm9tIGZvciBy
ZXN1bWVkIGNodW5raW5nLiAkaXRlbXMgbXVzdCBhbHNvIGJlIHBhc3NlZCBmcm9tIHByZXZpb3VzIHJ1bi4
KCSAqIEBwYXJhbSBhcnJheSAgJGl0ZW1zICAgICAgIEFycmF5IG9mIGl0ZW1zIHRvIHVzZSBmb3IgcmVzdW
1pbmcuIFJldHVybmVkIGJ5IHRoaXMgZnVuY3Rpb24gd2hlbiBjaHVua2luZy4KCSAqIEBwYXJhbSBpbnQgI
CAgJHN0YXJ0X3RpbWUgIFRpbWVzdGFtcCB0byBjYWxjdWxhdGUgZWxhcHNlZCBydW50aW1lIGZyb20uCgkg
KiBAcGFyYW0gaW50ICAgICRtYXhfdGltZSAgICBNYXggc2Vjb25kcyB0byBydW4gZm9yIGJlZm9yZSByZXR
1cm5pbmcgZm9yIGNodW5raW5nIGlmIGFwcHJvYWNoaW5nLiBaZXJvICgwKSB0byBkaXNhYmxpbmcgY2h1bm
tpbmcuIElNUE9SVEFOVDogRG9lcyBfTk9UXyBhcHBseSBhIHdpZ2dsZSByb29tLiBTdWJ0cmFjdCB3aWdnb
GUgZnJvbSAkbWF4X3RpbWUgYmVmb3JlIHBhc3NpbmcuCgkgKgoJICogQHJldHVybiBhcnJheXxzdHJpbmcg
IFN0cmluZyBlcnJvciBtZXNzYWdlIE9SIFJldHVybnMgYXJyYXkgb2YgYWxsIG1hdGNoZXMgZm91bmQgT1I
gYXJyYXkoICRmaW5pc2hlZCA9IGZhbHNlLCBhcnJheSggJHN0YXJ0X2F0LCAkaXRlbXMgKSApIGlmIGNodW
5raW5nIGR1ZSB0byBydW5uaW5nIG91dCBvZiB0aW1lLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZGVlcHNjY
W5kaXIoICRkaXIsICRleGNsdWRlcyA9IGFycmF5KCksICRzdGFydF9hdCA9IDAsICRpdGVtcyA9IGFycmF5
KCksICRzdGFydF90aW1lID0gMCwgJG1heF90aW1lID0gMCApIHsKCgkJJGRpciAgICAgID0gcnRyaW0oICR
kaXIsICcvXFwnICk7IC8vIE1ha2Ugc3VyZSBubyB0cmFpbGluZyBzbGFzaC4KCQkkZXhjbHVkZXMgPSBzdH
JfcmVwbGFjZSggJGRpciwgJycsICRleGNsdWRlcyApOwoJCSRkaXJfbGVuICA9IHN0cmxlbiggJGRpciApO
woKCQkvLyBJZiBub3QgcmVzdW1pbmcgYSBjaHVua2VkIHByb2Nlc3MgdGhlbiBnZXQgaXRlbXMuCgkJaWYg
KCAhIGlzX2FycmF5KCAkaXRlbXMgKSB8fCAwID09IGNvdW50KCAkaXRlbXMgKSApIHsKCQkJJGl0ZW1zID0
gc2NhbmRpciggJGRpciApOwoJCQlpZiAoIGZhbHNlID09PSAkaXRlbXMgKSB7CgkJCQkkaXRlbXMgPSBhcn
JheSgpOwoJCQl9IGVsc2UgewoJCQkJZm9yZWFjaCAoICRpdGVtcyBhcyAkaSA9PiAmJGl0ZW0gKSB7CgkJC
QkJaWYgKCAnLicgPT0gJGl0ZW0gfHwgJy4uJyA9PSAkaXRlbSApIHsKCQkJCQkJdW5zZXQoICRpdGVtc1sg
JGkgXSApOwoJCQkJCQljb250aW51ZTsKCQkJCQl9CgkJCQkJJGl0ZW0gPSAkZGlyIC4gJy8nIC4gJGl0ZW0
7IC8vIEFkZCBkaXJlY3RvcnkuCgkJCQl9CgkJCX0KCQkJJGl0ZW1zID0gYXJyYXlfdmFsdWVzKCAkaXRlbX
MgKTsgLy8gUmVtb3ZlIG1pc3Npbmcga2V5ZWQgaXRlbXMuCgkJfSBlbHNlIHsKCQkJcGJfYmFja3VwYnVkZ
Hk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRGVlcCBzY2FuIHJlc3VtaW5nIGF0IGAnIC4gJHN0YXJ0X2F0IC4g
J2AuJyApOwoJCX0KCgkJZm9yICggJGkgPSAkc3RhcnRfYXQ7ICRpIDwgY291bnQoICRpdGVtcyApOyAkaSs
rICkgeyAvLyAkaXRlbXMgaXMgbW9kaWZpZWQgaW4gbG9vcC4KCgkJCS8vIElmIHRoaXMgZmlsZS9kaXJlY3
RvcnkgYmVnaW5zIHdpdGggYW4gZXhjbHVzaW9uIHRoZW4ganVtcCB0byBuZXh0IGZpbGUvZGlyZWN0b3J5L
goJCQlmb3JlYWNoICggJGV4Y2x1ZGVzIGFzICRleGNsdWRlICkgewoJCQkJaWYgKCBiYWNrdXBidWRkeV9j
b3JlOjpzdGFydHNXaXRoKCBzdWJzdHIoICRpdGVtc1sgJGkgXSwgJGRpcl9sZW4gKSwgJGV4Y2x1ZGUgKSA
pIHsKCQkJCQkkaXRlbXNbICRpIF0gPSAnJzsKCQkJCQljb250aW51ZSAyOwoJCQkJfQoJCQl9CgoJCQlpZi
AoIGlzX2RpciggJGl0ZW1zWyAkaSBdICkgKSB7CgkJCQkkYWRkcyA9IHNjYW5kaXIoICRpdGVtc1sgJGkgX
SApOwoJCQkJaWYgKCAhIGlzX2FycmF5KCAkYWRkcyApICkgewoJCQkJCSRhZGRzID0gYXJyYXkoKTsKCQkJ
CX0gZWxzZSB7CgkJCQkJZm9yZWFjaCAoICRhZGRzIGFzICRqID0+ICYkYWRkX2l0ZW0gKSB7CgkJCQkJCWl
mICggJy4nID09ICRhZGRfaXRlbSB8fCAnLi4nID09ICRhZGRfaXRlbSApIHsKCQkJCQkJCXVuc2V0KCAkYW
Rkc1sgJGogXSApOwoJCQkJCQkJY29udGludWU7CgkJCQkJCX0KCQkJCQkJJGFkZF9pdGVtID0gJGl0ZW1zW
yAkaSBdIC4gJy8nIC4gJGFkZF9pdGVtOyAvLyBBZGQgZGlyZWN0b3J5LgoJCQkJCX0KCQkJCX0KCQkJCSRp
dGVtcyA9IGFycmF5X21lcmdlKCAkaXRlbXMsICRhZGRzICk7CgkJCX0KCgkJCS8vIENoZWNrIGlmIGVub3V
naCB0aW1lIHJlbWFpbnMgdG8gY29udGludWUsIGVsc2UgY2h1bmsuCgkJCWlmICggMCAhPSAkbWF4X3RpbW
UgKSB7IC8vIENodW5raW5nIGVuYWJsZWQuCgkJCQlpZiAoICggdGltZSgpIC0gJHN0YXJ0X3RpbWUgKSA+I
CRtYXhfdGltZSApIHsgLy8gTm90IGVub3VnaCB0aW1lIGxlZnQuCgkJCQkJaWYgKCAkaSA9PSAkc3RhcnRf
YXQgKSB7IC8vIERpZCBub3QgaW5jcmVhc2UgcG9zaXRpb24uCgkJCQkJCWlmICggJG1heF90aW1lIDwgMCA
pIHsKCQkJCQkJCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdlcnJvcicsICdFcnJvciAjODM0NzQzNzQ1Oi
BNYXggdGltZSBuZWdhdGl2ZS4gVGhpcyB1c3VhbGx5IG1lYW5zIHRoZSBtYXggUEhQIHRpbWUgZm9yIHRoa
XMgc2VydmVyIGlzIGV4Y2VwdGlvbmFsbHkgbG93LiBDaGVjayBtYXggUEhQIHJ1bnRpbWUgdG8gdmVyaWZ5
IGl0IGlzIDMwIHNlY29uZHMgb3IgbW9yZS4nICk7CgkJCQkJCX0KCQkJCQkJJGVycm9yID0gJ0Vycm9yICM
zNDg0ODkzNDogTm8gcHJvZ3Jlc3Mgd2FzIG1hZGUgZHVyaW5nIGZpbGUgc2Nhbi4gSGFsdGluZyB0byBwcm
V2ZW50IGxvb3BpbmcgcmVwZWF0ZWRseSBhdCBiZWdpbm5pbmcgb2YgZGVlcCBzY2FuLiBFbGFwc2VkOiBgJ
yAuICggdGltZSgpIC0gJHN0YXJ0X3RpbWUgKSAuICdgLiBNYXggdGltZTogYCcgLiAkbWF4X3RpbWUgLiAn
YC4gc3RhcnRBdDogYCcgLiAkc3RhcnRfYXQgLiAnYC4gSXRlbXMgY291bnQ6IGAnIC4gY291bnQoICRpdGV
tcyApIC4gJ2AuJzsKCQkJCQkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgJGVycm9yICk7Cg
kJCQkJCXJldHVybiAkZXJyb3I7CgkJCQkJfQoJCQkJCSRzdGFydF9hdCA9ICRpOwoJCQkJCXBiX2JhY2t1c
GJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ1J1bm5pbmcgb3V0IG9mIHRpbWUgY2FsY3VsYXRpbmcgZGVl
cCBmaWxlIHNjYW4uIENodW5raW5nIGF0IHBvc2l0aW9uIGAnIC4gJHN0YXJ0X2F0IC4gJ2AuIEl0ZW1zIHN
vIGZhcjogYCcgLiBjb3VudCggJGl0ZW1zICkgLiAnYC4gRWxhcHNlZDogYCcgLiAoIHRpbWUoKSAtICRzdG
FydF90aW1lICkgLiAnYCBzZWNzLiBNYXggdGltZTogYCcgLiAkbWF4X3RpbWUgLiAnYCBzZWNzLicgKTsKC
QkJCQlyZXR1cm4gYXJyYXkoIGZhbHNlLCBhcnJheSggKCAkaSArIDEgKSwgJGl0ZW1zICkgKTsKCQkJCX0K
CQkJfQoJCX0gLy8gZW5kIGZvci4KCgkJcmV0dXJuIGFycmF5X2ZpbHRlciggJGl0ZW1zICk7IC8vIFJlbW9
2ZWQgYW55IGVtcHR5IHZhbHVlcyAoZXhjbHVkZXMgaXRlbXMpLgoJfSAvLyBFbmQgZGVlcHNjYW5kaXIoKS
4KCgkvKioKCSAqIFJlY3Vyc2l2ZSBDb3B5CgkgKgoJICogQHBhcmFtIHN0cmluZyAkc3JjICBTb3VyY2UgZ
GlyZWN0b3J5LgoJICogQHBhcmFtIHN0cmluZyAkZHN0ICBEZXN0aW5hdGlvbiBkaXJlY3RvcnkuCgkgKi8K
CXB1YmxpYyBmdW5jdGlvbiByZWN1cnNpdmVfY29
weSggJHNyYywgJGRzdCApIHsKCQlpZiAoIGlzX2RpciggJHNyYyApICkgewoJCQlwYl9iYWNrdXBidWRkeT
o6c3RhdHVzKCAnZGV0YWlscycsICdDb3B5aW5nIGRpcmVjdG9yeSBgJyAuICRzcmMgLiAnYCB0byBgJyAuI
CRkc3QgLiAnYCByZWN1cnNpdmVseS4nICk7CgkJCUAkdGhpcy0+bWtkaXIoICRkc3QsIDA3NzcgKTsKCQkJ
JGZpbGVzID0gc2NhbmRpciggJHNyYyApOwoJCQlmb3JlYWNoICggJGZpbGVzIGFzICRmaWxlICkgewoJCQk
JaWYgKCAnLicgIT0gJGZpbGUgJiYgJy4uJyAhPSAkZmlsZSApIHsKCQkJCQkkdGhpcy0+cmVjdXJzaXZlX2
NvcHkoICIkc3JjLyRmaWxlIiwgIiRkc3QvJGZpbGUiICk7CgkJCQl9CgkJCX0KCQl9IGVsc2VpZiAoIGZpb
GVfZXhpc3RzKCAkc3JjICkgKSB7CgkJCUBjb3B5KCAkc3JjLCAkZHN0ICk7IC8vIFRvZG86IHNob3VsZCB0
aGlzIG5lZWQgc3VwcHJlc3Npb24/IE1lZGlhIGNvcHlpbmcgd2FzIHRocm93aW5nICRkc3QgaXMgZGlyZWN
0b3J5IGVycm9ycy4KCQl9Cgl9CgoJLyoqCgkgKiBEaXJlY3RvcnkgU2l6ZSBNYXAKCSAqCgkgKiBAdG9kby
BEb2N1bWVudC4KCSAqCgkgKiBAcGFyYW0gYXJyYXl8Ym9vbCAkZGlyICAgICAgICAgQXJyYXkgb2YgZGlyZ
WN0b3J5IHBhdGhzIHRvIGV4Y2x1ZGUuICBJZiB0cnVlIHRoZW4gdGhpcyBkaXJlY3RvcnkgaXMgZXhjbHVk
ZWQgc28gbm8gbmVlZCB0byBjaGVjayB3aXRoIGV4Y2x1c2lvbiBkaXJlY3RvcnkuCgkgKiBAcGFyYW0gc3R
yaW5nICAgICAkYmFzZSAgICAgICAgQmFzZS4KCSAqIEBwYXJhbSBhcnJheSAgICAgICRleGNsdXNpb25zIC
BOZXZlciBtb2RpZmllZCBzbyBqdXN0IHVzZSBQSFAncyBjb3B5IG9uIG1vZGlmeSBkZWZhdWx0IGJlaGF2a
W91ciBmb3IgbWVtb3J5IG1hbmFnZW1lbnQuCgkgKiBAcGFyYW0gYXJyYXkgICAgICAkZGlyX2FycmF5ICAg
QXJyYXkgb2YgZGlyZWN0b3JpZXMuCgkgKgoJICogQHJldHVybiBhcnJheSAgYXJyYXkoIFRPVEFMX0RJUkV
DVE9SWV9TSVpFLCBUT1RBTF9TSVpFX1dJVEhfRVhDTFVTSU9OU19UQUtFTl9JTlRPX0FDQ09VTlQsIE9CSk
VDVFNfRk9VTkQsIE9CSkVDVFNfRk9VTkRfV0lUSF9FWENMVVNJT05TICkKCSAqLwoJcHVibGljIGZ1bmN0a
W9uIGRpcl9zaXplX21hcCggJGRpciwgJGJhc2UsICRleGNsdXNpb25zLCAmJGRpcl9hcnJheSApIHsKCQkk
ZGlyID0gcnRyaW0oICRkaXIsICcvXFwnICk7IC8vIEZvcmNlIG5vIHRyYWlsaW5nIHNsYXNoLgoKCQlpZiA
oICEgaXNfZGlyKCAkZGlyICkgKSB7CgkJCXJldHVybiAwOwoJCX0KCgkJJHJldCAgICAgICAgICAgICAgIC
AgICAgICAgICA9IDA7CgkJJHJldF93aXRoX2V4Y2x1c2lvbnMgICAgICAgICA9IDA7CgkJJHJldF9vYmplY
3RzICAgICAgICAgICAgICAgICA9IDA7CgkJJHJldF9vYmplY3RzX3dpdGhfZXhjbHVzaW9ucyA9IDA7CgkJ
JGV4Y2x1c2lvbnNfcmVzdWx0ICAgICAgICAgICA9ICRleGNsdXNpb25zOwoJCSRzdWIgICAgICAgICAgICA
gICAgICAgICAgICAgPSBAb3BlbmRpciggJGRpciApOwoJCWlmICggZmFsc2UgPT09ICRzdWIgKSB7IC8vIE
Nhbm5vdCBhY2Nlc3MuCgkJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ0Vycm9yICM1NjgzODU6IFVuYWJsZ
SB0byBhY2Nlc3MgZGlyZWN0b3J5OiBgJyAuICRkaXIgLiAnYC4gVmVyaWZ5IHByb3BlciBwZXJtaXNzaW9u
cy4nLCB0cnVlICk7CgkJCXJldHVybiAwOwoJCX0gZWxzZSB7CgkJCXdoaWxlICggJGZpbGUgPSByZWFkZGl
yKCAkc3ViICkgKSB7CgkJCQkkZXhjbHVzaW9uc19yZXN1bHQgPSAkZXhjbHVzaW9uczsKCgkJCQkkZGlyX3
BhdGggPSAnLycgLiBzdHJfcmVwbGFjZSggJGJhc2UsICcnLCAkZGlyIC4gJy8nIC4gJGZpbGUgKSAuICcvJ
zsgLy8gc3RyX3JlcGxhY2UoICRiYXNlLCAnJywgJGRpciAuICRmaWxlIC4gJy8nICk7CgoJCQkJaWYgKCAn
LicgPT0gJGZpbGUgfHwgJy4uJyA9PSAkZmlsZSApIHsKCgkJCQkJLy8gRG8gbm90aGluZy4KCQkJCX0gZWx
zZWlmICggaXNfZGlyKCAkZGlyIC4gJy8nIC4gJGZpbGUgKSApIHsgLy8gRElSRUNUT1JZLgoKCQkJCQlpZi
AoIHRydWUgPT09ICRleGNsdXNpb25zIHx8IHNlbGY6OmluX2FycmF5X3N1YnN0ciggJGV4Y2x1c2lvbnMsI
CRkaXJfcGF0aCwgJy8nICkgKSB7CgkJCQkJCSRleGNsdXNpb25zX3Jlc3VsdCA9IHRydWU7CgkJCQkJfQoJ
CQkJCSRyZXN1bHQgICAgICAgPSAkdGhpcy0+ZGlyX3NpemVfbWFwKCAkZGlyIC4gJy8nIC4gJGZpbGUgLiA
nLycsICRiYXNlLCAkZXhjbHVzaW9ucywgJGRpcl9hcnJheSApOwoJCQkJCSR0aGlzX3NpemUgICAgPSAkcm
VzdWx0WzBdOwoJCQkJCSR0aGlzX29iamVjdHMgPSAkcmVzdWx0WzJdOwoKCQkJCQlpZiAoIHRydWUgPT09I
CRleGNsdXNpb25zX3Jlc3VsdCApIHsgLy8gSWYgZXhjbHVkaW5nIHRoZW4gd2lwZSBleGNsdWRlZCB2YWx1
ZS4KCQkJCQkJJHRoaXNfc2l6ZV93aXRoX2V4Y2x1c2lvbnMgICAgPSBmYWxzZTsKCQkJCQkJJHRoaXNfb2J
qZWN0c193aXRoX2V4Y2x1c2lvbnMgPSAwOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSR0aGlzX3NpemVfd2l0aF
9leGNsdXNpb25zICAgID0gJHJlc3VsdFsxXTsgLy8gMTA0ODU3Ni4KCQkJCQkJJHRoaXNfb2JqZWN0c193a
XRoX2V4Y2x1c2lvbnMgPSAkcmVzdWx0WzNdOyAvLyAxMDQ4NTc2LgoJCQkJCX0KCgkJCQkJJGRpcl9hcnJh
eVsgJGRpcl9wYXRoIF0gPSBhcnJheSggJHRoaXNfc2l6ZSwgJHRoaXNfc2l6ZV93aXRoX2V4Y2x1c2lvbnM
sICR0aGlzX29iamVjdHMsICR0aGlzX29iamVjdHNfd2l0aF9leGNsdXNpb25zICk7CgoJCQkJCSRyZXQgIC
AgICAgICAgICAgICAgICAgICAgICAgKz0gJHRoaXNfc2l6ZTsKCQkJCQkkcmV0X29iamVjdHMgICAgICAgI
CAgICAgICAgICs9ICR0aGlzX29iamVjdHM7CgkJCQkJJHJldF93aXRoX2V4Y2x1c2lvbnMgICAgICAgICAr
PSAkdGhpc19zaXplX3dpdGhfZXhjbHVzaW9uczsKCQkJCQkkcmV0X29iamVjdHNfd2l0aF9leGNsdXNpb25
zICs9ICR0aGlzX29iamVjdHNfd2l0aF9leGNsdXNpb25zOwoKCQkJCQl1bnNldCggJGZpbGUgKTsKCgkJCQ
l9IGVsc2UgeyAvLyBGSUxFLgoKCQkJCQkkc3RhdHMgPSBAc3RhdCggJGRpciAuICcvJyAuICRmaWxlICk7C
gkJCQkJaWYgKCBpc19hcnJheSggJHN0YXRzICkgKSB7CgkJCQkJCSRyZXQgKz0gJHN0YXRzWydzaXplJ107
CgkJCQkJCSRyZXRfb2JqZWN0cysrOwoJCQkJCQlpZiAoIHRydWUgIT09ICRleGNsdXNpb25zICYmICEgaW5
fYXJyYXkoICRkaXJfcGF0aCwgJGV4Y2x1c2lvbnMgKSApIHsgLy8gTm90IGV4Y2x1ZGluZy4KCQkJCQkJCS
RyZXRfd2l0aF9leGNsdXNpb25zICs9ICRzdGF0c1snc2l6ZSddOwoJCQkJCQkJJHJldF9vYmplY3RzX3dpd
GhfZXhjbHVzaW9ucysrOwoJCQkJCQl9CgkJCQkJfQoJCQkJCXVuc2V0KCAkZmlsZSApOwoKCQkJCX0KCQkJ
fQoJCQljbG9zZWRpciggJHN1YiApOwoJCQl1bnNldCggJHN1YiApOwoJCQlyZXR1cm4gYXJyYXkoICRyZXQ
sICRyZXRfd2l0aF9leGNsdXNpb25zLCAkcmV0X29iamVjdHMsICRyZXRfb2JqZWN0c193aXRoX2V4Y2x1c2
lvbnMgKTsKCQl9Cgl9IC8vIEVuZCBkaXJfc2l6ZV9tYXAoKS4KCgkvKioKCSAqIENoZWNrcyBhcnJheSBmb
3IgYSBzdHJpbmcgc2VnbWVudC4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgICRoYXlzdGFjayAgQXJyYXkgdG8g
c2VhcmNoLgoJICogQHBhcmFtIHN0cmluZyAkbmVlZGxlICAgIFN0cmluZyBzZWdtZW50IHRvIGxvb2sgZm9
yLgoJICogQHBhcmFtIHN0cmluZyAkdHJhaWxpbmcgIE9wdGlvbmFsIHRyYWlsaW5nIHN0cmluZy4KCSAqCg
kgKiBAcmV0dXJuIGJvb2wgIElmIHN0cmluZyB3YXMgZm91bmQuCgkgKi8KCXB1YmxpYyBzdGF0aWMgZnVuY
3Rpb24gaW5fYXJyYXlfc3Vic3RyKCAkaGF5c3RhY2ssICRuZWVkbGUsICR0cmFpbGluZyA9ICcnICkgewoJ
CWZvcmVhY2ggKCAkaGF5c3RhY2sgYXMgJGhheSApIHsKCQkJaWYgKCAoICRoYXkgLiAkdHJhaWxpbmcgKSA
9PSBzdWJzdHIoICRuZWVkbGUgLiAkdHJhaWxpbmcsIDAsIHN0cmxlbiggJGhheSAuICR0cmFpbGluZyApIC
kgKSB7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8qKgoJICogQ
mF0Y2ggZXhpdCBjb2RlIGxvb2t1cC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nfGludCAkY29kZSAgQmF0Y2gg
ZXhpdCBjb2RlLgoJICoKCSAqIEByZXR1cm4gc3RyaW5nICBFcnJvciBtZXNzYWdlIGJhc2VkIG9uIGJhdGN
oIGV4aXQgY29kZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGV4aXRfY29kZV9sb29rdXAoICRjb2RlICkgew
oJCXN3aXRjaCAoIChzdHJpbmcpICRjb2RlICkgewoJCQljYXNlICcwJzoKCQkJCXJldHVybiAnQ29tbWFuZ
CBjb21wbGV0ZWQgJiByZXR1cm5lZCBub3JtYWxseS4nOwoJCQljYXNlICcxMjYnOgoJCQkJcmV0dXJuICdD
b21tYW5kIGludm9rZWQgY2Fubm90IGV4ZWN1dGUuIENoZWNrIGNvbW1hbmQgaGFzIHZhbGlkIHBlcm1pc2l
vbnMgYW5kIGV4ZWN1dGUgY2FwYWJpbGl0eS4nOwoJCQljYXNlICcxMjcnOgoJCQkJcmV0dXJuICdDb21tYW
5kIG5vdCBmb3VuZC4nOwoJCQljYXNlICcxNTInOgoJCQkJcmV0dXJuICdTSUdYQ1BVIDE1MjsgQ1BVIHRpb
WUgbGltaXQgZXhjZWVkZWQuJzsKCQkJY2FzZSAnMTUzJzoKCQkJCXJldHVybiAnU0lHWEZTWiAxNTM7IEZp
bGUgc2l6ZSBsaW1pdCBleGNlZWRlZC4gVmVyaWZ5IGVub3VnaCBmcmVlIHNwYWNlIGV4aXN0cyAmIGZpbGV
zeXN0ZW0gbWF4IHNpemUgbm90IGV4Y2VlZGVkLic7CgkJCWNhc2UgJzE1OCc6CgkJCQlyZXR1cm4gJ1NJR1
hDUFUgMTU4OyBDUFUgdGltZSBsaW1pdCBleGNlZWRlZC4nOwoJCQljYXNlICcxNTknOgoJCQkJcmV0dXJuI
CdTSUdYRlNaIDE1OTsgRmlsZSBzaXplIGxpbWl0IGV4Y2VlZGVkLiBWZXJpZnkgZW5vdWdoIGZyZWUgc3Bh
Y2UgZXhpc3RzICYgZmlsZXN5c3RlbSBtYXggc2l6ZSBub3QgZXhjZWVkZWQuJzsKCQl9CgoJCXJldHVybiA
nLU5vIGluZm9ybWF0aW9uIGF2YWlsYWJsZSBmb3IgdGhpcyBleGl0IGNvZGUtIFNlZTogaHR0cHM6Ly93aW
tpLm5jc2EuaWxsaW5vaXMuZWR1L2Rpc3BsYXkvTVJEUFVCL0JhdGNoK0V4aXQrQ29kZXMnOwoJfQoKCS8qK
goJICogTmV3ZXN0IHRvIG9sZGVzdC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRwYXR0ZXJuICBHbG9iIHBh
dHRlcm4uCgkgKiBAcGFyYW0gc3RyaW5nICRtb2RlICAgICBEYXRlIHBhdHRlcm4sIGRlZmF1bHQ6IGN0aW1
lLgoJICoKCSAqIEByZXR1cm4gYm9vbHxhcnJheSAgRmFsc2UgaWYgZXJyb3IsIG90aGVyd2lzZSBzb3J0ZW
QgYXJyYXkuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBnbG9iX2J5X2RhdGUoICRwYXR0ZXJuLCAkbW9kZSA9I
CdjdGltZScgKSB7CgkJJGZpbGVfYXJyYXkgID0gYXJyYXkoKTsKCQkkZ2xvYl9yZXN1bHQgPSBnbG9iKCAk
cGF0dGVybiApOwoJCWlmICggISBpc19hcnJheSggJGdsb2JfcmVzdWx0ICkgKSB7CgkJCSRnbG9iX3Jlc3V
sdCA9IGFycmF5KCk7CgkJfQoJCWZvcmVhY2ggKCAkZ2xvYl9yZXN1bHQgYXMgJGkgPT4gJGZpbGVuYW1lIC
kgewoJCQlpZiAoICdjdGltZScgPT0gJG1vZGUgKSB7CgkJCQkkdGltZSA9IEBmaWxlY3RpbWUoICRmaWxlb
mFtZSApOwoJCQl9IGVsc2VpZiAoICdtdGltZScgPT0gJG1vZGUgKSB7CgkJCQkkdGltZSA9IEBmaWxlbXRp
bWUoICRmaWxlbmFtZSApOwoJCQl9IGVsc2UgewoJCQkJZXJyb3JfbG9nKCAnQmFja3VwQnVkZHkgRXJyb3I
gIzIzMzQ5ODQ0ODkzODM6IEludmFsaWQgZ2xvYl9ieV9kYXRlIG1vZGU6IGAnIC4gJG1vZGUgLiAnYC4nIC
k7CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQkJaWYgKCBmYWxzZSA9PT0gJHRpbWUgKSB7IC8vIEZpbGUgb
Wlzc2luZyBvciBubyBsb25nZXIgYWNjZXNzaWJsZT8KCQkJCWlmICggISBmaWxlX2V4aXN0cyggJGZpbGVu
YW1lICkgKSB7IC8vIEZpbGUgd2VudCBhd2F5LgoJCQkJCXVuc2V0KCAkZ2xvYl9yZXN1bHRbICRpIF0gKTs
KCQkJCX0gZWxzZSB7IC8vIFVrbm93biBtb2QgdGltZS4gU2V0IGFzIGN1cnJlbnQgdGltZS4KCQkJCQkkdG
ltZSA9IHRpbWUoKTsKCQkJCX0KCQkJfQoJCQl3aGlsZSAoIGlzc2V0KCAkZmlsZV9hcnJheVsgJHRpbWUgX
SApICkgeyAvLyBBdm9pZCBjb2xsaXNpb25zLgoJCQkJJHRpbWUgPSAkdGltZSArIDAuMTsKCQkJfQoJCQkk
ZmlsZV9hcnJheVsgJHRpbWUgXSA9ICRmaWxlbmFtZTsgLy8gb3IganVzdCAkZmlsZW5hbWUuCgkJfQoJCWt
yc29ydCggJGZpbGVfYXJyYXkgKTsKCQlyZXR1cm4gJGZpbGVfYXJyYXk7CgoJfSAvLyBFbmQgZ2xvYl9ieV
9kYXRlKCkuCgoKfSAvLyBFbmQgY2xhc3MgcGx1Z2luYnVkZHlfc2V0dGluZ3MuCg==
###PACKDATA,FILE_END,/pluginbuddy/classes/filesystem.php,importbuddy/pluginbuddy/cl
asses/filesystem.php
###PACKDATA,FILE_START,/pluginbuddy/classes/form.php,importbuddy/pluginbuddy/classe
s/form.php
PD9waHAKLyoqCiAqIEZvcm0gaGFuZGxpbmcgQ2xhc3MKICoKICogQHBhY2thZ2UgQmFja3VwQnVkZHkKICo
gQGF1dGhvciBEdXN0aW4gQm9sdG9uCiAqLwoKLyoqCiAqIEZvcm0gZnJhbWV3b3JrIGZvciBoYW5kbGluZy
BhbGwgZm9ybXMsIHZhbGlkYXRpb24sIGFuZCB0aGVpciBkaXNwbGF5LgogKi8KY2xhc3MgcGJfYmFja3VwY
nVkZHlfZm9ybSB7CgoJLyoqCgkgKiBGb3JtIE5hbWUKCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcml2
YXRlICRfZm9ybV9uYW1lID0gJyc7CgoJLyoqCgkgKiBTYXZlIFBvaW50CgkgKgoJICogQHZhciBzdHJpbmc
KCSAqLwoJcHJpdmF0ZSAkX3NhdmVfcG9pbnQgPSAnJzsKCgkvKioKCSAqIEZvcm0gSW5wdXRzCgkgKgoJIC
ogQHZhciBhcnJheQoJICovCglwcml2YXRlICRfaW5wdXRzID0gYXJyYXkoKTsKCgkvKioKCSAqIEZvcm0gU
HJlZml4CgkgKgoJICogQHZhciBzdHJpbmcKCSAqLwoJcHJpdmF0ZSAkX3ByZWZpeCA9ICdERUZBVUxUJzsK
CgkvKioKCSAqIEZvcm0gU3RhcnRlZAoJICoKCSAqIEB2YXIgYm9vbAoJICovCglwcml2YXRlICRfc3RhcnR
lZCA9IGZhbHNlOwoKCS8qKgoJICogRm9ybSBFbmRlZAoJICoKCSAqIEB2YXIgYm9vbAoJICovCglwcml2YX
RlICRfZW5kZWQgPSBmYWxzZTsKCgkvKioKCSAqIEFkZGl0aW9uYWwgUXVlcnkgU3RyaW5nCgkgKgoJICogQ
HZhciBzdHJpbmcKCSAqLwoJcHJpdmF0ZSAkX2FkZGl0aW9uYWxfcXVlcnlfc3RyaW5nID0gJyc7CgoJLyoq
CgkgKiBMb2FkZWQgY29sb3Igc3R5bGVzCgkgKgoJICogQHZhciBib29sCgkgKi8KCXByaXZhdGUgJF9sb2F
kZWRfY29sb3IgPSBmYWxzZTsKCgkvKioKCSAqIERlZmF1bHQgY29uc3RydWN0b3IuIFNldHMgdXAgdGhlIG
Zvcm0uCgkgKgoJICogQHBhcmFtIHN0cmluZyAkZm9ybV9uYW1lICAgICAgICAgICAgICAgIE5hbWUgLyBzb
HVnIG9mIHRoZSBmb3JtLgoJICogQHBhcmFtIHN0cmluZyAkc2F2ZV9wb2ludCAgICAgICAgICAgICAgIFNh
dmUgcG9pbnQgdG8gc2F2ZSBmb3JtOyBDdXJyZW50bHkgb25seSB1c2VkIGZvciBzZXR0aW5ncyBmb3JtLiB
Ac2VlIHBsdWdpbmJ1ZGR5X3NldHRpbmdzLT5fX2NvbnN0cnVjdCgpLgoJICogQHBhcmFtIHN0cmluZyAkYW
RkaXRpb25hbF9xdWVyeV9zdHJpbmcgIEFkZGl0aW9uYWwgcXVlcnlzdHJpbmcgdG8gYXBwZW5kIHRvIGVuZ
CBvZiBmb3JtIGFjdGlvbiBVUkwuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCggJGZvcm1f
bmFtZSwgJHNhdmVfcG9pbnQgPSAnJywgJGFkZGl0aW9uYWxfcXVlcnlfc3RyaW5nID0gJycgKSB7CgkJJHR
oaXMtPl9mb3JtX25hbWUgICAgICAgICAgICAgICA9ICRmb3JtX25hbWU7CgkJJHRoaXMtPl9zYXZlX3BvaW
50ICAgICAgICAgICAgICA9ICRzYXZlX3BvaW50OwoJCSR0aGlzLT5fYWRkaXRpb25hbF9xdWVyeV9zdHJpb
mcgPSAkYWRkaXRpb25hbF9xdWVyeV9zdHJpbmc7CgkJJHRoaXMtPl9wcmVmaXggICAgICAgICAgICAgICAg
ICA9ICdwYl8nIC4gcGJfYmFja3VwYnVkZHk6OnNldHRpbmdzKCAnc2x1ZycgKSAuICdfJzsKCX0gLy8gRW5
kIF9fY29uc3RydWN0KCkuCgoJLyoqCgkgKiBBZGQgYSB0ZXh0IGlucHV0LgoJICoKCSAqIEBwYXJhbSBzdH
JpbmcgJG5hbWUgICBOYW1lIC8gc2x1ZyBmb3IgdGhpcyBmb3JtIGl0ZW0uCgkgKiBAcGFyYW0gc3RyaW5nI
CR2YWx1ZSAgVmFsdWUgZm9yIHRoaXMgZm9ybSBpdGVtLgoJICogQHBhcmFtIHN0cmluZyAkcnVsZXMgIChv
cHRpb25hbCkgUnVsZXMgdG8gdmFsaWRhdGUgdGhpcyBmb3JtIGl0ZW0gYWdhaW5zdC4KCSAqLwoJcHVibGl
jIGZ1bmN0aW9uIHRleHQoICRuYW1lLCAkdmFsdWUsICRydWxlcyA9ICcnICkgewoJCSR0aGlzLT5faW5wdX
RzWyAkbmFtZSBdID0gYXJyYXkoCgkJCSd0eXBlJyAgPT4gX19GVU5DVElPTl9fLAoJCQkndmFsdWUnID0+I
CR2YWx1ZSwKCQkJJ3J1bGVzJyA9PiAkcnVsZXMsCgkJKTsKCX0gLy8gRW5kIHRleHQoKS4KCgkvKioKCSAq
IEFkZCBhIHRleHQgaW5wdXQsIHdpdGggTk8gUlVMRVMhCgkgKgoJICogQHBhcmFtIHN0cmluZyAkbmFtZSA
gIE5hbWUgLyBzbHVnIGZvciB0aGlzIGZvcm0gaXRlbS4KCSAqIEBwYXJhbSBzdHJpbmcgJHZhbHVlICBWYW
x1ZSBmb3IgdGhpcyBmb3JtIGl0ZW0uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBwbGFpbnRleHQoICRuYW1lL
CAkdmFsdWUgKSB7CgkJJHRoaXMtPl9pbnB1dHNbICRuYW1lIF0gPSBhcnJheSgKCQkJJ3R5cGUnICA9PiBf
X0ZVTkNUSU9OX18sCgkJCSd2YWx1ZScgPT4gJHZhbHVlLAoJCSk7Cgl9IC8vIEVuZCB0ZXh0KCkuCgoJLyo
qCgkgKiBBZGQgYSBjb2xvciBpbnB1dDsgdGhpcyBpcyBhIHRleHQgaW5wdXQgdGhhdCBoYXMgYSBjb2xvci
BzZWxlY3Rvci4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICAgTmFtZSAvIHNsdWcgZm9yIHRoaXMgZ
m9ybSBpdGVtLgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUgIFZhbHVlIGZvciB0aGlzIGZvcm0gaXRlbS4K
CSAqIEBwYXJhbSBzdHJpbmcgJHJ1bGVzICAob3B0aW9uYWwpIFJ1bGVzIHRvIHZhbGlkYXRlIHRoaXMgZm9
ybSBpdGVtIGFnYWluc3QuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjb2xvciggJG5hbWUsICR2YWx1ZSwgJH
J1bGVzID0gJycgKSB7CgkJJHRoaXMtPl9pbnB1dHNbICRuYW1lIF0gPSBhcnJheSgKCQkJJ3R5cGUnICA9P
iBfX0ZVTkNUSU9OX18sCgkJCSd2YWx1ZScgPT4gJHZhbHVlLAoJCQkncnVsZXMnID0+ICRydWxlcywKCQkp
OwoJfSAvLyBFbmQgY29sb3IoKS4KCgkvKioKCSAqIEFkZCBhIGhpZGRlbiBpbnB1dC4KCSAqCgkgKiBAcGF
yYW0gc3RyaW5nICRuYW1lICAgTmFtZSAvIHNsdWcgZm9yIHRoaXMgZm9ybSBpdGVtLgoJICogQHBhcmFtIH
N0cmluZyAkdmFsdWUgIFZhbHVlIGZvciB0aGlzIGZvcm0gaXRlbS4KCSAqIEBwYXJhbSBzdHJpbmcgJHJ1b
GVzICAob3B0aW9uYWwpIFJ1bGVzIHRvIHZhbGlkYXRlIHRoaXMgZm9ybSBpdGVtIGFnYWluc3QuCgkgKi8K
CXB1YmxpYyBmdW5jdGlvbiBoaWRkZW4oICRuYW1lLCAkdmFsdWUsICRydWxlcyA9ICcnICkgewoJCSR0aGl
zLT5faW5wdXRzWyAkbmFtZSBdID0gYXJyYXkoCgkJCSd0eXBlJyAgPT4gX19GVU5DVElPTl9fLAoJCQkndm
FsdWUnID0+ICR2YWx1ZSwKCQkJJ3J1bGVzJyA9PiAkcnVsZXMsCgkJKTsKCX0gLy8gRW5kIGhpZGRlbigpL
goKCS8qKgoJICogQWRkcyBhIHRleHQgYm94IHd5c2l3eWcuCgkgKgoJICogQHNlZSB3cF9lZGl0b3IoKSBp
biBXb3JkUHJlc3MgY29yZS4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICAgICAgTmFtZSAvIHNsdWc
gZm9yIHRoaXMgZm9ybSBpdGVtLgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUgICAgIFZhbHVlIGZvciB0aG
lzIGZvcm0gaXRlbS4KCSAqIEBwYXJhbSBzdHJpbmcgJHJ1bGVzICAgICAob3B0aW9uYWwpIFJ1bGVzIHRvI
HZhbGlkYXRlIHRoaXMgZm9ybSBpdGVtIGFnYWluc3QuCgkgKiBAcGFyYW0gYXJyYXkgICRzZXR0aW5ncyAg
V29yZFByZXNzIHNldHRpbmdzIGFycmF5IHRvIHBhc3MgdG8gd3BfZWRpdG9yKCkuIEBzZWUgd3BfZWRpdG9
yKCkuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiB3eXNpd3lnKCAkbmFtZSwgJHZhbHVlLCAkcnVsZXMgPSAnJy
wgJHNldHRpbmdzICkgewoJCSR0aGlzLT5faW5wdXRzWyAkbmFtZSBdID0gYXJyYXkoCgkJCSd0eXBlJyAgI
CAgPT4gX19GVU5DVElPTl9fLAoJCQkndmFsdWUnICAgID0+ICR2YWx1ZSwKCQkJJ3J1bGVzJyAgICA9PiAk
cnVsZXMsCgkJCSdzZXR0aW5ncycgPT4gJHNldHRpbmdzLAoJCSk7Cgl9IC8vIEVuZCB3eXNpd3lnKCkuCgo
JLyoqCgkgKiBBZGQgYSB0ZXh0YXJlYSBpbnB1dC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICAgTm
FtZSAvIHNsdWcgZm9yIHRoaXMgZm9ybSBpdGVtLgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUgIFZhbHVlI
GZvciB0aGlzIGZvcm0gaXRlbS4KCSAqIEBwYXJhbSBzdHJpbmcgJHJ1bGVzICAob3B0aW9uYWwpIFJ1bGVz
IHRvIHZhbGlkYXRlIHRoaXMgZm9ybSBpdGVtIGFnYWluc3QuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiB0ZXh
0YXJlYSggJG5hbWUsICR2YWx1ZSwgJHJ1bGVzID0gJycgKSB7CgkJJHRoaXMtPl9pbnB1dHNbICRuYW1lIF
0gPSBhcnJheSgKCQkJJ3R5cGUnICA9PiBfX0ZVTkNUSU9OX18sCgkJCSd2YWx1ZScgPT4gJHZhbHVlLAoJC
QkncnVsZXMnID0+ICRydWxlcywKCQkpOwoJfSAvLyBFbmQgdGV4dGFyZWEoKS4KCgkvKioKCSAqIEFkZCBh
IHNlbGVjdCBpbnB1dC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICAgICBOYW1lIC8gc2x1ZyBmb3I
gdGhpcyBmb3JtIGl0ZW0uCgkgKiBAcGFyYW0gYXJyYXkgICRvcHRpb25zICBBcnJheSBvZiBvcHRpb25zIG
ZvciB0aGUgZHJvcGRvd24uICBUaGUga2V5IGlzIHRoZSBzbHVnIGFuZCB0aGUgdmFsdWUgaXMgdGhlIHByZ
XR0eSB1c2VyLWRpc3BsYXllZCBwYXJ0LiA8b3B0aW9uIHZhbHVlPSJhcnJheV9rZXkiPmFycmF5X3ZhbHVl
PC9vcHRpb24+LgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUgICAgVmFsdWUgZm9yIHRoaXMgZm9ybSBpdGV
tLgoJICogQHBhcmFtIHN0cmluZyAkcnVsZXMgICAgKG9wdGlvbmFsKSBSdWxlcyB0byB2YWxpZGF0ZSB0aG
lzIGZvcm0gaXRlbSBhZ2FpbnN0LgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2VsZWN0KCAkbmFtZSwgJG9wd
GlvbnMsICR2YWx1ZSwgJHJ1bGVzID0gJycgKSB7CgkJJHRoaXMtPl9pbnB1dHNbICRuYW1lIF0gPSBhcnJh
eSgKCQkJJ3R5cGUnICAgID0+IF9fRlVOQ1RJT05fXywKCQkJJ29wdGlvbnMnID0+ICRvcHRpb25zLAoJCQk
ndmFsdWUnICAgPT4gJHZhbHVlLAoJCQkncnVsZXMnICAgPT4gJHJ1bGVzLAoJCSk7Cgl9IC8vIEVuZCBzZW
xlY3QoKS4KCgkvKioKCSAqIEFkZCBhIHJhZGlvIGlucHV0LgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG5hb
WUgICAgIE5hbWUgLyBzbHVnIGZvciB0aGlzIGZvcm0gaXRlbS4KCSAqIEBwYXJhbSBhcnJheSAgJG9wdGlv
bnMgIEFycmF5IG9mIG9wdGlvbnMgZm9yIHRoZSByYWRpbyBpbnB1dHMuIFRoZSBrZXkgaXMgdGhlIHNsdWc
gYW5kIHRoZSB2YWx1ZSBpcyB0aGUgcHJldHR5IHVzZXItZGlzcGxheWVkIHBhcnQuIDxpbnB1dCB0eXBlPS
JyYWRpbyIgdmFsdWU9ImFycmF5X2tleSI+YXJyYXlfdmFsdWUuCgkgKiBAcGFyYW0gc3RyaW5nICR2YWx1Z
SAgICBWYWx1ZSBmb3IgdGhpcyBmb3JtIGl0ZW0uCgkgKiBAcGFyYW0gc3RyaW5nICRydWxlcyAgICAob3B0
aW9uYWwpIFJ1bGVzIHRvIHZhbGlkYXRlIHRoaXMgZm9ybSBpdGVtIGFnYWluc3QuCgkgKi8KCXB1YmxpYyB
mdW5jdGlvbiByYWRpbyggJG5hbWUsICRvcHRpb25zLCAkdmFsdWUsICRydWxlcyA9ICcnICkgewoJCSR0aG
lzLT5faW5wdXRzWyAkbmFtZSBdID0gYXJyYXkoCgkJCSd0eXBlJyAgICA9PiBfX0ZVTkNUSU9OX18sCgkJC
SdvcHRpb25zJyA9PiAkb3B0aW9ucywKCQkJJ3ZhbHVlJyAgID0+ICR2YWx1ZSwKCQkJJ3J1bGVzJyAgID0+
ICRydWxlcywKCQkpOwoJfSAvLyBFbmQgcmFkaW8oKS4KCgkvKioKCSAqIEFkZCBhIHJhZGlvIGlucHV0Lgo
JICoKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgICBOYW1lIC8gc2x1ZyBmb3IgdGhpcyBmb3JtIGl0ZW0uCg
kgKiBAcGFyYW0gc3RyaW5nICR2YWx1ZSAgVmFsdWUgZm9yIHRoaXMgZm9ybSBpdGVtLgoJICogQHBhcmFtI
HN0cmluZyAkcnVsZXMgIChvcHRpb25hbCkgUnVsZXMgdG8gdmFsaWRhdGUgdGhpcyBmb3JtIGl0ZW0gYWdh
aW5zdC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRpdGxlKCAkbmFtZSwgJHZhbHVlLCAkcnVsZXMgPSAnJyA
pIHsKCQkkdGhpcy0+X2lucHV0c1sgJG5hbWUgXSA9IGFycmF5KAoJCQkndHlwZScgID0+IF9fRlVOQ1RJT0
5fXywKCQkJJ3ZhbHVlJyA9PiAkdmFsdWUsCgkJCSdydWxlcycgPT4gJHJ1bGVzLAoJCSk7Cgl9IC8vIEVuZ
CByYWRpbygpLgoKCS8qKgoJICogQWRkcyBjdXN0b20gaHRtbCBhcyBhbiBpbnB1dC4KCSAqCgkgKiBAcGFy
YW0gc3RyaW5nICRuYW1lICBOYW1lIC8gc2x1ZyBmb3IgdGhpcyBmb3JtIGl0ZW0uCgkgKiBAcGFyYW0gc3R
yaW5nICRodG1sICBIVE1MIGNvbnRlbnQuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBodG1sKCAkbmFtZSwgJG
h0bWwgKSB7CgkJJHRoaXMtPl9pbnB1dHNbICRuYW1lIF0gPSBhcnJheSgKCQkJJ3R5cGUnID0+IF9fRlVOQ
1RJT05fXywKCQkJJ2h0bWwnID0+ICRodG1sLAoJCSk7Cgl9CgoJLyoqCgkgKiBBZGQgYSBjaGVja2JveCBp
bnB1dC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICAgICBOYW1lIC8gc2x1ZyBmb3IgdGhpcyBmb3J
tIGl0ZW0uCgkgKiBAcGFyYW0gYXJyYXkgICRvcHRpb25zICBBcnJheSBmb3JtYXQ6IGFycmF5KCAndW5jaG
Vja2VkJyA9PiAndW5jaGVja2VkX3ZhbHVlJywgJ2NoZWNrZWQnID0+ICdjaGVja2VkX3ZhbHVlJyApLgoJI
CogQHBhcmFtIHN0cmluZyAkdmFsdWUgICAgVmFsdWUgZm9yIHRoaXMgZm9ybSBpdGVtLgoJICogQHBhcmFt
IHN0cmluZyAkcnVsZXMgICAgKG9wdGlvbmFsKSBSdWxlcyB0byB2YWxpZGF0ZSB0aGlzIGZvcm0gaXRlbSB
hZ2FpbnN0LgoJICovCglwdWJsaWMgZnVuY3Rpb24gY2hlY2tib3goICRuYW1lLCAkb3B0aW9ucywgJHZhbH
VlLCAkcnVsZXMgPSAnJyApIHsKCQkkdGhpcy0+X2lucHV0c1sgJG5hbWUgXSA9IGFycmF5KAoJCQkndHlwZ
ScgICAgPT4gX19GVU5DVElPTl9fLAoJCQknb3B0aW9ucycgPT4gJG9wdGlvbnMsCgkJCSd2YWx1ZScgICA9
PiAkdmFsdWUsCgkJCSdydWxlcycgICA9PiAkcnVsZXMsCgkJKTsKCX0gLy8gRW5kIGNoZWNrYm94KCkuCgo
JLyoqCgkgKiBBZGQgYSBwYXNzd29yZCBpbnB1dC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICAgTm
FtZSAvIHNsdWcgZm9yIHRoaXMgZm9ybSBpdGVtLgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUgIFZhbHVlI
GZvciB0aGlzIGZvcm0gaXRlbS4KCSAqIEBwYXJhbSBzdHJpbmcgJHJ1bGVzICAob3B0aW9uYWwpIFJ1bGVz
IHRvIHZhbGlkYXRlIHRoaXMgZm9ybSBpdGVtIGFnYWluc3QuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBwYXN
zd29yZCggJG5hbWUsICR2YWx1ZSwgJHJ1bGVzID0gJycgKSB7CgkJJHRoaXMtPl9pbnB1dHNbICRuYW1lIF
0gPSBhcnJheSgKCQkJJ3R5cGUnICA9PiBfX0ZVTkNUSU9OX18sCgkJCSd2YWx1ZScgPT4gJHZhbHVlLAoJC
QkncnVsZXMnID0+ICRydWxlcywKCQkpOwoJfSAvLyBFbmQgcGFzc3dvcmQoKS4KCgkvKioKCSAqIEFkZCBh
IHN1Ym1pdCBpbnB1dC4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRuYW1lICAgTmFtZSAvIHNsdWcgZm9yIHR
oaXMgZm9ybSBpdGVtLgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUgIFZhbHVlIGZvciB0aGlzIGZvcm0gaX
RlbS4gVGhpcyBpcyB0aGUgdGV4dCBpbiB0aGUgZGlzcGxheWVkIGJ1dHRvbi4KCSAqLwoJcHVibGljIGZ1b
mN0aW9uIHN1Ym1pdCggJG5hbWUsICR2YWx1ZSA9ICcnICkgewoJCSR0aGlzLT5faW5wdXRzWyAkbmFtZSBd
ID0gYXJyYXkoCgkJCSd0eXBlJyAgPT4gX19GVU5
DVElPTl9fLAoJCQkndmFsdWUnID0+ICR2YWx1ZSwKCQkpOwoJfSAvLyBFbmQgc3VibWl0KCkuCgoJLyoqCg
kgKiBTdGFydHMgdGhlIGZvcm0gb3V0cHV0LiBBdXRvbWF0aWNhbGx5IHJ1bnMgdW5kZXIgbm9ybWFsIGNpc
mN1bXN0YW5jZXMgc28gdXN1YWxseSBzaG91bGQgbm90IG5lZWQgdG8gYmUgY2FsbGVkIGRpcmVjdGx5LgoJ
ICoKCSAqIEByZXR1cm4gc3RyaW5nICBGb3JtIEhUTUwuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzdGFydCg
pIHsKCQkkdGhpcy0+X3N0YXJ0ZWQgPSB0cnVlOwoKCQlpZiAoIGZhbHNlICE9PSBzdHJpc3RyKCAkdGhpcy
0+X2FkZGl0aW9uYWxfcXVlcnlfc3RyaW5nLCAnaHR0cCcgKSApIHsKCQkJJGFjdGlvbl91cmwgPSAkdGhpc
y0+X2FkZGl0aW9uYWxfcXVlcnlfc3RyaW5nOwoJCX0gZWxzZSB7CgoJCQlpZiAoIHBiX2JhY2t1cGJ1ZGR5
OjpwYWdlX3VybCgpICE9ICcnICkgewoJCQkJJGFjdGlvbl91cmwgPSBwYl9iYWNrdXBidWRkeTo6cGFnZV9
1cmwoKSAuICcmJyAuICR0aGlzLT5fYWRkaXRpb25hbF9xdWVyeV9zdHJpbmc7CgkJCX0gZWxzZSB7CgkJCQ
kkYWN0aW9uX3VybCA9ICc/JyAuICR0aGlzLT5fYWRkaXRpb25hbF9xdWVyeV9zdHJpbmc7CgkJCX0KCQl9C
goJCSRyZXR1cm4gID0gJzxmb3JtIG1ldGhvZD0icG9zdCIgYWN0aW9uPSInIC4gJGFjdGlvbl91cmwgLiAn
IiBjbGFzcz0icGJfZm9ybSBwYl9mb3JtICcgLiAkdGhpcy0+X3ByZWZpeCAuICR0aGlzLT5fZm9ybV9uYW1
lIC4gJ19mb3JtIiBpZD0iJyAuICR0aGlzLT5fcHJlZml4IC4gJHRoaXMtPl9mb3JtX25hbWUgLiAnX2Zvcm
0iPic7CgkJJHJldHVybiAuPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJyAuICR0aGlzLT5fcHJlZ
ml4IC4gJyIgdmFsdWU9IicgLiAkdGhpcy0+X2Zvcm1fbmFtZSAuICciPic7CgkJcmV0dXJuICRyZXR1cm47
Cgl9IC8vIEVuZCBzdGFydCgpLgoKCS8qKgoJICogRW5kcyB0aGUgZm9ybSBzZXR0aW5nIG5vbmNlIGFuZCB
jbG9zaW5nIDwvZm9ybT4uIE5PVCBhdXRvbWF0aWNhbGx5IHJ1biBleGNlcHQgaW4gcGx1Z2luYnVkZHlfc2
V0dGluZ3MgY2xhc3MuCgkgKgoJICogQHBhcmFtIGJvb2wgJGVjaG8gIEVjaG9zIHRoZSBmb3JtIGh0bWwuC
gkgKgoJICogQHJldHVybiBzdHJpbmd8bnVsbCAgTnVsbCBpZiBlY2hvLCBGb3JtIEhUTUwgaWYgJGVjaG8g
ZmFsc2UuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBlbmQoICRlY2hvID0gZmFsc2UgKSB7CgkJJHRoaXMtPl9
lbmRlZCA9IHRydWU7CgoJCSRyZXR1cm4gID0gcGJfYmFja3VwYnVkZHk6Om5vbmNlKCBmYWxzZSApOyAvLy
BEbyBub3QgZWNoby4KCQkkcmV0dXJuIC49ICc8L2Zvcm0+JzsKCgkJaWYgKCB0cnVlID09PSAkZWNobyApI
HsKCQkJZWNobyAkcmV0dXJuOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkcmV0dXJuOwoJCX0KCX0gLy8gRW5k
IGVuZCgpLgoKCS8qKgoJICogRGlzcGxheXMgKGVjaG9zKSBhIGZvcm0gaXRlbSBhbmQgYWxsIGl0cyBjb2R
lL0hUTUwuCgkgKgoJICogQHNlZSBwbHVnaW5idWRkeV9mb3JtLT5nZXQoKS4KCSAqCgkgKiBAcGFyYW0gc3
RyaW5nICRuYW1lICBOYW1lIC8gc2x1ZyBmb3IgdGhpcyBmb3JtIGl0ZW0uCgkgKiBAcGFyYW0gc3RyaW5nI
CRjc3MgICBBZGRpdGlvbmFsIENTUyB0byBhcHBseSB0byBmb3JtIGl0ZW0uCgkgKi8KCXB1YmxpYyBmdW5j
dGlvbiBkaXNwbGF5KCAkbmFtZSwgJGNzcyA9ICcnICkgewoJCWVjaG8gJHRoaXMtPmdldCggJG5hbWUsICR
jc3MgKTsKCX0gLy8gRW5kIGRpc3BsYXkoKS4KCgkvKioKCSAqIFJldHVybnMgYSBmb3JtIGl0ZW0gYW5kIG
FsbCBpdHMgY29kZS9IVE1MLgoJICogTGVmdCBjb2x1bW4gaXMgaGlkZGVuIGlmIGFuIG9iamVjdCdzIHRpd
GxlID0gJycuCgkgKiB0aXRsZSBvYmplY3QgdHlwZSBjb2xzcGFucyAyLgoJICoKCSAqIEBwYXJhbSBzdHJp
bmcgJG5hbWUgICAgICAgICBOYW1lIC8gc2x1ZyBmb3IgdGhpcyBmb3JtIGl0ZW0uCgkgKiBAcGFyYW0gc3R
yaW5nICRjc3MgICAgICAgICAgQWRkaXRpb25hbCBDU1MgdG8gYXBwbHkgdG8gZm9ybSBpdGVtLgoJICogQH
BhcmFtIHN0cmluZyAkY2xhc3NlcyAgICAgIENTUyBDbGFzcyBuYW1lcyBmb3IgZWxlbWVudHMuCgkgKiBAc
GFyYW0gc3RyaW5nICRvcmllbnRhdGlvbiAgT3B0aW9uYWw6IGhvcml6b250YWwgb3IgdmVydGljYWwuIERl
ZmF1bHQ6IGhvcml6b250YWwuCgkgKgoJICogQHJldHVybiBzdHJpbmcgIEFsbCBIVE1MLCBldGMgZm9yIHR
oaXMgZm9ybSBpdGVtLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZ2V0KCAkbmFtZSwgJGNzcyA9ICcnLCAkY2
xhc3NlcyA9ICcnLCAkb3JpZW50YXRpb24gPSAnaG9yaXpvbnRhbCcgKSB7CgkJaWYgKCB0cnVlID09PSAkd
Ghpcy0+X2VuZGVkICkgeyAvLyBGb3JtIGFscmVhZHkgY2xvc2VkIGFuZCBlbmRlZC4gRmF0YWwgcHJvYmxl
bS4KCQkJcmV0dXJuICd7RXJyb3I6IEZvcm0gYWxyZWFkeSBjbG9zZWQgd2l0aCBlbmQgZnVuY3Rpb24gc28
gY2Fubm90IGFkZCBtb3JlIGZpZWxkcy4gT25seSBlbmQgaW4gdmlldyBhZnRlciBhbGwgZGlzcGxheXMgYX
JlIGRvbmUufSc7CgkJfQoKCQlpZiAoIGlzc2V0KCAkdGhpcy0+X2lucHV0c1sgJG5hbWUgXSApICkgewoJC
QkkcHJlZml4ID0gJHRoaXMtPl9wcmVmaXg7CgoJCQlpZiAoIGZhbHNlID09PSAkdGhpcy0+X3N0YXJ0ZWQg
KSB7IC8vIEZvcm0gb3V0cHV0IGhhcyBub3Qgc3RhcnRlZC4gU3RhcnQgaXQuCgkJCQkkcmV0dXJuID0gJHR
oaXMtPnN0YXJ0KCk7CgkJCX0gZWxzZSB7CgkJCQkkcmV0dXJuID0gJyc7CgkJCX0KCgkJCSRpbnB1dCA9IC
YkdGhpcy0+X2lucHV0c1sgJG5hbWUgXTsKCgkJCWlmICggJycgIT0gJGNzcyApIHsKCQkJCSRjc3MgPSAnI
HN0eWxlPSInIC4gJGNzcyAuICciJzsKCQkJfQoKCQkJJGlkID0gJHByZWZpeCAuIHN0cl9yZXBsYWNlKCAn
IycsICdfXycsICRuYW1lICk7CgoJCQlpZiAoICd0ZXh0JyA9PSAkaW5wdXRbJ3R5cGUnXSApIHsKCgkJCQk
kcmV0dXJuIC49ICc8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9IicgLiAkY2xhc3NlcyAuICciIG5hbWU9Ii
cgLiAkcHJlZml4IC4gJG5hbWUgLiAnIiB2YWx1ZT0iJyAuICRpbnB1dFsndmFsdWUnXSAuICciIGlkPSInI
C4gZXNjX2F0dHIoICRpZCApIC4gJyInIC4gJGNzcyAuICc+JzsKCgkJCX0gZWxzZWlmICggJ3BsYWludGV4
dCcgPT0gJGlucHV0Wyd0eXBlJ10gKSB7CgoJCQkJJHJldHVybiAuPSAnPHNwYW4gY2xhc3M9IicgLiAkY2x
hc3NlcyAuICciICcgLiAkY3NzIC4gJz4nIC4gJGlucHV0Wyd2YWx1ZSddIC4gJzwvc3Bhbj4nOwoKCQkJfS
BlbHNlaWYgKCAnY29sb3InID09ICRpbnB1dFsndHlwZSddICkgewoKCQkJCS8vIFRPRE86IHRoaXMgYWN0d
WFsbHkgc2hvdWxkIG9ubHkgcnVuIG9uY2UgcGVyIFBBR0UgbG9hZC4gYWRkIGEgZnVuY3Rpb24gaXNfc2Ny
aXB0IGFuZCBpc19zdHlsZSBpbnRvIGZyYW1ld29yayB0byBzZWUgaWYgbG9hZGVkIGludG8gZnJhbWV3b3J
rIHlldCBvciBub3QuCgkJCQlpZiAoIGZhbHNlID09PSAkdGhpcy0+X2xvYWRlZF9jb2xvciApIHsgLy8gT2
5seSBsb2FkIHRoZSBqYXZhc2NyaXB0LCBDU1MsIGV0YyBvbmNlIHBlciBpbnN0YW5jZS4KCQkJCQlwYl9iY
WNrdXBidWRkeTo6bG9hZF9zY3JpcHQoICdqcXVlcnkubWluaUNvbG9ycy5taW4uanMnLCB0cnVlICk7CgkJ
CQkJcGJfYmFja3VwYnVkZHk6OmxvYWRfc3R5bGUoICdqcXVlcnkubWluaUNvbG9ycy5jc3MnLCB0cnVlICk
7CgkJCQkJZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCQkJCQlqUXVlcnkoZG9jdW
1lbnQpLnJlYWR5KCBmdW5jdGlvbigpIHsKCQkJCQkJalF1ZXJ5KCAiLnBiX2NvbG9ycGlja2VyIiApLm1pb
mlDb2xvcnMoeyBsZXR0ZXJDYXNlOiAidXBwZXJjYXNlIiB9KTsKCQkJCQkJfSk7CgkJCQkJPC9zY3JpcHQ+
CgkJCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCQkJCQkJLm1pbmlDb2xvcnMtdHJpZ2dlciB7CgkJCQk
JCQliYWNrZ3JvdW5kOiB1cmwoICcgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpIC4gJy9wbHVnaW
5idWRkeS9pbWFnZXMvbWluaWNvbG9ycy90cmlnZ2VyLnBuZyApIGNlbnRlciBuby1yZXBlYXQ7CgkJCQkJC
X0KCQkJCQkJLm1pbmlDb2xvcnMtY29sb3JzIHsKCQkJCQkJCWJhY2tncm91bmQ6IHVybCggJyAuIHBiX2Jh
Y2t1cGJ1ZGR5OjpwbHVnaW5fdXJsKCkgLiAnL3BsdWdpbmJ1ZGR5L2ltYWdlcy9taW5pY29sb3JzL2dyYWR
pZW50LnBuZyApIGNlbnRlciBuby1yZXBlYXQ7CgkJCQkJCX0KCQkJCQkJLm1pbmlDb2xvcnMtaHVlcyB7Cg
kJCQkJCQliYWNrZ3JvdW5kOiB1cmwoICcgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpIC4gJy9wb
HVnaW5idWRkeS9pbWFnZXMvbWluaWNvbG9ycy9yYWluYm93LnBuZyApIGNlbnRlciBuby1yZXBlYXQ7CgkJ
CQkJCX0KCQkJCQkJLm1pbmlDb2xvcnMtY29sb3JQaWNrZXIgewoJCQkJCQkJYmFja2dyb3VuZDogdXJsKCA
nIC4gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKSAuICcvcGx1Z2luYnVkZHkvaW1hZ2VzL21pbmljb2
xvcnMvY2lyY2xlLmdpZiApIGNlbnRlciBuby1yZXBlYXQ7CgkJCQkJCX0KCQkJCQkJLm1pbmlDb2xvcnMta
HVlUGlja2VyIHsKCQkJCQkJCWJhY2tncm91bmQ6IHVybCggJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5f
dXJsKCkgLiAnL3BsdWdpbmJ1ZGR5L2ltYWdlcy9taW5pY29sb3JzL2xpbmUuZ2lmICkgY2VudGVyIG5vLXJ
lcGVhdDsKCQkJCQkJfQoJCQkJCTwvc3R5bGU+JzsKCQkJCQkkdGhpcy0+X2xvYWRlZF9jb2xvciA9IHRydW
U7CgkJCQl9CgoJCQkJaWYgKCAnJyA9PSAkY3NzICkgeyAvLyBkZWZhdWx0IHdpZHRoLgoJCQkJCSRjc3MgP
SAnIHN0eWxlPSJ3aWR0aDogNjBweDsiJzsKCQkJCX0KCgkJCQkkcmV0dXJuIC49ICc8aW5wdXQgY2xhc3M9
InBiX2NvbG9ycGlja2VyICcgLiAkY2xhc3NlcyAuICciIHR5cGU9InRleHQiIG5hbWU9IicgLiAkcHJlZml
4IC4gJG5hbWUgLiAnIiB2YWx1ZT0iJyAuICRpbnB1dFsndmFsdWUnXSAuICciIGlkPSInIC4gZXNjX2F0dH
IoICRpZCApIC4gJyInIC4gJGNzcyAuICc+JzsKCgkJCX0gZWxzZWlmICggJ2hpZGRlbicgPT0gJGlucHV0W
yd0eXBlJ10gKSB7CgoJCQkJJHJldHVybiAuPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJyAuICRw
cmVmaXggLiAkbmFtZSAuICciIHZhbHVlPSInIC4gJGlucHV0Wyd2YWx1ZSddIC4gJyIgY2xhc3M9IicgLiA
kY2xhc3NlcyAuICciIGlkPSInIC4gZXNjX2F0dHIoICRpZCApIC4gJyInIC4gJGNzcyAuICc+JzsKCgkJCX
0gZWxzZWlmICggJ3d5c2l3eWcnID09ICRpbnB1dFsndHlwZSddICkgewoKCQkJCSR3eXNpd3lnX3NldHRpb
mdzID0gYXJyYXlfbWVyZ2UoICRpbnB1dFsnc2V0dGluZ3MnXSwgYXJyYXkoICd0ZXh0YXJlYV9uYW1lJyA9
PiAkcHJlZml4IC4gJG5hbWUgKSApOwoKCQkJCW9iX3N0YXJ0KCk7CgkJCQl3cF9lZGl0b3IoICRpbnB1dFs
ndmFsdWUnXSwgJHByZWZpeCAuICRuYW1lLCAkd3lzaXd5Z19zZXR0aW5ncyApOwoJCQkJJHJldHVybiAuPS
BvYl9nZXRfY29udGVudHMoKTsKCQkJCW9iX2VuZF9jbGVhbigpOwoKCQkJfSBlbHNlaWYgKCAndGl0bGUnI
D09ICRpbnB1dFsndHlwZSddICkgewoJCQkJLy8gbm8gbG9uZ2VyIHN1cHBvcnRlZCBpbnB1dC4KCQkJfSBl
bHNlaWYgKCAnaHRtbCcgPT0gJGlucHV0Wyd0eXBlJ10gKSB7CgoJCQkJJHJldHVybiAuPSAkaW5wdXRbJ2h
0bWwnXTsKCgkJCX0gZWxzZWlmICggJ3RleHRhcmVhJyA9PSAkaW5wdXRbJ3R5cGUnXSApIHsKCgkJCQkkcm
V0dXJuIC49ICc8dGV4dGFyZWEgbmFtZT0iJyAuICRwcmVmaXggLiAkbmFtZSAuICciIGNsYXNzPSInIC4gJ
GNsYXNzZXMgLiAnIiBpZD0iJyAuIGVzY19hdHRyKCAkaWQgKSAuICciJyAuICRjc3MgLiAnPicgLiAkaW5w
dXRbJ3ZhbHVlJ10gLiAnPC90ZXh0YXJlYT4nOwoKCQkJfSBlbHNlaWYgKCAncGFzc3dvcmQnID09ICRpbnB
1dFsndHlwZSddICkgewoKCQkJCS8vIFF1aWNrIGZpeCAtIGVzY19hdHRyIGlzIG5vdCBjYWxsYWJsZSBkdX
JpbmcgSU1QT1JUQlVERFkuCgkJCQlpZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ2VzY19hdHRyJyApICkgewoJC
QkJCSRpbnB1dF92YWx1ZSA9IGVzY19hdHRyKCAkaW5wdXRbJ3ZhbHVlJ10gKTsKCQkJCX0gZWxzZSB7CgkJ
CQkJJGlucHV0X3ZhbHVlID0gJGlucHV0Wyd2YWx1ZSddOwoJCQkJfQoJCQkJJHJldHVybiAuPSAnPGlucHV
0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSInIC4gJHByZWZpeCAuICRuYW1lIC4gJyIgdmFsdWU9IicgLiAkaW
5wdXRfdmFsdWUgLiAnIiBjbGFzcz0iJyAuICRjbGFzc2VzIC4gJyIgaWQ9IicgLiBlc2NfYXR0ciggJGlkI
CkgLiAnIicgLiAkY3NzIC4gJz4nOwoKCQkJfSBlbHNlaWYgKCAnc2VsZWN0JyA9PSAkaW5wdXRbJ3R5cGUn
XSApIHsKCgkJCQkkcmV0dXJuIC49ICc8c2VsZWN0IG5hbWU9IicgLiAkcHJlZml4IC4gJG5hbWUgLiAnIiB
jbGFzcz0iJyAuICRjbGFzc2VzIC4gJyIgaWQ9IicgLiBlc2NfYXR0ciggJGlkICkgLiAnIicgLiAkY3NzIC
4gJz4nOwoJCQkJZm9yZWFjaCAoICRpbnB1dFsnb3B0aW9ucyddIGFzICRvcHRpb25fdmFsdWUgPT4gJG9wd
Glvbl90aXRsZSApIHsKCQkJCQkkcmV0dXJuIC49ICc8b3B0aW9uIHZhbHVlPSInIC4gJG9wdGlvbl92YWx1
ZSAuICciJzsKCQkJCQlpZiAoICRvcHRpb25fdmFsdWUgPT0gJGlucHV0Wyd2YWx1ZSddICkgewoJCQkJCQk
kcmV0dXJuIC49ICcgc2VsZWN0ZWQ9InNlbGVjdGVkIic7IH0KCQkJCQkkcmV0dXJuIC49ICc+JyAuICRvcH
Rpb25fdGl0bGUgLiAnPC9vcHRpb24+JzsKCQkJCX0KCQkJCSRyZXR1cm4gLj0gJzwvc2VsZWN0Pic7CgoJC
Ql9IGVsc2VpZiAoICdyYWRpbycgPT0gJGlucHV0Wyd0eXBlJ10gKSB7CgoJCQkJJHJldHVybiAuPSAnPGlu
cHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJyAuICRwcmVmaXggLiAkbmFtZSAuICciIHZhbHVlPSIiPic7IC8
vIGRlZmF1bHQgaWYgbm8gcmFkaW8gY2hlY2tlZC4KCgkJCQkkaSA9IDA7CgkJCQlmb3JlYWNoICggJGlucH
V0WydvcHRpb25zJ10gYXMgJG9wdGlvbl92YWx1ZSA9PiAkb3B0aW9uX3RpdGxlICkgewoJCQkJCSRpKys7C
gkJCQkJJHJhZGlvX2lkID0gJGlkIC4gJ18nIC4gJGk7CgkJCQkJJHJldHVybiAuPSAnPGlucHV0IHR5cGU9
InJhZGlvIiBuYW1lPSInIC4gJHByZWZpeCAuICRuYW1lIC4gJyIgY2xhc3M9IicgLiAkY2xhc3NlcyAuICc
iIGlkPSInIC4gZXNjX2F0dHIoICRyYWRpb19pZCApIC4gJyIgdmFsdWU9IicgLiAkb3B0aW9uX3ZhbHVlIC
4gJyInIC4gJGNzczsKCgkJCQkJaWYgKCAkb3B0aW9uX3ZhbHVlID09ICRpbnB1dFsndmFsdWUnXSApIHsgL
y8gQ2hlY2sgaWYgdGhpcyBpdGVtIGlzIHNlbGVjdGVkLgoJCQkJCQkkcmV0dXJuIC49ICcgY2hlY2tlZD0i
Y2hlY2tlZCInOwoJCQkJCX0KCQkJCQkkcmV0dXJuIC49ICc+ICcgLiAkb3B0aW9uX3RpdGxlOwoJCQkJCWl
mICggJGkgPCBjb3VudCggJGlucHV0WydvcHRpb2
5zJ10gKSApIHsgLy8gc3BhY2VyIGJldHdlZW4gZWFjaCBvbmUuCgkJCQkJCWlmICggJ2hvcml6b250YWwnI
D09ICRvcmllbnRhdGlvbiApIHsgLy8gSG9yaXpvbmFsIGRpc3BsYXkuCgkJCQkJCQkkcmV0dXJuIC49ICcg
Jm5ic3A7Jm5ic3A7Jm5ic3A7ICc7CgkJCQkJCX0gZWxzZSB7IC8vIFZlcnRpY2FsIGRpc3BsYXkuCgkJCQk
JCQkkcmV0dXJuIC49ICc8YnI+JzsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJfSBlbHNlaWYgKCAnY2hlY2
tib3gnID09ICRpbnB1dFsndHlwZSddICkgewoJCQkJJHJldHVybiAuPSAnPGlucHV0IHR5cGU9ImhpZGRlb
iIgbmFtZT0iJyAuICRwcmVmaXggLiAkbmFtZSAuICciIHZhbHVlPSInIC4gJGlucHV0WydvcHRpb25zJ11b
J3VuY2hlY2tlZCddIC4gJyI+JzsKCQkJCSRyZXR1cm4gLj0gJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmF
tZT0iJyAuICRwcmVmaXggLiAkbmFtZSAuICciIGNsYXNzPSInIC4gJGNsYXNzZXMgLiAnIiBpZD0iJyAuIG
VzY19hdHRyKCAkaWQgKSAuICciIHZhbHVlPSInIC4gJGlucHV0WydvcHRpb25zJ11bJ2NoZWNrZWQnXSAuI
CciJyAuICRjc3M7CgkJCQlpZiAoICRpbnB1dFsnb3B0aW9ucyddWydjaGVja2VkJ10gPT0gJGlucHV0Wyd2
YWx1ZSddIHx8ICggaXNzZXQoICRpbnB1dFsnZGVmYXVsdCddICkgJiYgJGlucHV0WydvcHRpb25zJ11bJ2N
oZWNrZWQnXSA9PSAkaW5wdXRbJ2RlZmF1bHQnXSApICkgewoJCQkJCSRyZXR1cm4gLj0gJyBjaGVja2VkJz
sKCQkJCX0KCQkJCSRyZXR1cm4gLj0gJz4nOwoKCQkJfSBlbHNlaWYgKCAnc3VibWl0JyA9PSAkaW5wdXRbJ
3R5cGUnXSApIHsKCgkJCQkkc3VibWl0X2lkID0gJGlkIC4gJ18nIC4gc2FuaXRpemVfdGl0bGUoICRpbnB1
dFsndmFsdWUnXSApOwoJCQkJJHJldHVybiAuPSAnPGlucHV0IGNsYXNzPSJidXR0b24tcHJpbWFyeSAnIC4
gJGNsYXNzZXMgLiAnIiB0eXBlPSJzdWJtaXQiIG5hbWU9IicgLiBlc2NfYXR0ciggJHByZWZpeCAuICRuYW
1lICkgLiAnIiB2YWx1ZT0iJyAuIGVzY19hdHRyKCAkaW5wdXRbJ3ZhbHVlJ10gKSAuICciIGlkPSInIC4gZ
XNjX2F0dHIoICRzdWJtaXRfaWQgKSAuICciJyAuICRjc3MgLiAnPic7CgoJCQl9IGVsc2UgewoKCQkJCSRy
ZXR1cm4gLj0gJ3tVbmtub3duIGZvcm0gaXRlbSB0eXBlOiBgJyAuICRpbnB1dFsndHlwZSddIC4gJ2AufSc
7CgoJCQl9CgoJCQlyZXR1cm4gJHJldHVybjsKCQl9IGVsc2UgewoJCQlyZXR1cm4gJ3tJbnZhbGlkIGZvcm
0gZmllbGQ6IGAnIC4gJG5hbWUgLiAnYC59JzsKCQl9CgoJfSAvLyBFbmQgZ2V0KCkuCgoJLyoqCgkgKiBVc
GRhdGVzIHRoZSB2YWx1ZSBvZiBhbiBleGlzdGluZyBmb3JtIGl0ZW0uCgkgKgoJICogQHBhcmFtIHN0cmlu
ZyAkbmFtZSAgIE5hbWUgb2YgdGhlIGl0ZW0gaW4gdGhlIGZvcm0gdG8gdXBkYXRlLiBFeDogdGV4dC4KCSA
qIEBwYXJhbSBzdHJpbmcgJHZhbHVlICBWYWx1ZSB0byBhcHBseSB0byB0aGUgZm9ybSBpdGVtLgoJICovCg
lwdWJsaWMgZnVuY3Rpb24gc2V0X3ZhbHVlKCAkbmFtZSwgJHZhbHVlICkgewoJCSR0aGlzLT5faW5wdXRzW
yAkbmFtZSBdWyd2YWx1ZSddID0gJHZhbHVlOwoJfSAvLyBFbmQgc2V0X3ZhbHVlKCkuCgoJLyoqCgkgKiBH
ZXQgdGhlIHN1Ym1pdHRlZCAoUE9TVGVkKSB2YWx1ZSBvZiBhIGZvcm0gaXRlbS4KCSAqCgkgKiBAcGFyYW0
gc3RyaW5nICRuYW1lICBOYW1lIC8gc2x1ZyBmb3IgdGhpcyBmb3JtIGl0ZW0uCgkgKgoJICogQHJldHVybi
BzdHJpbmd8Ym9vbCAgRmFsc2UgaWYgbm90IGZvdW5kLiBTdHJpcHMgV1Agc2xhc2hlcy4KCSAqLwoJcHVib
GljIGZ1bmN0aW9uIGdldF92YWx1ZSggJG5hbWUgKSB7CgkJaWYgKCBwYl9iYWNrdXBidWRkeTo6X1BPU1Qo
ICR0aGlzLT5fcHJlZml4IC4gJG5hbWUgKSAhPSAnJyApIHsgLy8gU3VibWl0dGVkIHZhbHVlIGV4aXN0cyw
gdXNlIGl0LgoJCQlyZXR1cm4gc3RyaXBzbGFzaGVzX2RlZXAoIHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJH
RoaXMtPl9wcmVmaXggLiAkbmFtZSApICk7CgkJfSBlbHNlIHsgLy8gTm90aGluZyBzdWJtaXR0ZWQsIGZha
WwuCgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9IC8vIEVuZCBnZXRfdmFsdWUoKS4KCgkvKioKCSAqIFRlc3Rz
IHdoZXRoZXIgYSBmb3JtIGl0ZW0ncyBydWxlcyBvbiBhIHByb3ZpZGVkIHZhbHVlLiBJZiBubyB2YWx1ZSB
pcyBwcm92aWRlZCB0aGVuIHdpbGwgdHJ5IHRvIGdldCB0aGUgUE9TVCdlZCB2YWx1ZS4KCSAqCgkgKiBAc2
VlIHBiX2JhY2t1cGJ1ZGR5Ojp0ZXN0X3J1bGUoKQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJG5hbWUgICBJb
nB1dC9GaWVsZCBOYW1lLgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUgIE9wdGlvbmFsOiBUaGlzIHdpbGwg
YmUgdGVzdGVkIHdpdGggdGhlIHJ1bGUgYXNzaWduZWQgdG8gdGhlIGZvcm0gaXRlbSB3aXRoIHRoZSBwcm9
2aWRlZCBuYW1lLgoJICogICAgICAgICAgICAgICAgICAgICAgIElmIGVtcHR5IHdlIHdpbGwgdHJ5IHRvIH
Rlc3QgYmFzZWQgb24gYSBzdWJtaXR0ZWQgcG9zdCB2YWx1ZSBpZiBpdCBleGlzdHMuCgkgKgoJICogQHJld
HVybiB0cnVlfGFycmF5ICBUcnVlIGlmIHRoZSB2YWx1ZSBwYXNzZXM7IGFycmF5IG9mIGVycm9yIG1lc3Nh
Z2VzIG9uIGZhaWx1cmUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0KCAkbmFtZSwgJHZhbHVlID0gJyc
gKSB7CgkJaWYgKCAnJyA9PSAkdmFsdWUgKSB7IC8vIE5vIHZhbHVlLCB0cnkgdG8gZ2V0IGl0LgoJCQlpZi
AoICcnICE9IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJHRoaXMtPl9wcmVmaXggLiAkbmFtZSApICkgeyAvL
yBTdWJtaXR0ZWQgdmFsdWUgZXhpc3RzLCB1c2UgaXQuCgkJCQkkdmFsdWUgPSBwYl9iYWNrdXBidWRkeTo6
X1BPU1QoICR0aGlzLT5fcHJlZml4IC4gJG5hbWUgKTsKCQkJfQoJCX0KCgkJaWYgKCBpc3NldCggJHRoaXM
tPl9pbnB1dHNbICRuYW1lIF1bJ3J1bGVzJ10gKSApIHsKCQkJcmV0dXJuIHNlbGY6OnRlc3RfcnVsZSggJH
RoaXMtPl9pbnB1dHNbICRuYW1lIF1bJ3J1bGVzJ10sICR2YWx1ZSApOwoJCX0gZWxzZSB7IC8vIE5vIHRlc
3RzLiBQYXNzZWQuCgkJCXJldHVybiB0cnVlOwoJCX0KCX0gLy8gRW5kIHRlc3QoKS4KCgkvKioKCSAqIFRl
c3RzIGEgcHJvdmlkZWQgcnVsZXNldCBhZ2FpbnN0IGEgdmFsdWUgdG8gdmVyaWZ5IHdoZXRoZXIgaXQgY29
tcGxpZXMgb3Igbm90LgoJICoKCSAqIEBhdXRob3IgRGFuIEhhcnpoZWltCgkgKiBAc2VlIHBsdWdpbmJ1ZG
R5X2Zvcm0tPnRlc3QoKQoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHJ1bGVzZXQgIFJ1bGUocykgdG8gdmFsa
WRhdGUgYWdhaW5zdC4gU2VlIGNvZGV4IGZvciBkZXRhaWxzLiBUT0RPOiBkb2N1bWVudCBydWxlc2V0cyBo
ZXJlLgoJICogQHBhcmFtIHN0cmluZyAkdmFsdWUgICAgVmFsdWUgdG8gdmFsaWRhdGUuCgkgKgoJICogQHJ
ldHVybiB0cnVlfGFycmF5ICBUcnVlIG9uIHN1Y2Nlc3M7IGFycmF5IG9mIGVycm9yKHMpIGVuY291bnRlcm
VkIG9uIGZhaWx1cmUuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiB0ZXN0X3J1bGUoICRydWxlc2V0LCAkdmFsd
WUgKSB7CgkJJGVycm9ycyA9IGFycmF5KCk7CgkJaWYgKCAnJyA9PSAkcnVsZXNldCApIHsKCQkJcmV0dXJu
IHRydWU7CgkJfQoKCQkkcnVsZXMgPSBleHBsb2RlKCAnfCcsICRydWxlc2V0ICk7IC8vIENyZWF0ZSBhcnJ
heSBvZiBydWxlcy4KCQlmb3JlYWNoICggJHJ1bGVzIGFzICRydWxlICkgeyAvLyBJdGVyYXRlIHRocm91Z2
ggZWFjaCBydWxlLgoKCQkJLy8gKioqKiogR0VUIFJVTEUgVFlQRSAqKioqKgoJCQkvLyBHcmFiIHRoZSB0e
XBlIG9mIHRoZSBydWxlOyBleDogc3RyaW5nLCBpbnQsIHNldCwgZXRjIHZpYSByZWdleC4KCQkJJHJ1bGVf
dHlwZV9wb3MgPSBzdHJwb3MoICRydWxlLCAnWycgKTsKCgkJCWlmICggZmFsc2UgPT09ICRydWxlX3R5cGV
fcG9zICkgewoJCQkJJHJ1bGVfdHlwZSA9ICRydWxlOwoJCQl9IGVsc2UgewoJCQkJJHJ1bGVfdHlwZSA9IH
N1YnN0ciggJHJ1bGUsIDAsICRydWxlX3R5cGVfcG9zICk7CgkJCX0KCgkJCS8qKgoJCQkgKiBSRVFVSVJFR
AoJCQkgKgoJCQkgKiBSdWxlIGlzIHJlcXVpcmVkLgoJCQkgKiBGYWlsIGlmICR2YWx1ZSBpcyBlbXB0eS4K
CQkJICogaWYgZmFpbHM6ICAkZXJyb3JzW10gPSAnVmFsdWUgaXMgbm90IGEgc3RyaW5nLic7CgkJCSAqLwo
JCQlpZiAoICdyZXF1aXJlZCcgPT0gJHJ1bGVfdHlwZSApIHsgLy8gUmVxdWlyZWQgcnVsZS4KCQkJCWlmIC
ggJycgPT0gJHZhbHVlICkgewoJCQkJCSRlcnJvcnNbXSA9ICdUaGlzIHZhbHVlIGlzIHJlcXVpcmVkLic7C
gkJCQkJcmV0dXJuICRlcnJvcnM7IC8vIE5vIG1vcmUgY2hlY2tpbmcgaWYgbGVmdCBibGFuay4KCQkJCX0K
CgkJCQkvKioKCQkJCSAqIFNUUklORwoJCQkJICoKCQkJCSAqIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHR
oZSBzdHJpbmcgaXMgdGhlIGFwcHJvcHJpYXRlIGxlbmd0aC4KCQkJCSAqLwoJCQl9IGVsc2VpZiAoICdzdH
JpbmcnID09ICRydWxlX3R5cGUgKSB7IC8vIFN0cmluZyBydWxlLgoJCQkJJHN1YnJ1bGUgICAgPSBzdHJzd
HIoICRydWxlLCAnWycgKTsKCQkJCSRoeXBoZW5fcG9zID0gc3RycG9zKCAkc3VicnVsZSwgJy0nICk7CgkJ
CQlpZiAoICcnICE9ICRoeXBoZW5fcG9zICkgewoJCQkJCSRmaXJzdF9udW1iZXIgID0gc3Vic3RyKCAkc3V
icnVsZSwgMSwgJGh5cGhlbl9wb3MgLSAxICk7CgkJCQkJJHNlY29uZF9udW1iZXIgPSBzdWJzdHIoICRzdW
JydWxlLCAkaHlwaGVuX3BvcyArIDEsIC0xICk7CgkJCQkJJHZhbF9sZW5ndGggICAgPSBzdHJsZW4oICR2Y
Wx1ZSApOwoJCQkJCWlmICggJHZhbF9sZW5ndGggPCAkZmlyc3RfbnVtYmVyIHx8ICR2YWxfbGVuZ3RoID4g
JHNlY29uZF9udW1iZXIgKSB7CgkJCQkJCSRlcnJvcnNbXSA9ICdMZW5ndGggb2YgdmFsdWUgYCcgLiBodG1
sZW50aXRpZXMoICR2YWx1ZSApIC4gJ2AgaXMgaW52YWxpZC4nOwoJCQkJCX0KCQkJCX0KCgkJCQkvKioKCQ
kJCSAqIElOVCBUWVBFCgkJCQkgKgoJCQkJICogTWFrZSBzdXJlIHRoYXQgdGhlIHZhbHVlIGZpdHMgaW5za
WRlIG9mIGJvdW5kcwoJCQkJICogTWFrZSBzdXJlIGl0IGRvZXNuJ3QgaW5jbHVkZSBhIGRlY2ltYWwKCQkJ
CSAqIEFjY2VwdHMgYmxhbmsgdmFsdWUKCQkJCSAqLwoJCQl9IGVsc2VpZiAoICdpbnQnID09ICRydWxlX3R
5cGUgKSB7CgkJCQlpZiAoICcnICE9ICR2YWx1ZSApIHsKCQkJCQlpZiAoICEgaXNfbnVtZXJpYyggJHZhbH
VlICkgfHwgc3RycG9zKCAkdmFsdWUsICcuJyApICE9PSBmYWxzZSApIHsKCQkJCQkJJGVycm9yc1tdID0gJ
2AnIC4gaHRtbGVudGl0aWVzKCAkdmFsdWUgKSAuICdgIGlzIG5vdCBhIHZhbGlkIG51bWJlci4nOwoJCQkJ
CX0gZWxzZSB7CgkJCQkJCQkkc3VicnVsZSAgICA9IHN0cnN0ciggJHJ1bGUsICdbJyApOwoJCQkJCQkJJGh
5cGhlbl9wb3MgPSBzdHJwb3MoICRzdWJydWxlLCAnLScgKTsKCQkJCQkJaWYgKCAnJyAhPSAkaHlwaGVuX3
BvcyApIHsKCQkJCQkJCSRmaXJzdF9udW1iZXIgID0gc3Vic3RyKCAkc3VicnVsZSwgMSwgJGh5cGhlbl9wb
3MgLSAxICk7CgkJCQkJCQkkc2Vjb25kX251bWJlciA9IHN1YnN0ciggJHN1YnJ1bGUsICRoeXBoZW5fcG9z
ICsgMSwgLTEgKTsKCQkJCQkJCWlmICggJHZhbHVlIDwgJGZpcnN0X251bWJlciB8fCAkdmFsdWUgPiAkc2V
jb25kX251bWJlciApIHsKCQkJCQkJCQkkZXJyb3JzW10gPSAnVmFsdWUgYCcgLiBodG1sZW50aXRpZXMoIC
R2YWx1ZSApIC4gJ2AgaXMgb3V0c2lkZSBvZiB0aGUgc2V0IGJvdW5kcy4nOwoJCQkJCQkJfQoJCQkJCQl9C
gkJCQkJfQoJCQkJfQoKCQkJCS8qKgoJCQkJICogRU1BSUwgVFlQRQoJCQkJICoKCQkJCSAqIFZhbGlkYXRl
IHRvIG1ha2Ugc3VyZSB0aGUgZS1tYWlsIGFkZHJlc3MgaXMgYWN0dWFsbHkgYW4gZS1tYWlsIGFkZHJlc3M
uCgkJCQkgKi8KCQkJfSBlbHNlaWYgKCAnZW1haWwnID09ICRydWxlX3R5cGUgKSB7CgkJCQlpZiAoICcnIC
E9ICR2YWx1ZSApIHsKCQkJCQkvLyBUT0RPOiBBZGQgY3VzdG9tIGNhbGxiYWNrIGZ1bmN0aW9uYWxpdHkga
GVyZS4KCQkJCQlpZiAoICEgZmlsdGVyX3ZhciggJHZhbHVlLCBGSUxURVJfVkFMSURBVEVfRU1BSUwgKSAp
IHsKCQkJCQkJJGVycm9yc1tdID0gJ1ZhbHVlIGAnIC4gaHRtbGVudGl0aWVzKCAkdmFsdWUgKSAuICdgIGl
zIG5vdCBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLic7CgkJCQkJfQoJCQkJfQoKCQkJCS8qKgoJCQkJICogU0
VUIFRZUEUKCQkJCSAqCgkJCQkgKiBNYWtlIHN1cmUgdGhhdCAkdmFsdWUgZmFsbHMgaW50byBvbmUgb2Ygd
GhlIHR5cGVzLgoJCQkJICovCgkJCX0gZWxzZWlmICggJ3NldCcgPT0gJHJ1bGVfdHlwZSApIHsKCQkJCS8v
IHNldFtzdHJpbmcsc3RyaW5nLHN0cmluZyxdLgoJCQkJJGlzX3RoZXJlICA9IGZhbHNlOwoJCQkJJHN1YnN
0cmluZyA9IHN0cnN0ciggJHJ1bGUsICdbJyApOwoJCQkJJHN1YnN0cmluZyA9IHN1YnN0ciggJHN1YnN0cm
luZywgJHN1YnN0cmluZyArIDEsICRzdWJzdHJpbmcgLSAxICk7CgkJCQkkcGFydHMgICAgID0gZXhwbG9kZ
SggJywnLCAkc3Vic3RyaW5nICk7CgkJCQlmb3JlYWNoICggJHBhcnRzIGFzICRwYXJ0ICkgewoJCQkJCWlm
ICggJHZhbHVlID09ICRwYXJ0ICkgewoJCQkJCQkkaXNfdGhlcmUgPSB0cnVlOwoJCQkJCX0KCQkJCX0KCQk
JCWlmICggZmFsc2UgPT0gJGlzX3RoZXJlICkgewoJCQkJCSRlcnJvcnNbXSA9ICdWYWx1ZSBgJyAuIGh0bW
xlbnRpdGllcyggJHZhbHVlICkgLiAnYCBpcyBub3QgYSB2YWxpZCB2YWx1ZS4nOwoJCQkJfQoKCQkJCS8qK
goJCQkJICogTlVNIFRZUEUKCQkJCSAqCgkJCQkgKiBNYWtlIHN1cmUgdGhhdCAkdmFsdWUgaXMgbnVtZXJp
YywgaWYgc28sIG1ha2Ugc3VyZSBpdCBmaXRzIGluc2lkZSBvZiBib3VuZHMKCQkJCSAqLwoJCQl9IGVsc2V
pZiAoICdudW1iZXInID09ICRydWxlX3R5cGUgKSB7CgkJCQlpZiAoICcnICE9ICR2YWx1ZSApIHsKCQkJCQ
lpZiAoICEgaXNfbnVtZXJpYyggJHZhbHVlICkgKSB7CgkJCQkJCSRlcnJvcnNbXSA9ICR2YWx1ZSAuICcga
XMgbm90IGEgbnVtYmVyLic7CgkJCQkJfQoJCQkJCSRzdWJydWxlICAgID0gc3Ryc3RyKCAkcnVsZSwgJ1sn
ICk7CgkJCQkJJGh5cGhlbl9wb3MgPSBzdHJwb3MoICRzdWJydWxlLCAnLScgKTsKCQkJCQlpZiAoICcnICE
9ICRoeXBoZW5fcG9zICkgewoJCQkJCQkkZmlyc3RfbnVtYmVyICA9IHN1YnN0ciggJHN1YnJ1bGUsIDEsIC
RoeXBoZW5fcG9zIC0gMSApOwoJCQkJCQkkc2Vjb25kX251bWJlciA9IHN1YnN0ciggJHN1YnJ1bGUsICRoe
XBoZW5fcG9zICsgMSwgLTEgKTsKCQkJCQkJaWYgKCAkdmFsdWUgPCAkZmlyc3RfbnVtYmVyIHx8ICR2YWx1
ZSA+ICRzZWNvbmRfbnVtYmVyICkgewoJCQkJCQkJJGVycm9yc1tdID0gJ1ZhbHVlIGAnIC4gaHRtbGVudGl
0aWVzKCAkdmFsdWUgKSAuICdgIGlzIG91dHNpZGUgb2YgdGhlIHNldCBib3VuZHMuJzsKCQkJCQkJfQoJCQ
kJCX0KCQkJCX0KCQkJfSBlbHNlIHsKCQkJCS8vI
FRPRE86IEFkZCBjdXN0b20gY2FsbGJhY2sgZnVuY3Rpb25hbGl0eSBoZXJlLgoJCQkJLy8gVW5rbm93biBy
dWxlIHNvIG5vdGlmeSB0aGUgZGV2ZWxvcGVyLgoJCQkJJGVycm9yc1tdID0gJ3tFcnJvciAjNTQ1ODkuIFV
ua25vd24gcnVsZSBgJyAuICRydWxlX3R5cGUgLiAnYC59JzsKCQkJfQoJCX0KCgkJaWYgKCBjb3VudCggJG
Vycm9ycyApID09PSAwICkgeyAvLyBObyBlcnJvcnM7IHN1Y2Nlc3MhCgkJCXJldHVybiB0cnVlOwoJCX0gZ
WxzZSB7IC8vIE9uZSBvciBtb3JlIGVycm9ycyBlbmNvdW50ZXJlZDsgcmV0dXJuIGFycmF5IG9mIGVycm9y
cy4KCQkJcmV0dXJuICRlcnJvcnM7CgkJfQoJfSAvLyBFbmQgdGVzdF9ydWxlKCkuCgoJLyoqCgkgKiBDbGV
hcnMgdGhlIHZhbHVlIG9mIGFsbCBmb3JtIGl0ZW1zIHNldHRpbmcgdGhlIHZhbHVlIHRvIGFuIGVtcHR5IH
N0cmluZyAnJy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGNsZWFyX3ZhbHVlcygpIHsKCQlmb3JlYWNoICggJ
HRoaXMtPl9pbnB1dHMgYXMgJiRpbnB1dCApIHsKCQkJJGlucHV0Wyd2YWx1ZSddID0gJyc7CgoJCX0KCX0g
Ly8gRW5kIGNsZWFyX3ZhbHVlcygpLgoKfSAvLyBFbmQgY2xhc3MgcGx1Z2luYnVkZHlfZm9ybQo=
###PACKDATA,FILE_END,/pluginbuddy/classes/form.php,importbuddy/pluginbuddy/classes/
form.php
###PACKDATA,FILE_START,/pluginbuddy/classes/format.php,importbuddy/pluginbuddy/clas
ses/format.php
PD9waHAKCgoKLyoJY2xhc3MgcGx1Z2luYnVkZHlfZm9ybWF0CiAqCUBhdXRob3IgRHVzdGluIEJvbHRvbgo
gKgogKglIZWxwcyBmb3JtYXQgY29udGVudCBvciBkYXRhIHN1Y2ggYXMgdGltZSwgZGF0ZSwgZmlsZSBzaX
plLCBldGMuCiAqLwpjbGFzcyBwYl9iYWNrdXBidWRkeV9mb3JtYXQgewoKCgoJLy8gKioqKioqKioqKiBQV
UJMSUMgUFJPUEVSVElFUyAqKioqKioqKioqCgoKCgkvLyAqKioqKioqKioqIFBSSVZBVEUgUFJPUEVSVElF
UyAqKioqKioqKioqCglwcml2YXRlICRfdGltZXN0YW1wID0gJ00gaiwgWSBnOmk6cyBhJzsKCgoJLy8gKio
qKioqKioqKiBGVU5DVElPTlMgKioqKioqKioqKgoKCgoJLyoJcGx1Z2luYnVkZHlfZm9ybWF0LT5fX2Nvbn
N0cnVjdCgpCgkgKgoJICoJRGVmYXVsdCBjb25zdHJ1Y3Rvci4KCSAqCgkgKglAcmV0dXJuCQludWxsCgkgK
i8KCWZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewoJfSAvLyBFbmQgX19jb25zdHJ1Y3QoKS4KCgoKCS8qCXBs
dWdpbmJ1ZGR5X2Zvcm1hdC0+ZmlsZV9zaXplKCkKCSAqCgkgKglUYWtlcyBhIGZpbGUgc2l6ZSBpbiBieXR
lcyBhbmQgdHJhbnNmb3JtcyBpdCBpbnRvIGEgaHVtYW4gcmVhZGFibGUgZm9ybWF0IHdpdGggbW9yZSBmcm
llbmRseSB1bml0cy4gRGVjaWRlcyBvbiB1bml0IGJhc2VkIG9uIHRoZSBzaXplLgoJICoKCSAqCUBwYXJhb
QkJaW50CQkkc2l6ZQlGaWxlIHNpemUuCgkgKglAcmV0dXJuCQlzdHJpbmcJCQlIdW1hbiBmb3JtYXR0ZWQg
ZnJpZW5kbHkgcmVhZGFibGUgZm9ybWF0LgoJICovCglmdW5jdGlvbiBmaWxlX3NpemUoICRzaXplICkgewo
JCSRzaXplcyA9IGFycmF5KCAnIEJ5dGVzJywgJyBLQicsICcgTUInLCAnIEdCJywgJyBUQicsICcgUEInLC
AnIEVCJywgJyBaQicsICcgWUInKTsKCQlpZiAoICRzaXplID09IDAgKSB7CgkJCXJldHVybiggJzAgTUInI
Ck7CgkJfSBlbHNlIHsKCQkJcmV0dXJuICggcm91bmQoICRzaXplIC8gcG93KCAxMDI0LCAoICRpID0gZmxv
b3IoIGxvZyggJHNpemUsIDEwMjQgKSApICkgKSwgJGkgPiAxID8gMiA6IDApIC4gJHNpemVzWyRpXSApOwo
JCX0KCX0gLy8gRW5kIGZpbGVfc2l6ZSgpLgoKCgoJLyoJcGx1Z2luYnVkZHlfZm9ybWF0LT5kYXRlKCkKCS
AqCgkgKglGb3JtYXRzIGEgdGltZXN0YW1wIGludG8gYSBuaWNlIGh1bWFuIGRhdGUgZm9ybWF0LgoJICoKC
SAqCUBwYXJhbQkJaW50CQkkdGltZXN0YW1wCQlUaW1lc3RhbXAgdG8gbWFrZSBwcmV0dHkuCgkgKglAcGFy
YW0JCXN0cmluZwkkY3VzdG9tRm9ybWF0CUN1c3RvbSB0aW1lc3RhbXAgZm9ybWF0LiBFbHNlIHVzZXMgJHR
oaXMtPl90aW1lc3RhbXAgZGVmaW5lZCBhdCB0b3Agb2YgdGhpcyBmaWxlLgoJICoJQHJldHVybgkJc3RyaW
5nCQkJCQlQcmV0dHkgaHVtYW4gdGltZXN0YW1wLgoJICovCglmdW5jdGlvbiBkYXRlKCAkdGltZXN0YW1wL
CAkY3VzdG9tRm9ybWF0ID0gJycgKSB7CgkJaWYgKCAnJyA9PSAkY3VzdG9tRm9ybWF0ICkgewoJCQlyZXR1
cm4gZGF0ZSggJHRoaXMtPl90aW1lc3RhbXAsICR0aW1lc3RhbXAgKTsKCQl9IGVsc2UgewoJCQlyZXR1cm4
gZGF0ZSggJGN1c3RvbUZvcm1hdCwgJHRpbWVzdGFtcCApOwoJCX0KCX0gLy8gRW5kIGRhdGUoKS4KCgoJLy
oqCgkgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IGRhdGUgZm9ybWF0LgoJICoKCSAqIEByZXR1cm4gc3RyaW5nI
CBEYXRlIGZvcm1hdCBzdHJpbmcuCgkgKi8KCWZ1bmN0aW9uIGdldF9kYXRlX2Zvcm1hdCgpIHsKCQlyZXR1
cm4gJHRoaXMtPl90aW1lc3RhbXA7Cgl9CgoKCS8qCXBsdWdpbmJ1ZGR5X2Zvcm1hdC0+bG9jYWxpemVfdGl
tZSgpCgkgKgoJICoJTG9jYWxpemVzIHRpbWUgZm9yIHRoZSBjdXJyZW50IHVzZXIgZm9yIGRpc3BsYXkuCg
kgKgoJICoJQHBhcmFtCQlpbnQJCSR0aW1lc3RhbXAJCVRpbWVzdGFtcCB0byByZW1vdmUgdGltZSBvZmZzZ
XQgZm9yLgoJICoJQHJldHVybgkJaW50CQkJCQkJQ29ycmVjdGVkIHRpbWVzdGFtcC4KCSAqLwoJZnVuY3Rp
b24gbG9jYWxpemVfdGltZSggJHRpbWVzdGFtcCApIHsKCQlpZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ2dldF9
vcHRpb24nICkgKSB7CgkJCSRnbXRfb2Zmc2V0ID0gZ2V0X29wdGlvbiggJ2dtdF9vZmZzZXQnICk7CgkJfS
BlbHNlIHsKCQkJJGdtdF9vZmZzZXQgPSAwOwoJCX0KCQlyZXR1cm4gJHRpbWVzdGFtcCArICggJGdtdF9vZ
mZzZXQgKiAzNjAwICk7Cgl9IC8vIEVuZCBsb2NhbGl6ZV90aW1lKCkuCgoKCgkvKglwbHVnaW5idWRkeV9m
b3JtYXQtPnVubG9jYWxpemVfdGltZSgpCgkgKgoJICoJUmVtb3ZlcyB0aGUgdGltZXpvbmUgb2Zmc2V0IG9
mIGEgbG9jYWxpemVkIHRpbWUgZGlzcGxheSBmb3IgYSB1c2VyLgoJICoKCSAqCUBwYXJhbQkJaW50CQkkdG
ltZXN0YW1wCQlUaW1lc3RhbXAgdG8gcmVtb3ZlIHRpbWUgb2Zmc2V0IGZvci4KCSAqCUByZXR1cm4JCWlud
AkJCQkJCUNvcnJlY3RlZCB0aW1lc3RhbXAuCgkgKi8KCWZ1bmN0aW9uIHVubG9jYWxpemVfdGltZSggJHRp
bWVzdGFtcCApIHsKCQlyZXR1cm4gJHRpbWVzdGFtcCAtICggZ2V0X29wdGlvbiggJ2dtdF9vZmZzZXQnICk
gKiAzNjAwICk7Cgl9IC8vIEVuZCB1bmxvY2FsaXplX3RpbWUoKS4KCgoKCS8qCXBsdWdpbmJ1ZGR5X2Zvcm
1hdC0+dGltZV9hZ28oKQoJICoKCSAqCUFjY2VwdHMgTk9OLWxvY2FsaXplZCB0aW1lc3RhbXBzLgoJICoJQ
HNlZSB0aW1lX2R1cmF0aW9uCgkgKgoJICoJQHBhcmFtCgkgKglAcmV0dXJuCgkgKi8KCSAvLyBUT0RPOiBk
ZXByZWNhdGVkPwoJZnVuY3Rpb24gdGltZV9hZ28oICR0aW1lc3RhbXAgKSB7CgkJcmV0dXJuIGh1bWFuX3R
pbWVfZGlmZiggJHRpbWVzdGFtcCwgdGltZSgpICk7Cgl9IC8vIEVuZCB0aW1lX2FnbygpLgoKCgoJLyoJcG
x1Z2luYnVkZHlfZm9ybWF0LT5kdXJhdGlvbigpCgkgKgoJICoJUmV0dXJucyBhIGh1bWFuIHJlYWRhYmxlI
GR1cmF0aW9uLiBVc2VmdWwgZm9yIHRpbWUgYWdvIG9yIGNvdW50ZG93bnMuCgkgKglFeDogNSBob3Vycywg
NCBtaW51dGVzLCA0MyBzZWNvbmRzLgoJICoKCSAqCUBwYXJhbQkJaW50CQkkc2Vjb25kcwkJTnVtYmVyIG9
mIHNlY29uZHMgdG8gdHVybiBpbnRvIGEgaHVtYW4gZnJpZW5kbHkgcmVhZGFibGUgZm9ybWF0LgoJICoJQH
JldHVybgkJCQlzdHJpbmcJCQlIdW1hbiByZWFkYWJsZSBzdHJpbmcgZHVyYXRpb24uCgkgKi8KCWZ1bmN0a
W9uIHRpbWVfZHVyYXRpb24oICRzZWNvbmRzICkgewoJCSR0aW1lID0gdGltZSgpIC0gJHNlY29uZHM7CgoJ
CSRwZXJpb2RzID0gYXJyYXkoX18oJ3NlY29uZCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQkJCQk
gX18oJ21pbnV0ZScsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQkJCQkgX18oJ2hvdXInLCAgICdpdC
1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQkJCQkgX18oJ2RheScsIAkgICdpdC1sMTBuLWJhY2t1cGJ1ZGR5J
yApLAoJCQkJCQkgX18oJ3dlZWsnLCAgICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQkJCQkgX18oJ21v
bnRoJywgICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQkJCQkgX18oJ3llYXInLCAgICdpdC1sMTBuLWJ
hY2t1cGJ1ZGR5JyApLAoJCQkJCQkgX18oJ2RlY2FkZScuICdMSU9OJyApCgkJCQkJCSApOwoJCSRsZW5ndG
hzID0gYXJyYXkoJzYwJywnNjAnLCcyNCcsJzcnLCc0LjM1JywnMTInLCcxMCcpOwoKCQkkbm93ID0gdGltZ
SgpOwoKCQkkZGlmZmVyZW5jZSA9ICRub3cgLSAkdGltZTsKCQkkdGVuc2UgPSBfXygnYWdvJywgJ2l0LWwx
MG4tYmFja3VwYnVkZHknICk7CgoKCQlmb3IoJGogPSAwOyAkZGlmZmVyZW5jZSA+PSAkbGVuZ3Roc1skal0
gJiYgJGogPCBjb3VudCgkbGVuZ3RocyktMTsgJGorKykgewoJCQkkZGlmZmVyZW5jZSAvPSAkbGVuZ3Roc1
skal07CgkJfQoKCQkkZGlmZmVyZW5jZSA9IHJvdW5kKCRkaWZmZXJlbmNlKTsKCgkJaWYoJGRpZmZlcmVuY
2UgIT0gMSkgewoJCQkkcGVyaW9kc1skal0uPSAicyI7CgkJfQoKCQlyZXR1cm4gIiRkaWZmZXJlbmNlICRw
ZXJpb2RzWyRqXSI7Cgl9IC8vIEVuZCBkdXJhdGlvbigpLgoKCgoJLyoJcHJldHRpZnkoKQoJICoKCSAqCVR
ha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGEgbW9yZSBwcmV0dHkgdmVyc2lvbi4gTG9va3MgaW4gYW4gYX
JyYXkgZm9yIGEga2V5IG1hdGNoaW5nIHRoZSBzdHJpbmcuCgkgKglSZXR1cm5zIHRoZSBhc3NvY2lhdGVkI
HZhbHVlLiBSZXR1cm5zIG9yaWdpbmFsIHZhbHVlIGlmIG5vIHByZXR0eSByZXBsYWNlciBpcyBmb3VuZC4K
CSAqCUV4OgoJICoJCXByZXR0aWZ5KCAnZG9nJywgYXJyYXkoICdjYXRzJyA9PiAnQ2F0cycsICdkb2cnID0
+ICdEb2cnICkgKTsKCSAqCQlSZXR1cm5zOiBEb2cKCSAqCgkgKglAcGFyYW0JCXN0cmluZwkJJHZhbHVlCQ
kJVmFsdWUgdG8gYmUgcmVwbGFjZWQgd2l0aCBhIHByZXR0eSB2ZXJzaW9uLgoJICoJQHBhcmFtCQlhcnJhe
QkJJHJlcGxhY2VtZW50cwlBcnJheSBvZjogdmFsdWUgdG8gbG9vayBmb3IgPT4gdmFsdWUgdG8gcmVwbGFj
ZSB3aXRoLgoJICoJQHJldHVybgkJc3RyaW5nCQkJCQkJUHJldHR5IHZlcnNpb24gdGhhdCByZXBsYWNlZCA
kdmFsdWUuIFJldHVybnMgb3JpZ2luYWwgJHZhbHVlIGlmIG5vdCBmb3VuZCBpbiAkcmVwbGFjZW1lbnRzIG
tleXMuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBwcmV0dGlmeSggJHZhbHVlLCAkcmVwbGFjZW1lbnRzICkge
woKCQlpZiAoIGlzc2V0KCAkcmVwbGFjZW1lbnRzWyR2YWx1ZV0gKSApIHsgLy8gRm91bmQgcmVwbGFjZW1l
bnQuCgkJCXJldHVybiAkcmVwbGFjZW1lbnRzWyR2YWx1ZV07CgkJfSBlbHNlIHsgLy8gTm8gcmVwbGFjZW1
lbnQ7IHJldHVybiBvcmlnaW5hbCB2YWx1ZS4KCQkJcmV0dXJuICR2YWx1ZTsKCQl9CgoJfSAvLyBFbmQgcH
JldHRpZnkoKTsKCgoKCS8qIG11bHRpX2ltcGxvZGUoKQoJICoKCSAqIERlZXAgcmVjdXJzaXZlIGltcGxvc
2lvbi4KCSAqCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBtdWx0aV9pbXBsb2RlKCRhcnJheSwgJGdsdWUpIHsK
CSAgICAkcmV0ID0gJyc7CgoJICAgIGZvcmVhY2ggKCRhcnJheSBhcyAkaXRlbSkgewoJICAgICAgICBpZiA
oaXNfYXJyYXkoJGl0ZW0pKSB7CgkgICAgICAgICAgICAkcmV0IC49ICR0aGlzLT5tdWx0aV9pbXBsb2RlKC
RpdGVtLCAkZ2x1ZSkgLiAkZ2x1ZTsKCSAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICRyZXQgLj0gJ
Gl0ZW0gLiAkZ2x1ZTsKCSAgICAgICAgfQoJICAgIH0KCgkgICAgJHJldCA9IHN1YnN0cigkcmV0LCAwLCAw
LXN0cmxlbigkZ2x1ZSkpOwoKCSAgICByZXR1cm4gJHJldDsKCX0gLy8gRW5kIG11bHRpX2ltcGxvZGUoKS4
KCgoKfSAvLyBFbmQgY2xhc3MgcGx1Z2luYnVkZHlfc2V0dGluZ3MuCgo=
###PACKDATA,FILE_END,/pluginbuddy/classes/format.php,importbuddy/pluginbuddy/classe
s/format.php
###PACKDATA,FILE_START,/pluginbuddy/classes/index.php,importbuddy/pluginbuddy/class
es/index.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/pluginbuddy/classes/index.php,importbuddy/pluginbuddy/classes
/index.php
###PACKDATA,FILE_START,/pluginbuddy/classes/settings.php,importbuddy/pluginbuddy/cl
asses/settings.php
PD9waHAKLyoqCiAqIFBsdWdpbkJ1ZGR5IFNldHRpbmdzIENsYXNzCiAqCiAqIEBwYWNrYWdlIEJhY2t1cEJ
1ZGR5CiAqLwoKLyoqCiAqIEhhbmRsZXMgc2V0dGluZyB1cCBhbmQgcGFyc2luZyBzdWJtaXR0ZWQgZGF0YS
Bmb3Igc2V0dGluZ3MgcGFnZXMuIFVzZXMgZm9ybSBjbGFzcyBmb3IgaGFuZGxpbmcgZm9ybXMuCiAqIElmI
GEgc2F2ZXBvaW50IGlzIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IgdGhlbiBzZXR0aW5ncyB3aWxsIGJl
IGF1dG8tc2F2ZWQgb24gc2F2ZS4KICogSWYgZmFsc2UgaXMgcGFzc2VkIHRvIHRoZSBzYXZlcG9pbnQgdGh
lbiB0aGUgcHJvY2VzcygpIGZ1bmN0aW9uIG1heSBiZSB1c2VkIHRvIHZhbGlkYXRlIGFuZCBncmFiIHN1Ym
1pdHRlZCBmb3JtIGRhdGEgZm9yIGN1c3RvbSBwcm9jZXNzaW5nLgogKgogKiBAc2VlIHBsdWdpbmJ1ZGR5X
2Zvcm0KICoKICogQGF1dGhvciBEdXN0aW4gQm9sdG9uCiAqLwpjbGFzcyBwYl9iYWNrdXBidWRkeV9zZXR0
aW5ncyB7CgoJLyoqCgkgKiBUaGUgRm9ybSBPYmplY3QKCSAqCgkgKiBAdmFyIHBiX2Jha2N1cGJ1ZGR5X2Z
vcm0KCSAqLwoJcHJpdmF0ZSAkX2Zvcm07CgoJLyoqCgkgKiBGb3JtIE5hbWUKCSAqCgkgKiBAdmFyIHN0cm
luZwoJICovCglwcml2YXRlICRfZm9ybV9uYW1lID0gJyc7CgoJLyoqCgkgKiBGb3JtIHByZWZpeAoJICoKC
SAqIEB2YXIgc3RyaW5nCgkgKi8KCXByaXZhdGUgJF9wcmVmaXggPSAnJzsKCgkvKioKCSAqIFNhdmVwb2lu
dCBzdGF0dXMKCSAqCgkgKiBAdmFyIHN0cmluZwoJICovCglwcml2YXRlICRfc2F2ZXBvaW50OwoKCS8qKgo
JICogU2V0dGluZ3MgYXJyYXkKCSAqCgkgKiBAdmFyIGFycmF5CgkgKi8KCXByaXZhdGUgJF9zZXR0aW5ncy
A9IGFycmF5KCk7CgoJLyoqCgkgKiBDdXN0b20gVGl0bGUgV2lkdGgKCSAqCgkgKiBAdmFyIGludAoJICovC
glwcml2YXRlICRfY3VzdG9tX3RpdGxlX3dpZHRoID0gJyc7CgoJLyoqCgkgKiBEZWZhdWx0IGNvbnN0cnVj
dG9yLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGZvcm1fbmFtZSAgICAgICAgICAgICAgICAgIE5hbWUgLyB
zbHVnIG9mIHRoZSBmb3JtLgoJICogQHBhcmFtIG1peGVkICAkc2F2ZV9wb2ludF9vcl9jdXN0b21fbW9kZS
AgTG9jYXRpb24gaW4gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zIGFycmF5IHRvIHNhdmUgdG8uIEV4OiBnc
m91cHMjNSBzYXZlcyBpbnRvOiBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2dyb3VwcyddWzVdLgoJICog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgZmFsc2UsIHRoZSBwcm9jZXN
zKCkgZnVuY3Rpb24gd2lsbCBub3Qgc2F2ZSBidXQgd2lsbCByZXR1cm4gcmVzdWx0cyBpbnN0ZWFkIGluY2
x1ZGluZyBmb3JtIG5hbWUgPT4gdmFsdWUgcGFpcnMgaW4gYW4gYXJyYXkgZm9yIHByb2Nlc3NpbmcuCgkgK
iAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBhcnJheSwgdGhlbiB0aGVz
ZSB3aWxsIGJlIHRyZWF0ZWQgYXMgdGhlIGRlZmF1bHRzLiBXb3JrcyB0aGUgc2FtZSBhcyBiZWluZyBmYWx
zZSBvdGhlciB0aGFuIHRoaXMuCgkgKiBAcGFyYW0gc3RyaW5nICRhZGRpdGlvbmFsX3F1ZXJ5X3N0cmluZy
AgICBBZGRpdGlvbmFsIHF1ZXJ5c3RyaW5nIHZhcmlhYmxlcyB0byBwYXNzIGluIHRoZSBmb3JtIGFjdGlvb
iBVUkwuCgkgKiBAcGFyYW0gaW50ICAgICRjdXN0b21fdGl0bGVfd2lkdGggICAgICAgICBDdXN0b20gdGl0
bGUgd2lkdGggaW4gcGl4ZWxzLiBGb3JtYXRzIHRhYmxlIHNpemluZy4KCSAqLwoJcHVibGljIGZ1bmN0aW9
uIF9fY29uc3RydWN0KCAkZm9ybV9uYW1lLCAkc2F2ZV9wb2ludF9vcl9jdXN0b21fbW9kZSwgJGFkZGl0aW
9uYWxfcXVlcnlfc3RyaW5nID0gJycsICRjdXN0b21fdGl0bGVfd2lkdGggPSAnJyApIHsKCQkkdGhpcy0+X
2Zvcm1fbmFtZSAgICAgICAgICA9ICRmb3JtX25hbWU7CgkJJHRoaXMtPl9wcmVmaXggICAgICAgICAgICAg
PSAncGJfJyAuIHBiX2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3NsdWcnICkgLiAnXyc7CgkJJHRoaXMtPl9
zYXZlcG9pbnQgICAgICAgICAgPSAkc2F2ZV9wb2ludF9vcl9jdXN0b21fbW9kZTsKCQkkdGhpcy0+X2N1c3
RvbV90aXRsZV93aWR0aCA9ICRjdXN0b21fdGl0bGVfd2lkdGg7CgoJCS8vIFRPRE86IG5vIG5lZWQgdG8gc
GFzcyBzYXZlcG9pbnQgaGVyZT8KCQkkdGhpcy0+X2Zvcm0gPSBuZXcgcGJfYmFja3VwYnVkZHlfZm9ybSgg
JGZvcm1fbmFtZSwgJHNhdmVfcG9pbnRfb3JfY3VzdG9tX21vZGUsICRhZGRpdGlvbmFsX3F1ZXJ5X3N0cml
uZyApOwoJfSAvLyBFbmQgX19jb25zdHJ1Y3QoKS4KCgkvKioKCSAqIFJlZ2lzdGVyIGFuZCBhZGQgYSBzZX
R0aW5nIHRvIHRoZSBzZXR0aW5ncyBmb3JtIHN5c3RlbS4KCSAqCgkgKiBAcGFyYW0gYXJyYXkgJHNldHRpb
mdzICBBcnJheSBvZiBzZXR0aW5ncyBmb3IgdGhpcyBhZGRlZCBzZXR0aW5nLiBTZWUgJGRlZmF1bHRfc2V0
dGluZ3MgZm9yIGxpc3Qgb2Ygb3B0aW9ucyB0aGF0IGNhbiBiZSBkZWZpbmVkLgoJICovCglwdWJsaWMgZnV
uY3Rpb24gYWRkX3NldHRpbmcoICRzZXR0aW5nc19jb25maWcgKSB7CgkJJGRlZmF1bHRfY29uZmlnICA9IG
FycmF5KAoJCQkndHlwZScgICAgICAgID0+ICcnLAoJCQknbmFtZScgICAgICAgID0+ICcnLAoJCQkndGl0b
GUnICAgICAgID0+ICcnLAoJCQkndGlwJyAgICAgICAgID0+ICcnLAoJCQknY3NzJyAgICAgICAgID0+ICcn
LAoJCQknYmVmb3JlJyAgICAgID0+ICcnLAoJCQknYWZ0ZXInICAgICAgID0+ICcnLAoJCQkncnVsZXMnICA
gICAgID0+ICcnLAoJCQknZGVmYXVsdCcgICAgID0+ICcnLCAgICAgICAgICAgICAgICAgLy8gSU1QT1JUQU
5UOiBPdmVycmlkZXMgZGVmYXVsdCBhcnJheS4gQWxzbyB1c2VmdWwgaWYgc2F2ZXBvaW50IGlzID09PSBmY
WxzZSB0byBvdmVycmlkZS4KCQkJJ29wdGlvbnMnICAgICA9PiBhcnJheSgpLAoJCQknb3JpZW50YXRpb24n
ID0+ICdob3Jpem9udGFsJywgICAgICAgLy8gVXNlZCBieSByYWRpbyBhbmQgY2hlY2tib3hlcy4gVE9ETzo
gc3RpbGwgbmVlZCB0byBhZGQgdG8gY2hlY2tib3hlcy4KCQkJJ2NsYXNzJyAgICAgICA9PiAnJywKCQkJJ2
NsYXNzZXMnICAgICA9PiAnJywgICAgICAgICAgICAgICAgIC8vIFN0cmluZyBvZiBhZGRpdGlvbmFsIGNsY
XNzZXMuCgkJCSdyb3dfY2xhc3MnICAgPT4gJycsICAgICAgICAgICAgICAgICAvLyBDbGFzcyB0byBhcHBs
eSB0byByb3cgdGQncyBpbiByb3cuCgkJKTsKCQkkc2V0dGluZ3NfY29uZmlnICAgPSBhcnJheV9tZXJnZSg
gJGRlZmF1bHRfY29uZmlnLCAkc2V0dGluZ3NfY29uZmlnICk7CgkJJHRoaXMtPl9zZXR0aW5nc1tdID0gJH
NldHRpbmdzX2NvbmZpZzsKCgkJLy8gRmlndXJlIG91dCBkZWZhdWx0cy4KCQlpZiAoICcnICE9ICRzZXR0a
W5nc19jb25maWdbJ2RlZmF1bHQnXSApIHsgLy8gRGVmYXVsdCB3YXMgcGFzc2VkIHRvIGFkZF9zZXR0aW5n
KCkuCgkJCSRkZWZhdWx0X3ZhbHVlID0gJHNldHRpbmdzX2NvbmZpZ1snZGVmYXVsdCddOwoJCX0gZWxzZSB
7IC8vIE5vIGRlZmF1bHQgZXhwbGljdGx5IHNldC4KCQkJJHNhdmVwb2ludCAgICAgID0gJHRoaXMtPl9zYX
ZlcG9pbnQ7CgkJCSRyYXdfbmFtZSAgICAgICA9ICRzZXR0aW5nc19jb25maWdbJ25hbWUnXTsKCQkJJGxhc
3RfaGFzaHBvaW50ID0gc3RycnBvcyggJHNldHRpbmdzX2NvbmZpZ1snbmFtZSddLCAnIycgKTsKCQkJaWYg
KCBmYWxzZSAhPT0gJGxhc3RfaGFzaHBvaW50ICkgewoJCQkJJHRlbXBfc2F2ZXBvaW50ID0gc3Vic3RyKCA
kc2V0dGluZ3NfY29uZmlnWyduYW1lJ10sIDAsICRsYXN0X2hhc2hwb2ludCApOwoJCQkJaWYgKCBmYWxzZS
A9PT0gJHNhdmVwb2ludCB8fCAnJyA9PSAkc2F2ZXBvaW50ICkgewoJCQkJCSRzYXZlcG9pbnQgPSAkdGVtc
F9zYXZlcG9pbnQ7CgkJCQl9IGVsc2UgewoJCQkJCSRzYXZlcG9pbnQgPSAkc2F2ZXBvaW50IC4gJyMnIC4g
JHRlbXBfc2F2ZXBvaW50OwoJCQkJfQoJCQkJJHJhd19uYW1lID0gc3Vic3RyKCAkc2V0dGluZ3NfY29uZml
nWyduYW1lJ10sICRsYXN0X2hhc2hwb2ludCArIDEgKTsgLy8gSXRlbSBuYW1lIHdpdGggc2F2ZXBvaW50IH
BvcnRpb24gc3RyaXBwZWQgb3V0LgoJCQl9CgkJCWlmICggZmFsc2UgIT09ICRzYXZlcG9pbnQgKSB7CgoJC
QkJaWYgKCBpc19hcnJheSggJHNhdmVwb2ludCApICkgeyAvLyBBcnJheSBvZiBkZWZhdWx0cyB3YXMgcGFz
c2VkIGluc3RlYWQgb2Ygc2F2ZXBvaW50LgoJCQkJCWlmICggaXNzZXQoICRzYXZlcG9pbnRbICRyYXdfbmF
tZSBdICkgKSB7CgkJCQkJCSRkZWZhdWx0X3ZhbHVlID0gJHNhdmVwb2ludFsgJHJhd19uYW1lIF07CgkJCQ
kJfSBlbHNlIHsKCQkJCQkJJGRlZmF1bHRfdmFsdWUgPSAnJzsKCQkJCQl9CgkJCQl9IGVsc2UgeyAvLyBOb
yBkZWZhdWx0cyBwcm92aWRlZCwgc2VlayB0aGVtIG91dCBpbiBwbHVnaW5zIG9wdGlvbnMgYXJyYXkuCgoJ
CQkJCS8vIERlZmF1bHQgdmFsdWVzIGFyZSBvdmVyd3JpdHRlbiBhZnRlciBhIHByb2Nlc3MoKSBydW4gd2l
0aCB0aGUgbGF0ZXN0IGRhdGEgaWYgYSBmb3JtIHdhcyBzdWJtaXR0ZWQuCgkJCQkJJGdyb3VwID0gcGJfYm
Fja3VwYnVkZHk6OmdldF9ncm91cCggJHNhdmVwb2ludCApOwoJCQkJCWlmICggZmFsc2UgPT09ICRncm91c
CApIHsKCQkJCQkJJGRlZmF1bHRfdmFsdWUgPSAnJzsKCQkJCQl9IGVsc2UgewoJCQkJCQlpZiAoIGlzc2V0
KCAkZ3JvdXBbICRyYXdfbmFtZSBdICkgKSB7IC8vIERlZmF1bHQgaXMgZGVmaW5lZC4KCQkJCQkJCSRkZWZ
hdWx0X3ZhbHVlID0gJGdyb3VwWyAkcmF3X25hbWUgXTsKCQkJCQkJfSBlbHNlIHsgLy8gRGVmYXVsdCBub3
QgZGVmaW5lZC4KCQkJCQkJCSRkZWZhdWx0X3ZhbHVlID0gJyc7CgkJCQkJCX0KCQkJCQl9CgkJCQl9IC8vI
GVuZCBmaW5kaW5nIGRlZmF1bHRzIGluIHBsdWdpbiBvcHRpb25zLgoJCQl9IGVsc2UgeyAvLyBDdXN0b20g
bW9kZSB3aXRob3V0IGEgc2F2ZXBvaW50IHByb3ZpZGVkIHNvIG5vIGRlZmF1bHQgc2V0IHVubGVzcyBwYXN
zZWQgdG8gYWRkX3NldHRpbmcoKS4KCQkJCSRkZWZhdWx0X3ZhbHVlID0gJyc7CgkJCX0KCQl9CgoJCS8vIF
Byb2Nlc3MgYWRkaW5nIGZvcm0gaXRlbSBmb3IgdGhlIHNldHRpbmcgYmFzZWQgb24gdHlwZS4KCQlzd2l0Y
2ggKCAkc2V0dGluZ3NfY29uZmlnWyd0eXBlJ10gKSB7CgkJCWNhc2UgJ3RleHQnOgoJCQkJJHRoaXMtPl9m
b3JtLT50ZXh0KCAkc2V0dGluZ3NfY29uZmlnWyduYW1lJ10sICRkZWZhdWx0X3ZhbHVlLCAkc2V0dGluZ3N
fY29uZmlnWydydWxlcyddICk7CgkJCQlicmVhazsKCQkJY2FzZSAncGxhaW50ZXh0JzoKCQkJCSR0aGlzLT
5fZm9ybS0+cGxhaW50ZXh0KCAkc2V0dGluZ3NfY29uZmlnWyduYW1lJ10sICRkZWZhdWx0X3ZhbHVlICk7C
gkJCQlicmVhazsKCQkJY2FzZSAnY29sb3InOgoJCQkJJHRoaXMtPl9mb3JtLT5jb2xvciggJHNldHRpbmdz
X2NvbmZpZ1snbmFtZSddLCAkZGVmYXVsdF92YWx1ZSwgJHNldHRpbmdzX2NvbmZpZ1sncnVsZXMnXSApOwo
JCQkJYnJlYWs7CgkJCWNhc2UgJ2hpZGRlbic6CgkJCQkkdGhpcy0+X2Zvcm0tPmhpZGRlbiggJHNldHRpbm
dzX2NvbmZpZ1snbmFtZSddLCAkZGVmYXVsdF92YWx1ZSwgJHNldHRpbmdzX2NvbmZpZ1sncnVsZXMnXSApO
woJCQkJYnJlYWs7CgkJCWNhc2UgJ3d5c2l3eWcnOgoJCQkJJHRoaXMtPl9mb3JtLT53eXNpd3lnKCAkc2V0
dGluZ3NfY29uZmlnWyduYW1lJ10sICRkZWZhdWx0X3ZhbHVlLCAkc2V0dGluZ3NfY29uZmlnWydydWxlcyd
dLCAkc2V0dGluZ3NfY29uZmlnWydzZXR0aW5ncyddICk7CgkJCQlicmVhazsKCQkJY2FzZSAndGV4dGFyZW
EnOgoJCQkJJHRoaXMtPl9mb3JtLT50ZXh0YXJlYSggJHNldHRpbmdzX2NvbmZpZ1snbmFtZSddLCAkZGVmY
XVsdF92YWx1ZSwgJHNldHRpbmdzX2NvbmZpZ1sncnVsZXMnXSApOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ3Nl
bGVjdCc6CgkJCQkkdGhpcy0+X2Zvcm0tPnNlbGVjdCggJHNldHRpbmdzX2NvbmZpZ1snbmFtZSddLCAkc2V
0dGluZ3NfY29uZmlnWydvcHRpb25zJ10sICRkZWZhdWx0X3ZhbHVlLCAkc2V0dGluZ3NfY29uZmlnWydydW
xlcyddICk7CgkJCQlicmVhazsKCQkJY2FzZSAncGFzc3dvcmQnOgoJCQkJJHRoaXMtPl9mb3JtLT5wYXNzd
29yZCggJHNldHRpbmdzX2NvbmZpZ1snbmFtZSddLCAkZGVmYXVsdF92YWx1ZSwgJHNldHRpbmdzX2NvbmZp
Z1sncnVsZXMnXSApOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ3JhZGlvJzoKCQkJCSR0aGlzLT5fZm9ybS0+cmF
kaW8oICRzZXR0aW5nc19jb25maWdbJ25hbWUnXSwgJHNldHRpbmdzX2NvbmZpZ1snb3B0aW9ucyddLCAkZG
VmYXVsdF92YWx1ZSwgJHNldHRpbmdzX2NvbmZpZ1sncnVsZXMnXSApOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ
2NoZWNrYm94JzoKCQkJCSR0aGlzLT5fZm9ybS0+Y2hlY2tib3goICRzZXR0aW5nc19jb25maWdbJ25hbWUn
XSwgJHNldHRpbmdzX2NvbmZpZ1snb3B0aW9ucyddLCAkZGVmYXVsdF92YWx1ZSwgJHNldHRpbmdzX2NvbmZ
pZ1sncnVsZXMnXSApOwoJCQkJYnJlYWs7CgkJCWNhc2UgJ3N1Ym1pdCc6CgkJCQkkdGhpcy0+X2Zvcm0tPn
N1Ym1pdCggJHNldHRpbmdzX2NvbmZpZ1snbmFtZSddLCAnREVGQVVMVCcgKTsgLy8gU3VibWl0IGJ1dHRvb
iB0ZXh0IGlzIHNldCBpbiBkaXNwbGF5X3NldHRpbmdzKCkgcGFyYW0uCgkJCQlicmVhazsKCQkJY2FzZSAn
dGl0bGUnOgoJCQkJJHRoaXMtPl9mb3JtLT50aXRsZSggJHNldHRpbmdzX2NvbmZpZ1snbmFtZSddLCAkZGV
mYXVsdF92YWx1ZSwgJHNldHRpbmdzX2NvbmZpZ1sncnVsZXMnXSApOyAvLyBTdWJtaXQgYnV0dG9uIHRleH
QgaXMgc2V0IGluIGRpc3BsYXlfc2V0dGluZ3MoKSBwYXJhbS4KCQkJCWJyZWFrOwoJCQljYXNlICdodG1sJ
zogLy8gUmF3IEhUTUwgdG8gaW5qZWN0IGF0IHRoaXMgc3BvdC4KCQkJCSR0aGlzLT5fZm9ybS0+aHRtbCgg
JHNldHRpbmdzX2NvbmZpZ1snbmFtZSddLCAkc2V0dGluZ3NfY29uZmlnWydodG1sJ10gKTsKCQkJCWJyZWF
rOwoJCQlkZWZhdWx0OgoJCQkJZWNobyAne0Vycm9yOiBVbmtub3duIHNldHRpbmdzIHR5cGUgYCcgLiBlc2
NfaHRtbCggJHNldHRpbmdzX2NvbmZpZ1sndHlwZSddICkgLiAnYC59JzsKCQkJCWJyZWFrOwoJCX0KCgl9I
C8vIEVuZCBhZGRfc2V0dGluZygpLgoKCS8qKgoJICogUHJvY2Vzc2VzIHRoZSBmb3JtIGlmIGFwcGxpY2Fi
bGUgKGlmIGl0IHdhcyBzdWJtaXR0ZWQpLgoJICogVE9ETzogUGVyaGFwcyBhZGQgY2FsbGJhY2sgYWJpbGl
0eSB0byB0aGlzPwoJICogVGhpcyBtdXN0IGNvbWUgYWZ0ZXIgYWxsIGZvcm0gZWxlbWVudHMgaGF2ZSBiZW
VuIGFkZGVkLgoJICogVGhpcyBzaG91bGQgdXN1YWxseSBoYXBwZW4gaW4gdGhlIGNvbnRyb2xsZXIgcHJpb
3IgdG8gbG9hZGluZyBhIHZpZXcuCgkgKiBJTVBPUlRBTlQ6IEFwcGxpZXMgdHJpbSgpIHRvIGFsbCBzdWJt
aXR0ZWQgZm9ybSB2YWx1ZXMhCgkgKgoJICogQHJ
ldHVybiBhcnJheSAgV2hlbiBhIHNhdmVwb2ludCB3YXMgZGVmaW5lZCBpbiBjbGFzcyBjb25zdHJ1Y3Rvci
BhbiBlbXB0eSBhcnJheSBpcyByZXR1cm5lZC4gKG5vcm1hbCBvcGVyYXRpb24pCgkgKiAgICAgICAgICAgI
CAgICBXaGVuIHNhdmVwb2ludCA9PT0gZmFsc2UgYW4gYXJyYXkgaXMgcmV0dXJuZWQgZm9yIGN1c3RvbSBm
b3JtIHByb2Nlc3NpbmcuCgkgKiAgICAgICAgICAgICAgICBGb3JtYXQ6IGFycmF5KCAnZXJyb3JzJyA9PiB
mYWxzZS9hcnJheSwgJ2RhdGEnID0+IGFycmF5KCAnZm9ybV9rZXlzJyA9PiAnZm9ybV92YWx1ZXMnICkgKS
4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHByb2Nlc3MoKSB7CgkJLy8gVGhpcyBmb3JtIHdhcyBpbmRlZWQgc
3VibWl0dGVkLiBQUk9DRVNTIElUIQoJCSRmb3JtX25hbWUgPSBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICR0
aGlzLT5fcHJlZml4ICk7CgkJaWYgKCAnJyAhPSAkZm9ybV9uYW1lICYmIHBiX2JhY2t1cGJ1ZGR5OjpfUE9
TVCggJHRoaXMtPl9wcmVmaXggKSA9PT0gJHRoaXMtPl9mb3JtX25hbWUgKSB7CgkJCSRlcnJvcnMgPSBhcn
JheSgpOwoJCQkkX3Bvc3RzID0gcGJfYmFja3VwYnVkZHk6Ol9QT1NUKCk7CgoJCQkvLyBDbGVhbnVwLgoJC
Qlmb3JlYWNoICggJF9wb3N0cyBhcyAmJHBvc3RfdmFsdWUgKSB7CgkJCQkkcG9zdF92YWx1ZSA9IHRyaW0o
ICRwb3N0X3ZhbHVlICk7CgkJCX0KCgkJCS8vIGxvb3AgdGhyb3VnaCBhbGwgcG9zdGVkIHZhcmlhYmxlcyw
gaWYgaXRzIHByZWZpeCBtYXRjaGVzIHRoaXMgZm9ybSdzIG5hbWUgdGhlbi4KCQkJZm9yZWFjaCAoICRfcG
9zdHMgYXMgJHBvc3RfbmFtZSA9PiAkcG9zdF92YWx1ZSApIHsKCQkJCWlmICggc3Vic3RyKCAkcG9zdF9uY
W1lLCAwLCBzdHJsZW4oICR0aGlzLT5fcHJlZml4ICkgKSA9PSAkdGhpcy0+X3ByZWZpeCApIHsgLy8gVGhp
cyBzZXR0aW5ncyBmb3JtLgoJCQkJCSRpdGVtX25hbWUgPSBzdWJzdHIoICRwb3N0X25hbWUsIHN0cmxlbig
gJHRoaXMtPl9wcmVmaXggKSApOwoJCQkJCWlmICggJycgIT0gJGl0ZW1fbmFtZSAmJiAnc2V0dGluZ3Nfc3
VibWl0JyAhPSAkaXRlbV9uYW1lICkgeyAvLyBTa2lwIHRoZSBmb3JtIG5hbWUgaW5wdXQ7IGFsc28gc2V0d
GluZ3Mgc3VibWl0IGJ1dHRvbiBzaW5jZSBpdCBpcyBub3QgcmVnaXN0ZXJlZCB1bnRpbCB2aWV3LgoJCQkJ
CQkkdGVzdF9yZXN1bHQgPSAkdGhpcy0+X2Zvcm0tPnRlc3QoICRpdGVtX25hbWUsICRwb3N0X3ZhbHVlICk
7CgkJCQkJCWlmICggdHJ1ZSAhPT0gJHRlc3RfcmVzdWx0ICkgewoJCQkJCQkJZm9yZWFjaCAoICR0aGlzLT
5fc2V0dGluZ3MgYXMgJHNldHRpbmdfaW5kZXggPT4gJHNldHRpbmcgKSB7CgkJCQkJCQkJaWYgKCAndGl0b
GUnID09PSAkc2V0dGluZ1sndHlwZSddICkgewoJCQkJCQkJCQljb250aW51ZTsKCQkJCQkJCQl9CgkJCQkJ
CQkJaWYgKCAkc2V0dGluZ1snbmFtZSddID09PSAkaXRlbV9uYW1lICkgewoJCQkJCQkJCQkkdGhpcy0+X3N
ldHRpbmdzWyAkc2V0dGluZ19pbmRleCBdWydlcnJvciddID0gdHJ1ZTsKCQkJCQkJCQkJJGl0ZW1fdGl0bG
UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICR0aGlzLT5fc2V0dGluZ3NbICRzZXR0aW5nX
2luZGV4IF1bJ3RpdGxlJ107CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQkJJGVycm9yc1tdID0gJ1ZhbGlk
YXRpb24gZmFpbHVyZSBvbiBgJyAuICRpdGVtX3RpdGxlIC4gJ2A6ICcgLiBpbXBsb2RlKCAnICcsICR0ZXN
0X3Jlc3VsdCApOwoJCQkJCQkJdW5zZXQoICRfcG9zdHNbICRwb3N0X25hbWUgXSApOyAvLyBSZW1vdmVzIH
RoaXMgZm9ybSBpdGVtIHNvIGl0IHdpbGwgbm90IGJlIHVwZGF0ZWQgZHVyaW5nIHNhdmUgbGF0ZXIuCgkJC
QkJCX0gZWxzZSB7IC8vIEl0ZW0gdmFsaWRhdGVkLiBSZW1vdmUgcHJlZml4IGZvciBsYXRlciBwcm9jZXNz
aW5nLgoJCQkJCQkJJF9wb3N0c1sgJGl0ZW1fbmFtZSBdID0gJF9wb3N0c1sgJHBvc3RfbmFtZSBdOwoJCQk
JCQkJJHRoaXMtPl9mb3JtLT5zZXRfdmFsdWUoICRpdGVtX25hbWUsICRwb3N0X3ZhbHVlICk7IC8vIFNldC
B2YWx1ZSB0byBiZSBlcXVhbCB0byBzdWJtaXR0ZWQgdmFsdWUgc28gaWYgb25lIG9yIG1vcmUgaXRlbSBmY
WlsZWQgdmFsaWRhdGlvbiB0aGUgZW50aXJlIGZvcm0gaXMgbm90IHdpcGVkIG91dC4gRG9uJ3Qgd2FudCB1
c2VyIHRvIGhhdmUgdG8gcmUtZW50ZXIgdmFsaWQgZGF0YS4KCQkJCQkJCXVuc2V0KCAkX3Bvc3RzWyAkcG9
zdF9uYW1lIF0gKTsKCQkJCQkJfQoJCQkJCX0gZWxzZSB7IC8vIFN1Ym1pdCBidXR0b24uIENhbiB1bnNldC
BpdCB0byBjbGVhbiB1cCBhcnJheSBmb3IgbGF0ZXIuCgkJCQkJCXVuc2V0KCAkX3Bvc3RzWyAkcG9zdF9uY
W1lIF0gKTsKCQkJCQl9CgkJCQl9IGVsc2UgeyAvLyBOb3QgZm9yIHRoaXMgZm9ybS4gQ2FuIHVuc2V0IGl0
IHRvIGNsZWFuIHVwIGFycmF5IGZvciBsYXRlci4KCQkJCQl1bnNldCggJF9wb3N0c1sgJHBvc3RfbmFtZSB
dICk7CgkJCQl9CgkJCX0KCgkJCS8vIFByb2Nlc3MhCgkJCS8vIE9ubHkgc2F2ZSBpZiBpbiBub3JtYWwgc2
V0dGluZ3MgbW9kZTsgaWYgc2F2ZXBvaW50ID09PSBmYWxzZSBubyBzYXZpbmcgaGVyZS4KCQkJaWYgKCBmY
WxzZSA9PT0gJHRoaXMtPl9zYXZlcG9pbnQgfHwgaXNfYXJyYXkoICR0aGlzLT5fc2F2ZXBvaW50ICkgKSB7
CgkJCQkkcmV0dXJuID0gYXJyYXkoCgkJCQkJJ2Vycm9ycycgPT4gJGVycm9ycywKCQkJCQknZGF0YScgICA
9PiAkX3Bvc3RzLAoJCQkJKTsKCQkJCXJldHVybiAkcmV0dXJuOwoJCQl9IGVsc2UgeyAvLyBOb3JtYWwgc2
V0dGluZ3Mgc2luY2Ugc2F2ZXBvaW50ICE9PSBmYWxzZS4gU2F2ZSBpbnRvIHNhdmVwb2ludCEKCgkJCQlpZ
iAoIGNvdW50KCAkZXJyb3JzICkgPiAwICkgeyAvLyBFcnJvcnMuCgkJCQkJcGJfYmFja3VwYnVkZHk6OmFs
ZXJ0KCAnRXJyb3IgdmFsaWRhdGluZyBvbmUgb3IgbW9yZSBmaWVsZHMgYXMgaW5kaWNhdGVkIGJlbG93LiB
FcnJvcihzKTo8YnI+JyAuIGltcGxvZGUoICc8YnI+JywgJGVycm9ycyApLCB0cnVlICk7CgkJCQl9CgkJCQ
kvLyBQcmVwYXJlIHNhdmVwb2ludC4KCQkJCWlmICggJycgIT0gJHRoaXMtPl9zYXZlcG9pbnQgKSB7CgkJC
QkJJHNhdmVwb2ludF9yb290ID0gJHRoaXMtPl9zYXZlcG9pbnQgLiAnIyc7CgkJCQl9IGVsc2UgewoJCQkJ
CSRzYXZlcG9pbnRfcm9vdCA9ICcnOwoJCQkJfQoKCQkJCS8vIFRoZSBoYXJkIHdvcmsuCgkJCQlmb3JlYWN
oICggJF9wb3N0cyBhcyAkcG9zdF9uYW1lID0+ICRwb3N0X3ZhbHVlICkgeyAvLyBMb29wIHRocm91Z2ggYW
xsIHBvc3QgaXRlbXMgKG5vdCBhbGwgbWF5IGJlIG91ciBmb3JtKS4gQHNlZSA4MzQyOTU5NDgzNzUzNDk4N
y4KCQkJCQkkdGhpcy0+X2Zvcm0tPnNldF92YWx1ZSggJHBvc3RfbmFtZSwgJHBvc3RfdmFsdWUgKTsKCgkJ
CQkJLy8gRnJvbSBvbGQgc2F2ZV9zZXR0aW5ncygpLgoJCQkJCSRzYXZlcG9pbnRfc3Vic2VjdGlvbiA9ICZ
wYl9iYWNrdXBidWRkeTo6JG9wdGlvbnM7CgkJCQkJJHNhdmVwb2ludF9sZXZlbHMgICAgID0gZXhwbG9kZS
ggJyMnLCAkc2F2ZXBvaW50X3Jvb3QgLiAkcG9zdF9uYW1lICk7CgkJCQkJZm9yZWFjaCAoICRzYXZlcG9pb
nRfbGV2ZWxzIGFzICRzYXZlcG9pbnRfbGV2ZWwgKSB7CgkJCQkJCSRzYXZlcG9pbnRfc3Vic2VjdGlvbiA9
ICYkc2F2ZXBvaW50X3N1YnNlY3Rpb257JHNhdmVwb2ludF9sZXZlbH07CgkJCQkJfQoJCQkJCS8vIEFwcGx
5IHNldHRpbmdzLgoJCQkJCSRzYXZlcG9pbnRfc3Vic2VjdGlvbiA9IHN0cmlwc2xhc2hlc19kZWVwKCAkcG
9zdF92YWx1ZSApOyAvLyBSZW1vdmUgV29yZFByZXNzJyBtYWdpYy1xdW90ZXMtbm9uc2Vuc2UuCgkJCQl9C
goJCQkJLy8gQWRkIGEgbm90ZSB0byB0aGUgc2F2ZSBhbGVydCB0aGF0IHNvbWUgdmFsdWVzIGFyZSBza2lw
cGVkIGR1ZSB0byBlcnJvcnMuCgkJCQkkZXJyb3Jfbm90ZSA9ICcnOwoJCQkJaWYgKCBjb3VudCggJGVycm9
ycyApID4gMCApIHsKCQkJCQkkZXJyb3Jfbm90ZSA9ICcgT25lIG9yIG1vcmUgZmllbGRzIHNraXBwZWQgZH
VlIHRvIGVycm9yLic7CgkJCQl9CgoJCQkJcGJfYmFja3VwYnVkZHk6OnNhdmUoKTsKCQkJCXBiX2JhY2t1c
GJ1ZGR5OjphbGVydCggX18oICdTZXR0aW5ncyBzYXZlZC4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAu
ICRlcnJvcl9ub3RlICk7CgoJCQkJJHJldHVybiA9IGFycmF5KAoJCQkJCSdlcnJvcnMnID0+ICRlcnJvcnM
sCgkJCQkJJ2RhdGEnICAgPT4gJF9wb3N0cywKCQkJCSk7CgkJCQlyZXR1cm4gJHJldHVybjsKCQkJfSAvLy
BFbmQgaWYgc2F2ZXBvaW50ICE9PT0gZmFsc2UuCgkJfSAvLyBlbmQgc3VibWl0dGVkIGZvcm0uCgoJCXJld
HVybiBhcnJheSgpOwoJfSAvLyBFbmQgcHJvY2VzcygpLgoKCS8qKgoJICogRGlzcGxheXMgYWxsIHRoZSBy
ZWdpc3RlcmVkIHNldHRpbmdzIGluIHRoaXMgb2JqZWN0LiBFbnRpcmUgZm9ybSBhbmQgSFRNTCBpcyBlY2h
vJ2Qgb3V0LgoJICoKCSAqIEBzZWUgcGx1Z2luYnVkZHlfc2V0dGluZ3MtPmdldF9zZXR0aW5ncygpCgkgKg
oJICogQHBhcmFtIHN0cmluZyAkc3VibWl0X2J1dHRvbl90aXRsZSAgVGV4dCB0byBkaXNwbGF5IGluIHRoZ
SBzdWJtaXQgYnV0dG9uLgoJICogQHBhcmFtIHN0cmluZyAkYmVmb3JlICAgICAgICAgICAgICAgQ29udGVu
dCBiZWZvcmUgc3VibWl0IGFmdGVyLgoJICogQHBhcmFtIHN0cmluZyAkYWZ0ZXIgICAgICAgICAgICAgICA
gQ29udGVudCBhZnRlciBzdWJtaXQgYnV0dG9uLgoJICogQHBhcmFtIHN0cmluZyAkc2F2ZV9idXR0b25fY2
xhc3MgICAgQ2xhc3MgZm9yIHNhdmUgYnV0dG9uLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZGlzcGxheV9zZ
XR0aW5ncyggJHN1Ym1pdF9idXR0b25fdGl0bGUsICRiZWZvcmUgPSAnJywgJGFmdGVyID0gJycsICRzYXZl
X2J1dHRvbl9jbGFzcyA9ICcnICkgewoJCWVjaG8gJHRoaXMtPmdldF9zZXR0aW5ncyggJHN1Ym1pdF9idXR
0b25fdGl0bGUsICRiZWZvcmUsICRhZnRlciwgJHNhdmVfYnV0dG9uX2NsYXNzICk7Cgl9IC8vIEVuZCBkaX
NwbGF5X3NldHRpbmdzKCkuCgoJLyoqCgkgKiBSZXR1cm5zIGFsbCB0aGUgcmVnaXN0ZXJlZCBzZXR0aW5nc
yBpbiB0aGlzIG9iamVjdC4gRW50aXJlIGZvcm0gYW5kIEhUTUwgaXMgcmV0dXJuZWQuCgkgKgoJICogQHNl
ZSBwbHVnaW5idWRkeV9zZXR0aW5ncy0+ZGlzcGxheV9zZXR0aW5ncygpCgkgKiByYWRpbyBidXR0b24gYWR
kaXRpb25hbCBvcHRpb25zOiAgb3JpZW50YXRpb24gWyB2ZXJ0aWNhbCAvIGhvcml6b250YWwgXQoJICoKCS
AqIEBwYXJhbSBzdHJpbmcgJHN1Ym1pdF9idXR0b25fdGl0bGUgIFRleHQgdG8gZGlzcGxheSBpbiB0aGUgc
3VibWl0IGJ1dHRvbi4KCSAqIEBwYXJhbSBzdHJpbmcgJGJlZm9yZSAgICAgICAgICAgICAgIENvbnRlbnQg
YmVmb3JlIHN1Ym1pdCBhZnRlci4KCSAqIEBwYXJhbSBzdHJpbmcgJGFmdGVyICAgICAgICAgICAgICAgIEN
vbnRlbnQgYWZ0ZXIgc3VibWl0IGJ1dHRvbi4KCSAqIEBwYXJhbSBzdHJpbmcgJHNhdmVfYnV0dG9uX2NsYX
NzICAgIENsYXNzIGZvciBzYXZlIGJ1dHRvbi4KCSAqCgkgKiBAcmV0dXJuIHN0cmluZyAgUmV0dXJucyBlb
nRpcmUgc3RyaW5nIHdpdGggZXZlcnl0aGluZyBpbiBpdCB0byBkaXNwbGF5LgoJICovCglwdWJsaWMgZnVu
Y3Rpb24gZ2V0X3NldHRpbmdzKCAkc3VibWl0X2J1dHRvbl90aXRsZSwgJGJlZm9yZSA9ICcnLCAkYWZ0ZXI
gPSAnJywgJHNhdmVfYnV0dG9uX2NsYXNzID0gJycgKSB7CgkJJGZpcnN0X3RpdGxlID0gdHJ1ZTsgLy8gZm
lyc3QgdGl0bGUncyBDU1MgdG9wIHBhZGRpbmcgZGlmZmVycyBzbyBtdXN0IHRyYWNrLgoKCQkkcmV0dXJuI
CA9ICR0aGlzLT5fZm9ybS0+c3RhcnQoKTsKCQkkcmV0dXJuIC49ICc8dGFibGUgY2xhc3M9ImZvcm0tdGFi
bGUiPic7CgkJZm9yZWFjaCAoICR0aGlzLT5fc2V0dGluZ3MgYXMgJHNldHRpbmdzICkgewoJCQkkdGhfY3N
zID0gJyc7CgoJCQlpZiAoICcnID09ICRzZXR0aW5nc1sndGl0bGUnXSApIHsgLy8gYmxhbmsgdGl0bGUgc2
8gaGlkZSBsZWZ0IGNvbHVtbi4KCQkJCSR0aF9jc3MgLj0gJyBkaXNwbGF5OiBub25lOyc7CgkJCX0KCgkJC
WlmICggJ3RpdGxlJyA9PT0gJHNldHRpbmdzWyd0eXBlJ10gKSB7IC8vIFRpdGxlIGl0ZW0uCgkJCQlpZiAo
IHRydWUgPT09ICRmaXJzdF90aXRsZSApIHsgLy8gRmlyc3QgdGl0bGUgaW4gbGlzdC4KCQkJCQkkcmV0dXJ
uICAgICAuPSAnPHRyIHN0eWxlPSJib3JkZXI6IDA7Ij48dGggY29sc3Bhbj0iMiIgc3R5bGU9ImJvcmRlcj
ogMDsgcGFkZGluZy10b3A6IDA7IHBhZGRpbmctYm90dG9tOiAwOyIgY2xhc3M9IicgLiAkc2V0dGluZ3NbJ
3Jvd19jbGFzcyddIC4gJyI+PGgzIGNsYXNzPSJ0aXRsZSAnIC4gJHNldHRpbmdzWydjbGFzcyddIC4gJyIn
OwoJCQkJCSRyZXR1cm4gICAgIC49ICcgc3R5bGU9Im1hcmdpbi10b3A6IDA7IG1hcmdpbi1ib3R0b206IDA
uNWVtOyInOwoJCQkJCSRmaXJzdF90aXRsZSA9IGZhbHNlOwoJCQkJfSBlbHNlIHsgLy8gU3Vic2VxdWVudC
B0aXRsZXMuCgkJCQkJJHJldHVybiAuPSAnPHRyIHN0eWxlPSJib3JkZXI6IDA7Ij48dGggY29sc3Bhbj0iM
iIgc3R5bGU9ImJvcmRlcjogMDsiIGNsYXNzPSInIC4gJHNldHRpbmdzWydyb3dfY2xhc3MnXSAuICciPjxo
MyBjbGFzcz0idGl0bGUgJyAuICRzZXR0aW5nc1snY2xhc3MnXSAuICciJzsKCQkJCQkkcmV0dXJuIC49ICc
gc3R5bGU9Im1hcmdpbjogMC41ZW0gMDsiJzsKCQkJCX0KCgkJCQkkcmV0dXJuIC49ICc+JyAuICRzZXR0aW
5nc1sndGl0bGUnXSAuICc8L2gzPjwvdGg+JzsKCQkJfSBlbHNlaWYgKCAnaGlkZGVuJyA9PT0gJHNldHRpb
mdzWyd0eXBlJ10gKSB7IC8vIGhpZGRlbiBmb3JtIGl0ZW0uIG5vIHRpdGxlLgoJCQkJJHJldHVybiAuPSAk
dGhpcy0+X2Zvcm0tPmdldCggJHNldHRpbmdzWyduYW1lJ10sICRzZXR0aW5nc1snY3NzJ10sICRzZXR0aW5
nc1snY2xhc3NlcyddICk7CgkJCX0gZWxzZSB7IC8vIE5vcm1hbCBpdGVtLgoJCQkJJHJldHVybiAuPSAnPH
RyIGNsYXNzPSInIC4gJHNldHRpbmdzWydyb3dfY2xhc3MnXSAuICciPic7CgkJCQkkcmV0dXJuIC49ICc8d
Gggc2NvcGU9InJvdyIgY2xhc3M9IicgLiAkc2V0dGluZ3NbJ3Jvd19jbGFzcyddIC4gJyInOwoJCQkJaWYg
KCAnJyAhPSAkdGhpcy0+X2N1c3RvbV90aXRsZV93aWR0aCApIHsKCQkJCQkkcmV0dXJuIC49ICcgc3R5bGU
9IndpZHRoOiAnIC4gJHRoaXMtPl9jdXN0b21fdGl0bGVfd2lkdGggLiAncHg7ICcgLiAkdGhfY3NzIC4gJy
InOwoJCQkJfSBlbHNlIHsKCQkJCQkkcmV0dXJuIC49ICcgc3R5bGU9IicgLiAkdGhfY3NzIC4gJyInOwoJC
QkJfQoJCQkJJHJldHVybiAuPSAnPic7CgkJCQkkcmV0dXJuIC49ICRzZXR0aW5nc1sndGl0bGUnXTsKCQkJ
CWlmICggaXNzZXQoICRzZXR0aW5nc1sndGlwJ10gKSAmJiAnJyAhPSAkc2V0dGluZ3NbJ3RpcCddICkgewo
JCQkJCSRyZXR1cm4gLj0gcGJfYmFja3VwYnVkZH
k6OiR1aS0+dGlwKCAkc2V0dGluZ3NbJ3RpcCddLCAnJywgZmFsc2UgKTsKCQkJCX0KCQkJCSRyZXR1cm4gL
j0gJzwvdGg+JzsKCQkJCWlmICggJ3RpdGxlJyA9PT0gJHNldHRpbmdzWyd0eXBlJ10gKSB7IC8vIEV4dGVu
ZCB3aWR0aCBmdWxsIGxlbmd0aCBmb3IgdGl0bGUgaXRlbS4KCQkJCQkkcmV0dXJuIC49ICcgY29sc3Bhbj0
iMiInOwoJCQkJfQoKCQkJCSRyZXR1cm4gLj0gJzx0ZCBjbGFzcz0iJyAuICRzZXR0aW5nc1sncm93X2NsYX
NzJ10gLiAnIic7CgkJCQlpZiAoICcnID09ICRzZXR0aW5nc1sndGl0bGUnXSApIHsgLy8gTm8gdGl0bGUgc
28gaGlkZSBsZWZ0IGNvbHVtbi4KCQkJCQkkcmV0dXJuIC49ICcgY29sc3Bhbj0iMiInOwoJCQkJfQoJCQkJ
JHJldHVybiAuPSAnPic7CgkJCQkkcmV0dXJuIC49ICRzZXR0aW5nc1snYmVmb3JlJ107CgkJCQlpZiAoIGl
zc2V0KCAkc2V0dGluZ3NbJ2Vycm9yJ10gKSAmJiB0cnVlID09PSAkc2V0dGluZ3NbJ2Vycm9yJ10gKSB7Cg
kJCQkJJHNldHRpbmdzWydjc3MnXSAuPSAnYm9yZGVyOiAxcHggZGFzaGVkIHJlZDsnOwoJCQkJfQoJCQkJJ
HJldHVybiAuPSAkdGhpcy0+X2Zvcm0tPmdldCggJHNldHRpbmdzWyduYW1lJ10sICRzZXR0aW5nc1snY3Nz
J10sICRzZXR0aW5nc1snY2xhc3NlcyddLCAkc2V0dGluZ3NbJ29yaWVudGF0aW9uJ10gKTsKCQkJCSRyZXR
1cm4gLj0gJHNldHRpbmdzWydhZnRlciddOwoJCQkJJHJldHVybiAuPSAnPC90ZD4nOwoJCQkJJHJldHVybi
AuPSAnPC90cj4nOwoJCQl9CgkJfQoJCSRyZXR1cm4gLj0gJzwvdGFibGU+PGJyPic7CgoJCS8vIFN1Ym1pd
CBidXR0b24uCgkJJHJldHVybiAuPSAkYmVmb3JlOwoJCSRyZXR1cm4gLj0gJHRoaXMtPl9mb3JtLT5zdWJt
aXQoICdzZXR0aW5nc19zdWJtaXQnLCAkc3VibWl0X2J1dHRvbl90aXRsZSwgJHNhdmVfYnV0dG9uX2NsYXN
zICk7CgkJJHJldHVybiAuPSAkdGhpcy0+X2Zvcm0tPmdldCggJ3NldHRpbmdzX3N1Ym1pdCcsICcnLCAkc2
F2ZV9idXR0b25fY2xhc3MgKTsKCQkkcmV0dXJuIC49ICRhZnRlcjsKCgkJJHJldHVybiAuPSAkdGhpcy0+X
2Zvcm0tPmVuZCgpOwoKCQlyZXR1cm4gJHJldHVybjsKCX0gLy8gRW5kIGdldF9zZXR0aW5ncygpLgoKCS8q
KgoJICogQ2xlYXJzIHRoZSB2YWx1ZSBvZiBhbGwgZm9ybSBpdGVtcyBzZXR0aW5nIHRoZSB2YWx1ZSB0byB
hbiBlbXB0eSBzdHJpbmcgJycuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBjbGVhcl92YWx1ZXMoKSB7CgkJJH
RoaXMtPl9mb3JtLT5jbGVhcl92YWx1ZXMoKTsKCX0gLy8gRW5kIGNsZWFyX3ZhbHVlcygpLgoKCS8qKgoJI
CogUmVwbGFjZSB0aGUgdmFsdWUgb2YgYSBmb3JtIGl0ZW0uCgkgKgoJICogQHBhcmFtIHN0cmluZyAkaXRl
bV9uYW1lICBOYW1lIG9mIHRoZSBmb3JtIHNldHRpbmcgaXRlbSB0byB1cGRhdGUuCgkgKiBAcGFyYW0gc3R
yaW5nICR2YWx1ZSAgICAgIFZhbHVlIHRvIHNldCB0aGUgaXRlbSB0by4KCSAqLwoJcHVibGljIGZ1bmN0aW
9uIHNldF92YWx1ZSggJGl0ZW1fbmFtZSwgJHZhbHVlICkgewoJCSR0aGlzLT5fZm9ybS0+c2V0X3ZhbHVlK
CAkaXRlbV9uYW1lLCAkdmFsdWUgKTsKCX0gLy8gRW5kIHNldF92YWx1ZSgpLgoKfSAvLyBFbmQgY2xhc3Mg
cGx1Z2luYnVkZHlfc2V0dGluZ3MuCg==
###PACKDATA,FILE_END,/pluginbuddy/classes/settings.php,importbuddy/pluginbuddy/clas
ses/settings.php
###PACKDATA,FILE_START,/pluginbuddy/classes/ui.php,importbuddy/pluginbuddy/classes/
ui.php
PD9waHAKCgoKLyoJcGx1Z2luYnVkZHlfdWkgY2xhc3MKICoKICoJSGFuZGxlcyB0eXBpY2FsIHVzZXIgaW5
0ZXJmYWNlIGl0ZW1zIHVzZWQgaW4gV29yZFByZXNzIGRldmVsb3BtZW50LgogKgogKglAYXV0aG9yIER1c3
RpbiBCb2x0b24KICoJQHZlcnNpb24gMS4wLjAKICovCmNsYXNzIHBiX2JhY2t1cGJ1ZGR5X3VpIHsKCglwc
ml2YXRlICRfdGFiX2ludGVyZmFjZV90YWcgPSAnJzsKCgoJLyoJcGx1Z2luYnVkZHlfdWktPnN0YXJ0X21l
dGFib3goKQoJICoKCSAqCVN0YXJ0cyBhIG1ldGFib3guIFVzZSB3aXRoIGVuZF9tZXRhYm94KCkuCgkgKgl
Ac2VlIHBsdWdpbmJ1ZGR5X3VpLT5lbmRfbWV0YWJveAoJICoKCSAqCUBwYXJhbQkJc3RyaW5nCQkJCSR0aX
RsZQkJCQlUaXRsZSB0byBkaXNwbGF5IGZvciB0aGUgbWV0YWJveC4KCSAqCUBwYXJhbQkJYm9vbGVhbgkJC
QkkZWNobwkJCQlFY2hvcyBpZiB0cnVlOyBlbHNlIHJldHVybnMuCgkgKglAcGFyYW0JCWJvb2xlYW4vc3Ry
aW5nCQkkc21hbGxfb3JfY3NzCQl0cnVlOiBzaXplIGlzIGxpbWl0ZWQgc21hbGxlci4gZmFsc2U6IHNpemU
gaXMgbGltaXRlZCBsYXJnZXIuIElmIGEgc3RyaW5nIHRoZW4gaW50ZXJwcmV0ZWQgYXMgQ1NTLgoJICoJQH
JldHVybgkJbnVsbC9zdHJpbmcJCQkJCQkJCVJldHVybnMgbnVsbCBpZiAkZWNobyBpcyB0cnVlOyBlbHNlI
HJldHVybnMgc3RyaW5nIHdpdGggSFRNTC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHN0YXJ0X21ldGFib3go
ICR0aXRsZSwgJGVjaG8gPSB0cnVlLCAkc21hbGxfb3JfY3NzID0gZmFsc2UgKSB7CgkJaWYgKCAkc21hbGx
fb3JfY3NzID09PSBmYWxzZSApIHsgLy8gTGFyZ2Ugc2l6ZS4KCQkJJGNzcyA9ICd3aWR0aDogNzAlOyBtaW
4td2lkdGg6IDcyMHB4Oyc7CgkJfSBlbHNlaWYgKCAkc21hbGxfb3JfY3NzID09PSB0cnVlICkgeyAvLyBTb
WFsbCBzaXplLgoJCQkkY3NzID0gJ3dpZHRoOiAyMCU7IG1pbi13aWR0aDogMjUwcHg7JzsKCQl9IGVsc2Ug
eyAvLyBTdHJpbmcgc28gaW50ZXJwcmV0IGFzIENTUy4KCQkJJGNzcyA9ICRzbWFsbF9vcl9jc3M7CgkJfQo
KCQkkY3NzIC49ICcgcGFkZGluZy10b3A6IDA7IG1hcmdpbi10b3A6IDEwcHg7IGN1cnNvcjogYXV0bzsnOw
oKCQkkcmVzcG9uc2UgPSAnPGRpdiBjbGFzcz0ibWV0YWJveC1ob2xkZXIgcG9zdGJveCIgc3R5bGU9IicgL
iAkY3NzIC4gJyI+CgkJCQkJCTxoMyBjbGFzcz0iaG5kbGUiIHN0eWxlPSJjdXJzb3I6IGF1dG87Ij48c3Bh
bj4nIC4gJHRpdGxlIC4gJzwvc3Bhbj48L2gzPgoJCQkJCQk8ZGl2IGNsYXNzPSJpbnNpZGUiPic7CgkJaWY
gKCAkZWNobyA9PT0gdHJ1ZSApIHsKCQkJZWNobyAkcmVzcG9uc2U7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIC
RyZXNwb25zZTsKCQl9Cgl9IC8vIEVuZCBzdGFydF9tZXRhYm94KCkuCgoKCgkvKglwbHVnaW5idWRkeV91a
S0+ZW5kX21ldGFib3goKQoJICoKCSAqCUVuZHMgYSBtZXRhYm94LiBVc2Ugd2l0aCBzdGFydF9tZXRhYm94
KCkuCgkgKglAc2VlIHBsdWdpbmJ1ZGR5X3VpLT5zdGFydF9tZXRhYm94CgkgKgoJICoJQHBhcmFtCQlib29
sZWFuCQkkZWNobwkJRWNob3MgaWYgdHJ1ZTsgZWxzZSByZXR1cm5zLgoJICoJQHJldHVybgkJbnVsbC9zdH
JpbmcJCQkJUmV0dXJucyBudWxsIGlmICRlY2hvIGlzIHRydWU7IGVsc2UgcmV0dXJucyBzdHJpbmcgd2l0a
CBIVE1MLgoJICovCglwdWJsaWMgZnVuY3Rpb24gZW5kX21ldGFib3goICRlY2hvID0gdHJ1ZSApIHsKCQkk
cmVzcG9uc2UgPSAnCTwvZGl2PgoJCQkJCTwvZGl2Pic7CgkJaWYgKCAkZWNobyA9PT0gdHJ1ZSApIHsKCQk
JZWNobyAkcmVzcG9uc2U7CgkJfSBlbHNlIHsKCQkJcmV0dXJuICRyZXNwb25zZTsKCQl9Cgl9IC8vIEVuZC
BlbmRfbWV0YWJveCgpLgoKCgoJLyoJcGx1Z2luYnVkZHlfdWktPnRpdGxlKCkKCSAqCgkgKglEaXNwbGF5c
yBhIHN0eWxlZCwgcHJvcGVybHkgZm9ybWF0dGVkIHRpdGxlIGZvciBwYWdlcy4KCSAqCgkgKglAcGFyYW0J
CXN0cmluZwkJJHRpdGxlCQlUaXRsZSB0byBkaXNwbGF5LgoJICoJQHBhcmFtCQlib29sZWFuCQkkZWNobwk
JV2hldGhlciBvciBub3QgdG8gZWNobyB0aGUgc3RyaW5nIG9yIHJldHVybi4KCSAqCUByZXR1cm4JCW51bG
wvc3RyaW5nCQkJCVJldHVybnMgbnVsbCBpZiAkZWNobyBpcyB0cnVlOyBlbHNlIHJldHVybnMgc3RyaW5nI
HdpdGggSFRNTC4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRpdGxlKCAkdGl0bGUsICRlY2hvID0gdHJ1ZSwg
JGJyID0gdHJ1ZSApIHsKCQkkcmV0dXJuID0gJzxoMSBzdHlsZT0iem9vbTogMS4wNTsiPjxzcGFuIGNsYXN
zPSJiYWNrdXBidWRkeS1pY29uLWRyaXZlIiBzdHlsZT0iZm9udC1zaXplOiAxLjJlbTsgdmVydGljYWwtYW
xpZ246IC00cHg7Ij48L3NwYW4+ICcgLiAkdGl0bGUgLiAnPC9oMT4nOwoJCWlmICggdHJ1ZSA9PT0gJGJyI
CkgewoJCQkkcmV0dXJuIC49ICc8YnIgLz4nOwoJCX0KCQlpZiAoICRlY2hvID09PSB0cnVlICkgewoJCQll
Y2hvICRyZXR1cm47CgkJfSBlbHNlIHsKCQkJcmV0dXJuICRyZXR1cm47CgkJfQoJfSAvLyBFbmQgdGl0bGU
oKS4KCgoKCS8qCXBsdWdpbmJ1ZGR5X3VpLT5idXR0b24oKQoJICoKCSAqCURpc3BsYXlzIGEgbmljZSBwcm
V0dHkgc3R5bGVkIGJ1dHRvbi4gSG93IG5pY2UuIEFsd2F5cyByZXR1cm5zLgoJICoKCSAqCUBwYXJhbQkJc
3RyaW5nCQkkdXJsCQkJCVVSTCAoaHJlZikgZm9yIHRoZSBidXR0b24gdG8gbGluayB0by4KCSAqCUBwYXJh
bQkJc3RyaW5nCQkkdGV4dAkJCQlUZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGJ1dHRvbi4KCSAqCUBwYXJhbQk
Jc3RyaW5nCQkkdGl0bGUJCQkJT3B0aW9uYWwgdGl0bGUgdGV4dCB0byBkaXNwbGF5IG9uIGhvdmVyIGluIH
RoZSB0aXRsZSB0YWcuCgkgKglAcGFyYW0JCWJvb2xlYW4JCSRwcmltYXJ5CQkJKG9wdGlvbmFsKSBXaGV0a
GVyIG9yIG5vdCB0aGlzIGlzIGEgcHJpbWFyeSBidXR0b24uIFByaW1hcnkgYnV0dG9ucyBhcmUgYmx1ZSBh
bmQgc3Ryb25nIHdoZXJlIGRlZmF1bHQgbm9uLXByaW1hcnkgaXMgZ3JleSBhbmQgZ2VudGxlLgoJICoJQHB
hcmFtCQlzdHJpbmcJCSRhZGRpdGlvbmFsX2NsYXNzCShvcHRpb25hbCkgQWRkaXRpb25hbCBDU1MgY2xhc3
MgdG8gYXBwbHkgdG8gYnV0dG9uLiBVc2VmdWwgZm9yIHRoaWNrYm94IG9yIG90aGVyIEpTIHN0dWZmLgoJI
CoJQHBhcmFtCQlzdHJpbmcJCSRpZAkJCQkJKG9wdGlvbmFsKSBIVE1MIElEIHRvIGFwcGx5LiBVc2VmdWwg
Zm9yIEpTLgoJICoJQHJldHVybgkJc3RyaW5nCQkJCQkJCUhUTUwgc3RyaW5nIGZvciB0aGUgYnV0dG9uLgo
JICovCglwdWJsaWMgZnVuY3Rpb24gYnV0dG9uKCAkdXJsLCAkdGV4dCwgJHRpdGxlID0gJycsICRwcmltYX
J5ID0gZmFsc2UsICRhZGRpdGlvbmFsX2NsYXNzID0gJycsICRpZCA9ICcnICkgewoJCWlmICggJHByaW1hc
nkgPT09IGZhbHNlICkgewoJCQlyZXR1cm4gJzxhIGNsYXNzPSJidXR0b24gc2Vjb25kYXJ5LWJ1dHRvbiAn
IC4gJGFkZGl0aW9uYWxfY2xhc3MgLiAnIiBzdHlsZT0ibWFyZ2luLXRvcDogM3B4OyIgaWQ9IicgLiAkaWQ
gLiAnIiB0aXRsZT0iJyAuICR0aXRsZSAuICciIGhyZWY9IicgLiAkdXJsIC4gJyI+JyAuICR0ZXh0IC4gJz
wvYT4nOwoJCX0gZWxzZSB7CgkJCXJldHVybiAnPGEgY2xhc3M9ImJ1dHRvbiBidXR0b24tcHJpbWFyeSAnI
C4gJGFkZGl0aW9uYWxfY2xhc3MgLiAnIiBzdHlsZT0ibWFyZ2luLXRvcDogM3B4OyIgaWQ9IicgLiAkaWQg
LiAnIiB0aXRsZT0iJyAuICR0aXRsZSAuICciIGhyZWY9IicgLiAkdXJsIC4gJyI+JyAuICR0ZXh0IC4gJzw
vYT4nOwoJCX0KCX0gLy8gRW5kIGJ1dHRvbigpLgoKCgoJLyoJcGx1Z2luYnVkZHlfdWktPm5vdGUoKQoJIC
oKCSAqCURpc3BsYXkgdGV4dCBpbiBhIHN1YnRsZSB3YXkuCgkgKgoJICoJQHBhcmFtCQlzdHJpbmcJCSR0Z
Xh0CQlUZXh0IG9mIG5vdGUuCgkgKglAcGFyYW0JCWJvb2xlYW4JCSRlY2hvCQlXaGV0aGVyIG9yIG5vdCB0
byBlY2hvIHRoZSBzdHJpbmcgb3IgcmV0dXJuLgoJICoJQHJldHVybgkJbnVsbC9zdHJpbmcJCQkJUmV0dXJ
ucyBudWxsIGlmICRlY2hvIGlzIHRydWU7IGVsc2UgcmV0dXJucyBzdHJpbmcgd2l0aCBIVE1MLgoJICovCg
lwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG5vdGUoICR0ZXh0LCAkZWNobyA9IHRydWUgKSB7CgkJJHJldHVyb
iA9ICc8c3BhbiBjbGFzcz0iZGVzY3JpcHRpb24iPjxpPicgLiAkdGV4dCAuICc8L2k+PC9zcGFuPic7CgkJ
aWYgKCAkZWNobyA9PT0gdHJ1ZSApIHsKCQkJZWNobyAkcmV0dXJuOwoJCX0gZWxzZSB7CgkJCXJldHVybiA
kcmV0dXJuOwoJCX0KCX0gLy8gRW5kIG5vdGUoKS4KCgoKCS8qCXBsdWdpbmJ1ZGR5X3VpLT5saXN0X3RhYm
xlKCkKCSAqCgkgKglEaXNwbGF5cyBhIG5pY2UgdGFibGUgd2l0aCBtdWx0aXBsZSBjb2x1bW5zLCByb3dzL
CBidWxrIGFjdGlvbnMsIGhvdmVyIGFjdGlvbnMsIGV0YyBzaW1pbGFyIHRvIFdvcmRQcmVzcyBwb3N0cyB0
YWJsZS4KCSAqCUN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIGVjaG8gb2Ygb3V0cHV0LgoJICoKCSAqCUBwYXJ
hbQkJYXJyYXkJCSRpdGVtcwkJQXJyYXkgb2Ygcm93cyB0byBkaXNwbGF5LiBFYWNoIHJvdyBhcnJheSBjb2
50YWlucyBhbiBhcnJheSB3aXRoIHRoZSBjb2x1bW5zLiBUeXBpY2FsbHkgc2V0IGluIGNvbnRyb2xsZXIuC
gkgKgkJCQkJCQkJCQlFeDogYXJyYXkoIGFycmF5KCAnYmx1ZScsICdyZWQnICksIGFycmF5KCAnYnJvd24n
LCAnZ3JlZW4nICkgKS4KCSAqCQkJCQkJCQkJCUlmIHRoZSB2YWx1ZSBmb3IgYW4gaXRlbSBpcyBhbiBhcnJ
heSB0aGVuIHRoZSBmaXJzdCB2YWx1ZSB3aWxsIGJlIGFzc2lnbmVkIHRvIHRoZSByZWwgdGFnIG9mIGFueS
Bob3ZlciBhY3Rpb25zLiBJZiBub3QKCSAqCQkJCQkJCQkJCWFuIGFycmF5IHRoZW4gdGhlIHZhbHVlIGl0c
2VsZiB3aWxsIGJlIHB1dCBpbiB0aGUgcmVsIHRhZy4gIElmIGFuIGFycmF5IHRoZSBzZWNvbmQgdmFsdWUg
d2lsbCBiZSB0aGUgb25lIGRpc3BsYXllZCBpbiB0aGUgY29sdW1uLgoJICoJCQkJCQkJCQkJQmFja3VwQnV
kZHkgbmVlZGVkIHRoZSBkaXNwbGF5ZWQgaXRlbSBpbiB0aGUgY29sdW1uIHRvIGJlIGEgbGluayAoZm9yIG
Rvd25sb2FkaW5nIGJhY2t1cHMpIGJ1dCB0aGUgYmFja3VwIGZpbGUgYXMgdGhlIHJlbC4KCSAqCUBwYXJhb
QkJYXJyYXkJCSRzZXR0aW5ncwlBcnJheSBvZiBhbGwgdGhlIHZhcmlvdXMgc2V0dGluZ3MuIE1lcmdlZCB3
aXRoIGRlZmF1bHRzIHByaW9yIHRvIHVzYWdlLiBUeXBpY2FsbHkgc2V0IGluIHZpZXcuCgkgKgkJCQkJCQk
JCQlTZWUgJGRlZmF1bHRfc2V0dGluZ3MgYXQgYmVnaW5uaW5nIG9mIGZ1bmN0aW9uIGZvciBhdmFpbGFibG
Ugc2V0dGluZ3MuCgkgKgkJCQkJCQkJCQlFeDogJHNldHRpbmdzID0gYXJyYXkoCgkgKgkJCQkJCQkJCQkJC
SdhY3Rpb24nCQk9PgkJcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKSwKCSAqCQkJCQkJCQkJCQkJJ2Nv
bHVtbnMnCQk9PgkJYXJyYXkoICdHcm91cCBOYW1lJywgJ0ltYWdlcycsICdTaG9ydGNvZGUnICksCgkgKgk
JCQkJCQkJCQkJCSdob3Zlcl9hY3Rpb25zJwk9PgkJYXJyYXkoICdlZGl0JyA9PiAnRWRpdCBHcm91cCBTZX
R0aW5ncycgKSwJCS8vIFNsdWcgY2FuIGJlIGEgVVJMLiBJbiB0aGlzIGNhc2UgdGhlIHZhbHVlIG9mIHRoZ
SBob3ZlcmVkIHJvdyB3aWxsIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIFVSTC4gVE9ETzogTWFr
ZSB0aGUgZmlyc3QgaG92ZXIgYWN0aW9uIGJlIHRoZSBsaW5rIGZvciB0aGUgZmlyc3QgbGlzdGVkIGl0ZW0
uCgkgKgkJCQkJCQkJCQkJCSdidWxrX2FjdGlvbnMnCT0+CQlhcnJheSggJ2RlbGV0ZV9pbWFnZXMnID0+IC
dEZWxldGUnICksCgkgKgkJCQkJCQkJCQkJKTsKCSAqCUByZXR1cm4JCW51bGwKCSAqLwoJcHVibGljIHN0Y
XRpYyBmdW5jdGlvbiBsaXN0X3RhYmxlKCAkaXRlbXMsICRzZXR0aW5ncyApIHsKCQkkZGVmYXVsdF9zZXR0
aW5ncyA9IGFycmF5KAoJCQkJCQkJCSdjb2x1bW5zJwkJCQkJPT4JYXJyYXkoKSwKCQkJCQkJCQknaG92ZXJ
fYWN0aW9ucycJCQkJPT4JYXJyYXkoKSwKCQkJCQkJCQknYnVsa19hY3Rpb25zJwkJCQk9PglhcnJheSgpLA
oJCQkJCQkJCSdob3Zlcl9hY3Rpb25fY29sdW1uX2tleScJPT4JJycsCQkJLy8gaW50IG9mIGNvbHVtbiB0b
yBzZXQgdmFsdWU9IGluIFVSTCBhbmQgcmVsIHRhZz0gZm9yIHVzaW5nIGluIEpTLgoJCQkJCQkJCSdhY3Rp
b24nCQkJCQk9PgknJywKCQkJCQkJCQkncmVvcmRlcicJCQkJCT0+CScnLAoJCQkJCQkJCSdhZnRlcl9idWx
rJwkJCQk9PgknJywKCQkJCQkJCQknY3NzJwkJCQkJCT0+CScnLAoJCQkJCQkJKTsKCgkJLy8gTWVyZ2UgZG
VmYXVsdHMuCgkJJHNldHRpbmdzID0gYXJyYXlfbWVyZ2UoICRkZWZhdWx0X3NldHRpbmdzLCAkc2V0dGluZ
3MgKTsKCgkJLy8gRnVuY3Rpb24gdG8gaXRlcmF0ZSB0aHJvdWdoIGJ1bGsgYWN0aW9ucy4gVG9wIGFuZCBi
b3R0b20gc2V0IGFyZSB0aGUgc2FtZS4KCQlpZiAoICFmdW5jdGlvbl9leGlzdHMoICdidWxrX2FjdGlvbnM
nICkgKSB7CgkJCWZ1bmN0aW9uIGJ1bGtfYWN0aW9ucyggJHNldHRpbmdzLCAkaG92ZXJfbm90ZSA9IGZhbH
NlICkgewoJCQkJaWYgKCBjb3VudCggJHNldHRpbmdzWydidWxrX2FjdGlvbnMnXSApID4gMCApIHsKCQkJC
QllY2hvICc8ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRvbTogM3B4OyBwYWRkaW5nLXRvcDogM3B4OyI+JzsK
CQkJCQlpZiAoIGNvdW50KCAkc2V0dGluZ3NbJ2J1bGtfYWN0aW9ucyddICkgPT0gMSApIHsKCQkJCQkJZm9
yZWFjaCggJHNldHRpbmdzWydidWxrX2FjdGlvbnMnXSBhcyAkYWN0aW9uX3NsdWcgPT4gJGFjdGlvbl90aX
RsZSApIHsKCQkJCQkJCWVjaG8gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJ1bGtfYWN0aW9uIiB2Y
Wx1ZT0iJyAuICRhY3Rpb25fc2x1ZyAuICciPic7CgkJCQkJCQllY2hvICc8aW5wdXQgdHlwZT0ic3VibWl0
IiBuYW1lPSJkb19idWxrX2FjdGlvbiIgdmFsdWU9IicgLiAkYWN0aW9uX3RpdGxlIC4gJyIgY2xhc3M9ImJ
1dHRvbiBzZWNvbmRhcnktYnV0dG9uIGJhY2t1cGJ1ZGR5LWRvX2J1bGtfYWN0aW9uIj4nOwoJCQkJCQl9Cg
kJCQkJfSBlbHNlIHsKCQkJCQkJZWNobyAnPHNlbGVjdCBuYW1lPSJidWxrX2FjdGlvbiIgY2xhc3M9ImFjd
GlvbnMiPic7CgkJCQkJCWZvcmVhY2ggKCAkc2V0dGluZ3NbJ2J1bGtfYWN0aW9ucyddIGFzICRhY3Rpb25f
c2x1ZyA9PiAkYWN0aW9uX3RpdGxlICkgewoJCQkJCQkJZWNobyAnPG9wdGlvbj5CdWxrIEFjdGlvbnM8L29
wdGlvbj4nOwoJCQkJCQkJZWNobyAnPG9wdGlvbiB2YWx1ZT0iJyAuICRhY3Rpb25fc2x1ZyAuICciPicgLi
AkYWN0aW9uX3RpdGxlIC4gJzwvb3B0aW9uPic7CgkJCQkJCX0KCQkJCQkJZWNobyAnPC9zZWxlY3Q+ICZuY
nNwOyc7CgkJCQkJCS8vZWNobyBzZWxmOjpidXR0b24oICcjJywgJ0FwcGx5JyApOwoJCQkJCQllY2hvICc8
aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJkb19
idWxrX2FjdGlvbiIgdmFsdWU9IkFwcGx5IiBjbGFzcz0iYnV0dG9uIHNlY29uZGFyeS1idXR0b24gYmFja3
VwYnVkZHktZG9fYnVsa19hY3Rpb24iPic7CgkJCQkJfQoJCQkJCWVjaG8gJyZuYnNwOyZuYnNwOyc7CgkJC
QkJZWNobyAkc2V0dGluZ3NbJ2FmdGVyX2J1bGsnXTsKCgkJCQkJZWNobyAnPGRpdiBjbGFzcz0iYWxpZ25y
aWdodCBhY3Rpb25zIj4nOwoJCQkJCWlmICggJGhvdmVyX25vdGUgPT09IHRydWUgKSB7CgkJCQkJCWVjaG8
gcGJfYmFja3VwYnVkZHk6OiR1aS0+bm90ZSggJ0hvdmVyIG92ZXIgaXRlbXMgYWJvdmUgZm9yIGFkZGl0aW
9uYWwgb3B0aW9ucy4nICk7CgkJCQkJfQoJCQkJCWlmICggJHNldHRpbmdzWydyZW9yZGVyJ10gIT0gJycgK
SB7CgkJCQkJCWVjaG8gJwk8aW5wdXQgdHlwZT0ic3VibWl0IiBuYW1lPSJzYXZlX29yZGVyIiBpZD0ic2F2
ZV9vcmRlciIgdmFsdWU9IlNhdmUgT3JkZXIiIGNsYXNzPSJidXR0b24tc2Vjb25kYXJ5IiAvPic7CgkJCQk
JfQoJCQkJCWVjaG8gJzwvZGl2Pic7CgoJCQkJCWVjaG8gJzwvZGl2Pic7CgkJCQl9CgkJCX0gLy8gRW5kIH
N1YmZ1bmN0aW9uIGJ1bGtfYWN0aW9ucygpLgoJCX0gLy8gRW5kIGlmIGZ1bmN0aW9uIGRvZXMgbm90IGV4a
XN0LgoKCQlpZiAoICRzZXR0aW5nc1snYWN0aW9uJ10gIT0gJycgKSB7CgkJCWVjaG8gJzxmb3JtIG1ldGhv
ZD0icG9zdCIgYWN0aW9uPSInIC4gJHNldHRpbmdzWydhY3Rpb24nXSAuICciPic7CgkJCXBiX2JhY2t1cGJ
1ZGR5Ojpub25jZSgpOwoJCQlpZiAoICRzZXR0aW5nc1sncmVvcmRlciddICE9ICcnICkgewoJCQkJZWNoby
AnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ib3JkZXIiIHZhbHVlPSIiIGlkPSJwYl9vcmRlciI+JzsKC
QkJfQoJCX0KCgoJCWVjaG8gJzxkaXYgc3R5bGU9IndpZHRoOiA3MCU7IG1pbi13aWR0aDogNzIwcHg7ICcg
LiAkc2V0dGluZ3NbJ2NzcyddIC4gJyI+JzsKCgkJLy8gRGlzcGxheSBidWxrIGFjdGlvbnMgKHRvcCkuCgk
JYnVsa19hY3Rpb25zKCAkc2V0dGluZ3MgKTsKCgkJZWNobyAnPHRhYmxlIGNsYXNzPSJ3aWRlZmF0IHN0cm
lwZWQiJzsKCQllY2hvICcgaWQ9InRlc3QiPic7CgkJZWNobyAnCQk8dGhlYWQ+CgkJCQkJPHRyIGNsYXNzP
SJ0aGVhZCI+JzsKCQlpZiAoIGNvdW50KCAkc2V0dGluZ3NbJ2J1bGtfYWN0aW9ucyddICkgPiAwICkgewoJ
CQllY2hvJwkJPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJjaGVjay1jb2x1bW4iPjxpbnB1dCB0eXBlPSJjaGV
ja2JveCIgY2xhc3M9ImNoZWNrLWFsbC1lbnRyaWVzIiAvPjwvdGg+JzsKCQl9CgkJZm9yZWFjaCAoICRzZX
R0aW5nc1snY29sdW1ucyddIGFzICRjb2x1bW4gKSB7CgkJCWVjaG8gJzx0aD4nIC4gJGNvbHVtbiAuICc8L
3RoPic7CgkJfQoJCWVjaG8gJwkJPC90cj4KCQkJCTwvdGhlYWQ+CgkJCTx0Zm9vdD4KCQkJCTx0ciBjbGFz
cz0idGhlYWQiPic7CgkJaWYgKCBjb3VudCggJHNldHRpbmdzWydidWxrX2FjdGlvbnMnXSApID4gMCApIHs
KCQkJZWNobycJPHRoIHNjb3BlPSJjb2wiIGNsYXNzPSJjaGVjay1jb2x1bW4iPjxpbnB1dCB0eXBlPSJjaG
Vja2JveCIgY2xhc3M9ImNoZWNrLWFsbC1lbnRyaWVzIiAvPjwvdGg+JzsKCQl9CgkJZm9yZWFjaCAoICRzZ
XR0aW5nc1snY29sdW1ucyddIGFzICRjb2x1bW4gKSB7CgkJCWVjaG8gJzx0aD4nIC4gJGNvbHVtbiAuICc8
L3RoPic7CgkJfQoJCWVjaG8gJwk8L3RyPgoJCQk8L3Rmb290PgoJCQk8dGJvZHknOwoJCWlmICggJHNldHR
pbmdzWydyZW9yZGVyJ10gIT0gJycgKSB7CgkJCWVjaG8gJyBjbGFzcz0icGJfcmVvcmRlciInOwoJCX0KCQ
llY2hvICc+JzsKCgkJLy8gTE9PUCBUSFJPVUdIIEVBQ0ggUk9XLgoJCWZvcmVhY2ggKCAoYXJyYXkpJGl0Z
W1zIGFzICRpdGVtX2lkID0+ICRpdGVtICkgewoJCQllY2hvICcJPHRyIGNsYXNzPSJlbnRyeS1yb3ciIGlk
PSJwYl9yb3dpdGVtLScgLiAkaXRlbV9pZCAuICciPic7CgkJCWlmICggY291bnQoICRzZXR0aW5nc1snYnV
sa19hY3Rpb25zJ10gKSA+IDAgKSB7CgkJCQllY2hvJwk8dGggc2NvcGU9InJvdyIgY2xhc3M9ImNoZWNrLW
NvbHVtbiI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJpdGVtc1tdIiBjbGFzcz0iZW50cmllcyIgd
mFsdWU9IicgLiAkaXRlbV9pZCAuICciPjwvdGg+JzsKCQkJfQoJCQllY2hvICcJCTx0ZD4nOwoKCQkJaWYg
KCBpc19hcnJheSggJGl0ZW1bJzAnXSApICkgewoJCQkJaWYgKCAkaXRlbVsnMCddWzFdID09ICcnICkgewo
JCQkJCWVjaG8gJyZuYnNwOyc7CgkJCQl9IGVsc2UgewoJCQkJCWVjaG8gJGl0ZW1bJzAnXVsxXTsKCQkJCX
0KCQkJfSBlbHNlIHsKCQkJCWlmICggJGl0ZW1bJzAnXSA9PSAnJyApIHsKCQkJCQllY2hvICcmbmJzcDsnO
woJCQkJfSBlbHNlIHsKCQkJCQllY2hvICRpdGVtWycwJ107CgkJCQl9CgkJCX0KCgkJCWVjaG8gJwkJCTxk
aXYgY2xhc3M9InJvdy1hY3Rpb25zIiBzdHlsZT0ibWFyZ2luLXRvcDogMTBweDsiPic7IC8vICBzdHlsZT0
ibWFyZ2luOjA7IHBhZGRpbmc6MDsiCgkJCSRpID0gMDsKCQkJZm9yZWFjaCAoICRzZXR0aW5nc1snaG92ZX
JfYWN0aW9ucyddIGFzICRhY3Rpb25fc2x1ZyA9PiAkYWN0aW9uX3RpdGxlICkgeyAvLyBEaXNwbGF5IGFsb
CBob3ZlciBhY3Rpb25zLgoJCQkJJGkrKzsKCQkJCWlmICggJHNldHRpbmdzWydob3Zlcl9hY3Rpb25fY29s
dW1uX2tleSddICE9ICcnICkgewoJCQkJCWlmICggaXNfYXJyYXkoICRpdGVtWyRzZXR0aW5nc1snaG92ZXJ
fYWN0aW9uX2NvbHVtbl9rZXknXV0gKSApIHsKCQkJCQkJJGhvdmVyX2FjdGlvbl9jb2x1bW5fdmFsdWUgPS
AkaXRlbVskc2V0dGluZ3NbJ2hvdmVyX2FjdGlvbl9jb2x1bW5fa2V5J11dWzBdOwoJCQkJCX0gZWxzZSB7C
gkJCQkJCSRob3Zlcl9hY3Rpb25fY29sdW1uX3ZhbHVlID0gJGl0ZW1bJHNldHRpbmdzWydob3Zlcl9hY3Rp
b25fY29sdW1uX2tleSddXTsKCQkJCQl9CgkJCQl9IGVsc2UgewoJCQkJCSRob3Zlcl9hY3Rpb25fY29sdW1
uX3ZhbHVlID0gJyc7CgkJCQl9CgkJCQkvL2VjaG8gJ3NsdWc6ICcgLiAkYWN0aW9uX3NsdWc7CgkJCQlpZi
AoIHN0cnN0ciggJGFjdGlvbl9zbHVnLCAnLycgKSA9PT0gZmFsc2UgKSB7IC8vIFdvcmQgaG92ZXIgYWN0a
W9uIHNsdWcuCgkJCQkJJGhvdmVyX2xpbms9IHBiX2JhY2t1cGJ1ZGR5OjpwYWdlX3VybCgpIC4gJyYnIC4g
JGFjdGlvbl9zbHVnIC4gJz0nIC4gJGl0ZW1faWQgLiAnJnZhbHVlPScgLiAkaG92ZXJfYWN0aW9uX2NvbHV
tbl92YWx1ZTsKCQkJCX0gZWxzZSB7IC8vIFVSTCBob3ZlciBhY3Rpb24gc2x1ZyBzbyBqdXN0IGFwcGVuZC
B2YWx1ZSB0byBVUkwuCgkJCQkJJGhvdmVyX2xpbmsgPSAkYWN0aW9uX3NsdWcgLiAkaG92ZXJfYWN0aW9uX
2NvbHVtbl92YWx1ZTsKCQkJCX0KCgkJCQkvLyBTb21lIGhvc3QncyBkb24ndCBhbGxvdyBnZXQgcGFyYW1z
IHRoYXQgZW5kIGluIC56aXAKCQkJCWlmICggJy56aXAnID09IHN1YnN0ciggJGhvdmVyX2xpbmssIC00ICk
gKSB7CgkJCQkJJGhvdmVyX2xpbmsgLj0gJyZidWJfcmFuZD0nIC4gcmFuZCggMTAwLCA5OTkgKTsKCQkJCX
0KCgkJCQllY2hvICc8YSBocmVmPSInIC4gJGhvdmVyX2xpbmsgLiAnIiBjbGFzcz0icGJfJyAuIHBiX2JhY
2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3NsdWcnICkgLiAnX2hvdmVyYWN0aW9uXycgLiAkYWN0aW9uX3NsdWcg
LiAnIiByZWw9IicgLiAkaG92ZXJfYWN0aW9uX2NvbHVtbl92YWx1ZSAuICciPicgLiAkYWN0aW9uX3RpdGx
lIC4gJzwvYT4nOwoJCQkJaWYgKCAkaSA8IGNvdW50KCAkc2V0dGluZ3NbJ2hvdmVyX2FjdGlvbnMnXSApIC
kgewoJCQkJCWVjaG8gJyB8ICc7CgkJCQl9CgkJCX0KCQkJZWNobyAnCQkJPC9kaXY+CgkJCQkJCTwvdGQ+J
zsKCgoJCQlpZiAoICRzZXR0aW5nc1sncmVvcmRlciddICE9ICcnICkgewoJCQkJJGNvdW50ID0gY291bnQo
ICRpdGVtICkgKyAxOyAvLyBFeHRyYSByb3cgZm9yIHJlb3JkZXJpbmcuCgkJCX0gZWxzZSB7CgkJCQkkY29
1bnQgPSBjb3VudCggJGl0ZW0gKTsKCQkJfQoKCQkJLy8gTE9PUCBUSFJPVUdIIENPTFVNTlMgRk9SIFRISV
MgUk9XLgoJCQlmb3IgKCAkaSA9IDE7ICRpIDwgJGNvdW50OyAkaSsrICkgewoJCQkJaWYgKCAhIGlzc2V0K
CAkaXRlbVskaV0gKSApIHsgY29udGludWU7IH0gLy8gVGhpcyByb3cgZG9lcyBub3QgaGF2ZSBhIGNvcnJl
c3BvbmRpbmcgaW5kZXgtYmFzZWQgaXRlbS4gIEl0IGlzIHByb2JhYmx5IGEgbmFtZWQga2V5IG5vdCBmb3I
gdXNlIGluIHRhYmxlPwoJCQkJZWNobyAnPHRkJzsKCQkJCWlmICggJHNldHRpbmdzWydyZW9yZGVyJ10gIT
0gJycgKSB7CgkJCQkJaWYgKCAkaSA9PSAkc2V0dGluZ3NbJ3Jlb3JkZXInXSApIHsKCQkJCQkJZWNobyAnI
GNsYXNzPSJwYl9kcmFnaGFuZGxlIiBhbGlnbj0iY2VudGVyIic7CgkJCQkJfQoJCQkJfQoJCQkJZWNobyAn
Pic7CgoJCQkJaWYgKCAoICRzZXR0aW5nc1sncmVvcmRlciddICE9ICcnICkgJiYgKCAkaSA9PSAoICRzZXR
0aW5nc1sncmVvcmRlciddICkgKSApIHsKCQkJCQllY2hvICc8aW1nIHNyYz0iJyAuIHBiX2JhY2t1cGJ1ZG
R5OjpwbHVnaW5fdXJsKCkgLiAnL3BsdWdpbmJ1ZGR5L2ltYWdlcy9kcmFnaGFuZGxlLnBuZyIgYWx0PSJDb
GljayBhbmQgZHJhZyB0byByZW9yZGVyIj4nOwoJCQkJfSBlbHNlIHsKCQkJCQlpZiAoICRpdGVtWyRpXSA9
PSAnJyApIHsKCQkJCQkJZWNobyAnJm5ic3A7JzsKCQkJCQl9IGVsc2UgewoJCQkJCQllY2hvICRpdGVtWyR
pXTsKCQkJCQl9CgkJCQl9CgoJCQkJZWNobyAnPC90ZD4nOwoJCQl9CgoJCQllY2hvICcJPC90cj4nOwoJCX
0KCgkJZWNobyAnCTwvdGJvZHk+JzsKCQllY2hvICc8L3RhYmxlPic7CgoJCS8vIERpc3BsYXkgYnVsayBhY
3Rpb25zIChib3R0b20pLgoJCWJ1bGtfYWN0aW9ucyggJHNldHRpbmdzLCB0cnVlICk7CgoJCWVjaG8gJzwv
ZGl2Pic7CgkJaWYgKCAkc2V0dGluZ3NbJ2FjdGlvbiddICE9ICcnICkgewoJCQllY2hvICc8L2Zvcm0+Jzs
KCQl9Cgl9IC8vIEVuZCBsaXN0X3RhYmxlKCkuCgoKCS8qKgoJICoJcGJfYmFja3VwYnVkZHk6OmdldF9mZW
VkKCkKCSAqCgkgKglHZXRzIGFuIFJTUyBvciBvdGhlciBmZWVkIGFuZCBpbnNlcnRzIGl0IGFzIGEgbGlzd
CBvZiBsaW5rcy4uLgoJICoKCSAqCUBwYXJhbQkJc3RyaW5nCQkkZmVlZAkJVVJMIHRvIHRoZSBmZWVkLgoJ
ICoJQHBhcmFtCQlpbnQJCQkkbGltaXQJCU51bWJlciBvZiBpdGVtcyB0byByZXRyaWV2ZS4KCSAqCUBwYXJ
hbQkJc3RyaW5nCQkkYXBwZW5kCQlIVE1MIHRvIGluY2x1ZGUgaW4gdGhlIGxpc3QuIFNob3VsZCB1c3VhbG
x5IGJlIDxsaT4gaXRlbXMgaW5jbHVkaW5nIHRoZSA8bGk+IGNvZGUuCgkgKglAcGFyYW0JCXN0cmluZwkJJ
HJlcGxhY2UJU3RyaW5nIHRvIHJlcGxhY2UgaW4gZXZlcnkgdGl0bGUgcmV0dXJuZWQuIGllIHR3aXR0ZXIg
aW5jbHVkZXMgeW91ciBvd24gdXNlcm5hbWUgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoIGxpbmUuCgkgKgl
AcmV0dXJuCQlzdHJpbmcKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldF9mZWVkKCAkZmVlZCwgJGxpbWl0LC
AkYXBwZW5kID0gJycsICRyZXBsYWNlID0gJycgKSB7CgkJJHJldHVybiA9ICcnOwoKCQkkZmVlZF9odG1sI
D0gZ2V0X3RyYW5zaWVudCggbWQ1KCAkZmVlZCApICk7CgoJCWlmICggZmFsc2UgPT09ICRmZWVkX2h0bWwg
KSB7CgkJCSRmZWVkX2h0bWwgPSAnJzsKCQkJcmVxdWlyZV9vbmNlKEFCU1BBVEguV1BJTkMuJy9mZWVkLnB
ocCcpOwoJCQkkcnNzID0gZmV0Y2hfZmVlZCggJGZlZWQgKTsKCQkJaWYgKCBpc193cF9lcnJvciggJHJzcy
ApICkgewoJCQkJJHJldHVybiAuPSAne1RlbXBvcmFyaWx5IHVuYWJsZSB0byBsb2FkIGZlZWQufSc7CgkJC
QlyZXR1cm4gJHJldHVybjsKCQkJfQoJCQkkbWF4aXRlbXMgPSAkcnNzLT5nZXRfaXRlbV9xdWFudGl0eSgg
JGxpbWl0ICk7IC8vIExpbWl0CgkJCSRyc3NfaXRlbXMgPSAkcnNzLT5nZXRfaXRlbXMoMCwgJG1heGl0ZW1
zKTsKCQl9CgoJCSRyZXR1cm4gLj0gJzx1bCBjbGFzcz0icGx1Z2luYnVkZHktbm9kZWNvciIgc3R5bGU9Im
1hcmdpbi1sZWZ0OiAxMHB4OyI+JzsKCgoJCWlmICggJGZlZWRfaHRtbCA9PSAnJyApIHsKCQkJZm9yZWFja
CAoIChhcnJheSkgJHJzc19pdGVtcyBhcyAkaXRlbSApIHsKCQkJCSRmZWVkX2h0bWwgLj0gJzxsaSBzdHls
ZT0ibGlzdC1zdHlsZS10eXBlOiBub25lOyI+PGEgaHJlZj0iJyAuICRpdGVtLT5nZXRfcGVybWFsaW5rKCk
gLiAnIiB0YXJnZXQ9Il9ibGFuayI+JzsKCQkJCSR0aXRsZSA9ICAkaXRlbS0+Z2V0X3RpdGxlKCk7IC8vLC
BFTlRfTk9RVU9URVMsICdVVEYtOCcpOwoJCQkJaWYgKCAkcmVwbGFjZSAhPSAnJyApIHsKCQkJCQkkdGl0b
GUgPSBzdHJfcmVwbGFjZSggJHJlcGxhY2UsICcnLCAkdGl0bGUgKTsKCQkJCX0KCQkJCWlmICggc3RybGVu
KCAkdGl0bGUgKSA8IDMwICkgewoJCQkJCSRmZWVkX2h0bWwgLj0gJHRpdGxlOwoJCQkJfSBlbHNlIHsKCQk
JCQkkZmVlZF9odG1sIC49IHN1YnN0ciggJHRpdGxlLCAwLCAzMiApIC4gJyAuLi4nOwoJCQkJfQoJCQkJJG
ZlZWRfaHRtbCAuPSAnPC9hPjwvbGk+JzsKCQkJfQoJCQlzZXRfdHJhbnNpZW50KCBtZDUoICRmZWVkICksI
CRmZWVkX2h0bWwsIDMwMCApOyAvLyBleHBpcmVzIGluIDMwMHNlY3MgYWthIDVtaW4KCQl9IGVsc2UgewoJ
CQkvL2VjaG8gJ0NBQ0hFRCc7CgkJfQoJCSRyZXR1cm4gLj0gJGZlZWRfaHRtbDsKCgkJJHJldHVybiAuPSA
kYXBwZW5kOwoJCSRyZXR1cm4gLj0gJzwvdWw+JzsKCgoJCXJldHVybiAkcmV0dXJuOwoJfSAvLyBFbmQgZ2
V0X2ZlZWQoKS4KCgoKCS8qKgoJICoJcGJfYmFja3VwYnVkZHk6OnRpcCgpCgkgKgoJICoJRGlzcGxheXMgY
SBtZXNzYWdlIHRvIHRoZSB1c2VyIHdoZW4gdGhleSBob3ZlciBvdmVyIHRoZSBxdWVzdGlvbiBtYXJrLiBH
cmFjZWZ1bGx5IGZhbGxzIGJhY2sgdG8gbm9ybWFsIHRvb2x0aXAuCgkgKglIVE1MIGlzIHN1cHBvc2VkIHd
pdGhpbiB0b29sdGlwcy4KCSAqCgkgKglAcGFyYW0JCXN0cmluZwkJJG1lc3NhZ2UJCUFjdHVhbCBtZXNzYW
dlIHRvIHNob3cgdG8gdXNlci4KCSAqCUBwYXJhbQkJc3RyaW5nCQkkdGl0bGUJCQlUaXRsZSBvZiBtZXNzY
WdlIHRvIHNob3cgdG8gdXNlci4gVGhpcyBpcyBkaXNwbGF5ZWQgYXQgdG9wIG9mIHRpcCBpbiBiaWdnZXIg
bGV0dGVycy4gRGVmYXVsdCBpcyBibGFuay4gKG9wdGlvbmFsKQoJICoJQHBhcmFtCQlib29sZWFuCQkkZWN
ob190aXAJCVdoZXRoZXIgdG8gZWNobyB0aGUgdGlwIChkZWZhdWx0OyB0cnVlKSwgb3IgcmV0dXJuIHRoZS
B0aXAgKGZhbHNlKS4gKG9wdGlvbmFsKQoJICoJQHJldHVybgkJc3RyaW5nL251bGwJCQkJCUlmIG5vdCBlY
2hvaW5nIHRpcCB0aGVuIHRoZSBzdHJpbmcgd2lsbCBiZSByZXR1cm5lZC4gV2hlbiBlY2hvaW5nIHRoZXJl
IGlzIG5vIHJldHVybi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHRpcCggJG1lc3NhZ2UsICR0aXRsZSA9ICc
nLCAkZWNob190aXAgPSB0cnVlICkgewoJCWlmIC
ggJycgIT0gJHRpdGxlICkgewoJCQkkbWVzc2FnZSA9ICR0aXRsZSAuICcgLSAnIC4gJG1lc3NhZ2U7CgkJf
QoJCSR0aXAgPSAnIDxhIGNsYXNzPSJwbHVnaW5idWRkeV90aXAiIHRpdGxlPSInIC4gJG1lc3NhZ2UgLiAn
Ij48aW1nIHNyYz0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fdXJsKCkgLiAnL3BsdWdpbmJ1ZGR5L2l
tYWdlcy9wbHVnaW5idWRkeV90aXAucG5nIiBhbHQ9Iig/KSIgLz48L2E+JzsKCQlpZiAoICRlY2hvX3RpcC
A9PT0gdHJ1ZSApIHsKCQkJZWNobyAkdGlwOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkdGlwOwoJCX0KCX0gL
y8gRW5kIHRpcCgpLgoKCgoJLyoqCgkgKglwYl9iYWNrdXBidWRkeTo6YWxlcnQoKQoJICoKCSAqCURpc3Bs
YXlzIGEgbWVzc2FnZSB0byB0aGUgdXNlciBhdCB0aGUgdG9wIG9mIHRoZSBwYWdlIHdoZW4gaW4gdGhlIGR
hc2hib2FyZC4KCSAqCgkgKglAcGFyYW0JCXN0cmluZwkJJG1lc3NhZ2UJCU1lc3NhZ2UgeW91IHdhbnQgdG
8gZGlzcGxheSB0byB0aGUgdXNlci4KCSAqCUBwYXJhbQkJYm9vbGVhbgkJJGVycm9yCQkJT1BUSU9OQUwhI
HRydWUgaW5kaWNhdGVzIHRoaXMgYWxlcnQgaXMgYW4gZXJyb3IgYW5kIGRpc3BsYXlzIGFzIHJlZC4gRGVm
YXVsdDogZmFsc2UKCSAqCUBwYXJhbQkJaW50CQkJJGVycm9yX2NvZGUJCU9QVElPTkFMISBFcnJvciBjb2R
lIG51bWJlciB0byB1c2UgaW4gbGlua2luZyBpbiB0aGUgd2lraSBmb3IgZWFzeSByZWZlcmVuY2UuCgkgKg
lAcmV0dXJuCQludWxsCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBhbGVydCggJG1lc3NhZ2UsICRlcnJvciA9I
GZhbHNlLCAkZXJyb3JfY29kZSA9ICcnLCAkcmVsX3RhZyA9ICcnLCAkbW9yZV9jc3MgPSAnJyApIHsKCQkk
bG9nX2Vycm9yID0gZmFsc2U7CgoJCWVjaG8gJzxkaXYgaWQ9Im1lc3NhZ2UiIHN0eWxlPSInIC4gJG1vcmV
fY3NzIC4gJyIgcmVsPSInIC4gJHJlbF90YWcgLiAnIiBjbGFzcz0icGJfYmFja3VwYnVkZHlfYWxlcnQgJz
sKCQlpZiAoICRlcnJvciA9PT0gZmFsc2UgKSB7CgkJCWVjaG8gJ3VwZGF0ZWQgZmFkZSc7CgkJfSBlbHNlI
HsKCQkJZWNobyAnZXJyb3InOwoJCQkkbG9nX2Vycm9yID0gdHJ1ZTsKCQl9CgkJaWYgKCAkZXJyb3JfY29k
ZSAhPSAnJyApIHsKCQkJJG1lc3NhZ2UgLj0gJyA8YSBocmVmPSJodHRwczovL2l0aGVtZXNoZWxwLnplbmR
lc2suY29tL2hjL2VuLXVzL2FydGljbGVzLzIxMTEzMjM3Ny1FcnJvci1Db2Rlcy0jJyAuICRlcnJvcl9jb2
RlIC4gJyIgdGFyZ2V0PSJfYmxhbmsiPjxpPicgLiBwYl9iYWNrdXBidWRkeTo6c2V0dGluZ3MoICduYW1lJ
yApIC4gJyBFcnJvciBDb2RlICcgLiAkZXJyb3JfY29kZSAuICcgLSBDbGljayBmb3IgbW9yZSBkZXRhaWxz
LjwvaT48L2E+JzsKCQkJJGxvZ19lcnJvciA9IHRydWU7CgkJfQoJCWlmICggJGxvZ19lcnJvciA9PT0gdHJ
1ZSApIHsKCQkJcGJfYmFja3VwYnVkZHk6OmxvZyggJG1lc3NhZ2UgLiAnIEVycm9yIENvZGU6ICcgLiAkZX
Jyb3JfY29kZSwgJ2Vycm9yJyApOwoJCX0KCQllY2hvICciID4nIC4gJG1lc3NhZ2UgLiAnPC9kaXY+JzsKC
X0gLy8gRW5kIGFsZXJ0KCkuCgoKCgkvKioKCSAqCXBiX2JhY2t1cGJ1ZGR5OjpkaXNhbGVydCgpCgkgKgoJ
ICoJRGlzcGxheXMgYSBESVNNSVNTQUJMRSBtZXNzYWdlIHRvIHRoZSB1c2VyIGF0IHRoZSB0b3Agb2YgdGh
lIHBhZ2Ugd2hlbiBpbiB0aGUgZGFzaGJvYXJkLgoJICoKCSAqCUBwYXJhbQkJc3RyaW5nCQkkbWVzc2FnZQ
kJTWVzc2FnZSB5b3Ugd2FudCB0byBkaXNwbGF5IHRvIHRoZSB1c2VyLgoJICoJQHBhcmFtCQlib29sZWFuC
QkkZXJyb3IJCQlPUFRJT05BTCEgdHJ1ZSBpbmRpY2F0ZXMgdGhpcyBhbGVydCBpcyBhbiBlcnJvciBhbmQg
ZGlzcGxheXMgYXMgcmVkLiBEZWZhdWx0OiBmYWxzZQoJICoJQHBhcmFtCQlpbnQJCQkkZXJyb3JfY29kZQk
JT1BUSU9OQUwhIEVycm9yIGNvZGUgbnVtYmVyIHRvIHVzZSBpbiBsaW5raW5nIGluIHRoZSB3aWtpIGZvci
BlYXN5IHJlZmVyZW5jZS4KCSAqCUByZXR1cm4JCW51bGwKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGRpc2FsZ
XJ0KCAkdW5pcXVlX2lkLCAkbWVzc2FnZSwgJGVycm9yID0gZmFsc2UsICRtb3JlX2NzcyA9ICcnICkgewoK
CQlpZiAoICggJycgPT0gJHVuaXF1ZV9pZCApIHx8ICggISBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRvcHR
pb25zWydkaXNhbGVydHMnXVskdW5pcXVlX2lkXSApICkgKSB7CgkJCSRtZXNzYWdlID0gJzxhIHN0eWxlPS
JmbG9hdDogcmlnaHQ7IiBjbGFzcz0icGJfYmFja3VwYnVkZHlfZGlzYWxlcnQiIGhyZWY9ImphdmFzY3Jpc
HQ6dm9pZCgwKTsiIHRpdGxlPSInIC4gX18oICdEaXNtaXNzIHRoaXMgYWxlcnQuIFVuaGlkZSBkaXNtaXNz
ZWQgYWxlcnRzIG9uIHRoZSBTZXR0aW5ncyBwYWdlLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJyI
gYWx0PSInIC4gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAnZGlzYWxlcnQnICkgLiAnIj48Yj4nIC4gX1
8oICdEaXNtaXNzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnPC9iPjwvYT48ZGl2IHN0eWxlPSJtY
XJnaW4tcmlnaHQ6IDEyMHB4OyI+JyAuICRtZXNzYWdlIC4gJzwvZGl2Pic7CgkJCSR0aGlzLT5hbGVydCgg
JG1lc3NhZ2UsICRlcnJvciwgJycsICR1bmlxdWVfaWQsICRtb3JlX2NzcyApOwoJCX0gZWxzZSB7CgkJCWV
jaG8gJzwhLS0gUHJldmlvdXNseSBEaXNtaXNzZWQgQWxlcnQ6IGAnIC4gaHRtbGVudGl0aWVzKCAkbWVzc2
FnZSApIC4gJ2AgLS0+JzsKCQl9CgoJCXJldHVybjsKCgl9IC8vIEVuZCBhbGVydCgpLgoKCgoJLyoqCgkgK
glwYl9iYWNrdXBidWRkeTo6dmlkZW8oKQoJICoKCSAqCURpc3BsYXlzIGEgWW91VHViZSB2aWRlbyB0byB0
aGUgdXNlciB3aGVuIHRoZXkgaG92ZXIgb3ZlciB0aGUgcXVlc3Rpb24gdmlkZW8gbWFyay4KCSAqCUhUTUw
gaXMgc3VwcG9zZWQgd2l0aGluIHRvb2x0aXBzLgoJICoKCSAqCUBwYXJhbQkJc3RyaW5nCQkkdmlkZW9fa2
V5CQlZb3VUdWJlIHZpZGVvIGtleSBmcm9tIHRoZSBVUkwgP3Y9VklERU9fS0VZX0hFUkUgIC0tIFRvIGp1b
XAgdG8gYSBjZXJ0YWluIHRpbWVzdGFtcCBhZGQgI1NFQ09ORFMgdG8gdGhlIGVuZCBvZiB0aGUga2V5LCB3
aGVyZSBTRUNPTkRTIGlzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBpbnRvIHRoZSB2aWRlbyB0byBzdGFydCB
hdC4gRXhhbXBsZSB0byBzdGFydCA2NSBzZWNvbmRzIGludG8gYSB2aWRlbzogOVpIV0dqQnI4NHMjNjUuIF
RoaXMgbXVzdCBiZSBpbiBzZWNvbmRzIGZvcm1hdC4KCSAqCUBwYXJhbQkJc3RyaW5nCQkkdGl0bGUJCQlUa
XRsZSBvZiBtZXNzYWdlIHRvIHNob3cgdG8gdXNlci4gVGhpcyBpcyBkaXNwbGF5ZWQgYXQgdG9wIG9mIHRp
cCBpbiBiaWdnZXIgbGV0dGVycy4gRGVmYXVsdCBpcyBibGFuay4gKG9wdGlvbmFsKQoJICoJQHBhcmFtCQl
ib29sZWFuCQkkZWNob190aXAJCVdoZXRoZXIgdG8gZWNobyB0aGUgdGlwIChkZWZhdWx0OyB0cnVlKSwgb3
IgcmV0dXJuIHRoZSB0aXAgKGZhbHNlKS4gKG9wdGlvbmFsKQoJICoJQHJldHVybgkJc3RyaW5nL251bGwJC
QkJCUlmIG5vdCBlY2hvaW5nIHRpcCB0aGVuIHRoZSBzdHJpbmcgd2lsbCBiZSByZXR1cm5lZC4gV2hlbiBl
Y2hvaW5nIHRoZXJlIGlzIG5vIHJldHVybi4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHZpZGVvKCAkdmlkZW9
fa2V5LCAkdGl0bGUgPSAnJywgJGVjaG9fdGlwID0gdHJ1ZSApIHsKCgkJc2VsZjo6ZW5xdWV1ZV90aGlja2
JveCgpOwoKCQlpZiAoIHN0cnN0ciggJHZpZGVvX2tleSwgJyMnICkgKSB7CgkJCSR2aWRlbyA9IGV4cGxvZ
GUoICcjJywgJHZpZGVvX2tleSApOwoJCQkkdmlkZW9bMV0gPSAnJnN0YXJ0PScgLiAkdmlkZW9bMV07CgkJ
fSBlbHNlIHsKCQkJJHZpZGVvWzBdID0gJHZpZGVvX2tleTsKCQkJJHZpZGVvWzFdID0gJyc7CgkJfQoKCQk
kdGlwID0gJzxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkLy
cgLiB1cmxlbmNvZGUoICR2aWRlb1swXSApIC4gJz9hdXRvcGxheT0xJyAuICR2aWRlb1sxXSAuICcmVEJfa
WZyYW1lPTEmd2lkdGg9NjAwJmhlaWdodD00MDAiIGNsYXNzPSJ0aGlja2JveCBwbHVnaW5idWRkeV90aXAi
IHRpdGxlPSJWaWRlbyBUdXRvcmlhbCAtICcgLiAkdGl0bGUgLiAnIj48aW1nIHNyYz0iJyAuIHBiX2JhY2t
1cGJ1ZGR5OjpwbHVnaW5fdXJsKCkgLiAnL3BsdWdpbmJ1ZGR5L2ltYWdlcy9wbHVnaW5idWRkeV9wbGF5Ln
BuZyIgYWx0PSIodmlkZW8pIiAvPjwvYT4nOwoJCWlmICggJGVjaG9fdGlwID09PSB0cnVlICkgewoJCQllY
2hvICR0aXA7CgkJfSBlbHNlIHsKCQkJcmV0dXJuICR0aXA7CgkJfQoJfSAvLyBFbmQgdmlkZW8oKS4KCgoK
CS8qKgoJICogcGJfYmFja3VwYnVkZHk6OmVucXVldWVfdGhpY2tib3goKQoJICoKCSAqIEVucXVldWVzIHR
oZSByZXF1aXJlZCBzY3JpcHRzIC8gc3R5bGVzIG5lZWRlZCB0byB1c2UgdGhpY2tib3gKCSAqCgkgKiBAcm
V0dXJuIG51bGwKCSAqLwoJcHVibGljIGZ1bmN0aW9uIGVucXVldWVfdGhpY2tib3goKSB7CgoJCWlmICggI
WRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSApIHsKCQkJZ2xvYmFsICR3cF9zY3JpcHRzOwoJCQlpZiAo
IGlzX29iamVjdCggJHdwX3NjcmlwdHMgKSApIHsKCQkJCWlmICggIWluX2FycmF5KCAndGhpY2tib3gnLCA
kd3Bfc2NyaXB0cy0+ZG9uZSApICkgewoJCQkJCXdwX2VucXVldWVfc2NyaXB0KCAndGhpY2tib3gnICk7Cg
kJCQkJd3BfcHJpbnRfc2NyaXB0cyggJ3RoaWNrYm94JyApOwoJCQkJCXdwX3ByaW50X3N0eWxlcyggJ3Roa
WNrYm94JyApOwoJCQkJfQoJCQl9CgkJfQoJfSAvLyBFbmQgZW5xdWV1ZV90aGlja2JveCgpLgoKCgoJLyoJ
c3RhcnRfdGFicygpCgkgKgoJICoJU3RhcnRzIGEgdGFiYmVkIGludGVyZmFjZS4KIAkgKglAc2VlIGVuZF9
0YWJzKCkuCgkgKgoJICoJQHBhcmFtCQlzdHJpbmcJCSRpbnRlcmZhY2VfdGFnCQlUYWcvc2x1ZyBmb3IgdG
hpcyBlbnRpcmUgdGFiYmVkIGludGVyZmFjZS4gU2hvdWxkIGJlIHVuaXF1ZS4KCSAqCUBwYXJhbQkJYXJyY
XkJCSR0YWJzCQkJCUFycmF5IGNvbnRhaW5pbmcgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgZm9yIHRoaXMgdGFi
YmVkIGludGVyZmFjZS4gRXg6ICBhcnJheSggYXJyYXkoICd0aXRsZSc+ICdteSB0aXRsZScsICdzbHVnJyA
9PiAnbXl0YWJzJyApICk7CgkgKgkJCQkJCQkJCQkJCU9wdGlvbmFsIHNldHRpbmcgd2l0aCBrZXkgYGFqYX
hfdXJsYCBtYXkgZGVmaW5lIGEgVVJMIGZvciBBSkFYIGxvYWRpbmcuCgkgKglAcGFyYW0JCXN0cmluZwkJJ
GNzcwkJCQlBZGRpdGlvbmFsIENTUyB0byBhcHBseSB0byBtYWluIG91dGVyIGRpdi4gKG9wdGlvbmFsKQoJ
ICoJQHBhcmFtCQlib29sZWFuCQkkZWNobwkJCQlFY2hvIG91dHB1dCBpbnN0ZWFkIG9mIHJldHVybmluZy4
gKG9wdGlvbmFsKQoJICoJQHBhcmFtCQlpbnQJCQkkYWN0aXZlX3RhYl9pbmRleAlUYWIgdG8gc3RhcnQgYX
MgYWN0aXZlL3NlbGVjdGVkLgoJICoJQHJldHVybgkJbnVsbC9zdHJpbmcJCQkJCQludWxsIGlmICRlY2hvI
D0gZmFsc2UsIGFsbCBkYXRhIG90aGVyd2lzZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHN0YXJ0X3RhYnMo
ICRpbnRlcmZhY2VfdGFnLCAkdGFicywgJGNzcyA9ICcnLCAkZWNobyA9IHRydWUsICRhY3RpdmVfdGFiX2l
uZGV4ID0gMCApIHsKCQkkdGhpcy0+X3RhYl9pbnRlcmZhY2VfdGFnID0gJGludGVyZmFjZV90YWc7CgoJCX
BiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3NjcmlwdCggJ3BiX3RhYnMuanMnLCB0cnVlICk7CgoJCSRwcmVmaXggP
SAncGJfJyAuIHBiX2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3NsdWcnICkgLiAnXyc7IC8vIHBiX1BMVUdJ
TlNMVUdfCgkJJHJldHVybiA9ICcnOwoKCQkvKgoJCSRyZXR1cm4gLj0gJzxzY3JpcHQgdHlwZT0idGV4dC9
qYXZhc2NyaXB0Ij4nOwoJCSRyZXR1cm4gLj0gJwlqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKC
kgeyc7CgkJJHJldHVybiAuPSAnCQlqUXVlcnkoIiMnIC4gJHByZWZpeCAuICR0aGlzLT5fdGFiX2ludGVyZ
mFjZV90YWcgLiAnX3RhYnMiKS50YWJzKHsgYWN0aXZlOiAnIC4gJGFjdGl2ZV90YWJfaW5kZXggLiAnIH0p
Oyc7CgkJJHJldHVybiAuPSAnCX0pOyc7CgkJJHJldHVybiAuPSAnPC9zY3JpcHQ+JzsKCQkqLwoKCQkkcmV
0dXJuIC49ICc8ZGl2IGNsYXNzPSJiYWNrdXBidWRkeS10YWJzLXdyYXAiPic7CgoKCQkkcmV0dXJuIC49IC
c8aDIgY2xhc3M9Im5hdi10YWItd3JhcHBlciI+JzsKCQkkaSA9IDA7CgkJZm9yZWFjaCggJHRhYnMgYXMgJ
HRhYiApIHsKCQkJaWYgKCAhIGlzc2V0KCAkdGFiWydjc3MnXSApICkgewoJCQkJJHRhYlsnY3NzJ10gPSAn
JzsKCQkJfQoJCQkkYWN0aXZlX3RhYl9jbGFzcyA9ICcnOwoJCQlpZiAoICRhY3RpdmVfdGFiX2luZGV4ID0
9ICRpICkgewoJCQkJJGFjdGl2ZV90YWJfY2xhc3MgPSAnbmF2LXRhYi1hY3RpdmUnOwoJCQl9CgkJCWlmIC
ggaXNzZXQoICR0YWJbJ2FqYXgnXSApICYmICggJHRhYlsnYWpheF91cmwnXSAhPSAnJyApICkgeyAvLyBBS
kFYIHRhYi4KCQkJCSRyZXR1cm4gLj0gJzxhIGNsYXNzPSJuYXYtdGFiIG5hdi10YWItJyAuICRpIC4gJyAn
IC4gJGFjdGl2ZV90YWJfY2xhc3MgLiAnIGJiLXRhYi0nIC4gJHRhYlsnc2x1ZyddIC4gJyIgaHJlZj0iamF
2YXNjcmlwdDp2b2lkKDApIiBkYXRhLWFqYXg9IicgLiAkdGFiWydhamF4X3VybCddIC4gJyI+JyAuICR0YW
JbJ3RpdGxlJ10gLiAnPC9hPic7CgkJCX0gZWxzZWlmICggaXNzZXQoICR0YWJbJ3VybCddICkgJiYgKCAkd
GFiWyd1cmwnXSAhPSAnJyApICkgewoJCQkJJHJldHVybiAuPSAnPGEgY2xhc3M9Im5hdi10YWIgbmF2LXRh
Yi0nIC4gJGkgLiAnICcgLiAkYWN0aXZlX3RhYl9jbGFzcyAuICcgYmItdGFiLScgLiAkdGFiWydzbHVnJ10
gLiAnIiBocmVmPSInIC4gJHRhYlsndXJsJ10gLiAnIj4nIC4gJHRhYlsndGl0bGUnXSAuICc8L2E+JzsKCQ
kJfSBlbHNlIHsgLy8gU3RhbmRhcmQ7IE5PIEFKQVguCgkJCQkkcmV0dXJuIC49ICc8YSBjbGFzcz0ibmF2L
XRhYiBuYXYtdGFiLScgLiAkaSAuICcgJyAuICRhY3RpdmVfdGFiX2NsYXNzIC4gJyBiYi10YWItJyAuICR0
YWJbJ3NsdWcnXSAuICciIHN0eWxlPSInIC4gJHRhYlsnY3NzJ10gLiAnIiBocmVmPSIjJyAuICRwcmVmaXg
gLiAkdGhpcy0+X3RhYl9pbnRlcmZhY2VfdGFnIC4gJ190YWJfJyAuICR0YWJbJ3NsdWcnXSAuICciPicgLi
AkdGFiWyd0aXRsZSddIC4gJzwvYT4nOwoJCQl9CgkJCSRpKys7CgkJfQoJCSRyZXR1cm4gLj0gJzwvaDI+J
zsKCgoJCS8qCgkJJHJldHVybiAuPSAnPGRpdiBpZD0iJyAuICRwcmVmaXggLiAkdGhpcy0+X3RhYl9pbnRl
cmZhY2VfdGFnIC4gJ190YWJzIiBzdHlsZT0iJyAuICRjc3MgLiAnIj4nOwoJCSRyZXR1cm4gLj0gJzx1bD4
nOwoJCWZvcmVhY2goICR0YWJzIGFzICR0YWIgKSB7CgkJCWlmICggISBpc3NldCggJHRhYlsnY3NzJ10gKS
ApIHsKCQkJCSR0YWJbJ2NzcyddID0gJyc7CgkJC
X0KCQkJaWYgKCBpc3NldCggJHRhYlsnYWpheCddICkgJiYgKCAkdGFiWydhamF4X3VybCddICE9ICcnICkg
KSB7IC8vIEFKQVggdGFiLgoJCQkJJHJldHVybiAuPSAnPGxpPjxhIGhyZWY9IicgLiAkdGFiWydhamF4X3V
ybCddIC4gJyI+PHNwYW4+JyAuICR0YWJbJ3RpdGxlJ10gLiAnPC9zcGFuPjwvYT48L2xpPic7CgkJCX0gZW
xzZSB7IC8vIFN0YW5kYXJkOyBOTyBBSkFYLgoJCQkJJHJldHVybiAuPSAnPGxpIHN0eWxlPSInIC4gJHRhY
lsnY3NzJ10gLiAnIj48YSBocmVmPSIjJyAuICRwcmVmaXggLiAkdGhpcy0+X3RhYl9pbnRlcmZhY2VfdGFn
IC4gJ190YWJfJyAuICR0YWJbJ3NsdWcnXSAuICciPjxzcGFuPicgLiAkdGFiWyd0aXRsZSddIC4gJzwvc3B
hbj48L2E+PC9saT4nOwoJCQl9CgkJfQoJCSRyZXR1cm4gLj0gJzwvdWw+JzsKCQkkcmV0dXJuIC49ICc8Yn
I+JzsKCQkkcmV0dXJuIC49ICc8ZGl2IGNsYXNzPSJ0YWJzLWJvcmRlcndyYXAiPic7CgkJKi8KCgkJJHJld
HVybiAuPSAnPGRpdiBjbGFzcz0iYmFja3VwYnVkZHktdGFiLWJsb2NrcyI+JzsKCgkJaWYgKCAkZWNobyA9
PT0gdHJ1ZSApIHsKCQkJZWNobyAkcmV0dXJuOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkcmV0dXJuOwoJCX0
KCgl9IC8vIEVuZCBzdGFydF90YWJzKCkuCgoKCgkvKgllbmRfdGFicygpCgkgKgoJICoJQ2xvc2VzIG9mZi
BhIHRhYmJlZCBpbnRlcmZhY2UuCgkgKglAc2VlIHN0YXJ0X3RhYnMoKS4KCSAqCgkgKglAcGFyYW0JCWJvb
2xlYW4JCSRlY2hvCQkJCUVjaG8gb3V0cHV0IGluc3RlYWQgb2YgcmV0dXJuaW5nLiAgKG9wdGlvbmFsKQoJ
ICoJQHJldHVybgkJbnVsbC9zdHJpbmcJCQkJCQludWxsIGlmICRlY2hvID0gZmFsc2UsIGFsbCBkYXRhIG9
0aGVyd2lzZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGVuZF90YWJzKCAkZWNobyA9IHRydWUgKSB7CgoJCS
8qCgkJJHJldHVybiA9ICcnOwoJCSRyZXR1cm4gLj0gJwk8L2Rpdj4nOwoJCSRyZXR1cm4gLj0gJzwvZGl2P
ic7CgkJKi8KCQkkcmV0dXJuID0gJzwvZGl2PjwvZGl2Pic7CgoJCSR0aGlzLT5fdGFiX2ludGVyZmFjZV90
YWcgPSAnJzsKCgkJaWYgKCAkZWNobyA9PT0gdHJ1ZSApIHsKCQkJZWNobyAkcmV0dXJuOwoJCX0gZWxzZSB
7CgkJCXJldHVybiAkcmV0dXJuOwoJCX0KCgl9IC8vIEVuZCBlbmRfdGFicygpLgoKCgoJLyoJc3RhcnRfdG
FiKCkKCSAqCgkgKglPcGVucyB0aGUgc3RhcnQgb2YgYW4gaW5kaXZpZHVhbCBwYWdlIHRvIGJlIGxvYWRlZ
CBieSBhIHRhYi4KCSAqCUBzZWUgZW5kX3RhYigpLgoJICoKCSAqCUBwYXJhbQkJc3RyaW5nCQkkdGFiX3Rh
ZwkJCVVuaXF1ZSB0YWcgZm9yIHRoaXMgdGFiIHNlY3Rpb24uIE11c3QgbWF0Y2ggdGhlIHRhZyBkZWZpbmV
kIHdoZW4gY3JlYXRpbmcgdGhlIHRhYiBpbnRlcmZhY2UuCgkgKglAcGFyYW0JCWJvb2xlYW4JCSRlY2hvCQ
kJCUVjaG8gb3V0cHV0IGluc3RlYWQgb2YgcmV0dXJuaW5nLiAgKG9wdGlvbmFsKQoJICoJQHJldHVybgkJb
nVsbC9zdHJpbmcJCQkJCQludWxsIGlmICRlY2hvID0gZmFsc2UsIGFsbCBkYXRhIG90aGVyd2lzZS4KCSAq
LwoJcHVibGljIGZ1bmN0aW9uIHN0YXJ0X3RhYiggJHRhYl90YWcsICRlY2hvID0gdHJ1ZSApIHsKCgkJJHB
yZWZpeCA9ICdwYl8nIC4gcGJfYmFja3VwYnVkZHk6OnNldHRpbmdzKCAnc2x1ZycgKSAuICdfJzsgLy8gcG
JfUExVR0lOU0xVR18KCQkkcmV0dXJuID0gJyc7CgoJCSRyZXR1cm4gLj0gJzxkaXYgY2xhc3M9ImJhY2t1c
GJ1ZGR5LXRhYiIgaWQ9IicgLiAkcHJlZml4IC4gJHRoaXMtPl90YWJfaW50ZXJmYWNlX3RhZyAuICdfdGFi
XycgLiAkdGFiX3RhZyAuICciPic7CgoKCQlpZiAoICRlY2hvID09PSB0cnVlICkgewoJCQllY2hvICRyZXR
1cm47CgkJfSBlbHNlIHsKCQkJcmV0dXJuICRyZXR1cm47CgkJfQoKCX0gLy8gRW5kIHN0YXJ0X3RhYigpLg
oKCgoJLyoJZW5kX3RhYigpCgkgKgoJICoJQ2xvc2VzIHRoaXMgdGFiIHNlY3Rpb24uCgkgKglAc2VlIHN0Y
XJ0X3RhYigpLgoJICoKCSAqCUBwYXJhbQkJc3RyaW5nCQkkdGFiX3RhZwkJCVVuaXF1ZSB0YWcgZm9yIHRo
aXMgdGFiIHNlY3Rpb24uIE11c3QgbWF0Y2ggdGhlIHRhZyBkZWZpbmVkIHdoZW4gY3JlYXRpbmcgdGhlIHR
hYiBpbnRlcmZhY2UuCgkgKglAcGFyYW0JCWJvb2xlYW4JCSRlY2hvCQkJCUVjaG8gb3V0cHV0IGluc3RlYW
Qgb2YgcmV0dXJuaW5nLiAgKG9wdGlvbmFsKQoJICoJQHJldHVybgkJbnVsbC9zdHJpbmcJCQkJCQludWxsI
GlmICRlY2hvID0gZmFsc2UsIGFsbCBkYXRhIG90aGVyd2lzZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGVu
ZF90YWIoICRlY2hvID0gdHJ1ZSApIHsKCgkJJHJldHVybiA9ICc8L2Rpdj4nOwoKCgkJaWYgKCAkZWNobyA
9PT0gdHJ1ZSApIHsKCQkJZWNobyAkcmV0dXJuOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkcmV0dXJuOwoJCX
0KCgl9IC8vIEVuZCBlbmRfdGFiKCkuCgoKCgkvKglhamF4X2hlYWRlcigpCgkgKgoJICoJT3V0cHV0IEhUT
UwgaGVhZGVycyB3aGVuIHVzaW5nIEFKQVguCgkgKgoJICoJQHBhcmFtCQlib29sZWFuCQkkanMJCQlXaGV0
aGVyIG9yIG5vdCB0byBsb2FkIGphdmFzY3JpcHQuIERlZmF1bHQgZmFsc2UuCgkgKglAcGFyYW0JCWJvb2w
JCSRwYWRkaW5nCVdoZXRoZXIgb3Igbm90IHRvIHBhZGQgd3JhcHBlciBkaXYuIERlZmF1bHQgaGFzIHBhZG
RpbmcuCgkgKglAcmV0dXJuCgkgKi8KCWZ1bmN0aW9uIGFqYXhfaGVhZGVyKCAkanMgPSB0cnVlLCAkcGFkZ
GluZyA9IHRydWUgKSB7CgkJZWNobyAnPGhlYWQ+JzsKCQllY2hvICc8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIgLz4nOwoJCWVjaG8gJzx0aXR
sZT5QbHVnaW5CdWRkeTwvdGl0bGU+JzsKCgkJd3BfcHJpbnRfc3R5bGVzKCAnd3AtYWRtaW4nICk7CgkJd3
BfcHJpbnRfc3R5bGVzKCAnZGFzaGljb25zJyApOwoJCXdwX3ByaW50X3N0eWxlcyggJ2J1dHRvbnMnICk7C
gkJd3BfcHJpbnRfc3R5bGVzKCAnY29sb3JzJyApOwoKCQlpZiAoICRqcyA9PT0gdHJ1ZSApIHsKCQkJd3Bf
ZW5xdWV1ZV9zY3JpcHQoICdqcXVlcnknICk7CgkJCXdwX3ByaW50X3NjcmlwdHMoICdqcXVlcnknICk7Cgk
JfQoKCQlwYl9iYWNrdXBidWRkeTo6bG9hZF9zdHlsZSggJ3dwLWFkbWluLmNzcycgKTsKCQlwYl9iYWNrdX
BidWRkeTo6bG9hZF9zdHlsZSggJ3RoaWNrYm94ZWQuY3NzJyApOwoKCQkvL2VjaG8gJzxsaW5rIHJlbD0ic
3R5bGVzaGVldCIgaHJlZj0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fdXJsKCk7IC4gJy9jc3MvYWRt
aW4uY3NzIiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCIgLz4nOwoJCXBiX2JhY2t1cGJ1ZGR5Ojpsb2F
kX3NjcmlwdCggJ2FkbWluLmpzJywgdHJ1ZSApOwoJCXBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3N0eWxlKCAnYW
RtaW4uY3NzJyApOwoJCXBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3NjcmlwdCggJ2pxdWVyeS11aS10b29sdGlwJ
ywgZmFsc2UgKTsKCQlwYl9iYWNrdXBidWRkeTo6bG9hZF9zdHlsZSggJ2pRdWVyeS11aS0xLjExLjIuY3Nz
JywgdHJ1ZSApOwoKCQllY2hvICc8Ym9keSBjbGFzcz0id3AtY29yZS11aSIgc3R5bGU9ImJhY2tncm91bmQ
6IGluaGVyaXQ7Ij4nOwoJCWlmICggJHBhZGRpbmcgPT09IHRydWUgKSB7CgkJCWVjaG8gJzxkaXYgY2xhc3
M9ImJiLWlmcmFtZS1kaXZwYWRkaW5nLW5vc2Nyb2xsIiBzdHlsZT0icGFkZGluZzogMTJweDsgcGFkZGluZ
y1sZWZ0OiAyMHB4OyBwYWRkaW5nLXJpZ2h0OiAyMHB4OyBvdmVyZmxvdzogc2Nyb2xsOyI+JzsKCQl9IGVs
c2UgewoJCQllY2hvICc8ZGl2Pic7CgkJfQoKCX0gLy8gRW5kIGFqYXhfaGVhZGVyKCkuCgoKCWZ1bmN0aW9
uIGFqYXhfZm9vdGVyKCAkanNfY29tbW9uID0gdHJ1ZSApIHsKCQllY2hvICc8L2JvZHk+JzsKCQllY2hvIC
c8L2Rpdj4nOwoJCWVjaG8gJzwvaGVhZD4nOwoKCQlpZiAoIHRydWUgPT09ICRqc19jb21tb24gKSB7CgkJC
XBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3NjcmlwdCggJ2NvbW1vbicgKTsgLy8gTmVlZGVkIGZvciB0YWJsZSAn
c2VsZWN0IGFsbCcgZmVhdHVyZS4KCQl9CgoJCWVjaG8gJzwvaHRtbD4nOwoJfSAvLyBFbmQgYWpheF9mb29
0ZXIoKS4KCgoKfSAvLyBFbmQgY2xhc3MgcGx1Z2luYnVkZHlfdWkuCgo=
###PACKDATA,FILE_END,/pluginbuddy/classes/ui.php,importbuddy/pluginbuddy/classes/ui
.php
###PACKDATA,FILE_START,/pluginbuddy/css/index.php,importbuddy/pluginbuddy/css/index
.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/pluginbuddy/css/index.php,importbuddy/pluginbuddy/css/index.p
hp
###PACKDATA,FILE_START,/pluginbuddy/css/jQuery-ui-
1.11.2.css,importbuddy/pluginbuddy/css/jQuery-ui-1.11.2.css
LnVpLXRvb2x0aXAgewoJcGFkZGluZzogOHB4OwoJcG9zaXRpb246IGFic29sdXRlOwoJei1pbmRleDogOTk
5OTsKCW1heC13aWR0aDogMzAwcHg7Cgktd2Via2l0LWJveC1zaGFkb3c6IDAgMCA1cHggI2FhYTsKCWJveC
1zaGFkb3c6IDAgMCA1cHggI2FhYTsKCXdvcmQtd3JhcDogYnJlYWstd29yZDsKfQpib2R5IC51aS10b29sd
GlwIHsKCWJvcmRlci13aWR0aDogMnB4Owp9Ci51aS13aWRnZXQgewoJcGFkZGluZzogMTBweDsKCWxpbmUt
aGVpZ2h0OiAxLjZlbTsKfQoudWktd2lkZ2V0IC51aS13aWRnZXQgewoJZm9udC1zaXplOiAxZW07Cn0KLnV
pLXdpZGdldC1jb250ZW50IHsKCWJvcmRlcjogMXB4IHNvbGlkICNhYWFhYWE7CgliYWNrZ3JvdW5kOiAjZm
ZmZmZmOwoJY29sb3I6ICMyMjIyMjI7Cn0K
###PACKDATA,FILE_END,/pluginbuddy/css/jQuery-ui-
1.11.2.css,importbuddy/pluginbuddy/css/jQuery-ui-1.11.2.css
###PACKDATA,FILE_START,/pluginbuddy/css/jquery.miniColors.css,importbuddy/pluginbud
dy/css/jquery.miniColors.css
Lm1pbmlDb2xvcnMtdHJpZ2dlciB7CgloZWlnaHQ6IDIycHg7Cgl3aWR0aDogMjJweDsKCXZlcnRpY2FsLWF
saWduOiBtaWRkbGU7CgltYXJnaW46IDAgLjI1ZW07CglkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CglvdXRsaW
5lOiBub25lOwp9CgoubWluaUNvbG9ycy1zZWxlY3RvciB7Cglwb3NpdGlvbjogYWJzb2x1dGU7Cgl3aWR0a
DogMTc1cHg7CgloZWlnaHQ6IDE1MHB4OwoJYmFja2dyb3VuZDogI0ZGRjsKCWJvcmRlcjogc29saWQgMXB4
ICNCQkI7CgktbW96LWJveC1zaGFkb3c6IDAgMCA2cHggcmdiYSgwLCAwLCAwLCAuMjUpOwoJLXdlYmtpdC1
ib3gtc2hhZG93OiAwIDAgNnB4IHJnYmEoMCwgMCwgMCwgLjI1KTsKCWJveC1zaGFkb3c6IDAgMCA2cHggcm
diYSgwLCAwLCAwLCAuMjUpOwoJLW1vei1ib3JkZXItcmFkaXVzOiA1cHg7Cgktd2Via2l0LWJvcmRlci1yY
WRpdXM6IDVweDsKCWJvcmRlci1yYWRpdXM6IDVweDsKCXBhZGRpbmc6IDVweDsKCXotaW5kZXg6IDk5OTk5
OTsKfQoKLm1pbmlDb2xvcnMtc2VsZWN0b3IuYmxhY2sgewoJYmFja2dyb3VuZDogIzAwMDsKCWJvcmRlci1
jb2xvcjogIzAwMDsKfQoKLm1pbmlDb2xvcnMtY29sb3JzIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcD
ogNXB4OwoJbGVmdDogNXB4OwoJd2lkdGg6IDE1MHB4OwoJaGVpZ2h0OiAxNTBweDsKCWN1cnNvcjogY3Jvc
3NoYWlyOwp9CgoubWluaUNvbG9ycy1odWVzIHsKCXBvc2l0aW9uOiBhYnNvbHV0ZTsKCXRvcDogNXB4OwoJ
bGVmdDogMTYwcHg7Cgl3aWR0aDogMjBweDsKCWhlaWdodDogMTUwcHg7CgljdXJzb3I6IGNyb3NzaGFpcjs
KfQoKLm1pbmlDb2xvcnMtY29sb3JQaWNrZXIgewoJcG9zaXRpb246IGFic29sdXRlOwoJd2lkdGg6IDExcH
g7CgloZWlnaHQ6IDExcHg7Cn0KCi5taW5pQ29sb3JzLWh1ZVBpY2tlciB7Cglwb3NpdGlvbjogYWJzb2x1d
GU7CglsZWZ0OiAtM3B4OwoJd2lkdGg6IDI2cHg7CgloZWlnaHQ6IDNweDsKfQ==
###PACKDATA,FILE_END,/pluginbuddy/css/jquery.miniColors.css,importbuddy/pluginbuddy
/css/jquery.miniColors.css
###PACKDATA,FILE_START,/pluginbuddy/helpers/index.php,importbuddy/pluginbuddy/helpe
rs/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/pluginbuddy/helpers/index.php,importbuddy/pluginbuddy/helpers
/index.php
###PACKDATA,FILE_START,/pluginbuddy/helpers/is_standalone.php,importbuddy/pluginbud
dy/helpers/is_standalone.php
PD9waHAKLyoqCiAqIFBsdWdpbkJ1ZGR5IEhlbHBlciBmdW5jdGlvbnMKICoKICogQHBhY2thZ2UgQmFja3V
wQnVkZHkKICovCgovKioKICogRGV0ZXJtaW5lcyBpZiBQQl9TVEFOREFMT05FIGlzIGVuYWJsZWQuCiAqCi
AqIEByZXR1cm4gYm9vbCAgSWYgUEJfU1RBTkRBTE9ORSBpcyBkZWZpbmVkIGFuZCBzZXQgdG8gdHJ1ZS4KI
CovCmZ1bmN0aW9uIHBiX2lzX3N0YW5kYWxvbmUoKSB7CglyZXR1cm4gZGVmaW5lZCggJ1BCX1NUQU5EQUxP
TkUnICkgJiYgdHJ1ZSA9PT0gUEJfU1RBTkRBTE9ORTsKfQo=
###PACKDATA,FILE_END,/pluginbuddy/helpers/is_standalone.php,importbuddy/pluginbuddy
/helpers/is_standalone.php
###PACKDATA,FILE_START,/pluginbuddy/images/draghandle.png,importbuddy/pluginbuddy/i
mages/draghandle.png
iVBORw0KGgoAAAANSUhEUgAAABAAAAAYCAYAAADzoH0MAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2
nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9oHHRIvI8D7+LoAAALwSURBVDjLrZTNa11FGMZ/78
ycnPvVNG3QlqTxkiuYxaUFQVMoLqqCilD6H0gFF4W4EbdduHDbnbisIIiCtOBKs9GNVKziouoiFmOTtOKtJ
NE093tmXhdzqpeeuNJZznmf33mfmXceUVUmlgEqwHGgBZwo9u8A68BvwACIDwRuQixADhwDTgLL71/ffArg
lTOPfQvUAZ2AKID76t3XFARjLa46TX12num5JdbvZ3xysw5Ay996oXVozN6va3S37+L7e8QQAMUpwpln22A
rkB+F2gK7oymufOfxhb0rtxpcfskxd+Iw9LZguANhwPUvfsTFKCCGzz/9gaMLS9SPVXlnbYbtXva3t+2e8t
Zqj9eX/qDb6bCztcZzLz5BjIIJGECwLqN9foXVYZvb3YyH1+1uxuqwTfv8CtZlgBAwmKAGUNSPALh4dpGrK
6dLgKsrp7l4dhGgqFWCGpxXAxrxox4+KlZApKRHVVGFoIof9ZJGDc5JBDG4qRrOCHKQGhARREAU3FQtaST+
Dx1EbHEGY3xQMGBMmRAVYlR8TLWgRCzOR5tm2GgCAO6ADqImsQ+KManOR4vrDCsAVOs5Wzt9arnlUMWVAHt
9z/2BpzcMVOs5AJ1h5cEcgLGOUYioKj7EEsAX30YhYmz6QcBgxlEAwU1VCitC0LKFoP+cTaoVxlFwXtMoZ9
U6QdKT/LcOBDACtloHMXgVjBMFjYz7XaKmN+qsKQGcNWhxG+N+FzTiRP97BwmAYLOcKMKHX9/hxi+7JcAbH
33P8uIRXj51HJvlgCQLCaBoDMysX+PCwiat6VACtKYDFxY2mVm/hsYUJl4FFxTQyMkn5yFvQK3BpdmMNz/z
7PaT+EgVLj2fM5sbmGnA3DyEAUHBRRXe/vhPrN2n0RjwyKNjms0m55qGD9bStZ1rKj9tDtnY2OD3e/fY398
nhAAIMpHKMpHIp4Dl977ceBrg1Wea3wA3gJsPh6ocEOvVIpkfB+aL/bvAz0AH6E/G+l/J23lk4gYAJAAAAA
BJRU5ErkJggg==
###PACKDATA,FILE_END,/pluginbuddy/images/draghandle.png,importbuddy/pluginbuddy/ima
ges/draghandle.png
###PACKDATA,FILE_START,/pluginbuddy/images/email.png,importbuddy/pluginbuddy/images
/email.png
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHd
hcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAITSURBVBgZpcHLThNhGIDh9/vn7/RApwc5VCmFWBPi1mvwAl
x7BW69Afeu3bozcSE7E02ILjCRhRrds8AEbKVS2gIdSjvTmf+TYqLu+zyiqszDMCf75PnnnVwhuNcLpwsXk
8Q4BYeSOsWpkqrinJI6JXVK6lSRdDq9PO+19vb37XK13Hj0YLMUTVVyWY//Cf8IVwQEGEeJN47S1YdPo4np
DpNmnDh5udOh1YsZRcph39EaONpnjs65oxsqvZEyTaHdj3n2psPpKDLBcuOOGUWpZDOG+q0S7751ObuYUis
JGQ98T/Ct4Fuo5IX+MGZr95jKjRKLlSxXxFxOEmaaN4us1Upsf+1yGk5ZKhp8C74H5ZwwCGO2drssLZZo1o
uIcs2MJikz1oPmapHlaoFXH1oMwphyTghyQj+MefG+RblcoLlaJG/5y4zGCTMikEwTctaxXq/w9kuXdm9Cu
zfh9acujXqFwE8xmuBb/hCwl1GKAnGccDwIadQCfD9DZ5Dj494QA2w2qtQW84wmMZ1eyFI1QBVQwV5GiaZO
pdsPaSwH5HMZULi9UmB9pYAAouBQbMHHrgQcnQwZV/KgTu1o8PMgipONu2t5KeaNiEkxgAiICDMCCFeEK5a
NauAOfoXx8KR9ZOOLk8P7j7er2WBhwWY9sdbDeIJnwBjBWBBAhGsCmiZxPD4/7Z98b/0QVWUehjkZ5vQb/U
n5e/DIsVsAAAAASUVORK5CYII=
###PACKDATA,FILE_END,/pluginbuddy/images/email.png,importbuddy/pluginbuddy/images/e
mail.png
###PACKDATA,FILE_START,/pluginbuddy/images/feed.png,importbuddy/pluginbuddy/images/
feed.png
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHd
hcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJFSURBVBgZBcHda5V1AADg5/d733Oc7tjOaNs5GC6KdrEwmp
PRxG7spoKghOim7oK8y0MIEQRL+geGEIQ3UXQvSJ8IafZxUbjQhRDZoU60iYsSc9t5v87b84TsVe3mrBWpH
oCICIAIACixYTUfOJM2Z62YO97TOULSIKaEQAyESAzEgISAgLpi48de87MLUqmezhGyhO4SCW7f4O81YiSJ
iCQIkbqmNcXMIjMXeilIGsQxDp8AnKDY5teL3PyU6h4CdY3Av7cYu58R0QghZWeT9fP0v2V7i8Y4j77As2c
5sAwIFAXDgjInJxURAzub/PwxMZBGphZYeIWJWZ44xdo5bl4kK8kzioohUUREd4kXP+Kpd3nkee72+epNBl
eAxdfoLJBlDEuKkpxoBAkBjXGm53n8ZZ45S/shrr7P75eBo6eo9zAsKCqGRBEB/1zj89e5eo7tLRr7ePJtW
g9wZZV7t2i2OPQcw5JiRE4UESN1ZPc2g0tceos/LtPYx9HTaPDNe8Dhl9gtyStyUiMIJDXLp2m0GHzN2gdM
zdPq0F3k+pcc/4+x/UwepKzIiSDWTB/iwBLT8xw8xt07rJ8HHj7GbkX/B+DBxyhrciIQ2N2i2AG2fiPL+Os
XoNVlWPDnDaC5l6qiJJWjLlHxxRs0JhhcIyvp/8SHJylKdiu+
+4Tr31NW7B8nkrwzp627d9nkHM0Wsea+GSY6tDvESEyY6TIxyZ4GSUp/nTubqyF7WrvZtaKrZ4QSQ+TIMUS
JHCVypGhaHW448z+h1tLAgvKk7gAAAABJRU5ErkJggg==
###PACKDATA,FILE_END,/pluginbuddy/images/feed.png,importbuddy/pluginbuddy/images/fe
ed.png
###PACKDATA,FILE_START,/pluginbuddy/images/index.php,importbuddy/pluginbuddy/images
/index.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/pluginbuddy/images/index.php,importbuddy/pluginbuddy/images/i
ndex.php
###PACKDATA,FILE_START,/pluginbuddy/images/pluginbuddy.png,importbuddy/pluginbuddy/
images/pluginbuddy.png
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1B
QaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghod
kVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRN
YAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCE
AcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYh
EAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8l
c88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9e
M4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOna
V/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGL
c5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2Sy
cQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzAB
hzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyB
CQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvy
GvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsT
gsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTq
Eu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuy
BzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlK
vUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZx
l3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM
1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXE
JrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpa
XllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+
6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRu
dE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vf
t2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOX
YBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2D
PjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn
8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLe
WV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4K
tguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3p
tnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOw
vSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOl
LOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAV
ZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxed
sK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+F
YmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fN
KNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZft
J+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx+
+/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3n
r8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb+
+6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9
L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89Hc
R/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O
/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLd
sAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAktJREFUeNp0k01IVFEUx
3/3vfvmzTjKmKNp2ARiioG4C8IWJURE5EYXgxu3UotqVcvAtlG0cVGk0FLBoE3QStpUCy2SCgwiUJNxPswZ
db7ee6fFvBmdyf5w4Z57Pvif/7lHxeNxG2gFwoDBIYR6qCN3DzgAdjQQmbn7aikcLA0oKyYgCIJtK0Q1AQo
leYpFF4UCFFJeV4WS3ph6PH5eA6GAdrvNjjuY7bcUCEoJu04nq5s/EYRzXTHa7Z1Ksijc9HOC249OA03ap6
1E97jK7jerHGeXU8wuRxGBsUGP6ZGBWh9i9bqACRi62q9Isa7hJx9/s57LA5BaCXD/YhfhgC+DV6jF1UTTZ
r1ikdDh3bYgZB1qaB6JNRo1/vWnjACzo71MDEa50dfK/HgfSlV8jfPQDaPi5ustVjNphmPN9LdVaDxb2WZs
4QdDbVHeTJ6pi9eNZEZ6DN5tlln4toOhMr5AirBV8VUejLosAXDLWRMnyb3hIHPXbZq1hSfgCQSNADNXQ9w
bDoGTxHOy1QqigVKhpLetxMOWYmYOiwLXYovO2VZXf06GAaG7ZZ8L7XnXW7tilr0AlDdUvmglgIIGcpupyN
ypaHZCJG0pxH3/YWp+L/fgNvSeAIUqbOx8fTv9NDKQjQvKVCpY3kq3LAJ7Kh6Pm0CTvwsm4AAdS0OTSwmnI
wrQqZPpy19eXgJSvm4usA8cVI2cf2qjT5Y6bUyn8pFKJwPAHpBonJrB8TgIeplPVSMgu9/97fsH+j8FsqNr
L8aBZt/eB3aPC/w7AI6b1V5KLAy/AAAAAElFTkSuQmCC
###PACKDATA,FILE_END,/pluginbuddy/images/pluginbuddy.png,importbuddy/pluginbuddy/im
ages/pluginbuddy.png
###PACKDATA,FILE_START,/pluginbuddy/images/pluginbuddy_play.png,importbuddy/pluginb
uddy/images/pluginbuddy_play.png
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAB7klEQVR42oWRT4gSURzHZ9u9tKmHos4WBB0
VscPSEuEloot2yEsHIRE8hEIHQbBUEFSQQVBQ0EMHRRAvoh78OySMBMqSYKh7URDZg6mYLrK6r28DbjPTxn
7gc3nz+7z3Zoa6jmq1+gi+hK/hE3iLuolisfgC0t9At9v90e/3u01QKpVqhULhzX/DXC5nZBiGnc1mUyJit
Vr9ajQazXQ6/RGjwltkMpnn5XK5sdlsLnbBdrslfC4BNjiJRCLvkexfxYlEIjCZTH7yh7PZLFksFuIbnKdS
KUYul9/nwlgs9gDXYYmIaDRK4vE4GY/HgvVarfbdaDS+RXpAhUKh40ql0hbHwWCQ+P1+EggESLv993Gr1To
1mUyfEEspDBzl8/l/Yq/XS1wuFyc2v1pnWfZUr9d7EN+j3G63FLvXLwE/djqdxOFwcKfySSaTLbVa/YGL/2
Cz2T73er0z/pDP5yODwUAQjkajqcFgyCHRwDtcbLFYFDipPp/Pz3eDy+VSEK7X6wu8CotT/UgeC34XvuA7u
91e73Q6Z0TEcDicejyehkaj+YLRZ1ACBezpdLojfAzabDYzNE03w+HwidVq/arVarMKhcKHmWN4F+5BMdzi
oUQikatUKp1SqTTIZLJXWHsKH0LpLryJfXgbHsKD66Lfk7TS2QhfFGsAAAAASUVORK5CYII=
###PACKDATA,FILE_END,/pluginbuddy/images/pluginbuddy_play.png,importbuddy/pluginbud
dy/images/pluginbuddy_play.png
###PACKDATA,FILE_START,/pluginbuddy/images/pluginbuddy_tip.png,importbuddy/pluginbu
ddy/images/pluginbuddy_tip.png
iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAB/ElEQVR42n2RPYgaQRiG585rclGLhKQ2gYO
UipjiyBGCTQhpNEVsrhAigsWhkEKwSEQQjCBroSBiYQpFEBv/Cn+XCLsElOMCBvUaFYWARoXgKSc3eVlQ9j
Y/LzwwzHzPzDczJJPJCOTzeVIqlQRqtdpj8BK8Bk/AfrFYJOl0mogjlV8A5ivS6XS+93q9ThMpl8t1yG/
+J1tYluXm8/mMSrJcLn/xPN+E/B7KvlR+XqlU+M1mc03/kRsEG5xHIpF30GSCHIvFSCKRCEyn05/bwsFgQL
PZLI3H4xQ3EHdwlUqlWJVK9WArP0Q7HBUll8sJTCYTGo1G6Xg83q3V6/ULi8XyFuoBCYVCJ9Vq9ZtYXq1Wd
DgcChsEg0G6WCx2a61W69JqtX6ArCB+v/
+4UChAvhWhXWxM+/0+FYfjuEuTyeSFfJ94PB5FIBBo3CCiGqFVdESlSSaTLZ1Od7aVidPp/Njtdn+Ii/Bt1
OVy3RJHo9HMbDbnIerBXWK32wlQu93uBu52JS7GD+zG6/X62ufzcTjVD/EIyLYywQue4qRGu93edSD6upnX
6+X1ev1nSM+AnEiyZzQaj/EYjM1mYxmGaYbD4XOHw/HFYDBk1Wr1J9ScgHtgD0gjTB7K5XKVVqs1ajQas1K
pfIW5p+ARUEjEPwOZIDJwBxyCg79JvwFn8/sITKnYXQAAAABJRU5ErkJggg==
###PACKDATA,FILE_END,/pluginbuddy/images/pluginbuddy_tip.png,importbuddy/pluginbudd
y/images/pluginbuddy_tip.png
###PACKDATA,FILE_START,/pluginbuddy/images/rawr.gif,importbuddy/pluginbuddy/images/
rawr.gif
R0lGODlhLwA9ALMAAP//////AMbGxgDXAP8AAABLAL0AAFkAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAACH
/C05FVFNDQVBFMi4wAwEAAAAh+QQJBQAJACwKAA4AHAAqAAAEzTAlNKm8OGtJ7f5fN2FIWYKZ2JVC25rhZV
qmC6e0TApsH+c7l+3HSbUIAiRPoyoGhUvcaZQKIKxYT0onnU2ZTqlhfNuGL4UrYmxQb7TfwqDAy0ZJb4R8j
oDqZ2cZe3w2cgUyWhqDcwWNe4coaAOTlJWUkJGLlpWYKJqbk50gn6CiH6SbphuolqqKoKmRkrChsrO0rqu0
tbYSrLkhpGm9OpqHibIWjo1cvch4xM/NydS20tDVkdfYKNscXyFlYCJEVGbkb0XPOddA6d7cFxEAIfkECRQ
ACQAsCAAJABwAKgAABM0wJTSpvDhrSe3+XzdhSFmCmdiVQtua4WVapguntEwKbB/nO5ftx0m1CAIkT6MqBo
VL3GmUCiCsWE9KJ51NmU6pYXzbhi+HK2JsUG+03wPhwMtGSW+EfI6A6mdnGXt8NnIHMloag3MHjXuHKGgEk
5SVlJCRi5aVmCiam5OdIJ+goh+km6YbqJaqiqCpkZKwobKztK6rtLW2Eqy5IaRpvTqah4myFo6NXL3IeMTP
zcnUttLQ1ZHX2CjbHF8hZWAiRFRm5G9FzznXQOne3BcRACH5BAkFAAkALAkADAAcACoAAATNMCU0qbw4a0n
t/l83YUhZgpnYlULbmuFlWqYLp7RMCmwf5zuX7cdJtQgCJE+jKgaFS9xplAogrFhPSiedTZlOqWF824YvhS
tibFBvtN/CoMDLRklvhHyOgOpnZxl7fDZyBTJaGoNzBY17hyhoA5OUlZSQkYuWlZgompuTnSCfoKIfpJumG
6iWqoqgqZGSsKGys7Suq7S1thKsuSGkab06moeJshaOjVy9yHjEz83J1LbS0NWR19go2xxfIWVgIkRUZuRv
Rc8510Dp3twXEQAh+QQJFAAJACwIABIAIAAoAAAExBClJKe9OGtZUdUg6I1hGXoZN3Lm9bmIIMuoqb7TOJN
ibuEUgUcYA/4oGFxstisBlTKCQCoUrV5YZjP5MXavvNwz9QsgzOiO8SQ+u1FrZ+JQXBFboAPhoKXhNXp7dD
sHdH8YgQSChYEHhxeJipKSjo9zk5iTlYeRmZSWnZ57oKKYm3+hnqd4qZmrLa2mlpelo7Oxiq+stba3pbp/C
KmGsz6dlXE2E4yFLrPJPpbQSNIt02TKj2EbK3gka3DRJyzWweJyJREAOw==
###PACKDATA,FILE_END,/pluginbuddy/images/rawr.gif,importbuddy/pluginbuddy/images/ra
wr.gif
###PACKDATA,FILE_START,/pluginbuddy/js/admin.js,importbuddy/pluginbuddy/js/admin.js
alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKCWpRdWVyeSgnLmJhY2t1cGJ1ZGR5LWRvX2J
1bGtfYWN0aW9uJykuY2xpY2soIGZ1bmN0aW9uKCl7CgkJaWYgKCAhIGNvbmZpcm0oICdBcmUgeW91IHN1cm
UgeW91IHdhbnQgdG8gZG8gdGhpcyB0byBhbGwgc2VsZWN0ZWQgaXRlbXM/JyApICkgewoJCQlyZXR1cm4gZ
mFsc2U7CgkJfQoJfSk7CgkKCQoJCglqUXVlcnkoJy5wYl9kZWJ1Z19zaG93JykuY2xpY2soZnVuY3Rpb24o
ZSkgewoJCWpRdWVyeSh0aGlzKS5oaWRlKCk7CgkJalF1ZXJ5KHRoaXMpLnBhcmVudCgpLmNoaWxkcmVuKCA
nLnBiX2RlYnVnX2hpZGUnKS5zaG93KCk7CgkJalF1ZXJ5KHRoaXMpLnBhcmVudCgpLmNzcyggJ2Zsb2F0Jy
wgJ2xlZnQnICk7CgkJalF1ZXJ5KHRoaXMpLnBhcmVudCgpLmNzcyggJ3dpZHRoJywgJzgwJScgKTsKCQlqU
XVlcnkodGhpcykucGFyZW50KCkuY2hpbGRyZW4oICdkaXYnKS5zaG93KCk7Cgl9KTsKCWpRdWVyeSgnLnBi
X2RlYnVnX2hpZGUnKS5jbGljayhmdW5jdGlvbihlKSB7CgkJalF1ZXJ5KHRoaXMpLmhpZGUoKTsKCQlqUXV
lcnkodGhpcykucGFyZW50KCkuY2hpbGRyZW4oICcucGJfZGVidWdfc2hvdycpLnNob3coKTsKCQlqUXVlcn
kodGhpcykucGFyZW50KCkuY3NzKCAnZmxvYXQnLCAncmlnaHQnICk7CgkJalF1ZXJ5KHRoaXMpLnBhcmVud
CgpLmNzcyggJ3dpZHRoJywgJzQwcHgnICk7CgkJalF1ZXJ5KHRoaXMpLnBhcmVudCgpLmNoaWxkcmVuKCAn
ZGl2JykuaGlkZSgpOwoJfSk7CgkKCWpRdWVyeSggJy5hZHZhbmNlZC10b2dnbGUtdGl0bGUnICkuY2xpY2s
oZnVuY3Rpb24oKXsKCQljb250YWluZXJXcmFwID0galF1ZXJ5KHRoaXMpLmNsb3Nlc3QoICdmb3JtJyApOw
oJCXRpdGxlVG9nZ2xlID0gY29udGFpbmVyV3JhcC5maW5kKCAnLmFkdmFuY2VkLXRvZ2dsZS10aXRsZScgK
TsKCQlyaWdodEFycm93ID0gdGl0bGVUb2dnbGUuZmluZCggJy5kYXNoaWNvbnMtYXJyb3ctcmlnaHQnICk7
CgkJaWYgKCByaWdodEFycm93Lmxlbmd0aCA+IDAgKSB7CgkJCXJpZ2h0QXJyb3cucmVtb3ZlQ2xhc3MoICd
kYXNoaWNvbnMtYXJyb3ctcmlnaHQnICkuYWRkQ2xhc3MoICdkYXNoaWNvbnMtYXJyb3ctZG93bicgKTsKCQ
l9IGVsc2UgewoJCQl0aXRsZVRvZ2dsZS5maW5kKCAnLmRhc2hpY29ucy1hcnJvdy1kb3duJyApLnJlbW92Z
UNsYXNzKCAnZGFzaGljb25zLWFycm93LWRvd24nICkuYWRkQ2xhc3MoICdkYXNoaWNvbnMtYXJyb3ctcmln
aHQnICk7CgkJfQoJCWNvbnRhaW5lcldyYXAuZmluZCggJy5hZHZhbmNlZC10b2dnbGUnICkudG9nZ2xlKCk
7Cgl9KTsKCQoJCglqUXVlcnkoJy5wbHVnaW5idWRkeV90aXAnKS50b29sdGlwKCk7IC8vIE5vdyB1c2luZy
BqUXVlcnkgVUkgdG9vbHRpcC4KCQoJCglpZiAodHlwZW9mIGpRdWVyeS50YWJsZURuRCAhPT0gJ3VuZGVma
W5lZCcpIHsgLy8gSWYgdGFibGVEbkQgZnVuY3Rpb24gbG9hZGVkLgoJCWpRdWVyeSgnLnBiX3Jlb3JkZXIn
KS50YWJsZURuRCh7CgkJCW9uRHJvcDogZnVuY3Rpb24odGJvZHksIHJvdykgewoJCQkJdmFyIG5ld19vcmR
lciA9IG5ldyBBcnJheSgpOwoJCQkJdmFyIHJvd3MgPSB0Ym9keS5yb3dzOwoJCQkJZm9yICh2YXIgaT0wOy
BpPHJvd3MubGVuZ3RoOyBpKyspIHsKCQkJCQluZXdfb3JkZXIucHVzaCggcm93c1tpXS5pZC5zdWJzdHJpb
mcoMTEpICk7CgkJCQl9CgkJCQluZXdfb3JkZXIgPSBuZXdfb3JkZXIuam9pbiggJywnICk7CgkJCQlqUXVl
cnkoICcjcGJfb3JkZXInICkudmFsKCBuZXdfb3JkZXIgKQoJCQl9LAoJCQlkcmFnSGFuZGxlOiAicGJfZHJ
hZ2hhbmRsZSIKCQl9KTsKCX0KCQoJalF1ZXJ5KCcucGJfdG9nZ2xlJykuY2xpY2soZnVuY3Rpb24oZSkgew
oJCWpRdWVyeSggJyNwYl90b2dnbGUtJyArIGpRdWVyeSh0aGlzKS5hdHRyKCdpZCcpICkuc2xpZGVUb2dnb
GUoKTsKCX0pOwoJCgkKfSk7
###PACKDATA,FILE_END,/pluginbuddy/js/admin.js,importbuddy/pluginbuddy/js/admin.js
###PACKDATA,FILE_START,/pluginbuddy/js/index.php,importbuddy/pluginbuddy/js/index.p
hp
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/pluginbuddy/js/index.php,importbuddy/pluginbuddy/js/index.php
###PACKDATA,FILE_START,/pluginbuddy/js/jquery.miniColors.min.js,importbuddy/pluginb
uddy/js/jquery.miniColors.min.js
LyoKICogalF1ZXJ5IG1pbmlDb2xvcnM6IEEgc21hbGwgY29sb3Igc2VsZWN0b3IKICoKICogQ29weXJpZ2h
0IDIwMTEgQ29yeSBMYVZpc2thIGZvciBBIEJlYXV0aWZ1bCBTaXRlLCBMTEMuIChodHRwOi8vYWJlYXV0aW
Z1bHNpdGUubmV0LykKICoKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uI
DIgbGljZW5zZXMKICoKKi8KaWYoalF1ZXJ5KShmdW5jdGlvbigkKXskLmV4dGVuZCgkLmZuLHttaW5pQ29s
b3JzOmZ1bmN0aW9uKG8sZGF0YSl7dmFyIGNyZWF0ZT1mdW5jdGlvbihpbnB1dCxvLGRhdGEpe3ZhciBjb2x
vcj1leHBhbmRIZXgoaW5wdXQudmFsKCkpO2lmKCFjb2xvciljb2xvcj0nZmZmZmZmJzt2YXIgaHNiPWhleD
Joc2IoY29sb3IpO3ZhciB0cmlnZ2VyPSQoJzxhIGNsYXNzPSJtaW5pQ29sb3JzLXRyaWdnZXIiIHN0eWxlP
SJiYWNrZ3JvdW5kLWNvbG9yOiAjJytjb2xvcisnIiBocmVmPSIjIj48L2E+Jyk7dHJpZ2dlci5pbnNlcnRB
ZnRlcihpbnB1dCk7aW5wdXQuYWRkQ2xhc3MoJ21pbmlDb2xvcnMnKS5kYXRhKCdvcmlnaW5hbC1tYXhsZW5
ndGgnLGlucHV0LmF0dHIoJ21heGxlbmd0aCcpfHxudWxsKS5kYXRhKCdvcmlnaW5hbC1hdXRvY29tcGxldG
UnLGlucHV0LmF0dHIoJ2F1dG9jb21wbGV0ZScpfHxudWxsKS5kYXRhKCdsZXR0ZXJDYXNlJywndXBwZXJjY
XNlJykuZGF0YSgndHJpZ2dlcicsdHJpZ2dlcikuZGF0YSgnaHNiJyxoc2IpLmRhdGEoJ2NoYW5nZScsby5j
aGFuZ2U/by5jaGFuZ2U6bnVsbCkuYXR0cignbWF4bGVuZ3RoJyw3KS5hdHRyKCdhdXRvY29tcGxldGUnLCd
vZmYnKS52YWwoJyMnK2NvbnZlcnRDYXNlKGNvbG9yLG8ubGV0dGVyQ2FzZSkpO2lmKG8ucmVhZG9ubHkpaW
5wdXQucHJvcCgncmVhZG9ubHknLHRydWUpO2lmKG8uZGlzYWJsZWQpZGlzYWJsZShpbnB1dCk7dHJpZ2dlc
i5iaW5kKCdjbGljay5taW5pQ29sb3JzJyxmdW5jdGlvbihldmVudCl7ZXZlbnQucHJldmVudERlZmF1bHQo
KTtpZihpbnB1dC52YWwoKT09PScnKWlucHV0LnZhbCgnIycpO3Nob3coaW5wdXQpfSk7aW5wdXQuYmluZCg
nZm9jdXMubWluaUNvbG9ycycsZnVuY3Rpb24oZXZlbnQpe2lmKGlucHV0LnZhbCgpPT09JycpaW5wdXQudm
FsKCcjJyk7c2hvdyhpbnB1dCl9KTtpbnB1dC5iaW5kKCdibHVyLm1pbmlDb2xvcnMnLGZ1bmN0aW9uKGV2Z
W50KXt2YXIgaGV4PWV4cGFuZEhleChpbnB1dC52YWwoKSk7aW5wdXQudmFsKGhleD8nIycrY29udmVydENh
c2UoaGV4LGlucHV0LmRhdGEoJ2xldHRlckNhc2UnKSk6JycpfSk7aW5wdXQuYmluZCgna2V5ZG93bi5taW5
pQ29sb3JzJyxmdW5jdGlvbihldmVudCl7aWYoZXZlbnQua2V5Q29kZT09PTkpaGlkZShpbnB1dCl9KTtpbn
B1dC5iaW5kKCdrZXl1cC5taW5pQ29sb3JzJyxmdW5jdGlvbihldmVudCl7c2V0Q29sb3JGcm9tSW5wdXQoa
W5wdXQpfSk7aW5wdXQuYmluZCgncGFzdGUubWluaUNvbG9ycycsZnVuY3Rpb24oZXZlbnQpe3NldFRpbWVv
dXQoZnVuY3Rpb24oKXtzZXRDb2xvckZyb21JbnB1dChpbnB1dCl9LDUpfSl9O3ZhciBkZXN0cm95PWZ1bmN
0aW9uKGlucHV0KXtoaWRlKCk7aW5wdXQ9JChpbnB1dCk7aW5wdXQuZGF0YSgndHJpZ2dlcicpLnJlbW92ZS
gpO2lucHV0LmF0dHIoJ2F1dG9jb21wbGV0ZScsaW5wdXQuZGF0YSgnb3JpZ2luYWwtYXV0b2NvbXBsZXRlJ
ykpLmF0dHIoJ21heGxlbmd0aCcsaW5wdXQuZGF0YSgnb3JpZ2luYWwtbWF4bGVuZ3RoJykpLnJlbW92ZURh
dGEoKS5yZW1vdmVDbGFzcygnbWluaUNvbG9ycycpLnVuYmluZCgnLm1pbmlDb2xvcnMnKTskKGRvY3VtZW5
0KS51bmJpbmQoJy5taW5pQ29sb3JzJyl9O3ZhciBlbmFibGU9ZnVuY3Rpb24oaW5wdXQpe2lucHV0LnByb3
AoJ2Rpc2FibGVkJyxmYWxzZSkuZGF0YSgndHJpZ2dlcicpLmNzcygnb3BhY2l0eScsMSl9O3ZhciBkaXNhY
mxlPWZ1bmN0aW9uKGlucHV0KXtoaWRlKGlucHV0KTtpbnB1dC5wcm9wKCdkaXNhYmxlZCcsdHJ1ZSkuZGF0
YSgndHJpZ2dlcicpLmNzcygnb3BhY2l0eScsMC41KX07dmFyIHNob3c9ZnVuY3Rpb24oaW5wdXQpe2lmKGl
ucHV0LnByb3AoJ2Rpc2FibGVkJykpcmV0dXJuIGZhbHNlO2hpZGUoKTt2YXIgc2VsZWN0b3I9JCgnPGRpdi
BjbGFzcz0ibWluaUNvbG9ycy1zZWxlY3RvciI+PC9kaXY+Jyk7c2VsZWN0b3IuYXBwZW5kKCc8ZGl2IGNsY
XNzPSJtaW5pQ29sb3JzLWNvbG9ycyIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGRkY7Ij48ZGl2IGNs
YXNzPSJtaW5pQ29sb3JzLWNvbG9yUGlja2VyIj48L2Rpdj48L2Rpdj4nKS5hcHBlbmQoJzxkaXYgY2xhc3M
9Im1pbmlDb2xvcnMtaHVlcyI+PGRpdiBjbGFzcz0ibWluaUNvbG9ycy1odWVQaWNrZXIiPjwvZGl2PjwvZG
l2PicpLmNzcyh7dG9wOmlucHV0LmlzKCc6dmlzaWJsZScpP2lucHV0Lm9mZnNldCgpLnRvcCtpbnB1dC5vd
XRlckhlaWdodCgpOmlucHV0LmRhdGEoJ3RyaWdnZXInKS5vZmZzZXQoKS50b3AraW5wdXQuZGF0YSgndHJp
Z2dlcicpLm91dGVySGVpZ2h0KCksbGVmdDppbnB1dC5pcygnOnZpc2libGUnKT9pbnB1dC5vZmZzZXQoKS5
sZWZ0OmlucHV0LmRhdGEoJ3RyaWdnZXInKS5vZmZzZXQoKS5sZWZ0LGRpc3BsYXk6J25vbmUnfSkuYWRkQ2
xhc3MoaW5wdXQuYXR0cignY2xhc3MnKSk7dmFyIGhzYj1pbnB1dC5kYXRhKCdoc2InKTtzZWxlY3Rvci5ma
W5kKCcubWluaUNvbG9ycy1jb2xvcnMnKS5jc3MoJ2JhY2tncm91bmRDb2xvcicsJyMnK2hzYjJoZXgoe2g6
aHNiLmgsczoxMDAsYjoxMDB9KSk7dmFyIGNvbG9yUG9zaXRpb249aW5wdXQuZGF0YSgnY29sb3JQb3NpdGl
vbicpO2lmKCFjb2xvclBvc2l0aW9uKWNvbG9yUG9zaXRpb249Z2V0Q29sb3JQb3NpdGlvbkZyb21IU0IoaH
NiKTtzZWxlY3Rvci5maW5kKCcubWluaUNvbG9ycy1jb2xvclBpY2tlcicpLmNzcygndG9wJyxjb2xvclBvc
2l0aW9uLnkrJ3B4JykuY3NzKCdsZWZ0Jyxjb2xvclBvc2l0aW9uLngrJ3B4Jyk7dmFyIGh1ZVBvc2l0aW9u
PWlucHV0LmRhdGEoJ2h1ZVBvc2l0aW9uJyk7aWYoIWh1ZVBvc2l0aW9uKWh1ZVBvc2l0aW9uPWdldEh1ZVB
vc2l0aW9uRnJvbUhTQihoc2IpO3NlbGVjdG9yLmZpbmQoJy5taW5pQ29sb3JzLWh1ZVBpY2tlcicpLmNzcy
gndG9wJyxodWVQb3NpdGlvbi55KydweCcpO2lucHV0LmRhdGEoJ3NlbGVjdG9yJyxzZWxlY3RvcikuZGF0Y
SgnaHVlUGlja2VyJyxzZWxlY3Rvci5maW5kKCcubWluaUNvbG9ycy1odWVQaWNrZXInKSkuZGF0YSgnY29s
b3JQaWNrZXInLHNlbGVjdG9yLmZpbmQoJy5taW5pQ29sb3JzLWNvbG9yUGlja2VyJykpLmRhdGEoJ21vdXN
lYnV0dG9uJywwKTskKCdCT0RZJykuYXBwZW5kKHNlbGVjdG9yKTtzZWxlY3Rvci5mYWRlSW4oMTAwKTtzZW
xlY3Rvci5iaW5kKCdzZWxlY3RzdGFydCcsZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9KTskKGRvY3VtZW50K
S5iaW5kKCdtb3VzZWRvd24ubWluaUNvbG9ycyB0b3VjaHN0YXJ0Lm1pbmlDb2xvcnMnLGZ1bmN0aW9uKGV2
ZW50KXtpbnB1dC5kYXRhKCdtb3VzZWJ1dHRvbicsMSk7aWYoJChldmVudC50YXJnZXQpLnBhcmVudHMoKS5
hbmRTZWxmKCkuaGFzQ2xhc3MoJ21pbmlDb2xvcnMtY29sb3JzJykpe2V2ZW50LnByZXZlbnREZWZhdWx0KC
k7aW5wdXQuZGF0YSgnbW92aW5nJywnY29sb3JzJyk7bW92ZUNvbG9yKGlucHV0LGV2ZW50KX1pZigkKGV2Z
W50LnRhcmdldCkucGFyZW50cygpLmFuZFNlbGYoKS5oYXNDbGFzcygnbWluaUNvbG9ycy1odWVzJykpe2V2
ZW50LnByZXZlbnREZWZhdWx0KCk7aW5wdXQuZGF0YSgnbW92aW5nJywnaHVlcycpO21vdmVIdWUoaW5wdXQ
sZXZlbnQpfWlmKCQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCkuYW5kU2VsZigpLmhhc0NsYXNzKCdtaW5pQ2
9sb3JzLXNlbGVjdG9yJykpe2V2ZW50LnByZXZlbnREZWZhdWx0KCk7cmV0dXJufWlmKCQoZXZlbnQudGFyZ
2V0KS5wYXJlbnRzKCkuYW5kU2VsZigpLmhhc0NsYXNzKCdtaW5pQ29sb3JzJykpcmV0dXJuO2hpZGUoaW5w
dXQpfSk7JChkb2N1bWVudCkuYmluZCgnbW91c2V1cC5taW5pQ29sb3JzIHRvdWNoZW5kLm1pbmlDb2xvcnM
nLGZ1bmN0aW9uKGV2ZW50KXtldmVudC5wcmV2ZW50RGVmYXVsdCgpO2lucHV0LmRhdGEoJ21vdXNlYnV0dG
9uJywwKS5yZW1vdmVEYXRhKCdtb3ZpbmcnKX0pLmJpbmQoJ21vdXNlbW92ZS5taW5pQ29sb3JzIHRvdWNob
W92ZS5taW5pQ29sb3JzJyxmdW5jdGlvbihldmVudCl7ZXZlbnQucHJldmVudERlZmF1bHQoKTtpZihpbnB1
dC5kYXRhKCdtb3VzZWJ1dHRvbicpPT09MSl7aWYoaW5wdXQuZGF0YSgnbW92aW5nJyk9PT0nY29sb3JzJyl
tb3ZlQ29sb3IoaW5wdXQsZXZlbnQpO2lmKGlucHV0LmRhdGEoJ21vdmluZycpPT09J2h1ZXMnKW1vdmVIdW
UoaW5wdXQsZXZlbnQpfX0pfTt2YXIgaGlkZT1mdW5jdGlvbihpbnB1dCl7aWYoIWlucHV0KWlucHV0PScub
WluaUNvbG9ycyc7JChpbnB1dCkuZWFjaChmdW5jdGlvbigpe3ZhciBzZWxlY3Rvcj0kKHRoaXMpLmRhdGEo
J3NlbGVjdG9yJyk7JCh0aGlzKS5yZW1vdmVEYXRhKCdzZWxlY3RvcicpOyQoc2VsZWN0b3IpLmZhZGVPdXQ
oMTAwLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmUoKX0pfSk7JChkb2N1bWVudCkudW5iaW5kKCdtb3VzZW
Rvd24ubWluaUNvbG9ycyB0b3VjaHN0YXJ0Lm1pbmlDb2xvcnMnKS51bmJpbmQoJ21vdXNlbW92ZS5taW5pQ
29sb3JzIHRvdWNobW92ZS5taW5pQ29sb3JzJyl9O3ZhciBtb3ZlQ29sb3I9ZnVuY3Rpb24oaW5wdXQsZXZl
bnQpe3ZhciBjb2xvclBpY2tlcj1pbnB1dC5kYXRhKCdjb2xvclBpY2tlcicpO2NvbG9yUGlja2VyLmhpZGU
oKTt2YXIgcG9zaXRpb249e3g6ZXZlbnQucGFnZVgseTpldmVudC5wYWdlWX07aWYoZXZlbnQub3JpZ2luYW
xFdmVudC5jaGFuZ2VkVG91Y2hlcyl7cG9zaXRpb24ueD1ldmVudC5vcmlnaW5hbEV2ZW50LmNoYW5nZWRUb
3VjaGVzWzBdLnBhZ2VYO3Bvc2l0aW9uLnk9ZXZlbnQub3JpZ2luYWxFdmVudC5jaGFuZ2VkVG91Y2hlc1sw
XS5wYWdlWX1wb3NpdGlvbi54PXBvc2l0aW9uLngtaW5wdXQuZGF0YSgnc2VsZWN0b3InKS5maW5kKCcubWl
uaUNvbG9ycy1jb2xvcnMnKS5vZmZzZXQoKS5sZWZ0LTU7cG9zaXRpb24ueT1wb3NpdGlvbi55LWlucHV0Lm
RhdGEoJ3NlbGVjdG9yJykuZmluZCgnLm1pbmlDb2xvcnMtY29sb3JzJykub2Zmc2V0KCkudG9wLTU7aWYoc
G9zaXRpb24ueDw9LTUpcG9zaXRpb24ueD0tNTtpZihwb3NpdGlvbi54Pj0xNDQpcG9zaXRpb24ueD0xNDQ7
aWYocG9zaXRpb24ueTw9LTUpcG9zaXRpb24ueT0tNTtpZihwb3NpdGlvbi55Pj0xNDQpcG9zaXRpb24ueT0
xNDQ7aW5wdXQuZGF0YSgnY29sb3JQb3NpdGlvbicscG9zaXRpb24pO2NvbG9yUGlja2VyLmNzcygnbGVmdC
cscG9zaXRpb24ueCkuY3NzKCd0b3AnLHBvc2l0aW9uLnkpLnNob3coKTt2YXIgcz1NYXRoLnJvdW5kKChwb
3NpdGlvbi54KzUpKjAuNjcpO2lmKHM8MClzPTA7aWYocz4xMDApcz0xMDA7dmFyIGI9MTAwLU1hdGgucm91
bmQoKHBvc2l0aW9uLnkrNSkqMC42Nyk7aWYoYjwwKWI9MDtpZihiPjEwMCliPTEwMDt2YXIgaHNiPWlucHV
0LmRhdGEoJ2hzYicpO2hzYi5zPXM7aHNiLmI9YjtzZXRDb2xvcihpbnB1dCxoc2IsdHJ1ZSl9O3ZhciBtb3
ZlSHVlPWZ1bmN0aW9uKGlucHV0LGV2ZW50KXt2YXIgaHVlUGlja2VyPWlucHV0LmRhdGEoJ2h1ZVBpY2tlc
icpO2h1ZVBpY2tlci5oaWRlKCk7dmFyIHBvc2l0aW9uPXt5OmV2ZW50LnBhZ2VZfTtpZihldmVudC5vcmln
aW5hbEV2ZW50LmNoYW5nZWRUb3VjaGVzKXtwb3NpdGlvbi55PWV2ZW50Lm9yaWdpbmFsRXZlbnQuY2hhbmd
lZFRvdWNoZXNbMF0ucGFnZVl9cG9zaXRpb24ueT1wb3NpdGlvbi55LWlucHV0LmRhdGEoJ3NlbGVjdG9yJy
kuZmluZCgnLm1pbmlDb2xvcnMtY29sb3JzJykub2Zmc2V0KCkudG9wLTE7aWYocG9zaXRpb24ueTw9LTEpc
G9zaXRpb24ueT0tMTtpZihwb3NpdGlvbi55Pj0xNDkpcG9zaXRpb24ueT0xNDk7aW5wdXQuZGF0YSgnaHVl
UG9zaXRpb24nLHBvc2l0aW9uKTtodWVQaWNrZXIuY3NzKCd0b3AnLHBvc2l0aW9uLnkpLnNob3coKTt2YXI
gaD1NYXRoLnJvdW5kKCgxNTAtcG9zaXRpb24ueS0xKSoyLjQpO2lmKGg8MCloPTA7aWYoaD4zNjApaD0zNj
A7dmFyIGhzYj1pbnB1dC5kYXRhKCdoc2InKTtoc2IuaD1oO3NldENvbG9yKGlucHV0LGhzYix0cnVlKX07d
mFyIHNldENvbG9yPWZ1bmN0aW9uKGlucHV0LGhzYix1cGRhdGVJbnB1dCl7aW5wdXQuZGF0YSgnaHNiJyxo
c2IpO3ZhciBoZXg9aHNiMmhleChoc2IpO2lmKHVwZGF0ZUlucHV0KWlucHV0LnZhbCgnIycrY29udmVydEN
hc2UoaGV4LGlucHV0LmRhdGEoJ2xldHRlckNhc2UnKSkpO2lucHV0LmRhdGEoJ3RyaWdnZXInKS5jc3MoJ2
JhY2tncm91bmRDb2xvcicsJyMnK2hleCk7aWYoaW5wdXQuZGF0YSgnc2VsZWN0b3InKSlpbnB1dC5kYXRhK
CdzZWxlY3RvcicpLmZpbmQoJy5taW5pQ29sb3JzLWNvbG9ycycpLmNzcygnYmFja2dyb3VuZENvbG9yJywn
IycraHNiMmhleCh7aDpoc2IuaCxzOjEwMCxiOjEwMH0pKTtpZihpbnB1dC5kYXRhKCdjaGFuZ2UnKSl7aWY
oaGV4PT09aW5wdXQuZGF0YSgnbGFzdENoYW5nZScpKXJldHVybjtpbnB1dC5kYXRhKCdjaGFuZ2UnKS5jYW
xsKGlucHV0LCcjJytoZXgsaHNiMnJnYihoc2IpKTtpbnB1dC5kYXRhKCdsYXN0Q2hhbmdlJyxoZXgpfX07d
mFyIHNldENvbG9yRnJvbUlucHV0PWZ1bmN0aW9uKGlucHV0KXtpbnB1dC52YWwoJyMnK2NsZWFuSGV4KGlu
cHV0LnZhbCgpKSk7dmFyIGhleD1leHBhbmRIZXgoaW5wdXQudmFsKCkpO2lmKCFoZXgpcmV0dXJuIGZhbHN
lO3ZhciBoc2I9aGV4MmhzYihoZXgpO3ZhciBjdXJyZW50SFNCPWlucHV0LmRhdGEoJ2hzYicpO2lmKGhzYi
5oPT09Y3VycmVudEhTQi5oJiZoc2Iucz09PWN1cnJlbnRIU0IucyYmaHNiLmI9PT1jdXJyZW50SFNCLmIpc
mV0dXJuIHRydWU7dmFyIGNvbG9yUG9zaXRpb249Z2V0Q29sb3JQb3NpdGlvbkZyb21IU0IoaHNiKTt2YXIg
Y29sb3JQaWNrZXI9JChpbnB1dC5kYXRhKCdjb2xvclBpY2tlcicpKTtjb2xvclBpY2tlci5jc3MoJ3RvcCc
sY29sb3JQb3NpdGlvbi55KydweCcpLmNzcygnbGVmdCcsY29sb3JQb3NpdGlvbi54KydweCcpO2lucHV0Lm
RhdGEoJ2NvbG9yUG9zaXRpb24nLGNvbG9yUG9zaXRpb24pO3ZhciBodWVQb3NpdGlvbj1nZXRIdWVQb3Npd
GlvbkZyb21IU0IoaHNiKTt2YXIgaHVlUGlja2VyPSQoaW5wdXQuZGF0YSgnaHVlUGlja2VyJykpO2h1ZVBp
Y2tlci5jc3MoJ3RvcCcsaHVlUG9zaXRpb24ueSsncHgnKTtpbnB1dC5kYXRhKCdodWVQb3NpdGlvbicsaHV
lUG9zaXRpb24pO3NldENvbG9yKGlucHV0LGhzYik7cmV0dXJuIHRydWV9O3ZhciBjb252ZXJ0Q2FzZT1mdW
5jdGlvbihzdHJpbmcsbGV0dGVyQ2FzZSl7aWYobGV0dGVyQ2FzZT09PSdsb3dlcmNhc2UnKXJldHVybiBzd
HJpbmcudG9Mb3dlckNhc2UoKTtpZihsZXR0ZXJDYXNlPT09J3VwcGVyY2FzZScpcmV0dXJuIHN0cmluZy50
b1VwcGVyQ2FzZSgpO3JldHVybiBzdHJpbmd9O3Z
hciBnZXRDb2xvclBvc2l0aW9uRnJvbUhTQj1mdW5jdGlvbihoc2Ipe3ZhciB4PU1hdGguY2VpbChoc2Iucy
8wLjY3KTtpZih4PDApeD0wO2lmKHg+MTUwKXg9MTUwO3ZhciB5PTE1MC1NYXRoLmNlaWwoaHNiLmIvMC42N
yk7aWYoeTwwKXk9MDtpZih5PjE1MCl5PTE1MDtyZXR1cm57eDp4LTUseTp5LTV9fTt2YXIgZ2V0SHVlUG9z
aXRpb25Gcm9tSFNCPWZ1bmN0aW9uKGhzYil7dmFyIHk9MTUwLShoc2IuaC8yLjQpO2lmKHk8MCloPTA7aWY
oeT4xNTApaD0xNTA7cmV0dXJue3k6eS0xfX07dmFyIGNsZWFuSGV4PWZ1bmN0aW9uKGhleCl7cmV0dXJuIG
hleC5yZXBsYWNlKC9bXkEtRjAtOV0vaWcsJycpfTt2YXIgZXhwYW5kSGV4PWZ1bmN0aW9uKGhleCl7aGV4P
WNsZWFuSGV4KGhleCk7aWYoIWhleClyZXR1cm4gbnVsbDtpZihoZXgubGVuZ3RoPT09MyloZXg9aGV4WzBd
K2hleFswXStoZXhbMV0raGV4WzFdK2hleFsyXStoZXhbMl07cmV0dXJuIGhleC5sZW5ndGg9PT02P2hleDp
udWxsfTt2YXIgaHNiMnJnYj1mdW5jdGlvbihoc2Ipe3ZhciByZ2I9e307dmFyIGg9TWF0aC5yb3VuZChoc2
IuaCk7dmFyIHM9TWF0aC5yb3VuZChoc2IucyoyNTUvMTAwKTt2YXIgdj1NYXRoLnJvdW5kKGhzYi5iKjI1N
S8xMDApO2lmKHM9PT0wKXtyZ2Iucj1yZ2IuZz1yZ2IuYj12fWVsc2V7dmFyIHQxPXY7dmFyIHQyPSgyNTUt
cykqdi8yNTU7dmFyIHQzPSh0MS10MikqKGglNjApLzYwO2lmKGg9PT0zNjApaD0wO2lmKGg8NjApe3JnYi5
yPXQxO3JnYi5iPXQyO3JnYi5nPXQyK3QzfWVsc2UgaWYoaDwxMjApe3JnYi5nPXQxO3JnYi5iPXQyO3JnYi
5yPXQxLXQzfWVsc2UgaWYoaDwxODApe3JnYi5nPXQxO3JnYi5yPXQyO3JnYi5iPXQyK3QzfWVsc2UgaWYoa
DwyNDApe3JnYi5iPXQxO3JnYi5yPXQyO3JnYi5nPXQxLXQzfWVsc2UgaWYoaDwzMDApe3JnYi5iPXQxO3Jn
Yi5nPXQyO3JnYi5yPXQyK3QzfWVsc2UgaWYoaDwzNjApe3JnYi5yPXQxO3JnYi5nPXQyO3JnYi5iPXQxLXQ
zfWVsc2V7cmdiLnI9MDtyZ2IuZz0wO3JnYi5iPTB9fXJldHVybntyOk1hdGgucm91bmQocmdiLnIpLGc6TW
F0aC5yb3VuZChyZ2IuZyksYjpNYXRoLnJvdW5kKHJnYi5iKX19O3ZhciByZ2IyaGV4PWZ1bmN0aW9uKHJnY
il7dmFyIGhleD1bcmdiLnIudG9TdHJpbmcoMTYpLHJnYi5nLnRvU3RyaW5nKDE2KSxyZ2IuYi50b1N0cmlu
ZygxNildOyQuZWFjaChoZXgsZnVuY3Rpb24obnIsdmFsKXtpZih2YWwubGVuZ3RoPT09MSloZXhbbnJdPSc
wJyt2YWx9KTtyZXR1cm4gaGV4LmpvaW4oJycpfTt2YXIgaGV4MnJnYj1mdW5jdGlvbihoZXgpe2hleD1wYX
JzZUludCgoKGhleC5pbmRleE9mKCcjJyk+LTEpP2hleC5zdWJzdHJpbmcoMSk6aGV4KSwxNik7cmV0dXJue
3I6aGV4Pj4xNixnOihoZXgmMHgwMEZGMDApPj44LGI6KGhleCYweDAwMDBGRil9fTt2YXIgcmdiMmhzYj1m
dW5jdGlvbihyZ2Ipe3ZhciBoc2I9e2g6MCxzOjAsYjowfTt2YXIgbWluPU1hdGgubWluKHJnYi5yLHJnYi5
nLHJnYi5iKTt2YXIgbWF4PU1hdGgubWF4KHJnYi5yLHJnYi5nLHJnYi5iKTt2YXIgZGVsdGE9bWF4LW1pbj
toc2IuYj1tYXg7aHNiLnM9bWF4IT09MD8yNTUqZGVsdGEvbWF4OjA7aWYoaHNiLnMhPT0wKXtpZihyZ2Iuc
j09PW1heCl7aHNiLmg9KHJnYi5nLXJnYi5iKS9kZWx0YX1lbHNlIGlmKHJnYi5nPT09bWF4KXtoc2IuaD0y
KyhyZ2IuYi1yZ2IucikvZGVsdGF9ZWxzZXtoc2IuaD00KyhyZ2Iuci1yZ2IuZykvZGVsdGF9fWVsc2V7aHN
iLmg9LTF9aHNiLmgqPTYwO2lmKGhzYi5oPDApe2hzYi5oKz0zNjB9aHNiLnMqPTEwMC8yNTU7aHNiLmIqPT
EwMC8yNTU7cmV0dXJuIGhzYn07dmFyIGhleDJoc2I9ZnVuY3Rpb24oaGV4KXt2YXIgaHNiPXJnYjJoc2Ioa
GV4MnJnYihoZXgpKTtpZihoc2Iucz09PTApaHNiLmg9MzYwO3JldHVybiBoc2J9O3ZhciBoc2IyaGV4PWZ1
bmN0aW9uKGhzYil7cmV0dXJuIHJnYjJoZXgoaHNiMnJnYihoc2IpKX07c3dpdGNoKG8pe2Nhc2UncmVhZG9
ubHknOiQodGhpcykuZWFjaChmdW5jdGlvbigpe2lmKCEkKHRoaXMpLmhhc0NsYXNzKCdtaW5pQ29sb3JzJy
kpcmV0dXJuOyQodGhpcykucHJvcCgncmVhZG9ubHknLGRhdGEpfSk7cmV0dXJuICQodGhpcyk7Y2FzZSdka
XNhYmxlZCc6JCh0aGlzKS5lYWNoKGZ1bmN0aW9uKCl7aWYoISQodGhpcykuaGFzQ2xhc3MoJ21pbmlDb2xv
cnMnKSlyZXR1cm47aWYoZGF0YSl7ZGlzYWJsZSgkKHRoaXMpKX1lbHNle2VuYWJsZSgkKHRoaXMpKX19KTt
yZXR1cm4gJCh0aGlzKTtjYXNlJ3ZhbHVlJzppZihkYXRhPT09dW5kZWZpbmVkKXtpZighJCh0aGlzKS5oYX
NDbGFzcygnbWluaUNvbG9ycycpKXJldHVybjt2YXIgaW5wdXQ9JCh0aGlzKSxoZXg9ZXhwYW5kSGV4KGluc
HV0LnZhbCgpKTtyZXR1cm4gaGV4PycjJytjb252ZXJ0Q2FzZShoZXgsaW5wdXQuZGF0YSgnbGV0dGVyQ2Fz
ZScpKTpudWxsfSQodGhpcykuZWFjaChmdW5jdGlvbigpe2lmKCEkKHRoaXMpLmhhc0NsYXNzKCdtaW5pQ29
sb3JzJykpcmV0dXJuOyQodGhpcykudmFsKGRhdGEpO3NldENvbG9yRnJvbUlucHV0KCQodGhpcykpfSk7cm
V0dXJuICQodGhpcyk7Y2FzZSdkZXN0cm95JzokKHRoaXMpLmVhY2goZnVuY3Rpb24oKXtpZighJCh0aGlzK
S5oYXNDbGFzcygnbWluaUNvbG9ycycpKXJldHVybjtkZXN0cm95KCQodGhpcykpfSk7cmV0dXJuICQodGhp
cyk7ZGVmYXVsdDppZighbylvPXt9OyQodGhpcykuZWFjaChmdW5jdGlvbigpe2lmKCQodGhpcylbMF0udGF
nTmFtZS50b0xvd2VyQ2FzZSgpIT09J2lucHV0JylyZXR1cm47aWYoJCh0aGlzKS5kYXRhKCd0cmlnZ2VyJy
kpcmV0dXJuO2NyZWF0ZSgkKHRoaXMpLG8sZGF0YSl9KTtyZXR1cm4gJCh0aGlzKX19fSl9KShqUXVlcnkpO
w==
###PACKDATA,FILE_END,/pluginbuddy/js/jquery.miniColors.min.js,importbuddy/pluginbud
dy/js/jquery.miniColors.min.js
###PACKDATA,FILE_START,/pluginbuddy/js/pb_tabs.js,importbuddy/pluginbuddy/js/pb_tab
s.js
alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKCQoJLy8gQ2hhbmdlIHRhYiBvbiBjbGljay4
KCWpRdWVyeSggJy5iYWNrdXBidWRkeS10YWJzLXdyYXAgLm5hdi10YWJbaHJlZl49IiMiXScgKS5jbGljay
ggZnVuY3Rpb24oZSl7IC8qIGlnbm9yZXMgYW55IG5vbiBoYXNodGFnIGxpbmtzIHNpbmNlIHRoZXkgZ28gZ
GlyZWN0IHRvIGEgVVJMLi4uICovCgkJZS5wcmV2ZW50RGVmYXVsdCgpOwoJCQoJCS8vIEhpZGUgYWxsIHRh
YiBibG9ja3MuCgkJdGhpc1RhYkJsb2NrID0galF1ZXJ5KHRoaXMpLmNsb3Nlc3QoICcuYmFja3VwYnVkZHk
tdGFicy13cmFwJyApOwoJCXRoaXNUYWJCbG9jay5maW5kKCAnLmJhY2t1cGJ1ZGR5LXRhYicgKS5oaWRlKC
k7CgkJCgkJLy8gVXBkYXRlIHNlbGVjdGVkIHRhYi4KCQl0aGlzVGFiQmxvY2suZmluZCggJy5uYXYtdGFiL
WFjdGl2ZScgKS5yZW1vdmVDbGFzcyggJ25hdi10YWItYWN0aXZlJyApOwoJCWpRdWVyeSh0aGlzKS5hZGRD
bGFzcyggJ25hdi10YWItYWN0aXZlJyApOwoJCQoJCS8vIFNob3cgdGhlIGNvcnJlY3QgdGFiIGJsb2NrLgo
JCS8vdGFyZ2V0RGl2SUQgPSBqUXVlcnkodGhpcykuYXR0ciggJ2hyZWYnICkuc3Vic3RyaW5nKDEpOwoJCX
RoaXNUYWJCbG9jay5maW5kKCBqUXVlcnkodGhpcykuYXR0ciggJ2hyZWYnICkgKS5zaG93KCk7Cgl9KTsKC
QoJLy8gQ2hhbmdlIHRhYiBvbiBjbGljayAtLSBBSkFYIHZlcnNpb24uCglqUXVlcnkoICcuYmFja3VwYnVk
ZHktdGFicy13cmFwIC5uYXYtdGFiW2hyZWZePSJqYXZhc2NyaXB0Il0nICkuY2xpY2soIGZ1bmN0aW9uKGU
peyAvKiBpZ25vcmVzIGFueSBub24gaGFzaHRhZyBsaW5rcyBzaW5jZSB0aGV5IGdvIGRpcmVjdCB0byBhIF
VSTC4uLiAqLwoJCS8vIEhpZGUgYWxsIHRhYiBibG9ja3MuCgkJdGhpc1RhYkJsb2NrID0galF1ZXJ5KHRoa
XMpLmNsb3Nlc3QoICcuYmFja3VwYnVkZHktdGFicy13cmFwJyApOwoJCXRoaXNUYWJCbG9jay5maW5kKCAn
LmJhY2t1cGJ1ZGR5LXRhYicgKS5oaWRlKCk7CgkJCgkJLy8gVXBkYXRlIHNlbGVjdGVkIHRhYi4KCQl0aGl
zVGFiQmxvY2suZmluZCggJy5uYXYtdGFiLWFjdGl2ZScgKS5yZW1vdmVDbGFzcyggJ25hdi10YWItYWN0aX
ZlJyApOwoJCWpRdWVyeSh0aGlzKS5hZGRDbGFzcyggJ25hdi10YWItYWN0aXZlJyApOwoJCQoJCS8vIFNob
3cgdGhlIGNvcnJlY3QgdGFiIGJsb2NrLgoJCS8vdGFyZ2V0RGl2SUQgPSBqUXVlcnkodGhpcykuYXR0cigg
J2hyZWYnICkuc3Vic3RyaW5nKDEpOwoJCXRoaXNUYWJCbG9jay5maW5kKCBqUXVlcnkodGhpcykuYXR0cig
gJ2RhdGEtYWpheCcgKSApLnNob3coKTsKCX0pOwoJCgkvLyBBdXRvLWRpc3BsYXkgdGhlIGNvcnJlY3QgdG
FiIG9uIGxvYWQgaWYgc3BlY2lmeWluZyBhIG5vbi1kZWZhdWx0LgoJalF1ZXJ5KCAnLm5hdi10YWItYWN0a
XZlJyApLmVhY2goIGZ1bmN0aW9uKCl7CgkJalF1ZXJ5KHRoaXMpLmNsaWNrKCk7Cgl9KTsKfSk7
###PACKDATA,FILE_END,/pluginbuddy/js/pb_tabs.js,importbuddy/pluginbuddy/js/pb_tabs.
js
###PACKDATA,FILE_START,/pluginbuddy/js/tablednd.js,importbuddy/pluginbuddy/js/table
dnd.js
LyoqCiAqIFRhYmxlRG5EIHBsdWctaW4gZm9yIEpRdWVyeSwgYWxsb3dzIHlvdSB0byBkcmFnIGFuZCBkcm9
wIHRhYmxlIHJvd3MKICogWW91IGNhbiBzZXQgdXAgdmFyaW91cyBvcHRpb25zIHRvIGNvbnRyb2wgaG93IH
RoZSBzeXN0ZW0gd2lsbCB3b3JrCiAqIENvcHlyaWdodCAoYykgRGVuaXMgSG93bGV0dCA8ZGVuaXNoQGlzb
2NyYS5jb20+CiAqIExpY2Vuc2VkIGxpa2UgalF1ZXJ5LCBzZWUgaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9M
aWNlbnNlLgogKi8KalF1ZXJ5LnRhYmxlRG5EID0gewogICAgLyoqIEtlZXAgaG9sZCBvZiB0aGUgY3VycmV
udCB0YWJsZSBiZWluZyBkcmFnZ2VkICovCiAgICBjdXJyZW50VGFibGUgOiBudWxsLAogICAgLyoqIEtlZX
AgaG9sZCBvZiB0aGUgY3VycmVudCBkcmFnIG9iamVjdCBpZiBhbnkgKi8KICAgIGRyYWdPYmplY3Q6IG51b
GwsCiAgICAvKiogVGhlIGN1cnJlbnQgbW91c2Ugb2Zmc2V0ICovCiAgICBtb3VzZU9mZnNldDogbnVsbCwK
ICAgIC8qKiBSZW1lbWJlciB0aGUgb2xkIHZhbHVlIG9mIFkgc28gdGhhdCB3ZSBkb24ndCBkbyB0b28gbXV
jaCBwcm9jZXNzaW5nICovCiAgICBvbGRZOiAwLAoKICAgIC8qKiBBY3R1YWxseSBidWlsZCB0aGUgc3RydW
N0dXJlICovCiAgICBidWlsZDogZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIC8vIFNldCB1cCB0aGUgZ
GVmYXVsdHMgaWYgYW55CgogICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgLy8g
VGhpcyBpcyBib3VuZCB0byBlYWNoIG1hdGNoaW5nIHRhYmxlLCBzZXQgdXAgdGhlIGRlZmF1bHRzIGFuZCB
vdmVycmlkZSB3aXRoIHVzZXIgb3B0aW9ucwogICAgICAgICAgICB0aGlzLnRhYmxlRG5EQ29uZmlnID0gal
F1ZXJ5LmV4dGVuZCh7CiAgICAgICAgICAgICAgICBvbkRyYWdTdHlsZTogbnVsbCwKICAgICAgICAgICAgI
CAgIG9uRHJvcFN0eWxlOiBudWxsLAoJCQkJLy8gQWRkIGluIHRoZSBkZWZhdWx0IGNsYXNzIGZvciB3aGls
ZURyYWdnaW5nCgkJCQlvbkRyYWdDbGFzczogInREbkRfd2hpbGVEcmFnIiwKICAgICAgICAgICAgICAgIG9
uRHJvcDogbnVsbCwKICAgICAgICAgICAgICAgIG9uRHJhZ1N0YXJ0OiBudWxsLAogICAgICAgICAgICAgIC
Agc2Nyb2xsQW1vdW50OiA1LAoJCQkJc2VyaWFsaXplUmVnZXhwOiAvW15cLV0qJC8sIC8vIFRoZSByZWd1b
GFyIGV4cHJlc3Npb24gdG8gdXNlIHRvIHRyaW0gcm93IElEcwoJCQkJc2VyaWFsaXplUGFyYW1OYW1lOiBu
dWxsLCAvLyBJZiB5b3Ugd2FudCB0byBzcGVjaWZ5IGFub3RoZXIgcGFyYW1ldGVyIG5hbWUgaW5zdGVhZCB
vZiB0aGUgdGFibGUgSUQKICAgICAgICAgICAgICAgIGRyYWdIYW5kbGU6IG51bGwgLy8gSWYgeW91IGdpdm
UgdGhlIG5hbWUgb2YgYSBjbGFzcyBoZXJlLCB0aGVuIG9ubHkgQ2VsbHMgd2l0aCB0aGlzIGNsYXNzIHdpb
GwgYmUgZHJhZ2dhYmxlCiAgICAgICAgICAgIH0sIG9wdGlvbnMgfHwge30pOwogICAgICAgICAgICAvLyBO
b3cgbWFrZSB0aGUgcm93cyBkcmFnZ2FibGUKICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELm1ha2VEcmF
nZ2FibGUodGhpcyk7CiAgICAgICAgfSk7CgogICAgICAgIC8vIE5vdyB3ZSBuZWVkIHRvIGNhcHR1cmUgdG
hlIG1vdXNlIHVwIGFuZCBtb3VzZSBtb3ZlIGV2ZW50CiAgICAgICAgLy8gV2UgY2FuIHVzZSBiaW5kIHNvI
HRoYXQgd2UgZG9uJ3QgaW50ZXJmZXJlIHdpdGggb3RoZXIgZXZlbnQgaGFuZGxlcnMKICAgICAgICBqUXVl
cnkoZG9jdW1lbnQpCiAgICAgICAgICAgIC5iaW5kKCdtb3VzZW1vdmUnLCBqUXVlcnkudGFibGVEbkQubW9
1c2Vtb3ZlKQogICAgICAgICAgICAuYmluZCgnbW91c2V1cCcsIGpRdWVyeS50YWJsZURuRC5tb3VzZXVwKT
sKCiAgICAgICAgLy8gRG9uJ3QgYnJlYWsgdGhlIGNoYWluCiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9L
AoKICAgIC8qKiBUaGlzIGZ1bmN0aW9uIG1ha2VzIGFsbCB0aGUgcm93cyBvbiB0aGUgdGFibGUgZHJhZ2dh
YmxlIGFwYXJ0IGZyb20gdGhvc2UgbWFya2VkIGFzICJOb0RyYWciICovCiAgICBtYWtlRHJhZ2dhYmxlOiB
mdW5jdGlvbih0YWJsZSkgewogICAgICAgIHZhciBjb25maWcgPSB0YWJsZS50YWJsZURuRENvbmZpZzsKCQ
lpZiAodGFibGUudGFibGVEbkRDb25maWcuZHJhZ0hhbmRsZSkgewoJCQkvLyBXZSBvbmx5IG5lZWQgdG8gY
WRkIHRoZSBldmVudCB0byB0aGUgc3BlY2lmaWVkIGNlbGxzCgkJCXZhciBjZWxscyA9IGpRdWVyeSgidGQu
Iit0YWJsZS50YWJsZURuRENvbmZpZy5kcmFnSGFuZGxlLCB0YWJsZSk7CgkJCWNlbGxzLmVhY2goZnVuY3R
pb24oKSB7CgkJCQkvLyBUaGUgY2VsbCBpcyBib3VuZCB0byAidGhpcyIKICAgICAgICAgICAgICAgIGpRdW
VyeSh0aGlzKS5tb3VzZWRvd24oZnVuY3Rpb24oZXYpIHsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkud
GFibGVEbkQuZHJhZ09iamVjdCA9IHRoaXMucGFyZW50Tm9kZTsKICAgICAgICAgICAgICAgICAgICBqUXVl
cnkudGFibGVEbkQuY3VycmVudFRhYmxlID0gdGFibGU7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LnR
hYmxlRG5ELm1vdXNlT2Zmc2V0ID0galF1ZXJ5LnRhYmxlRG5ELmdldE1vdXNlT2Zmc2V0KHRoaXMsIGV2KT
sKICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnLm9uRHJhZ1N0YXJ0KSB7CiAgICAgICAgICAgICAgI
CAgICAgICAgIC8vIENhbGwgdGhlIG9uRHJvcCBtZXRob2QgaWYgdGhlcmUgaXMgb25lCiAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbmZpZy5vbkRyYWdTdGFydCh0YWJsZSwgdGhpcyk7CiAgICAgICAgICAgICAgICA
gICAgfQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0pOwoJCQ
l9KQoJCX0gZWxzZSB7CgkJCS8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgd2UgYWRkIHRoZSBld
mVudCB0byB0aGUgd2hvbGUgcm93CgkgICAgICAgIHZhciByb3dzID0galF1ZXJ5KCJ0ciIsIHRhYmxlKTsg
Ly8gZ2V0IGFsbCB0aGUgcm93cyBhcyBhIHdyYXBwZWQgc2V0CgkgICAgICAgIHJvd3MuZWFjaChmdW5jdGl
vbigpIHsKCQkJCS8vIEl0ZXJhdGUgdGhyb3VnaCBlYWNoIHJvdywgdGhlIHJvdyBpcyBib3VuZCB0byAidG
hpcyIKCQkJCXZhciByb3cgPSBqUXVlcnkodGhpcyk7CgkJCQlpZiAoISByb3cuaGFzQ2xhc3MoIm5vZHJhZ
yIpKSB7CgkgICAgICAgICAgICAgICAgcm93Lm1vdXNlZG93bihmdW5jdGlvbihldikgewoJICAgICAgICAg
ICAgICAgICAgICBpZiAoZXYudGFyZ2V0LnRhZ05hbWUgPT0gIlREIikgewoJICAgICAgICAgICAgICAgICA
gICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRyYWdPYmplY3QgPSB0aGlzOwoJICAgICAgICAgICAgICAgICAgIC
AgICAgalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSA9IHRhYmxlOwoJICAgICAgICAgICAgICAgICAgI
CAgICAgalF1ZXJ5LnRhYmxlRG5ELm1vdXNlT2Zmc2V0ID0galF1ZXJ5LnRhYmxlRG5ELmdldE1vdXNlT2Zm
c2V0KHRoaXMsIGV2KTsKCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcub25EcmFnU3RhcnQ
pIHsKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYWxsIHRoZSBvbkRyb3AgbWV0aG9kIGlmIH
RoZXJlIGlzIG9uZQoJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5vbkRyYWdTdGFydCh0Y
WJsZSwgdGhpcyk7CgkgICAgICAgICAgICAgICAgICAgICAgICB9CgkgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CgkgICAgICAgICAgICAgICAgICAgIH0KCSAgICAgICAgICAgICAgICB9KS5jc3M
oImN1cnNvciIsICJtb3ZlIik7IC8vIFN0b3JlIHRoZSB0YWJsZURuRCBvYmplY3QKCQkJCX0KCQkJfSk7Cg
kJfQoJfSwKCgl1cGRhdGVUYWJsZXM6IGZ1bmN0aW9uKCkgewoJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsKC
QkJLy8gdGhpcyBpcyBub3cgYm91bmQgdG8gZWFjaCBtYXRjaGluZyB0YWJsZQoJCQlpZiAodGhpcy50YWJs
ZURuRENvbmZpZykgewoJCQkJalF1ZXJ5LnRhYmxlRG5ELm1ha2VEcmFnZ2FibGUodGhpcyk7CgkJCX0KCQl
9KQoJfSwKCiAgICAvKiogR2V0IHRoZSBtb3VzZSBjb29yZGluYXRlcyBmcm9tIHRoZSBldmVudCAoYWxsb3
dpbmcgZm9yIGJyb3dzZXIgZGlmZmVyZW5jZXMpICovCiAgICBtb3VzZUNvb3JkczogZnVuY3Rpb24oZXYpe
wogICAgICAgIGlmKGV2LnBhZ2VYIHx8IGV2LnBhZ2VZKXsKICAgICAgICAgICAgcmV0dXJuIHt4OmV2LnBh
Z2VYLCB5OmV2LnBhZ2VZfTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgeDpldi5
jbGllbnRYICsgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0IC0gZG9jdW1lbnQuYm9keS5jbGllbnRMZWZ0LA
ogICAgICAgICAgICB5OmV2LmNsaWVudFkgKyBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCAgLSBkb2N1bWVud
C5ib2R5LmNsaWVudFRvcAogICAgICAgIH07CiAgICB9LAoKICAgIC8qKiBHaXZlbiBhIHRhcmdldCBlbGVt
ZW50IGFuZCBhIG1vdXNlIGV2ZW50LCBnZXQgdGhlIG1vdXNlIG9mZnNldCBmcm9tIHRoYXQgZWxlbWVudC4
KICAgICAgICBUbyBkbyB0aGlzIHdlIG5lZWQgdGhlIGVsZW1lbnQncyBwb3NpdGlvbiBhbmQgdGhlIG1vdX
NlIHBvc2l0aW9uICovCiAgICBnZXRNb3VzZU9mZnNldDogZnVuY3Rpb24odGFyZ2V0LCBldikgewogICAgI
CAgIGV2ID0gZXYgfHwgd2luZG93LmV2ZW50OwoKICAgICAgICB2YXIgZG9jUG9zICAgID0gdGhpcy5nZXRQ
b3NpdGlvbih0YXJnZXQpOwogICAgICAgIHZhciBtb3VzZVBvcyAgPSB0aGlzLm1vdXNlQ29vcmRzKGV2KTs
KICAgICAgICByZXR1cm4ge3g6bW91c2VQb3MueCAtIGRvY1Bvcy54LCB5Om1vdXNlUG9zLnkgLSBkb2NQb3
MueX07CiAgICB9LAoKICAgIC8qKiBHZXQgdGhlIHBvc2l0aW9uIG9mIGFuIGVsZW1lbnQgYnkgZ29pbmcgd
XAgdGhlIERPTSB0cmVlIGFuZCBhZGRpbmcgdXAgYWxsIHRoZSBvZmZzZXRzICovCiAgICBnZXRQb3NpdGlv
bjogZnVuY3Rpb24oZSl7CiAgICAgICAgdmFyIGxlZnQgPSAwOwogICAgICAgIHZhciB0b3AgID0gMDsKICA
gICAgICAvKiogU2FmYXJpIGZpeCAtLSB0aGFua3MgdG8gTHVpcyBDaGF0byBmb3IgdGhpcyEgKi8KICAgIC
AgICBpZiAoZS5vZmZzZXRIZWlnaHQgPT0gMCkgewogICAgICAgICAgICAvKiogU2FmYXJpIDIgZG9lc24nd
CBjb3JyZWN0bHkgZ3JhYiB0aGUgb2Zmc2V0VG9wIG9mIGEgdGFibGUgcm93CiAgICAgICAgICAgIHRoaXMg
aXMgZGV0YWlsZWQgaGVyZToKICAgICAgICAgICAgaHR0cDovL2phY29iLnBlYXJncm92ZS5jb20vYmxvZy8
yMDA2L3RlY2huaWNhbC90YWJsZS1yb3ctb2Zmc2V0dG9wLWJ1Zy1pbi1zYWZhcmkvCiAgICAgICAgICAgIH
RoZSBzb2x1dGlvbiBpcyBsaWtld2lzZSBub3RlZCB0aGVyZSwgZ3JhYiB0aGUgb2Zmc2V0IG9mIGEgdGFib
GUgY2VsbCBpbiB0aGUgcm93IC0gdGhlIGZpcnN0Q2hpbGQuCiAgICAgICAgICAgIG5vdGUgdGhhdCBmaXJl
Zm94IHdpbGwgcmV0dXJuIGEgdGV4dCBub2RlIGFzIGEgZmlyc3QgY2hpbGQsIHNvIGRlc2lnbmluZyBhIG1
vcmUgdGhvcm91Z2gKICAgICAgICAgICAgc29sdXRpb24gbWF5IG5lZWQgdG8gdGFrZSB0aGF0IGludG8gYW
Njb3VudCwgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIHdvcmsgaW4gZmlyZWZveCwgc2FmYXJpLCBpZSAqLwogI
CAgICAgICAgICBlID0gZS5maXJzdENoaWxkOyAvLyBhIHRhYmxlIGNlbGwKICAgICAgICB9CgogICAgICAg
IHdoaWxlIChlLm9mZnNldFBhcmVudCl7CiAgICAgICAgICAgIGxlZnQgKz0gZS5vZmZzZXRMZWZ0OwogICA
gICAgICAgICB0b3AgICs9IGUub2Zmc2V0VG9wOwogICAgICAgICAgICBlICAgICA9IGUub2Zmc2V0UGFyZW
50OwogICAgICAgIH0KCiAgICAgICAgbGVmdCArPSBlLm9mZnNldExlZnQ7CiAgICAgICAgdG9wICArPSBlL
m9mZnNldFRvcDsKCiAgICAgICAgcmV0dXJuIHt4OmxlZnQsIHk6dG9wfTsKICAgIH0sCgogICAgbW91c2Vt
b3ZlOiBmdW5jdGlvbihldikgewogICAgICAgIGlmIChqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCA9PSB
udWxsKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHZhciBkcmFnT2JqID0gal
F1ZXJ5KGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0KTsKICAgICAgICB2YXIgY29uZmlnID0galF1ZXJ5L
nRhYmxlRG5ELmN1cnJlbnRUYWJsZS50YWJsZURuRENvbmZpZzsKICAgICAgICB2YXIgbW91c2VQb3MgPSBq
UXVlcnkudGFibGVEbkQubW91c2VDb29yZHMoZXYpOwogICAgICAgIHZhciB5ID0gbW91c2VQb3MueSAtIGp
RdWVyeS50YWJsZURuRC5tb3VzZU9mZnNldC55OwogICAgICAgIC8vYXV0byBzY3JvbGwgdGhlIHdpbmRvdw
oJICAgIHZhciB5T2Zmc2V0ID0gd2luZG93LnBhZ2VZT2Zmc2V0OwoJIAlpZiAoZG9jdW1lbnQuYWxsKSB7C
gkgICAgICAgIC8vIFdpbmRvd3MgdmVyc2lvbgoJICAgICAgICAvL3lPZmZzZXQ9ZG9jdW1lbnQuYm9keS5z
Y3JvbGxUb3A7CgkgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQuY29tcGF0TW9kZSAhPSAndW5kZWZpbmV
kJyAmJgoJICAgICAgICAgICAgIGRvY3VtZW50LmNvbXBhdE1vZGUgIT0gJ0JhY2tDb21wYXQnKSB7CgkgIC
AgICAgICAgIHlPZmZzZXQgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOwoJICAgICAgI
CB9CgkgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBkb2N1bWVudC5ib2R5ICE9ICd1bmRlZmluZWQnKSB7Cgkg
ICAgICAgICAgIHlPZmZzZXQ9ZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7CgkgICAgICAgIH0KCgkgICAgfQo
JCSAgICAKCQlpZiAobW91c2VQb3MueS15T2Zmc2V0IDwgY29uZmlnLnNjcm9sbEFtb3VudCkgewoJICAgIA
l3aW5kb3cuc2Nyb2xsQnkoMCwgLWNvbmZpZy5zY3JvbGxBbW91bnQpOwoJICAgIH0gZWxzZSB7CiAgICAgI
CAgICAgIHZhciB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgPyB3aW5kb3cuaW5uZXJIZWln
aHQKICAgICAgICAgICAgICAgICAgICA6IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ
gPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IDogZG9jdW1lbnQuYm9keS5jbGllbn
RIZWlnaHQ7CiAgICAgICAgICAgIGlmICh3aW5kb3dIZWlnaHQtKG1vdXNlUG9zLnkteU9mZnNldCkgPCBjb
25maWcuc2Nyb2xsQW1vdW50KSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuc2Nyb2xsQnkoMCwgY29uZmln
LnNjcm9sbEFtb3VudCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgoKICAgICAgICBpZiAoeSAhPSBqUXV
lcnkudGFibGVEbkQub2xkWSkgewogICAgICAgICAgICAvLyB3b3JrIG91dCBpZiB3ZSdyZSBnb2luZyB1cC
BvciBkb3duLi4uCiAgICAgICAgICAgIHZhciBtb3ZpbmdEb3duID0geSA+IGpRdWVyeS50YWJsZURuRC5vb
GRZOwogICAgICAgICAgICAvLyB1cGRhdGUgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICBqUXVlcnkudGFi
bGVEbkQub2xkWSA9IHk7CiAgICAgICAgICAgIC8
vIHVwZGF0ZSB0aGUgc3R5bGUgdG8gc2hvdyB3ZSdyZSBkcmFnZ2luZwoJCQlpZiAoY29uZmlnLm9uRHJhZ0
NsYXNzKSB7CgkJCQlkcmFnT2JqLmFkZENsYXNzKGNvbmZpZy5vbkRyYWdDbGFzcyk7CgkJCX0gZWxzZSB7C
gkgICAgICAgICAgICBkcmFnT2JqLmNzcyhjb25maWcub25EcmFnU3R5bGUpOwoJCQl9CiAgICAgICAgICAg
IC8vIElmIHdlJ3JlIG92ZXIgYSByb3cgdGhlbiBtb3ZlIHRoZSBkcmFnZ2VkIHJvdyB0byB0aGVyZSBzbyB
0aGF0IHRoZSB1c2VyIHNlZXMgdGhlCiAgICAgICAgICAgIC8vIGVmZmVjdCBkeW5hbWljYWxseQogICAgIC
AgICAgICB2YXIgY3VycmVudFJvdyA9IGpRdWVyeS50YWJsZURuRC5maW5kRHJvcFRhcmdldFJvdyhkcmFnT
2JqLCB5KTsKICAgICAgICAgICAgaWYgKGN1cnJlbnRSb3cpIHsKICAgICAgICAgICAgICAgIC8vIFRPRE8g
d29ycnkgYWJvdXQgd2hhdCBoYXBwZW5zIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIFRCT0RJRVMKICAgICA
gICAgICAgICAgIGlmIChtb3ZpbmdEb3duICYmIGpRdWVyeS50YWJsZURuRC5kcmFnT2JqZWN0ICE9IGN1cn
JlbnRSb3cpIHsKICAgICAgICAgICAgICAgICAgICBqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdC5wYXJlb
nROb2RlLmluc2VydEJlZm9yZShqUXVlcnkudGFibGVEbkQuZHJhZ09iamVjdCwgY3VycmVudFJvdy5uZXh0
U2libGluZyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCEgbW92aW5nRG93biAmJiBqUXVlcnkudGF
ibGVEbkQuZHJhZ09iamVjdCAhPSBjdXJyZW50Um93KSB7CiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5Ln
RhYmxlRG5ELmRyYWdPYmplY3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoalF1ZXJ5LnRhYmxlRG5ELmRyY
WdPYmplY3QsIGN1cnJlbnRSb3cpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
fQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9LAoKICAgIC8qKiBXZSdyZSBvbmx5IHdvcnJpZWQgYWJ
vdXQgdGhlIHkgcG9zaXRpb24gcmVhbGx5LCBiZWNhdXNlIHdlIGNhbiBvbmx5IG1vdmUgcm93cyB1cCBhbm
QgZG93biAqLwogICAgZmluZERyb3BUYXJnZXRSb3c6IGZ1bmN0aW9uKGRyYWdnZWRSb3csIHkpIHsKICAgI
CAgICB2YXIgcm93cyA9IGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUucm93czsKICAgICAgICBmb3Ig
KHZhciBpPTA7IGk8cm93cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB2YXIgcm93ID0gcm93c1tpXTs
KICAgICAgICAgICAgdmFyIHJvd1kgICAgPSB0aGlzLmdldFBvc2l0aW9uKHJvdykueTsKICAgICAgICAgIC
AgdmFyIHJvd0hlaWdodCA9IHBhcnNlSW50KHJvdy5vZmZzZXRIZWlnaHQpLzI7CiAgICAgICAgICAgIGlmI
Chyb3cub2Zmc2V0SGVpZ2h0ID09IDApIHsKICAgICAgICAgICAgICAgIHJvd1kgPSB0aGlzLmdldFBvc2l0
aW9uKHJvdy5maXJzdENoaWxkKS55OwogICAgICAgICAgICAgICAgcm93SGVpZ2h0ID0gcGFyc2VJbnQocm9
3LmZpcnN0Q2hpbGQub2Zmc2V0SGVpZ2h0KS8yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEJlY2
F1c2Ugd2UgYWx3YXlzIGhhdmUgdG8gaW5zZXJ0IGJlZm9yZSwgd2UgbmVlZCB0byBvZmZzZXQgdGhlIGhla
WdodCBhIGJpdAogICAgICAgICAgICBpZiAoKHkgPiByb3dZIC0gcm93SGVpZ2h0KSAmJiAoeSA8IChyb3dZ
ICsgcm93SGVpZ2h0KSkpIHsKICAgICAgICAgICAgICAgIC8vIHRoYXQncyB0aGUgcm93IHdlJ3JlIG92ZXI
KCQkJCS8vIElmIGl0J3MgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgcm93LCBpZ25vcmUgaXQKCQkJCWlmIC
hyb3cgPT0gZHJhZ2dlZFJvdykge3JldHVybiBudWxsO30KICAgICAgICAgICAgICAgIHZhciBjb25maWcgP
SBqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlLnRhYmxlRG5EQ29uZmlnOwogICAgICAgICAgICAgICAg
aWYgKGNvbmZpZy5vbkFsbG93RHJvcCkgewogICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcub25BbGx
vd0Ryb3AoZHJhZ2dlZFJvdywgcm93KSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm93Ow
ogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBud
WxsOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZSB7CgkJCQkJLy8gSWYg
YSByb3cgaGFzIG5vZHJvcCBjbGFzcywgdGhlbiBkb24ndCBhbGxvdyBkcm9wcGluZyAoaW5zcGlyZWQgYnk
gSm9obiBUYXJyIGFuZCBGYW1pYykKICAgICAgICAgICAgICAgICAgICB2YXIgbm9kcm9wID0galF1ZXJ5KH
JvdykuaGFzQ2xhc3MoIm5vZHJvcCIpOwogICAgICAgICAgICAgICAgICAgIGlmICghIG5vZHJvcCkgewogI
CAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcm93OwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KICA
gICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiByb3c7CiAgICAgICAgICAgIH0KICAgIC
AgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9LAoKICAgIG1vdXNldXA6IGZ1bmN0aW9uKGUpIHsKI
CAgICAgICBpZiAoalF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZSAmJiBqUXVlcnkudGFibGVEbkQuZHJh
Z09iamVjdCkgewogICAgICAgICAgICB2YXIgZHJvcHBlZFJvdyA9IGpRdWVyeS50YWJsZURuRC5kcmFnT2J
qZWN0OwogICAgICAgICAgICB2YXIgY29uZmlnID0galF1ZXJ5LnRhYmxlRG5ELmN1cnJlbnRUYWJsZS50YW
JsZURuRENvbmZpZzsKICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIGRyYWdPYmplY3QsIHRoZW4gd2Ugb
mVlZCB0byByZWxlYXNlIGl0LAogICAgICAgICAgICAvLyBUaGUgcm93IHdpbGwgYWxyZWFkeSBoYXZlIGJl
ZW4gbW92ZWQgdG8gdGhlIHJpZ2h0IHBsYWNlIHNvIHdlIGp1c3QgcmVzZXQgc3R1ZmYKCQkJaWYgKGNvbmZ
pZy5vbkRyYWdDbGFzcykgewoJICAgICAgICAgICAgalF1ZXJ5KGRyb3BwZWRSb3cpLnJlbW92ZUNsYXNzKG
NvbmZpZy5vbkRyYWdDbGFzcyk7CgkJCX0gZWxzZSB7CgkgICAgICAgICAgICBqUXVlcnkoZHJvcHBlZFJvd
ykuY3NzKGNvbmZpZy5vbkRyb3BTdHlsZSk7CgkJCX0KICAgICAgICAgICAgalF1ZXJ5LnRhYmxlRG5ELmRy
YWdPYmplY3QgICA9IG51bGw7CiAgICAgICAgICAgIGlmIChjb25maWcub25Ecm9wKSB7CiAgICAgICAgICA
gICAgICAvLyBDYWxsIHRoZSBvbkRyb3AgbWV0aG9kIGlmIHRoZXJlIGlzIG9uZQogICAgICAgICAgICAgIC
AgY29uZmlnLm9uRHJvcChqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlLCBkcm9wcGVkUm93KTsKICAgI
CAgICAgICAgfQogICAgICAgICAgICBqUXVlcnkudGFibGVEbkQuY3VycmVudFRhYmxlID0gbnVsbDsgLy8g
bGV0IGdvIG9mIHRoZSB0YWJsZSB0b28KICAgICAgICB9CiAgICB9LAoKICAgIHNlcmlhbGl6ZTogZnVuY3R
pb24oKSB7CiAgICAgICAgaWYgKGpRdWVyeS50YWJsZURuRC5jdXJyZW50VGFibGUpIHsKICAgICAgICAgIC
AgcmV0dXJuIGpRdWVyeS50YWJsZURuRC5zZXJpYWxpemVUYWJsZShqUXVlcnkudGFibGVEbkQuY3VycmVud
FRhYmxlKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gIkVycm9yOiBObyBUYWJsZSBp
ZCBzZXQsIHlvdSBuZWVkIHRvIHNldCBhbiBpZCBvbiB5b3VyIHRhYmxlIGFuZCBldmVyeSByb3ciOwogICA
gICAgIH0KICAgIH0sCgoJc2VyaWFsaXplVGFibGU6IGZ1bmN0aW9uKHRhYmxlKSB7CiAgICAgICAgdmFyIH
Jlc3VsdCA9ICIiOwogICAgICAgIHZhciB0YWJsZUlkID0gdGFibGUuaWQ7CiAgICAgICAgdmFyIHJvd3MgP
SB0YWJsZS5yb3dzOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxyb3dzLmxlbmd0aDsgaSsrKSB7CiAgICAg
ICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCkgcmVzdWx0ICs9ICImIjsKICAgICAgICAgICAgdmFyIHJ
vd0lkID0gcm93c1tpXS5pZDsKICAgICAgICAgICAgaWYgKHJvd0lkICYmIHJvd0lkICYmIHRhYmxlLnRhYm
xlRG5EQ29uZmlnICYmIHRhYmxlLnRhYmxlRG5EQ29uZmlnLnNlcmlhbGl6ZVJlZ2V4cCkgewogICAgICAgI
CAgICAgICAgcm93SWQgPSByb3dJZC5tYXRjaCh0YWJsZS50YWJsZURuRENvbmZpZy5zZXJpYWxpemVSZWdl
eHApWzBdOwogICAgICAgICAgICB9CgogICAgICAgICAgICByZXN1bHQgKz0gdGFibGVJZCArICdbXT0nICs
gcm93SWQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7Cgl9LAoKCXNlcmlhbGl6ZVRhYmxlcz
ogZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHJlc3VsdCA9ICIiOwogICAgICAgIHRoaXMuZWFjaChmdW5jd
GlvbigpIHsKCQkJLy8gdGhpcyBpcyBub3cgYm91bmQgdG8gZWFjaCBtYXRjaGluZyB0YWJsZQoJCQlyZXN1
bHQgKz0galF1ZXJ5LnRhYmxlRG5ELnNlcmlhbGl6ZVRhYmxlKHRoaXMpOwoJCX0pOwogICAgICAgIHJldHV
ybiByZXN1bHQ7CiAgICB9Cgp9CgpqUXVlcnkuZm4uZXh0ZW5kKAoJewoJCXRhYmxlRG5EIDogalF1ZXJ5Ln
RhYmxlRG5ELmJ1aWxkLAoJCXRhYmxlRG5EVXBkYXRlIDogalF1ZXJ5LnRhYmxlRG5ELnVwZGF0ZVRhYmxlc
ywKCQl0YWJsZURuRFNlcmlhbGl6ZTogalF1ZXJ5LnRhYmxlRG5ELnNlcmlhbGl6ZVRhYmxlcwoJfQopOw==
###PACKDATA,FILE_END,/pluginbuddy/js/tablednd.js,importbuddy/pluginbuddy/js/tabledn
d.js
###PACKDATA,FILE_START,/pluginbuddy/js/tooltip.js,importbuddy/pluginbuddy/js/toolti
p.js
LyoKICogalF1ZXJ5IFRvb2x0aXAgcGx1Z2luIDEuMwogKgogKiBodHRwOi8vYmFzc2lzdGFuY2UuZGUvanF
1ZXJ5LXBsdWdpbnMvanF1ZXJ5LXBsdWdpbi10b29sdGlwLwogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1
BsdWdpbnMvVG9vbHRpcAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDA4IErDtnJuIFphZWZmZXJlc
gogKgogKiAkSWQ6IGpxdWVyeS50b29sdGlwLmpzIDU3NDEgMjAwOC0wNi0yMSAxNToyMjoxNlogam9lcm4u
emFlZmZlcmVyICQKICogCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2V
zOgogKiAgIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqIC
AgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sCiAqLwogCiAKIAogCiBpZiAoICd1bmRlZ
mluZWQnID09IHR5cGVvZiBqUXVlcnkuYnJvd3NlciApIHsKCWpRdWVyeS5icm93c2VyPXt9OyhmdW5jdGlv
bigpe2pRdWVyeS5icm93c2VyLm1zaWU9ZmFsc2U7CglqUXVlcnkuYnJvd3Nlci52ZXJzaW9uPTA7aWYobmF
2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvTVNJRSAoWzAtOV0rKVwuLykpewoJalF1ZXJ5LmJyb3dzZXIubX
NpZT10cnVlO2pRdWVyeS5icm93c2VyLnZlcnNpb249UmVnRXhwLiQxO319KSgpOwp9CiAKIDsoZnVuY3Rpb
24oJCl7dmFyIGhlbHBlcj17fSxjdXJyZW50LHRpdGxlLHRJRCxJRT0kLmJyb3dzZXIubXNpZSYmL01TSUVc
cyg1XC41fDZcLikvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksdHJhY2s9ZmFsc2U7JC50b29sdGlwPXt
ibG9ja2VkOmZhbHNlLGRlZmF1bHRzOntkZWxheToyMDAsZmFkZTpmYWxzZSxzaG93VVJMOnRydWUsZXh0cm
FDbGFzczoiIix0b3A6MTUsbGVmdDoxNSxpZDoidG9vbHRpcCJ9LGJsb2NrOmZ1bmN0aW9uKCl7JC50b29sd
GlwLmJsb2NrZWQ9ISQudG9vbHRpcC5ibG9ja2VkO319OyQuZm4uZXh0ZW5kKHt0b29sdGlwOmZ1bmN0aW9u
KHNldHRpbmdzKXtzZXR0aW5ncz0kLmV4dGVuZCh7fSwkLnRvb2x0aXAuZGVmYXVsdHMsc2V0dGluZ3MpO2N
yZWF0ZUhlbHBlcihzZXR0aW5ncyk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpeyQuZGF0YSh0aGlzLC
J0b29sdGlwIixzZXR0aW5ncyk7dGhpcy50T3BhY2l0eT1oZWxwZXIucGFyZW50LmNzcygib3BhY2l0eSIpO
3RoaXMudG9vbHRpcFRleHQ9dGhpcy50aXRsZTskKHRoaXMpLnJlbW92ZUF0dHIoInRpdGxlIik7dGhpcy5h
bHQ9IiI7fSkubW91c2VvdmVyKHNhdmUpLm1vdXNlb3V0KGhpZGUpLmNsaWNrKGhpZGUpO30sZml4UE5HOkl
FP2Z1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBpbWFnZT0kKHRoaXMpLmNzcy
gnYmFja2dyb3VuZEltYWdlJyk7aWYoaW1hZ2UubWF0Y2goL151cmxcKFsiJ10/KC4qXC5wbmcpWyInXT9cK
SQvaSkpe2ltYWdlPVJlZ0V4cC4kMTskKHRoaXMpLmNzcyh7J2JhY2tncm91bmRJbWFnZSc6J25vbmUnLCdm
aWx0ZXInOiJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihlbmF
ibGVkPXRydWUsIHNpemluZ01ldGhvZD1jcm9wLCBzcmM9JyIraW1hZ2UrIicpIn0pLmVhY2goZnVuY3Rpb2
4oKXt2YXIgcG9zaXRpb249JCh0aGlzKS5jc3MoJ3Bvc2l0aW9uJyk7aWYocG9zaXRpb24hPSdhYnNvbHV0Z
ScmJnBvc2l0aW9uIT0ncmVsYXRpdmUnKSQodGhpcykuY3NzKCdwb3NpdGlvbicsJ3JlbGF0aXZlJyk7fSk7
fX0pO306ZnVuY3Rpb24oKXtyZXR1cm4gdGhpczt9LHVuZml4UE5HOklFP2Z1bmN0aW9uKCl7cmV0dXJuIHR
oaXMuZWFjaChmdW5jdGlvbigpeyQodGhpcykuY3NzKHsnZmlsdGVyJzonJyxiYWNrZ3JvdW5kSW1hZ2U6Jy
d9KTt9KTt9OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXM7fSxoaWRlV2hlbkVtcHR5OmZ1bmN0aW9uKCl7cmV0d
XJuIHRoaXMuZWFjaChmdW5jdGlvbigpeyQodGhpcylbJCh0aGlzKS5odG1sKCk/InNob3ciOiJoaWRlIl0o
KTt9KTt9LHVybDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmF0dHIoJ2hyZWYnKXx8dGhpcy5hdHRyKCdzcmM
nKTt9fSk7ZnVuY3Rpb24gY3JlYXRlSGVscGVyKHNldHRpbmdzKXtpZihoZWxwZXIucGFyZW50KXJldHVybj
toZWxwZXIucGFyZW50PSQoJzxkaXYgaWQ9Iicrc2V0dGluZ3MuaWQrJyI+PGgzPjwvaDM+PGRpdiBjbGFzc
z0iYm9keSI+PC9kaXY+PGRpdiBjbGFzcz0idXJsIj48L2Rpdj48L2Rpdj4nKS5hcHBlbmRUbyhkb2N1bWVu
dC5ib2R5KS5oaWRlKCk7aWYoJC5mbi5iZ2lmcmFtZSloZWxwZXIucGFyZW50LmJnaWZyYW1lKCk7aGVscGV
yLnRpdGxlPSQoJ2gzJyxoZWxwZXIucGFyZW50KTtoZWxwZXIuYm9keT0kKCdkaXYuYm9keScsaGVscGVyLn
BhcmVudCk7aGVscGVyLnVybD0kKCdkaXYudXJsJyxoZWxwZXIucGFyZW50KTt9ZnVuY3Rpb24gc2V0dGluZ
3MoZWxlbWVudCl7cmV0dXJuICQuZGF0YShlbGVtZW50LCJ0b29sdGlwIik7fWZ1bmN0aW9uIGhhbmRsZShl
dmVudCl7aWYoc2V0dGluZ3ModGhpcykuZGVsYXkpdElEPXNldFRpbWVvdXQoc2hvdyxzZXR0aW5ncyh0aGl
zKS5kZWxheSk7ZWxzZQpzaG93KCk7dHJhY2s9ISFzZXR0aW5ncyh0aGlzKS50cmFjazskKGRvY3VtZW50Lm
JvZHkpLmJpbmQoJ21vdXNlbW92ZScsdXBkYXRlKTt1cGRhdGUoZXZlbnQpO31mdW5jdGlvbiBzYXZlKCl7a
WYoJC50b29sdGlwLmJsb2NrZWR8fHRoaXM9PWN1cnJlbnR8fCghdGhpcy50b29sdGlwVGV4dCYmIXNldHRp
bmdzKHRoaXMpLmJvZHlIYW5kbGVyKSlyZXR1cm47Y3VycmVudD10aGlzO3RpdGxlPXRoaXMudG9vbHRpcFR
leHQ7aWYoc2V0dGluZ3ModGhpcykuYm9keUhhbmRsZXIpe2hlbHBlci50aXRsZS5oaWRlKCk7dmFyIGJvZH
lDb250ZW50PXNldHRpbmdzKHRoaXMpLmJvZHlIYW5kbGVyLmNhbGwodGhpcyk7aWYoYm9keUNvbnRlbnQub
m9kZVR5cGV8fGJvZHlDb250ZW50LmpxdWVyeSl7aGVscGVyLmJvZHkuZW1wdHkoKS5hcHBlbmQoYm9keUNv
bnRlbnQpfWVsc2V7aGVscGVyLmJvZHkuaHRtbChib2R5Q29udGVudCk7fWhlbHBlci5ib2R5LnNob3coKTt
9ZWxzZSBpZihzZXR0aW5ncyh0aGlzKS5zaG93Qm9keSl7dmFyIHBhcnRzPXRpdGxlLnNwbGl0KHNldHRpbm
dzKHRoaXMpLnNob3dCb2R5KTtoZWxwZXIudGl0bGUuaHRtbChwYXJ0cy5zaGlmdCgpKS5zaG93KCk7aGVsc
GVyLmJvZHkuZW1wdHkoKTtmb3IodmFyIGk9MCxwYXJ0OyhwYXJ0PXBhcnRzW2ldKTtpKyspe2lmKGk+MClo
ZWxwZXIuYm9keS5hcHBlbmQoIjxici8+Iik7aGVscGVyLmJvZHkuYXBwZW5kKHBhcnQpO31oZWxwZXIuYm9
keS5oaWRlV2hlbkVtcHR5KCk7fWVsc2V7aGVscGVyLnRpdGxlLmh0bWwodGl0bGUpLnNob3coKTtoZWxwZX
IuYm9keS5oaWRlKCk7fWlmKHNldHRpbmdzKHRoaXMpLnNob3dVUkwmJiQodGhpcykudXJsKCkpaGVscGVyL
nVybC5odG1sKCQodGhpcykudXJsKCkucmVwbGFjZSgnaHR0cDovLycsJycpKS5zaG93KCk7ZWxzZQpoZWxw
ZXIudXJsLmhpZGUoKTtoZWxwZXIucGFyZW50LmFkZENsYXNzKHNldHRpbmdzKHRoaXMpLmV4dHJhQ2xhc3M
pO2lmKHNldHRpbmdzKHRoaXMpLmZpeFBORyloZWxwZXIucGFyZW50LmZpeFBORygpO2hhbmRsZS5hcHBseS
h0aGlzLGFyZ3VtZW50cyk7fWZ1bmN0aW9uIHNob3coKXt0SUQ9bnVsbDtpZigoIUlFfHwhJC5mbi5iZ2lmc
mFtZSkmJnNldHRpbmdzKGN1cnJlbnQpLmZhZGUpe2lmKGhlbHBlci5wYXJlbnQuaXMoIjphbmltYXRlZCIp
KWhlbHBlci5wYXJlbnQuc3RvcCgpLnNob3coKS5mYWRlVG8oc2V0dGluZ3MoY3VycmVudCkuZmFkZSxjdXJ
yZW50LnRPcGFjaXR5KTtlbHNlCmhlbHBlci5wYXJlbnQuaXMoJzp2aXNpYmxlJyk/aGVscGVyLnBhcmVudC
5mYWRlVG8oc2V0dGluZ3MoY3VycmVudCkuZmFkZSxjdXJyZW50LnRPcGFjaXR5KTpoZWxwZXIucGFyZW50L
mZhZGVJbihzZXR0aW5ncyhjdXJyZW50KS5mYWRlKTt9ZWxzZXtoZWxwZXIucGFyZW50LnNob3coKTt9dXBk
YXRlKCk7fWZ1bmN0aW9uIHVwZGF0ZShldmVudCl7aWYoJC50b29sdGlwLmJsb2NrZWQpcmV0dXJuO2lmKGV
2ZW50JiZldmVudC50YXJnZXQudGFnTmFtZT09Ik9QVElPTiIpe3JldHVybjt9aWYoIXRyYWNrJiZoZWxwZX
IucGFyZW50LmlzKCI6dmlzaWJsZSIpKXskKGRvY3VtZW50LmJvZHkpLnVuYmluZCgnbW91c2Vtb3ZlJyx1c
GRhdGUpfWlmKGN1cnJlbnQ9PW51bGwpeyQoZG9jdW1lbnQuYm9keSkudW5iaW5kKCdtb3VzZW1vdmUnLHVw
ZGF0ZSk7cmV0dXJuO31oZWxwZXIucGFyZW50LnJlbW92ZUNsYXNzKCJ2aWV3cG9ydC1yaWdodCIpLnJlbW9
2ZUNsYXNzKCJ2aWV3cG9ydC1ib3R0b20iKTt2YXIgbGVmdD1oZWxwZXIucGFyZW50WzBdLm9mZnNldExlZn
Q7dmFyIHRvcD1oZWxwZXIucGFyZW50WzBdLm9mZnNldFRvcDtpZihldmVudCl7bGVmdD1ldmVudC5wYWdlW
CtzZXR0aW5ncyhjdXJyZW50KS5sZWZ0O3RvcD1ldmVudC5wYWdlWStzZXR0aW5ncyhjdXJyZW50KS50b3A7
dmFyIHJpZ2h0PSdhdXRvJztpZihzZXR0aW5ncyhjdXJyZW50KS5wb3NpdGlvbkxlZnQpe3JpZ2h0PSQod2l
uZG93KS53aWR0aCgpLWxlZnQ7bGVmdD0nYXV0byc7fWhlbHBlci5wYXJlbnQuY3NzKHtsZWZ0OmxlZnQscm
lnaHQ6cmlnaHQsdG9wOnRvcH0pO312YXIgdj12aWV3cG9ydCgpLGg9aGVscGVyLnBhcmVudFswXTtpZih2L
ngrdi5jeDxoLm9mZnNldExlZnQraC5vZmZzZXRXaWR0aCl7bGVmdC09aC5vZmZzZXRXaWR0aCsyMCtzZXR0
aW5ncyhjdXJyZW50KS5sZWZ0O2hlbHBlci5wYXJlbnQuY3NzKHtsZWZ0OmxlZnQrJ3B4J30pLmFkZENsYXN
zKCJ2aWV3cG9ydC1yaWdodCIpO31pZih2Lnkrdi5jeTxoLm9mZnNldFRvcCtoLm9mZnNldEhlaWdodCl7dG
9wLT1oLm9mZnNldEhlaWdodCsyMCtzZXR0aW5ncyhjdXJyZW50KS50b3A7aGVscGVyLnBhcmVudC5jc3Moe
3RvcDp0b3ArJ3B4J30pLmFkZENsYXNzKCJ2aWV3cG9ydC1ib3R0b20iKTt9fWZ1bmN0aW9uIHZpZXdwb3J0
KCl7cmV0dXJue3g6JCh3aW5kb3cpLnNjcm9sbExlZnQoKSx5OiQod2luZG93KS5zY3JvbGxUb3AoKSxjeDo
kKHdpbmRvdykud2lkdGgoKSxjeTokKHdpbmRvdykuaGVpZ2h0KCl9O31mdW5jdGlvbiBoaWRlKGV2ZW50KX
tpZigkLnRvb2x0aXAuYmxvY2tlZClyZXR1cm47aWYodElEKWNsZWFyVGltZW91dCh0SUQpO2N1cnJlbnQ9b
nVsbDt2YXIgdHNldHRpbmdzPXNldHRpbmdzKHRoaXMpO2Z1bmN0aW9uIGNvbXBsZXRlKCl7aGVscGVyLnBh
cmVudC5yZW1vdmVDbGFzcyh0c2V0dGluZ3MuZXh0cmFDbGFzcykuaGlkZSgpLmNzcygib3BhY2l0eSIsIiI
pO31pZigoIUlFfHwhJC5mbi5iZ2lmcmFtZSkmJnRzZXR0aW5ncy5mYWRlKXtpZihoZWxwZXIucGFyZW50Lm
lzKCc6YW5pbWF0ZWQnKSloZWxwZXIucGFyZW50LnN0b3AoKS5mYWRlVG8odHNldHRpbmdzLmZhZGUsMCxjb
21wbGV0ZSk7ZWxzZQpoZWxwZXIucGFyZW50LnN0b3AoKS5mYWRlT3V0KHRzZXR0aW5ncy5mYWRlLGNvbXBs
ZXRlKTt9ZWxzZQpjb21wbGV0ZSgpO2lmKHNldHRpbmdzKHRoaXMpLmZpeFBORyloZWxwZXIucGFyZW50LnV
uZml4UE5HKCk7fX0pKGpRdWVyeSk7Cg==
###PACKDATA,FILE_END,/pluginbuddy/js/tooltip.js,importbuddy/pluginbuddy/js/tooltip.
js
###PACKDATA,FILE_START,/pluginbuddy/images/minicolors/circle.gif,importbuddy/plugin
buddy/images/minicolors/circle.gif
R0lGODlhCwALAJECAAAAAP///////wAAACH5BAEAAAIALAAAAAALAAsAAAIflINoG+AeGFgGxEaXxVns2X2
dh4CZJXBadDxQlihGAQA7
###PACKDATA,FILE_END,/pluginbuddy/images/minicolors/circle.gif,importbuddy/pluginbu
ddy/images/minicolors/circle.gif
###PACKDATA,FILE_START,/pluginbuddy/images/minicolors/gradient.png,importbuddy/plug
inbuddy/images/minicolors/gradient.png
iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0
AAHotAACAlQAA+NcAAIhSAABxRQAA6mYAADkHAAAh+QMnhVYAACf5SURBVHja7H3LjuRIkqQaJ+e0wB72T/
s7+w/qOKduoLBd3ZVZmeEP0z0UjSUUiqqpuUf1AoMJIBDuTjrdwyhUERVVMzZ3/y8z+99m9jAz33/7/hs97
vb7zzv7qff54n7HNncv7Vc9nnjuf/Ixsv2i7y/328eii/EMP9vd5fjvr3cc4/Fa793dvffe+/P57Pf73b99
+9b/8pe/9C+99/9jZv9rB8Dsn3kWT9RsQCIgzE7Us3r8le+Ig/fqMRKAp8cAEPAY4/Gy93l2cY393P0J+/n
YBtvH8+e+rfXe246cBr/
+eDz68/m0+/3uHx8f9v37d/v69av9/PPP/tNPP9lf//pX+9J7f+ygenzCSfPZgLxz0l48oeEvXKVv7fPisU
4/v28yM7O2/5q7t+A5P3Y8hvq772/u3nYQjdePfXbgbDuYxmv+fD7t+Xza4/Gwx+Ph9/vdbreb3W43//79u
/3666/2z3/+0/72t7/5Tz/9ZN+
+fbMv8A+Vfmj/ZmZtf63hgLXWVo7z0ueOgQ0enwY9+MH9Kp99+Vw8wcG2bQc+7+cF8BgcC4957EevNwDRRg
ByAFYbQILIdIDI3e35fFrvvY2/j8ejPR6P7X6/+
+1284+Pj/bjxw/79u1b+/XXX9s//vGP9ve//91+/vnn9ng82pfe+8qJ5YH1FeAEJ28KEPpsg5NyArEA3+lE
tdaOE8MXQvBZDBKbAYv3w+PhNnhsapu7W2tt671ba63vf1vvPQQWRaUjUu2/B9D2c34C0YhSO5B8j1B9/9u
ez2e73++2/247BfrXr1/tX//6l/3yyy/2yy+/
+NevX+35fNoUWDAwKZCKESYEZyGCpSdeAEnRTRW4YSQKgJQBy+HxRkHUOZrtwEGAMICOY/wRhE60NsDTB7D
GMZHuzMx778Zgcnd7PB4DWPZ8Pn0A6na79dvtZvf7fbvf7/bbb78dwPr111/t69ev/ttvv1nvfQqs8Y/5Im
2VIluR3sag+uQ7toDi5PcQ39FEVLqALgNW8HgDJPWE0i5gIp00ANSZ0sxs0BkCyDBCjef7376/NgT51ns/I
hYCCzXV/X63j48P//HjR//4+Gj3+719+/bNxu/379/9drv9DqwoUlQBpehnIk6jSOSr+ir4jnysCCDZ+46T
1FrDk+2tNcOLESN6AKzTRwFQZsByEteK7hrS3R6ZBngaRizQUcfj5/PZdh01QDWe266p2uPxsPv93m632/i
179+/t99+
+619fHwMrdV+/PjRbrebPR6PZmZaY1WFNdFkKwCqLYjriI48SCAqkU5RldJEXtBLBhGpR8AiACGNdd4v0Eu
H+GZggd7aRJTqCKRBhyN6YYQaVLhrqra/tokscEQs+/j4sG/fvg0hbz9+/LDb7eaPx8Pc/UKFHlz1L9GkON
k+iXQZ9UnwKKApQNIxWyGVtxkV9t7bHsGOyBYAq+3jzGDCCHWIa6C+Jva9ZHs7tWEE25D6CEwDaObu2wDW8
/n0XVPZ4/FAkLUBKgTWANK3b9/6x8fHtuuwASy/UOEMT8paSFJzn2WEETjpODK4Bd6PR1GVhT1mZgIUjhdY
kt35hOKG3cD7oDVw8pYYdOOYw7AkXXWiwmEbDDpES2Hoqp3ybKfAE/09n8+2R6p2v9/brrdOVIiPPz4+2sf
Hhz0ej+3xePQRGTliTb2fLErR1e0FjeQB2CLqi7Ix3keefBF5HPZzYQd4JNCVfzRokSmTQDYcbtZU214iMQ
BiI5G+Daug//5zimSwDS2Ek0AHj2oYn0dk6r0fgn3XVna/3/1+v/fn87kNU3QI+X2bff/
+vd/vd3s8HkekvGisiVGYgSoDVEsiT2iyigzsopeQgnbvx/Gqx+PTtgiATQBGelCUwTUGDBxzUxkd6qMByI
D6DEouaG6iN9VRoO9AQyBhJriBV3VQ4W6EbgJYdr/f+
+Px2G63G2aJvgNxZJI+wH0CFmc8k2wrjXJIQXBCj9d3s/L0VgDJBcScKJzMIG0BuNJ5FKkuEXCAqxClsowu
Mi3VYxbiJ62EYAIgDVrrHLH2KIXaagBpRCnctiGwBqD2yLXtUWgAaQAMjdIDgB8fHw4R96yxXgBV5rAfJ1f
QravPGumyos8MaALUlwwPwYRCXgGNdZWyDlico/YR9oADAE7uusr20DkHf8r2E8flmAFMh+cbRqjn83lsez
6f296NcESpkQkOnXS/3we42g6utkerfr/ffddhbQflQaPj89y9lahwxesKKC0T4XiVSwOTNJLyiDLt1DIdJ
QS82rYSlSLfaRNU2MAaQOd9i7K9AUb0o0a0IothwzLN8/kc20YmeGis/bUTre1Z4TYi1g4wu91uDr6X7zRr
uw5rkgoDEKlolUWKCCAVoEURxZSQJ8CYMk5VticikQEFSkc9K/4yeJSOQ0obQh6jFdoSqLcITJ0tBQTT0FX
jdbQUIAvsz+ezuXvbW1+s9953CtzAbrDb7dZHlENb4na79cfjsaFFMT5jnI+S3VDcJwJPRG2evB+BEkU4BT
KPaJIozIPOAUWBzlEIvxcBS+2LOglFuTM4oeRy2m8/YRdLAbRVH71S6LSzdwUdC0iPB609Hg9398NuGIVnd
uL3bUcHBEdPM+vTiFWNYBOgWGYh0L6H97MQiZTx6YHYNnDLEUwciYztAlWjE/ttlME5ZXlHJBrWA9b5JhGL
HfROADuAhNFrWAoAtpHFdXcfAh47Ghr0YA09tqGRumutkwE7LA4z2xBYUQmkUqbxLCIJY1JRIeopT7SUKUC
ojI7KMxYArqExySZn1gfFAAs01sm7wmwPTE9JjQCyEaUYZNu+30AYgqcrd33fZxuFZtZYe4RyyBjb7XbroM
l8aCoE6gDr+O5fVIE0A0zv3aGJ7wjp+2tH9rJbB6ayqQb+Az8fINn7jxToOCPzSG8RxTXhtl/cdwCnTwT7M
R4ELG6oc5HtObnpp/4poJWTFTGi0XjfSO/JAPVdQw2v6jnApOyGYTOAI98AiIdbPxx4LFbvugw7Kw5cfBGV
+ik1BtX6qB32orH4GIKO0ZJQ1MmRT1Irl0w4SkJDnZHmMWETXLwxtgYIdJjhdUGF3IhnAJgjGRj6CemPxLt
DG8ygvw6txdtOhaOp73gO9oPt4NqGyN8j0jaAOOgSW5VHZOMCOFPhTF8p51s994QOmfqUPvJApB/utqBJRX
0bTBy4RC/x/GRaMkgmlsJF3KOFEBidbG4iNSItbnDS0EbAks62U1pD8xTAZgAutBs6UJ7v+2yot0D0H/qLi
tqnwvnQsFVgqZpd9FxZES0CUKSjqLxigYnJ2VhEmS6EOReAT811rL8WgLXh8Vg3ofWwA+mSNQLINmExdDBF
EWRSvA/AjegzBHvkY8H+p6gEYv6IbFjGuUQsprAqLSYgs4mQtwmNeUCfyvl2bo6j6KLc9YstwPvS+0xYAxc
dFbjsjaLVoHjpvKPdgJoKAMcaC2fXODbwPZ9PN7OGzvjYd4js4aADiNpuJRwZ6PCp0LLgRIUK7meNNfOZEj
BkJRaOVJdSSkSTIqM7rgZBca5qjMpZh6Jw5+iV1fJWtqFews8D7WSsozgqiVrhAEDn/SBadSjpDCAeVEjUe
No2DFLY5rhtHHOPdCNK+U6XGwD/bDfMIlY1WhE4PHHNI4A1dYxAU4XHUIYoHwMjmSpCZ6BT9Dd6pLDTYUxc
IJpE6uukqzpMdjhto8cdvKpOvesH3cF+h/OOtIglHnDtj5LOHgEdmgZP+yEFAtuUqLAFnQtyP8iyuMB8WBJ
gR1yyxgGAkakFwLlENkFpRkLc4AQbgc0n+51oblAOfO4lewQKc4peWFh2ENzOzXy4DaIWuutO7cdD6xx0ho
+HVTDEOLxnFKbZUjg04E6Bg2o9MIevdgObo4UIFWmrBuhN9QtrGQQI+EPsVXUVEVkHBd7UpeeKIo8JbYXFY
RP2ggmLAT2ok8M+ohmA01QkwuiFpihEqUYRa2Mq3CMNUmFjWtyp7JQtDsCOrHAHU8dmweGZjYwSorSdSjpF
6otqgCXARTQ5iUycBQ7dwVkh7yd9LAYaG6WTDHD6GgOL/KqTjUBA6kpjsa1AuoofH5kgPwbnHUE3PCoGXaP
CNb5/dDQ4jLFjQpSJ9xmwLAFVn4AtAowFYPGkM8ECC8Gw15wzFirhOLnkTdT4PAIbFIgjMDkbqUizkN1dto
u+9Q7PO2WGG7bGoI8VAM0hCrGYd0oAnH0rBBOiKrUbkozPFwA3jWbZZwsgeTKBIXL2I+q1RNzPgHbyvYbmE
dmeilJOFsXIFk009xnPA6TuBnyM2grfh1rqpLmoHnn6HlBQvui28b7xOWKisIxYF7tAgKklloGanOBFoLRk
1ktEY5445JZkf1GdEBfQkBYD1sXIp7pQoXjM2R33sOO+LcoKdzBjScfJee9QG+SscPRnjcenyIbvo3LQhiC
mHvsOLTMW2g0TuptFuAs4lI5SACRwc8lF+VZNUaYQ9TMtZYGQb0Hr8Ba0w1QfH5po2ApCsGMJp2OGBuDBiI
VA29DvejwekgrBQkCN5ZCVnqgOaRLXi4DEb5yDlApLYCIxHwnxVyjPgga8GXg8oEDuS3dM8xNKPOk9thCGT
qJJppbQX4Pow/sZ2wtAPyb621FjOTb3DbpCehs2whhLbPaDx2pSa4eGANSXijFi8f4GmEyUY6Jow3pHinoB
1Ma1uARIDF6mxVeimQVCHP0tg8LyicbAuzpFL9jviF7Q/tKhsH0yQckQ7QAiJyo8KA0jFACpg9vuoiLg6Mq
TIXpcV6tUaNEMYUVbKu2f7RcBSWR/GTVeQJFto8euwMRZ57hyx7iRWMcGvosgB7P40GVDXOMx0I8S1Gg4E4
eywE1RIWaFBJDDx+LskUE2to3pZSozBJDNs8IJpZ0a/9TJ3534sV9pG9sNTE0U9bB/yYVRe9nGrcojonDNU
VkUUTSb6SoCz0Ws4zGSbQg6zgLlNnTY99c6l35GZCI6RN13lG6gG3YjmwGXw6xHrGx71uxHK6ZY5G5Tx4EF
UUxFPVetLcEyQKps48JB5+
+EeuJSHcBtrLfAjmg41ii8iU6noKOuBuPno8MBvC+MbidLAnSd4TR/ZWUgaOm8vq6xotphdKJFS0oTGaAFY
LKgCM0n10UHQ0aLbFq66HDwaMlF9Rqk2a40VqCrsCW57ye0K/CwxsIeLKKtC90hLY7C86DXPZrhhAvH/i+0
Mjh6EQ2ySeqr4l3ZCGo61ax3KrMfPNFHHmgsfu+lyMxLA0WinCjPlaNOkQdLMZfIQ89PugomWaDzPhz1LTi
pJ10FNgQ+b1w7xONNjn8CJOspFvNUysEVoXONNel8UK3HvmAtmABGRrGtCC7V0WDsSzHdcQE9mFjBFoKiTA
vsBiedhfbCKVoCHbH9cBLwAU3iMRCIbCOw/jqKyWhhiPmQp+yXHPe8VhgBYCWyiQxy9tcUpTGNFo7VAi2XU
iE77qp7Qbjrp3mHSGdAb5sAlQQFWgoYXiArRKrifixTVoTICtFuONEpRCaHibK8aK7D3Mlxg4JtSbwHLTGh
XprNoIkiV9BLlQEwshRc1ASjKV3Sn1JCP8r8gomopuwGKuEgWNhtv1Am05aIRsP34udHBgfgQQCdgKkoEj0
tBJT9cVMEEzdPuFLhrDwza/KLAEZzDUfjXybW8X1oSRj3rcMqNU10MKi7MrRoHiF3JYCzfsr88H1oVSC10u
snpx7pMrMb4DV23Q93HVeiYRrjKfmDEqF33Uk3Oq0WqHrcj4xY0KCmwqh9Zva3oNOauEOCV8Q7ao/EL1MWA
9Of6njgRj4X7cdGRWjpwuNECIpUHkS+jQDNrTKYKXJDIEYsIz8Ko9RGbcUYlRymxWON0Fig49pb4pYpuEqh
psKqYRqUbFINlYh8SXcBeCzyoQJH3YLGPksoMivjXPQW7XeiuERHZRHqoEVw0Lnxj+2Fk/OO1IeuOWZ36HG
x5hL7bwxAPK0DjO8AK1vJxSagU4150eKwFpRvLlYA2xFKZwn91YLPOhWTsYwzsxTgdiJhNIs0G0QJg5PEpR
vOItEcPYEJdJPNwMMrKw8A9T/C0waAOmmeEcna7+WXksaKIs4sml0AtmgjqC4GGcnUcRSlUshW7noDB91EZ
uk0+cEFxbONEIl+ZyCJ/YymrV9KQ+TOG82W9ijikuNvgcbEi+k/MPJyVeEljVWIYiH4koJxtmZV1sulsj3L
qFFEM349ctRN0aJ6zuBlW6FChaKDAd9zoSRhYLLxqaIXZ5ONi9M4NY1tDl5c1/Jb6r0NrOo2bpO53CcmAOD
qtkukigCnthGNZVEJqaHT+0KNhdqJhbly14nqTpYFLfxh7HFRDfGizSjCskiX20TUisCV2w3FTFD2ZbGPla
02o3rXZ9FsITNUjX6RQGeLIRL6FkyYcCXsxW1LVCZ4cegJOMYOvIq+2Iajoi5aHXa+odPlQsXvwKsfTvR3q
4p3dsSz5j+
+8SJ/KZt0Mlh0jCgaTWgwms4VaQwP9mui/yqNRASyTLybcNeV3trIGe9KwON+ogUGC9enY1BN8RSFqIpwMU
rtfOfY17LCpI041EbBzGSV0cmisOipsgJFqrZi9X+kuinTYgJA8jhMd7iUJMyQOQGVTzIDieyGkz4iUc/Oe
4dVbzZBh05FZ4/oTznxEljD5c6iUmQrDGc9obGmoh4CZEzFh8YyC3wsizI3Me39otPIdc78rBBYTBViZo4p
K0LNI6RtRgC69E+hpQDH3sR0fKepXXwHi4bgIMA79Iixj4WPOxWjrxqrUjuMSjdqra2kPhjZBvgdwvmEAd1
5ZoKSpSAb1hD4Qo+5yh4ZmFFEEyCRjjyPI/tg4II3QZenLJPAPsZno2LypXKA27MVHVliKLshKwRPxbuKSg
koZRdnRndCw10ojyOiaitOIl00jT6kPWE/lEDF2eOgrsBuiKyHjagLb9WLJR0T9oOLzPVEjQN8SnO11oab3
1prDu77MErnGqvappzMPK4CzZXADmwJi6Z8BdrsYpAGNcx3gSXFexVkILw70h2e+KGbRNaIgn0LANRoRcBO
+25KN4F+6sQiKFcODyu1G16xHxIDVa1Eo1aJ8cmxs2JytGJfVIy2aA6hinJEd0p/
+cwgnbjrJhoDjaZfScCDFJH/B72u5kBmcxPUvAE1sfi0ul8UseQUeBLtbRKFZhNTLZh5YyrDg5MrJ66Kx9I
by05M9lwtYzSJYivg2qA+N8vSkO4syBJNUSG56CzAnZr1Tlnh6Mfax+J4PBr9IKot+VgVSyFccDaqNRZn9y
hATgGzAKooWqkZOjh3sAUa5ZLdLYLM1DHIrnBlEzAQry93pNcGqwaeqBZ1GtCcUfXkdFqXqTCYfm6VVWMyA
EZrZgWWRhM9QKlrn0U1sbAarzBzWbVPTNBwtSQR2wsq26YSUGQtyP0R5ERxFyqcPVa2h8iYnTLSU8Mle5IV
5z2cqJoJ74Du1H6WzGbOKLMUkYIZzp5Qps9Ee0XMs3e1Eqn4GJn7zk2EahtMyjhFupHBcXZKrceZu47Uucm
I9Q4VfvJfZSuE0Yw0oCXlnFRDrWx7RU+xF5WBh+wG1Dboe3UwP7swQtuMFvE1BAr2YkU/qMHUtjKwVrRWBA
rVnCeOO41YybZoTXYLANlIY83mH34KsKIINekm5ULxBvTEBucmOhTYYO2Be99QsEcRKrMjXrIbXphqP5soM
RXyiZg3RasqokW99up4yj4Q/fIl2syi1mT/6cSKV6IprlHBvmCwOLGpIKDmRXCTXykrnAjyCyWpGdAV0Cjj
M3hPGKHQkpjMal61Ilql0BzpLdHa0oniD8oTC3Hw1HY+tjJSp1SGnQ404/mwFPx8oy2eMCF11ytUyECyqp8
ljhFRYaWmmIl4FxHKkt72ioeljMRNZamRcBelGgWWLTBfsU345C0xILhZT0THxmUdpZlGnRCSNxf2g9Rd7z
jvLeppd73YbATIMt0FlDa1FqJIJ+qRlixZxHXFavuyqYwz6Yl3VYxG519M0PDo+yYTPGZlL3nBk9OeUWWJC
tMidAYK9cWSfipTglropdPxsZk/MTgtG8hKJlh9raK5YKVlhzIQrliTaS+MKEq8MzU20eqy8RQuFO+RG09r
jI5WmRaI95LznkYo3xdPE6CoUKFHi3cosKjOhYjiou/AV3kCqtmV3agzIQNXqxSnDe7uEGilMLsTq7+EoEt
0Fy9LEFkNNko6YVY4A9ZouptRGO8HzxtZ/5dUO4lYYRbHa55y8Ve1xwRTuySgKDJmIMzmFWYTYC8aCBaNVY
Yrg0KKegJPn2Sfl/YZO995TYEQI5W9bDcks3iiKFJp+rPA85rpNBOTMyT1ZdqJVgEMPS7XyyCFES1q3OMEY
FbsTioIVun7Clx1NYMZP2cjAW/BxInNzjekr9sNb04Bk6I5ocJSVHKx0GxgP6T/C1JhJGgrmip4LqMIZoUF
w3QaibDLAxYekTqKoq3KJi/RS0yOUKUcL1PhZ80trHphKvIks3iiWUItiy4V8LzTUrPw+ibm53G/uSfU52w
9FKiQPSZTAl2BhyZHRHXCnAor0+SjSDHRR+E6Ddl0MY5Y1W0ZZfp16e1wichkgZGs5TmkqmSbqwkbLC9Yqw
oAnjRitE1Eqct71HlJlgNQoG7u/jsVvhOhViOYJ2tofWbEUgD8jIj1KlVSppVGpUm2p7apblZ0wtMoJaZ0W
VILtGRq/VljfTKwShpL2As+mZg6O36a7U2cd59NvCj6XS3SWMpVT7LHkOKo5SUCYIOJppca6OwYag4h02mi
uUIqjIDliRHqlanzZEOEWWHi9l8ilrp5wMTNP9FJkFm2QlaYeWxhVljVbOJ3KSuEC5QjVsggOzi6KMifzld
rrSeF6OWI1SbT6ytZoru+l2BGhe0zIpZoRmwTz6tNJhfMjiGn2WfbJkDjyNRmVMhzBFgrCfozmEvITvvJfE
1o8o+s0Oc3DLBocY+CeJ/tF3VFmOijT8V61NEgDNCmJmEm8w3D4nIwuZUjVIkKwc2faSk1u4n3a5GjruhOt
Q2prJDbygVNloDVBAVeXo8yPdHWosxNTzLElgl2MfO5VP5h2npFyE8ojW/FYolgj3RYKwj2BnP9VGRrQv03
1Fi4YiECRL0naJHREWumsWbZnOtbyVXc9WxF5iZmgmRWwgWoCb2qmUVRd4NP9JYHzr4pLRY0FFo0z4+zWnH
/aY9aeFTHBHZJiHmBPjQwfz6v3Ke+47LGyiJV0CLsSYdpEyvMRCc+
+tzmwXpbijYnAJveVzoo8zTuREhotWXGaBKxGBRIbU3onsox25giDxNlT5ke9MM3YbC2SdRa0lih2A5626O
ZzjZZlC1qObaJWPcos0sshmmbdHEGUNgZkfTYN+WiD6AyVRKgZsKedZSzrlLgEZJBaimIXNENBNbtBhfLDl
WjmxdX96uUgsS8xjbRZekcxSBCSr00KVaXgTabdDKZDGIqeqpedLXOgud3SruMu6JBoj2nx8t2w2UtiFdn6
aw+T2ZYS4DNTlTyOWHr8gs98j6ZNCspTFBatB2bBi9ZZXRRctZo55uKXgzW3Xf8/cXf9VdUoLYMWDNB7QUd
5olm8SjqqTbjZJ0IOWs6Wj0mWg9iZZbQqxljYkmE0VNZA5HGUtsYJGSOKpo8ZYEIJlHCacqFh225xsoMUdN
3hOeTnE4sLYhxD45XmXoW+VHHohXQWhvdE3oGKmcdmCxkEiYK1QQAszkRsXwCzBZotsu5YC2Fj1U7MtwPqZ
+A5fkNAaKsrBK50tVrZms3JAuLyAgQbTO9Zle4hGREw4XJr6WW5yxdp0bJTApEU+V4llKLLq7J3ED+Xkc7D
Gfe8LOV7IZK94Ja4sjyNbCmvV8RKAmIrThP0YNo5gVwHItf0KSNbCGT2WODe0T
Poll2T+pTdiZ0WESFFwolf8wpU22ZnhJF6andICNUEm0yYW/ZdHkFSl7hRZmZ6vssAHC6yFtkJ7ygv0K7wa
73f7yARzy+lIjUeWMqBM3UAr01Lib2uKaUKrLDuvMujE6vrOOQTXCd7avmrLlYzJ9S3Wx57xBkQdboonzkg
Q2hwDKL0O76lnd8k/aQwuiejyEVqpJWQGkRDVZ/1px3RnoAlnQlwEADhTOdg2wuA4O6430YRZJk4aXF3Cy/
eVQKas7qmJJEs1/o8NNYuIp6UbSEJQqixr6WWA2SCmW5xvRdvGS0CGgypEX6otFM53BFP/E+lXmqyNGoU7K
tmLaFRU3k8YN9WpDVZced0mTCBsp6uFBxpOdIXzXx2vZqEfpIkyEMZ9nd6R8e97UjUSp77llEi6jHt+xNby
hgtM57Eh0vjXmV8g/eQKE6jS6iyaizZDETHrZKmHTtjX3KcR/foQdO+xoVFhr6mpiXl7YsGy3g7ws3MVflC
4+X4bbAT4vuPOHqs5NJIWGPF2dukT8nwOau762YabNwfATItqxDlywEFYk2/r8m0WuLgFWxGUoAFNGsfC8d
NTMoygotuZcOR6wCjdmsnvnqJF/qXvWZLlNue0WjTVqUXF1QykIItke9WgbA2krAssLdVhO9ZUJQZ9tkCSi
aK8hRrgCeyv2r24y+kszykqREyxREYprXlA/GP5y0IRItj7ZlIFNRifcTrTdaY0WaqkJzE701NUhnJ00lCQ
EwsruQtaQtR1GiKX0XZcSq3x9Ape6tqDJbaTvw+7m7IehAiNgntCCqVkRQOWhlKpwAa+VWKFlkakmWWB5wC
27bG2SIL93Z1ea3zCttq1wkynmPji0incxARWRSkccCZ139fZkKU8c40UcZ3aQDLpz/sLZXAJm6OtOLYWX5
gJVtxRM/pdkK3RFlVujfo0SENNccWEkEyoCQvged+eL0MC+K2PTkUEZ5cuOD+YvRhaHc9ugv949faI7oFFN
5eZfXzPkOdFgUwdOCd8AW2b4hZVbshupKyZXV/ppK+UUnwZQu+OQVqGsq7JPoMt03atku7hutKJ2uv5pF90
CUl6IeZ3wiK6zQYY0KZzbDRD+F1FeJNsWsLdNA4Y2eIkG+AKQl8BSpMFpLtfRX7R9kdDITRCciyvyULvtsY
L26nQvXK6DhbC2LSrLSb/mtVyyLhivabEWjTcpIUaG/VTUTue8ntx3/CuB07l6ZAQp7tsysZRortQsyWgw0
i7+wXxrBJkapnASQNPXNXn/17+zzKxNIZEeE0l7B9LqNvtcmXHd83zaZO5h1Pcw1lriyohM9i0rT6MXiepH
+lujzE+julUXnymAU9cyZxOA+9EaNchcao6zPIvqLsmwKEKi//iOkwkRHVeiwqrlUCC6DJaHLyrpdHvRNyW
iyApwsSnv9tjBLEVFNfXshqjrNxpK0V9Bfsd1QHUhlAUyc33DwTawFUb3iA41Volo66ThnsXxh8ISRzC2HD
ojliykzgCsXjZr8gdO2ZvT6VqPf7MQWoluoubIu0iwardb4qE1aDlRB21T2LS/tZGICb9Jq3YQf5rNxy8xh
QXkyYwyikE0MUrtErGwyRdKk5wG4wmn4BX1mBZqcgilq3KPHFwO18v6F5QeyMcnqmCt+XoUaS9osiXQp0FJ
gsTgfwvH3fjyb9rejm7yH+Sk1BS65Rc452gCT99nEeA09rFmf/4rVUJUT1WJ81vxXKIJ70KDHTn8nK2IWna
Jt799hddaxUNFfq1d7YOAp8LcJrVc1nK1GjVmnwCSNXynuz8Y9M2952wYRp3x88Tn5vXQy8R2d8IS2ImBYR
I8FqktnoVQj0qSNZOkkW2Eyb2G/ENAe30CrelFENGkzGgz0Va6xFoBlBdMzsx+sAMw2+8ez42VC3q7rPFgF
dK+8JjRlJTpbpbtDXAipPgoqDyFIFsAUAat9mWUxFe0xEdvlq3ySGEyv6iIgLSiCX6h1ov2y/WRL9IsXxiX
lL1BuutbF7DiJLVFx3+tUOANJAZAvAUFllJOBtSJNlibmJu8vj0ehM6Q6HlaRDOyoT4Dq3NIjHHULMsQocm
kqTNLRWYSJ/pmVfavcz5liBRQrYCtnigWQTcfrxfctA+mNCzKjWN7+h92QDeCLUWsm6itXepT1hSvYvXhS1
bHlehKFx+r/qZysGeVYVqoqHqN8Yb1QeJ5TYeWERf1Z1cczWqtQwgsAj56Xv8vKZ70g9g26S18Z5yVGwGhX
AL0XBXxKhauRoBTiI4p9ZUCKgLQKgF8By+Ljy8JmwRKas/F4aayidbImGiuqF8p1Q98GVvZPRxMpOPNKsrC
Lo6s4vBgRo8FV6028FfU+8z0JMK3yv2ZjIKKTPJYAzyyKaWAVwrP0qWb7FY8XtuNUo1oVeFWRXDhRSyd0Ie
q+StcWRN9IXL+roS4rKb+ssYoRbAVAFaBcwLUIIp8BYuVkV9qBXvn/3rhIOBq98v+FUWghQtWpcAYYE1O7F
gfOViJCcHWWBi/L0lYo6819qxdgCZQTvfbKxcUyJKPEGQBjKlxMQzM6e2dQl04AaUr1vALiFcCvnECbXQR0
wlqwQNzKBZPNE1QgerfB7xRcoog1PakU/lKAvHuyiiG9fKzZSXklYolWlYo9sxLVo/PwKcCOnos7U2QUOaX
CtL3lVXAt/OP2Zw3UKuheeT4By2dfiC9duG+MXUv01RxYBYpLwQZNf2NVvsNRV8/Ve2YDhfuLIvClKEz2gn
z+DrDwlmxOt2hzccu2NwE6u1iWLnjTyxGkIAqAlmusd8Bm8U0yj31oichsUZHsua1ShSooF6l/etUnd+IwS
+Y8zjLOYvTl/1U+V3qouNpQVXed7QabtKysgE3RpLqSKldb9SpNTpjP3le1WCqvBRfa7AKogPnVqJXtUx7H
SrQ6LW6b1KaWgFR9TXzJV8BTeQ3D+yVqBO9NFxyrjo8ARBlwn/jadHwqF+KCthqvnanwzcFcAZeKaMvgLAz
0pbRUOAGlzymcQCu44y9fNCsAiFzyBQC9Yje0acRaOLnLJz07cew7rZ7kyeBZdVALBfmXx2p1TFZBTp5eNb
q/PFbGq828GKHSiLQKxhWQUSZnnzAgqwBafv2dC1QIeV+JrquRsxC9PImAVyqcXYkjZVb7i22n9hnYdnHXs
22RNmOHXXzfYQGE08f3z22R6SeuePx8qTnE6+G2JFJE52TFTa9E42XqK7zn7LxPIlBkCagaVmWbXL5xEsGq
0c3oam9R1lNJ6YvR6E/ZlnhOKxGqHKWK22ZRrE6FVeAFYCiD5Z3BenfQKlfjnzk2s/cuXmjLY/fu2EyBNRm
g0vY3BupdMK0O2lIPeqXHXLnwq/tkOq0KpM+4EBcuuHgyxeIAzsBV3mcCwqV9XgBrKwJ6+eSJIndqylYnRi
wAwQoXin/GPvSzXeyGPwsUk5NVOWHVaPUpA754oqvezn/LsQr7sQJgrUwtaoXBWBmUTxucKh28eZVWLsK3x
2oFlCsR992xsqi74QWP6t0r8933rAz4CkDfeU8LLJeq1qy8b+WiWAFGaHu8eAG2jArfAcorJ3/1arIXrqxX
r8iXxPtqlMre9xkX0rvRbAG8ORV+EsBWuNzeHbDPHLw35cFnSIG3xuGViPxJ0bAOLFrd7+DVVwZahPxy2UC
l68k+lcHzxYFtK//fZHw+PZH4BEB68XNnwGpf3g3vq1ffK0nBm9T06VfuvzGb/LOBtGwzFT+3fem9f/n/
+c/8Gwa+2X/zn38DSFd//vNL7/3/mtnD/ufnf34+7+df/28AkXg9KZ7Ze3oAAAAASUVORK5CYII=
###PACKDATA,FILE_END,/pluginbuddy/images/minicolors/gradient.png,importbuddy/plugin
buddy/images/minicolors/gradient.png
###PACKDATA,FILE_START,/pluginbuddy/images/minicolors/index.php,importbuddy/pluginb
uddy/images/minicolors/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/pluginbuddy/images/minicolors/index.php,importbuddy/pluginbud
dy/images/minicolors/index.php
###PACKDATA,FILE_START,/pluginbuddy/images/minicolors/line.gif,importbuddy/pluginbu
ddy/images/minicolors/line.gif
R0lGODlhGgADAIAAAP///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0
wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeD
p4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwI
CAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm
LXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9
ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLj
AvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlU
mVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5z
dGFuY2VJRD0ieG1wLmlpZDo3QUM5NzJGODM0QUUxMUUwODU0Q0ZERTExMDkyNDkzRCIgeG1wTU06RG9jdW1
lbnRJRD0ieG1wLmRpZDo3QUM5NzJGOTM0QUUxMUUwODU0Q0ZERTExMDkyNDkzRCI+IDx4bXBNTTpEZXJpdm
VkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjdBQzk3MkY2MzRBRTExRTA4NTRDRkRFMTEwOTI0O
TNEIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjdBQzk3MkY3MzRBRTExRTA4NTRDRkRFMTEwOTI0OTNE
Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJ
yIj8+Af/
+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwc
C/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDg
oGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVE
Q0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwY
FBAMCAQAAIfkEAAAAAAAsAAAAABoAAwAAAguEj6ka7Q+jW7SeAgA7
###PACKDATA,FILE_END,/pluginbuddy/images/minicolors/line.gif,importbuddy/pluginbudd
y/images/minicolors/line.gif
###PACKDATA,FILE_START,/pluginbuddy/images/minicolors/rainbow.png,importbuddy/plugi
nbuddy/images/minicolors/rainbow.png
iVBORw0KGgoAAAANSUhEUgAAABQAAACWCAIAAABRkz+JAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJ
lYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD
0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0Y
S8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzoz
MjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzI
yLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodH
RwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94Y
XAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNv
dXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1
NOkluc3RhbmNlSUQ9InhtcC5paWQ6N0FDOTcyRjQzNEFFMTFFMDg1NENGREUxMTA5MjQ5M0QiIHhtcE1NOk
RvY3VtZW50SUQ9InhtcC5kaWQ6N0FDOTcyRjUzNEFFMTFFMDg1NENGREUxMTA5MjQ5M0QiPiA8eG1wTU06R
GVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo3QUM5NzJGMjM0QUUxMUUwODU0Q0ZERTEx
MDkyNDkzRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo3QUM5NzJGMzM0QUUxMUUwODU0Q0ZERTExMDk
yNDkzRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IG
VuZD0iciI/PnzKFbcAAAcCSURBVHjanFnbcttGDMVZsbVlp0knb52+9/8/qh/QNrElpxVR7B3YxVJOlExCU
QviDhyA+POPTyfsoPhh5vQ/If2h8k3+ZwDyI1DvMN0obL/TG/FO4yeeH79WDuX5jI3oM5Eizg/XXPoT0s3y
iHhSiD8RdiJ7VDMRAk3WDwgxPsbntOfpT4A6ytOBSPyh02F4Bso/XAQlsBKMROxnpR4XQqBf98PGAUlnPCu
elJ5dlWxHy7W1f+RcxKbRYN1CnPmoi0YcnpNVtbawMmZzotu1yiI6nwufrsygKo0/1YeK2E/Fk01zLIIEKk
7i+UgsnENXj6y2TYD8dO153pO1u2F1GLFRfn4chHN4jJyZfJvn82GMrejRfU86y5cw8KtWoEoZJoOFSPyYx
A7KKzacMNm/PEKIQ+JcMtGm1BCVQYlTXaV0DiqMoNO4Kd8sL38j53OUGZOd5q/mgrOrHovCQw3pF9kWqnx1
P2fOzbxBx7YNDMM/i00PFE69vmk7B1W6eIoEZM4xPK2EONSZtM6ROPQIYZtcNpN6egrxjoeA0PUE+R8MD+J
dxL4SnZrx29Nh8pobZ1XCpFxvV24alxLG7JVh2xR2TsQX5mxr1rnIo4V6gUg/7Yl+e0vcYMXT9bt5qpTAei
BzppZT3d5syrFWuNklchbiQKqKsAoSnmtYfVrjHKDsVLU31rYtIN+JnK8SH6oVS6seUwAqtZUeSeydA3oCs
S0n3RA89psktliLVVx7tV6naTNNJH7JOu+JGDVOJptn5NH9nM6In9HhhxtVbJu0+myvPEVfrWI8N3wYg2+v
ka+yBdPywlxHI0fOcEsfe+GhwljkE86mqvmfhRTR2rpyur1q1L8aL3LOMTCgoHaTFLYZjm1fvdTV4anTbbD
J9pJShBXu0dczpOipImJ/mTm44TFFiNzfvmTc5QIXT2BWyCNxttk3aq57Loy/t3+AG4MNFLZgCE7PyYVeSi
8XWi6JBbJAnXqesnXKFqHrFEJsI5K1HdAh5bb/PIbuUPxYFT1YYLzRWSaPZVCvYrxE2P7AujzpMJ5doNM+5
jOfTa43AGzEHqo/crETsH6e4DIvEtuYJpbFRLwqBvNXOzgoziuz0CR2Mxg9dujoVxMeG1W1mOj8dFB+Dr2W
dIYD6t/ncSHmOg554q3URmxWSWd4R/nenUQMAxB5crXr9ogrkMQO/P1Gi929+hmr4WmN6XbtZ1fIVdhy9vN
D0tnpRuoazjiXxU6uCjhqbq44RmxMYvNhbHc/BzoCB3PO7UXnWkiPbcvT5uLGifNJKTYHKRaRc2s6Y3Iv1o
nNzWDbjU78HYnVXRWnmwuxVboBxgPJ9zIaXYvcDVoMVb/VXtbLE+F8U8T8vkq/94SuxDxhgWGfZLZN+XTWm
cIIh2CjmedFQiZma7DWFIfg5EkXbpxbfDLTMsVG7YX4rSwElmpzx2Lm1yh2gq7jqA4zJ7ECNax3Brjk8m8G
Rj1wr4BWNZgqoHrJxDCzZQM1BbsUg2HcoQxzvoYsbZhkqsRubHgDtJopIucXszpyNpZeryl7Enrtk/fdZIS
ecTkZbJZ2XtjMw3tssSI2T6WTbW3BVJXr6vKrOT3X6gmKtDMSJC+qP9u5j21U98QsAF90/qrmiaGAkGvlir
GRxd4XOyWL1sdVSdy4/p22zPeqD6vZvngriNh/xRE1DNMC+z2K9U3Jh9d1u8HhaLuXTdhBJByF3OZnLN9DR
mrltd7buR2rSrR9JvrXzhg4RLA5lITnT0L8m3mXcK+/q6lL6Ldftf3ttMt2eczzOPhx2gS4WB9ebmy/2Cjs
xKqQs9qf9HxHJmbP1RMUNGVqT2I/z4CCj2CFKiRCPHHGEMU+AkzjYAS9YewtZpBFH7kApbno/KG998ilXr8
DodFCw/i2naFEdper3tI5d5HtadoEz0M62x1khdvCua370d8sEdaDluZ8bpl1dyJxrJ0LyQF2XCwjo9hPKJ
t8fwFl/dz3T3G4oe2xLdPt3hUDUICt3HvaPp651j+owNIYZGqxGYVEsWUmO7UcgvfGyEZbfg3BCesng3FZr
PtZ5cVMAvpZZ4wjRu5k/oatqnXLnE/wqgyc6UafiTqHb/FNxLuAPtunyJiANwU9ecL1q75TZoyrwa3LKXg2
5y0Tz6t1WkyUA2dcCWG9pFg0fOQdYBsxlmK7snSd1Vu2OyOwT+zisKPXoWnjiuuPLVky54tX7vhwos5QVYh
lSkC4h0DceHN0dlcy3uSPovOcMjjcUzWDGZ158dp5seraCg5zXYL1VgzN2uEQOy3addq4XhbrBdDxkisW/T
Zi3EFArs64eGF8sPBAx82JM99bXS72H0nnY6S53rwkzu+pG16vT+HJP5RVWLmK3pEkQnz9zzZ3OCUacBwhv
ep/AQYA/fsCsjFZHQIAAAAASUVORK5CYII=
###PACKDATA,FILE_END,/pluginbuddy/images/minicolors/rainbow.png,importbuddy/pluginb
uddy/images/minicolors/rainbow.png
###PACKDATA,FILE_START,/pluginbuddy/images/minicolors/trigger.png,importbuddy/plugi
nbuddy/images/minicolors/trigger.png
iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJ
lYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD
0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0Y
S8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzoz
MjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzI
yLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodH
RwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94Y
XAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNv
dXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1
NOkluc3RhbmNlSUQ9InhtcC5paWQ6RjU3RTU1MzIzNERFMTFFMDg1NENGREUxMTA5MjQ5M0QiIHhtcE1NOk
RvY3VtZW50SUQ9InhtcC5kaWQ6RjU3RTU1MzMzNERFMTFFMDg1NENGREUxMTA5MjQ5M0QiPiA8eG1wTU06R
GVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo4OEQxNkIyMTM0REUxMUUwODU0Q0ZERTEx
MDkyNDkzRCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo4OEQxNkIyMjM0REUxMUUwODU0Q0ZERTExMDk
yNDkzRCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IG
VuZD0iciI/PiDK9P0AAAHySURBVHjarJVBasJAFIYnyVgXtrorusgdXOrWZaHgFbooegv1EoI7j+AtXLsXF
Fy0FFRs0LYxmXT+YV6YxIgpzcDzJcN73/z5M06s4XD4zBhrsGLHGxdCNEaj0aRI6mAw6AFs4SaKokKglmUx
MHkYhgqKaDabvf9AF4vFBBwwAbbkCgpcqVTYfD7/kjWnjD6BB9MZEeocyLhrt9suOBhgJhRXq1WmodsrMBN
o5gfZ65KdpFhBsVqtVmO6MLwBEkYdwkZvAhwEgUXgUqmEeV/Gzw1Q+l71EhhMpRhQBOcc8986TAgWg/dHfU
3zaiPIuEev4XFSsQYfNSTUC3xq38WVzQCZPnoTivGTUnzScE9nkWOnCVMxgdNWAPiht1HekQZnWrHNAeXaA
rIiurDifD7Hih3HYTmgzng8floul/XEpOwlxWAmFGtwwlN5+qkwX9ZqtarLg2aCt28OWADGtZcnTGhGVn4C
4vt+5iEUW0GKbduOwSmVMRj1qKOe2WzGNpsNc12XdbtdNa9q0las12uRBaWBfxjqqEeeiGy326lMh5lS7Hm
eTYcQlEyn09dbe4sUI6C01WqpTHNg8v1+b5PH/X4/95cE/tIu6HQ68TUymPxwODh4tHK5/KevCHr0LrqYB9
OSwBf5aI9FfvOk6vdfAQYA4jTPF9eEdoEAAAAASUVORK5CYII=
###PACKDATA,FILE_END,/pluginbuddy/images/minicolors/trigger.png,importbuddy/pluginb
uddy/images/minicolors/trigger.png
###PACKDATA,FILE_START,/controllers/pages/server_info/_cron.php,importbuddy/control
lers/pages/server_info/_cron.php
PD9waHAKLyoqCiAqIENyb24gU2VydmVyIEluZm8gUGFnZQogKgogKiBPVVRQVVQ6ICRjcm9ucyBwb3B1bGF
0ZWQKICoKICogQHBhY2thZ2UgQmFja3VwQnVkZHkKICovCgppZiAoICEgaXNzZXQoICRjcm9uICkgKSB7Cg
kkY3JvbiA9IGdldF9vcHRpb24oICdjcm9uJyApOwp9CmlmICggISBpc3NldCggJGNyb25fd2FybmluZ3MgK
SApIHsKCSRjcm9uX3dhcm5pbmdzID0gYXJyYXkoKTsKfQoKLy8gTG9vcCB0aHJvdWdoIGVhY2ggY3JvbiB0
aW1lIHRvIGNyZWF0ZSAkY3JvbnMgYXJyYXkgZm9yIGRpc3BsYXlpbmcgbGF0ZXIuCiRjcm9ucyA9IGFycmF
5KCk7CmZvcmVhY2ggKCAoYXJyYXkpICRjcm9uIGFzICR0aW1lID0+ICRjcm9uX2l0ZW0gKSB7CglpZiAoIG
lzX251bWVyaWMoICR0aW1lICkgKSB7CgkJLy8gTG9vcCB0aHJvdWdoIGVhY2ggc2NoZWR1bGUgZm9yIHRoa
XMgdGltZS4KCQlmb3JlYWNoICggKGFycmF5KSAkY3Jvbl9pdGVtIGFzICRob29rX25hbWUgPT4gJGV2ZW50
ICkgewoKCQkJLy8gRG9uJ3Qgc2hvdyB0aGUgaXRidWJfY3Jvbl90ZXN0IHRhc2sgdG8gYXZvaWQgY29uZnV
zaW9uLgoJCQkvLyBJdCB3aWxsIGFsd2F5cyBiZSBwcmVzZW50IG9uIHZpc2l0aW5nIHRoaXMgcGFnZSBpZi
B3ZSBhcmUgZG9pbmcgYW4gYWN0aXZlCgkJCS8vIGNyb24gdGVzdCBhbmQgd2lsbCBhbHdheXMgYXBwZWFyI
G92ZXJkdWUgYmVjYXVzZSB3ZSBzY2hlZHVsZSBpdCBpbiB0aGUgcGFzdCAtCgkJCS8vIHNvIHRvIGF2b2lk
IGN1c3RvbWVyIGNvbmZ1c2lvbiB3ZSBoaWRlIGl0LiBJdCBjYW4gYmUgdmlld2VkIGJ5IGNsaWNraW5nIHR
oZQoJCQkvLyBidXR0b24gdG8gc2VlIHRoZSByYXcgY3JvbiBhcnJheS4KCQkJaWYgKCAnaXRidWJfY3Jvbl
90ZXN0JyA9PSAkaG9va19uYW1lICkgewoJCQkJY29udGludWU7CgkJCX0KCgkJCWZvcmVhY2ggKCAoYXJyY
XkpICRldmVudCBhcyAkaXRlbV9uYW1lID0+ICRpdGVtICkgewoKCQkJCS8vIERldGVybWluZSBwZXJpb2Qu
CgkJCQlpZiAoICEgZW1wdHkoICRpdGVtWydzY2hlZHVsZSddICkgKSB7IC8vIFJlY3VycmluZyBzY2hlZHV
sZS4KCQkJCQkkcGVyaW9kICAgICAgICAgID0gJyc7CgkJCQkJJHByZXR0eV9pbnRlcnZhbCA9IGJhY2t1cG
J1ZGR5X2NvcmU6OnByZXR0eUNyb25JbnRlcnZhbCggJGl0ZW1bJ2ludGVydmFsJ10gKTsKCQkJCQlpZiAoI
GZhbHNlICE9PSAkcHJldHR5X2ludGVydmFsICkgewoJCQkJCQkkcGVyaW9kIC49ICc8c3BhbiB0aXRsZT0i
SW50ZXJ2YWwgdGFnOiBgJyAuICRwcmV0dHlfaW50ZXJ2YWxbMF0gLiAnYC4iPicgLiAkcHJldHR5X2ludGV
ydmFsWzFdIC4gJzwvc3Bhbj4nOwoJCQkJCX0gZWxzZSB7CgkJCQkJCSRwZXJpb2QgLj0gJzxzcGFuIHRpdG
xlPSJJbnRlcnZhbCB0YWc6IGAnIC4gJGl0ZW1bJ3NjaGVkdWxlJ10gLiAnYC4iPicgLiAkaXRlbVsnc2NoZ
WR1bGUnXSAuICc8L3NwYW4+JzsKCQkJCQl9CgkJCQl9IGVsc2UgeyAvLyBPbmUtdGltZSBvbmx5IGNyb24u
CgkJCQkJJHBlcmlvZCA9IF9fKCAnb25lIHRpbWUgb25seScsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOwo
JCQkJfQoKCQkJCS8vIERldGVybWluZSBpbnRlcnZhbC4KCQkJCWlmICggISBlbXB0eSggJGl0ZW1bJ2ludG
VydmFsJ10gKSApIHsKCQkJCQkkaW50ZXJ2YWwgPSAkaXRlbVsnaW50ZXJ2YWwnXSAuICcgc2Vjb25kcyc7C
gkJCQl9IGVsc2UgewoJCQkJCSRpbnRlcnZhbCA9IF9fKCAnb25lIHRpbWUgb25seScsICdpdC1sMTBuLWJh
Y2t1cGJ1ZGR5JyApOwoJCQkJfQoKCQkJCS8vIERldGVybWluZSBhcmd1bWVudHMuCgkJCQlpZiAoICEgZW1
wdHkoICRpdGVtWydhcmdzJ10gKSApIHsKCQkJCQkkYXJndW1lbnRzID0gJyc7CgkJCQkJZm9yZWFjaCAoIC
RpdGVtWydhcmdzJ10gYXMgJGFyZ3MgKSB7CgkJCQkJCSRhcmd1bWVudHNfaW5uZXIgPSBhcnJheSgpOwoJC
QkJCQkkaXNfYXJyYXkgICAgICAgID0gZmFsc2U7CgkJCQkJCWlmICggISBpc19hcnJheSggJGFyZ3MgKSAp
IHsKCQkJCQkJCSRhcmd1bWVudHNfaW5uZXJbXSA9ICRhcmdzOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJJGl
zX2FycmF5ID0gdHJ1ZTsKCQkJCQkJCWZvcmVhY2ggKCAkYXJncyBhcyAkYXJnICkgewoJCQkJCQkJCWlmIC
ggaXNfYXJyYXkoICRhcmcgKSApIHsKCQkJCQkJCQkJJGFyZ3VtZW50c19pbm5lcltdID0gcHJpbnRfciggJ
GFyZywgdHJ1ZSApOwoJCQkJCQkJCX0gZWxzZSB7CgkJCQkJCQkJCSRhcmd1bWVudHNfaW5uZXJbXSA9ICRh
cmc7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCWlmICggdHJ1ZSA9PT0gJGlzX2FycmF5ICk
gewoJCQkJCQkJJGFyZ3VtZW50c19pbm5lciA9ICdBcnJheSggJyAuIGltcGxvZGUoICcsICcsICRhcmd1bW
VudHNfaW5uZXIgKSAuICcgKSc7CgkJCQkJCX0gZWxzZSB7CgkJCQkJCQkkYXJndW1lbnRzX2lubmVyID0ga
W1wbG9kZSggJywgJywgJGFyZ3VtZW50c19pbm5lciApOwoJCQkJCQl9CgkJCQkJCSRhcmd1bWVudHMgLj0g
Jzx0ZXh0YXJlYSB3cmFwPSJvZmYiPicgLiAkYXJndW1lbnRzX2lubmVyIC4gJzwvdGV4dGFyZWE+JzsKCQk
JCQl9CgkJCQl9IGVsc2UgewoJCQkJCSRhcmd1bWVudHMgPSBfXyggJ25vbmUnLCAnaXQtbDEwbi1iYWNrdX
BidWRkeScgKTsKCQkJCX0KCgkJCQkvLyBJZiBydW4gdGltZSBpcyBpbiB0aGUgcGFzdCwgbm90ZSB0aGlzL
goJCQkJJHBhc3RfdGltZSA9ICcnOwoJCQkJaWYgKCAkdGltZSA8IHRpbWUoKSApIHsKCQkJCQkkd2Fybmlu
ZyA9ICdXQVJOSU5HOiBOZXh0IHJ1biB0aW1lIGhhcyBwYXNzZWQuIEl0IHNob3VsZCBoYXZlIHJ1biAnIC4
gcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPnRpbWVfYWdvKCAkdGltZSApIC4gJyBhZ28uIENyb24gcHJvYm
xlbT8nOwoJCQkJCSRtc2cgICAgID0gJ1NvbWV0aGluZyBtYXkgYmUgd3Jvbmcgd2l0aCB5b3VyIFdvcmRQc
mVzcyBjcm9uIHN1Y2ggYXMgYSBtYWxmdW5jdGlvbmluZyBjYWNoaW5nIHBsdWdpbiBvciB3ZWJob3N0IHBy
b2JsZW1zLic7CgkJCQkJaWYgKCBpc3NldCggcGJfYmFja3VwYnVkZHk6OiR1aSApICYmIGlzX29iamVjdCg
gcGJfYmFja3VwYnVkZHk6OiR1aSApICkgewoJCQkJCQkkdGlwID0gcGJfYmFja3VwYnVkZHk6OiR1aS0+dG
lwKCAkbXNnLCAnJywgZmFsc2UgKTsKCQkJCQl9IGVsc2UgewoJCQkJCQkkdGlwID0gJygnIC4gJG1zZyAuI
CcpJzsKCQkJCQl9CgkJCQkJJHBhc3RfdGltZSAgICAgICA9ICc8YnI+PHNwYW4gc3R5bGU9ImNvbG9yOiBy
ZWQ7Ij4gKiogJyAuICR3YXJuaW5nIC4gJyAqKiAnIC4gJHRpcCAuICc8L3NwYW4+JzsKCQkJCQkkY3Jvbl9
3YXJuaW5nc1tdID0gJHdhcm5pbmc7CgkJCQl9CgoJCQkJLy8gUG9wdWxhdGUgY3JvbnMgYXJyYXkgZm9yIG
Rpc3BsYXlpbmcgbGF0ZXIuCgkJCQkkY3JvbnNbICR0aW1lIC4gJ3wnIC4gJGhvb2tfbmFtZSAuICd8JyAuI
CRpdGVtX25hbWUgXSA9IGFycmF5KAoJCQkJCSc8c3BhbiB0aXRsZT1cJ0tleTogJyAuICRpdGVtX25hbWUg
LiAnXCc+JyAuICRob29rX25hbWUgLiAnPC9zcGFuPicsCgkJCQkJcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQ
tPmRhdGUoIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5sb2NhbGl6ZV90aW1lKCAkdGltZSApICkgLiAnPG
JyPjxzcGFuIGNsYXNzPSJkZXNjcmlwdGlvbiI+IFRpbWVzdGFtcDogJyAuICR0aW1lIC4gJzwvc3Bhbj4nI
C4gJHBhc3RfdGltZSwKCQkJCQkkcGVyaW9kLAoJCQkJCSRpbnRlcnZhbCwKCQkJCQkkYXJndW1lbnRzLAoJ
CQkJKTsKCgkJCX0gLy8gRW5kIGZvcmVhY2guCgkJCXVuc2V0KCAkaXRlbSApOwoJCQl1bnNldCggJGl0ZW1
fbmFtZSApOwoJCX0gLy8gRW5kIGZvcmVhY2guCgkJdW5zZXQoICRldmVudCApOwoJCXVuc2V0KCAkaG9va1
9uYW1lICk7Cgl9IC8vIEVuZCBpZiBpc19udW1lcmljLgp9IC8vIEVuZCBmb3JlYWNoLgp1bnNldCggJGNyb
25faXRlbSApOwp1bnNldCggJHRpbWUgKTsK
###PACKDATA,FILE_END,/controllers/pages/server_info/_cron.php,importbuddy/controlle
rs/pages/server_info/_cron.php
###PACKDATA,FILE_START,/controllers/pages/server_info/_remote_sends.php,importbuddy
/controllers/pages/server_info/_remote_sends.php
PD9waHAKLyoqCiAqIFJlbW90ZSBTZW5kcyBTZXJ2ZXIgSW5mbyBDb250ZW50CiAqIElOUFVUOiAgJHRyb3V
ibGVzaG9vdGluZyAgb3B0aW9uYWwgKHRydWUpIHRvIHB1dCBpbiBMaXZlIHRyb3VibGVzaG9vdGluZyB0ZX
h0IG1vZGUuCiAqIE9VVFBVVDogJHNlbmRzICAgICAgICAgICAgcG9wdWxhdGVkCiAqCiAqIEBwYWNrYWdlI
EJhY2t1cEJ1ZGR5CiAqLwoKaWYgKCAhIGlzc2V0KCAkdHJvdWJsZXNob290aW5nICkgKSB7CgkkdHJvdWJs
ZXNob290aW5nID0gZmFsc2U7Cn0KCiRyZW1vdGVfc2VuZHMgICAgID0gYXJyYXkoKTsKJHNlbmRfZmlsZW9
wdGlvbnMgPSBwYl9iYWNrdXBidWRkeTo6JGZpbGVzeXN0ZW0tPmdsb2JfYnlfZGF0ZSggYmFja3VwYnVkZH
lfY29yZTo6Z2V0TG9nRGlyZWN0b3J5KCkgLiAnZmlsZW9wdGlvbnMvc2VuZC0qLnR4dCcgKTsKaWYgKCAhI
GlzX2FycmF5KCAkc2VuZF9maWxlb3B0aW9ucyApICkgewoJJHNlbmRfZmlsZW9wdGlvbnMgPSBhcnJheSgp
Owp9Cgpmb3JlYWNoICggJHNlbmRfZmlsZW9wdGlvbnMgYXMgJHNlbmRfZmlsZW9wdGlvbiApIHsKCgkkc2V
uZF9pZCA9IHN0cl9yZXBsYWNlKCAnLnR4dCcsICcnLCBzdHJfcmVwbGFjZSggJ3NlbmQtJywgJycsIGJhc2
VuYW1lKCAkc2VuZF9maWxlb3B0aW9uICkgKSApOwoKCXBiX2JhY2t1cGJ1ZGR5OjpzdGF0dXMoICdkZXRha
WxzJywgJ0Fib3V0IHRvIGxvYWQgZmlsZW9wdGlvbnMgZGF0YS4nICk7CglyZXF1aXJlX29uY2UgcGJfYmFj
a3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2NsYXNzZXMvZmlsZW9wdGlvbnMucGhwJzsKCXBiX2JhY2t
1cGJ1ZGR5OjpzdGF0dXMoICdkZXRhaWxzJywgJ0ZpbGVvcHRpb25zIGluc3RhbmNlICMyMzMuJyApOwoJJG
ZpbGVvcHRpb25zX29iaiA9IG5ldyBwYl9iYWNrdXBidWRkeV9maWxlb3B0aW9ucyggYmFja3VwYnVkZHlfY
29yZTo6Z2V0TG9nRGlyZWN0b3J5KCkgLiAnZmlsZW9wdGlvbnMvc2VuZC0nIC4gJHNlbmRfaWQgLiAnLnR4
dCcsICRyZWFkX29ubHkgPSB0cnVlLCAkaWdub3JlX2xvY2sgPSB0cnVlLCAkY3JlYXRlX2ZpbGUgPSBmYWx
zZSApOwoJaWYgKCB0cnVlICE9PSAoICRyZXN1bHQgPSAkZmlsZW9wdGlvbnNfb2JqLT5pc19vaygpICkgKS
B7CgkJcGJfYmFja3VwYnVkZHk6OnN0YXR1cyggJ2Vycm9yJywgX18oICdGYXRhbCBFcnJvciAjOTAzNC4yM
zMyMzkzMzMuIFVuYWJsZSB0byBhY2Nlc3MgZmlsZW9wdGlvbnMgZGF0YS4nLCAnaXQtbDEwbi1iYWNrdXBi
dWRkeScgKSAuICcgRXJyb3I6ICcgLiAkcmVzdWx0ICk7CgkJcmV0dXJuIGZhbHNlOwoJfQoJcGJfYmFja3V
wYnVkZHk6OnN0YXR1cyggJ2RldGFpbHMnLCAnRmlsZW9wdGlvbnMgZGF0YSBsb2FkZWQuJyApOwoKCSRyZW
1vdGVfc2VuZHNbICRzZW5kX2lkIF0gPSAkZmlsZW9wdGlvbnNfb2JqLT5vcHRpb25zOwoJdW5zZXQoICRma
Wxlb3B0aW9uc19vYmogKTsKCn0KCiRzZW5kcyA9IGFycmF5KCk7CmZvcmVhY2ggKCAkcmVtb3RlX3NlbmRz
IGFzICRzZW5kX2lkID0+ICRyZW1vdGVfc2VuZCApIHsKCS8vIENvcnJ1cHQgZmlsZW9wdGlvbnMgZmlsZS4
gU2tpcC4KCWlmICggISBpc3NldCggJHJlbW90ZV9zZW5kWydzdGFydF90aW1lJ10gKSApIHsKCQljb250aW
51ZTsKCX0KCgkvLyBTZXQgdXAgc29tZSB2YXJpYWJsZXMgYmFzZWQgb24gd2hldGhlciBmaWxlIGZpbmlza
GVkIHNlbmRpbmcgeWV0IG9yIG5vdC4KCWlmICggJHJlbW90ZV9zZW5kWydmaW5pc2hfdGltZSddID4gMCAp
IHsgLy8gRmluaXNoZWQgc2VuZGluZy4KCQkkdGltZV9hZ28gICAgPSBwYl9iYWNrdXBidWRkeTo6JGZvcm1
hdC0+dGltZV9hZ28oICRyZW1vdGVfc2VuZFsnZmluaXNoX3RpbWUnXSApIC4gJyBhZ287IDxiPnRvb2sgJz
sKCQkkZHVyYXRpb24gICAgPSBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+dGltZV9kdXJhdGlvbiggJHJlb
W90ZV9zZW5kWydmaW5pc2hfdGltZSddIC0gJHJlbW90ZV9zZW5kWydzdGFydF90aW1lJ10gKSAuICc8L2I+
JzsKCQkkZmluaXNoX3RpbWUgPSBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+ZGF0ZSggcGJfYmFja3VwYnV
kZHk6OiRmb3JtYXQtPmxvY2FsaXplX3RpbWUoICRyZW1vdGVfc2VuZFsnZmluaXNoX3RpbWUnXSApICk7Cg
l9IGVsc2UgeyAvLyBEaWQgbm90IGZpbmlzaCAoeWV0PykuCgkJJHRpbWVfYWdvICAgID0gcGJfYmFja3VwY
nVkZHk6OiRmb3JtYXQtPnRpbWVfYWdvKCAkcmVtb3RlX3NlbmRbJ3N0YXJ0X3RpbWUnXSApIC4gJyBhZ287
IDxiPnVuZmluaXNoZWQ8L2I+JzsKCQkkZHVyYXRpb24gICAgPSAnJzsKCQkkZmluaXNoX3RpbWUgPSAnPHN
wYW4gY2xhc3M9ImRlc2NyaXB0aW9uIj5Vbmtub3duPC9zcGFuPiAoJyAuICRyZW1vdGVfc2VuZFsnZmluaX
NoX3RpbWUnXSAuICcpJzsKCX0KCgkvLyBIYW5kbGUgc2hvd2luZyBzZW50IEltcG9ydEJ1ZGR5IChpZiBzZ
W50KS4KCWlmICggaXNzZXQoICRyZW1vdGVfc2VuZFsnc2VuZF9pbXBvcnRidWRkeSddICkgJiYgdHJ1ZSA9
PT0gJHJlbW90ZV9zZW5kWydzZW5kX2ltcG9ydGJ1ZGR5J10gKSB7CgkJJHNlbmRfaW1wb3J0YnVkZHkgPSA
nPGJyPjxzcGFuIGNsYXNzPSJkZXNjcmlwdGlvbiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMHB4OyI+KyBpbX
BvcnRidWRkeS5waHA8L3NwYW4+JzsKCX0gZWxzZSB7CgkJJHNlbmRfaW1wb3J0YnVkZHkgPSAnJzsKCX0KC
gkvLyBTaG93IGZpbGUgc2l6ZSAoaWYgYXZhaWxhYmxlKS4KCSRmaWxlX3NpemUgPSAnJzsKCWlmICggaXNz
ZXQoICRyZW1vdGVfc2VuZFsnZmlsZV9zaXplJ10gKSAmJiBpc19udW1lcmljKCAkcmVtb3RlX3NlbmRbJ2Z
pbGVfc2l6ZSddICkgJiYgJHJlbW90ZV9zZW5kWydmaWxlX3NpemUnXSA+PSAwICkgewoJCSRmaWxlX3Npem
UgPSAnPGJyPjxzcGFuIGNsYXNzPSJkZXNjcmlwdGlvbiIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMHB4OyI+U
2l6ZTogJyAuIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5maWxlX3NpemUoICRyZW1vdGVfc2VuZFsnZmls
ZV9zaXplJ10gKSAuICc8L3NwYW4+JzsKCX0KCgkkZXJyb3JfZGV0YWlscyA9ICcnOwoJaWYgKCBpc3NldCg
gJHJlbW90ZV9zZW5kWydlcnJvciddICkgKSB7CgkJJGVycm9yX2RldGFpbHMgPSAnPGJyPjxzcGFuIGNsYX
NzPSJkZXNjcmlwdGlvbiIgc3R5bGU9IgoJCSAgbWFyZ2luLWxlZnQ6IDEwcHg7CgkJICBkaXNwbGF5OiBib
G9jazsKCQkgIG1heC13aWR0aDogNTAwcHg7CgkJICBtYXgtaGVpZ2h0OiAyNTBweDsKCQkgIG92ZXJmbG93
OiBzY3JvbGw7CgkJICBiYWNrZ3JvdW5kOiAjZmZmOwoJCSAgcGFkZGluZzogMTBweDsiPicgLiAkcmVtb3R
lX3NlbmRbJ2Vycm9yJ10gLiAnPC9zcGFuPic7Cgl9CgoJLy8gU3RhdHVzIHZlcmJhZ2UgJiBzdHlsaW5nIG
Jhc2VkIG9uIHNlbmQgc3RhdHVzLgoJJGZhaWxlZCA9IGZhbHNlOwoJaWYgKCAnc3VjY2VzcycgPT0gJHJlb
W90ZV9zZW5kWydzdGF0dXMnXSApIHsKCQkkc3RhdHVzID0gJzxzcGFuIGNsYXNzPSJwYl9sYWJlbCBwYl9s
YWJlbC1zdWNjZXNzIj5TdWNjZXNzPC9zcGFuPic7Cgl9IGVsc2VpZiAoICdydW5uaW5nJyA9PSAkcmVtb3R
lX3NlbmRbJ3N0YXR1cyddICkgewoJCSRzdGF0dXMgPSAnPHNwYW4gY2xhc3M9InBiX2xhYmVsIHBiX2xhYm
VsLWluZm8iPkluIHByb2dyZXNzIG9yIHRpbWVkIG91dDwvc3Bhbj4nOwoJfSBlbHNlaWYgKCAndGltZW91d
CcgPT0gJHJlbW90ZV9zZW5kWydzdGF0dXMnXSApIHsKCQkkZmFpbGVkID0gdHJ1ZTsKCQkkc3RhdHVzID0g
JzxzcGFuIGNsYXNzPSJwYl9sYWJlbCBwYl9sYWJlbC1lcnJvciI+RmFpbGVkIChsaWtlbHkgdGltZW91dCk
8L3NwYW4+JzsKCX0gZWxzZWlmICggJ2ZhaWxlZCcgPT0gJHJlbW90ZV9zZW5kWydzdGF0dXMnXSApIHsKCQ
kkZmFpbGVkID0gdHJ1ZTsKCQkkc3RhdHVzID0gJzxzcGFuIGNsYXNzPSJwYl9sYWJlbCBwYl9sYWJlbC1lc
nJvciI+RmFpbGVkPC9zcGFuPic7Cgl9IGVsc2VpZiAoICdhYm9ydGVkJyA9PSAkcmVtb3RlX3NlbmRbJ3N0
YXR1cyddICkgewoJCSRmYWlsZWQgPSB0cnVlOwoJCSRzdGF0dXMgPSAnPHNwYW4gY2xhc3M9InBiX2xhYmV
sIHBiX2xhYmVsLXdhcm5pbmciPkFib3J0ZWQgYnkgdXNlcjwvc3Bhbj4nOwoJfSBlbHNlaWYgKCAnbXVsdG
lwYXJ0JyA9PSAkcmVtb3RlX3NlbmRbJ3N0YXR1cyddICkgewoJCSRzdGF0dXMgPSAnPHNwYW4gY2xhc3M9I
nBiX2xhYmVsIHBiX2xhYmVsLWluZm8iPk11bHRpcGFydCB0cmFuc2Zlcjwvc3Bhbj4nOwoJfSBlbHNlIHsK
CQkkc3RhdHVzID0gJzxzcGFuIGNsYXNzPSJwYl9sYWJlbCBwYl9sYWJlbC1pbXBvcnRhbnQiPicgLiB1Y2Z
pcnN0KCAkcmVtb3RlX3NlbmRbJ3N0YXR1cyddICkgLiAnPC9zcGFuPic7Cgl9CglpZiAoIGlzc2V0KCAkcm
Vtb3RlX3NlbmRbJ19tdWx0aXBhcnRfc3RhdHVzJ10gKSApIHsKCQkkc3RhdHVzIC49ICc8YnI+JyAuICRyZ
W1vdGVfc2VuZFsnX211bHRpcGFydF9zdGF0dXMnXTsKCX0KCgkvLyBEaXNwbGF5ICdWaWV3IExvZycgbGlu
ayBpZiBsb2cgYXZhaWxhYmxlIGZvciB0aGlzIHNlbmQuCgkkbG9nX2ZpbGUgPSBiYWNrdXBidWRkeV9jb3J
lOjpnZXRMb2dEaXJlY3RvcnkoKSAuICdzdGF0dXMtcmVtb3RlX3NlbmQtJyAuICRzZW5kX2lkIC4gJ18nIC
4gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydsb2dfc2VyaWFsJ10gLiAnLnR4dCc7CglpZiAoIGZhbHNlI
D09PSAkdHJvdWJsZXNob290aW5nICkgewoJCSRzdGF0dXMgLj0gJzxkaXYgY2xhc3M9InJvdy1hY3Rpb25z
Ij4nOwoKCQlpZiAoIGZpbGVfZXhpc3RzKCAkbG9nX2ZpbGUgKSApIHsKCQkJJHN0YXR1cyAuPSAnPGEgdGl
0bGU9IicgLiBfXyggJ1ZpZXcgUmVtb3RlIFNlbmQgTG9nJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLi
AnIiBocmVmPSInIC4gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAncmVtb3Rlc2VuZF9kZXRhaWxzJyApI
C4gJyZzZW5kX2lkPScgLiAkc2VuZF9pZCAuICcmIzAzODtUQl9pZnJhbWU9MSYjMDM4O3dpZHRoPTY0MCYj
MDM4O2hlaWdodD02MDAiIGNsYXNzPSJ0aGlja2JveCI+VmlldyBMb2c8L2E+JzsKCQl9CgoJCSRzdGF0dXM
gLj0gJyB8IDxhIHRpdGxlPSInIC4gX18oICdSZW1vdGUgU2VuZCBUZWNobmljYWwgRGV0YWlscycsICdpdC
1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJyIgaHJlZj0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjphamF4X3VybCggJ
3NlbmRfc3RhdHVzJyApIC4gJyZzZW5kX2lkPScgLiAkc2VuZF9pZCAuICcmIzAzODtUQl9pZnJhbWU9MSYj
MDM4O3dpZHRoPTY0MCYjMDM4O2hlaWdodD02MDAiIGNsYXNzPSJ0aGlja2JveCI+VmlldyBEZXRhaWxzPC9
hPic7CgoJCWlmICggJ3N1Y2Nlc3MnICE9ICRyZW1vdGVfc2VuZFsnc3RhdHVzJ10gKSB7CgkJCSRzdGF0dX
MgLj0gJyB8IDxhIHRpdGxlPSInIC4gX18oICdGb3JjZSByZXNlbmQgYXR0ZW1wdCcsICdpdC1sMTBuLWJhY
2t1cGJ1ZGR5JyApIC4gJyIgaHJlZj0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjphamF4X3VybCggJ3JlbW90ZXNl
bmRfcmV0cnknICkgLiAnJnNlbmRfaWQ9JyAuICRzZW5kX2lkIC4gJyYjMDM4O1RCX2lmcmFtZT0xJiMwMzg
7d2lkdGg9NjQwJiMwMzg7aGVpZ2h0PTYwMCIgY2xhc3M9InRoaWNrYm94Ij5SZXRyeSBTZW5kIE5vdzwvYT
4nOwoJCX0KCgkJJHN0YXR1cyAuPSAnPC9kaXY+JzsKCX0KCgkvLyBEZXRlcm1pbmUgZGVzdGluYXRpb24uC
gkkZGVzdGluYXRpb25fdHlwZSA9ICcnOwoJaWYgKCBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25z
WydyZW1vdGVfZGVzdGluYXRpb25zJ11bICRyZW1vdGVfc2VuZFsnZGVzdGluYXRpb24nXSBdICkgKSB7IC8
vIFZhbGlkIGRlc3RpbmF0aW9uLgoJCSRkZXN0aW5hdGlvbiAgICAgID0gcGJfYmFja3VwYnVkZHk6OiRvcH
Rpb25zWydyZW1vdGVfZGVzdGluYXRpb25zJ11bICRyZW1vdGVfc2VuZFsnZGVzdGluYXRpb24nXSBdWyd0a
XRsZSddIC4gJyAoJyAuIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sncmVtb3RlX2Rlc3RpbmF0aW9ucydd
WyAkcmVtb3RlX3NlbmRbJ2Rlc3RpbmF0aW9uJ10gXVsndHlwZSddIC4gJyknOwoJCSRkZXN0aW5hdGlvbl9
0eXBlID0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydyZW1vdGVfZGVzdGluYXRpb25zJ11bICRyZW1vdG
Vfc2VuZFsnZGVzdGluYXRpb24nXSBdWyd0eXBlJ107Cgl9IGVsc2UgeyAvLyBJbnZhbGlkIGRlc3RpbmF0a
W9uIC0gYmVlbiBkZWxldGVkIHNpbmNlIHNlbmQ/CgkJJGRlc3RpbmF0aW9uID0gJzxzcGFuIGNsYXNzPSJk
ZXNjcmlwdGlvbiI+VW5rbm93bjwvc3Bhbj4nOwoJfQoKCSR3cml0ZV9zcGVlZCA9ICcnOwoJaWYgKCBpc3N
ldCggJHJlbW90ZV9zZW5kWyd3cml0ZV9zcGVlZCddICkgJiYgKCAnJyAhPSAkcmVtb3RlX3NlbmRbJ3dyaX
RlX3NwZWVkJ10gKSApIHsKCQkkd3JpdGVfc3BlZWQgPSAnVHJhbnNmZXIgU3BlZWQ6ICZndDsgJyAuIHBiX
2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5maWxlX3NpemUoICRyZW1vdGVfc2VuZFsnd3JpdGVfc3BlZWQnXSAp
IC4gJy9zZWM8YnI+JzsKCX0KCgkkdHJpZ2dlciA9IHVjZmlyc3QoICRyZW1vdGVfc2VuZFsndHJpZ2dlcid
dICk7CglpZiAoIGlzX2FycmF5KCAkcmVtb3RlX3NlbmRbJ2ZpbGUnXSApICkgewoJCSRiYXNlX2ZpbGUgPS
AnLScgLiBfXyggJ011bHRpcGxlIGZpbGVzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnLSc7Cgl9I
GVsc2UgewoJCSRiYXNlX2ZpbGUgPSBiYXNlbmFtZSggJHJlbW90ZV9zZW5kWydmaWxlJ10gKTsKCX0KCWlm
ICggJ3JlbW90ZS1zZW5kLXRlc3QucGhwJyA9PSAkYmFzZV9maWxlICkgewoJCSRiYXNlX2ZpbGUgICA9IF9
fKCAnUmVtb3RlIGRlc3RpbmF0aW9uIHRlc3QnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICc8YnI+PH
NwYW4gY2xhc3M9ImRlc2NyaXB0aW9uIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEwcHg7Ij4oU2VuZCAmIGRlb
GV0ZSB0ZXN0IGZpbGUgcmVtb3RlLXNlbmQtdGVzdC5waHApPC9zcGFuPic7CgkJJGZpbGVfc2l6ZSAgID0g
Jyc7CgkJJHRyaWdnZXIgICAgID0gX18oICdNYW51YWwgc2V0dGluZ3MgdGVzdCcsICdpdC1sMTBuLWJhY2t
1cGJ1ZGR5JyApOwoJCSRkZXN0aW5hdGlvbiA9ICc8c3BhbiBjbGFzcz0iZGVzY3JpcHRpb24iPlRlc3Qgc2
V0dGluZ3M8L3NwYW4+JzsKCX0KCgkvLyBQdXNoIGludG8gYXJyYXkuCglpZiAoIGZhbHNlID09PSAkdHJvd
WJsZXNob290aW5nICkgewoJCSRzZW5kc1tdID0gYXJyYXkoCgkJCSRiYXNlX2ZpbGUgLiAkZmlsZV9zaXpl
IC4gJHNlbmRfaW1wb3J0YnVkZHkgLiAkZXJyb3JfZGV0YWlscywKCQkJJGRlc3RpbmF0aW9uLAoJCQkkdHJ
pZ2dlciwKCQkJJHdyaXRlX3NwZWVkIC4KCQkJCSdTdGFydDogJyAuIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybW
F0LT5kYXRlKCBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+bG9jYWxpemVfdGltZSggJHJlbW90ZV9zZW5kW
ydzdGFydF90aW1lJ10gKSApIC4gJzxicj4nIC4KCQkJCSdGaW5pc2g6ICcgLiAkZmluaXNoX3RpbWUgLiAn
PGJyPicgLgoJCQkJJzxzcGFuIGNsYXNzPSJkZXN
jcmlwdGlvbiI+JyAuICR0aW1lX2FnbyAuICRkdXJhdGlvbiAuICc8L3NwYW4+JywKCQkJJHN0YXR1cywKCQ
kpOwoJfSBlbHNlIHsgLy8gVHJvdWJsZXNob290aW5nIG1vZGUuCgkJJGVycm9yID0gJyc7CgkJaWYgKCBpc
3NldCggJHJlbW90ZV9zZW5kWydlcnJvciddICkgKSB7CgkJCSRlcnJvciA9ICRyZW1vdGVfc2VuZFsnZXJy
b3InXTsKCQl9CgkJJHNlbmRzW10gPSBhcnJheSgKCQkJJ3R5cGUnICAgICAgID0+ICRkZXN0aW5hdGlvbl9
0eXBlLAoJCQknZmlsZScgICAgICAgPT4gJHJlbW90ZV9zZW5kWydmaWxlJ10sCgkJCSdmYWlsZWQnICAgIC
A9PiAkZmFpbGVkLCAvLyBib29sIGlmIGZvciBzdXJlIGZhaWxlZC4KCQkJJ3NlbmRfc3BlZWQnID0+ICR3c
ml0ZV9zcGVlZCwKCQkJJ3N0YXJ0JyAgICAgID0+ICRyZW1vdGVfc2VuZFsnc3RhcnRfdGltZSddLAoJCQkn
ZmluaXNoJyAgICAgPT4gJHJlbW90ZV9zZW5kWydmaW5pc2hfdGltZSddLAoJCQknZHVyYXRpb24nICAgPT4
gJGR1cmF0aW9uLAoJCQknbG9nX2ZpbGUnICAgPT4gJGxvZ19maWxlLAoJCQknZXJyb3InICAgICAgPT4gJG
Vycm9yLAoJCSk7Cgl9Cn0gLy8gRW5kIGZvcmVhY2guCg==
###PACKDATA,FILE_END,/controllers/pages/server_info/_remote_sends.php,importbuddy/c
ontrollers/pages/server_info/_remote_sends.php
###PACKDATA,FILE_START,/controllers/pages/server_info/_server_tests.php,importbuddy
/controllers/pages/server_info/_server_tests.php
PD9waHAKLyoqCiAqIE9VVFBVVDogcG9wdWxhdGVzICR0ZXN0cy4KICoKICogSU1QT1JUQU5UIE5PVEU6CiA
qCiAqIFRoaXMgZmlsZSBpcyBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBwcm9qZWN0cyAvIHB1cnBvc2VzOg
ogKiAgICsgQmFja3VwQnVkZHkgKHRoaXMgcGx1Z2luKSBTZXJ2ZXIgSW5mbyBwYWdlLgogKiAgICsgSW1wb
3J0QnVkZHkucGhwIChCYWNrdXBCdWRkeSBpbXBvcnRlcikgU2VydmVyIEluZm9ybWF0aW9uIGJ1dHRvbiBk
cm9wZG93biBkaXNwbGF5LgogKiAgICsgU2VydmVyQnVkZHkgKHBsdWdpbikKICoKICogVXNlIGNhdXRpb24
gd2hlbiB1cGRhdGVkIHRvIHByZXZlbnQgYnJlYWtpbmcgb3RoZXIgcHJvamVjdHMuCiAqCiAqIEBwYWNrYW
dlICBCYWNrdXBCdWRkeQogKi8KCgovKioKICogR2V0cyBQSFAgSW5mbyBhcyBhbiBBcnJheQogKgogKiBAc
GFyYW0gaW50ICRtb2RlICBNb2RlLCBwYXNzZWQgaW50byBwaHBpbmZvKCkuCiAqCiAqIEByZXR1cm4gYXJy
YXkgIFBIUCBJbmZvIGNvbnRlbnRzLCBhcnJheSggbG9jYWwsIG1hc3RlciApLgogKi8KZnVuY3Rpb24gcGh
waW5mb19hcnJheSggJG1vZGUgPSAtMSApIHsKCW9iX3N0YXJ0KCk7CglwaHBpbmZvKCAkbW9kZSApOwoJJH
MgPSBvYl9nZXRfY29udGVudHMoKTsKCW9iX2VuZF9jbGVhbigpOwoJJGEgPSAkbXRjID0gYXJyYXkoKTsKC
WlmICggcHJlZ19tYXRjaF9hbGwoICcvPHRyPjx0ZCBjbGFzcz0iZSI+KC4qPyk8XC90ZD48dGQgY2xhc3M9
InYiPiguKj8pPFwvdGQ+KDo/PHRkIGNsYXNzPSJ2Ij4oLio/KTxcL3RkPik/PFwvdHI+LycsICRzLCAkbXR
jLCBQUkVHX1NFVF9PUkRFUiApICkgewoJCWZvcmVhY2ggKCAkbXRjIGFzICR2ICkgewoJCQlpZiAoICc8aT
5ubyB2YWx1ZTwvaT4nID09ICR2WzJdICkgewoJCQkJY29udGludWU7CgkJCX0KCQkJJG1hc3RlciA9ICcnO
woJCQlpZiAoIGlzc2V0KCAkdlszXSApICkgewoJCQkJJG1hc3RlciA9IHN0cmlwX3RhZ3MoICR2WzNdICk7
CgkJCX0KCQkJJGFbICR2WzFdIF0gPSBhcnJheSggJHZbMl0sICRtYXN0ZXIgKTsKCQl9Cgl9CglyZXR1cm4
gJGE7Cn0KCgovKioKICogR2V0IG5vcm1hbGl6ZWQgYm9vbGVhbiB2YWx1ZSBmcm9tIGluaV9nZXQoKQogKg
ogKiBAYXV0aG9yIG5pY29sYXMgZG90IGdyZWthcytwaHAgYXQgZ21haWwgZG90IGNvbQogKgogKiBAcGFyY
W0gc3RyaW5nICRhICBpbmlfZ2V0IFBhcmFtZXRlci4KICoKICogQHJldHVybiBib29sICBCb29sZWFuIHZh
bHVlLgogKi8KZnVuY3Rpb24gaW5pX2dldF9ib29sKCAkYSApIHsKCSRiID0gaW5pX2dldCggJGEgKTsKCXN
3aXRjaCAoIHN0cnRvbG93ZXIoICRiICkgKSB7CgkJY2FzZSAnb24nOgoJCWNhc2UgJ3llcyc6CgkJY2FzZS
AndHJ1ZSc6CgkJCXJldHVybiAnYXNzZXJ0LmFjdGl2ZScgIT09ICRhOwoKCQljYXNlICdzdGRvdXQnOgoJC
WNhc2UgJ3N0ZGVycic6CgkJCXJldHVybiAnZGlzcGxheV9lcnJvcnMnID09PSAkYTsKCgkJZGVmYXVsdDoK
CQkJcmV0dXJuIChib29sKSAoaW50KSAkYjsKCX0KfQoKLyoqCiAqIEdldHMgTG9hZCBhdmVyYWdlCiAqCiA
qIEByZXR1cm4gYXJyYXkgIExvYWQgQXZlcmFnZSBhcnJheS4KICovCmZ1bmN0aW9uIHBiX2JhY2t1cGJ1ZG
R5X2dldF9sb2FkYXZnKCkgewoJJHJlc3VsdCA9IGFycmF5X2ZpbGwoIDAsIDMsICduL2EnICk7CglpZiAoI
GZ1bmN0aW9uX2V4aXN0cyggJ3N5c19nZXRsb2FkYXZnJyApICkgewoJCSRsb2FkID0gQHN5c19nZXRsb2Fk
YXZnKCk7CgkJaWYgKCBpc19hcnJheSggJGxvYWQgKSApIHsKCQkJJGNvdW50ID0gY291bnQoICRsb2FkICk
7CgkJCWlmICggMyA9PT0gJGNvdW50ICkgewoJCQkJcmV0dXJuICRsb2FkOwoJCQl9IGVsc2UgewoJCQkJZm
9yICggJGkgPSAwOyAkaSA8ICRjb3VudDsgJGkrKyApIHsKCQkJCQkkcmVzdWx0WyAkaSBdID0gJGxvYWRbI
CRpIF07CgkJCQl9CgkJCX0KCQl9Cgl9CglpZiAoIHN1YnN0ciggUEhQX09TLCAwLCAzICkgPT0gJ1dJTicg
KSB7IC8vIFdJTkRPV1MuCgkJb2Jfc3RhcnQoKTsKCQkkc3RhdHVzID0gbnVsbDsKCQlAcGFzc3RocnUoICd
0eXBlcGVyZiAtc2MgMSAiXHByb2Nlc3NvcihfdG90YWwpXCUgcHJvY2Vzc29yIHRpbWUiJywgJHN0YXR1cy
ApOwoJCSRjb250ZW50ID0gb2JfZ2V0X2NvbnRlbnRzKCk7CgkJb2JfZW5kX2NsZWFuKCk7CgkJaWYgKCAwI
D09PSAkc3RhdHVzICkgewoJCQlpZiAoIHByZWdfbWF0Y2goICcvXCwiKFswLTldK1wuWzAtOV0rKSIvJywg
JGNvbnRlbnQsICRsb2FkICkgKSB7CgkJCQkkcmVzdWx0WzBdID0gbnVtYmVyX2Zvcm1hdF9pMThuKCAkbG9
hZFsxXSwgMiApIC4gJyAlJzsKCQkJCSRyZXN1bHRbMV0gPSAnbi9hJzsKCQkJCSRyZXN1bHRbMl0gPSAnbi
9hJzsKCQkJCXJldHVybiAkcmVzdWx0OwoJCQl9CgkJfQoJfSBlbHNlIHsKCQlpZiAoIGZ1bmN0aW9uX2V4a
XN0cyggJ2ZpbGVfZ2V0X2NvbnRlbnRzJyApICYmIEBmaWxlX2V4aXN0cyggJy9wcm9jL2xvYWRhdmcnICkg
KSB7CgkJCSRsb2FkID0gZXhwbG9kZSggY2hyKCAzMiApLCBAZmlsZV9nZXRfY29udGVudHMoICcvcHJvYy9
sb2FkYXZnJyApICk7CgkJCWlmICggaXNfYXJyYXkoICRsb2FkICkgJiYgKCBjb3VudCggJGxvYWQgKSA+PS
AzICkgKSB7CgkJCQkkcmVzdWx0ID0gYXJyYXlfc2xpY2UoICRsb2FkLCAwLCAzICk7CgkJCQlyZXR1cm4gJ
HJlc3VsdDsKCQkJfQoJCX0KCQlpZiAoIGZ1bmN0aW9uX2V4aXN0cyggJ3NoZWxsX2V4ZWMnICkgKSB7CgkJ
CSRzdHIgPSBzdWJzdHIoIHN0cnJjaHIoIEBzaGVsbF9leGVjKCAndXB0aW1lJyApLCAnOicgKSwgMSApOwo
JCQlyZXR1cm4gYXJyYXlfbWFwKCAndHJpbScsIGV4cGxvZGUoICcsJywgJHN0ciApICk7CgkJfQoJfQoJcm
V0dXJuICRyZXN1bHQ7Cn0KCgokdGVzdHMgPSBhcnJheSgpOwoKCi8vIFNraXAgdGhlc2UgdGVzdHMgaW4ga
W1wb3J0YnVkZHkuCmlmICggISBkZWZpbmVkKCAnUEJfSU1QT1JUQlVERFknICkgKSB7CgoJLy8gQkFDS1VQ
QlVERFkgVkVSU0lPTi4KCSRsYXRlc3RfdmVyc2lvbiA9IGJhY2t1cGJ1ZGR5X2NvcmU6OmRldGVybWluZUx
hdGVzdFZlcnNpb24oIHRydWUgKTsKCWlmICggZmFsc2UgPT09ICRsYXRlc3RfdmVyc2lvbiApIHsKCQkkc3
VnZ2VzdGlvbl90ZXh0ICAgICAgICAgICAgICAgICAgICAgPSAnW2luZm9ybWF0aW9uIHVuYXZhaWxhYmxlX
Sc7CgkJJGxhdGVzdF9iYWNrdXBidWRkeV9ub25taW5vcl92ZXJzaW9uID0gMDsKCX0gZWxzZSB7CgkJJGxh
dGVzdF9iYWNrdXBidWRkeV92ZXJzaW9uICAgICAgICAgID0gJGxhdGVzdF92ZXJzaW9uWzBdOwoJCSRsYXR
lc3RfYmFja3VwYnVkZHlfbm9ubWlub3JfdmVyc2lvbiA9ICRsYXRlc3RfdmVyc2lvblsxXTsKCgkJJHN1Z2
dlc3Rpb25fdGV4dCA9ICRsYXRlc3RfYmFja3VwYnVkZHlfbm9ubWlub3JfdmVyc2lvbjsKCQlpZiAoIHBiX
2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3ZlcnNpb24nICkgPT0gJGxhdGVzdF9iYWNrdXBidWRkeV92ZXJz
aW9uICkgeyAvLyBBdCBhYnNvbHV0ZSBsYXRlc3QgaW5jbHVkaW5nIG1pbm9yLgoJCQkkc3VnZ2VzdGlvbl9
0ZXh0IC49ICcgKG1ham9yIHZlcnNpb24pIG9yICcgLiAkbGF0ZXN0X2JhY2t1cGJ1ZGR5X3ZlcnNpb24gLi
AnICg8YSBocmVmPSJvcHRpb25zLWdlbmVyYWwucGhwP3BhZ2U9aXRoZW1lcy1saWNlbnNpbmciIHRpdGxlP
SJZb3UgbWF5IGVuYWJsZSB1cGdyYWRpbmcgdG8gdGhlIHF1aWNrIHJlbGVhc2UgdmVyc2lvbiBvbiB0aGUg
aVRoZW1lcyBMaWNlbnNpbmcgcGFnZS4iPnF1aWNrIHJlbGVhc2U8L2E+KSc7CgkJfSBlbHNlaWYgKCAkbGF
0ZXN0X2JhY2t1cGJ1ZGR5X25vbm1pbm9yX3ZlcnNpb24gIT0gJGxhdGVzdF9iYWNrdXBidWRkeV92ZXJzaW
9uICkgeyAvLyBNaW5vciB2ZXJzaW9uIGF2YWlsYWJsZSB0aGF0IGlzIG5ld2VyIHRoYW4gbGF0ZXN0IG1ha
m9yLgoJCQkkc3VnZ2VzdGlvbl90ZXh0IC49ICcgKG1ham9yIHZlcnNpb24pIG9yICcgLiAkbGF0ZXN0X2Jh
Y2t1cGJ1ZGR5X3ZlcnNpb24gLiAnICg8YSBocmVmPSJwbHVnaW5zLnBocD9pdGhlbWVzLXVwZGF0ZXItZm9
yY2UtbWlub3ItdXBkYXRlPTEiIHRpdGxlPSJZb3UgbWF5IGVuYWJsZSB1cGdyYWRpbmcgdG8gdGhlIHF1aW
NrIHJlbGVhc2UgdmVyc2lvbiBvbiB0aGUgaVRoZW1lcyBMaWNlbnNpbmcgcGFnZS4iPnF1aWNrIHJlbGVhc
2UgdmVyc2lvbjwvYT47IDxhIGhyZWY9Im9wdGlvbnMtZ2VuZXJhbC5waHA/cGFnZT1pdGhlbWVzLWxpY2Vu
c2luZyIgdGl0bGU9Ik9uY2UgeW91IGhhdmUgbGljZW5zZWQgQmFja3VwQnVkZHkgeW91IG1heSBzZWxlY3Q
gdGhpcyB0byBnbyB0byB0aGUgUGx1Z2lucyBwYWdlIHRvIHVwZ3JhZGUgdG8gdGhlIGxhdGVzdCBxdWljay
ByZWxlYXNlIHZlcnNpb24uIFR5cGljYWxseSBvbmx5IHRoZSBtYWluIG1ham9yIHZlcnNpb25zIGFyZSBhd
mFpbGFibGUgZm9yIGF1dG9tYXRpYyB1cGRhdGVzIGJ1dCB0aGlzIG9wdGlvbiBpbnN0cnVjdHMgdGhlIHVw
ZGF0ZXIgdG8gZGlzcGxheSBtaW5vciB2ZXJzaW9uIHVwZGF0ZXMgZm9yIGFwcHJveGltYXRlbHkgb25lIGh
vdXIuIElmIGl0IGRvZXMgbm90IGltbWVkaWF0ZWx5IGJlY29tZSBhdmFpbGFibGUgb24gdGhlIFBsdWdpbn
MgcGFnZSwgdHJ5IHJlZnJlc2hpbmcgYSBjb3VwbGUgb2YgdGltZXMuIj5xdWljayByZWxlYXNlIHNldHRpb
mdzPC9hPiknOwoJCX0gZWxzZSB7CgkJCSRzdWdnZXN0aW9uX3RleHQgLj0gJyAobGF0ZXN0KSc7CgkJfQoJ
fQoKCSR2ZXJzaW9uX3N0cmluZyA9IHBiX2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3ZlcnNpb24nICk7Cgk
vLyBJZiBvbiBERVYgc3lzdGVtICguZ2l0IGRpciBleGlzdHMpIHRoZW4gYXBwZW5kIHNvbWUgZGV0YWlscy
BvbiBjdXJyZW50LgoJaWYgKCBAZmlsZV9leGlzdHMoIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpI
C4gJy8uZ2l0L2xvZ3MvSEVBRCcgKSApIHsKCQkkY29tbWl0X2xvZyAgICAgID0gZXNjYXBlc2hlbGxhcmco
IHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fcGF0aCgpIC4gJy8uZ2l0L2xvZ3MvSEVBRCcgKTsKCQkkY29tbWl
0X2xpbmUgICAgID0gc3RyX3JlcGxhY2UoICdcJycsICdgJywgZXhlYyggInRhaWwgLW4gMSB7JGNvbW1pdF
9sb2d9IiApICk7CgkJJHZlcnNpb25fc3RyaW5nIC49ICcgPHNwYW4gc3R5bGU9ImRpc3BsYXk6IGJsb2NrO
yBtYXgtd2lkdGg6IDI1MHB4OyBmb250LXNpemU6IDhweDsgbGluZS1oZWlnaHQ6MS4yNTsiPltERVY6ICcg
LiAkY29tbWl0X2xpbmUgLiAnXTwvc3Bhbj4nOwoJfQoJJHBhcmVudF9jbGFzc190ZXN0ID0gYXJyYXkoCgk
JJ3RpdGxlJyAgICAgID0+ICdCYWNrdXBCdWRkeSBWZXJzaW9uJywKCQknc3VnZ2VzdGlvbicgPT4gJHN1Z2
dlc3Rpb25fdGV4dCwKCQkndmFsdWUnICAgICAgPT4gJHZlcnNpb25fc3RyaW5nLAoJCSd0aXAnICAgICAgI
CA9PiBfXyggJ1ZlcnNpb24gb2YgQmFja3VwQnVkZHkgY3VycmVudGx5IHJ1bm5pbmcgb24gdGhpcyBzaXRl
LicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJKTsKCWlmICggdmVyc2lvbl9jb21wYXJlKCBwYl9iYWN
rdXBidWRkeTo6c2V0dGluZ3MoICd2ZXJzaW9uJyApLCAkbGF0ZXN0X2JhY2t1cGJ1ZGR5X25vbm1pbm9yX3
ZlcnNpb24sICc8JyApICkgewoJCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnV0FSTklORyc7C
gl9IGVsc2UgewoJCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnT0snOwoJfQoJYXJyYXlfcHVz
aCggJHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKCgkvLyBXb3JkUHJlc3MgVkVSU0lPTi4KCWdsb2J
hbCAkd3BfdmVyc2lvbjsKCSRwYXJlbnRfY2xhc3NfdGVzdCA9IGFycmF5KAoJCSd0aXRsZScgICAgICA9Pi
AnV29yZFByZXNzIFZlcnNpb24nLAoJCSdzdWdnZXN0aW9uJyA9PiAnPj0gJyAuIHBiX2JhY2t1cGJ1ZGR5O
jpzZXR0aW5ncyggJ3dwX21pbmltdW0nICkgLiAnIChsYXRlc3QgYmVzdCknLAoJCSd2YWx1ZScgICAgICA9
PiAkd3BfdmVyc2lvbiwKCQkndGlwJyAgICAgICAgPT4gX18oICdWZXJzaW9uIG9mIFdvcmRQcmVzcyBjdXJ
yZW50bHkgcnVubmluZy4gSXQgaXMgaW1wb3J0YW50IHRvIGtlZXAgeW91ciBXb3JkUHJlc3MgdXAgdG8gZG
F0ZSBmb3Igc2VjdXJpdHkgJiBmZWF0dXJlcy4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCSk7CglpZ
iAoIHZlcnNpb25fY29tcGFyZSggJHdwX3ZlcnNpb24sIHBiX2JhY2t1cGJ1ZGR5OjpzZXR0aW5ncyggJ3dw
X21pbmltdW0nICksICc8PScgKSApIHsKCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ0ZBSUw
nOwoJfSBlbHNlIHsKCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKCX0KCWFycmF5X3
B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7CgoJLy8gTXlTUUwgVkVSU0lPTi4KCWdsb2Jhb
CAkd3BkYjsKCgkkbXlzcWxfdmVyc2lvbiAgICAgPSAkd3BkYi0+ZGJfdmVyc2lvbigpOwoJJHBhcmVudF9j
bGFzc190ZXN0ID0gYXJyYXkoCgkJJ3RpdGxlJyAgICAgID0+IF9fKCAnTXlTUUwgVmVyc2lvbicsICdpdC1
sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCSdzdWdnZXN0aW9uJyA9PiBfXyggJz49IDUuNi4wIChXb3JkUHJlc3
MgcmVjb21tZW5kcyA1LjYrKScsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCSd2YWx1ZScgICAgICA9P
iBQQl9CYWNrdXBidWRkeV9EQl9IZWxwZXJzOjppc19tYXJpYV9kYigpID8gJ24vYScgOiAkbXlzcWxfdmVy
c2lvbiwKCQkndGlwJyAgICAgICAgPT4gX18oICdWZXJzaW9uIG9mIHlvdXIgZGF0YWJhc2Ugc2VydmVyICh
teXNxbCkgYXMgcmVwb3J0ZWQgdG8gdGhpcyBzY3JpcHQgYnkgV29yZFByZXNzLicsICdpdC1sMTBuLWJhY2
t1cGJ1ZGR5JyApLAoJKTsKCgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKCglpZiAoI
GZhbHNlID09PSBQQl9CYWNrdXBidWRkeV9EQl9IZWxwZXJzOjppc19tYXJpYV9kYigpICkgewoJCWlmICgg
dmVyc2lvbl9jb21wYXJlKCAkbXlzcWxfdmVyc2lvbiwgJzUuMC4xNScsICc8PScgKSApIHsKCQkJJHBhcmV
udF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdGQUlMJzsKCQl9IGVsc2VpZiAoIHZlcnNpb25fY29tcGFyZS
ggJG15c3FsX3ZlcnNpb24sICc1LjYuMCcsICc8PScgKSApIHsKCQkJJHBhcmVudF9jbGFzc190ZXN0Wydzd
GF0dXMnXSA9ICdXQVJOSU5HJzsKCQl9Cgl9CgoJYXJyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X2NsYXNz
X3Rlc3QgKTsKCgkvLyBNYXJpYURCIFZlcnNpb24uCgkkbWFyaWFfZGJfdmVyc2lvbiAgPSBQQl9CYWNrdXB
idWRkeV9EQl9IZWxwZXJzOjpnZXRfZGJfdmVyc2lvbigpOwoJJHBhcmVudF9jbGFzc190ZXN0ID0gYXJyYX
koCgkJJ3RpdGxlJyAgICAgID0+IF9fKCAnTWFyaWFEQiBWZXJzaW9uJywgJ2l0LWwxMG4tYmFja3VwYnVkZ
HknICksCgkJJ3N1Z2dlc3Rpb24nID0+IF9fKCAnPj0gMTAuMC4xMCAoV29yZFByZXNzIHJlY29tbWVuZHMg
MTAuMCspJywgJ2l0LWwxMG4tYmFja3VwYnVkZHk
nICksCgkJJ3ZhbHVlJyAgICAgID0+IFBCX0JhY2t1cGJ1ZGR5X0RCX0hlbHBlcnM6OmlzX21hcmlhX2RiKC
kgPyAkbWFyaWFfZGJfdmVyc2lvbiA6ICduL2EnLAoJCSd0aXAnICAgICAgICA9PiBfXyggJ1ZlcnNpb24gb
2YgeW91ciBkYXRhYmFzZSBzZXJ2ZXIgKG1hcmlhZGIpIGFzIHJlcG9ydGVkIHRvIHRoaXMgc2NyaXB0IGJ5
IFdvcmRQcmVzcy4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCSk7CgoJJHBhcmVudF9jbGFzc190ZXN
0WydzdGF0dXMnXSA9ICdPSyc7CgoJaWYgKCB0cnVlID09PSBQQl9CYWNrdXBidWRkeV9EQl9IZWxwZXJzOj
ppc19tYXJpYV9kYigpICkgewoJCWlmICggdmVyc2lvbl9jb21wYXJlKCAkbWFyaWFfZGJfdmVyc2lvbiwgJ
zEwLjAuMCcsICc8JyApICkgewoJCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ0ZBSUwnOwoJ
CX0gZWxzZWlmICggdmVyc2lvbl9jb21wYXJlKCAkbWFyaWFfZGJfdmVyc2lvbiwgJzEwLjAuMTAnLCAnPCc
gKSApIHsKCQkJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdXQVJOSU5HJzsKCQl9Cgl9CgoJYX
JyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKCgkvLyBBRERIQU5ETEVSIEhUQUNDR
VNTIENIRUNLLgoJJHBhcmVudF9jbGFzc190ZXN0ID0gYXJyYXkoCgkJJ3RpdGxlJyAgICAgID0+ICdBZGRI
YW5kbGVyIGluIC5odGFjY2VzcycsCgkJJ3N1Z2dlc3Rpb24nID0+ICdob3N0IGRlcGVuZGFudCAobm9uZSB
iZXN0IHVubGVzcyByZXF1aXJlZCknLAoJCSd0aXAnICAgICAgICA9PiBfXyggJ0lmIGRldGVjdGVkIHRoZW
4geW91IG1heSBoYXZlIGRpZmZpY3VsdHkgbWlncmF0aW5nIHlvdXIgc2l0ZSB0byBzb21lIGhvc3RzIHdpd
GhvdXQgZmlyc3QgcmVtb3ZpbmcgdGhlIEFkZEhhbmRsZXIgbGluZS4gU29tZSBob3N0cyB3aWxsIG1hbGZ1
bmN0aW9uIHdpdGggdGhpcyBsaW5lIGluIHRoZSAuaHRhY2Nlc3MgZmlsZS4nLCAnaXQtbDEwbi1iYWNrdXB
idWRkeScgKSwKCSk7CglpZiAoIGZpbGVfZXhpc3RzKCBBQlNQQVRIIC4gJy5odGFjY2VzcycgKSApIHsKCQ
kkYWRkaGFuZGxlcl9ub3RlID0gJyc7CgkJJGh0YWNjZXNzX2xpbmVzICA9IGZpbGUoIEFCU1BBVEggLiAnL
mh0YWNjZXNzJyApOwoJCWZvcmVhY2ggKCAkaHRhY2Nlc3NfbGluZXMgYXMgJGh0YWNjZXNzX2xpbmUgKSB7
CgkJCWlmICggcHJlZ19tYXRjaCggJy9eKFxzKilBZGRIYW5kbGVyKC4qKS9pJywgJGh0YWNjZXNzX2xpbmU
sICRtYXRjaGVzICkgPiAwICkgewoJCQkJJGFkZGhhbmRsZXJfbm90ZSA9IHBiX2JhY2t1cGJ1ZGR5Ojp0aX
AoIGh0bWxlbnRpdGllcyggJG1hdGNoZXNbMF0gKSwgX18oICdBZGRIYW5kbGVyIFZhbHVlJywgJ2l0LWwxM
G4tYmFja3VwYnVkZHknICksIGZhbHNlICk7CgkJCX0KCQl9CgkJdW5zZXQoICRodGFjY2Vzc19saW5lcyAp
OwoKCQlpZiAoICcnID09ICRhZGRoYW5kbGVyX25vdGUgKSB7CgkJCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3R
hdHVzJ10gPSAnT0snOwoJCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3ZhbHVlJ10gID0gX18oICdub25lLCBuL2
EnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsKCQl9IGVsc2UgewoJCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ
3N0YXR1cyddID0gJ1dBUk5JTkcnOwoJCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3ZhbHVlJ10gID0gX18oICdl
eGlzdHMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICRhZGRoYW5kbGVyX25vdGU7CgkJfQoJCXVuc2V
0KCAkaHRhY2Nlc3NfY29udGVudHMgKTsKCX0gZWxzZSB7CgkJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dX
MnXSA9ICdPSyc7CgkJJHBhcmVudF9jbGFzc190ZXN0Wyd2YWx1ZSddICA9IF9fKCAnbi9hJywgJ2l0LWwxM
G4tYmFja3VwYnVkZHknICk7Cgl9CglhcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnRfY2xhc3NfdGVzdCAp
OwoKCgkvLyBTZXQgdXAgWmlwQnVkZHkgd2hlbiB3aXRoaW4gQmFja3VwQnVkZHkuCglyZXF1aXJlX29uY2U
gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl9wYXRoKCkgLiAnL2xpYi96aXBidWRkeS96aXBidWRkeS5waHAnOw
oJcGJfYmFja3VwYnVkZHk6OiRjbGFzc2VzWyd6aXBidWRkeSddID0gbmV3IHBsdWdpbmJ1ZGR5X3ppcGJ1Z
GR5KCBiYWNrdXBidWRkeV9jb3JlOjpnZXRCYWNrdXBEaXJlY3RvcnkoKSApOwoKCXJlcXVpcmVfb25jZSBw
Yl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvbGliL215c3FsYnVkZHkvbXlzcWxidWRkeS5waHA
nOwoJZ2xvYmFsICR3cGRiOwoJcGJfYmFja3VwYnVkZHk6OiRjbGFzc2VzWydteXNxbGJ1ZGR5J10gPSBuZX
cgcGJfYmFja3VwYnVkZHlfbXlzcWxidWRkeSggREJfSE9TVCwgREJfTkFNRSwgREJfVVNFUiwgREJfUEFTU
1dPUkQsICR3cGRiLT5wcmVmaXggKTsKfQoKCi8vIFBIUCBWRVJTSU9OLgppZiAoICEgZGVmaW5lZCggJ3Bs
dWdpbmJ1ZGR5X2ltcG9ydGJ1ZGR5JyApICkgewoJJHBocF9taW5pbXVtID0gJzUuMyc7Cn0gZWxzZSB7IC8
vIGltcG9ydGJ1ZGR5IHZhbHVlLgoJJHBocF9taW5pbXVtID0gcGJfYmFja3VwYnVkZHk6OnNldHRpbmdzKC
AncGhwX21pbmltdW0nICk7Cn0KJHBhcmVudF9jbGFzc190ZXN0ID0gYXJyYXkoCgkndGl0bGUnICAgICAgP
T4gJ1BIUCBWZXJzaW9uJywKCSdzdWdnZXN0aW9uJyA9PiAnPj0gJyAuICRwaHBfbWluaW11bSAuICcgKFdv
cmRQcmVzcyByZWNvbW1lbmRzIDcuMCspJywKCSd2YWx1ZScgICAgICA9PiBwaHB2ZXJzaW9uKCksCgkndGl
wJyAgICAgICAgPT4gX18oICdWZXJzaW9uIG9mIFBIUCBjdXJyZW50bHkgcnVubmluZyBvbiB0aGlzIHNpdG
UuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCik7CmlmICggdmVyc2lvbl9jb21wYXJlKCBQSFBfVkVSU
0lPTiwgJHBocF9taW5pbXVtLCAnPD0nICkgKSB7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0g
J0ZBSUwnOwp9IGVsc2VpZiAoIHZlcnNpb25fY29tcGFyZSggUEhQX1ZFUlNJT04sICc1LjYnLCAnPD0nICk
gKSB7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ1dBUk5JTkcnOwp9IGVsc2UgewoJJHBhcm
VudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdPSyc7Cn0KYXJyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X
2NsYXNzX3Rlc3QgKTsKCgovLyBQSFAgbWF4X2V4ZWN1dGlvbl90aW1lLgokcGFyZW50X2NsYXNzX3Rlc3Qg
PSBhcnJheSgKCSd0aXRsZScgICAgICA9PiAnUEhQIG1heF9leGVjdXRpb25fdGltZSAoc2VydmVyLXJlcG9
ydGVkKScsCgknc3VnZ2VzdGlvbicgPT4gJz49IDMwIHNlY29uZHMgKDMwKyBiZXN0KScsCgkndmFsdWUnIC
AgICAgPT4gaW5pX2dldCggJ21heF9leGVjdXRpb25fdGltZScgKSwKCSd0aXAnICAgICAgICA9PiBfXyggJ
01heGltdW0gYW1vdW50IG9mIHRpbWUgdGhhdCBQSFAgYWxsb3dzIHNjcmlwdHMgdG8gcnVuLiBBZnRlciB0
aGlzIGxpbWl0IGlzIHJlYWNoZWQgdGhlIHNjcmlwdCBpcyBraWxsZWQuIFRoZSBtb3JlIHRpbWUgYXZhaWx
hYmxlIHRoZSBiZXR0ZXIuIDMwIHNlY29uZHMgaXMgbW9zdCBjb21tb24gdGhvdWdoIDYwIHNlY29uZHMgaX
MgaWRlYWwuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCik7CmlmICggc3RyX2lyZXBsYWNlKCAncycsI
CcnLCBpbmlfZ2V0KCAnbWF4X2V4ZWN1dGlvbl90aW1lJyApICkgPCAzMCApIHsKCSRwYXJlbnRfY2xhc3Nf
dGVzdFsnc3RhdHVzJ10gPSAnV0FSTklORyc7Cn0gZWxzZSB7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR
1cyddID0gJ09LJzsKfQphcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnRfY2xhc3NfdGVzdCApOwoKCgovLy
BNYXhpbXVtIFBIUCBSdW50aW1lIChBQ1RVQUwgVEVTVEVEISkuCmlmICggISBkZWZpbmVkKCAnUEJfSU1QT
1JUQlVERFknICkgKSB7CglpZiAoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sndGVzdGVkX3BocF9ydW50
aW1lJ10gPiAwICkgewoJCSRsYXN0X3Rlc3RlZCAgICAgICAgICA9IHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF
0LT5kYXRlKCBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+bG9jYWxpemVfdGltZSggcGJfYmFja3VwYnVkZH
k6OiRvcHRpb25zWydsYXN0X3Rlc3RlZF9waHBfcnVudGltZSddICkgKSAuICcgKCcgLiBwYl9iYWNrdXBid
WRkeTo6JGZvcm1hdC0+dGltZV9hZ28oIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbGFzdF90ZXN0ZWRf
cGhwX3J1bnRpbWUnXSApIC4gJyAnIC4gX18oICdhZ28nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICc
pJzsKCQkkdGVzdGVkX3J1bnRpbWVfdmFsdWUgPSAnPHNwYW4gaWQ9InBiX3N0YXRzX3J1bl9waHBfcnVudG
ltZV90ZXN0IiB0aXRsZT0iTGFzdCB0ZXN0ZWQ6IGAnIC4gJGxhc3RfdGVzdGVkIC4gJ2AiPicgLiBwYl9iY
WNrdXBidWRkeTo6JG9wdGlvbnNbJ3Rlc3RlZF9waHBfcnVudGltZSddIC4gJyAnIC4gX18oICdzZWNzJywg
J2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnPC9zcGFuPic7Cgl9IGVsc2UgewoJCSR0ZXN0ZWRfcnVudGl
tZV92YWx1ZSA9ICc8c3BhbiBjbGFzcz0iZGVzY3JpcHRpb24iIGlkPSJwYl9zdGF0c19ydW5fcGhwX3J1bn
RpbWVfdGVzdCI+JyAuIF9fKCAnUGVuZGluZy4uLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzwvc
3Bhbj4nOwoJfQoJJGRpc2FibGVkID0gJyc7CglpZiAoIDAgPT0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25z
WydwaHBfcnVudGltZV90ZXN0X21pbmltdW1faW50ZXJ2YWwnXSApIHsKCQkkZGlzYWJsZWQgPSAnPHNwYW4
gdGl0bGU9IicgLiBfXyggJ0Rpc2FibGVkIGJhc2VkIG9uIEFkdmFuY2VkIFNldHRpbmdzLicsICdpdC1sMT
BuLWJhY2t1cGJ1ZGR5JyApIC4gJyI+JyAuIF9fKCAnRGlzYWJsZWQnLCAnaXQtbDEwbi1iYWNrdXBidWRke
ScgKSAuICc8L3NwYW4+JzsKCX0KCSRwYXJlbnRfY2xhc3NfdGVzdCA9IGFycmF5KAoJCSd0aXRsZScgICAg
ICA9PiAnVGVzdGVkIFBIUCBNYXggRXhlY3V0aW9uIFRpbWUnLAoJCSdzdWdnZXN0aW9uJyA9PiAnPj0gMzA
gc2Vjb25kcyAoMzArIGJlc3QpJywKCQkndmFsdWUnICAgICAgPT4gJHRlc3RlZF9ydW50aW1lX3ZhbHVlIC
4gJGRpc2FibGVkIC4gJyA8YSBjbGFzcz0icGJfYmFja3VwYnVkZHlfcmVmcmVzaF9zdGF0cyBwYl9iYWNrd
XBidWRkeV90ZXN0UEhQUnVudGltZSIgcmVsPSJydW5fcGhwX3J1bnRpbWVfdGVzdCIgYWx0PSInIC4gcGJf
YmFja3VwYnVkZHk6OmFqYXhfdXJsKCAncnVuX3BocF9ydW50aW1lX3Rlc3QnICkgLiAnIiB0aXRsZT0iJyA
uIF9fKCAnUnVuIFRlc3QgKG1heSB0YWtlIHNldmVyYWwgbWludXRlcyknLCAnaXQtbDEwbi1iYWNrdXBidW
RkeScgKSAuICciPjxpbWcgc3JjPSInIC4gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKSAuICcvaW1hZ
2VzL3JlZnJlc2hfZ3JheS5naWYiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogLTFweDsiPiA8c3BhbiBjbGFz
cz0icGJfYmFja3VwYnVkZHlfbG9hZGluZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG1hcmdpbi1sZWZ0OiA
xMHB4OyI+PGltZyBzcmM9IicgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpIC4gJy9pbWFnZXMvbG
9hZGluZy5naWYiIGFsdD0iJyAuIF9fKCAnTG9hZGluZy4uLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApI
C4gJyIgdGl0bGU9IicgLiBfXyggJ0xvYWRpbmcuLi4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICci
IHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiAtM3B4OyIgLz48L3NwYW4
+PC9hPicsCgkJJ3RpcCcgICAgICAgID0+IF9fKCAnVGhpcyBpcyB0aGUgVEVTVEVEIGFtb3VudCBvZiB0aW
1lIHRoYXQgUEhQIGFsbG93cyBzY3JpcHRzIHRvIHJ1bi4gVGhlIHRlc3Qgd2FzIHBlcmZvcm1lZCBieSBvd
XRwdXR0aW5nIC8gbG9nZ2luZyB0aGUgc2NyaXB0IHRpbWUgZWxhcHNlZCBvbmNlIHBlciBzZWNvbmQgdW50
aWwgUEhQIHRpbWVkIG91dCBhbmQgdGh1cyB0aGUgdGltZSByZXBvcnRlZCBzdG9wcGVkLiBUaGlzIGdpdmV
zIGEgZmFpcmx5IGFjY3VyYXRlIG51bWJlciBjb21wYXJlZCB0byB0aGUgcmVwb3J0ZWQgbnVtYmVyIHdoaW
NoIGlzIG1vc3Qgb2Z0ZW4gb3ZlcnJpZGVuIGF0IHRoZSBzZXJ2ZXIgd2l0aCBhIGxpbWl0LicsICdpdC1sM
TBuLWJhY2t1cGJ1ZGR5JyApIC4gJyAnIC4gJ1RoaXMgdGVzdCBpcyBsaW1pdGVkIHRvIGAnIC4gcGJfYmFj
a3VwYnVkZHk6OiRvcHRpb25zWydwaHBfcnVudGltZV90ZXN0X21pbmltdW1faW50ZXJ2YWwnXSAuICdgIHN
lY29uZHMgYmFzZWQgb24geW91ciBhZHZhbmNlZCBzZXR0aW5ncyAoMCA9IGRpc2FibGVkKS4gQXV0b21hdG
ljYWxseSByZXNjYW5zIGR1cmluZyBob3VzZWtlZXBpbmcgYWZ0ZXIgYCcgLiBwYl9iYWNrdXBidWRkeTo6J
G9wdGlvbnNbJ3BocF9ydW50aW1lX3Rlc3RfbWluaW11bV9pbnRlcnZhbCddIC4gJ2Agc2Vjb25kcyBlbGFw
c2UgYmV0d2VlbiB0ZXN0cyBhcyB3ZWxsIGFsd2F5cyBvbiBwbHVnaW4gYWN0aXZhdGlvbi4nLAoJKTsKCWl
mICggaXNfbnVtZXJpYyggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWRfcGhwX3J1bnRpbWUnXS
ApICYmICggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWRfcGhwX3J1bnRpbWUnXSA8IDI5ICkgK
SB7CgkJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdGQUlMJzsKCX0gZWxzZSB7CgkJJHBhcmVu
dF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdPSyc7Cgl9CglhcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnR
fY2xhc3NfdGVzdCApOwp9CgovLyBNYXhpbXVtIFBIUCBSdW50aW1lIChBQ1RVQUwgVEVTVEVEISkuCiRiYl
9waHBfbWF4X2V4ZWN1dGlvbiAgICAgICAgPSBiYWNrdXBidWRkeV9jb3JlOjpkZXRlY3RNYXhFeGVjdXRpb
25UaW1lKCk7IC8vIExlc3NlciBvZiBQSFAgcmVwb3J0ZWQgYW5kIHRlc3RlZC4gRmxvYXQuCiRiYl9waHBf
bWF4X2V4ZWN1dGlvbl9zdHJpbmcgPSAkYmJfcGhwX21heF9leGVjdXRpb24gLiAnICcgLiBfXyggJ3NlY3M
nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgLy8gU3RyaW5nLgoKaWYgKCBiYWNrdXBidWRkeV9jb3JlOj
phZGp1c3RlZE1heEV4ZWN1dGlvblRpbWUoKSAhPSAkYmJfcGhwX21heF9leGVjdXRpb24gKSB7IC8vIFRha
2VzIGludG8gYWNjb3VudCB1c2VyIG92ZXJyaWRlLgoJJGJiX3BocF9tYXhfZXhlY3V0aW9uX3N0cmluZyA9
ICc8c3RyaWtlPicgLiAkYmJfcGhwX21heF9leGVjdXRpb25fc3RyaW5nIC4gJzwvc3RyaWtlPiAnIC4gX18
oICdPdmVycmlkZGVuIGluIHNldHRpbmdzIHRvOicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJyAnIC
4gYmFja3VwYnVkZHlfY29yZTo6YWRqdXN0ZWRNYXhFeGVjdXRpb25UaW1lKCkgLiAnICcgLiBfXyggJ3NlY
3MnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsKfQppZiAoICEgZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZ
JyApICkgewoJJHBhcmVudF9jbGFzc190ZXN0ID0gYXJyYXkoCgkJJ3RpdGxlJyAgICAgID0+ICdCYWNrdXB
CdWRkeSBQSFAgTWF4IEV4ZWN1dGlvbiBUaW1lJy
wKCQknc3VnZ2VzdGlvbicgPT4gJz49IDMwIHNlY29uZHMgKDMwKyBiZXN0KScsCgkJJ3ZhbHVlJyAgICAgI
D0+ICRiYl9waHBfbWF4X2V4ZWN1dGlvbl9zdHJpbmcsCgkJJ3RpcCcgICAgICAgID0+IGVzY19hdHRyX18o
ICdUaGlzIGlzIHRoZSBtYXggZXhlY3V0aW9uIHRpbWUgQmFja3VwQnVkZHkgaXMgdXNpbmcgZm9yIGNodW5
raW5nLiBJdCBpcyB0aGUgbGVzc2VyIG9mIHRoZSB2YWx1ZXMgb2YgdGhlIHJlcG9ydGVkIFBIUCBleGVjdX
Rpb24gdGltZSBhbmQgYWN0dWFsIHRlc3RlZCBleGVjdXRpb24gdGltZS4gSWYgdGhlIEJhY2t1cEJ1ZGR5I
CJNYXggdGltZSBwZXIgY2h1bmsiIEFkdmFuY2VkIFNldHRpbmcgaXMgc2V0IHRoZW4gdGhhdCB2YWx1ZSBp
cyB1c2VkIGluc3RlYWQuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkpOwoJaWYgKCAkYmJfcGhwX21
heF9leGVjdXRpb24gPCAyOCApIHsgLy8gSGFzIGEgbGl0dGxlIHdpZ2dsZSByb29tLgoJCSRwYXJlbnRfY2
xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnRkFJTCc7Cgl9IGVsc2UgewoJCSRwYXJlbnRfY2xhc3NfdGVzdFsnc
3RhdHVzJ10gPSAnT0snOwoJfQoJYXJyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsK
fQoKJHBocGluZm9fYXJyYXkgPSBwaHBpbmZvX2FycmF5KCA0ICk7CgovLyBNRU1PUlkgTElNSVQuCi8qKgo
gKiBDb252ZXJ0IHN0cmluZyBzaXplIHRvIGJ5dGVzLgogKgogKiBAcGFyYW0gc3RyaW5nICR2YWwgIEJ5dG
Ugc3RyaW5nLgogKgogKiBAcmV0dXJuIGludCAgVmFsdWUgaW4gYnl0ZXMuCiAqLwpmdW5jdGlvbiBiYl9yZ
XR1cm5fYnl0ZXMoICR2YWwgKSB7CgkkdmFsICA9IHRyaW0oICR2YWwgKTsKCSRsYXN0ID0gc3RydG9sb3dl
ciggJHZhbFsgc3RybGVuKCAkdmFsICkgLSAxIF0gKTsKCSR2YWwgID0gKGludCkgJHZhbDsgLy8gVGhpcyB
kdW1wcyBhbnkgdHJhaWxpbmcgbW9kaWZpZXIgLSBhdm9pZHMgUEhQIE5vdGljZS4KCXN3aXRjaCAoICRsYX
N0ICkgewoJCS8vIFRoZSAnRycgbW9kaWZpZXIgaXMgYXZhaWxhYmxlIHNpbmNlIFBIUCA1LjEuMC4KCQljY
XNlICdnJzoKCQkJJHZhbCAqPSAxMDI0OwoJCQkvLyBubyBicmVhay4KCQljYXNlICdtJzoKCQkJJHZhbCAq
PSAxMDI0OwoJCQkvLyBubyBicmVhay4KCQljYXNlICdrJzoKCQkJJHZhbCAqPSAxMDI0OwoJCQkvLyBubyB
icmVhay4KCX0KCglyZXR1cm4gJHZhbDsKfQoKJG1lbV9saW1pdHMgPSBhcnJheSgpOwppZiAoICEgaXNzZX
QoICRwaHBpbmZvX2FycmF5WydtZW1vcnlfbGltaXQnXSApICkgewoJJHBhcmVudF9jbGFzc192YWwgPSAnd
W5rbm93bic7Cn0gZWxzZSB7CglnbG9iYWwgJGJiX2xvY2FsX21lbSwgJGJiX21hc3Rlcl9tZW07CgkkYmJf
bG9jYWxfbWVtICAgICAgID0gYmJfcmV0dXJuX2J5dGVzKCAkcGhwaW5mb19hcnJheVsnbWVtb3J5X2xpbWl
0J11bMF0gKSAvIDEwMjQgLyAxMDI0OwoJJGxvY2FsX21lbV9hc19ieXRlcyA9IGJiX3JldHVybl9ieXRlcy
ggJHBocGluZm9fYXJyYXlbJ21lbW9yeV9saW1pdCddWzBdICk7CglpZiAoICRsb2NhbF9tZW1fYXNfYnl0Z
XMgPT0gKGludCkgJHBocGluZm9fYXJyYXlbJ21lbW9yeV9saW1pdCddWzBdICkgewoJCS8vIExvY2FsIHZh
bHVlIGlzIGRlZmluZWQgaW4gYnl0ZXMgc28gd2UgbmVlZCB0byAiY29udmVydCIgdG8gTSBhcyBvdXIgZGV
mYXVsdCB1bml0LgoJCSRtZW1fbGltaXRzW10gPSAoICRsb2NhbF9tZW1fYXNfYnl0ZXMgLyAxMDI0IC8gMT
AyNCApIC4gJ00nOwoJfSBlbHNlIHsKCQkkbWVtX2xpbWl0c1tdID0gJHBocGluZm9fYXJyYXlbJ21lbW9ye
V9saW1pdCddWzBdOwoJfQoJJHBhcmVudF9jbGFzc192YWwgPSAkcGhwaW5mb19hcnJheVsnbWVtb3J5X2xp
bWl0J11bMF07CglpZiAoIGlzc2V0KCAkcGhwaW5mb19hcnJheVsnbWVtb3J5X2xpbWl0J11bMV0gKSApIHs
KCQkkYmJfbWFzdGVyX21lbSAgICAgICA9IGJiX3JldHVybl9ieXRlcyggJHBocGluZm9fYXJyYXlbJ21lbW
9yeV9saW1pdCddWzFdICkgLyAxMDI0IC8gMTAyNDsKCQkkbWFzdGVyX21lbV9hc19ieXRlcyA9IGJiX3Jld
HVybl9ieXRlcyggJHBocGluZm9fYXJyYXlbJ21lbW9yeV9saW1pdCddWzFdICk7CgkJaWYgKCAkbWFzdGVy
X21lbV9hc19ieXRlcyA9PSAoaW50KSAkcGhwaW5mb19hcnJheVsnbWVtb3J5X2xpbWl0J11bMV0gKSB7Cgk
JCS8vIE1hc3RlciB2YWx1ZSBpcyBkZWZpbmVkIGluIGJ5dGVzIHNvIHdlIG5lZWQgdG8gImNvbnZlcnQiIH
RvIE0gYXMgb3VyIGRlZmF1bHQgdW5pdC4KCQkJJG1lbV9saW1pdHNbXSA9ICggJG1hc3Rlcl9tZW1fYXNfY
nl0ZXMgLyAxMDI0IC8gMTAyNCApIC4gJ00nOwoJCX0gZWxzZSB7CgkJCSRtZW1fbGltaXRzW10gPSAkcGhw
aW5mb19hcnJheVsnbWVtb3J5X2xpbWl0J11bMV07CgkJfQoJCSRwYXJlbnRfY2xhc3NfdmFsIC49ICcgKGx
vY2FsKSAvICcgLiAkcGhwaW5mb19hcnJheVsnbWVtb3J5X2xpbWl0J11bMV0gLiAnIChtYXN0ZXIpJzsKCX
0KfQoKJHBhcmVudF9jbGFzc190ZXN0ID0gYXJyYXkoCgkndGl0bGUnICAgICAgPT4gJ1JlcG9ydGVkIFBIU
CBNZW1vcnkgTGltaXQnLAoJJ3N1Z2dlc3Rpb24nID0+ICc+PSAyNTYgTUInLAoJJ3ZhbHVlJyAgICAgID0+
ICRwYXJlbnRfY2xhc3NfdmFsLAoJJ3RpcCcgICAgICAgID0+IF9fKCAnVGhlIGFtb3VudCBvZiBtZW1vcnk
gdGhpcyBzaXRlIGlzIGFsbG93ZWQgdG8gY29uc3VtZS4gTm90ZSB0aGF0IHNvbWUgaG9zdFwncyBtYXN0ZX
IgdmFsdWUgbWF5IG92ZXJyaWRlIHRoZSBsb2NhbCBzZXR0aW5nLCBjYXBwaW5nIGl0IGF0IGEgbG93ZXIgd
mFsdWUuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCik7CmZvcmVhY2ggKCAkbWVtX2xpbWl0cyBhcyAk
bWVtX2xpbWl0ICkgewoJaWYgKCBwcmVnX21hdGNoKCAnLyhcZCspKFx3KikvJywgJG1lbV9saW1pdCwgJG1
hdGNoZXMgKSApIHsKCQkkcGFyZW50X2NsYXNzX3ZhbCA9ICRtYXRjaGVzWzFdOwoJCSR1bml0ICAgICAgIC
AgICAgID0gJG1hdGNoZXNbMl07CgkJLy8gVXAgbWVtb3J5IGxpbWl0IGlmIGN1cnJlbnRseSBsb3dlciB0a
GFuIDI1Nk0uCgkJaWYgKCAnZycgIT09IHN0cnRvbG93ZXIoICR1bml0ICkgKSB7CgkJCWlmICggJ20nICE9
PSBzdHJ0b2xvd2VyKCAkdW5pdCApICkgewoJCQkJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICd
XQVJOSU5HJzsKCQkJfSBlbHNlaWYgKCAkcGFyZW50X2NsYXNzX3ZhbCA8IDEyNSApIHsKCQkJCSRwYXJlbn
RfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnRkFJTCc7CgkJCX0gZWxzZWlmICggJHBhcmVudF9jbGFzc192Y
WwgPCAyNTAgKSB7CgkJCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ1dBUk5JTkcnOwoJCQl9
IGVsc2UgewoJCQkJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdPSyc7CgkJCX0KCQl9Cgl9IGV
sc2UgewoJCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnV0FSTklORyc7Cgl9CgoJLy8gT25jZS
BzZXQgdG8gd2FybmluZywgZG9uJ3QgcHJvY2VzcyBhbnkgbW9yZS4KCWlmICggJ1dBUk5JTkcnID09ICRwY
XJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gKSB7CgkJYnJlYWs7Cgl9Cn0KYXJyYXlfcHVzaCggJHRlc3Rz
LCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKCgovLyBUZXN0ZWQgUEhQIE1lbW9yeSBMaW1pdCAoQUNUVUFMIFR
FU1RFRCEpLgppZiAoICEgZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApICkgewoJaWYgKCBwYl9iYWNrdX
BidWRkeTo6JG9wdGlvbnNbJ3Rlc3RlZF9waHBfbWVtb3J5J10gPiAwICkgewoJCSRsYXN0X3Rlc3RlZCAgI
CAgICAgID0gcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPmRhdGUoIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0
LT5sb2NhbGl6ZV90aW1lKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ2xhc3RfdGVzdGVkX3BocF9tZW1
vcnknXSApICkgLiAnICgnIC4gcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPnRpbWVfYWdvKCBwYl9iYWNrdX
BidWRkeTo6JG9wdGlvbnNbJ2xhc3RfdGVzdGVkX3BocF9tZW1vcnknXSApIC4gJyAnIC4gX18oICdhZ28nL
CAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICcpJzsKCQkkdGVzdGVkX21lbW9yeV92YWx1ZSA9ICc8c3Bh
biBpZD0icGJfc3RhdHNfcnVuX3BocF9tZW1vcnlfdGVzdCIgdGl0bGU9Ikxhc3QgdGVzdGVkOiBgJyAuICR
sYXN0X3Rlc3RlZCAuICdgIj4nIC4gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWRfcGhwX21lbW
9yeSddIC4gJyAnIC4gX18oICdNQicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzwvc3Bhbj4nOwoJf
SBlbHNlIHsKCQkkdGVzdGVkX21lbW9yeV92YWx1ZSA9ICc8c3BhbiBjbGFzcz0iZGVzY3JpcHRpb24iIGlk
PSJwYl9zdGF0c19ydW5fcGhwX21lbW9yeV90ZXN0Ij4nIC4gX18oICdQZW5kaW5nLi4uJywgJ2l0LWwxMG4
tYmFja3VwYnVkZHknICkgLiAnPC9zcGFuPic7Cgl9CglnbG9iYWwgJGJiX3Rlc3RlZF9tZW0sICRiYl90ZX
N0ZWRfbWVtX2FnbzsKCgkkZGlzYWJsZWQgPSAnJzsKCWlmICggMCA9PSBwYl9iYWNrdXBidWRkeTo6JG9wd
GlvbnNbJ3BocF9tZW1vcnlfdGVzdF9taW5pbXVtX2ludGVydmFsJ10gKSB7CgkJJGRpc2FibGVkICAgICAg
ICAgID0gJzxzcGFuIHRpdGxlPSInIC4gX18oICdEaXNhYmxlZCBiYXNlZCBvbiBBZHZhbmNlZCBTZXR0aW5
ncy4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICciPicgLiBfXyggJ0Rpc2FibGVkJywgJ2l0LWwxMG
4tYmFja3VwYnVkZHknICkgLiAnPC9zcGFuPic7CgkJJGJiX3Rlc3RlZF9tZW0gICAgID0gMDsKCQkkYmJfd
GVzdGVkX21lbV9hZ28gPSAtMTsKCX0gZWxzZSB7CgkJJGJiX3Rlc3RlZF9tZW0gICAgID0gcGJfYmFja3Vw
YnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWRfcGhwX21lbW9yeSddOwoJCSRiYl90ZXN0ZWRfbWVtX2FnbyA9IHR
pbWUoKSAtIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snbGFzdF90ZXN0ZWRfcGhwX21lbW9yeSddOwoJfQ
oKCSRwYXJlbnRfY2xhc3NfdGVzdCA9IGFycmF5KAoJCSd0aXRsZScgICAgICA9PiAnVGVzdGVkIFBIUCBNZ
W1vcnkgTGltaXQnLAoJCSdzdWdnZXN0aW9uJyA9PiAnPj0gMjU2IE1CJywKCQkndmFsdWUnICAgICAgPT4g
JHRlc3RlZF9tZW1vcnlfdmFsdWUgLiAkZGlzYWJsZWQgLiAnIDxhIGNsYXNzPSJwYl9iYWNrdXBidWRkeV9
yZWZyZXNoX3N0YXRzIHBiX2JhY2t1cGJ1ZGR5X3Rlc3RQSFBNZW1vcnkiIHJlbD0icnVuX3BocF9tZW1vcn
lfdGVzdCIgYWx0PSInIC4gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAncnVuX3BocF9tZW1vcnlfdGVzd
CcgKSAuICciIHRpdGxlPSInIC4gX18oICdSdW4gVGVzdCAobWF5IHRha2Ugc2V2ZXJhbCBtaW51dGVzKScs
ICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJyI+PGltZyBzcmM9IicgLiBwYl9iYWNrdXBidWRkeTo6cGx
1Z2luX3VybCgpIC4gJy9pbWFnZXMvcmVmcmVzaF9ncmF5LmdpZiIgc3R5bGU9InZlcnRpY2FsLWFsaWduOi
AtMXB4OyI+IDxzcGFuIGNsYXNzPSJwYl9iYWNrdXBidWRkeV9sb2FkaW5nIiBzdHlsZT0iZGlzcGxheTogb
m9uZTsgbWFyZ2luLWxlZnQ6IDEwcHg7Ij48aW1nIHNyYz0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5f
dXJsKCkgLiAnL2ltYWdlcy9sb2FkaW5nLmdpZiIgYWx0PSInIC4gX18oICdMb2FkaW5nLi4uJywgJ2l0LWw
xMG4tYmFja3VwYnVkZHknICkgLiAnIiB0aXRsZT0iJyAuIF9fKCAnTG9hZGluZy4uLicsICdpdC1sMTBuLW
JhY2t1cGJ1ZGR5JyApIC4gJyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzdHlsZT0idmVydGljYWwtYWxpZ
246IC0zcHg7IiAvPjwvc3Bhbj48L2E+JywKCQkndGlwJyAgICAgICAgPT4gX18oICdUaGlzIGlzIHRoZSBU
RVNURUQgYW1vdW50IG9mIG1lbW9yeSBhbGxvd2VkIHRvIFBIUCBzY3JpcHRzLiBUaGUgdGVzdCB3YXMgcGV
yZm9ybWVkIGJ5IG91dHB1dHRpbmcgLyBsb2dnaW5nIHRoZSBzY3JpcHQgbWVtb3J5IHVzYWdlIHdoaWxlIG
1lbW9yeSB1c2FnZSB3YXMgaW5jcmVhc2VkLiBUaGlzIGdpdmVzIGEgZmFpcmx5IGFjY3VyYXRlIG51bWJlc
iBjb21wYXJlZCB0byB0aGUgcmVwb3J0ZWQgbnVtYmVyIHdoaWNoIGlzIGNvbW1vbmx5IG92ZXJyaWRlbiBh
dCB0aGUgc2VydmVyIHdpdGggYSBsaW1pdCwgbWFraW5nIGl0IGRpZmZpY3VsdCB0byBhc2NlcnRhaW4uJyw
gJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnIFRoaXMgdGVzdCBpcyBsaW1pdGVkIHRvIHJ1bm5pbmcgbm
8gbW9yZSBvZnRlbiB0aGFuIGV2ZXJ5IGAnIC4gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydwaHBfbWVtb
3J5X3Rlc3RfbWluaW11bV9pbnRlcnZhbCddIC4gJ2Agc2Vjb25kcyBiYXNlZCBvbiB5b3VyIGFkdmFuY2Vk
IHNldHRpbmdzICgwID0gZGlzYWJsZWQpLiBSdW5zIGR1cmluZyBob3VzZWtlZXBpbmcgYXMgd2VsbCBhbHd
heXMgb24gcGx1Z2luIGFjdGl2YXRpb24uJywKCSk7CglpZiAoIGlzX251bWVyaWMoIHBiX2JhY2t1cGJ1ZG
R5Ojokb3B0aW9uc1sndGVzdGVkX3BocF9tZW1vcnknXSApICkgewoJCWlmICggMCA9PSBwYl9iYWNrdXBid
WRkeTo6JG9wdGlvbnNbJ3Rlc3RlZF9waHBfbWVtb3J5J10gKSB7CgkJCSRwYXJlbnRfY2xhc3NfdGVzdFsn
c3RhdHVzJ10gPSAnT0snOwoJCX0gZWxzZWlmICggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWR
fcGhwX21lbW9yeSddIDwgMTIzICkgewoJCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ0ZBSU
wnOwoJCX0gZWxzZWlmICggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWyd0ZXN0ZWRfcGhwX21lbW9yeSddI
DwgMjQ1ICkgeyAvLyAyNDUgaW5zdGVhZCBvZiAyNTYgdG8gZ2l2ZSB0aGUgdGVzdCBzb21lIHdpZ2dsZSBy
b29tLgoJCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ1dBUk5JTkcnOwoJCX0gZWxzZSB7Cgk
JCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnT0snOwoJCX0KCX0gZWxzZSB7CgkJJHBhcmVudF
9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdXQVJOSU5HJzsKCX0KCWFycmF5X3B1c2goICR0ZXN0cywgJHBhc
mVudF9jbGFzc190ZXN0ICk7Cn0KCi8vIE1heCB1cGxvYWQgZmlsZSBzaXplIGxpbWl0LgokbWF4X3VwbG9h
ZCAgICAgICAgPSBiYWNrdXBidWRkeV9jb3JlOjpmaWxlX3VwbG9hZF9tYXhfc2l6ZSgpOwokcGFyZW50X2N
sYXNzX3Rlc3QgPSBhcnJheSgKCSd0aXRsZScgICAgICA9PiAnUEhQIE1heGltdW0gRmlsZSBVcGxvYWQgU2
l6ZSAoc2VydmVyLXJlcG9ydGVkKScsCgknc3VnZ2VzdGlvbicgPT4gJz49IDEwIE1CJywKCSd2YWx1ZScgI
CAgICA9PiBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+ZmlsZV9zaXplKCAkbWF4X3VwbG9hZCApLAoJJ3Rp
cCcgICAgICAgID0+IF9fKCAnTWF4aW11bSBzaXplIG9mIGEgZmlsZS9kYXRhIHRoYXQgdGhpcyBzZXJ2ZXI
gYWxsb3dzIHRvIGJlIHVwbG9hZGVkL3NlbnQgdG8gaXQuIERlcGxveW1lbnQgdXNlcyB0aGlzIGluZm9ybW
F0aW9uIHRvIGRldGVybWluZSBob3cgbXVjaCBkY
XRhIGNhbiBiZSBzZW50IHBlciBjaHVuaywgbWF4aW11bS4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwK
KTsKaWYgKCAkbWF4X3VwbG9hZCAvIDEwMjQgLyAxMDI0IDwgMTAgKSB7IC8vIDwgMTAgTUIgd2FybmluZwo
JJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdXQVJOSU5HJzsKfSBlbHNlIHsKCSRwYXJlbnRfY2
xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnT0snOwp9CmFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc
190ZXN0ICk7CgovLyBFUlJPUiBMT0dHSU5HIEVOQUJMRUQvRElTQUJMRUQuCmlmICggdHJ1ZSA9PSBpbmlf
Z2V0KCAnbG9nX2Vycm9ycycgKSApIHsKCSRwYXJlbnRfY2xhc3NfdmFsID0gJ2VuYWJsZWQnOwp9IGVsc2U
gewoJJHBhcmVudF9jbGFzc192YWwgPSAnZGlzYWJsZWQnOwp9CiRwYXJlbnRfY2xhc3NfdGVzdCAgICAgIC
AgICAgPSBhcnJheSgKCSd0aXRsZScgICAgICA9PiAnUEhQIEVycm9yIExvZ2dpbmcgKGxvZ19lcnJvcnMpJ
ywKCSdzdWdnZXN0aW9uJyA9PiAnZW5hYmxlZCcsCgkndmFsdWUnICAgICAgPT4gJHBhcmVudF9jbGFzc192
YWwgLiAnIFs8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGNsYXNzPSJwYl9iYWNrdXBidWRkeV90ZXN
0RXJyb3JMb2ciIHJlbD0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjphamF4X3VybCggJ3Rlc3RFcnJvckxvZycgKS
AuICciIHRpdGxlPSInIC4gX18oICdUZXN0aW5nIHRoaXMgd2lsbCB0cmlnZ2VyIGFuIGVycm9yX2xvZygpI
GV2ZW50IHdpdGggdGhlIGNvbnRlbnQgIkJhY2t1cEJ1ZGR5IFRlc3QgLSBUaGlzIGlzIG9ubHkgYSB0ZXN0
LiBBIHVzZXIgdHJpZ2dlcmVkIEJhY2t1cEJ1ZGR5IHRvIGRldGVybWluZSBpZiB3cml0aW5nIHRvIHRoZSB
QSFAgZXJyb3IgbG9nIGlzIHdvcmtpbmcgYXMgZXhwZWN0ZWQuIicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5Jy
ApIC4gJyI+VGVzdDwvYT5dJywKCSd0aXAnICAgICAgICA9PiBfXyggJ1doZXRoZXIgb3Igbm90IFBIUCBlc
nJvcnMgYXJlIGxvZ2dlZCB0byBhIGZpbGUgb3Igbm90LiBTZXQgYnkgcGhwLmluaSBsb2dfZXJyb3JzJywg
J2l0LWwxMG4tYmFja3VwYnVkZHknICksCik7CiRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnT0s
nOwphcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnRfY2xhc3NfdGVzdCApOwoKCi8vIEVSUk9SIExPRyBGSU
xFLgppZiAoICEgaW5pX2dldCggJ2Vycm9yX2xvZycgKSApIHsKCSRwYXJlbnRfY2xhc3NfdmFsID0gJ3Vua
25vd24nOwp9IGVsc2UgewoJJHBhcmVudF9jbGFzc192YWwgPSBpbmlfZ2V0KCAnZXJyb3JfbG9nJyApOwp9
CiRwYXJlbnRfY2xhc3NfdGVzdCAgICAgICAgICAgPSBhcnJheSgKCSd0aXRsZScgICAgICA9PiAnUEhQIEV
ycm9yIExvZyBGaWxlIChlcnJvcl9sb2cpJywKCSdzdWdnZXN0aW9uJyA9PiAnbi9hJywKCSd2YWx1ZScgIC
AgICA9PiAnPHNwYW4gc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgbWF4LXdpZHRoOiAyNTBweDsiP
icgLiAkcGFyZW50X2NsYXNzX3ZhbCAuICc8L3NwYW4+JywKCSd0aXAnICAgICAgICA9PiBfXyggJ0ZpbGUg
d2hlcmUgUEhQIGVycm9ycyBhcmUgbG9nZ2VkIHRvIGlmIFBIUCBFcnJvciBMb2dnaW5nIGlzIGVuYWJsZWQ
gKHJlY29tbWVuZGVkKS4gU2V0IGJ5IHBocC5pbmkgZXJyb3JfbG9nJywgJ2l0LWwxMG4tYmFja3VwYnVkZH
knICksCik7CiRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnT0snOwphcnJheV9wdXNoKCAkdGVzd
HMsICRwYXJlbnRfY2xhc3NfdGVzdCApOwoKCi8vIERJU1BMQVlfRVJST1JTIFNFVFRJTkcuCmlmICggdHJ1
ZSA9PSBpbmlfZ2V0KCAnZGlzcGxheV9lcnJvcnMnICkgKSB7CgkkcGFyZW50X2NsYXNzX3ZhbCA9ICdlbmF
ibGVkJzsKfSBlbHNlIHsKCSRwYXJlbnRfY2xhc3NfdmFsID0gJ2Rpc2FibGVkJzsKfQokcGFyZW50X2NsYX
NzX3Rlc3QgICAgICAgICAgID0gYXJyYXkoCgkndGl0bGUnICAgICAgPT4gJ1BIUCBEaXNwbGF5IEVycm9yc
yB0byBTY3JlZW4gKGRpc3BsYXlfZXJyb3JzKScsCgknc3VnZ2VzdGlvbicgPT4gJ2Rpc2FibGVkJywKCSd2
YWx1ZScgICAgICA9PiAkcGFyZW50X2NsYXNzX3ZhbCwKCSd0aXAnICAgICAgICA9PiBfXyggJ1doZXRoZXI
gb3Igbm90IFBIUCBlcnJvcnMgYXJlIGRpc3BsYXllZCBvbiBzY3JlZW4gdG8gdGhlIHVzZXIuIFRoaXMgaX
MgdXNlZnVsIGZvciB0cm91Ymxlc2hvb3RpbmcgUEhQIHByb2JsZW1zIGJ1dCBkaXNhYmxpbmcgYnkgZGVmY
XVsdCBpcyBtb3JlIHNlY3VyZSBmb3IgcHJvZHVjdGlvbi4gU2V0IGJ5IHBocC5pbmkgZGlzcGxheV9lcnJv
cnMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKKTsKJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA
9ICdPSyc7CmFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7CgoKaWYgKCBkZWZpbm
VkKCAnUEJfSU1QT1JUQlVERFknICkgKSB7CglpZiAoICEgaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5OjokY2xhc
3Nlc1snemlwYnVkZHknXSApICkgewoJCXJlcXVpcmVfb25jZSBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3Bh
dGgoKSAuICcvbGliL3ppcGJ1ZGR5L3ppcGJ1ZGR5LnBocCc7CgkJcGJfYmFja3VwYnVkZHk6OiRjbGFzc2V
zWyd6aXBidWRkeSddID0gbmV3IHBsdWdpbmJ1ZGR5X3ppcGJ1ZGR5KCBBQlNQQVRIICk7Cgl9Cn0KJHppcF
9tZXRob2RzID0gaW1wbG9kZSggJywgJywgcGJfYmFja3VwYnVkZHk6OiRjbGFzc2VzWyd6aXBidWRkeSddL
T5femlwX21ldGhvZHMgKTsKCmlmICggISBkZWZpbmVkKCAnUEJfSU1QT1JUQlVERFknICkgKSB7Cgkkemlw
bWV0aG9kX3JlZnJlc2ggPSAnPGEgY2xhc3M9InBiX2JhY2t1cGJ1ZGR5X3JlZnJlc2hfc3RhdHMiIHJlbD0
icmVmcmVzaF96aXBfbWV0aG9kcyIgYWx0PSInIC4gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAncmVmcm
VzaF96aXBfbWV0aG9kcycgKSAuICciIHRpdGxlPSInIC4gX18oICdSZWZyZXNoJywgJ2l0LWwxMG4tYmFja
3VwYnVkZHknICkgLiAnIj48aW1nIHNyYz0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fdXJsKCkgLiAn
L2ltYWdlcy9yZWZyZXNoX2dyYXkuZ2lmIiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0xcHg7Ij4gPHNwYW4
gY2xhc3M9InBiX2JhY2t1cGJ1ZGR5X2xvYWRpbmciIHN0eWxlPSJkaXNwbGF5OiBub25lOyBtYXJnaW4tbG
VmdDogMTBweDsiPjxpbWcgc3JjPSInIC4gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKSAuICcvaW1hZ
2VzL2xvYWRpbmcuZ2lmIiBhbHQ9IicgLiBfXyggJ0xvYWRpbmcuLi4nLCAnaXQtbDEwbi1iYWNrdXBidWRk
eScgKSAuICciIHRpdGxlPSInIC4gX18oICdMb2FkaW5nLi4uJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk
gLiAnIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogLTNweDsiIC8+PC
9zcGFuPjwvYT4nOwp9IGVsc2UgewoJJHppcG1ldGhvZF9yZWZyZXNoID0gJyc7Cn0KJHBhcmVudF9jbGFzc
190ZXN0ID0gYXJyYXkoCgkndGl0bGUnICAgICAgPT4gJ1ppcCBNZXRob2RzJywKCSdzdWdnZXN0aW9uJyA9
PiAnQ29tbWFuZCBsaW5lIFtmYXN0ZXN0XSA+IHppcGFyY2hpdmUgPiBQSFAtYmFzZWQgKHBjbHppcCkgW3N
sb3dlc3RdJywKCSd2YWx1ZScgICAgICA9PiAnPHNwYW4gaWQ9InBiX3N0YXRzX3JlZnJlc2hfemlwX21ldG
hvZHMiPicgLiAkemlwX21ldGhvZHMgLiAnPC9zcGFuPiAnIC4gJHppcG1ldGhvZF9yZWZyZXNoLAoJJ3Rpc
CcgICAgICAgID0+IF9fKCAnTWV0aG9kcyB5b3VyIHNlcnZlciBzdXBwb3J0cyBmb3IgY3JlYXRpbmcgWklQ
IGZpbGVzLiBUaGVzZSB3ZXJlIHRlc3RlZCAmIHZlcmlmaWVkIHRvIG9wZXJhdGUuIENvbW1hbmQgbGluZSB
pcyBtYWduaXR1ZGVzIGJldHRlciB0aGFuIG90aGVyIG1ldGhvZHMgYW5kIG9wZXJhdGVzIHZpYSBleGVjKC
kgb3Igb3RoZXIgZXhlY3V0aW9uIGZ1bmN0aW9ucy4gWmlwQXJjaGl2ZSBpcyBhIFBIUCBleHRlbnNpb24uI
FBIUC1iYXNlZCBaSVAgY29tcHJlc3Npb24vZXh0cmFjdGlvbiBpcyBwZXJmb3JtZWQgdmlhIGEgUEhQIHNj
cmlwdCBjYWxsZWQgcGNsemlwIGJ1dCBpdCBpcyBzbG93ZXIgYW5kIGNhbiBiZSBtZW1vcnkgaW50ZW5zaXZ
lLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAopOwppZiAoIGluX2FycmF5KCAnZXhlYycsIHBiX2JhY2
t1cGJ1ZGR5OjokY2xhc3Nlc1snemlwYnVkZHknXS0+X3ppcF9tZXRob2RzICkgKSB7CgkkcGFyZW50X2NsY
XNzX3Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKfSBlbHNlIHsKCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVz
J10gPSAnV0FSTklORyc7Cn0KYXJyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKCgp
pZiAoICEgZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApICkgewoKCSRwYXJlbnRfY2xhc3NfdGVzdCA9IG
FycmF5KAoJCSd0aXRsZScgICAgICA9PiAnRGF0YWJhc2UgRHVtcCBNZXRob2RzJywKCQknc3VnZ2VzdGlvb
icgPT4gJ0NvbW1hbmQgbGluZSBhbmQvb3IgUEhQLWJhc2VkJywKCQkndmFsdWUnICAgICAgPT4gaW1wbG9k
ZSggJywgJywgcGJfYmFja3VwYnVkZHk6OiRjbGFzc2VzWydteXNxbGJ1ZGR5J10tPmdldF9tZXRob2RzKCk
gKSwKCQkndGlwJyAgICAgICAgPT4gX18oICdNZXRob2RzIHlvdXIgc2VydmVyIHN1cHBvcnRzIGZvciBkdW
1waW5nIChiYWNraW5nIHVwKSB5b3VyIG15c3FsIGRhdGFiYXNlLiBUaGVzZSB3ZXJlIHRlc3RlZCB2YWx1Z
XMgdW5sZXNzIGNvbXBhdGliaWxpdHkgLyB0cm91Ymxlc2hvb3Rpbmcgc2V0dGluZ3Mgb3ZlcnJpZGUuJywg
J2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkpOwoJJGRiX21ldGhvZHMgICAgICAgID0gcGJfYmFja3VwYnV
kZHk6OiRjbGFzc2VzWydteXNxbGJ1ZGR5J10tPmdldF9tZXRob2RzKCk7CglpZiAoIGluX2FycmF5KCAnY2
9tbWFuZGxpbmUnLCAkZGJfbWV0aG9kcyApIHx8IGluX2FycmF5KCAncGhwJywgJGRiX21ldGhvZHMgKSApI
HsgLy8gUEhQIGlzIGNvbnNpZGVyZWQganVzdCBhcyBnb29kIGFzIG9mIEJCIHY1LjAuCgkJJHBhcmVudF9j
bGFzc190ZXN0WydzdGF0dXMnXSA9ICdPSyc7Cgl9IGVsc2UgewoJCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3R
hdHVzJ10gPSAnV0FSTklORyc7Cgl9CglhcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnRfY2xhc3NfdGVzdC
ApOwoKCgkvLyBTaXRlIFNpemUuCglpZiAoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnc
2l0ZV9zaXplJ10gPiAwICkgewoJCSRzaXRlX3NpemUgPSBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+Zmls
ZV9zaXplKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3N0YXRzJ11bJ3NpdGVfc2l6ZSddICk7Cgl9IGV
sc2UgewoJCSRzaXRlX3NpemUgPSAnPGk+VW5rbm93bjwvaT4nOwoJfQoJJHBhcmVudF9jbGFzc190ZXN0IC
AgICAgICAgICA9IGFycmF5KAoJCSd0aXRsZScgICAgICA9PiAnU2l0ZSBTaXplJywKCQknc3VnZ2VzdGlvb
icgPT4gJ24vYScsCgkJJ3ZhbHVlJyAgICAgID0+ICc8c3BhbiBpZD0icGJfc3RhdHNfcmVmcmVzaF9zaXRl
X3NpemUiPicgLiAkc2l0ZV9zaXplIC4gJzwvc3Bhbj4gPGEgY2xhc3M9InBiX2JhY2t1cGJ1ZGR5X3JlZnJ
lc2hfc3RhdHMiIHJlbD0icmVmcmVzaF9zaXRlX3NpemUiIGFsdD0iJyAuIHBiX2JhY2t1cGJ1ZGR5Ojpham
F4X3VybCggJ3JlZnJlc2hfc2l0ZV9zaXplJyApIC4gJyIgdGl0bGU9IicgLiBfXyggJ1JlZnJlc2gnLCAna
XQtbDEwbi1iYWNrdXBidWRkeScgKSAuICciPjxpbWcgc3JjPSInIC4gcGJfYmFja3VwYnVkZHk6OnBsdWdp
bl91cmwoKSAuICcvaW1hZ2VzL3JlZnJlc2hfZ3JheS5naWYiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogLTF
weDsiPiA8c3BhbiBjbGFzcz0icGJfYmFja3VwYnVkZHlfbG9hZGluZyIgc3R5bGU9ImRpc3BsYXk6IG5vbm
U7IG1hcmdpbi1sZWZ0OiAxMHB4OyI+PGltZyBzcmM9IicgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3Vyb
CgpIC4gJy9pbWFnZXMvbG9hZGluZy5naWYiIGFsdD0iJyAuIF9fKCAnTG9hZGluZy4uLicsICdpdC1sMTBu
LWJhY2t1cGJ1ZGR5JyApIC4gJyIgdGl0bGU9IicgLiBfXyggJ0xvYWRpbmcuLi4nLCAnaXQtbDEwbi1iYWN
rdXBidWRkeScgKSAuICciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9InZlcnRpY2FsLWFsaWduOi
AtM3B4OyIgLz48L3NwYW4+PC9hPicsCgkJJ3RpcCcgICAgICAgID0+IF9fKCAnVG90YWwgc2l6ZSBvZiB5b
3VyIHNpdGUgKHN0YXJ0aW5nIGluIHlvdXIgV29yZFByZXNzIG1haW4gZGlyZWN0b3J5KSBJTkNMVURJTkcg
YW55IGV4Y2x1ZGVkIGRpcmVjdG9yaWVzIC8gZmlsZXMuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgk
pOwoJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdPSyc7CglhcnJheV9wdXNoKCAkdGVzdHMsIC
RwYXJlbnRfY2xhc3NfdGVzdCApOwoKCgkvLyBTaXRlIHNpemUgV0lUSCBFWENMVVNJT05TIGFjY291bnRlZ
CBmb3IuCglpZiAoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnc2l0ZV9zaXplX2V4Y2x1
ZGVkJ10gPiAwICkgewoJCSRzaXRlX3NpemVfZXhjbHVkZWQgPSBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0
+ZmlsZV9zaXplKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3N0YXRzJ11bJ3NpdGVfc2l6ZV9leGNsdW
RlZCddICk7Cgl9IGVsc2UgewoJCSRzaXRlX3NpemVfZXhjbHVkZWQgPSAnPGk+VW5rbm93bjwvaT4nOwoJf
QoJJHBhcmVudF9jbGFzc190ZXN0ICAgICAgICAgICA9IGFycmF5KAoJCSd0aXRsZScgICAgICA9PiAnU2l0
ZSBTaXplIChEZWZhdWx0IEV4Y2x1c2lvbnMgYXBwbGllZCknLAoJCSdzdWdnZXN0aW9uJyA9PiAnbi9hJyw
KCQkndmFsdWUnICAgICAgPT4gJzxzcGFuIGlkPSJwYl9zdGF0c19yZWZyZXNoX3NpdGVfc2l6ZV9leGNsdW
RlZCI+JyAuICRzaXRlX3NpemVfZXhjbHVkZWQgLiAnPC9zcGFuPiA8YSBjbGFzcz0icGJfYmFja3VwYnVkZ
HlfcmVmcmVzaF9zdGF0cyIgcmVsPSJyZWZyZXNoX3NpdGVfc2l6ZV9leGNsdWRlZCIgYWx0PSInIC4gcGJf
YmFja3VwYnVkZHk6OmFqYXhfdXJsKCAncmVmcmVzaF9zaXRlX3NpemVfZXhjbHVkZWQnICkgLiAnIiB0aXR
sZT0iJyAuIF9fKCAnUmVmcmVzaCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJyI+PGltZyBzcmM9Ii
cgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpIC4gJy9pbWFnZXMvcmVmcmVzaF9ncmF5LmdpZiIgc
3R5bGU9InZlcnRpY2FsLWFsaWduOiAtMXB4OyI+IDxzcGFuIGNsYXNzPSJwYl9iYWNrdXBidWRkeV9sb2Fk
aW5nIiBzdHlsZT0iZGlzcGxheTogbm9uZTsgbWFyZ2luLWxlZnQ6IDEwcHg7Ij48aW1nIHNyYz0iJyAuIHB
iX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fdXJsKCkgLiAnL2ltYWdlcy9sb2FkaW5nLmdpZiIgYWx0PSInIC4gX1
8oICdMb2FkaW5nLi4uJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnIiB0aXRsZT0iJyAuIF9fKCAnT
G9hZGluZy4uLicsICdpdC1sMTBuLWJhY2t1cGJ1
ZGR5JyApIC4gJyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0zcHg
7IiAvPjwvc3Bhbj48L2E+JywKCQkndGlwJyAgICAgICAgPT4gX18oICdUb3RhbCBzaXplIG9mIHlvdXIgc2
l0ZSAoc3RhcnRpbmcgaW4geW91ciBXb3JkUHJlc3MgbWFpbiBkaXJlY3RvcnkpIEVYQ0xVRElORyBhbnkgZ
GlyZWN0b3JpZXMgLyBmaWxlcyB5b3UgaGF2ZSBtYXJrZWQgZm9yIGV4Y2x1c2lvbi4nLCAnaXQtbDEwbi1i
YWNrdXBidWRkeScgKSwKCSk7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKCWFycmF
5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7CgoKCS8vIFNpdGUgT2JqZWN0cy4KCWlmIC
ggaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnc2l0ZV9vYmplY3RzJ10gKSAmJ
iAoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnc2l0ZV9vYmplY3RzJ10gPiAwICkgKSB7
CgkJJHNpdGVfb2JqZWN0cyA9IHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnc2l0ZV9vYmp
lY3RzJ107Cgl9IGVsc2UgewoJCSRzaXRlX29iamVjdHMgPSAnPGk+VW5rbm93bjwvaT4nOwoJfQoJJHBhcm
VudF9jbGFzc190ZXN0ICAgICAgICAgICA9IGFycmF5KAoJCSd0aXRsZScgICAgICA9PiAnU2l0ZSBudW1iZ
XIgb2YgZmlsZXMnLAoJCSdzdWdnZXN0aW9uJyA9PiAnbi9hJywKCQkndmFsdWUnICAgICAgPT4gJzxzcGFu
IGlkPSJwYl9zdGF0c19yZWZyZXNoX29iamVjdHMiPicgLiAkc2l0ZV9vYmplY3RzIC4gJzwvc3Bhbj4gPGE
gY2xhc3M9InBiX2JhY2t1cGJ1ZGR5X3JlZnJlc2hfc3RhdHMiIHJlbD0icmVmcmVzaF9vYmplY3RzIiBhbH
Q9IicgLiBwYl9iYWNrdXBidWRkeTo6YWpheF91cmwoICdyZWZyZXNoX3NpdGVfb2JqZWN0cycgKSAuICciI
HRpdGxlPSInIC4gX18oICdSZWZyZXNoJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnIj48aW1nIHNy
Yz0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW5fdXJsKCkgLiAnL2ltYWdlcy9yZWZyZXNoX2dyYXkuZ2l
mIiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0xcHg7Ij4gPHNwYW4gY2xhc3M9InBiX2JhY2t1cGJ1ZGR5X2
xvYWRpbmciIHN0eWxlPSJkaXNwbGF5OiBub25lOyBtYXJnaW4tbGVmdDogMTBweDsiPjxpbWcgc3JjPSInI
C4gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKSAuICcvaW1hZ2VzL2xvYWRpbmcuZ2lmIiBhbHQ9Iicg
LiBfXyggJ0xvYWRpbmcuLi4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICciIHRpdGxlPSInIC4gX18
oICdMb2FkaW5nLi4uJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnIiB3aWR0aD0iMTYiIGhlaWdodD
0iMTYiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogLTNweDsiIC8+PC9zcGFuPjwvYT4nLAoJCSd0aXAnICAgI
CAgICA9PiBfXyggJ1RvdGFsIG51bWJlciBvZiBmaWxlcy9mb2xkZXJzIGluIHlvdXIgc2l0ZSAoc3RhcnRp
bmcgaW4geW91ciBXb3JkUHJlc3MgbWFpbiBkaXJlY3RvcnkpIElOQ0xVRElORyBhbnkgZXhjbHVkZWQgZGl
yZWN0b3JpZXMgLyBmaWxlcy4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCSk7CgkkcGFyZW50X2NsYX
NzX3Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKCWFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190Z
XN0ICk7CgoKCS8vIFNpdGUgb2JqZWN0cyBXSVRIIEVYQ0xVU0lPTlMgYWNjb3VudGVkIGZvci4KCSRzaXRl
X29iamVjdHNfZXhjbHVkZWQgPSAnPGk+VW5rbm93bjwvaT4nOwoJaWYgKCBpc3NldCggcGJfYmFja3VwYnV
kZHk6OiRvcHRpb25zWydzdGF0cyddWydzaXRlX29iamVjdHNfZXhjbHVkZWQnXSApICYmIHBiX2JhY2t1cG
J1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnc2l0ZV9vYmplY3RzX2V4Y2x1ZGVkJ10gPiAwICkgewoJCSRza
XRlX29iamVjdHNfZXhjbHVkZWQgPSBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3N0YXRzJ11bJ3NpdGVf
b2JqZWN0c19leGNsdWRlZCddOwoJfQoJJHBhcmVudF9jbGFzc190ZXN0ICAgICAgICAgICA9IGFycmF5KAo
JCSd0aXRsZScgICAgICA9PiAnU2l0ZSBudW1iZXIgb2YgZmlsZXMgKERlZmF1bHQgRXhjbHVzaW9ucyBhcH
BsaWVkKScsCgkJJ3N1Z2dlc3Rpb24nID0+ICduL2EnLAoJCSd2YWx1ZScgICAgICA9PiAnPHNwYW4gaWQ9I
nBiX3N0YXRzX3JlZnJlc2hfb2JqZWN0c19leGNsdWRlZCI+JyAuICRzaXRlX29iamVjdHNfZXhjbHVkZWQg
LiAnPC9zcGFuPiA8YSBjbGFzcz0icGJfYmFja3VwYnVkZHlfcmVmcmVzaF9zdGF0cyIgcmVsPSJyZWZyZXN
oX29iamVjdHNfZXhjbHVkZWQiIGFsdD0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjphamF4X3VybCggJ3JlZnJlc2
hfc2l0ZV9vYmplY3RzX2V4Y2x1ZGVkJyApIC4gJyIgdGl0bGU9IicgLiBfXyggJ1JlZnJlc2gnLCAnaXQtb
DEwbi1iYWNrdXBidWRkeScgKSAuICciPjxpbWcgc3JjPSInIC4gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91
cmwoKSAuICcvaW1hZ2VzL3JlZnJlc2hfZ3JheS5naWYiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogLTFweDs
iPiA8c3BhbiBjbGFzcz0icGJfYmFja3VwYnVkZHlfbG9hZGluZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG
1hcmdpbi1sZWZ0OiAxMHB4OyI+PGltZyBzcmM9IicgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpI
C4gJy9pbWFnZXMvbG9hZGluZy5naWYiIGFsdD0iJyAuIF9fKCAnTG9hZGluZy4uLicsICdpdC1sMTBuLWJh
Y2t1cGJ1ZGR5JyApIC4gJyIgdGl0bGU9IicgLiBfXyggJ0xvYWRpbmcuLi4nLCAnaXQtbDEwbi1iYWNrdXB
idWRkeScgKSAuICciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiAtM3
B4OyIgLz48L3NwYW4+PC9hPicsCgkJJ3RpcCcgICAgICAgID0+IF9fKCAnVG90YWwgbnVtYmVyIG9mIGZpb
GVzL2ZvbGRlcnMgc2l0ZSAoc3RhcnRpbmcgaW4geW91ciBXb3JkUHJlc3MgbWFpbiBkaXJlY3RvcnkpIEVY
Q0xVRElORyBhbnkgZGlyZWN0b3JpZXMgLyBmaWxlcyB5b3UgaGF2ZSBtYXJrZWQgZm9yIGV4Y2x1c2lvbi4
nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCSk7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID
0gJ09LJzsKCWFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7CgoKCS8vIERhdGFiY
XNlIFNpemUuCgkkcGFyZW50X2NsYXNzX3Rlc3QgICAgICAgICAgID0gYXJyYXkoCgkJJ3RpdGxlJyAgICAg
ID0+ICdEYXRhYmFzZSBTaXplJywKCQknc3VnZ2VzdGlvbicgPT4gJ24vYScsCgkJJ3ZhbHVlJyAgICAgID0
+ICc8c3BhbiBpZD0icGJfc3RhdHNfcmVmcmVzaF9kYXRhYmFzZV9zaXplIj4nIC4gcGJfYmFja3VwYnVkZH
k6OiRmb3JtYXQtPmZpbGVfc2l6ZSggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydzdGF0cyddWydkYl9za
XplJ10gKSAuICc8L3NwYW4+IDxhIGNsYXNzPSJwYl9iYWNrdXBidWRkeV9yZWZyZXNoX3N0YXRzIiByZWw9
InJlZnJlc2hfZGF0YWJhc2Vfc2l6ZSIgYWx0PSInIC4gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAncmV
mcmVzaF9kYXRhYmFzZV9zaXplJyApIC4gJyIgdGl0bGU9IicgLiBfXyggJ1JlZnJlc2gnLCAnaXQtbDEwbi
1iYWNrdXBidWRkeScgKSAuICciPjxpbWcgc3JjPSInIC4gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoK
SAuICcvaW1hZ2VzL3JlZnJlc2hfZ3JheS5naWYiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogLTFweDsiPiA8
c3BhbiBjbGFzcz0icGJfYmFja3VwYnVkZHlfbG9hZGluZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IG1hcmd
pbi1sZWZ0OiAxMHB4OyI+PGltZyBzcmM9IicgLiBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpIC4gJy
9pbWFnZXMvbG9hZGluZy5naWYiIGFsdD0iJyAuIF9fKCAnTG9hZGluZy4uLicsICdpdC1sMTBuLWJhY2t1c
GJ1ZGR5JyApIC4gJyIgdGl0bGU9IicgLiBfXyggJ0xvYWRpbmcuLi4nLCAnaXQtbDEwbi1iYWNrdXBidWRk
eScgKSAuICciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiAtM3B4OyI
gLz48L3NwYW4+PC9hPicsCgkJJ3RpcCcgICAgICAgID0+IF9fKCAnVG90YWwgc2l6ZSBvZiB5b3VyIGRhdG
FiYXNlIElOQ0xVRElORyBhbnkgZXhjbHVkZWQgdGFibGVzLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApL
AoJKTsKCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnT0snOwoJYXJyYXlfcHVzaCggJHRlc3Rz
LCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKCgoJLy8gRGF0YWJhc2Ugc2l6ZSBXSVRIIEVYQ0xVU0lPTlMgYWN
jb3VudGVkIGZvci4KCSRwYXJlbnRfY2xhc3NfdGVzdCAgICAgICAgICAgPSBhcnJheSgKCQkndGl0bGUnIC
AgICAgPT4gJ0RhdGFiYXNlIFNpemUgKERlZmF1bHQgRXhjbHVzaW9ucyBhcHBsaWVkKScsCgkJJ3N1Z2dlc
3Rpb24nID0+ICduL2EnLAoJCSd2YWx1ZScgICAgICA9PiAnPHNwYW4gaWQ9InBiX3N0YXRzX3JlZnJlc2hf
ZGF0YWJhc2Vfc2l6ZV9leGNsdWRlZCI+JyAuIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5maWxlX3NpemU
oIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnZGJfc2l6ZV9leGNsdWRlZCddICkgLiAnPC
9zcGFuPiA8YSBjbGFzcz0icGJfYmFja3VwYnVkZHlfcmVmcmVzaF9zdGF0cyIgcmVsPSJyZWZyZXNoX2Rhd
GFiYXNlX3NpemVfZXhjbHVkZWQiIGFsdD0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjphamF4X3VybCggJ3JlZnJl
c2hfZGF0YWJhc2Vfc2l6ZV9leGNsdWRlZCcgKSAuICciIHRpdGxlPSInIC4gX18oICdSZWZyZXNoJywgJ2l
0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnIj48aW1nIHNyYz0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjpwbHVnaW
5fdXJsKCkgLiAnL2ltYWdlcy9yZWZyZXNoX2dyYXkuZ2lmIiBzdHlsZT0idmVydGljYWwtYWxpZ246IC0xc
Hg7Ij4gPHNwYW4gY2xhc3M9InBiX2JhY2t1cGJ1ZGR5X2xvYWRpbmciIHN0eWxlPSJkaXNwbGF5OiBub25l
OyBtYXJnaW4tbGVmdDogMTBweDsiPjxpbWcgc3JjPSInIC4gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmw
oKSAuICcvaW1hZ2VzL2xvYWRpbmcuZ2lmIiBhbHQ9IicgLiBfXyggJ0xvYWRpbmcuLi4nLCAnaXQtbDEwbi
1iYWNrdXBidWRkeScgKSAuICciIHRpdGxlPSInIC4gX18oICdMb2FkaW5nLi4uJywgJ2l0LWwxMG4tYmFja
3VwYnVkZHknICkgLiAnIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjog
LTNweDsiIC8+PC9zcGFuPjwvYT4nLAoJCSd0aXAnICAgICAgICA9PiBfXyggJ1RvdGFsIHNpemUgb2YgeW9
1ciBkYXRhYmFzZSBFWENMVURJTkcgYW55IHRhYmxlcyB5b3UgaGF2ZSBtYXJrZWQgZm9yIGV4Y2x1c2lvbi
4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCSk7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddI
D0gJ09LJzsKCWFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7CgoKCS8qKioqKiBC
RUdJTiBBVkVSQUdFIFdSSVRFIFNQRUVEICovCglyZXF1aXJlX29uY2UgcGJfYmFja3VwYnVkZHk6OnBsdWd
pbl9wYXRoKCkgLiAnL2NsYXNzZXMvZmlsZW9wdGlvbnMucGhwJzsKCgkkd3JpdGVfc3BlZWRfc2FtcGxlcy
A9IDA7Cgkkd3JpdGVfc3BlZWRfc3VtICAgICA9IDA7CgkkYmFja3VwcyAgICAgICAgICAgICA9IGdsb2IoI
GJhY2t1cGJ1ZGR5X2NvcmU6OmdldEJhY2t1cERpcmVjdG9yeSgpIC4gJyouemlwJyApOwoJaWYgKCAhIGlz
X2FycmF5KCAkYmFja3VwcyApICkgewoJCSRiYWNrdXBzID0gYXJyYXkoKTsKCX0KCWZvcmVhY2ggKCAkYmF
ja3VwcyBhcyAkYmFja3VwICkgewoKCQkkc2VyaWFsID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0X3NlcmlhbF
9mcm9tX2ZpbGUoICRiYWNrdXAgKTsKCQlwYl9iYWNrdXBidWRkeTo6c3RhdHVzKCAnZGV0YWlscycsICdGa
Wxlb3B0aW9ucyBpbnN0YW5jZSAjMjIuJyApOwoJCSRiYWNrdXBfb3B0aW9ucyA9IG5ldyBwYl9iYWNrdXBi
dWRkeV9maWxlb3B0aW9ucyggYmFja3VwYnVkZHlfY29yZTo6Z2V0TG9nRGlyZWN0b3J5KCkgLiAnZmlsZW9
wdGlvbnMvJyAuICRzZXJpYWwgLiAnLnR4dCcsIHRydWUgKTsKCQkkcmVzdWx0ICAgICAgICAgPSAkYmFja3
VwX29wdGlvbnMtPmlzX29rKCk7CgkJaWYgKCB0cnVlICE9PSAkcmVzdWx0ICkgewoJCQlwYl9iYWNrdXBid
WRkeTo6c3RhdHVzKCAnd2FybmluZycsICdVbmFibGUgdG8gb3BlbiBmaWxlb3B0aW9ucyBmaWxlIGAnIC4g
YmFja3VwYnVkZHlfY29yZTo6Z2V0TG9nRGlyZWN0b3J5KCkgLiAnZmlsZW9wdGlvbnMvJyAuICRzZXJpYWw
gLiAnLnR4dGAuIERldGFpbHM6IGAnIC4gJHJlc3VsdCAuICdgLicgKTsKCQl9CgoKCQlpZiAoIGlzc2V0KC
AkYmFja3VwX29wdGlvbnMtPm9wdGlvbnNbJ2ludGVncml0eSddICkgJiYgaXNzZXQoICRiYWNrdXBfb3B0a
W9ucy0+b3B0aW9uc1snaW50ZWdyaXR5J11bJ3NpemUnXSApICkgewoJCQkkd3JpdGVfc3BlZWRfc2FtcGxl
cysrOwoKCQkJJHNpemUgICAgICAgPSAkYmFja3VwX29wdGlvbnMtPm9wdGlvbnNbJ2ludGVncml0eSddWyd
zaXplJ107CgkJCSR0aW1lX3Rha2VuID0gMDsKCQkJaWYgKCBpc3NldCggJGJhY2t1cF9vcHRpb25zLT5vcH
Rpb25zWydzdGVwcyddICkgKSB7CgkJCQlmb3JlYWNoICggJGJhY2t1cF9vcHRpb25zLT5vcHRpb25zWydzd
GVwcyddIGFzICRzdGVwICkgewoJCQkJCWlmICggJ2JhY2t1cF96aXBfZmlsZXMnID09ICRzdGVwWydmdW5j
dGlvbiddICkgewoJCQkJCQkkdGltZV90YWtlbiA9ICRzdGVwWydmaW5pc2hfdGltZSddIC0gJHN0ZXBbJ3N
0YXJ0X3RpbWUnXTsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJfSAvLyBFbmQgZm9yZWFjaC4KCQkJfSAvLy
BFbmQgaWYgc3RlcHMgaXNzZXQuCgoJCQlpZiAoIDAgPT0gJHRpbWVfdGFrZW4gKSB7CgkJCQkkd3JpdGVfc
3BlZWRfc2FtcGxlcyA9ICR3cml0ZV9zcGVlZF9zYW1wbGVzLS07IC8vIElnbm9yZSB0aGlzIHNhbXBsZSBz
aW5jZSBpdCdzIHRvbyBzbWFsbCB0byBjb3VudC4KCQkJfSBlbHNlIHsKCQkJCSR3cml0ZV9zcGVlZF9zdW0
gKz0gJHNpemUgLyAkdGltZV90YWtlbjsgLy8gU3VtIHVwIHdyaXRlIHNwZWVkcy4KCQkJfQoJCX0KCX0KCg
lpZiAoICR3cml0ZV9zcGVlZF9zdW0gPiAwICkgewoJCSRmaW5hbF93cml0ZV9zcGVlZCAgICAgICA9IHBiX
2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5maWxlX3NpemUoICR3cml0ZV9zcGVlZF9zdW0gLyAkd3JpdGVfc3Bl
ZWRfc2FtcGxlcyApIC4gJy9zZWMnOwoJCSRmaW5hbF93cml0ZV9zcGVlZF9ndWVzcyA9IHBiX2JhY2t1cGJ
1ZGR5OjokZm9ybWF0LT5maWxlX3NpemUoICggJHdyaXRlX3NwZWVkX3N1bSAvICR3cml0ZV9zcGVlZF9zYW
1wbGVzICkgKiBpbmlfZ2V0KCAnbWF4X2V4ZWN1dGlvbl90aW1lJyApICk7Cgl9IGVsc2UgewoJCSRmaW5hb
F93cml0ZV9zcGVlZCAgICAgICA9ICc8aT5Vbmtub3duPC9pPic7CgkJJGZpbmFsX3dyaXRlX3NwZWVkX2d1
ZXNzID0gJzxpPlVua25vd248L2k+JzsKCX0KCgk
kcGFyZW50X2NsYXNzX3Rlc3QgICAgICAgICAgID0gYXJyYXkoCgkJJ3RpdGxlJyAgICAgID0+ICdBdmVyYW
dlIFdyaXRlIFNwZWVkJywKCQknc3VnZ2VzdGlvbicgPT4gJ24vYScsCgkJJ3ZhbHVlJyAgICAgID0+ICRma
W5hbF93cml0ZV9zcGVlZCwKCQkndGlwJyAgICAgICAgPT4gX18oICdBdmVyYWdlIFpJUCBmaWxlIGNyZWF0
aW9uIHdyaXRlIHNwZWVkLiBCYWNrdXAgZmlsZSBzaXplcyBkaXZpZGVkIGJ5IHRoZSB0aW1lIHRha2VuIHR
vIGNyZWF0ZSBlYWNoLiBTYW1wbGVzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnOiBgJyAuICR3cm
l0ZV9zcGVlZF9zYW1wbGVzIC4gJ2AuJywKCSk7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ
09LJzsKCWFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7CgkvKioqKiogRU5EIEFW
RVJBR0UgV1JJVEUgU1BFRUQgKi8KCgoJLy8gR3Vlc3MgbWF4IHNpdGUgc2l6ZSB0byBiZSBhYmxlIHRvIGJ
hY2t1cC4KCSRwYXJlbnRfY2xhc3NfdGVzdCAgICAgICAgICAgPSBhcnJheSgKCQkndGl0bGUnICAgICAgPT
4gJ0d1ZXNzdGltYXRlIG9mIG1heCBaSVAgc2l6ZScsCgkJJ3N1Z2dlc3Rpb24nID0+ICduL2EnLAoJCSd2Y
Wx1ZScgICAgICA9PiAkZmluYWxfd3JpdGVfc3BlZWRfZ3Vlc3MsCgkJJ3RpcCcgICAgICAgID0+IF9fKCAn
Q2FsY3VsYXRlZCBlc3RpbWF0ZSBvZiB0aGUgbGFyZ2VzdCAuWklQIGJhY2t1cCBmaWxlIHRoYXQgbWF5IGJ
lIGNyZWF0ZWQuIEFzIFpJUCBmaWxlcyBhcmUgY29tcHJlc3NlZCB0aGUgc2l0ZSBzaXplIHRoYXQgbWF5IG
JlIGJhY2tlZCB1cCBzaG91bGQgYmUgbGFyZ2VyIHRoYW4gdGhpcy4nLCAnaXQtbDEwbi1iYWNrdXBidWRke
ScgKSwKCSk7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKCWFycmF5X3B1c2goICR0
ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7CgoKCgkvLyBIdHRwIGxvb3BiYWNrcy4KCSRsb29wYmFja19
yZXNwb25zZSA9IGJhY2t1cGJ1ZGR5X2NvcmU6Omxvb3BiYWNrX3Rlc3QoKTsKCWlmICggdHJ1ZSA9PT0gJG
xvb3BiYWNrX3Jlc3BvbnNlICkgewoJCSRsb29wYmFja19zdGF0dXMgPSAnZW5hYmxlZCc7CgkJJHN0YXR1c
yAgICAgICAgICA9IF9fKCAnT0snLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsKCX0gZWxzZSB7CgkJJGxv
b3BiYWNrX3N0YXR1cyA9ICdkaXNhYmxlZCAoZW5hYmxlIGFsdGVybmF0ZSBjcm9uKSc7CgkJJHN0YXR1cyA
gICAgICAgICA9IF9fKCAnV0FSTklORycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOwoJfQoJZ2xvYmFsIC
RiYWNrdXBidWRkeV9sb29wYmFja19kZXRhaWxzOwoJJHBhcmVudF9jbGFzc190ZXN0ICAgICAgICAgICA9I
GFycmF5KAoJCSd0aXRsZScgICAgICA9PiAnSHR0cCBMb29wYmFja3MnLAoJCSdzdWdnZXN0aW9uJyA9PiAn
ZW5hYmxlZCcsCgkJJ3ZhbHVlJyAgICAgID0+ICRsb29wYmFja19zdGF0dXMgLiAnPGJyPjx0ZXh0YXJlYSB
zdHlsZT0id2lkdGg6IDEwMCU7IG1heC1oZWlnaHQ6IDIwMHB4OyIgcmVhZG9ubHk9InRydWUiPicgLiAkYm
Fja3VwYnVkZHlfbG9vcGJhY2tfZGV0YWlscyAuICc8L3RleHRhcmVhPicsCgkJJ3RpcCcgICAgICAgID0+I
F9fKCAnU29tZSBzZXJ2ZXJzIGRvIGFyZSBub3QgY29uZmlndXJlZCBwcm9wZXJseSB0byBhbGxvdyBXb3Jk
UHJlc3MgdG8gY29ubmVjdCBiYWNrIHRvIGl0c2VsZiB2aWEgdGhlIHNpdGUgVVJMIChpZTogaHR0cDovL3l
vdXIuY29tIGNvbm5lY3RzIGJhY2sgdG8gaXRzZWxmIG9uIHRoZSBzYW1lIHNlcnZlciBhdCBodHRwOi8veW
91ci5jb20vIHRvIHRyaWdnZXIgYSBzaW11bGF0ZWQgY3JvbiBzdGVwKS4gSWYgdGhpcyBpcyB0aGUgY2FzZ
SB5b3UgbXVzdCBlaXRoZXIgYXNrIHlvdXIgaG9zdGluZyBwcm92aWRlciB0byBmaXggdGhpcyBvciBlbmFi
bGUgV29yZFByZXMgQWx0ZXJuYXRlIENyb24gbW9kZSBpbiB5b3VyIHdwLWNvbmZpZy5waHAgZmlsZS4nLCA
naXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCSk7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJH
N0YXR1czsKCWFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7CgoJLy8gd3AtY3Jvb
i5waHAgaHR0cCBsb29wYmFja3MuCglnbG9iYWwgJGJhY2t1cGJ1ZGR5X2Nyb25iYWNrX2RldGFpbHM7Cgkk
Y3JvbmJhY2tfcmVzcG9uc2UgPSBiYWNrdXBidWRkeV9jb3JlOjpjcm9uYmFja190ZXN0KCB0cnVlICk7Cgl
pZiAoIHRydWUgPT09ICRjcm9uYmFja19yZXNwb25zZSApIHsKCQkkY3JvbmJhY2tfc3RhdHVzID0gJ2VuYW
JsZWQnOwoJCSRzdGF0dXMgICAgICAgICAgPSBfXyggJ09LJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7C
gl9IGVsc2UgewoJCSRjcm9uYmFja19zdGF0dXMgPSAoIGZhbHNlICE9PSBzdHJpc3RyKCAkYmFja3VwYnVk
ZHlfY3JvbmJhY2tfZGV0YWlscywgJ2lzIHJlYWNoYWJsZScgKSApID8gJ2Jyb2tlbiAodGhlbWUgb3IgcGx
1Z2luIGNvbmZsaWN0cyknIDogJ2Rpc2FibGVkIChlbmFibGUgYWx0ZXJuYXRlIGNyb24pJzsKCQkkc3RhdH
VzICAgICAgICAgID0gX18oICdXQVJOSU5HJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7Cgl9CgkkcGFyZ
W50X2NsYXNzX3Rlc3QgICAgICAgICAgID0gYXJyYXkoCgkJJ3RpdGxlJyAgICAgID0+ICd3cC1jcm9uLnBo
cCBMb29wYmFja3MnLAoJCSdzdWdnZXN0aW9uJyA9PiAnZW5hYmxlZCcsCgkJJ3ZhbHVlJyAgICAgID0+ICR
jcm9uYmFja19zdGF0dXMgLiAnPGJyPjx0ZXh0YXJlYSBzdHlsZT0id2lkdGg6IDEwMCU7IG1heC1oZWlnaH
Q6IDIwMHB4OyIgcmVhZG9ubHk9InRydWUiPicgLiAkYmFja3VwYnVkZHlfY3JvbmJhY2tfZGV0YWlscyAuI
Cc8L3RleHRhcmVhPicsCgkJJ3RpcCcgICAgICAgID0+IF9fKCAnU29tZSBzZXJ2ZXJzIGRvIGFyZSBub3Qg
Y29uZmlndXJlZCBwcm9wZXJseSB0byBhbGxvdyBXb3JkUHJlc3MgdG8gY29ubmVjdCBiYWNrIHRvIGl0c2V
sZiB2aWEgdGhlIHNpdGUgVVJMIChpZTogaHR0cDovL3lvdXIuY29tIGNvbm5lY3RzIGJhY2sgdG8gaXRzZW
xmIG9uIHRoZSBzYW1lIHNlcnZlciBhdCBodHRwOi8veW91ci5jb20vIHRvIHRyaWdnZXIgYSBzaW11bGF0Z
WQgY3JvbiBzdGVwKS4gSWYgdGhpcyBpcyB0aGUgY2FzZSB5b3UgbXVzdCBlaXRoZXIgYXNrIHlvdXIgaG9z
dGluZyBwcm92aWRlciB0byBmaXggdGhpcyBvciBlbmFibGUgV29yZFByZXMgQWx0ZXJuYXRlIENyb24gbW9
kZSBpbiB5b3VyIHdwLWNvbmZpZy5waHAgZmlsZS4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCSk7Cg
kkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJHN0YXR1czsKCWFycmF5X3B1c2goICR0ZXN0cywgJ
HBhcmVudF9jbGFzc190ZXN0ICk7CgoKCS8vIEh0dHAgbG9vcGJhY2sgVVJMICYgSVAuCgkkc3RhdHVzICAg
ICAgICAgICAgICAgICAgICAgID0gX18oICdPSycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOwoJJHBhcnN
lZF91cmwgICAgICAgICAgICAgICAgICA9IHBhcnNlX3VybCggc2l0ZV91cmwoKSApOwoJJGlwICAgICAgIC
AgICAgICAgICAgICAgICAgICA9IGdldGhvc3RieW5hbWUoICRwYXJzZWRfdXJsWydob3N0J10gKTsKCSRwY
XJlbnRfY2xhc3NfdGVzdCAgICAgICAgICAgPSBhcnJheSgKCQkndGl0bGUnICAgICAgPT4gJ0xvb3BiYWNr
IERvbWFpbiAmIElQJywKCQknc3VnZ2VzdGlvbicgPT4gJ24vYScsCgkJJ3ZhbHVlJyAgICAgID0+ICRwYXJ
zZWRfdXJsWydob3N0J10gLiAnID0mZ3Q7ICcgLiAkaXAsCgkJJ3RpcCcgICAgICAgID0+IF9fKCAnU29tZX
RpbWVzIGR1ZSB0byBETlMgZGVsYXlzIHRoZSBzZXJ2ZXIgbWF5IGRldGVjdCB0aGUgb2xkIElQIGFkZHJlc
3MgYXMgYmVpbmcgYXNzb2NpYXRlZCB3aXRoIHlvdXIgc2l0ZSBkb21haW4gdXNlZCBpbiB0aGUgbG9vcGJh
Y2sgVVJMLiBUaGlzIGNhbiByZXN1bHQgaW4gbG9vcGJhY2sgcHJvYmxlbXMgZXZlbiB0aG91Z2ggdGhleSB
tYXkgYmUgZW5hYmxlZC4gQ29udGFjdCB5b3VyIGhvc3Qgb3Igd2FpdCBsb25nZXIgaWYgdGhlIElQIGFkZH
Jlc3MgdGhpcyBzZXJ2ZXIgcmVwb3J0cyBpcyBpbmNvcnJlY3QuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknI
CksCgkpOwoJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICRzdGF0dXM7CglhcnJheV9wdXNoKCAk
dGVzdHMsICRwYXJlbnRfY2xhc3NfdGVzdCApOwoKCgoJLy8gQ1JPTiBkaXNhYmxlZD8KCWlmICggZGVmaW5
lZCggJ0RJU0FCTEVfV1BfQ1JPTicgKSAmJiBESVNBQkxFX1dQX0NST04gKSB7CgkJJGNyb25fc3RhdHVzID
0gJ2Rpc2FibGVkJzsKCQkkc3RhdHVzICAgICAgPSBfXyggJ0ZBSUwnLCAnaXQtbDEwbi1iYWNrdXBidWRke
ScgKTsKCX0gZWxzZSB7CgkJJGNyb25fc3RhdHVzID0gJ2VuYWJsZWQnOwoJCSRzdGF0dXMgICAgICA9IF9f
KCAnT0snLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsKCX0KCSRwYXJlbnRfY2xhc3NfdGVzdCAgICAgICA
gICAgPSBhcnJheSgKCQkndGl0bGUnICAgICAgPT4gX18oICdXb3JkUHJlc3MgQ3JvbicsICdpdC1sMTBuLW
JhY2t1cGJ1ZGR5JyApLAoJCSdzdWdnZXN0aW9uJyA9PiAnZW5hYmxlZCcsCgkJJ3ZhbHVlJyAgICAgID0+I
CRjcm9uX3N0YXR1cywKCQkndGlwJyAgICAgICAgPT4gX18oICdUaGlzIGNoZWNrIHZlcmlmaWVzIHRoYXQg
dGhlIGNyb24gc3lzdGVtIGhhcyBub3QgYmVlbiBkaXNhYmxlZCBieSB0aGUgRElTQUJMRV9XUF9DUk9OIGN
vbnN0YW50LiBUaGlzIG1heSBiZSBkZWZpbmVkIGJ5IGEgcGx1Z2luIG9yIG90aGVyIG1ldGhvZCB0byBkaX
NhYmxlIHRoZSBjcm9uIHN5c3RlbSB3aGljaCBtYXkgcmVzdWx0IGluIGF1dG9tYXRlZCBmdW5jdGlvbmFsa
XR5IG5vdCBiZWluZyBhdmFpbGFibGUuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkpOwoJJHBhcmVu
dF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICRzdGF0dXM7CglhcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnR
fY2xhc3NfdGVzdCApOwoKCgkvLyBBbHRlcm5hdGUgY3JvbiBvbj8KCWlmICggZGVmaW5lZCggJ0FMVEVSTk
FURV9XUF9DUk9OJyApICYmIHRydWUgPT09IEFMVEVSTkFURV9XUF9DUk9OICkgewoJCSRhbHRlcm5hdGVfY
3Jvbl9zdGF0dXMgPSAnZW5hYmxlZCc7Cgl9IGVsc2UgewoJCSRhbHRlcm5hdGVfY3Jvbl9zdGF0dXMgPSAn
ZGlzYWJsZWQgKGRlZmF1bHQpJzsKCX0KCSRwYXJlbnRfY2xhc3NfdGVzdCAgICAgICAgICAgPSBhcnJheSg
KCQkndGl0bGUnICAgICAgPT4gJ1dvcmRQcmVzcyBBbHRlcm5hdGUgQ3JvbicsCgkJJ3N1Z2dlc3Rpb24nID
0+ICdWYXJpZXMgKHNlcnZlci1kZXBlbmRlbnQpJywKCQkndmFsdWUnICAgICAgPT4gJGFsdGVybmF0ZV9jc
m9uX3N0YXR1cywKCQkndGlwJyAgICAgICAgPT4gX18oICdTb21lIHNlcnZlcnMgZG8gbm90IGFsbG93IHNp
dGVzIHRvIGNvbm5lY3QgYmFjayB0byB0aGVtc2VsdmVzIGF0IHRoZWlyIG93biBVUkwuICBXb3JkUHJlc3M
gYW5kIEJhY2t1cEJ1ZGR5IG1ha2UgdXNlIG9mIHRoZXNlICJIdHRwIExvb3BiYWNrcyIgZm9yIHNldmVyYW
wgdGhpbmdzLiAgV2l0aG91dCB0aGVtIHlvdSBtYXkgZW5jb3VudGVyIGlzc3Vlcy4gSWYgeW91ciBzZXJ2Z
XIgbmVlZHMgaXQgb3IgeW91IGFyZSBkaXJlY3RlZCBieSBzdXBwb3J0IHlvdSBtYXkgZW5hYmxlIEFsdGVy
bmF0ZSBDcm9uIGluIHlvdXIgd3AtY29uZmlnLnBocCBmaWxlLiAgV2hlbiBlbmFibGVkIHRoaXMgc2V0dGl
uZyB3aWxsIGRpc3BsYXkgIkVuYWJsZWQiIHRvIHJlbWluZCB5b3UuJywgJ2l0LWwxMG4tYmFja3VwYnVkZH
knICksCgkpOwoJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9IF9fKCAnT0snLCAnaXQtbDEwbi1iY
WNrdXBidWRkeScgKTsKCWFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7Cgp9IC8v
IEVuZCBub24taW1wb3J0YnVkZHkgdGVzdHMuCgoKLy8gRElTQUJMRUQgRlVOQ1RJT05TLgokZGlzYWJsZWR
fZnVuY3Rpb25zID0gaW5pX2dldCggJ2Rpc2FibGVfZnVuY3Rpb25zJyApOwppZiAoICcnID09ICRkaXNhYm
xlZF9mdW5jdGlvbnMgKSB7CgkkZGlzYWJsZWRfZnVuY3Rpb25zID0gJyhub25lKSc7Cn0KJHBhcmVudF9jb
GFzc190ZXN0ICAgICAgICAgICA9IGFycmF5KAoJJ3RpdGxlJyAgICAgID0+ICdEaXNhYmxlZCBQSFAgRnVu
Y3Rpb25zJywKCSdzdWdnZXN0aW9uJyA9PiAnbi9hJywKCSd2YWx1ZScgICAgICA9PiAnPHRleHRhcmVhIHN
0eWxlPSJ3aWR0aDogMTAwJTsgbWF4LWhlaWdodDogMjAwcHg7IiByZWFkb25seT0idHJ1ZSI+JyAuIHN0cl
9yZXBsYWNlKCAnLCcsICcsICcsICRkaXNhYmxlZF9mdW5jdGlvbnMgKSAuICc8L3RleHRhcmVhPicsCgknd
GlwJyAgICAgICAgPT4gX18oICdTb21lIGhvc3RzIGJsb2NrIGNlcnRhaW4gUEhQIGZ1bmN0aW9ucyBmb3Ig
dmFyaW91cyByZWFzb25zLiBTb21ldGltZXMgaG9zdHMgYmxvY2sgZnVuY3Rpb25zIHRoYXQgYXJlIHJlcXV
pcmVkIGZvciBwcm9wZXIgZnVuY3Rpb25pbmcgb2YgV29yZFByZXNzIG9yIHBsdWdpbnMuJywgJ2l0LWwxMG
4tYmFja3VwYnVkZHknICksCik7CiRkaXNhYmxlZF9mdW5jdGlvbnMgICAgICAgICAgPSBzdHJfcmVwbGFjZ
SggJywgJywgJywnLCAkZGlzYWJsZWRfZnVuY3Rpb25zICk7IC8vIE5vcm1hbGl6ZSBzcGFjZXMgb3IgbGFj
ayBvZiBzcGFjZXMgYmV0d2VlbiBkaXNhYmxlZCBmdW5jdGlvbnMuCiRkaXNhYmxlZF9mdW5jdGlvbnNfYXJ
yYXkgICAgPSBleHBsb2RlKCAnLCcsICRkaXNhYmxlZF9mdW5jdGlvbnMgKTsKJHBhcmVudF9jbGFzc190ZX
N0WydzdGF0dXMnXSA9ICdPSyc7CmlmICggdHJ1ZSA9PT0gaW5fYXJyYXkoICdleGVjJywgJGRpc2FibGVkX
2Z1bmN0aW9uc19hcnJheSApIHx8IHRydWUgPT09IGluX2FycmF5KCAnaW5pX3NldCcsICRkaXNhYmxlZF9m
dW5jdGlvbnNfYXJyYXkgKSApIHsKCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSBfXyggJ1dBUk5
JTkcnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsKfQphcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnRfY2
xhc3NfdGVzdCApOwoKCi8vIE1ZU1FMX0NPTk5FQ1QuCmlmICggaXNfY2FsbGFibGUoICdteXNxbF9jb25uZ
WN0JyApICkgewoJJHBhcmVudF9jbGFzc192YWwgPSAnZW5hYmxlZCc7Cn0gZWxzZSB7CgkkcGFyZW50X2Ns
YXNzX3ZhbCA9ICdkaXNhYmxlZCc7Cn0KJHBhcmVudF9jbGFzc190ZXN0ICAgICAgICAgICA9IGFycmF5KAo
JJ3RpdGxlJyAgICAgID0+ICdQSFAgZnVuY3Rpb246IG15c3FsX2Nvbm5lY3QoKScsCgknc3VnZ2VzdGlvbi
cgPT4gJ24vYScsCgkndmFsdWUnICAgICAgPT4gJHBhcmVudF9jbGFzc192YWwsCgkndGlwJyAgICAgICAgP
T4gX18oICdEZXByZWNhdGVkIGluIFBIUCA1LjUuMCBhbmQgcmVtb3ZlZCBpbiBQSFAgNy4wLjAuIFJlcGxh
Y2VkIGJ5IG15c3FsaV9jb25uZWN0IG9yIFBETzo6X19jb25zdHJ1Y3QoKScsICdpdC1sMTBuLWJhY2t1cGJ
1ZGR5JyApLAopOwokcGFyZW50X2NsYXNzX3Rlc3
RbJ3N0YXR1cyddID0gX18oICdPSycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOwphcnJheV9wdXNoKCAkd
GVzdHMsICRwYXJlbnRfY2xhc3NfdGVzdCApOwoKCi8vIFJFR0lTVEVSIEdMT0JBTFMuCmlmICggaW5pX2dl
dF9ib29sKCAncmVnaXN0ZXJfZ2xvYmFscycgKSA9PT0gdHJ1ZSApIHsKCSRwYXJlbnRfY2xhc3NfdmFsID0
gJ2VuYWJsZWQnOwp9IGVsc2UgewoJJHBhcmVudF9jbGFzc192YWwgPSAnZGlzYWJsZWQnOwp9CiRwYXJlbn
RfY2xhc3NfdGVzdCA9IGFycmF5KAoJJ3RpdGxlJyAgICAgID0+ICdQSFAgUmVnaXN0ZXIgR2xvYmFscycsC
gknc3VnZ2VzdGlvbicgPT4gJ2Rpc2FibGVkJywKCSd2YWx1ZScgICAgICA9PiAkcGFyZW50X2NsYXNzX3Zh
bCwKCSd0aXAnICAgICAgICA9PiBfXyggJ0F1dG9tYXRpY2FsbHkgcmVnaXN0ZXJzIHVzZXIgaW5wdXQgYXM
gdmFyaWFibGVzLiBISUdITFkgZGlzY291cmFnZWQuIFJlbW92ZWQgZnJvbSBQSFAgaW4gUEhQIDYgZm9yIH
NlY3VyaXR5LicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAopOwppZiAoICdkaXNhYmxlZCcgIT0gJHBhc
mVudF9jbGFzc192YWwgKSB7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ0ZBSUwnOwp9IGVs
c2UgewoJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdPSyc7Cn0KYXJyYXlfcHVzaCggJHRlc3R
zLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKCgovLyBNQUdJQyBRVU9URVMgR1BDLgppZiAoIGluaV9nZXRfYm
9vbCggJ21hZ2ljX3F1b3Rlc19ncGMnICkgPT09IHRydWUgKSB7CgkkcGFyZW50X2NsYXNzX3ZhbCA9ICdlb
mFibGVkJzsKfSBlbHNlIHsKCSRwYXJlbnRfY2xhc3NfdmFsID0gJ2Rpc2FibGVkJzsKfQokcGFyZW50X2Ns
YXNzX3Rlc3QgPSBhcnJheSgKCSd0aXRsZScgICAgICA9PiAnUEhQIE1hZ2ljIFF1b3RlcyBHUEMnLAoJJ3N
1Z2dlc3Rpb24nID0+ICdkaXNhYmxlZCcsCgkndmFsdWUnICAgICAgPT4gJHBhcmVudF9jbGFzc192YWwsCg
kndGlwJyAgICAgICAgPT4gX18oICdBdXRvbWF0aWNhbGx5IGVzY2FwZXMgdXNlciBpbnB1dHRlZCBkYXRhL
iBOb3QgbmVlZGVkIHdoZW4gdXNpbmcgcHJvcGVybHkgY29kZWQgc29mdHdhcmUuJywgJ2l0LWwxMG4tYmFj
a3VwYnVkZHknICksCik7CmlmICggJ2Rpc2FibGVkJyAhPSAkcGFyZW50X2NsYXNzX3ZhbCApIHsKCSRwYXJ
lbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnV0FSTklORyc7Cn0gZWxzZSB7CgkkcGFyZW50X2NsYXNzX3
Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKfQphcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnRfY2xhc3NfdGVzd
CApOwoKLy8gTUFHSUMgUVVPVEVTIFJVTlRJTUUuCmlmICggaW5pX2dldF9ib29sKCAnbWFnaWNfcXVvdGVz
X3J1bnRpbWUnICkgPT09IHRydWUgKSB7CgkkcGFyZW50X2NsYXNzX3ZhbCA9ICdlbmFibGVkJzsKfSBlbHN
lIHsKCSRwYXJlbnRfY2xhc3NfdmFsID0gJ2Rpc2FibGVkJzsKfQokcGFyZW50X2NsYXNzX3Rlc3QgPSBhcn
JheSgKCSd0aXRsZScgICAgICA9PiAnUEhQIE1hZ2ljIFF1b3RlcyBSdW50aW1lJywKCSdzdWdnZXN0aW9uJ
yA9PiAnZGlzYWJsZWQnLAoJJ3ZhbHVlJyAgICAgID0+ICRwYXJlbnRfY2xhc3NfdmFsLAoJJ3RpcCcgICAg
ICAgID0+IF9fKCAnQXV0b21hdGljYWxseSBlc2NhcGVzIHVzZXIgaW5wdXR0ZWQgZGF0YS4gTm90IG5lZWR
lZCB3aGVuIHVzaW5nIHByb3Blcmx5IGNvZGVkIHNvZnR3YXJlLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5Jy
ApLAopOwppZiAoICdkaXNhYmxlZCcgIT0gJHBhcmVudF9jbGFzc192YWwgKSB7CgkkcGFyZW50X2NsYXNzX
3Rlc3RbJ3N0YXR1cyddID0gJ1dBUk5JTkcnOwp9IGVsc2UgewoJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0
dXMnXSA9ICdPSyc7Cn0KYXJyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKCgovLyB
TQUZFIE1PREUuCmlmICggaW5pX2dldF9ib29sKCAnc2FmZV9tb2RlJyApID09PSB0cnVlICkgewoJJHBhcm
VudF9jbGFzc192YWwgPSAnZW5hYmxlZCc7Cn0gZWxzZSB7CgkkcGFyZW50X2NsYXNzX3ZhbCA9ICdkaXNhY
mxlZCc7Cn0KJHBhcmVudF9jbGFzc190ZXN0ID0gYXJyYXkoCgkndGl0bGUnICAgICAgPT4gJ1BIUCBTYWZl
IE1vZGUnLAoJJ3N1Z2dlc3Rpb24nID0+ICdkaXNhYmxlZCcsCgkndmFsdWUnICAgICAgPT4gJHBhcmVudF9
jbGFzc192YWwsCgkndGlwJyAgICAgICAgPT4gX18oICdUaGlzIG1vZGUgaXMgSElHSExZIGRpc2NvdXJhZ2
VkIGFuZCBpcyBhIHNpZ24gb2YgYSBwb29ybHkgY29uZmlndXJlZCBob3N0LicsICdpdC1sMTBuLWJhY2t1c
GJ1ZGR5JyApLAopOwppZiAoICdkaXNhYmxlZCcgIT0gJHBhcmVudF9jbGFzc192YWwgKSB7CgkkcGFyZW50
X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ1dBUk5JTkcnOwp9IGVsc2UgewoJJHBhcmVudF9jbGFzc190ZXN
0WydzdGF0dXMnXSA9ICdPSyc7Cn0KYXJyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKT
sKCgovLyBQSFAgQVBJLgokcGhwX2FwaSA9ICdVbmtub3duJzsKaWYgKCBpc19jYWxsYWJsZSggJ3BocF9zY
XBpX25hbWUnICkgKSB7CgkkcGhwX2FwaSA9IHBocF9zYXBpX25hbWUoKTsKfQokcGFyZW50X2NsYXNzX3Rl
c3QgICAgICAgICAgID0gYXJyYXkoCgkndGl0bGUnICAgICAgPT4gJ1BIUCBBUEknLAoJJ3N1Z2dlc3Rpb24
nID0+ICduL2EnLAoJJ3ZhbHVlJyAgICAgID0+ICRwaHBfYXBpLAoJJ3RpcCcgICAgICAgID0+IF9fKCAnQV
BJIG1vZGUgUEhQIGlzIHJ1bm5pbmcgdW5kZXIuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCik7CiRwY
XJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnT0snOwphcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnRf
Y2xhc3NfdGVzdCApOwoKCgovLyBQSFAgQml0cy4KJGJpdHMgICAgICAgICAgICAgID0gKCBQSFBfSU5UX1N
JWkUgKiA4ICk7CiRwYXJlbnRfY2xhc3NfdGVzdCA9IGFycmF5KAoJJ3RpdGxlJyAgICAgID0+ICdQSFAgQX
JjaGl0ZWN0dXJlJywKCSdzdWdnZXN0aW9uJyA9PiAnNjQtYml0JywKCSd2YWx1ZScgICAgICA9PiAkYml0c
yAuICctYml0JywKCSd0aXAnICAgICAgICA9PiBfXyggJ1doZXRoZXIgUEhQIGlzIHJ1bm5pbmcgaW4gMzIg
b3IgNjQgYml0IG1vZGUuIDY0LWJpdCBpcyByZWNvbW1lbmRlZCBvdmVyIDMyLWJpdC4gTm90ZTogVGhpcyB
vbmx5IGRldGVybWluZXMgUEhQIHN0YXR1cyBOT1Qgc3RhdHVzIG9mIG90aGVyIHNlcnZlciBmdW5jdGlvbm
FsaXR5IHN1Y2ggYXMgZmlsZXN5c3RlbSwgY29tbWFuZCBsaW5lIHppcCwgZXRjLicsICdpdC1sMTBuLWJhY
2t1cGJ1ZGR5JyApLAopOwppZiAoICRiaXRzIDwgNjAgKSB7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1
cyddID0gJ1dBUk5JTkcnOwp9IGVsc2UgewoJJHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdPSyc
7Cn0KYXJyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKCgoKLy8gaHR0cCBTZXJ2ZX
IgU29mdHdhcmUuCmlmICggaXNzZXQoICRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXSApICkgewoJJHNlc
nZlcl9zb2Z0d2FyZSA9ICRfU0VSVkVSWydTRVJWRVJfU09GVFdBUkUnXTsKfSBlbHNlIHsKCSRzZXJ2ZXJf
c29mdHdhcmUgPSAnVW5rbm93bic7Cn0KJHBhcmVudF9jbGFzc190ZXN0ICAgICAgICAgICA9IGFycmF5KAo
JJ3RpdGxlJyAgICAgID0+ICdIdHRwIFNlcnZlciBTb2Z0d2FyZScsCgknc3VnZ2VzdGlvbicgPT4gJ24vYS
csCgkndmFsdWUnICAgICAgPT4gJHNlcnZlcl9zb2Z0d2FyZSwKCSd0aXAnICAgICAgICA9PiBfXyggJ1NvZ
nR3YXJlIHJ1bm5pbmcgdGhpcyBodHRwIHdlYiBzZXJ2ZXIsIHN1Y2ggYXMgQXBhY2hlLCBJSVMsIG9yIE5n
aW54LicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAopOwokcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyd
dID0gJ09LJzsKYXJyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKCgoKLy8gTG9hZC
BBdmVyYWdlLgppZiAoICEgZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApICkgewoJJGxvYWRfYXZlcmFnZ
SA9IHBiX2JhY2t1cGJ1ZGR5X2dldF9sb2FkYXZnKCk7Cglmb3JlYWNoICggJGxvYWRfYXZlcmFnZSBhcyAm
JHRoaXNfbG9hZCApIHsKCQkkdGhpc19sb2FkID0gcm91bmQoICR0aGlzX2xvYWQsIDIgKTsKCX0KCSRwYXJ
lbnRfY2xhc3NfdGVzdCAgICAgICAgICAgPSBhcnJheSgKCQkndGl0bGUnICAgICAgPT4gJ1NlcnZlciBMb2
FkIEF2ZXJhZ2UnLAoJCSdzdWdnZXN0aW9uJyA9PiAnbi9hJywKCQkndmFsdWUnICAgICAgPT4gaW1wbG9kZ
SggJywgJywgJGxvYWRfYXZlcmFnZSApLAoJCSd0aXAnICAgICAgICA9PiBfXyggJ1NlcnZlciBDUFUgdXNl
IGluIGludGVydmFsczogMSBtaW51dGUsIDUgbWludXRlcywgMTUgbWludXRlcy4gRS5nLiAuNDUgYmFzaWN
hbGx5IGVxdWF0ZXMgdG8gNDUlIENQVSB1c2FnZS4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCSk7Cg
kkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKCWFycmF5X3B1c2goICR0ZXN0cywgJHBhc
mVudF9jbGFzc190ZXN0ICk7Cn0KCgoKLy8gU0ZUUCBzdXBwb3J0PwppZiAoICEgZGVmaW5lZCggJ1BCX0lN
UE9SVEJVRERZJyApICkgewoJJGNvbm5lY3QgPSAnbm8nOwoJJHNmdHAgICAgPSAnbm8nOwoJaWYgKCBpc19
jYWxsYWJsZSggJ3NzaDJfY29ubmVjdCcgKSAmJiBmYWxzZSA9PT0gaW5fYXJyYXkoICdzc2gyX2Nvbm5lY3
QnLCAkZGlzYWJsZWRfZnVuY3Rpb25zX2FycmF5ICkgKSB7CgkJJGNvbm5lY3QgPSAneWVzJzsKCX0KCWlmI
CggaXNfY2FsbGFibGUoICdzc2gyX2Z0cCcgKSAmJiBmYWxzZSA9PT0gaW5fYXJyYXkoICdzc2gyX2Z0cCcs
ICRkaXNhYmxlZF9mdW5jdGlvbnNfYXJyYXkgKSApIHsKCQkkY29ubmVjdCA9ICd5ZXMnOwoJfQoJJHBhcmV
udF9jbGFzc190ZXN0ICAgICAgICAgICA9IGFycmF5KAoJCSd0aXRsZScgICAgICA9PiAnUEhQIFNTSDIsIF
NGVFAgU3VwcG9ydCcsCgkJJ3N1Z2dlc3Rpb24nID0+ICduL2EnLAoJCSd2YWx1ZScgICAgICA9PiAkY29ub
mVjdCAuICcsICcgLiAkc2Z0cCwKCQkndGlwJyAgICAgICAgPT4gX18oICdXaGV0aGVyIG9yIG5vdCB5b3Vy
IHNlcnZlciBpcyBjb25maWd1cmVkIHRvIGFsbG93IFNTSDIgY29ubmVjdGlvbnMgb3ZlciBQSFAgb3IgU0Z
UUCBjb25uZWN0aW9ucyBvciBQSFAuIE1vc3QgaG9zdHMgZG8gbm90IGN1cnJlbnRseSBwcm92aWRlIHRoaX
MgZmVhdHVyZS4gSW5mb3JtYXRpb24gb25seTsgQmFja3VwQnVkZHkgY2Fubm90IG1ha2UgdXNlIG9mIHRoa
XMgZnVuY3Rpb25hbGl0eSBhdCB0aGlzIHRpbWUuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkpOwoJ
JHBhcmVudF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdPSyc7CglhcnJheV9wdXNoKCAkdGVzdHMsICRwYXJ
lbnRfY2xhc3NfdGVzdCApOwp9CgoKCi8vIEFCU1BBVEguCiRwYXJlbnRfY2xhc3NfdGVzdCA9IGFycmF5KA
oJJ3RpdGxlJyAgICAgID0+ICdXb3JkUHJlc3MgQUJTUEFUSCcsCgknc3VnZ2VzdGlvbicgPT4gJ24vYScsC
gkndmFsdWUnICAgICAgPT4gJzxzcGFuIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IG1heC13aWR0
aDogMjUwcHg7Ij4nIC4gQUJTUEFUSCAuICc8L3NwYW4+JywKCSd0aXAnICAgICAgICA9PiBfXyggJ1RoaXM
gaXMgdGhlIGRpcmVjdG9yeSB3aGljaCBXb3JkUHJlc3MgcmVwb3J0cyB0byBCYWNrdXBCdWRkeSBpdCBpcy
BpbnN0YWxsZWQgaW4uJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCik7CmlmICggISBAZmlsZV9leGlzd
HMoIEFCU1BBVEggKSApIHsKCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnV0FSTklORyc7Cn0g
ZWxzZSB7CgkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKfQphcnJheV9wdXNoKCAkdGV
zdHMsICRwYXJlbnRfY2xhc3NfdGVzdCApOwoKCgovLyBPUy4KJHBocF91bmFtZSA9ICcnOwppZiAoIGlzX2
NhbGxhYmxlKCAncGhwX3VuYW1lJyApICkgewoJJHBocF91bmFtZSA9ICcgPHNwYW4gc3R5bGU9ImRpc3BsY
Xk6IGJsb2NrOyBtYXgtd2lkdGg6IDI1MHB4OyBmb250LXNpemU6IDhweDsgbGluZS1oZWlnaHQ6MS4yNTsi
PignIC4gQHBocF91bmFtZSgpIC4gJyk8L3NwYW4+JzsKfQokcGFyZW50X2NsYXNzX3Rlc3QgPSBhcnJheSg
KCSd0aXRsZScgICAgICA9PiAnT3BlcmF0aW5nIFN5c3RlbScsCgknc3VnZ2VzdGlvbicgPT4gJ0xpbnV4Jy
wKCSd2YWx1ZScgICAgICA9PiBQSFBfT1MgLiAkcGhwX3VuYW1lLAoJJ3RpcCcgICAgICAgID0+IF9fKCAnV
GhlIHNlcnZlciBvcGVyYXRpbmcgc3lzdGVtIHJ1bm5pbmcgdGhpcyBzaXRlLiBMaW51eCBiYXNlZCBzeXN0
ZW1zIGFyZSBlbmNvdXJhZ2VkLiBXaW5kb3dzIHVzZXJzIG1heSBuZWVkIHRvIHBlcmZvcm0gYWRkaXRpb25
hbCBzdGVwcyB0byBnZXQgcGx1Z2lucyB0byBwZXJmb3JtIHByb3Blcmx5LicsICdpdC1sMTBuLWJhY2t1cG
J1ZGR5JyApLAopOwppZiAoIHN1YnN0ciggUEhQX09TLCAwLCAzICkgPT0gJ1dJTicgKSB7CgkkcGFyZW50X
2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ1dBUk5JTkcnOwp9IGVsc2UgewoJJHBhcmVudF9jbGFzc190ZXN0
WydzdGF0dXMnXSA9ICdPSyc7Cn0KYXJyYXlfcHVzaCggJHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTs
KCgoKLy8gSXMgdGhpcyBwb3NzaWJseSBHb0RhZGR5IE1hbmFnZWQgV29yZFByZXNzIEhvc3Rpbmc/CmlmIC
ggZGVmaW5lZCggJ0dEX1NZU1RFTV9QTFVHSU5fRElSJyApIHx8IGNsYXNzX2V4aXN0cyggJ1xcV1BhYVNcX
FBsdWdpbicgKSApIHsKCSRwYXJlbnRfY2xhc3NfdGVzdCAgICAgICAgICAgPSBhcnJheSgKCQkndGl0bGUn
ICAgICAgPT4gJ0dvRGFkZHkgTWFuYWdlZCBXb3JkUHJlc3MgSG9zdGluZyBEZXRlY3RlZCcsCgkJJ3N1Z2d
lc3Rpb24nID0+ICduL2EnLAoJCSd2YWx1ZScgICAgICA9PiAnUG90ZW50aWFsbHkgRGV0ZWN0ZWQnLAoJCS
d0aXAnICAgICAgICA9PiBfXyggJ0dvRGFkZHlcJ3MgTWFuYWdlZCBXb3JkUHJlc3MgSG9zdGluZyByZWNlb
nRseSBleHBlcmllbmNlZCBwcm9ibGVtcyByZXN1bHRpbmcgaW4gdGhlIFdvcmRQcmVzcyBjcm9uIG5vdCB3
b3JraW5nIHByb3Blcmx5IHJlc3VsdGluZyBpbiBXb3JkUHJlc3NcJyBidWlsdC1pbiBzY2hlZHVsaW5nIGF
uZCBhdXRvbWF0aW9uIGZ1bmN0aW9uYWxpdHkgbWFsZnVuY3Rpb25pbmcuIEdvRGFkZHkgaGFzIGFkZHJlc3
NlZCB0aGlzIGlzc3VlIGZvciBVUy1iYXNlZCBjdXN0b21lcnMgYW5kIHdlIGJlbGlldmUgaXQgdG8gYmUgc
mVzb2x2ZWQgZm9yIHRob3NlIGhvc3RlZCBpbiB0aGUgVVNBLiBOb24tVVMgY3VzdG9tZXJzIHNob3VsZCBj
b250YWN0IEdvRGFkZHkgc3VwcG9ydC4gSG93ZXZlciwgaWYgeW91IHN0aWxsIGV4cGVyaWVuY2UgaXNzdWV
zIGFuZCByZXF1aXJlIGEgcGFydGlhbCB3b3JrYXJvdW5kIGdvIHRvIEJhY2t1cEJ1ZGR5IC0+IFNldHRpbm
dzIHBhZ2UgLT4gQWR2YW5jZWQgU2V0dGluZ3MgL
yBUcm91Ymxlc2hvb3RpbmcgdGFiIC0+IENoZWNrIHRoZSBib3ggRm9yY2UgaW50ZXJuYWwgY3JvbiAtPiBT
Y3JvbGwgZG93biBhbmQgU2F2ZSB0aGUgc2V0dGluZ3MuICBUaGlzIG1heSBoZWxwIHlvdSBiZSBhYmxlIHR
vIG1ha2UgYSBtYW51YWwgdHJhZGl0aW9uYWwgYmFja3VwIHRob3VnaCBpdCBtYXkgYmUgc2xvdyBhbmQgaX
Mgbm90IGd1YXJhbnRlZWQuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkpOwoJJHBhcmVudF9jbGFzc
190ZXN0WydzdGF0dXMnXSA9ICdXQVJOSU5HJzsKCWFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFz
c190ZXN0ICk7Cn0KCgovLyBBY3RpdmUgcGx1Z2lucyBsaXN0LgppZiAoICEgZGVmaW5lZCggJ1BCX0lNUE9
SVEJVRERZJyApICkgewoJLy8gQWN0aXZlIFBsdWdpbnMuCgkkc3VjY2VzcyAgICAgICAgPSB0cnVlOwoJJG
FjdGl2ZV9wbHVnaW5zID0gc2VyaWFsaXplKCBnZXRfb3B0aW9uKCAnYWN0aXZlX3BsdWdpbnMnICkgKTsKC
SRmb3VuZF9wbHVnaW5zICA9IGFycmF5KCk7Cglmb3JlYWNoICggYmFja3VwYnVkZHlfY29yZTo6JHdhcm5f
cGx1Z2lucyBhcyAkd2Fybl9wbHVnaW4gPT4gJHdhcm5fcGx1Z2luX3RpdGxlICkgewoJCWlmICggZmFsc2U
gIT09IHN0cnBvcyggJGFjdGl2ZV9wbHVnaW5zLCAkd2Fybl9wbHVnaW4gKSApIHsgLy8gUGx1Z2luIGFjdG
l2ZS4KCQkJJGZvdW5kX3BsdWdpbnNbXSA9ICR3YXJuX3BsdWdpbl90aXRsZTsKCQkJJHN1Y2Nlc3MgICAgI
CAgICA9IGZhbHNlOwoJCX0KCX0KCSRwYXJlbnRfY2xhc3NfdGVzdCA9IGFycmF5KAoJCSd0aXRsZScgICAg
ICA9PiAnQWN0aXZlIFdvcmRQcmVzcyBQbHVnaW5zJywKCQknc3VnZ2VzdGlvbicgPT4gJ24vYScsCgkJJ3Z
hbHVlJyAgICAgID0+ICc8dGV4dGFyZWEgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDcwcHg7IiByZW
Fkb25seT0idHJ1ZSI+JyAuIGltcGxvZGUoICcsICcsIHVuc2VyaWFsaXplKCAkYWN0aXZlX3BsdWdpbnMgK
SApIC4gJzwvdGV4dGFyZWE+JywKCQkndGlwJyAgICAgICAgPT4gX18oICdQbHVnaW5zIGN1cnJlbnRseSBh
Y3RpdmF0ZWQgZm9yIHRoaXMgc2l0ZS4gQSB3YXJuaW5nIGRvZXMgbm90IGd1YXJlbnRlZSBwcm9ibGVtcyB
3aXRoIGEgcGx1Z2luIGJ1dCBpbmRpY2F0ZXMgdGhhdCBhIHBsdWdpbiBpcyBhY3RpdmF0ZWQgdGhhdCBhdC
BvbmUgcG9pbnQgbWF5IGhhdmUgY2F1c2VkIG9wZXJhdGlvbmFsIGlzc3Vlcy4gIFBsdWdpbiBjb25mbGljd
HMgY2FuIGJlIHNwZWNpZmljIGFuZCBtYXkgb25seSBvY2N1ciB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5j
ZXMgc3VjaCBhcyBjZXJ0YWluIHBsdWdpbiB2ZXJzaW9ucywgcGx1Z2luIGNvbmZpZ3VyYXRpb25zLCBhbmQ
gc2VydmVyIHNldHRpbmdzLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJKTsKCWlmICggZmFsc2UgPT
09ICRzdWNjZXNzICkgewoJCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnV0FSTklORyc7Cgl9I
GVsc2UgewoJCSRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gPSAnT0snOwoJfQoJYXJyYXlfcHVzaCgg
JHRlc3RzLCAkcGFyZW50X2NsYXNzX3Rlc3QgKTsKfQoKCgovLyBQSFAgUHJvY2VzcyB1c2VyL2dyb3VwLgp
pZiAoICEgZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApICkgewoJJHN1Y2Nlc3MgID0gdHJ1ZTsKCSRwaH
BfdXNlciA9ICc8aT4nIC4gX18oICdVbmtub3duJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnPC9pP
ic7CgkkcGhwX3VpZCAgPSAnPGk+JyAuIF9fKCAnVW5rbm93bicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyAp
IC4gJzwvaT4nOwoJJHBocF9naWQgID0gJzxpPicgLiBfXyggJ1Vua25vd24nLCAnaXQtbDEwbi1iYWNrdXB
idWRkeScgKSAuICc8L2k+JzsKCglpZiAoIGlzX2NhbGxhYmxlKCAncG9zaXhfZ2V0ZXVpZCcgKSAmJiBmYW
xzZSA9PT0gaW5fYXJyYXkoICdwb3NpeF9nZXRldWlkJywgJGRpc2FibGVkX2Z1bmN0aW9uc19hcnJheSApI
CkgewoJCSRwaHBfdWlkID0gQHBvc2l4X2dldGV1aWQoKTsKCQlpZiAoIGlzX2NhbGxhYmxlKCAncG9zaXhf
Z2V0cHd1aWQnICkgJiYgZmFsc2UgPT09IGluX2FycmF5KCAncG9zaXhfZ2V0cHd1aWQnLCAkZGlzYWJsZWR
fZnVuY3Rpb25zX2FycmF5ICkgKSB7CgkJCSRwaHBfdXNlciA9IEBwb3NpeF9nZXRwd3VpZCggJHBocF91aW
QgKTsKCQkJJHBocF91c2VyID0gJHBocF91c2VyWyduYW1lJ107CgkJfQoJfQoJaWYgKCBpc19jYWxsYWJsZ
SggJ3Bvc2l4X2dldGVnaWQnICkgJiYgKCBmYWxzZSA9PT0gaW5fYXJyYXkoICdwb3NpeF9nZXRlZ2lkJywg
JGRpc2FibGVkX2Z1bmN0aW9uc19hcnJheSApICkgKSB7CgkJJHBocF9naWQgPSBAcG9zaXhfZ2V0ZWdpZCg
pOwoJfQoJJHBhcmVudF9jbGFzc190ZXN0ID0gYXJyYXkoCgkJJ3RpdGxlJyAgICAgID0+ICdQSFAgUHJvY2
VzcyBVc2VyIChVSUQ6R0lEKScsCgkJJ3N1Z2dlc3Rpb24nID0+ICduL2EnLAoJCSd2YWx1ZScgICAgICA9P
iAkcGhwX3VzZXIgLiAnICgnIC4gJHBocF91aWQgLiAnOicgLiAkcGhwX2dpZCAuICcpJywKCQkndGlwJyAg
ICAgICAgPT4gX18oICdDdXJyZW50IHVzZXIsIHVzZXIgSUQsIGFuZCBncm91cCBJRCB1bmRlciB3aGljaCB
0aGlzIFBIUCBwcm9jZXNzIGlzIHJ1bm5pbmcuIFRoaXMgdXNlciBtdXN0IGhhdmUgcHJvcGVyIGFjY2Vzcy
B0byB5b3VyIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4gSWYgdGhlIFBIUCB1c2VyIGlzIG5vdCB5b3VyIG93b
iB0aGVuIHNldHRpbmcgdXAgYSBzeXN0ZW0gc3VjaCBhcyBzdXBocCBpcyBlbmNvdXJhZ2VkIHRvIGVuc3Vy
ZSBwcm9wZXIgYWNjZXNzIGFuZCBzZWN1cml0eS4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCSk7Cgl
pZiAoIGZhbHNlID09PSAkc3VjY2VzcyApIHsKCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ1
dBUk5JTkcnOwoJfSBlbHNlIHsKCQkkcGFyZW50X2NsYXNzX3Rlc3RbJ3N0YXR1cyddID0gJ09LJzsKCX0KC
WFycmF5X3B1c2goICR0ZXN0cywgJHBhcmVudF9jbGFzc190ZXN0ICk7Cn0KCgovLyBEZXBsb3ltZW50IEFQ
SSBlbmFibGVkPwppZiAoICEgZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApICkgewoJJGRlcGxveW1lbnR
fZW5hYmxlZCA9IF9fKCAnRGlzYWJsZWQnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsKCWlmICggISBkZW
ZpbmVkKCAnQkFDS1VQQlVERFlfQVBJX0VOQUJMRScgKSApIHsKCQkkZGVwbG95bWVudF9lbmFibGVkIC49I
CcgKCcgLiBfXyggJ1NldHRpbmcgVW5kZXRlY3RlZCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJykn
OwoJfSBlbHNlaWYgKCB0cnVlID09IEJBQ0tVUEJVRERZX0FQSV9FTkFCTEUgKSB7CgkJJGRlcGxveW1lbnR
fZW5hYmxlZCA9IF9fKCAnRW5hYmxlZCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOwoJfQoKCSRwYXJlbn
RfY2xhc3NfdGVzdCAgICAgICAgICAgPSBhcnJheSgKCQkndGl0bGUnICAgICAgPT4gJ0JhY2t1cEJ1ZGR5I
ERlcGxveW1lbnQgQVBJIHdwLWNvbmZpZyBzZXR0aW5nJywKCQknc3VnZ2VzdGlvbicgPT4gJ24vYScsCgkJ
J3ZhbHVlJyAgICAgID0+ICRkZXBsb3ltZW50X2VuYWJsZWQsCgkJJ3RpcCcgICAgICAgID0+IF9fKCAnRW5
hYmxpbmcgdGhlIEJhY2t1cEJ1ZGR5IERlcGxveW1lbnQgQVBJIHZpYSB0aGUgd3AtY29uZmlnLnBocCBhbG
xvd3Mgb3RoZXIgQmFja3VwQnVkZHkgaW5zdGFsbGF0aW9ucyBzdXBwbGllZCB3aXRoIHRoZSBhdXRoZW50a
WNhdGlvbiBrZXkgdG8gUHVzaCB0byBvciBQdWxsIGZyb20gdGhpcyBzaXRlXCdzIGRhdGEuIFVzZWZ1bCBm
b3IgZGV2ZWxvcG1lbnQgcHVycG9zZXMuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkpOwoJJHBhcmV
udF9jbGFzc190ZXN0WydzdGF0dXMnXSA9ICdPSyc7CglhcnJheV9wdXNoKCAkdGVzdHMsICRwYXJlbnRfY2
xhc3NfdGVzdCApOwp9Cg==
###PACKDATA,FILE_END,/controllers/pages/server_info/_server_tests.php,importbuddy/c
ontrollers/pages/server_info/_server_tests.php
###PACKDATA,FILE_START,/controllers/pages/server_info/cron.php,importbuddy/controll
ers/pages/server_info/cron.php
PD9waHAKLyoqCiAqIENyb24gU2VydmVyIEluZm8gUGFnZQogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQo
gKi8KCj8+CkFsbCBzY2hlZHVsZWQgV29yZFByZXNzIHRhc2tzIChDUk9OIGpvYnMpIGFyZSBsaXN0ZWQgYm
Vsb3cuIFVzZSBjYXV0aW9uIHdoZW4gbWFudWFsbHkgcnVubmluZyBvciBkZWxldGluZyBzY2hlZHVsZWQgQ
1JPTgpqb2JzIGFzIHBsdWdpbnMsIHRoZW1lcywgb3IgV29yZFByZXNzIGl0c2VsZiBtYXkgZXhwZWN0IHRo
ZXNlIHRvIHJlbWFpbiBpbiBwbGFjZS4gV29yZFByZXNzIHdpbGwgcmVjcmVhdGUgYW55IG1hbmRhdG9yeQp
pbnRlcm5hbCBDUk9OIGpvYnMgYXV0b21hdGljYWxseSBpZiB0aGV5IGFyZSByZW1vdmVkLjxicj48YnI+Cj
w/cGhwCmlmICggaXNfbnVtZXJpYyggZ2V0X29wdGlvbiggJ190cmFuc2llbnRfZG9pbmdfY3JvbicgKSApI
CYmICggZ2V0X29wdGlvbiggJ190cmFuc2llbnRfZG9pbmdfY3JvbicgKSA+IDAgKSApIHsKCSRsYXN0X2Ny
b25fcnVuID0gcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPnRpbWVfYWdvKCBnZXRfb3B0aW9uKCAnX3RyYW5
zaWVudF9kb2luZ19jcm9uJyApICkgLiAnIGFnbyAoJyAuIHJvdW5kKCBnZXRfb3B0aW9uKCAnX3RyYW5zaW
VudF9kb2luZ19jcm9uJyApICkgLiAnKSc7Cn0gZWxzZSB7CgkkbGFzdF9jcm9uX3J1biA9IF9fKCAnTm90I
HJ1bm5pbmcgKGNvbXBsZXRlZCknLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsKfQoKJGRhdGVfdGltZV9m
b3JtYXR0ZWQgPSBjdXJyZW50X3RpbWUoIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5nZXRfZGF0ZV9mb3J
tYXQoKSApOwokdGltZXN0YW1wICAgICAgICAgICA9IGN1cnJlbnRfdGltZSggJ3RpbWVzdGFtcCcgKTsKZW
NobyAnPGNlbnRlcj4nIC4gZXNjX2h0bWxfXyggJ0N1cnJlbnQgVGltZScsICdpdC1sMTBuLWJhY2t1cGJ1Z
GR5JyApIC4gJzogJyAuIGVzY19odG1sKCAkZGF0ZV90aW1lX2Zvcm1hdHRlZCApIC4gJyAoJyAuIGVzY19o
dG1sKCAkdGltZXN0YW1wICkgLiAnKTwvY2VudGVyPic7CmVjaG8gJzxjZW50ZXI+JyAuIGVzY19odG1sX18
oICdDdXJyZW50bHkgcnVubmluZyBsYXN0IGNyb24nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSAuICc6IC
cgLiBlc2NfaHRtbCggJGxhc3RfY3Jvbl9ydW4gKSAuICc8L2NlbnRlcj4nOwo/Pgo8ZGl2IHN0eWxlPSJmb
G9hdDogcmlnaHQ7IG1hcmdpbi1ib3R0b206IDFweDsiPgoJPGEgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
ICNmZmViYzY7ICFpbXBvcnRhbnQ7IiBocmVmPSI8P3BocCBlY2hvIHBiX2JhY2t1cGJ1ZGR5OjpwYWdlX3V
ybCgpOyA/PiZjbGVhcl9jcm9uPXllcyZ0YWI9MyIgY2xhc3M9ImJ1dHRvbiBzZWNvbmRhcnktYnV0dG9uIi
BvbkNsaWNrPSJyZXR1cm4gY29uZmlybSggJzw/cGhwIGVzY19odG1sX2UoICdBcmUgeW91IHN1cmUgeW91I
HdhbnQgdG8gY2xlYXIgYWxsIGNyb24gZW50cmllcz8gV29yZFByZXNzIHdpbGwgYXV0b21hdGljYWxseSBy
ZWdlbmVyYXRlIGNyb25zIGJ1dCBzb21lIDNyZCBwYXJ0eSBwbHVnaW5zIG1heSBub3QuJywgJ2l0LWwxMG4
tYmFja3VwYnVkZHknICk7ID8+JyApOyI+PD9waHAgZXNjX2h0bWxfZSggJ0RlbGV0ZSBBbGwgQ3JvbiBFbn
RyaWVzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+PC9hPgo8L2Rpdj4KPD9waHAKCmlmICggJ3llc
ycgPT0gcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdjbGVhcl9jcm9uJyApICkgewoJZGVsZXRlX29wdGlvbigg
J2Nyb24nICk7CglwYl9iYWNrdXBidWRkeTo6YWxlcnQoIF9fKCAnQWxsIGNyb24gZW50cmllcyBoYXZlIGJ
lZW4gZGVsZXRlZC4nICkgKTsKfQoKJGNyb24gPSBnZXRfb3B0aW9uKCAnY3JvbicgKTsKCi8vIEhhbmRsZS
BDUk9OIGRlbGV0aW9ucy4KaWYgKCBwYl9iYWNrdXBidWRkeTo6X1BPU1QoICdidWxrX2FjdGlvbicgKSA9P
SAnZGVsZXRlX2Nyb24nICkgewoJaWYgKCBkZWZpbmVkKCAnUEJfREVNT19NT0RFJyApICkgewoJCXBiX2Jh
Y2t1cGJ1ZGR5OjphbGVydCggJ0FjY2VzcyBkZW5pZWQgaW4gZGVtbyBtb2RlLicsIHRydWUgKTsKCX0gZWx
zZSB7CgkJJGRlbGV0ZV9pdGVtcyA9IHBiX2JhY2t1cGJ1ZGR5OjpfUE9TVCggJ2l0ZW1zJyApOwoKCQkkZG
VsZXRlZF9jcm9ucyA9IGFycmF5KCk7IC8vIEZvciBsaXN0aW5nIGluIGFsZXJ0LgoJCWZvcmVhY2ggKCAkZ
GVsZXRlX2l0ZW1zIGFzICRkZWxldGVfaXRlbSApIHsKCQkJJGNyb25fcGFydHMgPSBleHBsb2RlKCAnfCcs
ICRkZWxldGVfaXRlbSApOwoJCQkkdGltZXN0YW1wICA9ICRjcm9uX3BhcnRzWzBdOwoJCQkkY3Jvbl9ob29
rICA9ICRjcm9uX3BhcnRzWzFdOwoJCQkkY3Jvbl9rZXkgICA9ICRjcm9uX3BhcnRzWzJdOwoKCQkJaWYgKC
Bpc3NldCggJGNyb25bICR0aW1lc3RhbXAgXVsgJGNyb25faG9vayBdWyAkY3Jvbl9rZXkgXSApICkgeyAvL
yBSdW4gY3Jvbi4KCgkJCQkkY3Jvbl9hcnJheSA9ICRjcm9uWyAkdGltZXN0YW1wIF1bICRjcm9uX2hvb2sg
XVsgJGNyb25fa2V5IF07IC8vIEdldCBjcm9uIGFycmF5IGJhc2VkIG9uIHBhc3NlZCB2YWx1ZXMuCgkJCQk
kcmVzdWx0ICAgICA9IGJhY2t1cGJ1ZGR5X2NvcmU6OnVuc2NoZWR1bGVfZXZlbnQoICR0aW1lc3RhbXAsIC
Rjcm9uX2hvb2ssICRjcm9uX2FycmF5WydhcmdzJ10gKTsgLy8gRGVsZXRlIHRoZSBzY2hlZHVsZWQgY3Jvb
i4KCQkJCWlmICggZmFsc2UgPT09ICRyZXN1bHQgKSB7CgkJCQkJcGJfYmFja3VwYnVkZHk6OmFsZXJ0KCAn
RXJyb3IgIzU2NTc2Njc2NzUuIFVuYWJsZSB0byBkZWxldGUgQ1JPTiBqb2IuIFBsZWFzZSBzZWUgeW91ciB
CYWNrdXBCdWRkeSBlcnJvciBsb2cgZm9yIGRldGFpbHMuJyApOwoJCQkJfQoJCQkJJGRlbGV0ZWRfY3Jvbn
NbXSA9ICRjcm9uX2hvb2sgLiAnIC8gJyAuICRjcm9uX2tleTsgLy8gQWRkIGRlbGV0ZWQgY3JvbiB0byBsa
XN0IG9mIGRlbGV0aW9ucyBmb3IgZGlzcGxheS4KCgkJCX0gZWxzZSB7IC8vIENyb24gbm90IGZvdW5kLCBl
cnJvci4KCQkJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ0ludmFsaWQgQ1JPTiBqb2IuIE5vdCBmb3VuZC4
nLCB0cnVlICk7CgkJCX0KCQl9CgoJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggX18oICdEZWxldGVkIHNjaG
VkdWxlZCBDUk9OIGV2ZW50KHMpOicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzxicj4nIC4gaW1wb
G9kZSggJzxicj4nLCAkZGVsZXRlZF9jcm9ucyApICk7CgkJJGNyb24gPSBnZXRfb3B0aW9uKCAnY3Jvbicg
KTsgLy8gUmVzZXQgdG8gbW9zdCB1cCB0byBkYXRlIHN0YXR1cyBmb3IgY3JvbiBsaXN0aW5nIGJlbG93LiB
UYWtlcyBpbnRvIGFjY291bnQgZGVsZXRpb25zLgoJfQp9CgovLyBIYW5kbGUgUlVOTklORyBjcm9uIGpvYn
MgbWFudWFsbHkuCmlmICggISBlbXB0eSggJF9HRVRbJ3J1bl9jcm9uJ10gKSApIHsKCWlmICggZGVmaW5lZ
CggJ1BCX0RFTU9fTU9ERScgKSApIHsKCQlwYl9iYWNrdXBidWRkeTo6YWxlcnQoICdBY2Nlc3MgZGVuaWVk
IGluIGRlbW8gbW9kZS4nLCB0cnVlICk7Cgl9IGVsc2UgewoJCSRjcm9uX3BhcnRzID0gZXhwbG9kZSggJ3w
nLCBwYl9iYWNrdXBidWRkeTo6X0dFVCggJ3J1bl9jcm9uJyApICk7CgkJJHRpbWVzdGFtcCAgPSAkY3Jvbl
9wYXJ0c1swXTsKCQkkY3Jvbl9ob29rICA9ICRjcm9uX3BhcnRzWzFdOwoJCSRjcm9uX2tleSAgID0gJGNyb
25fcGFydHNbMl07CgoJCWlmICggaXNzZXQoICRjcm9uWyAkdGltZXN0YW1wIF1bICRjcm9uX2hvb2sgXVsg
JGNyb25fa2V5IF0gKSApIHsgLy8gUnVuIGNyb24uCgkJCSRjcm9uX2FycmF5ID0gJGNyb25bICR0aW1lc3R
hbXAgXVsgJGNyb25faG9vayBdWyAkY3Jvbl9rZXkgXTsgLy8gR2V0IGNyb24gYXJyYXkgYmFzZWQgb24gcG
Fzc2VkIHZhbHVlcy4KCgkJCWRvX2FjdGlvbl9yZWZfYXJyYXkoICRjcm9uX2hvb2ssICRjcm9uX2FycmF5W
ydhcmdzJ10gKTsgLy8gUnVuIHRoZSBjcm9uIGpvYiEKCgkJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ1Jh
biBDUk9OIGV2ZW50IGAnIC4gJGNyb25faG9vayAuICcgLyAnIC4gJGNyb25fa2V5IC4gJ2AuIEl0cyBzY2h
lZHVsZSB3YXMgbm90IG1vZGlmaWVkLicgKTsKCQl9IGVsc2UgeyAvLyBDcm9uIG5vdCBmb3VuZCwgZXJyb3
IuCgkJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ0ludmFsaWQgQ1JPTiBqb2IuIE5vdCBmb3VuZC4nLCB0c
nVlICk7CgkJfQoJfQp9CgpyZXF1aXJlICdfY3Jvbi5waHAnOwoKLy8gRGlzcGxheSBDUk9OIHRhYmxlLgpw
Yl9iYWNrdXBidWRkeTo6JHVpLT5saXN0X3RhYmxlKAoJJGNyb25zLCAvLyBBcnJheSBvZiBjcm9uIGl0ZW1
zIHNldCBpbiBjb2RlIHNlY3Rpb24gYWJvdmUuCglhcnJheSgKCQknYWN0aW9uJyAgICAgICAgICAgICAgIC
AgID0+IHBiX2JhY2t1cGJ1ZGR5OjpwYWdlX3VybCgpIC4gJyNwYl9iYWNrdXBidWRkeV9nZXR0aW5nX3N0Y
XJ0ZWRfdGFiX3Rvb2xzJywKCQknY29sdW1ucycgICAgICAgICAgICAgICAgID0+IGFycmF5KAoJCQlfXygg
J1NjaGVkdWxlZCBFdmVudHMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCQkJX18oICdOZXh0IFJ1bic
sICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQlfXyggJ1BlcmlvZCcsICdpdC1sMTBuLWJhY2t1cGJ1ZG
R5JyApLAoJCQlfXyggJ0ludGVydmFsJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkJCV9fKCAnQXJnd
W1lbnRzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkJKSwKCQknY3NzJyAgICAgICAgICAgICAgICAg
ICAgID0+ICd3aWR0aDogMTAwJTsnLAoJCSdob3Zlcl9hY3Rpb25zJyAgICAgICAgICAgPT4gYXJyYXkoCgk
JCSdydW5fY3JvbicgPT4gJ1J1biBjcm9uIGpvYiBub3cnLAoJCSksCgkJJ2J1bGtfYWN0aW9ucycgICAgIC
AgICAgICA9PiBhcnJheSggJ2RlbGV0ZV9jcm9uJyA9PiAnRGVsZXRlJyApLAoJCSdob3Zlcl9hY3Rpb25fY
29sdW1uX2tleScgPT4gJzAnLAoJKQopOwo/PgoKPGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBtYXJnaW4t
Ym90dG9tOiAxcHg7Ij4KCTxhIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlYmM2OyAhaW1wb3J0YW5
0OyIgaHJlZj0iPD9waHAgZWNobyBwYl9iYWNrdXBidWRkeTo6cGFnZV91cmwoKTsgPz4mY2xlYXJfY3Jvbj
15ZXMmdGFiPTMiIGNsYXNzPSJidXR0b24gc2Vjb25kYXJ5LWJ1dHRvbiIgb25DbGljaz0iaWYgKCBmYWxzZ
SA9PT0gY29uZmlybSggJzw/cGhwIF9lKCAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsZWFyIGFsbCBj
cm9uIGVudHJpZXM/IFdvcmRQcmVzcyB3aWxsIGF1dG9tYXRpY2FsbHkgcmVnZW5lcmF0ZSBjcm9ucyBidXQ
gc29tZSAzcmQgcGFydHkgcGx1Z2lucyBtYXkgbm90LicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/Pi
cgKSApIHsgcmV0dXJuIGZhbHNlOyB9Ij48P3BocCBfZSggJ0RlbGV0ZSBBbGwgQ3JvbiBFbnRyaWVzJywgJ
2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+PC9hPgo8L2Rpdj4KCjxicj48YnI+PGJyPjxicj4KPD9waHAK
Ci8vIERpc3BsYXkgdGltZSBpbnRlcnZhbHMgdGFibGUuCiRwcmV0dHlfaW50ZXJ2YWxzICAgPSBhcnJheSg
pOwokc2NoZWR1bGVfaW50ZXJ2YWxzID0gd3BfZ2V0X3NjaGVkdWxlcygpOwovLyBOZWVkIHRvIGNyZWF0ZS
BhICJmbGF0IiBhcnJheSB3aGVyZSB0aGUga2V5IGlzIG9zdGVuc2libHkgdGhlIHNjaGVkdWxlIGludGVyd
mFsCi8vIHNvIHdlIGNhbiBzb3J0IG9uIHRoZSBpbnRlcnZhbC4gUHJvYmxlbSBpcyB0aGF0IG11bHRpcGxl
IHNjaGVkdWxlcyBtYXkgaGF2ZSB0aGUKLy8gc2FtZSBpbnRlcnZhbCBhbmQgdGhhdCBvYnZpb3VzbHkgZG9
lc24ndCB3b3JrIGFzIHdlIGNhbm5vdCBoYXZlIGR1cGxpY2F0ZSBrZXlzLgovLyBXZSdsbCBjcmVhdGUgYS
AyLWRpbWVuc2lvbmFsIGFycmF5IHdoaWNoIG1heSBoYXZlIG11bHRpcGxlCi8vIGVudHJpZXMgdW5kZXIgd
GhlIHNhbWUgaW50ZXJ2YWwgYW5kIHRoZW4gd2UnbGwgc29ydCBvbiB0aGUgaW50ZXJ2YWwgYW5kIHRoZW4K
Ly8gZmxhdHRlbiB0aGUgYXJyYXkuIFRoZXJlIGFyZSBvdGhlciBzb2x1dGlvbnMgYnV0IHRoaXMgaXMgZnV
uY3Rpb25hbCBmb3IgdGhlCi8vIGJhc2ljIHJlcXVpcmVtZW50IGhlcmUuCmZvcmVhY2ggKCAkc2NoZWR1bG
VfaW50ZXJ2YWxzIGFzICRpbnRlcnZhbF90YWcgPT4gJHNjaGVkdWxlX2ludGVydmFsICkgewoJJHByZXR0e
V9pbnRlcnZhbHNbICRzY2hlZHVsZV9pbnRlcnZhbFsnaW50ZXJ2YWwnXSBdW10gPSBhcnJheSgKCQkkc2No
ZWR1bGVfaW50ZXJ2YWxbJ2Rpc3BsYXknXSwKCQkkaW50ZXJ2YWxfdGFnLAoJCSRzY2hlZHVsZV9pbnRlcnZ
hbFsnaW50ZXJ2YWwnXSwKCSk7Cn0Ka3NvcnQoICRwcmV0dHlfaW50ZXJ2YWxzICk7CiRwcmV0dHlfaW50ZX
J2YWxzID0gYXJyYXlfcmV2ZXJzZSggJHByZXR0eV9pbnRlcnZhbHMgKTsKCi8vIE5vdyBmbGF0dGVuIHRoZ
SBhcnJheS4KJGRpc3BsYXlfaW50ZXJ2YWxzID0gYXJyYXkoKTsKZm9yZWFjaCAoICRwcmV0dHlfaW50ZXJ2
YWxzIGFzICRpbnRlcnZhbCApIHsKCWlmICggaXNfYXJyYXkoICRpbnRlcnZhbFswXSApICkgewoJCS8vIEF
ycmF5IG9mIGFycmF5cyBvZiBzY2hlZHVsZSBkZXRhaWxzLgoJCWZvcmVhY2ggKCAkaW50ZXJ2YWwgYXMgJG
ludGVydmFsMiApIHsKCQkJJGRpc3BsYXlfaW50ZXJ2YWxzW10gPSAkaW50ZXJ2YWwyOwoJCX0KCX0gZWxzZ
SB7CgkJLy8gSnVzdCBhcnJheSBvZiBzY2hlZHVsZSBkZXRhaWxzLgoJCSRkaXNwbGF5X2ludGVydmFsc1td
ID0gJGludGVydmFsOwoJfQp9CgpwYl9iYWNrdXBidWRkeTo6JHVpLT5saXN0X3RhYmxlKAoJJGRpc3BsYXl
faW50ZXJ2YWxzLCAvLyBBcnJheSBvZiBjcm9uIGl0ZW1zIHNldCBpbiBjb2RlIHNlY3Rpb24gYWJvdmUuCg
lhcnJheSgKCQknY29sdW1ucycgPT4gYXJyYXkoCgkJCV9fKCAnU2NoZWR1bGUgUGVyaW9kcycsICdpdC1sM
TBuLWJhY2t1cGJ1ZGR5JyApLAoJCQlfXyggJ1RhZycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQlf
XyggJ0ludGVydmFsJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICksCgkJKSwKCQknY3NzJyAgICAgPT4gJ3d
pZHRoOiAxMDAlOycsCgkpCik7CmVjaG8gJzxicj48YnI+JzsKCmlmICggZW1wdHkoICRfR0VUWydzaG93X2
Nyb25fYXJyYXknXSApICkgewoJPz4KCTxwPgoJCTxjZW50ZXI+CgkJCTxhIGhyZWY9Ijw/cGhwIGVjaG8gc
GJfYmFja3VwYnVkZHk6OnBhZ2VfdXJsKCk7ID8+JnRhYj0zJnNob3dfY3Jvbl9hcnJheT10cnVlI3BiX2Jh
Y2t1cGJ1ZGR5X2dldHRpbmdfc3RhcnRlZF90YWJfdG9vbHMiIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IG5
vbmU7Ij4KCQkJCTw/cGhwIGVzY19odG1sX2UoICdEaXNwbGF5IENST04gRGVidWdnaW5nIEFycmF5JywgJ2
l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+CgkJCTwvYT4KCQk8L2NlbnRlcj4KCTwvcD4KCTw/cGhwCn0gZ
WxzZSB7CgllY2hvICc8YnI+PHRleHRhcmVhIHJlYWRvbmx5PSJyZWFkb25seSIgc3R5bGU9IndpZHRoOiA3
OTNweDsiIHJvd3M9IjEzIiBjb2xzPSI3NSIgd3J
hcD0ib2ZmIj4nOwoJcHJpbnRfciggJGNyb24gKTsKCWVjaG8gJzwvdGV4dGFyZWE+PGJyPjxicj4nOwp9Cn
Vuc2V0KCAkY3JvbiApOwo/PgoKPGJyPgo8ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+Cgk8Yj5Ob3RlPC9iP
jogRHVlIHRvIHRoZSB3YXkgc2NoZWR1bGVzIGFyZSB0cmlnZ2VyZWQgaW4gV29yZFByZXNzIHlvdXIgc2l0
ZSBtdXN0IGJlIGFjY2Vzc2VkIChmcm9udGVuZCBvciBhZG1pbiBhcmVhKSBmb3Igc2NoZWR1bGVkIGJhY2t
1cHMgdG8gb2NjdXIuCglXb3JkUHJlc3Mgc2NoZWR1bGVkIGV2ZW50cyAoImNyb25zIikgbWF5IGJlIHZpZX
dlZCBvciBydW4gbWFudWFsbHkgaW4gdGhlIHRhYmxlIGFib3ZlPC9hPi4gQSA8YSBocmVmPSJodHRwczovL
3d3dy5nb29nbGUuY29tL3NlYXJjaD9xPWZyZWUrd2Vic2l0ZSt1cHRpbWUmb3E9ZnJlZSt3ZWJzaXRlK3Vw
dGltZSIgdGFyZ2V0PSJfYmxhbmsiPmZyZWUgd2Vic2l0ZSB1cHRpbWU8L2E+IHNlcnZpY2Ugb3IgPGEgaHJ
lZj0iaHR0cHM6Ly9pdGhlbWVzLmNvbS9zeW5jLXByby91cHRpbWUtbW9uaXRvcmluZy8iIHRhcmdldD0iX2
JsYW5rIj5pVGhlbWVzIFN5bmMgUHJvJ3MgVXB0aW1lIE1vbml0b3Jpbmc8L2E+IGNhbiBiZSB1c2VkIHRvI
GF1dG9tYXRpY2FsbHkgYWNjZXNzIHlvdXIgc2l0ZSByZWd1bGFybHkgdG8gaGVscCB0cmlnZ2VyIHNjaGVk
dWxlZCBhY3Rpb25zICgiY3JvbnMiKSBpbiBjYXNlcyBvZiBsb3cgc2l0ZSBhY3Rpdml0eSwgd2l0aCB0aGU
gYWRkZWQgcGVyayBvZiBrZWVwaW5nIHRyYWNrIG9mIHlvdXIgc2l0ZSB1cHRpbWUuCjwvZGl2Pgo=
###PACKDATA,FILE_END,/controllers/pages/server_info/cron.php,importbuddy/controller
s/pages/server_info/cron.php
###PACKDATA,FILE_START,/controllers/pages/server_info/database.php,importbuddy/cont
rollers/pages/server_info/database.php
PD9waHAKLyoqCiAqIERhdGFiYXNlIFRhYiBvZiBTZXJ2ZXIgVG9vbHMgUGFnZQogKgogKiBAcGFja2FnZSB
CYWNrdXBCdWRkeQogKi8KCmlmICggISBpc3NldCggJHBhcmVudF9jbGFzcyApICkgewoJJHBhcmVudF9jbG
FzcyA9ICR0aGlzOwp9CgokcHJvZmlsZV9pZCA9IDA7CmlmICggaXNfbnVtZXJpYyggcGJfYmFja3VwYnVkZ
Hk6Ol9HRVQoICdwcm9maWxlJyApICkgKSB7CgkkcHJvZmlsZV9pZCA9IHBiX2JhY2t1cGJ1ZGR5OjpfR0VU
KCAncHJvZmlsZScgKTsKCWlmICggaXNzZXQoIHBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sncHJvZmlsZXM
nXVsgJHByb2ZpbGVfaWQgXSApICkgewoJCSRwcm9maWxlID0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWy
dwcm9maWxlcyddWyAkcHJvZmlsZV9pZCBdOwoJCXBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1sncHJvZmlsZ
XMnXVsgcGJfYmFja3VwYnVkZHk6Ol9HRVQoICdwcm9maWxlJyApIF0gPSBhcnJheV9tZXJnZSggcGJfYmFj
a3VwYnVkZHk6OnNldHRpbmdzKCAncHJvZmlsZV9kZWZhdWx0cycgKSwgJHByb2ZpbGUgKTsgLy8gU2V0IGR
lZmF1bHRzIGlmIG5vdCBzZXQuCgl9IGVsc2UgewoJCXBiX2JhY2t1cGJ1ZGR5OjphbGVydCggJ0Vycm9yIC
M0NTg0OTQ1ODogSW52YWxpZCBwcm9maWxlIElEIG51bWJlciBgJyAuIGh0bWxlbnRpdGllcyggcGJfYmFja
3VwYnVkZHk6Ol9HRVQoICdwcm9maWxlJyApICkgLiAnYC4gRGlzcGxheWluZyB3aXRoIGRlZmF1bHQgcHJv
ZmlsZS4nLCB0cnVlICk7Cgl9Cn0KCi8vIEdldCBwcm9maWxlIGFycmF5LgokcHJvZmlsZSA9IGFycmF5X21
lcmdlKCBwYl9iYWNrdXBidWRkeTo6c2V0dGluZ3MoICdwcm9maWxlX2RlZmF1bHRzJyApLCBwYl9iYWNrdX
BidWRkeTo6JG9wdGlvbnNbJ3Byb2ZpbGVzJ11bICRwcm9maWxlX2lkIF0gKTsKZm9yZWFjaCAoICRwcm9ma
WxlIGFzICRwcm9maWxlX2l0ZW1fbmFtZSA9PiAmJHByb2ZpbGVfaXRlbSApIHsgLy8gcmVwbGFjZSBub24t
b3ZlcnJpZGRlbiBkZWZhdWx0cyB3aXRoIGFjdHVhbCBkZWZhdWx0IHZhbHVlLgoJaWYgKCAnLTEnID09ICR
wcm9maWxlX2l0ZW0gKSB7IC8vIFNldCB0byB1c2UgZGVmYXVsdCBzbyBnbyBncmFiIGRlZmF1bHQuCgkJaW
YgKCBpc3NldCggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydwcm9maWxlcyddWzBdWyAkcHJvZmlsZV9pd
GVtX25hbWUgXSApICkgewoJCQkkcHJvZmlsZV9pdGVtID0gcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydw
cm9maWxlcyddWzBdWyAkcHJvZmlsZV9pdGVtX25hbWUgXTsgLy8gR3JhYiB2YWx1ZSBmcm9tIGRlZmF1bHR
zIHByb2ZpbGUgYW5kIHJlcGxhY2Ugd2l0aCBpdC4KCQl9Cgl9Cn0KPz4KPGRpdiBzdHlsZT0ibWFyZ2luLW
JvdHRvbTogNHB4OyI+PD9waHAgZXNjX2h0bWxfZSggJ0JhY2t1cCBwcm9maWxlIGZvciBjYWxjdWxhdGluZ
yBleGNsdXNpb25zJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+OgoJPHNlbGVjdCBpZD0icGJfYmFj
a3VwYnVkZHlfZGF0YWJhc2Vwcm9maWxlIiBvbkNoYW5nZT0id2luZG93LmxvY2F0aW9uLmhyZWYgPSAnPD9
waHAgZWNobyBwYl9iYWNrdXBidWRkeTo6cGFnZV91cmwoKTsgPz4mdGFiPTEmcHJvZmlsZT0nICsgalF1ZX
J5KHRoaXMpLnZhbCgpOyI+Cgk8P3BocCBmb3JlYWNoICggcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydwc
m9maWxlcyddIGFzICR0aGlzX3Byb2ZpbGVfaWQgPT4gJHRoaXNfcHJvZmlsZSApIHsgPz4KCQk8b3B0aW9u
IHZhbHVlPSI8P3BocCBlY2hvIGVzY19hdHRyKCAkdGhpc19wcm9maWxlX2lkICk7ID8+IgoJCQk8P3BocAo
JCQlpZiAoICRwcm9maWxlX2lkID09ICR0aGlzX3Byb2ZpbGVfaWQgKSB7CgkJCQllY2hvICdzZWxlY3RlZC
c7CgkJCX0KCQkJPz4KCQk+PD9waHAgZWNobyBlc2NfaHRtbCggJHRoaXNfcHJvZmlsZVsndGl0bGUnXSApO
yA/PiAoPD9waHAgZWNobyBlc2NfaHRtbCggJHRoaXNfcHJvZmlsZVsndHlwZSddICk7ID8+KTwvYT4KCTw/
cGhwIH0gPz4KCTwvc2VsZWN0Pgo8L2Rpdj4KCjx0YWJsZSBjbGFzcz0id2lkZWZhdCBzdHJpcGVkIj4KCTx
0aGVhZD4KCQk8dHIgY2xhc3M9InRoZWFkIj4KCQkJCTx0aD48P3BocCBlc2NfaHRtbF9lKCAnRGF0YWJhc2
UgVGFibGUnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L3RoPgoJCQkJPHRoPjw/cGhwIGVzY19od
G1sX2UoICdTdGF0dXMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L3RoPgoJCQkJPHRoPjw/cGhw
IGVzY19odG1sX2UoICdTZXR0aW5ncycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvdGg+CgkJCQk
8dGg+PD9waHAgZXNjX2h0bWxfZSggJ1VwZGF0ZWQgLyBDaGVja2VkJywgJ2l0LWwxMG4tYmFja3VwYnVkZH
knICk7ID8+PC90aD4KCQkJCTx0aD48P3BocCBlc2NfaHRtbF9lKCAnUm93cycsICdpdC1sMTBuLWJhY2t1c
GJ1ZGR5JyApOyA/PjwvdGg+CgkJCQk8dGg+PD9waHAgZXNjX2h0bWxfZSggJ1NpemUnLCAnaXQtbDEwbi1i
YWNrdXBidWRkeScgKTsgPz48L3RoPgoJCQkJPHRoPjw/cGhwIGVzY19odG1sX2UoICdFeGNsdWRlZCBTaXp
lJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+PC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Zm9vdD
4KCQk8dHIgY2xhc3M9InRoZWFkIj4KCQkJPHRoPjw/cGhwIGVzY19odG1sX2UoICdEYXRhYmFzZSBUYWJsZ
ScsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvdGg+CgkJCTx0aD48P3BocCBlc2NfaHRtbF9lKCAn
U3RhdHVzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+PC90aD4KCQkJPHRoPjw/cGhwIGVzY19odG1
sX2UoICdTZXR0aW5ncycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvdGg+CgkJCTx0aD48P3BocC
Blc2NfaHRtbF9lKCAnVXBkYXRlZCAvIENoZWNrZWQnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L
3RoPgoJCQk8dGg+PD9waHAgZXNjX2h0bWxfZSggJ1Jvd3MnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsg
Pz48L3RoPgoJCQk8dGg+PD9waHAgZXNjX2h0bWxfZSggJ1NpemUnLCAnaXQtbDEwbi1iYWNrdXBidWRkeSc
gKTsgPz48L3RoPgoJCQk8dGg+PD9waHAgZXNjX2h0bWxfZSggJ0V4Y2x1ZGVkIFNpemUnLCAnaXQtbDEwbi
1iYWNrdXBidWRkeScgKTsgPz48L3RoPgoJCTwvdHI+Cgk8L3Rmb290PgoJPHRib2R5PgoJCTw/cGhwCgkJZ
2xvYmFsICR3cGRiOwoJCSRwcmVmaXggICAgICAgID0gJHdwZGItPnByZWZpeDsKCQkkcHJlZml4X2xlbmd0
aCA9IHN0cmxlbiggJHdwZGItPnByZWZpeCApOwoKCQkkYWRkaXRpb25hbF9pbmNsdWRlcyA9IGJhY2t1cGJ
1ZGR5X2NvcmU6OmdldF9teXNxbGR1bXBfYWRkaXRpb25hbCggJ2luY2x1ZGVzJywgJHByb2ZpbGUgKTsKCQ
kkYWRkaXRpb25hbF9leGNsdWRlcyA9IGJhY2t1cGJ1ZGR5X2NvcmU6OmdldF9teXNxbGR1bXBfYWRkaXRpb
25hbCggJ2V4Y2x1ZGVzJywgJHByb2ZpbGUgKTsKCgkJJHRvdGFsX3NpemUgICAgICAgICAgICAgICAgID0g
MDsKCQkkdG90YWxfc2l6ZV93aXRoX2V4Y2x1c2lvbnMgPSAwOwoJCSR0b3RhbF9yb3dzICAgICAgICAgICA
gICAgICA9IDA7CgkJJHJvd3MgICAgICAgICAgICAgICAgICAgICAgID0gJHdwZGItPmdldF9yZXN1bHRzKC
AnU0hPVyBUQUJMRSBTVEFUVVMnLCBBUlJBWV9BICk7CgkJZm9yZWFjaCAoICRyb3dzIGFzICRyb3cgKSB7C
gkJCSRleGNsdWRlZCA9IHRydWU7IC8vIERlZmF1bHQuCgoJCQkvLyBUQUJMRSBTVEFUVVMuCgkJCSRyb3dz
YiA9ICR3cGRiLT5nZXRfcmVzdWx0cyggIkNIRUNLIFRBQkxFIGB7JHJvd1snTmFtZSddfWAiLCBBUlJBWV9
BICk7CgkJCWZvcmVhY2ggKCAkcm93c2IgYXMgJHJvd2IgKSB7CgkJCQlpZiAoICdzdGF0dXMnID09ICRyb3
diWydNc2dfdHlwZSddICkgewoJCQkJCSRzdGF0dXMgPSAkcm93YlsnTXNnX3RleHQnXTsKCQkJCX0KCQkJf
QoJCQl1bnNldCggJHJvd3NiICk7CgoJCQkvLyBGaXggdXAgcm93IGNvdW50IGFuZCBhdmVyYWdlIHJvdyBs
ZW5ndGggZm9yIElubm9EQiBlbmdpbmUgd2hpY2ggcmV0dXJucyBpbmFjY3VyYXRlCgkJCS8vIChhbmQgY2h
hbmdpbmcpIHZhbHVlcyBmb3IgdGhlc2UuCgkJCWlmICggJ0lubm9EQicgPT09ICRyb3dbJ0VuZ2luZSddIC
kgewoJCQkJJGNvdW50ID0gJHdwZGItPmdldF92YXIoICJTRUxFQ1QgQ09VTlQoMSkgRlJPTSBgeyRyb3dbJ
05hbWUnXX1gIiApOwoJCQkJaWYgKCBmYWxzZSAhPT0gJGNvdW50ICkgewoJCQkJCSRyb3dbJ1Jvd3MnXSA9
ICRjb3VudDsKCQkJCQlpZiAoIDAgPCAkcm93WydSb3dzJ10gKSB7CgkJCQkJCSRyb3dbJ0F2Z19yb3dfbGV
uZ3RoJ10gPSAoICRyb3dbJ0RhdGFfbGVuZ3RoJ10gLyAkcm93WydSb3dzJ10gKTsKCQkJCQl9CgkJCQl9Cg
kJCX0KCgkJCS8vIFRBQkxFIFNJWkUuCgkJCSRzaXplICAgICAgICA9ICggJHJvd1snRGF0YV9sZW5ndGgnX
SArICRyb3dbJ0luZGV4X2xlbmd0aCddICk7CgkJCSR0b3RhbF9zaXplICs9ICRzaXplOwoKCQkJLy8gSEFO
RExFIEVYQ0xVU0lPTlMuCgkJCWlmICggMCA9PSAkcHJvZmlsZVsnYmFja3VwX25vbndwX3RhYmxlcyddICk
geyAvLyBPbmx5IG1hdGNoaW5nIHByZWZpeC4KCQkJCWlmICggc3Vic3RyKCAkcm93WydOYW1lJ10sIDAsIC
RwcmVmaXhfbGVuZ3RoICkgPT0gJHByZWZpeCB8fCBpbl9hcnJheSggJHJvd1snTmFtZSddLCAkYWRkaXRpb
25hbF9pbmNsdWRlcyApICkgewoJCQkJCWlmICggISBpbl9hcnJheSggJHJvd1snTmFtZSddLCAkYWRkaXRp
b25hbF9leGNsdWRlcyApICkgewoJCQkJCQkkdG90YWxfc2l6ZV93aXRoX2V4Y2x1c2lvbnMgKz0gJHNpemU
7CgkJCQkJCSRleGNsdWRlZCAgICAgICAgICAgICAgICAgICAgPSBmYWxzZTsKCQkJCQl9CgkJCQl9CgkJCX
0gZWxzZSB7IC8vIEFsbCB0YWJsZXMuCgkJCQlpZiAoICEgaW5fYXJyYXkoICRyb3dbJ05hbWUnXSwgJGFkZ
Gl0aW9uYWxfZXhjbHVkZXMgKSApIHsKCQkJCQkkdG90YWxfc2l6ZV93aXRoX2V4Y2x1c2lvbnMgKz0gJHNp
emU7CgkJCQkJJGV4Y2x1ZGVkICAgICAgICAgICAgICAgICAgICA9IGZhbHNlOwoJCQkJfQoJCQl9CgkJCS8
vIE9VVFBVVCBUQUJMRSBST1cuCgkJCWVjaG8gJzx0ciBjbGFzcz0iZW50cnktcm93Iic7CgkJCWlmICggdH
J1ZSA9PT0gJGV4Y2x1ZGVkICkgewoJCQkJZWNobyAnIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmNjOWM5OyInO
woJCQl9CgkJCWVjaG8gJz4nOwoJCQk/PgoJCQkJPHRkPjw/cGhwIGVjaG8gZXNjX2h0bWwoICRyb3dbJ05h
bWUnXSApOyA/PgoJCQkJCTxkaXYgY2xhc3M9InJvdy1hY3Rpb25zIj4KCQkJCQkJPGEgaHJlZj0iPD9waHA
gZWNobyBwYl9iYWNrdXBidWRkeTo6YWpheF91cmwoICdkYl9jaGVjaycgKTsgPz4mdGFibGU9PD9waHAgZW
NobyBlc2NfYXR0ciggYmFzZTY0X2VuY29kZSggJHJvd1snTmFtZSddICkgKTsgPz4mIzAzODtUQl9pZnJhb
WU9MSYjMDM4O3dpZHRoPTY0MCYjMDM4O2hlaWdodD02MDAiIGNsYXNzPSJ0aGlja2JveCIgdGl0bGU9IkNo
ZWNrIGRhdGFiYXNlIHRhYmxlIGZvciBhbnkgZXJyb3JzIG9yIGNvcnJ1cHRpb24uIj5DaGVjazwvYT4KCQk
JCQkJfAoJCQkJCQk8YSBocmVmPSI8P3BocCBlY2hvIHBiX2JhY2t1cGJ1ZGR5OjphamF4X3VybCggJ2RiX3
JlcGFpcicgKTsgPz4mdGFibGU9PD9waHAgZWNobyBlc2NfYXR0ciggYmFzZTY0X2VuY29kZSggJHJvd1snT
mFtZSddICkgKTsgPz4mIzAzODtUQl9pZnJhbWU9MSYjMDM4O3dpZHRoPTY0MCYjMDM4O2hlaWdodD02MDAi
IGNsYXNzPSJ0aGlja2JveCIgdGl0bGU9IlJlcGFpciB0YWJsZSB0aGF0IGhhcyBiZWVuIGNvcnJ1cHRlZC4
gT25seSBuZWVkZWQgaWYgdGhlIHN0YXR1cyBvciBjaGVjayByZXNwb25zZSBpbmRpY2F0ZWQgZGFtYWdlLi
I+UmVwYWlyPC9hPgoJCQkJCTwvZGl2PgoJCQkJPC90ZD4KCQkJCTx0ZD48P3BocCBlY2hvIGVzY19odG1sK
CAkc3RhdHVzICk7ID8+PC90ZD4KCQkJCTx0ZD48P3BocCBlc2NfaHRtbF9lKCAnRW5naW5lJywgJ2l0LWwx
MG4tYmFja3VwYnVkZHknICk7ID8+OiA8P3BocCBlY2hvIGVzY19odG1sKCAkcm93WydFbmdpbmUnXSApOyA
/Pjxicj48P3BocCBlc2NfaHRtbF9lKCAnQ29sbGF0aW9uJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID
8+OiA8P3BocCBlY2hvIGVzY19odG1sKCAkcm93WydDb2xsYXRpb24nXSApOyA/PjwvdGQ+CgkJCQk8dGQ+P
D9waHAgZXNjX2h0bWxfZSggJ1VwZGF0ZWQnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz46CgkJCQkJ
PD9waHAKCQkJCQlpZiAoIGVtcHR5KCAkcm93WydVcGRhdGVfdGltZSddICkgKSB7CgkJCQkJCWVzY19odG1
sX2UoICdVbmF2YWlsYWJsZScsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOwoJCQkJCX0gZWxzZSB7CgkJCQ
kJCWVjaG8gZXNjX2h0bWwoICRyb3dbJ1VwZGF0ZV90aW1lJ10gKTsKCQkJCQl9CgkJCQkJZWNobyAnPGJyP
icgLiBlc2NfaHRtbF9fKCAnQ2hlY2tlZCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzogJzsKCQkJ
CQlpZiAoIGVtcHR5KCAkcm93WydDaGVja190aW1lJ10gKSApIHsKCQkJCQkJZXNjX2h0bWxfZSggJ1VuYXZ
haWxhYmxlJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7CgkJCQkJfSBlbHNlIHsKCQkJCQkJZWNobyBlc2
NfaHRtbCggJHJvd1snQ2hlY2tfdGltZSddICk7CgkJCQkJfQoJCQkJCT8+CgkJCQk8L3RkPgoJCQkJPHRkP
jw/cGhwIGVjaG8gZXNjX2h0bWwoICRyb3dbJ1Jvd3MnXSApOyA/PjwvdGQ+CgkJCQk8dGQ+PD9waHAgZWNo
byBlc2NfaHRtbCggcGJfYmFja3VwYnVkZHk6OiRmb3JtYXQtPmZpbGVfc2l6ZSggJHNpemUgKSApOyA/Pjw
vdGQ+CgkJCQk8P3BocCBpZiAoIHRydWUgPT09ICRleGNsdWRlZCApIHsgPz4KCQkJCQk8dGQ+PHNwYW4gY2
xhc3M9InBiX2xhYmVsIHBiX2xhYmVsLWltcG9ydGFudCI+PD9waHAgZXNjX2h0bWxfZSggJ0V4Y2x1ZGVkJ
ywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+PC9zcGFuPjwvdGQ+CgkJCQk8P3BocCB9IGVsc2UgeyA/
PgoJCQkJCTx0ZD48P3BocCBlY2hvIGVzY19odG1sKCBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+ZmlsZV9
zaXplKCAkc2l6ZSApICk7ID8+PC90ZD4KCQkJCTw/cGhwIH0gPz4KCQkJCTw/cGhwICR0b3RhbF9yb3dzIC
s9ICRyb3dbJ1Jvd3MnXTsgPz4KCQkJPC90cj4KCQk8P3BocCB9ID8+CgkJPHRyIGNsYXNzPSJlbnRyeS1yb
3cgYWx0ZXJuYXRlIj4KCQkJPHRkPiZuYnNwOzwvdGQ+CgkJCTx0ZD4mbmJzcDs8L3RkPgoJCQk8dGQ+Jm5i
c3A7PC90ZD4KCQkJPHRkPjxzdHJvbmc+PD9waHAgZXNjX2h0bWxfZSggJ1RPVEFMUycsICdpdC1sMTBuLWJ
hY2t1cGJ1ZGR5JyApOyA/Pjo8L3N0cm9uZz48L3RkPgoJCQk8dGQ+PHN0cm9uZz48P3BocCBlY2hvIGVzY1
9odG1sKCAkdG90YWxfcm93cyApOyA/Pjwvc3Ryb25nPjwvdGQ+CgkJCTx0ZD48c3Ryb25nPjw/cGhwIGVja
G8gZXNjX2h0bWwoIHBiX2JhY2t1cGJ1ZGR5OjokZm9ybWF0LT5maWxlX3NpemUoICR0b3RhbF9zaXplICkg
KTsgPz48L3N0cm9uZz48L3RkPgoJCQk8dGQ+PHN
0cm9uZz48P3BocCBlY2hvIGVzY19odG1sKCBwYl9iYWNrdXBidWRkeTo6JGZvcm1hdC0+ZmlsZV9zaXplKC
AkdG90YWxfc2l6ZV93aXRoX2V4Y2x1c2lvbnMgKSApOyA/Pjwvc3Ryb25nPjwvdGQ+CgkJPC90cj4KCQk8P
3BocAoJCXBiX2JhY2t1cGJ1ZGR5Ojokb3B0aW9uc1snc3RhdHMnXVsnZGJfc2l6ZSddICAgICAgICAgID0g
JHRvdGFsX3NpemU7CgkJcGJfYmFja3VwYnVkZHk6OiRvcHRpb25zWydzdGF0cyddWydkYl9zaXplX2V4Y2x
1ZGVkJ10gPSAkdG90YWxfc2l6ZV93aXRoX2V4Y2x1c2lvbnM7CgkJcGJfYmFja3VwYnVkZHk6OiRvcHRpb2
5zWydzdGF0cyddWydkYl9zaXplX3VwZGF0ZWQnXSAgPSB0aW1lKCk7CgkJcGJfYmFja3VwYnVkZHk6OnNhd
mUoKTsKCgkJdW5zZXQoICR0b3RhbF9zaXplICk7CgkJdW5zZXQoICR0b3RhbF9yb3dzICk7CgkJdW5zZXQo
ICRyb3dzICk7CgkJPz4KCTwvdGJvZHk+CjwvdGFibGU+Cjxicj4K
###PACKDATA,FILE_END,/controllers/pages/server_info/database.php,importbuddy/contro
llers/pages/server_info/database.php
###PACKDATA,FILE_START,/controllers/pages/server_info/index.php,importbuddy/control
lers/pages/server_info/index.php
PD9waHAKLyoqCiAqIFNpbGVuY2UgaXMgZ29sZGVuLgogKgogKiBAcGFja2FnZSBCYWNrdXBCdWRkeQogKi8
K
###PACKDATA,FILE_END,/controllers/pages/server_info/index.php,importbuddy/controlle
rs/pages/server_info/index.php
###PACKDATA,FILE_START,/controllers/pages/server_info/permissions.php,importbuddy/c
ontrollers/pages/server_info/permissions.php
PD9waHAKLyoqCiAqIFBlcm1pc3Npb25zIFNlcnZlciBJbmZvCiAqCiAqIEBwYWNrYWdlIEJhY2t1cEJ1ZGR
5CiAqLwoKZWNobyAnPGJyPic7CgokdGVzdHMgPSBhcnJheSgpOwoKJHVwbG9hZHNfZGlycyA9IHdwX3VwbG
9hZF9kaXIoKTsKJGRpcmVjdG9yaWVzICA9IGFycmF5KAoJQUJTUEFUSCAuICcnLAoJQUJTUEFUSCAuICd3c
C1pbmNsdWRlcy8nLAoJQUJTUEFUSCAuICd3cC1hZG1pbi8nLAoJV1BfQ09OVEVOVF9ESVIgLiAnL3RoZW1l
cy8nLAoJV1BfUExVR0lOX0RJUiAuICcvJywKCVdQX0NPTlRFTlRfRElSIC4gJy8nLAoJcnRyaW0oICR1cGx
vYWRzX2RpcnNbJ2Jhc2VkaXInXSwgJ1xcLycgKSAuICcvJywKCUFCU1BBVEggLiAnd3AtaW5jbHVkZXMvJy
wKCWJhY2t1cGJ1ZGR5X2NvcmU6OmdldEJhY2t1cERpcmVjdG9yeSgpLAoJYmFja3VwYnVkZHlfY29yZTo6Z
2V0TG9nRGlyZWN0b3J5KCksCik7CmlmICggQGZpbGVfZXhpc3RzKCBiYWNrdXBidWRkeV9jb3JlOjpnZXRU
ZW1wRGlyZWN0b3J5KCkgKSApIHsgLy8gVGhpcyBkaXIgaXMgdXN1YWxseSB0cmFuc2llbnQgc28gbWF5IG5
vdCBleGlzdC4KCSRkaXJlY3Rvcmllc1tdID0gYmFja3VwYnVkZHlfY29yZTo6Z2V0VGVtcERpcmVjdG9yeS
gpOwp9Cgpmb3JlYWNoICggJGRpcmVjdG9yaWVzIGFzICRkaXJlY3RvcnkgKSB7CgoJJG1vZGVfb2N0YWxfZ
m91ciA9ICc8aT4nIC4gX18oICdVbmtub3duJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnPC9pPic7
Cgkkb3duZXIgICAgICAgICAgID0gJzxpPicgLiBfXyggJ1Vua25vd24nLCAnaXQtbDEwbi1iYWNrdXBidWR
keScgKSAuICc8L2k+JzsKCglpZiAoICEgZmlsZV9leGlzdHMoICRkaXJlY3RvcnkgKSApIHsKCQkkbW9kZV
9vY3RhbF9mb3VyID0gJ0RpcmVjdG9yeSBkb2VzXCd0IGV4aXN0JzsKCQkkb3duZXIgICAgICAgICAgID0gJ
24vYSc7Cgl9Cgkkc3RhdHMgPSBwbHVnaW5idWRkeV9zdGF0OjpzdGF0KCAkZGlyZWN0b3J5ICk7CglpZiAo
IGZhbHNlICE9PSAkc3RhdHMgKSB7CgkJJG1vZGVfb2N0YWxfZm91ciA9ICRzdGF0c1snbW9kZV9vY3RhbF9
mb3VyJ107CgkJJG93bmVyICAgICAgICAgICA9ICRzdGF0c1sndWlkJ10gLiAnOicgLiAkc3RhdHNbJ2dpZC
ddOwoJfQoJJHRoaXNfdGVzdCA9IGFycmF5KAoJCSd0aXRsZScgICAgICA9PiAnLycgLiBzdHJfcmVwbGFjZ
SggQUJTUEFUSCwgJycsICRkaXJlY3RvcnkgKSwKCQknc3VnZ2VzdGlvbicgPT4gJzw9IDc1NScsCgkJJ3Zh
bHVlJyAgICAgID0+ICRtb2RlX29jdGFsX2ZvdXIsCgkJJ293bmVyJyAgICAgID0+ICRvd25lciwKCSk7Cgl
pZiAoIGZhbHNlID09PSAkc3RhdHMgfHwgJG1vZGVfb2N0YWxfZm91ciA+IDc1NSApIHsKCQkkdGhpc190ZX
N0WydzdGF0dXMnXSA9IF9fKCAnV0FSTklORycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOwoJfSBlbHNlI
HsKCQkkdGhpc190ZXN0WydzdGF0dXMnXSA9IF9fKCAnT0snLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsK
CX0KCWFycmF5X3B1c2goICR0ZXN0cywgJHRoaXNfdGVzdCApOwoKfSAvLyBlbmQgZm9yZWFjaC4KCj8+Cgo
8dGFibGUgY2xhc3M9IndpZGVmYXQiPgoJPHRoZWFkPgoJCTx0ciBjbGFzcz0idGhlYWQiPgoJCQk8dGg+PD
9waHAgZXNjX2h0bWxfZSggJ1JlbGF0aXZlIFBhdGgnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L
3RoPgoJCQk8dGg+PD9waHAgZXNjX2h0bWxfZSggJ1N1Z2dlc3Rpb24nLCAnaXQtbDEwbi1iYWNrdXBidWRk
eScgKTsgPz48L3RoPgoJCQk8dGg+PD9waHAgZXNjX2h0bWxfZSggJ1ZhbHVlJywgJ2l0LWwxMG4tYmFja3V
wYnVkZHknICk7ID8+PC90aD4KCQkJPHRoPjw/cGhwIGVzY19odG1sX2UoICdPd25lciAoVUlEOkdJRCknLC
AnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L3RoPgoJCQk8dGggc3R5bGU9IndpZHRoOiA2MHB4OyI+P
D9waHAgZXNjX2h0bWxfZSggJ1N0YXR1cycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvdGg+CgkJ
PC90cj4KCTwvdGhlYWQ+Cgk8dGZvb3Q+CgkJPHRyIGNsYXNzPSJ0aGVhZCI+CgkJCTx0aD48P3BocCBlc2N
faHRtbF9lKCAnUmVsYXRpdmUgUGF0aCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvdGg+CgkJCT
x0aD48P3BocCBlc2NfaHRtbF9lKCAnU3VnZ2VzdGlvbicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/P
jwvdGg+CgkJCTx0aD48P3BocCBlc2NfaHRtbF9lKCAnVmFsdWUnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScg
KTsgPz48L3RoPgoJCQk8dGg+PD9waHAgZXNjX2h0bWxfZSggJ093bmVyIChVSUQ6R0lEKScsICdpdC1sMTB
uLWJhY2t1cGJ1ZGR5JyApOyA/PjwvdGg+CgkJCTx0aCBzdHlsZT0id2lkdGg6IDYwcHg7Ij48P3BocCBlc2
NfaHRtbF9lKCAnU3RhdHVzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+PC90aD4KCQk8L3RyPgoJP
C90Zm9vdD4KCTx0Ym9keT4KCQk8P3BocCBmb3JlYWNoICggJHRlc3RzIGFzICR0aGlzX3Rlc3QgKSB7ID8+
CgkJCTx0ciBjbGFzcz0iZW50cnktcm93IGFsdGVybmF0ZSI+CgkJCQk8dGQ+PD9waHAgZWNobyBlc2NfaHR
tbCggJHRoaXNfdGVzdFsndGl0bGUnXSApOyA/PjwvdGQ+CgkJCQk8dGQ+PD9waHAgZWNobyBlc2NfaHRtbC
ggJHRoaXNfdGVzdFsnc3VnZ2VzdGlvbiddICk7ID8+PC90ZD4KCQkJCTx0ZD48P3BocCBlY2hvIGVzY19od
G1sKCAkdGhpc190ZXN0Wyd2YWx1ZSddICk7ID8+PC90ZD4KCQkJCTx0ZD48P3BocCBlY2hvIGVzY19odG1s
KCAkdGhpc190ZXN0Wydvd25lciddICk7ID8+PC90ZD4KCQkJCTx0ZD4KCQkJCQk8P3BocCBpZiAoICdPSyc
gPT0gJHRoaXNfdGVzdFsnc3RhdHVzJ10gKSB7ID8+CgkJCQkJCTxzcGFuIGNsYXNzPSJwYl9sYWJlbCBwYl
9sYWJlbC1zdWNjZXNzIj48P3BocCBlc2NfaHRtbF9lKCAnUGFzcycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5J
yApOyA/Pjwvc3Bhbj4KCQkJCQk8P3BocCB9IGVsc2VpZiAoICdGQUlMJyA9PSAkdGhpc190ZXN0WydzdGF0
dXMnXSApIHsgPz4KCQkJCQkJPHNwYW4gY2xhc3M9InBiX2xhYmVsIHBiX2xhYmVsLWltcG9ydGFudCI+PD9
waHAgZXNjX2h0bWxfZSggJ0ZhaWwnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L3NwYW4+CgkJCQ
kJPD9waHAgfSBlbHNlaWYgKCAnV0FSTklORycgPT0gJHRoaXNfdGVzdFsnc3RhdHVzJ10gKSB7ID8+CgkJC
QkJCTxzcGFuIGNsYXNzPSJwYl9sYWJlbCBwYl9sYWJlbC13YXJuaW5nIj48P3BocCBlc2NfaHRtbF9lKCAn
V2FybmluZycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/Pjwvc3Bhbj4KCQkJCQk8P3BocCB9IGVsc2U
geyA/PgoJCQkJCQl1bmtub3duCgkJCQkJPD9waHAgfSA/PgoJCQkJPC90ZD4KCQkJPC90cj4KCQk8P3BocC
B9ID8+Cgk8L3Rib2R5Pgo8L3RhYmxlPgoKPGJyPjxicj4K
###PACKDATA,FILE_END,/controllers/pages/server_info/permissions.php,importbuddy/con
trollers/pages/server_info/permissions.php
###PACKDATA,FILE_START,/controllers/pages/server_info/remote_sends.php,importbuddy/
controllers/pages/server_info/remote_sends.php
PD9waHAKLyoqCiAqIFJlbW90ZSBTZW5kcyBTZXJ2ZXIgSW5mbyBQYWdlCiAqCiAqIEBwYWNrYWdlIEJhY2t
1cEJ1ZGR5CiAqLwoKPz4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJalF1ZXJ5KGZ1bmN0aW
9uKCkgewoJCWpRdWVyeSggJy5wYl9iYWNrdXBidWRkeV9yZW1vdGVzZW5kX2Fib3J0JyApLm9uKCAnY2xpY
2snLCBmdW5jdGlvbigpewoJCQlqUXVlcnkuYWpheCh7CgkJCQl0eXBlOiAnUE9TVCcsCgkJCQl1cmw6IGpR
dWVyeSh0aGlzKS5hdHRyKCAnaHJlZicgKSwKCQkJCXN1Y2Nlc3M6IGZ1bmN0aW9uKGRhdGEpewoJCQkJCWR
hdGEgPSBqUXVlcnkudHJpbSggZGF0YSApOwoJCQkJCWlmICggJzEnID09IGRhdGEgKSB7CgkJCQkJCWFsZX
J0KCAnUmVtb3RlIHRyYW5zZmVyIGFib3J0ZWQuIFRoaXMgbWF5IHRha2UgYSBtb21lbnQgdG8gdGFrZSBlZ
mZlY3QuJyApOwoJCQkJCX0gZWxzZSB7CgkJCQkJCWFsZXJ0KCAnRXJyb3IgIzg1NDQ4OTQ5LiBVbmV4cGVj
dGVkIHNlcnZlciByZXNwb25zZS4gRGV0YWlsczogYCcgKyBkYXRhICsgJ2AuJyApOwoJCQkJCX0KCQkJCX0
KCQkJfSk7CgkJCXJldHVybiBmYWxzZTsKCQl9KTsKCX0pOwo8L3NjcmlwdD4KPD9waHAKCnJlcXVpcmVfb2
5jZSBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3BhdGgoKSAuICcvY2xhc3Nlcy9ob3VzZWtlZXBpbmcucGhwJ
zsKYmFja3VwYnVkZHlfaG91c2VrZWVwaW5nOjp0cmltX3JlbW90ZV9zZW5kX3N0YXRzKCk7CgpyZXF1aXJl
ICdfcmVtb3RlX3NlbmRzLnBocCc7IC8vIFNldHMgJHNlbmRzLgoKaWYgKCBjb3VudCggJHNlbmRzICkgPT0
9IDAgKSB7CgllY2hvICc8YnI+PHNwYW4gY2xhc3M9ImRlc2NyaXB0aW9uIj4nIC4gZXNjX2h0bWxfXyggJ1
RoZXJlIGhhdmUgYmVlbiBubyByZWNlbnQgZmlsZSB0cmFuc2ZlcnMuJywgJ2l0LWwxMG4tYmFja3VwYnVkZ
HknICkgLiAnPC9zcGFuPjxicj4nOwp9IGVsc2UgewoJJHNlbmRzID0gYXJyYXlfc2xpY2UoICRzZW5kcywg
MCwgYmFja3VwYnVkZHlfY29uc3RhbnRzOjpSRUNFTlRfU0VORFNfTUFYX0xJU1RJTkdfQ09VTlQgKTsgLy8
gT25seSBkaXNwbGF5IG1vc3QgcmVjZW50IFggc2VuZHMgdG8ga2VlcCBwYWdlIGZyb20gYmVpbmcgYm9nZ2
VkIGRvd24uCglwYl9iYWNrdXBidWRkeTo6JHVpLT5saXN0X3RhYmxlKAoJCSRzZW5kcywKCQlhcnJheSgKC
QkJJ2FjdGlvbicgID0+IHBiX2JhY2t1cGJ1ZGR5OjpwYWdlX3VybCgpLAoJCQknY29sdW1ucycgPT4gYXJy
YXkoCgkJCQlfXyggJ1NlbnQgRmlsZScsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQkJX18oICdEZXN
0aW5hdGlvbicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQkJX18oICdUcmlnZ2VyJywgJ2l0LWwxMG
4tYmFja3VwYnVkZHknICksCgkJCQlfXyggJ1RyYW5zZmVyIEluZm9ybWF0aW9uJywgJ2l0LWwxMG4tYmFja
3VwYnVkZHknICkgLiAnIDxpbWcgc3JjPSInIC4gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKSAuICcv
aW1hZ2VzL3NvcnRfZG93bi5wbmciIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjogMHB4OyIgdGl0bGU9IlNvcnR
lZCBtb3N0IHJlY2VudCBzdGFydGVkIGZpcnN0Ij4nLAoJCQkJX18oICdTdGF0dXMnLCAnaXQtbDEwbi1iYW
NrdXBidWRkeScgKSAuICcgPHNwYW4gY2xhc3M9ImRlc2NyaXB0aW9uIj4oaG92ZXIgZm9yIG9wdGlvbnMpP
C9zcGFuPicsCgkJCSksCgkJCSdjc3MnICAgICA9PiAnd2lkdGg6IDEwMCU7JywKCQkpCgkpOwoJZWNobyAn
PGRpdiBjbGFzcz0iYWxpZ25yaWdodCBhY3Rpb25zIj4nOwoJcGJfYmFja3VwYnVkZHk6OiR1aS0+bm90ZSg
gJ0hvdmVyIG92ZXIgaXRlbXMgYWJvdmUgZm9yIGFkZGl0aW9uYWwgb3B0aW9ucy4nICk7CgllY2hvICc8L2
Rpdj4nOwp9CgplY2hvICc8YnI+JzsK
###PACKDATA,FILE_END,/controllers/pages/server_info/remote_sends.php,importbuddy/co
ntrollers/pages/server_info/remote_sends.php
###PACKDATA,FILE_START,/controllers/pages/server_info/server.php,importbuddy/contro
llers/pages/server_info/server.php
PD9waHAKLyoqCiAqIFNlcnZlciBUb29scyBQYWdlIFNlcnZlciBJbmZvCiAqCiAqIEBwYWNrYWdlIEJhY2t
1cEJ1ZGR5CiAqLwoKPz4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5wYl9iYWNrdXBidWRkeV9yZWZyZX
NoX3N0YXRzIHsKCQljdXJzb3I6IHBvaW50ZXI7Cgl9Cjwvc3R5bGU+CjxzY3JpcHQ+CmpRdWVyeShmdW5jd
GlvbigpIHsKCWZ1bmN0aW9uIGJiX2lzTnVtYmVyKCBuICkgewoJCXJldHVybiAhaXNOYU4ocGFyc2VGbG9h
dChuKSkgJiYgaXNGaW5pdGUobik7Cgl9OwoKCWpRdWVyeSgnLnBiX2JhY2t1cGJ1ZGR5X3Rlc3RFcnJvckx
vZycpLm9uKCAnY2xpY2snLCBmdW5jdGlvbihlKSB7CgkJalF1ZXJ5KCAnLnBiX2JhY2t1cGJ1ZGR5X2xvYW
RpbmcnICkuc2hvdygpOwoJCWpRdWVyeS5wb3N0KCBqUXVlcnkodGhpcykuYXR0ciggJ3JlbCcgKSwgeyBmd
W5jdGlvbjogJ3Rlc3RFcnJvckxvZycgfSwKCQkJZnVuY3Rpb24oZGF0YSkgewoJCQkJalF1ZXJ5KCAnLnBi
X2JhY2t1cGJ1ZGR5X2xvYWRpbmcnICkuaGlkZSgpOwoJCQkJYWxlcnQoIGRhdGEgKTsKCQkJfQoJCSk7Cgk
JcmV0dXJuIGZhbHNlOwoJfSk7CgoJalF1ZXJ5KCAnLnBiX2JhY2t1cGJ1ZGR5X3Rlc3RQSFBSdW50aW1lJy
ApLm9uKCAnY2xpY2snLCBmdW5jdGlvbihlKXsKCQlsb2FkaW5nID0galF1ZXJ5KHRoaXMpLmNoaWxkcmVuK
CAnLnBiX2JhY2t1cGJ1ZGR5X2xvYWRpbmcnICk7CgkJc2VyaWFsaXplZEZvcm0gPSBqUXVlcnkodGhpcyku
Y2xvc2VzdCggJ2Zvcm0nICkuc2VyaWFsaXplKCk7CgoJCXRlc3RQSFBSdW50aW1lSW50ZXJ2YWwgPSBzZXR
JbnRlcnZhbCggZnVuY3Rpb24oKXsKCQkJbG9hZGluZy5zaG93KCk7CgkJCWpRdWVyeS5wb3N0KAoJCQkJJz
w/cGhwIGVjaG8gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAncnVuX3BocF9ydW50aW1lX3Rlc3RfcmVzd
Wx0cycgKTsgPz4nLAoJCQkJc2VyaWFsaXplZEZvcm0sCgkJCQlmdW5jdGlvbihkYXRhKSB7CgkJCQkJbG9h
ZGluZy5oaWRlKCk7CgkJCQkJaWYgKCBiYl9pc051bWJlciggZGF0YSApICkgeyAvLyBGaW5pc2hlZAoJCQk
JCQlyZXN1bHRfb2JqLmh0bWwoIGRhdGEgKyAnIDw/cGhwIF9lKCAnc2VjcycsICdpdC1sMTBuLWJhY2t1cG
J1ZGR5JyApOyA/PicgKTsKCQkJCQkJY2xlYXJJbnRlcnZhbCggdGVzdFBIUFJ1bnRpbWVJbnRlcnZhbCApO
woJCQkJCX0gZWxzZSB7IC8vIEluIHByb2dyZXNzLgoJCQkJCQlyZXN1bHRfb2JqLmh0bWwoIGRhdGEgKTsK
CQkJCQl9CgkJCQl9CgkJCSk7CgkJfSwgNTAwMCApOwoJfSk7CgoJalF1ZXJ5KCAnLnBiX2JhY2t1cGJ1ZGR
5X3Rlc3RQSFBNZW1vcnknICkub24oICdjbGljaycsIGZ1bmN0aW9uKGUpewoJCWxvYWRpbmcgPSBqUXVlcn
kodGhpcykuY2hpbGRyZW4oICcucGJfYmFja3VwYnVkZHlfbG9hZGluZycgKTsKCQlzZXJpYWxpemVkRm9yb
SA9IGpRdWVyeSh0aGlzKS5jbG9zZXN0KCAnZm9ybScgKS5zZXJpYWxpemUoKTsKCgkJdGVzdFBIUE1lbW9y
eUludGVydmFsID0gc2V0SW50ZXJ2YWwoIGZ1bmN0aW9uKCl7CgkJCWxvYWRpbmcuc2hvdygpOwoJCQlqUXV
lcnkucG9zdCgKCQkJCSc8P3BocCBlY2hvIHBiX2JhY2t1cGJ1ZGR5OjphamF4X3VybCggJ3J1bl9waHBfbW
Vtb3J5X3Rlc3RfcmVzdWx0cycgKTsgPz4nLAoJCQkJc2VyaWFsaXplZEZvcm0sCgkJCQlmdW5jdGlvbihkY
XRhKSB7CgkJCQkJbG9hZGluZy5oaWRlKCk7CgkJCQkJaWYgKCBiYl9pc051bWJlciggZGF0YSApICkgeyAv
LyBGaW5pc2hlZAoJCQkJCQlyZXN1bHRfb2JqLmh0bWwoIGRhdGEgKyAnIDw/cGhwIF9lKCAnTUInLCAnaXQ
tbDEwbi1iYWNrdXBidWRkeScgKTsgPz4nICk7CgkJCQkJCWNsZWFySW50ZXJ2YWwoIHRlc3RQSFBNZW1vcn
lJbnRlcnZhbCApOwoJCQkJCX0gZWxzZSB7IC8vIEluIHByb2dyZXNzLgoJCQkJCQlyZXN1bHRfb2JqLmh0b
WwoIGRhdGEgKTsKCQkJCQl9CgkJCQl9CgkJCSk7CgkJfSwgNTAwMCApOwoJfSk7CgoJalF1ZXJ5KCcucGJf
YmFja3VwYnVkZHlfcmVmcmVzaF9zdGF0cycpLm9uKCAnY2xpY2snLCBmdW5jdGlvbihlKSB7CgkJbG9hZGl
uZyA9IGpRdWVyeSh0aGlzKS5jaGlsZHJlbiggJy5wYl9iYWNrdXBidWRkeV9sb2FkaW5nJyApOwoJCWxvYW
Rpbmcuc2hvdygpOwoKCQlyZXN1bHRfb2JqID0galF1ZXJ5KCAnI3BiX3N0YXRzXycgKyBqUXVlcnkodGhpc
ykuYXR0ciggJ3JlbCcgKSApOwoKCQlqUXVlcnkucG9zdCggalF1ZXJ5KHRoaXMpLmF0dHIoICdhbHQnICks
IGpRdWVyeSh0aGlzKS5jbG9zZXN0KCAnZm9ybScgKS5zZXJpYWxpemUoKSwKCQkJZnVuY3Rpb24oZGF0YSk
gewoJCQkJbG9hZGluZy5oaWRlKCk7CgkJCQlyZXN1bHRfb2JqLmh0bWwoIGRhdGEgKTsKCQkJfQoJCSk7Cg
oJCXJldHVybiBmYWxzZTsKCX0pOwp9KTsKPC9zY3JpcHQ+Cjw/cGhwIHJlcXVpcmUgJ19zZXJ2ZXJfdGVzd
HMucGhwJzsgPz4KCjx0YWJsZSBjbGFzcz0id2lkZWZhdCBzdHJpcGVkIj4KCTx0aGVhZD4KCQk8dHIgY2xh
c3M9InRoZWFkIj4KCQkJPHRoIHN0eWxlPSJ3aWR0aDogMTVweDsiPiZuYnNwOzwvdGg+CgkJCTx0aD48P3B
ocCBlc2NfaHRtbF9lKCAnU2VydmVyIENvbmZpZ3VyYXRpb24nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKT
sgPz48L3RoPgoJCQk8dGg+PD9waHAgZXNjX2h0bWxfZSggJ1N1Z2dlc3Rpb24nLCAnaXQtbDEwbi1iYWNrd
XBidWRkeScgKTsgPz48L3RoPgoJCQk8dGg+PD9waHAgZXNjX2h0bWxfZSggJ1ZhbHVlJywgJ2l0LWwxMG4t
YmFja3VwYnVkZHknICk7ID8+PC90aD4KCQkJPHRoIHN0eWxlPSJ3aWR0aDogNjBweDsiPjw/cGhwIGVzY19
odG1sX2UoICdTdGF0dXMnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L3RoPgoJCTwvdHI+Cgk8L3
RoZWFkPgoJPHRmb290PgoJCTx0ciBjbGFzcz0idGhlYWQiPgoJCQk8dGggc3R5bGU9IndpZHRoOiAxNXB4O
yI+Jm5ic3A7PC90aD4KCQkJPHRoPjw/cGhwIGVzY19odG1sX2UoICdTZXJ2ZXIgQ29uZmlndXJhdGlvbics
ICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvdGg+CgkJCTx0aD48P3BocCBlc2NfaHRtbF9lKCAnU3V
nZ2VzdGlvbicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvdGg+CgkJCTx0aD48P3BocCBlc2NfaH
RtbF9lKCAnVmFsdWUnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L3RoPgoJCQk8dGggc3R5bGU9I
ndpZHRoOiA2MHB4OyI+PD9waHAgZXNjX2h0bWxfZSggJ1N0YXR1cycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5
JyApOyA/PjwvdGg+CgkJPC90cj4KCTwvdGZvb3Q+Cgk8dGJvZHk+CgkJPD9waHAgZm9yZWFjaCAoICR0ZXN
0cyBhcyAkcGFyZW50X2NsYXNzX3Rlc3QgKSB7ID8+CgkJCTx0ciBjbGFzcz0iZW50cnktcm93Ij4KCQkJCT
x0ZD48P3BocCBlY2hvIHBiX2JhY2t1cGJ1ZGR5Ojp0aXAoICRwYXJlbnRfY2xhc3NfdGVzdFsndGlwJ10sI
CcnLCBmYWxzZSApOyA/PjwvdGQ+CgkJCQk8dGQ+PD9waHAgZWNobyAkcGFyZW50X2NsYXNzX3Rlc3RbJ3Rp
dGxlJ107ID8+PC90ZD4KCQkJCTx0ZD48P3BocCBlY2hvICRwYXJlbnRfY2xhc3NfdGVzdFsnc3VnZ2VzdGl
vbiddOyA/PjwvdGQ+CgkJCQk8dGQ+PD9waHAgZWNobyAkcGFyZW50X2NsYXNzX3Rlc3RbJ3ZhbHVlJ107ID
8+PC90ZD4KCQkJCTx0ZD4KCQkJCQk8P3BocCBpZiAoICdPSycgPT0gJHBhcmVudF9jbGFzc190ZXN0Wydzd
GF0dXMnXSApIHsgPz4KCQkJCQkJPHNwYW4gY2xhc3M9InBiX2xhYmVsIHBiX2xhYmVsLXN1Y2Nlc3MiPjw/
cGhwIGVzY19odG1sX2UoICdQYXNzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+PC9zcGFuPgoJCQk
JCTw/cGhwIH0gZWxzZWlmICggJ0ZBSUwnID09ICRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gKSB7ID
8+CgkJCQkJCTxzcGFuIGNsYXNzPSJwYl9sYWJlbCBwYl9sYWJlbC1pbXBvcnRhbnQiPjw/cGhwIGVzY19od
G1sX2UoICdGYWlsJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+PC9zcGFuPgoJCQkJCTw/cGhwIH0g
ZWxzZWlmICggJ1dBUk5JTkcnID09ICRwYXJlbnRfY2xhc3NfdGVzdFsnc3RhdHVzJ10gKSB7ID8+CgkJCQk
JCTxzcGFuIGNsYXNzPSJwYl9sYWJlbCBwYl9sYWJlbC13YXJuaW5nIj48P3BocCBlc2NfaHRtbF9lKCAnV2
FybmluZycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/Pjwvc3Bhbj4KCQkJCQk8P3BocCB9ID8+CgkJC
Qk8L3RkPgoJCQk8L3RyPgoJCTw/cGhwIH0gPz4KCTwvdGJvZHk+CjwvdGFibGU+Cjxicj4KPGNlbnRlcj4K
PD9waHAKaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSApIHsKCWVjaG8gJzxhIGhyZWY9IiN
UQl9pbmxpbmU/d2lkdGg9NjQwJiMwMzg7aGVpZ2h0PTYwMCYjMDM4O2lubGluZUlkPXBiX3NlcnZlcmluZm
90ZXh0X21vZGFsIiBjbGFzcz0iYnV0dG9uIGJ1dHRvbi1zZWNvbmRhcnkgYnV0dG9uLXRlcnRpYXJ5IHRoa
WNrYm94IiB0aXRsZT0iU2VydmVyIEluZm9ybWF0aW9uIFJlc3VsdHMiPkRpc3BsYXkgU2VydmVyIENvbmZp
Z3VyYXRpb24gaW4gVGV4dCBGb3JtYXQ8L2E+ICZuYnNwOyZuYnNwOyZuYnNwOyAnOwoJZWNobyAnPGEgaHJ
lZj0iJyAuIHBiX2JhY2t1cGJ1ZGR5OjphamF4X3VybCggJ3BpbmZvJyApIC4gJyYjMDM4O1RCX2lmcmFtZT
0xJiMwMzg7d2lkdGg9NjQwJiMwMzg7aGVpZ2h0PTYwMCIgY2xhc3M9InRoaWNrYm94IGJ1dHRvbiBzZWNvb
mRhcnktYnV0dG9uIiB0aXRsZT0iJyAuIGVzY19odG1sX18oICdEaXNwbGF5IEV4dGVuZGVkIFBIUCBTZXR0
aW5ncyB2aWEgcGhwaW5mbygpJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgLiAnIj4nIC4gZXNjX2h0bWx
fXyggJ0Rpc3BsYXkgRXh0ZW5kZWQgUEhQIFNldHRpbmdzIHZpYSBwaHBpbmZvKCknLCAnaXQtbDEwbi1iYW
NrdXBidWRkeScgKSAuICc8L2E+JzsKfSBlbHNlIHsKCWVjaG8gJzxhIGlkPSJzZXJ2ZXJpbmZvdGV4dCIgY
2xhc3M9ImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5IGJ1dHRvbi10ZXJ0aWFyeSBidXR0b24tcHJpbWFyeSB0
aGlja2JveCB0b2dnbGUiIHRpdGxlPSJTZXJ2ZXIgSW5mb3JtYXRpb24gUmVzdWx0cyI+RGlzcGxheSBSZXN
1bHRzIGluIFRleHQgRm9ybWF0PC9hPiAmbmJzcDsmbmJzcDsmbmJzcDsgJzsKfQo/Pgo8L2NlbnRlcj4KPG
JyPgoKPD9waHAKJGRpdl9pZCAgICAgICAgID0gISBkZWZpbmVkKCAnUEJfSU1QT1JUQlVERFknICkgPyAnc
GJfc2VydmVyaW5mb3RleHRfbW9kYWwnIDogJ3RvZ2dsZS1zZXJ2ZXJpbmZvdGV4dCc7CiR0ZXh0YXJlYV93
aWR0aCA9ICEgZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApID8gJzEwMCUnIDogJzk1JSc7Cj8+CjxkaXY
gaWQ9Ijw/cGhwIGVjaG8gZXNjX2F0dHIoICRkaXZfaWQgKTsgPz4iIHN0eWxlPSJkaXNwbGF5OiBub25lOy
I+CgkJPD9waHAKCQlpZiAoICEgZGVmaW5lZCggJ1BCX0lNUE9SVEJVRERZJyApICkgewoJCQllY2hvICc8a
DM+JyAuIGVzY19odG1sX18oICdTZXJ2ZXIgSW5mb3JtYXRpb24gUmVzdWx0cycsICdpdC1sMTBuLWJhY2t1
cGJ1ZGR5JyApIC4gJzwvaDM+JzsKCQl9CgkJZWNobyAnPHRleHRhcmVhIHN0eWxlPSJ3aWR0aDogJyAuIGV
zY19hdHRyKCAkdGV4dGFyZWFfd2lkdGggKSAuICc7IGhlaWdodDogMzAwcHg7IiB3cmFwPSJvZmYiPic7Cg
kJZm9yZWFjaCAoICR0ZXN0cyBhcyAkdGVzdCApIHsKCQkJZWNobyAnWycgLiBlc2NfaHRtbCggJHRlc3RbJ
3N0YXR1cyddICkgLiAnXSAgICAgJyAuIGVzY19odG1sKCAkdGVzdFsndGl0bGUnXSApIC4gJyAgID0gICAn
IC4gZXNjX2h0bWwoIHN0cmlwX3RhZ3MoICR0ZXN0Wyd2YWx1ZSddICkgKSAuICJcbiI7CgkJfQoJCT8+Cgk
JPC90ZXh0YXJlYT4KPC9kaXY+Cg==
###PACKDATA,FILE_END,/controllers/pages/server_info/server.php,importbuddy/controll
ers/pages/server_info/server.php
###PACKDATA,FILE_START,/controllers/pages/server_info/site_size.php,importbuddy/con
trollers/pages/server_info/site_size.php
PD9waHAKLyoqCiAqIFNpdGUgU2l6ZSBJbmZvIG9uIFNlcnZlciBUb29scyBQYWdlCiAqCiAqIEBwYWNrYWd
lIEJhY2t1cEJ1ZGR5CiAqLwoKcGJfYmFja3VwYnVkZHk6OmxvYWRfc2NyaXB0KCAnaWNpY2xlLmpzJyApOw
pwYl9iYWNrdXBidWRkeTo6bG9hZF9zY3JpcHQoICdpY2ljbGVfc2V0dXAuanMnICk7CnBiX2JhY2t1cGJ1Z
GR5Ojpsb2FkX3N0eWxlKCAnaml0X2Jhc2UuY3NzJyApOwpwYl9iYWNrdXBidWRkeTo6bG9hZF9zdHlsZSgg
J2ppdF9pY2ljbGUuY3NzJyApOwo/Pgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CglqUXVlcnk
oZnVuY3Rpb24oKSB7CgkJalF1ZXJ5KCcjcGJfaWNpY2xlbGF1bmNoJykub24oICdjbGljaycsIGZ1bmN0aW
9uKGUpIHsKCQkJalF1ZXJ5KCcjcGJfaW5mb3Zpc19jb250YWluZXInKS5zbGlkZVRvZ2dsZSgpOwoJCQlqU
XVlcnkucG9zdCggJzw/cGhwIGVjaG8gcGJfYmFja3VwYnVkZHk6OmFqYXhfdXJsKCAnaWNpY2xlJyApOyA/
PicsCgkJCQlmdW5jdGlvbiggZGF0YSApIHsKCQkJCQlqUXVlcnkoJyNpbmZvdmlzJykuaHRtbCgnJyk7Cgk
JCQkJaWNpY2xlX2luaXQoIGRhdGEgKTsKCQkJCX0KCQkJKTsKCQl9KTsKCgkJalF1ZXJ5KCAnLnBiX2JhY2
t1cGJ1ZGR5X3NpdGVfc2l6ZV9saXN0aW5nX2J1dHRvbicgKS5vbiggJ2NsaWNrJywgZnVuY3Rpb24oKSB7C
gkJCWpRdWVyeSggJyNwYl9iYWNrdXBidWRkeV9zaXRlX3NpemVfbGlzdGluZ19pbnRybyA+IC5wYl9iYWNr
dXBidWRkeV9sb2FkaW5nJyApLnNob3coKTsKCQkJalF1ZXJ5LnBvc3QoICc8P3BocCBlY2hvIHBiX2JhY2t
1cGJ1ZGR5OjphamF4X3VybCggJ3NpdGVfc2l6ZV9saXN0aW5nJyApOyA/PiZwcm9maWxlPScgKyBqUXVlcn
koICcjcGJfYmFja3VwYnVkZHlfZmlsZWxpc3Rpbmdwcm9maWxlJyApLnZhbCgpLAoJCQkJZnVuY3Rpb24oI
GRhdGEgKSB7CgkJCQkJalF1ZXJ5KCAnI3BiX2JhY2t1cGJ1ZGR5X3NpdGVfc2l6ZV9saXN0aW5nX2NvbnRl
bnQnICkuaHRtbCggZGF0YSApOwoJCQkJCWpRdWVyeSggJyNwYl9iYWNrdXBidWRkeV9zaXRlX3NpemVfbGl
zdGluZ19pbnRybyA+IC5wYl9iYWNrdXBidWRkeV9sb2FkaW5nJyApLmhpZGUoKTsKCQkJCQlqUXVlcnkoIC
cjcGJfYmFja3VwYnVkZHlfc2l0ZV9zaXplX2xpc3RpbmdfY29udGVudCcgKS5zbGlkZURvd24oKTsKCQkJC
X0KCQkJKTsKCQkJalF1ZXJ5KCAncGJfYmFja3VwYnVkZHlfbG9hZGluZycgKS5oaWRlKCk7CgkJfSApOwoK
CX0pOwo8L3NjcmlwdD4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCSNwYl9iYWNrdXBidWRkeV9zZXJ2ZXJ
pbmZvX2V4Y2x1c2lvbnM6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKCQktd2Via2l0LWFwcGVhcmFuY2U6IG5vbm
U7CgkJd2lkdGg6IDExcHg7CgkJaGVpZ2h0OiAxMXB4OwoJfQoJI3BiX2JhY2t1cGJ1ZGR5X3NlcnZlcmluZ
m9fZXhjbHVzaW9uczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgewoJCWJvcmRlci1yYWRpdXM6IDhweDsK
CQlib3JkZXI6IDJweCBzb2xpZCB3aGl0ZTsgLyogc2hvdWxkIG1hdGNoIGJhY2tncm91bmQsIGNhbid0IGJ
lIHRyYW5zcGFyZW50ICovCgkJYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAuNSk7Cgl94oCLCj
wvc3R5bGU+Cgo8YnI+CjxoMyBjbGFzcz0icGJfaHRpdGxlIj48P3BocCBlc2NfaHRtbF9lKCAnRGlyZWN0b
3J5IFNpemUgTGlzdGluZycsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvaDM+CjxhIG5hbWU9InBi
X2JhY2t1cGJ1ZGR5X2Rpcl9zaXplX2xpc3RpbmciPiZuYnNwOzwvYT4KCjxkaXYgaWQ9InBiX2JhY2t1cGJ
1ZGR5X3NpdGVfc2l6ZV9saXN0aW5nX2ludHJvIj4KCTw/cGhwIGVzY19odG1sX2UoICdEaXNwbGF5IGEgY2
9tcHJlaGVuc2l2ZSBsaXN0aW5nIG9mIGRpcmVjdG9yaWVzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzaXplI
G9mIGFsbCBjb250ZW50cyB3aXRoaW4sIGluY2x1ZGluZyBzdWJkaXJlY3Rvcmllcy4gIFRoaXMgaXMgdXNl
ZnVsIGZvciBmaW5kaW5nIHdoZXJlIHNwYWNlIGlzIGJlaW5nIHVzZWQuIE5vdGUgdGhhdCB0aGlzIGlzIGE
gQ1BVIGludGVuc2l2ZSBwcm9jZXNzIGFuZCBtYXkgdGFrZSBhIHdoaWxlIHRvIGxvYWQgYW5kIGV2ZW4gdG
ltZSBvdXQgb24gc29tZSBzZXJ2ZXJzLicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PgoJPGJyIC8+P
GJyIC8+CgoJPGI+QmFja3VwIHByb2ZpbGUgZm9yIGNhbGN1bGF0aW5nIGV4Y2x1c2lvbnM6PC9iPgoJPHNl
bGVjdCBpZD0icGJfYmFja3VwYnVkZHlfZmlsZWxpc3Rpbmdwcm9maWxlIj4KCQk8P3BocAoJCWZvcmVhY2g
gKCBwYl9iYWNrdXBidWRkeTo6JG9wdGlvbnNbJ3Byb2ZpbGVzJ10gYXMgJHRoaXNfcHJvZmlsZV9pZCA9Pi
AkcHJvZmlsZSApIHsKCQkJaWYgKCAnZGInID09ICRwcm9maWxlWyd0eXBlJ10gKSB7CgkJCQljb250aW51Z
TsKCQkJfQoJCQk/PgoJCQk8b3B0aW9uIHZhbHVlPSI8P3BocCBlY2hvIGVzY19hdHRyKCAkdGhpc19wcm9m
aWxlX2lkICk7ID8+IiA8P3BocCBzZWxlY3RlZCggJHByb2ZpbGVfaWQsICR0aGlzX3Byb2ZpbGVfaWQgKTs
gPz4+CgkJCQk8P3BocCBlY2hvIGVzY19odG1sKCAkcHJvZmlsZVsndGl0bGUnXSApOyA/PiAoPD9waHAgZW
NobyBlc2NfaHRtbCggJHByb2ZpbGVbJ3R5cGUnXSApOyA/PikKCQkJPC9vcHRpb24+CgkJPD9waHAgfSA/P
goJPC9zZWxlY3Q+PGJyPgoKCgk8YnI+Cgk8YSBjbGFzcz0icGJfYmFja3VwYnVkZHlfc2l0ZV9zaXplX2xp
c3RpbmdfYnV0dG9uIGJ1dHRvbiBidXR0b24tcHJpbWFyeSIgc3R5bGU9Im1hcmdpbi10b3A6IDNweDsiPjw
/cGhwIGVzY19odG1sX2UoICdEaXNwbGF5IERpcmVjdG9yeSBTaXplIExpc3RpbmcnLCAnaXQtbDEwbi1iYW
NrdXBidWRkeScgKTsgPz48L2E+Cgk8c3BhbiBjbGFzcz0icGJfYmFja3VwYnVkZHlfbG9hZGluZyIgc3R5b
GU9ImRpc3BsYXk6IG5vbmU7IG1hcmdpbi1sZWZ0OiAxMHB4OyI+PGltZyBzcmM9Ijw/cGhwIGVjaG8gcGJf
YmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKTsgPz4vaW1hZ2VzL2xvYWRpbmcuZ2lmIiBhbHQ9Ijw/cGhwIGV
zY19hdHRyX2UoICdMb2FkaW5nLi4uJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+IiB0aXRsZT0iPD
9waHAgZXNjX2F0dHJfZSggJ0xvYWRpbmcuLi4nLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz4iIHdpZ
HRoPSIxNiIgaGVpZ2h0PSIxNiIgc3R5bGU9InZlcnRpY2FsLWFsaWduOiAtM3B4OyIgLz48L3NwYW4+Cjwv
ZGl2Pgo8YnI+CjxkaXYgaWQ9InBiX2JhY2t1cGJ1ZGR5X3NpdGVfc2l6ZV9saXN0aW5nX2NvbnRlbnQiIHN
0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9kaXY+Cjxicj48YnI+CjxoMyBjbGFzcz0icGJfaHRpdGxlIj48P3
BocCBlc2NfaHRtbF9lKCAnSW50ZXJhY3RpdmUgR3JhcGhpY2FsIERpcmVjdG9yeSBTaXplIE1hcCcsICdpd
C1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvaDM+Cjxicj4KPD9waHAKZXNjX2h0bWxfZSggJ0Rpc3BsYXlz
IGFuIGludGVyYWN0aXZlIGdyYXBoaWNhbCByZXByZXNlbnRhdGlvbiBvZiBkaXJlY3RvcmllcyBhbmQgdGh
lIGNvcnJlc3BvbmRpbmcgc2l6ZSBvZiBhbGwgY29udGVudHMgd2l0aGluLCBpbmNsdWRpbmcgc3ViZGlyZW
N0b3JpZXMuClRoaXMgaXMgdXNlZnVsIGZvciBmaW5kaW5nIHdoZXJlIHNwYWNlIGlzIGJlaW5nIHVzZWQuI
ERpcmVjdG9yeSBib3hlcyBhcmUgc2NhbGVkIGJhc2VkIG9uIHNpemUuIENsaWNrIG9uIGEgZGlyZWN0b3J5
IGJveCB0byBtb3ZlIGFyb3VuZC4gTm90ZSB0aGF0IHRoaXMKaXMgYSBDUFUgaW50ZW5zaXZlIHByb2Nlc3M
gYW5kIG1heSB0YWtlIGEgd2hpbGUgdG8gbG9hZCBhbmQgZXZlbiB0aW1lIG91dCBvbiBzb21lIHNlcnZlcn
MuIFNsb3dlciBjb21wdXRlcnMgbWF5IGhhdmUgdHJvdWJsZSBuYXZpZ2F0aW5nIHRoZSBpbnRlcmFjdGl2Z
SBtYXAuJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7Cj8+Cjxicj4KPHA+PGEgaWQ9InBiX2ljaWNsZWxh
dW5jaCIgY2xhc3M9ImJ1dHRvbiBidXR0b24tcHJpbWFyeSIgc3R5bGU9Im1hcmdpbi10b3A6IDNweDsiPjw
/cGhwIGVzY19odG1sX2UoICdEaXNwbGF5IEludGVyYWN0aXZlIEdyYXBoaWNhbCBEaXJlY3RvcnkgU2l6ZS
BNYXAnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L2E+PC9wPgoKPGxpbmsgdHlwZT0idGV4dC9jc
3MiIGhyZWY9Ijw/cGhwIGVjaG8gcGJfYmFja3VwYnVkZHk6OnBsdWdpbl91cmwoKTsgPz4vY3NzL2ppdF9i
YXNlLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiAvPgo8bGluayB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iPD9waHA
gZWNobyBwYl9iYWNrdXBidWRkeTo6cGx1Z2luX3VybCgpOyA/Pi9jc3Mvaml0X2ljaWNsZS5jc3MiIHJlbD
0ic3R5bGVzaGVldCIgLz4KCjxkaXYgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBpZD0icGJfaW5mb3Zpc19jb
250YWluZXIiPgoJPGRpdiBzdHlsZT0iYmFja2dyb3VuZDogIzFBMUExQTsiPgoJCTxkaXYgaWQ9ImluZm92
aXMiPgoJCQk8YnIgLz48YnIgLz4KCQkJPGRpdiBzdHlsZT0ibWFyZ2luOiAzMHB4OyI+CgkJCQk8aDQgc3R
5bGU9ImNvbG9yOiAjRkZGRkZGOyI+PGltZyBzcmM9Ijw/cGhwIGVjaG8gcGJfYmFja3VwYnVkZHk6OnBsdW
dpbl91cmwoKTsgPz4vaW1hZ2VzL2xvYWRpbmdfbGFyZ2VfZGFya2JnLmdpZiIgc3R5bGU9InZlcnRpY2FsL
WFsaWduOiAtOXB4OyIgLz4gPD9waHAgZXNjX2h0bWxfZSggJ0xvYWRpbmcgLi4uIFBsZWFzZSB3YWl0IC4u
LicsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApOyA/PjwvaDQ+CgkJCTwvZGl2PgoJCTwvZGl2PgoJPC9kaXY
+CgoJPGxhYmVsIGZvcj0icy1vcmllbnRhdGlvbiI+PD9waHAgZXNjX2h0bWxfZSggJ09yaWVudGF0aW9uJy
wgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+OiA8L2xhYmVsPgoJPHNlbGVjdCBuYW1lPSJzLW9yaWVud
GF0aW9uIiBpZD0icy1vcmllbnRhdGlvbiI+CgkJPG9wdGlvbiB2YWx1ZT0iaCIgc2VsZWN0ZWQ+PD9waHAg
ZXNjX2h0bWxfZSggJ2hvcml6b250YWwnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKTsgPz48L29wdGlvbj4
KCQk8b3B0aW9uIHZhbHVlPSJ2Ij48P3BocCBlc2NfaHRtbF9lKCAndmVydGljYWwnLCAnaXQtbDEwbi1iYW
NrdXBidWRkeScgKTsgPz48L29wdGlvbj4KCTwvc2VsZWN0PgoKCTxsYWJlbCBmb3I9ImktbGV2ZWxzLXRvL
XNob3ciPjw/cGhwIGVzY19odG1sX2UoICdNYXggbGV2ZWxzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7
ID8+OiA8L2xhYmVsPgoJPHNlbGVjdCAgaWQ9ImktbGV2ZWxzLXRvLXNob3ciIG5hbWU9ImktbGV2ZWxzLXR
vLXNob3ciIHN0eWxlPSJ3aWR0aDogNTBweCI+CgkJPG9wdGlvbj5hbGw8L29wdGlvbj4KCQk8b3B0aW9uPj
E8L29wdGlvbj4KCQk8b3B0aW9uPjI8L29wdGlvbj4KCQk8b3B0aW9uIHNlbGVjdGVkPSJzZWxlY3RlZCI+M
zwvb3B0aW9uPgoJCTxvcHRpb24+NDwvb3B0aW9uPgoJCTxvcHRpb24+NTwvb3B0aW9uPgoJPC9zZWxlY3Q+
CgoJPGEgaWQ9InVwZGF0ZSIgY2xhc3M9InRoZW1lIGJ1dHRvbiB3aGl0ZSI+PD9waHAgZXNjX2h0bWxfZSg
gJ0dvIFVwJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICk7ID8+PC9hPgo8L2Rpdj4KPGJyPjxicj4KCjw/cG
hwCiRkaXJfYXJyYXkgICAgPSBhcnJheSgpOwokaWNpY2xlX2FycmF5ID0gYXJyYXkoKTsKJHRpbWVfc3Rhc
nQgICA9IG1pY3JvdGltZSggdHJ1ZSApOwo=
###PACKDATA,FILE_END,/controllers/pages/server_info/site_size.php,importbuddy/contr
ollers/pages/server_info/site_size.php
###PACKDATA,FILE_START,/controllers/pages/server_tools.php,importbuddy/controllers/
pages/server_tools.php
PD9waHAKLyoqCiAqIFNlcnZlciBUb29scyBQYWdlCiAqCiAqIEBwYWNrYWdlIEJhY2t1cEJ1ZGR5CiAqLwo
KaWYgKCAhIGRlZmluZWQoICdQQl9JTVBPUlRCVUREWScgKSApIHsgLy8gTk9UIElOIElNUE9SVEJVRERZLg
oKCXdwX2VucXVldWVfc2NyaXB0KCAndGhpY2tib3gnICk7Cgl3cF9wcmludF9zY3JpcHRzKCAndGhpY2tib
3gnICk7Cgl3cF9wcmludF9zdHlsZXMoICd0aGlja2JveCcgKTsKCT8+Cgk8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgoJI2JhY2t1cGJ1ZGR5LW1ldGEtbGluay13cmFwIGEuc2hvdy1zZXR0aW5ncyB7CgkJZmxvYXQ6IHJ
pZ2h0OwoJCW1hcmdpbjogMCAwIDAgNnB4OwoJfQoJI3NjcmVlbi1tZXRhLWxpbmtzICNiYWNrdXBidWRkeS
1tZXRhLWxpbmstd3JhcCBhIHsKCQliYWNrZ3JvdW5kOiBub25lOwoJfQoJI3NjcmVlbi1tZXRhLWxpbmtzI
CNiYWNrdXBidWRkeS1tZXRhLWxpbmstd3JhcCBhOjphZnRlciB7CgkJY29udGVudDogJyc7CgkJbWFyZ2lu
LXJpZ2h0OiA1cHg7Cgl9Cgk8L3N0eWxlPgoKCTw/cGhwCgoJcGJfYmFja3VwYnVkZHk6OmxvYWRfc2NyaXB
0KCAnYWRtaW4uanMnICk7CgoJcGJfYmFja3VwYnVkZHk6OiR1aS0+dGl0bGUoIF9fKCAnU2VydmVyIFRvb2
xzJywgJ2l0LWwxMG4tYmFja3VwYnVkZHknICkgKTsKCWJhY2t1cGJ1ZGR5X2NvcmU6OnZlcnNpb25zX2Nvb
mZpcm0oKTsKCgkkZGVmYXVsdF90YWIgPSAwOwoJaWYgKCBpc19udW1lcmljKCBwYl9iYWNrdXBidWRkeTo6
X0dFVCggJ3RhYicgKSApICkgewoJCSRkZWZhdWx0X3RhYiA9IHBiX2JhY2t1cGJ1ZGR5OjpfR0VUKCAndGF
iJyApOwoJfQoKCXBiX2JhY2t1cGJ1ZGR5OjokdWktPnN0YXJ0X3RhYnMoCgkJJ2dldHRpbmdfc3RhcnRlZC
csCgkJYXJyYXkoCgkJCWFycmF5KAoJCQkJJ3RpdGxlJyA9PiBfXyggJ1NlcnZlcicsICdpdC1sMTBuLWJhY
2t1cGJ1ZGR5JyApLAoJCQkJJ3NsdWcnICA9PiAnc2VydmVyJywKCQkJKSwKCQkJYXJyYXkoCgkJCQkndGl0
bGUnID0+IF9fKCAnRGF0YWJhc2UnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCQkJCSdzbHVnJyAgPT4
gJ2RhdGFiYXNlJywKCQkJKSwKCQkJYXJyYXkoCgkJCQkndGl0bGUnID0+IF9fKCAnU2l0ZSBTaXplIE1hcH
MnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCQkJCSdzbHVnJyAgPT4gJ2ZpbGVzJywKCQkJKSwKCQkJY
XJyYXkoCgkJCQkndGl0bGUnID0+IF9fKCAnV29yZFByZXNzIFNjaGVkdWxlcyAoQ3JvbiknLCAnaXQtbDEw
bi1iYWNrdXBidWRkeScgKSwKCQkJCSdzbHVnJyAgPT4gJ2Nyb24nLAoJCQkpLAoJCSksCgkJJ3dpZHRoOiA
xMDAlOycsCgkJdHJ1ZSwKCQkkZGVmYXVsdF90YWIKCSk7CgoJcGJfYmFja3VwYnVkZHk6OiR1aS0+c3Rhcn
RfdGFiKCAnc2VydmVyJyApOwoKCXJlcXVpcmVfb25jZSAnc2VydmVyX2luZm8vc2VydmVyLnBocCc7CglyZ
XF1aXJlX29uY2UgJ3NlcnZlcl9pbmZvL3Blcm1pc3Npb25zLnBocCc7CgoJJHdwX3VwbG9hZF9kaXIgPSB3
cF91cGxvYWRfZGlyKCk7Cgkkd3Bfc2V0dGluZ3MgICA9IGFycmF5KCk7CgoJaWYgKCBpc3NldCggJHdwX3V
wbG9hZF9kaXJbJ3BhdGgnXSApICkgewoJCSR3cF9zZXR0aW5nc1tdID0gYXJyYXkoICdVcGxvYWQgRmlsZS
BQYXRoJywgJHdwX3VwbG9hZF9kaXJbJ3BhdGgnXSwgJ3dwX3VwbG9hZF9kaXIoKScgKTsKCX0KCWlmICgga
XNzZXQoICR3cF91cGxvYWRfZGlyWyd1cmwnXSApICkgewoJCSR3cF9zZXR0aW5nc1tdID0gYXJyYXkoICdV
cGxvYWQgVVJMJywgJHdwX3VwbG9hZF9kaXJbJ3VybCddLCAnd3BfdXBsb2FkX2RpcigpJyApOwoJfQoJaWY
gKCBpc3NldCggJHdwX3VwbG9hZF9kaXJbJ3N1YmRpciddICkgKSB7CgkJJHdwX3NldHRpbmdzW10gPSBhcn
JheSggJ1VwbG9hZCBTdWJkaXJlY3RvcnknLCAkd3BfdXBsb2FkX2Rpclsnc3ViZGlyJ10sICd3cF91cGxvY
WRfZGlyKCknICk7Cgl9CglpZiAoIGlzc2V0KCAkd3BfdXBsb2FkX2RpclsnYmFzZXVybCddICkgKSB7CgkJ
JHdwX3NldHRpbmdzW10gPSBhcnJheSggJ1VwbG9hZCBCYXNlIFVSTCcsICR3cF91cGxvYWRfZGlyWydiYXN
ldXJsJ10sICd3cF91cGxvYWRfZGlyKCknICk7Cgl9CglpZiAoIGlzc2V0KCAkd3BfdXBsb2FkX2RpclsnYm
FzZWRpciddICkgKSB7CgkJJHdwX3NldHRpbmdzW10gPSBhcnJheSggJ1VwbG9hZCBCYXNlIERpcmVjdG9ye
ScsICR3cF91cGxvYWRfZGlyWydiYXNlZGlyJ10sICd3cF91cGxvYWRfZGlyKCknICk7Cgl9Cgkkd3Bfc2V0
dGluZ3NbXSA9IGFycmF5KCAnU2l0ZSBVUkwnLCBzaXRlX3VybCgpLCAnc2l0ZV91cmwoKScgKTsKCSR3cF9
zZXR0aW5nc1tdID0gYXJyYXkoICdIb21lIFVSTCcsIGhvbWVfdXJsKCksICdob21lX3VybCgpJyApOwoJJH
dwX3NldHRpbmdzW10gPSBhcnJheSggJ1dvcmRQcmVzcyBSb290IFBhdGgnLCBBQlNQQVRILCAnQUJTUEFUS
CcgKTsKCgkvLyBNdWx0aXNpdGUgZXh0cmFzLgoJJHdwX3NldHRpbmdzX211bHRpc2l0ZSA9IGFycmF5KCk7
CglpZiAoIGlzX211bHRpc2l0ZSgpICkgewoJCSR3cF9zZXR0aW5nc1tdID0gYXJyYXkoICdOZXR3b3JrIFN
pdGUgVVJMJywgbmV0d29ya19zaXRlX3VybCgpLCAnbmV0d29ya19zaXRlX3VybCgpJyApOwoJCSR3cF9zZX
R0aW5nc1tdID0gYXJyYXkoICdOZXR3b3JrIEhvbWUgVVJMJywgbmV0d29ya19ob21lX3VybCgpLCAnbmV0d
29ya19ob21lX3VybCgpJyApOwoJfQoKCSR3cF9zZXR0aW5nc1tdID0gYXJyYXkoICdCYWNrdXBCdWRkeSBs
b2NhbCBzdG9yYWdlJywgYmFja3VwYnVkZHlfY29yZTo6Z2V0QmFja3VwRGlyZWN0b3J5KCksICdCYWNrdXB
CdWRkeSBTZXR0aW5ncycgKTsKCSR3cF9zZXR0aW5nc1tdID0gYXJyYXkoICdCYWNrdXBCdWRkeSB0ZW1wb3
JhcnkgZmlsZXMnLCBiYWNrdXBidWRkeV9jb3JlOjpnZXRUZW1wRGlyZWN0b3J5KCksICdBQlNQQVRIICsgS
GFyZGNvZGVkIGxvY2F0aW9uJyApOwoJJHdwX3NldHRpbmdzW10gPSBhcnJheSggJ0JhY2t1cEJ1ZGR5IGxv
Z3MnLCBiYWNrdXBidWRkeV9jb3JlOjpnZXRMb2dEaXJlY3RvcnkoKSwgJ1VwbG9hZCBCYXNlICsgQmFja3V
wQnVkZHknICk7CgoJJHdwX3NldHRpbmdzW10gPSBhcnJheSggJ1RoZW1lcyByb290JywgYmFja3VwYnVkZH
lfY29yZTo6Z2V0X3RoZW1lc19yb290KCksICdiYWNrdXBidWRkeV9jb3JlOjpnZXRfdGhlbWVzX3Jvb3QoK
ScgKTsKCSR3cF9zZXR0aW5nc1tdID0gYXJyYXkoICdQbHVnaW5zIHJvb3QnLCBiYWNrdXBidWRkeV9jb3Jl
OjpnZXRfcGx1Z2luc19yb290KCksICdiYWNrdXBidWRkeV9jb3JlOjpnZXRfcGx1Z2luc19yb290KCknICk
7Cgkkd3Bfc2V0dGluZ3NbXSA9IGFycmF5KCAnTWVkaWEgcm9vdCcsIGJhY2t1cGJ1ZGR5X2NvcmU6OmdldF
9tZWRpYV9yb290KCksICdiYWNrdXBidWRkeV9jb3JlOjpnZXRfbWVkaWFfcm9vdCgpJyApOwoKCS8vIERpc
3BsYXkgV1Agc2V0dGluZ3MuCglwYl9iYWNrdXBidWRkeTo6JHVpLT5saXN0X3RhYmxlKAoJCSR3cF9zZXR0
aW5ncywKCQlhcnJheSgKCQkJJ2FjdGlvbicgID0+IHBiX2JhY2t1cGJ1ZGR5OjpwYWdlX3VybCgpLAoJCQk
nY29sdW1ucycgPT4gYXJyYXkoCgkJCQlfXyggJ1VSTHMgJiBQYXRocycsICdpdC1sMTBuLWJhY2t1cGJ1ZG
R5JyApLAoJCQkJX18oICdWYWx1ZScsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApLAoJCQkJX18oICdPYnRha
W5lZCB2aWEnLCAnaXQtbDEwbi1iYWNrdXBidWRkeScgKSwKCQkJKSwKCQkJJ2NzcycgICAgID0+ICd3aWR0
aDogMTAwJTsnLAoJCSkKCSk7CgoJcGJfYmFja3VwYnVkZHk6OiR1aS0+ZW5kX3RhYigpOwoKCS8vIFRoaXM
gcGFnZSBjYW4gdGFrZSBhIGJpdCB0byBydW4uCgkvLyBSdW5zIEFGVEVSIHNlcnZlciBpbmZvcm1hdGlvbi
BpcyBkaXNwbGF5ZWQgc28gd2UgY2FuIHZpZXcgdGhlIGRlZmF1bHQgbGltaXRzIGZvciB0aGUgc2VydmVyL
goJcGJfYmFja3VwYnVkZHk6OnNldF9ncmVlZHlfc2NyaXB0X2xpbWl0cygpOwoKCXBiX2JhY2t1cGJ1ZGR5
OjokdWktPnN0YXJ0X3RhYiggJ2RhdGFiYXNlJyApOwoKCQlyZXF1aXJlX29uY2UgJ3NlcnZlcl9pbmZvL2R
hdGFiYXNlLnBocCc7CgkJZWNobyAnPGJyPjxicj48YSBuYW1lPSJkYXRhYmFzZV9yZXBsYWNlIj48L2E+Jz
sKCQllY2hvICc8ZGl2IGNsYXNzPSJwYl9odGl0bGUiPkFkdmFuY2VkOiAnIC4gZXNjX2h0bWxfXyggJ0Rhd
GFiYXNlIE1hc3MgVGV4dCBSZXBsYWNlbWVudCcsICdpdC1sMTBuLWJhY2t1cGJ1ZGR5JyApIC4gJzwvZGl2
Pjxicj4nOwoJCXBiX2JhY2t1cGJ1ZGR5Ojpsb2FkX3ZpZXcoICdfc2VydmVyX3Rvb2xzLWRhdGFiYXNlX3J
lcGxhY2UnICk7CgoJcGJfYmFja3VwYnVkZHk6OiR1aS0+ZW5kX3RhYigpOwoKCXBiX2JhY2t1cGJ1ZGR5Oj
okdWktPnN0YXJ0X3RhYiggJ2ZpbGVzJyApOwoJCXJlcXVpcmVfb25jZSAnc2VydmVyX2luZm8vc2l0ZV9za
XplLnBocCc7CglwYl9iYWNrdXBidWRkeTo6JHVpLT5lbmRfdGFiKCk7CgoJcGJfYmFja3VwYnVkZHk6OiR1
aS0+c3RhcnRfdGFiKCAnY3JvbicgKTsKCQlyZXF1aXJlX29uY2UgJ3NlcnZlcl9pbmZvL2Nyb24ucGhwJzs
KCXBiX2JhY2t1cGJ1ZGR5OjokdWktPmVuZF90YWIoKTsKCgllY2hvICc8YnIgc3R5bGU9ImNsZWFyOiBib3
RoOyI+PGJyPjxicj4nOwoJcGJfYmFja3VwYnVkZHk6OiR1aS0+ZW5kX3RhYnMoKTsKCgkvLyBIYW5kbGVzI
HRoaWNrYm94IGF1dG8tcmVzaXppbmcuIEtlZXAgYXQgYm90dG9tIG9mIHBhZ2UgdG8gYXZvaWQgaXNzdWVz
LgoJaWYgKCAhIHdwX3NjcmlwdF9pcyggJ21lZGlhLXVwbG9hZCcgKSApIHsKCQl3cF9lbnF1ZXVlX3Njcml
wdCggJ21lZGlhLXVwbG9hZCcgKTsKCQl3cF9wcmludF9zY3JpcHRzKCAnbWVkaWEtdXBsb2FkJyApOwoJfQ
p9IGVsc2UgeyAvLyBJTlNJREUgSU1QT1JUQlVERFkuCglpZiAoICcnID09IHBiX2JhY2t1cGJ1ZGR5OjpfR
0VUKCAnc2tpcF9zZXJ2ZXJpbmZvJyApICkgeyAvLyBHaXZlIGEgd29ya2Fyb3VuZCB0byBza2lwIHRoaXMu
CgkJcmVxdWlyZV9vbmNlICdzZXJ2ZXJfaW5mby9zZXJ2ZXIucGhwJzsKCX0gZWxzZSB7CgkJZWNobyAne1N
raXBwaW5nIFNlcnZlciBJbmZvLiBzZWN0aW9uIGJhc2VkIG9uIHF1ZXJ5c3RyaW5nLn0nOwoJfQp9Cg==
###PACKDATA,FILE_END,/controllers/pages/server_tools.php,importbuddy/controllers/pa
ges/server_tools.php
###PACKDATA,FILE_START,/destinations/stash2/class.itx_helper2.php,importbuddy/lib/s
tash2/class.itx_helper2.php
PD9waHAKcmVxdWlyZV9vbmNlKCBkaXJuYW1lKCBfX0ZJTEVfXyApIC4gJy9jbGFzcy5pdGNyZWQucGhwJyA
pOwoKY2xhc3MgSVRYQVBJX0hlbHBlcjIgewoJCglwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfcGhwYXNzX2
hhc2hfcGFzc3dvcmQoICRwYXNzd29yZCApIHsKCQlpZiAoICEgY2xhc3NfZXhpc3RzKCAnUGFzc3dvcmRIY
XNoJyApICkgewoJCQlyZXF1aXJlX29uY2UoIGRpcm5hbWUoIF9fRklMRV9fICkgLiAnL2NsYXNzLXBocGFz
cy5waHAnKTsKCQl9CgkJCgkJJGhhc2hlciA9IG5ldyBQYXNzd29yZEhhc2goOCwgdHJ1ZSk7CgkJJGhhc2g
gPSAkaGFzaGVyLT5IYXNoUGFzc3dvcmQoJHBhc3N3b3JkKTsKCQkKCQlyZXR1cm4gJGhhc2g7CgkJCgl9Cg
kKCS8vIFdBUzogZ2V0X3dvcmRwcmVzc19waHBhc3MoKS4KCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0X
2FjY2Vzc190b2tlbigkdXNlciwgJHBhc3MsICRzaXRlLCAkd3ApIHsKCQlpZiAoICEgY2xhc3NfZXhpc3Rz
KCAnUGFzc3dvcmRIYXNoJyApICkgewoJCQlyZXF1aXJlX29uY2UoIGRpcm5hbWUoIF9fRklMRV9fICkgLiA
nL2NsYXNzLXBocGFzcy5waHAnKTsKCQl9CgkJCgkJJHNvdXJjZV9zdHJpbmcgPSAkcGFzcyAuICR1c2VyIC
4gc3RyX3JlcGxhY2UoICd3d3cuJywgJycsICRzaXRlICkgLiAkd3A7CgkJJHNhbHRlZF9zdHJpbmcyID0gc
3Vic3RyKCAkc291cmNlX3N0cmluZywgMCwgbWF4KCBzdHJsZW4oICRwYXNzICksIDUxMiApICk7ICAgICAv
LyAgbmV3IGF1dGggd2l0aCBoYXNoZWQgcGFzc3dvcmRzCgkJCgkJcmV0dXJuIHNlbGY6Ol9waHBhc3NfaGF
zaF9wYXNzd29yZCggJHNhbHRlZF9zdHJpbmcyICk7Cgl9CgkKfSAvLyBFbmQgY2xhc3Mu
###PACKDATA,FILE_END,/destinations/stash2/class.itx_helper2.php,importbuddy/lib/sta
sh2/class.itx_helper2.php
###PACKDATA,FILE_START,/destinations/stash2/class.itcred.php,importbuddy/lib/stash2
/class.itcred.php
PD9waHAKCiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAKICAgIGNsYXNzIGlUaGVtZXNfQ3JlZGVudGlhbH
MKICAgIHsKICAgIAogICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAKICAgICAgICBwcm90ZWN0
ZWQgJGhhc2ggICAgICAgICAgICAgPSAnc2hhMjU2JzsgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICA
gICAKICAgICAgICBwcm90ZWN0ZWQgJHNhbHRfcGFkZGluZyAgICAgPSAnd2RIVndVJkhjWWNXbmxsbyVrVF
VVbnhwU2N5NCVJQ00yOSc7CiAgICAgICAgCiAgICAgICAgcHJvdGVjdGVkICRpdGVyYXRpb25fY291bnQgI
D0gMTMxMDcyOwogICAgICAgIAogICAgICAgIHByb3RlY3RlZCAka2V5X2xlbmd0aCAgICAgICA9IDY0Owog
ICAgICAgICAgICAgICAKICAgICAgICBwcm90ZWN0ZWQgJHBhc3N3b3JkOwogICAgICAgIAogICAgICAgIC8
vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS
0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJ
HVzZXJuYW1lLCAkcGFzc3dvcmQsICRvcHRpb25zID0gYXJyYXkoKSkKICAgICAgICB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAo
gICAgICAgICAgICAkdGhpcy0+dXNlcm5hbWUgPSAkdXNlcm5hbWU7CiAgICAgICAgICAgIAogICAgICAgIC
AgICAkdGhpcy0+cGFzc3dvcmQgPSAkcGFzc3dvcmQ7CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgI
CAgICAgICAgaWYoIWVtcHR5KCRvcHRpb25zWydoYXNoJ10pKQogICAgICAgICAgICAgICAgJHRoaXMtPmhh
c2ggICAgICAgICAgICAgPSBzdHJ0b2xvd2VyKHRyaW0oJG9wdGlvbnNbJ2hhc2gnXSkpOwogICAgICAgICA
gICAKICAgICAgICAgICAgaWYoIWVtcHR5KCRvcHRpb25zWydpdGVyYXRpb25zJ10pKQogICAgICAgICAgIC
AgICAgJHRoaXMtPml0ZXJhdGlvbl9jb3VudCAgPSBpbnR2YWwoJG9wdGlvbnNbJ2l0ZXJhdGlvbnMnXSk7C
iAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCFlbXB0eSgkb3B0
aW9uc1snc2FsdCddKSkKICAgICAgICAgICAgICAgICR0aGlzLT5zYWx0X3BhZGRpbmcgICAgID0gJG9wdGl
vbnNbJ3NhbHQnXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmKCFlbXB0eSgkb3B0aW9uc1sna2V5X2
xlbmd0aCddKSkKICAgICAgICAgICAgICAgICR0aGlzLT5rZXlfbGVuZ3RoICAgICAgID0gaW50dmFsKCRvc
HRpb25zWydrZXlfbGVuZ3RoJ10pOwogICAgICAgIAogICAgICAgIH0gICAgICAgICAgICAgICAgCiAgICAg
ICAgCiAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgCiAgICAgICAgCiAgICAgICAgcHVibGljIH
N0YXRpYyBmdW5jdGlvbiBnZXRfcGFzc3dvcmRfaGFzaCgkdXNlcm5hbWUsICRwYXNzd29yZCwgJG9wdGlvb
nMgPSBhcnJheSgpKQogICAgICAgIHsKICAgICAgICAgICAgJGhhc2hlciA9IG5ldyBpVGhlbWVzX0NyZWRl
bnRpYWxzKCR1c2VybmFtZSwgJHBhc3N3b3JkLCAkb3B0aW9ucyk7CiAgICAgICAgICAgIAogICAgICAgICA
gICByZXR1cm4gJGhhc2hlci0+Z2V0X3Bia2RmMigpOwogICAgICAgICAgICAKICAgICAgICB9ICAgICAgIC
AgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAKICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAg
ICAgICAgCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIGdldF9zYWx0KCkKICAgICAgICB7CiAgICAgICAgICA
gIAogICAgICAgICAgICByZXR1cm4gc3RydG9sb3dlcih0cmltKCR0aGlzLT51c2VybmFtZSkpIC4gJHRoaX
MtPnNhbHRfcGFkZGluZzsgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgfSAgICAgICAgICAgI
CAgICAKICAgICAgICAKICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgCiAgICAgICAgcHVibGl
jIGZ1bmN0aW9uIGdldF9wYmtkZjIoKQogICAgICAgIHsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldH
VybiAkdGhpcy0+cGJrZGYyKCR0aGlzLT5oYXNoLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
CAgJHRoaXMtPnBhc3N3b3JkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmdl
dF9zYWx0KCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aXRlcmF0aW9uX2N
vdW50LCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmtleV9sZW5ndGggLyAyLC
AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UpOwogICAgICAgICAgICAKICAgICAgI
CB9CiAgICAgICAgCiAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgICAgICAgCiAgICAgICAgCiAgICAgICA
gLyoKICAgICAgICAgKiBQQktERjIga2V5IGRlcml2YXRpb24gZnVuY3Rpb24gYXMgZGVmaW5lZCBieSBSU0
EncyBQS0NTICM1OiBodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMjg5OC50eHQKICAgICAgICAgKiAkY
Wxnb3JpdGhtIC0gVGhlIGhhc2ggYWxnb3JpdGhtIHRvIHVzZS4gUmVjb21tZW5kZWQ6IFNIQTI1NgogICAg
ICAgICAqICRwYXNzd29yZCAtIFRoZSBwYXNzd29yZC4KICAgICAgICAgKiAkc2FsdCAtIEEgc2FsdCB0aGF
0IGlzIHVuaXF1ZSB0byB0aGUgcGFzc3dvcmQuCiAgICAgICAgICogJGNvdW50IC0gSXRlcmF0aW9uIGNvdW
50LiBIaWdoZXIgaXMgYmV0dGVyLCBidXQgc2xvd2VyLiBSZWNvbW1lbmRlZDogQXQgbGVhc3QgMTAwMC4KI
CAgICAgICAgKiAka2V5X2xlbmd0aCAtIFRoZSBsZW5ndGggb2YgdGhlIGRlcml2ZWQga2V5IGluIGJ5dGVz
LgogICAgICAgICAqICRyYXdfb3V0cHV0IC0gSWYgdHJ1ZSwgdGhlIGtleSBpcyByZXR1cm5lZCBpbiByYXc
gYmluYXJ5IGZvcm1hdC4gSGV4IGVuY29kZWQgb3RoZXJ3aXNlLgogICAgICAgICAqIFJldHVybnM6IEEgJG
tleV9sZW5ndGgtYnl0ZSBrZXkgZGVyaXZlZCBmcm9tIHRoZSBwYXNzd29yZCBhbmQgc2FsdC4KICAgICAgI
CAgKgogICAgICAgICAqIFRlc3QgdmVjdG9ycyBjYW4gYmUgZm91bmQgaGVyZTogaHR0cHM6Ly93d3cuaWV0
Zi5vcmcvcmZjL3JmYzYwNzAudHh0CiAgICAgICAgICoKICAgICAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9
uIG9mIFBCS0RGMiB3YXMgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IGh0dHBzOi8vZGVmdXNlLmNhCiAgICAgIC
AgICogV2l0aCBpbXByb3ZlbWVudHMgYnkgaHR0cDovL3d3dy52YXJpYXRpb25zLW9mLXNoYWRvdy5jb20KI
CAgICAgICAgKi8KICAgICAgICBwdWJsaWMgZnVuY3Rpb24gcGJrZGYyKCRhbGdvcml0aG0sICRwYXNzd29y
ZCwgJHNhbHQsICRjb3VudCwgJGtleV9sZW5ndGgsICRyYXdfb3V0cHV0ID0gZmFsc2UpCiAgICAgICAgewo
gICAgICAgICAgICAKICAgICAgICAgICAgJGFsZ29yaXRobSA9IHN0cnRvbG93ZXIoJGFsZ29yaXRobSk7Ci
AgICAgICAgICAgIAogICAgICAgICAgICBpZighaW5fYXJyYXkoJGFsZ29yaXRobSwgaGFzaF9hbGdvcygpL
CB0cnVlKSkKICAgICAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJ1BCS0RGMiBFUlJPUjogSW52YWxpZCBo
YXNoIGFsZ29yaXRobS4nLCBFX1VTRVJfRVJST1IpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYoJGN
vdW50IDw9IDAgfHwgJGtleV9sZW5ndGggPD0gMCkKICAgICAgICAgICAgICAgIHRyaWdnZXJfZXJyb3IoJ1
BCS0RGMiBFUlJPUjogSW52YWxpZCBwYXJhbWV0ZXJzLicsIEVfVVNFUl9FUlJPUik7CiAgICAgICAgICAgI
CAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgICRoYXNoX2xlbmd0aCA9IHN0cmxlbihoYXNoKCRhbGdv
cml0aG0sICcnLCB0cnVlKSk7CiAgICAgICAgICAgICRibG9ja19jb3VudCA9IGNlaWwoJGtleV9sZW5ndGg
gLyAkaGFzaF9sZW5ndGgpOwogICAgICAgIAogICAgICAgICAgICAkb3V0cHV0ID0gJyc7CiAgICAgICAgIC
AgIAogICAgICAgICAgICBmb3IoJGkgPSAxOyAkaSA8PSAkYmxvY2tfY291bnQ7ICRpKyspIAogICAgICAgI
CAgICB7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vICRpIGVuY29kZWQgYXMgNCBieXRl
cywgYmlnIGVuZGlhbi4KICAgICAgICAgICAgICAgICRsYXN0ID0gJHNhbHQgLiBwYWNrKCJOIiwgJGkpOwo
gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBmaXJzdCBpdGVyYXRpb24KICAgICAgICAgIC
AgICAgICRsYXN0ID0gJHhvcnN1bSA9IGhhc2hfaG1hYygkYWxnb3JpdGhtLCAkbGFzdCwgJHBhc3N3b3JkL
CB0cnVlKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gcGVyZm9ybSB0aGUgb3RoZXIg
JGNvdW50IC0gMSBpdGVyYXRpb25zCiAgICAgICAgICAgICAgICBmb3IgKCRqID0gMTsgJGogPCAkY291bnQ
7ICRqKyspIAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICR4b3JzdW0gXj0gKCRsYX
N0ID0gaGFzaF9obWFjKCRhbGdvcml0aG0sICRsYXN0LCAkcGFzc3dvcmQsIHRydWUpKTsKICAgICAgICAgI
CAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgJG91dHB1dCAuPSAkeG9yc3VtOwog
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgaWYoJHJhd19vdXR
wdXQpCiAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RyKCRvdXRwdXQsIDAsICRrZXlfbGVuZ3RoKTsKIC
AgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgcmV0dXJuIGJpbjJoZXgoc3Vic3RyKCRvdXRwdXQsI
DAsICRrZXlfbGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIC8vLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0
tLS0tLS0tLS0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIH0KICAgIAogICAgLy8tLS
0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tL
S0tLS0tLS0tLS0tLQogICAgCg==
###PACKDATA,FILE_END,/destinations/stash2/class.itcred.php,importbuddy/lib/stash2/c
lass.itcred.php
###PACKDATA,FILE_START,/destinations/stash2/class-
phpass.php,importbuddy/lib/stash2/class-phpass.php
PD9waHAKLyoqCiAqIFBvcnRhYmxlIFBIUCBwYXNzd29yZCBoYXNoaW5nIGZyYW1ld29yay4KICogQHBhY2t
hZ2UgcGhwYXNzCiAqIEBzaW5jZSAyLjUuMAogKiBAdmVyc2lvbiAwLjMgLyBXb3JkUHJlc3MKICogQGxpbm
sgaHR0cDovL3d3dy5vcGVud2FsbC5jb20vcGhwYXNzLwogKi8KCiMKIyBXcml0dGVuIGJ5IFNvbGFyIERlc
2lnbmVyIDxzb2xhciBhdCBvcGVud2FsbC5jb20+IGluIDIwMDQtMjAwNiBhbmQgcGxhY2VkIGluCiMgdGhl
IHB1YmxpYyBkb21haW4uICBSZXZpc2VkIGluIHN1YnNlcXVlbnQgeWVhcnMsIHN0aWxsIHB1YmxpYyBkb21
haW4uCiMKIyBUaGVyZSdzIGFic29sdXRlbHkgbm8gd2FycmFudHkuCiMKIyBQbGVhc2UgYmUgc3VyZSB0by
B1cGRhdGUgdGhlIFZlcnNpb24gbGluZSBpZiB5b3UgZWRpdCB0aGlzIGZpbGUgaW4gYW55IHdheS4KIyBJd
CBpcyBzdWdnZXN0ZWQgdGhhdCB5b3UgbGVhdmUgdGhlIG1haW4gdmVyc2lvbiBudW1iZXIgaW50YWN0LCBi
dXQgaW5kaWNhdGUKIyB5b3VyIHByb2plY3QgbmFtZSAoYWZ0ZXIgdGhlIHNsYXNoKSBhbmQgYWRkIHlvdXI
gb3duIHJldmlzaW9uIGluZm9ybWF0aW9uLgojCiMgUGxlYXNlIGRvIG5vdCBjaGFuZ2UgdGhlICJwcml2YX
RlIiBwYXNzd29yZCBoYXNoaW5nIG1ldGhvZCBpbXBsZW1lbnRlZCBpbgojIGhlcmUsIHRoZXJlYnkgbWFra
W5nIHlvdXIgaGFzaGVzIGluY29tcGF0aWJsZS4gIEhvd2V2ZXIsIGlmIHlvdSBtdXN0LCBwbGVhc2UKIyBj
aGFuZ2UgdGhlIGhhc2ggdHlwZSBpZGVudGlmaWVyICh0aGUgIiRQJCIpIHRvIHNvbWV0aGluZyBkaWZmZXJ
lbnQuCiMKIyBPYnZpb3VzbHksIHNpbmNlIHRoaXMgY29kZSBpcyBpbiB0aGUgcHVibGljIGRvbWFpbiwgdG
hlIGFib3ZlIGFyZSBub3QKIyByZXF1aXJlbWVudHMgKHRoZXJlIGNhbiBiZSBub25lKSwgYnV0IG1lcmVse
SBzdWdnZXN0aW9ucy4KIwoKLyoqCiAqIFBvcnRhYmxlIFBIUCBwYXNzd29yZCBoYXNoaW5nIGZyYW1ld29y
ay4KICoKICogQHBhY2thZ2UgcGhwYXNzCiAqIEB2ZXJzaW9uIDAuMyAvIFdvcmRQcmVzcwogKiBAbGluayB
odHRwOi8vd3d3Lm9wZW53YWxsLmNvbS9waHBhc3MvCiAqIEBzaW5jZSAyLjUuMAogKi8KY2xhc3MgUGFzc3
dvcmRIYXNoIHsKCXZhciAkaXRvYTY0OwoJdmFyICRpdGVyYXRpb25fY291bnRfbG9nMjsKCXZhciAkcG9yd
GFibGVfaGFzaGVzOwoJdmFyICRyYW5kb21fc3RhdGU7CgoJLyoqCgkgKiBQSFA1IGNvbnN0cnVjdG9yLgoJ
ICovCglmdW5jdGlvbiBfX2NvbnN0cnVjdCggJGl0ZXJhdGlvbl9jb3VudF9sb2cyLCAkcG9ydGFibGVfaGF
zaGVzICkKCXsKCQkkdGhpcy0+aXRvYTY0ID0gJy4vMDEyMzQ1Njc4OUFCQ0RFRkdISUpLTE1OT1BRUlNUVV
ZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonOwoKCQlpZiAoJGl0ZXJhdGlvbl9jb3VudF9sb2cyI
DwgNCB8fCAkaXRlcmF0aW9uX2NvdW50X2xvZzIgPiAzMSkKCQkJJGl0ZXJhdGlvbl9jb3VudF9sb2cyID0g
ODsKCQkkdGhpcy0+aXRlcmF0aW9uX2NvdW50X2xvZzIgPSAkaXRlcmF0aW9uX2NvdW50X2xvZzI7CgoJCSR
0aGlzLT5wb3J0YWJsZV9oYXNoZXMgPSAkcG9ydGFibGVfaGFzaGVzOwoKCQkkdGhpcy0+cmFuZG9tX3N0YX
RlID0gbWljcm90aW1lKCkgLiB1bmlxaWQocmFuZCgpLCBUUlVFKTsgLy8gcmVtb3ZlZCBnZXRteXBpZCgpI
GZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMKCX0KCgkvKioKCSAqIFBIUDQgY29uc3RydWN0b3IuCgkgKi8K
CXB1YmxpYyBmdW5jdGlvbiBQYXNzd29yZEhhc2goICRpdGVyYXRpb25fY291bnRfbG9nMiwgJHBvcnRhYmx
lX2hhc2hlcyApIHsKCQlzZWxmOjpfX2NvbnN0cnVjdCggJGl0ZXJhdGlvbl9jb3VudF9sb2cyLCAkcG9ydG
FibGVfaGFzaGVzICk7Cgl9CgoJZnVuY3Rpb24gZ2V0X3JhbmRvbV9ieXRlcygkY291bnQpCgl7CgkJJG91d
HB1dCA9ICcnOwoJCWlmICggQGlzX3JlYWRhYmxlKCcvZGV2L3VyYW5kb20nKSAmJgoJCSAgICAoJGZoID0g
QGZvcGVuKCcvZGV2L3VyYW5kb20nLCAncmInKSkpIHsKCQkJJG91dHB1dCA9IGZyZWFkKCRmaCwgJGNvdW5
0KTsKCQkJZmNsb3NlKCRmaCk7CgkJfQoKCQlpZiAoc3RybGVuKCRvdXRwdXQpIDwgJGNvdW50KSB7CgkJCS
RvdXRwdXQgPSAnJzsKCQkJZm9yICgkaSA9IDA7ICRpIDwgJGNvdW50OyAkaSArPSAxNikgewoJCQkJJHRoa
XMtPnJhbmRvbV9zdGF0ZSA9CgkJCQkgICAgbWQ1KG1pY3JvdGltZSgpIC4gJHRoaXMtPnJhbmRvbV9zdGF0
ZSk7CgkJCQkkb3V0cHV0IC49CgkJCQkgICAgcGFjaygnSConLCBtZDUoJHRoaXMtPnJhbmRvbV9zdGF0ZSk
pOwoJCQl9CgkJCSRvdXRwdXQgPSBzdWJzdHIoJG91dHB1dCwgMCwgJGNvdW50KTsKCQl9CgoJCXJldHVybi
Akb3V0cHV0OwoJfQoKCWZ1bmN0aW9uIGVuY29kZTY0KCRpbnB1dCwgJGNvdW50KQoJewoJCSRvdXRwdXQgP
SAnJzsKCQkkaSA9IDA7CgkJZG8gewoJCQkkdmFsdWUgPSBvcmQoJGlucHV0WyRpKytdKTsKCQkJJG91dHB1
dCAuPSAkdGhpcy0+aXRvYTY0WyR2YWx1ZSAmIDB4M2ZdOwoJCQlpZiAoJGkgPCAkY291bnQpCgkJCQkkdmF
sdWUgfD0gb3JkKCRpbnB1dFskaV0pIDw8IDg7CgkJCSRvdXRwdXQgLj0gJHRoaXMtPml0b2E2NFsoJHZhbH
VlID4+IDYpICYgMHgzZl07CgkJCWlmICgkaSsrID49ICRjb3VudCkKCQkJCWJyZWFrOwoJCQlpZiAoJGkgP
CAkY291bnQpCgkJCQkkdmFsdWUgfD0gb3JkKCRpbnB1dFskaV0pIDw8IDE2OwoJCQkkb3V0cHV0IC49ICR0
aGlzLT5pdG9hNjRbKCR2YWx1ZSA+PiAxMikgJiAweDNmXTsKCQkJaWYgKCRpKysgPj0gJGNvdW50KQoJCQk
JYnJlYWs7CgkJCSRvdXRwdXQgLj0gJHRoaXMtPml0b2E2NFsoJHZhbHVlID4+IDE4KSAmIDB4M2ZdOwoJCX
0gd2hpbGUgKCRpIDwgJGNvdW50KTsKCgkJcmV0dXJuICRvdXRwdXQ7Cgl9CgoJZnVuY3Rpb24gZ2Vuc2Fsd
F9wcml2YXRlKCRpbnB1dCkKCXsKCQkkb3V0cHV0ID0gJyRQJCc7CgkJJG91dHB1dCAuPSAkdGhpcy0+aXRv
YTY0W21pbigkdGhpcy0+aXRlcmF0aW9uX2NvdW50X2xvZzIgKwoJCQkoKFBIUF9WRVJTSU9OID49ICc1Jyk
gPyA1IDogMyksIDMwKV07CgkJJG91dHB1dCAuPSAkdGhpcy0+ZW5jb2RlNjQoJGlucHV0LCA2KTsKCgkJcm
V0dXJuICRvdXRwdXQ7Cgl9CgoJZnVuY3Rpb24gY3J5cHRfcHJpdmF0ZSgkcGFzc3dvcmQsICRzZXR0aW5nK
QoJewoJCSRvdXRwdXQgPSAnKjAnOwoJCWlmIChzdWJzdHIoJHNldHRpbmcsIDAsIDIpID09ICRvdXRwdXQp
CgkJCSRvdXRwdXQgPSAnKjEnOwoKCQkkaWQgPSBzdWJzdHIoJHNldHRpbmcsIDAsIDMpOwoJCSMgV2UgdXN
lICIkUCQiLCBwaHBCQjMgdXNlcyAiJEgkIiBmb3IgdGhlIHNhbWUgdGhpbmcKCQlpZiAoJGlkICE9ICckUC
QnICYmICRpZCAhPSAnJEgkJykKCQkJcmV0dXJuICRvdXRwdXQ7CgoJCSRjb3VudF9sb2cyID0gc3RycG9zK
CR0aGlzLT5pdG9hNjQsICRzZXR0aW5nWzNdKTsKCQlpZiAoJGNvdW50X2xvZzIgPCA3IHx8ICRjb3VudF9s
b2cyID4gMzApCgkJCXJldHVybiAkb3V0cHV0OwoKCQkkY291bnQgPSAxIDw8ICRjb3VudF9sb2cyOwoKCQk
kc2FsdCA9IHN1YnN0cigkc2V0dGluZywgNCwgOCk7CgkJaWYgKHN0cmxlbigkc2FsdCkgIT0gOCkKCQkJcm
V0dXJuICRvdXRwdXQ7CgoJCSMgV2UncmUga2luZCBvZiBmb3JjZWQgdG8gdXNlIE1ENSBoZXJlIHNpbmNlI
Gl0J3MgdGhlIG9ubHkKCQkjIGNyeXB0b2dyYXBoaWMgcHJpbWl0aXZlIGF2YWlsYWJsZSBpbiBhbGwgdmVy
c2lvbnMgb2YgUEhQCgkJIyBjdXJyZW50bHkgaW4gdXNlLiAgVG8gaW1wbGVtZW50IG91ciBvd24gbG93LWx
ldmVsIGNyeXB0bwoJCSMgaW4gUEhQIHdvdWxkIHJlc3VsdCBpbiBtdWNoIHdvcnNlIHBlcmZvcm1hbmNlIG
FuZAoJCSMgY29uc2VxdWVudGx5IGluIGxvd2VyIGl0ZXJhdGlvbiBjb3VudHMgYW5kIGhhc2hlcyB0aGF0I
GFyZQoJCSMgcXVpY2tlciB0byBjcmFjayAoYnkgbm9uLVBIUCBjb2RlKS4KCQlpZiAoUEhQX1ZFUlNJT04g
Pj0gJzUnKSB7CgkJCSRoYXNoID0gbWQ1KCRzYWx0IC4gJHBhc3N3b3JkLCBUUlVFKTsKCQkJZG8gewoJCQk
JJGhhc2ggPSBtZDUoJGhhc2ggLiAkcGFzc3dvcmQsIFRSVUUpOwoJCQl9IHdoaWxlICgtLSRjb3VudCk7Cg
kJfSBlbHNlIHsKCQkJJGhhc2ggPSBwYWNrKCdIKicsIG1kNSgkc2FsdCAuICRwYXNzd29yZCkpOwoJCQlkb
yB7CgkJCQkkaGFzaCA9IHBhY2soJ0gqJywgbWQ1KCRoYXNoIC4gJHBhc3N3b3JkKSk7CgkJCX0gd2hpbGUg
KC0tJGNvdW50KTsKCQl9CgoJCSRvdXRwdXQgPSBzdWJzdHIoJHNldHRpbmcsIDAsIDEyKTsKCQkkb3V0cHV
0IC49ICR0aGlzLT5lbmNvZGU2NCgkaGFzaCwgMTYpOwoKCQlyZXR1cm4gJG91dHB1dDsKCX0KCglmdW5jdG
lvbiBnZW5zYWx0X2V4dGVuZGVkKCRpbnB1dCkKCXsKCQkkY291bnRfbG9nMiA9IG1pbigkdGhpcy0+aXRlc
mF0aW9uX2NvdW50X2xvZzIgKyA4LCAyNCk7CgkJIyBUaGlzIHNob3VsZCBiZSBvZGQgdG8gbm90IHJldmVh
bCB3ZWFrIERFUyBrZXlzLCBhbmQgdGhlCgkJIyBtYXhpbXVtIHZhbGlkIHZhbHVlIGlzICgyKioyNCAtIDE
pIHdoaWNoIGlzIG9kZCBhbnl3YXkuCgkJJGNvdW50ID0gKDEgPDwgJGNvdW50X2xvZzIpIC0gMTsKCgkJJG
91dHB1dCA9ICdfJzsKCQkkb3V0cHV0IC49ICR0aGlzLT5pdG9hNjRbJGNvdW50ICYgMHgzZl07CgkJJG91d
HB1dCAuPSAkdGhpcy0+aXRvYTY0WygkY291bnQgPj4gNikgJiAweDNmXTsKCQkkb3V0cHV0IC49ICR0aGlz
LT5pdG9hNjRbKCRjb3VudCA+PiAxMikgJiAweDNmXTsKCQkkb3V0cHV0IC49ICR0aGlzLT5pdG9hNjRbKCR
jb3VudCA+PiAxOCkgJiAweDNmXTsKCgkJJG91dHB1dCAuPSAkdGhpcy0+ZW5jb2RlNjQoJGlucHV0LCAzKT
sKCgkJcmV0dXJuICRvdXRwdXQ7Cgl9CgoJZnVuY3Rpb24gZ2Vuc2FsdF9ibG93ZmlzaCgkaW5wdXQpCgl7C
gkJIyBUaGlzIG9uZSBuZWVkcyB0byB1c2UgYSBkaWZmZXJlbnQgb3JkZXIgb2YgY2hhcmFjdGVycyBhbmQg
YQoJCSMgZGlmZmVyZW50IGVuY29kaW5nIHNjaGVtZSBmcm9tIHRoZSBvbmUgaW4gZW5jb2RlNjQoKSBhYm9
2ZS4KCQkjIFdlIGNhcmUgYmVjYXVzZSB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gb3VyIGVuY29kZWQgc3RyaW
5nIHdpbGwKCQkjIG9ubHkgcmVwcmVzZW50IDIgYml0cy4gIFdoaWxlIHR3byBrbm93biBpbXBsZW1lbnRhd
GlvbnMgb2YKCQkjIGJjcnlwdCB3aWxsIGhhcHBpbHkgYWNjZXB0IGFuZCBjb3JyZWN0IGEgc2FsdCBzdHJp
bmcgd2hpY2gKCQkjIGhhcyB0aGUgNCB1bnVzZWQgYml0cyBzZXQgdG8gbm9uLXplcm8sIHdlIGRvIG5vdCB
3YW50IHRvIHRha2UKCQkjIGNoYW5jZXMgYW5kIHdlIGFsc28gZG8gbm90IHdhbnQgdG8gd2FzdGUgYW4gYW
RkaXRpb25hbCBieXRlCgkJIyBvZiBlbnRyb3B5LgoJCSRpdG9hNjQgPSAnLi9BQkNERUZHSElKS0xNTk9QU
VJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSc7CgoJCSRvdXRwdXQgPSAn
JDJhJCc7CgkJJG91dHB1dCAuPSBjaHIob3JkKCcwJykgKyAkdGhpcy0+aXRlcmF0aW9uX2NvdW50X2xvZzI
gLyAxMCk7CgkJJG91dHB1dCAuPSBjaHIob3JkKCcwJykgKyAkdGhpcy0+aXRlcmF0aW9uX2NvdW50X2xvZz
IgJSAxMCk7CgkJJG91dHB1dCAuPSAnJCc7CgoJCSRpID0gMDsKCQlkbyB7CgkJCSRjMSA9IG9yZCgkaW5wd
XRbJGkrK10pOwoJCQkkb3V0cHV0IC49ICRpdG9hNjRbJGMxID4+IDJdOwoJCQkkYzEgPSAoJGMxICYgMHgw
MykgPDwgNDsKCQkJaWYgKCRpID49IDE2KSB7CgkJCQkkb3V0cHV0IC49ICRpdG9hNjRbJGMxXTsKCQkJCWJ
yZWFrOwoJCQl9CgoJCQkkYzIgPSBvcmQoJGlucHV0WyRpKytdKTsKCQkJJGMxIHw9ICRjMiA+PiA0OwoJCQ
kkb3V0cHV0IC49ICRpdG9hNjRbJGMxXTsKCQkJJGMxID0gKCRjMiAmIDB4MGYpIDw8IDI7CgoJCQkkYzIgP
SBvcmQoJGlucHV0WyRpKytdKTsKCQkJJGMxIHw9ICRjMiA+PiA2OwoJCQkkb3V0cHV0IC49ICRpdG9hNjRb
JGMxXTsKCQkJJG91dHB1dCAuPSAkaXRvYTY0WyRjMiAmIDB4M2ZdOwoJCX0gd2hpbGUgKDEpOwoKCQlyZXR
1cm4gJG91dHB1dDsKCX0KCglmdW5jdGlvbiBIYXNoUGFzc3dvcmQoJHBhc3N3b3JkKQoJewoJCWlmICggc3
RybGVuKCAkcGFzc3dvcmQgKSA+IDQwOTYgKSB7CgkJCXJldHVybiAnKic7CgkJfQoKCQkkcmFuZG9tID0gJ
yc7CgoJCWlmIChDUllQVF9CTE9XRklTSCA9PSAxICYmICEkdGhpcy0+cG9ydGFibGVfaGFzaGVzKSB7CgkJ
CSRyYW5kb20gPSAkdGhpcy0+Z2V0X3JhbmRvbV9ieXRlcygxNik7CgkJCSRoYXNoID0KCQkJICAgIGNyeXB
0KCRwYXNzd29yZCwgJHRoaXMtPmdlbnNhbHRfYmxvd2Zpc2goJHJhbmRvbSkpOwoJCQlpZiAoc3RybGVuKC
RoYXNoKSA9PSA2MCkKCQkJCXJldHVybiAkaGFzaDsKCQl9CgoJCWlmIChDUllQVF9FWFRfREVTID09IDEgJ
iYgISR0aGlzLT5wb3J0YWJsZV9oYXNoZXMpIHsKCQkJaWYgKHN0cmxlbigkcmFuZG9tKSA8IDMpCgkJCQkk
cmFuZG9tID0gJHRoaXMtPmdldF9yYW5kb21fYnl0ZXMoMyk7CgkJCSRoYXNoID0KCQkJICAgIGNyeXB0KCR
wYXNzd29yZCwgJHRoaXMtPmdlbnNhbHRfZXh0ZW5kZWQoJHJhbmRvbSkpOwoJCQlpZiAoc3RybGVuKCRoYX
NoKSA9PSAyMCkKCQkJCXJldHVybiAkaGFzaDsKCQl9CgoJCWlmIChzdHJsZW4oJHJhbmRvbSkgPCA2KQoJC
QkkcmFuZG9tID0gJHRoaXMtPmdldF9yYW5kb21fYnl0ZXMoNik7CgkJJGhhc2ggPQoJCSAgICAkdGhpcy0+
Y3J5cHRfcHJpdmF0ZSgkcGFzc3dvcmQsCgkJICAgICR0aGlzLT5nZW5zYWx0X3ByaXZhdGUoJHJhbmRvbSk
pOwoJCWlmIChzdHJsZW4oJGhhc2gpID09IDM0KQoJCQlyZXR1cm4gJGhhc2g7CgoJCSMgUmV0dXJuaW5nIC
cqJyBvbiBlcnJvciBpcyBzYWZlIGhlcmUsIGJ1dCB3b3VsZCBfbm90XyBiZSBzYWZlCgkJIyBpbiBhIGNye
XB0KDMpLWxpa2UgZnVuY3Rpb24gdXNlZCBfYm90aF8gZm9yIGdlbmVyYXRpbmcgbmV3CgkJIyBoYXNoZXMg
YW5kIGZvciB2YWxpZGF0aW5nIHBhc3N3b3JkcyBhZ2FpbnN0IGV4aXN0aW5nIGhhc2hlcy4KCQlyZXR1cm4
gJyonOwoJfQoKCWZ1bmN0aW9uIENoZWNrUGFzc3dvcmQoJHBhc3N3b3JkLCAkc3RvcmVkX2hhc2gpCgl7Cg
kJaWYgKCBzdHJsZW4oICRwYXNzd29yZCApID4gNDA5NiApIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCgkJJ
Ghhc2ggPSAkdGhpcy0+Y3J5cHRfcHJpdmF0ZSgkcGFzc3dvcmQsICRzdG9yZWRfaGFzaCk7CgkJaWYgKCRo
YXNoWzBdID09ICcqJykKCQkJJGhhc2ggPSBjcnlwdCgkcGFzc3dvcmQsICRzdG9yZWRfaGFzaCk7CgoJCXJ
ldHVybiAkaGFzaCA9PT0gJHN0b3JlZF9oYXNoOwoJfQp9
###PACKDATA,FILE_END,/destinations/stash2/class-
phpass.php,importbuddy/lib/stash2/class-phpass.php
###PACKDATA,FILE_START,/destinations/_s3lib/aws-
sdk/lib/requestcore/LICENSE,importbuddy/lib/requestcore/LICENSE
Q29weXJpZ2h0IChjKSAyMDA2LTIwMTAgUnlhbiBQYXJtYW4sIEZvbGVlbyBJbmMuLCBhbmQgY29udHJpYnV
0b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgoKUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW
5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCnBlcm1pdHRlZCBwc
m92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgoKCSogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGl
zIGxpc3Qgb2YKCSAgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoKCSogUmVkaX
N0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgb
m90aWNlLCB0aGlzIGxpc3QKCSAgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKCSAgcHJvdmlkZWQgd2l0aCB
0aGUgZGlzdHJpYnV0aW9uLgoKCSogTmVpdGhlciB0aGUgbmFtZSBvZiBSeWFuIFBhcm1hbiwgRm9sZWVvIE
luYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvCgkgIGVuZG9yc
2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4KCSAgcGVybWlzc2lvbi4KClRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlk
gVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1
MKT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNU
ExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkKQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTER
FUlMKQU5EIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJRE
VOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HL
CBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEh
PV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUk
FDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKT1RIRVJXS
VNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRQpQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
###PACKDATA,FILE_END,/destinations/_s3lib/aws-
sdk/lib/requestcore/LICENSE,importbuddy/lib/requestcore/LICENSE
###PACKDATA,FILE_START,/destinations/_s3lib/aws-
sdk/lib/requestcore/README.md,importbuddy/lib/requestcore/README.md
IyBSZXF1ZXN0Q29yZQoKUmVxdWVzdENvcmUgaXMgYSBsaWdodHdlaWdodCBjVVJMLWJhc2VkIEhUVFAgcmV
xdWVzdC9yZXNwb25zZSBjbGFzcyB0aGF0IGxldmVyYWdlcyBNdWx0aUN1cmwgZm9yIHBhcmFsbGVsIHJlcX
Vlc3RzLgoKIyMjIFBFQVIgSFRUUF9SZXF1ZXN0PwoKUmVxdWVzdENvcmUgd2FzIHdyaXR0ZW4gYXMgYSByZ
XBsYWNlbWVudCBmb3IgW1BFQVIgSFRUUF9SZXF1ZXN0XShodHRwOi8vcGVhci5waHAubmV0L2h0dHBfcmVx
dWVzdC8pLiBXaGlsZSBQRUFSIEhUVFBfUmVxdWVzdCBpcyBmdWxsLWZlYXR1cmVkIGFuZCBoZWF2eSwgUmV
xdWVzdENvcmUgZmVhdHVyZXMgb25seSB0aGUgZXNzZW50aWFscyBhbmQgaXMgdmVyeSBsaWdodHdlaWdodC
4gSXQgYWxzbyBsZXZlcmFnZXMgdGhlIGJhdGNoIHJlcXVlc3Qgc3VwcG9ydCBpbiBjVVJMJ3MgYGN1cmxfb
XVsdGlfZXhlYygpYCB0byBlbmFibGUgbXVsdGktdGhyZWFkZWQgcmVxdWVzdHMgdGhhdCBmaXJlIGluIHBh
cmFsbGVsLgoKIyMjIFJlZmVyZW5jZSBhbmQgRG93bmxvYWQKCllvdSBjYW4gZmluZCB0aGUgY2xhc3MgcmV
mZXJlbmNlIGF0IDxodHRwOi8vc2t5enl4LmdpdGh1Yi5jb20vcmVxdWVzdGNvcmUvPi4gWW91IGNhbiBnZX
QgdGhlIGNvZGUgZnJvbSA8aHR0cDovL2dpdGh1Yi5jb20vc2t5enl4L3JlcXVlc3Rjb3JlPi4KCiMjIyBMa
WNlbnNlIGFuZCBDb3B5cmlnaHQKClRoaXMgY29kZSBpcyBDb3B5cmlnaHQgKGMpIDIwMDgtMjAxMCwgUnlh
biBQYXJtYW4uIEhvd2V2ZXIsIEknbSBsaWNlbnNpbmcgdGhpcyBjb2RlIGZvciBvdGhlcnMgdG8gdXNlIHV
uZGVyIHRoZSBbU2ltcGxpZmllZCBCU0QgbGljZW5zZV0oaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saW
NlbnNlcy9ic2QtbGljZW5zZS5waHApLgo=
###PACKDATA,FILE_END,/destinations/_s3lib/aws-
sdk/lib/requestcore/README.md,importbuddy/lib/requestcore/README.md
###PACKDATA,FILE_START,/destinations/_s3lib/aws-
sdk/lib/requestcore/cacert.pem,importbuddy/lib/requestcore/cacert.pem
IyMKIyMgY2EtYnVuZGxlLmNydCAtLSBCdW5kbGUgb2YgQ0EgUm9vdCBDZXJ0aWZpY2F0ZXMKIyMKIyMgQ2V
ydGlmaWNhdGUgZGF0YSBmcm9tIE1vemlsbGEgYXMgb2Y6IFdlZCBKYW4gMTggMDA6MDQ6MTYgMjAxMgojIw
ojIyBUaGlzIGlzIGEgYnVuZGxlIG9mIFguNTA5IGNlcnRpZmljYXRlcyBvZiBwdWJsaWMgQ2VydGlmaWNhd
GUgQXV0aG9yaXRpZXMKIyMgKENBKS4gVGhlc2Ugd2VyZSBhdXRvbWF0aWNhbGx5IGV4dHJhY3RlZCBmcm9t
IE1vemlsbGEncyByb290IGNlcnRpZmljYXRlcwojIyBmaWxlIChjZXJ0ZGF0YS50eHQpLiAgVGhpcyBmaWx
lIGNhbiBiZSBmb3VuZCBpbiB0aGUgbW96aWxsYSBzb3VyY2UgdHJlZToKIyMgaHR0cDovL214ci5tb3ppbG
xhLm9yZy9tb3ppbGxhL3NvdXJjZS9zZWN1cml0eS9uc3MvbGliL2NrZncvYnVpbHRpbnMvY2VydGRhdGEud
Hh0P3Jhdz0xCiMjCiMjIEl0IGNvbnRhaW5zIHRoZSBjZXJ0aWZpY2F0ZXMgaW4gUEVNIGZvcm1hdCBhbmQg
dGhlcmVmb3JlCiMjIGNhbiBiZSBkaXJlY3RseSB1c2VkIHdpdGggY3VybCAvIGxpYmN1cmwgLyBwaHBfY3V
ybCwgb3Igd2l0aAojIyBhbiBBcGFjaGUrbW9kX3NzbCB3ZWJzZXJ2ZXIgZm9yIFNTTCBjbGllbnQgYXV0aG
VudGljYXRpb24uCiMjIEp1c3QgY29uZmlndXJlIHRoaXMgZmlsZSBhcyB0aGUgU1NMQ0FDZXJ0aWZpY2F0Z
UZpbGUuCiMjCgojICoqKioqIEJFR0lOIExJQ0VOU0UgQkxPQ0sgKioqKioKIyBWZXJzaW9uOiBNUEwgMS4x
L0dQTCAyLjAvTEdQTCAyLjEKIwojIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8
gdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UgVmVyc2lvbgojIDEuMSAodGhlICJMaWNlbnNlIik7IHlvdS
BtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aAojIHRoZSBMaWNlbnNlL
iBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIyBodHRwOi8vd3d3Lm1vemlsbGEu
b3JnL01QTC8KIwojIFNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ
1dGVkIG9uIGFuICJBUyBJUyIgYmFzaXMsCiMgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgZWl0aG
VyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlCiMgZm9yIHRoZSBzcGVjaWZpYyBsYW5nd
WFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUKIyBMaWNlbnNlLgojCiMg
VGhlIE9yaWdpbmFsIENvZGUgaXMgdGhlIE5ldHNjYXBlIHNlY3VyaXR5IGxpYnJhcmllcy4KIwojIFRoZSB
Jbml0aWFsIERldmVsb3BlciBvZiB0aGUgT3JpZ2luYWwgQ29kZSBpcwojIE5ldHNjYXBlIENvbW11bmljYX
Rpb25zIENvcnBvcmF0aW9uLgojIFBvcnRpb25zIGNyZWF0ZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyI
GFyZSBDb3B5cmlnaHQgKEMpIDE5OTQtMjAwMAojIHRoZSBJbml0aWFsIERldmVsb3Blci4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KIwojIENvbnRyaWJ1dG9yKHMpOgojCiMgQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnR
zIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMgb2YKIyBlaXRoZXIgdGhlIEdOVS
BHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMiBvciBsYXRlciAodGhlICJHUEwiKSwgb3IKIyB0a
GUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4xIG9yIGxhdGVyICh0aGUg
IkxHUEwiKSwKIyBpbiB3aGljaCBjYXNlIHRoZSBwcm92aXNpb25zIG9mIHRoZSBHUEwgb3IgdGhlIExHUEw
gYXJlIGFwcGxpY2FibGUgaW5zdGVhZAojIG9mIHRob3NlIGFib3ZlLiBJZiB5b3Ugd2lzaCB0byBhbGxvdy
B1c2Ugb2YgeW91ciB2ZXJzaW9uIG9mIHRoaXMgZmlsZSBvbmx5CiMgdW5kZXIgdGhlIHRlcm1zIG9mIGVpd
GhlciB0aGUgR1BMIG9yIHRoZSBMR1BMLCBhbmQgbm90IHRvIGFsbG93IG90aGVycyB0bwojIHVzZSB5b3Vy
IHZlcnNpb24gb2YgdGhpcyBmaWxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTVBMLCBpbmRpY2F0ZSB5b3V
yCiMgZGVjaXNpb24gYnkgZGVsZXRpbmcgdGhlIHByb3Zpc2lvbnMgYWJvdmUgYW5kIHJlcGxhY2UgdGhlbS
B3aXRoIHRoZSBub3RpY2UKIyBhbmQgb3RoZXIgcHJvdmlzaW9ucyByZXF1aXJlZCBieSB0aGUgR1BMIG9yI
HRoZSBMR1BMLiBJZiB5b3UgZG8gbm90IGRlbGV0ZQojIHRoZSBwcm92aXNpb25zIGFib3ZlLCBhIHJlY2lw
aWVudCBtYXkgdXNlIHlvdXIgdmVyc2lvbiBvZiB0aGlzIGZpbGUgdW5kZXIKIyB0aGUgdGVybXMgb2YgYW5
5IG9uZSBvZiB0aGUgTVBMLCB0aGUgR1BMIG9yIHRoZSBMR1BMLgojCiMgKioqKiogRU5EIExJQ0VOU0UgQk
xPQ0sgKioqKioKIyBAKCMpICRSQ1NmaWxlOiBjZXJ0ZGF0YS50eHQsdiAkICRSZXZpc2lvbjogMS44MSAkI
CREYXRlOiAyMDEyLzAxLzE3IDIyOjAyOjM3ICQKCkdURSBDeWJlclRydXN0IEdsb2JhbCBSb290Cj09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDV2pDQ0FjTUN
BZ0dsTUEwR0NTcUdTSWIzRFFFQkJBVUFNSFV4Q3pBSkJnTlZCQVlUQWxWVE1SZ3dGZ1lEVlFRS0V3OUhWRV
VnClEyOXljRzl5WVhScGIyNHhKekFsQmdOVkJBc1RIa2RVUlNCRGVXSmxjbFJ5ZFhOMElGTnZiSFYwYVc5d
WN5d2dTVzVqTGpFak1DRUcKQTFVRUF4TWFSMVJGSUVONVltVnlWSEoxYzNRZ1IyeHZZbUZzSUZKdmIzUXdI
aGNOT1Rnd09ERXpNREF5T1RBd1doY05NVGd3T0RFegpNak0xT1RBd1dqQjFNUXN3Q1FZRFZRUUdFd0pWVXp
FWU1CWUdBMVVFQ2hNUFIxUkZJRU52Y25CdmNtRjBhVzl1TVNjd0pRWURWUVFMCkV4NUhWRVVnUTNsaVpYSl
VjblZ6ZENCVGIyeDFkR2x2Ym5Nc0lFbHVZeTR4SXpBaEJnTlZCQU1UR2tkVVJTQkRlV0psY2xSeWRYTjAKS
UVkc2IySmhiQ0JTYjI5ME1JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R05BRENCaVFLQmdRQ1ZENkMyOEZD
YzZIckhpTTNkRnc0dQpzSlRRR3owTzlwVEFpcFRIQnNpUWw4aTRaQnA2Zm13OFUrRTNLSE5nZjdLWFV3ZWZ
VL2x0V0pUU3I0MXRpR2VBNXUyeWxjOXlNY3FsCkhISzZYQUxuWkVMbitha3Mxam9OckkxQ3FpUUJPZWFjUH
dHRlZ3MVloMFg0MDRXcWsya21oWEJJZ0Q4U0ZjZDV0QjhGTHp0aW1RSUQKQVFBQk1BMEdDU3FHU0liM0RRR
UJCQVVBQTRHQkFHM3JHd25wWHRsUjIyY2lZYVFxUEVoMzQ2QjhwdDV6b2hRRGhUMzdxdzR3eFlNVwpNNEVU
Q0o1N05FN2ZRTWgwMTdsOTNQUjJWWDJiWTFRWTZmRHE4MXl4Mll0Q0hybkFsVTY2K3RYaWZQVm9ZYitPN0F
XWFgxdXcxNk9GCk5NUWtwdzBQbFpQdnk1VFluaCtkWElWdHg2cXVUeDhpdGMyVnJicW56UG1yQzNwLwotLS
0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpUaGF3dGUgU2VydmVyIENBCj09PT09PT09PT09PT09PT0KLS0tL
S1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURFekNDQW55Z0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFR
UUZBRENCeERFTE1Ba0dBMVVFQmhNQ1drRXhGVEFUQmdOVkJBZ1QKREZkbGMzUmxjbTRnUTJGd1pURVNNQkF
HQTFVRUJ4TUpRMkZ3WlNCVWIzZHVNUjB3R3dZRFZRUUtFeFJVYUdGM2RHVWdRMjl1YzNWcwpkR2x1WnlCal
l6RW9NQ1lHQTFVRUN4TWZRMlZ5ZEdsbWFXTmhkR2x2YmlCVFpYSjJhV05sY3lCRWFYWnBjMmx2YmpFWk1CY
0dBMVVFCkF4TVFWR2hoZDNSbElGTmxjblpsY2lCRFFURW1NQ1FHQ1NxR1NJYjNEUUVKQVJZWGMyVnlkbVZ5
TFdObGNuUnpRSFJvWVhkMFpTNWoKYjIwd0hoY05PVFl3T0RBeE1EQXdNREF3V2hjTk1qQXhNak14TWpNMU9
UVTVXakNCeERFTE1Ba0dBMVVFQmhNQ1drRXhGVEFUQmdOVgpCQWdUREZkbGMzUmxjbTRnUTJGd1pURVNNQk
FHQTFVRUJ4TUpRMkZ3WlNCVWIzZHVNUjB3R3dZRFZRUUtFeFJVYUdGM2RHVWdRMjl1CmMzVnNkR2x1WnlCa
ll6RW9NQ1lHQTFVRUN4TWZRMlZ5ZEdsbWFXTmhkR2x2YmlCVFpYSjJhV05sY3lCRWFYWnBjMmx2YmpFWk1C
Y0cKQTFVRUF4TVFWR2hoZDNSbElGTmxjblpsY2lCRFFURW1NQ1FHQ1NxR1NJYjNEUUVKQVJZWGMyVnlkbVZ
5TFdObGNuUnpRSFJvWVhkMApaUzVqYjIwd2daOHdEUVlKS29aSWh2Y05BUUVCQlFBRGdZMEFNSUdKQW9HQk
FOT2tVRzdJLzFacjVzOWR0dW9NYUhWSG9xckMyb1FsCi9LajBSMUhhaGJVZ2RKU0dIZzkxeWVrSVlmVUdiV
EJ1RlJrQzZWTEFZdHRObVo3aWFneEVPTTMrdnVOa0NYREYvckZyS2JZdlNjZzcKMUNjRUpSQ1hMK2VRYmNB
b1FwblhURVBldy9VaGJWU2ZYY05ZNGNEazJWdXd1TnkwZTk4Mk9zSzFaaUlTMW9jTkFnTUJBQUdqRXpBUgp
NQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVFQlFBRGdZRUFCL3BNYVZ6N2xjeEc3b1
dEVFNFd2pzclpxRzlKCkd1YmFVZU5nY0d5RVlSR2hHc2hJUGxsRGZVK1ZQYUdMdHd0aW1IcDFpdDJJVGs2Z
VFOdW96REowdVc4Tnh1T3pSQXZaaW0rYUtadVoKR0NnNzBlTkFLSnBhUE5XMTV5QWJpOHFrcTQzcFVkbmlU
Q3hacWRxNXNuVWI5a0x5NzhmeUdQbUp2S1AvaWlNdWNFYz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo
KVGhhd3RlIFByZW1pdW0gU2VydmVyIENBCj09PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIE
NFUlRJRklDQVRFLS0tLS0KTUlJREp6Q0NBcENnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVFRRkFEQ0J6a
kVMTUFrR0ExVUVCaE1DV2tFeEZUQVRCZ05WQkFnVApERmRsYzNSbGNtNGdRMkZ3WlRFU01CQUdBMVVFQnhN
SlEyRndaU0JVYjNkdU1SMHdHd1lEVlFRS0V4UlVhR0YzZEdVZ1EyOXVjM1ZzCmRHbHVaeUJqWXpFb01DWUd
BMVVFQ3hNZlEyVnlkR2xtYVdOaGRHbHZiaUJUWlhKMmFXTmxjeUJFYVhacGMybHZiakVoTUI4R0ExVUUKQX
hNWVZHaGhkM1JsSUZCeVpXMXBkVzBnVTJWeWRtVnlJRU5CTVNnd0pnWUpLb1pJaHZjTkFRa0JGaGx3Y21Wd
GFYVnRMWE5sY25abApja0IwYUdGM2RHVXVZMjl0TUI0WERUazJNRGd3TVRBd01EQXdNRm9YRFRJd01USXpN
VEl6TlRrMU9Wb3dnYzR4Q3pBSkJnTlZCQVlUCkFscEJNUlV3RXdZRFZRUUlFd3hYWlhOMFpYSnVJRU5oY0d
VeEVqQVFCZ05WQkFjVENVTmhjR1VnVkc5M2JqRWRNQnNHQTFVRUNoTVUKVkdoaGQzUmxJRU52Ym5OMWJIUn
BibWNnWTJNeEtEQW1CZ05WQkFzVEgwTmxjblJwWm1sallYUnBiMjRnVTJWeWRtbGpaWE1nUkdsMgphWE5wY
jI0eElUQWZCZ05WQkFNVEdGUm9ZWGQwWlNCUWNtVnRhWFZ0SUZObGNuWmxjaUJEUVRFb01DWUdDU3FHU0li
M0RRRUpBUllaCmNISmxiV2wxYlMxelpYSjJaWEpBZEdoaGQzUmxMbU52YlRDQm56QU5CZ2txaGtpRzl3MEJ
BUUVGQUFPQmpRQXdnWWtDZ1lFQTBqWTIKYW92WHdsdWUyb0ZCWW84NDdra0VWZGJRN3h3YmxSWkg3eGhJTl
RwUzlDdHFCbzg3TCtwVzQ2K0dqWjRYOTU2MFpYVUNUZS9MQ2FJaApVZGliMEdmUXVnMlNCaFJ6MUpQTGx5b
0FuRnhPREx6NkZWTDg4a1J1MmhGS2JnaWZMeTNqK2FvNmhuTzJSbE5ZeUlrRnZZTVJ1SE0vCnFnZU45RUpO
NTBDZEhEY0NBd0VBQWFNVE1CRXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUVFGQUF
PQmdRQW0KU0N3V3dsajY2QlowREtxcVgxUS84dGZKZUdCZVhtNDNZeUozTm42eUY4UTB1ZlVJaGZ6SkFUai
9UYjd5RmtKRDU3dGFSdnZCeGhFZgo4VXF3S0ViSnc4UkNmYno2cTFsdTFiZFJpQkhqcElVWmE0Sk1wQXdTc
mVta3JqL3h3MGxsbW96RnlENGx0NVNadTVJeWNRZndobDd0ClVDZW1EYVlqK2J2THBnY1VRZz09Ci0tLS0t
RU5EIENFUlRJRklDQVRFLS0tLS0KCkVxdWlmYXggU2VjdXJlIENBCj09PT09PT09PT09PT09PT09Ci0tLS0
tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlESURDQ0FvbWdBd0lCQWdJRU5kNzB6ekFOQmdrcWhraUc5dz
BCQVFVRkFEQk9NUXN3Q1FZRFZRUUdFd0pWVXpFUU1BNEdBMVVFCkNoTUhSWEYxYVdaaGVERXRNQ3NHQTFVR
UN4TWtSWEYxYVdaaGVDQlRaV04xY21VZ1EyVnlkR2xtYVdOaGRHVWdRWFYwYUc5eWFYUjUKTUI0WERUazRN
RGd5TWpFMk5ERTFNVm9YRFRFNE1EZ3lNakUyTkRFMU1Wb3dUakVMTUFrR0ExVUVCaE1DVlZNeEVEQU9CZ05
WQkFvVApCMFZ4ZFdsbVlYZ3hMVEFyQmdOVkJBc1RKRVZ4ZFdsbVlYZ2dVMlZqZFhKbElFTmxjblJwWm1sal
lYUmxJRUYxZEdodmNtbDBlVENCCm56QU5CZ2txaGtpRzl3MEJBUUVGQUFPQmpRQXdnWWtDZ1lFQXdWMnhXR
2NJWXU2Z21pMGZDRzJSRkdpWUNoNysyZ1J2RTRSaUljUFIKZk02ZkJlQzRBZkJPTk96aWlwVUVaS3p4YTFO
ZkJiUExaNEMvUWdLTy90MEJDZXpoQUJSUC9QdndETjFEdWxzcjRSK0FjSmtWVjVNVwo4UStYYXJmQ2FDTWN
6RTFaTUt4UkhqdXZLOWJ1WTBWN3hkbGZVTkxqVUE4NmlPZS9GUDNneDdrQ0F3RUFBYU9DQVFrd2dnRUZNSE
FHCkExVWRId1JwTUdjd1phQmpvR0drWHpCZE1Rc3dDUVlEVlFRR0V3SlZVekVRTUE0R0ExVUVDaE1IUlhGM
WFXWmhlREV0TUNzR0ExVUUKQ3hNa1JYRjFhV1poZUNCVFpXTjFjbVVnUTJWeWRHbG1hV05oZEdVZ1FYVjBh
Rzl5YVhSNU1RMHdDd1lEVlFRREV3UkRVa3d4TUJvRwpBMVVkRUFRVE1CR0JEekl3TVRnd09ESXlNVFkwTVR
VeFdqQUxCZ05WSFE4RUJBTUNBUVl3SHdZRFZSMGpCQmd3Rm9BVVNPWm8rU3ZTCnNwWFhSOWdqSUJCUE01aV
FuOVF3SFFZRFZSME9CQllFRkVqbWFQa3IwcktWMTBmWUl5QVFUek9Za0ovVU1Bd0dBMVVkRXdRRk1BTUIKQ
WY4d0dnWUpLb1pJaHZaOUIwRUFCQTB3Q3hzRlZqTXVNR01EQWdiQU1BMEdDU3FHU0liM0RRRUJCUVVBQTRH
QkFGak9LZXI4OTk2MQp6Z0s1RjdXRjBibmo0SlhNSlRFTkFLYVNibisya21PZVVKWFJtbS9rRWQ1amhXNlk
3cWovV3NqVFZiSm1jVmZld0NIclBTcW5JMGtCCkJJWkNlL3p1ZjZJV1VyVm5aOU5BMnpzbVdMSW9kejJ1Rk
hkaDF2b3FaaWVnRGZxbmMxenFjUEdVSVdWRVgvcjg3eWxvcWFLSGVlOTUKNzArc0IzYzQKLS0tLS1FTkQgQ
0VSVElGSUNBVEUtLS0tLQoKRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uIEdsb2JhbCBDQSAxCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0
KTUlJREtUQ0NBcEtnQXdJQkFnSUVObkFWbGpBTkJna3Foa2lHOXcwQkFRVUZBREJHTVFzd0NRWURWUVFHRX
dKVlV6RWtNQ0lHQTFVRQpDaE1iUkdsbmFYUmhiQ0JUYVdkdVlYUjFjbVVnVkhKMWMzUWdRMjh1TVJFd0R3W
URWUVFMRXdoRVUxUkRRU0JGTVRBZUZ3MDVPREV5Ck1UQXhPREV3TWpOYUZ3MHhPREV5TVRBeE9EUXdNak5h
TUVZeEN6QUpCZ05WQkFZVEFsVlRNU1F3SWdZRFZRUUtFeHRFYVdkcGRHRnMKSUZOcFoyNWhkSFZ5WlNCVWN
uVnpkQ0JEYnk0eEVUQVBCZ05WQkFzVENFUlRWRU5CSUVVeE1JR2RNQTBHQ1NxR1NJYjNEUUVCQVFVQQpBNE
dMQURDQmh3S0JnUUNnYklHcHp6UWVKTjMraGlqTTNvTXYrVjdVUXRMb2RHQm1FNWdHSEtsUkVtbHZNVlc1U
1hJQUNIN1RwV0pFCk55U1pqOW1EU0krWmJaVVR1ME03TGtsT2lEZkJ1MWgvL3VHOStMdGh6Zk5Id0ptbThm
T1I2SGg4QU10aHlVUW5jV2xWU241SlRlMmkKbzc
0Q1RBREtBcWp1QVFJeFpBOVNMUk4wZGphMWVyUXRjUUlCQTZPQ0FTUXdnZ0VnTUJFR0NXQ0dTQUdHK0VJQk
FRUUVBd0lBQnpCbwpCZ05WSFI4RVlUQmZNRjJnVzZCWnBGY3dWVEVMTUFrR0ExVUVCaE1DVlZNeEpEQWlCZ
05WQkFvVEcwUnBaMmwwWVd3Z1UybG5ibUYwCmRYSmxJRlJ5ZFhOMElFTnZMakVSTUE4R0ExVUVDeE1JUkZO
VVEwRWdSVEV4RFRBTEJnTlZCQU1UQkVOU1RERXdLd1lEVlIwUUJDUXcKSW9BUE1UazVPREV5TVRBeE9ERXd
Nak5hZ1E4eU1ERTRNVEl4TURFNE1UQXlNMW93Q3dZRFZSMFBCQVFEQWdFR01COEdBMVVkSXdRWQpNQmFBRk
dwNWZwRnBSaGdUQ2dKM3BWbGJZSmdsRHFMNE1CMEdBMVVkRGdRV0JCUnFlWDZSYVVZWUV3b0NkNlZaVzJDW
UpRNmkrREFNCkJnTlZIUk1FQlRBREFRSC9NQmtHQ1NxR1NJYjJmUWRCQUFRTU1Bb2JCRlkwTGpBREFnU1FN
QTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0IKQUNJUzJIb2QzSUVHdGdsbHNvZklIMTYwTCtuRUh2STh3YnNFa0J
GS2cwNStrN2xOUXNlU0pxQmNOSm80Y3ZqOWF4WStJTzZDaXpFcQpremFGSTRpS1BBTm8wOGtKRDAzOGJLVG
FLSEtURG9tQXNIMytnRzlsYlJnemw0dkNhNG51WUQzSW0rOS9LekppYzVQTFBPTjc0blo0ClJieWhrd1M3a
HA4NlcwTjZ3NHBsCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkRpZ2l0YWwgU2lnbmF0dXJlIFRydXN0
IENvLiBHbG9iYWwgQ0EgMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1
CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURLVENDQXBLZ0F3SUJBZ0lFTm03VHpqQU5CZ2txaGtpRzl3ME
JBUVVGQURCR01Rc3dDUVlEVlFRR0V3SlZVekVrTUNJR0ExVUUKQ2hNYlJHbG5hWFJoYkNCVGFXZHVZWFIxY
21VZ1ZISjFjM1FnUTI4dU1SRXdEd1lEVlFRTEV3aEVVMVJEUVNCRk1qQWVGdzA1T0RFeQpNRGt4T1RFM01q
WmFGdzB4T0RFeU1Ea3hPVFEzTWpaYU1FWXhDekFKQmdOVkJBWVRBbFZUTVNRd0lnWURWUVFLRXh0RWFXZHB
kR0ZzCklGTnBaMjVoZEhWeVpTQlVjblZ6ZENCRGJ5NHhFVEFQQmdOVkJBc1RDRVJUVkVOQklFVXlNSUdkTU
EwR0NTcUdTSWIzRFFFQkFRVUEKQTRHTEFEQ0Jod0tCZ1FDL2s0OFhrdTh6RXhqckVIOU9Gci8vQm84cWhie
GUrU1NtSklpMkE3ZkJ3MThEVzlGdnJuNUM2bVlqdUdPRApWdnNvTGVFNGk3VHVxQUhoemh5MmlDb2lSb1g3
bjZkd3FVY1VQODdlWmZDb2NmZFBKbXlNdk1hMTc5NUpKLzlJS24zb1RRUE14N0pTCnhoY3hFenUxVGR2SXh
QYkREeVFxMmd5ZDU1RmJnTTJVblFJQkE2T0NBU1F3Z2dFZ01CRUdDV0NHU0FHRytFSUJBUVFFQXdJQUJ6Qm
8KQmdOVkhSOEVZVEJmTUYyZ1c2QlpwRmN3VlRFTE1Ba0dBMVVFQmhNQ1ZWTXhKREFpQmdOVkJBb1RHMFJwW
jJsMFlXd2dVMmxuYm1GMApkWEpsSUZSeWRYTjBJRU52TGpFUk1BOEdBMVVFQ3hNSVJGTlVRMEVnUlRJeERU
QUxCZ05WQkFNVEJFTlNUREV3S3dZRFZSMFFCQ1F3CklvQVBNVGs1T0RFeU1Ea3hPVEUzTWpaYWdROHlNREU
0TVRJd09URTVNVGN5Tmxvd0N3WURWUjBQQkFRREFnRUdNQjhHQTFVZEl3UVkKTUJhQUZCNkNUU2hsZ0R6Sl
FXNnNOUzVheTk3dStEbGJNQjBHQTFVZERnUVdCQlFlZ2swb1pZQTh5VUZ1ckRVdVdzdmU3dmc1V3pBTQpCZ
05WSFJNRUJUQURBUUgvTUJrR0NTcUdTSWIyZlFkQkFBUU1NQW9iQkZZMExqQURBZ1NRTUEwR0NTcUdTSWIz
RFFFQkJRVUFBNEdCCkFFZU5nNjFpOHR1d25rVWlCYm1pMWdNT09ITG5udng3NXBPMm1xV2lsTWcwSFpIUnh
kZjBDaVVQUFhpQm5nK3haOFNRVEdQZFhxZmkKdXAvMTkwMmxNWHVjS1MxTS9tUSs3TFpUL3VxYjdZTGJkSF
ZMQjNsdUh0Z1pnM1BlOVQ3UXRkN25TMmg5UXk0cUlPRitvSGhFbmdqMQptUG5IZnhzYjFnWWdBbGlodzZJR
AotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpWZXJpc2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENl
cnRpZmljYXRpb24gQXV0aG9yaXR5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0
9PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNQRENDQWFVQ0VIQzY1Qj
BRMlNrMHRqaktld1BNdXI4d0RRWUpLb1pJaHZjTkFRRUNCUUF3WHpFTE1Ba0dBMVVFQmhNQ1ZWTXgKRnpBV
kJnTlZCQW9URGxabGNtbFRhV2R1TENCSmJtTXVNVGN3TlFZRFZRUUxFeTVEYkdGemN5QXpJRkIxWW14cFl5
QlFjbWx0WVhKNQpJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1CNFhEVGsyTURFeU9UQXdNREF
3TUZvWERUSTRNRGd3TVRJek5UazFPVm93Clh6RUxNQWtHQTFVRUJoTUNWVk14RnpBVkJnTlZCQW9URGxabG
NtbFRhV2R1TENCSmJtTXVNVGN3TlFZRFZRUUxFeTVEYkdGemN5QXoKSUZCMVlteHBZeUJRY21sdFlYSjVJR
U5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQQpBNEdOQURD
QmlRS0JnUURKWEZtZThodUtBUlMwRU44RVFOdmpWNjlxUlVDUGhBd0wwVFBaMlJIUDdnSllIeVgzS3FoRUJ
hcnNBeDk0CmY1NlR1Wm9BcWlOOTFxeUZvbU5GeDNJbnpQUk14blZ4MGpudlQwTHdkZDhLa01hT0lHK1lEL2
lzSTE5d0tUYWt5WWJuc1pvZ3kxT2wKaGVjOXZuMmEvaVJGTTl4MkZlMFBvbkZrVEdVdWdXaEZwd0lEQVFBQ
k1BMEdDU3FHU0liM0RRRUJBZ1VBQTRHQkFMdE1FaXZQTENZQQpUeFFUM2FiNy9Bb1JoSXp6S0J4bmtpOTh0
c1g2My9Eb2xid2RqMndzcUZITWM5aWt3RlB3VHRZbXdIWUJWNEdTWGlIeDBiSC81OUFoCldNMXBGK05FSEp
3WlJEbUpYTnljQUE5V2pRS1o3YUtRUlV6a3V4Q2tQZkF5QXc3eHp2am95VkdNNW1LZjVwL0FmYmR5bk1rMk
9tdWYKVHFqL1pBMWsKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKVmVyaXNpZ24gQ2xhc3MgMyBQdWJsa
WMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0
tLS0KTUlJREFqQ0NBbXNDRUgzWi9nZlBxQjYzRUhsbis2ZUpOTVl3RFFZSktvWklodmNOQVFFRkJRQXdnY0
V4Q3pBSkJnTlZCQVlUQWxWVApNUmN3RlFZRFZRUUtFdzVXWlhKcFUybG5iaXdnU1c1akxqRThNRG9HQTFVR
UN4TXpRMnhoYzNNZ015QlFkV0pzYVdNZ1VISnBiV0Z5CmVTQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZj
bWwwZVNBdElFY3lNVG93T0FZRFZRUUxFekVvWXlrZ01UazVPQ0JXWlhKcFUybG4KYml3Z1NXNWpMaUF0SUV
admNpQmhkWFJvYjNKcGVtVmtJSFZ6WlNCdmJteDVNUjh3SFFZRFZRUUxFeFpXWlhKcFUybG5iaUJVY25Weg
pkQ0JPWlhSM2IzSnJNQjRYRFRrNE1EVXhPREF3TURBd01Gb1hEVEk0TURnd01USXpOVGsxT1Zvd2djRXhDe
kFKQmdOVkJBWVRBbFZUCk1SY3dGUVlEVlFRS0V3NVdaWEpwVTJsbmJpd2dTVzVqTGpFOE1Eb0dBMVVFQ3hN
elEyeGhjM01nTXlCUWRXSnNhV01nVUhKcGJXRnkKZVNCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDB
lU0F0SUVjeU1Ub3dPQVlEVlFRTEV6RW9ZeWtnTVRrNU9DQldaWEpwVTJsbgpiaXdnU1c1akxpQXRJRVp2Y2
lCaGRYUm9iM0pwZW1Wa0lIVnpaU0J2Ym14NU1SOHdIUVlEVlFRTEV4WldaWEpwVTJsbmJpQlVjblZ6CmRDQ
k9aWFIzYjNKck1JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R05BRENCaVFLQmdRRE1YdEVSWFZ4cDBLdlR1
V3BNbVI5Wm1EQ08KRm9VZ1JtMUhQOVNGSUlUaGJiUDRwTzBNOFJjUE8vbW4rU1hYd2MrRVkvSjhZOCtpUi9
MR1d6T09aRUFFYU1HQXVXUWNSWGZIMkc3MQpsU2s4VU9nMDEzZ2ZxTHB0UTVHVmowVlhYbjdGKzhxa0JPdn
FsemRVTUcrN0FVY3lNODNjVjV0a2FXSDRteDBjaVU5Y1p3SURBUUFCCk1BMEdDU3FHU0liM0RRRUJCUVVBQ
TRHQkFGRk56YjVjeTVnWm5CV3lBVGw0TGswUFozQndtY1lRV3BTa1UwMVViU3V2RFYxQWkyVFQKMSs3ZVZt
R1NYNmJFSFJCaE50TXNKenpvS1FtNUVXUjB6TFZ6bnh4SXFieGhBZTdpRjZZTTQwQUlPdzduNjBSektwcnh
hWkx2Y1JURApPYXh4cDVFSmIrUnhCck82V1ZjbWVRRDIrQTJpTXpBbzFLcFlvSjJkYVpIOQotLS0tLUVORC
BDRVJUSUZJQ0FURS0tLS0tCgpHbG9iYWxTaWduIFJvb3QgQ0EKPT09PT09PT09PT09PT09PT09Ci0tLS0tQ
kVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEZFRDQ0FsMmdBd0lCQWdJTEJBQUFBQUFCRlV0YXc1UXdEUVlK
S29aSWh2Y05BUUVGQlFBd1Z6RUxNQWtHQTFVRUJoTUNRa1V4CkdUQVhCZ05WQkFvVEVFZHNiMkpoYkZOcFo
yNGdibll0YzJFeEVEQU9CZ05WQkFzVEIxSnZiM1FnUTBFeEd6QVpCZ05WQkFNVEVrZHMKYjJKaGJGTnBaMj
RnVW05dmRDQkRRVEFlRncwNU9EQTVNREV4TWpBd01EQmFGdzB5T0RBeE1qZ3hNakF3TURCYU1GY3hDekFKQ
mdOVgpCQVlUQWtKRk1Sa3dGd1lEVlFRS0V4QkhiRzlpWVd4VGFXZHVJRzUyTFhOaE1SQXdEZ1lEVlFRTEV3
ZFNiMjkwSUVOQk1Sc3dHUVlEClZRUURFeEpIYkc5aVlXeFRhV2R1SUZKdmIzUWdRMEV3Z2dFaU1BMEdDU3F
HU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRGEKRHVhWmpjNmo0MCtLZnZ2eGk0TWxhK3BJSC9FcX
NMbVZFUVM5OEdQUjRtZG16eHpkenh0SUsrNk5pWTZhcnltQVphdnB4eTBTeTZzYwpUSEFIb1QwS01NMFZqV
S80M2RTTVVCVWM3MUR1eEM3My9PbFM4cEY5NEczVk5UQ09Ya056OGtIcDFXcmpzb2s2VmprNGJ3WThpR2xi
CktrM0ZwMVM0YkluTW0vazh5dVg5aWZVU1BKSjRsdGJjZEc2VFJHSFJqY2RHc25VT2h1Z1ppdFZ0Yk5WNEZ
wV2k2Y2dLT092eUpCTlAKYzFTVEU0VTZHN3dlTkxXTEJZeTVkNHV4Mng4Z2thc0pVMjZRem5zM2RMbHdSNU
VpVVdNV2VhNnhya0VtQ01nWks5Rkdxa2pXWkNyWApnelQvTENyQmJCbERTZ2VGNTlOODlpRm83K3J5VXA5L
2s1RFBBZ01CQUFHalFqQkFNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WCkhSTUJBZjhFQlRBREFRSC9N
QjBHQTFVZERnUVdCQlJnZTJZYVJRMlh5b2xRTDMwRXpUU28vL3o5U3pBTkJna3Foa2lHOXcwQkFRVUYKQUF
PQ0FRRUExblBuZkU5MjBJMi83THFpdmpURktESzFmUHhzbkN3cnZRbWVVNzlyWHFvUlNMYmxDS096eWoxaF
RkTkdDYk0rdzZEagpZMVViOHJydnJUbmhRN2s0bytZdmlpWTc3NkJRVnZuR0N2MDR6Y1FMY0ZHVWw1Z0UzO
E5mbE5VVnlSUkJuTVJkZFdRVkRmOVZNT3lHCmovOE43eXk1WTBiMnF2emZ2R245TGhKSVpKcmdsZkNtN3lt
UEFiRVZ0UXdkcGY1cExHa2tlQjZ6cHh4eFl1N0t5SmVzRjEyS3d2aEgKaG00cXhGWXhsZEJuaVlVcitXeW1
YVWFkREtxQzVKbFIzWEMzMjFZOVllUnE0VnpXOXY0OTNrSE1CNjVqVXI5VFUvUXI2Y2Y5dHZlQwpYNFhTUV
JqYmdiTUVITVVmcElCdkZTREozZ3lJQ2gzV1psWGkvRWpKS1NacDRBPT0KLS0tLS1FTkQgQ0VSVElGSUNBV
EUtLS0tLQoKR2xvYmFsU2lnbiBSb290IENBIC0gUjIKPT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1C
RUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR1akNDQXFLZ0F3SUJBZ0lMQkFBQUFBQUJENFltNWcwd0RRWUp
Lb1pJaHZjTkFRRUZCUUF3VERFZ01CNEdBMVVFQ3hNWFIyeHYKWW1Gc1UybG5iaUJTYjI5MElFTkJJQzBnVW
pJeEV6QVJCZ05WQkFvVENrZHNiMkpoYkZOcFoyNHhFekFSQmdOVkJBTVRDa2RzYjJKaApiRk5wWjI0d0hoY
05NRFl4TWpFMU1EZ3dNREF3V2hjTk1qRXhNakUxTURnd01EQXdXakJNTVNBd0hnWURWUVFMRXhkSGJHOWlZ
V3hUCmFXZHVJRkp2YjNRZ1EwRWdMU0JTTWpFVE1CRUdBMVVFQ2hNS1IyeHZZbUZzVTJsbmJqRVRNQkVHQTF
VRUF4TUtSMnh2WW1Gc1UybG4KYmpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRU
JBS2JQSkE2K0xtOG9tVVZDeEtzK0lWU2JDOU4vaEhENgpFclBMdjRkZnhuK0cwN0l3WE5iOXJmRjczT1g0W
UpZSmtoRDEwRlBlKzN0K2M0aXNVb2g3U3FiS1NhWmVxS2VNV2hHOGVvTHJ2b3pwCnM2eVdKUWVYU3BrcUJ5
KzBIbmUvaWcrMUFud2JscmpGdVRvc3ZOWVN1ZXRaZmVMUUJvWmZYa2xxdFRsZWlEVHN2SGdNQ0ppRWJLak4
KUzdTZ2ZReDVUZkM0TGNzaHl0VnNXMzNob0NtRW9mblRsRW5MSkdLUklMemRDOVhaelBucUp3b3JjNUhHbl
J1c3lNdm80S0QwTDVDTApUZnV3Tmh2MkdYcUY0RzN5WVJPSVhKL2drd3BSbDRwYXpxK3IxZmVxQ2FwZ3Zke
lpYOTl5cVdBVFhnQUJ5VXI2UDZUcUJ3TWhBbzZDCnlnUENtNDhDQXdFQUFhT0JuRENCbVRBT0JnTlZIUThC
QWY4RUJBTUNBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEUKRmdRVW0rSUhWMmNjSHNCcUJ
0NVp0Sm90Mzl3WmhpNHdOZ1lEVlIwZkJDOHdMVEFyb0NtZ0o0WWxhSFIwY0RvdkwyTnliQzVuYkc5aQpZV3
h6YVdkdUxtNWxkQzl5YjI5MExYSXlMbU55YkRBZkJnTlZIU01FR0RBV2dCU2I0Z2RYWnh3ZXdHb0czbG0wb
WkzZjNCbUdMakFOCkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQW1ZRlRoeHhvbDRhUjdPQkt1RVFMcTRHc0ow
L1d3YmdjUTNpekRKcjg2aXc4Ym1FYlRVc3AKOVo4RkhTYkJ1T21EQUdKRnRxa0lrN21wTTBzWW1zTDRoNGh
PMjkxeE5CckJWTnBHUCtEVEtxdHRWQ0wxT21MTklHKzZLWW5YM1pIdQowMXlpUHFGYlFmWGY1V1JETGVuVk
9hdlNvdCszaTlEQWdCa2NSY0F0ak9qNExhUjBWa25GQmJWUEZkNXVSSGc1aDZoK3UvTjVHSkc3CjlHK2R3Z
kNNTll4ZEFmdkRiYm52UkcxNVJqRitDdjZwZ3NILzc2dHVJTVJReVYrZFRac1hqQXpsQWNtZ1FXcHpVL3Fs
VUxSdUpRLzcKVEJqMC9WTFpqbW14NkJFUDNvalkreDFKOTZyZWxjOGdlTUpnRXRzbFFJeHEvSDVDT0VCa0V
2ZWVnZUdUTGc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpWYWxpQ2VydCBDbGFzcyAxIFZBCj09PT
09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWxBQ0FRRXdEU
VlKS29aSWh2Y05BUUVGQlFBd2dic3hKREFpQmdOVkJBY1RHMVpoYkdsRFpYSjBJRlpoYkdsa1lYUnAKYjI0
Z1RtVjBkMjl5YXpFWE1CVUdBMVVFQ2hNT1ZtRnNhVU5sY25Rc0lFbHVZeTR4TlRBekJnTlZCQXNUTEZaaGJ
HbERaWEowSUVOcwpZWE56SURFZ1VHOXNhV041SUZaaGJHbGtZWFJwYjI0Z1FYVjBhRzl5YVhSNU1TRXdId1
lEVlFRREV4aG9kSFJ3T2k4dmQzZDNMblpoCmJHbGpaWEowTG1OdmJTOHhJREFlQmdrcWhraUc5dzBCQ1FFV
0VXbHVabTlBZG1Gc2FXTmxjblF1WTI5dE1CNFhEVGs1TURZeU5USXkKTWpNME9Gb1hEVEU1TURZeU5USXlN
ak0wT0Zvd2dic3hKREFpQmdOVkJBY1RHMVpoYkdsRFpYSjBJRlpoYkdsa1lYUnBiMjRnVG1WMApkMjl5YXp
FWE1CVUdBMVVFQ2hNT1ZtRnNhVU5sY25Rc0lFbHVZeTR4TlRBekJnTlZCQXNUTEZaaGJHbERaWEowSUVOc1
lYTnpJREVnClVHOXNhV041SUZaaGJHbGtZWFJwYjI0Z1FYVjBhRzl5YVhSNU1TRXdId1lEVlFRREV4aG9kS
FJ3T2k4dmQzZDNMblpoYkdsalpYSjAKTG1OdmJTOHhJREFlQmdrcWhraUc5dzBCQ1FFV0VXbHVabTlBZG1G
c2FXTmxjblF1WTI5dE1JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQQpBNEdOQURDQmlRS0JnUURZV1lKNmliaVd
1cVl2YUc5WUxxZFVIQVp1OU9xTlNMd3hsQmZ3OD
A2OHNyZzFrbmF3MEtXbEFkY0FBeElpCkdRajQveEVqbTg0SDliOXBHaWIrVHVuUmY1MHNRQjFaYUc2bStGa
XduUnFQMHoveDNCa0dnYWdPNERyZHlGTkZDUWJtRDNERCtrQ20KRHVKV0JROFlUZndnZ3RGelZYU05kbktn
SFowZHdOMC9jUUlEQVFBQk1BMEdDU3FHU0liM0RRRUJCUVVBQTRHQkFGQm9QVW4wTEJ3RwpsTitWWUgrV2V
4ZitUM0d0Wk1qZGQ5THZXVlhvUCtpT0JTb2g4Z2ZTdGFkUy9weXh0dUpiZHhkQTZuTFdJOHNvZ1RMREFIa1
k3RmtYCmljbkdhaDV4eWYyM2RLVWxSV25GU0tzWjRVV0tKV3NaN3VXN0V2Vi85NmFOVWNQd25YUzNxVDZnc
GYrMlNRTVQyaUxNN1hHQ0s1blAKT3JmMUxYTEkKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKVmFsaUNl
cnQgQ2xhc3MgMiBWQQo9PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQp
NSUlDNXpDQ0FsQUNBUUV3RFFZSktvWklodmNOQVFFRkJRQXdnYnN4SkRBaUJnTlZCQWNURzFaaGJHbERaWE
owSUZaaGJHbGtZWFJwCmIyNGdUbVYwZDI5eWF6RVhNQlVHQTFVRUNoTU9WbUZzYVVObGNuUXNJRWx1WXk0e
E5UQXpCZ05WQkFzVExGWmhiR2xEWlhKMElFTnMKWVhOeklESWdVRzlzYVdONUlGWmhiR2xrWVhScGIyNGdR
WFYwYUc5eWFYUjVNU0V3SHdZRFZRUURFeGhvZEhSd09pOHZkM2QzTG5aaApiR2xqWlhKMExtTnZiUzh4SUR
BZUJna3Foa2lHOXcwQkNRRVdFV2x1Wm05QWRtRnNhV05sY25RdVkyOXRNQjRYRFRrNU1EWXlOakF3Ck1Uaz
FORm9YRFRFNU1EWXlOakF3TVRrMU5Gb3dnYnN4SkRBaUJnTlZCQWNURzFaaGJHbERaWEowSUZaaGJHbGtZW
FJwYjI0Z1RtVjAKZDI5eWF6RVhNQlVHQTFVRUNoTU9WbUZzYVVObGNuUXNJRWx1WXk0eE5UQXpCZ05WQkFz
VExGWmhiR2xEWlhKMElFTnNZWE56SURJZwpVRzlzYVdONUlGWmhiR2xrWVhScGIyNGdRWFYwYUc5eWFYUjV
NU0V3SHdZRFZRUURFeGhvZEhSd09pOHZkM2QzTG5aaGJHbGpaWEowCkxtTnZiUzh4SURBZUJna3Foa2lHOX
cwQkNRRVdFV2x1Wm05QWRtRnNhV05sY25RdVkyOXRNSUdmTUEwR0NTcUdTSWIzRFFFQkFRVUEKQTRHTkFEQ
0JpUUtCZ1FET09uSEs1YXZJV1pKVjE2dllkQTc1N3RuMlZVZFpaVWNPQlZYYzY1ZzJQRnhUWGRNd3p6anN2
VUdKN1NWQwpDU1JyQ2w2emZOMVNMVXptMU5aOVdsbXBaZFJKRXkwa1RSeFFiN1hCaFZRNy9uSGswMXhDK1l
EZ2tSb0tXemsyWi9NL1ZYd2JQN1JmClpITTA0N1FTdjRkaytOb1MvemNud2JORHUrOTdiaTVwOXdJREFRQU
JNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBRHQvVUc5dlVKU1oKU1dJNE9COUwrS1hJUHFlQ2dmWXJ4K2pGe
nVnNkVJTExHQUNPVGIyb1dIK2hlUUMxdSttTnIwSFpEelR1SVlFWm9ESkpLUFRFamxiVgpValA5VU5WK21X
d0Q1TWxNL010c3EyYXpTaUdNNWJVTU1qNFFzc3hzb2R5YW1Fd0NXL1BPdVo2bGNnNUt0ejg4NWhabytMN3R
kRXk4Clc5VmlIMFBkCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClJTQSBSb290IENlcnRpZmljYXRlID
EKPT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQzV6Q0NBb
EFDQVFFd0RRWUpLb1pJaHZjTkFRRUZCUUF3Z2JzeEpEQWlCZ05WQkFjVEcxWmhiR2xEWlhKMElGWmhiR2xr
WVhScApiMjRnVG1WMGQyOXlhekVYTUJVR0ExVUVDaE1PVm1Gc2FVTmxjblFzSUVsdVl5NHhOVEF6QmdOVkJ
Bc1RMRlpoYkdsRFpYSjBJRU5zCllYTnpJRE1nVUc5c2FXTjVJRlpoYkdsa1lYUnBiMjRnUVhWMGFHOXlhWF
I1TVNFd0h3WURWUVFERXhob2RIUndPaTh2ZDNkM0xuWmgKYkdsalpYSjBMbU52YlM4eElEQWVCZ2txaGtpR
zl3MEJDUUVXRVdsdVptOUFkbUZzYVdObGNuUXVZMjl0TUI0WERUazVNRFl5TmpBdwpNakl6TTFvWERURTVN
RFl5TmpBd01qSXpNMW93Z2JzeEpEQWlCZ05WQkFjVEcxWmhiR2xEWlhKMElGWmhiR2xrWVhScGIyNGdUbVY
wCmQyOXlhekVYTUJVR0ExVUVDaE1PVm1Gc2FVTmxjblFzSUVsdVl5NHhOVEF6QmdOVkJBc1RMRlpoYkdsRF
pYSjBJRU5zWVhOeklETWcKVUc5c2FXTjVJRlpoYkdsa1lYUnBiMjRnUVhWMGFHOXlhWFI1TVNFd0h3WURWU
VFERXhob2RIUndPaTh2ZDNkM0xuWmhiR2xqWlhKMApMbU52YlM4eElEQWVCZ2txaGtpRzl3MEJDUUVXRVds
dVptOUFkbUZzYVdObGNuUXVZMjl0TUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBCkE0R05BRENCaVFLQmdRRGp
tRkdXSE9qVnNRYUJhbGZEY25XVHE4K2Vwdnp6RmxMV0xVMmZOVVNvTGdSTkIwbUtPQ24xZHpmbnQ2dGQKM3
paeEZKbVAzTUtTOGVkZ2twZnMyRWpjdjhFQ0lNWWtwQ2hNTUZwMmJiRmM4OTNlbmhCeG9ZakhXNXRCYmNxd
3VJNFY3cTB6Szg5SApCRngxY1FxWUpKZ3BwMGxacGQzNHQwTmlZZlBUNHRCVlB3SURBUUFCTUEwR0NTcUdT
SWIzRFFFQkJRVUFBNEdCQUZhN0FsaUVad2dzCjN4L2JlMGt6OWRObm5mUzBDaEN6eWNVczRwSnFjWGduOG5
DRFF0TSt6NmxVOVBIWWtoYU0wUVRMUzZ2Sm4wV3VQSXFwc0hFelhjakYKVjkrdnFEV3pmNG1INmVnbGtyaC
9oWHF1MXJ3ZU4xZ3FaOG1SenlxQlB1M0dPZC9BUGhtY0djd1RUWUpCdFl6ZTREMWdDQ0FQUlg1cgpvbitqa
kJYdQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpWZXJpc2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0
9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFR2
pDQ0F3SUNFUUNiZmdaSm96NWl1ZFh1a0VoeEtlOVhNQTBHQ1NxR1NJYjNEUUVCQlFVQU1JSEtNUXN3Q1FZR
FZRUUdFd0pWClV6RVhNQlVHQTFVRUNoTU9WbVZ5YVZOcFoyNHNJRWx1WXk0eEh6QWRCZ05WQkFzVEZsWmxj
bWxUYVdkdUlGUnlkWE4wSUU1bGRIZHYKY21zeE9qQTRCZ05WQkFzVE1TaGpLU0F4T1RrNUlGWmxjbWxUYVd
kdUxDQkpibU11SUMwZ1JtOXlJR0YxZEdodmNtbDZaV1FnZFhObApJRzl1YkhreFJUQkRCZ05WQkFNVFBGWm
xjbWxUYVdkdUlFTnNZWE56SURNZ1VIVmliR2xqSUZCeWFXMWhjbmtnUTJWeWRHbG1hV05oCmRHbHZiaUJCZ
FhSb2IzSnBkSGtnTFNCSE16QWVGdzA1T1RFd01ERXdNREF3TURCYUZ3MHpOakEzTVRZeU16VTVOVGxhTUlI
S01Rc3cKQ1FZRFZRUUdFd0pWVXpFWE1CVUdBMVVFQ2hNT1ZtVnlhVk5wWjI0c0lFbHVZeTR4SHpBZEJnTlZ
CQXNURmxabGNtbFRhV2R1SUZSeQpkWE4wSUU1bGRIZHZjbXN4T2pBNEJnTlZCQXNUTVNoaktTQXhPVGs1SU
ZabGNtbFRhV2R1TENCSmJtTXVJQzBnUm05eUlHRjFkR2h2CmNtbDZaV1FnZFhObElHOXViSGt4UlRCREJnT
lZCQU1UUEZabGNtbFRhV2R1SUVOc1lYTnpJRE1nVUhWaWJHbGpJRkJ5YVcxaGNua2cKUTJWeWRHbG1hV05o
ZEdsdmJpQkJkWFJvYjNKcGRIa2dMU0JITXpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVF
vQwpnZ0VCQU11Nm5GTDhlQjhhSG04Yk4zTzkrTWxybEJJd1QvQTJSL1hRa1FyMUY4aWxZY0VXUUUzN2ltR1
E1WFlnd1JFR2Zhc3NicWIxCkVVR08raTJ0S21GWnBHY21UTkRvdkZKYmNDQUVXTkY2eWFScHZJTVhaSzBGa
Td6UVdNNk5qUFhyOEVKSkM1MlhKMmN5YnVHdWt4VWMKY0x3Z1RTOFkzcEtJNkd5RlZ4RWE2WDdqSmhGVW9r
V1dWWVBLTUlubzNOaWo3U3FBUDM5NVpWYytGU0JtQ0MrVms3K3FSeStvUnBmdwpFdUwrd2dvclVlWjI1cmR
HdCtJTnBzeW93MHhaVllubTZGTmNIT3FkOEdJV0M2ZkpYd3p3M3NKMnpxLzNhdkw2UWFhaU14VEo1WHBqCj
A1NWlOOVdGWlo0TzVsTWtkQnRlSFJKVFc4Y3M1NE5KT3hXdWltaTVWNWNDQXdFQUFUQU5CZ2txaGtpRzl3M
EJBUVVGQUFPQ0FRRUEKRVJTV3dhdVNDUGMvTDhteS91UmFuMlRlMnlGUGhwazBkalpYM2RBVkw4V3RmeFVm
TjJKelB0VG5YODRYQTlzMStpdmJybUFKWHg1ZgpqMjY3Q3ozcVdoTWVER0J2dGNDMUl5SXVCd3ZMcVhUTFI
3c2R3ZGVsYTh3djBrTDlTZDJuaWM5VHV0b0FXaWkvZ3QvNHVoTWRVSWFDCi9ZNHdqeWxHc0I0OU5kbzRZaF
lZU3EzbXRsRnMzcTlpNndIUUhpVCtlbzhTR2hKb3VQdG1tUlFVUlZ5dTU2NXBGNEVyV2pmSlhpcjAKeHVLa
FhGU2JwbFFBei9EeHdjZVlNQm83TmhiYm8yN3EvYTJ5d3RydkFrY1Rpc0R4c3pHdFR4emhUNXl2RHd5ZDkz
Z04yUFExVm9EYQp0MjBYajUwZWdXVGgvc1ZGdXExcnVRcDZUazlMaE81TDhYM2RFUT09Ci0tLS0tRU5EIEN
FUlRJRklDQVRFLS0tLS0KClZlcmlzaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbi
BBdXRob3JpdHkgLSBHMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
T09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVHakNDQXdJQ0VRRHNvS2VM
Ym5WcUFjL0VmTXd2bEY3WE1BMEdDU3FHU0liM0RRRUJCUVVBTUlIS01Rc3dDUVlEVlFRR0V3SlYKVXpFWE1
CVUdBMVVFQ2hNT1ZtVnlhVk5wWjI0c0lFbHVZeTR4SHpBZEJnTlZCQXNURmxabGNtbFRhV2R1SUZSeWRYTj
BJRTVsZEhkdgpjbXN4T2pBNEJnTlZCQXNUTVNoaktTQXhPVGs1SUZabGNtbFRhV2R1TENCSmJtTXVJQzBnU
m05eUlHRjFkR2h2Y21sNlpXUWdkWE5sCklHOXViSGt4UlRCREJnTlZCQU1UUEZabGNtbFRhV2R1SUVOc1lY
TnpJRFFnVUhWaWJHbGpJRkJ5YVcxaGNua2dRMlZ5ZEdsbWFXTmgKZEdsdmJpQkJkWFJvYjNKcGRIa2dMU0J
ITXpBZUZ3MDVPVEV3TURFd01EQXdNREJhRncwek5qQTNNVFl5TXpVNU5UbGFNSUhLTVFzdwpDUVlEVlFRR0
V3SlZVekVYTUJVR0ExVUVDaE1PVm1WeWFWTnBaMjRzSUVsdVl5NHhIekFkQmdOVkJBc1RGbFpsY21sVGFXZ
HVJRlJ5CmRYTjBJRTVsZEhkdmNtc3hPakE0QmdOVkJBc1RNU2hqS1NBeE9UazVJRlpsY21sVGFXZHVMQ0JK
Ym1NdUlDMGdSbTl5SUdGMWRHaHYKY21sNlpXUWdkWE5sSUc5dWJIa3hSVEJEQmdOVkJBTVRQRlpsY21sVGF
XZHVJRU5zWVhOeklEUWdVSFZpYkdsaklGQnlhVzFoY25rZwpRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0
pwZEhrZ0xTQkhNekNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DCmdnRUJBSzNMcFJGc
HhsbXI4WSsxR1E5V3pzeTFIeURrbmlZbFMrQnpaWWxaM3RDRDVQVVB0YnV0OFh6b0lmems2QXp1ZkVVaUdY
YVMKdEJPM0lGc0orbUd1cVBLbGpZWENLdGJlWmpiU213TDBxSkpnZkp4cHRJOGtIdENHVXZZeW5FRllIaUs
5elVWaWxRaHUwR2JkVTZMTQo4QkRjVkhPTEJLRkdNek5jRjBDNW5rM1Q4NzVWZytpeGlZNWFmSnFXSXBBN2
lDWHkwbE9JQWd3TGVQTG1OeGRMTUVZSDVJQnRwdGlXCkx1Z3MrQkd6T0ExbXBwdnF5U05iMjQ3aTh4T09Hb
Gt0cWdMdzdLU0hadHpCUC9YWXVmVHNnc2JTUFpVZDVjQlBoTW5abzBRb0JtclgKUmF6d2EycnZUbC80RVlJ
ZU9HTTBabERVUHBOeitqRERacTMva3kyWDd3TUNBd0VBQVRBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQQp
qL29sYTA5YjVLUk9KMVdySWhWWlBNcTFDdFJLMjZ2ZG9WOVR4YUJYT2NMT1J5dStPc2hXdjhMWkp4QTZzUV
U4d0hjeHV6clRCWHR0Cm1od3dqSURMazVNcWc2c0ZVWUlDQUJGbmEvT0lZVWRmQTVQVld3M2c4ZFNoTWpXR
nNqcmJzSUtyMGNzS3ZFK01XOFZMQURzZktvS20KZmphRjNINDhad0MxNUR0UzRLanJYUlg1eG0zd3JSME9o
YmVwbW5NVVdsdVBRU2pBMWVndFRhUmV6YXJaN2M3YzJOVThRaDBYd1JKZApSVGpET1BQOGhTNkRSa2l5MXl
CZmtqYVA1M2tQbUY2WjZQRFFwTHYxVTcwcXpsbXdyMjUvYkx2U0hnQ3dJZTM0UVdLQ3VkaXl4THRHClVQTX
h4WThCcUhUcjlYZ24ydWYzWmtQem5vTStJS3JETldDUnpnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tL
QoKRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDQQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFMkRDQ0JFR2dBd0lCQWdJRU4wclNRekFOQmdrcWhraUc
5dzBCQVFVRkFEQ0J3ekVMTUFrR0ExVUVCaE1DVlZNeEZEQVNCZ05WCkJBb1RDMFZ1ZEhKMWMzUXVibVYwTV
Rzd09RWURWUVFMRXpKM2QzY3VaVzUwY25WemRDNXVaWFF2UTFCVElHbHVZMjl5Y0M0Z1lua2cKY21WbUxpQ
W9iR2x0YVhSeklHeHBZV0l1S1RFbE1DTUdBMVVFQ3hNY0tHTXBJREU1T1RrZ1JXNTBjblZ6ZEM1dVpYUWdU
R2x0YVhSbApaREU2TURnR0ExVUVBeE14Ulc1MGNuVnpkQzV1WlhRZ1UyVmpkWEpsSUZObGNuWmxjaUJEWlh
KMGFXWnBZMkYwYVc5dUlFRjFkR2h2CmNtbDBlVEFlRncwNU9UQTFNalV4TmpBNU5EQmFGdzB4T1RBMU1qVX
hOak01TkRCYU1JSERNUXN3Q1FZRFZRUUdFd0pWVXpFVU1CSUcKQTFVRUNoTUxSVzUwY25WemRDNXVaWFF4T
3pBNUJnTlZCQXNUTW5kM2R5NWxiblJ5ZFhOMExtNWxkQzlEVUZNZ2FXNWpiM0p3TGlCaQplU0J5WldZdUlD
aHNhVzFwZEhNZ2JHbGhZaTRwTVNVd0l3WURWUVFMRXh3b1l5a2dNVGs1T1NCRmJuUnlkWE4wTG01bGRDQk1
hVzFwCmRHVmtNVG93T0FZRFZRUURFekZGYm5SeWRYTjBMbTVsZENCVFpXTjFjbVVnVTJWeWRtVnlJRU5sY2
5ScFptbGpZWFJwYjI0Z1FYVjAKYUc5eWFYUjVNSUdkTUEwR0NTcUdTSWIzRFFFQkFRVUFBNEdMQURDQmh3S
0JnUUROS0lNMFZCdUo4dyt2TjVFeC82OHhZTW1vNkxJUQphTzJmNTVNMjhRcGt1MGYxQkJjL0kwZE54U2Na
Z1NZTVZISU5pQzNaSDVvU243eXpjZE9BR1Q5SFpudU1OU2pTdVFyZkpOcWMxbEI1CmdYcGEwemYzd2tyWUt
aSW1aTkhrbUd3NkFJcjFOSnRsK08zakVQLzl1RWxZM0tEZWdqbHJnYkVXR1dHNVZMYm1Rd0lCQTZPQ0FkY3
cKZ2dIVE1CRUdDV0NHU0FHRytFSUJBUVFFQXdJQUJ6Q0NBUmtHQTFVZEh3U0NBUkF3Z2dFTU1JSGVvSUhib
0lIWXBJSFZNSUhTTVFzdwpDUVlEVlFRR0V3SlZVekVVTUJJR0ExVUVDaE1MUlc1MGNuVnpkQzV1WlhReE96
QTVCZ05WQkFzVE1uZDNkeTVsYm5SeWRYTjBMbTVsCmRDOURVRk1nYVc1amIzSndMaUJpZVNCeVpXWXVJQ2h
zYVcxcGRITWdiR2xoWWk0cE1TVXdJd1lEVlFRTEV4d29ZeWtnTVRrNU9TQkYKYm5SeWRYTjBMbTVsZENCTW
FXMXBkR1ZrTVRvd09BWURWUVFERXpGRmJuUnlkWE4wTG01bGRDQlRaV04xY21VZ1UyVnlkbVZ5SUVObApjb
lJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TVEwd0N3WURWUVFERXdSRFVrd3hNQ21nSjZBbGhpTm9kSFJ3
T2k4dmQzZDNMbVZ1CmRISjFjM1F1Ym1WMEwwTlNUQzl1WlhReExtTnliREFyQmdOVkhSQUVKREFpZ0E4eE9
UazVNRFV5TlRFMk1EazBNRnFCRHpJd01Ua3cKTlRJMU1UWXdPVFF3V2pBTEJnTlZIUThFQkFNQ0FRWXdId1
lEVlIwakJCZ3dGb0FVOEJkaUUxVTlzLzhLQUd2N1VJU1g4KzFpMEJvdwpIUVlEVlIwT0JCWUVGUEFYWWhOV
lBiUC9DZ0JyKzFDRWwvUHRZdEFhTUF3R0ExVWRFd1FGTUFNQkFmOHdHUVlKS29aSWh2WjlCMEVBCkJBd3dD
aHNFVmpRdU1BTUNCSkF3RFFZSktvWklodmNOQVFFRkJRQURnWUVBa053d0F2cGtkTUtuQ3FWOElZMDBGNmo
3Unc3L0pYeU4KRXdyNzVKaTE3NHo0eFJBTjk1Sys4Y1BWMVpWcUJMc3N6aVkyWmNneHh1ZnVQK05YZFlSNk
VlOUdUeGowMDVpN3FJY3l1bkwyUE9JOQpuOWNkM
mNOZ1E0eFlEaUtXTDJLakxCKzZyUVh2cXpKNGg2QlVjeG0xWEFYNVVqNXRMVVVMOXdxVDZ1MEcrYkk9Ci0t
LS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkVudHJ1c3QubmV0IFByZW1pdW0gMjA0OCBTZWN1cmUgU2VydmV
yIENBCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVE
lGSUNBVEUtLS0tLQpNSUlFWERDQ0EwU2dBd0lCQWdJRU9HTzVaakFOQmdrcWhraUc5dzBCQVFVRkFEQ0J0R
EVVTUJJR0ExVUVDaE1MUlc1MGNuVnpkQzV1ClpYUXhRREErQmdOVkJBc1VOM2QzZHk1bGJuUnlkWE4wTG01
bGRDOURVRk5mTWpBME9DQnBibU52Y25BdUlHSjVJSEpsWmk0Z0tHeHAKYldsMGN5QnNhV0ZpTGlreEpUQWp
CZ05WQkFzVEhDaGpLU0F4T1RrNUlFVnVkSEoxYzNRdWJtVjBJRXhwYldsMFpXUXhNekF4QmdOVgpCQU1US2
tWdWRISjFjM1F1Ym1WMElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1SUNneU1EUTRLVEFlRncwN
U9URXlNalF4Ck56VXdOVEZhRncweE9URXlNalF4T0RJd05URmFNSUcwTVJRd0VnWURWUVFLRXd0RmJuUnlk
WE4wTG01bGRERkFNRDRHQTFVRUN4UTMKZDNkM0xtVnVkSEoxYzNRdWJtVjBMME5RVTE4eU1EUTRJR2x1WTI
5eWNDNGdZbmtnY21WbUxpQW9iR2x0YVhSeklHeHBZV0l1S1RFbApNQ01HQTFVRUN4TWNLR01wSURFNU9Ua2
dSVzUwY25WemRDNXVaWFFnVEdsdGFYUmxaREV6TURFR0ExVUVBeE1xUlc1MGNuVnpkQzV1ClpYUWdRMlZ5Z
EdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwZEhrZ0tESXdORGdwTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFP
Q0FROEEKTUlJQkNnS0NBUUVBclUxTHFSS0dzdXFqSUFjVkZtUXFLMHZSdnd0S1RZN3RnSGFsWjdkNFFNQnp
Rc2hvd050VEs5MWV1SGFZTlpPTApHcDE4RXpvT0gxdTNIcy9sSkJRZXNZR3BqWDI0ekd0TEEvRUNETnlycF
VBa0FIOTBsS0dkQ0NtemlBdjFoM2VkVmMza3czN1hhbVNyCmhSU0dsVnVYTWxCdlBjaTZaZ3pqL0wyNFNjR
jJpVWtaL2NDb3ZZbWpaeS9Hbjd4eEdXQzRMZWtzeVpCMlpudVU0cTk0MW1WVFhUelcKbkxMUEtRUDVMNlJR
c3RSSXpnVXlWWXI5c21STUR1U1lCM1hiZjkrNUNGVmdoVEFwK1h0SXBHbUc0elUvSG9aZGVub1Z2ZThBamh
VaQpWQmNBa0NhVHZBNUphSkcvK0VmVG5aVkN3UTVOMzI4bXo4TVlJV0ptUTNEVzFjQUg0UUlEQVFBQm8zUX
djakFSQmdsZ2hrZ0JodmhDCkFRRUVCQU1DQUFjd0h3WURWUjBqQkJnd0ZvQVVWZVNCMFJHQXZ0aUp1UWlqT
WZtaEpBa1d1WEF3SFFZRFZSME9CQllFRkZYa2dkRVIKZ0w3WWlia0lvekg1b1NRSkZybHdNQjBHQ1NxR1NJ
YjJmUWRCQUFRUU1BNGJDRlkxTGpBNk5DNHdBd0lFa0RBTkJna3Foa2lHOXcwQgpBUVVGQUFPQ0FRRUFXVWV
zSVlTS0Y4bWNpVk1ldW9DRkdzWThUajZ4bkxaOHhwSmRHR1FDNDlNR0NCRmhmR1BqSzUweEEzQjIwcU1vCm
9QUzdtbU56N1czbEt0dnRGS2tyeGpZUjBDdnJCNHVsMnA1Y0daMVdFdlZVS2NnRjdiSVNLbzMwQXh2LzU1S
VFoN0E2dGNPZEJUY1MKbzhmMEZiblZwRGtXbTFNNkk1SHhxSUtpYW9ob3dYa0NJcnlxcHRhdTM3QVVYN2lI
ME4xOGYzdi9yeHpQNXRzSHJWN2JoWjNRS3cwegoyd1RSNWtsQUV5dDIrejdwbklrUEZjNFlzSVY0SVU5clR
3NzZObWZOQi9ML0NORGkzdG0vS3ErNGg0WWhQQVRLdDVSb2Y4ODg2WmpYCk9QL3N3TmxROEM1TFdLNUdiOU
F1dzJEYWNsVnl2VXhGbm1HNnY0U0JrZ1BSMG1sOHhRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKQ
mFsdGltb3JlIEN5YmVyVHJ1c3QgUm9vdAo9PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4g
Q0VSVElGSUNBVEUtLS0tLQpNSUlEZHpDQ0FsK2dBd0lCQWdJRUFnQUF1VEFOQmdrcWhraUc5dzBCQVFVRkF
EQmFNUXN3Q1FZRFZRUUdFd0pKUlRFU01CQUdBMVVFCkNoTUpRbUZzZEdsdGIzSmxNUk13RVFZRFZRUUxFd3
BEZVdKbGNsUnlkWE4wTVNJd0lBWURWUVFERXhsQ1lXeDBhVzF2Y21VZ1EzbGkKWlhKVWNuVnpkQ0JTYjI5M
E1CNFhEVEF3TURVeE1qRTRORFl3TUZvWERUSTFNRFV4TWpJek5Ua3dNRm93V2pFTE1Ba0dBMVVFQmhNQwpT
VVV4RWpBUUJnTlZCQW9UQ1VKaGJIUnBiVzl5WlRFVE1CRUdBMVVFQ3hNS1EzbGlaWEpVY25WemRERWlNQ0F
HQTFVRUF4TVpRbUZzCmRHbHRiM0psSUVONVltVnlWSEoxYzNRZ1VtOXZkRENDQVNJd0RRWUpLb1pJaHZjTk
FRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFLTUUKdXlLcm1EMVg2Q1p5bXJWNTFDbmk0ZWlWZ0xHdzQxdU9Le
W1hWk4raFhlMndDUVZ0MnlndXptS2lZdjYwaU5vUzZ6anJJWjNBUVNzQgpVbnVJZDlNY2o4ZTZ1WWkxYWdu
bmMrZ1JRS2ZSek1waWpTM2xqd3VtVU5Lb1VNTW82dldySlllS21wWWNxV2U0UHd6VjkvbFNFeS9DCkc5Vnd
jUENQd0JMS0JzdWE0ZG5LTTNwMzF2anN1ZkZvUkVKSUU5TEF3cVN1WG1EK3RxWUYvTFRkQjFrQzFGa1ltR1
AxcFdQZ2tBeDkKWGJJR2V2T0Y2dXZVQTY1ZWhENWYveFh0YWJ6NU9UWnlkYzkzVWszenlaQXN1VDNseVNOV
FB4OGttQ0ZjQjVrcHZjWTY3T2R1aGpwcgpsM1JqTTcxb0dESHdlSTEydi95ZWpsMHFocWROa053bkdqa0NB
d0VBQWFORk1FTXdIUVlEVlIwT0JCWUVGT1dkV1RDQ1Ixak1yUG9JClZEYUdlenExQkUzd01CSUdBMVVkRXd
FQi93UUlNQVlCQWY4Q0FRTXdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BMEdDU3FHU0liM0RRRUIKQlFVQUE0SU
JBUUNGREYyTzVHOVJhRUlGb04yN1R5Y2xoQU85OTJUOUxkY3c0NlFRRit2YUtTbTJlVDkyOWhrVEk3Z1FDd
mxZcE5SaApjTDBFWVdvU2loZlZDcjNGdkRCODF1a01KWTJHUUUvc3pLTitPTVkzRVUvdDNXZ3hqa3pTc3dG
MDdyNTFYZ2RJR245dy94WmNoTUI1CmhiZ0YvWCsrWlJHakQ4QUN0UGhTTnprRTFha3hlaGkvb0NyMEVwbjN
vMFdDNHp4ZTlaMmV0Y2llZkM3SXBKNU9DQlJMYmYxd2JXc2EKWTcxazVoKzN6dkR5bnk2N0c3ZnlVSWh6a3
NMaTR4YU5taklDcTQ0WTNla1FFZTUrTmF1UXJ6NHdsSHJRTXoyblpRLzEvSTZlWXM5SApSQ3dCWGJzZHRUT
FNSOUk0THREK2dkd3lhaDYxN2p6Vi9PZUJIUm5ESkVMcVl6bXAKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0t
LQoKRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQQo9PT09PT09PT09PT09PT09PT09PT09PT0
9PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlDa0RDQ0FmbWdBd0lCQWdJQkFUQU
5CZ2txaGtpRzl3MEJBUVFGQURCYU1Rc3dDUVlEVlFRR0V3SlZVekVjTUJvR0ExVUVDaE1UClJYRjFhV1poZ
UNCVFpXTjFjbVVnU1c1akxqRXRNQ3NHQTFVRUF4TWtSWEYxYVdaaGVDQlRaV04xY21VZ1IyeHZZbUZzSUdW
Q2RYTnAKYm1WemN5QkRRUzB4TUI0WERUazVNRFl5TVRBME1EQXdNRm9YRFRJd01EWXlNVEEwTURBd01Gb3d
XakVMTUFrR0ExVUVCaE1DVlZNeApIREFhQmdOVkJBb1RFMFZ4ZFdsbVlYZ2dVMlZqZFhKbElFbHVZeTR4TF
RBckJnTlZCQU1USkVWeGRXbG1ZWGdnVTJWamRYSmxJRWRzCmIySmhiQ0JsUW5WemFXNWxjM01nUTBFdE1UQ
0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUF1dWNYa0FKbHNUUlYKUEVuQ1VkWGZwOUUz
ajlIbmdYTkJVbUNibmFFWEpuaXR4N0hvSnBReXRkNHpqVG92Mi9LYWVscHptS05jNmZ1S2N4dGM1OE8vZ0d
6TgpxZlRXSzhEMytabXFZNkt4UndJUDFPUlJPaEk4YklwYVZJUncyOEhGa005eVJjdW9XY0ROTTUwL281Yn
JoVE1oSEQ0ZVBtQnVkcHhuCmhjWEl3MkVDQXdFQUFhTm1NR1F3RVFZSllJWklBWWI0UWdFQkJBUURBZ0FIT
UE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SHdZRFZSMGoKQkJnd0ZvQVV2cWlnZEhKUWEwUzN5U1BZKzZqL3Mx
ZHJhR3d3SFFZRFZSME9CQllFRkw2b29IUnlVR3RFdDhrajJQdW8vN05YYTJocwpNQTBHQ1NxR1NJYjNEUUV
CQkFVQUE0R0JBRERpQVZHcXgrcGYycm5RWlE4dzFqN2FEUlJKYnBHVEp4UXg3OFQzTFVYNDdNZS9va0VOCk
k3U1MrUmtBWjcwQnI4M2djZnhhejJURTRKYVkwS05BNGdHSzd5Y0g4V1VCaWtRdEJtVjFVc0NHRUNBaFgye
HJEMnl1Q1J5djhxSVkKTk1SMXBITWM4WTNjNzYzNXMzYTBrci9jbFJBZXZzdklPMXFFWUJsV2xLbFYKLS0t
LS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBIDEKPT09PT09PT0
9PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNnakNDQWV1Z0
F3SUJBZ0lCQkRBTkJna3Foa2lHOXcwQkFRUUZBREJUTVFzd0NRWURWUVFHRXdKVlV6RWNNQm9HQTFVRUNoT
VQKUlhGMWFXWmhlQ0JUWldOMWNtVWdTVzVqTGpFbU1DUUdBMVVFQXhNZFJYRjFhV1poZUNCVFpXTjFjbVVn
WlVKMWMybHVaWE56SUVOQgpMVEV3SGhjTk9Ua3dOakl4TURRd01EQXdXaGNOTWpBd05qSXhNRFF3TURBd1d
qQlRNUXN3Q1FZRFZRUUdFd0pWVXpFY01Cb0dBMVVFCkNoTVRSWEYxYVdaaGVDQlRaV04xY21VZ1NXNWpMak
VtTUNRR0ExVUVBeE1kUlhGMWFXWmhlQ0JUWldOMWNtVWdaVUoxYzJsdVpYTnoKSUVOQkxURXdnWjh3RFFZS
ktvWklodmNOQVFFQkJRQURnWTBBTUlHSkFvR0JBTTR2R2J3WHQzZmVrNmxmV2cwWFR6UWFESmowSXRsWgox
TVJvUnZDME5jV0ZBeURHcjBXbElWRkZRZXNXV0RZeWIrSlFZbVQ1L1ZHY3FpVFo5SjJES29jS0lkTVNPRFJ
zalFCdVdxRFpRdTRhCklaWDVVa3hWV3NVUE9FOUcrbTM0TGpYV0hYenI0dkN3ZFlESXFST3N2b2p2T202cl
h5bzRZZ0t3RW52K2o2WURBZ01CQUFHalpqQmsKTUJFR0NXQ0dTQUdHK0VJQkFRUUVBd0lBQnpBUEJnTlZIU
k1CQWY4RUJUQURBUUgvTUI4R0ExVWRJd1FZTUJhQUZFcDRNbElSMjFrVwpObDdmd1JRMlFHcEhmRXloTUIw
R0ExVWREZ1FXQkJSS2VESlNFZHRaRmpaZTM4RVVOa0JxUjN4TW9UQU5CZ2txaGtpRzl3MEJBUVFGCkFBT0J
nUUIxVzZpYkF4SG02VlpNemZtcFRNQU5tdlBNWldubUpYYk1XYmZXVk1NZHpabXNHZDIwaGRYZ1BmeGlJS2
VFUzFobDhlTDUKbFNFLzlkUitXQjVIaDFRK1dLRzF0ZmdxNzNIbnZNUDJzVWxHNHRlZ2ErVldlcG9ubUh4R
1loVG55Znh1QXhKNWdEZ2RTSUtOL0JmKwpLcFlydFdLbXBqMjlmNUpaelZvcWdySTNlUT09Ci0tLS0tRU5E
IENFUlRJRklDQVRFLS0tLS0KCkVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQSAyCj09PT09PT09PT09PT0
9PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlESURDQ0FvbWdBd0lCQW
dJRU4zRFB0VEFOQmdrcWhraUc5dzBCQVFVRkFEQk9NUXN3Q1FZRFZRUUdFd0pWVXpFWE1CVUdBMVVFCkNoT
U9SWEYxYVdaaGVDQlRaV04xY21VeEpqQWtCZ05WQkFzVEhVVnhkV2xtWVhnZ1UyVmpkWEpsSUdWQ2RYTnBi
bVZ6Y3lCRFFTMHkKTUI0WERUazVNRFl5TXpFeU1UUTBOVm9YRFRFNU1EWXlNekV5TVRRME5Wb3dUakVMTUF
rR0ExVUVCaE1DVlZNeEZ6QVZCZ05WQkFvVApEa1Z4ZFdsbVlYZ2dVMlZqZFhKbE1TWXdKQVlEVlFRTEV4MU
ZjWFZwWm1GNElGTmxZM1Z5WlNCbFFuVnphVzVsYzNNZ1EwRXRNakNCCm56QU5CZ2txaGtpRzl3MEJBUUVGQ
UFPQmpRQXdnWWtDZ1lFQTVEazVreDVTQmhzb052aXlveW5GN1k2eUViMys2K2UwZE1LUC93WG4KMlowR3Z4
TElQdzd5MXRFa3NoSGUwWE1KaXRTeExKZ0pEUjVRUnJLRHBrV05ZbWk3aFJzZ2NES3FRTTJtbGwvRWNUYy9
CUE8zUVNRNQpCeG9lTG1GWW9CSUw1YVhmeGF2cU4zSE1ITWczT3JtWFVxZXN4V29rbEU2Y2U4L0FhdGJmSW
IwQ0F3RUFBYU9DQVFrd2dnRUZNSEFHCkExVWRId1JwTUdjd1phQmpvR0drWHpCZE1Rc3dDUVlEVlFRR0V3S
lZVekVYTUJVR0ExVUVDaE1PUlhGMWFXWmhlQ0JUWldOMWNtVXgKSmpBa0JnTlZCQXNUSFVWeGRXbG1ZWGdn
VTJWamRYSmxJR1ZDZFhOcGJtVnpjeUJEUVMweU1RMHdDd1lEVlFRREV3UkRVa3d4TUJvRwpBMVVkRUFRVE1
CR0JEekl3TVRrd05qSXpNVEl4TkRRMVdqQUxCZ05WSFE4RUJBTUNBUVl3SHdZRFZSMGpCQmd3Rm9BVVVKNE
w2cTllCnVTQklwbEJxeS8zWUlIcW5nbll3SFFZRFZSME9CQllFRkZDZUMrcXZYcmtnU0taUWFzdjkyQ0I2c
DRKMk1Bd0dBMVVkRXdRRk1BTUIKQWY4d0dnWUpLb1pJaHZaOUIwRUFCQTB3Q3hzRlZqTXVNR01EQWdiQU1B
MEdDU3FHU0liM0RRRUJCUVVBQTRHQkFBeUdncTNvVGhyMQpqb2tuNGpWWVBTbTBCNDgyVUpXL2JzR2U2OFN
Rc29Xb3U3ZEM0QThIT2QvN25wQ3kwY0UrVTU4RFJMQitTL1J2NUh3ZjUrS3g1TGlhCjc4Tzl6dDRMTWpUWj
NpanRNMnZFMU5jOUVsaXJmUWt0eTNEMUU0cVVvU2VrMW5ERmJaUzF5WDJkb05MR0NFblpacHVtMC9RTDNNV
W0KVitHUk1Pck4KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKQWRkVHJ1c3QgTG93LVZhbHVlIFNlcnZp
Y2VzIFJvb3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0F
URS0tLS0tCk1JSUVHRENDQXdDZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJsTVFzd0NRWURWUV
FHRXdKVFJURVVNQklHQTFVRUNoTUwKUVdSa1ZISjFjM1FnUVVJeEhUQWJCZ05WQkFzVEZFRmtaRlJ5ZFhOM
ElGUlVVQ0JPWlhSM2IzSnJNU0V3SHdZRFZRUURFeGhCWkdSVQpjblZ6ZENCRGJHRnpjeUF4SUVOQklGSnZi
M1F3SGhjTk1EQXdOVE13TVRBek9ETXhXaGNOTWpBd05UTXdNVEF6T0RNeFdqQmxNUXN3CkNRWURWUVFHRXd
KVFJURVVNQklHQTFVRUNoTUxRV1JrVkhKMWMzUWdRVUl4SFRBYkJnTlZCQXNURkVGa1pGUnlkWE4wSUZSVV
VDQk8KWlhSM2IzSnJNU0V3SHdZRFZRUURFeGhCWkdSVWNuVnpkQ0JEYkdGemN5QXhJRU5CSUZKdmIzUXdnZ
0VpTUEwR0NTcUdTSWIzRFFFQgpBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ1dsdFFoU1dEaWEraEJCd3pleE9E
Y0V5UE53VFhIKzlaT0VRcG5YdlVHVzJ1bENEdGJLUlk2CjU0ZXlOQWJGdkFXbEEzeUN5eWtRcnVHSWdiM1d
udFArTFZiQkZjN2pKcDBWTGhEN0JvOHdCTjZudEdPMC83R2Nyanl2ZDdaV3hiV3IKb3VscE9qME9NM2t5UD
NDQ2twbGhiWTB3Q0k5eFA2WklWeG40SmR4TFpseWxkSStZcnNqNXdBWWk1Nnh6MzZVdSsxTGNzUlZsSVBvM
QpabW5lM3l6eGJyd3cyeXdrRXR2ck5UVm9rTXNBc0pjaFBYUWhJMlUwSzd0NFdhUFc0WFk1bXFSSmpveDBy
MjZrbXFQWm05STRYSnVpCkdNeDFJNFMrNitKTk0zR09HdkRDK01jZG9xMERseXo0enlYRzlyZ2tNYkZqWFp
KL1kvQWx5Vk11SDc5TkFnTUJBQUdqZ2RJd2djOHcKSFFZRFZSME9CQllFRkpXeHRQQ1V0cjNIMnRFUkNTRy
t3YTlKL1JCN01Bc0dBMVVkRHdRRUF3SUJCakFQQmdOVkhSTUJBZjhFQlRBRApBUUgvTUlHUEJnTlZIU01FZ
1ljd2dZU0FGSld4dFBDVXRyM0gydEVSQ1NHK3dhOUovUkI3b1dta1p6QmxNUXN3Q1FZRFZRUUdFd0pUClJU
RVVNQklHQTFVRUNoTUxRV1JrVkhKMWMzUWdRVUl4SFRBYkJnTlZCQXNURkVGa1pGUnlkWE4wSUZSVVVDQk9
aWFIzYjNKck1TRXcKSHdZRFZRUURFeGhCWkdSVWNuVnpkQ0JEYkdGemN5QXhJRU5CSUZKdmIzU0NBUUV3RF
FZSktvWklodmNOQVFFRkJRQURnZ0VCQUN4dApaQnNmelEzZHVRSDZsbU0wTWtoSG1hNlg3ZjF5RnFaelIxc
jA2OTNwOWRiN1Jjd3BpVVJkdjBZNVBlanV2RTFV
aGg0ZGJPTVhKMFBoCmlWWXJxVzl5VGtrejQzSjhLaU9hdkQ3L0tDcnRvLzhjSTdwRFZ3bG5UVXRpQmkzNC8
yeWRZQjdZSEV0OXRURXYyZEI4WGZqZWE0TVkKZURkWEwrZ3pCMmZmSHNkcktwVjJybzlYby9EMFVyU3BVd2
pQNEUvVGVsT0wvYnNjVmpieS9ySzI1WGE3MVNKbHB6LyswV2F0Qzd4cgptWWJ2UDMzekdETEtlOGJqcTJSR
2xmZ21hZGxWZzNzc2xnZi9XU3hFbzhibDZhbmNvV09BV2lGZUljOVRWUEM2YjRuYnFLcVZ6NHZqCmNjd2VH
eUJFQ01CNnRrRDl4T1ExNFIwV0hOQzhLNDdXY2RrPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpBZGR
UcnVzdCBFeHRlcm5hbCBSb290Cj09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0
FURS0tLS0tCk1JSUVOakNDQXg2Z0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJ2TVFzd0NRWURWU
VFHRXdKVFJURVVNQklHQTFVRUNoTUwKUVdSa1ZISjFjM1FnUVVJeEpqQWtCZ05WQkFzVEhVRmtaRlJ5ZFhO
MElFVjRkR1Z5Ym1Gc0lGUlVVQ0JPWlhSM2IzSnJNU0l3SUFZRApWUVFERXhsQlpHUlVjblZ6ZENCRmVIUmx
jbTVoYkNCRFFTQlNiMjkwTUI0WERUQXdNRFV6TURFd05EZ3pPRm9YRFRJd01EVXpNREV3Ck5EZ3pPRm93Yn
pFTE1Ba0dBMVVFQmhNQ1UwVXhGREFTQmdOVkJBb1RDMEZrWkZSeWRYTjBJRUZDTVNZd0pBWURWUVFMRXgxQ
lpHUlUKY25WemRDQkZlSFJsY201aGJDQlVWRkFnVG1WMGQyOXlhekVpTUNBR0ExVUVBeE1aUVdSa1ZISjFj
M1FnUlhoMFpYSnVZV3dnUTBFZwpVbTl2ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVF
vQ2dnRUJBTGYzR2pQbThnQUVMVG5nVGx2dEg3eHNEODIxCitpTzJ6dDZiRVRPWHBDbE1mWk9mdlVxOGsrME
RHdU9QeitWdFVGcldseW1VV29Dd1NYcmJMcFg5dU1xL056Z3RIajZSUWExd1ZzZncKVHovb01wNTB5c2lRV
k9uR1h3OTRuWnBBUEE2c1lhcGVGSStlaDZGcVVOelhtazZ2QmJPbWNaU2NjYk5RWUFySEU1MDRCNFlDcU9t
bwphU1lZa0t0TXNFOGpxenBQaE5qZnpwL2hhVys3MTBMWGEwVGt4NjN1YlVGZmNscHhDRGV6ZVdXa1dhQ1V
OL2NBTHczQ2tuTGEwRGh5CjJ4U29SY1JkS24yM3ROYkU3cXpORTBTM3lTdmRRd0FsK21HNWFXcFlJeEczcH
pPUFZuVlo5YzBwMTBhM0NpdGx0dE5DYnhXeXVIdjcKNytsZFU5VTBXaWNDQXdFQUFhT0IzRENCMlRBZEJnT
lZIUTRFRmdRVXJiMlllalMwSnZmNnhDWlU3d085NENUTFZCb3dDd1lEVlIwUApCQVFEQWdFR01BOEdBMVVk
RXdFQi93UUZNQU1CQWY4d2daa0dBMVVkSXdTQmtUQ0Jqb0FVcmIyWWVqUzBKdmY2eENaVTd3Tzk0Q1RMClZ
CcWhjNlJ4TUc4eEN6QUpCZ05WQkFZVEFsTkZNUlF3RWdZRFZRUUtFd3RCWkdSVWNuVnpkQ0JCUWpFbU1DUU
dBMVVFQ3hNZFFXUmsKVkhKMWMzUWdSWGgwWlhKdVlXd2dWRlJRSUU1bGRIZHZjbXN4SWpBZ0JnTlZCQU1UR
1VGa1pGUnlkWE4wSUVWNGRHVnlibUZzSUVOQgpJRkp2YjNTQ0FRRXdEUVlKS29aSWh2Y05BUUVGQlFBRGdn
RUJBTENiNElVbHd0WWo0ZytXQnBLZFFaaWMyWVI1Z2RrZVd4UUhJelpsCmo3RFlkN3VzUVd4SFlJTlJzUGt
5UGVmODlpWVR4NEFXcGI5YS9JZlBlSG1KSVpyaVRBY0toalc4OHQ1UnhOS1d0OXgrVHU1dy9SdzUKNnd3Q1
VSUXRqcjBXNE1IZlJuWG5KSzNzOUVLMGhaTndFR2U2blFZMVNoalRLM3JNVVVLaGVtUFI1cnVoeFN2Q05yN
FREZWE5WTM1NQplNmNKRFVDcmF0MlBpc1AyOW93YVFnVlIxRVgxbjZkaUlXZ1ZJRU04bWVkOHZTVFlxWkVY
YzRnL1Zoc3hPQmkwY1ErYXpjZ09ubzR1CkcrR01tSVBMSHpIeFJFekdCSE5KZG1BUHgvaTlGNEJyTHVuTVR
BNWFtbmtQSUFvdTFaNWpKaDVWa3BUWWdoZGFlOUM4eDQ5T2hnUT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS
0tLQoKQWRkVHJ1c3QgUHVibGljIFNlcnZpY2VzIFJvb3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09P
T0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVGVENDQXYyZ0F3SUJBZ0lCQVRBTkJna3Foa2lH
OXcwQkFRVUZBREJrTVFzd0NRWURWUVFHRXdKVFJURVVNQklHQTFVRUNoTUwKUVdSa1ZISjFjM1FnUVVJeEh
UQWJCZ05WQkFzVEZFRmtaRlJ5ZFhOMElGUlVVQ0JPWlhSM2IzSnJNU0F3SGdZRFZRUURFeGRCWkdSVQpjbl
Z6ZENCUWRXSnNhV01nUTBFZ1VtOXZkREFlRncwd01EQTFNekF4TURReE5UQmFGdzB5TURBMU16QXhNRFF4T
lRCYU1HUXhDekFKCkJnTlZCQVlUQWxORk1SUXdFZ1lEVlFRS0V3dEJaR1JVY25WemRDQkJRakVkTUJzR0Ex
VUVDeE1VUVdSa1ZISjFjM1FnVkZSUUlFNWwKZEhkdmNtc3hJREFlQmdOVkJBTVRGMEZrWkZSeWRYTjBJRkI
xWW14cFl5QkRRU0JTYjI5ME1JSUJJakFOQmdrcWhraUc5dzBCQVFFRgpBQU9DQVE4QU1JSUJDZ0tDQVFFQT
ZSb3dqNE9JRk1FZzJEeWJqeHQrQTNTNzJtblRScVg0anNJTUVaQlJwUzltVkVCVjZ0c2ZTbGJ1Cm55TnU5R
G5Mb2JsdjhuNzVYWWNtWVo0YytPTHNwb0g0SWNVa3pCRU1QOXNtY25ySEFaY0hGL25YR0N3d2ZRNTZIbUll
eGt2QS9YMWkKZDlORUhpZjJQMHRFczdjNDJUa2ZZTlZSa25NRHRBQnA0L01VVHU3UjNBblBkelJHVUxENEV
mTCtPSG4zQnpuK1VaS1hDMXNJWHpTRwpBYTJJbCt0bXpWN1IvOXg5OG9UYXVuZXQzSUFJeDZlSDFsV2ZsMn
JveUJGa3V1Y1pLVDhSczNpUWhDQlNXeEh2ZU5DRDl0VklrTkF3CkhNK0ErV0QrZWVTSTh0MEE2NVJGNjJXV
WFVQzZ3TlcwdUxwOUJCR282ekVGbHBST1dDR09uOUJnL1FJREFRQUJvNEhSTUlIT01CMEcKQTFVZERnUVdC
QlNCUGpmWWtyQWZkNTljdEt0enF1ZjJOR0F2K2pBTEJnTlZIUThFQkFNQ0FRWXdEd1lEVlIwVEFRSC9CQVV
3QXdFQgovekNCamdZRFZSMGpCSUdHTUlHRGdCU0JQamZZa3JBZmQ1OWN0S3R6cXVmMk5HQXYrcUZvcEdZd1
pERUxNQWtHQTFVRUJoTUNVMFV4CkZEQVNCZ05WQkFvVEMwRmtaRlJ5ZFhOMElFRkNNUjB3R3dZRFZRUUxFe
FJCWkdSVWNuVnpkQ0JVVkZBZ1RtVjBkMjl5YXpFZ01CNEcKQTFVRUF4TVhRV1JrVkhKMWMzUWdVSFZpYkds
aklFTkJJRkp2YjNTQ0FRRXdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBQVAzRlVyNApKTm9qVmhhVGR0MDJ
LTG11RzdqRDhXUzZJQmg0bFNrblZ3VzhmQ3IwdVZGVjJvY0MzZzhXRnpINHFua3VDUk83cjdJZ0dSTGxrL2
xMCitZUG9STld5UVNXL2lIVnYveEQ4U2xUUVgvRDY3elp6ZlJzMlJjWWhiYlFWdUU3UG5GeWxQVm9Bamdia
lBHc3llL0tmOExiOTMvQW8KR0Vqd3hyelF2elNBbHNKS3NXMk94NUJGM2k5bnJFVUVvM3JjVlpMSlIyYllH
b3pIN1p4T211QVN1N1ZxVElUaDRTSU5od0JrL294OQpZamxscHU5Q3RvQWxFbUVCcUNRVGNBQVJKbC82TlZ
ERlNNd0dSK2duMkhDTlgyVG1vVVFtWGlMc2tzMy9RcHBFSVcxY3hlTWlIVjlICkV1Zk9YMTM2MktxeE15M1
pkdkpPT2pNTUs3TXRrQVk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkFkZFRydXN0IFF1YWxpZmllZ
CBDZXJ0aWZpY2F0ZXMgUm9vdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1C
RUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVIakNDQXdhZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZ
BREJuTVFzd0NRWURWUVFHRXdKVFJURVVNQklHQTFVRUNoTUwKUVdSa1ZISjFjM1FnUVVJeEhUQWJCZ05WQk
FzVEZFRmtaRlJ5ZFhOMElGUlVVQ0JPWlhSM2IzSnJNU013SVFZRFZRUURFeHBCWkdSVQpjblZ6ZENCUmRXR
nNhV1pwWldRZ1EwRWdVbTl2ZERBZUZ3MHdNREExTXpBeE1EUTBOVEJhRncweU1EQTFNekF4TURRME5UQmFN
R2N4CkN6QUpCZ05WQkFZVEFsTkZNUlF3RWdZRFZRUUtFd3RCWkdSVWNuVnpkQ0JCUWpFZE1Cc0dBMVVFQ3h
NVVFXUmtWSEoxYzNRZ1ZGUlEKSUU1bGRIZHZjbXN4SXpBaEJnTlZCQU1UR2tGa1pGUnlkWE4wSUZGMVlXeH
BabWxsWkNCRFFTQlNiMjkwTUlJQklqQU5CZ2txaGtpRwo5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBN
UI2YS90d0pXb2VrbjBlK0VWK3ZoRFRiWWp4NWVMZnBNTFhzREJ3cXhCYi80T3h4CjY0cjFFVzd0VHcyUjBo
SVlMVWtWQWNLa0loUEhFV1QvSWhLYXVZNWNMd2pQY1dxelp3Rlo4VjFHODdCNHBmWU9RbnJqZnh2TTBQQzM
KS1AwcTZwNnpzTGtFcXYzMng3U3h1Q3FnKzFqeEdhQnZjQ1YrUG1sS2Z3OGkyTyt0Q0JHYUtabmhxa1JGbW
hKZVBwMXRVdnpub0QxbwpML0JMY0h3VE9LMjhGU1h4MXM2cm9zQXgxaStmNFA4VVdmeUVrOW1IZkV4VUUrd
WYwUzBSK0JnNk90NGwyZmZUUU8ya0JoTEVPK0dSCndWWTE4QlRjWlRZSmJxdWtCOGMxMGNJRE16WmJkU1p0
UXZFU2EwTnZTM0dVK2pRZDdSTnV5b0IvbUM5c3VXWFk2UUlEQVFBQm80SFUKTUlIUk1CMEdBMVVkRGdRV0J
CUTVsWXRpaTF6SjFJQzZXQStYUHhVSVE4eVlwekFMQmdOVkhROEVCQU1DQVFZd0R3WURWUjBUQVFILwpCQV
V3QXdFQi96Q0JrUVlEVlIwakJJR0pNSUdHZ0JRNWxZdGlpMXpKMUlDNldBK1hQeFVJUTh5WXA2RnJwR2t3W
npFTE1Ba0dBMVVFCkJoTUNVMFV4RkRBU0JnTlZCQW9UQzBGa1pGUnlkWE4wSUVGQ01SMHdHd1lEVlFRTEV4
UkJaR1JVY25WemRDQlVWRkFnVG1WMGQyOXkKYXpFak1DRUdBMVVFQXhNYVFXUmtWSEoxYzNRZ1VYVmhiR2x
tYVdWa0lFTkJJRkp2YjNTQ0FRRXdEUVlKS29aSWh2Y05BUUVGQlFBRApnZ0VCQUJtcmRlcjRpMlZobFJPNm
FRVHZoc29Ub01lcVQyUWJQeGoycUMwc1ZZOEZ0ekRxUW1vZHdDVlJMYWUvRExQdDd3aC9iRHhHCkd1b1lRO
TkyelBsbWhwd3NhUFhwRi9neHN4akUxa2g5STB4b3dYNjdBUlJ2eGRsdTNyc0VRbXI0OWx4OTVkcjZoK3NO
TlZKbjBKNlgKZGdXVFA1WEhBZVpwVlRoL0VHR1p5ZU5mcHNvK2dtTklxdUlJU0Q2cThyS0ZZcWEwcDltOU4
1eG90UzFXZmJDM1A2Q3hCOWJwVDl6ZQpSWEV3TW44YkxnbjV2MUtoN3NLQVBnWmNMbFZBd1J2MWNFV3czRj
M2OW5KYWQ5Smp6YzlZaVFCQ1l6OTVPZEJFc0lKdVFSbm8zZURCCmlGclJIbkdUSHlRd2RPVWVxTjQ4SnpkL
2c2NmVkOC93TUxIL1M1bm94cUU9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkVudHJ1c3QgUm9vdCBD
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0
tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVrVENDQTNtZ0F3SUJBZ0lFUld0UVZEQU5CZ2txaGtpRz
l3MEJBUVVGQURDQnNERUxNQWtHQTFVRUJoTUNWVk14RmpBVUJnTlYKQkFvVERVVnVkSEoxYzNRc0lFbHVZe
TR4T1RBM0JnTlZCQXNUTUhkM2R5NWxiblJ5ZFhOMExtNWxkQzlEVUZNZ2FYTWdhVzVqYjNKdwpiM0poZEdW
a0lHSjVJSEpsWm1WeVpXNWpaVEVmTUIwR0ExVUVDeE1XS0dNcElESXdNRFlnUlc1MGNuVnpkQ3dnU1c1akx
qRXRNQ3NHCkExVUVBeE1rUlc1MGNuVnpkQ0JTYjI5MElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWF
I1TUI0WERUQTJNVEV5TnpJd01qTTAKTWxvWERUSTJNVEV5TnpJd05UTTBNbG93Z2JBeEN6QUpCZ05WQkFZV
EFsVlRNUll3RkFZRFZRUUtFdzFGYm5SeWRYTjBMQ0JKYm1NdQpNVGt3TndZRFZRUUxFekIzZDNjdVpXNTBj
blZ6ZEM1dVpYUXZRMUJUSUdseklHbHVZMjl5Y0c5eVlYUmxaQ0JpZVNCeVpXWmxjbVZ1ClkyVXhIekFkQmd
OVkJBc1RGaWhqS1NBeU1EQTJJRVZ1ZEhKMWMzUXNJRWx1WXk0eExUQXJCZ05WQkFNVEpFVnVkSEoxYzNRZ1
VtOXYKZENCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCU
UFEZ2dFUEFEQ0NBUW9DZ2dFQgpBTGFWdGtOQytzWnRLbTlJMzVSTU9WY0Y3c041RVVGb051M3MvcG9CajZF
NEtQejNFRVptTGswZUdyRWFUc2JSd0pXSXNNbi9NWXN6CkE5dTNnM3MrSUlSZTdiSldLS2Y0NExsQWNUZkZ
5MGNPbHlwb3dDS1ZZaFhiUjluMTBDdi9na3ZKclQ3ZVROdVFnRkEvQ1lxRUFPd3cKQ2owWXpmdjlLbG1hST
VVWExFV2VIMjVEZVcwTVhKaitTS2ZGSTBkY1h2MXU1eDYwOW1oRjBZYURXNktLamJIaktZRCtKWEdJcmI2O
ApqNnhTbGt1cVVZM2tFekVaNkU1Tm45dXNzMnJWdkRsVWNjcDZlbitRM1gwZGdObUJ1MWttd2hIKzVwUGk5
NERrWmZzME53NHBnSEJOCnJ6aUdMcDUvVjYrZUY2N3JITXNvSVYrMkhOam5vZ1FpK2RQYTJNc0NBd0VBQWF
PQnNEQ0JyVEFPQmdOVkhROEJBZjhFQkFNQ0FRWXcKRHdZRFZSMFRBUUgvQkFVd0F3RUIvekFyQmdOVkhSQU
VKREFpZ0E4eU1EQTJNVEV5TnpJd01qTTBNbHFCRHpJd01qWXhNVEkzTWpBMQpNelF5V2pBZkJnTlZIU01FR
0RBV2dCUm9rT1JucEtaVGdNZUdacVR4OTB0RCs0UzliVEFkQmdOVkhRNEVGZ1FVYUpEa1o2U21VNERICmht
YWs4ZmRMUS91RXZXMHdIUVlKS29aSWh2WjlCMEVBQkJBd0Roc0lWamN1TVRvMExqQURBZ1NRTUEwR0NTcUd
TSWIzRFFFQkJRVUEKQTRJQkFRQ1QxREN3MXdNZ0t0RDVZK2lSREFVZ3FWOFp5bnR5VHRTeDI5Q1crMVJhR1
N3TUNQZXl2SVdvblg5dE8xS3pLdHZuMUlTTQpZL1lQeXlZQmtWQnM5RjhVNHBOMHdCT2VNRHBRNDdSZ3hSe
ndJa1NOY1Vlc3lCcko2WnVhQUdBVC8zQitYeEZOU1J1ekZWSjd5VlRhCnY1MlZyMnVhMko3cDhlUkRqZUlS
UkRxL3I3MkRRbk5TaTZxN3B5blA5V1FjQ2szUnZLcXNueXJRLzM5LzJuM3FzZTB3SmNHRTJqVFMKVzNpRFZ
1eWNOc01tNGhIMlowa2RrcXVNKyt2L2V1NkZTcWRRZ1BDblhFcVVMbDhGbVR4U1FlRE50R1BQQVVPNm5JUG
NqMkE3ODFxMAp0SHV1Mmd1UU9IWHZnUjFtMHZkWGNEYXp2L3dvcjNFbGhWc1QvaDUvV3JROAotLS0tLUVOR
CBDRVJUSUZJQ0FURS0tLS0tCgpSU0EgU2VjdXJpdHkgMjA0OCB2Mwo9PT09PT09PT09PT09PT09PT09PQot
LS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRFlUQ0NBa21nQXdJQkFnSVFDZ0VCQVFBQUFud0FBQUF
LQUFBQUFqQU5CZ2txaGtpRzl3MEJBUVVGQURBNk1Sa3dGd1lEVlFRSwpFeEJTVTBFZ1UyVmpkWEpwZEhrZ1
NXNWpNUjB3R3dZRFZRUUxFeFJTVTBFZ1UyVmpkWEpwZEhrZ01qQTBPQ0JXTXpBZUZ3MHdNVEF5Ck1qSXlNR
E01TWpOYUZ3MHlOakF5TWpJeU1ETTVNak5hTURveEdUQVhCZ05WQkFvVEVGSlRRU0JUWldOMWNtbDBlU0JK
Ym1NeEhUQWIKQmdOVkJBc1RGRkpUUVNCVFpXTjFjbWwwZVNBeU1EUTRJRll6TUlJQklqQU5CZ2txaGtpRzl
3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQwpBUUVBdDQ5VmNkS0EzWHRwZWFmd0dGQXlQR0puOWdxVkI5M21HL0
9lMmRKQlZHdXRuM3krR2MzN1JxdEJhQjRZNmxYSUw1RjRpU2o3Ckp5bGcvOStQakR2SlNadTFwSlRPQWVvK
3RXTjdmeWI5R2QzQUliMkUwUzFQUnNOTzNOZzNPVHNvcjh1ZEd1b3JyeUdsd1NNaXVMZ2IKV2hPSFY0UFI4
Q0RuNkU4alFyQUFwWDJKNmVsaGM1U1ljU2E4TFdyZzkwM3c4YllxT0RHQkRTbmhBTUZSRDB4UytBUmFxbjF
5MDdpSApLcnRqRUFNcXM2RlBEVnBlUnJjOUR2VjA3Sm1mK1Qwa2dZaW0zV0JVNkpVMlBjWUprNXFqRW9BQV
Zaa1pSNzNRcFh6RHV2c2Y5L1VQCitLeTV0ZlEzbUJNWTNvVmJ0d3lDTzRkdmxUbFlNTnB1QVdnWElzekFDd
0lEQVFBQm8yTXdZVEFQQmdOVkhSTUJBZjhFQlRBREFRSC8KTUE0R0ExVWREd0VCL3dRRUF3SUJCakFmQmdO
VkhTTUVHREFXZ0JRSHcxRXdwS3JwUmE0MUpQci9
KQ3d6MExHZGpEQWRCZ05WSFE0RQpGZ1FVQjhOUk1LU3E2VVd1TlNUNi95UXNNOUN4bll3d0RRWUpLb1pJaH
ZjTkFRRUZCUUFEZ2dFQkFGOCtoblp1dURVOFRqWWNIbm1ZCnYvM1ZFaEY1VWc3dU1ZbTgzWC81MGNZVklla
UtBVlFOT3Z0VXVkWmoxTEdxbGsyaVFrM1VVeCtMRU41L1piNWdFeWR4aUtSejQ0UmoKMGFSVjRWQ1Q1aHNP
ZWRCbnZFYkl2ejhYRFpYbXhwQnAzdWUwTDk2VmZkQVNQejArZjAwL0ZHajFFVkRWd2ZTUXBRZ2RNV0QvWUl
3agpWQXF2L3FGdXhkRjZLbWg0eng2Q0NpQzBINjNsaGJKcWFIVk9yU1UzbElXK3ZhSFU2cmNNU3p5ZDZCSU
E4RitzRGVHc2NHTno5Mzk1Cm56SWxRblFGZ0NpL3ZjRWtsbGdWc1JjaDZZbEwyd2VJWi9RVnJYQStMMDJGT
zhLMzIvNllhQ09KNFhRUDN2VEZoR01wRzh6TEI4a0EKcEtuWHdpSlBaOWQzN0NBRllkND0KLS0tLS1FTkQg
Q0VSVElGSUNBVEUtLS0tLQoKR2VvVHJ1c3QgR2xvYmFsIENBCj09PT09PT09PT09PT09PT09PQotLS0tLUJ
FR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRFZEQ0NBanlnQXdJQkFnSURBalJXTUEwR0NTcUdTSWIzRFFFQk
JRVUFNRUl4Q3pBSkJnTlZCQVlUQWxWVE1SWXdGQVlEVlFRSwpFdzFIWlc5VWNuVnpkQ0JKYm1NdU1Sc3dHU
VlEVlFRREV4SkhaVzlVY25WemRDQkhiRzlpWVd3Z1EwRXdIaGNOTURJd05USXhNRFF3Ck1EQXdXaGNOTWpJ
d05USXhNRFF3TURBd1dqQkNNUXN3Q1FZRFZRUUdFd0pWVXpFV01CUUdBMVVFQ2hNTlIyVnZWSEoxYzNRZ1N
XNWoKTGpFYk1Ca0dBMVVFQXhNU1IyVnZWSEoxYzNRZ1IyeHZZbUZzSUVOQk1JSUJJakFOQmdrcWhraUc5dz
BCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQTJzd1lZekQ5OUJjakdsWitXOTg4YkRqa2NiZDRrZFM4b2RoT
StLaER0Z1BwVFNFSENJamFXQzltT1NtOUJYaUxuVGpvCkJiZHFmbkdrNXNSZ3ByRHZnT1NKS0ErZUpkYnRn
L090cHBISG1NbENHRFVVbmEyWVJwSXVUOHJ4aDBQQkZwVlhMVkR2aVMyQWVsZXQKOHU1ZmE5SUFqYmtVK0J
RVk5kbkFScU43Y3NpUnY4bFZLODNRbHo2Y0ptVE0zODZER1hIS1R1YlUxWHVwR2MxVjNzanMwbDQ0VStWYw
pUNHd0L2xBak52eG01c3VPcERrWkFMZVZBam1SQ3c3K09DN1JIUVdhOWswK2J3OEhIYThzSG85Z09lTDZOb
E1UT2RSZUppdmJQYWdVCnZUTHJHQU1vVWdSeDVhc3pQZUU0dXdjMmhHS2NlZW9XTVBSZndDdm9jV3ZrK1FJ
REFRQUJvMU13VVRBUEJnTlZIUk1CQWY4RUJUQUQKQVFIL01CMEdBMVVkRGdRV0JCVEFlcGhvalluN3F3Vmt
EQkY5cW4xbHVNck1UakFmQmdOVkhTTUVHREFXZ0JUQWVwaG9qWW43cXdWawpEQkY5cW4xbHVNck1UakFOQm
drcWhraUc5dzBCQVFVRkFBT0NBUUVBTmVNcGF1VXZYVlNPS1ZDVW41a2FGT1NQZUNwaWxLSW5aNTdRCnp4c
GVSK25Cc3FUUDNVRWFCVTZiUys1S2IxVlNzeVNoTndyclpIWXFMaXp6L1R0MWtMLzZjZGpIUFRmU3RRV1ZZ
cm1tM29rOU5uczQKZDBpWHJLWWdqeTZteVF6Q3NwbEZBTWZPRVZFaUl1Q2w2cllWU0FsazZsNVBkUGNGUHN
lS1VnemJGYlM5Ylp2bHhyRlVhS25qYVpDMgptcVVQdUxrL0lIMnVTclc0bk9RZHRxdm1sS1hCeDRPdDIvVW
5odzRFYk5YLzNhQmQ3WWRTdHlzVkFxNDVwbXAwNmRyRTU3eE5OQjZwClhFMHpYNUlKTDRobVhYZVh4eDEyR
TZuVjVmRVdDUkUxMWF6YkpIRndMSmhXQzlrWHROSGpVU3RlZGVqVjBOeFBOTzNDQldhQW9jdm0KTXc9PQot
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpHZW9UcnVzdCBHbG9iYWwgQ0EgMgo9PT09PT09PT09PT09PT0
9PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRFpqQ0NBazZnQXdJQkFnSUJBVEFOQmdrcW
hraUc5dzBCQVFVRkFEQkVNUXN3Q1FZRFZRUUdFd0pWVXpFV01CUUdBMVVFQ2hNTgpSMlZ2VkhKMWMzUWdTV
zVqTGpFZE1Cc0dBMVVFQXhNVVIyVnZWSEoxYzNRZ1IyeHZZbUZzSUVOQklESXdIaGNOTURRd016QTBNRFV3
Ck1EQXdXaGNOTVRrd016QTBNRFV3TURBd1dqQkVNUXN3Q1FZRFZRUUdFd0pWVXpFV01CUUdBMVVFQ2hNTlI
yVnZWSEoxYzNRZ1NXNWoKTGpFZE1Cc0dBMVVFQXhNVVIyVnZWSEoxYzNRZ1IyeHZZbUZzSUVOQklESXdnZ0
VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBdwpnZ0VLQW9JQkFRRHZQRTFBUFJEZk8xTUE0V2YrbEdBV
lBvV0k4WWtOa01nb0k1a0Y2Q3NnbmNiellFYll3YkxWakRIWjNDQjVKSUcvCk5UTDhZMm5ic1NwcjdpRlk4
Z2pwZU10dnkvd1dVc2lSeFA4OWM5NnhQcWZDZldiQjlYNVNKQnJpMVdlUjBJSVExM2hMVHl0Q09iMWsKTFV
DZ3NCRFRPRWhHaUtFTXV6b3pLbUtZK3dDZEUxbC9ienR5cXU2bUQ0YjVCV0hxWjM4TU41YUw1bWtXUnhIQ0
oxa0RzNlpnd2lGQQpWdnFneDMwNkUrUHNWOGV6MXE2ZGlZRDNBZWNzOXBZckV3MTVMTm5BNUlaN1M0d01jb
0tLK3hmTkFHdzZFenl3aElkTEZub3Bzay9iCkhkUUw4MlkzdmRqMlY3dGVKSHE0UEl1NStwSWFHb1NlMkhT
UHFodC9YdlQrUlNJaEFnTUJBQUdqWXpCaE1BOEdBMVVkRXdFQi93UUYKTUFNQkFmOHdIUVlEVlIwT0JCWUV
GSEU0TnZJQ01WTkhLMjY2WlVhcEVCVllJQVVKTUI4R0ExVWRJd1FZTUJhQUZIRTROdklDTVZOSApLMjY2Wl
VhcEVCVllJQVVKTUE0R0ExVWREd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBQS9lM
Us2dGRFUHg3CnNySmVySnNPZmxONFdUNUNCUDUxbzYyc2dVN1hBb3RleEMzSVVuYkhMQi84Z1RLWTBVdkdr
cE16TlRFdi9OZ2RSTjNnZ1grZDZZdmgKWkpGaUN6a0lqS3gwblZuWmVsbFNseEc1Rm50dlJkT1cyVEY5QWp
ZUG5EdHV6eXdOQTBaRjY2RDBmMGhFeGdoQXpONGJjTFVwcmJxTApPelJsZFJ0eElSMHNGQXF3bHBXNDF1cn
laZnNwdWsvcWtaTjBhYmJ5LytFYTBBelJkb1hMaWlXOWwxNHNieFdaSnVlMktmOGk3TWtDCngxWUF6VW01c
zJ4N1V3UWE0cWpKcWhJRkk4TE81N3NFQXN6QVI2TGt4Q2t2VzBWWGlWSHVQT3RTQ1A4SE5SNmZOV3BIU2xh
WTBWcUYKSDR6MUlyK3J6b1B6NGlJcHJuMkRRS2k2YkE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgp
HZW9UcnVzdCBVbml2ZXJzYWwgQ0EKPT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSU
NBVEUtLS0tLQpNSUlGYURDQ0ExQ2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCRk1Rc3dDUVlEV
lFRR0V3SlZVekVXTUJRR0ExVUVDaE1OClIyVnZWSEoxYzNRZ1NXNWpMakVlTUJ3R0ExVUVBeE1WUjJWdlZI
SjFjM1FnVlc1cGRtVnljMkZzSUVOQk1CNFhEVEEwTURNd05EQTEKTURBd01Gb1hEVEk1TURNd05EQTFNREF
3TUZvd1JURUxNQWtHQTFVRUJoTUNWVk14RmpBVUJnTlZCQW9URFVkbGIxUnlkWE4wSUVsdQpZeTR4SGpBY0
JnTlZCQU1URlVkbGIxUnlkWE4wSUZWdWFYWmxjbk5oYkNCRFFUQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQ
URnZ0lQCkFEQ0NBZ29DZ2dJQkFLWVZWYUNqeHVBZmpKMGhVTmZCdml0YnRhU2VvZGx5V0wwQUcweS9ZY2tV
SFVXQ3E4WWRnTlk5NnhDY09xOXQKSlBpOGNRR2VCdlY4WHg3QkRsWEtnNXBaTUs0Wnl6QklsZTBpTjQzMFN
wcHlaajZ0bGNEZ0ZnRGdFQjhyTVE3WGxGVFRRak9nTkIwZQpSWGJkVDhvWU4reUZGWG9aQ1B6Vng1enc4cW
t1RUttUzVqMVlQYWtXYUR3dmRTRVlmeWgzcGVGaEY3ZW02ZmdlbWR0emJ2UUtvaUZzCjd0cXFoWkptci9aN
mE0TGF1aUlJTlEvUFF2RTErbXJ1ZmlzbHpEb1I1RzJ2YzdKMkhhM1FzbmhuR3FRNUhGRUxaMWFEL1RoZERj
N2QKOExzcmxoL2VlekpTL1IyN3RRYWhzaUZlcGRhVmFIL3dtWjdjUlFnKzU5SUpEVFdVM1lCT1U1Zlh0UWx
FSUdRV0Z3TUNURk1OYU43VgpxbkpOazIyQ0R0dWN2YyswODF4ZFZIcHBDWmJXMnhIQmpYV290TTg1eU00OH
ZDUjg1bUxLNGIxOXA3MVhaUXZrL2lYdHRta1EzQ2dhClJyMEJIZENYdGVHWU84QTNaTlk5bE80TDRmVW9yZ
3RXdjNHTEl5bEJqb2JGUzFKNzJIR3JING9WcGp1RFd0ZFlBVkhHVEVIWmY5aEIKWjNLaUtOOWdnNm1leUh2
OFUzTnlXZldUZWhkMkRzNzM1VnpaQzFVMG9xcGJ0V3BVNXhQS1YreVhiZlJlQmk5RmkxalVJeGFTNUJadQp
LR05aTU45UUFaeGppUnFmMnhlVWduQTN3eVNlbWtmV1dzcE9xR21KY2grUmJOdCtuaHV0eHg5ejNTeFBHV1
g5ZjVOQUVDN1M4TzA4Cm5pNG9QbWttTThWN0FnTUJBQUdqWXpCaE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d
0hRWURWUjBPQkJZRUZOcTdMcXF3RExpSUpsRjAKWEcwRDA4RFlqM3JXTUI4R0ExVWRJd1FZTUJhQUZOcTdM
cXF3RExpSUpsRjBYRzBEMDhEWWozcldNQTRHQTFVZER3RUIvd1FFQXdJQgpoakFOQmdrcWhraUc5dzBCQVF
VRkFBT0NBZ0VBTVhqbXg3WGZ1SlJBeVhIRXFEWHNSaDNDaGZNb1dJYXdDL3lPc2ptUFJGV3JaSVJjCmFhbl
Ftamc4K3VVZk5lVkU0NEI1bEdpa3U4U2ZQZUUwelRCR2kxUXJsYVh2OXorWmhQMDE1czh4eHR4cXY2ZlhJd
2pobUY3RFdnaDIKcWFhdmR5KzNZTDFFUm1ydmwvOXpsY0dPNkpQNy9URzM3RmNSRVVXYk1QRWFpRG5CVHp5
bkFOWEgvS3R0Z0NKd3BRemdYUVFwQXZ2TApvSkhSZk5iRGZsRFZuVmkrUVRqcnVYVThGZG1ieVVxRFdjRGF
VLzB6dXpZWW00VVBGZDN1TGF4Mms3blpBWTFJRUtqNzlUaUc4ZHNLCnhyMkVveU5CM3RaM2I0WFVoUnhRNE
s1UmlycU5QbmJpdWNvbjhsK2Y3MjVaRFFiWUt4ZWswbnhydTE4VUdraVBHa3puczBjY2preEYKS3lEdVNOL
24zUW1PR0tqYVFJMlNKaEZUWVhOZDY3M254RTBwTjJIcnJEa3RaeTRXMXZVQWc0V2h6SDkyeEgza3QwdG03
d05GWUdtMgpERktXa29SZXBxTzFwRDRyMmN6WUcwZXE4a1RhVC9rRDZQQVV5ei96Zzk3UXdWVGp0K2dLTjA
yTElGa0RNQm1oTE1pOUVSL2Zyc2xLCnhmTW5abWFHckdpUi85bm1VeHdQaTF4cFpRb215QjQwdzExUmU5ZX
BuQWFoTnQzVmlaUzgyZVF0REY0SmJBaVhmS005ZkpQL1A2RVUKcDgrMVhldmIyeHpFZHQrSXViMUZCWlVic
nZ4R2FreXZTT1BPcmcvU2Z1dm1iSnhQZ1dwNlpLeTdQdFhueTNZdXhhZEl3VnlRRDh2SQpQL3JtTXVHTkcy
K2s1bzdZK1NsSWlzNXovaXc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkdlb1RydXN0IFVuaXZlcnN
hbCBDQSAyCj09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSU
lGYkRDQ0ExU2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCSE1Rc3dDUVlEVlFRR0V3SlZVekVXT
UJRR0ExVUVDaE1OClIyVnZWSEoxYzNRZ1NXNWpMakVnTUI0R0ExVUVBeE1YUjJWdlZISjFjM1FnVlc1cGRt
VnljMkZzSUVOQklESXdIaGNOTURRd016QTAKTURVd01EQXdXaGNOTWprd016QTBNRFV3TURBd1dqQkhNUXN
3Q1FZRFZRUUdFd0pWVXpFV01CUUdBMVVFQ2hNTlIyVnZWSEoxYzNRZwpTVzVqTGpFZ01CNEdBMVVFQXhNWF
IyVnZWSEoxYzNRZ1ZXNXBkbVZ5YzJGc0lFTkJJREl3Z2dJaU1BMEdDU3FHU0liM0RRRUJBUVVBCkE0SUNEd
0F3Z2dJS0FvSUNBUUN6VkZMQnlUN3kyZHl4VXhwWktlZXh3MFVvNWRmUjdjWEZTNkdxZEh0WHIwb20vTmox
WHFkdUdkdDAKREU4MVd6SUxBZVBiNjNwM05lcXFXdURXNktGWGxQQ1FvM1JXbEVRd0F4NWNUaXVGSm5TQ2V
neDJvRzlOemtFdG9CVUdGRiszUXMxNwpqMWhoTk53cUNQa3V3d0dtSWtRY1RBZUM1bHZPMEVwOEJOTVpjeW
Z3cXBoL0xxOU82NGNlSkhkcVhiYm9XMFc2M01PaEJXOVdqbzhRCkpxVkp3eTdYUVljaTRFK0d5bUMxNnFGa
ndBR1hFSG05QUR3U2JTc1ZzYXhMc2U0WXVVNlczTngyL3p1K3oxOER3UHc3Nkw1R0cvL2EKUU1KUzkvN2pP
dmRxZHpYUTJvM3JYaGhxTWNjZXVqd2JLTlpyVk1hcVc5ZWlMQnNaektJQzlwdFp2VGRyaHJWdGdyclk2c2x
XdktrMgpXUDArR2ZQdERDYXBremo0VDhGZElnYlFsK3JocmNaVjRJRXJLSU02K3ZSN0lWRUF2bEk0enMxbW
VhajBnVmJpMElNSlIxRmJVR3JQCjIwZ2FYVDczeS9abDkyenhsZmdDT3pKV2dqbDZXNzB2aVJ1L29iVG8vM
ytOak44RDhXQk9XQkZNNjZNL0VDdURtZ0Z6MlpSdGhBQW4KWnF6d2NFQUpRcEt0VDVNTllRbFJKTmlTMVF1
VVliS0hzdTMvbWpYL2hWVEs3VVJEckJzOEZtdElTZ29jUUlnZmtzSUxBQVgvOHNnQwpTcVNxcWN5Wmxwd3Z
XT0I5NGI2N0I5eGZCSEpjTVRURDdGOHQ0RDFra0NMbTBleTRMdDFacnRtaE43OVVOZHh6TWsrTUJCNHpzc2
xHCjhkaGN5RlZReVdpOXFMbzJDUUlEQVFBQm8yTXdZVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQjBHQTFVZ
ERnUVdCQlIyODFYaCtxUTIKKy9DZlhHSng3VHowUnpnUUt6QWZCZ05WSFNNRUdEQVdnQlIyODFYaCtxUTIr
L0NmWEdKeDdUejBSemdRS3pBT0JnTlZIUThCQWY4RQpCQU1DQVlZd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2d
JQkFHYkJ4aVB6MmVBdWJsL296NjZ3c0NWTksvZzdXSnRBSkRkYXk2c1dTZit6CmRYa3pvUzl0Y0JjMGtmNW
5mby9zbStWZWdxbFZIeS9jMUZFSEV2NnNGajRzTmNaai9Od1E2dzJqcXRCOHpOSFFMMUV1eEJSYTN1Z1oKN
FQ3R3pLUXA1eTZFcWdZd2VIWlVjeWlZV1RqZ0FBMWkwMEo5SVordVBUcU0xZnAzRFJnckZnNWZOdUg4S3JV
d0pNL2dZd3g3V0JyKwptYnBDRXJHUjlIeG80c2pvcnl6cXlYNnV1eW85RFJYY05KVzJHSFNvYWcvSHRQUVR
4T1JiN1FyU3BKZE1LdTB2YkJLSlBmRW5jS3BxCkExSWhuMENvWjFEeTgxb2YzOThqOXR4NFR1YVlUMVU2VS
tQdjh2U2Z4M3pZV0s4cElwZTQ0TDJSTHJCMjdGY1J6KzhwUlBQcGhYcGcKWStSZE00a1gyVEdxMnRiekdEV
nl6NGNyTDJNamhGMkVqRDlYb0lqOG1aRW9KbW1aMUkrWFJMNk8xVWl4cENncDhSVzA0ZVdlM2ZpUApwbTht
MXdrOE9od1JEcVpzTi9ldFJJY3NLTWZZZElLejBHOUtWN3MxS1NlZ2krZ2hwNGRrTmwzTTJCYXN4N0luUUp
KVk9DaU5VVzdkCkZHZFRiSEZjSm9STmRWcTJmbUJXcVUydCs1c2VsL01OMmRLWFZIZmFQUkszNEI3dkNBYX
MrWVdINmFMY3IzNFlFb1A5VmhkQkx0VXAKZ24yWjlESDJjYW5QTEFFbnBRVzVxckpJVGlydm41TlNVWlU4V
W5PT1Zrd1hRTUFKS09TTGFraFQyK3pOVlZYeHh2anBvaXhNcHRFbQpYMzZ2V2t6YUg2YnlIQ3grcmdJVzBs
YlFMMWRUUitpUwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpBbWVyaWNhIE9ubGluZSBSb290IENlcnR
pZmljYXRpb24gQXV0aG9yaXR5IDEKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT
09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEcERDQ0FveWdBd0lCQWdJQkFUQU5CZ2txa
GtpRzl3MEJBUVVGQURCak1Rc3dDUVlEVlFRR0V3SlZVekVjTUJvR0ExVUVDaE1UClFXMWxjbWxqWVNCUGJt
eHBibVVnU1c1akxqRTJNRFFHQTFVRUF4TXRRVzFsY21sallTQlBibXhwYm1VZ1VtOXZkQ0JEWlhKMGFXWnA
KWTJGMGFXOXVJRUYxZEdodmNtbDBlU0F4TUI0WERUQXlNRFV5T0RBMk1EQXdNRm9YRFRNM01URXhPVEl3Tk
RNd01Gb3dZekVMTUFrRwpBMVVFQmhNQ1ZWTXhIREFhQmdOVkJBb1RFMEZ0WlhKcFkyRWdUMjVzYVc1bElFb
HVZeTR4TmpBMEJnTlZCQU1UTFVGdFpYSnBZMkVnClQyNXNhVzVsSUZKdmIzUWdRMlZ5ZEdsbWFXTmhkR2x2
YmlCQmRYUm9iM0pwZEhrZ01UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQUQKZ2dFUEFEQ0NBUW9DZ2dFQkF
LZ3Y2S1JwQmdOSHcra3FtUDhab25DYXhsQ3lmcV
hmYUUwYmZBKzJsMmg5TGFhTGwrbGtoc21qNzZDRwp2MkJsbkV0VWlNSkl4VW81dnhUaldWWGxHYlIweUxRR
k9Wd1dwZUtWQmVBU3JsbUxvak5vV0J5bTFCVzMySi9YM0hHcmZwcS9tNDR6CkR5TDlIeTduQnpidllqbkYz
Y3U2SlJRajNnekdQVHpPZ2dqbVpqN2FVVHNXT3FNRmY2RGNoOVdjL0hLcG9IMTQ1TGN4VlI1bHU5UmgKc0N
GZzdSQXljc1dTSlI3NGtFb1llRWZmZmpBM1BsQWIyeHpUYTVxR1V3ZXc3NndHZVBpRW1mNGhqVXlBdGd5Qz
ltWndlUnJUVDZQUAo4YzlHc0VzUFB0MklZcmlNcVFrb08zckhsK0VlNWZTZndNQ3VKS0RJb2RrUDFuc21nb
Wt5UGFjQ0F3RUFBYU5qTUdFd0R3WURWUjBUCkFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVBSzNaby9a
NTltNTBxWDh6UFlFWDEwelBNOTR3SHdZRFZSMGpCQmd3Rm9BVUFLM1oKby9aNTltNTBxWDh6UFlFWDEwelB
NOTR3RGdZRFZSMFBBUUgvQkFRREFnR0dNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUI4aXRFZgpHRGVDNE
xpd28rMVdsY2hpWVp3Rm9zM0NZaVpoelJBVzE4eTBaVFRRRVlxdHFLa0ZadTkwODIxZm5abXY5b3Y3NjFLe
UJaaWlieXJGClZMMGx2Vit1eUlicVJpekJzNzNCNlVsd0dCYVhDQk9NSU9BYkxqcEh5eDdrQURDVlcvUkZv
OEFhc0FGT3E3M0FJMjVqUDRCS3hRZnQKM09Kdng4Rmk4ZU55MWdUSWRHY0wrb2lyb1FISWIvQVVyOUtaelZ
HVGZ1MHVPTWU5emtaUVBYTGplU1dkbTRnckVDRGRwYmd5bjQzZwpLZDhoZElhQzJ5K0NNTWJITllheitaWm
ZSdHNNUmYzelVNTnZ4c05JclVhbTRTZEhDaDBPbTdiQ2QzOWo4dUI5R3I3ODROL1h4NmRzCnNQbXV1ano5Z
ExRUjZGZ05nTHpUcUlBNm1lMTF6RVo3Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkFtZXJpY2EgT25s
aW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT0
9PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZwRENDQTR5Z0F3SU
JBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBREJqTVFzd0NRWURWUVFHRXdKVlV6RWNNQm9HQTFVRUNoTVQKU
VcxbGNtbGpZU0JQYm14cGJtVWdTVzVqTGpFMk1EUUdBMVVFQXhNdFFXMWxjbWxqWVNCUGJteHBibVVnVW05
dmRDQkRaWEowYVdacApZMkYwYVc5dUlFRjFkR2h2Y21sMGVTQXlNQjRYRFRBeU1EVXlPREEyTURBd01Gb1h
EVE0zTURreU9URTBNRGd3TUZvd1l6RUxNQWtHCkExVUVCaE1DVlZNeEhEQWFCZ05WQkFvVEUwRnRaWEpwWT
JFZ1QyNXNhVzVsSUVsdVl5NHhOakEwQmdOVkJBTVRMVUZ0WlhKcFkyRWcKVDI1c2FXNWxJRkp2YjNRZ1EyV
nlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkSGtnTWpDQ0FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRApnZ0lQ
QURDQ0Fnb0NnZ0lCQU14QlJSM3BQVTBROW95eFFjbmdYc3NOdDc5SGM5UHdWVTNkeGd6NnNXWUZhczE0dE5
3QzIwNkI4OWVuCmZIRzhkV09nWGVNSERFanNKY1FESVBUL0Rqc1MvNXVONGNiVkc3UnRJdU94MjM4aFpLK0
d2RmNpS3RaSGdWZEVnbFpUdllZVUFRdjgKZjNTa1dxN3h1aEcxbTFoYWdMUTNlQWt6ZkRKSEExekVwWU5JO
UZkV2JvRTJKeGhQN0pzb3d0UzAxM3dNUGd3cjM4b0UxOGFPNmxoTwpxS1NsR0J4c1JaaWpRZEV0MHNkdGpS
bnhyWG0zZ1QrOUJvSW5MUkJZQmJWNEJia3Yyd3hya0pCK0ZGazR1NVFrRStYUm5SVGYwNEpOClJ2Q0FPVkl
5RCtPRXNucEQ4bDdlWHo4ZDNlT3lHNkNoS2lNRGJpNEJGWWRjcG5WMXg1ZGh2dDZHM05SSTI3MHF2MHBWMn
VoOVVQdTAKZ0JlNGxMOEJQZXJhdW56Z1dHY1h1VmpnaUlaR1oyeWRFRWRZTXRBMWZIa3FrS0phRUJFak5hM
HZ6T1JLVzZmSUovS0QzbDY3WG5mbgo2S1Z1WThJTlhXSFFqTkpzV2lFT3lpaWp6aXJwbGNkSXo1WnZIWkls
eU1iR3djRU1CYXdteE5KMTB1RXFaOEE5VzZXYTY4OTdHcWlkCkZFWGxENkNhWmQ0dktMM09iNVJtZzBncDJ
PcGxqSytUMldTZlZWY212Mi9MTnpHWm8yQzdISzJKTkRKaXVFTWhCbklNb1Z4dFJzWDYKS2M4dzNvbmNjVn
ZkdGpjKzMxRDF1QWNsSnVXOHRmNDhBck8zK0w1RHdZY1JsSjRqYkJlS3VJb25ERlJIOEttendJQ01vQ2ZyS
FJuagpCNDUzY01vcjlIMTI0SGhuQWdNQkFBR2pZekJoTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZS
ME9CQllFRkUxRndXZzR1M09wCmFhRWc1KzMxSXFFakZOZWVNQjhHQTFVZEl3UVlNQmFBRkUxRndXZzR1M09
wYWFFZzUrMzFJcUVqRk5lZU1BNEdBMVVkRHdFQi93UUUKQXdJQmhqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0
FnRUFaMnNHdVY5Rk95cExNN1BtRzJ0WlRpTE11YmVrSmNtbnhQQlVsZ3RrODdGWQpUMTVSL0xLWGV5ZGx3d
VhLNXcwTUpYdGk0L3FmdEllM1JVYXZnNldYU0l5bHZmRVdLNXQyTEhvMVlHd1JnSmZNcVpKUzVpdm1hZTJw
CitEWXRMSGUvWVVqUll3dTVXMUx0R0xCRFFpS21zWGV1M21uRnpjY2NvYkdsSEJEN0dMNGFjTjNCa2t1K0t
WcWRQelcrNVgxUitGWGcKSlhVamh4NWMzTHFkc0t5emFkc1hnOG4zM2d5OENOeVJucWpRMXhVM2M2VTF1UH
greFVSQUJzUHIrQ0tBWEVmT0F1TVJuMFQvL1pveQp6SDFrVVE3clZ5WjJPdU1lSWp6Q3BqYmRHZStuL0JMe
kpzQlpNWVZNbk5qUDM2VE16Q21ULzVSdGRsd1RDSmZ5N2FVTFRkM295V2dPClp0TUFEak1TVzd5VjVUS1Fx
TFBHYklPdGQrNkxmbjZ4cWF2VDRmRzJ3TEhxaU1EbjA1RHBLSktVZTJoN2x5b0taeTJGQWpnUTVBTmgKMU5
vbE5zY0lXQzJocDFHdk1BcEo5YVpwaHdjdFJFWjJqaXJsbWp2WEdLTDhuRGdRek1ZNzByVVhPbS85cmlXOT
lYSlpaTEYwS2poZgpHRXpmejNFRVdqYlV2eStabk9qWnVyR1Y1Z0pMSWFGYjFjRlBqNjVwYlZQYkFaTzFYQ
jRZM1dSYXloZ29QbU1FRWYwY2pRQVB1RGZmClo0cWRacWtDYXBIL0U4b3ZYWU84aDVOczNDUlJGZ1FsWnZx
ejJjSzZLYjZhU0RpQ21mUy9PMG94R2ZtL2ppRXpGTXBQVkYvN3p2dVAKY1gvOVhobWdEMHVSdU1SVXZBYXd
SWThta2FLTy9xaz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKVmlzYSBlQ29tbWVyY2UgUm9vdAo9PT
09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEb2pDQ0FvcWdBd0lCQ
WdJUUU0WTFUUjAvQnZMQitXVUYxWkFjWWpBTkJna3Foa2lHOXcwQkFRVUZBREJyTVFzd0NRWURWUVFHCkV3
SlZVekVOTUFzR0ExVUVDaE1FVmtsVFFURXZNQzBHQTFVRUN4TW1WbWx6WVNCSmJuUmxjbTVoZEdsdmJtRnN
JRk5sY25acFkyVWcKUVhOemIyTnBZWFJwYjI0eEhEQWFCZ05WQkFNVEUxWnBjMkVnWlVOdmJXMWxjbU5sSU
ZKdmIzUXdIaGNOTURJd05qSTJNREl4T0RNMgpXaGNOTWpJd05qSTBNREF4TmpFeVdqQnJNUXN3Q1FZRFZRU
UdFd0pWVXpFTk1Bc0dBMVVFQ2hNRVZrbFRRVEV2TUMwR0ExVUVDeE1tClZtbHpZU0JKYm5SbGNtNWhkR2x2
Ym1Gc0lGTmxjblpwWTJVZ1FYTnpiMk5wWVhScGIyNHhIREFhQmdOVkJBTVRFMVpwYzJFZ1pVTnYKYlcxbGN
tTmxJRkp2YjNRd2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUN2Vjk1V0htNm
gybUN4bENmTApGOXNIUDRDRlQ4aWN0dEQwYjAvUG1kamgyOEpJWERxc09UUEhIMnFMSmowck5mVklzWkhCQ
Ws0RWxwRjdzRFB3c1JST0VXKzFRSzhiClJhVks3MzYyclBLZ0gxZy9Fa1pnUEkyaDRIM1BWejR6SHZ0SDhh
b1Zsd2RWWnFXMUxTN1lnRm15cHcyM1J1d2hZLzgxcTZVQ3p5cjAKVFA1NzlaUmRoRTJvOG1DUDJ3NGxQSjl
6Y2MrVTMwcnEyOTl5T0l6emxyM3hGN3pTdWp0RldzYW45c1lYaXdHZC9CbW9Lb01XdURwSQovazQrb0tzR0
dlbFQ4NEFUQiswdHZ6OEtQRlVnT1N3c0FHbDBsVXE4SUxLcGVlVVlpWkdvM0J4Tjc3dCtOd3RkL2ptbGlGS
01BR3pzCkdIeEJ2ZmFMZFhlNllKMkU1LzR0QWdNQkFBR2pRakJBTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3
RGdZRFZSMFBBUUgvQkFRREFnRUcKTUIwR0ExVWREZ1FXQkJRVk9JTVBQeXcvY0RNZXpVYitCNHdnNE5mRHR
6QU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFYL0ZCZlh4YwpDTGtyNE5XU1IvcG5YS1VUd3dNaG15dE1pVW
JQV1UzSi9xVkF0bVBOM1hFb2xXY1J6Q1NzMDBSc2NhNEJJR3NEb284WXR5azZmZVVXCllGTjRQTUN2RllQM
2oxSXpKTDFrazVmdWkvZmJHS2h0Y2JQM0xCZlFkQ1ZwOS81clBKUytUVXRCakU3aWM5RGprQ0p6UTgzejcr
cHoKemtXS3NLWkovMHg5blhHSXhIWWRrRnNkN3YzTTkrNzlZS1d4ZWhaeDBSYlFmQkk4YkdtWDI2NWZPWnB
3THdVOEdVWUVtU0EyMEdCdQpZUWE3RmtLTWNQY3crK0RiWnFNQUFiM21MTnFSWDZCR2kwMXFuRDA5M1FWRy
9uYS9vQW84NUFEbUo3Zi9oQzNldWlJbmxoQng2eUx0CjM5OHpuTS9qcmE2TzFJN21UMUd2RnBMZ1hQWUhEd
z09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkNlcnR1bSBSb290IENBCj09PT09PT09PT09PT09Ci0t
LS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlERERDQ0FmU2dBd0lCQWdJREFRQWdNQTBHQ1NxR1NJYjN
EUUVCQlFVQU1ENHhDekFKQmdOVkJBWVRBbEJNTVJzd0dRWURWUVFLCkV4SlZibWw2WlhSdklGTndMaUI2SU
c4dWJ5NHhFakFRQmdOVkJBTVRDVU5sY25SMWJTQkRRVEFlRncwd01qQTJNVEV4TURRMk16bGEKRncweU56Q
TJNVEV4TURRMk16bGFNRDR4Q3pBSkJnTlZCQVlUQWxCTU1Sc3dHUVlEVlFRS0V4SlZibWw2WlhSdklGTndM
aUI2SUc4dQpieTR4RWpBUUJnTlZCQU1UQ1VObGNuUjFiU0JEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlF
BRGdnRVBBRENDQVFvQ2dnRUJBTTZ4CndTN1RUM3pOSmM0WVBrL0VqRytBYW5QSVcxSDRtOUxjdXdCY3NhRD
hkUVB1Z2ZDSTdpTlM2ZVlWTTQyc0xRbkZkdmtyT1lDSjVKZEwKa0tXb2VQaHpRM3VrWWJEWVdNemhiR1orb
lBNSlhsVmpoTldvNy9PeExqQm9zOFE4Mkt4dWpabGFrRTQwM0RhYWo0R0lVTGR0bGtJSgo4OWVWZ3cxQlM3
QnFhL2o4RDM1aW4yZkU3U1pmRUNZUENFL3dwRmNvem8rNDdVWDJidTRsWGFwdU9iN2treS9aUjZCeTYvcW1
XNi9LClV6L2lEc2FXVmhGdTkrbG1xU2JZZjVWVDdRcUZpTHBQS2FWQ2pGNjIvSVVnQUtwb0M2RWFoUUdjeE
VaamdvaTJJckh1L3FwR1dYN1AKTlN6VnR0cGQ5MGd6RkZTMjY5bHZ6czJJMXFzYjJwWTdIVmtDQXdFQUFhT
VRNQkV3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcQpoa2lHOXcwQkFRVUZBQU9DQVFFQXVJM083K2NV
dXMvdXNFU1NiTFE1UHFLRWJxMjRJWGZTMUhlQ2grWWdRWUh1NHZnUnQyUFJGemUrCkdYWWtIQVFhVE9zOXF
tZHZMZFROL21VeGNNVWJwZ0lLdW1CN2JWakNta24rWXpJTGErTTZ3S3lyTzdEbzB3bFJqQkNEeGpUZ3hTdm
cKR3JaZ0ZDZHNNbmVNdkxKeW1NL056RCs1eUNSQ0ZOWlgvT1ltUTZrZDVZQ1F6Z05VS0Q3M1A5UDRUZTFxQ
2pxVEU1czdGQ01UWTV3LwowWWNuZWVWTVVlTUJyWVZkR2p1eDFYTVFwTlB5dkc1azlWcFdrS2pIRGt4MER5
NXhPL2ZJUi9ScGJ4WHlFVjZESHB4OFVxNzlBdG9TCnFGbG5HTnU4Y04yYnNXbnRnTTZKUUVocURqWEtLV1l
WSVpRczZHQXFtNFZLUVBOcmlpVHNCaFlzY3c9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpDb21vZG
8gQUFBIFNlcnZpY2VzIHJvb3QKPT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGS
UNBVEUtLS0tLQpNSUlFTWpDQ0F4cWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCN01Rc3dDUVlE
VlFRR0V3SkhRakViTUJrR0ExVUVDQXdTClIzSmxZWFJsY2lCTllXNWphR1Z6ZEdWeU1SQXdEZ1lEVlFRSER
BZFRZV3htYjNKa01Sb3dHQVlEVlFRS0RCRkRiMjF2Wkc4Z1EwRWcKVEdsdGFYUmxaREVoTUI4R0ExVUVBd3
dZUVVGQklFTmxjblJwWm1sallYUmxJRk5sY25acFkyVnpNQjRYRFRBME1ERXdNVEF3TURBdwpNRm9YRFRJN
E1USXpNVEl6TlRrMU9Wb3dlekVMTUFrR0ExVUVCaE1DUjBJeEd6QVpCZ05WQkFnTUVrZHlaV0YwWlhJZ1RX
RnVZMmhsCmMzUmxjakVRTUE0R0ExVUVCd3dIVTJGc1ptOXlaREVhTUJnR0ExVUVDZ3dSUTI5dGIyUnZJRU5
CSUV4cGJXbDBaV1F4SVRBZkJnTlYKQkFNTUdFRkJRU0JEWlhKMGFXWnBZMkYwWlNCVFpYSjJhV05sY3pDQ0
FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQwpnZ0VCQUw1QW5mUnU0ZXAyaHh4TlJVU092a
2JJZ3dhZHdTcitHQitPNUFMNjg2dGRVSW9XTVF1YUJ0REZjQ0xOU1MxVVk4eTJibWhHCkMxUHF5MHdrd0x4
eVR1cnhGYTcwVkpvU0NzTjZzak5nNHRxSlZmTWlXUFBlM00vdmc0YWlqSlJQbjJqeW1KQkdoQ2ZIZHIvanp
EVXMKaTE0SFpHV0N3RWl3cUpINVlaOTJJRkNva2NkbXRldDRZZ05XOElvYUUrb3hveDZnbWYwNDl2WW5NbG
h2Qi9WcnVQc1VLNiszcXN6VwpZMTl6ak5vRm1hZzRxTXNYZURaUnJPbWU5SGc2amM4UDJVTGltQXlyTDU4T
0FkN3ZuNWxKOFMzZnJIUk5HNWkxUjhYbEtkSDVrQmpICllweStnOGNtZXo2S0pjZkEzWjNtTldnUUlKMlAy
TjdTdzRTY0RWN29MOGtDQXdFQUFhT0J3RENCdlRBZEJnTlZIUTRFRmdRVW9CRUsKSXo2VzhRZnM0cThwNzR
LbGY5QXdwTFF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdld1lEVlIwZg
pCSFF3Y2pBNG9EYWdOSVl5YUhSMGNEb3ZMMk55YkM1amIyMXZaRzlqWVM1amIyMHZRVUZCUTJWeWRHbG1hV
05oZEdWVFpYSjJhV05sCmN5NWpjbXd3TnFBMG9ES0dNR2gwZEhBNkx5OWpjbXd1WTI5dGIyUnZMbTVsZEM5
QlFVRkRaWEowYVdacFkyRjBaVk5sY25acFkyVnoKTG1OeWJEQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUF
DRmI4QXZDYjZQK2srdFo3eGtTQXprL0V4ZllBV015bXRyd1VTV2dFZHVqbQo3bDNzQWc5ZzFvMVFHRThtVG
dIajVyQ2w3cis4ZEZSQnYvMzhFcmpIVDFyMGlXQUZmMkMzQlVyejl2SEN2OFM1ZElhMkxYMXJ6Tkx6ClJ0M
HZ4dUJxdzhNMEF5eDlsdDFhd2c2bkNwbkJCWXVyREMvelhEclBiRGRWQ1lmZVUwQnNXTy84dHF0bGJnVDJH
OXc4NEZvVnhwN1oKOFZsSU1DRmxBMnpzNlNGejdKc0RvZUEzcmFBVkdJLzZ1Z0xPcHl5cEVCTXMxT1VJSnF
zaWwyRDRrRjUwMUtLYVU3M3lxV2pnb203QwoxMnl4b3crZXYrdG81MWJ5cnZMakt6ZzZDWUcxYTRYWHZpM3
RQeHEzc21QaTlXSXNndFJxQUVGUThUbURuNVhwTnBhWWJnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tL
QoKQ29tb2RvIFNlY3VyZSBTZXJ2aWNlcyByb290Cj09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t
LUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRVB6Q0NBeWVnQXdJQkFnSUJBVEFOQmdrcWhraUc5dzBCQVF
VRkFEQitNUXN3Q1FZRFZRUUdFd0pIUWpFYk1Ca0dBMVVFQ0F3UwpSM0psWVhSbGNpQk5ZVzVqYUdWemRHVn
lNUkF3RGdZRFZRUUhEQWRUWVd4bWIzSmtNUm93R0FZRFZRUUtEQkZEYjIxdlpHOGdRMEVnClRHbHRhWFJsW
kRFa01DSUdBMVVFQXd3YlUyVmpkWEpsSUVObGNuUnBabWxqWVhSbElGTmxjblpwWTJWek1CNFhEVEEwTURF
d01UQXcKTURBd01Gb1hEVEk0TVRJek1USXpOVGsxT1Zvd2ZqRUxNQWtHQTFVRUJoTUNSMEl4R3pBWkJnTlZ
CQWdNRWtkeVpXRjBaWElnVFdGdQpZMmhsYzNSbGNqRVFNQTRHQTFVRUJ3d0hVMkZzWm05eVpERWFNQmdHQT
FVRUNnd1JRMjl0YjJSdklFTkJJRXhwYldsMFpXU
XhKREFpCkJnTlZCQU1NRzFObFkzVnlaU0JEWlhKMGFXWnBZMkYwWlNCVFpYSjJhV05sY3pDQ0FTSXdEUVlK
S29aSWh2Y05BUUVCQlFBRGdnRVAKQURDQ0FRb0NnZ0VCQU1CeE00S0swSERyYzRlQ1FOVWQ1TXZKRGtLUSt
kNDB1YUc2RWZRbGhmUE1jbTN5ZTVkcnN3ZnhkeVNSWHlXUAo5blE5NUlEQytEd044NzlBNnZmSVV0RnliKy
9JcTBHNGJpNFhLcFZwRE0zU0hwUjdMWlFkcW5YWHM1akxyTHhrVTBDOGo2eXNOc3RjCnJidmQ0SlFYN05GY
zBML3ZwWlhKa01Xd3JQc2JROTk2Q0YyM3VQSkFHeXNubmxET1htV0NpSXhlMDA0TWV1b0lrYlkycWl0Qysr
ckMKb3pubDJ5WTRyWXNLN2hsanh4d2szd040MnVicXdVY2FDd3RHQ2QwQy9ON0xoMS9YTUdOb29hN2NNcUc
2dnY1RXEyaTJwUmNWL2IzVgpwNmVhNUVRejZZaU8vTzFSNjVOeFRxMEI1MFNPcXkzTHFQNEJTVWp3d04zSG
FOaVMvajBDQXdFQUFhT0J4ekNCeERBZEJnTlZIUTRFCkZnUVVQTmlUaU1MQWdnbk1BWmtHa3lEcG5uQUpZM
Dh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHcKZ1lFR0ExVWRId1I2TUhn
d082QTVvRGVHTldoMGRIQTZMeTlqY213dVkyOXRiMlJ2WTJFdVkyOXRMMU5sWTNWeVpVTmxjblJwWm1sagp
ZWFJsVTJWeWRtbGpaWE11WTNKc01EbWdONkExaGpOb2RIUndPaTh2WTNKc0xtTnZiVzlrYnk1dVpYUXZVMl
ZqZFhKbFEyVnlkR2xtCmFXTmhkR1ZUWlhKMmFXTmxjeTVqY213d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQ
kFJY0JiU01kZmxzWGZjRmhNcytQNS9PS2xGbG0KNEo0b3FGN1R0L1EwNXFvNXNwY1d4WUp2TXFUcGpPZXYv
ZS9DNkxsTHFxUDA1dHFOWlNIN3VvRHJKaWlGR3Y0NWpONWJCQVMwVlBtagpaNTVCK2dsU3pBVklxTWsvSVF
RZXpraHIvSVhvd251dmY3Zk0rRjg2L1RYR0RlK1gzRXlyRWVGcnl6SFJiUHRJZ0t2Y25EZTRJUlJMCkRYRT
k3SU16YnRGdU1oYnNtTWNXaTFtbU5Lc0ZWeTJUOTZvVHk5SVQ0cmN1TzgxclVCY0phRDYxSmxmdXR1QzIzY
mtwZ0hsOWo2UHcKcENpa0ZjU0Y5Q2ZVYTcvbFhPUmxBblpVdE9NM1ppVFRHV0hJVWhEbGl6ZWF1YW41SGIv
cW1aSmhsdjhCemFGZkRieHh2QTZzQ3gxSApSUjNCN0h6cy9Taz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0
tLQoKQ29tb2RvIFRydXN0ZWQgU2VydmljZXMgcm9vdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci
0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFUXpDQ0F5dWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3M
EJBUVVGQURCL01Rc3dDUVlEVlFRR0V3SkhRakViTUJrR0ExVUVDQXdTClIzSmxZWFJsY2lCTllXNWphR1Z6
ZEdWeU1SQXdEZ1lEVlFRSERBZFRZV3htYjNKa01Sb3dHQVlEVlFRS0RCRkRiMjF2Wkc4Z1EwRWcKVEdsdGF
YUmxaREVsTUNNR0ExVUVBd3djVkhKMWMzUmxaQ0JEWlhKMGFXWnBZMkYwWlNCVFpYSjJhV05sY3pBZUZ3MH
dOREF4TURFdwpNREF3TURCYUZ3MHlPREV5TXpFeU16VTVOVGxhTUg4eEN6QUpCZ05WQkFZVEFrZENNUnN3R
1FZRFZRUUlEQkpIY21WaGRHVnlJRTFoCmJtTm9aWE4wWlhJeEVEQU9CZ05WQkFjTUIxTmhiR1p2Y21ReEdq
QVlCZ05WQkFvTUVVTnZiVzlrYnlCRFFTQk1hVzFwZEdWa01TVXcKSXdZRFZRUUREQnhVY25WemRHVmtJRU5
sY25ScFptbGpZWFJsSUZObGNuWnBZMlZ6TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQwpBUThBTUlJQk
NnS0NBUUVBMzNGdk5saFRXdkkyVkZlQXhIUUlJTzBZZnlvZDVqV2FIaVdzbk9XV2ZuSlNvQlZDMjFuZFpIb
2EwTGg3CjNUa1Z2RlZJeE8wNkFPb3hFYnJ5Y1hRYVo3alBNOHlvTWErajQ5ZC92ek10VEdvODdJdkRrdEpU
ZHlSMG5BZHVjUHk5QzF0MnVsL3kKLzljM1MwcGdlUGZ3K3Nwd3RPcFpxcVBPU0MrcHc3SUxmaGR5Rmd5bUJ
3d2JPTS9KWXJjL29KT2xoMEh5dDNCQWQ5aStGSHpqcU1CNgpqdWxqYXRFUG1zYlM5SXM2RkFSVzFPMjR6Rz
cxKytJc1dMMS9UMnNyOTJBa1dDVE9KdTgwa1RyVjQ0SFFzdkFFQXRkYnR6NlNyR3NTCml2bmtCYkE3a1VsY
3N1dFQ2dmlmUjRidXY1WEF3QWFmMGx0ZUVSdjB4d1ExS2RKVlhPVHQ2d0lEQVFBQm80SEpNSUhHTUIwR0Ex
VWQKRGdRV0JCVEZlMWk5N2RvbGFkTDNXUmFvc3pMQWV5ZGI5REFPQmdOVkhROEJBZjhFQkFNQ0FRWXdEd1l
EVlIwVEFRSC9CQVV3QXdFQgovekNCZ3dZRFZSMGZCSHd3ZWpBOG9EcWdPSVkyYUhSMGNEb3ZMMk55YkM1am
IyMXZaRzlqWVM1amIyMHZWSEoxYzNSbFpFTmxjblJwClptbGpZWFJsVTJWeWRtbGpaWE11WTNKc01EcWdPS
0EyaGpSb2RIUndPaTh2WTNKc0xtTnZiVzlrYnk1dVpYUXZWSEoxYzNSbFpFTmwKY25ScFptbGpZWFJsVTJW
eWRtbGpaWE11WTNKc01BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRRElrNEU3aWJTdnVJUVNUSTNTOE50dwp
1bGVHRlRRUXVTOS9IckNvaVdDaGlzSjNERkJLbXdDTDJJdjBRZUxRZzRwS0hCUUdzS05vQlhBeE1LZFRtdz
dwU3FCWWFXY09ycDMyCnBTeEJ2endHYStSWnpHMFE4Wlp2SDkvMEJBS2tuMFUreU5qNk5rWkVVRCtDbDVFZ
ktOc1lFWXdxNUdXRFZ4SVNqQmMvbERiK1hiREEKQkhjVHVQUVYxVDg0ekpRNlZkQ3NtUFc2QUYvZ2hobUJl
Qzhvd0g3VHpFSUs5YTVRb05FK3hxRng3RCtnSUl4bU9vbTBqdFRZc1UwbApSKzR2aU1pMTRRVkZ3TDRVY2Q
1Ni9ZNTdmVTBJbHFVU2MvQXR5amNuZEJJblRNdTJsK25acmdodFdqbEEzUVZIZFdwYUliT2pHTTlPCjl5NV
h0NWh3WHNqRWVMQmkKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKUXVvVmFkaXMgUm9vdCBDQQo9PT09P
T09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlGMERDQ0JMaWdBd0lCQWdJRU9y
WlFpekFOQmdrcWhraUc5dzBCQVFVRkFEQi9NUXN3Q1FZRFZRUUdFd0pDVFRFWk1CY0dBMVVFCkNoTVFVWFZ
2Vm1Ga2FYTWdUR2x0YVhSbFpERWxNQ01HQTFVRUN4TWNVbTl2ZENCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZE
dodmNtbDAKZVRFdU1Dd0dBMVVFQXhNbFVYVnZWbUZrYVhNZ1VtOXZkQ0JEWlhKMGFXWnBZMkYwYVc5dUlFR
jFkR2h2Y21sMGVUQWVGdzB3TVRBegpNVGt4T0RNek16TmFGdzB5TVRBek1UY3hPRE16TXpOYU1IOHhDekFK
QmdOVkJBWVRBa0pOTVJrd0Z3WURWUVFLRXhCUmRXOVdZV1JwCmN5Qk1hVzFwZEdWa01TVXdJd1lEVlFRTEV
4eFNiMjkwSUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVNUzR3TEFZRFZRUUQKRXlWUmRXOVdZV1
JwY3lCU2IyOTBJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNU1JSUJJakFOQmdrcWhraUc5dzBCQ
VFFRgpBQU9DQVE4QU1JSUJDZ0tDQVFFQXYyRzFsVk82Vi96NjhtY0xPaHJmRVlCa2xiVFJ2TTE2ei9ZcGxp
NGtWRUFrT1BjYWhkeFlUTXVrCkowS1gwSitEaXNQa0JnTmJBS1ZSSG5BRWRPTEIxRHFyMTYwN0J4Z0ZqdjJ
Eck9wbTJSZ2JhSXIxVnhxWXV2WHRkajE4MmQ2VWFqdEwKRjhIVmo3MWxPRHFWMEQxVk5rN2ZlVmN4S2g3WV
dXVkpXQ0NZZnF0ZmZwL3AxazNzZzNTcHgyelk3aWxLaFNvR0ZQbFU1dFBhWlFlTApZemNTMTlEc3czc2dRV
VNqN2N1Z0YrRnhaYzRkWmpIM2RnRVp5SDBEV0xhVlNSMm1FaWJveGd4MjRPTm15K3BkcGlidTVjeGZ2V2Vu
CkFTY09vc3BVeGJGNmxSMXhIa29waWdQY2FrWEJwQmxlYnpiTnc2S3d0LzVjT09KU3ZQaEVRK2FRdXdJREF
RQUJvNElDVWpDQ0FrNHcKUFFZSUt3WUJCUVVIQVFFRU1UQXZNQzBHQ0NzR0FRVUZCekFCaGlGb2RIUndjem
92TDI5amMzQXVjWFZ2ZG1Ga2FYTnZabVp6YUc5eQpaUzVqYjIwd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pDQ
0FSb0dBMVVkSUFTQ0FSRXdnZ0VOTUlJQkNRWUpLd1lCQkFHK1dBQUJNSUg3Ck1JSFVCZ2dyQmdFRkJRY0NB
akNCeHhxQnhGSmxiR2xoYm1ObElHOXVJSFJvWlNCUmRXOVdZV1JwY3lCU2IyOTBJRU5sY25ScFptbGoKWVh
SbElHSjVJR0Z1ZVNCd1lYSjBlU0JoYzNOMWJXVnpJR0ZqWTJWd2RHRnVZMlVnYjJZZ2RHaGxJSFJvWlc0Z1
lYQndiR2xqWVdKcwpaU0J6ZEdGdVpHRnlaQ0IwWlhKdGN5QmhibVFnWTI5dVpHbDBhVzl1Y3lCdlppQjFjM
lVzSUdObGNuUnBabWxqWVhScGIyNGdjSEpoClkzUnBZMlZ6TENCaGJtUWdkR2hsSUZGMWIxWmhaR2x6SUVO
bGNuUnBabWxqWVhSbElGQnZiR2xqZVM0d0lnWUlLd1lCQlFVSEFnRVcKRm1oMGRIQTZMeTkzZDNjdWNYVnZ
kbUZrYVhNdVltMHdIUVlEVlIwT0JCWUVGSXRMYmUzVEtia0dHZXc1T2Fud2w0UnF5Ky9mTUlHdQpCZ05WSF
NNRWdhWXdnYU9BRkl0TGJlM1RLYmtHR2V3NU9hbndsNFJxeSsvZm9ZR0VwSUdCTUg4eEN6QUpCZ05WQkFZV
EFrSk5NUmt3CkZ3WURWUVFLRXhCUmRXOVdZV1JwY3lCTWFXMXBkR1ZrTVNVd0l3WURWUVFMRXh4U2IyOTBJ
RU5sY25ScFptbGpZWFJwYjI0Z1FYVjAKYUc5eWFYUjVNUzR3TEFZRFZRUURFeVZSZFc5V1lXUnBjeUJTYjI
5MElFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1Z2dRNgp0bENMTUE0R0ExVWREd0VCL3dRRUF3SU
JCakFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBaXRRVXRmNzBtcEtuR2RTa2ZuSVlqOWxvCmZGSWszV2R2T
1hyRXFsNDk0bGl3VFhDWWhHSG9HK05wR0E3TyswZFFvRTcvOENRZnZiTE85U2Y4N0M5VHFuTjdBejEwYnVZ
V251dWwKTHNTL1ZpZFFLMks2dmtzY1BGVmNRUjBrdm9JZ1IxM1ZSSDU2Rm1qZmZVMVJjSGhYSFRNZS9RS1p
uQXpOQ2dWUHg3dU9wSFg2U20yeApnSTRKVnJtY0dtRCtYY0hYZXR3UmVORFdYY0czMWEweW1RTTZpc3hVSl
RreGdYc1RJbEc2Um15aHU1NzZCR3hKSm5TUDBuUHJ6RENpCjV1cFpJb2Y0bC9VTy9lck1rcVFXeEZJWTZpS
E9zZkhtaElIbHVxbUdLUEpEV2wwU25hd2UyYWpsQ21xbmY2Q0hLYy95aVUzVTdNWGkKNW5yUU5pT0tTblEy
K1E9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpRdW9WYWRpcyBSb290IENBIDIKPT09PT09PT09PT0
9PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlGdHpDQ0E1K2dBd0lCQWdJQ0JRa3dEUV
lKS29aSWh2Y05BUUVGQlFBd1JURUxNQWtHQTFVRUJoTUNRazB4R1RBWEJnTlZCQW9UCkVGRjFiMVpoWkdse
klFeHBiV2wwWldReEd6QVpCZ05WQkFNVEVsRjFiMVpoWkdseklGSnZiM1FnUTBFZ01qQWVGdzB3TmpFeE1q
UXgKT0RJM01EQmFGdzB6TVRFeE1qUXhPREl6TXpOYU1FVXhDekFKQmdOVkJBWVRBa0pOTVJrd0Z3WURWUVF
LRXhCUmRXOVdZV1JwY3lCTQphVzFwZEdWa01Sc3dHUVlEVlFRREV4SlJkVzlXWVdScGN5QlNiMjkwSUVOQk
lESXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDCkR3QXdnZ0lLQW9JQ0FRQ2FHTXBMbEEwQUxhOERLW
XJ3RDRISXJrd1poUjBJbjZzcFJJWHpMNEd0TWg2UVJyK2poaVlhSHY1K0hCZzYKWEp4Z0Z5bzZkSU16TUgx
aFZCSEw3YXZnNXRLaWZ2VnJieGkzQ2dzdC9lays3d3JHc3hEcDNNSkdGL2hkL2FUYS81NUpXcHptTStZawp
sdmMvdWxzckhIbzF3dFpuL3F0bVVJdHRLR0FyNzlkZ3c4ZVR2STAya2ZOLytOc1JFOFNjZDNiQnJyY0Nhb0
Y2cVVXRDRnWG11VmJCCmxEZVBTSEZqSXV3WFpRZVZpa3ZmajhaYUN1V3c0MTllYXhHckRQbUY2MFRwK0FSe
jh1bitYSmlNOVhPdmE3Uit6ZFJjQWl0TU9lR3kKbFpVdFFvZlgxYk9RUTdkc0UvSGUzZmJFK0lrLzBYWDFr
c09SMVlxSTBKRHMzRzNlaWNKbGNaYUxEUVA5bkw5YkZxeVMyK3IrZVh5dAo2Ni8zRnN2YnpTVXI1Ui83bXA
vaVVjdzZVd3hJNWc2OXliUjJCbExtRVJPRmNtTURCT0FFTmlzZ0dRTG9kS2NmdHNsV1p2QjFKZHhuCndRNW
hZSWl6UHRHby9LUGFIYkRSc1NOVTMwUjJiZTFCMk1HeUlyWlRITjgxSGR5aGR5b3g1QzMxNWVYYnlPRC81W
URYQzJPZy96T2gKRDdvc0ZSWHFsN1BTb3JXKzhveVdIaHFQSFd5a1lUZTVobk16MTVlV25pTjlncVJNZ2VL
aDBicG5YNVVIb3ljUjdoWVFlN3hGU2t5eQpCTktyNzlYOURGSE9VR29JTWZtUjJneVBaRndEd3pxTElEOXV
qV2M5T3RiK2ZWdUl5Vjc3ekdIY2l6TjMwMFF5TlFsaUJKSVdFTmllCkowZjdPeUhqK09zZFd3SURBUUFCbz
RHd01JR3RNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdDd1lEVlIwUEJBUURBZ0VHTUIwR0ExVWQKRGdRV0JCU
WFoR0s4U0V3ekpRVFU3dEQyQThRWlJ0R1VhekJ1QmdOVkhTTUVaekJsZ0JRYWhHSzhTRXd6SlFUVTd0RDJB
OFFaUnRHVQphNkZKcEVjd1JURUxNQWtHQTFVRUJoTUNRazB4R1RBWEJnTlZCQW9URUZGMWIxWmhaR2x6SUV
4cGJXbDBaV1F4R3pBWkJnTlZCQU1UCkVsRjFiMVpoWkdseklGSnZiM1FnUTBFZ01vSUNCUWt3RFFZSktvWk
lodmNOQVFFRkJRQURnZ0lCQUQ0S0ZrMmZCbHVvcm5GZEx3VXYKWitZVFJZUEVOdmJ6d0NZTURiVkhaRjM0d
EhMSlJxVURHQ2RWaVhoOWR1cVdOSUFYSU56bmcvaU4vQWU0Mmw5TkxtZXloUDNaUlB4MwpVSUhtZkxUSkRR
dHlVL2gyQndkQlI1WU0rK0NDSnBOVmpQNGlIMkJsZkYvbkpyUDNNcENZVU5RM2NWWDJraUY0OTVWNSt2Z3R
Kb2RtClZqQjNwamQ0TTFJUVdLNC9ZWTd5YXJIdkdINUtXV1BLamFKVzFhY3Z2RllmenpuQjR2c0txQlVzZl
UxNlk4WnNsMFE4MG0vRFNoY0sKK0pEU1Y2SVpVYVV0bDBIYUIwK3BVTnFRalpSRzRUN3dsUDBRQURqMU8ra
EE0YlJ1VmhvZ3pHOVlqZTB1UlkvVzZaTS81N0VzM3pyVwpJb3pjaExzaWI5RDQ1TVk1NlFTSVBNTzY2MVY2
YllDWkpQVnNBZnY0bDdDVVcrdjkwbS94ZDJnTk5XUWpyTGhWb1FQUlRVSVozUGgxCldWYWorYWhKZWZpdkR
ya1JvSHkzYXUwMDBMWW1ZamdhaHd6NDZQMHUwNUIvQjVFcUhkWitYSVdEbWJBNENEL3BYdmsxQitUSlltNV
gKZjZkUWxmZTZ5SnZtanFJQnhkWm12M2xoOHp3YzRibUNYRjJndytuWVNMMFpvaEVVR1c2eWhodG9Qa2czR
29pM1haWmVuTWZ2SjJJSQo0cEVaWE5MeElkMjZGMEtDbDNHQlV6R3BuL1o5WXI5eTRhT1RIY3lLSmxvSk9O
RE8xdzJBRnJSNHBUcUhUSTJLcGRWR2wvSXNFTG04ClZDTEFBVkJwUTU3MHN1OXQrT3phOGVPeDc5K1JqMVF
xQ3lYQkpobkVVaEFGWmRXQ0VPckNNYzB1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClF1b1ZhZGlzIF
Jvb3QgQ0EgMwo9PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUduV
ENDQklXZ0F3SUJBZ0lDQmNZd0RRWUpLb1pJaHZjTkFRRUZCUUF3UlRFTE1Ba0dBMVVFQmhNQ1FrMHhHVEFY
QmdOVkJBb1QKRUZGMWIxWmhaR2x6SUV4cGJXbDBaV1F4R3pBWkJnTlZCQU1URWxGMWIxWmhaR2x6SUZKdmI
zUWdRMEVnTXpBZUZ3MHdOakV4TWpReApPVEV4TWpOYUZ3MHpNVEV4TWpReE9UQTJORFJhTUVVeEN6QUpCZ0
5WQkFZVEFrSk5NUmt3RndZRFZRUUtFeEJSZFc5V1lXUnBjeUJNCmFXMXBkR1ZrTVJzd0dRWURWUVFERXhKU
mRXOVdZV1JwY3lCU2IyOTBJRU5CSURNd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUMKRHdBd2dnSUtB
b0lDQVFETVYwSVdWSnptbU5QVFRlNys3Y2VmUXpsS1piUG9Gb2cwMncxWmtYVFBrcmdFUUswQ1N6R3J2STJ
SYU5nZwpEaG9CNGhwN1RoZGQ0b3EzUDVrYXpldGhxOEpscGgrM3Q3MjNqL3o5Y0k4TG9HZStBYUpaejNIbU
R5bDIvN0ZXZVVVckg1NTZWT2lqCktUVm9wQUZQRDZRdU4rOGJ2K09QRUtoeXExaFg1MVNHeU1uelc5b3Myb
DJPYmp5alB0cjdndVhkOGx5eUJUTnZpamJPMEJO
Ty83OUsKRERSTXBzTWh2VkFFVmV1eHU1MzdSUjVrRmQ1VkFZd0NkclhMb1Q5Q2Fid3Z2V2hERmxhSktqZGh
rZjJtcms3QXl4UmxsRGRMa2didgpCTkRJbklqYkMzdUJyN0U5S3NSbE9uaTI3dHlBc2RMVG1adzY3bXRhYT
dPTnQ5WE9uTUsrcFVzdkZyR2VhRHNHYjY1OW4vamU3TXdwCnA1aWpKVU12Ny9GZkp1R0lUZmhlYnRmWkZHN
FpNMm1uTzRTSms4UlRWUk9oVVhoQStMakpvdTU3dWxKQ2c1NFU3UVZTV2xsV3A1ZjgKblQ4S0tkamNUNUVP
RTd6ZWxhVGZpNW0rckpzemlPKzFnYThieGlKVHlQYkg3cGNVc01WOGVGTEk4TTV1ZDJDRXB1a3FkaUR0V0F
FWApNSlBwR292Z2MyUFphcEtVU1U2MHJVcUZ4S01pTVB3SjdXZ2ljNmFJREZVaFdNWGhPcDhxM2NyaGtPRF
pjNnRzZ0xqb0MyU1RvSnlNCkdmK3owZ3pza1NhSGlyT2k0WENQTEFybHpXMW9VZXZhUHdWL2l6TG1FMXhyL
2w5QTRpTEl0TFJrVDlhNmZVZytxR2tNMTd1R2NjbHoKdUQ4N25TVkwydjlBNndJREFRQUJvNElCbFRDQ0Fa
RXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96Q0I0UVlEVlIwZ0JJSFpNSUhXTUlIVApCZ2tyQmdFRUFiNVlBQU1
3Z2NVd2daTUdDQ3NHQVFVRkJ3SUNNSUdHR29HRFFXNTVJSFZ6WlNCdlppQjBhR2x6SUVObGNuUnBabWxqCl
lYUmxJR052Ym5OMGFYUjFkR1Z6SUdGalkyVndkR0Z1WTJVZ2IyWWdkR2hsSUZGMWIxWmhaR2x6SUZKdmIzU
WdRMEVnTXlCRFpYSjAKYVdacFkyRjBaU0JRYjJ4cFkza2dMeUJEWlhKMGFXWnBZMkYwYVc5dUlGQnlZV04w
YVdObElGTjBZWFJsYldWdWRDNHdMUVlJS3dZQgpCUVVIQWdFV0lXaDBkSEE2THk5M2QzY3VjWFZ2ZG1Ga2F
YTm5iRzlpWVd3dVkyOXRMMk53Y3pBTEJnTlZIUThFQkFNQ0FRWXdIUVlEClZSME9CQllFRlBMQUUrQ0NRej
c3N2k5bk1wWTFYTnU0eXdMUU1HNEdBMVVkSXdSbk1HV0FGUExBRStDQ1F6Nzc3aTluTXBZMVhOdTQKeXdMU
W9VbWtSekJGTVFzd0NRWURWUVFHRXdKQ1RURVpNQmNHQTFVRUNoTVFVWFZ2Vm1Ga2FYTWdUR2x0YVhSbFpE
RWJNQmtHQTFVRQpBeE1TVVhWdlZtRmthWE1nVW05dmRDQkRRU0F6Z2dJRnhqQU5CZ2txaGtpRzl3MEJBUVV
GQUFPQ0FnRUFUNjJnTEV6NndQSnY5MlpWCnF5TTA3dWNwMnNOYnRyQ0QyZERRNGlINzgyQ25PMTFnVXllaW
0vWUlJaXJudjZCeTVad2thakd4a0hvbjI0UVJpU2VtZDFvNDE3K3MKaHZ6dVhZTzhCc2JSZDJzUGJTUXZTM
3BzcHdlV3l1T0VuNjJJaXgyckZvMWJaaGZaRnZTTGdOTGQrTEoydy93NEU2b00za0pwSzI3egpQT3VBSjl2
MXBrUU5uMXBWV1F2VkRWSkl4YTZmOGkrQXhlb3lVRFVTbHk3QjRmL3hJNGhST0oveVpsWjI1dzlSbDZWU0R
FMUpVWlUyClBiK2lTd3dRSFlhWlRLcnpjaEdUNU9yMm05cW9YYWROdDU0Q3JuTUF5Tm9qQStqNTZobDBZZ0
NVeXlJZ3ZwU25XYldDYXI2WmVYcXAKOGtva1V2ZDAvYnBPNXFnZEFtNnhEWUJFd2E3VEl6ZGZ1NFY4SzVJd
TZINmxpOTJaNGI4bmJ5MWRxbnVIL2dyZFMveU85U2JrYm5CQwpialBzTVo1N2s4SGt5V2thUGNCclRpSnQ3
cXRZVGNiUVFjRXI2azhTaDE3clJkaHM5WmdDMDZEWVZZb0dtUm1pb0hmUk1KNnN6SFh1CmcvV3dZam5QYkZ
maVROS1JDdzUxS0J1YXYvMGFRL0hLZC9zN2oyRzRhU2dXUWdSZWNDb2NJZGlQNGIwald5MTBRSkxaWXhrTm
M5MXAKdkdKSHZPQjBLN0xyZmI1Qkc3WEFSc1doSXN0ZlRzRW9rdDRZdXRVcUtMc1JpeGVUbUpsZ2xGd2p6M
W9ubDE0TEJRYVROeDQ3YVRicgpxWjVoSFk4eTJvNE0xblErZXdrazJnRjNSOFE3elRTTW1mWEs0U1ZoTTdK
WkcrSnUxemRYdGcycEV0bz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKU2VjdXJpdHkgQ29tbXVuaWN
hdGlvbiBSb290IENBCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRk
lDQVRFLS0tLS0KTUlJRFdqQ0NBa0tnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQlFNUXN3Q1FZR
FZRUUdFd0pLVURFWU1CWUdBMVVFQ2hNUApVMFZEVDAwZ1ZISjFjM1F1Ym1WME1TY3dKUVlEVlFRTEV4NVRa
V04xY21sMGVTQkRiMjF0ZFc1cFkyRjBhVzl1SUZKdmIzUkRRVEV3CkhoY05NRE13T1RNd01EUXlNRFE1V2h
jTk1qTXdPVE13TURReU1EUTVXakJRTVFzd0NRWURWUVFHRXdKS1VERVlNQllHQTFVRUNoTVAKVTBWRFQwMG
dWSEoxYzNRdWJtVjBNU2N3SlFZRFZRUUxFeDVUWldOMWNtbDBlU0JEYjIxdGRXNXBZMkYwYVc5dUlGSnZiM
1JEUVRFdwpnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDenMvNS8wMjJ4N3ha
OFY2VU1iWGFLTDB1L1pQdE03b3J3Cjh5bDg5Zi91S3VEcDZicGJaQ0thbW04c09pWnBVUVdaSnR6VkhHcHh
4cHA5SHAzZGZHekdqR2RuU2o3NGNiQVpKNmtKREthVnYwdU0KRFBwVm1Edlk2Q0toUzNFNGVheVhrbW16aV
g3cUlXZ0dtQlNXaDlKaE5yeHRKMWFlVis3QXdGYjlNcytrMlk3Q0k5ZU5xUFBZSmF5WAo1SEE0OUxZNnRKM
DdseVpEbzZHOFNWbHlUQ013aHdGWTlrNitIR2hXWnEvTlFWM0lzMDBxVlVhckg5b2U0a0E5MjgxOXVaS0Fu
RGZkCkRKWmtuZHdpOTJTTDMySGVGWlJTRmFCOVVzbExxQ0hKeHJIdHk4T1ZZTkVQOEt0dytOL0xUWDdzMXZ
xcjJiMS9WUEtsNlhuNjJkWjIKSkNoekFnTUJBQUdqUHpBOU1CMEdBMVVkRGdRV0JCU2djMG1aYU55RlcyWG
pteWd2VjUrOU03d0hTREFMQmdOVkhROEVCQU1DQVFZdwpEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU5CZ2txa
GtpRzl3MEJBUVVGQUFPQ0FRRUFhRUNwcUx2a1QxMTVzd1cxRjdOZ0UrdkdrbDNnCjBkTnEvdnUrbTIyL3h3
VnRXU0RFSFBDMzJvUllBbVA2U0JidlQ2VUw5MHFZOGorZUc2MUhhMlBPQ0VmclVqOTRuSzlOcnZqVlQ4K2E
KbUNvUVFUbFN4TjNabXc3dmt3R3VzaTdLYUVJa1FteXdzem8remVuYVNNUVZ5K241QncrU1VFbUszVEdYWD
hucE42bzdXV1dYbERMSgpzNTgrT21KWXhVbXRZZzV4cFRLcUw4YUpka05BRXhOblBhSlVKUkRMOFRyeTJmc
mJTVmE3cHY2blFUWEQ0SWhoeVlqSDN6WVFJcGhaCjZyQksrMVlXYzI2c1RmY2lvVSt0SFhvdFJTZmxNTUZl
OHRvVHl5VkNVWlZIQTR4c0ljeDBRdTFUL3pPTGp3OVhBUll2ejZidXlYQWkKRkwzOXZtd0xBdz09Ci0tLS0
tRU5EIENFUlRJRklDQVRFLS0tLS0KClNvbmVyYSBDbGFzcyAyIFJvb3QgQ0EKPT09PT09PT09PT09PT09PT
09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRElEQ0NBZ2lnQXdJQkFnSUJIVEFOQmdrc
WhraUc5dzBCQVFVRkFEQTVNUXN3Q1FZRFZRUUdFd0pHU1RFUE1BMEdBMVVFQ2hNRwpVMjl1WlhKaE1Sa3dG
d1lEVlFRREV4QlRiMjVsY21FZ1EyeGhjM015SUVOQk1CNFhEVEF4TURRd05qQTNNamswTUZvWERUSXhNRFF
3Ck5qQTNNamswTUZvd09URUxNQWtHQTFVRUJoTUNSa2t4RHpBTkJnTlZCQW9UQmxOdmJtVnlZVEVaTUJjR0
ExVUVBeE1RVTI5dVpYSmgKSUVOc1lYTnpNaUJEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBR
ENDQVFvQ2dnRUJBSkFYU2pXZHl2QU5sc2RFK2hZMwovRWk5dlgrQUxUVTc0VytvWjZtL0F4eE5qRzh5UjlW
QmFLUVRCTUUxREpxRVEveGNIZitKcytnWEdNMlJYL3VKNCtxL1RsMThHeWJUCmRYbnQ1b1RqVitXdEtjVDB
PaWpucFh1RU5tbXovVjUydmFNdG1kT1FUaU1vZlJoajhWUTdKcDEyVzVkQ3N2K3U4RTdzM1RtVlRvTUcKZi
tkSlFNakZBYkpVV21ZZFBmejU2VHdLbm9HNGNQQUJpK1FqVkh6SXJ2aVFIZ0NXY3RSVXoyRWp2T3I3blFLV
jBiYTVjVHBwQ0Q4UAp0T0ZDeDRqMVA1aW9wN29jNEhGeDcxaFhnVkI2WEd0MFJnNkRBNWpEanFodThuWXli
aWVEd25QejNCam90SlBxZFVSckJHQWdjVmVICm5mTytvSkFqUFlvazRkb2gyOE1DQXdFQUFhTXpNREV3RHd
ZRFZSMFRBUUgvQkFVd0F3RUIvekFSQmdOVkhRNEVDZ1FJU3FDcVdJVFQKWGp3d0N3WURWUjBQQkFRREFnRU
dNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUJhem9mNUZuSVZWMHNkMlp2bm9pWXc3Sk5uMzlZdAowalN2O
XppbHpxc1d1YXN2ZkRYTHJOQVB0RXdyL0lEdmE0eVJYeloyOTl1ekd4bnE5TElSL1dGeFJMOG9zem9kdjdO
RDZKKy8zREVJCmNiQ2RqZFkwUnpLUXhtVWs5NkJLZkFSemp6bHZGNHh5dGIxTHlIcjRlNFBES0U2Y0NlcG5
QN0puQkJ2REZOcjQ1MGtra2RBZGF2cGgKT2U5cjV5RjFCZ2ZZRXJRaElIQkNjWUhhUEpvMnZxWmJEV3BzbW
grUmUvbjU3MEs2VGs2ZXpBeU5sTnpaUlp4ZTdFSlFZNjcwWGNTeApFdHpLTzZndW5SUmFCWFczN05kajRyb
zF0Z1FJa2VqYW5aejJaclVZckFxbVZDWTBNOUlid2RSL0dqcU9DNm95YnR2OFR5V2YyVExICmxscHdyTjlN
Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClN0YWF0IGRlciBOZWRlcmxhbmRlbiBSb290IENBCj09PT0
9PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEdWpDQ0
FxS2dBd0lCQWdJRUFKaVdpakFOQmdrcWhraUc5dzBCQVFVRkFEQlZNUXN3Q1FZRFZRUUdFd0pPVERFZU1Cd
0dBMVVFCkNoTVZVM1JoWVhRZ1pHVnlJRTVsWkdWeWJHRnVaR1Z1TVNZd0pBWURWUVFERXgxVGRHRmhkQ0Jr
WlhJZ1RtVmtaWEpzWVc1a1pXNGcKVW05dmRDQkRRVEFlRncwd01qRXlNVGN3T1RJek5EbGFGdzB4TlRFeU1
UWXdPVEUxTXpoYU1GVXhDekFKQmdOVkJBWVRBazVNTVI0dwpIQVlEVlFRS0V4VlRkR0ZoZENCa1pYSWdUbV
ZrWlhKc1lXNWtaVzR4SmpBa0JnTlZCQU1USFZOMFlXRjBJR1JsY2lCT1pXUmxjbXhoCmJtUmxiaUJTYjI5M
ElFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQW1OSzFVUkY2Z2FZVW1I
RnQKdnN6bkV4dldKdzU2czJvWUhMWmhXdFZoQ2IvZWtCUEhaKzdkODlyRkRCS2VOVlUrTENlSVFHdjMzTjB
pWWZYQ3h3NzE5dFYyVTAyUApqTHdZZGplRm5laktTY2ZTVDVnVENhSStJb2ljZjlieUVHVzA3bDhZMVJmai
tNWDk0cDJpNzFNT2hYZWlEK0V3Uis0QTV6TjlSR2NhCkMxSG9pNkNlVUpob05GSWZMbTBCOG1CRjhqSHJxV
EZvS2J0NlFaN0dHWCtVdEZFNUEzK3kzcWN5bTdSSGptKzBTcTdscjdIY3NCdGgKdkpseTN1U0p0M29tWGRv
elNWdFNuQTcxaXEzRHVEM29CbXJDMVNvTGJIdUV2VllGeTRabGt1eEVLN0NPdWR4d0MwYmFyYnhqaURuNgo
yMnIrSS9xODVFajBaeXRxRVJBaFNRSURBUUFCbzRHUk1JR09NQXdHQTFVZEV3UUZNQU1CQWY4d1R3WURWUj
BnQkVnd1JqQkVCZ1JWCkhTQUFNRHd3T2dZSUt3WUJCUVVIQWdFV0xtaDBkSEE2THk5M2QzY3VjR3RwYjNab
GNtaGxhV1F1Ym13dmNHOXNhV05wWlhNdmNtOXYKZEMxd2IyeHBZM2t3RGdZRFZSMFBBUUgvQkFRREFnRUdN
QjBHQTFVZERnUVdCQlNvZmV1OFk2UjBFM1FBN0piZzB6VEJMTDlzK0RBTgpCZ2txaGtpRzl3MEJBUVVGQUF
PQ0FRRUFCWVNIVlhRMlljRzcwZFRHRmFnVHRKK2svcnZ1RmJRdkJnd3A4cWlTcEdFTi9LdGNDRnRSCkV5dE
53aXBoeVBnSldQd3RBckk1ZlpsbWdiOXVYSlZGSUd6bWVhZlIyQndwL01JZ0oxSEk4WHhkTkdkcGhSRXd4Z
0RTMS9QVGZMYncKTVZjb0VvSno2VE12cGxXMEM1R1VSNXo2dTNwQ011aXVmaTNJdkt3VXY5a1AyVnY4d2Zs
NmxlRjlmcGI4Y2JEQ1RNamZSVFRKemczeQpuR1FJMER2REtjV3k3WkFFd2JFcGtjVXdiOEdwY2pQTS9sMFd
GeXdSYWVkKy9zV0RDTis4M0NJNkxpQnBJemxXWUdlUWl5NTJPZnNSCmlKZjJmTDFMdUNBV1p3V040anZCY2
orVWxUZkhYYm1lMkpPaEY0Ly9ER1lWd1NSOE1ud0RIVHVoV0VVeWt3PT0KLS0tLS1FTkQgQ0VSVElGSUNBV
EUtLS0tLQoKVERDIEludGVybmV0IFJvb3QgQ0EKPT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBD
RVJUSUZJQ0FURS0tLS0tCk1JSUVLekNDQXhPZ0F3SUJBZ0lFT3N5bFREQU5CZ2txaGtpRzl3MEJBUVVGQUR
CRE1Rc3dDUVlEVlFRR0V3SkVTekVWTUJNR0ExVUUKQ2hNTVZFUkRJRWx1ZEdWeWJtVjBNUjB3R3dZRFZRUU
xFeFJVUkVNZ1NXNTBaWEp1WlhRZ1VtOXZkQ0JEUVRBZUZ3MHdNVEEwTURVeApOak16TVRkYUZ3MHlNVEEwT
URVeE56QXpNVGRhTUVNeEN6QUpCZ05WQkFZVEFrUkxNUlV3RXdZRFZRUUtFd3hVUkVNZ1NXNTBaWEp1ClpY
UXhIVEFiQmdOVkJBc1RGRlJFUXlCSmJuUmxjbTVsZENCU2IyOTBJRU5CTUlJQklqQU5CZ2txaGtpRzl3MEJ
BUUVGQUFPQ0FROEEKTUlJQkNnS0NBUUVBeExoQXZKSFZZeC9YbWFDTERFQWVkTGRJblVhTUFyTGdKRi93R1
JPbk40TnJYY2VPK1lRd3pobzcrdnZPaTIwagp4c051WnArSnBkL2dRbEJuK2g5c0h2VFFCZGEveXRaTzVHa
GdiRWFxSEYxajRRZUdEbVVBcHk2bWNjYTh1WUdvT24wYTB2blJyRXZMCnpuV3YzSHY2Z1hQVS9McTlRWWpV
ZExQNVhqZzZQRU9vMHBWT2QyMFRESjJQZUFHM1dpQWZBemMxNGl6YlN5c3NlTGxKMjhUUXg1eWMKNUlvZ0N
TRVdWbWIvQmV4YjQvRFBxeVFrWHNOL2NIb1N4TksxRUtDMkllR05lR2xWUkduMXlwWWNOSVVYSlhmaTlpOG
5tSGo5ZVFZNgpvdFphUThILzdBUTc3aFB2MDFoYS81THI3SzdhOGpjRFIwRzJsOGt0Q2tFaXU3dm1wd0lEQ
VFBQm80SUJKVENDQVNFd0VRWUpZSVpJCkFZYjRRZ0VCQkFRREFnQUhNR1VHQTFVZEh3UmVNRnd3V3FCWW9G
YWtWREJTTVFzd0NRWURWUVFHRXdKRVN6RVZNQk1HQTFVRUNoTU0KVkVSRElFbHVkR1Z5Ym1WME1SMHdHd1l
EVlFRTEV4UlVSRU1nU1c1MFpYSnVaWFFnVW05dmRDQkRRVEVOTUFzR0ExVUVBeE1FUTFKTQpNVEFyQmdOVk
hSQUVKREFpZ0E4eU1EQXhNRFF3TlRFMk16TXhOMXFCRHpJd01qRXdOREExTVRjd016RTNXakFMQmdOVkhRO
EVCQU1DCkFRWXdId1lEVlIwakJCZ3dGb0FVYkdRQngvMkZiYXpJMnA1UUNJVUl0VHhXcUZBd0hRWURWUjBP
QkJZRUZHeGtBY2Y5aFcyc3lOcWUKVUFpRkNMVThWcWhRTUF3R0ExVWRFd1FGTUFNQkFmOHdIUVlKS29aSWh
2WjlCMEVBQkJBd0Roc0lWalV1TURvMExqQURBZ1NRTUEwRwpDU3FHU0liM0RRRUJCUVVBQTRJQkFRQk9ROH
pSM1IwUUd3Wi90NlQ2MDlsTit5T2ZJMVJiNW9zdkJDaUx0U2R0aWFIc21HbmM1NDBtCmd3VjVkT3kwdWFPW
HdUVUEvUlhhT1lFNmxUR1EzcGZwaHFpWmR3emxXcUNFL3hJV3JHNjRqY043a3NLc0x0QjlLT3kyODJBNGFX
OCsKMkFSVlBwN01WZEs2L3J0SEJOY0syUllLTkNuMVdCUFZUOCtQVmt1ekh1N1RtSG5hQ0I0TWI3ajRGaWZ
2d204OTlxTkxQZzdrYld6YgpPMEVTbTcwTlJ5Ti9QRXJRcjhDdjl1OGJ0UlhFNjRQRUNWOTBpOWtSKzhKV3
NUejRjTW8walVOQUU0ejltUU5VZWNZdTZvYWg5anJVCkNiejB2R2JNUFZqUVYwa0s3aVhpUWU0VCtaczROT
kVBOVg3bmxCMzhhUU5pdUprRkJUMXJlQks5c0c5bAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpUREMg
T0NFUyBSb290IENBCj09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZ
HVENDQkFHZ0F3SUJBZ0lFUGtpOXhEQU5CZ2txaGtpRzl3MEJBUVVGQURBeE1Rc3dDUVlEVlFRR0V3SkVTek
VNTUFvR0ExVUUKQ2hNRFZFUkRNUlF3RWdZRFZRUURFd3RVUkVNZ1QwTkZVeUJEUVRBZUZ3MHdNekF5TVRFd
09ETTVNekJhRncwek56QXlNVEV3T1RBNQpNekJhTURFeEN6QUpCZ05WQkFZVEFrUkxNUXd3Q2dZRFZRUUtF
d05VUkVNeEZEQVNCZ05WQkFNVEMxUkVReUJQUTB
WVElFTkJNSUlCCklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFyR0wyWVNDeXo4RE
doZGZqZWViTTdmSTVrcVNYTG1TamhGdUgKbkV6OXBQUEVYeUc5VmhEcjJ5NWg3Sk5wNDZQTXZabkRCZndHd
U1vMkhQNlFqa2xNeEZhYUwxYTh6M3NNOFc5SHBnMURUZUxwSFRrMAp6WTBzMlJLWStlUGh3VXA4aGpqRXFj
UmhpTkplcnhvbVRkWGtvQ0pIaE5sa3R4bVcvT3daNUxLWEprNUtUTXVQSkl0VUdCeElZWHZWCmlHamFYYlh
xelJvd3dZQ0RkbENxVDlIVTNUanc3eGIwNFF4UUJyL3ErM3BKb1NnckhQYjhGVEtqZEdxUHFjTmlLWEV4NV
R1a1lCZGUKZE9iYUUrM3BIeDhiMGJKb2M4WVFOSFZHRUJEamtBQjJRTXVMdDBNSklmK3JUcFBHV09tbGd0d
DN4RHFac1hLVlNRVHd0eXY2ZTFtTwozUUlEQVFBQm80SUNOekNDQWpNd0R3WURWUjBUQVFIL0JBVXdBd0VC
L3pBT0JnTlZIUThCQWY4RUJBTUNBUVl3Z2V3R0ExVWRJQVNCCjVEQ0I0VENCM2dZSUtvRlFnU2tCQVFFd2d
kRXdMd1lJS3dZQkJRVUhBZ0VXSTJoMGRIQTZMeTkzZDNjdVkyVnlkR2xtYVd0aGRDNWsKYXk5eVpYQnZjMm
wwYjNKNU1JR2RCZ2dyQmdFRkJRY0NBakNCa0RBS0ZnTlVSRU13QXdJQkFScUJnVU5sY25ScFptbHJZWFJsY
2lCbQpjbUVnWkdWdWJtVWdRMEVnZFdSemRHVmtaWE1nZFc1a1pYSWdUMGxFSURFdU1pNHlNRGd1TVRZNUxq
RXVNUzR4TGlCRFpYSjBhV1pwClkyRjBaWE1nWm5KdmJTQjBhR2x6SUVOQklHRnlaU0JwYzNOMVpXUWdkVzV
rWlhJZ1QwbEVJREV1TWk0eU1EZ3VNVFk1TGpFdU1TNHgKTGpBUkJnbGdoa2dCaHZoQ0FRRUVCQU1DQUFjd2
dZRUdBMVVkSHdSNk1IZ3dTS0JHb0VTa1FqQkFNUXN3Q1FZRFZRUUdFd0pFU3pFTQpNQW9HQTFVRUNoTURWR
VJETVJRd0VnWURWUVFERXd0VVJFTWdUME5GVXlCRFFURU5NQXNHQTFVRUF4TUVRMUpNTVRBc29DcWdLSVlt
CmFIUjBjRG92TDJOeWJDNXZZMlZ6TG1ObGNuUnBabWxyWVhRdVpHc3ZiMk5sY3k1amNtd3dLd1lEVlIwUUJ
DUXdJb0FQTWpBd016QXkKTVRFd09ETTVNekJhZ1E4eU1ETTNNREl4TVRBNU1Ea3pNRm93SHdZRFZSMGpCQm
d3Rm9BVVlMV0Y3RlprZmhJWkoyY2RVQlZMYzY0NworUkl3SFFZRFZSME9CQllFRkdDMWhleFdaSDRTR1Nkb
khWQVZTM091Ty9rU01CMEdDU3FHU0liMmZRZEJBQVFRTUE0YkNGWTJMakE2Ck5DNHdBd0lFa0RBTkJna3Fo
a2lHOXcwQkFRVUZBQU9DQVFFQUNyb21Ka2JUYzZnSjgyc0xNSm45aXVGWGVoSFR1SlRYQ1JCdW83RTQKQTl
HMjhrTkJLV0tuY3RqN2ZBWG1NWEFuVkJoT2lueE81ZEhLakhpSXp4dlRrSXZtSS9nTERqTkRmWnppQ2htUH
lRRStkRjEweVlzYwpBK1VZeUFGTVA4dVhCVjJZY2FhWWI3Wjh2VGQvdnVHVEpXMXY4QXF0RnhqaEE3d0hLY
2l0SnVqNFlmRDlJUWwrbW82cGFIMUlZbks5CkFPb0JtYmdHZ2xHQlR2SDF0SkZVdVNONkFKcWZYWTNnUEdT
NUdoS1NLc2VDUkhJNTNPSTh4dGhWOVJWT3lBVU8yOGJRWXFic0ZiUzEKQW9MYnJJeWlnZkNibVRIMUlDQ29
pR0VLQjUrVS9ORFhHOHd1Ri9NRUozWm42MVNEL2FTUWZnWTlCS05ETGRyOEMyTHFMMTlpVXc9PQotLS0tLU
VORCBDRVJUSUZJQ0FURS0tLS0tCgpVVE4gREFUQUNvcnAgU0dDIFJvb3QgQ0EKPT09PT09PT09PT09PT09P
T09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFWGpDQ0EwYWdBd0lCQWdJUVJMNE1p
MUFBSWJRUjB5cG9CcW10YVRBTkJna3Foa2lHOXcwQkFRVUZBRENCa3pFTE1Ba0dBMVVFCkJoTUNWVk14Q3p
BSkJnTlZCQWdUQWxWVU1SY3dGUVlEVlFRSEV3NVRZV3gwSUV4aGEyVWdRMmwwZVRFZU1Cd0dBMVVFQ2hNVl
ZHaGwKSUZWVFJWSlVVbFZUVkNCT1pYUjNiM0pyTVNFd0h3WURWUVFMRXhob2RIUndPaTh2ZDNkM0xuVnpaW
EowY25WemRDNWpiMjB4R3pBWgpCZ05WQkFNVEVsVlVUaUF0SUVSQlZFRkRiM0p3SUZOSFF6QWVGdzA1T1RB
Mk1qUXhPRFUzTWpGYUZ3MHhPVEEyTWpReE9UQTJNekJhCk1JR1RNUXN3Q1FZRFZRUUdFd0pWVXpFTE1Ba0d
BMVVFQ0JNQ1ZWUXhGekFWQmdOVkJBY1REbE5oYkhRZ1RHRnJaU0JEYVhSNU1SNHcKSEFZRFZRUUtFeFZVYU
dVZ1ZWTkZVbFJTVlZOVUlFNWxkSGR2Y21zeElUQWZCZ05WQkFzVEdHaDBkSEE2THk5M2QzY3VkWE5sY25Se
QpkWE4wTG1OdmJURWJNQmtHQTFVRUF4TVNWVlJPSUMwZ1JFRlVRVU52Y25BZ1UwZERNSUlCSWpBTkJna3Fo
a2lHOXcwQkFRRUZBQU9DCkFROEFNSUlCQ2dLQ0FRRUEzKzVZRUtJcmJsWEVqcjh1UmdubjRBZ1BMaXQ2RTV
RYnZmYTJnSTVsQlpNQUhyeXY0ZytPR1EwU1IreXMKcmFQNkxuRDQzbTc3VmtJVm5pNWM3eVBlSWJrRmRpY1
pEMC9XdzV5MHZwUVpZL0ttRVFyclUwaWN2dklwT3hib0dxQk1wc24wR0Zsbwp3SER5VXdEQVhsQ0NwVlp2T
nZsSzRFU0dvRTFPMWtkdVNVckxaOWVteEFXNWpoNzAvUC9ONXpiZ25BVnNzak1pRmRDMDRNd1h3TExBCjlQ
NHlQeWtxbFh2WThxZE9EMVI4b1EyQXN3a0R3ZjljM1Y2YVByeXV2RWVLYXE1eHloK3hLcmhmUWdVTDdFWXc
wWElMeXVsV2JmWHYKMzNpK1licXlwYTRFVEx5b3JHa1ZsNzN2NjdTTXZ6WDQxTVBSS0E1Y09wOXdHRE1nZD
hTaXJ3SURBUUFCbzRHck1JR29NQXNHQTFVZApEd1FFQXdJQnhqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CM
EdBMVVkRGdRV0JCUlRNdEd6ejMvNjRQR2dYWVZPa3RLZVJSMjBUekE5CkJnTlZIUjhFTmpBME1ES2dNS0F1
aGl4b2RIUndPaTh2WTNKc0xuVnpaWEowY25WemRDNWpiMjB2VlZST0xVUkJWRUZEYjNKd1UwZEQKTG1OeWJ
EQXFCZ05WSFNVRUl6QWhCZ2dyQmdFRkJRY0RBUVlLS3dZQkJBR0NOd29EQXdZSllJWklBWWI0UWdRQk1BME
dDU3FHU0liMwpEUUVCQlFVQUE0SUJBUUFuTlpjQWlvc292Y1l6TUI0cC9PTDMxWmpVUUx0Z3lyK3JGeXdKT
m45UStrSGNycFk2Q2lNK2lWbkpvd2Z0Ckd6ZXQvSHkrVVVsYTNqb0tWQWdXUmNLWnNZZk5qR2pnYVFQcHhF
NllzanVNRnJNT29BeVlVSnVUcVhBSnlDeWpqOThDNU9CeE92RzAKSTNLZ3FnSGYzNWcrRkZDZ01TYTlLT2x
hTUNaMStYdGdISTN6elZBbWJRUW5tdC9WRFVWSEtXc3M1bmJacVNsOU10M0pOank5cmpYeApFWjRkdTVBL0
VrZE9qdGQrRDJKekhWSW1PQndZU2Ywd2RKckU1U0l2Mk1DTjdaRjZUQUNQY245ZDJ0MGJpMFZyNTkxcGw2a
kZWa3dQCkRQYWZlcEUzOXBlQzROMXhhZjkyUDJCTlBNLzNtZm5HVi9USlZUbDR1aXg1eWFhSUsvUUkKLS0t
LS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKVVROIFVTRVJGaXJzdCBIYXJkd2FyZSBSb290IENBCj09PT09PT0
9PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRWREQ0NBMX
lnQXdJQkFnSVFSTDRNaTFBQUpMUVIwellxL21VSy9UQU5CZ2txaGtpRzl3MEJBUVVGQURDQmx6RUxNQWtHQ
TFVRQpCaE1DVlZNeEN6QUpCZ05WQkFnVEFsVlVNUmN3RlFZRFZRUUhFdzVUWVd4MElFeGhhMlVnUTJsMGVU
RWVNQndHQTFVRUNoTVZWR2hsCklGVlRSVkpVVWxWVFZDQk9aWFIzYjNKck1TRXdId1lEVlFRTEV4aG9kSFJ
3T2k4dmQzZDNMblZ6WlhKMGNuVnpkQzVqYjIweEh6QWQKQmdOVkJBTVRGbFZVVGkxVlUwVlNSbWx5YzNRdF
NHRnlaSGRoY21Vd0hoY05PVGt3TnpBNU1UZ3hNRFF5V2hjTk1Ua3dOekE1TVRneApPVEl5V2pDQmx6RUxNQ
WtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWxWVU1SY3dGUVlEVlFRSEV3NVRZV3gwSUV4aGEyVWdRMmww
CmVURWVNQndHQTFVRUNoTVZWR2hsSUZWVFJWSlVVbFZUVkNCT1pYUjNiM0pyTVNFd0h3WURWUVFMRXhob2R
IUndPaTh2ZDNkM0xuVnoKWlhKMGNuVnpkQzVqYjIweEh6QWRCZ05WQkFNVEZsVlVUaTFWVTBWU1JtbHljM1
F0U0dGeVpIZGhjbVV3Z2dFaU1BMEdDU3FHU0liMwpEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUN4OThNN
FA3U29mODg1Z2xGbjBHMmYwdjlZOCtlZksrd05pVlNadVRpWkZ2ZmdJWGxJCndydGhkQktXSFR4cWN0VThF
R2M2T2UwckU4MW02NVVKTTZSc2w3SG94dXpCZFhtY1JsNk5xOUJxL2JrcVZSY1FWTE1aOEpyMjhiRmQKdHF
kdCsrQnhGMnVpaVBzQTMvNGFNWGNNbWdGNnNUTGpLd0VIT0c3RHBWNGp2RVdiZTFEQnlUQ1AyK1VyZXROYi
t6TkFIcURWbUJlOAppNGZEaWROZG9JNnlxcXIyam1tSUJzWDZpU0h6Q0oxcExna3pteWtOUmcrTXpFazBzR
2xSdmZrR3pXaXRaa3k4UHF4aHZRcUlEc2pmClBlNThCRXlkQ2w1cmtkYnV4KzBvamF0Tmg0bHowRzZrMEI0
V2l4VGhka1FEZjJPczVNMUpuTVdTOUtzeW9VaGJBZ01CQUFHamdia3cKZ2JZd0N3WURWUjBQQkFRREFnSEd
NQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGS0Z5WHlZYktKaERsVjBITjlXRgpscDFMMH
NORk1FUUdBMVVkSHdROU1Ec3dPYUEzb0RXR00yaDBkSEE2THk5amNtd3VkWE5sY25SeWRYTjBMbU52YlM5V
lZFNHRWVk5GClVrWnBjbk4wTFVoaGNtUjNZWEpsTG1OeWJEQXhCZ05WSFNVRUtqQW9CZ2dyQmdFRkJRY0RB
UVlJS3dZQkJRVUhBd1VHQ0NzR0FRVUYKQndNR0JnZ3JCZ0VGQlFjREJ6QU5CZ2txaGtpRzl3MEJBUVVGQUF
PQ0FRRUFSeGtQM25UR21aZXYvSzBvWG5XTzZ5MW43azU3SzljTQovL2JleTFXaUN1Rk1WR1dUWUd1ZkVweX
RYb01zNjFxdXdPUXQ5QUJqSGJqQWJQTFBTYnROazI4R3Bnb2lza2xpQ0U3L3lNZ1Vzb2dXClhlY0I1QktWN
VVVMHM0dHB2YyswaFk5MVVaNTlPamc2RkVnU3h2dW5PeHFORFlKQUIrZ0VDSkNoaWNzWlVOL0tIQUc4SFFR
WmV4QjIKbHp2dWtKREt4QTRmRm01MTd6UDQwMjliSHBiajRIUjNkSHVLb200dDNYYldPVENDOEt1Y1V2SXF
4NjlKWG43SGFPV0NnY2hxSi9rbgppQ3JWV0ZDVkgvQTdIRmU3ZlJRNVlpdWF5WlNTS3FNaURQK0pKbjFmSX
l0SDF4VWRxV3FlVVEwcVVaNkIrZFE3WG5BU2Z4QXluQjY3Cm5maG1xQT09Ci0tLS0tRU5EIENFUlRJRklDQ
VRFLS0tLS0KCkNhbWVyZmlybWEgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUV2VENDQTZXZ0F
3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREIvTVFzd0NRWURWUVFHRXdKRlZURW5NQ1VHQTFVRUNoTW
UKUVVNZ1EyRnRaWEptYVhKdFlTQlRRU0JEU1VZZ1FUZ3lOelF6TWpnM01TTXdJUVlEVlFRTEV4cG9kSFJ3T
2k4dmQzZDNMbU5vWVcxaQpaWEp6YVdkdUxtOXlaekVpTUNBR0ExVUVBeE1aUTJoaGJXSmxjbk1nYjJZZ1Ey
OXRiV1Z5WTJVZ1VtOXZkREFlRncwd016QTVNekF4Ck5qRXpORE5hRncwek56QTVNekF4TmpFek5EUmFNSDh
4Q3pBSkJnTlZCQVlUQWtWVk1TY3dKUVlEVlFRS0V4NUJReUJEWVcxbGNtWnAKY20xaElGTkJJRU5KUmlCQk
9ESTNORE15T0RjeEl6QWhCZ05WQkFzVEdtaDBkSEE2THk5M2QzY3VZMmhoYldKbGNuTnBaMjR1YjNKbgpNU
0l3SUFZRFZRUURFeGxEYUdGdFltVnljeUJ2WmlCRGIyMXRaWEpqWlNCU2IyOTBNSUlCSURBTkJna3Foa2lH
OXcwQkFRRUZBQU9DCkFRMEFNSUlCQ0FLQ0FRRUF0elpWNWFWZEdERGcyb2xVa2Z6SXgxTDRMMURaNzdGMWM
yVkhmUnRidW5YRi9LR0lKUG92N2NvSVNqbFUKeEZGNnRkcGc2amc4Z2JMTDhidlprU00vU0FGd2Rha0ZLcT
BmY2ZQSlZEMGRCbXBBUHJNTWhlNWNHM25DWXNTNE5vNDFYUUVNSXdSSApOYXFiWUU2Z1pqM0xKZ3FjUUtIM
FhaaS9jYXVsQUdncTdZTjZENklVdGRRaXM0Q3dQQXhhVVdrdFdCaVA3Wm1lOGE3aWxlYjJSNmpXCkRBK3dX
RmpidzJZM25wdVJWRE0zMHBRY2Frakp5ZktsMnFVTUkvY2pEcHd5VlY1eG5JUUZVWm90L2VaT0tqUmEzc3B
BTjJjTVZDRlYKZDlvS0RNeVhyb0RjbERaSzlEN09OaE1lVStTc1Rqb0Y3TnV1Y3B3NGk5QTVPNGtLUG5mK2
RRSUJBNk9DQVVRd2dnRkFNQklHQTFVZApFd0VCL3dRSU1BWUJBZjhDQVF3d1BBWURWUjBmQkRVd016QXhvQ
ytnTFlZcmFIUjBjRG92TDJOeWJDNWphR0Z0WW1WeWMybG5iaTV2CmNtY3ZZMmhoYldKbGNuTnliMjkwTG1O
eWJEQWRCZ05WSFE0RUZnUVU0NVQxc1UzcDI2RXBXMWVMVFhZR2R1SFJvb293RGdZRFZSMFAKQVFIL0JBUUR
BZ0VHTUJFR0NXQ0dTQUdHK0VJQkFRUUVBd0lBQnpBbkJnTlZIUkVFSURBZWdSeGphR0Z0WW1WeWMzSnZiM1
JBWTJoaApiV0psY25OcFoyNHViM0puTUNjR0ExVWRFZ1FnTUI2QkhHTm9ZVzFpWlhKemNtOXZkRUJqYUdGd
FltVnljMmxuYmk1dmNtY3dXQVlEClZSMGdCRkV3VHpCTkJnc3JCZ0VFQVlHSExnb0RBVEErTUR3R0NDc0dB
UVVGQndJQkZqQm9kSFJ3T2k4dlkzQnpMbU5vWVcxaVpYSnoKYVdkdUxtOXlaeTlqY0hNdlkyaGhiV0psY25
OeWIyOTBMbWgwYld3d0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFBeEJsOElhaHNBaQpmSi83a1BNYTBRT3
g3eFA1SVY4RW5OckpwWTBuYkphSGtiNUJrQUZ5aytjZWZWLzJpY1pkcDBBSlBheEpSVVhjTG8wd2FMSUp1d
nZECkw4eTZDOTgvZDN0R2ZUb1NKSTZXanp3RkNtL1NsQ2dkYlF6QUxvZ2kxZGpQSFJQSDhFalgxd1duejhk
SG5qczhOTWlBVDlRVXUvd04KVVBmNnMreENYNm5kYmNqMGRjOTd3WEltc1FFY1hDejllazYwQWNVRlY3bm5
QS29GMllqcEIwWkJ6dTlCZ2E1WTM0T2lyc3JYZHgvbgpBRHlkYjQ3a01na2RUWGcwZURROGxKc203VTl4eG
hsNnZTQWlTRnIrUzMwRHQrZFl2c1l5VG5RZWFOMm9hRnV6UHU1aWZkbUE2QXAxCmVyZnV0R1dhSVpEZ3F0Q
1l2RGkxY3p5TCtOdz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKQ2FtZXJmaXJtYSBHbG9iYWwgQ2hh
bWJlcnNpZ24gUm9vdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0V
SVElGSUNBVEUtLS0tLQpNSUlFeFRDQ0E2MmdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJBUVVGQURCOU1Rc3
dDUVlEVlFRR0V3SkZWVEVuTUNVR0ExVUVDaE1lClFVTWdRMkZ0WlhKbWFYSnRZU0JUUVNCRFNVWWdRVGd5T
npRek1qZzNNU013SVFZRFZRUUxFeHBvZEhSd09pOHZkM2QzTG1Ob1lXMWkKWlhKemFXZHVMbTl5WnpFZ01C
NEdBMVVFQXhNWFIyeHZZbUZzSUVOb1lXMWlaWEp6YVdkdUlGSnZiM1F3SGhjTk1ETXdPVE13TVRZeApOREU
0V2hjTk16Y3dPVE13TVRZeE5ERTRXakI5TVFzd0NRWURWUVFHRXdKRlZURW5NQ1VHQTFVRUNoTWVRVU1nUT
JGdFpYSm1hWEp0CllTQlRRU0JEU1VZZ1FUZ3lOelF6TWpnM01TTXdJUVlEVlFRTEV4cG9kSFJ3T2k4dmQzZ
DNMbU5vWVcxaVpYSnphV2R1TG05eVp6RWcKTUI0R0ExVUVBeE1YUjJ4dlltRnNJRU5vWVcxaVpYSnphV2R1
SUZKdmIzUXdnZ0VnTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRFFBdwpnZ0VJQW9JQkFRQ2ljS0xRbjBLdVd
4ZkgySDNQRklQOFQ4bWh0eE92aXRlZVBnUUtrb3RnVnZxME1pK0lUYUZnQ1BTM0NVNmdTUzlKCjF0UGZuWm
RhbjVRRWNPdy9XZG0zekdhTG1GSW9DUUxmeFMrRWpYcVhkNy9zUUowbGNxdTFQektZKzdlMy9IS0U1VFdIK
1ZYNm94OE8KYnk0bzNXbWcyVUlReHZpMVJNTFFRMy9idk9TaVBHcFZlQXAzcWRqcUdUSzNMLzVjUHh2dXNa
anN5cTE2YVVYamxnOVY5dWJ0ZGVwbAo2REpXazBhSnFDV0taUWJ1YTc5NUI5RHh0Ni90TEUyU3U4Q29YNmR
uZlFUeUZRaHdySkxXZlFUU00vdE10Z3NMK3hySn
hJMERxWDVjCjhsQ3JFcVdoejBoUXBlL1N5Qm9UK3JCL3NZSWNkMm9QWDl3TGxZL3ZRMzdtUlFrbEFnRURvN
ElCVURDQ0FVd3dFZ1lEVlIwVEFRSC8KQkFnd0JnRUIvd0lCRERBL0JnTlZIUjhFT0RBMk1EU2dNcUF3aGk1
b2RIUndPaTh2WTNKc0xtTm9ZVzFpWlhKemFXZHVMbTl5Wnk5agphR0Z0WW1WeWMybG5ibkp2YjNRdVkzSnN
NQjBHQTFVZERnUVdCQlJEbkRhZnNKNHdUY2JPWDYwUXErVURwZnFwRkRBT0JnTlZIUThCCkFmOEVCQU1DQV
FZd0VRWUpZSVpJQVliNFFnRUJCQVFEQWdBSE1Db0dBMVVkRVFRak1DR0JIMk5vWVcxaVpYSnphV2R1Y205d
mRFQmoKYUdGdFltVnljMmxuYmk1dmNtY3dLZ1lEVlIwU0JDTXdJWUVmWTJoaGJXSmxjbk5wWjI1eWIyOTBR
R05vWVcxaVpYSnphV2R1TG05eQpaekJiQmdOVkhTQUVWREJTTUZBR0N5c0dBUVFCZ1ljdUNnRUJNRUV3UHd
ZSUt3WUJCUVVIQWdFV00yaDBkSEE2THk5amNITXVZMmhoCmJXSmxjbk5wWjI0dWIzSm5MMk53Y3k5amFHRn
RZbVZ5YzJsbmJuSnZiM1F1YUhSdGJEQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUEKUER0d2tma0VWQ2VSN
GUzdC9taC9ZVjNsUVdWUE12RVlCWlJxSE40ZmNOcytleklDTkxVTWJLR0tmS1gwai8vVTJLMFgxUzBFMFQ5
WQpnT0tCV1lpK3dPTkdreVQra0wwbW9qQXQ2SmNtVnpXSmRKWVk5aFhpcnlRWlZnSUNzcm9QRk9yR2ltYkJ
oa1ZWaTc2U3ZweWtCTWRKClBKN29LWHFKMS82di8yajFwUmVRdmF5WnpLV0dWd2xuUnR2V0ZzSkc4ZVNwVV
BXUDBaSVYwMTgreGdCSk9tNVlzdEhSSncwbHlETDQKSUJITmZUSXpTSlJVVE4zY2VjUXduK3VPdUZXMTE0a
GN4V29rUGJMVEJRTlJ4Z2Z2ekJSeWREMXVjczRZS0l4S29IZmxDU3RGUkVlcwp0MmQvQVlvRldwTytvY0gv
K09jT1o2UkhTWFpkZFpBYTlTYVA4QT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCk5ldExvY2sgTm9
0YXJ5IChDbGFzcyBBKSBSb290Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0
VSVElGSUNBVEUtLS0tLQpNSUlHZlRDQ0JXV2dBd0lCQWdJQ0FRTXdEUVlKS29aSWh2Y05BUUVFQlFBd2dhO
HhDekFKQmdOVkJBWVRBa2hWTVJBd0RnWURWUVFJCkV3ZElkVzVuWVhKNU1SRXdEd1lEVlFRSEV3aENkV1Jo
Y0dWemRERW5NQ1VHQTFVRUNoTWVUbVYwVEc5amF5QklZV3h2ZW1GMFltbDYKZEc5dWMyRm5hU0JMWm5RdU1
Sb3dHQVlEVlFRTEV4RlVZVzUxYzJsMGRtRnVlV3RwWVdSdmF6RTJNRFFHQTFVRUF4TXRUbVYwVEc5agpheU
JMYjNwcVpXZDVlbTlwSUNoRGJHRnpjeUJCS1NCVVlXNTFjMmwwZG1GdWVXdHBZV1J2TUI0WERUazVNREl5T
kRJek1UUTBOMW9YCkRURTVNREl4T1RJek1UUTBOMW93Z2E4eEN6QUpCZ05WQkFZVEFraFZNUkF3RGdZRFZR
UUlFd2RJZFc1bllYSjVNUkV3RHdZRFZRUUgKRXdoQ2RXUmhjR1Z6ZERFbk1DVUdBMVVFQ2hNZVRtVjBURzl
qYXlCSVlXeHZlbUYwWW1sNmRHOXVjMkZuYVNCTFpuUXVNUm93R0FZRApWUVFMRXhGVVlXNTFjMmwwZG1GdW
VXdHBZV1J2YXpFMk1EUUdBMVVFQXhNdFRtVjBURzlqYXlCTGIzcHFaV2Q1ZW05cElDaERiR0Z6CmN5QkJLU
0JVWVc1MWMybDBkbUZ1ZVd0cFlXUnZNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tD
QVFFQXZIU00KRDd0TTlEY2VxUVdDMk9iaGJIRHFlTFZ1MFRoRURhaUR6bDNTMXRXQnhkUkw1MXVVY0NiYk8
1MXFUR0wzY2ZOazFtRTdQZXR6b3pmWgp6K3FNa2p2Tjl3ZmNablNYOUVVaTNmUmM0TDl0ODc1bE0rUVZPci
9ibUpCVk9NVHRwbFZqQzdCNEJQVGpic0UvanZ4UmVCK1Nub1BDCi90bXdxY204V2dEL3FhaVlkUHYyTEQ0V
k9RMjJCRldvRHBnZ1FyT3hKYTErbW05ZFU3R3JEUHpyNFBONnM2aXovMGIyWTZMWU9waDcKdHF5Ri83QWxU
M1JqNXhNSHBRcVBCZmZBWkc5K3B5ZUFsdDdVTG9aZ3gyc3JYbk43RitlUlAyUU0yRXNpTkN1Yk12SklINSt
oQ29SNgo0c0t0bHoyTzFjSDVWcU5RNmNhMCtwaWk3cFhtS2dPTTN3SURBUUFCbzRJQ256Q0NBcHN3RGdZRF
ZSMFBBUUgvQkFRREFnQUdNQklHCkExVWRFd0VCL3dRSU1BWUJBZjhDQVFRd0VRWUpZSVpJQVliNFFnRUJCQ
VFEQWdBSE1JSUNZQVlKWUlaSUFZYjRRZ0VOQklJQ1VSYUMKQWsxR1NVZFpSVXhGVFNFZ1JYcGxiaUIwWVc1
MWMybDBkbUZ1ZVNCaElFNWxkRXh2WTJzZ1MyWjBMaUJCYkhSaGJHRnViM01nVTNwdgpiR2RoYkhSaGRHRnp
hU0JHWld4MFpYUmxiR1ZwWW1WdUlHeGxhWEowSUdWc2FtRnlZWE52YXlCaGJHRndhbUZ1SUd0bGMzcDFiSF
F1CklFRWdhR2wwWld4bGMybDBaWE1nWm05c2VXRnRZWFJoZENCaElFNWxkRXh2WTJzZ1MyWjBMaUIwWlhKd
FpXdG1aV3hsYkc5emMyVm4KTFdKcGVuUnZjMmwwWVhOaElIWmxaR2t1SUVFZ1pHbG5hWFJoYkdseklHRnNZ
V2x5WVhNZ1pXeG1iMmRoWkdGellXNWhheUJtWld4MApaWFJsYkdVZ1lYb2daV3h2YVhKMElHVnNiR1Z1YjN
KNlpYTnBJR1ZzYW1GeVlYTWdiV1ZuZEdWMFpXeGxMaUJCZWlCbGJHcGhjbUZ6CklHeGxhWEpoYzJFZ2JXVm
5kR0ZzWVd4b1lYUnZJR0VnVG1WMFRHOWpheUJMWm5RdUlFbHVkR1Z5Ym1WMElHaHZibXhoY0dwaGJpQmgKS
UdoMGRIQnpPaTh2ZDNkM0xtNWxkR3h2WTJzdWJtVjBMMlJ2WTNNZ1kybHRaVzRnZG1GbmVTQnJaWEpvWlhS
dklHRjZJR1ZzYkdWdQpiM0o2WlhOQWJtVjBiRzlqYXk1dVpYUWdaUzF0WVdsc0lHTnBiV1Z1TGlCSlRWQlB
VbFJCVGxRaElGUm9aU0JwYzNOMVlXNWpaU0JoCmJtUWdkR2hsSUhWelpTQnZaaUIwYUdseklHTmxjblJwWm
1sallYUmxJR2x6SUhOMVltcGxZM1FnZEc4Z2RHaGxJRTVsZEV4dlkyc2cKUTFCVElHRjJZV2xzWVdKc1pTQ
mhkQ0JvZEhSd2N6b3ZMM2QzZHk1dVpYUnNiMk5yTG01bGRDOWtiMk56SUc5eUlHSjVJR1V0YldGcApiQ0Jo
ZENCamNITkFibVYwYkc5amF5NXVaWFF1TUEwR0NTcUdTSWIzRFFFQkJBVUFBNElCQVFCSUpFYjN1bFp2K3N
nb0EwQk81VEU1CmF5WnJVMy9iMzkvemNUMG13QlFPeG1kN0k2Z01jOTBCdThiS2JqYzVWZFhIakZZZ0RpZ0
tEdElxcExCSlVzWTRCLzYrQ2dtTTBaalAKeXRvVU1hRlAwam44RHhFc1E4UGRxNVBIVlQ1SGZCZ2FBTnp6Z
TlqeWYxSnNJUFFMWDJsUzlPNzRzaWxnNitOSk1TRU4xclVRUWVKQgpDV3ppR3BwV1MzY0M5cUNibWllSDZG
VXBjY0tRbjBWNEd1RVZaRDNRRHRpZ2RwK3V4ZEF1NnRZUFZ1eGtmMXFiRkZnQkozNFRVTWRyCkt1Wm9QTDl
jb0FvYjRRNTY2ZUtBdytucDl2MXNFWjdRNVNnbksxUXlRaFNDZGVaSzhDdG1kV09Nb3ZzRVBvTU9temJ3R0
9RbUlNT00KOENnSHJUd1hab2kxL2JhSQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpOZXRMb2NrIEJ1c
2luZXNzIChDbGFzcyBCKSBSb290Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJ
TiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZTekNDQkxTZ0F3SUJBZ0lCYVRBTkJna3Foa2lHOXcwQkFRUUZBREN
CbVRFTE1Ba0dBMVVFQmhNQ1NGVXhFVEFQQmdOVkJBY1QKQ0VKMVpHRndaWE4wTVNjd0pRWURWUVFLRXg1T1
pYUk1iMk5ySUVoaGJHOTZZWFJpYVhwMGIyNXpZV2RwSUV0bWRDNHhHakFZQmdOVgpCQXNURVZSaGJuVnphW
FIyWVc1NWEybGhaRzlyTVRJd01BWURWUVFERXlsT1pYUk1iMk5ySUZWNmJHVjBhU0FvUTJ4aGMzTWdRaWtn
ClZHRnVkWE5wZEhaaGJubHJhV0ZrYnpBZUZ3MDVPVEF5TWpVeE5ERXdNakphRncweE9UQXlNakF4TkRFd01
qSmFNSUdaTVFzd0NRWUQKVlFRR0V3SklWVEVSTUE4R0ExVUVCeE1JUW5Wa1lYQmxjM1F4SnpBbEJnTlZCQW
9USGs1bGRFeHZZMnNnU0dGc2IzcGhkR0pwZW5Sdgpibk5oWjJrZ1MyWjBMakVhTUJnR0ExVUVDeE1SVkdGd
WRYTnBkSFpoYm5scmFXRmtiMnN4TWpBd0JnTlZCQU1US1U1bGRFeHZZMnNnClZYcHNaWFJwSUNoRGJHRnpj
eUJDS1NCVVlXNTFjMmwwZG1GdWVXdHBZV1J2TUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0IKaVF
LQmdRQ3g2Z1RzSUtBandvODRZTS9IUnJQVkcvNzd1Wm1lQk53Y2Y0eEtnWmp1cE5US2loZTVJbitEQ25WTW
04QnAyR1E1bysyUwpvLzFiWEhRYXdFZktPbWwybXJyaVJCZjhUS1BWL3JpWGlLK0lBNGtmcFBJRVBzZ0hDK
2I1c3k5NlloUUpSaFRLWlBXTGdMVmlxTmhyCjFuR1RMYk8vQ1ZSWTdRYnJxSHZjUTdHaGFRSURBUUFCbzRJ
Q256Q0NBcHN3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQkRBT0JnTlYKSFE4QkFmOEVCQU1DQUFZd0VRWUp
ZSVpJQVliNFFnRUJCQVFEQWdBSE1JSUNZQVlKWUlaSUFZYjRRZ0VOQklJQ1VSYUNBazFHU1VkWgpSVXhGVF
NFZ1JYcGxiaUIwWVc1MWMybDBkbUZ1ZVNCaElFNWxkRXh2WTJzZ1MyWjBMaUJCYkhSaGJHRnViM01nVTNwd
mJHZGhiSFJoCmRHRnphU0JHWld4MFpYUmxiR1ZwWW1WdUlHeGxhWEowSUdWc2FtRnlZWE52YXlCaGJHRndh
bUZ1SUd0bGMzcDFiSFF1SUVFZ2FHbDAKWld4bGMybDBaWE1nWm05c2VXRnRZWFJoZENCaElFNWxkRXh2WTJ
zZ1MyWjBMaUIwWlhKdFpXdG1aV3hsYkc5emMyVm5MV0pwZW5SdgpjMmwwWVhOaElIWmxaR2t1SUVFZ1pHbG
5hWFJoYkdseklHRnNZV2x5WVhNZ1pXeG1iMmRoWkdGellXNWhheUJtWld4MFpYUmxiR1VnCllYb2daV3h2Y
VhKMElHVnNiR1Z1YjNKNlpYTnBJR1ZzYW1GeVlYTWdiV1ZuZEdWMFpXeGxMaUJCZWlCbGJHcGhjbUZ6SUd4
bGFYSmgKYzJFZ2JXVm5kR0ZzWVd4b1lYUnZJR0VnVG1WMFRHOWpheUJMWm5RdUlFbHVkR1Z5Ym1WMElHaHZ
ibXhoY0dwaGJpQmhJR2gwZEhCegpPaTh2ZDNkM0xtNWxkR3h2WTJzdWJtVjBMMlJ2WTNNZ1kybHRaVzRnZG
1GbmVTQnJaWEpvWlhSdklHRjZJR1ZzYkdWdWIzSjZaWE5BCmJtVjBiRzlqYXk1dVpYUWdaUzF0WVdsc0lHT
nBiV1Z1TGlCSlRWQlBVbFJCVGxRaElGUm9aU0JwYzNOMVlXNWpaU0JoYm1RZ2RHaGwKSUhWelpTQnZaaUIw
YUdseklHTmxjblJwWm1sallYUmxJR2x6SUhOMVltcGxZM1FnZEc4Z2RHaGxJRTVsZEV4dlkyc2dRMUJUSUd
GMgpZV2xzWVdKc1pTQmhkQ0JvZEhSd2N6b3ZMM2QzZHk1dVpYUnNiMk5yTG01bGRDOWtiMk56SUc5eUlHSj
VJR1V0YldGcGJDQmhkQ0JqCmNITkFibVYwYkc5amF5NXVaWFF1TUEwR0NTcUdTSWIzRFFFQkJBVUFBNEdCQ
UFUYnJvd1hyL2dPa0RGT3pUNEp3RzA2c1BnelRFZE0KNDNXSUVKZXNzRGdWa2NZcGxzd2h3RzA4cFhUUDJJ
S2xPY05sNDBKd3V5S1E0MzNiTlhiaG9MWGFuM0J1a3hvd09SMHcyeTdqZkxLUgpzdEUzS2ZxNTFoZGNSMC9
qSFRqcm45VjdsYWdvbmhWSzBkSFFLd0NYb09LU05pdGpyRmdCYXpNcFVJYUQ4UUZJCi0tLS0tRU5EIENFUl
RJRklDQVRFLS0tLS0KCk5ldExvY2sgRXhwcmVzcyAoQ2xhc3MgQykgUm9vdAo9PT09PT09PT09PT09PT09P
T09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZUekNDQkxpZ0F3SUJBZ0lC
YURBTkJna3Foa2lHOXcwQkFRUUZBRENCbXpFTE1Ba0dBMVVFQmhNQ1NGVXhFVEFQQmdOVkJBY1QKQ0VKMVp
HRndaWE4wTVNjd0pRWURWUVFLRXg1T1pYUk1iMk5ySUVoaGJHOTZZWFJpYVhwMGIyNXpZV2RwSUV0bWRDNH
hHakFZQmdOVgpCQXNURVZSaGJuVnphWFIyWVc1NWEybGhaRzlyTVRRd01nWURWUVFERXl0T1pYUk1iMk5yS
UVWNGNISmxjM042SUNoRGJHRnpjeUJECktTQlVZVzUxYzJsMGRtRnVlV3RwWVdSdk1CNFhEVGs1TURJeU5U
RTBNRGd4TVZvWERURTVNREl5TURFME1EZ3hNVm93Z1pzeEN6QUoKQmdOVkJBWVRBa2hWTVJFd0R3WURWUVF
IRXdoQ2RXUmhjR1Z6ZERFbk1DVUdBMVVFQ2hNZVRtVjBURzlqYXlCSVlXeHZlbUYwWW1sNgpkRzl1YzJGbm
FTQkxablF1TVJvd0dBWURWUVFMRXhGVVlXNTFjMmwwZG1GdWVXdHBZV1J2YXpFME1ESUdBMVVFQXhNclRtV
jBURzlqCmF5QkZlSEJ5WlhOemVpQW9RMnhoYzNNZ1F5a2dWR0Z1ZFhOcGRIWmhibmxyYVdGa2J6Q0JuekFO
QmdrcWhraUc5dzBCQVFFRkFBT0IKalFBd2dZa0NnWUVBNit5d2JHR0tJeVd2WUNEajJaLzhrd3ZiWFkyd29
iTkFPb0xPL1hYZ2VESURobHFHbFpIdFUvcWRRUHptNk4zWgpXM29EdlYzek93ekRVWG1iclZXZzZkQURFSz
hLdWhSQzJWSW1FU0xIMGlETWdxU2FxZjY0Z1hhZGFyZlNOblUrc1lZSjltNXRmazYzCmV1eXVjWVQyQkRNS
UpUTHJkS3dXUk1ia1FKTWRmNjBDQXdFQUFhT0NBcDh3Z2dLYk1CSUdBMVVkRXdFQi93UUlNQVlCQWY4Q0FR
UXcKRGdZRFZSMFBBUUgvQkFRREFnQUdNQkVHQ1dDR1NBR0crRUlCQVFRRUF3SUFCekNDQW1BR0NXQ0dTQUd
HK0VJQkRRU0NBbEVXZ2dKTgpSa2xIV1VWTVJVMGhJRVY2Wlc0Z2RHRnVkWE5wZEhaaGJua2dZU0JPWlhSTW
IyTnJJRXRtZEM0Z1FXeDBZV3hoYm05eklGTjZiMnhuCllXeDBZWFJoYzJrZ1JtVnNkR1YwWld4bGFXSmxia
UJzWldseWRDQmxiR3BoY21GemIyc2dZV3hoY0dwaGJpQnJaWE42ZFd4MExpQkIKSUdocGRHVnNaWE5wZEdW
eklHWnZiSGxoYldGMFlYUWdZU0JPWlhSTWIyTnJJRXRtZEM0Z2RHVnliV1ZyWm1Wc1pXeHZjM05sWnkxaQp
hWHAwYjNOcGRHRnpZU0IyWldScExpQkJJR1JwWjJsMFlXeHBjeUJoYkdGcGNtRnpJR1ZzWm05bllXUmhjMk
Z1WVdzZ1ptVnNkR1YwClpXeGxJR0Y2SUdWc2IybHlkQ0JsYkd4bGJtOXllbVZ6YVNCbGJHcGhjbUZ6SUcxb
FozUmxkR1ZzWlM0Z1FYb2daV3hxWVhKaGN5QnMKWldseVlYTmhJRzFsWjNSaGJHRnNhR0YwYnlCaElFNWxk
RXh2WTJzZ1MyWjBMaUJKYm5SbGNtNWxkQ0JvYjI1c1lYQnFZVzRnWVNCbwpkSFJ3Y3pvdkwzZDNkeTV1Wlh
Sc2IyTnJMbTVsZEM5a2IyTnpJR05wYldWdUlIWmhaM2tnYTJWeWFHVjBieUJoZWlCbGJHeGxibTl5CmVtVn
pRRzVsZEd4dlkyc3VibVYwSUdVdGJXRnBiQ0JqYVcxbGJpNGdTVTFRVDFKVVFVNVVJU0JVYUdVZ2FYTnpkV
0Z1WTJVZ1lXNWsKSUhSb1pTQjFjMlVnYjJZZ2RHaHBjeUJqWlhKMGFXWnBZMkYwWlNCcGN5QnpkV0pxWldO
MElIUnZJSFJvWlNCT1pYUk1iMk5ySUVOUQpVeUJoZG1GcGJHRmliR1VnWVhRZ2FIUjBjSE02THk5M2QzY3V
ibVYwYkc5amF5NXVaWFF2Wkc5amN5QnZjaUJpZVNCbExXMWhhV3dnCllYUWdZM0J6UUc1bGRHeHZZMnN1Ym
1WMExqQU5CZ2txaGtpRzl3MEJBUVFGQUFPQmdRQVFyWC9YRERLQUN0aUc4WG1ZdGEzVXpiTTIKeEpaSXdWe
k5tdGtGTHArK1VPdjBKaFFRTGRSbUYvaWV3U2Y5OGUza2UwdWdiTFdybWxkd3B1MmdwTzB1OWYzOHZmNU5O
d2dNdk9PVwpneUwxU1J0L1N5dTBWTUdBZkpsT0hkQ003dENzNVpMNmRWYitaS0FUajdpNEZwMWhCV2VBeU5
EWXBRY0NOSmdFalRNRTFBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKWFJhbXAgR2xvYmFsIENBIF
Jvb3QKPT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVNRENDQ
XhpZ0F3SUJBZ0lRVUpSczdCanExWnhOMVpmdmRZK2dyVEFOQmdrcWhraUc5dzBCQVFVRkFEQ0JnakVMTUFr
R0ExVUUKQmhNQ1ZWTXhIakFjQmdOVkJBc1RGWGQzZHk1NGNtRnRjSE5sWTNWeWFYUjVMbU52YlRFa01DSUd
BMVVFQ2hNYldGSmhiWEFnVTJWagpkWEpwZEhrZ1UyVnlkbWxqWlhNZ1NXNWpNUzB3S3dZRFZRUURFeVJZVW
1GdGNDQkhiRzlpWVd3Z1EyVnlkR2xtYVdOaGRHb
HZiaUJCCmRYUm9iM0pwZEhrd0hoY05NRFF4TVRBeE1UY3hOREEwV2hjTk16VXdNVEF4TURVek56RTVXakNC
Z2pFTE1Ba0dBMVVFQmhNQ1ZWTXgKSGpBY0JnTlZCQXNURlhkM2R5NTRjbUZ0Y0hObFkzVnlhWFI1TG1OdmJ
URWtNQ0lHQTFVRUNoTWJXRkpoYlhBZ1UyVmpkWEpwZEhrZwpVMlZ5ZG1salpYTWdTVzVqTVMwd0t3WURWUV
FERXlSWVVtRnRjQ0JIYkc5aVlXd2dRMlZ5ZEdsbWFXTmhkR2x2YmlCQmRYUm9iM0pwCmRIa3dnZ0VpTUEwR
0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUtBb0lCQVFDWUpCNjlGYlM2MzhlTXBTZTJPQXRwODdaT3FD
d3UKSVIxY1JOOGhYWDRqZFA1ZWZyUkt0NmF0SDY3Z0JoYmltMXZaWjNSclhZQ1BLWjJHRzltY0RaaHRkaEF
vV09SbHNIOUttSG1mNE1NeApmb0FydFl6QVFEc1JodERMb29ZMllLVFZNSUp0Mlc3UUR4SUVNNWRmVDJGYT
hPVDVrYXZuSFR1ODZNLzBheTAwZk9KSVlSeU84MkZFCnpHK2dTcW1Vc0UzYTU2azBlbkk0cUVITVBKUVJmZ
XZJcG95M2hzdktNenZaUFRlTCszbytoaXpuYzljS1Y2eGtteG5yOUE4RUNJcXMKQXhjWlpQUmFKU0tOTkN5
eTltZ2RFbTNUaWg0VTJzU1BwdUlqaGRWNkRiMXE0T25zN0JlN1FodG5xaVh0UllNaC9NSEpmTlZpUHZyeQp
4UzNUL2RSbEFnTUJBQUdqZ1o4d2dad3dFd1lKS3dZQkJBR0NOeFFDQkFZZUJBQkRBRUV3Q3dZRFZSMFBCQV
FEQWdHR01BOEdBMVVkCkV3RUIvd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUVGTVpQb2owR1k0UUpuTTVpNUFTc
2pWeTE2YlliTURZR0ExVWRId1F2TUMwd0s2QXAKb0NlR0pXaDBkSEE2THk5amNtd3VlSEpoYlhCelpXTjFj
bWwwZVM1amIyMHZXRWREUVM1amNtd3dFQVlKS3dZQkJBR0NOeFVCQkFNQwpBUUV3RFFZSktvWklodmNOQVF
FRkJRQURnZ0VCQUpFVk9RTUJHMmY3U2h6NUNtQmJvZHBObDJMNUpGTW4xNEprVHBBdXcwa2JLNXJjCi9LaD
Raelh4SGZBUnZiZEk0eEQyRGQ4LzBzbTJxbFdrU0xvQzI5NVpMaFZiTzUwV2ZVZlhOK3BmVFhZU05yc2YxN
kdCQkVZZ295eHQKcVo0QmZqOHB6Z0NUMy8zSmtuT0ppV1NlNXl2a0hKRXMwcm5PZmM1dk1ablQ1cjdTSHBE
d0NSUjVYQ09yVGRMYUlSOU5tWG1kNGM4bgpueENiSElnTnNJcGtRVEc0RG15UUpLU2JYSEdQdXJ0K0hCdmJ
hb0FQSWJ6cDI2YTNRUFN5aTZteDVPK2FHdEE5YVpudXFDaWo0VHl6CjhMSVJuTTk4UU9iZDUwTjlvdGc2dG
FtTjhqU1p4TlFRNFFiOUNZUVFPKzdFVFBUc0ozeEN3blI4Z29vSnliUURKYnc9Ci0tLS0tRU5EIENFUlRJR
klDQVRFLS0tLS0KCkdvIERhZGR5IENsYXNzIDIgQ0EKPT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lO
IENFUlRJRklDQVRFLS0tLS0KTUlJRUFEQ0NBdWlnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQmp
NUXN3Q1FZRFZRUUdFd0pWVXpFaE1COEdBMVVFQ2hNWQpWR2hsSUVkdklFUmhaR1I1SUVkeWIzVndMQ0JKYm
1NdU1URXdMd1lEVlFRTEV5aEhieUJFWVdSa2VTQkRiR0Z6Y3lBeUlFTmxjblJwClptbGpZWFJwYjI0Z1FYV
jBhRzl5YVhSNU1CNFhEVEEwTURZeU9URTNNRFl5TUZvWERUTTBNRFl5T1RFM01EWXlNRm93WXpFTE1Ba0cK
QTFVRUJoTUNWVk14SVRBZkJnTlZCQW9UR0ZSb1pTQkhieUJFWVdSa2VTQkhjbTkxY0N3Z1NXNWpMakV4TUM
4R0ExVUVDeE1vUjI4ZwpSR0ZrWkhrZ1EyeGhjM01nTWlCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbD
BlVENDQVNBd0RRWUpLb1pJaHZjTkFRRUJCUUFECmdnRU5BRENDQVFnQ2dnRUJBTjZkMStwWEdFbWhXK3ZYW
DBpRzZyN2QvK1R2Wnh6MFpXaXpWM0dnWG5lNzdadEo2WENBUFZZWVl3aHYKMnZMTTBEOS9BbFFpVkJEWXNv
SFV3SFU5UzMvSGQ4TStlS3NhQTdVZ2F5OXFLN0hGaUg3RXV4Nnd3ZGhGSjIrcU4xajNoeWJYMkMzMgpxUmU
zSDNJMlRxWVhQMldZa3RzcWJsMmkvb2pnQzk1LzVZMFY0ZXZMT3RYaUVxSVRMZGlPcjE4U1BhQUlCUWkyWE
tWbE9BUkZtUjZqCllHQjB4VUdsY21JYllzVWZiMThhUXI0Q1VXV29yaU1ZYXZ4NEE2bE5mNEREK3F0YS9LR
kFwTW9aRnY2eXlPOWVjdzN1ZDcyYTlubVkKdkxFSFo2SVZEZDJnV01aRWV3bytZaWhmdWtFSFUxalBFWDQ0
ZE1YNC83VnBrSStFZE9xWEc2OENBUU9qZ2NBd2diMHdIUVlEVlIwTwpCQllFRk5MRXNOS1IxRXdSY2JOaHl
6MmgvdDJvYXRUak1JR05CZ05WSFNNRWdZVXdnWUtBRk5MRXNOS1IxRXdSY2JOaHl6MmgvdDJvCmF0VGpvV2
VrWlRCak1Rc3dDUVlEVlFRR0V3SlZVekVoTUI4R0ExVUVDaE1ZVkdobElFZHZJRVJoWkdSNUlFZHliM1Z3T
ENCSmJtTXUKTVRFd0x3WURWUVFMRXloSGJ5QkVZV1JrZVNCRGJHRnpjeUF5SUVObGNuUnBabWxqWVhScGIy
NGdRWFYwYUc5eWFYUjVnZ0VBTUF3RwpBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0V
CQURKTDg3TEtQcEg4RXNhaEI0eU9kNkF6QmhSY2tCNFk5d2ltClBRb1orWWVBRVc1cDVKWVhNUDgwa1dOeU
9PN01IQUdqSFpRb3BESDJlc1JVMS9ibE1WZ0Rvc3pPWXR1VVJYTzF2MFhKSkxYVmdnS3QKSTNscGpiaTJUY
zdQVE1vekkrZ2NpS3FkaTBGdUZza2c1WW1lelR2YWNQZCttU1lnRkZRbHEyNXpoZWFiSVowS2JJSU9xUGpD
RFBvUQpIbXlXNzRjTnhBOWhpNjN1Z3l1VitJNlNoSEk1NnlEcWcrMkR6WmR1Q0x6clRpYTJjeXZrMC9aTS9
pWng0bUVSZEVyL1Z4cUhEM1ZJCkxzOVJhUmVnQWhKaGxkWFJRTElRVE83RXJCQkRwcVdlQ3RXVllwb056NG
lDeFRJTTVDdWZSZVlObnlpY3Nia3FXbGV0TncrdkhYL2IKdlo4PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tL
S0tCgpTdGFyZmllbGQgQ2xhc3MgMiBDQQo9PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJ
RklDQVRFLS0tLS0KTUlJRUR6Q0NBdmVnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFVRkFEQm9NUXN3Q1F
ZRFZRUUdFd0pWVXpFbE1DTUdBMVVFQ2hNYwpVM1JoY21acFpXeGtJRlJsWTJodWIyeHZaMmxsY3l3Z1NXNW
pMakV5TURBR0ExVUVDeE1wVTNSaGNtWnBaV3hrSUVOc1lYTnpJRElnClEyVnlkR2xtYVdOaGRHbHZiaUJCZ
FhSb2IzSnBkSGt3SGhjTk1EUXdOakk1TVRjek9URTJXaGNOTXpRd05qSTVNVGN6T1RFMldqQm8KTVFzd0NR
WURWUVFHRXdKVlV6RWxNQ01HQTFVRUNoTWNVM1JoY21acFpXeGtJRlJsWTJodWIyeHZaMmxsY3l3Z1NXNWp
MakV5TURBRwpBMVVFQ3hNcFUzUmhjbVpwWld4a0lFTnNZWE56SURJZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZF
hSb2IzSnBkSGt3Z2dFZ01BMEdDU3FHClNJYjNEUUVCQVFVQUE0SUJEUUF3Z2dFSUFvSUJBUUMzTXNqKzZYR
21CSVd0REJGazM4NU43OGdER0ljL29hdjdQS2FmOE1PaDJ0VFkKYml0VGtQc2twRDZFOEo3b1gremxKMFQx
S0tZL2U5N2dLdkRJcjFNdm5zb0ZBWk1lajJZY09hZE4rbHEyY3dRbFp1dDNmK2RaeGtxWgpKUlJVNnliSDg
zOFoxVEJ3ajYrd1Jpci9yZXNwN2RlZnFnU0hvOVQ1aWFVMFg5dERrWUkyMldZOHNiaTVndjJjT2o0UXlEdn
ZCbVZtCmVwc1pHRDMvY1ZFOE1DNWZ2ajEzYzdKZEJtekRJMWFhSzRVbWtoeW5BclBrUHcydkNIbUN1RFk5N
nB6VE5iTzhhY3Ixekozby9XU04KRjRBemJsNUtYWm5KSG9lMG5SckExVzRUTlNOZTM1dGZQZS9XOTNiQzZq
NjdlQTBjUW1kckJOajQxdHB2aS9KRW9BR3JBZ0VEbzRIRgpNSUhDTUIwR0ExVWREZ1FXQkJTL1g3ZlJ6dDB
maHZSYlZhemMxeERDRHFtSTV6Q0JrZ1lEVlIwakJJR0tNSUdIZ0JTL1g3ZlJ6dDBmCmh2UmJWYXpjMXhEQ0
RxbUk1NkZzcEdvd2FERUxNQWtHQTFVRUJoTUNWVk14SlRBakJnTlZCQW9USEZOMFlYSm1hV1ZzWkNCVVpXT
m8KYm05c2IyZHBaWE1zSUVsdVl5NHhNakF3QmdOVkJBc1RLVk4wWVhKbWFXVnNaQ0JEYkdGemN5QXlJRU5s
Y25ScFptbGpZWFJwYjI0ZwpRWFYwYUc5eWFYUjVnZ0VBTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh
2Y05BUUVGQlFBRGdnRUJBQVdkUDRpZDBja2FWYUdzCmFmUHpXZHFiQVljYVQxZXBvWGtKS3R2M0w3SWV6TW
RlYXRpRGg2R1g3MGsxUG5jR1FWaGl2NDVZdUFwblAreXozU0ZtSDhsVStuTE0KUFV4QTJJR3ZkNTZEZXJ1a
XgvVTBGNDdaRVVEMC9Dd3FUUlYvcDJKZExpWFRBQXNnR2gxbytSZTQ5TDJMN1NoWjNVMFdpeGVEeUxKbAp4
eTE2cGFxOFU0WnQzVmVreXZnZ1FRdG84UFQ3ZEw1V1hYcDU5ZmtkaGVNdGxiNzFjWkJEekkwZm1nQUtoeW5
wVlNKWUFDUHE0eEpECktWdEhDTjJNUVdwbEJxamxJYXBCdEpVaGxibDkwVFNyRTlhdHZOemlQVG5OdlQ1MW
NLRVlXUVBKSXJTUG5OVmVLdGVsdHRRS2JmaTMKUUJGR21oOTVEbUsvRDVmczRDOGZGNVE9Ci0tLS0tRU5EI
ENFUlRJRklDQVRFLS0tLS0KClN0YXJ0Q29tIENlcnRpZmljYXRpb24gQXV0aG9yaXR5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlIeVRDQ0JiR2d
Bd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCOU1Rc3dDUVlEVlFRR0V3SkpUREVXTUJRR0ExVUVDaE
1OClUzUmhjblJEYjIwZ1RIUmtMakVyTUNrR0ExVUVDeE1pVTJWamRYSmxJRVJwWjJsMFlXd2dRMlZ5ZEdsb
WFXTmhkR1VnVTJsbmJtbHUKWnpFcE1DY0dBMVVFQXhNZ1UzUmhjblJEYjIwZ1EyVnlkR2xtYVdOaGRHbHZi
aUJCZFhSb2IzSnBkSGt3SGhjTk1EWXdPVEUzTVRrMApOak0yV2hjTk16WXdPVEUzTVRrME5qTTJXakI5TVF
zd0NRWURWUVFHRXdKSlRERVdNQlFHQTFVRUNoTU5VM1JoY25SRGIyMGdUSFJrCkxqRXJNQ2tHQTFVRUN4TW
lVMlZqZFhKbElFUnBaMmwwWVd3Z1EyVnlkR2xtYVdOaGRHVWdVMmxuYm1sdVp6RXBNQ2NHQTFVRUF4TWcKV
TNSaGNuUkRiMjBnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3dnZ0lpTUEwR0NTcUdTSWIzRFFF
QkFRVUFBNElDRHdBdwpnZ0lLQW9JQ0FRREJpTnNKdkd4R2ZIaWZsWHUxTTVEeWNtTFd3VFlnSWlSZXp1bDM
4a01Lb2daa3BNeU9Odmc0NWlQd2JtMnhQTjF5Cm80VWNvZE05dERNcjB5K3YvdXF3UVZsbnRzUUdmUXFlZE
lYV2VVeUFOM3JmT1FWU1dmZjBHMFpEcE5LRmhkTERjZk4xWWpTNkxJcC8KSG8vdTdUVFFFY2VXelZJOXVqU
FczVTNlQ3p0S1M1L0NKaS82dFJZY2NqVjN5anhkNXNyaEpvc2FOblpjQWR0MEZDWCs3YldnaUEvZAplTW90
SHdlWE1BRXRjbm42UnRZVEtxaTVwcXVEU1IzbDh1L2Q1QUdPR0FxUFkxTVdoV0twRGhrNnpMVm1wc0pyZEF
ma0srRjJQclJ0CjJQWkU0WE5pSHp2RXZxQlRWaVZzVVFuM3Fxdkt2M2I5Ylp2em5kdS9QV2E4REZhcXI1aE
lsVHBMMzZkWVVOazRkYWxiNmtNTUF2K1oKNitoc1RYQmJLV1djM2FwZHpLOEJNZXdNNjlLTjZPcWNlK1p1O
XlkbURCcEkxMjVDNHovZUlUNTc0UTF3KzJPcXFHd2FWTFJjSlhySgpvc21MRnFhN0xINFhYZ1ZOV0c0U0hR
SHVFaEFOeGpKL0dQLzg5UHJOYnBIb05rbStHa2hwaThLV1RSb1NzbWtYd1FxUTF2cDVJa2kvCnVudHArSER
IK25vMzJOZ04wblpQVi8rUXQrT1IwdDN2d21DM1p6cmQvcXFjOE5TTGYzSWl6c2FmbDdiNHI0cWdFS2paK3
hqR3RyVmMKVWp5SnRoa3Fjd0VLRHdPekVtRHllaStCMjZOdS95WXdsL1dMM1lsWHRxMDlzNjhyeGJkMkF2Q
2wxaXVhaGhRcWN2YmpNNHhkQ1VzVAozN3VNZEJOU1N3SURBUUFCbzRJQ1VqQ0NBazR3REFZRFZSMFRCQVV3
QXdFQi96QUxCZ05WSFE4RUJBTUNBYTR3SFFZRFZSME9CQllFCkZFNEw3eHFrUUZ1bEYybUhNTW8wYUVQUVF
hN3lNR1FHQTFVZEh3UmRNRnN3TEtBcW9DaUdKbWgwZEhBNkx5OWpaWEowTG5OMFlYSjAKWTI5dExtOXlaeT
l6Wm5OallTMWpjbXd1WTNKc01DdWdLYUFuaGlWb2RIUndPaTh2WTNKc0xuTjBZWEowWTI5dExtOXlaeTl6W
m5OagpZUzFqY213dVkzSnNNSUlCWFFZRFZSMGdCSUlCVkRDQ0FWQXdnZ0ZNQmdzckJnRUVBWUcxTndFQkFU
Q0NBVHN3THdZSUt3WUJCUVVICkFnRVdJMmgwZEhBNkx5OWpaWEowTG5OMFlYSjBZMjl0TG05eVp5OXdiMnh
wWTNrdWNHUm1NRFVHQ0NzR0FRVUZCd0lCRmlsb2RIUncKT2k4dlkyVnlkQzV6ZEdGeWRHTnZiUzV2Y21jdm
FXNTBaWEp0WldScFlYUmxMbkJrWmpDQjBBWUlLd1lCQlFVSEFnSXdnY013SnhZZwpVM1JoY25RZ1EyOXRiV
1Z5WTJsaGJDQW9VM1JoY25SRGIyMHBJRXgwWkM0d0F3SUJBUnFCbDB4cGJXbDBaV1FnVEdsaFltbHNhWFI1
CkxDQnlaV0ZrSUhSb1pTQnpaV04wYVc5dUlDcE1aV2RoYkNCTWFXMXBkR0YwYVc5dWN5b2diMllnZEdobEl
GTjBZWEowUTI5dElFTmwKY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNUlGQnZiR2xqZVNCaGRtRnBiR0
ZpYkdVZ1lYUWdhSFIwY0RvdkwyTmxjblF1YzNSaApjblJqYjIwdWIzSm5MM0J2YkdsamVTNXdaR1l3RVFZS
llJWklBWWI0UWdFQkJBUURBZ0FITURnR0NXQ0dTQUdHK0VJQkRRUXJGaWxUCmRHRnlkRU52YlNCR2NtVmxJ
Rk5UVENCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVEFOQmdrcWhraUc5dzBCQVFVRkFBT0MKQWd
FQUZteVo5R1lNTlBYUWhWNTlDdXphRUU0NEhGN2ZwaVVGUzVFeXdlZzc4VDNkUkFsYkIwbUtLY3RtQXJleG
12Y2xtQWs4amh2aAozVGFISzB1N2FOTTVaajJnSnNmeU9aRWRVYXVDZTM3Vnpscms0Z05YY0dtWENQbGVXS
1lLMzR3R21rVVdGamdLWGxmMllzZDZBZ1htCnZCNjE4cDcwcVNtRCtMSVU0MjRvaDBURGtCcmVPS2s4ckVO
TlpFWE8zU2lwWFBKemV3VDRGK2lyc2ZNdVhHUnVjekU2RXJpOHN4SGsKZlkrQlVabzdqWW4wVFpObWV6d0Q
3ZE9hSFpyelpWRDFvTkIxbnkrdjhPcUNRNWo0YVp5SmVjUkRqa1p5NDJRMkVxLzNKUjQ0aVpCMwpmc05yYX
JuRHkwUkxySGlRaStmSExCNUxFVVRJTkZJbnpRcGRuNFhCaWRVYWVQS1ZFRk15M1lDRVpuWFp0V2dvKzJFd
XZvU29PTUNaCkVvYWxIbWRrclFZdUw2bHdoY2VXRDN5SlpmV09RMVFPcTkybGdEbVVZTUEweVpad0xLTVM5
UjlJZTcwY2ZtdTNuWkQwSWp1dStQd3EKeXZxQ1VxRHZyMHRWayt2QnRmQWlpNncwVGlZaUJLR0hMSFZLdCt
WOUU5ZTRER1RBTnRMSkw0WVNqQ01Kd1J1Q08zTkpvMnBYaDVUbAoxbmpGbVVOajQwM2dkeTNoWlpseWFRUW
FSd25tRHdGV0pQc2Z2dzU1cVZndXVjUUpBWDZWdW0wQUJqNnk2a29RT2RqUUsvVy83SFcvCmx3TEZDUnNJM
0ZVMzRvSDdONFJEWWlESzUxWkxaZXIrYk1Fa2t5U2hOT3NGLzVvaXJwdDlQL0ZsVVFxbU1HcXo5SWdjZ0Ez
OGNvcm8KZzE0PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpUYWl3YW4gR1JDQQo9PT09PT09PT09PQo
tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRmNqQ0NBMXFnQXdJQkFnSVFINTFaV3RjdndnWkVwWU
FJYWVOZTlqQU5CZ2txaGtpRzl3MEJBUVVGQURBL01Rc3dDUVlEVlFRRwpFd0pVVnpFd01DNEdBMVVFQ2d3b
lIyOTJaWEp1YldWdWRDQlNiMjkwSUVObGNuUnBabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVNQjRYCkRUQXlN
VEl3TlRFek1qTXpNMW9YRFRNeU1USXdOVEV6TWpNek0xb3dQekVMTUFrR0ExVUVCaE1DVkZjeE1EQXVCZ05
WQkFvTUowZHYKZG1WeWJtMWxiblFnVW05dmRDQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVRDQ0
FpSXdEUVlKS29aSWh2Y05BUUVCQlFBRApnZ0lQQURDQ0Fnb0NnZ0lCQUpvbHVPek1vbldvZS9mT1cxbUt5Z
EdHRWdoVTdKenk1MGIyaVBOODZhWGZURWMycEJz
QkhIOGVWNHFOCnc4WFJJZVBhSkQ5SUsvdWZMcUdVNXl3Y2s5Ry9Hd0dIVTVuT3AvVUtJWFozLzZtM3huT1V
UMGIzRUVrMytxaFpTVjFxZ1FkVzhvcjUKQnREM2NDSk50TGRCdVRLNHNmQ3h3NXcvY1AxVDNZR3EyR040OX
RoVGJxR3Nhb1FrY2xTR3h0S3l5aHdPZVlIV3RYQmlDQUV1VGs4TwoxUkd2cWEvbG1yL2N6SWR0SnVUSlY2T
Ddsdm5NNFQ5VGpHeE1mcHRUQ0F0c0YvdG55TUt0c2MyQXRKZmNkZ0VXRmVscTE2VGhlRWZPCmh0WDdNZlA2
TWI0MHFpajdjRXdkU2NldkxKMXRacWEyaldSK3RTQnFuVHVCdG85QUFHZExpWWE0ekdYK0ZWUHBCTUhXWHg
xRTF3b3YKSjVwR2ZhRU5kYTFVaGhYY1NUdnhsczRQbTZEc28zcGR2dFVxZFVMbGU5Nmx0cXF2S0t5c2tLdz
R0OVZvTlNaNjNQYzc4LzFGbTlHNwpRM2h1Yi9GQ1ZHcVk4QTJ0bCtsU1h1blZhbkxlYXZjYllCVDBwZVMyY
1dlcUgrcmlUY0ZDUVA1blJoYzRMMGMvY1p5dTVTSEtZUzF0CkI2aUVmQzN1VVNYeFk1Q2UvZUZYaUd2dmlp
TnRzZWE5UDYzUlBaWUxoWTNOYXllN3R3V2I3THVScVFvSEVnS1hUaUNROFA4Tkh1SkIKTzlOQU91ZU5YZHB
tNUFLd0IxS1lYQTZPTTV6Q3BwWDdWUmx1VEk2dVN3Kzl3VGhOWG8rRUhXYk54V0NXdEZKYUJZbU9sWHFZd1
pFOApsU095RHZSNXRNbDh3VW9oQWdNQkFBR2phakJvTUIwR0ExVWREZ1FXQkJUTXpPL01LV0NrTzdHU3Rqe
jZNbUtQckNVVk96QU1CZ05WCkhSTUVCVEFEQVFIL01Ea0dCR2NxQndBRU1UQXZNQzBDQVFBd0NRWUZLdzRE
QWhvRkFEQUhCZ1ZuS2dNQUFBUVVBNXZ3SWhQL2xTZzIKMDl5ZXdETDdNVHFLVVdVd0RRWUpLb1pJaHZjTkF
RRUZCUUFEZ2dJQkFFQ0FTdm9teWM1ZU1OMVBoblIyV1BXdXM0TXplS1I2ZEJjWgpUdWxTdGJuZ0NuUmlxbW
pLZUtCTW1vNHNJeTdWYWhJa3Y5Um8wNHJRMkp5ZnRCOE0zamgrVnpqOGplSlBYZ3lmcXp2Uy8zV1h5NlRqC
lp3ai81Y0FXdFVnQmZlbjVDdjhiNVdwcHYzZ2hxTUtuSTZtR3EzWlc2QTRNOWhQZEttYUtaRWs5R2hpSGtB
U2ZRbEszVDh2K1IwRjIKTmUvL0FIWTJSVEtieGthRlhlSWtzQjdqU0phWVYwZVVWWG9QUWJGRUpQUEIvaHB
ydjRqOXdhYmFrMkJlZ1VxWklKeElaaG0xQUhsVQpEN2dzTDB1OHFWMWJZSCtNaDZYZ1VtTXF2dGc3aFVBVi
9oNjJaVC9GUzlwK3RYbzFLYU11ZXBoZ0lxUDBmU2RPTGVxMGREenBENlF6CkR4QVJ2Qk1CMXVVTzA3KzFFc
UxoUlNQQXpBaHVZYmVKcTRQakpCN21YUWZuSHlBK3oyZkk1Nnd3YlNkTGFHNUxLbHdDQ0RUYitIYmsKWjZN
bW5EK2lNc0pLeFlFWU1SQldxb1R2TFFyL3VCOTMwcitsV0tCaTVOZExrWFdOaVlDWWZtM0xVMDVlci9heWw
0V1h1ZHBWQnJrawo3dGZHT0I1akd4STdsZUZZclBMZmhOVmZtUzhOVlZ2bU9Oc3VQM0xwU0lYTHV5a1RqeD
Q0VmJuenNzUXdtU05PWGZKSW9SSU0zQktRCkNaQlVrUU04UitYVnlXWGd0MHQ5N0VmVHN3cytyWjdRZEFBT
zY3MVJyY0RlTE1ERGF2N3YzQXVuK2tiZllOdWNwbGxRZFNOcGM1T3kKK2Z3QzAwZm1jYzRRQXU0bmpJVC9y
RVVORTF5RE11QWxwWVlzZlBRUwotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpGaXJtYXByb2Zlc2lvbmF
sIFJvb3QgQ0EKPT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQ
pNSUlFVnpDQ0F6K2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURDQm5URUxNQWtHQTFVRUJoTUNSV
k14SWpBZ0JnTlZCQWNUCkdVTXZJRTExYm5SaGJtVnlJREkwTkNCQ1lYSmpaV3h2Ym1FeFFqQkFCZ05WQkFN
VE9VRjFkRzl5YVdSaFpDQmtaU0JEWlhKMGFXWnAKWTJGamFXOXVJRVpwY20xaGNISnZabVZ6YVc5dVlXd2d
RMGxHSUVFMk1qWXpOREEyT0RFbU1DUUdDU3FHU0liM0RRRUpBUllYWTJGQQpabWx5YldGd2NtOW1aWE5wYj
I1aGJDNWpiMjB3SGhjTk1ERXhNREkwTWpJd01EQXdXaGNOTVRNeE1ESTBNakl3TURBd1dqQ0JuVEVMCk1Ba
0dBMVVFQmhNQ1JWTXhJakFnQmdOVkJBY1RHVU12SUUxMWJuUmhibVZ5SURJME5DQkNZWEpqWld4dmJtRXhR
akJBQmdOVkJBTVQKT1VGMWRHOXlhV1JoWkNCa1pTQkRaWEowYVdacFkyRmphVzl1SUVacGNtMWhjSEp2Wm1
WemFXOXVZV3dnUTBsR0lFRTJNall6TkRBMgpPREVtTUNRR0NTcUdTSWIzRFFFSkFSWVhZMkZBWm1seWJXRn
djbTltWlhOcGIyNWhiQzVqYjIwd2dnRWlNQTBHQ1NxR1NJYjNEUUVCCkFRVUFBNElCRHdBd2dnRUtBb0lCQ
VFEbkl3TnZieU9sWG5qT2xTenRsQjV1Q3A0Qngrb3cwU3lkM1Rmb201aDVWdFA4YzkvUWl0NVYKajFINVd1
cmV0WERFN2FUdC82TU5iZzlrVURHdkFTZFlydjVzcDBvdkZ5M1RjOVVUSEk5WnBUUXNIVlFFUmMxb3VLREF
BNlhQaFVKSApsU2hieisrQWJPQ1FsNG9CUEIzemh4QXdKa2g5MS96cG5aRngvMEdhcVVDMU41d3BJRThmVX
VPZ2ZSTnRWTGNLM3VscVRnZXNyQmxmCjNINWlkUGF5QlFDNmhhRDlIVGh1eTFxN2hyeVVaek0xZ3l3Zkk4M
zR5SkZ4ekplTDc2NFAzQ2tERzhBNTYzRHR3VzRPMkdjTGlhbTgKTmVUdnRqUzBwYmJFTGFXKzBNT1VKRWpi
MzViVEFMVm1Hb3RtQlEvZFB6L0xQNnBlbWtyNHRFcnZsVGNiQWdNQkFBR2pnWjh3Z1p3dwpLZ1lEVlIwUkJ
DTXdJWVlmYUhSMGNEb3ZMM2QzZHk1bWFYSnRZWEJ5YjJabGMybHZibUZzTG1OdmJUQVNCZ05WSFJNQkFmOE
VDREFHCkFRSC9BZ0VCTUNzR0ExVWRFQVFrTUNLQUR6SXdNREV4TURJME1qSXdNREF3V29FUE1qQXhNekV3T
WpReU1qQXdNREJhTUE0R0ExVWQKRHdFQi93UUVBd0lCQmpBZEJnTlZIUTRFRmdRVU13dWdadEhxMnM3ZVlw
TUVLRksxRkg4NGFMY3dEUVlKS29aSWh2Y05BUUVGQlFBRApnZ0VCQUVkei9vMG5WUEQxMUhlY0ozbFhWN2N
WVnV6SDJGaTNBUUwwTSsyVFVJaWVmRWF4dlQ4VWIvR3pSMGlMakpjRzErcCtvMXdxCnUwMHZSK0w0T1FiSm
5DNHhHZ040OUx3NHhpS0xNekh3RmdRRWZmbDI1RXZYd09hRDdGbk1QOTcvVDJ1M1ozNm1ob0V5SXdPZHlQZ
GYKd1VwZ3BaS3BzYVNnWU1ONGg3TWk4eXJyVzZudEJhczNEN0hpMDVWMlkxWjBqRmh5R3pmbFpLRytUUXlU
bUF5WDlvZHRzei9ueTRDbQo3WWpIWDFCaUF1aVpkQmJRNXJRNThTZkx5RURXNDRZUXFTTVNrdUJwUVdPbnJ
5VUx3TVdTeXg2WW8xcTZ4VE1Qb0pjQjNYL2dlOVlHClZNK2g0azA0NjB0UXRjc205TXJhY0VwcW9lSjVxdU
duTS9iOVNoLzIyV0E9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCldlbGxzIEZhcmdvIFJvb3QgQ0EKP
T09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRDVUQ0NBczJnQXdJ
QkFnSUVPZVNYbmpBTkJna3Foa2lHOXcwQkFRVUZBRENCZ2pFTE1Ba0dBMVVFQmhNQ1ZWTXhGREFTQmdOVgp
CQW9UQzFkbGJHeHpJRVpoY21kdk1Td3dLZ1lEVlFRTEV5TlhaV3hzY3lCR1lYSm5ieUJEWlhKMGFXWnBZMk
YwYVc5dUlFRjFkR2h2CmNtbDBlVEV2TUMwR0ExVUVBeE1tVjJWc2JITWdSbUZ5WjI4Z1VtOXZkQ0JEWlhKM
GFXWnBZMkYwWlNCQmRYUm9iM0pwZEhrd0hoY04KTURBeE1ERXhNVFkwTVRJNFdoY05NakV3TVRFME1UWTBN
VEk0V2pDQmdqRUxNQWtHQTFVRUJoTUNWVk14RkRBU0JnTlZCQW9UQzFkbApiR3h6SUVaaGNtZHZNU3d3S2d
ZRFZRUUxFeU5YWld4c2N5QkdZWEpuYnlCRFpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlVEV2Ck1DME
dBMVVFQXhNbVYyVnNiSE1nUm1GeVoyOGdVbTl2ZENCRFpYSjBhV1pwWTJGMFpTQkJkWFJvYjNKcGRIa3dnZ
0VpTUEwR0NTcUcKU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRRFZxRE03SnZrMC84MmJmdVVFUjg0
QTRuMTM1ekhDTGllbFRXaTVNYnFOUTFtWAp4M09xZnoxY1FKNEY1YUhpaWRsTXVEK2IrUXkweUdJWkxFV3V
rUjV6Y1VIRVN4UDljTUlsckNMMWRRdTNVK1NsSzkzT3ZSdzZlc1AzCkU0OG1WSndXYTJ1dis5aVdzV0NhU0
9BbElpUjVOTTRPSmdBTFRxdjlpODZDMXk4SWNHakJxQXI1ZEU4SHE2VDU0b04rSjNOMFByajUKT0VMOHBha
GJTQ096NitNbHNvQ3VsdFFLbk1KNG1zWm9HSzQzWWpkZVVYV29XR1BBVWU1QWVINm9yeHFnNGJCNG5WQ01l
K2V6L0k0agpzTnRsQUhDRUFRZ0FGRzVVaHBxNnpQazNFUGJnM29RdG5hU0ZOOU9INHhYUXdSZVFmaGtoYWh
LcGR2MFNBdWxQSVY0WEFnTUJBQUdqCllUQmZNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdUQVlEVlIwZ0JFVX
dRekJCQmd0Z2hrZ0JodnQ3aHdjQkN6QXlNREFHQ0NzR0FRVUYKQndJQkZpUm9kSFJ3T2k4dmQzZDNMbmRsY
kd4elptRnlaMjh1WTI5dEwyTmxjblJ3YjJ4cFkza3dEUVlKS29aSWh2Y05BUUVGQlFBRApnZ0VCQU5JbjNa
d0tkeXU3SXZJQ3RVcEtrZm5STGI3a3V4cG83dzZrQU9udTUrL3U5dm5sZEtUQzJGSll4SFQ3em11MU95bDV
HRnJ2Cm0rMGZhemJ1U0NVbEZMWldvaERvN3FkLzBEK2owTU5kSnU0SHpNUEJKQ0dISHQ4cUVsTnZRUmJuN2
E2VStveHkraE5IOER4K3JuMFIKT2hQczdmcHZjbVI3blgxL0p2MTYreVd0Nmo0cGYwempBRmN5c0xQcDdWT
VgyWXV5RkE0dzZPWFZFOFprcjhRQTFkaFlKUHoxait6eAp4MzJsMnc4bjBjYnlRSWptSC9aaHFQUkN5TGsz
MDZtK0xGWjR3bktiV1YwMVFJcm9UbU1hdHVrZ2FsSGl6cVNRMzNad21WeHdRMDIzCnRxY1paRTZTdDhXUlB
IOUlGbVY3RnYzTC9QdloxZFpQSVdVN1NuOUhvL3M9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClN3aX
NzY29tIFJvb3QgQ0EgMQo9PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC
k1JSUYyVENDQThHZ0F3SUJBZ0lRWEF1RlhBdm5XVUhmVjh3L2Y1Mm9OakFOQmdrcWhraUc5dzBCQVFVRkFE
QmtNUXN3Q1FZRFZRUUcKRXdKamFERVJNQThHQTFVRUNoTUlVM2RwYzNOamIyMHhKVEFqQmdOVkJBc1RIRVJ
wWjJsMFlXd2dRMlZ5ZEdsbWFXTmhkR1VnVTJWeQpkbWxqWlhNeEd6QVpCZ05WQkFNVEVsTjNhWE56WTI5dE
lGSnZiM1FnUTBFZ01UQWVGdzB3TlRBNE1UZ3hNakEyTWpCYUZ3MHlOVEE0Ck1UZ3lNakEyTWpCYU1HUXhDe
kFKQmdOVkJBWVRBbU5vTVJFd0R3WURWUVFLRXdoVGQybHpjMk52YlRFbE1DTUdBMVVFQ3hNY1JHbG4KYVhS
aGJDQkRaWEowYVdacFkyRjBaU0JUWlhKMmFXTmxjekViTUJrR0ExVUVBeE1TVTNkcGMzTmpiMjBnVW05dmR
DQkRRU0F4TUlJQwpJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBMExtd3FBelp1ej
hoK0J2Vk01T0FGbVVnZGJJOW0yQnRSc2lNCk1XOFh3L3FhYkZidFBNV1JWOFBOcTVaSmtDb1pTeDZqYlZmZ
DhTdGlLSFZGWHFyV1cvb0xKZGloRnZrY3hDN21sU3Buek5BcGJqeUYKTkRoaFNiRUFuOVk2Y1Y5TmJjNWZ1
YW5raVg5cVV2ckttL0xjcWZtZG1VYy9UaWxmdEthTlhYc0xtUkVEQS83bjI5dWoveDJselpBZQpBUjgxc0g
4QTI1QnZ4bjU3MGU1NmVxZXFERmR2cEczRkV6dXdwZG50TWh5MFhtZUxWTnh6aCtYVEYzeG1VSEpkMUJwWX
dkblAySWtDCmI2ZEp0RFpkMEtUZUJ5eTJkYmNva2RhWHZpajFtQjdxV3liSnZiQ1hjOXF1a1NicmFNSDVPU
lhXWjBzS2JVL0x6N0RrUW5HTVUzbm4KN3VIYkhhQnVIWXdhZHpWY0ZoNHJVeDgwaTlGcy9QSm5CM3IxcmUz
V21xdWhzVXZoekRkZi9YL05UYTY0SDV4RCtTcFlWVU5GdkpiTgpjQTc4eWVObXVrNk5PNEhMRldSN3VaVG9
YVE5TaFhFdVQ0NmlCaEZSeWVQTG9XNHhDR1FNd3RJODlUYm8xOUFPZUNNZ2tja2tLbVVwCld5TDNJYzZEWH
FUejNrdlRhSTlHZFZ5RENXNHBhOFJ3alBXZDF5QXYvMGJTS3pqQ0wzVWNQWDdhcGU4ZVlJVnBRdFBNK0dQK
0hrTTUKaGFhMlkwRVFzM01ldk5QNnluMFdSK0tuMWRDamlnb0lsbUpXYmpUYjJRSzVNSFhqQk5Mbmo4S3dF
VUFLck5WeEFtS0xNYjdkeGlOWQpNVUpETFhUNXhwNm1pZy9wL3IrRDVrTlhKTHJ2UmpTcTF4SUJPTzBDQXd
FQUFhT0JoakNCZ3pBT0JnTlZIUThCQWY4RUJBTUNBWVl3CkhRWURWUjBoQkJZd0ZEQVNCZ2RnaFhRQlV3QU
JCZ2RnaFhRQlV3QUJNQklHQTFVZEV3RUIvd1FJTUFZQkFmOENBUWN3SHdZRFZSMGoKQkJnd0ZvQVVBeVV2M
20rQ0FUcGNMTndyb1dtMVo5U00wLzB3SFFZRFZSME9CQllFRkFNbEw5NXZnZ0U2WEN6Y0s2RnB0V2ZVak5Q
OQpNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUNBUUExRU12c3BnUU5EUS9Od051cnFQS0lsd3pma3k5TmZFQld
NWHJycEE5Z3pYcnp2c01uCmpnTStwTjBTNzM0ZWRBWThQekh5SEh1Uk1TRzA4TkJzbDlUcGw3SWtWaDVXd3
pXOWlBVVBXeEFhWk9ISGdqRDVNcTJlVUN6bmVBWFEKTWJGYW1JcDFUcEJjYWhRcTRGSkhnbURtSHRxQnNmc
1VDMXJ4bjlLVnVqN1FHOVlWSGFPK2h0WGJEOEJKWkxzdVVCbEwwaVQ0M1I0SApWdEE0b0pWd0lIYU0xOTBl
M3A5eHhDUHZneE5jb3lRVlRTbEFQR3JFcWRpM3BrU2xEZlRnblhjZVFIQW0vTnJaTnVSNTVMVS92SnRsCnZ
yc1Jscy9ieGlnNU9nak9SMXRUV3NXWi9sMnAzZTlNMU1hbHJRTG1qQWNTSG04RDBXK2dvL01wdlJMSFVLS3
dmNGlwbVhlYXNjQ2wKT1M1Y2ZHbmlMTERxTjJxazRWcmg5VkRsZysrbHV5cUk1NHpiL1cxZWx4bW9mbVoxY
TNIcXY3SEhiNkQwanFUc05GRmJqQ1lEY0tGMwoxUUVTVndBMTJ5UGVEb29vbWYyeEVHOUwvemd0WUU0c25P
dG50YTFKN2tzZnJLLzdEWkJhWm1Cd1hhck5lTlFrN3NoQm9KTUJrcHhxCm52eTVKTVd6RllKK3ZxNlZLK3V
4d05yakFXQUxYbW1zaEZaaHZuRVgvaDBURC83R2gwWHAvaktnR2cwVHBKUlZjYVVXaTdyS2liQ3kKeC95UD
JGUzFrMktkenM5Wit6MFl6aXJMTlJXQ1hmOVVJbHR4VXZ1M3lmNWdtd0JCWlBDcUt1eTJRa1BPaVdhQnlJd
WZPVlFESmRNVwpOWTZFMEYvNk1CcjFtbXowRGxQNU9sdlJIQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0t
LS0KCkRpZ2lDZXJ0IEFzc3VyZWQgSUQgUm9vdCBDQQo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0
tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR0ekNDQXArZ0F3SUJBZ0lRRE9mZzVSZllSdjZQNVdEOE
cvQXdPVEFOQmdrcWhraUc5dzBCQVFVRkFEQmxNUXN3Q1FZRFZRUUcKRXdKVlV6RVZNQk1HQTFVRUNoTU1SR
2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNRdwpJZ1lEVlFR
REV4dEVhV2RwUTJWeWRDQkJjM04xY21Wa0lFbEVJRkp2YjNRZ1EwRXdIaGNOTURZeE1URXdNREF3TURBd1d
oY05NekV4Ck1URXdNREF3TURBd1dqQmxNUXN3Q1FZRFZRUUdFd0pWVXpFVk1CTUdBMVVFQ2hNTVJHbG5hVU
5sY25RZ1NXNWpNUmt3RndZRFZRUUwKRXhCM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNRd0lnWURWUVFERXh0R
WFXZHBRMlZ5ZENCQmMzTjFjbVZrSUVsRUlGSnZiM1FnUTBFdwpnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFB
NElCRHdBd2dnRUtBb0lCQVFDdERoWE81RU9BWExHSDg3ZGcrWEVTcGE3Y0pwU0lxdlRPCjlTQTVLRmhnRFB
pQTJxa1ZsVEpoUExXeEtJU0tpdHlmQ2d5REYzcVBrS3lLNTNsVFhER0VLdllQbURJMmRzemUzVHlvb3U5cS
t5SHkKVW1IZm55RFhIK0t4MmY0WVpOSVNXMS81V0JnMXZFZk5vVGI1YTMvVXNEZyt3UnZEakRQWjJDOFkva
WdQczZlRDFzTnVSTUJoTlpZVwovbG1jaTNadDEvR2lTdzByL3d0eTJwNWcwSTZRTmNaNFZZY2dvYy9sYlFy
SVNYd3htRE5zSXVtSDBESmFvcm9UZ2hIdE9SZWR
tVHB5Cm9lYjZwTm5WRnpGMXJvVjlJcTQvQVVhRzlpaDV5TEhhNUZjWHhINGNEckMwa3FaV3M3MnlsKzJxcC
9DM3hhZy9sUmJRLzZHVzZ3aGYKR0hkUEFnTUJBQUdqWXpCaE1BNEdBMVVkRHdFQi93UUVBd0lCaGpBUEJnT
lZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJSRgo2Nkt2OUpMTGdqRXRVWXVucHlHZDgyM0lEekFm
QmdOVkhTTUVHREFXZ0JSRjY2S3Y5SkxMZ2pFdFVZdW5weUdkODIzSUR6QU5CZ2txCmhraUc5dzBCQVFVRkF
BT0NBUUVBb2c2ODMrTHQ4T055YzNwa2xMLzNjbWJZTXVSQ2RXS3VoK3Z5MWRuZVZyT2Z6TTRVS0xrTmwyQm
MKRWt4WTVOTTlnMGxGV0pjMWFScW9SK3BXeG5tckV0aG5nWVRmZndrOGxPYTRKaXdndlQyektJbjNYLzhpN
HBlRUgrbGw3NGZnMzhGbgpTYk5kNjdJSkt1c203WGkrZlQ4cjg3Y21OVzFmaVFHMlNWdWZBUVdicXowbHdj
eTJmOEx4YjRiRyttUm82NEV0bE90Q3QvcU1IdDFpCjhiNVFaN2RzdmZQeEgyc01OZ2NXZnpkOHFWdHRldkV
TUm1DRDF5Y0V2a3ZPbDc3RFp5cG9FZCtBNXd3elpyOFREUlJ1ODM4Zll4QWUKK28wYkpXMXNqNlczWVFHeD
BxTW1vUkJ4bmEzaXcvbkRtVkczS3djSXppN21VTEtuK2dwRkw2THc4Zz09Ci0tLS0tRU5EIENFUlRJRklDQ
VRFLS0tLS0KCkRpZ2lDZXJ0IEdsb2JhbCBSb290IENBCj09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0t
QkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEcnpDQ0FwZWdBd0lCQWdJUUNEdmdWcEJDUnJHaGRXckpXWkh
IU2pBTkJna3Foa2lHOXcwQkFRVUZBREJoTVFzd0NRWURWUVFHCkV3SlZVekVWTUJNR0ExVUVDaE1NUkdsbm
FVTmxjblFnU1c1ak1Sa3dGd1lEVlFRTEV4QjNkM2N1WkdsbmFXTmxjblF1WTI5dE1TQXcKSGdZRFZRUURFe
GRFYVdkcFEyVnlkQ0JIYkc5aVlXd2dVbTl2ZENCRFFUQWVGdzB3TmpFeE1UQXdNREF3TURCYUZ3MHpNVEV4
TVRBdwpNREF3TURCYU1HRXhDekFKQmdOVkJBWVRBbFZUTVJVd0V3WURWUVFLRXd4RWFXZHBRMlZ5ZENCSmJ
tTXhHVEFYQmdOVkJBc1RFSGQzCmR5NWthV2RwWTJWeWRDNWpiMjB4SURBZUJnTlZCQU1URjBScFoybERaWE
owSUVkc2IySmhiQ0JTYjI5MElFTkJNSUlCSWpBTkJna3EKaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ
0FRRUE0anZoRVhMZXFLVFRvMWVxVUtLUEMzZVF5YUtsN2hMT2xsc0JDU0RNQVpPbgpUakMzVS9kRHhHa0FW
NTNpalNMZGh3WkFBSUVKenM0Ymc3L2Z6VHR4UnVMV1pzY0ZzM1luRm85N25oNlZmZTYzU0tNSTJ0YXZlZ3c
1CkJtVi9TbDBmdkJmNHE3N3VLTmQwZjNwNG1WbUZhRzVjSXpKTHYwN0E2RnB0NDNDL2R4Qy8vQUgyaGRtb1
JCQllNcWwxR05YUm9yNUgKNGlkcTlKb3orRWtJWUl2VVg3UTZoTCtocWtwTWZUN1BUMTlzZGw2Z1N6ZVJud
HdpNW0zT0ZCcU9hc3YremJNVVpCZkhXeW1lTXIveQo3dnJUQzBMVXE3ZEJNdG9NMU8vNGdkVzdqVmcvdFJ2
b1NTaWljTm94Qk4zM3NoYnlUQXBPQjZqdFNqMWV0WCtqa01Pdkp3SURBUUFCCm8yTXdZVEFPQmdOVkhROEJ
BZjhFQkFNQ0FZWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QWRCZ05WSFE0RUZnUVVBOTVRTlZiUlRMdG0KOE
tQaUd4dkRsN0k5MFZVd0h3WURWUjBqQkJnd0ZvQVVBOTVRTlZiUlRMdG04S1BpR3h2RGw3STkwVlV3RFFZS
ktvWklodmNOQVFFRgpCUUFEZ2dFQkFNdWNONnBJRXhJSyt0MUVuRTlTc1BUZnJnVDFlWGtJb3lRWS9Fc3Jo
TUF0dWRYSC92VEJIMWpMdUcyY2VuVG5tQ21yCkViWGpjS0NoelV5SW1aT01rWERpcXc4Y3ZwT3AvMlBWNUF
kZzA2Ty9uVnNKOGRXTzQxUDBqbVA2UDZmYnRHYmZZbWJXMFc1QmpmSXQKdGVwM1NwK2RXT0lyV2NCQUkrMH
RLSUpGUG5sVWtpYVk0SUJJcURmdjhOWjVZQmJlck9nT3pXNnNSQmM0TDBuYTRVVStLcmsyVTg4NgpVQWIzT
HVqRVYwbHNZU0VZMVFTdGVEd3NPb0JycCt1dkZSVHAySW5CdVRoczRwRnNpdjlrdVhjbFZ6REFHeVNqNGR6
cDMwZDh0YlFrCkNBVXc3QzI5Qzc5RnYxQzVxZlBybUFFU3JjaUl4cGcwWDQwS1BNYnAxWldWYmQ0PQotLS0
tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBCj09PT
09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JS
UR4VENDQXEyZ0F3SUJBZ0lRQXF4Y0ptb0xRSnVQQzNueXJrWWxkekFOQmdrcWhraUc5dzBCQVFVRkFEQnNN
UXN3Q1FZRFZRUUcKRXdKVlV6RVZNQk1HQTFVRUNoTU1SR2xuYVVObGNuUWdTVzVqTVJrd0Z3WURWUVFMRXh
CM2QzY3VaR2xuYVdObGNuUXVZMjl0TVNzdwpLUVlEVlFRREV5SkVhV2RwUTJWeWRDQklhV2RvSUVGemMzVn
lZVzVqWlNCRlZpQlNiMjkwSUVOQk1CNFhEVEEyTVRFeE1EQXdNREF3Ck1Gb1hEVE14TVRFeE1EQXdNREF3T
UZvd2JERUxNQWtHQTFVRUJoTUNWVk14RlRBVEJnTlZCQW9UREVScFoybERaWEowSUVsdVl6RVoKTUJjR0Ex
VUVDeE1RZDNkM0xtUnBaMmxqWlhKMExtTnZiVEVyTUNrR0ExVUVBeE1pUkdsbmFVTmxjblFnU0dsbmFDQkJ
jM04xY21GdQpZMlVnUlZZZ1VtOXZkQ0JEUVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQV
FvQ2dnRUJBTWJNNVhQbSs5Uzc1UzB0Ck1xYmY1WUUveWMwbFNiWnhLc1BWbERSbm9nb2NzRjlwcGtDeHhMZ
XlqOUNZcEtsQldUclQzSlRXUE50ME9LUkt6RTBsZ3ZkS3BWTVMKT083elNXMXhrWDVqdHF1bVg4T2toUGhQ
WWxHKytNWHMyemlTNHdibENKRU14Q2hCVmZ2TFdva1ZmbkhvTmI5TmNnazl2am80VUZ0MwpNUnVOczhja1J
acW5yRzBBRkZvRXQ3b1Q2MUVLbUVGQklrNWxZWWVCUVZDbWVWeUozaGxLVjlVdTVsMGNVeXgrbU0wYUJoYW
thSFBRCk5BUVRYS0Z4MDFwOFZkdGVaT0UzaHpCV0JPVVJ0Q21BRXZGNU9ZaWlBaEY4SjJhM2lMZDQ4c29Lc
URpckNtVEN2MlpkbFlUQm9TVWUKaDEwYVVBc2dFc3hCdTI0TFVUaTRTOHNDQXdFQUFhTmpNR0V3RGdZRFZS
MFBBUUgvQkFRREFnR0dNQThHQTFVZEV3RUIvd1FGTUFNQgpBZjh3SFFZRFZSME9CQllFRkxFK3cya0QrTDl
IQWRTWUpob0lBdTlqWkN2RE1COEdBMVVkSXdRWU1CYUFGTEUrdzJrRCtMOUhBZFNZCkpob0lBdTlqWkN2RE
1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQWNHZ2FYM05lY256eUlaZ1lJVnlIYklVZjRLbWVxdnhneWRrQ
VEKVjhHSzgzclpFV1dPTmZxZS9FVzFudGxNTVV1NGtlaERMSTZ6ZU03YjQxTjVjZGJsSVpRQjJsV0htaVJr
OW9wbXpONmNOODJvTkxGcApteVBJbm5naUszQkQ0MVZITVdFWjcxakZoUzlPTVBhZ01SWWp5T2ZpWlJZenk
3OGFHNkE5K01wZWl6R0xZQWlKTFF3R1hGSzN4UGtLCm1ORVZYNThTdm53Mll6aTlSS1IvNUNZckNzU1hhUT
Nwak9MQUVGZTR5SFlTa1ZYeVNHbll2Q29DV3c5RTFDQXgyL1M2Y0NaZGtHQ2UKdkVzWENTKzB5eDVEYU1rS
Eo4SFNYUGZxSWJsb0VwdzhuTCtlL0lCY20yUE43RWVxSlNkbm9EZnpBSUo5Vk5lcCtPa3VFNk4zNkI5Swot
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpDZXJ0cGx1cyBDbGFzcyAyIFByaW1hcnkgQ0EKPT09PT09PT0
9PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEa2pDQ0FucWdBd0
lCQWdJUkFJVzlTL1BZMnVOcDlwVFhYOE9sUkNNd0RRWUpLb1pJaHZjTkFRRUZCUUF3UFRFTE1Ba0dBMVVFC
kJoTUNSbEl4RVRBUEJnTlZCQW9UQ0VObGNuUndiSFZ6TVJzd0dRWURWUVFERXhKRGJHRnpjeUF5SUZCeWFX
MWhjbmtnUTBFd0hoY04KT1Rrd056QTNNVGN3TlRBd1doY05NVGt3TnpBMk1qTTFPVFU1V2pBOU1Rc3dDUVl
EVlFRR0V3SkdVakVSTUE4R0ExVUVDaE1JUTJWeQpkSEJzZFhNeEd6QVpCZ05WQkFNVEVrTnNZWE56SURJZ1
VISnBiV0Z5ZVNCRFFUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQCkFEQ0NBUW9DZ2dFQkFOeFFsd
EFTK0RYU0NIaDZ0bEp3L1cvdXo3a1J5MTEzNGV6cGZnU04xc3h2YzBOWFlLd3pDa1RzQTE4Y2dDU1IKNWFp
UlZoS0M5K0FyOU51dVlTNkpFSTFyYkxxekFyM1ZOc1ZJTnlQaThGbzNVak1YRXVMUllFMitMMEVSNC9ZWEp
ReUxrY0FibVh1WgpWZzJ2N3RLOFIxZmplVWw3TklrbkpJVGVzZXpwV0U3K1R0OWF2a0d0ckFqRkdBN3YwbF
B1Yk5DZEVnRVRqZHlBWXZlVnFVU0lTbkZPCllGV2UyeU1aZVZZSEREOWpDMXl3NHI1K0ZmeVVNMWhCT0hUR
TRZK0wzeWFzSDdXTE83ZERXV3V3SktadGtJdkVjdXBkTTVpM3k5NWUKZSsrVThScyt5c2tod2NXWUFxcWk5
bHQzbS9WK2xsVTBIR2Rwd1BGQzQwZXMvQ2djWmxVQ0F3RUFBYU9CakRDQmlUQVBCZ05WSFJNRQpDREFHQVF
IL0FnRUtNQXNHQTFVZER3UUVBd0lCQmpBZEJnTlZIUTRFRmdRVTQzTXQzOHNPS0F6ZTNiT2t5bm00anJ2b0
1Ja3dFUVlKCllJWklBWWI0UWdFQkJBUURBZ0VHTURjR0ExVWRId1F3TUM0d0xLQXFvQ2lHSm1oMGRIQTZMe
TkzZDNjdVkyVnlkSEJzZFhNdVkyOXQKTDBOU1RDOWpiR0Z6Y3pJdVkzSnNNQTBHQ1NxR1NJYjNEUUVCQlFV
QUE0SUJBUUNuVk0rSVJCbkwzOVIvQU45V00ySzE5MUVCa092RApQOUdJUk9ra1hlL25GTDBndDVvOEFQNXR
uOXVRM05mMFl0YUxjRjNuNVFSSXFXaDh5ZkZDODJ4L3hYcDhIVkdJdXRJS1BpZGQzaTFSClR0TVRaR25rTH
VQVDU1c0ptYWJnbFp2T0d0ZC92anpPVXJNUkZjRVBGODBEdTV3bEZicWlkb244QnZFWTBKTkxEbnlDdDZYM
DlsLysKN1VDbW5ZUjBPYm5jSG9VVzJpa2JoaU1BeWJ1SmZtNkFpQjR2RkxRREpLZ3lid09hUnl3d3ZsYkdw
MElDY0J2cVFOaTZCUU53QjZTVwovLzFJTXdyaDNLV0JrSnROM1gzbjU3TE5YTWhxbGZpbDlvM0VYWGdJdm5
zRzFrblBHVFpRSXk0STVwNEZUVWNZMVJicHNkYTJFTlc3Cmw3K2lqclJVCi0tLS0tRU5EIENFUlRJRklDQV
RFLS0tLS0KCkRTVCBSb290IENBIFgzCj09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtL
S0tLQpNSUlEU2pDQ0FqS2dBd0lCQWdJUVJLK3dnTmFqSjdxSk1EbUdMdmhBYXpBTkJna3Foa2lHOXcwQkFR
VUZBREEvTVNRd0lnWURWUVFLCkV4dEVhV2RwZEdGc0lGTnBaMjVoZEhWeVpTQlVjblZ6ZENCRGJ5NHhGekF
WQmdOVkJBTVREa1JUVkNCU2IyOTBJRU5CSUZnek1CNFgKRFRBd01Ea3pNREl4TVRJeE9Wb1hEVEl4TURrek
1ERTBNREV4TlZvd1B6RWtNQ0lHQTFVRUNoTWJSR2xuYVhSaGJDQlRhV2R1WVhSMQpjbVVnVkhKMWMzUWdRM
jh1TVJjd0ZRWURWUVFERXc1RVUxUWdVbTl2ZENCRFFTQllNekNDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFE
CmdnRVBBRENDQVFvQ2dnRUJBTit2NlpkUUNJTlh0TXhpWmZhUWd1ekgweXhyTU1wYjdObkRmY2RBd1JnVWk
rRG9NM1pKS3VNL0lVbVQKckU0T3J6NUl5Mlh1L05NaEQyWFNLdGt5ajR6bDkzZXdFbnUxbGNDSm82bTY3WE
11ZWd3R01vT2lmb29VTU0wUm9PRXFPTGw1Q2pIOQpVTDJBWmQrM1VXT0R5T0tJWWVwTFlZSHNVbXU1b3VKT
EdpaWZTS09lRE5vSmpqNFhMaDdkSU45YnhpcUtxeTY5Y0szRkN4b2xrSFJ5CnhYdHFxelRXTUluLzVXZ1Rl
MVFMeU5hdTdGcWNraDQ5WkxPTXh0Ky95VUZ3N0JaeTFTYnNPRlU1UTlEOC9SaGNRUEdYNjlXYW00MGQKdXR
vbHVjYlkzOEVWQWpxcjJtN3hQaTcxWEFpY1BOYURhZVFRbXhrcXRpbFg0K1U5bTUvd0FsMENBd0VBQWFOQ0
1FQXdEd1lEVlIwVApBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQkFNQ0FRWXdIUVlEVlIwT0JCWUVGT
VNuc2FSN0xISDYyK0ZMa0hYL3hCVmdoWWtRCk1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQ2pHaXliRndC
Y3FSN3VLR1kzT3IrRHh6OUx3d21nbFNCZDQ5bFpSTkkrRFQ2OWlrdWcKZEIvT0VJS2NkQm9kZnBnYTNjc1R
TN01nUk9TUjZjejhmYVhiYXVYKzV2M2dUdDIzQURxMWNFbXY4dVhyQXZIUkFvc1p5NVE2WGtqRQpHQjVZR1
Y4ZUFscndEUEd4cmFuY1dZYUxidW1SOVliSytybG1NNnBaVzg3aXB4WnpSOHNyekptd04walA0MVpMOWM4U
ERISXloOGJ3ClJMdFRjbTFEOVNaSW1sSm50MWlyL21kMmNYamJEYUpXRkJNNUpER0ZvcWdDV2pCSDRkMVFC
N3dDQ1pBQTYyUmpZSnNXdklqSkV1YlMKZlpHTCtUMHlqV1cwNlh5eFYzYnF4YllvT2I4VlpSekk5bmVXYWd
xTmR3dllrUXNFamdmYktiWUs3cDJDTlRVUQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpEU1QgQUNFUy
BDQSBYNgo9PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRUNUQ0NBdkdnQ
XdJQkFnSVFEVjZaQ3RhZHQzanMyQWRXTzRZVjJUQU5CZ2txaGtpRzl3MEJBUVVGQURCYk1Rc3dDUVlEVlFR
RwpFd0pWVXpFZ01CNEdBMVVFQ2hNWFJHbG5hWFJoYkNCVGFXZHVZWFIxY21VZ1ZISjFjM1F4RVRBUEJnTlZ
CQXNUQ0VSVFZDQkJRMFZUCk1SY3dGUVlEVlFRREV3NUVVMVFnUVVORlV5QkRRU0JZTmpBZUZ3MHdNekV4TW
pBeU1URTVOVGhhRncweE56RXhNakF5TVRFNU5UaGEKTUZzeEN6QUpCZ05WQkFZVEFsVlRNU0F3SGdZRFZRU
UtFeGRFYVdkcGRHRnNJRk5wWjI1aGRIVnlaU0JVY25WemRERVJNQThHQTFVRQpDeE1JUkZOVUlFRkRSVk14
RnpBVkJnTlZCQU1URGtSVFZDQkJRMFZUSUVOQklGZzJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DCkF
ROEFNSUlCQ2dLQ0FRRUF1VDMxTE1tVTNIV0tsVjFqNklSM2RtYTVXWkZjUnQyU1BwLzVEZ08wUFdHU3ZTTW
10V1B1a3RLZTFqekkKRFpCZlpJR3hxQWdOVE5qNTB3VW9VclFCSmNXVkhBeCtQaENFZGMvQkdaRmp6K2lva
1lpNVExSzdnTEZWaVlzeCt0QzNkcjVCUFRDYQpwQ0lsRjNQb0h1TFRyQ3E5V3pnaDFTcEwxMVY5NHpwVnZk
ZHRhd0pYYStaSGZBaklncnJlcDRjOW9XMjRNRmJDc3dLQlh5MzE0cG93CkdDaTRadFBMQVpadjZvcEZWZGJ
nbmY5bkt4Y0NwazRhYWhFTGZyZDc1NWpXakhadndUdmJVSk4rNWRDT0h6ZTR2YnJHbjJ6cGZEUHkKTWp3bV
Ivb25KQUxKZmgxYmlFSVRhalY4ZlRYcExtYVJjcFBWTWliRWRQVlRvN05kbXZZSnl3SURBUUFCbzRISU1JS
EZNQThHQTFVZApFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkFRREFnSEdNQjhHQTFVZEVRUVlNQmFC
RkhCcmFTMXZjSE5BZEhKMWMzUmtjM1F1ClkyOXRNR0lHQTFVZElBUmJNRmt3VndZS1lJWklBV1VEQWdFQkF
UQkpNRWNHQ0NzR0FRVUZCd0lCRmp0b2RIUndPaTh2ZDNkM0xuUnkKZFhOMFpITjBMbU52YlM5alpYSjBhV1
pwWTJGMFpYTXZjRzlzYVdONUwwRkRSVk10YVc1a1pYZ3VhSFJ0YkRBZEJnTlZIUTRFRmdRVQpDWElHVGhoR
EQrWFd6TU5xaXpGN2VJK29nN2d3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUtQWWp0YXkyODRGNXpMTkFk
TUVBK1YyCjVGWXJuSm1RNkFnd2JOOTlQZTdsdjdVa1FJUko0ZEVvcnNUQ09sTXdpUEgxZDI1Unl2ci9tYTh
rWHh1Zy9mS3NoTXJmcWZCZkJDNnQKRnI4aGx4Q0JQZVAvaDQweTNKVGxSNHBlYWhQSmxKVTkwdTdJTkpYUW
dOU3RNZ2lBVkR6Z3ZWSlQxMUo4c21rL2YzclBhblRLK2dRcQpuRXhhQnFYcElLMUZaZzlwOGQyLzZlTXlpL
3Jnd1laTmNqd3UySk40Q2lyNDJOSW5QUm1KWDFwN2lqdk1ETnBScnNjTDl5dXdOd1hzCnZGY2o0ampTbTJq
elZoS0lUMEo4dURIRXRkdmt5Q0UwNlVnUk5lNzZ4NUpYeFo4MDVNZjI5dzRMVEp4b2VIdHhNY2ZySHVCblF
mTzMKb0tmTjVYb3pObXI2bWlzPQotLS0tLUVORC
BDRVJUSUZJQ0FURS0tLS0tCgpUVVJLVFJVU1QgQ2VydGlmaWNhdGUgU2VydmljZXMgUHJvdmlkZXIgUm9vd
CAxCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBD
RVJUSUZJQ0FURS0tLS0tCk1JSUQrekNDQXVPZ0F3SUJBZ0lCQVRBTkJna3Foa2lHOXcwQkFRVUZBRENCdHp
FL01EMEdBMVVFQXd3MlZNT2NVa3RVVWxWVFZDQkYKYkdWcmRISnZibWxySUZObGNuUnBabWxyWVNCSWFYcH
RaWFFnVTJIRW4yeGhlY1N4WThTeGM4U3hNUXN3Q1FZRFZRUUdEQUpVVWpFUApNQTBHQTFVRUJ3d0dRVTVMU
VZKQk1WWXdWQVlEVlFRS0RFMG9ZeWtnTWpBd05TQlV3NXhTUzFSU1ZWTlVJRUpwYkdkcElNU3diR1YwCmFj
V2ZhVzBnZG1VZ1FtbHNhY1dmYVcwZ1I4TzhkbVZ1YkduRW4ya2dTR2w2YldWMGJHVnlhU0JCTHNXZUxqQWV
GdzB3TlRBMU1UTXgKTURJM01UZGFGdzB4TlRBek1qSXhNREkzTVRkYU1JRzNNVDh3UFFZRFZRUURERFpVdz
V4U1MxUlNWVk5VSUVWc1pXdDBjbTl1YVdzZwpVMlZ5ZEdsbWFXdGhJRWhwZW0xbGRDQlRZY1NmYkdGNXhMR
mp4TEZ6eExFeEN6QUpCZ05WQkFZTUFsUlNNUTh3RFFZRFZRUUhEQVpCClRrdEJVa0V4VmpCVUJnTlZCQW9N
VFNoaktTQXlNREExSUZURG5GSkxWRkpWVTFRZ1FtbHNaMmtneExCc1pYUnB4WjlwYlNCMlpTQkMKYVd4cHh
aOXBiU0JIdzd4MlpXNXNhY1NmYVNCSWFYcHRaWFJzWlhKcElFRXV4WjR1TUlJQklqQU5CZ2txaGtpRzl3ME
JBUUVGQUFPQwpBUThBTUlJQkNnS0NBUUVBeWxJRjFtTUQyQnhmM2RKN1hmSU1ZR0ZiYXp0MEszZ05mVVc5S
W5Ub2pBUEJ4aEVxUFpXOHFaU3d1NUdYCnlHbDhoTVcwa1d4c0UycWtWYTJraGVpVmZyTUFyd0RDQlJqMWNK
MDJpNjdMNUJ1QmY1T0krMnBWdTMyRmtzNjZXSi9iTXNXOVhlOGkKU2k5QkIzNUpZYk9HN0U2bVFXNkV2QVB
zOVRzY3lCL0M3cWp1NmhKS2pSVFA4d3JnVURuNUNEWDRFVm10NXlMcVM4b1VCdDVDdXJLWgo4eTFVaUJBRz
Z1RWFQajFuSC92TyszeUM2QkZkU3NHNUZPcFUyV2FiZklsOUJKcGl5ZWxTUEo2Yzc5TDFKdVRtNVJoOGkyN
2ZiTXg0ClcwOXlzc3RjUDR3RmpkRk1qSzJTeCtGNGYyVnNTUVpRTEo0eXd0ZEt4bldLV1U1MWIwZGV3UUlE
QVFBQm94QXdEakFNQmdOVkhSTUUKQlRBREFRSC9NQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUFWOVZYL04
1YUFXU0drL0tFVlRDRDIxRi9hQXlUOHo1QWE5Q0VLbXU0NgpzV3J2Ny9oZzBVdzJaa1VkODJZQ2RBUjdrak
NvM2dwMkQrK1ZicjNKTitZYURheUpTRnZNZ3piQzlVWmNXWUpXdE5YK0k3VFlWQnhFCnE4U241UlRPUEVGa
GZFUG16Y1NCQ1lzaysxUWwxaGFvbGd4bkIyK3pVRWZqSENRbzNTcVlwR0grMitvU043d0JHalNGdlc1UDU1
RnkKQjBTRkhsaktWRVRkOTZ5NXk0a2hjdHVQd0drcGx5cWpyaGdqbHh4QktvdDhLc0Y4a09pcEtNRFRrY2F
0S0lkQWFMWC83S2ZTMHpnWQpuTk45YVYzd3hxVWVKQnVqUi94cEIyam41SnEwN1EraGg0Y0N6b2ZTU0U3aH
ZQL0w4WEtTUkdRREplcmVXMjZmeWZKT3JOM0gKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKVFVSS1RSV
VNUIENlcnRpZmljYXRlIFNlcnZpY2VzIFByb3ZpZGVyIFJvb3QgMgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFUERDQ0F
5U2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURDQnZqRS9NRDBHQTFVRUF3dzJWTU9jVWt0VVVsVl
RWQ0JGCmJHVnJkSEp2Ym1scklGTmxjblJwWm1scllTQklhWHB0WlhRZ1UySEVuMnhoZWNTeFk4U3hjOFN4T
VFzd0NRWURWUVFHRXdKVVVqRVAKTUEwR0ExVUVCd3dHUVc1cllYSmhNVjB3V3dZRFZRUUtERlJVdzV4U1Mx
UlNWVk5VSUVKcGJHZHBJTVN3YkdWMGFjV2ZhVzBnZG1VZwpRbWxzYWNXZmFXMGdSOE84ZG1WdWJHbkVuMmt
nU0dsNmJXVjBiR1Z5YVNCQkxzV2VMaUFvWXlrZ1MyRnp4TEZ0SURJd01EVXdIaGNOCk1EVXhNVEEzTVRBd0
56VTNXaGNOTVRVd09URTJNVEF3TnpVM1dqQ0J2akUvTUQwR0ExVUVBd3cyVk1PY1VrdFVVbFZUVkNCRmJHV
nIKZEhKdmJtbHJJRk5sY25ScFptbHJZU0JJYVhwdFpYUWdVMkhFbjJ4aGVjU3hZOFN4YzhTeE1Rc3dDUVlE
VlFRR0V3SlVVakVQTUEwRwpBMVVFQnd3R1FXNXJZWEpoTVYwd1d3WURWUVFLREZSVXc1eFNTMVJTVlZOVUl
FSnBiR2RwSU1Td2JHVjBhY1dmYVcwZ2RtVWdRbWxzCmFjV2ZhVzBnUjhPOGRtVnViR25FbjJrZ1NHbDZiV1
YwYkdWeWFTQkJMc1dlTGlBb1l5a2dTMkZ6eExGdElESXdNRFV3Z2dFaU1BMEcKQ1NxR1NJYjNEUUVCQVFVQ
UE0SUJEd0F3Z2dFS0FvSUJBUUNwTm43RGtVTk13eG1ZQ01qSFdIdFBGb3lsemtrQkgzTU9ySFVUcHZxZQpM
Q0RlMkpBT0N0RnAwaWY3cW5lZkoxSWw0c3RkMk5pRFVCZDlpcldDUHdTT3ROWHdTYWRrdHg0dVh5Q2NVSFZ
QcitHMVFSVDBtSktJCngrWGxaRWRoUjNuOXdGSHh3Wm5uM001cSs2KzFBVERjUmh6dml1eVY3OXovcnhBYz
Y1M1lzS3BxaFJnTkY4ayt2L0diMEFtSlF2MmcKUXJTZGlWRlZLYzhiY0x5RVZLM0JFeCtZOUM1MllJdGRQN
XF0eWd5L3AxWmJqM2U0MVo1NVNaSS80UEdYSkhwc214Y1BiZTlUbUpFcgo1QSsrV1hrSGVMdVhsZlNmYWRS
WWh3cXA0OHkyV0JtZkppR3h4Rm1Oc2tGMXdLMXB6cHdBQ1BJMi96N3dvUThhckJUOXBtQVBBZ01CCkFBR2p
RekJCTUIwR0ExVWREZ1FXQkJUWk43Tk9CZjNaejU4U0ZxNjJpUy9ySlRxSUhEQVBCZ05WSFE4QkFmOEVCUU
1EQndZQU1BOEcKQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBSEpnbHJmS
jNOZ3BYaU9GWDdLekxYYjdpTmNYL250dApSYmoyaFd5Zkl2d3FFQ0xzcXJrdzlxdFkxamtRTVprcEFMMkpa
a0g3ZE42UndSZ0xuN1ZoeTUwNnZ2V29sS01pVlc0WFNmL1NLZkU0CkpsM3ZwYW82K1hGNzV0cFlIZE4wd2d
INlBtbFlYNjNMYUw0VUxwdHN3TGJjb0NiNmR4cmlKTm9hTitCbnJkRnpndzJsR2gxdUVwSisKaEdJQUY3Mj
hKUmhYOHRlcGIxbUl2RFMzTG9WNG5aYmNGTU1zaWxLYmxveFNaajJHRm90SHVGRUpqT3A5elloeXMyQXpzZ
kFLUk84UAo5UWszaUNRT0xHc2dPcUw2RWZKQU5aeEVhR003ckROdlk3d3N1L0xTeTNaOWZZallIY2dGSFc2
OGxLbG1qSGR4eC9xUitpOVJudWs1ClVyYm5CRUk9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClN3aXN
zU2lnbiBHb2xkIENBIC0gRzIKPT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQV
RFLS0tLS0KTUlJRnVqQ0NBNktnQXdJQkFnSUpBTHRBSEVQMVhrK3dNQTBHQ1NxR1NJYjNEUUVCQlFVQU1FV
XhDekFKQmdOVkJBWVRBa05JTVJVdwpFd1lEVlFRS0V3eFRkMmx6YzFOcFoyNGdRVWN4SHpBZEJnTlZCQU1U
RmxOM2FYTnpVMmxuYmlCSGIyeGtJRU5CSUMwZ1J6SXdIaGNOCk1EWXhNREkxTURnek1ETTFXaGNOTXpZeE1
ESTFNRGd6TURNMVdqQkZNUXN3Q1FZRFZRUUdFd0pEU0RFVk1CTUdBMVVFQ2hNTVUzZHAKYzNOVGFXZHVJRU
ZITVI4d0hRWURWUVFERXhaVGQybHpjMU5wWjI0Z1IyOXNaQ0JEUVNBdElFY3lNSUlDSWpBTkJna3Foa2lHO
XcwQgpBUUVGQUFPQ0FnOEFNSUlDQ2dLQ0FnRUFyK1R1Zm9za0RoSnVxVkF0RmtRN2twSmN5cmhkaEpKQ0V5
cThaVmVDUUQ1WEpNMVFpeVVxCnQyLzg3NkxRd0I4Q0pFb1RsbzhqRStZb1dBQ2pSOGNHcDRRaks3dTlsaXQ
vVmN5THdWY2ZEbUpsRDkwOVZvcHoycTUrYmJxQkhINUMKakNBMTJVTk5oUHFFMjFJczh3NG5kd3RydnhFdm
NuaWZMdGcrNWhnM1dpcHkrZHBpa0pLVnloK2M2Yk04Szh2ekFSTy9Xcy9CdFFwZwp2ZDIxbVdSVHVLQ1dzM
i9pSm5lUmpPQmlFQUtmTkErazFaSXpVZDYramJxRWVtQThhdHVmSyt6ZTNnRS9iazNsVUliTHRLL3RSRURG
CnlscU0ydElyZktqdXZxYmxDcW9PcGQ4RlVyZFZ4eUpkTW1xWGwyTVQyOG5iZVRaN2hUcEt4VktKK1NUbm5
YZXBndjlWSEtWeGFTdlIKQWlUeXN5YlVhOW9FVmVYQkNzZHRNRGVRS3VTZUZETmVGaGRWeFZ1MXl6U0prdk
dkSm8raEI5VEdzbmhRMnd3TUMzd0xqRUhYdWVuZApqSWozbzAyeU1zellGOXJOdDg1bW5kVDlYdis5bHo0c
GRlZCtwMkpZcnlVMHBVSEhQYndOVU1vREF3OElXaCtWYzNoaXY2OXlGR2tPCnBlVUREbmlPSmloQzhBY0xZ
aUFRWnpsRytxa0R6QVE0ZW1idklJTzFqRXBXanBFQS9JNWNndDZJb01QaWFHNTlqZTg4M1dYMFhheFIKN3l
TQXJxcFdsMi81clgzYVlUK1lkenlsa2JZY2pDYmFaYUlKYmNIaVZPTzV5a3hNZ0k5M2UyQ2FIdCsyOGtnZU
RycE9WRzJZNE9HaQpHcUozVU0vRVk1THNSeG1kNitacnpzRUNBd0VBQWFPQnJEQ0JxVEFPQmdOVkhROEJBZ
jhFQkFNQ0FRWXdEd1lEVlIwVEFRSC9CQVV3CkF3RUIvekFkQmdOVkhRNEVGZ1FVV3lWN2xxUmxVWDY0T2ZQ
QWVHWmU2RHJuOE80d0h3WURWUjBqQkJnd0ZvQVVXeVY3bHFSbFVYNjQKT2ZQQWVHWmU2RHJuOE80d1JnWUR
WUjBnQkQ4d1BUQTdCZ2xnaFhRQldRRUNBUUV3TGpBc0JnZ3JCZ0VGQlFjQ0FSWWdhSFIwY0RvdgpMM0psY0
c5emFYUnZjbmt1YzNkcGMzTnphV2R1TG1OdmJTOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnSUJBQ2U2NDVSO
DhhN0EzaGZtCjVkalY5VlN3Zy9TN3pWNEZlMCtmZFdhdlBPaFdmdnh5ZURnRDJTdGlHd0M1K09sZ3pjek9V
WXJIVURGdTRVcCtHQzlwV2JZOVpJRXIKNDRPRTVpS0hqbjNnN2dLWlliZ2U5TGdyaUJJV2hNSXhremlXTWF
hNU8xTS93eVNUVmx0cGt1ekZ3YnM0QU9Qc0Y2bTQzTWQ4QVlPZgpNa2U2VWlJMEhUSjZDVmFuZkNVMnFUMU
wyc0NDYndxN0VzaUhTeWNSK1I0dHg1TS9udHRmSm10UzJTNks4UlRHUkkwVnFiZS92ZDZtCkd1NnVMZnRJZ
HhmK3UreXZHUFVxVWZBNWhKZVZiRzRid3l2RWRHQjVKYkFLSjkvZlh0STV6MFY5UWt2ZnN5d2V4Y1pkeWxV
Nm9KeHAKbW8vYTc3S3dQSitIYkJJclpYQVZVakVhSk05dk1TTlFINHhQanlQRGRFRmpIRldvRk4wKzRGRlF
6L0ViTUZZT2tyQ0NoZGlEeXlKawp2QzI0SmRWVW9yZ0c2cTJTcENTZ3dZYTFTaE5xUjg4dUMxYVZWTXZPbX
R0cXRLYXkyMEVJaGlkMzkycWdRbXdMT003WGRWQXlrc0xmCkt6QWlTTkRWUVRnbFhhVHBYWi9HbEhYUVJmM
HdsME9Qa0tzS3g0WnpZRXBwTGQ2bGVOY0cybXFlU3o1M09pQVRJZ0hRdjJpZVkyQnIKTlUwTGJicWhQY0NU
NEg4anMxV3RjaVZPUnZuU0Z1K3daTUVCbnVuS29HcVlEcy9ZWVBJdlNiamtRdUU0TlJiMHlHNVA5NEZXNkx
xagp2aU92cnYxdkErQUNPekIyK2h0dFFjOEJzZW00eVdiMDJ5YnpPcVIwOGtra1c4bXcwRmZCK2o1NjRaZk
oKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyCj09PT09PT09P
T09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRnZUQ0NBNldnQXdJQkFn
SUlUeHZVTDFTN0wwc3dEUVlKS29aSWh2Y05BUUVGQlFBd1J6RUxNQWtHQTFVRUJoTUNRMGd4RlRBVApCZ05
WQkFvVERGTjNhWE56VTJsbmJpQkJSekVoTUI4R0ExVUVBeE1ZVTNkcGMzTlRhV2R1SUZOcGJIWmxjaUJEUV
NBdElFY3lNQjRYCkRUQTJNVEF5TlRBNE16STBObG9YRFRNMk1UQXlOVEE0TXpJME5sb3dSekVMTUFrR0ExV
UVCaE1DUTBneEZUQVRCZ05WQkFvVERGTjMKYVhOelUybG5iaUJCUnpFaE1COEdBMVVFQXhNWVUzZHBjM05U
YVdkdUlGTnBiSFpsY2lCRFFTQXRJRWN5TUlJQ0lqQU5CZ2txaGtpRwo5dzBCQVFFRkFBT0NBZzhBTUlJQ0N
nS0NBZ0VBeFBHSGY5TjRNZmM0eWZqRG1VTzh4L2U4TitkT2NicExqNlZ6SFZ4dW1LNERWNjQ0Ck4wTXZGej
BmeU01b0VNRjRyaGtES3hENkxIbUQ5dWk1YUxsVjhnUkVwem41L0FTTEh2R2lUU2Y1WVh1NnQrV2lFN2JyW
VQ3UWJOSG0KKy9wZTdSMjBucUExVzZHU3kvQkprdjZGQ2dVKzV0a0w0ays3M0pVMy9KSHBNalVpMFI4NlRp
ZUZuYkFWbERMYVlRMUhUV0JDcnBKSAo2SU5hVUZqcGlvdTVYYUhjM1psS0h6Wm51MGprZzdZMzYwZzZydzl
uanhjSDZBVEs3Mm94aDlUQXR2bVVjWHRuWkxpMmtVcENlMlV1Ck1Hb005WkR1bGVieXpZTHMyYUZLN1BheV
MrVkZoZVp0ZUpNRUxweUNiVGFweERGa0g0YURDeXIwTlFwNHlWWFBRYkJINlRDZm1iNWgKcUFhRXVTaDZYe
mpaRzZrNHNJTi9jOEhETzBncWdnOGhtN2pNcURYRGhCdURzejYrcEpWcEFUcUpBSGdFMmNuMG1SbXJWbjVi
aTRZNQpGWkdrRUN3Sk1vQmdzNVBBS3JZWUM1MStqVW55RUVwLytkVkdMeG1TbzVtbkpxeTdqRHptRHJ4SEI
5eHpVZkZ3WkM4SStiUkhIVEJzClJPb3BONFdTYUdhOGd6aitlemt1MDFEd0gvdGVZTGFwcHZvblFmR2JHSE
x5OVlSMFNzbG54RlN1U0dUZmpORnVzQjNoQjQ4SUhwbWMKY2VsTTJLWDNSeElmZE5GUm5vYnp3cUlqUUF0e
jIwdW01M01Hak1HZzZjRlpyRWI2NWkvNHozR2NSbTI1eEJXTk9Ia0RSVWp2eEYzWApDTzZIT1NLR3NnMFBX
RVAzY2FsSUx2M3ExaDhDQXdFQUFhT0JyRENCcVRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RHdZRFZSMFRBUUg
vCkJBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUY2RE53ZVJCdGpwYk84dEZuYjBjd3BqNmhsZ3dId1lEVlIwak
JCZ3dGb0FVRjZETndlUkIKdGpwYk84dEZuYjBjd3BqNmhsZ3dSZ1lEVlIwZ0JEOHdQVEE3QmdsZ2hYUUJXU
UVEQVFFd0xqQXNCZ2dyQmdFRkJRY0NBUllnYUhSMApjRG92TDNKbGNHOXphWFJ2Y25rdWMzZHBjM056YVdk
dUxtTnZiUzh3RFFZSktvWklodmNOQVFFRkJRQURnZ0lCQUhQR2dlQW4waTBQCjRKVXc0cHBCZjFBc1gxOWl
ZYW1HYW1rWURIUkoxbDJFNmtGU0dHOVlyVkJXSUdyR3ZTaHBXSkhja1JFMXFUb2R2QnFsWUo3WUgzOUYKa1
duWmZydDRjc0VHRHlyT2o0VndZYXlnelF1NE9TbFdoREpPaHJzOXhDcloxeDl5N3Y1Um9TSkJzWEVDWXhxQ
3NHS3JYbGNTSDkvTAozWFdnd0YxNWtJd2I0RkRtM2pIK21IdHdYNldRMkszNEFyWnYwMkRkUUVzaXhUMnRP
bnFmR2hwSGtYa3p1b0xjTW1rRGxtNGZTL0J4Ci91Tm5jcUN4djF5TDVQcVpJc2VFdVJ1Tkk1Yy83U1hnejJ
XNzlXRUU3OTBlc2xwQklscWhuMTBzNkZ2SmJha01ESGlxWU1aV2p3RmEKREdpOGFSbDV4QjkrbHdXL3hla2
tVVjdVMVV0VDdka2pXallEWmFQQkE2MUJNUE5HRzRXUXIyVzExYkhrRmx0NGRSMlhlbTFacVNxUAplOTdEa
DRrUW1VbHplTWc5dlZFMWRDclY4WDVwR3lxN083MGx1SnBhUFhKaGtHYUg3Z3pXVGRRUmRBdHEvZ3NEL0tO
VlY0bitTc3V1Cld4Y0Z5UEtOSXpGVE9OSXRhaitDdVkwSWF2ZGVRWFJ1d3hGK0I2d3BZSkUvT01wWEVBMjl
NQy9IcGVaQm9OcXVCWWVhb0tSbGJFd0oKREltNnVOTzV3Sk9LTVBxTjVacHJGUUZPWjZyYVlsWStoQWhtMH
NRMmZhYytFUHlJNE5TQTVRQzlxdk5PQnFONmF2bGljdU1KVCt1YgpEZ0VqOForN2ZOemNiQkdYSmJMeXRHT
VUwZ1lxWjR5RDljN3FCOWlhYWg3czVBcTdLa3pyQ1dBNXpzcGkyQzV1Ci0tLS0tRU5EIENFUlRJRklDQVRF
LS0tLS0KCkdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkKPT09PT09PT09PT09PT0
9PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRGZEQ0
NBbVNnQXdJQkFnSVFHS3kxYXYxcHRoVTZZMnl2M
nZyRW9UQU5CZ2txaGtpRzl3MEJBUVVGQURCWU1Rc3dDUVlEVlFRRwpFd0pWVXpFV01CUUdBMVVFQ2hNTlIy
VnZWSEoxYzNRZ1NXNWpMakV4TUM4R0ExVUVBeE1vUjJWdlZISjFjM1FnVUhKcGJXRnllU0JEClpYSjBhV1p
wWTJGMGFXOXVJRUYxZEdodmNtbDBlVEFlRncwd05qRXhNamN3TURBd01EQmFGdzB6TmpBM01UWXlNelU1Tl
RsYU1GZ3gKQ3pBSkJnTlZCQVlUQWxWVE1SWXdGQVlEVlFRS0V3MUhaVzlVY25WemRDQkpibU11TVRFd0x3W
URWUVFERXloSFpXOVVjblZ6ZENCUQpjbWx0WVhKNUlFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1
TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCCkNnS0NBUUVBdnJnVmUvL1VmSDFucllOa2U
4aENVeTNmOW9RSUlHSFdBVmxxbkVRUnIrOTIvWlYrem1Fd3UzcURYd0s5QVdiSzdoV04KYjZFd25MMmhoWj
ZVT3ZOV2lBQXh6OWp1YXBZQzJlMERqUHQxYmVmcXVGVVdCUmFhOU9CZXNZakFaSVZjRlUySXg3ZTY0SFhwc
lFVOQpuY2VKU09DN0tNZ0Q0VENUWkY1U3dGbHdJalZYaUlyeGxRcUQxN3d4Y3dFMDdlOUdjZUJyQXFnMWNt
dVhtMmJneXh4NVg5Z2FCR2dlClJ3TG1uV0RpTnBjQjM4NDFrdCsrWjhkdGQxazdqNTNXa0JXVXZFSTBFTUU
1K2JFblBuN1dpblhGc3ErVzA2TGVtK1NZdm4zaDZZR3QKdG0vODF3N2E0RFN3RFJwMzUrTUltTzlZK3B5RX
R6YXZ3dCtzMHZRUUJuQnhOUUlEQVFBQm8wSXdRREFQQmdOVkhSTUJBZjhFQlRBRApBUUgvTUE0R0ExVWREd
0VCL3dRRUF3SUJCakFkQmdOVkhRNEVGZ1FVTE5WUVFaY1ZpL0NQTm1GYlN2dHIyWm5KTTVJd0RRWUpLb1pJ
Cmh2Y05BUUVGQlFBRGdnRUJBRnB3Znl6ZHR6UlA5WVpScVNhK1M3aXE4WEVOM0dISG9PbzBIbnAzRHdRMTZ
DZVBiSkMva1JZa1JqNUsKVHM0ckZ0VUxVaDM4SDJlaUFrVXhUODd6K2dPbmVaMVRhdG5hWXpyNGdOZlRtZU
dsNGI3VVZYR1lOVHEraytxdXJVS3lrRy9nL0NGTgpOV016aVVuV20wN0t4K2RPQ1FEMzJzZnZtV0taZDdhV
klsNktvS3YwdUhpWXlqZ1ptY2x5bm5qTlM2eXZHYUJ6RWkzOHdrRzZnWkhhCkZsb3h0L20wY1lBU1NKbHlj
MXBaVThGalVqUHRwOG5TT1FKdyt1Q3hRbVlwcXB0UjdUQlVJaFJmMmFzZHdlU1U4UGoxSy9mcXluaEcKMXJ
pUi9hWU5LeG9VQVQ2QThFS2dsUWRlYmMzTVM2UkZqYXNTNkxQZVd1V2dmT2dQSWgxYTZWaz0KLS0tLS1FTk
QgQ0VSVElGSUNBVEUtLS0tLQoKdGhhd3RlIFByaW1hcnkgUm9vdCBDQQo9PT09PT09PT09PT09PT09PT09P
T09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFSURDQ0F3aWdBd0lCQWdJUU5FN1ZWeURWN2V4
SjlDL09OOXNyYlRBTkJna3Foa2lHOXcwQkFRVUZBRENCcVRFTE1Ba0dBMVVFCkJoTUNWVk14RlRBVEJnTlZ
CQW9UREhSb1lYZDBaU3dnU1c1akxqRW9NQ1lHQTFVRUN4TWZRMlZ5ZEdsbWFXTmhkR2x2YmlCVFpYSjIKYV
dObGN5QkVhWFpwYzJsdmJqRTRNRFlHQTFVRUN4TXZLR01wSURJd01EWWdkR2hoZDNSbExDQkpibU11SUMwZ
1JtOXlJR0YxZEdodgpjbWw2WldRZ2RYTmxJRzl1YkhreEh6QWRCZ05WQkFNVEZuUm9ZWGQwWlNCUWNtbHRZ
WEo1SUZKdmIzUWdRMEV3SGhjTk1EWXhNVEUzCk1EQXdNREF3V2hjTk16WXdOekUyTWpNMU9UVTVXakNCcVR
FTE1Ba0dBMVVFQmhNQ1ZWTXhGVEFUQmdOVkJBb1RESFJvWVhkMFpTd2cKU1c1akxqRW9NQ1lHQTFVRUN4TW
ZRMlZ5ZEdsbWFXTmhkR2x2YmlCVFpYSjJhV05sY3lCRWFYWnBjMmx2YmpFNE1EWUdBMVVFQ3hNdgpLR01wS
URJd01EWWdkR2hoZDNSbExDQkpibU11SUMwZ1JtOXlJR0YxZEdodmNtbDZaV1FnZFhObElHOXViSGt4SHpB
ZEJnTlZCQU1UCkZuUm9ZWGQwWlNCUWNtbHRZWEo1SUZKdmIzUWdRMEV3Z2dFaU1BMEdDU3FHU0liM0RRRUJ
BUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3MKb1BEN2dGblVuTWVrejUyaFdYTUpFRVVNRFN4dWFQRnNXMGhvU1
ZrMy9Bc3pHY0ozZjh3UUxaVTBIT2JyVFFtbkhOSzR5WmMyQXJlSgoxQ1JmQnNETVJKU1VqUUppYit0YTNSR
05LSnBjaEpBUWVnMjlkR1l2YWppZzR0VlVST3NkQjU4SHVtL3U2ZjFPQ3luMVBvU2dBZkdjCnEvZ2Nmb21r
NktIWWNXVU5vMUY3N3J6U0ltQU51VnVkMzdyOFVWc0xyNWl5NlM3cEJPaGloOTRyeU5kT3dVeGtIdDNQaDF
pNlNrL0sKYUFjZEhKMUt4dFV2a2N4OGNYSWN4Y0JuNnpMOXlaSmNsTnFGd0p1L1UzMHJDZlNNblpFZmwycF
N5OTRKTnFSMzJIdUhVRVRWUG00cAphZnM1U1NZZUNhV0FlMEF0NitnbmhjbitZZjErNW55WEhkV2RBZ01CQ
UFHalFqQkFNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEClZSMFBBUUgvQkFRREFnRUdNQjBHQTFVZERn
UVdCQlI3VzBYUHI4N0xldjB4a2hwcXR2Tkc2MWRJVURBTkJna3Foa2lHOXcwQkFRVUYKQUFPQ0FRRUFlUkh
BUzdPUnR2enc2V2ZVRFc1RnZsWG9rOUxPQXovdDJpV3dIVmZMSGpwMm9FenNVSGJvWkhJTXBLbnh1SXZXMW
9lRQp1ekxsUVJIQWQ5bXpZSjNyRzlYUmJrUkVxYVlCN0ZWaUhYZTRYSTVJU1h5Y08xY1JySzF6TjQ0dmVGe
VFhRWZaWUdEbS9BYzlJaUFYCnhQY1c2Y1RZY3ZuSWMzemZGaThWcVQ3OWFpZTJvZXRhdXBnZjFlTk5aQXFk
RThoaHV2VTVISWU2dUwxN0luLzIvcXhBZWVXc0VHODkKanh0NWRvdkVON01oR0lUbE5nRHJZeUNadWVuK01
3UzdRY2pCQXZsRVl5Q2VnYzVDMDlZL0xIYlRZNXhaM1krbTRRNmdMa0gzTHBWSAp6N3o5TS9QMkMyRitmcE
VyZ1VmQ0p6RHVweEJkTjQ5Y09TdmtCUEI3alZhTWFBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKV
mVyaVNpZ24gQ2xhc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEc1Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0
tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRTB6Q0NBN3VnQXdJQkFnSVFHTnJSbmlaOTZMdEtJVmpOek
dzN1NqQU5CZ2txaGtpRzl3MEJBUVVGQURDQnlqRUxNQWtHQTFVRQpCaE1DVlZNeEZ6QVZCZ05WQkFvVERsW
mxjbWxUYVdkdUxDQkpibU11TVI4d0hRWURWUVFMRXhaV1pYSnBVMmxuYmlCVWNuVnpkQ0JPClpYUjNiM0py
TVRvd09BWURWUVFMRXpFb1l5a2dNakF3TmlCV1pYSnBVMmxuYml3Z1NXNWpMaUF0SUVadmNpQmhkWFJvYjN
KcGVtVmsKSUhWelpTQnZibXg1TVVVd1F3WURWUVFERXp4V1pYSnBVMmxuYmlCRGJHRnpjeUF6SUZCMVlteH
BZeUJRY21sdFlYSjVJRU5sY25ScApabWxqWVhScGIyNGdRWFYwYUc5eWFYUjVJQzBnUnpVd0hoY05NRFl4T
VRBNE1EQXdNREF3V2hjTk16WXdOekUyTWpNMU9UVTVXakNCCnlqRUxNQWtHQTFVRUJoTUNWVk14RnpBVkJn
TlZCQW9URGxabGNtbFRhV2R1TENCSmJtTXVNUjh3SFFZRFZRUUxFeFpXWlhKcFUybG4KYmlCVWNuVnpkQ0J
PWlhSM2IzSnJNVG93T0FZRFZRUUxFekVvWXlrZ01qQXdOaUJXWlhKcFUybG5iaXdnU1c1akxpQXRJRVp2Y2
lCaApkWFJvYjNKcGVtVmtJSFZ6WlNCdmJteDVNVVV3UXdZRFZRUURFenhXWlhKcFUybG5iaUJEYkdGemN5Q
XpJRkIxWW14cFl5QlFjbWx0CllYSjVJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNUlDMGdSelV3
Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXcKZ2dFS0FvSUJBUUN2SkFnSUtYbzFubUFNcXVkTE8
wN2NmTHc4UlJ5N0srRCtLUUw1VndpalpJVVZKL1h4cmNneGlWMGk2Q3FxcGtLegpqL2k1VmJleHQwdXovbz
krQjFmczcwUGJabUlWWWM5Z0RhVFkzdmpndzJJSVBWUVQ2MG5LV1ZTRkp1VXJqeHVmNi9XaGtjSXpTZGhEC
lkycFNTOUtQNkhCUlRkR0phWHZIY1BhejNCSjAyM3RkUzFiVGxyOFZkNkd3OUtJbDhxOGNrbWNZNWZRR0JP
K1F1ZVFBNU4wNnRSbi8KQXJyMFBPN2dpK3MzaSt6MDE2enk5dkE5cjkxMWtUTVpIUnhBeTNRa0dTR1QyUlQ
rckNwU3g0L1ZCRW5raldOSGlEeHBnOHYrUjcwcgpmay9GbGE0T25kVFJROEJuYytNVUNIN2xQNTl6dURNS3
oxMC9OSWVXaXU1VDZDVVZBZ01CQUFHamdiSXdnYTh3RHdZRFZSMFRBUUgvCkJBVXdBd0VCL3pBT0JnTlZIU
ThCQWY4RUJBTUNBUVl3YlFZSUt3WUJCUVVIQVF3RVlUQmZvVjJnV3pCWk1GY3dWUllKYVcxaFoyVXYKWjJs
bU1DRXdIekFIQmdVckRnTUNHZ1FVaitYVEdvYXNqWTVydzgrQWF0UklHQ3g3R1M0d0pSWWphSFIwY0Rvdkw
yeHZaMjh1ZG1WeQphWE5wWjI0dVkyOXRMM1p6Ykc5bmJ5NW5hV1l3SFFZRFZSME9CQllFRkgvVFphZkMzZX
k3OERBSjgwTTUrZ0t2TXpFek1BMEdDU3FHClNJYjNEUUVCQlFVQUE0SUJBUUNUSkVvd1gyTFAyQnFZTHozc
TNKa3R2WGYycFhraU9PekVwNkI0RXExaURrVndaTVhubDJZdG1BbCsKWDYvV3pDaGw4Z0dxQ0JwSDN2bjVm
SkphQ0drZ0RkaytiVzQ4RFc3WTVnYVJRQmk1K01IdDM5dEJxdUNXSU1uTlpCVTRnY21VN3FLRQpLUXNUYjQ
3YkROMGxBdHVraXhsRTBrRjZCV2xLV0U5Z3luNkNhZ3NDcWlVWE9iWGJmK2VFWlNxVmlyMkczbDZCRm9NdE
VNemUvYWlDCkttMG9IdzBMeE9YbkdpWVo0ZlFSYnhDMWxmem5RZ1V5Mjg2ZFVWNG90cDZGMDF2dnBYMUZRS
EtPdHc1ckRnYjdNelZJY2JpZEo0dkUKWlY4TmhuYWNSSHIybFZ6MlhUSUlNNlJVdGhnL2FGenlRa3FGT0ZT
RFg5SG9MUEtzRWRhbzdXTnEKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKU2VjdXJlVHJ1c3QgQ0EKPT0
9PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR1RENDQXFDZ0F3SUJBZ0lRRF
BDT1hBZ1dwYTFDZi9Eckp4aFowREFOQmdrcWhraUc5dzBCQVFVRkFEQklNUXN3Q1FZRFZRUUcKRXdKVlV6R
WdNQjRHQTFVRUNoTVhVMlZqZFhKbFZISjFjM1FnUTI5eWNHOXlZWFJwYjI0eEZ6QVZCZ05WQkFNVERsTmxZ
M1Z5WlZSeQpkWE4wSUVOQk1CNFhEVEEyTVRFd056RTVNekV4T0ZvWERUSTVNVEl6TVRFNU5EQTFOVm93U0R
FTE1Ba0dBMVVFQmhNQ1ZWTXhJREFlCkJnTlZCQW9URjFObFkzVnlaVlJ5ZFhOMElFTnZjbkJ2Y21GMGFXOX
VNUmN3RlFZRFZRUURFdzVUWldOMWNtVlVjblZ6ZENCRFFUQ0MKQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ
2dFUEFEQ0NBUW9DZ2dFQkFLdWtnZVdWemZYMkZJN0NUOHJVNG5pVldKeEI0UTJaUUNRWApPWkV6WnVtKzRZ
T3ZZbHlKMGZ3a1cyR3o0QkVSUVJ3ZGJ2QzR1L2plcDRHNnBrakdueDI5dm82cFFUNjRsTzBwR3RTTzBnTWR
BKzl0CkRXY2NWOWNHcmNySTlmNE9yMllsU0FTV0MxMmp1aGJEQ0UvUlJ2Z1VYUExJWGdHWmJmMkl6SWFvd1
c4eFFteFNQbWpMOHhrMDM3dUgKR0ZhQUpzVFEzTUJ2Mzk2Z3dwRVdvR1FSUzBTOEh2Ym4rbVBlWnF4MnBIR
2o3RGFVYUhwM3BMSG5EaStCZXVLMWNvYnZvbXVMOEEvYgowMWsvdW5LOFJDU2M0M096OTY5WEwwSW1uYWww
dWdCUzhrdk5VM3hIQ3phRkRtYXBDSmNXTkZmQlp2ZUE0KzF3Vk1lVDRDNG9GVm1ICnVyc0NBd0VBQWFPQm5
UQ0JtakFUQmdrckJnRUVBWUkzRkFJRUJoNEVBRU1BUVRBTEJnTlZIUThFQkFNQ0FZWXdEd1lEVlIwVEFRSC
8KQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVUWpLMkZ2b0UvZjVkUzNyRC9mZE1RQjFhUTY4d05BWURWUjBmQ
kMwd0t6QXBvQ2VnSllZagphSFIwY0RvdkwyTnliQzV6WldOMWNtVjBjblZ6ZEM1amIyMHZVMVJEUVM1amNt
d3dFQVlKS3dZQkJBR0NOeFVCQkFNQ0FRQXdEUVlKCktvWklodmNOQVFFRkJRQURnZ0VCQUREdFQwcmhXRHB
TY2x1MXBxTmxHS2E3VVR0MzZaM3EwNTljNEVWbGV3M0tXK0p3VUxLVUJSU3UKU2NlTlFRY1NjNVIrRENNaC
9id1FmMkFRV25MMW1BNnM3TGwvM1hwdlhkTWM5UCtJQldsQ3FRVnh5TGVzSnVndXRJeHEvM0hjdUxIZgptY
ng4SVZRcjVGaWl1MWNwcnA2cG94a21ENWt1Q0xEdi9XblBtUm9KamVPbm55dkpOalI3SkxONFRKVVhwQVlt
SHJaa1VqWmZZR2ZaCm5NVUZkQXZuWnlQU0NQeUk2YTZMZitFdzlEZCsvY1l5MmkyZVJEQXdiTzRIM3RJMC9
OTC9RUFpMOUdaR0JsU204aklLWXlZd2E1dlIKM0l0SHV1RzUxV0xRb3FEMFp3VjRLV01hYndUVytNWk1vNX
F4TjdTTjVTaExIWjRzd3Job3ZPMEM3akU9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClNlY3VyZSBHb
G9iYWwgQ0EKPT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRHZEQ0NB
cVNnQXdJQkFnSVFCMVlpcE9qVWlvbE45QlBJOFBqcXBUQU5CZ2txaGtpRzl3MEJBUVVGQURCS01Rc3dDUVl
EVlFRRwpFd0pWVXpFZ01CNEdBMVVFQ2hNWFUyVmpkWEpsVkhKMWMzUWdRMjl5Y0c5eVlYUnBiMjR4R1RBWE
JnTlZCQU1URUZObFkzVnlaU0JICmJHOWlZV3dnUTBFd0hoY05NRFl4TVRBM01UazBNakk0V2hjTk1qa3hNa
k14TVRrMU1qQTJXakJLTVFzd0NRWURWUVFHRXdKVlV6RWcKTUI0R0ExVUVDaE1YVTJWamRYSmxWSEoxYzNR
Z1EyOXljRzl5WVhScGIyNHhHVEFYQmdOVkJBTVRFRk5sWTNWeVpTQkhiRzlpWVd3ZwpRMEV3Z2dFaU1BMEd
DU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3ZOUzdZckd4VmFRWng1Uk5vSkxOUDJNd2hSL2
p4CllEaUppUVBwdmVwZVJsTUozRnoxV3VqM1JTb0M2ekZoMXlrelRNN0hmQW8zZmcrNk1wamhIWmV2ajhmY
3lUaVc4OXNhL0ZIdGFNYlEKYnFSOEpOR3VRc2lXVUdNdTRQNTEvcGluWDBrdWxlTTVNMlNPSHFSZmtOSm5Q
TExaL2tHNVZhY0pqbklGSG92ZFJJV0NRdEJKd0IxZwo4TkVYTEpYcjlxWEJrcVBGd3FjSVlBMWdCQkNXZVo
0V05PYXB0dm9sUlRuSUhtWDVrL1dxOFZMY21aZzlwWVlhRERVeitrdWxCQVlWCkhER0E3Nm9ZYThKNzE5ck
8rVE1nMWZXOWFqTXRnUVQ3c0Z6VW5LUGlYQjNqcVVKMVhudlVkKzg1VkxySkNoZ2JFcGxKTDRoTC9WQmkKM
FhQbmozcERBZ01CQUFHamdaMHdnWm93RXdZSkt3WUJCQUdDTnhRQ0JBWWVCQUJEQUVFd0N3WURWUjBQQkFR
REFnR0dNQThHQTFVZApFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRks5RUJNSkJma2lEMjA0NUF1enN
oSHJtenNta01EUUdBMVVkSHdRdE1Dc3dLYUFuCm9DV0dJMmgwZEhBNkx5OWpjbXd1YzJWamRYSmxkSEoxYz
NRdVkyOXRMMU5IUTBFdVkzSnNNQkFHQ1NzR0FRUUJnamNWQVFRREFnRUEKTUEwR0NTcUdTSWIzRFFFQkJRV
UFBNElCQVFCakdnaEFmYVJlVXcxMzJIcXVIdzBMVVJZRDd4aDh5T092YWxpVEZHQ1Jzb1RjaUU2KwpPWW82
OCthQ2lWMEJON09ySktRVkRwSTFXa3BFWGs1WCtuWE9IMGpPWnZROFFDYVNtR3diN2lSR0RCZXpVcVhicFp
HUnp6ZlRiK2NuCkNEcE9HUjg2cDFoY0Y4OTVQNHZrcDlNbUk1MG1EMWhwL0VkK3N0Q05pNU8vS1U5RGFYUj
JaMHZQQjR6bUF2ZTE0YlJEdFVzdEZKLzUKM0NZTnY2WkhkQWJZaU5FNktUQ0V6dEk1Z0dJYnFNZFhTYnhxV
lZGbkZVcStOUWZrMVhXWU4za3dGTnNwbld6RmFjeEhWYUl3OTh4YwpmOExEbUJ4clRoYUE2M3A0WlVXaUFC
cXZEQTFWWkRSSXVKSzU4YlJRS2ZKUEl4L2FiS3dmUk9IZEkzaFJXOGNXCi0tLS0tRU5EIENFUlRJRklDQVR
FLS0tLS0KCkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQo9PT09PT09PT09PT09PT09PT09PT09PT
09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVIVENDQXdXZ0F3SUJBZ0lRVG9FdGlvS
mw0QXNDN2o0MUFrYmxQVEFOQmdrcWhraUc5dzBC
QVFVRkFEQ0JnVEVMTUFrR0ExVUUKQmhNQ1IwSXhHekFaQmdOVkJBZ1RFa2R5WldGMFpYSWdUV0Z1WTJobGM
zUmxjakVRTUE0R0ExVUVCeE1IVTJGc1ptOXlaREVhTUJnRwpBMVVFQ2hNUlEwOU5UMFJQSUVOQklFeHBiV2
wwWldReEp6QWxCZ05WQkFNVEhrTlBUVTlFVHlCRFpYSjBhV1pwWTJGMGFXOXVJRUYxCmRHaHZjbWwwZVRBZ
UZ3MHdOakV5TURFd01EQXdNREJhRncweU9URXlNekV5TXpVNU5UbGFNSUdCTVFzd0NRWURWUVFHRXdKSFFq
RWIKTUJrR0ExVUVDQk1TUjNKbFlYUmxjaUJOWVc1amFHVnpkR1Z5TVJBd0RnWURWUVFIRXdkVFlXeG1iM0p
rTVJvd0dBWURWUVFLRXhGRApUMDFQUkU4Z1EwRWdUR2x0YVhSbFpERW5NQ1VHQTFVRUF4TWVRMDlOVDBSUE
lFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1Ck1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBU
ThBTUlJQkNnS0NBUUVBMEVDTGkzTGprUnYzVWNFYlZBU1kwNm0vd2VhS1hUdUgKKzd1SXpnM2pMejhHbHZD
aUtWQ1pydHM3b1Zld2RGRnh6ZTFDa1UxQi9xbkkyR3FHZDBTN1dXYVhVRjYwMUN4d1JNL2FONVZDYVR3dwp
4SEd6VXZBaFRhSFl1amw4SEo2akpKM3lneGFZcWhaOFE1c1ZXN2V1TkpIKzFHSW1HRWFhUCt2QitmR1FWK3
VzZWcyTDIzSXdhbWJWCjRFYWpjTnhvMmY4RVNJbDMzclhwKzJkdFFlbThPYjB5MldJQzhiR29QVzQzbk9Jd
jR0T2lKb3ZHdUZWRGlPRWpQcVhTSkRscVI2c0EKMUtHenFTWCtEVCtuSGJyVFVjRUxwTnFzT085VlVDUUZa
VWFUTkU4dGphM0cxQ0VaMG83S0JXRnhCM05INVlvWkVyMEVUYzVPbktWSQpyTHNtOXdJREFRQUJvNEdPTUl
HTE1CMEdBMVVkRGdRV0JCUUxXT1dMeGt3Vk42UkFxVENwSWI1SE5scFcvekFPQmdOVkhROEJBZjhFCkJBTU
NBUVl3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekJKQmdOVkhSOEVRakJBTUQ2Z1BLQTZoamhvZEhSd09pOHZZM
0pzTG1OdmJXOWsKYjJOaExtTnZiUzlEVDAxUFJFOURaWEowYVdacFkyRjBhVzl1UVhWMGFHOXlhWFI1TG1O
eWJEQU5CZ2txaGtpRzl3MEJBUVVGQUFPQwpBUUVBUHBpZW0vWWI2ZGM1dDNpdUhYSVlTZE9INUVPQzZ6L0p
xdldvdGU5VmZDRlNaZm5WRGVGczlENk1rM09STGdMRVRnZHhiOENQCk9HRUlxQjZCQ3NBdklDOUJpNUhjU0
VXODhjYmV1blpyTThnQUxURkdUTzNubmMrSWxQOHp3RmJvSklZbXVOZzRPTjhxYTkwU3pNYy8KUnhkTW9zS
UdsZ25XMi80L1BFWkIzMWppVmc4OE84RWNrelhaT0ZLczdzanNMakJPbERXMEpCOUxlR25hOGdJNHpKVlNr
L0J3SlZtYwpJR2ZFN3ZtTFYySDBrblo5UDRTTlZiZm81YXpWOGZVWlZxWmErNUFjcjVQcjVSelVaNWRkQkE
2K0M0T21GNE81TUJLZ3hUTVZCYmtOCis4Y0ZkdVBZU28zOE5CZWp4aUVvdmpCRk1SN0hlTDVZWVRpc08rSU
JaUT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCk5ldHdvcmsgU29sdXRpb25zIENlcnRpZmljYXRlI
EF1dGhvcml0eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBD
RVJUSUZJQ0FURS0tLS0tCk1JSUQ1akNDQXM2Z0F3SUJBZ0lRVjhzemI4SmNGdVpIRmhmamtERm80REFOQmd
rcWhraUc5dzBCQVFVRkFEQmlNUXN3Q1FZRFZRUUcKRXdKVlV6RWhNQjhHQTFVRUNoTVlUbVYwZDI5eWF5Ql
RiMngxZEdsdmJuTWdUQzVNTGtNdU1UQXdMZ1lEVlFRREV5ZE9aWFIzYjNKcgpJRk52YkhWMGFXOXVjeUJEW
lhKMGFXWnBZMkYwWlNCQmRYUm9iM0pwZEhrd0hoY05NRFl4TWpBeE1EQXdNREF3V2hjTk1qa3hNak14Ck1q
TTFPVFU1V2pCaU1Rc3dDUVlEVlFRR0V3SlZVekVoTUI4R0ExVUVDaE1ZVG1WMGQyOXlheUJUYjJ4MWRHbHZ
ibk1nVEM1TUxrTXUKTVRBd0xnWURWUVFERXlkT1pYUjNiM0pySUZOdmJIVjBhVzl1Y3lCRFpYSjBhV1pwWT
JGMFpTQkJkWFJvYjNKcGRIa3dnZ0VpTUEwRwpDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRR
Gt2SDZTTUczRzJJNHJDN3hHenVBbmx0N2UrZm9TMHp3emM3TUVMN3h4CmpPV2Z0aUpnUGw5ZHpnbi9nZ3di
bWxGUUdpYUozZFZoWFJuY0VnOHRDcUpEWFJmUU5KSWc2blBQT0N3R0pnbDZjdmY2VURMNHdwUFQKYWFJanp
rR3h6T1RWSHpiUmlqcjRqR1BpRkZscDdRM1RmMnZvdUFQbFQycmxtR05wU0FXK0x2OHp0dW1YV1duNFp4bX
VrMkdXUkJYVApjckEvdkdwOTdFaC9qY09ycW5FclUybEJVelMxc0xuRkJnckVzRVgxUVYxdWlVVjdQVHNta
khUQzVkTFJmYklSMVB0WU1pS2FnTW5jCi9RenBmMTREbDg0N0FCU0hKM0E0cVk1dXN5ZDJtRkhnQmVNaHF4
clZoU0k4S2JXYUZzV0FxUFM3YXpDUEwwWUNvckVNSXVEVEFnTUIKQUFHamdaY3dnWlF3SFFZRFZSME9CQll
FRkNFd3lmc0ExMDZZMm9lcUt0Q25MckZBTWFkTU1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUApCZ05WSFJNQk
FmOEVCVEFEQVFIL01GSUdBMVVkSHdSTE1Fa3dSNkJGb0VPR1FXaDBkSEE2THk5amNtd3VibVYwYzI5c2MzT
nNMbU52CmJTOU9aWFIzYjNKclUyOXNkWFJwYjI1elEyVnlkR2xtYVdOaGRHVkJkWFJvYjNKcGRIa3VZM0pz
TUEwR0NTcUdTSWIzRFFFQkJRVUEKQTRJQkFRQzdya3ZudDFmcmY2b3R0M05IaFdyQjVLVWQ1T2M4NmZSWlp
YZTFlbHRhalNVMjRIcVhMampBVjJDRG1BYURuN2wyZW01UQo0THFJTFB4RnpCaXdtWlZSRHV3ZHVJai9oMU
FjZ3NMajRES0F2NkFMUjhqRE1lK1paektBVHhjaGVReHBYTjVlTks0Q3RTYnFVTjkvCkdHVXN5ZkpqNGFrS
C9ueHhIMnN6SkdvZUJmY0ZhTUJxRXNzdVhtSExyaWpUZnNLMFpwRW1Yend1SkYvTFdBL3JLT3l2RVpiejNI
dHYKd0tlSThsTjNzMkJlcnE0bzJqVXNielJGMHliaDN1eGJUeWRyRm55OVJBUVlnck9KZVJjUWNUMTZvaFp
POVFITnBHeGxhS0ZKZGx4RAp5ZGk4Tm1kc3BaUzExTXk1dldvMVZpSGUyTVByKzh1a1lFeXdWYUNnZTFleQ
otLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpXZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0Z
SBBdXRob3JpdHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0t
QkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFdlRDQ0E2V2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVV
GQURDQmhURUxNQWtHQTFVRUJoTUNWVk14SURBZUJnTlZCQW9NCkYxZGxiR3h6SUVaaGNtZHZJRmRsYkd4el
UyVmpkWEpsTVJ3d0dnWURWUVFMREJOWFpXeHNjeUJHWVhKbmJ5QkNZVzVySUU1Qk1UWXcKTkFZRFZRUUREQ
zFYWld4c2MxTmxZM1Z5WlNCUWRXSnNhV01nVW05dmRDQkRaWEowYVdacFkyRjBaU0JCZFhSb2IzSnBkSGt3
SGhjTgpNRGN4TWpFek1UY3dOelUwV2hjTk1qSXhNakUwTURBd056VTBXakNCaFRFTE1Ba0dBMVVFQmhNQ1Z
WTXhJREFlQmdOVkJBb01GMWRsCmJHeHpJRVpoY21kdklGZGxiR3h6VTJWamRYSmxNUnd3R2dZRFZRUUxEQk
5YWld4c2N5QkdZWEpuYnlCQ1lXNXJJRTVCTVRZd05BWUQKVlFRRERDMVhaV3hzYzFObFkzVnlaU0JRZFdKc
2FXTWdVbTl2ZENCRFpYSjBhV1pwWTJGMFpTQkJkWFJvYjNKcGRIa3dnZ0VpTUEwRwpDU3FHU0liM0RRRUJB
UVVBQTRJQkR3QXdnZ0VLQW9JQkFRRHViN1M5ZWVLUENDR2VPQVJCSmUrcld4eFRrcXh0bnQzQ3hDNUZsQU0
xCmlHZDBWK1BmakxpbmRvODc5NmpFMnlsakRwRm9Ob3FYam9weGFBa0g1T2pVRGsvNDFpdE1wQmI1NzBPWW
o3T2VVdDl0a1RtUE9MMTMKaTBOajY3ZVQvREJNSEFHVHRoUDc5NkVmdnlYaGREY3NIcVJlUEdqNFM3OE51U
jR1TnVpcDVLZjREOHVDZFh3MUxTTFd3cjhMODdUOApiSlZoSGxmWEJJRXlnMUo1NW9Oano3ZkxZNHNSNHIx
ZTYvYU43WlZ5S0xTc0VtTHBTalBtZ3pLdUJYV1Z2WVNWMnlwY200NHVETGlCCkswSG1PRmFmU1p0c2R2cUt
YZmNCZVlGOHdZTkFCZjV4L1F3L3pFNWdDUTVsUnhBdkFjQUZQNC80czBIdldrSitXZS9TbHd4bEFnTUIKQU
FHamdnRTBNSUlCTURBUEJnTlZIUk1CQWY4RUJUQURBUUgvTURrR0ExVWRId1F5TURBd0xxQXNvQ3FHS0doM
GRIQTZMeTlqY213dQpjR3RwTG5kbGJHeHpabUZ5WjI4dVkyOXRMM2R6Y0hKallTNWpjbXd3RGdZRFZSMFBB
UUgvQkFRREFnSEdNQjBHQTFVZERnUVdCQlFtCmxSa1EyZWlobDVILzNCblp0UVErMG5NS2FqQ0JzZ1lEVlI
wakJJR3FNSUduZ0JRbWxSa1EyZWlobDVILzNCblp0UVErMG5NS2FxR0IKaTZTQmlEQ0JoVEVMTUFrR0ExVU
VCaE1DVlZNeElEQWVCZ05WQkFvTUYxZGxiR3h6SUVaaGNtZHZJRmRsYkd4elUyVmpkWEpsTVJ3dwpHZ1lEV
lFRTERCTlhaV3hzY3lCR1lYSm5ieUJDWVc1cklFNUJNVFl3TkFZRFZRUUREQzFYWld4c2MxTmxZM1Z5WlNC
UWRXSnNhV01nClVtOXZkQ0JEWlhKMGFXWnBZMkYwWlNCQmRYUm9iM0pwZEhtQ0FRRXdEUVlKS29aSWh2Y05
BUUVGQlFBRGdnRUJBTGtWc1VTUnpDUEkKSzAxMzQvaWFleWNOelhLN21RREtmR1laVU1iVm1PMnJ2d05hNV
UzbEhzaFBjWmVHMWVNZC9aREpQSFYzVjNwOStONzAxTlgzbGVaMApiaDA4cm55ZDJ3SURCU3h4U3lVK0IrT
mVtdlZtRnltSUdqaWZ6NnBCQTRTWGE1TTRlc293UkJza1JEUFE1TkhjS0RqMEUwTTFOU2xqCnFIeWl0YTA0
cE8ydC9jYWFILytYYy83N3N6V25rNGJHZHBFQTVxeFJGc1FuTWx6YmM5cWxrMWVPUG0wMUpnaFoxZWRFMTN
ZZ1krZXMKRTJmRGJiRndSbnpWbGhFOWlXOWRxS0hyalFyYXd4MHpiS1BxWnhtYW1YOUxQWU5SS2gzS0w0WU
1vbjRRTFN2VUZwVUxCNm91RkpKSgp0eWx2MkcweGZmWDhvUkFIaDg0dldkdytXTnM9Ci0tLS0tRU5EIENFU
lRJRklDQVRFLS0tLS0KCkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ2lUQ0NBZyt
nQXdJQkFnSVFIMGV2cW1JQWNGQlVUQUdlbTJPWktqQUtCZ2dxaGtqT1BRUURBekNCaFRFTE1Ba0dBMVVFQm
hNQwpSMEl4R3pBWkJnTlZCQWdURWtkeVpXRjBaWElnVFdGdVkyaGxjM1JsY2pFUU1BNEdBMVVFQnhNSFUyR
nNabTl5WkRFYU1CZ0dBMVVFCkNoTVJRMDlOVDBSUElFTkJJRXhwYldsMFpXUXhLekFwQmdOVkJBTVRJa05Q
VFU5RVR5QkZRME1nUTJWeWRHbG1hV05oZEdsdmJpQkIKZFhSb2IzSnBkSGt3SGhjTk1EZ3dNekEyTURBd01
EQXdXaGNOTXpnd01URTRNak0xT1RVNVdqQ0JoVEVMTUFrR0ExVUVCaE1DUjBJeApHekFaQmdOVkJBZ1RFa2
R5WldGMFpYSWdUV0Z1WTJobGMzUmxjakVRTUE0R0ExVUVCeE1IVTJGc1ptOXlaREVhTUJnR0ExVUVDaE1SC
lEwOU5UMFJQSUVOQklFeHBiV2wwWldReEt6QXBCZ05WQkFNVElrTlBUVTlFVHlCRlEwTWdRMlZ5ZEdsbWFX
TmhkR2x2YmlCQmRYUm8KYjNKcGRIa3dkakFRQmdjcWhrak9QUUlCQmdVcmdRUUFJZ05pQUFRRFIzc3ZkY21
DRllYN2RlU1JGdFNyWXBuMVBsSUxCczVCQUgrWAo0UW9rUEIwQkJPNDkwbzBKbHd6Z2RlVDYrM2VLS3ZVRF
lFczJpeFlqRnEwSmNmUks5Q2hRdFA2SUhHNC9iQzh2Q1ZsYnBWc0xNNW5pCnd6MkorV29zNzdMVEJ1bWpRa
kJBTUIwR0ExVWREZ1FXQkJSMWNhY1pTQm04blozcVFVZmZsTVJJZDVuVGVUQU9CZ05WSFE4QkFmOEUKQkFN
Q0FRWXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QUtCZ2dxaGtqT1BRUURBd05vQURCbEFqRUE3d05iZXF5M2V
BcHl0NGpmLzdWRwpGQWtLK3FEbWZRakdHb2U5R0toenZTYktZQXlkenBtZnoxd1BNT0crRkRIcUFqQVU5Sk
04U2FjemVwQkdSN05qZlJPYlRyZHZHRGVBClUvN2RJT0ExbWpiUnh3RzU1dHpkOC84ZExEb1dWOW1TT2RZP
QotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpJR0MvQQo9PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRF
LS0tLS0KTUlJRUFqQ0NBdXFnQXdJQkFnSUZPUkZGRUpRd0RRWUpLb1pJaHZjTkFRRUZCUUF3Z1lVeEN6QUp
CZ05WQkFZVEFrWlNNUTh3RFFZRApWUVFJRXdaR2NtRnVZMlV4RGpBTUJnTlZCQWNUQlZCaGNtbHpNUkF3RG
dZRFZRUUtFd2RRVFM5VFIwUk9NUTR3REFZRFZRUUxFd1ZFClExTlRTVEVPTUF3R0ExVUVBeE1GU1VkREwwR
XhJekFoQmdrcWhraUc5dzBCQ1FFV0ZHbG5ZMkZBYzJka2JpNXdiUzVuYjNWMkxtWnkKTUI0WERUQXlNVEl4
TXpFME1qa3lNMW9YRFRJd01UQXhOekUwTWpreU1sb3dnWVV4Q3pBSkJnTlZCQVlUQWtaU01ROHdEUVlEVlF
RSQpFd1pHY21GdVkyVXhEakFNQmdOVkJBY1RCVkJoY21sek1SQXdEZ1lEVlFRS0V3ZFFUUzlUUjBST01RNH
dEQVlEVlFRTEV3VkVRMU5UClNURU9NQXdHQTFVRUF4TUZTVWRETDBFeEl6QWhCZ2txaGtpRzl3MEJDUUVXR
kdsblkyRkFjMmRrYmk1d2JTNW5iM1YyTG1aeU1JSUIKSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1J
SUJDZ0tDQVFFQXNoL1IwR0xGTXp2QUJJYUlzOXo0aVBmOTMwUGZlbzJhU1Z6MgpUcXJNSExtaDZ5ZUo4a2J
wTzBweDFSMk9MYy9tcmF0alVNZFVDMjRTeVpBMnh0Z3YycEdxYU1WeS9oY0tzaGQrZWJVeWlIREtjTUNXCl
NvN2tWYzBkSjVTL3puSXE3Rno1Y3lEK3ZmY3VpV2U0dTBkekV2ZlJOV2s2OGdxNXJ2OUdRa2FpdjZHRkd2b
S81UDlKaGZlamNJWXkKSEYyZllQZXByYVgvejlFMCtYMWJGOGJjMWc0b2E4TGQ4ZlV6YUoxTy9JZDhOaExX
bzREb1F3MVZZWlRxWkRkSDZuZkswTEpZQmNOZApmckdvUnBBeFZzNXdLcGF5TUxoMzVubkF2U2s3L1pSM1R
MMGd6VUVsNEM3SEc3dnVwQVJCMGwydEVtcUttMGY3eWQxR1FPR2RQRFBRCnRRSURBUUFCbzNjd2RUQVBCZ0
5WSFJNQkFmOEVCVEFEQVFIL01Bc0dBMVVkRHdRRUF3SUJSakFWQmdOVkhTQUVEakFNTUFvR0NDcUIKZWdGN
UFRRUJNQjBHQTFVZERnUVdCQlNqQlM4WVlGRENpUXJkS3lGUC80NU9xREF4TmpBZkJnTlZIU01FR0RBV2dC
U2pCUzhZWUZEQwppUXJkS3lGUC80NU9xREF4TmpBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQUJkd20yUHA
zRlVSby9DOW1PblRnWGVRcC93WUhFNFJLCnE4OXRvQjlSbFBoSnkzUTJGTHdWM2R1Skw5MlBvRjE4OVJMcm
41NDRwRWZNczViWnZwd2xxd04rTXcrVmdRMzlGdUNJdmpmd2JGM1EKTVpzeUsxMFhaWk9ZWUx4dWo3R29QQ
jdaSFBPcEprTDVaQjNDNTVMMjlCNWFxaGxTWGEvb292ZGdvUGFOOEluMWJ1QUtCUUdWeVlzZwpDcnBhL0pv
c1BMM0R0OGxkZUNVRlAxWVVtd3phK3pwSS9wZHBYc29RaHZkT2xnUUlUZXl3dmwzY080NVB3ZjJhTmpTYVR
GUitGd05JCmxRZ1JIQWR2aFFoK1hVM0VuZHY3cnM2eTBiTzRnMndkc3JONThkaHdtWDd3RXdMT1h0MVIwOT
gyZ2FFYmVDOXhzL0ZaVEVZWUtLdUYKMG1CV1dnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKU2Vjd
XJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRGZUQ0NBbVdnQXdJQkFnSUJBREFOQmdrcWhraUc
5dzBCQVFVRkFEQmdNUXN3Q1FZRFZRUUdFd0pLVURFbE1DTUdBMVVFQ2hNYwpVMFZEVDAwZ1ZISjFjM1FnVT
NsemRHVnRjeUJEVHk0c1RGUkVMakVxTUNnR0ExVUVDeE1oVTJWamRYSnBkSGtnUTI5dGJYVnVhV05oCmRHb
HZiaUJGVmlCU2IyOTBRMEV4TUI0WERUQTNNRFl3TmpBeU1USXpNbG9YRFRNM01EWXdOakF5TVRJek1sb3dZ
REVMTUFrR0ExVUUKQmhNQ1NsQXhKVEFqQmdOVkJ
Bb1RIRk5GUTA5TklGUnlkWE4wSUZONWMzUmxiWE1nUTA4dUxFeFVSQzR4S2pBb0JnTlZCQXNUSVZObApZM1
Z5YVhSNUlFTnZiVzExYm1sallYUnBiMjRnUlZZZ1VtOXZkRU5CTVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQ
lFBRGdnRVBBRENDCkFRb0NnZ0VCQUx4LzdGZWJKT0QrbkxwQ2VhbUlpdnFBNFBVSEtVUHFqZ28wTm8wYytx
ZTFPWGovbDNYM0wrU3Fhd1NFUk1xbTRtaU8KL1ZWUVlnK2tjUTdPQnpndFFvVlFyVHlXYjR2Vm9nN1Aza21
KUGRaa0xqamxIbXkxVjRxZTcwZ096WHBwRm9kRXRaRGtCcDJ1b1FTWApXSG52SUVxQ2E0d2l2K3dmRCttRW
NlM3hEdVM0R0JQTVZqWmQwWm9lVVdzNWJtQjJpRFFMODdQUnNKM0tZZUprSGNGR0I3aGozUjR6ClpiT09DV
lZTUGJXOS93ZnJyV0ZWR0N5cGFaaEtxa0RGTXhSbGRBRDVrZDZ2QTBqRlFGVGNENFNRYUNERmtwYmNMdVVD
UmFyQVgxVDQKYmVwSnoxMXNTNi92bXNKV1hNWTFWa0pxTUYvQ3EvYmlQVCt6eVJHUE1VelhuMGtDQXdFQUF
hTkNNRUF3SFFZRFZSME9CQllFRkRWSwo5VTJ2UDllQ09LeXJjV1VYZFl5ZFZaUG1NQTRHQTFVZER3RUIvd1
FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHClNJYjNEUUVCQlFVQUE0SUJBUUNvaCtuc
ytFQm5YY1BCWnNkQVM1ZjhoeE9RV3NUdm9NcGZpN2VudC9IV3RXUzNpck80Rzh6YSs2eG0KaUVITzZQemsy
eDZJcHUwblVCc0NNQ1JHZWY0RWgzQ1hRSFBSd01GWEdacHBwU2VacTUxaWhQWlJ3U3pKSXhYWUtMZXJKUk8
xUnVHRwpBdjhtak1TSWtoMVcvaGxuOGxYa2dLTnJuS3QzNFZGeERTRGJFSnJidlhaNUIzZVpLSzJhWHRxeF
QwUXNOWTZsbHNmOWcvQll4bm5XCm1IeW9qZjZHUGdjV2t1Rjc1eDNzTTNaK1FpNUtoZm1SaVdpRUE0R2xtN
XErNHpmRlZLdFdPeGd0UWFRTStFTGJtYURnY20rN1hlRVcKVDFNS1pQbE85TDlPVkwxNGJJanF2NXdUSk1K
d2FhSi9EOGc4clFqSnNKaEFveXJuaUlQdGQ0OTAKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKT0lTVEU
gV0lTZUtleSBHbG9iYWwgUm9vdCBHQSBDQQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS
0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEOFRDQ0F0bWdBd0lCQWdJUVFUMXl4L1JySDRGRGZmSFNLR
lRmbWpBTkJna3Foa2lHOXcwQkFRVUZBRENCaWpFTE1Ba0dBMVVFCkJoTUNRMGd4RURBT0JnTlZCQW9UQjFk
SlUyVkxaWGt4R3pBWkJnTlZCQXNURWtOdmNIbHlhV2RvZENBb1l5a2dNakF3TlRFaU1DQUcKQTFVRUN4TVp
UMGxUVkVVZ1JtOTFibVJoZEdsdmJpQkZibVJ2Y25ObFpERW9NQ1lHQTFVRUF4TWZUMGxUVkVVZ1YwbFRaVX
RsZVNCSApiRzlpWVd3Z1VtOXZkQ0JIUVNCRFFUQWVGdzB3TlRFeU1URXhOakF6TkRSYUZ3MHpOekV5TVRFe
E5qQTVOVEZhTUlHS01Rc3dDUVlEClZRUUdFd0pEU0RFUU1BNEdBMVVFQ2hNSFYwbFRaVXRsZVRFYk1Ca0dB
MVVFQ3hNU1EyOXdlWEpwWjJoMElDaGpLU0F5TURBMU1TSXcKSUFZRFZRUUxFeGxQU1ZOVVJTQkdiM1Z1Wkd
GMGFXOXVJRVZ1Wkc5eWMyVmtNU2d3SmdZRFZRUURFeDlQU1ZOVVJTQlhTVk5sUzJWNQpJRWRzYjJKaGJDQl
NiMjkwSUVkQklFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXkwK3pBS
nM5Ck50MzUwVWxxYXhCSkgrellLN0xHK0RLQktVT1ZUSm9aSXlFVlJkN2p5QnhSVlZ1dWsrZzMveXRyNmRU
cXZpcmRxRkVyMTJiRFlWeGcKQXNqMXpuSjdPN2p5VG1VSW1zMmthaG5CQWJ0enB0ZjJ3OTNOdktTTHRabGh
1QUdpbzlSTjFBVTlrYTM0dEFoeFpLOXc4UnhyZnZiRApkNTBrYzN2a0RJemgyVGJobVlzRm1RdnRSVEVKeX
NJQTIvZHlvSmFxbFlmUWpzZTJZWE1OZG1hTTNCdTBZNktmZjVNVE1QR2hKOXZaCi95eFZpSkdnNEU4SHNDa
FdqQmdibDBTT2lkM2dGMjduS3UrUE9Rb3hoSUxZUUJSSkxucEI1S2YrNDJUTXdWbHhTeXdocDF0OTRCM1IK
TG9HYnc5aG85NzJXRzZ4d3NSWVVDOXRndVNZQkJRSURBUUFCbzFFd1R6QUxCZ05WSFE4RUJBTUNBWVl3RHd
ZRFZSMFRBUUgvQkFVdwpBd0VCL3pBZEJnTlZIUTRFRmdRVXN3TityamE4c0huUjNKUW10aEcrSWJKcGhwUX
dFQVlKS3dZQkJBR0NOeFVCQkFNQ0FRQXdEUVlKCktvWklodmNOQVFFRkJRQURnZ0VCQUV1aC93dUhiclA1d
1VPeFNQTW93QjB1eVFsQitwUUFIS1NrcTBsUGp6MGU3MDF2dmJ5azl2SW0KTU1rUXloMkkrM1FaSDRWRnZi
QnNVZmsyZnR2MVRESTZRVTliUjgvb0N5MjJ4Qm1kZE1WSHhqdHFENndVMnp6MGM1eXBCZDhBM0hSNAordmc
xWUZrQ0V4aDh2UHROc0NCdFE3dGdNSHBuTTF6Rm1kSDRMVGxTYy91TXFwY2xYSExaQ0I2clRqempnVEdmQT
ZiN3dQNHBpRlhhCmhOVlFBN2JpaEtPbU5xb1JPZ0hoR0V2V1JHaXpQZmxUZElTelJwRkdsZ0MzZ0N5MjRlT
VE0dHVpNXlpUEFaWmlGajRBNHh5bE5vRVkKb2t4U2RzQVJvMjdtSGJyaldyNDJVOFUrZFkrR2FTbFlVN1dj
dTIrZlhNVVk3TjB2NFpqSi9MN2ZDZzA9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCk1pY3Jvc2VjIGU
tU3ppZ25vIFJvb3QgQ0EKPT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQV
RFLS0tLS0KTUlJSHFEQ0NCcENnQXdJQkFnSVJBTXk0NTc5T0tScjlvdHhtcFJ3c0R4RXdEUVlKS29aSWh2Y
05BUUVGQlFBd2NqRUxNQWtHQTFVRQpCaE1DU0ZVeEVUQVBCZ05WQkFjVENFSjFaR0Z3WlhOME1SWXdGQVlE
VlFRS0V3MU5hV055YjNObFl5Qk1kR1F1TVJRd0VnWURWUVFMCkV3dGxMVk42YVdkdWJ5QkRRVEVpTUNBR0E
xVUVBeE1aVFdsamNtOXpaV01nWlMxVGVtbG5ibThnVW05dmRDQkRRVEFlRncwd05UQTAKTURZeE1qSTRORF
JhRncweE56QTBNRFl4TWpJNE5EUmFNSEl4Q3pBSkJnTlZCQVlUQWtoVk1SRXdEd1lEVlFRSEV3aENkV1JoY
0dWegpkREVXTUJRR0ExVUVDaE1OVFdsamNtOXpaV01nVEhSa0xqRVVNQklHQTFVRUN4TUxaUzFUZW1sbmJt
OGdRMEV4SWpBZ0JnTlZCQU1UCkdVMXBZM0p2YzJWaklHVXRVM3BwWjI1dklGSnZiM1FnUTBFd2dnRWlNQTB
HQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUIKQVFEdHlBRFZnWHZOT0FCSHpOdUV3U0ZwTEhTUU
RDSFpVNGZ0UGtORVU2K3IrSUNiUEhpTjFJMnV1Ty9URWR5QjVzODdsb3pXYnhYRwpkMzZoTCtCZmtyWW4xM
2FhSFVNODZ0bnNMKzQ1ODJwblM0dUN6eUw0WlZYK0xNc3ZmVWg2UFhYNXFxQW51M2pDQnNwUnduNW1TNi9O
Cm9xZE5Bb0kvZ3F5Rnh1RVBrRWVabEFweGNwTXF5YWJBdmp4V1RIT1NKL0ZydGZYOS9EQUZZSkxHNjVaK0F
aSENhYkVlSFh0VFJiamMKUVIvSmkzSFdWQlRqaTFSNFA3NzBZanRiOWFQczFaSjA0blF3N3dIYjRkU3JtWn
NxYS9pOXBoeUdJMEpmN0VuZW1vdGI5SEk2UU1WSgpQcVcranFweDYyejY5UnJrYXYxN2ZWVkE3MWh1NXRuV
nZDU3J3ZSszQWdNQkFBR2pnZ1EzTUlJRU16Qm5CZ2dyQmdFRkJRY0JBUVJiCk1Ga3dLQVlJS3dZQkJRVUhN
QUdHSEdoMGRIQnpPaTh2Y21OaExtVXRjM3BwWjI1dkxtaDFMMjlqYzNBd0xRWUlLd1lCQlFVSE1BS0cKSVd
oMGRIQTZMeTkzZDNjdVpTMXplbWxuYm04dWFIVXZVbTl2ZEVOQkxtTnlkREFQQmdOVkhSTUJBZjhFQlRBRE
FRSC9NSUlCY3dZRApWUjBnQklJQmFqQ0NBV1l3Z2dGaUJnd3JCZ0VFQVlHb0dBSUJBUUV3Z2dGUU1DZ0dDQ
3NHQVFVRkJ3SUJGaHhvZEhSd09pOHZkM2QzCkxtVXRjM3BwWjI1dkxtaDFMMU5hVTFvdk1JSUJJZ1lJS3dZ
QkJRVUhBZ0l3Z2dFVUhvSUJFQUJCQUNBQWRBQmhBRzRBK2dCekFPMEEKZEFCMkFPRUFiZ0I1QUNBQTZRQnl
BSFFBWlFCc0FHMEFaUUI2QU9rQWN3RHBBR2dBWlFCNkFDQUE2UUJ6QUNBQVpRQnNBR1lBYndCbgpBR0VBWk
FEaEFITUE0UUJvQUc4QWVnQWdBR0VBSUFCVEFIb0Fid0JzQUdjQTRRQnNBSFFBWVFCMEFQTUFJQUJUQUhvQ
WJ3QnNBR2NBCjRRQnNBSFFBWVFCMEFPRUFjd0JwQUNBQVV3QjZBR0VBWWdEaEFHd0FlUUI2QUdFQWRBQmhB
Q0FBY3dCNkFHVUFjZ0JwQUc0QWRBQWcKQUdzQVpRQnNBR3dBSUFCbEFHd0FhZ0RoQUhJQWJnQnBBRG9BSUF
Cb0FIUUFkQUJ3QURvQUx3QXZBSGNBZHdCM0FDNEFaUUF0QUhNQQplZ0JwQUdjQWJnQnZBQzRBYUFCMUFDOE
FVd0JhQUZNQVdnQXZNSUhJQmdOVkhSOEVnY0F3Z2Iwd2dicWdnYmVnZ2JTR0lXaDBkSEE2Ckx5OTNkM2N1W
lMxemVtbG5ibTh1YUhVdlVtOXZkRU5CTG1OeWJJYUJqbXhrWVhBNkx5OXNaR0Z3TG1VdGMzcHBaMjV2TG1o
MUwwTk8KUFUxcFkzSnZjMlZqSlRJd1pTMVRlbWxuYm04bE1qQlNiMjkwSlRJd1EwRXNUMVU5WlMxVGVtbG5
ibThsTWpCRFFTeFBQVTFwWTNKdgpjMlZqSlRJd1RIUmtMaXhNUFVKMVpHRndaWE4wTEVNOVNGVS9ZMlZ5ZE
dsbWFXTmhkR1ZTWlhadlkyRjBhVzl1VEdsemREdGlhVzVoCmNua3dEZ1lEVlIwUEFRSC9CQVFEQWdFR01JR
1dCZ05WSFJFRWdZNHdnWXVCRUdsdVptOUFaUzF6ZW1sbmJtOHVhSFdrZHpCMU1TTXcKSVFZRFZRUUREQnBO
YVdOeWIzTmxZeUJsTFZONmFXZHV3N01nVW05dmRDQkRRVEVXTUJRR0ExVUVDd3dOWlMxVGVtbG5ic096SUV
oVApXakVXTUJRR0ExVUVDaE1OVFdsamNtOXpaV01nUzJaMExqRVJNQThHQTFVRUJ4TUlRblZrWVhCbGMzUX
hDekFKQmdOVkJBWVRBa2hWCk1JR3NCZ05WSFNNRWdhUXdnYUdBRk1lZ1NYVVdZWVRiTVV1RTB2RTNRSkR2V
HR6M29YYWtkREJ5TVFzd0NRWURWUVFHRXdKSVZURVIKTUE4R0ExVUVCeE1JUW5Wa1lYQmxjM1F4RmpBVUJn
TlZCQW9URFUxcFkzSnZjMlZqSUV4MFpDNHhGREFTQmdOVkJBc1RDMlV0VTNwcApaMjV2SUVOQk1TSXdJQVl
EVlFRREV4bE5hV055YjNObFl5QmxMVk42YVdkdWJ5QlNiMjkwSUVOQmdoRUF6TGpudjA0cEd2MmkzR2FsCk
hDd1BFVEFkQmdOVkhRNEVGZ1FVeDZCSmRSWmhoTnN4UzRUUzhUZEFrTzlPM1Bjd0RRWUpLb1pJaHZjTkFRR
UZCUUFEZ2dFQkFOTVQKbkdaaldTN0tYSEFNL0lPOFZiSDBqZ2RzWmlmT3dUc2dxUnk3UmxSdzdsck1vSGZx
YUVRbjYvSXAzWGVwMWZ2ajFLY0V4Slc0QytGRQphR0FIUXpBeFFtSGw3dG5sSk5VYjMrRktHNnFmeDEvNGV
oSHFFNU1BeW9wWXNlN3REazIwMTZnMkpuemdPc0hWVjRMeGRiYjlpVi9hCjg2ZzRuelVHQ000aWxiN04xZn
krVzk1NWE5eDZxV1ZtdnJFbFdsL3RmdE9zUm0xTTlES0h0Q0FFNEd4NHNIZlJoVVpMcGhLM2RlaEsKeVZac
zE1S3JuZlZKT05KUFUrTlZrQkhibUpiR1NmSSs5SjhiNFBlSTNDVmltVVRZYzc4L01QTU1OejdVd2lpQWM3
RUJ0NTFhbGhRQgpTNmtSblNscUx0QmRnY0RQc2lCRHh3UGdOMDVkQ3R4WklDVT0KLS0tLS1FTkQgQ0VSVEl
GSUNBVEUtLS0tLQoKQ2VydGlnbmEKPT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSU
RxRENDQXBDZ0F3SUJBZ0lKQVA3YzR3RVB5VWovTUEwR0NTcUdTSWIzRFFFQkJRVUFNRFF4Q3pBSkJnTlZCQ
VlUQWtaU01SSXcKRUFZRFZRUUtEQWxFYUdsdGVXOTBhWE14RVRBUEJnTlZCQU1NQ0VObGNuUnBaMjVoTUI0
WERUQTNNRFl5T1RFMU1UTXdOVm9YRFRJMwpNRFl5T1RFMU1UTXdOVm93TkRFTE1Ba0dBMVVFQmhNQ1JsSXh
FakFRQmdOVkJBb01DVVJvYVcxNWIzUnBjekVSTUE4R0ExVUVBd3dJClEyVnlkR2xuYm1Fd2dnRWlNQTBHQ1
NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUURJYVBISjF0YXpOSFVtZ2g3c3RMN3EKWE9FbTdSR
khZZUdpZkJaNFFDSGtZSjVheUdQaHhMR1drdjhZYldrajRTdGk5OTNpTmkrUkI3bEl6dzdzZWJZczV6Ukxj
QWdsb3p5SApHeG55Z1FjUE9KQVoweEgraHJUeTBWNGVIcGJOZ0d6T096R1R0dktnMEttVkVuMmxtc3hyeUl
SV2lqT3A1eUlWVXhid3pCZnNWMS9wCm9ncVlDZDdqWDV4djNFampoUXNWV3FhNm42eEk0d215OS9ReTNsND
B2aHg0WFVKYnpnNGlqMDJRMTMweUdMTUxMR3Evamo4VUVZa2cKRG5jVXRUMlVDSWYzSlI3VnNtQUE3RzhxS
0NWdUtqNFlZeGNsUHo1RUlCYjJKc2dscmdWS3RPZGpMUE9NRmxOK1hQc1JHZ2pCUm1LZgpJcmp4d28xcDNQ
bzZXQWJmQWdNQkFBR2pnYnd3Z2Jrd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBZEJnTlZIUTRFRmdRVUd1Myt
RVG1RCnRDUlp2Z0h5VXRWRjlsbzUzQkV3WkFZRFZSMGpCRjB3VzRBVUd1MytRVG1RdENSWnZnSHlVdFZGOW
xvNTNCR2hPS1EyTURReEN6QUoKQmdOVkJBWVRBa1pTTVJJd0VBWURWUVFLREFsRWFHbHRlVzkwYVhNeEVUQ
VBCZ05WQkFNTUNFTmxjblJwWjI1aGdna0EvdHpqQVEvSgpTUDh3RGdZRFZSMFBBUUgvQkFRREFnRUdNQkVH
Q1dDR1NBR0crRUlCQVFRRUF3SUFCekFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBCmhRTWVrbkgyUXEvaG8
yR2U2L1BBRC9LbDFOcVY1dGErYURZOWZtNGZUSXJ2MFE4aGJWNmxVbVBPRXZqdkt0cHY2emYrRXdMSHl6cy
sKSW12YVlTNS8xSEk5M1REaEhreEFHWXdQMTV6Umd6QjdtRm5jZmNhNURDbE1vVE9pNjJjNlpZVFRsdUx0Z
GtWd2o3VXIzdmtqMWtsdQpQQlMxeHA4MUhsRFF3WTlxY0VRQ1lzdXVIV2hCcDZwWDZGT3FCOUlHOXRVVUJn
dVJBM1VzYkhLMVlaV2FEWXU1RGVmMTMxVE4zdWJZCjFna0lsMlBsd1M2d3QwUW13Q2JBcjFVd25qdlZOaW9
aQlBSY0h2L1BMTGYvMFAySFFCSFZFU083U01BaHFhUW9MZjBWK0xCT0svUXcKV3lIOEVaRTB2a0h2ZTUyWG
RmK1hsY0NXV0MvcXUwYlh1K1RaTGc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpBQyBSYVx4QzNce
EFEeiBDZXJ0aWNceEMzXHhBMW1hcmEgUy5BLgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJR1pqQ0NCRTZnQXdJQkFnSVBCMzVTazN2Z0Z
lTlg4R21NeSt3TU1BMEdDU3FHU0liM0RRRUJCUVVBTUhzeEN6QUpCZ05WQkFZVApBa05QTVVjd1JRWURWUV
FLREQ1VGIyTnBaV1JoWkNCRFlXMWxjbUZzSUdSbElFTmxjblJwWm1sallXTnB3N051SUVScFoybDBZV3dnC
kxTQkRaWEowYVdQRG9XMWhjbUVnVXk1QkxqRWpNQ0VHQTFVRUF3d2FRVU1nVW1IRHJYb2dRMlZ5ZEdsanc2
RnRZWEpoSUZNdVFTNHcKSGhjTk1EWXhNVEkzTWpBME5qSTVXaGNOTXpBd05EQXlNakUwTWpBeVdqQjdNUXN
3Q1FZRFZRUUdFd0pEVHpGSE1FVUdBMVVFQ2d3KwpVMjlqYVdWa1lXUWdRMkZ0WlhKaGJDQmtaU0JEWlhKMG
FXWnBZMkZqYWNPemJpQkVhV2RwZEdGc0lDMGdRMlZ5ZEdsanc2RnRZWEpoCklGTXVRUzR4SXpBaEJnTlZCQ
U1NR2tGRElGSmh3NjE2SUVObGNuUnBZOE9oYldGeVlTQlRMa0V1TUlJQ0lqQU5CZ2txaGtpRzl3MEIKQVFF
RkFBT0NBZzhBTUlJQ0NnS0NBZ0VBcTJ1Sm8xUE1TQ01JKzhQUFVaWUlMcmdJZW0wOGtCZUdxZW50TGhNMFI
3TFFjTnpKUE5DTgp5dTVMRjZ2UWhiQ25Jd1RMcUtMODVYWGJRTXBpaVk5UW5nRTlKbHNZaEJ6TGZEZTNmZX
pUZjNNWnNHcXkySWlLTFVWMHFQZXp1TURVCjJzMGlpWFJOV2hVNWN4aDBUN1hybWFmQkhvaTB3cE9RWTVme
nA2Y1NzZ2tpQnpQWmtjME9uQjhPSU1mdXV6T05qOExTV0tkZi9XVTMKNG9qQzJJK0dkVjc1TGFlSE0vSjRO
eStMdkIyR056bXhsUExZdkVxY2d4aGFCdnp6MU5TNmpCVUpKZkQ1dG8wRWZoY1NNMnRYU0V4UAoyeVllNjh
5UTU0djVhSHh3RDZNcTBEbzQzemVYNGx2ZWdHSF
RnTmlSZzBKYVRBU0phQkU4ckY5b2dFSE1ZRUxPRFZvcURBK2JNTUNtCjhJYmJxMG5YbDIxSWkva0R3Rkpub
XhMM3d2SXVtR1ZDMmRhYTQ5QVpNUXl0aDlWWEFub3c2SVltKzQ4amlsU0g1TDg4N3V2RGRVaGYKSGpsdmdX
SnN4UzNFRjFRWnR6ZU5uRGVSeVBZTDFlcGpiNE9zT01MelA5NmErK0VqWWZESUpzczJ5S0h6TUkra282S2g
zVk96M3ZDYQpNaCtEa1hrd3dha2ZVNXRUb2hWVFA5MmRzeEE3U0gySkQvenRBL1g3SldSMURoY1pEWThBRm
1kNWVrRDhMVmtIMlpENm1xMDkzSUNLCjVsdzFvbWRNRVd1eCtJQmtBQzF2SW1IRnJFc201Vm9RZ3B1a2czc
zA5NTZKa1NDWGpyZEN4MmJEME9tazF2VWdqY1REbGF4RUNwMWIKY3p3bVBTOUt2cWZKcHhBZSs1OVFhZk1D
QXdFQUFhT0I1akNCNHpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRQpBd0lCQmpBZEJ
nTlZIUTRFRmdRVTBRblE2ZGZPZVhSVStUb3dzL1J0TEFNREcyZ3dnYUFHQTFVZElBU0JtRENCbFRDQmtnWU
VWUjBnCkFEQ0JpVEFyQmdnckJnRUZCUWNDQVJZZmFIUjBjRG92TDNkM2R5NWpaWEowYVdOaGJXRnlZUzVqY
jIwdlpIQmpMekJhQmdnckJnRUYKQlFjQ0FqQk9Ha3hNYVcxcGRHRmphVzl1WlhNZ1pHVWdaMkZ5WVc1MDdX
RnpJR1JsSUdWemRHVWdZMlZ5ZEdsbWFXTmhaRzhnYzJVZwpjSFZsWkdWdUlHVnVZMjl1ZEhKaGNpQmxiaUJ
zWVNCRVVFTXVNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUNBUUJjbExXNFJaRk5qbUVmCkF5Z1BVM3ptcEZtcH
M0cDZ4YkQvQ0h3c28zRWNJUk5ub1pVU1FEV0RnNDkwMnpOYzhFbDJDb0ZTM1VuVW1qSXo3NXVueTNYbGVzd
VgKRXBCY3VudkZtOSs3T1NQSS81ak9DazBpQVVnSGZvckExU0JDbEVUdnYzZWlpV2RJRzBBREJhR0o3TTlp
NHowbGRtYS9KcmU3SXI1dgovemxYZExwNnlRR1Z3WlZSNktzcytMR0dJT2sveXpWYjBoZnBLdjZERXhkQTd
vaGlaVnZWTzJEcGV6eTR5ZFYvTmdJbHFtakNNUlczCk1HWHJmeDFJZWJIUE9lSkNnQmJUOVpNai9FeVh5Vm
8zYkh3aTJFck4wbzQyZ3ptUmtCREk4Y2sxZmorNDA0SEdJR1FhdGxEQ0lhUjQKM05Bdk8yU1RkUENXa1BId
it3bGFORUNXOERZU3dhTjBqSk4rUWQ1M2kreUcyZElQUHkzUnpFQ2lpV1pJSGlDem5DTlpjNmxFYzd3awpl
WkJXTjdQR0tYNmpEL0VwT2U5K1hDZ3ljRFdzMnJqSWRXYjhtMHc1UjQ0YmI1dE5BbFFpTSs5aHVwNHBoTzl
PU3pOSGRwZHF5MzVmCi9SV21ua0pEVzJaYWlvZ045eGE1UDFGbEsyWnFpOUU0VXFMV1JoSDYvSm9jZEo2UG
x3c0NUMlRHOVdqVFN5My9wRGNlaXorL1JMNWgKUnFHRVBRZ25USUVnZDRrSTZtZEFYbXdJVVY4MFdveVdhT
TNYOTRuQ0hOTXlBSzlTeTlOZ1d5bzZSMzVyTURPaFlpbC9Tcm5oTGVjVQpJdzRPR0VmaGVmd1ZWZEN4L0NW
eFkzVXpIQ01ycjF6WjdVZDNZQTQ3RHg3U3dOeGtCWW44ZU5aY0xDWkRxUT09Ci0tLS0tRU5EIENFUlRJRkl
DQVRFLS0tLS0KClRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkKPT09PT09PT09PT09PT09PT09PT09PT
09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRXFqQ0NBNUtnQXdJQkFnSU9MbW9BQVFBQ
0g5ZFNJU3dSWERzd0RRWUpLb1pJaHZjTkFRRUZCUUF3ZGpFTE1Ba0dBMVVFQmhNQwpSRVV4SERBYUJnTlZC
QW9URTFSRElGUnlkWE4wUTJWdWRHVnlJRWR0WWtneElqQWdCZ05WQkFzVEdWUkRJRlJ5ZFhOMFEyVnVkR1Z
5CklFTnNZWE56SURJZ1EwRXhKVEFqQmdOVkJBTVRIRlJESUZSeWRYTjBRMlZ1ZEdWeUlFTnNZWE56SURJZ1
EwRWdTVWt3SGhjTk1EWXcKTVRFeU1UUXpPRFF6V2hjTk1qVXhNak14TWpJMU9UVTVXakIyTVFzd0NRWURWU
VFHRXdKRVJURWNNQm9HQTFVRUNoTVRWRU1nVkhKMQpjM1JEWlc1MFpYSWdSMjFpU0RFaU1DQUdBMVVFQ3hN
WlZFTWdWSEoxYzNSRFpXNTBaWElnUTJ4aGMzTWdNaUJEUVRFbE1DTUdBMVVFCkF4TWNWRU1nVkhKMWMzUkR
aVzUwWlhJZ1EyeGhjM01nTWlCRFFTQkpTVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUEFEQ0MKQV
FvQ2dnRUJBS3VBaDV1TzhNTjhoOWZvSklJUnN6emRRMkx1K01ORjJ1amhvRi9SS3JMcWsyamZ0TWpXUStuR
WRWbC8vT0VkK0RGdwpJeHVJbmllNWUvMDYwc21wNlJRdmtMNERVc0ZKemZiOTVBaG1DMWVLb2tLZ3VOVi9h
VnlRTXJLWERjcEszRVkrQWxXSlUrTWFXc3MyCnhnZFc5NHpQRWZSTXV6QndCSldsOWptTS9YT0JDSDJKWGp
JZUlxa2lSVXV3Wmk0d3pKOWwvZnpMZ2FueDREdXZvNGJSaWVyRVJYbFEKWGE3cElYU1NUWXRaZ28rVTQrbE
s4ZWRKc0JUajlXTEwxWEs5SDduU242RE5xUG9CeU5rTjM5cjhSNTJ6eUZUZlNVcnhJYW4rR0U3dQpTTlFad
Ss5OTVPS2R5MXUyYnYvanpWcm5kSUlGdW9BbE9NdmthWjZ2UWFvYWhQVUNBd0VBQWFPQ0FUUXdnZ0V3TUE4
R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwR0ExVWREZ1FXQkJUanExUk1
nS0hiVmtPM2tVckw4NEo2RTF3SXF6Q0IKN1FZRFZSMGZCSUhsTUlIaU1JSGZvSUhjb0lIWmhqVm9kSFJ3T2
k4dmQzZDNMblJ5ZFhOMFkyVnVkR1Z5TG1SbEwyTnliQzkyTWk5MApZMTlqYkdGemMxOHlYMk5oWDBsSkxtT
nliSWFCbjJ4a1lYQTZMeTkzZDNjdWRISjFjM1JqWlc1MFpYSXVaR1V2UTA0OVZFTWxNakJVCmNuVnpkRU5s
Ym5SbGNpVXlNRU5zWVhOekpUSXdNaVV5TUVOQkpUSXdTVWtzVHoxVVF5VXlNRlJ5ZFhOMFEyVnVkR1Z5SlR
Jd1IyMWkKU0N4UFZUMXliMjkwWTJWeWRITXNSRU05ZEhKMWMzUmpaVzUwWlhJc1JFTTlaR1UvWTJWeWRHbG
1hV05oZEdWU1pYWnZZMkYwYVc5dQpUR2x6ZEQ5aVlYTmxQekFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBa
k5mZmZ1NGJnQkN6Zy9YYkVlcHJTNmlTR05uM0J6bjFMTDRHCmRYcG9VeFVjNmtydFh2d2pzaE9nMHduLzl2
WXVhMEZ4ZWMzaWJmMnVXV3VGSGJoT0lwcnRaamx1UzVUbVZmd0xHNHQzd1ZNVFpvbloKS05hTDgwVktZN2Y
5ZXd0aFhiaHR2c1BjVzNuUzdZYmxvazIrWG5SOGF1MFdPQjkvV0lGYUd1c3lpQzJ5OHpsM2dLOWV0bUYxS2
RzagpUWWpLVUNqTGhkTFRFS0paYnRPVFZBQjZva2FWaGdXY3FSbVk1VEZ5REFEaVo5bEE0Q1F6ZTI4c3VWe
XJaWjBzckhicU5abjFsN2tQCkpPekhkaUVvWmE1WDZBZUlkVXBXb05JRk9xVG1qWktJTFBQeTRjSEdZZHRC
eGNlYjl3NGFVVVhDWVd2Y1pDY1hqRnEzMm5Rb3paZmsKdlE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0
tCgpUQyBUcnVzdENlbnRlciBDbGFzcyAzIENBIElJCj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS
0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVxakNDQTVLZ0F3SUJBZ0lPU2tjQUFRQUM1YUJkMWo4Q
VViOHdEUVlKS29aSWh2Y05BUUVGQlFBd2RqRUxNQWtHQTFVRUJoTUMKUkVVeEhEQWFCZ05WQkFvVEUxUkRJ
RlJ5ZFhOMFEyVnVkR1Z5SUVkdFlrZ3hJakFnQmdOVkJBc1RHVlJESUZSeWRYTjBRMlZ1ZEdWeQpJRU5zWVh
OeklETWdRMEV4SlRBakJnTlZCQU1USEZSRElGUnlkWE4wUTJWdWRHVnlJRU5zWVhOeklETWdRMEVnU1Vrd0
hoY05NRFl3Ck1URXlNVFEwTVRVM1doY05NalV4TWpNeE1qSTFPVFU1V2pCMk1Rc3dDUVlEVlFRR0V3SkVSV
EVjTUJvR0ExVUVDaE1UVkVNZ1ZISjEKYzNSRFpXNTBaWElnUjIxaVNERWlNQ0FHQTFVRUN4TVpWRU1nVkhK
MWMzUkRaVzUwWlhJZ1EyeGhjM01nTXlCRFFURWxNQ01HQTFVRQpBeE1jVkVNZ1ZISjFjM1JEWlc1MFpYSWd
RMnhoYzNNZ015QkRRU0JKU1RDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDCkFRb0NnZ0VCQU
xUZ3UxRzdPVnlMQk1WTWVSd2poakVRWTBOVkp6L0dSY2VrUGV3SkRSb2VJTUpXSHQ0Yk53Y3dJaTl2OFFie
HE2M1cKeUt0aG95OUR4TEN5TGZ6RGxtbDdmb3Jrek1BNUVwQkNZTW5NTldqdTJsK1FWbC9OSEUxYldFbnJE
Z0ZQWlBvc1BJbFkyQzh1NHJCbwo2U0k3ZFluV1JCcGw4aHVYSmgwb2Jhem92VmtkS3lUMjFvUURab2drQUh
oZzhmaXIvZ0t5YS9zaSt6WG1GdEd0OWk0UzVQbzFhdVVaCnVWM2JPeDRhKzlQL0ZSUUkyQWxxdWtXZEZIbG
dmYTlBaWdkenM1T1cwM1EwalRvM0tkNWM3UFh1TGpIQ0lOeSs4VTkvSTFMWlcrSmsKMlp5cUJ3aTFSYjNSM
ERIQnExU2ZxZExEWW1BRDhiczVTcEpLUFFxNW5jV2cvamNDQXdFQUFhT0NBVFF3Z2dFd01BOEdBMVVkRXdF
Qgovd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCVFVvdnlmczhQWUE5Tlh
YQWVrMENTbndQSUExRENCCjdRWURWUjBmQklIbE1JSGlNSUhmb0lIY29JSFpoalZvZEhSd09pOHZkM2QzTG
5SeWRYTjBZMlZ1ZEdWeUxtUmxMMk55YkM5Mk1pOTAKWTE5amJHRnpjMTh6WDJOaFgwbEpMbU55YklhQm4ye
GtZWEE2THk5M2QzY3VkSEoxYzNSalpXNTBaWEl1WkdVdlEwNDlWRU1sTWpCVQpjblZ6ZEVObGJuUmxjaVV5
TUVOc1lYTnpKVEl3TXlVeU1FTkJKVEl3U1Vrc1R6MVVReVV5TUZSeWRYTjBRMlZ1ZEdWeUpUSXdSMjFpClN
DeFBWVDF5YjI5MFkyVnlkSE1zUkVNOWRISjFjM1JqWlc1MFpYSXNSRU05WkdVL1kyVnlkR2xtYVdOaGRHVl
NaWFp2WTJGMGFXOXUKVEdsemREOWlZWE5sUHpBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQU5tRGtjUGNHS
UVQWkl4cEM4dmlqc3JsTmlyVHp3cHBWTVh6RQpPMmVhdE45TkRvcVRTaGVMRzQzS2llSFBPaDZzSGZHY01y
U09XWGFpUVlVbE42QVQwUFY4VHRYcWx1SnVjc0c3S3Y1c2J2aVJtRWI4CnlSdFhXK3JJR2pzL3NGR1lQQWZ
hTEZrQjJvdEU2T0YwL2FkbzNWUzZnMGJzeUVhMStLK1h3RHNKSEkvT2NwWTlNMVp3dkpiTDJOVjkKSUpxRG
54cmNPZkhGY3FNUkEvMDdRbElwMitnQjk1dGVqTmFOaGs0Wityd2N2c1VocFllZWVDNDIyd2x4bzNJMCtHe
mpCZ255WGxhbAowOTJZK3RUbUJ2VHd0aUJqUytvcHZhcUNaaDc3Z2Fxbk42MFRHT2FTdzRIQk03dUlIcUhu
NHJTOU1Xd09VVDF2KzVaV2dPSTJGOUhjCjVBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKVEMgVHJ
1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRU
dJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQzVENDQXNXZ0F3SUJBZ0lPSGFJQUFRQUM3TGRnZ0hpTnRnWXdEU
VlKS29aSWh2Y05BUUVGQlFBd2VURUxNQWtHQTFVRUJoTUMKUkVVeEhEQWFCZ05WQkFvVEUxUkRJRlJ5ZFhO
MFEyVnVkR1Z5SUVkdFlrZ3hKREFpQmdOVkJBc1RHMVJESUZSeWRYTjBRMlZ1ZEdWeQpJRlZ1YVhabGNuTmh
iQ0JEUVRFbU1DUUdBMVVFQXhNZFZFTWdWSEoxYzNSRFpXNTBaWElnVlc1cGRtVnljMkZzSUVOQklFa3dIaG
NOCk1EWXdNekl5TVRVMU5ESTRXaGNOTWpVeE1qTXhNakkxT1RVNVdqQjVNUXN3Q1FZRFZRUUdFd0pFUlRFY
01Cb0dBMVVFQ2hNVFZFTWcKVkhKMWMzUkRaVzUwWlhJZ1IyMWlTREVrTUNJR0ExVUVDeE1iVkVNZ1ZISjFj
M1JEWlc1MFpYSWdWVzVwZG1WeWMyRnNJRU5CTVNZdwpKQVlEVlFRREV4MVVReUJVY25WemRFTmxiblJsY2l
CVmJtbDJaWEp6WVd3Z1EwRWdTVENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFECmdnRVBBRENDQVFvQ2dnRU
JBS1IzSTVaRXI1RDBNYWNROUNhSG5QTTQyUTllM3M5QjZER3R4blNSSkpaNEhnbWdtNXFWU2tyMVlud0MKc
U1xcysxb0Vkam5lWC9INXM3L3pBMWhWMHFxMzR3UWkwZmlVMmlJSUFJM1RmQ1pkekhkNTV5eDRPYWdtY3c2
aVhTVnBoVTlWRHBydgp4cmxFNFZjOTN4OVVJdVZ2WmFvemhEcnp6bnErVlpldWpSSVBGRFBpVUhERFNZY1R
2RkhlMTVnU1d1ODZnek9TQm5XTGtud1NhSHR3CmFnKzFtN1ozVzBoWm5lVHZXcTN6d1o3VTEwVk95bFkwSW
J3K0YxdHZkd3hJQVVNcHNOMC9sbTdtbGFvTXdDQzIvVDQySjV6alhNOU8KZ2R3WnU1R1FmZXptbHdRZWs4d
2lTZGVYaHJZVENqeERJM2QrOE56bXpTUWZPNE9iTkRxRE5PTUNBd0VBQWFOak1HRXdId1lEVlIwagpCQmd3
Rm9BVWtxUjFMS1Nldm9GRTYzbjhpc1dWcGVzUWRYTXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE
4QkFmOEVCQU1DCkFZWXdIUVlEVlIwT0JCWUVGSktrZFN5a25yNkJST3Q1L0lyRmxhWHJFSFZ6TUEwR0NTcU
dTSWIzRFFFQkJRVUFBNElCQVFBbzB1Q0cKMWViNGUvQ1gzQ0pyTzVVVVZnOFJNS1dhVHpxd091QUd5MlgxN
2NhWEovNGw4bGZtWHBXTVBtUmdGVnAvTHcwQnhiRmcvVVUxei9DeQp2d2JaNzFxK3MySWh0TmVyTlh4VFBx
WW44YUV0Mmhvam5jemQ3RHd0bmljMFhRL0NObm04eVVwaUxlMXIyWDFCUTN5MnFzcnRZYkUzCmdoVUpHb29
XTU5qc3lkWkhjbmhMRUVZVWpsOE9yK3pITDZzUTE3YnhidXlHc3NMb0RaSnozS0wwRHpxL1lTTVFpWnhJUU
c1d0FMUFQKdWpkRVdCRjZBbXFJOERjMDhCbnByTlJsYy9acGpHU1VPbm1GS2JBV0t3eUNQd2FjeC8wUUs1N
FBMTGFlNHhXLzJUWWN1aVVhVWowYQo3Q0lNSE9Da29qM3c2RG5QZ2NCNzdWMGZiOFhRQzllWQotLS0tLUVO
RCBDRVJUSUZJQ0FURS0tLS0tCgpEZXV0c2NoZSBUZWxla29tIFJvb3QgQ0EgMgo9PT09PT09PT09PT09PT0
9PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRG56Q0NBb2VnQXdJQkFnSUJKak
FOQmdrcWhraUc5dzBCQVFVRkFEQnhNUXN3Q1FZRFZRUUdFd0pFUlRFY01Cb0dBMVVFQ2hNVApSR1YxZEhOa
mFHVWdWR1ZzWld0dmJTQkJSekVmTUIwR0ExVUVDeE1XVkMxVVpXeGxVMlZqSUZSeWRYTjBJRU5sYm5SbGNq
RWpNQ0VHCkExVUVBeE1hUkdWMWRITmphR1VnVkdWc1pXdHZiU0JTYjI5MElFTkJJREl3SGhjTk9Ua3dOekE
1TVRJeE1UQXdXaGNOTVRrd056QTUKTWpNMU9UQXdXakJ4TVFzd0NRWURWUVFHRXdKRVJURWNNQm9HQTFVRU
NoTVRSR1YxZEhOamFHVWdWR1ZzWld0dmJTQkJSekVmTUIwRwpBMVVFQ3hNV1ZDMVVaV3hsVTJWaklGUnlkW
E4wSUVObGJuUmxjakVqTUNFR0ExVUVBeE1hUkdWMWRITmphR1VnVkdWc1pXdHZiU0JTCmIyOTBJRU5CSURJ
d2dnRWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUJEd0F3Z2dFS0FvSUJBUUNyQzZNMTRJc3BGTEVVaGE4OEV
PUTUKYnpWZFNxN2Q2bUdObFVuMGIyU2pHbUJtcEtsQUlvVFoxS1hsZUpNT2FBR3R1VTFjT3M3VHVLaENRTi
9QbzdxQ1dXcVNHNndjbXRvSQpLeVVuK1dralIvSGc2eXg2bS9VVEF0QitOSHpDbmp3QVdhdjEyZ3oxTWp3c
nJGRGExc1BlZzVUS3FBeVpNZzRJU0ZaYmF2dmE0VmhZCkFVbGZja0U4RlFZQmpsMnRxcmlUdE0yZTY2Zm9h
aTFTTk5zNjcxeDFVZHJiOHpINTduR1lNc1JVRlVRTStadFY3YTNmR0FpZ280YUsKU2U1VEJZOFpUTlhlV0h
tYjBtb2NRcXZGMWFmUGFBK1c1T0ZobUhaaHlKRjgxajRBNHBGUWgrR2RDdWF0bDlJZHhqcDl5N3phQXpUVg
pqbHNCOVdvSHR4YTJia3AvQWdNQkFBR2pRakJBTUIwR0ExVWREZ1FXQkJReHcza2J1dlZUMXhmZ2lYb3RGM
ndLc3l1ZE16QVBCZ05WCkhSTUVDREFHQVFIL0FnRUZNQTRHQTFVZER3RUIvd1FFQXdJQkJqQU5CZ2txaGtp
Rzl3MEJBUVVGQUFPQ0FRRUFsR1JaclRsazV5bnIKRS81YXc0c1RWOGdFSlBCMGQ4Qmc0MmY3NlltbWc3K1d
nbnh1MU1NOTc1NkFicnNwdEpoNnNUdFU2emtYUjM0YWpndjhIekZaTVFTeQp6aGZ6TE1kaU5sWGlJdGlKVm
JTWVNLcGsrdFljTnRoRWVGcGFJenBYbC9WNk1FK
3VuMnBNU3l1T29BUGpQdUNwMU5KNzByT280bkk4CnJaNy9nRm5rbTBXMDlqdXd6VGtabURMbDZpRmhrT1F4
SVk0MHNmY3ZOVXFGRU5ybmlqY2h2bGxqNFBLRmlERlQxRlFVaFhCNTlDNEcKZHlkMUx4KzRpdm4reGJyWU5
1U0Q3T2RsdDc5ald2TkdyNEdVTjlSQmpOWWoxaDdQOVdnYlJHT2lXcnFuTlZtaDVYQUZtdzRqVjVtVQpDbT
I2T1dNb2hwTHpHSVRZKzlIUEJWWmtWdz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkNvbVNpZ24gU
2VjdXJlZCBDQQo9PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURx
ekNDQXBPZ0F3SUJBZ0lSQU1jb1J3bXp1R3hGakIzNkpQVTJUdWt3RFFZSktvWklodmNOQVFFRkJRQXdQREV
iTUJrR0ExVUUKQXhNU1EyOXRVMmxuYmlCVFpXTjFjbVZrSUVOQk1SQXdEZ1lEVlFRS0V3ZERiMjFUYVdkdU
1Rc3dDUVlEVlFRR0V3SkpUREFlRncwdwpOREF6TWpReE1UTTNNakJhRncweU9UQXpNVFl4TlRBME5UWmFNR
Hd4R3pBWkJnTlZCQU1URWtOdmJWTnBaMjRnVTJWamRYSmxaQ0JEClFURVFNQTRHQTFVRUNoTUhRMjl0VTJs
bmJqRUxNQWtHQTFVRUJoTUNTVXd3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXcKZ2dFS0FvSUJ
BUURHdFdoZkhaUVZ3NlFJVlMzam9GZDY3K2wwS3J1NWZGZEpHaEZlVHltSERFaldhdWVQMUg1WEpMa0dpZV
FjUE9xcwo0OW9oZ0hNaEN1OTVtR3dmQ1AraFVIM3ltQnZKVkc4K3BTanNJUVFQUmJzSFBhSEEraXFZSFU0R
2svdjFpRHVyWDhzV3YrYnpua3FICjdSbnF3cDlENVBHQnBYOFFUejdSU21LdFV4dkxnLzhIWmFXU0xXYXBX
N2hhOUIyMElaRktGM3VlTXY1V0pEbXlWSVJEOVlUQzJMeEIKa015ZDFtamE2WUpRcVR0b3o3VmRBcFJnRnJ
GRDJVTmQzVjJIYnVxN3M4bHI5Z09VQ1hEZUZoRjZLK2gyajBrUW1IZTVZMXlMTTVkMQo5Z3VNc3F0YjNuUW
dKVC9qOHhINWgyaUdOWEhESFl3dDYrVWFyQTl6MVlKWlFJRFRBZ01CQUFHamdhY3dnYVF3REFZRFZSMFRCQ
VV3CkF3RUIvekJFQmdOVkhSOEVQVEE3TURtZ042QTFoak5vZEhSd09pOHZabVZrYVhJdVkyOXRjMmxuYmk1
amJ5NXBiQzlqY213dlEyOXQKVTJsbmJsTmxZM1Z5WldSRFFTNWpjbXd3RGdZRFZSMFBBUUgvQkFRREFnR0d
NQjhHQTFVZEl3UVlNQmFBRk1GTDdYQzI5ejU4QURzQQpqOGMrRGtXZkhsM3NNQjBHQTFVZERnUVdCQlRCUy
sxd3R2YytmQUE3QUkvSFBnNUZueDVkN0RBTkJna3Foa2lHOXcwQkFRVUZBQU9DCkFRRUFGcy91a2hOUXEzc
1Vuak8yUWlCcTFCVzlDYXY4Y3VqdlIzcVFyRkhCWkU3cGlMMURSWUhqWmlNL0VvWk5HZVFGc09ZM3dvM2EK
QmlqSkQ0bWtVNmwxUDdDVys2dE1NMVg1ZUNaR2J4czJtUHRDZHNHQ3VZN2UrMFg1WXh0aU96a0d5bmQ2cUR
3SnoydzJQUThLUlV0cApGaHBGZlRNRFpmbFNjWkFtbGF4TURQV0xrei9NZFhTRm1Mci9ZbnBOSDRuK3JyMl
VBSm0vRWFYYzRIbkZGZ3Q5QW1FZDZvWDVBaFZQCjUxcUpUaFJ2NHpkTGhmWEJQR0hnL1FWQnNwSi93eDJnM
Es1U1pHQnJHTVltbk5qMVpPUTJHbUtmaWc4Ky8yMU9HVlpPSUpGc256UXoKT2pSWFVEcHZnVjRHeHZVK2ZF
Nk9LODVsQmk1ZDBpcFRkRjdUYmllZWp3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKQ3liZXJ0cnV
zdCBHbG9iYWwgUm9vdAo9PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS
0tLQpNSUlEb1RDQ0FvbWdBd0lCQWdJTEJBQUFBQUFCRDRXcUxVZ3dEUVlKS29aSWh2Y05BUUVGQlFBd096R
VlNQllHQTFVRUNoTVBRM2xpClpYSjBjblZ6ZEN3Z1NXNWpNUjh3SFFZRFZRUURFeFpEZVdKbGNuUnlkWE4w
SUVkc2IySmhiQ0JTYjI5ME1CNFhEVEEyTVRJeE5UQTQKTURBd01Gb1hEVEl4TVRJeE5UQTRNREF3TUZvd09
6RVlNQllHQTFVRUNoTVBRM2xpWlhKMGNuVnpkQ3dnU1c1ak1SOHdIUVlEVlFRRApFeFpEZVdKbGNuUnlkWE
4wSUVkc2IySmhiQ0JTYjI5ME1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0NBUUVBC
itNaTh2UlJRWmhQLzhOTjU3Q1B5dHhySGpvWHhFbk9tR2FvUTI1eWlaWFJhZHo1UmZWYjIzQ08yMU8xZldM
RTNUZFZKRG03MWFvZlcKMG96U0o4YmkvemFmbUdXZ0UwN0dLbVNiMVpBU3p4UUc5RHZqMUNpKzZBNzRxMDV
JbEcyT2xURVFYTzJpTGIzVk9tMnlITHRnd0VaTApBZlZKcm41R2l0QjBqYUVNQXM3dS9PZVB1R3RtODM5RU
FMOW1KUlFyM1JBd0hRZVdQMDMyYTdpUHQzc01wVGpyM2tmYjFWMDUvSWluCjg5Y3FkUEhvV3FJN24xQzZwb
3hGTmNKUVpaWGNZNEx2M2I5M1RaeGl5V056RnRBcEQwbXBTUEN6cXJkc3hhY3dPVUJkcnNUaVhTWlQKOE00
Y0l3aGhxSlFadWdSaVFPd2ZPSEIzRWdaeHB6QVlYU1VucFFJREFRQUJvNEdsTUlHaU1BNEdBMVVkRHdFQi9
3UUVBd0lCQmpBUApCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUzJDSHNOZXN5c0lFeUdWak
plejZ0dWhTMXdWekEvQmdOVkhSOEVPREEyCk1EU2dNcUF3aGk1b2RIUndPaTh2ZDNkM01pNXdkV0pzYVdNd
GRISjFjM1F1WTI5dEwyTnliQzlqZEM5amRISnZiM1F1WTNKc01COEcKQTFVZEl3UVlNQmFBRkxZSWV3MTZ6
S3dnVElaV01sN1BxMjZGTFhCWE1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQlc3d29qb0ZSTwpsWmZKK0l
uYVJjSFVvd0FsOUI4VHE3ZWpoVmhwd2pDdDJCV0tMZVBKellGYStITWpXcWQ4QmZQOUlqc08wUWJFMnpaTW
N3U081YkFpCjVNWHpMcVhaSStPNFRrb2dwMjRDSko4aVlHZDdpeDF5Q2NVeFhPbDVuNEJIUGEyaEN3Y1VQV
WYvQTJrYURBdEU1Mk1scDMreXliaDIKaE8wajluMEhxMFYrMDkrenYrbUt0czJvb21jclV0VzNaZkE1VEdP
Z2tYbVRVZzlVM1lPN245R1BwMU56dzh2L01PeDhCTGpZUkIrVApYM0VKSXJkdVB1b2NBMDZkR2lCaCs0RTM
3Rjc4Q2tXcjErY1hWZENnNm1DYnB2YmpqRnNwd2daZ0ZKMHRsMHlwa3hXZFljUUJYMGpXCldMMVdNUkpPRW
NnaDRMTVJrV1hidEthSU9NNVYKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKZVBLSSBSb290IENlcnRpZ
mljYXRpb24gQXV0aG9yaXR5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lO
IENFUlRJRklDQVRFLS0tLS0KTUlJRnNEQ0NBNWlnQXdJQkFnSVFGY2k5WlVkY3I3aVhBRjdrQnRLOG5UQU5
CZ2txaGtpRzl3MEJBUVVGQURCZU1Rc3dDUVlEVlFRRwpFd0pVVnpFak1DRUdBMVVFQ2d3YVEyaDFibWRvZD
JFZ1ZHVnNaV052YlNCRGJ5NHNJRXgwWkM0eEtqQW9CZ05WQkFzTUlXVlFTMGtnClVtOXZkQ0JEWlhKMGFXW
nBZMkYwYVc5dUlFRjFkR2h2Y21sMGVUQWVGdzB3TkRFeU1qQXdNak14TWpkYUZ3MHpOREV5TWpBd01qTXgK
TWpkYU1GNHhDekFKQmdOVkJBWVRBbFJYTVNNd0lRWURWUVFLREJwRGFIVnVaMmgzWVNCVVpXeGxZMjl0SUV
Odkxpd2dUSFJrTGpFcQpNQ2dHQTFVRUN3d2haVkJMU1NCU2IyOTBJRU5sY25ScFptbGpZWFJwYjI0Z1FYVj
BhRzl5YVhSNU1JSUNJakFOQmdrcWhraUc5dzBCCkFRRUZBQU9DQWc4QU1JSUNDZ0tDQWdFQTRTVVA3bzNia
UROMVo4MnRIMzA2VG0yZDB5OFU4Mk4weXdFaGFqZnFoRkFIU3laYkNVTnMKSVo1cXlOVUQ5V0Jwajh6d0l1
UWY1L2RxSWpHM0xCWHk0UDRBYWtQL2gyWEd0UnJCcDB4dEluQWhpakh5bDNTSkNSSW1ISjdLMlJLaQpsVHp
hNldlL0NLQms0OVpDdDBYdmwvVDI5ZGUxU2hVQ1dIMllXRXRndk0zWERab1RNMVBSWWZsNjFkZDRzNW96OX
dDR3poMU5sRGl2CnFPeDRVWENLWEJDRFVTSDNFVDAwaGw3bFNNMlhnWUkxVEJuc1pmWnJ4UVdoN2tjVDFyT
WhKNVFRQ3Rra083cStSQk5HTUQrWFBOalgKMTJydU96ampLOVNYRHJrYjV3ZEpmemNxK1hkNHoxVHRXMGFk
bzRBT2tVUEIxbHRmRkxxZnBvMGtSMEJadjNJNHNqWnNOLytaMFYwTwpXUXFyYWZmQXNnUkZlbFFBcnI1VDl
yWG40Zmc4b3pIU3FmNGhVbVRGcG1md2RRY0dsQlNCVmNZbjVBR1BGOEZxY2RlK1MvdVVXSDErCkVUT3hRdm
RpYkJqV3p3bG9QbjlzOWg2UFlxMmxZOXNKcHg4aVFrRWViNW1LUHRmNVAwQjZlYkNsQVpMU25UMElGYVVRQ
VMyek1uYW8KbFEyemVwcjdCeEI0RVcvaGo4ZTZEeVVhZENybEhKaEJtZDhoaCtpVkJtb0tzMnBIZG1YMk9z
K1BZaGNaZXdvb3pSclNneDRoeHl5Lwp2djloYUxkbkc3dDRUWTNPWitYa3dZNjNJMmJpblpCMU5KaXBOaXV
LbXBTNW5lek1pckg0SllsY1dyWXZqQjl0ZVNTblVtakRoRFhpClpvMWpEaVZOMVJteTVuazNweUtkVkRFQ0
F3RUFBYU5xTUdnd0hRWURWUjBPQkJZRUZCNE05N1puOHVHU0pnbEZ3RlU1TG5jL1FrcWkKTUF3R0ExVWRFd
1FGTUFNQkFmOHdPUVlFWnlvSEFBUXhNQzh3TFFJQkFEQUpCZ1VyRGdNQ0dnVUFNQWNHQldjcUF3QUFCQlJG
c01MSApDbFo4N2x0NERKWDVHRlBCcGh6WUVEQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FnRUFDYk9EVTFrQlB
wVkp1ZkdCdXZsMklDTzFKMkIwCjFHcVpORjVzQUZQWm4vS21zU1FIUkdvcXhxV09lQkxvUjlsWUd4TXFYbm
1ibndvcVo2WWxQd1pwVm5QRGltWkkreW1CVjNRR3lwenEKS09nNFp5WXI4ZFcxUDJXVCtEWmRqbzJOUUNDS
EdlcnZKOEE5dERrUEpYdG9VSFJWbkF4WmZWbzlRWlFsVWdqZ1J5d1ZNUm5WdndkVgp4cnNTdFpmMFg0T0Z1
bkhCMld5QkVYWUtDckMvZ3BmMzZqMzYrdXd0cVNpVU8xYmQwbEV1cnNDOUNCV01kMUkwbHRhYnJOTWRqbUV
QCk5YdWJyamxwQzJKZ1FDQTJqNi83TnU0dENFb2R1TCtiWFBqcXBSdWdjNmJZK0c3Z013UmZhS29uaCszWn
daQ2M3YjNqYWpXdlk5K3IKR05tNjV1bEs2bENLRDJHVEh1SXRHZUl3bERXU1hRNjJCNjhaZ0k5SGtGRkxMa
zNkaGVMU0NsSUtGNXI4R3JCUUF1VUJvMk0zSVV4RQp4SnRSbVJFT2M1d0dqMVF1cHloZVJEbUhWaTAzdllW
RWxPRU1TeXljdzVLRk5HSExEN2liU2tOUy9qUTZmYmpwS2R4MnFjZ3crQlJ4CmdNWWVOa2gwSWtGY2g0TG9
HSEdMUVlsRTUzNVlXNmk0alJQcHAyekRSKzJ6R3AxaXJvMkM2cFNlM1ZrUXc2M2Q0azNqTWRYSDdPankKc1
A2U0hoWUtHdnpaOC9nbnRzbStIYlJzWkpCLzlPVEVXOWMzcmtJTzNhUWFiM3lJVk1VV2J1RjZhQzc0T3I4T
nBEeUpPM2luVG1PRApCQ0VJWjQzeWdrblFXLzJ4elErRGhOUStJSVgzU2owcm5QMHFDZ2xONm9INEVadz0K
LS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKVFx4YzNceDljXHg0Mlx4QzRceEIwVEFLIFVFS0FFIEtceEM
zXHhCNmsgU2VydGlmaWthIEhpem1ldCBTYVx4QzRceDlGbGF5XHhjNFx4YjFceDYzXHhjNFx4YjFzXHhjNF
x4YjEgLSBTXHhDM1x4QkNyXHhDM1x4QkNtIDMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
T09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZ
GekNDQS8rZ0F3SUJBZ0lCRVRBTkJna3Foa2lHOXcwQkFRVUZBRENDQVNzeEN6QUpCZ05WQkFZVEFsUlNNUm
d3RmdZRFZRUUgKREE5SFpXSjZaU0F0SUV0dlkyRmxiR2t4UnpCRkJnTlZCQW9NUGxURHZISnJhWGxsSUVKc
GJHbHRjMlZzSUhabElGUmxhMjV2Ykc5cQphV3NnUVhKaHhaOTB4TEZ5YldFZ1MzVnlkVzExSUMwZ1ZNT2NR
c1N3VkVGTE1VZ3dSZ1lEVlFRTEREOVZiSFZ6WVd3Z1JXeGxhM1J5CmIyNXBheUIyWlNCTGNtbHdkRzlzYjJ
wcElFRnlZY1dmZE1TeGNtMWhJRVZ1YzNScGRNTzhjOE84SUMwZ1ZVVkxRVVV4SXpBaEJnTlYKQkFzTUdrdG
hiWFVnVTJWeWRHbG1hV3RoYzNsdmJpQk5aWEpyWlhwcE1Vb3dTQVlEVlFRRERFRlV3NXhDeExCVVFVc2dWV
VZMUVVVZwpTOE8yYXlCVFpYSjBhV1pwYTJFZ1NHbDZiV1YwSUZOaHhKOXNZWG5Fc1dQRXNYUEVzU0F0SUZQ
RHZITER2RzBnTXpBZUZ3MHdOekE0Ck1qUXhNVE0zTURkYUZ3MHhOekE0TWpFeE1UTTNNRGRhTUlJQkt6RUx
NQWtHQTFVRUJoTUNWRkl4R0RBV0JnTlZCQWNNRDBkbFlucGwKSUMwZ1MyOWpZV1ZzYVRGSE1FVUdBMVVFQ2
d3K1ZNTzhjbXRwZVdVZ1FtbHNhVzF6Wld3Z2RtVWdWR1ZyYm05c2IycHBheUJCY21IRgpuM1RFc1hKdFlTQ
kxkWEoxYlhVZ0xTQlV3NXhDeExCVVFVc3hTREJHQmdOVkJBc01QMVZzZFhOaGJDQkZiR1ZyZEhKdmJtbHJJ
SFpsCklFdHlhWEIwYjJ4dmFta2dRWEpoeFo5MHhMRnliV0VnUlc1emRHbDB3N3h6dzd3Z0xTQlZSVXRCUlR
Fak1DRUdBMVVFQ3d3YVMyRnQKZFNCVFpYSjBhV1pwYTJGemVXOXVJRTFsY210bGVta3hTakJJQmdOVkJBTU
1RVlREbkVMRXNGUkJTeUJWUlV0QlJTQkx3N1pySUZObApjblJwWm1scllTQklhWHB0WlhRZ1UySEVuMnhoZ
WNTeFk4U3hjOFN4SUMwZ1U4Tzhjc084YlNBek1JSUJJakFOQmdrcWhraUc5dzBCCkFRRUZBQU9DQVE4QU1J
SUJDZ0tDQVFFQWltMUwveENJT3NQMmZwVG82aUJrY0s0aGdiNDZlenpiOFIxU2YxbjY4eUpNbGFDUXZFaE8
KRWF2N3Q3V05lb01vakNaRzJFNlZRSWRobjhXZWJZR0hWMnlLTzdSbTZzeEEvT09xYkxMTEFkc3l2OUxyaG
MraERWWERXemhYY0xoMQp4bm5SRkREdEcxaGJhKzgxOHFFaFRzWE9mSmxmYkxtNElwTlFwODFNY0dxK2FnV
i9FNXdySHVyK1I4NEVwVytza3k1OEs1K2VlUk9SCjZPcWV5amgxam1Ld2xaTXE1ZC9wWHBkdUlGOWZoSHBF
T1JsQUhMcFZLL3N3c29IdmhPUGM3Smc0T1FPRkNLbFVBd1VwOE1tUGkrb0wKaG1VWkVkUHBDU1BlYUpNRHl
UWWNJVzdPakdieG1URFkxN1BESGZpQkxxaTlnZ3RtL29MTDRlQWFnc05BZ1FJREFRQUJvMEl3UURBZApCZ0
5WSFE0RUZnUVV2WWlIeVkvMnBBb0xxdXZGL3BFam5hdEtpakl3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQ
TFVZEV3RUIvd1FGCk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUIxOCtrbVBOT20zSnBJV21n
VjA1MHZRYlRsc3d5YjJ6cmd4dk1UZnZDcjQKTjVFWTNBVElaSmtyR0cyQUExbkpydmhZMEQ3dHd5T2ZhVHl
HT0J5ZTc5b25lTkdFTjNHS1BFczV6MzVGQnRZdDJJcE5lQkxXcmNMVAp5OUxRUWZNbU5rcWJsV3dNN3VYUl
F5ZG13WWozZXJNZ2JPcXdhU3ZISU9nTUE4UkJCWm5pUCtScitLQ0dnY2VFeGgvVlM0RVNzaFloCkxCT2hnT
EplREVvVG5pRFlZa0Nya09wa1NpK3NEUUVTZVVXb0w0Y1phTWppaGNjd3NuWDVPRCt5d0pPMGErSURSTTVu
b04rSjFxMk0KZHFNVHc1UmhLMnZaYk1FSENpSUhoV3lGSkVhcHZqK0xlSVNDZmlRTW5mMkJOK01scU8wMlR
wVXN5WnlRMnV5cFFqeXR0Z0k9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkJ1eXBhc3MgQ2xhc3MgMi
BDQSAxCj09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEVXpDQ
0FqdWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCTE1Rc3dDUVlEVlFRR0V3Sk9UekVkTUJzR0Ex
VUVDZ3dVClFuVjVjR0Z6Y3lCQlV5MDVPRE14TmpNek1qY3hIVEFiQmdOVkJBTU1GRUoxZVhCaGMzTWdRMnh
oYzNNZ01pQkRRU0F4TUI0WERUQTIKTVRBeE16RXdNalV3T1ZvWERURTJNVEF4TXpFd01qVXdPVm93U3pFTE
1Ba0dBMVVFQmhNQ1RrOHhIVEFiQmdOVkJBb01GRUoxZVhCaApjM01nUVZNdE9UZ3pNVFl6TXpJM01SMHdHd
1lEVlFRRERCUkNkWGx3WVhOeklFTnNZWE56SURJ
Z1EwRWdNVENDQVNJd0RRWUpLb1pJCmh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBSXM4QjBYWTl0L21
4OHE2alVQRlI0MndXc0U0MjVLRUhLOFQxQTl2TmtZZ3hDN00KY1hBMG9qVFROeTdZM1RwM0w4RHJLZWhjMH
JXcGtUU0hJbG4rek52bm1hK1d3YWpIUU4ybEZZeHV5SHlYQTh2bUlQTFhsMTh4b1M4Mwowcjd1dnFtdHFFe
WVJV1pETzZpODh3bWpPTlZaSk1IQ1IzYXhpRnlDTzdzcnBnVFhqQWVQemRWQkhmQ3V1Q2tzbEZKZ05KUTcy
dUE0CjBaMHpQaFgwa3pMRkFOcTFLV1lPT25nUElWSmZBdVdTZXlYVGtoNHZGWjJCNUoyTzZPK0p6aFJNVkI
wY2dSSk5jS2krRUFVWGZoL1IKdUZkVjdjMjdVc0t3SG5qQ1RUWm95MVltd1ZMQnZYYjNXTlZ5Zmg5RWRyc0
FpUjBXblZFMTcwM0NWdTlyNEl3N0Rla0NBd0VBQWFOQwpNRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQ
mdOVkhRNEVGZ1FVUDQyYVdZdjhlM3VjbzY4NHNEbnRrSEdBMXNnd0RnWURWUjBQCkFRSC9CQVFEQWdFR01B
MEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQVZHbjRUaXJub0I2TkxKekt5UUpIeUlkRmtoYjVqYXRMUGdjSVY
KMVhwK0RDbXNOeDRjZkhaU2xkcTFmeU9oS1hkbHlUS2RxQzVXcTJCMnpoYTBqWDk0d05XWlVZTi9YdG0rRE
toUTdTTEhyUVZNZHZ2dAo3aDVIWlBiM0ozMWNLQTlGeFZ4aVhxYWFrWkczVXhjdTNLMWduWlprT2IxbmFMS
3VCY3RONTE4ZlY0YlZJSndvKzI4VE9QWDJFWkwyCmZabGVId3pvcTBRa0tYSkFQVFpTcjR4WWtIUEI3R0Vz
ZWFIc2g3VS8yazNaSVFBdzNwRGFEdE1hU0trK2hRc1VpNHk4UVo1cTl3NXcKd0RYM09hSmRadEI3V1orb1J
4S2FKeU9rTFk0bmc1SWdvZGNWZi9FdUdPNzBTSDh2Zi9HaEdMV2hDNVNnWWlBeW5CMzIxTysvVElobwotLS
0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpCdXlwYXNzIENsYXNzIDMgQ0EgMQo9PT09PT09PT09PT09PT09P
T09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRFV6Q0NBanVnQXdJQkFnSUJBakFOQmdrcWhr
aUc5dzBCQVFVRkFEQkxNUXN3Q1FZRFZRUUdFd0pPVHpFZE1Cc0dBMVVFQ2d3VQpRblY1Y0dGemN5QkJVeTA
1T0RNeE5qTXpNamN4SFRBYkJnTlZCQU1NRkVKMWVYQmhjM01nUTJ4aGMzTWdNeUJEUVNBeE1CNFhEVEExCk
1EVXdPVEUwTVRNd00xb1hEVEUxTURVd09URTBNVE13TTFvd1N6RUxNQWtHQTFVRUJoTUNUazh4SFRBYkJnT
lZCQW9NRkVKMWVYQmgKYzNNZ1FWTXRPVGd6TVRZek16STNNUjB3R3dZRFZRUUREQlJDZFhsd1lYTnpJRU5z
WVhOeklETWdRMEVnTVRDQ0FTSXdEUVlKS29aSQpodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtTTzE
zVFpLV1RlWHgrSGdKSHFUam5tR2NaRUM0RFZDNjlUQjRzU3ZlWm44QUt4CmlmWmdpc1Jic0VMUndDR295K0
diNzJSUnRxZlBGZlYwZ0dnRWtLQllvdVowcGxOVFZVaGpQNUpXM1NST2p2aTZLLy96TklxZUtOYzAKbjZ3d
jFnL3hwQys5VXJKSmhXMDVOZkJFTUpOR0pQTzI1MVA3dkdHdnFhTVUrOElYRjRSczRIeUkrTWtjVnl6d1BY
NlV2Q1dUaE9pYQpBSnBGQlVKWGdQUk96dG11T2ZiSVV4QU1aVHBIZTJEQzF2cVJ5Y1p4YkwyUmh6eVJoa21
yOHcrZ2JDWjJYaHlzbTNIbGpieWJJUjZjCjFqaCtKSUFWTVlLV3NVblRZamRiaUF3S1lqVCtwMGgrbWJFd2
k1QTNsUnlvSDZVc2pmUlZ5TnZkV1FyQ3JYaWc5SXNDQXdFQUFhTkMKTUVBd0R3WURWUjBUQVFIL0JBVXdBd
0VCL3pBZEJnTlZIUTRFRmdRVU9CVG15UENwcEFQMFRqNGlvMXZ5MXVDdFFIUXdEZ1lEVlIwUApBUUgvQkFR
REFnRUdNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUFCWjZPTXlTVTlFMk5kRm0vc29UNEpYSkVWS2lyWmd
DRlBCZHk3CnBZbXJFek1xbmppM2pHOENjbVBIYzNjZUNRYTZPeWg3cEVmSllXc0lDQ0Q4aWdXS0g3eTZ4c0
wrejI3c0V6TnhaeTVwK3Frc1AyYkEKRWxsTkMxUUNrb1M3MnhMdmczQndlTWhUK3QvR3h2L2NpQzhId0VtZ
E1sZGcwL0wybVNsZjU2b0J6S3d6cUJ3S3U1SEVBNkJ2dGpUNQpodE96ZGxTWTlFcUJzMU9kVFVEczVYY1RS
YTlicWgvWUwweUNlLzRxeEZpN1QveWUvUU5sR2lvT3c2VWdGcFJyZWFhaUVyUzdHcVFqCmVsL3dyb1FrNVB
Ncis0b2tveWVZWmRvd2RYYjhHWkhvMit1YlB6Sy9RSmNISnJyTTg1U0ZTbm9uazgrUVF0UzRXeGFtNTh0QU
E5MTUKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKRUJHIEVsZWt0cm9uaWsgU2VydGlmaWthIEhpem1ld
CBTYVx4QzRceDlGbGF5XHhjNFx4YjFceDYzXHhjNFx4YjFzXHhjNFx4YjEKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1
CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUY1ekNDQTgrZ0F3SUJBZ0lJVEs5elFoeU9kQUl3RFFZSktvWk
lodmNOQVFFRkJRQXdnWUF4T0RBMkJnTlZCQU1NTDBWQ1J5QkYKYkdWcmRISnZibWxySUZObGNuUnBabWxyW
VNCSWFYcHRaWFFnVTJIRW4yeGhlY1N4WThTeGM4U3hNVGN3TlFZRFZRUUtEQzVGUWtjZwpRbWxzYWNXZmFX
MGdWR1ZyYm05c2IycHBiR1Z5YVNCMlpTQklhWHB0WlhSc1pYSnBJRUV1eFo0dU1Rc3dDUVlEVlFRR0V3SlV
VakFlCkZ3MHdOakE0TVRjd01ESXhNRGxhRncweE5qQTRNVFF3TURNeE1EbGFNSUdBTVRnd05nWURWUVFERE
M5RlFrY2dSV3hsYTNSeWIyNXAKYXlCVFpYSjBhV1pwYTJFZ1NHbDZiV1YwSUZOaHhKOXNZWG5Fc1dQRXNYU
EVzVEUzTURVR0ExVUVDZ3d1UlVKSElFSnBiR25GbjJsdApJRlJsYTI1dmJHOXFhV3hsY21rZ2RtVWdTR2w2
YldWMGJHVnlhU0JCTHNXZUxqRUxNQWtHQTFVRUJoTUNWRkl3Z2dJaU1BMEdDU3FHClNJYjNEUUVCQVFVQUE
0SUNEd0F3Z2dJS0FvSUNBUUR1b0lSaDBEcHFaaEF5MkRFNGY2ZW41ZjJoNGZ1WGQ3aHhsdWdUbGthRFQ3Yn
kKWDNKV2JoTmdwUUdSNGx2RnpWY2ZkMk5SL3k4OTI3ay9xcWsxNTNuUTlkQWt0aUhxNnlPVS9pbS8rNG1SR
EdTYUJVb3J6QXp1OFQyYgpnbW1rVFBpYWIrY2kyaEM2WDVMOEdDY0txS3BFK2k0c3RQdEdtZ2dEZzNLcmlP
UnFjc25sWlI5dUtnK2RzK2c3NUF4dWV0cFgvZGZyCmVZdGVJQWJUZGd0c0FwV2psdVRMZGxIUktKMmhHdnh
Fb2szTWVuYW9EVDIvRjA4aWlGRDlycmJza0ZCS1c1K1ZRYXJLRDdKSy9vQ1oKVHFOR0ZhdjRjMEpxd21aMn
NRb21GZDJUa3V6YnFWOVVJbEtSY0YwVDZranNiZ05zMmQxcy9Pc05BLyttZ3hLYjhhbVREOFVtVERHeQpZN
WxoY3VjcVpKblN1T2wxNG55cHFab2Fxc05XMnhDYVBJTlN0bnVXdDZ5SGQ2aTU4bWNMbEVPenJ6NXora0ky
c1NYRkNqRW1OMVpuCnVxTUxmZGIzaWMxbm9iYzZIbVpQOXFCVkZDVk1MRE1OcGtHTXZRUXhhaEJ5Q3AwT0x
uYTlYdk5SaVl1b1AxVnp2OXM2eGlRRmxwSkkKcWt1TktnUGxWNUVROUdvb0ZXNUhkNFJjVVhTZkdlbm1IbU
1XT2VNUkZlTllHa1M5eThSc1p0ZUVCdDh3OURlaVF5SjUwaEJzMzd2bQpFeEg4bllRS0UzdndPOUQ4b3dyW
GllcVdmbzFJaFI1a1g5dFVvcXpWZWdKNWE5S0s4R2ZhWlhJTkZIRGs2WTU0anpKMGZGZnkxdGIwCk5va2Ir
Q2xzaTduMmw5R2tMcXErQ3huQ1JlbHdYUUlEQUozWm8yTXdZVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQTR
HQTFVZER3RUIKL3dRRUF3SUJCakFkQmdOVkhRNEVGZ1FVNTg3R1Qvd1daNWI2U3FNSHdRU255MnJlMmtjd0
h3WURWUjBqQkJnd0ZvQVU1ODdHVC93VwpaNWI2U3FNSHdRU255MnJlMmtjd0RRWUpLb1pJaHZjTkFRRUZCU
UFEZ2dJQkFKdVltbDIrOHlnamRzWnM5My9tUUo3QU50eVZEUjJ0CkZjVTIyTlU1Ny9JZUlsNnpnclJkdTB3
YXlwSU4zMGNrSHJNazJwR0k2WU53M1pQWDZicXozeFphUHQ3Z3lQdlQvV3dwK0JWR29HZ20KekpOU3JvSUJ
rNURLZDhwTlNlL2lXdGtxdlRET1RMS0J0akRPV1UvYVdSMXFlcVJGc0lJbWdZWjI5ZlVRQUxqdXN3bm9UNG
NDQjY0awpYUEJmckFvd3pJcEFvSE1Fd2Z1SkpQYWFIRnkzUEFwbk5nVUlNYk92MkFGb0t1QjRqM1RldUZHa
2pHd2dQYUw3czlRSi9YdkNnS3FUCmJDbVlJYWk3RnZPcEVsOTB0WWVZOHBVbTN6VHZpbE9SaUYwYWxLTS9m
Q0w0MTRpNnBveVdxRDFTTkdLZkFCNVVWVUpueGsxR2o3c1UKUlQwS2xoYU9FS0dYbWRYVE1JWE0zclJ5dDd
5S1BCZ3BhUDNjY1FmdUpEbHErdTJsckRnditSNFFEZ1p4R2hCTS9uVisveDVYT1VMSwoxK0VWb1ZaVldSdl
JvNjhSMkU3RHBTdnZrTC9BN0lJVFc0M1djaXlUVG85cUtkK0ZQTk1ONEtJWUVzeFZMMGUzcDVzQy9rSDJpR
Xh0CjJxa0JSNE5rSjJJUWd0WVNlMTRESHpTcHlaSCtyMTF0aGllM0k2cDFHTW9nNTdBUDE0a09wbWNpWS9T
RFFTc0dTN3RZMWRIWHQ3a1EKWTlpSlNyU3EzUlpqOVc2K1lLSDQ3ZWpXa0U4YXhzV2dLZE9uSWFqMVdqejN
4MG1pSVpwS2xWSWdsbkthWnN2MzBvWkRmQ0srbHZtOQpBYWhIM2VVN1FQbDFLNXNyUm1TR2pSNzBqL3NIZD
lEcVNhSWNqVklVcGdxVAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpjZXJ0U0lHTiBST09UIENBCj09P
T09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURPRENDQWlDZ0F3SUJBZ0lH
SUFZRkZuQUNNQTBHQ1NxR1NJYjNEUUVCQlFVQU1Ec3hDekFKQmdOVkJBWVRBbEpQTVJFd0R3WUQKVlFRS0V
3aGpaWEowVTBsSFRqRVpNQmNHQTFVRUN4TVFZMlZ5ZEZOSlIwNGdVazlQVkNCRFFUQWVGdzB3TmpBM01EUX
hOekl3TURSYQpGdzB6TVRBM01EUXhOekl3TURSYU1Ec3hDekFKQmdOVkJBWVRBbEpQTVJFd0R3WURWUVFLR
XdoalpYSjBVMGxIVGpFWk1CY0dBMVVFCkN4TVFZMlZ5ZEZOSlIwNGdVazlQVkNCRFFUQ0NBU0l3RFFZSktv
WklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUxjenVYN0kKSlVxT3RkdTBLQnVxVjVEbzBTTFRaTHJ
UaytqVXJJWmhRR3BnVjJoVWhFMjhhbFFDQmYvZm01b3FybDBIajByREtIL3YreXY2ZWZISApyZkFRVXlTUW
kyYkpxSWlycjFxakFPbSt1a2J1VzNON0xCZUNnVjVpTEtFQ1piTzl4U3NBZnNUOEF6TlhEZTNpK3M1ZFJkW
TR6VFcyCnNzSFFuSUZLcXVTeUFWd2RqMStaeExHdDI0Z2g2NUFJZ29Eek1LTkQ1cENDcmxVb1NlMWIxNmtR
T0E3K2oweGJtMGJxUWZXd0NIVEQKMElnenRuelhkTi9jaE5GRERuVTVvU1ZBS09wNHl3NHNMam1kakl0dUZ
od3ZKb0lRNHVObGxBb0V3RjczWFZ2NEVPTFF1bnBMKzk0MwpBQUFhV3lqajBweHpQaktIbUtISlVTL1gzcX
d6czA4Q0F3RUFBYU5DTUVBd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCCkFmOEVCQU1DQWNZd
0hRWURWUjBPQkJZRUZPQ01tOXNsU2JQeGZJYldza0tIQzlCcm9ObmtNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0
SUIKQVFBKzBoeUpMalg4K0hYZDVuOWxpUFJ5VE1rczF6Sk84OTBaZVVlOWpqdGJrdzlRU1NRVGF4UUdjdTh
KMDZHaDQwQ0V5ZWNZTW5ROApTRzRQbjB2VTl4N1RrNFprVkpkamNsRFZWYy82SUpNQ29wdkRJNU5PRmxWMm
9IQjViYzBoSDg4dkxid1o0NGd4K0ZrYWdRbklsNlowCngyREVXOHhYanJKMS9Sc0NDZHRaYjNLVGFmY3hRZ
GFJT0wrSHNyMFdlZm1xNUw2SUpkMWhKeU1jdFRFSEJEYTBHcEM5b0hSeFVJbHQKdkJUakQ0YXU4YXMreDZB
SnpLTkkwZURiWk9lU3RjK3Zja053aS9uRGhEd1RxbjZTbTFkVGsvcHd3cEVPTWZtYloxM3BsamhlWDdOegp
Ub2dWWjk2ZWRoQmlJTDVWYVpWREFEbE45dTZ3V2s1SlJGUllYMEtECi0tLS0tRU5EIENFUlRJRklDQVRFLS
0tLS0KCkNOTklDIFJPT1QKPT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRFZUQ
0NBajJnQXdJQkFnSUVTVE1BQVRBTkJna3Foa2lHOXcwQkFRVUZBREF5TVFzd0NRWURWUVFHRXdKRFRqRU9N
QXdHQTFVRQpDaE1GUTA1T1NVTXhFekFSQmdOVkJBTVRDa05PVGtsRElGSlBUMVF3SGhjTk1EY3dOREUyTUR
jd09URTBXaGNOTWpjd05ERTJNRGN3Ck9URTBXakF5TVFzd0NRWURWUVFHRXdKRFRqRU9NQXdHQTFVRUNoTU
ZRMDVPU1VNeEV6QVJCZ05WQkFNVENrTk9Ua2xESUZKUFQxUXcKZ2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQ
TRJQkR3QXdnZ0VLQW9JQkFRRFROZmMvYzNldDZGdHpGOExSYisxVnZHN3E2S1I1c216RApvKy9objdFN1NJ
WDFtbHdoSWhBc3hZTE8ydU9hYmpmaGh5emN1UXhhdW9oVjMvMnEyeDh4NmdIeDN6a0J3UlA5U0ZJaHhGWGY
ydGl6ClZIYTZkTEczZmRmQTZQWlp4VTNJdmEwZkZOcmZXRVFsTWhrcXgzNStqcTQ0c0RCN1IzSUpNZkF3Mj
hNYmRpbTdhWFpPVi9rYlpLS1QKVnJkdm1XN2JDZ1NjRWVPQUg4dGpsQkFLcWVGa2dqSDVqQ2Z0cHBrQTluQ
1RHUGloTklhajNYckNHSG4yZW1VMXo1RHJ2VE9UbjFPcgpjenZtbXpRZ0x4M3ZxUjFqR3FDQTJ3TXYrU1lh
aHRLTnU2bStVanFIWjBnTnY3U2cyQ2ErSTE5ek4zOG01cElFbzMvUElLZTM4enJLCnk1bkxBZ01CQUFHamN
6QnhNQkVHQ1dDR1NBR0crRUlCQVFRRUF3SUFCekFmQmdOVkhTTUVHREFXZ0JSbDhqR3RLdmYzM1ZLV0NzY0
MKd1E3dnB0VTdFVEFQQmdOVkhSTUJBZjhFQlRBREFRSC9NQXNHQTFVZER3UUVBd0lCL2pBZEJnTlZIUTRFR
mdRVVpmSXhyU3IzOTkxUwpsZ3JIQXNFTzc2YlZPeEV3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUVzMTdz
emtyci9EYnEyZmxUdExQMXNlMzFjcG9sbktPT0s1Ckd2K2U1bTR5M1I2dTZqVzM5Wk9SVHRwQzRjTVhZRkR
5MFZ3bXVZSzM2bTNrbklUbkEza1hyNWc5bE52SHVnRG51TDhCVjhGM1JUSU0KTy9HMEhBaXcvVkdnb2QyYU
hSTTJtbTIzeHp5NTRjWFpGL3FEMVQwVm9EeTdIZ3ZpeUpBL3FJWU0vUG1MWG9YTFQxdExZaEZIeFVWOApCU
zlCc1o0UWFSdVpsdUJWZWZ0T2hwbTRsTnFHT0dxVG8rZkxidVhmNmlGVmlaeDlmWCtZOVFDSjd1T0V3RnlX
dGNWRzZrYmdoVlcyCkc4a1Mxc0hOellEekFnRTh5R25MUlVoajJKVFE3SVVPTzA0UlpmU0NqS1k5cmk0aWx
BbklYT284Z1YwV0tnT1hGbFVKMjRwQmdwNW0KbXhFPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpBcH
BsaWNhdGlvbkNBIC0gSmFwYW5lc2UgR292ZXJubWVudAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09P
T09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRG9EQ0NBb2lnQXdJQkFnSUJNVEFOQmdr
cWhraUc5dzBCQVFVRkFEQkRNUXN3Q1FZRFZRUUdFd0pLVURFY01Cb0dBMVVFQ2hNVApTbUZ3WVc1bGMyVWd
SMjkyWlhKdWJXVnVkREVXTUJRR0ExVUVDeE1OUVhCd2JHbGpZWFJwYjI1RFFUQWVGdzB3TnpFeU1USXhOVE
F3Ck1EQmFGdzB4TnpFeU1USXhOVEF3TURCYU1FTXhDekFKQmdOVkJBWVRBa3BRTVJ3d0dnWURWUVFLRXhOS
1lYQmhibVZ6WlNCSGIzWmwKY201dFpXNTBNUll3RkFZRFZRUUxFdzFCY0hCc2FXTmhkR2x2YmtOQk1JSUJJ
akFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgpDZ0tDQVFFQXAyM2dkRTZIajZVRzNtaWkyNGFaUzJ
RTmNmQUtCWnVPcXVITUx0SnFPOEY2dEpkaGpZcSt4cHFjQnJTR1VlUTNEblI0CmZsK0tmNVNrMTBjSS9WQm
FWdVJvckNoem9IdnBmeGlTUUU4dG5mV3VSRWh6TmdhZVpDdzdOQ1BiWENia2NYbVAxRzU1SXJtVHdjck4Kd
1ZidGlHclhvRGtoQkZjc292VzhSMEZQWGpRaWxiVWZLVzFlU3ZOTmNyNUJWaUNIL09sUVI5Y3dGTzVjakZX
NldZMkgvQ1BlazlBRQpqUDN2YmIzUWVzbWxPbXB
5TThaS0RRVVhLaTE3c2FmWTF2Qys5RC9xRGlodFFXRWpkbmpEdUdXazgxcXV6TUtxMmVkWTNyWituWVZ1Cm
55b0tiNThES1RDWEtCMjh0ODlVS1U1Uk1ma250aWdtL3FKajVrRVc4RE9ZUndJREFRQUJvNEdlTUlHYk1CM
EdBMVVkRGdRV0JCUlUKV3NzbVAzSE1sRVlObGxQcWEwalFrLzVDZFRBT0JnTlZIUThCQWY4RUJBTUNBUVl3
V1FZRFZSMFJCRkl3VUtST01Fd3hDekFKQmdOVgpCQVlUQWtwUU1SZ3dGZ1lEVlFRS0RBL21sNlhtbkt6bG0
3M21sTC9sdXB3eEl6QWhCZ05WQkFzTUd1T0NvdU9EbCtPRHF1T0NzZU9ECnZPT0N0K09EcCtPRHMwTkJNQT
hHQTFVZEV3RUIvd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUJBRGxxUkhaM09EcnMKbzJkR
0QvbUxCcWo3YXBBeHpuN3MydEdKZkhyckxneTltVExuc0NUV3cvLzFzb2dKaHl6alZPR2pwcklJQzhDRnFN
alNuSEgySFo5ZwovRGd6RStHZTNBdGYyaFpRS1hzdmNKRVBtYm8wTkkyVmRNVitlS2xtWGIzS0lYZENFS3h
tSmozZWthdjlGZkJ2N1d4ZkVQanpGdllECmlvK25FaEVNeS8wL2VjR2MvV0x1bzg5VURORXJYeGMrNHo2L3
dDcytDWnYraUtaK3RKSVgvQ09VZ2IxdXA4V013dXNSUmR2NFFjbVcKZHVwd1gza1NhK1NqQjFvRjd5ZEp6e
UdmaWt3SmNHYXBKc0VyRVU0ejBnNzgxbXpTRGpKa2FQK3RCWGhmQXgybzQ1Q3NKT0FQUUtkTApyb3NvdDRM
S0dBZm10MXQwNlNBWmY3SWJpVlE9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkdlb1RydXN0IFByaW1
hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT
09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQvakNDQXVhZ0F3SUJBZ
0lRRmF4dWxCbXllVXRCOWllcHd4Z1BIekFOQmdrcWhraUc5dzBCQVFzRkFEQ0JtREVMTUFrR0ExVUUKQmhN
Q1ZWTXhGakFVQmdOVkJBb1REVWRsYjFSeWRYTjBJRWx1WXk0eE9UQTNCZ05WQkFzVE1DaGpLU0F5TURBNEl
FZGxiMVJ5ZFhOMApJRWx1WXk0Z0xTQkdiM0lnWVhWMGFHOXlhWHBsWkNCMWMyVWdiMjVzZVRFMk1EUUdBMV
VFQXhNdFIyVnZWSEoxYzNRZ1VISnBiV0Z5CmVTQkRaWEowYVdacFkyRjBhVzl1SUVGMWRHaHZjbWwwZVNBd
ElFY3pNQjRYRFRBNE1EUXdNakF3TURBd01Gb1hEVE0zTVRJd01USXoKTlRrMU9Wb3dnWmd4Q3pBSkJnTlZC
QVlUQWxWVE1SWXdGQVlEVlFRS0V3MUhaVzlVY25WemRDQkpibU11TVRrd053WURWUVFMRXpBbwpZeWtnTWp
Bd09DQkhaVzlVY25WemRDQkpibU11SUMwZ1JtOXlJR0YxZEdodmNtbDZaV1FnZFhObElHOXViSGt4TmpBME
JnTlZCQU1UCkxVZGxiMVJ5ZFhOMElGQnlhVzFoY25rZ1EyVnlkR2xtYVdOaGRHbHZiaUJCZFhSb2IzSnBkS
GtnTFNCSE16Q0NBU0l3RFFZSktvWkkKaHZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOemlYbUpZSFRO
WE9USXordXZMaDR5bjFFcmRCb2pxWkk0eG1LVTRrQjZZenk1agpLL0JHdkVTeWlhSEFLQXhKY0NHVm4yVEF
wcE1TQW1VbWhzYWxpZkQ2MTRTZ2NLOVBHcGMvQmtUVnlldHlFSDNrTVNqN0hHSG1LQWRFCmM1SWlhYWNEaU
d5ZFk4aFMycGduNXdoTWNENjB5UkxCeFdlRFhUUHpBeEhzYXRCVDR0RzZObUNVZ0x0aFkyeGJGMzdmUUpRZ
XF3M0MKSVNod2lQL1dKbXhzWUFRbFRsVitmZSsvbEVqZXR4M2RjSTBGWDRpbG0vTEM3dXJSUUVGdFlqZ2RW
Z2JGQTBkUklCbjhleEFMRG1LdQpkbFcvWDNlK1Bra0JVejJZSlFOMkpGb2R0TnVKNm5ubHRyTTdQN3BNS0V
GL0JxeHFqc0hROWdVZGZlWkNodU9sMVVjQ0F3RUFBYU5DCk1FQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU
9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZNUjV5bzZoVGdNZEhOeHIKMnpGYmxENC9NSDh0T
UEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBdHhSUFBWb0I3ZW5pOW42NHNtZWZ2MnQrVVhnbHBwK2R1YUl5
OQpjcjVIcVE2WEVyaEs4V1RUT2Q4bE5OVEJ6VTZCOEE4RXhDU3pOSmJHcHFvdzMyaGhjOWY1am9XSjd3NWV
sU2hLS2llUEVJNHVmSWJFCkFwN2FESGRsRGtRTmt2MzlzeFkyK2hFTkhZd09CNGxxS1ZiM2N2VGRGWngzTl
daWHF4TlQySTdCUU1YWEV4WmFjc2UzYVFIRWVyR0QKQVdoOWpVR2hsQmpCSlZ6ODhQNkRBb2Q4RFEzUExna
GNTa0FOUHV5QlllWWsyOHJnRGkwSHNqNVczSTMxUVlVSFNKc01DOHRKUDMzcwp0LzNMaldlSkdxdnR1eDZq
QUFnSUZ5cUNYREZkUm9vdEQ0YWJkTmxGKzlSQXNYcXFhQzJHc3BraTRjRXJ4NXo0ODErb2doTHJHUkV0Ci0
tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMgo9PT09PT09PT
09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNpRENDQWcyZ0F3S
UJBZ0lRTmZ3bVhObUVUOGs5SmoxWG02N1hWakFLQmdncWhrak9QUVFEQXpDQmhERUxNQWtHQTFVRUJoTUMK
VlZNeEZUQVRCZ05WQkFvVERIUm9ZWGQwWlN3Z1NXNWpMakU0TURZR0ExVUVDeE12S0dNcElESXdNRGNnZEd
oaGQzUmxMQ0JKYm1NdQpJQzBnUm05eUlHRjFkR2h2Y21sNlpXUWdkWE5sSUc5dWJIa3hKREFpQmdOVkJBTV
RHM1JvWVhkMFpTQlFjbWx0WVhKNUlGSnZiM1FnClEwRWdMU0JITWpBZUZ3MHdOekV4TURVd01EQXdNREJhR
ncwek9EQXhNVGd5TXpVNU5UbGFNSUdFTVFzd0NRWURWUVFHRXdKVlV6RVYKTUJNR0ExVUVDaE1NZEdoaGQz
UmxMQ0JKYm1NdU1UZ3dOZ1lEVlFRTEV5OG9ZeWtnTWpBd055QjBhR0YzZEdVc0lFbHVZeTRnTFNCRwpiM0l
nWVhWMGFHOXlhWHBsWkNCMWMyVWdiMjVzZVRFa01DSUdBMVVFQXhNYmRHaGhkM1JsSUZCeWFXMWhjbmtnVW
05dmRDQkRRU0F0CklFY3lNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRW90V2NnbnVWbmZGU2VJZ
itpaGEvQmViZm93SlBEUWZHQUZHNkRBSlMKTFNLa1FqbkUvby9xeWNHKzFFMy9uM3FlNHJGOG1xMm5oZ2x6
aDlIbm11TjZwYXB1KzdxemNNQm5pS0kxMUtPYXNmMnR3dTh4K3FpNQo4L3NJeHBIUit5bVZvMEl3UURBUEJ
nTlZIUk1CQWY4RUJUQURBUUgvTUE0R0ExVWREd0VCL3dRRUF3SUJCakFkQmdOVkhRNEVGZ1FVCm10Z0FNQU
RuYTMrRkdPNkx0czZLRFBnUjRic3dDZ1lJS29aSXpqMEVBd01EYVFBd1pnSXhBTjM0NEZkSFc2Zm1Dc085O
VlDS2x6VU4KRzRrOFZJWjNLTXFoOUhuZXRlWTRzUEJsY0l4L0FsVEN2Ly9Zb1Q3Wnp3SXhBTVNObFB6Y1U5
TGNuWGdXSHhVekkxTlM0MW94WFozSwpycjBUS1VRTkoxdW81MmljRXZkWVB5NXlBbGVqajZFVUxnPT0KLS0
tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczCj09PT09PT09PT
09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRUtqQ0NBeEtnQXdJQ
kFnSVFZQUdYdDBhbjZyUzBtdFpMTC9lUSt6QU5CZ2txaGtpRzl3MEJBUXNGQURDQnJqRUxNQWtHQTFVRQpC
aE1DVlZNeEZUQVRCZ05WQkFvVERIUm9ZWGQwWlN3Z1NXNWpMakVvTUNZR0ExVUVDeE1mUTJWeWRHbG1hV05
oZEdsdmJpQlRaWEoyCmFXTmxjeUJFYVhacGMybHZiakU0TURZR0ExVUVDeE12S0dNcElESXdNRGdnZEdoaG
QzUmxMQ0JKYm1NdUlDMGdSbTl5SUdGMWRHaHYKY21sNlpXUWdkWE5sSUc5dWJIa3hKREFpQmdOVkJBTVRHM
1JvWVhkMFpTQlFjbWx0WVhKNUlGSnZiM1FnUTBFZ0xTQkhNekFlRncwdwpPREEwTURJd01EQXdNREJhRncw
ek56RXlNREV5TXpVNU5UbGFNSUd1TVFzd0NRWURWUVFHRXdKVlV6RVZNQk1HQTFVRUNoTU1kR2hoCmQzUmx
MQ0JKYm1NdU1TZ3dKZ1lEVlFRTEV4OURaWEowYVdacFkyRjBhVzl1SUZObGNuWnBZMlZ6SUVScGRtbHphVz
l1TVRnd05nWUQKVlFRTEV5OG9ZeWtnTWpBd09DQjBhR0YzZEdVc0lFbHVZeTRnTFNCR2IzSWdZWFYwYUc5e
WFYcGxaQ0IxYzJVZ2IyNXNlVEVrTUNJRwpBMVVFQXhNYmRHaGhkM1JsSUZCeWFXMWhjbmtnVW05dmRDQkRR
U0F0SUVjek1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBCk1JSUJDZ0tDQVFFQXNyOG5MUHZiMkZ
2ZGVIc2JubmRtZ2NzK3ZIeXU4NllubWpTamFERnhPRE5pNVBOeFpubXhxV1dqcFl2VmoyQXQKUDBMTXFtc3
l3Q1BMTEVIZDVOLzhZWnppYzdJaWxSRkRHRi9FdGg5WGJBb0ZXQ0xJTmt3NmZLWFJ6NGF2aUtkRUFoTjBjW
E1LUWxrQworQnNVYTBMZmIxKzZhNEtpblZ2blNyMGVBWExiUzNUb08zOS9mUjhFdENhYjRMUmFyRWM5VmJq
WHNDWlNLQUV4UUdiWTJTUzk5aXJZCjdDRkpYSnYyZXVsL1ZUVitsbXVOazVNbnk1Szc2cXhBd0ovQytJRFB
YZlJhM001MGhxWStiQXRUeXIyU3poa0djdVlNWERocHh3VFcKdkd6T1cvYjNhSnpjSlJWSWlLSHBxZmlZbk
9EejFURW9ZUkZzWjVhTk9abkx3a1VrT1FJREFRQUJvMEl3UURBUEJnTlZIUk1CQWY4RQpCVEFEQVFIL01BN
EdBMVVkRHdFQi93UUVBd0lCQmpBZEJnTlZIUTRFRmdRVXJXeXFsR0NjN2VULytqNEtkQ3RqQS9lMldiOHdE
UVlKCktvWklodmNOQVFFTEJRQURnZ0VCQUJwQTJKVmxyQW1TaWNZNTlCRGxxUTVtVTExNDN2b2trYnZuUkZ
IZnhoWTBDdTlxUkZIcUt3ZUsKQTNyRDZ6OEtMRklXb0N0RHVTV1FQM0NwTXlWdFJSb29PeWZQcXNNcFFodm
ZPMHpBTXpSYlFZaS9heXRscnlqdnN2WERxbWJPZTFidQp0OGpMWjhISm5Cb1l1TVREU1FQeFlBNVF6VWJGO
DNkNTk3WVY0RGpieHk4b29Bdy9keVowMlNVUzJqSGFHaDdjS1VHUklqeHBwN3NDCjhyWmNKd09KOUFicW0r
UnlndU9oQ2NIcEFCblRQdFJ3YTdweHBxcFlydlM3Nld5Mjc0Zk1tN3YvT2VaV1lkTUtwOFJjVEdCN0JYY20
KZXIvWUIxSXNZdmR3WTlrNXZHOGN3bm5jZGltdnpzVXNaQVJlaURadU1kUkFHbUkwTmo4MUFhNnNZNkE9Ci
0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob
3JpdHkgLSBHMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1C
RUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNyakNDQWpXZ0F3SUJBZ0lRUExMMFNBb0E0djdySkR0ZVlEN0R
hekFLQmdncWhrak9QUVFEQXpDQm1ERUxNQWtHQTFVRUJoTUMKVlZNeEZqQVVCZ05WQkFvVERVZGxiMVJ5ZF
hOMElFbHVZeTR4T1RBM0JnTlZCQXNUTUNoaktTQXlNREEzSUVkbGIxUnlkWE4wSUVsdQpZeTRnTFNCR2IzS
WdZWFYwYUc5eWFYcGxaQ0IxYzJVZ2IyNXNlVEUyTURRR0ExVUVBeE10UjJWdlZISjFjM1FnVUhKcGJXRnll
U0JEClpYSjBhV1pwWTJGMGFXOXVJRUYxZEdodmNtbDBlU0F0SUVjeU1CNFhEVEEzTVRFd05UQXdNREF3TUZ
vWERUTTRNREV4T0RJek5UazEKT1Zvd2daZ3hDekFKQmdOVkJBWVRBbFZUTVJZd0ZBWURWUVFLRXcxSFpXOV
VjblZ6ZENCSmJtTXVNVGt3TndZRFZRUUxFekFvWXlrZwpNakF3TnlCSFpXOVVjblZ6ZENCSmJtTXVJQzBnU
m05eUlHRjFkR2h2Y21sNlpXUWdkWE5sSUc5dWJIa3hOakEwQmdOVkJBTVRMVWRsCmIxUnlkWE4wSUZCeWFX
MWhjbmtnUTJWeWRHbG1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa2dMU0JITWpCMk1CQUdCeXFHU000OUFnRUc
KQlN1QkJBQWlBMklBQkJXeDZQMERGVVBsck91SE54Rmk3OUtETmxKOVJWY0xTbzE3VkRzNmJsOFZBc0JRcH
M4bEwzM0tTTGpIVUdNYwpLaUVJZkpvMjJBdiswU2JGV0RFd0tDWHpYVjJqdUxhbHRKTHRiQ3lmNjkxRGlhS
ThTMGlSSFZEc0p0L1dZQzY5SWFOQ01FQXdEd1lEClZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhF
QkFNQ0FRWXdIUVlEVlIwT0JCWUVGQlZmTlZkUlZmc2xzcTBEYWZ3Qm8vcSsKRVZYVk1Bb0dDQ3FHU000OUJ
BTURBMmNBTUdRQ01HU1dXYWJvQ2Q2THV2cGFpSWp3SDVIVFJxanlTa3dDWS90c1h6amJMa0dUcVE3bQpuZH
d4SExLZ3B4Z2NlZUhITmdJd09sYXZtblJzOXZ1RDREUFRDRitobk1KYm4wYld0c3VSQm1PaUJ1Y3pyRDZvZ
1JMUXk3clFrZ3UyCm5wYXFCQStLCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClZlcmlTaWduIFVuaXZl
cnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT0
9PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFdVRDQ0E2R2dBd0
lCQWdJUVFCckVaQ0d6RXlFRERydmtFaHJGSFRBTkJna3Foa2lHOXcwQkFRc0ZBRENCdlRFTE1Ba0dBMVVFC
kJoTUNWVk14RnpBVkJnTlZCQW9URGxabGNtbFRhV2R1TENCSmJtTXVNUjh3SFFZRFZRUUxFeFpXWlhKcFUy
bG5iaUJVY25WemRDQk8KWlhSM2IzSnJNVG93T0FZRFZRUUxFekVvWXlrZ01qQXdPQ0JXWlhKcFUybG5iaXd
nU1c1akxpQXRJRVp2Y2lCaGRYUm9iM0pwZW1WawpJSFZ6WlNCdmJteDVNVGd3TmdZRFZRUURFeTlXWlhKcF
UybG5iaUJWYm1sMlpYSnpZV3dnVW05dmRDQkRaWEowYVdacFkyRjBhVzl1CklFRjFkR2h2Y21sMGVUQWVGd
zB3T0RBME1ESXdNREF3TURCYUZ3MHpOekV5TURFeU16VTVOVGxhTUlHOU1Rc3dDUVlEVlFRR0V3SlYKVXpF
WE1CVUdBMVVFQ2hNT1ZtVnlhVk5wWjI0c0lFbHVZeTR4SHpBZEJnTlZCQXNURmxabGNtbFRhV2R1SUZSeWR
YTjBJRTVsZEhkdgpjbXN4T2pBNEJnTlZCQXNUTVNoaktTQXlNREE0SUZabGNtbFRhV2R1TENCSmJtTXVJQz
BnUm05eUlHRjFkR2h2Y21sNlpXUWdkWE5sCklHOXViSGt4T0RBMkJnTlZCQU1UTDFabGNtbFRhV2R1SUZWd
WFYWmxjbk5oYkNCU2IyOTBJRU5sY25ScFptbGpZWFJwYjI0Z1FYVjAKYUc5eWFYUjVNSUlCSWpBTkJna3Fo
a2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXgyRTNYckVCTk50aTF4V2IvMWhhakNNagoxbUNPa2R
lUW1JTjY1bGdaT0l6Rjl1VmtoYlNpY2Z2dHZibmF6VTBBdE1ndGM2WEhhWEdWSHprOHNrUUhuT2dPK2sxS3
hDSGZLV0dQCk1pSmhnc1dISDI2TWZGOFdJRkZFMFhCUFYrcmpIT1BNZWU1WTJBN0NzMFdUd0N6bm1oY3Jld
0EzZWtFemVPRXo0dk1RR24rSExMNzIKOWZkQzR1Vy9oMktKWHdCTDM4WGQ1SFZFTWtFNkhuRnVhY3NMZFVZ
STBjclNLNVhRei91NVFHdGtqRmROL0JNUmVZVHRYbFQyTko4SQpBZk1RSlFZWFN0cnhIWHBtYTVoZ1pxVFo
3OUl1Z3ZIdzd3bnFSTWtWYXVJRGJqUFRySjlWQU1mMkNHcVV1Vi9jNERQeGhHRDVXeWNSCnRQd1c4cnRXYW
9BbGpRSURBUUFCbzRHeU1JR3ZNQThHQTFVZEV3RUIvd1FGTUFNQkFmOHdEZ1lEVlIwUEFRSC9CQVFEQWdFR
01HMEcKQ0NzR0FRVUZCd0VNQkdFd1g2RmRvRnN3V1RCWE1GVVdDV2x0WVdkbEwyZHBaakFoTUI4d0J3WUZL
dzREQWhvRUZJL2wweHFHckkyTwphOFBQZ0dyVVNCZ3NleGt1TUNVV0kyaDBkSEE2THk5c2IyZHZMblpsY21
semFXZHVMbU52YlM5MmMyeHZaMjh1WjJsbU1CMEdBMVVkCkRnUVdCQlMyZC9wcFNFZWZVeExWd3VvSE1uWU
gwWmNIR1RBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQVN2ajRzQVBtTEdkNzVKUjMKWTh4dVRQbDlEZzNje
UxrMXVYQlBZL29rK215RGpFZWRPMlB6bXZsMk1wV1JzWGU4ckpxK3NlUXhJY2FCbFZaYURySEMxTEdtV2F6
eApZOHU0VEIxWmtFcnZrQllvSDFxdUVQdUJVRGdNYk16eFBjUDFZK096NHlISkpEbnAvUlZtUnZRYkVkQk5
jNk45UnZrOTdhaGZZdFR4ClAvamdkRmNyR0oyQn
RNUW8ycFNYcFhEcnJCMitCeEh3MWR2ZDVZencxVEt3ZytaWDRvKy92cUdxdnowZHRkUTQ2dGV3WERwUGFqK
1AKd0dac1k2cnAyYVFXOUlIUmxSUU9mYzJWTk5uU2ozQnpnWHVjZnIyWVlkaEZoNWlReGV1R01NWTF2L0Qv
dzFXSWcwdnZCWklHY2ZLNAptSk8zN00yQ1lmRTQ1aytYbUNwYWpRPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEU
tLS0tLQoKVmVyaVNpZ24gQ2xhc3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eS
AtIEc0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
T09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRGhEQ0NBd3FnQXdJQkFnSVFMNEQrSTR3T0ln
OUlaeElva1llc3N6QUtCZ2dxaGtqT1BRUURBekNCeWpFTE1Ba0dBMVVFQmhNQwpWVk14RnpBVkJnTlZCQW9
URGxabGNtbFRhV2R1TENCSmJtTXVNUjh3SFFZRFZRUUxFeFpXWlhKcFUybG5iaUJVY25WemRDQk9aWFIzCm
IzSnJNVG93T0FZRFZRUUxFekVvWXlrZ01qQXdOeUJXWlhKcFUybG5iaXdnU1c1akxpQXRJRVp2Y2lCaGRYU
m9iM0pwZW1Wa0lIVnoKWlNCdmJteDVNVVV3UXdZRFZRUURFenhXWlhKcFUybG5iaUJEYkdGemN5QXpJRkIx
WW14cFl5QlFjbWx0WVhKNUlFTmxjblJwWm1sagpZWFJwYjI0Z1FYVjBhRzl5YVhSNUlDMGdSelF3SGhjTk1
EY3hNVEExTURBd01EQXdXaGNOTXpnd01URTRNak0xT1RVNVdqQ0J5akVMCk1Ba0dBMVVFQmhNQ1ZWTXhGek
FWQmdOVkJBb1REbFpsY21sVGFXZHVMQ0JKYm1NdU1SOHdIUVlEVlFRTEV4WldaWEpwVTJsbmJpQlUKY25We
mRDQk9aWFIzYjNKck1Ub3dPQVlEVlFRTEV6RW9ZeWtnTWpBd055QldaWEpwVTJsbmJpd2dTVzVqTGlBdElF
WnZjaUJoZFhSbwpiM0pwZW1Wa0lIVnpaU0J2Ym14NU1VVXdRd1lEVlFRREV6eFdaWEpwVTJsbmJpQkRiR0Z
6Y3lBeklGQjFZbXhwWXlCUWNtbHRZWEo1CklFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1SUMwZ1
J6UXdkakFRQmdjcWhrak9QUUlCQmdVcmdRUUFJZ05pQUFTblZucDgKVXRwa213NHRYTmhlckpJOS9nSG1HV
W85RkFOTCttQW5JTm1EaVduNlZNYWFHRjVWS21UZUJ2YU5TanV0RUR4bFBaQ0lCSW5nTUdHegpybDBCcDN2
ZWZMSyt5bVZoQUlhdTJvOTcwSW10VFIxWm1rR3h2RWVBM0o1aXcvbWpnYkl3Z2E4d0R3WURWUjBUQVFIL0J
BVXdBd0VCCi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd2JRWUlLd1lCQlFVSEFRd0VZVEJmb1YyZ1d6QlpNRm
N3VlJZSmFXMWhaMlV2WjJsbU1DRXcKSHpBSEJnVXJEZ01DR2dRVWorWFRHb2Fzalk1cnc4K0FhdFJJR0N4N
0dTNHdKUllqYUhSMGNEb3ZMMnh2WjI4dWRtVnlhWE5wWjI0dQpZMjl0TDNaemJHOW5ieTVuYVdZd0hRWURW
UjBPQkJZRUZMTVdrZjN1cG03a3RTNUpqNGQ0Z1lEczViRzFNQW9HQ0NxR1NNNDlCQU1ECkEyZ0FNR1VDTUd
ZaERCZ21ZRm80ZTFaQzRLZjhOb1JSa1NBc2RrMURQY1FkaENQUXJOWjhOUWJPeldtOWtBM2JiRWhDSFE2cV
FnSXgKQUp3OVNEa2pPVmdhRlJKWmFwN3YxVm15SFZJc21YSE54eW5mR3lwaGUzSFIzdlBBNVEwNlNxb3RwO
WlHS3QwdUVBPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKTmV0TG9jayBBcmFueSAoQ2xhc3MgR29s
ZCkgRsOF4oCYdGFuw4PCunPDg8KtdHbDg8KhbnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0
9PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVGVENDQXYyZ0F3SUJBZ0lHU1
VFczVBQVFNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR25NUXN3Q1FZRFZRUUdFd0pJVlRFUk1BOEcKQTFVRUJ3d
0lRblZrWVhCbGMzUXhGVEFUQmdOVkJBb01ERTVsZEV4dlkyc2dTMlowTGpFM01EVUdBMVVFQ3d3dVZHRnV3
N3B6dzYxMApkc09oYm5scmFXRmt3N05ySUNoRFpYSjBhV1pwWTJGMGFXOXVJRk5sY25acFkyVnpLVEUxTUR
NR0ExVUVBd3dzVG1WMFRHOWpheUJCCmNtRnVlU0FvUTJ4aGMzTWdSMjlzWkNrZ1JzV1JkR0Z1dzdwenc2MT
Bkc09oYm5rd0hoY05NRGd4TWpFeE1UVXdPREl4V2hjTk1qZ3gKTWpBMk1UVXdPREl4V2pDQnB6RUxNQWtHQ
TFVRUJoTUNTRlV4RVRBUEJnTlZCQWNNQ0VKMVpHRndaWE4wTVJVd0V3WURWUVFLREF4TwpaWFJNYjJOcklF
dG1kQzR4TnpBMUJnTlZCQXNNTGxSaGJzTzZjOE90ZEhiRG9XNTVhMmxoWk1PemF5QW9RMlZ5ZEdsbWFXTmh
kR2x2CmJpQlRaWEoyYVdObGN5a3hOVEF6QmdOVkJBTU1MRTVsZEV4dlkyc2dRWEpoYm5rZ0tFTnNZWE56SU
VkdmJHUXBJRWJGa1hSaGJzTzYKYzhPdGRIYkRvVzU1TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FRO
EFNSUlCQ2dLQ0FRRUF4Q1JlYzc1TGJSVERvZlRqbDVCdQowakJGSGp6dVo5bGs0QnFLZjhvd3lvUGpJTUhq
OURyVGxGOGFmRnR0dnpCUGhDZjJueDlKdk1hWkNwRHlEL1YvUTRRM1kxR0xlcVZ3Ci9IcFl6WTZiN2NOR2J
JUndYZHJ6QVpBai9FNHdxWDdoSjJQbjdXUThvTGpKTTJQK0ZwRC9zTGo5MTZqQXdKUkRDN2JWV2FhZVZ0QW
sKSDNCNXI5czVWQTFsZGRrVlFaUUJyMTdzOW8zeC82MWsvaUNhMTF6ci9xWWZDR1NqaTNaVnJSNDdLR0F1a
HlYb3FxOGZ4bVJHSUxkdwpmenplU051V1U3YzVkK1FhNHNjV2hIYVhXeSs3R1JXRitHbUY5Wm1ucWZJMHA2
bTJwZ1A4YjRZOVZIeDJCSnRyK1VCZEFEVEhMcGwxCm5lV0lBNnBOK0FQU1FuYkFHd0lEQUtpTG8wVXdRekF
TQmdOVkhSTUJBZjhFQ0RBR0FRSC9BZ0VFTUE0R0ExVWREd0VCL3dRRUF3SUIKQmpBZEJnTlZIUTRFRmdRVX
pQcG5rL0MydU5DbHdCN3pVLzJNVTkrRDE1WXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBS3QvN2h3VwpxW
nc4VVFDZ3dCRUlCYWVaNW04QmlGUmhidkc1R0sxS3JmNkJRQ09VTC90MWZDOG9TMklrZ1lJTDlXSHhIRzY0
WVRqcmdmcGlvVHRhCll0T1VaY1RoNW0yQytDOGxjTEloSnNGeVVSK01MTU9Fa01OYWo3clA5S2RscGV1WTB
mc0Zza1oxRlNOcWI0VmpNSUR3MVo0ZktSekMKYkxCUVdWMlFXenVvRFREUHYzMS96dkdkZzczSlJtNGdwdm
xoVWJvaEwzdStwUlZqb2RTVmgvR2V1Zk9KOHoyRnVMamJ2clc1S2ZuYQpOd1VBU1pRRGhFVG52ME14ejNXT
EpkSDBwbVQxa3ZhckJlczk2YVVMTm1MYXpBWmZOb3UyWGpHNEt2dGU5bkhmUkNhZXhPWU5rYlF1CmRaV0FV
V3BMTUthd1lxR1Q4WnZZenNSamRUOVpSN0U9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClN0YWF0IGR
lciBOZWRlcmxhbmRlbiBSb290IENBIC0gRzIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ
otLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRnlqQ0NBN0tnQXdJQkFnSUVBSmlXakRBTkJna3Foa
2lHOXcwQkFRc0ZBREJhTVFzd0NRWURWUVFHRXdKT1RERWVNQndHQTFVRQpDZ3dWVTNSaFlYUWdaR1Z5SUU1
bFpHVnliR0Z1WkdWdU1Tc3dLUVlEVlFRRERDSlRkR0ZoZENCa1pYSWdUbVZrWlhKc1lXNWtaVzRnClVtOXZ
kQ0JEUVNBdElFY3lNQjRYRFRBNE1ETXlOakV4TVRneE4xb1hEVEl3TURNeU5URXhNRE14TUZvd1dqRUxNQW
tHQTFVRUJoTUMKVGt3eEhqQWNCZ05WQkFvTUZWTjBZV0YwSUdSbGNpQk9aV1JsY214aGJtUmxiakVyTUNrR
0ExVUVBd3dpVTNSaFlYUWdaR1Z5SUU1bApaR1Z5YkdGdVpHVnVJRkp2YjNRZ1EwRWdMU0JITWpDQ0FpSXdE
UVlKS29aSWh2Y05BUUVCQlFBRGdnSVBBRENDQWdvQ2dnSUJBTVZaCjUyOTFxajVMbkxXNHJKNEw1UG5aeXF
0ZGo3VTVFSUxYcjFIZ08rRUFTR3JQMnVFR1F4R1pxaFFsRXEwaTZBQnRROFNwdU9VZmlVdG4KdldGSTcvM1
M0R0NJNWJrWVlDakRkeXV0c0RlcU45NWtXU3BHVitSTHVmZzNmTlUyNTREQnR2UFVaNXVXNk03WHhncFQwR
3RKbHZPagpDd1YzU1BjbDVYQ3NNQlFnSmVOL2RWcmxTUGhPZXdNSEJQcUNZWWR1OER2RXBNZlE5WFErcFYw
YUNQS2JKZEwyckFRbVBsVTZZaWlsCmU3SXdyL2czd3RHNjFqajk5TzlKTURlWkppRkloUUdwNVJibjNKQlY
zdy9vT00yWk55RlBYZlVpYjJyRkVoWmdGMVh5WldhbXB6Q1IKT01FNEhZWUVoTG9hSlhoZW5hL01VR0RXRT
RkUzdXTWZiV1Y5d2hVWWRNcmhmbVFwakhMWUZoTjlDMGxLOFNnYklIUnJ4VDNkc0twSQpDVDB1Z3BUTkdtW
FpLNGlhbWJ3WWZwL3VmV1o4UHIyVXVJSE96Wmd3ZU1Gdlo5QytYK0JvN2Q3aXNja3NXWGlTcXQ4cllHUHk1
VjY1CjQ4cjZmMUNHUHFJMEdBd0phQ2dSSE9UaHVWdytSN295UHhqTVc0VDE4MnQweEhKMDRlT0xvRXE5ald
ZdjZxMDEyaURUaUlKaDhCSWkKdHJ6UTFhVHNyMVNJSlNROHAyMnhjaWsvUGxlbWYxV3ZiaWJHL3VmTVFGeF
JSSUVLZU41S3psVy9IZFhadDFidjhIYi9DM20xcjczNwpxV21SUnBkb2dCUTJIYk4vdXltWU5xVWcrb0pnW
WpPazdOYTZCNmR1eGM4VXB1ZldralRZZ2ZYOEhWMnFYQjcybzAwN3VQYzVBZ01CCkFBR2pnWmN3Z1pRd0R3
WURWUjBUQVFIL0JBVXdBd0VCL3pCU0JnTlZIU0FFU3pCSk1FY0dCRlVkSUFBd1B6QTlCZ2dyQmdFRkJRY0M
KQVJZeGFIUjBjRG92TDNkM2R5NXdhMmx2ZG1WeWFHVnBaQzV1YkM5d2IyeHBZMmxsY3k5eWIyOTBMWEJ2Yk
dsamVTMUhNakFPQmdOVgpIUThCQWY4RUJBTUNBUVl3SFFZRFZSME9CQllFRkpGb01vY1ZIWW5pdGZHc05pZ
zBqUXQ4WW9qck1BMEdDU3FHU0liM0RRRUJDd1VBCkE0SUNBUUNvUVVwbktwS0JnbEJ1NGRmWXN6azc4d0lW
Q1ZCUjd5MjlKSHVJaGp2NXRMeVNDWmE1OXNDckkyQUdlWXdSVGxIU2VZQXoKKzUxSXZ1eEJRNEVmZmtkQUh
PVjZDTXFxaTNXdEZNVEM2R1k4Z2dlbjVpZUNXeGptRDI3WlVENktRaGdweHJSVy9GWVFvQVVYdlF3agpmL1
NUN1p3YVViN2RSVUcva1NTMEg0enBYODk3SVptZmxaODVPa1ljYlBuTmU1eVF6U2lweDZsVnU2eGlOR0kxR
TBzVU9sV0R1WWFOCmtxYkc5QWNsVk13V1Z4SktnbmpJRk5rWGdpWXRYU0FmZWE3KzFIQVdGcFdEMkRVNS8x
SmRkUndXeFJOVnowZk1kV1ZTU3Q3d3NLZmsKQ3BZTCs2M0M0aVdFc3Qza3ZYNVpiSnZ3OE5qbnl2THBsemg
raWI3TSt6a1hZVDl5MnpxUjJHVUJHUjJ0VUtSWENueEx2Snh4Y3lwRgpVUm1Gekk3OVI2ZDBsUjJvMGE5T0
Y3RnBKc0txZUZkYnhVMm41WjRGRjVUS3NsK2dTUmlOTk9rbWJFZ2VxbWlTQmVHQ2MxcWIzQWRiCkNHMTluZ
GVOSWRuOEZDQ3F3a1hmUCtjQXNsSGt3dmdGdVhrYWpEVHpubHZrTjF0clN0OHNWNHBBV2phNjNYVkVDRGRD
Y0F6KzNGNGgKb0tPS3dKQ2NhTnBRNWtVUVIzaTJUdEpseWNNMzMrRkNZN0JYTjBVdGU0cWN2d1hxWlZVejl
6a1F4U2dxSVhvYmlzUWsrVDhWeUpvVgpJUFZWWXBidGJaTlF2T1NxZUszWnl3cGxoNlptd2NTQm8zYzZXQj
RMN29PTG5SN1NVcVRNSFcrd21HMlVNYlg0Y1FyY3VmeDlNbURtCjY2K0tBUT09Ci0tLS0tRU5EIENFUlRJR
klDQVRFLS0tLS0KCkNBIERpc2lnCj09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlF
RHpDQ0F2ZWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCS01Rc3dDUVlEVlFRR0V3SlRTekVUTUJ
FR0ExVUVCeE1LClFuSmhkR2x6YkdGMllURVRNQkVHQTFVRUNoTUtSR2x6YVdjZ1lTNXpMakVSTUE4R0ExVU
VBeE1JUTBFZ1JHbHphV2N3SGhjTk1EWXcKTXpJeU1ERXpPVE0wV2hjTk1UWXdNekl5TURFek9UTTBXakJLT
VFzd0NRWURWUVFHRXdKVFN6RVRNQkVHQTFVRUJ4TUtRbkpoZEdsegpiR0YyWVRFVE1CRUdBMVVFQ2hNS1JH
bHphV2NnWVM1ekxqRVJNQThHQTFVRUF4TUlRMEVnUkdsemFXY3dnZ0VpTUEwR0NTcUdTSWIzCkRRRUJBUVV
BQTRJQkR3QXdnZ0VLQW9JQkFRQ1M5akhCZllqOW1RR3AySHZ5Y1hYeE1jYnpkV2I2VVNoR2hKZDROTHhzL0
x4RldZZ20KR0VyRU54K2hTa1M5NDNFRTlVUVg0ai84U0ZodlhKNTZDYnBSTnlJalprTWhzRHhrb3ZocUZRN
C82MUhoVktuZEJwblhtanhVaXprRApQdy9GenNicmczSUNxQjl4OHkzNGRRamJZa3pvK3M3NTUyb2Z0bXMx
Z3JyaWp4YVNmUVVNYkVZRFhjRHRhYjg2d1lxZzZJN1p1VVVvCmh3anN0TW9Wdm9MZHRVU0xMYTJHREdoaWJ
ZVlc4cXdVWXpyRzBabXNOSGhXUzgrMnJUK01pdGNFNWVONFRQV0dxdldQK2oxc2NhTXQKeW1mcmFIdHVNNm
tNZ2lpb1RHb2hRQlVnRENaYmc4S3BGaFhBSklKZEt4YXR5bVAyZEFDdzMwUEVFR0JXWjJORkFnTUJBQUdqZ
2Y4dwpnZnd3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFkQmdOVkhRNEVGZ1FVamJKSmFKMXlDQ1c1d0NmMVVK
TldTRVp4K1k4d0RnWURWUjBQCkFRSC9CQVFEQWdFR01EWUdBMVVkRVFRdk1DMkJFMk5oYjNCbGNtRjBiM0p
BWkdsemFXY3VjMnVHRm1oMGRIQTZMeTkzZDNjdVpHbHoKYVdjdWMyc3ZZMkV3WmdZRFZSMGZCRjh3WFRBdG
9DdWdLWVluYUhSMGNEb3ZMM2QzZHk1a2FYTnBaeTV6YXk5allTOWpjbXd2WTJGZgpaR2x6YVdjdVkzSnNNQ
3lnS3FBb2hpWm9kSFJ3T2k4dlkyRXVaR2x6YVdjdWMyc3ZZMkV2WTNKc0wyTmhYMlJwYzJsbkxtTnliREFh
CkJnTlZIU0FFRXpBUk1BOEdEU3VCSHBHVDVnb0FBQUFCQVFFd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkF
GMDBkR0ZNcnp2WS81OXQKV0RZY1BRdUJEUklyUmhDQS9lYzhKOUI2eUttMmZuUXdNNk02aW50MHdIbDVRcE
50LzdFcEZJS3JJWXd2Ri9rL0ppLzFXY2J2Z0FhMwpta2twN001K2NUeHFFRUhBOXRPYXNueGFrWnpBckZ2S
VRWNzM0VlAvUTNmOG5rdG5iTmZ6ZzlHZzRIOGwzN2lZQzVveU9Hd3dvUFAvCkNCVXo5MUJLZXo2alBpQ3Az
QzlXZ0FydFFWQ3d5ZlRzc3VNbVJBQU9iNTRHdkNLV1UzQmx4RkFLUm11a0x5ZUJFaWNUWHhDaGRzNksKZXp
mcXd6bGhBNVdZT3Vkc2lDVUkvSGxvRFlkOVl2aTBYL3ZGMkV5OVdMdy9RMXZVSGdGTlBHTytJKytNelZwUX
VHaFUrUXFaTXhFQQo0WjdDUm5lQzlWa0dqQ0ZNaHduTjVhZz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tL
QoKSnV1ci1TSwo9PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlFNWpDQ0E4NmdBd0lC
QWdJRU80NUwvREFOQmdrcWhraUc5dzBCQVFVRkFEQmRNUmd3RmdZSktvWklodmNOQVFrQkZnbHdhMmxBCmM
yc3VaV1V4Q3pBSkJnTlZCQVlUQWtWRk1TSXdJQVlEVlFRS0V4bEJVeUJUWlhKMGFXWnBkSE5sWlhKcGJXbH
phMlZ6YTNWek1SQXcKRGdZRFZRUURFd2RLZFhWeUxWTkxNQjRYRFRBeE1EZ3pNREUwTWpNd01Wb1hEVEUyT
URneU5qRTBNak13TVZvd1hURVlNQllHQ1NxRwpTSWIzRFFFSkFSWUpjR3RwUUhOckxtVmxNUXN3Q1FZRFZR
UUdFd0pGUlRFaU1DQUdBMVVFQ2hNWlFWTWdVMlZ5ZEdsbWFYUnpaV1Z5CmFXMXBjMnRsYzJ0MWN6RVFNQTR
HQTFVRUF4TUhTblYxY2kxVFN6Q0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0MKZ2dFQk
FJRnhOajR6Qjliak1JMFRmbmN5UnN2UEdiSmdNVWFYaHZTWVJxVENaVVhQMDBCODQxb2lxQkI0TTh5SXNkT
0JTdlppRjN0ZgpUUW91ME0rTEkrNVBBazY3Nnc3S3ZSaGo2SUFjamVFY2pUM2cvMXRmNm1UbGwrZy9tWDhN
Q2drekFCcFRweUhoT0V2V2d4dXRyMlRDCitSeDZqR1pJVFdZZkdBcmlQcnNmQjJXVGhia2FzTG5FK3cwUjl
2WFcrUnZITEN1M0dGSCs0SHYycUVpdmJEdFBMKy80MFVjZUpsZncKVVIwemx2L3ZXVDNhVGRFVk5NZnFQeF
pJZTVFY2dFTVBQYmdGUHRHemxjM1l5Zy9DUTJmY
nQ1UGdJb0l1dnZWb0tJTzV3VHRwZXlEYQpUcHh0NGJyTmozcHNzQWtpMTRzTDJ4elZXaVpiRGNEcTVXRFFu
LzQxM3o4Q0F3RUFBYU9DQWF3d2dnR29NQThHQTFVZEV3RUIvd1FGCk1BTUJBZjh3Z2dFV0JnTlZIU0FFZ2d
FTk1JSUJDVENDQVFVR0Npc0dBUVFCemg4QkFRRXdnZll3Z2RBR0NDc0dBUVVGQndJQ01JSEQKSG9IQUFGTU
FaUUJsQUNBQWN3QmxBSElBZEFCcEFHWUFhUUJyQUdFQVlRQjBBQ0FBYndCdUFDQUFkZ0RrQUd3QWFnQmhBS
E1BZEFCaApBSFFBZFFCa0FDQUFRUUJUQUMwQWFRQnpBQ0FBVXdCbEFISUFkQUJwQUdZQWFRQjBBSE1BWlFC
bEFISUFhUUJ0QUdrQWN3QnJBR1VBCmN3QnJBSFVBY3dBZ0FHRUFiQUJoQUcwQUxRQlRBRXNBSUFCekFHVUF
jZ0IwQUdrQVpnQnBBR3NBWVFCaEFIUUFhUUJrQUdVQUlBQnIKQUdrQWJnQnVBR2tBZEFCaEFHMEFhUUJ6QU
dVQWF3QnpNQ0VHQ0NzR0FRVUZCd0lCRmhWb2RIUndPaTh2ZDNkM0xuTnJMbVZsTDJOdwpjeTh3S3dZRFZSM
GZCQ1F3SWpBZ29CNmdISVlhYUhSMGNEb3ZMM2QzZHk1emF5NWxaUzlxZFhWeUwyTnliQzh3SFFZRFZSME9C
QllFCkZBU3Fla2VqNUltdkdzOEtRS2NZUDIvdjZYMitNQjhHQTFVZEl3UVlNQmFBRkFTcWVrZWo1SW12R3M
4S1FLY1lQMi92NlgyK01BNEcKQTFVZER3RUIvd1FFQXdJQjVqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRU
FlOEVZbEZPaUNmUCtKbWVhVU9UREJTOHJOWGlSVEh5bwpFUkY1VEVsWnJNajNoV1ZjUnJzN0VLQUNyODFQd
GN3Mkt1eGQvdStna2NtMmsyOThnRlRzeHdod0RZNzdndXdxWUhocE5qYlJ4WnlMCmFiVkF5SlJsZC9KWElX
WTd6b1ZBdGpOakdyOTVIdnhjSGRNZGt4dUxERjJGdlprd01oZ0prVkxwZktHNi8yU1NtdXorTmU2TUw2Nzg
KSUlic1N0NGJlREkzcG9IU25hOWFFaGJLbVZ2OGIyME94YUFlaHNtUjBGeVlnbDlqRElwYXE5aVZwc3pMaX
RhL1pFdU95b3F5c09raApNcDZxcUlXWU5JRTVJVHVvT2xJeVBmWnJONFlHV2hXWTNQQVJadjQwSUxjRDlFR
VFmVG1FZVpaeVk3YVdBdVZydWEwWlRidkdSTnMyCnl5cWNqZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0t
LS0KCkhvbmdrb25nIFBvc3QgUm9vdCBDQSAxCj09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4
gQ0VSVElGSUNBVEUtLS0tLQpNSUlETURDQ0FoaWdBd0lCQWdJQ0ErZ3dEUVlKS29aSWh2Y05BUUVGQlFBd1
J6RUxNQWtHQTFVRUJoTUNTRXN4RmpBVUJnTlZCQW9UCkRVaHZibWRyYjI1bklGQnZjM1F4SURBZUJnTlZCQ
U1URjBodmJtZHJiMjVuSUZCdmMzUWdVbTl2ZENCRFFTQXhNQjRYRFRBek1EVXgKTlRBMU1UTXhORm9YRFRJ
ek1EVXhOVEEwTlRJeU9Wb3dSekVMTUFrR0ExVUVCaE1DU0VzeEZqQVVCZ05WQkFvVERVaHZibWRyYjI1bgp
JRkJ2YzNReElEQWVCZ05WQkFNVEYwaHZibWRyYjI1bklGQnZjM1FnVW05dmRDQkRRU0F4TUlJQklqQU5CZ2
txaGtpRzl3MEJBUUVGCkFBT0NBUThBTUlJQkNnS0NBUUVBclA4NHR1bG1Ba25qb3JUaGtQbEFqM241NHIxN
S9nSzk3aVNTSFNMMjJvVnlhZjdYUHduVTNaRzEKQXB6UWpWcmhWY05RaHJrcEpzTGoyYUR4YVFNb0lJQkZJ
aTFXcHp0VWxWWWlXUjhvM3g4Z1BXMmlOcjRqb0xGdXRiRW5QemxUQ2VxcgphdWgwc3NKbFhJNi9mTU40aE0
yZUZ2ejFMazhnS2dpZmQvUEZIc1NhVW1ZZVNGN2pFQWFQSXBqaFpZNGJYU05tTzdpbE1sSElocXFoCnFaNS
9kcFRDcG15M1FmRFZ5QVk0NXRRTTR2TTdURzFRak1TREo4RVRoRms5bm5WMHR0Z0NYanFRZXNCQ05uTHNha
zNjNzhRQTN4TVkKVjE4bWVNaldDbmwzdi9ldnQzYTVwUXVFRjEwUTZtL2hxNVVSWDIwOG8xeE5nMXZ5c3ht
S2dJc0xod0lEQVFBQm95WXdKREFTQmdOVgpIUk1CQWY4RUNEQUdBUUgvQWdFRE1BNEdBMVVkRHdFQi93UUV
Bd0lCeGpBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQURrYlZQSzdpCmg5bGVnWXNDbUVFSWpFeTgydHZ1Sn
h1QzUycEY3QmFMVDRXZzg3Snd2VnFXdXNwdWJlNUdpMjduS2k2V3N4a3o2N1NmcUxJMzdwaW8KbDdZdXRtY
24xS1pKL1J5VFpYYWVRaS9jSW15YVQvSmFGVG14Y2RjclVlaHRISmpBMlNyMG9ZSjcxY2xCb2lNQmREaFZp
dys1TG1laQpJQVEzMnB3TDB4Y2g0SStYZVRSdmhFZ0NJRE1iNWpSRW41Rnc5SUJlaEVQQ0tkSnNFaFRrWVk
yc0VKQ2VoRkM3OEpadlJaK0s4OHBzClQvb1JPaFVWUnNQTkg0TmJMVUVTN1ZCblFSTTlJYXVVaXFwT2ZNR3
grNmZXdFNjdmw2dHU0QjNpMFJ3c0gwVGkvTDZSb1p6NzFpbFQKYzRhZlU5aEREbDNXWTRKeEhZQjB5dmJpQ
W12WldnPT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKU2VjdXJlU2lnbiBSb290Q0ExMQo9PT09PT09
PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEYlRDQ0FsV2dBd0lCQWdJQkF
UQU5CZ2txaGtpRzl3MEJBUVVGQURCWU1Rc3dDUVlEVlFRR0V3SktVREVyTUNrR0ExVUVDaE1pClNtRndZVz
RnUTJWeWRHbG1hV05oZEdsdmJpQlRaWEoyYVdObGN5d2dTVzVqTGpFY01Cb0dBMVVFQXhNVFUyVmpkWEpsV
TJsbmJpQlMKYjI5MFEwRXhNVEFlRncwd09UQTBNRGd3TkRVMk5EZGFGdzB5T1RBME1EZ3dORFUyTkRkYU1G
Z3hDekFKQmdOVkJBWVRBa3BRTVNzdwpLUVlEVlFRS0V5SktZWEJoYmlCRFpYSjBhV1pwWTJGMGFXOXVJRk5
sY25acFkyVnpMQ0JKYm1NdU1Sd3dHZ1lEVlFRREV4TlRaV04xCmNtVlRhV2R1SUZKdmIzUkRRVEV4TUlJQk
lqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUEvWGVxcFJ5UUJUdkwKVEpzemkxb1VSY
VRua0JiUjMxZlNJUkNrRi8zZnJOWWZwK1RiZlBmczM3Z0QycFJZL1YxeWZJdy9Yd0ZuZEJXVzR3SThoOXV1
eXdHTwp3dk5teG9WRjlBTEdPclZpc3EvNm5MK2s1dFNBTUpqekRiYVRqNm5VMkRieXNQeUt5aXloRlRPVk1
kckFHL0x1WXBtR1l6Ky8zWk1xCmc2aDJ1Uk1mdDg1T1FvV1BJdWN1R3ZLVkNiSUZ0VVJPZDZFZ3ZhbnlUZ3
A5VUszMUJRMUZUMFp4L1NnK1Uvc0UyQzNYWlIxS0cvclAKTzdBeG1qVnV5SXNHMHdDUjhwUUlaVXl4TkFZQ
WVvbmk4TWNEV2MvVjF1aW5NclBtbUVDR3hjMG5Fb3ZNZTg2M0VUeGlZQWNqUGl0QQpicFNBQ1cyMnMyOTNi
elVJVVBzQ2g4VStpUUlEQVFBQm8wSXdRREFkQmdOVkhRNEVGZ1FVVy9oTlQ3S2xodFE2MHZGam1xQytDZlp
YCnQ5NHdEZ1lEVlIwUEFRSC9CQVFEQWdFR01BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RRWUpLb1pJaHZjTk
FRRUZCUUFEZ2dFQkFLQ2gKT0JabUxxZFdIeUdjQnZvZDdia2l4VGdtMkU1UDdLTi9lZDVHSWFHSGQ0OEhDS
nF5cE1XdkR6S1lDM3htS2JhYmZTVlNTVU9yVEM0cgpibnB3cnhZTzR3SnMrMExtR0oxRjJGWEk2RHZkNStI
MExnc2NORnhzV0VyN2pJaFFYNVVjdisycklyVmxzNFc2bmcrNHJlVjZHNHBRCk9oMjlEYng3VkZBTHVVS3Z
WYUFZZ2ExbG1lKys1SnkveElXclFiSlViOXdsemUxNDRvNE1qUWxKM1dON1dtbVdBaUdvdlZKWjZYMDEKeT
hoU3luK0IvdGxyMC9jUjdTWGYrT2Y1cFBweWw0UlREYVhRTWhoUmRsa1ViQS9yN0YrQWpIVkRnOE9GbVA5T
W5pME41SGVEazA2MQpsZ2VMS0JPYmpCbU5RU2RKUU83ZTVpTkVPZHloSXRhNkEvST0KLS0tLS1FTkQgQ0VS
VElGSUNBVEUtLS0tLQoKQUNFRElDT00gUm9vdAo9PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUN
BVEUtLS0tLQpNSUlGdFRDQ0E1MmdBd0lCQWdJSVlZM0hoanNCZ2dVd0RRWUpLb1pJaHZjTkFRRUZCUUF3Uk
RFV01CUUdBMVVFQXd3TlFVTkZSRWxEClQwMGdVbTl2ZERFTU1Bb0dBMVVFQ3d3RFVFdEpNUTh3RFFZRFZRU
UtEQVpGUkVsRFQwMHhDekFKQmdOVkJBWVRBa1ZUTUI0WERUQTQKTURReE9ERTJNalF5TWxvWERUSTRNRFF4
TXpFMk1qUXlNbG93UkRFV01CUUdBMVVFQXd3TlFVTkZSRWxEVDAwZ1VtOXZkREVNTUFvRwpBMVVFQ3d3RFV
FdEpNUTh3RFFZRFZRUUtEQVpGUkVsRFQwMHhDekFKQmdOVkJBWVRBa1ZUTUlJQ0lqQU5CZ2txaGtpRzl3ME
JBUUVGCkFBT0NBZzhBTUlJQ0NnS0NBZ0VBLzVLVjRXZ0dkclFzeUZoSXl2MkFWQ2xWWXlUL2tHV2JFSFY3d
zJyYllnSUI4aGlHdFh4YU9MSGsKV0xuNzA5Z3RuNzB5Tjc4c0ZXMit0ZlFoMGhPUjJRZXRBUVhXODcxM3ps
OUNnUXI1YXVPREFLZ3JMbFVUWTRIS1J4eDdYQlpYZWh1RApZQVE2UG1YRHpRSGUzcVRXRExxTzN0a0U3aGR
XSXB1UFkvMU5GZ3UzZTNlTStTVzEwVzJaRWk1UEdyam02Z1NTcmowUnVWRkNQWWV3Ck1ZV3ZlVnFjL3VkT1
hwSlBRL3lyT3EybEVpWm11ZUlNMTVqTzFGaWxsVUFLdDBTZEUzUXJ3cVhySWhXWUVOaUx4UVNmSFk5ZzVRW
WIKbTgrNWVhQTlvaU0vUWo5citod0RlekNOem16QXYrWWJYNzludUlRWjFSWHZlOHVRTmpGaXlid0NxMFpm
bS80YWFKUTBQWkNPcmZiawpIUWwvU29nNFA3NW4vVFNXOVIyOE1IVExPTzdWYkt2VS9QUUF0d0JiaFRJV2R
qUHAyS09ablFVQXFoYm04NEY5YjMycWhtMnRGWFRUCnhLSnhxdlFVZmVjeXVCKzgxZkZPdlc4WEFqblhEcF
ZDT3NjQVB1a21ZeEhxQzlGSy94aWRzdGQ3THpyWmx2dm9IcEt1RTFYSTJTZjIKM0VnYnNDVEJoZU4zblpxa
zh3d1JIUTNJdEJUdXRZSlhDYjhnV0g4dklpUFljTXQ1Yk1sTDhxa3F5UHlISzljYVVQZ242QzlENHpxOQoy
RmR4L2M2bVVsdjUzVTN0NWZadmllMjdrNXgySVhYd2trd3A5eStjQVM3K1VFYWVaQXdVc3dkYnhjSnpiUEV
IWEVVa0ZEV3VnL0ZxClRZbDYrclBZTFdid05vZjFLMU1DQXdFQUFhT0JxakNCcHpBUEJnTlZIUk1CQWY4RU
JUQURBUUgvTUI4R0ExVWRJd1FZTUJhQUZLYXoKNFNzclNiYlhjNkdxbFBVQjUzTmxUS3hRTUE0R0ExVWREd
0VCL3dRRUF3SUJoakFkQmdOVkhRNEVGZ1FVcHJQaEt5dEp0dGR6b2FxVQo5UUhuYzJWTXJGQXdSQVlEVlIw
Z0JEMHdPekE1QmdSVkhTQUFNREV3THdZSUt3WUJCUVVIQWdFV0kyaDBkSEE2THk5aFkyVmthV052CmJTNWx
aR2xqYjIxbmNtOTFjQzVqYjIwdlpHOWpNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUNBUURPTEF0U1VXSW1mUX
duZzQvRjl0cWcKYUh0UGtsN3FwSE15RVZORXNrVExuZXdQZVVLekVLYkhEWjNMdHZvL09uenF2NGhUR3p6M
2d2b0ZOVFBoTmFoWHdPZjlqVTgva3pKUAplR1lEZHdkWTZaWElmajdRZVFDTThodFJNNXU4bE9rNmUyNVNM
VEtlSTZSRis3WXVFN0NMR0xIZHp0VWRwMEovVmI3N1c3dEgxUHdrCnpRU3VsZ1VWMXF6T01QUEtDOFc2NGl
MZ3BxMGk1QUx1ZEJGL1RQOTRIVFhhNWdJMDZ4Z1NZWGNHQ1JaajZoaXRvb2NmOHNlQUNRbDEKVGhDb2p6Mk
d1SFVSd0NSaWlwWjdTa1hwN0ZuRnZtdUQ1dUhvckxVd0h2NEZCNEQ1NFNNTlVJOEZtUDhzWCtnN3RxM1BnY
lVoaDhvSQpLaU1uTUNBcnorMlVXNnl5ZXRMSEtLR0tDNXROU2l4dGhUOEpjanhuNHRuY0I3cnJaWHRhQVdQ
V2tGdFBGMlk5ZndzWm81TmpFRklxCm54UVdXT0xjcGZTaEZvc09rWXVCeXB0Wit0aHJrUWRsVlY5U0g2ODY
rNURkYWFWYm5HME9MTGI2enF5bGZESktaMERjTURRajNkY0UKSTJidy9GV0FwL3RtR1lJMVoySndPVjV2eC
txUVFFUUlIcml5MXR2dVdhY05HSGswdkZRWVhsUEtORkh0UlFybWpzZUNOajZuT0dPcApNQ3dYRUdDU24xV
0hFbGtRd2c5bmFSSE1UaDUrU3BxdHIwQ29kYXhXa0hTNG9KeWxlVy9jNlJySWFRWHB1dm9EczN6azRFN0N6
cDNvCnRrWU5ibjVYT21lVXdzc2ZuSGRLWjA1cGhrT1RPUHUyMjArRGtkUmdma3MrS3pnSFZaaGVwQT09Ci0
tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClZlcmlzaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydG
lmaWNhdGlvbiBBdXRob3JpdHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
T09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJQ1BEQ0NBYVVDRUR5Uk1jc2Y5
dEFiRHBxNDBFUy9FcjR3RFFZSktvWklodmNOQVFFRkJRQXdYekVMTUFrR0ExVUVCaE1DVlZNeApGekFWQmd
OVkJBb1REbFpsY21sVGFXZHVMQ0JKYm1NdU1UY3dOUVlEVlFRTEV5NURiR0Z6Y3lBeklGQjFZbXhwWXlCUW
NtbHRZWEo1CklFTmxjblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TUI0WERUazJNREV5T1RBd01EQXdNR
m9YRFRJNE1EZ3dNakl6TlRrMU9Wb3cKWHpFTE1Ba0dBMVVFQmhNQ1ZWTXhGekFWQmdOVkJBb1REbFpsY21s
VGFXZHVMQ0JKYm1NdU1UY3dOUVlEVlFRTEV5NURiR0Z6Y3lBegpJRkIxWW14cFl5QlFjbWx0WVhKNUlFTmx
jblJwWm1sallYUnBiMjRnUVhWMGFHOXlhWFI1TUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBCkE0R05BRENCaV
FLQmdRREpYRm1lOGh1S0FSUzBFTjhFUU52alY2OXFSVUNQaEF3TDBUUFoyUkhQN2dKWUh5WDNLcWhFQmFyc
0F4OTQKZjU2VHVab0FxaU45MXF5Rm9tTkZ4M0luelBSTXhuVngwam52VDBMd2RkOEtrTWFPSUcrWUQvaXNJ
MTl3S1Rha3lZYm5zWm9neTFPbApoZWM5dm4yYS9pUkZNOXgyRmUwUG9uRmtUR1V1Z1doRnB3SURBUUFCTUE
wR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUJCeVVxa0ZGQmt5CkNFSHd4V3NLekg0UElSbk41R2ZjWDZrYjVzcm
9jNTBpMkpodWN3TmhrY1Y4c0VWQWJrU2RqYkN4bG5SaExRMnBSZEtra2lyV21uV1gKYmo5VC9VV1pZQjJvS
zB6NVhxY0oySFV3MTlKbFlEMW4xa2hWZFdrL2tmVklDMGRwSW1tQ2xyN0p5RGlHU25vc2N4bElhVTVyZkdX
LwpEL3h3em9pUQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpNaWNyb3NlYyBlLVN6aWdubyBSb290IEN
BIDIwMDkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS
0tLQpNSUlFQ2pDQ0F2S2dBd0lCQWdJSkFNSitRd1JPUno4Wk1BMEdDU3FHU0liM0RRRUJDd1VBTUlHQ01Rc
3dDUVlEVlFRR0V3SklWVEVSCk1BOEdBMVVFQnd3SVFuVmtZWEJsYzNReEZqQVVCZ05WQkFvTURVMXBZM0p2
YzJWaklFeDBaQzR4SnpBbEJnTlZCQU1NSGsxcFkzSnYKYzJWaklHVXRVM3BwWjI1dklGSnZiM1FnUTBFZ01
qQXdPVEVmTUIwR0NTcUdTSWIzRFFFSkFSWVFhVzVtYjBCbExYTjZhV2R1Ynk1bwpkVEFlRncwd09UQTJNVF
l4TVRNd01UaGFGdzB5T1RFeU16QXhNVE13TVRoYU1JR0NNUXN3Q1FZRFZRUUdFd0pJVlRFUk1BOEdBMVVFC
kJ3d0lRblZrWVhCbGMzUXhGakFVQmdOVkJBb01EVTFwWTNKdmMyVmpJRXgwWkM0eEp6QWxCZ05WQkFNTUhr
MXBZM0p2YzJWaklHVXQKVTNwcFoyNXZJRkp2YjNRZ1EwRWdNakF3T1RFZk1CMEdDU3FHU0liM0RRRUpBUll
RYVc1bWIwQmxMWE42YVdkdWJ5NW9kVENDQVNJdwpEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2
dnRUJBT240ai9OanJkcUcyS2ZnUXZ2UGtkNm1KdmlacFdOd3JadXV5ak5BCmZXMldicUVPUk83aEU1MlVRb
EthdlhXRmRDeW9EaDJUdGhpM2pDeW96L3RjY2JuYTdQN29mby9rTHgyeXFIV0gyTGVoNVR2UG1VcEcKMElN
WmZjQ2hFaHlWYlVyMDJNZWxUVE11aFRsQWRYNFVmSUFTbUZESFFXZTRvSUJoVktac1RoL2duUTRINmNtNk0
rZit3RlVvTEFLQQpweG4xbnR4VlV3T1hld2RJLzVuN040b2t4Rm5NVUJCampxcXBHckNFR29iNVg3dXhVRz
ZrMFFyTTFYRitINmNiZlBWVGJpSmZ5eXZtCjFIeGRydGJDeGt6bEJRSFo3VmY4d1NONS9QcklKSU9WODdWc
VVRSFFkOWJwRXFINUdvUDdnaHU1c0pmMGRnWXpR
MG1nL3d1MStyVUMKQXdFQUFhT0JnREIrTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3RGdZRFZSMFBBUUgvQkF
RREFnRUdNQjBHQTFVZERnUVdCQlRMRDhiZgpRa1BNUGN1MVNDT2hHbnFtS3JzMGFEQWZCZ05WSFNNRUdEQV
dnQlRMRDhiZlFrUE1QY3UxU0NPaEducW1LcnMwYURBYkJnTlZIUkVFCkZEQVNnUkJwYm1adlFHVXRjM3BwW
jI1dkxtaDFNQTBHQ1NxR1NJYjNEUUVCQ3dVQUE0SUJBUURKMFE1ZUx0WE1zM3creS93OS93MG8KbFpNRXlM
L2F6WG00UTVEd3BMN3Y4dThobUx6VTFGMEc5dTVDN0RCc29LcXB5dkd2aXZvL0MzTnFQdW91UUg0ZnJsUmh
lZXN1Q0RmWApJL09Nbjc0ZHNlR2tkZHVnNGxRVXNib2NLYVFZOWhLNm9oUVU0ekUxeUVEL3QrQUZkbGZCSE
ZueStML2s3U1ZpWElUd2ZuNGZzNzc1CnR5RVJ6QU1CVm5DbkVKSWVHelNCSHEyY0dzTUVQTzBDWWRZZUJ2T
mZPb2Z5Sy9GRmgrVTlyTkhIVjRTOWE2N2MyUG0yRzJKd0N6MDIKeVVMeU10ZDZZZWJTMnozUHlLbkptOXpi
V0VUWGJ6aXZmM2pUbzYwYWRib2N3VFo4ang1dEhNTjFScTQxQmFiMlhEMGg3bGJ3eVlJaQpMWHBVcTNERGZ
TSmxnbkNXCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkUtR3V2ZW4gS29rIEVsZWt0cm9uaWsgU2VydG
lmaWthIEhpem1ldCBTYWdsYXlpY2lzaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09P
T09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUR0akNDQXA2Z0F3SUJBZ0lR
UkptTlBNQURKNzJjZHBXNTZ0dXN0VEFOQmdrcWhraUc5dzBCQVFVRkFEQjFNUXN3Q1FZRFZRUUcKRXdKVVV
qRW9NQ1lHQTFVRUNoTWZSV3hsYTNSeWIyNXBheUJDYVd4bmFTQkhkWFpsYm14cFoya2dRUzVUTGpFOE1Eb0
dBMVVFQXhNegpaUzFIZFhabGJpQkxiMnNnUld4bGEzUnliMjVwYXlCVFpYSjBhV1pwYTJFZ1NHbDZiV1YwS
UZOaFoyeGhlV2xqYVhOcE1CNFhEVEEzCk1ERXdOREV4TXpJME9Gb1hEVEUzTURFd05ERXhNekkwT0Zvd2RU
RUxNQWtHQTFVRUJoTUNWRkl4S0RBbUJnTlZCQW9USDBWc1pXdDAKY205dWFXc2dRbWxzWjJrZ1IzVjJaVzV
zYVdkcElFRXVVeTR4UERBNkJnTlZCQU1UTTJVdFIzVjJaVzRnUzI5cklFVnNaV3QwY205dQphV3NnVTJWeW
RHbG1hV3RoSUVocGVtMWxkQ0JUWVdkc1lYbHBZMmx6YVRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnR
VBBRENDCkFRb0NnZ0VCQU1NU0lKNndYZ0JsalU1R3U0QmM2U3dHbDlYemNzbHd1ZWRMWllEQlM3NStQTmRV
TVpUZTFSSzZVeFlDNmxoajcxdlkKOCswcUdxcHhTS1BjRUMxZlgrdGNTNXlXQ0VJbEtCSE1pbHBpQVZEVjZ
3bFRML2pEai82ei9QMmRvdU5mZmI3dEMrQmc2Mm5zTSszWQpqZnNTU1lNQXlZdVhqRHR6S2pLekV2ZTVUZk
wwVFczSDV0WW1Od2p5MmYxclhLUGxTRnhZdkVLK0ExcUJ1aHcxREFEVDlTTitjVEFJCkpqamNKUkZITGZPN
kl4Q2x2N3dDOTBOZXgvNndOMUNaZXcrVHp1WkRMTU4rRGZJY1EyWmd5MkV4UjRlalQ2NjlWbXhNdkx6NEJj
cGsKOU9rMG9TeTFjK0hDUHVqSXlUUWxDRnp6N2FiSGxKK3RpRU1sMStFNVlQNnNPVmtDQXdFQUFhTkNNRUF
3RGdZRFZSMFBBUUgvQkFRRApBZ0VHTUE4R0ExVWRFd0VCL3dRRk1BTUJBZjh3SFFZRFZSME9CQllFRkovdV
JMT1UxZnFSVHk3WlZab0VWdHN0eE51bE1BMEdDU3FHClNJYjNEUUVCQlFVQUE0SUJBUUIvWDdsVFcyTTlkV
ExuK3NSMEdzdEczMFpwSEZMUHFrL0NhT3YvZ0tsUjZEMWlkNGs5Q25VNThXNWQKRjRkdmFBWEJsR3paWGQv
YXNsbkxwUkNLeXN3NXpaL3JUdDVTL3d6dzlKS3A4bXhUcTV2U1I2QWZkUGVibXZFdkZaOTZaREFZQnp3cQp
EMmZLL0ErSllaMWxwVHpsdkJOYkNOdmovKzI3QnJ0cUJyRjZUMlhHZ3YwZW5JdTFEZTVJdTdpOXFnaTArNk
44eTUvTmtIWmNocFo0ClZ3cG0rVmdhbmYyWEtXRGVFYWFRSEJrYzdnR1dJalEwTHBINXQ4UW4wWHZtdi91Q
VJGb1c1ZXZnMUFvNHZPU1I0OVhyWE1HczN4dHEKZko3bGRkSzJsNGZiekljclF6cUVDSytyUE52M1BHWXho
ckNkVTNudCtDUGVRdU10Z3ZFUDVmcVgKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKR2xvYmFsU2lnbiB
Sb290IENBIC0gUjMKPT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS
0tCk1JSURYekNDQWtlZ0F3SUJBZ0lMQkFBQUFBQUJJVmhUQ0tJd0RRWUpLb1pJaHZjTkFRRUxCUUF3VERFZ
01CNEdBMVVFQ3hNWFIyeHYKWW1Gc1UybG5iaUJTYjI5MElFTkJJQzBnVWpNeEV6QVJCZ05WQkFvVENrZHNi
MkpoYkZOcFoyNHhFekFSQmdOVkJBTVRDa2RzYjJKaApiRk5wWjI0d0hoY05NRGt3TXpFNE1UQXdNREF3V2h
jTk1qa3dNekU0TVRBd01EQXdXakJNTVNBd0hnWURWUVFMRXhkSGJHOWlZV3hUCmFXZHVJRkp2YjNRZ1EwRW
dMU0JTTXpFVE1CRUdBMVVFQ2hNS1IyeHZZbUZzVTJsbmJqRVRNQkVHQTFVRUF4TUtSMnh2WW1Gc1UybG4KY
mpDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTXdsZHBCNUJuZ2lGdlhBZzdh
RXlpaWUvUVYyRWNXdAppSEw4UmdKRHg3S0tuUVJmSk1zdVMrRmdna2JoVXFzTWdVZHdiTjFrMGV2MUxLTVB
najBNSzY2WDE3WVVoaEI1dXpzVGdIZU1DT0ZKCjBtcGlMeDllK3BabzM0a25sVGlmQnRjK3ljc21XUTF6M3
JESTZTWU9neFhHNzF1TDBnUmd5a21tS1BacE8vYkx5Q2lSNVoyS1lWYzMKckhRVTNIVGdPdTV5THk2Yys5Q
zd2L1U5QU9FR00raUNLNjVUcGpvV2M0emRRUTRnT3NDMHA2SHBzaytRTGpKZzZWZkx1UVNTYUdqbApPQ1pn
ZGJLZmQvK1JGTyt1SUVuOHJVQVZTTkVDTVdFWlhyaVg3NjEzdDJTYWVyOWZ3UlB2bTJMN0RXemdWR2tXcVF
QYWJ1bURrM0YyCnhtbUZnaGNDQXdFQUFhTkNNRUF3RGdZRFZSMFBBUUgvQkFRREFnRUdNQThHQTFVZEV3RU
Ivd1FGTUFNQkFmOHdIUVlEVlIwT0JCWUUKRkkvd1MzK29Ma1VrcmsxUSttT2FpOTdpM1J1OE1BMEdDU3FHU
0liM0RRRUJDd1VBQTRJQkFRQkxRTnZBVUtyK3lBenY5NVpVUlVtNwpsZ0FKUWF5ekU0YUdLQWN6eW12bWRM
bTZBQzJ1cEFyVDlmSHhENHEvYzJkS2c4ZEVlM2pncjI1c2J3TXBqak01UmNPTzVMbFhiS3I4CkVwYnNVOFl
0NUNSc3VaUmorOXhUYUdkV1BvTzR6elVodzhsby9zN2F3bE9xekpDSzZmQmRSb3lWM1hwWUtCb3ZIZDdOQU
RkQmorMUUKYmRkVEtKZCs4MmNFSGhYWGlwYTAwOTVNSjZSTUczTnpkdlFYbWNJZmVnN2pMUWl0Q2h3cy96e
XJWUTRQa1g0MjY4TlhTYjdoTGkxOApZSXZEUVZFVEk1M085ekpybEFHb21lY3NNeDg2T3lYU2hrRE9PeXlH
ZU1saEx4UzY3dHRWYjkrRTdnVUpUYjBvMkhMTzAySlFaUjdyCmtwZURNZG16dGNwSFdEOWYKLS0tLS1FTkQ
gQ0VSVElGSUNBVEUtLS0tLQoKVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSQo9PT09PT09PT09PT
09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlENFRDQ0FzbWdBd
0lCQWdJT1l5VUFBUUFDRkkwekZRTGtiUFF3RFFZSktvWklodmNOQVFFRkJRQXdlekVMTUFrR0ExVUVCaE1D
ClJFVXhIREFhQmdOVkJBb1RFMVJESUZSeWRYTjBRMlZ1ZEdWeUlFZHRZa2d4SkRBaUJnTlZCQXNURzFSREl
GUnlkWE4wUTJWdWRHVnkKSUZWdWFYWmxjbk5oYkNCRFFURW9NQ1lHQTFVRUF4TWZWRU1nVkhKMWMzUkRaVz
UwWlhJZ1ZXNXBkbVZ5YzJGc0lFTkJJRWxKU1RBZQpGdzB3T1RBNU1Ea3dPREUxTWpkYUZ3MHlPVEV5TXpFe
U16VTVOVGxhTUhzeEN6QUpCZ05WQkFZVEFrUkZNUnd3R2dZRFZRUUtFeE5VClF5QlVjblZ6ZEVObGJuUmxj
aUJIYldKSU1TUXdJZ1lEVlFRTEV4dFVReUJVY25WemRFTmxiblJsY2lCVmJtbDJaWEp6WVd3Z1EwRXgKS0R
BbUJnTlZCQU1USDFSRElGUnlkWE4wUTJWdWRHVnlJRlZ1YVhabGNuTmhiQ0JEUVNCSlNVa3dnZ0VpTUEwR0
NTcUdTSWIzRFFFQgpBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREMycHhpc0xseEVyQUx5QnBYc3E2REZKbXpOR
XVia0tMRjUrY3ZBcUJOTGFUNmhkcWJKWVV0ClFDZ2diZXJndmJGSWd5SXBSSjlPZys0MVVSTnpkTlc4OGpC
bWxGUEFRRFl2RElSbHpnOXV3bGlUNkN3TE91bkJqdnZ5YThvODRweE8KanVUNWZkTW5ueHZWWjNpSExYOEx
SN1BINk1sSWZLOHZ6QXJaUWUrZi9wcmhzcTc1VTdYbDZVYWZZT1BmamROLys1WitzN1Z5K0V1dApDSG5OYV
lsQUovVXF3YTFEN0tSVHlHRzI5OUo1S21jWWRraHRXeVVCMFNiRnQxZHBJeFZiWVlxdDhCc3QyYTljOFNhU
WFhblZERUQxCk00QkRqNXlqZGlwRnRLKy9mejZIUDNiRnpTcmVJTVVXV012NUcvVVB5dzBSVW1TNDBuWmlk
NFB4V0ovL0FnTUJBQUdqWXpCaE1COEcKQTFVZEl3UVlNQmFBRkZibjRWc2xRNERnOW96aGNieU81WUF2eEV
qaU1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFILwpCQVFEQWdFR01CMEdBMVVkRGdRV0JCUl
c1K0ZiSlVPQTRQYU00WEc4anVXQUw4Ukk0akFOQmdrcWhraUc5dzBCQVFVRkFBT0NBUUVBCmc4ZXY2bjlOQ
2p3NXNXaStlMjJKTHVtekNlY1lWNDJGbWhmemRrSlFFdy9Ia0c4enJjVkpZQ3RzU1ZnWjFPSyt0NytyU2J5
VXlLdSsKS0d3V2FPRElsMFlnb0dobllJZzVJRkhZYUFFUnpxZjJFUWYyN095c0doK3labTVXWjJCNmRGN0F
iWmMycnJVTlhXWnp3Q1V5UmRoSwpCZ2VQeExjSHNVMEdEZUdsNi9SMXlycWMwTDJ6MHpJa1RPNSs0bllFUz
BsVDJQTHBWRFA4NVhFZlBSUmNsa3Z4T3ZJQXUyeTArcFpWCkNJZ0p3Y3lSR1Ntd0lDMy95emlrUU9FWHZub
GhnUDhIQTRaTVRuc0dueEdHalludUo4VGI0cndaamd2RHd4UEhMUU5qTzlQbzVLSXEKd29JSWxCWlU4Tzhm
SjVBbHVBME9LQnRIZDBlOUhLZ2w4WlMwWmc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpBdXRvcml
kYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBBNjI2MzQwNjgKPT09PT09PT09PT
09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSV
ElGSUNBVEUtLS0tLQpNSUlHRkRDQ0EveWdBd0lCQWdJSVUrdzc3dnV5U0Y4d0RRWUpLb1pJaHZjTkFRRUZC
UUF3VVRFTE1Ba0dBMVVFQmhNQ1JWTXhRakJBCkJnTlZCQU1NT1VGMWRHOXlhV1JoWkNCa1pTQkRaWEowYVd
acFkyRmphVzl1SUVacGNtMWhjSEp2Wm1WemFXOXVZV3dnUTBsR0lFRTIKTWpZek5EQTJPREFlRncwd09UQT
FNakF3T0RNNE1UVmFGdzB6TURFeU16RXdPRE00TVRWYU1GRXhDekFKQmdOVkJBWVRBa1ZUTVVJdwpRQVlEV
lFRREREbEJkWFJ2Y21sa1lXUWdaR1VnUTJWeWRHbG1hV05oWTJsdmJpQkdhWEp0WVhCeWIyWmxjMmx2Ym1G
c0lFTkpSaUJCCk5qSTJNelF3Tmpnd2dnSWlNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0SUNEd0F3Z2dJS0FvSUN
BUURLbG11TzZ2ajc4YUkxNEg5TTJ1REQKVXRkOXRoRElBbDZ6UXlyRVQycXl5aHhkS0pwNEVScHBXVmV2dF
NCQzVJc1A1dDlicGdPU0wvVVI1R0xYTW5FNDJRUU1jYXM5VVg0UApCOTlqQlZ6cHY1UnZ3U21Dd0xUYVViR
EJQTHV0TjBwY3l2RkxOZzRrcTcvRGhIZjlxRkQwc2VmR0w5SXRXWTE2Q2s2V2FWSUNxamFZCjdQejZGSU1N
TngvSmtqZC8xNEV0NWNTNTRENDAvbWYwUG1iUjAvUkF6MTVpTkE5d0JqNGdHRnJPOTNJYkpXeVRkQlNUbzN
PeERxcUgKRUNOWlh5QUZHVWZ0YUk2U0VzcGQvTllyc3BJOElNL2hYNjhndnFCMmYzYmw3QnFHWVRNKzUzdT
BQNkFQanFLNWFtKzVoeVp2UVd5SQpwbEQ5YW1NTDlaTVdHeG1Qc3UyYm04bVE5UUVNM3hrOUR6NDRJOGt2a
nd6UkF2NGJWZFpPMEkwOHIwK2s4LzZ2S3RNRm5Ya0lvY3RYCk1iU2N5SkN5Wi9RWUZwTTYvRWZZMFhpV01S
KzZLd3hmWFptdFk0bGFKQ0IyMk4vOXEwNm1JcXFkWHVZbmluMW9LYVBuaXJqYUVic1gKTFptZEV5Ukc5OFh
pMkorT2Y4ZVBkRzFhc3VoeTlhenVKQkN0THhUYS95MmFSbkZIdmtMZnV3SGI5SC9US0k4eFdWdlR5UUttdE
ZMSwpicGY3UThVSUptK0s5THY5bnlpcURkVkY4eE02SGRqQWVJOUJaendlbEdTdWV3dkY2TmtCaURrYWw0W
mtRZFU3aHd4dStnL0d2VWdVCnZ6bE4xSjVCdG8rV0hXT1drOW1WQm5neGFKNDNCanVBaVVWaE9TUEhHMFNq
RmVVYytKSXd1d0lEQVFBQm80SHZNSUhzTUJJR0ExVWQKRXdFQi93UUlNQVlCQWY4Q0FRRXdEZ1lEVlIwUEF
RSC9CQVFEQWdFR01CMEdBMVVkRGdRV0JCUmx6ZXVyTlI0QVBuN1ZkTUFjdEhOSApEaHBrTHpDQnBnWURWUj
BnQklHZU1JR2JNSUdZQmdSVkhTQUFNSUdQTUM4R0NDc0dBUVVGQndJQkZpTm9kSFJ3T2k4dmQzZDNMbVpwC
mNtMWhjSEp2Wm1WemFXOXVZV3d1WTI5dEwyTndjekJjQmdnckJnRUZCUWNDQWpCUUhrNEFVQUJoQUhNQVpR
QnZBQ0FBWkFCbEFDQUEKYkFCaEFDQUFRZ0J2QUc0QVlRQnVBRzhBZGdCaEFDQUFOQUEzQUNBQVFnQmhBSEl
BWXdCbEFHd0Fid0J1QUdFQUlBQXdBRGdBTUFBeApBRGN3RFFZSktvWklodmNOQVFFRkJRQURnZ0lCQUJkOW
9QbTAzY1hGNjYxTEpMV2hBcXZkcFloS3NnOVZTeXRYakR2bE1kMyt4REx4CjUxdGtsall5R095bE1uZlg0M
FMyd0JFcWdMazlhbTU4bTlPdC9NUFdvK1prS1h6UjRUZ2VnaXYvSjJXdit4WVZ4QzV4aE9XMS8vcWsKUjcx
a01ydjJKWVNpSjBMMUlMRENFeEFSelJBVnVrS1FLdEpFNFpZbTZ6RklFdjBxMnNrR3ozUWVxVXZWaHlqNWV
UU1NQaTVFNlBhUApUNDgxUHlXek9keGpLcEJySUYvRVVoSk9seXdxckoyWDNranlvMmJid3RLRGxhWm1wNT
RsRCtrTE01RmxDbHJEMlZRUzNhL0RUZzRmCkpsNE4zTE9ON05XQmNON1NUeVFGODJ4TzlVeEpabzNSLzlJT
EpVRkkvbEdFeGtLdmdBVFAwSDVrU2VUeTM2THNzVXpBS2gzbnRMRmwKb3NTODhaajBxbkFIWTdTNDJqdE0r
a0FpTUZzUnB2QUZEc1lDQTBpcmhwdUYzZHZkNnFKMmdITjk5WndFeEVXTjU3a2NpNTdxMTNYUgpjckhlZFV
UblFuM2lWMnQ5M0ptOFBZTW82b0NUamNWTVpjRndnYmc0L0VNeHN2WURORWV5clBzaUJzc2UzUmRISEY5bX
VkTWFvdG9SCnNhUzhJOG5rdm9mL3VaUzIrRjBnU3RSZjU3MW9lMlh5RlI3U09xa3Q2ZGhySkt5WFdFUkhyV
mtZOFNGbGNON09OR0NvUVBIelBLVEQKS0NPTS9pY3pRMENnRnp6cjZqdXdjcWFqdVVwTFhoWkk5TEs4eUl5
U3haMmZySEkydkRTQU5HdXBpNUxBdUJmdDdIWlQ5U1FCakxNaQo2RXQ4VmNhZCtxTVV1MldGYm01UEVuNEt
QSjJWCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkl6ZW5wZS5jb20KPT09PT09PT09PQotLS0tLUJFR0
lOIENFUlRJRklDQVRFLS0tLS0KTUlJRjhUQ0NBOW1nQXdJQkFnSVFBTEMzV2haSVg3L2h5L1dMMXhubWZUQ
U5CZ2txaGtpRzl3MEJBUXNGQURBNE1Rc3dDUVlEVlFRRwpFd0pGVXpFVU1CSUdBMVVFQ2d3TFNWcEZUbEJG
SUZNdVFTNHhFekFSQmdOVkJBTU1Da2w2Wlc1d1pTNWpiMjB3SGhjTk1EY3hNakV6Ck1UTXdPREk0V2hjTk1
6Y3hNakV6TURneU56STFXakE0TVFzd0NRWURWUVFHRXdKRlV6RVVNQklHQTFVRUNnd0xTVnBGVGxCRklGTX
UKUVM0eEV6QVJCZ05WQkFNTUNrbDZaVzV3WlM1amIyMHdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDR
HdBd2dnSUtBb0lDQVFESgowM3JLRHg2c3A0Ym9GbVZxc2NJYlJUSnhsZG4rRUZ2TXIrZWxlUUdQaWNQSzhs
Vng5M2UrZDVUemNxUXNSTmlla3BzVU9xSG5KSkF
LCkNsYU94ZGdtbE9IWlNPRXRQdG9LY3Qyam1SWGFnYUtIOUh0dUpuZUpXSzNXNnd5eVFYcHpibTNiZW5oQj
ZRaUlFbjZITG1ZUlkyeFUKK3p5ZGNzQzhMdi9DdDkwTmR1TTYxL2UwYUw2aTllT0Jic0ZHYjEyTjRFM0dWR
ldKR2pNeENyRlh1YU9LbU1Qc096VEZsVUZwZm5YQwpQQ0RGWWJwUlI2QWdrSk9oa0V2elRueUZSVlNhMFFV
bVFiQzFUUjB6dnNRRHlDVjh3WERiTy9RSkxWUW5TS3d2NGNTc1Bzakxra3hUCk9UY2o3Tk1CK2VBSlJFMU5
aTURoRFZxSElyeXRHNlArSnJVVjg2ZjhoQm5wN0tHSXRFUnBoSVB6aWRGMEJxbk1DOWJDM2llRlVDYksKRj
dqSmVvZFdMQm9CSG15K0U2MFFyTFVrOVRpUm9kWkwydkc3MHQ1SHRmRzhnZlpaYTg4WlUrbU5GY3RLeTZsd
lJPVWJRYy9oaHFmSwowR3FmdkV5TkJqTmFvb1hsa0RXZ1lsd1dUdkRqb3ZvREdyUXNjYk5ZTE41N0M5c2FE
K3ZlSVI4R2R3WURzTW52bWZ6QXVVOExoaWorCjBybnE0OXFsdzBkcEV1RGI4UFlaaSsxN2NOY0MxdTJIR0N
nc0JDUk1kK1JJaWhyR081clVEOHI2ZGRJQlFGcU5lYitMejB2UHFoYkIKbGVTdFRJbytGNUhVc1dMbGd1V0
FCS1FEZm8yLzJuK2lENWRQRE5NTis5ZlI1WEorSE1oMy8xdWFEN2V1QlVibDhhZ1c3RWVrRndJRApBUUFCb
zRIMk1JSHpNSUd3QmdOVkhSRUVnYWd3Z2FXQkQybHVabTlBYVhwbGJuQmxMbU52YmFTQmtUQ0JqakZITUVV
R0ExVUVDZ3crClNWcEZUbEJGSUZNdVFTNGdMU0JEU1VZZ1FUQXhNek0zTWpZd0xWSk5aWEpqTGxacGRHOXl
hV0V0UjJGemRHVnBlaUJVTVRBMU5TQkcKTmpJZ1V6Z3hRekJCQmdOVkJBa01Pa0YyWkdFZ1pHVnNJRTFsWk
dsMFpYSnlZVzVsYnlCRmRHOXlZbWxrWldFZ01UUWdMU0F3TVRBeApNQ0JXYVhSdmNtbGhMVWRoYzNSbGFYb
3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPCkJCWUVGQjBj
WlE2bzhpVjd0SkhQNUxHeDVyMVZkR3dGTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElDQVFCNHBnd1dTcDlNaUR
yQXl3NmwKRm4yZnVVaGZHSThOWWpiMnpSbHJyS3ZWOXBGOXJuSHpQN01PZUlXYmxhUW5JVWRDU254SU92Vk
ZmTE1NamxGNHJKVVQzc2I5ZmJnYQprRXlya2dQSDdVSUJ6Zy9Zc2ZxaWt1RmdiYTU2YXdtcXhpbnVhRWxuT
UlBa2VqRVdPVnQrOFJ3dTNXd0pyZkl4d1lKT3VidjV2cjhxCmhUL0FRS002V2Z4WlN6d29KTnUwRlhXdURZ
aTZMblBBdlZpSDVVTHk2MTd1SGpBaW1jczMwY1FoYklIc3ZtMG01aHprUWlDZVI3Q3MKZzFsd0xEWFdyelk
wdE0wNytES283K040aWZ1TlJTemFuTGgrUUJ4aDV6NmlraXhMOHMzNm1MWXAvL1B5ZTZrZkxxQ1RWeXZlaF
FQNQphVGZMbm5ocUJiVEZNWGlKN0hxbmhlRzVlenpldmg1NWhNNmZjQTVad2pVdWtDb3gyZVJGZWtHa0xoT
2JOQTVtZTBtclpKZlFSc041Cm5YSlFZNmFZV3dhOVNHM1lPWU53NkRYd0JkR3F2T1BieUFMcWZQMkMyc0pi
VWpXdW1EcXR1aldUSTZjZlNOMDFScGl5RUdqa3BUSEMKQ2xndUdZRVF5VkIxL09wYUZzNFIxKzd2VUlndFl
mOC9Rbk1GbEVQVmpqeE9BVG9acFI5R1RuZlFYZVdCSWlHSC9wUjloTmlUcmRabwpRMGl5Mit0ekpPZVJmMV
NrdG9BK25hTThUSExDVjhTZzFNdzRKODdWQnA2aVNObnBuODZDY0RhVG1qdmZsaUhqV2JjTTJwRTM4UDFaC
ldyT1p5R2xzUXlZQk5XTmdWWWtET25YWXVrclpWUC91M29EWUxkRTQxVjR0QzVoOVBtemIvQ2FJeHc9PQot
LS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpDaGFtYmVycyBvZiBDb21tZXJjZSBSb290IC0gMjAwOAo9PT0
9PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJSF
R6Q0NCVGVnQXdJQkFnSUpBS1BhUW42a3NhN2FNQTBHQ1NxR1NJYjNEUUVCQlFVQU1JR3VNUXN3Q1FZRFZRU
UdFd0pGVlRGRApNRUVHQTFVRUJ4TTZUV0ZrY21sa0lDaHpaV1VnWTNWeWNtVnVkQ0JoWkdSeVpYTnpJR0Yw
SUhkM2R5NWpZVzFsY21acGNtMWhMbU52CmJTOWhaR1J5WlhOektURVNNQkFHQTFVRUJSTUpRVGd5TnpRek1
qZzNNUnN3R1FZRFZRUUtFeEpCUXlCRFlXMWxjbVpwY20xaElGTXUKUVM0eEtUQW5CZ05WQkFNVElFTm9ZVz
FpWlhKeklHOW1JRU52YlcxbGNtTmxJRkp2YjNRZ0xTQXlNREE0TUI0WERUQTRNRGd3TVRFeQpNamsxTUZvW
ERUTTRNRGN6TVRFeU1qazFNRm93Z2E0eEN6QUpCZ05WQkFZVEFrVlZNVU13UVFZRFZRUUhFenBOWVdSeWFX
UWdLSE5sClpTQmpkWEp5Wlc1MElHRmtaSEpsYzNNZ1lYUWdkM2QzTG1OaGJXVnlabWx5YldFdVkyOXRMMkZ
rWkhKbGMzTXBNUkl3RUFZRFZRUUYKRXdsQk9ESTNORE15T0RjeEd6QVpCZ05WQkFvVEVrRkRJRU5oYldWeV
ptbHliV0VnVXk1QkxqRXBNQ2NHQTFVRUF4TWdRMmhoYldKbApjbk1nYjJZZ1EyOXRiV1Z5WTJVZ1VtOXZkQ
0F0SURJd01EZ3dnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDCkFRQ3ZBTXR3Tnl1
QVdrbzZiSGlVZmFOL0doLzJOZFc5MjhzTlJISStKcktRVXJwak95aFliNld6YlpTbTg5MWtERlgyOXVmeUl
pS0EKWHVGaXhyWXA0WUZzOHIvbGZUSnFWS0F5R1ZuK0g0dlhQV0NHaFNSdjR4R3pkejRnbGpVaGE3TUkyWE
F1WlBlRWtsUFdEckNRaW9yagpoNDBHMDcyUUR1S1pvUnVHRHRxYUNyc0xZVkFHVXZHZWYzYnN5dy9RSGczU
G1UQTlITVJGRUZpczF0UG8xK1hxeFFFSGQ5WlI1Z04vCmlraWxUV2gxdWVtOG5rNFpjZlV5UzV4dFlCa0wr
OHlkZGR5L0pzMlBrM2c1ZVhOZUpRN0tYT3QzRWdmTFpFRkhjcE9yVU1QckNYWmsKTk5JNXQzWVJDUTEyUmN
TcHJqMXFyN1Y5WlMrVVdCRHNYSHl2ZnVLMkdOblFtMDVhU2QrcFpndk1QTVo0ZktlY0hlUE9qbE8rQmQ1Zw
pEMnZsR3RzLzQrRWh5U25COGVzSG5GSWJBVVJSUEhzbDE4VGxVbFJkSlFmS0ZpQzRyZVJCN25vSS9wbHZnN
mFSQXJCc05sVnE1MzMxCmx1YktnZGFYOFpTRDZlMndzV3NTYVI2cysxMnB4WmpwdEZ0WWVyNDlva1E2WTFu
VUN5WGVHMCs5NVFHZXpkSXAxWjhYR1FwdnZ3eVEKMHdsZjJlT0tOY3g1V2swWk41SzN4TUd0ci9SNUpKcXl
BUXV4cjF5Vzg0QXkrMXc5bVBHZ1AwcmV2cStVTHRsVm1oZHVZSjFqYkxoagp5YTZCWEJnMTRKQzd2anhQTn
lLNWZ1dlBubmNocGowNGdmdEkyakU5SytPSjlkQzF2WDdnVU1RU2liTWptaEF4aGR1dWIrODRNeGgyCkVRS
URBUUFCbzRJQmJEQ0NBV2d3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCRERBZEJnTlZIUTRFRmdRVStTU3NE
N0sxK0huQSttQ0kKRzhUWlRRS2VGeGt3Z2VNR0ExVWRJd1NCMnpDQjJJQVUrU1NzRDdLMStIbkErbUNJRzh
UWlRRS2VGeG1oZ2JTa2diRXdnYTR4Q3pBSgpCZ05WQkFZVEFrVlZNVU13UVFZRFZRUUhFenBOWVdSeWFXUW
dLSE5sWlNCamRYSnlaVzUwSUdGa1pISmxjM01nWVhRZ2QzZDNMbU5oCmJXVnlabWx5YldFdVkyOXRMMkZrW
khKbGMzTXBNUkl3RUFZRFZRUUZFd2xCT0RJM05ETXlPRGN4R3pBWkJnTlZCQW9URWtGRElFTmgKYldWeVpt
bHliV0VnVXk1QkxqRXBNQ2NHQTFVRUF4TWdRMmhoYldKbGNuTWdiMllnUTI5dGJXVnlZMlVnVW05dmRDQXR
JREl3TURpQwpDUUNqMmtKK3BMR3UyakFPQmdOVkhROEJBZjhFQkFNQ0FRWXdQUVlEVlIwZ0JEWXdOREF5Qm
dSVkhTQUFNQ293S0FZSUt3WUJCUVVICkFnRVdIR2gwZEhBNkx5OXdiMnhwWTNrdVkyRnRaWEptYVhKdFlTN
WpiMjB3RFFZSktvWklodmNOQVFFRkJRQURnZ0lCQUpBU3J5STEKd3FNNThDN2U2YlhwZUh4SXZqOTlSWkpl
NmRxeEdmd1dQSiswVzJhZWF1ZkR1VjJJNkErdHp5TVAzaVU2WHN4UHBjRzFMYXdrMGxnSAozcUxQYVlSZ00
rZ1FEUk9wSTlDRjVZNTdwcDQ5Y2hOeU0vV3FmY1pqSHdqMC9nRi9KTThyTEZRSjN1SXJiWkxHT1U4VzZqeC
tla2JVClJXcEdxT3QxZ2xhbnE2QjhhQk16OXAwdzhHOG5PU1FqS3BEOWtDazE4cFBmTktYRzkvanZqQTlpU
255dTAvVlUrSTIybWxhSEZvSTYKTTZ0YUlnajNncnJxTHVCSG1yUzFSYU1GTzluY0xrVkFPK3JjZitnNzY5
SHNKdGcxcERERk9xeFhuck4ycFNCNytSNUtCV0lCcGloMQpZSmVTRFc0K1RUZEREWklWbkJnaXpWR1pvQ2t
hUEYrS01qTmJNTWVKTDBlWUQ2TUR4dmJ4ck44eThObUJHdVNjdmZhQUZQRFJMTG1GCjlkaWpzY2lsSWVVY0
U1ZnVEcjNmS2Fudk5GTmIwK1JxRTRRR3RqSUN4Rkt1SXRMY3NpRkNHdHBBOENuSjdBb01YT0xRdXN4STB6Y
0sKekJJS2lubXdQUU4vYVV2ME5DQjlzelRxamt0azlUNzlzeU5uRlEwRXVQQXR3UWxSUExKc0ZmQ2xJOWVE
ZE9UbExzbittQ2RDeHF2RwpuckRRV3ppbG0xRGVmaGlZdFVVNzlubTA2UGNhZXdhRCs5Q0wycnZIdlJpckN
HODhnR3RBUHhrWnVtV0s1cjdWWE5NMjErOUFVaVJnCk9HY0VNZXlQODRMRzNybFY4enN4a1ZyY3RRZ1ZyWF
lsQ2cxN0xvZmlES1lHdkNZUWJUZWQ3TjE0akh5QXhmRFpkMGpRCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tL
S0KCkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwOAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUhTVENDQlRHZ0F3SUJBZ0lKQU1uTjArblZmU1B
PTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUdzTVFzd0NRWURWUVFHRXdKRlZURkQKTUVFR0ExVUVCeE02VFdGa2
NtbGtJQ2h6WldVZ1kzVnljbVZ1ZENCaFpHUnlaWE56SUdGMElIZDNkeTVqWVcxbGNtWnBjbTFoTG1OdgpiU
zloWkdSeVpYTnpLVEVTTUJBR0ExVUVCUk1KUVRneU56UXpNamczTVJzd0dRWURWUVFLRXhKQlF5QkRZVzFs
Y21acGNtMWhJRk11ClFTNHhKekFsQmdOVkJBTVRIa2RzYjJKaGJDQkRhR0Z0WW1WeWMybG5iaUJTYjI5MEl
DMGdNakF3T0RBZUZ3MHdPREE0TURFeE1qTXgKTkRCYUZ3MHpPREEzTXpFeE1qTXhOREJhTUlHc01Rc3dDUV
lEVlFRR0V3SkZWVEZETUVFR0ExVUVCeE02VFdGa2NtbGtJQ2h6WldVZwpZM1Z5Y21WdWRDQmhaR1J5WlhOe
klHRjBJSGQzZHk1allXMWxjbVpwY20xaExtTnZiUzloWkdSeVpYTnpLVEVTTUJBR0ExVUVCUk1KClFUZ3lO
elF6TWpnM01Sc3dHUVlEVlFRS0V4SkJReUJEWVcxbGNtWnBjbTFoSUZNdVFTNHhKekFsQmdOVkJBTVRIa2R
zYjJKaGJDQkQKYUdGdFltVnljMmxuYmlCU2IyOTBJQzBnTWpBd09EQ0NBaUl3RFFZSktvWklodmNOQVFFQk
JRQURnZ0lQQURDQ0Fnb0NnZ0lCQU1EZgpWdFBrT3B0MlJiUVQyLy9CdGhtTE4wRVlsVkpINnhlZEtZaU9OV
3dHTWk1SFl2TkpCTDk5UkRheGNjeTlXZ2x6MWRtRlJQK1JWeVhmClhqYU9jTkZjY1VNZDJkcnZYTkw3Rzcw
NnRjdXRvOHhFcHcydUlSVS91WHBia25YWXBCSTRpUm1LdDREUzRqSnZWcHlSMW9nUUM3TjAKWkpKMFlQUDJ
6eGhQWUxJajBNYzd6bUZMbVkvQ0ROQkFzcGpjRGFoT283a0tybUNnclVWU1k3cG12V2pnK2I0YXFJRzdIa0
Y0ZGRQQgovZ0JWc0lkVTZDZVFOUjFNTTYyWC9KY3VtSVMvTE1tanY5R1lFUlR0WS9qS21JaFlGNW50UlFPW
GZqeUdIb2lNdnZLUmhJOWxOTmdBClRIMjNNUmRhS1hvS0dDUXdvemUxZXFrQmZTYlcrUTZPV2ZIOUd6TzFL
VHNYTzBHMklkM1V3RDJsbjU4ZlExREp1N3hzZXBlWTdzMk0KSC91Y1VhNkxjTDBubjNIQWE2eDlrR2JvMTE
wNkRiRFZ3bzNWeUoyZHdXM1EwTDlSNU9QNHd6ZzJydGFuZGVhdmhFTmRrNUlNYWdmZQpPeDJZSXRhc3dUWG
JvNkFsLzNLMWRoM2ViZWtzWml4U2hOQkZrczRjNWVVekhkd0hVMVNqcW9JN21qY3YzTjJnWk9ubTNiMnUvR
1NGCkhUeW55UWJlaFA5cjZHc2FQTVdpczBMN2l3aytYd2hTeDJMRTFBVnh2OFJrNVBpaGcrZytFcHVvSHRR
MlRTOXg5bzBvOW9PcEU5SmgKd1pHN1NNQTBqMEdNUzB6YmFSTC9VSlNjSUlOWmMrMThvZkx4L2QzM1NkTkR
XS0JXWThvOVBlVTFWbG5wRHNvZ3pDdExreWtQQWdNQgpBQUdqZ2dGcU1JSUJaakFTQmdOVkhSTUJBZjhFQ0
RBR0FRSC9BZ0VNTUIwR0ExVWREZ1FXQkJTNUNjcWNIdHZUYkRwcnJ1MVU4VnVUCkJqVXVYakNCNFFZRFZSM
GpCSUhaTUlIV2dCUzVDY3FjSHR2VGJEcHJydTFVOFZ1VEJqVXVYcUdCc3FTQnJ6Q0JyREVMTUFrR0ExVUUK
QmhNQ1JWVXhRekJCQmdOVkJBY1RPazFoWkhKcFpDQW9jMlZsSUdOMWNuSmxiblFnWVdSa2NtVnpjeUJoZEN
CM2QzY3VZMkZ0WlhKbQphWEp0WVM1amIyMHZZV1JrY21WemN5a3hFakFRQmdOVkJBVVRDVUU0TWpjME16ST
ROekViTUJrR0ExVUVDaE1TUVVNZ1EyRnRaWEptCmFYSnRZU0JUTGtFdU1TY3dKUVlEVlFRREV4NUhiRzlpW
Vd3Z1EyaGhiV0psY25OcFoyNGdVbTl2ZENBdElESXdNRGlDQ1FESnpkUHAKMVgwanpqQU9CZ05WSFE4QkFm
OEVCQU1DQVFZd1BRWURWUjBnQkRZd05EQXlCZ1JWSFNBQU1Db3dLQVlJS3dZQkJRVUhBZ0VXSEdoMApkSEE
2THk5d2IyeHBZM2t1WTJGdFpYSm1hWEp0WVM1amIyMHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnSUJBSUNJZj
NEZWtpalpCWlJHCi81QlhxZkV2M3hvTmEvcDhEaHhKSkhrbjJFYXFieWxaVW9od0V1cmRQZldiVTFSdjRXQ
2lxQW01N090WmZNWTE4ZHdZNmZGbjVhKzYKUmVBSjNzcEVEOElYRG5lUlJYb3pYMStXTEdpTHdVZVBtSnM5
d096TDlkV0Nrb1ExMGI0Mk9GWnlNVnRITGFvWHBHTlI2d29CclgvcwpkWjdMb1IveGZ4S3h1ZVJrZjJmV0l
5cjB1RGxkbU9naHArRzlQVUlhZEpwd3IyaHNVRjFKei8vN0RsM21MRWZYZ1RwWkFMVnphMk1nCjlqRkZDRG
tPOUhCK1FIQmFQOUJyUXFsMFBTZ3ZBbTExY3BVSmpVaGp4c1lqVjVLVFhqWEJqZmtLOXl5ZFloejJyWHpkc
GpFZXRySEgKZm9VbStxUnF0ZHBqTU5Idmt6ZXlaaTk5QmZmbnQwdVlsRFhBMlRvcHdaMnlVRE1kU3FsYXBz
a0Q3KzMwNTZodWlyUlhoT3VrUDlEdQpxcXFIVzJQb2srSnJxTlM0Y25ockcrMDU1RjNMbTZxSDFVOU9BUDd
aYXA4OE1ROG9BZ0Y5bU9pbnNLSmtubm40U1BJVnFjem15RVRyClAzaVo4bnR4UGp6eG1LZkZHQkkvNXJzb0
0wTHBSUXA4YmZLR2VTL0ZnaGw5Q1lsOHNsUjJpSzdld2ZQTTRXN2JNZGFUcnBtZzd5VnEKYzVpSld6b3VFN
GdldjhDU2xEUWI0eWUzaXg1dlF2L242VGViVUIwdG92a0M3c3RZV0RweHZHampxc0d2SENnZm90d2paVCtC
NnE2WgowOWd3enhNTlR4WEpoTHluU0MzNE1DTjMyRVpMZVczMmpPMDZmMkFSZVBUcG02N1ZWTUIwZ05FTFF
wL0IKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3
JpdHkgLSBHMgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ
0VSVElGSUNBVEUtLS0tLQpNSUlEeFRDQ0FxMmdBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJBUXNGQURDQmd6
RUxNQWtHQTFVRUJoTUNWVk14RURBT0JnTlZCQWdUCkIwRnlhWHB2Ym1FeEV6QVJCZ05WQkFjVENsTmpiM1I
wYzJSaGJHVXhHakFZQmdOVkJBb1RFVWR2UkdGa1pIa3VZMjl0TENCSmJtTXUKTVRFd0x3WURWUVFERXloSG
J5QkVZV1JrZVNCU2IyOTBJRU5sY25ScFptbGpZWFJsSUVGMWRHaHZjbWwwZVNBdElFY3lNQjRYRFRBNQpNR
Gt3TVRBd01EQXdNRm9YRFRNM01USXpNVEl6TlRrMU9Wb3dnWU14Q3pBSkJnTlZCQVlUQWxWVE1SQXdEZ1lE
VlFRSUV3ZEJjbWw2CmIyNWhNUk13RVFZRFZRUUhFd3BUWTI5MGRITmtZV3hsTVJvd0dBWURWUVFLRXhGSGI
wUmhaR1I1TG1OdmJTd2dTVzVqTGpFeE1DOEcKQT
FVRUF4TW9SMjhnUkdGa1pIa2dVbTl2ZENCRFpYSjBhV1pwWTJGMFpTQkJkWFJvYjNKcGRIa2dMU0JITWpDQ
0FTSXdEUVlKS29aSQpodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUw5eFlnangrbGswOXh2SkdLUDNn
RWxZNlNLREU2YkZJRU1CTzRUeDVvVkpueWZxCjlvUWJUcUMwMjNDWXh6SUJzUVUrQjA3dTlQcFBMMWt3SXV
lckdWWnI0b0FIL1BNV2RZQTVVWHZsK1RXMmRFNnBqWUlUNUxZL3FRT0QKK3FLK2loVnFmOTRMdzdZWkZBWE
s2c09vQkpRN1Jud3lEZk1BWmlMSWpXbHROb3dSR0xmVHNoeGd0RGo2QW96TzA5MUdCOTRLUHV0ZApmTWg4K
zdBclU2U1NZbWxSSlFWaEdrU0JqQ3lwUTVZajM2dzZnWm9PS2NVY3FlbGRIcmFlbmpBS09jN3hpSUQ3UzEz
TU11eUZZa01sCk5BSldKd0dSdER0d0tqOXVzZWljaUFGOW45VDUyMU50WUoyL0xPZFlxN2hmUnZ6T3hCc0R
QQW5yU1RGY2FVYXo0RWNDQXdFQUFhTkMKTUVBd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0JnTlZIUThCQW
Y4RUJBTUNBUVl3SFFZRFZSME9CQllFRkRxYWhRY1FaeWkyNy9hOQpCVUZ1SU1HVTJnL2VNQTBHQ1NxR1NJY
jNEUUVCQ3dVQUE0SUJBUUNaMjExNTFmbVhXV2NEWWZGK093WXhkUzJoSUk1UFpZZTA5NmFjCnZOanBMOURi
V3U3UGRJeHp0RGhDMmdWNytBSjF1UDJsc2RldTl0ZmVFOHRURUg2S1J0R1grcmN1S3hHcmtMQW5nUG5vbjF
ycE41K3IKNU45c3M0VVhuVDNaSkU5NWtUWFdYd1RyZ0lPcm1nSXR0UkQwMkpESEJITkE3WElsb0ttZjdKNn
JhQktaVjhhUEVqb0pwTDFFL1FZVgpOOEdiNURLajdUam8yR1R6TEg0VS9BTHFuODMvQjJnWDJ5S1FPQzE2a
mRGVThXbmpYelBLZWoxN0N1UEtmMTg1NWVKMXVzVjJHRFBPCkxQQXZUSzMzc2VmT1Q2akVtMHBVQnNWL2Zk
VUlEK0ljL240WHVLeGU5dFFXc2tNSkRFMzJwMnUwbVlSbHlucUk0dUpFdmx6MzZoejEKLS0tLS1FTkQgQ0V
SVElGSUNBVEUtLS0tLQoKU3RhcmZpZWxkIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IC0gRzIKPT09PT
09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tL
S0tCk1JSUQzVENDQXNXZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBRENCanpFTE1Ba0dBMVVFQmhN
Q1ZWTXhFREFPQmdOVkJBZ1QKQjBGeWFYcHZibUV4RXpBUkJnTlZCQWNUQ2xOamIzUjBjMlJoYkdVeEpUQWp
CZ05WQkFvVEhGTjBZWEptYVdWc1pDQlVaV05vYm05cwpiMmRwWlhNc0lFbHVZeTR4TWpBd0JnTlZCQU1US1
ZOMFlYSm1hV1ZzWkNCU2IyOTBJRU5sY25ScFptbGpZWFJsSUVGMWRHaHZjbWwwCmVTQXRJRWN5TUI0WERUQ
TVNRGt3TVRBd01EQXdNRm9YRFRNM01USXpNVEl6TlRrMU9Wb3dnWTh4Q3pBSkJnTlZCQVlUQWxWVE1SQXcK
RGdZRFZRUUlFd2RCY21sNmIyNWhNUk13RVFZRFZRUUhFd3BUWTI5MGRITmtZV3hsTVNVd0l3WURWUVFLRXh
4VGRHRnlabWxsYkdRZwpWR1ZqYUc1dmJHOW5hV1Z6TENCSmJtTXVNVEl3TUFZRFZRUURFeWxUZEdGeVptbG
xiR1FnVW05dmRDQkRaWEowYVdacFkyRjBaU0JCCmRYUm9iM0pwZEhrZ0xTQkhNakNDQVNJd0RRWUpLb1pJa
HZjTkFRRUJCUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFMM3R3UVA4OW8vOEFyRnYKVzU5STJaMTU0cUszQTJGV0dN
Tkh0dGZLUFRVdWlVUDNvV21iM29vYS9STWduTFJKZHpJcFZ2MjU3SXpkSXZweTNDZGhsKzcyV29UcwpiaG0
1aVN6Y2hGdlZkUHRyWDhXSnBSQlNpVVpWOUxoMUhPWi81RlN1Uy9oVmNsY0NHZmdYY1ZuckhpZ0hkTVdkU0
w1c3RQU2tzUE5rCk4zbVN3T3hHWG4vaGJWTk1ZcS9OSHd0anV6cWQrL3g1QUpoaGRNOG1na0JqODdKeWFoa
05tY3JVRG5YTU4vdUxpY0ZaOFdKL1g3TmYKWlRENHA3ZE5kbG9lZGw0MHdPaVdWcG1Lcy9CL3BNMjkzREl4
ZkpIUDRGOFIrR3VxU1Z6Um1aVFJvdU5qV3dsMnRWWmk0VXQwSFpiVQpKdFFJQkZuUW1BNE81dDc4dyt3Zmt
QRUNBd0VBQWFOQ01FQXdEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DCkFRWXdIUV
lEVlIwT0JCWUVGSHdNTWgrbjJUQi94SDFvbzJLb29jNnJCMXNuTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQ
VFBUldmb2wKVHdOdmxKazdtaCtDaFRuVWRnV1VYdUVvazIxaVhRbkNvS2pVc0hVNDhUUnFuZVNmaW9ZbVVl
WXMwY1l0YnBVZ1NwSUI3TGlLWjNzeAo0bWN1akpVREppNURuVW94OWc2MURMdTM0amQvSXJvQW93NTdVdnR
ydXp2RTAzbFJUczJROUdjSEdjZzhSbm9OQVgzRldPZHQ1b1V3CkY1b2t4QkRnQlBmZzhuL1VxZ3IvUWgwMz
daVGxaRmtTSUhjNDB6SStPSUYxbG5QNmFJK3h5ODRmeGV6Nm5IN1Bmckh4QnkyMi9ML0sKcEwvUWx3Vkt2T
29ZS0FLUXZWUjRDU0Z4MDlGOUhka1dzS2xoUGRBS0FDTDh4M3ZMQ1dSRkN6dEFnZmQ5ZkRMMW1NcFlqbjBx
N3BCWgpjMlQ1Tm5SZUphSDFaZ1V1ZnprVnFTcjdVSXVPaFduMAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0
tCgpTdGFyZmllbGQgU2VydmljZXMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMgo9PT09PT09PT
09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQ
VRFLS0tLS0KTUlJRDd6Q0NBdGVnQXdJQkFnSUJBREFOQmdrcWhraUc5dzBCQVFzRkFEQ0JtREVMTUFrR0Ex
VUVCaE1DVlZNeEVEQU9CZ05WQkFnVApCMEZ5YVhwdmJtRXhFekFSQmdOVkJBY1RDbE5qYjNSMGMyUmhiR1V
4SlRBakJnTlZCQW9USEZOMFlYSm1hV1ZzWkNCVVpXTm9ibTlzCmIyZHBaWE1zSUVsdVl5NHhPekE1QmdOVk
JBTVRNbE4wWVhKbWFXVnNaQ0JUWlhKMmFXTmxjeUJTYjI5MElFTmxjblJwWm1sallYUmwKSUVGMWRHaHZjb
WwwZVNBdElFY3lNQjRYRFRBNU1Ea3dNVEF3TURBd01Gb1hEVE0zTVRJek1USXpOVGsxT1Zvd2daZ3hDekFK
QmdOVgpCQVlUQWxWVE1SQXdEZ1lEVlFRSUV3ZEJjbWw2YjI1aE1STXdFUVlEVlFRSEV3cFRZMjkwZEhOa1l
XeGxNU1V3SXdZRFZRUUtFeHhUCmRHRnlabWxsYkdRZ1ZHVmphRzV2Ykc5bmFXVnpMQ0JKYm1NdU1Uc3dPUV
lEVlFRREV6SlRkR0Z5Wm1sbGJHUWdVMlZ5ZG1salpYTWcKVW05dmRDQkRaWEowYVdacFkyRjBaU0JCZFhSb
2IzSnBkSGtnTFNCSE1qQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQwpBUW9DZ2dFQkFOVU1P
c1FxK1U3aTliNFpsMStPaUZPeEh6L0x6NThnRTIwcE9zZ1BmVHozYTNZNFk5azJZS2liWGx3QWdMSXZXWC8
yCmgva2xRNGJuYVJ0U21wRGhjZVBZTFExT2IvYklTZG0yOHhwV3JpdTJkQlRyei9zbTR4cTZIWll1YWp0WW
xJbEhWdjhsb0pOd1U0UGEKaEhRVXcyZWVCR2c2MzQ1QVdoMUtUczlEa1R2blZ0WUFjTXRTN250OXJqcm52R
Eg1UmZiQ1lNOFRXUUlyZ013MFI5KzUzcEJsYlFMUApMSkdtcHVmZWhSaEpmR1pPb3pwdHFiWHVOQzY2RFFP
NE05OUg2N0ZyalNYWm04NkIwVVZHTXBad2g5NENEa2xEaGJac2M3dGs2bUZCCnJNblVWTitITDhjaXNpYk1
uMWxVYUovOHZpb3Z4RlVjZFVCZ0Y0VUNWVG1MZndVQ0F3RUFBYU5DTUVBd0R3WURWUjBUQVFIL0JBVXcKQX
dFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0hRWURWUjBPQkJZRUZKeGZBTitxQWRjd0t6aUlvcmh0U3B6e
UVaR0RNQTBHQ1NxRwpTSWIzRFFFQkN3VUFBNElCQVFCTE5xYUVkMm5kT3htZlp5TUlidzVoeWYyRTNGL1lO
b0hOMkJ0QkxaOWczY2NhYU5uUmJvYmhpQ1BQCkU5NUR6K0kwc3dTZEh5blZ2L2hleU5YQnZlNlNiekowOHB
HQ0w3MkNRbnF0S3JjZ2ZVMjhlbFVTd2hYcXZmZHFsUzVzZEovUEhMVHkKeFFHamhkQnlQcTF6cXd1YmRReH
RSYmVPbEt5V043V2cwSThWUnc3ajZJUGRqLzN2UVFGM3pDZXBZb1V6OGpjSTczSFBkd2JleUJrZAppRURQZ
lVZZC94N0g0YzcvSTl2RytvMVZUcWtDNTBjUlJqNzAvYjE3S1NhN3FXRmlOeWkyTFNyMkVJWmt5WENuMHEy
M0tYQjU2anphCll5V2YvV2kzTU94dyszV0t0MjFnWjdJZXlMbnAyS2h2QW90bkRVMG1WM0hhSVB6QlNsQ05
zU2k2Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkFmZmlybVRydXN0IENvbW1lcmNpYWwKPT09PT09PT
09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRFREQ0NBalNnQXdJQkFnS
UlkM2NHSnlhcHNYd3dEUVlKS29aSWh2Y05BUUVMQlFBd1JERUxNQWtHQTFVRUJoTUNWVk14RkRBUwpCZ05W
QkFvTUMwRm1abWx5YlZSeWRYTjBNUjh3SFFZRFZRUUREQlpCWm1acGNtMVVjblZ6ZENCRGIyMXRaWEpqYVd
Gc01CNFhEVEV3Ck1ERXlPVEUwTURZd05sb1hEVE13TVRJek1URTBNRFl3Tmxvd1JERUxNQWtHQTFVRUJoTU
NWVk14RkRBU0JnTlZCQW9NQzBGbVptbHkKYlZSeWRYTjBNUjh3SFFZRFZRUUREQlpCWm1acGNtMVVjblZ6Z
ENCRGIyMXRaWEpqYVdGc01JSUJJakFOQmdrcWhraUc5dzBCQVFFRgpBQU9DQVE4QU1JSUJDZ0tDQVFFQTlo
dFBad2Nyb1JYMUJpTExId0d5NDNORkJrUkpMTHRKSlJUV3pzTzNxeXhQeGtFeWxGZjZFcWRiCkR1S1BIeDZ
HR2FlcXRTMjVYdzJLd3ErRk5Ya3lMYnNjWWpmeXNWdEtQY3JOY1YvcFFyNlU2TWplK1NKSVpNYmxxOFlyYm
EwRjhQclYKQzgrYTVmQlFwSXM3UjZValczcDYrRE0vdU8rWmwrTWd3ZFlvaWMrVSs3bEY3ZU5BRnhIVWRQQ
UxNZUlySm1xYlRGZXVyQ0ErdWtWNgpCZk85bTJrVnJuMU9JR1BFTlhZNkJ3TEpOLzNIUis3bzhYWWRjeFh5
bDZTMXlIcDUyVUtxSzM5Yy9zNG1UNk5tZ1RXdlJMcFVIaHd3Ck1tV2Q1anlUWGxCT2V1TTYxRzdNR3Z2NTB
qZXVKQ3FyVndNaUtBMUpkWCszS05wMXY0N2ozQTU1TVFJREFRQUJvMEl3UURBZEJnTlYKSFE0RUZnUVVuWl
BHVTR0ZXlxOC9ueDRQNVptVnZDVDJsSTh3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZjhFQ
kFNQwpBUVl3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUZpczlBUU96Y0FOL3dyOTFMb1dYeW05ZTJpWldF
blN0QjAzVFg4bmZVWUdYVVBHCmhpNCtjN0ltZlUrVHFiYkVLcHFySVpjVXNkNk0wNnVKRmRockpOVHhGcTd
ZcEZ6VWYxR083UmdCc1pOanZiejRZWUNhbnJIT1FuRGkKcVgwR0pYMG5vZjV2N0xNZUpOcmpTMVVhQURzMX
REdloxMTB3L1lFVGlmTENCaXZ0WjhTT3lVT3lYR3NWaVFLOFl2eE84clV6cXJKdgowd3FpVU9QMk8rZ3VST
UxiWmppcE0xWkk4VzBiTTQwTmpEOWdONTNUeW0xK05INE5uM0oyaXh1ZmN2MVNOVUZGQXBZdkhMS2FjMGto
CnNVbEhSVWUwNzJvMEVjbE5tc3hadDlZQ25scE9aYldVcmh2ZktiQVc4YjhBbmdjNkYyUzFCTFVqSVprS2x
UdVhmTzg9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkFmZmlybVRydXN0IE5ldHdvcmtpbmcKPT09PT
09PT09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRFREQ0NBalNnQXdJQ
kFnSUlmRThFT1J6VW1TMHdEUVlKS29aSWh2Y05BUUVGQlFBd1JERUxNQWtHQTFVRUJoTUNWVk14RkRBUwpC
Z05WQkFvTUMwRm1abWx5YlZSeWRYTjBNUjh3SFFZRFZRUUREQlpCWm1acGNtMVVjblZ6ZENCT1pYUjNiM0p
yYVc1bk1CNFhEVEV3Ck1ERXlPVEUwTURneU5Gb1hEVE13TVRJek1URTBNRGd5TkZvd1JERUxNQWtHQTFVRU
JoTUNWVk14RkRBU0JnTlZCQW9NQzBGbVptbHkKYlZSeWRYTjBNUjh3SFFZRFZRUUREQlpCWm1acGNtMVVjb
lZ6ZENCT1pYUjNiM0pyYVc1bk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRgpBQU9DQVE4QU1JSUJDZ0tDQVFF
QXRJVE1NeGN1YTVSc2EyRlNvT3VqejNtVVRPV1VnSm5MVldSRVpZOW5aT0lHNDF3M1NmWXZtNFNFCkhpM3l
ZSjB3VHN5RWhlSXN6eDZlL2phck0zYzFSTmcxbGhvOU51aDZEdGpWUjZGcWFZdlovTHM2cm5sYTFmVFdjYn
Vha0NOcm1yZUkKZEljTUhsKzVuaTM2cTFNcjNMdDJQcE5NQ0FpTUhxSWpITlJxclNLNm1RRXViV1hMdmlSb
VZTUkxRRVN4RzlmaHdvWEEzaEEvUGUyNAovUEh4STFQY3YyV1hiOW41UUhHTmZiMlYxTTYrb0Y0bkk5Nzlw
dEFtRGdBcDZ6eEc4RDFndno5UTB0d21RVkdlRkRkQ0JLTndWNmdiCmgrMHQrbnZ1akFyanFXYUpHY3RCK2Q
xRU5tSFA0bmRHeUgzMjlKS0JOdjNiTlBGeWZ2TU1GcjIwRlFJREFRQUJvMEl3UURBZEJnTlYKSFE0RUZnUV
VCeC9TNTV6YXdtNmlRTFN3ZWxBUVVIVEV5TDB3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFPQmdOVkhROEJBZ
jhFQkFNQwpBUVl3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUlsWHNoWjZxTUw5MXRtYm16VENuTFF5RkUy
bnBOL3N2cWUrK0VQYmtUZk90REl1ClVGVWFOVTUyUTNFZzc1TjNUaFZ3TG9mRHdSMXQzTXUxSjlRc1Z0RlN
VenBFMG5QSXhCc0ZaVnBpa3B6dVFZMHgyK2MwNmxraDFRRjYKMTJTNFpEbk55ZTJ2N1VzRFNLZWdtUUdBM0
dXak5xNWxXVWhQZ2t2SVpmRlhIZVZaTGdvL2JOalI5ZVVKdEd4VUFBcmdGVTJIZFcyMwpXSlphM1czU0FLR
DBtMGkrd3pla3VqYmdmSWVGbHhvVm90NHVvbHU5cnhqNWtGRE5jRm40SjJkSHk4ZWdCenA5MFN4ZGJCazZa
clY5Ci9aRnZnckcrQ0pQYkZFZnhvamZIUlo0OHgzZXZaS2lUMy9acGc0Smc4a2xDTk8xYUFGU0ZIQlkya2d
4YytxYXR2OXM9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KCkFmZmlybVRydXN0IFByZW1pdW0KPT09PT
09PT09PT09PT09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRlJqQ0NBeTZnQXdJQkFnS
UliWXdVUnJHbUN1NHdEUVlKS29aSWh2Y05BUUVNQlFBd1FURUxNQWtHQTFVRUJoTUNWVk14RkRBUwpCZ05W
QkFvTUMwRm1abWx5YlZSeWRYTjBNUnd3R2dZRFZRUUREQk5CWm1acGNtMVVjblZ6ZENCUWNtVnRhWFZ0TUI
0WERURXdNREV5Ck9URTBNVEF6TmxvWERUUXdNVEl6TVRFME1UQXpObG93UVRFTE1Ba0dBMVVFQmhNQ1ZWTX
hGREFTQmdOVkJBb01DMEZtWm1seWJWUnkKZFhOME1Sd3dHZ1lEVlFRRERCTkJabVpwY20xVWNuVnpkQ0JRY
21WdGFYVnRNSUlDSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQWc4QQpNSUlDQ2dLQ0FnRUF4QkxmcVYvK1Fk
M2Q5WitLNC9hczRUeDRtcnpZOEg5Nm9ETXEzSTBnVzY0dGIrZVQyVFp3YW1qUGpsR2poVnRuCkJLQVFKRzl
kS0lMQmwxZllTQ2tUdHVHK2tVM2ZoUXhUR0pvZUpLSlBqL0NpaFF2TDlDbC8wcVJZN2laTnlhcW9lNXJaK2
pqZVJGY1YKNWZpTXlObEk0ZzBXSngwZXlJT0ZKYmU2cWxWQnpBTWlTeTJSall2bWlhOW14K24vSytrOHJOc
lNzOFBoYUp5SitIb0FWdDcwVlpWcworN3BrM1dLTDN3dDNNdXRpekNhYW03dXFZb05NdEFaNk1NZ3B2KzBH
VFplNUhNUXhLOVZmdkZNU0Y1eVpWeWxtZDJFaE1RY3VKVW1kCkdQTHU4eXR4akxXNk9RZEpkL3p2THBLUUJ
ZMHRMM2Q3NzBPL05idWEyUGx6cHl6eTBGZnVLRTRtWDQrUWFBa3Z1UGpjQnVrdW1qNVIKcDlFaXhBcW5PRW
hzcy9uL2ZhdUdWK082MW9WNGQ3cEQ2a2gvOXRpK0kyMGV2OUUyYkZoYzhlNmtHVlFhOVFQU2R1YmhqTDA4c
zlOSQpTK0xJK0grU3FIWkduRUpsUHFRZXdRY0RXa1l0dUpmenQ5V3lWU0h2dXR4TUFKZjdGSlVuTTcvb1Ew
ZEcwZ2laRm1BN21uN1M1dTA0CjZ1d0JIanhJVmtrSngwdzNBSjZJRHNCejRXOW02WEpITUQ0UTVRc0R5WnB
DQUd6RmxINWh4SXJmZjRJYUMxbkVXVEozczd4Z2FWWTUKL2JRR2V5eldaRGJadlVqdGhCOStwU0tQS3JoQz
lJSzMxRk9RZUU0dEd2MkJiMFRYT3dGMGxrTGdBT
0l1YStyRjduS3N1Ny8rNnFxbworTnoyc25tS3RtY0NBd0VBQWFOQ01FQXdIUVlEVlIwT0JCWUVGSjNBWjZZ
TUl0a205VVdycG1WU0VTZllSYXhqTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUUR
BZ0VHTUEwR0NTcUdTSWIzRFFFQkRBVUFBNElDQVFDelYwMFFZazQ2NUt6cXVCeXYKTWlQSXMwbGFVWngyS0
kxNXFsZEdGOVgxVXZhM1JPZ0lSTDhZaE5JTGdNM0ZFdjBBVlFWaGgwSGN0U1NlUE1UWXlQdHduaTk0bG9NZ
wpOdDU4RDJrVGlLVjFOcGdJcHNiZnJNN2pXTmEzUHQ2NjgrczBRTmlpZ2ZWNFB5L1ZwZnpab3RSZUJBNFhy
ZjVCOE9XeWN2cEVnak5DCjZDMVk5MWFNWWorNlFyQ2NERngrTG1VbVhGTlBBTEo0ZnFFTm1TMk51QjJPb3N
Tdy9XRFFNS1NPeUFSaXFjVHROZDU2bCswT09GNlMKTDVOd3BhbWNiNmQ5RXgxK3hnaElzVjVuNjFFSUplbm
1KV3RTS1pHYzBqbHpDRmZlbVFhMFc1MFFCdUhDQUtpNEhFb0NDaFRRd1VISworNHcxSVgyQ09QS3BWSkVaT
lpPVWJXbzZ4YkxRdTRtR2sraWJ5UTg2cDNxNG9mQjRSdnI4TnkvbGlvVHozLzRFMmFGb29DOGs0Z21WCkJ0
V1Z5dUVrbHV0ODlwTUZ1KzF6NlMzUmRUblg1eVRiMkU1ZlE0K2UwQlE1djFWd1NKbFhNYlNjN2txWUE1WXd
IMkFHN2hzai9vRmcKSXhwSFlvV2x6QmswZ0crenJCcmpuL0I3U0szVkFkbG50cWx5aytvdFpyV3l1T1E5UE
xMdlRJenE2d2UvcXpXYVZZYThHS2ExcUY2MApnMnhyYVVEVG45enh3MmxydWVGdENmVHhxbEIyQ25wOWVoZ
WhWWlpDbVRFSjNXQVJqUVV3ZnVhT1J0R2RGTnJIRitRRmxvekVKTFViCnp4UUhza0Q0bzU1Qmhyd0UwR3VX
eUNxQU5QMi83d2FqM1ZqRmhUMCtqLzZlS2VDMnVBbG9HUndZUXc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0
tLS0tCgpBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQwo9PT09PT09PT09PT09PT09PT09PT09PQotLS0tLUJFR0
lOIENFUlRJRklDQVRFLS0tLS0KTUlJQi9qQ0NBWVdnQXdJQkFnSUlkSmNsaXNjL2VsUXdDZ1lJS29aSXpqM
EVBd013UlRFTE1Ba0dBMVVFQmhNQ1ZWTXhGREFTQmdOVgpCQW9NQzBGbVptbHliVlJ5ZFhOME1TQXdIZ1lE
VlFRRERCZEJabVpwY20xVWNuVnpkQ0JRY21WdGFYVnRJRVZEUXpBZUZ3MHhNREF4Ck1qa3hOREl3TWpSYUZ
3MDBNREV5TXpFeE5ESXdNalJhTUVVeEN6QUpCZ05WQkFZVEFsVlRNUlF3RWdZRFZRUUtEQXRCWm1acGNtMV
UKY25WemRERWdNQjRHQTFVRUF3d1hRV1ptYVhKdFZISjFjM1FnVUhKbGJXbDFiU0JGUTBNd2RqQVFCZ2Nxa
GtqT1BRSUJCZ1VyZ1FRQQpJZ05pQUFRTk1GNGJGWjBEMEtGNU5iYzZQSko2eWhVY3pXTHpuQ1pjQnozbFZQ
cWoxc3dTNnZRVVgraU9HYXN2TGtqbXJCaERlS3pRCk44TzlzczBzNWtmaUd1Wmp1RDB1TDNqRVQ5djBENlJ
vVEZWeWE1VWRUaGhDbFhqTU56eVI0cHRsS3ltalFqQkFNQjBHQTFVZERnUVcKQkJTYXJ5bDZ3QkUxTlNaUk
1BRERhdjVBMWE3V1BEQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBSwpCZ
2dxaGtqT1BRUURBd05uQURCa0FqQVhDZk9IaUZCYXI4akFRcjlIWC9Wc2FvYmd4Q2QwNURoVDF3Vi9HelRq
eGkrenlnazhONTNYCjU3aEc4ZjJoNG5FQ01FSlpoMFBVVWQrNjB3a3lXczZJZmxjOW5GOUNhL1VITGJYd2d
wUDVXVyt1WlBwWTVZc2U0Mk8rdFlITmJ3S00KZVE9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpDZX
J0dW0gVHJ1c3RlZCBOZXR3b3JrIENBCj09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDR
VJUSUZJQ0FURS0tLS0tCk1JSUR1ekNDQXFPZ0F3SUJBZ0lEQkVUQU1BMEdDU3FHU0liM0RRRUJCUVVBTUg0
eEN6QUpCZ05WQkFZVEFsQk1NU0l3SUFZRFZRUUsKRXhsVmJtbDZaWFJ2SUZSbFkyaHViMnh2WjJsbGN5QlR
Ma0V1TVNjd0pRWURWUVFMRXg1RFpYSjBkVzBnUTJWeWRHbG1hV05oZEdsdgpiaUJCZFhSb2IzSnBkSGt4SW
pBZ0JnTlZCQU1UR1VObGNuUjFiU0JVY25WemRHVmtJRTVsZEhkdmNtc2dRMEV3SGhjTk1EZ3hNREl5Ck1US
XdOek0zV2hjTk1qa3hNak14TVRJd056TTNXakIrTVFzd0NRWURWUVFHRXdKUVRERWlNQ0FHQTFVRUNoTVpW
VzVwZW1WMGJ5QlUKWldOb2JtOXNiMmRwWlhNZ1V5NUJMakVuTUNVR0ExVUVDeE1lUTJWeWRIVnRJRU5sY25
ScFptbGpZWFJwYjI0Z1FYVjBhRzl5YVhSNQpNU0l3SUFZRFZRUURFeGxEWlhKMGRXMGdWSEoxYzNSbFpDQk
9aWFIzYjNKcklFTkJNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DCkFROEFNSUlCQ2dLQ0FRRUE0L3Q5b
zNLNnd2REpGSWYxYXdGTzRXNUFCN3B0SjExLzkxc3RzMXJIVVYrcnBES21ZWWUyYmcrRzBqQUMKbC9qWGFW
ZWhHRGxkYW1SNXhnRlpyRHd4U2poODBnVFNTeWpvSUY4N0I2TE1UWFBiODY1UHgxYlZXcWVXaWZyenEyalV
JNFpaSjg4SgpKN3lzYm5LREhEQnkzK0NpNmRMaGRIVVp2U3FlZXhWVUJCdlhRem10VlNqRjRocTc5TURrcm
poSk04eDJoWjg1UmRLa252SVNqRkg0CmZPUXRmL1dzWCtzV243RXQwYnJNa1VKM1RDWEprRGh2Mi9ETSs0N
GVsMWsrMVdCTzVnVW83VWw1RTB1NlNOc3YrWExUT2NyK0g5ZzAKY3ZXMFFNOHhBY1BzM2hFdEYxMGZ1RkRS
WGhtbmFkNEhNeWpLVUpYNXAxVExWSVpRUmFuNVNRSURBUUFCbzBJd1FEQVBCZ05WSFJNQgpBZjhFQlRBREF
RSC9NQjBHQTFVZERnUVdCQlFJZHMzTEIvOGs5c1hON2J1UXZPS0VOMFoxOXpBT0JnTlZIUThCQWY4RUJBTU
NBUVl3CkRRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFLYW9yU0xPQVQybW8vOWkwRWlkaTE1eXNIaEU0OXdjc
nduOUkwajZ2U3JFdVZVRXRSQ2oKalNmZUM0SmowTzdlRERkNVFWc2lzckNhUVZ5bWNPRFUwSGZMSTlNQTRH
eFdMK0ZwRFEzWnFyOGhnVkRaQnFXby81VTMwS3IrNHJQMQptUzFGaElybFFnblhkQUl2OTRuWW1lbThKOVJ
IamJvTlJoeDN6eFNrSExta01jU2NLSFFETlA4ekdTYWw2UTEwdHo2WHhuYm9KNWFqClp0M2hydkpCVzhxWV
ZvTnpjT1NHR3RJeFFib3Z2aTBUV25adlR1aE9nUTQvV3dNaW9CSytabGdSU3NzRHhMUXFLaTJXRitBNVZMe
EkKMDNZbm5ab3RCcWJKN0RuU3E5dWZtZ3NuQWpVcHNVQ1Y1L25vbkZXSUdVYld0elQxZnM0NW10azQ4Vkgz
VHl3PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpDZXJ0aW5vbWlzIC0gQXV0b3JpdMODwqkgUmFjaW5
lCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSU
lGbkRDQ0E0U2dBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCak1Rc3dDUVlEVlFRR0V3SkdVakVUT
UJFR0ExVUVDaE1LClEyVnlkR2x1YjIxcGN6RVhNQlVHQTFVRUN4TU9NREF3TWlBME16TTVPVGc1TURNeEpq
QWtCZ05WQkFNTUhVTmxjblJwYm05dGFYTWcKTFNCQmRYUnZjbWwwdzZrZ1VtRmphVzVsTUI0WERUQTRNRGt
4TnpBNE1qZzFPVm9YRFRJNE1Ea3hOekE0TWpnMU9Wb3dZekVMTUFrRwpBMVVFQmhNQ1JsSXhFekFSQmdOVk
JBb1RDa05sY25ScGJtOXRhWE14RnpBVkJnTlZCQXNURGpBd01ESWdORE16T1RrNE9UQXpNU1l3CkpBWURWU
VFEREIxRFpYSjBhVzV2YldseklDMGdRWFYwYjNKcGRNT3BJRkpoWTJsdVpUQ0NBaUl3RFFZSktvWklodmNO
QVFFQkJRQUQKZ2dJUEFEQ0NBZ29DZ2dJQkFKMkZuNGJUNDYvSHNtdHVNK0NldDBJMFZaMzVnYjVqMkNOMkR
wZFV6WmxNR3ZFNXg0allGMUFNbm1IYQp3RTVWM3VkYXVIcE9kNGNONWJqcitwNWVleDdFenloMHg1UDFGTV
lpS0FUNWtjT3JKM05xRGk1Tjh5NG9IM0RmVlM5TzdjZHhid2x5Ckx1M1ZNcGZROFZoMzBXQzhUbDdibW9UM
lIyRkZLL1pRcG45cWNTZEloRFdlclA1cHFaNTZYalVsK3JTblNUVjNscWMyVytITjN5TncKMkYxTXBRaUQ4
YVlrT0JPbzdDK29vV2ZIcGkyR1IrNksvT3liRG5UMEswa0NlNUIxalB5Wk9RRTUxa3FKNVo1MnF6NldLRGd
taTkyTgpqTUQyQVI1dnBURVNPSDJWd25IdTdYU3U1RGFpUTNYVjhRQ2I0dVRYekVJRFMzaDY1WDI3dUs0dU
lKUFQ1R0hmY2VGMlo1Yy90dDlxCmMxcGtJdVZDMjgrQkE1UFk5T01RNEhMMkFIQ3M4TUY2RHdWL3p6UnBSY
ldUNUJuYlVoWWpCWWtPalVqa0pXK3plTDlpOVFmNmxTVEMKbHJMb295UENYUVA4dzlQbGZNbDFJOWYwOWJ6
ZTVOL05nTCtSaUgybkU3UTV1aXk2dmRGcnpQT2xLTzFFbm4xU28yK1dMaGwrSFBOYgp4eGFPdTJCOWQyWkh
WSUlBRVdCc01zR29PQnZyYnBnVDF1NDQ5ZkNmRHUvK01ZSEIwaVNWTDFONmFhTHdENFpGamxpQ0swd2kxRj
ZnCjUzMG1KMGpmSlVhTlNpaDhocDc1bXhwWnVXVy9CZDIyUWwwOTVnQklnbDRnOXhHQzNzclluK1kzUnlZZ
TYzajNZY05CWkZnQ1FmbmEKNE5INCtlajlVamkyOVluZkFnTUJBQUdqV3pCWk1BOEdBMVVkRXdFQi93UUZN
QU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0VHTUIwRwpBMVVkRGdRV0JCUU5qTFpoMmtTNDBSUjl3NzU5WGt
qd3pzcHFzREFYQmdOVkhTQUVFREFPTUF3R0NpcUJlZ0ZXQWdJQUFRRXdEUVlKCktvWklodmNOQVFFRkJRQU
RnZ0lCQUNRK1lBWitIZTg2UHR2cXJ4eWFMQUVMOU1XMTJVa3g5RjFCallrTVR2OXNvdjMvNGdiSU9aL3gKV
3FuZElsZ1ZxSXJUc2VZeUNZSURiTmMvQ01mNHVib0FiYm5XL0ZJeVhhUi9wREdVdTdaTU9IOG9NRFgvbnlO
VHQ3YnVGSEFBUUN2YQpSNnMwZmw2blZqQmhLNHREclAyMmlDajFhN1krWUVxNlFwQTBaNDNxNjE5RlZEc1h
ySXZreG1VUDd0Q01YV1k1empLbjJCQ1h3SDQwCm5KK1U4L2FHSDg4YmM2MlVlWWRvY01NenBYRG4yTlU0bE
c5amVldS9DZzRJNThVdkQwS2dLeFJBL3lIZ0JjVW40WVFSRTdyV2hoMUIKQ3hNamlkUEpDK2lLdW5xam8zT
TNOWUI5RXJnemQwQTR3UHBlTU5MeXRxT3gxcUtWbDRHYlV1MXBUUCtBNUZQYlZGc0RiVlJmc2JqdgpKTDF2
bnhIRHgyVENEeWhpaFdaZUdudXl0Kyt1TmNrWk02aTRKOXN6VmI5bzRYVklSRmI3emROSXUwZUpPcXhwOVl
ERzVFUlFMMVRFCnFrUEZNVEZZdlpiRjZuVnNtbld4VGZqM2wvK1dGdktYVGVqMjh4SDVPbjJLT0c0RXkrSF
RSUldxcGRFZG5WMWo2Q1RtTmhUaWg2MGIKV2ZWRW0vdlhkM3dmQVhCaW9TQWFvc1VhS1BRaEErNHUyY0dBN
nJuWmd0WmJkc0xMTzdYU0FQQ2pEdUd0YmtEMzI2QzAwRWF1RmRkRQp3azAxK2RJTDhoZjJyR2JWSkxKUDBS
eVp3RzcxZmV0MEJMajVUWGNKMTdUUEJ6QUo4YmdBVnRrWEZoWUtLNGJmandFWkd1VzdnbVAvCnZndDJGbDQ
zTitiWWRKZWltVVY1Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KClJvb3QgQ0EgR2VuZXJhbGl0YXQgVm
FsZW5jaWFuYQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FUR
S0tLS0tCk1JSUdpekNDQlhPZ0F3SUJBZ0lFTzBYbGFEQU5CZ2txaGtpRzl3MEJBUVVGQURCb01Rc3dDUVlE
VlFRR0V3SkZVekVmTUIwR0ExVUUKQ2hNV1IyVnVaWEpoYkdsMFlYUWdWbUZzWlc1amFXRnVZVEVQTUEwR0E
xVUVDeE1HVUV0SlIxWkJNU2N3SlFZRFZRUURFeDVTYjI5MApJRU5CSUVkbGJtVnlZV3hwZEdGMElGWmhiR1
Z1WTJsaGJtRXdIaGNOTURFd056QTJNVFl5TWpRM1doY05NakV3TnpBeE1UVXlNalEzCldqQm9NUXN3Q1FZR
FZRUUdFd0pGVXpFZk1CMEdBMVVFQ2hNV1IyVnVaWEpoYkdsMFlYUWdWbUZzWlc1amFXRnVZVEVQTUEwR0Ex
VUUKQ3hNR1VFdEpSMVpCTVNjd0pRWURWUVFERXg1U2IyOTBJRU5CSUVkbGJtVnlZV3hwZEdGMElGWmhiR1Z
1WTJsaGJtRXdnZ0VpTUEwRwpDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRREdLcXRYRVRjdk
lvcktBM1FkeXUwdG9ndThNMUpBSmtlK1dtbW1PM0kyCkYwem8zN2k3TDNiaFFFWjBaUUtRVWdpMC82aU13Z
URIaVZZUU9UUHZhTFJmWDlwdEk2R0pYaUtqU2did0ovQlh1ZmpwVGpKM0NqOUIKWlBQclplNTIvbFNxZlIw
Z3J2UFhkTUlLWC9VSUtGSUl6RlZkMGcvYm1vR2x1Nkd6d1pUTlZPQXlkVEdSR21LeTNuWGl6MCtKMlpHUQp
EMEVidEZwS2Q3MW5nK0NUNTE2bkRPZUIwL1JTckZPeUE4ZEVKdnQ1NWNzMFlGQVFleHZiYTlkSHExOThhTX
B1blVFREVPNXJtWHRlCkphakNxK1RBODF5YzQ3N09NVXhrSGw2QW92V0RmZ3pXeW94VmpyN2d2a2tIRDZNa
1FYcFlIWVRxV0JMSTRiZnQ3NVBlbEFneEFnTUIKQUFHamdnTTdNSUlETnpBeUJnZ3JCZ0VGQlFjQkFRUW1N
Q1F3SWdZSUt3WUJCUVVITUFHR0ZtaDBkSEE2THk5dlkzTndMbkJyYVM1bgpkbUV1WlhNd0VnWURWUjBUQVF
IL0JBZ3dCZ0VCL3dJQkFqQ0NBalFHQTFVZElBU0NBaXN3Z2dJbk1JSUNJd1lLS3dZQkJBRy9WUUlCCkFEQ0
NBaE13Z2dIb0JnZ3JCZ0VGQlFjQ0FqQ0NBZG9lZ2dIV0FFRUFkUUIwQUc4QWNnQnBBR1FBWVFCa0FDQUFaQ
UJsQUNBQVF3QmwKQUhJQWRBQnBBR1lBYVFCakFHRUFZd0JwQVBNQWJnQWdBRklBWVFEdEFIb0FJQUJrQUdV
QUlBQnNBR0VBSUFCSEFHVUFiZ0JsQUhJQQpZUUJzQUdrQWRBQmhBSFFBSUFCV0FHRUFiQUJsQUc0QVl3QnB
BR0VBYmdCaEFDNEFEUUFLQUV3QVlRQWdBRVFBWlFCakFHd0FZUUJ5CkFHRUFZd0JwQVBNQWJnQWdBR1FBWl
FBZ0FGQUFjZ0RoQUdNQWRBQnBBR01BWVFCekFDQUFaQUJsQUNBQVF3QmxBSElBZEFCcEFHWUEKYVFCakFHR
UFZd0JwQVBNQWJnQWdBSEVBZFFCbEFDQUFjZ0JwQUdjQVpRQWdBR1VBYkFBZ0FHWUFkUUJ1QUdNQWFRQnZB
RzRBWVFCdApBR2tBWlFCdUFIUUFid0FnQUdRQVpRQWdBR3dBWVFBZ0FIQUFjZ0JsQUhNQVpRQnVBSFFBWlF
BZ0FFRUFkUUIwQUc4QWNnQnBBR1FBCllRQmtBQ0FBWkFCbEFDQUFRd0JsQUhJQWRBQnBBR1lBYVFCakFHRU
FZd0JwQVBNQWJnQWdBSE1BWlFBZ0FHVUFiZ0JqQUhVQVpRQnUKQUhRQWNnQmhBQ0FBWlFCdUFDQUFiQUJoQ
UNBQVpBQnBBSElBWlFCakFHTUFhUUR6QUc0QUlBQjNBR1VBWWdBZ0FHZ0FkQUIwQUhBQQpPZ0F2QUM4QWR3
QjNBSGNBTGdCd0FHc0FhUUF1QUdjQWRnQmhBQzRBWlFCekFDOEFZd0J3QUhNd0pRWUlLd1lCQlFVSEFnRVd
HV2gwCmRIQTZMeTkzZDNjdWNHdHBMbWQyWVM1bGN5OWpjSE13SFFZRFZSME9CQllFRkhzMTAwRFNISGdaWn
U5MEVDamNQayt5ZUFUOE1JR1YKQmdOVkhTTUVnWTB3Z1lxQUZIczEwMERTSEhnWlp1OTBFQ2pjUGsreWVBV
DhvV3lrYWpCb01Rc3dDUVlEVlFRR0V3SkZVekVmTUIwRwpBMVVFQ2hNV1IyVnVaWEpoYkdsMFlYUWdWbUZz
Wlc1amFXRnVZVEVQTUEwR0ExVUVDeE1HVUV0SlIxWkJNU2N3SlFZRFZRUURFeDVTCmIyOTBJRU5CSUVkbGJ
tVnlZV3hwZEdGMElGWmhiR1Z1WTJsaGJtR0NCRHRGNVdnd0RRWUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFDUm
gKVHZXMXlFSUNLck5jZGEzRmJjcm5sRCtsYUpXSXdWVEFFR21pRWk4WVB5VlFxSHhLNnNZSjJmUjF4a0Rhc
jFDZFBhVVd1MjB4eHNkegpDa2orSUhMdGI4em9nMkVXUnBBQmxVdDlqcHBTQ1MvMmJ4emtvWEhQakNwYUYz
T0RSMDBQTnZzRVRVbFI0aFRKWkdINzFCVGc5SjYzCk5JOEtKcjJYWFBSNU9rb3dHY3l0VDZDWWlyUXhseXJ
pYzIxK2VMajRpSWxQc1NLUlpFdjFVTjREMitYRmR1Y1RablYrWmZzQm41T0gKaUozNVJsZDhUV0N2bUhNVE
k2UWdrWUg2MEdGbXVIM1JyOVp2SG13OTZSSDlxZm1DSW9hWk0zRmE2aGxYUFpITnFjQ2piZ2NUcHNudAorR
2lqbnNOYWNnbUhLTkhFYzhSekdGOVFkUll4bjdm
b2ZNTT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKQS1UcnVzdC1uUXVhbC0wMwo9PT09PT09PT09PT0
9PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEenpDQ0FyZWdBd0lCQWdJREFXd2VNQTBHQ1
NxR1NJYjNEUUVCQlFVQU1JR05NUXN3Q1FZRFZRUUdFd0pCVkRGSU1FWUdBMVVFCkNndy9RUzFVY25WemRDQ
khaWE11SUdZdUlGTnBZMmhsY21obGFYUnpjM2x6ZEdWdFpTQnBiU0JsYkdWcmRISXVJRVJoZEdWdWRtVnkK
YTJWb2NpQkhiV0pJTVJrd0Z3WURWUVFMREJCQkxWUnlkWE4wTFc1UmRXRnNMVEF6TVJrd0Z3WURWUVFEREJ
CQkxWUnlkWE4wTFc1UgpkV0ZzTFRBek1CNFhEVEExTURneE56SXlNREF3TUZvWERURTFNRGd4TnpJeU1EQX
dNRm93Z1kweEN6QUpCZ05WQkFZVEFrRlVNVWd3ClJnWURWUVFLREQ5QkxWUnlkWE4wSUVkbGN5NGdaaTRnV
TJsamFHVnlhR1ZwZEhOemVYTjBaVzFsSUdsdElHVnNaV3QwY2k0Z1JHRjAKWlc1MlpYSnJaV2h5SUVkdFlr
Z3hHVEFYQmdOVkJBc01FRUV0VkhKMWMzUXRibEYxWVd3dE1ETXhHVEFYQmdOVkJBTU1FRUV0VkhKMQpjM1F
0YmxGMVlXd3RNRE13Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3RQV0Z1QS
9PUU84QkJDNFNBCnpld3FvNTFydTI3Q1FvVDNVUlRob0tndFVhTlI4dDRqOERSRS81VHJ6QVVqbFVDNUIza
WxKZllLdlVXRzZObTl3QVNPaFVSaDczK24KeWZyQkpjeUZMR00vQldCelNRWGdZSGlWRUV2YytSRlp6bkYv
UUp1S3FpVGZDMExpMjFhOFN0S2xESnUzUXo3ZGc5TW1FQUxQNmlQRQpTVTdsMCttMGlLc01ybUtTMUdXSDJ
Xclg5SVdmNURNaUphWGx5RE82dzhkQjNGL0dhc3dBRG0weXFMYUhOZ0JpZDVzZUh6VExrRHg0CmlIUUY2M2
4xazNGbHlwM0hheGd0UFZ4TzU5WDRQekY5ajRmc0NpSXZJK24rdTMzSjRQVHM2M3pFc01NdFlyV2FjZGF4Y
XVqczJlM1YKY3V5K1Z3SE9CVldmM3RGZ2lCQ3pBZ01CQUFHak5qQTBNQThHQTFVZEV3RUIvd1FGTUFNQkFm
OHdFUVlEVlIwT0JBb0VDRVJxbFdkVgplUkZQTUE0R0ExVWREd0VCL3dRRUF3SUJCakFOQmdrcWhraUc5dzB
CQVFVRkFBT0NBUUVBVmRSVTBWbElYTE9UaGFxL1l5L2tnTTQwCm96UmlQdmJZN21lSU1RUURid3ZVQi90T2
RRL1RMdFBBRjhmR0tPd0dEUkVrRGc2bFhiK01zaE9XY2R6VXpnNE5DbWd5YkxsQk1SbXIKc1FkN1RaalRYT
ERSOEtkQ29MWEVqcS8rOFQvMDcwOUdBSGJyQXZ2NW5kSkFsc2VJT3JpZkVYbnpnR1dvdlIvVGVJR2dVVXcz
dEtaZApKWERSWnNsbytTNFJGR2p4VkpnSXJDYVNEOTZKbnRUNnMza3IwcU41MU95THJJZFRhRUpNVVZGMEh
oc25MdVAxSHlsMFRlMnY5K0dTCm1ZSG92anJIRjFEMnQ4YjhtN0NLYTlhSUE1R1BCbmM2aFFMZG1OVkRlRC
9HTUJXc20ydkxWN2VKVVlzNjZNbUVETnV4VUNBS0drcTYKYWhxOTdCdkl4WVNhelE9PQotLS0tLUVORCBDR
VJUSUZJQ0FURS0tLS0tCgpUV0NBIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpNSUlEZXpDQ0FtT2d
Bd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCZk1Rc3dDUVlEVlFRR0V3SlVWekVTTUJBR0ExVUVDZ3
dKClZFRkpWMEZPTFVOQk1SQXdEZ1lEVlFRTERBZFNiMjkwSUVOQk1Tb3dLQVlEVlFRRERDRlVWME5CSUZKd
mIzUWdRMlZ5ZEdsbWFXTmgKZEdsdmJpQkJkWFJvYjNKcGRIa3dIaGNOTURnd09ESTRNRGN5TkRNeldoY05N
ekF4TWpNeE1UVTFPVFU1V2pCZk1Rc3dDUVlEVlFRRwpFd0pVVnpFU01CQUdBMVVFQ2d3SlZFRkpWMEZPTFV
OQk1SQXdEZ1lEVlFRTERBZFNiMjkwSUVOQk1Tb3dLQVlEVlFRRERDRlVWME5CCklGSnZiM1FnUTJWeWRHbG
1hV05oZEdsdmJpQkJkWFJvYjNKcGRIa3dnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCRHdBd2dnRUsKQ
W9JQkFRQ3dmbks0cEFPVTVxZmVDVGlSU2hGQWg2ZDhXV1FVZTdVUkVOMyt2OVhBdTFiaWhTWDBOWElQK0ZQ
UVFlRkVBY0swSE1NeApRaFpIaFRNaWRySUtidy9sSlZCUGhZYSt2NWd1RUdjZXZoRUZoZ1dReEZuUWZIZ1F
zSUJjdCtISEszWExmSit1dGRHZEl6ZGpwOXhDCm9pMlNCQnRRd1h1NFBodkpWZ1NMTDFLYnJhbFc2Y0gvcm
FsWWh6QzJnZmVYUmZ3WlZ6c3JiK1JIOUpsRi9oM3grSmVqaUIwM0hGeVAKNEhZbG1sRDRvRlQvUkpCMkk5S
Xl4c09yQnIvOCs3L3pyWDJTWWdKYktkTTFvNU9hUTJSZ1hiTDZNdjg3Qks5TlFHcjV4K1B2SS8xcgp5K1VQ
aXpnTjdncjgvZytZbnpBeDNXeFNaZm1MZ2I0aTRSeFlBN3FSRzRrSEFnTUJBQUdqUWpCQU1BNEdBMVVkRHd
FQi93UUVBd0lCCkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUnFPRnNtamQ2TFd2Sl
BlbFNER1JqakNEV211akFOQmdrcWhraUcKOXcwQkFRVUZBQU9DQVFFQVBOVjNQZHJmaWJxSERBaFVhaUJRa
3I2d1FUMjVKbVNEQ2kvb1FNQ1hLQ2VDTUVySmsvOXE1NllBZjRsQwptdFlSNVZQT0w4enkyZ1hFL3VKUXhE
cUdmY3phZmhBSk81STFLbE95L3VzckJkbHNYZWJRNzlOcVpwNFZLSVY2NklJQXJCNm5DV2xXClF0Tm9VUmk
rVkpxL1JFRzZTYjRndW1sYzdyaDN6YzVzSDYyRGxoaDlEclVVT1lUeEtPa3RvNTU3SG5weVdvT3plVy92dF
B6UUNxVlkKVDBiZisyMTVXZktFSWxLdUQ4ejdmRHZuYXNwSFljTjYrTk9TQkIrNElJVGhObFFXeDBEZU80c
HozTi9HQ1V6ZjdOci8xRk5Db2NueQpZaDBpZ3p5WHhma1pZaWVzWlNMWDB6ekc1WTZ5VTh4Snpyd3cvbnNP
TTVENzdkSVVrUjhIcnc9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpTZWN1cml0eSBDb21tdW5pY2F
0aW9uIFJvb3RDQTIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0tQkVHSU4gQ0VSVElGSU
NBVEUtLS0tLQpNSUlEZHpDQ0FsK2dBd0lCQWdJQkFEQU5CZ2txaGtpRzl3MEJBUXNGQURCZE1Rc3dDUVlEV
lFRR0V3SktVREVsTUNNR0ExVUVDaE1jClUwVkRUMDBnVkhKMWMzUWdVM2x6ZEdWdGN5QkRUeTRzVEZSRUxq
RW5NQ1VHQTFVRUN4TWVVMlZqZFhKcGRIa2dRMjl0YlhWdWFXTmgKZEdsdmJpQlNiMjkwUTBFeU1CNFhEVEE
1TURVeU9UQTFNREF6T1ZvWERUSTVNRFV5T1RBMU1EQXpPVm93WFRFTE1Ba0dBMVVFQmhNQwpTbEF4SlRBak
JnTlZCQW9USEZORlEwOU5JRlJ5ZFhOMElGTjVjM1JsYlhNZ1EwOHVMRXhVUkM0eEp6QWxCZ05WQkFzVEhsT
mxZM1Z5CmFYUjVJRU52YlcxMWJtbGpZWFJwYjI0Z1VtOXZkRU5CTWpDQ0FTSXdEUVlKS29aSWh2Y05BUUVC
QlFBRGdnRVBBRENDQVFvQ2dnRUIKQU5BVk9WS3hVck82eFZtQ3hGMVNyanBEWllCTHgvS1d2TnMybDlhbVp
JeW9YdkRqQ2h6MzM1YzlTNjcyWGV3aHRVR3J6YmwrZHArKworVDQyTktBN3dmWXhFVVYwa3oxWGdNWDVpWm
5LNWF0cTFMWGFRWkFRd2RiV1FvbkN2L1E0RXBWTVZBWDNOdVJGZzNzVVpkYmNERTNSCjNuNE1xenZFRmI0N
lZxWmFiM1pwVXFsNnVjanJhcHBkVXRBdENtczFGZ2tRaE5CcXlqb0dBRGRINUg1WFR6K0w2MmU0aUtyRnZs
TlYKc3BIRWZibXdoUmtHZUM3YllScjZoZlZLa2FIbkZ0V09vam5mbExod0h5Zy9pL3hBWG1PRFBJTXFHcGx
yejk1WmFqdjhieGJYSC8xSwpFT3RPZ2hZNnJDY01VL0d0MVNTd2F3TlF3UzA4RnQxRU5DY2FkZnNDQXdFQU
FhTkNNRUF3SFFZRFZSME9CQllFRkFxRnFYZGxCWmg4ClFJSDRENWNzT1BFSzdEelBNQTRHQTFVZER3RUIvd
1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUIKQ3dVQUE0SUJBUUJNT3FO
RXJMbEZzY2VUZnNnTENrTGZaT29jN2xsc0NMcUpYMnJLU3BXZWVvOEh4ZHBGY29KeERqclN6RytudEtFagp
1L1lrbjhzWC9veW16c0xTMjh5Ti9ISDhBeW5CYkYwelgyUzJaVHVKYnhoMmVQWGNva2dmR1QrT2srdngraG
Z1elU3akJCSlYxdVhrCjNmcytCWHppSFY3R3A3eVhUMmc2OWVrdUNrTzJyMWRjWW1oOHQvMmppb1NnckdLK
0t3bUhOUEJxQWJ1YktWWTgvZ0EzenlOczhVNnEKdG5SR0VteVI3alRWN0pxUjUwUytrREZ5MVVrQzlnTGw5
Qi9yZk5tV1Zhbi83SXI1bVVmL05Wb0NxZ1RMaWx1SGNTbVJ2YVMwZWcyOQptdlZYSXdBSElSYy9Tam5SQlV
rTHA3WTNnYVZkaktvelhvRW9mS2Q5SitzQXJvMDMKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQoKRUMtQU
NDCj09PT09PQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRlZqQ0NCRDZnQXdJQkFnSVE3aXM5N
jlRaDNoU29ZcXdFODkzRUFUQU5CZ2txaGtpRzl3MEJBUVVGQURDQjh6RUxNQWtHQTFVRQpCaE1DUlZNeE96
QTVCZ05WQkFvVE1rRm5aVzVqYVdFZ1EyRjBZV3hoYm1FZ1pHVWdRMlZ5ZEdsbWFXTmhZMmx2SUNoT1NVWWd
VUzB3Ck9EQXhNVGMyTFVrcE1TZ3dKZ1lEVlFRTEV4OVRaWEoyWldseklGQjFZbXhwWTNNZ1pHVWdRMlZ5ZE
dsbWFXTmhZMmx2TVRVd013WUQKVlFRTEV5eFdaV2RsZFNCb2RIUndjem92TDNkM2R5NWpZWFJqWlhKMExtN
WxkQzkyWlhKaGNuSmxiQ0FvWXlrd016RTFNRE1HQTFVRQpDeE1zU21WeVlYSnhkV2xoSUVWdWRHbDBZWFJ6
SUdSbElFTmxjblJwWm1sallXTnBieUJEWVhSaGJHRnVaWE14RHpBTkJnTlZCQU1UCkJrVkRMVUZEUXpBZUZ
3MHdNekF4TURjeU16QXdNREJhRncwek1UQXhNRGN5TWpVNU5UbGFNSUh6TVFzd0NRWURWUVFHRXdKRlV6RT
cKTURrR0ExVUVDaE15UVdkbGJtTnBZU0JEWVhSaGJHRnVZU0JrWlNCRFpYSjBhV1pwWTJGamFXOGdLRTVKU
mlCUkxUQTRNREV4TnpZdApTU2t4S0RBbUJnTlZCQXNUSDFObGNuWmxhWE1nVUhWaWJHbGpjeUJrWlNCRFpY
SjBhV1pwWTJGamFXOHhOVEF6QmdOVkJBc1RMRlpsCloyVjFJR2gwZEhCek9pOHZkM2QzTG1OaGRHTmxjblF
1Ym1WMEwzWmxjbUZ5Y21Wc0lDaGpLVEF6TVRVd013WURWUVFMRXl4S1pYSmgKY25GMWFXRWdSVzUwYVhSaG
RITWdaR1VnUTJWeWRHbG1hV05oWTJsdklFTmhkR0ZzWVc1bGN6RVBNQTBHQTFVRUF4TUdSVU10UVVORApNS
UlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXN5TEhUK0tYUXBXSVI0TkE5aDBY
ODROekpCNVI4NWlLCnc1SzQvMENRQlhDSFlNa0FxYldVWlJraUZSZkNRMnhtUkpvTkJENDViNlZMZXFwanQ
0cEVuZGxqa1lSbTRDZ1B1a0xqYm83M0ZDZVQKYWU2UkRxTmZEckhyWnFKeVR4SVRobVY2UHR0UEIvU25DV0
RhT2tLWng3Si9zeGFWSE1mNU5MV1VoZFdaWHFCSW9IN25GMlc0b25XNApIdlBsUW4ydjdmT0tTR1JkZ2hTV
DJNRGsvN05RY3ZKMjlyTmRRbEI1MEpRK2F3d0F2dGhyRGs0cTdEN1N6SUtpR0dVekUzZWVtbDBhCkU5akQy
ejNJbDNydWNPMm41bnpiY2M4dGxHTGZiZGIxT0w0L3BZVUtHYmlvMkFsMVFuREU2dS9MRHNnMHFCSWltQXk
0RTVTMlMrencKMEpEbkp3SURBUUFCbzRIak1JSGdNQjBHQTFVZEVRUVdNQlNCRW1WalgyRmpZMEJqWVhSal
pYSjBMbTVsZERBUEJnTlZIUk1CQWY4RQpCVEFEQVFIL01BNEdBMVVkRHdFQi93UUVBd0lCQmpBZEJnTlZIU
TRFRmdRVW9NT0xSS28zcFVXL2w0QmEwZkY0b3B2cFhZMHdmd1lEClZSMGdCSGd3ZGpCMEJnc3JCZ0VFQWZW
NEFRTUJDakJsTUN3R0NDc0dBUVVGQndJQkZpQm9kSFJ3Y3pvdkwzZDNkeTVqWVhSalpYSjAKTG01bGRDOTJ
aWEpoY25KbGJEQTFCZ2dyQmdFRkJRY0NBakFwR2lkV1pXZGxkU0JvZEhSd2N6b3ZMM2QzZHk1allYUmpaWE
owTG01bApkQzkyWlhKaGNuSmxiQ0F3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUtCSVc0SUI5azFJdURsV
k5aeUFlbE9aMVZyL3NYRTd6RGtKCmxGN1cydSsrQVZ0ZDB4N1kvWDFQemFCQjREU1R2OHZpaHB3M2twQldI
TnpyS1FYbHhKN0hOZCtLRE0zRklVUHBxb2psTmNBWlFtTmEKQWw2a1NCZzZoVy9jbmJ3L25aekJoN2g2WVF
qcGR3dC9jS3Q2M2RtWExHUWVoYis4ZEphaHczb1M3QXdhYm9NTVBPaHlScC83U05WZQpsK2F4b2ZqazcwWW
xsSnlKMjJrNHZ1eGNEbGJIWlZIbFVJaUl2MExWS3ozbCticWVMclBLOUhPU0FndStUR2JySVA2NXk3V1pmK
2EyCkUvcktTMDNaN2xOR0JqdkdUcTJUV29GK2JDcExhZ1ZGalBJaHBER1FoMnhsbkoybFlKVTZVbi8xMGFz
SWJ2UHVXL21JUFg2NGIyNEQKNUVJPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCgpIZWxsZW5pYyBBY2F
kZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25zIFJvb3RDQSAyMDExCj09PT09PT09PT09PT09PT09PT
09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tL
S0tCk1JSUVNVENDQXhtZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRVUZBRENCbFRFTE1Ba0dBMVVFQmhN
Q1IxSXhSREJDQmdOVkJBb1QKTzBobGJHeGxibWxqSUVGallXUmxiV2xqSUdGdVpDQlNaWE5sWVhKamFDQkp
ibk4wYVhSMWRHbHZibk1nUTJWeWRDNGdRWFYwYUc5eQphWFI1TVVBd1BnWURWUVFERXpkSVpXeHNaVzVwWX
lCQlkyRmtaVzFwWXlCaGJtUWdVbVZ6WldGeVkyZ2dTVzV6ZEdsMGRYUnBiMjV6CklGSnZiM1JEUVNBeU1ER
XhNQjRYRFRFeE1USXdOakV6TkRrMU1sb1hEVE14TVRJd01URXpORGsxTWxvd2daVXhDekFKQmdOVkJBWVQK
QWtkU01VUXdRZ1lEVlFRS0V6dElaV3hzWlc1cFl5QkJZMkZrWlcxcFl5QmhibVFnVW1WelpXRnlZMmdnU1c
1emRHbDBkWFJwYjI1egpJRU5sY25RdUlFRjFkR2h2Y21sMGVURkFNRDRHQTFVRUF4TTNTR1ZzYkdWdWFXTW
dRV05oWkdWdGFXTWdZVzVrSUZKbGMyVmhjbU5vCklFbHVjM1JwZEhWMGFXOXVjeUJTYjI5MFEwRWdNakF4T
VRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUIKQUtsVEFPTXVwdmFPK21EWUxa
VSsrQ3dxVkU3TnVZUmhsRmhQanoyTDVFUHpkWW1OVWVURE45S0tpRTE1SHJjUzNVTjRTb3FTNXRkSQoxUSt
rT2lsRU5iZ0g5bWdkVmMwNFVmQ01KREdGcjRQSmZlbDNyKzBhZTUwWCtiT2RPRkFQcGxwNWtZQ3ZONjZtMH
pIN3RTWUpuVHhhCjcxSEZLOStXWGVzeUhnTGFjRW5zYmd6SW1qZU45L0UyWUVzbUxJS2UwSGp6RFE5anBGR
Xc0ZmtySnhJSDJPcTlHR0tZc0ZrM2ZiN3UKOHlCUlFscUQ3NU82YVJYeFlwMmZtVG1Db2JkMExvdlV4UXQ3
TC9ESUN0bzllUXFha3h5bEtISnprVU9hcDlGTmhZUzVxWFNQRkVESAozTjZzUVdSc3RCbWJBbU50SkdTUFJ
MSWw2czVkZEF4ak1seU5oK1VDQXdFQUFhT0JpVENCaGpBUEJnTlZIUk1CQWY4RUJUQURBUUgvCk1Bc0dBMV
VkRHdRRUF3SUJCakFkQmdOVkhRNEVGZ1FVcHBGQy9STmhTaU9lQ0tRcDVkZ1RCQ1B1UVNVd1J3WURWUjBlQ
kVBd1BxQTgKTUFXQ0F5NW5jakFGZ2dNdVpYVXdCb0lFTG1Wa2RUQUdnZ1F1YjNKbk1BV0JBeTVuY2pBRmdR
TXVaWFV3Qm9FRUxtVmtkVEFHZ1FRdQpiM0puTUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFBZjczbEI0WHR
1UDdLTWhqZENTazRjTng2Tlpyb2tnY2xQRWc4aHdBT1hoaVZ0ClhkTWlLYWhzb2cycDZ6MEdXNWs2eDh6RG
1qUi9xdzdJVGh6aCt1VGN6UTIrdnlUK2JPZHJ3ZzNJQnA1T2pXRW9wbXI5NWZaaTZoZzgKVHFCVG5iSTZuT
3VsbkpFV3RrMkM0QXdGU0tsczljejR5NTFKdFBBQ3BmMXdBKzJLSWFXdUU0Wkp3ek56dm9jN2RJc1hSU1pN
RnBHRAovbWQ5elUxalovcnpBeEtXZUFhTnNXZnR
qaisrbjA4QzliTUpML05NaDk4cXk1VjhBY3lzTm5xL29uTjY5NC9CdFpxaEZMS1BNNThOCjd5TGNabnVFdl
VVWEJqMDh5cmwzTkkvSzZzOC9NVDdqaU9PQVNTWElsN1dkbXBsTnNEejRTZ0NiWk4yZk9VdlJKOWU0Ci0tL
S0tRU5EIENFUlRJRklDQVRFLS0tLS0K
###PACKDATA,FILE_END,/destinations/_s3lib/aws-
sdk/lib/requestcore/cacert.pem,importbuddy/lib/requestcore/cacert.pem
###PACKDATA,FILE_START,/destinations/_s3lib/aws-
sdk/lib/requestcore/index.php,importbuddy/lib/requestcore/index.php
PD9waHAgLy8gU2lsZW5jZSBpcyBnb2xkZW4u
###PACKDATA,FILE_END,/destinations/_s3lib/aws-
sdk/lib/requestcore/index.php,importbuddy/lib/requestcore/index.php
###PACKDATA,FILE_START,/destinations/_s3lib/aws-
sdk/lib/requestcore/requestcore.class.php,importbuddy/lib/requestcore/requestcore.c
lass.php
PD9waHAKLyoqCiAqIEhhbmRsZXMgYWxsIEhUVFAgcmVxdWVzdHMgdXNpbmcgY1VSTCBhbmQgbWFuYWdlcyB
0aGUgcmVzcG9uc2VzLgogKgogKiBAdmVyc2lvbiAyMDEyLjAxLjE3CiAqIEBjb3B5cmlnaHQgMjAwNi0yMD
ExIFJ5YW4gUGFybWFuCiAqIEBjb3B5cmlnaHQgMjAwNi0yMDEwIEZvbGVlbyBJbmMuCiAqIEBjb3B5cmlna
HQgMjAxMC0yMDExIEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuCiAqIEBjb3B5cmlnaHQg
MjAwOC0yMDExIENvbnRyaWJ1dG9ycwogKiBAbGljZW5zZSBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5
zZXMvYnNkLWxpY2Vuc2UucGhwIFNpbXBsaWZpZWQgQlNEIExpY2Vuc2UKICovCmNsYXNzIFJlcXVlc3RDb3
JlCnsKCS8qKgoJICogVGhlIFVSTCBiZWluZyByZXF1ZXN0ZWQuCgkgKi8KCXB1YmxpYyAkcmVxdWVzdF91c
mw7CgoJLyoqCgkgKiBUaGUgaGVhZGVycyBiZWluZyBzZW50IGluIHRoZSByZXF1ZXN0LgoJICovCglwdWJs
aWMgJHJlcXVlc3RfaGVhZGVyczsKCgkvKioKCSAqIFRoZSBib2R5IGJlaW5nIHNlbnQgaW4gdGhlIHJlcXV
lc3QuCgkgKi8KCXB1YmxpYyAkcmVxdWVzdF9ib2R5OwoKCS8qKgoJICogVGhlIHJlc3BvbnNlIHJldHVybm
VkIGJ5IHRoZSByZXF1ZXN0LgoJICovCglwdWJsaWMgJHJlc3BvbnNlOwoKCS8qKgoJICogVGhlIGhlYWRlc
nMgcmV0dXJuZWQgYnkgdGhlIHJlcXVlc3QuCgkgKi8KCXB1YmxpYyAkcmVzcG9uc2VfaGVhZGVyczsKCgkv
KioKCSAqIFRoZSBib2R5IHJldHVybmVkIGJ5IHRoZSByZXF1ZXN0LgoJICovCglwdWJsaWMgJHJlc3BvbnN
lX2JvZHk7CgoJLyoqCgkgKiBUaGUgSFRUUCBzdGF0dXMgY29kZSByZXR1cm5lZCBieSB0aGUgcmVxdWVzdC
4KCSAqLwoJcHVibGljICRyZXNwb25zZV9jb2RlOwoKCS8qKgoJICogQWRkaXRpb25hbCByZXNwb25zZSBkY
XRhLgoJICovCglwdWJsaWMgJHJlc3BvbnNlX2luZm87CgoJLyoqCgkgKiBUaGUgaGFuZGxlIGZvciB0aGUg
Y1VSTCBvYmplY3QuCgkgKi8KCXB1YmxpYyAkY3VybF9oYW5kbGU7CgoJLyoqCgkgKiBUaGUgbWV0aG9kIGJ
5IHdoaWNoIHRoZSByZXF1ZXN0IGlzIGJlaW5nIG1hZGUuCgkgKi8KCXB1YmxpYyAkbWV0aG9kOwoKCS8qKg
oJICogU3RvcmVzIHRoZSBwcm94eSBzZXR0aW5ncyB0byB1c2UgZm9yIHRoZSByZXF1ZXN0LgoJICovCglwd
WJsaWMgJHByb3h5ID0gbnVsbDsKCgkvKioKCSAqIFRoZSB1c2VybmFtZSB0byB1c2UgZm9yIHRoZSByZXF1
ZXN0LgoJICovCglwdWJsaWMgJHVzZXJuYW1lID0gbnVsbDsKCgkvKioKCSAqIFRoZSBwYXNzd29yZCB0byB
1c2UgZm9yIHRoZSByZXF1ZXN0LgoJICovCglwdWJsaWMgJHBhc3N3b3JkID0gbnVsbDsKCgkvKioKCSAqIE
N1c3RvbSBDVVJMT1BUIHNldHRpbmdzLgoJICovCglwdWJsaWMgJGN1cmxvcHRzID0gbnVsbDsKCgkvKioKC
SAqIFRoZSBzdGF0ZSBvZiBkZWJ1ZyBtb2RlLgoJICovCglwdWJsaWMgJGRlYnVnX21vZGUgPSBmYWxzZTsK
CgkvKioKCSAqIFRoZSBkZWZhdWx0IGNsYXNzIHRvIHVzZSBmb3IgSFRUUCBSZXF1ZXN0cyAoZGVmYXVsdHM
gdG8gPFJlcXVlc3RDb3JlPikuCgkgKi8KCXB1YmxpYyAkcmVxdWVzdF9jbGFzcyA9ICdSZXF1ZXN0Q29yZS
c7CgoJLyoqCgkgKiBUaGUgZGVmYXVsdCBjbGFzcyB0byB1c2UgZm9yIEhUVFAgUmVzcG9uc2VzIChkZWZhd
Wx0cyB0byA8UmVzcG9uc2VDb3JlPikuCgkgKi8KCXB1YmxpYyAkcmVzcG9uc2VfY2xhc3MgPSAnUmVzcG9u
c2VDb3JlJzsKCgkvKioKCSAqIERlZmF1bHQgdXNlcmFnZW50IHN0cmluZyB0byB1c2UuCgkgKi8KCXB1Ymx
pYyAkdXNlcmFnZW50ID0gJ1JlcXVlc3RDb3JlLzEuNC40JzsKCgkvKioKCSAqIEZpbGUgdG8gcmVhZCBmcm
9tIHdoaWxlIHN0cmVhbWluZyB1cC4KCSAqLwoJcHVibGljICRyZWFkX2ZpbGUgPSBudWxsOwoKCS8qKgoJI
CogVGhlIHJlc291cmNlIHRvIHJlYWQgZnJvbSB3aGlsZSBzdHJlYW1pbmcgdXAuCgkgKi8KCXB1YmxpYyAk
cmVhZF9zdHJlYW0gPSBudWxsOwoKCS8qKgoJICogVGhlIHNpemUgb2YgdGhlIHN0cmVhbSB0byByZWFkIGZ
yb20uCgkgKi8KCXB1YmxpYyAkcmVhZF9zdHJlYW1fc2l6ZSA9IG51bGw7CgoJLyoqCgkgKiBUaGUgbGVuZ3
RoIGFscmVhZHkgcmVhZCBmcm9tIHRoZSBzdHJlYW0uCgkgKi8KCXB1YmxpYyAkcmVhZF9zdHJlYW1fcmVhZ
CA9IDA7CgoJLyoqCgkgKiBGaWxlIHRvIHdyaXRlIHRvIHdoaWxlIHN0cmVhbWluZyBkb3duLgoJICovCglw
dWJsaWMgJHdyaXRlX2ZpbGUgPSBudWxsOwoKCS8qKgoJICogVGhlIHJlc291cmNlIHRvIHdyaXRlIHRvIHd
oaWxlIHN0cmVhbWluZyBkb3duLgoJICovCglwdWJsaWMgJHdyaXRlX3N0cmVhbSA9IG51bGw7CgoJLyoqCg
kgKiBTdG9yZXMgdGhlIGludGVuZGVkIHN0YXJ0aW5nIHNlZWsgcG9zaXRpb24uCgkgKi8KCXB1YmxpYyAkc
2Vla19wb3NpdGlvbiA9IG51bGw7CgoJLyoqCgkgKiBUaGUgbG9jYXRpb24gb2YgdGhlIGNhY2VydC5wZW0g
ZmlsZSB0byB1c2UuCgkgKi8KCXB1YmxpYyAkY2FjZXJ0X2xvY2F0aW9uID0gZmFsc2U7CgoJLyoqCgkgKiB
UaGUgc3RhdGUgb2YgU1NMIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbi4KCSAqLwoJcHVibGljICRzc2xfdm
VyaWZpY2F0aW9uID0gdHJ1ZTsKCgkvKioKCSAqIFRoZSB1c2VyLWRlZmluZWQgY2FsbGJhY2sgZnVuY3Rpb
24gdG8gY2FsbCB3aGVuIGEgc3RyZWFtIGlzIHJlYWQgZnJvbS4KCSAqLwoJcHVibGljICRyZWdpc3RlcmVk
X3N0cmVhbWluZ19yZWFkX2NhbGxiYWNrID0gbnVsbDsKCgkvKioKCSAqIFRoZSB1c2VyLWRlZmluZWQgY2F
sbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIGEgc3RyZWFtIGlzIHdyaXR0ZW4gdG8uCgkgKi8KCXB1Ym
xpYyAkcmVnaXN0ZXJlZF9zdHJlYW1pbmdfd3JpdGVfY2FsbGJhY2sgPSBudWxsOwoKCS8qKgoJICogV2hld
GhlciBvciBub3QgdGhlIHNldF90aW1lX2xpbWl0IGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQuCgkgKi8K
CXB1YmxpYyAkYWxsb3dfc2V0X3RpbWVfbGltaXQgPSB0cnVlOwoKCS8qKgoJICogV2hldGhlciBvciBub3Q
gdG8gdXNlIGd6aXAgZW5jb2RpbmcgdmlhIENVUkxPUFRfRU5DT0RJTkcKCSAqLwoJcHVibGljICR1c2VfZ3
ppcF9lbmNvbmRpbmcgPSB0cnVlOwoKCgkvKiUqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqK
ioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiolKi8KCS8v
IENPTlNUQU5UUwoKCS8qKgoJICogR0VUIEhUVFAgTWV0aG9kCgkgKi8KCWNvbnN0IEhUVFBfR0VUID0gJ0d
FVCc7CgoJLyoqCgkgKiBQT1NUIEhUVFAgTWV0aG9kCgkgKi8KCWNvbnN0IEhUVFBfUE9TVCA9ICdQT1NUJz
sKCgkvKioKCSAqIFBVVCBIVFRQIE1ldGhvZAoJICovCgljb25zdCBIVFRQX1BVVCA9ICdQVVQnOwoKCS8qK
goJICogREVMRVRFIEhUVFAgTWV0aG9kCgkgKi8KCWNvbnN0IEhUVFBfREVMRVRFID0gJ0RFTEVURSc7CgoJ
LyoqCgkgKiBIRUFEIEhUVFAgTWV0aG9kCgkgKi8KCWNvbnN0IEhUVFBfSEVBRCA9ICdIRUFEJzsKCgoJLyo
lKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi
oqKioqKioqKioqKioqKioqKioqKioqKioqKioqJSovCgkvLyBDT05TVFJVQ1RPUi9ERVNUUlVDVE9SCgoJL
yoqCgkgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuCgkgKgoJICogQHBhcmFt
IHN0cmluZyAkdXJsIChPcHRpb25hbCkgVGhlIFVSTCB0byByZXF1ZXN0IG9yIHNlcnZpY2UgZW5kcG9pbnQ
gdG8gcXVlcnkuCgkgKiBAcGFyYW0gc3RyaW5nICRwcm94eSAoT3B0aW9uYWwpIFRoZSBmYXV4LXVybCB0by
B1c2UgZm9yIHByb3h5IHNldHRpbmdzLiBUYWtlcyB0aGUgZm9sbG93aW5nIGZvcm1hdDogYHByb3h5Oi8vd
XNlcjpwYXNzQGhvc3RuYW1lOnBvcnRgCgkgKiBAcGFyYW0gYXJyYXkgJGhlbHBlcnMgKE9wdGlvbmFsKSBB
biBhc3NvY2lhdGl2ZSBhcnJheSBvZiBjbGFzc25hbWVzIHRvIHVzZSBmb3IgcmVxdWVzdCwgYW5kIHJlc3B
vbnNlIGZ1bmN0aW9uYWxpdHkuIEdldHMgcGFzc2VkIGluIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGNhbGxpbm
cgY2xhc3MuCgkgKiBAcmV0dXJuICR0aGlzIEEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGluc3RhbmNlL
goJICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHVybCA9IG51bGwsICRwcm94eSA9IG51bGws
ICRoZWxwZXJzID0gbnVsbCkKCXsKCQkvLyBTZXQgc29tZSBkZWZhdWx0IHZhbHVlcy4KCQkkdGhpcy0+cmV
xdWVzdF91cmwgPSAkdXJsOwoJCSR0aGlzLT5tZXRob2QgPSBzZWxmOjpIVFRQX0dFVDsKCQkkdGhpcy0+cm
VxdWVzdF9oZWFkZXJzID0gYXJyYXkoKTsKCQkkdGhpcy0+cmVxdWVzdF9ib2R5ID0gJyc7CgoJCS8vIERld
GVybWluZSBpZiBzZXRfdGltZV9saW1pdCBjYW4gYmUgY2FsbGVkCgkJaWYgKHN0cnBvcyhpbmlfZ2V0KCdk
aXNhYmxlX2Z1bmN0aW9ucycpLCAnc2V0X3RpbWVfbGltaXQnKSAhPT0gZmFsc2UpCgkJewoJCQkkdGhpcy0
+YWxsb3dfc2V0X3RpbWVfbGltaXQgPSBmYWxzZTsKCQl9CgoJCS8vIFNldCBhIG5ldyBSZXF1ZXN0IGNsYX
NzIGlmIG9uZSB3YXMgc2V0LgoJCWlmIChpc3NldCgkaGVscGVyc1sncmVxdWVzdCddKSAmJiAhZW1wdHkoJ
GhlbHBlcnNbJ3JlcXVlc3QnXSkpCgkJewoJCQkkdGhpcy0+cmVxdWVzdF9jbGFzcyA9ICRoZWxwZXJzWydy
ZXF1ZXN0J107CgkJfQoKCQkvLyBTZXQgYSBuZXcgUmVxdWVzdCBjbGFzcyBpZiBvbmUgd2FzIHNldC4KCQl
pZiAoaXNzZXQoJGhlbHBlcnNbJ3Jlc3BvbnNlJ10pICYmICFlbXB0eSgkaGVscGVyc1sncmVzcG9uc2UnXS
kpCgkJewoJCQkkdGhpcy0+cmVzcG9uc2VfY2xhc3MgPSAkaGVscGVyc1sncmVzcG9uc2UnXTsKCQl9CgoJC
WlmICgkcHJveHkpCgkJewoJCQkkdGhpcy0+c2V0X3Byb3h5KCRwcm94eSk7CgkJfQoKCQlyZXR1cm4gJHRo
aXM7Cgl9CgoJLyoqCgkgKiBEZXN0cnVjdHMgdGhlIGluc3RhbmNlLiBDbG9zZXMgb3BlbmVkIGZpbGUgaGF
uZGxlcy4KCSAqCgkgKiBAcmV0dXJuICR0aGlzIEEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGluc3Rhbm
NlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gX19kZXN0cnVjdCgpCgl7CgkJaWYgKGlzc2V0KCR0aGlzLT5yZ
WFkX2ZpbGUpICYmIGlzc2V0KCR0aGlzLT5yZWFkX3N0cmVhbSkpCgkJewoJCQlmY2xvc2UoJHRoaXMtPnJl
YWRfc3RyZWFtKTsKCQl9CgoJCWlmIChpc3NldCgkdGhpcy0+d3JpdGVfZmlsZSkgJiYgaXNzZXQoJHRoaXM
tPndyaXRlX3N0cmVhbSkpCgkJewoJCQlmY2xvc2UoJHRoaXMtPndyaXRlX3N0cmVhbSk7CgkJfQoKCQlyZX
R1cm4gJHRoaXM7Cgl9CgoKCS8qJSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqK
ioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiUqLwoJLy8gUkVRVUVT
VCBNRVRIT0RTCgoJLyoqCgkgKiBTZXRzIHRoZSBjcmVkZW50aWFscyB0byB1c2UgZm9yIGF1dGhlbnRpY2F
0aW9uLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHVzZXIgKFJlcXVpcmVkKSBUaGUgdXNlcm5hbWUgdG8gYX
V0aGVudGljYXRlIHdpdGguCgkgKiBAcGFyYW0gc3RyaW5nICRwYXNzIChSZXF1aXJlZCkgVGhlIHBhc3N3b
3JkIHRvIGF1dGhlbnRpY2F0ZSB3aXRoLgoJICogQHJldHVybiAkdGhpcyBBIHJlZmVyZW5jZSB0byB0aGUg
Y3VycmVudCBpbnN0YW5jZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldF9jcmVkZW50aWFscygkdXNlciw
gJHBhc3MpCgl7CgkJJHRoaXMtPnVzZXJuYW1lID0gJHVzZXI7CgkJJHRoaXMtPnBhc3N3b3JkID0gJHBhc3
M7CgkJcmV0dXJuICR0aGlzOwoJfQoKCS8qKgoJICogQWRkcyBhIGN1c3RvbSBIVFRQIGhlYWRlciB0byB0a
GUgY1VSTCByZXF1ZXN0LgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGtleSAoUmVxdWlyZWQpIFRoZSBjdXN0
b20gSFRUUCBoZWFkZXIgdG8gc2V0LgoJICogQHBhcmFtIG1peGVkICR2YWx1ZSAoUmVxdWlyZWQpIFRoZSB
2YWx1ZSB0byBhc3NpZ24gdG8gdGhlIGN1c3RvbSBIVFRQIGhlYWRlci4KCSAqIEByZXR1cm4gJHRoaXMgQS
ByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgaW5zdGFuY2UuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBhZGRfa
GVhZGVyKCRrZXksICR2YWx1ZSkKCXsKCQkkdGhpcy0+cmVxdWVzdF9oZWFkZXJzWyRrZXldID0gJHZhbHVl
OwoJCXJldHVybiAkdGhpczsKCX0KCgkvKioKCSAqIFJlbW92ZXMgYW4gSFRUUCBoZWFkZXIgZnJvbSB0aGU
gY1VSTCByZXF1ZXN0LgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJGtleSAoUmVxdWlyZWQpIFRoZSBjdXN0b2
0gSFRUUCBoZWFkZXIgdG8gc2V0LgoJICogQHJldHVybiAkdGhpcyBBIHJlZmVyZW5jZSB0byB0aGUgY3Vyc
mVudCBpbnN0YW5jZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHJlbW92ZV9oZWFkZXIoJGtleSkKCXsKCQlp
ZiAoaXNzZXQoJHRoaXMtPnJlcXVlc3RfaGVhZGVyc1ska2V5XSkpCgkJewoJCQl1bnNldCgkdGhpcy0+cmV
xdWVzdF9oZWFkZXJzWyRrZXldKTsKCQl9CgkJcmV0dXJuICR0aGlzOwoJfQoKCS8qKgoJICogU2V0IHRoZS
BtZXRob2QgdHlwZSBmb3IgdGhlIHJlcXVlc3QuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkbWV0aG9kIChSZ
XF1aXJlZCkgT25lIG9mIHRoZSBmb2xsb3dpbmcgY29uc3RhbnRzOiA8SFRUUF9HRVQ+LCA8SFRUUF9QT1NU
PiwgPEhUVFBfUFVUPiwgPEhUVFBfSEVBRD4sIDxIVFRQX0RFTEVURT4uCgkgKiBAcmV0dXJuICR0aGlzIEE
gcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGluc3RhbmNlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0X2
1ldGhvZCgkbWV0aG9kKQoJewoJCSR0aGlzLT5tZXRob2QgPSBzdHJ0b3VwcGVyKCRtZXRob2QpOwoJCXJld
HVybiAkdGhpczsKCX0KCgkvKioKCSAqIFNldHMgYSBjdXN0b20gdXNlcmFnZW50IHN0cmluZyBmb3IgdGhl
IGNsYXNzLgoJICoKCSAqIEBwYXJhbSBzdHJpbmcgJHVhIChSZXF1aXJlZCkgVGhlIHVzZXJhZ2VudCBzdHJ
pbmcgdG8gdXNlLgoJICogQHJldHVybiAkdGhpcyBBIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBpbnN0YW
5jZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldF91c2VyYWdlbnQoJHVhKQoJewoJCSR0aGlzLT51c2VyY
WdlbnQgPSAkdWE7CgkJcmV0dXJuICR0aGlzOwoJfQoKCS8qKgoJICogU2V0IHRoZSBib2R5IHRvIHNlbmQg
aW4gdGhlIHJlcXVlc3QuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkYm9keSAoUmVxdWlyZWQpIFRoZSB0ZXh
0dWFsIGNvbnRlbnQgdG8gc2VuZCBhbG9uZyBpbiB0aGUgYm9keSBvZiB0aGUgcmVxdWVzdC4KCSAqIEByZX
R1cm4gJHRoaXMgQSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgaW5zdGFuY2UuCgkgKi8KCXB1YmxpYyBmd
W5jdGlvbiBzZXRfYm9keSgkYm9keSkKCXsKCQkkdGhpcy0+cmVxdWVzdF9ib2R5ID0gJGJvZHk7CgkJcmV0
dXJuICR0aGlzOwoJfQoKCS8qKgoJICogU2V0IHR
oZSBVUkwgdG8gbWFrZSB0aGUgcmVxdWVzdCB0by4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICR1cmwgKFJlcX
VpcmVkKSBUaGUgVVJMIHRvIG1ha2UgdGhlIHJlcXVlc3QgdG8uCgkgKiBAcmV0dXJuICR0aGlzIEEgcmVmZ
XJlbmNlIHRvIHRoZSBjdXJyZW50IGluc3RhbmNlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0X3JlcXVl
c3RfdXJsKCR1cmwpCgl7CgkJJHRoaXMtPnJlcXVlc3RfdXJsID0gJHVybDsKCQlyZXR1cm4gJHRoaXM7Cgl
9CgoJLyoqCgkgKiBTZXQgYWRkaXRpb25hbCBDVVJMT1BUIHNldHRpbmdzLiBUaGVzZSB3aWxsIG1lcmdlIH
dpdGggdGhlIGRlZmF1bHQgc2V0dGluZ3MsIGFuZCBvdmVycmlkZSBpZgoJICogdGhlcmUgaXMgYSBkdXBsa
WNhdGUuCgkgKgoJICogQHBhcmFtIGFycmF5ICRjdXJsb3B0cyAoT3B0aW9uYWwpIEEgc2V0IG9mIGtleS12
YWx1ZSBwYWlycyB0aGF0IHNldCBgQ1VSTE9QVGAgb3B0aW9ucy4gVGhlc2Ugd2lsbCBtZXJnZSB3aXRoIHR
oZSBleGlzdGluZyBDVVJMT1BUcywgYW5kIG9uZXMgcGFzc2VkIGhlcmUgd2lsbCBvdmVycmlkZSB0aGUgZG
VmYXVsdHMuIEtleXMgc2hvdWxkIGJlIHRoZSBgQ1VSTE9QVF8qYCBjb25zdGFudHMsIG5vdCBzdHJpbmdzL
goJICogQHJldHVybiAkdGhpcyBBIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBpbnN0YW5jZS4KCSAqLwoJ
cHVibGljIGZ1bmN0aW9uIHNldF9jdXJsb3B0cygkY3VybG9wdHMpCgl7CgkJJHRoaXMtPmN1cmxvcHRzID0
gJGN1cmxvcHRzOwoJCXJldHVybiAkdGhpczsKCX0KCgkvKioKCSAqIFNldHMgdGhlIGxlbmd0aCBpbiBieX
RlcyB0byByZWFkIGZyb20gdGhlIHN0cmVhbSB3aGlsZSBzdHJlYW1pbmcgdXAuCgkgKgoJICogQHBhcmFtI
GludGVnZXIgJHNpemUgKFJlcXVpcmVkKSBUaGUgbGVuZ3RoIGluIGJ5dGVzIHRvIHJlYWQgZnJvbSB0aGUg
c3RyZWFtLgoJICogQHJldHVybiAkdGhpcyBBIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBpbnN0YW5jZS4
KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldF9yZWFkX3N0cmVhbV9zaXplKCRzaXplKQoJewoJCSR0aGlzLT
5yZWFkX3N0cmVhbV9zaXplID0gJHNpemU7CgoJCXJldHVybiAkdGhpczsKCX0KCgkvKioKCSAqIFNldHMgd
GhlIHJlc291cmNlIHRvIHJlYWQgZnJvbSB3aGlsZSBzdHJlYW1pbmcgdXAuIFJlYWRzIHRoZSBzdHJlYW0g
ZnJvbSBpdHMgY3VycmVudCBwb3NpdGlvbiB1bnRpbAoJICogRU9GIG9yIGAkc2l6ZWAgYnl0ZXMgaGF2ZSB
iZWVuIHJlYWQuIElmIGAkc2l6ZWAgaXMgbm90IGdpdmVuIGl0IHdpbGwgYmUgZGV0ZXJtaW5lZCBieSA8cG
hwOmZzdGF0KCk+IGFuZAoJICogPHBocDpmdGVsbCgpPi4KCSAqCgkgKiBAcGFyYW0gcmVzb3VyY2UgJHJlc
291cmNlIChSZXF1aXJlZCkgVGhlIHJlYWRhYmxlIHJlc291cmNlIHRvIHJlYWQgZnJvbS4KCSAqIEBwYXJh
bSBpbnRlZ2VyICRzaXplIChPcHRpb25hbCkgVGhlIHNpemUgb2YgdGhlIHN0cmVhbSB0byByZWFkLgoJICo
gQHJldHVybiAkdGhpcyBBIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBpbnN0YW5jZS4KCSAqLwoJcHVibG
ljIGZ1bmN0aW9uIHNldF9yZWFkX3N0cmVhbSgkcmVzb3VyY2UsICRzaXplID0gbnVsbCkKCXsKCQlpZiAoI
Wlzc2V0KCRzaXplKSB8fCAkc2l6ZSA8IDApCgkJewoJCQkkc3RhdHMgPSBmc3RhdCgkcmVzb3VyY2UpOwoK
CQkJaWYgKCRzdGF0cyAmJiAkc3RhdHNbJ3NpemUnXSA+PSAwKQoJCQl7CgkJCQkkcG9zaXRpb24gPSBmdGV
sbCgkcmVzb3VyY2UpOwoKCQkJCWlmICgkcG9zaXRpb24gIT09IGZhbHNlICYmICRwb3NpdGlvbiA+PSAwKQ
oJCQkJewoJCQkJCSRzaXplID0gJHN0YXRzWydzaXplJ10gLSAkcG9zaXRpb247CgkJCQl9CgkJCX0KCQl9C
goJCSR0aGlzLT5yZWFkX3N0cmVhbSA9ICRyZXNvdXJjZTsKCgkJcmV0dXJuICR0aGlzLT5zZXRfcmVhZF9z
dHJlYW1fc2l6ZSgkc2l6ZSk7Cgl9CgoJLyoqCgkgKiBTZXRzIHRoZSBmaWxlIHRvIHJlYWQgZnJvbSB3aGl
sZSBzdHJlYW1pbmcgdXAuCgkgKgoJICogQHBhcmFtIHN0cmluZyAkbG9jYXRpb24gKFJlcXVpcmVkKSBUaG
UgcmVhZGFibGUgbG9jYXRpb24gdG8gcmVhZCBmcm9tLgoJICogQHJldHVybiAkdGhpcyBBIHJlZmVyZW5jZ
SB0byB0aGUgY3VycmVudCBpbnN0YW5jZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldF9yZWFkX2ZpbGUo
JGxvY2F0aW9uKQoJewoJCSR0aGlzLT5yZWFkX2ZpbGUgPSAkbG9jYXRpb247CgkJJHJlYWRfZmlsZV9oYW5
kbGUgPSBmb3BlbigkbG9jYXRpb24sICdyJyk7CgoJCXJldHVybiAkdGhpcy0+c2V0X3JlYWRfc3RyZWFtKC
RyZWFkX2ZpbGVfaGFuZGxlKTsKCX0KCgkvKioKCSAqIFNldHMgdGhlIHJlc291cmNlIHRvIHdyaXRlIHRvI
HdoaWxlIHN0cmVhbWluZyBkb3duLgoJICoKCSAqIEBwYXJhbSByZXNvdXJjZSAkcmVzb3VyY2UgKFJlcXVp
cmVkKSBUaGUgd3JpdGVhYmxlIHJlc291cmNlIHRvIHdyaXRlIHRvLgoJICogQHJldHVybiAkdGhpcyBBIHJ
lZmVyZW5jZSB0byB0aGUgY3VycmVudCBpbnN0YW5jZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldF93cm
l0ZV9zdHJlYW0oJHJlc291cmNlKQoJewoJCSR0aGlzLT53cml0ZV9zdHJlYW0gPSAkcmVzb3VyY2U7CgoJC
XJldHVybiAkdGhpczsKCX0KCgkvKioKCSAqIFNldHMgdGhlIGZpbGUgdG8gd3JpdGUgdG8gd2hpbGUgc3Ry
ZWFtaW5nIGRvd24uCgkgKgoJICogQHBhcmFtIHN0cmluZyAkbG9jYXRpb24gKFJlcXVpcmVkKSBUaGUgd3J
pdGVhYmxlIGxvY2F0aW9uIHRvIHdyaXRlIHRvLgoJICogQHJldHVybiAkdGhpcyBBIHJlZmVyZW5jZSB0by
B0aGUgY3VycmVudCBpbnN0YW5jZS4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNldF93cml0ZV9maWxlKCRsb
2NhdGlvbikKCXsKCQkkdGhpcy0+d3JpdGVfZmlsZSA9ICRsb2NhdGlvbjsKCQkkd3JpdGVfZmlsZV9oYW5k
bGUgPSBmb3BlbigkbG9jYXRpb24sICd3Jyk7CgoJCXJldHVybiAkdGhpcy0+c2V0X3dyaXRlX3N0cmVhbSg
kd3JpdGVfZmlsZV9oYW5kbGUpOwoJfQoKCS8qKgoJICogU2V0IHRoZSBwcm94eSB0byB1c2UgZm9yIG1ha2
luZyByZXF1ZXN0cy4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nICRwcm94eSAoUmVxdWlyZWQpIFRoZSBmYXV4L
XVybCB0byB1c2UgZm9yIHByb3h5IHNldHRpbmdzLiBUYWtlcyB0aGUgZm9sbG93aW5nIGZvcm1hdDogYHBy
b3h5Oi8vdXNlcjpwYXNzQGhvc3RuYW1lOnBvcnRgCgkgKiBAcmV0dXJuICR0aGlzIEEgcmVmZXJlbmNlIHR
vIHRoZSBjdXJyZW50IGluc3RhbmNlLgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2V0X3Byb3h5KCRwcm94eS
kKCXsKCQkkcHJveHkgPSBwYXJzZV91cmwoJHByb3h5KTsKCQkkcHJveHlbJ3VzZXInXSA9IGlzc2V0KCRwc
m94eVsndXNlciddKSA/ICRwcm94eVsndXNlciddIDogbnVsbDsKCQkkcHJveHlbJ3Bhc3MnXSA9IGlzc2V0
KCRwcm94eVsncGFzcyddKSA/ICRwcm94eVsncGFzcyddIDogbnVsbDsKCQkkcHJveHlbJ3BvcnQnXSA9IGl
zc2V0KCRwcm94eVsncG9ydCddKSA/ICRwcm94eVsncG9ydCddIDogbnVsbDsKCQkkdGhpcy0+cHJveHkgPS
AkcHJveHk7CgkJcmV0dXJuICR0aGlzOwoJfQoKCS8qKgoJICogU2V0IHRoZSBpbnRlbmRlZCBzdGFydGluZ
yBzZWVrIHBvc2l0aW9uLgoJICoKCSAqIEBwYXJhbSBpbnRlZ2VyICRwb3NpdGlvbiAoUmVxdWlyZWQpIFRo
ZSBieXRlLXBvc2l0aW9uIG9mIHRoZSBzdHJlYW0gdG8gYmVnaW4gcmVhZGluZyBmcm9tLgoJICogQHJldHV
ybiAkdGhpcyBBIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBpbnN0YW5jZS4KCSAqLwoJcHVibGljIGZ1bm
N0aW9uIHNldF9zZWVrX3Bvc2l0aW9uKCRwb3NpdGlvbikKCXsKCQkkdGhpcy0+c2Vla19wb3NpdGlvbiA9I
Glzc2V0KCRwb3NpdGlvbikgPyAoaW50ZWdlcikgJHBvc2l0aW9uIDogbnVsbDsKCgkJcmV0dXJuICR0aGlz
OwoJfQoKCS8qKgoJICogUmVnaXN0ZXIgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBleGVjdXRlIHdoZW5ldmV
yIGEgZGF0YSBzdHJlYW0gaXMgcmVhZCBmcm9tIHVzaW5nCgkgKiA8Q0ZSZXF1ZXN0OjpzdHJlYW1pbmdfcm
VhZF9jYWxsYmFjaygpPi4KCSAqCgkgKiBUaGUgdXNlci1kZWZpbmVkIGNhbGxiYWNrIGZ1bmN0aW9uIHNob
3VsZCBhY2NlcHQgdGhyZWUgYXJndW1lbnRzOgoJICoKCSAqIDx1bD4KCSAqIAk8bGk+PGNvZGU+JGN1cmxf
aGFuZGxlPC9jb2RlPiAtIDxjb2RlPnJlc291cmNlPC9jb2RlPiAtIFJlcXVpcmVkIC0gVGhlIGNVUkwgaGF
uZGxlIHJlc291cmNlIHRoYXQgcmVwcmVzZW50cyB0aGUgaW4tcHJvZ3Jlc3MgdHJhbnNmZXIuPC9saT4KCS
AqIAk8bGk+PGNvZGU+JGZpbGVfaGFuZGxlPC9jb2RlPiAtIDxjb2RlPnJlc291cmNlPC9jb2RlPiAtIFJlc
XVpcmVkIC0gVGhlIGZpbGUgaGFuZGxlIHJlc291cmNlIHRoYXQgcmVwcmVzZW50cyB0aGUgZmlsZSBvbiB0
aGUgbG9jYWwgZmlsZSBzeXN0ZW0uPC9saT4KCSAqIAk8bGk+PGNvZGU+JGxlbmd0aDwvY29kZT4gLSA8Y29
kZT5pbnRlZ2VyPC9jb2RlPiAtIFJlcXVpcmVkIC0gVGhlIGxlbmd0aCBpbiBraWxvYnl0ZXMgb2YgdGhlIG
RhdGEgY2h1bmsgdGhhdCB3YXMgdHJhbnNmZXJyZWQuPC9saT4KCSAqIDwvdWw+CgkgKgoJICogQHBhcmFtI
HN0cmluZ3xhcnJheXxmdW5jdGlvbiAkY2FsbGJhY2sgKFJlcXVpcmVkKSBUaGUgY2FsbGJhY2sgZnVuY3Rp
b24gaXMgY2FsbGVkIGJ5IDxwaHA6Y2FsbF91c2VyX2Z1bmMoKT4sIHNvIHlvdSBjYW4gcGFzcyB0aGUgZm9
sbG93aW5nIHZhbHVlczogPHVsPgoJICogCTxsaT5UaGUgbmFtZSBvZiBhIGdsb2JhbCBmdW5jdGlvbiB0by
BleGVjdXRlLCBwYXNzZWQgYXMgYSBzdHJpbmcuPC9saT4KCSAqIAk8bGk+QSBtZXRob2QgdG8gZXhlY3V0Z
SwgcGFzc2VkIGFzIDxjb2RlPmFycmF5KCdDbGFzc05hbWUnLCAnTWV0aG9kTmFtZScpPC9jb2RlPi48L2xp
PgoJICogCTxsaT5BbiBhbm9ueW1vdXMgZnVuY3Rpb24gKFBIUCA1LjMrKS48L2xpPjwvdWw+CgkgKiBAcmV
0dXJuICR0aGlzIEEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGluc3RhbmNlLgoJICovCglwdWJsaWMgZn
VuY3Rpb24gcmVnaXN0ZXJfc3RyZWFtaW5nX3JlYWRfY2FsbGJhY2soJGNhbGxiYWNrKQoJewoJCSR0aGlzL
T5yZWdpc3RlcmVkX3N0cmVhbWluZ19yZWFkX2NhbGxiYWNrID0gJGNhbGxiYWNrOwoKCQlyZXR1cm4gJHRo
aXM7Cgl9CgoJLyoqCgkgKiBSZWdpc3RlciBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGV4ZWN1dGUgd2hlbmV
2ZXIgYSBkYXRhIHN0cmVhbSBpcyB3cml0dGVuIHRvIHVzaW5nCgkgKiA8Q0ZSZXF1ZXN0OjpzdHJlYW1pbm
dfd3JpdGVfY2FsbGJhY2soKT4uCgkgKgoJICogVGhlIHVzZXItZGVmaW5lZCBjYWxsYmFjayBmdW5jdGlvb
iBzaG91bGQgYWNjZXB0IHR3byBhcmd1bWVudHM6CgkgKgoJICogPHVsPgoJICogCTxsaT48Y29kZT4kY3Vy
bF9oYW5kbGU8L2NvZGU+IC0gPGNvZGU+cmVzb3VyY2U8L2NvZGU+IC0gUmVxdWlyZWQgLSBUaGUgY1VSTCB
oYW5kbGUgcmVzb3VyY2UgdGhhdCByZXByZXNlbnRzIHRoZSBpbi1wcm9ncmVzcyB0cmFuc2Zlci48L2xpPg
oJICogCTxsaT48Y29kZT4kbGVuZ3RoPC9jb2RlPiAtIDxjb2RlPmludGVnZXI8L2NvZGU+IC0gUmVxdWlyZ
WQgLSBUaGUgbGVuZ3RoIGluIGtpbG9ieXRlcyBvZiB0aGUgZGF0YSBjaHVuayB0aGF0IHdhcyB0cmFuc2Zl
cnJlZC48L2xpPgoJICogPC91bD4KCSAqCgkgKiBAcGFyYW0gc3RyaW5nfGFycmF5fGZ1bmN0aW9uICRjYWx
sYmFjayAoUmVxdWlyZWQpIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgPHBocDpjYWxsX3
VzZXJfZnVuYygpPiwgc28geW91IGNhbiBwYXNzIHRoZSBmb2xsb3dpbmcgdmFsdWVzOiA8dWw+CgkgKiAJP
GxpPlRoZSBuYW1lIG9mIGEgZ2xvYmFsIGZ1bmN0aW9uIHRvIGV4ZWN1dGUsIHBhc3NlZCBhcyBhIHN0cmlu
Zy48L2xpPgoJICogCTxsaT5BIG1ldGhvZCB0byBleGVjdXRlLCBwYXNzZWQgYXMgPGNvZGU+YXJyYXkoJ0N
sYXNzTmFtZScsICdNZXRob2ROYW1lJyk8L2NvZGU+LjwvbGk+CgkgKiAJPGxpPkFuIGFub255bW91cyBmdW
5jdGlvbiAoUEhQIDUuMyspLjwvbGk+PC91bD4KCSAqIEByZXR1cm4gJHRoaXMgQSByZWZlcmVuY2UgdG8gd
GhlIGN1cnJlbnQgaW5zdGFuY2UuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiByZWdpc3Rlcl9zdHJlYW1pbmdf
d3JpdGVfY2FsbGJhY2soJGNhbGxiYWNrKQoJewoJCSR0aGlzLT5yZWdpc3RlcmVkX3N0cmVhbWluZ193cml
0ZV9jYWxsYmFjayA9ICRjYWxsYmFjazsKCgkJcmV0dXJuICR0aGlzOwoJfQoKCgkvKiUqKioqKioqKioqKi
oqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqK
ioqKioqKioqKioqKioqKiolKi8KCS8vIFBSRVBBUkUsIFNFTkQsIEFORCBQUk9DRVNTIFJFUVVFU1QKCgkv
KioKCSAqIEEgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBpbnZva2VkIGJ5IGNVUkwgZm9yIHN0cmVhbWl
uZyB1cC4KCSAqCgkgKiBAcGFyYW0gcmVzb3VyY2UgJGN1cmxfaGFuZGxlIChSZXF1aXJlZCkgVGhlIGNVUk
wgaGFuZGxlIGZvciB0aGUgcmVxdWVzdC4KCSAqIEBwYXJhbSByZXNvdXJjZSAkZmlsZV9oYW5kbGUgKFJlc
XVpcmVkKSBUaGUgb3BlbiBmaWxlIGhhbmRsZSByZXNvdXJjZS4KCSAqIEBwYXJhbSBpbnRlZ2VyICRsZW5n
dGggKFJlcXVpcmVkKSBUaGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVhZC4KCSAqIEByZXR1cm4
gYmluYXJ5IEJpbmFyeSBkYXRhIGZyb20gYSBzdHJlYW0uCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBzdHJlYW
1pbmdfcmVhZF9jYWxsYmFjaygkY3VybF9oYW5kbGUsICRmaWxlX2hhbmRsZSwgJGxlbmd0aCkKCXsKCQkvL
yBPbmNlIHdlJ3ZlIHNlbnQgYXMgbXVjaCBhcyB3ZSdyZSBzdXBwb3NlZCB0byBzZW5kLi4uCgkJaWYgKCR0
aGlzLT5yZWFkX3N0cmVhbV9yZWFkID49ICR0aGlzLT5yZWFkX3N0cmVhbV9zaXplKQoJCXsKCQkJLy8gU2V
uZCBFT0YKCQkJcmV0dXJuICcnOwoJCX0KCgkJLy8gSWYgd2UncmUgYXQgdGhlIGJlZ2lubmluZyBvZiBhbi
B1cGxvYWQgYW5kIG5lZWQgdG8gc2Vlay4uLgoJCWlmICgkdGhpcy0+cmVhZF9zdHJlYW1fcmVhZCA9PSAwI
CYmIGlzc2V0KCR0aGlzLT5zZWVrX3Bvc2l0aW9uKSAmJiAkdGhpcy0+c2Vla19wb3NpdGlvbiAhPT0gZnRl
bGwoJHRoaXMtPnJlYWRfc3RyZWFtKSkKCQl7CgkJCWlmIChmc2VlaygkdGhpcy0+cmVhZF9zdHJlYW0sICR
0aGlzLT5zZWVrX3Bvc2l0aW9uKSAhPT0gMCkKCQkJewoJCQkJdGhyb3cgbmV3IFJlcXVlc3RDb3JlX0V4Y2
VwdGlvbignVGhlIHN0cmVhbSBkb2VzIG5vdCBzdXBwb3J0IHNlZWtpbmcgYW5kIGlzIGVpdGhlciBub3QgY
XQgdGhlIHJlcXVlc3RlZCBwb3NpdGlvbiBvciB0aGUgcG9zaXRpb24gaXMgdW5rbm93bi4nKTsKCQkJfQoJ
CX0KCgkJJHJlYWQgPSBmcmVhZCgkdGhpcy0+cmVhZF9zdHJlYW0sIG1pbigkdGhpcy0+cmVhZF9zdHJlYW1
fc2l6ZSAtICR0aGlzLT5yZWFkX3N0cmVhbV9yZW
FkLCAkbGVuZ3RoKSk7IC8vIFJlbWFpbmluZyB1cGxvYWQgZGF0YSBvciBjVVJMJ3MgcmVxdWVzdGVkIGNod
W5rIHNpemUKCQkkdGhpcy0+cmVhZF9zdHJlYW1fcmVhZCArPSBzdHJsZW4oJHJlYWQpOwoKCQkkb3V0ID0g
JHJlYWQgPT09IGZhbHNlID8gJycgOiAkcmVhZDsKCgkJLy8gRXhlY3V0ZSBjYWxsYmFjayBmdW5jdGlvbgo
JCWlmICgkdGhpcy0+cmVnaXN0ZXJlZF9zdHJlYW1pbmdfcmVhZF9jYWxsYmFjaykKCQl7CgkJCWNhbGxfdX
Nlcl9mdW5jKCR0aGlzLT5yZWdpc3RlcmVkX3N0cmVhbWluZ19yZWFkX2NhbGxiYWNrLCAkY3VybF9oYW5kb
GUsICRmaWxlX2hhbmRsZSwgJG91dCk7CgkJfQoKCQlyZXR1cm4gJG91dDsKCX0KCgkvKioKCSAqIEEgY2Fs
bGJhY2sgZnVuY3Rpb24gdGhhdCBpcyBpbnZva2VkIGJ5IGNVUkwgZm9yIHN0cmVhbWluZyBkb3duLgoJICo
KCSAqIEBwYXJhbSByZXNvdXJjZSAkY3VybF9oYW5kbGUgKFJlcXVpcmVkKSBUaGUgY1VSTCBoYW5kbGUgZm
9yIHRoZSByZXF1ZXN0LgoJICogQHBhcmFtIGJpbmFyeSAkZGF0YSAoUmVxdWlyZWQpIFRoZSBkYXRhIHRvI
HdyaXRlLgoJICogQHJldHVybiBpbnRlZ2VyIFRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4KCSAqLwoJ
cHVibGljIGZ1bmN0aW9uIHN0cmVhbWluZ193cml0ZV9jYWxsYmFjaygkY3VybF9oYW5kbGUsICRkYXRhKQo
JewoJCSRsZW5ndGggPSBzdHJsZW4oJGRhdGEpOwoJCSR3cml0dGVuX3RvdGFsID0gMDsKCQkkd3JpdHRlbl
9sYXN0ID0gMDsKCgkJd2hpbGUgKCR3cml0dGVuX3RvdGFsIDwgJGxlbmd0aCkKCQl7CgkJCSR3cml0dGVuX
2xhc3QgPSBmd3JpdGUoJHRoaXMtPndyaXRlX3N0cmVhbSwgc3Vic3RyKCRkYXRhLCAkd3JpdHRlbl90b3Rh
bCkpOwoKCQkJaWYgKCR3cml0dGVuX2xhc3QgPT09IGZhbHNlKQoJCQl7CgkJCQlyZXR1cm4gJHdyaXR0ZW5
fdG90YWw7CgkJCX0KCgkJCSR3cml0dGVuX3RvdGFsICs9ICR3cml0dGVuX2xhc3Q7CgkJfQoKCQkvLyBFeG
VjdXRlIGNhbGxiYWNrIGZ1bmN0aW9uCgkJaWYgKCR0aGlzLT5yZWdpc3RlcmVkX3N0cmVhbWluZ193cml0Z
V9jYWxsYmFjaykKCQl7CgkJCWNhbGxfdXNlcl9mdW5jKCR0aGlzLT5yZWdpc3RlcmVkX3N0cmVhbWluZ193
cml0ZV9jYWxsYmFjaywgJGN1cmxfaGFuZGxlLCAkd3JpdHRlbl90b3RhbCk7CgkJfQoKCQlyZXR1cm4gJHd
yaXR0ZW5fdG90YWw7Cgl9CgoJLyoqCgkgKiBQcmVwYXJlcyBhbmQgYWRkcyB0aGUgZGV0YWlscyBvZiB0aG
UgY1VSTCByZXF1ZXN0LiBUaGlzIGNhbiBiZSBwYXNzZWQgYWxvbmcgdG8gYSA8cGhwOmN1cmxfbXVsdGlfZ
XhlYygpPgoJICogZnVuY3Rpb24uCgkgKgoJICogQHJldHVybiByZXNvdXJjZSBUaGUgaGFuZGxlIGZvciB0
aGUgY1VSTCBvYmplY3QuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBwcmVwX3JlcXVlc3QoKQoJewoJCSRjdXJ
sX2hhbmRsZSA9IGN1cmxfaW5pdCgpOwoKCQkvLyBTZXQgZGVmYXVsdCBvcHRpb25zLgoJCWN1cmxfc2V0b3
B0KCRjdXJsX2hhbmRsZSwgQ1VSTE9QVF9VUkwsICR0aGlzLT5yZXF1ZXN0X3VybCk7CgkJY3VybF9zZXRvc
HQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX0ZJTEVUSU1FLCB0cnVlKTsKCQljdXJsX3NldG9wdCgkY3VybF9o
YW5kbGUsIENVUkxPUFRfRlJFU0hfQ09OTkVDVCwgZmFsc2UpOwoJCWlmICggZGVmaW5lZCggJ0NVUkxPUFR
fQ0xPU0VQT0xJQ1knICkgJiYgaXNfbG9uZyggQ1VSTE9QVF9DTE9TRVBPTElDWSApICkgeyAvLyBOb3QgYX
ZhaWxhYmxlIG9uIHNvbWUgc3lzdGVtcyByZXN1bHRpbmcgaW4gd2FybmluZy4gU2VlIHplbmRlc2sgdGlja
2V0IDE1OTI2LiBNYXkgbm90IGV2ZW4gYmUgZGVmaW5lZCBpbiA1LjYrLgoJCQljdXJsX3NldG9wdCgkY3Vy
bF9oYW5kbGUsIENVUkxPUFRfQ0xPU0VQT0xJQ1ksIENVUkxDTE9TRVBPTElDWV9MRUFTVF9SRUNFTlRMWV9
VU0VEKTsKCQl9CgkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX01BWFJFRElSUywgNSk7Cg
kJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX0hFQURFUiwgdHJ1ZSk7CgkJY3VybF9zZXRvc
HQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKCQljdXJsX3NldG9wdCgk
Y3VybF9oYW5kbGUsIENVUkxPUFRfVElNRU9VVCwgNTE4NDAwMCk7CgkJY3VybF9zZXRvcHQoJGN1cmxfaGF
uZGxlLCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAxMjApOwoJCWN1cmxfc2V0b3B0KCRjdXJsX2hhbmRsZS
wgQ1VSTE9QVF9OT1NJR05BTCwgdHJ1ZSk7CgkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX
1JFRkVSRVIsICR0aGlzLT5yZXF1ZXN0X3VybCk7CgkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJM
T1BUX1VTRVJBR0VOVCwgJHRoaXMtPnVzZXJhZ2VudCk7CgkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCB
DVVJMT1BUX1JFQURGVU5DVElPTiwgYXJyYXkoJHRoaXMsICdzdHJlYW1pbmdfcmVhZF9jYWxsYmFjaycpKT
sKCgkJLy8gVmVyaWZpY2F0aW9uIG9mIHRoZSBTU0wgY2VydAoJCWlmICgkdGhpcy0+c3NsX3ZlcmlmaWNhd
GlvbikKCQl7CgkJCWN1cmxfc2V0b3B0KCRjdXJsX2hhbmRsZSwgQ1VSTE9QVF9TU0xfVkVSSUZZUEVFUiwg
dHJ1ZSk7CgkJCWN1cmxfc2V0b3B0KCRjdXJsX2hhbmRsZSwgQ1VSTE9QVF9TU0xfVkVSSUZZSE9TVCwgMik
7CgkJfQoJCWVsc2UKCQl7CgkJCWN1cmxfc2V0b3B0KCRjdXJsX2hhbmRsZSwgQ1VSTE9QVF9TU0xfVkVSSU
ZZUEVFUiwgZmFsc2UpOwoJCQljdXJsX3NldG9wdCgkY3VybF9oYW5kbGUsIENVUkxPUFRfU1NMX1ZFUklGW
UhPU1QsIGZhbHNlKTsKCQl9CgoJCS8vIGNobW9kIHRoZSBmaWxlIGFzIDA3NTUKCQlpZiAoJHRoaXMtPmNh
Y2VydF9sb2NhdGlvbiA9PT0gdHJ1ZSkKCQl7CgkJCWN1cmxfc2V0b3B0KCRjdXJsX2hhbmRsZSwgQ1VSTE9
QVF9DQUlORk8sIGRpcm5hbWUoX19GSUxFX18pIC4gJy9jYWNlcnQucGVtJyk7CgkJfQoJCWVsc2VpZiAoaX
Nfc3RyaW5nKCR0aGlzLT5jYWNlcnRfbG9jYXRpb24pKQoJCXsKCQkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZ
GxlLCBDVVJMT1BUX0NBSU5GTywgJHRoaXMtPmNhY2VydF9sb2NhdGlvbik7CgkJfQoKCQkvLyBEZWJ1ZyBt
b2RlCgkJaWYgKCR0aGlzLT5kZWJ1Z19tb2RlKQoJCXsKCQkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCB
DVVJMT1BUX1ZFUkJPU0UsIHRydWUpOwoJCX0KCgkJLy8gSGFuZGxlIG9wZW5fYmFzZWRpciAmIHNhZmUgbW
9kZQoJCWlmICghaW5pX2dldCgnc2FmZV9tb2RlJykgJiYgIWluaV9nZXQoJ29wZW5fYmFzZWRpcicpKQoJC
XsKCQkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX0ZPTExPV0xPQ0FUSU9OLCB0cnVlKTsK
CQl9CgoJCS8vIEVuYWJsZSBhIHByb3h5IGNvbm5lY3Rpb24gaWYgcmVxdWVzdGVkLgoJCWlmICgkdGhpcy0
+cHJveHkpCgkJewoJCQljdXJsX3NldG9wdCgkY3VybF9oYW5kbGUsIENVUkxPUFRfSFRUUFBST1hZVFVOTk
VMLCB0cnVlKTsKCgkJCSRob3N0ID0gJHRoaXMtPnByb3h5Wydob3N0J107CgkJCSRob3N0IC49ICgkdGhpc
y0+cHJveHlbJ3BvcnQnXSkgPyAnOicgLiAkdGhpcy0+cHJveHlbJ3BvcnQnXSA6ICcnOwoJCQljdXJsX3Nl
dG9wdCgkY3VybF9oYW5kbGUsIENVUkxPUFRfUFJPWFksICRob3N0KTsKCgkJCWlmIChpc3NldCgkdGhpcy0
+cHJveHlbJ3VzZXInXSkgJiYgaXNzZXQoJHRoaXMtPnByb3h5WydwYXNzJ10pKQoJCQl7CgkJCQljdXJsX3
NldG9wdCgkY3VybF9oYW5kbGUsIENVUkxPUFRfUFJPWFlVU0VSUFdELCAkdGhpcy0+cHJveHlbJ3VzZXInX
SAuICc6JyAuICR0aGlzLT5wcm94eVsncGFzcyddKTsKCQkJfQoJCX0KCgkJLy8gU2V0IGNyZWRlbnRpYWxz
IGZvciBIVFRQIEJhc2ljL0RpZ2VzdCBBdXRoZW50aWNhdGlvbi4KCQlpZiAoJHRoaXMtPnVzZXJuYW1lICY
mICR0aGlzLT5wYXNzd29yZCkKCQl7CgkJCWN1cmxfc2V0b3B0KCRjdXJsX2hhbmRsZSwgQ1VSTE9QVF9IVF
RQQVVUSCwgQ1VSTEFVVEhfQU5ZKTsKCQkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX1VTR
VJQV0QsICR0aGlzLT51c2VybmFtZSAuICc6JyAuICR0aGlzLT5wYXNzd29yZCk7CgkJfQoKCQkvLyBIYW5k
bGUgdGhlIGVuY29kaW5nIGlmIHdlIGNhbi4KCQlpZiAoJHRoaXMtPnVzZV9nemlwX2VuY29uZGluZyAmJiB
leHRlbnNpb25fbG9hZGVkKCd6bGliJykpCgkJewoJCQljdXJsX3NldG9wdCgkY3VybF9oYW5kbGUsIENVUk
xPUFRfRU5DT0RJTkcsICdnemlwLCBkZWZsYXRlJyk7CgkJfQoKCQkvLyBQcm9jZXNzIGN1c3RvbSBoZWFkZ
XJzCgkJaWYgKGlzc2V0KCR0aGlzLT5yZXF1ZXN0X2hlYWRlcnMpICYmIGNvdW50KCR0aGlzLT5yZXF1ZXN0
X2hlYWRlcnMpKQoJCXsKCQkJJHRlbXBfaGVhZGVycyA9IGFycmF5KCk7CgoJCQlpZiAoIWFycmF5X2tleV9
leGlzdHMoJ0V4cGVjdCcsICR0aGlzLT5yZXF1ZXN0X2hlYWRlcnMpKQoJCQl7CgkJCQkkdGhpcy0+cmVxdW
VzdF9oZWFkZXJzWydFeHBlY3QnXSA9ICcnOwoJCQl9CgoJCQlmb3JlYWNoICgkdGhpcy0+cmVxdWVzdF9oZ
WFkZXJzIGFzICRrID0+ICR2KQoJCQl7CgkJCQkkdGVtcF9oZWFkZXJzW10gPSAkayAuICc6ICcgLiAkdjsK
CQkJfQoKCQkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX0hUVFBIRUFERVIsICR0ZW1wX2h
lYWRlcnMpOwoJCX0KCgkJc3dpdGNoICgkdGhpcy0+bWV0aG9kKQoJCXsKCQkJY2FzZSBzZWxmOjpIVFRQX1
BVVDoKCQkJCWN1cmxfc2V0b3B0KCRjdXJsX2hhbmRsZSwgQ1VSTE9QVF9DVVNUT01SRVFVRVNULCAnUFVUJ
yk7CgkJCQlpZiAoaXNzZXQoJHRoaXMtPnJlYWRfc3RyZWFtKSkKCQkJCXsKCQkJCQlpZiAoIWlzc2V0KCR0
aGlzLT5yZWFkX3N0cmVhbV9zaXplKSB8fCAkdGhpcy0+cmVhZF9zdHJlYW1fc2l6ZSA8IDApCgkJCQkJewo
JCQkJCQl0aHJvdyBuZXcgUmVxdWVzdENvcmVfRXhjZXB0aW9uKCdUaGUgc3RyZWFtIHNpemUgZm9yIHRoZS
BzdHJlYW1pbmcgdXBsb2FkIGNhbm5vdCBiZSBkZXRlcm1pbmVkLicpOwoJCQkJCX0KCgkJCQkJY3VybF9zZ
XRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX0lORklMRVNJWkUsICR0aGlzLT5yZWFkX3N0cmVhbV9zaXpl
KTsKCQkJCQljdXJsX3NldG9wdCgkY3VybF9oYW5kbGUsIENVUkxPUFRfVVBMT0FELCB0cnVlKTsKCQkJCX0
KCQkJCWVsc2UKCQkJCXsKCQkJCQljdXJsX3NldG9wdCgkY3VybF9oYW5kbGUsIENVUkxPUFRfUE9TVEZJRU
xEUywgJHRoaXMtPnJlcXVlc3RfYm9keSk7CgkJCQl9CgkJCQlicmVhazsKCgkJCWNhc2Ugc2VsZjo6SFRUU
F9QT1NUOgoJCQkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX1BPU1QsIHRydWUpOwoJCQkJ
Y3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX1BPU1RGSUVMRFMsICR0aGlzLT5yZXF1ZXN0X2J
vZHkpOwoJCQkJYnJlYWs7CgoJCQljYXNlIHNlbGY6OkhUVFBfSEVBRDoKCQkJCWN1cmxfc2V0b3B0KCRjdX
JsX2hhbmRsZSwgQ1VSTE9QVF9DVVNUT01SRVFVRVNULCBzZWxmOjpIVFRQX0hFQUQpOwoJCQkJY3VybF9zZ
XRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX05PQk9EWSwgMSk7CgkJCQlicmVhazsKCgkJCWRlZmF1bHQ6
IC8vIEFzc3VtZWQgR0VUCgkJCQljdXJsX3NldG9wdCgkY3VybF9oYW5kbGUsIENVUkxPUFRfQ1VTVE9NUkV
RVUVTVCwgJHRoaXMtPm1ldGhvZCk7CgkJCQlpZiAoaXNzZXQoJHRoaXMtPndyaXRlX3N0cmVhbSkpCgkJCQ
l7CgkJCQkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGxlLCBDVVJMT1BUX1dSSVRFRlVOQ1RJT04sIGFycmF5K
CR0aGlzLCAnc3RyZWFtaW5nX3dyaXRlX2NhbGxiYWNrJykpOwoJCQkJCWN1cmxfc2V0b3B0KCRjdXJsX2hh
bmRsZSwgQ1VSTE9QVF9IRUFERVIsIGZhbHNlKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQljdXJsX3N
ldG9wdCgkY3VybF9oYW5kbGUsIENVUkxPUFRfUE9TVEZJRUxEUywgJHRoaXMtPnJlcXVlc3RfYm9keSk7Cg
kJCQl9CgkJCQlicmVhazsKCQl9CgoJCS8vIE1lcmdlIGluIHRoZSBDVVJMT1BUcwoJCWlmIChpc3NldCgkd
Ghpcy0+Y3VybG9wdHMpICYmIHNpemVvZigkdGhpcy0+Y3VybG9wdHMpID4gMCkKCQl7CgkJCWZvcmVhY2gg
KCR0aGlzLT5jdXJsb3B0cyBhcyAkayA9PiAkdikKCQkJewoJCQkJY3VybF9zZXRvcHQoJGN1cmxfaGFuZGx
lLCAkaywgJHYpOwoJCQl9CgkJfQoKCQlyZXR1cm4gJGN1cmxfaGFuZGxlOwoJfQoKCS8qKgoJICogVGFrZS
B0aGUgcG9zdC1wcm9jZXNzZWQgY1VSTCBkYXRhIGFuZCBicmVhayBpdCBkb3duIGludG8gdXNlZnVsIGhlY
WRlci9ib2R5L2luZm8gY2h1bmtzLiBVc2VzIHRoZQoJICogZGF0YSBzdG9yZWQgaW4gdGhlIGBjdXJsX2hh
bmRsZWAgYW5kIGByZXNwb25zZWAgcHJvcGVydGllcyB1bmxlc3MgcmVwbGFjZW1lbnQgZGF0YSBpcyBwYXN
zZWQgaW4gdmlhCgkgKiBwYXJhbWV0ZXJzLgoJICoKCSAqIEBwYXJhbSByZXNvdXJjZSAkY3VybF9oYW5kbG
UgKE9wdGlvbmFsKSBUaGUgcmVmZXJlbmNlIHRvIHRoZSBhbHJlYWR5IGV4ZWN1dGVkIGNVUkwgcmVxdWVzd
C4KCSAqIEBwYXJhbSBzdHJpbmcgJHJlc3BvbnNlIChPcHRpb25hbCkgVGhlIGFjdHVhbCByZXNwb25zZSBj
b250ZW50IGl0c2VsZiB0aGF0IG5lZWRzIHRvIGJlIHBhcnNlZC4KCSAqIEByZXR1cm4gUmVzcG9uc2VDb3J
lIEEgPFJlc3BvbnNlQ29yZT4gb2JqZWN0IGNvbnRhaW5pbmcgYSBwYXJzZWQgSFRUUCByZXNwb25zZS4KCS
AqLwoJcHVibGljIGZ1bmN0aW9uIHByb2Nlc3NfcmVzcG9uc2UoJGN1cmxfaGFuZGxlID0gbnVsbCwgJHJlc
3BvbnNlID0gbnVsbCkKCXsKCQkvLyBBY2NlcHQgYSBjdXN0b20gb25lIGlmIGl0J3MgcGFzc2VkLgoJCWlm
ICgkY3VybF9oYW5kbGUgJiYgJHJlc3BvbnNlKQoJCXsKCQkJJHRoaXMtPmN1cmxfaGFuZGxlID0gJGN1cmx
faGFuZGxlOwoJCQkkdGhpcy0+cmVzcG9uc2UgPSAkcmVzcG9uc2U7CgkJfQoKCQkvLyBBcyBsb25nIGFzIH
RoaXMgY2FtZSBiYWNrIGFzIGEgdmFsaWQgcmVzb3VyY2UuLi4KCQlpZiAoaXNfcmVzb3VyY2UoJHRoaXMtP
mN1cmxfaGFuZGxlKSkKCQl7CgkJCS8vIERldGVybWluZSB3aGF0J3Mgd2hhdC4KCQkJJGhlYWRlcl9zaXpl
ID0gY3VybF9nZXRpbmZvKCR0aGlzLT5jdXJsX2hhbmRsZSwgQ1VSTElORk9fSEVBREVSX1NJWkUpOwoJCQk
kdGhpcy0+cmVzcG9uc2VfaGVhZGVycyA9IHN1YnN0cigkdGhpcy0+cmVzcG9uc2UsIDAsICRoZWFkZXJfc2
l6ZSk7CgkJCSR0aGlzLT5yZXNwb25zZV9ib2R5ID0gc3Vic3RyKCR0aGlzLT5yZXNwb25zZSwgJGhlYWRlc
l9zaXplKTsKCQkJJHRoaXMtPnJlc3BvbnNlX2NvZGUgPSBjdXJsX2dldGluZm8oJHRoaXMtPmN1cmxfaGFu
ZGxlLCBDVVJMSU5GT19IVFRQX0NPREUpOwoJCQkkdGhpcy0+cmVzcG9uc2VfaW5mbyA9IGN1cmxfZ2V0aW5
mbygkdGhpcy0+Y3VybF9oYW5kbGUpOwoKCQkJLy8gUGFyc2Ugb3V0IHRoZSBoZWFkZXJzCgkJCSR0aGlzLT
5yZXNwb25zZV9oZWFkZXJzID0gZXhwbG9kZSgiX
HJcblxyXG4iLCB0cmltKCR0aGlzLT5yZXNwb25zZV9oZWFkZXJzKSk7CgkJCSR0aGlzLT5yZXNwb25zZV9o
ZWFkZXJzID0gYXJyYXlfcG9wKCR0aGlzLT5yZXNwb25zZV9oZWFkZXJzKTsKCQkJJHRoaXMtPnJlc3BvbnN
lX2hlYWRlcnMgPSBleHBsb2RlKCJcclxuIiwgJHRoaXMtPnJlc3BvbnNlX2hlYWRlcnMpOwoJCQlhcnJheV
9zaGlmdCgkdGhpcy0+cmVzcG9uc2VfaGVhZGVycyk7CgoJCQkvLyBMb29wIHRocm91Z2ggYW5kIHNwbGl0I
HVwIHRoZSBoZWFkZXJzLgoJCQkkaGVhZGVyX2Fzc29jID0gYXJyYXkoKTsKCQkJZm9yZWFjaCAoJHRoaXMt
PnJlc3BvbnNlX2hlYWRlcnMgYXMgJGhlYWRlcikKCQkJewoJCQkJJGt2ID0gZXhwbG9kZSgnOiAnLCAkaGV
hZGVyKTsKCQkJCSRoZWFkZXJfYXNzb2Nbc3RydG9sb3dlcigka3ZbMF0pXSA9ICRrdlsxXTsKCQkJfQoKCQ
kJLy8gUmVzZXQgdGhlIGhlYWRlcnMgdG8gdGhlIGFwcHJvcHJpYXRlIHByb3BlcnR5LgoJCQkkdGhpcy0+c
mVzcG9uc2VfaGVhZGVycyA9ICRoZWFkZXJfYXNzb2M7CgkJCSR0aGlzLT5yZXNwb25zZV9oZWFkZXJzWydf
aW5mbyddID0gJHRoaXMtPnJlc3BvbnNlX2luZm87CgkJCSR0aGlzLT5yZXNwb25zZV9oZWFkZXJzWydfaW5
mbyddWydtZXRob2QnXSA9ICR0aGlzLT5tZXRob2Q7CgoJCQlpZiAoJGN1cmxfaGFuZGxlICYmICRyZXNwb2
5zZSkKCQkJewoJCQkJcmV0dXJuIG5ldyAkdGhpcy0+cmVzcG9uc2VfY2xhc3MoJHRoaXMtPnJlc3BvbnNlX
2hlYWRlcnMsICR0aGlzLT5yZXNwb25zZV9ib2R5LCAkdGhpcy0+cmVzcG9uc2VfY29kZSwgJHRoaXMtPmN1
cmxfaGFuZGxlKTsKCQkJfQoJCX0KCgkJLy8gUmV0dXJuIGZhbHNlCgkJcmV0dXJuIGZhbHNlOwoJfQoKCS8
qKgoJICogU2VuZHMgdGhlIHJlcXVlc3QsIGNhbGxpbmcgbmVjZXNzYXJ5IHV0aWxpdHkgZnVuY3Rpb25zIH
RvIHVwZGF0ZSBidWlsdC1pbiBwcm9wZXJ0aWVzLgoJICoKCSAqIEBwYXJhbSBib29sZWFuICRwYXJzZSAoT
3B0aW9uYWwpIFdoZXRoZXIgdG8gcGFyc2UgdGhlIHJlc3BvbnNlIHdpdGggUmVzcG9uc2VDb3JlIG9yIG5v
dC4KCSAqIEByZXR1cm4gc3RyaW5nIFRoZSByZXN1bHRpbmcgdW5wYXJzZWQgZGF0YSBmcm9tIHRoZSByZXF
1ZXN0LgoJICovCglwdWJsaWMgZnVuY3Rpb24gc2VuZF9yZXF1ZXN0KCRwYXJzZSA9IGZhbHNlKQoJewoJCW
lmICgkdGhpcy0+YWxsb3dfc2V0X3RpbWVfbGltaXQpCgkJewoJCQlzZXRfdGltZV9saW1pdCgwKTsKCQl9C
goJCSRjdXJsX2hhbmRsZSA9ICR0aGlzLT5wcmVwX3JlcXVlc3QoKTsKCQkkdGhpcy0+cmVzcG9uc2UgPSBj
dXJsX2V4ZWMoJGN1cmxfaGFuZGxlKTsKCgkJaWYgKCR0aGlzLT5yZXNwb25zZSA9PT0gZmFsc2UpCgkJewo
JCQl0aHJvdyBuZXcgY1VSTF9FeGNlcHRpb24oJ2NVUkwgcmVzb3VyY2U6ICcgLiAoc3RyaW5nKSAkY3VybF
9oYW5kbGUgLiAnOyBjVVJMIGVycm9yOiAnIC4gY3VybF9lcnJvcigkY3VybF9oYW5kbGUpIC4gJyAoY1VST
CBlcnJvciBjb2RlICcgLiBjdXJsX2Vycm5vKCRjdXJsX2hhbmRsZSkgLiAnKS4gU2VlIGh0dHA6Ly9jdXJs
LmhheHguc2UvbGliY3VybC9jL2xpYmN1cmwtZXJyb3JzLmh0bWwgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIGV
ycm9yIGNvZGVzLicpOwoJCX0KCgkJJHBhcnNlZF9yZXNwb25zZSA9ICR0aGlzLT5wcm9jZXNzX3Jlc3Bvbn
NlKCRjdXJsX2hhbmRsZSwgJHRoaXMtPnJlc3BvbnNlKTsKCgkJY3VybF9jbG9zZSgkY3VybF9oYW5kbGUpO
woKCQlpZiAoJHBhcnNlKQoJCXsKCQkJcmV0dXJuICRwYXJzZWRfcmVzcG9uc2U7CgkJfQoKCQlyZXR1cm4g
JHRoaXMtPnJlc3BvbnNlOwoJfQoKCS8qKgoJICogU2VuZHMgdGhlIHJlcXVlc3QgdXNpbmcgPHBocDpjdXJ
sX211bHRpX2V4ZWMoKT4sIGVuYWJsaW5nIHBhcmFsbGVsIHJlcXVlc3RzLiBVc2VzIHRoZSAicm9sbGluZy
IgbWV0aG9kLgoJICoKCSAqIEBwYXJhbSBhcnJheSAkaGFuZGxlcyAoUmVxdWlyZWQpIEFuIGluZGV4ZWQgY
XJyYXkgb2YgY1VSTCBoYW5kbGVzIHRvIHByb2Nlc3Mgc2ltdWx0YW5lb3VzbHkuCgkgKiBAcGFyYW0gYXJy
YXkgJG9wdCAoT3B0aW9uYWwpIEFuIGFzc29jaWF0aXZlIGFycmF5IG9mIHBhcmFtZXRlcnMgdGhhdCBjYW4
gaGF2ZSB0aGUgZm9sbG93aW5nIGtleXM6IDx1bD4KCSAqIAk8bGk+PGNvZGU+Y2FsbGJhY2s8L2NvZGU+IC
0gPGNvZGU+c3RyaW5nfGFycmF5PC9jb2RlPiAtIE9wdGlvbmFsIC0gVGhlIHN0cmluZyBuYW1lIG9mIGEgZ
nVuY3Rpb24gdG8gcGFzcyB0aGUgcmVzcG9uc2UgZGF0YSB0by4gSWYgdGhpcyBpcyBhIG1ldGhvZCwgcGFz
cyBhbiBhcnJheSB3aGVyZSB0aGUgPGNvZGU+WzBdPC9jb2RlPiBpbmRleCBpcyB0aGUgY2xhc3MgYW5kIHR
oZSA8Y29kZT5bMV08L2NvZGU+IGluZGV4IGlzIHRoZSBtZXRob2QgbmFtZS48L2xpPgoJICogCTxsaT48Y2
9kZT5saW1pdDwvY29kZT4gLSA8Y29kZT5pbnRlZ2VyPC9jb2RlPiAtIE9wdGlvbmFsIC0gVGhlIG51bWJlc
iBvZiBzaW11bHRhbmVvdXMgcmVxdWVzdHMgdG8gbWFrZS4gVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzY2Fs
aW5nIGFyb3VuZCBzbG93IHNlcnZlciByZXNwb25zZXMuIERlZmF1bHRzIHRvIHRydXN0aW5nIGNVUkxzIGp
1ZGdlbWVudCBhcyB0byBob3cgbWFueSB0byB1c2UuPC9saT48L3VsPgoJICogQHJldHVybiBhcnJheSBQb3
N0LXByb2Nlc3NlZCBjVVJMIHJlc3BvbnNlcy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIHNlbmRfbXVsdGlfc
mVxdWVzdCgkaGFuZGxlcywgJG9wdCA9IG51bGwpCgl7CgkJaWYgKCR0aGlzLT5hbGxvd19zZXRfdGltZV9s
aW1pdCkKCQl7CgkJCXNldF90aW1lX2xpbWl0KDApOwoJCX0KCgkJLy8gU2tpcCBldmVyeXRoaW5nIGlmIHR
oZXJlIGFyZSBubyBoYW5kbGVzIHRvIHByb2Nlc3MuCgkJaWYgKGNvdW50KCRoYW5kbGVzKSA9PT0gMCkgcm
V0dXJuIGFycmF5KCk7CgoJCWlmICghJG9wdCkgJG9wdCA9IGFycmF5KCk7CgoJCS8vIEluaXRpYWxpemUgY
W55IG1pc3Npbmcgb3B0aW9ucwoJCSRsaW1pdCA9IGlzc2V0KCRvcHRbJ2xpbWl0J10pID8gJG9wdFsnbGlt
aXQnXSA6IC0xOwoKCQkvLyBJbml0aWFsaXplCgkJJGhhbmRsZV9saXN0ID0gJGhhbmRsZXM7CgkJJGh0dHA
gPSBuZXcgJHRoaXMtPnJlcXVlc3RfY2xhc3MoKTsKCQkkbXVsdGlfaGFuZGxlID0gY3VybF9tdWx0aV9pbm
l0KCk7CgkJJGhhbmRsZXNfcG9zdCA9IGFycmF5KCk7CgkJJGFkZGVkID0gY291bnQoJGhhbmRsZXMpOwoJC
SRsYXN0X2hhbmRsZSA9IG51bGw7CgkJJGNvdW50ID0gMDsKCQkkaSA9IDA7CgoJCS8vIExvb3AgdGhyb3Vn
aCB0aGUgY1VSTCBoYW5kbGVzIGFuZCBhZGQgYXMgbWFueSBhcyBpdCBzZXQgYnkgdGhlIGxpbWl0IHBhcmF
tZXRlci4KCQl3aGlsZSAoJGkgPCAkYWRkZWQpCgkJewoJCQlpZiAoJGxpbWl0ID4gMCAmJiAkaSA+PSAkbG
ltaXQpIGJyZWFrOwoJCQljdXJsX211bHRpX2FkZF9oYW5kbGUoJG11bHRpX2hhbmRsZSwgYXJyYXlfc2hpZ
nQoJGhhbmRsZXMpKTsKCQkJJGkrKzsKCQl9CgoJCWRvCgkJewoJCQkkYWN0aXZlID0gZmFsc2U7CgoJCQkv
LyBTdGFydCBleGVjdXRpbmcgYW5kIHdhaXQgZm9yIGEgcmVzcG9uc2UuCgkJCXdoaWxlICgoJHN0YXR1cyA
9IGN1cmxfbXVsdGlfZXhlYygkbXVsdGlfaGFuZGxlLCAkYWN0aXZlKSkgPT09IENVUkxNX0NBTExfTVVMVE
lfUEVSRk9STSkKCQkJewoJCQkJLy8gU3RhcnQgbG9va2luZyBmb3IgcG9zc2libGUgcmVzcG9uc2VzIGltb
WVkaWF0ZWx5IHdoZW4gd2UgaGF2ZSB0byBhZGQgbW9yZSBoYW5kbGVzCgkJCQlpZiAoY291bnQoJGhhbmRs
ZXMpID4gMCkgYnJlYWs7CgkJCX0KCgkJCS8vIEZpZ3VyZSBvdXQgd2hpY2ggcmVxdWVzdHMgZmluaXNoZWQ
uCgkJCSR0b19wcm9jZXNzID0gYXJyYXkoKTsKCgkJCXdoaWxlICgkZG9uZSA9IGN1cmxfbXVsdGlfaW5mb1
9yZWFkKCRtdWx0aV9oYW5kbGUpKQoJCQl7CgkJCQkvLyBTaW5jZSBjdXJsX2Vycm5vKCkgaXNuJ3QgcmVsa
WFibGUgZm9yIGhhbmRsZXMgdGhhdCB3ZXJlIGluIG11bHRpcmVxdWVzdHMsIHdlIGNoZWNrIHRoZSAncmVz
dWx0JyBvZiB0aGUgaW5mbyByZWFkLCB3aGljaCBjb250YWlucyB0aGUgY3VybCBlcnJvciBudW1iZXIsICh
saXN0ZWQgaGVyZSBodHRwOi8vY3VybC5oYXh4LnNlL2xpYmN1cmwvYy9saWJjdXJsLWVycm9ycy5odG1sIC
kKCQkJCWlmICgkZG9uZVsncmVzdWx0J10gPiAwKQoJCQkJewoJCQkJCXRocm93IG5ldyBjVVJMX011bHRpX
0V4Y2VwdGlvbignY1VSTCByZXNvdXJjZTogJyAuIChzdHJpbmcpICRkb25lWydoYW5kbGUnXSAuICc7IGNV
UkwgZXJyb3I6ICcgLiBjdXJsX2Vycm9yKCRkb25lWydoYW5kbGUnXSkgLiAnIChjVVJMIGVycm9yIGNvZGU
gJyAuICRkb25lWydyZXN1bHQnXSAuICcpLiBTZWUgaHR0cDovL2N1cmwuaGF4eC5zZS9saWJjdXJsL2MvbG
liY3VybC1lcnJvcnMuaHRtbCBmb3IgYW4gZXhwbGFuYXRpb24gb2YgZXJyb3IgY29kZXMuJyk7CgkJCQl9C
goJCQkJLy8gQmVjYXVzZSBjdXJsX211bHRpX2luZm9fcmVhZCgpIG1pZ2h0IHJldHVybiBtb3JlIHRoYW4g
b25lIG1lc3NhZ2UgYWJvdXQgYSByZXF1ZXN0LCB3ZSBjaGVjayB0byBzZWUgaWYgdGhpcyByZXF1ZXN0IGl
zIGFscmVhZHkgaW4gb3VyIGFycmF5IG9mIGNvbXBsZXRlZCByZXF1ZXN0cwoJCQkJZWxzZWlmICghaXNzZX
QoJHRvX3Byb2Nlc3NbKGludCkgJGRvbmVbJ2hhbmRsZSddXSkpCgkJCQl7CgkJCQkJJHRvX3Byb2Nlc3NbK
GludCkgJGRvbmVbJ2hhbmRsZSddXSA9ICRkb25lOwoJCQkJfQoJCQl9CgoJCQkvLyBBY3R1YWxseSBkZWFs
IHdpdGggdGhlIHJlcXVlc3QKCQkJZm9yZWFjaCAoJHRvX3Byb2Nlc3MgYXMgJHBrZXkgPT4gJGRvbmUpCgk
JCXsKCQkJCSRyZXNwb25zZSA9ICRodHRwLT5wcm9jZXNzX3Jlc3BvbnNlKCRkb25lWydoYW5kbGUnXSwgY3
VybF9tdWx0aV9nZXRjb250ZW50KCRkb25lWydoYW5kbGUnXSkpOwoJCQkJJGtleSA9IGFycmF5X3NlYXJja
CgkZG9uZVsnaGFuZGxlJ10sICRoYW5kbGVfbGlzdCwgdHJ1ZSk7CgkJCQkkaGFuZGxlc19wb3N0WyRrZXld
ID0gJHJlc3BvbnNlOwoKCQkJCWlmIChjb3VudCgkaGFuZGxlcykgPiAwKQoJCQkJewoJCQkJCWN1cmxfbXV
sdGlfYWRkX2hhbmRsZSgkbXVsdGlfaGFuZGxlLCBhcnJheV9zaGlmdCgkaGFuZGxlcykpOwoJCQkJfQoKCQ
kJCWN1cmxfbXVsdGlfcmVtb3ZlX2hhbmRsZSgkbXVsdGlfaGFuZGxlLCAkZG9uZVsnaGFuZGxlJ10pOwoJC
QkJY3VybF9jbG9zZSgkZG9uZVsnaGFuZGxlJ10pOwoJCQl9CgkJfQoJCXdoaWxlICgkYWN0aXZlIHx8IGNv
dW50KCRoYW5kbGVzX3Bvc3QpIDwgJGFkZGVkKTsKCgkJY3VybF9tdWx0aV9jbG9zZSgkbXVsdGlfaGFuZGx
lKTsKCgkJa3NvcnQoJGhhbmRsZXNfcG9zdCwgU09SVF9OVU1FUklDKTsKCQlyZXR1cm4gJGhhbmRsZXNfcG
9zdDsKCX0KCgoJLyolKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqK
ioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqJSovCgkvLyBSRVNQT05TRSBNRVRI
T0RTCgoJLyoqCgkgKiBHZXQgdGhlIEhUVFAgcmVzcG9uc2UgaGVhZGVycyBmcm9tIHRoZSByZXF1ZXN0Lgo
JICoKCSAqIEBwYXJhbSBzdHJpbmcgJGhlYWRlciAoT3B0aW9uYWwpIEEgc3BlY2lmaWMgaGVhZGVyIHZhbH
VlIHRvIHJldHVybi4gRGVmYXVsdHMgdG8gYWxsIGhlYWRlcnMuCgkgKiBAcmV0dXJuIHN0cmluZ3xhcnJhe
SBBbGwgb3Igc2VsZWN0ZWQgaGVhZGVyIHZhbHVlcy4KCSAqLwoJcHVibGljIGZ1bmN0aW9uIGdldF9yZXNw
b25zZV9oZWFkZXIoJGhlYWRlciA9IG51bGwpCgl7CgkJaWYgKCRoZWFkZXIpCgkJewoJCQlyZXR1cm4gJHR
oaXMtPnJlc3BvbnNlX2hlYWRlcnNbc3RydG9sb3dlcigkaGVhZGVyKV07CgkJfQoJCXJldHVybiAkdGhpcy
0+cmVzcG9uc2VfaGVhZGVyczsKCX0KCgkvKioKCSAqIEdldCB0aGUgSFRUUCByZXNwb25zZSBib2R5IGZyb
20gdGhlIHJlcXVlc3QuCgkgKgoJICogQHJldHVybiBzdHJpbmcgVGhlIHJlc3BvbnNlIGJvZHkuCgkgKi8K
CXB1YmxpYyBmdW5jdGlvbiBnZXRfcmVzcG9uc2VfYm9keSgpCgl7CgkJcmV0dXJuICR0aGlzLT5yZXNwb25
zZV9ib2R5OwoJfQoKCS8qKgoJICogR2V0IHRoZSBIVFRQIHJlc3BvbnNlIGNvZGUgZnJvbSB0aGUgcmVxdW
VzdC4KCSAqCgkgKiBAcmV0dXJuIHN0cmluZyBUaGUgSFRUUCByZXNwb25zZSBjb2RlLgoJICovCglwdWJsa
WMgZnVuY3Rpb24gZ2V0X3Jlc3BvbnNlX2NvZGUoKQoJewoJCXJldHVybiAkdGhpcy0+cmVzcG9uc2VfY29k
ZTsKCX0KfQoKCi8qKgogKiBDb250YWluZXIgZm9yIGFsbCByZXNwb25zZS1yZWxhdGVkIG1ldGhvZHMuCiA
qLwpjbGFzcyBSZXNwb25zZUNvcmUKewoJLyoqCgkgKiBTdG9yZXMgdGhlIEhUVFAgaGVhZGVyIGluZm9ybW
F0aW9uLgoJICovCglwdWJsaWMgJGhlYWRlcjsKCgkvKioKCSAqIFN0b3JlcyB0aGUgU2ltcGxlWE1MIHJlc
3BvbnNlLgoJICovCglwdWJsaWMgJGJvZHk7CgoJLyoqCgkgKiBTdG9yZXMgdGhlIEhUVFAgcmVzcG9uc2Ug
Y29kZS4KCSAqLwoJcHVibGljICRzdGF0dXM7CgoJLyoqCgkgKiBDb25zdHJ1Y3RzIGEgbmV3IGluc3RhbmN
lIG9mIHRoaXMgY2xhc3MuCgkgKgoJICogQHBhcmFtIGFycmF5ICRoZWFkZXIgKFJlcXVpcmVkKSBBc3NvY2
lhdGl2ZSBhcnJheSBvZiBIVFRQIGhlYWRlcnMgKHR5cGljYWxseSByZXR1cm5lZCBieSA8UmVxdWVzdENvc
mU6OmdldF9yZXNwb25zZV9oZWFkZXIoKT4pLgoJICogQHBhcmFtIHN0cmluZyAkYm9keSAoUmVxdWlyZWQp
IFhNTC1mb3JtYXR0ZWQgcmVzcG9uc2UgZnJvbSBBV1MuCgkgKiBAcGFyYW0gaW50ZWdlciAkc3RhdHVzICh
PcHRpb25hbCkgSFRUUCByZXNwb25zZSBzdGF0dXMgY29kZSBmcm9tIHRoZSByZXF1ZXN0LgoJICogQHJldH
VybiBvYmplY3QgQ29udGFpbnMgYW4gPHBocDphcnJheT4gYGhlYWRlcmAgcHJvcGVydHkgKEhUVFAgaGVhZ
GVycyBhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheSksIGEgPHBocDpTaW1wbGVYTUxFbGVtZW50PiBvciA8cGhw
OnN0cmluZz4gYGJvZHlgIHByb3BlcnR5LCBhbmQgYW4gPHBocDppbnRlZ2VyPiBgc3RhdHVzYCBjb2RlLgo
JICovCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGhlYWRlciwgJGJvZHksICRzdGF0dXMgPSBudW
xsKQoJewoJCSR0aGlzLT5oZWFkZXIgPSAkaGVhZGVyOwoJCSR0aGlzLT5ib2R5ID0gJGJvZHk7CgkJJHRoa
XMtPnN0YXR1cyA9ICRzdGF0dXM7CgoJCXJldHVybiAkdGhpczsKCX0KCgkvKioKCSAqIERpZCB3ZSByZWNl
aXZlIHRoZSBzdGF0dXMgY29kZSB3ZSBleHBlY3RlZD8KCSAqCgkgKiBAcGFyYW0gaW50ZWdlcnxhcnJheSA
kY29kZXMgKE9wdGlvbmFsKSBUaGUgc3RhdHVzIGNvZGUocykgdG8gZXhwZWN0LiBQYXNzIGFuIDxwaHA6aW
50ZWdlcj4gZm9yIGEgc2luZ2xlIGFjY2VwdGFibGUgdmFsdWUsIG9yIGFuIDxwaHA6YXJyYXk+IG9mIGlud
GVnZXJzIGZvciBtdWx0aXBsZSBhY2NlcHRhYmxl
IHZhbHVlcy4KCSAqIEByZXR1cm4gYm9vbGVhbiBXaGV0aGVyIHdlIHJlY2VpdmVkIHRoZSBleHBlY3RlZCB
zdGF0dXMgY29kZSBvciBub3QuCgkgKi8KCXB1YmxpYyBmdW5jdGlvbiBpc09LKCRjb2RlcyA9IGFycmF5KD
IwMCwgMjAxLCAyMDQsIDIwNikpCgl7CgkJaWYgKGlzX2FycmF5KCRjb2RlcykpCgkJewoJCQlyZXR1cm4ga
W5fYXJyYXkoJHRoaXMtPnN0YXR1cywgJGNvZGVzKTsKCQl9CgoJCXJldHVybiAkdGhpcy0+c3RhdHVzID09
PSAkY29kZXM7Cgl9Cn0KCmNsYXNzIGNVUkxfRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHt9CmNsYXN
zIGNVUkxfTXVsdGlfRXhjZXB0aW9uIGV4dGVuZHMgY1VSTF9FeGNlcHRpb24ge30KY2xhc3MgUmVxdWVzdE
NvcmVfRXhjZXB0aW9uIGV4dGVuZHMgRXhjZXB0aW9uIHt9Cg==
###PACKDATA,FILE_END,/destinations/_s3lib/aws-
sdk/lib/requestcore/requestcore.class.php,importbuddy/lib/requestcore/requestcore.c
lass.php
###PACKDATA,END
*/

Das könnte Ihnen auch gefallen