text:
/**
 * @fileOverview jquery-autocomplete, the jQuery Autocompleter
 * @author Dylan Verheul
 * @version 2.4.4
 * @requires jQuery 1.6+
 * @license MIT | GPL | Apache 2.0, see LICENSE.txt
 * @see https://github.com/dyve/jquery-autocomplete
 */
(function($) {
    "use strict";

    /**
     * jQuery autocomplete plugin
     * @param {object|string} options
     * @returns (object} jQuery object
     */
    $.fn.autocomplete = function(options) {
        var url;
        if (arguments.length > 1) {
            url = options;
            options = arguments[1];
            options.url = url;
        } else if (typeof options === 'string') {
            url = options;
            options = { url: url };
        }
        var opts = $.extend({}, $.fn.autocomplete.defaults, options);
        return this.each(function() {
            var $this = $(this);
            $this.data('autocompleter', new $.Autocompleter(
                $this,
                $.meta ? $.extend({}, opts, $this.data()) : opts
            ));
        });
    };

    /**
     * Store default options
     * @type {object}
     */
    $.fn.autocomplete.defaults = {
        inputClass: 'acInput',
        loadingClass: 'acLoading',
        resultsClass: 'acResults',
        selectClass: 'acSelect',
        queryParamName: 'q',
        extraParams: {},
        remoteDataType: false,
        lineSeparator: '\n',
        cellSeparator: '|',
        minChars: 2,
        maxItemsToShow: 10,
        delay: 400,
        useCache: true,
        maxCacheLength: 10,
        matchSubset: true,
        matchCase: false,
        matchInside: true,
        mustMatch: false,
        selectFirst: false,
        selectOnly: false,
        showResult: null,
        preventDefaultReturn: 1,
        preventDefaultTab: 0,
        autoFill: false,
        filterResults: true,
        filter: true,
        sortResults: true,
        sortFunction: null,
        onItemSelect: null,
        onNoMatch: null,
        onFinish: null,
        matchStringConverter: null,
        beforeUseConverter: null,
        autoWidth: 'min-width',
        useDelimiter: false,
        delimiterChar: ',',
        delimiterKeyCode: 188,
        processData: null,
        onError: null,
        enabled: true
    };

    /**
     * Sanitize result
     * @param {Object} result
     * @returns {Object} object with members value (String) and data (Object)
     * @private
     */
    var sanitizeResult = function(result) {
        var value, data;
        var type = typeof result;
        if (type === 'string') {
            value = result;
            data = {};
        } else if ($.isArray(result)) {
            value = result[0];
            data = result.slice(1);
        } else if (type === 'object') {
            value = result.value;
            data = result.data;
        }
        value = String(value);
        if (typeof data !== 'object') {
            data = {};
        }
        return {
            value: value,
            data: data
        };
    };

    /**
     * Sanitize integer
     * @param {mixed} value
     * @param {Object} options
     * @returns {Number} integer
     * @private
     */
    var sanitizeInteger = function(value, stdValue, options) {
        var num = parseInt(value, 10);
        options = options || {};
        if (isNaN(num) || (options.min && num < options.min)) {
            num = stdValue;
        }
        return num;
    };

    /**
     * Create partial url for a name/value pair
     */
    var makeUrlParam = function(name, value) {
        return [name, encodeURIComponent(value)].join('=');
    };

    /**
     * Build an url
     * @param {string} url Base url
     * @param {object} [params] Dictionary of parameters
     */
    var makeUrl = function(url, params) {
        var urlAppend = [];
        $.each(params, function(index, value) {
            urlAppend.push(makeUrlParam(index, value));
        });
        if (urlAppend.length) {
            url += url.indexOf('?') === -1 ? '?' : '&';
            url += urlAppend.join('&');
        }
        return url;
    };

    /**
     * Default sort filter
     * @param {object} a
     * @param {object} b
     * @param {boolean} matchCase
     * @returns {number}
     */
    var sortValueAlpha = function(a, b, matchCase) {
        a = String(a.value);
        b = String(b.value);
        if (!matchCase) {
            a = a.toLowerCase();
            b = b.toLowerCase();
        }
        if (a > b) {
            return 1;
        }
        if (a < b) {
            return -1;
        }
        return 0;
    };

    /**
     * Parse data received in text format
     * @param {string} text Plain text input
     * @param {string} lineSeparator String that separates lines
     * @param {string} cellSeparator String that separates cells
     * @returns {array} Array of autocomplete data objects
     */
    var plainTextParser = function(text, lineSeparator, cellSeparator) {
        var results = [];
        var i, j, data, line, value, lines;
        // Be nice, fix linebreaks before splitting on lineSeparator
        lines = String(text).replace('\r\n', '\n').split(lineSeparator);
        for (i = 0; i < lines.length; i++) {
            line = lines[i].split(cellSeparator);
            data = [];
            for (j = 0; j < line.length; j++) {
                data.push(decodeURIComponent(line[j]));
            }
            value = data.shift();
            results.push({ value: value, data: data });
        }
        return results;
    };

    /**
     * Autocompleter class
     * @param {object} $elem jQuery object with one input tag
     * @param {object} options Settings
     * @constructor
     */
    $.Autocompleter = function($elem, options) {

        /**
         * Assert parameters
         */
        if (!$elem || !($elem instanceof $) || $elem.length !== 1 || $elem.get(0).tagName.toUpperCase() !== 'INPUT') {
            throw new Error('Invalid parameter for jquery.Autocompleter, jQuery object with one element with INPUT tag expected.');
        }

        /**
         * @constant Link to this instance
         * @type object
         * @private
         */
        var self = this;

        /**
         * @property {object} Options for this instance
         * @public
         */
        this.options = options;

        /**
         * @property object Cached data for this instance
         * @private
         */
        this.cacheData_ = {};

        /**
         * @property {number} Number of cached data items
         * @private
         */
        this.cacheLength_ = 0;

        /**
         * @property {string} Class name to mark selected item
         * @private
         */
        this.selectClass_ = 'jquery-autocomplete-selected-item';

        /**
         * @property {number} Handler to activation timeout
         * @private
         */
        this.keyTimeout_ = null;

        /**
         * @property {number} Handler to finish timeout
         * @private
         */
        this.finishTimeout_ = null;

        /**
         * @property {number} Last key pressed in the input field (store for behavior)
         * @private
         */
        this.lastKeyPressed_ = null;

        /**
         * @property {string} Last value processed by the autocompleter
         * @private
         */
        this.lastProcessedValue_ = null;

        /**
         * @property {string} Last value selected by the user
         * @private
         */
        this.lastSelectedValue_ = null;

        /**
         * @property {boolean} Is this autocompleter active (showing results)?
         * @see showResults
         * @private
         */
        this.active_ = false;

        /**
         * @property {boolean} Is this autocompleter allowed to finish on blur?
         * @private
         */
        this.finishOnBlur_ = true;

        /**
         * Sanitize options
         */
        this.options.minChars = sanitizeInteger(this.options.minChars, $.fn.autocomplete.defaults.minChars, { min: 0 });
        this.options.maxItemsToShow = sanitizeInteger(this.options.maxItemsToShow, $.fn.autocomplete.defaults.maxItemsToShow, { min: 0 });
        this.options.maxCacheLength = sanitizeInteger(this.options.maxCacheLength, $.fn.autocomplete.defaults.maxCacheLength, { min: 1 });
        this.options.delay = sanitizeInteger(this.options.delay, $.fn.autocomplete.defaults.delay, { min: 0 });
        if (this.options.preventDefaultReturn != 2) {
            this.options.preventDefaultReturn = this.options.preventDefaultReturn ? 1 : 0;
        }
        if (this.options.preventDefaultTab != 2) {
            this.options.preventDefaultTab = this.options.preventDefaultTab ? 1 : 0;
        }

        /**
         * Init DOM elements repository
         */
        this.dom = {};

        /**
         * Store the input element we're attached to in the repository
         */
        this.dom.$elem = $elem;

        /**
         * Switch off the native autocomplete and add the input class
         */
        this.dom.$elem.attr('autocomplete', 'off').addClass(this.options.inputClass);

        /**
         * Create DOM element to hold results, and force absolute position
         */
        this.dom.$results = $('

').hide().addClass(this.options.resultsClass).css({
            position: 'absolute'
        });
        $('body').append(this.dom.$results);

        /**
         * Attach keyboard monitoring to $elem
         */
        $elem.keydown(function(e) {
            self.lastKeyPressed_ = e.keyCode;
            switch(self.lastKeyPressed_) {

                case self.options.delimiterKeyCode: // comma = 188
                    if (self.options.useDelimiter && self.active_) {
                        self.selectCurrent();
                    }
                    break;

                // ignore navigational & special keys
                case 35: // end
                case 36: // home
                case 16: // shift
                case 17: // ctrl
                case 18: // alt
                case 37: // left
                case 39: // right
                    break;

                case 38: // up
                    e.preventDefault();
                    if (self.active_) {
                        self.focusPrev();
                    } else {
                        self.activate();
                    }
                    return false;

                case 40: // down
                    e.preventDefault();
                    if (self.active_) {
                        self.focusNext();
                    } else {
                        self.activate();
                    }
                    return false;

                case 9: // tab
                    if (self.active_) {
                        self.selectCurrent();
                        if (self.options.preventDefaultTab) {
                            e.preventDefault();
                            return false;
                        }
                    }
                    if (self.options.preventDefaultTab === 2) {
                        e.preventDefault();
                        return false;
                    }
                break;

                case 13: // return
                    if (self.active_) {
                        self.selectCurrent();
                        if (self.options.preventDefaultReturn) {
                            e.preventDefault();
                            return false;
                        }
                    }
                    if (self.options.preventDefaultReturn === 2) {
                        e.preventDefault();
                        return false;
                    }
                break;

                case 27: // escape
                    if (self.active_) {
                        e.preventDefault();
                        self.deactivate(true);
                        return false;
                    }
                break;

                default:
                    self.activate();

            }
        });

        /**
         * Attach paste event listener because paste may occur much later then keydown or even without a keydown at all
         */
        $elem.on('paste', function() {
            self.activate();
        });

        /**
         * Finish on blur event
         * Use a timeout because instant blur gives race conditions
         */
        var onBlurFunction = function() {
            self.deactivate(true);
        }
        $elem.blur(function() {
            if (self.finishOnBlur_) {
                self.finishTimeout_ = setTimeout(onBlurFunction, 200);
            }
        });
        /**
         * Catch a race condition on form submit
         */
        $elem.parents('form').on('submit', onBlurFunction);

    };

    /**
     * Position output DOM elements
     * @private
     */
    $.Autocompleter.prototype.position = function() {
        var offset = this.dom.$elem.offset();
        var height = this.dom.$results.outerHeight();
        var totalHeight = $(window).outerHeight();
        var inputBottom = offset.top + this.dom.$elem.outerHeight();
        var bottomIfDown = inputBottom + height;
        // Set autocomplete results at the bottom of input
        var position = {top: inputBottom, left: offset.left};
        if (bottomIfDown > totalHeight) {
            // Try to set autocomplete results at the top of input
            var topIfUp = offset.top - height;
            if (topIfUp >= 0) {
                position.top = topIfUp;
            }
        }
        this.dom.$results.css(position);
    };

    /**
     * Read from cache
     * @private
     */
    $.Autocompleter.prototype.cacheRead = function(filter) {
        var filterLength, searchLength, search, maxPos, pos;
        if (this.options.useCache) {
            filter = String(filter);
            filterLength = filter.length;
            if (this.options.matchSubset) {
                searchLength = 1;
            } else {
                searchLength = filterLength;
            }
            while (searchLength <= filterLength) {
                if (this.options.matchInside) {
                    maxPos = filterLength - searchLength;
                } else {
                    maxPos = 0;
                }
                pos = 0;
                while (pos <= maxPos) {
                    search = filter.substr(0, searchLength);
                    if (this.cacheData_[search] !== undefined) {
                        return this.cacheData_[search];
                    }
                    pos++;
                }
                searchLength++;
            }
        }
        return false;
    };

    /**
     * Write to cache
     * @private
     */
    $.Autocompleter.prototype.cacheWrite = function(filter, data) {
        if (this.options.useCache) {
            if (this.cacheLength_ >= this.options.maxCacheLength) {
                this.cacheFlush();
            }
            filter = String(filter);
            if (this.cacheData_[filter] !== undefined) {
                this.cacheLength_++;
            }
            this.cacheData_[filter] = data;
            return this.cacheData_[filter];
        }
        return false;
    };

    /**
     * Flush cache
     * @public
     */
    $.Autocompleter.prototype.cacheFlush = function() {
        this.cacheData_ = {};
        this.cacheLength_ = 0;
    };

    /**
     * Call hook
     * Note that all called hooks are passed the autocompleter object
     * @param {string} hook
     * @param data
     * @returns Result of called hook, false if hook is undefined
     */
    $.Autocompleter.prototype.callHook = function(hook, data) {
        var f = this.options[hook];
        if (f && $.isFunction(f)) {
            return f(data, this);
        }
        return false;
    };

    /**
     * Set timeout to activate autocompleter
     */
    $.Autocompleter.prototype.activate = function() {
        if (!this.options.enabled) return;
        var self = this;
        if (this.keyTimeout_) {
            clearTimeout(this.keyTimeout_);
        }
        this.keyTimeout_ = setTimeout(function() {
            self.activateNow();
        }, this.options.delay);
    };

    /**
     * Activate autocompleter immediately
     */
    $.Autocompleter.prototype.activateNow = function() {
        var value = this.beforeUseConverter(this.dom.$elem.val());
        if (value !== this.lastProcessedValue_ && value !== this.lastSelectedValue_) {
            this.fetchData(value);
        }
    };

    /**
     * Get autocomplete data for a given value
     * @param {string} value Value to base autocompletion on
     * @private
     */
    $.Autocompleter.prototype.fetchData = function(value) {
        var self = this;
        var processResults = function(results, filter) {
            if (self.options.processData) {
                results = self.options.processData(results);
            }
            self.showResults(self.filterResults(results, filter), filter);
        };
        this.lastProcessedValue_ = value;
        if (value.length < this.options.minChars) {
            processResults([], value);
        } else if (this.options.data) {
            processResults(this.options.data, value);
        } else {
            this.fetchRemoteData(value, function(remoteData) {
                processResults(remoteData, value);
            });
        }
    };

    /**
     * Get remote autocomplete data for a given value
     * @param {string} filter The filter to base remote data on
     * @param {function} callback The function to call after data retrieval
     * @private
     */
    $.Autocompleter.prototype.fetchRemoteData = function(filter, callback) {
        var data = this.cacheRead(filter);
        if (data) {
            callback(data);
        } else {
            var self = this;
            var dataType = self.options.remoteDataType === 'json' ? 'json' : 'text';
            var ajaxCallback = function(data) {
                var parsed = false;
                if (data !== false) {
                    parsed = self.parseRemoteData(data);
                    self.cacheWrite(filter, parsed);
                }
                self.dom.$elem.removeClass(self.options.loadingClass);
                callback(parsed);
            };
            this.dom.$elem.addClass(this.options.loadingClass);
            $.ajax({
                url: this.makeUrl(filter),
                success: ajaxCallback,
                error: function(jqXHR, textStatus, errorThrown) {
                    if($.isFunction(self.options.onError)) {
                        self.options.onError(jqXHR, textStatus, errorThrown);
                    } else {
                      ajaxCallback(false);
                    }
                },
                dataType: dataType
            });
        }
    };

    /**
     * Create or update an extra parameter for the remote request
     * @param {string} name Parameter name
     * @param {string} value Parameter value
     * @public
     */
    $.Autocompleter.prototype.setExtraParam = function(name, value) {
        var index = $.trim(String(name));
        if (index) {
            if (!this.options.extraParams) {
                this.options.extraParams = {};
            }
            if (this.options.extraParams[index] !== value) {
                this.options.extraParams[index] = value;
                this.cacheFlush();
            }
        }
    };

    /**
     * Build the url for a remote request
     * If options.queryParamName === false, append query to url instead of using a GET parameter
     * @param {string} param The value parameter to pass to the backend
     * @returns {string} The finished url with parameters
     */
    $.Autocompleter.prototype.makeUrl = function(param) {
        var self = this;
        var url = this.options.url;
        var params = $.extend({}, this.options.extraParams);

        if (this.options.queryParamName === false) {
            url += encodeURIComponent(param);
        } else {
            params[this.options.queryParamName] = param;
        }

        return makeUrl(url, params);
    };

    /**
     * Parse data received from server
     * @param remoteData Data received from remote server
     * @returns {array} Parsed data
     */
    $.Autocompleter.prototype.parseRemoteData = function(remoteData) {
        var remoteDataType;
        var data = remoteData;
        if (this.options.remoteDataType === 'json') {
            remoteDataType = typeof(remoteData);
            switch (remoteDataType) {
                case 'object':
                    data = remoteData;
                    break;
                case 'string':
                    data = $.parseJSON(remoteData);
                    break;
                default:
                    throw new Error("Unexpected remote data type: " + remoteDataType);
            }
            return data;
        }
        return plainTextParser(data, this.options.lineSeparator, this.options.cellSeparator);
    };

    /**
     * Default filter for results
     * @param {Object} result
     * @param {String} filter
     * @returns {boolean} Include this result
     * @private
     */
    $.Autocompleter.prototype.defaultFilter = function(result, filter) {
        if (!result.value) {
            return false;
        }
        if (this.options.filterResults) {
            var pattern = this.matchStringConverter(filter);
            var testValue = this.matchStringConverter(result.value);
            if (!this.options.matchCase) {
                pattern = pattern.toLowerCase();
                testValue = testValue.toLowerCase();
            }
            var patternIndex = testValue.indexOf(pattern);
            if (this.options.matchInside) {
                return patternIndex > -1;
            } else {
                return patternIndex === 0;
            }
        }
        return true;
    };

    /**
     * Filter result
     * @param {Object} result
     * @param {String} filter
     * @returns {boolean} Include this result
     * @private
     */
    $.Autocompleter.prototype.filterResult = function(result, filter) {
        // No filter
        if (this.options.filter === false) {
            return true;
        }
        // Custom filter
        if ($.isFunction(this.options.filter)) {
            return this.options.filter(result, filter);
        }
        // Default filter
        return this.defaultFilter(result, filter);
    };

    /**
     * Filter results
     * @param results
     * @param filter
     */
    $.Autocompleter.prototype.filterResults = function(results, filter) {
        var filtered = [];
        var i, result;

        for (i = 0; i < results.length; i++) {
            result = sanitizeResult(results[i]);
            if (this.filterResult(result, filter)) {
                filtered.push(result);
            }
        }
        if (this.options.sortResults) {
            filtered = this.sortResults(filtered, filter);
        }
        if (this.options.maxItemsToShow > 0 && this.options.maxItemsToShow < filtered.length) {
            filtered.length = this.options.maxItemsToShow;
        }
        return filtered;
    };

    /**
     * Sort results
     * @param results
     * @param filter
     */
    $.Autocompleter.prototype.sortResults = function(results, filter) {
        var self = this;
        var sortFunction = this.options.sortFunction;
        if (!$.isFunction(sortFunction)) {
            sortFunction = function(a, b, f) {
                return sortValueAlpha(a, b, self.options.matchCase);
            };
        }
        results.sort(function(a, b) {
            return sortFunction(a, b, filter, self.options);
        });
        return results;
    };

    /**
     * Convert string before matching
     * @param s
     * @param a
     * @param b
     */
    $.Autocompleter.prototype.matchStringConverter = function(s, a, b) {
        var converter = this.options.matchStringConverter;
        if ($.isFunction(converter)) {
            s = converter(s, a, b);
        }
        return s;
    };

    /**
     * Convert string before use
     * @param {String} s
     */
    $.Autocompleter.prototype.beforeUseConverter = function(s) {
        s = this.getValue(s);
        var converter = this.options.beforeUseConverter;
        if ($.isFunction(converter)) {
            s = converter(s);
        }
        return s;
    };

    /**
     * Enable finish on blur event
     */
    $.Autocompleter.prototype.enableFinishOnBlur = function() {
        this.finishOnBlur_ = true;
    };

    /**
     * Disable finish on blur event
     */
    $.Autocompleter.prototype.disableFinishOnBlur = function() {
        this.finishOnBlur_ = false;
    };

    /**
     * Create a results item (LI element) from a result
     * @param result
     */
    $.Autocompleter.prototype.createItemFromResult = function(result) {
        var self = this;
        var $li = $('
');
        $li.text(this.showResult(result.value, result.data));
        $li.data({value: result.value, data: result.data})
            .click(function() {
                self.selectItem($li);
            })
            .mousedown(self.disableFinishOnBlur)
            .mouseup(self.enableFinishOnBlur)
        ;
        return $li;
    };

    /**
     * Get all items from the results list
     * @param result
     */
    $.Autocompleter.prototype.getItems = function() {
        return $('>ul>li', this.dom.$results);
    };

    /**
     * Show all results
     * @param results
     * @param filter
     */
    $.Autocompleter.prototype.showResults = function(results, filter) {
        var numResults = results.length;
        var self = this;
        var $ul = $('

');
        var i, result, $li, autoWidth, first = false, $first = false;

        if (numResults) {
            for (i = 0; i < numResults; i++) {
                result = results[i];
                $li = this.createItemFromResult(result);
                $ul.append($li);
                if (first === false) {
                    first = String(result.value);
                    $first = $li;
                    $li.addClass(this.options.firstItemClass);
                }
                if (i === numResults - 1) {
                    $li.addClass(this.options.lastItemClass);
                }
            }

            this.dom.$results.html($ul).show();

            // Always recalculate position since window size or
            // input element location may have changed.
            this.position();
            if (this.options.autoWidth) {
                autoWidth = this.dom.$elem.outerWidth() - this.dom.$results.outerWidth() + this.dom.$results.width();
                this.dom.$results.css(this.options.autoWidth, autoWidth);
            }
            this.getItems().hover(
                function() { self.focusItem(this); },
                function() { /* void */ }
            );
            if (this.autoFill(first, filter) || this.options.selectFirst || (this.options.selectOnly && numResults === 1)) {
                this.focusItem($first);
            }
            this.active_ = true;
        } else {
            this.hideResults();
            this.active_ = false;
        }
    };

    $.Autocompleter.prototype.showResult = function(value, data) {
        if ($.isFunction(this.options.showResult)) {
            return this.options.showResult(value, data);
        } else {
            return value;
        }
    };

    $.Autocompleter.prototype.autoFill = function(value, filter) {
        var lcValue, lcFilter, valueLength, filterLength;
        if (this.options.autoFill && this.lastKeyPressed_ !== 8) {
            lcValue = String(value).toLowerCase();
            lcFilter = String(filter).toLowerCase();
            valueLength = value.length;
            filterLength = filter.length;
            if (lcValue.substr(0, filterLength) === lcFilter) {
                var d = this.getDelimiterOffsets();
                var pad = d.start ? ' ' : ''; // if there is a preceding delimiter
                this.setValue( pad + value );
                var start = filterLength + d.start + pad.length;
                var end = valueLength + d.start + pad.length;
                this.selectRange(start, end);
                return true;
            }
        }
        return false;
    };

    $.Autocompleter.prototype.focusNext = function() {
        this.focusMove(+1);
    };

    $.Autocompleter.prototype.focusPrev = function() {
        this.focusMove(-1);
    };

    $.Autocompleter.prototype.focusMove = function(modifier) {
        var $items = this.getItems();
        modifier = sanitizeInteger(modifier, 0);
        if (modifier) {
            for (var i = 0; i < $items.length; i++) {
                if ($($items[i]).hasClass(this.selectClass_)) {
                    this.focusItem(i + modifier);
                    return;
                }
            }
        }
        this.focusItem(0);
    };

    $.Autocompleter.prototype.focusItem = function(item) {
        var $item, $items = this.getItems();
        if ($items.length) {
            $items.removeClass(this.selectClass_).removeClass(this.options.selectClass);
            if (typeof item === 'number') {
                if (item < 0) {
                    item = 0;
                } else if (item >= $items.length) {
                    item = $items.length - 1;
                }
                $item = $($items[item]);
            } else {
                $item = $(item);
            }
            if ($item) {
                $item.addClass(this.selectClass_).addClass(this.options.selectClass);
            }
        }
    };

    $.Autocompleter.prototype.selectCurrent = function() {
        var $item = $('li.' + this.selectClass_, this.dom.$results);
        if ($item.length === 1) {
            this.selectItem($item);
        } else {
            this.deactivate(false);
        }
    };

    $.Autocompleter.prototype.selectItem = function($li) {
        var value = $li.data('value');
        var data = $li.data('data');
        var displayValue = this.displayValue(value, data);
        var processedDisplayValue = this.beforeUseConverter(displayValue);
        this.lastProcessedValue_ = processedDisplayValue;
        this.lastSelectedValue_ = processedDisplayValue;
        var d = this.getDelimiterOffsets();
        var delimiter = this.options.delimiterChar;
        var elem = this.dom.$elem;
        var extraCaretPos = 0;
        if ( this.options.useDelimiter ) {
            // if there is a preceding delimiter, add a space after the delimiter
            if ( elem.val().substring(d.start-1, d.start) == delimiter && delimiter != ' ' ) {
                displayValue = ' ' + displayValue;
            }
            // if there is not already a delimiter trailing this value, add it
            if ( elem.val().substring(d.end, d.end+1) != delimiter && this.lastKeyPressed_ != this.options.delimiterKeyCode ) {
                displayValue = displayValue + delimiter;
            } else {
                // move the cursor after the existing trailing delimiter
                extraCaretPos = 1;
            }
        }
        this.setValue(displayValue);
        this.setCaret(d.start + displayValue.length + extraCaretPos);
        this.callHook('onItemSelect', { value: value, data: data });
        this.deactivate(true);
        elem.focus();
    };

    $.Autocompleter.prototype.displayValue = function(value, data) {
        if ($.isFunction(this.options.displayValue)) {
            return this.options.displayValue(value, data);
        }
        return value;
    };

    $.Autocompleter.prototype.hideResults = function() {
        this.dom.$results.hide();
    };

    $.Autocompleter.prototype.deactivate = function(finish) {
        if (this.finishTimeout_) {
            clearTimeout(this.finishTimeout_);
        }
        if (this.keyTimeout_) {
            clearTimeout(this.keyTimeout_);
        }
        if (finish) {
            if (this.lastProcessedValue_ !== this.lastSelectedValue_) {
                if (this.options.mustMatch) {
                    this.setValue('');
                }
                this.callHook('onNoMatch');
            }
            if (this.active_) {
                this.callHook('onFinish');
            }
            this.lastKeyPressed_ = null;
            this.lastProcessedValue_ = null;
            this.lastSelectedValue_ = null;
            this.active_ = false;
        }
        this.hideResults();
    };

    $.Autocompleter.prototype.selectRange = function(start, end) {
        var input = this.dom.$elem.get(0);
        if (input.setSelectionRange) {
            input.focus();
            input.setSelectionRange(start, end);
        } else if (input.createTextRange) {
            var range = input.createTextRange();
            range.collapse(true);
            range.moveEnd('character', end);
            range.moveStart('character', start);
            range.select();
        }
    };

    /**
     * Move caret to position
     * @param {Number} pos
     */
    $.Autocompleter.prototype.setCaret = function(pos) {
        this.selectRange(pos, pos);
    };

    /**
     * Get caret position
     */
    $.Autocompleter.prototype.getCaret = function() {
        var $elem = this.dom.$elem;
        var elem = $elem[0];
        var val, selection, range, start, end, stored_range;
        if (elem.createTextRange) { // IE
            selection = document.selection;
            if (elem.tagName.toLowerCase() != 'textarea') {
                val = $elem.val();
                range = selection.createRange().duplicate();
                range.moveEnd('character', val.length);
                if (range.text === '') {
                    start = val.length;
                } else {
                    start = val.lastIndexOf(range.text);
                }
                range = selection.createRange().duplicate();
                range.moveStart('character', -val.length);
                end = range.text.length;
            } else {
                range = selection.createRange();
                stored_range = range.duplicate();
                stored_range.moveToElementText(elem);
                stored_range.setEndPoint('EndToEnd', range);
                start = stored_range.text.length - range.text.length;
                end = start + range.text.length;
            }
        } else {
            start = $elem[0].selectionStart;
            end = $elem[0].selectionEnd;
        }
        return {
            start: start,
            end: end
        };
    };

    /**
     * Set the value that is currently being autocompleted
     * @param {String} value
     */
    $.Autocompleter.prototype.setValue = function(value) {
        if ( this.options.useDelimiter ) {
            // set the substring between the current delimiters
            var val = this.dom.$elem.val();
            var d = this.getDelimiterOffsets();
            var preVal = val.substring(0, d.start);
            var postVal = val.substring(d.end);
            value = preVal + value + postVal;
        }
        this.dom.$elem.val(value);
    };

    /**
     * Get the value currently being autocompleted
     * @param {String} value
     */
    $.Autocompleter.prototype.getValue = function(value) {
        if ( this.options.useDelimiter ) {
            var d = this.getDelimiterOffsets();
            return value.substring(d.start, d.end).trim();
        } else {
            return value;
        }
    };

    /**
     * Get the offsets of the value currently being autocompleted
     */
    $.Autocompleter.prototype.getDelimiterOffsets = function() {
        var val = this.dom.$elem.val();
        if ( this.options.useDelimiter ) {
            var preCaretVal = val.substring(0, this.getCaret().start);
            var start = preCaretVal.lastIndexOf(this.options.delimiterChar) + 1;
            var postCaretVal = val.substring(this.getCaret().start);
            var end = postCaretVal.indexOf(this.options.delimiterChar);
            if ( end == -1 ) end = val.length;
            end += this.getCaret().start;
        } else {
            start = 0;
            end = val.length;
        }
        return {
            start: start,
            end: end
        };
    };

})(jQuery);

redpajama_set_name: RedPajamaGithub


Mark DeFriest is an American prison legend, a notorious escape artist who has spent 33 years behind bars, with little light, hope or human contact.
The big screen documentary, The Life And Mind Of Mark DeFriest, is the exploration of Mark DeFriest's life and mind, both the facts of the case and the hyper world of his design, as seen in animations. Interweaving the animated past of Mark's case with the parole narrative, the film becomes a de facto courtroom where the facts of Mark's case are finally laid out. Mark DeFriest attempted 13 escapes and got out seven times, turning his original four-year sentence into Life. The original crime that sent him to prison: stealing his own father's tools. So how did a low-level criminal end up looking at life in prison?
Sitting in his office with a dusty file, Mark's former lawyer, John Middleton, explains that at the beginning of Mark's incarceration, people in the system disagreed about whether he belonged in prison at all. In the early 1980s, 5 of 6 court appointed psychiatrists testified that Mark was incompetent to be sentenced – citing symptoms of schizophrenia and bipolar disorder – so he is sent to the Florida State Hospital for treatment. But when Mark makes a zipgun in woodshop class and escapes from there, a single doctor – the director of the Forensic Unit, Dr. Berland – testifies in court that Mark was faking mental illness. That opinion, coupled with torturous conditions in pre-trial detention in Bay County Jail, clears the way for Mark to plead guilty to a life sentence. He lands on a path of punishment instead of treatment that lasts through today.
Mark's surreal odyssey from jails to mental hospitals to some of America's toughest maximum security prison units – punctuated by amazing escapes, brutal punishment and inventive ways of populating his isolation – is brought to life in animations based on twenty years of his prison letters and legal documents, coupled with the voices of people on the outside that speak to Mark's character and plight. The spine of the story is a parallel narrative that takes place in two time periods following Mark's dramatic rise and fall as the Houdini of Florida in the early 1980s and the modern day parole effort to set him free.
As the parole hearing dates gets closer, we follow an unlikely team of supporters as they delve into Mark's past to make a convincing case. Their sympathy for Mark mixes with the facts of the case as reported by officials and shown in animations: Mark has been an incorrigible disciplinary problem as evidenced by his escapes and endless disciplinary reports (DRs), including for repeatedly answering Master Count by saying his names was James Bond 007. Yet as Middleton prepares his argument, he points out that Mark's crimes are comparatively small for someone who has spent 30 years behind bars, and his behavior is likely related to mental illness.
Does Mark deserve consideration for his mental health history or is he ultimately culpable, and therefore unworthy of parole? For the conservative commission, Middleton believes that as long as Mark DeFriest misbehaves, no matter the reason, they will keep him in prison. As the parole effort builds momentum, Mark begins to hope. He goes a record 15 months without a DR.
The mirrored façade of the corporate-style headquarters of the Florida Department of Corrections belies its importance. Inside a gallery sparsely populated with Mark's supporters, the three Parole Commissioners file silently past. Today they must decide whether Mark deserves additional time on his sentence or a break that would allow him a chance to parole in this lifetime. The odds are stacked against Mark, but the new evidence is strong. Will the Parole Commission show mercy to the legendary escape artist and troublemaker?


SBI PO Mains Result 2016 www.sbi.co.in: The State Bank of India has again postponed the result declaration date as it failed to fulfill its deadline to release the same on 16th August as notified earlier. Now, it has announced to announce the results on or after August 20.
Aspirants, now, should wait for another few days. Till then, enjoy the festival of Raksha Bandhan. The bank notified via a note that the results of Probationary Officers Main exam Phase 2 would be available from 20th August. However, it hasn't mentioned a specific date so far. It has just indicated that due to festivals, it is again delayed.
According to a previous notification issued, the State Bank of India (SBI) Probationary Officers (PO) Mains Results 2016 of the examination held were supposed to be declared on 16th August. But, it didn't happen. Not only PO but also for SBI Clerk Mains Result, the bank hasn't released any official statement yet.
All the required details are available on the official website www.sbi.co.in. After the publication of the results, it will also be available at the same location.
Earlier, the bank had set 16th of August to make the results available online. It had mentioned the date, but not the time. Eventually, it couldn't stand true on its words. Now, don't think too deeply regarding it. We will keep you updated with the latest updates.
The result may be pending as SBI hasn't reached to any conclusion regarding that they should hold an interview for the clerical cadre post or not. Moreover, there is an ongoing case in the Madras court.
So, we would recommend you to keep a close watch on The Reporter Times and the State Bank of India web portal.
More than 4 lakh candidates appeared for the two examinations of Clerk Mains and POMains. About 48,000 made it to take part in the Probationary Officers mains exam while 3.5 lakh candidates appeared for Clerk Mains exam.
Lucky candidates who will qualify the PO will be called up for the interview round which is to take place on September 1st. The final result will be published on September 30 in order to fill up the 2200 posts for PO in the India's largest operating public sector bank. Stay tuned for SBI results.


We list the best Cooking Classes in or near Harrington DE. Cooking classes are terrific for self-development. An individual's ability to prepare the table with a wonderful meal not only creates self-rewarding benefits, but it also brings joy to those around you. Classes are filling up fast, so get signed up right away!
If you are looking at cooking classes for professional development, visit our culinary schools section – Aspiring cooks and chefs can take courses in high school or via vocational school programs. In order to work as a head cook, chef, or any other culinary professional, you should complete the formal training course. Training programs in culinary arts are available at culinary arts educational institutions, some that are two-year, or even four-year colleges.


Today I'll be show casing a set of products: The Wreath Framelits and 3 matching Stamp sets.
The Wreath Framelits were first introduced with the Wondrous Wreath Stamp Set. As of this writing these 2 products are still "bundled" for 15% savings. Since that first introduction Stampin'UP! introduced 2 additional stamp sets that also go with the Wreath Framelits.


The shoulder is a fascinating joint. The combination of mobility and stability of the shoulder allows us to position the upper extremity in space so that we may accomplish a large variety of functions. A wide array of pathological entities affect the shoulder, ranging from arthritis to instability and including the rotator cuff, scapular muscles and other joints in addition to the glenohumeral articulation. This symposium reviews many of these challenging aspects of shoulder surgery.
Symposium highlights an example where advances in regional anesthesia and ambulatory surgery have been applied to joint replacement surgery, allowing shoulder arthroplasty patients to go home the day of their surgery in a safe and effective manner. We have also included an example of our transition towards more arthroscopic-based procedures where a technique for arthroscopic coracoclavicular ligament reconstruction is described.
Despite the advances in our field, there remain many challenges. We include examples of these, including ten- don to bone healing in rotator cuff surgery, difficulties associated with shoulder arthroplasty revision, challenges related to the technique of reverse shoulder arthroplasty, and complications related to shoulder surgery. While we have come a long way, there remains much room for progress, and hopefully this Symposium will contribute to further our knowledge and improve the care of our patients.


text:
U.S. Officials Believe Ukrainian Passenger Plane Was Shot Down By Iran
Screengrab/CBS This Morning/YouTube
The U.S. has a "high level of confidence" that Iranian missiles shot down the Ukrainian plane that crashed in Iran.
The United States has a "high level of confidence" that Iranian missiles shot down the Ukrainian plane that crashed minutes after takeoff near Tehran on Wednesday, killing all 176 people on board, according to The Wall Street Journal.
With increased tensions between the U.S. and Iran over the assassination of Iranian General Qasem Soleimani, the investigation into the cause of the Ukraine International Airlines flight is likely to be "thorny," the Journal noted.
The official explanation from Iran is that the plane experienced technical failures and had turned back toward the Tehran airport, catching fire before it hit the ground.
But many are not buying this version of events, including Ukraine, where officials have indicated they are considering several scenarios, including "a strike by an antiaircraft missile, a collision with a drone, an engine explosion or a blast inside the aircraft as a result of a terrorist attack."
The timing of the crash — just hours after Iran retaliated for Soleimani's death by striking two Iraqi bases where U.S. troops were housed — has raised skepticism over Tehran's explanation for the incident.
A U.S. official told the Journal on Wednesday that "data transmitted via satellite indicated everything was normal on the jetliner until the sudden loss of data and the fatal dive," suggesting to some air-safety officials that some type of hostile act could have occurred.
According to International Civil Aviation Organization standards, "the home country of the airline and the makers of the plane and its major systems are each entitled to appoint a representative to participate in crash probes," the Journal noted, but it is unclear to what extent the U.S. or Boeing will be permitted to participate in the investigation.
Ali Abedzadeh, head of Iran's Civil Aviation Organization, said earlier this week that access to the black box recorder would not be provided to Boeing or the United States.
Read the full report.
Bangoskank
Trump ordered the plane shot down so it could try to get Canada back on its side, what better way than framing Iran for killing 65 Canadians. The USA is going to continue to murder innocent people until we're in an all out nuclear war, pussygrabbers like "if I can't rule the world there will be no world to rule" the thing is Hitler lite but it's working it's way up.

redpajama_set_name: RedPajamaCommonCrawl


I've always liked carnivorous plants but while I successfully grow other plants, I've been pretty good and not keeping the carnivorous ones alive. So, in the spirit of the Halloween season I thought I'd give it another try and make a nice mad scientist style terrarium.
This time I played twenty questions with some folks in the know and I think I may have figured out at least a couple things I was doing wrong. Either way I'm hoping my hungry little garden will at least last the season and maybe take out a few pests in the process.
The difficulty in this was more gathering materials than executing the project but I did at least one fun thing that was ind of interesting and I did learn a bit.
A large glass jar. Any jar should do. I chose one I can close up to actively manage the humidity.
Potting soil. There are certainly better blends than others and you can increase the happiness of your plants by using the correct mix. I just grabbed some basic potting soil. Again, this was a bad idea. Please see my carnivorous plant potting soil Instructable for a mix that won't kill your plants.
The plants. I went with a classic Venus Flytrap and an interesting Sundew. Probably could have used at least one more but I'm hoping they'll grow to fill in the spaces and I'm trying to encourage some moss as well. There's always time to add more if it looks too sparse.
Animal skull. I used a raccoon skull I picked up at the same shop I got my plants from but I have a growing collection of type specimens I've been collecting since childhood and then used extensively working as an archeologist. Best to not use something unusual. A raccoon was the perfect size and you can get them cheap on the internet if you can't otherwise obtain one.
Distilled water. Tap water or even bottled water will kill Venus Fly Traps and other bog plants. I'm told rainwater is OK as well and has been good for my orchids but I haven't tried it on this type of plant. Distilled water is inexpensive so there's no reason not to use it. Bottled drinking water often has salt added for flavor and will kill your plants and while chlorine is very bad for them it's not the only thing in tap water that will kill CP's. So setting it out over night won't help in this case.
Total cost if you go out and buy everything is probably around $40.
I thought it would be fun if the Fly Trap was growing out of the top of the skull. This required a fair bit of carving.
I used a Dremel with a cutting wheel. This creates a lot of very fine bone dust and in my case awful smelling smoke.
It is unwise to carve bone in this manor without a respirator. it's not good to inhale the dust and could be potentially dangerous beyond the obvious. I also broke a cutting wheel and sent pieces of it flying.
You can see from the photos I basically topped the calvarium and then cut out the bottom of the brain case. This was so the plant could grow all the way through rather than restrict the roots and hope the bone would eventually rot through. That can take years.
The roots are fairly shallow on many bog plants anyway but I also wanted it to be an extension of the soil column.
I wanted this to be a bog in a jar. So, I didn't add stones or other material in the bottom. Just thought it would look nicer without and I can clearly see the soil water level either way. ...I did throw in most of the bone fragments from cutting the skull. The bone would later be confirmed to be fairly inconsequential and while a layer of gravel can help monitor water levels and a couple other factors it isn't essential.
I guessed at a balance between having enough growth medium and room up top for a healthy micro climate with room for the plants to grow in that direction as well.
The soil that came with the Sundew was pretty loose and fell apart quite a bit when I unpotted the plant so I mixed it in with the rest. The fly trap had to be cut out of it's root ball a bit to fit into the skull "planter" and I was careful to set aside the layer with moss growing on it. The roots of both were still pretty much covered in the soil they came in.
Nothing mysterious here other than my needing a CP friendly potting mix. Here's the link to that once again in case you missed it.
I simply found decent placement for the plants and arranged them like you might in any other terrarium or container garden.
I mounded up the soil a bit under the skull and dug a nice hole for the Sundew.
The soil stays wet so things don't move around all that much.
The only thing to remember is that even gentle pouring can splatter the inside of your terrarium. No big deal, it wipes off but if you tip it at a slight angle you can pour a gentle stream down the side and avoid the mess.
You'll also want to do this slowly and give the soil plenty of time to soak up the water. Add too much and it's hard to get back out. You want wet soil but not mud or standing water. Just take your time and pay attention. Many bog plants are capable of living at least partially submerged for short periods of time but it isn't ideal and they will eventually die if left that way.
Again, resist the urge to use bottled or tap water if you haven't picked up some distilled water.
Step 6: Enjoy the Awesomeness!
I'm pleased enough with the outcome to already be thinking about other variations and daydream a little about more interesting and exotic bog plants. I've also kind of been interested in a full "vivarium" with both plants and animals and what mad scientist doesn't need a few Poison Dart frogs hanging around?
In response to some very helpful advice I decided to re-pot my plants in suitable soil that they can continue to live in.
There were some very constructive comments and some people were kind enough to PM with concern about the health of my CP's. I'm happy to report planting them in regular potting soil will not kill them quickly. The wrong water and fertilizers will knock them out fairly quickly but the soil itself is a slower death and not at all a death sentence.
After conferring with some knowledgeable professionals including a couple botanists, a pro grower and a soil science guy I sorted out what constitutes good soil for these plants, what kills them and why.
After a week(it took forever to find the materials here in the city) waiting in regular potting soil my plants are re-potted and still thriving with no reason to think they'll croak. Death by bad soil can take several months and possibly longer if the soil profile is deep enough for the mineral content to leach to the bottom. Areas with high heat or low humidity where water evaporates quickly will have a much shorter safe window to correct a problem like this.
You can see the tear down and repotting in the images. So, now they have the things they need to thrive, sun, distilled water, acid soil free of minerals and chemicals and even a few lab pests to eat!
At this point if anything takes them out it'll be life in a smallish terrarium. Considering an arduino based hydro-thermograph as well, just to really track exactly what's going on in there.
Planning on setting up another terrarium or two and have the materials on order.
Thanks to everyone who helped out and shared their helpful comments!
Very beautiful. Do they need direct sunlight. My apartment is pretty dark.
That's a great question. Mine did well in a bright window but it was very bright and got sunlight most of the day.
This is a great article on the topic from the International Carnivorous Plant Society.
What did you end up with for your final sol mixture?
The skull was a nice touch!
I recently found out that even filtered tap water will also kill flytraps. I had a thriving outdoor carnivorous bog garden when I lived near Seattle (same climate & water as Vancouver) but have killed every carnivore I brought home since moving to north Texas, where we have very hard water. The filter removes chlorine and sulphur, but leaves salt and calcium carbonate behind. The cats throwing the little pots off the windowsill didn't help, either.
I'm ready to try again, maybe in a terrarium so the winter humidity can be kept high enough to keep the plants happy.
'The Savage Garden' by Peter D'Amato is a good reference.
Final note: the old garden got moved to my MIL & FIL yard and is still thriving.
Nice, Dionaea Dente. Are they very hard to grow, in comparison to Dionaea Muscipula? Im thinking about getting some seeds of them.
I don't have enough experience to compare them. These were pretty happy little plants as long as the lid wasn't closed tight for too long. I ended up giving away all of my plants, carnivorous and non. Looking forward to having more sometime soon.
Awesome! I fancy skulls, bones and everything rusty. This is GREAT!!!
ive got a carnivorous garden growing in a glass bowl on my window sill. ive got a venus fly trap, a pitcher plant, a sundew and a butterwort. i put some big rocks in the bottom, then sprinkled a container of aquarium charcoal, then regular potting soil and finally a thick layer of moss i had collected off some rocks on the side of the highway. transplanting them wasnt easy because of the water content and lack of sturdy roots but i basically just set each one in recess of the moss. that was 2 months ago and its doing awesome. my sundew has grown about 8 inches vertically and i fed my pitcher plant some earth worms that were in a plant my friend gave me which has made it big and strong.
Great instructable! AND Great comments! Thanks to all who felt able to pass on knowledge instead of letting us learn the hard way. Kudos. Many of you have slaved over the problems that arose, and found solutions!
I have always wanted to have a few (yah, I got big dreams! lol) terrariums of CP, but having been living in Toronto,Canada and our very cold winters there, I did't have a real chance to try. Now I am in a milder climate (Vancouver) I have a better chance to give those plants the tender lovin' care and uber sunshine they deserve!
I bought some epiphytes delight fertilizer and poured about 16 oz (2 cups) worth in there when I first set it up, then poured enough water in right below where the spanish moss meets the rocks. I've fed it about 8 oz. twice (YES, TWICE) since I got it and it's getting to the point where I think I'm gonna need a bigger apothecary jar.
Nepenthes are best in a hanging basket to fully appreciate their pitchers, but unfortunately it's just too dry where I live and the only window I have with enough sun is one that's open all the time (they hate drafts).
Wow! That looks great! Thanks for sharing and posting a photo. I'm working on a CP potting soil Instructable right now. Looks like you've had some real success there.
As was already said, the potting soil will kill the plants. Coconut potting products have some nutrition, and coir is not a substitute for sphagnum peat when it comes to carnivorous plants. Many people have problems with perlite in their mixes as well, but I haven't heard a problem with sand.
The plants you chose also need lots and lots of light. They will take full sun which you can't get indoors. They also need seasonal change which is very hard to duplicate indoors. You would do better with a tropical, shade tolerant carnivorous plant such as some nepenthes species, and nepenthes growers will actually overwinter their plants in terrarium-like environments to keep the humidity high.
A closed jar isn't so great, but you could just keep it propped open so meh. If you keep it near fruit, the gnats will swarm in there and feed the plants.
I've seen terrariums with carnivorous plants like this one, but I'm a bit dubious about how well they work unless it's only a temporary situation such as overwintering. I have a hard time keeping houseplants thriving, and my houseplants are pretty common houseplants such as pothos. I move them outside as soon as I can in the year so they can recover from the winter inside the house. It's much easier to keep plants alive and thriving outdoors generally. Terrariums are very easy, but it's best to use plants that are well suited to growing in those conditions.
I think you could grow carnivorous plants very easily, but definitely research them. I lose plants, and when I go to figure out why they died, I get very annoyed with myself and the things I did wrong. I had some gazanias wilt and die this year, and I thought they weren't getting enough water so I watered them more. Well... it turns out they were wilting because of overwatering. Crap. I thought they required more water than what they did.
Check out when the best time is to divide your plants. I suspect the venus fly trap needs to go dormant before division or you might lose both.
For the record, I think it looks nice like a little art piece, and I think you can create a terrarium with carnivorous plants so long as you pick the right container, the right plant, and the right potting mix. Research some nepenthes and see which one would work well and then select a container. Nepenthes require slightly different potting mix than other carnivorous plants, so some adjustments would be necessary.
Actually, that Sundew, which looks like drosrea binata dichotoma (sometimes called a "Staghorn Sundew"), is a pretty good match for the Flytrap in terms of growing conditions. They only need 1-2 months of dormancy, and those particular plants don't need to die off to the surface like some Sarracenias do.
I've had good luck growing both of those species under plain old twin-tube fluorescent shop light fixtures with plain white tubes. In this case, I might just curl a sheet of white construction paper into a half-pipe and place it behind the jar to reflect light, then use a circular fluorescent tube overhead to light the whole thing, and use a lighting timer to set the photoperiod: 14-16 hours during the growing season, and down to 8-12 hours during dormancy. If you want to try to use sunlight, I'd take the top off the jar entirely, or you'll cook 'em.
The best time to divide Flytraps is right as they're coming out of dormancy, but if the environment is stable and correct, they are actually quite resilient little plants. I've had success during the early and middle parts of the growing season, although I've never tried dividing them when they're thinking about going dormant.
Putting growing lights on a terrarium sorta defeats the purpose of a terrarium, especially one that was put in a bail jar. That's why I suggested something like a nepenthes for a more permanent terrarium that featured a carnivorous plant and wasn't just for overwintering. It would generally just be easier to maintain depending on the species, and terrariums should be about ease and beauty in my opinion.
The two main reasons I made the terrarium were that I wanted something fun to look at and having had no luck at all with open planters for CP's in the past as well as being told it might solve some past problems I just went with it.
I'm fairly certain my main problem before was not using distilled water.
If it makes you feel better, I lost all my sarracenia because I used perlite infused with Miracle Grow. I hadn't read the package closely enough, and boy did I feel like a dummy. And then I found out that people have problems with perlite generally. Bah.
However, while the plants were alive and living in a peat/sand mix and did so for a year, I had them in a pot-in-pot set up and collected rain water for them. They were doing really well and were filling up the container which was when I transplanted them and killed them with the perlite... If the terrarium doesn't work out, there are other things you can try. I'd send you a nepenthes cutting to try, but I think it might get confiscated by the department of agriculture. The nepenthes I have would be too large for a jar, but I have it in a hanging basket outside. It might actually be hardy where you are.
Thanks everyone for such insightful and helpful comments. I got a copy of Peter D'Amato's savage garden, a book that was recommended by more than any other and mentioned independently by several. I also dug out my soil science lab manual and did some web research. I'm going to try to sort out both what people here and elsewhere are having success or failure with and see if I can sus out why from a lab standpoint.
I got peat moss and a chemically inert sand and so far my plants are thriving with visible growth and no apparent issues and seem happy in their jar.
At the very least I'll update this Instructable soon and possibly make another if there seems to be enough material to warrant it.
don't know if you know this but bones dust is one of the most dangerous things for you lungs i hope you wore the proper respirator and nit just a dust mask...anyway very cool.
Thanks for that. I did wear an actual respirator and made sure to point out the need for it in the Instructable.
im not trying to say you don't know what your doing...it is obvious you do. but for the safety of those who would want to do this i wanted to impress upon them the dangers involved in cutting bone and that people have died in this process and have gotten ill with diseases similar to silicosis.


Our range of SEO services can be tailored to meet your precise needs whether you are in healthcare, tourism, eCommerce, B2B or any other sector which needs to market services to potential customers and clients. As well as using our years of experience and drawing on the benefits of a range of staff with varied and exciting backgrounds in SEO campaigns, we keep up with and ahead of all the latest developments so your SEO will never get left behind.
SEO services are one of the most cost effective and sustainable means to market your business online anywhere in the world. By running a long term and holistic search marketing campaign which concentrates on every aspect of your content we can help you to realise the dream of consistently rising visitor numbers, increased leads and more new customers, giving you the best possible return on investment that dramatically helps grow your bottom line.
If you are looking for high quality, ethical natural search marketing then let us do the hard work for you – just call 0330 555 4680 today or send a message to speak to one of our expert marketing team and start getting your business found online today.


text:
Bollywood Stars!
Bollywood is the nickname for Hindi-language movies made in India, and Bollywood actually produces more movies per year than Hollywood! With so many movies made a year, there's no shortage of stars to follow. Check out the who's who of Bollywood Stars!
Salman Khan is considered one of the biggest stars in India, and even Asia overall. He was born into the business, the son of actor/screenwriter Salim Khan. Often running into scrapes with the law and tabloids, he's known as the bad boy of the Bollywood scene.
Salman Khan is a Bollywood Bad Boy Courtesy of Zimbio
Priyanka Chopra is an actress, singer and songwriter. She won Miss World and Femina Miss India World titles in 2000, and has been a rising star ever since. Not content just to act, she also aspired to earn her degree in engineering, hosts a reality television show, writes columns for an Indian newspaper and is considered a major style icon.
Priyanka is a singer and actress
Probably one of the biggest names in Bollywood, Shahrukh Khan is an escapable name in Indian films (he's even earned the nickname The King of Bollywood or The King of Romance.) He has earned many awards and starred in every style of movie, even the Indian government has honoured his work!
Shahrukh Khan is The King of Bollywood
Katrina Kaif was actually born in England, but star in Hindi-language movies. She's an actress and model, and starred in the 2012 film Ek Tha Tiger – the second largest grossing Indian film to date.
Katrina Kaif is a model/actress
You could say it all runs in the family for Ranbir Kapoor – both his parents are actors, but he has definitely earned his place as a star, winning an award for Best Debut Male Performance back in 2007. He also hosted the recent Times of India Bollywood Awards!
Kareena is the younger sister of another major Bollywood actress – Karisma Kapoor. Kareena has made her name starring in comedies and romances, but her life off-screen is just as colorful. She has a reputation for being outspoken in the media, and has co-authored three books.
Kareena Kapoor is an outspoken starlet
Do you watch Bollywood movies? Who's your fave star? Let us know in the comment section below.
Tags: movie with your world one family the all show style best for a life star boy movies film of s
Animals of India
The Times of India Bollywood Awards 2013
Life of Pi DVD + Blu-ray Review
Fast & Furious: Spy Racers Exclusive ...
The War with Grandpa Exclusive Clip -...
Magic of Disney's Animal Kingdom Inte...
Entertainment Poll
Fave Bollywood Star!
Who is your fave Bollywood Actor or Actress?


text:
author: Colombo Telegraph
Elections, Sovereignty, Democracy And Freedom: Confronting A Burning Dilemma
By Surendra Ajit Rupasinghe –
These are much discussed and debated topics presently in Sri Lanka and in international forums. The discourse is highly polarized. Some have argued that the system of international relations operating in a globalized world have bound all states into abiding norms and conventions regarding the conduct of governance. No State can claim sovereignty to stand above these international norms and laws. They argue that State sovereignty is subordinate to the sovereignty of international laws, conventions and norms prescribed by them. Then, there are those who argue that States and governments which enjoy a popular mandate obtained through regular elections have sovereignty above any international law. Both these arguments present problems. What if the application of these international laws are not implemented fairly. What if they themselves become instruments for the powerful to dominate the weak? What if the international regime of humanitarian and human rights is itself dominated and manipulated by powerful States that have decisive influence over them? I believe that this argument has indisputable merit, since experience and practice has amply demonstrated this reality to be true. On the other hand, what if elected governments continue to violate these international laws and there are no internal mechanisms or institutions to prevent them, or to hold the regimes accountable? This is a genuine dilemma, one in which we, as Sri Lankans seem to be caught in a vise. I think we should look at these propositions more critically. I will argue that what is more important is not the form, but the content of these concepts and their concrete practices located in their living, practical application. Beneath the appearance of things lie their essential reality. If all that appears is true, then why would we need critical reasoning and philosophical- scientific inquiry? As Alice learnt in Wonderland, "Things are not as they seem, and words and concepts do not refer to what they deem".
The Fetishism of Elections:
Do regular elections confer absolute sovereignty to States to violate any and all international humanitarian and human rights laws? We would do well to probe this thesis critically. It is argued that regular elections are the best- if not the sole- barometer of democracy and the best criteria to evaluate the enthronement of popular sovereignty. Some argue that an elected government enjoys inviolable national sovereignty above every other consideration because it embodies the sovereign will of the people, the people's mandate. This argument claims inviolable jurisdiction for such regimes over internal matters. With regard to Sri Lanka, they argue that violations of international humanitarian and human rights law, if any, are internal matters that are to be adjudicated by internal institutions and mechanisms. However, the problem remains if such democratic institutions delegated with domestic accountability have long since been demolished. What is the case if there is no possibility for an independent mechanism to investigate and establish accountability, even though there may have been regular elections?
Elections, by themselves, are not a sufficient criteria for gauging democratic norms and practices. Does an elected government enjoy unfettered freedom to violate international humanitarian and human rights laws, and the conventions entered to protect them? After all, both Hitler and Mussolini came to power through 'free and fair' elections! For example, the US is held up as the world's foremost functioning democracy, girded by regular free and fair elections, ruled by a written Constitution that guarantees the separation of powers between the Executive, Legislature and the Judiciary. This is what appears to be the case. However, in the US, political power is concentrated by a class of Capitalist corporate magnates, who monopolize economic power through combinations of financial and industrial corporate empires – a class of Finance Capitalists. This ruling class exercises decisive influence over decision-making at the highest levels of the State, both in terms of foreign and domestic policy. This 'democratic' State was able to lie through its teeth to the American people, cajole the UN, present manufactured 'evidence' to prove the existence of weapons of mass destruction in the hands of Saddam Hussein, as the justification for unleashing a war of genocidal aggression and invading the sovereign State of Iraq, ending up in setting up a puppet regime and controlling all of its oil. This same supremely 'democratic' State has adopted the draconian 'Patriotic Act" and set up the Department of Homeland Security" which have virtually transformed the US into a police State. This very same 'democratic' State is responsible for the most gruesome war crimes, including genocidal crimes in Hiroshima and Nagasaki, mass massacres of civilians in Viet Nam, Fallujah and the villages of Afghanistan and elsewhere, engaging in the most bestial, degrading forms of torture as in Abu Graib and Guantanamo, and the practice of water-boarding and rendering, which have now received legislative sanction. This not to mention the racist hunting and killing of Afro-Americans, and generalized police brutality inside the US.
As the "Occupy Wall St" protests have asserted, this ruling class represents only 1% of the people, which engages in systematically robbing the 99%. In the US, this class of multi-billionaire finance capitalists have engaged in parasitic financial speculations that have wrought disaster and ruin to tens of millions of US citizens and pushed the economy to a spiral of devastating crisis, which has repercussions on the entire global economy. Yet, the US state has acted to preserve and protect this ruling class by offering trillions of dollars as a bail out, to keep the system from sinking, while piling even more hardship and ruin on the working masses and middle classes.
The Capitalist system in the US and elsewhere is based on a system of representative democracy legitimated by regular elections. However, these elections prove to be merely a legitimizing exercise where the people are led to endorse the prevailing, dominant status quo, and the system of robbery and exploitation that enslaves them. The masses of people may cast their vote believing that they are exercising their freedom of choice. But, if they have to choose between either two or more political parties that represent that same status quo, then they do not have a choice, but to vote that status quo into power, in every successive election. If this range of political parties represent the same ruling Capitalist agenda, with some tactical and secondary differences, as with the Democratic and Republican parties, then, indeed the people are trapped into selecting this or that political party that that serves in robbing and enslaving them. So much for fetishistic mythology of bourgeois parliamentary elections!
Elections and Parliamentary Democracy in Sri Lanka:
Now, let us bring this scenario home to Sri Lanka. The political field in Sri Lanka is dominated by two major Capitalist political parties- the United National Party (UNP) and the Sri Lanka Freedom Party (SLFP). All other parties can only function as coalition partners or in various alliances with these two dominant Capitalist parties, or occupy some lonely seats in the Opposition. Both these bourgeois parties represent a dominant Comprador Capitalist ruling class, which is dependent on foreign Capital for their economic survival. They function as neo-colonial agents of world imperialism, tied up with regional hegemonic/expansionist states. Both these major political parties have together set up a highly centralized, unitary, hegemonic-chauvinist State based on foisting the politics of Sinhala supremacy. Indeed, they have competed for the mantle of Sinhala-Buddhist supremacy and engaged in intensifying, systematic and gross violation and violent suppression of the national-democratic rights of the Tamil people. They have joined in deceiving and dividing, and in violent repression of the people, including the Sinhala Buddhist oppressed masses. Both these parties are guilty of mass massacres, abductions, enforced disappearances, inhuman torture and extra-legal killings. Both have shared power in enforcing a feudal-colonial Comprador Capitalist Dictatorship over the masses, which has resulted in increasing and intensifying poverty, indebtedness, degradation and misery for the vast majority of the toiling masses.
So, what then is the real choice for the people? In Sri Lanka, as in all other Capitalist States, elections have functioned to legitimate the State and a political-economic-social order that has kept them bound in chains of ignorance and illusion and perpetual slavery. I argue that there has rarely been a free and fair election in Sri Lanka, where there have been no abuse of State power, intimidation and use of violence. In fact, it is the case that in general, elections have been regularly and routinely marred with such gross violations. It has been alleged that even Prabhakaran ( the fascist?) had been bribed to ensure the victory of Mahinda Rajapakse at the Presidential elections. (As in a classic James Bond movie, Sripathi Sooriyaaratchi died in a fatal road accident) It has been seriously alleged that this election was won by massive electronic rigging of results, where even the supremely spineless Elections Commissioner could not announce the results without cringing in abject shame and fear. (I wonder where he is now. Reposing in safety and luxury, in some far off climes?)The whole of the election game has been designed to rob the people of their sovereignty, where elected representatives have routinely crossed over at will, bribed or cajoled by the ruling party. What then, is so sacrosanct about bourgeois parliamentary elections that function to divide and deceive the masses into legitimating their own ignorance and slavery? How can elections alone certify the sovereignty of the people?
Parliamentary Democracy as a Cover for Dictatorship:
Even in bourgeois politics, people's sovereignty is not vested in elections alone. They are vested in Constitutional rights and specific institutional arrangements. In Sri Lanka, constitutional rights have been usurped by resorting to rigged referendums and by the adoption of undemocratic legislation by bribed majorities, or by the resort to the tactic of brining in crucial laws that violate popular sovereignty as urgent bills. The recent example is the passage of the 18th Amendment as an urgent bill, with the sanction of the Supreme Court, which, with a stroke of the gilded pen, took away constitutional restrictions of term limits of the Executive Presidency. The same anti-democratic procedure was followed with the 'Appropriations Bill", which virtually provided arbitrary powers to the State ( the Regime) to appropriate properties and assets which could be declared to be 'unprofitable'. In the same manner, Land rights throughout the North-East are to be decided by a simple bureaucratic committee appointed by the State (Regime), through gazette notification. These are forms of outright legalized robbery.
Then again, how are we to reconcile piling evidence of abductions, enforced disappearances, extra-legal killings and inhuman torture, along with alleged war crimes and horrible atrocities that have been carried out with Presidential impunity that remain unaccounted, with that of people's sovereignty? The attempt to diffuse and derail the whole issue of impunity and accountability by focusing on this or that incident, such as the killing of five Tamil students in execution style in front of so many eye witnesses and the massacre of 17 humanitarian workers, or to claim that there may have been some cases of atrocities committed by errant armed forces, will simply not wash. These are criminal attempts to cover up for the wholesale, systematic and intensifying violations of international humanitarian and human rights law, by craven apologists of the Regime. Do the Tamil people in the North and East enjoy sovereignty when they are subjected to military rule, their lands appropriated, their livelihoods destroyed, their loved ones disappeared and unaccounted, their nationhood denied, robbed of dignity and freedom? Do the people enjoy their sovereignty when the free media is suppressed and terrorized, when their peaceful protests are threatened by armed goons of the Regime, when student protests are met with riot police and tear gas, student unions banned and faculties closed down, and activists arrested and hounded?
The Dilemma Revisited:
Surely, we cannot allow foreign powers to invade our sovereignty in order to advance their own strategic agendas, on the basis of investigating human rights violations- particularly when they are the worst offenders in the world. . But we can do so only if we are committed to establish truth and justice through our own internal mechanisms. But knowing full well that there is absolutely no democratic freedom to establish truth and justice internally, knowing full well that those who demand such internal accountability are hounded, abducted and killed as traitors, to defend a regime that is accountable for gross and systematic- and continuing – violations in the guise of defending national sovereignty, is tantamount to being an accomplice in such crimes.
So, how do we resolve the dilemma? We cannot capitulate to any international regime which allows foreign powers to interfere and exploit issues of violations, simply to advance their strategic interests. On the other hand, we cannot rely on a regime that violates human rights as a matter of policy and necessity, nor capitulate to its agenda for perpetuating dynastic dictatorship. Shall we suffer the dilemma in mute silence, with a sense of karmic fatality. Shall we abide by the dictum " to hell with freedom, as long as I am happy and comfortable"? Shall we cover up for all abuses and violations and defend the regime, since it is our sacred patriotic duty? Shall we keep silent, since to raise or resist would be to invite abduction, torture and death? These are issues of conscience, and everyone is free to decide.
The Path of Resistance and Revolution:
But for some of us, there is but one choice. It is better to die standing on your feet in the struggle for freedom than to live on your knees as slaves. This is the highest form of sacrifice if we are to realize our worth as human beings. Such people are driven by a vision and a dream. A vision and a dream born in the womb of Nature, born of the dialectic of history. We can easily think of far better ways to organize our society, to govern ourselves and protect our unity, independence and integrity as a country, and achieve freedom and prosperity for each and all citizens, as opposed to being slaves to reality and subjects of a criminal despotism. We can dream of an alternative path of development that shall rely on unleashing the infinite creative power of our people based on a culture of sharing the Earth and caring for each other as one indivisible human community, and together stand tall and proud among the community of nations of the world, second to none. The people shall rise as one tidal wave of conscious revolution, enlightened by a liberating philosophy, guided by a scientific outlook and method, armed with a theory, strategy, program and plan to transform the world and themselves, and conquer their freedom. Truth shall pierce the shield of falsehood. The oppressed shall rid themselves of their oppressors and the conditions of their oppression and inherit the Earth. All tin-pot despots shall be dethroned and all emperors disrobed and brought before the tribunal of history. That day shall dawn as surely as the sun must rise and blaze the horizons of freedom. Then the era of dictatorship and tyranny shall be long forgotten as we celebrate our diversity and rejoice in the splendor of the universe, in joyous ceremony. Then, there will be no need nor place for bloody despots, pompous pundits, petrified sycophants, nor craven careerists.
The writer is the Secretary: Ceylon Communist Party ( Maoist)
"Undercover Princes": With Jaffna Prince Remigius Kanagarajah
TNA, PSC And The Danger Of Wrong Turnings
Peter Casie Chetty / February 1, 2012
Idiots like this gave Communism a bad name… I mean this man is living in the age of the Ist world war. In France and England, I have realised that it is the Communists who fill up the rsnks of the National Front parties as facists. They are fooled by the rhetoric of these "everybody is equal" and then find that foriegners are not as equal as everybody. Ask Marine Le Pen and Griffiths the BNP leader. They have the solutions to all the problems like this Maoist. He must be told about Mao's China.. You have passed your sell by date you moron.
com. surendra / February 1, 2012
Thanks, Peter Casie Chetty. The lack of taste, the outpouring of venom as substitute for reasoned debate, the evocation of subjective imagery from the dungeons of unconsciousness, parading as dignified comment convinces me of the need for the most radical communist revolution so that humankind can revolutionize the world and their consciousness in the light of scientific philosophy, so that finally you too shall be liberated from your tortured and demented soul. Try to do some serious reading and fortify your comments with theoretical and empirical based reasoning. Try some yoga and meditation, that just might help you to get in touch with your senses, if not your mind. Try to understand what is it that you exactly hate and revile so much. Your self, for some deep unresolved issues from your childhood? Please don't expose your soul to the world as you do, lest you be regarded as a mental paralytic, with nothing to offer, but bilious hate. Some psychiatrists may be able to help you relieve you of your psychological constipation. I don't know, but you can try. I wish you every success and happiness.
Com. Surendra
Chandra Goonewardene / February 1, 2012
@Com. Surendra – trying to reform 'hatemongers' like this Chetty and talking of 'ahimsa' is a waste of your time.
He is certainly suffering from unresolved issues of childhood rage which transforms into blind jealousies and vicious attacks! He is the best example of gutter writing that one can think of.
When websites like CT carry his rantings without moderation, they lend authority to the view expressed by many that these are forums where every dirtmonger can attack anyone without restraint, logic or reason.
Gabriel / February 1, 2012
Who is this Peter Casie Chetty? He stenches like a shit eating pig in a toilet pit. This brat must surely be smelling and licking the posterior of Rajapaksha like a pig which is why he sees no beyond shitty remarks!
@Gabriel – Well, it was only in reading the torrent of abuse from many others that followed his hate filled rantings somewhere else on this poorly moderated website that I discovered that this character, who fled the county in fear of an imminent Tiger attack, has been begging for money at underground stations in Paris!
So this is the nature of the vermin who have now come out of their holes and are attacking anyone who expresses any opinion different to theirs! The ylick not only MR's posterior but any white man's, I reckon!
Comments should not exceed 200 words. Embedding external links and writing in capital letters are discouraged. Commenting is automatically disabled after 7 days and approval may take up to 24 hours. Please read our Comments Policy for further details. Your email address will not be published.
Eagle Eye on The Potentiality Of More Decisions To Come In National Interestsitrep24, Are you working for the firm that Asmagi Jada Bala Wegaya
paragon on The Potentiality Of More Decisions To Come In National InterestThis is the RETRIBUTION coming from LORD BUDDA for killing the innocent
Rumble 2021 on The Potentiality Of More Decisions To Come In National InterestI will equally recommend South Korea is another Nation employ tens of
Rumble 2021 on The Potentiality Of More Decisions To Come In National InterestThank you Jehan. Well balanced indeed. (1) Am I correct in thinking
Rumble 2021 on Lions, Tigers And Animal WelfareIt would be interesting if the Hon CM defines how Hindus in
Rumble 2021 on The Geopolitical Enabling Of The Gotabaya Garrison StateFor the many and not for the few is the motto.....perhaps some
Rumble 2021 on The Geopolitical Enabling Of The Gotabaya Garrison StateMake this party such a progressive unit so anyone who failed to
Rumble 2021 on The Geopolitical Enabling Of The Gotabaya Garrison StateConsider the time in opposition to optimise/revise the manifesto for update the
leelagemalli on The Potentiality Of More Decisions To Come In National InterestEE @ Thanks for making it shorter. Get well soon.
Ajith on The Impact Of Socio-Political Culture On The Growth Momentum; An Analysis Of Government Policy Dr. Suren Sumithirarachchi, It is a valuable contribution to the country. However,
© Colombo Telegraph 2011 – 2020. All rights reserved. Optimised by Newsgain.


Boston visits Edmonton for the second time in a week, winning the previous matchup 5-4.
Bill Ranford stopped Janney on a Goalie Rating draw off a Breakaway in the final minute of regulation.
Edmonton wins the game while registering only 18 shots.


text:
January 28, 2023 | State Considers Partnering with Dept of Transportation on Bill to Install Video Surveillance at School Crosswalks
January 28, 2023 | Federal Food Stamp Program Hits Record Costs In 2022
January 28, 2023 | The 6th Annual Fake News Awards
E-Waste Still Outpacing Recycling: Small Electronics Being Thrown Out with Garbage Including Est. 5+B Phones This Year Alone
TOPICS:BN FrankPollutionRecyclingsmart technologySmartphones
By B.N. Frank
Mining for ingredients needed to make electronic vehicle (EV) batteries and other wireless aka "smart" devices has environmental consequences whether the mining is done on land (see 1, 2, 3, 4) or in the ocean (see 1, 2, 3). Sometimes there are humanitarian consequences too. That's why these ingredients are often referred to as "Conflict Minerals" (see 1, 2, 3, 4, 5). Of course, there have also been countless reports about how electronic waste (aka E-Waste) from no longer useful or wanted items is ending up in landfills. Another study has confirmed that a significant amount of smaller popular devices like AirPods and cell phones are still not being recycled.
From Study Finds:
Over 5 BILLION phones will be thrown away in 2022 — enough to stretch around the equator
BRUSSELS, Belgium — More than five billion phones will be thrown away in 2022, more than enough to stretch all the way around the equator, according to a new report.
If stacked flat on top of each other, the phones would make a tower over 30,000 miles tall — 120 times higher than the orbit of the International Space Station and reaching an eighth of the way to the Moon.
Research, conducted from June to September by members of the Waste Electrical and Electronic Equipment Forum (WEEE), found that 8,775 households across six countries owned an average of 74 electrical products. These included phones, tablets, laptops, electric tools, hair dryers, and toasters.
Of these 74, on average 13 were being hoarded, nine of them were left unused, and four of them were broken. The countries surveyed included the Netherlands, United Kingdom, Slovenia, Romania, Portugal, and Lebanon.
"In 2022 alone, small EEE items such as cell phones, electric toothbrushes, toasters and cameras produced worldwide will weight an estimated total of 24.5 million tons – four times the weight of the Great Pyramid of Giza. And these small items make up a significant proportion of the 8% of all e-waste thrown into trash bins and eventually landfilled or incinerated," says Magdalena Charytanowicz of the WEEE Forum, in charge of International E-Waste Day, in a media release.
"These devices offer many important resources that can be used in the production of new electronic devices or other equipment, such as wind turbines, electric car batteries or solar panels – all crucial for the green, digital transition to low-carbon societies."
Why do people keep their old phones?
The survey found that mobile phones were the fourth most hoarded item despite being made of valuable recyclable materials such as gold, copper, silver, and palladium. The total global stock of mobile phones, both in use and hoarded, is around 16 billion, which is approximately two phones per person worldwide.
The reasons for hoarding these items vary. Of those surveyed, 46 percent say they think they may use them again in the future, 15 percent plan on selling them or giving them away, and 13 percent say they hold sentimental value.
A further nine percent think the item may have future value and seven percent don't know how to dispose of them.
This issue is the focus of WEEE's fifth annual international E-Waste Day. The team aims to encourage people to stop throwing out and hoarding their small electrical items and recycle them instead.
"We focused this year on small e-waste items because it is very easy for them to accumulate unused and unnoticed in households, or to be tossed into the ordinary garbage bin. People tend not to realize that all these seemingly insignificant items have a lot of value, and together at a global level represent massive volumes," says Pascal Leroy, Director General of the WEEE Forum.
"The producer responsibility organizations in the WEEE Forum that manage the collection of e-waste are constantly working to make the proper disposal of small e-waste simple and convenient for users and households."
"Providing collection boxes in supermarkets, pick up of small broken appliances upon delivery of new ones and offering PO Boxes to return small e-waste are just some of the initiatives introduced to encourage the return of these items," Leroy adds.
E-waste is now outpacing recycling efforts
"The continuing growth in the production, consumption and disposal of electronic devices have huge environmental and climate impacts. The European Commission is addressing those with proposals and measures throughout the whole product life-cycle, starting from design until collection and proper treatment when electronics become waste," explains Virginijus Sinkevičius, European Commissioner for the Environment, Oceans, and Fisheries.
"Moreover, preventing waste and recovering important raw materials from e-waste is crucial to avoid putting more strain on the world's resources. Only by establishing a circular economy for electronics, the EU will continue to lead in the efforts to urgently address the fast-growing problem of e-waste."
In the past 20 years, the WEEE Forum has collected, de-polluted, recycled, or refurbished more than 30 million tons of electrical items.
"Many small electronic products such as disposable airplane earbuds or cables and adapters accumulate largely unnoticed in many households. All the defunct earbuds accumulated by 2026 strung together would stretch around the moon three times," notes Dr. Kees Baldé, Senior Scientific Specialist at UNITAR SCYCLE.
"Moreover, over the past decade the growth in generated e-waste has been considerably higher than the growth in recycling, thus it is important to remind people of the importance of reusing or returning every single piece of electronics or electrical product that is forgotten about in household drawers."
What's the world doing to help?
Last year, over 170 organizations from 78 countries worldwide supported the fourth International E-Waste Day. This year, the WEEE Forum invited all organizations involved in effective and responsible e-waste management to plan awareness raising activities on Oct. 14th.
These activities could be social media, TV, or radio campaigns, city or school e-waste collections, or even artistic performances. The UN Institute for Training and Research (UNITAR) has launched a self-paced e-waste online training course which is open to anyone who wants to get involved. The course, that goes live on Oct. 14th, will take around 90 minutes and will offer lectures, videos, illustrations, tests, and a final exam.
"International E-waste Day reminds us annually of the avalanche of problems we face unless we take appropriate measures, without which global e-waste could double to 100 million tons or more in the next 30 years. Consumption of electronics in many countries continues to grow, with more and more gadgets and products or embedded in such as furniture, clothes and toys, all of which eventually become e-waste," concludes Dr. Ruediger Kuehr, Founder of the SCYCLE Program and Head of UNITAR's Office in Bonn.
"We need to understand this growth and counter it with everyone involved: national authorities, enforcement agencies, Producer Responsibility Organizations, original equipment manufacturers, recyclers, researchers and consumers themselves."
South West News Service writer Alice Clifford contributed to this report.
View StudyFinds's article archive
Activist Post reports regularly about E-Waste as well as privacy invasive and unsafe technology. For more information, visit our archives.
Or support us at SubscribeStar
Donate cryptocurrency HERE
Subscribe to Activist Post for truth, peace, and freedom news. Follow us on SoMee, Telegram, HIVE, Flote, Minds, MeWe, Twitter, Gab, What Really Happened and GETTR.
Be the first to comment on "E-Waste Still Outpacing Recycling: Small Electronics Being Thrown Out with Garbage Including Est. 5+B Phones This Year Alone"
State Considers Partnering with Dept of Transportation on Bill to Install Video Surveillance at School Crosswalks
The 6th Annual Fake News Awards
Federal Food Stamp Program Hits Record Costs In 2022