/******/ (function(modules) { // webpackBootstrap
/******/ 	// install a JSONP callback for chunk loading
/******/ 	var parentJsonpFunction = window["webpackJsonp"];
/******/ 	window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules) {
/******/ 		// add "moreModules" to the modules object,
/******/ 		// then flag all "chunkIds" as loaded and fire callback
/******/ 		var moduleId, chunkId, i = 0, callbacks = [];
/******/ 		for(;i < chunkIds.length; i++) {
/******/ 			chunkId = chunkIds[i];
/******/ 			if(installedChunks[chunkId])
/******/ 				callbacks.push.apply(callbacks, installedChunks[chunkId]);
/******/ 			installedChunks[chunkId] = 0;
/******/ 		}
/******/ 		for(moduleId in moreModules) {
/******/ 			modules[moduleId] = moreModules[moduleId];
/******/ 		}
/******/ 		if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);
/******/ 		while(callbacks.length)
/******/ 			callbacks.shift().call(null, __webpack_require__);
/******/ 		if(moreModules[0]) {
/******/ 			installedModules[0] = 0;
/******/ 			return __webpack_require__(0);
/******/ 		}
/******/ 	};

/******/ 	// The module cache
/******/ 	var installedModules = {};

/******/ 	// object to store loaded and loading chunks
/******/ 	// "0" means "already loaded"
/******/ 	// Array means "loading", array contains callbacks
/******/ 	var installedChunks = {
/******/ 		7:0
/******/ 	};

/******/ 	// 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;
/******/ 	}

/******/ 	// This file contains only the entry chunk.
/******/ 	// The chunk loading function for additional chunks
/******/ 	__webpack_require__.e = function requireEnsure(chunkId, callback) {
/******/ 		// "0" is the signal for "already loaded"
/******/ 		if(installedChunks[chunkId] === 0)
/******/ 			return callback.call(null, __webpack_require__);

/******/ 		// an array means "currently loading".
/******/ 		if(installedChunks[chunkId] !== undefined) {
/******/ 			installedChunks[chunkId].push(callback);
/******/ 		} else {
/******/ 			// start chunk loading
/******/ 			installedChunks[chunkId] = [callback];
/******/ 			var head = document.getElementsByTagName('head')[0];
/******/ 			var script = document.createElement('script');
/******/ 			script.type = 'text/javascript';
/******/ 			script.charset = 'utf-8';
/******/ 			script.async = true;

/******/ 			script.src = __webpack_require__.p + "" + chunkId + "." + ({"0":"account-detail","1":"answer-detail","2":"bootstrap","3":"browse","4":"chat","5":"dynamic-form","6":"forum"}[chunkId]||chunkId) + ".js";
/******/ 			head.appendChild(script);
/******/ 		}
/******/ 	};

/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;

/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;

/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/ })
/************************************************************************/
/******/ ([
/* 0 */,
/* 1 */,
/* 2 */
/***/ function(module, exports) {

	module.exports = jQuery;

/***/ },
/* 3 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var fizzy     = __webpack_require__(4),
	      immediate = __webpack_require__(5).Utils.immediate,
	      TEMPLATES = __webpack_require__(6);

	  var cache = {};
	  var callbacks = {};

	  function addToCache(name, context) {
	    cache[name] = context;
	    notifyListeners(name);
	  }

	  for (var key in TEMPLATES) {
	    fizzy.on('after', TEMPLATES[key], addToCache);
	  }

	  function notifyListeners(name) {
	    if (callbacks[name]) {
	      immediate(function() {
	        callbacks[name].forEach(function(fn) {
	          fn(cache[name]);
	        });
	      });
	    }
	  }

	  module.exports = function(template, callback) {
	    if (cache[template]) {
	      immediate(function() {
	        callback(cache[template]);
	      });
	    } else {
	      if (callbacks[template]) {
	        callbacks[template].push(callback);
	      } else {
	        callbacks[template] = [callback];
	      }
	    }
	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 4 */
/***/ function(module, exports) {

	module.exports = fs;

/***/ },
/* 5 */
/***/ function(module, exports) {

	module.exports = Frampton;

/***/ },
/* 6 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {

	  'use strict';

	  return {

	    // PAGES
	    BROWSE              : 'templates/pages/browse',
	    FORUM_HOME          : 'templates/pages/forum_home',
	    ANSWER_DETAIL       : 'templates/pages/answer_detail',
	    SEARCH_RESULTS      : 'templates/pages/search_results',
	    ACCOUNT_DETAIL      : 'templates/pages/account_detail',
	    ACCOUNT_OVERVIEW    : 'templates/pages/account_overview',
	    DYNAMIC_FORM        : 'templates/pages/dynamic_form',
	    FORUM_PROFILE       : 'templates/pages/forum_profile',
	    FORUM_DETAIL        : 'templates/pages/forum_question_detail',

	    // ROUTING PARTIALS
	    LOADING_MASK        : 'templates/partials/routing/loading_mask',
	    ERROR_PAGE          : 'templates/partials/routing/error_page',

	    // BROWSE PARTIALS
	    HOME                : 'templates/partials/browse/home',
	    BROWSE_DETAIL       : 'templates/partials/browse/answer_detail',

	    // TOPICS PARTIALS
	    TOPIC_GROUP         : 'templates/partials/browse/topics/group',
	    TOPIC_ENTITY        : 'templates/partials/browse/topics/entity',

	    // SAFETY CENTER PARTIALS
	    SAFETY_INDEX        : 'templates/partials/browse/safety/index',
	    SAFETY_GROUP        : 'templates/partials/browse/safety/group',
	    SAFETY_ENTITY       : 'templates/partials/browse/safety/entity',

	    // MOBILE APPS PARTIALS
	    MOBILE_APPS_INDEX   : 'templates/partials/browse/mobile-apps/index',
	    MOBILE_APPS_GROUP   : 'templates/partials/browse/mobile-apps/group',
	    MOBILE_APPS_ENTITY  : 'templates/partials/browse/mobile-apps/entity',

	    // ACOUNT DETAIL PARTIALS
	    REASON_MODAL        : 'templates/partials/account/reason_modal',
	    THREAD_LIST         : 'templates/partials/account/thread_list',
	    THREAD              : 'templates/partials/account/thread',

	    // OPEN CASES PARTIALS
	    CASES_BANNER        : 'templates/partials/open_cases/banner',
	    CASES_DETAIL        : 'templates/partials/open_cases/detail',

	    // OTHER PARTIALS
	    FEEDBACK            : 'templates/partials/feedback',
	    SEARCH              : 'templates/partials/search',
	    MODAL_MASK          : 'templates/partials/modal/mask',
	    RESULT_LIST         : 'templates/partials/smart-assistant/result_list',
	    NOTIFICATION        : 'templates/partials/notification',

	    // FORUM PARTIALS
	    UPVOTE_COUNT        : 'templates/partials/forum/post/upvote_count',
	    ACTION_MODAL        : 'templates/partials/forum/modal/action_modal',
	    EDIT_QUESTION_MODAL : 'templates/partials/forum/modal/edit_question_modal',
	    EDIT_ANSWER_MODAL   : 'templates/partials/forum/modal/edit_answer_modal',
	    REPORT_MODAL        : 'templates/partials/forum/modal/report_modal',
	    LOCK_MODAL          : 'templates/partials/forum/modal/lock_modal',
	    CONFIRMATION_MODAL  : 'templates/partials/forum/modal/confirmation_modal',
	    FORUM_POST          : 'templates/partials/forum/post/user_post',
	    CLOSE_QUESTION_MODAL  : 'templates/partials/forum/modal/close_question_modal'
	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ },
/* 7 */,
/* 8 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(9), __webpack_require__(10), __webpack_require__(5), __webpack_require__(11)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _play, _environment, _frampton, _javascriptsConfigPageKeys) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _play2 = _interopRequireDefault(_play);

	  var _ENV = _interopRequireDefault(_environment);

	  var _Fr = _interopRequireDefault(_frampton);

	  var _pagekeys = _interopRequireDefault(_javascriptsConfigPageKeys);

	  var curry = _Fr['default'].Utils.curry;

	  function urlBuilder(controller) {
	    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
	      args[_key - 1] = arguments[_key];
	    }

	    args.unshift(_ENV['default'].HC_PRODUCT);

	    var config = args.reduce(function (acc, next, index) {
	      acc['arg' + index] = next;
	      return acc;
	    }, { alias: controller });

	    return _play2['default'].url(config);
	  }

	  var withPageKey = function withPageKey() {
	    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
	      args[_key2] = arguments[_key2];
	    }

	    return appendPageKey(urlBuilder.apply(null, args), args[0]);
	  };

	  //+ appendPageKey :: String -> String
	  var appendPageKey = function appendPageKey(url, controller) {

	    var pageKey = _pagekeys['default'][controller] || _ENV['default'].GLOBAL.pageKey || _ENV['default'].INITIAL_PAGE_DATA.DATA.pageKey || "";

	    if (pageKey) {
	      return _play2['default'].addQueryParameter(url, 'page_key', pageKey);
	    } else {
	      return url;
	    }
	  };

	  var appendReferer = function appendReferer(url) {
	    if (_ENV['default'].GLOBAL.referralUrl) {
	      return _play2['default'].addQueryParameter(url, 'referer', _ENV['default'].GLOBAL.referralUrl);
	    } else {
	      return url;
	    }
	  };

	  var appendPath = function appendPath(url) {
	    if (_ENV['default'].GLOBAL.path) {
	      return _play2['default'].addQueryParameter(url, 'path', _ENV['default'].GLOBAL.path);
	    } else {
	      return url;
	    }
	  };

	  //+ csrf :: String -> String
	  var csrf = function csrf(url) {
	    return _play2['default'].addCsrfTokenToUrl(url);
	  };

	  //+ formattedUrl :: String -> String
	  var formattedUrl = function formattedUrl(url) {
	    return appendReferer(appendPath(url));
	  };

	  //+ toRequestUrl0 :: String -> String
	  var toRequestUrl0 = function toRequestUrl0(controller) {
	    return formattedUrl(csrf(withPageKey.call(null, controller)));
	  };

	  //+ toRequestUrl :: String -> Object -> String
	  var toRequestUrl = curry(function (controller, args) {
	    return formattedUrl(csrf(withPageKey.apply(null, arguments)));
	  });

	  //+ toGetRequestUrl :: String -> Object -> String
	  var toGetRequestUrl = curry(function (controller, args) {
	    return formattedUrl(withPageKey.apply(null, arguments));
	  });

	  //+ toGetRequestUrl0 :: String -> Object -> String
	  var toGetRequestUrl0 = function toGetRequestUrl0(controller) {
	    return formattedUrl(withPageKey.call(null, controller));
	  };

	  //+ toBaseUrl :: String -> String
	  var toBaseUrl = curry(function (controller, args) {
	    return urlBuilder.apply(null, arguments);
	  });

	  //+ toBaseUrl0 :: String -> String
	  var toBaseUrl0 = function toBaseUrl0(controller) {
	    return urlBuilder.call(null, controller);
	  };

	  //+ localizedUrl :: String -> String
	  var localizedUrl = function localizedUrl(url) {
	    return _play2['default'].addQueryParameter(url, 'lang', _ENV['default'].GLOBAL.locale.code);
	  };

	  module.exports = {

	    localizedUrl: localizedUrl,

	    toGetRequestUrl: toGetRequestUrl,

	    toGetRequestUrl0: toGetRequestUrl0,

	    toRequestUrl0: toRequestUrl0,

	    toRequestUrl: toRequestUrl,

	    toBaseUrl: toBaseUrl,

	    toBaseUrl0: toBaseUrl0,

	    csrf: csrf

	  };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 9 */
/***/ function(module, exports) {

	module.exports = play;

/***/ },
/* 10 */
/***/ function(module, exports) {

	module.exports = __HC.ENV;

/***/ },
/* 11 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(12)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _javascriptsConfigRoutes) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _ROUTES = _interopRequireDefault(_javascriptsConfigRoutes);

	  var PAGE_KEYS = {};

	  PAGE_KEYS[_ROUTES['default'].TOPICS_HOME] = 'hc_home';
	  PAGE_KEYS[_ROUTES['default'].TOPICS_GROUP_API] = 'hc_browse_topic_group';
	  PAGE_KEYS[_ROUTES['default'].TOPICS_API] = 'hc_browse_topic';
	  PAGE_KEYS[_ROUTES['default'].TOPICS_ENTITY_API] = 'hc_browse_entity';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_API] = 'hc_safety';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_TOPIC_GROUP_API] = 'hc_safety_topic_group';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_TOPIC_API] = 'hc_safety_topic';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_ENTITY_API] = 'hc_safety_entity';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_REPORT_PROBLEM_API] = 'hc_search_entity';
	  PAGE_KEYS[_ROUTES['default'].MOBILE_APPS_API] = 'hc_mobile_apps';
	  PAGE_KEYS[_ROUTES['default'].MOBILE_APPS_TOPIC_GROUP_API] = 'hc_mobile_apps_topic_group';
	  PAGE_KEYS[_ROUTES['default'].MOBILE_APPS_TOPIC_API] = 'hc_mobile_apps_topic';
	  PAGE_KEYS[_ROUTES['default'].MOBILE_APPS_ENTITY_API] = 'hc_mobile_apps_entity';

	  module.exports = Object.freeze(PAGE_KEYS);
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 12 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {

	  'use strict';

	  return {

	    //PAGES
	    HOME                        : 'controllers.Home.index',
	    SEARCH                      : 'controllers.Answer.search',
	    THANK_YOU                   : 'controllers.DynamicForm.thankYou',

	    TOPIC                       : 'controllers.Topics.topic',
	    TOPIC_GROUP                 : 'controllers.Topics.topicGroup',

	    FORUM_HOME                  : 'controllers.Forum.index',
	    FORUM_QUESTION              : 'controllers.Forum.questionDetail',

	    SAFETY_INDEX                : 'controllers.Safety.index',
	    SAFETY_TOPIC_GROUP          : 'controllers.Safety.topicGroup',
	    SAFETY_ENTITY               : 'controllers.Safety.entity',
	    SAFETY_REPORT_PROBLEM       : 'controllers.Safety.report',

	    MOBILE_APPS_INDEX           : 'controllers.MobileApps.index',
	    MOBILE_APPS_TOPIC_GROUP     : 'controllers.MobileApps.topicGroup',
	    MOBILE_APPS_ENTITY          : 'controllers.MobileApps.entity',

	    //APIS
	    SMART_ASSIST                : 'controllers.api.SmartAssistant.get',
	    SMART_HELPFUL               : 'controllers.api.SmartAssistant.helpful',
	    SMART_UNHELPFUL             : 'controllers.api.SmartAssistant.unhelpful',
	    SMART_IGNORED               : 'controllers.api.SmartAssistant.ignored',

	    OPEN_CASES                  : 'controllers.api.Client.getOpenCases',

	    SEARCH_API                  : 'controllers.api.Answer.search',

	    // BROWSE FLOW API
	    SUGGESTED_API               : 'controllers.api.Topics.suggested',
	    TOPICS_POPULAR_API          : 'controllers.api.Topics.popular',
	    TOPICS_GROUP_API            : 'controllers.api.Topics.topicGroup',
	    TOPICS_API                  : 'controllers.api.Topics.topic',
	    TOPICS_ENTITY_API           : 'controllers.api.Topics.entity',

	    // SAFETY API
	    SAFETY_API                  : 'controllers.api.Safety.index',
	    SAFETY_REPORT_PROBLEM_API   : 'controllers.api.Safety.report',
	    SAFETY_TOPIC_GROUP_API      : 'controllers.api.Safety.topicGroup',
	    SAFETY_TOPIC_API            : 'controllers.api.Safety.topic',
	    SAFETY_ENTITY_API           : 'controllers.api.Safety.entity',

	    // MOBILE APPS API
	    MOBILE_APPS_API             : 'controllers.api.MobileApps.index',
	    MOBILE_APPS_TOPIC_GROUP_API : 'controllers.api.MobileApps.topicGroup',
	    MOBILE_APPS_TOPIC_API       : 'controllers.api.MobileApps.topic',
	    MOBILE_APPS_ENTITY_API      : 'controllers.api.MobileApps.entity',

	    // ANSWER APIS
	    ANSWER_API                  : 'controllers.api.Answer.detail',
	    RATE_API                    : 'controllers.api.Answer.rate',
	    FEEDBACK_API                : 'controllers.api.Answer.feedback',

	    // TICKET APIS
	    CLOSE_TICKET_API            : 'controllers.api.Ticket.close',
	    REOPEN_TICKET_API           : 'controllers.api.Ticket.reopen',
	    ADD_COMMENT_API             : 'controllers.api.Ticket.comment',
	    FORM_SUBMIT                 : 'controllers.api.Ticket.create',

	    // OTHER APIS
	    SURVEY_API                  : 'controllers.api.Survey.submit',
	    SURVEY_PROGRESS             : 'controllers.api.Survey.progress',
	    ATTACHMENT_UPLOAD_API       : 'controllers.api.Attachments.upload',
	    GEOLOCATION_API             : 'controllers.api.Geolocation.getLocale',
	    CHAT_INTERACTION            : 'controllers.api.Chat.interaction',
	    CHAT_SESSION_PROGRESS       : 'controllers.api.Chat.sessionProgress',

	    // TRACKING
	    GENERIC_VIEW                : 'controllers.api.Tracking.genericView',
	    ENTITY_VIEW                 : 'controllers.api.Tracking.entityView',
	    HOME_VIEW                   : 'controllers.api.Tracking.homeView',

	    //FORUM API
	    NODE_OP                     : 'controllers.api.Forum.nodeOperation',
	    FORUM_COMMENT               : 'controllers.api.Forum.comment',
	    FORUM_ANSWER                : 'controllers.api.Forum.answer',
	    FORUM_ASK                   : 'controllers.api.Forum.ask'
	  };
	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ },
/* 13 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(14)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _dust) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _dust2 = _interopRequireDefault(_dust);

	  var cache = _dust2['default'].i18n.cache['templates/shared/static_strings'];

	  module.exports = {
	    get: function get(name) {
	      return cache[name] || '';
	    }
	  };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 14 */
/***/ function(module, exports) {

	module.exports = dust;

/***/ },
/* 15 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _jquery) {
	  'use strict';

	  module.exports = loading_button;

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _$ = _interopRequireDefault(_jquery);

	  var CLASSES = {
	    PROCESSING: 'processing'
	  };

	  var SELECTORS = {
	    PROCESSING_ICON: '.processing-icon'
	  };

	  var $spinner = _$['default']('<span class="processing-icon" />');

	  var buttonProcessing = function buttonProcessing($button) {
	    $button.attr({
	      disabled: true
	    }).addClass(CLASSES.PROCESSING).append($spinner);
	  };

	  var buttonComplete = function buttonComplete($button) {
	    $button.attr({
	      disabled: false
	    }).removeClass(CLASSES.PROCESSING).find(SELECTORS.PROCESSING_ICON).remove();
	  };

	  function loading_button($element) {

	    return {

	      button: $element,

	      processing: function processing() {
	        buttonProcessing($element);
	      },

	      complete: function complete() {
	        buttonComplete($element);
	      }
	    };
	  }
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var $             = __webpack_require__(2),
	      $body         = __webpack_require__(17),
	      render        = __webpack_require__(18),
	      listen        = __webpack_require__(5).Events.listen,
	      stepper       = __webpack_require__(5).Signals.stepper,
	      transition    = __webpack_require__(5).Motion.describe,
	      Sticky        = __webpack_require__(19),
	      TEMPLATES     = __webpack_require__(21);

	  var DEFAULT_CONFIG = {

	    SELECTORS : {
	      DISMISS              : '.js-notification-dismiss',
	      COPY                 : '.js-notification-copy',
	      NOTIFICATION_WRAPPER : '#js-notification-wrapper',
	      NOTIFICATION         : '.js-notification',
	      FOCUSED_ITEM         : ':focus'
	    },

	    CLASSES : {
	      VISIBLE : 'notification-open',
	      HIDDEN  : 'notification-closed'
	    }

	  };

	  function toRenderedNotification(data) {
	    var notification = {
	      body : data.body,
	      notificationType : data.notificationType
	    };
	    return render(TEMPLATES.NOTIFICATION, notification);
	  }

	  function Notification(options) {

	    // Once a newNotification event has been triggered,
	    // set up the DOM elements to listen for their events.
	    var CONFIG = $.extend({}, DEFAULT_CONFIG, (options || {}));

	    var $notificationWrapper = $(CONFIG.SELECTORS.NOTIFICATION_WRAPPER);

	    // make the notification sticky
	    Sticky($notificationWrapper);

	    // Since Notifications can be added to the page,
	    // set up the body to listen for the newNotification event
	    // to get things started.
	    var notificationAdded = listen('newNotification', $body);

	    //+ renderedNotification :: EventStream Html
	    var renderedNotification = notificationAdded.map(toRenderedNotification);

	    var showNotification = stepper(false, renderedNotification.map(true));

	    //+ notificationHtml :: Behavior Html
	    var notificationHtml = stepper('', renderedNotification);

	    notificationHtml.bind($notificationWrapper[0], 'innerHTML');

	    notificationAdded.and(showNotification).next(function() {

	      var $root        = $(CONFIG.SELECTORS.NOTIFICATION),
	          $closeButton = $root.find(CONFIG.SELECTORS.DISMISS),
	          $copy        = $root.find(CONFIG.SELECTORS.COPY),
	          copyHeight   = $copy.outerHeight(); // need to apply a fixed height value to transition height through css

	      // STREAMS
	      var closeClicks = listen('click', $closeButton[0]);

	      // TRANSITIONS
	      var closeTransition = transition($root[0], CONFIG.CLASSES.HIDDEN, { height: '0px' });
	      var openTransition = transition($root[0], CONFIG.CLASSES.VISIBLE, { height: copyHeight });

	      // Attach an event to hide the notification
	      closeClicks.next(function() {
	        $root.css('height', $copy.outerHeight());
	        closeTransition.run(function() {
	          // if the user is still focused on the dismiss button when it gets removed,
	          // move focus to the wrapper that isn't removed so focus doesn't return to the top of the page
	          if( $(CONFIG.SELECTORS.FOCUSED_ITEM).get(0) === $closeButton.get(0) ) {
	            $notificationWrapper.trigger('focus');
	          }
	          $root.remove();
	        });
	      });

	      // Show the notification
	      openTransition.run(function() {
	        $root.css('height', 'auto');
	      });
	    });
	  }

	  Notification.SUCCESS = 'success';
	  Notification.ATTENTION = 'attention';
	  Notification.WARNING = 'warning';
	  Notification.NOTICE = 'notice';

	  Notification.EVENTS = {};
	  Notification.EVENTS.NEW = 'newNotification';

	  Notification.trigger = function Notification_trigger(type, message) {
	    var evt = $.Event(Notification.EVENTS.NEW);
	    evt.body = message;
	    evt.notificationType = type;
	    $body.trigger(evt);
	  };

	  module.exports = Notification;

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 17 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _jquery) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _$ = _interopRequireDefault(_jquery);

	  module.exports = _$['default']('body');
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 18 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var dust  = __webpack_require__(14),
	      curry = __webpack_require__(5).Utils.curry;

	  //+ render :: String -> Object -> String
	  module.exports = curry(function(template, data) {
	    var output = '';
	    dust.render(template, data, function(err, html) {
	      if (err) throw new Error(err);
	      output = html;
	    });
	    return output;
	  });

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ },
/* 19 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;// sticky elements operate in the following way:
	// - if they are within the viewport, they appear as `position: static` and in the natural DOM flow
	// - if they are NOT within the viewport, they appear as `position: fixed` and stuck to the top of the viewport
	!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var $       = __webpack_require__(2),
	      listen  = __webpack_require__(5).Events.listen,
	      not     = __webpack_require__(5).Utils.not,
	      _window = __webpack_require__(20)._window;

	  var DEFAULT_CONFIG = {
	    CLASSES : {
	      STICKY : 'sticky'
	    }
	  };

	  module.exports = function sticky($el, options) {
	    var CONFIG = $.extend({}, DEFAULT_CONFIG, (options || {}));

	    var $spacer = $('<div />');

	    // grab the position where the element is rendered naturally
	    var defaultTop = $el.position().top;

	    var isAtTop = function() {
	      return _window.scrollTop() >= defaultTop;
	    };

	    var isSticky = function() {
	      return $el.hasClass(CONFIG.CLASSES.STICKY);
	    };

	    var windowScroll = listen('scroll', _window);

	    var stickToTop = windowScroll.filter(not(isSticky)).filter(isAtTop);
	    var unstick = windowScroll.filter(isSticky).filter(not(isAtTop));

	    stickToTop.next(function() {
	      // add a spacer equal to height so that the change to fixed doesn't cause a page jump
	      $spacer.height($el.height());

	      $el
	        .addClass(CONFIG.CLASSES.STICKY)
	        .before($spacer);
	    });

	    unstick.next(function() {
	      $el
	        .removeClass(CONFIG.CLASSES.STICKY)
	        .prev($spacer)
	          .remove();
	    });
	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 20 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(2), __webpack_require__(5)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, _jquery, _frampton) {
	  'use strict';

	  exports.__esModule = true;

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _$ = _interopRequireDefault(_jquery);

	  var _frampton2 = _interopRequireDefault(_frampton);

	  var apply = _frampton2['default'].Utils.apply;

	  var listeners = {
	    mobile: [],
	    tablet: [],
	    desktop: [],
	    resize: []
	  };

	  var doc = document.documentElement;

	  // mama-bear break point from our grid.
	  var TABLET_WIDTH = 767;
	  // papa-bear break point from our grid.
	  var DESKTOP_WIDTH = 1023;

	  var isMobile = checkMobile();
	  var isDesktop = checkDesktop();
	  var isTablet = checkTablet();

	  var size = 0;

	  var _window = _$['default'](window);

	  function addListener(name, callback) {
	    if (size === 0) {
	      _window.on('resize', resizeHandler);
	    }
	    if (listeners[name] && listeners[name].indexOf(callback) < 0) {

	      if (name === 'mobile' || name === 'desktop' || name === 'tablet') {
	        listeners[name].push(callback);
	        size++;
	      }

	      if (name === 'mobile' && checkMobile()) {
	        callback();
	      } else if (name === 'tablet' && checkTablet()) {
	        callback();
	      } else if (name === 'desktop' && checkDesktop()) {
	        callback();
	      }
	    }
	  }

	  function removeListener(name, callback) {
	    listeners[name] = listeners[name].filter(function (arr) {
	      return arr.indexOf(callback) < 0;
	    });
	  }

	  function resizeHandler() {
	    listeners.resize.forEach(apply);
	    if (checkMobile() && !isMobile) {
	      listeners.mobile.forEach(apply);
	      isMobile = true;
	      isTablet = false;
	      isDesktop = false;
	    } else if (checkTablet() && !isTablet) {
	      listeners.tablet.forEach(apply);
	      isMobile = false;
	      isTablet = true;
	      isDesktop = false;
	    } else if (checkDesktop() && !isDesktop) {
	      listeners.desktop.forEach(apply);
	      isMobile = false;
	      isTablet = false;
	      isDesktop = true;
	    }
	  }

	  //+ checkoutMobile :: Boolean
	  function checkMobile() {
	    return window.innerWidth < TABLET_WIDTH;
	  }

	  //+ checkDesktop :: Boolean
	  function checkDesktop() {
	    return window.innerWidth > DESKTOP_WIDTH;
	  }

	  //+ checkTablet :: Boolean
	  function checkTablet() {
	    return window.innerWidth < DESKTOP_WIDTH && window.innerWidth > TABLET_WIDTH;
	  }

	  function scrollTop() {
	    return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
	  }

	  exports.addListener = addListener;
	  exports.removeListener = removeListener;
	  exports.checkMobile = checkMobile;
	  exports.checkDesktop = checkDesktop;
	  exports.checkTablet = checkTablet;
	  exports.scrollTop = scrollTop;
	  exports._window = _window;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 21 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {

	  'use strict';

	  return {

	    // PAGES
	    BROWSE              : 'templates/pages/browse',
	    FORUM_HOME          : 'templates/pages/forum_home',
	    ANSWER_DETAIL       : 'templates/pages/answer_detail',
	    SEARCH_RESULTS      : 'templates/pages/search_results',
	    ACCOUNT_DETAIL      : 'templates/pages/account_detail',
	    ACCOUNT_OVERVIEW    : 'templates/pages/account_overview',
	    DYNAMIC_FORM        : 'templates/pages/dynamic_form',
	    FORUM_PROFILE       : 'templates/pages/forum_profile',
	    FORUM_DETAIL        : 'templates/pages/forum_question_detail',

	    // ROUTING PARTIALS
	    LOADING_MASK        : 'templates/partials/routing/loading_mask',
	    ERROR_PAGE          : 'templates/partials/routing/error_page',

	    // BROWSE PARTIALS
	    HOME                : 'templates/partials/browse/home',
	    BROWSE_DETAIL       : 'templates/partials/browse/answer_detail',

	    // TOPICS PARTIALS
	    TOPIC_GROUP         : 'templates/partials/browse/topics/group',
	    TOPIC_ENTITY        : 'templates/partials/browse/topics/entity',

	    // SAFETY CENTER PARTIALS
	    SAFETY_INDEX        : 'templates/partials/browse/safety/index',
	    SAFETY_GROUP        : 'templates/partials/browse/safety/group',
	    SAFETY_ENTITY       : 'templates/partials/browse/safety/entity',

	    // MOBILE APPS PARTIALS
	    MOBILE_APPS_INDEX   : 'templates/partials/browse/mobile-apps/index',
	    MOBILE_APPS_GROUP   : 'templates/partials/browse/mobile-apps/group',
	    MOBILE_APPS_ENTITY  : 'templates/partials/browse/mobile-apps/entity',

	    // ACOUNT DETAIL PARTIALS
	    REASON_MODAL        : 'templates/partials/account/reason_modal',
	    THREAD_LIST         : 'templates/partials/account/thread_list',
	    THREAD              : 'templates/partials/account/thread',

	    // OPEN CASES PARTIALS
	    CASES_BANNER        : 'templates/partials/open_cases/banner',
	    CASES_DETAIL        : 'templates/partials/open_cases/detail',

	    // OTHER PARTIALS
	    FEEDBACK            : 'templates/partials/feedback',
	    SEARCH              : 'templates/partials/search',
	    MODAL_MASK          : 'templates/partials/modal/mask',
	    RESULT_LIST         : 'templates/partials/smart-assistant/result_list',
	    NOTIFICATION        : 'templates/partials/notification',

	    // FORUM PARTIALS
	    UPVOTE_COUNT        : 'templates/partials/forum/post/upvote_count',
	    ACTION_MODAL        : 'templates/partials/forum/modal/action_modal',
	    EDIT_QUESTION_MODAL : 'templates/partials/forum/modal/edit_question_modal',
	    EDIT_ANSWER_MODAL   : 'templates/partials/forum/modal/edit_answer_modal',
	    REPORT_MODAL        : 'templates/partials/forum/modal/report_modal',
	    LOCK_MODAL          : 'templates/partials/forum/modal/lock_modal',
	    CONFIRMATION_MODAL  : 'templates/partials/forum/modal/confirmation_modal',
	    FORUM_POST          : 'templates/partials/forum/post/user_post',
	    CLOSE_QUESTION_MODAL  : 'templates/partials/forum/modal/close_question_modal'
	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ },
/* 22 */,
/* 23 */,
/* 24 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(2), __webpack_require__(5), __webpack_require__(17), __webpack_require__(25), __webpack_require__(26), __webpack_require__(18), __webpack_require__(28)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _jquery, _frampton, _javascriptsCommonExportsBody, _javascriptsCommonExportsHtml, _javascriptsCommonUtilsUiTrapFocus, _javascriptsCommonUtilsHtmlRender, _javascriptsCommonModulesModalConfig) {
	  'use strict';

	  module.exports = create_modal;

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _$ = _interopRequireDefault(_jquery);

	  var _Fr = _interopRequireDefault(_frampton);

	  var _$body = _interopRequireDefault(_javascriptsCommonExportsBody);

	  var _$html = _interopRequireDefault(_javascriptsCommonExportsHtml);

	  var _trapFocus = _interopRequireDefault(_javascriptsCommonUtilsUiTrapFocus);

	  var _render = _interopRequireDefault(_javascriptsCommonUtilsHtmlRender);

	  var apply = _Fr['default'].Utils.apply;
	  var noop = _Fr['default'].Utils.noop;
	  var not = _Fr['default'].Utils.not;
	  var listen = _Fr['default'].Events.listen;
	  var selectorContains = _Fr['default'].Events.selectorContains;
	  var keyCode = _Fr['default'].Keyboard.keyCode;
	  var isEsc = _Fr['default'].Keyboard.isEsc;
	  var describe = _Fr['default'].Motion.describe;
	  var when = _Fr['default'].Motion.when;

	  var $mask = null,
	      $modal = null,
	      openModals = [],
	      destroyManager = null,
	      removeEvents = [],
	      trapFunc = null;

	  //+ isCloseButton :: DomEvent -> Boolean
	  var isCloseButton = selectorContains(_javascriptsCommonModulesModalConfig.SELECTORS.CLOSE_MODAL);

	  //+ isModal :: DomEvent -> Boolean
	  var isModal = selectorContains(_javascriptsCommonModulesModalConfig.SELECTORS.MODAL);

	  //+ notModal :: DomEvent -> Boolean
	  var notModal = not(isModal);

	  function create_modal(options) {

	    if ($mask || $modal) {
	      openModals.forEach(apply);
	      openModals = [];
	    }

	    $mask = _$['default'](_render['default'](_javascriptsCommonModulesModalConfig.TEMPLATES.MASK, {}));
	    $modal = _$['default'](_render['default'](options.template, options));
	    trapFunc = _trapFocus['default']($modal[0], {});

	    _$body['default'].append($mask);
	    $mask.append($modal);
	    _$html['default'].addClass(_javascriptsCommonModulesModalConfig.CLASSES.NO_SCROLL);

	    var openTransition = when(describe($mask[0], _javascriptsCommonModulesModalConfig.CLASSES.MASK_OPEN), describe($modal[0], _javascriptsCommonModulesModalConfig.CLASSES.MODAL_OPEN));

	    var closeTransition = openTransition.reverse();

	    openTransition.run();

	    //+ clicks :: EventStream DomEvent
	    var clicks = listen('click', $mask[0]);

	    //+ escapes :: EventStream DomEvent
	    var escapes = listen('keyup', document).map(keyCode).filter(isEsc);

	    //+ maskClicks :: EventStream DomEvent
	    var maskClicks = clicks.filter(notModal);

	    //+ closeClicks :: EventStream DomEvent
	    var closeClicks = clicks.filter(isCloseButton);

	    //+ closeModal :: EventStream DomEvent
	    var closeModal = maskClicks.merge(closeClicks).merge(escapes);

	    // Calls to subscribe return a function to unsubscribe.
	    removeEvents.push(closeModal.next(close_modal));

	    // HELPERS FOR CLOSING MODAL
	    function close_start() {
	      destroyManager();
	      removeEvents.forEach(apply);
	      removeEvents = [];
	      trapFunc();

	      // Set focus back to the last element in main content that had focus.
	      _$['default'](options.targetElement).focus();
	    }

	    function close_finish() {
	      $modal.remove();
	      $mask.remove();
	      _$html['default'].removeClass(_javascriptsCommonModulesModalConfig.CLASSES.NO_SCROLL);
	      // cleanup on aisle 5.
	      $modal = null;
	      $mask = null;
	      clicks = null;
	      maskClicks = null;
	      closeClicks = null;
	      closeModal = null;
	      openTransition = null;
	      closeTransition = null;
	      openModals = [];
	    }

	    // CLOSE MODAL WITH ANIMATION
	    function close_modal() {
	      close_start();

	      // Dismiss the UI for the modal.
	      closeTransition.run(close_finish);
	    }

	    // KILL MODAL IMMEDIATELY (WITHOUT ANIMATION)
	    function destroy_modal() {
	      close_start();
	      close_finish();
	    }

	    destroyManager = options.onRender($modal, options) || noop;

	    openModals.push(destroy_modal.bind(this));
	  }
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 25 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _jquery) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _$ = _interopRequireDefault(_jquery);

	  module.exports = _$['default']('html');
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 26 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(2), __webpack_require__(5), __webpack_require__(27)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _jquery, _frampton, _javascriptsCommonExportsDocument) {
	  'use strict';

	  module.exports = trapFocus;

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _$ = _interopRequireDefault(_jquery);

	  var _Fr = _interopRequireDefault(_frampton);

	  var _$document = _interopRequireDefault(_javascriptsCommonExportsDocument);

	  var not = _Fr['default'].Utils.not;
	  var listen = _Fr['default'].Events.listen;
	  var containsEvent = _Fr['default'].Events.contains;

	  var CONFIG = {
	    SELECTORS: {
	      RESET: '.js-modal-reset'
	    }
	  };

	  function trapFocus(el) {

	    var $root = _$['default'](el),
	        $reset = $root.find(CONFIG.SELECTORS.RESET);

	    //+ isRoot :: DomEvent -> Boolean
	    var isRoot = containsEvent($root[0]);

	    //+ notRoot :: DomEvent -> Boolean
	    var notRoot = not(isRoot);

	    $root.attr('tabindex', -1);
	    $reset.attr('tabindex', 0);
	    $root.trigger('focus');

	    //+ resetFocus :: EventStream DomEvent
	    var resetFocus = listen('focus', $reset);

	    //+ focusin :: EventStream DomEvent
	    var focusin = listen('focusin', _$document['default']).filter(notRoot).preventDefault();

	    //+ trapFocus :: Stream DomEvent
	    var trapFocus = resetFocus.merge(focusin);

	    var unsub = trapFocus.next(function trap_focus(evt) {
	      $root.trigger('focus');
	    });

	    return function destroy() {
	      unsub();
	    };
	  }
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 27 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _jquery) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _$ = _interopRequireDefault(_jquery);

	  module.exports = _$['default'](window.document);
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 28 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module) {
	  'use strict';

	  module.exports = {

	    SELECTORS: {
	      MODAL: '.js-modal',
	      MASK: '.js-mask',
	      CLOSE_MODAL: '.js-dialog-close'
	    },

	    CLASSES: {
	      NO_SCROLL: 'no-scroll',
	      MASK_OPEN: 'open',
	      MODAL_OPEN: 'open'
	    },

	    TEMPLATES: {
	      MASK: 'templates/partials/modal/mask'
	    }

	  };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 29 */,
/* 30 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var $                 = __webpack_require__(2),
	      $doc              = __webpack_require__(27),

	      toRequestUrl      = __webpack_require__(8).toRequestUrl0,

	      ROUTES            = __webpack_require__(12),
	      SELECTORS         = __webpack_require__(31).SELECTORS,
	      CLASSES           = __webpack_require__(31).CLASSES,
	      ERROR_MESSAGE     = __webpack_require__(31).ERROR_MESSAGE,

	      PreviewContainer  = __webpack_require__(32).PreviewContainer,
	      addPreview        = __webpack_require__(32).addPreview,
	      addError          = __webpack_require__(32).addError,
	      uploadError       = __webpack_require__(32).uploadError,
	      removePreview     = __webpack_require__(32).removePreview,
	      getPreviewById    = __webpack_require__(32).getPreviewById,
	      clearChildren     = __webpack_require__(32).clearChildren,
	      toFileAttachment  = __webpack_require__(36).toFileAttachment,
	      isValidType       = __webpack_require__(36).isValidType,
	      isValidSize       = __webpack_require__(36).isValidSize,
	      updateAttachment  = __webpack_require__(36).updateAttachment,
	      FileError         = __webpack_require__(37).FileError,
	      FileInput         = __webpack_require__(38),
	      AttachmentPreview = __webpack_require__(33).AttachmentPreview,
	      updateProgress    = __webpack_require__(33).updateProgress,
	      progressComplete  = __webpack_require__(33).progressComplete,
	      AttachmentError   = __webpack_require__(33).AttachmentError,
	      ErrorLabel        = __webpack_require__(39).ErrorLabel,
	      addBannerError    = __webpack_require__(39).addBannerError,
	      clearErrorLabel   = __webpack_require__(39).clearErrorLabel,

	      log               = __webpack_require__(5).Utils.log,
	      curry             = __webpack_require__(5).Utils.curry,
	      not               = __webpack_require__(5).Utils.not,
	      isSomething       = __webpack_require__(5).Utils.isSomething,
	      empty             = __webpack_require__(5).Signals.empty,
	      stepper           = __webpack_require__(5).Signals.stepper,
	      listen            = __webpack_require__(5).Events.listen,
	      selectorContains  = __webpack_require__(5).Events.selectorContains,
	      closestToEvent    = __webpack_require__(5).Events.closestToEvent,
	      append            = __webpack_require__(5).List.append,
	      data              = __webpack_require__(5).Html.data,
	      uploadFile        = __webpack_require__(5).IO.Http.upload,
	      progress          = __webpack_require__(5).IO.progress,
	      success           = __webpack_require__(5).IO.success,
	      error             = __webpack_require__(5).IO.error;

	  // This long list is brought to you by browser incompatability
	  // - Safari requires full MIME types, like application/pdf or application/msword
	  // - IE requires file extensions like .pdf or .doc
	  // So this list has both of those options to cover all browsers
	  var ACCEPT_TYPES = 'image/jpeg, image/gif, image/png, text/plain, application/pdf, text/csv, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.oasis.opendocument.text, application/vnd.oasis.opendocument.spreadsheet, application/vnd.oasis.opendocument.presentation, application/vnd.oasis.opendocument.text-web, .txt, .doc, .docx, .xls, .pdf, .xlsx, .cvs, .odt, .ods, .odp, .oth';

	  //+ isDuplicate :: File -> Boolean
	  var isDuplicate = curry(function(attachments, file) {
	    var length = attachments.filter(function(attachment) {
	      return (attachment.filename === file.name);
	    }).length;
	    return (length > 0);
	  });

	  //+ isDiscardButton :: DomEvent -> Boolean
	  var isDiscardButton = selectorContains(SELECTORS.DISCARD_BUTTON);

	  //+ fileUrl :: String
	  var fileUrl = toRequestUrl(ROUTES.ATTACHMENT_UPLOAD_API);

	  //+ uploadAttachment :: File -> EventStream UploadData
	  var uploadAttachment = uploadFile(fileUrl);

	  function Attachments($element) {

	    var list = [];

	    // Cache selectors
	    var $fileInput = $element.find(SELECTORS.FILE_INPUT);

	    // Additional setup for file input
	    $fileInput.attr('accept', ACCEPT_TYPES);

	    //+ previewContainer :: PreviewContainer
	    var previewContainer = PreviewContainer($element.find(SELECTORS.PREVIEW_PANEL));

	    //+ errorLabel :: ErrorLabel
	    var errorLabel = ErrorLabel($element.find(SELECTORS.ERROR_MESSAGE));

	    //+ appendBannerError :: ErrorLabel -> String -> ()
	    var appendBannerError = addBannerError(errorLabel);

	    //+ appendFilePreview :: AttachmentPreview -> EventStream AttachmentPreview
	    var appendFilePreview = addPreview(previewContainer);

	    //+ appendFileError :: AttachmentError -> EventStream AttachmentError
	    var appendFileError = addError(previewContainer);

	    //+ fileRequests :: EventStream File
	    var fileRequests = FileInput($fileInput);

	    //+ clicks :: EventStream DomEvent
	    var clicks = listen('click', $element[0]);

	    //+ focusEvent :: EventStream DomEvent
	    var focusEvent = listen('focus', $fileInput);

	    //+ blurEvent :: EventStream DomEvent
	    var blurEvent = listen('blur', $fileInput);

	    //+ mouseOverEvent :: EventStream DomEvent
	    var mouseOverEvent = listen('mouseover', $fileInput[0]);

	    //+ mouseOutEvent :: EventStream DomEvent
	    var mouseOutEvent = listen('mouseout', $fileInput[0]);

	    //+ mouseDownEvent :: EventStream DomEvent
	    var mouseDownEvent = listen('mousedown', $fileInput[0]);

	    //+ mouseUpEvent :: EventStream DomEvent
	    var mouseUpEvent = listen('mouseup', $doc[0]);

	    //+ change :: EventStream []
	    var change = empty();

	    //+ loaded :: EventStream Boolean
	    var loaded = empty();

	    //+ loading :: EventStream Boolean
	    var loading = fileRequests.map(true);

	    //+ isLoading :: Behavior Boolean
	    var isLoading = stepper(false, loading.merge(loaded));

	    //+ discards :: EventStream AttachmentPreview
	    var discards = clicks
	      .filter(isDiscardButton)
	      .not(isLoading)
	      .map(closestToEvent(SELECTORS.PREVIEW))
	      .map(data('index'))
	      .map(getPreviewById(previewContainer))
	      .filter(isSomething);

	    //+ fileAttachments :: EventStream FileAttachment
	    var fileAttachments = fileRequests
	      .chain(toFileAttachment);


	    // ARE THESE THE FILES WE'RE LOOKING FOR?

	    //+ uniqueFiles :: EventStream FileAttachment
	    var uniqueFiles = fileAttachments
	      .filter(not(isDuplicate(list)));

	    //+ validFileTypes :: EventStream FileAttachment
	    var validFileTypes = uniqueFiles
	      .filter(isValidType);

	    //+ attachmentsToUpload :: EventStream FileAttachment
	    var attachmentsToUpload = validFileTypes
	      .filter(isValidSize);

	    //+ previewsToAttach :: EventStream AttachmentPreview
	    var previewsToAttach = attachmentsToUpload
	      .map(AttachmentPreview);

	    //+ appendedPreviews :: EventStream AttachmentPreview
	    var appendedPreviews = previewsToAttach
	      .chain(appendFilePreview);

	    // ERRORS

	    //+ readErrors :: EventStream String
	    var readErrors = empty();

	    //+ duplicateFiles :: EventStream String
	    var duplicateFiles = fileAttachments
	      .filter(isDuplicate(list))
	      .map(ERROR_MESSAGE.DUPLICATE_FILE);

	    //+ invalidFileTypes :: EventStream String
	    var invalidFileTypes = uniqueFiles
	      .filter(not(isValidType))
	      .map(ERROR_MESSAGE.NOT_SUPPORTED);

	    //+ invalidFileSizes :: EventStream String
	    var invalidFileSizes = validFileTypes
	      .filter(not(isValidSize))
	      .map(ERROR_MESSAGE.MAX_SIZE_EXCEEDED);

	    //+ attachmentErrors :: EventStream AttachmentError
	    var attachmentErrors = invalidFileTypes
	      .merge(invalidFileSizes)
	      .merge(duplicateFiles)
	      .merge(readErrors)
	      .map(FileError)
	      .map(AttachmentError);

	    //+ appendedErrors :: EventStream AttachmentError
	    var appendedErrors = attachmentErrors
	      .chain(appendFileError);

	    // LET'S GET ROLLING

	    function handleError(msg, preview) {
	      uploadError(previewContainer);
	      appendBannerError(msg).next(function() {
	        removePreview(previewContainer, preview);
	      });
	    }

	    function handleComplete() {
	      $fileInput.val('');
	      loaded.pushNext(false);
	    }

	    var handleAttachmentErrors = function(errorStream) {
	      errorStream.next(function(err) {
	        log('error: ', err);
	        handleComplete();
	      });
	    };

	    var handleReadErrors = function(readErrors, uploadStream) {
	      uploadStream.error(function(err) {
	        readErrors.pushNext(err);
	      });
	    };

	    //+ handleDiscards :: EventStream AttachmentPreview -> ()
	    var handleDiscards = function(discardStream) {
	      discardStream.next(function(preview) {
	        list = list.filter(function(next) {
	          return (next.uuid !== preview.attachment.uuid);
	        });
	        removePreview(previewContainer, preview);
	      });
	    };

	    var handleFocus = function(focusStream) {
	      focusStream.next(function(e){
	        $(e.target).prev(SELECTORS.FILE_INPUT_LABEL).addClass(CLASSES.HAS_FOCUS);
	      });
	    };

	    var handleBlur = function(blurStream) {
	      blurStream.next(function(e){
	        $(e.target).prev(SELECTORS.FILE_INPUT_LABEL).removeClass(CLASSES.HAS_FOCUS);
	      });
	    };

	    var handleMouseOver = function(mouseOverStream) {
	      mouseOverStream.next(function(e) {
	        $(e.target).prev(SELECTORS.FILE_INPUT_LABEL).addClass(CLASSES.HAS_FOCUS);
	      });
	    };

	    var handleMouseOut = function(mouseOutStream) {
	      mouseOutStream.next(function(e){
	        // remove the focus class only if this element isn't actually the focused element
	        if( $(SELECTORS.FOCUS)[0] !== e.target ) {
	          $(e.target).prev(SELECTORS.FILE_INPUT_LABEL).removeClass(CLASSES.HAS_FOCUS);
	        }
	      });
	    };

	    var handleMouseDown = function(mouseDownStream) {
	      mouseDownStream.next(function(e){
	        $(e.target).prev(SELECTORS.FILE_INPUT_LABEL).addClass(CLASSES.IS_ACTIVE);
	      });
	    };

	    var handleMouseUp = function(mouseUpStream) {
	      mouseUpStream.next(function(e){
	        $(SELECTORS.IS_ACTIVE).removeClass(CLASSES.IS_ACTIVE);
	      });
	    };

	    //+ handleFileUpload :: EventStream AttachmentPreview -> ()
	    var handleFileUpload = function(fileStream) {

	      fileStream.next(function(preview) {

	        var fileUpload = uploadAttachment(preview.attachment.file);
	        var fileProgress = progress(fileUpload);
	        var fileSuccess = success(fileUpload);
	        var fileError = error(fileUpload);

	        fileProgress.next(function(prog) {
	          updateProgress(preview, prog);
	        });

	        fileSuccess.next(function(res) {
	          progressComplete(preview);
	          if (res.status === 'success') {
	            if( 'data' in res ) {
	              res = res.data;
	            }
	            var file = res.files[0];
	            updateAttachment(preview.attachment, 'uuid', file.uuid);
	            list = append(list, {
	              filename : file.name,
	              uuid : file.uuid
	            });
	            change.pushNext(list);
	          } else {
	            handleError(ERROR_MESSAGE.CANT_UPLOAD, preview);
	          }
	          handleComplete();
	        });

	        fileError.next(function(err) {
	          handleError(ERROR_MESSAGE.CANT_UPLOAD, preview);
	          handleComplete();
	        });

	      });
	    };

	    handleFileUpload(appendedPreviews);

	    handleAttachmentErrors(appendedErrors);

	    handleReadErrors(readErrors, attachmentsToUpload);

	    handleDiscards(discards);

	    handleFocus(focusEvent);

	    handleBlur(blurEvent);

	    handleMouseOver(mouseOverEvent);

	    handleMouseOut(mouseOutEvent);

	    handleMouseDown(mouseDownEvent);

	    handleMouseUp(mouseUpEvent);

	    return {
	      loading : loading,
	      loaded : loaded,
	      change : change,
	      value : function() {
	        return JSON.stringify(list);
	      },
	      clear : function() {
	        list.length = 0;
	        clearChildren(previewContainer);
	        clearErrorLabel(errorLabel);
	      }
	    };
	  }

	  module.exports = Attachments;

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ },
/* 31 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var i18n_cache = __webpack_require__(13);

	  exports.TEMPLATES = {
	    PREVIEW       : 'templates/partials/attachments/preview',
	    PREVIEW_ERROR : 'templates/partials/attachments/preview_error'
	  };

	  exports.SELECTORS = {
	    PREVIEW_PANEL    : '.js-preview-panel',
	    PREVIEW          : '.js-preview',
	    DISCARD_BUTTON   : '.js-discard',
	    DESCRIPTION_MSG  : '.js-desc',
	    ERROR_MESSAGE    : '.js-error-message',
	    FILE_INPUT       : 'input[type=file]',
	    FILE_INPUT_LABEL : '.js-field-label',
	    PROGRESS_BAR     : '.js-progress-bar',
	    PROGRESS_WRAPPER : '.js-progress-wrapper',
	    IS_ACTIVE        : '.is-active',
	    FOCUS            : ':focus'
	  };

	  exports.CLASSES = {
	    DISCARD_BUTTON       : 'attachment-discard',
	    PREVIEW              : 'attachment-preview',
	    PREVIEW_ERROR        : 'attachment-preview-error',
	    PREVIEW_SLIDE_IN     : 'attachment-preview-in',
	    PREVIEW_SLIDE_OUT    : 'attachment-preview-out',
	    PREVIEW_SHRUNK       : 'attachment-preview-shrunk',
	    PREVIEW_IMPLODE      : 'attachment-preview-implode',
	    CONTAINER_OPEN       : 'attachments-preview-panel-open',
	    PREVIEW_IMG_WRAPPER  : 'attachment-preview-img-wrapper',
	    DESCRIPTION          : 'attachment-desc',
	    DESCRIPTION_SLIDE_IN : 'attachment-desc-in',
	    PROGRESS_HIDE        : 'attachment-progress-bar-hide',
	    PROGRESS_SUCCESS     : 'inner-bar-show-success',
	    PROGRESS_DONE        : 'inner-bar-done-uploading',
	    PROGRESS_ERROR       : 'inner-bar-show-error',
	    ANIMATING            : 'animating',
	    HAS_FOCUS            : 'has-focus',
	    IS_ACTIVE            : 'is-active',
	    SHOW_ERROR           : 'show-error',
	    DISMISS_ERROR        : 'dismiss-error'
	  };

	  exports.TIMING = {
	    ERROR_MESSAGE_DELAY     : 6000
	  };

	  exports.FILES = {

	    TYPE : {
	      NOT_SUPPORTED : 0,
	      IMAGE         : 1,
	      DOCUMENT      : 2
	    },

	    // We'll be Base64 encoding attachments. Base64 will increase file size by 25%, so we
	    // can only accept 75% of the 5MB limit
	    MAX_SIZE : (5*1024*1024*0.75)
	  };

	  exports.ERROR_MESSAGE = {
	    ERROR_IN_FILE     : i18n_cache.get('i18n_dynamic_forms_attachments_error_in_file'),
	    DUPLICATE_FILE    : i18n_cache.get('i18n_attachments_duplicate_file'),
	    CANT_UPLOAD       : i18n_cache.get('i18n_attachments_error_upload'),
	    NOT_SUPPORTED     : i18n_cache.get('i18n_attachments_error_file_not_supported'),
	    MAX_SIZE_EXCEEDED : i18n_cache.get('i18n_attachments_error_file_size_exceeded')
	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 32 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var SELECTORS         = __webpack_require__(31).SELECTORS,
	      CLASSES           = __webpack_require__(31).CLASSES,
	      TIMING            = __webpack_require__(31).TIMING,

	      AttachmentPreview = __webpack_require__(33).AttachmentPreview,
	      transitionIn      = __webpack_require__(33).transitionIn,

	      noop              = __webpack_require__(5).Utils.noop,
	      curry             = __webpack_require__(5).Utils.curry,
	      remove            = __webpack_require__(5).List.remove,
	      delayed           = __webpack_require__(5).Signals.delayed,
	      EventStream       = __webpack_require__(5).Signals.EventStream,
	      nextEvent         = __webpack_require__(5).Signals.nextEvent,
	      describe          = __webpack_require__(5).Motion.describe,
	      when              = __webpack_require__(5).Motion.when,
	      isMobile          = __webpack_require__(20).checkMobile;

	  //+ PreviewContainer :: jQuery -> PreviewContainer
	  var PreviewContainer = function($element) {
	    return {
	      $element : $element,
	      children : []
	    };
	  };

	  //+ openContainer :: PreviewContainer -> EventStream ()
	  var openContainer = function(container) {

	    var activeTrans;

	    function open_container(sink) {
	      container.$element.removeClass(CLASSES.ANIMATING);
	      sink(nextEvent(null));
	    }

	    if (container.children.length <= 1) {
	      // If we're adding our first attachment, open the container
	      if (!container.$element.hasClass(CLASSES.CONTAINER_OPEN)) {
	        activeTrans = describe(
	          container.$element[0],
	          CLASSES.ANIMATING + ' ' + CLASSES.CONTAINER_OPEN
	        );
	      }
	    } else if (!isMobile) {
	      // If this isn't the first and isn't mobile, make room and shrink the others.
	      var transList = [];
	      container.$element.find(SELECTORS.PREVIEW).each(function() {
	        transList.push(describe(this, CLASSES.PREVIEW_SHRUNK));
	      });
	      activeTrans = when.apply(null, transList);
	    }

	    return new EventStream(function(sink) {
	      if (activeTrans) {
	        activeTrans.run(open_container(sink));
	      } else {
	        open_container(sink);
	      }
	    });
	  };

	  //+ closeContainer :: PreviewContainer -> EventStream ()
	  var closeContainer = function(container) {

	    return new EventStream(function(sink) {

	      if (container.children.length === 0) {

	        container.$element.addClass(CLASSES.ANIMATING);
	        describe(container.$element[0], CLASSES.CONTAINER_OPEN).reverse()
	          .run(function close_container() {
	            container.$element.removeClass(CLASSES.ANIMATING);
	            sink(nextEvent(null));
	          });

	      } else {
	        var len = container.children.length;
	        var child = container.children[(len - 1)];
	        child.$element.removeClass(CLASSES.PREVIEW_SHRUNK);
	        sink(nextEvent(null));
	      }

	      return function close_cleanup() {
	        if (timer) {
	          clearTimeout(timer);
	          timer = null;
	        }
	      };
	    });
	  };

	  //+ append :: PreviewContainer -> AttachmentView -> AttachmentView
	  var append = function(container, view) {
	    container.$element.append(view.$element);
	    return view;
	  };

	  //+ addPreview :: PreviewContainer -> AttachmentView -> EventStream AttachmentView
	  var addChild = curry(function(container, child) {
	    return openContainer(container)
	      .map(append(container, child))
	      .chain(transitionIn);
	  });

	  //+ removeChild :: PreviewContainer -> AttachmentView -> EventStream AttachmentView
	  var removeChild = curry(function(container, child) {
	    container.children = remove(child, container.children);
	    var stream = new EventStream(function(sink) {
	      container.$element.addClass(CLASSES.ANIMATING);
	      describe(child.$element[0], CLASSES.PREVIEW_SLIDE_OUT)
	        .run(function() {
	          container.$element.removeClass(CLASSES.ANIMATING);
	          child.$element.remove();
	          child.$element.removeClass(CLASSES.PREVIEW_SLIDE_OUT);
	          sink(nextEvent(container));
	        });
	    });

	    return stream.chain(closeContainer).map(child);

	  });

	  //+ addPreview :: PreviewContainer -> AttachmentPreview -> EventStream AttachmentPreview
	  var addPreview = curry(function(container, preview) {
	    container.children.push(preview);
	    return addChild(container, preview);
	  });

	  //+ removePreview :: PreviewContainer -> AttachmentPreview -> ()
	  var removePreview = curry(function(container, preview) {
	    removeChild(container, preview).next(noop);
	  });

	  //+ addError :: PreviewContainer -> AttachmentError -> EventStream AttachmentError
	  var addError = curry(function(container, error) {
	    container.children.push(error);
	    return addChild(container, error)
	      .chain(delayed(TIMING.ERROR_MESSAGE_DELAY))
	      .chain(removeChild(container));
	  });

	  //+ getPreviewById :: PreviewContainer -> Number -> AttachmentPreview
	  var getPreviewById = curry(function(container, id) {
	    return container.children.reduce(function(acc, next) {
	      if (next.attachment && next.attachment.id === parseInt(id)) {
	        return next;
	      }
	      return acc;
	    }, null);
	  });

	  //+ uploadError :: PreviewContainer -> ()
	  var uploadError = function(container) {
	    container.$element.addClass(CLASSES.PROGRESS_ERROR);
	  };

	  //+ clearChildren :: PreviewContainer -> ()
	  var clearChildren = function(container) {
	    container.children.forEach(function(child) {
	      removePreview(container, child);
	    });
	  };

	  module.exports = {

	    PreviewContainer  : PreviewContainer,

	    addPreview        : addPreview,

	    removePreview     : removePreview,

	    addError          : addError,

	    uploadError       : uploadError,

	    getPreviewById    : getPreviewById,

	    clearChildren     : clearChildren

	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ },
/* 33 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var $           = __webpack_require__(2),
	      EventStream = __webpack_require__(5).Signals.EventStream,
	      nextEvent   = __webpack_require__(5).Signals.nextEvent,
	      curry       = __webpack_require__(5).Utils.curry,
	      describe    = __webpack_require__(5).Motion.describe,
	      reflow      = __webpack_require__(5).Motion.reflow,
	      render      = __webpack_require__(18),
	      localId     = __webpack_require__(34),
	      fileSize    = __webpack_require__(35).fileSize,
	      SELECTORS   = __webpack_require__(31).SELECTORS,
	      CLASSES     = __webpack_require__(31).CLASSES,
	      TEMPLATES   = __webpack_require__(31).TEMPLATES,
	      FILES       = __webpack_require__(31).FILES;

	  //+ AttachmentPreview :: FileAttachment -> AttachmentPreview
	  var AttachmentPreview = function(fileAttachment) {
	    var $element = $(renderPreview(fileAttachment));
	    return {
	      id         : localId(),
	      $element   : $element,
	      $progress  : $element.find(SELECTORS.PROGRESS_BAR),
	      $wrapper   : $element.find(SELECTORS.PROGRESS_WRAPPER),
	      attachment : fileAttachment
	    };
	  };

	  //+ transitionIn :: AttachmentPreview -> EventStream AttachmentPreview
	  var transitionIn = curry(function(preview) {
	    var $parent = preview.$element.parent();
	    return new EventStream(function(sink) {
	      $parent.addClass(CLASSES.ANIMATING);
	      describe(preview.$element[0], CLASSES.PREVIEW_SLIDE_IN)
	        .run(function() {
	          $parent.removeClass(CLASSES.ANIMATING);
	          sink(nextEvent(preview));
	        });
	    });
	  });

	  //+ renderPreview :: FileAttachment -> String
	  var renderPreview = function(fileAttachment) {
	    return render(TEMPLATES.PREVIEW, {
	      index       : fileAttachment.id,
	      isImage     : (fileAttachment.type === FILES.TYPE.IMAGE),
	      fileName    : fileAttachment.name,
	      fileDataUrl : fileAttachment.dataUrl,
	      fileSize    : fileSize(fileAttachment.size)
	    });
	  };

	  //+ updateProgress :: AttachmentPreview -> Number -> ()
	  var updateProgress = curry(function(preview, progress) {
	    var percentComplete = progress * 100;
	    preview.$progress.css('width', ' ' + (percentComplete) + '%');
	  });

	  //+ progressComplete :: AttachmentPreview -> ()
	  var progressComplete = function(preview) {
	    preview.$progress.addClass(CLASSES.PROGRESS_DONE);
	    preview.$progress.removeAttr('style');
	    reflow(preview.$progress[0]);
	    preview.$progress.addClass(CLASSES.PROGRESS_SUCCESS);
	    preview.$wrapper.addClass(CLASSES.PROGRESS_HIDE);
	  };

	  //+ progressError :: AttachmentPreview -> ()
	  var progressError = function(preview) {
	    preview.$progress.addClass(CLASSES.PROGRESS_ERROR);
	    preview.$wrapper.addClass(CLASSES.PROGRESS_HIDE);
	  };

	  module.exports = {

	    AttachmentPreview : AttachmentPreview,

	    updateProgress    : updateProgress,

	    progressComplete  : progressComplete,

	    progressError     : progressError,

	    transitionIn      : transitionIn

	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 34 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module) {
	  "use strict";

	  var id = 0;

	  module.exports = function () {
	    return id++;
	  };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 35 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(13)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _javascriptsCommonExportsI18nCache) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _i18n_cache = _interopRequireDefault(_javascriptsCommonExportsI18nCache);

	  //+ fileError :: Event -> String
	  var fileError = function fileError(e) {

	    switch (e.target.error.code) {

	      case e.target.error.NOT_FOUND_ERR:
	        errorMsg = _i18n_cache['default'].get('i18n_attachments_file_not_found');
	        break;

	      case e.target.error.NOT_READABLE_ERR:
	        errorMsg = _i18n_cache['default'].get('i18n_attachments_file_not_readable');
	        break;

	      case e.target.error.ABORT_ERR:
	        errorMsg = _i18n_cache['default'].get('i18n_attachments_file_aborted');
	        break;

	      case e.target.error.SECURITY_ERR:
	        errorMsg = _i18n_cache['default'].get('i18n_attachments_file_locked');
	        break;

	      case e.target.error.ENCODING_ERR:
	        errorMsg = _i18n_cache['default'].get('i18n_attachments_error_encoding');
	        break;

	      default:
	        errorMsg = _i18n_cache['default'].get('i18n_attachments_read_error');
	    }

	    return errorMsg;
	  };

	  //+ fileSize :: Number -> String
	  var fileSize = function fileSize(bytes) {
	    var sizeSufix = 'KB';
	    var sizeKb = bytes / 1024;
	    sizeKb = sizeKb.toFixed(2);
	    if (sizeKb > 1024) {
	      sizeKb = sizeKb / 1024;
	      sizeKb = sizeKb.toFixed(2);
	      sizeSufix = 'MB';
	    }
	    return sizeKb + ' ' + sizeSufix;
	  };

	  module.exports = {
	    fileError: fileError,
	    fileSize: fileSize
	  };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 36 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var EventStream = __webpack_require__(5).Signals.EventStream,
	      nextEvent   = __webpack_require__(5).Signals.nextEvent,
	      errorEvent  = __webpack_require__(5).Signals.errorEvent,
	      curry       = __webpack_require__(5).Utils.curry,
	      success     = __webpack_require__(5).IO.success,
	      dataUrl     = __webpack_require__(5).IO.File.dataUrl,
	      render      = __webpack_require__(18),
	      localId     = __webpack_require__(34),
	      TEMPLATES   = __webpack_require__(31).TEMPLATES,
	      FILES       = __webpack_require__(31).FILES;

	  //+ toFileType :: String -> String
	  var toFileType = function(fileName) {

	    var imageExtensions = /(\.|\/)(gif|jpe?g|png)$/i;
	    var documentExtensions = /(\.|\/)(txt|pdf|doc|docx|xls|xlsx|rtf|pptx?|odt|ods|odp|odm|oth)$/i;

	    if (fileName.search(imageExtensions) !== -1) {
	      return FILES.TYPE.IMAGE;
	    } else if (fileName.search(documentExtensions) !== -1) {
	      return FILES.TYPE.DOCUMENT;
	    }

	    return FILES.TYPE.NOT_SUPPORTED;
	  };

	  //+ FileAttachment :: File -> DataUrl -> FileAttachment
	  var FileAttachment = function(file, dataUrl) {
	    return {
	      file    : file,
	      dataUrl : dataUrl,
	      name    : file.name,
	      size    : file.size,
	      type    : toFileType(file.name),
	      uuid    : null,
	      id      : localId()
	    };
	  };

	  //+ toFileAttachment :: File -> EventStream FileAttachment
	  var toFileAttachment = function(file) {
	    return new EventStream(function(sink) {
	      var readRequest = success(dataUrl(file));
	      readRequest.next(function(data) {
	        sink(nextEvent(FileAttachment(file, data)));
	      });
	      readRequest.error(function(err) {
	        sink(errorEvent(err));
	      });
	    });
	  };

	  //+ isDocument :: FileAttachment -> Boolean
	  var isDocument = function(fileAttachment) {
	    return (fileAttachment.type === FILES.TYPE.DOCUMENT);
	  };

	  //+ isImage :: FileAttachment -> Boolean
	  var isImage = function(fileAttachment) {
	    return (fileAttachment.type === FILES.TYPE.IMAGE);
	  };

	  //+ isValidType :: FileAttachment -> Boolean
	  var isValidType = function(fileAttachment) {
	    return (fileAttachment.type !== FILES.TYPE.NOT_SUPPORTED);
	  };

	  //+ isValidSize :: FileAttachment -> Boolean
	  var isValidSize = function(fileAttachment) {
	    return (fileAttachment.size <= FILES.MAX_SIZE);
	  };

	  //+ updateAttachment :: FileAttachment -> String -> Object -> ()
	  var updateAttachment = function(attachment, field, value) {
	    if (attachment.hasOwnProperty(field)) {
	      attachment[field] = value;
	    }
	  };

	  module.exports = {

	    FileAttachment   : FileAttachment,

	    toFileAttachment : toFileAttachment,

	    isDocument       : isDocument,

	    isImage          : isImage,

	    isValidSize      : isValidSize,

	    isValidType      : isValidType,

	    updateAttachment : updateAttachment

	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ },
/* 37 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var render    = __webpack_require__(18),
	      localId   = __webpack_require__(34),
	      TEMPLATES = __webpack_require__(31).TEMPLATES;

	  //+ FileError :: String -> FileError
	  var FileError = function(message) {
	    return {
	      message : message,
	      id      : localId()
	    };
	  };

	  //+ renderError :: FileError -> HtmlString
	  var renderError = function(error) {
	    return render(TEMPLATES.PREVIEW_ERROR, {
	      errorMsg : error.message,
	      index    : error.id
	    });
	  };

	  module.exports = {

	    FileError   : FileError,

	    renderError : renderError

	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 38 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var listen    = __webpack_require__(5).Events.listen,
	      get       = __webpack_require__(5).Utils.get,
	      hasLength = __webpack_require__(5).Utils.hasLength;

	  //+ toFiles :: jQuery -> FileList
	  var toFiles = function($input) {
	    return $input[0].files;
	  };

	  //+ FileInput :: jQuery -> EventStream File
	  var FileInput = function($input) {
	    return listen('change', $input[0])
	      .map($input)
	      .map(toFiles)
	      .filter(hasLength(1))
	      .map(get(0));
	  };

	  module.exports = FileInput;

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 39 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var EventStream = __webpack_require__(5).Signals.EventStream,
	      nextEvent   = __webpack_require__(5).Signals.nextEvent,
	      curry       = __webpack_require__(5).Utils.curry,
	      describe    = __webpack_require__(5).Motion.describe,
	      localId     = __webpack_require__(34),
	      CLASSES     = __webpack_require__(31).CLASSES;

	  //+ ErrorLabel :: jQuery -> ErrorLabel
	  var ErrorLabel = function($element) {
	    return {
	      id       : localId(),
	      $element : $element,
	      current  : null
	    };
	  };

	  //+ addBannerError :: ErrorLabel -> String -> EventStream ()
	  var addBannerError = curry(function(errorLabel, msg) {

	    var showTransition = describe(errorLabel.$element[0], CLASSES.SHOW_ERROR);
	    var dismissTransition = describe(errorLabel.$element[0], CLASSES.DISMISS_ERROR);

	    return new EventStream(function(sink) {
	      errorLabel.$element.text(msg);
	      showTransition
	        .chain(dismissTransition)
	        .run(function() {
	          errorLabel.$element.empty();
	          errorLabel.$element.removeClass(
	            CLASSES.SHOW_ERROR + ' ' + CLASSES.DISMISS_ERROR
	          );
	          sink(nextEvent(null));
	        });
	    });
	  });

	  //+ clearErrorLabel :: ErrorLabel -> ()
	  var clearErrorLabel = function(errorLabel) {
	    errorLabel.$element.empty();
	  };

	  module.exports = {

	    ErrorLabel      : ErrorLabel,

	    addBannerError  : addBannerError,

	    clearErrorLabel : clearErrorLabel

	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 40 */,
/* 41 */,
/* 42 */,
/* 43 */,
/* 44 */,
/* 45 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function() {

	  'use strict';

	  return {

	    //PAGES
	    HOME                        : 'controllers.Home.index',
	    SEARCH                      : 'controllers.Answer.search',
	    THANK_YOU                   : 'controllers.DynamicForm.thankYou',

	    TOPIC                       : 'controllers.Topics.topic',
	    TOPIC_GROUP                 : 'controllers.Topics.topicGroup',

	    FORUM_HOME                  : 'controllers.Forum.index',
	    FORUM_QUESTION              : 'controllers.Forum.questionDetail',

	    SAFETY_INDEX                : 'controllers.Safety.index',
	    SAFETY_TOPIC_GROUP          : 'controllers.Safety.topicGroup',
	    SAFETY_ENTITY               : 'controllers.Safety.entity',
	    SAFETY_REPORT_PROBLEM       : 'controllers.Safety.report',

	    MOBILE_APPS_INDEX           : 'controllers.MobileApps.index',
	    MOBILE_APPS_TOPIC_GROUP     : 'controllers.MobileApps.topicGroup',
	    MOBILE_APPS_ENTITY          : 'controllers.MobileApps.entity',

	    //APIS
	    SMART_ASSIST                : 'controllers.api.SmartAssistant.get',
	    SMART_HELPFUL               : 'controllers.api.SmartAssistant.helpful',
	    SMART_UNHELPFUL             : 'controllers.api.SmartAssistant.unhelpful',
	    SMART_IGNORED               : 'controllers.api.SmartAssistant.ignored',

	    OPEN_CASES                  : 'controllers.api.Client.getOpenCases',

	    SEARCH_API                  : 'controllers.api.Answer.search',

	    // BROWSE FLOW API
	    SUGGESTED_API               : 'controllers.api.Topics.suggested',
	    TOPICS_POPULAR_API          : 'controllers.api.Topics.popular',
	    TOPICS_GROUP_API            : 'controllers.api.Topics.topicGroup',
	    TOPICS_API                  : 'controllers.api.Topics.topic',
	    TOPICS_ENTITY_API           : 'controllers.api.Topics.entity',

	    // SAFETY API
	    SAFETY_API                  : 'controllers.api.Safety.index',
	    SAFETY_REPORT_PROBLEM_API   : 'controllers.api.Safety.report',
	    SAFETY_TOPIC_GROUP_API      : 'controllers.api.Safety.topicGroup',
	    SAFETY_TOPIC_API            : 'controllers.api.Safety.topic',
	    SAFETY_ENTITY_API           : 'controllers.api.Safety.entity',

	    // MOBILE APPS API
	    MOBILE_APPS_API             : 'controllers.api.MobileApps.index',
	    MOBILE_APPS_TOPIC_GROUP_API : 'controllers.api.MobileApps.topicGroup',
	    MOBILE_APPS_TOPIC_API       : 'controllers.api.MobileApps.topic',
	    MOBILE_APPS_ENTITY_API      : 'controllers.api.MobileApps.entity',

	    // ANSWER APIS
	    ANSWER_API                  : 'controllers.api.Answer.detail',
	    RATE_API                    : 'controllers.api.Answer.rate',
	    FEEDBACK_API                : 'controllers.api.Answer.feedback',

	    // TICKET APIS
	    CLOSE_TICKET_API            : 'controllers.api.Ticket.close',
	    REOPEN_TICKET_API           : 'controllers.api.Ticket.reopen',
	    ADD_COMMENT_API             : 'controllers.api.Ticket.comment',
	    FORM_SUBMIT                 : 'controllers.api.Ticket.create',

	    // OTHER APIS
	    SURVEY_API                  : 'controllers.api.Survey.submit',
	    SURVEY_PROGRESS             : 'controllers.api.Survey.progress',
	    ATTACHMENT_UPLOAD_API       : 'controllers.api.Attachments.upload',
	    GEOLOCATION_API             : 'controllers.api.Geolocation.getLocale',
	    CHAT_INTERACTION            : 'controllers.api.Chat.interaction',
	    CHAT_SESSION_PROGRESS       : 'controllers.api.Chat.sessionProgress',

	    // TRACKING
	    GENERIC_VIEW                : 'controllers.api.Tracking.genericView',
	    ENTITY_VIEW                 : 'controllers.api.Tracking.entityView',
	    HOME_VIEW                   : 'controllers.api.Tracking.homeView',

	    //FORUM API
	    NODE_OP                     : 'controllers.api.Forum.nodeOperation',
	    FORUM_COMMENT               : 'controllers.api.Forum.comment',
	    FORUM_ANSWER                : 'controllers.api.Forum.answer',
	    FORUM_ASK                   : 'controllers.api.Forum.ask'
	  };
	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));


/***/ },
/* 46 */,
/* 47 */,
/* 48 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(9), __webpack_require__(10), __webpack_require__(5), __webpack_require__(49)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _play, _environment, _frampton, _javascriptsConfigPageKeys) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _play2 = _interopRequireDefault(_play);

	  var _ENV = _interopRequireDefault(_environment);

	  var _Fr = _interopRequireDefault(_frampton);

	  var _pagekeys = _interopRequireDefault(_javascriptsConfigPageKeys);

	  var curry = _Fr['default'].Utils.curry;

	  function urlBuilder(controller) {
	    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
	      args[_key - 1] = arguments[_key];
	    }

	    args.unshift(_ENV['default'].HC_PRODUCT);

	    var config = args.reduce(function (acc, next, index) {
	      acc['arg' + index] = next;
	      return acc;
	    }, { alias: controller });

	    return _play2['default'].url(config);
	  }

	  var withPageKey = function withPageKey() {
	    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
	      args[_key2] = arguments[_key2];
	    }

	    return appendPageKey(urlBuilder.apply(null, args), args[0]);
	  };

	  //+ appendPageKey :: String -> String
	  var appendPageKey = function appendPageKey(url, controller) {

	    var pageKey = _pagekeys['default'][controller] || _ENV['default'].GLOBAL.pageKey || _ENV['default'].INITIAL_PAGE_DATA.DATA.pageKey || "";

	    if (pageKey) {
	      return _play2['default'].addQueryParameter(url, 'page_key', pageKey);
	    } else {
	      return url;
	    }
	  };

	  var appendReferer = function appendReferer(url) {
	    if (_ENV['default'].GLOBAL.referralUrl) {
	      return _play2['default'].addQueryParameter(url, 'referer', _ENV['default'].GLOBAL.referralUrl);
	    } else {
	      return url;
	    }
	  };

	  var appendPath = function appendPath(url) {
	    if (_ENV['default'].GLOBAL.path) {
	      return _play2['default'].addQueryParameter(url, 'path', _ENV['default'].GLOBAL.path);
	    } else {
	      return url;
	    }
	  };

	  //+ csrf :: String -> String
	  var csrf = function csrf(url) {
	    return _play2['default'].addCsrfTokenToUrl(url);
	  };

	  //+ formattedUrl :: String -> String
	  var formattedUrl = function formattedUrl(url) {
	    return appendReferer(appendPath(url));
	  };

	  //+ toRequestUrl0 :: String -> String
	  var toRequestUrl0 = function toRequestUrl0(controller) {
	    return formattedUrl(csrf(withPageKey.call(null, controller)));
	  };

	  //+ toRequestUrl :: String -> Object -> String
	  var toRequestUrl = curry(function (controller, args) {
	    return formattedUrl(csrf(withPageKey.apply(null, arguments)));
	  });

	  //+ toGetRequestUrl :: String -> Object -> String
	  var toGetRequestUrl = curry(function (controller, args) {
	    return formattedUrl(withPageKey.apply(null, arguments));
	  });

	  //+ toGetRequestUrl0 :: String -> Object -> String
	  var toGetRequestUrl0 = function toGetRequestUrl0(controller) {
	    return formattedUrl(withPageKey.call(null, controller));
	  };

	  //+ toBaseUrl :: String -> String
	  var toBaseUrl = curry(function (controller, args) {
	    return urlBuilder.apply(null, arguments);
	  });

	  //+ toBaseUrl0 :: String -> String
	  var toBaseUrl0 = function toBaseUrl0(controller) {
	    return urlBuilder.call(null, controller);
	  };

	  //+ localizedUrl :: String -> String
	  var localizedUrl = function localizedUrl(url) {
	    return _play2['default'].addQueryParameter(url, 'lang', _ENV['default'].GLOBAL.locale.code);
	  };

	  module.exports = {

	    localizedUrl: localizedUrl,

	    toGetRequestUrl: toGetRequestUrl,

	    toGetRequestUrl0: toGetRequestUrl0,

	    toRequestUrl0: toRequestUrl0,

	    toRequestUrl: toRequestUrl,

	    toBaseUrl: toBaseUrl,

	    toBaseUrl0: toBaseUrl0,

	    csrf: csrf

	  };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 49 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(45)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _javascriptsConfigRoutes) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _ROUTES = _interopRequireDefault(_javascriptsConfigRoutes);

	  var PAGE_KEYS = {};

	  PAGE_KEYS[_ROUTES['default'].TOPICS_HOME] = 'hc_home';
	  PAGE_KEYS[_ROUTES['default'].TOPICS_GROUP_API] = 'hc_browse_topic_group';
	  PAGE_KEYS[_ROUTES['default'].TOPICS_API] = 'hc_browse_topic';
	  PAGE_KEYS[_ROUTES['default'].TOPICS_ENTITY_API] = 'hc_browse_entity';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_API] = 'hc_safety';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_TOPIC_GROUP_API] = 'hc_safety_topic_group';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_TOPIC_API] = 'hc_safety_topic';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_ENTITY_API] = 'hc_safety_entity';
	  PAGE_KEYS[_ROUTES['default'].SAFETY_REPORT_PROBLEM_API] = 'hc_search_entity';
	  PAGE_KEYS[_ROUTES['default'].MOBILE_APPS_API] = 'hc_mobile_apps';
	  PAGE_KEYS[_ROUTES['default'].MOBILE_APPS_TOPIC_GROUP_API] = 'hc_mobile_apps_topic_group';
	  PAGE_KEYS[_ROUTES['default'].MOBILE_APPS_TOPIC_API] = 'hc_mobile_apps_topic';
	  PAGE_KEYS[_ROUTES['default'].MOBILE_APPS_ENTITY_API] = 'hc_mobile_apps_entity';

	  module.exports = Object.freeze(PAGE_KEYS);
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 50 */,
/* 51 */,
/* 52 */,
/* 53 */,
/* 54 */,
/* 55 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, __webpack_require__(2), __webpack_require__(5)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, _jquery, _frampton) {
	  'use strict';

	  exports.__esModule = true;

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _$ = _interopRequireDefault(_jquery);

	  var _frampton2 = _interopRequireDefault(_frampton);

	  var apply = _frampton2['default'].Utils.apply;

	  var listeners = {
	    mobile: [],
	    tablet: [],
	    desktop: [],
	    resize: []
	  };

	  var doc = document.documentElement;

	  // mama-bear break point from our grid.
	  var TABLET_WIDTH = 767;
	  // papa-bear break point from our grid.
	  var DESKTOP_WIDTH = 1023;

	  var isMobile = checkMobile();
	  var isDesktop = checkDesktop();
	  var isTablet = checkTablet();

	  var size = 0;

	  var _window = _$['default'](window);

	  function addListener(name, callback) {
	    if (size === 0) {
	      _window.on('resize', resizeHandler);
	    }
	    if (listeners[name] && listeners[name].indexOf(callback) < 0) {

	      if (name === 'mobile' || name === 'desktop' || name === 'tablet') {
	        listeners[name].push(callback);
	        size++;
	      }

	      if (name === 'mobile' && checkMobile()) {
	        callback();
	      } else if (name === 'tablet' && checkTablet()) {
	        callback();
	      } else if (name === 'desktop' && checkDesktop()) {
	        callback();
	      }
	    }
	  }

	  function removeListener(name, callback) {
	    listeners[name] = listeners[name].filter(function (arr) {
	      return arr.indexOf(callback) < 0;
	    });
	  }

	  function resizeHandler() {
	    listeners.resize.forEach(apply);
	    if (checkMobile() && !isMobile) {
	      listeners.mobile.forEach(apply);
	      isMobile = true;
	      isTablet = false;
	      isDesktop = false;
	    } else if (checkTablet() && !isTablet) {
	      listeners.tablet.forEach(apply);
	      isMobile = false;
	      isTablet = true;
	      isDesktop = false;
	    } else if (checkDesktop() && !isDesktop) {
	      listeners.desktop.forEach(apply);
	      isMobile = false;
	      isTablet = false;
	      isDesktop = true;
	    }
	  }

	  //+ checkoutMobile :: Boolean
	  function checkMobile() {
	    return window.innerWidth < TABLET_WIDTH;
	  }

	  //+ checkDesktop :: Boolean
	  function checkDesktop() {
	    return window.innerWidth > DESKTOP_WIDTH;
	  }

	  //+ checkTablet :: Boolean
	  function checkTablet() {
	    return window.innerWidth < DESKTOP_WIDTH && window.innerWidth > TABLET_WIDTH;
	  }

	  function scrollTop() {
	    return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
	  }

	  exports.addListener = addListener;
	  exports.removeListener = removeListener;
	  exports.checkMobile = checkMobile;
	  exports.checkDesktop = checkDesktop;
	  exports.checkTablet = checkTablet;
	  exports.scrollTop = scrollTop;
	  exports._window = _window;
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 56 */,
/* 57 */,
/* 58 */,
/* 59 */,
/* 60 */,
/* 61 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(2)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _jquery) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _$ = _interopRequireDefault(_jquery);

	  module.exports = _$['default']('body');
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 62 */,
/* 63 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var $             = __webpack_require__(2),
	      $body         = __webpack_require__(61),
	      render        = __webpack_require__(18),
	      listen        = __webpack_require__(5).Events.listen,
	      stepper       = __webpack_require__(5).Signals.stepper,
	      transition    = __webpack_require__(5).Motion.describe,
	      Sticky        = __webpack_require__(19),
	      TEMPLATES     = __webpack_require__(6);

	  var DEFAULT_CONFIG = {

	    SELECTORS : {
	      DISMISS              : '.js-notification-dismiss',
	      COPY                 : '.js-notification-copy',
	      NOTIFICATION_WRAPPER : '#js-notification-wrapper',
	      NOTIFICATION         : '.js-notification',
	      FOCUSED_ITEM         : ':focus'
	    },

	    CLASSES : {
	      VISIBLE : 'notification-open',
	      HIDDEN  : 'notification-closed'
	    }

	  };

	  function toRenderedNotification(data) {
	    var notification = {
	      body : data.body,
	      notificationType : data.notificationType
	    };
	    return render(TEMPLATES.NOTIFICATION, notification);
	  }

	  function Notification(options) {

	    // Once a newNotification event has been triggered,
	    // set up the DOM elements to listen for their events.
	    var CONFIG = $.extend({}, DEFAULT_CONFIG, (options || {}));

	    var $notificationWrapper = $(CONFIG.SELECTORS.NOTIFICATION_WRAPPER);

	    // make the notification sticky
	    Sticky($notificationWrapper);

	    // Since Notifications can be added to the page,
	    // set up the body to listen for the newNotification event
	    // to get things started.
	    var notificationAdded = listen('newNotification', $body);

	    //+ renderedNotification :: EventStream Html
	    var renderedNotification = notificationAdded.map(toRenderedNotification);

	    var showNotification = stepper(false, renderedNotification.map(true));

	    //+ notificationHtml :: Behavior Html
	    var notificationHtml = stepper('', renderedNotification);

	    notificationHtml.bind($notificationWrapper[0], 'innerHTML');

	    notificationAdded.and(showNotification).next(function() {

	      var $root        = $(CONFIG.SELECTORS.NOTIFICATION),
	          $closeButton = $root.find(CONFIG.SELECTORS.DISMISS),
	          $copy        = $root.find(CONFIG.SELECTORS.COPY),
	          copyHeight   = $copy.outerHeight(); // need to apply a fixed height value to transition height through css

	      // STREAMS
	      var closeClicks = listen('click', $closeButton[0]);

	      // TRANSITIONS
	      var closeTransition = transition($root[0], CONFIG.CLASSES.HIDDEN, { height: '0px' });
	      var openTransition = transition($root[0], CONFIG.CLASSES.VISIBLE, { height: copyHeight });

	      // Attach an event to hide the notification
	      closeClicks.next(function() {
	        $root.css('height', $copy.outerHeight());
	        closeTransition.run(function() {
	          // if the user is still focused on the dismiss button when it gets removed,
	          // move focus to the wrapper that isn't removed so focus doesn't return to the top of the page
	          if( $(CONFIG.SELECTORS.FOCUSED_ITEM).get(0) === $closeButton.get(0) ) {
	            $notificationWrapper.trigger('focus');
	          }
	          $root.remove();
	        });
	      });

	      // Show the notification
	      openTransition.run(function() {
	        $root.css('height', 'auto');
	      });
	    });
	  }

	  Notification.SUCCESS = 'success';
	  Notification.ATTENTION = 'attention';
	  Notification.WARNING = 'warning';
	  Notification.NOTICE = 'notice';

	  Notification.EVENTS = {};
	  Notification.EVENTS.NEW = 'newNotification';

	  Notification.trigger = function Notification_trigger(type, message) {
	    var evt = $.Event(Notification.EVENTS.NEW);
	    evt.body = message;
	    evt.notificationType = type;
	    $body.trigger(evt);
	  };

	  module.exports = Notification;

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 64 */,
/* 65 */,
/* 66 */,
/* 67 */,
/* 68 */,
/* 69 */,
/* 70 */,
/* 71 */,
/* 72 */,
/* 73 */,
/* 74 */,
/* 75 */,
/* 76 */,
/* 77 */,
/* 78 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module) {
	  'use strict';

	  module.exports = {

	    SELECTORS: {
	      DROPDOWN: '.js-dropdown',
	      HOVER_DROPDOWN: '.js-hover-dropdown',
	      TRIGGER: '.js-trigger',
	      MAIN: '#a11y-main',
	      CLOSE_BUTTON: '.js-close-dropdown',
	      ACTIVE: '.active'
	    },

	    ACTIVE_CLASS: 'active',

	    HOVER_DELAY: {
	      EXIT: 300
	    }

	  };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 79 */,
/* 80 */,
/* 81 */,
/* 82 */,
/* 83 */,
/* 84 */,
/* 85 */,
/* 86 */,
/* 87 */,
/* 88 */,
/* 89 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var $         = __webpack_require__(2),
	      render    = __webpack_require__(18),
	      TEMPLATES = __webpack_require__(21);

	  var loadingMask = null;

	  module.exports = function loading_mask() {

	    if (!loadingMask) {
	      loadingMask = $(render(TEMPLATES.LOADING_MASK, {}))[0];
	    }

	    return loadingMask;
	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 90 */,
/* 91 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var $ = __webpack_require__(2);

	  var DEFAULT_CONFIG = {

	    SELECTORS : {
	      COLLAPSIBLE : '.collapsible',
	      HEADER      : 'div:first-child'
	    },

	    CLASSES : {
	      HEADER_WRAPPER : 'collapsible-header-wrapper',
	      HEADER         : 'collapsible-header',
	      CONTENT        : 'collapsible-content'
	    },

	    ATTRIBUTES : {
	      ID_PREFIX : 'collapsible-content-'
	    }

	  };

	  module.exports = function draw_collapsible($element, options) {

	    var CONFIG = $.extend({}, DEFAULT_CONFIG, (options || {}));

	    // HELPER FUNCTIONS
	    var formatHeader = function($element, index) {

	      var headerAttributes  = {
	            'class'         : CONFIG.CLASSES.HEADER_WRAPPER
	          },
	          buttonAttributes  = {
	            'aria-expanded' : 'false',
	            'aria-controls' : CONFIG.ATTRIBUTES.ID_PREFIX + index,
	            'class'         : CONFIG.CLASSES.HEADER
	          },
	          $newHeader        = $('<h3 />'),
	          $headerTrigger    = $('<button />'),
	          content           = $element.text();

	      return (
	        $newHeader
	          .attr(headerAttributes)
	          .append(
	            $headerTrigger
	              .attr(buttonAttributes)
	              .text(content)
	            )
	      );
	    };

	    var formatContent = function(content, index) {

	      var contentAttributes = {
	            'id'            : CONFIG.ATTRIBUTES.ID_PREFIX + index,
	            'class'         : CONFIG.CLASSES.CONTENT,
	            'aria-hidden'   : 'true'
	          },
	          $contentWrapper   = $('<div />');

	      return (
	        $contentWrapper
	          .attr(contentAttributes)
	          .html(content)
	      );
	    };

	    // STATIC ELEMENTS
	    var $collapsible = $element.find(CONFIG.SELECTORS.COLLAPSIBLE);

	    // update the markup around the collapsibles to make it easier to target content to hide/show
	    $collapsible.each(function(index) {

	      var $this               = $(this),
	          content             = $this.html(),
	          $collapsibleHeader  = $(content).filter(CONFIG.SELECTORS.HEADER),
	          $newHeader          = formatHeader($collapsibleHeader, index),
	          $collapsibleContent = formatContent(content, index),
	          $headerToRemove     = $collapsibleContent.find(CONFIG.SELECTORS.HEADER); // the content includes the header, so that needs to be plucked

	      $headerToRemove.remove(); // pluck the duplicate header

	      $this.empty(); // empty out the .collapsible element
	      $this.append($newHeader); // add the header back in
	      $this.append($collapsibleContent); // add the content (minus duplicat header) back in
	    });

	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 92 */,
/* 93 */,
/* 94 */,
/* 95 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var $         = __webpack_require__(2),
	      render    = __webpack_require__(18),
	      TEMPLATES = __webpack_require__(21);

	  var errorPage = null;

	  module.exports = function error_page() {

	    if (!errorPage) {
	      errorPage = $(render(TEMPLATES.ERROR_PAGE, {}))[0];
	    }

	    return errorPage;
	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 96 */,
/* 97 */,
/* 98 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_RESULT__ = function(require, exports, module) {

	  'use strict';

	  var $            = __webpack_require__(2),
	      log          = __webpack_require__(5).Utils.log,
	      toRequestUrl = __webpack_require__(8).toRequestUrl0,
	      ROUTES       = __webpack_require__(12);

	  module.exports = function(answerId, pageKey) {
	    try {
	      $.post(toRequestUrl(ROUTES.ENTITY_VIEW), {
	        answerId : answerId,
	        pageKey : pageKey
	      });
	    } catch(e) {
	      log('error: track entity: ', e);
	    }
	  };

	}.call(exports, __webpack_require__, exports, module), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

/***/ },
/* 99 */,
/* 100 */,
/* 101 */,
/* 102 */,
/* 103 */
/***/ function(module, exports, __webpack_require__) {

	var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;!(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports, module, __webpack_require__(10)], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports, module, _environment) {
	  'use strict';

	  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }

	  var _ENV = _interopRequireDefault(_environment);

	  module.exports = function (key) {
	    if (_ENV['default'].URL.PARAMS[key]) {
	      return _ENV['default'].URL.PARAMS[key];
	    } else {
	      return '';
	    }
	  };
	}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));

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