data, scope)\n * See EventService.emitEvent\n *\n * @ngInject\n */\n function EventService($rootScope) {\n var eventService = this;\n eventService.EVENT = {\n /**\n * Loading Events\n *\n * Broadcast from AppConfig\n */\n LOADING_START: 'loadingStart',\n LOADING_STOP: 'loadingStop',\n\n /**\n * scroll to trans unit\n * data: {id: number, updateURL: boolean, focus: boolean}\n * id: (transunit id),\n * updateURL: (flag on whether to update url with trans unit id)\n * focus: flag on whether to have row in view and focused\n */\n SELECT_TRANS_UNIT: 'selectTransUnit',\n\n //data: {phrase: Phrase, sourceIndex:sourceIndex}\n COPY_FROM_SOURCE: 'copyFromSource',\n\n //data: {phrase: Phrase}\n UNDO_EDIT: 'undoEdit',\n\n //data: {phrase: Phrase}\n CANCEL_EDIT: 'cancelEdit',\n\n //data:phrase\n FOCUS_TRANSLATION: 'focusTranslation',\n\n /**\n * data: {\n * phrase: Phrase, status: StatusInfo, locale: string, docId: string\n * }\n * phrase:\n * status: Object. Request save state\n * locale: target locale\n * docId: docId\n */\n SAVE_TRANSLATION: 'saveTranslation',\n\n /**\n * Translation save in this editor is being sent to the server and\n * is waiting on a response.\n */\n SAVE_INITIATED: 'saveInitiated',\n\n /**\n * Translation save in this editor has been completed\n * (Server has responded with a success or error).\n */\n SAVE_COMPLETED: 'saveCompleted',\n\n /**\n * The text in the translation editor textbox has been edited and\n * not yet saved.\n */\n TRANSLATION_TEXT_MODIFIED: 'translationTextModified',\n\n /**\n * refresh ui statistic - changes in doc or locale\n *\n * data: {projectSlug: string, versionSlug: string,\n * docId: string, localeId: string}\n */\n REFRESH_STATISTIC: 'refreshStatistic',\n\n GOTO_PREV_PAGE: 'gotoPreviousPage',\n\n GOTO_NEXT_PAGE: 'gotoNextPage',\n\n GOTO_FIRST_PAGE: 'gotoFirstPage',\n\n GOTO_LAST_PAGE: 'gotoLastPage',\n\n /**\n * data: { currentId: number }\n */\n GOTO_NEXT_ROW: 'gotoNextRow',\n GOTO_PREVIOUS_ROW: 'gotoPreviousRow',\n GOTO_NEXT_UNTRANSLATED: 'gotoNextUntranslated',\n\n /**\n * Toggle save as options dropdown.\n * data: {id: number, open: boolean}\n */\n TOGGLE_SAVE_OPTIONS: 'openSaveOptions',\n\n\n /**\n * data: {filter: refer to editorCtrl.filter}\n */\n FILTER_TRANS_UNIT: 'filterTransUnit'\n };\n\n /**\n * Firing an event downwards of scope\n *\n * @param event - eventService.EVENT type\n * @param data - data for the event\n * @param scope - scope of event to to fire, $rootScope if empty\n */\n eventService.broadcastEvent = function(event, data, scope) {\n scope = scope || $rootScope;\n scope.$broadcast(event, data);\n };\n\n /**\n * Firing an event upwards of scope\n *\n * @param event - eventService.EVENT types\n * @param data - data for the event\n * @param scope - scope of event to to fire, $rootScope if empty\n */\n eventService.emitEvent = function(event, data, scope) {\n scope = scope || $rootScope;\n scope.$emit(event, data);\n };\n\n return eventService;\n }\n\n angular\n .module('app')\n .factory('EventService', EventService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name icon\n * @description declarative svg icons\n * @ngInject\n */\n function icon($sce) {\n return {\n restrict: 'E',\n required: ['name'],\n scope: {\n name: '@',\n title: '@',\n size: '@'\n },\n // templateUrl: 'components/icon/icon.html',\n link: function(scope, element) {\n var svg = '',\n titleHtml = '';\n\n element.addClass('Icon');\n\n if (scope.title) {\n titleHtml = '' + scope.title + ' ';\n }\n\n // Stupid hack to make svg work\n svg = '' +\n '' +\n ' ' +\n titleHtml +\n ' ';\n element.html($sce.trustAsHtml(svg));\n }\n };\n }\n\n angular\n .module('app')\n .directive('icon', icon);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * Handle locales related information.\n *\n * LocaleService.js\n * @ngInject\n */\n function LocaleService(UrlService, StringUtil, FilterUtil, $resource, _) {\n\n var locales = [];\n\n /**\n * Get project-version supported locales\n * @param projectSlug\n * @param versionSlug\n * @returns {$promise|*}\n */\n function getSupportedLocales(projectSlug, versionSlug) {\n\n var Locales = $resource(UrlService.LOCALE_LIST_URL, {}, {\n query: {\n method: 'GET',\n params: {\n projectSlug: projectSlug,\n versionSlug: versionSlug\n },\n isArray: true\n }\n });\n\n return Locales.query().$promise;\n }\n\n //Returns all locales supported in Zanata instance\n function getAllLocales() {\n var Locales = $resource(UrlService.ALL_LOCALE_URL, {}, {\n query: {\n method: 'GET',\n isArray: true\n }\n });\n return Locales.query().$promise.then(function(results) {\n locales = FilterUtil.cleanResourceList(results);\n });\n }\n\n function getUILocaleList() {\n var list = $resource(UrlService.uiTranslationListURL, {}, {\n query: {\n method: 'GET'\n }\n });\n\n return list.query().$promise;\n }\n\n function getLocaleByLocaleId(locales, localeId) {\n if(locales) {\n return _.find(locales, function(locale) {\n return StringUtil.equals(locale.localeId, localeId, true);\n });\n }\n }\n\n function containsLocale (locales, localeId) {\n return _.any(locales, function(locale) {\n return StringUtil.equals(locale.localeId, localeId, true);\n });\n }\n\n function getName(localeId) {\n var locale = getLocaleByLocaleId(locales, localeId);\n if(locale) {\n return locale.name;\n }\n return localeId;\n }\n\n return {\n getSupportedLocales : getSupportedLocales,\n getUILocaleList : getUILocaleList,\n getLocaleByLocaleId : getLocaleByLocaleId,\n getAllLocales : getAllLocales,\n containsLocale : containsLocale,\n getName : getName,\n DEFAULT_LOCALE: {\n 'localeId' : 'en-US',\n 'name' : 'English'\n }\n };\n }\n\n angular\n .module('app')\n .factory('LocaleService', LocaleService);\n})();\n","(function() {\n\n 'use strict';\n\n /**\n * @name logoLoader\n *\n * @description\n * Logo that is activated on global loading state\n *\n * @ngInject\n */\n function logoLoader(EventService) {\n return {\n restrict: 'EA',\n scope: {\n loading: '=',\n inverted: '='\n },\n link: function(scope) {\n scope.classes = '';\n\n scope.$on(EventService.EVENT.LOADING_START, function() {\n scope.classes += ' is-loading';\n });\n\n scope.$on(EventService.EVENT.LOADING_STOP, function() {\n scope.classes = scope.classes.replace('is-loading', '');\n });\n\n scope.$watch('inverted', function(newInverted) {\n if (newInverted) {\n scope.classes += ' LogoLoader--inverted';\n } else {\n scope.classes = scope.classes.replace('LogoLoader--inverted', '');\n }\n });\n },\n templateUrl: 'components/logo-loader/logo-loader.html'\n };\n }\n\n angular\n .module('app')\n .directive('logoLoader', logoLoader);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * MessageHandler.js\n * @ngInject\n */\n function MessageHandler() {\n return {\n displayError: function(msg) {\n console.error(msg);\n },\n displayWarning: function(msg) {\n console.warn(msg);\n },\n displayInfo: function(msg) {\n console.info(msg);\n }\n };\n }\n\n angular\n .module('app')\n .factory('MessageHandler', MessageHandler);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * Handle notification in editor\n *\n * NotificationService.js\n * @ngInject\n */\n function NotificationService() {\n\n }\n\n angular\n .module('app')\n .factory('NotificationService', NotificationService);\n\n})();\n","(function () {\n 'use strict';\n\n /**\n * PhraseCache.js\n * Stores textflow, states in local cache.\n * TODO: use angular-data for storage\n * @ngInject\n */\n function PhraseCache($q, $resource, FilterUtil, UrlService, DocumentService,\n _) {\n var phraseCache = this,\n states = {}, //ids and states of all tu in order\n transUnits = {};\n\n phraseCache.getStates =\n function (projectSlug, versionSlug, documentId, localeId) {\n var key = generateKey(projectSlug, versionSlug, documentId, localeId);\n if (_.has(states, key)) {\n return $q.when(states[key]);\n } else {\n var encodedDocId = DocumentService.encodeDocId(documentId);\n var methods = {\n query: {\n method: 'GET',\n params: {\n projectSlug: projectSlug,\n versionSlug: versionSlug,\n docId: encodedDocId,\n localeId: localeId\n },\n isArray: true\n }\n },\n States = $resource(UrlService.TRANSLATION_STATUS_URL, {}, methods);\n return States.query().$promise.then(function (state) {\n state = FilterUtil.cleanResourceList(state);\n states[key] = state;\n return states[key];\n });\n }\n };\n\n phraseCache.getTransUnits = function (ids, localeId) {\n var results = {},\n missingTUId = [],\n missingLocaleTUId = [];\n ids.forEach(function (id) {\n if (_.has(transUnits, id)) {\n if(transUnits[id][localeId]) {\n results[id] = transUnits[id];\n } else {\n missingLocaleTUId.push(id);\n }\n } else {\n missingTUId.push(id);\n }\n });\n if (_.isEmpty(missingTUId) && _.isEmpty(missingLocaleTUId)) {\n return $q.when(results);\n }\n else {\n var TextFlows, Translations;\n if(!_.isEmpty(missingTUId)) {\n TextFlows = $resource(UrlService.TEXT_FLOWS_URL, {}, {\n query: {\n method: 'GET',\n params: {\n localeId: localeId,\n ids: missingTUId.join(',')\n }\n }\n });\n }\n if(!_.isEmpty(missingLocaleTUId)) {\n Translations = $resource(UrlService.TRANSLATION_URL, {}, {\n query: {\n method: 'GET',\n params: {\n localeId: localeId,\n ids: missingLocaleTUId.join(',')\n }\n }\n });\n }\n\n //need to create chain of promises\n if(TextFlows && Translations) {\n return TextFlows.query().$promise.then(updateCacheWithNewTU).\n then(Translations.query().$promise.then(updateCacheWithExistingTU));\n } else if(TextFlows) {\n return TextFlows.query().$promise.then(updateCacheWithNewTU);\n } else if(Translations) {\n return Translations.query().$promise.then(updateCacheWithExistingTU);\n }\n }\n\n function updateCacheWithExistingTU(newTransUnits) {\n newTransUnits = FilterUtil.cleanResourceMap(newTransUnits);\n for (var key in newTransUnits) {\n //push to cache\n transUnits[key][localeId] = newTransUnits[key][localeId];\n results[key] = transUnits[key]; //merge with results\n }\n return results;\n }\n\n function updateCacheWithNewTU(newTransUnits) {\n newTransUnits = FilterUtil.cleanResourceMap(newTransUnits);\n for (var key in newTransUnits) {\n transUnits[key] = newTransUnits[key]; //push to cache\n results[key] = transUnits[key]; //merge with results\n }\n return results;\n }\n };\n\n /**\n * On translation updated from server\n * @param id\n * @param localeId\n * @param revision\n * @param state\n * @param content\n * @param contents\n */\n phraseCache.onTransUnitUpdated =\n function (context, id, localeId, revision, status, phrase) {\n\n var key = generateKey(context.projectSlug, context.versionSlug,\n context.docId, localeId);\n\n var stateEntry = _.find(states[key], function(stateEntry) {\n return stateEntry.id === id;\n });\n //Update states cache\n if(stateEntry) {\n stateEntry.state = status;\n }\n\n //Update transUnits cache\n var translation = transUnits[id][localeId];\n if (!translation) {\n translation = {};\n }\n translation.revision = parseInt(revision);\n translation.state = status;\n translation.contents = phrase.newTranslations.slice();\n };\n\n function generateKey(projectId, versionId, documentId, localeId) {\n return projectId + '-' + versionId + '-' +\n documentId + '-' + localeId;\n }\n\n return phraseCache;\n }\n\n angular\n .module('app')\n .factory('PhraseCache', PhraseCache);\n\n})();\n","(function () {\n 'use strict';\n\n /**\n * @typedef {Object} Phrase\n * @property {number} id text flow id\n * @property {string[]} sources source contents\n * @property {string[]} translations original translation\n * @property {string[]} newTranslations translations in the editor\n * @property {boolean} plural whether it's in plural form\n * @property {StatusInfo} status information about this phrase\n * @property {number} revision translation revision number\n * @property {number} wordCount source word count\n */\n /**\n * @name PhraseService\n * @description Provides a list of phrases for the current document(s)\n *\n * @ngInject\n */\n function PhraseService(FilterUtil, PhraseCache, TransStatusService, _,\n $stateParams) {\n var phraseService = {};\n\n phraseService.phrases = []; //current displayed phrases\n\n // FIXME use an object for all the ID arguments - in general we will only\n // need to modify such an object sporadically when switching document\n // or locale, and it is neater than passing them all\n // around separately.\n\n phraseService.getPhraseCount = function(context, filter) {\n return PhraseCache.getStates(context.projectSlug, context.versionSlug,\n context.docId, context.localeId).then(function(states) {\n var ids = getIds(states, filter.status);\n return ids.length;\n });\n };\n\n /**\n * Fetch each of the text flows appearing in the given states data.\n */\n phraseService.fetchAllPhrase = function (context, filter,\n offset, maxResult) {\n\n var localeId = context.localeId;\n\n return PhraseCache.getStates(context.projectSlug, context.versionSlug,\n context.docId, localeId).then(getTransUnits);\n\n function getTransUnits(states) {\n var ids = getIds(states, filter.status);\n if (!isNaN(offset)) {\n if(!isNaN(maxResult)) {\n ids = ids.slice(offset, offset + maxResult);\n } else {\n ids = ids.slice(offset);\n }\n }\n // Reading for chaining promises https://github.com/kriskowal/q\n // (particularly \"Sequences\").\n return PhraseCache.getTransUnits(ids, localeId).\n then(transformToPhrases).then(sortPhrases);\n }\n\n /**\n * Converts text flow data from the API into the form expected in the\n * editor.\n *\n * @returns {Phrase[]}\n */\n function transformToPhrases(transUnits) {\n return _.map(transUnits, function(transUnit, id) {\n var source = transUnit.source,\n trans = transUnit[localeId];\n return {\n id: parseInt(id),\n sources: source.plural ? source.contents : [source.content],\n // Original translation\n translations: extractTranslations(source, trans),\n // Translation from editor\n newTranslations: extractTranslations(source, trans),\n plural: source.plural,\n // Conform the status from the server, return an object\n status: trans ? TransStatusService.getStatusInfo(trans.state) :\n TransStatusService.getStatusInfo('untranslated'),\n revision: trans ? parseInt(trans.revision) : 0,\n wordCount: parseInt(source.wordCount)\n };\n });\n }\n\n function extractTranslations(source, trans) {\n if(source.plural) {\n return trans && trans.contents ? trans.contents.slice() : [];\n }\n return trans ? [trans.content] : [];\n }\n\n function sortPhrases(phrases) {\n return PhraseCache.getStates(context.projectSlug, context.versionSlug,\n context.docId, localeId).then(function(states) {\n phraseService.phrases = _.sortBy(phrases, function(phrase) {\n var index = _.findIndex(states, function(state) {\n return state.id === phrase.id;\n });\n return index >= 0 ? index : phrases.length;\n });\n return phraseService.phrases;\n });\n }\n };\n\n //update phrase,statuses and textFlows with given tu id\n phraseService.onTransUnitUpdated = function(context, id, localeId, revision,\n status, phrase) {\n\n PhraseCache.onTransUnitUpdated(context, id, localeId, revision, status,\n phrase);\n\n var cachedPhrase = findPhrase(id, phraseService.phrases);\n //update phrase if found\n if(cachedPhrase) {\n cachedPhrase.translations = phrase.newTranslations.slice();\n cachedPhrase.revision = revision;\n cachedPhrase.status = TransStatusService.getStatusInfo(status);\n }\n };\n\n //rollback content of phrase\n phraseService.onTransUnitUpdateFailed = function(id) {\n var phrase = findPhrase(id, phraseService.phrases);\n if(phrase) {\n phrase.newTranslations = phrase.translations.slice();\n }\n };\n\n // find next Id from phrases states\n phraseService.findNextId = function(currentId) {\n return PhraseCache.getStates($stateParams.projectSlug,\n $stateParams.versionSlug, $stateParams.docId,\n $stateParams.localeId)\n .then(function (states) {\n var currentIndex,\n nextIndex;\n currentIndex = _.findIndex(states, function (state) {\n return state.id === currentId;\n });\n nextIndex = currentIndex + 1 < states.length ?\n currentIndex + 1 : states.length - 1;\n return states[nextIndex].id;\n });\n };\n\n // find previous id from phrases states\n phraseService.findPreviousId = function(currentId) {\n return PhraseCache.getStates($stateParams.projectSlug,\n $stateParams.versionSlug, $stateParams.docId,\n $stateParams.localeId)\n .then(function (states) {\n var currentIndex,\n previousIndex;\n currentIndex = _.findIndex(states, function (state) {\n return state.id === currentId;\n });\n previousIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : 0;\n return states[previousIndex].id;\n });\n };\n\n // find next phrase with requested status\n phraseService.findNextStatus = function(currentId, status) {\n return PhraseCache.getStates($stateParams.projectSlug,\n $stateParams.versionSlug, $stateParams.docId,\n $stateParams.localeId)\n .then(function (statusList) {\n var currentIndex,\n nextStatusInfo,\n requestStatus = TransStatusService.getStatusInfo(status);\n\n currentIndex = _.findIndex(statusList, function (state) {\n return state.id === currentId;\n });\n\n for (var i = currentIndex + 1; i < statusList.length; i++) {\n nextStatusInfo = TransStatusService.getStatusInfo(\n statusList[i].state);\n if (nextStatusInfo.ID === requestStatus.ID) {\n return statusList[i].id;\n }\n }\n return currentId;\n });\n };\n\n function findPhrase(id, phrases) {\n return _.find(phrases, function(phrase) {\n return phrase.id === id;\n });\n }\n\n function getIds(resources, states) {\n if(states) {\n resources = FilterUtil.filterResources(resources, ['status'], states);\n }\n return _.map(resources, function (item) {\n return item.id;\n });\n }\n\n // Does not appear to be used anywhere. Removing until phrase-caching code\n // is added.\n // phraseService.findById = function(phraseId) {\n // var deferred = $q.defer();\n // var phrase = phrases[phraseId];\n // deferred.resolve(phrase);\n // return deferred.promise;\n // };\n\n return phraseService;\n }\n\n angular\n .module('app')\n .factory('PhraseService', PhraseService);\n\n})();\n\n","(function() {\n 'use strict';\n\n /**\n * @name progressbar\n * @description progressbar container\n * @ngInject\n */\n function progressbar() {\n return {\n restrict: 'E',\n required: 'progressbarStatistic',\n scope: {\n statistic: '=progressbarStatistic',\n size: '@' //large, full, or empty\n },\n templateUrl: 'components/progressbar/progressbar.html',\n controller: function($scope) {\n /**\n * Need to set to true for complex object watch. Performance issue.\n * https://docs.angularjs.org/api/ng/type/$rootScope.Scope\n */\n $scope.$watch('statistic', function(statistic) {\n if (statistic) {\n $scope.style = getStyle(statistic);\n }\n }, true);\n }\n };\n }\n\n function getStyle(statistic) {\n var total = statistic.total,\n widthApproved = getWidthPercent(statistic.approved, total),\n widthTranslated = getWidthPercent(statistic.translated, total),\n marginLeftTranslated = widthApproved,\n widthNeedsWork = getWidthPercent(statistic.needswork, total),\n marginLeftNeedsWork = widthApproved + widthTranslated,\n widthUntranslated = getWidthPercent(statistic.untranslated, total),\n marginLeftUntranslated = widthApproved +\n widthTranslated + widthNeedsWork,\n style = {};\n\n style.approved = {\n 'width': widthApproved + '%',\n 'marginLeft': 0\n };\n style.translated = {\n 'width': widthTranslated + '%',\n 'marginLeft': marginLeftTranslated + '%'\n };\n style.needsWork = {\n 'width': widthNeedsWork + '%',\n 'marginLeft': marginLeftNeedsWork + '%'\n };\n style.untranslated = {\n 'width': widthUntranslated + '%',\n 'marginLeft': marginLeftUntranslated + '%'\n };\n return style;\n }\n\n function getWidthPercent(value, total) {\n var percent = 0;\n if (value) {\n percent = value / total * 100;\n }\n return percent;\n }\n\n angular\n .module('app')\n .directive('progressbar', progressbar);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * Handle communication with server on Project related information.\n * ProjectService.js\n * @ngInject\n */\n\n function ProjectService(UrlService, $resource) {\n\n /**\n * Get project's information\n *\n * @param projectSlug\n * @returns {$promise|*|N.$promise}\n */\n function getProjectInfo(projectSlug) {\n var methods = {\n query: {\n method: 'GET',\n params: {\n projectSlug: projectSlug\n }\n }\n };\n\n var Locales = $resource(UrlService.PROJECT_URL, {}, methods);\n return Locales.query().$promise;\n }\n\n return {\n getProjectInfo: getProjectInfo\n };\n }\n angular\n .module('app')\n .factory('ProjectService', ProjectService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name display-character\n * @description display whitespace character with symbol(HTML),\n * *NOTE*, need to wrap around tag\n * @ngInject\n */\n function renderWhitespaceCharacters() {\n var WHITESPACES = {\n 'space' : {\n 'regex' : / /g,\n 'template' : ' '\n },\n 'newline' : {\n 'regex' : /\\n/g,\n 'template' : ' \\n'\n },\n 'tab' : {\n 'regex' : /\\t/g,\n 'template' : '\\t '\n }\n };\n\n return {\n restrict: 'A',\n required: ['ngBind'],\n scope: {\n ngBind: '='\n },\n\n link: function compile(scope, element) {\n scope.$watch('ngBind', function (value) {\n value = replaceChar(value, WHITESPACES.space);\n value = replaceChar(value, WHITESPACES.newline);\n value = replaceChar(value, WHITESPACES.tab);\n element.html(value);\n });\n }\n };\n\n function replaceChar(value, whitespaceChar) {\n return value.replace(whitespaceChar.regex, whitespaceChar.template);\n }\n }\n\n angular\n .module('app')\n .directive('renderWhitespaceCharacters', renderWhitespaceCharacters);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name ScrollbarWidthCtrl\n *\n * @description\n * Handle dropdown events between directives\n *\n * @ngInject\n */\n function ScrollbarWidthCtrl() {\n var scrollbarWidthCtrl = this;\n\n scrollbarWidthCtrl.init = function() {\n var container = scrollbarWidthCtrl.container[0],\n child = scrollbarWidthCtrl.child[0],\n scrollbarWidth = child.offsetWidth - container.offsetWidth;\n\n scrollbarWidthCtrl.width = scrollbarWidth / 2;\n };\n\n }\n\n angular\n .module('app')\n .controller('ScrollbarWidthCtrl', ScrollbarWidthCtrl);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name scrollbarWidth\n *\n * @description\n * Scrollbar width container\n * Needed for the controller to reference all properties\n */\n function scrollbarWidth() {\n return {\n restrict: 'A',\n controller: 'ScrollbarWidthCtrl as scrollbarWidthCtrl',\n link: function(scope, element, attrs, scrollbarWidthCtrl) {\n scrollbarWidthCtrl.init(element);\n }\n };\n }\n\n /**\n * @name scrollbarWidthElement\n *\n * @description\n * The element to add the scrollbar width to\n */\n function scrollbarWidthElement() {\n return {\n restrict: 'A',\n require: '?^scrollbarWidth',\n link: function(scope, element, attrs, scrollbarWidthCtrl) {\n if (!scrollbarWidthCtrl) {\n return;\n }\n // Use the attribute to decide which property to set\n element.css(attrs.scrollbarWidthElement, scrollbarWidthCtrl.width);\n }\n };\n }\n\n /**\n * @name scrollbarWidthContainer\n *\n * @description\n * Get the scrollbar container width\n */\n function scrollbarWidthContainer() {\n return {\n restrict: 'A',\n require: '?^scrollbarWidth',\n link: function(scope, element, attrs, scrollbarWidthCtrl) {\n if (!scrollbarWidthCtrl) {\n return;\n }\n scrollbarWidthCtrl.container = element;\n }\n };\n }\n\n /**\n * @name scrollbarWidthChild\n *\n * @description\n * Get the scrollbar child width\n */\n function scrollbarWidthChild() {\n return {\n restrict: 'A',\n require: '?^scrollbarWidth',\n link: function(scope, element, attrs, scrollbarWidthCtrl) {\n if (!scrollbarWidthCtrl) {\n return;\n }\n scrollbarWidthCtrl.child = element;\n }\n };\n }\n\n angular\n .module('app')\n .directive('scrollbarWidth', scrollbarWidth)\n .directive('scrollbarWidthElement', scrollbarWidthElement)\n .directive('scrollbarWidthContainer', scrollbarWidthContainer)\n .directive('scrollbarWidthChild', scrollbarWidthChild);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name toggle-checkbox\n * @description Add an extra element to a checkbox to\n * so we can style it differently\n * @ngInject\n */\n function toggleCheckbox() {\n return {\n restrict: 'A',\n link: function(scope, element) {\n element.after(' ');\n }\n };\n }\n\n angular\n .module('app')\n .directive('toggleCheckbox', toggleCheckbox);\n\n})();\n","(function () {\n 'use strict';\n\n /**\n * @typedef {Object} StatusInfo\n * @property {string} ID lower case translation status (content state)\n * @property {string} NAME capitalized representation\n * @property {string} CSSCLASS css class to use for this status\n *\n */\n /**\n * TransStatusService.js\n *\n * @ngInject\n */\n function TransStatusService(_) {\n var transStatusService = this,\n STATUSES = {\n 'UNTRANSLATED': {\n 'ID': 'untranslated',\n 'NAME': 'Untranslated',\n 'CSSCLASS': 'neutral'\n },\n 'NEEDSWORK': {\n 'ID': 'needswork',\n 'NAME': 'Needs Work',\n 'CSSCLASS': 'unsure'\n },\n 'TRANSLATED' : {\n 'ID': 'translated',\n 'NAME': 'Translated',\n 'CSSCLASS': 'success'\n },\n 'APPROVED': {\n 'ID': 'approved',\n 'NAME': 'Approved',\n 'CSSCLASS': 'highlight'\n }\n };\n\n transStatusService.getAll = function() {\n return STATUSES;\n };\n\n transStatusService.getAllAsArray = function() {\n return _.values(STATUSES);\n };\n\n /**\n *\n * @param {string} statusKey string representation of the status.\n * @returns {StatusInfo}\n */\n transStatusService.getStatusInfo = function(statusKey) {\n return STATUSES[conformStatus(statusKey)];\n };\n\n transStatusService.getId = function(statusKey) {\n return STATUSES[conformStatus(statusKey)].ID;\n };\n\n transStatusService.getServerId = function(statusId) {\n return serverStatusId(statusId);\n };\n\n transStatusService.getName = function(statusKey) {\n return STATUSES[conformStatus(statusKey)].NAME;\n };\n\n transStatusService.getCSSClass = function(statusKey) {\n return STATUSES[conformStatus(statusKey)].CSSCLASS;\n };\n\n /**\n * Conform it to uppercase for lookups and\n * temporary fix for server sending \"needReview\"\n * instead of needswork status\n * @param {string} status\n * @return {string} new value to use\n */\n function conformStatus(statusKey) {\n statusKey = angular.uppercase(statusKey);\n if (!statusKey || statusKey === 'NEW') {\n statusKey = 'UNTRANSLATED';\n } else if (statusKey === 'NEEDREVIEW') {\n statusKey = 'NEEDSWORK';\n }\n return statusKey;\n }\n\n /**\n * Conform it to PascalCase for lookups and\n * temporary fix for server receiving \"needReview\"\n * instead of needswork status\n * @param {string} status\n * @return {string} new value to use\n */\n function serverStatusId(statusId) {\n statusId = angular.lowercase(statusId);\n if (!statusId || statusId === 'untranslated') {\n return 'New';\n } else if (statusId === 'needswork') {\n return 'NeedReview';\n }\n return statusId.charAt(0).toUpperCase() + statusId.slice(1).toLowerCase();\n }\n\n return transStatusService;\n }\n\n angular\n .module('app')\n .factory('TransStatusService', TransStatusService);\n})();\n\n","(function () {\n 'use strict';\n\n /**\n * TransUnitCtrl.js\n * @ngInject\n */\n function TransUnitCtrl($scope, $element, $stateParams, _,\n TransUnitService, EventService, LocaleService, focus,\n EditorShortcuts, PhraseUtil) {\n\n var transUnitCtrl = this;\n\n transUnitCtrl.selected = false;\n transUnitCtrl.focused = false;\n transUnitCtrl.focusedTranslationIndex = 0;\n\n transUnitCtrl.hasTranslationChanged =\n PhraseUtil.hasTranslationChanged;\n\n transUnitCtrl.focusTranslation = function() {\n if(transUnitCtrl.selected) {\n focus('phrase-' + $scope.phrase.id + '-' +\n transUnitCtrl.focusedTranslationIndex);\n }\n };\n\n // when user clicked on TU or using tab to nav\n transUnitCtrl.onTextAreaFocus = function(phrase, index) {\n transUnitCtrl.focused = true;\n if (!_.isUndefined(index)) {\n transUnitCtrl.focusedTranslationIndex = index;\n }\n if(!transUnitCtrl.selected) {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {'id': phrase.id,\n 'updateURL': true,\n 'focus': true\n }, $scope);\n }\n };\n\n transUnitCtrl.translationTextModified = function(phrase) {\n EventService.emitEvent(EventService.EVENT.TRANSLATION_TEXT_MODIFIED,\n phrase);\n };\n\n transUnitCtrl.getPhrase = function() {\n return $scope.phrase;\n };\n\n transUnitCtrl.init = function() {\n TransUnitService.addController($scope.phrase.id, transUnitCtrl);\n if($stateParams.id && parseInt($stateParams.id) === $scope.phrase.id) {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {'id': $stateParams.id,\n 'updateURL': false,\n 'focus' : $stateParams.selected});\n }\n };\n\n transUnitCtrl.copySource = function($event, phrase, sourceIndex) {\n $event.stopPropagation(); //prevent click event of TU\n EventService.emitEvent(EventService.EVENT.COPY_FROM_SOURCE,\n {'phrase': phrase, 'sourceIndex': sourceIndex}, $scope);\n };\n\n transUnitCtrl.undoEdit = function($event, phrase) {\n $event.stopPropagation(); //prevent click event of TU\n EventService.emitEvent(EventService.EVENT.UNDO_EDIT,\n phrase, $scope);\n };\n\n transUnitCtrl.cancelEdit = function($event, phrase) {\n $event.stopPropagation(); //prevent click event of TU\n EventService.emitEvent(EventService.EVENT.CANCEL_EDIT,\n phrase, $scope);\n };\n\n transUnitCtrl.saveAs = function($event, phrase, status) {\n EditorShortcuts.saveTranslationCallBack($event, phrase, status);\n };\n\n transUnitCtrl.getLocaleName = function(localeId) {\n return LocaleService.getName(localeId);\n };\n\n transUnitCtrl.toggleSaveAsOptions = function(open) {\n EventService.broadcastEvent( open ? 'openDropdown': 'closeDropdown',\n {}, $scope);\n if (open) {\n // focus on the first dropdown option\n focus($scope.phrase.id + '-saveAsOption-0');\n }\n };\n\n transUnitCtrl.cancelSaveAsMode = function() {\n EditorShortcuts.cancelSaveAsModeIfOn();\n };\n\n $scope.$on('$destroy', function () {\n $element.unbind('click', onTransUnitClick);\n $element.unbind('focus', onTransUnitClick);\n });\n\n transUnitCtrl.updateSaveButton = function (phrase) {\n transUnitCtrl.saveButtonStatus =\n PhraseUtil.getSaveButtonStatus($scope.phrase);\n transUnitCtrl.saveButtonOptions =\n TransUnitService.getSaveButtonOptions(transUnitCtrl.saveButtonStatus,\n $scope.phrase);\n transUnitCtrl.saveButtonText = transUnitCtrl.saveButtonStatus.NAME;\n transUnitCtrl.saveButtonDisabled =\n !PhraseUtil.hasTranslationChanged(phrase);\n transUnitCtrl.loadingClass = '';\n transUnitCtrl.savingStatus = '';\n };\n\n transUnitCtrl.phraseSaving = function (data) {\n transUnitCtrl.loadingClass = 'is-loading';\n transUnitCtrl.saveButtonStatus =\n transUnitCtrl.savingStatus = data.status;\n transUnitCtrl.saveButtonOptions =\n TransUnitService.getSaveButtonOptions(transUnitCtrl.saveButtonStatus,\n data.phrase);\n transUnitCtrl.saveButtonText = 'Saving…';\n transUnitCtrl.saveButtonDisabled = true;\n };\n\n transUnitCtrl.saveButtonOptionsAvailable = function() {\n return !_.isEmpty(transUnitCtrl.saveButtonOptions);\n };\n\n transUnitCtrl.selectTransUnit = function(phrase) {\n if (!transUnitCtrl.selected) {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {'id': phrase.id,\n 'updateURL': true,\n 'focus': true\n }, $scope);\n }\n };\n\n function onTransUnitClick() {\n if(!transUnitCtrl.selected) {\n $scope.$apply(function () {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {'id': $scope.phrase.id,\n 'updateURL': true,\n 'focus': true}, $scope);\n });\n }\n }\n\n return transUnitCtrl;\n }\n\n angular\n .module('app')\n .controller('TransUnitCtrl', TransUnitCtrl);\n})();\n\n","(function () {\n 'use strict';\n\n /**\n * TransUnitService\n *\n * See PhraseService.transformToPhrases function for phrase definition.\n *\n * @ngInject\n */\n function TransUnitService(_, $location, $rootScope, $state, $stateParams,\n $filter, MessageHandler, EventService, TransStatusService, PRODUCTION,\n EditorShortcuts, PhraseUtil, $timeout) {\n var transUnitService = this,\n controllerList = {},\n selectedTUId;\n\n transUnitService.addController = function(id, controller) {\n controllerList[id] = controller;\n };\n\n transUnitService.getSaveButtonOptions = function(saveButtonStatus, phrase) {\n return filterSaveButtonOptions(saveButtonStatus, phrase);\n };\n\n $rootScope.$on(EventService.EVENT.TOGGLE_SAVE_OPTIONS,\n function(event, data) {\n var transUnitCtrl = controllerList[data.id];\n if (transUnitCtrl) {\n transUnitCtrl.toggleSaveAsOptions(data.open);\n }\n });\n\n /**\n * EventService.EVENT.SELECT_TRANS_UNIT listener\n * - Select and focus a trans-unit.\n * - Perform implicit save on previous selected TU if changed\n * - Update url with TU id without reload state\n */\n $rootScope.$on(EventService.EVENT.SELECT_TRANS_UNIT,\n function (event, data) {\n var newTuController = controllerList[data.id],\n oldTUController = controllerList[selectedTUId],\n updateURL = data.updateURL;\n\n if(newTuController) {\n EditorShortcuts.selectedTUCtrl = newTuController;\n\n if (selectedTUId && selectedTUId !== data.id) {\n setSelected(oldTUController, false);\n\n //perform implicit save if changed\n if(PhraseUtil.hasTranslationChanged(\n oldTUController.getPhrase())) {\n EventService.emitEvent(EventService.EVENT.SAVE_TRANSLATION,\n {\n 'phrase' : oldTUController.getPhrase(),\n 'status' : TransStatusService.getStatusInfo('TRANSLATED'),\n 'locale' : $stateParams.localeId,\n 'docId' : $stateParams.docId\n });\n }\n }\n\n updateSaveButton(event, newTuController.getPhrase());\n selectedTUId = data.id;\n setSelected(newTuController, true);\n\n EventService.emitEvent(EventService.EVENT.FOCUS_TRANSLATION, data);\n\n //Update url without reload state\n if(updateURL) {\n if($state.current.name !== 'editor.selectedContext.tu') {\n $state.go('editor.selectedContext.tu', {\n 'id': data.id,\n 'selected': data.focus.toString()\n });\n } else {\n $location.search('id', data.id);\n $location.search('selected', data.focus.toString());\n }\n }\n } else {\n MessageHandler.displayWarning('Trans-unit not found:' + data.id);\n }\n });\n\n /**\n * EventService.EVENT.COPY_FROM_SOURCE listener\n * Copy translation from source\n */\n $rootScope.$on(EventService.EVENT.COPY_FROM_SOURCE,\n function (event, data) {\n var sourceIndex = 0;\n if(data.phrase.plural) {\n //clicked copy source button\n sourceIndex = data.sourceIndex;\n if(_.isUndefined(sourceIndex)) {\n //copy source key shortcut, copy corresponding source to target\n var transUnitCtrl = controllerList[data.phrase.id];\n sourceIndex = transUnitCtrl.focusedTranslationIndex;\n if(data.phrase.sources.length <\n transUnitCtrl.focusedTranslationIndex + 1) {\n sourceIndex = data.phrase.sources.length - 1;\n }\n }\n }\n setTranslationText(data.phrase, data.phrase.sources[sourceIndex]);\n });\n\n /**\n * EventService.EVENT.UNDO_EDIT listener\n * Cancel edit and restore translation\n */\n $rootScope.$on(EventService.EVENT.UNDO_EDIT,\n function (event, phrase) {\n if (PhraseUtil.hasTranslationChanged(phrase)) {\n setAllTranslations(phrase, phrase.translations);\n }\n });\n\n /**\n * EventService.EVENT.CANCEL_EDIT listener\n * Cancel edit and restore translation\n */\n $rootScope.$on(EventService.EVENT.CANCEL_EDIT,\n function (event, phrase) {\n if(selectedTUId) {\n setSelected(controllerList[selectedTUId], false);\n selectedTUId = false;\n EditorShortcuts.selectedTUCtrl = null;\n }\n\n $location.search('selected', null);\n if(!phrase) {\n $location.search('id', null);\n }\n\n // EditorContentCtrl#changePage doesn't provide a phrase object\n if (phrase) {\n $timeout(function() {\n return $rootScope.$broadcast('blurOn', 'phrase-' + phrase.id);\n });\n }\n });\n\n /**\n * EventService.EVENT.TRANSLATION_TEXT_MODIFIED listener\n *\n */\n $rootScope.$on(EventService.EVENT.TRANSLATION_TEXT_MODIFIED,\n updateSaveButton);\n\n /**\n * EventService.EVENT.FOCUS_TRANSLATION listener\n *\n */\n $rootScope.$on(EventService.EVENT.FOCUS_TRANSLATION,\n setFocus);\n\n /**\n * EventService.EVENT.SAVE_COMPLETED listener\n *\n */\n $rootScope.$on(EventService.EVENT.SAVE_INITIATED,\n phraseSaving);\n\n /**\n * EventService.EVENT.SAVE_COMPLETED listener\n *\n */\n $rootScope.$on(EventService.EVENT.SAVE_COMPLETED,\n updateSaveButton);\n\n function setTranslationText(phrase, newText) {\n var index = 0;\n if (phrase.plural) {\n var transUnitCtrl = controllerList[phrase.id];\n index = transUnitCtrl.focusedTranslationIndex;\n }\n phrase.newTranslations[index] = newText;\n EventService.emitEvent(EventService.EVENT.TRANSLATION_TEXT_MODIFIED,\n phrase);\n EventService.emitEvent(EventService.EVENT.FOCUS_TRANSLATION,\n phrase);\n }\n\n function setAllTranslations(phrase, newTexts) {\n //need slice() for new instance of array\n phrase.newTranslations = newTexts.slice();\n\n EventService.emitEvent(EventService.EVENT.TRANSLATION_TEXT_MODIFIED,\n phrase);\n EventService.emitEvent(EventService.EVENT.FOCUS_TRANSLATION,\n phrase);\n }\n\n function updateSaveButton(event, phrase) {\n var transUnitCtrl = controllerList[phrase.id];\n transUnitCtrl.updateSaveButton(phrase);\n }\n\n function phraseSaving(event, data) {\n var transUnitCtrl = controllerList[data.phrase.id];\n transUnitCtrl.phraseSaving(data);\n EventService.emitEvent(EventService.EVENT.FOCUS_TRANSLATION,\n data.phrase);\n }\n\n function setSelected(transUnitCtrl, isSelected) {\n //This check is to prevent selected event being triggered repeatedly.\n if(transUnitCtrl.selected !== isSelected) {\n transUnitCtrl.selected = isSelected || false;\n }\n }\n\n function setFocus(event, phrase) {\n var transUnitCtrl = controllerList[phrase.id];\n transUnitCtrl.focusTranslation();\n }\n\n /**\n * Filters the dropdown options for saving a translation\n * Unless the translation is empty, remove untranslated as an option\n * Filter the current default save state out of the list and show remaining\n *\n * @param {Object} saveStatus The current default translation *save* status\n * @return {Array} Is used to construct the dropdown list\n */\n function filterSaveButtonOptions(saveStatus, phrase) {\n var filteredOptions = [];\n if (saveStatus.ID === 'untranslated') {\n return filteredOptions;\n }\n filteredOptions = $filter('filter')\n (TransStatusService.getAllAsArray(), {ID: '!untranslated'});\n\n if(phrase.plural) {\n if(PhraseUtil.hasNoTranslation(phrase)) {\n filteredOptions = $filter('filter')\n (filteredOptions, {ID: '!needswork'});\n } else if(PhraseUtil.hasEmptyTranslation(phrase)) {\n filteredOptions = $filter('filter')\n (filteredOptions, {ID: '!translated'});\n }\n }\n\n if (PRODUCTION) {\n filteredOptions = $filter('filter')\n (filteredOptions, {ID: '!approved'});\n }\n\n return $filter('filter')(filteredOptions, {ID: '!'+saveStatus.ID});\n }\n\n return transUnitService;\n }\n\n angular\n .module('app')\n .factory('TransUnitService', TransUnitService);\n})();\n\n\n","(function() {\n 'use strict';\n\n /**\n * @name trans-unit\n * @description transUnit container\n * @ngInject\n */\n function transUnit() {\n return {\n restrict: 'E',\n required: ['phrase', 'editorContext'],\n scope: {\n phrase: '=',\n firstPhrase: '=',\n editorContext: '='\n },\n controller: 'TransUnitCtrl as transUnitCtrl',\n templateUrl: 'components/transUnit/trans-unit.html',\n link: function(scope, element, attr, TransUnitCtrl) {\n TransUnitCtrl.init();\n }\n };\n }\n\n angular\n .module('app')\n .directive('transUnit', transUnit);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name trans-unit\n * @description transUnit container\n * @ngInject\n */\n function transUnitFilter() {\n return {\n restrict: 'E',\n required: ['editor'],\n scope: {\n editor: '='\n },\n templateUrl: 'components/transUnitFilter/trans-unit-filter.html'\n };\n }\n\n angular\n .module('app')\n .directive('transUnitFilter', transUnitFilter);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * UserService.js\n *\n * @ngInject\n */\n function UserService($resource, UrlService) {\n\n function getUserInfo(username) {\n var UserInfo = $resource(UrlService.USER_INFO_URL, {}, {\n query: {\n method: 'GET',\n params: {\n username: username\n }\n }\n });\n return UserInfo.query().$promise;\n }\n\n function getMyInfo() {\n var MyInfo = $resource(UrlService.MY_INFO_URL, {}, {\n query: {\n method: 'GET'\n }\n });\n return MyInfo.query().$promise;\n }\n\n return {\n settings: {\n editor: {\n hideMainNav: false\n }\n },\n getUserInfo: getUserInfo,\n getMyInfo: getMyInfo\n };\n }\n angular\n .module('app')\n .factory('UserService', UserService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * FilterUtil.js\n *\n * @ngInject\n */\n function FilterUtil(StringUtil, _) {\n\n /**\n * Filter in resources on given fields with matched terms\n *\n * @param resources - list of resources\n * @param fields - list of fields to check\n * @param terms - list of term to check\n * @returns {*}\n */\n function filterResources(resources, fields, terms) {\n if(!resources || !fields || !terms) {\n return resources;\n }\n return _.filter(resources, function (resource) {\n return isInclude(resource, fields, terms);\n });\n }\n\n /**\n * Filter out properties starting with $ (added by promise)\n * @param resources\n */\n function cleanResourceMap(resources) {\n var filteredList = {};\n var ids = Object.keys(resources).filter(function (id) {\n return id.indexOf('$') === -1;\n });\n ids.forEach(function(id) {\n filteredList[id] = (resources[id]);\n });\n return filteredList;\n }\n\n function cleanResourceList(resources) {\n var filteredList = [];\n var ids = Object.keys(resources).filter(function (id) {\n return id.indexOf('$') === -1;\n });\n ids.forEach(function(id) {\n filteredList.push(resources[id]);\n });\n return filteredList;\n }\n\n\n function isInclude(resource, fields, terms) {\n if(!resource || !fields || !terms) {\n return false;\n }\n return _.any(fields, function(field) {\n return _.any(terms, function(term) {\n return StringUtil.equals(resource[field], term, true);\n });\n });\n }\n\n return {\n filterResources : filterResources,\n cleanResourceList:cleanResourceList,\n cleanResourceMap : cleanResourceMap\n };\n }\n angular\n .module('app')\n .factory('FilterUtil', FilterUtil);\n})();\n","(function() {\n 'use strict';\n\n /**\n * PhraseUtil.js\n *\n * @ngInject\n */\n function PhraseUtil(TransStatusService, _) {\n\n function getSaveButtonStatus(phrase) {\n if (hasNoTranslation(phrase)) {\n return TransStatusService.getStatusInfo('untranslated');\n }\n else if (hasEmptyTranslation(phrase)) {\n return TransStatusService.getStatusInfo('needswork');\n }\n else if (hasTranslationChanged(phrase)) {\n return TransStatusService.getStatusInfo('translated');\n }\n else {\n return phrase.status;\n }\n }\n\n function hasTranslationChanged(phrase) {\n // on Firefox with input method turned on,\n // when hitting tab it seems to turn undefined value into ''\n var allSame = _.every(phrase.translations,\n function(translation, index) {\n return nullToEmpty(translation) ===\n nullToEmpty(phrase.newTranslations[index]);\n });\n return !allSame;\n }\n\n function hasNoTranslation(phrase) {\n return _.isEmpty(_.compact(phrase.newTranslations));\n }\n\n function hasEmptyTranslation(phrase) {\n return _.compact(phrase.newTranslations).length !==\n phrase.newTranslations.length;\n }\n\n function nullToEmpty(value) {\n return value || '';\n }\n\n return {\n getSaveButtonStatus : getSaveButtonStatus,\n hasTranslationChanged : hasTranslationChanged,\n hasNoTranslation : hasNoTranslation,\n hasEmptyTranslation : hasEmptyTranslation\n };\n }\n angular\n .module('app')\n .factory('PhraseUtil', PhraseUtil);\n})();\n","(function() {\n 'use strict';\n\n /**\n * Utility method for handling $resource.statistic\n *\n * StatisticUtil.js\n * @ngInject\n *\n */\n\n function StatisticUtil() {\n return {\n getWordStatistic: function(statistics) {\n return statistics[0].unit === 'WORD' ? statistics[0] : statistics[1];\n },\n getMsgStatistic: function(statistics) {\n return statistics[0].unit === 'MESSAGE' ? statistics[0] : statistics[1];\n }\n };\n }\n angular\n .module('app')\n .factory('StatisticUtil', StatisticUtil);\n})();\n","(function() {\n 'use strict';\n\n /**\n * StringUtil\n *\n * @ngInject\n */\n\n function StringUtil() {\n function startsWith(str, prefix, ignoreCase) {\n if (ignoreCase && str && prefix) {\n str = str.toUpperCase();\n prefix = prefix.toUpperCase();\n }\n return str.lastIndexOf(prefix, 0) === 0;\n }\n\n function endsWith(str, suffix, ignoreCase) {\n if (ignoreCase && str && suffix) {\n str = str.toUpperCase();\n suffix = suffix.toUpperCase();\n }\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n }\n\n function equals(from, to, ignoreCase) {\n if (ignoreCase && from && to) {\n from = from.toUpperCase();\n to = to.toUpperCase();\n }\n return from === to;\n }\n\n return {\n startsWith : startsWith,\n endsWith : endsWith,\n equals : equals\n };\n }\n angular\n .module('app')\n .factory('StringUtil', StringUtil);\n})();\n","(function() {\n 'use strict';\n\n /**\n * Utility to handles URL related request.\n *\n * UrlService.js\n * @ngInject\n */\n function UrlService($location, $http, $q, $stateParams, _) {\n //IE doesn't support location.origin\n if (!location.origin) {\n location.origin =\n window.location.protocol + '//' + window.location.hostname +\n (window.location.port ? (':' + window.location.port) : '');\n }\n\n var urlService = this,\n gravatarBaseUrl = 'http://www.gravatar.com/avatar',\n configFile = 'config.json',\n baseUrl = '',\n urls = {},\n uiTranslationsURL = location.origin + location.pathname +\n 'translations';\n\n urlService.serverContextPath = '';\n\n urlService.init = function () {\n if (baseUrl) {\n return $q.when(baseUrl);\n }\n else {\n /**\n * Temporary solution to handle dynamic context path deployed for\n * Zanata server in JBOSS (/ or /zanata).\n *\n * If config.baseUrl exist and not empty,\n * baseUrl = config.baseUrl\n *\n * ELSE\n * baseUrl = full.url - appPath onwards\n */\n return $http.get(configFile).then(function (response) {\n var config = response.data;\n if (config.baseUrl) {\n baseUrl = config.baseUrl;\n } else {\n var deployPath = config.appPath.replace(/^\\//g, ''),\n index = location.href.indexOf(deployPath);\n\n urlService.serverContextPath = location.origin + location.pathname;\n if(index >= 0) {\n urlService.serverContextPath = location.href.substring(0, index);\n }\n urlService.serverContextPath = urlService.serverContextPath.\n replace(/\\/?$/, '/');\n baseUrl = urlService.serverContextPath + 'rest';\n }\n\n /* jshint -W101 */\n // URLs over multiple lines are hard to read, allowing long lines here.\n // Warnings for jshint are turned off/on with -/+ before the warning code.\n // See: https://github.com/jshint/jshint/blob/2.1.4/src/shared/messages.js\n urls = _.mapValues({\n project: '/project/:projectSlug',\n docs: '/project/:projectSlug/version/:versionSlug/docs',\n locales: '/project/:projectSlug/version/:versionSlug/locales',\n status: '/project/:projectSlug/version/:versionSlug/doc/:docId/status/:localeId',\n textFlows: '/source+trans/:localeId',\n docStats: '/stats/project/:projectSlug/version/:versionSlug/doc/:docId/locale/:localeId',\n myInfo: '/user',\n userInfo: '/user/:username',\n translation: '/trans/:localeId',\n allLocales: '/locales'\n }, unary(restUrl));\n /* jshint +W101 */\n\n urlService.PROJECT_URL = urls.project;\n urlService.LOCALE_LIST_URL = urls.locales;\n urlService.DOCUMENT_LIST_URL = urls.docs;\n urlService.TRANSLATION_STATUS_URL = urls.status;\n urlService.TEXT_FLOWS_URL = urls.textFlows;\n urlService.DOC_STATISTIC_URL = urls.docStats;\n urlService.MY_INFO_URL = urls.myInfo;\n urlService.USER_INFO_URL = urls.userInfo;\n urlService.TRANSLATION_URL = urls.translation;\n urlService.ALL_LOCALE_URL = urls.allLocales;\n\n urlService.PROJECT_PAGE = function(projectSlug, versionSlug) {\n return urlService.serverContextPath + 'iteration/view/' +\n projectSlug + '/' + versionSlug;\n };\n\n urlService.DASHBOARD_PAGE = urlService.serverContextPath +\n 'dashboard';\n });\n }\n };\n\n /**\n * Get the value of a query string parameter.\n */\n urlService.readValue = function (key) {\n return $location.search()[key];\n };\n\n urlService.gravatarUrl = function (gravatarHash, size) {\n return gravatarBaseUrl + '/' + gravatarHash +\n '?d=mm&r=g&s=' + size;\n };\n\n urlService.uiTranslationURL = function (locale) {\n return uiTranslationsURL + '/' + locale + '.json';\n };\n\n urlService.uiTranslationListURL = uiTranslationsURL + '/locales';\n\n return urlService;\n\n /**\n * Create a REST URL by appending all the given URL part arguments to the\n * base URL.\n *\n * No separators will be added or removed, so all parts should include\n * leading / and exclude trailing / to avoid problems.\n */\n function restUrl() {\n return baseUrl + Array.prototype.join.call(arguments, '');\n }\n\n /**\n * Decorate a function to ignore all but the first argument.\n */\n function unary(fun) {\n return function(arg) {\n return fun(arg);\n };\n }\n }\n\n angular\n .module('app')\n .factory('UrlService', UrlService);\n})();\n"],"sourceRoot":"/source/"}
\ No newline at end of file
+{"version":3,"sources":["app.js","AppConfig.js","AppConstants.js","AppCtrl.js","editor/EditorContentCtrl.js","editor/EditorCtrl.js","editor/EditorDetailsCtrl.js","editor/EditorService.js","editor/EditorShortcuts.js","editor/EditorSuggestionsCtrl.js","components/blur-on/blurOnDirective.js","components/clickElsewhere/clickElsewhereDirective.js","components/document/DocumentService.js","components/dropdown/DropdownController.js","components/dropdown/DropdownService.js","components/dropdown/dropdown.js","components/dropdown/dropdownDirective.js","components/event/EventService.js","components/icon/iconDirective.js","components/message/MessageHandler.js","components/locale/LocaleService.js","components/logo-loader/logoLoaderDirective.js","components/notification/NotificationService.js","components/phrases/PhraseCache.js","components/phrases/PhraseService.js","components/progressbar/progressbarDirective.js","components/project/ProjectService.js","components/resizer/resizerDirective.js","components/settings/SettingsService.js","components/renderWhitespaceCharacters/renderWhitespaceCharacters.js","components/scrollbar-width/ScrollbarWidthCtrl.js","components/scrollbar-width/scrollbarWidthDirective.js","components/suggestions/PhraseSuggestionsService.js","components/suggestions/SuggestionCtrl.js","components/suggestions/SuggestionsService.js","components/suggestions/TextSuggestionsService.js","components/suggestions/suggestionDirective.js","components/toggle/toggleDirective.js","components/transStatus/TransStatusService.js","components/transUnitFilter/transUnitFilterDirective.js","components/transUnit/TransUnitCtrl.js","components/transUnit/TransUnitService.js","components/transUnit/transUnitDirective.js","components/user/UserService.js","components/util/FilterUtil.js","components/util/PhraseUtil.js","components/util/StatisticUtil.js","components/util/StringUtil.js","components/util/UrlService.js"],"names":[],"mappings":"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","file":"app.js","sourcesContent":["(function() {\n 'use strict';\n\n /**\n * Root application\n * app.js\n */\n angular.module(\n 'app', [\n 'ngResource',\n 'ngAnimate',\n 'ui.router',\n 'templates',\n 'cfp.hotkeys',\n 'focusOn',\n 'monospaced.elastic',\n 'gettext',\n 'diff-match-patch'\n ]);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name AppConfig\n * @description Main config for the entire app\n * @ngInject\n */\n function AppConfig($stateProvider, $urlRouterProvider, $httpProvider,\n hotkeysProvider) {\n\n //Can't use injection for EventService as this module is out of the scope\n var interceptor = function($q, $rootScope) {\n return {\n request: function(config) {\n // See EventService.EVENT.LOADING_START\n $rootScope.$broadcast('loadingStart');\n return config;\n },\n requestError: function(rejection) {\n // See EventService.EVENT.LOADING_STOP\n $rootScope.$broadcast('loadingStop');\n console.error('Request error due to ', rejection);\n return $q.reject(rejection);\n },\n response: function(response) {\n // See EventService.EVENT.LOADING_STOP\n $rootScope.$broadcast('loadingStop');\n return response || $q.when(response);\n },\n responseError: function(rejection) {\n // See EventService.EVENT.LOADING_STOP\n $rootScope.$broadcast('loadingStop');\n if (rejection.status === 401) {\n console.error('Unauthorized access. Please login');\n } else if (rejection.status === 404) {\n console.error('Service end point not found- ',\n rejection.config.url);\n } else {\n console.error('Error in response ', rejection);\n }\n return $q.reject(rejection);\n }\n };\n };\n\n $httpProvider.interceptors.push(interceptor);\n\n // For any unmatched url, redirect to /editor\n $urlRouterProvider.otherwise('/');\n\n $stateProvider\n .state('editor', {\n url: '/:projectSlug/:versionSlug/translate',\n templateUrl: 'editor/editor.html',\n controller: 'EditorCtrl as editor',\n resolve: {\n url : function(UrlService) {\n return UrlService.init();\n }\n }\n }).state('editor.selectedContext', {\n url: '/:docId/:localeId',\n views: {\n 'editor-content': {\n templateUrl: 'editor/editor-content.html',\n controller: 'EditorContentCtrl as editorContent'\n },\n 'editor-suggestions': {\n templateUrl: 'editor/editor-suggestions.html',\n controller: 'EditorSuggestionsCtrl as editorSuggestions'\n },\n 'editor-details': {\n templateUrl: 'editor/editor-details.html',\n controller: 'EditorDetailsCtrl as editorDetails'\n }\n }\n }).state('editor.selectedContext.tu', {\n url: '/?id&selected?states',\n reloadOnSearch: false\n });\n\n hotkeysProvider.includeCheatSheet = false;\n\n // $locationProvider.html5Mode(true);\n // .hashPrefix('!');\n }\n\n angular\n .module('app')\n .config(AppConfig);\n\n})();\n\n\n\n","(function() {\n 'use strict';\n\n /**\n * AddConstants\n * \"Global\" app variables. Don't worry David, they're not really global.\n */\n angular\n .module('app')\n .constant('_', window._)\n .constant('str', window._.string)\n .constant('Mousetrap', window.Mousetrap)\n // Toggle to hide/show features that are ready for production\n .constant('PRODUCTION', true);\n\n})();\n\n\n","(function() {\n 'use strict';\n\n /**\n * @name AppCtrl\n * @description Main controler for the entire app\n * @ngInject\n */\n function AppCtrl($scope, UserService, UrlService, LocaleService,\n MessageHandler, gettextCatalog, StringUtil, PRODUCTION) {\n var appCtrl = this;\n\n // See AppConstants.js\n appCtrl.PRODUCTION = PRODUCTION;\n appCtrl.settings = UserService.settings;\n appCtrl.uiLocaleList = [ LocaleService.DEFAULT_LOCALE ];\n\n /*\n Not used for the time being. But should show loading when change state\n $scope.$on('$stateChangeStart', function(event, toState) {\n if (toState.resolve) {\n }\n });\n\n $scope.$on('$stateChangeSuccess', function(event, toState) {\n if (toState.resolve) {\n }\n });\n */\n\n UrlService.init().then(loadLocales).\n then(loadUserInformation).\n then(loadUILocale);\n\n // On UI locale changes listener\n appCtrl.onChangeUILocale = function(locale) {\n appCtrl.myInfo.locale = locale;\n var uiLocaleId = appCtrl.myInfo.locale.localeId;\n if (!StringUtil.startsWith(uiLocaleId,\n LocaleService.DEFAULT_LOCALE.localeId, true)) {\n gettextCatalog.loadRemote(UrlService.uiTranslationURL(uiLocaleId))\n .then(\n function() {\n gettextCatalog.setCurrentLanguage(uiLocaleId);\n },\n function(error) {\n MessageHandler.displayInfo('Error loading UI locale. ' +\n 'Default to \\'' + LocaleService.DEFAULT_LOCALE.name +\n '\\': ' + error);\n gettextCatalog.setCurrentLanguage(\n LocaleService.DEFAULT_LOCALE);\n appCtrl.myInfo.locale = LocaleService.DEFAULT_LOCALE;\n });\n } else {\n gettextCatalog.setCurrentLanguage(\n LocaleService.DEFAULT_LOCALE.localeId);\n }\n };\n\n appCtrl.dashboardPage = function() {\n return UrlService.DASHBOARD_PAGE;\n };\n\n function loadLocales() {\n return LocaleService.getAllLocales();\n }\n\n function loadUserInformation() {\n return UserService.getMyInfo().then(\n function(myInfo) {\n appCtrl.myInfo = myInfo;\n appCtrl.myInfo.locale = LocaleService.DEFAULT_LOCALE;\n appCtrl.myInfo.gravatarUrl = UrlService.gravatarUrl(\n appCtrl.myInfo.gravatarHash, 72);\n }, function(error) {\n MessageHandler.displayError('Error loading my info: ' + error);\n });\n }\n\n function loadUILocale() {\n LocaleService.getUILocaleList().then(\n function(translationList) {\n for ( var i in translationList.locales) {\n var language = {\n 'localeId' : translationList.locales[i],\n 'name' : ''\n };\n appCtrl.uiLocaleList.push(language);\n }\n appCtrl.myInfo.locale = LocaleService.getLocaleByLocaleId(\n appCtrl.uiLocaleList, LocaleService.DEFAULT_LOCALE.localeId);\n if (!appCtrl.myInfo.locale) {\n appCtrl.myInfo.locale = LocaleService.DEFAULT_LOCALE;\n }\n },\n function(error) {\n MessageHandler.displayInfo('Error loading UI locale. ' +\n 'Default to \\'' + LocaleService.DEFAULT_LOCALE.name +\n '\\': ' + error);\n appCtrl.myInfo.locale = LocaleService.DEFAULT_LOCALE;\n });\n }\n }\n\n angular\n .module('app')\n .controller('AppCtrl', AppCtrl);\n\n})();\n\n\n\n","(function() {\n 'use strict';\n\n /**\n * EditorContentCtrl.js\n * @ngInject\n */\n function EditorContentCtrl($rootScope, EditorService, PhraseService,\n DocumentService, UrlService, EventService,\n $stateParams, PhraseUtil, $location, _,\n TransStatusService) {\n\n //TODO: move pager to directives/convert to infinite scroll\n var COUNT_PER_PAGE = 50,\n editorContentCtrl = this, status, filter;\n refreshFilterQueryFromUrl();\n\n editorContentCtrl.phrases = [];\n\n EditorService.updateContext($stateParams.projectSlug,\n $stateParams.versionSlug, DocumentService.decodeDocId($stateParams.docId),\n $stateParams.localeId);\n\n init();\n\n $rootScope.$on(EventService.EVENT.FILTER_TRANS_UNIT,\n function (event, filter) {\n if(filter.status.all === true) {\n $location.search('status', null);\n } else {\n var queries = [];\n _.forEach(filter.status, function(val, key) {\n if(val) {\n queries.push(key);\n }\n });\n $location.search('status', queries.join(','));\n }\n refreshFilterQueryFromUrl();\n init();\n });\n\n function refreshFilterQueryFromUrl() {\n status = UrlService.readValue('status');\n\n if(!_.isUndefined(status)) {\n status = status.split(',');\n status = _.transform(status, function(result, state) {\n state = TransStatusService.getServerId(state);\n return result.push(state);\n });\n }\n filter = {\n 'status': status\n };\n }\n\n\n $rootScope.$on(EventService.EVENT.GOTO_FIRST_PAGE,\n function () {\n if(EditorService.currentPageIndex > 0) {\n EditorService.currentPageIndex = 0;\n changePage(EditorService.currentPageIndex);\n }\n });\n\n $rootScope.$on(EventService.EVENT.GOTO_PREV_PAGE,\n function () {\n if(EditorService.currentPageIndex > 0) {\n EditorService.currentPageIndex -= 1;\n changePage(EditorService.currentPageIndex);\n }\n });\n\n $rootScope.$on(EventService.EVENT.GOTO_NEXT_PAGE,\n function () {\n if(EditorService.currentPageIndex < EditorService.maxPageIndex) {\n EditorService.currentPageIndex +=1;\n changePage(EditorService.currentPageIndex);\n }\n });\n\n $rootScope.$on(EventService.EVENT.GOTO_LAST_PAGE,\n function () {\n if(EditorService.currentPageIndex < EditorService.maxPageIndex) {\n EditorService.currentPageIndex = EditorService.maxPageIndex;\n changePage(EditorService.currentPageIndex);\n }\n });\n\n /*\n TODO: after moving to infinite scroll, all these go to event handler\n should move back to TransUnitService and use PhraseService.findNextId etc\n */\n // EventService.EVENT.GOTO_NEXT_ROW listener\n $rootScope.$on(EventService.EVENT.GOTO_NEXT_ROW, goToNextRow);\n\n // EventService.EVENT.GOTO_PREVIOUS_ROW listener\n $rootScope.$on(EventService.EVENT.GOTO_PREVIOUS_ROW, goToPreviousRow);\n\n // EventService.EVENT.GOTO_NEXT_UNTRANSLATED listener\n $rootScope.$on(EventService.EVENT.GOTO_NEXT_UNTRANSLATED,\n goToNextUntranslated);\n\n function goToNextRow(event, data) {\n var phrases = editorContentCtrl.phrases,\n phrase,\n currentIndex,\n nextIndex,\n nextId;\n\n currentIndex = _.findIndex(phrases, function (phrase) {\n return phrase.id === data.currentId;\n });\n nextIndex = Math.min(currentIndex + 1, phrases.length - 1);\n nextId = phrases[nextIndex].id;\n\n if (nextId !== data.currentId) {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {\n 'id': nextId,\n 'updateURL': true,\n 'focus': true\n }, null);\n } else {\n // we have reach the end\n phrase = phrases[currentIndex];\n EventService.emitEvent(EventService.EVENT.SAVE_TRANSLATION,\n {\n 'phrase': phrase,\n 'status': PhraseUtil.getSaveButtonStatus(phrase),\n 'locale': $stateParams.localeId,\n 'docId': $stateParams.docId\n });\n }\n }\n\n function goToPreviousRow(event, data) {\n var phrases = editorContentCtrl.phrases,\n phrase,\n currentIndex,\n previousIndex,\n prevId;\n\n currentIndex = _.findIndex(phrases, function (phrase) {\n return phrase.id === data.currentId;\n });\n previousIndex = Math.max(currentIndex - 1, 0);\n prevId = phrases[previousIndex].id;\n\n if (prevId !== data.currentId) {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {\n 'id': prevId,\n 'updateURL': true,\n 'focus': true\n }, null);\n } else {\n phrase = phrases[currentIndex];\n // have reach the start\n EventService.emitEvent(EventService.EVENT.SAVE_TRANSLATION,\n {\n 'phrase': phrase,\n 'status': PhraseUtil.getSaveButtonStatus(phrase),\n 'locale': $stateParams.localeId,\n 'docId': $stateParams.docId\n });\n }\n }\n\n function goToNextUntranslated(event, data) {\n var phrases = editorContentCtrl.phrases,\n requestStatus = TransStatusService.getStatusInfo(status),\n currentIndex,\n nextStatusInfo;\n\n currentIndex = _.findIndex(phrases, function (phrase) {\n return phrase.id === data.currentId;\n });\n\n for (var i = currentIndex + 1; i < phrases.length; i++) {\n nextStatusInfo = TransStatusService.getStatusInfo(\n phrases[i].state);\n if (nextStatusInfo.ID === requestStatus.ID) {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {\n 'id': phrases[i].id,\n 'updateURL': true,\n 'focus': true\n }, null);\n return;\n }\n }\n // can not find next untranslated\n //TransUnitService.saveCurrentRowIfModifiedAndUnfocus(data);\n }\n\n function changePage(pageIndex) {\n loadPhrase(pageIndex);\n EventService.emitEvent(EventService.EVENT.CANCEL_EDIT);\n }\n\n /**\n * Load transUnit\n *\n * @param projectSlug\n * @param versionSlug\n * @param docId\n * @param localeId\n */\n function init() {\n EventService.emitEvent(EventService.EVENT.REFRESH_STATISTIC,\n {\n projectSlug: EditorService.context.projectSlug,\n versionSlug: EditorService.context.versionSlug,\n docId: EditorService.context.docId,\n localeId: EditorService.context.localeId\n }\n );\n\n PhraseService.getPhraseCount(EditorService.context, filter).\n then(function(count) {\n EditorService.maxPageIndex = parseInt(count / COUNT_PER_PAGE);\n if(count > COUNT_PER_PAGE) {\n EditorService.maxPageIndex = count % COUNT_PER_PAGE !== 0 ?\n EditorService.maxPageIndex +=1 : EditorService.maxPageIndex;\n }\n\n EditorService.maxPageIndex = EditorService.maxPageIndex -1 < 0 ? 0 :\n EditorService.maxPageIndex -1;\n\n loadPhrase(EditorService.currentPageIndex);\n });\n }\n\n function loadPhrase(pageIndex) {\n var startIndex = pageIndex * COUNT_PER_PAGE;\n PhraseService.fetchAllPhrase(EditorService.context, filter,\n startIndex, COUNT_PER_PAGE).then(displayPhrases);\n }\n\n function displayPhrases(phrases) {\n editorContentCtrl.phrases = phrases;\n }\n\n return editorContentCtrl;\n }\n\n angular\n .module('app')\n .controller('EditorContentCtrl', EditorContentCtrl);\n})();\n","(function() {\n 'use strict';\n\n /**\n * EditorCtrl.js\n * @ngInject\n */\n function EditorCtrl($scope, UserService, DocumentService, LocaleService,\n ProjectService, EditorService, SettingsService, StatisticUtil,\n UrlService, $stateParams, $state, MessageHandler, $rootScope,\n EventService, EditorShortcuts, _, Mousetrap) {\n var editorCtrl = this;\n editorCtrl.pageNumber = 1;\n editorCtrl.showCheatsheet = false;\n editorCtrl.shortcuts = _.mapValues(\n _.values(EditorShortcuts.SHORTCUTS), function(shortcutInfo) {\n // second combo (secondary keys) is an array. We have to flatten it\n var keyCombos = _.flatten(shortcutInfo.keyCombos, 'combo');\n return {\n combos: _.map(keyCombos, function(key) {\n return EditorShortcuts.symbolizeKey(key);\n }),\n description: shortcutInfo.keyCombos[0].description\n };\n });\n\n //tu status to include for display\n editorCtrl.filter = {\n 'status' : {\n 'all': true,\n 'approved' : false,\n 'translated' : false,\n 'needsWork': false,\n 'untranslated': false\n }\n };\n\n processFilterQuery();\n\n //This is just processing UI during startup,\n //phrase filtering are done in EditorContentCtrl during init\n function processFilterQuery() {\n //process filter query\n var status = UrlService.readValue('status');\n\n if(!_.isUndefined(status)) {\n status = status.split(',');\n _.forEach(status, function(val) {\n if(!_.isUndefined(editorCtrl.filter.status[val])) {\n editorCtrl.filter.status[val] = true;\n }\n });\n updateFilter();\n }\n }\n\n Mousetrap.bind('?', function(event) {\n var srcElement = event.srcElement;\n if (!editorCtrl.showCheatsheet && !stopCheatsheetCallback(srcElement)) {\n editorCtrl.toggleKeyboardShortcutsModal();\n $scope.$digest();\n }\n }, 'keyup');\n\n /**\n * Mousetrap by default stops callback on input elements BUT\n * hotkeys monkey patched it!!!\n * TODO change this hack once we remove angular hotkeys\n */\n function stopCheatsheetCallback(element) {\n // if the element has the class \"mousetrap\" then no need to stop\n if ((' ' + element.className + ' ').indexOf(' mousetrap ') > -1) {\n return false;\n }\n\n // stop for input, select, and textarea\n return element.tagName === 'INPUT' || element.tagName === 'SELECT' ||\n element.tagName === 'TEXTAREA' || element.isContentEditable;\n }\n\n //TODO: cross domain rest\n //TODO: Unit test\n\n //Working URL: http://localhost:8000/#/tiny-project/1/translate or\n // http://localhost:8000/#/tiny-project/1/translate/hello.txt/fr\n editorCtrl.context = EditorService.initContext($stateParams.projectSlug,\n $stateParams.versionSlug, DocumentService.decodeDocId($stateParams.docId),\n LocaleService.DEFAULT_LOCALE, LocaleService.DEFAULT_LOCALE.localeId,\n 'READ_WRITE');\n\n editorCtrl.toggleKeyboardShortcutsModal = function() {\n editorCtrl.showCheatsheet = !editorCtrl.showCheatsheet;\n };\n\n var SHOW_SUGGESTIONS = SettingsService.SETTING.SHOW_SUGGESTIONS;\n $scope.showSuggestions = SettingsService.subscribe(SHOW_SUGGESTIONS,\n function (show) {\n $scope.showSuggestions = show;\n });\n editorCtrl.toggleSuggestionPanel = function () {\n SettingsService.update(SHOW_SUGGESTIONS, !$scope.showSuggestions);\n };\n\n\n editorCtrl.versionPage = function() {\n return UrlService.PROJECT_PAGE(editorCtrl.context.projectSlug,\n editorCtrl.context.versionSlug);\n };\n\n editorCtrl.encodeDocId = function(docId) {\n return DocumentService.encodeDocId(docId);\n };\n\n ProjectService.getProjectInfo($stateParams.projectSlug).then(\n function(projectInfo) {\n editorCtrl.projectInfo = projectInfo;\n },\n function(error) {\n MessageHandler.displayError('Error getting project ' +\n 'information:' + error);\n });\n\n LocaleService.getSupportedLocales(editorCtrl.context.projectSlug,\n editorCtrl.context.versionSlug).then(\n function(locales) {\n editorCtrl.locales = locales;\n if (!editorCtrl.locales || editorCtrl.locales.length <= 0) {\n //redirect if no supported locale in version\n MessageHandler.displayError('No supported locales in ' +\n editorCtrl.context.projectSlug + ' : ' +\n editorCtrl.context.versionSlug);\n } else {\n //if localeId is not defined in url, set to first from list\n var selectedLocaleId = $state.params.localeId;\n var context = editorCtrl.context;\n\n if (!selectedLocaleId) {\n context.localeId = editorCtrl.locales[0].localeId;\n transitionToEditorSelectedView();\n } else {\n context.localeId = selectedLocaleId;\n if (!LocaleService.containsLocale(editorCtrl.locales,\n selectedLocaleId)) {\n context.localeId = editorCtrl.locales[0].localeId;\n }\n }\n }\n }, function(error) {\n MessageHandler.displayError('Error getting locale list: ' + error);\n });\n\n DocumentService.findAll(editorCtrl.context.projectSlug,\n editorCtrl.context.versionSlug).then(\n function(documents) {\n editorCtrl.documents = documents;\n\n if (!editorCtrl.documents || editorCtrl.documents.length <= 0) {\n //redirect if no documents in version\n MessageHandler.displayError('No documents in ' +\n editorCtrl.context.projectSlug + ' : ' +\n editorCtrl.context.versionSlug);\n } else {\n //if docId is not defined in url, set to first from list\n var selectedDocId = $state.params.docId,\n context = editorCtrl.context;\n if (!selectedDocId) {\n context.docId = editorCtrl.documents[0].name;\n transitionToEditorSelectedView();\n } else {\n context.docId = DocumentService.decodeDocId(selectedDocId);\n if (!DocumentService.containsDoc(editorCtrl.documents,\n context.docId)) {\n context.docId = editorCtrl.documents[0].name;\n }\n }\n }\n }, function(error) {\n MessageHandler.displayError('Error getting document list: ' + error);\n });\n\n $rootScope.$on(EventService.EVENT.SELECT_TRANS_UNIT,\n function (event, data) {\n editorCtrl.unitSelected = data.id;\n editorCtrl.focused = data.focus;\n });\n\n $rootScope.$on(EventService.EVENT.CANCEL_EDIT,\n function () {\n editorCtrl.unitSelected = false;\n editorCtrl.focused = false;\n });\n\n $rootScope.$on(EventService.EVENT.REFRESH_STATISTIC,\n function (event, data) {\n\n loadStatistic(data.projectSlug, data.versionSlug, data.docId,\n data.localeId);\n\n editorCtrl.context.docId = data.docId;\n editorCtrl.context.localeId = data.localeId;\n });\n\n editorCtrl.pageNumber = function() {\n if(EditorService.maxPageIndex === 0) {\n return EditorService.currentPageIndex + 1;\n } else {\n return (EditorService.currentPageIndex + 1) + ' of ' +\n (EditorService.maxPageIndex + 1);\n }\n };\n\n editorCtrl.getLocaleName = function(localeId) {\n return LocaleService.getName(localeId);\n };\n\n editorCtrl.firstPage = function() {\n EventService.emitEvent(EventService.EVENT.GOTO_FIRST_PAGE);\n };\n\n editorCtrl.lastPage = function() {\n EventService.emitEvent(EventService.EVENT.GOTO_LAST_PAGE);\n };\n\n\n editorCtrl.nextPage = function() {\n EventService.emitEvent(EventService.EVENT.GOTO_NEXT_PAGE);\n };\n\n editorCtrl.previousPage = function() {\n EventService.emitEvent(EventService.EVENT.GOTO_PREV_PAGE);\n };\n\n editorCtrl.resetFilter = function() {\n resetFilter(true);\n };\n\n editorCtrl.updateFilter = function() {\n updateFilter(true);\n };\n\n function updateFilter(fireEvent) {\n if(isStatusSame(editorCtrl.filter.status)) {\n resetFilter(fireEvent);\n } else {\n editorCtrl.filter.status.all = false;\n if(fireEvent) {\n EventService.emitEvent(EventService.EVENT.FILTER_TRANS_UNIT,\n editorCtrl.filter);\n }\n }\n }\n\n function resetFilter(fireEvent) {\n editorCtrl.filter.status.all = true;\n editorCtrl.filter.status.approved = false;\n editorCtrl.filter.status.translated = false;\n editorCtrl.filter.status.needsWork = false;\n editorCtrl.filter.status.untranslated = false;\n\n if(fireEvent) {\n EventService.emitEvent(EventService.EVENT.FILTER_TRANS_UNIT,\n editorCtrl.filter);\n }\n }\n\n function isStatusSame(statuses) {\n return statuses.approved === statuses.translated &&\n statuses.translated === statuses.needsWork &&\n statuses.needsWork === statuses.untranslated;\n }\n\n function transitionToEditorSelectedView() {\n if (isDocumentAndLocaleSelected()) {\n $state.go('editor.selectedContext', {\n 'docId': editorCtrl.context.docId,\n 'localeId': editorCtrl.context.localeId\n });\n }\n }\n\n function isDocumentAndLocaleSelected() {\n return editorCtrl.context.docId && editorCtrl.context.localeId;\n }\n\n /**\n * Load document statistics (word and message)\n *\n * @param projectSlug\n * @param versionSlug\n * @param docId\n * @param localeId\n */\n function loadStatistic(projectSlug, versionSlug, docId, localeId) {\n DocumentService.getStatistics(projectSlug, versionSlug, docId, localeId)\n .then(function(statistics) {\n editorCtrl.wordStatistic = StatisticUtil\n .getWordStatistic(statistics);\n editorCtrl.messageStatistic = StatisticUtil\n .getMsgStatistic(statistics);\n },\n function(error) {\n MessageHandler.displayError('Error loading statistic: ' + error);\n });\n }\n\n this.settings = UserService.settings.editor;\n\n EditorShortcuts.enableEditorKeys();\n }\n\n angular\n .module('app')\n .controller('EditorCtrl', EditorCtrl);\n})();\n","(function() {\n 'use strict';\n\n /**\n * EditorDetailsCtrl.js\n * @ngInject\n */\n function EditorDetailsCtrl() {\n var editorDetailsCtrl = this;\n\n return editorDetailsCtrl;\n }\n\n angular\n .module('app')\n .controller('EditorDetailsCtrl', EditorDetailsCtrl);\n})();\n","(function () {\n 'use strict';\n\n /**\n * EditorService.js\n * //TODO: parse editorContext in functions\n * @ngInject\n */\n function EditorService($rootScope, $resource, _, UrlService,\n EventService, PhraseService, PhraseUtil, DocumentService, MessageHandler,\n TransStatusService) {\n var editorService = this,\n queue = {};\n\n editorService.context = {};\n\n editorService.currentPageIndex = 0;\n editorService.maxPageIndex = 0;\n\n editorService.initContext =\n function (projectSlug, versionSlug, docId, srcLocale, localeId, mode) {\n editorService.context = {\n projectSlug: projectSlug,\n versionSlug: versionSlug,\n docId: docId,\n srcLocale: srcLocale,\n localeId: localeId,\n mode: mode // READ_WRITE, READ_ONLY, REVIEW\n };\n return editorService.context;\n };\n\n editorService.updateContext = function(projectSlug, versionSlug, docId,\n localeId) {\n if(editorService.context.projectSlug !== projectSlug) {\n editorService.context.projectSlug = projectSlug;\n }\n if(editorService.context.versionSlug !== versionSlug) {\n editorService.context.versionSlug = versionSlug;\n }\n if(editorService.context.docId !== docId) {\n editorService.context.docId = docId;\n }\n if(editorService.context.localeId !== localeId) {\n editorService.context.localeId = localeId;\n }\n };\n\n /**\n * EventService.EVENT.SAVE_TRANSLATION listener\n * Perform save translation with given status\n *\n * - queue save translation request (1 global queue, 1 for each TU)\n * - if queue contains request id, replace old request with new request\n */\n $rootScope.$on(EventService.EVENT.SAVE_TRANSLATION,\n function (event, data) {\n var phrase = data.phrase,\n status = data.status;\n if (!needToSavePhrase(phrase, status)) {\n // nothing has changed\n return;\n }\n\n //update pending queue if contains\n if (_.has(queue, phrase.id)) {\n var pendingRequest = queue[phrase.id];\n pendingRequest.phrase = phrase;\n pendingRequest.status = status;\n } else {\n status = resolveTranslationState(phrase, status);\n queue[phrase.id] = {\n 'phrase': phrase,\n 'status': status,\n 'locale': data.locale,\n 'docId': data.docId\n };\n }\n EventService.emitEvent(EventService.EVENT.SAVE_INITIATED, data);\n processSaveRequest(phrase.id);\n });\n\n function needToSavePhrase(phrase, status) {\n return PhraseUtil.hasTranslationChanged(phrase) ||\n phrase.status !== status;\n }\n\n // Process save translation request\n function processSaveRequest(id) {\n var context = _.cloneDeep(editorService.context);\n\n var request = queue[id];\n\n var Translation = $resource(UrlService.TRANSLATION_URL, {}, {\n update: {\n method: 'PUT',\n params: {\n localeId: request.locale\n }\n }\n });\n var data = {\n id: request.phrase.id,\n revision: request.phrase.revision || 0,\n content: request.phrase.newTranslations[0],\n contents: request.phrase.newTranslations,\n // Return status object to PascalCase Id for the server\n status: TransStatusService.getServerId(request.status.ID),\n plural: request.phrase.plural\n };\n\n Translation.update(data).$promise.then(\n function(response) {\n var oldStatus = request.phrase.status.ID;\n\n PhraseService.onTransUnitUpdated(context, data.id, request.locale,\n response.revision, response.status, request.phrase);\n\n DocumentService.updateStatistic(context.projectSlug,\n context.versionSlug, request.docId, request.locale,\n oldStatus, TransStatusService.getId(response.status),\n request.phrase.wordCount);\n\n EventService.emitEvent(EventService.EVENT.SAVE_COMPLETED,\n request.phrase);\n },\n function(response) {\n MessageHandler.displayWarning('Update translation failed for ' +\n data.id + ' -' + response);\n PhraseService.onTransUnitUpdateFailed(data.id);\n EventService.emitEvent(EventService.EVENT.SAVE_COMPLETED,\n request.phrase);\n });\n delete queue[id];\n }\n\n function resolveTranslationState(phrase, requestStatus) {\n if (_.isEmpty(_.compact(phrase.newTranslations))) {\n return TransStatusService.getStatusInfo('UNTRANSLATED');\n }\n return requestStatus;\n }\n\n return editorService;\n }\n\n angular\n .module('app')\n .factory('EditorService', EditorService);\n\n})();\n\n","(function () {\n 'use strict';\n\n /**\n * @name EditorShortcuts\n * @description service for editor keyboard shortcuts\n * @ngInject\n */\n function EditorShortcuts(EventService, $stateParams, _, hotkeys, PhraseUtil,\n TransStatusService, Mousetrap, str, $window) {\n var editorShortcuts = this,\n inSaveAsMode = false;\n\n // this will be set by TransUnitService\n // on EVENT.SELECT_TRANS_UNIT and unset on EVENT.CANCEL_EDIT\n editorShortcuts.selectedTUCtrl = null;\n\n function copySourceCallback(event) {\n if (editorShortcuts.selectedTUCtrl) {\n event.preventDefault();\n EventService.emitEvent(EventService.EVENT.COPY_FROM_SOURCE,\n {'phrase': editorShortcuts.selectedTUCtrl.getPhrase()});\n }\n }\n\n function gotoNextRowCallback(event) {\n if (editorShortcuts.selectedTUCtrl) {\n event.preventDefault();\n event.stopPropagation();\n EventService.emitEvent(EventService.EVENT.GOTO_NEXT_ROW,\n currentContext());\n }\n }\n\n function gotoPreviousRowCallback(event) {\n if (editorShortcuts.selectedTUCtrl) {\n event.preventDefault();\n event.stopPropagation();\n EventService.emitEvent(EventService.EVENT.GOTO_PREVIOUS_ROW,\n currentContext());\n }\n }\n\n function cancelEditCallback(event) {\n event.preventDefault();\n event.stopPropagation();\n if (inSaveAsMode) {\n editorShortcuts.cancelSaveAsModeIfOn();\n if (editorShortcuts.selectedTUCtrl) {\n editorShortcuts.selectedTUCtrl.focusTranslation();\n }\n } else if (editorShortcuts.selectedTUCtrl) {\n var phrase = editorShortcuts.selectedTUCtrl.getPhrase();\n if (PhraseUtil.hasTranslationChanged(phrase)) {\n // if it has changed translation, undo edit\n EventService.emitEvent(EventService.EVENT.UNDO_EDIT,\n phrase);\n } else {\n // otherwise cancel edit\n EventService.emitEvent(EventService.EVENT.CANCEL_EDIT,\n phrase);\n }\n }\n }\n\n function saveAsCurrentButtonOptionCallback(event) {\n if (editorShortcuts.selectedTUCtrl) {\n event.preventDefault();\n var phrase = editorShortcuts.selectedTUCtrl.getPhrase();\n EventService.emitEvent(EventService.EVENT.SAVE_TRANSLATION,\n {\n 'phrase': phrase,\n 'status': PhraseUtil.getSaveButtonStatus(phrase),\n 'locale': $stateParams.localeId,\n 'docId': $stateParams.docId\n });\n }\n }\n\n /**\n * This is to mimic sequence shortcut.\n * e.g. press ctlr-shift-s then press 'n' to save as\n * 'needs work'.\n */\n function saveAsModeCallback(event) {\n event.preventDefault();\n editorShortcuts.cancelSaveAsModeIfOn();\n var phrase = editorShortcuts.selectedTUCtrl.getPhrase();\n if (phrase) {\n EventService.emitEvent(EventService.EVENT.TOGGLE_SAVE_OPTIONS,\n {\n 'id': phrase.id,\n 'open': true\n });\n\n addSaveAsModeExtensionKey(phrase, 'n', 'needsWork');\n addSaveAsModeExtensionKey(phrase, 't', 'translated');\n addSaveAsModeExtensionKey(phrase, 'a', 'approved');\n }\n }\n\n /**\n * Generate a callback that will copy one of the suggestions to the editor.\n *\n * @param {number} oneBasedIndex the 1-based index of the suggestion that\n * this callback will copy\n * @return {function} callback that will copy the nth suggestion.\n */\n function copySuggestionCallback(oneBasedIndex) {\n return (function (event) {\n event.preventDefault();\n EventService.emitEvent(EventService.EVENT.COPY_FROM_SUGGESTION_N,\n oneBasedIndex-1);\n });\n }\n\n /**\n * mod will be replaced by ctrl if on windows/linux or cmd if on mac.\n * By default it listens on keydown event.\n */\n editorShortcuts.SHORTCUTS = {\n COPY_SOURCE: new ShortcutInfo(\n 'alt+c', copySourceCallback, 'Copy source as translation', 'alt+g'),\n\n COPY_SUGGESTION_1: new ShortcutInfo(\n 'mod+alt+1', copySuggestionCallback(1),\n 'Copy first suggestion as translation'),\n\n COPY_SUGGESTION_2: new ShortcutInfo(\n 'mod+alt+2', copySuggestionCallback(2),\n 'Copy second suggestion as translation'),\n\n COPY_SUGGESTION_3: new ShortcutInfo(\n 'mod+alt+3', copySuggestionCallback(3),\n 'Copy third suggestion as translation'),\n\n COPY_SUGGESTION_4: new ShortcutInfo(\n 'mod+alt+4', copySuggestionCallback(4),\n 'Copy fourth suggestion as translation'),\n\n CANCEL_EDIT: new ShortcutInfo('esc', cancelEditCallback, 'Cancel edit'),\n\n SAVE_AS_CURRENT_BUTTON_OPTION: new ShortcutInfo(\n 'mod+s', saveAsCurrentButtonOptionCallback, 'Save'),\n\n SAVE_AS_MODE: new ShortcutInfo(\n 'mod+shift+s', saveAsModeCallback, 'Save as…'),\n\n // this is just so we can show it in cheatsheet.\n // see app/editor/EditorCtrl.shortcuts\n SAVE_AS_NEEDSWORK: {\n keyCombos: [{combo: 'mod+shift+s n', description: 'Save as needs work'}]\n },\n\n SAVE_AS_TRANSLATED: {\n keyCombos: [{combo: 'mod+shift+s t', description: 'Save as translated'}]\n },\n\n SAVE_AS_APPROVED: {\n keyCombos: [{combo: 'mod+shift+s a', description: 'Save as approved'}]\n },\n\n GOTO_NEXT_ROW_FAST: new ShortcutInfo(\n 'mod+enter', gotoNextRowCallback,\n 'Save (if changed) and go to next string',\n ['alt+k', 'alt+down']),\n\n GOTO_PREVIOUS_ROW: new ShortcutInfo(\n 'mod+shift+enter', gotoPreviousRowCallback,\n 'Save (if changed) and go to previous string',\n ['alt+j', 'alt+up'])\n /*\n Disable for now until status navigation implementation\n GOTO_NEXT_UNTRANSLATED: new ShortcutInfo(\n 'tab+u', gotoToNextUntranslatedCallback)\n */\n };\n\n /*\n Disable for now until status navigation implementation\n\n function gotoToNextUntranslatedCallback(event) {\n event.preventDefault();\n event.stopPropagation();\n if (editorShortcuts.selectedTUCtrl) {\n EventService.emitEvent(EventService.EVENT.GOTO_NEXT_UNTRANSLATED,\n currentContext());\n }\n // the shortcut is a tab + u combination\n // we don't want other tab event to trigger\n tabCombinationPressed = true;\n }\n */\n\n /**\n *\n * @param {string} defaultKey default key combo for a shortcut\n * @param {function} callback callback to execute\n * @param {string} [description]\n * optional. If not empty will apply to default key (shows in cheatsheet)\n * @param {(string|string[])} [otherKeys]\n * optional other keys that will do the same (won't show in cheatsheet)\n * @param {string} [action] optional event to listen to. e.g. 'keyup'\n * @returns {EditorShortcuts.ShortcutInfo}\n * @constructor\n */\n function ShortcutInfo(defaultKey, callback, description, otherKeys, action)\n {\n this.defaultKey = defaultKey;\n this.keyCombos = [\n singleKeyConfig(defaultKey, description, action, callback)\n ];\n if (otherKeys) {\n this.otherKeys = otherKeys instanceof Array ? otherKeys : [otherKeys];\n this.keyCombos.push(\n singleKeyConfig(this.otherKeys, '', action, callback));\n }\n return this;\n }\n\n function singleKeyConfig(combo, description, action, callback) {\n var keyConfig = {\n allowIn: ['TEXTAREA'],\n callback: callback\n };\n keyConfig.combo = combo;\n if (description) {\n keyConfig.description = description;\n }\n if (action) {\n keyConfig.action = action;\n }\n return keyConfig;\n }\n\n editorShortcuts.enableEditorKeys = function () {\n // here we only check copy source shortcut since we always enable keys in\n // bundle.\n if (!hotkeys.get(editorShortcuts.SHORTCUTS.COPY_SOURCE.defaultKey)) {\n _.forOwn(editorShortcuts.SHORTCUTS, function(value) {\n if (value instanceof ShortcutInfo) { // a hack to handle sequence keys\n enableShortcut(value);\n }\n });\n }\n };\n\n editorShortcuts.disableEditorKeys = function () {\n _.forOwn(editorShortcuts.SHORTCUTS, function(value) {\n _.forEach(value.keyCombos, function(hotkey) {\n editorShortcuts.deleteKeys(hotkey.combo, hotkey.action);\n });\n });\n };\n\n function enableShortcut(shortcutInfo) {\n if (!hotkeys.get(shortcutInfo.defaultKey)) {\n _.forEach(shortcutInfo.keyCombos,\n function(combo) {\n hotkeys.add(combo);\n });\n }\n }\n\n function currentContext() {\n return {\n 'currentId': editorShortcuts.selectedTUCtrl.getPhrase().id\n };\n }\n\n function addSaveAsModeExtensionKey(phrase, combo, status) {\n var statusInfo = TransStatusService.getStatusInfo(status);\n return hotkeys.add({\n combo: combo,\n description: str.sprintf('Save as %s', status),\n allowIn: ['INPUT', 'TEXTAREA'],\n action: 'keydown',\n callback: function (event) {\n editorShortcuts.saveTranslationCallBack(event, phrase, statusInfo);\n }\n });\n }\n\n editorShortcuts.saveTranslationCallBack = function(event, phrase,\n statusInfo) {\n inSaveAsMode = true;\n\n event.preventDefault();\n event.stopPropagation();\n\n EventService.emitEvent(EventService.EVENT.SAVE_TRANSLATION,\n {\n 'phrase': phrase,\n 'status': statusInfo,\n 'locale': $stateParams.localeId,\n 'docId': $stateParams.docId\n });\n editorShortcuts.cancelSaveAsModeIfOn();\n };\n\n editorShortcuts.cancelSaveAsModeIfOn = function() {\n if (inSaveAsMode && editorShortcuts.selectedTUCtrl) {\n inSaveAsMode = false;\n editorShortcuts.deleteKeys(['n', 't', 'a']);\n EventService.emitEvent(EventService.EVENT.TOGGLE_SAVE_OPTIONS,\n {\n 'id': editorShortcuts.selectedTUCtrl.getPhrase().id,\n 'open': false\n });\n }\n };\n\n /**\n * This is a workaround for augular-hotkeys not being able to delete hotkey.\n * @see https://github.com/chieffancypants/angular-hotkeys/issues/100\n *\n * @param {(string|string[])} keys single key or array of keys to be deleted\n * @param {string} [action='keydown'] 'keyup' or 'keydown' etc.\n */\n editorShortcuts.deleteKeys = function(keys, action) {\n var keysToDelete = keys instanceof Array ? keys : [keys];\n action = action || 'keydown';\n _.forEach(keysToDelete, function(key) {\n hotkeys.del(key);\n Mousetrap.unbind(key, action);\n });\n };\n\n /**\n * Copied from angular-hotkeys.\n * Convert strings like cmd into symbols like ⌘\n * @param {String} combo Key combination, e.g. 'mod+f'\n * @return {String} The key combination with symbols\n */\n editorShortcuts.symbolizeKey = function (combo) {\n var map = {\n command: '⌘',\n shift: '⇧',\n left: '←',\n right: '→',\n up: '↑',\n down: '↓',\n 'return': '↩',\n backspace: '⌫'\n };\n combo = combo.split('+');\n\n for (var i = 0; i < combo.length; i++) {\n // try to resolve command / ctrl based on OS:\n if (combo[i] === 'mod') {\n if ($window.navigator &&\n $window.navigator.platform.indexOf('Mac') >= 0) {\n combo[i] = 'command';\n } else {\n combo[i] = 'ctrl';\n }\n }\n\n combo[i] = map[combo[i]] || combo[i];\n }\n\n return combo.join(' + ');\n };\n\n return editorShortcuts;\n }\n\n angular\n .module('app')\n .factory('EditorShortcuts', EditorShortcuts);\n})();\n\n","(function() {\n 'use strict';\n\n /**\n * EditorSuggestionsCtrl.js\n * @ngInject\n */\n function EditorSuggestionsCtrl($scope, _, SettingsService,\n PhraseSuggestionsService, TextSuggestionsService, EventService,\n $rootScope, $timeout, focus) {\n var SHOW_SUGGESTIONS_SETTING = SettingsService.SETTING.SHOW_SUGGESTIONS;\n var SUGGESTIONS_SHOW_DIFFERENCE_SETTING =\n SettingsService.SETTING.SUGGESTIONS_SHOW_DIFFERENCE;\n\n var editorSuggestionsCtrl = this;\n\n $scope.suggestions = [];\n $scope.hasSuggestions = false;\n $scope.$watch('suggestions.length', function (length) {\n $scope.hasSuggestions = length !== 0;\n });\n\n /* @type {string[]} */\n $scope.searchStrings = [];\n $scope.hasSearch = false;\n $scope.$watch('searchStrings.length', function (length) {\n $scope.hasSearch = length !== 0;\n });\n\n // TODO initialize with current trans unit selection state.\n $scope.isTransUnitSelected = false;\n\n // These must always be opposites. Probably change to an enum.\n $scope.isTextSearch = false;\n $scope.isPhraseSearch = true;\n\n function setTextSearch(active) {\n $scope.isTextSearch = active;\n $scope.isPhraseSearch = !active;\n }\n\n $scope.search = {\n isVisible: false,\n isLoading: false,\n input: {\n text: '',\n focused: false\n }\n };\n\n $scope.$watch('search.input.text', function () {\n editorSuggestionsCtrl.searchForText();\n });\n\n $scope.show = SettingsService.subscribe(SHOW_SUGGESTIONS_SETTING,\n function (show) {\n $scope.show = show;\n\n if (show) {\n if ($scope.isTransUnitSelected) {\n updatePhraseDisplay();\n } else {\n if (!$scope.search.isVisible) {\n showSearch(null, true);\n }\n }\n }\n\n });\n\n $scope.diff = SettingsService.subscribe(SUGGESTIONS_SHOW_DIFFERENCE_SETTING,\n function (diff) {\n $scope.diff = diff;\n });\n\n $scope.focusSearch = function($event) {\n if ($event) {\n $event.preventDefault();\n }\n focus('searchSugInput');\n };\n\n editorSuggestionsCtrl.closeSuggestions = function () {\n SettingsService.update(SHOW_SUGGESTIONS_SETTING, false);\n EventService.emitEvent(EventService.EVENT.SUGGESTIONS_SEARCH_TOGGLE,\n false);\n };\n\n editorSuggestionsCtrl.clearSearchResults =\n function($event, dontFocusInput) {\n // just remove the text, service will handle updating to empty results.\n $scope.search.input.text = '';\n\n if (!dontFocusInput && $event) {\n $scope.focusSearch($event);\n }\n };\n\n editorSuggestionsCtrl.searchForText = function () {\n var newText = $scope.search.input.text;\n if (newText.length > 0) {\n $scope.search.isLoading = true;\n }\n setTextSearch(true);\n EventService.emitEvent(EventService.EVENT.REQUEST_TEXT_SUGGESTIONS,\n newText);\n };\n\n editorSuggestionsCtrl.toggleSearch = function() {\n if ($scope.search.isVisible) {\n EventService.emitEvent(EventService.EVENT.SUGGESTIONS_SEARCH_TOGGLE,\n false);\n }\n else {\n EventService.emitEvent(EventService.EVENT.SUGGESTIONS_SEARCH_TOGGLE,\n true);\n }\n };\n\n // Init\n if ($scope.show && !$scope.isTransUnitSelected) {\n showSearch();\n }\n\n // TODO inline this\n function displaySuggestions(suggestions) {\n $scope.suggestions = suggestions;\n }\n\n function hideSearch() {\n $scope.search.isVisible = false;\n setTextSearch(false);\n updatePhraseDisplay();\n }\n\n function showSearch($event, dontFocusInput) {\n $scope.search.input.text = '';\n $scope.search.isVisible = true;\n if (!dontFocusInput && $event) {\n $scope.focusSearch($event);\n }\n editorSuggestionsCtrl.searchForText();\n updateTextDisplay();\n }\n\n $rootScope.$on(EventService.EVENT.SELECT_TRANS_UNIT,\n function () {\n // Automatically switch back to phrase search when no search is entered\n if ($scope.search.input.text === '' && $scope.search.isVisible) {\n EventService.emitEvent(EventService.EVENT.SUGGESTIONS_SEARCH_TOGGLE,\n false);\n }\n $scope.isTransUnitSelected = true;\n });\n\n $rootScope.$on(EventService.EVENT.CANCEL_EDIT,\n function () {\n $scope.isTransUnitSelected = false;\n if ($scope.show && !$scope.search.isVisible) {\n showSearch(null, true);\n }\n });\n\n $rootScope.$on(EventService.EVENT.SUGGESTIONS_SEARCH_TOGGLE,\n function(event, activate) {\n if (activate) {\n showSearch(event);\n }\n else {\n hideSearch(event);\n }\n });\n\n // Automatic suggestions search on row select\n $rootScope.$on('PhraseSuggestionsService:updated', function () {\n if ($scope.isPhraseSearch) {\n updatePhraseDisplay();\n }\n });\n\n /**\n * Update all the state to match the latest from the phrase search.\n */\n function updatePhraseDisplay() {\n $scope.searchStrings = PhraseSuggestionsService.getSearchStrings();\n $scope.search.isLoading = PhraseSuggestionsService.isLoading();\n displaySuggestions(PhraseSuggestionsService.getResults());\n }\n\n\n // Manual suggestions search\n $rootScope.$on('TextSuggestionsService:updated', function () {\n if ($scope.isTextSearch) {\n updateTextDisplay();\n }\n });\n\n /**\n * Update all the state to match the latest from the text search service.\n */\n function updateTextDisplay() {\n $scope.searchStrings = TextSuggestionsService.getSearchStrings();\n $scope.search.isLoading = TextSuggestionsService.isLoading();\n displaySuggestions(TextSuggestionsService.getResults());\n }\n\n $rootScope.$on(EventService.EVENT.COPY_FROM_SUGGESTION_N,\n function (event, matchIndex) {\n\n if ($scope.show) {\n // copy visible suggestion with that index\n copySuggestion($scope.suggestions[matchIndex]);\n\n // event for copy button on suggestion to display 'copied'\n $scope.$broadcast('EditorSuggestionsCtrl:nth-suggestion-copied',\n matchIndex);\n\n } else {\n // copy suggestion from background phrase search\n copySuggestion(PhraseSuggestionsService.getResults()[matchIndex]);\n }\n\n });\n\n\n function copySuggestion(suggestion) {\n if (suggestion) {\n EventService.emitEvent(EventService.EVENT.COPY_FROM_SUGGESTION,\n { suggestion: suggestion });\n }\n }\n\n return editorSuggestionsCtrl;\n }\n\n angular\n .module('app')\n .controller('EditorSuggestionsCtrl', EditorSuggestionsCtrl);\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name blur-on\n * @description When you put attribute 'blur-on=\"something\"',\n * you can then blur this element. It works the same way as focus-on library.\n */\n function blurOn() {\n return {\n restrict: 'A',\n link: function(scope, elem, attr) {\n return scope.$on('blurOn', function (e, name) {\n if (name === attr.blurOn) {\n return elem[0].blur();\n }\n });\n }\n };\n }\n\n angular\n .module('app')\n .directive('blurOn', blurOn);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name clickElsewhere\n * @description Initiate expression when clicking somewhere else\n * @ngInject\n */\n function clickElsewhere($document) {\n return {\n restrict: 'A',\n scope: {\n callback: '&clickElsewhere'\n },\n link: function(scope, element) {\n var handler = function(e) {\n if (!element[0].contains(e.target)) {\n scope.$apply(scope.callback(e));\n }\n };\n\n $document.on('click', handler);\n\n scope.$on('$destroy', function() {\n $document.off('click', handler);\n });\n }\n };\n }\n\n angular\n .module('app')\n .directive('clickElsewhere', clickElsewhere);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * Handle server communication on document related\n * information in project-version.\n *\n * DocumentService.js\n * @ngInject\n */\n function DocumentService($q, $resource, UrlService, StringUtil,\n StatisticUtil, EventService, _, TransStatusService) {\n var documentService = this,\n statisticMap = {};\n\n /**\n * Finds all documents in given project version\n *\n * @param _projectSlug\n * @param _versionSlug\n * @returns {$promise|*|N.$promise}\n */\n documentService.findAll = function findAll(_projectSlug, _versionSlug) {\n var Documents = $resource(UrlService.DOCUMENT_LIST_URL, {}, {\n query: {\n method: 'GET',\n params: {\n projectSlug: _projectSlug,\n versionSlug: _versionSlug\n },\n isArray: true\n }\n });\n return Documents.query().$promise;\n };\n\n /**\n * Get statistic of document in locale (word and message)\n *\n * @param _projectSlug\n * @param _versionSlug\n * @param _docId\n * @param _localeId\n * @returns {*}\n */\n documentService.getStatistics = function (_projectSlug, _versionSlug,\n _docId, _localeId) {\n if (_docId && _localeId) {\n var key = generateStatisticKey(_docId, _localeId);\n if (_.has(statisticMap, key)) {\n return $q.when(statisticMap[key]);\n } else {\n var encodedDocId = documentService.encodeDocId(_docId);\n var Statistics = $resource(UrlService.DOC_STATISTIC_URL, {}, {\n query: {\n method: 'GET',\n params: {\n projectSlug: _projectSlug,\n versionSlug: _versionSlug,\n docId: encodedDocId,\n localeId: _localeId\n },\n isArray: true\n }\n });\n return Statistics.query().$promise.then(function(statistics) {\n\n // Make needReview(server) available to needswork\n _.forEach(statistics, function(statistic) {\n statistic[TransStatusService.getId('needswork')] =\n statistic.needReview || 0;\n });\n\n statisticMap[key] = statistics;\n return statisticMap[key];\n });\n }\n }\n };\n\n /**\n * Encode docId, replace '/' with ',' when REST call\n * @param docId\n * @returns {*}\n */\n documentService.encodeDocId = function(docId) {\n return docId ? docId.replace(/\\//g, ',') : docId;\n };\n\n /**\n * Encode docId, replace ',' with '/' when REST call\n * @param docId\n * @returns {*}\n */\n documentService.decodeDocId = function(docId) {\n return docId ? docId.replace(/\\,/g, '/') : docId;\n };\n\n documentService.containsDoc = function (documents, docId) {\n return _.any(documents, function(document) {\n return StringUtil.equals(document.name, docId, true);\n });\n };\n\n documentService.updateStatistic = function(projectSlug, versionSlug, docId,\n localeId, oldState,\n newState, wordCount) {\n var key = generateStatisticKey(docId, localeId);\n if(_.has(statisticMap, key)) {\n adjustStatistic(statisticMap[key], oldState, newState,\n wordCount);\n\n EventService.emitEvent(EventService.EVENT.REFRESH_STATISTIC,\n {\n projectSlug: projectSlug,\n versionSlug: versionSlug,\n docId: docId,\n localeId: localeId\n }\n );\n }\n };\n\n //Generate unique key from docId and localeId for statistic cache\n function generateStatisticKey(docId, localeId) {\n return docId + '-' + localeId;\n }\n\n /**\n * Adjust statistic based on translation change of state\n * word - -wordCount of oldState, +wordCount of newState\n * msg - -1 of oldState, +1 of newState\n */\n function adjustStatistic(statistics, oldState, newState, wordCount) {\n\n var wordStatistic = StatisticUtil.getWordStatistic(statistics),\n msgStatistic = StatisticUtil.getMsgStatistic(statistics);\n\n if(wordStatistic) {\n wordCount = parseInt(wordCount);\n var wordOldState = parseInt(wordStatistic[oldState]) - wordCount;\n wordStatistic[oldState] = wordOldState < 0 ? 0 : wordOldState;\n wordStatistic[newState] = parseInt(wordStatistic[newState]) + wordCount;\n }\n\n if(msgStatistic) {\n var msgOldState = parseInt(msgStatistic[oldState]) - 1;\n msgStatistic[oldState] = msgOldState < 0 ? 0 : msgOldState;\n msgStatistic[newState] = parseInt(msgStatistic[newState]) + 1;\n }\n }\n\n return documentService;\n }\n\n angular\n .module('app')\n .factory('DocumentService', DocumentService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name DropdownCtrl\n *\n * @description\n * Handle dropdown events between directives\n *\n * @ngInject\n */\n function DropdownCtrl($scope, $attrs, $parse, dropdownConfig,\n DropdownService, $animate, $timeout) {\n var dropdownCtrl = this,\n // create a child scope so we are not polluting original one\n scope = $scope.$new(),\n openClass = dropdownConfig.openClass,\n getIsOpen,\n setIsOpen = angular.noop,\n toggleInvoker = $attrs.onToggle ?\n $parse($attrs.onToggle) : angular.noop;\n\n this.init = function(element) {\n dropdownCtrl.$element = element;\n\n if ($attrs.isOpen) {\n getIsOpen = $parse($attrs.isOpen);\n setIsOpen = getIsOpen.assign;\n\n $scope.$watch(getIsOpen, function(value) {\n scope.isOpen = !!value;\n });\n }\n };\n\n this.toggle = function(open) {\n scope.isOpen = arguments.length ? !!open : !scope.isOpen;\n return scope.isOpen;\n };\n\n // Allow other directives to watch status\n this.isOpen = function() {\n return scope.isOpen;\n };\n\n scope.getToggleElement = function() {\n return dropdownCtrl.toggleElement;\n };\n\n scope.focusToggleElement = function() {\n if (dropdownCtrl.toggleElement) {\n dropdownCtrl.toggleElement[0].focus();\n }\n };\n\n scope.$watch('isOpen', function(isOpen, wasOpen) {\n $animate[isOpen ? 'addClass' : 'removeClass']\n (dropdownCtrl.$element, openClass);\n\n if (isOpen) {\n // need to wrap it in a timeout\n // see http://stackoverflow.com/questions/12729122/\n // prevent-error-digest-already-in-progress-when-calling-scope-apply\n $timeout(function() {\n scope.focusToggleElement();\n });\n DropdownService.open(scope);\n } else {\n DropdownService.close(scope);\n }\n\n setIsOpen($scope, isOpen);\n if (angular.isDefined(isOpen) && isOpen !== wasOpen) {\n toggleInvoker($scope, {\n open: !!isOpen\n });\n }\n });\n\n $scope.$on('$locationChangeSuccess', function() {\n scope.isOpen = false;\n });\n\n $scope.$on('$destroy', function() {\n scope.$destroy();\n });\n\n $scope.$on('openDropdown', function() {\n scope.isOpen = true;\n });\n\n $scope.$on('closeDropdown', function() {\n scope.isOpen = false;\n });\n }\n\n angular\n .module('app')\n .controller('DropdownCtrl', DropdownCtrl);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name dropdownService\n *\n * @description\n * Handle dropdown events between directives\n *\n * @ngInject\n */\n\n function DropdownService($document) {\n var openScope = null,\n dropdownService = this;\n\n dropdownService.open = function(dropdownScope) {\n if (!openScope) {\n $document.bind('click', closeDropdown);\n $document.bind('keydown', escapeKeyBind);\n }\n\n if (openScope && openScope !== dropdownScope) {\n openScope.isOpen = false;\n }\n\n openScope = dropdownScope;\n };\n\n dropdownService.close = function(dropdownScope) {\n if (openScope === dropdownScope) {\n openScope = null;\n $document.unbind('click', closeDropdown);\n $document.unbind('keydown', escapeKeyBind);\n }\n };\n\n var closeDropdown = function(evt) {\n if (!openScope) {\n return;\n }\n var toggleElement = openScope.getToggleElement();\n if (evt && toggleElement && toggleElement[0].contains(evt.target)) {\n return;\n }\n\n openScope.$apply(function() {\n openScope.isOpen = false;\n });\n };\n\n var escapeKeyBind = function(evt) {\n if (evt.which === 27) {\n openScope.focusToggleElement();\n closeDropdown();\n }\n };\n }\n\n angular\n .module('app')\n .service('DropdownService', DropdownService);\n\n})();\n\n","(function() {\n 'use strict';\n\n /**\n * @name Dropdown\n *\n * @description\n * Custom module for dropdowns\n *\n */\n var dropdownConfig = {\n openClass: 'is-active'\n };\n\n angular\n .module('app')\n .constant('dropdownConfig', dropdownConfig);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name dropdown\n *\n * @description\n * Main dropdown container\n *\n */\n\n function dropdown() {\n return {\n restrict: 'EA',\n controller: 'DropdownCtrl',\n link: function(scope, element, attrs, dropdownCtrl) {\n dropdownCtrl.init(element);\n }\n };\n }\n\n function onCloseDropdown() {\n return {\n restrict: 'A',\n require: '?^dropdown',\n scope: {\n callback: '&onCloseDropdown'\n },\n link: function(scope, elem, attrs, dropdownCtrl) {\n dropdownCtrl.onCloseDropdown = scope.callback;\n }\n };\n }\n\n /**\n * @name dropdown-toggle\n *\n * @description\n * Main dropdown toggle\n *\n */\n\n function dropdownToggle() {\n return {\n restrict: 'EA',\n require: '?^dropdown',\n link: function(scope, element, attrs, dropdownCtrl) {\n if (!dropdownCtrl) {\n return;\n }\n\n dropdownCtrl.toggleElement = element;\n\n var toggleDropdown = function(event) {\n event.preventDefault();\n event.stopPropagation();\n\n if (!element.hasClass('disabled') && !attrs.disabled) {\n scope.$apply(function() {\n dropdownCtrl.toggle();\n });\n }\n };\n\n element.bind('click', toggleDropdown);\n\n // WAI-ARIA\n element.attr({\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n scope.$watch(dropdownCtrl.isOpen, function(isOpen) {\n element.attr('aria-expanded', !!isOpen);\n if (dropdownCtrl.onCloseDropdown && !isOpen) {\n scope.$applyAsync(dropdownCtrl.onCloseDropdown);\n }\n });\n\n scope.$on('$destroy', function() {\n element.unbind('click', toggleDropdown);\n });\n }\n };\n }\n\n angular\n .module('app')\n .directive('dropdown', dropdown)\n .directive('onCloseDropdown', onCloseDropdown)\n .directive('dropdownToggle', dropdownToggle);\n\n})();\n\n","(function () {\n 'use strict';\n\n /**\n * EventService.js\n * Broadcast events service in app.\n * Usage: EventService.emitEvent( event, data, scope)\n * See EventService.emitEvent\n *\n * @ngInject\n */\n function EventService($rootScope) {\n var eventService = this;\n\n /**\n * @enum {string}\n */\n eventService.EVENT = {\n /**\n * Loading Events\n *\n * Broadcast from AppConfig\n */\n LOADING_START: 'loadingStart',\n LOADING_STOP: 'loadingStop',\n\n /**\n * scroll to trans unit\n * data: {id: number, updateURL: boolean, focus: boolean}\n * id: (transunit id),\n * updateURL: (flag on whether to update url with trans unit id)\n * focus: flag on whether to have row in view and focused\n */\n SELECT_TRANS_UNIT: 'selectTransUnit',\n\n //data: {phrase: Phrase, sourceIndex:sourceIndex}\n COPY_FROM_SOURCE: 'copyFromSource',\n\n // data: { suggestion: Suggestion }\n COPY_FROM_SUGGESTION: 'copyFromSuggestion',\n\n /**\n * Emit this to trigger copying of the nth suggestion to the selected row.\n *\n * data: number (zero-based index of suggestion to copy)\n */\n COPY_FROM_SUGGESTION_N: 'copyFromSuggestionN',\n\n //data: {phrase: Phrase}\n UNDO_EDIT: 'undoEdit',\n\n //data: {phrase: Phrase}\n CANCEL_EDIT: 'cancelEdit',\n\n //data:phrase\n FOCUS_TRANSLATION: 'focusTranslation',\n\n /**\n * data: {\n * phrase: Phrase, status: StatusInfo, locale: string, docId: string\n * }\n * phrase:\n * status: Object. Request save state\n * locale: target locale\n * docId: docId\n */\n SAVE_TRANSLATION: 'saveTranslation',\n\n /**\n * Translation save in this editor is being sent to the server and\n * is waiting on a response.\n */\n SAVE_INITIATED: 'saveInitiated',\n\n /**\n * Translation save in this editor has been completed\n * (Server has responded with a success or error).\n */\n SAVE_COMPLETED: 'saveCompleted',\n\n /**\n * The text in the translation editor textbox has been edited and\n * not yet saved.\n */\n TRANSLATION_TEXT_MODIFIED: 'translationTextModified',\n\n /**\n * refresh ui statistic - changes in doc or locale\n *\n * data: {projectSlug: string, versionSlug: string,\n * docId: string, localeId: string}\n */\n REFRESH_STATISTIC: 'refreshStatistic',\n\n GOTO_PREV_PAGE: 'gotoPreviousPage',\n\n GOTO_NEXT_PAGE: 'gotoNextPage',\n\n GOTO_FIRST_PAGE: 'gotoFirstPage',\n\n GOTO_LAST_PAGE: 'gotoLastPage',\n\n /**\n * data: { currentId: number }\n */\n GOTO_NEXT_ROW: 'gotoNextRow',\n GOTO_PREVIOUS_ROW: 'gotoPreviousRow',\n GOTO_NEXT_UNTRANSLATED: 'gotoNextUntranslated',\n\n /**\n * Toggle save as options dropdown.\n * data: {id: number, open: boolean}\n */\n TOGGLE_SAVE_OPTIONS: 'openSaveOptions',\n\n\n /**\n * data: {filter: refer to editorCtrl.filter}\n */\n FILTER_TRANS_UNIT: 'filterTransUnit',\n\n /**\n * Reports the number of suggestions that are available for a phrase.\n *\n * data: { id: number, count: number }\n */\n PHRASE_SUGGESTION_COUNT: 'phraseSuggestionCount',\n\n /**\n * Fire to request suggestions from translation memory, etc.\n *\n * data: { phrase: Phrase }\n */\n REQUEST_PHRASE_SUGGESTIONS: 'requestPhraseSuggestions',\n\n /**\n * Fire for manual suggestions search using a single string.\n *\n * data: string\n */\n REQUEST_TEXT_SUGGESTIONS: 'requestTextSuggestions',\n\n /**\n * Fired every time search is toggled\n *\n * @type {Boolean}\n */\n SUGGESTIONS_SEARCH_TOGGLE: 'suggestionsSearchToggle',\n\n /**\n * Indicates a single user setting has changed.\n *\n * Event handlers should switch on the setting name to determine whether\n * it is a setting they are interested in.\n *\n * data: { setting: string, value: boolean|number|string }\n */\n USER_SETTING_CHANGED: 'userSettingChanged'\n };\n\n /**\n * Firing an event downwards of scope\n *\n * @param event - eventService.EVENT type\n * @param data - data for the event\n * @param scope - scope of event to to fire, $rootScope if empty\n */\n eventService.broadcastEvent = function(event, data, scope) {\n scope = scope || $rootScope;\n scope.$broadcast(event, data);\n };\n\n /**\n * Firing an event upwards of scope\n *\n * @param event - eventService.EVENT types\n * @param data - data for the event\n * @param scope - scope of event to to fire, $rootScope if empty\n */\n eventService.emitEvent = function(event, data, scope) {\n scope = scope || $rootScope;\n scope.$emit(event, data);\n };\n\n return eventService;\n }\n\n angular\n .module('app')\n .factory('EventService', EventService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name icon\n * @description declarative svg icons\n * @ngInject\n */\n function icon($sce) {\n return {\n restrict: 'E',\n required: ['name'],\n scope: {\n name: '@',\n title: '@',\n size: '@'\n },\n // templateUrl: 'components/icon/icon.html',\n link: function(scope, element) {\n var svg = '',\n loader = '',\n titleHtml = '';\n\n element.addClass('Icon');\n\n if (scope.title) {\n titleHtml = '' + scope.title + ' ';\n }\n\n if (scope.name === 'loader') {\n // Can't seem to animate svg symbols\n element.addClass('Icon--loader');\n loader = '' +\n '' +\n ' ' +\n ' ' +\n ' ' +\n ' ';\n element.html($sce.trustAsHtml(loader));\n }\n else {\n // Stupid hack to make svg work\n svg = '' +\n '' +\n ' ' +\n titleHtml +\n ' ';\n element.html($sce.trustAsHtml(svg));\n }\n }\n };\n }\n\n angular\n .module('app')\n .directive('icon', icon);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * MessageHandler.js\n * @ngInject\n */\n function MessageHandler() {\n return {\n displayError: function(msg) {\n console.error(msg);\n },\n displayWarning: function(msg) {\n console.warn(msg);\n },\n displayInfo: function(msg) {\n console.info(msg);\n }\n };\n }\n\n angular\n .module('app')\n .factory('MessageHandler', MessageHandler);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * Handle locales related information.\n *\n * LocaleService.js\n * @ngInject\n */\n function LocaleService(UrlService, StringUtil, FilterUtil, $resource, _) {\n\n var locales = [];\n\n /**\n * Get project-version supported locales\n * @param projectSlug\n * @param versionSlug\n * @returns {$promise|*}\n */\n function getSupportedLocales(projectSlug, versionSlug) {\n\n var Locales = $resource(UrlService.LOCALE_LIST_URL, {}, {\n query: {\n method: 'GET',\n params: {\n projectSlug: projectSlug,\n versionSlug: versionSlug\n },\n isArray: true\n }\n });\n\n return Locales.query().$promise;\n }\n\n //Returns all locales supported in Zanata instance\n function getAllLocales() {\n var Locales = $resource(UrlService.ALL_LOCALE_URL, {}, {\n query: {\n method: 'GET',\n isArray: true\n }\n });\n return Locales.query().$promise.then(function(results) {\n locales = FilterUtil.cleanResourceList(results);\n });\n }\n\n function getUILocaleList() {\n var list = $resource(UrlService.uiTranslationListURL, {}, {\n query: {\n method: 'GET'\n }\n });\n\n return list.query().$promise;\n }\n\n function getLocaleByLocaleId(locales, localeId) {\n if(locales) {\n return _.find(locales, function(locale) {\n return StringUtil.equals(locale.localeId, localeId, true);\n });\n }\n }\n\n function containsLocale (locales, localeId) {\n return _.any(locales, function(locale) {\n return StringUtil.equals(locale.localeId, localeId, true);\n });\n }\n\n function getName(localeId) {\n var locale = getLocaleByLocaleId(locales, localeId);\n if(locale) {\n return locale.name;\n }\n return localeId;\n }\n\n return {\n getSupportedLocales : getSupportedLocales,\n getUILocaleList : getUILocaleList,\n getLocaleByLocaleId : getLocaleByLocaleId,\n getAllLocales : getAllLocales,\n containsLocale : containsLocale,\n getName : getName,\n DEFAULT_LOCALE: {\n 'localeId' : 'en-US',\n 'name' : 'English'\n }\n };\n }\n\n angular\n .module('app')\n .factory('LocaleService', LocaleService);\n})();\n","(function() {\n\n 'use strict';\n\n /**\n * @name logoLoader\n *\n * @description\n * Logo that is activated on global loading state\n *\n * @ngInject\n */\n function logoLoader(EventService) {\n return {\n restrict: 'EA',\n scope: {\n loading: '=',\n inverted: '='\n },\n link: function(scope) {\n scope.classes = '';\n\n scope.$on(EventService.EVENT.LOADING_START, function() {\n scope.classes += ' is-loading';\n });\n\n scope.$on(EventService.EVENT.LOADING_STOP, function() {\n scope.classes = scope.classes.replace('is-loading', '');\n });\n\n scope.$watch('inverted', function(newInverted) {\n if (newInverted) {\n scope.classes += ' LogoLoader--inverted';\n } else {\n scope.classes = scope.classes.replace('LogoLoader--inverted', '');\n }\n });\n },\n templateUrl: 'components/logo-loader/logo-loader.html'\n };\n }\n\n angular\n .module('app')\n .directive('logoLoader', logoLoader);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * Handle notification in editor\n *\n * NotificationService.js\n * @ngInject\n */\n function NotificationService() {\n\n }\n\n angular\n .module('app')\n .factory('NotificationService', NotificationService);\n\n})();\n","(function () {\n 'use strict';\n\n /**\n * PhraseCache.js\n * Stores textflow, states in local cache.\n * TODO: use angular-data for storage\n * @ngInject\n */\n function PhraseCache($q, $resource, FilterUtil, UrlService, DocumentService,\n _) {\n var phraseCache = this,\n states = {}, //ids and states of all tu in order\n transUnits = {};\n\n phraseCache.getStates =\n function (projectSlug, versionSlug, documentId, localeId) {\n var key = generateKey(projectSlug, versionSlug, documentId, localeId);\n if (_.has(states, key)) {\n return $q.when(states[key]);\n } else {\n var encodedDocId = DocumentService.encodeDocId(documentId);\n var methods = {\n query: {\n method: 'GET',\n params: {\n projectSlug: projectSlug,\n versionSlug: versionSlug,\n docId: encodedDocId,\n localeId: localeId\n },\n isArray: true\n }\n },\n States = $resource(UrlService.TRANSLATION_STATUS_URL, {}, methods);\n return States.query().$promise.then(function (state) {\n state = FilterUtil.cleanResourceList(state);\n states[key] = state;\n return states[key];\n });\n }\n };\n\n phraseCache.getTransUnits = function (ids, localeId) {\n var results = {},\n missingTUId = [],\n missingLocaleTUId = [];\n ids.forEach(function (id) {\n if (_.has(transUnits, id)) {\n if(transUnits[id][localeId]) {\n results[id] = transUnits[id];\n } else {\n missingLocaleTUId.push(id);\n }\n } else {\n missingTUId.push(id);\n }\n });\n if (_.isEmpty(missingTUId) && _.isEmpty(missingLocaleTUId)) {\n return $q.when(results);\n }\n else {\n var TextFlows, Translations;\n if(!_.isEmpty(missingTUId)) {\n TextFlows = $resource(UrlService.TEXT_FLOWS_URL, {}, {\n query: {\n method: 'GET',\n params: {\n localeId: localeId,\n ids: missingTUId.join(',')\n }\n }\n });\n }\n if(!_.isEmpty(missingLocaleTUId)) {\n Translations = $resource(UrlService.TRANSLATION_URL, {}, {\n query: {\n method: 'GET',\n params: {\n localeId: localeId,\n ids: missingLocaleTUId.join(',')\n }\n }\n });\n }\n\n //need to create chain of promises\n if(TextFlows && Translations) {\n return TextFlows.query().$promise.then(updateCacheWithNewTU).\n then(Translations.query().$promise.then(updateCacheWithExistingTU));\n } else if(TextFlows) {\n return TextFlows.query().$promise.then(updateCacheWithNewTU);\n } else if(Translations) {\n return Translations.query().$promise.then(updateCacheWithExistingTU);\n }\n }\n\n function updateCacheWithExistingTU(newTransUnits) {\n newTransUnits = FilterUtil.cleanResourceMap(newTransUnits);\n for (var key in newTransUnits) {\n //push to cache\n transUnits[key][localeId] = newTransUnits[key][localeId];\n results[key] = transUnits[key]; //merge with results\n }\n return results;\n }\n\n function updateCacheWithNewTU(newTransUnits) {\n newTransUnits = FilterUtil.cleanResourceMap(newTransUnits);\n for (var key in newTransUnits) {\n transUnits[key] = newTransUnits[key]; //push to cache\n results[key] = transUnits[key]; //merge with results\n }\n return results;\n }\n };\n\n /**\n * On translation updated from server\n * @param id\n * @param localeId\n * @param revision\n * @param state\n * @param content\n * @param contents\n */\n phraseCache.onTransUnitUpdated =\n function (context, id, localeId, revision, status, phrase) {\n\n var key = generateKey(context.projectSlug, context.versionSlug,\n context.docId, localeId);\n\n var stateEntry = _.find(states[key], function(stateEntry) {\n return stateEntry.id === id;\n });\n //Update states cache\n if(stateEntry) {\n stateEntry.state = status;\n }\n\n //Update transUnits cache\n var translation = transUnits[id][localeId];\n if (!translation) {\n translation = {};\n }\n translation.revision = parseInt(revision);\n translation.state = status;\n translation.contents = phrase.newTranslations.slice();\n };\n\n function generateKey(projectId, versionId, documentId, localeId) {\n return projectId + '-' + versionId + '-' +\n documentId + '-' + localeId;\n }\n\n return phraseCache;\n }\n\n angular\n .module('app')\n .factory('PhraseCache', PhraseCache);\n\n})();\n","(function () {\n 'use strict';\n\n /**\n * @typedef {Object} Phrase\n * @property {number} id text flow id\n * @property {string[]} sources source contents\n * @property {string[]} translations original translation\n * @property {string[]} newTranslations translations in the editor\n * @property {boolean} plural whether it's in plural form\n * @property {StatusInfo} status information about this phrase\n * @property {number} revision translation revision number\n * @property {number} wordCount source word count\n */\n /**\n * @name PhraseService\n * @description Provides a list of phrases for the current document(s)\n *\n * @ngInject\n */\n function PhraseService(FilterUtil, PhraseCache, TransStatusService, _,\n $stateParams) {\n var phraseService = {};\n\n phraseService.phrases = []; //current displayed phrases\n\n // FIXME use an object for all the ID arguments - in general we will only\n // need to modify such an object sporadically when switching document\n // or locale, and it is neater than passing them all\n // around separately.\n\n phraseService.getPhraseCount = function(context, filter) {\n return PhraseCache.getStates(context.projectSlug, context.versionSlug,\n context.docId, context.localeId).then(function(states) {\n var ids = getIds(states, filter.status);\n return ids.length;\n });\n };\n\n /**\n * Fetch each of the text flows appearing in the given states data.\n */\n phraseService.fetchAllPhrase = function (context, filter,\n offset, maxResult) {\n\n var localeId = context.localeId;\n\n return PhraseCache.getStates(context.projectSlug, context.versionSlug,\n context.docId, localeId).then(getTransUnits);\n\n function getTransUnits(states) {\n var ids = getIds(states, filter.status);\n if (!isNaN(offset)) {\n if(!isNaN(maxResult)) {\n ids = ids.slice(offset, offset + maxResult);\n } else {\n ids = ids.slice(offset);\n }\n }\n // Reading for chaining promises https://github.com/kriskowal/q\n // (particularly \"Sequences\").\n return PhraseCache.getTransUnits(ids, localeId).\n then(transformToPhrases).then(sortPhrases);\n }\n\n /**\n * Converts text flow data from the API into the form expected in the\n * editor.\n *\n * @returns {Phrase[]}\n */\n function transformToPhrases(transUnits) {\n return _.map(transUnits, function(transUnit, id) {\n var source = transUnit.source,\n trans = transUnit[localeId];\n return {\n id: parseInt(id),\n sources: source.plural ? source.contents : [source.content],\n // Original translation\n translations: extractTranslations(source, trans),\n // Translation from editor\n newTranslations: extractTranslations(source, trans),\n plural: source.plural,\n // Conform the status from the server, return an object\n status: trans ? TransStatusService.getStatusInfo(trans.state) :\n TransStatusService.getStatusInfo('untranslated'),\n revision: trans ? parseInt(trans.revision) : 0,\n wordCount: parseInt(source.wordCount)\n };\n });\n }\n\n function extractTranslations(source, trans) {\n if(source.plural) {\n return trans && trans.contents ? trans.contents.slice() : [];\n }\n return trans ? [trans.content] : [];\n }\n\n function sortPhrases(phrases) {\n return PhraseCache.getStates(context.projectSlug, context.versionSlug,\n context.docId, localeId).then(function(states) {\n phraseService.phrases = _.sortBy(phrases, function(phrase) {\n var index = _.findIndex(states, function(state) {\n return state.id === phrase.id;\n });\n return index >= 0 ? index : phrases.length;\n });\n return phraseService.phrases;\n });\n }\n };\n\n //update phrase,statuses and textFlows with given tu id\n phraseService.onTransUnitUpdated = function(context, id, localeId, revision,\n status, phrase) {\n\n PhraseCache.onTransUnitUpdated(context, id, localeId, revision, status,\n phrase);\n\n var cachedPhrase = findPhrase(id, phraseService.phrases);\n //update phrase if found\n if(cachedPhrase) {\n cachedPhrase.translations = phrase.newTranslations.slice();\n cachedPhrase.revision = revision;\n cachedPhrase.status = TransStatusService.getStatusInfo(status);\n }\n };\n\n //rollback content of phrase\n phraseService.onTransUnitUpdateFailed = function(id) {\n var phrase = findPhrase(id, phraseService.phrases);\n if(phrase) {\n phrase.newTranslations = phrase.translations.slice();\n }\n };\n\n // find next Id from phrases states\n phraseService.findNextId = function(currentId) {\n return PhraseCache.getStates($stateParams.projectSlug,\n $stateParams.versionSlug, $stateParams.docId,\n $stateParams.localeId)\n .then(function (states) {\n var currentIndex,\n nextIndex;\n currentIndex = _.findIndex(states, function (state) {\n return state.id === currentId;\n });\n nextIndex = currentIndex + 1 < states.length ?\n currentIndex + 1 : states.length - 1;\n return states[nextIndex].id;\n });\n };\n\n // find previous id from phrases states\n phraseService.findPreviousId = function(currentId) {\n return PhraseCache.getStates($stateParams.projectSlug,\n $stateParams.versionSlug, $stateParams.docId,\n $stateParams.localeId)\n .then(function (states) {\n var currentIndex,\n previousIndex;\n currentIndex = _.findIndex(states, function (state) {\n return state.id === currentId;\n });\n previousIndex = currentIndex - 1 >= 0 ? currentIndex - 1 : 0;\n return states[previousIndex].id;\n });\n };\n\n // find next phrase with requested status\n phraseService.findNextStatus = function(currentId, status) {\n return PhraseCache.getStates($stateParams.projectSlug,\n $stateParams.versionSlug, $stateParams.docId,\n $stateParams.localeId)\n .then(function (statusList) {\n var currentIndex,\n nextStatusInfo,\n requestStatus = TransStatusService.getStatusInfo(status);\n\n currentIndex = _.findIndex(statusList, function (state) {\n return state.id === currentId;\n });\n\n for (var i = currentIndex + 1; i < statusList.length; i++) {\n nextStatusInfo = TransStatusService.getStatusInfo(\n statusList[i].state);\n if (nextStatusInfo.ID === requestStatus.ID) {\n return statusList[i].id;\n }\n }\n return currentId;\n });\n };\n\n function findPhrase(id, phrases) {\n return _.find(phrases, function(phrase) {\n return phrase.id === id;\n });\n }\n\n function getIds(resources, states) {\n if(states) {\n resources = FilterUtil.filterResources(resources, ['status'], states);\n }\n return _.map(resources, function (item) {\n return item.id;\n });\n }\n\n // Does not appear to be used anywhere. Removing until phrase-caching code\n // is added.\n // phraseService.findById = function(phraseId) {\n // var deferred = $q.defer();\n // var phrase = phrases[phraseId];\n // deferred.resolve(phrase);\n // return deferred.promise;\n // };\n\n return phraseService;\n }\n\n angular\n .module('app')\n .factory('PhraseService', PhraseService);\n\n})();\n\n","(function() {\n 'use strict';\n\n /**\n * @name progressbar\n * @description progressbar container\n * @ngInject\n */\n function progressbar() {\n return {\n restrict: 'E',\n required: 'progressbarStatistic',\n scope: {\n statistic: '=progressbarStatistic',\n size: '@' //large, full, or empty\n },\n templateUrl: 'components/progressbar/progressbar.html',\n controller: function($scope) {\n /**\n * Need to set to true for complex object watch. Performance issue.\n * https://docs.angularjs.org/api/ng/type/$rootScope.Scope\n */\n $scope.$watch('statistic', function(statistic) {\n if (statistic) {\n $scope.style = getStyle(statistic);\n }\n }, true);\n }\n };\n }\n\n function getStyle(statistic) {\n var total = statistic.total,\n widthApproved = getWidthPercent(statistic.approved, total),\n widthTranslated = getWidthPercent(statistic.translated, total),\n marginLeftTranslated = widthApproved,\n widthNeedsWork = getWidthPercent(statistic.needswork, total),\n marginLeftNeedsWork = widthApproved + widthTranslated,\n widthUntranslated = getWidthPercent(statistic.untranslated, total),\n marginLeftUntranslated = widthApproved +\n widthTranslated + widthNeedsWork,\n style = {};\n\n style.approved = {\n 'width': widthApproved + '%',\n 'marginLeft': 0\n };\n style.translated = {\n 'width': widthTranslated + '%',\n 'marginLeft': marginLeftTranslated + '%'\n };\n style.needsWork = {\n 'width': widthNeedsWork + '%',\n 'marginLeft': marginLeftNeedsWork + '%'\n };\n style.untranslated = {\n 'width': widthUntranslated + '%',\n 'marginLeft': marginLeftUntranslated + '%'\n };\n return style;\n }\n\n function getWidthPercent(value, total) {\n var percent = 0;\n if (value) {\n percent = value / total * 100;\n }\n return percent;\n }\n\n angular\n .module('app')\n .directive('progressbar', progressbar);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * Handle communication with server on Project related information.\n * ProjectService.js\n * @ngInject\n */\n\n function ProjectService(UrlService, $resource) {\n\n /**\n * Get project's information\n *\n * @param projectSlug\n * @returns {$promise|*|N.$promise}\n */\n function getProjectInfo(projectSlug) {\n var methods = {\n query: {\n method: 'GET',\n params: {\n projectSlug: projectSlug\n }\n }\n };\n\n var Locales = $resource(UrlService.PROJECT_URL, {}, methods);\n return Locales.query().$promise;\n }\n\n return {\n getProjectInfo: getProjectInfo\n };\n }\n angular\n .module('app')\n .factory('ProjectService', ProjectService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * Represents a draggable resizer.\n *\n * @param $window\n * @param $document\n * @param $timeout\n * @returns {Function}\n */\n function resizer(SettingsService, $window, $document, $timeout) {\n\n function link(scope, element, attrs) {\n\n /**\n * The height to use for the resizer when it is visible.\n *\n * @type {Number}\n */\n scope.height = parseInt(attrs.resizerHeight);\n\n /**\n * The current height of the resizer to display.\n *\n * @type {Number}\n */\n scope.actualHeight = scope.height;\n\n scope.position = normalisePercentage(SettingsService.get(\n SettingsService.SETTING.SUGGESTIONS_PANEL_HEIGHT), $window.innerHeight);\n scope.actualPosition = scope.position;\n\n scope.show =\n SettingsService.subscribe(SettingsService.SETTING.SHOW_SUGGESTIONS,\n function (show) {\n scope.show = show;\n setBottomPanelVisibility(show);\n });\n\n /**\n * Persist the current size as a setting.\n */\n function saveCurrentSize() {\n SettingsService.update(SettingsService.SETTING.SUGGESTIONS_PANEL_HEIGHT,\n scope.actualPosition);\n }\n\n function setBottomPanelVisibility(showing) {\n if (showing) {\n scope.actualPosition = scope.position;\n scope.actualHeight = scope.height;\n } else {\n // save resizer position so it can be restored\n // does not appear to set properly without an intermediate variable\n var currentPos = scope.actualPosition;\n scope.position = currentPos;\n scope.actualPosition = 0;\n scope.actualHeight = 0;\n }\n\n // Panel only renders properly if resizer is adjusted in a later frame\n setTimeout(adjustResizer);\n }\n\n setBottomPanelVisibility(scope.show);\n\n element.addClass('Resizer');\n\n // Initial Resize\n if (attrs.resizer === 'vertical') {\n element.addClass('Resizer--vertical');\n $timeout(function (){\n adjustVerticalPanel(scope.actualPosition);\n });\n }\n else {\n element.addClass('Resizer--horizontal');\n $timeout(function (){\n adjustHorizontalPanel(scope.actualPosition);\n });\n }\n\n element.on('mousedown', function(event) {\n event.preventDefault();\n $document.on('mousemove', mousemove);\n $document.on('mouseup', mouseup);\n });\n\n angular.element($window).bind('resize', function() {\n $timeout.cancel(scope.resizing);\n scope.resizing = $timeout(adjustResizer);\n });\n\n function mousemove(event) {\n if (attrs.resizer === 'vertical') {\n adjustVerticalPanel(event.pageX);\n } else {\n adjustHorizontalPanel($window.innerHeight - event.pageY);\n }\n }\n\n function adjustVerticalPanel(resizerPositionX) {\n var x = resizerPositionX,\n leftPanel = angular.element(document\n .querySelector(attrs.resizerLeft)),\n rightPanel = angular.element(document\n .querySelector(attrs.resizerRight)),\n maximumPanelSize =\n normalisePercentage(attrs.resizerMax, $window.innerHeight),\n minimumPanelSize = attrs.resizerMin ||\n parseInt(attrs.resizerWidth);\n\n scope.actualPosition = x;\n x = restrictMinOrMax(x, maximumPanelSize, minimumPanelSize);\n\n element.css({\n left: (x - (scope.actualHeight / 2)) + 'px'\n });\n\n leftPanel.css({\n width: x + 'px'\n });\n\n rightPanel.css({\n left: x + 'px'\n });\n }\n\n function adjustHorizontalPanel(resizerPositionY) {\n var y = resizerPositionY,\n topPanel = angular.element(document\n .querySelector(attrs.resizerTop)),\n bottomPanel = angular.element(document\n .querySelector(attrs.resizerBottom)),\n maximumPanelSize =\n normalisePercentage(attrs.resizerMax, $window.innerHeight),\n minimumPanelSize = attrs.resizerMin || scope.actualHeight;\n\n scope.actualPosition = y;\n y = restrictMinOrMax(y, maximumPanelSize, minimumPanelSize);\n\n element.css({\n bottom: (y - (scope.actualHeight / 2)) + 'px'\n });\n\n topPanel.css({\n bottom: y + 'px'\n });\n\n bottomPanel.css({\n height: y + 'px'\n });\n }\n\n function mouseup() {\n $document.unbind('mousemove', mousemove);\n $document.unbind('mouseup', mouseup);\n\n // Now that a new value has stopped rapidly changing, persist it.\n saveCurrentSize();\n }\n\n function adjustResizer() {\n if (attrs.resizer === 'vertical') {\n adjustVerticalPanel(scope.actualPosition);\n }\n else {\n adjustHorizontalPanel(scope.actualPosition);\n }\n }\n\n function restrictMinOrMax(currentSize, maxSize, minSize) {\n // Maximum\n if (maxSize && currentSize > maxSize) {\n return maxSize;\n }\n // Minimum\n else if (currentSize < minSize) {\n return minSize;\n }\n else {\n return currentSize;\n }\n }\n\n function normalisePercentage(fraction, whole) {\n if ((/[0-9]*\\.?[0-9]+%/).test(fraction)) {\n return Math.round(whole * (parseInt(fraction.replace('%','')) / 100));\n }\n else {\n return parseInt(fraction);\n }\n }\n\n }\n\n return {\n link: link\n };\n }\n\n angular\n .module('app')\n .directive('resizer', resizer);\n\n})();\n","(function() {\n 'use strict';\n\n\n /**\n * The name of a setting, used as a unique key for lookup and storage.\n * @typedef {string} SettingKey\n */\n\n /**\n * The value for a setting.\n *\n * @typedef {(string|number|boolean)} SettingValue\n */\n\n /**\n * Service for persisted user settings.\n *\n * @constructor\n */\n function SettingsService(EventService, $q, $rootScope, _) {\n var settingsService = this;\n\n /**\n * All valid settings keys.\n *\n * These enum constants should be used for all settings operations.\n *\n * @type {Object<*, SettingKey>}\n */\n settingsService.SETTING = {\n SUGGESTIONS_AUTOFILL_ON_ROW_SELECT: 'suggestionsAutofillOnRowSelect',\n SUGGESTIONS_SHOW_DIFFERENCE: 'suggestionsShowDifference',\n SHOW_SUGGESTIONS: 'showSuggestions',\n SUGGESTIONS_PANEL_HEIGHT: 'suggestionsPanelHeight'\n };\n\n var SETTING = settingsService.SETTING;\n\n /**\n * Settings enum, with default values that indicate the type\n * @enum {SettingValue}\n */\n var defaultSettings = {};\n defaultSettings[SETTING.SUGGESTIONS_AUTOFILL_ON_ROW_SELECT] = true;\n defaultSettings[SETTING.SUGGESTIONS_SHOW_DIFFERENCE] = false;\n defaultSettings[SETTING.SHOW_SUGGESTIONS] = true;\n defaultSettings[SETTING.SUGGESTIONS_PANEL_HEIGHT] = '30%';\n\n /**\n * Local settings cache.\n *\n * @type {Object}\n */\n var settings = _.clone(defaultSettings);\n\n\n /*\n\n TODO save settings to the server, prefer sending as a batch if possible\n (i.e. when updateAll is used, and future option to ensure only one save\n request at a time and use _.extend to combine all the queued settings\n while waiting).\n\n */\n\n /**\n * Update a single setting to have the given value.\n *\n * This will trigger a user setting update event.\n *\n * @param {SettingKey} setting the name of the setting to update\n * @param {SettingValue} value the new value for the setting\n */\n function update(setting, value) {\n validateSettingValue(value);\n var settingObj = {};\n settingObj[setting] = value;\n _.extend(settings, settingObj);\n\n EventService.emitEvent(EventService.EVENT.USER_SETTING_CHANGED, {\n setting: setting,\n value: value\n });\n }\n\n /**\n * Update multiple settings from a map of setting names and values.\n *\n * An event is triggered for each setting.\n *\n * @param {Object} settings\n */\n function updateAll(settings) {\n _.each(settings, function (value, key) {\n update(key, value);\n });\n }\n\n /**\n * Get the currently stored value for a setting.\n *\n * This should only be used to fetch the initial value or when a setting\n * is used once. To track changes to a setting, subscribe to the\n * USER_SETTING_CHANGED event and check the setting property of the event\n * payload.\n *\n * @param {SettingKey} setting name of the setting to look up\n */\n function get(setting) {\n if (_.has(settings, setting)) {\n return settings[setting];\n }\n // Incorrect key is a programmer error - default should be set for all\n // user settings that are used.\n console.error('Tried to look up setting with unrecognized key: %s',\n setting);\n }\n\n /**\n * Register an action to perform when a user setting value changes, and get\n * the current value.\n *\n * @param {SettingKey} setting the setting to get and subscribe to\n * @param {function} callback called with the new value\n * @return {SettingValue} the current value of the setting\n */\n function subscribe(setting, callback) {\n $rootScope.$on(EventService.EVENT.USER_SETTING_CHANGED,\n function (event, data) {\n if (data.setting === setting) {\n callback(data.value);\n }\n });\n return get(setting);\n }\n\n /**\n * Throw an error if the value is not the correct type for the setting.\n *\n * @param {SettingValue} value\n */\n function validateSettingValue(value) {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n case 'string':\n break;\n default:\n throw new Error('Invalid type for setting value: \"' + typeof value +\n '\".');\n }\n }\n\n\n\n return {\n SETTING: SETTING,\n update: update,\n updateAll: updateAll,\n get: get,\n subscribe: subscribe\n };\n }\n\n angular\n .module('app')\n .factory('SettingsService', SettingsService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name display-character\n * @description display whitespace character with symbol(HTML),\n * *NOTE*, need to wrap around tag\n * @ngInject\n */\n function renderWhitespaceCharacters() {\n var WHITESPACES = {\n 'space' : {\n 'regex' : / /g,\n 'template' : ' '\n },\n 'newline' : {\n 'regex' : /\\n/g,\n 'template' : ' \\n'\n },\n 'tab' : {\n 'regex' : /\\t/g,\n 'template' : '\\t '\n }\n };\n\n return {\n restrict: 'A',\n required: ['ngBind'],\n scope: {\n ngBind: '='\n },\n\n link: function compile(scope, element) {\n scope.$watch('ngBind', function (value) {\n value = replaceChar(value, WHITESPACES.space);\n value = replaceChar(value, WHITESPACES.newline);\n value = replaceChar(value, WHITESPACES.tab);\n element.html(value);\n });\n }\n };\n\n function replaceChar(value, whitespaceChar) {\n return value.replace(whitespaceChar.regex, whitespaceChar.template);\n }\n }\n\n angular\n .module('app')\n .directive('renderWhitespaceCharacters', renderWhitespaceCharacters);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name ScrollbarWidthCtrl\n *\n * @description\n * Handle dropdown events between directives\n *\n * @ngInject\n */\n function ScrollbarWidthCtrl() {\n var scrollbarWidthCtrl = this;\n\n scrollbarWidthCtrl.init = function() {\n var container = scrollbarWidthCtrl.container[0],\n child = scrollbarWidthCtrl.child[0],\n scrollbarWidth = child.offsetWidth - container.offsetWidth;\n\n scrollbarWidthCtrl.width = scrollbarWidth / 2;\n };\n\n }\n\n angular\n .module('app')\n .controller('ScrollbarWidthCtrl', ScrollbarWidthCtrl);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name scrollbarWidth\n *\n * @description\n * Scrollbar width container\n * Needed for the controller to reference all properties\n */\n function scrollbarWidth() {\n return {\n restrict: 'A',\n controller: 'ScrollbarWidthCtrl as scrollbarWidthCtrl',\n link: function(scope, element, attrs, scrollbarWidthCtrl) {\n scrollbarWidthCtrl.init(element);\n }\n };\n }\n\n /**\n * @name scrollbarWidthElement\n *\n * @description\n * The element to add the scrollbar width to\n */\n function scrollbarWidthElement() {\n return {\n restrict: 'A',\n require: '?^scrollbarWidth',\n link: function(scope, element, attrs, scrollbarWidthCtrl) {\n if (!scrollbarWidthCtrl) {\n return;\n }\n // Use the attribute to decide which property to set\n element.css(attrs.scrollbarWidthElement, scrollbarWidthCtrl.width);\n }\n };\n }\n\n /**\n * @name scrollbarWidthContainer\n *\n * @description\n * Get the scrollbar container width\n */\n function scrollbarWidthContainer() {\n return {\n restrict: 'A',\n require: '?^scrollbarWidth',\n link: function(scope, element, attrs, scrollbarWidthCtrl) {\n if (!scrollbarWidthCtrl) {\n return;\n }\n scrollbarWidthCtrl.container = element;\n }\n };\n }\n\n /**\n * @name scrollbarWidthChild\n *\n * @description\n * Get the scrollbar child width\n */\n function scrollbarWidthChild() {\n return {\n restrict: 'A',\n require: '?^scrollbarWidth',\n link: function(scope, element, attrs, scrollbarWidthCtrl) {\n if (!scrollbarWidthCtrl) {\n return;\n }\n scrollbarWidthCtrl.child = element;\n }\n };\n }\n\n angular\n .module('app')\n .directive('scrollbarWidth', scrollbarWidth)\n .directive('scrollbarWidthElement', scrollbarWidthElement)\n .directive('scrollbarWidthContainer', scrollbarWidthContainer)\n .directive('scrollbarWidthChild', scrollbarWidthChild);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * PhraseSuggestionsService.js\n * @ngInject\n */\n function PhraseSuggestionsService(_, EventService, SuggestionsService,\n $timeout, $rootScope) {\n // TODO extract common code from TextSuggestionsService and here\n\n /* Minimum time in milliseconds to wait between requesting results */\n var DELAY = 300;\n var MAX_ACTIVE_REQUESTS = 3;\n\n /* @type {boolean} */\n var loading = false;\n\n /* @type {Phrase} */\n var searchPhrase = null;\n\n /* @type {Array} */\n var results = [];\n\n /**\n * @return {boolean} true if results have been requested and not delivered\n */\n function isLoading() {\n return loading;\n }\n\n /**\n *\n * @return {string[]} strings that were used to search, or null if no search\n * has been performed.\n */\n function getSearchStrings() {\n return searchPhrase ? searchPhrase.sources : [];\n }\n\n /**\n * Get results for the current search\n * @return {Array} results for the current search. Empty if\n * no search has been performed.\n */\n function getResults() {\n return results;\n }\n\n\n\n\n var pendingSearchHandle = null;\n\n /* Number of requests that are in progress */\n var activeRequests = 0;\n /* Time that most recent search was started */\n var latestSearchTimestamp = Date.now();\n var latestResultsTimestamp = Date.now();\n\n /* Search data for a pending search. Will be overwritten whenever a new\n * search is queued */\n var pendingSearch = null;\n\n /**\n * Make this the next search that will occur when a search is eligible, and\n * ensure that an appropriate timer is running to initiate the pending\n * search.\n *\n * @param {Phrase} searchPhrase\n */\n function deferSearch(searchPhrase) {\n pendingSearch = searchPhrase;\n if (pendingSearchHandle) {\n // timer is already running, no need to start\n return;\n }\n\n // no timer yet, start one\n waitToRunPendingSearch();\n }\n\n function waitToRunPendingSearch() {\n var eligibleSearchTime = latestSearchTimestamp + DELAY;\n var timeUntilCanSearch = eligibleSearchTime - Date.now();\n\n var delay = timeUntilCanSearch > 0 ? timeUntilCanSearch : DELAY;\n\n pendingSearchHandle = $timeout(function () {\n pendingSearchHandle = null;\n\n if (activeRequests >= MAX_ACTIVE_REQUESTS) {\n // too many requests, keep waiting\n waitToRunPendingSearch();\n return;\n }\n\n // run the actual search\n runPendingSearch();\n }, delay);\n }\n\n /**\n * Initiate the pending search, and set appropriate variables.\n */\n function runPendingSearch() {\n if (pendingSearch === null) {\n // no pending search, skip\n return;\n }\n\n var search = pendingSearch;\n pendingSearch = null;\n $timeout.cancel(pendingSearchHandle);\n pendingSearchHandle = null;\n\n searchByPhrase(search);\n }\n\n /**\n * Perform a search, and set appropriate variables.\n *\n * @param {Phrase} phrase\n */\n function searchByPhrase(phrase) {\n searchPhrase = phrase;\n var timestamp = Date.now();\n latestSearchTimestamp = timestamp;\n activeRequests++;\n\n // Run the search and notify listeners when it is done\n SuggestionsService.getSuggestionsForPhrase(phrase).then(\n function (suggestions) {\n // Only update results if this search is more recent than the\n // current results.\n if (timestamp > latestResultsTimestamp) {\n latestResultsTimestamp = timestamp;\n results = suggestions;\n }\n },\n function (error) {\n console.error('Error searching for phrase ', error);\n }).finally(function () {\n activeRequests--;\n $rootScope.$broadcast('PhraseSuggestionsService:updated');\n if (activeRequests < MAX_ACTIVE_REQUESTS) {\n runPendingSearch();\n }\n });\n }\n\n\n $rootScope.$on(EventService.EVENT.REQUEST_PHRASE_SUGGESTIONS,\n function (event, wrapper) {\n /* @type {Phrase} */\n var data = wrapper.phrase;\n\n if (pendingSearch && pendingSearch.id === data.id) {\n // search already pending\n return;\n }\n\n if (!pendingSearch && activeRequests === 0 && searchPhrase &&\n searchPhrase.id === data.id) {\n // search is identical and there are no other searches to replace it\n return;\n }\n\n if (activeRequests >= MAX_ACTIVE_REQUESTS) {\n // too many requests, queue this one instead\n deferSearch(data);\n return;\n }\n\n var eligibleSearchTime = latestSearchTimestamp + DELAY;\n\n if (Date.now() < eligibleSearchTime) {\n // Too early to search, defer the search\n deferSearch(data);\n return;\n }\n\n results = [];\n $rootScope.$broadcast('PhraseSuggestionsService:updated');\n searchByPhrase(data);\n });\n\n return {\n isLoading: isLoading,\n getSearchStrings: getSearchStrings,\n getResults: getResults\n };\n }\n\n angular\n .module('app')\n .factory('PhraseSuggestionsService', PhraseSuggestionsService);\n})();\n","(function () {\n 'use strict';\n\n /**\n * SuggestionCtrl.js\n * @ngInject\n */\n function SuggestionCtrl(EventService, $rootScope, $scope, _, $timeout) {\n var suggestionCtrl = this;\n\n suggestionCtrl.copyButtonText = 'Copy Translation';\n\n while ($scope.search.length < $scope.suggestion.sourceContents.length) {\n $scope.search.push('');\n }\n\n /**\n * Get a modifier for the row class that will determine display colours.\n *\n * Intended to be used to generate css class for the row:\n *\n * TransUnit--{{suggestionCtrl.rowDisplayType()}}\n *\n * @return {string} modifier to append to the TransUnit-- css class\n */\n\n suggestionCtrl.rowDisplayType = function () {\n /* @type {MatchDetail} */\n var topMatch = suggestionCtrl.topMatch();\n\n if (topMatch.type === 'IMPORTED_TM') {\n return 'secondary';\n }\n if (topMatch.type === 'LOCAL_PROJECT') {\n if (topMatch.contentState === 'Translated') {\n return 'success';\n }\n if (topMatch.contentState === 'Approved') {\n return 'highlight';\n }\n }\n console.error('Unable to generate row display type for top match');\n };\n\n /**\n *\n * @returns {string}\n */\n suggestionCtrl.percentDisplayType = function () {\n var type = suggestionCtrl.rowDisplayType();\n return type.charAt(0).toUpperCase() + type.substring(1);\n };\n\n /**\n * Return correct percentage to display.\n *\n * I am using this instead of Angular's number display because the number\n * display forces a particular number of decimal places rather than just\n * limiting to the specified number, and because we should never show 100%\n * unless it is exactly 100%.\n */\n suggestionCtrl.percent = function () {\n var percent = $scope.suggestion.similarityPercent;\n\n // Prevent very high percentages displaying as 100%\n if (percent > 99.99 && percent < 100) {\n return '99.99';\n }\n if (percent >= 99.90 && percent < 100) {\n return '99.9';\n }\n\n // Limit any inexact percentages to a single decimal place\n if (Math.round(percent) !== percent) {\n return percent.toFixed(1);\n }\n\n return percent;\n };\n\n /**\n * Return the details for the best match according to the following\n * criteria:\n *\n * - Content state and type: Approved > Translated > Imported\n * - Last modified: older modifications take higher priority.\n *\n * @return {MatchDetail} the best match\n */\n suggestionCtrl.topMatch = function () {\n return $scope.suggestion.matchDetails[0];\n };\n\n suggestionCtrl.showSuggestionCopied = function () {\n suggestionCtrl.copyButtonText = 'Copied';\n suggestionCtrl.copyButtonDisabled = true;\n $timeout(function() {\n suggestionCtrl.copyButtonDisabled = false;\n suggestionCtrl.copyButtonText = 'Copy Translation';\n }, 500);\n };\n\n /**\n * Request this suggestion to be copied to the selected translation field.\n *\n * Generates a COPY_FROM_SUGGESTION event.\n */\n suggestionCtrl.copySuggestion = function () {\n suggestionCtrl.showSuggestionCopied();\n EventService.emitEvent(EventService.EVENT.COPY_FROM_SUGGESTION,\n { suggestion: $scope.suggestion });\n };\n\n $scope.$on('EditorSuggestionsCtrl:nth-suggestion-copied',\n function (event, index) {\n if (index === $scope.index) {\n suggestionCtrl.showSuggestionCopied();\n }\n });\n\n $scope.detail = suggestionCtrl.topMatch();\n // Will be undefined for imported matches\n $scope.user = $scope.detail.lastModifiedBy || 'Annoymous';\n $scope.remaining = $scope.suggestion.matchDetails.length - 1;\n $scope.isTextFlow = $scope.detail.type === 'LOCAL_PROJECT';\n\n return suggestionCtrl;\n }\n\n angular\n .module('app')\n .controller('SuggestionCtrl', SuggestionCtrl);\n})();\n\n","(function() {\n 'use strict';\n\n /**\n * @typedef {Object} ImportedMatchDetail\n * @param {string} type - 'IMPORTED_TM'\n * @param {number} transMemoryUnitId - numeric identifier for this translation\n * memory unit on the server\n * @param {string} transMemorySlug - identifier for the translation memory\n * that contains this translation unit\n * @param {string} transUnitId - optional identifier for this translation unit\n * @param {string} lastChanged - date that this text flow was last changed, in\n * ISO-8601 format\n */\n\n /**\n * @typedef {Object} LocalMatchDetail\n * @param {string} type - 'LOCAL_PROJECT'\n * @param {number} textFlowId - numeric identifier for this text flow on the\n * server\n * @param {string} contentState - 'Translated' or 'Approved'\n * @param {string} projectId - identifier for the project that this text flow\n * is in\n * @param {string} projectName - display name for the project that this text\n * flow is in\n * @param {string} version - identifier for the version that this text flow is\n * in\n * @param {string} documentPath - file path of the document that contains this\n * text flow.\n * @param {string} documentName - file name of the document that contains this\n * text flow, without the file path\n * @param {string} resId - natural id for this text flow within the document\n * @param {string} lastModifiedDate - date that this text flow was last\n * changed, in ISO-8601 format\n * @param {string} lastModifiedBy - username of the user who last modified\n * this text flow\n */\n\n /**\n * @typedef {(ImportedMatchDetail|LocalMatchDetail)} MatchDetail\n */\n\n /**\n * @typedef {Object} Suggestion\n * @param {number} relevanceScore - score from the search engine indicating\n * how close a match it considers this to the query.\n * It is sensible to compare scores within a query,\n * but not between queries.\n * @param {number} similarityPercent - proportion of the characters in\n * sourceContents that match the query\n * @param {Array} sourceContents - suggested source text that is\n * similar to the search\n * @param {Array} targetContents - translations of the suggested\n * source text\n * @param {Array} matchDetails - summary of all the sources with\n * the same source and target contents\n */\n\n /**\n * Provide suggestions based on given source text.\n *\n * SuggestionsService.js\n * @ngInject\n */\n function SuggestionsService(EditorService, EventService, UrlService, _,\n $resource) {\n\n /**\n * Get a list of suggestions for how to translate a piece of text.\n *\n * @param {string} searchText\n * @return {Promise>} suggestions for translating the\n * given text\n */\n function getSuggestionsForText(searchText) {\n return getSuggestionsForContents([searchText]);\n }\n\n /**\n * Get a list of suggestions for how to translate a phrase.\n *\n * @param {Phrase} phrase the source text to find suggestions for\n * @returns {Promise>} suggestions for translating the\n * given phrase\n */\n function getSuggestionsForPhrase(phrase) {\n return getSuggestionsForContents(phrase.sources)\n .then(function (suggestions) {\n EventService.emitEvent(EventService.EVENT.PHRASE_SUGGESTION_COUNT,\n { id: phrase.id, count: suggestions.length });\n return suggestions;\n });\n }\n\n /**\n * Get a list of suggestions for how to translate a list of strings.\n *\n * @param contents {Array} source strings to find matches for\n * @returns {Promise>}\n */\n function getSuggestionsForContents(contents) {\n var sourceLocale = EditorService.context.srcLocale.localeId;\n var transLocale = EditorService.context.localeId;\n\n var postQuery = {\n query: {\n method: 'POST',\n params: {\n from: sourceLocale,\n to: transLocale,\n searchType: 'FUZZY_PLURAL'\n },\n isArray: true\n }\n };\n\n var Suggestions = $resource(UrlService.SUGGESTIONS_URL, {}, postQuery);\n return Suggestions.query({}, contents).$promise.then(sortSuggestions);\n }\n\n /**\n * Sort suggestions so better matches are at the top, and details are in\n * order from most to least relevant.\n *\n * @param {Suggestion[]} suggestions\n * @return {Suggestion[]} the given suggestions in order.\n */\n function sortSuggestions(suggestions) {\n return _.chain(suggestions)\n .map(sortDetails)\n .map(addBestMatchScores)\n .sortBy(['similarityPercent', 'bestMatchScore',\n 'bestMatchModificationDate', 'relevanceScore'])\n .reverse()\n .value();\n }\n\n /**\n * Add properties 'bestMatchScore' and 'bestMatchModificationDate' to a\n * suggestion to help with sorting.\n *\n * Higher scores are considered better, since the final results are in\n * descending order.\n *\n * @param {Suggestion} suggestion\n * @return {Suggestion}\n */\n function addBestMatchScores (suggestion) {\n var date, score;\n var topMatch = suggestion.matchDetails[0];\n\n if (topMatch.type === 'LOCAL_PROJECT') {\n date = topMatch.lastModifiedDate;\n score = topMatch.contentState === 'Translated' ? 0 : 1;\n }\n\n if (topMatch.type === 'IMPORTED_TM') {\n date = topMatch.lastChanged;\n score = 2;\n }\n\n return _.assign({}, suggestion, {\n bestMatchScore: score,\n bestMatchModificationDate: date\n });\n }\n\n /**\n * Sort the match details of a suggestion by type and date.\n *\n * @param {Suggestion} suggestion to sort details\n * @return {Suggestion} the given suggestion with details in correct order\n */\n function sortDetails (suggestion) {\n var sortedDetails = _.sortBy(suggestion.matchDetails, typeAndDateSort);\n return _.assign({}, suggestion, { matchDetails: sortedDetails });\n }\n\n // TODO use sortByAll when lodash version is increased\n /**\n * Return a string that will naturally sort local project details before\n * imported TM details, approved state above translated state, and older\n * modification dates first, in that priority order.\n *\n * @param {MatchDetail} detail\n * @return {string} representation of order that will sort appropriately.\n */\n function typeAndDateSort (detail) {\n\n if (detail.type === 'IMPORTED_TM') {\n return '3' + detail.lastChanged;\n }\n if (detail.type === 'LOCAL_PROJECT') {\n if (detail.contentState === 'Translated') {\n return '2' + detail.lastModifiedDate;\n }\n if (detail.contentState === 'Approved') {\n return '1' + detail.lastModifiedDate;\n }\n }\n // Unrecognized, sort last\n return '9';\n }\n\n\n\n return {\n getSuggestionsForPhrase: getSuggestionsForPhrase,\n getSuggestionsForText: getSuggestionsForText\n };\n }\n\n angular\n .module('app')\n .factory('SuggestionsService', SuggestionsService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * TextSuggestionsService.js\n * @ngInject\n */\n function TextSuggestionsService(_, EventService, SuggestionsService,\n $rootScope, $timeout) {\n\n /* Minimum time in milliseconds to wait between requesting results */\n var DELAY = 300;\n var MAX_ACTIVE_REQUESTS = 3;\n\n /* @type {string} */\n var searchText = null;\n\n /* @type {Array} */\n var results = [];\n\n /**\n * @return {boolean} true if results have been requested and not delivered\n */\n function isLoading() {\n return activeRequests > 0;\n }\n\n /**\n *\n * @return {string[]} strings that were used to search, or null if no search\n * has been performed.\n */\n function getSearchStrings() {\n return searchText ? [searchText] : [];\n }\n\n /**\n * Get results for the current search\n * @return {Array} results for the current search. Empty if\n * no search has been performed.\n */\n function getResults() {\n return results;\n }\n\n\n var pendingSearchHandle = null;\n\n /* Number of requests that are in progress */\n var activeRequests = 0;\n /* Time that most recent search was started */\n var latestSearchTimestamp = Date.now();\n var latestResultsTimestamp = Date.now();\n\n /* Search text for a pending search. Will be overwritten whenever a new\n * search is queued */\n var pendingSearch = null;\n\n /**\n * Make this the next search that will occur when a search is eligible, and\n * ensure that an appropriate timer is running to initiate the pending\n * search.\n *\n * @param {string} searchText\n */\n function deferSearch(searchText) {\n pendingSearch = searchText;\n if (pendingSearchHandle) {\n // timer is already running, no need to start\n return;\n }\n\n // no timer yet, start one\n waitToRunPendingSearch();\n }\n\n function waitToRunPendingSearch() {\n var eligibleSearchTime = latestSearchTimestamp + DELAY;\n var timeUntilCanSearch = eligibleSearchTime - Date.now();\n\n var delay = timeUntilCanSearch > 0 ? timeUntilCanSearch : DELAY;\n\n pendingSearchHandle = $timeout(function () {\n pendingSearchHandle = null;\n\n if (activeRequests >= MAX_ACTIVE_REQUESTS) {\n // too many requests, keep waiting\n waitToRunPendingSearch();\n return;\n }\n\n // run the actual search\n runPendingSearch();\n }, delay);\n }\n\n /**\n * Initiate the pending search, and set appropriate variables.\n */\n function runPendingSearch() {\n if (pendingSearch === null) {\n // no pending search, skip\n return;\n }\n\n var search = pendingSearch;\n pendingSearch = null;\n $timeout.cancel(pendingSearchHandle);\n pendingSearchHandle = null;\n\n searchByText(search);\n }\n\n /**\n * Perform a search, and set appropriate variables.\n *\n * @param {string} text\n */\n function searchByText(text) {\n searchText = text;\n var timestamp = Date.now();\n latestSearchTimestamp = timestamp;\n activeRequests++;\n\n // Run the search and notify listeners when it is done\n SuggestionsService.getSuggestionsForText(text).then(\n function (suggestions) {\n // Only update results if this search is more recent than the\n // current results.\n if (timestamp > latestResultsTimestamp) {\n latestResultsTimestamp = timestamp;\n results = suggestions;\n }\n },\n function (error) {\n console.error('Error searching for text ', error);\n }).finally(function () {\n activeRequests--;\n $rootScope.$broadcast('TextSuggestionsService:updated');\n if (activeRequests < MAX_ACTIVE_REQUESTS) {\n runPendingSearch();\n }\n });\n }\n\n\n $rootScope.$on(EventService.EVENT.REQUEST_TEXT_SUGGESTIONS,\n function (event, data) {\n\n if (pendingSearch && pendingSearch === data) {\n // search already pending\n return;\n }\n\n if (!pendingSearch && activeRequests === 0 && searchText === data) {\n // search is identical and there are no other searches to replace it\n return;\n }\n\n // Empty search can update immediately\n if (data === '') {\n searchText = data;\n //loading = false;\n results = [];\n\n // Ensure that earlier active searches will not overwrite results.\n pendingSearch = null;\n $timeout.cancel(pendingSearchHandle);\n pendingSearchHandle = null;\n latestSearchTimestamp = Date.now;\n latestResultsTimestamp = Date.now();\n\n $rootScope.$broadcast('TextSuggestionsService:updated');\n return;\n }\n\n if (activeRequests >= MAX_ACTIVE_REQUESTS) {\n // too many requests, queue this one instead\n deferSearch(data);\n return;\n }\n\n var eligibleSearchTime = latestSearchTimestamp + DELAY;\n\n if (Date.now() < eligibleSearchTime) {\n // Too early to search, defer the search\n deferSearch(data);\n return;\n }\n\n results = [];\n $rootScope.$broadcast('TextSuggestionsService:updated');\n searchByText(data);\n });\n\n return {\n isLoading: isLoading,\n getSearchStrings: getSearchStrings,\n getResults: getResults\n };\n }\n\n angular\n .module('app')\n .factory('TextSuggestionsService', TextSuggestionsService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name suggestion\n * @description suggestion container\n * @ngInject\n */\n function suggestion() {\n return {\n // Only use the template on elements with this name (not on things that\n // have an attribute or class called 'suggestion'.\n restrict: 'E',\n //required: ['suggestion'],\n\n // Specify an isolated scope for the suggestion component.\n scope: {\n // make variable 'suggestion' available in the template's scope, and\n // bind its value from the attribute with the same name.\n // (a different name for the attribute can be specified after the =\n suggestion: '=',\n index: '=',\n search: '=',\n diffEnabled: '='\n\n // If I put & instead of = in front of a name, it will run it in the\n // parent scope instead of this directive's isolated scope. Good for\n // callbacks.\n },\n controller: 'SuggestionCtrl as suggestionCtrl',\n templateUrl: 'components/suggestions/suggestion.html'\n };\n }\n\n angular\n .module('app')\n .directive('suggestion', suggestion);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * @name toggle-checkbox\n * @description Add an extra element to a checkbox to\n * so we can style it differently\n * @ngInject\n */\n function toggleCheckbox() {\n return {\n restrict: 'A',\n link: function(scope, element) {\n element.after(' ');\n }\n };\n }\n\n angular\n .module('app')\n .directive('toggleCheckbox', toggleCheckbox);\n\n})();\n","(function () {\n 'use strict';\n\n /**\n * @typedef {Object} StatusInfo\n * @property {string} ID lower case translation status (content state)\n * @property {string} NAME capitalized representation\n * @property {string} CSSCLASS css class to use for this status\n *\n */\n /**\n * TransStatusService.js\n *\n * @ngInject\n */\n function TransStatusService(_) {\n var transStatusService = this,\n STATUSES = {\n 'UNTRANSLATED': {\n 'ID': 'untranslated',\n 'NAME': 'Untranslated',\n 'CSSCLASS': 'neutral'\n },\n 'NEEDSWORK': {\n 'ID': 'needswork',\n 'NAME': 'Needs Work',\n 'CSSCLASS': 'unsure'\n },\n 'TRANSLATED' : {\n 'ID': 'translated',\n 'NAME': 'Translated',\n 'CSSCLASS': 'success'\n },\n 'APPROVED': {\n 'ID': 'approved',\n 'NAME': 'Approved',\n 'CSSCLASS': 'highlight'\n }\n };\n\n transStatusService.getAll = function() {\n return STATUSES;\n };\n\n transStatusService.getAllAsArray = function() {\n return _.values(STATUSES);\n };\n\n /**\n *\n * @param {string} statusKey string representation of the status.\n * @returns {StatusInfo}\n */\n transStatusService.getStatusInfo = function(statusKey) {\n return STATUSES[conformStatus(statusKey)];\n };\n\n transStatusService.getId = function(statusKey) {\n return STATUSES[conformStatus(statusKey)].ID;\n };\n\n transStatusService.getServerId = function(statusId) {\n return serverStatusId(statusId);\n };\n\n transStatusService.getName = function(statusKey) {\n return STATUSES[conformStatus(statusKey)].NAME;\n };\n\n transStatusService.getCSSClass = function(statusKey) {\n return STATUSES[conformStatus(statusKey)].CSSCLASS;\n };\n\n /**\n * Conform it to uppercase for lookups and\n * temporary fix for server sending \"needReview\"\n * instead of needswork status\n * @param {string} status\n * @return {string} new value to use\n */\n function conformStatus(statusKey) {\n statusKey = angular.uppercase(statusKey);\n if (!statusKey || statusKey === 'NEW') {\n statusKey = 'UNTRANSLATED';\n } else if (statusKey === 'NEEDREVIEW') {\n statusKey = 'NEEDSWORK';\n }\n return statusKey;\n }\n\n /**\n * Conform it to PascalCase for lookups and\n * temporary fix for server receiving \"needReview\"\n * instead of needswork status\n * @param {string} status\n * @return {string} new value to use\n */\n function serverStatusId(statusId) {\n statusId = angular.lowercase(statusId);\n if (!statusId || statusId === 'untranslated') {\n return 'New';\n } else if (statusId === 'needswork') {\n return 'NeedReview';\n }\n return statusId.charAt(0).toUpperCase() + statusId.slice(1).toLowerCase();\n }\n\n return transStatusService;\n }\n\n angular\n .module('app')\n .factory('TransStatusService', TransStatusService);\n})();\n\n","(function() {\n 'use strict';\n\n /**\n * @name trans-unit\n * @description transUnit container\n * @ngInject\n */\n function transUnitFilter() {\n return {\n restrict: 'E',\n required: ['editor'],\n scope: {\n editor: '='\n },\n templateUrl: 'components/transUnitFilter/trans-unit-filter.html'\n };\n }\n\n angular\n .module('app')\n .directive('transUnitFilter', transUnitFilter);\n\n})();\n","(function () {\n 'use strict';\n\n /**\n * TransUnitCtrl.js\n * @ngInject\n */\n function TransUnitCtrl($rootScope, $scope, $element, $stateParams, _,\n TransUnitService, EventService, LocaleService, focus,\n EditorShortcuts, PhraseUtil, SettingsService) {\n\n var transUnitCtrl = this;\n\n transUnitCtrl.selected = false;\n transUnitCtrl.focused = false;\n transUnitCtrl.focusedTranslationIndex = 0;\n\n transUnitCtrl.hasTranslationChanged =\n PhraseUtil.hasTranslationChanged;\n\n transUnitCtrl.focusTranslation = function() {\n if(transUnitCtrl.selected) {\n focus('phrase-' + $scope.phrase.id + '-' +\n transUnitCtrl.focusedTranslationIndex);\n }\n };\n\n // when user clicked on TU or using tab to nav\n transUnitCtrl.onTextAreaFocus = function(phrase, index) {\n transUnitCtrl.focused = true;\n if (!_.isUndefined(index)) {\n transUnitCtrl.focusedTranslationIndex = index;\n }\n if(!transUnitCtrl.selected) {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {'id': phrase.id,\n 'updateURL': true,\n 'focus': true\n }, $scope);\n }\n };\n\n transUnitCtrl.translationTextModified = function(phrase) {\n EventService.emitEvent(EventService.EVENT.TRANSLATION_TEXT_MODIFIED,\n phrase);\n };\n\n transUnitCtrl.getPhrase = function() {\n return $scope.phrase;\n };\n\n transUnitCtrl.init = function() {\n TransUnitService.addController($scope.phrase.id, transUnitCtrl);\n if($stateParams.id && parseInt($stateParams.id) === $scope.phrase.id) {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {'id': $stateParams.id,\n 'updateURL': false,\n 'focus' : $stateParams.selected});\n }\n };\n\n transUnitCtrl.copySource = function($event, phrase, sourceIndex) {\n $event.stopPropagation(); //prevent click event of TU\n EventService.emitEvent(EventService.EVENT.COPY_FROM_SOURCE,\n {'phrase': phrase, 'sourceIndex': sourceIndex}, $scope);\n };\n\n transUnitCtrl.undoEdit = function($event, phrase) {\n $event.stopPropagation(); //prevent click event of TU\n EventService.emitEvent(EventService.EVENT.UNDO_EDIT,\n phrase, $scope);\n };\n\n transUnitCtrl.cancelEdit = function($event, phrase) {\n $event.stopPropagation(); //prevent click event of TU\n EventService.emitEvent(EventService.EVENT.CANCEL_EDIT,\n phrase, $scope);\n };\n\n transUnitCtrl.saveAs = function($event, phrase, status) {\n EditorShortcuts.saveTranslationCallBack($event, phrase, status);\n };\n\n transUnitCtrl.getLocaleName = function(localeId) {\n return LocaleService.getName(localeId);\n };\n\n transUnitCtrl.toggleSaveAsOptions = function(open) {\n EventService.broadcastEvent( open ? 'openDropdown': 'closeDropdown',\n {}, $scope);\n if (open) {\n // focus on the first dropdown option\n focus($scope.phrase.id + '-saveAsOption-0');\n }\n };\n\n var SHOW_SUGGESTIONS = SettingsService.SETTING.SHOW_SUGGESTIONS;\n $scope.showSuggestions = SettingsService.subscribe(SHOW_SUGGESTIONS,\n function (show) {\n $scope.showSuggestions = show;\n });\n\n $rootScope.$on(EventService.EVENT.SUGGESTIONS_SEARCH_TOGGLE,\n function(event, data) {\n transUnitCtrl.suggestionsSearchIsActive = data;\n });\n\n transUnitCtrl.toggleSuggestionPanel = function () {\n if (transUnitCtrl.suggestionsSearchIsActive) {\n EventService.emitEvent(EventService.EVENT.SUGGESTIONS_SEARCH_TOGGLE,\n false);\n }\n else {\n SettingsService.update(SHOW_SUGGESTIONS, !$scope.showSuggestions);\n }\n };\n\n $scope.suggestionCount = 0;\n $rootScope.$on(EventService.EVENT.PHRASE_SUGGESTION_COUNT,\n function (event, data) {\n if (data.id === $scope.phrase.id) {\n $scope.suggestionCount = data.count;\n }\n });\n\n transUnitCtrl.cancelSaveAsMode = function() {\n EditorShortcuts.cancelSaveAsModeIfOn();\n };\n\n $scope.$on('$destroy', function () {\n $element.unbind('click', onTransUnitClick);\n $element.unbind('focus', onTransUnitClick);\n });\n\n transUnitCtrl.updateSaveButton = function (phrase) {\n transUnitCtrl.saveButtonStatus =\n PhraseUtil.getSaveButtonStatus($scope.phrase);\n transUnitCtrl.saveButtonOptions =\n TransUnitService.getSaveButtonOptions(transUnitCtrl.saveButtonStatus,\n $scope.phrase);\n transUnitCtrl.saveButtonText = transUnitCtrl.saveButtonStatus.NAME;\n transUnitCtrl.saveButtonDisabled =\n !PhraseUtil.hasTranslationChanged(phrase);\n transUnitCtrl.loadingClass = '';\n transUnitCtrl.savingStatus = '';\n };\n\n transUnitCtrl.phraseSaving = function (data) {\n transUnitCtrl.loadingClass = 'is-loading';\n transUnitCtrl.saveButtonStatus =\n transUnitCtrl.savingStatus = data.status;\n transUnitCtrl.saveButtonOptions =\n TransUnitService.getSaveButtonOptions(transUnitCtrl.saveButtonStatus,\n data.phrase);\n transUnitCtrl.saveButtonText = 'Saving…';\n transUnitCtrl.saveButtonDisabled = true;\n };\n\n transUnitCtrl.saveButtonOptionsAvailable = function() {\n return !_.isEmpty(transUnitCtrl.saveButtonOptions);\n };\n\n transUnitCtrl.selectTransUnit = function(phrase) {\n if (!transUnitCtrl.selected) {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {'id': phrase.id,\n 'updateURL': true,\n 'focus': true\n }, $scope);\n }\n };\n\n function onTransUnitClick() {\n if(!transUnitCtrl.selected) {\n $scope.$apply(function () {\n EventService.emitEvent(EventService.EVENT.SELECT_TRANS_UNIT,\n {'id': $scope.phrase.id,\n 'updateURL': true,\n 'focus': true}, $scope);\n });\n }\n }\n\n return transUnitCtrl;\n }\n\n angular\n .module('app')\n .controller('TransUnitCtrl', TransUnitCtrl);\n})();\n\n","(function () {\n 'use strict';\n\n /**\n * TransUnitService\n *\n * See PhraseService.transformToPhrases function for phrase definition.\n *\n * @ngInject\n */\n function TransUnitService(_, $location, $rootScope, $state, $stateParams,\n $filter, MessageHandler, EventService, TransStatusService, PRODUCTION,\n EditorShortcuts, PhraseUtil, $timeout) {\n var transUnitService = this,\n controllerList = {},\n selectedTUId;\n\n transUnitService.addController = function(id, controller) {\n controllerList[id] = controller;\n };\n\n transUnitService.getSaveButtonOptions = function(saveButtonStatus, phrase) {\n return filterSaveButtonOptions(saveButtonStatus, phrase);\n };\n\n $rootScope.$on(EventService.EVENT.TOGGLE_SAVE_OPTIONS,\n function(event, data) {\n var transUnitCtrl = controllerList[data.id];\n if (transUnitCtrl) {\n transUnitCtrl.toggleSaveAsOptions(data.open);\n }\n });\n\n /**\n * EventService.EVENT.SELECT_TRANS_UNIT listener\n * - Select and focus a trans-unit.\n * - Perform implicit save on previous selected TU if changed\n * - Update url with TU id without reload state\n */\n $rootScope.$on(EventService.EVENT.SELECT_TRANS_UNIT,\n function (event, data) {\n var newTuController = controllerList[data.id],\n oldTUController = controllerList[selectedTUId],\n updateURL = data.updateURL;\n\n EventService.emitEvent(EventService.EVENT.REQUEST_PHRASE_SUGGESTIONS,\n {\n 'phrase' : newTuController.getPhrase()\n });\n\n if(newTuController) {\n EditorShortcuts.selectedTUCtrl = newTuController;\n\n if (selectedTUId && selectedTUId !== data.id) {\n setSelected(oldTUController, false);\n\n //perform implicit save if changed\n if(PhraseUtil.hasTranslationChanged(\n oldTUController.getPhrase())) {\n EventService.emitEvent(EventService.EVENT.SAVE_TRANSLATION,\n {\n 'phrase' : oldTUController.getPhrase(),\n 'status' : TransStatusService.getStatusInfo('TRANSLATED'),\n 'locale' : $stateParams.localeId,\n 'docId' : $stateParams.docId\n });\n }\n }\n\n updateSaveButton(event, newTuController.getPhrase());\n selectedTUId = data.id;\n setSelected(newTuController, true);\n\n EventService.emitEvent(EventService.EVENT.FOCUS_TRANSLATION, data);\n\n //Update url without reload state\n if(updateURL) {\n if($state.current.name !== 'editor.selectedContext.tu') {\n $state.go('editor.selectedContext.tu', {\n 'id': data.id,\n 'selected': data.focus.toString()\n });\n } else {\n $location.search('id', data.id);\n $location.search('selected', data.focus.toString());\n }\n }\n } else {\n MessageHandler.displayWarning('Trans-unit not found:' + data.id);\n }\n });\n\n /**\n * EventService.EVENT.COPY_FROM_SOURCE listener\n * Copy translation from source\n */\n $rootScope.$on(EventService.EVENT.COPY_FROM_SOURCE,\n function (event, data) {\n var sourceIndex = 0;\n if(data.phrase.plural) {\n //clicked copy source button\n sourceIndex = data.sourceIndex;\n if(_.isUndefined(sourceIndex)) {\n //copy source key shortcut, copy corresponding source to target\n var transUnitCtrl = controllerList[data.phrase.id];\n sourceIndex = transUnitCtrl.focusedTranslationIndex;\n if(data.phrase.sources.length <\n transUnitCtrl.focusedTranslationIndex + 1) {\n sourceIndex = data.phrase.sources.length - 1;\n }\n }\n }\n setTranslationText(data.phrase, data.phrase.sources[sourceIndex]);\n });\n\n $rootScope.$on(EventService.EVENT.COPY_FROM_SUGGESTION,\n function (event, data) {\n if (selectedTUId) {\n var transUnitCtrl = controllerList[selectedTUId];\n var phrase = transUnitCtrl.getPhrase();\n\n var suggestion = data.suggestion;\n var targets = suggestion.targetContents;\n\n var copyAsPlurals = phrase.plural && targets.length > 1;\n\n\n if (copyAsPlurals) {\n var pluralCount = phrase.translations.length;\n\n if (targets.length < pluralCount) {\n var lastSuggestion = _.last(targets);\n // pad suggestions with last suggestion, but only when there are\n // no translations entered for the extra plural forms.\n targets = _.assign(phrase.translations.slice(), targets,\n function (current, suggested) {\n if (suggested) return suggested;\n if (current) return current;\n return lastSuggestion;\n });\n }\n if (targets.length > pluralCount) {\n targets = _.first(targets, pluralCount);\n }\n\n setAllTranslations(phrase, targets);\n } else {\n setTranslationText(phrase, targets[0]);\n }\n }\n });\n\n /**\n * EventService.EVENT.UNDO_EDIT listener\n * Cancel edit and restore translation\n */\n $rootScope.$on(EventService.EVENT.UNDO_EDIT,\n function (event, phrase) {\n if (PhraseUtil.hasTranslationChanged(phrase)) {\n setAllTranslations(phrase, phrase.translations);\n }\n });\n\n /**\n * EventService.EVENT.CANCEL_EDIT listener\n * Cancel edit and restore translation\n */\n $rootScope.$on(EventService.EVENT.CANCEL_EDIT,\n function (event, phrase) {\n if(selectedTUId) {\n setSelected(controllerList[selectedTUId], false);\n selectedTUId = false;\n EditorShortcuts.selectedTUCtrl = null;\n }\n\n $location.search('selected', null);\n if(!phrase) {\n $location.search('id', null);\n }\n\n // EditorContentCtrl#changePage doesn't provide a phrase object\n if (phrase) {\n $timeout(function() {\n return $rootScope.$broadcast('blurOn', 'phrase-' + phrase.id);\n });\n }\n });\n\n /**\n * EventService.EVENT.TRANSLATION_TEXT_MODIFIED listener\n *\n */\n $rootScope.$on(EventService.EVENT.TRANSLATION_TEXT_MODIFIED,\n updateSaveButton);\n\n /**\n * EventService.EVENT.FOCUS_TRANSLATION listener\n *\n */\n $rootScope.$on(EventService.EVENT.FOCUS_TRANSLATION,\n setFocus);\n\n /**\n * EventService.EVENT.SAVE_COMPLETED listener\n *\n */\n $rootScope.$on(EventService.EVENT.SAVE_INITIATED,\n phraseSaving);\n\n /**\n * EventService.EVENT.SAVE_COMPLETED listener\n *\n */\n $rootScope.$on(EventService.EVENT.SAVE_COMPLETED,\n updateSaveButton);\n\n function setTranslationText(phrase, newText) {\n var index = 0;\n if (phrase.plural) {\n var transUnitCtrl = controllerList[phrase.id];\n index = transUnitCtrl.focusedTranslationIndex;\n }\n phrase.newTranslations[index] = newText;\n EventService.emitEvent(EventService.EVENT.TRANSLATION_TEXT_MODIFIED,\n phrase);\n EventService.emitEvent(EventService.EVENT.FOCUS_TRANSLATION,\n phrase);\n }\n\n function setAllTranslations(phrase, newTexts) {\n //need slice() for new instance of array\n phrase.newTranslations = newTexts.slice();\n\n EventService.emitEvent(EventService.EVENT.TRANSLATION_TEXT_MODIFIED,\n phrase);\n EventService.emitEvent(EventService.EVENT.FOCUS_TRANSLATION,\n phrase);\n }\n\n function updateSaveButton(event, phrase) {\n var transUnitCtrl = controllerList[phrase.id];\n transUnitCtrl.updateSaveButton(phrase);\n }\n\n function phraseSaving(event, data) {\n var transUnitCtrl = controllerList[data.phrase.id];\n transUnitCtrl.phraseSaving(data);\n EventService.emitEvent(EventService.EVENT.FOCUS_TRANSLATION,\n data.phrase);\n }\n\n function setSelected(transUnitCtrl, isSelected) {\n //This check is to prevent selected event being triggered repeatedly.\n if(transUnitCtrl.selected !== isSelected) {\n transUnitCtrl.selected = isSelected || false;\n }\n }\n\n function setFocus(event, phrase) {\n var transUnitCtrl = controllerList[phrase.id];\n transUnitCtrl.focusTranslation();\n }\n\n /**\n * Filters the dropdown options for saving a translation\n * Unless the translation is empty, remove untranslated as an option\n * Filter the current default save state out of the list and show remaining\n *\n * @param {Object} saveStatus The current default translation *save* status\n * @return {Array} Is used to construct the dropdown list\n */\n function filterSaveButtonOptions(saveStatus, phrase) {\n var filteredOptions = [];\n if (saveStatus.ID === 'untranslated') {\n return filteredOptions;\n }\n filteredOptions = $filter('filter')\n (TransStatusService.getAllAsArray(), {ID: '!untranslated'});\n\n if(phrase.plural) {\n if(PhraseUtil.hasNoTranslation(phrase)) {\n filteredOptions = $filter('filter')\n (filteredOptions, {ID: '!needswork'});\n } else if(PhraseUtil.hasEmptyTranslation(phrase)) {\n filteredOptions = $filter('filter')\n (filteredOptions, {ID: '!translated'});\n }\n }\n\n if (PRODUCTION) {\n filteredOptions = $filter('filter')\n (filteredOptions, {ID: '!approved'});\n }\n\n return $filter('filter')(filteredOptions, {ID: '!'+saveStatus.ID});\n }\n\n return transUnitService;\n }\n\n angular\n .module('app')\n .factory('TransUnitService', TransUnitService);\n})();\n\n\n","(function() {\n 'use strict';\n\n /**\n * @name trans-unit\n * @description transUnit container\n * @ngInject\n */\n function transUnit() {\n return {\n restrict: 'E',\n required: ['phrase', 'editorContext'],\n scope: {\n phrase: '=',\n firstPhrase: '=',\n editorContext: '='\n },\n controller: 'TransUnitCtrl as transUnitCtrl',\n templateUrl: 'components/transUnit/trans-unit.html',\n link: function(scope, element, attr, TransUnitCtrl) {\n TransUnitCtrl.init();\n }\n };\n }\n\n angular\n .module('app')\n .directive('transUnit', transUnit);\n\n})();\n","(function() {\n 'use strict';\n\n /**\n * UserService.js\n *\n * @ngInject\n */\n function UserService($resource, UrlService) {\n\n function getUserInfo(username) {\n var UserInfo = $resource(UrlService.USER_INFO_URL, {}, {\n query: {\n method: 'GET',\n params: {\n username: username\n }\n }\n });\n return UserInfo.query().$promise;\n }\n\n function getMyInfo() {\n var MyInfo = $resource(UrlService.MY_INFO_URL, {}, {\n query: {\n method: 'GET'\n }\n });\n return MyInfo.query().$promise;\n }\n\n return {\n settings: {\n editor: {\n hideMainNav: false\n }\n },\n getUserInfo: getUserInfo,\n getMyInfo: getMyInfo\n };\n }\n angular\n .module('app')\n .factory('UserService', UserService);\n})();\n","(function() {\n 'use strict';\n\n /**\n * FilterUtil.js\n *\n * @ngInject\n */\n function FilterUtil(StringUtil, _) {\n\n /**\n * Filter in resources on given fields with matched terms\n *\n * @param resources - list of resources\n * @param fields - list of fields to check\n * @param terms - list of term to check\n * @returns {*}\n */\n function filterResources(resources, fields, terms) {\n if(!resources || !fields || !terms) {\n return resources;\n }\n return _.filter(resources, function (resource) {\n return isInclude(resource, fields, terms);\n });\n }\n\n /**\n * Filter out properties starting with $ (added by promise)\n * @param resources\n */\n function cleanResourceMap(resources) {\n var filteredList = {};\n var ids = Object.keys(resources).filter(function (id) {\n return id.indexOf('$') === -1;\n });\n ids.forEach(function(id) {\n filteredList[id] = (resources[id]);\n });\n return filteredList;\n }\n\n function cleanResourceList(resources) {\n var filteredList = [];\n var ids = Object.keys(resources).filter(function (id) {\n return id.indexOf('$') === -1;\n });\n ids.forEach(function(id) {\n filteredList.push(resources[id]);\n });\n return filteredList;\n }\n\n\n function isInclude(resource, fields, terms) {\n if(!resource || !fields || !terms) {\n return false;\n }\n return _.any(fields, function(field) {\n return _.any(terms, function(term) {\n return StringUtil.equals(resource[field], term, true);\n });\n });\n }\n\n return {\n filterResources : filterResources,\n cleanResourceList:cleanResourceList,\n cleanResourceMap : cleanResourceMap\n };\n }\n angular\n .module('app')\n .factory('FilterUtil', FilterUtil);\n})();\n","(function() {\n 'use strict';\n\n /**\n * PhraseUtil.js\n *\n * @ngInject\n */\n function PhraseUtil(TransStatusService, _) {\n\n function getSaveButtonStatus(phrase) {\n if (hasNoTranslation(phrase)) {\n return TransStatusService.getStatusInfo('untranslated');\n }\n else if (hasEmptyTranslation(phrase)) {\n return TransStatusService.getStatusInfo('needswork');\n }\n else if (hasTranslationChanged(phrase)) {\n return TransStatusService.getStatusInfo('translated');\n }\n else {\n return phrase.status;\n }\n }\n\n function hasTranslationChanged(phrase) {\n // on Firefox with input method turned on,\n // when hitting tab it seems to turn undefined value into ''\n var allSame = _.every(phrase.translations,\n function(translation, index) {\n return nullToEmpty(translation) ===\n nullToEmpty(phrase.newTranslations[index]);\n });\n return !allSame;\n }\n\n function hasNoTranslation(phrase) {\n return _.isEmpty(_.compact(phrase.newTranslations));\n }\n\n function hasEmptyTranslation(phrase) {\n return _.compact(phrase.newTranslations).length !==\n phrase.newTranslations.length;\n }\n\n function nullToEmpty(value) {\n return value || '';\n }\n\n return {\n getSaveButtonStatus : getSaveButtonStatus,\n hasTranslationChanged : hasTranslationChanged,\n hasNoTranslation : hasNoTranslation,\n hasEmptyTranslation : hasEmptyTranslation\n };\n }\n angular\n .module('app')\n .factory('PhraseUtil', PhraseUtil);\n})();\n","(function() {\n 'use strict';\n\n /**\n * Utility method for handling $resource.statistic\n *\n * StatisticUtil.js\n * @ngInject\n *\n */\n\n function StatisticUtil() {\n return {\n getWordStatistic: function(statistics) {\n return statistics[0].unit === 'WORD' ? statistics[0] : statistics[1];\n },\n getMsgStatistic: function(statistics) {\n return statistics[0].unit === 'MESSAGE' ? statistics[0] : statistics[1];\n }\n };\n }\n angular\n .module('app')\n .factory('StatisticUtil', StatisticUtil);\n})();\n","(function() {\n 'use strict';\n\n /**\n * StringUtil\n *\n * @ngInject\n */\n\n function StringUtil() {\n function startsWith(str, prefix, ignoreCase) {\n if (ignoreCase && str && prefix) {\n str = str.toUpperCase();\n prefix = prefix.toUpperCase();\n }\n return str.lastIndexOf(prefix, 0) === 0;\n }\n\n function endsWith(str, suffix, ignoreCase) {\n if (ignoreCase && str && suffix) {\n str = str.toUpperCase();\n suffix = suffix.toUpperCase();\n }\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n }\n\n function equals(from, to, ignoreCase) {\n if (ignoreCase && from && to) {\n from = from.toUpperCase();\n to = to.toUpperCase();\n }\n return from === to;\n }\n\n return {\n startsWith : startsWith,\n endsWith : endsWith,\n equals : equals\n };\n }\n angular\n .module('app')\n .factory('StringUtil', StringUtil);\n})();\n","(function() {\n 'use strict';\n\n /**\n * Utility to handles URL related request.\n *\n * UrlService.js\n * @ngInject\n */\n function UrlService($location, $http, $q, $stateParams, _) {\n //IE doesn't support location.origin\n if (!location.origin) {\n location.origin =\n window.location.protocol + '//' + window.location.hostname +\n (window.location.port ? (':' + window.location.port) : '');\n }\n\n var urlService = this,\n gravatarBaseUrl = 'http://www.gravatar.com/avatar',\n configFile = 'config.json',\n baseUrl = '',\n urls = {},\n uiTranslationsURL = location.origin + location.pathname +\n 'translations';\n\n urlService.serverContextPath = '';\n\n urlService.init = function () {\n if (baseUrl) {\n return $q.when(baseUrl);\n }\n else {\n /**\n * Temporary solution to handle dynamic context path deployed for\n * Zanata server in JBOSS (/ or /zanata).\n *\n * If config.baseUrl exist and not empty,\n * baseUrl = config.baseUrl\n *\n * ELSE\n * baseUrl = full.url - appPath onwards\n */\n return $http.get(configFile).then(function (response) {\n var config = response.data;\n if (config.baseUrl) {\n baseUrl = config.baseUrl;\n } else {\n var deployPath = config.appPath.replace(/^\\//g, ''),\n index = location.href.indexOf(deployPath);\n\n urlService.serverContextPath = location.origin + location.pathname;\n if(index >= 0) {\n urlService.serverContextPath = location.href.substring(0, index);\n }\n urlService.serverContextPath = urlService.serverContextPath.\n replace(/\\/?$/, '/');\n baseUrl = urlService.serverContextPath + 'rest';\n }\n\n /* jshint -W101 */\n // URLs over multiple lines are hard to read, allowing long lines here.\n // Warnings for jshint are turned off/on with -/+ before the warning code.\n // See: https://github.com/jshint/jshint/blob/2.1.4/src/shared/messages.js\n urls = _.mapValues({\n project: '/project/:projectSlug',\n docs: '/project/:projectSlug/version/:versionSlug/docs',\n locales: '/project/:projectSlug/version/:versionSlug/locales',\n status: '/project/:projectSlug/version/:versionSlug/doc/:docId/status/:localeId',\n textFlows: '/source+trans/:localeId',\n docStats: '/stats/project/:projectSlug/version/:versionSlug/doc/:docId/locale/:localeId',\n myInfo: '/user',\n userInfo: '/user/:username',\n translation: '/trans/:localeId',\n allLocales: '/locales',\n suggestions: '/suggestions'\n }, unary(restUrl));\n /* jshint +W101 */\n\n urlService.PROJECT_URL = urls.project;\n urlService.LOCALE_LIST_URL = urls.locales;\n urlService.DOCUMENT_LIST_URL = urls.docs;\n urlService.TRANSLATION_STATUS_URL = urls.status;\n urlService.TEXT_FLOWS_URL = urls.textFlows;\n urlService.DOC_STATISTIC_URL = urls.docStats;\n urlService.MY_INFO_URL = urls.myInfo;\n urlService.USER_INFO_URL = urls.userInfo;\n urlService.TRANSLATION_URL = urls.translation;\n urlService.ALL_LOCALE_URL = urls.allLocales;\n urlService.SUGGESTIONS_URL = urls.suggestions;\n\n urlService.PROJECT_PAGE = function(projectSlug, versionSlug) {\n return urlService.serverContextPath + 'iteration/view/' +\n projectSlug + '/' + versionSlug;\n };\n\n urlService.DASHBOARD_PAGE = urlService.serverContextPath +\n 'dashboard';\n });\n }\n };\n\n /**\n * Get the value of a query string parameter.\n */\n urlService.readValue = function (key) {\n return $location.search()[key];\n };\n\n urlService.gravatarUrl = function (gravatarHash, size) {\n return gravatarBaseUrl + '/' + gravatarHash +\n '?d=mm&r=g&s=' + size;\n };\n\n urlService.uiTranslationURL = function (locale) {\n return uiTranslationsURL + '/' + locale + '.json';\n };\n\n urlService.uiTranslationListURL = uiTranslationsURL + '/locales';\n\n return urlService;\n\n /**\n * Create a REST URL by appending all the given URL part arguments to the\n * base URL.\n *\n * No separators will be added or removed, so all parts should include\n * leading / and exclude trailing / to avoid problems.\n */\n function restUrl() {\n return baseUrl + Array.prototype.join.call(arguments, '');\n }\n\n /**\n * Decorate a function to ignore all but the first argument.\n */\n function unary(fun) {\n return function(arg) {\n return fun(arg);\n };\n }\n }\n\n angular\n .module('app')\n .factory('UrlService', UrlService);\n})();\n"],"sourceRoot":"/source/"}
\ No newline at end of file
diff --git a/zanata-war/src/main/webapp/app/maps/libs.js.map b/zanata-war/src/main/webapp/app/maps/libs.js.map
index f4fba3f2a8..0f57a98ac3 100644
--- a/zanata-war/src/main/webapp/app/maps/libs.js.map
+++ b/zanata-war/src/main/webapp/app/maps/libs.js.map
@@ -1 +1 @@
-{"version":3,"sources":["angular/angular.js","angular-animate/angular-animate.js","angular-elastic/elastic.js","angular-resource/angular-resource.js","highlightjs/highlight.pack.js","modernizr/modernizr-custom.js","mousetrap/mousetrap.js","ng-focus-on/ng-focus-on.js","angular-gettext/dist/angular-gettext.js","angular-hotkeys/src/hotkeys.js","angular-ui-router/release/angular-ui-router.js","lodash/dist/lodash.compat.js","underscore.string/lib/underscore.string.js"],"names":[],"mappings":"AAAA;CACC;CACA;CACA;CACA;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;EACE;EACA;IACE;MACE;MACA;MACA;MACA;QACE;UACE;QACF;UACE;QACF;UACE;QACF;QACA;MACF;MACA;;IAEF;MACE;;MAEA;QACE;QACA;UACE;QACF;UACE;QACF;UACE;QACF;QACA;MACF;MACA;IACF;;IAEA;MACE;IACF;MACE;QACE;IACJ;IACA;EACF;AACF;;AAEA;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;;AAEA;AACA;AACA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;;AAGA;EACE;EACA;MACI;MACA;AACN;AACA;EACE;EACA;MACI;MACA;AACN;;;AAGA;AACA;AACA;AACA;EACE;EACA;AACF;;;AAGA;IACI;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;;AAEJ;CACC;CACA;CACA;AACD;AACA;EACE;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;AACD;EACE;IACE;EACF;;EAEA;;EAEA;IACE;EACF;;EAEA;SACO;AACT;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;KACA;KACA;OACE;KACF;KACA;GACF;CACF;CACA;CACA;CACA;CACA;CACA;;AAED;EACE;EACA;IACE;MACE;QACE;QACA;QACA;UACE;QACF;MACF;IACF;MACE;MACA;QACE;UACE;QACF;MACF;IACF;QACI;IACJ;MACE;QACE;UACE;QACF;MACF;IACF;EACF;EACA;AACF;;AAEA;EACE;EACA;IACE;MACE;IACF;EACF;EACA;AACF;;AAEA;EACE;EACA;IACE;EACF;EACA;AACF;;;AAGA;CACC;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;;AAGA;CACC;CACA;CACA;CACA;AACD;EACE;IACE;EACF;EACA;IACE;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;IACE;IACA;MACE;MACA;QACE;QACA;MACF;IACF;EACF;;EAEA;EACA;AACF;;AAEA;EACE;AACF;;;AAGA;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;OACA;KACF;GACF;CACF;AACD;AACA;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;KACF;GACF;CACF;AACD;AACA;;;AAGA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;;AAGA;EACE;AACF;;;AAGA;EACE;AACF;;;AAGA;EACE;AACF;;;AAGA;EACE;AACF;;;AAGA;EACE;AACF;;;AAGA;EACE;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;IACA;AACJ;;AAEA;CACC;CACA;CACA;AACD;EACE;EACA;IACE;EACF;AACF;;;AAGA;EACE;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;IACE;EACF;IACE;MACE;QACE;EACN;;EAEA;AACF;;;AAGA;EACE;AACF;;AAEA;EACE;EACA;IACE;EACF;AACF;;AAEA;EACE;IACE;IACA;IACA;IACA;MACE;IACF;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA;EACC;IACE;MACE;;MAEA;QACE;QACA;MACF;;MAEA;QACE;QACA;MACF;;MAEA;IACF;CACH;CACA;CACA;CACA;AACD;EACE;IACE;MACE;EACJ;;EAEA;IACE;IACA;MACE;QACE;MACF;QACE;MACF;QACE;QACA;MACF;QACE;QACA;MACF;IACF;EACF;IACE;MACE;;IAEF;IACA;;IAEA;MACE;MACA;;MAEA;MACA;IACF;;IAEA;IACA;MACE;MACA;QACE;QACA;UACE;UACA;QACF;QACA;MACF;IACF;MACE;MACA;QACE;MACF;QACE;UACE;QACF;MACF;MACA;QACE;UACE;UACA;YACE;YACA;UACF;UACA;QACF;MACF;MACA;IACF;;EAEF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;AACD;EACE;IACE;;IAEA;MACE;IACF;EACF;IACE;;IAEA;MACE;QACE;MACF;IACF;EACF;;EAEA;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;EACA;EACA;EACA;IACE;MACE;QACE;QACA;UACE;YACE;UACF;UACA;QACF;MACF;QACE;QACA;MACF;QACE;MACF;QACE;QACA;QACA;UACE;UACA;UACA;QACF;QACA;UACE;cACI;cACA;cACA;QACN;QACA;MACF;IACF;EACF;EACA;AACF;;AAEA;EACE;;EAEA;kBACgB;;EAEhB;IACE;MACE;MACA;MACA;IACF;MACE;IACF;EACF;;EAEA;AACF;;;;AAIA;EACE;AACF;;AAEA;EACE;AACF;;;AAGA;AACA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;EACE;EACA;IACE;MACE;UACI;YACE;YACA;QACJ;MACF;UACI;YACE;YACA;QACJ;EACN;IACE;IACA;EACF;AACF;;;AAGA;EACE;;EAEA;IACE;EACF;IACE;EACF;IACE;EACF;IACE;EACF;;EAEA;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;MACI;MACA;AACN;;;AAGA;CACC;CACA;AACD;EACE;EACA;IACE;IACA;IACA;EACF;EACA;EACA;EACA;EACA;IACE;QACI;UACE;UACA;EACR;IACE;EACF;;AAEF;;;AAGA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;EACF;IACE;EACF;AACF;;;AAGA;CACC;CACA;CACA;AACD;EACE;EACA;IACE;MACE;MACA;MACA;QACE;QACA;UACE;QACF;UACE;QACF;UACE;QACF;MACF;IACF;EACF;EACA;AACF;;AAEA;EACE;EACA;IACE;MACE;QACE;mBACW;MACb;IACF;IACA;eACW;IACX;EACF;EACA;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;aACW;aACA;aACA;AACb;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;aACW;aACA;aACA;aACA;aACA;aACA;AACb;;AAEA;;AAEA;EACE;EACA;EACA;IACE;IACA;MACE;IACF;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;GACA;KACE;GACF;GACA;GACA;GACA;KACE;KACA;GACF;GACA;CACF;CACA;CACA;CACA;CACA;GACE;GACA;OACI;WACI;;WAEA;cACG;cACA;WACH;OACJ;;OAEA;WACI;WACA;;WAEA;cACG;cACA;WACH;OACJ;;OAEA;WACI;;WAEA;cACG;cACA;cACA;WACH;OACJ;GACJ;GACA;GACA;GACA;KACE;KACA;KACA;OACE;OACA;KACF;KACA;KACA;KACA;OACE;OACA;KACF;KACA;KACA;OACE;KACF;KACA;GACF;GACA;GACA;OACI;OACA;OACA;OACA;OACA;GACJ;GACA;OACI;OACA;OACA;GACJ;GACA;OACI;OACA;OACA;OACA;GACJ;GACA;CACF;CACA;AACD;EACE;MACI;MACA;;EAEJ;EACA;IACE;;IAEA;MACE;MACA;IACF;EACF;EACA;IACE;IACA;;IAEA;MACE;MACA;IACF;EACF;EACA;IACE;IACA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;IACE;EACF;EACA;EACA;IACE;;IAEA;MACE;MACA;MACA;UACI;UACA;UACA;IACN;;IAEA;IACA;MACE;IACF;;IAEA;MACE;MACA;QACE;MACF;IACF;;IAEA;IACA;IACA;OACG;QACC;UACE;UACA;QACF;MACF;IACF;IACA;EACF;;EAEA;EACA;;EAEA;IACE;IACA;EACF;;EAEA;IACE;EACF;;EAEA;EACA;IACE;MACE;IACF;IACA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;AACA;EACE;EACA;IACE;EACF;AACF;;AAEA;AACA;AACA;EACE;;EAEA;IACE;EACF;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;IACE;IACA;MACE;MACA;MACA;MACA;MACA;IACF;;IAEA;IACA;IACA;IACA;IACA;MACE;MACA;QACE;UACE;UACA;YACE;UACF;QACF;MACF;QACE;MACF;MACA;IACF;EACF;IACE;EACF;;EAEA;;EAEA;EACA;AACF;;AAEA;CACC;CACA;AACD;EACE;IACE;EACF;EACA;AACF;;AAEA;EACE;MACI;EACJ;;EAEA;MACI;EACJ;AACF;;AAEA;CACC;CACA;CACA;CACA;AACD;EACE;IACE;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;AACD;AACA;EACE;EACA;EACA;EACA;EACA;;EAEA;IACE;IACA;MACE;IACF;EACF;EACA;IACE;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;AACD;EACE;EACA;EACA;EACA;EACA;;EAEA;IACE;IACA;IACA;EACF;;EAEA;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;;EAEE;EACA;;EAEA;IACE;EACF;;EAEA;;EAEA;EACA;;EAEA;IACE;IACA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;UACE;QACF;MACF;;MAEA;MACA;QACE;MACF;MACA;QACE;UACE;aACG;aACA;QACL;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;;QAEA;QACA;UACE;UACA;UACA;UACA;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;;UAGA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;YACE;YACA;UACF;QACF;;QAEA;UACE;QACF;;QAEA;;QAEA;SACC;SACA;SACA;SACA;SACA;QACD;UACE;UACA;YACE;YACA;UACF;QACF;MACF;IACF;EACF;;AAEF;;AAEA;EACE;;EAEA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;EACA;EACA;EACA;AACF;;;AAGA;EACE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACF;;EAEA;EACA;IACE;EACF;IACE;EACF;;EAEA;IACE;MACE;MACA;QACE;MACF;MACA;QACE;YACI;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;QACJ;QACA;UACE;QACF;QACA;QACA;MACF;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACF;IACF;EACF;AACF;;AAEA;EACE;EACA;EACA;EACA;AACF;;AAEA;AACA;AACA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;;AAEA;IACI;IACA;MACE;IACF;IACA;MACE;IACF;;AAEJ;CACC;CACA;AACD;EACE;EACA;AACF;;AAEA;;;AAGA;AACA;AACA;AACA;;AAEA;CACC;CACA;CACA;CACA;AACD;EACE;IACE;MACE;IACF;IACA;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;EACE;;EAEA;EACA;EACA;EACA;EACA;AACF;;AAEA;AACA;AACA;;;AAGA;EACE;AACF;;AAEA;EACE;EACA;EACA;EACA;AACF;;AAEA;EACE;MACI;MACA;;EAEJ;IACE;IACA;EACF;IACE;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;MACE;IACF;;IAEA;;IAEA;IACA;EACF;;EAEA;EACA;EACA;EACA;IACE;EACF;;EAEA;AACF;;AAEA;EACE;EACA;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;AACF;;AAEA;AACA;EACE;IACE;EACF;;EAEA;;EAEA;IACE;IACA;EACF;EACA;IACE;MACE;IACF;IACA;EACF;;EAEA;IACE;EACF;IACE;EACF;AACF;;AAEA;EACE;AACF;;AAEA;EACE;;EAEA;IACE;IACA;MACE;IACF;EACF;AACF;;AAEA;EACE;;EAEA;EACA;EACA;;EAEA;;EAEA;IACE;MACE;QACE;MACF;MACA;IACF;EACF;IACE;MACE;QACE;QACA;MACF;QACE;MACF;IACF;EACF;AACF;;AAEA;EACE;EACA;;EAEA;IACE;MACE;MACA;IACF;;IAEA;MACE;QACE;MACF;MACA;IACF;IACA;IACA;EACF;AACF;;;AAGA;EACE;MACI;;EAEJ;IACE;IACA;EACF;;EAEA;AACF;;;AAGA;EACE;;IAEE;IACA;IACA;IACA;IACA;;IAEA;MACE;IACF;MACE;QACE;MACF;QACE;UACE;UACA;QACF;UACE;QACF;MACF;IACF;EACF;AACF;;AAEA;EACE;EACA;MACI;AACN;;AAEA;EACE;IACE;MACE;UACI;UACA;UACA;MACJ;IACF;EACF;AACF;;AAEA;EACE;IACE;4BACwB;;IAExB;MACE;MACA;QACE;MACF;IACF;;IAEA;EACF;AACF;;;AAGA;EACE;;EAEA;;IAEE;IACA;MACE;IACF;MACE;;MAEA;MACA;QACE;UACE;YACE;UACF;QACF;MACF;QACE;MACF;IACF;EACF;AACF;;;AAGA;EACE;AACF;;AAEA;EACE;EACA;EACA;IACE;EACF;EACA;;EAEA;IACE;MACE;IACF;;IAEA;IACA;IACA;IACA;EACF;AACF;;AAEA;EACE;EACA;IACE;EACF;AACF;;AAEA;EACE;EACA;EACA;AACF;;AAEA;AACA;AACA;AACA;EACE;IACE;;IAEA;MACE;MACA;MACA;IACF;;IAEA;IACA;MACE;IACF;MACE;MACA;MACA;MACA;MACA;MACA;IACF;EACF;EACA;IACE;IACA;IACA;EACF;;EAEA;MACI;EACJ;;EAEA;EACA;EACA;EACA;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;EACE;AACF;AACA;AACA;EACE;AACF;AACA;EACE;EACA;EACA;EACA;EACA;AACF;;AAEA;EACE;EACA;;EAEA;EACA;AACF;;AAEA;EACE;EACA;AACF;;AAEA;EACE;EACA;AACF;EACE;AACF;;AAEA;EACE;EACA;;EAEA;IACE;IACA;EACF;;EAEA;IACE;IACA;EACF;;EAEA;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;;EAEA;IACE;;IAEA;MACE;IACF;MACE;IACF;EACF;;EAEA;IACE;IACA;MACE;QACE;UACE;UACA;QACF;UACE;UACA;QACF;MACF;QACE;iBACS;eACF;eACA;MACT;IACF;MACE;IACF;MACE;MACA;MACA;MACA;MACA;IACF;EACF;;EAEA;IACE;MACE;IACF;MACE;IACF;EACF;;EAEA;IACE;IACA;;IAEA;MACE;QACE;QACA;MACF;MACA;IACF;EACF;;EAEA;IACE;MACE;QACE;QACA;UACE;YACE;UACF;QACF;QACA;MACF;MACA;IACF;IACA;EACF;;EAEA;IACE;MACE;IACF;IACA;IACA;EACF;;EAEA;AACF;EACE;GACC;GACA;EACD;IACE;IACA;;IAEA;IACA;IACA;IACA;QACI;MACF;;QAEE;QACA;UACE;YACE;YACA;UACF;YACE;cACE;YACF;UACF;QACF;QACA;QACA;MACF;QACE;QACA;QACA;QACA;QACA;QACA;UACE;UACA;QACF;QACA;MACF;IACF;MACE;MACA;QACE;MACF;MACA;MACA;IACF;EACF;AACF;;AAEA;EACE;IACE;IACA;MACE;IACF;;IAEA;IACA;;IAEA;;IAEA;MACE;MACA;QACE;;QAEA;UACE;QACF;;QAEA;UACE;QACF;MACF;IACF;;IAEA;MACE;IACF;;IAEA;IACA;MACE;IACF;;IAEA;MACE;QACE;MACF;IACF;EACF;;EAEA;EACA;EACA;EACA;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;EACE;;EAEA;IACE;;IAEA;IACA;MACE;IACF;;IAEA;IACA;IACA;;IAEA;MACE;IACF;;IAEA;IACA;IACA;;IAEA;MACE;MACA;;MAEA;QACE;;QAEA;UACE;UACA;UACA;;UAEA;YACE;YACA;YACA;YACA;cACE;YACF;UACF;;QAEF;UACE;YACE;UACF;QACF;QACA;MACF;MACA;IACF;EACF;;EAEA;;EAEA;IACE;;IAEA;IACA;IACA;IACA;MACE;MACA;IACF;IACA;EACF;;EAEA;IACE;IACA;IACA;MACE;QACE;MACF;QACE;MACF;MACA;IACF;EACF;;EAEA;IACE;IACA;MACE;QACE;IACJ;IACA;EACF;;EAEA;IACE;EACF;;EAEA;IACE;IACA;;IAEA;;IAEA;MACE;MACA;IACF;EACF;;EAEA;IACE;MACE;MACA;QACE;MACF;IACF;EACF;;EAEA;IACE;IACA;IACA;MACE;IACF;IACA;EACF;;EAEA;;EAEA;IACE;EACF;;EAEA;IACE;IACA;;IAEA;MACE;MACA;MACA;IACF;EACF;;EAEA;EACA;;EAEA;IACE;MACE;QACE;QACA;UACE;QACF;QACA;MACF;IACF;EACF;;EAEA;IACE;IACA;EACF;;EAEA;IACE;EACF;;EAEA;IACE;MACE;IACF;MACE;IACF;EACF;;EAEA;;EAEA;;IAEE;IACA;IACA;IACA;IACA;;IAEA;MACE;MACA;QACE;QACA;QACA;QACA;QACA;QACA;QACA;MACF;;MAEA;MACA;QACE;MACF;;MAEA;MACA;MACA;;MAEA;QACE;UACE;QACF;MACF;IACF;EACF;AACF;EACE;GACC;GACA;EACD;IACE;;IAEA;MACE;QACE;QACA;UACE;UACA;QACF;MACF;QACE;MACF;IACF;IACA;EACF;;EAEA;EACA;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;IACE;MACE;IACF;IACA;EACF;;EAEA;EACA;IACE;EACF;IACE;EACF;;EAEA;AACF;;AAEA;CACC;CACA;AACD;EACE;IACE;IACA;MACE;IACF;EACF;EACA;AACF;AACA;EACE;GACC;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;GACC;GACA;GACA;EACD;IACE;EACF;;EAEA;GACC;GACA;GACA;EACD;IACE;IACA;IACA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;;AAED;AACA;AACA;AACA;AACA;;AAEA;EACE;EACA;EACA;MACI;EACJ;IACE;EACF;EACA;AACF;;AAEA;EACE;MACI;MACA;MACA;;EAEJ;IACE;MACE;MACA;QACE;UACE;YACE;UACF;UACA;YACE;QACJ;QACA;QACA;QACA;UACE;YACE;UACF;QACF;MACF;MACA;IACF;EACF;IACE;IACA;IACA;EACF;IACE;EACF;EACA;AACF;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;;;AAKD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;wBACuB;CACvB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;EACE;EACA;MACI;MACA;MACA;MACA;QACE;YACI;YACA;YACA;YACA;YACA;YACA;UACF;MACJ;MACA;UACI;YACE;UACF;MACJ;MACA;UACI;YACE;YACA;UACF;;;EAGR;;EAEA;;EAEA;EACA;EACA;;EAEA;IACE;MACE;QACE;MACF;QACE;MACF;IACF;EACF;;EAEA;IACE;IACA;MACE;IACF;IACA;MACE;IACF;IACA;EACF;;EAEA;;EAEA;IACE;MACE;IACF;EACF;;EAEA;;EAEA;IACE;IACA;IACA;EACF;;EAEA;IACE;QACI;;IAEJ;MACE;MACA;IACF;EACF;;EAEA;EACA;EACA;EACA;IACE;IACA;MACE;MACA;;MAEA;QACE;QACA;UACE;cACI;;UAEJ;QACF;MACF;;MAEA;QACE;UACE;UACA;UACA;UACA;QACF;YACI;QACJ;YACI;QACJ;UACE;QACF;MACF;QACE;UACE;QACF;QACA;UACE;UACA;UACA;UACA;UACA;UACA;QACF;QACA;kBACU;MACZ;IACF;IACA;EACF;;EAEA;EACA;EACA;;EAEA;;IAEE;MACE;QACE;UACE;oBACU;QACZ;QACA;MACF;QACE;UACE;UACA;UACA;QACF;UACE;YACE;UACF;UACA;QACF;UACE;QACF;MACF;IACF;;IAEA;MACE;QACE;QACA;MACF;;MAEA;UACI;UACA;UACA;;MAEJ;QACE;QACA;UACE;kBACQ;QACV;QACA;UACE;UACA;UACA;QACF;MACF;MACA;QACE;MACF;;MAEA;MACA;MACA;IACF;;IAEA;MACE;UACI;;MAEJ;MACA;MACA;MACA;MACA;;MAEA;IACF;;IAEA;MACE;MACA;MACA;MACA;MACA;QACE;MACF;IACF;EACF;AACF;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;SACA;OACF;KACF;KACA;OACE;SACE;WACE;aACE;eACE;eACA;eACA;;eAEA;eACA;aACF;WACF;KACN;KACA;OACE;SACE;SACA;OACF;;OAEA;SACE;SACA;OACF;KACF;GACF;CACF;AACD;;EAEE;;EAEA;IACE;EACF;;EAEA;IACE;;IAEA;IACA;IACA;IACA;IACA;MACE;MACA;QACE;MACF;MACA;IACF;;IAEA;MACE;;MAEA;MACA;;MAEA;MACA;;MAEA;MACA;;MAEA;MACA;IACF;;IAEA;IACA;IACA;MACE;QACE;UACE;QACF;IACJ;;IAEA;EACF;AACF;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;;EAGE;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;KACE;KACA;KACA;KACA;KACA;KACA;KACA;KACA;GACF;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;QACI;IACJ;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;IACA;EACF;;EAEA;;IAEE;IACA;MACE;MACA;QACE;QACA;UACE;UACA;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;MAEE;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;cACM;QACN;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;QACA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;wBACgB;wBACA;QAChB;UACE;QACF;QACA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;wBACgB;wBACA;QAChB;UACE;QACF;QACA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;QACA;MACF;;MAEA;MACA;IACF;EACF;AACF;;AAEA;EACE;IACE;MACE;MACA;QACE;MACF;EACJ;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;CACC;CACA;CACA;CACA;CACA;CACA;AACD;EACE;MACI;MACA;MACA;MACA;MACA;MACA;;EAEJ;;EAEA;EACA;;EAEA;EACA;EACA;;EAEA;GACC;GACA;GACA;EACD;IACE;MACE;IACF;MACE;MACA;QACE;UACE;YACE;UACF;YACE;UACF;QACF;MACF;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;IACA;;IAEA;MACE;IACF;MACE;IACF;EACF;;EAEA;EACA;EACA;EACA;MACI;;EAEJ;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;EACF;;EAEA;EACA;EACA;;EAEA;MACI;MACA;;EAEJ;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;;IAEA;IACA;MACE;MACA;MACA;QACE;QACA;UACE;UACA;UACA;QACF;MACF;QACE;QACA;UACE;QACF;UACE;QACF;MACF;MACA;IACF;IACA;MACE;MACA;MACA;MACA;IACF;EACF;;EAEA;MACI;;EAEJ;IACE;IACA;;IAEA;IACA;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;MACE;MACA;MACA;;MAEA;MACA;MACA;MACA;MACA;MACA;;MAEA;IACF;;IAEA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;EACD;;EAEA;EACA;EACA;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;EACF;;EAEA;EACA;EACA;EACA;EACA;EACA;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;;IAEA;MACE;QACE;gCACwB;MAC1B;QACE;UACE;gCACsB;;UAEtB;UACA;UACA;UACA;UACA;YACE;cACE;cACA;UACJ;QACF;MACF;IACF;MACE;QACE;QACA;QACA;;QAEA;UACE;UACA;UACA;YACE;YACA;YACA;YACA;YACA;cACE;YACF;UACF;QACF;MACF;MACA;IACF;EACF;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;MACE;MACA;IACF;IACA;IACA;EACF;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;MACA;MACA;IACF;IACA;EACF;;AAEF;;AAEA;EACE;MACI;QACE;MACF;AACN;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;SACA;SACA;;SAEA;SACA;WACE;WACA;WACA;SACF;;SAEA;SACA;WACE;WACA;WACA;SACF;OACF;KACF;KACA;OACE;SACE;WACE;WACA;WACA;aACE;eACE;aACF;aACA;WACF;SACF;KACJ;KACA;OACE;SACE;OACF;KACF;GACF;CACF;AACD;;EAEE;IACE;;IAEA;MACE;QACE;MACF;;MAEA;UACI;UACA;UACA;UACA;UACA;UACA;;MAEJ;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;;QAEE;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;UACE;YACE;;YAEA;UACF;;UAEA;UACA;UACA;;UAEA;YACE;UACF;;UAEA;QACF;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;UACE;YACE;;YAEA;;YAEA;UACF;;UAEA;QACF;;;QAGA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;UACE;YACE;;YAEA;;YAEA;YACA;YACA;;YAEA;UACF;;UAEA;UACA;QACF;;;QAGA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;QACD;UACE;UACA;UACA;UACA;QACF;;;QAGA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;UACE;UACA;UACA;UACA;QACF;;;QAGA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;UACE;QACF;MACF;;;MAGA;OACC;OACA;MACD;QACE;UACE;YACE;UACF;YACE;UACF;;UAEA;UACA;UACA;UACA;QACF;MACF;;;MAGA;OACC;OACA;MACD;QACE;UACE;UACA;QACF;MACF;IACF;;;EAGF;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;IACC;MACE;MACA;QACE;MACF;MACA;IACF;;;EAGF;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;IACC;MACE;IACF;;;IAGA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;IACC;MACE;QACE;QACA;QACA;UACE;UACA;YACE;cACE;iBACG;gBACD;cACF;cACA;gBACE;gBACA;gBACA;;gBAEA;gBACA;gBACA;gBACA;gBACA;cACF;YACF;UACF;QACF;MACF;MACA;QACE;QACA;MACF;IACF;IACA;MACE;MACA;MACA;IACF;GACD;GACA;KACE;OACE;OACA;OACA;OACA;OACA;OACA;OACA;KACF;GACF;CACF;;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;;AAEA;CACC;CACA;CACA;CACA;CACA;AACD;AACA;EACE;MACI;MACA;MACA;MACA;;EAEJ;EACA;EACA;EACA;;EAEA;IACE;;IAEA;;IAEA;MACE;;MAEA;QACE;YACI;YACA;YACA;MACN;;MAEA;QACE;QACA;QACA;MACF;IACF;;IAEA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;IACC;IACA;MACE;MACA;QACE;QACA;UACE;YACE;YACA;cACE;gBACE;gBACA;kBACE;gBACF;kBACE;gBACF;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;kBACE;gBACF;gBACA;cACF;gBACE;cACF;YACF;YACA;UACF;MACJ;MACA;IACF;MACE;IACF;IACA;EACF;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;MACE;IACF;EACF;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACA;IACE;MACE;MACA;IACF;IACA;EACF;;EAEA;YACU;YACA;IACR;aACS;;IAET;MACE;QACE;QACA;;QAEA;UACE;UACA;QACF;MACF;QACE;MACF;;MAEA;IACF;;IAEA;MACE;;;MAGA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;UACE;QACF;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;UACE;QACF;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;UACE;QACF;;QAEA;QACA;UACE;QACF;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;QACA;;QAEA;YACI;YACA;YACA;YACA;YACA;;QAEJ;UACE;UACA;QACF;UACE;UACA;QACF;;QAEA;;QAEA;QACA;UACE;QACF;UACE;UACA;YACE;UACF;QACF;;QAEA;;QAEA;QACA;YACI;UACF;QACF;;QAEA;UACE;YACE;UACF;YACE;UACF;QACF;;QAEA;QACA;QACA;UACE;YACE;UACF;YACE;UACF;QACF;MACF;;;MAGA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;gBACS;OACT;OACA;OACA;MACD;QACE;YACI;YACA;;QAEJ;QACA;UACE;YACE;YACA;UACF;QACF;;QAEA;UACE;QACF;MACF;IACF;;;IAGA;MACE;QACE;MACF;QACE;QACA;MACF;IACF;;;IAGA;QACI;QACA;YACI;YACA;cACE;QACN;QACA;;IAEJ;MACE;;MAEA;QACE;MACF;QACE;MACF;;MAEA;IACF;;IAEA;MACE;IACF;;IAEA;MACE;MACA;IACF;;IAEA;MACE;IACF;;IAEA;;IAEA;;IAEA;wBACoB;MAClB;QACE;QACA;QACA;MACF;MACA;MACA;MACA;QACE;UACE;QACF;MACF;MACA;cACQ;2BACa;MACrB;MACA;MACA;MACA;MACA;QACE;QACA;UACE;QACF;QACA;UACE;YACE;UACF;QACF;QACA;QACA;QACA;;QAEA;QACA;QACA;UACE;UACA;;QAEF;UACE;YACE;UACF;QACF;;QAEA;;QAEA;QACA;QACA;MACF;IACF;;IAEA;MACE;MACA;MACA;QACE;MACF;QACE;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;4BACwB;MACtB;UACI;;MAEJ;QACE;;QAEA;QACA;wCACgC;;QAEhC;YACI;sCAC0B;YAC1B;;QAEJ;UACE;QACF;;QAEA;sBACc;sBACA;YACV;YACA;iBACK;kBACC;qBACG;;QAEb;UACE;UACA;UACA;QACF;;QAEA;QACA;MACF;;MAEA;MACA;;MAEA;QACE;QACA;;;QAGA;UACE;UACA;UACA;UACA;;UAEA;UACA;YACE;YACA;UACF;QACF;UACE;QACF;;QAEA;UACE;UACA;UACA;;UAEA;YACE;cACE;cACA;YACF;cACE;YACF;;YAEA;cACE;kBACI;kBACA;;YAEN;cACE;;YAEF;cACE;;YAEF;cACE;YACF;;YAEA;;UAEF;YACE;UACF;QACF;MACF;IACF;;IAEA;;MAEE;QACE;;QAEA;UACE;UACA;UACA;QACF;;QAEA;QACA;UACE;QACF;QACA;MACF;;MAEA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;QACE;UACE;UACA;cACI;;UAEJ;UACA;mBACS;YACP;YACA;;YAEA;YACA;cACE;cACA;;cAEA;cACA;cACA;gBACE;cACF;;cAEA;cACA;gBACE;kBACE;kBACA;kBACA;gBACF;cACF;;cAEA;cACA;cACA;kBACI;kBACA;oBACE;kBACF;cACJ;cACA;cACA;4BACc;YAChB;UACF;;UAEA;UACA;UACA;YACE;cACE;cACA;gBACE;cACF;cACA;YACF;UACF;UACA;QACF;UACE;UACA;QACF;UACE;YACE;YACA;cACE;cACA;gBACE;cACF;YACF;UACF;YACE;YACA;YACA;UACF;UACA;MACJ;;MAEA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;QACE;QACA;UACE;YACE;sBACU;sBACA;UACZ;UACA;YACE;YACA;UACF;UACA;UACA;QACF;MACF;QACE;MACF;;MAEA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;mCAC+B;mCACA;MAC7B;;MAEA;UACI;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;MAEJ;MACA;QACE;QACA;QACA;;QAEA;QACA;UACE;QACF;QACA;;QAEA;UACE;QACF;;QAEA;;UAEE;UACA;UACA;YACE;cACE;cACA;cACA;gCACkB;cAClB;YACF;cACE;cACA;cACA;gCACkB;YACpB;UACF;;UAEA;QACF;;QAEA;;QAEA;UACE;UACA;UACA;cACI;UACJ;QACF;;QAEA;UACE;;UAEA;UACA;UACA;UACA;YACE;YACA;UACF;;UAEA;YACE;YACA;YACA;YACA;gBACI;8CAC8B;YAClC;YACA;;YAEA;wCAC4B;0CACE;0CACA;0CACA;0CACA;0CACA;0CACA;0CACA;0CACA;wCACF;UAC9B;YACE;YACA;YACA;UACF;QACF;;QAEA;UACE;UACA;UACA;;UAEA;cACI;cACA;;UAEJ;;UAEA;YACE;YACA;cACE;YACF;cACE;YACF;YACA;;YAEA;cACE;kBACI;kBACA;YACN;;YAEA;;YAEA;;YAEA;YACA;YACA;YACA;YACA;YACA;YACA;;YAEA;cACE;YACF;YACA;YACA;;YAEA;UACF;YACE;UACF;QACF;;QAEA;UACE;UACA;UACA;;UAEA;YACE;UACF;;UAEA;cACI;gBACE;gBACA;gBACA;gBACA;cACF;UACJ;QACF;UACE;YACE;YACA;cACE;YACF;cACE;YACF;UACF;YACE;UACF;QACF;;QAEA;UACE;UACA;QACF;;MAEF;;MAEA;MACA;MACA;MACA;MACA;;MAEA;;MAEA;MACA;;MAEA;;MAEA;QACE;UACE;UACA;UACA;UACA;YACE;UACF;UACA;QACF;QACA;UACE;UACA;UACA;UACA;YACE;UACF;UACA;QACF;MACF;;;MAGA;QACE;QACA;UACE;YACE;YACA;cACE;YACF;YACA;UACF;UACA;;UAEA;YACE;cACE;YACF;UACF;UACA;;UAEA;YACE;gBACI;gBACA;UACN;UACA;QACF;UACE;UACA;YACE;UACF;QACF;QACA;MACF;;;MAGA;QACE;YACI;;QAEJ;UACE;UACA;QACF;UACE;UACA;QACF;;QAEA;UACE;QACF;;QAEA;QACA;UACE;UACA;UACA;UACA;YACE;cACE;cACA;cACA;cACA;YACF;;YAEA;YACA;cACE;YACF;;YAEA;;YAEA;YACA;YACA;YACA;YACA;YACA;YACA;cACE;YACF;;YAEA;UACF;QACF;;QAEA;UACE;;UAEA;cACI;UACJ;;UAEA;UACA;UACA;cACI;YACF;UACF;;UAEA;YACE;gBACI;gBACA;gBACA;gBACA;;YAEJ;;cAEE;gBACE;kBACE;gBACF;gBACA;gBACA;kBACE;kBACA;kBACA;gBACF;gBACA;;cAEF;gBACE;kBACE;gBACF;gBACA;gBACA;kBACE;gBACF;kBACE;gBACF;gBACA;kBACE;kBACA;kBACA;sBACI;sBACA;gBACN;gBACA;gBACA;kBACE;oBACE;oBACA;sBACE;sBACA;oBACF;sBACE;sBACA;oBACF;kBACF;kBACA;gBACF;gBACA;gBACA;gBACA;gBACA;;cAEF;gBACE;gBACA;kBACE;gBACF;gBACA;YACJ;UACF;QACF;QACA;UACE;YACE;UACF;UACA;QACF;;QAEA;QACA;UACE;UACA;cACI;cACA;cACA;cACA;cACA;UACJ;QACF;;QAEA;QACA;QACA;QACA;QACA;UACE;QACF;QACA;;QAEA;QACA;UACE;UACA;cACI;cACA;cACA;cACA;cACA;UACJ;QACF;;QAEA;QACA;QACA;UACE;;UAEA;UACA;YACE;YACA;YACA;UACF;;UAEA;YACE;UACF;UACA;YACE;UACF;UACA;QACF;MACF;IACF;;IAEA;MACE;MACA;QACE;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;0BACsB;MACpB;MACA;MACA;QACE;YACI;UACF;YACE;YACA;iBACK;cACH;gBACE;cACF;cACA;cACA;YACF;UACF;QACF;MACF;MACA;IACF;;;IAGA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;YACI;UACF;UACA;YACE;UACF;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;;MAEJ;MACA;QACE;UACE;YACE;UACF;UACA;QACF;MACF;;MAEA;MACA;QACE;UACE;UACA;QACF;UACE;UACA;UACA;UACA;UACA;QACF;UACE;UACA;QACF;MACF;IACF;;;IAGA;QACI;MACF;UACI;UACA;UACA;UACA;UACA;UACA;YACE;UACF;UACA;cACI;cACA;UACJ;;MAEJ;;MAEA;QACE;UACE;;UAEA;;UAEA;YACE;cACE;YACF;cACE;YACF;YACA;;YAEA;cACE;kBACI;kBACA;YACN;;YAEA;YACA;YACA;;YAEA;cACE;YACF;YACA;YACA;UACF;YACE;YACA;UACF;;UAEA;;UAEA;cACI;cACA;UACJ;YACE;cACE;YACF;UACF;UACA;;UAEA;YACE;gBACI;gBACA;gBACA;gBACA;;YAEJ;cACE;;cAEA;kBACI;gBACF;gBACA;cACF;cACA;;cAEA;cACA;YACF;YACA;cACE;YACF;cACE;YACF;YACA;cACE;UACJ;UACA;QACF;;MAEF;QACE;QACA;UACE;UACA;UACA;UACA;QACF;UACE;YACE;UACF;UACA;QACF;MACF;IACF;;;IAGA;KACC;KACA;IACD;MACE;MACA;MACA;MACA;IACF;;;IAGA;MACE;QACE;YACI;MACN;IACF;;;IAGA;MACE;MACA;QACE;UACE;UACA;YACE;gBACI;;YAEJ;YACA;YACA;;YAEA;cACE;cACA;cACA;cACA;gBACE;cACF;YACF;UACF;QACF;MACF;IACF;;;IAGA;MACE;MACA;MACA;MACA;QACE;QACA;QACA;MACF;QACE;MACF;IACF;;;IAGA;MACE;QACE;MACF;MACA;MACA;MACA;UACI;UACA;4BACkB;QACpB;MACF;IACF;;;IAGA;MACE;;MAEA;MACA;;;MAGA;QACE;YACI;YACA;MACN;;MAEA;QACE;QACA;YACI;cACE;gBACE;;gBAEA;kBACE;sBACI;0BACI;gBACV;;gBAEA;gBACA;gBACA;oBACI;;gBAEJ;gBACA;gBACA;;gBAEA;gBACA;gBACA;gBACA;;gBAEA;gBACA;kBACE;oBACE;oBACA;oBACA;oBACA;oBACA;oBACA;oBACA;sBACE;oBACF;sBACE;oBACF;kBACF;cACJ;YACF;UACF;MACJ;IACF;;;IAGA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;QACE;UACE;YACE;YACA;qBACS;iBACJ;cACH;gBACE;cACF;gBACE;cACF;YACF;YACA;;YAEA;YACA;YACA;YACA;cACE;YACF;YACA;UACF;QACF;MACF;;MAEA;QACE;MACF;;MAEA;MACA;MACA;;MAEA;MACA;MACA;MACA;;MAEA;MACA;MACA;MACA;QACE;MACF;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;QACA;MACF;;MAEA;MACA;IACF;;;IAGA;MACE;IACF;;;IAGA;MACE;QACE;MACF;QACE;MACF;IACF;EACF;AACF;;AAEA;AACA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;;AAID;CACC;CACA;;AAED;EACE;EACA;EACA;EACA;AACF;;AAEA;EACE;EACA;EACA;EACA;EACA;AACF;;AAEA;EACE;MACI;MACA;;EAEJ;EACA;IACE;IACA;MACE;IACF;IACA;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;MACI;MACA;;;EAGJ;GACC;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;MACE;IACF;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;EACD;IACE;EACF;;;EAGA;;IAEE;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;QACE;MACF;;MAEA;QACE;QACA;QACA;QACA;YACI;YACA;gBACI;;QAER;MACF;;MAEA;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;UACE;QACF;;QAEA;UACE;QACF;;QAEA;UACE;UACA;QACF;UACE;UACA;QACF;MACF;;MAEA;;MAEA;QACE;MACF;;MAEA;IACF;;IAEA;MACE;QACE;UACE;UACA;MACJ;;MAEA;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;SACA;OACF;KACF;KACA;OACE;SACE;WACE;WACA;SACF;KACJ;GACF;CACF;AACD;EACE;IACE;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;MACE;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;;EAEA;IACE;IACA;IACA;;IAEA;MACE;IACF;EACF;;EAEA;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;IACE;;IAEA;MACE;IACF;;IAEA;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;;EAEF;IACE;EACF;;EAEA;AACF;;;AAGA;EACE;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;AACD;EACE;MACI;MACA;MACA;;EAEJ;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;MACE;QACE;QACA;QACA;UACE;MACJ;MACA;IACF;;IAEA;IACA;MACE;IACF;;IAEA;IACA;MACE;QACE;MACF;MACA;MACA;MACA;IACF;;IAEA;IACA;EACF;;EAEA;EACA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;IACA;EACF;;EAEA;GACC;GACA;GACA;EACD;;EAEA;MACI;;IAEF;;IAEA;KACC;KACA;KACA;KACA;IACD;;IAEA;MACE;UACI;IACN;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;AACL;AACA;EACE;IACE;MACE;MACA;IACF;IACA;IACA;IACA;IACA;MACE;oBACc;MACd;IACF;IACA;MACE;QACE;MACF;IACF;IACA;EACF;AACF;AACA;EACE;IACE;MACE;QACE;QACA;;QAEA;UACE;UACA;;UAEA;YACE;cACE;cACA;YACF;YACA;cACE;cACA;UACJ;QACF;;QAEA;UACE;UACA;QACF;MACF;AACN;AACA;EACE;AACF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;;EAEA;IACE;IACA;IACA;IACA;EACF;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;;EAEE;MACI;IACF;IACA;IACA;IACA;EACF;AACF;AACA;KACK;IACD;MACE;QACE;QACA;QACA;MACF;MACA;;MAEA;MACA;MACA;;MAEA;QACE;QACA;;QAEA;QACA;UACE;YACE;gBACI;YACJ;UACF;QACF;;QAEA;UACE;QACF;;QAEA;QACA;MACF;;MAEA;MACA;;MAEA;MACA;QACE;UACE;QACF;QACA;UACE;QACF;MACF;;MAEA;QACE;QACA;;QAEA;MACF;;MAEA;QACE;UACE;QACF;QACA;MACF;;MAEA;QACE;UACE;QACF;QACA;MACF;;MAEA;;MAEA;QACE;QACA;UACE;QACF;QACA;UACE;UACA;MACJ;;MAEA;QACE;YACI;YACA;;QAEJ;;QAEA;QACA;QACA;UACE;;UAEA;YACE;cACE;YACF;UACF;;UAEA;QACF;;QAEA;QACA;QACA;;QAEA;UACE;;UAEA;YACE;cACE;cACA;gBACE;cACF;gBACE;cACF;YACF;UACF;QACF;MACF;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;KAEA;MACC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;;QAEI;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;IACL;;;IAGA;;;IAGA;MACE;QACE;UACE;YACE;YACA;UACF;QACF;MACF;IACF;;;IAGA;MACE;QACE;UACE;YACE;YACA;YACA;UACF;QACF;MACF;IACF;;;IAGA;KACC;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;UACA;;MAEJ;MACA;;;MAGA;UACI;QACF;cACM;cACA;MACR;;MAEA;QACE;QACA;UACE;YACE;YACA;YACA;UACF;YACE;YACA;cACE;YACF;cACE;YACF;UACF;QACF;UACE;UACA;QACF;MACF;;;MAGA;MACA;MACA;QACE;YACI;YACA;QACJ;UACE;QACF;;QAEA;YACI;MACN;;MAEA;;;MAGA;OACC;OACA;OACA;OACA;OACA;MACD;QACE;UACE;YACE;UACF;YACE;YACA;UACF;QACF;;QAEA;UACE;QACF;;QAEA;UACE;QACF;UACE;UACA;QACF;MACF;;;MAGA;OACC;OACA;MACD;QACE;QACA;;QAEA;UACE;UACA;UACA;UACA;UACA;QACF;MACF;;;MAGA;QACE;QACA;MACF;IACF;;;IAGA;MACE;MACA;MACA;QACE;QACA;;QAEA;UACE;YACE;cACE;YACF;cACE;YACF;UACF;UACA;qBACW;QACb;MACF;MACA;QACE;MACF;MACA;IACF;EACF;AACF;;AAEA;IACI;IACA;IACA;IACA;MACE;MACA;IACF;MACE;IACF;;IAEA;AACJ;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;EACF;AACF;;AAEA;EACE;;EAEA;EACA;IACE;IACA;IACA;;IAEA;MACE;MACA;QACE;QACA;MACF;;MAEA;UACI;QACF;QACA;MACF;IACF;;MAEE;;MAEA;MACA;QACE;YACI;QACJ;MACF;;MAEA;MACA;MACA;MACA;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;UACE;cACI;cACA;;UAEJ;YACE;;YAEA;YACA;YACA;UACF;;UAEA;UACA;UACA;YACE;UACF;;UAEA;cACI;cACA;cACA;cACA;QACN;MACF;;MAEA;QACE;MACF;;MAEA;QACE;UACE;QACF;UACE;UACA;UACA;UACA;UACA;UACA;UACA;UACA;YACE;UACF;QACF;MACF;;MAEA;IACF;;IAEA;MACE;IACF;MACE;IACF;;;IAGA;MACE;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;;MAEA;MACA;MACA;MACA;QACE;MACF;;MAEA;MACA;MACA;;MAEA;MACA;IACF;EACF;;EAEA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;MACE;MACA;MACA;MACA;MACA;MACA;;MAEA;QACE;UACE;QACF;QACA;QACA;MACF;;MAEA;QACE;MACF;IACF;;IAEA;IACA;IACA;IACA;EACF;AACF;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;AACA;EACE;;EAEA;IACE;IACA;EACF;;;EAGA;MACI;EACJ;AACF;AACA;IACI;AACJ;AACA;AACA;EACE;IACE;EACF;AACF;AACA;CACC;AACD;EACE;EACA;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;MACE;IACF;EACF;;;EAGA;IACE;QACI;QACA;QACA;;IAEJ;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;UACI;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;MAEJ;QACE;aACK;UACH;YACE;UACF;UACA;UACA;UACA;UACA;UACA;UACA;QACF;UACE;UACA;YACE;UACF;UACA;QACF;MACF;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;UACI;cACI;cACA;cACA;MACR;;MAEA;QACE;UACE;YACE;YACA;UACF;UACA;QACF;;QAEA;UACE;YACE;YACA;QACJ;;QAEA;UACE;YACE;UACF;UACA;YACE;cACE;YACF;YACA;cACE;cACA;YACF;YACA;cACE;YACF;UACF;;UAEA;QACF;;QAEA;YACI;YACA;YACA;;YAEA;cACE;gBACE;cACF;;cAEA;YACF;cACE;kBACI;cACJ;YACF;;UAEF;UACA;UACA;UACA;UACA;YACE;YACA;cACE;cACA;gBACE;cACF;cACA;YACF;UACF;QACF;MACF;;MAEA;QACE;UACE;MACJ;;MAEA;QACE;UACE;QACF;UACE;YACE;UACF;QACF;MACF;IACF;;;IAGA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;;IAGA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;EACF;AACF;;AAEA;EACE;OACK;IACH;;;KAGC;MACC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;MACE;UACI;UACA;UACA;UACA;UACA;;MAEJ;;MAEA;;MAEA;QACE;;QAEA;UACE;UACA;UACA;QACF;;QAEA;;MAEF;;MAEA;;MAEA;IACF;;;KAGC;MACC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;MACE;QACE;QACA;QACA;QACA;MACF;MACA;IACF;;IAEA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;MACE;;MAEA;QACE;QACA;QACA;UACE;YACE;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACF;YACE;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACF;QACF;QACA;MACF;;MAEA;QACE;YACI;YACA;QACJ;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;UACE;QACF;QACA;MACF;IACF;EACF;AACF;;AAEA;IACI;AACJ;;;AAGA;CACC;CACA;CACA;CACA;CACA;AACD;EACE;MACI;;EAEJ;IACE;EACF;;EAEA;AACF;;AAEA;EACE;;EAEA;EACA;EACA;AACF;;;AAGA;EACE;EACA;IACE;EACF;EACA;EACA;MACI;EACJ;EACA;;EAEA;EACA;IACE;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;EACF;AACF;;;AAGA;EACE;EACA;AACF;;;AAGA;EACE;AACF;;AAEA;AACA;EACE;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;EACA;EACA;;;EAGA;GACC;GACA;GACA;GACA;EACD;IACE;IACA;MACE;UACI;IACN;;IAEA;;IAEA;MACE;IACF;;IAEA;EACF;;EAEA;GACC;GACA;GACA;EACD;IACE;QACI;;IAEJ;IACA;EACF;;EAEA;IACE;MACE;MACA;MACA;MACA;IACF;IACA;IACA;;IAEA;MACE;MACA;QACE;MACF;QACE;MACF;IACF;MACE;IACF;MACE;IACF;IACA;MACE;IACF;IACA;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;;;EAGA;GACC;GACA;GACA;GACA;EACD;IACE;IACA;QACI;QACA;UACE;UACA;;IAEN;MACE;UACI;IACN;IACA;;IAEA;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;MACA;MACA;;MAEA;;MAEA;MACA;QACE;MACF;;MAEA;MACA;QACE;MACF;;MAEA;MACA;IACF;EACF;;EAEA;GACC;GACA;GACA;EACD;IACE;QACI;;IAEJ;IACA;EACF;;EAEA;IACE;MACE;MACA;IACF;IACA;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;;EAEA;;EAEA;IACE;MACE;MACA;MACA;MACA;IACF;;IAEA;IACA;;IAEA;MACE;IACF;MACE;IACF;MACE;IACF;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;QACI;;IAEJ;IACA;IACA;EACF;;AAEF;;;AAGA;EACE;EACA;;EAEA;GACC;GACA;GACA;EACD;;EAEA;GACC;GACA;GACA;EACD;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;;IAEF;IACA;IACA;IACA;;IAEA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;QACE;MACF;QACE;UACE;UACA;QACF;UACE;UACA;YACE;UACF;;UAEA;QACF;UACE;cACI;QACN;QACA;MACF;QACE;UACE;QACF;UACE;QACF;IACJ;;IAEA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;EACF;AACF;;AAEA;EACE;IACE;EACF;AACF;;;AAGA;EACE;IACE;MACE;;IAEF;IACA;;IAEA;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;AACD;EACE;MACI;QACE;QACA;MACF;;EAEJ;GACC;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;MACE;UACI;UACA;MACJ;UACI;UACA;MACJ;IACF;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;;EAED;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;;EAED;MACI;IACF;QACI;QACA;QACA;QACA;;IAEJ;MACE;QACE;UACE;MACJ;MACA;MACA;IACF;MACE;MACA;IACF;IACA;IACA;;IAEA;;IAEA;MACE;MACA;;MAEA;;MAEA;;MAEA;MACA;QACE;QACA;MACF;;MAEA;MACA;MACA;MACA;;MAEA;QACE;QACA;QACA;MACF;;MAEA;MACA;;MAEA;QACE;UACE;UACA;UACA;YACE;YACA;YACA;UACF;QACF;MACF;IACF;;;IAGA;IACA;MACE;IACF;;IAEA;IACA;MACE;QACE;UACE;;UAEA;UACA;oCAC0B;YACxB;YACA;UACF;YACE;UACF;QACF;QACA;MACF;IACF;;IAEA;IACA;IACA;MACE;MACA;;MAEA;QACE;QACA;UACE;cACI;YACF;UACF;YACE;YACA;UACF;QACF;MACF;MACA;;MAEA;IACF;;IAEA;;IAEA;MACE;IACF;AACJ;AACA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;WACE;WACA;SACF;KACJ;KACA;OACE;SACE;SACA;SACA;SACA;SACA;SACA;SACA;OACF;KACF;GACF;CACF;;AAED;CACC;CACA;CACA;CACA;CACA;AACD;EACE;MACI;;EAEJ;GACC;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;IACA;MACE;IACF;EACF;;EAEA;IACE;MACE;OACC;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;MACD;QACE;;QAEA;UACE;YACE;UACF;QACF;MACF;IACF;;IAEA;MACE;QACE;UACE;cACI;cACA;QACN;UACE;QACF;MACF;MACA;IACF;;IAEA;MACE;UACI;UACA;;MAEJ;MACA;MACA;QACE;MACF;;MAEA;QACE;UACE;UACA;YACE;UACF;UACA;QACF;MACF;;MAEA;MACA;MACA;QACE;MACF;IACF;EACF;AACF;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;EACE;MACI;MACA;IACF;QACI;QACA;EACN;EACA;AACF;;AAEA;EACE;EACA;IACE;MACE;UACI;UACA;IACN;QACI;MACF;UACI;UACA;IACN;QACI;MACF;UACI;UACA;IACN;QACI;MACF;UACI;UACA;IACN;EACF;EACA;AACF;;AAEA;AACA;AACA;;AAEA;EACE;IACE;MACE;QACE;QACA;IACJ;MACE;QACE;QACA;IACJ;EACF;AACF;;AAEA;AACA;AACA;EACE;EACA;EACA;EACA;AACF;EACE;EACA;AACF;;AAEA;AACA;IACI;IACA;MACE;MACA;QACE;UACE;QACF;QACA;MACF;MACA;IACF;UACM;UACA;QACF;IACJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;AACJ;AACA;AACA;;;AAGA;;;AAGA;CACC;CACA;AACD;EACE;AACF;;AAEA;EACE;;EAEA;IACE;IACA;IACA;IACA;;IAEA;MACE;MACA;QACE;MACF;QACE;MACF;QACE;MACF;QACE;UACE;UACA;QACF;QACA;MACF;QACE;MACF;QACE;QACA;QACA;QACA;QACA;QACA;UACE;UACA;QACF;UACE;UACA;QACF;UACE;YACE;YACA;YACA;UACF;UACA;QACF;UACE;QACF;MACF;IACF;IACA;EACF;;EAEA;IACE;EACF;;EAEA;IACE;IACA;EACF;;EAEA;IACE;EACF;;EAEA;IACE;IACA;YACQ;EACV;;EAEA;IACE;YACQ;YACA;EACV;;EAEA;IACE;EACF;;EAEA;IACE;IACA;YACQ;YACA;IACR;QACI;EACN;;EAEA;IACE;IACA;IACA;MACE;MACA;QACE;MACF;QACE;QACA;UACE;QACF;YACI;YACA;UACF;QACF;YACI;YACA;UACF;QACF;UACE;QACF;MACF;MACA;IACF;IACA;IACA;MACE;MACA;MACA;MACA;IACF;EACF;;EAEA;IACE;;IAEA;IACA;;IAEA;;IAEA;MACE;MACA;QACE;QACA;MACF;QACE;MACF;MACA;IACF;;IAEA;IACA;MACE;MACA;MACA;MACA;QACE;MACF;IACF;;IAEA;IACA;MACE;MACA;QACE;QACA;UACE;UACA;UACA;UACA;QACF;QACA;UACE;QACF;UACE;QACF;MACF;IACF;;IAEA;MACE;MACA;MACA;IACF;;IAEA;MACE;QACE;QACA;MACF;MACA;QACE;QACA;MACF;IACF;EACF;;EAEA;IACE;IACA;IACA;IACA;IACA;IACA;MACE;MACA;MACA;QACE;UACE;UACA;YACE;UACF;UACA;QACF;UACE;UACA;QACF;QACA;MACF;QACE;MACF;QACE;QACA;UACE;UACA;UACA;UACA;UACA;QACF;QACA;MACF;QACE;MACF;MACA;IACF;IACA;EACF;AACF;;;AAGA;EACE;AACF;;AAEA;CACC;CACA;AACD;EACE;EACA;EACA;AACF;;AAEA;EACE;AACF;EACE;EACA;AACF;;AAEA;EACE;;EAEA;IACE;IACA;;IAEA;;IAEA;MACE;IACF;;IAEA;IACA;;IAEA;EACF;;EAEA;IACE;IACA;MACE;MACA;IACF;MACE;IACF;MACE;IACF;MACE;MACA;MACA;QACE;MACF;MACA;QACE;QACA;MACF;IACF;;IAEA;IACA;MACE;QACE;QACA;MACF;QACE;QACA;MACF;QACE;QACA;MACF;QACE;MACF;IACF;IACA;EACF;;EAEA;IACE;QACI;UACE;EACR;;EAEA;IACE;MACE;IACF;EACF;;EAEA;IACE;MACE;MACA;MACA;UACI;QACF;MACF;IACF;IACA;EACF;;EAEA;IACE;IACA;MACE;MACA;IACF;IACA;EACF;;EAEA;IACE;MACE;IACF;EACF;;EAEA;IACE;MACE;IACF;MACE;MACA;IACF;EACF;;EAEA;IACE;MACE;IACF;MACE;MACA;IACF;EACF;;EAEA;IACE;IACA;MACE;QACE;MACF;QACE;QACA;QACA;YACI;YACA;gBACI;gBACA;kBACE;gBACF;gBACA;cACF;MACR;IACF;EACF;;EAEA;IACE;IACA;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;IACA;IACA;;IAEA;MACE;MACA;MACA;QACE;MACF;IACF;;IAEA;;IAEA;MACE;MACA;QACE;;QAEA;QACA;UACE;QACF;;QAEA;MACF;;MAEA;IACF;MACE;MACA;IACF;EACF;;EAEA;IACE;EACF;;EAEA;IACE;IACA;IACA;IACA;MACE;QACE;YACI;MACN;MACA;MACA;QACE;MACF;QACE;MACF;IACF;IACA;EACF;;EAEA;IACE;IACA;IACA;IACA;MACE;MACA;QACE;;QAEA;UACE;QACF;UACE;QACF;;MAEF;QACE;MACF;IACF;;IAEA;EACF;;EAEA;IACE;IACA;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;MACE;IACF;MACE;IACF;MACE;IACF;MACE;IACF;EACF;;EAEA;IACE;IACA;IACA;;IAEA;MACE;IACF;MACE;QACE;QACA;QACA;MACF;IACF;EACF;;EAEA;IACE;;IAEA;IACA;;IAEA;MACE;UACI;UACA;;MAEJ;MACA;MACA;MACA;IACF;MACE;QACE;QACA;QACA;QACA;QACA;MACF;IACF;EACF;;EAEA;IACE;IACA;MACE;QACE;MACF;IACF;IACA;;IAEA;IACA;IACA;;IAEA;MACE;MACA;;MAEA;QACE;QACA;UACE;QACF;MACF;;MAEA;MACA;;MAEA;MACA;YACM;YACA;;MAEN;IACF;EACF;;EAEA;EACA;IACE;IACA;MACE;QACE;UACE;UACA;QACF;QACA;QACA;MACF;IACF;IACA;;IAEA;MACE;MACA;QACE;MACF;MACA;IACF;MACE;MACA;MACA;IACF;EACF;;EAEA;IACE;IACA;MACE;QACE;UACE;UACA;QACF;QACA;QACA;QACA;QACA;QACA;MACF;IACF;IACA;;IAEA;MACE;MACA;QACE;MACF;MACA;IACF;MACE;MACA;MACA;IACF;EACF;AACF;;;AAGA;AACA;AACA;;AAEA;EACE;;EAEA;EACA;IACE;IACA;IACA;MACE;MACA;IACF;IACA;EACF;EACA;EACA;EACA;EACA;AACF;;AAEA;;AAEA;CACC;CACA;CACA;CACA;AACD;EACE;EACA;EACA;EACA;EACA;;EAEA;IACE;;IAEA;IACA;;IAEA;IACA;IACA;;IAEA;IACA;IACA;;IAEA;IACA;IACA;;IAEA;IACA;IACA;;IAEA;EACF;AACF;;AAEA;EACE;;EAEA;;EAEA;MACI;;EAEJ;EACA;IACE;MACE;IACF;MACE;QACE;QACA;UACE;gCACsB;;UAEtB;UACA;QACF;QACA;MACF;IACF;EACF;IACE;IACA;MACE;MACA;cACQ;sBACQ;sBACA;sBACA;sBACA;IAClB;IACA;;IAEA;IACA;IACA;IACA;;IAEA;EACF;;EAEA;EACA;IACE;EACF;EACA;EACA;AACF;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;IACE;EACF;;;EAGA;IACE;;IAEA;MACE;;MAEA;QACE;UACE;QACF;QACA;QACA;QACA;MACF;;MAEA;IACF;;IAEA;MACE;;MAEA;QACE;UACE;;UAEA;;UAEA;YACE;cACE;cACA;YACF;;YAEA;YACA;YACA;;YAEA;cACE;YACF;cACE;cACA;cACA;cACA;gBACE;YACJ;cACE;YACF;;YAEA;UACF;UACA;;QAEF;UACE;;QAEF;UACE;MACJ;IACF;;IAEA;MACE;QACE;QACA;UACE;YACE;UACF;YACE;UACF;QACF;MACF;;MAEA;IACF;;IAEA;;MAEE;QACE;MACF;;MAEA;;QAEE;QACA;QACA;QACA;;QAEA;UACE;UACA;QACF;;QAEA;MACF;;MAEA;MACA;IACF;;IAEA;MACE;oBACc;;MAEd;;MAEA;QACE;QACA;QACA;UACE;UACA;YACE;YACA;UACF;UACA;QACF;MACF;;MAEA;MACA;QACE;MACF;;MAEA;QACE;;QAEA;UACE;UACA;YACE;UACF;QACF;;QAEA;UACE;QACF;;QAEA;MACF;IACF;;IAEA;MACE;MACA;QACE;MACF;QACE;QACA;UACE;QACF;QACA;UACE;YACE;cACE;YACF;UACF;QACF;MACF;IACF;;IAEA;MACE;MACA;QACE;MACF;QACE;UACE;QACF;QACA;UACE;YACE;UACF;QACF;MACF;;MAEA;QACE;QACA;UACE;QACF;QACA;MACF;IACF;;IAEA;MACE;MACA;QACE;MACF;QACE;UACE;QACF;QACA;MACF;IACF;;IAEA;MACE;;MAEA;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;MACA;UACI;QACF;MACF;QACE;QACA;QACA;QACA;MACF;;MAEA;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;EAEE;IACE;MACE;IACF;EACF;AACF;;AAEA;EACE;IACE;MACE;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;IACE;IACA;MACE;QACE;QACA;QACA;MACF;IACF;;IAEA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;MACE;;MAEA;MACA;MACA;;MAEA;IACF;;IAEA;MACE;IACF;;IAEA;MACE;QACE;MACF;QACE;MACF;IACF;EACF;;EAEA;EACA;IACE;MACE;IACF;EACF;;EAEA;IACE;;IAEA;IACA;IACA;IACA;MACE;MACA;MACA;QACE;UACE;QACF;UACE;QACF;UACE;QACF;MACF;QACE;QACA;MACF;IACF;EACF;;EAEA;IACE;IACA;IACA;EACF;;EAEA;IACE;IACA;IACA;IACA;IACA;EACF;;EAEA;IACE;MACE;MACA;QACE;UACE;UACA;UACA;MACJ;MACA;QACE;MACF;;IAEF;;IAEA;MACE;;MAEA;MACA;QACE;QACA;UACE;UACA;QACF;UACE;UACA;UACA;QACF;MACF;QACE;QACA;MACF;IACF;;IAEA;MACE;MACA;IACF;;IAEA;MACE;MACA;MACA;IACF;;IAEA;MACE;;MAEA;QACE;UACE;UACA;YACE;YACA;YACA;cACE;YACF;cACE;YACF;UACF;QACF;MACF;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;EACF;;EAEA;IACE;IACA;MACE;IACF;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;MACE;IACF;MACE;IACF;IACA;MACE;QACE;MACF;QACE;MACF;IACF;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;;;EAGD;IACE;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;;EAED;IACE;QACI;QACA;;IAEJ;MACE;MACA;QACE;QACA;QACA;MACF;QACE;QACA;MACF;IACF;;IAEA;MACE;IACF;;IAEA;EACF;;EAEA;IACE;MACE;IACF;;IAEA;MACE;MACA;IACF;;IAEA;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;;IAEA;EACF;;EAEA;EACA;EACA;EACA;;EAEA;AACF;;AAEA;EACE;IACE;gCAC4B;gCACA;;IAE5B;+BAC2B;+BACA;+BACA;;IAE3B;IACA;MACE;UACI;UACA;YACE;UACF;QACF;MACF;UACI;UACA;YACE;UACF;QACF;;IAEJ;;IAEA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;EACA;EACA;;EAEA;IACE;MACE;IACF;IACA;EACF;;EAEA;MACI;;IAEF;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;SACI;SACA;;SAEA;SACA;SACA;;SAEA;SACA;SACA;KACJ;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;qBACe;qBACA;MACf;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;;KAEA;MACC;MACA;MACA;MACA;MACA;MACA;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;;IAEH;MACE;MACA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;;QAEA;UACE;UACA;UACA;UACA;UACA;QACF;UACE;UACA;UACA;YACE;cACE;kBACI;cACJ;cACA;cACA;cACA;YACF;YACA;UACF;UACA;QACF;QACA;QACA;QACA;QACA;UACE;UACA;QACF;UACE;QACF;QACA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;WACI;WACA;WACA;WACA;;WAEA;WACA;aACE;WACF;WACA;;WAEA;WACA;WACA;;WAEA;WACA;WACA;;WAEA;WACA;WACA;;;;WAIA;WACA;WACA;WACA;WACA;aACE;aACA;aACA;aACA;eACE;iBACE;iBACA;eACF;aACF;WACF;WACA;WACA;;WAEA;WACA;WACA;;WAEA;WACA;WACA;WACA;;OAEJ;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;;QAEA;UACE;QACF;QACA;YACI;YACA;cACE;cACA;cACA;cACA;cACA;YACF;;QAEJ;;QAEA;UACE;QACF;;QAEA;UACE;QACF;QACA;QACA;QACA;;QAEA;UACE;UACA;QACF;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;QACA;QACA;QACA;QACA;;QAEA;UACE;UACA;UACA;YACE;UACF;UACA;YACE;UACF;QACF;;QAEA;UACE;UACA;YACE;YACA;YACA;UACF;QACF;;QAEA;UACE;YACE;YACA;YACA;cACE;cACA;YACF;UACF;UACA;QACF;;QAEA;UACE;;UAEA;YACE;YACA;UACF;YACE;UACF;QACF;;QAEA;UACE;YACE;UACF;QACF;MACF;;;MAGA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;UACG;UACA;;UAEA;YACE;UACF;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;OACH;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;UACE;UACA;;UAEA;YACE;cACE;cACA;YACF;UACF;YACE;cACE;cACA;cACA;cACA;YACF;;YAEA;;YAEA;cACE;cACA;cACA;YACF;YACA;YACA;cACE;cACA;;cAEA;cACA;gBACE;gBACA;cACF;YACF;UACF;YACE;cACE;cACA;cACA;cACA;YACF;YACA;YACA;YACA;cACE;gBACE;gBACA;gBACA;;gBAEA;kBACE;kBACA;oBACE;oBACA;kBACF;gBACF;kBACE;kBACA;kBACA;gBACF;cACF;YACF;YACA;cACE;cACA;cACA;gBACE;kBACE;kBACA;gBACF;cACF;YACF;UACF;UACA;QACF;;QAEA;UACE;YACE;YACA;UACF;YACE;UACF;;UAEA;UACA;YACE;cACE;cACA;YACF;cACE;cACA;gBACE;cACF;YACF;cACE;cACA;gBACE;kBACE;gBACF;cACF;YACF;UACF;QACF;;QAEA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;WACI;WACA;WACA;;WAEA;WACA;aACE;WACF;WACA;;WAEA;WACA;WACA;;WAEA;WACA;WACA;;WAEA;WACA;WACA;OACJ;OACA;OACA;MACD;QACE;YACI;YACA;YACA;YACA;YACA;YACA;YACA;YACA;;QAEJ;QACA;QACA;;QAEA;UACE;UACA;UACA;UACA;QACF;;QAEA;;QAEA;UACE;UACA;;UAEA;YACE;cACE;cACA;YACF;cACE;YACF;YACA;UACF;;UAEA;UACA;YACE;cACE;cACA;cACA;gBACE;kBACE;kBACA;kBACA;kBACA;oBACE;wBACI;4BACI;4BACA;+BACG;sBACT;sBACA;sBACA;sBACA;sBACA;wBACE;wBACA;wBACA;4BACI;4BACA;wBACJ;wBACA;sBACF;oBACF;sBACE;sBACA;sBACA;sBACA;oBACF;kBACF;gBACF;kBACE;gBACF;cACF;YACF;;YAEA;YACA;YACA;YACA;gBACI;cACF;gBACE;cACF;YACF;UACF;;UAEA;;UAEA;YACE;YACA;gBACI;gBACA;gBACA;UACN;;QAEF;;QAEA;;QAEA;UACE;YACE;UACF;YACE;UACF;QACF;MACF;;;MAGA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;;MAED;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;QACA;;QAEA;QACA;QACA;;QAEA;UACE;QACF;;QAEA;QACA;QACA;QACA;QACA;QACA;;;QAGA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;YACI;;QAEJ;QACA;QACA;;QAEA;QACA;QACA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;WACI;WACA;WACA;;WAEA;WACA;OACJ;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;QACA;UACE;YACE;cACE;YACF;UACF;QACF;;QAEA;MACF;;MAEA;QACE;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;WACI;aACE;eACE;aACF;eACE;aACF;eACE;aACF;WACF;OACJ;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;UACE;UACA;QACF;UACE;QACF;UACE;UACA;YACE;UACF;YACE;YACA;UACF;QACF;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;QACA;;QAEA;UACE;QACF;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;UACE;QACF;QACA;;QAEA;QACA;UACE;YACE;UACF;UACA;QACF;;QAEA;QACA;UACE;UACA;QACF;MACF;;;MAGA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;YACI;YACA;YACA;YACA;cACE;cACA;cACA;cACA;gBACE;cACF;cACA;YACF;YACA;YACA;;QAEJ;UACE;UACA;UACA;;YAEE;YACA;cACE;cACA;cACA;cACA;YACF;YACA;cACE;cACA;YACF;cACE;YACF;UACF;UACA;UACA;YACE;YACA;UACF;UACA;UACA;QACF;;QAEA;;QAEA;MACF;;;MAGA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;YACI;YACA;YACA;cACE;cACA;cACA;gBACE;cACF;cACA;YACF;;QAEJ;;QAEA;YACI;;QAEJ;QACA;UACE;UACA;UACA;YACE;YACA;cACE;cACA;cACA;cACA;YACF;;YAEA;cACE;YACF;cACE;YACF;UACF;;UAEA;UACA;UACA;UACA;UACA;cACI;YACF;cACE;YACF;UACF;QACF;;QAEA;QACA;MACF;IACF;;IAEA;;IAEA;;;IAGA;MACE;QACE;MACF;;MAEA;IACF;;IAEA;MACE;IACF;;;IAGA;MACE;QACE;;QAEA;UACE;QACF;MACF;IACF;;IAEA;KACC;KACA;KACA;IACD;;IAEA;MACE;MACA;QACE;UACE;QACF;UACE;QACF;MACF;MACA;IACF;;IAEA;MACE;QACE;UACE;QACF;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;AACD;EACE;IACE;;EAEF;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;IACA;EACF;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;IACA;EACF;;EAEA;IACE;MACE;MACA;MACA;MACA;QACE;QACA;UACE;QACF;MACF;MACA;IACF;EACF;AACF;;AAEA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;AACF;;AAEA;;AAEA;AACA;AACA;AACA;EACE;WACS;AACX;;;AAGA;EACE;IACE;EACF;IACE;IACA;IACA;IACA;IACA;MACE;UACI;IACN;IACA;kBACc;kBACA;IACd;EACF;IACE;IACA;IACA;IACA;EACF;IACE;QACI;EACN;AACF;;;AAGA;EACE;EACA;IACE;MACE;IACF;EACF;EACA;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;EACE;;EAEA;EACA;MACI;;EAEJ;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;;EAED;IACE;MACE;IACF;IACA;EACF;;EAEA;;IAEE;MACE;IACF;;IAEA;MACE;IACF;;;IAGA;MACE;QACE;MACF;QACE;QACA;MACF;IACF;;IAEA;MACE;MACA;MACA;MACA;QACE;UACE;UACA;QACF;MACF;MACA;QACE;QACA;UACE;YACE;YACA;UACF;QACF;MACF;MACA;IACF;;IAEA;MACE;QACE;UACE;QACF;MACF;MACA;QACE;MACF;MACA;QACE;MACF;MACA;QACE;MACF;MACA;IACF;;IAEA;QACI;;IAEJ;IACA;IACA;IACA;IACA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;YACI;YACA;MACN;MACA;QACE;MACF;MACA;MACA;MACA;QACE;YACI;YACA;MACN;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;QACE;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;MACA;MACA;QACE;MACF;MACA;MACA;MACA;MACA;QACE;UACE;QACF;UACE;cACI;cACA;QACN;MACF;QACE;MACF;MACA;IACF;;IAEA;aACS;aACA;EACX;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;AAEA;EACE;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;IACA;EACF;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;;EAED;gBACc;IACZ;IACA;IACA;MACE;QACE;QACA;QACA;IACJ;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;IACA;IACA;IACA;;IAEA;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;MACF;QACE;UACE;QACF;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;;IAED;IACA;QACI;QACA;;IAEJ;MACE;MACA;QACE;MACF;MACA;QACE;MACF;MACA;QACE;MACF;IACF;;IAEA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;QACI;UACE;QACF;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;IAEJ;MACE;QACE;UACE;UACA;UACA;QACF;MACF;;MAEA;QACE;MACF;;MAEA;MACA;;MAEA;QACE;QACA;MACF;IACF;;;IAGA;MACE;MACA;MACA;MACA;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;kBACY;kBACA;MACZ;QACE;QACA;QACA;QACA;;QAEA;UACE;UACA;QACF;;QAEA;MACF;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;EACF;AACF;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;MACE;MACA;;MAEA;QACE;UACE;UACA;YACE;UACF;;UAEA;UACA;UACA;QACF;;MAEF;QACE;QACA;UACE;QACF;QACA;MACF;IACF;;IAEA;;IAEA;EACF;AACF;;AAEA;EACE;OACK;;IAEH;KACC;KACA;KACA;KACA;KACA;KACA;IACD;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;QACE;QACA;UACE;YACE;cACE;cACA;gBACE;cACF;YACF;cACE;gBACE;cACF;YACF;UACF;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;QACA;QACA;QACA;UACE;QACF;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;EACF;AACF;;AAEA;EACE;OACK;IACH;;;KAGC;MACC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;MACE;UACI;UACA;UACA;;MAEJ;QACE;UACE;QACF;UACE;UACA;QACF;QACA;UACE;QACF;;QAEA;MACF;;MAEA;MACA;;MAEA;IACF;;;KAGC;MACC;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;MACE;QACE;QACA;QACA;MACF;MACA;IACF;;IAEA;EACF;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;IACE;IACA;IACA;IACA;EACF;;EAEA;;EAEA;EACA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;MACE;MACA;EACJ;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;UACQ;AACV;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;WACE;aACE;aACA;eACE;aACF;WACF;OACJ;OACA;SACE;SACA;OACF;KACF;KACA;MACC;OACC;OACA;OACA;MACD;KACD;GACF;CACF;AACD;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;QACC;QACA;OACD;KACF;;KAEA;MACC;MACA;QACE;QACA;MACF;KACD;GACF;EACD;AACF;AACA;EACE;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;QACE;MACF;MACA;IACF;MACE;IACF;EACF;EACA;;EAEA;IACE;MACE;IACF;EACF;;EAEA;;EAEA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACF;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;gCACyB;gCACA;gCACA;gCACA;gCACA;;OAEzB;OACA;SACE;SACA;WACE;WACA;SACF;OACF;OACA;OACA;OACA;OACA;OACA;OACA;SACE;SACA;WACE;WACA;SACF;OACF;KACF;KACA;OACE;SACE;WACE;aACE;WACF;SACF;OACF;;OAEA;SACE;SACA;SACA;SACA;;SAEA;SACA;SACA;OACF;;OAEA;SACE;SACA;SACA;SACA;OACF;OACA;SACE;SACA;SACA;SACA;SACA;SACA;OACF;KACF;GACF;CACF;AACD;EACE;IACE;;IAEA;QACI;;IAEJ;MACE;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;MACE;QACE;UACE;QACF;MACF;QACE;UACE;YACE;cACE;kBACI;gBACF;cACF;YACF;YACA;UACF;UACA;UACA;QACF;MACF;IACF;;IAEA;MACE;QACE;MACF;MACA;QACE;QACA;QACA;UACE;QACF;UACE;YACE;cACE;YACF;cACE;gBACE;kBACE;gBACF;cACF;cACA;UACJ;UACA;QACF;UACE;YACE;cACE;YACF;UACF;UACA;QACF;UACE;MACJ;IACF;IACA;MACE;MACA;MACA;QACE;QACA;QACA;MACF;QACE;QACA;UACE;YACE;YACA;cACE;YACF;UACF;QACF;QACA;MACF;QACE;QACA;MACF;QACE;IACJ;IACA;IACA;MACE;MACA;QACE;MACF;IACF;IACA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;WACE;aACE;WACF;OACJ;OACA;SACE;SACA;SACA;OACF;KACF;KACA;OACE;SACE;SACA;OACF;OACA;SACE;WACE;WACA;WACA;SACF;SACA;SACA;SACA;SACA;OACF;KACF;GACF;CACF;AACD;AACA;EACE;EACA;IACE;;IAEA;IACA;QACI;QACA;YACI;EACV;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;WACE;aACE;WACF;OACJ;OACA;SACE;SACA;SACA;SACA;OACF;KACF;KACA;OACE;SACE;SACA;SACA;OACF;;OAEA;SACE;SACA;SACA;SACA;SACA;MACH;KACD;GACF;CACF;;;AAGD;AACA;EACE;EACA;;IAEE;IACA;QACI;QACA;uBACe;EACrB;AACF;;AAEA;AACA;EACE;;EAEA;EACA;EACA;MACI;MACA;;EAEJ;EACA;IACE;IACA;MACE;MACA;IACF;MACE;MACA;IACF;EACF;;EAEA;IACE;;IAEA;IACA;MACE;IACF;;IAEA;IACA;IACA;IACA;;IAEA;MACE;IACF;;IAEA;IACA;IACA;;IAEA;QACI;QACA;;IAEJ;MACE;MACA;QACE;UACE;QACF;QACA;MACF;IACF;;IAEA;MACE;QACE;MACF;MACA;IACF;;IAEA;IACA;MACE;IACF;;IAEA;EACF;;IAEE;MACE;IACF;EACF;;EAEA;EACA;EACA;EACA;AACF;;AAEA;EACE;EACA;IACE;IACA;EACF;EACA;EACA;EACA;IACE;EACF;AACF;;;AAGA;EACE;EACA;IACE;IACA;MACE;IACF;IACA;EACF;AACF;;AAEA;EACE;IACE;IACA;;IAEA;EACF;AACF;;AAEA;EACE;EACA;;EAEA;gBACc;;EAEd;AACF;;AAEA;IACI;IACA;IACA;IACA;IACA;AACJ;;AAEA;IACI;MACE;MACA;AACN;;AAEA;GACG;MACG;SACG;;MAEH;SACG;;MAEH;GACH;AACH;;AAEA;EACE;AACF;;AAEA;EACE;IACE;KACC;EACH;GACC;IACC;KACC;IACD;KACC;IACD;KACC;IACD;KACC;IACD;KACC;IACD;KACC;KACA;KACA;GACF;EACD;GACC;KACE;KACA;IACD;KACC;AACL;;AAEA;IACI;;AAEJ;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;WACI;OACJ;UACG;OACH;UACG;OACH;UACG;KACL;KACA;OACE;SACE;YACG;SACH;YACG;SACH;YACG;SACH;YACG;OACL;KACF;GACF;CACF;AACD;AACA;;;EAGE;qBACmB;EACnB;IACE;IACA;MACE;UACI;UACA;UACA;UACA;;MAEJ;QACE;QACA;MACF;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;IACA;EACF;;;EAGA;IACE;QACI;QACA;;IAEJ;IACA;IACA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;MACE;MACA;QACE;QACA;MACF;QACE;QACA;MACF;IACF;;IAEA;MACE;MACA;IACF;IACA;MACE;MACA;iBACW;IACb;;IAEA;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;KACF;KACA;OACE;SACE;OACF;KACF;GACF;CACF;CACA;AACD;EACE;IACE;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;WACE;aACE;aACA;aACA;aACA;aACA;aACA;WACF;OACJ;OACA;SACE;SACA;SACA;SACA;SACA;SACA;OACF;KACF;KACA;OACE;OACA;OACA;OACA;OACA;OACA;;OAEA;SACE;SACA;SACA;SACA;SACA;SACA;OACF;;OAEA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;;OAEA;SACE;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;OACF;KACF;GACF;AACH;AACA;EACE;IACE;IACA;;IAEA;MACE;IACF;MACE;IACF;;IAEA;MACE;MACA;QACE;MACF;QACE;MACF;IACF;;IAEA;MACE;;IAEF;IACA;MACE;IACF;MACE;;IAEF;MACE;MACA;IACF;MACE;MACA;IACF;;IAEA;MACE;IACF;;IAEA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;WACE;aACE;iBACI;kBACC;kBACA;kBACA;kBACA;aACL;WACF;OACJ;OACA;SACE;SACA;SACA;SACA;WACE;aACE;iBACI;aACJ;aACA;WACF;WACA;aACE;aACA;aACA;WACF;SACF;OACF;KACF;GACF;CACF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACC;IACE;MACE;QACE;UACE;YACE;cACE;YACF;YACA;UACF;UACA;YACE;YACA;YACA;UACF;QACF;MACF;IACF;;IAEA;MACE;QACE;UACE;UACA;YACE;YACA;YACA;YACA;YACA;UACF;UACA;YACE;UACF;UACA;QACF;IACJ;AACJ;CACC;AACD;AACA;EACE;IACE;IACA;IACA;IACA;MACE;MACA;QACE;UACE;UACA;QACF;QACA;QACA;UACE;UACA;YACE;UACF;QACF;MACF;MACA;QACE;MACF;IACF;IACA;IACA;IACA;;IAEA;MACE;QACE;QACA;MACF;MACA;IACF;IACA;MACE;UACI;UACA;IACN;IACA;MACE;MACA;MACA;QACE;UACE;UACA;QACF;QACA;WACG;WACA;QACH;QACA;QACA;MACF;QACE;MACF;IACF;EACF;AACF;;AAEA;EACE;IACE;MACE;IACF;EACF;EACA;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;;IAEE;;MAEE;MACA;MACA;QACE;MACF;;MAEA;MACA;MACA;MACA;MACA;IACF;;IAEA;MACE;QACE;QACA;mBACW;QACX;UACE;UACA;YACE;UACF;QACF;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;QACE;QACA;QACA;QACA;QACA;QACA;QACA;MACF;MACA;QACE;UACE;UACA;UACA;QACF;;QAEA;UACE;UACA;UACA;QACF;;QAEA;UACE;;UAEA;;UAEA;UACA;;UAEA;YACE;cACE;YACF;UACF;QACF;;QAEA;UACE;UACA;UACA;QACF;;QAEA;UACE;UACA;UACA;QACF;;QAEA;UACE;UACA;UACA;;UAEA;;UAEA;UACA;UACA;YACE;cACE;YACF;UACF;QACF;MACF;IACF;CACH;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;QACE;QACA;MACF;MACA;QACE;UACE;UACA;UACA;QACF;MACF;IACF;CACH;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;QACE;QACA;MACF;MACA;QACE;UACE;UACA;UACA;QACF;MACF;IACF;CACH;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;QACE;QACA;MACF;MACA;QACE;UACE;UACA;UACA;QACF;MACF;IACF;CACH;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;QACE;QACA;UACE;UACA;QACF;MACF;MACA;QACE;UACE;UACA;UACA;QACF;MACF;IACF;CACH;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;KACI;OACE;SACE;SACA;YACG;SACH;OACF;OACA;SACE;WACE;WACA;WACA;SACF;OACF;KACF;CACJ;CACA;CACA;CACA;CACA;;AAED;;;AAGA;AACA;EACE;EACA;;EAEA;EACA;IACE;MACE;MACA;MACA;QACE;UACE;QACF;MACF;IACF;EACF;AACF;;AAEA;AACA;EACE;IACE;MACE;MACA;QACE;QACA;QACA;UACE;UACA;YACE;YACA;UACF;QACF;;QAEA;UACE;QACF;MACF;IACF;EACF;AACF;;AAEA;AACA;EACE;EACA;IACE;MACE;MACA;QACE;YACI;;QAEJ;YACI;UACF;UACA;UACA;QACF;;QAEA;UACE;YACE;cACE;YACF;YACA;UACF;;UAEA;;UAEA;UACA;UACA;UACA;UACA;QACF;MACF;IACF;EACF;AACF;;AAEA;CACC;AACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AACF;AACA;;AAEA;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;AACA;EACE;MACI;;EAEJ;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;;EAEA;EACA;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;IACA;;IAEA;MACE;IACF;EACF;;EAEA;EACA;IACE;;IAEA;MACE;IACF;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;IACA;MACE;IACF;IACA;MACE;IACF;;IAEA;EACF;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;MACE;MACA;QACE;MACF;QACE;QACA;UACE;QACF;MACF;IACF;IACA;MACE;MACA;QACE;MACF;MACA;MACA;QACE;MACF;IACF;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;IACA;IACA;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACC;CACD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;OACC;SACE;WACE;aACE;WACF;OACJ;OACA;QACC;UACE;UACA;UACA;QACF;QACA;UACE;QACF;OACD;OACA;SACE;SACA;SACA;SACA;SACA;SACA;SACA;QACD;MACF;MACA;QACE;UACE;UACA;;UAEA;UACA;QACF;;QAEA;UACE;UACA;UACA;;UAEA;UACA;;UAEA;UACA;QACF;MACF;IACF;CACH;CACA;CACA;CACA;AACD;EACE;IACE;MACE;MACA;MACA;MACA;QACE;UACE;YACE;cACE;cACA;cACA;cACA;cACA;cACA;cACA;gBACE;kBACE;kBACA;gBACF;;gBAEA;kBACE;kBACA;cACJ;;cAEA;;cAEA;cACA;cACA;gBACE;kBACE;gBACF;cACF;YACF;;YAEA;gBACI;;YAEJ;cACE;cACA;gBACE;gBACA;gBACA;gBACA;gBACA;cACF;YACF;YACA;cACE;gBACE;gBACA;kBACE;gBACF;gBACA;cACF;YACF;UACF;QACF;MACF;IACF;;IAEA;EACF;AACF;;AAEA;AACA;;AAEA;EACE;EACA;EACA;EACA;EACA;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;EAEE;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;MACG;QACE;SACC;WACE;aACE;eACE;eACA;aACF;SACJ;SACA;WACE;+BACoB;WACpB;aACE;WACF;aACE;;WAEF;WACA;WACA;WACA;WACA;UACD;QACF;QACA;UACE;UACA;UACA;;UAEA;YACE;YACA;UACF;;UAEA;YACE;YACA;;YAEA;YACA;UACF;;UAEA;YACE;YACA;;YAEA;UACF;QACF;MACF;GACH;EACD;;IAEE;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;OACE;UACG;YACE;cACE;YACF;OACL;OACA;UACG;UACA;cACI;UACJ;cACI;UACJ;cACI;WACH;WACA;WACA;WACA;WACA;OACJ;KACF;KACA;QACG;QACA;QACA;;QAEA;QACA;QACA;QACA;UACE;UACA;UACA;UACA;UACA;QACF;;QAEA;UACE;UACA;QACF;;QAEA;UACE;UACA;UACA;QACF;;QAEA;UACE;UACA;UACA;QACF;KACH;KACA;KACA;EACH;SACO;SACA;;GAEN;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;MACE;QACE;UACE;YACE;UACF;MACJ;MACA;QACE;QACA;YACI;QACJ;YACI;QACJ;YACI;QACJ;QACA;QACA;QACA;QACA;MACF;IACF;IACA;MACE;MACA;MACA;;MAEA;MACA;MACA;MACA;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;IACF;IACA;IACA;EACF;MACI;MACA;;EAEJ;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;KACE;MACC;QACE;UACE;QACF;KACH;KACA;QACG;QACA;YACI;QACJ;YACI;QACJ;YACI;QACJ;QACA;QACA;QACA;QACA;KACH;GACF;GACA;MACG;MACA;MACA;;MAEA;MACA;MACA;MACA;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;GACH;GACA;GACA;EACD;MACI;KACD;;GAEF;IACC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;MACE;MACA;QACE;UACE;QACF;MACF;MACA;QACE;QACA;YACI;QACJ;YACI;QACJ;YACI;QACJ;QACA;QACA;QACA;QACA;MACF;IACF;IACA;MACE;MACA;MACA;;MAEA;MACA;MACA;MACA;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;IACF;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;KACE;MACC;QACE;UACE;QACF;KACH;KACA;OACE;OACA;UACG;OACH;UACG;OACH;UACG;OACH;OACA;OACA;OACA;OACA;KACF;GACF;GACA;MACG;MACA;MACA;;MAEA;MACA;MACA;MACA;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;GACH;GACA;GACA;EACD;KACG;KACA;;EAEH;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;MACG;QACE;SACC;WACE;aACE;eACE;aACF;SACJ;SACA;WACE;0BACe;WACf;aACE;WACF;aACE;WACF;WACA;WACA;WACA;WACA;UACD;QACF;QACA;UACE;UACA;UACA;;UAEA;YACE;YACA;UACF;;UAEA;YACE;YACA;YACA;YACA;UACF;;UAEA;YACE;YACA;YACA;YACA;UACF;QACF;MACF;GACH;EACD;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;MACG;QACE;SACC;WACE;aACE;eACE;aACF;SACJ;SACA;WACE;WACA;aACE;WACF;aACE;WACF;WACA;WACA;WACA;WACA;WACA;UACD;QACF;QACA;UACE;UACA;UACA;;UAEA;YACE;YACA;UACF;;UAEA;YACE;YACA;;YAEA;YACA;UACF;;UAEA;YACE;YACA;;YAEA;UACF;QACF;MACF;GACH;EACD;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;MACG;QACE;SACC;WACE;aACE;eACE;aACF;SACJ;WACE;aACE;aACA;eACE;aACF;eACE;aACF;aACA;aACA;aACA;aACA;aACA;WACF;SACF;QACD;UACE;UACA;UACA;;UAEA;YACE;YACA;UACF;;UAEA;YACE;YACA;YACA;YACA;UACF;;UAEA;YACE;YACA;;YAEA;UACF;QACF;MACF;GACH;EACD;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;MACG;QACE;SACC;WACE;aACE;eACE;eACA;iBACE;iBACA;eACF;aACF;SACJ;SACA;WACE;WACA;WACA;WACA;UACD;UACA;QACF;QACA;UACE;YACE;;YAEA;;YAEA;;YAEA;UACF;QACF;MACF;GACH;EACD;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;MACG;QACE;SACC;WACE;aACE;eACE;eACA;aACF;SACJ;SACA;WACE;WACA;0BACe;WACf;WACA;UACD;QACF;QACA;UACE;YACE;YACA;;YAEA;YACA;;YAEA;YACA;;YAEA;YACA;UACF;QACF;MACF;GACH;EACD;;EAEA;EACA;EACA;EACA;EACA;AACF;;AAEA;EACE;EACA;IACE;MACE;MACA;QACE;MACF;IACF;EACF;EACA;AACF;;AAEA;EACE;IACE;EACF;AACF;;AAEA;EACE;EACA;AACF;;AAEA;EACE;EACA;EACA;;EAEA;EACA;EACA;EACA;IACE;;IAEA;MACE;IACF;;IAEA;MACE;MACA;IACF;EACF;;EAEA;IACE;IACA;QACI;;IAEJ;IACA;IACA;IACA;IACA;MACE;MACA;IACF;;IAEA;IACA;IACA;IACA;MACE;IACF;;IAEA;IACA;IACA;IACA;MACE;IACF;EACF;;EAEA;EACA;EACA;IACE;EACF;IACE;;IAEA;MACE;QACE;UACE;UACA;QACF;MACF;IACF;;IAEA;MACE;;MAEA;MACA;MACA;;MAEA;IACF;;IAEA;IACA;MACE;IACF;EACF;;EAEA;EACA;EACA;;EAEA;IACE;EACF;AACF;;AAEA;EACE;IACE;EACF;;EAEA;IACE;IACA;IACA;MACE;UACI;UACA;UACA;UACA;UACA;UACA;UACA;;MAEJ;QACE;QACA;QACA;QACA;MACF;;MAEA;IACF;EACF;;EAEA;AACF;;AAEA;EACE;IACE;;IAEA;MACE;IACF;;IAEA;MACE;MACA;MACA;MACA;QACE;MACF;MACA;QACE;MACF;MACA;MACA;;MAEA;QACE;QACA;UACE;YACE;YACA;YACA;YACA;YACA;YACA;YACA;UACF;QACF;UACE;QACF;;QAEA;UACE;YACE;UACF;QACF;QACA;MACF;IACF;;IAEA;EACF;AACF;;AAEA;EACE;IACE;IACA;IACA;;IAEA;IACA;MACE;MACA;QACE;QACA;UACE;UACA;QACF;QACA;QACA;UACE;QACF;QACA;MACF;MACA;IACF;;IAEA;MACE;QACE;MACF;MACA;IACF;;IAEA;MACE;MACA;QACE;MACF;MACA;QACE;QACA;MACF;IACF;;IAEA;MACE;MACA;QACE;MACF;MACA;QACE;QACA;MACF;IACF;;IAEA;MACE;IACF;EACF;AACF;;AAEA;EACE;EACA;EACA;IACE;MACE;MACA;MACA;MACA;MACA;MACA;IACF;EACF;AACF;;AAEA;EACE;EACA;;EAEA;EACA;IACE;IACA;IACA;EACF;;EAEA;IACE;MACE;QACE;MACF;MACA;IACF;IACA;EACF;;EAEA;IACE;IACA;MACE;IACF;;IAEA;MACE;QACE;MACF;MACA;MACA;MACA;IACF;EACF;;EAEA;IACE;IACA;MACE;IACF;;IAEA;MACE;QACE;MACF;MACA;MACA;MACA;IACF;EACF;AACF;;AAEA;EACE;EACA;EACA;EACA;;EAEA;EACA;IACE;EACF;AACF;;AAEA;EACE;EACA;EACA;EACA;;EAEA;EACA;IACE;EACF;AACF;;AAEA;EACE;EACA;IACE;EACF;;EAEA;IACE;MACE;IACF;EACF;;EAEA;;EAEA;IACE;IACA;EACF;;EAEA;AACF;;AAEA;EACE;EACA;IACE;IACA;MACE;mCAC6B;IAC/B;IACA;EACF;EACA;AACF;;AAEA;EACE;EACA;;EAEA;IACE;EACF;;EAEA;;EAEA;IACE;EACF;;EAEA;EACA;IACE;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;OACC;UACG;YACE;cACE;YACF;OACL;OACA;SACE;WACE;WACA;aACE;WACF;aACE;WACF;aACE;WACF;aACE;SACJ;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;OACF;MACD;MACA;QACE;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;UACE;UACA;UACA;QACF;;QAEA;UACE;UACA;;UAEA;UACA;UACA;QACF;;QAEA;UACE;UACA;;UAEA;UACA;UACA;QACF;;QAEA;UACE;UACA;;UAEA;UACA;UACA;UACA;QACF;;QAEA;UACE;UACA;;UAEA;UACA;UACA;UACA;QACF;MACF;IACF;CACH;AACD;IACI;EACF;IACE;IACA;IACA;MACE;QACE;4DACoD;MACtD;IACF;EACF;AACF;;AAEA;IACI;IACA;IACA;IACA;IACA;IACA;;AAEJ;CACC;CACA;CACA;CACA;CACA;CACA;OACM;OACA;OACA;OACA;OACA;OACA;;CAEN;CACA;OACM;OACA;CACN;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;QACE;QACA;QACA;MACF;;MAEA;QACE;MACF;;IAEF;IACA;MACE;QACE;UACE;YACE;YACA;YACA;cACE;;cAEA;cACA;gBACE;cACF;;cAEA;cACA;gBACE;cACF;cACA;;cAEA;cACA;gBACE;gBACA;gBACA;gBACA;kBACE;gBACF;gBACA;cACF;YACF;UACF;QACF;IACJ;IACA;MACE;OACC;YACK;YACA;YACA;QACJ;OACD;OACA;MACD;IACF;IACA;IACA;MACE;QACE;QACA;QACA;MACF;MACA;MACA;;MAEA;;MAEA;MACA;MACA;MACA;IACF;IACA;CACH;CACA;CACA;CACA;AACD;IACI;EACF;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EAGA;MACI;MACA;;EAEJ;IACE;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;QACI;;MAEF;IACF;MACE;IACF;EACF;;EAEA;IACE;;IAEA;MACE;UACI;IACN;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;MACI;;EAEJ;EACA;IACE;IACA;;EAEF;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;MACE;IACF;IACA;MACE;IACF;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;;IAEA;IACA;MACE;MACA;IACF;IACA;MACE;MACA;IACF;IACA;;IAEA;MACE;MACA;QACE;MACF;QACE;QACA;UACE;YACE;UACF;UACA;YACE;UACF;UACA;QACF;MACF;MACA;IACF;;IAEA;MACE;MACA;QACE;QACA;QACA;MACF;MACA;QACE;UACE;QACF;QACA;MACF;MACA;IACF;;IAEA;MACE;MACA;MACA;QACE;QACA;UACE;YACE;QACJ;QACA;QACA;UACE;QACF;UACE;UACA;QACF;MACF;MACA;QACE;MACF;QACE;UACE;QACF;MACF;IACF;;IAEA;MACE;QACE;MACF;IACF;;IAEA;MACE;;QAEE;MACF;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;;IAEA;;IAEA;IACA;IACA;IACA;MACE;IACF;IACA;;IAEA;IACA;MACE;MACA;MACA;MACA;MACA;IACF;IACA;EACF;;EAEA;IACE;QACI;QACA;IACJ;MACE;MACA;QACE;QACA;MACF;IACF;IACA;MACE;MACA;IACF;IACA;IACA;IACA;MACE;MACA;IACF;IACA;MACE;QACE;QACA;QACA;QACA;QACA;QACA;MACF;IACF;;IAEA;MACE;QACE;MACF;IACF;EACF;;EAEA;IACE;IACA;MACE;QACE;MACF;QACE;MACF;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;MACE;IACF;EACF;;EAEA;IACE;QACI;QACA;;IAEJ;MACE;MACA;QACE;MACF;QACE;MACF;QACE;MACF;IACF;;IAEA;IACA;MACE;QACE;MACF;IACF;MACE;IACF;MACE;QACE;MACF;IACF;EACF;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;IACE;;IAEA;IACA;IACA;MACE;;MAEA;UACI;;MAEJ;MACA;QACE;MACF;MACA;QACE;QACA;;QAEA;MACF;IACF;;IAEA;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;KACI;OACE;QACC;UACE;YACE;UACF;OACH;OACA;SACE;WACE;WACA;WACA;SACF;SACA;WACE;WACA;SACF;OACF;OACA;OACA;OACA;SACE;OACF;KACF;CACJ;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;KACI;OACE;SACE;WACE;WACA;kBACO;kBACA;SACT;SACA;OACF;KACF;KACA;OACE;SACE;WACE;WACA;aACE;eACE;iBACE;eACF;eACA;aACF;WACF;SACF;KACJ;CACJ;CACA;AACD;EACE;IACE;IACA;IACA;IACA;MACE;QACE;YACI;;QAEJ;;QAEA;QACA;;QAEA;UACE;YACE;UACF;QACF;;QAEA;UACE;QACF;MACF;MACA;QACE;QACA;UACE;YACE;UACF;QACF;;QAEA;UACE;;UAEA;YACE;UACF;QACF;MACF;IACF;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;EACA;IACE;MACE;IACF;EACF;AACF;;;AAGA;EACE;IACE;IACA;IACA;MACE;MACA;;MAEA;QACE;MACF;;MAEA;QACE;MACF;IACF;EACF;AACF;;;AAGA;EACE;IACE;IACA;IACA;MACE;;MAEA;MACA;QACE;UACE;QACF;;QAEA;UACE;YACE;YACA;QACJ;;QAEA;QACA;MACF;;MAEA;QACE;MACF;IACF;EACF;AACF;;;AAGA;EACE;IACE;IACA;IACA;MACE;;MAEA;MACA;QACE;QACA;MACF;MACA;QACE;MACF;IACF;EACF;AACF;;AAEA;EACE;IACE;IACA;IACA;MACE;;MAEA;MACA;QACE;QACA;MACF;MACA;QACE;MACF;IACF;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;IACA;IACA;IACA;MACE;MACA;MACA;MACA;MACA;;MAEA;QACE;QACA;;QAEA;;QAEA;UACE;YACE;UACF;QACF;;QAEA;MACF;;MAEA;MACA;QACE;UACE;QACF;;QAEA;MACF;;MAEA;MACA;QACE;MACF;IACF;EACF;AACF;;;AAGA;AACA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;OACC;UACG;YACE;cACE;cACA;YACF;OACL;QACC;UACE;YACE;cACE;cACA;qBACO;qBACA;qBACA;qBACA;YACT;UACF;QACF;MACF;MACA;QACE;;QAEA;UACE;QACF;QACA;UACE;UACA;QACF;MACF;IACF;CACH;AACD;EACE;IACE;IACA;IACA;MACE;QACE;UACE;QACF;MACF;QACE;UACE;YACE;UACF;QACF;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;OACM;CACN;CACA;CACA;CACA;CACA;;EAEC;EACA;EACA;;EAEA;IACE;MACE;QACE;UACE;UACA;iBACO;iBACA;iBACA;;UAEP;UACA;QACF;QACA;MACF;IACF;IACA;MACE;QACE;UACE;;UAEA;YACE;cACE;YACF;UACF;QACF;IACJ;IACA;MACE;MACA;MACA;;MAEA;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;QACA;QACA;QACA;MACF;IACF;EACF;;EAEA;EACA;;EAEA;IACE;MACE;QACE;UACE;UACA;iBACO;iBACA;UACP;QACF;QACA;MACF;IACF;IACA;MACE;QACE;UACE;QACF;IACJ;EACF;;EAEA;;EAEA;IACE;MACE;QACE;UACE;UACA;iBACO;iBACA;QACT;QACA;MACF;IACF;IACA;MACE;QACE;UACE;UACA;YACE;cACE;YACF;UACF;QACF;IACJ;EACF;CACD;AACD;EACE;IACE;IACA;MACE;MACA;MACA;MACA;QACE;QACA;QACA;UACE;UACA;QACF;MACF;QACE;MACF;IACF;EACF;AACF;;AAEA;AACA;EACE;MACI;MACA;MACA;MACA;MACA;MACA;;EAEJ;EACA;;EAEA;IACE;MACE;IACF;MACE;IACF;IACA;MACE;MACA;IACF;MACE;QACE;QACA;MACF;QACE;QACA;MACF;IACF;IACA;MACE;MACA;MACA;IACF;MACE;MACA;MACA;MACA;IACF;;IAEA;IACA;IACA;IACA;IACA;IACA;MACE;IACF;MACE;IACF;MACE;IACF;MACE;IACF;IACA;IACA;EACF;;EAEA;IACE;MACE;IACF;IACA;EACF;;EAEA;IACE;MACE;IACF;IACA;MACE;IACF;EACF;;EAEA;IACE;MACE;MACA;IACF;MACE;MACA;IACF;EACF;;EAEA;IACE;;IAEA;IACA;EACF;AACF;;AAEA;EACE;IACE;MACE;IACF;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;WACE;aACE;WACF;OACJ;OACA;SACE;SACA;OACF;KACF;KACA;OACE;SACE;;SAEA;SACA;SACA;SACA;OACF;KACF;GACF;CACF;AACD;EACE;IACE;IACA;MACE;MACA;QACE;QACA;UACE;UACA;UACA;UACA;QACF;MACF;IACF;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;WACE;aACE;aACA;WACF;OACJ;OACA;QACC;QACA;QACA;OACD;KACF;KACA;OACE;SACE;SACA;SACA;;SAEA;;SAEA;SACA;SACA;SACA;;SAEA;OACF;KACF;GACF;CACF;AACD;EACE;IACE;MACE;MACA;QACE;QACA;QACA;UACE;QACF;MACF;IACF;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;GAEE;KACE;OACE;QACC;OACD;KACF;;KAEA;OACE;SACE;WACE;cACG;cACA;SACL;KACJ;;KAEA;OACE;SACE;aACI;OACN;KACF;GACF;CACF;AACD;EACE;IACE;IACA;MACE;MACA;QACE;MACF;MACA;;MAEA;QACE;;QAEA;UACE;UACA;UACA;QACF;MACF;IACF;EACF;AACF;;AAEA;EACE;EACA;IACE;MACE;MACA;QACE;;QAEA;;QAEA;UACE;QACF;;;QAGA;UACE;YACE;YACA;YACA;cACE;cACA;gBACE;gBACA;YACJ;UACF;QACF;;QAEA;UACE;UACA;QACF;;QAEA;UACE;UACA;QACF;;QAEA;UACE;UACA;UACA;YACE;cACE;cACA;gBACE;cACF;YACF;UACF;UACA;UACA;QACF;;QAEA;UACE;UACA;UACA;UACA;UACA;YACE;UACF;UACA;YACE;UACF;QACF;;QAEA;UACE;YACE;YACA;cACE;YACF;cACE;cACA;YACF;UACF;UACA;QACF;MACF;IACF;;IAEA;MACE;;MAEA;MACA;QACE;QACA;UACE;QACF;QACA;MACF;MACA;IACF;;IAEA;MACE;QACE;MACF;QACE;MACF;QACE;QACA;UACE;YACE;UACF;QACF;QACA;MACF;MACA;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;KACF;KACA;OACE;SACE;OACF;OACA;WACI;OACJ;OACA;WACI;OACJ;KACF;KACA;OACE;;OAEA;;SAEE;SACA;;SAEA;SACA;;SAEA;SACA;OACF;;OAEA;SACE;SACA;SACA;SACA;OACF;;OAEA;SACE;SACA;SACA;SACA;SACA;OACF;KACF;GACF;;GAEA;;GAEA;;GAEA;KACE;MACC;MACA;MACA;MACA;KACD;KACA;OACE;SACE;SACA;OACF;;OAEA;SACE;SACA;OACF;KACF;KACA;OACE;SACE;WACE;;SAEF;;SAEA;WACE;;SAEF;;SAEA;WACE;OACJ;KACF;GACF;;;GAGA;GACA;GACA;GACA;GACA;GACA;CACF;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;QACG;UACE;WACC;aACE;WACF;UACD;QACF;KACH;KACA;OACE;SACE;OACF;OACA;SACE;OACF;KACF;KACA;OACE;SACE;WACE;SACF;WACE;OACJ;KACF;GACF;CACF;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;QACG;UACE;WACC;aACE;WACF;UACD;QACF;KACH;KACA;OACE;SACE;OACF;OACA;SACE;OACF;KACF;KACA;OACE;SACE;WACE;SACF;WACE;OACJ;KACF;GACF;CACF;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;QACG;QACA;KACH;KACA;OACE;SACE;WACE;SACF;WACE;OACJ;KACF;GACF;CACF;CACA;AACD;EACE;IACE;IACA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA;AACD;EACE;IACE;IACA;IACA;IACA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;KACA;KACA;KACA;KACA;GACF;CACF;;AAED;AACA;AACA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;QACE;MACF;MACA;QACE;MACF;KACD;KACA;OACE;SACE;SACA;SACA;OACF;KACF;GACF;CACF;AACD;CACC;CACA;CACA;CACA;CACA;AACD;;AAEA;AACA;AACA;AACA;EACE;EACA;AACF;AACA;EACE;EACA;IACE;IACA;MACE;QACE;QACA;UACE;UACA;YACE;cACE;gBACE;cACF;cACA;gBACE;cACF;gBACE;cACF;YACF;UACF;QACF;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;QACE;MACF;MACA;KACD;GACF;CACF;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;QACE;MACF;MACA;KACD;GACF;CACF;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;QACE;MACF;MACA;KACD;GACF;CACF;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;QACE;MACF;MACA;KACD;GACF;CACF;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;QACE;MACF;MACA;KACD;GACF;CACF;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;QACE;MACF;MACA;KACD;GACF;CACF;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;QACE;MACF;MACA;KACD;GACF;CACF;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;MACA;KACD;GACF;CACF;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;OACA;;OAEA;OACA;OACA;OACA;KACF;GACF;CACF;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;MACA;KACD;GACF;CACF;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;QACE;UACE;YACE;YACA;YACA;cACE;gBACE;gBACA;cACF;YACF;UACF;MACJ;MACA;QACE;QACA;QACA;QACA;MACF;KACD;KACA;OACE;SACE;SACA;SACA;SACA;OACF;OACA;SACE;SACA;SACA;SACA;QACD;KACH;GACF;CACF;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;MACA;KACD;GACF;CACF;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;MACA;KACD;GACF;CACF;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;MACC;MACA;KACD;GACF;CACF;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACC;IACE;MACE;MACA;MACA;QACE;MACF;IACF;IACA;MACE;QACE;QACA;QACA;MACF;;MAEA;QACE;QACA;MACF;;MAEA;MACA;QACE;MACF;;MAEA;MACA;QACE;MACF;IACF;EACF;CACD;AACD;EACE;IACE;IACA;IACA;IACA;IACA;IACA;IACA;QACI;QACA;;UAEE;YACE;cACE;gBACE;gBACA;gBACA;gBACA;gBACA;gBACA;kBACE;gBACF;gBACA;cACF;YACF;UACF;YACE;cACE;cACA;YACF;YACA;cACE;cACA;YACF;YACA;cACE;cACA;gBACE;cACF;cACA;YACF;UACF;QACF;IACJ;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACC;IACE;KACC;OACE;QACC;OACD;OACA;OACA;OACA;SACE;OACF;KACF;IACD;IACA;MACE;QACE;UACE;YACE;cACE;UACJ;QACF;KACH;IACD;MACE;IACF;IACA;MACE;IACF;IACA;MACE;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;MACF;;MAEA;QACE;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;MACF;MACA;QACE;MACF;;MAEA;QACE;MACF;MACA;QACE;MACF;IACF;IACA;MACE;MACA;;MAEA;QACE;MACF;;MAEA;QACE;UACE;UACA;UACA;QACF;QACA;QACA;QACA;MACF;;MAEA;QACE;UACE;UACA;QACF;QACA;QACA;QACA;MACF;IACF;EACF;CACD;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;;AAGD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;kBACkB;EAChB;IACE;IACA;IACA;IACA;IACA;IACA;MACE;UACI;UACA;;MAEJ;QACE;YACI;YACA;YACA;;QAEJ;UACE;YACE;YACA;UACF;UACA;YACE;YACA;UACF;UACA;YACE;cACE;YACF;YACA;YACA;UACF;QACF;;QAEA;UACE;YACE;cACE;YACF;UACF;UACA;;UAEA;YACE;YACA;YACA;cACE;cACA;cACA;;cAEA;cACA;cACA;cACA;cACA;cACA;cACA;gBACE;gBACA;cACF;;cAEA;cACA;;cAEA;cACA;YACF;cACE;gBACE;gBACA;cACF;YACF;YACA;UACF;YACE;YACA;UACF;QACF;MACF;IACF;EACF;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;EACE;IACE;MACE;MACA;MACA;MACA;QACE;UACE;UACA;UACA;UACA;UACA;cACI;YACF;UACF;UACA;QACF;;QAEA;QACA;MACF;IACF;EACF;;AAEF;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;GACF;KACE;OACE;SACE;OACF;GACJ;GACA;KACE;OACE;UACG;OACH;KACF;GACF;KACE;KACA;OACE;SACE;SACA;SACA;SACA;SACA;OACF;KACF;GACF;CACF;AACD;EACE;EACA;IACE;MACE;QACE;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;QACE;QACA;MACF;MACA;OACC;SACE;SACA;OACF;MACD;IACF;CACH;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;iBACgB;CAChB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;QACE;UACE;YACE;cACE;cACA;cACA;YACF;QACJ;QACA;UACE;UACA;UACA;;UAEA;UACA;UACA;wBACc;+BACO;+BACA;UACrB;;UAEA;UACA;UACA;wBACc;+BACO;+BACA;+BACA;+BACA;UACrB;QACF;MACF;MACA;QACE;UACE;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;QACF;QACA;UACE;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;MACF;IACF;CACH;AACD;EACE;EACA;IACE;IACA;MACE;UACI;UACA;UACA;UACA;UACA;UACA;UACA;;MAEJ;QACE;UACE;YACE;QACJ;MACF;MACA;QACE;UACE;YACE;MACN;;MAEA;QACE;;QAEA;UACE;UACA;UACA;WACC;QACH;UACE;QACF;MACF;QACE;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACC;IACE;MACE;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACF;QACE;QACA;QACA;UACE;YACE;UACF;UACA;YACE;UACF;QACF;MACF;IACF;IACA;MACE;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;;MAEA;MACA;MACA;QACE;QACA;MACF;;MAEA;MACA;MACA;QACE;QACA;MACF;;MAEA;MACA;MACA;QACE;QACA;MACF;IACF;IACA;MACE;;MAEA;QACE;QACA;QACA;QACA;QACA;YACI;MACN;;OAEC;SACE;;SAEA;;SAEA;SACA;SACA;OACF;MACD;IACF;CACH;AACD;EACE;EACA;;EAEA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACF;;EAEA;IACE;EACF;;EAEA;IACE;EACF;;;EAGA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;MACE;MACA;;MAEA;;MAEA;QACE;YACI;MACN;;MAEA;MACA;MACA;MACA;;MAEA;;MAEA;QACE;YACI;MACN;MACA;MACA;;MAEA;UACI;QACF;UACE;MACJ;;MAEA;MACA;;MAEA;QACE;MACF;QACE;UACE;QACF;QACA;UACE;QACF;MACF;;MAEA;;QAEE;UACE;YACE;YACA;YACA;YACA;YACA;UACF;QACF;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;UACE;cACI;8CACgC;cAChC;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;;UAEJ;YACE;UACF;;UAEA;YACE;YACA;UACF;YACE;YACA;YACA;YACA;cACE;gBACE;cACF;YACF;YACA;UACF;;UAEA;UACA;;UAEA;UACA;YACE;YACA;YACA;YACA;cACE;cACA;cACA;cACA;cACA;YACF;cACE;cACA;gBACE;cACF;cACA;kBACI;kBACA;YACN;cACE;cACA;cACA;YACF;UACF;;UAEA;UACA;YACE;YACA;YACA;YACA;cACE;cACA;cACA;gBACE;cACF;YACF;YACA;UACF;;UAEA;UACA;YACE;YACA;YACA;;YAEA;cACE;cACA;;cAEA;;cAEA;cACA;gBACE;cACF;;cAEA;gBACE;gBACA;cACF;cACA;cACA;YACF;cACE;cACA;gBACE;gBACA;gBACA;gBACA;;gBAEA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;cACF;YACF;UACF;UACA;QACF;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACC;IACE;MACE;MACA;QACE;QACA;UACE;QACF;MACF;MACA;QACE;QACA;UACE;QACF;MACF;IACF;IACA;MACE;IACF;IACA;MACE;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;MACA;QACE;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;IACF;IACA;MACE;MACA;;MAEA;QACE;QACA;;QAEA;;QAEA;QACA;MACF;IACF;EACF;CACD;AACD;EACE;IACE;IACA;IACA;MACE;QACE;MACF;IACF;EACF;AACF;;;AAGA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACC;IACE;MACE;MACA;QACE;QACA;UACE;QACF;MACF;MACA;QACE;QACA;UACE;QACF;MACF;IACF;IACA;MACE;IACF;IACA;MACE;QACE;QACA;QACA;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;IACF;IACA;MACE;MACA;;MAEA;QACE;QACA;;QAEA;;QAEA;QACA;MACF;IACF;EACF;CACD;AACD;EACE;IACE;IACA;IACA;MACE;QACE;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;QACG;QACA;QACA;QACA;QACA;QACA;KACH;KACA;OACE;SACE;OACF;KACF;KACA;OACE;;OAEA;SACE;SACA;SACA;SACA;SACA;OACF;KACF;GACF;CACF;AACD;EACE;IACE;MACE;IACF;IACA;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;CAEA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACC;IACE;MACE;QACE;QACA;QACA;QACA;QACA;UACE;YACE;YACA;YACA;QACJ;MACF;IACF;IACA;MACE;QACE;UACE;UACA;QACF;IACJ;IACA;MACE;QACE;QACA;QACA;QACA;QACA;MACF;;MAEA;QACE;MACF;;MAEA;QACE;QACA;;QAEA;QACA;QACA;QACA;QACA;MACF;;MAEA;MACA;QACE;MACF;MACA;MACA;QACE;MACF;IACF;IACA;MACE;MACA;;MAEA;QACE;MACF;MACA;QACE;QACA;MACF;MACA;QACE;QACA;MACF;IACF;EACF;CACD;AACD;EACE;IACE;IACA;;IAEA;IACA;KACC;IACD;IACA;MACE;UACI;UACA;UACA;UACA;;MAEJ;UACI;MACJ;;MAEA;QACE;QACA;UACE;QACF;QACA;;QAEA;UACE;UACA;UACA;UACA;QACF;;QAEA;QACA;;QAEA;UACE;YACE;cACE;cACA;cACA;cACA;;cAEA;cACA;YACF;UACF;QACF;MACF;IACF;EACF;AACF;;AAEA;EACE;EACA;EACA;EACA;EACA;IACE;IACA;EACF;AACF;;AAEA;EACE;EACA;EACA;EACA;EACA;IACE;IACA;GACD;AACH;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;GACE;KACE;OACE;SACE;UACC;aACG;eACE;eACA;eACA;eACA;2BACY;2BACA;yBACF;aACZ;SACJ;SACA;WACE;WACA;SACF;OACF;OACA;SACE;SACA;SACA;OACF;KACF;KACA;QACG;UACE;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;KACH;GACF;CACF;CACA;AACD;EACE;EACA;IACE;MACE;OACC;OACA;OACA;OACA;IACH;;IAEA;MACE;MACA;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;EACC;IACE;MACE;QACE;MACF;;MAEA;MACA;IACF;IACA;MACE;QACE;QACA;MACF;IACF;EACF;CACD;AACD;EACE;IACE;IACA;IACA;MACE;QACE;YACI;YACA;;QAEJ;MACF;IACF;EACF;AACF;;AAEA;AACA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;IACG;MACE;QACE;QACA;UACE;YACE;cACE;cACA;cACA;cACA;cACA;YACF;YACA;UACF;QACF;QACA;UACE;YACE;cACE;cACA;YACF;YACA;cACE;YACF;UACF;UACA;UACA;UACA;;UAEA;UACA;YACE;cACE;YACF;UACF;;UAEA;UACA;UACA;;;UAGA;UACA;UACA;UACA;eACK;UACL;QACF;MACF;MACA;SACG;WACE;WACA;WACA;WACA;WACA;WACA;WACA;SACF;MACH;IACF;CACH;;AAED;EACE;EACA;AACF;;AAEA;AACA;yBACyB;EACvB;MACI;AACN;;EAEE;IACE;IACA;IACA;MACE;UACI;UACA;UACA;UACA;;;MAGJ;;;MAGA;QACE;QACA;QACA;MACF;;;MAGA;QACE;QACA;;QAEA;UACE;UACA;QACF;QACA;QACA;QACA;QACA;UACE;QACF;MACF;;;MAGA;QACE;UACE;UACA;YACE;UACF;QACF;MACF;;;MAGA;QACE;QACA;QACA;QACA;QACA;MACF;;;MAGA;QACE;MACF;;MAEA;QACE;QACA;MACF;IACF;;IAEA;MACE;MACA;;MAEA;UACI;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;MAEJ;MACA;QACE;UACE;UACA;QACF;MACF;;MAEA;;MAEA;MACA;QACE;UACE;QACF;MACF;;MAEA;MACA;MACA;;;MAGA;;;;MAIA;QACE;UACE;;UAEA;YACE;YACA;YACA;UACF;YACE;cACE;YACF;cACE;YACF;UACF;QACF;;QAEA;UACE;YACE;YACA;UACF;QACF;MACF;;MAEA;QACE;QACA;UACE;UACA;YACE;UACF;QACF;;QAEA;QACA;QACA;UACE;YACE;YACA;UACF;QACF;;QAEA;UACE;YACE;YACA;cACE;gBACE;cACF;YACF;YACA;UACF;QACF;MACF;;MAEA;QACE;;QAEA;UACE;YACE;YACA;YACA;YACA;QACJ;;QAEA;YACI;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;;QAEJ;UACE;UACA;;UAEA;UACA;UACA;;UAEA;UACA;UACA;QACF;;QAEA;QACA;;QAEA;UACE;YACE;gBACI;gBACA;gBACA;;YAEJ;cACE;cACA;mBACK;mBACA;gBACH;gBACA;;gBAEA;kBACE;oBACE;oBACA;oBACA;sBACE;wBACE;wBACA;sBACF;oBACF;sBACE;oBACF;oBACA;kBACF;gBACF;cACF;YACF;cACE;cACA;gBACE;cACF;gBACE;cACF;gBACE;kBACE;oBACE;oBACA;sBACE;sBACA;oBACF;kBACF;gBACF;kBACE;kBACA;kBACA;gBACF;cACF;YACF;YACA;YACA;UACF;QACF;;QAEA;;QAEA;QACA;UACE;cACI;UACJ;YACE;YACA;cACE;cACA;YACF;YACA;UACF;QACF;;QAEA;UACE;QACF;;;QAGA;UACE;UACA;YACE;YACA;cACE;cACA;cACA;gBACE;gBACA;cACF;YACF;cACE;YACF;UACF;UACA;QACF;;;QAGA;UACE;YACE;YACA;UACF;QACF;;;QAGA;UACE;;cAEI;UACJ;cACI;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;cACA;;;UAGJ;UACA;;YAEE;YACA;cACE;cACA;cACA;YACF;;YAEA;;YAEA;YACA;cACE;cACA;YACF;YACA;cACE;gBACE;cACF;YACF;cACE;gBACE;gBACA;gBACA;cACF;gBACE;cACF;cACA;YACF;YACA;;YAEA;YACA;YACA;cACE;cACA;cACA;cACA;YACF;UACF;UACA;YACE;cACE;cACA;YACF;cACE;cACA;YACF;UACF;;UAEA;UACA;eACK;eACA;YACH;YACA;;YAEA;YACA;;YAEA;cACE;cACA;gBACE;gBACA;cACF;cACA;cACA;cACA;YACF;cACE;cACA;;cAEA;cACA;gBACE;cACF;YACF;;YAEA;YACA;cACE;cACA;gBACE;gBACA;gBACA;kBACE;gBACF;gBACA;kBACE;gBACF;gBACA;gBACA;kBACE;kBACA;oBACE;oBACA;oBACA;oBACA;kBACF;gBACF;cACF;gBACE;;gBAEA;gBACA;kBACE;kBACA;gBACF;kBACE;kBACA;kBACA;kBACA;sBACI;sBACA;sBACA;sBACA;gBACN;;gBAEA;oBACI;oBACA;oBACA;oBACA;gBACJ;gBACA;kBACE;gBACF;kBACE;gBACF;gBACA;cACF;YACF;YACA;YACA;YACA;cACE;YACF;UACF;UACA;UACA;YACE;UACF;QACF;MACF;IACF;EACF;AACF;;AAEA;EACE;IACE;IACA;EACF;;EAEA;IACE;IACA;IACA;MACE;QACE;QACA;UACE;QACF;MACF;;MAEA;QACE;YACI;YACA;cACE;;QAEN;UACE;UACA;UACA;QACF;UACE;QACF;;QAEA;UACE;YACE;YACA;cACE;YACF;YACA;UACF;QACF;UACE;QACF;;QAEA;UACE;QACF;MACF;IACF;EACF;AACF;;AAEA;EACE;EACA;AACF;;EAEE;IACE;IACA;IACA;EACF;;EAEA;EACA;EACA;;EAEA;;EAEA;IACE;EACF;;AAEF;;AAEA;AC5nwBA;CACC;CACA;CACA;CACA;AACD;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;;EAEE;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY,iBAAiB;IAC3B;IACA;MACE;MACA;QACE;MACF;QACE;UACE;QACF;MACF;IACF;EACF;;EAEA;EACA;EACA;EACA;EACA,UAAU,eAAe;IACvB;IACA;MACE;MACA;QACE;QACA;QACA;QACA;QACA;QACA;QACA;MACF;IACF;EACF;;EAEA;IACE;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;;IAEA;MACE;QACE;QACA;UACE;QACF;MACF;IACF;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA,oBAAoB,QAAQ;QACxB;CACP;;MAEK;;MAEA;MACA;MACA;MACA;MACA;QACE;QACA;UACE;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;YACE;cACE;YACF;UACF;QACF;MACF;;MAEA;MACA;MACA;cACQ;cACA;gBACE;cACF;;MAER;QACE;QACA;UACE;UACA;UACA;QACF;QACA;MACF;;MAEA;QACE;QACA;UACE;QACF;QACA;UACE;YACE;UACF;QACF;QACA;MACF;;MAEA;QACE;QACA;;QAEA;UACE;YACE;YACA;UACF;QACF;;QAEA;UACE;YACE;YACA;UACF;QACF;;QAEA;QACA;UACE;YACE;UACF;QACF;;QAEA;QACA;UACE;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;YACE;YACA;cACE;YACF;UACF;YACE;YACA;cACE;YACF;UACF;QACF;;QAEA;MACF;;MAEA;QACE;UACE;cACI;cACA;;UAEJ;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;YACE;UACF;;UAEA;YACE;gBACI;YACJ;cACE;cACA;YACF;UACF;UACA;QACF;MACF;;MAEA;QACE;QACA;QACA;QACA;UACE;QACF;;QAEA;QACA;QACA;UACE;UACA;UACA;YACE;YACA;UACF;YACE;YACA;UACF;YACE;UACF;QACF;;QAEA;QACA;2BACmB;2BACA;;QAEnB;QACA;QACA;UACE;QACF;;QAEA;YACI;YACA;YACA;YACA;YACA;;QAEJ;QACA;UACE;UACA;YACE;YACA;UACF;QACF;;QAEA;UACE;UACA;UACA;YACE;cACE;cACA;cACA;YACF;YACA;cACE;YACF;YACA;cACE;YACF;YACA;UACF;QACF;;QAEA;UACE;UACA;YACE;UACF;;UAEA;UACA;YACE;cACE;cACA;cACA;YACF;YACA;UACF;;UAEA;UACA;UACA;UACA;YACE;cACE;YACF;YACA;cACE;gBACE;gBACA;cACF;gBACE;gBACA;cACF;gBACE;gBACA;cACF;gBACE;gBACA;YACJ;UACF;;UAEA;YACE;UACF;QACF;;QAEA;UACE;UACA;UACA;UACA;UACA;UACA;YACE;YACA;cACE;cACA;YACF;UACF;UACA;YACE;YACA;cACE;cACA;YACF;UACF;UACA;YACE;cACE;gBACE;cACF;cACA;YACF;YACA;cACE;gBACE;cACF;cACA;YACF;UACF;QACF;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;QACA;UACE;UACA;UACA;;UAEA;UACA;UACA;YACE;UACF;QACF;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;QACA;UACE;;UAEA;UACA;UACA;UACA;YACE;cACE;YACF;UACF;QACF;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;QACA;UACE;UACA;UACA;;UAEA;UACA;UACA;UACA;YACE;UACF;QACF;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;QACA;UACE;QACF;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;QACA;UACE;QACF;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;UACE;UACA;UACA;;UAEA;YACE;UACF;;UAEA;UACA;;UAEA;UACA;YACE;YACA;;YAEA;YACA;UACF;YACE;cACE;cACA;YACF;UACF;;UAEA;YACE;YACA;;YAEA;YACA;YACA;cACE;cACA;kBACI;gBACF;UACN;QACF;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;QACA;UACE;QACF;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;QACA;UACE;YACE;cACE;gBACE;cACF;gBACE;gBACA;gBACA;cACF;YACF;;YAEA;cACE;YACF;;YAEA;cACE;YACF;UACF;UACA;SACD;MACH;;MAEA;QACE;QACA;QACA;QACA;QACA;MACF;MACA;;QAEE;QACA;QACA;UACE;UACA;UACA;UACA;UACA;QACF;;QAEA;QACA;QACA;QACA;;QAEA;UACE;QACF;;QAEA;QACA;QACA;QACA;QACA;UACE;UACA;UACA;UACA;UACA;QACF;;QAEA;QACA;QACA;QACA;QACA;;QAEA;UACE;UACA;YACE;cACE;YACF;cACE;cACA;gBACE;cACF;cACA;cACA;YACF;UACF;YACE;YACA;UACF;UACA;YACE;YACA;cACE;YACF;cACE;cACA;YACF;UACF;;UAEA;YACE;cACE;YACF;UACF;QACF;;QAEA;UACE;QACF;;QAEA;UACE;UACA;UACA;UACA;UACA;QACF;;QAEA;QACA;;QAEA;UACE;UACA;UACA;UACA;YACE;YACA;YACA;cACE;cACA;gBACE;gBACA;cACF;YACF;UACF;QACF;;QAEA;QACA;QACA;;QAEA;QACA;QACA;;QAEA;UACE;UACA;UACA;UACA;QACF;;QAEA;QACA;QACA;QACA;UACE;UACA;wBACc;wBACA;;UAEd;UACA;YACE;UACF;YACE;YACA;UACF;QACF;;QAEA;;QAEA;UACE;UACA;YACE;cACE;gBACE;gBACA;cACF;YACF;UACF;QACF;;QAEA;UACE;QACF;;QAEA;UACE;QACF;;QAEA;UACE;UACA;QACF;;QAEA;QACA;QACA;UACE;YACE;YACA;UACF;QACF;;QAEA;UACE;YACE;YACA;YACA;cACE;iBACG;iBACA;iBACA;cACH;gBACE;cACF;gBACE;kBACE;kBACA;oBACE;kBACF;gBACF;gBACA;cACF;YACF;YACA;UACF;QACF;MACF;;MAEA;QACE;QACA;UACE;YACE;YACA;UACF;YACE;YACA;YACA;cACE;gBACE;cACF;YACF;UACF;QACF;MACF;;MAEA;QACE;UACE;YACE;YACA;UACF;QACF;UACE;;UAEA;UACA;YACE;YACA;UACF;;UAEA;YACE;YACA;UACF;QACF;MACF;;MAEA;QACE;UACE;QACF;;QAEA;UACE;QACF;;QAEA;QACA;UACE;UACA;UACA;UACA;;UAEA;UACA;UACA;YACE;UACF;;UAEA;UACA;UACA;YACE;UACF;;UAEA;UACA;UACA;YACE;YACA;cACE;YACF;UACF;;UAEA;mCACyB;mCACA;QAC3B;QACA;;QAEA;MACF;IACF;;IAEA;2BACuB;MACrB;MACA;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;QACE;QACA;QACA;MACF;QACE;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;QACE;QACA;MACF;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA;MACA;MACA;MACA;MACA;QACE;UACE;QACF;QACA;QACA;UACE;YACE;UACF;;UAEA;UACA;UACA;QACF;MACF;;MAEA;MACA;MACA;MACA;QACE;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;UACE;QACF;;QAEA;;QAEA;QACA;UACE;UACA;QACF;MACF;;MAEA;QACE;UACE;UACA;YACE;cACE;YACF;UACF;QACF;MACF;;MAEA;QACE;QACA;UACE;UACA;UACA;UACA;;UAEA;UACA;YACE;cACE;;cAEA;cACA;;cAEA;cACA;;cAEA;cACA;;cAEA;;cAEA;gBACE;cACF;cACA;YACF;UACF;UACA;YACE;YACA;YACA;YACA;YACA;UACF;UACA;YACE;UACF;QACF;QACA;MACF;;MAEA;QACE;QACA;UACE;UACA;QACF;UACE;QACF;QACA;MACF;;MAEA;QACE;QACA;QACA;UACE;UACA;QACF;QACA;MACF;;MAEA;QACE;;QAEA;QACA;QACA;;QAEA;QACA;UACE;UACA;UACA;;UAEA;;UAEA;;UAEA;QACF;;QAEA;;QAEA;QACA;QACA;QACA;;QAEA;UACE;UACA;QACF;;QAEA;QACA;6BACqB;6BACA;;QAErB;QACA;UACE;UACA;UACA;UACA;UACA;UACA;QACF;;QAEA;;QAEA;UACE;QACF;;QAEA;UACE;QACF;;QAEA;MACF;;MAEA;QACE;QACA;QACA;UACE;UACA;QACF;;QAEA;UACE;QACF;;QAEA;QACA;QACA;UACE;UACA;UACA;QACF;;QAEA;QACA;QACA;QACA;QACA;QACA;UACE;UACA;YACE;UACF;;UAEA;UACA;YACE;YACA;UACF;;UAEA;QACF;;QAEA;UACE;QACF;;QAEA;QACA;QACA;QACA;UACE;UACA;UACA;UACA;QACF;;QAEA;QACA;;QAEA;UACE;UACA;UACA;UACA;UACA;YACE;UACF;UACA;QACF;;QAEA;QACA;QACA;QACA;;QAEA;QACA;UACE;UACA;YACE;YACA;YACA;YACA;cACE;YACF;UACF;QACF;;QAEA;QACA;UACE;UACA;QACF;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;UACE;UACA;UACA;UACA;YACE;UACF;UACA;UACA;UACA;YACE;UACF;QACF;;QAEA;UACE;UACA;UACA;;UAEA;WACC;UACD;;UAEA;WACC;WACA;WACA;WACA;WACA;WACA;UACD;YACE;UACF;QACF;MACF;;MAEA;QACE;MACF;;MAEA;QACE;MACF;;MAEA;QACE;UACE;YACE;UACF;QACF;MACF;;MAEA;QACE;UACE;QACF;UACE;UACA;QACF;MACF;;MAEA;QACE;QACA;QACA;QACA;QACA;UACE;UACA;QACF;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;UACE;UACA;UACA;UACA;QACF;;QAEA;UACE;QACF;MACF;;MAEA;QACE;QACA;QACA;UACE;YACE;UACF;UACA;YACE;UACF;QACF;MACF;;MAEA;QACE;UACE;QACF;;QAEA;UACE;QACF;;QAEA;UACE;QACF;;QAEA;UACE;0BACgB;UAChB;UACA;YACE;YACA;UACF;UACA;QACF;;QAEA;UACE;UACA;YACE;YACA;UACF;UACA;QACF;;QAEA;UACE;UACA;YACE;YACA;UACF;UACA;QACF;;QAEA;UACE;UACA;UACA;UACA;QACF;;QAEA;UACE;QACF;;QAEA;UACE;QACF;MACF;;MAEA;QACE;QACA;QACA;UACE;YACE;UACF;QACF;QACA;MACF;IACF;EACF;;;AAGF;;ACv1DA;CACC;CACA;CACA;CACA;;AAED;;EAEE;IACE;EACF;;EAEA,YAAY,UAAU;IACpB;IACA;MACE;;MAEA;QACE;QACA;QACA;;UAEE;UACA;cACI;;UAEJ;UACA;YACE;UACF;;UAEA;UACA;YACE;YACA;YACA;UACF;;UAEA;UACA;UACA;UACA;;UAEA;cACI;cACA;4BACc;4BACA;4BACA;4BACA;cACd;wCAC0B;cAC1B;cACA;cACA;cACA;0BACY;0BACA;cACZ;4BACc;oCACQ;oCACA;oCACA;4BACR;oCACQ;oCACA;oCACA;0BACV;cACZ;cACA;cACA;cACA;cACA;cACA;cACA;2BACa;2BACA;2BACA;2BACA;2BACA;2BACA;2BACA;2BACA;;UAEjB;UACA;YACE;UACF;;UAEA;UACA;;UAEA;UACA;YACE;UACF;;UAEA;UACA;YACE;UACF;;UAEA;WACC;WACA;;UAED;YACE;YACA;YACA;YACA;cACE;YACF;YACA;UACF;;UAEA;YACE;gBACI;gBACA;gBACA;gBACA;;YAEJ;cACE;YACF;;YAEA;YACA;cACE;;cAEA;cACA;;cAEA;;cAEA;;cAEA;cACA;gBACE;gBACA;gBACA;cACF;;cAEA;;cAEA;gBACE;gBACA;cACF;gBACE;cACF;cACA;;cAEA;;cAEA;gBACE;gBACA;cACF;;cAEA;cACA;gBACE;cACF;;YAEF;UACF;;UAEA;YACE;YACA;UACF;;UAEA;WACC;WACA;;UAED;UACA;YACE;YACA;UACF;YACE;UACF;;UAEA;;UAEA;YACE;UACF;YACE;UACF;;UAEA;YACE;UACF;;UAEA;;UAEA;WACC;WACA;;UAED;YACE;YACA;UACF;QACF;MACF;IACF;EACF;;ACpNF;CACC;CACA;CACA;CACA;AACD;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;EACE;MACI;AACN;;AAEA;EACE;IACE;EACF;EACA;EACA;IACE;IACA;EACF;EACA;AACF;;AAEA;CACC;CACA;AACD;EACE;;EAEA;IACE;EACF;;EAEA;IACE;MACE;IACF;EACF;;EAEA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;KACI;OACE;OACA;KACF;CACJ;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;KACI;KACA;MACC;OACC;MACD;;KAED;KACA;OACE;OACA;;OAEA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;;OAEA;OACA;OACA;KACF;;KAEA;KACA;KACA;KACA;KACA;KACA;KACA;CACJ;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;GAEE;KACE;KACA;OACE;OACA;KACF;GACF;CACF;CACA;CACA;CACA;CACA;GACE;KACE;KACA;OACE;OACA;SACE;SACA;OACF;KACF;GACF;CACF;CACA;CACA;GACE;KACE;KACA;SACI;WACE;SACF;GACN;;CAEF;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;sCACqC;CACrC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE,UAAU,SAAS;IACjB;;IAEA;MACE;MACA;;MAEA;MACA;QACE;QACA;QACA;QACA;QACA;MACF;IACF;;IAEA;;MAEE;QACE;QACA;QACA;QACA;;MAEF;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;UACE;UACA;UACA;MACJ;;;MAGA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;UACE;UACA;UACA;UACA;UACA;MACJ;;MAEA;QACE;QACA;QACA;MACF;;MAEA;QACE;UACE;YACE;YACA;YACA;;UAEF;UACA;YACE;cACE;YACF;YACA;cACE;cACA;YACF;UACF;UACA;;UAEA;UACA;YACE;YACA;cACE;cACA;gBACE;cACF;YACF;cACE;kBACI;gBACF;kBACE;gBACF;kBACE;gBACF;cACF;YACF;UACF;;UAEA;UACA;YACE;UACF;;UAEA;UACA;UACA;UACA;UACA;;;UAGA;UACA;YACE;cACE;cACA;YACF;UACF;QACF;MACF;;;MAGA;QACE;;QAEA;;QAEA;UACE;UACA;UACA;YACE;YACA;cACE;UACJ;UACA;QACF;;QAEA;UACE;QACF;;QAEA;UACE;QACF;;QAEA;UACE;UACA;UACA;UACA;QACF;;QAEA;UACE;;UAEA;YACE;;YAEA;YACA;cACE;gBACE;gBACA;cACF;cACA;cACA;gBACE;kBACE;oBACE;oBACA;oBACA;kBACF;;kBAEA;kBACA;kBACA;gBACF;kBACE;kBACA;kBACA;kBACA;gBACF;cACF;gBACE;gBACA;gBACA;gBACA;cACF;cACA;gBACE;kBACE;kBACA;YACN;YACA;;YAEA;YACA;YACA;YACA;cACE;YACF;cACE;;YAEF;cACE;gBACE;cACF;YACF;;YAEA;YACA;cACE;cACA;;YAEF;cACE;gBACE;;cAEF;gBACE;gBACA;gBACA;kBACE;sBACI;sBACA;oBACF;gBACJ;gBACA;gBACA;kBACE;kBACA;oBACE;sBACE;oBACF;sBACE;sBACA;sBACA;sBACA;oBACF;kBACF;gBACF;kBACE;kBACA;gBACF;cACF;;cAEA;;cAEA;;cAEA;YACF;cACE;;cAEA;;cAEA;YACF;;YAEA;cACE;gBACE;gBACA;gBACA;cACF;cACA;;YAEF;cACE;cACA;cACA;cACA;cACA;;cAEA;YACF;;YAEA;YACA;UACF;;;UAGA;YACE;cACE;YACF;YACA;YACA;UACF;QACF;;QAEA;UACE;QACF;;QAEA;MACF;;MAEA;IACF;EACF;;;AAGF;;AC1pBA;;;;;ACIA;;IAEI;;IAEA;;IAEA;;IAEA;;IAEA;IACA;IACA;;IAEA;;;IAGA;;IAEA;;;;IAIA;;IAEA;;IAEA;;IAEA;;IAEA;IACA;IACA;;IAEA;;IAEA;;IAEA;;;IAGA;;MAEE;UACI;gBACM;gBACA;;MAEV;sBACgB;cACR;cACA;cACA;UACJ;MACJ;;gBAEU;MACV;UACI;MACJ;MACA;gBACU;gBACA;UACN;UACA;UACA;MACJ;;MAEA;QACE;UACE;UACA;MACJ;UACI;MACJ;;MAEA;;IAEF;IACA;;IAEA;MACE;QACE;MACF;IACF;IACA;MACE;QACE;MACF;IACF;;;IAGA;MACE;;QAEE;;QAEA;YACI;QACJ;;QAEA;YACI;;YAEA;;cAEE;cACA;cACA;;cAEA;kBACI;kBACA;cACJ;cACA;kBACI;cACJ;cACA;;YAEF;;cAEE;kBACI;kBACA;cACJ;;YAEF;;QAEJ;;QAEA;MACF;IACF;;IAEA;QACI;IACJ;;IAEA;QACI;IACJ;;IAEA;QACI;IACJ;;IAEA;QACI;IACJ;;IAEA;QACI;YACI;YACA;gBACI;YACJ;QACJ;QACA;IACJ;;IAEA;QACI;YACI;YACA;;4BAEgB;;4BAEA;gCACI;gBAChB;;4BAEY;YAChB;QACJ;QACA;IACJ;;IAEA;;QAEI;YACI;;YAEA;UACF;;YAEE;UACF;UACA;QACF;IACJ;QACI;;QAEA;UACE;QACF;UACE;YACE;UACF;QACF;;QAEA;IACJ;;;;IAIA;QACI;IACJ;;;IAGA;;QAEI;;wBAEgB;;sBAEF;YACV;UACF;QACF;QACA;IACJ;IACA;QACI;IACJ;IACA;QACI;oCAC4B;YACxB;;YAEA;QACJ;IACJ;;;;KAIC;OACE;SACE;WACE;aACE;WACF;SACF;OACF;;SAEE;;SAEA;8CACqC;SACrC;;SAEA;;SAEA;WACE;SACF;SACA;;OAEF;;OAEA;KACF;;;IAGD;IACA;;;IAGA;;IAEA;IACA;IACA;;;;IAIA;QACI;IACJ;;IAEA;;;IAGA;;oDAEgD;;IAEhD;;AAEJ;;ACvSA;AACA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;IAEI;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;YACQ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;QACJ;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;QACD;YACI;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;QACJ;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;YACI;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;QACJ;;QAEA;SACC;SACA;SACA;SACA;SACA;QACD;YACI;YACA;YACA;YACA;YACA;QACJ;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;QACD;;QAEA;SACC;SACA;SACA;SACA;QACD;;QAEA;SACC;SACA;SACA;SACA;QACD;;QAEA;SACC;SACA;SACA;SACA;SACA;QACD;;QAEA;SACC;SACA;SACA;SACA;QACD;;QAEA;SACC;SACA;SACA;SACA;QACD;;QAEA;SACC;SACA;SACA;SACA;QACD;;QAEA;SACC;SACA;SACA;SACA;SACA;QACD;;IAEJ;KACC;KACA;KACA;IACD;QACI;IACJ;;IAEA;KACC;KACA;IACD;QACI;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;QACI;YACI;YACA;QACJ;;QAEA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;IACD;;QAEI;QACA;YACI;;YAEA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;gBACI;YACJ;;YAEA;QACJ;;QAEA;QACA;YACI;QACJ;;QAEA;YACI;QACJ;;QAEA;;QAEA;QACA;QACA;QACA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;QACI;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;IACD;QACI;;QAEA;YACI;;QAEJ;YACI;gBACI;gBACA;YACJ;YACA;QACJ;;QAEA;YACI;QACJ;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;QACI;YACI;YACA;YACA;;QAEJ;QACA;YACI;QACJ;;QAEA;QACA;YACI;QACJ;;QAEA;QACA;QACA;YACI;;YAEA;YACA;YACA;gBACI;YACJ;;YAEA;YACA;YACA;gBACI;YACJ;;YAEA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;;gBAEI;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;oBACI;gBACJ;;gBAEA;YACJ;QACJ;;QAEA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;IACD;QACI;;QAEA;YACI;QACJ;;QAEA;YACI;QACJ;;QAEA;YACI;QACJ;;QAEA;YACI;QACJ;;QAEA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;IACD;QACI;YACI;YACA;QACJ;;QAEA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;IACD;QACI;YACI;YACA;QACJ;;QAEA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;QAEI;QACA;YACI;QACJ;;QAEA;YACI;YACA;QACJ;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;QACI;YACI;YACA;YACA;YACA;;QAEJ;QACA;YACI;gBACI;YACJ;QACJ;;QAEA;QACA;;YAEI;YACA;YACA;YACA;YACA;YACA;;gBAEI;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;oBACI;gBACJ;;gBAEA;;gBAEA;gBACA;gBACA;gBACA;YACJ;;YAEA;YACA;YACA;gBACI;YACJ;QACJ;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;YACI;QACJ;;QAEA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;IACD;;QAEI;QACA;QACA;YACI;QACJ;;QAEA;;QAEA;QACA;YACI;QACJ;;QAEA;QACA;YACI;YACA;QACJ;;QAEA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;IACD;QACI;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;QACI;QACA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;IACD;QACI;YACI;YACA;;gBAEI;gBACA;gBACA;oBACI;gBACJ;;gBAEA;oBACI;gBACJ;YACJ;QACJ;QACA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;;QAEI;QACA;QACA;YACI;QACJ;;QAEA;QACA;QACA;YACI;QACJ;;QAEA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;QAEI;QACA;QACA;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;QACD;YACI;gBACI;gBACA;gBACA;YACJ;QACJ;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;QACD;YACI;;YAEA;YACA;YACA;YACA;gBACI;YACJ;;YAEA;YACA;YACA;QACJ;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;YACI;YACA;YACA;QACJ;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;IACD;QACI;YACI;QACJ;;QAEA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;QACI;YACI;YACA;YACA;;QAEJ;QACA;QACA;;QAEA;YACI;;YAEA;YACA;gBACI;YACJ;;YAEA;YACA;YACA;YACA;gBACI;gBACA;YACJ;;YAEA;YACA;gBACI;YACJ;QACJ;;QAEA;QACA;QACA;;QAEA;YACI;YACA;YACA;QACJ;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;QAEI;QACA;;QAEA;QACA;;QAEA;YACI;;QAEJ;QACA;QACA;YACI;YACA;QACJ;;QAEA;;QAEA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;YACI;YACA;YACA;YACA;YACA;YACA;QACJ;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;QACI;YACI;QACJ;IACJ;;IAEA;IACA;IACA;IACA;;IAEA;;QAEI;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;YACI;YACA;YACA;QACJ;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;YACI;QACJ;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;QACD;YACI;gBACI;YACJ;YACA;QACJ;;QAEA;SACC;SACA;SACA;SACA;SACA;SACA;QACD;YACI;YACA;YACA;QACJ;;OAED;QACC;QACA;QACA;QACA;QACA;QACA;QACA;;YAEI;YACA;gBACI;YACJ;;YAEA;YACA;QACJ;;QAEA;SACC;SACA;QACD;IACJ;;IAEA;IACA;;IAEA;IACA;QACI;IACJ;AACJ;;ACx7BA;AACA;AACA;;AAEA;;AAEA,eAAe,OAAO;EACpB;IACE;MACE;QACE;MACF;IACF;EACF;AACF;;AAEA,aAAa,KAAK;EAChB;IACE;MACE;QACE;MACF;IACF;EACF;AACF;;AAEA;AACA;AC3BA;;AAEA;IACI;KACC;KACA;KACA;KACA;KACA;IACD;AACJ;;AAEA,mCAAmC,cAAc;IAC7C;;IAEA;QACI;YACI;QACJ;YACI;QACJ;IACJ;;IAEA;QACI;YACI;QACJ;YACI;QACJ;IACJ;;IAEA;QACI;IACJ;;IAEA;QACI;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;YACI;YACA;QACJ;;QAEA;YACI;gBACI;YACJ;;YAEA;gBACI;gBACA;oBACI;gBACJ;oBACI;gBACJ;YACJ;;YAEA;QACJ;;QAEA;YACI;YACA;YACA;QACJ;;QAEA;YACI;YACA;YACA;QACJ;;QAEA;YACI;YACA;YACA;YACA;QACJ;;QAEA;YACI;gBACI;gBACA;gBACA;YACJ;gBACI;oBACI;gBACJ;YACJ;QACJ;IACJ;;IAEA;AACJ;;AAEA,qCAAqC,SAAS;IAC1C;IACA;IACA;QACI;YACI;gBACI;YACJ;QACJ;QACA;YACI;QACJ;IACJ;;IAEA;QACI;YACI;QACJ;IACJ;;IAEA;QACI;QACA;QACA;YACI;YACA;YACA;;YAEA;YACA;;YAEA;gBACI;oBACI;oBACA;;oBAEA;wBACI;wBACA;wBACA;4BACI;4BACA;4BACA;wBACJ;4BACI;wBACJ;;wBAEA;wBACA;wBACA;wBACA;wBACA;wBACA;wBACA;oBACJ;;oBAEA;wBACI;oBACJ;;oBAEA;;oBAEA;gBACJ;YACJ;QACJ;IACJ;AACJ;;AAEA,kCAAkC,SAAS;IACvC;QACI;IACJ;IACA;IACA;AACJ;;AAEA;AACA,mCAAmC,cAAc;IAC7C;QACI;YACI;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;YACA;YACA;YACA;YACA;YACA;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;YACA;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;gBACA;YACJ;gBACI;QACR;IACJ;AACJ;;ACrSA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;;EAEE;;EAEA,4CAA4C,OAAO;;IAEjD;KACC;KACA;KACA;IACD;;IAEA;KACC;KACA;KACA;;IAED;;IAEA;KACC;KACA;KACA;IACD;sBACkB;sBACA;wBACE;0BACE;4BACE;0BACF;0BACA;wBACF;sBACF;sBACA;oBACF;;IAEhB;KACC;KACA;KACA;IACD;;IAEA;KACC;KACA;KACA;IACD;;IAEA,YAAY,mEAAA;;MAEV;MACA;MACA;MACA;QACE;QACA;UACE;QACF;;QAEA;MACF;;MAEA;OACC;OACA;OACA;OACA;MACD;QACE;UACE;UACA;UACA;UACA;UACA;UACA;UACA;UACA;QACF;QACA;;QAEA;UACE;UACA;YACE;cACE;YACF;cACE;YACF;UACF;;UAEA;QACF;;QAEA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;MACD;;QAEE;QACA;QACA;;QAEA;QACA;UACE;QACF;;QAEA;MACF;;MAEA;OACC;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;MACD;;;MAGA;OACC;OACA;OACA;OACA;OACA;OACA;MACD;;;MAGA;QACE;;QAEA;UACE;YACE;YACA;YACA;YACA;YACA;cACE;YACF;;YAEA;YACA;YACA;YACA;UACF;QACF;MACF;;;MAGA;MACA;QACE;QACA;QACA;QACA;;QAEA;QACA;UACE;QACF;;QAEA;MACF;;;MAGA;OACC;OACA;OACA;OACA;OACA;MACD;QACE;QACA;UACE;UACA;YACE;UACF;QACF;MACF;;MAEA;OACC;OACA;MACD;;MAEA;QACE;;QAEA;QACA;QACA;QACA;UACE;UACA;;UAEA;UACA;UACA;UACA;QACF;UACE;;UAEA;UACA;YACE;UACF;QACF;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;;QAEE;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;UACE;UACA;UACA;UACA;UACA;UACA;QACF;;QAEA;QACA;UACE;UACA;UACA;QACF;UACE;QACF;;QAEA;QACA;QACA;QACA;UACE;QACF;;QAEA;QACA;QACA;QACA;QACA;;UAEE;UACA;;UAEA;UACA;YACE;UACF;;UAEA;UACA;UACA;YACE;YACA;YACA;cACE;YACF;UACF;;UAEA;UACA;YACE;YACA;YACA;;YAEA;YACA;cACE;YACF;cACE;cACA;gBACE;kBACE;kBACA;gBACF;cACF;YACF;;YAEA;cACE;YACF;UACF;QACF;;QAEA;UACE;QACF;UACE;QACF;;QAEA;QACA;QACA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;QACE;;QAEA;;QAEA;UACE;UACA;UACA;YACE;UACF;UACA;QACF;UACE;;UAEA;YACE;YACA;cACE;YACF;cACE;YACF;YACA;UACF;QACF;;QAEA;;MAEF;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;;QAEE;;QAEA;UACE;;UAEA;YACE;UACF;QACF;;QAEA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;QACE;QACA;;UAEE;UACA;;UAEA;YACE;YACA;cACE;cACA;YACF;UACF;QACF;QACA;QACA;QACA;UACE;YACE;;YAEA;cACE;YACF;cACE;YACF;;YAEA;YACA;UACF;QACF;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;MACD;QACE;QACA;;UAEE;UACA;UACA;UACA;YACE;YACA;YACA;cACE;YACF;UACF;;UAEA;UACA;UACA;YACE;YACA;UACF;QACF;MACF;;;MAGA;QACE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;MACF;;MAEA;;IAEF,CAAC,CAAA;EACH;;EAEA,YAAY,MAAM,GAAG,YAAA;IACnB;MACE;MACA;QACE;;QAEA;UACE;UACA;;UAEA;;UAEA;YACE;YACA;YACA;YACA;YACA;UACF;QACF;;QAEA;QACA;UACE;QACF;MACF;IACF;EACF,CAAC,CAAA;;EAED,KAAK,YAAA;IACH;IACA;EACF,CAAC,CAAA;;AAEH;;ACljBA;CACC;CACA;CACA;CACA;CACA;;AAED;AACA;EACE;AACF;;AAEA;AACA;AACA;AACA;;AAEA;IACI;IACA;IACA;IACA;IACA;IACA;IACA;;AAEJ;EACE;AACF;;AAEA;EACE;IACE;MACE;QACE;MACF;IACF;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;IACE;IACA;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;AACD;EACE;IACE;EACF;EACA;;EAEA;IACE;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;EACF;EACA;EACA;;EAEA;;EAEA;IACE;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;IACE;IACA;IACA;;IAEA;MACE;MACA;MACA;IACF;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;IACE;IACA;EACF;;EAEA;IACE;IACA;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;IACE;EACF;EACA;AACF;;AAEA;AACA;AACA;EACE;EACA;IACE;EACF;EACA;AACF;;AAEA;AACA;AACA;EACE;EACA;EACA;IACE;EACF;EACA;AACF;;AAEA;AACA;AACA;EACE;EACA;EACA;IACE;EACF;EACA;AACF;;AAEA;EACE;;EAEA;IACE;EACF;EACA;AACF;;AAEA;EACE;EACA;EACA;IACE;MACE;IACF;EACF;EACA;AACF;;AAEA;EACE;;EAEA;IACE;EACF;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;;EAEE;MACI;MACA;MACA;MACA;MACA;;;EAGJ;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;;IAEA;IACA;IACA;MACE;;MAEA;MACA;QACE;QACA;MACF;MACA;;MAEA;QACE;MACF;QACE;QACA;UACE;QACF;QACA;MACF;;MAEA;MACA;IACF;IACA;IACA;;IAEA;MACE;IACF;;IAEA;MACE;QACE;MACF;MACA;MACA;QACE;MACF;MACA;MACA;QACE;MACF;;MAEA;MACA;MACA;UACI;UACA;UACA;UACA;UACA;;MAEJ;QACE;QACA;UACE;UACA;UACA;UACA;UACA;QACF;MACF;;MAEA;QACE;QACA;MACF;;MAEA;MACA;QACE;QACA;MACF;;MAEA;QACE;MACF;;MAEA;MACA;MACA;MACA;QACE;QACA;QACA;MACF;QACE;UACE;QACF;QACA;MACF;;MAEA;MACA;QACE;QACA;MACF;;MAEA;QACE;QACA;QACA;UACE;UACA;QACF;QACA;QACA;QACA;UACE;YACE;YACA;cACE;cACA;YACF;UACF;QACF;QACA;QACA;UACE;UACA;YACE;YACA;cACE;cACA;YACF;UACF;YACE;UACF;QACF;QACA;QACA;MACF;;MAEA;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;AACF;;AAEA,0CAA0C,QAAQ;;;AAGlD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;;EAEE;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;MACA;MACA;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;QACI;QACA;EACN;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;AACF;;AAEA,0CAA0C,gBAAgB;;AAE1D;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;MACI;MACA;MACA;MACA;MACA;MACA;;EAEJ;IACE;IACA;IACA;IACA;IACA;IACA;EACF;;EAEA;IACE;IACA;IACA;MACE;MACA;MACA;IACF;IACA;EACF;;EAEA;;EAEA;EACA;EACA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;MACE;IACF;EACF;;EAEA;EACA;IACE;IACA;;IAEA;IACA;IACA;IACA;EACF;EACA;;EAEA;EACA;;EAEA;IACE;IACA;IACA;;IAEA;MACE;MACA;QACE;QACA;QACA;QACA;MACF;IACF;EACF;IACE;IACA;EACF;;EAEA;EACA;;EAEA;EACA;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;EACA;EACA;IACE;IACA;IACA;EACF;EACA;AACF;;AAEA;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;EACA;;EAEA;IACE;IACA;;EAEF;;EAEA;IACE;IACA;;IAEA;IACA;IACA;EACF;;EAEA;IACE;IACA;IACA;IACA;IACA;MACE;IACF;IACA;IACA;EACF;EACA;IACE;IACA;EACF;;EAEA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;EACA;;EAEA;;EAEA;IACE;EACF;;EAEA;IACE;IACA;IACA;IACA;IACA;;IAEA;MACE;MACA;QACE;UACE;YACE;UACF;YACE;UACF;QACF;QACA;MACF;QACE;QACA;MACF;QACE;MACF;IACF;MACE;MACA;MACA;MACA;MACA;IACF;EACF;;EAEA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;AACF;;AAEA;EACE;EACA;AACF;;AAEA;;AAEA;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;EACA;EACA;;EAEA;IACE;MACE;QACE;MACF;IACF;;IAEA;IACA;IACA;IACA;MACE;QACE;QACA;QACA;MACF;IACF;IACA;;IAEA;IACA;MACE;QACE;QACA;QACA;UACE;QACF;MACF;IACF;;IAEA;IACA;MACE;QACE;QACA;QACA;UACE;QACF;QACA;MACF;IACF;;IAEA;IACA;IACA;IACA;IACA;IACA;EACF;AACF;;;;AAIA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;AACD;EACE;;EAEA;;EAEA;EACA;AACF;AACA;EACE;;EAEA;IACE;MACE;MACA;MACA;MACA;IACF;IACA;MACE;MACA;MACA;MACA;IACF;IACA;MACE;MACA;MACA;MACA;IACF;IACA;MACE;QACE;UACE;QACF;UACE;UACA;QACF;MACF;MACA;QACE;QACA;QACA;MACF;MACA;MACA;MACA;MACA;IACF;IACA;MACE;MACA;MACA;MACA;MACA;IACF;IACA;MACE;MACA;MACA;MACA;MACA;IACF;EACF;;EAEA;IACE;MACE;MACA;IACF;EACF;;EAEA;IACE;EACF;;EAEA;GACC;GACA;EACD;IACE;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;MACE;IACF;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;;IAEA;MACE;QACE;MACF;IACF;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;;IAEA;IACA;MACE;MACA;IACF;IACA;EACF;;EAEA;EACA;IACE;MACE;MACA;MACA;IACF;EACF;;EAEA;EACA;EACA;;EAEA;EACA;IACE;IACA;IACA;;IAEA;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;IACA;IACA;IACA;IACA;MACE;IACF;IACA;IACA;;IAEA;MACE;MACA;wBACkB;MAClB;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;IACA;MACE;MACA;MACA;IACF;;IAEA;KACC;KACA;IACD;MACE;MACA;MACA;MACA;MACA;IACF;;IAEA;MACE;QACE;QACA;MACF;MACA;MACA;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;IACD;MACE;MACA;QACE;QACA;MACF;MACA;MACA;IACF;;IAEA;;IAEA;MACE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;EACF;;EAEA;IACE;EACF;;EAEA;IACE;MACE;IACF;IACA;MACE;QACE;MACF;MACA;MACA;QACE;YACI;QACJ;MACF;MACA;IACF;IACA;MACE;MACA;QACE;MACF;MACA;IACF;IACA;MACE;MACA;QACE;QACA;MACF;MACA;IACF;IACA;MACE;;MAEA;QACE;QACA;QACA;QACA;MACF;MACA;IACF;IACA;EACF;;EAEA;AACF;;AAEA;AACA,2CAA2C,kBAAkB;AAC7D;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;EACE;;EAEA;EACA;IACE;IACA;EACF;;EAEA;EACA;IACE;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;IACF;IACA;IACA;IACA;EACF;;;EAGA;IACE;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;;IAEA;MACE;;IAEF;MACE;QACE;UACE;UACA;QACF;QACA;UACE;QACF;UACE;QACF;MACF;MACA;QACE;;QAEA;UACE;UACA;QACF;QACA;UACE;QACF;UACE;QACF;MACF;IACF;;IAEA;;IAEA;MACE;IACF;;IAEA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;YACS;GACT;EACD;IACE;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACA;EACA;;IAEE;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;IACA;MACE;MACA;MACA;MACA;;MAEA;QACE;;QAEA;QACA;QACA;MACF;MACA;;MAEA;QACE;MACF;MACA;MACA;IACF;;IAEA;MACE;MACA;IACF;;IAEA;;IAEA;MACE;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;MACF;;MAEA;QACE;MACF;;MAEA;QACE;UACE;UACA;QACF;QACA;;QAEA;QACA;MACF;;MAEA;QACE;QACA;QACA;MACF;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;;QAEA;QACA;UACE;QACF;;QAEA;QACA;;QAEA;UACE;QACF;QACA;;QAEA;UACE;QACF;;QAEA;QACA;;QAEA;MACF;IACF;EACF;AACF;;AAEA,6CAA6C,UAAU;;AAEvD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;;EAEE;;EAEA;EACA;;IAEE;IACA;IACA;IACA;MACE;MACA;MACA;MACA;MACA;IACF;;IAEA;IACA;MACE;QACE;MACF;MACA;IACF;;IAEA;IACA;MACE;;MAEA;QACE;QACA;MACF;;MAEA;MACA;IACF;;IAEA;IACA;MACE;IACF;;IAEA;IACA;MACE;MACA;QACE;MACF;MACA;IACF;;IAEA;IACA;MACE;IACF;;IAEA;IACA;IACA;IACA;IACA;IACA;MACE;;MAEA;QACE;QACA;MACF;MACA;IACF;;IAEA;IACA;MACE;IACF;;IAEA;IACA;MACE;MACA;MACA;IACF;;IAEA;EACF;;EAEA;IACE;EACF;;EAEA;IACE;;IAEA;QACI;QACA;;IAEJ;MACE;MACA;;MAEA;;MAEA;QACE;UACE;UACA;QACF;QACA;UACE;UACA;UACA;QACF;QACA;MACF;MACA;MACA;IACF;IACA;;IAEA;MACE;IACF;IACA;EACF;;EAEA;IACE;MACE;IACF;IACA;EACF;;EAEA;IACE;IACA;MACE;IACF;EACF;;EAEA;IACE;IACA;MACE;MACA;MACA;IACF;;IAEA;IACA;IACA;;IAEA;IACA;QACI;QACA;QACA;;IAEJ;IACA;MACE;IACF;;IAEA;MACE;IACF;IACA;;IAEA;IACA;MACE;QACE;UACE;QACF;MACF;IACF;;IAEA;IACA;;IAEA;EACF;;EAEA;EACA;IACE;EACF;;EAEA;EACA;IACE;QACI;;IAEJ;IACA;OACG;OACA;IACH;IACA;IACA;OACG;OACA;IACH;;IAEA;MACE;IACF;;IAEA;IACA;MACE;QACE;MACF;IACF;;IAEA;EACF;;;EAGA;EACA;IACE;IACA;IACA;IACA;EACF;EACA;;;EAGA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACA;IACE;IACA;MACE;IACF;IACA;MACE;IACF;IACA;MACE;IACF;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACA;IACE;IACA;IACA;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACA;EACA;;IAEE;IACA;IACA;IACA;;IAEA;IACA;IACA;MACE;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;QACE;QACA;MACF;;MAEA;QACE;MACF;;MAEA;MACA;QACE;QACA;MACF;MACA;;MAEA;QACE;QACA;QACA;MACF;QACE;MACF;MACA;;MAEA;IACF;;IAEA;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;MACF;;MAEA;MACA;;MAEA;QACE;QACA;;QAEA;UACE;QACF;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;UACE;UACA;QACF;MACF;MACA;MACA;MACA;;MAEA;MACA;;MAEA;;MAEA;MACA;;MAEA;QACE;UACE;UACA;UACA;QACF;MACF;;MAEA;MACA;MACA;MACA;MACA;MACA;QACE;QACA;QACA;MACF;;MAEA;MACA;;MAEA;MACA;QACE;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;UACE;UACA;QACF;MACF;;MAEA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA;QACE;QACA;MACF;;MAEA;MACA;MACA;MACA;MACA;QACE;;QAEA;;QAEA;QACA;UACE;UACA;YACE;UACF;UACA;QACF;;QAEA;QACA;UACE;UACA;UACA;YACE;UACF;QACF;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;;QAEA;UACE;YACE;UACF;QACF;;QAEA;QACA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;UACC;QACF;QACA;;QAEA;MACF;QACE;;QAEA;QACA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;QACD;;QAEA;YACI;QACJ;;QAEA;MACF;;MAEA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;;MAEA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;UACE;QACF;QACA;MACF;;MAEA;MACA;MACA;MACA;IACF;;;IAGA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;QACA;QACA;QACA;MACF;;MAEA;;MAEA;MACA;;MAEA;;MAEA;QACE;MACF;MACA;QACE;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;MACA;MACA;;MAEA;MACA;MACA;MACA;MACA;MACA;QACE;MACF;MACA;;MAEA;MACA;QACE;QACA;UACE;QACF;;QAEA;UACE;UACA;YACE;YACA;UACF;YACE;UACF;UACA;UACA;UACA;UACA;QACF;MACF;;MAEA;MACA;QACE;MACF;IACF;;IAEA;EACF;;EAEA;IACE;MACE;IACF;EACF;AACF;;AAEA;EACE;EACA,WAAW,MAAM;;;AAGnB;AACA;;EAEE;EACA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;EACA;IACE;MACE;MACA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;UACE;QACF;QACA;;QAEA;UACE;QACF;QACA;QACA;SACC;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;UACC;QACF;QACA;MACF;IACF;EACF;AACF;;AAEA,4CAA4C,KAAK;;AAEjD;CACC;CACA;CACA;CACA;CACA;CACA;AACD;;EAEE;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;MACE;IACF;;IAEA;MACE;QACE;MACF;IACF;EACF;AACF;;AAEA,4CAA4C,aAAa;;AAEzD;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;;EAEE;IACE;MACE;IACF;MACE;QACE;MACF;QACE;MACF;IACF;EACF;;EAEA;MACI;MACA;;EAEJ;EACA;EACA;IACE;MACE;QACE;QACA;MACF;IACF;;IAEA;MACE;QACE;UACE;UACA;QACF;QACA;UACE;UACA;QACF;MACF;IACF;;IAEA;MACE;;MAEA;QACE;QACA;MACF;IACF;;IAEA;EACF;;EAEA;IACE;IACA;IACA;IACA;IACA;MACE;QACE;YACI;YACA;YACA;;QAEJ;UACE;QACF;QACA;UACE;QACF;;QAEA;;QAEA;UACE;YACE;YACA;UACF;;UAEA;YACE;YACA;UACF;;UAEA;YACE;cACE;YACF;;YAEA;YACA;UACF;QACF;;QAEA;UACE;cACI;cACA;;UAEJ;UACA;UACA;;UAEA;YACE;cACE;gBACE;cACF;;cAEA;gBACE;cACF;YACF;YACA;UACF;;UAEA;UACA;UACA;WACC;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;UACD;UACA;QACF;MACF;IACF;EACF;;EAEA;AACF;;AAEA;AACA;EACE;IACE;IACA;IACA;MACE;MACA;QACE;YACI;YACA;;QAEJ;UACE;QACF;;QAEA;QACA;;QAEA;;QAEA;UACE;UACA;UACA;YACE;UACF;UACA;UACA;QACF;;QAEA;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;AACD;EACE;EACA;EACA;AACF;;AAEA,6CAA6C,MAAM;AACnD,6CAA6C,MAAM;;AAEnD;EACE;EACA;EACA;EACA;EACA;AACF;;AAEA;EACE;;EAEA;IACE;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;EACE;;EAEA;IACE;IACA;IACA;MACE;MACA;MACA;MACA;MACA;;MAEA;MACA;;MAEA;QACE;UACE;QACF;MACF;;MAEA;QACE;QACA;;QAEA;;QAEA;QACA;UACE;QACF;QACA;UACE;UACA;QACF;QACA;MACF;;MAEA;QACE;UACE;QACF;QACA;MACF;MACA;;MAEA;;MAEA;QACE;QACA;UACE;UACA;YACE;UACF;UACA;;UAEA;UACA;UACA;YACE;cACE;UACJ;QACF;MACF;IACF;EACF;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;;AAED;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;EACE;IACE;IACA;MACE;;MAEA;MACA;MACA;MACA;;MAEA;MACA;QACE;QACA;QACA;MACF;;MAEA;;MAEA;MACA;QACE;UACE;QACF;UACE;QACF;MACF;;MAEA;QACE;UACE;QACF;UACE;QACF;MACF;IACF;EACF;AACF;;AAEA;EACE,YAAY,MAAM;EAClB,YAAY,YAAY;EACxB,YAAY,cAAc;;AAE5B;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;EACE;IACE;EACF;EACA;EACA;AACF;;AAEA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;AACA;EACE;IACE;EACF;EACA;EACA;AACF;;AAEA;EACE,SAAS,OAAO;EAChB,SAAS,eAAe;AAC1B;ACvoIA;CACC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACD;;EAEE;EACA;;EAEA;EACA;MACI;;EAEJ;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;IACE;IACA;;IAEA;IACA;;IAEA;IACA;EACF;;EAEA;EACA;MACI;MACA;;EAEJ;GACC;GACA;GACA;EACD;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;IACE;IACA;IACA;EACF;;EAEA;EACA;IACE;IACA;EACF;;EAEA;EACA;;EAEA;EACA;MACI;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;;EAEJ;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;EACA;IACE;IACA;IACA;EACF;;EAEA;EACA;IACE;IACA;IACA;IACA;EACF;;EAEA;EACA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACF;;EAEA;EACA;IACE;IACA;IACA;IACA;IACA;IACA;EACF;;EAEA;EACA;IACE;IACA;IACA;IACA;IACA;IACA;IACA;EACF;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;;EAEA;EACA;EACA;IACE;EACF;;EAEA;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;QACI;;IAEJ;MACE;QACE;MACF;IACF;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;;IAEA;MACE;IACF;IACA;MACE;IACF;IACA;IACA;;IAEA;MACE;MACA;EACJ;;EAEA;GACC;GACA;GACA;GACA;GACA;EACD;IACE;QACI;;IAEJ;MACE;IACF;MACE;QACE;MACF;MACA;UACI;;MAEJ;QACE;MACF;QACE;MACF;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;QACI;QACA;QACA;;IAEJ;MACE;UACI;;MAEJ;QACE;UACE;QACF;QACA;UACE;QACF;MACF;IACF;IACA;IACA;IACA;IACA;IACA;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;EACD;IACE;QACI;QACA;QACA;QACA;;IAEJ;QACI;MACF;IACF;IACA;IACA;;IAEA;IACA;IACA;IACA;;IAEA;MACE;IACF;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;EACD;IACE;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;EACD;IACE;MACE;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;MACA;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;EACD;IACE;IACA;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;EACD;IACE;IACA;MACE;IACF;IACA;IACA;MACE;IACF;EACF;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;MACE;IACF;IACA;QACI;QACA;;IAEJ;MACE;IACF;IACA;EACF;;EAEA;;EAEA;GACC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD;IACE;IACA;IACA;IACA;IACA;;IAEA;IACA;QACI;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;IAEJ;KACC;KACA;KACA;KACA;KACA;IACD;;IAEA;IACA;QACI;QACA;;IAEJ;IACA;;IAEA;IACA;;IAEA;IACA;MACE;QACE;QACA;IACJ;;IAEA;IACA;QACI;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;IAEJ;IACA;MACE;MACA;QACE;YACI;YACA;MACN;MACA;IACF;;IAEA;IACA;QACI;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;IAEJ;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;;IAEA;MACE;MACA;QACE;QACA;UACE;YACE;UACF;QACF;MACF;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;OACC;OACA;IACH;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;IACA;IACA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;;IAEA;MACE;UACI;UACA;;MAEJ;MACA;MACA;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;OACA;OACA;MACD;QACE;MACF;QACE;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;MAEE;OACC;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;;MAEA;OACC;OACA;OACA;OACA;OACA;MACD;;QAEE;SACC;SACA;SACA;SACA;SACA;QACD;MACF;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;;MAEE;MACA;MACA;MACA;MACA;MACA;MACA;OACC;MACD;MACA;MACA;OACC;MACD;OACC;MACD;MACA;MACA;OACC;MACD;MACA;MACA;OACC;;OAEA;MACD;OACC;;OAEA;MACD;OACC;;UAEG;;OAEH;MACD;UACI;MACJ;MACA;MACA;OACC;MACD;MACA;MACA;OACC;MACD;OACC;MACD;OACC;MACD;UACI;MACJ;MACA;MACA;OACC;MACD;MACA;MACA;OACC;MACD;OACC;MACD;OACC;MACD;OACC;MACD;MACA;MACA;cACQ;MACR;OACC;MACD;MACA;MACA;OACC;MACD;OACC;;OAEA;;OAEA;MACD;OACC;MACD;MACA;MACA;;MAEA;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;;MAEJ;QACE;QACA;QACA;UACE;UACA;UACA;UACA;UACA;QACF;QACA;QACA;QACA;UACE;UACA;cACI;UACJ;QACF;QACA;MACF;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;QACA;UACE;QACF;MACF;MACA;MACA;MACA;QACE;QACA;UACE;QACF;QACA;QACA;UACE;UACA;YACE;;UAEF;UACA;YACE;;UAEF;YACE;YACA;YACA;QACJ;MACF;QACE;MACF;MACA;MACA;QACE;QACA;QACA;QACA;;QAEA;QACA;UACE;YACE;UACF;QACF;QACA;MACF;MACA;QACE;MACF;MACA;MACA;QACE;UACE;QACF;QACA;UACE;QACF;MACF;MACA;MACA;QACE;MACF;MACA;MACA;MACA;MACA;;MAEA;MACA;QACE;MACF;;MAEA;QACE;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;IACA;IACA;MACE;QACE;QACA;UACE;YACE;YACA;YACA;UACF;UACA;QACF;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;MACA;MACA;QACE;MACF;MACA;MACA;QACE;UACE;QACF;QACA;QACA;UACE;UACA;YACE;UACF;UACA;YACE;YACA;YACA;UACF;QACF;MACF;MACA;MACA;QACE;MACF;MACA;QACE;UACE;QACF;QACA;UACE;QACF;QACA;UACE;QACF;QACA;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;UACA;UACA;;MAEJ;UACI;UACA;UACA;UACA;;MAEJ;QACE;QACA;UACE;UACA;QACF;QACA;UACE;UACA;YACE;UACF;UACA;YACE;YACA;UACF;QACF;QACA;QACA;UACE;QACF;QACA;UACE;UACA;UACA;QACF;QACA;MACF;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;UACA;;MAEJ;QACE;QACA;UACE;UACA;QACF;UACE;QACF;MACF;MACA;QACE;QACA;UACE;QACF;MACF;MACA;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;;MAEJ;QACE;;QAEA;YACI;UACF;UACA;YACE;UACF;UACA;cACI;cACA;;UAEJ;UACA;YACE;UACF;QACF;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;QACA;UACE;QACF;MACF;MACA;MACA;QACE;QACA;MACF;MACA;UACI;;MAEJ;MACA;UACI;UACA;QACF;MACF;MACA;MACA;MACA;QACE;MACF;MACA;MACA;UACI;;MAEJ;QACE;MACF;MACA;QACE;MACF;MACA;QACE;MACF;MACA;QACE;QACA;UACE;UACA;UACA;;QAEF;UACE;UACA;YACE;YACA;YACA;;QAEJ;QACA;UACE;UACA;UACA;MACJ;MACA;MACA;QACE;QACA;YACI;;QAEJ;UACE;QACF;QACA;QACA;UACE;QACF;QACA;QACA;YACI;;QAEJ;QACA;cACM;cACA;YACF;UACF;QACF;MACF;MACA;MACA;MACA;MACA;MACA;MACA;;MAEA;MACA;QACE;UACE;QACF;MACF;MACA;MACA;;MAEA;MACA;MACA;;MAEA;MACA;QACE;QACA;QACA;QACA;;QAEA;UACE;UACA;YACE;gBACI;;YAEJ;cACE;gBACE;kBACE;gBACF;cACF;YACF;cACE;YACF;UACF;QACF;MACF;MACA;QACE;QACA;QACA;UACE;YACE;YACA;YACA;YACA;UACF;QACF;;QAEA;UACE;UACA;YACE;cACE;cACA;YACF;UACF;QACF;MACF;MACA;MACA;;MAEA;QACE;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;YACI;YACA;YACA;;QAEJ;UACE;UACA;UACA;YACE;cACE;cACA;YACF;UACF;UACA;YACE;YACA;cACE;cACA;gBACE;cACF;YACF;YACA;cACE;gBACE;gBACA;YACJ;YACA;YACA;YACA;;YAEA;YACA;cACE;YACF;UACF;QACF;QACA;UACE;YACE;YACA;cACE;YACF;UACF;UACA;YACE;UACF;QACF;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;UACI;;MAEJ;QACE;QACA;QACA;MACF;MACA;QACE;YACI;;QAEJ;cACM;cACA;YACF;UACF;YACE;UACF;UACA;QACF;MACF;MACA;QACE;QACA;MACF;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;QACA;;QAEA;UACE;cACI;;UAEJ;YACE;YACA;UACF;QACF;UACE;YACE;UACF;QACF;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;UACA;UACA;;MAEJ;QACE;MACF;MACA;QACE;QACA;MACF;MACA;QACE;QACA;MACF;MACA;MACA;QACE;QACA;QACA;UACE;QACF;QACA;UACE;QACF;QACA;QACA;UACE;QACF;QACA;QACA;UACE;QACF;QACA;QACA;UACE;QACF;QACA;QACA;UACE;QACF;QACA;QACA;UACE;QACF;QACA;QACA;QACA;MACF;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;;MAEA;MACA;MACA;MACA;;MAEA;MACA;QACE;UACE;QACF;MACF;MACA;MACA;;MAEA;MACA;UACI;UACA;UACA;QACF;MACF;;MAEA;MACA;QACE;QACA;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;MACA;UACI;UACA;UACA;QACF;MACF;MACA;MACA;MACA;MACA;QACE;UACE;UACA;QACF;QACA;MACF;MACA;MACA;MACA;MACA;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;IACJ;IACA;IACA;MACE;QACE;UACE;MACJ;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;MACA;UACI;QACF;MACF;MACA;IACF;;IAEA;IACA;MACE;MACA;MACA;MACA;MACA;IACF;;IAEA;IACA;MACE;MACA;QACE;QACA;QACA;QACA;QACA;QACA;MACF;MACA;MACA;IACF;;IAEA;IACA;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;MACA;MACA;IACF;;IAEA;IACA;;IAEA;IACA;QACI;;IAEJ;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;UACE;UACA;UACA;UACA;UACA;UACA;QACF;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;QACE;QACA;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;QACE;UACE;UACA;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;QACE;UACE;UACA;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;;MAEA;QACE;MACF;;MAEA;MACA;MACA;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;MACA;QACE;QACA;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;QACE;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;MACF;MACA;UACI;;MAEJ;UACI;UACA;QACF;MACF;MACA;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;IACA;IACA;MACE;QACE;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;MACA;UACI;;MAEJ;QACE;QACA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;;MAEA;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;MACF;MACA;MACA;MACA;QACE;MACF;MACA;QACE;MACF;QACE;MACF;MACA;UACI;UACA;UACA;;MAEJ;QACE;MACF;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;QACA;UACE;QACF;QACA;;QAEA;YACI;;QAEJ;UACE;UACA;QACF;MACF;QACE;QACA;UACE;YACE;UACF;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;QACE;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;YACI;YACA;;QAEJ;UACE;UACA;YACE;UACF;QACF;MACF;QACE;QACA;UACE;YACE;UACF;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;UACE;QACF;UACE;cACI;;UAEJ;QACF;MACF;MACA;QACE;QACA;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;QACE;MACF;MACA;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;UACA;;MAEJ;QACE;MACF;MACA;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;MACA;QACE;MACF;QACE;MACF;QACE;UACE;YACE;UACF;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;;MAEA;QACE;YACI;;QAEJ;UACE;YACE;UACF;QACF;MACF;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;;MAEA;QACE;YACI;;QAEJ;UACE;UACA;YACE;UACF;QACF;MACF;QACE;UACE;YACE;UACF;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;;MAEA;QACE;YACI;;QAEJ;UACE;UACA;YACE;UACF;QACF;MACF;QACE;QACA;UACE;YACE;YACA;UACF;QACF;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;QACE;UACE;UACA;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;YACI;;QAEJ;UACE;YACE;UACF;QACF;MACF;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;MACA;QACE;UACE;YACE;UACF;QACF;MACF;QACE;UACE;UACA;QACF;UACE;QACF;QACA;UACE;UACA;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;UACA;;MAEJ;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;;MAEJ;MACA;QACE;UACE;QACF;MACF;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;MACA;MACA;QACE;MACF;MACA;QACE;YACI;;QAEJ;UACE;UACA;YACE;UACF;QACF;MACF;QACE;UACE;UACA;;QAEF;UACE;UACA;YACE;YACA;UACF;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;MACA;MACA;QACE;MACF;MACA;QACE;YACI;;QAEJ;UACE;UACA;YACE;UACF;QACF;MACF;QACE;UACE;UACA;;QAEF;UACE;UACA;YACE;YACA;UACF;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;;MAEA;QACE;YACI;;QAEJ;UACE;QACF;QACA;UACE;QACF;MACF;QACE;UACE;YACE;YACA;QACJ;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;QACE;UACE;UACA;MACJ;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;QACE;MACF;MACA;QACE;MACF;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;;MAEJ;QACE;QACA;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;;MAEA;QACE;YACI;;QAEJ;UACE;YACE;UACF;QACF;MACF;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;QACE;MACF;MACA;QACE;QACA;UACE;QACF;UACE;QACF;QACA;QACA;MACF;;MAEA;MACA;MACA;QACE;QACA;QACA;UACE;QACF;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;UACE;UACA;MACJ;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;;MAEJ;QACE;QACA;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;MACA;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;QACA;QACA;UACE;QACF;MACF;QACE;QACA;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;QACA;QACA;MACF;MACA;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;QACA;MACF;QACE;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;QACA;QACA;UACE;QACF;MACF;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;UACA;UACA;UACA;;MAEJ;QACE;QACA;UACE;UACA;YACE;QACJ;MACF;MACA;UACI;UACA;UACA;;MAEJ;MACA;QACE;QACA;;QAEA;UACE;UACA;UACA;YACE;YACA;cACE;YACF;UACF;UACA;QACF;MACF;MACA;QACE;QACA;UACE;QACF;MACF;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;QACA;QACA;UACE;QACF;MACF;QACE;QACA;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;MACF;MACA;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;QACE;YACI;QACJ;UACE;YACE;YACA;UACF;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;;MAEA;QACE;QACA;MACF;MACA;MACA;MACA;UACI;UACA;;MAEJ;QACE;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;;MAEJ;MACA;QACE;QACA;UACE;UACA;UACA;QACF;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;YACI;YACA;;QAEJ;QACA;UACE;QACF;MACF;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;MACA;MACA;;MAEA;QACE;QACA;UACE;UACA;MACJ;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;QACA;QACA;MACF;MACA;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;QACA;UACE;YACE;YACA;QACJ;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;;MAEJ;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;;MAEJ;QACE;MACF;MACA;QACE;QACA;UACE;QACF;UACE;QACF;MACF;MACA;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;MACA;QACE;UACE;QACF;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;QACA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;;MAEJ;QACE;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;QACA;IACJ;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;UACE;QACF;MACF;MACA;QACE;YACI;;QAEJ;UACE;QACF;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;MAEJ;QACE;MACF;MACA;MACA;QACE;QACA;MACF;QACE;QACA;QACA;MACF;MACA;QACE;QACA;UACE;YACE;UACF;UACA;UACA;UACA;YACE;YACA;YACA;cACE;YACF;UACF;QACF;UACE;QACF;MACF;;MAEA;QACE;UACE;QACF;QACA;QACA;UACE;UACA;UACA;YACE;UACF;QACF;MACF;;MAEA;QACE;QACA;QACA;QACA;;QAEA;UACE;QACF;UACE;YACE;UACF;UACA;cACI;;UAEJ;YACE;cACE;YACF;YACA;YACA;UACF;UACA;YACE;UACF;QACF;QACA;UACE;QACF;QACA;UACE;QACF;QACA;UACE;UACA;QACF;QACA;UACE;QACF;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;MACA;QACE;YACI;;QAEJ;UACE;UACA;MACJ;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;MACF;MACA;QACE;UACE;QACF;QACA;QACA;;QAEA;QACA;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;MACF;MACA;QACE;MACF;QACE;QACA;MACF;MACA;MACA;MACA;;MAEA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;QACE;MACF;MACA;MACA;QACE;MACF;MACA;UACI;UACA;;MAEJ;MACA;QACE;QACA;QACA;UACE;UACA;QACF;MACF;MACA;QACE;YACI;;QAEJ;UACE;YACE;UACF;QACF;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;UACE;QACF;QACA;QACA;QACA;QACA;MACF;MACA;QACE;MACF;QACE;MACF;MACA;UACI;;MAEJ;QACE;QACA;UACE;YACE;gBACI;gBACA;;YAEJ;YACA;YACA;cACE;gBACE;cACF;cACA;cACA;YACF;YACA;UACF;QACF;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;UACI;;MAEJ;QACE;UACE;UACA;QACF;QACA;UACE;UACA;QACF;MACF;MACA;QACE;MACF;MACA;MACA;QACE;QACA;MACF;QACE;MACF;MACA;QACE;QACA;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;QACE;QACA;MACF;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;MACA;MACA;MACA;;MAEA;MACA;;MAEA;UACI;UACA;;MAEJ;UACI;UACA;UACA;;MAEJ;MACA;QACE;QACA;QACA;QACA;MACF;;MAEA;QACE;;QAEA;QACA;;QAEA;QACA;UACE;QACF;QACA;UACE;UACA;QACF;QACA;UACE;QACF;QACA;;QAEA;QACA;QACA;MACF;;MAEA;;MAEA;MACA;MACA;UACI;;MAEJ;QACE;QACA;MACF;MACA;MACA;QACE;QACA;;MAEF;MACA;QACE;QACA;QACA;UACE;YACE;UACF;QACF;QACA;QACA;;MAEF;MACA;MACA;;MAEA;QACE;MACF;QACE;QACA;MACF;MACA;QACE;MACF;MACA;MACA;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;UACI;;MAEJ;MACA;QACE;MACF;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;KACA;IACD;MACE;IACF;;IAEA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;;IAEA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;;IAEA;MACE;MACA;QACE;UACE;QACF;MACF;MACA;IACF;;IAEA;;IAEA;IACA;IACA;IACA;;IAEA;IACA;IACA;;IAEA;MACE;MACA;QACE;UACE;cACI;;UAEJ;YACE;YACA;QACJ;MACF;IACF;;IAEA;;IAEA;KACC;KACA;KACA;KACA;KACA;KACA;IACD;;IAEA;IACA;IACA;IACA;IACA;;IAEA;IACA;MACE;MACA;QACE;YACI;;QAEJ;UACE;UACA;MACJ;IACF;;IAEA;IACA;MACE;MACA;QACE;QACA;MACF;IACF;;IAEA;IACA;MACE;MACA;QACE;MACF;IACF;;IAEA;IACA;IACA;MACE;QACE;YACI;;QAEJ;UACE;cACI;cACA;;UAEJ;YACE;UACF;UACA;YACE;YACA;QACJ;MACF;IACF;;IAEA;EACF;;EAEA;;EAEA;EACA;;EAEA;EACA;IACE;IACA;IACA;IACA;;IAEA;IACA;IACA;MACE;IACF;EACF;EACA;EACA;IACE;IACA;MACE;IACF;IACA;IACA;MACE;IACF;EACF;EACA;IACE;IACA;EACF;AACF;;ACp/NA;AACA;AACA;AACA;AACA;AACA;;AAEA;EACE;;EAEA;;EAEA;EACA;EACA;;EAEA;;EAEA;IACE;IACA;IACA;MACE;MACA;IACF;IACA;EACF;;EAEA;;EAEA;IACE;MACE;IACF;MACE;IACF;MACE;EACJ;;EAEA;EACA;IACE;IACA;IACA;MACE;MACA;MACA;MACA;IACF;EACF;;EAEA;IACE;IACA;IACA;IACA;IACA;EACF;;EAEA;EACA;EACA;;EAEA;EACA;EACA;EACA;EACA;;EAEA;IACE;MACE;IACF;;IAEA;;IAEA;MACE;QACE;MACF;MACA;IACF;;IAEA;MACE;MACA;QACE;QACA;UACE;QACF;QACA;UACE;UACA;YACE;YACA;cACE;gBACE;cACF;cACA;YACF;UACF;YACE;UACF;UACA;YACE;UACF;;UAEA;YACE;UACF;UACA;YACE;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;UACF;UACA;UACA;UACA;UACA;UACA;QACF;MACF;MACA;IACF;;IAEA;;IAEA;MACE;MACA;QACE;UACE;QACF;QACA;UACE;QACF;QACA;UACE;YACE;YACA;YACA;cACE;cACA;gBACE;kBACE;gBACF;gBACA;kBACE;gBACF;gBACA;kBACE;gBACF;cACF;YACF;YACA;cACE;YACF;YACA;UACF;UACA;YACE;UACF;UACA;YACE;UACF;UACA;QACF;QACA;UACE;QACF;QACA;MACF;MACA;IACF;;IAEA;EACF;;;;EAIA;;EAEA;;IAEE;;IAEA;MACE;MACA;IACF;;IAEA;MACE;MACA;IACF;;IAEA;MACE;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;IACF;;IAEA;MACE;;MAEA;MACA;;MAEA;QACE;QACA;;MAEF;QACE;QACA;QACA;QACA;MACF;;MAEA;IACF;;IAEA;MACE;MACA;IACF;;IAEA;MACE;MACA;QACE;MACF;IACF;;IAEA;MACE;MACA;IACF;;IAEA;MACE;MACA;QACE;;QAEA;UACE;QACF;UACE;QACF;UACE;QACF;UACE;QACF;MACF;IACF;;IAEA;MACE;MACA;IACF;;IAEA;MACE;MACA;MACA;IACF;;IAEA;MACE;IACF;;IAEA;MACE;MACA;MACA;IACF;;IAEA;MACE;QACE;;MAEF;;MAEA;IACF;;IAEA;MACE;MACA;IACF;;IAEA;MACE;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;IACF;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;KACC;KACA;KACA;KACA;IACD;MACE;;MAEA;MACA;;MAEA;;MAEA;QACE;;MAEF;QACE;MACF;QACE;;MAEF;IACF;;IAEA;MACE;MACA;IACF;;IAEA;MACE;MACA;;MAEA;;MAEA;QACE;MACF;QACE;;MAEF;QACE;UACE;UACA;QACF;UACE;UACA;kBACQ;QACV;UACE;UACA;QACF;IACJ;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;;IAEA;MACE;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;;MAEA;MACA;;MAEA;QACE;;MAEF;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;;MAEA;;MAEA;IACF;;IAEA;MACE;MACA;MACA;IACF;;IAEA;MACE;;MAEA;UACI;UACA;;MAEJ;QACE;QACA;MACF;;MAEA;IACF;;IAEA;MACE;IACF;;IAEA;MACE;IACF;;IAEA;MACE;MACA;QACE;MACF;IACF;;IAEA;MACE;;MAEA;QACE;QACA;MACF;;MAEA;IACF;;IAEA;MACE;;MAEA;;MAEA;MACA;;MAEA;MACA;MACA;IACF;;IAEA;MACE;MACA;MACA;;MAEA;QACE;QACA;QACA;;MAEF;QACE;;QAEA;UACE;UACA;YACE;YACA;cACE;UACJ;UACA;QACF;MACF;;MAEA;QACE;;MAEF;IACF;;IAEA;MACE;MACA;MACA;;MAEA;;MAEA;;MAEA;QACE;UACE;YACE;cACE;YACF;cACE;UACJ;YACE;;UAEF;UACA;QACF;;MAEF;IACF;;IAEA;MACE;MACA;MACA;MACA;MACA;IACF;EACF;;EAEA;;EAEA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA;;EAEA;EACA;IACE;MACE;;IAEF;EACF;;EAEA;EACA;IACE;;;EAGF;EACA;EACA;EACA;AACF","file":"libs.js","sourcesContent":["/**\n * @license AngularJS v1.3.0-rc.3\n * (c) 2010-2014 Google, Inc. http://angularjs.org\n * License: MIT\n */\n(function(window, document, undefined) {'use strict';\n\n/**\n * @description\n *\n * This object provides a utility for producing rich Error messages within\n * Angular. It can be called as follows:\n *\n * var exampleMinErr = minErr('example');\n * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);\n *\n * The above creates an instance of minErr in the example namespace. The\n * resulting error will have a namespaced error code of example.one. The\n * resulting error will replace {0} with the value of foo, and {1} with the\n * value of bar. The object is not restricted in the number of arguments it can\n * take.\n *\n * If fewer arguments are specified than necessary for interpolation, the extra\n * interpolation markers will be preserved in the final string.\n *\n * Since data will be parsed statically during a build step, some restrictions\n * are applied with respect to how minErr instances are created and called.\n * Instances should have names of the form namespaceMinErr for a minErr created\n * using minErr('namespace') . Error codes, namespaces and template strings\n * should all be static strings, not variables or general expressions.\n *\n * @param {string} module The namespace to use for the new minErr instance.\n * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning\n * error from returned function, for cases when a particular type of error is useful.\n * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance\n */\n\nfunction minErr(module, ErrorConstructor) {\n ErrorConstructor = ErrorConstructor || Error;\n return function () {\n var code = arguments[0],\n prefix = '[' + (module ? module + ':' : '') + code + '] ',\n template = arguments[1],\n templateArgs = arguments,\n stringify = function (obj) {\n if (typeof obj === 'function') {\n return obj.toString().replace(/ \\{[\\s\\S]*$/, '');\n } else if (typeof obj === 'undefined') {\n return 'undefined';\n } else if (typeof obj !== 'string') {\n return JSON.stringify(obj);\n }\n return obj;\n },\n message, i;\n\n message = prefix + template.replace(/\\{\\d+\\}/g, function (match) {\n var index = +match.slice(1, -1), arg;\n\n if (index + 2 < templateArgs.length) {\n arg = templateArgs[index + 2];\n if (typeof arg === 'function') {\n return arg.toString().replace(/ ?\\{[\\s\\S]*$/, '');\n } else if (typeof arg === 'undefined') {\n return 'undefined';\n } else if (typeof arg !== 'string') {\n return toJson(arg);\n }\n return arg;\n }\n return match;\n });\n\n message = message + '\\nhttp://errors.angularjs.org/1.3.0-rc.3/' +\n (module ? module + '/' : '') + code;\n for (i = 2; i < arguments.length; i++) {\n message = message + (i == 2 ? '?' : '&') + 'p' + (i-2) + '=' +\n encodeURIComponent(stringify(arguments[i]));\n }\n return new ErrorConstructor(message);\n };\n}\n\n/* We need to tell jshint what variables are being exported */\n/* global angular: true,\n msie: true,\n jqLite: true,\n jQuery: true,\n slice: true,\n push: true,\n toString: true,\n ngMinErr: true,\n angularModule: true,\n uid: true,\n REGEX_STRING_REGEXP: true,\n VALIDITY_STATE_PROPERTY: true,\n\n lowercase: true,\n uppercase: true,\n manualLowercase: true,\n manualUppercase: true,\n nodeName_: true,\n isArrayLike: true,\n forEach: true,\n sortedKeys: true,\n forEachSorted: true,\n reverseParams: true,\n nextUid: true,\n setHashKey: true,\n extend: true,\n int: true,\n inherit: true,\n noop: true,\n identity: true,\n valueFn: true,\n isUndefined: true,\n isDefined: true,\n isObject: true,\n isString: true,\n isNumber: true,\n isDate: true,\n isArray: true,\n isFunction: true,\n isRegExp: true,\n isWindow: true,\n isScope: true,\n isFile: true,\n isBlob: true,\n isBoolean: true,\n isPromiseLike: true,\n trim: true,\n isElement: true,\n makeMap: true,\n size: true,\n includes: true,\n arrayRemove: true,\n isLeafNode: true,\n copy: true,\n shallowCopy: true,\n equals: true,\n csp: true,\n concat: true,\n sliceArgs: true,\n bind: true,\n toJsonReplacer: true,\n toJson: true,\n fromJson: true,\n startingTag: true,\n tryDecodeURIComponent: true,\n parseKeyValue: true,\n toKeyValue: true,\n encodeUriSegment: true,\n encodeUriQuery: true,\n angularInit: true,\n bootstrap: true,\n getTestability: true,\n snake_case: true,\n bindJQuery: true,\n assertArg: true,\n assertArgFn: true,\n assertNotHasOwnProperty: true,\n getter: true,\n getBlockNodes: true,\n hasOwnProperty: true,\n createMap: true,\n*/\n\n////////////////////////////////////\n\n/**\n * @ngdoc module\n * @name ng\n * @module ng\n * @description\n *\n * # ng (core module)\n * The ng module is loaded by default when an AngularJS application is started. The module itself\n * contains the essential components for an AngularJS application to function. The table below\n * lists a high level breakdown of each of the services/factories, filters, directives and testing\n * components available within this core module.\n *\n *
\n */\n\nvar REGEX_STRING_REGEXP = /^\\/(.+)\\/([a-z]*)$/;\n\n// The name of a form control's ValidityState property.\n// This is used so that it's possible for internal tests to create mock ValidityStates.\nvar VALIDITY_STATE_PROPERTY = 'validity';\n\n/**\n * @ngdoc function\n * @name angular.lowercase\n * @module ng\n * @kind function\n *\n * @description Converts the specified string to lowercase.\n * @param {string} string String to be converted to lowercase.\n * @returns {string} Lowercased string.\n */\nvar lowercase = function(string){return isString(string) ? string.toLowerCase() : string;};\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/**\n * @ngdoc function\n * @name angular.uppercase\n * @module ng\n * @kind function\n *\n * @description Converts the specified string to uppercase.\n * @param {string} string String to be converted to uppercase.\n * @returns {string} Uppercased string.\n */\nvar uppercase = function(string){return isString(string) ? string.toUpperCase() : string;};\n\n\nvar manualLowercase = function(s) {\n /* jshint bitwise: false */\n return isString(s)\n ? s.replace(/[A-Z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) | 32);})\n : s;\n};\nvar manualUppercase = function(s) {\n /* jshint bitwise: false */\n return isString(s)\n ? s.replace(/[a-z]/g, function(ch) {return String.fromCharCode(ch.charCodeAt(0) & ~32);})\n : s;\n};\n\n\n// String#toLowerCase and String#toUpperCase don't produce correct results in browsers with Turkish\n// locale, for this reason we need to detect this case and redefine lowercase/uppercase methods\n// with correct but slower alternatives.\nif ('i' !== 'I'.toLowerCase()) {\n lowercase = manualLowercase;\n uppercase = manualUppercase;\n}\n\n\nvar /** holds major version number for IE or NaN for real browsers */\n msie,\n jqLite, // delay binding since jQuery could be loaded after us.\n jQuery, // delay binding\n slice = [].slice,\n push = [].push,\n toString = Object.prototype.toString,\n ngMinErr = minErr('ng'),\n\n /** @name angular */\n angular = window.angular || (window.angular = {}),\n angularModule,\n uid = 0;\n\n/**\n * IE 11 changed the format of the UserAgent string.\n * See http://msdn.microsoft.com/en-us/library/ms537503.aspx\n */\nmsie = int((/msie (\\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);\nif (isNaN(msie)) {\n msie = int((/trident\\/.*; rv:(\\d+)/.exec(lowercase(navigator.userAgent)) || [])[1]);\n}\n\n\n/**\n * @private\n * @param {*} obj\n * @return {boolean} Returns true if `obj` is an array or array-like object (NodeList, Arguments,\n * String ...)\n */\nfunction isArrayLike(obj) {\n if (obj == null || isWindow(obj)) {\n return false;\n }\n\n var length = obj.length;\n\n if (obj.nodeType === 1 && length) {\n return true;\n }\n\n return isString(obj) || isArray(obj) || length === 0 ||\n typeof length === 'number' && length > 0 && (length - 1) in obj;\n}\n\n/**\n * @ngdoc function\n * @name angular.forEach\n * @module ng\n * @kind function\n *\n * @description\n * Invokes the `iterator` function once for each item in `obj` collection, which can be either an\n * object or an array. The `iterator` function is invoked with `iterator(value, key, obj)`, where `value`\n * is the value of an object property or an array element, `key` is the object property key or\n * array element index and obj is the `obj` itself. Specifying a `context` for the function is optional.\n *\n * It is worth noting that `.forEach` does not iterate over inherited properties because it filters\n * using the `hasOwnProperty` method.\n *\n ```js\n var values = {name: 'misko', gender: 'male'};\n var log = [];\n angular.forEach(values, function(value, key) {\n this.push(key + ': ' + value);\n }, log);\n expect(log).toEqual(['name: misko', 'gender: male']);\n ```\n *\n * @param {Object|Array} obj Object to iterate over.\n * @param {Function} iterator Iterator function.\n * @param {Object=} context Object to become context (`this`) for the iterator function.\n * @returns {Object|Array} Reference to `obj`.\n */\n\nfunction forEach(obj, iterator, context) {\n var key, length;\n if (obj) {\n if (isFunction(obj)) {\n for (key in obj) {\n // Need to check if hasOwnProperty exists,\n // as on IE8 the result of querySelectorAll is an object without a hasOwnProperty function\n if (key != 'prototype' && key != 'length' && key != 'name' && (!obj.hasOwnProperty || obj.hasOwnProperty(key))) {\n iterator.call(context, obj[key], key, obj);\n }\n }\n } else if (isArray(obj) || isArrayLike(obj)) {\n var isPrimitive = typeof obj !== 'object';\n for (key = 0, length = obj.length; key < length; key++) {\n if (isPrimitive || key in obj) {\n iterator.call(context, obj[key], key, obj);\n }\n }\n } else if (obj.forEach && obj.forEach !== forEach) {\n obj.forEach(iterator, context, obj);\n } else {\n for (key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator.call(context, obj[key], key, obj);\n }\n }\n }\n }\n return obj;\n}\n\nfunction sortedKeys(obj) {\n var keys = [];\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n keys.push(key);\n }\n }\n return keys.sort();\n}\n\nfunction forEachSorted(obj, iterator, context) {\n var keys = sortedKeys(obj);\n for ( var i = 0; i < keys.length; i++) {\n iterator.call(context, obj[keys[i]], keys[i]);\n }\n return keys;\n}\n\n\n/**\n * when using forEach the params are value, key, but it is often useful to have key, value.\n * @param {function(string, *)} iteratorFn\n * @returns {function(*, string)}\n */\nfunction reverseParams(iteratorFn) {\n return function(value, key) { iteratorFn(key, value); };\n}\n\n/**\n * A consistent way of creating unique IDs in angular.\n *\n * Using simple numbers allows us to generate 28.6 million unique ids per second for 10 years before\n * we hit number precision issues in JavaScript.\n *\n * Math.pow(2,53) / 60 / 60 / 24 / 365 / 10 = 28.6M\n *\n * @returns {number} an unique alpha-numeric string\n */\nfunction nextUid() {\n return ++uid;\n}\n\n\n/**\n * Set or clear the hashkey for an object.\n * @param obj object\n * @param h the hashkey (!truthy to delete the hashkey)\n */\nfunction setHashKey(obj, h) {\n if (h) {\n obj.$$hashKey = h;\n }\n else {\n delete obj.$$hashKey;\n }\n}\n\n/**\n * @ngdoc function\n * @name angular.extend\n * @module ng\n * @kind function\n *\n * @description\n * Extends the destination object `dst` by copying own enumerable properties from the `src` object(s)\n * to `dst`. You can specify multiple `src` objects.\n *\n * @param {Object} dst Destination object.\n * @param {...Object} src Source object(s).\n * @returns {Object} Reference to `dst`.\n */\nfunction extend(dst) {\n var h = dst.$$hashKey;\n\n for (var i = 1, ii = arguments.length; i < ii; i++) {\n var obj = arguments[i];\n if (obj) {\n var keys = Object.keys(obj);\n for (var j = 0, jj = keys.length; j < jj; j++) {\n var key = keys[j];\n dst[key] = obj[key];\n }\n }\n }\n\n setHashKey(dst, h);\n return dst;\n}\n\nfunction int(str) {\n return parseInt(str, 10);\n}\n\n\nfunction inherit(parent, extra) {\n return extend(new (extend(function() {}, {prototype:parent}))(), extra);\n}\n\n/**\n * @ngdoc function\n * @name angular.noop\n * @module ng\n * @kind function\n *\n * @description\n * A function that performs no operations. This function can be useful when writing code in the\n * functional style.\n ```js\n function foo(callback) {\n var result = calculateResult();\n (callback || angular.noop)(result);\n }\n ```\n */\nfunction noop() {}\nnoop.$inject = [];\n\n\n/**\n * @ngdoc function\n * @name angular.identity\n * @module ng\n * @kind function\n *\n * @description\n * A function that returns its first argument. This function is useful when writing code in the\n * functional style.\n *\n ```js\n function transformer(transformationFn, value) {\n return (transformationFn || angular.identity)(value);\n };\n ```\n */\nfunction identity($) {return $;}\nidentity.$inject = [];\n\n\nfunction valueFn(value) {return function() {return value;};}\n\n/**\n * @ngdoc function\n * @name angular.isUndefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is undefined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is undefined.\n */\nfunction isUndefined(value){return typeof value === 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDefined\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is defined.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is defined.\n */\nfunction isDefined(value){return typeof value !== 'undefined';}\n\n\n/**\n * @ngdoc function\n * @name angular.isObject\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Object`. Unlike `typeof` in JavaScript, `null`s are not\n * considered to be objects. Note that JavaScript arrays are objects.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Object` but not `null`.\n */\nfunction isObject(value){\n // http://jsperf.com/isobject4\n return value !== null && typeof value === 'object';\n}\n\n\n/**\n * @ngdoc function\n * @name angular.isString\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `String`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `String`.\n */\nfunction isString(value){return typeof value === 'string';}\n\n\n/**\n * @ngdoc function\n * @name angular.isNumber\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Number`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Number`.\n */\nfunction isNumber(value){return typeof value === 'number';}\n\n\n/**\n * @ngdoc function\n * @name angular.isDate\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a value is a date.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Date`.\n */\nfunction isDate(value) {\n return toString.call(value) === '[object Date]';\n}\n\n\n/**\n * @ngdoc function\n * @name angular.isArray\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is an `Array`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is an `Array`.\n */\nvar isArray = Array.isArray;\n\n/**\n * @ngdoc function\n * @name angular.isFunction\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a `Function`.\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `Function`.\n */\nfunction isFunction(value){return typeof value === 'function';}\n\n\n/**\n * Determines if a value is a regular expression object.\n *\n * @private\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a `RegExp`.\n */\nfunction isRegExp(value) {\n return toString.call(value) === '[object RegExp]';\n}\n\n\n/**\n * Checks if `obj` is a window object.\n *\n * @private\n * @param {*} obj Object to check\n * @returns {boolean} True if `obj` is a window obj.\n */\nfunction isWindow(obj) {\n return obj && obj.window === obj;\n}\n\n\nfunction isScope(obj) {\n return obj && obj.$evalAsync && obj.$watch;\n}\n\n\nfunction isFile(obj) {\n return toString.call(obj) === '[object File]';\n}\n\n\nfunction isBlob(obj) {\n return toString.call(obj) === '[object Blob]';\n}\n\n\nfunction isBoolean(value) {\n return typeof value === 'boolean';\n}\n\n\nfunction isPromiseLike(obj) {\n return obj && isFunction(obj.then);\n}\n\n\nvar trim = function(value) {\n return isString(value) ? value.trim() : value;\n};\n\n\n/**\n * @ngdoc function\n * @name angular.isElement\n * @module ng\n * @kind function\n *\n * @description\n * Determines if a reference is a DOM element (or wrapped jQuery element).\n *\n * @param {*} value Reference to check.\n * @returns {boolean} True if `value` is a DOM element (or wrapped jQuery element).\n */\nfunction isElement(node) {\n return !!(node &&\n (node.nodeName // we are a direct element\n || (node.prop && node.attr && node.find))); // we have an on and find method part of jQuery API\n}\n\n/**\n * @param str 'key1,key2,...'\n * @returns {object} in the form of {key1:true, key2:true, ...}\n */\nfunction makeMap(str) {\n var obj = {}, items = str.split(\",\"), i;\n for ( i = 0; i < items.length; i++ )\n obj[ items[i] ] = true;\n return obj;\n}\n\n\nfunction nodeName_(element) {\n return lowercase(element.nodeName || element[0].nodeName);\n}\n\n\n/**\n * @description\n * Determines the number of elements in an array, the number of properties an object has, or\n * the length of a string.\n *\n * Note: This function is used to augment the Object type in Angular expressions. See\n * {@link angular.Object} for more information about Angular arrays.\n *\n * @param {Object|Array|string} obj Object, array, or string to inspect.\n * @param {boolean} [ownPropsOnly=false] Count only \"own\" properties in an object\n * @returns {number} The size of `obj` or `0` if `obj` is neither an object nor an array.\n */\nfunction size(obj, ownPropsOnly) {\n var count = 0, key;\n\n if (isArray(obj) || isString(obj)) {\n return obj.length;\n } else if (isObject(obj)) {\n for (key in obj)\n if (!ownPropsOnly || obj.hasOwnProperty(key))\n count++;\n }\n\n return count;\n}\n\n\nfunction includes(array, obj) {\n return Array.prototype.indexOf.call(array, obj) != -1;\n}\n\nfunction arrayRemove(array, value) {\n var index = array.indexOf(value);\n if (index >=0)\n array.splice(index, 1);\n return value;\n}\n\nfunction isLeafNode (node) {\n if (node) {\n switch (nodeName_(node)) {\n case \"option\":\n case \"pre\":\n case \"title\":\n return true;\n }\n }\n return false;\n}\n\n/**\n * @ngdoc function\n * @name angular.copy\n * @module ng\n * @kind function\n *\n * @description\n * Creates a deep copy of `source`, which should be an object or an array.\n *\n * * If no destination is supplied, a copy of the object or array is created.\n * * If a destination is provided, all of its elements (for array) or properties (for objects)\n * are deleted and then all elements/properties from the source are copied to it.\n * * If `source` is not an object or array (inc. `null` and `undefined`), `source` is returned.\n * * If `source` is identical to 'destination' an exception will be thrown.\n *\n * @param {*} source The source that will be used to make a copy.\n * Can be any type, including primitives, `null`, and `undefined`.\n * @param {(Object|Array)=} destination Destination into which the source is copied. If\n * provided, must be of the same type as `source`.\n * @returns {*} The copy or updated `destination`, if `destination` was specified.\n *\n * @example\n \n \n \n
\n
form = {{user | json}} \n
master = {{master | json}} \n
\n\n \n \n \n */\nfunction copy(source, destination, stackSource, stackDest) {\n if (isWindow(source) || isScope(source)) {\n throw ngMinErr('cpws',\n \"Can't copy! Making copies of Window or Scope instances is not supported.\");\n }\n\n if (!destination) {\n destination = source;\n if (source) {\n if (isArray(source)) {\n destination = copy(source, [], stackSource, stackDest);\n } else if (isDate(source)) {\n destination = new Date(source.getTime());\n } else if (isRegExp(source)) {\n destination = new RegExp(source.source, source.toString().match(/[^\\/]*$/)[0]);\n destination.lastIndex = source.lastIndex;\n } else if (isObject(source)) {\n var emptyObject = Object.create(Object.getPrototypeOf(source));\n destination = copy(source, emptyObject, stackSource, stackDest);\n }\n }\n } else {\n if (source === destination) throw ngMinErr('cpi',\n \"Can't copy! Source and destination are identical.\");\n\n stackSource = stackSource || [];\n stackDest = stackDest || [];\n\n if (isObject(source)) {\n var index = stackSource.indexOf(source);\n if (index !== -1) return stackDest[index];\n\n stackSource.push(source);\n stackDest.push(destination);\n }\n\n var result;\n if (isArray(source)) {\n destination.length = 0;\n for ( var i = 0; i < source.length; i++) {\n result = copy(source[i], null, stackSource, stackDest);\n if (isObject(source[i])) {\n stackSource.push(source[i]);\n stackDest.push(result);\n }\n destination.push(result);\n }\n } else {\n var h = destination.$$hashKey;\n if (isArray(destination)) {\n destination.length = 0;\n } else {\n forEach(destination, function(value, key) {\n delete destination[key];\n });\n }\n for ( var key in source) {\n if(source.hasOwnProperty(key)) {\n result = copy(source[key], null, stackSource, stackDest);\n if (isObject(source[key])) {\n stackSource.push(source[key]);\n stackDest.push(result);\n }\n destination[key] = result;\n }\n }\n setHashKey(destination,h);\n }\n\n }\n return destination;\n}\n\n/**\n * Creates a shallow copy of an object, an array or a primitive.\n *\n * Assumes that there are no proto properties for objects.\n */\nfunction shallowCopy(src, dst) {\n if (isArray(src)) {\n dst = dst || [];\n\n for (var i = 0, ii = src.length; i < ii; i++) {\n dst[i] = src[i];\n }\n } else if (isObject(src)) {\n dst = dst || {};\n\n for (var key in src) {\n if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst || src;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.equals\n * @module ng\n * @kind function\n *\n * @description\n * Determines if two objects or two values are equivalent. Supports value types, regular\n * expressions, arrays and objects.\n *\n * Two objects or values are considered equivalent if at least one of the following is true:\n *\n * * Both objects or values pass `===` comparison.\n * * Both objects or values are of the same type and all of their properties are equal by\n * comparing them with `angular.equals`.\n * * Both values are NaN. (In JavaScript, NaN == NaN => false. But we consider two NaN as equal)\n * * Both values represent the same regular expression (In JavaScript,\n * /abc/ == /abc/ => false. But we consider two regular expressions as equal when their textual\n * representation matches).\n *\n * During a property comparison, properties of `function` type and properties with names\n * that begin with `$` are ignored.\n *\n * Scope and DOMWindow objects are being compared only by identify (`===`).\n *\n * @param {*} o1 Object or value to compare.\n * @param {*} o2 Object or value to compare.\n * @returns {boolean} True if arguments are equal.\n */\nfunction equals(o1, o2) {\n if (o1 === o2) return true;\n if (o1 === null || o2 === null) return false;\n if (o1 !== o1 && o2 !== o2) return true; // NaN === NaN\n var t1 = typeof o1, t2 = typeof o2, length, key, keySet;\n if (t1 == t2) {\n if (t1 == 'object') {\n if (isArray(o1)) {\n if (!isArray(o2)) return false;\n if ((length = o1.length) == o2.length) {\n for(key=0; key 2 ? sliceArgs(arguments, 2) : [];\n if (isFunction(fn) && !(fn instanceof RegExp)) {\n return curryArgs.length\n ? function() {\n return arguments.length\n ? fn.apply(self, curryArgs.concat(slice.call(arguments, 0)))\n : fn.apply(self, curryArgs);\n }\n : function() {\n return arguments.length\n ? fn.apply(self, arguments)\n : fn.call(self);\n };\n } else {\n // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)\n return fn;\n }\n}\n\n\nfunction toJsonReplacer(key, value) {\n var val = value;\n\n if (typeof key === 'string' && key.charAt(0) === '$' && key.charAt(1) === '$') {\n val = undefined;\n } else if (isWindow(value)) {\n val = '$WINDOW';\n } else if (value && document === value) {\n val = '$DOCUMENT';\n } else if (isScope(value)) {\n val = '$SCOPE';\n }\n\n return val;\n}\n\n\n/**\n * @ngdoc function\n * @name angular.toJson\n * @module ng\n * @kind function\n *\n * @description\n * Serializes input into a JSON-formatted string. Properties with leading $$ characters will be\n * stripped since angular uses this notation internally.\n *\n * @param {Object|Array|Date|string|number} obj Input to be serialized into JSON.\n * @param {boolean=} pretty If set to true, the JSON output will contain newlines and whitespace.\n * @returns {string|undefined} JSON-ified string representing `obj`.\n */\nfunction toJson(obj, pretty) {\n if (typeof obj === 'undefined') return undefined;\n return JSON.stringify(obj, toJsonReplacer, pretty ? ' ' : null);\n}\n\n\n/**\n * @ngdoc function\n * @name angular.fromJson\n * @module ng\n * @kind function\n *\n * @description\n * Deserializes a JSON string.\n *\n * @param {string} json JSON string to deserialize.\n * @returns {Object|Array|string|number} Deserialized thingy.\n */\nfunction fromJson(json) {\n return isString(json)\n ? JSON.parse(json)\n : json;\n}\n\n\n/**\n * @returns {string} Returns the string representation of the element.\n */\nfunction startingTag(element) {\n element = jqLite(element).clone();\n try {\n // turns out IE does not let you set .html() on elements which\n // are not allowed to have children. So we just ignore it.\n element.empty();\n } catch(e) {}\n // As Per DOM Standards\n var TEXT_NODE = 3;\n var elemHtml = jqLite('').append(element).html();\n try {\n return element[0].nodeType === TEXT_NODE ? lowercase(elemHtml) :\n elemHtml.\n match(/^(<[^>]+>)/)[1].\n replace(/^<([\\w\\-]+)/, function(match, nodeName) { return '<' + lowercase(nodeName); });\n } catch(e) {\n return lowercase(elemHtml);\n }\n\n}\n\n\n/////////////////////////////////////////////////\n\n/**\n * Tries to decode the URI component without throwing an exception.\n *\n * @private\n * @param str value potential URI component to check.\n * @returns {boolean} True if `value` can be decoded\n * with the decodeURIComponent function.\n */\nfunction tryDecodeURIComponent(value) {\n try {\n return decodeURIComponent(value);\n } catch(e) {\n // Ignore any invalid uri component\n }\n}\n\n\n/**\n * Parses an escaped url query string into key-value pairs.\n * @returns {Object.
}\n */\nfunction parseKeyValue(/**string*/keyValue) {\n var obj = {}, key_value, key;\n forEach((keyValue || \"\").split('&'), function(keyValue) {\n if ( keyValue ) {\n key_value = keyValue.replace(/\\+/g,'%20').split('=');\n key = tryDecodeURIComponent(key_value[0]);\n if ( isDefined(key) ) {\n var val = isDefined(key_value[1]) ? tryDecodeURIComponent(key_value[1]) : true;\n if (!hasOwnProperty.call(obj, key)) {\n obj[key] = val;\n } else if(isArray(obj[key])) {\n obj[key].push(val);\n } else {\n obj[key] = [obj[key],val];\n }\n }\n }\n });\n return obj;\n}\n\nfunction toKeyValue(obj) {\n var parts = [];\n forEach(obj, function(value, key) {\n if (isArray(value)) {\n forEach(value, function(arrayValue) {\n parts.push(encodeUriQuery(key, true) +\n (arrayValue === true ? '' : '=' + encodeUriQuery(arrayValue, true)));\n });\n } else {\n parts.push(encodeUriQuery(key, true) +\n (value === true ? '' : '=' + encodeUriQuery(value, true)));\n }\n });\n return parts.length ? parts.join('&') : '';\n}\n\n\n/**\n * We need our custom method because encodeURIComponent is too aggressive and doesn't follow\n * http://www.ietf.org/rfc/rfc3986.txt with regards to the character set (pchar) allowed in path\n * segments:\n * segment = *pchar\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriSegment(val) {\n return encodeUriQuery(val, true).\n replace(/%26/gi, '&').\n replace(/%3D/gi, '=').\n replace(/%2B/gi, '+');\n}\n\n\n/**\n * This method is intended for encoding *key* or *value* parts of query component. We need a custom\n * method because encodeURIComponent is too aggressive and encodes stuff that doesn't have to be\n * encoded per http://tools.ietf.org/html/rfc3986:\n * query = *( pchar / \"/\" / \"?\" )\n * pchar = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n * unreserved = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * pct-encoded = \"%\" HEXDIG HEXDIG\n * sub-delims = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\"\n * / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n */\nfunction encodeUriQuery(val, pctEncodeSpaces) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%3B/gi, ';').\n replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));\n}\n\nvar ngAttrPrefixes = ['ng-', 'data-ng-', 'ng:', 'x-ng-'];\n\nfunction getNgAttribute(element, ngAttr) {\n var attr, i, ii = ngAttrPrefixes.length;\n element = jqLite(element);\n for (i=0; i` or `` tags.\n *\n * Only one AngularJS application can be auto-bootstrapped per HTML document. The first `ngApp`\n * found in the document will be used to define the root element to auto-bootstrap as an\n * application. To run multiple applications in an HTML document you must manually bootstrap them using\n * {@link angular.bootstrap} instead. AngularJS applications cannot be nested within each other.\n *\n * You can specify an **AngularJS module** to be used as the root module for the application. This\n * module will be loaded into the {@link auto.$injector} when the application is bootstrapped and\n * should contain the application code needed or have dependencies on other modules that will\n * contain the code. See {@link angular.module} for more information.\n *\n * In the example below if the `ngApp` directive were not placed on the `html` element then the\n * document would not be compiled, the `AppController` would not be instantiated and the `{{ a+b }}`\n * would not be resolved to `3`.\n *\n * `ngApp` is the easiest, and most common, way to bootstrap an application.\n *\n \n \n \n I can add: {{a}} + {{b}} = {{ a+b }}\n
\n \n \n angular.module('ngAppDemo', []).controller('ngAppDemoController', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n });\n \n \n *\n * Using `ngStrictDi`, you would see something like this:\n *\n \n \n \n
\n I can add: {{a}} + {{b}} = {{ a+b }}\n\n
This renders because the controller does not fail to\n instantiate, by using explicit annotation style (see\n script.js for details)\n
\n
\n\n
\n Name:
\n Hello, {{name}}!\n\n
This renders because the controller does not fail to\n instantiate, by using explicit annotation style\n (see script.js for details)\n
\n
\n\n
\n I can add: {{a}} + {{b}} = {{ a+b }}\n\n
The controller could not be instantiated, due to relying\n on automatic function annotations (which are disabled in\n strict mode). As such, the content of this section is not\n interpolated, and there should be an error in your web console.\n
\n
\n
\n \n \n angular.module('ngAppStrictDemo', [])\n // BadController will fail to instantiate, due to relying on automatic function annotation,\n // rather than an explicit annotation\n .controller('BadController', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n })\n // Unlike BadController, GoodController1 and GoodController2 will not fail to be instantiated,\n // due to using explicit annotations using the array style and $inject property, respectively.\n .controller('GoodController1', ['$scope', function($scope) {\n $scope.a = 1;\n $scope.b = 2;\n }])\n .controller('GoodController2', GoodController2);\n function GoodController2($scope) {\n $scope.name = \"World\";\n }\n GoodController2.$inject = ['$scope'];\n \n \n div[ng-controller] {\n margin-bottom: 1em;\n -webkit-border-radius: 4px;\n border-radius: 4px;\n border: 1px solid;\n padding: .5em;\n }\n div[ng-controller^=Good] {\n border-color: #d6e9c6;\n background-color: #dff0d8;\n color: #3c763d;\n }\n div[ng-controller^=Bad] {\n border-color: #ebccd1;\n background-color: #f2dede;\n color: #a94442;\n margin-bottom: 0;\n }\n \n \n */\nfunction angularInit(element, bootstrap) {\n var appElement,\n module,\n config = {};\n\n // The element `element` has priority over any other element\n forEach(ngAttrPrefixes, function(prefix) {\n var name = prefix + 'app';\n\n if (!appElement && element.hasAttribute && element.hasAttribute(name)) {\n appElement = element;\n module = element.getAttribute(name);\n }\n });\n forEach(ngAttrPrefixes, function(prefix) {\n var name = prefix + 'app';\n var candidate;\n\n if (!appElement && (candidate = element.querySelector('[' + name.replace(':', '\\\\:') + ']'))) {\n appElement = candidate;\n module = candidate.getAttribute(name);\n }\n });\n if (appElement) {\n config.strictDi = getNgAttribute(appElement, \"strict-di\") !== null;\n bootstrap(appElement, module ? [module] : [], config);\n }\n}\n\n/**\n * @ngdoc function\n * @name angular.bootstrap\n * @module ng\n * @description\n * Use this function to manually start up angular application.\n *\n * See: {@link guide/bootstrap Bootstrap}\n *\n * Note that Protractor based end-to-end tests cannot use this function to bootstrap manually.\n * They must use {@link ng.directive:ngApp ngApp}.\n *\n * Angular will detect if it has been loaded into the browser more than once and only allow the\n * first loaded script to be bootstrapped and will report a warning to the browser console for\n * each of the subsequent scripts. This prevents strange results in applications, where otherwise\n * multiple instances of Angular try to work on the DOM.\n *\n * ```html\n * \n * \n * \n * \n * {{greeting}}\n *
\n *\n * \n * \n * \n * \n * ```\n *\n * @param {DOMElement} element DOM element which is the root of angular application.\n * @param {Array=} modules an array of modules to load into the application.\n * Each item in the array should be the name of a predefined module or a (DI annotated)\n * function that will be invoked by the injector as a run block.\n * See: {@link angular.module modules}\n * @param {Object=} config an object for defining configuration options for the application. The\n * following keys are supported:\n *\n * - `strictDi`: disable automatic function annotation for the application. This is meant to\n * assist in finding bugs which break minified code.\n *\n * @returns {auto.$injector} Returns the newly created injector for this app.\n */\nfunction bootstrap(element, modules, config) {\n if (!isObject(config)) config = {};\n var defaultConfig = {\n strictDi: false\n };\n config = extend(defaultConfig, config);\n var doBootstrap = function() {\n element = jqLite(element);\n\n if (element.injector()) {\n var tag = (element[0] === document) ? 'document' : startingTag(element);\n //Encode angle brackets to prevent input from being sanitized to empty string #8683\n throw ngMinErr(\n 'btstrpd',\n \"App Already Bootstrapped with this Element '{0}'\",\n tag.replace(/,'<').replace(/>/,'>'));\n }\n\n modules = modules || [];\n modules.unshift(['$provide', function($provide) {\n $provide.value('$rootElement', element);\n }]);\n\n if (config.debugInfoEnabled) {\n // Pushing so that this overrides `debugInfoEnabled` setting defined in user's `modules`.\n modules.push(['$compileProvider', function($compileProvider) {\n $compileProvider.debugInfoEnabled(true);\n }]);\n }\n\n modules.unshift('ng');\n var injector = createInjector(modules, config.strictDi);\n injector.invoke(['$rootScope', '$rootElement', '$compile', '$injector',\n function bootstrapApply(scope, element, compile, injector) {\n scope.$apply(function() {\n element.data('$injector', injector);\n compile(element)(scope);\n });\n }]\n );\n return injector;\n };\n\n var NG_ENABLE_DEBUG_INFO = /^NG_ENABLE_DEBUG_INFO!/;\n var NG_DEFER_BOOTSTRAP = /^NG_DEFER_BOOTSTRAP!/;\n\n if (window && NG_ENABLE_DEBUG_INFO.test(window.name)) {\n config.debugInfoEnabled = true;\n window.name = window.name.replace(NG_ENABLE_DEBUG_INFO, '');\n }\n\n if (window && !NG_DEFER_BOOTSTRAP.test(window.name)) {\n return doBootstrap();\n }\n\n window.name = window.name.replace(NG_DEFER_BOOTSTRAP, '');\n angular.resumeBootstrap = function(extraModules) {\n forEach(extraModules, function(module) {\n modules.push(module);\n });\n doBootstrap();\n };\n}\n\n/**\n * @ngdoc function\n * @name angular.reloadWithDebugInfo\n * @module ng\n * @description\n * Use this function to reload the current application with debug information turned on.\n * This takes precedence over a call to `$compileProvider.debugInfoEnabled(false)`.\n *\n * See {@link ng.$compileProvider#debugInfoEnabled} for more.\n */\nfunction reloadWithDebugInfo() {\n window.name = 'NG_ENABLE_DEBUG_INFO!' + window.name;\n window.location.reload();\n}\n\n/**\n * @name angular.getTestability\n * @module ng\n * @description\n * Get the testability service for the instance of Angular on the given\n * element.\n * @param {DOMElement} element DOM element which is the root of angular application.\n */\nfunction getTestability(rootElement) {\n return angular.element(rootElement).injector().get('$$testability');\n}\n\nvar SNAKE_CASE_REGEXP = /[A-Z]/g;\nfunction snake_case(name, separator) {\n separator = separator || '_';\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\n return (pos ? separator : '') + letter.toLowerCase();\n });\n}\n\nvar bindJQueryFired = false;\nvar skipDestroyOnNextJQueryCleanData;\nfunction bindJQuery() {\n var originalCleanData;\n\n if (bindJQueryFired) {\n return;\n }\n\n // bind to jQuery if present;\n jQuery = window.jQuery;\n // Use jQuery if it exists with proper functionality, otherwise default to us.\n // Angular 1.2+ requires jQuery 1.7+ for on()/off() support.\n // Angular 1.3+ technically requires at least jQuery 2.1+ but it may work with older\n // versions. It will not work for sure with jQuery <1.7, though.\n if (jQuery && jQuery.fn.on) {\n jqLite = jQuery;\n extend(jQuery.fn, {\n scope: JQLitePrototype.scope,\n isolateScope: JQLitePrototype.isolateScope,\n controller: JQLitePrototype.controller,\n injector: JQLitePrototype.injector,\n inheritedData: JQLitePrototype.inheritedData\n });\n\n // All nodes removed from the DOM via various jQuery APIs like .remove()\n // are passed through jQuery.cleanData. Monkey-patch this method to fire\n // the $destroy event on all removed nodes.\n originalCleanData = jQuery.cleanData;\n jQuery.cleanData = function(elems) {\n var events;\n if (!skipDestroyOnNextJQueryCleanData) {\n for (var i = 0, elem; (elem = elems[i]) != null; i++) {\n events = jQuery._data(elem, \"events\");\n if (events && events.$destroy) {\n jQuery(elem).triggerHandler('$destroy');\n }\n }\n } else {\n skipDestroyOnNextJQueryCleanData = false;\n }\n originalCleanData(elems);\n };\n } else {\n jqLite = JQLite;\n }\n\n angular.element = jqLite;\n\n // Prevent double-proxying.\n bindJQueryFired = true;\n}\n\n/**\n * throw error if the argument is falsy.\n */\nfunction assertArg(arg, name, reason) {\n if (!arg) {\n throw ngMinErr('areq', \"Argument '{0}' is {1}\", (name || '?'), (reason || \"required\"));\n }\n return arg;\n}\n\nfunction assertArgFn(arg, name, acceptArrayAnnotation) {\n if (acceptArrayAnnotation && isArray(arg)) {\n arg = arg[arg.length - 1];\n }\n\n assertArg(isFunction(arg), name, 'not a function, got ' +\n (arg && typeof arg === 'object' ? arg.constructor.name || 'Object' : typeof arg));\n return arg;\n}\n\n/**\n * throw error if the name given is hasOwnProperty\n * @param {String} name the name to test\n * @param {String} context the context in which the name is used, such as module or directive\n */\nfunction assertNotHasOwnProperty(name, context) {\n if (name === 'hasOwnProperty') {\n throw ngMinErr('badname', \"hasOwnProperty is not a valid {0} name\", context);\n }\n}\n\n/**\n * Return the value accessible from the object by path. Any undefined traversals are ignored\n * @param {Object} obj starting object\n * @param {String} path path to traverse\n * @param {boolean} [bindFnToScope=true]\n * @returns {Object} value as accessible by path\n */\n//TODO(misko): this function needs to be removed\nfunction getter(obj, path, bindFnToScope) {\n if (!path) return obj;\n var keys = path.split('.');\n var key;\n var lastInstance = obj;\n var len = keys.length;\n\n for (var i = 0; i < len; i++) {\n key = keys[i];\n if (obj) {\n obj = (lastInstance = obj)[key];\n }\n }\n if (!bindFnToScope && isFunction(obj)) {\n return bind(lastInstance, obj);\n }\n return obj;\n}\n\n/**\n * Return the DOM siblings between the first and last node in the given array.\n * @param {Array} array like object\n * @returns {jqLite} jqLite collection containing the nodes\n */\nfunction getBlockNodes(nodes) {\n // TODO(perf): just check if all items in `nodes` are siblings and if they are return the original\n // collection, otherwise update the original collection.\n var node = nodes[0];\n var endNode = nodes[nodes.length - 1];\n var blockNodes = [node];\n\n do {\n node = node.nextSibling;\n if (!node) break;\n blockNodes.push(node);\n } while (node !== endNode);\n\n return jqLite(blockNodes);\n}\n\n\n/**\n * Creates a new object without a prototype. This object is useful for lookup without having to\n * guard against prototypically inherited properties via hasOwnProperty.\n *\n * Related micro-benchmarks:\n * - http://jsperf.com/object-create2\n * - http://jsperf.com/proto-map-lookup/2\n * - http://jsperf.com/for-in-vs-object-keys2\n *\n * @returns {Object}\n */\nfunction createMap() {\n return Object.create(null);\n}\n\n/**\n * @ngdoc type\n * @name angular.Module\n * @module ng\n * @description\n *\n * Interface for configuring angular {@link angular.module modules}.\n */\n\nfunction setupModuleLoader(window) {\n\n var $injectorMinErr = minErr('$injector');\n var ngMinErr = minErr('ng');\n\n function ensure(obj, name, factory) {\n return obj[name] || (obj[name] = factory());\n }\n\n var angular = ensure(window, 'angular', Object);\n\n // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap\n angular.$$minErr = angular.$$minErr || minErr;\n\n return ensure(angular, 'module', function() {\n /** @type {Object.} */\n var modules = {};\n\n /**\n * @ngdoc function\n * @name angular.module\n * @module ng\n * @description\n *\n * The `angular.module` is a global place for creating, registering and retrieving Angular\n * modules.\n * All modules (angular core or 3rd party) that should be available to an application must be\n * registered using this mechanism.\n *\n * When passed two or more arguments, a new module is created. If passed only one argument, an\n * existing module (the name passed as the first argument to `module`) is retrieved.\n *\n *\n * # Module\n *\n * A module is a collection of services, directives, controllers, filters, and configuration information.\n * `angular.module` is used to configure the {@link auto.$injector $injector}.\n *\n * ```js\n * // Create a new module\n * var myModule = angular.module('myModule', []);\n *\n * // register a new service\n * myModule.value('appName', 'MyCoolApp');\n *\n * // configure existing services inside initialization blocks.\n * myModule.config(['$locationProvider', function($locationProvider) {\n * // Configure existing providers\n * $locationProvider.hashPrefix('!');\n * }]);\n * ```\n *\n * Then you can create an injector and load your modules like this:\n *\n * ```js\n * var injector = angular.injector(['ng', 'myModule'])\n * ```\n *\n * However it's more likely that you'll just use\n * {@link ng.directive:ngApp ngApp} or\n * {@link angular.bootstrap} to simplify this process for you.\n *\n * @param {!string} name The name of the module to create or retrieve.\n * @param {!Array.=} requires If specified then new module is being created. If\n * unspecified then the module is being retrieved for further configuration.\n * @param {Function=} configFn Optional configuration function for the module. Same as\n * {@link angular.Module#config Module#config()}.\n * @returns {module} new module with the {@link angular.Module} api.\n */\n return function module(name, requires, configFn) {\n var assertNotHasOwnProperty = function(name, context) {\n if (name === 'hasOwnProperty') {\n throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);\n }\n };\n\n assertNotHasOwnProperty(name, 'module');\n if (requires && modules.hasOwnProperty(name)) {\n modules[name] = null;\n }\n return ensure(modules, name, function() {\n if (!requires) {\n throw $injectorMinErr('nomod', \"Module '{0}' is not available! You either misspelled \" +\n \"the module name or forgot to load it. If registering a module ensure that you \" +\n \"specify the dependencies as the second argument.\", name);\n }\n\n /** @type {!Array.>} */\n var invokeQueue = [];\n\n /** @type {!Array.} */\n var configBlocks = [];\n\n /** @type {!Array.} */\n var runBlocks = [];\n\n var config = invokeLater('$injector', 'invoke', 'push', configBlocks);\n\n /** @type {angular.Module} */\n var moduleInstance = {\n // Private state\n _invokeQueue: invokeQueue,\n _configBlocks: configBlocks,\n _runBlocks: runBlocks,\n\n /**\n * @ngdoc property\n * @name angular.Module#requires\n * @module ng\n *\n * @description\n * Holds the list of modules which the injector will load before the current module is\n * loaded.\n */\n requires: requires,\n\n /**\n * @ngdoc property\n * @name angular.Module#name\n * @module ng\n *\n * @description\n * Name of the module.\n */\n name: name,\n\n\n /**\n * @ngdoc method\n * @name angular.Module#provider\n * @module ng\n * @param {string} name service name\n * @param {Function} providerType Construction function for creating new instance of the\n * service.\n * @description\n * See {@link auto.$provide#provider $provide.provider()}.\n */\n provider: invokeLater('$provide', 'provider'),\n\n /**\n * @ngdoc method\n * @name angular.Module#factory\n * @module ng\n * @param {string} name service name\n * @param {Function} providerFunction Function for creating new instance of the service.\n * @description\n * See {@link auto.$provide#factory $provide.factory()}.\n */\n factory: invokeLater('$provide', 'factory'),\n\n /**\n * @ngdoc method\n * @name angular.Module#service\n * @module ng\n * @param {string} name service name\n * @param {Function} constructor A constructor function that will be instantiated.\n * @description\n * See {@link auto.$provide#service $provide.service()}.\n */\n service: invokeLater('$provide', 'service'),\n\n /**\n * @ngdoc method\n * @name angular.Module#value\n * @module ng\n * @param {string} name service name\n * @param {*} object Service instance object.\n * @description\n * See {@link auto.$provide#value $provide.value()}.\n */\n value: invokeLater('$provide', 'value'),\n\n /**\n * @ngdoc method\n * @name angular.Module#constant\n * @module ng\n * @param {string} name constant name\n * @param {*} object Constant value.\n * @description\n * Because the constant are fixed, they get applied before other provide methods.\n * See {@link auto.$provide#constant $provide.constant()}.\n */\n constant: invokeLater('$provide', 'constant', 'unshift'),\n\n /**\n * @ngdoc method\n * @name angular.Module#animation\n * @module ng\n * @param {string} name animation name\n * @param {Function} animationFactory Factory function for creating new instance of an\n * animation.\n * @description\n *\n * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.\n *\n *\n * Defines an animation hook that can be later used with\n * {@link ngAnimate.$animate $animate} service and directives that use this service.\n *\n * ```js\n * module.animation('.animation-name', function($inject1, $inject2) {\n * return {\n * eventName : function(element, done) {\n * //code to run the animation\n * //once complete, then run done()\n * return function cancellationFunction(element) {\n * //code to cancel the animation\n * }\n * }\n * }\n * })\n * ```\n *\n * See {@link ngAnimate.$animateProvider#register $animateProvider.register()} and\n * {@link ngAnimate ngAnimate module} for more information.\n */\n animation: invokeLater('$animateProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#filter\n * @module ng\n * @param {string} name Filter name.\n * @param {Function} filterFactory Factory function for creating new instance of filter.\n * @description\n * See {@link ng.$filterProvider#register $filterProvider.register()}.\n */\n filter: invokeLater('$filterProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#controller\n * @module ng\n * @param {string|Object} name Controller name, or an object map of controllers where the\n * keys are the names and the values are the constructors.\n * @param {Function} constructor Controller constructor function.\n * @description\n * See {@link ng.$controllerProvider#register $controllerProvider.register()}.\n */\n controller: invokeLater('$controllerProvider', 'register'),\n\n /**\n * @ngdoc method\n * @name angular.Module#directive\n * @module ng\n * @param {string|Object} name Directive name, or an object map of directives where the\n * keys are the names and the values are the factories.\n * @param {Function} directiveFactory Factory function for creating new instance of\n * directives.\n * @description\n * See {@link ng.$compileProvider#directive $compileProvider.directive()}.\n */\n directive: invokeLater('$compileProvider', 'directive'),\n\n /**\n * @ngdoc method\n * @name angular.Module#config\n * @module ng\n * @param {Function} configFn Execute this function on module load. Useful for service\n * configuration.\n * @description\n * Use this method to register work which needs to be performed on module loading.\n * For more about how to configure services, see\n * {@link providers#providers_provider-recipe Provider Recipe}.\n */\n config: config,\n\n /**\n * @ngdoc method\n * @name angular.Module#run\n * @module ng\n * @param {Function} initializationFn Execute this function after injector creation.\n * Useful for application initialization.\n * @description\n * Use this method to register work which should be performed when the injector is done\n * loading all modules.\n */\n run: function(block) {\n runBlocks.push(block);\n return this;\n }\n };\n\n if (configFn) {\n config(configFn);\n }\n\n return moduleInstance;\n\n /**\n * @param {string} provider\n * @param {string} method\n * @param {String=} insertMethod\n * @returns {angular.Module}\n */\n function invokeLater(provider, method, insertMethod, queue) {\n if (!queue) queue = invokeQueue;\n return function() {\n queue[insertMethod || 'push']([provider, method, arguments]);\n return moduleInstance;\n };\n }\n });\n };\n });\n\n}\n\n/* global angularModule: true,\n version: true,\n\n $LocaleProvider,\n $CompileProvider,\n\n htmlAnchorDirective,\n inputDirective,\n inputDirective,\n formDirective,\n scriptDirective,\n selectDirective,\n styleDirective,\n optionDirective,\n ngBindDirective,\n ngBindHtmlDirective,\n ngBindTemplateDirective,\n ngClassDirective,\n ngClassEvenDirective,\n ngClassOddDirective,\n ngCspDirective,\n ngCloakDirective,\n ngControllerDirective,\n ngFormDirective,\n ngHideDirective,\n ngIfDirective,\n ngIncludeDirective,\n ngIncludeFillContentDirective,\n ngInitDirective,\n ngNonBindableDirective,\n ngPluralizeDirective,\n ngRepeatDirective,\n ngShowDirective,\n ngStyleDirective,\n ngSwitchDirective,\n ngSwitchWhenDirective,\n ngSwitchDefaultDirective,\n ngOptionsDirective,\n ngTranscludeDirective,\n ngModelDirective,\n ngListDirective,\n ngChangeDirective,\n patternDirective,\n patternDirective,\n requiredDirective,\n requiredDirective,\n minlengthDirective,\n minlengthDirective,\n maxlengthDirective,\n maxlengthDirective,\n ngValueDirective,\n ngModelOptionsDirective,\n ngAttributeAliasDirectives,\n ngEventDirectives,\n\n $AnchorScrollProvider,\n $AnimateProvider,\n $BrowserProvider,\n $CacheFactoryProvider,\n $ControllerProvider,\n $DocumentProvider,\n $ExceptionHandlerProvider,\n $FilterProvider,\n $InterpolateProvider,\n $IntervalProvider,\n $HttpProvider,\n $HttpBackendProvider,\n $LocationProvider,\n $LogProvider,\n $ParseProvider,\n $RootScopeProvider,\n $QProvider,\n $$QProvider,\n $$SanitizeUriProvider,\n $SceProvider,\n $SceDelegateProvider,\n $SnifferProvider,\n $TemplateCacheProvider,\n $TemplateRequestProvider,\n $$TestabilityProvider,\n $TimeoutProvider,\n $$RAFProvider,\n $$AsyncCallbackProvider,\n $WindowProvider\n*/\n\n\n/**\n * @ngdoc object\n * @name angular.version\n * @module ng\n * @description\n * An object that contains information about the current AngularJS version. This object has the\n * following properties:\n *\n * - `full` – `{string}` – Full version string, such as \"0.9.18\".\n * - `major` – `{number}` – Major version number, such as \"0\".\n * - `minor` – `{number}` – Minor version number, such as \"9\".\n * - `dot` – `{number}` – Dot version number, such as \"18\".\n * - `codeName` – `{string}` – Code name of the release, such as \"jiggling-armfat\".\n */\nvar version = {\n full: '1.3.0-rc.3', // all of these placeholder strings will be replaced by grunt's\n major: 1, // package task\n minor: 3,\n dot: 0,\n codeName: 'aggressive-pacifism'\n};\n\n\nfunction publishExternalAPI(angular){\n extend(angular, {\n 'bootstrap': bootstrap,\n 'copy': copy,\n 'extend': extend,\n 'equals': equals,\n 'element': jqLite,\n 'forEach': forEach,\n 'injector': createInjector,\n 'noop': noop,\n 'bind': bind,\n 'toJson': toJson,\n 'fromJson': fromJson,\n 'identity': identity,\n 'isUndefined': isUndefined,\n 'isDefined': isDefined,\n 'isString': isString,\n 'isFunction': isFunction,\n 'isObject': isObject,\n 'isNumber': isNumber,\n 'isElement': isElement,\n 'isArray': isArray,\n 'version': version,\n 'isDate': isDate,\n 'lowercase': lowercase,\n 'uppercase': uppercase,\n 'callbacks': {counter: 0},\n 'getTestability': getTestability,\n '$$minErr': minErr,\n '$$csp': csp,\n 'reloadWithDebugInfo': reloadWithDebugInfo,\n '$$hasClass': jqLiteHasClass\n });\n\n angularModule = setupModuleLoader(window);\n try {\n angularModule('ngLocale');\n } catch (e) {\n angularModule('ngLocale', []).provider('$locale', $LocaleProvider);\n }\n\n angularModule('ng', ['ngLocale'], ['$provide',\n function ngModule($provide) {\n // $$sanitizeUriProvider needs to be before $compileProvider as it is used by it.\n $provide.provider({\n $$sanitizeUri: $$SanitizeUriProvider\n });\n $provide.provider('$compile', $CompileProvider).\n directive({\n a: htmlAnchorDirective,\n input: inputDirective,\n textarea: inputDirective,\n form: formDirective,\n script: scriptDirective,\n select: selectDirective,\n style: styleDirective,\n option: optionDirective,\n ngBind: ngBindDirective,\n ngBindHtml: ngBindHtmlDirective,\n ngBindTemplate: ngBindTemplateDirective,\n ngClass: ngClassDirective,\n ngClassEven: ngClassEvenDirective,\n ngClassOdd: ngClassOddDirective,\n ngCloak: ngCloakDirective,\n ngController: ngControllerDirective,\n ngForm: ngFormDirective,\n ngHide: ngHideDirective,\n ngIf: ngIfDirective,\n ngInclude: ngIncludeDirective,\n ngInit: ngInitDirective,\n ngNonBindable: ngNonBindableDirective,\n ngPluralize: ngPluralizeDirective,\n ngRepeat: ngRepeatDirective,\n ngShow: ngShowDirective,\n ngStyle: ngStyleDirective,\n ngSwitch: ngSwitchDirective,\n ngSwitchWhen: ngSwitchWhenDirective,\n ngSwitchDefault: ngSwitchDefaultDirective,\n ngOptions: ngOptionsDirective,\n ngTransclude: ngTranscludeDirective,\n ngModel: ngModelDirective,\n ngList: ngListDirective,\n ngChange: ngChangeDirective,\n pattern: patternDirective,\n ngPattern: patternDirective,\n required: requiredDirective,\n ngRequired: requiredDirective,\n minlength: minlengthDirective,\n ngMinlength: minlengthDirective,\n maxlength: maxlengthDirective,\n ngMaxlength: maxlengthDirective,\n ngValue: ngValueDirective,\n ngModelOptions: ngModelOptionsDirective\n }).\n directive({\n ngInclude: ngIncludeFillContentDirective\n }).\n directive(ngAttributeAliasDirectives).\n directive(ngEventDirectives);\n $provide.provider({\n $anchorScroll: $AnchorScrollProvider,\n $animate: $AnimateProvider,\n $browser: $BrowserProvider,\n $cacheFactory: $CacheFactoryProvider,\n $controller: $ControllerProvider,\n $document: $DocumentProvider,\n $exceptionHandler: $ExceptionHandlerProvider,\n $filter: $FilterProvider,\n $interpolate: $InterpolateProvider,\n $interval: $IntervalProvider,\n $http: $HttpProvider,\n $httpBackend: $HttpBackendProvider,\n $location: $LocationProvider,\n $log: $LogProvider,\n $parse: $ParseProvider,\n $rootScope: $RootScopeProvider,\n $q: $QProvider,\n $$q: $$QProvider,\n $sce: $SceProvider,\n $sceDelegate: $SceDelegateProvider,\n $sniffer: $SnifferProvider,\n $templateCache: $TemplateCacheProvider,\n $templateRequest: $TemplateRequestProvider,\n $$testability: $$TestabilityProvider,\n $timeout: $TimeoutProvider,\n $window: $WindowProvider,\n $$rAF: $$RAFProvider,\n $$asyncCallback : $$AsyncCallbackProvider\n });\n }\n ]);\n}\n\n/* global JQLitePrototype: true,\n addEventListenerFn: true,\n removeEventListenerFn: true,\n BOOLEAN_ATTR: true,\n ALIASED_ATTR: true,\n*/\n\n//////////////////////////////////\n//JQLite\n//////////////////////////////////\n\n/**\n * @ngdoc function\n * @name angular.element\n * @module ng\n * @kind function\n *\n * @description\n * Wraps a raw DOM element or HTML string as a [jQuery](http://jquery.com) element.\n *\n * If jQuery is available, `angular.element` is an alias for the\n * [jQuery](http://api.jquery.com/jQuery/) function. If jQuery is not available, `angular.element`\n * delegates to Angular's built-in subset of jQuery, called \"jQuery lite\" or \"jqLite.\"\n *\n * jqLite is a tiny, API-compatible subset of jQuery that allows\n * Angular to manipulate the DOM in a cross-browser compatible way. **jqLite** implements only the most\n * commonly needed functionality with the goal of having a very small footprint.
\n *\n * To use jQuery, simply load it before `DOMContentLoaded` event fired.\n *\n * **Note:** all element references in Angular are always wrapped with jQuery or\n * jqLite; they are never raw DOM references.
\n *\n * ## Angular's jqLite\n * jqLite provides only the following jQuery methods:\n *\n * - [`addClass()`](http://api.jquery.com/addClass/)\n * - [`after()`](http://api.jquery.com/after/)\n * - [`append()`](http://api.jquery.com/append/)\n * - [`attr()`](http://api.jquery.com/attr/)\n * - [`bind()`](http://api.jquery.com/bind/) - Does not support namespaces, selectors or eventData\n * - [`children()`](http://api.jquery.com/children/) - Does not support selectors\n * - [`clone()`](http://api.jquery.com/clone/)\n * - [`contents()`](http://api.jquery.com/contents/)\n * - [`css()`](http://api.jquery.com/css/)\n * - [`data()`](http://api.jquery.com/data/)\n * - [`detach()`](http://api.jquery.com/detach/)\n * - [`empty()`](http://api.jquery.com/empty/)\n * - [`eq()`](http://api.jquery.com/eq/)\n * - [`find()`](http://api.jquery.com/find/) - Limited to lookups by tag name\n * - [`hasClass()`](http://api.jquery.com/hasClass/)\n * - [`html()`](http://api.jquery.com/html/)\n * - [`next()`](http://api.jquery.com/next/) - Does not support selectors\n * - [`on()`](http://api.jquery.com/on/) - Does not support namespaces, selectors or eventData\n * - [`off()`](http://api.jquery.com/off/) - Does not support namespaces or selectors\n * - [`one()`](http://api.jquery.com/one/) - Does not support namespaces or selectors\n * - [`parent()`](http://api.jquery.com/parent/) - Does not support selectors\n * - [`prepend()`](http://api.jquery.com/prepend/)\n * - [`prop()`](http://api.jquery.com/prop/)\n * - [`ready()`](http://api.jquery.com/ready/)\n * - [`remove()`](http://api.jquery.com/remove/)\n * - [`removeAttr()`](http://api.jquery.com/removeAttr/)\n * - [`removeClass()`](http://api.jquery.com/removeClass/)\n * - [`removeData()`](http://api.jquery.com/removeData/)\n * - [`replaceWith()`](http://api.jquery.com/replaceWith/)\n * - [`text()`](http://api.jquery.com/text/)\n * - [`toggleClass()`](http://api.jquery.com/toggleClass/)\n * - [`triggerHandler()`](http://api.jquery.com/triggerHandler/) - Passes a dummy event object to handlers.\n * - [`unbind()`](http://api.jquery.com/unbind/) - Does not support namespaces\n * - [`val()`](http://api.jquery.com/val/)\n * - [`wrap()`](http://api.jquery.com/wrap/)\n *\n * ## jQuery/jqLite Extras\n * Angular also provides the following additional methods and events to both jQuery and jqLite:\n *\n * ### Events\n * - `$destroy` - AngularJS intercepts all jqLite/jQuery's DOM destruction apis and fires this event\n * on all DOM nodes being removed. This can be used to clean up any 3rd party bindings to the DOM\n * element before it is removed.\n *\n * ### Methods\n * - `controller(name)` - retrieves the controller of the current element or its parent. By default\n * retrieves controller associated with the `ngController` directive. If `name` is provided as\n * camelCase directive name, then the controller for this directive will be retrieved (e.g.\n * `'ngModel'`).\n * - `injector()` - retrieves the injector of the current element or its parent.\n * - `scope()` - retrieves the {@link ng.$rootScope.Scope scope} of the current\n * element or its parent.\n * - `isolateScope()` - retrieves an isolate {@link ng.$rootScope.Scope scope} if one is attached directly to the\n * current element. This getter should be used only on elements that contain a directive which starts a new isolate\n * scope. Calling `scope()` on this element always returns the original non-isolate scope.\n * - `inheritedData()` - same as `data()`, but walks up the DOM until a value is found or the top\n * parent element is reached.\n *\n * @param {string|DOMElement} element HTML string or DOMElement to be wrapped into jQuery.\n * @returns {Object} jQuery object.\n */\n\nJQLite.expando = 'ng339';\n\nvar jqCache = JQLite.cache = {},\n jqId = 1,\n addEventListenerFn = function(element, type, fn) {\n element.addEventListener(type, fn, false);\n },\n removeEventListenerFn = function(element, type, fn) {\n element.removeEventListener(type, fn, false);\n };\n\n/*\n * !!! This is an undocumented \"private\" function !!!\n */\nJQLite._data = function(node) {\n //jQuery always returns an object on cache miss\n return this.cache[node[this.expando]] || {};\n};\n\nfunction jqNextId() { return ++jqId; }\n\n\nvar SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g;\nvar MOZ_HACK_REGEXP = /^moz([A-Z])/;\nvar MOUSE_EVENT_MAP= { mouseleave : \"mouseout\", mouseenter : \"mouseover\"};\nvar jqLiteMinErr = minErr('jqLite');\n\n/**\n * Converts snake_case to camelCase.\n * Also there is special case for Moz prefix starting with upper case letter.\n * @param name Name to normalize\n */\nfunction camelCase(name) {\n return name.\n replace(SPECIAL_CHARS_REGEXP, function(_, separator, letter, offset) {\n return offset ? letter.toUpperCase() : letter;\n }).\n replace(MOZ_HACK_REGEXP, 'Moz$1');\n}\n\nvar SINGLE_TAG_REGEXP = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/;\nvar HTML_REGEXP = /<|?\\w+;/;\nvar TAG_NAME_REGEXP = /<([\\w:]+)/;\nvar XHTML_TAG_REGEXP = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi;\n\nvar wrapMap = {\n 'option': [1, '', ' '],\n\n 'thead': [1, ''],\n 'col': [2, ''],\n 'tr': [2, ''],\n 'td': [3, ''],\n '_default': [0, \"\", \"\"]\n};\n\nwrapMap.optgroup = wrapMap.option;\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction jqLiteIsTextNode(html) {\n return !HTML_REGEXP.test(html);\n}\n\nfunction jqLiteAcceptsData(node) {\n // The window object can accept data but has no nodeType\n // Otherwise we are only interested in elements (1) and documents (9)\n var nodeType = node.nodeType;\n return nodeType === 1 || !nodeType || nodeType === 9;\n}\n\nfunction jqLiteBuildFragment(html, context) {\n var tmp, tag, wrap,\n fragment = context.createDocumentFragment(),\n nodes = [], i;\n\n if (jqLiteIsTextNode(html)) {\n // Convert non-html into a text node\n nodes.push(context.createTextNode(html));\n } else {\n // Convert html into DOM nodes\n tmp = tmp || fragment.appendChild(context.createElement(\"div\"));\n tag = (TAG_NAME_REGEXP.exec(html) || [\"\", \"\"])[1].toLowerCase();\n wrap = wrapMap[tag] || wrapMap._default;\n tmp.innerHTML = wrap[1] + html.replace(XHTML_TAG_REGEXP, \"<$1>$2>\") + wrap[2];\n\n // Descend through wrappers to the right content\n i = wrap[0];\n while (i--) {\n tmp = tmp.lastChild;\n }\n\n nodes = concat(nodes, tmp.childNodes);\n\n tmp = fragment.firstChild;\n tmp.textContent = \"\";\n }\n\n // Remove wrapper from fragment\n fragment.textContent = \"\";\n fragment.innerHTML = \"\"; // Clear inner HTML\n forEach(nodes, function(node) {\n fragment.appendChild(node);\n });\n\n return fragment;\n}\n\nfunction jqLiteParseHTML(html, context) {\n context = context || document;\n var parsed;\n\n if ((parsed = SINGLE_TAG_REGEXP.exec(html))) {\n return [context.createElement(parsed[1])];\n }\n\n if ((parsed = jqLiteBuildFragment(html, context))) {\n return parsed.childNodes;\n }\n\n return [];\n}\n\n/////////////////////////////////////////////\nfunction JQLite(element) {\n if (element instanceof JQLite) {\n return element;\n }\n\n var argIsString;\n\n if (isString(element)) {\n element = trim(element);\n argIsString = true;\n }\n if (!(this instanceof JQLite)) {\n if (argIsString && element.charAt(0) != '<') {\n throw jqLiteMinErr('nosel', 'Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element');\n }\n return new JQLite(element);\n }\n\n if (argIsString) {\n jqLiteAddNodes(this, jqLiteParseHTML(element));\n } else {\n jqLiteAddNodes(this, element);\n }\n}\n\nfunction jqLiteClone(element) {\n return element.cloneNode(true);\n}\n\nfunction jqLiteDealoc(element, onlyDescendants){\n if (!onlyDescendants) jqLiteRemoveData(element);\n\n if (element.querySelectorAll) {\n var descendants = element.querySelectorAll('*');\n for (var i = 0, l = descendants.length; i < l; i++) {\n jqLiteRemoveData(descendants[i]);\n }\n }\n}\n\nfunction jqLiteOff(element, type, fn, unsupported) {\n if (isDefined(unsupported)) throw jqLiteMinErr('offargs', 'jqLite#off() does not support the `selector` argument');\n\n var expandoStore = jqLiteExpandoStore(element);\n var events = expandoStore && expandoStore.events;\n var handle = expandoStore && expandoStore.handle;\n\n if (!handle) return; //no listeners registered\n\n if (!type) {\n for (type in events) {\n if (type !== '$destroy') {\n removeEventListenerFn(element, type, events[type]);\n }\n delete events[type];\n }\n } else {\n forEach(type.split(' '), function(type) {\n if (isUndefined(fn)) {\n removeEventListenerFn(element, type, events[type]);\n delete events[type];\n } else {\n arrayRemove(events[type] || [], fn);\n }\n });\n }\n}\n\nfunction jqLiteRemoveData(element, name) {\n var expandoId = element.ng339;\n var expandoStore = expandoId && jqCache[expandoId];\n\n if (expandoStore) {\n if (name) {\n delete expandoStore.data[name];\n return;\n }\n\n if (expandoStore.handle) {\n if (expandoStore.events.$destroy) {\n expandoStore.handle({}, '$destroy');\n }\n jqLiteOff(element);\n }\n delete jqCache[expandoId];\n element.ng339 = undefined; // don't delete DOM expandos. IE and Chrome don't like it\n }\n}\n\n\nfunction jqLiteExpandoStore(element, createIfNecessary) {\n var expandoId = element.ng339,\n expandoStore = expandoId && jqCache[expandoId];\n\n if (createIfNecessary && !expandoStore) {\n element.ng339 = expandoId = jqNextId();\n expandoStore = jqCache[expandoId] = {events: {}, data: {}, handle: undefined};\n }\n\n return expandoStore;\n}\n\n\nfunction jqLiteData(element, key, value) {\n if (jqLiteAcceptsData(element)) {\n\n var isSimpleSetter = isDefined(value);\n var isSimpleGetter = !isSimpleSetter && key && !isObject(key);\n var massGetter = !key;\n var expandoStore = jqLiteExpandoStore(element, !isSimpleGetter);\n var data = expandoStore && expandoStore.data;\n\n if (isSimpleSetter) { // data('key', value)\n data[key] = value;\n } else {\n if (massGetter) { // data()\n return data;\n } else {\n if (isSimpleGetter) { // data('key')\n // don't force creation of expandoStore if it doesn't exist yet\n return data && data[key];\n } else { // mass-setter: data({key1: val1, key2: val2})\n extend(data, key);\n }\n }\n }\n }\n}\n\nfunction jqLiteHasClass(element, selector) {\n if (!element.getAttribute) return false;\n return ((\" \" + (element.getAttribute('class') || '') + \" \").replace(/[\\n\\t]/g, \" \").\n indexOf( \" \" + selector + \" \" ) > -1);\n}\n\nfunction jqLiteRemoveClass(element, cssClasses) {\n if (cssClasses && element.setAttribute) {\n forEach(cssClasses.split(' '), function(cssClass) {\n element.setAttribute('class', trim(\n (\" \" + (element.getAttribute('class') || '') + \" \")\n .replace(/[\\n\\t]/g, \" \")\n .replace(\" \" + trim(cssClass) + \" \", \" \"))\n );\n });\n }\n}\n\nfunction jqLiteAddClass(element, cssClasses) {\n if (cssClasses && element.setAttribute) {\n var existingClasses = (' ' + (element.getAttribute('class') || '') + ' ')\n .replace(/[\\n\\t]/g, \" \");\n\n forEach(cssClasses.split(' '), function(cssClass) {\n cssClass = trim(cssClass);\n if (existingClasses.indexOf(' ' + cssClass + ' ') === -1) {\n existingClasses += cssClass + ' ';\n }\n });\n\n element.setAttribute('class', trim(existingClasses));\n }\n}\n\n\nfunction jqLiteAddNodes(root, elements) {\n // THIS CODE IS VERY HOT. Don't make changes without benchmarking.\n\n if (elements) {\n\n // if a Node (the most common case)\n if (elements.nodeType) {\n root[root.length++] = elements;\n } else {\n var length = elements.length;\n\n // if an Array or NodeList and not a Window\n if (typeof length === 'number' && elements.window !== elements) {\n if (length) {\n for (var i = 0; i < length; i++) {\n root[root.length++] = elements[i];\n }\n }\n } else {\n root[root.length++] = elements;\n }\n }\n }\n}\n\n\nfunction jqLiteController(element, name) {\n return jqLiteInheritedData(element, '$' + (name || 'ngController' ) + 'Controller');\n}\n\nfunction jqLiteInheritedData(element, name, value) {\n // if element is the document object work with the html element instead\n // this makes $(document).scope() possible\n if(element.nodeType == 9) {\n element = element.documentElement;\n }\n var names = isArray(name) ? name : [name];\n\n while (element) {\n for (var i = 0, ii = names.length; i < ii; i++) {\n if ((value = jqLite.data(element, names[i])) !== undefined) return value;\n }\n\n // If dealing with a document fragment node with a host element, and no parent, use the host\n // element as the parent. This enables directives within a Shadow DOM or polyfilled Shadow DOM\n // to lookup parent controllers.\n element = element.parentNode || (element.nodeType === 11 && element.host);\n }\n}\n\nfunction jqLiteEmpty(element) {\n jqLiteDealoc(element, true);\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n}\n\nfunction jqLiteRemove(element, keepData) {\n if (!keepData) jqLiteDealoc(element);\n var parent = element.parentNode;\n if (parent) parent.removeChild(element);\n}\n\n//////////////////////////////////////////\n// Functions which are declared directly.\n//////////////////////////////////////////\nvar JQLitePrototype = JQLite.prototype = {\n ready: function(fn) {\n var fired = false;\n\n function trigger() {\n if (fired) return;\n fired = true;\n fn();\n }\n\n // check if document is already loaded\n if (document.readyState === 'complete'){\n setTimeout(trigger);\n } else {\n this.on('DOMContentLoaded', trigger); // works for modern browsers and IE9\n // we can not use jqLite since we are not done loading and jQuery could be loaded later.\n // jshint -W064\n JQLite(window).on('load', trigger); // fallback to window.onload for others\n // jshint +W064\n this.on('DOMContentLoaded', trigger);\n }\n },\n toString: function() {\n var value = [];\n forEach(this, function(e){ value.push('' + e);});\n return '[' + value.join(', ') + ']';\n },\n\n eq: function(index) {\n return (index >= 0) ? jqLite(this[index]) : jqLite(this[this.length + index]);\n },\n\n length: 0,\n push: push,\n sort: [].sort,\n splice: [].splice\n};\n\n//////////////////////////////////////////\n// Functions iterating getter/setters.\n// these functions return self on setter and\n// value on get.\n//////////////////////////////////////////\nvar BOOLEAN_ATTR = {};\nforEach('multiple,selected,checked,disabled,readOnly,required,open'.split(','), function(value) {\n BOOLEAN_ATTR[lowercase(value)] = value;\n});\nvar BOOLEAN_ELEMENTS = {};\nforEach('input,select,option,textarea,button,form,details'.split(','), function(value) {\n BOOLEAN_ELEMENTS[value] = true;\n});\nvar ALIASED_ATTR = {\n 'ngMinlength' : 'minlength',\n 'ngMaxlength' : 'maxlength',\n 'ngMin' : 'min',\n 'ngMax' : 'max',\n 'ngPattern' : 'pattern'\n};\n\nfunction getBooleanAttrName(element, name) {\n // check dom last since we will most likely fail on name\n var booleanAttr = BOOLEAN_ATTR[name.toLowerCase()];\n\n // booleanAttr is here twice to minimize DOM access\n return booleanAttr && BOOLEAN_ELEMENTS[nodeName_(element)] && booleanAttr;\n}\n\nfunction getAliasedAttrName(element, name) {\n var nodeName = element.nodeName;\n return (nodeName === 'INPUT' || nodeName === 'TEXTAREA') && ALIASED_ATTR[name];\n}\n\nforEach({\n data: jqLiteData,\n removeData: jqLiteRemoveData\n}, function(fn, name) {\n JQLite[name] = fn;\n});\n\nforEach({\n data: jqLiteData,\n inheritedData: jqLiteInheritedData,\n\n scope: function(element) {\n // Can't use jqLiteData here directly so we stay compatible with jQuery!\n return jqLite.data(element, '$scope') || jqLiteInheritedData(element.parentNode || element, ['$isolateScope', '$scope']);\n },\n\n isolateScope: function(element) {\n // Can't use jqLiteData here directly so we stay compatible with jQuery!\n return jqLite.data(element, '$isolateScope') || jqLite.data(element, '$isolateScopeNoTemplate');\n },\n\n controller: jqLiteController,\n\n injector: function(element) {\n return jqLiteInheritedData(element, '$injector');\n },\n\n removeAttr: function(element, name) {\n element.removeAttribute(name);\n },\n\n hasClass: jqLiteHasClass,\n\n css: function(element, name, value) {\n name = camelCase(name);\n\n if (isDefined(value)) {\n element.style[name] = value;\n } else {\n return element.style[name];\n }\n },\n\n attr: function(element, name, value){\n var lowercasedName = lowercase(name);\n if (BOOLEAN_ATTR[lowercasedName]) {\n if (isDefined(value)) {\n if (!!value) {\n element[name] = true;\n element.setAttribute(name, lowercasedName);\n } else {\n element[name] = false;\n element.removeAttribute(lowercasedName);\n }\n } else {\n return (element[name] ||\n (element.attributes.getNamedItem(name)|| noop).specified)\n ? lowercasedName\n : undefined;\n }\n } else if (isDefined(value)) {\n element.setAttribute(name, value);\n } else if (element.getAttribute) {\n // the extra argument \"2\" is to get the right thing for a.href in IE, see jQuery code\n // some elements (e.g. Document) don't have get attribute, so return undefined\n var ret = element.getAttribute(name, 2);\n // normalize non-existing attributes to undefined (as jQuery)\n return ret === null ? undefined : ret;\n }\n },\n\n prop: function(element, name, value) {\n if (isDefined(value)) {\n element[name] = value;\n } else {\n return element[name];\n }\n },\n\n text: (function() {\n getText.$dv = '';\n return getText;\n\n function getText(element, value) {\n if (isUndefined(value)) {\n var nodeType = element.nodeType;\n return (nodeType === 1 || nodeType === 3) ? element.textContent : '';\n }\n element.textContent = value;\n }\n })(),\n\n val: function(element, value) {\n if (isUndefined(value)) {\n if (element.multiple && nodeName_(element) === 'select') {\n var result = [];\n forEach(element.options, function (option) {\n if (option.selected) {\n result.push(option.value || option.text);\n }\n });\n return result.length === 0 ? null : result;\n }\n return element.value;\n }\n element.value = value;\n },\n\n html: function(element, value) {\n if (isUndefined(value)) {\n return element.innerHTML;\n }\n jqLiteDealoc(element, true);\n element.innerHTML = value;\n },\n\n empty: jqLiteEmpty\n}, function(fn, name){\n /**\n * Properties: writes return selection, reads return first value\n */\n JQLite.prototype[name] = function(arg1, arg2) {\n var i, key;\n var nodeCount = this.length;\n\n // jqLiteHasClass has only two arguments, but is a getter-only fn, so we need to special-case it\n // in a way that survives minification.\n // jqLiteEmpty takes no arguments but is a setter.\n if (fn !== jqLiteEmpty &&\n (((fn.length == 2 && (fn !== jqLiteHasClass && fn !== jqLiteController)) ? arg1 : arg2) === undefined)) {\n if (isObject(arg1)) {\n\n // we are a write, but the object properties are the key/values\n for (i = 0; i < nodeCount; i++) {\n if (fn === jqLiteData) {\n // data() takes the whole object in jQuery\n fn(this[i], arg1);\n } else {\n for (key in arg1) {\n fn(this[i], key, arg1[key]);\n }\n }\n }\n // return self for chaining\n return this;\n } else {\n // we are a read, so read the first child.\n // TODO: do we still need this?\n var value = fn.$dv;\n // Only if we have $dv do we iterate over all, otherwise it is just the first element.\n var jj = (value === undefined) ? Math.min(nodeCount, 1) : nodeCount;\n for (var j = 0; j < jj; j++) {\n var nodeValue = fn(this[j], arg1, arg2);\n value = value ? value + nodeValue : nodeValue;\n }\n return value;\n }\n } else {\n // we are a write, so apply to all children\n for (i = 0; i < nodeCount; i++) {\n fn(this[i], arg1, arg2);\n }\n // return self for chaining\n return this;\n }\n };\n});\n\nfunction createEventHandler(element, events) {\n var eventHandler = function (event, type) {\n // jQuery specific api\n event.isDefaultPrevented = function() {\n return event.defaultPrevented;\n };\n\n var eventFns = events[type || event.type];\n var eventFnsLength = eventFns ? eventFns.length : 0;\n\n if (!eventFnsLength) return;\n\n if (isUndefined(event.immediatePropagationStopped)) {\n var originalStopImmediatePropagation = event.stopImmediatePropagation;\n event.stopImmediatePropagation = function() {\n event.immediatePropagationStopped = true;\n\n if (event.stopPropagation) {\n event.stopPropagation();\n }\n\n if (originalStopImmediatePropagation) {\n originalStopImmediatePropagation.call(event);\n }\n };\n }\n\n event.isImmediatePropagationStopped = function() {\n return event.immediatePropagationStopped === true;\n };\n\n // Copy event handlers in case event handlers array is modified during execution.\n if ((eventFnsLength > 1)) {\n eventFns = shallowCopy(eventFns);\n }\n\n for (var i = 0; i < eventFnsLength; i++) {\n if (!event.isImmediatePropagationStopped()) {\n eventFns[i].call(element, event);\n }\n }\n };\n\n // TODO: this is a hack for angularMocks/clearDataCache that makes it possible to deregister all\n // events on `element`\n eventHandler.elem = element;\n return eventHandler;\n}\n\n//////////////////////////////////////////\n// Functions iterating traversal.\n// These functions chain results into a single\n// selector.\n//////////////////////////////////////////\nforEach({\n removeData: jqLiteRemoveData,\n\n on: function jqLiteOn(element, type, fn, unsupported){\n if (isDefined(unsupported)) throw jqLiteMinErr('onargs', 'jqLite#on() does not support the `selector` or `eventData` parameters');\n\n // Do not add event handlers to non-elements because they will not be cleaned up.\n if (!jqLiteAcceptsData(element)) {\n return;\n }\n\n var expandoStore = jqLiteExpandoStore(element, true);\n var events = expandoStore.events;\n var handle = expandoStore.handle;\n\n if (!handle) {\n handle = expandoStore.handle = createEventHandler(element, events);\n }\n\n // http://jsperf.com/string-indexof-vs-split\n var types = type.indexOf(' ') >= 0 ? type.split(' ') : [type];\n var i = types.length;\n\n while (i--) {\n type = types[i];\n var eventFns = events[type];\n\n if (!eventFns) {\n events[type] = [];\n\n if (type === 'mouseenter' || type === 'mouseleave') {\n // Refer to jQuery's implementation of mouseenter & mouseleave\n // Read about mouseenter and mouseleave:\n // http://www.quirksmode.org/js/events_mouse.html#link8\n\n jqLiteOn(element, MOUSE_EVENT_MAP[type], function(event) {\n var target = this, related = event.relatedTarget;\n // For mousenter/leave call the handler if related is outside the target.\n // NB: No relatedTarget if the mouse left/entered the browser window\n if ( !related || (related !== target && !target.contains(related)) ){\n handle(event, type);\n }\n });\n\n } else {\n if (type !== '$destroy') {\n addEventListenerFn(element, type, handle);\n }\n }\n eventFns = events[type];\n }\n eventFns.push(fn);\n }\n },\n\n off: jqLiteOff,\n\n one: function(element, type, fn) {\n element = jqLite(element);\n\n //add the listener twice so that when it is called\n //you can remove the original function and still be\n //able to call element.off(ev, fn) normally\n element.on(type, function onFn() {\n element.off(type, fn);\n element.off(type, onFn);\n });\n element.on(type, fn);\n },\n\n replaceWith: function(element, replaceNode) {\n var index, parent = element.parentNode;\n jqLiteDealoc(element);\n forEach(new JQLite(replaceNode), function(node){\n if (index) {\n parent.insertBefore(node, index.nextSibling);\n } else {\n parent.replaceChild(node, element);\n }\n index = node;\n });\n },\n\n children: function(element) {\n var children = [];\n forEach(element.childNodes, function(element){\n if (element.nodeType === 1)\n children.push(element);\n });\n return children;\n },\n\n contents: function(element) {\n return element.contentDocument || element.childNodes || [];\n },\n\n append: function(element, node) {\n var nodeType = element.nodeType;\n if (nodeType !== 1 && nodeType !== 11) return;\n\n node = new JQLite(node);\n\n for (var i = 0, ii = node.length; i < ii; i++) {\n var child = node[i];\n element.appendChild(child);\n }\n },\n\n prepend: function(element, node) {\n if (element.nodeType === 1) {\n var index = element.firstChild;\n forEach(new JQLite(node), function(child){\n element.insertBefore(child, index);\n });\n }\n },\n\n wrap: function(element, wrapNode) {\n wrapNode = jqLite(wrapNode).eq(0).clone()[0];\n var parent = element.parentNode;\n if (parent) {\n parent.replaceChild(wrapNode, element);\n }\n wrapNode.appendChild(element);\n },\n\n remove: jqLiteRemove,\n\n detach: function(element) {\n jqLiteRemove(element, true);\n },\n\n after: function(element, newElement) {\n var index = element, parent = element.parentNode;\n newElement = new JQLite(newElement);\n\n for (var i = 0, ii = newElement.length; i < ii; i++) {\n var node = newElement[i];\n parent.insertBefore(node, index.nextSibling);\n index = node;\n }\n },\n\n addClass: jqLiteAddClass,\n removeClass: jqLiteRemoveClass,\n\n toggleClass: function(element, selector, condition) {\n if (selector) {\n forEach(selector.split(' '), function(className){\n var classCondition = condition;\n if (isUndefined(classCondition)) {\n classCondition = !jqLiteHasClass(element, className);\n }\n (classCondition ? jqLiteAddClass : jqLiteRemoveClass)(element, className);\n });\n }\n },\n\n parent: function(element) {\n var parent = element.parentNode;\n return parent && parent.nodeType !== 11 ? parent : null;\n },\n\n next: function(element) {\n return element.nextElementSibling;\n },\n\n find: function(element, selector) {\n if (element.getElementsByTagName) {\n return element.getElementsByTagName(selector);\n } else {\n return [];\n }\n },\n\n clone: jqLiteClone,\n\n triggerHandler: function(element, event, extraParameters) {\n\n var dummyEvent, eventFnsCopy, handlerArgs;\n var eventName = event.type || event;\n var expandoStore = jqLiteExpandoStore(element);\n var events = expandoStore && expandoStore.events;\n var eventFns = events && events[eventName];\n\n if (eventFns) {\n // Create a dummy event to pass to the handlers\n dummyEvent = {\n preventDefault: function() { this.defaultPrevented = true; },\n isDefaultPrevented: function() { return this.defaultPrevented === true; },\n stopImmediatePropagation: function() { this.immediatePropagationStopped = true; },\n isImmediatePropagationStopped: function() { return this.immediatePropagationStopped === true; },\n stopPropagation: noop,\n type: eventName,\n target: element\n };\n\n // If a custom event was provided then extend our dummy event with it\n if (event.type) {\n dummyEvent = extend(dummyEvent, event);\n }\n\n // Copy event handlers in case event handlers array is modified during execution.\n eventFnsCopy = shallowCopy(eventFns);\n handlerArgs = extraParameters ? [dummyEvent].concat(extraParameters) : [dummyEvent];\n\n forEach(eventFnsCopy, function(fn) {\n if (!dummyEvent.isImmediatePropagationStopped()) {\n fn.apply(element, handlerArgs);\n }\n });\n }\n }\n}, function(fn, name){\n /**\n * chaining functions\n */\n JQLite.prototype[name] = function(arg1, arg2, arg3) {\n var value;\n\n for(var i = 0, ii = this.length; i < ii; i++) {\n if (isUndefined(value)) {\n value = fn(this[i], arg1, arg2, arg3);\n if (isDefined(value)) {\n // any function which returns a value needs to be wrapped\n value = jqLite(value);\n }\n } else {\n jqLiteAddNodes(value, fn(this[i], arg1, arg2, arg3));\n }\n }\n return isDefined(value) ? value : this;\n };\n\n // bind legacy bind/unbind to on/off\n JQLite.prototype.bind = JQLite.prototype.on;\n JQLite.prototype.unbind = JQLite.prototype.off;\n});\n\n/**\n * Computes a hash of an 'obj'.\n * Hash of a:\n * string is string\n * number is number as string\n * object is either result of calling $$hashKey function on the object or uniquely generated id,\n * that is also assigned to the $$hashKey property of the object.\n *\n * @param obj\n * @returns {string} hash string such that the same input will have the same hash string.\n * The resulting string key is in 'type:hashKey' format.\n */\nfunction hashKey(obj, nextUidFn) {\n var key = obj && obj.$$hashKey;\n\n if (key) {\n if (typeof key === 'function') {\n key = obj.$$hashKey();\n }\n return key;\n }\n\n var objType = typeof obj;\n if (objType == 'function' || (objType == 'object' && obj !== null)) {\n key = obj.$$hashKey = objType + ':' + (nextUidFn || nextUid)();\n } else {\n key = objType + ':' + obj;\n }\n\n return key;\n}\n\n/**\n * HashMap which can use objects as keys\n */\nfunction HashMap(array, isolatedUid) {\n if (isolatedUid) {\n var uid = 0;\n this.nextUid = function() {\n return ++uid;\n };\n }\n forEach(array, this.put, this);\n}\nHashMap.prototype = {\n /**\n * Store key value pair\n * @param key key to store can be any type\n * @param value value to store can be any type\n */\n put: function(key, value) {\n this[hashKey(key, this.nextUid)] = value;\n },\n\n /**\n * @param key\n * @returns {Object} the value for the key\n */\n get: function(key) {\n return this[hashKey(key, this.nextUid)];\n },\n\n /**\n * Remove the key/value pair\n * @param key\n */\n remove: function(key) {\n var value = this[key = hashKey(key, this.nextUid)];\n delete this[key];\n return value;\n }\n};\n\n/**\n * @ngdoc function\n * @module ng\n * @name angular.injector\n * @kind function\n *\n * @description\n * Creates an injector function that can be used for retrieving services as well as for\n * dependency injection (see {@link guide/di dependency injection}).\n *\n\n * @param {Array.} modules A list of module functions or their aliases. See\n * {@link angular.module}. The `ng` module must be explicitly added.\n * @returns {function()} Injector function. See {@link auto.$injector $injector}.\n *\n * @example\n * Typical usage\n * ```js\n * // create an injector\n * var $injector = angular.injector(['ng']);\n *\n * // use the injector to kick off your application\n * // use the type inference to auto inject arguments, or use implicit injection\n * $injector.invoke(function($rootScope, $compile, $document) {\n * $compile($document)($rootScope);\n * $rootScope.$digest();\n * });\n * ```\n *\n * Sometimes you want to get access to the injector of a currently running Angular app\n * from outside Angular. Perhaps, you want to inject and compile some markup after the\n * application has been bootstrapped. You can do this using the extra `injector()` added\n * to JQuery/jqLite elements. See {@link angular.element}.\n *\n * *This is fairly rare but could be the case if a third party library is injecting the\n * markup.*\n *\n * In the following example a new block of HTML containing a `ng-controller`\n * directive is added to the end of the document body by JQuery. We then compile and link\n * it into the current AngularJS scope.\n *\n * ```js\n * var $div = $('{{content.label}}
');\n * $(document.body).append($div);\n *\n * angular.element(document).injector().invoke(function($compile) {\n * var scope = angular.element($div).scope();\n * $compile($div)(scope);\n * });\n * ```\n */\n\n\n/**\n * @ngdoc module\n * @name auto\n * @description\n *\n * Implicit module which gets automatically added to each {@link auto.$injector $injector}.\n */\n\nvar FN_ARGS = /^function\\s*[^\\(]*\\(\\s*([^\\)]*)\\)/m;\nvar FN_ARG_SPLIT = /,/;\nvar FN_ARG = /^\\s*(_?)(\\S+?)\\1\\s*$/;\nvar STRIP_COMMENTS = /((\\/\\/.*$)|(\\/\\*[\\s\\S]*?\\*\\/))/mg;\nvar $injectorMinErr = minErr('$injector');\n\nfunction anonFn(fn) {\n // For anonymous functions, showing at the very least the function signature can help in\n // debugging.\n var fnText = fn.toString().replace(STRIP_COMMENTS, ''),\n args = fnText.match(FN_ARGS);\n if (args) {\n return 'function(' + (args[1] || '').replace(/[\\s\\r\\n]+/, ' ') + ')';\n }\n return 'fn';\n}\n\nfunction annotate(fn, strictDi, name) {\n var $inject,\n fnText,\n argDecl,\n last;\n\n if (typeof fn === 'function') {\n if (!($inject = fn.$inject)) {\n $inject = [];\n if (fn.length) {\n if (strictDi) {\n if (!isString(name) || !name) {\n name = fn.name || anonFn(fn);\n }\n throw $injectorMinErr('strictdi',\n '{0} is not using explicit annotation and cannot be invoked in strict mode', name);\n }\n fnText = fn.toString().replace(STRIP_COMMENTS, '');\n argDecl = fnText.match(FN_ARGS);\n forEach(argDecl[1].split(FN_ARG_SPLIT), function(arg) {\n arg.replace(FN_ARG, function(all, underscore, name) {\n $inject.push(name);\n });\n });\n }\n fn.$inject = $inject;\n }\n } else if (isArray(fn)) {\n last = fn.length - 1;\n assertArgFn(fn[last], 'fn');\n $inject = fn.slice(0, last);\n } else {\n assertArgFn(fn, 'fn', true);\n }\n return $inject;\n}\n\n///////////////////////////////////////\n\n/**\n * @ngdoc service\n * @name $injector\n * @kind function\n *\n * @description\n *\n * `$injector` is used to retrieve object instances as defined by\n * {@link auto.$provide provider}, instantiate types, invoke methods,\n * and load modules.\n *\n * The following always holds true:\n *\n * ```js\n * var $injector = angular.injector();\n * expect($injector.get('$injector')).toBe($injector);\n * expect($injector.invoke(function($injector) {\n * return $injector;\n * }).toBe($injector);\n * ```\n *\n * # Injection Function Annotation\n *\n * JavaScript does not have annotations, and annotations are needed for dependency injection. The\n * following are all valid ways of annotating function with injection arguments and are equivalent.\n *\n * ```js\n * // inferred (only works if code not minified/obfuscated)\n * $injector.invoke(function(serviceA){});\n *\n * // annotated\n * function explicit(serviceA) {};\n * explicit.$inject = ['serviceA'];\n * $injector.invoke(explicit);\n *\n * // inline\n * $injector.invoke(['serviceA', function(serviceA){}]);\n * ```\n *\n * ## Inference\n *\n * In JavaScript calling `toString()` on a function returns the function definition. The definition\n * can then be parsed and the function arguments can be extracted. *NOTE:* This does not work with\n * minification, and obfuscation tools since these tools change the argument names.\n *\n * ## `$inject` Annotation\n * By adding an `$inject` property onto a function the injection parameters can be specified.\n *\n * ## Inline\n * As an array of injection names, where the last item in the array is the function to call.\n */\n\n/**\n * @ngdoc method\n * @name $injector#get\n *\n * @description\n * Return an instance of the service.\n *\n * @param {string} name The name of the instance to retrieve.\n * @return {*} The instance.\n */\n\n/**\n * @ngdoc method\n * @name $injector#invoke\n *\n * @description\n * Invoke the method and supply the method arguments from the `$injector`.\n *\n * @param {!Function} fn The function to invoke. Function parameters are injected according to the\n * {@link guide/di $inject Annotation} rules.\n * @param {Object=} self The `this` for the invoked method.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n * object first, before the `$injector` is consulted.\n * @returns {*} the value returned by the invoked `fn` function.\n */\n\n/**\n * @ngdoc method\n * @name $injector#has\n *\n * @description\n * Allows the user to query if the particular service exists.\n *\n * @param {string} Name of the service to query.\n * @returns {boolean} returns true if injector has given service.\n */\n\n/**\n * @ngdoc method\n * @name $injector#instantiate\n * @description\n * Create a new instance of JS type. The method takes a constructor function, invokes the new\n * operator, and supplies all of the arguments to the constructor function as specified by the\n * constructor annotation.\n *\n * @param {Function} Type Annotated constructor function.\n * @param {Object=} locals Optional object. If preset then any argument names are read from this\n * object first, before the `$injector` is consulted.\n * @returns {Object} new instance of `Type`.\n */\n\n/**\n * @ngdoc method\n * @name $injector#annotate\n *\n * @description\n * Returns an array of service names which the function is requesting for injection. This API is\n * used by the injector to determine which services need to be injected into the function when the\n * function is invoked. There are three ways in which the function can be annotated with the needed\n * dependencies.\n *\n * # Argument names\n *\n * The simplest form is to extract the dependencies from the arguments of the function. This is done\n * by converting the function into a string using `toString()` method and extracting the argument\n * names.\n * ```js\n * // Given\n * function MyController($scope, $route) {\n * // ...\n * }\n *\n * // Then\n * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * This method does not work with code minification / obfuscation. For this reason the following\n * annotation strategies are supported.\n *\n * # The `$inject` property\n *\n * If a function has an `$inject` property and its value is an array of strings, then the strings\n * represent names of services to be injected into the function.\n * ```js\n * // Given\n * var MyController = function(obfuscatedScope, obfuscatedRoute) {\n * // ...\n * }\n * // Define function dependencies\n * MyController['$inject'] = ['$scope', '$route'];\n *\n * // Then\n * expect(injector.annotate(MyController)).toEqual(['$scope', '$route']);\n * ```\n *\n * # The array notation\n *\n * It is often desirable to inline Injected functions and that's when setting the `$inject` property\n * is very inconvenient. In these situations using the array notation to specify the dependencies in\n * a way that survives minification is a better choice:\n *\n * ```js\n * // We wish to write this (not minification / obfuscation safe)\n * injector.invoke(function($compile, $rootScope) {\n * // ...\n * });\n *\n * // We are forced to write break inlining\n * var tmpFn = function(obfuscatedCompile, obfuscatedRootScope) {\n * // ...\n * };\n * tmpFn.$inject = ['$compile', '$rootScope'];\n * injector.invoke(tmpFn);\n *\n * // To better support inline function the inline annotation is supported\n * injector.invoke(['$compile', '$rootScope', function(obfCompile, obfRootScope) {\n * // ...\n * }]);\n *\n * // Therefore\n * expect(injector.annotate(\n * ['$compile', '$rootScope', function(obfus_$compile, obfus_$rootScope) {}])\n * ).toEqual(['$compile', '$rootScope']);\n * ```\n *\n * @param {Function|Array.} fn Function for which dependent service names need to\n * be retrieved as described above.\n *\n * @returns {Array.} The names of the services which the function requires.\n */\n\n\n\n\n/**\n * @ngdoc service\n * @name $provide\n *\n * @description\n *\n * The {@link auto.$provide $provide} service has a number of methods for registering components\n * with the {@link auto.$injector $injector}. Many of these functions are also exposed on\n * {@link angular.Module}.\n *\n * An Angular **service** is a singleton object created by a **service factory**. These **service\n * factories** are functions which, in turn, are created by a **service provider**.\n * The **service providers** are constructor functions. When instantiated they must contain a\n * property called `$get`, which holds the **service factory** function.\n *\n * When you request a service, the {@link auto.$injector $injector} is responsible for finding the\n * correct **service provider**, instantiating it and then calling its `$get` **service factory**\n * function to get the instance of the **service**.\n *\n * Often services have no configuration options and there is no need to add methods to the service\n * provider. The provider will be no more than a constructor function with a `$get` property. For\n * these cases the {@link auto.$provide $provide} service has additional helper methods to register\n * services without specifying a provider.\n *\n * * {@link auto.$provide#provider provider(provider)} - registers a **service provider** with the\n * {@link auto.$injector $injector}\n * * {@link auto.$provide#constant constant(obj)} - registers a value/object that can be accessed by\n * providers and services.\n * * {@link auto.$provide#value value(obj)} - registers a value/object that can only be accessed by\n * services, not providers.\n * * {@link auto.$provide#factory factory(fn)} - registers a service **factory function**, `fn`,\n * that will be wrapped in a **service provider** object, whose `$get` property will contain the\n * given factory function.\n * * {@link auto.$provide#service service(class)} - registers a **constructor function**, `class`\n * that will be wrapped in a **service provider** object, whose `$get` property will instantiate\n * a new object using the given constructor function.\n *\n * See the individual methods for more information and examples.\n */\n\n/**\n * @ngdoc method\n * @name $provide#provider\n * @description\n *\n * Register a **provider function** with the {@link auto.$injector $injector}. Provider functions\n * are constructor functions, whose instances are responsible for \"providing\" a factory for a\n * service.\n *\n * Service provider names start with the name of the service they provide followed by `Provider`.\n * For example, the {@link ng.$log $log} service has a provider called\n * {@link ng.$logProvider $logProvider}.\n *\n * Service provider objects can have additional methods which allow configuration of the provider\n * and its service. Importantly, you can configure what kind of service is created by the `$get`\n * method, or how that service will act. For example, the {@link ng.$logProvider $logProvider} has a\n * method {@link ng.$logProvider#debugEnabled debugEnabled}\n * which lets you specify whether the {@link ng.$log $log} service will log debug messages to the\n * console or not.\n *\n * @param {string} name The name of the instance. NOTE: the provider will be available under `name +\n 'Provider'` key.\n * @param {(Object|function())} provider If the provider is:\n *\n * - `Object`: then it should have a `$get` method. The `$get` method will be invoked using\n * {@link auto.$injector#invoke $injector.invoke()} when an instance needs to be created.\n * - `Constructor`: a new instance of the provider will be created using\n * {@link auto.$injector#instantiate $injector.instantiate()}, then treated as `object`.\n *\n * @returns {Object} registered provider instance\n\n * @example\n *\n * The following example shows how to create a simple event tracking service and register it using\n * {@link auto.$provide#provider $provide.provider()}.\n *\n * ```js\n * // Define the eventTracker provider\n * function EventTrackerProvider() {\n * var trackingUrl = '/track';\n *\n * // A provider method for configuring where the tracked events should been saved\n * this.setTrackingUrl = function(url) {\n * trackingUrl = url;\n * };\n *\n * // The service factory function\n * this.$get = ['$http', function($http) {\n * var trackedEvents = {};\n * return {\n * // Call this to track an event\n * event: function(event) {\n * var count = trackedEvents[event] || 0;\n * count += 1;\n * trackedEvents[event] = count;\n * return count;\n * },\n * // Call this to save the tracked events to the trackingUrl\n * save: function() {\n * $http.post(trackingUrl, trackedEvents);\n * }\n * };\n * }];\n * }\n *\n * describe('eventTracker', function() {\n * var postSpy;\n *\n * beforeEach(module(function($provide) {\n * // Register the eventTracker provider\n * $provide.provider('eventTracker', EventTrackerProvider);\n * }));\n *\n * beforeEach(module(function(eventTrackerProvider) {\n * // Configure eventTracker provider\n * eventTrackerProvider.setTrackingUrl('/custom-track');\n * }));\n *\n * it('tracks events', inject(function(eventTracker) {\n * expect(eventTracker.event('login')).toEqual(1);\n * expect(eventTracker.event('login')).toEqual(2);\n * }));\n *\n * it('saves to the tracking url', inject(function(eventTracker, $http) {\n * postSpy = spyOn($http, 'post');\n * eventTracker.event('login');\n * eventTracker.save();\n * expect(postSpy).toHaveBeenCalled();\n * expect(postSpy.mostRecentCall.args[0]).not.toEqual('/track');\n * expect(postSpy.mostRecentCall.args[0]).toEqual('/custom-track');\n * expect(postSpy.mostRecentCall.args[1]).toEqual({ 'login': 1 });\n * }));\n * });\n * ```\n */\n\n/**\n * @ngdoc method\n * @name $provide#factory\n * @description\n *\n * Register a **service factory**, which will be called to return the service instance.\n * This is short for registering a service where its provider consists of only a `$get` property,\n * which is the given service factory function.\n * You should use {@link auto.$provide#factory $provide.factory(getFn)} if you do not need to\n * configure your service in a provider.\n *\n * @param {string} name The name of the instance.\n * @param {function()} $getFn The $getFn for the instance creation. Internally this is a short hand\n * for `$provide.provider(name, {$get: $getFn})`.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service\n * ```js\n * $provide.factory('ping', ['$http', function($http) {\n * return function ping() {\n * return $http.send('/ping');\n * };\n * }]);\n * ```\n * You would then inject and use this service like this:\n * ```js\n * someModule.controller('Ctrl', ['ping', function(ping) {\n * ping();\n * }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#service\n * @description\n *\n * Register a **service constructor**, which will be invoked with `new` to create the service\n * instance.\n * This is short for registering a service where its provider's `$get` property is the service\n * constructor function that will be used to instantiate the service instance.\n *\n * You should use {@link auto.$provide#service $provide.service(class)} if you define your service\n * as a type/class.\n *\n * @param {string} name The name of the instance.\n * @param {Function} constructor A class (constructor function) that will be instantiated.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here is an example of registering a service using\n * {@link auto.$provide#service $provide.service(class)}.\n * ```js\n * var Ping = function($http) {\n * this.$http = $http;\n * };\n *\n * Ping.$inject = ['$http'];\n *\n * Ping.prototype.send = function() {\n * return this.$http.get('/ping');\n * };\n * $provide.service('ping', Ping);\n * ```\n * You would then inject and use this service like this:\n * ```js\n * someModule.controller('Ctrl', ['ping', function(ping) {\n * ping.send();\n * }]);\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#value\n * @description\n *\n * Register a **value service** with the {@link auto.$injector $injector}, such as a string, a\n * number, an array, an object or a function. This is short for registering a service where its\n * provider's `$get` property is a factory function that takes no arguments and returns the **value\n * service**.\n *\n * Value services are similar to constant services, except that they cannot be injected into a\n * module configuration function (see {@link angular.Module#config}) but they can be overridden by\n * an Angular\n * {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the instance.\n * @param {*} value The value.\n * @returns {Object} registered provider instance\n *\n * @example\n * Here are some examples of creating value services.\n * ```js\n * $provide.value('ADMIN_USER', 'admin');\n *\n * $provide.value('RoleLookup', { admin: 0, writer: 1, reader: 2 });\n *\n * $provide.value('halfOf', function(value) {\n * return value / 2;\n * });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#constant\n * @description\n *\n * Register a **constant service**, such as a string, a number, an array, an object or a function,\n * with the {@link auto.$injector $injector}. Unlike {@link auto.$provide#value value} it can be\n * injected into a module configuration function (see {@link angular.Module#config}) and it cannot\n * be overridden by an Angular {@link auto.$provide#decorator decorator}.\n *\n * @param {string} name The name of the constant.\n * @param {*} value The constant value.\n * @returns {Object} registered instance\n *\n * @example\n * Here a some examples of creating constants:\n * ```js\n * $provide.constant('SHARD_HEIGHT', 306);\n *\n * $provide.constant('MY_COLOURS', ['red', 'blue', 'grey']);\n *\n * $provide.constant('double', function(value) {\n * return value * 2;\n * });\n * ```\n */\n\n\n/**\n * @ngdoc method\n * @name $provide#decorator\n * @description\n *\n * Register a **service decorator** with the {@link auto.$injector $injector}. A service decorator\n * intercepts the creation of a service, allowing it to override or modify the behaviour of the\n * service. The object returned by the decorator may be the original service, or a new service\n * object which replaces or wraps and delegates to the original service.\n *\n * @param {string} name The name of the service to decorate.\n * @param {function()} decorator This function will be invoked when the service needs to be\n * instantiated and should return the decorated service instance. The function is called using\n * the {@link auto.$injector#invoke injector.invoke} method and is therefore fully injectable.\n * Local injection arguments:\n *\n * * `$delegate` - The original service instance, which can be monkey patched, configured,\n * decorated or delegated to.\n *\n * @example\n * Here we decorate the {@link ng.$log $log} service to convert warnings to errors by intercepting\n * calls to {@link ng.$log#error $log.warn()}.\n * ```js\n * $provide.decorator('$log', ['$delegate', function($delegate) {\n * $delegate.warn = $delegate.error;\n * return $delegate;\n * }]);\n * ```\n */\n\n\nfunction createInjector(modulesToLoad, strictDi) {\n strictDi = (strictDi === true);\n var INSTANTIATING = {},\n providerSuffix = 'Provider',\n path = [],\n loadedModules = new HashMap([], true),\n providerCache = {\n $provide: {\n provider: supportObject(provider),\n factory: supportObject(factory),\n service: supportObject(service),\n value: supportObject(value),\n constant: supportObject(constant),\n decorator: decorator\n }\n },\n providerInjector = (providerCache.$injector =\n createInternalInjector(providerCache, function() {\n throw $injectorMinErr('unpr', \"Unknown provider: {0}\", path.join(' <- '));\n })),\n instanceCache = {},\n instanceInjector = (instanceCache.$injector =\n createInternalInjector(instanceCache, function(servicename) {\n var provider = providerInjector.get(servicename + providerSuffix);\n return instanceInjector.invoke(provider.$get, provider, undefined, servicename);\n }));\n\n\n forEach(loadModules(modulesToLoad), function(fn) { instanceInjector.invoke(fn || noop); });\n\n return instanceInjector;\n\n ////////////////////////////////////\n // $provider\n ////////////////////////////////////\n\n function supportObject(delegate) {\n return function(key, value) {\n if (isObject(key)) {\n forEach(key, reverseParams(delegate));\n } else {\n return delegate(key, value);\n }\n };\n }\n\n function provider(name, provider_) {\n assertNotHasOwnProperty(name, 'service');\n if (isFunction(provider_) || isArray(provider_)) {\n provider_ = providerInjector.instantiate(provider_);\n }\n if (!provider_.$get) {\n throw $injectorMinErr('pget', \"Provider '{0}' must define $get factory method.\", name);\n }\n return providerCache[name + providerSuffix] = provider_;\n }\n\n function factory(name, factoryFn) { return provider(name, { $get: factoryFn }); }\n\n function service(name, constructor) {\n return factory(name, ['$injector', function($injector) {\n return $injector.instantiate(constructor);\n }]);\n }\n\n function value(name, val) { return factory(name, valueFn(val)); }\n\n function constant(name, value) {\n assertNotHasOwnProperty(name, 'constant');\n providerCache[name] = value;\n instanceCache[name] = value;\n }\n\n function decorator(serviceName, decorFn) {\n var origProvider = providerInjector.get(serviceName + providerSuffix),\n orig$get = origProvider.$get;\n\n origProvider.$get = function() {\n var origInstance = instanceInjector.invoke(orig$get, origProvider);\n return instanceInjector.invoke(decorFn, null, {$delegate: origInstance});\n };\n }\n\n ////////////////////////////////////\n // Module Loading\n ////////////////////////////////////\n function loadModules(modulesToLoad){\n var runBlocks = [], moduleFn;\n forEach(modulesToLoad, function(module) {\n if (loadedModules.get(module)) return;\n loadedModules.put(module, true);\n\n function runInvokeQueue(queue) {\n var i, ii;\n for(i = 0, ii = queue.length; i < ii; i++) {\n var invokeArgs = queue[i],\n provider = providerInjector.get(invokeArgs[0]);\n\n provider[invokeArgs[1]].apply(provider, invokeArgs[2]);\n }\n }\n\n try {\n if (isString(module)) {\n moduleFn = angularModule(module);\n runBlocks = runBlocks.concat(loadModules(moduleFn.requires)).concat(moduleFn._runBlocks);\n runInvokeQueue(moduleFn._invokeQueue);\n runInvokeQueue(moduleFn._configBlocks);\n } else if (isFunction(module)) {\n runBlocks.push(providerInjector.invoke(module));\n } else if (isArray(module)) {\n runBlocks.push(providerInjector.invoke(module));\n } else {\n assertArgFn(module, 'module');\n }\n } catch (e) {\n if (isArray(module)) {\n module = module[module.length - 1];\n }\n if (e.message && e.stack && e.stack.indexOf(e.message) == -1) {\n // Safari & FF's stack traces don't contain error.message content\n // unlike those of Chrome and IE\n // So if stack doesn't contain message, we create a new string that contains both.\n // Since error.stack is read-only in Safari, I'm overriding e and not e.stack here.\n /* jshint -W022 */\n e = e.message + '\\n' + e.stack;\n }\n throw $injectorMinErr('modulerr', \"Failed to instantiate module {0} due to:\\n{1}\",\n module, e.stack || e.message || e);\n }\n });\n return runBlocks;\n }\n\n ////////////////////////////////////\n // internal Injector\n ////////////////////////////////////\n\n function createInternalInjector(cache, factory) {\n\n function getService(serviceName) {\n if (cache.hasOwnProperty(serviceName)) {\n if (cache[serviceName] === INSTANTIATING) {\n throw $injectorMinErr('cdep', 'Circular dependency found: {0}',\n serviceName + ' <- ' + path.join(' <- '));\n }\n return cache[serviceName];\n } else {\n try {\n path.unshift(serviceName);\n cache[serviceName] = INSTANTIATING;\n return cache[serviceName] = factory(serviceName);\n } catch (err) {\n if (cache[serviceName] === INSTANTIATING) {\n delete cache[serviceName];\n }\n throw err;\n } finally {\n path.shift();\n }\n }\n }\n\n function invoke(fn, self, locals, serviceName) {\n if (typeof locals === 'string') {\n serviceName = locals;\n locals = null;\n }\n\n var args = [],\n $inject = annotate(fn, strictDi, serviceName),\n length, i,\n key;\n\n for(i = 0, length = $inject.length; i < length; i++) {\n key = $inject[i];\n if (typeof key !== 'string') {\n throw $injectorMinErr('itkn',\n 'Incorrect injection token! Expected service name as string, got {0}', key);\n }\n args.push(\n locals && locals.hasOwnProperty(key)\n ? locals[key]\n : getService(key)\n );\n }\n if (isArray(fn)) {\n fn = fn[length];\n }\n\n // http://jsperf.com/angularjs-invoke-apply-vs-switch\n // #5388\n return fn.apply(self, args);\n }\n\n function instantiate(Type, locals, serviceName) {\n var Constructor = function() {},\n instance, returnedValue;\n\n // Check if Type is annotated and use just the given function at n-1 as parameter\n // e.g. someModule.factory('greeter', ['$window', function(renamed$window) {}]);\n Constructor.prototype = (isArray(Type) ? Type[Type.length - 1] : Type).prototype;\n instance = new Constructor();\n returnedValue = invoke(Type, instance, locals, serviceName);\n\n return isObject(returnedValue) || isFunction(returnedValue) ? returnedValue : instance;\n }\n\n return {\n invoke: invoke,\n instantiate: instantiate,\n get: getService,\n annotate: annotate,\n has: function(name) {\n return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);\n }\n };\n }\n}\n\ncreateInjector.$$annotate = annotate;\n\n/**\n * @ngdoc service\n * @name $anchorScroll\n * @kind function\n * @requires $window\n * @requires $location\n * @requires $rootScope\n *\n * @description\n * When called, it checks current value of `$location.hash()` and scrolls to the related element,\n * according to rules specified in\n * [Html5 spec](http://dev.w3.org/html5/spec/Overview.html#the-indicated-part-of-the-document).\n *\n * It also watches the `$location.hash()` and scrolls whenever it changes to match any anchor.\n * This can be disabled by calling `$anchorScrollProvider.disableAutoScrolling()`.\n *\n * @example\n \n \n \n \n \n angular.module('anchorScrollExample', [])\n .controller('ScrollController', ['$scope', '$location', '$anchorScroll',\n function ($scope, $location, $anchorScroll) {\n $scope.gotoBottom = function() {\n // set the location.hash to the id of\n // the element you wish to scroll to.\n $location.hash('bottom');\n\n // call $anchorScroll()\n $anchorScroll();\n };\n }]);\n \n \n #scrollArea {\n height: 350px;\n overflow: auto;\n }\n\n #bottom {\n display: block;\n margin-top: 2000px;\n }\n \n \n */\nfunction $AnchorScrollProvider() {\n\n var autoScrollingEnabled = true;\n\n this.disableAutoScrolling = function() {\n autoScrollingEnabled = false;\n };\n\n this.$get = ['$window', '$location', '$rootScope', function($window, $location, $rootScope) {\n var document = $window.document;\n\n // helper function to get first anchor from a NodeList\n // can't use filter.filter, as it accepts only instances of Array\n // and IE can't convert NodeList to an array using [].slice\n // TODO(vojta): use filter if we change it to accept lists as well\n function getFirstAnchor(list) {\n var result = null;\n forEach(list, function(element) {\n if (!result && nodeName_(element) === 'a') result = element;\n });\n return result;\n }\n\n function scroll() {\n var hash = $location.hash(), elm;\n\n // empty hash, scroll to the top of the page\n if (!hash) $window.scrollTo(0, 0);\n\n // element with given id\n else if ((elm = document.getElementById(hash))) elm.scrollIntoView();\n\n // first anchor with given name :-D\n else if ((elm = getFirstAnchor(document.getElementsByName(hash)))) elm.scrollIntoView();\n\n // no element and hash == 'top', scroll to the top of the page\n else if (hash === 'top') $window.scrollTo(0, 0);\n }\n\n // does not scroll when user clicks on anchor link that is currently on\n // (no url change, no $location.hash() change), browser native does scroll\n if (autoScrollingEnabled) {\n $rootScope.$watch(function autoScrollWatch() {return $location.hash();},\n function autoScrollWatchAction() {\n $rootScope.$evalAsync(scroll);\n });\n }\n\n return scroll;\n }];\n}\n\nvar $animateMinErr = minErr('$animate');\n\n/**\n * @ngdoc provider\n * @name $animateProvider\n *\n * @description\n * Default implementation of $animate that doesn't perform any animations, instead just\n * synchronously performs DOM\n * updates and calls done() callbacks.\n *\n * In order to enable animations the ngAnimate module has to be loaded.\n *\n * To see the functional implementation check out src/ngAnimate/animate.js\n */\nvar $AnimateProvider = ['$provide', function($provide) {\n\n\n this.$$selectors = {};\n\n\n /**\n * @ngdoc method\n * @name $animateProvider#register\n *\n * @description\n * Registers a new injectable animation factory function. The factory function produces the\n * animation object which contains callback functions for each event that is expected to be\n * animated.\n *\n * * `eventFn`: `function(Element, doneFunction)` The element to animate, the `doneFunction`\n * must be called once the element animation is complete. If a function is returned then the\n * animation service will use this function to cancel the animation whenever a cancel event is\n * triggered.\n *\n *\n * ```js\n * return {\n * eventFn : function(element, done) {\n * //code to run the animation\n * //once complete, then run done()\n * return function cancellationFunction() {\n * //code to cancel the animation\n * }\n * }\n * }\n * ```\n *\n * @param {string} name The name of the animation.\n * @param {Function} factory The factory function that will be executed to return the animation\n * object.\n */\n this.register = function(name, factory) {\n var key = name + '-animation';\n if (name && name.charAt(0) != '.') throw $animateMinErr('notcsel',\n \"Expecting class selector starting with '.' got '{0}'.\", name);\n this.$$selectors[name.substr(1)] = key;\n $provide.factory(key, factory);\n };\n\n /**\n * @ngdoc method\n * @name $animateProvider#classNameFilter\n *\n * @description\n * Sets and/or returns the CSS class regular expression that is checked when performing\n * an animation. Upon bootstrap the classNameFilter value is not set at all and will\n * therefore enable $animate to attempt to perform an animation on any element.\n * When setting the classNameFilter value, animations will only be performed on elements\n * that successfully match the filter expression. This in turn can boost performance\n * for low-powered devices as well as applications containing a lot of structural operations.\n * @param {RegExp=} expression The className expression which will be checked against all animations\n * @return {RegExp} The current CSS className expression value. If null then there is no expression value\n */\n this.classNameFilter = function(expression) {\n if(arguments.length === 1) {\n this.$$classNameFilter = (expression instanceof RegExp) ? expression : null;\n }\n return this.$$classNameFilter;\n };\n\n this.$get = ['$$q', '$$asyncCallback', function($$q, $$asyncCallback) {\n\n var currentDefer;\n function asyncPromise() {\n // only serve one instance of a promise in order to save CPU cycles\n if (!currentDefer) {\n currentDefer = $$q.defer();\n $$asyncCallback(function() {\n currentDefer.resolve();\n currentDefer = null;\n });\n }\n return currentDefer.promise;\n }\n\n /**\n *\n * @ngdoc service\n * @name $animate\n * @description The $animate service provides rudimentary DOM manipulation functions to\n * insert, remove and move elements within the DOM, as well as adding and removing classes.\n * This service is the core service used by the ngAnimate $animator service which provides\n * high-level animation hooks for CSS and JavaScript.\n *\n * $animate is available in the AngularJS core, however, the ngAnimate module must be included\n * to enable full out animation support. Otherwise, $animate will only perform simple DOM\n * manipulation operations.\n *\n * To learn more about enabling animation support, click here to visit the {@link ngAnimate\n * ngAnimate module page} as well as the {@link ngAnimate.$animate ngAnimate $animate service\n * page}.\n */\n return {\n\n /**\n *\n * @ngdoc method\n * @name $animate#enter\n * @kind function\n * @description Inserts the element into the DOM either after the `after` element or\n * as the first child within the `parent` element. When the function is called a promise\n * is returned that will be resolved at a later time.\n * @param {DOMElement} element the element which will be inserted into the DOM\n * @param {DOMElement} parent the parent element which will append the element as\n * a child (if the after element is not present)\n * @param {DOMElement} after the sibling element which will append the element\n * after itself\n * @return {Promise} the animation callback promise\n */\n enter : function(element, parent, after) {\n after ? after.after(element)\n : parent.prepend(element);\n return asyncPromise();\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#leave\n * @kind function\n * @description Removes the element from the DOM. When the function is called a promise\n * is returned that will be resolved at a later time.\n * @param {DOMElement} element the element which will be removed from the DOM\n * @return {Promise} the animation callback promise\n */\n leave : function(element) {\n element.remove();\n return asyncPromise();\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#move\n * @kind function\n * @description Moves the position of the provided element within the DOM to be placed\n * either after the `after` element or inside of the `parent` element. When the function\n * is called a promise is returned that will be resolved at a later time.\n *\n * @param {DOMElement} element the element which will be moved around within the\n * DOM\n * @param {DOMElement} parent the parent element where the element will be\n * inserted into (if the after element is not present)\n * @param {DOMElement} after the sibling element where the element will be\n * positioned next to\n * @return {Promise} the animation callback promise\n */\n move : function(element, parent, after) {\n // Do not remove element before insert. Removing will cause data associated with the\n // element to be dropped. Insert will implicitly do the remove.\n return this.enter(element, parent, after);\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#addClass\n * @kind function\n * @description Adds the provided className CSS class value to the provided element.\n * When the function is called a promise is returned that will be resolved at a later time.\n * @param {DOMElement} element the element which will have the className value\n * added to it\n * @param {string} className the CSS class which will be added to the element\n * @return {Promise} the animation callback promise\n */\n addClass : function(element, className) {\n className = !isString(className)\n ? (isArray(className) ? className.join(' ') : '')\n : className;\n forEach(element, function (element) {\n jqLiteAddClass(element, className);\n });\n return asyncPromise();\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#removeClass\n * @kind function\n * @description Removes the provided className CSS class value from the provided element.\n * When the function is called a promise is returned that will be resolved at a later time.\n * @param {DOMElement} element the element which will have the className value\n * removed from it\n * @param {string} className the CSS class which will be removed from the element\n * @return {Promise} the animation callback promise\n */\n removeClass : function(element, className) {\n className = !isString(className)\n ? (isArray(className) ? className.join(' ') : '')\n : className;\n forEach(element, function (element) {\n jqLiteRemoveClass(element, className);\n });\n return asyncPromise();\n },\n\n /**\n *\n * @ngdoc method\n * @name $animate#setClass\n * @kind function\n * @description Adds and/or removes the given CSS classes to and from the element.\n * When the function is called a promise is returned that will be resolved at a later time.\n * @param {DOMElement} element the element which will have its CSS classes changed\n * removed from it\n * @param {string} add the CSS classes which will be added to the element\n * @param {string} remove the CSS class which will be removed from the element\n * @return {Promise} the animation callback promise\n */\n setClass : function(element, add, remove) {\n this.addClass(element, add);\n this.removeClass(element, remove);\n return asyncPromise();\n },\n\n enabled : noop,\n cancel : noop\n };\n }];\n}];\n\nfunction $$AsyncCallbackProvider(){\n this.$get = ['$$rAF', '$timeout', function($$rAF, $timeout) {\n return $$rAF.supported\n ? function(fn) { return $$rAF(fn); }\n : function(fn) {\n return $timeout(fn, 0, false);\n };\n }];\n}\n\n/**\n * ! This is a private undocumented service !\n *\n * @name $browser\n * @requires $log\n * @description\n * This object has two goals:\n *\n * - hide all the global state in the browser caused by the window object\n * - abstract away all the browser specific features and inconsistencies\n *\n * For tests we provide {@link ngMock.$browser mock implementation} of the `$browser`\n * service, which can be used for convenient testing of the application without the interaction with\n * the real browser apis.\n */\n/**\n * @param {object} window The global window object.\n * @param {object} document jQuery wrapped document.\n * @param {function()} XHR XMLHttpRequest constructor.\n * @param {object} $log console.log or an object with the same interface.\n * @param {object} $sniffer $sniffer service\n */\nfunction Browser(window, document, $log, $sniffer) {\n var self = this,\n rawDocument = document[0],\n location = window.location,\n history = window.history,\n setTimeout = window.setTimeout,\n clearTimeout = window.clearTimeout,\n pendingDeferIds = {};\n\n self.isMock = false;\n\n var outstandingRequestCount = 0;\n var outstandingRequestCallbacks = [];\n\n // TODO(vojta): remove this temporary api\n self.$$completeOutstandingRequest = completeOutstandingRequest;\n self.$$incOutstandingRequestCount = function() { outstandingRequestCount++; };\n\n /**\n * Executes the `fn` function(supports currying) and decrements the `outstandingRequestCallbacks`\n * counter. If the counter reaches 0, all the `outstandingRequestCallbacks` are executed.\n */\n function completeOutstandingRequest(fn) {\n try {\n fn.apply(null, sliceArgs(arguments, 1));\n } finally {\n outstandingRequestCount--;\n if (outstandingRequestCount === 0) {\n while(outstandingRequestCallbacks.length) {\n try {\n outstandingRequestCallbacks.pop()();\n } catch (e) {\n $log.error(e);\n }\n }\n }\n }\n }\n\n /**\n * @private\n * Note: this method is used only by scenario runner\n * TODO(vojta): prefix this method with $$ ?\n * @param {function()} callback Function that will be called when no outstanding request\n */\n self.notifyWhenNoOutstandingRequests = function(callback) {\n // force browser to execute all pollFns - this is needed so that cookies and other pollers fire\n // at some deterministic time in respect to the test runner's actions. Leaving things up to the\n // regular poller would result in flaky tests.\n forEach(pollFns, function(pollFn){ pollFn(); });\n\n if (outstandingRequestCount === 0) {\n callback();\n } else {\n outstandingRequestCallbacks.push(callback);\n }\n };\n\n //////////////////////////////////////////////////////////////\n // Poll Watcher API\n //////////////////////////////////////////////////////////////\n var pollFns = [],\n pollTimeout;\n\n /**\n * @name $browser#addPollFn\n *\n * @param {function()} fn Poll function to add\n *\n * @description\n * Adds a function to the list of functions that poller periodically executes,\n * and starts polling if not started yet.\n *\n * @returns {function()} the added function\n */\n self.addPollFn = function(fn) {\n if (isUndefined(pollTimeout)) startPoller(100, setTimeout);\n pollFns.push(fn);\n return fn;\n };\n\n /**\n * @param {number} interval How often should browser call poll functions (ms)\n * @param {function()} setTimeout Reference to a real or fake `setTimeout` function.\n *\n * @description\n * Configures the poller to run in the specified intervals, using the specified\n * setTimeout fn and kicks it off.\n */\n function startPoller(interval, setTimeout) {\n (function check() {\n forEach(pollFns, function(pollFn){ pollFn(); });\n pollTimeout = setTimeout(check, interval);\n })();\n }\n\n //////////////////////////////////////////////////////////////\n // URL API\n //////////////////////////////////////////////////////////////\n\n var lastBrowserUrl = location.href,\n baseElement = document.find('base'),\n newLocation = null;\n\n /**\n * @name $browser#url\n *\n * @description\n * GETTER:\n * Without any argument, this method just returns current value of location.href.\n *\n * SETTER:\n * With at least one argument, this method sets url to new value.\n * If html5 history api supported, pushState/replaceState is used, otherwise\n * location.href/location.replace is used.\n * Returns its own instance to allow chaining\n *\n * NOTE: this api is intended for use only by the $location service. Please use the\n * {@link ng.$location $location service} to change url.\n *\n * @param {string} url New url (when used as setter)\n * @param {boolean=} replace Should new url replace current history record ?\n */\n self.url = function(url, replace) {\n // Android Browser BFCache causes location, history reference to become stale.\n if (location !== window.location) location = window.location;\n if (history !== window.history) history = window.history;\n\n // setter\n if (url) {\n if (lastBrowserUrl == url) return;\n lastBrowserUrl = url;\n if ($sniffer.history) {\n if (replace) history.replaceState(null, '', url);\n else {\n history.pushState(null, '', url);\n // Crazy Opera Bug: http://my.opera.com/community/forums/topic.dml?id=1185462\n baseElement.attr('href', baseElement.attr('href'));\n }\n } else {\n newLocation = url;\n if (replace) {\n location.replace(url);\n } else {\n location.href = url;\n }\n }\n return self;\n // getter\n } else {\n // - newLocation is a workaround for an IE7-9 issue with location.replace and location.href\n // methods not updating location.href synchronously.\n // - the replacement is a workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=407172\n return newLocation || location.href.replace(/%27/g,\"'\");\n }\n };\n\n var urlChangeListeners = [],\n urlChangeInit = false;\n\n function fireUrlChange() {\n newLocation = null;\n if (lastBrowserUrl == self.url()) return;\n\n lastBrowserUrl = self.url();\n forEach(urlChangeListeners, function(listener) {\n listener(self.url());\n });\n }\n\n /**\n * @name $browser#onUrlChange\n *\n * @description\n * Register callback function that will be called, when url changes.\n *\n * It's only called when the url is changed from outside of angular:\n * - user types different url into address bar\n * - user clicks on history (forward/back) button\n * - user clicks on a link\n *\n * It's not called when url is changed by $browser.url() method\n *\n * The listener gets called with new url as parameter.\n *\n * NOTE: this api is intended for use only by the $location service. Please use the\n * {@link ng.$location $location service} to monitor url changes in angular apps.\n *\n * @param {function(string)} listener Listener function to be called when url changes.\n * @return {function(string)} Returns the registered listener fn - handy if the fn is anonymous.\n */\n self.onUrlChange = function(callback) {\n // TODO(vojta): refactor to use node's syntax for events\n if (!urlChangeInit) {\n // We listen on both (hashchange/popstate) when available, as some browsers (e.g. Opera)\n // don't fire popstate when user change the address bar and don't fire hashchange when url\n // changed by push/replaceState\n\n // html5 history api - popstate event\n if ($sniffer.history) jqLite(window).on('popstate', fireUrlChange);\n // hashchange event\n if ($sniffer.hashchange) jqLite(window).on('hashchange', fireUrlChange);\n // polling\n else self.addPollFn(fireUrlChange);\n\n urlChangeInit = true;\n }\n\n urlChangeListeners.push(callback);\n return callback;\n };\n\n /**\n * Checks whether the url has changed outside of Angular.\n * Needs to be exported to be able to check for changes that have been done in sync,\n * as hashchange/popstate events fire in async.\n */\n self.$$checkUrlChange = fireUrlChange;\n\n //////////////////////////////////////////////////////////////\n // Misc API\n //////////////////////////////////////////////////////////////\n\n /**\n * @name $browser#baseHref\n *\n * @description\n * Returns current \n * (always relative - without domain)\n *\n * @returns {string} The current base href\n */\n self.baseHref = function() {\n var href = baseElement.attr('href');\n return href ? href.replace(/^(https?\\:)?\\/\\/[^\\/]*/, '') : '';\n };\n\n //////////////////////////////////////////////////////////////\n // Cookies API\n //////////////////////////////////////////////////////////////\n var lastCookies = {};\n var lastCookieString = '';\n var cookiePath = self.baseHref();\n\n /**\n * @name $browser#cookies\n *\n * @param {string=} name Cookie name\n * @param {string=} value Cookie value\n *\n * @description\n * The cookies method provides a 'private' low level access to browser cookies.\n * It is not meant to be used directly, use the $cookie service instead.\n *\n * The return values vary depending on the arguments that the method was called with as follows:\n *\n * - cookies() -> hash of all cookies, this is NOT a copy of the internal state, so do not modify\n * it\n * - cookies(name, value) -> set name to value, if value is undefined delete the cookie\n * - cookies(name) -> the same as (name, undefined) == DELETES (no one calls it right now that\n * way)\n *\n * @returns {Object} Hash of all cookies (if called without any parameter)\n */\n self.cookies = function(name, value) {\n var cookieLength, cookieArray, cookie, i, index;\n\n if (name) {\n if (value === undefined) {\n rawDocument.cookie = encodeURIComponent(name) + \"=;path=\" + cookiePath +\n \";expires=Thu, 01 Jan 1970 00:00:00 GMT\";\n } else {\n if (isString(value)) {\n cookieLength = (rawDocument.cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value) +\n ';path=' + cookiePath).length + 1;\n\n // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:\n // - 300 cookies\n // - 20 cookies per unique domain\n // - 4096 bytes per cookie\n if (cookieLength > 4096) {\n $log.warn(\"Cookie '\"+ name +\n \"' possibly not set or overflowed because it was too large (\"+\n cookieLength + \" > 4096 bytes)!\");\n }\n }\n }\n } else {\n if (rawDocument.cookie !== lastCookieString) {\n lastCookieString = rawDocument.cookie;\n cookieArray = lastCookieString.split(\"; \");\n lastCookies = {};\n\n for (i = 0; i < cookieArray.length; i++) {\n cookie = cookieArray[i];\n index = cookie.indexOf('=');\n if (index > 0) { //ignore nameless cookies\n name = decodeURIComponent(cookie.substring(0, index));\n // the first value that is seen for a cookie is the most\n // specific one. values for the same cookie name that\n // follow are for less specific paths.\n if (lastCookies[name] === undefined) {\n lastCookies[name] = decodeURIComponent(cookie.substring(index + 1));\n }\n }\n }\n }\n return lastCookies;\n }\n };\n\n\n /**\n * @name $browser#defer\n * @param {function()} fn A function, who's execution should be deferred.\n * @param {number=} [delay=0] of milliseconds to defer the function execution.\n * @returns {*} DeferId that can be used to cancel the task via `$browser.defer.cancel()`.\n *\n * @description\n * Executes a fn asynchronously via `setTimeout(fn, delay)`.\n *\n * Unlike when calling `setTimeout` directly, in test this function is mocked and instead of using\n * `setTimeout` in tests, the fns are queued in an array, which can be programmatically flushed\n * via `$browser.defer.flush()`.\n *\n */\n self.defer = function(fn, delay) {\n var timeoutId;\n outstandingRequestCount++;\n timeoutId = setTimeout(function() {\n delete pendingDeferIds[timeoutId];\n completeOutstandingRequest(fn);\n }, delay || 0);\n pendingDeferIds[timeoutId] = true;\n return timeoutId;\n };\n\n\n /**\n * @name $browser#defer.cancel\n *\n * @description\n * Cancels a deferred task identified with `deferId`.\n *\n * @param {*} deferId Token returned by the `$browser.defer` function.\n * @returns {boolean} Returns `true` if the task hasn't executed yet and was successfully\n * canceled.\n */\n self.defer.cancel = function(deferId) {\n if (pendingDeferIds[deferId]) {\n delete pendingDeferIds[deferId];\n clearTimeout(deferId);\n completeOutstandingRequest(noop);\n return true;\n }\n return false;\n };\n\n}\n\nfunction $BrowserProvider(){\n this.$get = ['$window', '$log', '$sniffer', '$document',\n function( $window, $log, $sniffer, $document){\n return new Browser($window, $document, $log, $sniffer);\n }];\n}\n\n/**\n * @ngdoc service\n * @name $cacheFactory\n *\n * @description\n * Factory that constructs {@link $cacheFactory.Cache Cache} objects and gives access to\n * them.\n *\n * ```js\n *\n * var cache = $cacheFactory('cacheId');\n * expect($cacheFactory.get('cacheId')).toBe(cache);\n * expect($cacheFactory.get('noSuchCacheId')).not.toBeDefined();\n *\n * cache.put(\"key\", \"value\");\n * cache.put(\"another key\", \"another value\");\n *\n * // We've specified no options on creation\n * expect(cache.info()).toEqual({id: 'cacheId', size: 2});\n *\n * ```\n *\n *\n * @param {string} cacheId Name or id of the newly created cache.\n * @param {object=} options Options object that specifies the cache behavior. Properties:\n *\n * - `{number=}` `capacity` — turns the cache into LRU cache.\n *\n * @returns {object} Newly created cache object with the following set of methods:\n *\n * - `{object}` `info()` — Returns id, size, and options of cache.\n * - `{{*}}` `put({string} key, {*} value)` — Puts a new key-value pair into the cache and returns\n * it.\n * - `{{*}}` `get({string} key)` — Returns cached value for `key` or undefined for cache miss.\n * - `{void}` `remove({string} key)` — Removes a key-value pair from the cache.\n * - `{void}` `removeAll()` — Removes all cached values.\n * - `{void}` `destroy()` — Removes references to this cache from $cacheFactory.\n *\n * @example\n \n \n \n
\n
\n
Cache \n\n
Cached Values
\n
\n \n : \n \n
\n\n
Cache Info
\n
\n \n : \n \n
\n
\n \n \n angular.module('cacheExampleApp', []).\n controller('CacheController', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {\n $scope.keys = [];\n $scope.cache = $cacheFactory('cacheId');\n $scope.put = function(key, value) {\n if ($scope.cache.get(key) === undefined) {\n $scope.keys.push(key);\n }\n $scope.cache.put(key, value === undefined ? null : value);\n };\n }]);\n \n \n p {\n margin: 10px 0 3px;\n }\n \n \n */\nfunction $CacheFactoryProvider() {\n\n this.$get = function() {\n var caches = {};\n\n function cacheFactory(cacheId, options) {\n if (cacheId in caches) {\n throw minErr('$cacheFactory')('iid', \"CacheId '{0}' is already taken!\", cacheId);\n }\n\n var size = 0,\n stats = extend({}, options, {id: cacheId}),\n data = {},\n capacity = (options && options.capacity) || Number.MAX_VALUE,\n lruHash = {},\n freshEnd = null,\n staleEnd = null;\n\n /**\n * @ngdoc type\n * @name $cacheFactory.Cache\n *\n * @description\n * A cache object used to store and retrieve data, primarily used by\n * {@link $http $http} and the {@link ng.directive:script script} directive to cache\n * templates and other data.\n *\n * ```js\n * angular.module('superCache')\n * .factory('superCache', ['$cacheFactory', function($cacheFactory) {\n * return $cacheFactory('super-cache');\n * }]);\n * ```\n *\n * Example test:\n *\n * ```js\n * it('should behave like a cache', inject(function(superCache) {\n * superCache.put('key', 'value');\n * superCache.put('another key', 'another value');\n *\n * expect(superCache.info()).toEqual({\n * id: 'super-cache',\n * size: 2\n * });\n *\n * superCache.remove('another key');\n * expect(superCache.get('another key')).toBeUndefined();\n *\n * superCache.removeAll();\n * expect(superCache.info()).toEqual({\n * id: 'super-cache',\n * size: 0\n * });\n * }));\n * ```\n */\n return caches[cacheId] = {\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#put\n * @kind function\n *\n * @description\n * Inserts a named entry into the {@link $cacheFactory.Cache Cache} object to be\n * retrieved later, and incrementing the size of the cache if the key was not already\n * present in the cache. If behaving like an LRU cache, it will also remove stale\n * entries from the set.\n *\n * It will not insert undefined values into the cache.\n *\n * @param {string} key the key under which the cached data is stored.\n * @param {*} value the value to store alongside the key. If it is undefined, the key\n * will not be stored.\n * @returns {*} the value stored.\n */\n put: function(key, value) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key] || (lruHash[key] = {key: key});\n\n refresh(lruEntry);\n }\n\n if (isUndefined(value)) return;\n if (!(key in data)) size++;\n data[key] = value;\n\n if (size > capacity) {\n this.remove(staleEnd.key);\n }\n\n return value;\n },\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#get\n * @kind function\n *\n * @description\n * Retrieves named data stored in the {@link $cacheFactory.Cache Cache} object.\n *\n * @param {string} key the key of the data to be retrieved\n * @returns {*} the value stored.\n */\n get: function(key) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key];\n\n if (!lruEntry) return;\n\n refresh(lruEntry);\n }\n\n return data[key];\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#remove\n * @kind function\n *\n * @description\n * Removes an entry from the {@link $cacheFactory.Cache Cache} object.\n *\n * @param {string} key the key of the entry to be removed\n */\n remove: function(key) {\n if (capacity < Number.MAX_VALUE) {\n var lruEntry = lruHash[key];\n\n if (!lruEntry) return;\n\n if (lruEntry == freshEnd) freshEnd = lruEntry.p;\n if (lruEntry == staleEnd) staleEnd = lruEntry.n;\n link(lruEntry.n,lruEntry.p);\n\n delete lruHash[key];\n }\n\n delete data[key];\n size--;\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#removeAll\n * @kind function\n *\n * @description\n * Clears the cache object of any entries.\n */\n removeAll: function() {\n data = {};\n size = 0;\n lruHash = {};\n freshEnd = staleEnd = null;\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#destroy\n * @kind function\n *\n * @description\n * Destroys the {@link $cacheFactory.Cache Cache} object entirely,\n * removing it from the {@link $cacheFactory $cacheFactory} set.\n */\n destroy: function() {\n data = null;\n stats = null;\n lruHash = null;\n delete caches[cacheId];\n },\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory.Cache#info\n * @kind function\n *\n * @description\n * Retrieve information regarding a particular {@link $cacheFactory.Cache Cache}.\n *\n * @returns {object} an object with the following properties:\n * \n * **id**: the id of the cache instance \n * **size**: the number of entries kept in the cache instance \n * **...**: any additional properties from the options object when creating the\n * cache. \n * \n */\n info: function() {\n return extend({}, stats, {size: size});\n }\n };\n\n\n /**\n * makes the `entry` the freshEnd of the LRU linked list\n */\n function refresh(entry) {\n if (entry != freshEnd) {\n if (!staleEnd) {\n staleEnd = entry;\n } else if (staleEnd == entry) {\n staleEnd = entry.n;\n }\n\n link(entry.n, entry.p);\n link(entry, freshEnd);\n freshEnd = entry;\n freshEnd.n = null;\n }\n }\n\n\n /**\n * bidirectionally links two entries of the LRU linked list\n */\n function link(nextEntry, prevEntry) {\n if (nextEntry != prevEntry) {\n if (nextEntry) nextEntry.p = prevEntry; //p stands for previous, 'prev' didn't minify\n if (prevEntry) prevEntry.n = nextEntry; //n stands for next, 'next' didn't minify\n }\n }\n }\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory#info\n *\n * @description\n * Get information about all the caches that have been created\n *\n * @returns {Object} - key-value map of `cacheId` to the result of calling `cache#info`\n */\n cacheFactory.info = function() {\n var info = {};\n forEach(caches, function(cache, cacheId) {\n info[cacheId] = cache.info();\n });\n return info;\n };\n\n\n /**\n * @ngdoc method\n * @name $cacheFactory#get\n *\n * @description\n * Get access to a cache object by the `cacheId` used when it was created.\n *\n * @param {string} cacheId Name or id of a cache to access.\n * @returns {object} Cache object identified by the cacheId or undefined if no such cache.\n */\n cacheFactory.get = function(cacheId) {\n return caches[cacheId];\n };\n\n\n return cacheFactory;\n };\n}\n\n/**\n * @ngdoc service\n * @name $templateCache\n *\n * @description\n * The first time a template is used, it is loaded in the template cache for quick retrieval. You\n * can load templates directly into the cache in a `script` tag, or by consuming the\n * `$templateCache` service directly.\n *\n * Adding via the `script` tag:\n *\n * ```html\n * \n * ```\n *\n * **Note:** the `script` tag containing the template does not need to be included in the `head` of\n * the document, but it must be below the `ng-app` definition.\n *\n * Adding via the $templateCache service:\n *\n * ```js\n * var myApp = angular.module('myApp', []);\n * myApp.run(function($templateCache) {\n * $templateCache.put('templateId.html', 'This is the content of the template');\n * });\n * ```\n *\n * To retrieve the template later, simply use it in your HTML:\n * ```html\n *
\n * ```\n *\n * or get it via Javascript:\n * ```js\n * $templateCache.get('templateId.html')\n * ```\n *\n * See {@link ng.$cacheFactory $cacheFactory}.\n *\n */\nfunction $TemplateCacheProvider() {\n this.$get = ['$cacheFactory', function($cacheFactory) {\n return $cacheFactory('templates');\n }];\n}\n\n/* ! VARIABLE/FUNCTION NAMING CONVENTIONS THAT APPLY TO THIS FILE!\n *\n * DOM-related variables:\n *\n * - \"node\" - DOM Node\n * - \"element\" - DOM Element or Node\n * - \"$node\" or \"$element\" - jqLite-wrapped node or element\n *\n *\n * Compiler related stuff:\n *\n * - \"linkFn\" - linking fn of a single directive\n * - \"nodeLinkFn\" - function that aggregates all linking fns for a particular node\n * - \"childLinkFn\" - function that aggregates all linking fns for child nodes of a particular node\n * - \"compositeLinkFn\" - function that aggregates all linking fns for a compilation root (nodeList)\n */\n\n\n/**\n * @ngdoc service\n * @name $compile\n * @kind function\n *\n * @description\n * Compiles an HTML string or DOM into a template and produces a template function, which\n * can then be used to link {@link ng.$rootScope.Scope `scope`} and the template together.\n *\n * The compilation is a process of walking the DOM tree and matching DOM elements to\n * {@link ng.$compileProvider#directive directives}.\n *\n * \n * **Note:** This document is an in-depth reference of all directive options.\n * For a gentle introduction to directives with examples of common use cases,\n * see the {@link guide/directive directive guide}.\n *
\n *\n * ## Comprehensive Directive API\n *\n * There are many different options for a directive.\n *\n * The difference resides in the return value of the factory function.\n * You can either return a \"Directive Definition Object\" (see below) that defines the directive properties,\n * or just the `postLink` function (all other properties will have the default values).\n *\n * \n * **Best Practice:** It's recommended to use the \"directive definition object\" form.\n *
\n *\n * Here's an example directive declared with a Directive Definition Object:\n *\n * ```js\n * var myModule = angular.module(...);\n *\n * myModule.directive('directiveName', function factory(injectables) {\n * var directiveDefinitionObject = {\n * priority: 0,\n * template: '
', // or // function(tElement, tAttrs) { ... },\n * // or\n * // templateUrl: 'directive.html', // or // function(tElement, tAttrs) { ... },\n * transclude: false,\n * restrict: 'A',\n * scope: false,\n * controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... },\n * controllerAs: 'stringAlias',\n * require: 'siblingDirectiveName', // or // ['^parentDirectiveName', '?optionalDirectiveName', '?^optionalParent'],\n * compile: function compile(tElement, tAttrs, transclude) {\n * return {\n * pre: function preLink(scope, iElement, iAttrs, controller) { ... },\n * post: function postLink(scope, iElement, iAttrs, controller) { ... }\n * }\n * // or\n * // return function postLink( ... ) { ... }\n * },\n * // or\n * // link: {\n * // pre: function preLink(scope, iElement, iAttrs, controller) { ... },\n * // post: function postLink(scope, iElement, iAttrs, controller) { ... }\n * // }\n * // or\n * // link: function postLink( ... ) { ... }\n * };\n * return directiveDefinitionObject;\n * });\n * ```\n *\n * \n * **Note:** Any unspecified options will use the default value. You can see the default values below.\n *
\n *\n * Therefore the above can be simplified as:\n *\n * ```js\n * var myModule = angular.module(...);\n *\n * myModule.directive('directiveName', function factory(injectables) {\n * var directiveDefinitionObject = {\n * link: function postLink(scope, iElement, iAttrs) { ... }\n * };\n * return directiveDefinitionObject;\n * // or\n * // return function postLink(scope, iElement, iAttrs) { ... }\n * });\n * ```\n *\n *\n *\n * ### Directive Definition Object\n *\n * The directive definition object provides instructions to the {@link ng.$compile\n * compiler}. The attributes are:\n *\n * #### `multiElement`\n * When this property is set to true, the HTML compiler will collect DOM nodes between\n * nodes with the attributes `directive-name-start` and `directive-name-end`, and group them\n * together as the directive elements. It is recomended that this feature be used on directives\n * which are not strictly behavioural (such as {@link api/ng.directive:ngClick ngClick}), and which\n * do not manipulate or replace child nodes (such as {@link api/ng.directive:ngInclude ngInclude}).\n *\n * #### `priority`\n * When there are multiple directives defined on a single DOM element, sometimes it\n * is necessary to specify the order in which the directives are applied. The `priority` is used\n * to sort the directives before their `compile` functions get called. Priority is defined as a\n * number. Directives with greater numerical `priority` are compiled first. Pre-link functions\n * are also run in priority order, but post-link functions are run in reverse order. The order\n * of directives with the same priority is undefined. The default priority is `0`.\n *\n * #### `terminal`\n * If set to true then the current `priority` will be the last set of directives\n * which will execute (any directives at the current priority will still execute\n * as the order of execution on same `priority` is undefined).\n *\n * #### `scope`\n * **If set to `true`,** then a new scope will be created for this directive. If multiple directives on the\n * same element request a new scope, only one new scope is created. The new scope rule does not\n * apply for the root of the template since the root of the template always gets a new scope.\n *\n * **If set to `{}` (object hash),** then a new \"isolate\" scope is created. The 'isolate' scope differs from\n * normal scope in that it does not prototypically inherit from the parent scope. This is useful\n * when creating reusable components, which should not accidentally read or modify data in the\n * parent scope.\n *\n * The 'isolate' scope takes an object hash which defines a set of local scope properties\n * derived from the parent scope. These local properties are useful for aliasing values for\n * templates. Locals definition is a hash of local scope property to its source:\n *\n * * `@` or `@attr` - bind a local scope property to the value of DOM attribute. The result is\n * always a string since DOM attributes are strings. If no `attr` name is specified then the\n * attribute name is assumed to be the same as the local name.\n * Given `` and widget definition\n * of `scope: { localName:'@myAttr' }`, then widget scope property `localName` will reflect\n * the interpolated value of `hello {{name}}`. As the `name` attribute changes so will the\n * `localName` property on the widget scope. The `name` is read from the parent scope (not\n * component scope).\n *\n * * `=` or `=attr` - set up bi-directional binding between a local scope property and the\n * parent scope property of name defined via the value of the `attr` attribute. If no `attr`\n * name is specified then the attribute name is assumed to be the same as the local name.\n * Given `` and widget definition of\n * `scope: { localModel:'=myAttr' }`, then widget scope property `localModel` will reflect the\n * value of `parentModel` on the parent scope. Any changes to `parentModel` will be reflected\n * in `localModel` and any changes in `localModel` will reflect in `parentModel`. If the parent\n * scope property doesn't exist, it will throw a NON_ASSIGNABLE_MODEL_EXPRESSION exception. You\n * can avoid this behavior using `=?` or `=?attr` in order to flag the property as optional.\n *\n * * `&` or `&attr` - provides a way to execute an expression in the context of the parent scope.\n * If no `attr` name is specified then the attribute name is assumed to be the same as the\n * local name. Given `` and widget definition of\n * `scope: { localFn:'&myAttr' }`, then isolate scope property `localFn` will point to\n * a function wrapper for the `count = count + value` expression. Often it's desirable to\n * pass data from the isolated scope via an expression to the parent scope, this can be\n * done by passing a map of local variable names and values into the expression wrapper fn.\n * For example, if the expression is `increment(amount)` then we can specify the amount value\n * by calling the `localFn` as `localFn({amount: 22})`.\n *\n *\n * #### `bindToController`\n * When an isolate scope is used for a component (see above), and `controllerAs` is used, `bindToController` will\n * allow a component to have its properties bound to the controller, rather than to scope. When the controller\n * is instantiated, the initial values of the isolate scope bindings are already available.\n *\n * #### `controller`\n * Controller constructor function. The controller is instantiated before the\n * pre-linking phase and it is shared with other directives (see\n * `require` attribute). This allows the directives to communicate with each other and augment\n * each other's behavior. The controller is injectable (and supports bracket notation) with the following locals:\n *\n * * `$scope` - Current scope associated with the element\n * * `$element` - Current element\n * * `$attrs` - Current attributes object for the element\n * * `$transclude` - A transclude linking function pre-bound to the correct transclusion scope:\n * `function([scope], cloneLinkingFn, futureParentElement)`.\n * * `scope`: optional argument to override the scope.\n * * `cloneLinkingFn`: optional argument to create clones of the original transcluded content.\n * * `futureParentElement`:\n * * defines the parent to which the `cloneLinkingFn` will add the cloned elements.\n * * default: `$element.parent()` resp. `$element` for `transclude:'element'` resp. `transclude:true`.\n * * only needed for transcludes that are allowed to contain non html elements (e.g. SVG elements)\n * and when the `cloneLinkinFn` is passed,\n * as those elements need to created and cloned in a special way when they are defined outside their\n * usual containers (e.g. like ``).\n * * See also the `directive.templateNamespace` property.\n *\n *\n * #### `require`\n * Require another directive and inject its controller as the fourth argument to the linking function. The\n * `require` takes a string name (or array of strings) of the directive(s) to pass in. If an array is used, the\n * injected argument will be an array in corresponding order. If no such directive can be\n * found, or if the directive does not have a controller, then an error is raised. The name can be prefixed with:\n *\n * * (no prefix) - Locate the required controller on the current element. Throw an error if not found.\n * * `?` - Attempt to locate the required controller or pass `null` to the `link` fn if not found.\n * * `^` - Locate the required controller by searching the element and its parents. Throw an error if not found.\n * * `?^` - Attempt to locate the required controller by searching the element and its parents or pass\n * `null` to the `link` fn if not found.\n *\n *\n * #### `controllerAs`\n * Controller alias at the directive scope. An alias for the controller so it\n * can be referenced at the directive template. The directive needs to define a scope for this\n * configuration to be used. Useful in the case when directive is used as component.\n *\n *\n * #### `restrict`\n * String of subset of `EACM` which restricts the directive to a specific directive\n * declaration style. If omitted, the defaults (elements and attributes) are used.\n *\n * * `E` - Element name (default): ` `\n * * `A` - Attribute (default): `
`\n * * `C` - Class: `
`\n * * `M` - Comment: ``\n *\n *\n * #### `templateNamespace`\n * String representing the document type used by the markup in the template.\n * AngularJS needs this information as those elements need to be created and cloned\n * in a special way when they are defined outside their usual containers like `` and ``.\n *\n * * `html` - All root nodes in the template are HTML. Root nodes may also be\n * top-level elements such as `` or ``.\n * * `svg` - The root nodes in the template are SVG elements (excluding ``).\n * * `math` - The root nodes in the template are MathML elements (excluding `