(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory();
	else if(typeof define === 'function' && define.amd)
		define([], factory);
	else {
		var a = factory();
		for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
	}
})(this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId])
/******/ 			return installedModules[moduleId].exports;
/******/
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			exports: {},
/******/ 			id: moduleId,
/******/ 			loaded: false
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "/";
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ({

/***/ 0:
/***/ function(module, exports, __webpack_require__) {

	__webpack_require__(175);
	__webpack_require__(178);
	__webpack_require__(176);
	__webpack_require__(179);
	__webpack_require__(177);
	__webpack_require__(180);
	__webpack_require__(174);
	__webpack_require__(646);


/***/ },

/***/ 1:
/***/ function(module, exports) {

	/*
		MIT License http://www.opensource.org/licenses/mit-license.php
		Author Tobias Koppers @sokra
	*/
	// css base code, injected by the css-loader
	module.exports = function() {
		var list = [];
	
		// return the list of modules as css string
		list.toString = function toString() {
			var result = [];
			for(var i = 0; i < this.length; i++) {
				var item = this[i];
				if(item[2]) {
					result.push("@media " + item[2] + "{" + item[1] + "}");
				} else {
					result.push(item[1]);
				}
			}
			return result.join("");
		};
	
		// import a list of modules into the list
		list.i = function(modules, mediaQuery) {
			if(typeof modules === "string")
				modules = [[null, modules, ""]];
			var alreadyImportedModules = {};
			for(var i = 0; i < this.length; i++) {
				var id = this[i][0];
				if(typeof id === "number")
					alreadyImportedModules[id] = true;
			}
			for(i = 0; i < modules.length; i++) {
				var item = modules[i];
				// skip already imported module
				// this implementation is not 100% perfect for weird media query combinations
				//  when a module is imported multiple times with different media queries.
				//  I hope this will never occur (Hey this way we have smaller bundles)
				if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
					if(mediaQuery && !item[2]) {
						item[2] = mediaQuery;
					} else if(mediaQuery) {
						item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
					}
					list.push(item);
				}
			}
		};
		return list;
	};


/***/ },

/***/ 2:
/***/ function(module, exports, __webpack_require__) {

	/*
		MIT License http://www.opensource.org/licenses/mit-license.php
		Author Tobias Koppers @sokra
	*/
	var stylesInDom = {},
		memoize = function(fn) {
			var memo;
			return function () {
				if (typeof memo === "undefined") memo = fn.apply(this, arguments);
				return memo;
			};
		},
		isOldIE = memoize(function() {
			return /msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase());
		}),
		getHeadElement = memoize(function () {
			return document.head || document.getElementsByTagName("head")[0];
		}),
		singletonElement = null,
		singletonCounter = 0,
		styleElementsInsertedAtTop = [];
	
	module.exports = function(list, options) {
		if(false) {
			if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
		}
	
		options = options || {};
		// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
		// tags it will allow on a page
		if (typeof options.singleton === "undefined") options.singleton = isOldIE();
	
		// By default, add <style> tags to the bottom of <head>.
		if (typeof options.insertAt === "undefined") options.insertAt = "bottom";
	
		var styles = listToStyles(list);
		addStylesToDom(styles, options);
	
		return function update(newList) {
			var mayRemove = [];
			for(var i = 0; i < styles.length; i++) {
				var item = styles[i];
				var domStyle = stylesInDom[item.id];
				domStyle.refs--;
				mayRemove.push(domStyle);
			}
			if(newList) {
				var newStyles = listToStyles(newList);
				addStylesToDom(newStyles, options);
			}
			for(var i = 0; i < mayRemove.length; i++) {
				var domStyle = mayRemove[i];
				if(domStyle.refs === 0) {
					for(var j = 0; j < domStyle.parts.length; j++)
						domStyle.parts[j]();
					delete stylesInDom[domStyle.id];
				}
			}
		};
	}
	
	function addStylesToDom(styles, options) {
		for(var i = 0; i < styles.length; i++) {
			var item = styles[i];
			var domStyle = stylesInDom[item.id];
			if(domStyle) {
				domStyle.refs++;
				for(var j = 0; j < domStyle.parts.length; j++) {
					domStyle.parts[j](item.parts[j]);
				}
				for(; j < item.parts.length; j++) {
					domStyle.parts.push(addStyle(item.parts[j], options));
				}
			} else {
				var parts = [];
				for(var j = 0; j < item.parts.length; j++) {
					parts.push(addStyle(item.parts[j], options));
				}
				stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
			}
		}
	}
	
	function listToStyles(list) {
		var styles = [];
		var newStyles = {};
		for(var i = 0; i < list.length; i++) {
			var item = list[i];
			var id = item[0];
			var css = item[1];
			var media = item[2];
			var sourceMap = item[3];
			var part = {css: css, media: media, sourceMap: sourceMap};
			if(!newStyles[id])
				styles.push(newStyles[id] = {id: id, parts: [part]});
			else
				newStyles[id].parts.push(part);
		}
		return styles;
	}
	
	function insertStyleElement(options, styleElement) {
		var head = getHeadElement();
		var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
		if (options.insertAt === "top") {
			if(!lastStyleElementInsertedAtTop) {
				head.insertBefore(styleElement, head.firstChild);
			} else if(lastStyleElementInsertedAtTop.nextSibling) {
				head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
			} else {
				head.appendChild(styleElement);
			}
			styleElementsInsertedAtTop.push(styleElement);
		} else if (options.insertAt === "bottom") {
			head.appendChild(styleElement);
		} else {
			throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
		}
	}
	
	function removeStyleElement(styleElement) {
		styleElement.parentNode.removeChild(styleElement);
		var idx = styleElementsInsertedAtTop.indexOf(styleElement);
		if(idx >= 0) {
			styleElementsInsertedAtTop.splice(idx, 1);
		}
	}
	
	function createStyleElement(options) {
		var styleElement = document.createElement("style");
		styleElement.type = "text/css";
		insertStyleElement(options, styleElement);
		return styleElement;
	}
	
	function createLinkElement(options) {
		var linkElement = document.createElement("link");
		linkElement.rel = "stylesheet";
		insertStyleElement(options, linkElement);
		return linkElement;
	}
	
	function addStyle(obj, options) {
		var styleElement, update, remove;
	
		if (options.singleton) {
			var styleIndex = singletonCounter++;
			styleElement = singletonElement || (singletonElement = createStyleElement(options));
			update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
			remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
		} else if(obj.sourceMap &&
			typeof URL === "function" &&
			typeof URL.createObjectURL === "function" &&
			typeof URL.revokeObjectURL === "function" &&
			typeof Blob === "function" &&
			typeof btoa === "function") {
			styleElement = createLinkElement(options);
			update = updateLink.bind(null, styleElement);
			remove = function() {
				removeStyleElement(styleElement);
				if(styleElement.href)
					URL.revokeObjectURL(styleElement.href);
			};
		} else {
			styleElement = createStyleElement(options);
			update = applyToTag.bind(null, styleElement);
			remove = function() {
				removeStyleElement(styleElement);
			};
		}
	
		update(obj);
	
		return function updateStyle(newObj) {
			if(newObj) {
				if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
					return;
				update(obj = newObj);
			} else {
				remove();
			}
		};
	}
	
	var replaceText = (function () {
		var textStore = [];
	
		return function (index, replacement) {
			textStore[index] = replacement;
			return textStore.filter(Boolean).join('\n');
		};
	})();
	
	function applyToSingletonTag(styleElement, index, remove, obj) {
		var css = remove ? "" : obj.css;
	
		if (styleElement.styleSheet) {
			styleElement.styleSheet.cssText = replaceText(index, css);
		} else {
			var cssNode = document.createTextNode(css);
			var childNodes = styleElement.childNodes;
			if (childNodes[index]) styleElement.removeChild(childNodes[index]);
			if (childNodes.length) {
				styleElement.insertBefore(cssNode, childNodes[index]);
			} else {
				styleElement.appendChild(cssNode);
			}
		}
	}
	
	function applyToTag(styleElement, obj) {
		var css = obj.css;
		var media = obj.media;
	
		if(media) {
			styleElement.setAttribute("media", media)
		}
	
		if(styleElement.styleSheet) {
			styleElement.styleSheet.cssText = css;
		} else {
			while(styleElement.firstChild) {
				styleElement.removeChild(styleElement.firstChild);
			}
			styleElement.appendChild(document.createTextNode(css));
		}
	}
	
	function updateLink(linkElement, obj) {
		var css = obj.css;
		var sourceMap = obj.sourceMap;
	
		if(sourceMap) {
			// http://stackoverflow.com/a/26603875
			css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
		}
	
		var blob = new Blob([css], { type: "text/css" });
	
		var oldSrc = linkElement.href;
	
		linkElement.href = URL.createObjectURL(blob);
	
		if(oldSrc)
			URL.revokeObjectURL(oldSrc);
	}


/***/ },

/***/ 174:
/***/ function(module, exports) {

	/*
	 * Tine 2.0
	 * 
	 * @package     ActiveSync
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * @author      Philipp Schüle <p.schuele@metaways.de>
	 * @copyright   Copyright (c) 2015 Metaways Infosystems GmbH (http://www.metaways.de)
	 *
	 */
	
	Ext.namespace('Tine.ActiveSync');
	
	/**
	 * admin settings panel
	 * 
	 * @namespace   Tine.ActiveSync
	 * @class       Tine.ActiveSync.AdminPanel
	 * @extends     Ext.TabPanel
	 * 
	 * <p>ActiveSync Admin Panel</p>
	 * <p><pre>
	 * </pre></p>
	 * 
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * @author      Philipp Schuele <p.schuele@metaways.de>
	 * @copyright   Copyright (c) 2009 Metaways Infosystems GmbH (http://www.metaways.de)
	 * 
	 * @param       {Object} config
	 * @constructor
	 * Create a new Tine.ActiveSync.AdminPanel
	 */
	Tine.ActiveSync.AdminPanel = Ext.extend(Ext.TabPanel, {
	
	    border: false,
	    activeTab: 0,
	
	    /**
	     * @private
	     */
	    initComponent: function() {
	        
	        this.app = Tine.Tinebase.appMgr.get('ActiveSync');
	        
	        this.items = [new Tine.ActiveSync.SyncDevicesGridPanel({
	            title: this.app.i18n._('Sync Devices'),
	            // TODO make this work
	            disabled: ! Tine.Tinebase.common.hasRight('manage_devices', 'ActiveSync')
	        })];
	        
	        Tine.ActiveSync.AdminPanel.superclass.initComponent.call(this);
	    }
	});
	    
	/**
	 * ActiveSync Admin Panel Popup
	 * 
	 * @param   {Object} config
	 * @return  {Ext.ux.Window}
	 */
	Tine.ActiveSync.AdminPanel.openWindow = function (config) {
	    var window = Tine.WindowFactory.getWindow({
	        width: 700,
	        height: 470,
	        name: 'activesync-manage-syncdevice',
	        contentPanelConstructor: 'Tine.ActiveSync.AdminPanel',
	        contentPanelConstructorConfig: config
	    });
	};


/***/ },

/***/ 175:
/***/ function(module, exports) {

	/*
	 * Tine 2.0
	 *
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * @copyright   Copyright (c) 2010-2012 Metaways Infosystems GmbH (http://www.metaways.de)
	 * @author      Cornelius Weiss <c.weiss@metaways.de>
	 */
	Ext.ns('Tine.ActiveSync');
	
	/**
	 * @namespace   Tine.ActiveSync
	 * @class       Tine.ActiveSync.Application
	 * @extends     Tine.Tinebase.Application
	 * 
	 * @author      Cornelius Weiss <c.weiss@metaways.de>
	 */
	Tine.ActiveSync.Application = Ext.extend(Tine.Tinebase.Application, {
	    
	    hasMainScreen: false,
	    
	    /**
	     * Get translated application title of the calendar application
	     * 
	     * @return {String}
	     */
	    getTitle: function() {
	        return this.i18n.gettext('Active Sync');
	    },
	    
	    /**
	     * returns additional items for persistent filter context menu
	     * 
	     * @todo rework this to be event/hook 
	     * 
	     * @param {Tine.widgets.persistentfilter.PickerPanel} picker
	     * @param {Tine.widgets.persistentfilter.model.PersistentFilter} filter
	     */
	    getPersistentFilterPickerCtxItems: function(picker, filter) {
	        var items = [];
	        
	        if (picker.app.appName.match(/Addressbook|Calendar|Email|Tasks/)) {
	            var devices =  Tine.ActiveSync.getDeviceStore();
	            var menuItems = ['<b class="x-menu-title">' + this.i18n._('Select a Device') +'</b>'];
	            
	            devices.each(function(device) {
	                var contentClass = Tine.ActiveSync.Model.getContentClass(picker.app.appName);
	                
	                menuItems.push({
	                    text: Ext.util.Format.htmlEncode(device.getTitle()),
	                    checked: device.get([Ext.util.Format.lowercase(contentClass) + 'filter_id']) === filter.id,
	                    //iconCls: 'activesync-device-standard',
	                    handler: this.setDeviceContentFilter.createDelegate(this, [device, contentClass, filter], true)
	                });
	            }, this);
	            if (! devices.getCount()) {
	                menuItems.push({
	                    text: this.i18n._('No ActiveSync Device registered'),
	                    disabled: true,
	                    checked: false,
	                    handler: Ext.emptyFn
	                });
	            }
	            
	            items.push({
	                text: String.format(this.i18n._('Set as {0} Filter'), this.getTitle()),
	                iconCls: this.getIconCls(),
	                menu: menuItems
	            });
	        }
	        
	        return items;
	        
	    },
	    
	    /**
	     * persistently set filter for device
	     * 
	     * @param {Ext.Action} btn
	     * @param {Ext.EventObject} e
	     * @param {Tine.ActiveSync.Model.Device} device
	     * @param {} contentClass
	     * @param {Tine.widgets.persistentfilter.model.PersistentFilter} filter
	     */
	    setDeviceContentFilter: function(btn, e, device, contentClass, filter) {
	        if (btn.checked) {
	            // if btn was checked, we need to reset filter
	            Tine.ActiveSync.setDeviceContentFilter(device.id, contentClass, null, function(response) {
	                device.set([Ext.util.Format.lowercase(contentClass) + 'filter_id'], null);
	                
	                Ext.Msg.alert(this.i18n._('Resetted Sync Filter'), String.format(
	                    this.i18n._('{0} filter for device "{1}" is now "{2}"'),
	                        this.getTitle(),
	                        Ext.util.Format.htmlEncode(device.getTitle()),
	                        this.i18n._('resetted')
	                ));
	                
	            }, this);
	        } else {
	            Tine.ActiveSync.setDeviceContentFilter(device.id, contentClass, filter.id, function(response) {
	                device.set([Ext.util.Format.lowercase(contentClass) + 'filter_id'], filter.id);
	                
	                Ext.Msg.alert(this.i18n._('Set Sync Filter'), String.format(
	                    this.i18n._('{0} filter for device "{1}" is now "{2}"'),
	                        this.getTitle(),
	                        Ext.util.Format.htmlEncode(device.getTitle()),
	                        Ext.util.Format.htmlEncode(filter.get('name'))
	                ));
	            }, this);
	        }
	    }
	});


/***/ },

/***/ 176:
/***/ function(module, exports) {

	/*
	 * Tine 2.0
	 * 
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * @copyright   Copyright (c) 2010-2012 Metaways Infosystems GmbH (http://www.metaways.de)
	 * @author      Cornelius Weiss <c.weiss@metaways.de>
	 */
	Ext.ns('Tine.ActiveSync');
	
	/**
	 * @namespace   Tine.ActiveSync
	 * @class       Tine.ActiveSync.DeviceStore
	 * @extends     Ext.data.ArrayStore
	 * 
	 * <p>Store for Device Records</p>
	 * 
	 * @author      Cornelius Weiss <c.weiss@metaways.de>
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * 
	 * @param       {Object} config
	 * @constructor
	 * Create a new Tine.ActiveSync.DeviceStore
	 */
	Tine.ActiveSync.DeviceStore = Ext.extend(Ext.data.ArrayStore, {
	    
	});
	
	
	/**
	 * @namespace   Tine.ActiveSync
	 * 
	 * get store of all device records
	 * 
	 * @static
	 * @sigleton
	 * @return {DeviceStore}
	 */
	Tine.ActiveSync.getDeviceStore = function() {
	    if (! Tine.ActiveSync.deviceStore) {
	        // create store
	        Tine.ActiveSync.deviceStore = new Tine.ActiveSync.DeviceStore({
	            fields: Tine.ActiveSync.Model.Device.getFieldDefinitions(),
	            sortInfo: {field: 'friendlyname', direction: 'ASC'}
	        });
	        
	        var app = Tine.Tinebase.appMgr.get('ActiveSync'),
	            registry = app ? app.getRegistry() : null
	            recordsData = registry ? registry.get('userDevices') : [];
	        
	        // populate store
	        Ext.each(recordsData, function(data) {
	            var r = new Tine.ActiveSync.Model.Device(data);
	            Tine.ActiveSync.deviceStore.addSorted(r);
	        }, this);
	    }
	    
	    return Tine.ActiveSync.deviceStore;
	}


/***/ },

/***/ 177:
/***/ function(module, exports) {

	/*
	 * Tine 2.0
	 * 
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * @author      Lars Kneschke <l.kneschke@metaways.de>
	 * @copyright   Copyright (c) 2014-2015 Metaways Infosystems GmbH (http://www.metaways.de)
	 */
	 
	/*global Ext, Tine*/
	
	Ext.ns('Tine.ActiveSync.syncdevices');
	
	/**
	 * @namespace   Tine.ActiveSync.syncdevices
	 * @class       Tine.ActiveSync.SyncDeviceEditDialog
	 * @extends     Tine.widgets.dialog.EditDialog
	 * 
	 * <p>Sync devices edit dialog</p>
	 * <p>
	 * </p>
	 * 
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * @author      Lars Kneschke <l.kneschke@metaways.de>
	 * 
	 * @param       {Object} config
	 * @constructor
	 * Create a new Tine.Admin.SyncDeviceEditDialog
	 */
	Tine.ActiveSync.SyncDeviceEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, {
	    
	    /**
	     * @private
	     */
	    windowNamePrefix: 'syncdeviceEditWindow_',
	    appName: 'ActiveSync',
	    recordClass: Tine.ActiveSync.Model.SyncDevice,
	    recordProxy: Tine.ActiveSync.syncdevicesBackend,
	    evalGrants: false,
	    
	    /**
	     * executed after record got updated from proxy
	     */
	    onRecordLoad: function () {
	        Tine.ActiveSync.SyncDeviceEditDialog.superclass.onRecordLoad.apply(this, arguments);
	    },
	    
	    /**
	     * executed when record gets updated from form
	     */
	    onRecordUpdate: function () {
	        Tine.ActiveSync.SyncDeviceEditDialog.superclass.onRecordUpdate.apply(this, arguments);
	    },
	    
	    /**
	     * returns dialog
	     */
	    getFormItems: function () {
	        return {
	            layout: 'vbox',
	            layoutConfig: {
	                align: 'stretch',
	                pack: 'start'
	            },
	            border: false,
	            items: [{
	                xtype: 'columnform',
	                border: false,
	                autoHeight: true,
	                items: [
	                    [{
	                        columnWidth: 0.33,
	                        fieldLabel: this.app.i18n._('Device ID'),
	                        name: 'deviceid',
	                        allowBlank: false,
	                        readOnly: true,
	                        maxLength: 40
	                    }, {
	                        columnWidth: 0.33,
	                        fieldLabel: this.app.i18n._('Devicetype'),
	                        name: 'devicetype',
	                        allowBlank: false,
	                        readOnly: true,
	                        maxLength: 40
	                    }, {
	                        columnWidth: 0.333,
	                        fieldLabel: this.app.i18n._('Owner'),
	                        name: 'owner_id',
	                        allowBlank: false,
	                        xtype: 'addressbookcontactpicker',
	                        userOnly: true,
	                        useAccountRecord: true,
	                        blurOnSelect: true,
	                        selectOnFocus: true,
	                        readOnly: true,
	                        maxLength: 40
	                    }], [{
	                        columnWidth: 0.33,
	                        fieldLabel: this.app.i18n._('Policy'),
	                        name: 'policy_id',
	                        readOnly: true,
	                        maxLength: 40
	                    }, {
	                        columnWidth: 0.33,
	                        fieldLabel: this.app.i18n._('AS Version'),
	                        name: 'acsversion',
	                        readOnly: true,
	                        maxLength: 40
	                    }, {
	                        columnWidth: 0.333,
	                        fieldLabel: this.app.i18n._('Useragent'),
	                        name: 'useragent',
	                        readOnly: true,
	                        maxLength: 40
	                    }], [{
	                        columnWidth: 0.33,
	                        fieldLabel: this.app.i18n._('Model'),
	                        name: 'model',
	                        readOnly: true,
	                        maxLength: 40
	                    }, {
	                        columnWidth: 0.33,
	                        fieldLabel: this.app.i18n._('IMEI'),
	                        name: 'imei',
	                        readOnly: true,
	                        maxLength: 40
	                    }, {
	                        columnWidth: 0.333,
	                        fieldLabel: this.app.i18n._('Friendly Name'),
	                        name: 'friendlyname',
	                        readOnly: true,
	                        maxLength: 40
	                    }], [{
	                        columnWidth: 0.33,
	                        fieldLabel: this.app.i18n._('OS'),
	                        name: 'os',
	                        readOnly: true,
	                        maxLength: 40
	                    }, {
	                        columnWidth: 0.33,
	                        fieldLabel: this.app.i18n._('OS Language'),
	                        name: 'oslanguage',
	                        readOnly: true,
	                        maxLength: 40
	                    }, {
	                        columnWidth: 0.333,
	                        fieldLabel: this.app.i18n._('Phonenumber'),
	                        name: 'phonenumber',
	                        readOnly: true,
	                        maxLength: 40
	                    }]
	                ]
	            }]
	        };
	    }
	});
	
	/**
	 * Container Edit Popup
	 * 
	 * @param   {Object} config
	 * @return  {Ext.ux.Window}
	 */
	Tine.ActiveSync.SyncDeviceEditDialog.openWindow = function (config) {
	    var window = Tine.WindowFactory.getWindow({
	        width: 600,
	        height: 400,
	        name: Tine.ActiveSync.SyncDeviceEditDialog.prototype.windowNamePrefix + Ext.id(),
	        contentPanelConstructor: 'Tine.ActiveSync.SyncDeviceEditDialog',
	        contentPanelConstructorConfig: config
	    });
	    return window;
	};


/***/ },

/***/ 178:
/***/ function(module, exports) {

	/*
	 * Tine 2.0
	 *
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * @copyright   Copyright (c) 2010-2012 Metaways Infosystems GmbH (http://www.metaways.de)
	 * @author      Cornelius Weiss <c.weiss@metaways.de>
	 */
	Ext.ns('Tine.ActiveSync.Model');
	
	
	/**
	 * @namespace   Tine.ActiveSync.Model
	 * @class       Tine.ActiveSync.Model.Device
	 * @extends     Tine.Tinebase.data.Record
	 * 
	 * @author      Cornelius Weiss <c.weiss@metaways.de>
	 * Device record definition
	 */
	Tine.ActiveSync.Model.Device = Tine.Tinebase.data.Record.create(Tine.Tinebase.Model.modlogFields.concat([
	    { name: 'id' },
	    { name: 'deviceid'},
	    { name: 'devicetype' },
	    { name: 'policykey' },
	    { name: 'owner_id' },
	    { name: 'acsversion' },
	    { name: 'useragent' },
	    { name: 'policy_id' },
	    { name: 'pinglifetime', type: 'number' },
	    { name: 'remotewipe', type: 'number' },
	    { name: 'pingfolder' },
	    { name: 'model' },
	    { name: 'imei' },
	    { name: 'friendlyname' },
	    { name: 'os'},
	    { name: 'oslanguage' },
	    { name: 'phonenumber' }
	]), {
	    appName: 'ActiveSync',
	    modelName: 'Device',
	    idProperty: 'id',
	    titleProperty: 'friendlyname',
	    // ngettext('Device', 'Devices', n); gettext('Devices');
	    recordName: 'Device',
	    recordsName: 'Devices',
	    
	    /**
	     * returns title of this record
	     * 
	     * @return {String}
	     */
	    getTitle: function() {
	        return this.get('friendlyname') || this.get('useragent');
	    }
	});
	
	
	/**
	 * @namespace   Tine.ActiveSync.Model
	 * @class       Tine.ActiveSync.Model.Device
	 * @extends     Tine.Tinebase.data.Record
	 * 
	 * @author      Cornelius Weiss <c.weiss@metaways.de>
	 * 
	 * get content type of app
	 * 
	 * @static
	 * @param {String} appName
	 * @return {String}
	 */
	Tine.ActiveSync.Model.getContentClass = function(appName) {
	    switch(appName) {
	        case 'Calendar'   : return 'Calendar';
	        case 'Addressbook': return 'Contacts';
	        case 'Felamimail' : return 'Email';
	        case 'Tasks'      : return 'Tasks';
	        default: throw new Ext.Error('no contentClass for this app');
	    }
	};
	
	/**
	 * @namespace   Tine.ActiveSync.Model
	 * @class       Tine.ActiveSync.Model.DeviceJsonBackend
	 * @extends     Tine.Tinebase.data.RecordProxy
	 * 
	 * @author      Cornelius Weiss <c.weiss@metaways.de>
	 * JSON backend for devices
	 */
	Tine.ActiveSync.Model.DeviceJsonBackend = Ext.extend(Tine.Tinebase.data.RecordProxy, {
	    
	    /**
	     * Creates a recuring event exception
	     * 
	     * @param {Tine.Calendar.Model.Event} event
	     * @param {Boolean} deleteInstance
	     * @param {Boolean} deleteAllFollowing
	     * @param {Object} options
	     * @return {String} transaction id
	     */
	    setDeviceContentFilter: function(device, contentClass, filterId) {
	        options = options || {};
	        options.params = options.params || {};
	        options.beforeSuccess = function(response) {
	            return [this.recordReader(response)];
	        };
	        
	        var p = options.params;
	        p.method = this.appName + '.setDeviceContentFilter';
	        p.deviceId = event.data;
	        p.contentClass = contentClass;
	        p.filterId = filterId;
	        
	        return this.doXHTTPRequest(options);
	    }
	});


/***/ },

/***/ 179:
/***/ function(module, exports) {

	/*
	 * Tine 2.0
	 * 
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * @author      Lars Kneschke <l.kneschke@metaways.de>
	 * @copyright   Copyright (c) 2014-2015 Metaways Infosystems GmbH (http://www.metaways.de)
	 */
	
	/*global Ext, Tine*/ 
	
	Ext.ns('Tine.ActiveSync.syncdevices');
	
	/**
	 * Containers 'mainScreen'
	 * 
	 * @static
	 */
	Tine.ActiveSync.syncdevices.show = function () {
	    var app = Tine.Tinebase.appMgr.get('ActiveSync');
	    if (! Tine.ActiveSync.syncDevicesGridPanel) {
	        Tine.ActiveSync.syncDevicesGridPanel = new Tine.ActiveSync.SyncDevicesGridPanel({
	            app: app,
	            asAdminModule: true
	        });
	    } else {
	        Tine.ActiveSync.syncDevicesGridPanel.loadGridData.defer(100, Tine.ActiveSync.syncDevicesGridPanel, []);
	    }
	    
	    Tine.Tinebase.MainScreen.setActiveContentPanel(Tine.ActiveSync.syncDevicesGridPanel, true);
	    Tine.Tinebase.MainScreen.setActiveToolbar(Tine.ActiveSync.syncDevicesGridPanel.actionToolbar, true);
	};
	
	/************** models *****************/
	Ext.ns('Tine.ActiveSync.Model');
	
	/**
	 * Model of an account
	 */
	Tine.ActiveSync.Model.SyncDeviceArray = [
	    { name: 'id' },
	    { name: 'deviceid' },
	    { name: 'devicetype' },
	    { name: 'owner_id' },
	    { name: 'policy_id' },
	    //{ name: 'policykey' },
	    { name: 'acsversion' },
	    { name: 'useragent' },
	    { name: 'model' },
	    { name: 'imei' },
	    { name: 'friendlyname' },
	    { name: 'os' },
	    { name: 'oslanguage' },
	    { name: 'phonenumber' },
	    { name: 'pinglifetime' },
	    { name: 'pingfolder' },
	    { name: 'remotewipe' },
	    { name: 'calendarfilter_id' },
	    { name: 'contactsfilter_id' },
	    { name: 'emailfilter_id' },
	    { name: 'tasksfilter_id' },
	    { name: 'lastping', type: 'date', dateFormat: Date.patterns.ISO8601Long }
	];
	
	Tine.ActiveSync.Model.SyncDevice = Tine.Tinebase.data.Record.create(Tine.ActiveSync.Model.SyncDeviceArray, {
	    appName: 'ActiveSync',
	    modelName: 'SyncDevice',
	    idProperty: 'id',
	    //titleProperty: 'name',
	    titleProperty: 'deviceid',
	    // ngettext('SyncDevice', 'SyncDevices', n);
	    recordName: 'SyncDevice',
	    recordsName: 'SyncDevices'
	});
	
	/**
	 * returns default account data
	 * 
	 * @namespace Tine.ActiveSync.Model.SyncDevice
	 * @static
	 * @return {Object} default data
	 */
	Tine.ActiveSync.Model.SyncDevice.getDefaultData = function () {
	    return {};
	};
	
	/************** backend *****************/
	
	Tine.ActiveSync.syncdevicesBackend = new Tine.Tinebase.data.RecordProxy({
	    appName: 'ActiveSync',
	    modelName: 'SyncDevice',
	    recordClass: Tine.ActiveSync.Model.SyncDevice,
	    idProperty: 'id'
	});


/***/ },

/***/ 180:
/***/ function(module, exports) {

	/*
	 * Tine 2.0
	 * 
	 * @package     ActiveSync
	 * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
	 * @author      Stefanie Stamer <s.stamer@metaways.de>
	 * @copyright   Copyright (c) 2015 Metaways Infosystems GmbH (http://www.metaways.de)
	 *
	 */
	 
	Ext.ns('Tine.ActiveSync');
	
	/**
	 * @namespace Tine.ActiveSync
	 * @class     Tine.ActiveSync.SyncDevicesGridPanel
	 * @extends   Tine.widgets.grid.GridPanel
	 * SyncDevicess Grid Panel <br>
	 * 
	 * @author      Cornelius Weiss <c.weiss@metaways.de>
	 */
	Tine.ActiveSync.SyncDevicesGridPanel = Ext.extend(Tine.widgets.grid.GridPanel, {
	    /**
	     * @cfg
	     */
	    recordClass: Tine.ActiveSync.Model.SyncDevice,
	    recordProxy: Tine.ActiveSync.syncdevicesBackend,
	    defaultSortInfo: {field: 'deviceid', direction: 'ASC'},
	    evalGrants: false,
	    gridConfig: {
	        autoExpandColumn: 'deviceid'
	    },
	    addButton: false,
	    asAdminModule: false,
	    
	    /**
	     * initComponent
	     */
	    initComponent: function() {
	        this.app = Tine.Tinebase.appMgr.get('ActiveSync');
	        this.gridConfig.cm = this.getColumnModel();
	        Tine.ActiveSync.SyncDevicesGridPanel.superclass.initComponent.call(this);
	    },
	    
	    /**
	     * returns column model
	     * 
	     * @return Ext.grid.ColumnModel
	     * @private
	     */
	    getColumnModel: function() {
	        return new Ext.grid.ColumnModel({
	            defaults: {
	                sortable: true,
	                hidden: true,
	                resizable: true
	            },
	            columns: this.getColumns()
	        });
	    },
	    
	    /**
	     * returns columns
	     * @private
	     * @return Array
	     */
	    getColumns: function(){
	        return [
	            { header: this.app.i18n._('ID'),             id: 'id',                dataIndex: 'id',                hidden: true,  width: 50},
	            { header: this.app.i18n._('Device ID'),      id: 'deviceid',          dataIndex: 'deviceid',          hidden: false, width: 200},
	            { header: this.app.i18n._('Devicetype'),     id: 'devicetype',        dataIndex: 'devicetype',        hidden: false, width: 100},
	            { header: this.app.i18n._('Owner'),          id: 'owner_id',          dataIndex: 'owner_id',          hidden: false, width: 80,  renderer: Tine.Tinebase.common.usernameRenderer},
	            { header: this.app.i18n._('Policy'),         id: 'policy_id',         dataIndex: 'policy_id',         hidden: false, width: 200},
	            { header: this.app.i18n._('AS Version'),     id: 'acsversion',        dataIndex: 'acsversion',        hidden: false, width: 100},
	            { header: this.app.i18n._('Useragent'),      id: 'useragent',         dataIndex: 'useragent',         hidden: true,  width: 200},
	            { header: this.app.i18n._('Model'),          id: 'model',             dataIndex: 'model',             hidden: false, width: 200},
	            { header: this.app.i18n._('IMEI'),           id: 'imei',              dataIndex: 'imei',              hidden: true,  width: 200},
	            { header: this.app.i18n._('Friendly Name'),  id: 'friendlyname',      dataIndex: 'friendlyname',      hidden: false, width: 200},
	            { header: this.app.i18n._('OS'),             id: 'os',                dataIndex: 'os',                hidden: false, width: 200},
	            { header: this.app.i18n._('OS Language'),    id: 'oslanguage',        dataIndex: 'oslanguage',        hidden: true,  width: 200},
	            { header: this.app.i18n._('Phonenumber'),    id: 'phonenumber',       dataIndex: 'phonenumber',       hidden: false, width: 200},
	            { header: this.app.i18n._('Ping Lifetime'),  id: 'pinglifetime',      dataIndex: 'pinglifetime',      hidden: true,  width: 200},
	            //{ header: this.app.i18n._('Ping Folder'),    id: 'pingfolder',        dataIndex: 'pingfolder',        hidden: false, width: 200},
	            { header: this.app.i18n._('Remote Wipe'),    id: 'remotewipe',        dataIndex: 'remotewipe',        hidden: false, width: 100},
	            { header: this.app.i18n._('Calendarfilter'), id: 'calendarfilter_id', dataIndex: 'calendarfilter_id', hidden: true,  width: 200},
	            { header: this.app.i18n._('Contactsfilter'), id: 'contactsfilter_id', dataIndex: 'contactsfilter_id', hidden: true,  width: 200},
	            { header: this.app.i18n._('Emailfilter'),    id: 'emailfilter_id',    dataIndex: 'emailfilter_id',    hidden: true,  width: 200},
	            { header: this.app.i18n._('Tasksfilter'),    id: 'tasksfilter_id',    dataIndex: 'tasksfilter_id',    hidden: true,  width: 200},
	            { header: this.app.i18n._('Last Ping'),      id: 'lastping',          dataIndex: 'lastping',          hidden: false, width: 200, renderer: Tine.Tinebase.common.dateTimeRenderer}
	        ];
	    },
	        /**
	     * initialises filter toolbar
	     */
	    initFilterPanel: function() {
	        this.filterToolbar = new Tine.widgets.grid.FilterToolbar({
	            filterModels: [
	                {label: this.app.i18n._('Quicksearch'),     field: 'query',    operators: ['contains']},
	                {label: this.app.i18n._('Device ID'),       field: 'deviceid', operators: ['contains']}
	            ],
	            defaultFilter: 'query',
	            /*filters: [
	                {field: 'deviceid', operator: 'equals', value: 'shared'}
	            ],*/
	            plugins: [
	                new Tine.widgets.grid.FilterToolbarQuickFilterPlugin()
	            ]
	        });
	        this.plugins = this.plugins || [];
	        this.plugins.push(this.filterToolbar);
	    },
	    
	    initLayout: function() {
	        this.supr().initLayout.call(this);
	        
	        if (! this.asAdminModule) {
	            this.items.push({
	                region : 'north',
	                height : 55,
	                border : false,
	                items  : this.actionToolbar
	            });
	        }
	    }
	});


/***/ },

/***/ 559:
/***/ function(module, exports, __webpack_require__) {

	exports = module.exports = __webpack_require__(1)();
	// imports
	
	
	// module
	exports.push([module.id, ".ActiveSyncIconCls{background-image:url(" + __webpack_require__(788) + ")!important}.x-btn-medium .ActiveSyncIconCls{background-image:url(" + __webpack_require__(1155) + ")!important}.x-btn-large .ActiveSyncIconCls{background-image:url(" + __webpack_require__(1518) + ")!important}.activesync-device-standard{background-image:url(" + __webpack_require__(839) + ")!important}.x-btn-medium .activesync-device-standard{background-image:url(" + __webpack_require__(1203) + ")!important}.x-btn-large .activesync-device-standard{background-image:url(" + __webpack_require__(1563) + ")!important}", ""]);
	
	// exports


/***/ },

/***/ 646:
/***/ function(module, exports, __webpack_require__) {

	// style-loader: Adds some css to the DOM by adding a <style> tag
	
	// load the styles
	var content = __webpack_require__(559);
	if(typeof content === 'string') content = [[module.id, content, '']];
	// add the styles to the DOM
	var update = __webpack_require__(2)(content, {});
	if(content.locals) module.exports = content.locals;
	// Hot Module Replacement
	if(false) {
		// When the styles change, update the <style> tags
		if(!content.locals) {
			module.hot.accept("!!../../Tinebase/js/node_modules/css-loader/index.js!./ActiveSync.css", function() {
				var newContent = require("!!../../Tinebase/js/node_modules/css-loader/index.js!./ActiveSync.css");
				if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
				update(newContent);
			});
		}
		// When the module is disposed, remove the <style> tags
		module.hot.dispose(function() { update(); });
	}

/***/ },

/***/ 788:
/***/ function(module, exports) {

	module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAABuwAAAbsBOuzj4gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAALTSURBVDiNbZLNS1RRGMafe+7X3LlybXTSZnETchSUqIYg6AN08m9QmLYunJW0kQuFQriRFuFmSGYhpKtcREE7EQRDMhxKQmYWoiIiw4SpNTP363y0iJkS5sDLeV54znt+h/NIQgi0WrlcLpNMJqcB4ODgYC6bzS618pH/m6mpqWsNbVnWk3Q6PZBOpwfa2toyrTwAIDUI8vn8i6GhoeeHh4ffZFkOe3p67iYSCRUATk5O6P7+/pdIJGLatn1zfX395fj4+LPmgOnp6djo6OiP7u5umRACQv6CMcYAAIqiQAjRrHK5zFZWVq7Ozs6eNQmWl5e/Dg8P39E0Da7rghAC13UhhEAkEmnujDFsbGx8z2QytwBAabzF87zfvu+jXq9DkiQoitK8OQxDhGEISik456jVatXGObm9vT1TKpVe9fb2PjIMQ/Y8D0IIVCqVoFAofDg6Oirpun7DNE3F9324rgvDMBKbm5vDa2trXFFV9eng4OA9TdPAOYcQApxz7O7uvstmsxkAWFxcfNvZ2TnWoOvq6lI6Ojoeb21tXSGUUikIAgRBAMYYhBBgjIFz7jcwgyAIqtUqPM+DaZpgjCEIAoRhCHlkZOTXxcVFu6qqPbquE0IIGGOwLGtgdXV1YGdnZyyZTI5SSuVYLAbOOSqVCtvb21s/Pz9/3fyFXC73KZVKPTRNE77vgxACzjkopdB1HdFoFABQq9VQKBQ+T0xM3L+UREJIRAiBer0OADg9PQWlFJZlIRqNwjRNaJoGQggkSdIuRdlxnHhfX98dWZahqioMw4Bt24jH49B1HYqiwPd9MMag6zr6+/tvO44TvxTl+fn5mVQqNVMul3cAVG3bfhCLxRRJknB2dkaPj4+3CCHRRCJxa3t7e3ZycvIFAFyKqOM4HQ29sLDwvlgsilKpJPL5/MdWHiHEvyQCwNzc3M+GDsPwTbFYvC5JElzXXWrlAYA/q9B7+Xx34xMAAAAASUVORK5CYII="

/***/ },

/***/ 839:
/***/ function(module, exports) {

	module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAABuwAAAbsBOuzj4gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAG6SURBVHjajZK9ahtBFIXP3ZnZXbRa9GeUGK3BwZIRLtykjF7BYAwSeQQ9TAp3AtXq3fgF1KR1oSpNQCSNgywlstGs9jczAwZHBHYPLDvFved+M/dQnud4FRFhMpncTqfTmziOo81ms3ddl/u+b3e73T/D4fBmNBp9xxtZ+Fc0GAyupZQnnuedBUFw0Wq1zpM0Pa3VapfNZvMcB+I4kCKi7OIznj98QpzkeHqJ4NkcjO6RJAnhQBb+I8YIglmQcYo0yxE0XRCgDawiA0NAZEFYDHlGOK47EJzUOcN+v2elCHYyxONWwhWE97UKfjyFABHSNC28gilwbBtn76rY7CI8hxFavlBk0AS81CP6tMOv5TcEDPj9M4TncFgiMwRFBkYPd190MTjnJhvtdht0dVXqEY3q9bppns1mUFlAGIbGMMuyUgSkmo3JeDzWU1GpVMAYQxRFvIjANKj4GvRGo2HO1WpVT4eKNysi0KhWp9PBer02BrZtm7+iKpVEUkUaV082n+M4r9vRVxCFBNpgsVhACIHVaqV3rxvR6/XMFooM8vl8/rXf73+UUj5ut9udwhcK/0gbL5cqHAf6Cymywdp4lPR6AAAAAElFTkSuQmCC"

/***/ },

/***/ 1155:
/***/ function(module, exports) {

	module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACYQAAAmEBwTBV+gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAARkSURBVDiNhVTPa1RXFP7ur/deRhjnJczUkMaUdjYVpsYuLJTuNAFX/gdCpRZChZQUJqWGWYgJRBoyoSNoV9nYtZsuTKiuJphKA00gUGzBRjORYWaSPOcl79e9twt9j8wo9cHh/bjvfOc75zvnEK013nXdvXv3p+PHj39KCCHNZvP3S5cufftOJ631/1qxWCSPHj3yXdfVruvq1dVVv1gsknf50e5A5XL560qlUozfOecfZTIZzhgDYwzpdJpzzvPx+eLiYunOnTvfdOOQo6WoVCpzo6Oj44Zh0MePH//a19d30rbtU/l8nh912trakrVabcP3/frp06dHwjDU9+/fXxgbG5t4A3hmZubyxYsXf87lcowQAsYY4jNCyFtLGN+VUqjX6/LevXtfXbt2bREAEiY9PT19SikahiE459BagxAC3/c7ggCAlBKmaSb1jKIIURTRVCqVfWspbt++vXzhwoXzjDEYhoH9/X1EUQTTNDuYep4HSikymQyUUvA8D0tLS7+NjY2dT7Q5mh5j7L0oiqCUguM4ME0TlmV1pA4AQggopbC3twfLsnB4eAghRPYoFtFaY3JykkgpB0dHR/8ZGhriAHB4eAjTNGGaJur1umo2m3UAyGQyuWw2S5VSCMMQAOB5HprNZlitVj8MgmB7dnZWk3K5PJ3P578TQoj+/n7KGINSClJKMMawu7urHj58+HmpVFoFgOvXr382MjKykslkqOd5CIIg1giNRkNFURQ+efJknvq+f6q3t9e0bZtGUQQpZaK01hrPnj2rxaAAUCqVVnd2dnbCMMTBwQGklDAMA4QQ2LZNbds2Xdf9OEnptbKQUoIQAqVUDB51t5rv+9J1XRwcHCCVSkEIASllgqG1Bo2iaK3VaoWO46j4AEASZHBw8OSNGzeGY9Dp6ekz2Wz2/RjUsqwEcH9/XzUajTAMwz8S8TjnJ8+ePft3LpfjlmVBSgkpJYQQ8H1fPX/+/F+tNTlx4sSQZVlEKQXLskApRRAEqNfrUbVazUdRtDU7O6u7+3i9UCgUOOc4duwY2u02KKWQUiaCxiwJIRBCoN1uIwxDrK+vb1y5cuWTGKtjCbXb7W1KafwMIQQ8z4PjOACAdDoN0zQhhEA6nYYQAowxUErhOE7tjT4GgLm5uYlCofCjYRgk3hWGYaCnpyf5mVIKznkyIMCr8XZdFy9fvtQbGxvfX7169WbH5GmtdwkhKpVKMc45KKUJG0JIYgAQhmHH7n3dFUpK2XiDMQDMz8/PDA8PFw3DoE+fPl3inNsDAwNnent7BfBqy2mt0Wq1whcvXvwZBEErn8+P+L6v1tbWbo6Pj/+AI0w7bGFh4ctbt25NvA5IpqamPqhWq3Jzc1Nvbm7qlZUVOTU1lY9JVSqViXK5fLkbp4NxR/EJSQGwGWP28vLy2sDAgACAWq0Wnjt37gullANgD0BLax10+/PuD0exAWgpJR48ePBLf3//Ka012d7e/ksppQFEAAIA8m3O/wFXFMSscJy9fgAAAABJRU5ErkJggg=="

/***/ },

/***/ 1203:
/***/ function(module, exports) {

	module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACYQAAAmEBwTBV+gAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAKqSURBVHjanVVNSxtRFD0zk/lwzJexTZSWqKXZBBcKVgTBduEm+E+6dttFN/0L/RmF0r3gwkViaRaBthRcVErUmmSamSST+ey7F6ootvg6cHmX9+4798y5972npGmK29/+/n6h1+u9aTabNdd1A7LhcDi1bVvP5/NGLpczlpeX3d3d3Vci9gvu+DJ3TW5tbdUFyMujoyOsra1BURSeJxKWZeHk5AT1eh2rq6sdAK/vDTydTlUBDJg5fP0xJEA2RVXhul0MnQGei2RJkqgUf2/gMAx5g1ZrQHvyAnGSIoxTDEahGGM8nXGhqp/+CXzXAm1QeFEwzKgKmx/GcP0IlfwMCrbBcXEcK1LAvu9rNCqKANZUUHkdL0A5p6MyZ2I8jWhZnnEURTwPpIKtil/jCOW8hVlLhyGSDT3/TzFlGPMv8rw3nuDM8WGbGrN+mLNw6kyEzsmNOGmNs/YMFoomHs9ZcMYBgihhvYtZ8ypOApjbjTWe+AFUTUHPC1FbyCMj/DhKcTEY0bJsu11rV8qM0Pv2EadnP1GrVtAfTfCgaMOOLyhGFvi6jdof3lJP88n7rOu89l3Y5uYmkkfPWAoJYO4KjXp4Z2eHgYMgwMbGBg4PD1EsFjmRuC+ItXzxhKHT6eD4+Bjk7+3todvtot1uQ1xO8DxPmvHVhvPzcxoYqNFo3JaLTJOWgoqzvr6OwWDAclQqFU5UKBS4cIZhUJwiWzyVNi8tLaFcLjN4qVSCruukMQGSzwSkgYUhm81SoejuIJ+KSPcxAf5XuzETYTg4OGAZKMn8/Dz6/T5JwMVcWVmhv5ECZiYEfHl5eePlcF33dvHk201soqPNElSrVfJ5XFxcZJ8SS3dFq9Vqisfz/fb2tu04ji/8sWAdCY0N0zR1cfJmRU+rokve/Q34N2vdnEnfaNDVAAAAAElFTkSuQmCC"

/***/ },

/***/ 1518:
/***/ function(module, exports) {

	module.exports = "data:image/png;base64,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"

/***/ },

/***/ 1563:
/***/ function(module, exports) {

	module.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAADdgAAA3YBfdWCzAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAARPSURBVHjatVc7TyNXFP7m5be92EAMSATY8GhoEhQEJSgC8T/o0tBFWilpUaT8CBq6VKloiFZiFSEqE6ENj0hEQPBijLEx9tjjeeR+VzuK2YcouBzpaOZ67pzH951zfMcMggCfE03TeIkL/VZo5lNb8GkpCy0I2zYeEfOR59rm5uYPY2NjPy0tLWnpdBrJZBIM2vd9XhmkVF3X0Wg0UK/Xsb29HZyenr4Sv/8cCHlSAIZhJCzL0vr6+jAyMgJeKR/azefzODg4wO7uLrjfNM0UKE9EgJnq4X3xqozLdyVQ/MCHyJ08SSYqO3+g0bSJRhigpioADZQXXyLy3Y+gWc8HND+AJ1TXNVQbHbnORw04v33f/R71SRQwE/39HXmmNXpHIBzDB0q1FlwPSMcsvPwihb8t63kQILSmoYl1AE0E4gsY6nYHjbaPXMrCYDaKqGXAc72PqHsqAu9JhYQbkByg4waoNBxk4hZ6EhFkk5YIxuXGMAC1CATcLFBgXg6hv2vTuXDMAAzEIgau72wGrBQBLawBYZk80DDubBe2yPbrsRxqTUfyX6k7aDoeA1BbA6Eh13VRuW/D8wKZ/TcvszgrN5B/ERNx6biqiewRPGhfpXNANwTMlgHX8DE5kEYqZspgopaOfysNmEaAeMRES9OfaQ4Q2gDCKTDUH8Prv0owdR25pIWmoCMVN9B2fLHfezAHFFLgwRaaTVhodXxETQMTgynomiFju73vwO64CP5/T20bGqaJmZEs3l7eCeeeHEoDmTj+PK+iN2miLxWBH0RwCKhtwzATr15C4fdf0XZdvC0WkYhF8K71FYJyGXeCe1snBW14TlMpAlqIQLn4D64ufoHneaDYloX9fTNsO4nIzMwM3HTyedrQcRx0S6fTkdot5+fnKBaL4XtQ2obz8/OIx+NotVqoVCpYXV3F8vIy1tbWcHFxgcHBQYnO0NDQ8/wX7O3tYWJiAoeHh6Dc3t5iZ2dHnoCOjo5wc3ODWq32oHaUtmE2m0W5XOaJSNKxsbGBUqkkuRdHNWbMK09DvCcaykdx9288/8nzIYXQ02m4j8+JgLJJSOOjo6Po7+/H9fU1ms0mYrEY10RBIjI8PEwKWJgMSNkcoHODBgkts+OVsFNtOzwDgkHROR2HFBjKKBDKFpNFeHZ2Jh2ZpomBgQFcXl7KjBOJBNEJs1d7IKHR2dlZRKNRFiMrngXHtmT7EXrSQSVKfEdZGzIjnQhsbW2xx2XGXBOB6elpMQ33pcPJyUn5rN1uK60BOpMILCwsgDI1NSUz7unpkfwvLi6yPSUavb294ReT0kGk0yiHThct7ALZGScnJ4RdFqUQIkMEwvbVVHQBVVY5JRKJIJfL4f7+HoVCAalUKqwLFmf3IFKCQCA4DWhwbm6Ow4fOmR25luN4fHwc1WqVNSDXmUyGAbBFfRUBuOvr66+Ebn3m8xzHx8cffa6vrKyUAbwR2sEj8h9TXt37cQ/szwAAAABJRU5ErkJggg=="

/***/ }

/******/ })
});
;