{
	"name": "Echo",
	"author": [
		"Andrew Garrett",
		"Ryan Kaldari",
		"Benny Situ",
		"Luke Welling",
		"Kunal Mehta",
		"Moriel Schottlender",
		"Jon Robson",
		"Roan Kattouw"
	],
	"url": "https://www.mediawiki.org/wiki/Extension:Echo",
	"descriptionmsg": "echo-desc",
	"license-name": "MIT",
	"type": "specialpage",
	"requires": {
		"MediaWiki": ">= 1.42.0"
	},
	"APIMetaModules": {
		"notifications": {
			"class": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoNotifications",
			"services": [
				"MainConfig"
			]
		},
		"unreadnotificationpages": {
			"class": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoUnreadNotificationPages",
			"services": [
				"PageStore",
				"TitleFactory"
			]
		}
	},
	"APIModules": {
		"echomarkread": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoMarkRead",
		"echomarkseen": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoMarkSeen",
		"echoarticlereminder": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoArticleReminder",
		"echomute": {
			"class": "MediaWiki\\Extension\\Notifications\\Api\\ApiEchoMute",
			"services": [
				"CentralIdLookup",
				"LinkBatchFactory",
				"UserOptionsManager"
			]
		}
	},
	"DefaultUserOptions": {
		"echo-email-frequency": 0,
		"echo-dont-email-read-notifications": false
	},
	"ConditionalUserOptions": {
		"echo-subscriptions-web-reverted": [
			[
				false,
				[ "registered-after", "20240208200000" ]
			]
		],
		"echo-subscriptions-web-article-linked": [
			[
				true,
				[ "registered-after", "20240208200000" ]
			]
		],
		"echo-subscriptions-email-mention": [
			[
				true,
				[ "registered-after", "20240208200000" ]
			]
		],
		"echo-subscriptions-email-article-linked": [
			[
				true,
				[ "registered-after", "20240208200000" ]
			]
		]
	},
	"ExtensionFunctions": [
		"MediaWiki\\Extension\\Notifications\\Hooks::initEchoExtension"
	],
	"JobClasses": {
		"EchoNotificationJob": "MediaWiki\\Extension\\Notifications\\Jobs\\NotificationJob",
		"EchoNotificationDeleteJob": {
			"class": "MediaWiki\\Extension\\Notifications\\Jobs\\NotificationDeleteJob",
			"services": [
				"JobQueueGroup"
			]
		},
		"EchoPushNotificationRequest": "MediaWiki\\Extension\\Notifications\\Push\\NotificationRequestJob"
	},
	"SpecialPages": {
		"Notifications": "MediaWiki\\Extension\\Notifications\\Special\\SpecialNotifications",
		"DisplayNotificationsConfiguration": {
			"class": "MediaWiki\\Extension\\Notifications\\Special\\SpecialDisplayNotificationsConfiguration",
			"services": [
				"EchoAttributeManager",
				"UserOptionsManager"
			]
		},
		"NotificationsMarkRead": "MediaWiki\\Extension\\Notifications\\Special\\SpecialNotificationsMarkRead"
	},
	"AvailableRights": [
		"manage-all-push-subscriptions"
	],
	"GroupPermissions": {
		"push-subscription-manager": {
			"manage-all-push-subscriptions": true
		}
	},
	"MessagesDirs": {
		"Echo": [
			"i18n",
			"i18n/api"
		]
	},
	"ExtensionMessagesFiles": {
		"EchoAliases": "Echo.alias.php"
	},
	"QUnitTestModule": {
		"localBasePath": "",
		"remoteExtPath": "Echo",
		"dependencies": [
			"ext.echo.dm",
			"ext.echo.mobile"
		],
		"scripts": [
			"tests/qunit/model/test_mw.echo.dm.BundleNotificationItem.js",
			"tests/qunit/model/test_mw.echo.dm.CrossWikiNotificationItem.js",
			"tests/qunit/model/test_mw.echo.dm.FiltersModel.js",
			"tests/qunit/model/test_mw.echo.dm.NotificationGroupsList.js",
			"tests/qunit/model/test_mw.echo.dm.NotificationItem.js",
			"tests/qunit/model/test_mw.echo.dm.NotificationsList.js",
			"tests/qunit/model/test_mw.echo.dm.PaginationModel.js",
			"tests/qunit/model/test_mw.echo.dm.SeenTimeModel.js",
			"tests/qunit/model/test_mw.echo.dm.SourcePagesModel.js",
			"tests/qunit/model/test_mw.echo.dm.UnreadNotificationCounter.js"
		]
	},
	"ResourceModules": {
		"ext.echo.ui.desktop": {
			"scripts": [
				"ui/mw.echo.ui.BadgeLinkWidget.js",
				"ui/mw.echo.ui.NotificationBadgeWidget.js"
			],
			"styles": [
				"styles/mw.echo.ui.NotificationBadgeWidget.less"
			],
			"dependencies": [
				"ext.echo.ui",
				"ext.echo.styles.badge",
				"mediawiki.util",
				"mediawiki.api"
			]
		},
		"ext.echo.ui": {
			"scripts": [
				"controller/mw.echo.Controller.js",
				"ui/mw.echo.ui.js",
				"ui/mw.echo.ui.SortedListWidget.js",
				"ui/mw.echo.ui.SubGroupListWidget.js",
				"ui/mw.echo.ui.NotificationsListWidget.js",
				"ui/mw.echo.ui.PlaceholderItemWidget.js",
				"ui/mw.echo.ui.ToggleReadCircleButtonWidget.js",
				"ui/mw.echo.ui.NotificationItemWidget.js",
				"ui/mw.echo.ui.SingleNotificationItemWidget.js",
				"ui/mw.echo.ui.CrossWikiNotificationItemWidget.js",
				"ui/mw.echo.ui.BundleNotificationItemWidget.js",
				"ui/mw.echo.ui.ClonedNotificationItemWidget.js",
				"ui/mw.echo.ui.ActionMenuPopupWidget.js",
				"ui/mw.echo.ui.MenuItemWidget.js",
				"ui/mw.echo.ui.NotificationsWrapper.js",
				"ui/mw.echo.ui.ConfirmationPopupWidget.js",
				"ext.echo.moment-hack.js"
			],
			"styles": [
				"styles/mw.echo.ui.mobile.less",
				"styles/mw.echo.ui.overlay.less",
				"styles/mw.echo.ui.NotificationItemWidget.less",
				"styles/mw.echo.ui.ToggleReadCircleButtonWidget.less",
				"styles/mw.echo.ui.CrossWikiNotificationItemWidget.less",
				"styles/mw.echo.ui.NotificationsListWidget.less",
				"styles/mw.echo.ui.PlaceholderItemWidget.less",
				"styles/mw.echo.ui.SubGroupListWidget.less",
				"styles/mw.echo.ui.ActionMenuPopupWidget.less",
				"styles/mw.echo.ui.MenuItemWidget.less",
				"styles/mw.echo.ui.NotificationsWrapper.less",
				"styles/mw.echo.ui.ConfirmationPopupWidget.less"
			],
			"skinStyles": {
				"modern": [
					"styles/mw.echo.ui.overlay.monobook.less"
				],
				"monobook": [
					"styles/mw.echo.ui.overlay.monobook.less"
				],
				"vector": [
					"styles/mw.echo.ui.overlay.vector.less"
				],
				"vector-2022": [
					"styles/mw.echo.ui.overlay.vector.less"
				],
				"minerva": [
					"styles/mw.echo.ui.overlay.minerva.less"
				],
				"wikimediaapiportal": [
					"styles/mw.echo.ui.overlay.wikimediaapiportal.less"
				]
			},
			"dependencies": [
				"ext.echo.api",
				"ext.echo.dm",
				"ext.echo.secondaryicons",
				"oojs",
				"oojs-ui-core",
				"oojs-ui-widgets",
				"moment",
				"mediawiki.jqueryMsg",
				"mediawiki.language",
				"mediawiki.Title",
				"oojs-ui.styles.icons-user",
				"oojs-ui.styles.icons-alerts",
				"oojs-ui.styles.icons-content",
				"oojs-ui.styles.icons-interactions",
				"oojs-ui.styles.icons-moderation",
				"oojs-ui.styles.icons-movement",
				"oojs-ui.styles.icons-editing-core"
			],
			"messages": [
				"echo-badge-count",
				"echo-overlay-link",
				"echo-mark-all-as-read",
				"echo-mark-wiki-as-read",
				"echo-notification-alert",
				"echo-notification-notice",
				"echo-notification-loginrequired",
				"echo-notification-popup-loginrequired",
				"notification-link-text-expand-all",
				"notification-link-text-collapse-all",
				"notification-link-text-expand-alert-count",
				"notification-link-text-expand-notice-count",
				"notification-link-text-expand-all-count",
				"notification-timestamp-ago-seconds",
				"notification-timestamp-ago-minutes",
				"notification-timestamp-ago-hours",
				"notification-timestamp-ago-days",
				"notification-timestamp-ago-months",
				"notification-timestamp-ago-years",
				"notification-timestamp-today",
				"notification-timestamp-yesterday",
				"echo-notification-markasread",
				"echo-notification-markasunread",
				"echo-notification-markasread-tooltip",
				"echo-notification-more-options-tooltip",
				"echo-notification-alert-text-only",
				"echo-notification-notice-text-only",
				"echo-email-batch-bullet",
				"echo-notification-placeholder",
				"tooltip-pt-notifications-alert",
				"tooltip-pt-notifications-notice",
				"mytalk",
				"mypreferences",
				"sunday",
				"monday",
				"tuesday",
				"wednesday",
				"thursday",
				"friday",
				"saturday"
			]
		},
		"ext.echo.dm": {
			"scripts": [
				"model/mw.echo.dm.js",
				"model/mw.echo.dm.SourcePagesModel.js",
				"model/mw.echo.dm.PaginationModel.js",
				"model/mw.echo.dm.FiltersModel.js",
				"model/mw.echo.dm.SeenTimeModel.js",
				"model/mw.echo.dm.ModelManager.js",
				"model/mw.echo.dm.SortedList.js",
				"model/mw.echo.dm.NotificationItem.js",
				"model/mw.echo.dm.CrossWikiNotificationItem.js",
				"model/mw.echo.dm.BundleNotificationItem.js",
				"model/mw.echo.dm.NotificationsList.js",
				"model/mw.echo.dm.NotificationGroupsList.js",
				"model/mw.echo.dm.UnreadNotificationCounter.js"
			],
			"dependencies": [
				"oojs",
				"ext.echo.init",
				"ext.echo.api",
				"moment"
			],
			"messages": [
				"echo-api-failure",
				"echo-notification-loginrequired",
				"echo-api-failure-cross-wiki"
			]
		},
		"ext.echo.api": {
			"scripts": [
				"api/mw.echo.api.js",
				"api/mw.echo.api.PromisePrioritizer.js",
				"api/mw.echo.api.EchoApi.js",
				"api/mw.echo.api.APIHandler.js",
				"api/mw.echo.api.LocalAPIHandler.js",
				"api/mw.echo.api.ForeignAPIHandler.js",
				"api/mw.echo.api.NetworkHandler.js"
			],
			"dependencies": [
				"mediawiki.api",
				"mediawiki.ForeignApi",
				"oojs"
			]
		},
		"ext.echo.mobile": {
			"styles": [
				"mobile/overlay.less",
				"mobile/notificationsFilterOverlay.less"
			],
			"messages": [
				"notifications",
				"echo-mobile-notifications-filter-title",
				"echo-mark-all-as-read-confirmation"
			],
			"dependencies": [
				"mediawiki.util",
				"mediawiki.router",
				"ext.echo.ui",
				"oojs-ui.styles.icons-interactions"
			],
			"packageFiles": [
				"mobile/notifications.js",
				"mobile/list.js",
				{
					"name": "mobile/config.json",
					"callback": "MediaWiki\\Extension\\Notifications\\Hooks::getConfigVars"
				},
				"mobile/overlay.js",
				"mobile/notificationsFilterOverlay.js"
			]
		},
		"ext.echo.init": {
			"packageFiles": [
				"ext.echo.init.js",
				{
					"name": "config.json",
					"callback": "MediaWiki\\Extension\\Notifications\\Hooks::getConfigVars"
				}
			],
			"dependencies": [
				"ext.echo.api",
				"mediawiki.jqueryMsg",
				"web2017-polyfills"
			],
			"messages": [
				"echo-badge-count",
				"echo-displaysnippet-title",
				"parentheses"
			]
		},
		"ext.echo.centralauth": {
			"packageFiles": [
				"ext.echo.centralauth.js"
			]
		},
		"ext.echo.styles.badge": {
			"styles": [
				"nojs/mw.echo.badge.less"
			]
		},
		"ext.echo.styles.notifications": {
			"styles": [
				"nojs/mw.echo.notifications.less",
				"styles/LabelIconWidget.less"
			]
		},
		"ext.echo.styles.alert": {
			"styles": [
				"nojs/mw.echo.alert.less"
			],
			"skinStyles": {
				"monobook": [
					"nojs/mw.echo.alert.monobook.less"
				]
			}
		},
		"ext.echo.special": {
			"scripts": [
				"ui/mw.echo.ui.PaginationWidget.js",
				"ui/mw.echo.ui.DatedSubGroupListWidget.js",
				"ui/mw.echo.ui.DatedNotificationsWidget.js",
				"ui/mw.echo.ui.ReadStateButtonSelectWidget.js",
				"ui/mw.echo.ui.PageNotificationsOptionWidget.js",
				"ui/mw.echo.ui.PageFilterWidget.js",
				"ui/mw.echo.ui.CrossWikiUnreadFilterWidget.js",
				"ui/mw.echo.ui.NotificationsInboxWidget.js",
				"ui/mw.echo.ui.SpecialHelpMenuWidget.js",
				"special/ext.echo.special.js"
			],
			"styles": [
				"styles/mw.echo.ui.PaginationWidget.less",
				"styles/mw.echo.ui.DatedSubGroupListWidget.less",
				"styles/mw.echo.ui.DatedNotificationsWidget.less",
				"styles/mw.echo.ui.NotificationsInboxWidget.less",
				"styles/mw.echo.ui.PageNotificationsOptionWidget.less",
				"styles/mw.echo.ui.PageFilterWidget.less",
				"styles/mw.echo.ui.CrossWikiUnreadFilterWidget.less",
				"styles/mw.echo.ui.SpecialHelpMenuWidget.less"
			],
			"skinStyles": {
				"minerva": [
					"styles/mw.echo.ui.NotificationsInboxWidget.minerva.less"
				]
			},
			"dependencies": [
				"ext.echo.ui",
				"mediawiki.Uri",
				"ext.echo.styles.special"
			],
			"messages": [
				"notification-inbox-filter-read",
				"notification-inbox-filter-unread",
				"notification-inbox-filter-all",
				"echo-notification-placeholder-filters",
				"echo-specialpage-pagination-numnotifications",
				"echo-specialpage-pagination-range",
				"echo-specialpage-pagefilters-title",
				"echo-specialpage-pagefilters-subtitle",
				"echo-mark-all-as-read",
				"echo-learn-more",
				"mypreferences",
				"echo-specialpage-section-markread",
				"echo-specialpage-pagefilterwidget-aria-label",
				"echo-specialpage-special-help-menu-widget-aria-label"
			]
		},
		"ext.echo.styles.special": {
			"styles": [
				"nojs/mw.echo.special.less"
			]
		}
	},
	"ResourceFileModulePaths": {
		"localBasePath": "modules",
		"remoteExtPath": "Echo/modules"
	},
	"Hooks": {
		"LoadExtensionSchemaUpdates": "schema",
		"GetPreferences": "main",
		"BeforePageDisplay": "main",
		"ResourceLoaderRegisterModules": "main",
		"UserGroupsChanged": "main",
		"LoadUserOptions": "main",
		"SaveUserOptions": "main",
		"UserGetDefaultOptions": "main",
		"UserClearNewTalkNotification": "main",
		"EmailUserComplete": "main",
		"LoginFormValidErrorMessages": "main",
		"OutputPageCheckLastModified": "main",
		"ArticleDeleteComplete": "main",
		"ArticleUndelete": "main",
		"UserMergeAccountFields": "usermerge",
		"MergeAccountFromTo": "usermerge",
		"UserMergeAccountDeleteTables": "usermerge",
		"PageSaveComplete": "main",
		"LocalUserCreated": "main",
		"RollbackComplete": "main",
		"UserSaveSettings": "main",
		"AbortTalkPageEmailNotification": "main",
		"SendWatchlistEmailNotification": "main",
		"GetNewMessagesAlert": "main",
		"LinksUpdateComplete": "main",
		"SpecialMuteModifyFormFields": "main",
		"RecentChange_save": "main",
		"ApiMain::moduleManager": "main",
		"SkinTemplateNavigation::Universal": "main",
		"PreferencesGetIcon": "main"
	},
	"HookHandlers": {
		"main": {
			"class": "MediaWiki\\Extension\\Notifications\\Hooks",
			"services": [
				"AuthManager",
				"CentralIdLookup",
				"MainConfig",
				"EchoAttributeManager",
				"HookContainer",
				"ContentLanguage",
				"LinkRenderer",
				"NamespaceInfo",
				"PermissionManager",
				"RevisionStore",
				"StatsdDataFactory",
				"TalkPageNotificationManager",
				"UserEditTracker",
				"UserFactory",
				"UserOptionsManager"
			]
		},
		"schema": {
			"class": "MediaWiki\\Extension\\Notifications\\SchemaHooks"
		},
		"usermerge": {
			"class": "MediaWiki\\Extension\\Notifications\\UserMergeHooks"
		}
	},
	"config": {
		"EchoEnableEmailBatch": {
			"value": true
		},
		"EchoUseJobQueue": {
			"value": false
		},
		"EchoEmailFooterAddress": {
			"value": ""
		},
		"EchoCluster": {
			"value": false
		},
		"EchoSharedTrackingDB": {
			"value": false
		},
		"EchoSharedTrackingCluster": {
			"value": false
		},
		"EchoSeenTimeCacheType": {
			"value": null
		},
		"EchoMaxUpdateCount": {
			"value": 2000
		},
		"EchoMaxMentionsCount": {
			"value": 50
		},
		"EchoMentionStatusNotifications": {
			"value": false
		},
		"EchoMentionsOnMultipleSectionEdits": {
			"value": true
		},
		"EchoMentionOnChanges": {
			"value": true
		},
		"EchoBundleEmailInterval": {
			"value": 0
		},
		"DefaultNotifyTypeAvailability": {
			"value": {
				"web": true,
				"email": true
			}
		},
		"NotifyTypeAvailabilityByCategory": {
			"value": {
				"system-noemail": {
					"web": true,
					"email": false
				},
				"system-emailonly": {
					"web": false,
					"email": true
				},
				"emailuser": {
					"web": true,
					"email": false
				},
				"article-linked": {
					"web": true,
					"email": false
				},
				"mention-failure": {
					"web": true,
					"email": false
				},
				"mention-success": {
					"web": true,
					"email": false
				},
				"thank-you-edit": {
					"web": true,
					"email": false
				}
			},
			"merge_strategy": "array_plus_2d"
		},
		"EchoNotifiers": {
			"value": {
				"web": [
					"EchoNotifier",
					"notifyWithNotification"
				],
				"email": [
					"EchoNotifier",
					"notifyWithEmail"
				]
			}
		},
		"EchoAgentBlacklist": {
			"value": []
		},
		"EchoOnWikiBlacklist": {
			"value": "Echo-blacklist"
		},
		"EchoPerUserBlacklist": {
			"value": false
		},
		"EchoPerUserWhitelistFormat": {
			"value": "%s/Echo-whitelist"
		},
		"EchoCrossWikiNotifications": {
			"value": false
		},
		"EchoNotificationCategories": {
			"value": {
				"system": {
					"priority": 9,
					"no-dismiss": [
						"all"
					]
				},
				"system-noemail": {
					"priority": 9,
					"no-dismiss": [
						"all"
					]
				},
				"system-emailonly": {
					"priority": 9,
					"no-dismiss": [
						"all"
					]
				},
				"user-rights": {
					"priority": 9,
					"tooltip": "echo-pref-tooltip-user-rights"
				},
				"other": {
					"no-dismiss": [
						"all"
					]
				},
				"edit-user-talk": {
					"priority": 1,
					"no-dismiss": [
						"web"
					],
					"tooltip": "echo-pref-tooltip-edit-user-talk"
				},
				"edit-user-page": {
					"priority": 1,
					"tooltip": "echo-pref-tooltip-edit-user-page"
				},
				"reverted": {
					"priority": 9,
					"tooltip": "echo-pref-tooltip-reverted"
				},
				"article-linked": {
					"priority": 5,
					"tooltip": "echo-pref-tooltip-article-linked"
				},
				"mention": {
					"priority": 4,
					"tooltip": "echo-pref-tooltip-mention"
				},
				"mention-failure": {
					"priority": 4,
					"tooltip": "echo-pref-tooltip-mention-failure"
				},
				"mention-success": {
					"priority": 4,
					"tooltip": "echo-pref-tooltip-mention-success"
				},
				"emailuser": {
					"priority": 9,
					"tooltip": "echo-pref-tooltip-emailuser"
				},
				"article-reminder": {
					"priority": 1,
					"tooltip": "echo-pref-tooltip-article-reminder"
				},
				"thank-you-edit": {
					"priority": 9,
					"tooltip": "echo-pref-tooltip-thank-you-edit"
				},
				"watchlist": {
					"priority": 5,
					"tooltip": "echo-pref-tooltip-watchlist"
				},
				"minor-watchlist": {
					"priority": 6,
					"tooltip": "echo-pref-tooltip-minor-watchlist"
				}
			},
			"merge_strategy": "array_plus_2d"
		},
		"EchoNotificationIcons": {
			"value": {
				"watchlist-progressive": {
					"path": {
						"ltr": "Echo/modules/icons/watchlist-ltr-progressive.svg",
						"rtl": "Echo/modules/icons/watchlist-rtl-progressive.svg"
					}
				},
				"placeholder": {
					"path": "Echo/modules/icons/notice.svg"
				},
				"chat": {
					"path": {
						"ltr": "Echo/modules/icons/speechBubbles-ltr-progressive.svg",
						"rtl": "Echo/modules/icons/speechBubbles-rtl-progressive.svg"
					}
				},
				"edit": {
					"path": "Echo/modules/icons/edit-progressive.svg"
				},
				"edit-user-page": {
					"path": "Echo/modules/icons/edit-user-page.svg"
				},
				"edit-user-talk": {
					"path": "Echo/modules/icons/edit-user-talk-progressive.svg"
				},
				"linked": {
					"path": "Echo/modules/icons/link-progressive.svg"
				},
				"mention": {
					"path": "Echo/modules/icons/mention-progressive.svg"
				},
				"mention-failure": {
					"path": "Echo/modules/icons/mention-failure.svg"
				},
				"mention-success": {
					"path": "Echo/modules/icons/mention-success-constructive.svg"
				},
				"mention-status-bundle": {
					"path": "Echo/modules/icons/mention-status-bundle-progressive.svg"
				},
				"reviewed": {
					"path": "Echo/modules/icons/articleCheck-progressive.svg"
				},
				"revert": {
					"path": "Echo/modules/icons/revert.svg"
				},
				"user-rights": {
					"path": "Echo/modules/icons/user-rights-progressive.svg"
				},
				"emailuser": {
					"path": "Echo/modules/icons/message-constructive.svg"
				},
				"help": {
					"path": {
						"ltr": "Echo/modules/icons/helpNotice-ltr.svg",
						"rtl": "Echo/modules/icons/helpNotice-rtl.svg"
					}
				},
				"global": {
					"path": "Echo/modules/icons/global-progressive.svg"
				},
				"site": {
					"url": false
				},
				"article-reminder": {
					"path": "Echo/modules/icons/global-progressive.svg"
				}
			},
			"merge_strategy": "array_plus_2d"
		},
		"EchoSecondaryIcons": {
			"value": {
				"linked": {
					"path": "Echo/modules/icons/link-progressive.svg"
				},
				"changes": {
					"path": "Echo/modules/icons/changes.svg"
				},
				"thanks": {
					"path": {
						"ltr": "Echo/modules/icons/userTalk-ltr.svg",
						"rtl": "Echo/modules/icons/userTalk-rtl.svg"
					}
				},
				"unbell": {
					"path": "Echo/modules/icons/unbell.svg"
				},
				"userSpeechBubble": {
					"path": "Echo/modules/icons/user-speech-bubble.svg"
				}
			},
			"merge_strategy": "array_plus_2d"
		},
		"EchoNotifications": {
			"value": {
				"welcome": {
					"user-locators": [
						"EchoUserLocator::locateEventAgent"
					],
					"canNotifyAgent": true,
					"category": "system-noemail",
					"group": "positive",
					"section": "message",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoWelcomePresentationModel"
				},
				"edit-user-page": {
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditUserPagePresentationModel",
					"user-locators": [
						"EchoUserLocator::locateUserPageOwner"
					],
					"category": "edit-user-page",
					"group": "interactive",
					"section": "alert",
					"bundle": {
						"web": true,
						"email": false,
						"expandable": true
					},
					"immediate": true
				},
				"edit-user-talk": {
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditUserTalkPresentationModel",
					"user-locators": [
						"MediaWiki\\Extension\\Notifications\\UserLocator::locateTalkPageOwner"
					],
					"category": "edit-user-talk",
					"group": "interactive",
					"section": "alert",
					"bundle": {
						"web": true,
						"email": false,
						"expandable": true
					},
					"immediate": true
				},
				"reverted": {
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoRevertedPresentationModel",
					"user-locators": [
						[
							"MediaWiki\\Extension\\Notifications\\UserLocator::locateFromEventExtra",
							[
								"reverted-user-id"
							]
						]
					],
					"category": "reverted",
					"group": "negative",
					"section": "alert"
				},
				"page-linked": {
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoPageLinkedPresentationModel",
					"user-locators": [
						"MediaWiki\\Extension\\Notifications\\UserLocator::locateArticleCreator"
					],
					"category": "article-linked",
					"group": "neutral",
					"section": "message",
					"bundle": {
						"web": true,
						"email": true,
						"expandable": true
					}
				},
				"minor-watchlist-change": {
					"user-locators": [
						"MediaWiki\\Extension\\Notifications\\UserLocator::locateUsersWatchingTitle"
					],
					"category": "minor-watchlist",
					"group": "interactive",
					"section": "message",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoWatchlistChangePresentationModel",
					"bundle": {
						"web": true,
						"email": true,
						"expandable": true
					}
				},
				"watchlist-change": {
					"user-locators": [
						"MediaWiki\\Extension\\Notifications\\UserLocator::locateUsersWatchingTitle"
					],
					"section": "message",
					"category": "watchlist",
					"group": "interactive",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoWatchlistChangePresentationModel",
					"bundle": {
						"web": true,
						"email": true,
						"expandable": true
					}
				},
				"mention": {
					"user-locators": [
						[
							"MediaWiki\\Extension\\Notifications\\UserLocator::locateFromEventExtra",
							[
								"mentioned-users"
							]
						]
					],
					"category": "mention",
					"group": "interactive",
					"section": "alert",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionPresentationModel"
				},
				"mention-summary": {
					"user-locators": [
						[
							"MediaWiki\\Extension\\Notifications\\UserLocator::locateFromEventExtra",
							[
								"mentioned-users"
							]
						]
					],
					"category": "mention",
					"group": "interactive",
					"section": "alert",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionInSummaryPresentationModel"
				},
				"mention-failure": {
					"user-locators": [
						[
							"MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"
						]
					],
					"canNotifyAgent": true,
					"category": "mention-failure",
					"bundle": {
						"web": true,
						"expandable": true
					},
					"group": "negative",
					"section": "alert",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel"
				},
				"mention-failure-too-many": {
					"user-locators": [
						[
							"MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"
						]
					],
					"canNotifyAgent": true,
					"category": "mention-failure",
					"group": "negative",
					"section": "alert",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel"
				},
				"mention-success": {
					"user-locators": [
						[
							"MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"
						]
					],
					"canNotifyAgent": true,
					"category": "mention-success",
					"bundle": {
						"web": true,
						"expandable": true
					},
					"group": "positive",
					"section": "message",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel"
				},
				"user-rights": {
					"user-locators": [
						[
							"MediaWiki\\Extension\\Notifications\\UserLocator::locateFromEventExtra",
							[
								"user"
							]
						]
					],
					"category": "user-rights",
					"group": "neutral",
					"section": "alert",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoUserRightsPresentationModel"
				},
				"emailuser": {
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEmailUserPresentationModel",
					"user-locators": [
						[
							"MediaWiki\\Extension\\Notifications\\UserLocator::locateFromEventExtra",
							[
								"to-user-id"
							]
						]
					],
					"category": "emailuser",
					"group": "neutral",
					"section": "alert"
				},
				"foreign": {
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoForeignPresentationModel",
					"user-locators": [
						"MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"
					],
					"category": "foreign",
					"group": "positive",
					"section": "alert"
				},
				"thank-you-edit": {
					"user-locators": [
						"MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"
					],
					"canNotifyAgent": true,
					"category": "thank-you-edit",
					"group": "positive",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditThresholdPresentationModel",
					"section": "message"
				},
				"article-reminder": {
					"user-locators": [
						"MediaWiki\\Extension\\Notifications\\UserLocator::locateEventAgent"
					],
					"canNotifyAgent": true,
					"category": "article-reminder",
					"group": "positive",
					"presentation-model": "MediaWiki\\Extension\\Notifications\\Formatters\\EchoArticleReminderPresentationModel",
					"section": "message"
				}
			},
			"merge_strategy": "array_plus_2d"
		},
		"EchoCacheVersion": {
			"value": "1.12"
		},
		"AllowArticleReminderNotification": {
			"value": false,
			"description": "This is a feature flag to the Article Reminder notification"
		},
		"EchoMaxMentionsInEditSummary": {
			"value": 0,
			"description": "Maximum nubmer of users that will be notified that they were linked from an edit summary or 0 for no notifications"
		},
		"EchoPollForUpdates": {
			"value": 0,
			"description": "This is the polling rate i.e. the time after which we check for notifications count on the client side. It also controls whether notification count will be displayed in browser title. If polling rate is 0 this means polling is disabled and notification count is also not shown in browser title"
		},
		"EchoWatchlistNotifications": {
			"value": false,
			"description": "Feature flag to enable Echo notifications whenever a page on a user's watchlist is changed, replacing the built-in preference to send emails in that circumstance."
		},
		"EchoWatchlistEmailOncePerPage": {
			"value": true,
			"description": "Whether to send email notifications each time a watched page is edited (if false) or only the first time the page is changed before being visited again by the user (if true)"
		},
		"EchoEnablePush": {
			"value": false,
			"description": "Whether to enable push notifications"
		},
		"EchoPushServiceBaseUrl": {
			"value": false,
			"description": "Request endpoint URL for the push notification service"
		},
		"EchoPushMaxSubscriptionsPerUser": {
			"value": 0,
			"description": "Maximum number of push subscriptions that may be stored in the DB at any given time for a single central user ID."
		}
	},
	"manifest_version": 2,
	"AutoloadClasses": {
		"BackfillUnreadWikis": "maintenance/backfillUnreadWikis.php",
		"EchoAttributeManager": "includes/AttributeManager.php",
		"MediaWiki\\Extension\\Notifications\\AttributeManager": "includes/AttributeManager.php",
		"EchoCallbackIterator": "includes/Iterator/CallbackIterator.php",
		"MediaWiki\\Extension\\Notifications\\Iterator\\CallbackIterator": "includes/Iterator/CallbackIterator.php",
		"EchoDiscussionParser": "includes/DiscussionParser.php",
		"MediaWiki\\Extension\\Notifications\\DiscussionParser": "includes/DiscussionParser.php",
		"EchoEditUserTalkPresentationModel": "includes/Formatters/EchoEditUserTalkPresentationModel.php",
		"MediaWiki\\Extension\\Notifications\\Formatters\\EchoEditUserTalkPresentationModel": "includes/Formatters/EchoEditUserTalkPresentationModel.php",
		"EchoEvent": "includes/Model/Event.php",
		"MediaWiki\\Extension\\Notifications\\Model\\Event": "includes/Model/Event.php",
		"EchoEventPresentationModel": "includes/Formatters/EchoEventPresentationModel.php",
		"MediaWiki\\Extension\\Notifications\\Formatters\\EchoEventPresentationModel": "includes/Formatters/EchoEventPresentationModel.php",
		"EchoMentionPresentationModel": "includes/Formatters/EchoMentionPresentationModel.php",
		"MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionPresentationModel": "includes/Formatters/EchoMentionPresentationModel.php",
		"EchoMentionStatusPresentationModel": "includes/Formatters/EchoMentionStatusPresentationModel.php",
		"MediaWiki\\Extension\\Notifications\\Formatters\\EchoMentionStatusPresentationModel": "includes/Formatters/EchoMentionStatusPresentationModel.php",
		"EchoNotification": "includes/Model/Notification.php",
		"MediaWiki\\Extension\\Notifications\\Model\\Notification": "includes/Model/Notification.php",
		"EchoNotificationMapper": "includes/Mapper/NotificationMapper.php",
		"MediaWiki\\Extension\\Notifications\\Mapper\\NotificationMapper": "includes/Mapper/NotificationMapper.php",
		"EchoNotifier": "includes/Notifier.php",
		"MediaWiki\\Extension\\Notifications\\Notifier": "includes/Notifier.php",
		"EchoPresentationModelSection": "includes/Formatters/EchoPresentationModelSection.php",
		"MediaWiki\\Extension\\Notifications\\Formatters\\EchoPresentationModelSection": "includes/Formatters/EchoPresentationModelSection.php",
		"EchoUserLocator": "includes/UserLocator.php",
		"MediaWiki\\Extension\\Notifications\\UserLocator": "includes/UserLocator.php",
		"GenerateSampleNotifications": "maintenance/generateSampleNotifications.php",
		"MWEchoDbFactory": "includes/DbFactory.php",
		"MediaWiki\\Extension\\Notifications\\DbFactory": "includes/DbFactory.php",
		"ProcessEchoEmailBatch": "maintenance/processEchoEmailBatch.php",
		"RecomputeNotifCounts": "maintenance/recomputeNotifCounts.php",
		"RemoveInvalidNotification": "maintenance/removeInvalidNotification.php",
		"RemoveOrphanedEvents": "maintenance/removeOrphanedEvents.php",
		"EchoUpdatePerUserBlacklist": "maintenance/updatePerUserBlacklist.php",
		"EchoPush\\PushNotifier": "includes/Push/PushNotifier.php",
		"MediaWiki\\Extension\\Notifications\\Push\\PushNotifier": "includes/Push/PushNotifier.php"
	},
	"AutoloadNamespaces": {
		"MediaWiki\\Extension\\Notifications\\": "includes/"
	},
	"TestAutoloadClasses": {
		"EchoAbstractMapperStub": "tests/phpunit/Mapper/EchoAbstractMapperStub.php",
		"EchoExecuteFirstArgumentStub": "tests/phpunit/Mapper/EchoExecuteFirstArgumentStub.php"
	},
	"TestAutoloadNamespaces": {
		"MediaWiki\\Extension\\Notifications\\Test\\": "tests/phpunit/",
		"MediaWiki\\Extension\\Notifications\\Test\\Integration\\": "tests/phpunit/integration/"
	},
	"ServiceWiringFiles": [
		"ServiceWiring.php"
	],
	"ConfigRegistry": {
		"Echo": "GlobalVarConfig::newInstance"
	}
}