{"version":3,"sources":["node_modules/browser-pack/_prelude.js","../controllers/analytics-controller.js","controllers/FreeContentToggleController.js","controllers/TypeaheadController.js","controllers/advanceSearchController.js","controllers/emailRssController.js","controllers/headlineSearchController.js","controllers/headlineToggleController.js","controllers/informaDatesController.js","controllers/informaFacetsController.js","controllers/informaFacetsDataController.js","controllers/informaResultsController.js","controllers/pageSizeController.js","controllers/savedSearchController.js","controllers/sortByDateController.js","factories/companiesFactory.js","factories/savedSearchFactory.js","informaSearchApp.js","search.js","ui-bootstrap-custom-tpls-1.2.4.min.js"],"names":[],"mappings":"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","file":"search.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i 0) {\r\n this.location.search(routerBuilder.getRoute());\r\n }\r\n else {\r\n if (angular.element(document.body).hasClass('theme-omdia')) {\r\n this.location.search(\"q=\" + this.searchService.getFilter('q') + \"&page=1&sortBy=relevance&sortOrder=desc\");\r\n } else {\r\n this.location.search(\"q=\" + this.searchService.getFilter('q') + \"&page=1&sortBy=date&sortOrder=desc\");\r\n }\r\n }\r\n } else {\r\n this.location.search(routerBuilder.getRoute());\r\n }\r\n this.searchService.query();\r\n };\r\n\r\n this.init = function () {\r\n var filter = this.searchService.getFilter('entitledcontentonly');\r\n return filter !== undefined;\r\n }\r\n\r\n};\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"FreeContentToggleController\", ['$location', 'searchService', 'searchBootstrapper', '$timeout', FreeContentToggleController]);\r\n","/* global angular */\r\n\r\n// set up controller and pass data source\r\n// note: a controller is usually destroyed & recreated when the route changes\r\nvar InformaTypeaheadController = function($scope, getCompaniesService) {\r\n\r\n $scope.$watch('pageId', function() {\r\n getCompaniesService.fetchCompanies($scope.pageId).then(function(response) {\r\n\r\n var companies = [];\r\n companies = $.map(response.data, function(value, index) {\r\n return value.companyName;\r\n });\r\n\r\n $scope.companies = companies;\r\n\r\n }).catch(function(reason) {\r\n console.log(\"error\");\r\n console.log(reason);\r\n });\r\n });\r\n};\r\n\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"InformaTypeaheadController\", ['$scope', 'getCompaniesService', InformaTypeaheadController]);","import { analyticsEvent } from '../../controllers/analytics-controller';\r\nvar AdvanceSearchController = function ($rootScope, $location, searchService, searchBootstrapper) {\r\n \"use strict\";\r\n var vm = this;\r\n vm.searchService = searchService;\r\n vm.searchBootstrapper = searchBootstrapper;\r\n vm.location = $location;\r\n vm.headlinesOnly = null;\r\n vm.entitledContentOnly = null;\r\n vm.exactMatchOnly = null;\r\n vm.searchParams = vm.location.search();\r\n vm.routerBuilder = vm.searchService.getRouteBuilder();\r\n vm.searchInput = document.getElementById(\"js-search-field\");\r\n\r\n if(vm.searchParams) {\r\n _.forIn(vm.searchParams, function(value, key) {\r\n switch (key) {\r\n case 'headlinesOnly':\r\n vm.headlinesOnly = true;\r\n break;\r\n case 'entitledcontentonly':\r\n vm.entitledContentOnly = true;\r\n break;\r\n case 'exactmatchonly':\r\n vm.exactMatchOnly = true;\r\n break;\r\n default:\r\n return true;\r\n }\r\n });\r\n }\r\n\r\n vm.update = function () {\r\n var newParams = vm.location.search(),\r\n filterQuery = vm.searchService.getFilter('q')._value,\r\n newSearchInput = document.getElementById(\"js-search-field\").value;\r\n \r\n if(vm.headlinesOnly) {\r\n vm.searchBootstrapper.createFilter('headlinesOnly', '1');\r\n } else {\r\n vm.searchBootstrapper.createFilter('headlinesOnly', '');\r\n }\r\n if(vm.entitledContentOnly){\r\n vm.searchBootstrapper.createFilter('entitledcontentonly', '1');\r\n } else {\r\n vm.searchBootstrapper.createFilter('entitledcontentonly', '');\r\n }\r\n if(vm.exactMatchOnly){\r\n if(filterQuery && filterQuery[0] !== '\"' && filterQuery[filterQuery.length - 1] !== '\"') {\r\n vm.searchBootstrapper.createFilter('q', '\"' + newParams.q + '\"');\r\n vm.searchInput.value = '\"' + newParams.q + '\"';\r\n }\r\n vm.searchBootstrapper.createFilter('exactmatchonly', '1');\r\n } else {\r\n if(filterQuery && filterQuery[0] === '\"' && filterQuery[filterQuery.length - 1] === '\"') {\r\n vm.searchBootstrapper.createFilter('q', newParams.q.replace(/['\"]+/g, ''));\r\n vm.searchInput.value = newParams.q.replace(/['\"]+/g, '');\r\n }\r\n vm.searchBootstrapper.createFilter('exactmatchonly', '');\r\n }\r\n if(newSearchInput && newSearchInput !== newParams.q) {\r\n if(vm.exactMatchOnly && newSearchInput[0] !== '\"' && newSearchInput[newSearchInput.length - 1] !== '\"') {\r\n vm.searchBootstrapper.createFilter('q', '\"' + newSearchInput + '\"');\r\n vm.searchInput.value = '\"' + newSearchInput + '\"';\r\n vm.searchBootstrapper.createFilter('exactmatchonly', '1');\r\n vm.exactMatchOnly = true;\r\n } else if(!vm.exactMatchOnly && newSearchInput[0] === '\"' && newSearchInput[newSearchInput.length - 1] === '\"') {\r\n vm.searchBootstrapper.createFilter('q', newSearchInput.replace(/['\"]+/g, ''));\r\n vm.searchInput.value = newSearchInput.replace(/['\"]+/g, '');\r\n vm.searchBootstrapper.createFilter('exactmatchonly', '');\r\n } else {\r\n vm.searchBootstrapper.createFilter('q', newSearchInput);\r\n vm.searchInput.value = newSearchInput;\r\n vm.searchBootstrapper.createFilter('exactmatchonly', '');\r\n vm.exactMatchOnly = false;\r\n }\r\n }\r\n \r\n vm.searchBootstrapper.createFilter('contenttype', newParams.contenttype);\r\n var routerBuilder = vm.searchService.getRouteBuilder();\r\n vm.location.search(routerBuilder.getRoute());\r\n vm.searchService.query();\r\n }; \r\n\r\n};\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"AdvanceSearchController\", ['$rootScope', '$location', 'searchService', 'searchBootstrapper', AdvanceSearchController]);\r\n","/* global angular */\r\n\r\nvar EmailRssController = function ($scope, $location) {\r\n \"use strict\";\r\n\r\n\r\n $scope.$watch(function () {\r\n return $location.search();\r\n }, function (params) {\r\n var params1 = $location.search();\r\n \r\n var nUrl = \"\";\r\n for (var idxkey in params1) {\r\n if (idxkey === \"sortBy\") {\r\n nUrl = nUrl + \"&\" + \"sortBy=date\";\r\n }\r\n\r\n if (idxkey === \"sortOrder\") {\r\n nUrl = nUrl + \"&\" + \"sortOrder=desc\";\r\n }\r\n\r\n if (idxkey !== \"sortBy\" && idxkey !== \"sortOrder\") {\r\n\t\t\t\tvar searchKey = params1[idxkey].replace(/&/g, \"%26\");\r\n nUrl = nUrl + \"&\" + idxkey + \"=\" + searchKey;\r\n }\r\n }\r\n\t\t\t\t// strip leading &\r\n if (nUrl.charAt(0) === '&') {\r\n\t nUrl = nUrl.substr(1);\r\n }\r\n $scope.currentLocation = \"?\" + nUrl;\r\n });\r\n\r\n $scope.testvar = 'hello';\r\n\r\n};\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"EmailRssController\", ['$scope', '$location', EmailRssController]);\r\n","/* global analytics_data */\r\nimport { analyticsEvent } from '../../controllers/analytics-controller';\r\n\r\nvar HeadlineSearchController = function ($location, searchService, searchBootstrapper,$timeout) {\r\n \"use strict\";\r\n\r\n this.searchService = searchService;\r\n this.searchBootstrapper = searchBootstrapper;\r\n this.location = $location;\r\n \r\n this.update = function () {\r\n //Create HeadlinesOnly Filter if not exist\r\n var filter = this.searchService.getFilter('headlinesOnly');\r\n if (!filter) {\r\n this.searchBootstrapper.createFilter('headlinesOnly', '1');\r\n } else {\r\n if (filter._value === '1') {\r\n filter.setValue('');\r\n } else {\r\n filter.setValue('1');\r\n //Analytics event tracking\r\n analyticsEvent($.extend(analytics_data, {\r\n event_name: 'search_utility',\r\n search_utility: 'search_headlines_only'\r\n }));\r\n }\r\n }\r\n\r\n this.searchService._isNewSearch = true;\r\n this.searchService.getFilter('page').setValue(\"1\");\r\n\r\n var routerBuilder = this.searchService.getRouteBuilder();\r\n var searchResults = this.searchService.getResults();\r\n if (searchResults.length > 0) {\r\n this.location.search(routerBuilder.getRoute());\r\n }\r\n else {\r\n if (angular.element(document.body).hasClass('theme-omdia')) {\r\n this.location.search(\"q=\" + this.searchService.getFilter('q') + \"&page=1&sortBy=relevance&sortOrder=desc\");\r\n } else {\r\n this.location.search(\"q=\" + this.searchService.getFilter('q') + \"&page=1&sortBy=date&sortOrder=desc\");\r\n }\r\n }\r\n this.searchService.query();\r\n };\r\n\r\n this.init = function () {\r\n var filter = this.searchService.getFilter('headlinesOnly');\r\n return filter !== undefined;\r\n }\r\n};\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"HeadlineSearchController\", ['$location', 'searchService', 'searchBootstrapper', '$timeout', HeadlineSearchController]);\r\n","var HeadlineToggleController = function ($scope, viewHeadlinesStateService) {\r\n \"use strict\";\r\n\r\n $scope.headlinesOnly = viewHeadlinesStateService;\r\n\r\n};\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"HeadlineToggleController\", ['$scope', 'viewHeadlinesStateService', HeadlineToggleController]);\r\n","var informaDatesController = function ($scope, $location) {\r\n 'use strict';\r\n\r\n /*\r\n $scope.dateValues and $scope.datepickers are in InformaFacetsController.js\r\n Using ng-if creates a new scope for the data in this controller, which\r\n causes the date values to reset on change. By storing in the parent,\r\n those values survive any scope resets here.\r\n */\r\n \r\n // grab today and inject into field\r\n $scope.today = function() {\r\n $scope.dateValues.dtFrom = new Date();\r\n $scope.dateValues.dtTo = new Date();\r\n };\r\n\r\n // run today() function\r\n // $scope.today();\r\n\r\n // setup clear\r\n $scope.clear = function () {\r\n $scope.dateValues.dtFrom = '';\r\n $scope.dateValues.dtTo = '';\r\n };\r\n\r\n $scope.fromDateOptions = {\r\n showWeeks: false,\r\n formatDayHeader: 'EEE',\r\n formatDay: 'd',\r\n startingDay: 0, // Sunday\r\n dateDisabled: disabledFrom,\r\n formatYear: 'yy',\r\n maxDate: new Date(),\r\n minDate: new Date(1900, 1, 1)\r\n };\r\n\r\n $scope.toDateOptions = {\r\n showWeeks: false,\r\n formatDayHeader: 'EEE',\r\n formatDay: 'd',\r\n startingDay: 0, // Sunday\r\n dateDisabled: disabledTo,\r\n formatYear: 'yy',\r\n maxDate: new Date(),\r\n minDate: new Date(1900, 1, 1)\r\n };\r\n\r\n // Prevent user from selecting date if date is in the future, OR if the date\r\n // is later than the selected 'to' date. 'from' can't be later than 'to'\r\n function disabledFrom(data) {\r\n var date = data.date;\r\n var tomorrow = new Date();\r\n tomorrow.setDate(tomorrow.getDate() + 1);\r\n\r\n // If no end-time exists, use a very large number so all timestamps are valid\r\n var toTimestamp = $scope.dateValues.dtTo ? $scope.dateValues.dtTo.getTime() : Math.pow(99, 9);\r\n return (date.getTime() > tomorrow.getTime()\r\n || date.getTime() > toTimestamp);\r\n };\r\n\r\n // Prevent user from selecting date if date is in the future, OR if date\r\n // is before selected 'from' date. 'to' must be later than 'from'\r\n function disabledTo(data) {\r\n var date = data.date;\r\n var tomorrow = new Date();\r\n tomorrow.setDate(tomorrow.getDate() + 1);\r\n\r\n // If no start-time exists, use a very large number so all timestamps are valid\r\n var fromTimestamp = $scope.dateValues.dtFrom ? $scope.dateValues.dtFrom.getTime() : 0;\r\n return (date.getTime() > tomorrow.getTime()\r\n || date.getTime() < fromTimestamp);\r\n };\r\n\r\n // open min-cal\r\n $scope.open = function($event, which) {\r\n $event.preventDefault();\r\n $event.stopPropagation();\r\n\r\n // Datepicker popups will close when clicked outside, but it's possible to\r\n // open both at the same time. This prevents that.\r\n switch (which) {\r\n case 'dtFrom':\r\n $scope.datepickers.dtFrom = true;\r\n $scope.datepickers.dtTo = false;\r\n break;\r\n case 'dtTo':\r\n $scope.datepickers.dtFrom = false;\r\n $scope.datepickers.dtTo = true;\r\n break;\r\n default:\r\n $scope.datepickers.dtFrom = false;\r\n $scope.datepickers.dtTo = false;\r\n break;\r\n }\r\n };\r\n\r\n};\r\n\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"InformaDatesController\", [\"$scope\", \"$location\", informaDatesController]);\r\n","/* global _, datesObject, angular, analytics_data */\r\nimport { analyticsEvent } from '../../controllers/analytics-controller';\r\nvar InformaFacetController = function ($scope, $rootScope, $location, $http, $anchorScroll, $timeout, searchService, searchBootstrapper, facetAvailabilityService) {\r\n \"use strict\";\r\n // Bind `this` to vm - a representation of the view model\r\n var vm = this;\r\n // General Facet stuff\r\n vm.facetGroups = searchService.getFacetGroups();\r\n vm.searchService = searchService;\r\n vm.location = $location;\r\n vm.anchorScroll = $anchorScroll;\r\n vm.searchBootstrapper = searchBootstrapper;\r\n vm.MaxFacetShow = 5;\r\n vm.SecondLevelMaxFacetShow = 3;\r\n vm.showingOnlySubscriptions = false;\r\n vm.subscriber_cookie;\r\n vm.subscriptions;\r\n vm.enableMySusbriptions = false;\r\n vm.keywordSearch = false;\r\n vm.companies = { \"companies\": \"\", \"isCompanySelected\": false };\r\n vm.defaultState = true;\r\n vm.themeOmdia = angular.element(document.body).hasClass('theme-omdia');\r\n vm.themeChemistAndDruggist = angular.element(document.body).hasClass('theme-chemistanddruggist');\r\n vm.clearAllVisible = false;\r\n vm.facetWithShowMore = [];\r\n vm.subFacetWithShowMore = [];\r\n vm.allSubFacetSelected = false;\r\n vm.ParentFacetId = '';\r\n vm.selectedFilters = [];\r\n vm.defaultExpandedRefinements = jQuery('#defaultExpandedRefinements').val();\r\n \r\n\t$rootScope.$watch('facetAvailability', function () {\r\n vm.areFacetsDisabled = facetAvailabilityService.facetsAreEnabled();\r\n });\r\n\r\n vm.searchType = '';\r\n $scope.$watch(function () {\r\n return vm.searchService.getSearchType();\r\n }, function () {\r\n vm.searchType = vm.searchService.getSearchType();\r\n if (vm.searchType==\"product\") {\r\n vm.defaultExpandedRefinements = jQuery('#defaultExpandedRefinementsProduct').val();\r\n }\r\n });\r\n\r\n vm.facetgroupState = {};\r\n // Date Facet stuff\r\n vm.DateFilters = [\r\n { label: 'All', key: 'all', selected: true },\r\n { label: 'Last 24 hours', key: 'day', selected: false },\r\n { label: 'Last 3 days', key: 'threedays', selected: false },\r\n { label: 'Last week', key: 'week', selected: false },\r\n { label: 'Last month', key: 'month', selected: false },\r\n { label: 'Last year', key: 'year', selected: false },\r\n { label: 'Select date range', key: 'custom', selected: false }\r\n ];\r\n\r\n vm.originalGroup = [];\r\n var dToday = function () {\r\n return new Date().clearTime();\r\n };\r\n\r\n var jsDates = {\r\n minus1Year: function () {\r\n var jsDateToday = new Date();\r\n return new Date(jsDateToday.setFullYear(jsDateToday.getFullYear() - 1));\r\n },\r\n minus1Month: function () {\r\n var jsDateToday = new Date();\r\n var m = jsDateToday.getMonth();\r\n jsDateToday.setMonth(jsDateToday.getMonth() - 1);\r\n\r\n // If still in same month, set date to last day of previous month\r\n if (jsDateToday.getMonth() == m) {\r\n jsDateToday.setDate(0);\r\n }\r\n return new Date(jsDateToday.setHours(0, 0, 0));\r\n },\r\n minusXdays: function (days) {\r\n var jsDateToday = new Date();\r\n return new Date(jsDateToday.setDate(jsDateToday.getDate() - days));\r\n }\r\n };\r\n\r\n var formatDateObject = function (d) {\r\n return (d.getMonth() + 1) + '/' + d.getDate() + '/' + d.getFullYear();\r\n };\r\n\r\n vm.datesObject = {\r\n year: formatDateObject(jsDates.minus1Year()),\r\n day: formatDateObject(jsDates.minusXdays(1)),\r\n threedays: formatDateObject(jsDates.minusXdays(3)),\r\n month: formatDateObject(jsDates.minus1Month()),\r\n week: formatDateObject(jsDates.minusXdays(7))\r\n };\r\n\r\n vm.timesObject = {\r\n year: { id: \"year\", value: \"1\" },\r\n day: { id: \"hour\", value: \"24\" },\r\n threedays: { id: \"day\", value: \"3\" },\r\n month: { id: \"month\", value: \"1\" },\r\n week: { id: \"week\", value: \"1\" }\r\n };\r\n\r\n // Create placeholder values for From: and To: date values\r\n $scope.dateValues = {\r\n dtFrom: '',\r\n dtTo: ''\r\n };\r\n\r\n // need to differentiate the 2 datepickers\r\n $scope.datepickers = {\r\n dtFrom: false,\r\n dtTo: false\r\n };\r\n\r\n // On first run, check all date filters against date filter set in URL\r\n for (var i = 0; i < vm.DateFilters.length; i++) {\r\n if ($location.search().dateFilterLabel == vm.DateFilters[i].key) {\r\n // Mark date filter as selected to match URL\r\n vm.DateFilters[i].selected = true;\r\n // If date filter is a date range filter...\r\n if (vm.DateFilters[i].key === 'custom') {\r\n // ...convert the date data in the URL to `Date`s...\r\n // example: date=3/29/2015;4/5/2016\r\n var splitDates = $location.search().date.split(';');\r\n // ...and update the model so the UI shows the right data.\r\n $scope.dateValues.dtFrom = new Date(splitDates[0]);\r\n $scope.dateValues.dtTo = new Date(splitDates[1]);\r\n }\r\n }\r\n }\r\n\r\n $scope.$watch(\r\n function () {\r\n return searchService.getPager();\r\n }, function () {\r\n vm.facetGroups = searchService.getFacetGroups();\r\n if(vm.themeOmdia) {\r\n _.each(vm.facetGroups, function(facetList) {\r\n if(vm.facetWithShowMore.includes(facetList.id)) {\r\n facetList.ShowMore = true;\r\n }\r\n });\r\n\r\n vm.facetWithShowMore = []; \r\n _.each(vm.facetGroups.facets, function(facetList) {\r\n if(vm.SubFacetWithShowMore.includes(facetList.id)) {\r\n facetList.ShowMore = true;\r\n }\r\n });\r\n\r\n vm.SubFacetWithShowMore = [];\r\n if (vm.allSubFacetSelected) {\r\n vm.facetChange(vm.ParentFacetId);\r\n } \r\n vm.clearAllSetFlag();\r\n }\r\n\r\n vm.originalGroup = vm.searchService.getFacetGroups();\r\n if (searchService.getNewSearch()) {\r\n vm.facetGroups = vm.originalGroup;\r\n //vm.clearAllFacets();\r\n searchService._isNewSearch = false;\r\n }\r\n }, true);\r\n\r\n $scope.$watch(function () {\r\n return vm.location.url();\r\n }, function () {\r\n var url = vm.location.url().substr(0, vm.location.url().indexOf('#searchTop')),\r\n urlStr = url.length > 0 ? '#' + url : ''; \r\n try {\r\n ga('send', 'pageview', '/search'+ urlStr);\r\n console.log(\"ga('send', 'pageview', '/search\"+ urlStr + \"')\");\r\n } catch (error) {\r\n console.warn(\"ga undefined event not tracked\", \"ga('send', 'pageview', '/search\"+ urlStr + \"')\");\r\n }\r\n }, true);\r\n\r\n vm.createCookie = function (name, value, days) {\r\n var expires;\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expires = \"; expires=\" + date.toGMTString();\r\n } else {\r\n expires = \"\";\r\n }\r\n document.cookie = name + \"=\" + JSON.stringify(value) + expires + \"; path=/\";\r\n };\r\n\r\n vm.readCookie = function (name) {\r\n var nameEQ = name + \"=\";\r\n var ca = document.cookie.split(';');\r\n for (var i = 0; i < ca.length; i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1, c.length);\r\n }\r\n if (c.indexOf(nameEQ) === 0) {\r\n return c.substring(nameEQ.length, c.length);\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n vm.updateCookie = function (facetParentId = null) {\r\n if (vm.subscriptions.length > 0) {\r\n var subscriptionId = 'publication', issubscriptionChannel = false;;\r\n _.each(vm.subscriptions, function (channel) {\r\n var splitName = channel.split(\"-\");\r\n if (splitName.length > 1) {\r\n subscriptionId = splitName[0];\r\n }\r\n if (facetParentId == subscriptionId.replace(\" \", \"\").replace(\"'\", \"\").toLowerCase()) {\r\n issubscriptionChannel = true;\r\n }\r\n });\r\n\r\n if (issubscriptionChannel) {\r\n var cookie_facets = [];\r\n _.each(vm.facetGroups, function (group) {\r\n _.each(group.getSelectedFacets(), function (facet) {\r\n if (facet && facet.selected) {\r\n if (facet.parentId == \"publication\" && cookie_facets.indexOf(facet.label) === -1) {\r\n cookie_facets.push(facet.label.toLowerCase());\r\n } else if (facet.parentId != \"publication\" && cookie_facets.indexOf(facet.parentId + '-' + facet.label) === -1) {\r\n var isSubscriber = false;\r\n _.each(vm.subscriptions, function (channel) {\r\n var splitName = channel.split(\"-\");\r\n if (splitName.length > 1) {\r\n subscriptionId = splitName[0];\r\n }\r\n if (facet.parentId == subscriptionId.replace(\" \", \"\").replace(\"'\", \"\").toLowerCase()) {\r\n isSubscriber = true;\r\n }\r\n });\r\n if (isSubscriber)\r\n cookie_facets.push(facet.parentId + '-' + facet.label);\r\n }\r\n }\r\n });\r\n });\r\n\r\n if (cookie_facets.length > 0 && vm.enableMySusbriptions && vm.keywordSearch) {\r\n vm.createCookie(vm.subscriber_cookie, cookie_facets, 3650);\r\n }\r\n }\r\n }\r\n };\r\n \r\n jQuery(window).on('load', function () {\r\n var subscriberList = vm.subscriptions;\r\n // if(subscriberList) subscriberList = JSON.parse(subscriberList);\r\n var userName = jQuery('#userName').val();\r\n vm.enableMySusbriptions = (jQuery('#enableMySusbriptions').val() == \"true\") ? true : false;\r\n var queryStrings = window.location.href.split('?')[1];\r\n if (!queryStrings) return;\r\n var queryString = queryStrings.split('&');\r\n var searchQuery = queryString[0].split('=');\r\n if (searchQuery[0] == \"q\") {\r\n vm.keywordSearch = true;\r\n }\r\n if (userName) {\r\n var cookieNameId = userName.split(\"@\");\r\n if (cookieNameId[0]) {\r\n vm.subscriber_cookie = \"subscriptions\" + window.btoa(cookieNameId[0]);\r\n vm.subscriber_cookie = vm.subscriber_cookie.replace(/=/g, '');\r\n if (vm.enableMySusbriptions && vm.keywordSearch) {\r\n vm.showingOnlySubscriptions = true;\r\n if (vm.readCookie(vm.subscriber_cookie)) {\r\n var cookie = JSON.parse(vm.readCookie(vm.subscriber_cookie));\r\n if (cookie.length == 0)\r\n vm.showingOnlySubscriptions = false;\r\n else\r\n vm.facetChangeMultiple('publication', cookie);\r\n }\r\n else if (subscriberList && subscriberList.length > 0)\r\n vm.facetChangeMultiple('publication', subscriberList);\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (vm.themeOmdia) {\r\n $scope.$watch(function() {\r\n return searchService.getFacetGroups();\r\n }, function () {\r\n vm.rebuildSelectedFilters();\r\n vm.setSearchPlaceholder();\r\n }, true);\r\n }\r\n\r\n vm.setSearchPlaceholder = function() {\r\n if (vm.selectedFilters.length > 0) {\r\n if(vm.selectedFilters.length === 1 && vm.selectedFilters[0].name) {\r\n $rootScope.searchPlaceholder = 'Search within \"' + vm.selectedFilters[0].name + '\"';\r\n } else {\r\n $rootScope.searchPlaceholder = 'Search within selected filters';\r\n }\r\n } else {\r\n $rootScope.searchPlaceholder = 'Search all content';\r\n }\r\n }\r\n\r\n vm.rebuildSelectedFilters = function() {\r\n vm.selectedFilters = [];\r\n vm.addFacetsToSelecterFilters();\r\n } \r\n\r\n vm.addFacetsToSelecterFilters = function () {\r\n var searchParams = vm.location.search(),\r\n selectedFilter,\r\n facetGroup,\r\n values\r\n\r\n _.forIn(searchParams, function(value, key) {\r\n selectedFilter = {};\r\n selectedFilter.query = key;\r\n\r\n // skip if param not facet or taxonomy\r\n switch(key) {\r\n case 'q':\r\n case 'page':\r\n case 'perPage':\r\n case 'searchtype':\r\n case 'showFreecontent':\r\n case 'sortBy':\r\n case 'sortOrder':\r\n case 'time':\r\n case 'date':\r\n return true; \r\n case 'headlinesOnly':\r\n case 'entitledcontentonly':\r\n case 'exactmatchonly':\r\n selectedFilter.name = $(\"label.search-bar__headline-label[for='\"+ key +\"']\").html(); \r\n case 'dateFilterLabel':\r\n switch (value) {\r\n case 'hour':\r\n case 'day':\r\n case 'week':\r\n case 'month':\r\n case 'year':\r\n var time = parseInt(searchParams.time);\r\n selectedFilter.name = 'Last ' + time + ' ' + value + (time > 1 ? 's' : '');\r\n break;\r\n case 'custom':\r\n var customDateArray = searchParams.date.split(';'),\r\n startStr = new Date(decodeURIComponent(customDateArray[0])).toLocaleDateString('en-GB'),\r\n endStr = new Date(decodeURIComponent(customDateArray[1])).toLocaleDateString('en-GB');\r\n selectedFilter.name = startStr == endStr ? startStr : (startStr + ' - ' + endStr);\r\n }\r\n break;\r\n default:\r\n // facet or custom query\r\n facetGroup = vm.searchService.getFacetGroup(key); \r\n // is facet\r\n if (facetGroup) {\r\n values = value.split(';');\r\n // when there are 2 or more facets\r\n if (values.length > 1) {\r\n // the name should be the FacetGroup name\r\n selectedFilter.name = facetGroup.label;\r\n // the count property should be defined\r\n selectedFilter.count = values.length;\r\n } else {\r\n // if there's only one value then assume facet\r\n selectedFilter.name = value;\r\n }\r\n } else {\r\n // not a facet group, so assume taxonomy / custom query\r\n selectedFilter.name = value;\r\n }\r\n }\r\n vm.selectedFilters.push(selectedFilter);\r\n });\r\n }\r\n\r\n vm.removeParamFromSearch = function(param) {\r\n if (param === 'dateFilterLabel') {\r\n delete vm.location.search()['date'];\r\n delete vm.location.search()['time'];\r\n }\r\n if (param === 'exactmatchonly') {\r\n vm.location.search().q = vm.location.search().q.replace(/['\"]+/g, '');\r\n }\r\n delete vm.location.search()[param];\r\n }\r\n\r\n vm.updateFilters = function() {\r\n var newSearchObj = vm.location.search(),\r\n searchStr = Object.keys(newSearchObj).map(function(key) {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(newSearchObj[key])\r\n }).join('&');\r\n\r\n window.INFORMA.Spinner.Show(jQuery('body'));\r\n\r\n if (searchStr.length === 0) {\r\n searchStr = \"#?page=1&sortBy=relevance&sortOrder=desc#searchTop\";\r\n } else {\r\n searchStr = '#?' + searchStr + '#searchTop';\r\n }\r\n \r\n // clean fix: need to update facets\r\n window.location.assign(window.location.origin + window.location.pathname + searchStr);\r\n window.location.reload();\r\n }\r\n\r\n vm.clearSelectedFilter = function(filter) {\r\n vm.removeParamFromSearch(filter.query);\r\n vm.updateFilters();\r\n }\r\n\r\n vm.clearAllSelectedFilters = function() {\r\n _.each(vm.selectedFilters, function(selectedFilter) {\r\n vm.removeParamFromSearch(selectedFilter.query);\r\n });\r\n vm.updateFilters();\r\n }\r\n\r\n //** This collects the user's saved companies **//\r\n vm.savedCompanies = {};\r\n vm.saveCompany = function ($item, model, label) {\r\n vm.savedCompanies[$item] = {\r\n selected: true,\r\n label: $item\r\n };\r\n };\r\n\r\n $scope.removeCompany = function ($item, model, label) {\r\n delete $scope.savedCompanies[$item.label];\r\n };\r\n\r\n\tvar facetsForAnalytics = false;\r\n //** This updates the router/url with the latest search parameters **//\r\n vm.update = function (facetGroupId) {\r\n if(facetGroupId) {\r\n var facetGroup;\r\n facetsForAnalytics = false;\r\n\r\n _.each(vm.facetGroups, function(group) {\r\n if(group.id === facetGroupId) {\r\n facetGroup = group;\r\n }\r\n });\r\n\r\n _.each(facetGroup.getSelectedFacets(), function (facet) {\r\n if(facet) {\r\n if(!facetsForAnalytics) {\r\n facetsForAnalytics = facet.label;\r\n } else {\r\n facetsForAnalytics += '|' + facet.label;\r\n }\r\n }\r\n });\r\n \r\n var event_data = {\r\n event_name: 'search_facets',\r\n search_facet_category: facetGroup.label\r\n };\r\n\r\n if(facetsForAnalytics) {\r\n event_data.search_facet = facetGroup.label + \": \" + facetsForAnalytics;\r\n }\r\n\r\n analyticsEvent(\t$.extend(analytics_data, event_data) );\r\n } \r\n\t\t\r\n // Disable all facet options while updating search results\r\n facetAvailabilityService.disableFacets();\r\n vm.updateFacetToggleState();\r\n vm.allRegionsFacetsSelected();\r\n\r\n var params = this.searchService.getRouteBuilder().getRoute().split('&');\r\n if (this.searchService.getRouteBuilder().getRoute().indexOf(\"companies\") >= 0) {\r\n for (var idx_param in params) {\r\n if (params[idx_param].indexOf(\"companies\") >= 0) {\r\n var compValue = params[idx_param].split('=')[1];\r\n vm.companies[\"isCompanySelected\"] = true;\r\n vm.companies[\"companies\"] = compValue;\r\n }\r\n }\r\n } else {\r\n vm.companies[\"isCompanySelected\"] = false;\r\n vm.companies[\"companies\"] = \"\";\r\n }\r\n\r\n // reapplies facet selected status to resolve issue raised in ISW-5988\r\n // TODO: to investigate actual cause of default func not working as expected\r\n _.each(this.facetGroups, function(group) {\r\n _.each(group.facets, function(facet) {\r\n _.each(facet.sublist, function(subfacet) {\r\n vm.searchService.getFacet(subfacet.id).selected = subfacet.selected;\r\n });\r\n });\r\n });\r\n\r\n vm.searchService.getFilter('page').setValue('1');\r\n var routeBuilder = this.searchService.getRouteBuilder();\r\n vm.location.search(routeBuilder.getRoute());\r\n vm.searchService.query();\r\n //Scroll to the top of the results when a new page is chosen\r\n vm.location.hash(\"searchTop\");\r\n vm.anchorScroll();\r\n vm.defaultState = false;\r\n vm.clearAllSetFlag();\r\n };\r\n\r\n vm.updateTime = function (filter) {\r\n if (filter === 'custom') return;\r\n vm.searchService.getFilter('page').setValue('1');\r\n var routeBuilder = this.searchService.getRouteBuilder();\r\n if (filter == \"all\") {\r\n vm.clearDateRange();\r\n }\r\n var hash = {};\r\n var urlQuery = \"&\";\r\n var h = decodeURIComponent(routeBuilder.getRoute()).split(\"&\");\r\n for (var idx in h) {\r\n if (h[idx] != \"\") {\r\n var currentParameter = h[idx].split(\"=\");\r\n if (currentParameter[0] == \"dateFilterLabel\") {\r\n hash[currentParameter[0]] = vm.timesObject[filter].id;\r\n urlQuery = urlQuery + \"&\" + currentParameter[0] + \"=\" + vm.timesObject[filter].id;\r\n } else {\r\n if (currentParameter[0] != \"date\") {\r\n hash[currentParameter[0]] = currentParameter[1];\r\n urlQuery = urlQuery + \"&\" + currentParameter[0] + \"=\" + currentParameter[1];\r\n }\r\n }\r\n }\r\n }\r\n //Ignore date filter (querystrings) if All option is selected.\r\n if (filter != \"all\") {\r\n hash[\"time\"] = vm.timesObject[filter].value;\r\n urlQuery = urlQuery + \"&time=\" + vm.timesObject[filter].value;\r\n }\r\n\r\n if (vm.companies[\"isCompanySelected\"]) {\r\n hash[\"companies\"] = vm.companies[\"companies\"];\r\n }\r\n\r\n if (\"companies\" in hash) {\r\n vm.isCompanySelected = true;\r\n hash[\"companies\"] = hash[\"companies\"].replace(/%20/g, \" \").replace(/%3B/g, ';');\r\n vm.companies[\"companies\"] = hash[\"companies\"].replace(/%20/g, \" \").replace(/%3B/g, ';');\r\n }\r\n vm.location.search(urlQuery);\r\n vm.searchService.queryTimePeriod(hash);\r\n //Scroll to the top of the results when a new page is chosen\r\n vm.location.hash(\"searchTop\");\r\n vm.anchorScroll();\r\n vm.defaultState = false;\r\n vm.clearAllSetFlag();\r\n };\r\n\r\n vm.facetChange = function (facet) {\r\n vm.defaultState = false;\r\n vm.searchService.getFacetGroup(facet.parentId).getFacet(facet.id).selected = facet.selected;\r\n vm.selectAllFacet(facet, facet.parentId);\r\n vm.update(facet.parentId);\r\n if(vm.keywordSearch && vm.enableMySusbriptions)\r\n vm.updateCookie(facet.parentId);\r\n vm.clearAllSetFlag();\r\n };\r\n\r\n vm.clearFacetsInGroup = function (facetGroupId) {\r\n vm.defaultState = false;\r\n _.each(vm.searchService.getFacetGroup(facetGroupId).facets, function (facet) {\r\n facet.selected = false;\r\n vm.selectAllFacet(facet, facetGroupId);\r\n });\r\n vm.update(facetGroupId);\r\n if (vm.keywordSearch && vm.enableMySusbriptions)\r\n vm.updateCookie(facetGroupId);\r\n vm.clearAllSetFlag();\r\n };\r\n\r\n\t/* \r\n * facetGroupId: 'publication' \r\n * facetIds: ['In Vivo', 'Rose Sheet'] \r\n */\r\n vm.facetChangeMultiple = function(facetGroupId, facetIds) {\r\n var facets,\r\n subfacets = [];\r\n if (facetIds.length > 0) {\r\n _.each(vm.facetGroups, function (group) {\r\n if (group.id === facetGroupId) {\r\n facets = group;\r\n }\r\n });\r\n\r\n _.each(facets.getSelectedFacets(), function (facet) {\r\n if (facet) {\r\n facet.selected = false;\r\n }\r\n });\r\n\r\n _.each(facetIds, function (id) {\r\n var pubFacets = facets.facets;\r\n var splitName = id.split(\"-\");\r\n if (splitName.length > 1) {\r\n id = splitName[0];\r\n }\r\n _.each(pubFacets, function (pubFac) {\r\n var facetId = pubFac.id.replace(\" \", \"\").replace(\"'\", \"\").toLowerCase();\r\n if(facetId === id.replace(\" \", \"\").replace(\"'\", \"\").toLowerCase()) {\r\n pubFac.selected = true;\r\n }\r\n })\r\n });\r\n\r\n _.each(facetIds, function (id) {\r\n var splitName = id.split(\"-\");\r\n if (splitName.length > 1) {\r\n var parentId = splitName[0].replace(\" \", \"\");\r\n var myId = splitName[1].replace(\"and\", \"&\");\r\n _.each(vm.facetGroups, function (group) {\r\n if (group.id == parentId) {\r\n subfacets = group.facets;\r\n }\r\n });\r\n\r\n _.each(subfacets, function (subfac) {\r\n if (subfac.id.toLowerCase() == myId.toLowerCase()) {\r\n subfac.selected = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n if(vm.enableMySusbriptions && vm.keywordSearch)\r\n vm.createCookie(vm.subscriber_cookie,facetIds,3650);\r\n\r\n vm.update();\r\n vm.clearAllSetFlag();\r\n } else {\r\n vm.clearAllFacets();\r\n }\r\n };\r\n\r\n /* \r\n * TODO: this comes from a diff search app, and needs jquery to work.\r\n * either hook up jq to this controller or move this elsewhere \r\n */\r\n vm.scrollTop = function () {\r\n // var location = jq(\".search-facets__header\").offset().top;\r\n //window.scrollTo(0, location - 80);\r\n };\r\n\r\n vm.hasSelected = function (values) {\r\n return _.find(values, { selected: true }) ? true : false;\r\n };\r\n\r\n vm.getFilter = function (filterKey) {\r\n var filter = vm.searchService.getFilter(filterKey);\r\n if (!filter) {\r\n vm.searchBootstrapper.createFilter(filterKey, \"\");\r\n filter = vm.searchService.getFilter(filterKey);\r\n }\r\n return filter;\r\n };\r\n\r\n /* This deselects any selected facet checkboxes, clears all facet parameters\r\n from the search query, and runs the clearDateRange function */\r\n vm.clearAllFacets = function () {\r\n var facetClear = this;\r\n var facetGroups = facetClear.facetGroups;\r\n _.each(facetGroups, function (group) {\r\n // var facets = vm.searchService.getFacetGroup(group.id).getSelectedFacets();\r\n var facets = group.facets;\r\n _.each(facets, function (facet) {\r\n facet.selected = false;\r\n _.each(facet.sublist, function (subFacetitem) {\r\n subFacetitem.selected = false;\r\n });\r\n });\r\n });\r\n vm.clearDateRange();\r\n vm.update();\r\n if(vm.keywordSearch && vm.enableMySusbriptions)\r\n vm.createCookie(vm.subscriber_cookie, [], 3650);\r\n\r\n vm.clearAllVisible = false;\r\n };\r\n /**\r\n * Function to set state of clearallVisible flag\r\n */\r\n vm.clearAllSetFlag = function(){\r\n if(!vm.themeOmdia){\r\n return;\r\n }\r\n var facetClear = this;\r\n var isAnyfacetSelected = false;\r\n\r\n var facetGroups = facetClear.facetGroups;\r\n _.each(facetGroups, function (group) {\r\n var facets = group.facets;\r\n _.each(facets, function (facet) {\r\n if (facet.selected) {\r\n isAnyfacetSelected = true;\r\n return;\r\n } else {\r\n var facetSublist = facet.sublist;\r\n _.each(facetSublist, function (childFacet) {\r\n if (childFacet.selected) {\r\n isAnyfacetSelected = true;\r\n return;\r\n }\r\n });\r\n }\r\n });\r\n });\r\n vm.clearAllVisible = isAnyfacetSelected;\r\n };\r\n\r\n /* *\r\n * Check if search returned any record.\r\n * */\r\n vm.hasResults = function () {\r\n var hasRecordsToDisplay = false;\r\n var facetClear = this;\r\n\r\n var facetGroups = facetClear.facetGroups;\r\n _.each(facetGroups, function (group) {\r\n var facets = group.facets;\r\n _.each(facets, function (facet) {\r\n if (facet.count > 0) {\r\n hasRecordsToDisplay = true;\r\n return;\r\n }\r\n });\r\n });\r\n return hasRecordsToDisplay;\r\n };\r\n\r\n vm.clearFilter = function (filterKey) {\r\n var filter = vm.getFilter(filterKey);\r\n filter.setValue(\"\");\r\n };\r\n\r\n /* This clears the date parameters from the search, deselcts any date radio\r\n buttons, and clears both custom date input fields **/\r\n vm.clearDateRange = function () {\r\n var filter = vm.getFilter('date');\r\n filter.setValue(\"\");\r\n filter.selected = false;\r\n var filterDateLabel = vm.getFilter('dateFilterLabel');\r\n filterDateLabel.setValue(\"\");\r\n var dates = vm.DateFilters;\r\n _.each(dates, function (date) {\r\n if (date.key == \"all\")\r\n date.selected = true;\r\n else\r\n date.selected = false;\r\n });\r\n $scope.dateValues.dtFrom = \"\";\r\n $scope.dateValues.dtTo = \"\";\r\n };\r\n\r\n vm.getDateFilterLabel = function () {\r\n var filterDateLabel = vm.getFilter('dateFilterLabel');\r\n return filterDateLabel._value;\r\n };\r\n\r\n vm.searchForCompany = function (selectedCompany) {\r\n /* \r\n * This is not correct right now, should be using facet groups instead will fix later \r\n */\r\n var facets = vm.searchService.getFacetGroup('companies').getSelectedFacets();\r\n\r\n var filter = vm.getFilter('companies');\r\n\r\n var companyFilter = selectedCompany;\r\n var sep = ';';\r\n\r\n for (var i = 0; i < facets.length; i++) {\r\n companyFilter += sep + facets[i].id;\r\n }\r\n\r\n filter.setValue(companyFilter);\r\n\r\n vm.update();\r\n };\r\n\r\n\r\n vm.validateFormat = function (date, type) {\r\n if(date == undefined)\r\n alert(\"The '\"+type+\"' date value isn't properly formatted\");\r\n };\r\n\r\n\r\n vm.customDateRangeSearch = function (filterKey, startDate, endDate, sourceControl) {\r\n\r\n var filter = vm.getFilter(filterKey);\r\n var filterDateLabel = vm.getFilter('dateFilterLabel');\r\n filterDateLabel.setValue('custom');\r\n\r\n if(startDate > new Date()){\r\n alert(\"From date can not be greater than today\");// you can't select date bigger than today\");\r\n $scope.dateValues.dtFrom = \"\";\r\n }\r\n\r\n if(endDate > new Date()){\r\n alert(\"To date can not be greater than today\");//\r\n $scope.dateValues.dtTo = \"\";\r\n }\r\n\r\n if (startDate > 0 && endDate > 0 && startDate <= endDate) {\r\n var date1Unparsed = new Date(startDate);\r\n var date1 = (date1Unparsed.getMonth() + 1) + '/' + date1Unparsed.getDate() + '/' + date1Unparsed.getFullYear();\r\n\r\n var date2Unparsed = new Date(endDate);\r\n var date2 = (date2Unparsed.getMonth() + 1) + '/' + date2Unparsed.getDate() + '/' + date2Unparsed.getFullYear();\r\n\r\n filter.setValue(date1 + \";\" + date2);\r\n\r\n vm.update();\r\n } else if (startDate > 0 && vm.themeChemistAndDruggist && startDate <= new Date() && endDate == \"\") {\r\n var date1Unparsed = new Date(startDate);\r\n var date1 = (date1Unparsed.getMonth() + 1) + '/' + date1Unparsed.getDate() + '/' + date1Unparsed.getFullYear();\r\n\r\n var date2Unparsed = new Date(endDate);\r\n var date3Unparsed = new Date();\r\n\r\n var date3 = (date3Unparsed.getMonth() + 1) + '/' + date3Unparsed.getDate() + '/' + date3Unparsed.getFullYear();\r\n var date2;\r\n\r\n if (date2Unparsed instanceof Date && !isNaN(date2Unparsed.valueOf())) {\r\n date2 = (date2Unparsed.getMonth() + 1) + '/' + date2Unparsed.getDate() + '/' + date2Unparsed.getFullYear();\r\n } else {\r\n date2 = date3;\r\n }\r\n\r\n filter.setValue(date1 + \";\" + date2);\r\n\r\n vm.update();\r\n } else {\r\n if( (startDate!=\"\" && startDate != undefined) && (endDate!=\"\" && endDate!=undefined) ){\r\n if(startDate > endDate){\r\n alert(\"From date can not be greater than To date\");// You cant put 'from' date bigger than 'to' date\");\r\n if(sourceControl == 'from') {\r\n $scope.dateValues.dtFrom = \"\";\r\n } else {\r\n $scope.dateValues.dtTo = \"\";\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n $scope.options = {\r\n showWeeks: false\r\n };\r\n\r\n //** This builds date parameters for the search query **//\r\n vm.dateRangeSearch = function (filterKey, dateFilter) {\r\n var filter = vm.getFilter(filterKey);\r\n var filterDateLabel = vm.getFilter('dateFilterLabel');\r\n\r\n var startDate = vm.datesObject[dateFilter];\r\n var endDate = formatDateObject(new Date());\r\n\r\n $scope.dateValues.dtFrom = \"\";\r\n $scope.dateValues.dtTo = \"\";\r\n\r\n filterDateLabel.setValue(dateFilter);\r\n filter.setValue(startDate + \";\" + endDate);\r\n\r\n vm.updateSelectedDate(dateFilter);\r\n vm.updateTime(dateFilter);\r\n //vm.update();\r\n };\r\n\r\n vm.updateSelectedDate = function (dateFilter) {\r\n\r\n for (var i = 0; i < vm.DateFilters.length; i++) {\r\n if (dateFilter == vm.DateFilters[i].key) {\r\n\r\n vm.DateFilters[i].selected = true;\r\n\r\n } else {\r\n\r\n vm.DateFilters[i].selected = false;\r\n\r\n }\r\n }\r\n };\r\n\r\n vm.allRegionsFacetsSelected = function() {\r\n var facetList = this,\r\n facetGroups = facetList.facetGroups;\r\n\r\n if (vm.themeOmdia) {\r\n // loop all facets\r\n _.each(facetGroups, function(group) {\r\n var facets = group.facets;\r\n _.each(facets, function(facet) {\r\n\r\n // if facet group is regions or service area\r\n if (facet.parentId === 'regions' || facet.parentId === 'servicearea') {\r\n\r\n if (facet.sublist && facet.sublist.length === 0 && facet.selected) {\r\n return;\r\n }\r\n\r\n // vm.allSubFacetSelected = true, if any of the sublist items selected\r\n var allRegionsFacetsSelected = facet.sublist && facet.sublist.length > 0 ? \r\n facet.sublist.every(function(itm){ return itm.selected; }) : false;\r\n vm.allSubFacetSelected = allRegionsFacetsSelected;\r\n\r\n // then select parent facet of sublist\r\n if (allRegionsFacetsSelected) {\r\n facet.selected = true;\r\n vm.ParentFacetId = facet.parentId;\r\n } else {\r\n facet.selected = false;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n vm.selectAllFacet = function(facet, facetId) {\r\n var facetList = this,\r\n facetGroups = facetList.facetGroups;\r\n\r\n if(vm.themeOmdia && facet && (facetId === 'regions' || facetId === 'servicearea') && facet.sublist.length) {\r\n var regionsfacetIndex = facetGroups.findIndex(function (element) {\r\n return element.id === facetId;\r\n });\r\n var selectedFacetIndex = facetGroups[regionsfacetIndex].facets.findIndex(function (element) {\r\n return element.id === facet.id;\r\n });\r\n _.each(facetGroups[regionsfacetIndex].facets[selectedFacetIndex].sublist, function(sublist) {\r\n sublist.selected = facet.selected;\r\n });\r\n }\r\n };\r\n\r\n vm.getFacetGroupState = function (group) {\r\n // Code to Expand refinements based on CMS configuration. (first time only)\r\n if (vm.defaultExpandedRefinements && vm.defaultExpandedRefinements !== \"\") {\r\n vm.defaultExpandedRefinements.split(',').forEach(function(element) {\r\n vm.facetgroupState[element] = false;\r\n });\r\n // set to null for \"first time only\"\r\n vm.defaultExpandedRefinements = null;\r\n }\r\n if (!vm.defaultState && jQuery('#persistUserState').val() == \"false\" ) { return false; }\r\n \r\n // set the new property to true if defaults has values (defaults are already set to false)\r\n if (vm.facetgroupState[group.id] === undefined) {\r\n vm.facetgroupState[group.id] = jQuery('#defaultExpandedRefinements').val() != \"\";\r\n }\r\n\r\n // set facetgroupState for group where one facet/subfacet is selected\r\n // this expands the UI for the respective facet group \r\n _.each(vm.searchService.getFacetGroup(group.id).facets, function(facet) {\r\n if (facet.selected) {\r\n // console.log('facet', facet.id);\r\n vm.facetgroupState[group.id] = false;\r\n return true;\r\n }\r\n _.each(facet.sublist, function(subFacet) {\r\n if (subFacet.selected) {\r\n // console.log('subFacet', subFacet.id);\r\n vm.facetgroupState[group.id] = false;\r\n return true;\r\n }\r\n });\r\n });\r\n\r\n return vm.facetgroupState[group.id];\r\n };\r\n\r\n vm.isPartialSelectedfacetGroup = function (group) {\r\n if (!vm.themeOmdia)\r\n return false;\r\n if (group && (group.parentId === 'regions' || group.parentId === 'servicearea') && group.sublist.length) {\r\n var facets = group.sublist;\r\n var selectedCount = 0;\r\n var unSelectedCount = 0;\r\n _.each(facets, function (facet) {\r\n if (facet.selected) {\r\n selectedCount++;\r\n } else {\r\n unSelectedCount++;\r\n }\r\n });\r\n return unSelectedCount > 0 && selectedCount > 0;\r\n }\r\n return false;\r\n };\r\n\r\n vm.updateFacetToggleState = function () {\r\n var facetShowMore = this;\r\n var facetGroups = facetShowMore.facetGroups;\r\n _.each(facetGroups, function (group) {\r\n if(group.ShowMore) {\r\n vm.facetWithShowMore.push(group.id)\r\n }\r\n var facets = group.facets;\r\n _.each(facets, function (facet) {\r\n if(group.ShowMore) {\r\n vm.subFacetWithShowMore.push(facet.id)\r\n }\r\n });\r\n });\r\n };\r\n};\r\n\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"InformaFacetController\", ['$scope', '$rootScope', '$location', '$http', '$anchorScroll', '$timeout', 'searchService', 'searchBootstrapper', 'facetAvailabilityService', InformaFacetController]);","/* global _, datesObject, angular, analytics_data */\r\nimport { analyticsEvent } from '../../controllers/analytics-controller';\r\n\r\nvar InformaFacetDataController = function ($scope, $rootScope, $location, $http, $anchorScroll, $timeout, searchService, searchBootstrapper, facetAvailabilityService) {\r\n \"use strict\";\r\n // Bind `this` to vm - a representation of the view model\r\n var vm = this;\r\n\r\n // General Facet stuff\r\n vm.facetGroups = searchService.getFacetGroups();\r\n vm.searchService = searchService;\r\n vm.location = $location;\r\n vm.anchorScroll = $anchorScroll;\r\n vm.searchBootstrapper = searchBootstrapper;\r\n vm.MaxFacetShow = 5;\r\n vm.showingOnlySubscriptions = false;\r\n vm.subscriber_cookie;\r\n vm.subscriptions;\r\n vm.enableMySusbriptions = false;\r\n vm.keywordSearch=false;\r\n\t$rootScope.$watch('facetAvailability', function () {\r\n vm.areFacetsDisabled = facetAvailabilityService.facetsAreEnabled();\r\n });\r\n\r\n vm.originalGroup = [];\r\n\r\n $scope.$watch(function () {\r\n return searchService.getPager();\r\n }, function () {\r\n vm.facetGroups = searchService.getFacetGroups();\r\n vm.originalGroup = vm.searchService.getFacetGroups();\r\n var elementValue = document.getElementById(\"hidIncludeSearch\").value;\r\n var contentType = document.getElementById(\"hidContentType\").value;\r\n var requiredFacets = elementValue.split(',');\r\n\r\n vm.facetGroups = _.filter(vm.facetGroups, function (fg) {\r\n fg.facets.forEach(function (f) {\r\n\r\n var subListSelected = false;\r\n if (f.sublist != null) {\r\n f.sublist.forEach(function (w) {\r\n if (w.selected) {\r\n subListSelected = true;\r\n }\r\n });\r\n }\r\n if (!subListSelected) {\r\n f.isCollapsedSubfacet = true;\r\n }\r\n\r\n if (f.parentId == \"contenttype\" && f.id == contentType) {\r\n f.selected = true;\r\n }\r\n });\r\n return elementValue.includes(fg.id);\r\n });\r\n\r\n var tempData = [];\r\n for (var facetIdx = 0; facetIdx < vm.facetGroups.length; facetIdx++) {\r\n tempData.push(vm.facetGroups[facetIdx]);\r\n }\r\n vm.facetGroups.splice(0, vm.facetGroups.length);\r\n if (tempData.length > 0) {\r\n for (var facetIdx = 0; facetIdx < requiredFacets.length; facetIdx++) {\r\n for (var labelCount = 0; labelCount < requiredFacets.length; labelCount++) {\r\n if (tempData[labelCount] && tempData[labelCount].id == requiredFacets[facetIdx]) {\r\n vm.facetGroups.splice(facetIdx, 0, tempData[labelCount]);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (vm.facetGroups.length > 0) {\r\n $(\".button-container\").show();\r\n if (jQuery.holdReady)\r\n jQuery.holdReady(false);\r\n } else {\r\n $(\".button-container\").hide();\r\n if (jQuery.holdReady)\r\n jQuery.holdReady(true);\r\n }\r\n if (searchService.getNewSearch()) {\r\n vm.facetGroups = vm.originalGroup;\r\n searchService._isNewSearch = false;\r\n }\r\n }, true);\r\n\r\n jQuery(document).ready(function () { \r\n vm.keywordSearch = false;\r\n });\r\n\r\n vm.updateCookie = function (facetParentId=null) {\r\n if (vm.subscriptions.length > 0) {\r\n var subscriptionId = 'publication', issubscriptionChannel = false;;\r\n _.each(vm.subscriptions, function (channel) {\r\n var splitName = channel.split(\"-\");\r\n if (splitName.length > 1) {\r\n subscriptionId = splitName[0];\r\n }\r\n if (facetParentId == subscriptionId.replace(\" \", \"\").replace(\"'\", \"\").toLowerCase()) {\r\n issubscriptionChannel = true;\r\n }\r\n });\r\n\r\n if (issubscriptionChannel) {\r\n var cookie_facets = [];\r\n _.each(vm.facetGroups, function (group) {\r\n _.each(group.getSelectedFacets(), function (facet) {\r\n if (facet && facet.selected) {\r\n if (facet.parentId == \"publication\" && cookie_facets.indexOf(facet.label) === -1) {\r\n cookie_facets.push(facet.label.toLowerCase());\r\n } else if (facet.parentId != \"publication\" && cookie_facets.indexOf(facet.parentId + '-' + facet.label) === -1) {\r\n var isSubscriber=false;\r\n _.each(vm.subscriptions, function (channel) {\r\n var splitName = channel.split(\"-\");\r\n if (splitName.length > 1) {\r\n subscriptionId = splitName[0];\r\n }\r\n if (facet.parentId == subscriptionId.replace(\" \", \"\").replace(\"'\", \"\").toLowerCase()) {\r\n isSubscriber = true;\r\n }\r\n });\r\n if(isSubscriber)\r\n cookie_facets.push(facet.parentId + '-' + facet.label);\r\n }\r\n }\r\n });\r\n });\r\n\r\n if (cookie_facets.length > 0 && vm.enableMySusbriptions && vm.keywordSearch) {\r\n vm.createCookie(vm.subscriber_cookie, cookie_facets, 3650);\r\n }\r\n }\r\n }\r\n };\r\n\r\n\tvar facetsForAnalytics = false;\r\n //** This updates the router/url with the latest search parameters **//\r\n vm.update = function (facetGroupId, parentfacet, subfacetId) {\r\n\t\tif(facetGroupId) {\r\n\t\t\tvar facetGroup;\r\n facetsForAnalytics = false;\r\n\t\t\t_.each(vm.facetGroups, function(group) {\r\n\t\t\t\tif(group.id === facetGroupId) {\r\n\t\t\t\t\tfacetGroup = group;\r\n\t\t\t\t}\r\n });\r\n\r\n _.each(facetGroup.getSelectedFacets(), function (facet) {\r\n facet.sublist.forEach(function (sf) {\r\n sf.selected = false;\r\n })\r\n });\r\n\r\n\t\t\t_.each(facetGroup.getSelectedFacets(), function (facet) {\r\n\t\t\t\tif(facet) {\r\n\t\t\t\t\tif(!facetsForAnalytics) {\r\n\t\t\t\t\t\tfacetsForAnalytics = facet.label;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tfacetsForAnalytics += '|' + facet.label;\r\n } \r\n\t\t\t\t}\r\n });\r\n \r\n\t\t\tvar event_data = {\r\n\t\t\t\tevent_name: 'search_facets',\r\n\t\t\t\tsearch_facet_category: facetGroup.label\r\n\t\t\t};\r\n\r\n\t\t\tif(facetsForAnalytics) {\r\n\t\t\t\tevent_data.search_facet = facetGroup.label + \": \" + facetsForAnalytics;\r\n\t\t\t}\r\n\r\n\t\t\tanalyticsEvent(\t$.extend(analytics_data, event_data) );\r\n\r\n\t\t}\r\n\t\t// Disable all facet options while updating search results\r\n\t\tfacetAvailabilityService.disableFacets();\r\n\r\n if (parentfacet != null && subfacetId != null) {\r\n\r\n //deselect sublist items and load only one selected sublist item\r\n vm.searchService.getFacetGroup(parentfacet.parentId).facets.forEach(function (vf) {\r\n vf.selected = false;\r\n if (vf.id != parentfacet.id) {\r\n vf.sublist.forEach(function (v) {\r\n v.selected = false;\r\n });\r\n } else {\r\n vf.sublist.forEach(function (v) {\r\n if (v.id != subfacetId) {\r\n v.selected = false;\r\n }\r\n });\r\n }\r\n });\r\n\r\n vm.facetGroups.forEach(function (fg) {\r\n if (fg.id == parentfacet.parentId) {\r\n fg.facets.forEach(function (pf) {\r\n if (pf.id == parentfacet.id) {\r\n pf.sublist.forEach(function (sf) {\r\n if (sf.id == subfacetId) {\r\n sf.selected = !sf.selected;\r\n }\r\n })\r\n }\r\n })\r\n }\r\n });\r\n }\r\n\r\n var params = this.searchService.getRouteBuilder().getRoute().split('&');\r\n \r\n vm.searchService.getFilter('page').setValue('1');\r\n var routeBuilder = this.searchService.getRouteBuilder();\r\n vm.location.search(routeBuilder.getRoute());\r\n vm.searchService.query();\r\n //Scroll to the top of the results when a new page is chosen\r\n //vm.location.hash(\"searchTop\");\r\n //vm.anchorScroll();\r\n };\r\n\r\n\r\n vm.updateTime = function (filter) {\r\n vm.searchService.getFilter('page').setValue('1');\r\n var routeBuilder = this.searchService.getRouteBuilder();\r\n var hash = {};\r\n var urlQuery = \"&\";\r\n var h = decodeURIComponent(routeBuilder.getRoute()).split(\"&\");\r\n for (var idx in h) {\r\n if (h[idx] != \"\") {\r\n var currentParameter = h[idx].split(\"=\");\r\n\r\n if (currentParameter[0] != \"date\") {\r\n hash[currentParameter[0]] = currentParameter[1];\r\n urlQuery = urlQuery + \"&\" + currentParameter[0] + \"=\" + currentParameter[1];\r\n }\r\n }\r\n }\r\n\r\n vm.location.search(urlQuery);\r\n\r\n vm.location.hash(\"searchTop\");\r\n vm.anchorScroll();\r\n };\r\n\r\n vm.facetChange = function (facet) {\r\n vm.searchService.getFacetGroup(facet.parentId).getFacet(facet.id).selected = facet.selected;\r\n vm.update(facet.parentId);\r\n if(vm.keywordSearch && vm.enableMySusbriptions)\r\n vm.updateCookie(facet.parentId); \r\n };\r\n\r\n vm.facetClick = function (facet) {\r\n vm.searchService.getFacetGroup(facet.parentId).facets.forEach(function (v) {\r\n if (v.id != facet.id) {\r\n v.selected = false;\r\n if (v.sublist != null) {\r\n v.sublist.forEach(function (w) {\r\n w.selected = false;\r\n });\r\n }\r\n }\r\n });\r\n vm.searchService.getFacetGroup(facet.parentId).getFacet(facet.id).selected = !facet.selected; \r\n vm.update(facet.parentId);\r\n if (vm.keywordSearch && vm.enableMySusbriptions) vm.updateCookie(facet.parentId);\r\n };\r\n\r\n\t// facetGroupId: 'publication'\r\n\t// facetIds: ['In Vivo', 'Rose Sheet']\r\n vm.facetChangeMultiple = function(facetGroupId, facetIds) {\r\n\r\n var facets,\r\n subfacets = [];\r\n if (facetIds.length > 0) {\r\n\r\n _.each(vm.facetGroups, function (group) {\r\n if (group.id === facetGroupId) {\r\n facets = group;\r\n }\r\n });\r\n\r\n _.each(facets.getSelectedFacets(), function (facet) {\r\n if (facet) {\r\n facet.selected = false;\r\n }\r\n });\r\n\r\n _.each(facetIds, function (id) {\r\n var pubFacets = facets.facets;\r\n var splitName = id.split(\"-\");\r\n if (splitName.length > 1) {\r\n id = splitName[0];\r\n }\r\n _.each(pubFacets, function (pubFac) {\r\n var facetId = pubFac.id.replace(\" \", \"\").replace(\"'\", \"\").toLowerCase();\r\n if(facetId === id.replace(\" \", \"\").replace(\"'\", \"\").toLowerCase()) {\r\n pubFac.selected = true;\r\n }\r\n })\r\n });\r\n\r\n // vm.update(facetGroupId);\r\n \r\n _.each(facetIds, function (id) {\r\n var splitName = id.split(\"-\");\r\n if (splitName.length > 1) {\r\n var parentId = splitName[0].replace(\" \", \"\");\r\n var myId = splitName[1].replace(\"and\", \"&\");\r\n _.each(vm.facetGroups, function (group) {\r\n if (group.id == parentId) {\r\n subfacets = group.facets;\r\n }\r\n });\r\n\r\n _.each(subfacets, function (subfac) {\r\n if (subfac.id.toLowerCase() == myId.toLowerCase()) {\r\n subfac.selected = true;\r\n }\r\n });\r\n \r\n }\r\n });\r\n \r\n if(vm.enableMySusbriptions && vm.keywordSearch) \r\n vm.createCookie(vm.subscriber_cookie,facetIds,3650);\r\n\r\n vm.update();\r\n } else {\r\n vm.clearAllFacets();\r\n }\r\n };\r\n\r\n\r\n // TODO: this comes from a diff search app, and needs jquery to work.\r\n // either hook up jq to this controller or move this elsewhere\r\n vm.scrollTop = function () {\r\n // var location = jq(\".search-facets__header\").offset().top;\r\n //window.scrollTo(0, location - 80);\r\n };\r\n\r\n vm.hasSelected = function (values) {\r\n return _.find(values, { selected: true }) ? true : false;\r\n };\r\n\r\n vm.getFilter = function (filterKey) {\r\n var filter = vm.searchService.getFilter(filterKey);\r\n if (!filter) {\r\n vm.searchBootstrapper.createFilter(filterKey, \"\");\r\n filter = vm.searchService.getFilter(filterKey);\r\n }\r\n return filter;\r\n };\r\n\r\n /* This deselects any selected facet checkboxes, clears all facet parameters\r\n from the search query, and runs the clearDateRange function */\r\n vm.clearAllFacets = function () {\r\n var facetClear = this;\r\n var facetGroups = facetClear.facetGroups;\r\n _.each(facetGroups, function (group) {\r\n var facets = group.facets;\r\n _.each(facets, function (facet) {\r\n facet.selected = false;\r\n });\r\n });\r\n vm.update();\r\n if(vm.keywordSearch && vm.enableMySusbriptions)\r\n vm.createCookie(vm.subscriber_cookie, [], 3650);\r\n };\r\n\r\n vm.clearFilter = function (filterKey) {\r\n var filter = vm.getFilter(filterKey);\r\n filter.setValue(\"\");\r\n };\r\n\r\n vm.createCookie = function (name, value, days) {\r\n var expires;\r\n if (days) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\r\n expires = \"; expires=\" + date.toGMTString();\r\n } else {\r\n expires = \"\";\r\n }\r\n document.cookie = name + \"=\" + JSON.stringify(value) + expires + \"; path=/\";\r\n }\r\n \r\n vm.readCookie = function(name) {\r\n var nameEQ = name + \"=\";\r\n var ca = document.cookie.split(';');\r\n for(var i=0;i < ca.length;i++) {\r\n var c = ca[i];\r\n while (c.charAt(0) === ' ') {\r\n c = c.substring(1,c.length);\r\n }\r\n if (c.indexOf(nameEQ) === 0) {\r\n return c.substring(nameEQ.length,c.length);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n};\r\n\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"InformaFacetDataController\", ['$scope', '$rootScope', '$location', '$http', '$anchorScroll', '$timeout', 'searchService', 'searchBootstrapper', 'facetAvailabilityService', InformaFacetDataController]);","/* global angular, analytics_data, utag */\r\n\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\n\r\nvar InformaResultsController = function InformaResultsController($scope, $sanitize, $location, searchService, viewHeadlinesStateService, $timeout, $window, facetAvailabilityService) {\r\n\r\n var vm = this;\r\n\r\n vm.service = searchService;\r\n \r\n vm.docs = [];\r\n vm.searchType = '';\r\n vm.location = $location;\r\n vm.themeOmdia = angular.element(document.body).hasClass('theme-omdia');\r\n\r\n $scope.headlinesOnly = viewHeadlinesStateService;\r\n var count = 0;\r\n\r\n //Sri ram code IPP-7254\r\n $scope.updateSearchType = function () {\r\n var newSearchObj = vm.location.search(),\r\n searchStr = Object.keys(newSearchObj).map(function (key) {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(newSearchObj[key])\r\n }).join('&');\r\n\r\n if (searchStr.length === 0) {\r\n searchStr = \"#?page=1&searchtype=product&sortBy=relevance&sortOrder=desc#searchTop\";\r\n } else {\r\n if (searchStr.indexOf(\"searchtype=product\") > 0)\r\n searchStr = '#?' + searchStr + '#searchTop';\r\n else\r\n searchStr = '#?' + searchStr + '&searchtype=product#searchTop';\r\n }\r\n\r\n vm.service.createFilter('searchtype', 'product');\r\n console.log(vm.service.getParams());\r\n //vm.service.addParamable(parm);\r\n // clean fix: need to update facets\r\n window.location.assign(window.location.origin + window.location.pathname + searchStr);\r\n window.location.reload();\r\n }\r\n\r\n $scope.removeSearchType = function () {\r\n delete vm.location.search()[\"searchtype\"];\r\n var newSearchObj = vm.location.search(),\r\n searchStr = Object.keys(newSearchObj).map(function (key) {\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(newSearchObj[key])\r\n }).join('&');\r\n\r\n if (searchStr.length === 0) {\r\n searchStr = \"#?page=1&sortBy=relevance&sortOrder=desc#searchTop\";\r\n } else { \r\n searchStr = '#?' + searchStr + '#searchTop';\r\n }\r\n\r\n // clean fix: need to update facets\r\n window.location.assign(window.location.origin + window.location.pathname + searchStr);\r\n window.location.reload();\r\n }\r\n\r\n $scope.ReplaceBrowser = function (body) {\r\n \r\n const regexp = /]*>([^<]+)<\\/a>/g;\r\n const matches = body.matchAll(regexp);\r\n\r\n for (const match of matches) {\r\n console.log(match);\r\n \r\n }\r\n \r\n }\r\n\r\n $scope.utagAnalytics = function () {\r\n if (count > 0) {\r\n var eventDetails = {\r\n Number_of_Results: '\"' + $(\".js-searchTotalResults\").text() + '\"',\r\n search_Keyword: '\"' + $(\".js-searchKeyword\").text() + '\"'\r\n };\r\n var dataObj = $.extend(analytics_data, eventDetails);\r\n if (typeof utag !== 'undefined') {\r\n utag.link(dataObj);\r\n }\r\n }\r\n count = count + 1;\r\n };\r\n\r\n $scope.getFormattedDate = function (originalDate) {\r\n return new Date(originalDate.replace(/T.+/, ''));\r\n };\r\n\r\n $scope.$watch(function () {\r\n return searchService.getSearchType();\r\n }, function () {\r\n vm.searchType = searchService.getSearchType();\r\n });\r\n\r\n $scope.$watchCollection(function () {\r\n return searchService.getResults();\r\n }, function () {\r\n $scope.getpagePosition = (searchService._pager.current-1) * (searchService._pager.perPage);\r\n vm.docs = searchService.getResults();\r\n $scope.utagAnalytics();\r\n });\r\n\r\n $scope.filterResult = function (url) {\r\n window.location = url;\r\n window.location.reload();\r\n };\r\n\r\n $scope.fireBookmark = function (article, event, key) {\r\n $timeout(function () {\r\n\t\t\tvm.docs[key].isArticleBookmarked = vm.docs[key].isArticleBookmarked ? false : true;\r\n\t\t}, 500);\r\n };\r\n\r\n $scope.$on('refreshPopOuts', function (ngRepeatFinishedEvent) {\r\n\r\n\t\t// Enable all facet options when search results land\r\n\t\t// $('.facets__section input').attr('disabled', null);\r\n\t\tfacetAvailabilityService.enableFacets();\r\n\r\n if (window.indexPopOuts)\r\n window.indexPopOuts();\r\n if (window.indexBookmarks)\r\n window.indexBookmarks();\r\n if (window.autoBookmark)\r\n window.autoBookmark();\r\n if (window.findTooltips)\r\n window.findTooltips();\r\n if (window.renderRevealer)\r\n window.renderRevealer();\r\n });\r\n\r\n this.forceRefresh = function () {\r\n $window.location.reload(false);\r\n };\r\n\r\n vm.triggerHeadingClick = function($event) {\r\n var $header,\r\n headerData,\r\n headerUrl;\r\n \r\n if (!vm.themeOmdia || $event.target.tagName === \"A\") return;\r\n\r\n // get header element\r\n $header = $($event.currentTarget).find('.search-result__heading');\r\n headerUrl = $header.attr('ng-href');\r\n\r\n // if url not present on header dont track event either\r\n if (!headerUrl) return;\r\n\r\n // get and set analytics data from header\r\n headerData = $header.data('info');\r\n if(typeof utag !== 'undefined' && headerData) {\r\n utag.link($.extend(analytics_data, headerData));\r\n }\r\n\r\n // execute header clickthrough\r\n window.location = headerUrl;\r\n }\r\n\r\n};\r\n\r\ninformaSearchApp.directive('onFinishRender', function ($timeout) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attr) {\r\n if (scope.$last === true) {\r\n $timeout(function () {\r\n scope.$emit('refreshPopOuts');\r\n });\r\n }\r\n }\r\n };\r\n});\r\n\r\ninformaSearchApp.controller(\"InformaResultsController\", ['$scope', '$sanitize', '$location', 'searchService', 'viewHeadlinesStateService', '$timeout', '$window', 'facetAvailabilityService', InformaResultsController]);\r\n","/* global angular, analytics_data */\r\nimport { analyticsEvent } from '../../controllers/analytics-controller';\r\n\r\nvar PageSizeController = function ($scope, $location, $anchorScroll, searchService, searchBootstrapper) {\r\n \"use strict\";\r\n\r\n var perPageKey = 'perPage';\r\n\r\n var vm = this;\r\n\r\n vm.location = $location;\r\n vm.anchorScroll = $anchorScroll;\r\n vm.searchService = searchService;\r\n vm.searchBootstrapper = searchBootstrapper;\r\n\r\n vm.update = function (pageSize) {\r\n var filter = vm.searchService.getFilter(perPageKey);\r\n\r\n if (!filter) {\r\n vm.searchBootstrapper.createFilter(perPageKey, pageSize);\r\n } else {\r\n filter.setValue(pageSize);\r\n }\r\n\r\n vm.searchService.getFilter('page').setValue('1');\r\n var routeBuilder = this.searchService.getRouteBuilder();\r\n vm.location.search(routeBuilder.getRoute());\r\n vm.searchService.query();\r\n\r\n //Scroll to the top of the results when a new page is chosen\r\n vm.location.hash(\"searchTop\");\r\n vm.anchorScroll();\r\n\r\n\t\tanalyticsEvent( $.extend(analytics_data, {\r\n\t\t\tevent_name: 'search_utility',\r\n\t\t\tsearch_utility: 'results_per_page_' + pageSize\r\n\t\t}));\r\n\r\n };\r\n\r\n vm.init = function() {\r\n var filter = vm.searchService.getFilter(perPageKey);\r\n\r\n $scope.pageSize = filter ? filter._value : '10';\r\n };\r\n};\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"PageSizeController\", ['$scope', '$location', '$anchorScroll', 'searchService', 'searchBootstrapper', PageSizeController]);\r\n","/* global angular */\r\n\r\nvar SavedSearchController = function ($scope, $location, $timeout, $http, searchService, savedSearchService) {\r\n \"use strict\";\r\n\r\n var vm = this;\r\n\r\n vm.searchService = searchService;\r\n $scope.searchIsSaved = false;\r\n\r\n $scope.oneClickSaveFocus = false;\r\n\r\n // A user can land on the search page from a \"1-click Subscribe\" link in an email\r\n // This handles detection of that query parameter, triggers appropriate UI changes\r\n function openSaveSearchIf1Click() {\r\n\r\n var urlQuery = $location.search();\r\n var clickKey = Object.keys(urlQuery).filter(function (cur) {\r\n return cur.toLowerCase() === \"1click\";\r\n });\r\n\r\n if (clickKey.length > 0 && urlQuery[clickKey[0]] === \"1\") {\r\n jQuery(\".js-save-search\").click();\r\n $location.search(clickKey[0], null);\r\n $scope.oneClickSaveFocus = true;\r\n }\r\n }\r\n\r\n $timeout(function() {\r\n openSaveSearchIf1Click();\r\n }, 1000);\r\n\r\n $scope.$watch(function () {\r\n return searchService.getPager();\r\n }, function () {\r\n $('.js-save-search-url').val(window.location.hash.substring(1));\r\n $scope.title = searchService.getFilter('q').getValue();\r\n $scope.currentLocation = $location.url();\r\n if ($scope.isAuthenticated) {\r\n savedSearchService.isSaved().then(function (response) {\r\n $scope.searchIsSaved = response.data;\r\n });\r\n }\r\n }, true);\r\n\r\n // Depending on how quickly Angular bootstraps, some lightbox trigger classes\r\n // might not be added before the lightbox event listners are bound. This\r\n // manually fires the Saved Search lightbox, in case the normal listener wasn't\r\n // bound in time.\r\n vm.showLightbox = function (e) {\r\n $('.js-save-search-title').val('');\r\n if($scope.searchIsSaved) {\r\n window.lightboxController.showLightbox($(e.target).closest('.angular-lightbox-modal-trigger'));\r\n }\r\n };\r\n\r\n\tvm.searchIsSaved = function() {\r\n\t\t$scope.searchIsSaved = true;\r\n\t\t$scope.$apply();\r\n\t};\r\n};\r\n\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"SavedSearchController\", ['$scope', '$location', '$timeout', '$http', 'searchService', 'savedSearchService', SavedSearchController]);\r\n","/* global angular, analytics_data */\r\nimport { analyticsEvent } from '../../controllers/analytics-controller';\r\n\r\nvar SortByDateController = function ($scope, $location, $timeout, $http, searchService, savedSearchService) {\r\n \"use strict\";\r\n\r\n var vm = this;\r\n\r\n\tvm.resultsSorted = function(sortingAsc) {\r\n\t\tif(sortingAsc) {\r\n\t\t\tanalyticsEvent( $.extend(analytics_data, {\r\n\t\t\t\tevent_name: 'search_utility',\r\n\t\t\t\tsearch_utility: 'sort_by_date:asc'\r\n\t\t\t}));\r\n\t\t} else {\r\n\t\t\tanalyticsEvent( $.extend(analytics_data, {\r\n\t\t\t\tevent_name: 'search_utility',\r\n\t\t\t\tsearch_utility: 'sort_by_date:desc'\r\n\t\t\t}));\r\n\t\t}\r\n\t};\r\n\r\n};\r\n\r\nvar informaSearchApp = angular.module('informaSearchApp');\r\ninformaSearchApp.controller(\"SortByDateController\", ['$scope', '$location', '$timeout', '$http', 'searchService', 'savedSearchService', SortByDateController]);\r\n","var informaSearchApp = angular.module('informaSearchApp');\r\n\r\n// factory to handle call to companies service\r\n// note: a factory lives through the entire application lifecycle\r\ninformaSearchApp.factory('getCompaniesService', ['$http', '$location', function ($http, $location) {\r\n\r\n var fetchCompanies = function(pageId) {\r\n\r\n var fullUrl = '/api/typeahead/getcompanies?pId=' + pageId;\r\n\r\n if ($location.url()) {\r\n fullUrl += '&' + $location.url().replace('?', '');\r\n }\r\n\r\n return $http({\r\n method: 'GET',\r\n url: fullUrl\r\n });\r\n\r\n };\r\n\r\n return {fetchCompanies : fetchCompanies};\r\n\r\n}]);\r\n","var informaSearchApp = angular.module('informaSearchApp');\r\n\r\n// factory to handle call to companies service\r\n// note: a factory lives through the entire application lifecycle\r\ninformaSearchApp.factory('savedSearchService', ['$http', '$location', function ($http, $location) {\r\n\r\n var isSaved = function () {\r\n var fullUrl = '/api/SavedSearches?url=' + escape($location.url());\r\n\r\n return $http({\r\n method: 'GET',\r\n url: fullUrl\r\n });\r\n\r\n };\r\n\r\n return {\r\n isSaved: isSaved\r\n };\r\n\r\n}]);\r\n","/* global angular, analytics_data */\r\nimport { analyticsEvent } from '../controllers/analytics-controller';\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n var informaSearchApp = angular.module('informaSearchApp', [\r\n 'velir.search',\r\n 'ui.bootstrap',\r\n 'ngSanitize',\r\n 'ngAnimate'\r\n ]).constant('apiEndpoints', {\r\n API_BASE: '/api',\r\n SEARCH_ENDPOINT: '/search'\r\n }).config(['$logProvider', function($logProvider) {\r\n // All debugging should be done via $log instead of directly to console\r\n // This flag disables $log.debug() output\r\n //$logProvider.debugEnabled(false);\r\n }]).config(['$compileProvider', function($compileProvider) {\r\n\r\n // https://docs.angularjs.org/api/ng/provider/$compileProvider#debugInfoEnabled\r\n // UNCOMMENT THE LINE BELOW IN PRODUCTION FOR PERFORMANCE GAINS\r\n\r\n // $compileProvider.debugInfoEnabled(false);\r\n\r\n }]).config(['$locationProvider', function($locationProvider) {\r\n $locationProvider.hashPrefix('');\r\n }]);\r\n\r\n informaSearchApp.factory('viewHeadlinesStateService', function() {\r\n var headlines = false;\r\n\r\n return {\r\n showOnlyHeadlines: function() { return headlines; },\r\n updateValue: function() {\r\n\r\n if (!headlines) {\r\n analyticsEvent($.extend(analytics_data, {\r\n event_name: 'entitlement_toggle',\r\n search_utility: 'view_headlines_only'\r\n }));\r\n }\r\n\r\n headlines = !headlines;\r\n\r\n }\r\n };\r\n });\r\n\r\n informaSearchApp.factory('facetAvailabilityService', function($rootScope) {\r\n\r\n var facetsState = false;\r\n\r\n return {\r\n facetsAreEnabled: function() {\r\n return facetsState;\r\n },\r\n enableFacets: function() {\r\n facetsState = false;\r\n $rootScope.facetAvailability = facetsState;\r\n },\r\n disableFacets: function() {\r\n facetsState = true;\r\n $rootScope.facetAvailability = facetsState;\r\n },\r\n toggleFacets: function() {\r\n facetsState = !facetsState;\r\n $rootScope.facetAvailability = facetsState;\r\n }\r\n };\r\n\r\n });\r\n\r\n})();","import App from './informaSearchApp.js';\r\nimport CompaniesFactory from './factories/companiesFactory.js';\r\nimport SavedSearchFactory from './factories/savedSearchFactory.js';\r\nimport HeadlineToggleController from './controllers/headlineToggleController.js';\r\nimport FreeContentToggleController from './controllers/FreeContentToggleController.js';\r\nimport InformaFacetsController from './controllers/informaFacetsController.js';\r\nimport InformaFacetsDataController from './controllers/informaFacetsDataController.js';\r\nimport InformaDatesController from './controllers/informaDatesController.js';\r\nimport InformaResultsController from './controllers/informaResultsController.js';\r\nimport EmailRssController from './controllers/emailRssController.js';\r\nimport TypeaheadController from './controllers/TypeaheadController.js';\r\nimport HeadlineSearchController from './controllers/headlineSearchController.js';\r\nimport PageSizeController from './controllers/pageSizeController.js';\r\nimport SavedSearchController from './controllers/savedSearchController.js';\r\nimport SortByDateController from './controllers/sortByDateController.js';\r\n\r\nimport AngularUIBootstrap from './ui-bootstrap-custom-tpls-1.2.4.min.js';\r\nimport AdvanceSearchController from './controllers/advanceSearchController.js';","/*\r\n * angular-ui-bootstrap\r\n * http://angular-ui.github.io/bootstrap/\r\n\r\n * Version: 1.2.4 - 2016-03-06\r\n * License: MIT\r\n */angular.module(\"ui.bootstrap\",[\"ui.bootstrap.tpls\",\"ui.bootstrap.datepicker\",\"ui.bootstrap.dateparser\",\"ui.bootstrap.isClass\",\"ui.bootstrap.position\",\"ui.bootstrap.typeahead\",\"ui.bootstrap.debounce\"]),angular.module(\"ui.bootstrap.tpls\",[\"uib/template/datepicker/datepicker.html\",\"uib/template/datepicker/day.html\",\"uib/template/datepicker/month.html\",\"uib/template/datepicker/popup.html\",\"uib/template/datepicker/year.html\",\"uib/template/typeahead/typeahead-match.html\",\"uib/template/typeahead/typeahead-popup.html\"]),angular.module(\"ui.bootstrap.datepicker\",[\"ui.bootstrap.dateparser\",\"ui.bootstrap.isClass\",\"ui.bootstrap.position\"]).value(\"$datepickerSuppressError\",!1).value(\"uibDatepickerAttributeWarning\",!0).constant(\"uibDatepickerConfig\",{datepickerMode:\"day\",formatDay:\"dd\",formatMonth:\"MMMM\",formatYear:\"yyyy\",formatDayHeader:\"EEE\",formatDayTitle:\"MMMM yyyy\",formatMonthTitle:\"yyyy\",maxDate:null,maxMode:\"year\",minDate:null,minMode:\"day\",ngModelOptions:{},shortcutPropagation:!1,showWeeks:!0,yearColumns:5,yearRows:4}).controller(\"UibDatepickerController\",[\"$scope\",\"$attrs\",\"$parse\",\"$interpolate\",\"$locale\",\"$log\",\"dateFilter\",\"uibDatepickerConfig\",\"$datepickerSuppressError\",\"uibDatepickerAttributeWarning\",\"uibDateParser\",function(e,t,a,i,n,r,o,s,l,u,p){function c(t){e.datepickerMode=t,g&&(e.datepickerOptions.datepickerMode=t)}var d=this,h={$setViewValue:angular.noop},f={},m=[],g=!!t.datepickerOptions;if(this.modes=[\"day\",\"month\",\"year\"],g)[\"customClass\",\"dateDisabled\",\"datepickerMode\",\"formatDay\",\"formatDayHeader\",\"formatDayTitle\",\"formatMonth\",\"formatMonthTitle\",\"formatYear\",\"initDate\",\"maxDate\",\"maxMode\",\"minDate\",\"minMode\",\"showWeeks\",\"shortcutPropagation\",\"startingDay\",\"yearColumns\",\"yearRows\"].forEach(function(t){switch(t){case\"customClass\":case\"dateDisabled\":e[t]=e.datepickerOptions[t]||angular.noop;break;case\"datepickerMode\":e.datepickerMode=angular.isDefined(e.datepickerOptions.datepickerMode)?e.datepickerOptions.datepickerMode:s.datepickerMode;break;case\"formatDay\":case\"formatDayHeader\":case\"formatDayTitle\":case\"formatMonth\":case\"formatMonthTitle\":case\"formatYear\":d[t]=angular.isDefined(e.datepickerOptions[t])?i(e.datepickerOptions[t])(e.$parent):s[t];break;case\"showWeeks\":case\"shortcutPropagation\":case\"yearColumns\":case\"yearRows\":d[t]=angular.isDefined(e.datepickerOptions[t])?e.datepickerOptions[t]:s[t];break;case\"startingDay\":d.startingDay=angular.isDefined(e.datepickerOptions.startingDay)?e.datepickerOptions.startingDay:angular.isNumber(s.startingDay)?s.startingDay:(n.DATETIME_FORMATS.FIRSTDAYOFWEEK+8)%7;break;case\"maxDate\":case\"minDate\":e.datepickerOptions[t]?e.$watch(function(){return e.datepickerOptions[t]},function(e){d[t]=e?angular.isDate(e)?p.fromTimezone(new Date(e),f.timezone):new Date(o(e,\"medium\")):null,d.refreshView()}):d[t]=s[t]?p.fromTimezone(new Date(s[t]),f.timezone):null;break;case\"maxMode\":case\"minMode\":e.datepickerOptions[t]?e.$watch(function(){return e.datepickerOptions[t]},function(a){d[t]=e[t]=angular.isDefined(a)?a:datepickerOptions[t],(\"minMode\"===t&&d.modes.indexOf(e.datepickerOptions.datepickerMode)d.modes.indexOf(d[t]))&&(e.datepickerMode=d[t],e.datepickerOptions.datepickerMode=d[t])}):d[t]=e[t]=s[t]||null;break;case\"initDate\":e.datepickerOptions.initDate?(d.activeDate=p.fromTimezone(e.datepickerOptions.initDate,f.timezone)||new Date,e.$watch(function(){return e.datepickerOptions.initDate},function(e){e&&(h.$isEmpty(h.$modelValue)||h.$invalid)&&(d.activeDate=p.fromTimezone(e,f.timezone),d.refreshView())})):d.activeDate=new Date}});else{if(angular.forEach([\"formatDay\",\"formatMonth\",\"formatYear\",\"formatDayHeader\",\"formatDayTitle\",\"formatMonthTitle\"],function(a){d[a]=angular.isDefined(t[a])?i(t[a])(e.$parent):s[a],angular.isDefined(t[a])&&u&&r.warn(\"uib-datepicker \"+a+\" attribute usage is deprecated, use datepicker-options attribute instead\")}),angular.forEach([\"showWeeks\",\"yearRows\",\"yearColumns\",\"shortcutPropagation\"],function(a){d[a]=angular.isDefined(t[a])?e.$parent.$eval(t[a]):s[a],angular.isDefined(t[a])&&u&&r.warn(\"uib-datepicker \"+a+\" attribute usage is deprecated, use datepicker-options attribute instead\")}),angular.forEach([\"dateDisabled\",\"customClass\"],function(e){angular.isDefined(t[e])&&u&&r.warn(\"uib-datepicker \"+e+\" attribute usage is deprecated, use datepicker-options attribute instead\")}),angular.isDefined(t.startingDay)?(u&&r.warn(\"uib-datepicker startingDay attribute usage is deprecated, use datepicker-options attribute instead\"),d.startingDay=e.$parent.$eval(t.startingDay)):d.startingDay=angular.isNumber(s.startingDay)?s.startingDay:(n.DATETIME_FORMATS.FIRSTDAYOFWEEK+8)%7,angular.forEach([\"minDate\",\"maxDate\"],function(a){t[a]?(u&&r.warn(\"uib-datepicker \"+a+\" attribute usage is deprecated, use datepicker-options attribute instead\"),m.push(e.$parent.$watch(t[a],function(e){d[a]=e?angular.isDate(e)?p.fromTimezone(new Date(e),f.timezone):new Date(o(e,\"medium\")):null,d.refreshView()}))):d[a]=s[a]?p.fromTimezone(new Date(s[a]),f.timezone):null}),angular.forEach([\"minMode\",\"maxMode\"],function(a){t[a]?(u&&r.warn(\"uib-datepicker \"+a+\" attribute usage is deprecated, use datepicker-options attribute instead\"),m.push(e.$parent.$watch(t[a],function(i){d[a]=e[a]=angular.isDefined(i)?i:t[a],(\"minMode\"===a&&d.modes.indexOf(e.datepickerMode)d.modes.indexOf(d[a]))&&(e.datepickerMode=d[a])}))):d[a]=e[a]=s[a]||null}),angular.isDefined(t.initDate)){u&&r.warn(\"uib-datepicker initDate attribute usage is deprecated, use datepicker-options attribute instead\");var b=p.fromTimezone(e.$parent.$eval(t.initDate),f.timezone);this.activeDate=isNaN(b)?new Date:b,m.push(e.$parent.$watch(t.initDate,function(e){e&&(h.$isEmpty(h.$modelValue)||h.$invalid)&&(e=p.fromTimezone(e,f.timezone),d.activeDate=isNaN(e)?new Date:e,d.refreshView())}))}else this.activeDate=new Date;t.datepickerMode&&u&&r.warn(\"uib-datepicker datepickerMode attribute usage is deprecated, use datepicker-options attribute instead\"),e.datepickerMode=e.datepickerMode||s.datepickerMode}e.uniqueId=\"datepicker-\"+e.$id+\"-\"+Math.floor(1e4*Math.random()),e.disabled=angular.isDefined(t.disabled)||!1,angular.isDefined(t.ngDisabled)&&m.push(e.$parent.$watch(t.ngDisabled,function(t){e.disabled=t,d.refreshView()})),e.isActive=function(t){return 0===d.compare(t.date,d.activeDate)?(e.activeDateId=t.uid,!0):!1},this.init=function(e){h=e,f=e.$options||s.ngModelOptions,this.activeDate=h.$modelValue||new Date,h.$render=function(){d.render()}},this.render=function(){if(h.$viewValue){var e=new Date(h.$viewValue),t=!isNaN(e);t?this.activeDate=p.fromTimezone(e,f.timezone):l||r.error('Datepicker directive: \"ng-model\" value must be a Date object')}this.refreshView()},this.refreshView=function(){if(this.element){e.selectedDt=null,this._refreshView(),e.activeDt&&(e.activeDateId=e.activeDt.uid);var t=h.$viewValue?new Date(h.$viewValue):null;t=p.fromTimezone(t,f.timezone),h.$setValidity(\"dateDisabled\",!t||this.element&&!this.isDisabled(t))}},this.createDateObject=function(t,a){var i=h.$viewValue?new Date(h.$viewValue):null;i=p.fromTimezone(i,f.timezone);var n=new Date;n=p.fromTimezone(n,f.timezone);var r=this.compare(t,n),o={date:t,label:p.filter(t,a),selected:i&&0===this.compare(t,i),disabled:this.isDisabled(t),past:0>r,current:0===r,future:r>0,customClass:this.customClass(t)||null};return i&&0===this.compare(t,i)&&(e.selectedDt=o),d.activeDate&&0===this.compare(o.date,d.activeDate)&&(e.activeDt=o),o},this.isDisabled=function(t){return e.disabled||this.minDate&&this.compare(t,this.minDate)<0||this.maxDate&&this.compare(t,this.maxDate)>0||e.dateDisabled&&e.dateDisabled({date:t,mode:e.datepickerMode})},this.customClass=function(t){return e.customClass({date:t,mode:e.datepickerMode})},this.split=function(e,t){for(var a=[];e.length>0;)a.push(e.splice(0,t));return a},e.select=function(t){if(e.datepickerMode===d.minMode){var a=h.$viewValue?p.fromTimezone(new Date(h.$viewValue),f.timezone):new Date(0,0,0,0,0,0,0);a.setFullYear(t.getFullYear(),t.getMonth(),t.getDate()),a=p.toTimezone(a,f.timezone),h.$setViewValue(a),h.$render()}else d.activeDate=t,c(d.modes[d.modes.indexOf(e.datepickerMode)-1]),e.$emit(\"uib:datepicker.mode\")},e.move=function(e){var t=d.activeDate.getFullYear()+e*(d.step.years||0),a=d.activeDate.getMonth()+e*(d.step.months||0);d.activeDate.setFullYear(t,a,1),d.refreshView()},e.toggleMode=function(t){t=t||1,e.datepickerMode===d.maxMode&&1===t||e.datepickerMode===d.minMode&&-1===t||(c(d.modes[d.modes.indexOf(e.datepickerMode)+t]),e.$emit(\"uib:datepicker.mode\"))},e.keys={13:\"enter\",32:\"space\",33:\"pageup\",34:\"pagedown\",35:\"end\",36:\"home\",37:\"left\",38:\"up\",39:\"right\",40:\"down\"};var y=function(){d.element[0].focus()};e.$on(\"uib:datepicker.focus\",y),e.keydown=function(t){var a=e.keys[t.which];if(a&&!t.shiftKey&&!t.altKey&&!e.disabled)if(t.preventDefault(),d.shortcutPropagation||t.stopPropagation(),\"enter\"===a||\"space\"===a){if(d.isDisabled(d.activeDate))return;e.select(d.activeDate)}else!t.ctrlKey||\"up\"!==a&&\"down\"!==a?(d.handleKeyDown(a,t),d.refreshView()):e.toggleMode(\"up\"===a?1:-1)},e.$on(\"$destroy\",function(){for(;m.length;)m.shift()()})}]).controller(\"UibDaypickerController\",[\"$scope\",\"$element\",\"dateFilter\",function(e,t,a){function i(e,t){return 1!==t||e%4!==0||e%100===0&&e%400!==0?r[t]:29}function n(e){var t=new Date(e);t.setDate(t.getDate()+4-(t.getDay()||7));var a=t.getTime();return t.setMonth(0),t.setDate(1),Math.floor(Math.round((a-t)/864e5)/7)+1}var r=[31,28,31,30,31,30,31,31,30,31,30,31];this.step={months:1},this.element=t,this.init=function(t){angular.extend(t,this),e.showWeeks=t.showWeeks,t.refreshView()},this.getDates=function(e,t){for(var a,i=new Array(t),n=new Date(e),r=0;t>r;)a=new Date(n),i[r++]=a,n.setDate(n.getDate()+1);return i},this._refreshView=function(){var t=this.activeDate.getFullYear(),i=this.activeDate.getMonth(),r=new Date(this.activeDate);r.setFullYear(t,i,1);var o=this.startingDay-r.getDay(),s=o>0?7-o:-o,l=new Date(r);s>0&&l.setDate(-s+1);for(var u=this.getDates(l,42),p=0;42>p;p++)u[p]=angular.extend(this.createDateObject(u[p],this.formatDay),{secondary:u[p].getMonth()!==i,uid:e.uniqueId+\"-\"+p});e.labels=new Array(7);for(var c=0;7>c;c++)e.labels[c]={abbr:a(u[c].date,this.formatDayHeader),full:a(u[c].date,\"EEEE\")};if(e.title=a(this.activeDate,this.formatDayTitle),e.rows=this.split(u,7),e.showWeeks){e.weekNumbers=[];for(var d=(11-this.startingDay)%7,h=e.rows.length,f=0;h>f;f++)e.weekNumbers.push(n(e.rows[f][d].date))}},this.compare=function(e,t){var a=new Date(e.getFullYear(),e.getMonth(),e.getDate()),i=new Date(t.getFullYear(),t.getMonth(),t.getDate());return a.setFullYear(e.getFullYear()),i.setFullYear(t.getFullYear()),a-i},this.handleKeyDown=function(e){var t=this.activeDate.getDate();if(\"left\"===e)t-=1;else if(\"up\"===e)t-=7;else if(\"right\"===e)t+=1;else if(\"down\"===e)t+=7;else if(\"pageup\"===e||\"pagedown\"===e){var a=this.activeDate.getMonth()+(\"pageup\"===e?-1:1);this.activeDate.setMonth(a,1),t=Math.min(i(this.activeDate.getFullYear(),this.activeDate.getMonth()),t)}else\"home\"===e?t=1:\"end\"===e&&(t=i(this.activeDate.getFullYear(),this.activeDate.getMonth()));this.activeDate.setDate(t)}}]).controller(\"UibMonthpickerController\",[\"$scope\",\"$element\",\"dateFilter\",function(e,t,a){this.step={years:1},this.element=t,this.init=function(e){angular.extend(e,this),e.refreshView()},this._refreshView=function(){for(var t,i=new Array(12),n=this.activeDate.getFullYear(),r=0;12>r;r++)t=new Date(this.activeDate),t.setFullYear(n,r,1),i[r]=angular.extend(this.createDateObject(t,this.formatMonth),{uid:e.uniqueId+\"-\"+r});e.title=a(this.activeDate,this.formatMonthTitle),e.rows=this.split(i,3)},this.compare=function(e,t){var a=new Date(e.getFullYear(),e.getMonth()),i=new Date(t.getFullYear(),t.getMonth());return a.setFullYear(e.getFullYear()),i.setFullYear(t.getFullYear()),a-i},this.handleKeyDown=function(e){var t=this.activeDate.getMonth();if(\"left\"===e)t-=1;else if(\"up\"===e)t-=3;else if(\"right\"===e)t+=1;else if(\"down\"===e)t+=3;else if(\"pageup\"===e||\"pagedown\"===e){var a=this.activeDate.getFullYear()+(\"pageup\"===e?-1:1);this.activeDate.setFullYear(a)}else\"home\"===e?t=0:\"end\"===e&&(t=11);this.activeDate.setMonth(t)}}]).controller(\"UibYearpickerController\",[\"$scope\",\"$element\",\"dateFilter\",function(e,t){function a(e){return parseInt((e-1)/n,10)*n+1}var i,n;this.element=t,this.yearpickerInit=function(){i=this.yearColumns,n=this.yearRows*i,this.step={years:n}},this._refreshView=function(){for(var t,r=new Array(n),o=0,s=a(this.activeDate.getFullYear());n>o;o++)t=new Date(this.activeDate),t.setFullYear(s+o,0,1),r[o]=angular.extend(this.createDateObject(t,this.formatYear),{uid:e.uniqueId+\"-\"+o});e.title=[r[0].label,r[n-1].label].join(\" - \"),e.rows=this.split(r,i),e.columns=i},this.compare=function(e,t){return e.getFullYear()-t.getFullYear()},this.handleKeyDown=function(e){var t=this.activeDate.getFullYear();\"left\"===e?t-=1:\"up\"===e?t-=i:\"right\"===e?t+=1:\"down\"===e?t+=i:\"pageup\"===e||\"pagedown\"===e?t+=(\"pageup\"===e?-1:1)*n:\"home\"===e?t=a(this.activeDate.getFullYear()):\"end\"===e&&(t=a(this.activeDate.getFullYear())+n-1),this.activeDate.setFullYear(t)}}]).directive(\"uibDatepicker\",function(){return{replace:!0,templateUrl:function(e,t){return t.templateUrl||\"uib/template/datepicker/datepicker.html\"},scope:{datepickerMode:\"=?\",datepickerOptions:\"=?\",dateDisabled:\"&\",customClass:\"&\",shortcutPropagation:\"&?\"},require:[\"uibDatepicker\",\"^ngModel\"],controller:\"UibDatepickerController\",controllerAs:\"datepicker\",link:function(e,t,a,i){var n=i[0],r=i[1];n.init(r)}}}).directive(\"uibDaypicker\",function(){return{replace:!0,templateUrl:function(e,t){return t.templateUrl||\"uib/template/datepicker/day.html\"},require:[\"^uibDatepicker\",\"uibDaypicker\"],controller:\"UibDaypickerController\",link:function(e,t,a,i){var n=i[0],r=i[1];r.init(n)}}}).directive(\"uibMonthpicker\",function(){return{replace:!0,templateUrl:function(e,t){return t.templateUrl||\"uib/template/datepicker/month.html\"},require:[\"^uibDatepicker\",\"uibMonthpicker\"],controller:\"UibMonthpickerController\",link:function(e,t,a,i){var n=i[0],r=i[1];r.init(n)}}}).directive(\"uibYearpicker\",function(){return{replace:!0,templateUrl:function(e,t){return t.templateUrl||\"uib/template/datepicker/year.html\"},require:[\"^uibDatepicker\",\"uibYearpicker\"],controller:\"UibYearpickerController\",link:function(e,t,a,i){var n=i[0];angular.extend(n,i[1]),n.yearpickerInit(),n.refreshView()}}}).value(\"uibDatepickerPopupAttributeWarning\",!0).constant(\"uibDatepickerPopupConfig\",{altInputFormats:[],appendToBody:!1,clearText:\"Clear\",closeOnDateSelection:!0,closeText:\"Done\",currentText:\"Today\",datepickerPopup:\"yyyy-MM-dd\",datepickerPopupTemplateUrl:\"uib/template/datepicker/popup.html\",datepickerTemplateUrl:\"uib/template/datepicker/datepicker.html\",html5Types:{date:\"yyyy-MM-dd\",\"datetime-local\":\"yyyy-MM-ddTHH:mm:ss.sss\",month:\"yyyy-MM\"},onOpenFocus:!0,showButtonBar:!0,placement:\"auto bottom-left\"}).controller(\"UibDatepickerPopupController\",[\"$scope\",\"$element\",\"$attrs\",\"$compile\",\"$log\",\"$parse\",\"$window\",\"$document\",\"$rootScope\",\"$uibPosition\",\"dateFilter\",\"uibDateParser\",\"uibDatepickerPopupConfig\",\"$timeout\",\"uibDatepickerConfig\",\"uibDatepickerPopupAttributeWarning\",function(e,t,a,i,n,r,o,s,l,u,p,c,d,h,f,m){function g(e){return e.replace(/([A-Z])/g,function(e){return\"-\"+e.toLowerCase()})}function b(t){var a=c.parse(t,$,e.date);if(isNaN(a))for(var i=0;i
\"),e.ngModelOptions=angular.copy(P),e.ngModelOptions.timezone=null,e.ngModelOptions.updateOnDefault===!0&&(e.ngModelOptions.updateOn=e.ngModelOptions.updateOn?e.ngModelOptions.updateOn+\" default\":\"default\"),F.attr({\"ng-model\":\"date\",\"ng-model-options\":\"ngModelOptions\",\"ng-change\":\"dateSelection(date)\",\"template-url\":O}),S=angular.element(F.children()[0]),S.attr(\"template-url\",E),Y&&\"month\"===a.type&&(S.attr(\"datepicker-mode\",'\"month\"'),S.attr(\"min-mode\",\"month\")),e.datepickerOptions&&S.attr(\"datepicker-options\",\"datepickerOptions\"),angular.forEach([\"minMode\",\"maxMode\",\"datepickerMode\",\"shortcutPropagation\"],function(t){if(a[t]){m&&n.warn(\"uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead\");var i=r(a[t]),o={get:function(){return i(e.$parent)}};if(S.attr(g(t),\"watchData.\"+t),\"datepickerMode\"===t){var s=i.assign;o.set=function(t){s(e.$parent,t)}}Object.defineProperty(e.watchData,t,o)}}),angular.forEach([\"minDate\",\"maxDate\",\"initDate\"],function(t){if(a[t]){m&&n.warn(\"uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead\");var i=r(a[t]);z.push(e.$parent.$watch(i,function(a){if(\"minDate\"===t||\"maxDate\"===t)U[t]=null===a?null:angular.isDate(a)?c.fromTimezone(new Date(a),P.timezone):new Date(p(a,\"medium\")),e.watchData[t]=null===a?null:U[t];else{var i=a?new Date(a):new Date;e.watchData[t]=c.fromTimezone(i,P.timezone)}})),S.attr(g(t),\"watchData.\"+t)}}),a.dateDisabled&&(m&&n.warn(\"uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead\"),S.attr(\"date-disabled\",\"dateDisabled({ date: date, mode: mode })\")),angular.forEach([\"formatDay\",\"formatMonth\",\"formatYear\",\"formatDayHeader\",\"formatDayTitle\",\"formatMonthTitle\",\"showWeeks\",\"startingDay\",\"yearRows\",\"yearColumns\"],function(e){angular.isDefined(a[e])&&(m&&n.warn(\"uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead\"),S.attr(g(e),a[e]))}),a.customClass&&(m&&n.warn(\"uib-datepicker settings via uib-datepicker-popup attributes are deprecated and will be removed in UI Bootstrap 1.3, use datepicker-options attribute instead\"),S.attr(\"custom-class\",\"customClass({ date: date, mode: mode })\")),Y?C.$formatters.push(function(t){return e.date=c.fromTimezone(t,P.timezone),t}):(C.$$parserName=\"date\",C.$validators.date=v,C.$parsers.unshift(y),C.$formatters.push(function(t){return C.$isEmpty(t)?(e.date=t,t):(e.date=c.fromTimezone(t,P.timezone),angular.isNumber(e.date)&&(e.date=new Date(e.date)),c.filter(e.date,$))})),C.$viewChangeListeners.push(function(){e.date=b(C.$viewValue)}),t.on(\"keydown\",k),A=i(F)(e),F.remove(),x?s.find(\"body\").append(A):t.after(A),e.$on(\"$destroy\",function(){for(e.isOpen===!0&&(l.$$phase||e.$apply(function(){e.isOpen=!1})),A.remove(),t.off(\"keydown\",k),s.off(\"click\",D),I&&I.off(\"scroll\",w),angular.element(o).off(\"resize\",w);z.length;)z.shift()()})},e.getText=function(t){return e[t+\"Text\"]||d[t+\"Text\"]},e.isDisabled=function(t){return\"today\"===t&&(t=new Date),e.watchData.minDate&&e.compare(t,U.minDate)<0||e.watchData.maxDate&&e.compare(t,U.maxDate)>0},e.compare=function(e,t){return new Date(e.getFullYear(),e.getMonth(),e.getDate())-new Date(t.getFullYear(),t.getMonth(),t.getDate())},e.dateSelection=function(a){angular.isDefined(a)&&(e.date=a);var i=e.date?c.filter(e.date,$):null;t.val(i),C.$setViewValue(i),M&&(e.isOpen=!1,t[0].focus())},e.keydown=function(a){27===a.which&&(a.stopPropagation(),e.isOpen=!1,t[0].focus())},e.select=function(t,a){if(a.stopPropagation(),\"today\"===t){var i=new Date;angular.isDate(e.date)?(t=new Date(e.date),t.setFullYear(i.getFullYear(),i.getMonth(),i.getDate())):t=new Date(i.setHours(0,0,0,0))}e.dateSelection(t)},e.close=function(a){a.stopPropagation(),e.isOpen=!1,t[0].focus()},e.disabled=angular.isDefined(a.disabled)||!1,a.ngDisabled&&z.push(e.$parent.$watch(r(a.ngDisabled),function(t){e.disabled=t})),e.$watch(\"isOpen\",function(i){i?e.disabled?e.isOpen=!1:h(function(){w(),T&&e.$broadcast(\"uib:datepicker.focus\"),s.on(\"click\",D);var i=a.popupPlacement?a.popupPlacement:d.placement;x||u.parsePlacement(i)[2]?(I=I||angular.element(u.scrollParent(t)),I&&I.on(\"scroll\",w)):I=null,angular.element(o).on(\"resize\",w)},0,!1):(s.off(\"click\",D),I&&I.off(\"scroll\",w),angular.element(o).off(\"resize\",w))}),e.$on(\"uib:datepicker.mode\",function(){h(w,0,!1)})}]).directive(\"uibDatepickerPopup\",function(){return{require:[\"ngModel\",\"uibDatepickerPopup\"],controller:\"UibDatepickerPopupController\",scope:{datepickerOptions:\"=?\",isOpen:\"=?\",currentText:\"@\",clearText:\"@\",closeText:\"@\",dateDisabled:\"&\",customClass:\"&\"},link:function(e,t,a,i){var n=i[0],r=i[1];r.init(n)}}}).directive(\"uibDatepickerPopupWrap\",function(){return{replace:!0,transclude:!0,templateUrl:function(e,t){return t.templateUrl||\"uib/template/datepicker/popup.html\"}}}),angular.module(\"ui.bootstrap.dateparser\",[]).service(\"uibDateParser\",[\"$log\",\"$locale\",\"dateFilter\",\"orderByFilter\",function(e,t,a,i){function n(e,t){var a=[],n=e.split(\"\"),r=e.indexOf(\"'\");if(r>-1){var o=!1;e=e.split(\"\");for(var s=r;s-1){e=e.split(\"\"),n[r]=\"(\"+i.regex+\")\",e[r]=\"$\";for(var o=r+1,s=r+i.key.length;s>o;o++)n[o]=\"\",e[o]=\"$\";e=e.join(\"\"),a.push({index:r,key:i.key,apply:i[t],matcher:i.regex})}}),{regex:new RegExp(\"^\"+n.join(\"\")+\"$\"),map:i(a,\"index\")}}function r(e,t,a){return 1>a?!1:1===t&&a>28?29===a&&(e%4===0&&e%100!==0||e%400===0):3===t||5===t||8===t||10===t?31>a:!0}function o(e){return parseInt(e,10)}function s(e,t){return e&&t?c(e,t):e}function l(e,t){return e&&t?c(e,t,!0):e}function u(e,t){var a=Date.parse(\"Jan 01, 1970 00:00:00 \"+e)/6e4;return isNaN(a)?t:a}function p(e,t){return e=new Date(e.getTime()),e.setMinutes(e.getMinutes()+t),e}function c(e,t,a){a=a?-1:1;var i=u(t,e.getTimezoneOffset());return p(e,a*(i-e.getTimezoneOffset()))}var d,h,f=/[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;this.init=function(){d=t.id,this.parsers={},this.formatters={},h=[{key:\"yyyy\",regex:\"\\\\d{4}\",apply:function(e){this.year=+e},formatter:function(e){var t=new Date;return t.setFullYear(Math.abs(e.getFullYear())),a(t,\"yyyy\")}},{key:\"yy\",regex:\"\\\\d{2}\",apply:function(e){this.year=+e+2e3},formatter:function(e){var t=new Date;return t.setFullYear(Math.abs(e.getFullYear())),a(t,\"yy\")}},{key:\"y\",regex:\"\\\\d{1,4}\",apply:function(e){this.year=+e},formatter:function(e){var t=new Date;return t.setFullYear(Math.abs(e.getFullYear())),a(t,\"y\")}},{key:\"M!\",regex:\"0?[1-9]|1[0-2]\",apply:function(e){this.month=e-1},formatter:function(e){var t=e.getMonth();return/^[0-9]$/.test(t)?a(e,\"MM\"):a(e,\"M\")}},{key:\"MMMM\",regex:t.DATETIME_FORMATS.MONTH.join(\"|\"),apply:function(e){this.month=t.DATETIME_FORMATS.MONTH.indexOf(e)},formatter:function(e){return a(e,\"MMMM\")}},{key:\"MMM\",regex:t.DATETIME_FORMATS.SHORTMONTH.join(\"|\"),apply:function(e){this.month=t.DATETIME_FORMATS.SHORTMONTH.indexOf(e)},formatter:function(e){return a(e,\"MMM\")}},{key:\"MM\",regex:\"0[1-9]|1[0-2]\",apply:function(e){this.month=e-1},formatter:function(e){return a(e,\"MM\")}},{key:\"M\",regex:\"[1-9]|1[0-2]\",apply:function(e){this.month=e-1},formatter:function(e){return a(e,\"M\")}},{key:\"d!\",regex:\"[0-2]?[0-9]{1}|3[0-1]{1}\",apply:function(e){this.date=+e},formatter:function(e){var t=e.getDate();return/^[1-9]$/.test(t)?a(e,\"dd\"):a(e,\"d\")}},{key:\"dd\",regex:\"[0-2][0-9]{1}|3[0-1]{1}\",apply:function(e){this.date=+e},formatter:function(e){return a(e,\"dd\")}},{key:\"d\",regex:\"[1-2]?[0-9]{1}|3[0-1]{1}\",apply:function(e){this.date=+e},formatter:function(e){return a(e,\"d\")}},{key:\"EEEE\",regex:t.DATETIME_FORMATS.DAY.join(\"|\"),formatter:function(e){return a(e,\"EEEE\")}},{key:\"EEE\",regex:t.DATETIME_FORMATS.SHORTDAY.join(\"|\"),formatter:function(e){return a(e,\"EEE\")}},{key:\"HH\",regex:\"(?:0|1)[0-9]|2[0-3]\",apply:function(e){this.hours=+e},formatter:function(e){return a(e,\"HH\")}},{key:\"hh\",regex:\"0[0-9]|1[0-2]\",apply:function(e){this.hours=+e},formatter:function(e){return a(e,\"hh\")}},{key:\"H\",regex:\"1?[0-9]|2[0-3]\",apply:function(e){this.hours=+e},formatter:function(e){return a(e,\"H\")}},{key:\"h\",regex:\"[0-9]|1[0-2]\",apply:function(e){this.hours=+e},formatter:function(e){return a(e,\"h\")}},{key:\"mm\",regex:\"[0-5][0-9]\",apply:function(e){this.minutes=+e},formatter:function(e){return a(e,\"mm\")}},{key:\"m\",regex:\"[0-9]|[1-5][0-9]\",apply:function(e){this.minutes=+e},formatter:function(e){return a(e,\"m\")}},{key:\"sss\",regex:\"[0-9][0-9][0-9]\",apply:function(e){this.milliseconds=+e},formatter:function(e){return a(e,\"sss\")}},{key:\"ss\",regex:\"[0-5][0-9]\",apply:function(e){this.seconds=+e},formatter:function(e){return a(e,\"ss\")}},{key:\"s\",regex:\"[0-9]|[1-5][0-9]\",apply:function(e){this.seconds=+e},formatter:function(e){return a(e,\"s\")}},{key:\"a\",regex:t.DATETIME_FORMATS.AMPMS.join(\"|\"),apply:function(e){12===this.hours&&(this.hours=0),\"PM\"===e&&(this.hours+=12)},formatter:function(e){return a(e,\"a\")}},{key:\"Z\",regex:\"[+-]\\\\d{4}\",apply:function(e){var t=e.match(/([+-])(\\d{2})(\\d{2})/),a=t[1],i=t[2],n=t[3];this.hours+=o(a+i),this.minutes+=o(a+n)},formatter:function(e){return a(e,\"Z\")}},{key:\"ww\",regex:\"[0-4][0-9]|5[0-3]\",formatter:function(e){return a(e,\"ww\")}},{key:\"w\",regex:\"[0-9]|[1-4][0-9]|5[0-3]\",formatter:function(e){return a(e,\"w\")}},{key:\"GGGG\",regex:t.DATETIME_FORMATS.ERANAMES.join(\"|\").replace(/\\s/g,\"\\\\s\"),formatter:function(e){return a(e,\"GGGG\")}},{key:\"GGG\",regex:t.DATETIME_FORMATS.ERAS.join(\"|\"),formatter:function(e){return a(e,\"GGG\")}},{key:\"GG\",regex:t.DATETIME_FORMATS.ERAS.join(\"|\"),formatter:function(e){return a(e,\"GG\")}},{key:\"G\",regex:t.DATETIME_FORMATS.ERAS.join(\"|\"),formatter:function(e){return a(e,\"G\")}}]},this.init(),this.filter=function(e,a){if(!angular.isDate(e)||isNaN(e)||!a)return\"\";a=t.DATETIME_FORMATS[a]||a,t.id!==d&&this.init(),this.formatters[a]||(this.formatters[a]=n(a,\"formatter\"));var i=this.formatters[a],r=i.map,o=a;return r.reduce(function(t,a,i){var n=o.match(new RegExp(\"(.*)\"+a.key));n&&angular.isString(n[1])&&(t+=n[1],o=o.replace(n[1]+a.key,\"\"));var s=i===r.length-1?o:\"\";return a.apply?t+a.apply.call(null,e)+s:t+s},\"\")},this.parse=function(a,i,o){if(!angular.isString(a)||!i)return a;i=t.DATETIME_FORMATS[i]||i,i=i.replace(f,\"\\\\$&\"),t.id!==d&&this.init(),this.parsers[i]||(this.parsers[i]=n(i,\"apply\"));var s=this.parsers[i],l=s.regex,u=s.map,p=a.match(l),c=!1;if(p&&p.length){var h,m;angular.isDate(o)&&!isNaN(o.getTime())?h={year:o.getFullYear(),month:o.getMonth(),date:o.getDate(),hours:o.getHours(),minutes:o.getMinutes(),seconds:o.getSeconds(),milliseconds:o.getMilliseconds()}:(o&&e.warn(\"dateparser:\",\"baseDate is not a valid date\"),h={year:1900,month:0,date:1,hours:0,minutes:0,seconds:0,milliseconds:0});for(var g=1,b=p.length;b>g;g++){var y=u[g-1];\"Z\"===y.matcher&&(c=!0),y.apply&&y.apply.call(h,p[g])}var v=c?Date.prototype.setUTCFullYear:Date.prototype.setFullYear,D=c?Date.prototype.setUTCHours:Date.prototype.setHours;return r(h.year,h.month,h.date)&&(!angular.isDate(o)||isNaN(o.getTime())||c?(m=new Date(0),v.call(m,h.year,h.month,h.date),D.call(m,h.hours||0,h.minutes||0,h.seconds||0,h.milliseconds||0)):(m=new Date(o),v.call(m,h.year,h.month,h.date),D.call(m,h.hours,h.minutes,h.seconds,h.milliseconds))),m}},this.toTimezone=s,this.fromTimezone=l,this.timezoneToOffset=u,this.addDateMinutes=p,this.convertTimezoneToLocal=c}]),angular.module(\"ui.bootstrap.isClass\",[]).directive(\"uibIsClass\",[\"$animate\",function(e){var t=/^\\s*([\\s\\S]+?)\\s+on\\s+([\\s\\S]+?)\\s*$/,a=/^\\s*([\\s\\S]+?)\\s+for\\s+([\\s\\S]+?)\\s*$/;return{restrict:\"A\",compile:function(i,n){function r(e,t){l.push(e),u.push({scope:e,element:t}),f.forEach(function(t){o(t,e)}),e.$on(\"$destroy\",s)}function o(t,i){var n=t.match(a),r=i.$eval(n[1]),o=n[2],s=p[t];if(!s){var l=function(t){var a=null;u.some(function(e){var i=e.scope.$eval(d);return i===t?(a=e,!0):void 0}),s.lastActivated!==a&&(s.lastActivated&&e.removeClass(s.lastActivated.element,r),a&&e.addClass(a.element,r),s.lastActivated=a)};p[t]=s={lastActivated:null,scope:i,watchFn:l,compareWithExp:o,watcher:i.$watch(o,l)}}s.watchFn(i.$eval(o))}function s(e){var t=e.targetScope,a=l.indexOf(t);if(l.splice(a,1),u.splice(a,1),l.length){var i=l[0];angular.forEach(p,function(e){e.scope===t&&(e.watcher=i.$watch(e.compareWithExp,e.watchFn),e.scope=i)})}else p={}}var l=[],u=[],p={},c=n.uibIsClass.match(t),d=c[2],h=c[1],f=h.split(\",\");return r}}}]),angular.module(\"ui.bootstrap.position\",[]).factory(\"$uibPosition\",[\"$document\",\"$window\",function(e,t){var a,i={normal:/(auto|scroll)/,hidden:/(auto|scroll|hidden)/},n={auto:/\\s?auto?\\s?/i,primary:/^(top|bottom|left|right)$/,secondary:/^(top|bottom|left|right|center)$/,vertical:/^(top|bottom)$/};return{getRawNode:function(e){return e.nodeName?e:e[0]||e},parseStyle:function(e){return e=parseFloat(e),isFinite(e)?e:0},offsetParent:function(a){function i(e){return\"static\"===(t.getComputedStyle(e).position||\"static\")}a=this.getRawNode(a);for(var n=a.offsetParent||e[0].documentElement;n&&n!==e[0].documentElement&&i(n);)n=n.offsetParent;return n||e[0].documentElement},scrollbarWidth:function(){if(angular.isUndefined(a)){var t=angular.element('
');e.find(\"body\").append(t),a=t[0].offsetWidth-t[0].clientWidth,a=isFinite(a)?a:0,t.remove()}return a},isScrollable:function(e,a){e=this.getRawNode(e);var n=a?i.hidden:i.normal,r=t.getComputedStyle(e);return n.test(r.overflow+r.overflowY+r.overflowX)},scrollParent:function(a,n){a=this.getRawNode(a);var r=n?i.hidden:i.normal,o=e[0].documentElement,s=t.getComputedStyle(a),l=\"absolute\"===s.position,u=a.parentElement||o;if(u===o||\"fixed\"===s.position)return o;for(;u.parentElement&&u!==o;){var p=t.getComputedStyle(u);if(l&&\"static\"!==p.position&&(l=!1),!l&&r.test(p.overflow+p.overflowY+p.overflowX))break;\r\nu=u.parentElement}return u},position:function(a,i){a=this.getRawNode(a);var n=this.offset(a);if(i){var r=t.getComputedStyle(a);n.top-=this.parseStyle(r.marginTop),n.left-=this.parseStyle(r.marginLeft)}var o=this.offsetParent(a),s={top:0,left:0};return o!==e[0].documentElement&&(s=this.offset(o),s.top+=o.clientTop-o.scrollTop,s.left+=o.clientLeft-o.scrollLeft),{width:Math.round(angular.isNumber(n.width)?n.width:a.offsetWidth),height:Math.round(angular.isNumber(n.height)?n.height:a.offsetHeight),top:Math.round(n.top-s.top),left:Math.round(n.left-s.left)}},offset:function(a){a=this.getRawNode(a);var i=a.getBoundingClientRect();return{width:Math.round(angular.isNumber(i.width)?i.width:a.offsetWidth),height:Math.round(angular.isNumber(i.height)?i.height:a.offsetHeight),top:Math.round(i.top+(t.pageYOffset||e[0].documentElement.scrollTop)),left:Math.round(i.left+(t.pageXOffset||e[0].documentElement.scrollLeft))}},viewportOffset:function(a,i,n){a=this.getRawNode(a),n=n!==!1?!0:!1;var r=a.getBoundingClientRect(),o={top:0,left:0,bottom:0,right:0},s=i?e[0].documentElement:this.scrollParent(a),l=s.getBoundingClientRect();if(o.top=l.top+s.clientTop,o.left=l.left+s.clientLeft,s===e[0].documentElement&&(o.top+=t.pageYOffset,o.left+=t.pageXOffset),o.bottom=o.top+s.clientHeight,o.right=o.left+s.clientWidth,n){var u=t.getComputedStyle(s);o.top+=this.parseStyle(u.paddingTop),o.bottom-=this.parseStyle(u.paddingBottom),o.left+=this.parseStyle(u.paddingLeft),o.right-=this.parseStyle(u.paddingRight)}return{top:Math.round(r.top-o.top),bottom:Math.round(o.bottom-r.bottom),left:Math.round(r.left-o.left),right:Math.round(o.right-r.right)}},parsePlacement:function(e){var t=n.auto.test(e);return t&&(e=e.replace(n.auto,\"\")),e=e.split(\"-\"),e[0]=e[0]||\"top\",n.primary.test(e[0])||(e[0]=\"top\"),e[1]=e[1]||\"center\",n.secondary.test(e[1])||(e[1]=\"center\"),e[2]=t?!0:!1,e},positionElements:function(e,a,i,r){e=this.getRawNode(e),a=this.getRawNode(a);var o=angular.isDefined(a.offsetWidth)?a.offsetWidth:a.prop(\"offsetWidth\"),s=angular.isDefined(a.offsetHeight)?a.offsetHeight:a.prop(\"offsetHeight\");i=this.parsePlacement(i);var l=r?this.offset(e):this.position(e),u={top:0,left:0,placement:\"\"};if(i[2]){var p=this.viewportOffset(e,r),c=t.getComputedStyle(a),d={width:o+Math.round(Math.abs(this.parseStyle(c.marginLeft)+this.parseStyle(c.marginRight))),height:s+Math.round(Math.abs(this.parseStyle(c.marginTop)+this.parseStyle(c.marginBottom)))};if(i[0]=\"top\"===i[0]&&d.height>p.top&&d.height<=p.bottom?\"bottom\":\"bottom\"===i[0]&&d.height>p.bottom&&d.height<=p.top?\"top\":\"left\"===i[0]&&d.width>p.left&&d.width<=p.right?\"right\":\"right\"===i[0]&&d.width>p.right&&d.width<=p.left?\"left\":i[0],i[1]=\"top\"===i[1]&&d.height-l.height>p.bottom&&d.height-l.height<=p.top?\"bottom\":\"bottom\"===i[1]&&d.height-l.height>p.top&&d.height-l.height<=p.bottom?\"top\":\"left\"===i[1]&&d.width-l.width>p.right&&d.width-l.width<=p.left?\"right\":\"right\"===i[1]&&d.width-l.width>p.left&&d.width-l.width<=p.right?\"left\":i[1],\"center\"===i[1])if(n.vertical.test(i[0])){var h=l.width/2-o/2;p.left+h<0&&d.width-l.width<=p.right?i[1]=\"left\":p.right+h<0&&d.width-l.width<=p.left&&(i[1]=\"right\")}else{var f=l.height/2-d.height/2;p.top+f<0&&d.height-l.height<=p.bottom?i[1]=\"top\":p.bottom+f<0&&d.height-l.height<=p.top&&(i[1]=\"bottom\")}}switch(i[0]){case\"top\":u.top=l.top-s;break;case\"bottom\":u.top=l.top+l.height;break;case\"left\":u.left=l.left-o;break;case\"right\":u.left=l.left+l.width}switch(i[1]){case\"top\":u.top=l.top;break;case\"bottom\":u.top=l.top+l.height-s;break;case\"left\":u.left=l.left;break;case\"right\":u.left=l.left+l.width-o;break;case\"center\":n.vertical.test(i[0])?u.left=l.left+l.width/2-o/2:u.top=l.top+l.height/2-s/2}return u.top=Math.round(u.top),u.left=Math.round(u.left),u.placement=\"center\"===i[1]?i[0]:i[0]+\"-\"+i[1],u},positionArrow:function(e,a){e=this.getRawNode(e);var i=e.querySelector(\".tooltip-inner, .popover-inner\");if(i){var r=angular.element(i).hasClass(\"tooltip-inner\"),o=e.querySelector(r?\".tooltip-arrow\":\".arrow\");if(o){var s={top:\"\",bottom:\"\",left:\"\",right:\"\"};if(a=this.parsePlacement(a),\"center\"===a[1])return void angular.element(o).css(s);var l=\"border-\"+a[0]+\"-width\",u=t.getComputedStyle(o)[l],p=\"border-\";p+=n.vertical.test(a[0])?a[0]+\"-\"+a[1]:a[1]+\"-\"+a[0],p+=\"-radius\";var c=t.getComputedStyle(r?i:e)[p];switch(a[0]){case\"top\":s.bottom=r?\"0\":\"-\"+u;break;case\"bottom\":s.top=r?\"0\":\"-\"+u;break;case\"left\":s.right=r?\"0\":\"-\"+u;break;case\"right\":s.left=r?\"0\":\"-\"+u}s[a[1]]=c,angular.element(o).css(s)}}}}}]),angular.module(\"ui.bootstrap.typeahead\",[\"ui.bootstrap.debounce\",\"ui.bootstrap.position\"]).factory(\"uibTypeaheadParser\",[\"$parse\",function(e){var t=/^\\s*([\\s\\S]+?)(?:\\s+as\\s+([\\s\\S]+?))?\\s+for\\s+(?:([\\$\\w][\\$\\w\\d]*))\\s+in\\s+([\\s\\S]+?)$/;return{parse:function(a){var i=a.match(t);if(!i)throw new Error('Expected typeahead specification in form of \"_modelValue_ (as _label_)? for _item_ in _collection_\" but got \"'+a+'\".');return{itemName:i[3],source:e(i[4]),viewMapper:e(i[2]||i[1]),modelMapper:e(i[1])}}}}]).controller(\"UibTypeaheadController\",[\"$scope\",\"$element\",\"$attrs\",\"$compile\",\"$parse\",\"$q\",\"$timeout\",\"$document\",\"$window\",\"$rootScope\",\"$$debounce\",\"$uibPosition\",\"uibTypeaheadParser\",function(e,t,a,i,n,r,o,s,l,u,p,c,d){function h(){R.moveInProgress||(R.moveInProgress=!0,R.$digest()),X()}function f(){R.position=F?c.offset(t):c.position(t),R.position.top+=t.prop(\"offsetHeight\")}var m,g,b=[9,13,27,38,40],y=200,v=e.$eval(a.typeaheadMinLength);v||0===v||(v=1),e.$watch(a.typeaheadMinLength,function(e){v=e||0===e?e:1});var D=e.$eval(a.typeaheadWaitMs)||0,k=e.$eval(a.typeaheadEditable)!==!1;e.$watch(a.typeaheadEditable,function(e){k=e!==!1});var w,$,M=n(a.typeaheadLoading).assign||angular.noop,x=n(a.typeaheadOnSelect),T=angular.isDefined(a.typeaheadSelectOnBlur)?e.$eval(a.typeaheadSelectOnBlur):!1,O=n(a.typeaheadNoResults).assign||angular.noop,E=a.typeaheadInputFormatter?n(a.typeaheadInputFormatter):void 0,F=a.typeaheadAppendToBody?e.$eval(a.typeaheadAppendToBody):!1,S=a.typeaheadAppendTo?e.$eval(a.typeaheadAppendTo):null,I=e.$eval(a.typeaheadFocusFirst)!==!1,C=a.typeaheadSelectOnExact?e.$eval(a.typeaheadSelectOnExact):!1,P=n(a.typeaheadIsOpen).assign||angular.noop,A=e.$eval(a.typeaheadShowHint)||!1,N=n(a.ngModel),U=n(a.ngModel+\"($$$p)\"),Y=function(t,a){return angular.isFunction(N(e))&&g&&g.$options&&g.$options.getterSetter?U(t,{$$$p:a}):N.assign(t,a)},z=d.parse(a.uibTypeahead),R=e.$new(),V=e.$on(\"$destroy\",function(){R.$destroy()});R.$on(\"$destroy\",V);var H=\"typeahead-\"+R.$id+\"-\"+Math.floor(1e4*Math.random());t.attr({\"aria-autocomplete\":\"list\",\"aria-expanded\":!1,\"aria-owns\":H});var B,W;A&&(B=angular.element(\"
\"),B.css(\"position\",\"relative\"),t.after(B),W=t.clone(),W.attr(\"placeholder\",\"\"),W.attr(\"tabindex\",\"-1\"),W.val(\"\"),W.css({position:\"absolute\",top:\"0px\",left:\"0px\",\"border-color\":\"transparent\",\"box-shadow\":\"none\",opacity:1,background:\"none 0% 0% / auto repeat scroll padding-box border-box rgb(255, 255, 255)\",color:\"#999\"}),t.css({position:\"relative\",\"vertical-align\":\"top\",\"background-color\":\"transparent\"}),B.append(W),W.after(t));var q=angular.element(\"
\");q.attr({id:H,matches:\"matches\",active:\"activeIdx\",select:\"select(activeIdx, evt)\",\"move-in-progress\":\"moveInProgress\",query:\"query\",position:\"position\",\"assign-is-open\":\"assignIsOpen(isOpen)\",debounce:\"debounceUpdate\"}),angular.isDefined(a.typeaheadTemplateUrl)&&q.attr(\"template-url\",a.typeaheadTemplateUrl),angular.isDefined(a.typeaheadPopupTemplateUrl)&&q.attr(\"popup-template-url\",a.typeaheadPopupTemplateUrl);var _=function(){A&&W.val(\"\")},j=function(){R.matches=[],R.activeIdx=-1,t.attr(\"aria-expanded\",!1),_()},G=function(e){return H+\"-option-\"+e};R.$watch(\"activeIdx\",function(e){0>e?t.removeAttr(\"aria-activedescendant\"):t.attr(\"aria-activedescendant\",G(e))});var L=function(e,t){return R.matches.length>t&&e?e.toUpperCase()===R.matches[t].label.toUpperCase():!1},K=function(a,i){var n={$viewValue:a};M(e,!0),O(e,!1),r.when(z.source(e,n)).then(function(r){var o=a===m.$viewValue;if(o&&w)if(r&&r.length>0){R.activeIdx=I?0:-1,O(e,!1),R.matches.length=0;for(var s=0;s0&&l.slice(0,a.length).toUpperCase()===a.toUpperCase()?a+l.slice(a.length):\"\")}}else j(),O(e,!0);o&&M(e,!1)},function(){j(),M(e,!1),O(e,!0)})};F&&(angular.element(l).on(\"resize\",h),s.find(\"body\").on(\"scroll\",h));var X=p(function(){R.matches.length&&f(),R.moveInProgress=!1},y);R.moveInProgress=!1,R.query=void 0;var Z,J=function(e){Z=o(function(){K(e)},D)},Q=function(){Z&&o.cancel(Z)};j(),R.assignIsOpen=function(t){P(e,t)},R.select=function(i,n){var r,s,l={};$=!0,l[z.itemName]=s=R.matches[i].model,r=z.modelMapper(e,l),Y(e,r),m.$setValidity(\"editable\",!0),m.$setValidity(\"parse\",!0),x(e,{$item:s,$model:r,$label:z.viewMapper(e,l),$event:n}),j(),R.$eval(a.typeaheadFocusOnSelect)!==!1&&o(function(){t[0].focus()},0,!1)},t.on(\"keydown\",function(t){if(0!==R.matches.length&&-1!==b.indexOf(t.which)){if(-1===R.activeIdx&&(9===t.which||13===t.which)||9===t.which&&t.shiftKey)return j(),void R.$digest();t.preventDefault();var a;switch(t.which){case 9:case 13:R.$apply(function(){angular.isNumber(R.debounceUpdate)||angular.isObject(R.debounceUpdate)?p(function(){R.select(R.activeIdx,t)},angular.isNumber(R.debounceUpdate)?R.debounceUpdate:R.debounceUpdate[\"default\"]):R.select(R.activeIdx,t)});break;case 27:t.stopPropagation(),j(),e.$digest();break;case 38:R.activeIdx=(R.activeIdx>0?R.activeIdx:R.matches.length)-1,R.$digest(),a=q.find(\"li\")[R.activeIdx],a.parentNode.scrollTop=a.offsetTop;break;case 40:R.activeIdx=(R.activeIdx+1)%R.matches.length,R.$digest(),a=q.find(\"li\")[R.activeIdx],a.parentNode.scrollTop=a.offsetTop}}}),t.bind(\"focus\",function(e){w=!0,0!==v||m.$viewValue||o(function(){K(m.$viewValue,e)},0)}),t.bind(\"blur\",function(e){T&&R.matches.length&&-1!==R.activeIdx&&!$&&($=!0,R.$apply(function(){angular.isObject(R.debounceUpdate)&&angular.isNumber(R.debounceUpdate.blur)?p(function(){R.select(R.activeIdx,e)},R.debounceUpdate.blur):R.select(R.activeIdx,e)})),!k&&m.$error.editable&&(m.$viewValue=\"\",t.val(\"\")),w=!1,$=!1});var et=function(a){t[0]!==a.target&&3!==a.which&&0!==R.matches.length&&(j(),u.$$phase||e.$digest())};s.on(\"click\",et),e.$on(\"$destroy\",function(){s.off(\"click\",et),(F||S)&&tt.remove(),F&&(angular.element(l).off(\"resize\",h),s.find(\"body\").off(\"scroll\",h)),q.remove(),A&&B.remove()});var tt=i(q)(R);F?s.find(\"body\").append(tt):S?angular.element(S).eq(0).append(tt):t.after(tt),this.init=function(t,a){m=t,g=a,R.debounceUpdate=m.$options&&n(m.$options.debounce)(e),m.$parsers.unshift(function(t){return w=!0,0===v||t&&t.length>=v?D>0?(Q(),J(t)):K(t):(M(e,!1),Q(),j()),k?t:t?void m.$setValidity(\"editable\",!1):(m.$setValidity(\"editable\",!0),null)}),m.$formatters.push(function(t){var a,i,n={};return k||m.$setValidity(\"editable\",!0),E?(n.$model=t,E(e,n)):(n[z.itemName]=t,a=z.viewMapper(e,n),n[z.itemName]=void 0,i=z.viewMapper(e,n),a!==i?a:t)})}}]).directive(\"uibTypeahead\",function(){return{controller:\"UibTypeaheadController\",require:[\"ngModel\",\"^?ngModelOptions\",\"uibTypeahead\"],link:function(e,t,a,i){i[2].init(i[0],i[1])}}}).directive(\"uibTypeaheadPopup\",[\"$$debounce\",function(e){return{scope:{matches:\"=\",query:\"=\",active:\"=\",position:\"&\",moveInProgress:\"=\",select:\"&\",assignIsOpen:\"&\",debounce:\"&\"},replace:!0,templateUrl:function(e,t){return t.popupTemplateUrl||\"uib/template/typeahead/typeahead-popup.html\"},link:function(t,a,i){t.templateUrl=i.templateUrl,t.isOpen=function(){var e=t.matches.length>0;return t.assignIsOpen({isOpen:e}),e},t.isActive=function(e){return t.active===e},t.selectActive=function(e){t.active=e},t.selectMatch=function(a,i){var n=t.debounce();angular.isNumber(n)||angular.isObject(n)?e(function(){t.select({activeIdx:a,evt:i})},angular.isNumber(n)?n:n[\"default\"]):t.select({activeIdx:a,evt:i})}}}}]).directive(\"uibTypeaheadMatch\",[\"$templateRequest\",\"$compile\",\"$parse\",function(e,t,a){return{scope:{index:\"=\",match:\"=\",query:\"=\"},link:function(i,n,r){var o=a(r.templateUrl)(i.$parent)||\"uib/template/typeahead/typeahead-match.html\";e(o).then(function(e){var a=angular.element(e.trim());n.replaceWith(a),t(a)(i)})}}}]).filter(\"uibTypeaheadHighlight\",[\"$sce\",\"$injector\",\"$log\",function(e,t,a){function i(e){return e.replace(/([.?*+^$[\\]\\\\(){}|-])/g,\"\\\\$1\")}function n(e){return/<.*>/g.test(e)}var r;return r=t.has(\"$sanitize\"),function(t,o){return!r&&n(t)&&a.warn(\"Unsafe use of typeahead please use ngSanitize\"),t=o?(\"\"+t).replace(new RegExp(i(o),\"gi\"),\"$&\"):t,r||(t=e.trustAsHtml(t)),t}}]),angular.module(\"ui.bootstrap.debounce\",[]).factory(\"$$debounce\",[\"$timeout\",function(e){return function(t,a){var i;return function(){var n=this,r=Array.prototype.slice.call(arguments);i&&e.cancel(i),i=e(function(){t.apply(n,r)},a)}}}]),angular.module(\"uib/template/datepicker/datepicker.html\",[]).run([\"$templateCache\",function(e){e.put(\"uib/template/datepicker/datepicker.html\",'
\\n \\n \\n \\n
\\n')}]),angular.module(\"uib/template/datepicker/day.html\",[]).run([\"$templateCache\",function(e){e.put(\"uib/template/datepicker/day.html\",'\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
{{::label.abbr}}
{{ weekNumbers[$index] }}\\n \\n
\\n')}]),angular.module(\"uib/template/datepicker/month.html\",[]).run([\"$templateCache\",function(e){e.put(\"uib/template/datepicker/month.html\",'\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n
\\n')}]),angular.module(\"uib/template/datepicker/popup.html\",[]).run([\"$templateCache\",function(e){e.put(\"uib/template/datepicker/popup.html\",'
\\n
    \\n
  • \\n
  • \\n \\n \\n \\n \\n \\n
  • \\n
\\n
\\n')}]),angular.module(\"uib/template/datepicker/year.html\",[]).run([\"$templateCache\",function(e){e.put(\"uib/template/datepicker/year.html\",'\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n \\n
\\n')}]),angular.module(\"uib/template/typeahead/typeahead-match.html\",[]).run([\"$templateCache\",function(e){e.put(\"uib/template/typeahead/typeahead-match.html\",'\\n')}]),angular.module(\"uib/template/typeahead/typeahead-popup.html\",[]).run([\"$templateCache\",function(e){e.put(\"uib/template/typeahead/typeahead-popup.html\",'
    \\n
  • \\n
    \\n
  • \\n
\\n')}]),angular.module(\"ui.bootstrap.datepicker\").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibDatepickerCss&&angular.element(document).find(\"head\").prepend(''),angular.$$uibDatepickerCss=!0}),angular.module(\"ui.bootstrap.position\").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibPositionCss&&angular.element(document).find(\"head\").prepend(''),angular.$$uibPositionCss=!0}),angular.module(\"ui.bootstrap.typeahead\").run(function(){!angular.$$csp().noInlineStyle&&!angular.$$uibTypeaheadCss&&angular.element(document).find(\"head\").prepend(''),angular.$$uibTypeaheadCss=!0});"],"preExistingComment":"//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJEOi9KZW5raW5zQnVpbGRzL3dvcmtzcGFjZS9NYXJpdGltZVByb2QtQnVpbGQvTWFyaXRpbWVQcm9kLUJ1aWxkL3dlYi9XZWJzaXRlL2pzL2NvbnRyb2xsZXJzL2FuYWx5dGljcy1jb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvRnJlZUNvbnRlbnRUb2dnbGVDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvVHlwZWFoZWFkQ29udHJvbGxlci5qcyIsIkQ6L0plbmtpbnNCdWlsZHMvd29ya3NwYWNlL01hcml0aW1lUHJvZC1CdWlsZC9NYXJpdGltZVByb2QtQnVpbGQvd2ViL1dlYnNpdGUvanMvc2VhcmNoL2NvbnRyb2xsZXJzL2FkdmFuY2VTZWFyY2hDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvZW1haWxSc3NDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvaGVhZGxpbmVTZWFyY2hDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvaGVhZGxpbmVUb2dnbGVDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvaW5mb3JtYURhdGVzQ29udHJvbGxlci5qcyIsIkQ6L0plbmtpbnNCdWlsZHMvd29ya3NwYWNlL01hcml0aW1lUHJvZC1CdWlsZC9NYXJpdGltZVByb2QtQnVpbGQvd2ViL1dlYnNpdGUvanMvc2VhcmNoL2NvbnRyb2xsZXJzL2luZm9ybWFGYWNldHNDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvaW5mb3JtYUZhY2V0c0RhdGFDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvaW5mb3JtYVJlc3VsdHNDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvcGFnZVNpemVDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvc2F2ZWRTZWFyY2hDb250cm9sbGVyLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvY29udHJvbGxlcnMvc29ydEJ5RGF0ZUNvbnRyb2xsZXIuanMiLCJEOi9KZW5raW5zQnVpbGRzL3dvcmtzcGFjZS9NYXJpdGltZVByb2QtQnVpbGQvTWFyaXRpbWVQcm9kLUJ1aWxkL3dlYi9XZWJzaXRlL2pzL3NlYXJjaC9mYWN0b3JpZXMvY29tcGFuaWVzRmFjdG9yeS5qcyIsIkQ6L0plbmtpbnNCdWlsZHMvd29ya3NwYWNlL01hcml0aW1lUHJvZC1CdWlsZC9NYXJpdGltZVByb2QtQnVpbGQvd2ViL1dlYnNpdGUvanMvc2VhcmNoL2ZhY3Rvcmllcy9zYXZlZFNlYXJjaEZhY3RvcnkuanMiLCJEOi9KZW5raW5zQnVpbGRzL3dvcmtzcGFjZS9NYXJpdGltZVByb2QtQnVpbGQvTWFyaXRpbWVQcm9kLUJ1aWxkL3dlYi9XZWJzaXRlL2pzL3NlYXJjaC9pbmZvcm1hU2VhcmNoQXBwLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvc2VhcmNoLmpzIiwiRDovSmVua2luc0J1aWxkcy93b3Jrc3BhY2UvTWFyaXRpbWVQcm9kLUJ1aWxkL01hcml0aW1lUHJvZC1CdWlsZC93ZWIvV2Vic2l0ZS9qcy9zZWFyY2gvdWktYm9vdHN0cmFwLWN1c3RvbS10cGxzLTEuMi40Lm1pbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7QUNLQSxTQUFTLGdCQUFnQixDQUFDLE9BQU8sRUFBRTtBQUNqQyxNQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7QUFDdkIsbUJBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztHQUMxQjs7QUFFRCxRQUFNLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLFVBQVUsR0FBRyxFQUFFO0FBQ3RELFFBQUksTUFBTSxDQUFDLFlBQVksRUFBRTtBQUN2QixxQkFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0tBQzFCO0dBQ0YsQ0FBQyxDQUFDO0NBQ0o7O0FBRUQs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QyxDQUFDLEdBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFVO0FBQUMsaUJBQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQUMsRUFBQyxVQUFTLENBQUMsRUFBQztBQUFDLFdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxTQUFTLEtBQUcsQ0FBQyxJQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxTQUFTLEtBQUcsQ0FBQyxJQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxLQUFJLENBQUMsQ0FBQyxjQUFjLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLEFBQUMsQ0FBQTtTQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxJQUFJLENBQUMsTUFBTSxLQUFJLFVBQVU7QUFBQyxTQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxJQUFFLENBQUMsQ0FBQyxVQUFVLEdBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFB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QUFDLE9BQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLElBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBQyxDQUFDLEdBQUMsMEVBQTBFLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFTLENBQUMsRUFBQztBQUFDLFNBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtPQUFDLENBQUMsQ0FBQyxDQUFBLEdBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBQyxJQUFJLENBQUE7S0FBQyxDQUFDLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBQyxTQUFTLENBQUMsRUFBQyxVQUFTLENBQUMsRUFBQztBQUFDLE9BQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLElBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsR0FBQyxDQUFDLEdBQUMsMEVBQTBFLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFTLENBQUMsRUFBQztBQUFDLFNBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsU0FBUyxLQUFHLENBQUMsSUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsU0FBUyxLQUFHLENBQUMsSUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsS0FBSSxDQUFDLENBQUMsY0FBYyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxBQUFDLENBQUE7T0FBQyxDQUFDLENBQUMsQ0FBQSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLElBQUksQ0FBQTtLQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQSxFQUFDO0FBQUMsT0FBQyxJQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsaUdBQWlHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxJQUFJLEVBQUEsR0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsU0FBQyxLQUFHLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFFLENBQUMsQ0FBQyxRQUFRLENBQUEsQUFBQyxLQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxJQUFJLEVBQUEsR0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBLEFBQUMsQ0FBQTtPQUFDLENBQUMsQ0FBQyxDQUFBO0tBQUMsTUFBSyxJQUFJLENBQUMsVUFBVSxHQUFDLElBQUksSUFBSSxFQUFBLENBQUMsQ0FBQyxDQUFDLGNBQWMsSUFBRSxDQUFDLElBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyx1R0FBdUcsQ0FBQyxFQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUMsQ0FBQyxDQUFDLGNBQWMsSUFBRSxDQUFDLENBQUMsY0FBYyxDQUFBO0dBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBQyxhQUFhLEdBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBQyxHQUFHLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBRSxDQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxLQUFDLENBQUMsUUFBUSxHQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7R0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxHQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsV0FBTyxDQUFDLEtBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBRSxDQUFDLENBQUMsWUFBWSxHQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUEsR0FBRSxDQUFDLENBQUMsQ0FBQTtHQUFDLEVBQUMsSUFBSSxDQUFDLElBQUksR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLEtBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxRQUFRLElBQUUsQ0FBQyxDQUFDLGNBQWMsRUFBQyxJQUFJLENBQUMsVUFBVSxHQUFDLENBQUMsQ0FBQyxXQUFXLElBQUUsSUFBSSxJQUFJLEVBQUEsRUFBQyxDQUFDLENBQUMsT0FBTyxHQUFDLFlBQVU7QUFBQyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUE7S0FBQyxDQUFBO0dBQUMsRUFBQyxJQUFJLENBQUMsTUFBTSxHQUFDLFlBQVU7QUFBQyxRQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO1VBQUMsQ0FBQyxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxHQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFBO0tBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO0dBQUMsRUFBQyxJQUFJLENBQUMsV0FBVyxHQUFDLFlBQVU7QUFBQyxRQUFHLElBQUksQ0FBQyxPQUFPLEVBQUM7QUFBQyxPQUFDLENBQUMsVUFBVSxHQUFDLElBQUksRUFBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUMsQ0FBQyxDQUFDLFFBQVEsS0FBRyxDQUFDLENBQUMsWUFBWSxHQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFBLEFBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBQyxDQUFDLENBQUMsSUFBRSxJQUFJLENBQUMsT0FBTyxJQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQUM7R0FBQyxFQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxRQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxJQUFJLElBQUksRUFBQSxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFDLENBQUMsSUFBRSxDQUFDLEtBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsUUFBUSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsS0FBRyxDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUUsSUFBSSxFQUFDLENBQUMsT0FBTyxDQUFDLElBQUUsQ0FBQyxLQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxVQUFVLEdBQUMsQ0FBQyxDQUFBLEFBQUMsRUFBQyxDQUFDLENBQUMsVUFBVSxJQUFFLENBQUMsS0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFHLENBQUMsQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFBLEFBQUMsRUFBQyxDQUFDLENBQUE7R0FBQyxFQUFDLElBQUksQ0FBQyxVQUFVLEdBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxXQUFPLENBQUMsQ0FBQyxRQUFRLElBQUUsSUFBSSxDQUFDLE9BQU8sSUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUMsQ0FBQyxJQUFFLElBQUksQ0FBQyxPQUFPLElBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsWUFBWSxJQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUMsY0FBYyxFQUFDLENBQUMsQ0FBQTtHQUFDLEVBQUMsSUFBSSxDQUFDLFdBQVcsR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLFdBQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUMsQ0FBQyxDQUFBO0dBQUMsRUFBQyxJQUFJLENBQUMsS0FBSyxHQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFNBQUksSUFBSSxDQUFDLEdBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxHQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtHQUFDLEVBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLFFBQUcsQ0FBQyxDQUFDLGNBQWMsS0FBRyxDQUFDLENBQUMsT0FBTyxFQUFDO0FBQUMsVUFBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUE7S0FBQyxNQUFLLENBQUMsQ0FBQyxVQUFVLEdBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQTtHQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLFFBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFFLENBQUMsQ0FBQSxBQUFDO1FBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFFLENBQUMsQ0FBQSxBQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUE7R0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxLQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsY0FBYyxLQUFHLENBQUMsQ0FBQyxPQUFPLElBQUUsQ0FBQyxLQUFHLENBQUMsSUFBRSxDQUFDLENBQUMsY0FBYyxLQUFHLENBQUMsQ0FBQyxPQUFPLElBQUUsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxLQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQSxBQUFDLENBQUE7R0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUMsRUFBQyxFQUFFLEVBQUMsT0FBTyxFQUFDLEVBQUUsRUFBQyxPQUFPLEVBQUMsRUFBRSxFQUFDLFFBQVEsRUFBQyxFQUFFLEVBQUMsVUFBVSxFQUFDLEVBQUUsRUFBQyxLQUFLLEVBQUMsRUFBRSxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLE9BQU8sRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFDLENBQUMsSUFBSSxDQUFDLEdBQUMsU0FBRixDQUFDLEdBQVc7QUFBQyxLQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0dBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLHNCQUFzQixFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxRQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFHLENBQUMsSUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBQyxLQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBQyxDQUFDLENBQUMsbUJBQW1CLElBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFDLE9BQU8sS0FBRyxDQUFDLElBQUUsT0FBTyxLQUFHLENBQUMsQ0FBQSxFQUFDO0FBQUMsVUFBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0tBQUMsTUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUUsSUFBSSxLQUFHLENBQUMsSUFBRSxNQUFNLEtBQUcsQ0FBQyxJQUFFLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQSxHQUFFLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUMsWUFBVTtBQUFDLFdBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQTtHQUFDLENBQUMsQ0FBQTtDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBQyxDQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsWUFBWSxFQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxXQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsV0FBTyxDQUFDLEtBQUcsQ0FBQyxJQUFFLENBQUMsR0FBQyxDQUFDLEtBQUcsQ0FBQyxJQUFFLENBQUMsR0FBQyxHQUFHLEtBQUcsQ0FBQyxJQUFFLENBQUMsR0FBQyxHQUFHLEtBQUcsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUE7R0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxRQUFJLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxJQUFFLENBQUMsQ0FBQSxBQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQSxHQUFFLEtBQUssQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQTtHQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsRUFBQyxFQUFDLElBQUksQ0FBQyxPQUFPLEdBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxJQUFJLEdBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxXQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBUyxHQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0dBQUMsRUFBQyxJQUFJLENBQUMsUUFBUSxHQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFNBQUksSUFBSSxDQUFDLEVBQUMsQ0FBQyxHQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLEdBQUUsQ0FBQyxHQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQTtHQUFDLEVBQUMsSUFBSSxDQUFDLFlBQVksR0FBQyxZQUFVO0FBQUMsUUFBSSxDQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUU7UUFBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7UUFBQyxDQUFDLEdBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxJQUFJLENBQUMsV0FBVyxHQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7UUFBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxJQUFJLENBQUMsR0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUMsRUFBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFHLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBQyxHQUFHLEdBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLE1BQU0sQ0FBQyxFQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUEsRUFBQztBQUFDLE9BQUMsQ0FBQyxXQUFXLEdBQUMsRUFBRSxDQUFDLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLEdBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQSxHQUFFLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUE7S0FBQztHQUFDLEVBQUMsSUFBSSxDQUFDLE9BQU8sR0FBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxRQUFJLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUFDLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUE7R0FBQyxFQUFDLElBQUksQ0FBQyxhQUFhLEdBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxRQUFJLENBQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUcsTUFBTSxLQUFHLENBQUMsRUFBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEtBQUssSUFBRyxJQUFJLEtBQUcsQ0FBQyxFQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsS0FBSyxJQUFHLE9BQU8sS0FBRyxDQUFDLEVBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxLQUFLLElBQUcsTUFBTSxLQUFHLENBQUMsRUFBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEtBQUssSUFBRyxRQUFRLEtBQUcsQ0FBQyxJQUFFLFVBQVUsS0FBRyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxJQUFFLFFBQVEsS0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFBLEFBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFBO0tBQUMsTUFBSSxNQUFNLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsS0FBSyxLQUFHLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLEVBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFBLEFBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsMEJBQTBCLEVBQUMsQ0FBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFlBQVksRUFBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsTUFBSSxDQUFDLElBQUksR0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBQyxJQUFJLENBQUMsT0FBTyxHQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsSUFBSSxHQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsV0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0dBQUMsRUFBQyxJQUFJLENBQUMsWUFBWSxHQUFDLFlBQVU7QUFBQyxTQUFJLElBQUksQ0FBQyxFQUFDLENBQUMsR0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLEVBQUUsR0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBQyxHQUFHLEdBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUE7R0FBQyxFQUFDLElBQUksQ0FBQyxPQUFPLEdBQUMsVUFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsUUFBSSxDQUFDLEdBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUFDLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQTtHQUFDLEVBQUMsSUFBSSxDQUFDLGFBQWEsR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLFFBQUksQ0FBQyxHQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsSUFBRyxNQUFNLEtBQUcsQ0FBQyxFQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsS0FBSyxJQUFHLElBQUksS0FBRyxDQUFDLEVBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxLQUFLLElBQUcsT0FBTyxLQUFHLENBQUMsRUFBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEtBQUssSUFBRyxNQUFNLEtBQUcsQ0FBQyxFQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsS0FBSyxJQUFHLFFBQVEsS0FBRyxDQUFDLElBQUUsVUFBVSxLQUFHLENBQUMsRUFBQztBQUFDLFVBQUksQ0FBQyxHQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUUsUUFBUSxLQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUEsQUFBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQUMsTUFBSSxNQUFNLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsS0FBSyxLQUFHLENBQUMsS0FBRyxDQUFDLEdBQUMsRUFBRSxDQUFBLEFBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMseUJBQXlCLEVBQUMsQ0FBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFlBQVksRUFBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxXQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxXQUFPLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUEsR0FBRSxDQUFDLEVBQUMsRUFBRSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQTtHQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsY0FBYyxHQUFDLFlBQVU7QUFBQyxLQUFDLEdBQUMsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLFFBQVEsR0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLElBQUksR0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsQ0FBQTtHQUFDLEVBQUMsSUFBSSxDQUFDLFlBQVksR0FBQyxZQUFVO0FBQUMsU0FBSSxJQUFJLENBQUMsRUFBQyxDQUFDLEdBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsUUFBUSxHQUFDLEdBQUcsR0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBQyxDQUFDLENBQUE7R0FBQyxFQUFDLElBQUksQ0FBQyxPQUFPLEdBQUMsVUFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsV0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0dBQUMsRUFBQyxJQUFJLENBQUMsYUFBYSxHQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsUUFBSSxDQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEtBQUcsQ0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLEdBQUMsSUFBSSxLQUFHLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDLE9BQU8sS0FBRyxDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQyxNQUFNLEtBQUcsQ0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLEdBQUMsUUFBUSxLQUFHLENBQUMsSUFBRSxVQUFVLEtBQUcsQ0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLFFBQVEsS0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFBLEdBQUUsQ0FBQyxHQUFDLE1BQU0sS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUMsS0FBSyxLQUFHLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFBLEFBQUMsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFDLFlBQVU7QUFBQyxTQUFNLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxxQkFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsYUFBTyxDQUFDLENBQUMsV0FBVyxJQUFFLHlDQUF5QyxDQUFBO0tBQUMsRUFBQyxLQUFLLEVBQUMsRUFBQyxjQUFjLEVBQUMsSUFBSSxFQUFDLGlCQUFpQixFQUFDLElBQUksRUFBQyxZQUFZLEVBQUMsR0FBRyxFQUFDLFdBQVcsRUFBQyxHQUFHLEVBQUMsbUJBQW1CLEVBQUMsSUFBSSxFQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsZUFBZSxFQUFDLFVBQVUsQ0FBQyxFQUFDLFVBQVUsRUFBQyx5QkFBeUIsRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLElBQUksRUFBQyxjQUFTLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFVBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FBQyxFQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBQyxZQUFVO0FBQUMsU0FBTSxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMscUJBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLGFBQU8sQ0FBQyxDQUFDLFdBQVcsSUFBRSxrQ0FBa0MsQ0FBQTtLQUFDLEVBQUMsT0FBTyxFQUFDLENBQUMsZ0JBQWdCLEVBQUMsY0FBYyxDQUFDLEVBQUMsVUFBVSxFQUFDLHdCQUF3QixFQUFDLElBQUksRUFBQyxjQUFTLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFVBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FBQyxFQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixFQUFDLFlBQVU7QUFBQyxTQUFNLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxxQkFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsYUFBTyxDQUFDLENBQUMsV0FBVyxJQUFFLG9DQUFvQyxDQUFBO0tBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxnQkFBZ0IsRUFBQyxnQkFBZ0IsQ0FBQyxFQUFDLFVBQVUsRUFBQywwQkFBMEIsRUFBQyxJQUFJLEVBQUMsY0FBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQUMsRUFBQyxDQUFBO0NBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxlQUFlLEVBQUMsWUFBVTtBQUFDLFNBQU0sRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUMsV0FBVyxFQUFDLHFCQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxhQUFPLENBQUMsQ0FBQyxXQUFXLElBQUUsbUNBQW1DLENBQUE7S0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLGdCQUFnQixFQUFDLGVBQWUsQ0FBQyxFQUFDLFVBQVUsRUFBQyx5QkFBeUIsRUFBQyxJQUFJLEVBQUMsY0FBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtLQUFDLEVBQUMsQ0FBQTtDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsb0NBQW9DLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLEVBQUMsRUFBQyxlQUFlLEVBQUMsRUFBRSxFQUFDLFlBQVksRUFBQyxDQUFDLENBQUMsRUFBQyxTQUFTLEVBQUMsT0FBTyxFQUFDLG9CQUFvQixFQUFDLENBQUMsQ0FBQyxFQUFDLFNBQVMsRUFBQyxNQUFNLEVBQUMsV0FBVyxFQUFDLE9BQU8sRUFBQyxlQUFlLEVBQUMsWUFBWSxFQUFDLDBCQUEwQixFQUFDLG9DQUFvQyxFQUFDLHFCQUFxQixFQUFDLHlDQUF5QyxFQUFDLFVBQVUsRUFBQyxFQUFDLElBQUksRUFBQyxZQUFZLEVBQUMsZ0JBQWdCLEVBQUMseUJBQXlCLEVBQUMsS0FBSyxFQUFDLFNBQVMsRUFBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLENBQUMsRUFBQyxhQUFhLEVBQUMsQ0FBQyxDQUFDLEVBQUMsU0FBUyxFQUFDLGtCQUFrQixFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsOEJBQThCLEVBQUMsQ0FBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxTQUFTLEVBQUMsV0FBVyxFQUFDLFlBQVksRUFBQyxjQUFjLEVBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQywwQkFBMEIsRUFBQyxVQUFVLEVBQUMscUJBQXFCLEVBQUMsb0NBQW9DLEVBQUMsVUFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxXQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxXQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsYUFBTSxHQUFHLEdBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFBO0tBQUMsQ0FBQyxDQUFBO0dBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDO0FBQUMsUUFBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQyxLQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBLEVBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7R0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxTQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLEFBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQSxFQUFDLE9BQU8sSUFBSSxDQUFDLElBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsQ0FBQyxJQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQTtLQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsSUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBQyxDQUFDLEdBQUMsS0FBSyxDQUFDLENBQUE7R0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsUUFBSSxDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLElBQUUsQ0FBQyxJQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBLEFBQUMsRUFBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFBLEdBQUUsQ0FBQyxDQUFDLENBQUE7R0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxRQUFHLENBQUMsQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFDO0FBQUMsVUFBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7VUFBQyxDQUFDLEdBQUMsS0FBSyxDQUFDLEtBQUcsQ0FBQyxDQUFDLFFBQVEsSUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUUsQ0FBQyxJQUFFLENBQUMsSUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVU7QUFBQyxTQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFBO09BQUMsQ0FBQyxDQUFBO0tBQUM7R0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxNQUFFLEtBQUcsQ0FBQyxDQUFDLEtBQUssSUFBRSxDQUFDLENBQUMsTUFBTSxJQUFFLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBQyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFVO0FBQUMsT0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQTtLQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUEsR0FBRSxFQUFFLEtBQUcsQ0FBQyxDQUFDLEtBQUssSUFBRSxDQUFDLENBQUMsTUFBTSxLQUFHLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBQyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFVO0FBQUMsT0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQTtLQUFDLENBQUMsQ0FBQSxBQUFDLENBQUE7R0FBQyxTQUFTLENBQUMsR0FBRTtBQUFDLFFBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBQztBQUFDLFVBQUksQ0FBQyxHQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1VBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBQyxDQUFDLENBQUMsU0FBUztVQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsR0FBRyxHQUFDLElBQUksRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLElBQUksR0FBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsc0JBQXNCLENBQUMsSUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUE7S0FBQztHQUFDLElBQUksQ0FBQztNQUFDLENBQUM7TUFBQyxDQUFDO01BQUMsQ0FBQztNQUFDLENBQUM7TUFBQyxDQUFDO01BQUMsQ0FBQztNQUFDLENBQUM7TUFBQyxDQUFDO01BQUMsQ0FBQztNQUFDLENBQUM7TUFBQyxDQUFDO01BQUMsQ0FBQztNQUFDLENBQUMsR0FBQyxFQUFFO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztNQUFDLENBQUMsR0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsR0FBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLElBQUksR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLFNBQUcsQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBRSxDQUFDLENBQUMsY0FBYyxFQUFDLENBQUMsR0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFDLENBQUMsQ0FBQyxvQkFBb0IsRUFBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsR0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsR0FBQyxDQUFDLENBQUMsWUFBWSxFQUFDLENBQUMsR0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsMEJBQTBCLENBQUMsR0FBQyxDQUFDLENBQUMsMEJBQTBCLEdBQUMsQ0FBQyxDQUFDLDBCQUEwQixFQUFDLENBQUMsR0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFDLENBQUMsQ0FBQyxxQkFBcUIsR0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUMsQ0FBQyxHQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxHQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsR0FBQyxDQUFDLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEdBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxHQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUUsQ0FBQyxHQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQSxJQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsa0JBQWtCLElBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLG9CQUFvQixFQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsVUFBSSxDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxlQUFlLENBQUMsSUFBRyxDQUFDLEtBQUcsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUEsQUFBQyxFQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQTtLQUFDLENBQUMsQ0FBQSxBQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUEsRUFBQyxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUMsSUFBRyxDQUFDLElBQUUsQ0FBQyxDQUFDLGtCQUFrQixFQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQyxDQUFDLEdBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpRUFBaUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFFBQVEsR0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxlQUFlLEtBQUcsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUMsVUFBVSxHQUFDLFNBQVMsQ0FBQSxBQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLFVBQVUsRUFBQyxNQUFNLEVBQUMsa0JBQWtCLEVBQUMsZ0JBQWdCLEVBQUMsV0FBVyxFQUFDLHFCQUFxQixFQUFDLGNBQWMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBRSxPQUFPLEtBQUcsQ0FBQyxDQUFDLElBQUksS0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFDLFNBQVMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJ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RUFBQyxDQUFDLENBQUEsSUFBRyxDQUFDLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBRyxDQUFDLENBQUMsSUFBSSxHQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxBQUFDLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxDQUFBLEFBQUMsQ0FBQTtLQUFDLENBQUMsQ0FBQSxBQUFDLEVBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxZQUFVO0FBQUMsT0FBQyxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBO0tBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFDLFlBQVU7QUFBQyxXQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUcsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLE9BQU8sSUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVU7QUFBQyxTQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFBO09BQUMsQ0FBQyxDQUFBLEFBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxHQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFBO0tBQUMsQ0FBQyxDQUFBO0dBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxHQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsV0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFDLE1BQU0sQ0FBQyxJQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUMsTUFBTSxDQUFDLENBQUE7R0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxXQUFNLE9BQU8sS0FBRyxDQUFDLEtBQUcsQ0FBQyxHQUFDLElBQUksSUFBSSxFQUFBLENBQUEsQUFBQyxFQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFDLENBQUMsQ0FBQTtHQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxXQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtHQUFDLEVBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLFdBQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUksR0FBQyxDQUFDLENBQUEsQUFBQyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBLEFBQUMsQ0FBQTtHQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLE1BQUUsS0FBRyxDQUFDLENBQUMsS0FBSyxLQUFHLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBQyxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQSxBQUFDLENBQUE7R0FBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsVUFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsU0FBRyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUMsT0FBTyxLQUFHLENBQUMsQ0FBQSxFQUFDO0FBQUMsVUFBSSxDQUFDLEdBQUMsSUFBSSxJQUFJLEVBQUEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBRSxDQUFDLEdBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQSxHQUFFLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFBO0dBQUMsRUFBQyxDQUFDLENBQUMsS0FBSyxHQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsS0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0dBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxHQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxVQUFVLElBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsS0FBQyxDQUFDLFFBQVEsR0FBQyxDQUFDLENBQUE7R0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBQyxVQUFTLENBQUMsRUFBQztBQUFDLEtBQUMsR0FBQyxDQUFDLENBQUMsUUFBUSxHQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFlBQVU7QUFBQyxPQUFDLEVBQUUsRUFBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxjQUFjLEdBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQyxDQUFDLElBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFBLEdBQUUsQ0FBQyxHQUFDLElBQUksRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUE7S0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQyxDQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUEsQUFBQyxDQUFBO0dBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUMsWUFBVTtBQUFDLEtBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7R0FBQyxDQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUMsWUFBVTtBQUFDLFNBQU0sRUFBQyxPQUFPLEVBQUMsQ0FBQyxTQUFTLEVBQUMsb0JBQW9CLENBQUMsRUFBQyxVQUFVLEVBQUMsOEJBQThCLEVBQUMsS0FBSyxFQUFDLEVBQUMsaUJBQWlCLEVBQUMsSUFBSSxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsV0FBVyxFQUFDLEdBQUcsRUFBQyxTQUFTLEVBQUMsR0FBRyxFQUFDLFNBQVMsRUFBQyxHQUFHLEVBQUMsWUFBWSxFQUFDLEdBQUcsRUFBQyxXQUFXLEVBQUMsR0FBRyxFQUFDLEVBQUMsSUFBSSxFQUFDLGNBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsVUFBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUFDLEVBQUMsQ0FBQTtDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsd0JBQXdCLEVBQUMsWUFBVTtBQUFDLFNBQU0sRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxxQkFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsYUFBTyxDQUFDLENBQUMsV0FBVyxJQUFFLG9DQUFvQyxDQUFBO0tBQUMsRUFBQyxDQUFBO0NBQUMsQ0FBQyxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMseUJBQXlCLEVBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBQyxDQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsWUFBWSxFQUFDLGVBQWUsRUFBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFdBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxRQUFJLENBQUMsR0FBQyxFQUFFO1FBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLElBQUUsR0FBRyxLQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxNQUFNLElBQUUsR0FBRyxLQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxFQUFFLENBQUEsSUFBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsRUFBRSxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQSxDQUFDLEFBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsR0FBRyxDQUFBLEdBQUUsR0FBRyxLQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFBLEFBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTtLQUFDLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQztBQUFDLFNBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEtBQUssR0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQTtPQUFDO0tBQUMsQ0FBQyxFQUFDLEVBQUMsS0FBSyxFQUFDLElBQUksTUFBTSxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFDLEdBQUcsQ0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sQ0FBQyxFQUFDLENBQUE7R0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFdBQU8sQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEtBQUcsQ0FBQyxJQUFFLENBQUMsR0FBQyxFQUFFLEdBQUMsRUFBRSxLQUFHLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsSUFBRSxDQUFDLEdBQUMsR0FBRyxLQUFHLENBQUMsSUFBRSxDQUFDLEdBQUMsR0FBRyxLQUFHLENBQUMsQ0FBQSxBQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsSUFBRSxDQUFDLEtBQUcsQ0FBQyxJQUFFLENBQUMsS0FBRyxDQUFDLElBQUUsRUFBRSxLQUFHLENBQUMsR0FBQyxFQUFFLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFBO0dBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDO0FBQUMsV0FBTyxRQUFRLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxDQUFBO0dBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFdBQU8sQ0FBQyxJQUFFLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQTtHQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxXQUFPLENBQUMsSUFBRSxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUE7R0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsUUFBSSxDQUFDLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsR0FBQyxDQUFDLENBQUMsR0FBQyxHQUFHLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQTtHQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxXQUFPLENBQUMsR0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUE7R0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLEtBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQyxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQSxBQUFDLENBQUMsQ0FBQTtHQUFDLElBQUksQ0FBQztNQUFDLENBQUM7TUFBQyxDQUFDLEdBQUMsaUNBQWlDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBQyxZQUFVO0FBQUMsS0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLE9BQU8sR0FBQyxFQUFFLEVBQUMsSUFBSSxDQUFDLFVBQVUsR0FBQyxFQUFFLEVBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQyxHQUFHLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxRQUFRLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxHQUFDLElBQUksSUFBSSxFQUFBLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLE1BQU0sQ0FBQyxDQUFBO09BQUMsRUFBQyxFQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsUUFBUSxFQUFDLEtBQUssRUFBQyxlQUFTLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDLEdBQUMsR0FBRyxDQUFBO09BQUMsRUFBQyxTQUFTLEVBQUMsbUJBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEdBQUMsSUFBSSxJQUFJLEVBQUEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxVQUFVLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxHQUFDLElBQUksSUFBSSxFQUFBLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFBO09BQUMsRUFBQyxFQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsZ0JBQWdCLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFBO09BQUMsRUFBQyxTQUFTLEVBQUMsbUJBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU0sVUFBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDO1VBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxLQUFLLEVBQUMsZUFBUyxDQUFDLEVBQUM7QUFBQyxZQUFJLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO09BQUMsRUFBQyxTQUFTLEVBQUMsbUJBQVMsQ0FBQyxFQUFDO0FBQUMsZUFBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLE1BQU0sQ0FBQyxDQUFBO09BQUMsRUFBQyxFQUFDLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQTtPQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLGVBQWUsRUFBQyxLQUFLLEVBQUMsZUFBUyxDQUFDLEVBQUM7QUFBQyxZQUFJLENBQUMsS0FBSyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUE7T0FBQyxFQUFDLFNBQVMsRUFBQyxtQkFBUyxDQUFDLEVBQUM7QUFBQyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxjQUFjLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFBO09BQUMsRUFBQyxTQUFTLEVBQUMsbUJBQVMsQ0FBQyxFQUFDO0FBQUMsZUFBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFBO09BQUMsRUFBQyxFQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsMEJBQTBCLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFNLFVBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEdBQUcsQ0FBQztVQUFBO09BQUMsRUFBQyxFQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMseUJBQXlCLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQTtPQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsS0FBSyxFQUFDLDBCQUEwQixFQUFDLEtBQUssRUFBQyxlQUFTLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDLENBQUE7T0FBQyxFQUFDLFNBQVMsRUFBQyxtQkFBUyxDQUFDLEVBQUM7QUFBQyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsTUFBTSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxTQUFTLEVBQUMsbUJBQVMsQ0FBQyxFQUFDO0FBQUMsZUFBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLE1BQU0sQ0FBQyxDQUFBO09BQUMsRUFBQyxFQUFDLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQTtPQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLHFCQUFxQixFQUFDLEtBQUssRUFBQyxlQUFTLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUE7T0FBQyxFQUFDLFNBQVMsRUFBQyxtQkFBUyxDQUFDLEVBQUM7QUFBQyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxlQUFlLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQTtPQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsS0FBSyxFQUFDLGdCQUFnQixFQUFDLEtBQUssRUFBQyxlQUFTLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUE7T0FBQyxFQUFDLFNBQVMsRUFBQyxtQkFBUyxDQUFDLEVBQUM7QUFBQyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxjQUFjLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQTtPQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUMsZUFBUyxDQUFDLEVBQUM7QUFBQyxZQUFJLENBQUMsT0FBTyxHQUFDLENBQUMsQ0FBQyxDQUFBO09BQUMsRUFBQyxTQUFTLEVBQUMsbUJBQVMsQ0FBQyxFQUFDO0FBQUMsZUFBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFBO09BQUMsRUFBQyxFQUFDLEVBQUMsR0FBRyxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMsa0JBQWtCLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLE9BQU8sR0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQTtPQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLGlCQUFpQixFQUFDLEtBQUssRUFBQyxlQUFTLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxZQUFZLEdBQUMsQ0FBQyxDQUFDLENBQUE7T0FBQyxFQUFDLFNBQVMsRUFBQyxtQkFBUyxDQUFDLEVBQUM7QUFBQyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLE9BQU8sR0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQTtPQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxHQUFHLEVBQUMsS0FBSyxFQUFDLGtCQUFrQixFQUFDLEtBQUssRUFBQyxlQUFTLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxPQUFPLEdBQUMsQ0FBQyxDQUFDLENBQUE7T0FBQyxFQUFDLFNBQVMsRUFBQyxtQkFBUyxDQUFDLEVBQUM7QUFBQyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxLQUFLLEVBQUMsZUFBUyxDQUFDLEVBQUM7QUFBQyxVQUFFLEtBQUcsSUFBSSxDQUFDLEtBQUssS0FBRyxJQUFJLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQSxBQUFDLEVBQUMsSUFBSSxLQUFHLENBQUMsS0FBRyxJQUFJLENBQUMsS0FBSyxJQUFFLEVBQUUsQ0FBQSxBQUFDLENBQUE7T0FBQyxFQUFDLFNBQVMsRUFBQyxtQkFBUyxDQUFDLEVBQUM7QUFBQyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLGVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztZQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUUsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsT0FBTyxJQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUE7T0FBQyxFQUFDLFNBQVMsRUFBQyxtQkFBUyxDQUFDLEVBQUM7QUFBQyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsR0FBRyxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxtQkFBbUIsRUFBQyxTQUFTLEVBQUMsbUJBQVMsQ0FBQyxFQUFDO0FBQUMsZUFBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFBO09BQUMsRUFBQyxFQUFDLEVBQUMsR0FBRyxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMseUJBQXlCLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQTtPQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxNQUFNLENBQUMsQ0FBQTtPQUFDLEVBQUMsRUFBQyxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFDLFNBQVMsRUFBQyxtQkFBUyxDQUFDLEVBQUM7QUFBQyxlQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUE7T0FBQyxFQUFDLEVBQUMsRUFBQyxHQUFHLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBQyxTQUFTLEVBQUMsbUJBQVMsQ0FBQyxFQUFDO0FBQUMsZUFBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxDQUFBO09BQUMsRUFBQyxFQUFDLEVBQUMsR0FBRyxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUMsU0FBUyxFQUFDLG1CQUFTLENBQUMsRUFBQztBQUFDLGVBQU8sQ0FBQyxDQUFDLENBQUMsRUFBQyxHQUFHLENBQUMsQ0FBQTtPQUFDLEVBQUMsQ0FBQyxDQUFBO0dBQUMsRUFBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxRQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEVBQUMsT0FBTSxFQUFFLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBRyxDQUFDLElBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsQ0FBQyxDQUFBLEFBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBRztRQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLElBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBRyxFQUFDLEVBQUUsQ0FBQyxDQUFBLEFBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQTtLQUFDLEVBQUMsRUFBRSxDQUFDLENBQUE7R0FBQyxFQUFDLElBQUksQ0FBQyxLQUFLLEdBQUMsVUFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFFBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxFQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxNQUFNLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBRSxLQUFHLENBQUMsSUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsT0FBTyxDQUFDLENBQUEsQUFBQyxDQUFDLElBQUksQ0FBQyxHQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLO1FBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFHO1FBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUcsQ0FBQyxJQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUM7QUFBQyxVQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBQyxDQUFDLEdBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBQyxZQUFZLEVBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxFQUFDLElBQUUsQ0FBQyxJQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFDLDhCQUE4QixDQUFDLEVBQUMsQ0FBQyxHQUFDLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLEVBQUMsWUFBWSxFQUFDLENBQUMsRUFBQyxDQUFBLEFBQUMsQ0FBQyxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsRUFBRSxFQUFDO0FBQUMsWUFBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUcsQ0FBQyxDQUFDLE9BQU8sS0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUEsQUFBQyxFQUFDLENBQUMsQ0FBQyxLQUFLLElBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO09BQUMsSUFBSSxDQUFDLEdBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVztVQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBRyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFFLENBQUMsSUFBRSxDQUFDLEdBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksRUFBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsS0FBSyxJQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxJQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxJQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsWUFBWSxJQUFFLENBQUMsQ0FBQyxDQUFBLElBQUcsQ0FBQyxHQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFBLENBQUMsQUFBQyxFQUFDLENBQUMsQ0FBQTtLQUFDO0dBQUMsRUFBQyxJQUFJLENBQUMsVUFBVSxHQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsWUFBWSxHQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxjQUFjLEdBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQyxzQkFBc0IsR0FBQyxDQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxNQUFJLENBQUMsR0FBQyxzQ0FBc0M7TUFBQyxDQUFDLEdBQUMsdUNBQXVDLENBQUMsT0FBTSxFQUFDLFFBQVEsRUFBQyxHQUFHLEVBQUMsT0FBTyxFQUFDLGlCQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxlQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsU0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsV0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQTtTQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxZQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFHLENBQUMsQ0FBQyxFQUFDO0FBQUMsY0FBSSxDQUFDLEdBQUMsU0FBRixDQUFDLENBQVUsQ0FBQyxFQUFDO0FBQUMsZ0JBQUksQ0FBQyxHQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsa0JBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFHLENBQUMsSUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFBLEdBQUUsS0FBSyxDQUFDLENBQUE7YUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGFBQWEsS0FBRyxDQUFDLEtBQUcsQ0FBQyxDQUFDLGFBQWEsSUFBRSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLGFBQWEsR0FBQyxDQUFDLENBQUEsQUFBQyxDQUFBO1dBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLEVBQUMsYUFBYSxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLEVBQUMsY0FBYyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQTtTQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO09BQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLFdBQVc7WUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLENBQUEsRUFBQztBQUFDLGNBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxVQUFTLENBQUMsRUFBQztBQUFDLGFBQUMsQ0FBQyxLQUFLLEtBQUcsQ0FBQyxLQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBQyxDQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQSxBQUFDLENBQUE7V0FBQyxDQUFDLENBQUE7U0FBQyxNQUFLLENBQUMsR0FBQyxFQUFFLENBQUE7T0FBQyxJQUFJLENBQUMsR0FBQyxFQUFFO1VBQUMsQ0FBQyxHQUFDLEVBQUU7VUFBQyxDQUFDLEdBQUMsRUFBRTtVQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7VUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7S0FBQyxFQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHVCQUF1QixFQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUMsQ0FBQyxXQUFXLEVBQUMsU0FBUyxFQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLE1BQUksQ0FBQztNQUFDLENBQUMsR0FBQyxFQUFDLE1BQU0sRUFBQyxlQUFlLEVBQUMsTUFBTSxFQUFDLHNCQUFzQixFQUFDO01BQUMsQ0FBQyxHQUFDLEVBQUMsSUFBSSxFQUFDLGNBQWMsRUFBQyxPQUFPLEVBQUMsMkJBQTJCLEVBQUMsU0FBUyxFQUFDLGtDQUFrQyxFQUFDLFFBQVEsRUFBQyxnQkFBZ0IsRUFBQyxDQUFDLE9BQU0sRUFBQyxVQUFVLEVBQUMsb0JBQVMsQ0FBQyxFQUFDO0FBQUMsYUFBTyxDQUFDLENBQUMsUUFBUSxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFBO0tBQUMsRUFBQyxVQUFVLEVBQUMsb0JBQVMsQ0FBQyxFQUFDO0FBQUMsYUFBTyxDQUFDLEdBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFBO0tBQUMsRUFBQyxZQUFZLEVBQUMsc0JBQVMsQ0FBQyxFQUFDO0FBQUMsZUFBUyxDQUFDLENBQUMsQ0FBQyxFQUFDO0FBQUMsZUFBTSxRQUFRLE1BQUksQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBRSxRQUFRLENBQUEsQUFBQyxDQUFBO09BQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsWUFBWSxJQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUMsQ0FBQyxJQUFFLENBQUMsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRSxDQUFDLEdBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFBO0tBQUMsRUFBQyxjQUFjLEVBQUMsMEJBQVU7QUFBQyxVQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxZQUFJLENBQUMsR0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG9EQUFvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBQyxDQUFDLEdBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFBO09BQUMsT0FBTyxDQUFDLENBQUE7S0FBQyxFQUFDLFlBQVksRUFBQyxzQkFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsT0FBQyxHQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLE1BQU07VUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0tBQUMsRUFBQyxZQUFZLEVBQUMsc0JBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLE9BQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxNQUFNO1VBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlO1VBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7VUFBQyxDQUFDLEdBQUMsVUFBVSxLQUFHLENBQUMsQ0FBQyxRQUFRO1VBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxhQUFhLElBQUUsQ0FBQyxDQUFDLElBQUcsQ0FBQyxLQUFHLENBQUMsSUFBRSxPQUFPLEtBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBQyxPQUFPLENBQUMsQ0FBQyxPQUFLLENBQUMsQ0FBQyxhQUFhLElBQUUsQ0FBQyxLQUFHLENBQUMsR0FBRTtBQUFDLFlBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsSUFBRSxRQUFRLEtBQUcsQ0FBQyxDQUFDLFFBQVEsS0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUEsQUFBQyxFQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsR0FBQyxDQUFDLENBQUMsU0FBUyxHQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQSxFQUFDLE1BQU07QUFDdjArQixTQUFDLEdBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQTtPQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQUMsRUFBQyxRQUFRLEVBQUMsa0JBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLE9BQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRyxDQUFDLEVBQUM7QUFBQyxZQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxJQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFBO09BQUMsSUFBSSxDQUFDLEdBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7VUFBQyxDQUFDLEdBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsQ0FBQyxPQUFPLENBQUMsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxLQUFHLENBQUMsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLElBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxJQUFJLElBQUUsQ0FBQyxDQUFDLFVBQVUsR0FBQyxDQUFDLENBQUMsVUFBVSxDQUFBLEFBQUMsRUFBQyxFQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFDLE1BQU0sRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUE7S0FBQyxFQUFDLE1BQU0sRUFBQyxnQkFBUyxDQUFDLEVBQUM7QUFBQyxPQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxDQUFDLENBQUMscUJBQXFCLEVBQUUsQ0FBQyxPQUFNLEVBQUMsS0FBSyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBRSxDQUFDLENBQUMsV0FBVyxJQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFBLEFBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUUsQ0FBQyxDQUFDLFdBQVcsSUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQSxBQUFDLENBQUMsRUFBQyxDQUFBO0tBQUMsRUFBQyxjQUFjLEVBQUMsd0JBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxPQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxxQkFBcUIsRUFBRTtVQUFDLENBQUMsR0FBQyxFQUFDLEdBQUcsRUFBQyxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUM7VUFBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7VUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLHFCQUFxQixFQUFFLENBQUMsS0FBRyxDQUFDLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsS0FBRyxDQUFDLENBQUMsR0FBRyxJQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDLElBQUksSUFBRSxDQUFDLENBQUMsV0FBVyxDQUFBLEFBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLFlBQVksRUFBQyxDQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBQyxDQUFDLENBQUEsRUFBQztBQUFDLFlBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLElBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksSUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBQyxDQUFDLENBQUMsS0FBSyxJQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFBO09BQUMsT0FBTSxFQUFDLEdBQUcsRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLE1BQU0sRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLEtBQUssRUFBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFDLENBQUE7S0FBQyxFQUFDLGNBQWMsRUFBQyx3QkFBUyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFDLEVBQUUsQ0FBQyxDQUFBLEFBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEtBQUssRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxDQUFBLEFBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLFFBQVEsRUFBQyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsUUFBUSxDQUFBLEFBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQTtLQUFDLEVBQUMsZ0JBQWdCLEVBQUMsMEJBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsT0FBQyxHQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFdBQVcsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQztVQUFDLENBQUMsR0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBQyxDQUFDLENBQUMsWUFBWSxHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7VUFBQyxDQUFDLEdBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsU0FBUyxFQUFDLEVBQUUsRUFBQyxDQUFDLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEdBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7WUFBQyxDQUFDLEdBQUMsRUFBQyxLQUFLLEVBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxLQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxHQUFHLElBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBRSxDQUFDLENBQUMsTUFBTSxHQUFDLFFBQVEsR0FBQyxRQUFRLEtBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBRSxDQUFDLENBQUMsTUFBTSxJQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUMsS0FBSyxHQUFDLE1BQU0sS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsSUFBSSxJQUFFLENBQUMsQ0FBQyxLQUFLLElBQUUsQ0FBQyxDQUFDLEtBQUssR0FBQyxPQUFPLEdBQUMsT0FBTyxLQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxLQUFLLElBQUUsQ0FBQyxDQUFDLEtBQUssSUFBRSxDQUFDLENBQUMsSUFBSSxHQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsTUFBTSxJQUFFLENBQUMsQ0FBQyxHQUFHLEdBQUMsUUFBUSxHQUFDLFFBQVEsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxHQUFHLElBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsTUFBTSxJQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUMsS0FBSyxHQUFDLE1BQU0sS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxLQUFLLElBQUUsQ0FBQyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsS0FBSyxJQUFFLENBQUMsQ0FBQyxJQUFJLEdBQUMsT0FBTyxHQUFDLE9BQU8sS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxJQUFJLElBQUUsQ0FBQyxDQUFDLEtBQUssR0FBQyxDQUFDLENBQUMsS0FBSyxJQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxRQUFRLEtBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBLEVBQUMsSUFBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQztBQUFDLGNBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBQyxDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLEtBQUssSUFBRSxDQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLEtBQUssR0FBQyxDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLEtBQUssSUFBRSxDQUFDLENBQUMsSUFBSSxLQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxPQUFPLENBQUEsQUFBQyxDQUFBO1NBQUMsTUFBSTtBQUFDLGNBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUMsQ0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLEdBQUcsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsUUFBUSxDQUFBLEFBQUMsQ0FBQTtTQUFDO09BQUMsUUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsS0FBSSxLQUFLO0FBQUMsV0FBQyxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUksUUFBUTtBQUFDLFdBQUMsQ0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSSxNQUFNO0FBQUMsV0FBQyxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUksT0FBTztBQUFDLFdBQUMsQ0FBQyxJQUFJLEdBQUMsQ0FBQyxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUMsUUFBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUUsS0FBSSxLQUFLO0FBQUMsV0FBQyxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSSxRQUFRO0FBQUMsV0FBQyxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSSxNQUFNO0FBQUMsV0FBQyxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSSxPQUFPO0FBQUMsV0FBQyxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSSxRQUFRO0FBQUMsV0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksR0FBQyxDQUFDLENBQUMsSUFBSSxHQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksR0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxDQUFDLENBQUMsU0FBUyxHQUFDLFFBQVEsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQTtLQUFDLEVBQUMsYUFBYSxFQUFDLHVCQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxPQUFDLEdBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGdDQUFnQyxDQUFDLENBQUMsSUFBRyxDQUFDLEVBQUM7QUFBQyxZQUFJLENBQUMsR0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEdBQUMsZ0JBQWdCLEdBQUMsUUFBUSxDQUFDLENBQUMsSUFBRyxDQUFDLEVBQUM7QUFBQyxjQUFJLENBQUMsR0FBQyxFQUFDLEdBQUcsRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFDLEVBQUUsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLEtBQUssRUFBQyxFQUFFLEVBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFDLFFBQVEsS0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUEsRUFBQyxPQUFPLEtBQUssT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUMsU0FBUyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxRQUFRO2NBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FBQyxDQUFDLEdBQUMsU0FBUyxDQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFFLEtBQUksS0FBSztBQUFDLGVBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxHQUFDLEdBQUcsR0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSSxRQUFRO0FBQUMsZUFBQyxDQUFDLEdBQUcsR0FBQyxDQUFDLEdBQUMsR0FBRyxHQUFDLEdBQUcsR0FBQyxDQUFDLENBQUMsTUFBTSxLQUFJLE1BQU07QUFBQyxlQUFDLENBQUMsS0FBSyxHQUFDLENBQUMsR0FBQyxHQUFHLEdBQUMsR0FBRyxHQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUksT0FBTztBQUFDLGVBQUMsQ0FBQyxJQUFJLEdBQUMsQ0FBQyxHQUFDLEdBQUcsR0FBQyxHQUFHLEdBQUMsQ0FBQyxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUFDO09BQUM7S0FBQyxFQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsTUFBTSxDQUFDLHdCQUF3QixFQUFDLENBQUMsdUJBQXVCLEVBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxvQkFBb0IsRUFBQyxDQUFDLFFBQVEsRUFBQyxVQUFTLENBQUMsRUFBQztBQUFDLE1BQUksQ0FBQyxHQUFDLHdGQUF3RixDQUFDLE9BQU0sRUFBQyxLQUFLLEVBQUMsZUFBUyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUcsQ0FBQyxDQUFDLEVBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQywrR0FBK0csR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDLENBQUMsT0FBTSxFQUFDLFFBQVEsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUE7S0FBQyxFQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLEVBQUMsQ0FBQyxRQUFRLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsUUFBUSxFQUFDLElBQUksRUFBQyxVQUFVLEVBQUMsV0FBVyxFQUFDLFNBQVMsRUFBQyxZQUFZLEVBQUMsWUFBWSxFQUFDLGNBQWMsRUFBQyxvQkFBb0IsRUFBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFdBQVMsQ0FBQyxHQUFFO0FBQUMsS0FBQyxDQUFDLGNBQWMsS0FBRyxDQUFDLENBQUMsY0FBYyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQSxBQUFDLEVBQUMsQ0FBQyxFQUFFLENBQUE7R0FBQyxTQUFTLENBQUMsR0FBRTtBQUFDLEtBQUMsQ0FBQyxRQUFRLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0dBQUMsSUFBSSxDQUFDO01BQUMsQ0FBQztNQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7TUFBQyxDQUFDLEdBQUMsR0FBRztNQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEtBQUcsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLENBQUEsQUFBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixFQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsS0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUE7R0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUUsQ0FBQztNQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsS0FBQyxHQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsQ0FBQTtHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7TUFBQyxDQUFDO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxNQUFNLElBQUUsT0FBTyxDQUFDLElBQUk7TUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztNQUFDLENBQUMsR0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEdBQUMsQ0FBQyxDQUFDO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLElBQUUsT0FBTyxDQUFDLElBQUk7TUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLHVCQUF1QixHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsR0FBQyxLQUFLLENBQUM7TUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLHFCQUFxQixHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEdBQUMsQ0FBQyxDQUFDO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxpQkFBaUIsR0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFDLElBQUk7TUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsS0FBRyxDQUFDLENBQUM7TUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLHNCQUFzQixHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLEdBQUMsQ0FBQyxDQUFDO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsTUFBTSxJQUFFLE9BQU8sQ0FBQyxJQUFJO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLElBQUUsQ0FBQyxDQUFDO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFDLFFBQVEsQ0FBQztNQUFDLENBQUMsR0FBQyxTQUFGLENBQUMsQ0FBVSxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsV0FBTyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsSUFBRSxDQUFDLENBQUMsUUFBUSxJQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsWUFBWSxHQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQTtHQUFDO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztNQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO01BQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFDLFlBQVU7QUFBQyxLQUFDLENBQUMsUUFBUSxFQUFFLENBQUE7R0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUMsWUFBWSxHQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUMsR0FBRyxHQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBQyxtQkFBbUIsRUFBQyxNQUFNLEVBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFDLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFDLElBQUksQ0FBQyxFQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLFFBQVEsRUFBQyxVQUFVLEVBQUMsR0FBRyxFQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLGNBQWMsRUFBQyxhQUFhLEVBQUMsWUFBWSxFQUFDLE1BQU0sRUFBQyxPQUFPLEVBQUMsQ0FBQyxFQUFDLFVBQVUsRUFBQywyRUFBMkUsRUFBQyxLQUFLLEVBQUMsTUFBTSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxnQkFBZ0IsRUFBQyxLQUFLLEVBQUMsa0JBQWtCLEVBQUMsYUFBYSxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUEsQUFBQyxDQUFDLElBQUksQ0FBQyxHQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsaUNBQWlDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sRUFBQyxXQUFXLEVBQUMsTUFBTSxFQUFDLHdCQUF3QixFQUFDLGtCQUFrQixFQUFDLGdCQUFnQixFQUFDLEtBQUssRUFBQyxPQUFPLEVBQUMsUUFBUSxFQUFDLFVBQVUsRUFBQyxnQkFBZ0IsRUFBQyxzQkFBc0IsRUFBQyxRQUFRLEVBQUMsZ0JBQWdCLEVBQUMsQ0FBQyxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLElBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLEVBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsSUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFDLFNBQUYsQ0FBQyxHQUFXO0FBQUMsS0FBQyxJQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUE7R0FBQztNQUFDLENBQUMsR0FBQyxTQUFGLENBQUMsR0FBVztBQUFDLEtBQUMsQ0FBQyxPQUFPLEdBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsQ0FBQTtHQUFDO01BQUMsQ0FBQyxHQUFDLFNBQUYsQ0FBQyxDQUFVLENBQUMsRUFBQztBQUFDLFdBQU8sQ0FBQyxHQUFDLFVBQVUsR0FBQyxDQUFDLENBQUE7R0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsS0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUFDLEdBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBQyxTQUFGLENBQUMsQ0FBVSxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsV0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDO01BQUMsQ0FBQyxHQUFDLFNBQUYsQ0FBQyxDQUFVLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxRQUFJLENBQUMsR0FBQyxFQUFDLFVBQVUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxJQUFHLENBQUMsSUFBRSxDQUFDLEVBQUMsSUFBRyxDQUFDLElBQUUsQ0FBQyxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUM7QUFBQyxTQUFDLENBQUMsU0FBUyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFDLENBQUMsQ0FBQyxLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLEtBQUssR0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLElBQUUsQ0FBQyxLQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLEtBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFlBQVU7QUFBQyxXQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQTtTQUFDLEVBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEdBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUEsQUFBQyxFQUFDLENBQUMsQ0FBQSxFQUFDO0FBQUMsY0FBSSxDQUFDLEdBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFDLEVBQUUsQ0FBQyxDQUFBO1NBQUM7T0FBQyxNQUFLLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQUMsRUFBQyxZQUFVO0FBQUMsT0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUFDLENBQUMsQ0FBQTtHQUFDLENBQUMsQ0FBQyxLQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUEsQUFBQyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxZQUFVO0FBQUMsS0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUUsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsR0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsS0FBSyxHQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztNQUFDLENBQUMsR0FBQyxTQUFGLENBQUMsQ0FBVSxDQUFDLEVBQUM7QUFBQyxLQUFDLEdBQUMsQ0FBQyxDQUFDLFlBQVU7QUFBQyxPQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFBO0dBQUM7TUFBQyxDQUFDLEdBQUMsU0FBRixDQUFDLEdBQVc7QUFBQyxLQUFDLElBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLFlBQVksR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLEtBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUE7R0FBQyxFQUFDLENBQUMsQ0FBQyxNQUFNLEdBQUMsVUFBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsUUFBSSxDQUFDO1FBQUMsQ0FBQztRQUFDLENBQUMsR0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsQ0FBQyxFQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxNQUFNLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFHLENBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxZQUFVO0FBQUMsT0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO0tBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEVBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxRQUFHLENBQUMsS0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBRSxDQUFDLENBQUMsS0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBQztBQUFDLFVBQUcsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLFNBQVMsS0FBRyxDQUFDLEtBQUcsQ0FBQyxDQUFDLEtBQUssSUFBRSxFQUFFLEtBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQSxBQUFDLElBQUUsQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFLLElBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBQyxPQUFPLENBQUMsRUFBRSxFQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUUsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFO0FBQUMsV0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFVO0FBQUMsbUJBQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxZQUFVO0FBQUMsZUFBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFBO2FBQUMsRUFBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBQyxDQUFDLENBQUMsY0FBYyxHQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLENBQUE7V0FBQyxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUU7QUFBQyxXQUFDLENBQUMsZUFBZSxFQUFFLEVBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sS0FBSyxFQUFFO0FBQUMsV0FBQyxDQUFDLFNBQVMsR0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUEsR0FBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxFQUFFO0FBQUMsV0FBQyxDQUFDLFNBQVMsR0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUMsQ0FBQyxDQUFBLEdBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBQyxDQUFDLENBQUMsU0FBUyxDQUFBLENBQUM7S0FBQztHQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBQyxVQUFTLENBQUMsRUFBQztBQUFDLEtBQUMsR0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUcsQ0FBQyxJQUFFLENBQUMsQ0FBQyxVQUFVLElBQUUsQ0FBQyxDQUFDLFlBQVU7QUFBQyxPQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQTtLQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUE7R0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxLQUFDLElBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUUsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLFNBQVMsSUFBRSxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFVO0FBQUMsYUFBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxZQUFVO0FBQUMsU0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFDLENBQUMsQ0FBQyxDQUFBO09BQUMsRUFBQyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBQyxDQUFDLENBQUMsQ0FBQTtLQUFDLENBQUMsQ0FBQSxBQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUcsQ0FBQyxDQUFDLFVBQVUsR0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQSxBQUFDLEVBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQTtHQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBQyxTQUFILEVBQUUsQ0FBVSxDQUFDLEVBQUM7QUFBQyxLQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBRSxDQUFDLEtBQUcsQ0FBQyxDQUFDLEtBQUssSUFBRSxDQUFDLEtBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEtBQUcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUEsQUFBQyxDQUFBO0dBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBQyxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBQyxZQUFVO0FBQUMsS0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUMsRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFBLElBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFDLENBQUMsS0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFDLENBQUMsQ0FBQyxDQUFBLEFBQUMsRUFBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtHQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFDLENBQUMsR0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsRUFBQyxJQUFJLENBQUMsSUFBSSxHQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLEtBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsY0FBYyxHQUFDLENBQUMsQ0FBQyxRQUFRLElBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxhQUFPLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEtBQUcsQ0FBQyxJQUFFLENBQUMsSUFBRSxDQUFDLENBQUMsTUFBTSxJQUFFLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQSxHQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxFQUFFLENBQUEsQUFBQyxFQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQSxBQUFDLENBQUE7S0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUM7VUFBQyxDQUFDO1VBQUMsQ0FBQyxHQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFBLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUMsS0FBSyxDQUFDLEVBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQSxBQUFDLENBQUE7S0FBQyxDQUFDLENBQUE7R0FBQyxDQUFBO0NBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBQyxZQUFVO0FBQUMsU0FBTSxFQUFDLFVBQVUsRUFBQyx3QkFBd0IsRUFBQyxPQUFPLEVBQUMsQ0FBQyxTQUFTLEVBQUMsa0JBQWtCLEVBQUMsY0FBYyxDQUFDLEVBQUMsSUFBSSxFQUFDLGNBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsT0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FBQyxFQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFDLENBQUMsWUFBWSxFQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsU0FBTSxFQUFDLEtBQUssRUFBQyxFQUFDLE9BQU8sRUFBQyxHQUFHLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsR0FBRyxFQUFDLFFBQVEsRUFBQyxHQUFHLEVBQUMsY0FBYyxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsR0FBRyxFQUFDLFlBQVksRUFBQyxHQUFHLEVBQUMsUUFBUSxFQUFDLEdBQUcsRUFBQyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUMsRUFBQyxXQUFXLEVBQUMscUJBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLGFBQU8sQ0FBQyxDQUFDLGdCQUFnQixJQUFFLDZDQUE2QyxDQUFBO0tBQUMsRUFBQyxJQUFJLEVBQUMsY0FBUyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLE9BQUMsQ0FBQyxXQUFXLEdBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBQyxDQUFDLENBQUMsTUFBTSxHQUFDLFlBQVU7QUFBQyxZQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxDQUFBO09BQUMsRUFBQyxDQUFDLENBQUMsUUFBUSxHQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsZUFBTyxDQUFDLENBQUMsTUFBTSxLQUFHLENBQUMsQ0FBQTtPQUFDLEVBQUMsQ0FBQyxDQUFDLFlBQVksR0FBQyxVQUFTLENBQUMsRUFBQztBQUFDLFNBQUMsQ0FBQyxNQUFNLEdBQUMsQ0FBQyxDQUFBO09BQUMsRUFBQyxDQUFDLENBQUMsV0FBVyxHQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFlBQUksQ0FBQyxHQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFlBQVU7QUFBQyxXQUFDLENBQUMsTUFBTSxDQUFDLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxHQUFHLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQTtTQUFDLEVBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsR0FBRyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUE7T0FBQyxDQUFBO0tBQUMsRUFBQyxDQUFBO0NBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLG1CQUFtQixFQUFDLENBQUMsa0JBQWtCLEVBQUMsVUFBVSxFQUFDLFFBQVEsRUFBQyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDO0FBQUMsU0FBTSxFQUFDLEtBQUssRUFBQyxFQUFDLEtBQUssRUFBQyxHQUFHLEVBQUMsS0FBSyxFQUFDLEdBQUcsRUFBQyxLQUFLLEVBQUMsR0FBRyxFQUFDLEVBQUMsSUFBSSxFQUFDLGNBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxVQUFJLENBQUMsR0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBRSw2Q0FBNkMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsWUFBSSxDQUFDLEdBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLENBQUMsQ0FBQTtLQUFDLEVBQUMsQ0FBQTtDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBQyxDQUFDLE1BQU0sRUFBQyxXQUFXLEVBQUMsTUFBTSxFQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxXQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxXQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUMsTUFBTSxDQUFDLENBQUE7R0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUM7QUFBQyxXQUFNLFFBQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO01BQUE7R0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFDLFVBQVMsQ0FBQyxFQUFDLENBQUMsRUFBQztBQUFDLFdBQU0sQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsK0NBQStDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsRUFBRSxHQUFDLENBQUMsQ0FBQSxDQUFFLE9BQU8sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLEVBQUMscUJBQXFCLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFBLEFBQUMsRUFBQyxDQUFDLENBQUE7R0FBQyxDQUFBO0NBQUMsQ0FBQyxDQUFDLEVBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyx1QkFBdUIsRUFBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFDLENBQUMsVUFBVSxFQUFDLFVBQVMsQ0FBQyxFQUFDO0FBQUMsU0FBTyxVQUFTLENBQUMsRUFBQyxDQUFDLEVBQUM7QUFBQyxRQUFJLENBQUMsQ0FBQyxPQUFPLFlBQVU7QUFBQyxVQUFJLENBQUMsR0FBQyxJQUFJO1VBQUMsQ0FBQyxHQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFlBQVU7QUFBQyxTQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQTtPQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUE7S0FBQyxDQUFBO0dBQUMsQ0FBQTtDQUFDLENBQUMsQ0FBQyxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMseUNBQXlDLEVBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLEVBQUMsVUFBUyxDQUFDLEVBQUM7QUFBQyxHQUFDLENBQUMsR0FBRyxDQUFDLHlDQUF5QyxFQUFDLDJVQUEyVSxDQUFDLENBQUE7Q0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxFQUFDLEVBQUUsQ0FBQyxDQUFD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e2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCIvLyAqICogKlxyXG4vLyAgQU5BTFlUSUNTIENPTlRST0xMRVJcclxuLy8gIEZvciBlYXNlLW9mLXVzZSwgYmV0dGVyIERSWSwgYmV0dGVyIHByZXZlbnRpb24gb2YgSlMgZXJyb3JzIHdoZW4gYWRzIGFyZSBibG9ja2VkXHJcbi8vICogKiAqXHJcblxyXG5mdW5jdGlvbiB0cmFja0J1c2luZXNzRXZ0KGRhdGFPYmopIHtcclxuICBpZiAod2luZG93LklJUklTVHJhY2tlcikge1xyXG4gICAgcHVzaEJ1c2luZXNzRXZ0KGRhdGFPYmopO1xyXG4gIH1cclxuXHJcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJ0cmFja2VyTG9hZGVkXCIsIGZ1bmN0aW9uIChldnQpIHtcclxuICAgIGlmICh3aW5kb3cuSUlSSVNUcmFja2VyKSB7XHJcbiAgICAgIHB1c2hCdXNpbmVzc0V2dChkYXRhT2JqKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHVzaEJ1c2luZXNzRXZ0KGRhdGFPYmopIHtcclxuICB2YXIgZG5vdyA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcclxuICB2YXIgYXNzZXRQYXRoQXJyID0gZGF0YU9iai5hc3NldF91cmwgPyBkYXRhT2JqLmFzc2V0X3VybC5zcGxpdChcIi9cIikgOiBbXCJcIl07XHJcbiAgdmFyIGZpbGVuYW1lID0gYXNzZXRQYXRoQXJyW2Fzc2V0UGF0aEFyci5sZW5ndGggLSAxXTtcclxuICB2YXIgb2JqMSA9IHtcclxuICAgIGVudGl0eUlkOiBkYXRhT2JqLmFzc2V0X25hbWUgfHwgXCJcIixcclxuICAgIHRyYW5zYWN0aW9uSWQ6IGNyZWF0ZV9VVUlEKCksXHJcbiAgICBzdGF0dXM6IFwic3VjY2Vzc1wiLFxyXG4gICAgdHlwZTogXCJkb3dubG9hZFwiLFxyXG4gICAgdHM6IGRub3csXHJcbiAgfTtcclxuICB2YXIgb2JqMiA9IHtcclxuICAgIGlkOiBkYXRhT2JqLmFzc2V0X25hbWUgfHwgXCJcIixcclxuICAgIG5hbWU6IGZpbGVuYW1lLFxyXG4gICAgdHlwZTogZGF0YU9iai5hc3NldF9maWxlX3R5cGUgfHwgXCJcIixcclxuICAgIHNpemU6IGRhdGFPYmouYXNzZXRfc2l6ZSB8fCBcIlwiLFxyXG4gICAgdXJsOiBkYXRhT2JqLmFzc2V0X3VybCB8fCBcIlwiLFxyXG4gICAgY3JlYXRlZDogZGF0YU9iai5hc3NldF9jcmVhdGVkIHx8IFwiXCIsXHJcbiAgICBsYXN0VXBkYXRlZDogZGF0YU9iai5hc3NldF9tb2RpZmllZCB8fCBcIlwiLFxyXG4gICAgdGFnczogZGF0YU9iai5hcnRpY2xlX251bWJlciB8fCBcIlwiLFxyXG4gIH07XHJcbiAgLy8gICBjb25zb2xlLmxvZyhcIm9iajFcIiwgb2JqMSk7XHJcbiAgLy8gICBjb25zb2xlLmxvZyhcIm9iajJcIiwgb2JqMik7XHJcbiAgd2luZG93LklJUklTVHJhY2tlci50cmFja0J1c2luZXNzRXZ0KG9iajEsIG9iajIpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVfVVVJRCgpe1xyXG4gICAgdmFyIGR0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICB2YXIgdXVpZCA9ICd4eHh4eHh4eC14eHh4LTR4eHgteXh4eC14eHh4eHh4eHh4eHgnLnJlcGxhY2UoL1t4eV0vZywgZnVuY3Rpb24oYykge1xyXG4gICAgICAgIHZhciByID0gKGR0ICsgTWF0aC5yYW5kb20oKSoxNiklMTYgfCAwO1xyXG4gICAgICAgIGR0ID0gTWF0aC5mbG9vcihkdC8xNik7XHJcbiAgICAgICAgcmV0dXJuIChjPT0neCcgPyByIDoociYweDN8MHg4KSkudG9TdHJpbmcoMTYpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdXVpZDtcclxufVxyXG5cclxuZnVuY3Rpb24gYW5hbHl0aWNzRXZlbnQoZGF0YU9iaikge1xyXG4gIGlmICh0eXBlb2YgdXRhZyAhPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgdXRhZy5saW5rKGRhdGFPYmopO1xyXG4gIH1cclxuICBpZiAoZGF0YU9iai5ldmVudF9uYW1lID09PSBcImRvd25sb2FkX2Fzc2V0XCIpIHtcclxuICAgIHRyYWNrQnVzaW5lc3NFdnQoZGF0YU9iaik7XHJcbiAgfVxyXG59O1xyXG5cclxuZXhwb3J0IHsgYW5hbHl0aWNzRXZlbnQgfTtcclxuIiwi77u/LyogZ2xvYmFsIGFuYWx5dGljc19kYXRhICovXHJcbmltcG9ydCB7IGFuYWx5dGljc0V2ZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbGxlcnMvYW5hbHl0aWNzLWNvbnRyb2xsZXInO1xyXG5cclxudmFyIEZyZWVDb250ZW50VG9nZ2xlQ29udHJvbGxlciA9IGZ1bmN0aW9uICgkbG9jYXRpb24sIHNlYXJjaFNlcnZpY2UsIHNlYXJjaEJvb3RzdHJhcHBlciwkdGltZW91dCkge1xyXG4gIFwidXNlIHN0cmljdFwiO1xyXG5cclxuICB0aGlzLnNlYXJjaFNlcnZpY2UgPSBzZWFyY2hTZXJ2aWNlO1xyXG4gIHRoaXMuc2VhcmNoQm9vdHN0cmFwcGVyID0gc2VhcmNoQm9vdHN0cmFwcGVyO1xyXG4gIHRoaXMubG9jYXRpb24gPSAkbG9jYXRpb247XHJcbiAgXHJcbiAgdGhpcy51cGRhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIGFuYWx5dGljc0V2ZW50KCQuZXh0ZW5kKGFuYWx5dGljc19kYXRhLCB7XHJcbiAgICAgICAgZXZlbnRfbmFtZTogJ2VudGl0bGVtZW50X3RvZ2dsZSdcclxuICAgIH0pKTtcclxuICAgICAgLy9DcmVhdGUgc2hvd0ZyZWVjb250ZW50IEZpbHRlciBpZiBub3QgZXhpc3RcclxuICAgICAgdmFyIGZpbHRlciA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRGaWx0ZXIoJ2VudGl0bGVkY29udGVudG9ubHknKTtcclxuICAgICAgaWYgKCFmaWx0ZXIpIHtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoQm9vdHN0cmFwcGVyLmNyZWF0ZUZpbHRlcignZW50aXRsZWRjb250ZW50b25seScsICcxJyk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoZmlsdGVyLl92YWx1ZSA9PT0gJzEnKSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyLnNldFZhbHVlKCcnKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZmlsdGVyLnNldFZhbHVlKCcxJyk7XHJcbiAgICAgICAgICAgICAgLy9BbmFseXRpY3MgZXZlbnQgdHJhY2tpbmdcclxuICAgICAgICAgICAgICBhbmFseXRpY3NFdmVudCgkLmV4dGVuZChhbmFseXRpY3NfZGF0YSwge1xyXG4gICAgICAgICAgICAgICAgICBldmVudF9uYW1lOiAnZW50aXRsZW1lbnRfdG9nZ2xlJyxcclxuICAgICAgICAgICAgICAgICAgc2VhcmNoX3V0aWxpdHk6ICdzaG93X2ZyZWVfY29udGVudCdcclxuICAgICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5faXNOZXdTZWFyY2ggPSB0cnVlO1xyXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKCdwYWdlJykuc2V0VmFsdWUoXCIxXCIpO1xyXG5cclxuICAgICAgdmFyIHJvdXRlckJ1aWxkZXIgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0Um91dGVCdWlsZGVyKCk7XHJcbiAgICAgIHZhciBzZWFyY2hSZXN1bHRzID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFJlc3VsdHMoKTtcclxuICAgICAgaWYgKHNlYXJjaFJlc3VsdHMpIHtcclxuICAgICAgICBpZiAoc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb24uc2VhcmNoKHJvdXRlckJ1aWxkZXIuZ2V0Um91dGUoKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgaWYgKGFuZ3VsYXIuZWxlbWVudChkb2N1bWVudC5ib2R5KS5oYXNDbGFzcygndGhlbWUtb21kaWEnKSkge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnNlYXJjaChcInE9XCIgKyB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKCdxJykgKyBcIiZwYWdlPTEmc29ydEJ5PXJlbGV2YW5jZSZzb3J0T3JkZXI9ZGVzY1wiKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9jYXRpb24uc2VhcmNoKFwicT1cIiArIHRoaXMuc2VhcmNoU2VydmljZS5nZXRGaWx0ZXIoJ3EnKSArIFwiJnBhZ2U9MSZzb3J0Qnk9ZGF0ZSZzb3J0T3JkZXI9ZGVzY1wiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5sb2NhdGlvbi5zZWFyY2gocm91dGVyQnVpbGRlci5nZXRSb3V0ZSgpKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNlYXJjaFNlcnZpY2UucXVlcnkoKTtcclxuICB9O1xyXG5cclxuICB0aGlzLmluaXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKCdlbnRpdGxlZGNvbnRlbnRvbmx5Jyk7XHJcbiAgICAgIHJldHVybiBmaWx0ZXIgIT09IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG59O1xyXG52YXIgaW5mb3JtYVNlYXJjaEFwcCA9IGFuZ3VsYXIubW9kdWxlKCdpbmZvcm1hU2VhcmNoQXBwJyk7XHJcbmluZm9ybWFTZWFyY2hBcHAuY29udHJvbGxlcihcIkZyZWVDb250ZW50VG9nZ2xlQ29udHJvbGxlclwiLCBbJyRsb2NhdGlvbicsICdzZWFyY2hTZXJ2aWNlJywgJ3NlYXJjaEJvb3RzdHJhcHBlcicsICckdGltZW91dCcsIEZyZWVDb250ZW50VG9nZ2xlQ29udHJvbGxlcl0pO1xyXG4iLCIvKiBnbG9iYWwgYW5ndWxhciAqL1xyXG5cclxuLy8gc2V0IHVwIGNvbnRyb2xsZXIgYW5kIHBhc3MgZGF0YSBzb3VyY2VcclxuLy8gbm90ZTogYSBjb250cm9sbGVyIGlzIHVzdWFsbHkgZGVzdHJveWVkICYgcmVjcmVhdGVkIHdoZW4gdGhlIHJvdXRlIGNoYW5nZXNcclxudmFyIEluZm9ybWFUeXBlYWhlYWRDb250cm9sbGVyID0gZnVuY3Rpb24oJHNjb3BlLCBnZXRDb21wYW5pZXNTZXJ2aWNlKSB7XHJcblxyXG4gICAgJHNjb3BlLiR3YXRjaCgncGFnZUlkJywgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgZ2V0Q29tcGFuaWVzU2VydmljZS5mZXRjaENvbXBhbmllcygkc2NvcGUucGFnZUlkKS50aGVuKGZ1bmN0aW9uKHJlc3BvbnNlKSB7XHJcblxyXG4gICAgICAgICAgICB2YXIgY29tcGFuaWVzID0gW107XHJcbiAgICAgICAgICAgIGNvbXBhbmllcyA9ICQubWFwKHJlc3BvbnNlLmRhdGEsIGZ1bmN0aW9uKHZhbHVlLCBpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmNvbXBhbnlOYW1lO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICRzY29wZS5jb21wYW5pZXMgPSBjb21wYW5pZXM7XHJcblxyXG4gICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uKHJlYXNvbikge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZWFzb24pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbn07XHJcblxyXG52YXIgaW5mb3JtYVNlYXJjaEFwcCA9IGFuZ3VsYXIubW9kdWxlKCdpbmZvcm1hU2VhcmNoQXBwJyk7XHJcbmluZm9ybWFTZWFyY2hBcHAuY29udHJvbGxlcihcIkluZm9ybWFUeXBlYWhlYWRDb250cm9sbGVyXCIsIFsnJHNjb3BlJywgJ2dldENvbXBhbmllc1NlcnZpY2UnLCBJbmZvcm1hVHlwZWFoZWFkQ29udHJvbGxlcl0pOyIsIu+7v2ltcG9ydCB7IGFuYWx5dGljc0V2ZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbGxlcnMvYW5hbHl0aWNzLWNvbnRyb2xsZXInO1xyXG52YXIgQWR2YW5jZVNlYXJjaENvbnRyb2xsZXIgPSBmdW5jdGlvbiAoJHJvb3RTY29wZSwgJGxvY2F0aW9uLCBzZWFyY2hTZXJ2aWNlLCBzZWFyY2hCb290c3RyYXBwZXIpIHtcclxuICBcInVzZSBzdHJpY3RcIjtcclxuICB2YXIgdm0gPSB0aGlzO1xyXG4gIHZtLnNlYXJjaFNlcnZpY2UgPSBzZWFyY2hTZXJ2aWNlO1xyXG4gIHZtLnNlYXJjaEJvb3RzdHJhcHBlciA9IHNlYXJjaEJvb3RzdHJhcHBlcjtcclxuICB2bS5sb2NhdGlvbiA9ICRsb2NhdGlvbjtcclxuICB2bS5oZWFkbGluZXNPbmx5ID0gbnVsbDtcclxuICB2bS5lbnRpdGxlZENvbnRlbnRPbmx5ID0gbnVsbDtcclxuICB2bS5leGFjdE1hdGNoT25seSA9IG51bGw7XHJcbiAgdm0uc2VhcmNoUGFyYW1zID0gdm0ubG9jYXRpb24uc2VhcmNoKCk7XHJcbiAgdm0ucm91dGVyQnVpbGRlciA9IHZtLnNlYXJjaFNlcnZpY2UuZ2V0Um91dGVCdWlsZGVyKCk7XHJcbiAgdm0uc2VhcmNoSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImpzLXNlYXJjaC1maWVsZFwiKTtcclxuXHJcbiAgaWYodm0uc2VhcmNoUGFyYW1zKSB7XHJcbiAgICBfLmZvckluKHZtLnNlYXJjaFBhcmFtcywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xyXG4gICAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICAgIGNhc2UgJ2hlYWRsaW5lc09ubHknOlxyXG4gICAgICAgICAgdm0uaGVhZGxpbmVzT25seSA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdlbnRpdGxlZGNvbnRlbnRvbmx5JzpcclxuICAgICAgICAgIHZtLmVudGl0bGVkQ29udGVudE9ubHkgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnZXhhY3RtYXRjaG9ubHknOlxyXG4gICAgICAgICAgdm0uZXhhY3RNYXRjaE9ubHkgPSB0cnVlO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHZtLnVwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBuZXdQYXJhbXMgPSB2bS5sb2NhdGlvbi5zZWFyY2goKSxcclxuICAgICAgICBmaWx0ZXJRdWVyeSA9IHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKCdxJykuX3ZhbHVlLFxyXG4gICAgICAgIG5ld1NlYXJjaElucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJqcy1zZWFyY2gtZmllbGRcIikudmFsdWU7XHJcbiAgICAgICAgXHJcbiAgICBpZih2bS5oZWFkbGluZXNPbmx5KSB7XHJcbiAgICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlci5jcmVhdGVGaWx0ZXIoJ2hlYWRsaW5lc09ubHknLCAnMScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdm0uc2VhcmNoQm9vdHN0cmFwcGVyLmNyZWF0ZUZpbHRlcignaGVhZGxpbmVzT25seScsICcnKTtcclxuICAgIH1cclxuICAgIGlmKHZtLmVudGl0bGVkQ29udGVudE9ubHkpe1xyXG4gICAgICB2bS5zZWFyY2hCb290c3RyYXBwZXIuY3JlYXRlRmlsdGVyKCdlbnRpdGxlZGNvbnRlbnRvbmx5JywgJzEnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlci5jcmVhdGVGaWx0ZXIoJ2VudGl0bGVkY29udGVudG9ubHknLCAnJyk7XHJcbiAgICB9XHJcbiAgICBpZih2bS5leGFjdE1hdGNoT25seSl7XHJcbiAgICAgIGlmKGZpbHRlclF1ZXJ5ICYmIGZpbHRlclF1ZXJ5WzBdICE9PSAnXCInICYmIGZpbHRlclF1ZXJ5W2ZpbHRlclF1ZXJ5Lmxlbmd0aCAtIDFdICE9PSAnXCInKSB7XHJcbiAgICAgICAgdm0uc2VhcmNoQm9vdHN0cmFwcGVyLmNyZWF0ZUZpbHRlcigncScsICdcIicgKyBuZXdQYXJhbXMucSArICdcIicpO1xyXG4gICAgICAgIHZtLnNlYXJjaElucHV0LnZhbHVlID0gJ1wiJyArIG5ld1BhcmFtcy5xICsgJ1wiJztcclxuICAgICAgfVxyXG4gICAgICB2bS5zZWFyY2hCb290c3RyYXBwZXIuY3JlYXRlRmlsdGVyKCdleGFjdG1hdGNob25seScsICcxJyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZihmaWx0ZXJRdWVyeSAmJiBmaWx0ZXJRdWVyeVswXSA9PT0gJ1wiJyAmJiBmaWx0ZXJRdWVyeVtmaWx0ZXJRdWVyeS5sZW5ndGggLSAxXSA9PT0gJ1wiJykge1xyXG4gICAgICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlci5jcmVhdGVGaWx0ZXIoJ3EnLCBuZXdQYXJhbXMucS5yZXBsYWNlKC9bJ1wiXSsvZywgJycpKTtcclxuICAgICAgICB2bS5zZWFyY2hJbnB1dC52YWx1ZSA9IG5ld1BhcmFtcy5xLnJlcGxhY2UoL1snXCJdKy9nLCAnJyk7XHJcbiAgICAgIH1cclxuICAgICAgdm0uc2VhcmNoQm9vdHN0cmFwcGVyLmNyZWF0ZUZpbHRlcignZXhhY3RtYXRjaG9ubHknLCAnJyk7XHJcbiAgICB9XHJcbiAgICBpZihuZXdTZWFyY2hJbnB1dCAmJiBuZXdTZWFyY2hJbnB1dCAhPT0gbmV3UGFyYW1zLnEpIHtcclxuICAgICAgaWYodm0uZXhhY3RNYXRjaE9ubHkgJiYgbmV3U2VhcmNoSW5wdXRbMF0gIT09ICdcIicgJiYgbmV3U2VhcmNoSW5wdXRbbmV3U2VhcmNoSW5wdXQubGVuZ3RoIC0gMV0gIT09ICdcIicpIHtcclxuICAgICAgICB2bS5zZWFyY2hCb290c3RyYXBwZXIuY3JlYXRlRmlsdGVyKCdxJywgJ1wiJyArIG5ld1NlYXJjaElucHV0ICsgJ1wiJyk7XHJcbiAgICAgICAgdm0uc2VhcmNoSW5wdXQudmFsdWUgPSAnXCInICsgbmV3U2VhcmNoSW5wdXQgKyAnXCInO1xyXG4gICAgICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlci5jcmVhdGVGaWx0ZXIoJ2V4YWN0bWF0Y2hvbmx5JywgJzEnKTtcclxuICAgICAgICB2bS5leGFjdE1hdGNoT25seSA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSBpZighdm0uZXhhY3RNYXRjaE9ubHkgJiYgbmV3U2VhcmNoSW5wdXRbMF0gPT09ICdcIicgJiYgbmV3U2VhcmNoSW5wdXRbbmV3U2VhcmNoSW5wdXQubGVuZ3RoIC0gMV0gPT09ICdcIicpIHtcclxuICAgICAgICB2bS5zZWFyY2hCb290c3RyYXBwZXIuY3JlYXRlRmlsdGVyKCdxJywgbmV3U2VhcmNoSW5wdXQucmVwbGFjZSgvWydcIl0rL2csICcnKSk7XHJcbiAgICAgICAgdm0uc2VhcmNoSW5wdXQudmFsdWUgPSBuZXdTZWFyY2hJbnB1dC5yZXBsYWNlKC9bJ1wiXSsvZywgJycpO1xyXG4gICAgICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlci5jcmVhdGVGaWx0ZXIoJ2V4YWN0bWF0Y2hvbmx5JywgJycpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlci5jcmVhdGVGaWx0ZXIoJ3EnLCBuZXdTZWFyY2hJbnB1dCk7XHJcbiAgICAgICAgdm0uc2VhcmNoSW5wdXQudmFsdWUgPSBuZXdTZWFyY2hJbnB1dDtcclxuICAgICAgICB2bS5zZWFyY2hCb290c3RyYXBwZXIuY3JlYXRlRmlsdGVyKCdleGFjdG1hdGNob25seScsICcnKTtcclxuICAgICAgICB2bS5leGFjdE1hdGNoT25seSA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlci5jcmVhdGVGaWx0ZXIoJ2NvbnRlbnR0eXBlJywgbmV3UGFyYW1zLmNvbnRlbnR0eXBlKTtcclxuICAgIHZhciByb3V0ZXJCdWlsZGVyID0gdm0uc2VhcmNoU2VydmljZS5nZXRSb3V0ZUJ1aWxkZXIoKTtcclxuICAgIHZtLmxvY2F0aW9uLnNlYXJjaChyb3V0ZXJCdWlsZGVyLmdldFJvdXRlKCkpO1xyXG4gICAgdm0uc2VhcmNoU2VydmljZS5xdWVyeSgpO1xyXG4gIH07ICBcclxuXHJcbn07XHJcbnZhciBpbmZvcm1hU2VhcmNoQXBwID0gYW5ndWxhci5tb2R1bGUoJ2luZm9ybWFTZWFyY2hBcHAnKTtcclxuaW5mb3JtYVNlYXJjaEFwcC5jb250cm9sbGVyKFwiQWR2YW5jZVNlYXJjaENvbnRyb2xsZXJcIiwgWyckcm9vdFNjb3BlJywgJyRsb2NhdGlvbicsICdzZWFyY2hTZXJ2aWNlJywgJ3NlYXJjaEJvb3RzdHJhcHBlcicsIEFkdmFuY2VTZWFyY2hDb250cm9sbGVyXSk7XHJcbiIsIi8qIGdsb2JhbCBhbmd1bGFyICovXHJcblxyXG52YXIgRW1haWxSc3NDb250cm9sbGVyID0gZnVuY3Rpb24gKCRzY29wZSwgJGxvY2F0aW9uKSB7XHJcbiAgICBcInVzZSBzdHJpY3RcIjtcclxuXHJcblxyXG4gICAgJHNjb3BlLiR3YXRjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICRsb2NhdGlvbi5zZWFyY2goKTtcclxuICAgIH0sIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgICB2YXIgcGFyYW1zMSA9ICRsb2NhdGlvbi5zZWFyY2goKTtcclxuICAgICAgIFxyXG4gICAgICAgIHZhciBuVXJsID0gXCJcIjtcclxuICAgICAgICBmb3IgKHZhciBpZHhrZXkgaW4gcGFyYW1zMSkge1xyXG4gICAgICAgICAgICBpZiAoaWR4a2V5ID09PSBcInNvcnRCeVwiKSB7XHJcbiAgICAgICAgICAgICAgICBuVXJsID0gblVybCArIFwiJlwiICsgXCJzb3J0Qnk9ZGF0ZVwiO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaWR4a2V5ID09PSBcInNvcnRPcmRlclwiKSB7XHJcbiAgICAgICAgICAgICAgICBuVXJsID0gblVybCArIFwiJlwiICsgXCJzb3J0T3JkZXI9ZGVzY1wiO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaWR4a2V5ICE9PSBcInNvcnRCeVwiICYmIGlkeGtleSAhPT0gXCJzb3J0T3JkZXJcIikge1xyXG5cdFx0XHRcdHZhciBzZWFyY2hLZXkgPSBwYXJhbXMxW2lkeGtleV0ucmVwbGFjZSgvJi9nLCBcIiUyNlwiKTtcclxuICAgICAgICAgICAgICAgIG5VcmwgPSBuVXJsICsgXCImXCIgKyBpZHhrZXkgKyBcIj1cIiArIHNlYXJjaEtleTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHRcdFx0XHQvLyBzdHJpcCBsZWFkaW5nICZcclxuICAgICAgICBpZiAoblVybC5jaGFyQXQoMCkgPT09ICcmJykge1xyXG5cdCAgICAgICAgblVybCA9IG5Vcmwuc3Vic3RyKDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAkc2NvcGUuY3VycmVudExvY2F0aW9uID0gXCI/XCIgKyBuVXJsO1xyXG4gICAgfSk7XHJcblxyXG4gICAgJHNjb3BlLnRlc3R2YXIgPSAnaGVsbG8nO1xyXG5cclxufTtcclxudmFyIGluZm9ybWFTZWFyY2hBcHAgPSBhbmd1bGFyLm1vZHVsZSgnaW5mb3JtYVNlYXJjaEFwcCcpO1xyXG5pbmZvcm1hU2VhcmNoQXBwLmNvbnRyb2xsZXIoXCJFbWFpbFJzc0NvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJGxvY2F0aW9uJywgRW1haWxSc3NDb250cm9sbGVyXSk7XHJcbiIsIi8qIGdsb2JhbCBhbmFseXRpY3NfZGF0YSAqL1xyXG5pbXBvcnQgeyBhbmFseXRpY3NFdmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xsZXJzL2FuYWx5dGljcy1jb250cm9sbGVyJztcclxuXHJcbnZhciBIZWFkbGluZVNlYXJjaENvbnRyb2xsZXIgPSBmdW5jdGlvbiAoJGxvY2F0aW9uLCBzZWFyY2hTZXJ2aWNlLCBzZWFyY2hCb290c3RyYXBwZXIsJHRpbWVvdXQpIHtcclxuICAgIFwidXNlIHN0cmljdFwiO1xyXG5cclxuICAgIHRoaXMuc2VhcmNoU2VydmljZSA9IHNlYXJjaFNlcnZpY2U7XHJcbiAgICB0aGlzLnNlYXJjaEJvb3RzdHJhcHBlciA9IHNlYXJjaEJvb3RzdHJhcHBlcjtcclxuICAgIHRoaXMubG9jYXRpb24gPSAkbG9jYXRpb247XHJcbiAgICBcclxuICAgIHRoaXMudXBkYXRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vQ3JlYXRlIEhlYWRsaW5lc09ubHkgRmlsdGVyIGlmIG5vdCBleGlzdFxyXG4gICAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKCdoZWFkbGluZXNPbmx5Jyk7XHJcbiAgICAgICAgaWYgKCFmaWx0ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hCb290c3RyYXBwZXIuY3JlYXRlRmlsdGVyKCdoZWFkbGluZXNPbmx5JywgJzEnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyLl92YWx1ZSA9PT0gJzEnKSB7XHJcbiAgICAgICAgICAgICAgICBmaWx0ZXIuc2V0VmFsdWUoJycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZmlsdGVyLnNldFZhbHVlKCcxJyk7XHJcbiAgICAgICAgICAgICAgICAvL0FuYWx5dGljcyBldmVudCB0cmFja2luZ1xyXG4gICAgICAgICAgICAgICAgYW5hbHl0aWNzRXZlbnQoJC5leHRlbmQoYW5hbHl0aWNzX2RhdGEsIHtcclxuICAgICAgICAgICAgICAgICAgICBldmVudF9uYW1lOiAnc2VhcmNoX3V0aWxpdHknLFxyXG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaF91dGlsaXR5OiAnc2VhcmNoX2hlYWRsaW5lc19vbmx5J1xyXG4gICAgICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UuX2lzTmV3U2VhcmNoID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKCdwYWdlJykuc2V0VmFsdWUoXCIxXCIpO1xyXG5cclxuICAgICAgICB2YXIgcm91dGVyQnVpbGRlciA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRSb3V0ZUJ1aWxkZXIoKTtcclxuICAgICAgICB2YXIgc2VhcmNoUmVzdWx0cyA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRSZXN1bHRzKCk7XHJcbiAgICAgICAgaWYgKHNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnNlYXJjaChyb3V0ZXJCdWlsZGVyLmdldFJvdXRlKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIGlmIChhbmd1bGFyLmVsZW1lbnQoZG9jdW1lbnQuYm9keSkuaGFzQ2xhc3MoJ3RoZW1lLW9tZGlhJykpIHtcclxuICAgICAgICAgICAgdGhpcy5sb2NhdGlvbi5zZWFyY2goXCJxPVwiICsgdGhpcy5zZWFyY2hTZXJ2aWNlLmdldEZpbHRlcigncScpICsgXCImcGFnZT0xJnNvcnRCeT1yZWxldmFuY2Umc29ydE9yZGVyPWRlc2NcIik7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnNlYXJjaChcInE9XCIgKyB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKCdxJykgKyBcIiZwYWdlPTEmc29ydEJ5PWRhdGUmc29ydE9yZGVyPWRlc2NcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5xdWVyeSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLmluaXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGZpbHRlciA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRGaWx0ZXIoJ2hlYWRsaW5lc09ubHknKTtcclxuICAgICAgICByZXR1cm4gZmlsdGVyICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbn07XHJcbnZhciBpbmZvcm1hU2VhcmNoQXBwID0gYW5ndWxhci5tb2R1bGUoJ2luZm9ybWFTZWFyY2hBcHAnKTtcclxuaW5mb3JtYVNlYXJjaEFwcC5jb250cm9sbGVyKFwiSGVhZGxpbmVTZWFyY2hDb250cm9sbGVyXCIsIFsnJGxvY2F0aW9uJywgJ3NlYXJjaFNlcnZpY2UnLCAnc2VhcmNoQm9vdHN0cmFwcGVyJywgJyR0aW1lb3V0JywgSGVhZGxpbmVTZWFyY2hDb250cm9sbGVyXSk7XHJcbiIsIu+7v3ZhciBIZWFkbGluZVRvZ2dsZUNvbnRyb2xsZXIgPSBmdW5jdGlvbiAoJHNjb3BlLCB2aWV3SGVhZGxpbmVzU3RhdGVTZXJ2aWNlKSB7XHJcbiAgICBcInVzZSBzdHJpY3RcIjtcclxuXHJcbiAgICAkc2NvcGUuaGVhZGxpbmVzT25seSA9IHZpZXdIZWFkbGluZXNTdGF0ZVNlcnZpY2U7XHJcblxyXG59O1xyXG52YXIgaW5mb3JtYVNlYXJjaEFwcCA9IGFuZ3VsYXIubW9kdWxlKCdpbmZvcm1hU2VhcmNoQXBwJyk7XHJcbmluZm9ybWFTZWFyY2hBcHAuY29udHJvbGxlcihcIkhlYWRsaW5lVG9nZ2xlQ29udHJvbGxlclwiLCBbJyRzY29wZScsICd2aWV3SGVhZGxpbmVzU3RhdGVTZXJ2aWNlJywgSGVhZGxpbmVUb2dnbGVDb250cm9sbGVyXSk7XHJcbiIsInZhciBpbmZvcm1hRGF0ZXNDb250cm9sbGVyID0gZnVuY3Rpb24gKCRzY29wZSwgJGxvY2F0aW9uKSB7XHJcbiAgJ3VzZSBzdHJpY3QnO1xyXG5cclxuICAvKlxyXG4gICAgJHNjb3BlLmRhdGVWYWx1ZXMgYW5kICRzY29wZS5kYXRlcGlja2VycyBhcmUgaW4gSW5mb3JtYUZhY2V0c0NvbnRyb2xsZXIuanNcclxuICAgIFVzaW5nIG5nLWlmIGNyZWF0ZXMgYSBuZXcgc2NvcGUgZm9yIHRoZSBkYXRhIGluIHRoaXMgY29udHJvbGxlciwgd2hpY2hcclxuICAgIGNhdXNlcyB0aGUgZGF0ZSB2YWx1ZXMgdG8gcmVzZXQgb24gY2hhbmdlLiBCeSBzdG9yaW5nIGluIHRoZSBwYXJlbnQsXHJcbiAgICB0aG9zZSB2YWx1ZXMgc3Vydml2ZSBhbnkgc2NvcGUgcmVzZXRzIGhlcmUuXHJcbiAgKi9cclxuICBcclxuICAvLyBncmFiIHRvZGF5IGFuZCBpbmplY3QgaW50byBmaWVsZFxyXG4gICRzY29wZS50b2RheSA9IGZ1bmN0aW9uKCkge1xyXG4gICAgJHNjb3BlLmRhdGVWYWx1ZXMuZHRGcm9tID0gbmV3IERhdGUoKTtcclxuICAgICRzY29wZS5kYXRlVmFsdWVzLmR0VG8gPSBuZXcgRGF0ZSgpO1xyXG4gIH07XHJcblxyXG4gIC8vIHJ1biB0b2RheSgpIGZ1bmN0aW9uXHJcbiAgLy8gJHNjb3BlLnRvZGF5KCk7XHJcblxyXG4gIC8vIHNldHVwIGNsZWFyXHJcbiAgJHNjb3BlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgJHNjb3BlLmRhdGVWYWx1ZXMuZHRGcm9tID0gJyc7XHJcbiAgICAkc2NvcGUuZGF0ZVZhbHVlcy5kdFRvID0gJyc7XHJcbiAgfTtcclxuXHJcbiAgJHNjb3BlLmZyb21EYXRlT3B0aW9ucyA9IHtcclxuICAgIHNob3dXZWVrczogZmFsc2UsXHJcbiAgICBmb3JtYXREYXlIZWFkZXI6ICdFRUUnLFxyXG4gICAgZm9ybWF0RGF5OiAnZCcsXHJcbiAgICBzdGFydGluZ0RheTogMCwgLy8gU3VuZGF5XHJcbiAgICBkYXRlRGlzYWJsZWQ6IGRpc2FibGVkRnJvbSxcclxuICAgIGZvcm1hdFllYXI6ICd5eScsXHJcbiAgICBtYXhEYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgbWluRGF0ZTogbmV3IERhdGUoMTkwMCwgMSwgMSlcclxuICB9O1xyXG5cclxuICAkc2NvcGUudG9EYXRlT3B0aW9ucyA9IHtcclxuICAgIHNob3dXZWVrczogZmFsc2UsXHJcbiAgICBmb3JtYXREYXlIZWFkZXI6ICdFRUUnLFxyXG4gICAgZm9ybWF0RGF5OiAnZCcsXHJcbiAgICBzdGFydGluZ0RheTogMCwgLy8gU3VuZGF5XHJcbiAgICBkYXRlRGlzYWJsZWQ6IGRpc2FibGVkVG8sXHJcbiAgICBmb3JtYXRZZWFyOiAneXknLFxyXG4gICAgbWF4RGF0ZTogbmV3IERhdGUoKSxcclxuICAgIG1pbkRhdGU6IG5ldyBEYXRlKDE5MDAsIDEsIDEpXHJcbiAgfTtcclxuXHJcbiAgLy8gUHJldmVudCB1c2VyIGZyb20gc2VsZWN0aW5nIGRhdGUgaWYgZGF0ZSBpcyBpbiB0aGUgZnV0dXJlLCBPUiBpZiB0aGUgZGF0ZVxyXG4gIC8vIGlzIGxhdGVyIHRoYW4gdGhlIHNlbGVjdGVkICd0bycgZGF0ZS4gJ2Zyb20nIGNhbid0IGJlIGxhdGVyIHRoYW4gJ3RvJ1xyXG4gIGZ1bmN0aW9uIGRpc2FibGVkRnJvbShkYXRhKSB7XHJcbiAgICAgIHZhciBkYXRlID0gZGF0YS5kYXRlO1xyXG4gICAgICB2YXIgdG9tb3Jyb3cgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB0b21vcnJvdy5zZXREYXRlKHRvbW9ycm93LmdldERhdGUoKSArIDEpO1xyXG5cclxuICAgICAgLy8gSWYgbm8gZW5kLXRpbWUgZXhpc3RzLCB1c2UgYSB2ZXJ5IGxhcmdlIG51bWJlciBzbyBhbGwgdGltZXN0YW1wcyBhcmUgdmFsaWRcclxuICAgICAgdmFyIHRvVGltZXN0YW1wID0gJHNjb3BlLmRhdGVWYWx1ZXMuZHRUbyA/ICRzY29wZS5kYXRlVmFsdWVzLmR0VG8uZ2V0VGltZSgpIDogTWF0aC5wb3coOTksIDkpO1xyXG4gICAgICByZXR1cm4gKGRhdGUuZ2V0VGltZSgpID4gdG9tb3Jyb3cuZ2V0VGltZSgpXHJcbiAgICAgICAgfHwgZGF0ZS5nZXRUaW1lKCkgPiB0b1RpbWVzdGFtcCk7XHJcbiAgfTtcclxuXHJcbiAgLy8gUHJldmVudCB1c2VyIGZyb20gc2VsZWN0aW5nIGRhdGUgaWYgZGF0ZSBpcyBpbiB0aGUgZnV0dXJlLCBPUiBpZiBkYXRlXHJcbiAgLy8gaXMgYmVmb3JlIHNlbGVjdGVkICdmcm9tJyBkYXRlLiAndG8nIG11c3QgYmUgbGF0ZXIgdGhhbiAnZnJvbSdcclxuICBmdW5jdGlvbiBkaXNhYmxlZFRvKGRhdGEpIHtcclxuICAgICAgdmFyIGRhdGUgPSBkYXRhLmRhdGU7XHJcbiAgICAgIHZhciB0b21vcnJvdyA9IG5ldyBEYXRlKCk7XHJcbiAgICAgIHRvbW9ycm93LnNldERhdGUodG9tb3Jyb3cuZ2V0RGF0ZSgpICsgMSk7XHJcblxyXG4gICAgICAvLyBJZiBubyBzdGFydC10aW1lIGV4aXN0cywgdXNlIGEgdmVyeSBsYXJnZSBudW1iZXIgc28gYWxsIHRpbWVzdGFtcHMgYXJlIHZhbGlkXHJcbiAgICAgIHZhciBmcm9tVGltZXN0YW1wID0gJHNjb3BlLmRhdGVWYWx1ZXMuZHRGcm9tID8gJHNjb3BlLmRhdGVWYWx1ZXMuZHRGcm9tLmdldFRpbWUoKSA6IDA7XHJcbiAgICAgIHJldHVybiAoZGF0ZS5nZXRUaW1lKCkgPiB0b21vcnJvdy5nZXRUaW1lKClcclxuICAgICAgICB8fCBkYXRlLmdldFRpbWUoKSA8IGZyb21UaW1lc3RhbXApO1xyXG4gIH07XHJcblxyXG4gIC8vIG9wZW4gbWluLWNhbFxyXG4gICRzY29wZS5vcGVuID0gZnVuY3Rpb24oJGV2ZW50LCB3aGljaCkge1xyXG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgLy8gRGF0ZXBpY2tlciBwb3B1cHMgd2lsbCBjbG9zZSB3aGVuIGNsaWNrZWQgb3V0c2lkZSwgYnV0IGl0J3MgcG9zc2libGUgdG9cclxuICAgIC8vIG9wZW4gYm90aCBhdCB0aGUgc2FtZSB0aW1lLiBUaGlzIHByZXZlbnRzIHRoYXQuXHJcbiAgICBzd2l0Y2ggKHdoaWNoKSB7XHJcbiAgICAgIGNhc2UgJ2R0RnJvbSc6XHJcbiAgICAgICAgJHNjb3BlLmRhdGVwaWNrZXJzLmR0RnJvbSA9IHRydWU7XHJcbiAgICAgICAgJHNjb3BlLmRhdGVwaWNrZXJzLmR0VG8gPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnZHRUbyc6XHJcbiAgICAgICAgJHNjb3BlLmRhdGVwaWNrZXJzLmR0RnJvbSA9IGZhbHNlO1xyXG4gICAgICAgICRzY29wZS5kYXRlcGlja2Vycy5kdFRvID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICAkc2NvcGUuZGF0ZXBpY2tlcnMuZHRGcm9tID0gZmFsc2U7XHJcbiAgICAgICAgJHNjb3BlLmRhdGVwaWNrZXJzLmR0VG8gPSBmYWxzZTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9O1xyXG5cclxufTtcclxuXHJcbnZhciBpbmZvcm1hU2VhcmNoQXBwID0gYW5ndWxhci5tb2R1bGUoJ2luZm9ybWFTZWFyY2hBcHAnKTtcclxuaW5mb3JtYVNlYXJjaEFwcC5jb250cm9sbGVyKFwiSW5mb3JtYURhdGVzQ29udHJvbGxlclwiLCBbXCIkc2NvcGVcIiwgXCIkbG9jYXRpb25cIiwgaW5mb3JtYURhdGVzQ29udHJvbGxlcl0pO1xyXG4iLCLvu78vKiBnbG9iYWwgXywgZGF0ZXNPYmplY3QsIGFuZ3VsYXIsIGFuYWx5dGljc19kYXRhICovXHJcbmltcG9ydCB7IGFuYWx5dGljc0V2ZW50IH0gZnJvbSAnLi4vLi4vY29udHJvbGxlcnMvYW5hbHl0aWNzLWNvbnRyb2xsZXInO1xyXG52YXIgSW5mb3JtYUZhY2V0Q29udHJvbGxlciA9IGZ1bmN0aW9uICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJGh0dHAsICRhbmNob3JTY3JvbGwsICR0aW1lb3V0LCAgc2VhcmNoU2VydmljZSwgc2VhcmNoQm9vdHN0cmFwcGVyLCBmYWNldEF2YWlsYWJpbGl0eVNlcnZpY2UpIHtcclxuICAgIFwidXNlIHN0cmljdFwiO1xyXG4gICAgLy8gQmluZCBgdGhpc2AgdG8gdm0gLSBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2aWV3IG1vZGVsXHJcbiAgICB2YXIgdm0gPSB0aGlzO1xyXG4gICAgLy8gR2VuZXJhbCBGYWNldCBzdHVmZlxyXG4gICAgdm0uZmFjZXRHcm91cHMgPSBzZWFyY2hTZXJ2aWNlLmdldEZhY2V0R3JvdXBzKCk7XHJcbiAgICB2bS5zZWFyY2hTZXJ2aWNlID0gc2VhcmNoU2VydmljZTtcclxuICAgIHZtLmxvY2F0aW9uID0gJGxvY2F0aW9uO1xyXG4gICAgdm0uYW5jaG9yU2Nyb2xsID0gJGFuY2hvclNjcm9sbDtcclxuICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlciA9IHNlYXJjaEJvb3RzdHJhcHBlcjtcclxuICAgIHZtLk1heEZhY2V0U2hvdyA9IDU7XHJcbiAgICB2bS5TZWNvbmRMZXZlbE1heEZhY2V0U2hvdyA9IDM7XHJcbiAgICB2bS5zaG93aW5nT25seVN1YnNjcmlwdGlvbnMgPSBmYWxzZTtcclxuICAgIHZtLnN1YnNjcmliZXJfY29va2llO1xyXG4gICAgdm0uc3Vic2NyaXB0aW9ucztcclxuICAgIHZtLmVuYWJsZU15U3VzYnJpcHRpb25zID0gZmFsc2U7XHJcbiAgICB2bS5rZXl3b3JkU2VhcmNoID0gZmFsc2U7XHJcbiAgICB2bS5jb21wYW5pZXMgPSB7IFwiY29tcGFuaWVzXCI6IFwiXCIsIFwiaXNDb21wYW55U2VsZWN0ZWRcIjogZmFsc2UgfTtcclxuICAgIHZtLmRlZmF1bHRTdGF0ZSA9IHRydWU7XHJcbiAgICB2bS50aGVtZU9tZGlhID0gYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LmJvZHkpLmhhc0NsYXNzKCd0aGVtZS1vbWRpYScpO1xyXG4gICAgdm0udGhlbWVDaGVtaXN0QW5kRHJ1Z2dpc3QgPSBhbmd1bGFyLmVsZW1lbnQoZG9jdW1lbnQuYm9keSkuaGFzQ2xhc3MoJ3RoZW1lLWNoZW1pc3RhbmRkcnVnZ2lzdCcpO1xyXG4gICAgdm0uY2xlYXJBbGxWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB2bS5mYWNldFdpdGhTaG93TW9yZSA9IFtdO1xyXG4gICAgdm0uc3ViRmFjZXRXaXRoU2hvd01vcmUgPSBbXTtcclxuICAgIHZtLmFsbFN1YkZhY2V0U2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgIHZtLlBhcmVudEZhY2V0SWQgPSAnJztcclxuICAgIHZtLnNlbGVjdGVkRmlsdGVycyA9IFtdO1xyXG4gICAgdm0uZGVmYXVsdEV4cGFuZGVkUmVmaW5lbWVudHMgPSBqUXVlcnkoJyNkZWZhdWx0RXhwYW5kZWRSZWZpbmVtZW50cycpLnZhbCgpO1xyXG4gICAgXHJcblx0JHJvb3RTY29wZS4kd2F0Y2goJ2ZhY2V0QXZhaWxhYmlsaXR5JywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZtLmFyZUZhY2V0c0Rpc2FibGVkID0gZmFjZXRBdmFpbGFiaWxpdHlTZXJ2aWNlLmZhY2V0c0FyZUVuYWJsZWQoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHZtLnNlYXJjaFR5cGUgPSAnJztcclxuICAgICRzY29wZS4kd2F0Y2goZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB2bS5zZWFyY2hTZXJ2aWNlLmdldFNlYXJjaFR5cGUoKTtcclxuICAgIH0sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2bS5zZWFyY2hUeXBlID0gdm0uc2VhcmNoU2VydmljZS5nZXRTZWFyY2hUeXBlKCk7XHJcbiAgICAgICAgaWYgKHZtLnNlYXJjaFR5cGU9PVwicHJvZHVjdFwiKSB7XHJcbiAgICAgICAgICAgIHZtLmRlZmF1bHRFeHBhbmRlZFJlZmluZW1lbnRzID0galF1ZXJ5KCcjZGVmYXVsdEV4cGFuZGVkUmVmaW5lbWVudHNQcm9kdWN0JykudmFsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdm0uZmFjZXRncm91cFN0YXRlID0ge307XHJcbiAgICAvLyBEYXRlIEZhY2V0IHN0dWZmXHJcbiAgICB2bS5EYXRlRmlsdGVycyA9IFtcclxuICAgICAgICB7IGxhYmVsOiAnQWxsJywga2V5OiAnYWxsJywgc2VsZWN0ZWQ6IHRydWUgfSxcclxuICAgICAgICB7IGxhYmVsOiAnTGFzdCAyNCBob3VycycsIGtleTogJ2RheScsIHNlbGVjdGVkOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMYXN0IDMgZGF5cycsIGtleTogJ3RocmVlZGF5cycsIHNlbGVjdGVkOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMYXN0IHdlZWsnLCBrZXk6ICd3ZWVrJywgc2VsZWN0ZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ0xhc3QgbW9udGgnLCBrZXk6ICdtb250aCcsIHNlbGVjdGVkOiBmYWxzZSB9LFxyXG4gICAgICAgIHsgbGFiZWw6ICdMYXN0IHllYXInLCBrZXk6ICd5ZWFyJywgc2VsZWN0ZWQ6IGZhbHNlIH0sXHJcbiAgICAgICAgeyBsYWJlbDogJ1NlbGVjdCBkYXRlIHJhbmdlJywga2V5OiAnY3VzdG9tJywgc2VsZWN0ZWQ6IGZhbHNlIH1cclxuICAgIF07XHJcblxyXG4gICAgdm0ub3JpZ2luYWxHcm91cCA9IFtdO1xyXG4gICAgdmFyIGRUb2RheSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUoKS5jbGVhclRpbWUoKTtcclxuICAgIH07XHJcblxyXG4gICAgdmFyIGpzRGF0ZXMgPSB7XHJcbiAgICAgICAgbWludXMxWWVhcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICB2YXIganNEYXRlVG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoanNEYXRlVG9kYXkuc2V0RnVsbFllYXIoanNEYXRlVG9kYXkuZ2V0RnVsbFllYXIoKSAtIDEpKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG1pbnVzMU1vbnRoOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBqc0RhdGVUb2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIHZhciBtID0ganNEYXRlVG9kYXkuZ2V0TW9udGgoKTtcclxuICAgICAgICAgICAganNEYXRlVG9kYXkuc2V0TW9udGgoanNEYXRlVG9kYXkuZ2V0TW9udGgoKSAtIDEpO1xyXG5cclxuICAgICAgICAgICAgLy8gSWYgc3RpbGwgaW4gc2FtZSBtb250aCwgc2V0IGRhdGUgdG8gbGFzdCBkYXkgb2YgcHJldmlvdXMgbW9udGhcclxuICAgICAgICAgICAgaWYgKGpzRGF0ZVRvZGF5LmdldE1vbnRoKCkgPT0gbSkge1xyXG4gICAgICAgICAgICAgICAganNEYXRlVG9kYXkuc2V0RGF0ZSgwKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoanNEYXRlVG9kYXkuc2V0SG91cnMoMCwgMCwgMCkpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWludXNYZGF5czogZnVuY3Rpb24gKGRheXMpIHtcclxuICAgICAgICAgICAgdmFyIGpzRGF0ZVRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGpzRGF0ZVRvZGF5LnNldERhdGUoanNEYXRlVG9kYXkuZ2V0RGF0ZSgpIC0gZGF5cykpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdmFyIGZvcm1hdERhdGVPYmplY3QgPSBmdW5jdGlvbiAoZCkge1xyXG4gICAgICAgIHJldHVybiAoZC5nZXRNb250aCgpICsgMSkgKyAnLycgKyBkLmdldERhdGUoKSArICcvJyArIGQuZ2V0RnVsbFllYXIoKTtcclxuICAgIH07XHJcblxyXG4gICAgdm0uZGF0ZXNPYmplY3QgPSB7XHJcbiAgICAgICAgeWVhcjogZm9ybWF0RGF0ZU9iamVjdChqc0RhdGVzLm1pbnVzMVllYXIoKSksXHJcbiAgICAgICAgZGF5OiBmb3JtYXREYXRlT2JqZWN0KGpzRGF0ZXMubWludXNYZGF5cygxKSksXHJcbiAgICAgICAgdGhyZWVkYXlzOiBmb3JtYXREYXRlT2JqZWN0KGpzRGF0ZXMubWludXNYZGF5cygzKSksXHJcbiAgICAgICAgbW9udGg6IGZvcm1hdERhdGVPYmplY3QoanNEYXRlcy5taW51czFNb250aCgpKSxcclxuICAgICAgICB3ZWVrOiBmb3JtYXREYXRlT2JqZWN0KGpzRGF0ZXMubWludXNYZGF5cyg3KSlcclxuICAgIH07XHJcblxyXG4gICAgdm0udGltZXNPYmplY3QgPSB7XHJcbiAgICAgICAgeWVhcjogeyBpZDogXCJ5ZWFyXCIsIHZhbHVlOiBcIjFcIiB9LFxyXG4gICAgICAgIGRheTogeyBpZDogXCJob3VyXCIsIHZhbHVlOiBcIjI0XCIgfSxcclxuICAgICAgICB0aHJlZWRheXM6IHsgaWQ6IFwiZGF5XCIsIHZhbHVlOiBcIjNcIiB9LFxyXG4gICAgICAgIG1vbnRoOiB7IGlkOiBcIm1vbnRoXCIsIHZhbHVlOiBcIjFcIiB9LFxyXG4gICAgICAgIHdlZWs6IHsgaWQ6IFwid2Vla1wiLCB2YWx1ZTogXCIxXCIgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBDcmVhdGUgcGxhY2Vob2xkZXIgdmFsdWVzIGZvciBGcm9tOiBhbmQgVG86IGRhdGUgdmFsdWVzXHJcbiAgICAkc2NvcGUuZGF0ZVZhbHVlcyA9IHtcclxuICAgICAgICBkdEZyb206ICcnLFxyXG4gICAgICAgIGR0VG86ICcnXHJcbiAgICB9O1xyXG5cclxuICAgIC8vIG5lZWQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgMiBkYXRlcGlja2Vyc1xyXG4gICAgJHNjb3BlLmRhdGVwaWNrZXJzID0ge1xyXG4gICAgICAgIGR0RnJvbTogZmFsc2UsXHJcbiAgICAgICAgZHRUbzogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgLy8gT24gZmlyc3QgcnVuLCBjaGVjayBhbGwgZGF0ZSBmaWx0ZXJzIGFnYWluc3QgZGF0ZSBmaWx0ZXIgc2V0IGluIFVSTFxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2bS5EYXRlRmlsdGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICgkbG9jYXRpb24uc2VhcmNoKCkuZGF0ZUZpbHRlckxhYmVsID09IHZtLkRhdGVGaWx0ZXJzW2ldLmtleSkge1xyXG4gICAgICAgICAgICAvLyBNYXJrIGRhdGUgZmlsdGVyIGFzIHNlbGVjdGVkIHRvIG1hdGNoIFVSTFxyXG4gICAgICAgICAgICB2bS5EYXRlRmlsdGVyc1tpXS5zZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vIElmIGRhdGUgZmlsdGVyIGlzIGEgZGF0ZSByYW5nZSBmaWx0ZXIuLi5cclxuICAgICAgICAgICAgaWYgKHZtLkRhdGVGaWx0ZXJzW2ldLmtleSA9PT0gJ2N1c3RvbScpIHtcclxuICAgICAgICAgICAgICAgIC8vIC4uLmNvbnZlcnQgdGhlIGRhdGUgZGF0YSBpbiB0aGUgVVJMIHRvIGBEYXRlYHMuLi5cclxuICAgICAgICAgICAgICAgIC8vIGV4YW1wbGU6IGRhdGU9My8yOS8yMDE1OzQvNS8yMDE2XHJcbiAgICAgICAgICAgICAgICB2YXIgc3BsaXREYXRlcyA9ICRsb2NhdGlvbi5zZWFyY2goKS5kYXRlLnNwbGl0KCc7Jyk7XHJcbiAgICAgICAgICAgICAgICAvLyAuLi5hbmQgdXBkYXRlIHRoZSBtb2RlbCBzbyB0aGUgVUkgc2hvd3MgdGhlIHJpZ2h0IGRhdGEuXHJcbiAgICAgICAgICAgICAgICAkc2NvcGUuZGF0ZVZhbHVlcy5kdEZyb20gPSBuZXcgRGF0ZShzcGxpdERhdGVzWzBdKTtcclxuICAgICAgICAgICAgICAgICRzY29wZS5kYXRlVmFsdWVzLmR0VG8gPSBuZXcgRGF0ZShzcGxpdERhdGVzWzFdKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAkc2NvcGUuJHdhdGNoKFxyXG4gICAgICAgIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gc2VhcmNoU2VydmljZS5nZXRQYWdlcigpO1xyXG4gICAgfSwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZtLmZhY2V0R3JvdXBzID0gc2VhcmNoU2VydmljZS5nZXRGYWNldEdyb3VwcygpO1xyXG4gICAgICAgIGlmKHZtLnRoZW1lT21kaWEpIHtcclxuICAgICAgICAgICAgXy5lYWNoKHZtLmZhY2V0R3JvdXBzLCBmdW5jdGlvbihmYWNldExpc3QpIHtcclxuICAgICAgICAgICAgICAgIGlmKHZtLmZhY2V0V2l0aFNob3dNb3JlLmluY2x1ZGVzKGZhY2V0TGlzdC5pZCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBmYWNldExpc3QuU2hvd01vcmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHZtLmZhY2V0V2l0aFNob3dNb3JlID0gW107ICAgICAgICBcclxuICAgICAgICAgICAgXy5lYWNoKHZtLmZhY2V0R3JvdXBzLmZhY2V0cywgZnVuY3Rpb24oZmFjZXRMaXN0KSB7XHJcbiAgICAgICAgICAgICAgICBpZih2bS5TdWJGYWNldFdpdGhTaG93TW9yZS5pbmNsdWRlcyhmYWNldExpc3QuaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmFjZXRMaXN0LlNob3dNb3JlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB2bS5TdWJGYWNldFdpdGhTaG93TW9yZSA9IFtdO1xyXG4gICAgICAgICAgICBpZiAodm0uYWxsU3ViRmFjZXRTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgdm0uZmFjZXRDaGFuZ2Uodm0uUGFyZW50RmFjZXRJZCk7XHJcbiAgICAgICAgICAgIH0gICAgICAgICAgICBcclxuICAgICAgICAgICAgdm0uY2xlYXJBbGxTZXRGbGFnKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2bS5vcmlnaW5hbEdyb3VwID0gdm0uc2VhcmNoU2VydmljZS5nZXRGYWNldEdyb3VwcygpO1xyXG4gICAgICAgIGlmIChzZWFyY2hTZXJ2aWNlLmdldE5ld1NlYXJjaCgpKSB7XHJcbiAgICAgICAgICAgIHZtLmZhY2V0R3JvdXBzID0gdm0ub3JpZ2luYWxHcm91cDtcclxuICAgICAgICAgICAgLy92bS5jbGVhckFsbEZhY2V0cygpO1xyXG4gICAgICAgICAgICBzZWFyY2hTZXJ2aWNlLl9pc05ld1NlYXJjaCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH0sIHRydWUpO1xyXG5cclxuICAgICRzY29wZS4kd2F0Y2goZnVuY3Rpb24gKCkge1xyXG4gICAgICByZXR1cm4gdm0ubG9jYXRpb24udXJsKCk7XHJcbiAgICB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHVybCA9IHZtLmxvY2F0aW9uLnVybCgpLnN1YnN0cigwLCB2bS5sb2NhdGlvbi51cmwoKS5pbmRleE9mKCcjc2VhcmNoVG9wJykpLFxyXG4gICAgICAgICAgICB1cmxTdHIgPSB1cmwubGVuZ3RoID4gMCA/ICcjJyArIHVybCA6ICcnOyAgICAgICAgICAgIFxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGdhKCdzZW5kJywgJ3BhZ2V2aWV3JywgJy9zZWFyY2gnKyB1cmxTdHIpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImdhKCdzZW5kJywgJ3BhZ2V2aWV3JywgJy9zZWFyY2hcIisgdXJsU3RyICsgXCInKVwiKTtcclxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJnYSB1bmRlZmluZWQgZXZlbnQgbm90IHRyYWNrZWRcIiwgXCJnYSgnc2VuZCcsICdwYWdldmlldycsICcvc2VhcmNoXCIrIHVybFN0ciArIFwiJylcIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgdHJ1ZSk7XHJcblxyXG4gICAgdm0uY3JlYXRlQ29va2llID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBkYXlzKSB7XHJcbiAgICAgICAgdmFyIGV4cGlyZXM7XHJcbiAgICAgICAgaWYgKGRheXMpIHtcclxuICAgICAgICAgICAgdmFyIGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyAoZGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDApKTtcclxuICAgICAgICAgICAgZXhwaXJlcyA9IFwiOyBleHBpcmVzPVwiICsgZGF0ZS50b0dNVFN0cmluZygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGV4cGlyZXMgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBkb2N1bWVudC5jb29raWUgPSBuYW1lICsgXCI9XCIgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgKyBleHBpcmVzICsgXCI7IHBhdGg9L1wiO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS5yZWFkQ29va2llID0gZnVuY3Rpb24gKG5hbWUpIHtcclxuICAgICAgICB2YXIgbmFtZUVRID0gbmFtZSArIFwiPVwiO1xyXG4gICAgICAgIHZhciBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2EubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGMgPSBjYVtpXTtcclxuICAgICAgICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09PSAnICcpIHtcclxuICAgICAgICAgICAgICAgIGMgPSBjLnN1YnN0cmluZygxLCBjLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGMuaW5kZXhPZihuYW1lRVEpID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYy5zdWJzdHJpbmcobmFtZUVRLmxlbmd0aCwgYy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS51cGRhdGVDb29raWUgPSBmdW5jdGlvbiAoZmFjZXRQYXJlbnRJZCA9IG51bGwpIHtcclxuICAgICAgICBpZiAodm0uc3Vic2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHZhciBzdWJzY3JpcHRpb25JZCA9ICdwdWJsaWNhdGlvbicsIGlzc3Vic2NyaXB0aW9uQ2hhbm5lbCA9IGZhbHNlOztcclxuICAgICAgICAgICAgXy5lYWNoKHZtLnN1YnNjcmlwdGlvbnMsIGZ1bmN0aW9uIChjaGFubmVsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3BsaXROYW1lID0gY2hhbm5lbC5zcGxpdChcIi1cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXROYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25JZCA9IHNwbGl0TmFtZVswXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChmYWNldFBhcmVudElkID09IHN1YnNjcmlwdGlvbklkLnJlcGxhY2UoXCIgXCIsIFwiXCIpLnJlcGxhY2UoXCInXCIsIFwiXCIpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpc3N1YnNjcmlwdGlvbkNoYW5uZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc3N1YnNjcmlwdGlvbkNoYW5uZWwpIHtcclxuICAgICAgICAgICAgICAgIHZhciBjb29raWVfZmFjZXRzID0gW107XHJcbiAgICAgICAgICAgICAgICBfLmVhY2godm0uZmFjZXRHcm91cHMsIGZ1bmN0aW9uIChncm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF8uZWFjaChncm91cC5nZXRTZWxlY3RlZEZhY2V0cygpLCBmdW5jdGlvbiAoZmFjZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2V0ICYmIGZhY2V0LnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjZXQucGFyZW50SWQgPT0gXCJwdWJsaWNhdGlvblwiICYmIGNvb2tpZV9mYWNldHMuaW5kZXhPZihmYWNldC5sYWJlbCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2llX2ZhY2V0cy5wdXNoKGZhY2V0LmxhYmVsLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmYWNldC5wYXJlbnRJZCAhPSBcInB1YmxpY2F0aW9uXCIgJiYgY29va2llX2ZhY2V0cy5pbmRleE9mKGZhY2V0LnBhcmVudElkICsgJy0nICsgZmFjZXQubGFiZWwpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpc1N1YnNjcmliZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmVhY2godm0uc3Vic2NyaXB0aW9ucywgZnVuY3Rpb24gKGNoYW5uZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNwbGl0TmFtZSA9IGNoYW5uZWwuc3BsaXQoXCItXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BsaXROYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbklkID0gc3BsaXROYW1lWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNldC5wYXJlbnRJZCA9PSBzdWJzY3JpcHRpb25JZC5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKFwiJ1wiLCBcIlwiKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1YnNjcmliZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzU3Vic2NyaWJlcilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2llX2ZhY2V0cy5wdXNoKGZhY2V0LnBhcmVudElkICsgJy0nICsgZmFjZXQubGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoY29va2llX2ZhY2V0cy5sZW5ndGggPiAwICYmIHZtLmVuYWJsZU15U3VzYnJpcHRpb25zICYmIHZtLmtleXdvcmRTZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgICAgICB2bS5jcmVhdGVDb29raWUodm0uc3Vic2NyaWJlcl9jb29raWUsIGNvb2tpZV9mYWNldHMsIDM2NTApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIFxyXG4gICAgalF1ZXJ5KHdpbmRvdykub24oJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHN1YnNjcmliZXJMaXN0ID0gdm0uc3Vic2NyaXB0aW9ucztcclxuICAgICAgICAvLyBpZihzdWJzY3JpYmVyTGlzdCkgc3Vic2NyaWJlckxpc3QgPSBKU09OLnBhcnNlKHN1YnNjcmliZXJMaXN0KTtcclxuICAgICAgICB2YXIgdXNlck5hbWUgPSBqUXVlcnkoJyN1c2VyTmFtZScpLnZhbCgpO1xyXG4gICAgICAgIHZtLmVuYWJsZU15U3VzYnJpcHRpb25zID0gKGpRdWVyeSgnI2VuYWJsZU15U3VzYnJpcHRpb25zJykudmFsKCkgPT0gXCJ0cnVlXCIpID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICAgIHZhciBxdWVyeVN0cmluZ3MgPSB3aW5kb3cubG9jYXRpb24uaHJlZi5zcGxpdCgnPycpWzFdO1xyXG4gICAgICAgIGlmICghcXVlcnlTdHJpbmdzKSByZXR1cm47XHJcbiAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gcXVlcnlTdHJpbmdzLnNwbGl0KCcmJyk7XHJcbiAgICAgICAgdmFyIHNlYXJjaFF1ZXJ5ID0gcXVlcnlTdHJpbmdbMF0uc3BsaXQoJz0nKTtcclxuICAgICAgICBpZiAoc2VhcmNoUXVlcnlbMF0gPT0gXCJxXCIpIHtcclxuICAgICAgICAgICAgdm0ua2V5d29yZFNlYXJjaCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh1c2VyTmFtZSkge1xyXG4gICAgICAgICAgICB2YXIgY29va2llTmFtZUlkID0gdXNlck5hbWUuc3BsaXQoXCJAXCIpO1xyXG4gICAgICAgICAgICBpZiAoY29va2llTmFtZUlkWzBdKSB7XHJcbiAgICAgICAgICAgICAgICB2bS5zdWJzY3JpYmVyX2Nvb2tpZSA9IFwic3Vic2NyaXB0aW9uc1wiICsgd2luZG93LmJ0b2EoY29va2llTmFtZUlkWzBdKTtcclxuICAgICAgICAgICAgICAgIHZtLnN1YnNjcmliZXJfY29va2llID0gdm0uc3Vic2NyaWJlcl9jb29raWUucmVwbGFjZSgvPS9nLCAnJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAodm0uZW5hYmxlTXlTdXNicmlwdGlvbnMgJiYgdm0ua2V5d29yZFNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnNob3dpbmdPbmx5U3Vic2NyaXB0aW9ucyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZtLnJlYWRDb29raWUodm0uc3Vic2NyaWJlcl9jb29raWUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb29raWUgPSBKU09OLnBhcnNlKHZtLnJlYWRDb29raWUodm0uc3Vic2NyaWJlcl9jb29raWUpKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvb2tpZS5sZW5ndGggPT0gMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZtLnNob3dpbmdPbmx5U3Vic2NyaXB0aW9ucyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS5mYWNldENoYW5nZU11bHRpcGxlKCdwdWJsaWNhdGlvbicsIGNvb2tpZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN1YnNjcmliZXJMaXN0ICYmIHN1YnNjcmliZXJMaXN0Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZtLmZhY2V0Q2hhbmdlTXVsdGlwbGUoJ3B1YmxpY2F0aW9uJywgc3Vic2NyaWJlckxpc3QpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHZtLnRoZW1lT21kaWEpIHtcclxuICAgICAgJHNjb3BlLiR3YXRjaChmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gc2VhcmNoU2VydmljZS5nZXRGYWNldEdyb3VwcygpO1xyXG4gICAgICB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdm0ucmVidWlsZFNlbGVjdGVkRmlsdGVycygpO1xyXG4gICAgICAgIHZtLnNldFNlYXJjaFBsYWNlaG9sZGVyKCk7XHJcbiAgICAgIH0sIHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHZtLnNldFNlYXJjaFBsYWNlaG9sZGVyID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKHZtLnNlbGVjdGVkRmlsdGVycy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGlmKHZtLnNlbGVjdGVkRmlsdGVycy5sZW5ndGggPT09IDEgJiYgdm0uc2VsZWN0ZWRGaWx0ZXJzWzBdLm5hbWUpIHtcclxuICAgICAgICAgICAgICAgICRyb290U2NvcGUuc2VhcmNoUGxhY2Vob2xkZXIgPSAnU2VhcmNoIHdpdGhpbiBcIicgKyB2bS5zZWxlY3RlZEZpbHRlcnNbMF0ubmFtZSArICdcIic7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLnNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCB3aXRoaW4gc2VsZWN0ZWQgZmlsdGVycyc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAkcm9vdFNjb3BlLnNlYXJjaFBsYWNlaG9sZGVyID0gJ1NlYXJjaCBhbGwgY29udGVudCc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHZtLnJlYnVpbGRTZWxlY3RlZEZpbHRlcnMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICB2bS5zZWxlY3RlZEZpbHRlcnMgPSBbXTtcclxuICAgICAgICB2bS5hZGRGYWNldHNUb1NlbGVjdGVyRmlsdGVycygpO1xyXG4gICAgfSAgIFxyXG5cclxuICAgIHZtLmFkZEZhY2V0c1RvU2VsZWN0ZXJGaWx0ZXJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBzZWFyY2hQYXJhbXMgPSB2bS5sb2NhdGlvbi5zZWFyY2goKSxcclxuICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXIsXHJcbiAgICAgICAgICAgIGZhY2V0R3JvdXAsXHJcbiAgICAgICAgICAgIHZhbHVlc1xyXG5cclxuICAgICAgICBfLmZvckluKHNlYXJjaFBhcmFtcywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xyXG4gICAgICAgICAgICBzZWxlY3RlZEZpbHRlciA9IHt9O1xyXG4gICAgICAgICAgICBzZWxlY3RlZEZpbHRlci5xdWVyeSA9IGtleTtcclxuXHJcbiAgICAgICAgICAgIC8vIHNraXAgaWYgcGFyYW0gbm90IGZhY2V0IG9yIHRheG9ub215XHJcbiAgICAgICAgICAgIHN3aXRjaChrZXkpIHtcclxuICAgICAgICAgICAgY2FzZSAncSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3BhZ2UnOlxyXG4gICAgICAgICAgICBjYXNlICdwZXJQYWdlJzpcclxuICAgICAgICAgICAgY2FzZSAnc2VhcmNodHlwZSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3Nob3dGcmVlY29udGVudCc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3NvcnRCeSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ3NvcnRPcmRlcic6XHJcbiAgICAgICAgICAgIGNhc2UgJ3RpbWUnOlxyXG4gICAgICAgICAgICBjYXNlICdkYXRlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBjYXNlICdoZWFkbGluZXNPbmx5JzpcclxuICAgICAgICAgICAgY2FzZSAnZW50aXRsZWRjb250ZW50b25seSc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2V4YWN0bWF0Y2hvbmx5JzpcclxuICAgICAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyLm5hbWUgPSAkKFwibGFiZWwuc2VhcmNoLWJhcl9faGVhZGxpbmUtbGFiZWxbZm9yPSdcIisga2V5ICtcIiddXCIpLmh0bWwoKTsgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGNhc2UgJ2RhdGVGaWx0ZXJMYWJlbCc6XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdob3VyJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgICAgICAgICBjYXNlICd3ZWVrJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3llYXInOlxyXG4gICAgICAgICAgICAgICAgICAgIHZhciB0aW1lID0gcGFyc2VJbnQoc2VhcmNoUGFyYW1zLnRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRmlsdGVyLm5hbWUgPSAnTGFzdCAnICsgdGltZSArICcgJyArIHZhbHVlICsgKHRpbWUgPiAxID8gJ3MnIDogJycpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnY3VzdG9tJzpcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY3VzdG9tRGF0ZUFycmF5ID0gc2VhcmNoUGFyYW1zLmRhdGUuc3BsaXQoJzsnKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTdHIgPSBuZXcgRGF0ZShkZWNvZGVVUklDb21wb25lbnQoY3VzdG9tRGF0ZUFycmF5WzBdKSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmRTdHIgPSBuZXcgRGF0ZShkZWNvZGVVUklDb21wb25lbnQoY3VzdG9tRGF0ZUFycmF5WzFdKSkudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZpbHRlci5uYW1lID0gc3RhcnRTdHIgPT0gZW5kU3RyID8gc3RhcnRTdHIgOiAoc3RhcnRTdHIgKyAnIC0gJyArIGVuZFN0cik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIC8vIGZhY2V0IG9yIGN1c3RvbSBxdWVyeVxyXG4gICAgICAgICAgICAgICAgZmFjZXRHcm91cCA9IHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmFjZXRHcm91cChrZXkpOyAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyBpcyBmYWNldFxyXG4gICAgICAgICAgICAgICAgaWYgKGZhY2V0R3JvdXApIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSB2YWx1ZS5zcGxpdCgnOycpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlcmUgYXJlIDIgb3IgbW9yZSBmYWNldHNcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5hbWUgc2hvdWxkIGJlIHRoZSBGYWNldEdyb3VwIG5hbWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXIubmFtZSA9IGZhY2V0R3JvdXAubGFiZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb3VudCBwcm9wZXJ0eSBzaG91bGQgYmUgZGVmaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZpbHRlci5jb3VudCA9IHZhbHVlcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUncyBvbmx5IG9uZSB2YWx1ZSB0aGVuIGFzc3VtZSBmYWNldFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEZpbHRlci5uYW1lID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBub3QgYSBmYWNldCBncm91cCwgc28gYXNzdW1lIHRheG9ub215IC8gY3VzdG9tIHF1ZXJ5XHJcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRGaWx0ZXIubmFtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZtLnNlbGVjdGVkRmlsdGVycy5wdXNoKHNlbGVjdGVkRmlsdGVyKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB2bS5yZW1vdmVQYXJhbUZyb21TZWFyY2ggPSBmdW5jdGlvbihwYXJhbSkge1xyXG4gICAgICAgIGlmIChwYXJhbSA9PT0gJ2RhdGVGaWx0ZXJMYWJlbCcpIHtcclxuICAgICAgICAgICAgZGVsZXRlIHZtLmxvY2F0aW9uLnNlYXJjaCgpWydkYXRlJ107XHJcbiAgICAgICAgICAgIGRlbGV0ZSB2bS5sb2NhdGlvbi5zZWFyY2goKVsndGltZSddO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocGFyYW0gPT09ICdleGFjdG1hdGNob25seScpIHtcclxuICAgICAgICAgICAgdm0ubG9jYXRpb24uc2VhcmNoKCkucSA9IHZtLmxvY2F0aW9uLnNlYXJjaCgpLnEucmVwbGFjZSgvWydcIl0rL2csICcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRlIHZtLmxvY2F0aW9uLnNlYXJjaCgpW3BhcmFtXTtcclxuICAgIH1cclxuXHJcbiAgICB2bS51cGRhdGVGaWx0ZXJzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIG5ld1NlYXJjaE9iaiA9IHZtLmxvY2F0aW9uLnNlYXJjaCgpLFxyXG4gICAgICAgICAgICBzZWFyY2hTdHIgPSBPYmplY3Qua2V5cyhuZXdTZWFyY2hPYmopLm1hcChmdW5jdGlvbihrZXkpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChuZXdTZWFyY2hPYmpba2V5XSlcclxuICAgICAgICAgICAgfSkuam9pbignJicpO1xyXG5cclxuICAgICAgICB3aW5kb3cuSU5GT1JNQS5TcGlubmVyLlNob3coalF1ZXJ5KCdib2R5JykpO1xyXG5cclxuICAgICAgICBpZiAoc2VhcmNoU3RyLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBzZWFyY2hTdHIgPSBcIiM/cGFnZT0xJnNvcnRCeT1yZWxldmFuY2Umc29ydE9yZGVyPWRlc2Mjc2VhcmNoVG9wXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2VhcmNoU3RyID0gJyM/JyArIHNlYXJjaFN0ciArICcjc2VhcmNoVG9wJztcclxuICAgICAgICB9XHJcbiAgICAgICAgICAgICAgIFxyXG4gICAgICAgIC8vIGNsZWFuIGZpeDogbmVlZCB0byB1cGRhdGUgZmFjZXRzXHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmFzc2lnbih3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lICsgc2VhcmNoU3RyKTtcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdm0uY2xlYXJTZWxlY3RlZEZpbHRlciA9IGZ1bmN0aW9uKGZpbHRlcikge1xyXG4gICAgICAgIHZtLnJlbW92ZVBhcmFtRnJvbVNlYXJjaChmaWx0ZXIucXVlcnkpO1xyXG4gICAgICAgIHZtLnVwZGF0ZUZpbHRlcnMoKTtcclxuICAgIH1cclxuXHJcbiAgICB2bS5jbGVhckFsbFNlbGVjdGVkRmlsdGVycyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIF8uZWFjaCh2bS5zZWxlY3RlZEZpbHRlcnMsIGZ1bmN0aW9uKHNlbGVjdGVkRmlsdGVyKSB7XHJcbiAgICAgICAgICAgIHZtLnJlbW92ZVBhcmFtRnJvbVNlYXJjaChzZWxlY3RlZEZpbHRlci5xdWVyeSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdm0udXBkYXRlRmlsdGVycygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vKiogVGhpcyBjb2xsZWN0cyB0aGUgdXNlcidzIHNhdmVkIGNvbXBhbmllcyAqKi8vXHJcbiAgICB2bS5zYXZlZENvbXBhbmllcyA9IHt9O1xyXG4gICAgdm0uc2F2ZUNvbXBhbnkgPSBmdW5jdGlvbiAoJGl0ZW0sIG1vZGVsLCBsYWJlbCkge1xyXG4gICAgICAgIHZtLnNhdmVkQ29tcGFuaWVzWyRpdGVtXSA9IHtcclxuICAgICAgICAgICAgc2VsZWN0ZWQ6IHRydWUsXHJcbiAgICAgICAgICAgIGxhYmVsOiAkaXRlbVxyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG5cclxuICAgICRzY29wZS5yZW1vdmVDb21wYW55ID0gZnVuY3Rpb24gKCRpdGVtLCBtb2RlbCwgbGFiZWwpIHtcclxuICAgICAgICBkZWxldGUgJHNjb3BlLnNhdmVkQ29tcGFuaWVzWyRpdGVtLmxhYmVsXTtcclxuICAgIH07XHJcblxyXG5cdHZhciBmYWNldHNGb3JBbmFseXRpY3MgPSBmYWxzZTtcclxuICAgIC8vKiogVGhpcyB1cGRhdGVzIHRoZSByb3V0ZXIvdXJsIHdpdGggdGhlIGxhdGVzdCBzZWFyY2ggcGFyYW1ldGVycyAqKi8vXHJcbiAgICB2bS51cGRhdGUgPSBmdW5jdGlvbiAoZmFjZXRHcm91cElkKSB7XHJcbiAgICAgICAgaWYoZmFjZXRHcm91cElkKSB7XHJcbiAgICAgICAgICAgIHZhciBmYWNldEdyb3VwO1xyXG4gICAgICAgICAgICAgICAgZmFjZXRzRm9yQW5hbHl0aWNzID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBfLmVhY2godm0uZmFjZXRHcm91cHMsIGZ1bmN0aW9uKGdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICBpZihncm91cC5pZCA9PT0gZmFjZXRHcm91cElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZmFjZXRHcm91cCA9IGdyb3VwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldEdyb3VwLmdldFNlbGVjdGVkRmFjZXRzKCksIGZ1bmN0aW9uIChmYWNldCkge1xyXG4gICAgICAgICAgICAgICAgaWYoZmFjZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZighZmFjZXRzRm9yQW5hbHl0aWNzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2V0c0ZvckFuYWx5dGljcyA9IGZhY2V0LmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhY2V0c0ZvckFuYWx5dGljcyArPSAnfCcgKyBmYWNldC5sYWJlbDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgdmFyIGV2ZW50X2RhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICBldmVudF9uYW1lOiAnc2VhcmNoX2ZhY2V0cycsXHJcbiAgICAgICAgICAgICAgICBzZWFyY2hfZmFjZXRfY2F0ZWdvcnk6IGZhY2V0R3JvdXAubGFiZWxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIGlmKGZhY2V0c0ZvckFuYWx5dGljcykge1xyXG4gICAgICAgICAgICAgICAgZXZlbnRfZGF0YS5zZWFyY2hfZmFjZXQgPSBmYWNldEdyb3VwLmxhYmVsICsgXCI6IFwiICsgZmFjZXRzRm9yQW5hbHl0aWNzO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBhbmFseXRpY3NFdmVudChcdCQuZXh0ZW5kKGFuYWx5dGljc19kYXRhLCBldmVudF9kYXRhKSApO1xyXG4gICAgICAgIH0gXHJcblx0XHRcclxuICAgICAgICAvLyBEaXNhYmxlIGFsbCBmYWNldCBvcHRpb25zIHdoaWxlIHVwZGF0aW5nIHNlYXJjaCByZXN1bHRzXHJcbiAgICAgICAgZmFjZXRBdmFpbGFiaWxpdHlTZXJ2aWNlLmRpc2FibGVGYWNldHMoKTtcclxuICAgICAgICB2bS51cGRhdGVGYWNldFRvZ2dsZVN0YXRlKCk7XHJcbiAgICAgICAgdm0uYWxsUmVnaW9uc0ZhY2V0c1NlbGVjdGVkKCk7XHJcblxyXG4gICAgICAgIHZhciBwYXJhbXMgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0Um91dGVCdWlsZGVyKCkuZ2V0Um91dGUoKS5zcGxpdCgnJicpO1xyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0Um91dGVCdWlsZGVyKCkuZ2V0Um91dGUoKS5pbmRleE9mKFwiY29tcGFuaWVzXCIpID49IDApIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaWR4X3BhcmFtIGluIHBhcmFtcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHBhcmFtc1tpZHhfcGFyYW1dLmluZGV4T2YoXCJjb21wYW5pZXNcIikgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb21wVmFsdWUgPSBwYXJhbXNbaWR4X3BhcmFtXS5zcGxpdCgnPScpWzFdO1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLmNvbXBhbmllc1tcImlzQ29tcGFueVNlbGVjdGVkXCJdID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB2bS5jb21wYW5pZXNbXCJjb21wYW5pZXNcIl0gPSBjb21wVmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2bS5jb21wYW5pZXNbXCJpc0NvbXBhbnlTZWxlY3RlZFwiXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2bS5jb21wYW5pZXNbXCJjb21wYW5pZXNcIl0gPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gcmVhcHBsaWVzIGZhY2V0IHNlbGVjdGVkIHN0YXR1cyB0byByZXNvbHZlIGlzc3VlIHJhaXNlZCBpbiBJU1ctNTk4OFxyXG4gICAgICAgIC8vIFRPRE86IHRvIGludmVzdGlnYXRlIGFjdHVhbCBjYXVzZSBvZiBkZWZhdWx0IGZ1bmMgbm90IHdvcmtpbmcgYXMgZXhwZWN0ZWRcclxuICAgICAgICBfLmVhY2godGhpcy5mYWNldEdyb3VwcywgZnVuY3Rpb24oZ3JvdXApIHtcclxuICAgICAgICAgICAgXy5lYWNoKGdyb3VwLmZhY2V0cywgZnVuY3Rpb24oZmFjZXQpIHtcclxuICAgICAgICAgICAgICAgIF8uZWFjaChmYWNldC5zdWJsaXN0LCBmdW5jdGlvbihzdWJmYWNldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmFjZXQoc3ViZmFjZXQuaWQpLnNlbGVjdGVkID0gc3ViZmFjZXQuc2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKCdwYWdlJykuc2V0VmFsdWUoJzEnKTtcclxuICAgICAgICB2YXIgcm91dGVCdWlsZGVyID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFJvdXRlQnVpbGRlcigpO1xyXG4gICAgICAgIHZtLmxvY2F0aW9uLnNlYXJjaChyb3V0ZUJ1aWxkZXIuZ2V0Um91dGUoKSk7XHJcbiAgICAgICAgdm0uc2VhcmNoU2VydmljZS5xdWVyeSgpO1xyXG4gICAgICAgIC8vU2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIHJlc3VsdHMgd2hlbiBhIG5ldyBwYWdlIGlzIGNob3NlblxyXG4gICAgICAgIHZtLmxvY2F0aW9uLmhhc2goXCJzZWFyY2hUb3BcIik7XHJcbiAgICAgICAgdm0uYW5jaG9yU2Nyb2xsKCk7XHJcbiAgICAgICAgdm0uZGVmYXVsdFN0YXRlID0gZmFsc2U7XHJcbiAgICAgICAgdm0uY2xlYXJBbGxTZXRGbGFnKCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHZtLnVwZGF0ZVRpbWUgPSBmdW5jdGlvbiAoZmlsdGVyKSB7XHJcbiAgICAgICAgaWYgKGZpbHRlciA9PT0gJ2N1c3RvbScpIHJldHVybjtcclxuICAgICAgICB2bS5zZWFyY2hTZXJ2aWNlLmdldEZpbHRlcigncGFnZScpLnNldFZhbHVlKCcxJyk7XHJcbiAgICAgICAgdmFyIHJvdXRlQnVpbGRlciA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRSb3V0ZUJ1aWxkZXIoKTtcclxuICAgICAgICBpZiAoZmlsdGVyID09IFwiYWxsXCIpIHtcclxuICAgICAgICAgICAgdm0uY2xlYXJEYXRlUmFuZ2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGhhc2ggPSB7fTtcclxuICAgICAgICB2YXIgdXJsUXVlcnkgPSBcIiZcIjtcclxuICAgICAgICB2YXIgaCA9IGRlY29kZVVSSUNvbXBvbmVudChyb3V0ZUJ1aWxkZXIuZ2V0Um91dGUoKSkuc3BsaXQoXCImXCIpO1xyXG4gICAgICAgIGZvciAodmFyIGlkeCBpbiBoKSB7XHJcbiAgICAgICAgICAgIGlmIChoW2lkeF0gIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRQYXJhbWV0ZXIgPSBoW2lkeF0uc3BsaXQoXCI9XCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYXJhbWV0ZXJbMF0gPT0gXCJkYXRlRmlsdGVyTGFiZWxcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIGhhc2hbY3VycmVudFBhcmFtZXRlclswXV0gPSB2bS50aW1lc09iamVjdFtmaWx0ZXJdLmlkO1xyXG4gICAgICAgICAgICAgICAgICAgIHVybFF1ZXJ5ID0gdXJsUXVlcnkgKyBcIiZcIiArIGN1cnJlbnRQYXJhbWV0ZXJbMF0gKyBcIj1cIiArIHZtLnRpbWVzT2JqZWN0W2ZpbHRlcl0uaWQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyYW1ldGVyWzBdICE9IFwiZGF0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hbY3VycmVudFBhcmFtZXRlclswXV0gPSBjdXJyZW50UGFyYW1ldGVyWzFdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmxRdWVyeSA9IHVybFF1ZXJ5ICsgXCImXCIgKyBjdXJyZW50UGFyYW1ldGVyWzBdICsgXCI9XCIgKyBjdXJyZW50UGFyYW1ldGVyWzFdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvL0lnbm9yZSBkYXRlIGZpbHRlciAocXVlcnlzdHJpbmdzKSBpZiBBbGwgb3B0aW9uIGlzIHNlbGVjdGVkLlxyXG4gICAgICAgIGlmIChmaWx0ZXIgIT0gXCJhbGxcIikge1xyXG4gICAgICAgICAgICBoYXNoW1widGltZVwiXSA9IHZtLnRpbWVzT2JqZWN0W2ZpbHRlcl0udmFsdWU7XHJcbiAgICAgICAgICAgIHVybFF1ZXJ5ID0gdXJsUXVlcnkgKyBcIiZ0aW1lPVwiICsgdm0udGltZXNPYmplY3RbZmlsdGVyXS52YWx1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh2bS5jb21wYW5pZXNbXCJpc0NvbXBhbnlTZWxlY3RlZFwiXSkge1xyXG4gICAgICAgICAgICBoYXNoW1wiY29tcGFuaWVzXCJdID0gdm0uY29tcGFuaWVzW1wiY29tcGFuaWVzXCJdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFwiY29tcGFuaWVzXCIgaW4gaGFzaCkge1xyXG4gICAgICAgICAgICB2bS5pc0NvbXBhbnlTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGhhc2hbXCJjb21wYW5pZXNcIl0gPSBoYXNoW1wiY29tcGFuaWVzXCJdLnJlcGxhY2UoLyUyMC9nLCBcIiBcIikucmVwbGFjZSgvJTNCL2csICc7Jyk7XHJcbiAgICAgICAgICAgIHZtLmNvbXBhbmllc1tcImNvbXBhbmllc1wiXSA9IGhhc2hbXCJjb21wYW5pZXNcIl0ucmVwbGFjZSgvJTIwL2csIFwiIFwiKS5yZXBsYWNlKC8lM0IvZywgJzsnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdm0ubG9jYXRpb24uc2VhcmNoKHVybFF1ZXJ5KTtcclxuICAgICAgICB2bS5zZWFyY2hTZXJ2aWNlLnF1ZXJ5VGltZVBlcmlvZChoYXNoKTtcclxuICAgICAgICAvL1Njcm9sbCB0byB0aGUgdG9wIG9mIHRoZSByZXN1bHRzIHdoZW4gYSBuZXcgcGFnZSBpcyBjaG9zZW5cclxuICAgICAgICB2bS5sb2NhdGlvbi5oYXNoKFwic2VhcmNoVG9wXCIpO1xyXG4gICAgICAgIHZtLmFuY2hvclNjcm9sbCgpO1xyXG4gICAgICAgIHZtLmRlZmF1bHRTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHZtLmNsZWFyQWxsU2V0RmxhZygpO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS5mYWNldENoYW5nZSA9IGZ1bmN0aW9uIChmYWNldCkge1xyXG4gICAgICAgIHZtLmRlZmF1bHRTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmFjZXRHcm91cChmYWNldC5wYXJlbnRJZCkuZ2V0RmFjZXQoZmFjZXQuaWQpLnNlbGVjdGVkID0gZmFjZXQuc2VsZWN0ZWQ7XHJcbiAgICAgICAgdm0uc2VsZWN0QWxsRmFjZXQoZmFjZXQsIGZhY2V0LnBhcmVudElkKTtcclxuICAgICAgICB2bS51cGRhdGUoZmFjZXQucGFyZW50SWQpO1xyXG4gICAgICAgIGlmKHZtLmtleXdvcmRTZWFyY2ggJiYgdm0uZW5hYmxlTXlTdXNicmlwdGlvbnMpXHJcbiAgICAgICAgICAgdm0udXBkYXRlQ29va2llKGZhY2V0LnBhcmVudElkKTtcclxuICAgICAgICB2bS5jbGVhckFsbFNldEZsYWcoKTtcclxuICAgIH07XHJcblxyXG4gICAgdm0uY2xlYXJGYWNldHNJbkdyb3VwID0gZnVuY3Rpb24gKGZhY2V0R3JvdXBJZCkge1xyXG4gICAgICAgIHZtLmRlZmF1bHRTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIF8uZWFjaCh2bS5zZWFyY2hTZXJ2aWNlLmdldEZhY2V0R3JvdXAoZmFjZXRHcm91cElkKS5mYWNldHMsIGZ1bmN0aW9uIChmYWNldCkge1xyXG4gICAgICAgICAgICBmYWNldC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB2bS5zZWxlY3RBbGxGYWNldChmYWNldCwgZmFjZXRHcm91cElkKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB2bS51cGRhdGUoZmFjZXRHcm91cElkKTtcclxuICAgICAgICBpZiAodm0ua2V5d29yZFNlYXJjaCAmJiB2bS5lbmFibGVNeVN1c2JyaXB0aW9ucylcclxuICAgICAgICAgICAgdm0udXBkYXRlQ29va2llKGZhY2V0R3JvdXBJZCk7XHJcbiAgICAgICAgdm0uY2xlYXJBbGxTZXRGbGFnKCk7XHJcbiAgICB9O1xyXG5cclxuXHQvKiAgXHJcbiAgICAgKiAgZmFjZXRHcm91cElkOiAncHVibGljYXRpb24nIFxyXG4gICAgICogIGZhY2V0SWRzOiBbJ0luIFZpdm8nLCAnUm9zZSBTaGVldCddIFxyXG4gICAgICovXHJcbiAgICB2bS5mYWNldENoYW5nZU11bHRpcGxlID0gZnVuY3Rpb24oZmFjZXRHcm91cElkLCBmYWNldElkcykge1xyXG4gICAgICAgIHZhciBmYWNldHMsXHJcbiAgICAgICAgICAgIHN1YmZhY2V0cyA9IFtdO1xyXG4gICAgICAgIGlmIChmYWNldElkcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIF8uZWFjaCh2bS5mYWNldEdyb3VwcywgZnVuY3Rpb24gKGdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuaWQgPT09IGZhY2V0R3JvdXBJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZhY2V0cyA9IGdyb3VwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldHMuZ2V0U2VsZWN0ZWRGYWNldHMoKSwgZnVuY3Rpb24gKGZhY2V0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmFjZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBmYWNldC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldElkcywgZnVuY3Rpb24gKGlkKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcHViRmFjZXRzID0gZmFjZXRzLmZhY2V0cztcclxuICAgICAgICAgICAgICAgIHZhciBzcGxpdE5hbWUgPSBpZC5zcGxpdChcIi1cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXROYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZCA9IHNwbGl0TmFtZVswXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF8uZWFjaChwdWJGYWNldHMsIGZ1bmN0aW9uIChwdWJGYWMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZmFjZXRJZCA9IHB1YkZhYy5pZC5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKFwiJ1wiLCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGZhY2V0SWQgPT09IGlkLnJlcGxhY2UoXCIgXCIsIFwiXCIpLnJlcGxhY2UoXCInXCIsIFwiXCIpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHViRmFjLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldElkcywgZnVuY3Rpb24gKGlkKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3BsaXROYW1lID0gaWQuc3BsaXQoXCItXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHNwbGl0TmFtZS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmVudElkID0gc3BsaXROYW1lWzBdLnJlcGxhY2UoXCIgXCIsIFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBteUlkID0gc3BsaXROYW1lWzFdLnJlcGxhY2UoXCJhbmRcIiwgXCImXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8uZWFjaCh2bS5mYWNldEdyb3VwcywgZnVuY3Rpb24gKGdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cC5pZCA9PSBwYXJlbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZmFjZXRzID0gZ3JvdXAuZmFjZXRzO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIF8uZWFjaChzdWJmYWNldHMsIGZ1bmN0aW9uIChzdWJmYWMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YmZhYy5pZC50b0xvd2VyQ2FzZSgpID09IG15SWQudG9Mb3dlckNhc2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZmFjLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmKHZtLmVuYWJsZU15U3VzYnJpcHRpb25zICYmIHZtLmtleXdvcmRTZWFyY2gpXHJcbiAgICAgICAgICAgICAgICB2bS5jcmVhdGVDb29raWUodm0uc3Vic2NyaWJlcl9jb29raWUsZmFjZXRJZHMsMzY1MCk7XHJcblxyXG4gICAgICAgICAgICB2bS51cGRhdGUoKTtcclxuICAgICAgICAgICAgdm0uY2xlYXJBbGxTZXRGbGFnKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdm0uY2xlYXJBbGxGYWNldHMoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qIFxyXG4gICAgICogVE9ETzogdGhpcyBjb21lcyBmcm9tIGEgZGlmZiBzZWFyY2ggYXBwLCBhbmQgbmVlZHMganF1ZXJ5IHRvIHdvcmsuXHJcbiAgICAgKiBlaXRoZXIgaG9vayB1cCBqcSB0byB0aGlzIGNvbnRyb2xsZXIgb3IgbW92ZSB0aGlzIGVsc2V3aGVyZSBcclxuICAgICAqL1xyXG4gICAgdm0uc2Nyb2xsVG9wID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIHZhciBsb2NhdGlvbiA9IGpxKFwiLnNlYXJjaC1mYWNldHNfX2hlYWRlclwiKS5vZmZzZXQoKS50b3A7XHJcbiAgICAgICAgLy93aW5kb3cuc2Nyb2xsVG8oMCwgbG9jYXRpb24gLSA4MCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHZtLmhhc1NlbGVjdGVkID0gZnVuY3Rpb24gKHZhbHVlcykge1xyXG4gICAgICAgIHJldHVybiBfLmZpbmQodmFsdWVzLCB7IHNlbGVjdGVkOiB0cnVlIH0pID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS5nZXRGaWx0ZXIgPSBmdW5jdGlvbiAoZmlsdGVyS2V5KSB7XHJcbiAgICAgICAgdmFyIGZpbHRlciA9IHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKGZpbHRlcktleSk7XHJcbiAgICAgICAgaWYgKCFmaWx0ZXIpIHtcclxuICAgICAgICAgICAgdm0uc2VhcmNoQm9vdHN0cmFwcGVyLmNyZWF0ZUZpbHRlcihmaWx0ZXJLZXksIFwiXCIpO1xyXG4gICAgICAgICAgICBmaWx0ZXIgPSB2bS5zZWFyY2hTZXJ2aWNlLmdldEZpbHRlcihmaWx0ZXJLZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmlsdGVyO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKiBUaGlzIGRlc2VsZWN0cyBhbnkgc2VsZWN0ZWQgZmFjZXQgY2hlY2tib3hlcywgY2xlYXJzIGFsbCBmYWNldCBwYXJhbWV0ZXJzXHJcbiAgICAgICAgZnJvbSB0aGUgc2VhcmNoIHF1ZXJ5LCBhbmQgcnVucyB0aGUgY2xlYXJEYXRlUmFuZ2UgZnVuY3Rpb24gKi9cclxuICAgIHZtLmNsZWFyQWxsRmFjZXRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBmYWNldENsZWFyID0gdGhpcztcclxuICAgICAgICB2YXIgZmFjZXRHcm91cHMgPSBmYWNldENsZWFyLmZhY2V0R3JvdXBzO1xyXG4gICAgICAgIF8uZWFjaChmYWNldEdyb3VwcywgZnVuY3Rpb24gKGdyb3VwKSB7XHJcbiAgICAgICAgICAgLy8gdmFyIGZhY2V0cyA9IHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmFjZXRHcm91cChncm91cC5pZCkuZ2V0U2VsZWN0ZWRGYWNldHMoKTtcclxuICAgICAgICAgICAgdmFyIGZhY2V0cyA9IGdyb3VwLmZhY2V0cztcclxuICAgICAgICAgICAgXy5lYWNoKGZhY2V0cywgZnVuY3Rpb24gKGZhY2V0KSB7XHJcbiAgICAgICAgICAgICAgICBmYWNldC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgXy5lYWNoKGZhY2V0LnN1Ymxpc3QsIGZ1bmN0aW9uIChzdWJGYWNldGl0ZW0pIHtcclxuICAgICAgICAgICAgICAgICAgICBzdWJGYWNldGl0ZW0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB2bS5jbGVhckRhdGVSYW5nZSgpO1xyXG4gICAgICAgIHZtLnVwZGF0ZSgpO1xyXG4gICAgICAgIGlmKHZtLmtleXdvcmRTZWFyY2ggJiYgdm0uZW5hYmxlTXlTdXNicmlwdGlvbnMpXHJcbiAgICAgICAgICAgICB2bS5jcmVhdGVDb29raWUodm0uc3Vic2NyaWJlcl9jb29raWUsIFtdLCAzNjUwKTtcclxuXHJcbiAgICAgICAgdm0uY2xlYXJBbGxWaXNpYmxlID0gZmFsc2U7XHJcbiAgICB9O1xyXG4gICAgLyoqXHJcbiAgICAgKiBGdW5jdGlvbiB0byBzZXQgc3RhdGUgb2YgY2xlYXJhbGxWaXNpYmxlIGZsYWdcclxuICAgICAqL1xyXG4gICAgdm0uY2xlYXJBbGxTZXRGbGFnID0gZnVuY3Rpb24oKXtcclxuICAgICAgICBpZighdm0udGhlbWVPbWRpYSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGZhY2V0Q2xlYXIgPSB0aGlzO1xyXG4gICAgICAgIHZhciBpc0FueWZhY2V0U2VsZWN0ZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdmFyIGZhY2V0R3JvdXBzID0gZmFjZXRDbGVhci5mYWNldEdyb3VwcztcclxuICAgICAgICBfLmVhY2goZmFjZXRHcm91cHMsIGZ1bmN0aW9uIChncm91cCkge1xyXG4gICAgICAgICAgICB2YXIgZmFjZXRzID0gZ3JvdXAuZmFjZXRzO1xyXG4gICAgICAgICAgICBfLmVhY2goZmFjZXRzLCBmdW5jdGlvbiAoZmFjZXQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmYWNldC5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzQW55ZmFjZXRTZWxlY3RlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZmFjZXRTdWJsaXN0ID0gZmFjZXQuc3VibGlzdDtcclxuICAgICAgICAgICAgICAgICAgICBfLmVhY2goZmFjZXRTdWJsaXN0LCBmdW5jdGlvbiAoY2hpbGRGYWNldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGRGYWNldC5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBbnlmYWNldFNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB2bS5jbGVhckFsbFZpc2libGUgPSBpc0FueWZhY2V0U2VsZWN0ZWQ7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qICpcclxuICAgICAqIENoZWNrIGlmIHNlYXJjaCByZXR1cm5lZCBhbnkgcmVjb3JkLlxyXG4gICAgICogKi9cclxuICAgIHZtLmhhc1Jlc3VsdHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGhhc1JlY29yZHNUb0Rpc3BsYXkgPSBmYWxzZTtcclxuICAgICAgICB2YXIgZmFjZXRDbGVhciA9IHRoaXM7XHJcblxyXG4gICAgICAgIHZhciBmYWNldEdyb3VwcyA9IGZhY2V0Q2xlYXIuZmFjZXRHcm91cHM7XHJcbiAgICAgICAgXy5lYWNoKGZhY2V0R3JvdXBzLCBmdW5jdGlvbiAoZ3JvdXApIHtcclxuICAgICAgICAgICAgdmFyIGZhY2V0cyA9IGdyb3VwLmZhY2V0cztcclxuICAgICAgICAgICAgXy5lYWNoKGZhY2V0cywgZnVuY3Rpb24gKGZhY2V0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmFjZXQuY291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzUmVjb3Jkc1RvRGlzcGxheSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gaGFzUmVjb3Jkc1RvRGlzcGxheTtcclxuICAgIH07XHJcblxyXG4gICAgdm0uY2xlYXJGaWx0ZXIgPSBmdW5jdGlvbiAoZmlsdGVyS2V5KSB7XHJcbiAgICAgICAgdmFyIGZpbHRlciA9IHZtLmdldEZpbHRlcihmaWx0ZXJLZXkpO1xyXG4gICAgICAgIGZpbHRlci5zZXRWYWx1ZShcIlwiKTtcclxuICAgIH07XHJcblxyXG4gICAgLyogVGhpcyBjbGVhcnMgdGhlIGRhdGUgcGFyYW1ldGVycyBmcm9tIHRoZSBzZWFyY2gsIGRlc2VsY3RzIGFueSBkYXRlIHJhZGlvXHJcbiAgICBidXR0b25zLCBhbmQgY2xlYXJzIGJvdGggY3VzdG9tIGRhdGUgaW5wdXQgZmllbGRzICoqL1xyXG4gICAgdm0uY2xlYXJEYXRlUmFuZ2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGZpbHRlciA9IHZtLmdldEZpbHRlcignZGF0ZScpO1xyXG4gICAgICAgIGZpbHRlci5zZXRWYWx1ZShcIlwiKTtcclxuICAgICAgICBmaWx0ZXIuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICB2YXIgZmlsdGVyRGF0ZUxhYmVsID0gdm0uZ2V0RmlsdGVyKCdkYXRlRmlsdGVyTGFiZWwnKTtcclxuICAgICAgICBmaWx0ZXJEYXRlTGFiZWwuc2V0VmFsdWUoXCJcIik7XHJcbiAgICAgICAgdmFyIGRhdGVzID0gdm0uRGF0ZUZpbHRlcnM7XHJcbiAgICAgICAgXy5lYWNoKGRhdGVzLCBmdW5jdGlvbiAoZGF0ZSkge1xyXG4gICAgICAgICAgICBpZiAoZGF0ZS5rZXkgPT0gXCJhbGxcIilcclxuICAgICAgICAgICAgICAgIGRhdGUuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBkYXRlLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgJHNjb3BlLmRhdGVWYWx1ZXMuZHRGcm9tID0gXCJcIjtcclxuICAgICAgICAkc2NvcGUuZGF0ZVZhbHVlcy5kdFRvID0gXCJcIjtcclxuICAgIH07XHJcblxyXG4gICAgdm0uZ2V0RGF0ZUZpbHRlckxhYmVsID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBmaWx0ZXJEYXRlTGFiZWwgPSB2bS5nZXRGaWx0ZXIoJ2RhdGVGaWx0ZXJMYWJlbCcpO1xyXG4gICAgICAgIHJldHVybiBmaWx0ZXJEYXRlTGFiZWwuX3ZhbHVlO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS5zZWFyY2hGb3JDb21wYW55ID0gZnVuY3Rpb24gKHNlbGVjdGVkQ29tcGFueSkge1xyXG4gICAgICAgIC8qIFxyXG4gICAgICAgICAqIFRoaXMgaXMgbm90IGNvcnJlY3QgcmlnaHQgbm93LCBzaG91bGQgYmUgdXNpbmcgZmFjZXQgZ3JvdXBzIGluc3RlYWQgd2lsbCBmaXggbGF0ZXIgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdmFyIGZhY2V0cyA9IHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmFjZXRHcm91cCgnY29tcGFuaWVzJykuZ2V0U2VsZWN0ZWRGYWNldHMoKTtcclxuXHJcbiAgICAgICAgdmFyIGZpbHRlciA9IHZtLmdldEZpbHRlcignY29tcGFuaWVzJyk7XHJcblxyXG4gICAgICAgIHZhciBjb21wYW55RmlsdGVyID0gc2VsZWN0ZWRDb21wYW55O1xyXG4gICAgICAgIHZhciBzZXAgPSAnOyc7XHJcblxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmFjZXRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbXBhbnlGaWx0ZXIgKz0gc2VwICsgZmFjZXRzW2ldLmlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZmlsdGVyLnNldFZhbHVlKGNvbXBhbnlGaWx0ZXIpO1xyXG5cclxuICAgICAgICB2bS51cGRhdGUoKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIHZtLnZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24gKGRhdGUsIHR5cGUpIHtcclxuICAgICAgICBpZihkYXRlID09IHVuZGVmaW5lZClcclxuICAgICAgICAgICAgYWxlcnQoXCJUaGUgJ1wiK3R5cGUrXCInIGRhdGUgdmFsdWUgaXNuJ3QgcHJvcGVybHkgZm9ybWF0dGVkXCIpO1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgdm0uY3VzdG9tRGF0ZVJhbmdlU2VhcmNoID0gZnVuY3Rpb24gKGZpbHRlcktleSwgc3RhcnREYXRlLCBlbmREYXRlLCBzb3VyY2VDb250cm9sKSB7XHJcblxyXG4gICAgICAgIHZhciBmaWx0ZXIgPSB2bS5nZXRGaWx0ZXIoZmlsdGVyS2V5KTtcclxuICAgICAgICB2YXIgZmlsdGVyRGF0ZUxhYmVsID0gdm0uZ2V0RmlsdGVyKCdkYXRlRmlsdGVyTGFiZWwnKTtcclxuICAgICAgICBmaWx0ZXJEYXRlTGFiZWwuc2V0VmFsdWUoJ2N1c3RvbScpO1xyXG5cclxuICAgICAgICBpZihzdGFydERhdGUgPiBuZXcgRGF0ZSgpKXtcclxuICAgICAgICAgICAgYWxlcnQoXCJGcm9tIGRhdGUgY2FuIG5vdCBiZSBncmVhdGVyIHRoYW4gdG9kYXlcIik7Ly8gIHlvdSBjYW4ndCBzZWxlY3QgZGF0ZSBiaWdnZXIgdGhhbiB0b2RheVwiKTtcclxuICAgICAgICAgICAgJHNjb3BlLmRhdGVWYWx1ZXMuZHRGcm9tID0gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKGVuZERhdGUgPiBuZXcgRGF0ZSgpKXtcclxuICAgICAgICAgICAgYWxlcnQoXCJUbyBkYXRlIGNhbiBub3QgYmUgZ3JlYXRlciB0aGFuIHRvZGF5XCIpOy8vXHJcbiAgICAgICAgICAgICRzY29wZS5kYXRlVmFsdWVzLmR0VG8gPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHN0YXJ0RGF0ZSA+IDAgJiYgZW5kRGF0ZSA+IDAgJiYgc3RhcnREYXRlIDw9IGVuZERhdGUpIHtcclxuICAgICAgICAgICAgdmFyIGRhdGUxVW5wYXJzZWQgPSBuZXcgRGF0ZShzdGFydERhdGUpO1xyXG4gICAgICAgICAgICB2YXIgZGF0ZTEgPSAoZGF0ZTFVbnBhcnNlZC5nZXRNb250aCgpICsgMSkgKyAnLycgKyBkYXRlMVVucGFyc2VkLmdldERhdGUoKSArICcvJyArIGRhdGUxVW5wYXJzZWQuZ2V0RnVsbFllYXIoKTtcclxuXHJcbiAgICAgICAgICAgIHZhciBkYXRlMlVucGFyc2VkID0gbmV3IERhdGUoZW5kRGF0ZSk7XHJcbiAgICAgICAgICAgIHZhciBkYXRlMiA9IChkYXRlMlVucGFyc2VkLmdldE1vbnRoKCkgKyAxKSArICcvJyArIGRhdGUyVW5wYXJzZWQuZ2V0RGF0ZSgpICsgJy8nICsgZGF0ZTJVbnBhcnNlZC5nZXRGdWxsWWVhcigpO1xyXG5cclxuICAgICAgICAgICAgZmlsdGVyLnNldFZhbHVlKGRhdGUxICsgXCI7XCIgKyBkYXRlMik7XHJcblxyXG4gICAgICAgICAgICB2bS51cGRhdGUoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHN0YXJ0RGF0ZSA+IDAgJiYgdm0udGhlbWVDaGVtaXN0QW5kRHJ1Z2dpc3QgJiYgc3RhcnREYXRlIDw9IG5ldyBEYXRlKCkgJiYgZW5kRGF0ZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgIHZhciBkYXRlMVVucGFyc2VkID0gbmV3IERhdGUoc3RhcnREYXRlKTtcclxuICAgICAgICAgICAgdmFyIGRhdGUxID0gKGRhdGUxVW5wYXJzZWQuZ2V0TW9udGgoKSArIDEpICsgJy8nICsgZGF0ZTFVbnBhcnNlZC5nZXREYXRlKCkgKyAnLycgKyBkYXRlMVVucGFyc2VkLmdldEZ1bGxZZWFyKCk7XHJcblxyXG4gICAgICAgICAgICB2YXIgZGF0ZTJVbnBhcnNlZCA9IG5ldyBEYXRlKGVuZERhdGUpO1xyXG4gICAgICAgICAgICB2YXIgZGF0ZTNVbnBhcnNlZCA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgICAgICAgICB2YXIgZGF0ZTMgPSAoZGF0ZTNVbnBhcnNlZC5nZXRNb250aCgpICsgMSkgKyAnLycgKyBkYXRlM1VucGFyc2VkLmdldERhdGUoKSArICcvJyArIGRhdGUzVW5wYXJzZWQuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgICAgdmFyIGRhdGUyO1xyXG5cclxuICAgICAgICAgICAgaWYgKGRhdGUyVW5wYXJzZWQgaW5zdGFuY2VvZiBEYXRlICYmICFpc05hTihkYXRlMlVucGFyc2VkLnZhbHVlT2YoKSkpIHtcclxuICAgICAgICAgICAgICAgIGRhdGUyID0gIChkYXRlMlVucGFyc2VkLmdldE1vbnRoKCkgKyAxKSArICcvJyArIGRhdGUyVW5wYXJzZWQuZ2V0RGF0ZSgpICsgJy8nICsgZGF0ZTJVbnBhcnNlZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZGF0ZTIgPSAgZGF0ZTM7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGZpbHRlci5zZXRWYWx1ZShkYXRlMSArIFwiO1wiICsgZGF0ZTIpO1xyXG5cclxuICAgICAgICAgICAgdm0udXBkYXRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgIGlmKCAoc3RhcnREYXRlIT1cIlwiICYmIHN0YXJ0RGF0ZSAhPSB1bmRlZmluZWQpICYmIChlbmREYXRlIT1cIlwiICYmIGVuZERhdGUhPXVuZGVmaW5lZCkgKXtcclxuICAgICAgICAgICAgICAgIGlmKHN0YXJ0RGF0ZSA+IGVuZERhdGUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGFsZXJ0KFwiRnJvbSBkYXRlIGNhbiBub3QgYmUgZ3JlYXRlciB0aGFuIFRvIGRhdGVcIik7Ly8gIFlvdSBjYW50IHB1dCAnZnJvbScgZGF0ZSBiaWdnZXIgdGhhbiAndG8nIGRhdGVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoc291cmNlQ29udHJvbCA9PSAnZnJvbScpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgJHNjb3BlLmRhdGVWYWx1ZXMuZHRGcm9tID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUuZGF0ZVZhbHVlcy5kdFRvID0gXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgICRzY29wZS5vcHRpb25zID0ge1xyXG4gICAgICAgIHNob3dXZWVrczogZmFsc2VcclxuICAgIH07XHJcblxyXG4gICAgLy8qKiBUaGlzIGJ1aWxkcyBkYXRlIHBhcmFtZXRlcnMgZm9yIHRoZSBzZWFyY2ggcXVlcnkgKiovL1xyXG4gICAgdm0uZGF0ZVJhbmdlU2VhcmNoID0gZnVuY3Rpb24gKGZpbHRlcktleSwgZGF0ZUZpbHRlcikge1xyXG4gICAgICAgIHZhciBmaWx0ZXIgPSB2bS5nZXRGaWx0ZXIoZmlsdGVyS2V5KTtcclxuICAgICAgICB2YXIgZmlsdGVyRGF0ZUxhYmVsID0gdm0uZ2V0RmlsdGVyKCdkYXRlRmlsdGVyTGFiZWwnKTtcclxuXHJcbiAgICAgICAgdmFyIHN0YXJ0RGF0ZSA9IHZtLmRhdGVzT2JqZWN0W2RhdGVGaWx0ZXJdO1xyXG4gICAgICAgIHZhciBlbmREYXRlID0gZm9ybWF0RGF0ZU9iamVjdChuZXcgRGF0ZSgpKTtcclxuXHJcbiAgICAgICAgJHNjb3BlLmRhdGVWYWx1ZXMuZHRGcm9tID0gXCJcIjtcclxuICAgICAgICAkc2NvcGUuZGF0ZVZhbHVlcy5kdFRvID0gXCJcIjtcclxuXHJcbiAgICAgICAgZmlsdGVyRGF0ZUxhYmVsLnNldFZhbHVlKGRhdGVGaWx0ZXIpO1xyXG4gICAgICAgIGZpbHRlci5zZXRWYWx1ZShzdGFydERhdGUgKyBcIjtcIiArIGVuZERhdGUpO1xyXG5cclxuICAgICAgICB2bS51cGRhdGVTZWxlY3RlZERhdGUoZGF0ZUZpbHRlcik7XHJcbiAgICAgICAgdm0udXBkYXRlVGltZShkYXRlRmlsdGVyKTtcclxuICAgICAgICAvL3ZtLnVwZGF0ZSgpO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS51cGRhdGVTZWxlY3RlZERhdGUgPSBmdW5jdGlvbiAoZGF0ZUZpbHRlcikge1xyXG5cclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZtLkRhdGVGaWx0ZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRlRmlsdGVyID09IHZtLkRhdGVGaWx0ZXJzW2ldLmtleSkge1xyXG5cclxuICAgICAgICAgICAgICAgIHZtLkRhdGVGaWx0ZXJzW2ldLnNlbGVjdGVkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcblxyXG4gICAgICAgICAgICAgICAgdm0uRGF0ZUZpbHRlcnNbaV0uc2VsZWN0ZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHZtLmFsbFJlZ2lvbnNGYWNldHNTZWxlY3RlZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBmYWNldExpc3QgPSB0aGlzLFxyXG4gICAgICAgICAgICBmYWNldEdyb3VwcyA9IGZhY2V0TGlzdC5mYWNldEdyb3VwcztcclxuXHJcbiAgICAgICAgICAgIGlmICh2bS50aGVtZU9tZGlhKSB7XHJcbiAgICAgICAgICAgICAgLy8gbG9vcCBhbGwgZmFjZXRzXHJcbiAgICAgICAgICAgICAgICBfLmVhY2goZmFjZXRHcm91cHMsIGZ1bmN0aW9uKGdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZhY2V0cyA9IGdyb3VwLmZhY2V0cztcclxuICAgICAgICAgICAgICAgICAgICBfLmVhY2goZmFjZXRzLCBmdW5jdGlvbihmYWNldCkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGZhY2V0IGdyb3VwIGlzIHJlZ2lvbnMgb3Igc2VydmljZSBhcmVhXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNldC5wYXJlbnRJZCA9PT0gJ3JlZ2lvbnMnIHx8IGZhY2V0LnBhcmVudElkID09PSAnc2VydmljZWFyZWEnKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2V0LnN1Ymxpc3QgJiYgZmFjZXQuc3VibGlzdC5sZW5ndGggPT09IDAgJiYgZmFjZXQuc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdm0uYWxsU3ViRmFjZXRTZWxlY3RlZCA9IHRydWUsIGlmIGFueSBvZiB0aGUgc3VibGlzdCBpdGVtcyBzZWxlY3RlZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFsbFJlZ2lvbnNGYWNldHNTZWxlY3RlZCA9IGZhY2V0LnN1Ymxpc3QgJiYgZmFjZXQuc3VibGlzdC5sZW5ndGggPiAwID8gXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZXQuc3VibGlzdC5ldmVyeShmdW5jdGlvbihpdG0peyByZXR1cm4gaXRtLnNlbGVjdGVkOyB9KSA6IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdm0uYWxsU3ViRmFjZXRTZWxlY3RlZCA9IGFsbFJlZ2lvbnNGYWNldHNTZWxlY3RlZDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIHNlbGVjdCBwYXJlbnQgZmFjZXQgb2Ygc3VibGlzdFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFsbFJlZ2lvbnNGYWNldHNTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2V0LnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2bS5QYXJlbnRGYWNldElkID0gIGZhY2V0LnBhcmVudElkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWNldC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB2bS5zZWxlY3RBbGxGYWNldCA9IGZ1bmN0aW9uKGZhY2V0LCBmYWNldElkKSB7XHJcbiAgICAgICAgdmFyIGZhY2V0TGlzdCA9IHRoaXMsXHJcbiAgICAgICAgICAgIGZhY2V0R3JvdXBzID0gZmFjZXRMaXN0LmZhY2V0R3JvdXBzO1xyXG5cclxuICAgICAgICBpZih2bS50aGVtZU9tZGlhICYmIGZhY2V0ICYmIChmYWNldElkID09PSAncmVnaW9ucycgfHwgZmFjZXRJZCA9PT0gJ3NlcnZpY2VhcmVhJykgJiYgZmFjZXQuc3VibGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdmFyIHJlZ2lvbnNmYWNldEluZGV4ID0gZmFjZXRHcm91cHMuZmluZEluZGV4KGZ1bmN0aW9uIChlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZWxlbWVudC5pZCA9PT0gZmFjZXRJZDtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHZhciBzZWxlY3RlZEZhY2V0SW5kZXggPSBmYWNldEdyb3Vwc1tyZWdpb25zZmFjZXRJbmRleF0uZmFjZXRzLmZpbmRJbmRleChmdW5jdGlvbiAoZWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVsZW1lbnQuaWQgPT09IGZhY2V0LmlkO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgXy5lYWNoKGZhY2V0R3JvdXBzW3JlZ2lvbnNmYWNldEluZGV4XS5mYWNldHNbc2VsZWN0ZWRGYWNldEluZGV4XS5zdWJsaXN0LCBmdW5jdGlvbihzdWJsaXN0KSB7XHJcbiAgICAgICAgICAgICAgICBzdWJsaXN0LnNlbGVjdGVkID0gZmFjZXQuc2VsZWN0ZWQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdm0uZ2V0RmFjZXRHcm91cFN0YXRlID0gZnVuY3Rpb24gKGdyb3VwKSB7XHJcbiAgICAgICAgLy8gQ29kZSB0byBFeHBhbmQgcmVmaW5lbWVudHMgYmFzZWQgb24gQ01TIGNvbmZpZ3VyYXRpb24uIChmaXJzdCB0aW1lIG9ubHkpXHJcbiAgICAgICAgaWYgKHZtLmRlZmF1bHRFeHBhbmRlZFJlZmluZW1lbnRzICYmIHZtLmRlZmF1bHRFeHBhbmRlZFJlZmluZW1lbnRzICE9PSBcIlwiKSB7XHJcbiAgICAgICAgICAgIHZtLmRlZmF1bHRFeHBhbmRlZFJlZmluZW1lbnRzLnNwbGl0KCcsJykuZm9yRWFjaChmdW5jdGlvbihlbGVtZW50KSB7XHJcbiAgICAgICAgICAgICAgICB2bS5mYWNldGdyb3VwU3RhdGVbZWxlbWVudF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIC8vIHNldCB0byBudWxsIGZvciBcImZpcnN0IHRpbWUgb25seVwiXHJcbiAgICAgICAgICAgIHZtLmRlZmF1bHRFeHBhbmRlZFJlZmluZW1lbnRzID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF2bS5kZWZhdWx0U3RhdGUgJiYgalF1ZXJ5KCcjcGVyc2lzdFVzZXJTdGF0ZScpLnZhbCgpID09IFwiZmFsc2VcIiApIHsgcmV0dXJuIGZhbHNlOyB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gc2V0IHRoZSBuZXcgcHJvcGVydHkgdG8gdHJ1ZSBpZiBkZWZhdWx0cyBoYXMgdmFsdWVzIChkZWZhdWx0cyBhcmUgYWxyZWFkeSBzZXQgdG8gZmFsc2UpXHJcbiAgICAgICAgaWYgKHZtLmZhY2V0Z3JvdXBTdGF0ZVtncm91cC5pZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB2bS5mYWNldGdyb3VwU3RhdGVbZ3JvdXAuaWRdID0galF1ZXJ5KCcjZGVmYXVsdEV4cGFuZGVkUmVmaW5lbWVudHMnKS52YWwoKSAhPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc2V0IGZhY2V0Z3JvdXBTdGF0ZSBmb3IgZ3JvdXAgd2hlcmUgb25lIGZhY2V0L3N1YmZhY2V0IGlzIHNlbGVjdGVkXHJcbiAgICAgICAgLy8gdGhpcyBleHBhbmRzIHRoZSBVSSBmb3IgdGhlIHJlc3BlY3RpdmUgZmFjZXQgZ3JvdXAgXHJcbiAgICAgICAgXy5lYWNoKHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmFjZXRHcm91cChncm91cC5pZCkuZmFjZXRzLCBmdW5jdGlvbihmYWNldCkge1xyXG4gICAgICAgICAgICBpZiAoZmFjZXQuc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdmYWNldCcsIGZhY2V0LmlkKTtcclxuICAgICAgICAgICAgICAgIHZtLmZhY2V0Z3JvdXBTdGF0ZVtncm91cC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldC5zdWJsaXN0LCBmdW5jdGlvbihzdWJGYWNldCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1YkZhY2V0LnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ3N1YkZhY2V0Jywgc3ViRmFjZXQuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLmZhY2V0Z3JvdXBTdGF0ZVtncm91cC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiB2bS5mYWNldGdyb3VwU3RhdGVbZ3JvdXAuaWRdO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS5pc1BhcnRpYWxTZWxlY3RlZGZhY2V0R3JvdXAgPSBmdW5jdGlvbiAoZ3JvdXApIHtcclxuICAgICAgICBpZiAoIXZtLnRoZW1lT21kaWEpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICBpZiAoZ3JvdXAgJiYgKGdyb3VwLnBhcmVudElkID09PSAncmVnaW9ucycgfHwgZ3JvdXAucGFyZW50SWQgPT09ICdzZXJ2aWNlYXJlYScpICYmIGdyb3VwLnN1Ymxpc3QubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZhciBmYWNldHMgPSBncm91cC5zdWJsaXN0O1xyXG4gICAgICAgICAgICB2YXIgc2VsZWN0ZWRDb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHZhciB1blNlbGVjdGVkQ291bnQgPSAwO1xyXG4gICAgICAgICAgICBfLmVhY2goZmFjZXRzLCBmdW5jdGlvbiAoZmFjZXQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmYWNldC5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ291bnQrKztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5TZWxlY3RlZENvdW50Kys7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdW5TZWxlY3RlZENvdW50ID4gMCAmJiBzZWxlY3RlZENvdW50ID4gMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS51cGRhdGVGYWNldFRvZ2dsZVN0YXRlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBmYWNldFNob3dNb3JlID0gdGhpcztcclxuICAgICAgICAgICAgdmFyIGZhY2V0R3JvdXBzID0gZmFjZXRTaG93TW9yZS5mYWNldEdyb3VwcztcclxuICAgICAgICAgICAgXy5lYWNoKGZhY2V0R3JvdXBzLCBmdW5jdGlvbiAoZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgIGlmKGdyb3VwLlNob3dNb3JlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdm0uZmFjZXRXaXRoU2hvd01vcmUucHVzaChncm91cC5pZClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBmYWNldHMgPSBncm91cC5mYWNldHM7XHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldHMsIGZ1bmN0aW9uIChmYWNldCkge1xyXG4gICAgICAgICAgICAgICAgaWYoZ3JvdXAuU2hvd01vcmUpIHtcclxuICAgICAgICAgICAgICAgICAgICB2bS5zdWJGYWNldFdpdGhTaG93TW9yZS5wdXNoKGZhY2V0LmlkKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcbn07XHJcblxyXG52YXIgaW5mb3JtYVNlYXJjaEFwcCA9IGFuZ3VsYXIubW9kdWxlKCdpbmZvcm1hU2VhcmNoQXBwJyk7XHJcbmluZm9ybWFTZWFyY2hBcHAuY29udHJvbGxlcihcIkluZm9ybWFGYWNldENvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJHJvb3RTY29wZScsICckbG9jYXRpb24nLCAnJGh0dHAnLCAnJGFuY2hvclNjcm9sbCcsICckdGltZW91dCcsICdzZWFyY2hTZXJ2aWNlJywgJ3NlYXJjaEJvb3RzdHJhcHBlcicsICdmYWNldEF2YWlsYWJpbGl0eVNlcnZpY2UnLCBJbmZvcm1hRmFjZXRDb250cm9sbGVyXSk7Iiwi77u/LyogZ2xvYmFsIF8sIGRhdGVzT2JqZWN0LCBhbmd1bGFyLCBhbmFseXRpY3NfZGF0YSAqL1xyXG5pbXBvcnQgeyBhbmFseXRpY3NFdmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xsZXJzL2FuYWx5dGljcy1jb250cm9sbGVyJztcclxuXHJcbnZhciBJbmZvcm1hRmFjZXREYXRhQ29udHJvbGxlciA9IGZ1bmN0aW9uICgkc2NvcGUsICRyb290U2NvcGUsICRsb2NhdGlvbiwgJGh0dHAsICRhbmNob3JTY3JvbGwsICR0aW1lb3V0LCAgc2VhcmNoU2VydmljZSwgc2VhcmNoQm9vdHN0cmFwcGVyLCBmYWNldEF2YWlsYWJpbGl0eVNlcnZpY2UpIHtcclxuICAgIFwidXNlIHN0cmljdFwiO1xyXG4gICAgLy8gQmluZCBgdGhpc2AgdG8gdm0gLSBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSB2aWV3IG1vZGVsXHJcbiAgICB2YXIgdm0gPSB0aGlzO1xyXG5cclxuICAgIC8vIEdlbmVyYWwgRmFjZXQgc3R1ZmZcclxuICAgIHZtLmZhY2V0R3JvdXBzID0gc2VhcmNoU2VydmljZS5nZXRGYWNldEdyb3VwcygpO1xyXG4gICAgdm0uc2VhcmNoU2VydmljZSA9IHNlYXJjaFNlcnZpY2U7XHJcbiAgICB2bS5sb2NhdGlvbiA9ICRsb2NhdGlvbjtcclxuICAgIHZtLmFuY2hvclNjcm9sbCA9ICRhbmNob3JTY3JvbGw7XHJcbiAgICB2bS5zZWFyY2hCb290c3RyYXBwZXIgPSBzZWFyY2hCb290c3RyYXBwZXI7XHJcbiAgICB2bS5NYXhGYWNldFNob3cgPSA1O1xyXG4gICAgdm0uc2hvd2luZ09ubHlTdWJzY3JpcHRpb25zID0gZmFsc2U7XHJcbiAgICB2bS5zdWJzY3JpYmVyX2Nvb2tpZTtcclxuICAgIHZtLnN1YnNjcmlwdGlvbnM7XHJcbiAgICB2bS5lbmFibGVNeVN1c2JyaXB0aW9ucyA9IGZhbHNlO1xyXG4gICAgdm0ua2V5d29yZFNlYXJjaD1mYWxzZTtcclxuXHQkcm9vdFNjb3BlLiR3YXRjaCgnZmFjZXRBdmFpbGFiaWxpdHknLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdm0uYXJlRmFjZXRzRGlzYWJsZWQgPSBmYWNldEF2YWlsYWJpbGl0eVNlcnZpY2UuZmFjZXRzQXJlRW5hYmxlZCgpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdm0ub3JpZ2luYWxHcm91cCA9IFtdO1xyXG5cclxuICAgICRzY29wZS4kd2F0Y2goZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBzZWFyY2hTZXJ2aWNlLmdldFBhZ2VyKCk7XHJcbiAgICB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdm0uZmFjZXRHcm91cHMgPSBzZWFyY2hTZXJ2aWNlLmdldEZhY2V0R3JvdXBzKCk7XHJcbiAgICAgICAgdm0ub3JpZ2luYWxHcm91cCA9IHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmFjZXRHcm91cHMoKTtcclxuICAgICAgICB2YXIgZWxlbWVudFZhbHVlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJoaWRJbmNsdWRlU2VhcmNoXCIpLnZhbHVlO1xyXG4gICAgICAgIHZhciBjb250ZW50VHlwZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiaGlkQ29udGVudFR5cGVcIikudmFsdWU7XHJcbiAgICAgICAgdmFyIHJlcXVpcmVkRmFjZXRzID0gZWxlbWVudFZhbHVlLnNwbGl0KCcsJyk7XHJcblxyXG4gICAgICAgIHZtLmZhY2V0R3JvdXBzID0gXy5maWx0ZXIodm0uZmFjZXRHcm91cHMsIGZ1bmN0aW9uIChmZykge1xyXG4gICAgICAgICAgICBmZy5mYWNldHMuZm9yRWFjaChmdW5jdGlvbiAoZikge1xyXG5cclxuICAgICAgICAgICAgICAgIHZhciBzdWJMaXN0U2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmIChmLnN1Ymxpc3QgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGYuc3VibGlzdC5mb3JFYWNoKGZ1bmN0aW9uICh3KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3LnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJMaXN0U2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoIXN1Ykxpc3RTZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGYuaXNDb2xsYXBzZWRTdWJmYWNldCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGYucGFyZW50SWQgPT0gXCJjb250ZW50dHlwZVwiICYmIGYuaWQgPT0gY29udGVudFR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBmLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBlbGVtZW50VmFsdWUuaW5jbHVkZXMoZmcuaWQpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB2YXIgdGVtcERhdGEgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBmYWNldElkeCA9IDA7IGZhY2V0SWR4IDwgdm0uZmFjZXRHcm91cHMubGVuZ3RoOyBmYWNldElkeCsrKSB7XHJcbiAgICAgICAgICAgIHRlbXBEYXRhLnB1c2godm0uZmFjZXRHcm91cHNbZmFjZXRJZHhdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdm0uZmFjZXRHcm91cHMuc3BsaWNlKDAsIHZtLmZhY2V0R3JvdXBzLmxlbmd0aCk7XHJcbiAgICAgICAgaWYgKHRlbXBEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgZmFjZXRJZHggPSAwOyBmYWNldElkeCA8IHJlcXVpcmVkRmFjZXRzLmxlbmd0aDsgZmFjZXRJZHgrKykge1xyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgbGFiZWxDb3VudCA9IDA7IGxhYmVsQ291bnQgPCByZXF1aXJlZEZhY2V0cy5sZW5ndGg7IGxhYmVsQ291bnQrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wRGF0YVtsYWJlbENvdW50XSAmJiB0ZW1wRGF0YVtsYWJlbENvdW50XS5pZCA9PSByZXF1aXJlZEZhY2V0c1tmYWNldElkeF0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdm0uZmFjZXRHcm91cHMuc3BsaWNlKGZhY2V0SWR4LCAwLCB0ZW1wRGF0YVtsYWJlbENvdW50XSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodm0uZmFjZXRHcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAkKFwiLmJ1dHRvbi1jb250YWluZXJcIikuc2hvdygpO1xyXG4gICAgICAgICAgICBpZiAoalF1ZXJ5LmhvbGRSZWFkeSlcclxuICAgICAgICAgICAgalF1ZXJ5LmhvbGRSZWFkeShmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgJChcIi5idXR0b24tY29udGFpbmVyXCIpLmhpZGUoKTtcclxuICAgICAgICAgICAgaWYgKGpRdWVyeS5ob2xkUmVhZHkpXHJcbiAgICAgICAgICAgIGpRdWVyeS5ob2xkUmVhZHkodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChzZWFyY2hTZXJ2aWNlLmdldE5ld1NlYXJjaCgpKSB7XHJcbiAgICAgICAgICAgIHZtLmZhY2V0R3JvdXBzID0gdm0ub3JpZ2luYWxHcm91cDtcclxuICAgICAgICAgICAgc2VhcmNoU2VydmljZS5faXNOZXdTZWFyY2ggPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9LCB0cnVlKTtcclxuXHJcbiAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsgICAgICAgXHJcbiAgICAgICAgICAgIHZtLmtleXdvcmRTZWFyY2ggPSBmYWxzZTtcclxuICAgIH0pO1xyXG5cclxuICAgIHZtLnVwZGF0ZUNvb2tpZSA9IGZ1bmN0aW9uIChmYWNldFBhcmVudElkPW51bGwpIHtcclxuICAgICAgICBpZiAodm0uc3Vic2NyaXB0aW9ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHZhciBzdWJzY3JpcHRpb25JZCA9ICdwdWJsaWNhdGlvbicsIGlzc3Vic2NyaXB0aW9uQ2hhbm5lbCA9IGZhbHNlOztcclxuICAgICAgICAgICAgXy5lYWNoKHZtLnN1YnNjcmlwdGlvbnMsIGZ1bmN0aW9uIChjaGFubmVsKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3BsaXROYW1lID0gY2hhbm5lbC5zcGxpdChcIi1cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXROYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBzdWJzY3JpcHRpb25JZCA9IHNwbGl0TmFtZVswXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChmYWNldFBhcmVudElkID09IHN1YnNjcmlwdGlvbklkLnJlcGxhY2UoXCIgXCIsIFwiXCIpLnJlcGxhY2UoXCInXCIsIFwiXCIpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpc3N1YnNjcmlwdGlvbkNoYW5uZWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc3N1YnNjcmlwdGlvbkNoYW5uZWwpIHtcclxuICAgICAgICAgICAgICAgIHZhciBjb29raWVfZmFjZXRzID0gW107XHJcbiAgICAgICAgICAgICAgICBfLmVhY2godm0uZmFjZXRHcm91cHMsIGZ1bmN0aW9uIChncm91cCkge1xyXG4gICAgICAgICAgICAgICAgICAgIF8uZWFjaChncm91cC5nZXRTZWxlY3RlZEZhY2V0cygpLCBmdW5jdGlvbiAoZmFjZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhY2V0ICYmIGZhY2V0LnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFjZXQucGFyZW50SWQgPT0gXCJwdWJsaWNhdGlvblwiICYmIGNvb2tpZV9mYWNldHMuaW5kZXhPZihmYWNldC5sYWJlbCkgPT09IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29va2llX2ZhY2V0cy5wdXNoKGZhY2V0LmxhYmVsLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmYWNldC5wYXJlbnRJZCAhPSBcInB1YmxpY2F0aW9uXCIgJiYgY29va2llX2ZhY2V0cy5pbmRleE9mKGZhY2V0LnBhcmVudElkICsgJy0nICsgZmFjZXQubGFiZWwpID09PSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGlzU3Vic2NyaWJlcj1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmVhY2godm0uc3Vic2NyaXB0aW9ucywgZnVuY3Rpb24gKGNoYW5uZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNwbGl0TmFtZSA9IGNoYW5uZWwuc3BsaXQoXCItXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3BsaXROYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbklkID0gc3BsaXROYW1lWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYWNldC5wYXJlbnRJZCA9PSBzdWJzY3JpcHRpb25JZC5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKFwiJ1wiLCBcIlwiKS50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1N1YnNjcmliZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoaXNTdWJzY3JpYmVyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29raWVfZmFjZXRzLnB1c2goZmFjZXQucGFyZW50SWQgKyAnLScgKyBmYWNldC5sYWJlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjb29raWVfZmFjZXRzLmxlbmd0aCA+IDAgJiYgdm0uZW5hYmxlTXlTdXNicmlwdGlvbnMgJiYgdm0ua2V5d29yZFNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLmNyZWF0ZUNvb2tpZSh2bS5zdWJzY3JpYmVyX2Nvb2tpZSwgY29va2llX2ZhY2V0cywgMzY1MCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuXHR2YXIgZmFjZXRzRm9yQW5hbHl0aWNzID0gZmFsc2U7XHJcbiAgICAvLyoqIFRoaXMgdXBkYXRlcyB0aGUgcm91dGVyL3VybCB3aXRoIHRoZSBsYXRlc3Qgc2VhcmNoIHBhcmFtZXRlcnMgKiovL1xyXG4gICAgdm0udXBkYXRlID0gZnVuY3Rpb24gKGZhY2V0R3JvdXBJZCwgcGFyZW50ZmFjZXQsIHN1YmZhY2V0SWQpIHtcclxuXHRcdGlmKGZhY2V0R3JvdXBJZCkge1xyXG5cdFx0XHR2YXIgZmFjZXRHcm91cDtcclxuICAgICAgICAgICAgZmFjZXRzRm9yQW5hbHl0aWNzID0gZmFsc2U7XHJcblx0XHRcdF8uZWFjaCh2bS5mYWNldEdyb3VwcywgZnVuY3Rpb24oZ3JvdXApIHtcclxuXHRcdFx0XHRpZihncm91cC5pZCA9PT0gZmFjZXRHcm91cElkKSB7XHJcblx0XHRcdFx0XHRmYWNldEdyb3VwID0gZ3JvdXA7XHJcblx0XHRcdFx0fVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldEdyb3VwLmdldFNlbGVjdGVkRmFjZXRzKCksIGZ1bmN0aW9uIChmYWNldCkge1xyXG4gICAgICAgICAgICAgICAgZmFjZXQuc3VibGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChzZikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNmLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcblx0XHRcdF8uZWFjaChmYWNldEdyb3VwLmdldFNlbGVjdGVkRmFjZXRzKCksIGZ1bmN0aW9uIChmYWNldCkge1xyXG5cdFx0XHRcdGlmKGZhY2V0KSB7XHJcblx0XHRcdFx0XHRpZighZmFjZXRzRm9yQW5hbHl0aWNzKSB7XHJcblx0XHRcdFx0XHRcdGZhY2V0c0ZvckFuYWx5dGljcyA9IGZhY2V0LmxhYmVsO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0ZmFjZXRzRm9yQW5hbHl0aWNzICs9ICd8JyArIGZhY2V0LmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIFxyXG5cdFx0XHRcdH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcblx0XHRcdHZhciBldmVudF9kYXRhID0ge1xyXG5cdFx0XHRcdGV2ZW50X25hbWU6ICdzZWFyY2hfZmFjZXRzJyxcclxuXHRcdFx0XHRzZWFyY2hfZmFjZXRfY2F0ZWdvcnk6IGZhY2V0R3JvdXAubGFiZWxcclxuXHRcdFx0fTtcclxuXHJcblx0XHRcdGlmKGZhY2V0c0ZvckFuYWx5dGljcykge1xyXG5cdFx0XHRcdGV2ZW50X2RhdGEuc2VhcmNoX2ZhY2V0ID0gZmFjZXRHcm91cC5sYWJlbCArIFwiOiBcIiArIGZhY2V0c0ZvckFuYWx5dGljcztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0YW5hbHl0aWNzRXZlbnQoXHQkLmV4dGVuZChhbmFseXRpY3NfZGF0YSwgZXZlbnRfZGF0YSkgKTtcclxuXHJcblx0XHR9XHJcblx0XHQvLyBEaXNhYmxlIGFsbCBmYWNldCBvcHRpb25zIHdoaWxlIHVwZGF0aW5nIHNlYXJjaCByZXN1bHRzXHJcblx0XHRmYWNldEF2YWlsYWJpbGl0eVNlcnZpY2UuZGlzYWJsZUZhY2V0cygpO1xyXG5cclxuICAgICAgICBpZiAocGFyZW50ZmFjZXQgIT0gbnVsbCAmJiBzdWJmYWNldElkICE9IG51bGwpIHtcclxuXHJcbiAgICAgICAgICAgIC8vZGVzZWxlY3Qgc3VibGlzdCBpdGVtcyBhbmQgbG9hZCBvbmx5IG9uZSBzZWxlY3RlZCBzdWJsaXN0IGl0ZW1cclxuICAgICAgICAgICAgdm0uc2VhcmNoU2VydmljZS5nZXRGYWNldEdyb3VwKHBhcmVudGZhY2V0LnBhcmVudElkKS5mYWNldHMuZm9yRWFjaChmdW5jdGlvbiAodmYpIHtcclxuICAgICAgICAgICAgICAgIHZmLnNlbGVjdGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBpZiAodmYuaWQgIT0gcGFyZW50ZmFjZXQuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB2Zi5zdWJsaXN0LmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdi5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2Zi5zdWJsaXN0LmZvckVhY2goZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYuaWQgIT0gc3ViZmFjZXRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdi5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdm0uZmFjZXRHcm91cHMuZm9yRWFjaChmdW5jdGlvbiAoZmcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmZy5pZCA9PSBwYXJlbnRmYWNldC5wYXJlbnRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZnLmZhY2V0cy5mb3JFYWNoKGZ1bmN0aW9uIChwZikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGYuaWQgPT0gcGFyZW50ZmFjZXQuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBmLnN1Ymxpc3QuZm9yRWFjaChmdW5jdGlvbiAoc2YpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2YuaWQgPT0gc3ViZmFjZXRJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZi5zZWxlY3RlZCA9ICFzZi5zZWxlY3RlZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgcGFyYW1zID0gdGhpcy5zZWFyY2hTZXJ2aWNlLmdldFJvdXRlQnVpbGRlcigpLmdldFJvdXRlKCkuc3BsaXQoJyYnKTtcclxuICAgICBcclxuICAgICAgICB2bS5zZWFyY2hTZXJ2aWNlLmdldEZpbHRlcigncGFnZScpLnNldFZhbHVlKCcxJyk7XHJcbiAgICAgICAgdmFyIHJvdXRlQnVpbGRlciA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRSb3V0ZUJ1aWxkZXIoKTtcclxuICAgICAgICB2bS5sb2NhdGlvbi5zZWFyY2gocm91dGVCdWlsZGVyLmdldFJvdXRlKCkpO1xyXG4gICAgICAgIHZtLnNlYXJjaFNlcnZpY2UucXVlcnkoKTtcclxuICAgICAgICAvL1Njcm9sbCB0byB0aGUgdG9wIG9mIHRoZSByZXN1bHRzIHdoZW4gYSBuZXcgcGFnZSBpcyBjaG9zZW5cclxuICAgICAgICAvL3ZtLmxvY2F0aW9uLmhhc2goXCJzZWFyY2hUb3BcIik7XHJcbiAgICAgICAgLy92bS5hbmNob3JTY3JvbGwoKTtcclxuICAgIH07XHJcblxyXG5cclxuICAgIHZtLnVwZGF0ZVRpbWUgPSBmdW5jdGlvbiAoZmlsdGVyKSB7XHJcbiAgICAgICAgdm0uc2VhcmNoU2VydmljZS5nZXRGaWx0ZXIoJ3BhZ2UnKS5zZXRWYWx1ZSgnMScpO1xyXG4gICAgICAgIHZhciByb3V0ZUJ1aWxkZXIgPSB0aGlzLnNlYXJjaFNlcnZpY2UuZ2V0Um91dGVCdWlsZGVyKCk7XHJcbiAgICAgICAgdmFyIGhhc2ggPSB7fTtcclxuICAgICAgICB2YXIgdXJsUXVlcnkgPSBcIiZcIjtcclxuICAgICAgICB2YXIgaCA9IGRlY29kZVVSSUNvbXBvbmVudChyb3V0ZUJ1aWxkZXIuZ2V0Um91dGUoKSkuc3BsaXQoXCImXCIpO1xyXG4gICAgICAgIGZvciAodmFyIGlkeCBpbiBoKSB7XHJcbiAgICAgICAgICAgIGlmIChoW2lkeF0gIT0gXCJcIikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRQYXJhbWV0ZXIgPSBoW2lkeF0uc3BsaXQoXCI9XCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UGFyYW1ldGVyWzBdICE9IFwiZGF0ZVwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGFzaFtjdXJyZW50UGFyYW1ldGVyWzBdXSA9IGN1cnJlbnRQYXJhbWV0ZXJbMV07XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsUXVlcnkgPSB1cmxRdWVyeSArIFwiJlwiICsgY3VycmVudFBhcmFtZXRlclswXSArIFwiPVwiICsgY3VycmVudFBhcmFtZXRlclsxXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdm0ubG9jYXRpb24uc2VhcmNoKHVybFF1ZXJ5KTtcclxuXHJcbiAgICAgICAgdm0ubG9jYXRpb24uaGFzaChcInNlYXJjaFRvcFwiKTtcclxuICAgICAgICB2bS5hbmNob3JTY3JvbGwoKTtcclxuICAgIH07XHJcblxyXG4gICAgdm0uZmFjZXRDaGFuZ2UgPSBmdW5jdGlvbiAoZmFjZXQpIHtcclxuICAgICAgICB2bS5zZWFyY2hTZXJ2aWNlLmdldEZhY2V0R3JvdXAoZmFjZXQucGFyZW50SWQpLmdldEZhY2V0KGZhY2V0LmlkKS5zZWxlY3RlZCA9IGZhY2V0LnNlbGVjdGVkO1xyXG4gICAgICAgIHZtLnVwZGF0ZShmYWNldC5wYXJlbnRJZCk7XHJcbiAgICAgICAgaWYodm0ua2V5d29yZFNlYXJjaCAmJiB2bS5lbmFibGVNeVN1c2JyaXB0aW9ucylcclxuICAgICAgICAgICAgdm0udXBkYXRlQ29va2llKGZhY2V0LnBhcmVudElkKTsgICAgICAgIFxyXG4gICAgfTtcclxuXHJcbiAgICB2bS5mYWNldENsaWNrID0gZnVuY3Rpb24gKGZhY2V0KSB7XHJcbiAgICAgICAgdm0uc2VhcmNoU2VydmljZS5nZXRGYWNldEdyb3VwKGZhY2V0LnBhcmVudElkKS5mYWNldHMuZm9yRWFjaChmdW5jdGlvbiAodikge1xyXG4gICAgICAgICAgICBpZiAodi5pZCAhPSBmYWNldC5pZCkge1xyXG4gICAgICAgICAgICAgICAgdi5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgaWYgKHYuc3VibGlzdCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdi5zdWJsaXN0LmZvckVhY2goZnVuY3Rpb24gKHcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdy5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdm0uc2VhcmNoU2VydmljZS5nZXRGYWNldEdyb3VwKGZhY2V0LnBhcmVudElkKS5nZXRGYWNldChmYWNldC5pZCkuc2VsZWN0ZWQgPSAhZmFjZXQuc2VsZWN0ZWQ7ICAgICAgIFxyXG4gICAgICAgIHZtLnVwZGF0ZShmYWNldC5wYXJlbnRJZCk7XHJcbiAgICAgICAgaWYgKHZtLmtleXdvcmRTZWFyY2ggJiYgdm0uZW5hYmxlTXlTdXNicmlwdGlvbnMpIHZtLnVwZGF0ZUNvb2tpZShmYWNldC5wYXJlbnRJZCk7XHJcbiAgICB9O1xyXG5cclxuXHQvLyBmYWNldEdyb3VwSWQ6ICdwdWJsaWNhdGlvbidcclxuXHQvLyBmYWNldElkczogWydJbiBWaXZvJywgJ1Jvc2UgU2hlZXQnXVxyXG4gICAgdm0uZmFjZXRDaGFuZ2VNdWx0aXBsZSA9IGZ1bmN0aW9uKGZhY2V0R3JvdXBJZCwgZmFjZXRJZHMpIHtcclxuXHJcbiAgICAgICAgdmFyIGZhY2V0cyxcclxuICAgICAgICAgICAgc3ViZmFjZXRzID0gW107XHJcbiAgICAgICAgaWYgKGZhY2V0SWRzLmxlbmd0aCA+IDApIHtcclxuXHJcbiAgICAgICAgICAgIF8uZWFjaCh2bS5mYWNldEdyb3VwcywgZnVuY3Rpb24gKGdyb3VwKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZ3JvdXAuaWQgPT09IGZhY2V0R3JvdXBJZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZhY2V0cyA9IGdyb3VwO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldHMuZ2V0U2VsZWN0ZWRGYWNldHMoKSwgZnVuY3Rpb24gKGZhY2V0KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZmFjZXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBmYWNldC5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldElkcywgZnVuY3Rpb24gKGlkKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgcHViRmFjZXRzID0gZmFjZXRzLmZhY2V0cztcclxuICAgICAgICAgICAgICAgIHZhciBzcGxpdE5hbWUgPSBpZC5zcGxpdChcIi1cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXROYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZCA9IHNwbGl0TmFtZVswXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIF8uZWFjaChwdWJGYWNldHMsIGZ1bmN0aW9uIChwdWJGYWMpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZmFjZXRJZCA9IHB1YkZhYy5pZC5yZXBsYWNlKFwiIFwiLCBcIlwiKS5yZXBsYWNlKFwiJ1wiLCBcIlwiKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGZhY2V0SWQgPT09IGlkLnJlcGxhY2UoXCIgXCIsIFwiXCIpLnJlcGxhY2UoXCInXCIsIFwiXCIpLnRvTG93ZXJDYXNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcHViRmFjLnNlbGVjdGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIHZtLnVwZGF0ZShmYWNldEdyb3VwSWQpO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgXy5lYWNoKGZhY2V0SWRzLCBmdW5jdGlvbiAoaWQpIHtcclxuICAgICAgICAgICAgICAgIHZhciBzcGxpdE5hbWUgPSBpZC5zcGxpdChcIi1cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3BsaXROYW1lLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50SWQgPSBzcGxpdE5hbWVbMF0ucmVwbGFjZShcIiBcIiwgXCJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG15SWQgPSBzcGxpdE5hbWVbMV0ucmVwbGFjZShcImFuZFwiLCBcIiZcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHZtLmZhY2V0R3JvdXBzLCBmdW5jdGlvbiAoZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwLmlkID09IHBhcmVudElkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJmYWNldHMgPSBncm91cC5mYWNldHM7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHN1YmZhY2V0cywgZnVuY3Rpb24gKHN1YmZhYykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3ViZmFjLmlkLnRvTG93ZXJDYXNlKCkgPT0gbXlJZC50b0xvd2VyQ2FzZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJmYWMuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgICAgICBpZih2bS5lbmFibGVNeVN1c2JyaXB0aW9ucyAmJiB2bS5rZXl3b3JkU2VhcmNoKSBcclxuICAgICAgICAgICAgICAgIHZtLmNyZWF0ZUNvb2tpZSh2bS5zdWJzY3JpYmVyX2Nvb2tpZSxmYWNldElkcywzNjUwKTtcclxuXHJcbiAgICAgICAgICAgIHZtLnVwZGF0ZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZtLmNsZWFyQWxsRmFjZXRzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLy8gVE9ETzogdGhpcyBjb21lcyBmcm9tIGEgZGlmZiBzZWFyY2ggYXBwLCBhbmQgbmVlZHMganF1ZXJ5IHRvIHdvcmsuXHJcbiAgICAvLyAgICAgICBlaXRoZXIgaG9vayB1cCBqcSB0byB0aGlzIGNvbnRyb2xsZXIgb3IgbW92ZSB0aGlzIGVsc2V3aGVyZVxyXG4gICAgdm0uc2Nyb2xsVG9wID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIHZhciBsb2NhdGlvbiA9IGpxKFwiLnNlYXJjaC1mYWNldHNfX2hlYWRlclwiKS5vZmZzZXQoKS50b3A7XHJcbiAgICAgICAgLy93aW5kb3cuc2Nyb2xsVG8oMCwgbG9jYXRpb24gLSA4MCk7XHJcbiAgICB9O1xyXG5cclxuICAgIHZtLmhhc1NlbGVjdGVkID0gZnVuY3Rpb24gKHZhbHVlcykge1xyXG4gICAgICAgIHJldHVybiBfLmZpbmQodmFsdWVzLCB7IHNlbGVjdGVkOiB0cnVlIH0pID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS5nZXRGaWx0ZXIgPSBmdW5jdGlvbiAoZmlsdGVyS2V5KSB7XHJcbiAgICAgICAgdmFyIGZpbHRlciA9IHZtLnNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKGZpbHRlcktleSk7XHJcbiAgICAgICAgaWYgKCFmaWx0ZXIpIHtcclxuICAgICAgICAgICAgdm0uc2VhcmNoQm9vdHN0cmFwcGVyLmNyZWF0ZUZpbHRlcihmaWx0ZXJLZXksIFwiXCIpO1xyXG4gICAgICAgICAgICBmaWx0ZXIgPSB2bS5zZWFyY2hTZXJ2aWNlLmdldEZpbHRlcihmaWx0ZXJLZXkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmlsdGVyO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKiBUaGlzIGRlc2VsZWN0cyBhbnkgc2VsZWN0ZWQgZmFjZXQgY2hlY2tib3hlcywgY2xlYXJzIGFsbCBmYWNldCBwYXJhbWV0ZXJzXHJcbiAgICAgICAgZnJvbSB0aGUgc2VhcmNoIHF1ZXJ5LCBhbmQgcnVucyB0aGUgY2xlYXJEYXRlUmFuZ2UgZnVuY3Rpb24gKi9cclxuICAgIHZtLmNsZWFyQWxsRmFjZXRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBmYWNldENsZWFyID0gdGhpcztcclxuICAgICAgICB2YXIgZmFjZXRHcm91cHMgPSBmYWNldENsZWFyLmZhY2V0R3JvdXBzO1xyXG4gICAgICAgIF8uZWFjaChmYWNldEdyb3VwcywgZnVuY3Rpb24gKGdyb3VwKSB7XHJcbiAgICAgICAgICAgIHZhciBmYWNldHMgPSBncm91cC5mYWNldHM7XHJcbiAgICAgICAgICAgIF8uZWFjaChmYWNldHMsIGZ1bmN0aW9uIChmYWNldCkge1xyXG4gICAgICAgICAgICAgICAgZmFjZXQuc2VsZWN0ZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdm0udXBkYXRlKCk7XHJcbiAgICAgICAgaWYodm0ua2V5d29yZFNlYXJjaCAmJiB2bS5lbmFibGVNeVN1c2JyaXB0aW9ucylcclxuICAgICAgICAgICAgIHZtLmNyZWF0ZUNvb2tpZSh2bS5zdWJzY3JpYmVyX2Nvb2tpZSwgW10sIDM2NTApO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS5jbGVhckZpbHRlciA9IGZ1bmN0aW9uIChmaWx0ZXJLZXkpIHtcclxuICAgICAgICB2YXIgZmlsdGVyID0gdm0uZ2V0RmlsdGVyKGZpbHRlcktleSk7XHJcbiAgICAgICAgZmlsdGVyLnNldFZhbHVlKFwiXCIpO1xyXG4gICAgfTtcclxuXHJcbiAgICB2bS5jcmVhdGVDb29raWUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIGRheXMpIHtcclxuICAgICAgICAgICAgdmFyIGV4cGlyZXM7XHJcbiAgICAgICAgICAgIGlmIChkYXlzKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBkYXRlLnNldFRpbWUoZGF0ZS5nZXRUaW1lKCkgKyAoZGF5cyAqIDI0ICogNjAgKiA2MCAqIDEwMDApKTtcclxuICAgICAgICAgICAgICAgIGV4cGlyZXMgPSBcIjsgZXhwaXJlcz1cIiArIGRhdGUudG9HTVRTdHJpbmcoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGV4cGlyZXMgPSBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyBcIj1cIiArIEpTT04uc3RyaW5naWZ5KHZhbHVlKSArIGV4cGlyZXMgKyBcIjsgcGF0aD0vXCI7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHZtLnJlYWRDb29raWUgPSBmdW5jdGlvbihuYW1lKSB7XHJcbiAgICAgICAgdmFyIG5hbWVFUSA9IG5hbWUgKyBcIj1cIjtcclxuICAgICAgICB2YXIgY2EgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcclxuICAgICAgICBmb3IodmFyIGk9MDtpIDwgY2EubGVuZ3RoO2krKykge1xyXG4gICAgICAgICAgICB2YXIgYyA9IGNhW2ldO1xyXG4gICAgICAgICAgICB3aGlsZSAoYy5jaGFyQXQoMCkgPT09ICcgJykge1xyXG4gICAgICAgICAgICAgICAgYyA9IGMuc3Vic3RyaW5nKDEsYy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChjLmluZGV4T2YobmFtZUVRKSA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWVFUS5sZW5ndGgsYy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxufTtcclxuXHJcbnZhciBpbmZvcm1hU2VhcmNoQXBwID0gYW5ndWxhci5tb2R1bGUoJ2luZm9ybWFTZWFyY2hBcHAnKTtcclxuaW5mb3JtYVNlYXJjaEFwcC5jb250cm9sbGVyKFwiSW5mb3JtYUZhY2V0RGF0YUNvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJHJvb3RTY29wZScsICckbG9jYXRpb24nLCAnJGh0dHAnLCAnJGFuY2hvclNjcm9sbCcsICckdGltZW91dCcsICdzZWFyY2hTZXJ2aWNlJywgJ3NlYXJjaEJvb3RzdHJhcHBlcicsICdmYWNldEF2YWlsYWJpbGl0eVNlcnZpY2UnLCBJbmZvcm1hRmFjZXREYXRhQ29udHJvbGxlcl0pOyIsIi8qIGdsb2JhbCBhbmd1bGFyLCBhbmFseXRpY3NfZGF0YSwgdXRhZyAqL1xyXG5cclxudmFyIGluZm9ybWFTZWFyY2hBcHAgPSBhbmd1bGFyLm1vZHVsZSgnaW5mb3JtYVNlYXJjaEFwcCcpO1xyXG5cclxudmFyIEluZm9ybWFSZXN1bHRzQ29udHJvbGxlciA9IGZ1bmN0aW9uIEluZm9ybWFSZXN1bHRzQ29udHJvbGxlcigkc2NvcGUsICRzYW5pdGl6ZSwgJGxvY2F0aW9uLCBzZWFyY2hTZXJ2aWNlLCB2aWV3SGVhZGxpbmVzU3RhdGVTZXJ2aWNlLCAkdGltZW91dCwgJHdpbmRvdywgZmFjZXRBdmFpbGFiaWxpdHlTZXJ2aWNlKSB7XHJcblxyXG4gICAgdmFyIHZtID0gdGhpcztcclxuXHJcbiAgICB2bS5zZXJ2aWNlID0gc2VhcmNoU2VydmljZTtcclxuICAgIFxyXG4gICAgdm0uZG9jcyA9IFtdO1xyXG4gICAgdm0uc2VhcmNoVHlwZSA9ICcnO1xyXG4gICAgdm0ubG9jYXRpb24gPSAkbG9jYXRpb247XHJcbiAgICB2bS50aGVtZU9tZGlhID0gYW5ndWxhci5lbGVtZW50KGRvY3VtZW50LmJvZHkpLmhhc0NsYXNzKCd0aGVtZS1vbWRpYScpO1xyXG5cclxuICAgICRzY29wZS5oZWFkbGluZXNPbmx5ID0gdmlld0hlYWRsaW5lc1N0YXRlU2VydmljZTtcclxuICAgIHZhciBjb3VudCA9IDA7XHJcblxyXG4gICAgLy9TcmkgcmFtIGNvZGUgSVBQLTcyNTRcclxuICAgICRzY29wZS51cGRhdGVTZWFyY2hUeXBlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBuZXdTZWFyY2hPYmogPSB2bS5sb2NhdGlvbi5zZWFyY2goKSxcclxuICAgICAgICAgICAgc2VhcmNoU3RyID0gT2JqZWN0LmtleXMobmV3U2VhcmNoT2JqKS5tYXAoZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KG5ld1NlYXJjaE9ialtrZXldKVxyXG4gICAgICAgICAgICB9KS5qb2luKCcmJyk7XHJcblxyXG4gICAgICAgIGlmIChzZWFyY2hTdHIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHNlYXJjaFN0ciA9IFwiIz9wYWdlPTEmc2VhcmNodHlwZT1wcm9kdWN0JnNvcnRCeT1yZWxldmFuY2Umc29ydE9yZGVyPWRlc2Mjc2VhcmNoVG9wXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHNlYXJjaFN0ci5pbmRleE9mKFwic2VhcmNodHlwZT1wcm9kdWN0XCIpID4gMClcclxuICAgICAgICAgICAgICAgIHNlYXJjaFN0ciA9ICcjPycgKyBzZWFyY2hTdHIgKyAnI3NlYXJjaFRvcCc7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHNlYXJjaFN0ciA9ICcjPycgKyBzZWFyY2hTdHIgKyAnJnNlYXJjaHR5cGU9cHJvZHVjdCNzZWFyY2hUb3AnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdm0uc2VydmljZS5jcmVhdGVGaWx0ZXIoJ3NlYXJjaHR5cGUnLCAncHJvZHVjdCcpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHZtLnNlcnZpY2UuZ2V0UGFyYW1zKCkpO1xyXG4gICAgICAgIC8vdm0uc2VydmljZS5hZGRQYXJhbWFibGUocGFybSk7XHJcbiAgICAgICAgLy8gY2xlYW4gZml4OiBuZWVkIHRvIHVwZGF0ZSBmYWNldHNcclxuICAgICAgICB3aW5kb3cubG9jYXRpb24uYXNzaWduKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyBzZWFyY2hTdHIpO1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgIH1cclxuXHJcbiAgICAkc2NvcGUucmVtb3ZlU2VhcmNoVHlwZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkZWxldGUgdm0ubG9jYXRpb24uc2VhcmNoKClbXCJzZWFyY2h0eXBlXCJdO1xyXG4gICAgICAgIHZhciBuZXdTZWFyY2hPYmogPSB2bS5sb2NhdGlvbi5zZWFyY2goKSxcclxuICAgICAgICAgICAgc2VhcmNoU3RyID0gT2JqZWN0LmtleXMobmV3U2VhcmNoT2JqKS5tYXAoZnVuY3Rpb24gKGtleSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KG5ld1NlYXJjaE9ialtrZXldKVxyXG4gICAgICAgICAgICB9KS5qb2luKCcmJyk7XHJcblxyXG4gICAgICAgIGlmIChzZWFyY2hTdHIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHNlYXJjaFN0ciA9IFwiIz9wYWdlPTEmc29ydEJ5PXJlbGV2YW5jZSZzb3J0T3JkZXI9ZGVzYyNzZWFyY2hUb3BcIjtcclxuICAgICAgICB9IGVsc2UgeyAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIHNlYXJjaFN0ciA9ICcjPycgKyBzZWFyY2hTdHIgKyAnI3NlYXJjaFRvcCc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBjbGVhbiBmaXg6IG5lZWQgdG8gdXBkYXRlIGZhY2V0c1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24od2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSArIHNlYXJjaFN0cik7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgICRzY29wZS5SZXBsYWNlQnJvd3NlciA9IGZ1bmN0aW9uIChib2R5KSB7XHJcbiAgICAgIFxyXG4gICAgICAgIGNvbnN0IHJlZ2V4cCA9IC88YVtePl0qPihbXjxdKyk8XFwvYT4vZztcclxuICAgICAgICBjb25zdCBtYXRjaGVzID0gYm9keS5tYXRjaEFsbChyZWdleHApO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IG1hdGNoIG9mIG1hdGNoZXMpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cobWF0Y2gpO1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICAkc2NvcGUudXRhZ0FuYWx5dGljcyA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBpZiAoY291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgICB2YXIgZXZlbnREZXRhaWxzID0ge1xyXG4gICAgICAgICAgICAgICAgTnVtYmVyX29mX1Jlc3VsdHM6ICdcIicgKyAkKFwiLmpzLXNlYXJjaFRvdGFsUmVzdWx0c1wiKS50ZXh0KCkgKyAnXCInLFxyXG4gICAgICAgICAgICAgICAgc2VhcmNoX0tleXdvcmQ6ICdcIicgKyAkKFwiLmpzLXNlYXJjaEtleXdvcmRcIikudGV4dCgpICsgJ1wiJ1xyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB2YXIgZGF0YU9iaiA9ICQuZXh0ZW5kKGFuYWx5dGljc19kYXRhLCBldmVudERldGFpbHMpO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHV0YWcgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgICAgICB1dGFnLmxpbmsoZGF0YU9iaik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgfVxyXG4gICAgICAgIGNvdW50ID0gY291bnQgKyAxO1xyXG4gICAgfTtcclxuXHJcbiAgICAkc2NvcGUuZ2V0Rm9ybWF0dGVkRGF0ZSA9IGZ1bmN0aW9uIChvcmlnaW5hbERhdGUpIHtcclxuICAgICAgICByZXR1cm4gbmV3IERhdGUob3JpZ2luYWxEYXRlLnJlcGxhY2UoL1QuKy8sICcnKSk7XHJcbiAgICB9O1xyXG5cclxuICAgICRzY29wZS4kd2F0Y2goZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBzZWFyY2hTZXJ2aWNlLmdldFNlYXJjaFR5cGUoKTtcclxuICAgIH0sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2bS5zZWFyY2hUeXBlID0gc2VhcmNoU2VydmljZS5nZXRTZWFyY2hUeXBlKCk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAkc2NvcGUuJHdhdGNoQ29sbGVjdGlvbihmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHNlYXJjaFNlcnZpY2UuZ2V0UmVzdWx0cygpO1xyXG4gICAgfSwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICRzY29wZS5nZXRwYWdlUG9zaXRpb24gPSAoc2VhcmNoU2VydmljZS5fcGFnZXIuY3VycmVudC0xKSAqIChzZWFyY2hTZXJ2aWNlLl9wYWdlci5wZXJQYWdlKTtcclxuICAgICAgICB2bS5kb2NzID0gc2VhcmNoU2VydmljZS5nZXRSZXN1bHRzKCk7XHJcbiAgICAgICAgJHNjb3BlLnV0YWdBbmFseXRpY3MoKTtcclxuICAgIH0pO1xyXG5cclxuICAgICRzY29wZS5maWx0ZXJSZXN1bHQgPSBmdW5jdGlvbiAodXJsKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uID0gdXJsO1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgIH07XHJcblxyXG4gICAgJHNjb3BlLmZpcmVCb29rbWFyayA9IGZ1bmN0aW9uIChhcnRpY2xlLCBldmVudCwga2V5KSB7XHJcbiAgICAgICAgJHRpbWVvdXQoZnVuY3Rpb24gKCkge1xyXG5cdFx0XHR2bS5kb2NzW2tleV0uaXNBcnRpY2xlQm9va21hcmtlZCA9IHZtLmRvY3Nba2V5XS5pc0FydGljbGVCb29rbWFya2VkID8gZmFsc2UgOiB0cnVlO1xyXG5cdFx0fSwgNTAwKTtcclxuICAgIH07XHJcblxyXG4gICAgJHNjb3BlLiRvbigncmVmcmVzaFBvcE91dHMnLCBmdW5jdGlvbiAobmdSZXBlYXRGaW5pc2hlZEV2ZW50KSB7XHJcblxyXG5cdFx0Ly8gRW5hYmxlIGFsbCBmYWNldCBvcHRpb25zIHdoZW4gc2VhcmNoIHJlc3VsdHMgbGFuZFxyXG5cdFx0Ly8gJCgnLmZhY2V0c19fc2VjdGlvbiBpbnB1dCcpLmF0dHIoJ2Rpc2FibGVkJywgbnVsbCk7XHJcblx0XHRmYWNldEF2YWlsYWJpbGl0eVNlcnZpY2UuZW5hYmxlRmFjZXRzKCk7XHJcblxyXG4gICAgICAgIGlmICh3aW5kb3cuaW5kZXhQb3BPdXRzKVxyXG4gICAgICAgIHdpbmRvdy5pbmRleFBvcE91dHMoKTtcclxuICAgICAgICBpZiAod2luZG93LmluZGV4Qm9va21hcmtzKVxyXG4gICAgICAgIHdpbmRvdy5pbmRleEJvb2ttYXJrcygpO1xyXG4gICAgICAgIGlmICh3aW5kb3cuYXV0b0Jvb2ttYXJrKVxyXG4gICAgICAgIHdpbmRvdy5hdXRvQm9va21hcmsoKTtcclxuICAgICAgICBpZiAod2luZG93LmZpbmRUb29sdGlwcylcclxuICAgICAgICB3aW5kb3cuZmluZFRvb2x0aXBzKCk7XHJcbiAgICAgICAgaWYgKHdpbmRvdy5yZW5kZXJSZXZlYWxlcilcclxuICAgICAgICB3aW5kb3cucmVuZGVyUmV2ZWFsZXIoKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZm9yY2VSZWZyZXNoID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICR3aW5kb3cubG9jYXRpb24ucmVsb2FkKGZhbHNlKTtcclxuICAgIH07XHJcblxyXG4gICAgdm0udHJpZ2dlckhlYWRpbmdDbGljayA9IGZ1bmN0aW9uKCRldmVudCkge1xyXG4gICAgICB2YXIgJGhlYWRlcixcclxuICAgICAgICAgIGhlYWRlckRhdGEsXHJcbiAgICAgICAgICBoZWFkZXJVcmw7XHJcbiAgICAgIFxyXG4gICAgICBpZiAoIXZtLnRoZW1lT21kaWEgfHwgJGV2ZW50LnRhcmdldC50YWdOYW1lID09PSBcIkFcIikgcmV0dXJuO1xyXG5cclxuICAgICAgLy8gZ2V0IGhlYWRlciBlbGVtZW50XHJcbiAgICAgICRoZWFkZXIgPSAkKCRldmVudC5jdXJyZW50VGFyZ2V0KS5maW5kKCcuc2VhcmNoLXJlc3VsdF9faGVhZGluZycpO1xyXG4gICAgICBoZWFkZXJVcmwgPSAkaGVhZGVyLmF0dHIoJ25nLWhyZWYnKTtcclxuXHJcbiAgICAgIC8vIGlmIHVybCBub3QgcHJlc2VudCBvbiBoZWFkZXIgZG9udCB0cmFjayBldmVudCBlaXRoZXJcclxuICAgICAgaWYgKCFoZWFkZXJVcmwpIHJldHVybjtcclxuXHJcbiAgICAgIC8vIGdldCBhbmQgc2V0IGFuYWx5dGljcyBkYXRhIGZyb20gaGVhZGVyXHJcbiAgICAgIGhlYWRlckRhdGEgPSAkaGVhZGVyLmRhdGEoJ2luZm8nKTtcclxuICAgICAgaWYodHlwZW9mIHV0YWcgIT09ICd1bmRlZmluZWQnICYmIGhlYWRlckRhdGEpIHtcclxuICAgICAgICB1dGFnLmxpbmsoJC5leHRlbmQoYW5hbHl0aWNzX2RhdGEsIGhlYWRlckRhdGEpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gZXhlY3V0ZSBoZWFkZXIgY2xpY2t0aHJvdWdoXHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbiA9IGhlYWRlclVybDtcclxuICAgIH1cclxuXHJcbn07XHJcblxyXG5pbmZvcm1hU2VhcmNoQXBwLmRpcmVjdGl2ZSgnb25GaW5pc2hSZW5kZXInLCBmdW5jdGlvbiAoJHRpbWVvdXQpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcmVzdHJpY3Q6ICdBJyxcclxuICAgICAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQsIGF0dHIpIHtcclxuICAgICAgICAgICAgaWYgKHNjb3BlLiRsYXN0ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAkdGltZW91dChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2NvcGUuJGVtaXQoJ3JlZnJlc2hQb3BPdXRzJyk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcbn0pO1xyXG5cclxuaW5mb3JtYVNlYXJjaEFwcC5jb250cm9sbGVyKFwiSW5mb3JtYVJlc3VsdHNDb250cm9sbGVyXCIsIFsnJHNjb3BlJywgJyRzYW5pdGl6ZScsICckbG9jYXRpb24nLCAnc2VhcmNoU2VydmljZScsICd2aWV3SGVhZGxpbmVzU3RhdGVTZXJ2aWNlJywgJyR0aW1lb3V0JywgJyR3aW5kb3cnLCAnZmFjZXRBdmFpbGFiaWxpdHlTZXJ2aWNlJywgSW5mb3JtYVJlc3VsdHNDb250cm9sbGVyXSk7XHJcbiIsIi8qIGdsb2JhbCBhbmd1bGFyLCBhbmFseXRpY3NfZGF0YSAqL1xyXG5pbXBvcnQgeyBhbmFseXRpY3NFdmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xsZXJzL2FuYWx5dGljcy1jb250cm9sbGVyJztcclxuXHJcbnZhciBQYWdlU2l6ZUNvbnRyb2xsZXIgPSBmdW5jdGlvbiAoJHNjb3BlLCAkbG9jYXRpb24sICRhbmNob3JTY3JvbGwsIHNlYXJjaFNlcnZpY2UsIHNlYXJjaEJvb3RzdHJhcHBlcikge1xyXG4gICAgXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG4gICAgdmFyIHBlclBhZ2VLZXkgPSAncGVyUGFnZSc7XHJcblxyXG4gICAgdmFyIHZtID0gdGhpcztcclxuXHJcbiAgICB2bS5sb2NhdGlvbiA9ICRsb2NhdGlvbjtcclxuICAgIHZtLmFuY2hvclNjcm9sbCA9ICRhbmNob3JTY3JvbGw7XHJcbiAgICB2bS5zZWFyY2hTZXJ2aWNlID0gc2VhcmNoU2VydmljZTtcclxuICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlciA9IHNlYXJjaEJvb3RzdHJhcHBlcjtcclxuXHJcbiAgICB2bS51cGRhdGUgPSBmdW5jdGlvbiAocGFnZVNpemUpIHtcclxuICAgICAgICB2YXIgZmlsdGVyID0gdm0uc2VhcmNoU2VydmljZS5nZXRGaWx0ZXIocGVyUGFnZUtleSk7XHJcblxyXG4gICAgICAgIGlmICghZmlsdGVyKSB7XHJcbiAgICAgICAgICAgIHZtLnNlYXJjaEJvb3RzdHJhcHBlci5jcmVhdGVGaWx0ZXIocGVyUGFnZUtleSwgcGFnZVNpemUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGZpbHRlci5zZXRWYWx1ZShwYWdlU2l6ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2bS5zZWFyY2hTZXJ2aWNlLmdldEZpbHRlcigncGFnZScpLnNldFZhbHVlKCcxJyk7XHJcbiAgICAgICAgdmFyIHJvdXRlQnVpbGRlciA9IHRoaXMuc2VhcmNoU2VydmljZS5nZXRSb3V0ZUJ1aWxkZXIoKTtcclxuICAgICAgICB2bS5sb2NhdGlvbi5zZWFyY2gocm91dGVCdWlsZGVyLmdldFJvdXRlKCkpO1xyXG4gICAgICAgIHZtLnNlYXJjaFNlcnZpY2UucXVlcnkoKTtcclxuXHJcbiAgICAgICAgLy9TY3JvbGwgdG8gdGhlIHRvcCBvZiB0aGUgcmVzdWx0cyB3aGVuIGEgbmV3IHBhZ2UgaXMgY2hvc2VuXHJcbiAgICAgICAgdm0ubG9jYXRpb24uaGFzaChcInNlYXJjaFRvcFwiKTtcclxuICAgICAgICB2bS5hbmNob3JTY3JvbGwoKTtcclxuXHJcblx0XHRhbmFseXRpY3NFdmVudCggJC5leHRlbmQoYW5hbHl0aWNzX2RhdGEsIHtcclxuXHRcdFx0ZXZlbnRfbmFtZTogJ3NlYXJjaF91dGlsaXR5JyxcclxuXHRcdFx0c2VhcmNoX3V0aWxpdHk6ICdyZXN1bHRzX3Blcl9wYWdlXycgKyBwYWdlU2l6ZVxyXG5cdFx0fSkpO1xyXG5cclxuICAgIH07XHJcblxyXG4gICAgdm0uaW5pdCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBmaWx0ZXIgPSB2bS5zZWFyY2hTZXJ2aWNlLmdldEZpbHRlcihwZXJQYWdlS2V5KTtcclxuXHJcbiAgICAgICAgJHNjb3BlLnBhZ2VTaXplID0gZmlsdGVyID8gZmlsdGVyLl92YWx1ZSA6ICcxMCc7XHJcbiAgICB9O1xyXG59O1xyXG52YXIgaW5mb3JtYVNlYXJjaEFwcCA9IGFuZ3VsYXIubW9kdWxlKCdpbmZvcm1hU2VhcmNoQXBwJyk7XHJcbmluZm9ybWFTZWFyY2hBcHAuY29udHJvbGxlcihcIlBhZ2VTaXplQ29udHJvbGxlclwiLCBbJyRzY29wZScsICckbG9jYXRpb24nLCAnJGFuY2hvclNjcm9sbCcsICdzZWFyY2hTZXJ2aWNlJywgJ3NlYXJjaEJvb3RzdHJhcHBlcicsIFBhZ2VTaXplQ29udHJvbGxlcl0pO1xyXG4iLCIvKiBnbG9iYWwgYW5ndWxhciAqL1xyXG5cclxudmFyIFNhdmVkU2VhcmNoQ29udHJvbGxlciA9IGZ1bmN0aW9uICgkc2NvcGUsICRsb2NhdGlvbiwgJHRpbWVvdXQsICRodHRwLCBzZWFyY2hTZXJ2aWNlLCBzYXZlZFNlYXJjaFNlcnZpY2UpIHtcclxuICAgIFwidXNlIHN0cmljdFwiO1xyXG5cclxuICAgIHZhciB2bSA9IHRoaXM7XHJcblxyXG4gICAgdm0uc2VhcmNoU2VydmljZSA9IHNlYXJjaFNlcnZpY2U7XHJcbiAgICAkc2NvcGUuc2VhcmNoSXNTYXZlZCA9IGZhbHNlO1xyXG5cclxuICAgICRzY29wZS5vbmVDbGlja1NhdmVGb2N1cyA9IGZhbHNlO1xyXG5cclxuICAgIC8vIEEgdXNlciBjYW4gbGFuZCBvbiB0aGUgc2VhcmNoIHBhZ2UgZnJvbSBhIFwiMS1jbGljayBTdWJzY3JpYmVcIiBsaW5rIGluIGFuIGVtYWlsXHJcbiAgICAvLyBUaGlzIGhhbmRsZXMgZGV0ZWN0aW9uIG9mIHRoYXQgcXVlcnkgcGFyYW1ldGVyLCB0cmlnZ2VycyBhcHByb3ByaWF0ZSBVSSBjaGFuZ2VzXHJcbiAgICBmdW5jdGlvbiBvcGVuU2F2ZVNlYXJjaElmMUNsaWNrKCkge1xyXG5cclxuICAgICAgICB2YXIgdXJsUXVlcnkgPSAkbG9jYXRpb24uc2VhcmNoKCk7XHJcbiAgICAgICAgdmFyIGNsaWNrS2V5ID0gT2JqZWN0LmtleXModXJsUXVlcnkpLmZpbHRlcihmdW5jdGlvbiAoY3VyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjdXIudG9Mb3dlckNhc2UoKSA9PT0gXCIxY2xpY2tcIjtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKGNsaWNrS2V5Lmxlbmd0aCA+IDAgJiYgdXJsUXVlcnlbY2xpY2tLZXlbMF1dID09PSBcIjFcIikge1xyXG4gICAgICAgICAgICBqUXVlcnkoXCIuanMtc2F2ZS1zZWFyY2hcIikuY2xpY2soKTtcclxuICAgICAgICAgICAgJGxvY2F0aW9uLnNlYXJjaChjbGlja0tleVswXSwgbnVsbCk7XHJcbiAgICAgICAgICAgICRzY29wZS5vbmVDbGlja1NhdmVGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICR0aW1lb3V0KGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIG9wZW5TYXZlU2VhcmNoSWYxQ2xpY2soKTtcclxuICAgIH0sIDEwMDApO1xyXG5cclxuICAgICRzY29wZS4kd2F0Y2goZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBzZWFyY2hTZXJ2aWNlLmdldFBhZ2VyKCk7XHJcbiAgICB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgJCgnLmpzLXNhdmUtc2VhcmNoLXVybCcpLnZhbCh3aW5kb3cubG9jYXRpb24uaGFzaC5zdWJzdHJpbmcoMSkpO1xyXG4gICAgICAgICRzY29wZS50aXRsZSA9IHNlYXJjaFNlcnZpY2UuZ2V0RmlsdGVyKCdxJykuZ2V0VmFsdWUoKTtcclxuICAgICAgICAkc2NvcGUuY3VycmVudExvY2F0aW9uID0gJGxvY2F0aW9uLnVybCgpO1xyXG4gICAgICAgIGlmICgkc2NvcGUuaXNBdXRoZW50aWNhdGVkKSB7XHJcbiAgICAgICAgICAgIHNhdmVkU2VhcmNoU2VydmljZS5pc1NhdmVkKCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgICAgICRzY29wZS5zZWFyY2hJc1NhdmVkID0gcmVzcG9uc2UuZGF0YTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSwgdHJ1ZSk7XHJcblxyXG4gICAgLy8gRGVwZW5kaW5nIG9uIGhvdyBxdWlja2x5IEFuZ3VsYXIgYm9vdHN0cmFwcywgc29tZSBsaWdodGJveCB0cmlnZ2VyIGNsYXNzZXNcclxuICAgIC8vIG1pZ2h0IG5vdCBiZSBhZGRlZCBiZWZvcmUgdGhlIGxpZ2h0Ym94IGV2ZW50IGxpc3RuZXJzIGFyZSBib3VuZC4gVGhpc1xyXG4gICAgLy8gbWFudWFsbHkgZmlyZXMgdGhlIFNhdmVkIFNlYXJjaCBsaWdodGJveCwgaW4gY2FzZSB0aGUgbm9ybWFsIGxpc3RlbmVyIHdhc24ndFxyXG4gICAgLy8gYm91bmQgaW4gdGltZS5cclxuICAgIHZtLnNob3dMaWdodGJveCA9IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgJCgnLmpzLXNhdmUtc2VhcmNoLXRpdGxlJykudmFsKCcnKTtcclxuICAgICAgICBpZigkc2NvcGUuc2VhcmNoSXNTYXZlZCkge1xyXG4gICAgICAgICAgICB3aW5kb3cubGlnaHRib3hDb250cm9sbGVyLnNob3dMaWdodGJveCgkKGUudGFyZ2V0KS5jbG9zZXN0KCcuYW5ndWxhci1saWdodGJveC1tb2RhbC10cmlnZ2VyJykpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG5cdHZtLnNlYXJjaElzU2F2ZWQgPSBmdW5jdGlvbigpIHtcclxuXHRcdCRzY29wZS5zZWFyY2hJc1NhdmVkID0gdHJ1ZTtcclxuXHRcdCRzY29wZS4kYXBwbHkoKTtcclxuXHR9O1xyXG59O1xyXG5cclxudmFyIGluZm9ybWFTZWFyY2hBcHAgPSBhbmd1bGFyLm1vZHVsZSgnaW5mb3JtYVNlYXJjaEFwcCcpO1xyXG5pbmZvcm1hU2VhcmNoQXBwLmNvbnRyb2xsZXIoXCJTYXZlZFNlYXJjaENvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJGxvY2F0aW9uJywgJyR0aW1lb3V0JywgJyRodHRwJywgJ3NlYXJjaFNlcnZpY2UnLCAnc2F2ZWRTZWFyY2hTZXJ2aWNlJywgU2F2ZWRTZWFyY2hDb250cm9sbGVyXSk7XHJcbiIsIi8qIGdsb2JhbCBhbmd1bGFyLCBhbmFseXRpY3NfZGF0YSAqL1xyXG5pbXBvcnQgeyBhbmFseXRpY3NFdmVudCB9IGZyb20gJy4uLy4uL2NvbnRyb2xsZXJzL2FuYWx5dGljcy1jb250cm9sbGVyJztcclxuXHJcbnZhciBTb3J0QnlEYXRlQ29udHJvbGxlciA9IGZ1bmN0aW9uICgkc2NvcGUsICRsb2NhdGlvbiwgJHRpbWVvdXQsICRodHRwLCBzZWFyY2hTZXJ2aWNlLCBzYXZlZFNlYXJjaFNlcnZpY2UpIHtcclxuICAgIFwidXNlIHN0cmljdFwiO1xyXG5cclxuICAgIHZhciB2bSA9IHRoaXM7XHJcblxyXG5cdHZtLnJlc3VsdHNTb3J0ZWQgPSBmdW5jdGlvbihzb3J0aW5nQXNjKSB7XHJcblx0XHRpZihzb3J0aW5nQXNjKSB7XHJcblx0XHRcdGFuYWx5dGljc0V2ZW50KCAkLmV4dGVuZChhbmFseXRpY3NfZGF0YSwge1xyXG5cdFx0XHRcdGV2ZW50X25hbWU6ICdzZWFyY2hfdXRpbGl0eScsXHJcblx0XHRcdFx0c2VhcmNoX3V0aWxpdHk6ICdzb3J0X2J5X2RhdGU6YXNjJ1xyXG5cdFx0XHR9KSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRhbmFseXRpY3NFdmVudCggJC5leHRlbmQoYW5hbHl0aWNzX2RhdGEsIHtcclxuXHRcdFx0XHRldmVudF9uYW1lOiAnc2VhcmNoX3V0aWxpdHknLFxyXG5cdFx0XHRcdHNlYXJjaF91dGlsaXR5OiAnc29ydF9ieV9kYXRlOmRlc2MnXHJcblx0XHRcdH0pKTtcclxuXHRcdH1cclxuXHR9O1xyXG5cclxufTtcclxuXHJcbnZhciBpbmZvcm1hU2VhcmNoQXBwID0gYW5ndWxhci5tb2R1bGUoJ2luZm9ybWFTZWFyY2hBcHAnKTtcclxuaW5mb3JtYVNlYXJjaEFwcC5jb250cm9sbGVyKFwiU29ydEJ5RGF0ZUNvbnRyb2xsZXJcIiwgWyckc2NvcGUnLCAnJGxvY2F0aW9uJywgJyR0aW1lb3V0JywgJyRodHRwJywgJ3NlYXJjaFNlcnZpY2UnLCAnc2F2ZWRTZWFyY2hTZXJ2aWNlJywgU29ydEJ5RGF0ZUNvbnRyb2xsZXJdKTtcclxuIiwidmFyIGluZm9ybWFTZWFyY2hBcHAgPSBhbmd1bGFyLm1vZHVsZSgnaW5mb3JtYVNlYXJjaEFwcCcpO1xyXG5cclxuLy8gZmFjdG9yeSB0byBoYW5kbGUgY2FsbCB0byBjb21wYW5pZXMgc2VydmljZVxyXG4vLyBub3RlOiBhIGZhY3RvcnkgbGl2ZXMgdGhyb3VnaCB0aGUgZW50aXJlIGFwcGxpY2F0aW9uIGxpZmVjeWNsZVxyXG5pbmZvcm1hU2VhcmNoQXBwLmZhY3RvcnkoJ2dldENvbXBhbmllc1NlcnZpY2UnLCBbJyRodHRwJywgJyRsb2NhdGlvbicsIGZ1bmN0aW9uICgkaHR0cCwgJGxvY2F0aW9uKSB7XHJcblxyXG4gICAgdmFyIGZldGNoQ29tcGFuaWVzID0gZnVuY3Rpb24ocGFnZUlkKSB7XHJcblxyXG4gICAgICAgIHZhciBmdWxsVXJsID0gJy9hcGkvdHlwZWFoZWFkL2dldGNvbXBhbmllcz9wSWQ9JyArIHBhZ2VJZDtcclxuXHJcbiAgICAgICAgaWYgKCRsb2NhdGlvbi51cmwoKSkge1xyXG4gICAgICAgICAgICBmdWxsVXJsICs9ICcmJyArICRsb2NhdGlvbi51cmwoKS5yZXBsYWNlKCc/JywgJycpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuICRodHRwKHtcclxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgdXJsOiBmdWxsVXJsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4ge2ZldGNoQ29tcGFuaWVzIDogZmV0Y2hDb21wYW5pZXN9O1xyXG5cclxufV0pO1xyXG4iLCLvu792YXIgaW5mb3JtYVNlYXJjaEFwcCA9IGFuZ3VsYXIubW9kdWxlKCdpbmZvcm1hU2VhcmNoQXBwJyk7XHJcblxyXG4vLyBmYWN0b3J5IHRvIGhhbmRsZSBjYWxsIHRvIGNvbXBhbmllcyBzZXJ2aWNlXHJcbi8vIG5vdGU6IGEgZmFjdG9yeSBsaXZlcyB0aHJvdWdoIHRoZSBlbnRpcmUgYXBwbGljYXRpb24gbGlmZWN5Y2xlXHJcbmluZm9ybWFTZWFyY2hBcHAuZmFjdG9yeSgnc2F2ZWRTZWFyY2hTZXJ2aWNlJywgWyckaHR0cCcsICckbG9jYXRpb24nLCBmdW5jdGlvbiAoJGh0dHAsICRsb2NhdGlvbikge1xyXG5cclxuICAgIHZhciBpc1NhdmVkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciBmdWxsVXJsID0gJy9hcGkvU2F2ZWRTZWFyY2hlcz91cmw9JyArIGVzY2FwZSgkbG9jYXRpb24udXJsKCkpO1xyXG5cclxuICAgICAgICByZXR1cm4gJGh0dHAoe1xyXG4gICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICAgICAgICB1cmw6IGZ1bGxVcmxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgaXNTYXZlZDogaXNTYXZlZFxyXG4gICAgfTtcclxuXHJcbn1dKTtcclxuIiwiLyogZ2xvYmFsIGFuZ3VsYXIsIGFuYWx5dGljc19kYXRhICovXHJcbmltcG9ydCB7IGFuYWx5dGljc0V2ZW50IH0gZnJvbSAnLi4vY29udHJvbGxlcnMvYW5hbHl0aWNzLWNvbnRyb2xsZXInO1xyXG5cclxuKGZ1bmN0aW9uKCkge1xyXG4gICAgJ3VzZSBzdHJpY3QnO1xyXG5cclxuICAgIHZhciBpbmZvcm1hU2VhcmNoQXBwID0gYW5ndWxhci5tb2R1bGUoJ2luZm9ybWFTZWFyY2hBcHAnLCBbXHJcbiAgICAgICAgJ3ZlbGlyLnNlYXJjaCcsXHJcbiAgICAgICAgJ3VpLmJvb3RzdHJhcCcsXHJcbiAgICAgICAgJ25nU2FuaXRpemUnLFxyXG4gICAgICAgICduZ0FuaW1hdGUnXHJcbiAgICBdKS5jb25zdGFudCgnYXBpRW5kcG9pbnRzJywge1xyXG4gICAgICAgIEFQSV9CQVNFOiAnL2FwaScsXHJcbiAgICAgICAgU0VBUkNIX0VORFBPSU5UOiAnL3NlYXJjaCdcclxuICAgIH0pLmNvbmZpZyhbJyRsb2dQcm92aWRlcicsIGZ1bmN0aW9uKCRsb2dQcm92aWRlcikge1xyXG4gICAgICAgIC8vIEFsbCBkZWJ1Z2dpbmcgc2hvdWxkIGJlIGRvbmUgdmlhICRsb2cgaW5zdGVhZCBvZiBkaXJlY3RseSB0byBjb25zb2xlXHJcbiAgICAgICAgLy8gVGhpcyBmbGFnIGRpc2FibGVzICRsb2cuZGVidWcoKSBvdXRwdXRcclxuICAgICAgICAvLyRsb2dQcm92aWRlci5kZWJ1Z0VuYWJsZWQoZmFsc2UpO1xyXG4gICAgfV0pLmNvbmZpZyhbJyRjb21waWxlUHJvdmlkZXInLCBmdW5jdGlvbigkY29tcGlsZVByb3ZpZGVyKSB7XHJcblxyXG4gICAgICAgIC8vIGh0dHBzOi8vZG9jcy5hbmd1bGFyanMub3JnL2FwaS9uZy9wcm92aWRlci8kY29tcGlsZVByb3ZpZGVyI2RlYnVnSW5mb0VuYWJsZWRcclxuICAgICAgICAvLyBVTkNPTU1FTlQgVEhFIExJTkUgQkVMT1cgSU4gUFJPRFVDVElPTiBGT1IgUEVSRk9STUFOQ0UgR0FJTlNcclxuXHJcbiAgICAgICAgLy8gJGNvbXBpbGVQcm92aWRlci5kZWJ1Z0luZm9FbmFibGVkKGZhbHNlKTtcclxuXHJcbiAgICB9XSkuY29uZmlnKFsnJGxvY2F0aW9uUHJvdmlkZXInLCBmdW5jdGlvbigkbG9jYXRpb25Qcm92aWRlcikge1xyXG4gICAgICAgICRsb2NhdGlvblByb3ZpZGVyLmhhc2hQcmVmaXgoJycpO1xyXG4gICAgfV0pO1xyXG5cclxuICAgIGluZm9ybWFTZWFyY2hBcHAuZmFjdG9yeSgndmlld0hlYWRsaW5lc1N0YXRlU2VydmljZScsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBoZWFkbGluZXMgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgc2hvd09ubHlIZWFkbGluZXM6IGZ1bmN0aW9uKCkgeyByZXR1cm4gaGVhZGxpbmVzOyB9LFxyXG4gICAgICAgICAgICB1cGRhdGVWYWx1ZTogZnVuY3Rpb24oKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFoZWFkbGluZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBhbmFseXRpY3NFdmVudCgkLmV4dGVuZChhbmFseXRpY3NfZGF0YSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudF9uYW1lOiAnZW50aXRsZW1lbnRfdG9nZ2xlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoX3V0aWxpdHk6ICd2aWV3X2hlYWRsaW5lc19vbmx5J1xyXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBoZWFkbGluZXMgPSAhaGVhZGxpbmVzO1xyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICB9KTtcclxuXHJcbiAgICBpbmZvcm1hU2VhcmNoQXBwLmZhY3RvcnkoJ2ZhY2V0QXZhaWxhYmlsaXR5U2VydmljZScsIGZ1bmN0aW9uKCRyb290U2NvcGUpIHtcclxuXHJcbiAgICAgICAgdmFyIGZhY2V0c1N0YXRlID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZhY2V0c0FyZUVuYWJsZWQ6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhY2V0c1N0YXRlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlbmFibGVGYWNldHM6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgZmFjZXRzU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICRyb290U2NvcGUuZmFjZXRBdmFpbGFiaWxpdHkgPSBmYWNldHNTdGF0ZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGlzYWJsZUZhY2V0czogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICBmYWNldHNTdGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAkcm9vdFNjb3BlLmZhY2V0QXZhaWxhYmlsaXR5ID0gZmFjZXRzU3RhdGU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRvZ2dsZUZhY2V0czogZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICAgICAgICBmYWNldHNTdGF0ZSA9ICFmYWNldHNTdGF0ZTtcclxuICAgICAgICAgICAgICAgICRyb290U2NvcGUuZmFjZXRBdmFpbGFiaWxpdHkgPSBmYWNldHNTdGF0ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgfSk7XHJcblxyXG59KSgpOyIsImltcG9ydCBBcHAgZnJvbSAnLi9pbmZvcm1hU2VhcmNoQXBwLmpzJztcclxuaW1wb3J0IENvbXBhbmllc0ZhY3RvcnkgZnJvbSAnLi9mYWN0b3JpZXMvY29tcGFuaWVzRmFjdG9yeS5qcyc7XHJcbmltcG9ydCBTYXZlZFNlYXJjaEZhY3RvcnkgZnJvbSAnLi9mYWN0b3JpZXMvc2F2ZWRTZWFyY2hGYWN0b3J5LmpzJztcclxuaW1wb3J0IEhlYWRsaW5lVG9nZ2xlQ29udHJvbGxlciBmcm9tICcuL2NvbnRyb2xsZXJzL2hlYWRsaW5lVG9nZ2xlQ29udHJvbGxlci5qcyc7XHJcbmltcG9ydCBGcmVlQ29udGVudFRvZ2dsZUNvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVycy9GcmVlQ29udGVudFRvZ2dsZUNvbnRyb2xsZXIuanMnO1xyXG5pbXBvcnQgSW5mb3JtYUZhY2V0c0NvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVycy9pbmZvcm1hRmFjZXRzQ29udHJvbGxlci5qcyc7XHJcbmltcG9ydCBJbmZvcm1hRmFjZXRzRGF0YUNvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVycy9pbmZvcm1hRmFjZXRzRGF0YUNvbnRyb2xsZXIuanMnO1xyXG5pbXBvcnQgSW5mb3JtYURhdGVzQ29udHJvbGxlciBmcm9tICcuL2NvbnRyb2xsZXJzL2luZm9ybWFEYXRlc0NvbnRyb2xsZXIuanMnO1xyXG5pbXBvcnQgSW5mb3JtYVJlc3VsdHNDb250cm9sbGVyIGZyb20gJy4vY29udHJvbGxlcnMvaW5mb3JtYVJlc3VsdHNDb250cm9sbGVyLmpzJztcclxuaW1wb3J0IEVtYWlsUnNzQ29udHJvbGxlciBmcm9tICcuL2NvbnRyb2xsZXJzL2VtYWlsUnNzQ29udHJvbGxlci5qcyc7XHJcbmltcG9ydCBUeXBlYWhlYWRDb250cm9sbGVyIGZyb20gJy4vY29udHJvbGxlcnMvVHlwZWFoZWFkQ29udHJvbGxlci5qcyc7XHJcbmltcG9ydCBIZWFkbGluZVNlYXJjaENvbnRyb2xsZXIgZnJvbSAnLi9jb250cm9sbGVycy9oZWFkbGluZVNlYXJjaENvbnRyb2xsZXIuanMnO1xyXG5pbXBvcnQgUGFnZVNpemVDb250cm9sbGVyIGZyb20gJy4vY29udHJvbGxlcnMvcGFnZVNpemVDb250cm9sbGVyLmpzJztcclxuaW1wb3J0IFNhdmVkU2VhcmNoQ29udHJvbGxlciBmcm9tICcuL2NvbnRyb2xsZXJzL3NhdmVkU2VhcmNoQ29udHJvbGxlci5qcyc7XHJcbmltcG9ydCBTb3J0QnlEYXRlQ29udHJvbGxlciBmcm9tICcuL2NvbnRyb2xsZXJzL3NvcnRCeURhdGVDb250cm9sbGVyLmpzJztcclxuXHJcbmltcG9ydCBBbmd1bGFyVUlCb290c3RyYXAgZnJvbSAnLi91aS1ib290c3RyYXAtY3VzdG9tLXRwbHMtMS4yLjQubWluLmpzJztcclxuaW1wb3J0IEFkdmFuY2VTZWFyY2hDb250cm9sbGVyIGZyb20gJy4vY29udHJvbGxlcnMvYWR2YW5jZVNlYXJjaENvbnRyb2xsZXIuanMnOyIsIi8qXHJcbiAqIGFuZ3VsYXItdWktYm9vdHN0cmFwXHJcbiAqIGh0dHA6Ly9hbmd1bGFyLXVpLmdpdGh1Yi5pby9ib290c3RyYXAvXHJcblxyXG4gKiBWZXJzaW9uOiAxLjIuNCAtIDIwMTYtMDMtMDZcclxuICogTGljZW5zZTogTUlUXHJcbiAqL2FuZ3VsYXIubW9kdWxlKFwidWkuYm9vdHN0cmFwXCIsW1widWkuYm9vdHN0cmFwLnRwbHNcIixcInVpLmJvb3RzdHJhcC5kYXRlcGlja2VyXCIsXCJ1aS5ib290c3RyYXAuZGF0ZXBhcnNlclwiLFwidWkuYm9vdHN0cmFwLmlzQ2xhc3NcIixcInVpLmJvb3RzdHJhcC5wb3NpdGlvblwiLFwidWkuYm9vdHN0cmFwLnR5cGVhaGVhZFwiLFwidWkuYm9vdHN0cmFwLmRlYm91bmNlXCJdKSxhbmd1bGFyLm1vZHVsZShcInVpLmJvb3RzdHJhcC50cGxzXCIsW1widWliL3RlbXBsYXRlL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5odG1sXCIsXCJ1aWIvdGVtcGxhdGUvZGF0ZXBpY2tlci9kYXkuaHRtbFwiLFwidWliL3RlbXBsYXRlL2RhdGVwaWNrZXIvbW9udGguaHRtbFwiLFwidWliL3RlbXBsYXRlL2RhdGVwaWNrZXIvcG9wdXAuaHRtbFwiLFwidWliL3RlbXBsYXRlL2RhdGVwaWNrZXIveWVhci5odG1sXCIsXCJ1aWIvdGVtcGxhdGUvdHlwZWFoZWFkL3R5cGVhaGVhZC1tYXRjaC5odG1sXCIsXCJ1aWIvdGVtcGxhdGUvdHlwZWFoZWFkL3R5cGVhaGVhZC1wb3B1cC5odG1sXCJdKSxhbmd1bGFyLm1vZHVsZShcInVpLmJvb3RzdHJhcC5kYXRlcGlja2VyXCIsW1widWkuYm9vdHN0cmFwLmRhdGVwYXJzZXJcIixcInVpLmJvb3RzdHJhcC5pc0NsYXNzXCIsXCJ1aS5ib290c3RyYXAucG9zaXRpb25cIl0pLnZhbHVlKFwiJGRhdGVwaWNrZXJTdXBwcmVzc0Vycm9yXCIsITEpLnZhbHVlKFwidWliRGF0ZXBpY2tlckF0dHJpYnV0ZVdhcm5pbmdcIiwhMCkuY29uc3RhbnQoXCJ1aWJEYXRlcGlja2VyQ29uZmlnXCIse2RhdGVwaWNrZXJNb2RlOlwiZGF5XCIsZm9ybWF0RGF5OlwiZGRcIixmb3JtYXRNb250aDpcIk1NTU1cIixmb3JtYXRZZWFyOlwieXl5eVwiLGZvcm1hdERheUhlYWRlcjpcIkVFRVwiLGZvcm1hdERheVRpdGxlOlwiTU1NTSB5eXl5XCIsZm9ybWF0TW9udGhUaXRsZTpcInl5eXlcIixtYXhEYXRlOm51bGwsbWF4TW9kZTpcInllYXJcIixtaW5EYXRlOm51bGwsbWluTW9kZTpcImRheVwiLG5nTW9kZWxPcHRpb25zOnt9LHNob3J0Y3V0UHJvcGFnYXRpb246ITEsc2hvd1dlZWtzOiEwLHllYXJDb2x1bW5zOjUseWVhclJvd3M6NH0pLmNvbnRyb2xsZXIoXCJVaWJEYXRlcGlja2VyQ29udHJvbGxlclwiLFtcIiRzY29wZVwiLFwiJGF0dHJzXCIsXCIkcGFyc2VcIixcIiRpbnRlcnBvbGF0ZVwiLFwiJGxvY2FsZVwiLFwiJGxvZ1wiLFwiZGF0ZUZpbHRlclwiLFwidWliRGF0ZXBpY2tlckNvbmZpZ1wiLFwiJGRhdGVwaWNrZXJTdXBwcmVzc0Vycm9yXCIsXCJ1aWJEYXRlcGlja2VyQXR0cmlidXRlV2FybmluZ1wiLFwidWliRGF0ZVBhcnNlclwiLGZ1bmN0aW9uKGUsdCxhLGksbixyLG8scyxsLHUscCl7ZnVuY3Rpb24gYyh0KXtlLmRhdGVwaWNrZXJNb2RlPXQsZyYmKGUuZGF0ZXBpY2tlck9wdGlvbnMuZGF0ZXBpY2tlck1vZGU9dCl9dmFyIGQ9dGhpcyxoPXskc2V0Vmlld1ZhbHVlOmFuZ3VsYXIubm9vcH0sZj17fSxtPVtdLGc9ISF0LmRhdGVwaWNrZXJPcHRpb25zO2lmKHRoaXMubW9kZXM9W1wiZGF5XCIsXCJtb250aFwiLFwieWVhclwiXSxnKVtcImN1c3RvbUNsYXNzXCIsXCJkYXRlRGlzYWJsZWRcIixcImRhdGVwaWNrZXJNb2RlXCIsXCJmb3JtYXREYXlcIixcImZvcm1hdERheUhlYWRlclwiLFwiZm9ybWF0RGF5VGl0bGVcIixcImZvcm1hdE1vbnRoXCIsXCJmb3JtYXRNb250aFRpdGxlXCIsXCJmb3JtYXRZZWFyXCIsXCJpbml0RGF0ZVwiLFwibWF4RGF0ZVwiLFwibWF4TW9kZVwiLFwibWluRGF0ZVwiLFwibWluTW9kZVwiLFwic2hvd1dlZWtzXCIsXCJzaG9ydGN1dFByb3BhZ2F0aW9uXCIsXCJzdGFydGluZ0RheVwiLFwieWVhckNvbHVtbnNcIixcInllYXJSb3dzXCJdLmZvckVhY2goZnVuY3Rpb24odCl7c3dpdGNoKHQpe2Nhc2VcImN1c3RvbUNsYXNzXCI6Y2FzZVwiZGF0ZURpc2FibGVkXCI6ZVt0XT1lLmRhdGVwaWNrZXJPcHRpb25zW3RdfHxhbmd1bGFyLm5vb3A7YnJlYWs7Y2FzZVwiZGF0ZXBpY2tlck1vZGVcIjplLmRhdGVwaWNrZXJNb2RlPWFuZ3VsYXIuaXNEZWZpbmVkKGUuZGF0ZXBpY2tlck9wdGlvbnMuZGF0ZXBpY2tlck1vZGUpP2UuZGF0ZXBpY2tlck9wdGlvbnMuZGF0ZXBpY2tlck1vZGU6cy5kYXRlcGlja2VyTW9kZTticmVhaztjYXNlXCJmb3JtYXREYXlcIjpjYXNlXCJmb3JtYXREYXlIZWFkZXJcIjpjYXNlXCJmb3JtYXREYXlUaXRsZVwiOmNhc2VcImZvcm1hdE1vbnRoXCI6Y2FzZVwiZm9ybWF0TW9udGhUaXRsZVwiOmNhc2VcImZvcm1hdFllYXJcIjpkW3RdPWFuZ3VsYXIuaXNEZWZpbmVkKGUuZGF0ZXBpY2tlck9wdGlvbnNbdF0pP2koZS5kYXRlcGlja2VyT3B0aW9uc1t0XSkoZS4kcGFyZW50KTpzW3RdO2JyZWFrO2Nhc2VcInNob3dXZWVrc1wiOmNhc2VcInNob3J0Y3V0UHJvcGFnYXRpb25cIjpjYXNlXCJ5ZWFyQ29sdW1uc1wiOmNhc2VcInllYXJSb3dzXCI6ZFt0XT1hbmd1bGFyLmlzRGVmaW5lZChlLmRhdGVwaWNrZXJPcHRpb25zW3RdKT9lLmRhdGVwaWNrZXJPcHRpb25zW3RdOnNbdF07YnJlYWs7Y2FzZVwic3RhcnRpbmdEYXlcIjpkLnN0YXJ0aW5nRGF5PWFuZ3VsYXIuaXNEZWZpbmVkKGUuZGF0ZXBpY2tlck9wdGlvbnMuc3RhcnRpbmdEYXkpP2UuZGF0ZXBpY2tlck9wdGlvbnMuc3RhcnRpbmdEYXk6YW5ndWxhci5pc051bWJlcihzLnN0YXJ0aW5nRGF5KT9zLnN0YXJ0aW5nRGF5OihuLkRBVEVUSU1FX0ZPUk1BVFMuRklSU1REQVlPRldFRUsrOCklNzticmVhaztjYXNlXCJtYXhEYXRlXCI6Y2FzZVwibWluRGF0ZVwiOmUuZGF0ZXBpY2tlck9wdGlvbnNbdF0/ZS4kd2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gZS5kYXRlcGlja2VyT3B0aW9uc1t0XX0sZnVuY3Rpb24oZSl7ZFt0XT1lP2FuZ3VsYXIuaXNEYXRlKGUpP3AuZnJvbVRpbWV6b25lKG5ldyBEYXRlKGUpLGYudGltZXpvbmUpOm5ldyBEYXRlKG8oZSxcIm1lZGl1bVwiKSk6bnVsbCxkLnJlZnJlc2hWaWV3KCl9KTpkW3RdPXNbdF0/cC5mcm9tVGltZXpvbmUobmV3IERhdGUoc1t0XSksZi50aW1lem9uZSk6bnVsbDticmVhaztjYXNlXCJtYXhNb2RlXCI6Y2FzZVwibWluTW9kZVwiOmUuZGF0ZXBpY2tlck9wdGlvbnNbdF0/ZS4kd2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gZS5kYXRlcGlja2VyT3B0aW9uc1t0XX0sZnVuY3Rpb24oYSl7ZFt0XT1lW3RdPWFuZ3VsYXIuaXNEZWZpbmVkKGEpP2E6ZGF0ZXBpY2tlck9wdGlvbnNbdF0sKFwibWluTW9kZVwiPT09dCYmZC5tb2Rlcy5pbmRleE9mKGUuZGF0ZXBpY2tlck9wdGlvbnMuZGF0ZXBpY2tlck1vZGUpPGQubW9kZXMuaW5kZXhPZihkW3RdKXx8XCJtYXhNb2RlXCI9PT10JiZkLm1vZGVzLmluZGV4T2YoZS5kYXRlcGlja2VyT3B0aW9ucy5kYXRlcGlja2VyTW9kZSk+ZC5tb2Rlcy5pbmRleE9mKGRbdF0pKSYmKGUuZGF0ZXBpY2tlck1vZGU9ZFt0XSxlLmRhdGVwaWNrZXJPcHRpb25zLmRhdGVwaWNrZXJNb2RlPWRbdF0pfSk6ZFt0XT1lW3RdPXNbdF18fG51bGw7YnJlYWs7Y2FzZVwiaW5pdERhdGVcIjplLmRhdGVwaWNrZXJPcHRpb25zLmluaXREYXRlPyhkLmFjdGl2ZURhdGU9cC5mcm9tVGltZXpvbmUoZS5kYXRlcGlja2VyT3B0aW9ucy5pbml0RGF0ZSxmLnRpbWV6b25lKXx8bmV3IERhdGUsZS4kd2F0Y2goZnVuY3Rpb24oKXtyZXR1cm4gZS5kYXRlcGlja2VyT3B0aW9ucy5pbml0RGF0ZX0sZnVuY3Rpb24oZSl7ZSYmKGguJGlzRW1wdHkoaC4kbW9kZWxWYWx1ZSl8fGguJGludmFsaWQpJiYoZC5hY3RpdmVEYXRlPXAuZnJvbVRpbWV6b25lKGUsZi50aW1lem9uZSksZC5yZWZyZXNoVmlldygpKX0pKTpkLmFjdGl2ZURhdGU9bmV3IERhdGV9fSk7ZWxzZXtpZihhbmd1bGFyLmZvckVhY2goW1wiZm9ybWF0RGF5XCIsXCJmb3JtYXRNb250aFwiLFwiZm9ybWF0WWVhclwiLFwiZm9ybWF0RGF5SGVhZGVyXCIsXCJmb3JtYXREYXlUaXRsZVwiLFwiZm9ybWF0TW9udGhUaXRsZVwiXSxmdW5jdGlvbihhKXtkW2FdPWFuZ3VsYXIuaXNEZWZpbmVkKHRbYV0pP2kodFthXSkoZS4kcGFyZW50KTpzW2FdLGFuZ3VsYXIuaXNEZWZpbmVkKHRbYV0pJiZ1JiZyLndhcm4oXCJ1aWItZGF0ZXBpY2tlciBcIithK1wiIGF0dHJpYnV0ZSB1c2FnZSBpcyBkZXByZWNhdGVkLCB1c2UgZGF0ZXBpY2tlci1vcHRpb25zIGF0dHJpYnV0ZSBpbnN0ZWFkXCIpfSksYW5ndWxhci5mb3JFYWNoKFtcInNob3dXZWVrc1wiLFwieWVhclJvd3NcIixcInllYXJDb2x1bW5zXCIsXCJzaG9ydGN1dFByb3BhZ2F0aW9uXCJdLGZ1bmN0aW9uKGEpe2RbYV09YW5ndWxhci5pc0RlZmluZWQodFthXSk/ZS4kcGFyZW50LiRldmFsKHRbYV0pOnNbYV0sYW5ndWxhci5pc0RlZmluZWQodFthXSkmJnUmJnIud2FybihcInVpYi1kYXRlcGlja2VyIFwiK2ErXCIgYXR0cmlidXRlIHVzYWdlIGlzIGRlcHJlY2F0ZWQsIHVzZSBkYXRlcGlja2VyLW9wdGlvbnMgYXR0cmlidXRlIGluc3RlYWRcIil9KSxhbmd1bGFyLmZvckVhY2goW1wiZGF0ZURpc2FibGVkXCIsXCJjdXN0b21DbGFzc1wiXSxmdW5jdGlvbihlKXthbmd1bGFyLmlzRGVmaW5lZCh0W2VdKSYmdSYmci53YXJuKFwidWliLWRhdGVwaWNrZXIgXCIrZStcIiBhdHRyaWJ1dGUgdXNhZ2UgaXMgZGVwcmVjYXRlZCwgdXNlIGRhdGVwaWNrZXItb3B0aW9ucyBhdHRyaWJ1dGUgaW5zdGVhZFwiKX0pLGFuZ3VsYXIuaXNEZWZpbmVkKHQuc3RhcnRpbmdEYXkpPyh1JiZyLndhcm4oXCJ1aWItZGF0ZXBpY2tlciBzdGFydGluZ0RheSBhdHRyaWJ1dGUgdXNhZ2UgaXMgZGVwcmVjYXRlZCwgdXNlIGRhdGVwaWNrZXItb3B0aW9ucyBhdHRyaWJ1dGUgaW5zdGVhZFwiKSxkLnN0YXJ0aW5nRGF5PWUuJHBhcmVudC4kZXZhbCh0LnN0YXJ0aW5nRGF5KSk6ZC5zdGFydGluZ0RheT1hbmd1bGFyLmlzTnVtYmVyKHMuc3RhcnRpbmdEYXkpP3Muc3RhcnRpbmdEYXk6KG4uREFURVRJTUVfRk9STUFUUy5GSVJTVERBWU9GV0VFSys4KSU3LGFuZ3VsYXIuZm9yRWFjaChbXCJtaW5EYXRlXCIsXCJtYXhEYXRlXCJdLGZ1bmN0aW9uKGEpe3RbYV0/KHUmJnIud2FybihcInVpYi1kYXRlcGlja2VyIFwiK2ErXCIgYXR0cmlidXRlIHVzYWdlIGlzIGRlcHJlY2F0ZWQsIHVzZSBkYXRlcGlja2VyLW9wdGlvbnMgYXR0cmlidXRlIGluc3RlYWRcIiksbS5wdXNoKGUuJHBhcmVudC4kd2F0Y2godFthXSxmdW5jdGlvbihlKXtkW2FdPWU/YW5ndWxhci5pc0RhdGUoZSk/cC5mcm9tVGltZXpvbmUobmV3IERhdGUoZSksZi50aW1lem9uZSk6bmV3IERhdGUobyhlLFwibWVkaXVtXCIpKTpudWxsLGQucmVmcmVzaFZpZXcoKX0pKSk6ZFthXT1zW2FdP3AuZnJvbVRpbWV6b25lKG5ldyBEYXRlKHNbYV0pLGYudGltZXpvbmUpOm51bGx9KSxhbmd1bGFyLmZvckVhY2goW1wibWluTW9kZVwiLFwibWF4TW9kZVwiXSxmdW5jdGlvbihhKXt0W2FdPyh1JiZyLndhcm4oXCJ1aWItZGF0ZXBpY2tlciBcIithK1wiIGF0dHJpYnV0ZSB1c2FnZSBpcyBkZXByZWNhdGVkLCB1c2UgZGF0ZXBpY2tlci1vcHRpb25zIGF0dHJpYnV0ZSBpbnN0ZWFkXCIpLG0ucHVzaChlLiRwYXJlbnQuJHdhdGNoKHRbYV0sZnVuY3Rpb24oaSl7ZFthXT1lW2FdPWFuZ3VsYXIuaXNEZWZpbmVkKGkpP2k6dFthXSwoXCJtaW5Nb2RlXCI9PT1hJiZkLm1vZGVzLmluZGV4T2YoZS5kYXRlcGlja2VyTW9kZSk8ZC5tb2Rlcy5pbmRleE9mKGRbYV0pfHxcIm1heE1vZGVcIj09PWEmJmQubW9kZXMuaW5kZXhPZihlLmRhdGVwaWNrZXJNb2RlKT5kLm1vZGVzLmluZGV4T2YoZFthXSkpJiYoZS5kYXRlcGlja2VyTW9kZT1kW2FdKX0pKSk6ZFthXT1lW2FdPXNbYV18fG51bGx9KSxhbmd1bGFyLmlzRGVmaW5lZCh0LmluaXREYXRlKSl7dSYmci53YXJuKFwidWliLWRhdGVwaWNrZXIgaW5pdERhdGUgYXR0cmlidXRlIHVzYWdlIGlzIGRlcHJlY2F0ZWQsIHVzZSBkYXRlcGlja2VyLW9wdGlvbnMgYXR0cmlidXRlIGluc3RlYWRcIik7dmFyIGI9cC5mcm9tVGltZXpvbmUoZS4kcGFyZW50LiRldmFsKHQuaW5pdERhdGUpLGYudGltZXpvbmUpO3RoaXMuYWN0aXZlRGF0ZT1pc05hTihiKT9uZXcgRGF0ZTpiLG0ucHVzaChlLiRwYXJlbnQuJHdhdGNoKHQuaW5pdERhdGUsZnVuY3Rpb24oZSl7ZSYmKGguJGlzRW1wdHkoaC4kbW9kZWxWYWx1ZSl8fGguJGludmFsaWQpJiYoZT1wLmZyb21UaW1lem9uZShlLGYudGltZXpvbmUpLGQuYWN0aXZlRGF0ZT1pc05hTihlKT9uZXcgRGF0ZTplLGQucmVmcmVzaFZpZXcoKSl9KSl9ZWxzZSB0aGlzLmFjdGl2ZURhdGU9bmV3IERhdGU7dC5kYXRlcGlja2VyTW9kZSYmdSYmci53YXJuKFwidWliLWRhdGVwaWNrZXIgZGF0ZXBpY2tlck1vZGUgYXR0cmlidXRlIHVzYWdlIGlzIGRlcHJlY2F0ZWQsIHVzZSBkYXRlcGlja2VyLW9wdGlvbnMgYXR0cmlidXRlIGluc3RlYWRcIiksZS5kYXRlcGlja2VyTW9kZT1lLmRhdGVwaWNrZXJNb2RlfHxzLmRhdGVwaWNrZXJNb2RlfWUudW5pcXVlSWQ9XCJkYXRlcGlja2VyLVwiK2UuJGlkK1wiLVwiK01hdGguZmxvb3IoMWU0Kk1hdGgucmFuZG9tKCkpLGUuZGlzYWJsZWQ9YW5ndWxhci5pc0RlZmluZWQodC5kaXNhYmxlZCl8fCExLGFuZ3VsYXIuaXNEZWZpbmVkKHQubmdEaXNhYmxlZCkmJm0ucHVzaChlLiRwYXJlbnQuJHdhdGNoKHQubmdEaXNhYmxlZCxmdW5jdGlvbih0KXtlLmRpc2FibGVkPXQsZC5yZWZyZXNoVmlldygpfSkpLGUuaXNBY3RpdmU9ZnVuY3Rpb24odCl7cmV0dXJuIDA9PT1kLmNvbXBhcmUodC5kYXRlLGQuYWN0aXZlRGF0ZSk/KGUuYWN0aXZlRGF0ZUlkPXQudWlkLCEwKTohMX0sdGhpcy5pbml0PWZ1bmN0aW9uKGUpe2g9ZSxmPWUuJG9wdGlvbnN8fHMubmdNb2RlbE9wdGlvbnMsdGhpcy5hY3RpdmVEYXRlPWguJG1vZGVsVmFsdWV8fG5ldyBEYXRlLGguJHJlbmRlcj1mdW5jdGlvbigpe2QucmVuZGVyKCl9fSx0aGlzLnJlbmRlcj1mdW5jdGlvbigpe2lmKGguJHZpZXdWYWx1ZSl7dmFyIGU9bmV3IERhdGUoaC4kdmlld1ZhbHVlKSx0PSFpc05hTihlKTt0P3RoaXMuYWN0aXZlRGF0ZT1wLmZyb21UaW1lem9uZShlLGYudGltZXpvbmUpOmx8fHIuZXJyb3IoJ0RhdGVwaWNrZXIgZGlyZWN0aXZlOiBcIm5nLW1vZGVsXCIgdmFsdWUgbXVzdCBiZSBhIERhdGUgb2JqZWN0Jyl9dGhpcy5yZWZyZXNoVmlldygpfSx0aGlzLnJlZnJlc2hWaWV3PWZ1bmN0aW9uKCl7aWYodGhpcy5lbGVtZW50KXtlLnNlbGVjdGVkRHQ9bnVsbCx0aGlzLl9yZWZyZXNoVmlldygpLGUuYWN0aXZlRHQmJihlLmFjdGl2ZURhdGVJZD1lLmFjdGl2ZUR0LnVpZCk7dmFyIHQ9aC4kdmlld1ZhbHVlP25ldyBEYXRlKGguJHZpZXdWYWx1ZSk6bnVsbDt0PXAuZnJvbVRpbWV6b25lKHQsZi50aW1lem9uZSksaC4kc2V0VmFsaWRpdHkoXCJkYXRlRGlzYWJsZWRcIiwhdHx8dGhpcy5lbGVtZW50JiYhdGhpcy5pc0Rpc2FibGVkKHQpKX19LHRoaXMuY3JlYXRlRGF0ZU9iamVjdD1mdW5jdGlvbih0LGEpe3ZhciBpPWguJHZpZXdWYWx1ZT9uZXcgRGF0ZShoLiR2aWV3VmFsdWUpOm51bGw7aT1wLmZyb21UaW1lem9uZShpLGYudGltZXpvbmUpO3ZhciBuPW5ldyBEYXRlO249cC5mcm9tVGltZXpvbmUobixmLnRpbWV6b25lKTt2YXIgcj10aGlzLmNvbXBhcmUodCxuKSxvPXtkYXRlOnQsbGFiZWw6cC5maWx0ZXIodCxhKSxzZWxlY3RlZDppJiYwPT09dGhpcy5jb21wYXJlKHQsaSksZGlzYWJsZWQ6dGhpcy5pc0Rpc2FibGVkKHQpLHBhc3Q6MD5yLGN1cnJlbnQ6MD09PXIsZnV0dXJlOnI+MCxjdXN0b21DbGFzczp0aGlzLmN1c3RvbUNsYXNzKHQpfHxudWxsfTtyZXR1cm4gaSYmMD09PXRoaXMuY29tcGFyZSh0LGkpJiYoZS5zZWxlY3RlZER0PW8pLGQuYWN0aXZlRGF0ZSYmMD09PXRoaXMuY29tcGFyZShvLmRhdGUsZC5hY3RpdmVEYXRlKSYmKGUuYWN0aXZlRHQ9byksb30sdGhpcy5pc0Rpc2FibGVkPWZ1bmN0aW9uKHQpe3JldHVybiBlLmRpc2FibGVkfHx0aGlzLm1pbkRhdGUmJnRoaXMuY29tcGFyZSh0LHRoaXMubWluRGF0ZSk8MHx8dGhpcy5tYXhEYXRlJiZ0aGlzLmNvbXBhcmUodCx0aGlzLm1heERhdGUpPjB8fGUuZGF0ZURpc2FibGVkJiZlLmRhdGVEaXNhYmxlZCh7ZGF0ZTp0LG1vZGU6ZS5kYXRlcGlja2VyTW9kZX0pfSx0aGlzLmN1c3RvbUNsYXNzPWZ1bmN0aW9uKHQpe3JldHVybiBlLmN1c3RvbUNsYXNzKHtkYXRlOnQsbW9kZTplLmRhdGVwaWNrZXJNb2RlfSl9LHRoaXMuc3BsaXQ9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIGE9W107ZS5sZW5ndGg+MDspYS5wdXNoKGUuc3BsaWNlKDAsdCkpO3JldHVybiBhfSxlLnNlbGVjdD1mdW5jdGlvbih0KXtpZihlLmRhdGVwaWNrZXJNb2RlPT09ZC5taW5Nb2RlKXt2YXIgYT1oLiR2aWV3VmFsdWU/cC5mcm9tVGltZXpvbmUobmV3IERhdGUoaC4kdmlld1ZhbHVlKSxmLnRpbWV6b25lKTpuZXcgRGF0ZSgwLDAsMCwwLDAsMCwwKTthLnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKSx0LmdldE1vbnRoKCksdC5nZXREYXRlKCkpLGE9cC50b1RpbWV6b25lKGEsZi50aW1lem9uZSksaC4kc2V0Vmlld1ZhbHVlKGEpLGguJHJlbmRlcigpfWVsc2UgZC5hY3RpdmVEYXRlPXQsYyhkLm1vZGVzW2QubW9kZXMuaW5kZXhPZihlLmRhdGVwaWNrZXJNb2RlKS0xXSksZS4kZW1pdChcInVpYjpkYXRlcGlja2VyLm1vZGVcIil9LGUubW92ZT1mdW5jdGlvbihlKXt2YXIgdD1kLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKStlKihkLnN0ZXAueWVhcnN8fDApLGE9ZC5hY3RpdmVEYXRlLmdldE1vbnRoKCkrZSooZC5zdGVwLm1vbnRoc3x8MCk7ZC5hY3RpdmVEYXRlLnNldEZ1bGxZZWFyKHQsYSwxKSxkLnJlZnJlc2hWaWV3KCl9LGUudG9nZ2xlTW9kZT1mdW5jdGlvbih0KXt0PXR8fDEsZS5kYXRlcGlja2VyTW9kZT09PWQubWF4TW9kZSYmMT09PXR8fGUuZGF0ZXBpY2tlck1vZGU9PT1kLm1pbk1vZGUmJi0xPT09dHx8KGMoZC5tb2Rlc1tkLm1vZGVzLmluZGV4T2YoZS5kYXRlcGlja2VyTW9kZSkrdF0pLGUuJGVtaXQoXCJ1aWI6ZGF0ZXBpY2tlci5tb2RlXCIpKX0sZS5rZXlzPXsxMzpcImVudGVyXCIsMzI6XCJzcGFjZVwiLDMzOlwicGFnZXVwXCIsMzQ6XCJwYWdlZG93blwiLDM1OlwiZW5kXCIsMzY6XCJob21lXCIsMzc6XCJsZWZ0XCIsMzg6XCJ1cFwiLDM5OlwicmlnaHRcIiw0MDpcImRvd25cIn07dmFyIHk9ZnVuY3Rpb24oKXtkLmVsZW1lbnRbMF0uZm9jdXMoKX07ZS4kb24oXCJ1aWI6ZGF0ZXBpY2tlci5mb2N1c1wiLHkpLGUua2V5ZG93bj1mdW5jdGlvbih0KXt2YXIgYT1lLmtleXNbdC53aGljaF07aWYoYSYmIXQuc2hpZnRLZXkmJiF0LmFsdEtleSYmIWUuZGlzYWJsZWQpaWYodC5wcmV2ZW50RGVmYXVsdCgpLGQuc2hvcnRjdXRQcm9wYWdhdGlvbnx8dC5zdG9wUHJvcGFnYXRpb24oKSxcImVudGVyXCI9PT1hfHxcInNwYWNlXCI9PT1hKXtpZihkLmlzRGlzYWJsZWQoZC5hY3RpdmVEYXRlKSlyZXR1cm47ZS5zZWxlY3QoZC5hY3RpdmVEYXRlKX1lbHNlIXQuY3RybEtleXx8XCJ1cFwiIT09YSYmXCJkb3duXCIhPT1hPyhkLmhhbmRsZUtleURvd24oYSx0KSxkLnJlZnJlc2hWaWV3KCkpOmUudG9nZ2xlTW9kZShcInVwXCI9PT1hPzE6LTEpfSxlLiRvbihcIiRkZXN0cm95XCIsZnVuY3Rpb24oKXtmb3IoO20ubGVuZ3RoOyltLnNoaWZ0KCkoKX0pfV0pLmNvbnRyb2xsZXIoXCJVaWJEYXlwaWNrZXJDb250cm9sbGVyXCIsW1wiJHNjb3BlXCIsXCIkZWxlbWVudFwiLFwiZGF0ZUZpbHRlclwiLGZ1bmN0aW9uKGUsdCxhKXtmdW5jdGlvbiBpKGUsdCl7cmV0dXJuIDEhPT10fHxlJTQhPT0wfHxlJTEwMD09PTAmJmUlNDAwIT09MD9yW3RdOjI5fWZ1bmN0aW9uIG4oZSl7dmFyIHQ9bmV3IERhdGUoZSk7dC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzQtKHQuZ2V0RGF5KCl8fDcpKTt2YXIgYT10LmdldFRpbWUoKTtyZXR1cm4gdC5zZXRNb250aCgwKSx0LnNldERhdGUoMSksTWF0aC5mbG9vcihNYXRoLnJvdW5kKChhLXQpLzg2NGU1KS83KSsxfXZhciByPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV07dGhpcy5zdGVwPXttb250aHM6MX0sdGhpcy5lbGVtZW50PXQsdGhpcy5pbml0PWZ1bmN0aW9uKHQpe2FuZ3VsYXIuZXh0ZW5kKHQsdGhpcyksZS5zaG93V2Vla3M9dC5zaG93V2Vla3MsdC5yZWZyZXNoVmlldygpfSx0aGlzLmdldERhdGVzPWZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBhLGk9bmV3IEFycmF5KHQpLG49bmV3IERhdGUoZSkscj0wO3Q+cjspYT1uZXcgRGF0ZShuKSxpW3IrK109YSxuLnNldERhdGUobi5nZXREYXRlKCkrMSk7cmV0dXJuIGl9LHRoaXMuX3JlZnJlc2hWaWV3PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksaT10aGlzLmFjdGl2ZURhdGUuZ2V0TW9udGgoKSxyPW5ldyBEYXRlKHRoaXMuYWN0aXZlRGF0ZSk7ci5zZXRGdWxsWWVhcih0LGksMSk7dmFyIG89dGhpcy5zdGFydGluZ0RheS1yLmdldERheSgpLHM9bz4wPzctbzotbyxsPW5ldyBEYXRlKHIpO3M+MCYmbC5zZXREYXRlKC1zKzEpO2Zvcih2YXIgdT10aGlzLmdldERhdGVzKGwsNDIpLHA9MDs0Mj5wO3ArKyl1W3BdPWFuZ3VsYXIuZXh0ZW5kKHRoaXMuY3JlYXRlRGF0ZU9iamVjdCh1W3BdLHRoaXMuZm9ybWF0RGF5KSx7c2Vjb25kYXJ5OnVbcF0uZ2V0TW9udGgoKSE9PWksdWlkOmUudW5pcXVlSWQrXCItXCIrcH0pO2UubGFiZWxzPW5ldyBBcnJheSg3KTtmb3IodmFyIGM9MDs3PmM7YysrKWUubGFiZWxzW2NdPXthYmJyOmEodVtjXS5kYXRlLHRoaXMuZm9ybWF0RGF5SGVhZGVyKSxmdWxsOmEodVtjXS5kYXRlLFwiRUVFRVwiKX07aWYoZS50aXRsZT1hKHRoaXMuYWN0aXZlRGF0ZSx0aGlzLmZvcm1hdERheVRpdGxlKSxlLnJvd3M9dGhpcy5zcGxpdCh1LDcpLGUuc2hvd1dlZWtzKXtlLndlZWtOdW1iZXJzPVtdO2Zvcih2YXIgZD0oMTEtdGhpcy5zdGFydGluZ0RheSklNyxoPWUucm93cy5sZW5ndGgsZj0wO2g+ZjtmKyspZS53ZWVrTnVtYmVycy5wdXNoKG4oZS5yb3dzW2ZdW2RdLmRhdGUpKX19LHRoaXMuY29tcGFyZT1mdW5jdGlvbihlLHQpe3ZhciBhPW5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSxlLmdldE1vbnRoKCksZS5nZXREYXRlKCkpLGk9bmV3IERhdGUodC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSx0LmdldERhdGUoKSk7cmV0dXJuIGEuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpKSxpLnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKSksYS1pfSx0aGlzLmhhbmRsZUtleURvd249ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5hY3RpdmVEYXRlLmdldERhdGUoKTtpZihcImxlZnRcIj09PWUpdC09MTtlbHNlIGlmKFwidXBcIj09PWUpdC09NztlbHNlIGlmKFwicmlnaHRcIj09PWUpdCs9MTtlbHNlIGlmKFwiZG93blwiPT09ZSl0Kz03O2Vsc2UgaWYoXCJwYWdldXBcIj09PWV8fFwicGFnZWRvd25cIj09PWUpe3ZhciBhPXRoaXMuYWN0aXZlRGF0ZS5nZXRNb250aCgpKyhcInBhZ2V1cFwiPT09ZT8tMToxKTt0aGlzLmFjdGl2ZURhdGUuc2V0TW9udGgoYSwxKSx0PU1hdGgubWluKGkodGhpcy5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCksdGhpcy5hY3RpdmVEYXRlLmdldE1vbnRoKCkpLHQpfWVsc2VcImhvbWVcIj09PWU/dD0xOlwiZW5kXCI9PT1lJiYodD1pKHRoaXMuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpLHRoaXMuYWN0aXZlRGF0ZS5nZXRNb250aCgpKSk7dGhpcy5hY3RpdmVEYXRlLnNldERhdGUodCl9fV0pLmNvbnRyb2xsZXIoXCJVaWJNb250aHBpY2tlckNvbnRyb2xsZXJcIixbXCIkc2NvcGVcIixcIiRlbGVtZW50XCIsXCJkYXRlRmlsdGVyXCIsZnVuY3Rpb24oZSx0LGEpe3RoaXMuc3RlcD17eWVhcnM6MX0sdGhpcy5lbGVtZW50PXQsdGhpcy5pbml0PWZ1bmN0aW9uKGUpe2FuZ3VsYXIuZXh0ZW5kKGUsdGhpcyksZS5yZWZyZXNoVmlldygpfSx0aGlzLl9yZWZyZXNoVmlldz1mdW5jdGlvbigpe2Zvcih2YXIgdCxpPW5ldyBBcnJheSgxMiksbj10aGlzLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKSxyPTA7MTI+cjtyKyspdD1uZXcgRGF0ZSh0aGlzLmFjdGl2ZURhdGUpLHQuc2V0RnVsbFllYXIobixyLDEpLGlbcl09YW5ndWxhci5leHRlbmQodGhpcy5jcmVhdGVEYXRlT2JqZWN0KHQsdGhpcy5mb3JtYXRNb250aCkse3VpZDplLnVuaXF1ZUlkK1wiLVwiK3J9KTtlLnRpdGxlPWEodGhpcy5hY3RpdmVEYXRlLHRoaXMuZm9ybWF0TW9udGhUaXRsZSksZS5yb3dzPXRoaXMuc3BsaXQoaSwzKX0sdGhpcy5jb21wYXJlPWZ1bmN0aW9uKGUsdCl7dmFyIGE9bmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSksaT1uZXcgRGF0ZSh0LmdldEZ1bGxZZWFyKCksdC5nZXRNb250aCgpKTtyZXR1cm4gYS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkpLGkuc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpKSxhLWl9LHRoaXMuaGFuZGxlS2V5RG93bj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmFjdGl2ZURhdGUuZ2V0TW9udGgoKTtpZihcImxlZnRcIj09PWUpdC09MTtlbHNlIGlmKFwidXBcIj09PWUpdC09MztlbHNlIGlmKFwicmlnaHRcIj09PWUpdCs9MTtlbHNlIGlmKFwiZG93blwiPT09ZSl0Kz0zO2Vsc2UgaWYoXCJwYWdldXBcIj09PWV8fFwicGFnZWRvd25cIj09PWUpe3ZhciBhPXRoaXMuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpKyhcInBhZ2V1cFwiPT09ZT8tMToxKTt0aGlzLmFjdGl2ZURhdGUuc2V0RnVsbFllYXIoYSl9ZWxzZVwiaG9tZVwiPT09ZT90PTA6XCJlbmRcIj09PWUmJih0PTExKTt0aGlzLmFjdGl2ZURhdGUuc2V0TW9udGgodCl9fV0pLmNvbnRyb2xsZXIoXCJVaWJZZWFycGlja2VyQ29udHJvbGxlclwiLFtcIiRzY29wZVwiLFwiJGVsZW1lbnRcIixcImRhdGVGaWx0ZXJcIixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIGEoZSl7cmV0dXJuIHBhcnNlSW50KChlLTEpL24sMTApKm4rMX12YXIgaSxuO3RoaXMuZWxlbWVudD10LHRoaXMueWVhcnBpY2tlckluaXQ9ZnVuY3Rpb24oKXtpPXRoaXMueWVhckNvbHVtbnMsbj10aGlzLnllYXJSb3dzKmksdGhpcy5zdGVwPXt5ZWFyczpufX0sdGhpcy5fcmVmcmVzaFZpZXc9ZnVuY3Rpb24oKXtmb3IodmFyIHQscj1uZXcgQXJyYXkobiksbz0wLHM9YSh0aGlzLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKSk7bj5vO28rKyl0PW5ldyBEYXRlKHRoaXMuYWN0aXZlRGF0ZSksdC5zZXRGdWxsWWVhcihzK28sMCwxKSxyW29dPWFuZ3VsYXIuZXh0ZW5kKHRoaXMuY3JlYXRlRGF0ZU9iamVjdCh0LHRoaXMuZm9ybWF0WWVhcikse3VpZDplLnVuaXF1ZUlkK1wiLVwiK299KTtlLnRpdGxlPVtyWzBdLmxhYmVsLHJbbi0xXS5sYWJlbF0uam9pbihcIiAtIFwiKSxlLnJvd3M9dGhpcy5zcGxpdChyLGkpLGUuY29sdW1ucz1pfSx0aGlzLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0sdGhpcy5oYW5kbGVLZXlEb3duPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuYWN0aXZlRGF0ZS5nZXRGdWxsWWVhcigpO1wibGVmdFwiPT09ZT90LT0xOlwidXBcIj09PWU/dC09aTpcInJpZ2h0XCI9PT1lP3QrPTE6XCJkb3duXCI9PT1lP3QrPWk6XCJwYWdldXBcIj09PWV8fFwicGFnZWRvd25cIj09PWU/dCs9KFwicGFnZXVwXCI9PT1lPy0xOjEpKm46XCJob21lXCI9PT1lP3Q9YSh0aGlzLmFjdGl2ZURhdGUuZ2V0RnVsbFllYXIoKSk6XCJlbmRcIj09PWUmJih0PWEodGhpcy5hY3RpdmVEYXRlLmdldEZ1bGxZZWFyKCkpK24tMSksdGhpcy5hY3RpdmVEYXRlLnNldEZ1bGxZZWFyKHQpfX1dKS5kaXJlY3RpdmUoXCJ1aWJEYXRlcGlja2VyXCIsZnVuY3Rpb24oKXtyZXR1cm57cmVwbGFjZTohMCx0ZW1wbGF0ZVVybDpmdW5jdGlvbihlLHQpe3JldHVybiB0LnRlbXBsYXRlVXJsfHxcInVpYi90ZW1wbGF0ZS9kYXRlcGlja2VyL2RhdGVwaWNrZXIuaHRtbFwifSxzY29wZTp7ZGF0ZXBpY2tlck1vZGU6XCI9P1wiLGRhdGVwaWNrZXJPcHRpb25zOlwiPT9cIixkYXRlRGlzYWJsZWQ6XCImXCIsY3VzdG9tQ2xhc3M6XCImXCIsc2hvcnRjdXRQcm9wYWdhdGlvbjpcIiY/XCJ9LHJlcXVpcmU6W1widWliRGF0ZXBpY2tlclwiLFwiXm5nTW9kZWxcIl0sY29udHJvbGxlcjpcIlVpYkRhdGVwaWNrZXJDb250cm9sbGVyXCIsY29udHJvbGxlckFzOlwiZGF0ZXBpY2tlclwiLGxpbms6ZnVuY3Rpb24oZSx0LGEsaSl7dmFyIG49aVswXSxyPWlbMV07bi5pbml0KHIpfX19KS5kaXJlY3RpdmUoXCJ1aWJEYXlwaWNrZXJcIixmdW5jdGlvbigpe3JldHVybntyZXBsYWNlOiEwLHRlbXBsYXRlVXJsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudGVtcGxhdGVVcmx8fFwidWliL3RlbXBsYXRlL2RhdGVwaWNrZXIvZGF5Lmh0bWxcIn0scmVxdWlyZTpbXCJedWliRGF0ZXBpY2tlclwiLFwidWliRGF5cGlja2VyXCJdLGNvbnRyb2xsZXI6XCJVaWJEYXlwaWNrZXJDb250cm9sbGVyXCIsbGluazpmdW5jdGlvbihlLHQsYSxpKXt2YXIgbj1pWzBdLHI9aVsxXTtyLmluaXQobil9fX0pLmRpcmVjdGl2ZShcInVpYk1vbnRocGlja2VyXCIsZnVuY3Rpb24oKXtyZXR1cm57cmVwbGFjZTohMCx0ZW1wbGF0ZVVybDpmdW5jdGlvbihlLHQpe3JldHVybiB0LnRlbXBsYXRlVXJsfHxcInVpYi90ZW1wbGF0ZS9kYXRlcGlja2VyL21vbnRoLmh0bWxcIn0scmVxdWlyZTpbXCJedWliRGF0ZXBpY2tlclwiLFwidWliTW9udGhwaWNrZXJcIl0sY29udHJvbGxlcjpcIlVpYk1vbnRocGlja2VyQ29udHJvbGxlclwiLGxpbms6ZnVuY3Rpb24oZSx0LGEsaSl7dmFyIG49aVswXSxyPWlbMV07ci5pbml0KG4pfX19KS5kaXJlY3RpdmUoXCJ1aWJZZWFycGlja2VyXCIsZnVuY3Rpb24oKXtyZXR1cm57cmVwbGFjZTohMCx0ZW1wbGF0ZVVybDpmdW5jdGlvbihlLHQpe3JldHVybiB0LnRlbXBsYXRlVXJsfHxcInVpYi90ZW1wbGF0ZS9kYXRlcGlja2VyL3llYXIuaHRtbFwifSxyZXF1aXJlOltcIl51aWJEYXRlcGlja2VyXCIsXCJ1aWJZZWFycGlja2VyXCJdLGNvbnRyb2xsZXI6XCJVaWJZZWFycGlja2VyQ29udHJvbGxlclwiLGxpbms6ZnVuY3Rpb24oZSx0LGEsaSl7dmFyIG49aVswXTthbmd1bGFyLmV4dGVuZChuLGlbMV0pLG4ueWVhcnBpY2tlckluaXQoKSxuLnJlZnJlc2hWaWV3KCl9fX0pLnZhbHVlKFwidWliRGF0ZXBpY2tlclBvcHVwQXR0cmlidXRlV2FybmluZ1wiLCEwKS5jb25zdGFudChcInVpYkRhdGVwaWNrZXJQb3B1cENvbmZpZ1wiLHthbHRJbnB1dEZvcm1hdHM6W10sYXBwZW5kVG9Cb2R5OiExLGNsZWFyVGV4dDpcIkNsZWFyXCIsY2xvc2VPbkRhdGVTZWxlY3Rpb246ITAsY2xvc2VUZXh0OlwiRG9uZVwiLGN1cnJlbnRUZXh0OlwiVG9kYXlcIixkYXRlcGlja2VyUG9wdXA6XCJ5eXl5LU1NLWRkXCIsZGF0ZXBpY2tlclBvcHVwVGVtcGxhdGVVcmw6XCJ1aWIvdGVtcGxhdGUvZGF0ZXBpY2tlci9wb3B1cC5odG1sXCIsZGF0ZXBpY2tlclRlbXBsYXRlVXJsOlwidWliL3RlbXBsYXRlL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci5odG1sXCIsaHRtbDVUeXBlczp7ZGF0ZTpcInl5eXktTU0tZGRcIixcImRhdGV0aW1lLWxvY2FsXCI6XCJ5eXl5LU1NLWRkVEhIOm1tOnNzLnNzc1wiLG1vbnRoOlwieXl5eS1NTVwifSxvbk9wZW5Gb2N1czohMCxzaG93QnV0dG9uQmFyOiEwLHBsYWNlbWVudDpcImF1dG8gYm90dG9tLWxlZnRcIn0pLmNvbnRyb2xsZXIoXCJVaWJEYXRlcGlja2VyUG9wdXBDb250cm9sbGVyXCIsW1wiJHNjb3BlXCIsXCIkZWxlbWVudFwiLFwiJGF0dHJzXCIsXCIkY29tcGlsZVwiLFwiJGxvZ1wiLFwiJHBhcnNlXCIsXCIkd2luZG93XCIsXCIkZG9jdW1lbnRcIixcIiRyb290U2NvcGVcIixcIiR1aWJQb3NpdGlvblwiLFwiZGF0ZUZpbHRlclwiLFwidWliRGF0ZVBhcnNlclwiLFwidWliRGF0ZXBpY2tlclBvcHVwQ29uZmlnXCIsXCIkdGltZW91dFwiLFwidWliRGF0ZXBpY2tlckNvbmZpZ1wiLFwidWliRGF0ZXBpY2tlclBvcHVwQXR0cmlidXRlV2FybmluZ1wiLGZ1bmN0aW9uKGUsdCxhLGksbixyLG8scyxsLHUscCxjLGQsaCxmLG0pe2Z1bmN0aW9uIGcoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFtBLVpdKS9nLGZ1bmN0aW9uKGUpe3JldHVyblwiLVwiK2UudG9Mb3dlckNhc2UoKX0pfWZ1bmN0aW9uIGIodCl7dmFyIGE9Yy5wYXJzZSh0LCQsZS5kYXRlKTtpZihpc05hTihhKSlmb3IodmFyIGk9MDtpPE4ubGVuZ3RoO2krKylpZihhPWMucGFyc2UodCxOW2ldLGUuZGF0ZSksIWlzTmFOKGEpKXJldHVybiBhO3JldHVybiBhfWZ1bmN0aW9uIHkoZSl7aWYoYW5ndWxhci5pc051bWJlcihlKSYmKGU9bmV3IERhdGUoZSkpLCFlKXJldHVybiBudWxsO2lmKGFuZ3VsYXIuaXNEYXRlKGUpJiYhaXNOYU4oZSkpcmV0dXJuIGU7aWYoYW5ndWxhci5pc1N0cmluZyhlKSl7dmFyIHQ9YihlKTtpZighaXNOYU4odCkpcmV0dXJuIGMudG9UaW1lem9uZSh0LFAudGltZXpvbmUpfXJldHVybiBDLiRvcHRpb25zJiZDLiRvcHRpb25zLmFsbG93SW52YWxpZD9lOnZvaWQgMH1mdW5jdGlvbiB2KGUsdCl7dmFyIGk9ZXx8dDtyZXR1cm4gYS5uZ1JlcXVpcmVkfHxpPyhhbmd1bGFyLmlzTnVtYmVyKGkpJiYoaT1uZXcgRGF0ZShpKSksaT9hbmd1bGFyLmlzRGF0ZShpKSYmIWlzTmFOKGkpPyEwOmFuZ3VsYXIuaXNTdHJpbmcoaSk/IWlzTmFOKGIodCkpOiExOiEwKTohMH1mdW5jdGlvbiBEKGEpe2lmKGUuaXNPcGVufHwhZS5kaXNhYmxlZCl7dmFyIGk9QVswXSxuPXRbMF0uY29udGFpbnMoYS50YXJnZXQpLHI9dm9pZCAwIT09aS5jb250YWlucyYmaS5jb250YWlucyhhLnRhcmdldCk7IWUuaXNPcGVufHxufHxyfHxlLiRhcHBseShmdW5jdGlvbigpe2UuaXNPcGVuPSExfSl9fWZ1bmN0aW9uIGsoYSl7Mjc9PT1hLndoaWNoJiZlLmlzT3Blbj8oYS5wcmV2ZW50RGVmYXVsdCgpLGEuc3RvcFByb3BhZ2F0aW9uKCksZS4kYXBwbHkoZnVuY3Rpb24oKXtlLmlzT3Blbj0hMX0pLHRbMF0uZm9jdXMoKSk6NDAhPT1hLndoaWNofHxlLmlzT3Blbnx8KGEucHJldmVudERlZmF1bHQoKSxhLnN0b3BQcm9wYWdhdGlvbigpLGUuJGFwcGx5KGZ1bmN0aW9uKCl7ZS5pc09wZW49ITB9KSl9ZnVuY3Rpb24gdygpe2lmKGUuaXNPcGVuKXt2YXIgaT1hbmd1bGFyLmVsZW1lbnQoQVswXS5xdWVyeVNlbGVjdG9yKFwiLnVpYi1kYXRlcGlja2VyLXBvcHVwXCIpKSxuPWEucG9wdXBQbGFjZW1lbnQ/YS5wb3B1cFBsYWNlbWVudDpkLnBsYWNlbWVudCxyPXUucG9zaXRpb25FbGVtZW50cyh0LGksbix4KTtpLmNzcyh7dG9wOnIudG9wK1wicHhcIixsZWZ0OnIubGVmdCtcInB4XCJ9KSxpLmhhc0NsYXNzKFwidWliLXBvc2l0aW9uLW1lYXN1cmVcIikmJmkucmVtb3ZlQ2xhc3MoXCJ1aWItcG9zaXRpb24tbWVhc3VyZVwiKX19dmFyICQsTSx4LFQsTyxFLEYsUyxJLEMsUCxBLE4sVT17fSxZPSExLHo9W107ZS53YXRjaERhdGE9e30sdGhpcy5pbml0PWZ1bmN0aW9uKHUpe2lmKEM9dSxQPXUuJG9wdGlvbnN8fGYubmdNb2RlbE9wdGlvbnMsTT1hbmd1bGFyLmlzRGVmaW5lZChhLmNsb3NlT25EYXRlU2VsZWN0aW9uKT9lLiRwYXJlbnQuJGV2YWwoYS5jbG9zZU9uRGF0ZVNlbGVjdGlvbik6ZC5jbG9zZU9uRGF0ZVNlbGVjdGlvbix4PWFuZ3VsYXIuaXNEZWZpbmVkKGEuZGF0ZXBpY2tlckFwcGVuZFRvQm9keSk/ZS4kcGFyZW50LiRldmFsKGEuZGF0ZXBpY2tlckFwcGVuZFRvQm9keSk6ZC5hcHBlbmRUb0JvZHksVD1hbmd1bGFyLmlzRGVmaW5lZChhLm9uT3BlbkZvY3VzKT9lLiRwYXJlbnQuJGV2YWwoYS5vbk9wZW5Gb2N1cyk6ZC5vbk9wZW5Gb2N1cyxPPWFuZ3VsYXIuaXNEZWZpbmVkKGEuZGF0ZXBpY2tlclBvcHVwVGVtcGxhdGVVcmwpP2EuZGF0ZXBpY2tlclBvcHVwVGVtcGxhdGVVcmw6ZC5kYXRlcGlja2VyUG9wdXBUZW1wbGF0ZVVybCxFPWFuZ3VsYXIuaXNEZWZpbmVkKGEuZGF0ZXBpY2tlclRlbXBsYXRlVXJsKT9hLmRhdGVwaWNrZXJUZW1wbGF0ZVVybDpkLmRhdGVwaWNrZXJUZW1wbGF0ZVVybCxOPWFuZ3VsYXIuaXNEZWZpbmVkKGEuYWx0SW5wdXRGb3JtYXRzKT9lLiRwYXJlbnQuJGV2YWwoYS5hbHRJbnB1dEZvcm1hdHMpOmQuYWx0SW5wdXRGb3JtYXRzLGUuc2hvd0J1dHRvbkJhcj1hbmd1bGFyLmlzRGVmaW5lZChhLnNob3dCdXR0b25CYXIpP2UuJHBhcmVudC4kZXZhbChhLnNob3dCdXR0b25CYXIpOmQuc2hvd0J1dHRvbkJhcixkLmh0bWw1VHlwZXNbYS50eXBlXT8oJD1kLmh0bWw1VHlwZXNbYS50eXBlXSxZPSEwKTooJD1hLnVpYkRhdGVwaWNrZXJQb3B1cHx8ZC5kYXRlcGlja2VyUG9wdXAsYS4kb2JzZXJ2ZShcInVpYkRhdGVwaWNrZXJQb3B1cFwiLGZ1bmN0aW9uKGUpe3ZhciB0PWV8fGQuZGF0ZXBpY2tlclBvcHVwO2lmKHQhPT0kJiYoJD10LEMuJG1vZGVsVmFsdWU9bnVsbCwhJCkpdGhyb3cgbmV3IEVycm9yKFwidWliRGF0ZXBpY2tlclBvcHVwIG11c3QgaGF2ZSBhIGRhdGUgZm9ybWF0IHNwZWNpZmllZC5cIil9KSksISQpdGhyb3cgbmV3IEVycm9yKFwidWliRGF0ZXBpY2tlclBvcHVwIG11c3QgaGF2ZSBhIGRhdGUgZm9ybWF0IHNwZWNpZmllZC5cIik7aWYoWSYmYS51aWJEYXRlcGlja2VyUG9wdXApdGhyb3cgbmV3IEVycm9yKFwiSFRNTDUgZGF0ZSBpbnB1dCB0eXBlcyBkbyBub3Qgc3VwcG9ydCBjdXN0b20gZm9ybWF0cy5cIik7Rj1hbmd1bGFyLmVsZW1lbnQoXCI8ZGl2IHVpYi1kYXRlcGlja2VyLXBvcHVwLXdyYXA+PGRpdiB1aWItZGF0ZXBpY2tlcj48L2Rpdj48L2Rpdj5cIiksZS5uZ01vZGVsT3B0aW9ucz1hbmd1bGFyLmNvcHkoUCksZS5uZ01vZGVsT3B0aW9ucy50aW1lem9uZT1udWxsLGUubmdNb2RlbE9wdGlvbnMudXBkYXRlT25EZWZhdWx0PT09ITAmJihlLm5nTW9kZWxPcHRpb25zLnVwZGF0ZU9uPWUubmdNb2RlbE9wdGlvbnMudXBkYXRlT24/ZS5uZ01vZGVsT3B0aW9ucy51cGRhdGVPbitcIiBkZWZhdWx0XCI6XCJkZWZhdWx0XCIpLEYuYXR0cih7XCJuZy1tb2RlbFwiOlwiZGF0ZVwiLFwibmctbW9kZWwtb3B0aW9uc1wiOlwibmdNb2RlbE9wdGlvbnNcIixcIm5nLWNoYW5nZVwiOlwiZGF0ZVNlbGVjdGlvbihkYXRlKVwiLFwidGVtcGxhdGUtdXJsXCI6T30pLFM9YW5ndWxhci5lbGVtZW50KEYuY2hpbGRyZW4oKVswXSksUy5hdHRyKFwidGVtcGxhdGUtdXJsXCIsRSksWSYmXCJtb250aFwiPT09YS50eXBlJiYoUy5hdHRyKFwiZGF0ZXBpY2tlci1tb2RlXCIsJ1wibW9udGhcIicpLFMuYXR0cihcIm1pbi1tb2RlXCIsXCJtb250aFwiKSksZS5kYXRlcGlja2VyT3B0aW9ucyYmUy5hdHRyKFwiZGF0ZXBpY2tlci1vcHRpb25zXCIsXCJkYXRlcGlja2VyT3B0aW9uc1wiKSxhbmd1bGFyLmZvckVhY2goW1wibWluTW9kZVwiLFwibWF4TW9kZVwiLFwiZGF0ZXBpY2tlck1vZGVcIixcInNob3J0Y3V0UHJvcGFnYXRpb25cIl0sZnVuY3Rpb24odCl7aWYoYVt0XSl7bSYmbi53YXJuKFwidWliLWRhdGVwaWNrZXIgc2V0dGluZ3MgdmlhIHVpYi1kYXRlcGlja2VyLXBvcHVwIGF0dHJpYnV0ZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBVSSBCb290c3RyYXAgMS4zLCB1c2UgZGF0ZXBpY2tlci1vcHRpb25zIGF0dHJpYnV0ZSBpbnN0ZWFkXCIpO3ZhciBpPXIoYVt0XSksbz17Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGkoZS4kcGFyZW50KX19O2lmKFMuYXR0cihnKHQpLFwid2F0Y2hEYXRhLlwiK3QpLFwiZGF0ZXBpY2tlck1vZGVcIj09PXQpe3ZhciBzPWkuYXNzaWduO28uc2V0PWZ1bmN0aW9uKHQpe3MoZS4kcGFyZW50LHQpfX1PYmplY3QuZGVmaW5lUHJvcGVydHkoZS53YXRjaERhdGEsdCxvKX19KSxhbmd1bGFyLmZvckVhY2goW1wibWluRGF0ZVwiLFwibWF4RGF0ZVwiLFwiaW5pdERhdGVcIl0sZnVuY3Rpb24odCl7aWYoYVt0XSl7bSYmbi53YXJuKFwidWliLWRhdGVwaWNrZXIgc2V0dGluZ3MgdmlhIHVpYi1kYXRlcGlja2VyLXBvcHVwIGF0dHJpYnV0ZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBVSSBCb290c3RyYXAgMS4zLCB1c2UgZGF0ZXBpY2tlci1vcHRpb25zIGF0dHJpYnV0ZSBpbnN0ZWFkXCIpO3ZhciBpPXIoYVt0XSk7ei5wdXNoKGUuJHBhcmVudC4kd2F0Y2goaSxmdW5jdGlvbihhKXtpZihcIm1pbkRhdGVcIj09PXR8fFwibWF4RGF0ZVwiPT09dClVW3RdPW51bGw9PT1hP251bGw6YW5ndWxhci5pc0RhdGUoYSk/Yy5mcm9tVGltZXpvbmUobmV3IERhdGUoYSksUC50aW1lem9uZSk6bmV3IERhdGUocChhLFwibWVkaXVtXCIpKSxlLndhdGNoRGF0YVt0XT1udWxsPT09YT9udWxsOlVbdF07ZWxzZXt2YXIgaT1hP25ldyBEYXRlKGEpOm5ldyBEYXRlO2Uud2F0Y2hEYXRhW3RdPWMuZnJvbVRpbWV6b25lKGksUC50aW1lem9uZSl9fSkpLFMuYXR0cihnKHQpLFwid2F0Y2hEYXRhLlwiK3QpfX0pLGEuZGF0ZURpc2FibGVkJiYobSYmbi53YXJuKFwidWliLWRhdGVwaWNrZXIgc2V0dGluZ3MgdmlhIHVpYi1kYXRlcGlja2VyLXBvcHVwIGF0dHJpYnV0ZXMgYXJlIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBVSSBCb290c3RyYXAgMS4zLCB1c2UgZGF0ZXBpY2tlci1vcHRpb25zIGF0dHJpYnV0ZSBpbnN0ZWFkXCIpLFMuYXR0cihcImRhdGUtZGlzYWJsZWRcIixcImRhdGVEaXNhYmxlZCh7IGRhdGU6IGRhdGUsIG1vZGU6IG1vZGUgfSlcIikpLGFuZ3VsYXIuZm9yRWFjaChbXCJmb3JtYXREYXlcIixcImZvcm1hdE1vbnRoXCIsXCJmb3JtYXRZZWFyXCIsXCJmb3JtYXREYXlIZWFkZXJcIixcImZvcm1hdERheVRpdGxlXCIsXCJmb3JtYXRNb250aFRpdGxlXCIsXCJzaG93V2Vla3NcIixcInN0YXJ0aW5nRGF5XCIsXCJ5ZWFyUm93c1wiLFwieWVhckNvbHVtbnNcIl0sZnVuY3Rpb24oZSl7YW5ndWxhci5pc0RlZmluZWQoYVtlXSkmJihtJiZuLndhcm4oXCJ1aWItZGF0ZXBpY2tlciBzZXR0aW5ncyB2aWEgdWliLWRhdGVwaWNrZXItcG9wdXAgYXR0cmlidXRlcyBhcmUgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIFVJIEJvb3RzdHJhcCAxLjMsIHVzZSBkYXRlcGlja2VyLW9wdGlvbnMgYXR0cmlidXRlIGluc3RlYWRcIiksUy5hdHRyKGcoZSksYVtlXSkpfSksYS5jdXN0b21DbGFzcyYmKG0mJm4ud2FybihcInVpYi1kYXRlcGlja2VyIHNldHRpbmdzIHZpYSB1aWItZGF0ZXBpY2tlci1wb3B1cCBhdHRyaWJ1dGVzIGFyZSBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gVUkgQm9vdHN0cmFwIDEuMywgdXNlIGRhdGVwaWNrZXItb3B0aW9ucyBhdHRyaWJ1dGUgaW5zdGVhZFwiKSxTLmF0dHIoXCJjdXN0b20tY2xhc3NcIixcImN1c3RvbUNsYXNzKHsgZGF0ZTogZGF0ZSwgbW9kZTogbW9kZSB9KVwiKSksWT9DLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rpb24odCl7cmV0dXJuIGUuZGF0ZT1jLmZyb21UaW1lem9uZSh0LFAudGltZXpvbmUpLHR9KTooQy4kJHBhcnNlck5hbWU9XCJkYXRlXCIsQy4kdmFsaWRhdG9ycy5kYXRlPXYsQy4kcGFyc2Vycy51bnNoaWZ0KHkpLEMuJGZvcm1hdHRlcnMucHVzaChmdW5jdGlvbih0KXtyZXR1cm4gQy4kaXNFbXB0eSh0KT8oZS5kYXRlPXQsdCk6KGUuZGF0ZT1jLmZyb21UaW1lem9uZSh0LFAudGltZXpvbmUpLGFuZ3VsYXIuaXNOdW1iZXIoZS5kYXRlKSYmKGUuZGF0ZT1uZXcgRGF0ZShlLmRhdGUpKSxjLmZpbHRlcihlLmRhdGUsJCkpfSkpLEMuJHZpZXdDaGFuZ2VMaXN0ZW5lcnMucHVzaChmdW5jdGlvbigpe2UuZGF0ZT1iKEMuJHZpZXdWYWx1ZSl9KSx0Lm9uKFwia2V5ZG93blwiLGspLEE9aShGKShlKSxGLnJlbW92ZSgpLHg/cy5maW5kKFwiYm9keVwiKS5hcHBlbmQoQSk6dC5hZnRlcihBKSxlLiRvbihcIiRkZXN0cm95XCIsZnVuY3Rpb24oKXtmb3IoZS5pc09wZW49PT0hMCYmKGwuJCRwaGFzZXx8ZS4kYXBwbHkoZnVuY3Rpb24oKXtlLmlzT3Blbj0hMX0pKSxBLnJlbW92ZSgpLHQub2ZmKFwia2V5ZG93blwiLGspLHMub2ZmKFwiY2xpY2tcIixEKSxJJiZJLm9mZihcInNjcm9sbFwiLHcpLGFuZ3VsYXIuZWxlbWVudChvKS5vZmYoXCJyZXNpemVcIix3KTt6Lmxlbmd0aDspei5zaGlmdCgpKCl9KX0sZS5nZXRUZXh0PWZ1bmN0aW9uKHQpe3JldHVybiBlW3QrXCJUZXh0XCJdfHxkW3QrXCJUZXh0XCJdfSxlLmlzRGlzYWJsZWQ9ZnVuY3Rpb24odCl7cmV0dXJuXCJ0b2RheVwiPT09dCYmKHQ9bmV3IERhdGUpLGUud2F0Y2hEYXRhLm1pbkRhdGUmJmUuY29tcGFyZSh0LFUubWluRGF0ZSk8MHx8ZS53YXRjaERhdGEubWF4RGF0ZSYmZS5jb21wYXJlKHQsVS5tYXhEYXRlKT4wfSxlLmNvbXBhcmU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSxlLmdldERhdGUoKSktbmV3IERhdGUodC5nZXRGdWxsWWVhcigpLHQuZ2V0TW9udGgoKSx0LmdldERhdGUoKSl9LGUuZGF0ZVNlbGVjdGlvbj1mdW5jdGlvbihhKXthbmd1bGFyLmlzRGVmaW5lZChhKSYmKGUuZGF0ZT1hKTt2YXIgaT1lLmRhdGU/Yy5maWx0ZXIoZS5kYXRlLCQpOm51bGw7dC52YWwoaSksQy4kc2V0Vmlld1ZhbHVlKGkpLE0mJihlLmlzT3Blbj0hMSx0WzBdLmZvY3VzKCkpfSxlLmtleWRvd249ZnVuY3Rpb24oYSl7Mjc9PT1hLndoaWNoJiYoYS5zdG9wUHJvcGFnYXRpb24oKSxlLmlzT3Blbj0hMSx0WzBdLmZvY3VzKCkpfSxlLnNlbGVjdD1mdW5jdGlvbih0LGEpe2lmKGEuc3RvcFByb3BhZ2F0aW9uKCksXCJ0b2RheVwiPT09dCl7dmFyIGk9bmV3IERhdGU7YW5ndWxhci5pc0RhdGUoZS5kYXRlKT8odD1uZXcgRGF0ZShlLmRhdGUpLHQuc2V0RnVsbFllYXIoaS5nZXRGdWxsWWVhcigpLGkuZ2V0TW9udGgoKSxpLmdldERhdGUoKSkpOnQ9bmV3IERhdGUoaS5zZXRIb3VycygwLDAsMCwwKSl9ZS5kYXRlU2VsZWN0aW9uKHQpfSxlLmNsb3NlPWZ1bmN0aW9uKGEpe2Euc3RvcFByb3BhZ2F0aW9uKCksZS5pc09wZW49ITEsdFswXS5mb2N1cygpfSxlLmRpc2FibGVkPWFuZ3VsYXIuaXNEZWZpbmVkKGEuZGlzYWJsZWQpfHwhMSxhLm5nRGlzYWJsZWQmJnoucHVzaChlLiRwYXJlbnQuJHdhdGNoKHIoYS5uZ0Rpc2FibGVkKSxmdW5jdGlvbih0KXtlLmRpc2FibGVkPXR9KSksZS4kd2F0Y2goXCJpc09wZW5cIixmdW5jdGlvbihpKXtpP2UuZGlzYWJsZWQ/ZS5pc09wZW49ITE6aChmdW5jdGlvbigpe3coKSxUJiZlLiRicm9hZGNhc3QoXCJ1aWI6ZGF0ZXBpY2tlci5mb2N1c1wiKSxzLm9uKFwiY2xpY2tcIixEKTt2YXIgaT1hLnBvcHVwUGxhY2VtZW50P2EucG9wdXBQbGFjZW1lbnQ6ZC5wbGFjZW1lbnQ7eHx8dS5wYXJzZVBsYWNlbWVudChpKVsyXT8oST1JfHxhbmd1bGFyLmVsZW1lbnQodS5zY3JvbGxQYXJlbnQodCkpLEkmJkkub24oXCJzY3JvbGxcIix3KSk6ST1udWxsLGFuZ3VsYXIuZWxlbWVudChvKS5vbihcInJlc2l6ZVwiLHcpfSwwLCExKToocy5vZmYoXCJjbGlja1wiLEQpLEkmJkkub2ZmKFwic2Nyb2xsXCIsdyksYW5ndWxhci5lbGVtZW50KG8pLm9mZihcInJlc2l6ZVwiLHcpKX0pLGUuJG9uKFwidWliOmRhdGVwaWNrZXIubW9kZVwiLGZ1bmN0aW9uKCl7aCh3LDAsITEpfSl9XSkuZGlyZWN0aXZlKFwidWliRGF0ZXBpY2tlclBvcHVwXCIsZnVuY3Rpb24oKXtyZXR1cm57cmVxdWlyZTpbXCJuZ01vZGVsXCIsXCJ1aWJEYXRlcGlja2VyUG9wdXBcIl0sY29udHJvbGxlcjpcIlVpYkRhdGVwaWNrZXJQb3B1cENvbnRyb2xsZXJcIixzY29wZTp7ZGF0ZXBpY2tlck9wdGlvbnM6XCI9P1wiLGlzT3BlbjpcIj0/XCIsY3VycmVudFRleHQ6XCJAXCIsY2xlYXJUZXh0OlwiQFwiLGNsb3NlVGV4dDpcIkBcIixkYXRlRGlzYWJsZWQ6XCImXCIsY3VzdG9tQ2xhc3M6XCImXCJ9LGxpbms6ZnVuY3Rpb24oZSx0LGEsaSl7dmFyIG49aVswXSxyPWlbMV07ci5pbml0KG4pfX19KS5kaXJlY3RpdmUoXCJ1aWJEYXRlcGlja2VyUG9wdXBXcmFwXCIsZnVuY3Rpb24oKXtyZXR1cm57cmVwbGFjZTohMCx0cmFuc2NsdWRlOiEwLHRlbXBsYXRlVXJsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudGVtcGxhdGVVcmx8fFwidWliL3RlbXBsYXRlL2RhdGVwaWNrZXIvcG9wdXAuaHRtbFwifX19KSxhbmd1bGFyLm1vZHVsZShcInVpLmJvb3RzdHJhcC5kYXRlcGFyc2VyXCIsW10pLnNlcnZpY2UoXCJ1aWJEYXRlUGFyc2VyXCIsW1wiJGxvZ1wiLFwiJGxvY2FsZVwiLFwiZGF0ZUZpbHRlclwiLFwib3JkZXJCeUZpbHRlclwiLGZ1bmN0aW9uKGUsdCxhLGkpe2Z1bmN0aW9uIG4oZSx0KXt2YXIgYT1bXSxuPWUuc3BsaXQoXCJcIikscj1lLmluZGV4T2YoXCInXCIpO2lmKHI+LTEpe3ZhciBvPSExO2U9ZS5zcGxpdChcIlwiKTtmb3IodmFyIHM9cjtzPGUubGVuZ3RoO3MrKylvPyhcIidcIj09PWVbc10mJihzKzE8ZS5sZW5ndGgmJlwiJ1wiPT09ZVtzKzFdPyhlW3MrMV09XCIkXCIsbltzKzFdPVwiXCIpOihuW3NdPVwiXCIsbz0hMSkpLGVbc109XCIkXCIpOlwiJ1wiPT09ZVtzXSYmKGVbc109XCIkXCIsbltzXT1cIlwiLG89ITApO2U9ZS5qb2luKFwiXCIpfXJldHVybiBhbmd1bGFyLmZvckVhY2goaCxmdW5jdGlvbihpKXt2YXIgcj1lLmluZGV4T2YoaS5rZXkpO2lmKHI+LTEpe2U9ZS5zcGxpdChcIlwiKSxuW3JdPVwiKFwiK2kucmVnZXgrXCIpXCIsZVtyXT1cIiRcIjtmb3IodmFyIG89cisxLHM9citpLmtleS5sZW5ndGg7cz5vO28rKyluW29dPVwiXCIsZVtvXT1cIiRcIjtlPWUuam9pbihcIlwiKSxhLnB1c2goe2luZGV4OnIsa2V5Omkua2V5LGFwcGx5OmlbdF0sbWF0Y2hlcjppLnJlZ2V4fSl9fSkse3JlZ2V4Om5ldyBSZWdFeHAoXCJeXCIrbi5qb2luKFwiXCIpK1wiJFwiKSxtYXA6aShhLFwiaW5kZXhcIil9fWZ1bmN0aW9uIHIoZSx0LGEpe3JldHVybiAxPmE/ITE6MT09PXQmJmE+Mjg/Mjk9PT1hJiYoZSU0PT09MCYmZSUxMDAhPT0wfHxlJTQwMD09PTApOjM9PT10fHw1PT09dHx8OD09PXR8fDEwPT09dD8zMT5hOiEwfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHBhcnNlSW50KGUsMTApfWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZSYmdD9jKGUsdCk6ZX1mdW5jdGlvbiBsKGUsdCl7cmV0dXJuIGUmJnQ/YyhlLHQsITApOmV9ZnVuY3Rpb24gdShlLHQpe3ZhciBhPURhdGUucGFyc2UoXCJKYW4gMDEsIDE5NzAgMDA6MDA6MDAgXCIrZSkvNmU0O3JldHVybiBpc05hTihhKT90OmF9ZnVuY3Rpb24gcChlLHQpe3JldHVybiBlPW5ldyBEYXRlKGUuZ2V0VGltZSgpKSxlLnNldE1pbnV0ZXMoZS5nZXRNaW51dGVzKCkrdCksZX1mdW5jdGlvbiBjKGUsdCxhKXthPWE/LTE6MTt2YXIgaT11KHQsZS5nZXRUaW1lem9uZU9mZnNldCgpKTtyZXR1cm4gcChlLGEqKGktZS5nZXRUaW1lem9uZU9mZnNldCgpKSl9dmFyIGQsaCxmPS9bXFxcXFxcXlxcJFxcKlxcK1xcP1xcfFxcW1xcXVxcKFxcKVxcLlxce1xcfV0vZzt0aGlzLmluaXQ9ZnVuY3Rpb24oKXtkPXQuaWQsdGhpcy5wYXJzZXJzPXt9LHRoaXMuZm9ybWF0dGVycz17fSxoPVt7a2V5OlwieXl5eVwiLHJlZ2V4OlwiXFxcXGR7NH1cIixhcHBseTpmdW5jdGlvbihlKXt0aGlzLnllYXI9K2V9LGZvcm1hdHRlcjpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4gdC5zZXRGdWxsWWVhcihNYXRoLmFicyhlLmdldEZ1bGxZZWFyKCkpKSxhKHQsXCJ5eXl5XCIpfX0se2tleTpcInl5XCIscmVnZXg6XCJcXFxcZHsyfVwiLGFwcGx5OmZ1bmN0aW9uKGUpe3RoaXMueWVhcj0rZSsyZTN9LGZvcm1hdHRlcjpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4gdC5zZXRGdWxsWWVhcihNYXRoLmFicyhlLmdldEZ1bGxZZWFyKCkpKSxhKHQsXCJ5eVwiKX19LHtrZXk6XCJ5XCIscmVnZXg6XCJcXFxcZHsxLDR9XCIsYXBwbHk6ZnVuY3Rpb24oZSl7dGhpcy55ZWFyPStlfSxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGU7cmV0dXJuIHQuc2V0RnVsbFllYXIoTWF0aC5hYnMoZS5nZXRGdWxsWWVhcigpKSksYSh0LFwieVwiKX19LHtrZXk6XCJNIVwiLHJlZ2V4OlwiMD9bMS05XXwxWzAtMl1cIixhcHBseTpmdW5jdGlvbihlKXt0aGlzLm1vbnRoPWUtMX0sZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0TW9udGgoKTtyZXR1cm4vXlswLTldJC8udGVzdCh0KT9hKGUsXCJNTVwiKTphKGUsXCJNXCIpfX0se2tleTpcIk1NTU1cIixyZWdleDp0LkRBVEVUSU1FX0ZPUk1BVFMuTU9OVEguam9pbihcInxcIiksYXBwbHk6ZnVuY3Rpb24oZSl7dGhpcy5tb250aD10LkRBVEVUSU1FX0ZPUk1BVFMuTU9OVEguaW5kZXhPZihlKX0sZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJNTU1NXCIpfX0se2tleTpcIk1NTVwiLHJlZ2V4OnQuREFURVRJTUVfRk9STUFUUy5TSE9SVE1PTlRILmpvaW4oXCJ8XCIpLGFwcGx5OmZ1bmN0aW9uKGUpe3RoaXMubW9udGg9dC5EQVRFVElNRV9GT1JNQVRTLlNIT1JUTU9OVEguaW5kZXhPZihlKX0sZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJNTU1cIil9fSx7a2V5OlwiTU1cIixyZWdleDpcIjBbMS05XXwxWzAtMl1cIixhcHBseTpmdW5jdGlvbihlKXt0aGlzLm1vbnRoPWUtMX0sZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJNTVwiKX19LHtrZXk6XCJNXCIscmVnZXg6XCJbMS05XXwxWzAtMl1cIixhcHBseTpmdW5jdGlvbihlKXt0aGlzLm1vbnRoPWUtMX0sZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJNXCIpfX0se2tleTpcImQhXCIscmVnZXg6XCJbMC0yXT9bMC05XXsxfXwzWzAtMV17MX1cIixhcHBseTpmdW5jdGlvbihlKXt0aGlzLmRhdGU9K2V9LGZvcm1hdHRlcjpmdW5jdGlvbihlKXt2YXIgdD1lLmdldERhdGUoKTtyZXR1cm4vXlsxLTldJC8udGVzdCh0KT9hKGUsXCJkZFwiKTphKGUsXCJkXCIpfX0se2tleTpcImRkXCIscmVnZXg6XCJbMC0yXVswLTldezF9fDNbMC0xXXsxfVwiLGFwcGx5OmZ1bmN0aW9uKGUpe3RoaXMuZGF0ZT0rZX0sZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJkZFwiKX19LHtrZXk6XCJkXCIscmVnZXg6XCJbMS0yXT9bMC05XXsxfXwzWzAtMV17MX1cIixhcHBseTpmdW5jdGlvbihlKXt0aGlzLmRhdGU9K2V9LGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gYShlLFwiZFwiKX19LHtrZXk6XCJFRUVFXCIscmVnZXg6dC5EQVRFVElNRV9GT1JNQVRTLkRBWS5qb2luKFwifFwiKSxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSxcIkVFRUVcIil9fSx7a2V5OlwiRUVFXCIscmVnZXg6dC5EQVRFVElNRV9GT1JNQVRTLlNIT1JUREFZLmpvaW4oXCJ8XCIpLGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gYShlLFwiRUVFXCIpfX0se2tleTpcIkhIXCIscmVnZXg6XCIoPzowfDEpWzAtOV18MlswLTNdXCIsYXBwbHk6ZnVuY3Rpb24oZSl7dGhpcy5ob3Vycz0rZX0sZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJISFwiKX19LHtrZXk6XCJoaFwiLHJlZ2V4OlwiMFswLTldfDFbMC0yXVwiLGFwcGx5OmZ1bmN0aW9uKGUpe3RoaXMuaG91cnM9K2V9LGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gYShlLFwiaGhcIil9fSx7a2V5OlwiSFwiLHJlZ2V4OlwiMT9bMC05XXwyWzAtM11cIixhcHBseTpmdW5jdGlvbihlKXt0aGlzLmhvdXJzPStlfSxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSxcIkhcIil9fSx7a2V5OlwiaFwiLHJlZ2V4OlwiWzAtOV18MVswLTJdXCIsYXBwbHk6ZnVuY3Rpb24oZSl7dGhpcy5ob3Vycz0rZX0sZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJoXCIpfX0se2tleTpcIm1tXCIscmVnZXg6XCJbMC01XVswLTldXCIsYXBwbHk6ZnVuY3Rpb24oZSl7dGhpcy5taW51dGVzPStlfSxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSxcIm1tXCIpfX0se2tleTpcIm1cIixyZWdleDpcIlswLTldfFsxLTVdWzAtOV1cIixhcHBseTpmdW5jdGlvbihlKXt0aGlzLm1pbnV0ZXM9K2V9LGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gYShlLFwibVwiKX19LHtrZXk6XCJzc3NcIixyZWdleDpcIlswLTldWzAtOV1bMC05XVwiLGFwcGx5OmZ1bmN0aW9uKGUpe3RoaXMubWlsbGlzZWNvbmRzPStlfSxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSxcInNzc1wiKX19LHtrZXk6XCJzc1wiLHJlZ2V4OlwiWzAtNV1bMC05XVwiLGFwcGx5OmZ1bmN0aW9uKGUpe3RoaXMuc2Vjb25kcz0rZX0sZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJzc1wiKX19LHtrZXk6XCJzXCIscmVnZXg6XCJbMC05XXxbMS01XVswLTldXCIsYXBwbHk6ZnVuY3Rpb24oZSl7dGhpcy5zZWNvbmRzPStlfSxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSxcInNcIil9fSx7a2V5OlwiYVwiLHJlZ2V4OnQuREFURVRJTUVfRk9STUFUUy5BTVBNUy5qb2luKFwifFwiKSxhcHBseTpmdW5jdGlvbihlKXsxMj09PXRoaXMuaG91cnMmJih0aGlzLmhvdXJzPTApLFwiUE1cIj09PWUmJih0aGlzLmhvdXJzKz0xMil9LGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gYShlLFwiYVwiKX19LHtrZXk6XCJaXCIscmVnZXg6XCJbKy1dXFxcXGR7NH1cIixhcHBseTpmdW5jdGlvbihlKXt2YXIgdD1lLm1hdGNoKC8oWystXSkoXFxkezJ9KShcXGR7Mn0pLyksYT10WzFdLGk9dFsyXSxuPXRbM107dGhpcy5ob3Vycys9byhhK2kpLHRoaXMubWludXRlcys9byhhK24pfSxmb3JtYXR0ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGEoZSxcIlpcIil9fSx7a2V5Olwid3dcIixyZWdleDpcIlswLTRdWzAtOV18NVswLTNdXCIsZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJ3d1wiKX19LHtrZXk6XCJ3XCIscmVnZXg6XCJbMC05XXxbMS00XVswLTldfDVbMC0zXVwiLGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gYShlLFwid1wiKX19LHtrZXk6XCJHR0dHXCIscmVnZXg6dC5EQVRFVElNRV9GT1JNQVRTLkVSQU5BTUVTLmpvaW4oXCJ8XCIpLnJlcGxhY2UoL1xccy9nLFwiXFxcXHNcIiksZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJHR0dHXCIpfX0se2tleTpcIkdHR1wiLHJlZ2V4OnQuREFURVRJTUVfRk9STUFUUy5FUkFTLmpvaW4oXCJ8XCIpLGZvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gYShlLFwiR0dHXCIpfX0se2tleTpcIkdHXCIscmVnZXg6dC5EQVRFVElNRV9GT1JNQVRTLkVSQVMuam9pbihcInxcIiksZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJHR1wiKX19LHtrZXk6XCJHXCIscmVnZXg6dC5EQVRFVElNRV9GT1JNQVRTLkVSQVMuam9pbihcInxcIiksZm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBhKGUsXCJHXCIpfX1dfSx0aGlzLmluaXQoKSx0aGlzLmZpbHRlcj1mdW5jdGlvbihlLGEpe2lmKCFhbmd1bGFyLmlzRGF0ZShlKXx8aXNOYU4oZSl8fCFhKXJldHVyblwiXCI7YT10LkRBVEVUSU1FX0ZPUk1BVFNbYV18fGEsdC5pZCE9PWQmJnRoaXMuaW5pdCgpLHRoaXMuZm9ybWF0dGVyc1thXXx8KHRoaXMuZm9ybWF0dGVyc1thXT1uKGEsXCJmb3JtYXR0ZXJcIikpO3ZhciBpPXRoaXMuZm9ybWF0dGVyc1thXSxyPWkubWFwLG89YTtyZXR1cm4gci5yZWR1Y2UoZnVuY3Rpb24odCxhLGkpe3ZhciBuPW8ubWF0Y2gobmV3IFJlZ0V4cChcIiguKilcIithLmtleSkpO24mJmFuZ3VsYXIuaXNTdHJpbmcoblsxXSkmJih0Kz1uWzFdLG89by5yZXBsYWNlKG5bMV0rYS5rZXksXCJcIikpO3ZhciBzPWk9PT1yLmxlbmd0aC0xP286XCJcIjtyZXR1cm4gYS5hcHBseT90K2EuYXBwbHkuY2FsbChudWxsLGUpK3M6dCtzfSxcIlwiKX0sdGhpcy5wYXJzZT1mdW5jdGlvbihhLGksbyl7aWYoIWFuZ3VsYXIuaXNTdHJpbmcoYSl8fCFpKXJldHVybiBhO2k9dC5EQVRFVElNRV9GT1JNQVRTW2ldfHxpLGk9aS5yZXBsYWNlKGYsXCJcXFxcJCZcIiksdC5pZCE9PWQmJnRoaXMuaW5pdCgpLHRoaXMucGFyc2Vyc1tpXXx8KHRoaXMucGFyc2Vyc1tpXT1uKGksXCJhcHBseVwiKSk7dmFyIHM9dGhpcy5wYXJzZXJzW2ldLGw9cy5yZWdleCx1PXMubWFwLHA9YS5tYXRjaChsKSxjPSExO2lmKHAmJnAubGVuZ3RoKXt2YXIgaCxtO2FuZ3VsYXIuaXNEYXRlKG8pJiYhaXNOYU4oby5nZXRUaW1lKCkpP2g9e3llYXI6by5nZXRGdWxsWWVhcigpLG1vbnRoOm8uZ2V0TW9udGgoKSxkYXRlOm8uZ2V0RGF0ZSgpLGhvdXJzOm8uZ2V0SG91cnMoKSxtaW51dGVzOm8uZ2V0TWludXRlcygpLHNlY29uZHM6by5nZXRTZWNvbmRzKCksbWlsbGlzZWNvbmRzOm8uZ2V0TWlsbGlzZWNvbmRzKCl9OihvJiZlLndhcm4oXCJkYXRlcGFyc2VyOlwiLFwiYmFzZURhdGUgaXMgbm90IGEgdmFsaWQgZGF0ZVwiKSxoPXt5ZWFyOjE5MDAsbW9udGg6MCxkYXRlOjEsaG91cnM6MCxtaW51dGVzOjAsc2Vjb25kczowLG1pbGxpc2Vjb25kczowfSk7Zm9yKHZhciBnPTEsYj1wLmxlbmd0aDtiPmc7ZysrKXt2YXIgeT11W2ctMV07XCJaXCI9PT15Lm1hdGNoZXImJihjPSEwKSx5LmFwcGx5JiZ5LmFwcGx5LmNhbGwoaCxwW2ddKX12YXIgdj1jP0RhdGUucHJvdG90eXBlLnNldFVUQ0Z1bGxZZWFyOkRhdGUucHJvdG90eXBlLnNldEZ1bGxZZWFyLEQ9Yz9EYXRlLnByb3RvdHlwZS5zZXRVVENIb3VyczpEYXRlLnByb3RvdHlwZS5zZXRIb3VycztyZXR1cm4gcihoLnllYXIsaC5tb250aCxoLmRhdGUpJiYoIWFuZ3VsYXIuaXNEYXRlKG8pfHxpc05hTihvLmdldFRpbWUoKSl8fGM/KG09bmV3IERhdGUoMCksdi5jYWxsKG0saC55ZWFyLGgubW9udGgsaC5kYXRlKSxELmNhbGwobSxoLmhvdXJzfHwwLGgubWludXRlc3x8MCxoLnNlY29uZHN8fDAsaC5taWxsaXNlY29uZHN8fDApKToobT1uZXcgRGF0ZShvKSx2LmNhbGwobSxoLnllYXIsaC5tb250aCxoLmRhdGUpLEQuY2FsbChtLGguaG91cnMsaC5taW51dGVzLGguc2Vjb25kcyxoLm1pbGxpc2Vjb25kcykpKSxtfX0sdGhpcy50b1RpbWV6b25lPXMsdGhpcy5mcm9tVGltZXpvbmU9bCx0aGlzLnRpbWV6b25lVG9PZmZzZXQ9dSx0aGlzLmFkZERhdGVNaW51dGVzPXAsdGhpcy5jb252ZXJ0VGltZXpvbmVUb0xvY2FsPWN9XSksYW5ndWxhci5tb2R1bGUoXCJ1aS5ib290c3RyYXAuaXNDbGFzc1wiLFtdKS5kaXJlY3RpdmUoXCJ1aWJJc0NsYXNzXCIsW1wiJGFuaW1hdGVcIixmdW5jdGlvbihlKXt2YXIgdD0vXlxccyooW1xcc1xcU10rPylcXHMrb25cXHMrKFtcXHNcXFNdKz8pXFxzKiQvLGE9L15cXHMqKFtcXHNcXFNdKz8pXFxzK2ZvclxccysoW1xcc1xcU10rPylcXHMqJC87cmV0dXJue3Jlc3RyaWN0OlwiQVwiLGNvbXBpbGU6ZnVuY3Rpb24oaSxuKXtmdW5jdGlvbiByKGUsdCl7bC5wdXNoKGUpLHUucHVzaCh7c2NvcGU6ZSxlbGVtZW50OnR9KSxmLmZvckVhY2goZnVuY3Rpb24odCl7byh0LGUpfSksZS4kb24oXCIkZGVzdHJveVwiLHMpfWZ1bmN0aW9uIG8odCxpKXt2YXIgbj10Lm1hdGNoKGEpLHI9aS4kZXZhbChuWzFdKSxvPW5bMl0scz1wW3RdO2lmKCFzKXt2YXIgbD1mdW5jdGlvbih0KXt2YXIgYT1udWxsO3Uuc29tZShmdW5jdGlvbihlKXt2YXIgaT1lLnNjb3BlLiRldmFsKGQpO3JldHVybiBpPT09dD8oYT1lLCEwKTp2b2lkIDB9KSxzLmxhc3RBY3RpdmF0ZWQhPT1hJiYocy5sYXN0QWN0aXZhdGVkJiZlLnJlbW92ZUNsYXNzKHMubGFzdEFjdGl2YXRlZC5lbGVtZW50LHIpLGEmJmUuYWRkQ2xhc3MoYS5lbGVtZW50LHIpLHMubGFzdEFjdGl2YXRlZD1hKX07cFt0XT1zPXtsYXN0QWN0aXZhdGVkOm51bGwsc2NvcGU6aSx3YXRjaEZuOmwsY29tcGFyZVdpdGhFeHA6byx3YXRjaGVyOmkuJHdhdGNoKG8sbCl9fXMud2F0Y2hGbihpLiRldmFsKG8pKX1mdW5jdGlvbiBzKGUpe3ZhciB0PWUudGFyZ2V0U2NvcGUsYT1sLmluZGV4T2YodCk7aWYobC5zcGxpY2UoYSwxKSx1LnNwbGljZShhLDEpLGwubGVuZ3RoKXt2YXIgaT1sWzBdO2FuZ3VsYXIuZm9yRWFjaChwLGZ1bmN0aW9uKGUpe2Uuc2NvcGU9PT10JiYoZS53YXRjaGVyPWkuJHdhdGNoKGUuY29tcGFyZVdpdGhFeHAsZS53YXRjaEZuKSxlLnNjb3BlPWkpfSl9ZWxzZSBwPXt9fXZhciBsPVtdLHU9W10scD17fSxjPW4udWliSXNDbGFzcy5tYXRjaCh0KSxkPWNbMl0saD1jWzFdLGY9aC5zcGxpdChcIixcIik7cmV0dXJuIHJ9fX1dKSxhbmd1bGFyLm1vZHVsZShcInVpLmJvb3RzdHJhcC5wb3NpdGlvblwiLFtdKS5mYWN0b3J5KFwiJHVpYlBvc2l0aW9uXCIsW1wiJGRvY3VtZW50XCIsXCIkd2luZG93XCIsZnVuY3Rpb24oZSx0KXt2YXIgYSxpPXtub3JtYWw6LyhhdXRvfHNjcm9sbCkvLGhpZGRlbjovKGF1dG98c2Nyb2xsfGhpZGRlbikvfSxuPXthdXRvOi9cXHM/YXV0bz9cXHM/L2kscHJpbWFyeTovXih0b3B8Ym90dG9tfGxlZnR8cmlnaHQpJC8sc2Vjb25kYXJ5Oi9eKHRvcHxib3R0b218bGVmdHxyaWdodHxjZW50ZXIpJC8sdmVydGljYWw6L14odG9wfGJvdHRvbSkkL307cmV0dXJue2dldFJhd05vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUubm9kZU5hbWU/ZTplWzBdfHxlfSxwYXJzZVN0eWxlOmZ1bmN0aW9uKGUpe3JldHVybiBlPXBhcnNlRmxvYXQoZSksaXNGaW5pdGUoZSk/ZTowfSxvZmZzZXRQYXJlbnQ6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gaShlKXtyZXR1cm5cInN0YXRpY1wiPT09KHQuZ2V0Q29tcHV0ZWRTdHlsZShlKS5wb3NpdGlvbnx8XCJzdGF0aWNcIil9YT10aGlzLmdldFJhd05vZGUoYSk7Zm9yKHZhciBuPWEub2Zmc2V0UGFyZW50fHxlWzBdLmRvY3VtZW50RWxlbWVudDtuJiZuIT09ZVswXS5kb2N1bWVudEVsZW1lbnQmJmkobik7KW49bi5vZmZzZXRQYXJlbnQ7cmV0dXJuIG58fGVbMF0uZG9jdW1lbnRFbGVtZW50fSxzY3JvbGxiYXJXaWR0aDpmdW5jdGlvbigpe2lmKGFuZ3VsYXIuaXNVbmRlZmluZWQoYSkpe3ZhciB0PWFuZ3VsYXIuZWxlbWVudCgnPGRpdiBjbGFzcz1cInVpYi1wb3NpdGlvbi1zY3JvbGxiYXItbWVhc3VyZVwiPjwvZGl2PicpO2UuZmluZChcImJvZHlcIikuYXBwZW5kKHQpLGE9dFswXS5vZmZzZXRXaWR0aC10WzBdLmNsaWVudFdpZHRoLGE9aXNGaW5pdGUoYSk/YTowLHQucmVtb3ZlKCl9cmV0dXJuIGF9LGlzU2Nyb2xsYWJsZTpmdW5jdGlvbihlLGEpe2U9dGhpcy5nZXRSYXdOb2RlKGUpO3ZhciBuPWE/aS5oaWRkZW46aS5ub3JtYWwscj10LmdldENvbXB1dGVkU3R5bGUoZSk7cmV0dXJuIG4udGVzdChyLm92ZXJmbG93K3Iub3ZlcmZsb3dZK3Iub3ZlcmZsb3dYKX0sc2Nyb2xsUGFyZW50OmZ1bmN0aW9uKGEsbil7YT10aGlzLmdldFJhd05vZGUoYSk7dmFyIHI9bj9pLmhpZGRlbjppLm5vcm1hbCxvPWVbMF0uZG9jdW1lbnRFbGVtZW50LHM9dC5nZXRDb21wdXRlZFN0eWxlKGEpLGw9XCJhYnNvbHV0ZVwiPT09cy5wb3NpdGlvbix1PWEucGFyZW50RWxlbWVudHx8bztpZih1PT09b3x8XCJmaXhlZFwiPT09cy5wb3NpdGlvbilyZXR1cm4gbztmb3IoO3UucGFyZW50RWxlbWVudCYmdSE9PW87KXt2YXIgcD10LmdldENvbXB1dGVkU3R5bGUodSk7aWYobCYmXCJzdGF0aWNcIiE9PXAucG9zaXRpb24mJihsPSExKSwhbCYmci50ZXN0KHAub3ZlcmZsb3crcC5vdmVyZmxvd1krcC5vdmVyZmxvd1gpKWJyZWFrO1xyXG51PXUucGFyZW50RWxlbWVudH1yZXR1cm4gdX0scG9zaXRpb246ZnVuY3Rpb24oYSxpKXthPXRoaXMuZ2V0UmF3Tm9kZShhKTt2YXIgbj10aGlzLm9mZnNldChhKTtpZihpKXt2YXIgcj10LmdldENvbXB1dGVkU3R5bGUoYSk7bi50b3AtPXRoaXMucGFyc2VTdHlsZShyLm1hcmdpblRvcCksbi5sZWZ0LT10aGlzLnBhcnNlU3R5bGUoci5tYXJnaW5MZWZ0KX12YXIgbz10aGlzLm9mZnNldFBhcmVudChhKSxzPXt0b3A6MCxsZWZ0OjB9O3JldHVybiBvIT09ZVswXS5kb2N1bWVudEVsZW1lbnQmJihzPXRoaXMub2Zmc2V0KG8pLHMudG9wKz1vLmNsaWVudFRvcC1vLnNjcm9sbFRvcCxzLmxlZnQrPW8uY2xpZW50TGVmdC1vLnNjcm9sbExlZnQpLHt3aWR0aDpNYXRoLnJvdW5kKGFuZ3VsYXIuaXNOdW1iZXIobi53aWR0aCk/bi53aWR0aDphLm9mZnNldFdpZHRoKSxoZWlnaHQ6TWF0aC5yb3VuZChhbmd1bGFyLmlzTnVtYmVyKG4uaGVpZ2h0KT9uLmhlaWdodDphLm9mZnNldEhlaWdodCksdG9wOk1hdGgucm91bmQobi50b3Atcy50b3ApLGxlZnQ6TWF0aC5yb3VuZChuLmxlZnQtcy5sZWZ0KX19LG9mZnNldDpmdW5jdGlvbihhKXthPXRoaXMuZ2V0UmF3Tm9kZShhKTt2YXIgaT1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVybnt3aWR0aDpNYXRoLnJvdW5kKGFuZ3VsYXIuaXNOdW1iZXIoaS53aWR0aCk/aS53aWR0aDphLm9mZnNldFdpZHRoKSxoZWlnaHQ6TWF0aC5yb3VuZChhbmd1bGFyLmlzTnVtYmVyKGkuaGVpZ2h0KT9pLmhlaWdodDphLm9mZnNldEhlaWdodCksdG9wOk1hdGgucm91bmQoaS50b3ArKHQucGFnZVlPZmZzZXR8fGVbMF0uZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCkpLGxlZnQ6TWF0aC5yb3VuZChpLmxlZnQrKHQucGFnZVhPZmZzZXR8fGVbMF0uZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQpKX19LHZpZXdwb3J0T2Zmc2V0OmZ1bmN0aW9uKGEsaSxuKXthPXRoaXMuZ2V0UmF3Tm9kZShhKSxuPW4hPT0hMT8hMDohMTt2YXIgcj1hLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG89e3RvcDowLGxlZnQ6MCxib3R0b206MCxyaWdodDowfSxzPWk/ZVswXS5kb2N1bWVudEVsZW1lbnQ6dGhpcy5zY3JvbGxQYXJlbnQoYSksbD1zLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO2lmKG8udG9wPWwudG9wK3MuY2xpZW50VG9wLG8ubGVmdD1sLmxlZnQrcy5jbGllbnRMZWZ0LHM9PT1lWzBdLmRvY3VtZW50RWxlbWVudCYmKG8udG9wKz10LnBhZ2VZT2Zmc2V0LG8ubGVmdCs9dC5wYWdlWE9mZnNldCksby5ib3R0b209by50b3Arcy5jbGllbnRIZWlnaHQsby5yaWdodD1vLmxlZnQrcy5jbGllbnRXaWR0aCxuKXt2YXIgdT10LmdldENvbXB1dGVkU3R5bGUocyk7by50b3ArPXRoaXMucGFyc2VTdHlsZSh1LnBhZGRpbmdUb3ApLG8uYm90dG9tLT10aGlzLnBhcnNlU3R5bGUodS5wYWRkaW5nQm90dG9tKSxvLmxlZnQrPXRoaXMucGFyc2VTdHlsZSh1LnBhZGRpbmdMZWZ0KSxvLnJpZ2h0LT10aGlzLnBhcnNlU3R5bGUodS5wYWRkaW5nUmlnaHQpfXJldHVybnt0b3A6TWF0aC5yb3VuZChyLnRvcC1vLnRvcCksYm90dG9tOk1hdGgucm91bmQoby5ib3R0b20tci5ib3R0b20pLGxlZnQ6TWF0aC5yb3VuZChyLmxlZnQtby5sZWZ0KSxyaWdodDpNYXRoLnJvdW5kKG8ucmlnaHQtci5yaWdodCl9fSxwYXJzZVBsYWNlbWVudDpmdW5jdGlvbihlKXt2YXIgdD1uLmF1dG8udGVzdChlKTtyZXR1cm4gdCYmKGU9ZS5yZXBsYWNlKG4uYXV0byxcIlwiKSksZT1lLnNwbGl0KFwiLVwiKSxlWzBdPWVbMF18fFwidG9wXCIsbi5wcmltYXJ5LnRlc3QoZVswXSl8fChlWzBdPVwidG9wXCIpLGVbMV09ZVsxXXx8XCJjZW50ZXJcIixuLnNlY29uZGFyeS50ZXN0KGVbMV0pfHwoZVsxXT1cImNlbnRlclwiKSxlWzJdPXQ/ITA6ITEsZX0scG9zaXRpb25FbGVtZW50czpmdW5jdGlvbihlLGEsaSxyKXtlPXRoaXMuZ2V0UmF3Tm9kZShlKSxhPXRoaXMuZ2V0UmF3Tm9kZShhKTt2YXIgbz1hbmd1bGFyLmlzRGVmaW5lZChhLm9mZnNldFdpZHRoKT9hLm9mZnNldFdpZHRoOmEucHJvcChcIm9mZnNldFdpZHRoXCIpLHM9YW5ndWxhci5pc0RlZmluZWQoYS5vZmZzZXRIZWlnaHQpP2Eub2Zmc2V0SGVpZ2h0OmEucHJvcChcIm9mZnNldEhlaWdodFwiKTtpPXRoaXMucGFyc2VQbGFjZW1lbnQoaSk7dmFyIGw9cj90aGlzLm9mZnNldChlKTp0aGlzLnBvc2l0aW9uKGUpLHU9e3RvcDowLGxlZnQ6MCxwbGFjZW1lbnQ6XCJcIn07aWYoaVsyXSl7dmFyIHA9dGhpcy52aWV3cG9ydE9mZnNldChlLHIpLGM9dC5nZXRDb21wdXRlZFN0eWxlKGEpLGQ9e3dpZHRoOm8rTWF0aC5yb3VuZChNYXRoLmFicyh0aGlzLnBhcnNlU3R5bGUoYy5tYXJnaW5MZWZ0KSt0aGlzLnBhcnNlU3R5bGUoYy5tYXJnaW5SaWdodCkpKSxoZWlnaHQ6cytNYXRoLnJvdW5kKE1hdGguYWJzKHRoaXMucGFyc2VTdHlsZShjLm1hcmdpblRvcCkrdGhpcy5wYXJzZVN0eWxlKGMubWFyZ2luQm90dG9tKSkpfTtpZihpWzBdPVwidG9wXCI9PT1pWzBdJiZkLmhlaWdodD5wLnRvcCYmZC5oZWlnaHQ8PXAuYm90dG9tP1wiYm90dG9tXCI6XCJib3R0b21cIj09PWlbMF0mJmQuaGVpZ2h0PnAuYm90dG9tJiZkLmhlaWdodDw9cC50b3A/XCJ0b3BcIjpcImxlZnRcIj09PWlbMF0mJmQud2lkdGg+cC5sZWZ0JiZkLndpZHRoPD1wLnJpZ2h0P1wicmlnaHRcIjpcInJpZ2h0XCI9PT1pWzBdJiZkLndpZHRoPnAucmlnaHQmJmQud2lkdGg8PXAubGVmdD9cImxlZnRcIjppWzBdLGlbMV09XCJ0b3BcIj09PWlbMV0mJmQuaGVpZ2h0LWwuaGVpZ2h0PnAuYm90dG9tJiZkLmhlaWdodC1sLmhlaWdodDw9cC50b3A/XCJib3R0b21cIjpcImJvdHRvbVwiPT09aVsxXSYmZC5oZWlnaHQtbC5oZWlnaHQ+cC50b3AmJmQuaGVpZ2h0LWwuaGVpZ2h0PD1wLmJvdHRvbT9cInRvcFwiOlwibGVmdFwiPT09aVsxXSYmZC53aWR0aC1sLndpZHRoPnAucmlnaHQmJmQud2lkdGgtbC53aWR0aDw9cC5sZWZ0P1wicmlnaHRcIjpcInJpZ2h0XCI9PT1pWzFdJiZkLndpZHRoLWwud2lkdGg+cC5sZWZ0JiZkLndpZHRoLWwud2lkdGg8PXAucmlnaHQ/XCJsZWZ0XCI6aVsxXSxcImNlbnRlclwiPT09aVsxXSlpZihuLnZlcnRpY2FsLnRlc3QoaVswXSkpe3ZhciBoPWwud2lkdGgvMi1vLzI7cC5sZWZ0K2g8MCYmZC53aWR0aC1sLndpZHRoPD1wLnJpZ2h0P2lbMV09XCJsZWZ0XCI6cC5yaWdodCtoPDAmJmQud2lkdGgtbC53aWR0aDw9cC5sZWZ0JiYoaVsxXT1cInJpZ2h0XCIpfWVsc2V7dmFyIGY9bC5oZWlnaHQvMi1kLmhlaWdodC8yO3AudG9wK2Y8MCYmZC5oZWlnaHQtbC5oZWlnaHQ8PXAuYm90dG9tP2lbMV09XCJ0b3BcIjpwLmJvdHRvbStmPDAmJmQuaGVpZ2h0LWwuaGVpZ2h0PD1wLnRvcCYmKGlbMV09XCJib3R0b21cIil9fXN3aXRjaChpWzBdKXtjYXNlXCJ0b3BcIjp1LnRvcD1sLnRvcC1zO2JyZWFrO2Nhc2VcImJvdHRvbVwiOnUudG9wPWwudG9wK2wuaGVpZ2h0O2JyZWFrO2Nhc2VcImxlZnRcIjp1LmxlZnQ9bC5sZWZ0LW87YnJlYWs7Y2FzZVwicmlnaHRcIjp1LmxlZnQ9bC5sZWZ0K2wud2lkdGh9c3dpdGNoKGlbMV0pe2Nhc2VcInRvcFwiOnUudG9wPWwudG9wO2JyZWFrO2Nhc2VcImJvdHRvbVwiOnUudG9wPWwudG9wK2wuaGVpZ2h0LXM7YnJlYWs7Y2FzZVwibGVmdFwiOnUubGVmdD1sLmxlZnQ7YnJlYWs7Y2FzZVwicmlnaHRcIjp1LmxlZnQ9bC5sZWZ0K2wud2lkdGgtbzticmVhaztjYXNlXCJjZW50ZXJcIjpuLnZlcnRpY2FsLnRlc3QoaVswXSk/dS5sZWZ0PWwubGVmdCtsLndpZHRoLzItby8yOnUudG9wPWwudG9wK2wuaGVpZ2h0LzItcy8yfXJldHVybiB1LnRvcD1NYXRoLnJvdW5kKHUudG9wKSx1LmxlZnQ9TWF0aC5yb3VuZCh1LmxlZnQpLHUucGxhY2VtZW50PVwiY2VudGVyXCI9PT1pWzFdP2lbMF06aVswXStcIi1cIitpWzFdLHV9LHBvc2l0aW9uQXJyb3c6ZnVuY3Rpb24oZSxhKXtlPXRoaXMuZ2V0UmF3Tm9kZShlKTt2YXIgaT1lLnF1ZXJ5U2VsZWN0b3IoXCIudG9vbHRpcC1pbm5lciwgLnBvcG92ZXItaW5uZXJcIik7aWYoaSl7dmFyIHI9YW5ndWxhci5lbGVtZW50KGkpLmhhc0NsYXNzKFwidG9vbHRpcC1pbm5lclwiKSxvPWUucXVlcnlTZWxlY3RvcihyP1wiLnRvb2x0aXAtYXJyb3dcIjpcIi5hcnJvd1wiKTtpZihvKXt2YXIgcz17dG9wOlwiXCIsYm90dG9tOlwiXCIsbGVmdDpcIlwiLHJpZ2h0OlwiXCJ9O2lmKGE9dGhpcy5wYXJzZVBsYWNlbWVudChhKSxcImNlbnRlclwiPT09YVsxXSlyZXR1cm4gdm9pZCBhbmd1bGFyLmVsZW1lbnQobykuY3NzKHMpO3ZhciBsPVwiYm9yZGVyLVwiK2FbMF0rXCItd2lkdGhcIix1PXQuZ2V0Q29tcHV0ZWRTdHlsZShvKVtsXSxwPVwiYm9yZGVyLVwiO3ArPW4udmVydGljYWwudGVzdChhWzBdKT9hWzBdK1wiLVwiK2FbMV06YVsxXStcIi1cIithWzBdLHArPVwiLXJhZGl1c1wiO3ZhciBjPXQuZ2V0Q29tcHV0ZWRTdHlsZShyP2k6ZSlbcF07c3dpdGNoKGFbMF0pe2Nhc2VcInRvcFwiOnMuYm90dG9tPXI/XCIwXCI6XCItXCIrdTticmVhaztjYXNlXCJib3R0b21cIjpzLnRvcD1yP1wiMFwiOlwiLVwiK3U7YnJlYWs7Y2FzZVwibGVmdFwiOnMucmlnaHQ9cj9cIjBcIjpcIi1cIit1O2JyZWFrO2Nhc2VcInJpZ2h0XCI6cy5sZWZ0PXI/XCIwXCI6XCItXCIrdX1zW2FbMV1dPWMsYW5ndWxhci5lbGVtZW50KG8pLmNzcyhzKX19fX19XSksYW5ndWxhci5tb2R1bGUoXCJ1aS5ib290c3RyYXAudHlwZWFoZWFkXCIsW1widWkuYm9vdHN0cmFwLmRlYm91bmNlXCIsXCJ1aS5ib290c3RyYXAucG9zaXRpb25cIl0pLmZhY3RvcnkoXCJ1aWJUeXBlYWhlYWRQYXJzZXJcIixbXCIkcGFyc2VcIixmdW5jdGlvbihlKXt2YXIgdD0vXlxccyooW1xcc1xcU10rPykoPzpcXHMrYXNcXHMrKFtcXHNcXFNdKz8pKT9cXHMrZm9yXFxzKyg/OihbXFwkXFx3XVtcXCRcXHdcXGRdKikpXFxzK2luXFxzKyhbXFxzXFxTXSs/KSQvO3JldHVybntwYXJzZTpmdW5jdGlvbihhKXt2YXIgaT1hLm1hdGNoKHQpO2lmKCFpKXRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdHlwZWFoZWFkIHNwZWNpZmljYXRpb24gaW4gZm9ybSBvZiBcIl9tb2RlbFZhbHVlXyAoYXMgX2xhYmVsXyk/IGZvciBfaXRlbV8gaW4gX2NvbGxlY3Rpb25fXCIgYnV0IGdvdCBcIicrYSsnXCIuJyk7cmV0dXJue2l0ZW1OYW1lOmlbM10sc291cmNlOmUoaVs0XSksdmlld01hcHBlcjplKGlbMl18fGlbMV0pLG1vZGVsTWFwcGVyOmUoaVsxXSl9fX19XSkuY29udHJvbGxlcihcIlVpYlR5cGVhaGVhZENvbnRyb2xsZXJcIixbXCIkc2NvcGVcIixcIiRlbGVtZW50XCIsXCIkYXR0cnNcIixcIiRjb21waWxlXCIsXCIkcGFyc2VcIixcIiRxXCIsXCIkdGltZW91dFwiLFwiJGRvY3VtZW50XCIsXCIkd2luZG93XCIsXCIkcm9vdFNjb3BlXCIsXCIkJGRlYm91bmNlXCIsXCIkdWliUG9zaXRpb25cIixcInVpYlR5cGVhaGVhZFBhcnNlclwiLGZ1bmN0aW9uKGUsdCxhLGksbixyLG8scyxsLHUscCxjLGQpe2Z1bmN0aW9uIGgoKXtSLm1vdmVJblByb2dyZXNzfHwoUi5tb3ZlSW5Qcm9ncmVzcz0hMCxSLiRkaWdlc3QoKSksWCgpfWZ1bmN0aW9uIGYoKXtSLnBvc2l0aW9uPUY/Yy5vZmZzZXQodCk6Yy5wb3NpdGlvbih0KSxSLnBvc2l0aW9uLnRvcCs9dC5wcm9wKFwib2Zmc2V0SGVpZ2h0XCIpfXZhciBtLGcsYj1bOSwxMywyNywzOCw0MF0seT0yMDAsdj1lLiRldmFsKGEudHlwZWFoZWFkTWluTGVuZ3RoKTt2fHwwPT09dnx8KHY9MSksZS4kd2F0Y2goYS50eXBlYWhlYWRNaW5MZW5ndGgsZnVuY3Rpb24oZSl7dj1lfHwwPT09ZT9lOjF9KTt2YXIgRD1lLiRldmFsKGEudHlwZWFoZWFkV2FpdE1zKXx8MCxrPWUuJGV2YWwoYS50eXBlYWhlYWRFZGl0YWJsZSkhPT0hMTtlLiR3YXRjaChhLnR5cGVhaGVhZEVkaXRhYmxlLGZ1bmN0aW9uKGUpe2s9ZSE9PSExfSk7dmFyIHcsJCxNPW4oYS50eXBlYWhlYWRMb2FkaW5nKS5hc3NpZ258fGFuZ3VsYXIubm9vcCx4PW4oYS50eXBlYWhlYWRPblNlbGVjdCksVD1hbmd1bGFyLmlzRGVmaW5lZChhLnR5cGVhaGVhZFNlbGVjdE9uQmx1cik/ZS4kZXZhbChhLnR5cGVhaGVhZFNlbGVjdE9uQmx1cik6ITEsTz1uKGEudHlwZWFoZWFkTm9SZXN1bHRzKS5hc3NpZ258fGFuZ3VsYXIubm9vcCxFPWEudHlwZWFoZWFkSW5wdXRGb3JtYXR0ZXI/bihhLnR5cGVhaGVhZElucHV0Rm9ybWF0dGVyKTp2b2lkIDAsRj1hLnR5cGVhaGVhZEFwcGVuZFRvQm9keT9lLiRldmFsKGEudHlwZWFoZWFkQXBwZW5kVG9Cb2R5KTohMSxTPWEudHlwZWFoZWFkQXBwZW5kVG8/ZS4kZXZhbChhLnR5cGVhaGVhZEFwcGVuZFRvKTpudWxsLEk9ZS4kZXZhbChhLnR5cGVhaGVhZEZvY3VzRmlyc3QpIT09ITEsQz1hLnR5cGVhaGVhZFNlbGVjdE9uRXhhY3Q/ZS4kZXZhbChhLnR5cGVhaGVhZFNlbGVjdE9uRXhhY3QpOiExLFA9bihhLnR5cGVhaGVhZElzT3BlbikuYXNzaWdufHxhbmd1bGFyLm5vb3AsQT1lLiRldmFsKGEudHlwZWFoZWFkU2hvd0hpbnQpfHwhMSxOPW4oYS5uZ01vZGVsKSxVPW4oYS5uZ01vZGVsK1wiKCQkJHApXCIpLFk9ZnVuY3Rpb24odCxhKXtyZXR1cm4gYW5ndWxhci5pc0Z1bmN0aW9uKE4oZSkpJiZnJiZnLiRvcHRpb25zJiZnLiRvcHRpb25zLmdldHRlclNldHRlcj9VKHQseyQkJHA6YX0pOk4uYXNzaWduKHQsYSl9LHo9ZC5wYXJzZShhLnVpYlR5cGVhaGVhZCksUj1lLiRuZXcoKSxWPWUuJG9uKFwiJGRlc3Ryb3lcIixmdW5jdGlvbigpe1IuJGRlc3Ryb3koKX0pO1IuJG9uKFwiJGRlc3Ryb3lcIixWKTt2YXIgSD1cInR5cGVhaGVhZC1cIitSLiRpZCtcIi1cIitNYXRoLmZsb29yKDFlNCpNYXRoLnJhbmRvbSgpKTt0LmF0dHIoe1wiYXJpYS1hdXRvY29tcGxldGVcIjpcImxpc3RcIixcImFyaWEtZXhwYW5kZWRcIjohMSxcImFyaWEtb3duc1wiOkh9KTt2YXIgQixXO0EmJihCPWFuZ3VsYXIuZWxlbWVudChcIjxkaXY+PC9kaXY+XCIpLEIuY3NzKFwicG9zaXRpb25cIixcInJlbGF0aXZlXCIpLHQuYWZ0ZXIoQiksVz10LmNsb25lKCksVy5hdHRyKFwicGxhY2Vob2xkZXJcIixcIlwiKSxXLmF0dHIoXCJ0YWJpbmRleFwiLFwiLTFcIiksVy52YWwoXCJcIiksVy5jc3Moe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6XCIwcHhcIixsZWZ0OlwiMHB4XCIsXCJib3JkZXItY29sb3JcIjpcInRyYW5zcGFyZW50XCIsXCJib3gtc2hhZG93XCI6XCJub25lXCIsb3BhY2l0eToxLGJhY2tncm91bmQ6XCJub25lIDAlIDAlIC8gYXV0byByZXBlYXQgc2Nyb2xsIHBhZGRpbmctYm94IGJvcmRlci1ib3ggcmdiKDI1NSwgMjU1LCAyNTUpXCIsY29sb3I6XCIjOTk5XCJ9KSx0LmNzcyh7cG9zaXRpb246XCJyZWxhdGl2ZVwiLFwidmVydGljYWwtYWxpZ25cIjpcInRvcFwiLFwiYmFja2dyb3VuZC1jb2xvclwiOlwidHJhbnNwYXJlbnRcIn0pLEIuYXBwZW5kKFcpLFcuYWZ0ZXIodCkpO3ZhciBxPWFuZ3VsYXIuZWxlbWVudChcIjxkaXYgdWliLXR5cGVhaGVhZC1wb3B1cD48L2Rpdj5cIik7cS5hdHRyKHtpZDpILG1hdGNoZXM6XCJtYXRjaGVzXCIsYWN0aXZlOlwiYWN0aXZlSWR4XCIsc2VsZWN0Olwic2VsZWN0KGFjdGl2ZUlkeCwgZXZ0KVwiLFwibW92ZS1pbi1wcm9ncmVzc1wiOlwibW92ZUluUHJvZ3Jlc3NcIixxdWVyeTpcInF1ZXJ5XCIscG9zaXRpb246XCJwb3NpdGlvblwiLFwiYXNzaWduLWlzLW9wZW5cIjpcImFzc2lnbklzT3Blbihpc09wZW4pXCIsZGVib3VuY2U6XCJkZWJvdW5jZVVwZGF0ZVwifSksYW5ndWxhci5pc0RlZmluZWQoYS50eXBlYWhlYWRUZW1wbGF0ZVVybCkmJnEuYXR0cihcInRlbXBsYXRlLXVybFwiLGEudHlwZWFoZWFkVGVtcGxhdGVVcmwpLGFuZ3VsYXIuaXNEZWZpbmVkKGEudHlwZWFoZWFkUG9wdXBUZW1wbGF0ZVVybCkmJnEuYXR0cihcInBvcHVwLXRlbXBsYXRlLXVybFwiLGEudHlwZWFoZWFkUG9wdXBUZW1wbGF0ZVVybCk7dmFyIF89ZnVuY3Rpb24oKXtBJiZXLnZhbChcIlwiKX0saj1mdW5jdGlvbigpe1IubWF0Y2hlcz1bXSxSLmFjdGl2ZUlkeD0tMSx0LmF0dHIoXCJhcmlhLWV4cGFuZGVkXCIsITEpLF8oKX0sRz1mdW5jdGlvbihlKXtyZXR1cm4gSCtcIi1vcHRpb24tXCIrZX07Ui4kd2F0Y2goXCJhY3RpdmVJZHhcIixmdW5jdGlvbihlKXswPmU/dC5yZW1vdmVBdHRyKFwiYXJpYS1hY3RpdmVkZXNjZW5kYW50XCIpOnQuYXR0cihcImFyaWEtYWN0aXZlZGVzY2VuZGFudFwiLEcoZSkpfSk7dmFyIEw9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gUi5tYXRjaGVzLmxlbmd0aD50JiZlP2UudG9VcHBlckNhc2UoKT09PVIubWF0Y2hlc1t0XS5sYWJlbC50b1VwcGVyQ2FzZSgpOiExfSxLPWZ1bmN0aW9uKGEsaSl7dmFyIG49eyR2aWV3VmFsdWU6YX07TShlLCEwKSxPKGUsITEpLHIud2hlbih6LnNvdXJjZShlLG4pKS50aGVuKGZ1bmN0aW9uKHIpe3ZhciBvPWE9PT1tLiR2aWV3VmFsdWU7aWYobyYmdylpZihyJiZyLmxlbmd0aD4wKXtSLmFjdGl2ZUlkeD1JPzA6LTEsTyhlLCExKSxSLm1hdGNoZXMubGVuZ3RoPTA7Zm9yKHZhciBzPTA7czxyLmxlbmd0aDtzKyspblt6Lml0ZW1OYW1lXT1yW3NdLFIubWF0Y2hlcy5wdXNoKHtpZDpHKHMpLGxhYmVsOnoudmlld01hcHBlcihSLG4pLG1vZGVsOnJbc119KTtpZihSLnF1ZXJ5PWEsZigpLHQuYXR0cihcImFyaWEtZXhwYW5kZWRcIiwhMCksQyYmMT09PVIubWF0Y2hlcy5sZW5ndGgmJkwoYSwwKSYmKGFuZ3VsYXIuaXNOdW1iZXIoUi5kZWJvdW5jZVVwZGF0ZSl8fGFuZ3VsYXIuaXNPYmplY3QoUi5kZWJvdW5jZVVwZGF0ZSk/cChmdW5jdGlvbigpe1Iuc2VsZWN0KDAsaSl9LGFuZ3VsYXIuaXNOdW1iZXIoUi5kZWJvdW5jZVVwZGF0ZSk/Ui5kZWJvdW5jZVVwZGF0ZTpSLmRlYm91bmNlVXBkYXRlW1wiZGVmYXVsdFwiXSk6Ui5zZWxlY3QoMCxpKSksQSl7dmFyIGw9Ui5tYXRjaGVzWzBdLmxhYmVsO1cudmFsKGFuZ3VsYXIuaXNTdHJpbmcoYSkmJmEubGVuZ3RoPjAmJmwuc2xpY2UoMCxhLmxlbmd0aCkudG9VcHBlckNhc2UoKT09PWEudG9VcHBlckNhc2UoKT9hK2wuc2xpY2UoYS5sZW5ndGgpOlwiXCIpfX1lbHNlIGooKSxPKGUsITApO28mJk0oZSwhMSl9LGZ1bmN0aW9uKCl7aigpLE0oZSwhMSksTyhlLCEwKX0pfTtGJiYoYW5ndWxhci5lbGVtZW50KGwpLm9uKFwicmVzaXplXCIsaCkscy5maW5kKFwiYm9keVwiKS5vbihcInNjcm9sbFwiLGgpKTt2YXIgWD1wKGZ1bmN0aW9uKCl7Ui5tYXRjaGVzLmxlbmd0aCYmZigpLFIubW92ZUluUHJvZ3Jlc3M9ITF9LHkpO1IubW92ZUluUHJvZ3Jlc3M9ITEsUi5xdWVyeT12b2lkIDA7dmFyIFosSj1mdW5jdGlvbihlKXtaPW8oZnVuY3Rpb24oKXtLKGUpfSxEKX0sUT1mdW5jdGlvbigpe1omJm8uY2FuY2VsKFopfTtqKCksUi5hc3NpZ25Jc09wZW49ZnVuY3Rpb24odCl7UChlLHQpfSxSLnNlbGVjdD1mdW5jdGlvbihpLG4pe3ZhciByLHMsbD17fTskPSEwLGxbei5pdGVtTmFtZV09cz1SLm1hdGNoZXNbaV0ubW9kZWwscj16Lm1vZGVsTWFwcGVyKGUsbCksWShlLHIpLG0uJHNldFZhbGlkaXR5KFwiZWRpdGFibGVcIiwhMCksbS4kc2V0VmFsaWRpdHkoXCJwYXJzZVwiLCEwKSx4KGUseyRpdGVtOnMsJG1vZGVsOnIsJGxhYmVsOnoudmlld01hcHBlcihlLGwpLCRldmVudDpufSksaigpLFIuJGV2YWwoYS50eXBlYWhlYWRGb2N1c09uU2VsZWN0KSE9PSExJiZvKGZ1bmN0aW9uKCl7dFswXS5mb2N1cygpfSwwLCExKX0sdC5vbihcImtleWRvd25cIixmdW5jdGlvbih0KXtpZigwIT09Ui5tYXRjaGVzLmxlbmd0aCYmLTEhPT1iLmluZGV4T2YodC53aGljaCkpe2lmKC0xPT09Ui5hY3RpdmVJZHgmJig5PT09dC53aGljaHx8MTM9PT10LndoaWNoKXx8OT09PXQud2hpY2gmJnQuc2hpZnRLZXkpcmV0dXJuIGooKSx2b2lkIFIuJGRpZ2VzdCgpO3QucHJldmVudERlZmF1bHQoKTt2YXIgYTtzd2l0Y2godC53aGljaCl7Y2FzZSA5OmNhc2UgMTM6Ui4kYXBwbHkoZnVuY3Rpb24oKXthbmd1bGFyLmlzTnVtYmVyKFIuZGVib3VuY2VVcGRhdGUpfHxhbmd1bGFyLmlzT2JqZWN0KFIuZGVib3VuY2VVcGRhdGUpP3AoZnVuY3Rpb24oKXtSLnNlbGVjdChSLmFjdGl2ZUlkeCx0KX0sYW5ndWxhci5pc051bWJlcihSLmRlYm91bmNlVXBkYXRlKT9SLmRlYm91bmNlVXBkYXRlOlIuZGVib3VuY2VVcGRhdGVbXCJkZWZhdWx0XCJdKTpSLnNlbGVjdChSLmFjdGl2ZUlkeCx0KX0pO2JyZWFrO2Nhc2UgMjc6dC5zdG9wUHJvcGFnYXRpb24oKSxqKCksZS4kZGlnZXN0KCk7YnJlYWs7Y2FzZSAzODpSLmFjdGl2ZUlkeD0oUi5hY3RpdmVJZHg+MD9SLmFjdGl2ZUlkeDpSLm1hdGNoZXMubGVuZ3RoKS0xLFIuJGRpZ2VzdCgpLGE9cS5maW5kKFwibGlcIilbUi5hY3RpdmVJZHhdLGEucGFyZW50Tm9kZS5zY3JvbGxUb3A9YS5vZmZzZXRUb3A7YnJlYWs7Y2FzZSA0MDpSLmFjdGl2ZUlkeD0oUi5hY3RpdmVJZHgrMSklUi5tYXRjaGVzLmxlbmd0aCxSLiRkaWdlc3QoKSxhPXEuZmluZChcImxpXCIpW1IuYWN0aXZlSWR4XSxhLnBhcmVudE5vZGUuc2Nyb2xsVG9wPWEub2Zmc2V0VG9wfX19KSx0LmJpbmQoXCJmb2N1c1wiLGZ1bmN0aW9uKGUpe3c9ITAsMCE9PXZ8fG0uJHZpZXdWYWx1ZXx8byhmdW5jdGlvbigpe0sobS4kdmlld1ZhbHVlLGUpfSwwKX0pLHQuYmluZChcImJsdXJcIixmdW5jdGlvbihlKXtUJiZSLm1hdGNoZXMubGVuZ3RoJiYtMSE9PVIuYWN0aXZlSWR4JiYhJCYmKCQ9ITAsUi4kYXBwbHkoZnVuY3Rpb24oKXthbmd1bGFyLmlzT2JqZWN0KFIuZGVib3VuY2VVcGRhdGUpJiZhbmd1bGFyLmlzTnVtYmVyKFIuZGVib3VuY2VVcGRhdGUuYmx1cik/cChmdW5jdGlvbigpe1Iuc2VsZWN0KFIuYWN0aXZlSWR4LGUpfSxSLmRlYm91bmNlVXBkYXRlLmJsdXIpOlIuc2VsZWN0KFIuYWN0aXZlSWR4LGUpfSkpLCFrJiZtLiRlcnJvci5lZGl0YWJsZSYmKG0uJHZpZXdWYWx1ZT1cIlwiLHQudmFsKFwiXCIpKSx3PSExLCQ9ITF9KTt2YXIgZXQ9ZnVuY3Rpb24oYSl7dFswXSE9PWEudGFyZ2V0JiYzIT09YS53aGljaCYmMCE9PVIubWF0Y2hlcy5sZW5ndGgmJihqKCksdS4kJHBoYXNlfHxlLiRkaWdlc3QoKSl9O3Mub24oXCJjbGlja1wiLGV0KSxlLiRvbihcIiRkZXN0cm95XCIsZnVuY3Rpb24oKXtzLm9mZihcImNsaWNrXCIsZXQpLChGfHxTKSYmdHQucmVtb3ZlKCksRiYmKGFuZ3VsYXIuZWxlbWVudChsKS5vZmYoXCJyZXNpemVcIixoKSxzLmZpbmQoXCJib2R5XCIpLm9mZihcInNjcm9sbFwiLGgpKSxxLnJlbW92ZSgpLEEmJkIucmVtb3ZlKCl9KTt2YXIgdHQ9aShxKShSKTtGP3MuZmluZChcImJvZHlcIikuYXBwZW5kKHR0KTpTP2FuZ3VsYXIuZWxlbWVudChTKS5lcSgwKS5hcHBlbmQodHQpOnQuYWZ0ZXIodHQpLHRoaXMuaW5pdD1mdW5jdGlvbih0LGEpe209dCxnPWEsUi5kZWJvdW5jZVVwZGF0ZT1tLiRvcHRpb25zJiZuKG0uJG9wdGlvbnMuZGVib3VuY2UpKGUpLG0uJHBhcnNlcnMudW5zaGlmdChmdW5jdGlvbih0KXtyZXR1cm4gdz0hMCwwPT09dnx8dCYmdC5sZW5ndGg+PXY/RD4wPyhRKCksSih0KSk6Syh0KTooTShlLCExKSxRKCksaigpKSxrP3Q6dD92b2lkIG0uJHNldFZhbGlkaXR5KFwiZWRpdGFibGVcIiwhMSk6KG0uJHNldFZhbGlkaXR5KFwiZWRpdGFibGVcIiwhMCksbnVsbCl9KSxtLiRmb3JtYXR0ZXJzLnB1c2goZnVuY3Rpb24odCl7dmFyIGEsaSxuPXt9O3JldHVybiBrfHxtLiRzZXRWYWxpZGl0eShcImVkaXRhYmxlXCIsITApLEU/KG4uJG1vZGVsPXQsRShlLG4pKTooblt6Lml0ZW1OYW1lXT10LGE9ei52aWV3TWFwcGVyKGUsbiksblt6Lml0ZW1OYW1lXT12b2lkIDAsaT16LnZpZXdNYXBwZXIoZSxuKSxhIT09aT9hOnQpfSl9fV0pLmRpcmVjdGl2ZShcInVpYlR5cGVhaGVhZFwiLGZ1bmN0aW9uKCl7cmV0dXJue2NvbnRyb2xsZXI6XCJVaWJUeXBlYWhlYWRDb250cm9sbGVyXCIscmVxdWlyZTpbXCJuZ01vZGVsXCIsXCJeP25nTW9kZWxPcHRpb25zXCIsXCJ1aWJUeXBlYWhlYWRcIl0sbGluazpmdW5jdGlvbihlLHQsYSxpKXtpWzJdLmluaXQoaVswXSxpWzFdKX19fSkuZGlyZWN0aXZlKFwidWliVHlwZWFoZWFkUG9wdXBcIixbXCIkJGRlYm91bmNlXCIsZnVuY3Rpb24oZSl7cmV0dXJue3Njb3BlOnttYXRjaGVzOlwiPVwiLHF1ZXJ5OlwiPVwiLGFjdGl2ZTpcIj1cIixwb3NpdGlvbjpcIiZcIixtb3ZlSW5Qcm9ncmVzczpcIj1cIixzZWxlY3Q6XCImXCIsYXNzaWduSXNPcGVuOlwiJlwiLGRlYm91bmNlOlwiJlwifSxyZXBsYWNlOiEwLHRlbXBsYXRlVXJsOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQucG9wdXBUZW1wbGF0ZVVybHx8XCJ1aWIvdGVtcGxhdGUvdHlwZWFoZWFkL3R5cGVhaGVhZC1wb3B1cC5odG1sXCJ9LGxpbms6ZnVuY3Rpb24odCxhLGkpe3QudGVtcGxhdGVVcmw9aS50ZW1wbGF0ZVVybCx0LmlzT3Blbj1mdW5jdGlvbigpe3ZhciBlPXQubWF0Y2hlcy5sZW5ndGg+MDtyZXR1cm4gdC5hc3NpZ25Jc09wZW4oe2lzT3BlbjplfSksZX0sdC5pc0FjdGl2ZT1mdW5jdGlvbihlKXtyZXR1cm4gdC5hY3RpdmU9PT1lfSx0LnNlbGVjdEFjdGl2ZT1mdW5jdGlvbihlKXt0LmFjdGl2ZT1lfSx0LnNlbGVjdE1hdGNoPWZ1bmN0aW9uKGEsaSl7dmFyIG49dC5kZWJvdW5jZSgpO2FuZ3VsYXIuaXNOdW1iZXIobil8fGFuZ3VsYXIuaXNPYmplY3Qobik/ZShmdW5jdGlvbigpe3Quc2VsZWN0KHthY3RpdmVJZHg6YSxldnQ6aX0pfSxhbmd1bGFyLmlzTnVtYmVyKG4pP246bltcImRlZmF1bHRcIl0pOnQuc2VsZWN0KHthY3RpdmVJZHg6YSxldnQ6aX0pfX19fV0pLmRpcmVjdGl2ZShcInVpYlR5cGVhaGVhZE1hdGNoXCIsW1wiJHRlbXBsYXRlUmVxdWVzdFwiLFwiJGNvbXBpbGVcIixcIiRwYXJzZVwiLGZ1bmN0aW9uKGUsdCxhKXtyZXR1cm57c2NvcGU6e2luZGV4OlwiPVwiLG1hdGNoOlwiPVwiLHF1ZXJ5OlwiPVwifSxsaW5rOmZ1bmN0aW9uKGksbixyKXt2YXIgbz1hKHIudGVtcGxhdGVVcmwpKGkuJHBhcmVudCl8fFwidWliL3RlbXBsYXRlL3R5cGVhaGVhZC90eXBlYWhlYWQtbWF0Y2guaHRtbFwiO2UobykudGhlbihmdW5jdGlvbihlKXt2YXIgYT1hbmd1bGFyLmVsZW1lbnQoZS50cmltKCkpO24ucmVwbGFjZVdpdGgoYSksdChhKShpKX0pfX19XSkuZmlsdGVyKFwidWliVHlwZWFoZWFkSGlnaGxpZ2h0XCIsW1wiJHNjZVwiLFwiJGluamVjdG9yXCIsXCIkbG9nXCIsZnVuY3Rpb24oZSx0LGEpe2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUucmVwbGFjZSgvKFsuPyorXiRbXFxdXFxcXCgpe318LV0pL2csXCJcXFxcJDFcIil9ZnVuY3Rpb24gbihlKXtyZXR1cm4vPC4qPi9nLnRlc3QoZSl9dmFyIHI7cmV0dXJuIHI9dC5oYXMoXCIkc2FuaXRpemVcIiksZnVuY3Rpb24odCxvKXtyZXR1cm4hciYmbih0KSYmYS53YXJuKFwiVW5zYWZlIHVzZSBvZiB0eXBlYWhlYWQgcGxlYXNlIHVzZSBuZ1Nhbml0aXplXCIpLHQ9bz8oXCJcIit0KS5yZXBsYWNlKG5ldyBSZWdFeHAoaShvKSxcImdpXCIpLFwiPHN0cm9uZz4kJjwvc3Ryb25nPlwiKTp0LHJ8fCh0PWUudHJ1c3RBc0h0bWwodCkpLHR9fV0pLGFuZ3VsYXIubW9kdWxlKFwidWkuYm9vdHN0cmFwLmRlYm91bmNlXCIsW10pLmZhY3RvcnkoXCIkJGRlYm91bmNlXCIsW1wiJHRpbWVvdXRcIixmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24odCxhKXt2YXIgaTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj10aGlzLHI9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtpJiZlLmNhbmNlbChpKSxpPWUoZnVuY3Rpb24oKXt0LmFwcGx5KG4scil9LGEpfX19XSksYW5ndWxhci5tb2R1bGUoXCJ1aWIvdGVtcGxhdGUvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmh0bWxcIixbXSkucnVuKFtcIiR0ZW1wbGF0ZUNhY2hlXCIsZnVuY3Rpb24oZSl7ZS5wdXQoXCJ1aWIvdGVtcGxhdGUvZGF0ZXBpY2tlci9kYXRlcGlja2VyLmh0bWxcIiwnPGRpdiBjbGFzcz1cInVpYi1kYXRlcGlja2VyXCIgbmctc3dpdGNoPVwiZGF0ZXBpY2tlck1vZGVcIiByb2xlPVwiYXBwbGljYXRpb25cIiBuZy1rZXlkb3duPVwia2V5ZG93bigkZXZlbnQpXCI+XFxuICA8dWliLWRheXBpY2tlciBuZy1zd2l0Y2gtd2hlbj1cImRheVwiIHRhYmluZGV4PVwiMFwiPjwvdWliLWRheXBpY2tlcj5cXG4gIDx1aWItbW9udGhwaWNrZXIgbmctc3dpdGNoLXdoZW49XCJtb250aFwiIHRhYmluZGV4PVwiMFwiPjwvdWliLW1vbnRocGlja2VyPlxcbiAgPHVpYi15ZWFycGlja2VyIG5nLXN3aXRjaC13aGVuPVwieWVhclwiIHRhYmluZGV4PVwiMFwiPjwvdWliLXllYXJwaWNrZXI+XFxuPC9kaXY+XFxuJyl9XSksYW5ndWxhci5tb2R1bGUoXCJ1aWIvdGVtcGxhdGUvZGF0ZXBpY2tlci9kYXkuaHRtbFwiLFtdKS5ydW4oW1wiJHRlbXBsYXRlQ2FjaGVcIixmdW5jdGlvbihlKXtlLnB1dChcInVpYi90ZW1wbGF0ZS9kYXRlcGlja2VyL2RheS5odG1sXCIsJzx0YWJsZSBjbGFzcz1cInVpYi1kYXlwaWNrZXJcIiByb2xlPVwiZ3JpZFwiIGFyaWEtbGFiZWxsZWRieT1cInt7Ojp1bmlxdWVJZH19LXRpdGxlXCIgYXJpYS1hY3RpdmVkZXNjZW5kYW50PVwie3thY3RpdmVEYXRlSWR9fVwiPlxcbiAgPHRoZWFkPlxcbiAgICA8dHI+XFxuICAgICAgPHRoPjxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSBwdWxsLWxlZnQgdWliLWxlZnRcIiBuZy1jbGljaz1cIm1vdmUoLTEpXCIgdGFiaW5kZXg9XCItMVwiPjxpIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLWxlZnRcIj48L2k+PC9idXR0b24+PC90aD5cXG4gICAgICA8dGggY29sc3Bhbj1cInt7Ojo1ICsgc2hvd1dlZWtzfX1cIj48YnV0dG9uIGlkPVwie3s6OnVuaXF1ZUlkfX0tdGl0bGVcIiByb2xlPVwiaGVhZGluZ1wiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gdWliLXRpdGxlXCIgbmctY2xpY2s9XCJ0b2dnbGVNb2RlKClcIiBuZy1kaXNhYmxlZD1cImRhdGVwaWNrZXJNb2RlID09PSBtYXhNb2RlXCIgdGFiaW5kZXg9XCItMVwiPjxzdHJvbmc+e3t0aXRsZX19PC9zdHJvbmc+PC9idXR0b24+PC90aD5cXG4gICAgICA8dGg+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIHB1bGwtcmlnaHQgdWliLXJpZ2h0XCIgbmctY2xpY2s9XCJtb3ZlKDEpXCIgdGFiaW5kZXg9XCItMVwiPjxpIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPjwvYnV0dG9uPjwvdGg+XFxuICAgIDwvdHI+XFxuICAgIDx0cj5cXG4gICAgICA8dGggbmctaWY9XCJzaG93V2Vla3NcIiBjbGFzcz1cInRleHQtY2VudGVyXCI+PC90aD5cXG4gICAgICA8dGggbmctcmVwZWF0PVwibGFiZWwgaW4gOjpsYWJlbHMgdHJhY2sgYnkgJGluZGV4XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxzbWFsbCBhcmlhLWxhYmVsPVwie3s6OmxhYmVsLmZ1bGx9fVwiPnt7OjpsYWJlbC5hYmJyfX08L3NtYWxsPjwvdGg+XFxuICAgIDwvdHI+XFxuICA8L3RoZWFkPlxcbiAgPHRib2R5PlxcbiAgICA8dHIgY2xhc3M9XCJ1aWItd2Vla3NcIiBuZy1yZXBlYXQ9XCJyb3cgaW4gcm93cyB0cmFjayBieSAkaW5kZXhcIj5cXG4gICAgICA8dGQgbmctaWY9XCJzaG93V2Vla3NcIiBjbGFzcz1cInRleHQtY2VudGVyIGg2XCI+PGVtPnt7IHdlZWtOdW1iZXJzWyRpbmRleF0gfX08L2VtPjwvdGQ+XFxuICAgICAgPHRkIG5nLXJlcGVhdD1cImR0IGluIHJvd1wiIGNsYXNzPVwidWliLWRheSB0ZXh0LWNlbnRlclwiIHJvbGU9XCJncmlkY2VsbFwiXFxuICAgICAgICBpZD1cInt7OjpkdC51aWR9fVwiXFxuICAgICAgICBuZy1jbGFzcz1cIjo6ZHQuY3VzdG9tQ2xhc3NcIj5cXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbVwiXFxuICAgICAgICAgIHVpYi1pcy1jbGFzcz1cIlxcbiAgICAgICAgICAgIFxcJ2J0bi1pbmZvXFwnIGZvciBzZWxlY3RlZER0LFxcbiAgICAgICAgICAgIFxcJ2FjdGl2ZVxcJyBmb3IgYWN0aXZlRHRcXG4gICAgICAgICAgICBvbiBkdFwiXFxuICAgICAgICAgIG5nLWNsaWNrPVwic2VsZWN0KGR0LmRhdGUpXCJcXG4gICAgICAgICAgbmctZGlzYWJsZWQ9XCI6OmR0LmRpc2FibGVkXCJcXG4gICAgICAgICAgdGFiaW5kZXg9XCItMVwiPjxzcGFuIG5nLWNsYXNzPVwiOjp7XFwndGV4dC1tdXRlZFxcJzogZHQuc2Vjb25kYXJ5LCBcXCd0ZXh0LWluZm9cXCc6IGR0LmN1cnJlbnR9XCI+e3s6OmR0LmxhYmVsfX08L3NwYW4+PC9idXR0b24+XFxuICAgICAgPC90ZD5cXG4gICAgPC90cj5cXG4gIDwvdGJvZHk+XFxuPC90YWJsZT5cXG4nKX1dKSxhbmd1bGFyLm1vZHVsZShcInVpYi90ZW1wbGF0ZS9kYXRlcGlja2VyL21vbnRoLmh0bWxcIixbXSkucnVuKFtcIiR0ZW1wbGF0ZUNhY2hlXCIsZnVuY3Rpb24oZSl7ZS5wdXQoXCJ1aWIvdGVtcGxhdGUvZGF0ZXBpY2tlci9tb250aC5odG1sXCIsJzx0YWJsZSBjbGFzcz1cInVpYi1tb250aHBpY2tlclwiIHJvbGU9XCJncmlkXCIgYXJpYS1sYWJlbGxlZGJ5PVwie3s6OnVuaXF1ZUlkfX0tdGl0bGVcIiBhcmlhLWFjdGl2ZWRlc2NlbmRhbnQ9XCJ7e2FjdGl2ZURhdGVJZH19XCI+XFxuICA8dGhlYWQ+XFxuICAgIDx0cj5cXG4gICAgICA8dGg+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIHB1bGwtbGVmdCB1aWItbGVmdFwiIG5nLWNsaWNrPVwibW92ZSgtMSlcIiB0YWJpbmRleD1cIi0xXCI+PGkgY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLWNoZXZyb24tbGVmdFwiPjwvaT48L2J1dHRvbj48L3RoPlxcbiAgICAgIDx0aD48YnV0dG9uIGlkPVwie3s6OnVuaXF1ZUlkfX0tdGl0bGVcIiByb2xlPVwiaGVhZGluZ1wiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIGFyaWEtYXRvbWljPVwidHJ1ZVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gdWliLXRpdGxlXCIgbmctY2xpY2s9XCJ0b2dnbGVNb2RlKClcIiBuZy1kaXNhYmxlZD1cImRhdGVwaWNrZXJNb2RlID09PSBtYXhNb2RlXCIgdGFiaW5kZXg9XCItMVwiPjxzdHJvbmc+e3t0aXRsZX19PC9zdHJvbmc+PC9idXR0b24+PC90aD5cXG4gICAgICA8dGg+PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLXNtIHB1bGwtcmlnaHQgdWliLXJpZ2h0XCIgbmctY2xpY2s9XCJtb3ZlKDEpXCIgdGFiaW5kZXg9XCItMVwiPjxpIGNsYXNzPVwiZ2x5cGhpY29uIGdseXBoaWNvbi1jaGV2cm9uLXJpZ2h0XCI+PC9pPjwvYnV0dG9uPjwvdGg+XFxuICAgIDwvdHI+XFxuICA8L3RoZWFkPlxcbiAgPHRib2R5PlxcbiAgICA8dHIgY2xhc3M9XCJ1aWItbW9udGhzXCIgbmctcmVwZWF0PVwicm93IGluIHJvd3MgdHJhY2sgYnkgJGluZGV4XCI+XFxuICAgICAgPHRkIG5nLXJlcGVhdD1cImR0IGluIHJvd1wiIGNsYXNzPVwidWliLW1vbnRoIHRleHQtY2VudGVyXCIgcm9sZT1cImdyaWRjZWxsXCJcXG4gICAgICAgIGlkPVwie3s6OmR0LnVpZH19XCJcXG4gICAgICAgIG5nLWNsYXNzPVwiOjpkdC5jdXN0b21DbGFzc1wiPlxcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxcbiAgICAgICAgICB1aWItaXMtY2xhc3M9XCJcXG4gICAgICAgICAgICBcXCdidG4taW5mb1xcJyBmb3Igc2VsZWN0ZWREdCxcXG4gICAgICAgICAgICBcXCdhY3RpdmVcXCcgZm9yIGFjdGl2ZUR0XFxuICAgICAgICAgICAgb24gZHRcIlxcbiAgICAgICAgICBuZy1jbGljaz1cInNlbGVjdChkdC5kYXRlKVwiXFxuICAgICAgICAgIG5nLWRpc2FibGVkPVwiOjpkdC5kaXNhYmxlZFwiXFxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj48c3BhbiBuZy1jbGFzcz1cIjo6e1xcJ3RleHQtaW5mb1xcJzogZHQuY3VycmVudH1cIj57ezo6ZHQubGFiZWx9fTwvc3Bhbj48L2J1dHRvbj5cXG4gICAgICA8L3RkPlxcbiAgICA8L3RyPlxcbiAgPC90Ym9keT5cXG48L3RhYmxlPlxcbicpfV0pLGFuZ3VsYXIubW9kdWxlKFwidWliL3RlbXBsYXRlL2RhdGVwaWNrZXIvcG9wdXAuaHRtbFwiLFtdKS5ydW4oW1wiJHRlbXBsYXRlQ2FjaGVcIixmdW5jdGlvbihlKXtlLnB1dChcInVpYi90ZW1wbGF0ZS9kYXRlcGlja2VyL3BvcHVwLmh0bWxcIiwnPGRpdj5cXG4gIDx1bCBjbGFzcz1cInVpYi1kYXRlcGlja2VyLXBvcHVwIGRyb3Bkb3duLW1lbnUgdWliLXBvc2l0aW9uLW1lYXN1cmVcIiBkcm9wZG93bi1uZXN0ZWQgbmctaWY9XCJpc09wZW5cIiBuZy1rZXlkb3duPVwia2V5ZG93bigkZXZlbnQpXCIgbmctY2xpY2s9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cXG4gICAgPGxpIG5nLXRyYW5zY2x1ZGU+PC9saT5cXG4gICAgPGxpIG5nLWlmPVwic2hvd0J1dHRvbkJhclwiIGNsYXNzPVwidWliLWJ1dHRvbi1iYXJcIj5cXG4gICAgICA8c3BhbiBjbGFzcz1cImJ0bi1ncm91cCBwdWxsLWxlZnRcIj5cXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taW5mbyB1aWItZGF0ZXBpY2tlci1jdXJyZW50XCIgbmctY2xpY2s9XCJzZWxlY3QoXFwndG9kYXlcXCcsICRldmVudClcIiBuZy1kaXNhYmxlZD1cImlzRGlzYWJsZWQoXFwndG9kYXlcXCcpXCI+e3sgZ2V0VGV4dChcXCdjdXJyZW50XFwnKSB9fTwvYnV0dG9uPlxcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1kYW5nZXIgdWliLWNsZWFyXCIgbmctY2xpY2s9XCJzZWxlY3QobnVsbCwgJGV2ZW50KVwiPnt7IGdldFRleHQoXFwnY2xlYXJcXCcpIH19PC9idXR0b24+XFxuICAgICAgPC9zcGFuPlxcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tc3VjY2VzcyBwdWxsLXJpZ2h0IHVpYi1jbG9zZVwiIG5nLWNsaWNrPVwiY2xvc2UoJGV2ZW50KVwiPnt7IGdldFRleHQoXFwnY2xvc2VcXCcpIH19PC9idXR0b24+XFxuICAgIDwvbGk+XFxuICA8L3VsPlxcbjwvZGl2PlxcbicpfV0pLGFuZ3VsYXIubW9kdWxlKFwidWliL3RlbXBsYXRlL2RhdGVwaWNrZXIveWVhci5odG1sXCIsW10pLnJ1bihbXCIkdGVtcGxhdGVDYWNoZVwiLGZ1bmN0aW9uKGUpe2UucHV0KFwidWliL3RlbXBsYXRlL2RhdGVwaWNrZXIveWVhci5odG1sXCIsJzx0YWJsZSBjbGFzcz1cInVpYi15ZWFycGlja2VyXCIgcm9sZT1cImdyaWRcIiBhcmlhLWxhYmVsbGVkYnk9XCJ7ezo6dW5pcXVlSWR9fS10aXRsZVwiIGFyaWEtYWN0aXZlZGVzY2VuZGFudD1cInt7YWN0aXZlRGF0ZUlkfX1cIj5cXG4gIDx0aGVhZD5cXG4gICAgPHRyPlxcbiAgICAgIDx0aD48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gcHVsbC1sZWZ0IHVpYi1sZWZ0XCIgbmctY2xpY2s9XCJtb3ZlKC0xKVwiIHRhYmluZGV4PVwiLTFcIj48aSBjbGFzcz1cImdseXBoaWNvbiBnbHlwaGljb24tY2hldnJvbi1sZWZ0XCI+PC9pPjwvYnV0dG9uPjwvdGg+XFxuICAgICAgPHRoIGNvbHNwYW49XCJ7ezo6Y29sdW1ucyAtIDJ9fVwiPjxidXR0b24gaWQ9XCJ7ezo6dW5pcXVlSWR9fS10aXRsZVwiIHJvbGU9XCJoZWFkaW5nXCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1zbSB1aWItdGl0bGVcIiBuZy1jbGljaz1cInRvZ2dsZU1vZGUoKVwiIG5nLWRpc2FibGVkPVwiZGF0ZXBpY2tlck1vZGUgPT09IG1heE1vZGVcIiB0YWJpbmRleD1cIi0xXCI+PHN0cm9uZz57e3RpdGxlfX08L3N0cm9uZz48L2J1dHRvbj48L3RoPlxcbiAgICAgIDx0aD48YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tc20gcHVsbC1yaWdodCB1aWItcmlnaHRcIiBuZy1jbGljaz1cIm1vdmUoMSlcIiB0YWJpbmRleD1cIi0xXCI+PGkgY2xhc3M9XCJnbHlwaGljb24gZ2x5cGhpY29uLWNoZXZyb24tcmlnaHRcIj48L2k+PC9idXR0b24+PC90aD5cXG4gICAgPC90cj5cXG4gIDwvdGhlYWQ+XFxuICA8dGJvZHk+XFxuICAgIDx0ciBjbGFzcz1cInVpYi15ZWFyc1wiIG5nLXJlcGVhdD1cInJvdyBpbiByb3dzIHRyYWNrIGJ5ICRpbmRleFwiPlxcbiAgICAgIDx0ZCBuZy1yZXBlYXQ9XCJkdCBpbiByb3dcIiBjbGFzcz1cInVpYi15ZWFyIHRleHQtY2VudGVyXCIgcm9sZT1cImdyaWRjZWxsXCJcXG4gICAgICAgIGlkPVwie3s6OmR0LnVpZH19XCJcXG4gICAgICAgIG5nLWNsYXNzPVwiOjpkdC5jdXN0b21DbGFzc1wiPlxcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxcbiAgICAgICAgICB1aWItaXMtY2xhc3M9XCJcXG4gICAgICAgICAgICBcXCdidG4taW5mb1xcJyBmb3Igc2VsZWN0ZWREdCxcXG4gICAgICAgICAgICBcXCdhY3RpdmVcXCcgZm9yIGFjdGl2ZUR0XFxuICAgICAgICAgICAgb24gZHRcIlxcbiAgICAgICAgICBuZy1jbGljaz1cInNlbGVjdChkdC5kYXRlKVwiXFxuICAgICAgICAgIG5nLWRpc2FibGVkPVwiOjpkdC5kaXNhYmxlZFwiXFxuICAgICAgICAgIHRhYmluZGV4PVwiLTFcIj48c3BhbiBuZy1jbGFzcz1cIjo6e1xcJ3RleHQtaW5mb1xcJzogZHQuY3VycmVudH1cIj57ezo6ZHQubGFiZWx9fTwvc3Bhbj48L2J1dHRvbj5cXG4gICAgICA8L3RkPlxcbiAgICA8L3RyPlxcbiAgPC90Ym9keT5cXG48L3RhYmxlPlxcbicpfV0pLGFuZ3VsYXIubW9kdWxlKFwidWliL3RlbXBsYXRlL3R5cGVhaGVhZC90eXBlYWhlYWQtbWF0Y2guaHRtbFwiLFtdKS5ydW4oW1wiJHRlbXBsYXRlQ2FjaGVcIixmdW5jdGlvbihlKXtlLnB1dChcInVpYi90ZW1wbGF0ZS90eXBlYWhlYWQvdHlwZWFoZWFkLW1hdGNoLmh0bWxcIiwnPGEgaHJlZlxcbiAgIHRhYmluZGV4PVwiLTFcIlxcbiAgIG5nLWJpbmQtaHRtbD1cIm1hdGNoLmxhYmVsIHwgdWliVHlwZWFoZWFkSGlnaGxpZ2h0OnF1ZXJ5XCJcXG4gICBuZy1hdHRyLXRpdGxlPVwie3ttYXRjaC5sYWJlbH19XCI+PC9hPlxcbicpfV0pLGFuZ3VsYXIubW9kdWxlKFwidWliL3RlbXBsYXRlL3R5cGVhaGVhZC90eXBlYWhlYWQtcG9wdXAuaHRtbFwiLFtdKS5ydW4oW1wiJHRlbXBsYXRlQ2FjaGVcIixmdW5jdGlvbihlKXtlLnB1dChcInVpYi90ZW1wbGF0ZS90eXBlYWhlYWQvdHlwZWFoZWFkLXBvcHVwLmh0bWxcIiwnPHVsIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIG5nLXNob3c9XCJpc09wZW4oKSAmJiAhbW92ZUluUHJvZ3Jlc3NcIiBuZy1zdHlsZT1cInt0b3A6IHBvc2l0aW9uKCkudG9wK1xcJ3B4XFwnLCBsZWZ0OiBwb3NpdGlvbigpLmxlZnQrXFwncHhcXCd9XCIgcm9sZT1cImxpc3Rib3hcIiBhcmlhLWhpZGRlbj1cInt7IWlzT3BlbigpfX1cIj5cXG4gICAgPGxpIG5nLXJlcGVhdD1cIm1hdGNoIGluIG1hdGNoZXMgdHJhY2sgYnkgJGluZGV4XCIgbmctY2xhc3M9XCJ7YWN0aXZlOiBpc0FjdGl2ZSgkaW5kZXgpIH1cIiBuZy1tb3VzZWVudGVyPVwic2VsZWN0QWN0aXZlKCRpbmRleClcIiBuZy1jbGljaz1cInNlbGVjdE1hdGNoKCRpbmRleCwgJGV2ZW50KVwiIHJvbGU9XCJvcHRpb25cIiBpZD1cInt7OjptYXRjaC5pZH19XCI+XFxuICAgICAgICA8ZGl2IHVpYi10eXBlYWhlYWQtbWF0Y2ggaW5kZXg9XCIkaW5kZXhcIiBtYXRjaD1cIm1hdGNoXCIgcXVlcnk9XCJxdWVyeVwiIHRlbXBsYXRlLXVybD1cInRlbXBsYXRlVXJsXCI+PC9kaXY+XFxuICAgIDwvbGk+XFxuPC91bD5cXG4nKX1dKSxhbmd1bGFyLm1vZHVsZShcInVpLmJvb3RzdHJhcC5kYXRlcGlja2VyXCIpLnJ1bihmdW5jdGlvbigpeyFhbmd1bGFyLiQkY3NwKCkubm9JbmxpbmVTdHlsZSYmIWFuZ3VsYXIuJCR1aWJEYXRlcGlja2VyQ3NzJiZhbmd1bGFyLmVsZW1lbnQoZG9jdW1lbnQpLmZpbmQoXCJoZWFkXCIpLnByZXBlbmQoJzxzdHlsZSB0eXBlPVwidGV4dC9jc3NcIj4udWliLWRhdGVwaWNrZXIgLnVpYi10aXRsZXt3aWR0aDoxMDAlO30udWliLWRheSBidXR0b24sLnVpYi1tb250aCBidXR0b24sLnVpYi15ZWFyIGJ1dHRvbnttaW4td2lkdGg6MTAwJTt9LnVpYi1kYXRlcGlja2VyLXBvcHVwLmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpibG9jaztmbG9hdDpub25lO21hcmdpbjowO30udWliLWJ1dHRvbi1iYXJ7cGFkZGluZzoxMHB4IDlweCAycHg7fS51aWItbGVmdCwudWliLXJpZ2h0e3dpZHRoOjEwMCV9PC9zdHlsZT4nKSxhbmd1bGFyLiQkdWliRGF0ZXBpY2tlckNzcz0hMH0pLGFuZ3VsYXIubW9kdWxlKFwidWkuYm9vdHN0cmFwLnBvc2l0aW9uXCIpLnJ1bihmdW5jdGlvbigpeyFhbmd1bGFyLiQkY3NwKCkubm9JbmxpbmVTdHlsZSYmIWFuZ3VsYXIuJCR1aWJQb3NpdGlvbkNzcyYmYW5ndWxhci5lbGVtZW50KGRvY3VtZW50KS5maW5kKFwiaGVhZFwiKS5wcmVwZW5kKCc8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+LnVpYi1wb3NpdGlvbi1tZWFzdXJle2Rpc3BsYXk6YmxvY2sgIWltcG9ydGFudDt2aXNpYmlsaXR5OmhpZGRlbiAhaW1wb3J0YW50O3Bvc2l0aW9uOmFic29sdXRlICFpbXBvcnRhbnQ7dG9wOi05OTk5cHggIWltcG9ydGFudDtsZWZ0Oi05OTk5cHggIWltcG9ydGFudDt9LnVpYi1wb3NpdGlvbi1zY3JvbGxiYXItbWVhc3VyZXtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTk5OTlweDt3aWR0aDo1MHB4O2hlaWdodDo1MHB4O292ZXJmbG93OnNjcm9sbDt9PC9zdHlsZT4nKSxhbmd1bGFyLiQkdWliUG9zaXRpb25Dc3M9ITB9KSxhbmd1bGFyLm1vZHVsZShcInVpLmJvb3RzdHJhcC50eXBlYWhlYWRcIikucnVuKGZ1bmN0aW9uKCl7IWFuZ3VsYXIuJCRjc3AoKS5ub0lubGluZVN0eWxlJiYhYW5ndWxhci4kJHVpYlR5cGVhaGVhZENzcyYmYW5ndWxhci5lbGVtZW50KGRvY3VtZW50KS5maW5kKFwiaGVhZFwiKS5wcmVwZW5kKCc8c3R5bGUgdHlwZT1cInRleHQvY3NzXCI+W3VpYi10eXBlYWhlYWQtcG9wdXBdLmRyb3Bkb3duLW1lbnV7ZGlzcGxheTpibG9jazt9PC9zdHlsZT4nKSxhbmd1bGFyLiQkdWliVHlwZWFoZWFkQ3NzPSEwfSk7Il19"}