Plugin Directory

Changeset 2313563


Ignore:
Timestamp:
05/28/2020 08:38:22 AM (6 years ago)
Author:
codeinwp
Message:

Release v3.4.0

Location:
feedzy-rss-feeds
Files:
154 added
1 deleted
31 edited

Legend:

Unmodified
Added
Removed
  • feedzy-rss-feeds/trunk/CHANGELOG.md

    r2279039 r2313563  
    11
     2 ### v3.4.0 - 2020-05-28
     3 **Changes:**
     4 * - [Feat] Options to import feeds to posts
     5* - [Feat] New [#item_source] tag for Feed to Post to display the feed source name
     6* - [Feat] Improved Settings page style and layout
     7* - [Feat] Use SimplePieItem's get_id to determine the uniqueness of feed items
     8* - [Fix] WP 5.4 Feedzy block compatibility
     9* - [Fix] Feed Caching time stuck to 12 hours
     10* - [Fix] PHP Notice: Undefined index errors in the widget
     11* - [Fix] Bulk activation of plugin aborts activation of subsequent plugins
     12* - [Fix] Wrong shortcode mentioned in the Support tab
     13* - [Fix] Notice: Undefined index: host when item has no link element
     14 
    215 ### v3.3.19 - 2020-04-08
    316 **Changes:**
  • feedzy-rss-feeds/trunk/css/feedzy-rss-feeds.css

    r2279039 r2313563  
    33 * Feedzy RSS Feed
    44 * Copyright: (c) 2016 Themeisle, themeisle.com
    5  * Version: 3.3.19
     5 * Version: 3.4.0
    66 * Plugin Name: FEEDZY RSS Feeds
    77 * Plugin URI: http://themeisle.com/plugins/feedzy-rss-feeds/
     
    439439
    440440}
     441
     442/* gutenberg */
     443.wp-block-feedzy-rss-feeds-feedzy-block .feedzy-source {
     444    width: 400px;
     445}
     446
     447.wp-block-feedzy-rss-feeds-feedzy-block .wp-block-embed.is-loading {
     448    margin: auto !important;
     449}
  • feedzy-rss-feeds/trunk/feedzy-rss-feed.php

    r2279039 r2313563  
    1616 * Plugin URI:        https://themeisle.com/plugins/feedzy-rss-feeds-lite/
    1717 * Description:       A small and lightweight RSS aggregator plugin. Fast and very easy to use, it allows you to aggregate multiple RSS feeds into your WordPress site through fully customizable shortcodes & widgets.
    18  * Version:           3.3.19
     18 * Version:           3.4.0
    1919 * Author:            Themeisle
    2020 * Author URI:        http://themeisle.com
  • feedzy-rss-feeds/trunk/includes/abstract/feedzy-rss-feeds-admin-abstract.php

    r2266501 r2313563  
    649649        if ( false === apply_filters( 'feedzy_disable_db_cache', false, $feed_url ) ) {
    650650            $feed->set_cache_class( 'WP_Feed_Cache' );
    651             $feed->set_cache_duration( apply_filters( 'wp_feed_cache_transient_lifetime', $cache_time, $feed_url ) );
     651            add_filter(
     652                'wp_feed_cache_transient_lifetime', function( $time ) use ( $cache_time ) {
     653                    return $cache_time;
     654                }, 10, 1
     655            );
    652656        } else {
    653657            require_once( ABSPATH . 'wp-admin/includes/file.php' );
     
    883887        // Display the error message and quit (before showing the template for pro).
    884888        if ( empty( $feed_items ) ) {
    885             $content .= $sc['error_empty'];
     889            $content .= esc_html( $sc['error_empty'] );
    886890            $content .= '</ul> </div>';
    887891            return $content;
     
    10241028    private function get_feed_item_filter( $sc, $sizes, $item, $feed_url, $index ) {
    10251029        $item_link = $item->get_permalink();
     1030        // if the item has no link (possible in some cases), use the feed link
     1031        if ( empty( $item_link ) ) {
     1032            $item_link = $item->get_feed()->get_permalink();
     1033        }
    10261034        $new_link  = apply_filters( 'feedzy_item_url_filter', $item_link, $sc, $item );
     1035
    10271036        // Fetch image thumbnail
    10281037        if ( $sc['thumb'] === 'yes' || $sc['thumb'] === 'auto' ) {
     
    11041113        // multiple sources?
    11051114        $is_multiple    = is_array( $feed_url );
     1115        $feed_source    = $item->get_feed()->get_title();
    11061116
    11071117        // author.
     
    11141124            $author_name = apply_filters( 'feedzy_author_name', $author_name, $feed_url, $item );
    11151125
    1116             $feed_source = $item->get_feed()->get_title();
    11171126            if ( $is_multiple && $meta_args['source'] && ! empty( $feed_source ) ) {
    11181127                $author_name .= sprintf( ' (%s)', $feed_source );
     
    12001209            'item_description'   => $content_summary,
    12011210            'item_content'       => apply_filters( 'feedzy_content', $item->get_content( false ), $item ),
     1211            'item_source'       => $feed_source,
    12021212        );
    12031213        $item_array = apply_filters( 'feedzy_item_filter', $item_array, $item, $sc, $index );
  • feedzy-rss-feeds/trunk/includes/admin/feedzy-rss-feeds-admin.php

    r2219984 r2313563  
    126126            return;
    127127        }
    128         wp_enqueue_style( $this->plugin_name . '-upsell', FEEDZY_ABSURL . 'includes/layouts/css/upsell.css' );
    129         wp_enqueue_style( $this->plugin_name . '-settings', FEEDZY_ABSURL . 'css/metabox-settings.css', array( $this->plugin_name . '-upsell' ) );
     128        wp_enqueue_style( $this->plugin_name . '-settings', FEEDZY_ABSURL . 'css/settings.css' );
     129        wp_enqueue_style( $this->plugin_name . '-metabox', FEEDZY_ABSURL . 'css/metabox-settings.css', array( $this->plugin_name . '-settings' ) );
    130130    }
    131131
     
    568568
    569569    /**
    570      * On activation of the plugin
    571      *
    572      * @access  public
    573      */
    574     public function on_activation( $plugin ) {
     570     * Check if plugin has been activated and then redirect to the correct page.
     571     *
     572     * @access  public
     573     */
     574    public function admin_init() {
    575575        if ( defined( 'TI_UNIT_TESTING' ) ) {
    576576            return;
    577577        }
    578578
    579         if ( $plugin === FEEDZY_BASENAME ) {
    580             wp_redirect( admin_url( 'admin.php?page=feedzy-support&tab=help#shortcode' ) );
    581             exit();
     579        if ( get_option( 'feedzy-activated' ) ) {
     580            delete_option( 'feedzy-activated' );
     581            if ( ! headers_sent() ) {
     582                wp_redirect( add_query_arg( array( 'page' => 'feedzy-support', 'tab' => 'help#shortcode' ), admin_url( 'admin.php' ) ) );
     583                exit();
     584            }
    582585        }
    583586    }
  • feedzy-rss-feeds/trunk/includes/admin/feedzy-rss-feeds-ui.php

    r2266501 r2313563  
    138138     */
    139139    public function feedzy_add_tinymce_lang( $arr ) {
    140         error_log( 'called mce_external_languages' );
    141 
    142140        $feedzy_rss_feeds_ui_lang = FEEDZY_ABSPATH . '/includes/admin/feedzy-rss-feeds-ui-lang.php';
    143141        $feedzy_rss_feeds_ui_lang = apply_filters( 'feedzy_rss_feeds_ui_lang_filter', $feedzy_rss_feeds_ui_lang );
  • feedzy-rss-feeds/trunk/includes/admin/feedzy-wp-widget.php

    r2266501 r2313563  
    248248            'http' => $instance['http'],
    249249            'lazy' => ! empty( $instance['lazy'] ) ? self::bool_to_enum( $instance['lazy'] ) : false,
    250             'offset' => $instance['offset'],
    251             'multiple_meta' => $instance['multiple_meta'],
     250            'offset' => ! empty( $instance['offset'] ) ? $instance['offset'] : '',
     251            'multiple_meta' => ! empty( $instance['multiple_meta'] ) ? $instance['multiple_meta'] : '',
    252252        );
    253253        $feedzy_widget_shortcode_attributes = apply_filters( 'feedzy_widget_shortcode_attributes_filter', $feedzy_widget_shortcode_attributes, $args, $instance );
  • feedzy-rss-feeds/trunk/includes/feedzy-rss-feeds-activator.php

    r2080032 r2313563  
    4444            );
    4545        }
    46 
     46        add_option( 'feedzy-activated', true );
    4747    }
    4848
  • feedzy-rss-feeds/trunk/includes/feedzy-rss-feeds-deactivator.php

    r1747394 r2313563  
    3131     */
    3232    public static function deactivate() {
    33 
     33        delete_option( 'feedzy-activated' );
    3434    }
    3535
  • feedzy-rss-feeds/trunk/includes/feedzy-rss-feeds-feed-tweaks.php

    r1925726 r2313563  
    7171    return defined( 'FEEDZY_PRO_ABSPATH' );
    7272}
     73
     74
     75/**
     76 * Checks if the PRO version is older than a particular version.
     77 *
     78 * @since ?
     79 */
     80function feedzy_is_pro_older_than( $version ) {
     81    return version_compare( FEEDZY_PRO_VERSION, $version, '<' );
     82}
  • feedzy-rss-feeds/trunk/includes/feedzy-rss-feeds.php

    r2279039 r2313563  
    105105    public function init() {
    106106        self::$plugin_name = 'feedzy-rss-feeds';
    107         self::$version = '3.3.19';
     107        self::$version = '3.4.0';
    108108        self::$instance->load_dependencies();
    109109        self::$instance->set_locale();
     
    193193        self::$instance->loader->add_action( 'feedzy_pre_http_setup', self::$instance->admin, 'pre_http_setup', 10, 1 );
    194194        self::$instance->loader->add_action( 'feedzy_post_http_teardown', self::$instance->admin, 'post_http_teardown', 10, 1 );
    195         self::$instance->loader->add_action( 'activated_plugin', self::$instance->admin, 'on_activation', 10, 1 );
     195        self::$instance->loader->add_action( 'admin_init', self::$instance->admin, 'admin_init', 10, 1 );
    196196
    197197        self::$instance->loader->add_action( 'manage_feedzy_categories_posts_custom_column', self::$instance->admin, 'manage_feedzy_category_columns', 10, 2 );
     
    215215        self::$instance->loader->add_action( 'wp_enqueue_scripts', self::$instance->admin, 'enqueue_styles' );
    216216        self::$instance->loader->add_action( 'admin_enqueue_scripts', self::$instance->admin, 'enqueue_styles_admin' );
     217        self::$instance->loader->add_filter( 'feedzy_rss_feeds_logger_data', self::$instance->admin, 'get_usage_data', 10 );
     218
    217219        $plugin_widget = new feedzy_wp_widget();
    218220        self::$instance->loader->add_action( 'widgets_init', $plugin_widget, 'registerWidget', 10 );
    219221        self::$instance->loader->add_action( 'rest_api_init', self::$instance->admin, 'rest_route', 10 );
    220222
    221         self::$instance->loader->add_filter( 'feedzy_rss_feeds_logger_data', self::$instance->admin, 'get_usage_data', 10 );
     223        // do not include import feature if this is a pro version that does not know of this new support.
     224        if ( ! feedzy_is_pro() || has_filter( 'feedzy_free_has_import' ) ) {
     225            $plugin_import = new Feedzy_Rss_Feeds_Import( self::$instance->get_plugin_name(), self::$instance->get_version() );
     226            self::$instance->loader->add_action( 'feedzy_upsell_class', $plugin_import, 'upsell_class', 10, 1 );
     227            self::$instance->loader->add_action( 'feedzy_upsell_content', $plugin_import, 'upsell_content', 10, 1 );
     228            self::$instance->loader->add_action( 'admin_enqueue_scripts', $plugin_import, 'enqueue_styles' );
     229            self::$instance->loader->add_action( 'init', $plugin_import, 'register_import_post_type', 9, 1 );
     230            self::$instance->loader->add_action( 'feedzy_cron', $plugin_import, 'run_cron' );
     231            self::$instance->loader->add_action( 'save_post_feedzy_imports', $plugin_import, 'save_feedzy_import_feed_meta', 1, 2 );
     232            self::$instance->loader->add_action( 'wp_ajax_import_status', $plugin_import, 'import_status' );
     233            self::$instance->loader->add_action( 'wp_ajax_get_taxonomies', $plugin_import, 'get_taxonomies' );
     234            self::$instance->loader->add_action( 'wp_ajax_run_now', $plugin_import, 'run_now' );
     235            self::$instance->loader->add_action( 'manage_feedzy_imports_posts_custom_column', $plugin_import, 'manage_feedzy_import_columns', 10, 2 );
     236            self::$instance->loader->add_action( 'wp', $plugin_import, 'wp' );
     237
     238            self::$instance->loader->add_filter( 'feedzy_items_limit', $plugin_import, 'items_limit', 10, 2 );
     239            self::$instance->loader->add_filter( 'feedzy_settings_tabs', $plugin_import, 'settings_tabs', 10, 1 );
     240            self::$instance->loader->add_filter( 'redirect_post_location', $plugin_import, 'redirect_post_location', 10, 2 );
     241            self::$instance->loader->add_filter( 'manage_feedzy_imports_posts_columns', $plugin_import, 'feedzy_import_columns' );
     242            self::$instance->loader->add_action( 'admin_notices', $plugin_import, 'admin_notices' );
     243            self::$instance->loader->add_action( 'plugins_loaded', $plugin_import, 'add_cron' );
     244            self::$instance->loader->add_filter( 'feedzy_item_filter', $plugin_import, 'add_data_to_item', 10, 4 );
     245            self::$instance->loader->add_filter( 'feedzy_display_tab_settings', $plugin_import, 'display_tab_settings', 10, 2 );
     246            self::$instance->loader->add_filter( 'feedzy_save_tab_settings', $plugin_import, 'save_tab_settings', 10, 2 );
     247            self::$instance->loader->add_filter( 'feedzy_render_magic_tags', $plugin_import, 'render_magic_tags', 10, 3 );
     248            self::$instance->loader->add_filter( 'feedzy_magic_tags_title', $plugin_import, 'magic_tags_title' );
     249            self::$instance->loader->add_filter( 'feedzy_magic_tags_date', $plugin_import, 'magic_tags_date' );
     250            self::$instance->loader->add_filter( 'feedzy_magic_tags_content', $plugin_import, 'magic_tags_content' );
     251            self::$instance->loader->add_filter( 'feedzy_magic_tags_image', $plugin_import, 'magic_tags_image' );
     252            self::$instance->loader->add_filter( 'feedzy_retrieve_categories', $plugin_import, 'retrieve_categories', 10, 2 );
     253            self::$instance->loader->add_filter( 'feedzy_is_license_of_type', $plugin_import, 'feedzy_is_license_of_type', 10, 2 );
     254        }
    222255
    223256        if ( ! defined( 'TI_UNIT_TESTING' ) ) {
  • feedzy-rss-feeds/trunk/includes/gutenberg/build/block.js

    r2266501 r2313563  
    243243
    244244"use strict";
    245 eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__style_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_query_string__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_query_string___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_query_string__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__attributes__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__inspector__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils__ = __webpack_require__(52);\n\n\nvar _this = this;\n\n// jshint ignore: start\n\n/**\r\n * Block dependencies\r\n */\n\n\n\n\n\n\n/**\r\n * Internal block libraries\r\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$components = wp.components,\n    ExternalLink = _wp$components.ExternalLink,\n    Placeholder = _wp$components.Placeholder,\n    TextControl = _wp$components.TextControl,\n    Button = _wp$components.Button,\n    Spinner = _wp$components.Spinner;\nvar date = wp.date.date;\n\n/**\r\n * Register block\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (registerBlockType('feedzy-rss-feeds/feedzy-block', {\n\ttitle: __('Feedzy RSS Feeds'),\n\tcategory: 'common',\n\ticon: 'rss',\n\tkeywords: [__('Feedzy RSS Feeds'), __('RSS'), __('Feeds')],\n\tsupports: {\n\t\thtml: false\n\t},\n\tattributes: __WEBPACK_IMPORTED_MODULE_3__attributes__[\"a\" /* default */],\n\tedit: function edit(props) {\n\t\tvar onChangeFeeds = function onChangeFeeds(value) {\n\t\t\tprops.setAttributes({ feeds: value });\n\t\t};\n\t\tvar onChangeMax = function onChangeMax(value) {\n\t\t\tprops.setAttributes({ max: !value ? 5 : Number(value) });\n\t\t};\n\t\tvar onChangeOffset = function onChangeOffset(value) {\n\t\t\tprops.setAttributes({ offset: Number(value) });\n\t\t};\n\t\tvar toggleFeedTitle = function toggleFeedTitle(value) {\n\t\t\tprops.setAttributes({ feed_title: !props.attributes.feed_title });\n\t\t};\n\t\tvar onRefresh = function onRefresh(value) {\n\t\t\tprops.setAttributes({ refresh: value });\n\t\t};\n\t\tvar onSort = function onSort(value) {\n\t\t\tprops.setAttributes({ sort: value });\n\t\t};\n\t\tvar onTarget = function onTarget(value) {\n\t\t\tprops.setAttributes({ target: value });\n\t\t};\n\t\tvar onTitle = function onTitle(value) {\n\t\t\tprops.setAttributes({ title: Number(value) });\n\t\t};\n\t\tvar changeMeta = function changeMeta(value) {\n\t\t\tprops.setAttributes({ metafields: value });\n\t\t};\n\t\tvar changeMultipleMeta = function changeMultipleMeta(value) {\n\t\t\tprops.setAttributes({ multiple_meta: value });\n\t\t};\n\t\tvar toggleSummary = function toggleSummary(value) {\n\t\t\tprops.setAttributes({ summary: !props.attributes.summary });\n\t\t};\n\t\tvar toggleLazy = function toggleLazy(value) {\n\t\t\tprops.setAttributes({ lazy: !props.attributes.lazy });\n\t\t};\n\t\tvar onSummaryLength = function onSummaryLength(value) {\n\t\t\tprops.setAttributes({ summarylength: Number(value) });\n\t\t};\n\t\tvar onKeywordsTitle = function onKeywordsTitle(value) {\n\t\t\tprops.setAttributes({ keywords_title: value });\n\t\t};\n\t\tvar onKeywordsBan = function onKeywordsBan(value) {\n\t\t\tprops.setAttributes({ keywords_ban: value });\n\t\t};\n\t\tvar onThumb = function onThumb(value) {\n\t\t\tprops.setAttributes({ thumb: value });\n\t\t};\n\t\tvar onDefault = function onDefault(value) {\n\t\t\tprops.setAttributes({ default: value });\n\t\t};\n\t\tvar onSize = function onSize(value) {\n\t\t\tprops.setAttributes({ size: !value ? 150 : Number(value) });\n\t\t};\n\t\tvar onReferralURL = function onReferralURL(value) {\n\t\t\tprops.setAttributes({ referral_url: value });\n\t\t};\n\t\tvar onColumns = function onColumns(value) {\n\t\t\tprops.setAttributes({ columns: value });\n\t\t};\n\t\tvar onTemplate = function onTemplate(value) {\n\t\t\tprops.setAttributes({ template: value });\n\t\t};\n\t\tvar togglePrice = function togglePrice(value) {\n\t\t\tprops.setAttributes({ price: !props.attributes.price });\n\t\t};\n\t\tvar loadFeed = function loadFeed() {\n\t\t\tprops.setAttributes({ status: 1 });\n\n\t\t\tvar url = props.attributes.feeds;\n\n\t\t\tif (url === undefined) {\n\t\t\t\treturn props.setAttributes({ status: 3 });\n\t\t\t}\n\n\t\t\tif (Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"c\" /* inArray */])(url, props.attributes.categories)) {\n\t\t\t\tvar category = url;\n\t\t\t\turl = __WEBPACK_IMPORTED_MODULE_2_query_string___default.a.stringify({ category: category }, { arrayFormat: 'bracket' });\n\t\t\t} else {\n\t\t\t\turl = url.replace(/\\s/g, '').split(',').filter(function (item) {\n\t\t\t\t\treturn item !== '';\n\t\t\t\t});\n\t\t\t\turl = __WEBPACK_IMPORTED_MODULE_2_query_string___default.a.stringify({ url: url }, { arrayFormat: 'bracket' });\n\t\t\t}\n\n\t\t\twp.apiRequest({ path: '/feedzy/v1/feed?' + url }).then(function (data) {\n\t\t\t\tif (_this.unmounting) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\tif (!data['error']) {\n\t\t\t\t\tprops.setAttributes({ feedData: data });\n\t\t\t\t\tprops.setAttributes({ status: 2 });\n\t\t\t\t\treturn data;\n\t\t\t\t} else {\n\t\t\t\t\tprops.setAttributes({ status: 3 });\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}).fail(function (err) {\n\t\t\t\tprops.setAttributes({ status: 3 });\n\t\t\t\treturn err;\n\t\t\t});\n\t\t};\n\t\tvar loadCategories = function loadCategories() {\n\t\t\twp.apiRequest({ path: '/wp/v2/feedzy_categories' }).then(function (data) {\n\t\t\t\tif (_this.unmounting) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\tvar i = 0;\n\t\t\t\tvar categories = [];\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tcategories[i] = item.slug;\n\t\t\t\t\ti = i + 1;\n\t\t\t\t});\n\t\t\t\tprops.setAttributes({ categories: categories });\n\t\t\t\tjQuery('.feedzy-source input').autocomplete({\n\t\t\t\t\tsource: categories,\n\t\t\t\t\tselect: function select(event, ui) {\n\t\t\t\t\t\tprops.setAttributes({ feeds: ui.item.label });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).fail(function (err) {\n\t\t\t\treturn err;\n\t\t\t});\n\t\t};\n\t\tvar metaExists = function metaExists(value) {\n\t\t\treturn 0 <= props.attributes.metafields.replace(/\\s/g, '').split(',').indexOf(value) || '' === props.attributes.metafields;\n\t\t};\n\t\tvar multipleMetaExists = function multipleMetaExists(value) {\n\t\t\treturn 0 <= props.attributes.multiple_meta.replace(/\\s/g, '').split(',').indexOf(value) || '' === props.attributes.multiple_meta;\n\t\t};\n\t\tif (props.attributes.categories === undefined) {\n\t\t\tif (!props.attributes.meta) {\n\t\t\t\tprops.setAttributes({\n\t\t\t\t\tmeta: true,\n\t\t\t\t\tmetafields: 'no'\n\t\t\t\t});\n\t\t\t}\n\t\t\tloadCategories();\n\t\t}\n\t\treturn [\n\t\t// Inspector\n\t\t!!props.isSelected && wp.element.createElement(__WEBPACK_IMPORTED_MODULE_4__inspector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({ onChangeFeeds: onChangeFeeds, onChangeMax: onChangeMax, onChangeOffset: onChangeOffset, toggleFeedTitle: toggleFeedTitle, onRefresh: onRefresh, onSort: onSort, onTarget: onTarget, onTitle: onTitle, changeMeta: changeMeta, changeMultipleMeta: changeMultipleMeta, toggleSummary: toggleSummary, toggleLazy: toggleLazy, onSummaryLength: onSummaryLength, onKeywordsTitle: onKeywordsTitle, onKeywordsBan: onKeywordsBan, onThumb: onThumb, onDefault: onDefault, onSize: onSize, onReferralURL: onReferralURL, onColumns: onColumns, onTemplate: onTemplate, togglePrice: togglePrice, loadFeed: loadFeed }, props)), props.attributes.status !== 2 && wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: props.className },\n\t\t\twp.element.createElement(\n\t\t\t\tPlaceholder,\n\t\t\t\t{\n\t\t\t\t\tkey: 'placeholder',\n\t\t\t\t\ticon: 'rss',\n\t\t\t\t\tlabel: __('Feedzy RSS Feeds')\n\t\t\t\t},\n\t\t\t\tprops.attributes.status === 1 ? wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ key: 'loading', className: 'wp-block-embed is-loading' },\n\t\t\t\t\twp.element.createElement(Spinner, null),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t__('Fetching…')\n\t\t\t\t\t)\n\t\t\t\t) : [wp.element.createElement(TextControl, {\n\t\t\t\t\ttype: 'url',\n\t\t\t\t\tclassName: 'feedzy-source',\n\t\t\t\t\tplaceholder: __('Enter URL or category of your feed here…'),\n\t\t\t\t\tonChange: onChangeFeeds,\n\t\t\t\t\tvalue: props.attributes.feeds\n\t\t\t\t}), wp.element.createElement(\n\t\t\t\t\tButton,\n\t\t\t\t\t{\n\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\ttype: 'submit',\n\t\t\t\t\t\tonClick: loadFeed\n\t\t\t\t\t},\n\t\t\t\t\t__('Load Feed')\n\t\t\t\t), props.attributes.status === 3 && wp.element.createElement(\n\t\t\t\t\t'span',\n\t\t\t\t\tnull,\n\t\t\t\t\t__('Feed URL Invalid')\n\t\t\t\t), wp.element.createElement(\n\t\t\t\t\t'span',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\tExternalLink,\n\t\t\t\t\t\t{ href: 'https://validator.w3.org/feed/' },\n\t\t\t\t\t\t__('Click here to check if feed is valid. ')\n\t\t\t\t\t),\n\t\t\t\t\t__('Invalid feeds will NOT display items.')\n\t\t\t\t)]\n\t\t\t)\n\t\t), !!(props.attributes.status === 2 && props.attributes.feedData !== undefined) && wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: 'feedzy-rss' },\n\t\t\tprops.attributes.feed_title && props.attributes.feedData['channel'] !== null && wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'rss_header' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'h2',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t{ className: 'rss_title' },\n\t\t\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(props.attributes.feedData['channel']['title'])\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'span',\n\t\t\t\t\t\t{ className: 'rss_description' },\n\t\t\t\t\t\t' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(props.attributes.feedData['channel']['description'])\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'ul',\n\t\t\t\t{ className: 'feedzy-' + props.attributes.template },\n\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"b\" /* filterData */])(props.attributes.feedData['items'], props.attributes.sort, props.attributes.keywords_title, props.attributes.keywords_ban, props.attributes.max, props.attributes.offset).map(function (item, i) {\n\t\t\t\t\tvar itemDateTime = (item['date'] || '') + ' ' + (item['time'] || '') + ' UTC +0000';\n\t\t\t\t\tvar itemDate = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['date']) || '';\n\t\t\t\t\tvar itemTime = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['time']) || '';\n\t\t\t\t\tvar categories = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['categories']) || '';\n\t\t\t\t\tif (metaExists('tz=local')) {\n\t\t\t\t\t\titemDate = date('F jS, \\o', itemDateTime);\n\t\t\t\t\t\titemTime = date('h:i A', itemDateTime);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar author = item['creator'] && metaExists('author') ? item['creator'] : '';\n\t\t\t\t\tif (props.attributes.multiple_meta !== '' && props.attributes.multiple_meta !== 'no') {\n\t\t\t\t\t\tif ((multipleMetaExists('source') || multipleMetaExists('yes')) && author !== '' && item['source'] !== '') {\n\t\t\t\t\t\t\tauthor = author + ' (' + item['source'] + ')';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta_values = new Object();\n\t\t\t\t\tmeta_values['author'] = __('by') + ' ' + author;\n\t\t\t\t\tmeta_values['date'] = __('on') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(itemDate);\n\t\t\t\t\tmeta_values['time'] = __('at') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(itemTime);\n\t\t\t\t\tmeta_values['categories'] = __('in') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(categories);\n\n\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t{ key: i, style: { padding: '15px 0 25px' }, className: 'rss_item feedzy-rss-col-' + props.attributes.columns },\n\t\t\t\t\t\t(item['thumbnail'] && props.attributes.thumb === 'auto' || props.attributes.thumb === 'yes') && wp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'rss_image', style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px' } },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t{ title: Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']), style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px' } },\n\t\t\t\t\t\t\t\twp.element.createElement('span', { className: 'fetched', style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px', backgroundImage: 'url(' + (item['thumbnail'] ? item['thumbnail'] : props.attributes.default ? props.attributes.default.url : feedzyjs.imagepath + 'feedzy-default.jpg') + ')' }, title: Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']) })\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'rss_content_wrap' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t{ className: 'title' },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\tprops.attributes.title && Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']).length > props.attributes.title ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']).substring(0, props.attributes.title) + '...' : Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title'])\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'rss_content' },\n\t\t\t\t\t\t\t\tprops.attributes.metafields !== 'no' && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'small',\n\t\t\t\t\t\t\t\t\t{ className: 'meta' },\n\t\t\t\t\t\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"a\" /* arrangeMeta */])(meta_values, props.attributes.metafields)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tprops.attributes.summary && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\t\t\t{ className: 'description' },\n\t\t\t\t\t\t\t\t\tprops.attributes.summarylength && Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description']).length > props.attributes.summarylength ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description']).substring(0, props.attributes.summarylength) + ' […]' : Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description'])\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfeedzyjs.isPro && item['media'] && item['media']['src'] && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'audio',\n\t\t\t\t\t\t\t\t\t{ controls: true, controlsList: 'nodownload' },\n\t\t\t\t\t\t\t\t\twp.element.createElement('source', { src: item['media']['src'], type: item['media']['type'] }),\n\t\t\t\t\t\t\t\t\t__('Your browser does not support the audio element. But you can check this for the original link: '),\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t\t{ href: item['media']['src'] },\n\t\t\t\t\t\t\t\t\t\titem['media']['src']\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfeedzyjs.isPro && props.attributes.price && item['price'] && props.attributes.template !== 'default' && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'price-wrap' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t\t{ className: 'price' },\n\t\t\t\t\t\t\t\t\t\t\titem['price']\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t)\n\t\t)];\n\t},\n\tsave: function save() {\n\t\t// Rendering in PHP\n\t\treturn null;\n\t}\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2Jsb2NrLmpzPzUxZTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9leHRlbmRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzJztcblxudmFyIF90aGlzID0gdGhpcztcblxuLy8ganNoaW50IGlnbm9yZTogc3RhcnRcblxuLyoqXHJcbiAqIEJsb2NrIGRlcGVuZGVuY2llc1xyXG4gKi9cbmltcG9ydCAnLi9zdHlsZS5zY3NzJztcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxdWVyeS1zdHJpbmcnO1xuaW1wb3J0IGJsb2NrQXR0cmlidXRlcyBmcm9tICcuL2F0dHJpYnV0ZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5pbXBvcnQgeyB1bmVzY2FwZUhUTUwsIGZpbHRlckRhdGEsIGluQXJyYXksIGFycmFuZ2VNZXRhIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxyXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcclxuICovXG52YXIgX18gPSB3cC5pMThuLl9fO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBFeHRlcm5hbExpbmsgPSBfd3AkY29tcG9uZW50cy5FeHRlcm5hbExpbmssXG4gICAgUGxhY2Vob2xkZXIgPSBfd3AkY29tcG9uZW50cy5QbGFjZWhvbGRlcixcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sLFxuICAgIEJ1dHRvbiA9IF93cCRjb21wb25lbnRzLkJ1dHRvbixcbiAgICBTcGlubmVyID0gX3dwJGNvbXBvbmVudHMuU3Bpbm5lcjtcbnZhciBkYXRlID0gd3AuZGF0ZS5kYXRlO1xuXG4vKipcclxuICogUmVnaXN0ZXIgYmxvY2tcclxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyQmxvY2tUeXBlKCdmZWVkenktcnNzLWZlZWRzL2ZlZWR6eS1ibG9jaycsIHtcblx0dGl0bGU6IF9fKCdGZWVkenkgUlNTIEZlZWRzJyksXG5cdGNhdGVnb3J5OiAnY29tbW9uJyxcblx0aWNvbjogJ3JzcycsXG5cdGtleXdvcmRzOiBbX18oJ0ZlZWR6eSBSU1MgRmVlZHMnKSwgX18oJ1JTUycpLCBfXygnRmVlZHMnKV0sXG5cdHN1cHBvcnRzOiB7XG5cdFx0aHRtbDogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczogYmxvY2tBdHRyaWJ1dGVzLFxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIG9uQ2hhbmdlRmVlZHMgPSBmdW5jdGlvbiBvbkNoYW5nZUZlZWRzKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZHM6IHZhbHVlIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uQ2hhbmdlTWF4ID0gZnVuY3Rpb24gb25DaGFuZ2VNYXgodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBtYXg6ICF2YWx1ZSA/IDUgOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uQ2hhbmdlT2Zmc2V0ID0gZnVuY3Rpb24gb25DaGFuZ2VPZmZzZXQodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBvZmZzZXQ6IE51bWJlcih2YWx1ZSkgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlRmVlZFRpdGxlID0gZnVuY3Rpb24gdG9nZ2xlRmVlZFRpdGxlKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZF90aXRsZTogIXByb3BzLmF0dHJpYnV0ZXMuZmVlZF90aXRsZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblJlZnJlc2ggPSBmdW5jdGlvbiBvblJlZnJlc2godmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyByZWZyZXNoOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblNvcnQgPSBmdW5jdGlvbiBvblNvcnQodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzb3J0OiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRhcmdldCA9IGZ1bmN0aW9uIG9uVGFyZ2V0KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgdGFyZ2V0OiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRpdGxlID0gZnVuY3Rpb24gb25UaXRsZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHRpdGxlOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIGNoYW5nZU1ldGEgPSBmdW5jdGlvbiBjaGFuZ2VNZXRhKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbWV0YWZpZWxkczogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgY2hhbmdlTXVsdGlwbGVNZXRhID0gZnVuY3Rpb24gY2hhbmdlTXVsdGlwbGVNZXRhKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbXVsdGlwbGVfbWV0YTogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlU3VtbWFyeSA9IGZ1bmN0aW9uIHRvZ2dsZVN1bW1hcnkodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzdW1tYXJ5OiAhcHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5IH0pO1xuXHRcdH07XG5cdFx0dmFyIHRvZ2dsZUxhenkgPSBmdW5jdGlvbiB0b2dnbGVMYXp5KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbGF6eTogIXByb3BzLmF0dHJpYnV0ZXMubGF6eSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblN1bW1hcnlMZW5ndGggPSBmdW5jdGlvbiBvblN1bW1hcnlMZW5ndGgodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzdW1tYXJ5bGVuZ3RoOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uS2V5d29yZHNUaXRsZSA9IGZ1bmN0aW9uIG9uS2V5d29yZHNUaXRsZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGtleXdvcmRzX3RpdGxlOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvbktleXdvcmRzQmFuID0gZnVuY3Rpb24gb25LZXl3b3Jkc0Jhbih2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGtleXdvcmRzX2JhbjogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25UaHVtYiA9IGZ1bmN0aW9uIG9uVGh1bWIodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyB0aHVtYjogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25EZWZhdWx0ID0gZnVuY3Rpb24gb25EZWZhdWx0KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZGVmYXVsdDogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25TaXplID0gZnVuY3Rpb24gb25TaXplKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc2l6ZTogIXZhbHVlID8gMTUwIDogTnVtYmVyKHZhbHVlKSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblJlZmVycmFsVVJMID0gZnVuY3Rpb24gb25SZWZlcnJhbFVSTCh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHJlZmVycmFsX3VybDogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25Db2x1bW5zID0gZnVuY3Rpb24gb25Db2x1bW5zKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY29sdW1uczogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25UZW1wbGF0ZSA9IGZ1bmN0aW9uIG9uVGVtcGxhdGUodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyB0ZW1wbGF0ZTogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlUHJpY2UgPSBmdW5jdGlvbiB0b2dnbGVQcmljZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHByaWNlOiAhcHJvcHMuYXR0cmlidXRlcy5wcmljZSB9KTtcblx0XHR9O1xuXHRcdHZhciBsb2FkRmVlZCA9IGZ1bmN0aW9uIGxvYWRGZWVkKCkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMSB9KTtcblxuXHRcdFx0dmFyIHVybCA9IHByb3BzLmF0dHJpYnV0ZXMuZmVlZHM7XG5cblx0XHRcdGlmICh1cmwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRyZXR1cm4gcHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMyB9KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGluQXJyYXkodXJsLCBwcm9wcy5hdHRyaWJ1dGVzLmNhdGVnb3JpZXMpKSB7XG5cdFx0XHRcdHZhciBjYXRlZ29yeSA9IHVybDtcblx0XHRcdFx0dXJsID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KHsgY2F0ZWdvcnk6IGNhdGVnb3J5IH0sIHsgYXJyYXlGb3JtYXQ6ICdicmFja2V0JyB9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHVybCA9IHVybC5yZXBsYWNlKC9cXHMvZywgJycpLnNwbGl0KCcsJykuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGl0ZW0gIT09ICcnO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dXJsID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KHsgdXJsOiB1cmwgfSwgeyBhcnJheUZvcm1hdDogJ2JyYWNrZXQnIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHR3cC5hcGlSZXF1ZXN0KHsgcGF0aDogJy9mZWVkenkvdjEvZmVlZD8nICsgdXJsIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcblx0XHRcdFx0aWYgKF90aGlzLnVubW91bnRpbmcpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWRhdGFbJ2Vycm9yJ10pIHtcblx0XHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZERhdGE6IGRhdGEgfSk7XG5cdFx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMiB9KTtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc3RhdHVzOiAzIH0pO1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5mYWlsKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMyB9KTtcblx0XHRcdFx0cmV0dXJuIGVycjtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0dmFyIGxvYWRDYXRlZ29yaWVzID0gZnVuY3Rpb24gbG9hZENhdGVnb3JpZXMoKSB7XG5cdFx0XHR3cC5hcGlSZXF1ZXN0KHsgcGF0aDogJy93cC92Mi9mZWVkenlfY2F0ZWdvcmllcycgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuXHRcdFx0XHRpZiAoX3RoaXMudW5tb3VudGluZykge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBpID0gMDtcblx0XHRcdFx0dmFyIGNhdGVnb3JpZXMgPSBbXTtcblx0XHRcdFx0ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG5cdFx0XHRcdFx0Y2F0ZWdvcmllc1tpXSA9IGl0ZW0uc2x1Zztcblx0XHRcdFx0XHRpID0gaSArIDE7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY2F0ZWdvcmllczogY2F0ZWdvcmllcyB9KTtcblx0XHRcdFx0alF1ZXJ5KCcuZmVlZHp5LXNvdXJjZSBpbnB1dCcpLmF1dG9jb21wbGV0ZSh7XG5cdFx0XHRcdFx0c291cmNlOiBjYXRlZ29yaWVzLFxuXHRcdFx0XHRcdHNlbGVjdDogZnVuY3Rpb24gc2VsZWN0KGV2ZW50LCB1aSkge1xuXHRcdFx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGZlZWRzOiB1aS5pdGVtLmxhYmVsIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KS5mYWlsKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0cmV0dXJuIGVycjtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0dmFyIG1ldGFFeGlzdHMgPSBmdW5jdGlvbiBtZXRhRXhpc3RzKHZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gMCA8PSBwcm9wcy5hdHRyaWJ1dGVzLm1ldGFmaWVsZHMucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpLmluZGV4T2YodmFsdWUpIHx8ICcnID09PSBwcm9wcy5hdHRyaWJ1dGVzLm1ldGFmaWVsZHM7XG5cdFx0fTtcblx0XHR2YXIgbXVsdGlwbGVNZXRhRXhpc3RzID0gZnVuY3Rpb24gbXVsdGlwbGVNZXRhRXhpc3RzKHZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gMCA8PSBwcm9wcy5hdHRyaWJ1dGVzLm11bHRpcGxlX21ldGEucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpLmluZGV4T2YodmFsdWUpIHx8ICcnID09PSBwcm9wcy5hdHRyaWJ1dGVzLm11bHRpcGxlX21ldGE7XG5cdFx0fTtcblx0XHRpZiAocHJvcHMuYXR0cmlidXRlcy5jYXRlZ29yaWVzID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICghcHJvcHMuYXR0cmlidXRlcy5tZXRhKSB7XG5cdFx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoe1xuXHRcdFx0XHRcdG1ldGE6IHRydWUsXG5cdFx0XHRcdFx0bWV0YWZpZWxkczogJ25vJ1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGxvYWRDYXRlZ29yaWVzKCk7XG5cdFx0fVxuXHRcdHJldHVybiBbXG5cdFx0Ly8gSW5zcGVjdG9yXG5cdFx0ISFwcm9wcy5pc1NlbGVjdGVkICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChJbnNwZWN0b3IsIF9leHRlbmRzKHsgb25DaGFuZ2VGZWVkczogb25DaGFuZ2VGZWVkcywgb25DaGFuZ2VNYXg6IG9uQ2hhbmdlTWF4LCBvbkNoYW5nZU9mZnNldDogb25DaGFuZ2VPZmZzZXQsIHRvZ2dsZUZlZWRUaXRsZTogdG9nZ2xlRmVlZFRpdGxlLCBvblJlZnJlc2g6IG9uUmVmcmVzaCwgb25Tb3J0OiBvblNvcnQsIG9uVGFyZ2V0OiBvblRhcmdldCwgb25UaXRsZTogb25UaXRsZSwgY2hhbmdlTWV0YTogY2hhbmdlTWV0YSwgY2hhbmdlTXVsdGlwbGVNZXRhOiBjaGFuZ2VNdWx0aXBsZU1ldGEsIHRvZ2dsZVN1bW1hcnk6IHRvZ2dsZVN1bW1hcnksIHRvZ2dsZUxhenk6IHRvZ2dsZUxhenksIG9uU3VtbWFyeUxlbmd0aDogb25TdW1tYXJ5TGVuZ3RoLCBvbktleXdvcmRzVGl0bGU6IG9uS2V5d29yZHNUaXRsZSwgb25LZXl3b3Jkc0Jhbjogb25LZXl3b3Jkc0Jhbiwgb25UaHVtYjogb25UaHVtYiwgb25EZWZhdWx0OiBvbkRlZmF1bHQsIG9uU2l6ZTogb25TaXplLCBvblJlZmVycmFsVVJMOiBvblJlZmVycmFsVVJMLCBvbkNvbHVtbnM6IG9uQ29sdW1ucywgb25UZW1wbGF0ZTogb25UZW1wbGF0ZSwgdG9nZ2xlUHJpY2U6IHRvZ2dsZVByaWNlLCBsb2FkRmVlZDogbG9hZEZlZWQgfSwgcHJvcHMpKSwgcHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgIT09IDIgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0J2RpdicsXG5cdFx0XHR7IGNsYXNzTmFtZTogcHJvcHMuY2xhc3NOYW1lIH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBsYWNlaG9sZGVyLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiAncGxhY2Vob2xkZXInLFxuXHRcdFx0XHRcdGljb246ICdyc3MnLFxuXHRcdFx0XHRcdGxhYmVsOiBfXygnRmVlZHp5IFJTUyBGZWVkcycpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuc3RhdHVzID09PSAxID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdHsga2V5OiAnbG9hZGluZycsIGNsYXNzTmFtZTogJ3dwLWJsb2NrLWVtYmVkIGlzLWxvYWRpbmcnIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNwaW5uZXIsIG51bGwpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdwJyxcblx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRfXygnRmV0Y2hpbmfigKYnKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSA6IFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHR0eXBlOiAndXJsJyxcblx0XHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktc291cmNlJyxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcjogX18oJ0VudGVyIFVSTCBvciBjYXRlZ29yeSBvZiB5b3VyIGZlZWQgaGVyZeKApicpLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBvbkNoYW5nZUZlZWRzLFxuXHRcdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLmZlZWRzXG5cdFx0XHRcdH0pLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0QnV0dG9uLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0XHRcdG9uQ2xpY2s6IGxvYWRGZWVkXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRfXygnTG9hZCBGZWVkJylcblx0XHRcdFx0KSwgcHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgPT09IDMgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdzcGFuJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdF9fKCdGZWVkIFVSTCBJbnZhbGlkJylcblx0XHRcdFx0KSwgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdzcGFuJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdEV4dGVybmFsTGluayxcblx0XHRcdFx0XHRcdHsgaHJlZjogJ2h0dHBzOi8vdmFsaWRhdG9yLnczLm9yZy9mZWVkLycgfSxcblx0XHRcdFx0XHRcdF9fKCdDbGljayBoZXJlIHRvIGNoZWNrIGlmIGZlZWQgaXMgdmFsaWQuICcpXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRfXygnSW52YWxpZCBmZWVkcyB3aWxsIE5PVCBkaXNwbGF5IGl0ZW1zLicpXG5cdFx0XHRcdCldXG5cdFx0XHQpXG5cdFx0KSwgISEocHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgPT09IDIgJiYgcHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YSAhPT0gdW5kZWZpbmVkKSAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHQnZGl2Jyxcblx0XHRcdHsgY2xhc3NOYW1lOiAnZmVlZHp5LXJzcycgfSxcblx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuZmVlZF90aXRsZSAmJiBwcm9wcy5hdHRyaWJ1dGVzLmZlZWREYXRhWydjaGFubmVsJ10gIT09IG51bGwgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0eyBjbGFzc05hbWU6ICdyc3NfaGVhZGVyJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J2gyJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdhJyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAncnNzX3RpdGxlJyB9LFxuXHRcdFx0XHRcdFx0dW5lc2NhcGVIVE1MKHByb3BzLmF0dHJpYnV0ZXMuZmVlZERhdGFbJ2NoYW5uZWwnXVsndGl0bGUnXSlcblx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdzcGFuJyxcblx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAncnNzX2Rlc2NyaXB0aW9uJyB9LFxuXHRcdFx0XHRcdFx0JyAnICsgdW5lc2NhcGVIVE1MKHByb3BzLmF0dHJpYnV0ZXMuZmVlZERhdGFbJ2NoYW5uZWwnXVsnZGVzY3JpcHRpb24nXSlcblx0XHRcdFx0XHQpXG5cdFx0XHRcdClcblx0XHRcdCksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdCd1bCcsXG5cdFx0XHRcdHsgY2xhc3NOYW1lOiAnZmVlZHp5LScgKyBwcm9wcy5hdHRyaWJ1dGVzLnRlbXBsYXRlIH0sXG5cdFx0XHRcdGZpbHRlckRhdGEocHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YVsnaXRlbXMnXSwgcHJvcHMuYXR0cmlidXRlcy5zb3J0LCBwcm9wcy5hdHRyaWJ1dGVzLmtleXdvcmRzX3RpdGxlLCBwcm9wcy5hdHRyaWJ1dGVzLmtleXdvcmRzX2JhbiwgcHJvcHMuYXR0cmlidXRlcy5tYXgsIHByb3BzLmF0dHJpYnV0ZXMub2Zmc2V0KS5tYXAoZnVuY3Rpb24gKGl0ZW0sIGkpIHtcblx0XHRcdFx0XHR2YXIgaXRlbURhdGVUaW1lID0gKGl0ZW1bJ2RhdGUnXSB8fCAnJykgKyAnICcgKyAoaXRlbVsndGltZSddIHx8ICcnKSArICcgVVRDICswMDAwJztcblx0XHRcdFx0XHR2YXIgaXRlbURhdGUgPSB1bmVzY2FwZUhUTUwoaXRlbVsnZGF0ZSddKSB8fCAnJztcblx0XHRcdFx0XHR2YXIgaXRlbVRpbWUgPSB1bmVzY2FwZUhUTUwoaXRlbVsndGltZSddKSB8fCAnJztcblx0XHRcdFx0XHR2YXIgY2F0ZWdvcmllcyA9IHVuZXNjYXBlSFRNTChpdGVtWydjYXRlZ29yaWVzJ10pIHx8ICcnO1xuXHRcdFx0XHRcdGlmIChtZXRhRXhpc3RzKCd0ej1sb2NhbCcpKSB7XG5cdFx0XHRcdFx0XHRpdGVtRGF0ZSA9IGRhdGUoJ0YgalMsIFxcbycsIGl0ZW1EYXRlVGltZSk7XG5cdFx0XHRcdFx0XHRpdGVtVGltZSA9IGRhdGUoJ2g6aSBBJywgaXRlbURhdGVUaW1lKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR2YXIgYXV0aG9yID0gaXRlbVsnY3JlYXRvciddICYmIG1ldGFFeGlzdHMoJ2F1dGhvcicpID8gaXRlbVsnY3JlYXRvciddIDogJyc7XG5cdFx0XHRcdFx0aWYgKHByb3BzLmF0dHJpYnV0ZXMubXVsdGlwbGVfbWV0YSAhPT0gJycgJiYgcHJvcHMuYXR0cmlidXRlcy5tdWx0aXBsZV9tZXRhICE9PSAnbm8nKSB7XG5cdFx0XHRcdFx0XHRpZiAoKG11bHRpcGxlTWV0YUV4aXN0cygnc291cmNlJykgfHwgbXVsdGlwbGVNZXRhRXhpc3RzKCd5ZXMnKSkgJiYgYXV0aG9yICE9PSAnJyAmJiBpdGVtWydzb3VyY2UnXSAhPT0gJycpIHtcblx0XHRcdFx0XHRcdFx0YXV0aG9yID0gYXV0aG9yICsgJyAoJyArIGl0ZW1bJ3NvdXJjZSddICsgJyknO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHZhciBtZXRhX3ZhbHVlcyA9IG5ldyBPYmplY3QoKTtcblx0XHRcdFx0XHRtZXRhX3ZhbHVlc1snYXV0aG9yJ10gPSBfXygnYnknKSArICcgJyArIGF1dGhvcjtcblx0XHRcdFx0XHRtZXRhX3ZhbHVlc1snZGF0ZSddID0gX18oJ29uJykgKyAnICcgKyB1bmVzY2FwZUhUTUwoaXRlbURhdGUpO1xuXHRcdFx0XHRcdG1ldGFfdmFsdWVzWyd0aW1lJ10gPSBfXygnYXQnKSArICcgJyArIHVuZXNjYXBlSFRNTChpdGVtVGltZSk7XG5cdFx0XHRcdFx0bWV0YV92YWx1ZXNbJ2NhdGVnb3JpZXMnXSA9IF9fKCdpbicpICsgJyAnICsgdW5lc2NhcGVIVE1MKGNhdGVnb3JpZXMpO1xuXG5cdFx0XHRcdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdsaScsXG5cdFx0XHRcdFx0XHR7IGtleTogaSwgc3R5bGU6IHsgcGFkZGluZzogJzE1cHggMCAyNXB4JyB9LCBjbGFzc05hbWU6ICdyc3NfaXRlbSBmZWVkenktcnNzLWNvbC0nICsgcHJvcHMuYXR0cmlidXRlcy5jb2x1bW5zIH0sXG5cdFx0XHRcdFx0XHQoaXRlbVsndGh1bWJuYWlsJ10gJiYgcHJvcHMuYXR0cmlidXRlcy50aHVtYiA9PT0gJ2F1dG8nIHx8IHByb3BzLmF0dHJpYnV0ZXMudGh1bWIgPT09ICd5ZXMnKSAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Jzc19pbWFnZScsIHN0eWxlOiB7IHdpZHRoOiBwcm9wcy5hdHRyaWJ1dGVzLnNpemUgKyAncHgnLCBoZWlnaHQ6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSArICdweCcgfSB9LFxuXHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0J2EnLFxuXHRcdFx0XHRcdFx0XHRcdHsgdGl0bGU6IHVuZXNjYXBlSFRNTChpdGVtWyd0aXRsZSddKSwgc3R5bGU6IHsgd2lkdGg6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSArICdweCcsIGhlaWdodDogcHJvcHMuYXR0cmlidXRlcy5zaXplICsgJ3B4JyB9IH0sXG5cdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJywgeyBjbGFzc05hbWU6ICdmZXRjaGVkJywgc3R5bGU6IHsgd2lkdGg6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSArICdweCcsIGhlaWdodDogcHJvcHMuYXR0cmlidXRlcy5zaXplICsgJ3B4JywgYmFja2dyb3VuZEltYWdlOiAndXJsKCcgKyAoaXRlbVsndGh1bWJuYWlsJ10gPyBpdGVtWyd0aHVtYm5haWwnXSA6IHByb3BzLmF0dHJpYnV0ZXMuZGVmYXVsdCA/IHByb3BzLmF0dHJpYnV0ZXMuZGVmYXVsdC51cmwgOiBmZWVkenlqcy5pbWFnZXBhdGggKyAnZmVlZHp5LWRlZmF1bHQuanBnJykgKyAnKScgfSwgdGl0bGU6IHVuZXNjYXBlSFRNTChpdGVtWyd0aXRsZSddKSB9KVxuXHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdyc3NfY29udGVudF93cmFwJyB9LFxuXHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0J3NwYW4nLFxuXHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAndGl0bGUnIH0sXG5cdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J2EnLFxuXHRcdFx0XHRcdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMudGl0bGUgJiYgdW5lc2NhcGVIVE1MKGl0ZW1bJ3RpdGxlJ10pLmxlbmd0aCA+IHByb3BzLmF0dHJpYnV0ZXMudGl0bGUgPyB1bmVzY2FwZUhUTUwoaXRlbVsndGl0bGUnXSkuc3Vic3RyaW5nKDAsIHByb3BzLmF0dHJpYnV0ZXMudGl0bGUpICsgJy4uLicgOiB1bmVzY2FwZUhUTUwoaXRlbVsndGl0bGUnXSlcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Jzc19jb250ZW50JyB9LFxuXHRcdFx0XHRcdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMubWV0YWZpZWxkcyAhPT0gJ25vJyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQnc21hbGwnLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdtZXRhJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0YXJyYW5nZU1ldGEobWV0YV92YWx1ZXMsIHByb3BzLmF0dHJpYnV0ZXMubWV0YWZpZWxkcylcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuc3VtbWFyeSAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQncCcsXG5cdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ2Rlc2NyaXB0aW9uJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5bGVuZ3RoICYmIHVuZXNjYXBlSFRNTChpdGVtWydkZXNjcmlwdGlvbiddKS5sZW5ndGggPiBwcm9wcy5hdHRyaWJ1dGVzLnN1bW1hcnlsZW5ndGggPyB1bmVzY2FwZUhUTUwoaXRlbVsnZGVzY3JpcHRpb24nXSkuc3Vic3RyaW5nKDAsIHByb3BzLmF0dHJpYnV0ZXMuc3VtbWFyeWxlbmd0aCkgKyAnIFvigKZdJyA6IHVuZXNjYXBlSFRNTChpdGVtWydkZXNjcmlwdGlvbiddKVxuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0ZmVlZHp5anMuaXNQcm8gJiYgaXRlbVsnbWVkaWEnXSAmJiBpdGVtWydtZWRpYSddWydzcmMnXSAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQnYXVkaW8nLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjb250cm9sczogdHJ1ZSwgY29udHJvbHNMaXN0OiAnbm9kb3dubG9hZCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnc291cmNlJywgeyBzcmM6IGl0ZW1bJ21lZGlhJ11bJ3NyYyddLCB0eXBlOiBpdGVtWydtZWRpYSddWyd0eXBlJ10gfSksXG5cdFx0XHRcdFx0XHRcdFx0XHRfXygnWW91ciBicm93c2VyIGRvZXMgbm90IHN1cHBvcnQgdGhlIGF1ZGlvIGVsZW1lbnQuIEJ1dCB5b3UgY2FuIGNoZWNrIHRoaXMgZm9yIHRoZSBvcmlnaW5hbCBsaW5rOiAnKSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2EnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR7IGhyZWY6IGl0ZW1bJ21lZGlhJ11bJ3NyYyddIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1bJ21lZGlhJ11bJ3NyYyddXG5cdFx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRmZWVkenlqcy5pc1BybyAmJiBwcm9wcy5hdHRyaWJ1dGVzLnByaWNlICYmIGl0ZW1bJ3ByaWNlJ10gJiYgcHJvcHMuYXR0cmlidXRlcy50ZW1wbGF0ZSAhPT0gJ2RlZmF1bHQnICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdwcmljZS13cmFwJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHQnYScsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQnYnV0dG9uJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3ByaWNlJyB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1bJ3ByaWNlJ11cblx0XHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH0pXG5cdFx0XHQpXG5cdFx0KV07XG5cdH0sXG5cdHNhdmU6IGZ1bmN0aW9uIHNhdmUoKSB7XG5cdFx0Ly8gUmVuZGVyaW5nIGluIFBIUFxuXHRcdHJldHVybiBudWxsO1xuXHR9XG59KTtcblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL2luY2x1ZGVzL2d1dGVuYmVyZy9zcmMvYmxvY2suanNcbi8vIG1vZHVsZSBpZCA9IDI5XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///29\n");
     245eval("Object.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__ = __webpack_require__(30);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss__ = __webpack_require__(43);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__style_scss___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1__style_scss__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_query_string__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_query_string___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_query_string__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__attributes__ = __webpack_require__(48);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__inspector__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__utils__ = __webpack_require__(52);\n\n\nvar _this = this;\n\n// jshint ignore: start\n\n/**\r\n * Block dependencies\r\n */\n\n\n\n\n\n\n/**\r\n * Internal block libraries\r\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar _wp$components = wp.components,\n    ExternalLink = _wp$components.ExternalLink,\n    Placeholder = _wp$components.Placeholder,\n    TextControl = _wp$components.TextControl,\n    Button = _wp$components.Button,\n    Spinner = _wp$components.Spinner;\nvar date = wp.date.date;\n\n/**\r\n * Register block\r\n */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (registerBlockType('feedzy-rss-feeds/feedzy-block', {\n\ttitle: __('Feedzy RSS Feeds'),\n\tcategory: 'common',\n\ticon: 'rss',\n\tkeywords: [__('Feedzy RSS Feeds'), __('RSS'), __('Feeds')],\n\tsupports: {\n\t\thtml: false\n\t},\n\tattributes: __WEBPACK_IMPORTED_MODULE_3__attributes__[\"a\" /* default */],\n\tedit: function edit(props) {\n\t\tvar onChangeFeeds = function onChangeFeeds(value) {\n\t\t\tprops.setAttributes({ feeds: value });\n\t\t};\n\t\tvar onChangeMax = function onChangeMax(value) {\n\t\t\tprops.setAttributes({ max: !value ? 5 : Number(value) });\n\t\t};\n\t\tvar onChangeOffset = function onChangeOffset(value) {\n\t\t\tprops.setAttributes({ offset: Number(value) });\n\t\t};\n\t\tvar toggleFeedTitle = function toggleFeedTitle(value) {\n\t\t\tprops.setAttributes({ feed_title: !props.attributes.feed_title });\n\t\t};\n\t\tvar onRefresh = function onRefresh(value) {\n\t\t\tprops.setAttributes({ refresh: value });\n\t\t};\n\t\tvar onSort = function onSort(value) {\n\t\t\tprops.setAttributes({ sort: value });\n\t\t};\n\t\tvar onTarget = function onTarget(value) {\n\t\t\tprops.setAttributes({ target: value });\n\t\t};\n\t\tvar onTitle = function onTitle(value) {\n\t\t\tprops.setAttributes({ title: Number(value) });\n\t\t};\n\t\tvar changeMeta = function changeMeta(value) {\n\t\t\tprops.setAttributes({ metafields: value });\n\t\t};\n\t\tvar changeMultipleMeta = function changeMultipleMeta(value) {\n\t\t\tprops.setAttributes({ multiple_meta: value });\n\t\t};\n\t\tvar toggleSummary = function toggleSummary(value) {\n\t\t\tprops.setAttributes({ summary: !props.attributes.summary });\n\t\t};\n\t\tvar toggleLazy = function toggleLazy(value) {\n\t\t\tprops.setAttributes({ lazy: !props.attributes.lazy });\n\t\t};\n\t\tvar onSummaryLength = function onSummaryLength(value) {\n\t\t\tprops.setAttributes({ summarylength: Number(value) });\n\t\t};\n\t\tvar onKeywordsTitle = function onKeywordsTitle(value) {\n\t\t\tprops.setAttributes({ keywords_title: value });\n\t\t};\n\t\tvar onKeywordsBan = function onKeywordsBan(value) {\n\t\t\tprops.setAttributes({ keywords_ban: value });\n\t\t};\n\t\tvar onThumb = function onThumb(value) {\n\t\t\tprops.setAttributes({ thumb: value });\n\t\t};\n\t\tvar onDefault = function onDefault(value) {\n\t\t\tprops.setAttributes({ default: value });\n\t\t};\n\t\tvar onSize = function onSize(value) {\n\t\t\tprops.setAttributes({ size: !value ? 150 : Number(value) });\n\t\t};\n\t\tvar onReferralURL = function onReferralURL(value) {\n\t\t\tprops.setAttributes({ referral_url: value });\n\t\t};\n\t\tvar onColumns = function onColumns(value) {\n\t\t\tprops.setAttributes({ columns: value });\n\t\t};\n\t\tvar onTemplate = function onTemplate(value) {\n\t\t\tprops.setAttributes({ template: value });\n\t\t};\n\t\tvar togglePrice = function togglePrice(value) {\n\t\t\tprops.setAttributes({ price: !props.attributes.price });\n\t\t};\n\t\tvar loadFeed = function loadFeed() {\n\t\t\tprops.setAttributes({ status: 1 });\n\n\t\t\tvar url = props.attributes.feeds;\n\n\t\t\tif (url === undefined) {\n\t\t\t\treturn props.setAttributes({ status: 3 });\n\t\t\t}\n\n\t\t\tif (Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"c\" /* inArray */])(url, props.attributes.categories)) {\n\t\t\t\tvar category = url;\n\t\t\t\turl = __WEBPACK_IMPORTED_MODULE_2_query_string___default.a.stringify({ category: category }, { arrayFormat: 'bracket' });\n\t\t\t} else {\n\t\t\t\turl = url.replace(/\\s/g, '').split(',').filter(function (item) {\n\t\t\t\t\treturn item !== '';\n\t\t\t\t});\n\t\t\t\turl = __WEBPACK_IMPORTED_MODULE_2_query_string___default.a.stringify({ url: url }, { arrayFormat: 'bracket' });\n\t\t\t}\n\n\t\t\twp.apiRequest({ path: '/feedzy/v1/feed?' + url }).then(function (data) {\n\t\t\t\tif (_this.unmounting) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\tif (!data['error']) {\n\t\t\t\t\tprops.setAttributes({ feedData: data });\n\t\t\t\t\tprops.setAttributes({ status: 2 });\n\t\t\t\t\treturn data;\n\t\t\t\t} else {\n\t\t\t\t\tprops.setAttributes({ status: 3 });\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t}).fail(function (err) {\n\t\t\t\tprops.setAttributes({ status: 3 });\n\t\t\t\treturn err;\n\t\t\t});\n\t\t};\n\t\tvar loadCategories = function loadCategories() {\n\t\t\twp.apiRequest({ path: '/wp/v2/feedzy_categories' }).then(function (data) {\n\t\t\t\tif (_this.unmounting) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\tvar i = 0;\n\t\t\t\tvar categories = [];\n\t\t\t\tdata.forEach(function (item) {\n\t\t\t\t\tcategories[i] = item.slug;\n\t\t\t\t\ti = i + 1;\n\t\t\t\t});\n\t\t\t\tprops.setAttributes({ categories: categories });\n\t\t\t\tjQuery('.feedzy-source input').autocomplete({\n\t\t\t\t\tsource: categories,\n\t\t\t\t\tselect: function select(event, ui) {\n\t\t\t\t\t\tprops.setAttributes({ feeds: ui.item.label });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).fail(function (err) {\n\t\t\t\treturn err;\n\t\t\t});\n\t\t};\n\t\tvar metaExists = function metaExists(value) {\n\t\t\treturn 0 <= props.attributes.metafields.replace(/\\s/g, '').split(',').indexOf(value) || '' === props.attributes.metafields;\n\t\t};\n\t\tvar multipleMetaExists = function multipleMetaExists(value) {\n\t\t\treturn 0 <= props.attributes.multiple_meta.replace(/\\s/g, '').split(',').indexOf(value) || '' === props.attributes.multiple_meta;\n\t\t};\n\n\t\tvar validateURL = 'https://validator.w3.org/feed/';\n\t\tif (props.attributes.feeds) {\n\t\t\tvalidateURL += 'check.cgi?url=' + props.attributes.feeds;\n\t\t}\n\n\t\tif (props.attributes.categories === undefined) {\n\t\t\tif (!props.attributes.meta) {\n\t\t\t\tprops.setAttributes({\n\t\t\t\t\tmeta: true,\n\t\t\t\t\tmetafields: 'no'\n\t\t\t\t});\n\t\t\t}\n\t\t\tloadCategories();\n\t\t}\n\t\treturn [\n\t\t// Inspector\n\t\t!!props.isSelected && wp.element.createElement(__WEBPACK_IMPORTED_MODULE_4__inspector__[\"a\" /* default */], __WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_extends___default()({ onChangeFeeds: onChangeFeeds, onChangeMax: onChangeMax, onChangeOffset: onChangeOffset, toggleFeedTitle: toggleFeedTitle, onRefresh: onRefresh, onSort: onSort, onTarget: onTarget, onTitle: onTitle, changeMeta: changeMeta, changeMultipleMeta: changeMultipleMeta, toggleSummary: toggleSummary, toggleLazy: toggleLazy, onSummaryLength: onSummaryLength, onKeywordsTitle: onKeywordsTitle, onKeywordsBan: onKeywordsBan, onThumb: onThumb, onDefault: onDefault, onSize: onSize, onReferralURL: onReferralURL, onColumns: onColumns, onTemplate: onTemplate, togglePrice: togglePrice, loadFeed: loadFeed }, props)), props.attributes.status !== 2 && wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: props.className },\n\t\t\twp.element.createElement(\n\t\t\t\tPlaceholder,\n\t\t\t\t{\n\t\t\t\t\tkey: 'placeholder',\n\t\t\t\t\ticon: 'rss',\n\t\t\t\t\tlabel: __('Feedzy RSS Feeds')\n\t\t\t\t},\n\t\t\t\tprops.attributes.status === 1 ? wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\t{ key: 'loading', className: 'wp-block-embed is-loading' },\n\t\t\t\t\twp.element.createElement(Spinner, null),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'p',\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t__('Fetching…')\n\t\t\t\t\t)\n\t\t\t\t) : [wp.element.createElement(TextControl, {\n\t\t\t\t\ttype: 'url',\n\t\t\t\t\tclassName: 'feedzy-source',\n\t\t\t\t\tplaceholder: __('Enter URL or category of your feed here…'),\n\t\t\t\t\tonChange: onChangeFeeds,\n\t\t\t\t\tvalue: props.attributes.feeds\n\t\t\t\t}), wp.element.createElement(\n\t\t\t\t\tButton,\n\t\t\t\t\t{\n\t\t\t\t\t\tisLarge: true,\n\t\t\t\t\t\tisPrimary: true,\n\t\t\t\t\t\ttype: 'submit',\n\t\t\t\t\t\tonClick: loadFeed\n\t\t\t\t\t},\n\t\t\t\t\t__('Load Feed')\n\t\t\t\t), wp.element.createElement(\n\t\t\t\t\tExternalLink,\n\t\t\t\t\t{ href: validateURL, title: __('Validate Feed ') },\n\t\t\t\t\t__('Validate ')\n\t\t\t\t), props.attributes.status === 3 && wp.element.createElement(\n\t\t\t\t\t'div',\n\t\t\t\t\tnull,\n\t\t\t\t\t__('Feed URL is invalid. Invalid feeds will NOT display items.')\n\t\t\t\t)]\n\t\t\t)\n\t\t), !!(props.attributes.status === 2 && props.attributes.feedData !== undefined) && wp.element.createElement(\n\t\t\t'div',\n\t\t\t{ className: 'feedzy-rss' },\n\t\t\tprops.attributes.feed_title && props.attributes.feedData['channel'] !== null && wp.element.createElement(\n\t\t\t\t'div',\n\t\t\t\t{ className: 'rss_header' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'h2',\n\t\t\t\t\tnull,\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'a',\n\t\t\t\t\t\t{ className: 'rss_title' },\n\t\t\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(props.attributes.feedData['channel']['title'])\n\t\t\t\t\t),\n\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t'span',\n\t\t\t\t\t\t{ className: 'rss_description' },\n\t\t\t\t\t\t' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(props.attributes.feedData['channel']['description'])\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'ul',\n\t\t\t\t{ className: 'feedzy-' + props.attributes.template },\n\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"b\" /* filterData */])(props.attributes.feedData['items'], props.attributes.sort, props.attributes.keywords_title, props.attributes.keywords_ban, props.attributes.max, props.attributes.offset).map(function (item, i) {\n\t\t\t\t\tvar itemDateTime = (item['date'] || '') + ' ' + (item['time'] || '') + ' UTC +0000';\n\t\t\t\t\tvar itemDate = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['date']) || '';\n\t\t\t\t\tvar itemTime = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['time']) || '';\n\t\t\t\t\tvar categories = Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['categories']) || '';\n\t\t\t\t\tif (metaExists('tz=local')) {\n\t\t\t\t\t\titemDate = date('F jS, \\o', itemDateTime);\n\t\t\t\t\t\titemTime = date('h:i A', itemDateTime);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar author = item['creator'] && metaExists('author') ? item['creator'] : '';\n\t\t\t\t\tif (props.attributes.multiple_meta !== '' && props.attributes.multiple_meta !== 'no') {\n\t\t\t\t\t\tif ((multipleMetaExists('source') || multipleMetaExists('yes')) && author !== '' && item['source'] !== '') {\n\t\t\t\t\t\t\tauthor = author + ' (' + item['source'] + ')';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvar meta_values = new Object();\n\t\t\t\t\tmeta_values['author'] = __('by') + ' ' + author;\n\t\t\t\t\tmeta_values['date'] = __('on') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(itemDate);\n\t\t\t\t\tmeta_values['time'] = __('at') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(itemTime);\n\t\t\t\t\tmeta_values['categories'] = __('in') + ' ' + Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(categories);\n\n\t\t\t\t\treturn wp.element.createElement(\n\t\t\t\t\t\t'li',\n\t\t\t\t\t\t{ key: i, style: { padding: '15px 0 25px' }, className: 'rss_item feedzy-rss-col-' + props.attributes.columns },\n\t\t\t\t\t\t(item['thumbnail'] && props.attributes.thumb === 'auto' || props.attributes.thumb === 'yes') && wp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'rss_image', style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px' } },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t{ title: Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']), style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px' } },\n\t\t\t\t\t\t\t\twp.element.createElement('span', { className: 'fetched', style: { width: props.attributes.size + 'px', height: props.attributes.size + 'px', backgroundImage: 'url(' + (item['thumbnail'] ? item['thumbnail'] : props.attributes.default ? props.attributes.default.url : feedzyjs.imagepath + 'feedzy-default.jpg') + ')' }, title: Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']) })\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t),\n\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t{ className: 'rss_content_wrap' },\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'span',\n\t\t\t\t\t\t\t\t{ className: 'title' },\n\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\tprops.attributes.title && Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']).length > props.attributes.title ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title']).substring(0, props.attributes.title) + '...' : Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['title'])\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t{ className: 'rss_content' },\n\t\t\t\t\t\t\t\tprops.attributes.metafields !== 'no' && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'small',\n\t\t\t\t\t\t\t\t\t{ className: 'meta' },\n\t\t\t\t\t\t\t\t\tObject(__WEBPACK_IMPORTED_MODULE_5__utils__[\"a\" /* arrangeMeta */])(meta_values, props.attributes.metafields)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tprops.attributes.summary && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'p',\n\t\t\t\t\t\t\t\t\t{ className: 'description' },\n\t\t\t\t\t\t\t\t\tprops.attributes.summarylength && Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description']).length > props.attributes.summarylength ? Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description']).substring(0, props.attributes.summarylength) + ' […]' : Object(__WEBPACK_IMPORTED_MODULE_5__utils__[\"d\" /* unescapeHTML */])(item['description'])\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfeedzyjs.isPro && item['media'] && item['media']['src'] && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'audio',\n\t\t\t\t\t\t\t\t\t{ controls: true, controlsList: 'nodownload' },\n\t\t\t\t\t\t\t\t\twp.element.createElement('source', { src: item['media']['src'], type: item['media']['type'] }),\n\t\t\t\t\t\t\t\t\t__('Your browser does not support the audio element. But you can check this for the original link: '),\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t\t{ href: item['media']['src'] },\n\t\t\t\t\t\t\t\t\t\titem['media']['src']\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tfeedzyjs.isPro && props.attributes.price && item['price'] && props.attributes.template !== 'default' && wp.element.createElement(\n\t\t\t\t\t\t\t\t\t'div',\n\t\t\t\t\t\t\t\t\t{ className: 'price-wrap' },\n\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t'a',\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\twp.element.createElement(\n\t\t\t\t\t\t\t\t\t\t\t'button',\n\t\t\t\t\t\t\t\t\t\t\t{ className: 'price' },\n\t\t\t\t\t\t\t\t\t\t\titem['price']\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t)\n\t\t)];\n\t},\n\tsave: function save() {\n\t\t// Rendering in PHP\n\t\treturn null;\n\t}\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMjkuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2Jsb2NrLmpzPzUxZTMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9leHRlbmRzIGZyb20gJ2JhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzJztcblxudmFyIF90aGlzID0gdGhpcztcblxuLy8ganNoaW50IGlnbm9yZTogc3RhcnRcblxuLyoqXHJcbiAqIEJsb2NrIGRlcGVuZGVuY2llc1xyXG4gKi9cbmltcG9ydCAnLi9zdHlsZS5zY3NzJztcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxdWVyeS1zdHJpbmcnO1xuaW1wb3J0IGJsb2NrQXR0cmlidXRlcyBmcm9tICcuL2F0dHJpYnV0ZXMnO1xuaW1wb3J0IEluc3BlY3RvciBmcm9tICcuL2luc3BlY3Rvcic7XG5pbXBvcnQgeyB1bmVzY2FwZUhUTUwsIGZpbHRlckRhdGEsIGluQXJyYXksIGFycmFuZ2VNZXRhIH0gZnJvbSAnLi91dGlscyc7XG5cbi8qKlxyXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXNcclxuICovXG52YXIgX18gPSB3cC5pMThuLl9fO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBFeHRlcm5hbExpbmsgPSBfd3AkY29tcG9uZW50cy5FeHRlcm5hbExpbmssXG4gICAgUGxhY2Vob2xkZXIgPSBfd3AkY29tcG9uZW50cy5QbGFjZWhvbGRlcixcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sLFxuICAgIEJ1dHRvbiA9IF93cCRjb21wb25lbnRzLkJ1dHRvbixcbiAgICBTcGlubmVyID0gX3dwJGNvbXBvbmVudHMuU3Bpbm5lcjtcbnZhciBkYXRlID0gd3AuZGF0ZS5kYXRlO1xuXG4vKipcclxuICogUmVnaXN0ZXIgYmxvY2tcclxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyQmxvY2tUeXBlKCdmZWVkenktcnNzLWZlZWRzL2ZlZWR6eS1ibG9jaycsIHtcblx0dGl0bGU6IF9fKCdGZWVkenkgUlNTIEZlZWRzJyksXG5cdGNhdGVnb3J5OiAnY29tbW9uJyxcblx0aWNvbjogJ3JzcycsXG5cdGtleXdvcmRzOiBbX18oJ0ZlZWR6eSBSU1MgRmVlZHMnKSwgX18oJ1JTUycpLCBfXygnRmVlZHMnKV0sXG5cdHN1cHBvcnRzOiB7XG5cdFx0aHRtbDogZmFsc2Vcblx0fSxcblx0YXR0cmlidXRlczogYmxvY2tBdHRyaWJ1dGVzLFxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIG9uQ2hhbmdlRmVlZHMgPSBmdW5jdGlvbiBvbkNoYW5nZUZlZWRzKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZHM6IHZhbHVlIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uQ2hhbmdlTWF4ID0gZnVuY3Rpb24gb25DaGFuZ2VNYXgodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBtYXg6ICF2YWx1ZSA/IDUgOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uQ2hhbmdlT2Zmc2V0ID0gZnVuY3Rpb24gb25DaGFuZ2VPZmZzZXQodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBvZmZzZXQ6IE51bWJlcih2YWx1ZSkgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlRmVlZFRpdGxlID0gZnVuY3Rpb24gdG9nZ2xlRmVlZFRpdGxlKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZF90aXRsZTogIXByb3BzLmF0dHJpYnV0ZXMuZmVlZF90aXRsZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblJlZnJlc2ggPSBmdW5jdGlvbiBvblJlZnJlc2godmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyByZWZyZXNoOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblNvcnQgPSBmdW5jdGlvbiBvblNvcnQodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzb3J0OiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRhcmdldCA9IGZ1bmN0aW9uIG9uVGFyZ2V0KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgdGFyZ2V0OiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblRpdGxlID0gZnVuY3Rpb24gb25UaXRsZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHRpdGxlOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIGNoYW5nZU1ldGEgPSBmdW5jdGlvbiBjaGFuZ2VNZXRhKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbWV0YWZpZWxkczogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgY2hhbmdlTXVsdGlwbGVNZXRhID0gZnVuY3Rpb24gY2hhbmdlTXVsdGlwbGVNZXRhKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbXVsdGlwbGVfbWV0YTogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlU3VtbWFyeSA9IGZ1bmN0aW9uIHRvZ2dsZVN1bW1hcnkodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzdW1tYXJ5OiAhcHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5IH0pO1xuXHRcdH07XG5cdFx0dmFyIHRvZ2dsZUxhenkgPSBmdW5jdGlvbiB0b2dnbGVMYXp5KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgbGF6eTogIXByb3BzLmF0dHJpYnV0ZXMubGF6eSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblN1bW1hcnlMZW5ndGggPSBmdW5jdGlvbiBvblN1bW1hcnlMZW5ndGgodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyBzdW1tYXJ5bGVuZ3RoOiBOdW1iZXIodmFsdWUpIH0pO1xuXHRcdH07XG5cdFx0dmFyIG9uS2V5d29yZHNUaXRsZSA9IGZ1bmN0aW9uIG9uS2V5d29yZHNUaXRsZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGtleXdvcmRzX3RpdGxlOiB2YWx1ZSB9KTtcblx0XHR9O1xuXHRcdHZhciBvbktleXdvcmRzQmFuID0gZnVuY3Rpb24gb25LZXl3b3Jkc0Jhbih2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGtleXdvcmRzX2JhbjogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25UaHVtYiA9IGZ1bmN0aW9uIG9uVGh1bWIodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyB0aHVtYjogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25EZWZhdWx0ID0gZnVuY3Rpb24gb25EZWZhdWx0KHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZGVmYXVsdDogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25TaXplID0gZnVuY3Rpb24gb25TaXplKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc2l6ZTogIXZhbHVlID8gMTUwIDogTnVtYmVyKHZhbHVlKSB9KTtcblx0XHR9O1xuXHRcdHZhciBvblJlZmVycmFsVVJMID0gZnVuY3Rpb24gb25SZWZlcnJhbFVSTCh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHJlZmVycmFsX3VybDogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25Db2x1bW5zID0gZnVuY3Rpb24gb25Db2x1bW5zKHZhbHVlKSB7XG5cdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY29sdW1uczogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgb25UZW1wbGF0ZSA9IGZ1bmN0aW9uIG9uVGVtcGxhdGUodmFsdWUpIHtcblx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoeyB0ZW1wbGF0ZTogdmFsdWUgfSk7XG5cdFx0fTtcblx0XHR2YXIgdG9nZ2xlUHJpY2UgPSBmdW5jdGlvbiB0b2dnbGVQcmljZSh2YWx1ZSkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHByaWNlOiAhcHJvcHMuYXR0cmlidXRlcy5wcmljZSB9KTtcblx0XHR9O1xuXHRcdHZhciBsb2FkRmVlZCA9IGZ1bmN0aW9uIGxvYWRGZWVkKCkge1xuXHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMSB9KTtcblxuXHRcdFx0dmFyIHVybCA9IHByb3BzLmF0dHJpYnV0ZXMuZmVlZHM7XG5cblx0XHRcdGlmICh1cmwgPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRyZXR1cm4gcHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMyB9KTtcblx0XHRcdH1cblxuXHRcdFx0aWYgKGluQXJyYXkodXJsLCBwcm9wcy5hdHRyaWJ1dGVzLmNhdGVnb3JpZXMpKSB7XG5cdFx0XHRcdHZhciBjYXRlZ29yeSA9IHVybDtcblx0XHRcdFx0dXJsID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KHsgY2F0ZWdvcnk6IGNhdGVnb3J5IH0sIHsgYXJyYXlGb3JtYXQ6ICdicmFja2V0JyB9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHVybCA9IHVybC5yZXBsYWNlKC9cXHMvZywgJycpLnNwbGl0KCcsJykuZmlsdGVyKGZ1bmN0aW9uIChpdGVtKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGl0ZW0gIT09ICcnO1xuXHRcdFx0XHR9KTtcblx0XHRcdFx0dXJsID0gcXVlcnlTdHJpbmcuc3RyaW5naWZ5KHsgdXJsOiB1cmwgfSwgeyBhcnJheUZvcm1hdDogJ2JyYWNrZXQnIH0pO1xuXHRcdFx0fVxuXG5cdFx0XHR3cC5hcGlSZXF1ZXN0KHsgcGF0aDogJy9mZWVkenkvdjEvZmVlZD8nICsgdXJsIH0pLnRoZW4oZnVuY3Rpb24gKGRhdGEpIHtcblx0XHRcdFx0aWYgKF90aGlzLnVubW91bnRpbmcpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIWRhdGFbJ2Vycm9yJ10pIHtcblx0XHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgZmVlZERhdGE6IGRhdGEgfSk7XG5cdFx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMiB9KTtcblx0XHRcdFx0XHRyZXR1cm4gZGF0YTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgc3RhdHVzOiAzIH0pO1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5mYWlsKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IHN0YXR1czogMyB9KTtcblx0XHRcdFx0cmV0dXJuIGVycjtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0dmFyIGxvYWRDYXRlZ29yaWVzID0gZnVuY3Rpb24gbG9hZENhdGVnb3JpZXMoKSB7XG5cdFx0XHR3cC5hcGlSZXF1ZXN0KHsgcGF0aDogJy93cC92Mi9mZWVkenlfY2F0ZWdvcmllcycgfSkudGhlbihmdW5jdGlvbiAoZGF0YSkge1xuXHRcdFx0XHRpZiAoX3RoaXMudW5tb3VudGluZykge1xuXHRcdFx0XHRcdHJldHVybiBkYXRhO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciBpID0gMDtcblx0XHRcdFx0dmFyIGNhdGVnb3JpZXMgPSBbXTtcblx0XHRcdFx0ZGF0YS5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XG5cdFx0XHRcdFx0Y2F0ZWdvcmllc1tpXSA9IGl0ZW0uc2x1Zztcblx0XHRcdFx0XHRpID0gaSArIDE7XG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRwcm9wcy5zZXRBdHRyaWJ1dGVzKHsgY2F0ZWdvcmllczogY2F0ZWdvcmllcyB9KTtcblx0XHRcdFx0alF1ZXJ5KCcuZmVlZHp5LXNvdXJjZSBpbnB1dCcpLmF1dG9jb21wbGV0ZSh7XG5cdFx0XHRcdFx0c291cmNlOiBjYXRlZ29yaWVzLFxuXHRcdFx0XHRcdHNlbGVjdDogZnVuY3Rpb24gc2VsZWN0KGV2ZW50LCB1aSkge1xuXHRcdFx0XHRcdFx0cHJvcHMuc2V0QXR0cmlidXRlcyh7IGZlZWRzOiB1aS5pdGVtLmxhYmVsIH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9KS5mYWlsKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0cmV0dXJuIGVycjtcblx0XHRcdH0pO1xuXHRcdH07XG5cdFx0dmFyIG1ldGFFeGlzdHMgPSBmdW5jdGlvbiBtZXRhRXhpc3RzKHZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gMCA8PSBwcm9wcy5hdHRyaWJ1dGVzLm1ldGFmaWVsZHMucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpLmluZGV4T2YodmFsdWUpIHx8ICcnID09PSBwcm9wcy5hdHRyaWJ1dGVzLm1ldGFmaWVsZHM7XG5cdFx0fTtcblx0XHR2YXIgbXVsdGlwbGVNZXRhRXhpc3RzID0gZnVuY3Rpb24gbXVsdGlwbGVNZXRhRXhpc3RzKHZhbHVlKSB7XG5cdFx0XHRyZXR1cm4gMCA8PSBwcm9wcy5hdHRyaWJ1dGVzLm11bHRpcGxlX21ldGEucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpLmluZGV4T2YodmFsdWUpIHx8ICcnID09PSBwcm9wcy5hdHRyaWJ1dGVzLm11bHRpcGxlX21ldGE7XG5cdFx0fTtcblxuXHRcdHZhciB2YWxpZGF0ZVVSTCA9ICdodHRwczovL3ZhbGlkYXRvci53My5vcmcvZmVlZC8nO1xuXHRcdGlmIChwcm9wcy5hdHRyaWJ1dGVzLmZlZWRzKSB7XG5cdFx0XHR2YWxpZGF0ZVVSTCArPSAnY2hlY2suY2dpP3VybD0nICsgcHJvcHMuYXR0cmlidXRlcy5mZWVkcztcblx0XHR9XG5cblx0XHRpZiAocHJvcHMuYXR0cmlidXRlcy5jYXRlZ29yaWVzID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGlmICghcHJvcHMuYXR0cmlidXRlcy5tZXRhKSB7XG5cdFx0XHRcdHByb3BzLnNldEF0dHJpYnV0ZXMoe1xuXHRcdFx0XHRcdG1ldGE6IHRydWUsXG5cdFx0XHRcdFx0bWV0YWZpZWxkczogJ25vJ1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGxvYWRDYXRlZ29yaWVzKCk7XG5cdFx0fVxuXHRcdHJldHVybiBbXG5cdFx0Ly8gSW5zcGVjdG9yXG5cdFx0ISFwcm9wcy5pc1NlbGVjdGVkICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChJbnNwZWN0b3IsIF9leHRlbmRzKHsgb25DaGFuZ2VGZWVkczogb25DaGFuZ2VGZWVkcywgb25DaGFuZ2VNYXg6IG9uQ2hhbmdlTWF4LCBvbkNoYW5nZU9mZnNldDogb25DaGFuZ2VPZmZzZXQsIHRvZ2dsZUZlZWRUaXRsZTogdG9nZ2xlRmVlZFRpdGxlLCBvblJlZnJlc2g6IG9uUmVmcmVzaCwgb25Tb3J0OiBvblNvcnQsIG9uVGFyZ2V0OiBvblRhcmdldCwgb25UaXRsZTogb25UaXRsZSwgY2hhbmdlTWV0YTogY2hhbmdlTWV0YSwgY2hhbmdlTXVsdGlwbGVNZXRhOiBjaGFuZ2VNdWx0aXBsZU1ldGEsIHRvZ2dsZVN1bW1hcnk6IHRvZ2dsZVN1bW1hcnksIHRvZ2dsZUxhenk6IHRvZ2dsZUxhenksIG9uU3VtbWFyeUxlbmd0aDogb25TdW1tYXJ5TGVuZ3RoLCBvbktleXdvcmRzVGl0bGU6IG9uS2V5d29yZHNUaXRsZSwgb25LZXl3b3Jkc0Jhbjogb25LZXl3b3Jkc0Jhbiwgb25UaHVtYjogb25UaHVtYiwgb25EZWZhdWx0OiBvbkRlZmF1bHQsIG9uU2l6ZTogb25TaXplLCBvblJlZmVycmFsVVJMOiBvblJlZmVycmFsVVJMLCBvbkNvbHVtbnM6IG9uQ29sdW1ucywgb25UZW1wbGF0ZTogb25UZW1wbGF0ZSwgdG9nZ2xlUHJpY2U6IHRvZ2dsZVByaWNlLCBsb2FkRmVlZDogbG9hZEZlZWQgfSwgcHJvcHMpKSwgcHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgIT09IDIgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0J2RpdicsXG5cdFx0XHR7IGNsYXNzTmFtZTogcHJvcHMuY2xhc3NOYW1lIH0sXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBsYWNlaG9sZGVyLFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0a2V5OiAncGxhY2Vob2xkZXInLFxuXHRcdFx0XHRcdGljb246ICdyc3MnLFxuXHRcdFx0XHRcdGxhYmVsOiBfXygnRmVlZHp5IFJTUyBGZWVkcycpXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuc3RhdHVzID09PSAxID8gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdHsga2V5OiAnbG9hZGluZycsIGNsYXNzTmFtZTogJ3dwLWJsb2NrLWVtYmVkIGlzLWxvYWRpbmcnIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNwaW5uZXIsIG51bGwpLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdCdwJyxcblx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRfXygnRmV0Y2hpbmfigKYnKVxuXHRcdFx0XHRcdClcblx0XHRcdFx0KSA6IFt3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHR0eXBlOiAndXJsJyxcblx0XHRcdFx0XHRjbGFzc05hbWU6ICdmZWVkenktc291cmNlJyxcblx0XHRcdFx0XHRwbGFjZWhvbGRlcjogX18oJ0VudGVyIFVSTCBvciBjYXRlZ29yeSBvZiB5b3VyIGZlZWQgaGVyZeKApicpLFxuXHRcdFx0XHRcdG9uQ2hhbmdlOiBvbkNoYW5nZUZlZWRzLFxuXHRcdFx0XHRcdHZhbHVlOiBwcm9wcy5hdHRyaWJ1dGVzLmZlZWRzXG5cdFx0XHRcdH0pLCB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0QnV0dG9uLFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlzTGFyZ2U6IHRydWUsXG5cdFx0XHRcdFx0XHRpc1ByaW1hcnk6IHRydWUsXG5cdFx0XHRcdFx0XHR0eXBlOiAnc3VibWl0Jyxcblx0XHRcdFx0XHRcdG9uQ2xpY2s6IGxvYWRGZWVkXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRfXygnTG9hZCBGZWVkJylcblx0XHRcdFx0KSwgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdEV4dGVybmFsTGluayxcblx0XHRcdFx0XHR7IGhyZWY6IHZhbGlkYXRlVVJMLCB0aXRsZTogX18oJ1ZhbGlkYXRlIEZlZWQgJykgfSxcblx0XHRcdFx0XHRfXygnVmFsaWRhdGUgJylcblx0XHRcdFx0KSwgcHJvcHMuYXR0cmlidXRlcy5zdGF0dXMgPT09IDMgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdkaXYnLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0X18oJ0ZlZWQgVVJMIGlzIGludmFsaWQuIEludmFsaWQgZmVlZHMgd2lsbCBOT1QgZGlzcGxheSBpdGVtcy4nKVxuXHRcdFx0XHQpXVxuXHRcdFx0KVxuXHRcdCksICEhKHByb3BzLmF0dHJpYnV0ZXMuc3RhdHVzID09PSAyICYmIHByb3BzLmF0dHJpYnV0ZXMuZmVlZERhdGEgIT09IHVuZGVmaW5lZCkgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0J2RpdicsXG5cdFx0XHR7IGNsYXNzTmFtZTogJ2ZlZWR6eS1yc3MnIH0sXG5cdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLmZlZWRfdGl0bGUgJiYgcHJvcHMuYXR0cmlidXRlcy5mZWVkRGF0YVsnY2hhbm5lbCddICE9PSBudWxsICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdHsgY2xhc3NOYW1lOiAncnNzX2hlYWRlcicgfSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdoMicsXG5cdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnYScsXG5cdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Jzc190aXRsZScgfSxcblx0XHRcdFx0XHRcdHVuZXNjYXBlSFRNTChwcm9wcy5hdHRyaWJ1dGVzLmZlZWREYXRhWydjaGFubmVsJ11bJ3RpdGxlJ10pXG5cdFx0XHRcdFx0KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnc3BhbicsXG5cdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3Jzc19kZXNjcmlwdGlvbicgfSxcblx0XHRcdFx0XHRcdCcgJyArIHVuZXNjYXBlSFRNTChwcm9wcy5hdHRyaWJ1dGVzLmZlZWREYXRhWydjaGFubmVsJ11bJ2Rlc2NyaXB0aW9uJ10pXG5cdFx0XHRcdFx0KVxuXHRcdFx0XHQpXG5cdFx0XHQpLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHQndWwnLFxuXHRcdFx0XHR7IGNsYXNzTmFtZTogJ2ZlZWR6eS0nICsgcHJvcHMuYXR0cmlidXRlcy50ZW1wbGF0ZSB9LFxuXHRcdFx0XHRmaWx0ZXJEYXRhKHByb3BzLmF0dHJpYnV0ZXMuZmVlZERhdGFbJ2l0ZW1zJ10sIHByb3BzLmF0dHJpYnV0ZXMuc29ydCwgcHJvcHMuYXR0cmlidXRlcy5rZXl3b3Jkc190aXRsZSwgcHJvcHMuYXR0cmlidXRlcy5rZXl3b3Jkc19iYW4sIHByb3BzLmF0dHJpYnV0ZXMubWF4LCBwcm9wcy5hdHRyaWJ1dGVzLm9mZnNldCkubWFwKGZ1bmN0aW9uIChpdGVtLCBpKSB7XG5cdFx0XHRcdFx0dmFyIGl0ZW1EYXRlVGltZSA9IChpdGVtWydkYXRlJ10gfHwgJycpICsgJyAnICsgKGl0ZW1bJ3RpbWUnXSB8fCAnJykgKyAnIFVUQyArMDAwMCc7XG5cdFx0XHRcdFx0dmFyIGl0ZW1EYXRlID0gdW5lc2NhcGVIVE1MKGl0ZW1bJ2RhdGUnXSkgfHwgJyc7XG5cdFx0XHRcdFx0dmFyIGl0ZW1UaW1lID0gdW5lc2NhcGVIVE1MKGl0ZW1bJ3RpbWUnXSkgfHwgJyc7XG5cdFx0XHRcdFx0dmFyIGNhdGVnb3JpZXMgPSB1bmVzY2FwZUhUTUwoaXRlbVsnY2F0ZWdvcmllcyddKSB8fCAnJztcblx0XHRcdFx0XHRpZiAobWV0YUV4aXN0cygndHo9bG9jYWwnKSkge1xuXHRcdFx0XHRcdFx0aXRlbURhdGUgPSBkYXRlKCdGIGpTLCBcXG8nLCBpdGVtRGF0ZVRpbWUpO1xuXHRcdFx0XHRcdFx0aXRlbVRpbWUgPSBkYXRlKCdoOmkgQScsIGl0ZW1EYXRlVGltZSk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dmFyIGF1dGhvciA9IGl0ZW1bJ2NyZWF0b3InXSAmJiBtZXRhRXhpc3RzKCdhdXRob3InKSA/IGl0ZW1bJ2NyZWF0b3InXSA6ICcnO1xuXHRcdFx0XHRcdGlmIChwcm9wcy5hdHRyaWJ1dGVzLm11bHRpcGxlX21ldGEgIT09ICcnICYmIHByb3BzLmF0dHJpYnV0ZXMubXVsdGlwbGVfbWV0YSAhPT0gJ25vJykge1xuXHRcdFx0XHRcdFx0aWYgKChtdWx0aXBsZU1ldGFFeGlzdHMoJ3NvdXJjZScpIHx8IG11bHRpcGxlTWV0YUV4aXN0cygneWVzJykpICYmIGF1dGhvciAhPT0gJycgJiYgaXRlbVsnc291cmNlJ10gIT09ICcnKSB7XG5cdFx0XHRcdFx0XHRcdGF1dGhvciA9IGF1dGhvciArICcgKCcgKyBpdGVtWydzb3VyY2UnXSArICcpJztcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHR2YXIgbWV0YV92YWx1ZXMgPSBuZXcgT2JqZWN0KCk7XG5cdFx0XHRcdFx0bWV0YV92YWx1ZXNbJ2F1dGhvciddID0gX18oJ2J5JykgKyAnICcgKyBhdXRob3I7XG5cdFx0XHRcdFx0bWV0YV92YWx1ZXNbJ2RhdGUnXSA9IF9fKCdvbicpICsgJyAnICsgdW5lc2NhcGVIVE1MKGl0ZW1EYXRlKTtcblx0XHRcdFx0XHRtZXRhX3ZhbHVlc1sndGltZSddID0gX18oJ2F0JykgKyAnICcgKyB1bmVzY2FwZUhUTUwoaXRlbVRpbWUpO1xuXHRcdFx0XHRcdG1ldGFfdmFsdWVzWydjYXRlZ29yaWVzJ10gPSBfXygnaW4nKSArICcgJyArIHVuZXNjYXBlSFRNTChjYXRlZ29yaWVzKTtcblxuXHRcdFx0XHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHQnbGknLFxuXHRcdFx0XHRcdFx0eyBrZXk6IGksIHN0eWxlOiB7IHBhZGRpbmc6ICcxNXB4IDAgMjVweCcgfSwgY2xhc3NOYW1lOiAncnNzX2l0ZW0gZmVlZHp5LXJzcy1jb2wtJyArIHByb3BzLmF0dHJpYnV0ZXMuY29sdW1ucyB9LFxuXHRcdFx0XHRcdFx0KGl0ZW1bJ3RodW1ibmFpbCddICYmIHByb3BzLmF0dHJpYnV0ZXMudGh1bWIgPT09ICdhdXRvJyB8fCBwcm9wcy5hdHRyaWJ1dGVzLnRodW1iID09PSAneWVzJykgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdyc3NfaW1hZ2UnLCBzdHlsZTogeyB3aWR0aDogcHJvcHMuYXR0cmlidXRlcy5zaXplICsgJ3B4JywgaGVpZ2h0OiBwcm9wcy5hdHRyaWJ1dGVzLnNpemUgKyAncHgnIH0gfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdCdhJyxcblx0XHRcdFx0XHRcdFx0XHR7IHRpdGxlOiB1bmVzY2FwZUhUTUwoaXRlbVsndGl0bGUnXSksIHN0eWxlOiB7IHdpZHRoOiBwcm9wcy5hdHRyaWJ1dGVzLnNpemUgKyAncHgnLCBoZWlnaHQ6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSArICdweCcgfSB9LFxuXHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicsIHsgY2xhc3NOYW1lOiAnZmV0Y2hlZCcsIHN0eWxlOiB7IHdpZHRoOiBwcm9wcy5hdHRyaWJ1dGVzLnNpemUgKyAncHgnLCBoZWlnaHQ6IHByb3BzLmF0dHJpYnV0ZXMuc2l6ZSArICdweCcsIGJhY2tncm91bmRJbWFnZTogJ3VybCgnICsgKGl0ZW1bJ3RodW1ibmFpbCddID8gaXRlbVsndGh1bWJuYWlsJ10gOiBwcm9wcy5hdHRyaWJ1dGVzLmRlZmF1bHQgPyBwcm9wcy5hdHRyaWJ1dGVzLmRlZmF1bHQudXJsIDogZmVlZHp5anMuaW1hZ2VwYXRoICsgJ2ZlZWR6eS1kZWZhdWx0LmpwZycpICsgJyknIH0sIHRpdGxlOiB1bmVzY2FwZUhUTUwoaXRlbVsndGl0bGUnXSkgfSlcblx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAncnNzX2NvbnRlbnRfd3JhcCcgfSxcblx0XHRcdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdCdzcGFuJyxcblx0XHRcdFx0XHRcdFx0XHR7IGNsYXNzTmFtZTogJ3RpdGxlJyB9LFxuXHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdCdhJyxcblx0XHRcdFx0XHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLnRpdGxlICYmIHVuZXNjYXBlSFRNTChpdGVtWyd0aXRsZSddKS5sZW5ndGggPiBwcm9wcy5hdHRyaWJ1dGVzLnRpdGxlID8gdW5lc2NhcGVIVE1MKGl0ZW1bJ3RpdGxlJ10pLnN1YnN0cmluZygwLCBwcm9wcy5hdHRyaWJ1dGVzLnRpdGxlKSArICcuLi4nIDogdW5lc2NhcGVIVE1MKGl0ZW1bJ3RpdGxlJ10pXG5cdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0J2RpdicsXG5cdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdyc3NfY29udGVudCcgfSxcblx0XHRcdFx0XHRcdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLm1ldGFmaWVsZHMgIT09ICdubycgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J3NtYWxsJyxcblx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAnbWV0YScgfSxcblx0XHRcdFx0XHRcdFx0XHRcdGFycmFuZ2VNZXRhKG1ldGFfdmFsdWVzLCBwcm9wcy5hdHRyaWJ1dGVzLm1ldGFmaWVsZHMpXG5cdFx0XHRcdFx0XHRcdFx0KSxcblx0XHRcdFx0XHRcdFx0XHRwcm9wcy5hdHRyaWJ1dGVzLnN1bW1hcnkgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J3AnLFxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdkZXNjcmlwdGlvbicgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHByb3BzLmF0dHJpYnV0ZXMuc3VtbWFyeWxlbmd0aCAmJiB1bmVzY2FwZUhUTUwoaXRlbVsnZGVzY3JpcHRpb24nXSkubGVuZ3RoID4gcHJvcHMuYXR0cmlidXRlcy5zdW1tYXJ5bGVuZ3RoID8gdW5lc2NhcGVIVE1MKGl0ZW1bJ2Rlc2NyaXB0aW9uJ10pLnN1YnN0cmluZygwLCBwcm9wcy5hdHRyaWJ1dGVzLnN1bW1hcnlsZW5ndGgpICsgJyBb4oCmXScgOiB1bmVzY2FwZUhUTUwoaXRlbVsnZGVzY3JpcHRpb24nXSlcblx0XHRcdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0XHRcdGZlZWR6eWpzLmlzUHJvICYmIGl0ZW1bJ21lZGlhJ10gJiYgaXRlbVsnbWVkaWEnXVsnc3JjJ10gJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdFx0XHRcdFx0J2F1ZGlvJyxcblx0XHRcdFx0XHRcdFx0XHRcdHsgY29udHJvbHM6IHRydWUsIGNvbnRyb2xzTGlzdDogJ25vZG93bmxvYWQnIH0sXG5cdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ3NvdXJjZScsIHsgc3JjOiBpdGVtWydtZWRpYSddWydzcmMnXSwgdHlwZTogaXRlbVsnbWVkaWEnXVsndHlwZSddIH0pLFxuXHRcdFx0XHRcdFx0XHRcdFx0X18oJ1lvdXIgYnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IHRoZSBhdWRpbyBlbGVtZW50LiBCdXQgeW91IGNhbiBjaGVjayB0aGlzIGZvciB0aGUgb3JpZ2luYWwgbGluazogJyksXG5cdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCdhJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0eyBocmVmOiBpdGVtWydtZWRpYSddWydzcmMnXSB9LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtWydtZWRpYSddWydzcmMnXVxuXHRcdFx0XHRcdFx0XHRcdFx0KVxuXHRcdFx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRcdFx0ZmVlZHp5anMuaXNQcm8gJiYgcHJvcHMuYXR0cmlidXRlcy5wcmljZSAmJiBpdGVtWydwcmljZSddICYmIHByb3BzLmF0dHJpYnV0ZXMudGVtcGxhdGUgIT09ICdkZWZhdWx0JyAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHQnZGl2Jyxcblx0XHRcdFx0XHRcdFx0XHRcdHsgY2xhc3NOYW1lOiAncHJpY2Utd3JhcCcgfSxcblx0XHRcdFx0XHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRcdFx0XHRcdFx0J2EnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0J2J1dHRvbicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBjbGFzc05hbWU6ICdwcmljZScgfSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpdGVtWydwcmljZSddXG5cdFx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdFx0XHQpXG5cdFx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHRcdClcblx0XHRcdFx0XHQpO1xuXHRcdFx0XHR9KVxuXHRcdFx0KVxuXHRcdCldO1xuXHR9LFxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKCkge1xuXHRcdC8vIFJlbmRlcmluZyBpbiBQSFBcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxufSk7XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9pbmNsdWRlcy9ndXRlbmJlcmcvc3JjL2Jsb2NrLmpzXG4vLyBtb2R1bGUgaWQgPSAyOVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///29\n");
    246246
    247247/***/ }),
  • feedzy-rss-feeds/trunk/includes/gutenberg/feedzy-rss-feeds-gutenberg-block.php

    r2266501 r2313563  
    234234        }
    235235
     236        $url = $feed;
     237
    236238        $meta_args = array(
    237239            'date_format' => get_option( 'date_format' ),
     
    242244        $admin = $instance->get_admin();
    243245        $feed = $admin->fetch_feed( $feed, '12_hours', array( '' ) );
    244 
    245246        $feedy = array();
    246247
     
    261262        }
    262263
    263         if ( feedzy_is_pro() ) {
    264             $pro = new Feedzy_Rss_Feeds_Pro_Admin( $instance->get_plugin_name(), $instance->get_version() );
    265         }
    266 
    267264        $feedy['items'] = array();
    268265        $items = $feed->get_items();
    269266        $is_multiple = ! empty( $feed->multifeed_url ) && is_array( $feed->multifeed_url );
    270267        foreach ( $items as $item ) {
    271             if ( feedzy_is_pro() ) {
    272                 $item_attrs = $pro->feedzy_pro_add_data_to_item( array(), $item );
    273             }
    274 
    275             $description = isset( $item_attrs['item_description'] ) ? $item_attrs['item_description'] : ( $item->get_description() ? $item->get_description() : null );
     268            $item_attrs = apply_filters( 'feedzy_item_filter', array(), $item );
    276269
    277270            array_push(
     
    284277                    'date'        => ( ( $item->get_date() ) ? date_i18n( $meta_args['date_format'], $item->get_date( 'U' ) ) : null ),
    285278                    'time'        => ( ( $item->get_date() ) ? date_i18n( $meta_args['time_format'], $item->get_date( 'U' ) ) : null ),
    286                     'description' => $description,
     279                    'description' => isset( $item_attrs['item_description'] ) ? $item_attrs['item_description'] : ( $item->get_description() ? $item->get_description() : null ),
    287280                    'thumbnail'   => $admin->feedzy_retrieve_image( $item ),
    288                     'price'       => ( ( feedzy_is_pro() && $item_attrs['item_price'] ) ? $item_attrs['item_price'] : null ),
    289                     'media'       => ( ( feedzy_is_pro() && $item_attrs['item_media'] ) ? $item_attrs['item_media'] : null ),
    290                     'categories'  => ( ( feedzy_is_pro() && $item_attrs['item_categories'] ) ? $item_attrs['item_categories'] : null ),
     281                    'price'       => isset( $item_attrs['item_price'] ) ? $item_attrs['item_price'] : null,
     282                    'media'       => isset( $item_attrs['item_media'] ) ? $item_attrs['item_media'] : null,
     283                    'categories'  => isset( $item_attrs['item_categories'] ) ? $item_attrs['item_categories'] : null,
    291284                )
    292285            );
     286        }
     287
     288        // manually delete the transient so that correct cache time can be used.
     289        if ( ! defined( 'TI_CYPRESS_TESTING' ) ) {
     290            delete_transient( 'feed_' . md5( $url ) );
    293291        }
    294292
  • feedzy-rss-feeds/trunk/includes/layouts/feedzy-improve.php

    r2266501 r2313563  
    1         <div class="fz-feature">
     1    <div class="fz-feature">
     2        <div class="fz-feature-inner">
    23            <div class="fz-feature-features">
    34                <h2>Answer a few questions for us to help us improve the product</h2>
     
    78                <?php } ?>
    89            </div>
     10            <div class="clear"></div>
    911        </div>
     12    </div>
     13    <div class="clear"></div>
  • feedzy-rss-feeds/trunk/includes/layouts/feedzy-support.php

    r2266501 r2313563  
    55    <?php
    66    $active_tab  = isset( $_REQUEST['tab'] ) ? sanitize_text_field( $_REQUEST['tab'] ) : 'help';
    7     $show_more = ! class_exists( 'Feedzy_Rss_Feeds_Pro' ) || false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' );
     7    $show_more = ! feedzy_is_pro() || false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' );
    88    ?>
    99
     
    2626
    2727    <div class="fz-features-content">
    28         <div class="fz-feature">
    2928            <div id="feedzy_import_feeds" class="fz-feature-features">
    3029                    <?php
     
    4948                    ?>
    5049            </div>
    51         </div>
    5250    </div>
    5351
  • feedzy-rss-feeds/trunk/includes/layouts/feedzy-tutorial.php

    r2219984 r2313563  
    55@package  feedzy-rss-feeds
    66-->
    7 <div id="fz-features">
     7<?php
     8    $is_pro = feedzy_is_pro();
     9?>
     10        <div class="fz-feature">
     11            <div class="fz-feature-inner">
     12                <div class="fz-feature-features">
     13                    <h2>Welcome to Feedzy!</h2>
     14                    <p>Feedzy helps you aggregate unlimited RSS feeds and automatically publish them on your site within a few minutes.</p>
     15                    <p>With this version, you can already:</p>
    816
    9     <div class="fz-features-content">
    10    
     17                    <ul style="list-style: disc; list-style-position: inside;">
     18                        <li>Import an unlimited number of feeds</li>
     19                        <li>Automatically create posts from your feeds (feed to post)</li>
     20                        <li>Easily display RSS feeds (shortcodes, gutenberg blocks etc.)</li>
     21                        <li>Import images</li>
     22                        <li>Organize feeds into categories</li>
     23                        <?php if ( $is_pro ) { ?>
     24                        <li>Filter feeds based on keywords</li>
     25                        <li>WordAI and SpinnerChief integration</li>
     26                        <li>Add affiliate links and referral parameters</li>
     27                        <li>Automatically delete posts after X days</li>
     28                        <?php } ?>
     29                    </ul>
     30
     31                <?php if ( ! $is_pro ) { ?>
     32                    <p>We have many more features and offer email & chat support if you purchase our <a href="<?php echo FEEDZY_UPSELL_LINK; ?>" target="_blank">Pro Version</a>.</p>
     33                <?php } ?>
     34
     35                <p>Ready to begin? Let's <a href="<?php echo add_query_arg( 'post_type', 'feedzy_imports', admin_url( 'post-new.php' ) ); ?>">import a post</a> or <a href="<?php echo add_query_arg( 'post_type', 'feedzy_categories', admin_url( 'post-new.php' ) ); ?>" target="_blank">create a category</a>!
     36
     37                </div>
     38                <div class="clear"></div>
     39            </div>
     40        </div>
     41        <div class="clear"></div>
     42
    1143        <a name="shortcode"></a>
    1244        <div class="fz-feature">
    13             <div class="fz-feature-features">
    14             <h2>Shortcode</h2>
    15                 <p>Show feed items using the <code>[feedzy-rss-feeds]</code>shortcode in a few easy steps.</p>
    16                 <p>You can view our documentation <a href="https://docs.themeisle.com/article/658-feedzy-rss-feeds" target="_blank">here</a></p>
    17             </div>
    18             <div class="fz-feature-image">
    19                 <iframe width="600" height="300" src="https://www.youtube.com/embed/GEFAY2IxxEc?start=84" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
     45            <div class="fz-feature-inner">
     46                <div class="fz-feature-features">
     47                    <h2>Shortcode</h2>
     48                    <p>Show feed items using the <code>[feedzy-rss]</code>shortcode in a few easy steps.</p>
     49                    <p>You can view our documentation <a href="https://docs.themeisle.com/article/658-feedzy-rss-feeds" target="_blank">here</a></p>
     50                </div>
     51                <div class="fz-feature-image">
     52                    <iframe width="600" height="300" src="https://www.youtube.com/embed/GEFAY2IxxEc?start=84" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
     53                </div>
     54                <div class="clear"></div>
    2055            </div>
    2156        </div>
     57        <div class="clear"></div>
    2258
    23         <?php if ( class_exists( 'Feedzy_Rss_Feeds_Pro' ) ) { ?>
     59        <?php if ( $is_pro ) { ?>
    2460        <div class="fz-feature">
    25             <div class="fz-feature-features">
    26                 <h2>Shortcode templates to suit your style</h2>
    27                 <p><a href="https://docs.themeisle.com/article/1119-feedzy-rss-feeds-documentation#examples" target="_blank">Three beautiful templates</a> are available for you to choose the style which best fits your design. We even have support for complex media such as <a href="https://demo.themeisle.com/feedzy-rss-feeds/audio-feed-template/" target="_blank">audio playback</a> and <a href="https://docs.themeisle.com/article/1113-how-to-get-videos-from-youtube-with-feedzy" target="_blank">YouTube videos</a>.</p>
    28                 <p>If you like to roll your own templates, <a href="https://docs.themeisle.com/article/1162-feedzy-custom-templates" target="_blank">template tags</a> are available to help you do just that!</p>
    29             </div>
    30             <div class="fz-feature-image">
    31                 <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-templates.jpg" alt="Feed templates">
     61            <div class="fz-feature-inner">
     62                <div class="fz-feature-features">
     63                    <h2>Shortcode templates to suit your style</h2>
     64                    <p><a href="https://docs.themeisle.com/article/1119-feedzy-rss-feeds-documentation#examples" target="_blank">Three beautiful templates</a> are available for you to choose the style which best fits your design. We even have support for complex media such as <a href="https://demo.themeisle.com/feedzy-rss-feeds/audio-feed-template/" target="_blank">audio playback</a> and <a href="https://docs.themeisle.com/article/1113-how-to-get-videos-from-youtube-with-feedzy" target="_blank">YouTube videos</a>.</p>
     65                    <p>If you like to roll your own templates, <a href="https://docs.themeisle.com/article/1162-feedzy-custom-templates" target="_blank">template tags</a> are available to help you do just that!</p>
     66                </div>
     67                <div class="fz-feature-image">
     68                    <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-templates.jpg" alt="Feed templates">
     69                </div>
     70                <div class="clear"></div>
    3271            </div>
    3372        </div>
     73        <div class="clear"></div>
    3474        <?php } ?>
    3575
    36         <?php if ( class_exists( 'Feedzy_Rss_Feeds_Pro' ) ) { ?>
    3776        <a name="import"></a>
    3877        <div class="fz-feature">
    39             <div class="fz-feature-features">
    40             <h2>Feed to Post</h2>
    41                 <p>Convert feed items into WordPress Posts, Pages, or any custom post type in a few easy steps.</p>
    42                 <p>You can view our documentation <a href="https://docs.themeisle.com/article/742-how-to-import-posts-from-feeds-in-feedzy" target="_blank">here</a></p>       
    43             </div>
    44             <div class="fz-feature-image">
    45                 <iframe width="600" height="300" src="https://www.youtube.com/embed/Fzx5W_PfQsQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
     78            <div class="fz-feature-inner">
     79                <div class="fz-feature-features">
     80                    <h2>Feed to Post</h2>
     81                    <p>Convert feed items into WordPress Posts, Pages, or any custom post type in a few easy steps.</p>
     82                    <p>You can view our documentation <a href="https://docs.themeisle.com/article/742-how-to-import-posts-from-feeds-in-feedzy" target="_blank">here</a></p>       
     83                </div>
     84                <div class="fz-feature-image">
     85                    <iframe width="600" height="300" src="https://www.youtube.com/embed/Fzx5W_PfQsQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
     86                </div>
     87                <div class="clear"></div>
    4688            </div>
    4789        </div>
     90        <div class="clear"></div>
     91
     92        <?php if ( true === apply_filters( 'feedzy_is_license_of_type', false, 'agency' ) ) { ?>
     93
     94        <div class="fz-feature">
     95            <div class="fz-feature-inner">
     96                <div class="fz-feature-features">
     97                    <h2>Integration with SpinnerChief & WordAI</h2>
     98                    <p>Through WordAI integration, Feedzy will give you unlimited new content. Your SpinnerChief or WordAI subscriptions (not included) integrate seamlessly with Feedzy, so you won't ever have to worry about duplicate content - or Google penalties - again. <a href="https://docs.themeisle.com/article/746-how-to-use-wordai-to-rephrase-rss-content-in-feedzy" target="_blank">Check this out here.</a></p>
     99                </div>
     100                <div class="fz-feature-image">
     101                    <img src="<?php echo FEEDZY_ABSURL; ?>/img/feedzy-rss-feeds-wordai.jpg" alt="WordAi integration">
     102                </div>
     103                <div class="clear"></div>
     104            </div>
     105        </div>
     106        <div class="clear"></div>
    48107        <?php } ?>
    49108
    50         <?php if ( true === apply_filters( 'feedzy_is_license_of_type', false, 'agency' ) ) { ?>
     109
    51110        <div class="fz-feature">
    52             <div class="fz-feature-features">
    53                 <h2>Integration with SpinnerChief & WordAI</h2>
    54                 <p>Through WordAI integration, Feedzy will give you unlimited new content. Your SpinnerChief or WordAI subscriptions (not included) integrate seamlessly with Feedzy, so you won't ever have to worry about duplicate content - or Google penalties - again. <a href="https://docs.themeisle.com/article/746-how-to-use-wordai-to-rephrase-rss-content-in-feedzy" target="_blank">Check this out here.</a></p>
    55             </div>
    56             <div class="fz-feature-image">
    57                 <img src="<?php echo FEEDZY_ABSURL; ?>/img/feedzy-rss-feeds-wordai.jpg" alt="WordAi integration">
     111            <div class="fz-feature-inner">
     112                <div class="fz-feature-features fz-feature-centered">
     113                    <h2>Grow your WordPress business with Feedzy today.</h2>
     114                    <?php
     115                    if ( ! $is_pro || false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' ) ) {
     116                        ?>
     117                    <div class="header-btns">
     118                        <a href="<?php echo esc_url( admin_url( 'admin.php?page=feedzy-support&tab=more' ) ); ?>" class="buy-now">
     119                        <span class="dashicons dashicons-cart"></span> Click here to see the additional features in Feedzy Pro</a>
     120                    </div>
     121                        <?php
     122                    }
     123                    ?>
     124                </div>
     125                <div class="clear"></div>
    58126            </div>
    59127        </div>
    60         <?php } ?>
    61 
    62         <div class="fz-feature">
    63         <div class="fz-feature-features fz-feature-centered">
    64             <h2>Grow your WordPress business with Feedzy today.</h4>
    65         <div class="header-btns">
    66             <?php
    67             $show_more = ! class_exists( 'Feedzy_Rss_Feeds_Pro' ) || false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' );
    68 
    69             if ( $show_more ) {
    70                 ?>
    71             <a href="<?php echo esc_url( admin_url( 'admin.php?page=feedzy-support&tab=more' ) ); ?>" class="buy-now"><span
    72             class="dashicons dashicons-cart"></span> Click here to see the additional features in Feedzy Pro</a>
    73                 <?php
    74             }
    75             ?>
    76         </div>
    77 
    78     </div><!-- .fz-features-content -->
    79 
    80 </div>
     128        <div class="clear"></div>
  • feedzy-rss-feeds/trunk/includes/layouts/feedzy-upsell.php

    r2219984 r2313563  
    66-->
    77
    8 <div id="fz-features">
     8<?php
     9    $is_pro = feedzy_is_pro();
     10?>
    911
    10     <div class="fz-features-content">
    11    
    12     <?php if ( false === apply_filters( 'feedzy_is_license_of_type', false, 'pro' ) ) { ?>
    13         <div class="fz-feature">
    14             <div class="fz-feature-features fz-feature-centered">
    15                 <h2>Boost your Business with Pro Content</h4>
    16                     <h4>Aggregate unlimited RSS feeds in your posts, pages or custom content types</h3>
    17                         <br><hr><br>
    18                         <h4>Upgrade to Feedzy Pro to experience powerful benefits:</h4>
    19                         <h3>Add content on up to 30 of your own websites, automatically build affiliate links, integrate with WordAI and even add live product pricing feeds.</h3>
    20                         <div class="header-btns">
    21                             <a target="_blank" href="<?php echo FEEDZY_UPSELL_LINK; ?>" class="buy-now"><span class="dashicons dashicons-cart"></span> Upgrade to Pro now</a>
    22                         </div>
     12<?php if ( ! $is_pro ) { ?>
     13<div class="fz-feature">
     14    <div class="fz-feature-inner">
     15        <div class="fz-feature-features">
     16            <h2>Boost your Business with Pro Content</h2>
     17            <h3>Upgrade to Feedzy Pro to experience powerful benefits</h3>
     18            <p>Aggregate unlimited RSS feeds in your posts, pages or custom content types</p>
     19            <p>Add content on up to 30 of your own websites, automatically build affiliate links, integrate with WordAI and even add live product pricing feeds.</p>
     20        </div>
     21        <div class="fz-feature-image">
     22            <div class="header-btns">
     23                <a target="_blank" href="<?php echo FEEDZY_UPSELL_LINK; ?>" class="buy-now"><span class="dashicons dashicons-cart"></span> Upgrade to Pro now</a>
    2324            </div>
    2425        </div>
    25         <div class="fz-feature">
    26             <div class="fz-feature-features">
    27             <h2>Unlimited Content</h2>
    28                 <p>With Pro, collect RSS feeds from an unlimited number of sources and bring them to up to 30 of your own WordPress sites.</p>
    29                 <p>Feedzy will automatically filter each feed item and place it wherever you want in your site. Easy to install and ready to go.</p>
    30                 <h2>Feed to Post</h2>
    31                 <p>Convert feed items into WordPress Posts, Pages, or any custom post type in a few easy steps.</p>
     26        <div class="clear"></div>
     27    </div>
     28</div>
     29<div class="clear"></div>
     30
     31<div class="fz-feature">
     32    <div class="fz-feature-inner">
     33        <div class="fz-feature-features">
     34            <h2>Unlimited Content with Feed to Post</h2>
     35            <p>Convert feed items into WordPress Posts, Pages, or any custom post type in a few easy steps.</p>
     36            <p>With Pro, collect RSS feeds from an unlimited number of sources and bring them to up to 30 of your own WordPress sites.</p>
     37            <p>Feedzy will automatically filter each feed item and place it wherever you want in your site. Easy to install and ready to go.</p>
     38        </div>
     39        <div class="fz-feature-image">
     40            <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-feed-to-post.jpg" alt="Feed to post">
     41        </div>
     42        <div class="clear"></div>
     43    </div>
     44</div>
     45<div class="clear"></div>
     46
     47<div class="fz-feature">
     48    <div class="fz-feature-inner">
     49        <div class="fz-feature-features">
     50            <h2>Shortcode templates to suit your style</h2>
     51            <p><a href="https://docs.themeisle.com/article/1119-feedzy-rss-feeds-documentation#examples" target="_blank">Three beautiful templates</a> are available for you to choose the style which best fits your design. We even have support for complex media such as <a href="https://demo.themeisle.com/feedzy-rss-feeds/audio-feed-template/" target="_blank">audio playback</a> and <a href="https://docs.themeisle.com/article/1113-how-to-get-videos-from-youtube-with-feedzy" target="_blank">YouTube videos</a>.</p>
     52            <p>If you like to roll your own templates, <a href="https://docs.themeisle.com/article/1162-feedzy-custom-templates" target="_blank">template tags</a> are available to help you do just that!</p>
     53        </div>
     54        <div class="fz-feature-image">
     55            <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-templates.jpg" alt="Feed templates">
     56        </div>
     57        <div class="clear"></div>
     58    </div>
     59</div>
     60<div class="clear"></div>
     61
     62
     63<div class="fz-feature">
     64    <div class="fz-feature-inner">
     65        <div class="fz-feature-features">
     66            <h2>Grow your business</h2>
     67            <p>Feature affiliate links on your site with Feedzy. Pro automatically includes your referral/affiliate ID on feed links. You can even import prices from product sources to create extra value for your readers.</p>
     68        </div>
     69        <div class="fz-feature-image">
     70            <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-affiliate-ready.jpg" alt="Protect your Brand">
     71        </div>
     72        <div class="clear"></div>
     73    </div>
     74</div>
     75<div class="clear"></div>
     76
     77<div class="fz-feature">
     78    <div class="fz-feature-inner">
     79        <div class="fz-feature-features">
     80            <h2>Protect your Brand</h2>
     81            <p>Take control of your content: blacklist specific keywords to show only the content you want to display on your site.</p>
     82        </div>
     83        <div class="fz-feature-image">
     84            <img src="<?php echo FEEDZY_ABSURL; ?>/img/Protect-your-Brand.jpg" alt="Affiliate ready">
     85        </div>
     86        <div class="clear"></div>
     87    </div>
     88</div>
     89<div class="clear"></div>
     90
     91<?php } ?>
     92
     93<?php if ( $is_pro && false === apply_filters( 'feedzy_is_license_of_type', false, 'business' ) ) { ?>
     94
     95<div class="fz-feature">
     96    <div class="fz-feature-inner">
     97        <div class="fz-feature-features">
     98            <h2>Unlimited Content with Feed to Post</h2>
     99            <p>Convert feed items into WordPress Posts, Pages, or any custom post type in a few easy steps.</p>
     100            <p>With Pro, collect RSS feeds from an unlimited number of sources and bring them to up to 30 of your own WordPress sites.</p>
     101            <p>Feedzy will automatically filter each feed item and place it wherever you want in your site. Easy to install and ready to go.</p>
     102        </div>
     103        <div class="fz-feature-image">
     104            <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-feed-to-post.jpg" alt="Feed to post">
     105        </div>
     106        <div class="clear"></div>
     107    </div>
     108</div>
     109<div class="clear"></div>
     110
     111<?php } ?>
     112
     113<?php if ( $is_pro && false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' ) ) { ?>
     114
     115<div class="fz-feature">
     116    <div class="fz-feature-inner">
     117        <div class="fz-feature-features">
     118            <h2>Integration with SpinnerChief & WordAI</h2>
     119            <p>Through WordAI integration, Feedzy will give you unlimited new content. Your SpinnerChief or WordAI subscriptions (not included) integrate seamlessly with Feedzy, so you won't ever have to worry about duplicate content - or Google penalties - again. <a href="https://docs.themeisle.com/article/746-how-to-use-wordai-to-rephrase-rss-content-in-feedzy" target="_blank">Check this out here.</a></p>
     120        </div>
     121        <div class="fz-feature-image">
     122            <img src="<?php echo FEEDZY_ABSURL; ?>/img/feedzy-rss-feeds-wordai.jpg" alt="WordAi integration">
     123        </div>
     124        <div class="clear"></div>
     125    </div>
     126</div>
     127<div class="clear"></div>
     128
     129<?php } ?>
     130
     131<?php if ( ! $is_pro ) { ?>
     132
     133<div class="fz-feature">
     134    <div class="fz-feature-inner">
     135        <div class="fz-feature-features">
     136            <h2>World-class support</h2>
     137            <p>We're proud to serve over 10,000 happy customers and provide unlimited support/updates for the duration of your subscription. If you need help, our customer service and developer teams are on-hand to offer personalized, priority assistance to Pro customers.</p>
     138        </div>
     139        <div class="fz-feature-image">
     140            <img src="<?php echo FEEDZY_ABSURL; ?>/img/World-class-support.jpg" alt="World Class Support">
     141        </div>
     142        <div class="clear"></div>
     143    </div>
     144</div>
     145<div class="clear"></div>
     146
     147<?php } ?>
     148
     149<div class="fz-feature">
     150    <div class="fz-feature-inner">
     151        <div class="fz-feature-features fz-feature-centered">
     152            <h2>Grow your WordPress business with Feedzy today.</h2>
     153            <?php
     154            if ( false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' ) ) {
     155                ?>
     156            <div class="header-btns">
     157                <a href="<?php echo FEEDZY_UPSELL_LINK; ?>" class="buy-now">
     158                <span class="dashicons dashicons-cart"></span> Upgrade to Feedzy Pro</a>
    32159            </div>
    33             <div class="fz-feature-image">
    34                 <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-feed-to-post.jpg" alt="Feed to post">
    35             </div>
     160                <?php
     161            }
     162            ?>
    36163        </div>
    37         <div class="fz-feature">
    38             <div class="fz-feature-features">
    39                 <h2>Shortcode templates to suit your style</h2>
    40                 <p><a href="https://docs.themeisle.com/article/1119-feedzy-rss-feeds-documentation#examples" target="_blank">Three beautiful templates</a> are available for you to choose the style which best fits your design. We even have support for complex media such as <a href="https://demo.themeisle.com/feedzy-rss-feeds/audio-feed-template/" target="_blank">audio playback</a> and <a href="https://docs.themeisle.com/article/1113-how-to-get-videos-from-youtube-with-feedzy" target="_blank">YouTube videos</a>.</p>
    41                 <p>If you like to roll your own templates, <a href="https://docs.themeisle.com/article/1162-feedzy-custom-templates" target="_blank">template tags</a> are available to help you do just that!</p>
    42             </div>
    43             <div class="fz-feature-image">
    44                 <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-templates.jpg" alt="Feed templates">
    45             </div>
    46         </div>
    47         <div class="fz-feature">
    48             <div class="fz-feature-features">
    49                 <h2>Grow your business</h2>
    50                 <p>Feature affiliate links on your site with Feedzy. Pro automatically includes your referral/affiliate ID on feed links. You can even import prices from product sources to create extra value for your readers.</p>
    51             </div>
    52             <div class="fz-feature-image">
    53                 <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-affiliate-ready.jpg" alt="Protect your Brand">
    54             </div>
    55         </div>
    56         <div class="fz-feature">
    57             <div class="fz-feature-features">
    58                 <h2>Protect your Brand</h2>
    59                 <p>Take control of your content: blacklist specific keywords to show only the content you want to display on your site.</p>
    60             </div>
    61             <div class="fz-feature-image">
    62                 <img src="<?php echo FEEDZY_ABSURL; ?>/img/Protect-your-Brand.jpg" alt="Affiliate ready">
    63             </div>
    64         </div>
    65         <?php } ?>
    66         <?php if ( true === apply_filters( 'feedzy_is_license_of_type', false, 'pro' ) && false === apply_filters( 'feedzy_is_license_of_type', false, 'business' ) ) { ?>
    67             <div class="fz-feature">
    68                 <div class="fz-feature-features">
    69                 <h2>Unlimited Content</h2>
    70                     <p>With Pro, collect RSS feeds from an unlimited number of sources and bring them to up to 30 of your own WordPress sites.</p>
    71                     <p>Feedzy will automatically filter each feed item and place it wherever you want in your site. Easy to install and ready to go.</p>
    72                     <h2>Feed to Post</h2>
    73                     <p>Convert feed items along with their <b>full content</b> into WordPress Posts, Pages, or any custom post type in a few easy steps.</p>
    74                 </div>
    75                 <div class="fz-feature-image">
    76                     <img src="<?php echo FEEDZY_ABSURL; ?>/img/features-feed-to-post.jpg" alt="Feed to post">
    77                 </div>
    78             </div>
    79         <?php } ?>
    80         <?php if ( false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' ) ) { ?>
    81         <div class="fz-feature">
    82             <div class="fz-feature-features">
    83                 <h2>Integration with SpinnerChief & WordAI</h2>
    84                 <p>Through WordAI integration, Feedzy will give you unlimited new content. Your SpinnerChief or WordAI subscriptions (not included) integrate seamlessly with Feedzy, so you won't ever have to worry about duplicate content - or Google penalties - again. <a href="https://docs.themeisle.com/article/746-how-to-use-wordai-to-rephrase-rss-content-in-feedzy" target="_blank">Check this out here.</a></p>
    85             </div>
    86             <div class="fz-feature-image">
    87                 <img src="<?php echo FEEDZY_ABSURL; ?>/img/feedzy-rss-feeds-wordai.jpg" alt="WordAi integration">
    88             </div>
    89         </div>
    90         <?php } ?>
    91         <div class="fz-feature">
    92             <div class="fz-feature-features">
    93                 <h2>World-class support</h2>
    94                 <p>We’re proud to serve over 10,000 happy customers and provide unlimited support/updates for the duration of your subscription. If you need help, our customer service and developer teams are on-hand to offer personalized, priority assistance to Pro customers.</p>
    95             </div>
    96             <div class="fz-feature-image">
    97                 <img src="<?php echo FEEDZY_ABSURL; ?>/img/World-class-support.jpg" alt="World Class Support">
    98             </div>
    99         </div>
    100 
    101         <div class="fz-feature">
    102         <div class="fz-feature-features fz-feature-centered">
    103             <h2>Grow your WordPress business with Feedzy today.</h4>
    104         <div class="header-btns">
    105             <?php if ( false === apply_filters( 'feedzy_is_license_of_type', false, 'agency' ) ) { ?>
    106             <a target="_blank" href="<?php echo FEEDZY_UPSELL_LINK; ?>" class="buy-now"><span
    107             class="dashicons dashicons-cart"></span> Get Feedzy Pro</a>
    108             <?php } ?>
    109         </div>
    110 
    111     </div><!-- .fz-features-content -->
    112 
     164        <div class="clear"></div>
     165    </div>
    113166</div>
     167<div class="clear"></div>
  • feedzy-rss-feeds/trunk/includes/layouts/settings.php

    r2080032 r2313563  
    3636    <?php } ?>
    3737
     38
    3839    <div class="fz-features-content">
    39         <div class="fz-feature">
    40             <div id="feedzy_import_feeds" class="fz-feature-features">
     40        <div id="feedzy_import_feeds" class="fz-feature-features">
     41            <div class="fz-feature">
     42                <div class="fz-feature-inner">
     43                    <div class="fz-feature-features">
    4144
    42                 <form method="post" action="">
     45                    <form method="post" action="">
    4346                    <?php
    4447                    $disble_featured_image = '';
     
    133136                    }
    134137                    ?>
    135                 </form>
     138                    </form>
     139                    </div>
     140                </div>
    136141            </div>
    137142        </div>
    138143    </div>
    139 
    140144</div>
  • feedzy-rss-feeds/trunk/readme.md

    r2279039 r2313563  
    11# RSS Aggregator by Feedzy - Powerful WP Autoblogging and News Aggregator #
    2 **Contributors:** [themeisle](https://profiles.wordpress.org/themeisle), [codeinwp](https://profiles.wordpress.org/codeinwp), [hardeepasrani](https://profiles.wordpress.org/hardeepasrani), [contactashish13](https://profiles.wordpress.org/contactashish13
     2**Contributors:** [themeisle](https://profiles.wordpress.org/themeisle), [codeinwp](https://profiles.wordpress.org/codeinwp), [hardeepasrani](https://profiles.wordpress.org/hardeepasrani), [rozroz](https://profiles.wordpress.org/rozroz
    33**Tags:** rss aggregator, news aggregator, autoblogging, feed to post, rss import 
    44**Requires at least:** 3.7 
     
    161161
    162162
     163
    163164### Is it responsive friendly? ###
    164165
     
    444445 = How to change the date format RSS items in Feedzy =
    445446 [https://docs.themeisle.com/article/1200-how-to-change-the-date-format-for-rss-items-in-feedzy](https://docs.themeisle.com/article/1200-how-to-change-the-date-format-for-rss-items-in-feedzy)
     447
     448 = Lazy loading feed items with Feedzy =
     449 [https://docs.themeisle.com/article/1220-lazy-loading-feed-items-with-feedzy](https://docs.themeisle.com/article/1220-lazy-loading-feed-items-with-feedzy)
    446450
    447451 == Screenshots ==
     
    454458
    455459 == Changelog ==
     460### 3.4.0 - 2020-05-28  ###
     461
     462* - [Feat] Options to import feeds to posts
     463* - [Feat] New [#item_source] tag for Feed to Post to display the feed source name
     464* - [Feat] Improved Settings page style and layout
     465* - [Feat] Use SimplePieItem's get_id to determine the uniqueness of feed items
     466* - [Fix] WP 5.4 Feedzy block compatibility
     467* - [Fix] Feed Caching time stuck to 12 hours
     468* - [Fix] PHP Notice: Undefined index errors in the widget
     469* - [Fix] Bulk activation of plugin aborts activation of subsequent plugins
     470* - [Fix] Wrong shortcode mentioned in the Support tab
     471* - [Fix] Notice: Undefined index: host when item has no link element
     472
     473
    456474### 3.3.19 - 2020-04-08  ###
    457475
  • feedzy-rss-feeds/trunk/readme.txt

    r2279039 r2313563  
    11=== RSS Aggregator by Feedzy - Powerful WP Autoblogging and News Aggregator ===
    2 Contributors: themeisle,codeinwp,hardeepasrani,contactashish13
     2Contributors: themeisle,codeinwp,hardeepasrani,rozroz
    33Tags: rss aggregator, news aggregator, autoblogging, feed to post, rss import
    44Requires at least: 3.7
     
    162162
    163163
     164
    164165= Is it responsive friendly? =
    165166
     
    448449 = Lazy loading feed items with Feedzy =
    449450 [https://docs.themeisle.com/article/1220-lazy-loading-feed-items-with-feedzy](https://docs.themeisle.com/article/1220-lazy-loading-feed-items-with-feedzy)
     451
     452 = How to install and activate Feedzy Pro =
     453 [https://docs.themeisle.com/article/1247-how-to-install-and-activate-feedzy-pro](https://docs.themeisle.com/article/1247-how-to-install-and-activate-feedzy-pro)
    450454
    451455 == Screenshots ==
     
    458462
    459463 == Changelog ==
     464= 3.4.0 - 2020-05-28  =
     465
     466* - [Feat] Options to import feeds to posts
     467* - [Feat] New [#item_source] tag for Feed to Post to display the feed source name
     468* - [Feat] Improved Settings page style and layout
     469* - [Feat] Use SimplePieItem's get_id to determine the uniqueness of feed items
     470* - [Fix] WP 5.4 Feedzy block compatibility
     471* - [Fix] Feed Caching time stuck to 12 hours
     472* - [Fix] PHP Notice: Undefined index errors in the widget
     473* - [Fix] Bulk activation of plugin aborts activation of subsequent plugins
     474* - [Fix] Wrong shortcode mentioned in the Support tab
     475* - [Fix] Notice: Undefined index: host when item has no link element
     476
     477
    460478= 3.3.19 - 2020-04-08  =
    461479
  • feedzy-rss-feeds/trunk/themeisle-hash.json

    r2279039 r2313563  
    1 {"feedzy-rss-feed.php":"6bb2467e665b2ece51a075ad5b26ab74","index.php":"71c0755260138a4b7b2182c3c61179f6","uninstall.php":"cdb21f8648e005cbb9c73481d1750186"}
     1{"feedzy-rss-feed.php":"970497daf806094d033d5f73c3acd972","index.php":"71c0755260138a4b7b2182c3c61179f6","uninstall.php":"cdb21f8648e005cbb9c73481d1750186"}
  • feedzy-rss-feeds/trunk/vendor/autoload.php

    r2279039 r2313563  
    55require_once __DIR__ . '/composer' . '/autoload_real.php';
    66
    7 return ComposerAutoloaderInita10706ed67f4e2e516cd1a7d3bb6364e::getLoader();
     7return ComposerAutoloaderInit7fb4215b72f4848bb22f0ac711b9a3ea::getLoader();
  • feedzy-rss-feeds/trunk/vendor/autoload_52.php

    r2279039 r2313563  
    55require_once dirname(__FILE__) . '/composer'.'/autoload_real_52.php';
    66
    7 return ComposerAutoloaderInitac2c9200e7ae30bfadcb0fa3236dee73::getLoader();
     7return ComposerAutoloaderInit0ddd46c0c2ae68aa855b852b5281cd42::getLoader();
  • feedzy-rss-feeds/trunk/vendor/codeinwp/themeisle-sdk/CHANGELOG.md

    r2279039 r2313563  
     1##### [Version 3.2.9](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.8...v3.2.9) (2020-05-18)
     2
     3adds new endpoints
     4
    15##### [Version 3.2.8](https://github.com/Codeinwp/themeisle-sdk/compare/v3.2.7...v3.2.8) (2020-03-24)
    26
  • feedzy-rss-feeds/trunk/vendor/codeinwp/themeisle-sdk/load.php

    r2279039 r2313563  
    1515}
    1616// Current SDK version and path.
    17 $themeisle_sdk_version = '3.2.8';
     17$themeisle_sdk_version = '3.2.9';
    1818$themeisle_sdk_path    = dirname( __FILE__ );
    1919
  • feedzy-rss-feeds/trunk/vendor/codeinwp/themeisle-sdk/src/Modules/Licenser.php

    r2279039 r2313563  
    797797        if ( false !== $namespace ) {
    798798            add_filter( 'themeisle_sdk_license_process_' . $namespace, [ $this, 'do_license_process' ], 10, 2 );
     799            add_filter( 'product_' . $namespace . '_license_status', [ $this, 'get_license_status' ] );
    799800            if ( defined( 'WP_CLI' ) && WP_CLI ) {
    800801                \WP_CLI::add_command( $namespace . ' activate', [ $this, 'cli_activate' ] );
  • feedzy-rss-feeds/trunk/vendor/codeinwp/themeisle-sdk/src/Modules/Logger.php

    r2080032 r2313563  
    2828     * Endpoint where to collect logs.
    2929     */
    30     const TRACKING_ENDPOINT = 'http://log.themeisle.com/wp-json/v1/logs/';
     30    const TRACKING_ENDPOINT = 'https://api.themeisle.com/tracking/log';
    3131
    3232
     
    9191     */
    9292    private function is_logger_active() {
     93        $default = 'no';
     94
    9395        if ( ! $this->product->is_wordpress_available() ) {
    94             return true;
    95         }
    96         $pro_slug = $this->product->get_pro_slug();
     96            $default = 'yes';
     97        } else {
     98            $pro_slug = $this->product->get_pro_slug();
    9799
    98         if ( ! empty( $pro_slug ) ) {
    99             $all_products = Loader::get_products();
    100             if ( isset( $all_products[ $pro_slug ] ) ) {
    101                 return true;
     100            if ( ! empty( $pro_slug ) ) {
     101                $all_products = Loader::get_products();
     102                if ( isset( $all_products[ $pro_slug ] ) ) {
     103                    $default = 'yes';
     104                }
    102105            }
    103106        }
    104107
    105         return ( get_option( $this->product->get_key() . '_logger_flag', 'no' ) === 'yes' );
     108        return ( get_option( $this->product->get_key() . '_logger_flag', $default ) === 'yes' );
    106109    }
    107110
     
    152155        $environment['theme']['name']   = $theme->get( 'Name' );
    153156        $environment['theme']['author'] = $theme->get( 'Author' );
     157        $environment['theme']['parent'] = $theme->parent() !== false ? $theme->parent()->get( 'Name' ) : $theme->get( 'Name' );
    154158        $environment['plugins']         = get_option( 'active_plugins' );
    155159        global $wp_version;
     
    160164                'timeout'     => 3,
    161165                'redirection' => 5,
    162                 'headers'     => array(
    163                     'X-ThemeIsle-Event' => 'log_site',
    164                 ),
    165166                'body'        => array(
    166167                    'site'        => get_site_url(),
     
    168169                    'version'     => $this->product->get_version(),
    169170                    'wp_version'  => $wp_version,
     171                    'locale'      => get_locale(),
    170172                    'data'        => apply_filters( $this->product->get_key() . '_logger_data', array() ),
    171173                    'environment' => $environment,
  • feedzy-rss-feeds/trunk/vendor/codeinwp/themeisle-sdk/src/Modules/Uninstall_feedback.php

    r2161998 r2313563  
    4141     * @var string Endpoint url.
    4242     */
    43     const FEEDBACK_ENDPOINT = 'http://feedback.themeisle.com/wordpress/wp-json/__pirate_feedback_/v1/feedback';
     43    const FEEDBACK_ENDPOINT = 'https://api.themeisle.com/tracking/uninstall';
    4444
    4545    /**
     
    699699                'items' => [
    700700                    sprintf( '%s %s version %s %s %s %s', '<strong>', ucwords( $this->product->get_type() ), '</strong>', '<code>', $this->product->get_version(), '</code>' ),
     701                    sprintf( '%sCurrent website:%s %s %s %s', '<strong>', '</strong>', '<code>', get_site_url(), '</code>' ),
    701702                    sprintf( '%s Uninstall reason %s %s Selected reason from the above survey %s ', '<strong>', '</strong>', '<i>', '</i>' ),
    702703                ],
     
    783784        $attributes['slug']    = $slug;
    784785        $attributes['version'] = $version;
     786        $attributes['url']     = get_site_url();
    785787
    786788        $response = wp_remote_post(
  • feedzy-rss-feeds/trunk/vendor/composer/autoload_real.php

    r2279039 r2313563  
    33// autoload_real.php @generated by Composer
    44
    5 class ComposerAutoloaderInita10706ed67f4e2e516cd1a7d3bb6364e
     5class ComposerAutoloaderInit7fb4215b72f4848bb22f0ac711b9a3ea
    66{
    77    private static $loader;
     
    2020        }
    2121
    22         spl_autoload_register(array('ComposerAutoloaderInita10706ed67f4e2e516cd1a7d3bb6364e', 'loadClassLoader'), true, true);
     22        spl_autoload_register(array('ComposerAutoloaderInit7fb4215b72f4848bb22f0ac711b9a3ea', 'loadClassLoader'), true, true);
    2323        self::$loader = $loader = new \Composer\Autoload\ClassLoader();
    24         spl_autoload_unregister(array('ComposerAutoloaderInita10706ed67f4e2e516cd1a7d3bb6364e', 'loadClassLoader'));
     24        spl_autoload_unregister(array('ComposerAutoloaderInit7fb4215b72f4848bb22f0ac711b9a3ea', 'loadClassLoader'));
    2525
    2626        $map = require __DIR__ . '/autoload_namespaces.php';
     
    4343        $includeFiles = require __DIR__ . '/autoload_files.php';
    4444        foreach ($includeFiles as $fileIdentifier => $file) {
    45             composerRequirea10706ed67f4e2e516cd1a7d3bb6364e($fileIdentifier, $file);
     45            composerRequire7fb4215b72f4848bb22f0ac711b9a3ea($fileIdentifier, $file);
    4646        }
    4747
     
    5050}
    5151
    52 function composerRequirea10706ed67f4e2e516cd1a7d3bb6364e($fileIdentifier, $file)
     52function composerRequire7fb4215b72f4848bb22f0ac711b9a3ea($fileIdentifier, $file)
    5353{
    5454    if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
  • feedzy-rss-feeds/trunk/vendor/composer/autoload_real_52.php

    r2279039 r2313563  
    33// autoload_real_52.php generated by xrstf/composer-php52
    44
    5 class ComposerAutoloaderInitac2c9200e7ae30bfadcb0fa3236dee73 {
     5class ComposerAutoloaderInit0ddd46c0c2ae68aa855b852b5281cd42 {
    66    private static $loader;
    77
     
    2020        }
    2121
    22         spl_autoload_register(array('ComposerAutoloaderInitac2c9200e7ae30bfadcb0fa3236dee73', 'loadClassLoader'), true /*, true */);
     22        spl_autoload_register(array('ComposerAutoloaderInit0ddd46c0c2ae68aa855b852b5281cd42', 'loadClassLoader'), true /*, true */);
    2323        self::$loader = $loader = new xrstf_Composer52_ClassLoader();
    24         spl_autoload_unregister(array('ComposerAutoloaderInitac2c9200e7ae30bfadcb0fa3236dee73', 'loadClassLoader'));
     24        spl_autoload_unregister(array('ComposerAutoloaderInit0ddd46c0c2ae68aa855b852b5281cd42', 'loadClassLoader'));
    2525
    2626        $vendorDir = dirname(dirname(__FILE__));
  • feedzy-rss-feeds/trunk/vendor/composer/installed.json

    r2279039 r2313563  
    77            "type": "git",
    88            "url": "https://github.com/Codeinwp/themeisle-sdk.git",
    9             "reference": "ce152edef1634d7c3ce75ed292efcc7a5f73806e"
     9            "reference": "5923b377554028b3e2c2e98a5f752b9bcd23d4da"
    1010        },
    1111        "dist": {
    1212            "type": "zip",
    13             "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/ce152edef1634d7c3ce75ed292efcc7a5f73806e",
    14             "reference": "ce152edef1634d7c3ce75ed292efcc7a5f73806e",
     13            "url": "https://api.github.com/repos/Codeinwp/themeisle-sdk/zipball/5923b377554028b3e2c2e98a5f752b9bcd23d4da",
     14            "reference": "5923b377554028b3e2c2e98a5f752b9bcd23d4da",
    1515            "shasum": ""
    1616        },
     
    2020            "wp-coding-standards/wpcs": "^1.0.0"
    2121        },
    22         "time": "2020-03-24 16:54:54",
     22        "time": "2020-05-18 16:59:05",
    2323        "type": "library",
    2424        "installation-source": "source",
Note: See TracChangeset for help on using the changeset viewer.