403Webshell
Server IP : 85.158.181.41  /  Your IP : 216.73.217.12
Web Server : Apache
System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64
User : moncbefd ( 1024)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/moncbefd/www.moneta.at/admin/html/assets/javascript/engine/widgets/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/moncbefd/www.moneta.at/admin/html/assets/javascript/engine/widgets/single_checkbox.js
'use strict';

/* --------------------------------------------------------------
 single_checkbox.js 2016-10-17
 Gambio GmbH
 http://www.gambio.de
 Copyright (c) 2016 Gambio GmbH
 Released under the GNU General Public License (Version 2)
 [http://www.gnu.org/licenses/gpl-2.0.html]
 --------------------------------------------------------------
 */

/**
 * ## Single Checkbox Widget
 *
 * This widget originates from the "single-checkbox" mode of the existing checkbox widget. Because of the
 * increased complexity of the old widget code, the single-checkbox mode is now served by this file. Apply the
 * widget in a parent container and it will search and convert all the instances into fine checkboxes.
 *
 * If you want to dynamically change the state of the checkbox, apply the new "checked" prop in the input:checkbox
 * element and then trigger the "change" event. This will also update the .single-checkbox wrapper.
 *
 * ### Options
 *
 * **Selector | `data-single_checkbox-selector` | String | Optional**
 *
 * Set the selector of the checkboxes to be converted to single checkbox instances. It defaults to **input:checkbox**.
 *
 * ### Methods
 *
 * **Checked**
 *
 * ```js
 * // Set the checked value of the single checkbox selection (no change event will be triggered!).
 * $('table input:checkbox').single_checkbox('checked', true);
 * ```
 *
 * ### Events
 *
 * **Initialization**
 *
 * This module triggers the "single_checkbox:ready" event, which will be handled in the `checkbox_mapping.js` file.
 * It is needed to add the caret symbol next to the checkbox and to open the multi select dropdown menu next to it.
 *
 * ### Examples
 *
 * In the following example the checkbox element will be converted into a single-checkbox instance.
 *
 * ```html
 * <div class="wrapper" data-gx-widget="single_checkbox">
 *   <input type="checkbox" />
 * </div>
 * ```
 */
gx.widgets.module('single_checkbox', [], function (data) {

    'use strict';

    // ------------------------------------------------------------------------
    // VARIABLES
    // ------------------------------------------------------------------------

    /**
     * Module Selector
     *
     * @type {jQuery}
     */

    var $this = $(this);

    /**
     * Default Options
     *
     * @type {Object}
     */
    var defaults = {
        selector: 'input:checkbox'
    };

    /**
     * Final Options
     *
     * @type {Object}
     */
    var options = $.extend(true, {}, defaults, data);

    /**
     * Module Instance
     *
     * @type {Object}
     */
    var module = {};

    // ------------------------------------------------------------------------
    // FUNCTIONS
    // ------------------------------------------------------------------------

    /**
     * Set the "checked" property of the single checkbox instances.
     *
     * This method will update the value and display of the widgets without triggering a "change" event.
     *
     * @param {Boolean} isChecked The checkbox values will be updated along with their representation.
     *
     * @return {jQuery} Returns the jQuery selector for chained calls.
     */
    function _checked(isChecked) {
        $(this).prop('checked', isChecked);
        _onCheckboxChange.call(this);
        return $(this);
    }

    /**
     * Add Public Module Methods
     *
     * Example: $('input:checkbox').single_checkbox('checked', false);
     */
    function _addPublicMethod() {
        if ($.fn.single_checkbox) {
            return; // Method is already registered.
        }

        $.fn.extend({
            single_checkbox: function single_checkbox(action) {
                switch (action) {
                    case 'checked':
                        for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
                            args[_key - 1] = arguments[_key];
                        }

                        return _checked.apply(this, args);
                }
            }
        });
    }

    /**
     * Wrap the checkbox elements with an external <span> which will be styled with CSS.
     *
     * This method will also bind the event handlers of each checkbox element.
     */
    function _wrapCheckboxElements() {
        $this.find(options.selector).each(function () {
            var checked = $(this).prop('checked') ? 'checked' : '';
            var disabled = $(this).prop('disabled') ? 'disabled' : '';
            var title = $(this).attr('title');

            $(this).css({
                position: 'absolute',
                left: '-100000px'
            }).wrap('<span class="single-checkbox ' + checked + ' ' + disabled + '" ' + (title ? title = '"' + title + '"' : '') + '></span>').parent().append('<i class="fa fa-check"></i>');

            $(this).on('focus', _onCheckboxFocus).on('blur', _onCheckboxBlur).on('change', _onCheckboxChange);
        });
    }

    /**
     * On Checkbox Change
     *
     * This event handler will make sure that the parent has the correct classes depending the checkbox state.
     */
    function _onCheckboxChange() {
        var $wrapper = $(this).parent();
        var isChecked = $(this).prop('checked');

        if (isChecked && !$wrapper.hasClass('checked')) {
            $wrapper.addClass('checked');
        } else if (!isChecked && $wrapper.hasClass('checked')) {
            $wrapper.removeClass('checked');
        }
    }

    /**
     * On Checkbox Focus
     *
     * This event handler will add the "focused" class which is used for styling.
     */
    function _onCheckboxFocus() {
        $(this).parent().addClass('focused');
    }

    /**
     * On Checkbox Blur
     *
     * This event handler will remove the "focused" class which is used for styling.
     */
    function _onCheckboxBlur() {
        $(this).parent().removeClass('focused');
    }

    /**
     * On Wrapper Click
     *
     * This event handler will delegate the click to the checkbox and must not change the state of the widget.
     *
     * @param event {object}
     */
    function _onWrapperClick(event) {
        event.stopPropagation();

        if ($(this).hasClass('disabled') || $this.find('.dataTables_empty').length) {
            return;
        }

        var $checkbox = $(this).children('input:checkbox');

        $checkbox.prop('checked', !$checkbox.prop('checked')).trigger('change');
    }

    // ------------------------------------------------------------------------
    // INITIALIZATION
    // ------------------------------------------------------------------------

    module.init = function (done) {
        _addPublicMethod();
        _wrapCheckboxElements();

        $this.off('click', '.single-checkbox').on('click', '.single-checkbox', _onWrapperClick);

        $this.trigger('single_checkbox:ready'); // Needed for the checkbox_mapping.js file.

        done();
    };

    return module;
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNpbmdsZV9jaGVja2JveC5qcyJdLCJuYW1lcyI6WyJneCIsIndpZGdldHMiLCJtb2R1bGUiLCJkYXRhIiwiJHRoaXMiLCIkIiwiZGVmYXVsdHMiLCJzZWxlY3RvciIsIm9wdGlvbnMiLCJleHRlbmQiLCJfY2hlY2tlZCIsImlzQ2hlY2tlZCIsInByb3AiLCJfb25DaGVja2JveENoYW5nZSIsImNhbGwiLCJfYWRkUHVibGljTWV0aG9kIiwiZm4iLCJzaW5nbGVfY2hlY2tib3giLCJhY3Rpb24iLCJhcmdzIiwiYXBwbHkiLCJfd3JhcENoZWNrYm94RWxlbWVudHMiLCJmaW5kIiwiZWFjaCIsImNoZWNrZWQiLCJkaXNhYmxlZCIsInRpdGxlIiwiYXR0ciIsImNzcyIsInBvc2l0aW9uIiwibGVmdCIsIndyYXAiLCJwYXJlbnQiLCJhcHBlbmQiLCJvbiIsIl9vbkNoZWNrYm94Rm9jdXMiLCJfb25DaGVja2JveEJsdXIiLCIkd3JhcHBlciIsImhhc0NsYXNzIiwiYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyIsIl9vbldyYXBwZXJDbGljayIsImV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwibGVuZ3RoIiwiJGNoZWNrYm94IiwiY2hpbGRyZW4iLCJ0cmlnZ2VyIiwiaW5pdCIsImRvbmUiLCJvZmYiXSwibWFwcGluZ3MiOiI7O0FBQUE7Ozs7Ozs7Ozs7QUFVQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMENBQSxHQUFHQyxPQUFILENBQVdDLE1BQVgsQ0FBa0IsaUJBQWxCLEVBQXFDLEVBQXJDLEVBQXlDLFVBQVVDLElBQVYsRUFBZ0I7O0FBRXJEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7O0FBS0EsUUFBTUMsUUFBUUMsRUFBRSxJQUFGLENBQWQ7O0FBRUE7Ozs7O0FBS0EsUUFBTUMsV0FBVztBQUNiQyxrQkFBVTtBQURHLEtBQWpCOztBQUlBOzs7OztBQUtBLFFBQU1DLFVBQVVILEVBQUVJLE1BQUYsQ0FBUyxJQUFULEVBQWUs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RUFBUWlDLFFBQVIsQ0FBaUIsVUFBakIsS0FBZ0NsQyxNQUFNa0IsSUFBTixDQUFXLG1CQUFYLEVBQWdDc0IsTUFBcEUsRUFBNEU7QUFDeEU7QUFDSDs7QUFFRCxZQUFNQyxZQUFZeEMsRUFBRSxJQUFGLEVBQVF5QyxRQUFSLENBQWlCLGdCQUFqQixDQUFsQjs7QUFFQUQsa0JBQ0tqQyxJQURMLENBQ1UsU0FEVixFQUNxQixDQUFDaUMsVUFBVWpDLElBQVYsQ0FBZSxTQUFmLENBRHRCLEVBRUttQyxPQUZMLENBRWEsUUFGYjtBQUdIOztBQUVEO0FBQ0E7QUFDQTs7QUFFQTdDLFdBQU84QyxJQUFQLEdBQWMsVUFBVUMsSUFBVixFQUFnQjtBQUMxQmxDO0FBQ0FNOztBQUVBakIsY0FDSzhDLEdBREwsQ0FDUyxPQURULEVBQ2tCLGtCQURsQixFQUVLaEIsRUFGTCxDQUVRLE9BRlIsRUFFaUIsa0JBRmpCLEVBRXFDTyxlQUZyQzs7QUFJQXJDLGNBQU0yQyxPQUFOLENBQWMsdUJBQWQsRUFSMEIsQ0FRYzs7QUFFeENFO0FBQ0gsS0FYRDs7QUFhQSxXQUFPL0MsTUFBUDtBQUNILENBakxEIiwiZmlsZSI6InNpbmdsZV9jaGVja2JveC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiBzaW5nbGVfY2hlY2tib3guanMgMjAxNi0xMC0xN1xyXG4gR2FtYmlvIEdtYkhcclxuIGh0dHA6Ly93d3cuZ2FtYmlvLmRlXHJcbiBDb3B5cmlnaHQgKGMpIDIwMTYgR2FtYmlvIEdtYkhcclxuIFJlbGVhc2VkIHVuZGVyIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoVmVyc2lvbiAyKVxyXG4gW2h0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMi4wLmh0bWxdXHJcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiAjIyBTaW5nbGUgQ2hlY2tib3ggV2lkZ2V0XHJcbiAqXHJcbiAqIFRoaXMgd2lkZ2V0IG9yaWdpbmF0ZXMgZnJvbSB0aGUgXCJzaW5nbGUtY2hlY2tib3hcIiBtb2RlIG9mIHRoZSBleGlzdGluZyBjaGVja2JveCB3aWRnZXQuIEJlY2F1c2Ugb2YgdGhlXHJcbiAqIGluY3JlYXNlZCBjb21wbGV4aXR5IG9mIHRoZSBvbGQgd2lkZ2V0IGNvZGUsIHRoZSBzaW5nbGUtY2hlY2tib3ggbW9kZSBpcyBub3cgc2VydmVkIGJ5IHRoaXMgZmlsZS4gQXBwbHkgdGhlXHJcbiAqIHdpZGdldCBpbiBhIHBhcmVudCBjb250YWluZXIgYW5kIGl0IHdpbGwgc2VhcmNoIGFuZCBjb252ZXJ0IGFsbCB0aGUgaW5zdGFuY2VzIGludG8gZmluZSBjaGVja2JveGVzLlxyXG4gKlxyXG4gKiBJZiB5b3Ugd2FudCB0byBkeW5hbWljYWxseSBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRoZSBjaGVja2JveCwgYXBwbHkgdGhlIG5ldyBcImNoZWNrZWRcIiBwcm9wIGluIHRoZSBpbnB1dDpjaGVja2JveFxyXG4gKiBlbGVtZW50IGFuZCB0aGVuIHRyaWdnZXIgdGhlIFwiY2hhbmdlXCIgZXZlbnQuIFRoaXMgd2lsbCBhbHNvIHVwZGF0ZSB0aGUgLnNpbmdsZS1jaGVja2JveCB3cmFwcGVyLlxyXG4gKlxyXG4gKiAjIyMgT3B0aW9uc1xyXG4gKlxyXG4gKiAqKlNlbGVjdG9yIHwgYGRhdGEtc2luZ2xlX2NoZWNrYm94LXNlbGVjdG9yYCB8IFN0cmluZyB8IE9wdGlvbmFsKipcclxuICpcclxuICogU2V0IHRoZSBzZWxlY3RvciBvZiB0aGUgY2hlY2tib3hlcyB0byBiZSBjb252ZXJ0ZWQgdG8gc2luZ2xlIGNoZWNrYm94IGluc3RhbmNlcy4gSXQgZGVmYXVsdHMgdG8gKippbnB1dDpjaGVja2JveCoqLlxyXG4gKlxyXG4gKiAjIyMgTWV0aG9kc1xyXG4gKlxyXG4gKiAqKkNoZWNrZWQqKlxyXG4gKlxyXG4gKiBgYGBqc1xyXG4gKiAvLyBTZXQgdGhlIGNoZWNrZWQgdmFsdWUgb2YgdGhlIHNpbmdsZSBjaGVja2JveCBzZWxlY3Rpb24gKG5vIGNoYW5nZSBldmVudCB3aWxsIGJlIHRyaWdnZXJlZCEpLlxyXG4gKiAkKCd0YWJsZSBpbnB1dDpjaGVja2JveCcpLnNpbmdsZV9jaGVja2JveCgnY2hlY2tlZCcsIHRydWUpO1xyXG4gKiBgYGBcclxuICpcclxuICogIyMjIEV2ZW50c1xyXG4gKlxyXG4gKiAqKkluaXRpYWxpemF0aW9uKipcclxuICpcclxuICogVGhpcyBtb2R1bGUgdHJpZ2dlcnMgdGhlIFwic2luZ2xlX2NoZWNrYm94OnJlYWR5XCIgZXZlbnQsIHdoaWNoIHdpbGwgYmUgaGFuZGxlZCBpbiB0aGUgYGNoZWNrYm94X21hcHBpbmcuanNgIGZpbGUuXHJcbiAqIEl0IGlzIG5lZWRlZCB0byBhZGQgdGhlIGNhcmV0IHN5bWJvbCBuZXh0IHRvIHRoZSBjaGVja2JveCBhbmQgdG8gb3BlbiB0aGUgbXVsdGkgc2VsZWN0IGRyb3Bkb3duIG1lbnUgbmV4dCB0byBpdC5cclxuICpcclxuICogIyMjIEV4YW1wbGVzXHJcbiAqXHJcbiAqIEluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSB0aGUgY2hlY2tib3ggZWxlbWVudCB3aWxsIGJlIGNvbnZlcnRlZCBpbnRvIGEgc2luZ2xlLWNoZWNrYm94IGluc3RhbmNlLlxyXG4gKlxyXG4gKiBgYGBodG1sXHJcbiAqIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCIgZGF0YS1neC13aWRnZXQ9XCJzaW5nbGVfY2hlY2tib3hcIj5cclxuICogICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgLz5cclxuICogPC9kaXY+XHJcbiAqIGBgYFxyXG4gKi9cclxuZ3gud2lkZ2V0cy5tb2R1bGUoJ3NpbmdsZV9jaGVja2JveCcsIFtdLCBmdW5jdGlvbiAoZGF0YSkge1xyXG5cclxuICAgICd1c2Ugc3RyaWN0JztcclxuXHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIC8vIFZBUklBQkxFU1xyXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNb2R1bGUgU2VsZWN0b3JcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7alF1ZXJ5fVxyXG4gICAgICovXHJcbiAgICBjb25zdCAkdGhpcyA9ICQodGhpcyk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEZWZhdWx0IE9wdGlvbnNcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxyXG4gICAgICovXHJcbiAgICBjb25zdCBkZWZhdWx0cyA9IHtcclxuICAgICAgICBzZWxlY3RvcjogJ2lucHV0OmNoZWNrYm94J1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbmFsIE9wdGlvbnNcclxuICAgICAqXHJcbiAgICAgKiBAdHlwZSB7T2JqZWN0fVxyXG4gICAgICovXHJcbiAgICBjb25zdCBvcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIGRlZmF1bHRzLCBkYXRhKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1vZHVsZSBJbnN0YW5jZVxyXG4gICAgICpcclxuICAgICAqIEB0eXBlIHtPYmplY3R9XHJcbiAgICAgKi9cclxuICAgIGNvbnN0IG1vZHVsZSA9IHt9O1xyXG5cclxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgLy8gRlVOQ1RJT05TXHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldCB0aGUgXCJjaGVja2VkXCIgcHJvcGVydHkgb2YgdGhlIHNpbmdsZSBjaGVja2JveCBpbnN0YW5jZXMuXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBtZXRob2Qgd2lsbCB1cGRhdGUgdGhlIHZhbHVlIGFuZCBkaXNwbGF5IG9mIHRoZSB3aWRnZXRzIHdpdGhvdXQgdHJpZ2dlcmluZyBhIFwiY2hhbmdlXCIgZXZlbnQuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtCb29sZWFufSBpc0NoZWNrZWQgVGhlIGNoZWNrYm94IHZhbHVlcyB3aWxsIGJlIHVwZGF0ZWQgYWxvbmcgd2l0aCB0aGVpciByZXByZXNlbnRhdGlvbi5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJuIHtqUXVlcnl9IFJldHVybnMgdGhlIGpRdWVyeSBzZWxlY3RvciBmb3IgY2hhaW5lZCBjYWxscy5cclxuICAgICAqL1xyXG4gICAgZnVuY3Rpb24gX2NoZWNrZWQoaXNDaGVja2VkKSB7XHJcbiAgICAgICAgJCh0aGlzKS5wcm9wKCdjaGVja2VkJywgaXNDaGVja2VkKTtcclxuICAgICAgICBfb25DaGVja2JveENoYW5nZS5jYWxsKHRoaXMpO1xyXG4gICAgICAgIHJldHVybiAkKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkIFB1YmxpYyBNb2R1bGUgTWV0aG9kc1xyXG4gICAgICpcclxuICAgICAqIEV4YW1wbGU6ICQoJ2lucHV0OmNoZWNrYm94Jykuc2luZ2xlX2NoZWNrYm94KCdjaGVja2VkJywgZmFsc2UpO1xyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBfYWRkUHVibGljTWV0aG9kKCkge1xyXG4gICAgICAgIGlmICgkLmZuLnNpbmdsZV9jaGVja2JveCkge1xyXG4gICAgICAgICAgICByZXR1cm47IC8vIE1ldGhvZCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAkLmZuLmV4dGVuZCh7XHJcbiAgICAgICAgICAgIHNpbmdsZV9jaGVja2JveDogZnVuY3Rpb24gKGFjdGlvbiwgLi4uYXJncykge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoIChhY3Rpb24pIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlICdjaGVja2VkJzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jaGVja2VkLmFwcGx5KHRoaXMsIGFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBXcmFwIHRoZSBjaGVja2JveCBlbGVtZW50cyB3aXRoIGFuIGV4dGVybmFsIDxzcGFuPiB3aGljaCB3aWxsIGJlIHN0eWxlZCB3aXRoIENTUy5cclxuICAgICAqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFsc28gYmluZCB0aGUgZXZlbnQgaGFuZGxlcnMgb2YgZWFjaCBjaGVja2JveCBlbGVtZW50LlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBfd3JhcENoZWNrYm94RWxlbWVudHMoKSB7XHJcbiAgICAgICAgJHRoaXMuZmluZChvcHRpb25zLnNlbGVjdG9yKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9ICQodGhpcykucHJvcCgnY2hlY2tlZCcpID8gJ2NoZWNrZWQnIDogJyc7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gJCh0aGlzKS5wcm9wKCdkaXNhYmxlZCcpID8gJ2Rpc2FibGVkJyA6ICcnO1xyXG4gICAgICAgICAgICBsZXQgdGl0bGUgPSAkKHRoaXMpLmF0dHIoJ3RpdGxlJyk7XHJcblxyXG4gICAgICAgICAgICAkKHRoaXMpXHJcbiAgICAgICAgICAgICAgICAuY3NzKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcclxuICAgICAgICAgICAgICAgICAgICBsZWZ0OiAnLTEwMDAwMHB4J1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIC53cmFwKGA8c3BhbiBjbGFzcz1cInNpbmdsZS1jaGVja2JveCAke2NoZWNrZWR9ICR7ZGlzYWJsZWR9XCIgJHt0aXRsZSA/IHRpdGxlID0gYFwiJHt0aXRsZX1cImAgOiAnJ30+PC9zcGFuPmApXHJcbiAgICAgICAgICAgICAgICAucGFyZW50KClcclxuICAgICAgICAgICAgICAgIC5hcHBlbmQoJzxpIGNsYXNzPVwiZmEgZmEtY2hlY2tcIj48L2k+Jyk7XHJcblxyXG4gICAgICAgICAgICAkKHRoaXMpXHJcbiAgICAgICAgICAgICAgICAub24oJ2ZvY3VzJywgX29uQ2hlY2tib3hGb2N1cylcclxuICAgICAgICAgICAgICAgIC5vbignYmx1cicsIF9vbkNoZWNrYm94Qmx1cilcclxuICAgICAgICAgICAgICAgIC5vbignY2hhbmdlJywgX29uQ2hlY2tib3hDaGFuZ2UpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT24gQ2hlY2tib3ggQ2hhbmdlXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBldmVudCBoYW5kbGVyIHdpbGwgbWFrZSBzdXJlIHRoYXQgdGhlIHBhcmVudCBoYXMgdGhlIGNvcnJlY3QgY2xhc3NlcyBkZXBlbmRpbmcgdGhlIGNoZWNrYm94IHN0YXRlLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBfb25DaGVja2JveENoYW5nZSgpIHtcclxuICAgICAgICBjb25zdCAkd3JhcHBlciA9ICQodGhpcykucGFyZW50KCk7XHJcbiAgICAgICAgY29uc3QgaXNDaGVja2VkID0gJCh0aGlzKS5wcm9wKCdjaGVja2VkJyk7XHJcblxyXG4gICAgICAgIGlmIChpc0NoZWNrZWQgJiYgISR3cmFwcGVyLmhhc0NsYXNzKCdjaGVja2VkJykpIHtcclxuICAgICAgICAgICAgJHdyYXBwZXIuYWRkQ2xhc3MoJ2NoZWNrZWQnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKCFpc0NoZWNrZWQgJiYgJHdyYXBwZXIuaGFzQ2xhc3MoJ2NoZWNrZWQnKSkge1xyXG4gICAgICAgICAgICAkd3JhcHBlci5yZW1vdmVDbGFzcygnY2hlY2tlZCcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9uIENoZWNrYm94IEZvY3VzXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBldmVudCBoYW5kbGVyIHdpbGwgYWRkIHRoZSBcImZvY3VzZWRcIiBjbGFzcyB3aGljaCBpcyB1c2VkIGZvciBzdHlsaW5nLlxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBfb25DaGVja2JveEZvY3VzKCkge1xyXG4gICAgICAgICQodGhpcykucGFyZW50KCkuYWRkQ2xhc3MoJ2ZvY3VzZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIE9uIENoZWNrYm94IEJsdXJcclxuICAgICAqXHJcbiAgICAgKiBUaGlzIGV2ZW50IGhhbmRsZXIgd2lsbCByZW1vdmUgdGhlIFwiZm9jdXNlZFwiIGNsYXNzIHdoaWNoIGlzIHVzZWQgZm9yIHN0eWxpbmcuXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIF9vbkNoZWNrYm94Qmx1cigpIHtcclxuICAgICAgICAkKHRoaXMpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdmb2N1c2VkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBPbiBXcmFwcGVyIENsaWNrXHJcbiAgICAgKlxyXG4gICAgICogVGhpcyBldmVudCBoYW5kbGVyIHdpbGwgZGVsZWdhdGUgdGhlIGNsaWNrIHRvIHRoZSBjaGVja2JveCBhbmQgbXVzdCBub3QgY2hhbmdlIHRoZSBzdGF0ZSBvZiB0aGUgd2lkZ2V0LlxyXG4gICAgICpcclxuICAgICAqIEBwYXJhbSBldmVudCB7b2JqZWN0fVxyXG4gICAgICovXHJcbiAgICBmdW5jdGlvbiBfb25XcmFwcGVyQ2xpY2soZXZlbnQpIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2Rpc2FibGVkJykgfHwgJHRoaXMuZmluZCgnLmRhdGFUYWJsZXNfZW1wdHknKS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgJGNoZWNrYm94ID0gJCh0aGlzKS5jaGlsZHJlbignaW5wdXQ6Y2hlY2tib3gnKTtcclxuXHJcbiAgICAgICAgJGNoZWNrYm94XHJcbiAgICAgICAgICAgIC5wcm9wKCdjaGVja2VkJywgISRjaGVja2JveC5wcm9wKCdjaGVja2VkJykpXHJcbiAgICAgICAgICAgIC50cmlnZ2VyKCdjaGFuZ2UnKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIC8vIElOSVRJQUxJWkFUSU9OXHJcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgICBtb2R1bGUuaW5pdCA9IGZ1bmN0aW9uIChkb25lKSB7XHJcbiAgICAgICAgX2FkZFB1YmxpY01ldGhvZCgpO1xyXG4gICAgICAgIF93cmFwQ2hlY2tib3hFbGVtZW50cygpO1xyXG5cclxuICAgICAgICAkdGhpc1xyXG4gICAgICAgICAgICAub2ZmKCdjbGljaycsICcuc2luZ2xlLWNoZWNrYm94JylcclxuICAgICAgICAgICAgLm9uKCdjbGljaycsICcuc2luZ2xlLWNoZWNrYm94JywgX29uV3JhcHBlckNsaWNrKTtcclxuXHJcbiAgICAgICAgJHRoaXMudHJpZ2dlcignc2luZ2xlX2NoZWNrYm94OnJlYWR5Jyk7IC8vIE5lZWRlZCBmb3IgdGhlIGNoZWNrYm94X21hcHBpbmcuanMgZmlsZS5cclxuXHJcbiAgICAgICAgZG9uZSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59KTsgXHJcbiJdfQ==

Youez - 2016 - github.com/yon3zu
LinuXploit