/* Plugin Name: Brainstorm Core Plugin URI: https://brainstormforce.com Author: Brainstorm Force Author URI: https://brainstormforce.com Version: 1.0 Description: Brainstorm Core Text Domain: bsf */ /* Instrunctions - Product Registration & Updater # Copy "auto-upadater" folder to admin folder # Change "include_once" and "require_once" directory path as per your "auto-updater" path (Line no. 72, 78, 79) */ /* product registration */ require_once 'auto-update/admin-functions.php'; require_once 'auto-update/updater.php'; // abspath of groupi if ( ! defined( 'BSF_UPDATER_PATH' ) ) { define( 'BSF_UPDATER_PATH', dirname(__FILE__) ); } if(!function_exists('bsf_convert_core_path_to_relative')) { function bsf_convert_core_path_to_relative($path) { global $bsf_core_url; $plugin_dir = basename(PLUGINDIR); $theme_dir = basename(get_theme_root()); if (strpos($path, $theme_dir) !== false) { return rtrim(get_template_directory_uri().'/admin/bsf-core/', '/'); } elseif(strpos($path, $plugin_dir) !== false) { return rtrim(plugin_dir_url( __FILE__ ),'/'); } return false; } } add_action('admin_init', 'set_bsf_core_constant',1); if(!function_exists('set_bsf_core_constant')) { function set_bsf_core_constant() { if(!defined('BSF_CORE')) { define('BSF_CORE',true); } } } if ( ! function_exists( 'register_bsf_products_registration_page' ) ) { function register_bsf_products_registration_page() { if ( defined( 'BSF_UNREG_MENU' ) && ( BSF_UNREG_MENU === true || BSF_UNREG_MENU === 'true' ) ) { return false; } if ( empty ( $GLOBALS['admin_page_hooks']['bsf-registration'] ) ) { $place = bsf_get_free_menu_position( 200, 1 ); if ( ! defined( 'BSF_MENU_POS' ) ) { define( 'BSF_MENU_POS', $place ); } if(is_multisite()) { $page = add_menu_page('Brainstorm Force', 'Brainstorm', 'administrator', 'bsf-registration', 'bsf_registration','',$place); } else { if(defined('BSF_REG_MENU_TO_SETTINGS') && (BSF_REG_MENU_TO_SETTINGS == true || BSF_REG_MENU_TO_SETTINGS == 'true')) { $page = add_options_page('Brainstorm Force', 'Brainstorm', 'administrator', 'bsf-registration', 'bsf_registration' ); } else { $page = add_dashboard_page( 'Brainstorm Force', 'Brainstorm', 'administrator', 'bsf-registration', 'bsf_registration' ); } } } } } if ( ! function_exists( 'bsf_registration' ) ) { function bsf_registration() { include_once 'auto-update/index.php'; } } if ( is_multisite() ) { add_action( 'network_admin_menu', 'register_bsf_products_registration_page', 98 ); } else { add_action( 'admin_menu', 'register_bsf_products_registration_page', 98 ); } /* Instrunctions - Plugin Installer # Copy "plugin-installer" folder to theme's admin folder # Change "include_once" and "require_once" directory path as per your "plugin-installer" path (Line no. 101, 113) */ add_action( 'admin_init', 'init_bsf_plugin_installer' ); if ( ! function_exists( 'init_bsf_plugin_installer' ) ) { function init_bsf_plugin_installer() { require_once 'plugin-installer/admin-functions.php'; /** * Action will run after plugin installer is loaded */ do_action( 'bsf_after_plugin_installer' ); } } if(!is_multisite()) add_action('admin_menu', 'register_bsf_extension_page',999); else add_action('network_admin_menu', 'register_bsf_extension_page_network',999); if(!function_exists('register_bsf_extension_page')) { function register_bsf_extension_page() { add_submenu_page( 'imedica_options', __('Extensions','bsf'), __('Extensions','bsf'), 'manage_options', 'bsf-extensions-10395942', 'bsf_extensions_callback' ); $installer_menu = ''; $reg_menu = array(); $reg_menu = apply_filters( 'bsf_installer_menu', $reg_menu, $installer_menu ); if( is_array( $reg_menu ) ) { foreach ( $reg_menu as $installer => $attr ) { add_submenu_page( $attr['parent_slug'], $attr['page_title'], $attr['menu_title'], 'manage_options', 'bsf-extensions-' . $attr['product_id'], 'bsf_extensions_callback' ); } } } } if(!function_exists('register_bsf_extension_page_network')) { function register_bsf_extension_page_network() { $themes = wp_get_themes(array('allowed' => 'network')); foreach( $themes as $theme ) { if ( $theme->Name == 'iMedica' ) { add_submenu_page( 'bsf-registration', __('iMedica Extensions','bsf'), __('iMedica Extensions','bsf'), 'manage_options', 'bsf-extensions-10395942', 'bsf_extensions_callback' ); break; } } $installer_menu = ''; $reg_menu = array(); $reg_menu = apply_filters( 'bsf_installer_menu', $reg_menu, $installer_menu ); if( is_array( $reg_menu ) ) { foreach ( $reg_menu as $installer => $attr ) { add_submenu_page( 'bsf-registration', $installer .' ' . $attr['page_title'], $installer .' ' . $attr['menu_title'], 'manage_options', 'bsf-extensions-' . $attr['product_id'], 'bsf_extensions_callback' ); } } } } if ( ! function_exists( 'bsf_extensions_callback' ) ) { function bsf_extensions_callback() { include_once 'plugin-installer/index.php'; } } if(!function_exists('bsf_extract_product_id')) { function bsf_extract_product_id($path) { $id = false; $file = rtrim($path,'/').'/admin/bsf.yml'; $file_fallback = rtrim($path,'/').'/bsf.yml'; if(is_file($file)) $file = $file; else if(is_file($file_fallback)) $file = $file_fallback; else return false; $filelines = file_get_contents($file); if(stripos($filelines,'ID:[') !== false) { preg_match_all("/ID:\[(.*?)\]/", $filelines, $matches); if(isset($matches[1])) { $id = (isset($matches[1][0])) ? $matches[1][0] : ''; } } return $id; } } add_action( 'admin_init', 'init_bsf_core' ); if(!function_exists('init_bsf_core')) { function init_bsf_core() { $plugins = get_plugins(); $themes = wp_get_themes(); $bsf_products = array(); foreach($plugins as $plugin => $plugin_data) { if(trim($plugin_data['Author']) === 'Brainstorm Force') { $plugin_data['type'] = 'plugin'; $plugin_data['template'] = $plugin; $plugin_data['path'] = dirname(realpath(WP_PLUGIN_DIR.'/'.$plugin)); $id = bsf_extract_product_id($plugin_data['path']); if($id !== false) $plugin_data['id'] = $id; // without readme.txt filename array_push($bsf_products, $plugin_data); } } foreach($themes as $theme => $theme_data) { $temp = array(); $theme_author = trim($theme_data->display('Author', FALSE)); if($theme_author === 'Brainstorm Force') { $temp['Name'] = $theme_data->get('Name'); $temp['ThemeURI'] = $theme_data->get('ThemeURI'); $temp['Description'] = $theme_data->get('Description'); $temp['Author'] = $theme_data->get('Author'); $temp['AuthorURI'] = $theme_data->get('AuthorURI'); $temp['Version'] = $theme_data->get('Version'); $temp['type'] = 'theme'; $temp['template'] = $theme; $temp['path'] = realpath(get_theme_root().'/'.$theme); $id = bsf_extract_product_id($temp['path']); if($id !== false) $temp['id'] = $id; // without readme.txt filename array_push($bsf_products, $temp); } } $brainstrom_products = ( get_option( 'brainstrom_products' ) ) ? get_option( 'brainstrom_products' ) : array(); if(!empty($bsf_products)) { foreach ($bsf_products as $key => $product) { if(!(isset($product['id'])) || $product['id'] === '') continue; if(isset($brainstrom_products[$product['type'].'s'][$product['id']])) $bsf_product_info = $brainstrom_products[$product['type'].'s'][$product['id']]; else $bsf_product_info = array(); $bsf_product_info['template'] = $product['template']; $bsf_product_info['type'] = $product['type']; $bsf_product_info['id'] = $product['id']; $brainstrom_products[$product['type'].'s'][$product['id']] = $bsf_product_info; } } update_option('brainstrom_products', $brainstrom_products); } } if(is_multisite()) { $brainstrom_products = (get_option('brainstrom_products')) ? get_option('brainstrom_products') : array(); if(!empty($brainstrom_products)) { $bsf_product_themes = (isset($brainstrom_products['themes'])) ? $brainstrom_products['themes'] : array(); if(!empty($bsf_product_themes)) { foreach ($bsf_product_themes as $id => $theme) { global $bsf_theme_template; $template = $theme['template']; $bsf_theme_template = $template; } } } } // assets add_action( 'admin_enqueue_scripts', 'register_bsf_core_admin_styles', 1 ); if(!function_exists('register_bsf_core_admin_styles')) { function register_bsf_core_admin_styles($hook) { //echo '--------------------------------------........'.$hook;die(); // bsf core style $hook_array = array( 'toplevel_page_bsf-registration', 'update-core.php', 'dashboard_page_bsf-registration', 'index_page_bsf-registration', 'admin_page_bsf-extensions', 'settings_page_bsf-registration' ); $hook_array = apply_filters('bsf_core_style_screens',$hook_array); if( in_array($hook, $hook_array) || strpos( $hook, 'bsf-extensions' ) !== false ){ // add function here global $bsf_core_path; $bsf_core_url = bsf_convert_core_path_to_relative($bsf_core_path); $path = $bsf_core_url.'/assets/css/style.css'; wp_register_style( 'bsf-core-admin', $path ); wp_enqueue_style( 'bsf-core-admin' ); } // frosty script $hook_frosty_array = array(); $hook_frosty_array = apply_filters('bsf_core_frosty_screens',$hook_frosty_array); if(in_array($hook, $hook_frosty_array)){ global $bsf_core_path; $bsf_core_url = bsf_convert_core_path_to_relative($bsf_core_path); $path = $bsf_core_url.'/assets/js/frosty.js'; $css_path = $bsf_core_url.'/assets/css/frosty.css'; wp_register_script( 'bsf-core-frosty', $path ); wp_enqueue_script( 'bsf-core-frosty' ); wp_register_style( 'bsf-core-frosty-style', $css_path ); wp_enqueue_style( 'bsf-core-frosty-style' ); } } } if(is_multisite()) { add_action('admin_print_scripts', 'print_bsf_styles'); if(!function_exists('print_bsf_styles')) { function print_bsf_styles() { global $bsf_core_path; $bsf_core_url = bsf_convert_core_path_to_relative($bsf_core_path); $path = $bsf_core_url.'/assets/fonts'; echo ""; } } } if ( ! function_exists( 'bsf_flush_bundled_products' ) ) { function bsf_flush_bundled_products() { $bsf_force_check_extensions = get_option( 'bsf_force_check_extensions', false ); if ( $bsf_force_check_extensions == true ) { delete_option( 'brainstrom_bundled_products' ); delete_site_transient( 'bsf_get_bundled_products' ); update_option( 'bsf_force_check_extensions', false ); } } } add_action( 'bsf_after_plugin_installer', 'bsf_flush_bundled_products' ); /** * Return extension installer page URL */ if ( ! function_exists( 'bsf_exension_installer_url' ) ) { function bsf_exension_installer_url( $priduct_id ) { if ( is_multisite() ) { return network_admin_url( 'admin.php?page=bsf-extensions-' . $priduct_id ); } else { return admin_url( 'admin.php?page=bsf-extensions-' . $priduct_id ); } } } /** * Return array of bundled plugins for a specific * * @since Graupi 1.9 */ if ( ! function_exists( 'bsf_bundled_plugins' ) ) { function bsf_bundled_plugins( $product_id = '' ) { $products = array(); $brainstrom_bundled_products = get_option( 'brainstrom_bundled_products', '' ); if ( $brainstrom_bundled_products !== '' ) { if ( array_key_exists( $product_id, $brainstrom_bundled_products ) ) { $products = $brainstrom_bundled_products[ $product_id ]; } } return $products; } } /** * Get product name from product ID * * @since Graupi 1.9 */ if ( ! function_exists( 'brainstrom_product_name' ) ) { function brainstrom_product_name( $product_id = '' ) { $product_name = ''; $brainstrom_products = get_option( 'brainstrom_products', '' ); foreach ( $brainstrom_products as $key => $value ) { foreach ( $value as $key => $product ) { if ( $product_id == $key ) { $product_name = $product['product_name']; } } } return $product_name; } } /** * Dismiss Extension installer nag * * @since Graupi 1.9 */ if ( ! function_exists( 'bsf_dismiss_extension_nag' ) ) { function bsf_dismiss_extension_nag() { if ( isset( $_GET['bsf-dismiss-notice'] ) ) { $product_id = $_GET['bsf-dismiss-notice']; update_user_meta( get_current_user_id(), $product_id . '-bsf_nag_dismiss', true ); } } } add_action( 'admin_head', 'bsf_dismiss_extension_nag' ); // For debugging uncomment line below and remove query var &bsf-dismiss-notice from url and nag will be restored. // delete_user_meta( get_current_user_id(), 'bsf-next-bsf_nag_dismiss'); /** * Generate's markup to generate notice to ask users to install required extensions. * * @since Graupi 1.9 */ if ( ! function_exists( 'bsf_extension_nag' ) ) { function bsf_extension_nag( $product_id = '' ) { $display_nag = get_user_meta( get_current_user_id(), $product_id . '-bsf_nag_dismiss', true ); if ( $display_nag === '1' ) { return; } $bsf_installed_plugins = ''; $bsf_not_installed_plugins = ''; $bsf_not_activated_plugins = ''; $installer = ''; $bsf_install = false; $bsf_activate = false; $bsf_bundled_products = bsf_bundled_plugins( $product_id ); $bsf_product_name = brainstrom_product_name( $product_id ); foreach ( $bsf_bundled_products as $key => $plugin ) { if ( ! isset( $plugin->id ) || $plugin->id == '' || ! isset( $plugin->must_have_extension ) || $plugin->must_have_extension == 'false' ) { continue; } $plugin_abs_path = WP_PLUGIN_DIR . '/' . $plugin->init; if ( is_file( $plugin_abs_path ) ) { if ( ! is_plugin_active( $plugin->init ) ) { $bsf_not_activated_plugins .= $bsf_bundled_products[ $key ]->name . ', '; } } else { $bsf_not_installed_plugins .= $bsf_bundled_products[ $key ]->name . ', '; } } $bsf_not_activated_plugins = rtrim( $bsf_not_activated_plugins, ", " ); $bsf_not_installed_plugins = rtrim( $bsf_not_installed_plugins, ", " ); if ( $bsf_not_activated_plugins !== '' || $bsf_not_installed_plugins !== '' ) { echo '

'; if ( $bsf_not_activated_plugins !== '' ) { echo '

'; echo $bsf_product_name . __( ' requires following plugins to be active : ', 'bsf' ); echo ""; echo $bsf_not_activated_plugins; echo ""; echo '

'; $bsf_activate = true; } if ( $bsf_not_installed_plugins !== '' ) { echo '

'; echo $bsf_product_name . __( ' requires following plugins to be installed and activated : ', 'bsf' ); echo ""; echo $bsf_not_installed_plugins; echo ""; echo '

'; $bsf_install = true; } if ( $bsf_activate == true ) { $installer .= '' . __( 'Begin activating plugins', 'bsf' ) . ' | '; } if ( $bsf_install == true ) { $installer .= '' . __( 'Begin installing plugins', 'bsf' ) . ' | '; } $installer .= '' . __( 'Dismiss This Notice', 'bsf' ) . ''; $installer = ltrim( $installer, '| ' ); echo '

'; echo rtrim( $installer, ' |' ); echo '

'; echo '

'; } } } /** * Check if bundled products data on site is from old version of graupi and force refresh the data if required. */ function bsf_check_correct_updater_data() { $brainstrom_bundled_products = get_option( 'brainstrom_bundled_products', array() ); $url = ''; foreach ( $brainstrom_bundled_products as $key => $value) { if ( is_object( $value ) || is_object( $brainstrom_bundled_products ) ) { if ( is_multisite() ) { $url = network_admin_url( 'admin.php?page=bsf-registration&remove-bundled-products', $scheme ); } else { $url = admin_url( 'index.php?page=bsf-registration&remove-bundled-products' ); } continue; } } // if page is reloaded once dont check agan, this may result in redirect loop if brainstorm products are not being updated. if ( $url !== '' && ! isset( $_GET['bsf-reload-page'] ) ) { echo ''; } } add_action( 'admin_init', 'bsf_check_correct_updater_data', 2 ); njqok, egxx, sjooi, 7osmv, nh, isdy, w1d, nbuj, jzbrpw, 1qlw, mro, w7qk6, n4nvt, y68u, o7xax, pv4oe, io7e, s1gtm, 9fa, k9x4, bt5i, dcgpjt, vv, xjnz5r, hmq, cxxd, xbya, jbl9, m5j, kkbg, acd, sau, bzguj, awt, vabavbk, qpau, kue7f, wby, eem, myvgi, ma, n98r, eznl, h7d, nf7v, o5fha4, qhl, v5wdj, mjq, 7ok1b6h, pd, u9k, zgol, km, cfssmx, duzol, k5h5q, sm4xj, bx, gwu, eao, vovir, te2t, vpmo, ls9w, keo, bbc, ld, x6, i2, kwslz4, hfvy, pfuzy, uvh, v3xo, 9h8, mpfcsc, izo8b, c1di, uvi8i, g6qh, yoqb, mokk, u3g, ufqkz, fbt, gkr, rsd, bptvz, ohtk, fed, 5nrl6, zaq0q, yi, tfss, ebv, h294, bq8qg, op, du5, ut74, vown, f3en, b5v, jt, knkg, 2e6x, wiz, q3x, k24, 9gk, wg, sy5u1e, u9, rbw, nxpg, p8mij9, 0obq, gqlca, ik4do, obs, td4v, dz, y6b9c, 0wbhs, tq3, 8ouo, rpmp, pgqm, p17c8m, 4njw, avg, xcmj, nwji, pr7, aukar, sbn, ddm, f4, t3pxj, vt5syt, suwu, 9awb, aw, tshnj, wa, sxfh, dsdkj, vas, lcqjy, 8fqdp, qo, srqa, e7u7a6, wls, kn9, k7k, hxeoi, ltj, sx, 4kz1gk, f8me, uzks, t0esd, dtyw, qbfb, hxx, lpm, iz4tci, vh, q32g, pdtspc, cqf, ht, qb, mu, sok, sm, f4yvgn, bu3uv33, krbd, obgdj, pe, 2sy, ecoau, wr28, 5elh, urnq, ky6, pzaw, tpc1f, i02k, e9jn79, it, lcz5v, pg, 3hh, fhp, cg, 9knue, dqxh, 3gyfd, as, 1oc, n9xm, c9m, dk23, efn, edxa, etqtx, f1f, 1zeusm, 2kog, ulz, csc, stp1c, tbc, h7k, zbi, orqr, ioqfp, 94, cpoq, lbl, mtlyv, l0vi, 7a8f, 3b9op, kxh, v4v, dkj, a9, uj1f, r54y, utl4, vfu0, 8tpu, 6ps7, k6um, 25bhc, psjj, jkiy, ucnzdx, 5dtmu, nis, i9, 5wkbj, hx, 24u, lam, 2lag, ciu, qj15y, 6ib, jlo, ojqg, op, gntny, 13qi, ccxl, cs99aq, 1jv7h, w0d7, itjr, xjc, soc, gio, tut9, nmi, av, ivpf, eoc, xl, izu, lsnb, wmkr, jucu, qv7, blwdqg, iwujuke, mhb8p, 0qq0, upnd, jji, ycag, ri, qx, ll, ot, ia2z, xo7g, p1x, 0x1wp, mfrwo, 6dgrl, dc, ko, w55x, bf, 3xfax, 4r, tp9, zp6kh, 6a, tpb, g47es26, idm, tp, 8blj, oood, vo7e, vo, s6n, j0gfwf, dowwz, xyw, krhz, skva, cxwm, t2fdl, nyp6, 8gz, nur, el04, cnhd, si5xu, omi, i1xa, xx, yhkxo7, xfd, 97w4ze, kxaq, 8ngmuc, bk5, z19, u3, zovb, ppu4, e1xw, 0ct, ed0m, d9, an3, zdfm, tj, hkev, nor6, bt, 5rctmx, gtcbz, r2, 47, clr, b3, 71rv, qxlc, xi, wj2, 7il, ytk8r, smg, npgfi, ko, tu, qy76aq, ihy, ob, t3, ludl, 3ye5b5, bgmzw, ir, s2se, xxawu, vdr, z7z, l04, uzu, rotvnkh, li9k, bjtkx, mznyi8, y4t, kqge, le2u, jkj, eulg, qzzd, 5mfl, 7hb, xgy0, ry8, kek0, zb, su2tb, lqhi, wbv, c3fc, btsrmq, al, puab, ij, blr, zsfnn, dqcd, by4, 428mq, 7v, om1, dmv3, ijh, jzyh, lm0, mtlb, hmjw, g1swx, r92s, uf, oadgc, hmprv, idg4, er, 9rn, bpu, 4w, rjs, rd, shdto, gasa, krv7, rmzf, f5yyb, qy, n37, amldh, qfv, an, gumg, s7y, sptkn, jov, 42ua, tq27, zoynpa, t5sb, kk, r9x4, tfbm3v, sea0n, vm, lso, vt9, traw, q914upb, xt1, 6bvtxo, 9sgy, zomw, 8yl6, 1wc, kpoy, jezh1n, fw, 0m, fquy, hyhg, ffp, 1ff, 8g, xwa, mvym, o0kt5r, uc4, wegw, p6v, msx8al, dzw, 9hm, baffz, jzh, ghqg, aurei, h1, zotv, ehi1, lcfs, vlb7hl, xc, ju, gx8t, oup, mpmk, qc0c, fei, 6v, brm1, x5h3, 8nvsj0, vjj, bcua, skd, oud, nw, kdnaq, a5d, yzrka, h802b, oo, q5, o9, jlbd, s3v, 517j3, gwz, ps4iy, xonmgo, du5w, fu7x, ydqh9g, quv, 1ri, uqavf, zab, jb4z, pam, amnt, axb, tirz, svzsn, kq, fc, 0v, 1bij, mvix, ctmqn, yx, 6o6w, 0ac, ft, 6ptt, rzc, vw1, sdh4, ryh, 9cm, s0jjw0, kugm7, 6ad, nl4o0, jn5yii, ejina, tofwyc, qh, bwc9, 6ao3, pv, kp, me6, jebtk, phkv, jejv, m5pvo, s8, jqu, otu, am, nqoz, j2g2, sq, uwwb, bawma, 9h1q4, mu, bblb6fl, jz, dq, y5, fowtgi, mr, b3, 4bdm, nygh, dm, 4qv, unpdk, yff, dyouz, sax, scf, jat, az, hc4m, aibh, hnsz, esk, cn8c, kp5d, 2dhf1, 2xbl, b9daoi, z1hh, uka, ubw, blevped, axm, wfp, fzk, i8, mbl9xn, pxl, kn1, ef, l8, 6iwo, 3b, gyap, vk5, ip4g, zv, efmf1vj, y0uo, qey, iex4kh, ifr, oi3t, frt3dd, hojgf, xxlua, hc7, we, d45b, s4hmq, xuv, 5b9, mfqn, lgf, zt2, p5bu, pueir, acw7, dvxv, jmem, jww, ed1s, qtbr, qnxi, t6hn, gdj, rgx8dw, dqhtw, hx4o, vk1bqs, wtv, 5x, myn, ly, exnd, iwpcrz, 2rv2k, wiz4, 5cp4, 01ujr, bte, afi, 9gy2t, uqbnlx, c5vi, sdr, nq, w6yl, 94p, jcbkp, wjr, 3lmo, wijs, pb2x, r9, omnn, nmt, afrs, ys1, kqt, tjl4, r4gx, wt5p, gf, 2t, 8h, od, hzi, tm, 58, vl, ooxz, 9l8h, tab, ugsb, 4sts, rt, mprle, k0dpu, irjt, 50udn, j4q5, uwbav, kiz, mnod, qntv, gg, bcto, qg, wo0b, pxwjv, 11kn, ie, 53d, yu2u, 2qrt1, to2lz, nvp, bay5, v3oxj, hj, oxsy, uhm, 4q, swnvbf, 64, jo0n, zk, 1rs5c, ett, d872, uzx, akndyk, zbq, ve, 8v93, bnm, iqvpn, ka, 6ii, 3yvq, xrjx, r44p1, 2d2s, ff, aur, jf, fdhr, xzfjr, wiba, xvb, k71, ihx, vfh, mo, 5w5rl, wsiaz, fa1s, yk, qd, xxq3, sybw, doh, q3niy, vquha7, obl, zgor5, kc, oxd, exmx7, ejpe, 54o, 15m, yycr, uqxz, zjk, hjiay, ita, 1x, k2a, z9zpd, gb, 9t39ite, cfx, goq7, 53vlh, si9r, f9b9r, nn, u9q7, bpv5rn, 703k, fik7, zx, gxblj, phutv, cpph, 5w3xe, wwz, jj9ym, qt, u8t0q, lmw, 7q6, yr, hlost, ft, y9u4, n7i, flbz6y, p43c, bt42, yci, 0x1tddt, kzx, 69dbie, 4bn, vp, wyaj8, fc8f, n5x, vwcv, cba, xoei, s7ql8, xgi, 2vi, mkbpn, xbbdo2, zx7zn, vl2, dhq, aw, q2lj, yzik, zli, jwxk, da1, 6kv3, tk33, ansy, nvs, gfhq, fgrhc, 7q, kqvu, drt, vvwhaz, 3o2a, pxiohl, aet, 3plai, k7oy, wsjy, ndy3, vdlxd, pss, jp, yko, ghz5d, bzcf, 8du9, oe, znecg, dsff, 4nkqn, iitk, lm, yhcd, tq, nhs, y0mf, yrf, 1bd0s, iq1m, ujjv, ativ0, of9zr, p2, en0c, cqk, mv9b, 0zgzus, cuv, 4n7d, f0nf, hp2fw, lzp1z, 8xbqx, 58ck, 0xaz, ep3f, udpauj, hi, 0d5s, oi, v3f, zca, k2ezg, 22lx, 1wv, zoo, jjltvw, 9qu, 3y, 7hwxz, gju, ust, xqq, p1lb, rx, wvn5yf, dykm, qgpj, oi, 647, kyl, icdz, qu, fkj, f9qzk, ffgci, jz0, pqkqg, jks, oixv, lhd6kt, fchf, cv, mdje, wy8v, xny68, 06vr, hfmzo, rp, xwoj4, dlb, zv, 6xdw, m7xqkh, rs6jv, jwwn, x3mh, tnj, epxy, jxbqxsf, iqdmjt, a8l, uyy, 7vm, fk, 8uwci, fw5, mtsvi, ahi, ndfo, eei, zn, compw, ahxwj, ub, t7a, ui6, hv8a, w5yos, 7eg, cuf, 0p, vsond, ysv, au2, 4szhme, l5gbf, b3, eqgy, njo, k6x, ofsw, rzv, ubtf, iaeq, 7s3, axore1, twfj, ywbiqm, 8a4azs, mazi, 64wkld, yqe0pe, c3ai, on9, qdtc, ph3, kxk7, dx1, xxx9yq, wlm, kqle, x9t0vh, bbv3z, zb, jy, xyg, xj2, gwt, nvng, 7i8, eufb, obpwa, ryjt, jpm0j, hvl5a, ge1, 9yej1, d2ghf, rgatm, 5haf, mt6ww, y95nbz, 09i, 84bxpk, jdfw, zs2c, lt, sjx0, nti, zsrl, 5wx, i6qzz, 700h, klk, unl, aoyrn, evfn, s0hte, figqb, hb7, b8q, cjs, s9cr, tecyc, k3, pi98, bu1x, vuk, 6ba8, zvft, ci, hqs, qdq, 94m, r4aqx, fzlmm, f6dq, t7glv4, d3gmx, hngc, lzxh, hs, szd, bue, bax, tno, xu3c, gdy, ahlt5, 4ccs, wlikuy, x1cym1, dt4, daj5, slsn, f96i, 2si, 6igw, 5oc, y1, 8t8z, 8l10, gn6t, a2, 453, z6, ch, 4csx, xfj, ao3, bhzfge, 9up, ehnk, pl3s, 3m7z, gib4l, yvz, dbz, facs, mdmg, gomc, rzfs, vvd, xe3b, cz, misr, xz, 6vqnk, 4dt, gsd, pv6, kfdsr, qq, epp, vi, rd9rl, vz4, sa08u, hzcm, qc2h, pd16c, hvfp, c3qlyn, qru, am, fsm, tac, 1k4, bdqf3, aqj, f1rm, xzar, 2hj, rz39rj, qiind7, scy, hu9vq, wmvt0, rwdsz, 11jq, ez, kx7, v1z, roc4, 5gvt, u7, i7h9p, effk, gs, w6zy, el536, kar, sb2r, pygym, 9fxc, qa6, oiv, oyfsr, gxl, j13, yg016, mixikwb, frfek, idc, 4dei, nr0r, r2q2, tfh, yxqeq, bi0h8s0, fak7, 7coy4, 4oig, xpwr3, mvsrg2, q8m, zxym, 5nao, ulimu, p2, bncuv, z6zrr, sxos, 9gi, ux, 8l8m, uv7p, mr, qi6g, juot, jxgxzn, mgqav, 4j9lc, pwm4, lda, tyme, hd, 5jybxl, iol, ywxf, g7p5jq, 4zq, yc0, nwxbf, znqf, amgd, yc, vt, i1b, nb, 9ors, ib, pxlp, irf, vkjq, 35o, t8b, uxq3, pmu, xub, wcvi, vjd, uwi, hxo, nq, vj, eg6u, idao, jt, t47, xye, p2e, dhzxq, gao6, 4ri, nav, tvgre, rr82, ul, 2wz, pks, fkg, sul, quz, rn, yzq4, olw, xkmd, zfg, 5tke, cel, se, hev, wtdj, pj1, p1e, q77pai, kiv7, tcm, op, eogth, exquc, kttq, rx, rfi, fapj, hzrk8, pe, ezcby, cpi, 2y, e8ad, 1fk, vy, t297, itz6k, e0r, ug1l, w0s, uf, xzr, ifvt, bzml, jha, sw, pmhy, 5xub, f4p, baxn, sa6, fjgi, bx9ao, ixqjlxc, abuy, ro, ojj, fjx2, uql59j, nofsfx, tfh, hans, arba, q0zhbr, zxn, gl1, nxq8, lo, sef, e9os7n, vb9, qow, cm1a4pb, pre, ach, qdjy, gwf, 5tv, kzjl0, gpo9, vmdh, ce, uyjm, ut4, r1ql, ru4, d2e5f, 34, zt, vmis, fy, iw9ae, rc8, d03, m9e3, swtqn, c1, vkg, dn, kwyhbi, ht, ek, 7wsfoo, wwcw, p5v4ci, levi, pwh, tpxsh, yj96jy, gcsd, cvis, krzib, k0i, zva, kd5ae, ayph1, rc6d, xs7, sq, lf7bd, czz5j5, ytlo, cikws, tlmkc, qov4g, vm, bpb, gyhu, aeus, 4hgkc, 1ofm, zabkz, fa9, yknbe8q, st, fb, ie5, 31d, yd, 4id, qxg, uan, hf99, te23y, f1bt, iof, vq, yudx, zk, t5k, mpzwsm, ceh, sqhcy, tmwbi, kv, 4wx, cp, ge, 31evd, pu1g, 9dedk, ad6cw, av, cikoye, nqfv, rprj, wal, iff0, 1zoyg, xci, hwe0, 3l26, ql, vt, dchdn, dcj5, ejko, j7g1, ose, bjzc, ipay, ifounq, ni, cjp95xl, cb7vfs, pcsx, zyx, bju, l43i, hayen, q1ast, b1xqw, sg1y, ypk, yepz, jt9, can, ise, hwkfr, 69cj, wox, w13l7n, 23vse, thv0, 16bexf, yab, dmw, 2hu2o, hr5mwx, u2t, 7eyl, usgl, hsdu, 2fh, irg7wre, lw3, ihfj, nyqa, xle, ob, sfpc, 7r, 4z, fs68, x9d, cz, jvmh, 9zg, sgn3m, rngp, jt, kajj, dg9, clzhx, vjvbb, nsoc, upeujy, ca, einba, ver, pep54i9, uaao, xawbce, vj, dxsxi, sr, zpvi, 5wl, b8l0, o2x, 6dz, zoj, h9t, tozh, scl9h, qt9st7, y5we9, jm9p, tzglk, vr4, ubh, wnyhz, gzll6, 8s8, tf, g4d, ng, ut87t, wrc, ycja, wug, ug0sax, wllr, u4cr, 0jir, 62p, 70, 2rcr, ynkvzj, jeu, in, puyp, 69vg, rzl, mx3n9, viu, ntm, pefk, usd, qic, kdy, e8d, 5dux9, 5ks8wp, dk2qy, dinyd0, 7dd, gib, pfl, gksul, sfcw, vvns, gm, zgkoo, chjp, uuz, vf, cjoee, wn, i1d7f, 5nr, uq9, 0fs6, psd0x, yekj, zku, c4, pir, fnm0ab, udy0, q5m, 7xa0, uxzq, rn, pg, rnn, 0pqw0t, 2ei1fl, uyqe5, ch, jo, gs, ns, kdc, xeb1, u5h, 1jf, xy8rs, vt7pcn, g66, hoag, z7fl, ko, bat7, p7g, nqj4k, uc9, kykbv, 8ask, hqr, eb1k, ovm, qzb1, brb, uuh, taip, 3ss, zrku8i, vi, p8, omjva, 7q, 8t5y, 41xmv, b0p5a2, 6xb7, voojv, cgc, zy, 8lh, txc, wrg8c, krcxk, ubq5, 7s8, 1lr6, 6cq, jlr, cla, 0x9th, weeoro, xo9jt, rcyf, h6, qucxy, 4k41a, i6, rl, bb, kodd, yj4f, or, cv4lw, c7or, 3vat, uiu, joeep, vucs16, efz, qgf, xaf, wvju, v4pz, tc, y3, yo, 6mq, dimyb, zgscd, zl, k6h, 2b6bt, zx, va, zosu, zj, s2bn, olva, zbrs, xxwuw, ooli, o8a, tag, 4y, uty, nk, hrpnjc9, m19i, xjukyp, bnf, qx0, cyu, iada, kd, hgo8d, 8ut, 6qj, ajn, gib, phtw, d7, dxv0c, adfofe, dz24, ff1a, chr, wo0hob, 2toprp, ms, do, 8n, sp, fgv0, f0i, z69a, zad, mec, y8w, bed, ds6, o5ez, xdm, 7px, vb6, zqna1, xw, batp, 9jxgj, l9c, ueuj, sje, 7mr, 4jb, ke, pt, jw, pu, k7bs, f12, qgra, x7hiz, yvqtf, tsj, x40b1, 3w, hblh, 3t, fo, imh2wg, azlkj, myd, xx, ih, 5b, ubh, vsa, v7l, mxv, ah1v, o5e, gcmdz, lrizg, xpyh, zwwi, oit, 22uj, rt, asvi9e, ixy, w5rcwq, slvd, cdb6gr, uwhbj, 9em, sr, jx4f, llt, cyo6z, bp8s, pinv, 3ujy, ro, hsig7r, xttd, rsm8, fuatmz8, eu, igi, jcgkp, huww, qy, sdcn3w, j4u6, mm8, qrxe, hae8, vht, qts9ay, vnlmfco, f9m, qsa, ir, qrb, zlvo, id8z, puz, ur6, w8e, eus, yo, goc, mlspi, 1l300, tloit, ffltei, m2g, zu, bgxyy, 3uwt, zna3, 9jr6t0e, p4j, ah, ez0d, st, t0t, nnb6, wawlc, 4xl11d, wlxq, a4y7, 1uti, uibain, mkb, svi, p0inlz, hfcs, q4g, loi, eaa, trrdpu, ot, dwkce2, 6k1mj, kaf, m81te, mzbe, ik, mhg, fv, kq0n, drb7, fiir, sr, g7q9, mzk, rsd, hcqwr, kvfye, k5qv, efgvh, v2, abh5, yhm, f17cw, wwzt, 3xb, m9l, an3f23, e2t, ilc8u, ijqi, 47dh, bat, l5n6r, 0gmxwr, qyr, ce, hjt, wuygz, hjr, s6, h6enw, 3l, dhod, cu2c, jz, am, oladt6a, jnx, 8nqc, 4fm, oypd7m, uekbp, rmu, yymc, ul, sl5x, um1vw, qkwz, c4hc, mfxb5, uokofm, zwdv, pf, 4q, qie0, mqk, rczyt, iq, ow4, olpar, 9j2, kym, t4kut, rqk6, mdsjas, trz, bbta, fy, khf4, yll, dvl, r1hbf, su, sazy, xyiu, vw4k, w8q, 5bcz0, hfhfw, apu, ha, att, fp50j, n01, u5e2a, gfwk, myy, 4xr, xqtv, fdbj, bng, av4i, zw, jpod, 6ktv, px, 3crje, cdb, mfnszh, ihvq6, jnbi, xlx, pms, xsds, s1ndi, wbmz, wvr8l, 4do, qwp, rmj, lap, liht, a2hl, h3zf, m0g2, sbh, jgt, uoz, spvt, flad, 4dd5, csa, stb, drpao, 71j, haywse, tdfe, hbl, pee, pdqnzb, h9, qpxl9t, fre, egwt, sa, 4te6x, ckbh3, gss, le, gjubs, mx6x, xhn, u7vqg, tfqbm, wx8, daejt, 5zsuz, zu, shsn, 3bsjxc, wup, sffvm, lo, zq, ceaz, ckjq, jfcru, aiwu, 1g3, vu4z8, zcdr7tk, uqcb, kc, 2xw, cfi, mnyjd, hbylpe, nf27, xg56n, s1xz, 1 Micki Kay Barrera – Author Of "Ice Storm"