summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2018-04-07 12:39:11 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2018-05-16 09:50:21 +0200
commit6ada8254c9da63638f3b7e0cceaacf4254f43916 (patch)
treef12b324fe26db57dbbebe1c1e9491409696c164a
parent85f5ae9264c6cf8dcdcd061f0e5d8008f745a596 (diff)
downloadnextcloud-server-6ada8254c9da63638f3b7e0cceaacf4254f43916.tar.gz
nextcloud-server-6ada8254c9da63638f3b7e0cceaacf4254f43916.zip
Added language support in users list
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r--core/css/inputs.scss7
-rw-r--r--lib/private/L10N/Factory.php81
-rw-r--r--lib/private/Settings/Personal/PersonalInfo.php72
-rw-r--r--settings/css/settings.scss6
-rw-r--r--settings/js/main.js51
-rw-r--r--settings/package.json2
-rw-r--r--settings/src/components/userList.vue3
-rw-r--r--settings/src/components/userList/userRow.vue63
-rw-r--r--settings/src/store/users.js7
-rw-r--r--settings/src/views/Users.vue21
-rw-r--r--settings/users.php6
11 files changed, 209 insertions, 110 deletions
diff --git a/core/css/inputs.scss b/core/css/inputs.scss
index 29b131ef015..721cb89f8c0 100644
--- a/core/css/inputs.scss
+++ b/core/css/inputs.scss
@@ -718,6 +718,8 @@ input {
border: 1px solid nc-darken($color-main-background, 14%);
background: $color-main-background;
z-index: 50;
+ max-height: 250px;
+ overflow-y: auto;
.multiselect__content {
width: 100%;
padding: 5px 0;
@@ -750,7 +752,7 @@ input {
color: nc-lighten($color-main-text, 33%);
width: 100%;
/* selected checkmark icon */
- &::before {
+ &:not(.multiselect__option--disabled)::before {
content: ' ';
background-image: url('../img/actions/checkmark.svg?v=1');
background-repeat: no-repeat;
@@ -762,6 +764,9 @@ input {
margin-right: 5px;
visibility: hidden;
}
+ &.multiselect__option--disabled {
+ background-color: nc-darken($color-main-background, 8%);
+ }
/* add the prop tag-placeholder="create" to add the +
* icon on top of an unknown-and-ready-to-be-created entry
*/
diff --git a/lib/private/L10N/Factory.php b/lib/private/L10N/Factory.php
index a7ffb401b7b..759340a63c3 100644
--- a/lib/private/L10N/Factory.php
+++ b/lib/private/L10N/Factory.php
@@ -59,6 +59,11 @@ class Factory implements IFactory {
*/
protected $pluralFunctions = [];
+ const COMMON_LANGUAGE_CODES = [
+ 'en', 'es', 'fr', 'de', 'de_DE', 'ja', 'ar', 'ru', 'nl', 'it',
+ 'pt_BR', 'pt_PT', 'da', 'fi_FI', 'nb_NO', 'sv', 'tr', 'zh_CN', 'ko'
+ ];
+
/** @var IConfig */
protected $config;
@@ -137,9 +142,9 @@ class Factory implements IFactory {
*
* @link https://github.com/owncloud/core/issues/21955
*/
- if($this->config->getSystemValue('installed', false)) {
+ if ($this->config->getSystemValue('installed', false)) {
$userId = !is_null($this->userSession->getUser()) ? $this->userSession->getUser()->getUID() : null;
- if(!is_null($userId)) {
+ if (!is_null($userId)) {
$userLang = $this->config->getUserValue($userId, 'core', 'lang', null);
} else {
$userLang = null;
@@ -310,7 +315,7 @@ class Factory implements IFactory {
*/
private function isSubDirectory($sub, $parent) {
// Check whether $sub contains no ".."
- if(strpos($sub, '..') !== false) {
+ if (strpos($sub, '..') !== false) {
return false;
}
@@ -441,4 +446,74 @@ class Factory implements IFactory {
return $function;
}
}
+
+ /**
+ * returns the common language and other languages in an
+ * associative array
+ *
+ * @return array
+ */
+ public function getLanguages() {
+ $forceLanguage = $this->config->getSystemValue('force_language', false);
+ if ($forceLanguage !== false) {
+ return [];
+ }
+
+ $languageCodes = $this->findAvailableLanguages();
+
+ $commonLanguages = [];
+ $languages = [];
+
+ foreach($languageCodes as $lang) {
+ $l = $this->get('lib', $lang);
+ // TRANSLATORS this is the language name for the language switcher in the personal settings and should be the localized version
+ $potentialName = (string) $l->t('__language_name__');
+ if ($l->getLanguageCode() === $lang && $potentialName[0] !== '_') {//first check if the language name is in the translation file
+ $ln = array(
+ 'code' => $lang,
+ 'name' => $potentialName
+ );
+ } else if ($lang === 'en') {
+ $ln = array(
+ 'code' => $lang,
+ 'name' => 'English (US)'
+ );
+ } else {//fallback to language code
+ $ln = array(
+ 'code' => $lang,
+ 'name' => $lang
+ );
+ }
+
+ // put appropriate languages into appropriate arrays, to print them sorted
+ // common languages -> divider -> other languages
+ if (in_array($lang, self::COMMON_LANGUAGE_CODES)) {
+ $commonLanguages[array_search($lang, self::COMMON_LANGUAGE_CODES)] = $ln;
+ } else {
+ $languages[] = $ln;
+ }
+ }
+
+ ksort($commonLanguages);
+
+ // sort now by displayed language not the iso-code
+ usort( $languages, function ($a, $b) {
+ if ($a['code'] === $a['name'] && $b['code'] !== $b['name']) {
+ // If a doesn't have a name, but b does, list b before a
+ return 1;
+ }
+ if ($a['code'] !== $a['name'] && $b['code'] === $b['name']) {
+ // If a does have a name, but b doesn't, list a before b
+ return -1;
+ }
+ // Otherwise compare the names
+ return strcmp($a['name'], $b['name']);
+ });
+
+ return [
+ // reset indexes
+ 'commonlanguages' => array_values($commonLanguages),
+ 'languages' => $languages
+ ];
+ }
}
diff --git a/lib/private/Settings/Personal/PersonalInfo.php b/lib/private/Settings/Personal/PersonalInfo.php
index 813d06195b5..305e3fb0a4d 100644
--- a/lib/private/Settings/Personal/PersonalInfo.php
+++ b/lib/private/Settings/Personal/PersonalInfo.php
@@ -39,6 +39,7 @@ use OCP\L10N\IFactory;
use OCP\Settings\ISettings;
class PersonalInfo implements ISettings {
+
/** @var IConfig */
private $config;
/** @var IUserManager */
@@ -51,12 +52,6 @@ class PersonalInfo implements ISettings {
private $appManager;
/** @var IFactory */
private $l10nFactory;
-
- const COMMON_LANGUAGE_CODES = [
- 'en', 'es', 'fr', 'de', 'de_DE', 'ja', 'ar', 'ru', 'nl', 'it',
- 'pt_BR', 'pt_PT', 'da', 'fi_FI', 'nb_NO', 'sv', 'tr', 'zh_CN', 'ko'
- ];
-
/** @var IL10N */
private $l;
@@ -198,64 +193,29 @@ class PersonalInfo implements ISettings {
$uid = $user->getUID();
- $userLang = $this->config->getUserValue($uid, 'core', 'lang', $this->l10nFactory->findLanguage());
- $languageCodes = $this->l10nFactory->findAvailableLanguages();
-
- $commonLanguages = [];
- $languages = [];
+ $userConfLang = $this->config->getUserValue($uid, 'core', 'lang', $this->l10nFactory->findLanguage());
+ $languages = $this->l10nFactory->getLanguages();
- foreach($languageCodes as $lang) {
- $l = \OC::$server->getL10N('lib', $lang);
- // TRANSLATORS this is the language name for the language switcher in the personal settings and should be the localized version
- $potentialName = (string) $l->t('__language_name__');
- if($l->getLanguageCode() === $lang && $potentialName[0] !== '_') {//first check if the language name is in the translation file
- $ln = array('code' => $lang, 'name' => $potentialName);
- } elseif ($lang === 'en') {
- $ln = ['code' => $lang, 'name' => 'English (US)'];
- }else{//fallback to language code
- $ln=array('code'=>$lang, 'name'=>$lang);
- }
-
- // put appropriate languages into appropriate arrays, to print them sorted
- // used language -> common languages -> divider -> other languages
- if ($lang === $userLang) {
- $userLang = $ln;
- } elseif (in_array($lang, self::COMMON_LANGUAGE_CODES)) {
- $commonLanguages[array_search($lang, self::COMMON_LANGUAGE_CODES)]=$ln;
- } else {
- $languages[]=$ln;
- }
+ // associate the user language with the proper array
+ $userLangIndex = array_search($userConfLang, array_column($languages['commonlanguages'], 'code'));
+ $userLang = $languages['commonlanguages'][$userLangIndex];
+ // search in the other languages
+ if ($userLangIndex === false) {
+ $userLangIndex = array_search($userConfLang, array_column($languages['languages'], 'code'));
+ $userLang = $languages['languages'][$userLangIndex];
}
-
// if user language is not available but set somehow: show the actual code as name
if (!is_array($userLang)) {
$userLang = [
- 'code' => $userLang,
- 'name' => $userLang,
+ 'code' => $userConfLang,
+ 'name' => $userConfLang,
];
}
- ksort($commonLanguages);
-
- // sort now by displayed language not the iso-code
- usort( $languages, function ($a, $b) {
- if ($a['code'] === $a['name'] && $b['code'] !== $b['name']) {
- // If a doesn't have a name, but b does, list b before a
- return 1;
- }
- if ($a['code'] !== $a['name'] && $b['code'] === $b['name']) {
- // If a does have a name, but b doesn't, list a before b
- return -1;
- }
- // Otherwise compare the names
- return strcmp($a['name'], $b['name']);
- });
-
- return [
- 'activelanguage' => $userLang,
- 'commonlanguages' => $commonLanguages,
- 'languages' => $languages
- ];
+ return array_merge(
+ array('activelanguage' => $userLang),
+ $languages
+ );
}
/**
diff --git a/settings/css/settings.scss b/settings/css/settings.scss
index e97ad55a5b7..0b6c555531c 100644
--- a/settings/css/settings.scss
+++ b/settings/css/settings.scss
@@ -1305,6 +1305,12 @@ doesnotexist:-o-prefocus, .strengthify-wrapper {
.quota {
width: 170px;
}
+ .languages {
+ width: 200px;
+ .multiselect {
+ width: 100%;
+ }
+ }
.storageLocation {
width: 250px;
}
diff --git a/settings/js/main.js b/settings/js/main.js
index ae3d2390a28..864476c219f 100644
--- a/settings/js/main.js
+++ b/settings/js/main.js
@@ -114,7 +114,7 @@ eval("//\n//\n//\n//\n\n/* harmony default export */ __webpack_exports__[\"a\"]
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_appNavigation__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_userList__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_localstorage__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_localstorage___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_vue_localstorage__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_2_vue__[\"a\" /* default */].use(__WEBPACK_IMPORTED_MODULE_3_vue_localstorage___default.a);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'Users',\n\tcomponents: {\n\t\tappNavigation: __WEBPACK_IMPORTED_MODULE_0__components_appNavigation__[\"a\" /* default */],\n\t\tuserList: __WEBPACK_IMPORTED_MODULE_1__components_userList__[\"a\" /* default */]\n\t},\n\tbeforeMount: function beforeMount() {\n\t\tthis.$store.commit('initGroups', {\n\t\t\tgroups: this.$store.getters.getServerData.groups,\n\t\t\torderBy: this.$store.getters.getServerData.sortGroups,\n\t\t\tuserCount: this.$store.getters.getServerData.userCount\n\t\t});\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength');\n\t},\n\tdata: function data() {\n\t\treturn {\n\t\t\tshowConfig: {\n\t\t\t\tshowStoragePath: false,\n\t\t\t\tshowUserBackend: false,\n\t\t\t\tshowLastLogin: false,\n\t\t\t\tshowNewUserForm: false\n\t\t\t}\n\t\t};\n\t},\n\n\tmethods: {\n\t\tgetLocalstorage: function getLocalstorage(key) {\n\t\t\t// force initialization\n\t\t\tthis.showConfig[key] = this.$localStorage.get(key) === 'true';\n\t\t\treturn this.showConfig[key];\n\t\t},\n\t\tsetLocalStorage: function setLocalStorage(key, status) {\n\t\t\tthis.showConfig[key] = status;\n\t\t\tthis.$localStorage.set(key, status);\n\t\t\treturn status;\n\t\t}\n\t},\n\tcomputed: {\n\t\troute: function route() {\n\t\t\treturn this.$store.getters.getRoute;\n\t\t},\n\t\tusers: function users() {\n\t\t\treturn this.$store.getters.getUsers;\n\t\t},\n\t\tloading: function loading() {\n\t\t\treturn Object.keys(this.users).length === 0;\n\t\t},\n\t\tusersOffset: function usersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit: function usersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\n\t\tshowLastLogin: {\n\t\t\tget: function get() {\n\t\t\t\treturn this.getLocalstorage('showLastLogin');\n\t\t\t},\n\t\t\tset: function set(status) {\n\t\t\t\tthis.setLocalStorage('showLastLogin', status);\n\t\t\t}\n\t\t},\n\t\tshowUserBackend: {\n\t\t\tget: function get() {\n\t\t\t\treturn this.getLocalstorage('showUserBackend');\n\t\t\t},\n\t\t\tset: function set(status) {\n\t\t\t\tthis.setLocalStorage('showUserBackend', status);\n\t\t\t}\n\t\t},\n\t\tshowStoragePath: {\n\t\t\tget: function get() {\n\t\t\t\treturn this.getLocalstorage('showStoragePath');\n\t\t\t},\n\t\t\tset: function set(status) {\n\t\t\t\tthis.setLocalStorage('showStoragePath', status);\n\t\t\t}\n\t\t},\n\t\tuserCount: function userCount() {\n\t\t\treturn this.$store.getters.getUserCount;\n\t\t},\n\t\tmenu: function menu() {\n\t\t\tvar _this = this;\n\n\t\t\tvar self = this;\n\t\t\t// Data provided php side\n\t\t\tvar groups = this.$store.getters.getGroups;\n\t\t\tgroups = Array.isArray(groups) ? groups : [];\n\n\t\t\t// Map groups\n\t\t\tgroups = groups.map(function (group) {\n\t\t\t\tvar item = {};\n\t\t\t\titem.id = group.id.replace(' ', '_');\n\t\t\t\titem.classes = [];\n\t\t\t\titem.href = '#group' + group.id.replace(' ', '_');\n\t\t\t\titem.text = group.name;\n\t\t\t\titem.utils = { counter: group.usercount };\n\t\t\t\treturn item;\n\t\t\t});\n\n\t\t\t// Adjust data\n\t\t\tvar adminGroup = groups.find(function (group) {\n\t\t\t\treturn group.id == 'admin';\n\t\t\t});\n\t\t\tvar disabledGroup = groups.find(function (group) {\n\t\t\t\treturn group.id == '_disabled';\n\t\t\t});\n\t\t\tif (adminGroup.text) {\n\t\t\t\tadminGroup.text = t('settings', 'Admins');\n\t\t\t} // rename admin group\n\t\t\tif (disabledGroup.text) {\n\t\t\t\tdisabledGroup.text = t('settings', 'Disabled users'); // rename disabled group\n\t\t\t\tif (disabledGroup.utils.counter === 0) {\n\t\t\t\t\tgroups.splice(groups.findIndex(function (group) {\n\t\t\t\t\t\treturn group.id == '_disabled';\n\t\t\t\t\t}), 1); // remove disabled if empty\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add everyone group\n\t\t\tgroups.unshift({\n\t\t\t\tid: '_everyone',\n\t\t\t\tclasses: [],\n\t\t\t\thref: '#group_everyone',\n\t\t\t\ttext: t('settings', 'Everyone'),\n\t\t\t\tutils: { counter: this.userCount }\n\t\t\t});\n\n\t\t\t// Set current group as active\n\t\t\tvar activeGroup = groups.findIndex(function (group) {\n\t\t\t\treturn group.href === _this.$route.hash;\n\t\t\t});\n\t\t\tif (activeGroup >= 0) {\n\t\t\t\tgroups[activeGroup].classes.push('active');\n\t\t\t} else {\n\t\t\t\tgroups[0].classes.push('active');\n\t\t\t}\n\n\t\t\t// Return\n\t\t\treturn {\n\t\t\t\tid: 'usergrouplist',\n\t\t\t\tnew: {\n\t\t\t\t\tid: 'new-user-button',\n\t\t\t\t\ttext: t('settings', 'New user'),\n\t\t\t\t\ticon: 'icon-add',\n\t\t\t\t\taction: function action() {\n\t\t\t\t\t\tself.showConfig.showNewUserForm = !self.showConfig.showNewUserForm;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\titems: groups\n\t\t\t};\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3ZpZXdzL1VzZXJzLnZ1ZT8wNzZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtPQUVBOztBQUVBO0FBRUE7QUFIQTtxQ0FJQTs7NkNBRUE7OENBQ0E7Z0RBRUE7QUFKQTt1QkFLQTtBQUNBO3VCQUNBOzs7cUJBR0E7cUJBQ0E7bUJBQ0E7cUJBR0E7QUFOQTtBQURBO0FBUUE7OztpREFFQTtBQUNBOzBEQUNBOzBCQUNBO0FBQ0E7eURBQ0E7MEJBQ0E7K0JBQ0E7VUFDQTtBQUVBO0FBWEE7OzBCQWFBOzhCQUNBO0FBQ0E7MEJBQ0E7OEJBQ0E7QUFDQTs4QkFDQTs2Q0FDQTtBQUNBO3NDQUNBOzhCQUNBO0FBQ0E7b0NBQ0E7OEJBQ0E7QUFDQTs7Ozs7QUFFQTs2QkFDQTswQ0FDQTtBQUVBO0FBTEE7Ozs7QUFPQTs2QkFDQTs0Q0FDQTtBQUVBO0FBTEE7Ozs7QUFPQTs2QkFDQTs0Q0FDQTtBQUVBO0FBTEE7a0NBTUE7OEJBQ0E7QUFDQTs7QUFDQTs7Y0FDQTtBQUNBO29DQUNBOzZDQUVBOztBQUNBO3dDQUNBO2VBQ0E7b0NBQ0E7bUJBQ0E7aURBQ0E7c0JBQ0E7a0NBQ0E7V0FDQTtBQUVBOztBQUNBOzt1QkFDQTs7O3VCQUNBOzt3QkFDQTs7S0FDQTsyQkFDQTswREFDQTs7OztZQUNBLENBQ0E7QUFDQTtBQUVBOztBQUNBOztRQUVBO2FBQ0E7VUFDQTt3QkFDQTsyQkFHQTtBQVBBOztBQVFBOzt1Q0FDQTs7eUJBQ0E7cUNBQ0E7VUFDQTsyQkFDQTtBQUVBOztBQUNBOztRQUVBOztTQUVBO3lCQUNBO1dBQ0E7OztBQUVBO0FBTEE7V0FPQTtBQVRBO0FBV0E7QUEvRkE7QUFwQ0EiLCJmaWxlIjoiNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cblx0PGRpdiBpZD1cImFwcFwiPlxuXHRcdDxhcHAtbmF2aWdhdGlvbiA6bWVudT1cIm1lbnVcIj5cblx0XHRcdDx0ZW1wbGF0ZSBzbG90PVwic2V0dGluZ3MtY29udGVudFwiPlxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInNob3dMYXN0TG9naW5cIiBjbGFzcz1cImNoZWNrYm94XCJcblx0XHRcdFx0XHRcdCAgIDpjaGVja2VkPVwic2hvd0xhc3RMb2dpblwiIHYtbW9kZWw9XCJzaG93TGFzdExvZ2luXCI+XG5cdFx0XHRcdFx0PGxhYmVsIGZvcj1cInNob3dMYXN0TG9naW5cIj57e3QoJ3NldHRpbmdzJywgJ1Nob3cgbGFzdCBsb2dpbicpfX08L2xhYmVsPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJzaG93VXNlckJhY2tlbmRcIiBjbGFzcz1cImNoZWNrYm94XCJcblx0XHRcdFx0XHRcdCAgIDpjaGVja2VkPVwic2hvd1VzZXJCYWNrZW5kXCIgdi1tb2RlbD1cInNob3dVc2VyQmFja2VuZFwiPlxuXHRcdFx0XHRcdDxsYWJlbCBmb3I9XCJzaG93VXNlckJhY2tlbmRcIj57e3QoJ3NldHRpbmdzJywgJ1Nob3cgdXNlciBiYWNrZW5kJyl9fTwvbGFiZWw+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInNob3dTdG9yYWdlUGF0aFwiIGNsYXNzPVwiY2hlY2tib3hcIlxuXHRcdFx0XHRcdFx0ICAgOmNoZWNrZWQ9XCJzaG93U3RvcmFnZVBhdGhcIiB2LW1vZGVsPVwic2hvd1N0b3JhZ2VQYXRoXCI+XG5cdFx0XHRcdFx0PGxhYmVsIGZvcj1cInNob3dTdG9yYWdlUGF0aFwiPnt7dCgnc2V0dGluZ3MnLCAnU2hvdyBzdG9yYWdlIHBhdGgnKX19PC9sYWJlbD5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L3RlbXBsYXRlPlxuXHRcdDwvYXBwLW5hdmlnYXRpb24+XG5cdFx0PHVzZXItbGlzdCA6dXNlcnM9XCJ1c2Vyc1wiIDpzaG93Q29uZmlnPVwic2hvd0NvbmZpZ1wiIC8+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBhcHBOYXZpZ2F0aW9uIGZyb20gJy4uL2NvbXBvbmVudHMvYXBwTmF2aWdhdGlvbic7XG5pbXBvcnQgdXNlckxpc3QgZnJvbSAnLi4vY29tcG9uZW50cy91c2VyTGlzdCc7XG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSc7XG5pbXBvcnQgVnVlTG9jYWxTdG9yYWdlIGZyb20gJ3Z1ZS1sb2NhbHN0b3JhZ2UnXG5WdWUudXNlKFZ1ZUxvY2FsU3RvcmFnZSlcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnVXNlcnMnLFxuXHRjb21wb25lbnRzOiB7XG5cdFx0YXBwTmF2aWdhdGlvbixcblx0XHR1c2VyTGlzdFxuXHR9LFxuXHRiZWZvcmVNb3VudCgpIHtcblx0XHR0aGlzLiRzdG9yZS5jb21taXQoJ2luaXRHcm91cHMnLCB7XG5cdFx0XHRncm91cHM6IHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U2VydmVyRGF0YS5ncm91cHMsXG5cdFx0XHRvcmRlckJ5OiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFNlcnZlckRhdGEuc29ydEdyb3Vwcyxcblx0XHRcdHVzZXJDb3VudDogdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTZXJ2ZXJEYXRhLnVzZXJDb3VudFxuXHRcdH0pO1xuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdnZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aCcpO1xuXHR9LFxuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzaG93Q29uZmlnOiB7XG5cdFx0XHRcdHNob3dTdG9yYWdlUGF0aDogZmFsc2UsXG5cdFx0XHRcdHNob3dVc2VyQmFja2VuZDogZmFsc2UsXG5cdFx0XHRcdHNob3dMYXN0TG9naW46IGZhbHNlLFxuXHRcdFx0XHRzaG93TmV3VXNlckZvcm06IGZhbHNlXG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0Z2V0TG9jYWxzdG9yYWdlKGtleSkge1xuXHRcdFx0Ly8gZm9yY2UgaW5pdGlhbGl6YXRpb25cblx0XHRcdHRoaXMuc2hvd0NvbmZpZ1trZXldID0gdGhpcy4kbG9jYWxTdG9yYWdlLmdldChrZXkpID09PSAndHJ1ZSc7XG5cdFx0XHRyZXR1cm4gdGhpcy5zaG93Q29uZmlnW2tleV07XG5cdFx0fSxcblx0XHRzZXRMb2NhbFN0b3JhZ2Uoa2V5LCBzdGF0dXMpIHtcblx0XHRcdHRoaXMuc2hvd0NvbmZpZ1trZXldID0gc3RhdHVzO1xuXHRcdFx0dGhpcy4kbG9jYWxTdG9yYWdlLnNldChrZXksIHN0YXR1cyk7XG5cdFx0XHRyZXR1cm4gc3RhdHVzO1xuXHRcdH1cblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHRyb3V0ZSgpIHtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFJvdXRlO1xuXHRcdH0sXG5cdFx0dXNlcnMoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVc2Vycztcblx0XHR9LFxuXHRcdGxvYWRpbmcoKSB7XG5cdFx0XHRyZXR1cm4gT2JqZWN0LmtleXModGhpcy51c2VycykubGVuZ3RoID09PSAwO1xuXHRcdH0sXG5cdFx0dXNlcnNPZmZzZXQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVc2Vyc09mZnNldDtcblx0XHR9LFxuXHRcdHVzZXJzTGltaXQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVc2Vyc0xpbWl0O1xuXHRcdH0sXG5cdFx0c2hvd0xhc3RMb2dpbjoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5nZXRMb2NhbHN0b3JhZ2UoJ3Nob3dMYXN0TG9naW4nKX0sXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKHN0YXR1cykge1xuXHRcdFx0XHR0aGlzLnNldExvY2FsU3RvcmFnZSgnc2hvd0xhc3RMb2dpbicsIHN0YXR1cyk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzaG93VXNlckJhY2tlbmQ6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMuZ2V0TG9jYWxzdG9yYWdlKCdzaG93VXNlckJhY2tlbmQnKX0sXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKHN0YXR1cykge1xuXHRcdFx0XHR0aGlzLnNldExvY2FsU3RvcmFnZSgnc2hvd1VzZXJCYWNrZW5kJywgc3RhdHVzKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHNob3dTdG9yYWdlUGF0aDoge1xuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtyZXR1cm4gdGhpcy5nZXRMb2NhbHN0b3JhZ2UoJ3Nob3dTdG9yYWdlUGF0aCcpfSxcblx0XHRcdHNldDogZnVuY3Rpb24oc3RhdHVzKSB7XG5cdFx0XHRcdHRoaXMuc2V0TG9jYWxTdG9yYWdlKCdzaG93U3RvcmFnZVBhdGgnLCBzdGF0dXMpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0dXNlckNvdW50KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VXNlckNvdW50O1xuXHRcdH0sXG5cdFx0bWVudSgpIHtcblx0XHRcdGxldCBzZWxmID0gdGhpcztcblx0XHRcdC8vIERhdGEgcHJvdmlkZWQgcGhwIHNpZGVcblx0XHRcdGxldCBncm91cHMgPSB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldEdyb3Vwcztcblx0XHRcdGdyb3VwcyA9IEFycmF5LmlzQXJyYXkoZ3JvdXBzKSA/IGdyb3VwcyA6IFtdO1xuXG5cdFx0XHQvLyBNYXAgZ3JvdXBzXG5cdFx0XHRncm91cHMgPSBncm91cHMubWFwKGdyb3VwID0+IHtcblx0XHRcdFx0bGV0IGl0ZW0gPSB7fTtcblx0XHRcdFx0aXRlbS5pZCA9IGdyb3VwLmlkLnJlcGxhY2UoJyAnLCAnXycpO1xuXHRcdFx0XHRpdGVtLmNsYXNzZXMgPSBbXTtcblx0XHRcdFx0aXRlbS5ocmVmID0gJyNncm91cCcrZ3JvdXAuaWQucmVwbGFjZSgnICcsICdfJyk7XG5cdFx0XHRcdGl0ZW0udGV4dCA9IGdyb3VwLm5hbWU7XG5cdFx0XHRcdGl0ZW0udXRpbHMgPSB7Y291bnRlcjogZ3JvdXAudXNlcmNvdW50fTtcblx0XHRcdFx0cmV0dXJuIGl0ZW07XG5cdFx0XHR9KTtcblxuXHRcdFx0Ly8gQWRqdXN0IGRhdGFcblx0XHRcdGxldCBhZG1pbkdyb3VwID0gZ3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuaWQgPT0gJ2FkbWluJyk7XG4gICAgICAgXHRcdGxldCBkaXNhYmxlZEdyb3VwID0gZ3JvdXBzLmZpbmQoZ3JvdXAgPT4gZ3JvdXAuaWQgPT0gJ19kaXNhYmxlZCcpO1xuXHRcdFx0aWYgKGFkbWluR3JvdXAudGV4dCkge1xuXHRcdFx0XHRhZG1pbkdyb3VwLnRleHQgPSB0KCdzZXR0aW5ncycsICdBZG1pbnMnKTt9XHRcdFx0Ly8gcmVuYW1lIGFkbWluIGdyb3VwXG5cdFx0XHRpZiAoZGlzYWJsZWRHcm91cC50ZXh0KSB7XG5cdFx0XHRcdGRpc2FibGVkR3JvdXAudGV4dCA9IHQoJ3NldHRpbmdzJywgJ0Rpc2FibGVkIHVzZXJzJyk7XHQvLyByZW5hbWUgZGlzYWJsZWQgZ3JvdXBcblx0XHRcdFx0aWYgKGRpc2FibGVkR3JvdXAudXRpbHMuY291bnRlciA9PT0gMCkge1xuXHRcdFx0XHRcdGdyb3Vwcy5zcGxpY2UoZ3JvdXBzLmZpbmRJbmRleChncm91cCA9PiBncm91cC5pZCA9PSAnX2Rpc2FibGVkJyksIDEpO1x0XHRcdFx0XHRcdFx0Ly8gcmVtb3ZlIGRpc2FibGVkIGlmIGVtcHR5XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gQWRkIGV2ZXJ5b25lIGdyb3VwXG5cdFx0XHRncm91cHMudW5zaGlmdCh7XG5cdFx0XHRcdGlkOiAnX2V2ZXJ5b25lJyxcblx0XHRcdFx0Y2xhc3NlczogW10sXG5cdFx0XHRcdGhyZWY6JyNncm91cF9ldmVyeW9uZScsXG5cdFx0XHRcdHRleHQ6IHQoJ3NldHRpbmdzJywgJ0V2ZXJ5b25lJyksXG5cdFx0XHRcdHV0aWxzOiB7Y291bnRlcjogdGhpcy51c2VyQ291bnR9XG5cdFx0XHR9KTtcblxuXHRcdFx0Ly8gU2V0IGN1cnJlbnQgZ3JvdXAgYXMgYWN0aXZlXG5cdFx0XHRsZXQgYWN0aXZlR3JvdXAgPSBncm91cHMuZmluZEluZGV4KGdyb3VwID0+IGdyb3VwLmhyZWYgPT09IHRoaXMuJHJvdXRlLmhhc2gpO1xuXHRcdFx0aWYgKGFjdGl2ZUdyb3VwID49IDApIHtcblx0XHRcdFx0Z3JvdXBzW2FjdGl2ZUdyb3VwXS5jbGFzc2VzLnB1c2goJ2FjdGl2ZScpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Z3JvdXBzWzBdLmNsYXNzZXMucHVzaCgnYWN0aXZlJyk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIFJldHVyblxuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0aWQ6ICd1c2VyZ3JvdXBsaXN0Jyxcblx0XHRcdFx0bmV3OiB7XG5cdFx0XHRcdFx0aWQ6J25ldy11c2VyLWJ1dHRvbicsXG5cdFx0XHRcdFx0dGV4dDogdCgnc2V0dGluZ3MnLCdOZXcgdXNlcicpLFxuXHRcdFx0XHRcdGljb246ICdpY29uLWFkZCcsXG5cdFx0XHRcdFx0YWN0aW9uOiBmdW5jdGlvbigpe3NlbGYuc2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm09IXNlbGYuc2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm19XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGl0ZW1zOiBncm91cHNcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cbjwvc2NyaXB0PlxuXG48c3R5bGUgbGFuZz1cInNjc3NcIj5cbjwvc3R5bGU+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3ZpZXdzL1VzZXJzLnZ1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n");
+eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_appNavigation__ = __webpack_require__(37);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__components_userList__ = __webpack_require__(44);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_localstorage__ = __webpack_require__(49);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3_vue_localstorage___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3_vue_localstorage__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n__WEBPACK_IMPORTED_MODULE_2_vue__[\"a\" /* default */].use(__WEBPACK_IMPORTED_MODULE_3_vue_localstorage___default.a);\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'Users',\n\tcomponents: {\n\t\tappNavigation: __WEBPACK_IMPORTED_MODULE_0__components_appNavigation__[\"a\" /* default */],\n\t\tuserList: __WEBPACK_IMPORTED_MODULE_1__components_userList__[\"a\" /* default */]\n\t},\n\tbeforeMount: function beforeMount() {\n\t\tthis.$store.commit('initGroups', {\n\t\t\tgroups: this.$store.getters.getServerData.groups,\n\t\t\torderBy: this.$store.getters.getServerData.sortGroups,\n\t\t\tuserCount: this.$store.getters.getServerData.userCount\n\t\t});\n\t\tthis.$store.dispatch('getPasswordPolicyMinLength');\n\t},\n\tdata: function data() {\n\t\treturn {\n\t\t\tshowConfig: {\n\t\t\t\tshowStoragePath: false,\n\t\t\t\tshowUserBackend: false,\n\t\t\t\tshowLastLogin: false,\n\t\t\t\tshowNewUserForm: false,\n\t\t\t\tshowLanguages: false\n\t\t\t}\n\t\t};\n\t},\n\n\tmethods: {\n\t\tgetLocalstorage: function getLocalstorage(key) {\n\t\t\t// force initialization\n\t\t\tthis.showConfig[key] = this.$localStorage.get(key) === 'true';\n\t\t\treturn this.showConfig[key];\n\t\t},\n\t\tsetLocalStorage: function setLocalStorage(key, status) {\n\t\t\tthis.showConfig[key] = status;\n\t\t\tthis.$localStorage.set(key, status);\n\t\t\treturn status;\n\t\t}\n\t},\n\tcomputed: {\n\t\troute: function route() {\n\t\t\treturn this.$store.getters.getRoute;\n\t\t},\n\t\tusers: function users() {\n\t\t\treturn this.$store.getters.getUsers;\n\t\t},\n\t\tloading: function loading() {\n\t\t\treturn Object.keys(this.users).length === 0;\n\t\t},\n\t\tusersOffset: function usersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit: function usersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\n\n\t\t// Local settings\n\t\tshowLanguages: {\n\t\t\tget: function get() {\n\t\t\t\treturn this.getLocalstorage('showLanguages');\n\t\t\t},\n\t\t\tset: function set(status) {\n\t\t\t\tthis.setLocalStorage('showLanguages', status);\n\t\t\t}\n\t\t},\n\t\tshowLastLogin: {\n\t\t\tget: function get() {\n\t\t\t\treturn this.getLocalstorage('showLastLogin');\n\t\t\t},\n\t\t\tset: function set(status) {\n\t\t\t\tthis.setLocalStorage('showLastLogin', status);\n\t\t\t}\n\t\t},\n\t\tshowUserBackend: {\n\t\t\tget: function get() {\n\t\t\t\treturn this.getLocalstorage('showUserBackend');\n\t\t\t},\n\t\t\tset: function set(status) {\n\t\t\t\tthis.setLocalStorage('showUserBackend', status);\n\t\t\t}\n\t\t},\n\t\tshowStoragePath: {\n\t\t\tget: function get() {\n\t\t\t\treturn this.getLocalstorage('showStoragePath');\n\t\t\t},\n\t\t\tset: function set(status) {\n\t\t\t\tthis.setLocalStorage('showStoragePath', status);\n\t\t\t}\n\t\t},\n\n\t\tuserCount: function userCount() {\n\t\t\treturn this.$store.getters.getUserCount;\n\t\t},\n\t\tmenu: function menu() {\n\t\t\tvar _this = this;\n\n\t\t\tvar self = this;\n\t\t\t// Data provided php side\n\t\t\tvar groups = this.$store.getters.getGroups;\n\t\t\tgroups = Array.isArray(groups) ? groups : [];\n\n\t\t\t// Map groups\n\t\t\tgroups = groups.map(function (group) {\n\t\t\t\tvar item = {};\n\t\t\t\titem.id = group.id.replace(' ', '_');\n\t\t\t\titem.classes = [];\n\t\t\t\titem.href = '#group' + group.id.replace(' ', '_');\n\t\t\t\titem.text = group.name;\n\t\t\t\titem.utils = { counter: group.usercount };\n\t\t\t\treturn item;\n\t\t\t});\n\n\t\t\t// Adjust data\n\t\t\tvar adminGroup = groups.find(function (group) {\n\t\t\t\treturn group.id == 'admin';\n\t\t\t});\n\t\t\tvar disabledGroup = groups.find(function (group) {\n\t\t\t\treturn group.id == '_disabled';\n\t\t\t});\n\t\t\tif (adminGroup.text) {\n\t\t\t\tadminGroup.text = t('settings', 'Admins');\n\t\t\t} // rename admin group\n\t\t\tif (disabledGroup.text) {\n\t\t\t\tdisabledGroup.text = t('settings', 'Disabled users'); // rename disabled group\n\t\t\t\tif (disabledGroup.utils.counter === 0) {\n\t\t\t\t\tgroups.splice(groups.findIndex(function (group) {\n\t\t\t\t\t\treturn group.id == '_disabled';\n\t\t\t\t\t}), 1); // remove disabled if empty\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add everyone group\n\t\t\tgroups.unshift({\n\t\t\t\tid: '_everyone',\n\t\t\t\tclasses: [],\n\t\t\t\thref: '#group_everyone',\n\t\t\t\ttext: t('settings', 'Everyone'),\n\t\t\t\tutils: { counter: this.userCount }\n\t\t\t});\n\n\t\t\t// Set current group as active\n\t\t\tvar activeGroup = groups.findIndex(function (group) {\n\t\t\t\treturn group.href === _this.$route.hash;\n\t\t\t});\n\t\t\tif (activeGroup >= 0) {\n\t\t\t\tgroups[activeGroup].classes.push('active');\n\t\t\t} else {\n\t\t\t\tgroups[0].classes.push('active');\n\t\t\t}\n\n\t\t\t// Return\n\t\t\treturn {\n\t\t\t\tid: 'usergrouplist',\n\t\t\t\tnew: {\n\t\t\t\t\tid: 'new-user-button',\n\t\t\t\t\ttext: t('settings', 'New user'),\n\t\t\t\t\ticon: 'icon-add',\n\t\t\t\t\taction: function action() {\n\t\t\t\t\t\tself.showConfig.showNewUserForm = !self.showConfig.showNewUserForm;\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\titems: groups\n\t\t\t};\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL3ZpZXdzL1VzZXJzLnZ1ZT8wNzZmIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQStCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO09BRUE7O0FBRUE7QUFFQTtBQUhBO3FDQUlBOzs2Q0FFQTs4Q0FDQTtnREFFQTtBQUpBO3VCQUtBO0FBQ0E7dUJBQ0E7OztxQkFHQTtxQkFDQTttQkFDQTtxQkFDQTttQkFHQTtBQVBBO0FBREE7QUFTQTs7O2lEQUVBO0FBQ0E7MERBQ0E7MEJBQ0E7QUFDQTt5REFDQTswQkFDQTsrQkFDQTtVQUNBO0FBRUE7QUFYQTs7MEJBYUE7OEJBQ0E7QUFDQTswQkFDQTs4QkFDQTtBQUNBOzhCQUNBOzZDQUNBO0FBQ0E7c0NBQ0E7OEJBQ0E7QUFDQTtvQ0FDQTs4QkFDQTtBQUVBOzs7QUFDQTs7OztBQUVBOzZCQUNBOzBDQUNBO0FBRUE7QUFMQTs7OztBQU9BOzZCQUNBOzBDQUNBO0FBRUE7QUFMQTs7OztBQU9BOzZCQUNBOzRDQUNBO0FBRUE7QUFMQTs7OztBQU9BOzZCQUNBOzRDQUNBO0FBSUE7QUFQQTs7a0NBUUE7OEJBQ0E7QUFDQTs7QUFDQTs7Y0FDQTtBQUNBO29DQUNBOzZDQUVBOztBQUNBO3dDQUNBO2VBQ0E7b0NBQ0E7bUJBQ0E7aURBQ0E7c0JBQ0E7a0NBQ0E7V0FDQTtBQUVBOztBQUNBOzt1QkFDQTs7O3VCQUNBOzt3QkFDQTs7S0FDQTsyQkFDQTswREFDQTs7OztZQUNBLENBQ0E7QUFDQTtBQUVBOztBQUNBOztRQUVBO2FBQ0E7VUFDQTt3QkFDQTsyQkFHQTtBQVBBOztBQVFBOzt1Q0FDQTs7eUJBQ0E7cUNBQ0E7VUFDQTsyQkFDQTtBQUVBOztBQUNBOztRQUVBOztTQUVBO3lCQUNBO1dBQ0E7OztBQUVBO0FBTEE7V0FPQTtBQVRBO0FBV0E7QUF6R0E7QUFyQ0EiLCJmaWxlIjoiNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cblx0PGRpdiBpZD1cImFwcFwiPlxuXHRcdDxhcHAtbmF2aWdhdGlvbiA6bWVudT1cIm1lbnVcIj5cblx0XHRcdDx0ZW1wbGF0ZSBzbG90PVwic2V0dGluZ3MtY29udGVudFwiPlxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInNob3dMYW5ndWFnZXNcIiBjbGFzcz1cImNoZWNrYm94XCJcblx0XHRcdFx0XHRcdCAgIDpjaGVja2VkPVwic2hvd0xhbmd1YWdlc1wiIHYtbW9kZWw9XCJzaG93TGFuZ3VhZ2VzXCI+XG5cdFx0XHRcdFx0PGxhYmVsIGZvcj1cInNob3dMYW5ndWFnZXNcIj57e3QoJ3NldHRpbmdzJywgJ1Nob3cgTGFuZ3VhZ2VzJyl9fTwvbGFiZWw+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInNob3dMYXN0TG9naW5cIiBjbGFzcz1cImNoZWNrYm94XCJcblx0XHRcdFx0XHRcdCAgIDpjaGVja2VkPVwic2hvd0xhc3RMb2dpblwiIHYtbW9kZWw9XCJzaG93TGFzdExvZ2luXCI+XG5cdFx0XHRcdFx0PGxhYmVsIGZvcj1cInNob3dMYXN0TG9naW5cIj57e3QoJ3NldHRpbmdzJywgJ1Nob3cgbGFzdCBsb2dpbicpfX08L2xhYmVsPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJzaG93VXNlckJhY2tlbmRcIiBjbGFzcz1cImNoZWNrYm94XCJcblx0XHRcdFx0XHRcdCAgIDpjaGVja2VkPVwic2hvd1VzZXJCYWNrZW5kXCIgdi1tb2RlbD1cInNob3dVc2VyQmFja2VuZFwiPlxuXHRcdFx0XHRcdDxsYWJlbCBmb3I9XCJzaG93VXNlckJhY2tlbmRcIj57e3QoJ3NldHRpbmdzJywgJ1Nob3cgdXNlciBiYWNrZW5kJyl9fTwvbGFiZWw+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8ZGl2PlxuXHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBpZD1cInNob3dTdG9yYWdlUGF0aFwiIGNsYXNzPVwiY2hlY2tib3hcIlxuXHRcdFx0XHRcdFx0ICAgOmNoZWNrZWQ9XCJzaG93U3RvcmFnZVBhdGhcIiB2LW1vZGVsPVwic2hvd1N0b3JhZ2VQYXRoXCI+XG5cdFx0XHRcdFx0PGxhYmVsIGZvcj1cInNob3dTdG9yYWdlUGF0aFwiPnt7dCgnc2V0dGluZ3MnLCAnU2hvdyBzdG9yYWdlIHBhdGgnKX19PC9sYWJlbD5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L3RlbXBsYXRlPlxuXHRcdDwvYXBwLW5hdmlnYXRpb24+XG5cdFx0PHVzZXItbGlzdCA6dXNlcnM9XCJ1c2Vyc1wiIDpzaG93Q29uZmlnPVwic2hvd0NvbmZpZ1wiIC8+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBhcHBOYXZpZ2F0aW9uIGZyb20gJy4uL2NvbXBvbmVudHMvYXBwTmF2aWdhdGlvbic7XG5pbXBvcnQgdXNlckxpc3QgZnJvbSAnLi4vY29tcG9uZW50cy91c2VyTGlzdCc7XG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZSc7XG5pbXBvcnQgVnVlTG9jYWxTdG9yYWdlIGZyb20gJ3Z1ZS1sb2NhbHN0b3JhZ2UnXG5WdWUudXNlKFZ1ZUxvY2FsU3RvcmFnZSlcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAnVXNlcnMnLFxuXHRjb21wb25lbnRzOiB7XG5cdFx0YXBwTmF2aWdhdGlvbixcblx0XHR1c2VyTGlzdFxuXHR9LFxuXHRiZWZvcmVNb3VudCgpIHtcblx0XHR0aGlzLiRzdG9yZS5jb21taXQoJ2luaXRHcm91cHMnLCB7XG5cdFx0XHRncm91cHM6IHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U2VydmVyRGF0YS5ncm91cHMsXG5cdFx0XHRvcmRlckJ5OiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFNlcnZlckRhdGEuc29ydEdyb3Vwcyxcblx0XHRcdHVzZXJDb3VudDogdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTZXJ2ZXJEYXRhLnVzZXJDb3VudFxuXHRcdH0pO1xuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdnZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aCcpO1xuXHR9LFxuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRzaG93Q29uZmlnOiB7XG5cdFx0XHRcdHNob3dTdG9yYWdlUGF0aDogZmFsc2UsXG5cdFx0XHRcdHNob3dVc2VyQmFja2VuZDogZmFsc2UsXG5cdFx0XHRcdHNob3dMYXN0TG9naW46IGZhbHNlLFxuXHRcdFx0XHRzaG93TmV3VXNlckZvcm06IGZhbHNlLFxuXHRcdFx0XHRzaG93TGFuZ3VhZ2VzOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0bWV0aG9kczoge1xuXHRcdGdldExvY2Fsc3RvcmFnZShrZXkpIHtcblx0XHRcdC8vIGZvcmNlIGluaXRpYWxpemF0aW9uXG5cdFx0XHR0aGlzLnNob3dDb25maWdba2V5XSA9IHRoaXMuJGxvY2FsU3RvcmFnZS5nZXQoa2V5KSA9PT0gJ3RydWUnO1xuXHRcdFx0cmV0dXJuIHRoaXMuc2hvd0NvbmZpZ1trZXldO1xuXHRcdH0sXG5cdFx0c2V0TG9jYWxTdG9yYWdlKGtleSwgc3RhdHVzKSB7XG5cdFx0XHR0aGlzLnNob3dDb25maWdba2V5XSA9IHN0YXR1cztcblx0XHRcdHRoaXMuJGxvY2FsU3RvcmFnZS5zZXQoa2V5LCBzdGF0dXMpO1xuXHRcdFx0cmV0dXJuIHN0YXR1cztcblx0XHR9XG5cdH0sXG5cdGNvbXB1dGVkOiB7XG5cdFx0cm91dGUoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRSb3V0ZTtcblx0XHR9LFxuXHRcdHVzZXJzKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VXNlcnM7XG5cdFx0fSxcblx0XHRsb2FkaW5nKCkge1xuXHRcdFx0cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMudXNlcnMpLmxlbmd0aCA9PT0gMDtcblx0XHR9LFxuXHRcdHVzZXJzT2Zmc2V0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VXNlcnNPZmZzZXQ7XG5cdFx0fSxcblx0XHR1c2Vyc0xpbWl0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VXNlcnNMaW1pdDtcblx0XHR9LFxuXG5cdFx0Ly8gTG9jYWwgc2V0dGluZ3Ncblx0XHRzaG93TGFuZ3VhZ2VzOiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLmdldExvY2Fsc3RvcmFnZSgnc2hvd0xhbmd1YWdlcycpfSxcblx0XHRcdHNldDogZnVuY3Rpb24oc3RhdHVzKSB7XG5cdFx0XHRcdHRoaXMuc2V0TG9jYWxTdG9yYWdlKCdzaG93TGFuZ3VhZ2VzJywgc3RhdHVzKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHNob3dMYXN0TG9naW46IHtcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMuZ2V0TG9jYWxzdG9yYWdlKCdzaG93TGFzdExvZ2luJyl9LFxuXHRcdFx0c2V0OiBmdW5jdGlvbihzdGF0dXMpIHtcblx0XHRcdFx0dGhpcy5zZXRMb2NhbFN0b3JhZ2UoJ3Nob3dMYXN0TG9naW4nLCBzdGF0dXMpO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0c2hvd1VzZXJCYWNrZW5kOiB7XG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge3JldHVybiB0aGlzLmdldExvY2Fsc3RvcmFnZSgnc2hvd1VzZXJCYWNrZW5kJyl9LFxuXHRcdFx0c2V0OiBmdW5jdGlvbihzdGF0dXMpIHtcblx0XHRcdFx0dGhpcy5zZXRMb2NhbFN0b3JhZ2UoJ3Nob3dVc2VyQmFja2VuZCcsIHN0YXR1cyk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzaG93U3RvcmFnZVBhdGg6IHtcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7cmV0dXJuIHRoaXMuZ2V0TG9jYWxzdG9yYWdlKCdzaG93U3RvcmFnZVBhdGgnKX0sXG5cdFx0XHRzZXQ6IGZ1bmN0aW9uKHN0YXR1cykge1xuXHRcdFx0XHR0aGlzLnNldExvY2FsU3RvcmFnZSgnc2hvd1N0b3JhZ2VQYXRoJywgc3RhdHVzKTtcblx0XHRcdH1cblx0XHR9LFxuXG5cblx0XHR1c2VyQ291bnQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVc2VyQ291bnQ7XG5cdFx0fSxcblx0XHRtZW51KCkge1xuXHRcdFx0bGV0IHNlbGYgPSB0aGlzO1xuXHRcdFx0Ly8gRGF0YSBwcm92aWRlZCBwaHAgc2lkZVxuXHRcdFx0bGV0IGdyb3VwcyA9IHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0R3JvdXBzO1xuXHRcdFx0Z3JvdXBzID0gQXJyYXkuaXNBcnJheShncm91cHMpID8gZ3JvdXBzIDogW107XG5cblx0XHRcdC8vIE1hcCBncm91cHNcblx0XHRcdGdyb3VwcyA9IGdyb3Vwcy5tYXAoZ3JvdXAgPT4ge1xuXHRcdFx0XHRsZXQgaXRlbSA9IHt9O1xuXHRcdFx0XHRpdGVtLmlkID0gZ3JvdXAuaWQucmVwbGFjZSgnICcsICdfJyk7XG5cdFx0XHRcdGl0ZW0uY2xhc3NlcyA9IFtdO1xuXHRcdFx0XHRpdGVtLmhyZWYgPSAnI2dyb3VwJytncm91cC5pZC5yZXBsYWNlKCcgJywgJ18nKTtcblx0XHRcdFx0aXRlbS50ZXh0ID0gZ3JvdXAubmFtZTtcblx0XHRcdFx0aXRlbS51dGlscyA9IHtjb3VudGVyOiBncm91cC51c2VyY291bnR9O1xuXHRcdFx0XHRyZXR1cm4gaXRlbTtcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBBZGp1c3QgZGF0YVxuXHRcdFx0bGV0IGFkbWluR3JvdXAgPSBncm91cHMuZmluZChncm91cCA9PiBncm91cC5pZCA9PSAnYWRtaW4nKTtcbiAgICAgICBcdFx0bGV0IGRpc2FibGVkR3JvdXAgPSBncm91cHMuZmluZChncm91cCA9PiBncm91cC5pZCA9PSAnX2Rpc2FibGVkJyk7XG5cdFx0XHRpZiAoYWRtaW5Hcm91cC50ZXh0KSB7XG5cdFx0XHRcdGFkbWluR3JvdXAudGV4dCA9IHQoJ3NldHRpbmdzJywgJ0FkbWlucycpO31cdFx0XHQvLyByZW5hbWUgYWRtaW4gZ3JvdXBcblx0XHRcdGlmIChkaXNhYmxlZEdyb3VwLnRleHQpIHtcblx0XHRcdFx0ZGlzYWJsZWRHcm91cC50ZXh0ID0gdCgnc2V0dGluZ3MnLCAnRGlzYWJsZWQgdXNlcnMnKTtcdC8vIHJlbmFtZSBkaXNhYmxlZCBncm91cFxuXHRcdFx0XHRpZiAoZGlzYWJsZWRHcm91cC51dGlscy5jb3VudGVyID09PSAwKSB7XG5cdFx0XHRcdFx0Z3JvdXBzLnNwbGljZShncm91cHMuZmluZEluZGV4KGdyb3VwID0+IGdyb3VwLmlkID09ICdfZGlzYWJsZWQnKSwgMSk7XHRcdFx0XHRcdFx0XHQvLyByZW1vdmUgZGlzYWJsZWQgaWYgZW1wdHlcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHQvLyBBZGQgZXZlcnlvbmUgZ3JvdXBcblx0XHRcdGdyb3Vwcy51bnNoaWZ0KHtcblx0XHRcdFx0aWQ6ICdfZXZlcnlvbmUnLFxuXHRcdFx0XHRjbGFzc2VzOiBbXSxcblx0XHRcdFx0aHJlZjonI2dyb3VwX2V2ZXJ5b25lJyxcblx0XHRcdFx0dGV4dDogdCgnc2V0dGluZ3MnLCAnRXZlcnlvbmUnKSxcblx0XHRcdFx0dXRpbHM6IHtjb3VudGVyOiB0aGlzLnVzZXJDb3VudH1cblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBTZXQgY3VycmVudCBncm91cCBhcyBhY3RpdmVcblx0XHRcdGxldCBhY3RpdmVHcm91cCA9IGdyb3Vwcy5maW5kSW5kZXgoZ3JvdXAgPT4gZ3JvdXAuaHJlZiA9PT0gdGhpcy4kcm91dGUuaGFzaCk7XG5cdFx0XHRpZiAoYWN0aXZlR3JvdXAgPj0gMCkge1xuXHRcdFx0XHRncm91cHNbYWN0aXZlR3JvdXBdLmNsYXNzZXMucHVzaCgnYWN0aXZlJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRncm91cHNbMF0uY2xhc3Nlcy5wdXNoKCdhY3RpdmUnKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gUmV0dXJuXG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRpZDogJ3VzZXJncm91cGxpc3QnLFxuXHRcdFx0XHRuZXc6IHtcblx0XHRcdFx0XHRpZDonbmV3LXVzZXItYnV0dG9uJyxcblx0XHRcdFx0XHR0ZXh0OiB0KCdzZXR0aW5ncycsJ05ldyB1c2VyJyksXG5cdFx0XHRcdFx0aWNvbjogJ2ljb24tYWRkJyxcblx0XHRcdFx0XHRhY3Rpb246IGZ1bmN0aW9uKCl7c2VsZi5zaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybT0hc2VsZi5zaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybX1cblx0XHRcdFx0fSxcblx0XHRcdFx0aXRlbXM6IGdyb3Vwc1xuXHRcdFx0fVxuXHRcdH1cblx0fVxufVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL3ZpZXdzL1VzZXJzLnZ1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///7\n");
/***/ }),
/* 8 */
@@ -162,14 +162,14 @@ eval("function validate(binding) {\r\n if (typeof binding.value !== 'function')
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__userList_userRow__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_multiselect__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_multiselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_multiselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'userList',\n\tprops: ['users', 'showConfig'],\n\tcomponents: {\n\t\tuserRow: __WEBPACK_IMPORTED_MODULE_0__userList_userRow__[\"a\" /* default */],\n\t\tMultiselect: __WEBPACK_IMPORTED_MODULE_1_vue_multiselect___default.a,\n\t\tInfiniteLoading: __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading___default.a\n\t},\n\tdata: function data() {\n\t\tvar unlimitedQuota = { id: 'none', label: t('settings', 'Unlimited') },\n\t\t defaultQuota = { id: 'default', label: t('settings', 'Default quota') };\n\t\treturn {\n\t\t\tunlimitedQuota: unlimitedQuota,\n\t\t\tdefaultQuota: defaultQuota,\n\t\t\tloading: false,\n\t\t\tscrolled: false,\n\t\t\tnewUser: {\n\t\t\t\tid: '',\n\t\t\t\tdisplayName: '',\n\t\t\t\tpassword: '',\n\t\t\t\tmailAddress: '',\n\t\t\t\tgroups: [],\n\t\t\t\tsubAdminsGroups: [],\n\t\t\t\tquota: defaultQuota\n\t\t\t}\n\t\t};\n\t},\n\tmounted: function mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tsettings: function settings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\t\tfilteredUsers: function filteredUsers() {\n\t\t\tif (this.$route.hash === '#group_disabled') {\n\t\t\t\tvar disabledUsers = this.users.filter(function (user) {\n\t\t\t\t\treturn user.enabled !== true;\n\t\t\t\t});\n\t\t\t\tif (disabledUsers.length === 0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {\n\t\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\t\twindow.location.hash = '#group_everyone';\n\t\t\t\t\tthis.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');\n\t\t\t\t}\n\t\t\t\treturn disabledUsers;\n\t\t\t}\n\t\t\treturn this.users.filter(function (user) {\n\t\t\t\treturn user.enabled === true;\n\t\t\t});\n\t\t},\n\t\tgroups: function groups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups.filter(function (group) {\n\t\t\t\treturn group.id !== '_disabled';\n\t\t\t});\n\t\t},\n\t\tsubAdminsGroups: function subAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getServerData.subadmingroups;\n\t\t},\n\t\tquotaOptions: function quotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tvar quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {\n\t\t\t\treturn acc.concat({ id: cur, label: cur });\n\t\t\t}, []);\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota);\n\t\t\tquotaPreset.unshift(this.defaultQuota);\n\t\t\treturn quotaPreset;\n\t\t},\n\t\tminPasswordLength: function minPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\t\tusersOffset: function usersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit: function usersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\n\t\t// get selected hash\n\t\tselectedGroup: function selectedGroup() {\n\t\t\tvar hash = this.$route.hash;\n\t\t\tif (typeof hash === 'string' && hash.length > 0) {\n\t\t\t\t// we have a valid hash: groupXXXX\n\t\t\t\t// group_XXXX are reserved groups\n\t\t\t\tvar split = hash.split('group');\n\t\t\t\tif (split.length === 2 && split[1].charAt(0) !== '_') {\n\t\t\t\t\treturn hash.split('group')[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t},\n\twatch: {\n\t\t// watch url change and group select\n\t\tselectedGroup: function selectedGroup(val, old) {\n\t\t\tthis.$store.commit('resetUsers');\n\t\t\tthis.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');\n\t\t}\n\t},\n\tmethods: {\n\t\tonScroll: function onScroll(event) {\n\t\t\tthis.scrolled = event.target.scrollTop > 0;\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Object}\n */\n\t\tvalidateQuota: function validateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tvar validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota !== null && validQuota > 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));\n\t\t\t\treturn this.newUser.quota = { id: quota, label: quota };\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\treturn this.newUser.quota = this.quotaOptions[0];\n\t\t},\n\t\tinfiniteHandler: function infiniteHandler($state) {\n\t\t\tthis.$store.dispatch('getUsers', { offset: this.usersOffset, limit: this.usersLimit, group: this.selectedGroup }).then(function (response) {\n\t\t\t\tresponse ? $state.loaded() : $state.complete();\n\t\t\t});\n\t\t},\n\t\tresetForm: function resetForm() {\n\t\t\t// revert form to original state\n\t\t\tObject.assign(this.newUser, this.$options.data.call(this).newUser);\n\t\t\tthis.loading = false;\n\t\t},\n\t\tcreateUser: function createUser() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.loading = true;\n\t\t\tthis.$store.dispatch('addUser', {\n\t\t\t\tuserid: this.newUser.id,\n\t\t\t\tpassword: this.newUser.password,\n\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\tgroups: this.newUser.groups.map(function (group) {\n\t\t\t\t\treturn group.id;\n\t\t\t\t}),\n\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(function (group) {\n\t\t\t\t\treturn group.id;\n\t\t\t\t}),\n\t\t\t\tquota: this.newUser.quota.id\n\t\t\t}).then(function () {\n\t\t\t\treturn _this.resetForm();\n\t\t\t});\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QudnVlP2JjNTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0dBO0FBQ0E7QUFDQTs7QUFFQTtPQUVBO2tCQUNBOztBQUVBO0FBQ0E7QUFFQTtBQUpBO3VCQUtBOzBEQUNBOzJEQUNBOzttQkFFQTtpQkFDQTtZQUNBO2FBQ0E7O1FBRUE7aUJBQ0E7Y0FDQTtpQkFDQTtZQUNBO3FCQUNBO1dBR0E7QUFUQTtBQUxBO0FBZUE7NkJBQ0E7d0NBQ0E7K0NBQ0E7QUFDQTtBQUNBOzs7Z0NBRUE7OEJBQ0E7QUFDQTswQ0FDQTsrQ0FDQTs7NkJBQ0E7OzJHQUNBO0FBQ0E7NEJBQ0E7c0NBQ0E7QUFDQTtXQUNBO0FBQ0E7OzRCQUNBOztBQUNBOzRCQUNBO0FBQ0E7O3dCQUNBOztBQUNBOzhDQUNBO0FBQ0E7NENBQ0E7QUFDQTt3Q0FDQTtBQUNBOzs7TUFDQTtBQUNBOzRCQUNBOzRCQUNBO1VBQ0E7QUFDQTtrREFDQTs4QkFDQTtBQUNBO3NDQUNBOzhCQUNBO0FBQ0E7b0NBQ0E7OEJBQ0E7QUFDQTs7QUFDQTswQ0FDQTswQkFDQTtvREFDQTtBQUNBO0FBQ0E7MkJBQ0E7MERBQ0E7Z0NBQ0E7QUFDQTtBQUNBO1VBQ0E7QUFFQTtBQXREQTs7QUF3REE7a0RBQ0E7c0JBQ0E7b0NBQ0E7QUFFQTtBQU5BOztxQ0FRQTs0Q0FDQTtBQUVBOzs7QUFNQTs7Ozs7OytDQUNBO0FBQ0E7NkNBQ0E7OENBQ0E7QUFDQTsyREFDQTtvREFDQTtBQUNBO0FBQ0E7aURBQ0E7QUFFQTtvREFDQTtvR0FDQTs7QUFDQTtBQUVBO2tDQUNBO0FBQ0E7NkRBQ0E7a0JBQ0E7QUFDQTs7QUFDQTs7a0JBQ0E7O3lCQUVBOzJCQUNBO3dCQUNBOztrQkFDQTs7O2tCQUNBOzs4QkFDQTtBQU5BO2lCQU9BOztBQUVBO0FBNUNBO0FBOUZBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8ZGl2IGlkPVwiYXBwLWNvbnRlbnRcIiBjbGFzcz1cInVzZXItbGlzdC1ncmlkXCIgdi1vbjpzY3JvbGwucGFzc2l2ZT1cIm9uU2Nyb2xsXCI+XG5cdFx0PGRpdiBjbGFzcz1cInJvd1wiIGlkPVwiZ3JpZC1oZWFkZXJcIiA6Y2xhc3M9XCJ7J3N0aWNreSc6IHNjcm9sbGVkICYmICFzaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybX1cIj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJBdmF0YXJcIiBjbGFzcz1cImF2YXRhclwiPjwvZGl2PlxuXHRcdFx0PGRpdiBpZD1cImhlYWRlck5hbWVcIiBjbGFzcz1cIm5hbWVcIj57eyB0KCdzZXR0aW5ncycsICdVc2VybmFtZScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyRGlzcGxheU5hbWVcIiBjbGFzcz1cImRpc3BsYXlOYW1lXCI+e3sgdCgnc2V0dGluZ3MnLCAgJ0Z1bGwgbmFtZScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyUGFzc3dvcmRcIiBjbGFzcz1cInBhc3N3b3JkXCI+e3sgdCgnc2V0dGluZ3MnLCAgJ1Bhc3N3b3JkJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJBZGRyZXNzXCIgY2xhc3M9XCJtYWlsQWRkcmVzc1wiPnt7IHQoJ3NldHRpbmdzJywgICdFbWFpbCcpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyR3JvdXBzXCIgY2xhc3M9XCJncm91cHNcIj57eyB0KCdzZXR0aW5ncycsICAnR3JvdXBzJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJTdWJBZG1pbnNcIiBjbGFzcz1cInN1YmFkbWluc1wiXG5cdFx0XHRcdCB2LWlmPVwic3ViQWRtaW5zR3JvdXBzLmxlbmd0aD4wXCI+e3sgdCgnc2V0dGluZ3MnLCAnR3JvdXAgYWRtaW4gZm9yJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJRdW90YVwiIGNsYXNzPVwicXVvdGFcIj57eyB0KCdzZXR0aW5ncycsICdRdW90YScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaGVhZGVyU3RvcmFnZUxvY2F0aW9uIHN0b3JhZ2VMb2NhdGlvblwiXG5cdFx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcIj57eyB0KCdzZXR0aW5ncycsICdTdG9yYWdlIGxvY2F0aW9uJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJoZWFkZXJVc2VyQmFja2VuZCB1c2VyQmFja2VuZFwiXG5cdFx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcIj57eyB0KCdzZXR0aW5ncycsICdVc2VyIGJhY2tlbmQnKSB9fTwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImhlYWRlckxhc3RMb2dpbiBsYXN0TG9naW5cIiBcblx0XHRcdFx0IHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYXN0TG9naW5cIj57eyB0KCdzZXR0aW5ncycsICdMYXN0IGxvZ2luJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPjwvZGl2PlxuXHRcdDwvZGl2PlxuXG5cdFx0PGZvcm0gY2xhc3M9XCJyb3dcIiBpZD1cIm5ldy11c2VyXCIgdi1zaG93PVwic2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm1cIlxuXHRcdFx0ICB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwiY3JlYXRlVXNlclwiIDpkaXNhYmxlZD1cImxvYWRpbmdcIlxuXHRcdFx0ICA6Y2xhc3M9XCJ7J3N0aWNreSc6IHNjcm9sbGVkICYmIHNob3dDb25maWcuc2hvd05ld1VzZXJGb3JtfVwiPlxuXHRcdFx0PGRpdiA6Y2xhc3M9XCJsb2FkaW5nPydpY29uLWxvYWRpbmctc21hbGwnOidpY29uLWFkZCdcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJuYW1lXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld3VzZXJuYW1lXCIgdHlwZT1cInRleHRcIiByZXF1aXJlZCB2LW1vZGVsPVwibmV3VXNlci5pZFwiXG5cdFx0XHRcdFx0ICAgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnVXNlciBuYW1lJylcIiBuYW1lPVwidXNlcm5hbWVcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCJcblx0XHRcdFx0XHQgICBwYXR0ZXJuPVwiW2EtekEtWjAtOSBfXFwuQFxcLSddK1wiPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZGlzcGxheU5hbWVcIj5cblx0XHRcdFx0PGlucHV0IGlkPVwibmV3ZGlzcGxheW5hbWVcIiB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJuZXdVc2VyLmRpc3BsYXlOYW1lXCJcblx0XHRcdFx0XHQgICA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdEaXNwbGF5IG5hbWUnKVwiIG5hbWU9XCJkaXNwbGF5bmFtZVwiXG5cdFx0XHRcdFx0ICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJub25lXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInBhc3N3b3JkXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld3VzZXJwYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiIHYtbW9kZWw9XCJuZXdVc2VyLnBhc3N3b3JkXCJcblx0XHRcdFx0XHQgICA6cmVxdWlyZWQ9XCJuZXdVc2VyLm1haWxBZGRyZXNzPT09JydcIlxuXHRcdFx0XHRcdCAgIDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1Bhc3N3b3JkJylcIiBuYW1lPVwicGFzc3dvcmRcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCJcblx0XHRcdFx0XHQgICA6bWlubGVuZ3RoPVwibWluUGFzc3dvcmRMZW5ndGhcIj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1haWxBZGRyZXNzXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld2VtYWlsXCIgdHlwZT1cImVtYWlsXCIgdi1tb2RlbD1cIm5ld1VzZXIubWFpbEFkZHJlc3NcIlxuXHRcdFx0XHRcdCAgIDpyZXF1aXJlZD1cIm5ld1VzZXIucGFzc3dvcmQ9PT0nJ1wiXG5cdFx0XHRcdFx0ICAgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnTWFpbCBhZGRyZXNzJylcIiBuYW1lPVwiZW1haWxcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCI+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJncm91cHNcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwiZ3JvdXBzXCIgdi1tb2RlbD1cIm5ld1VzZXIuZ3JvdXBzXCJcblx0XHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ0FkZCB1c2VyIGluIGdyb3VwJylcIlxuXHRcdFx0XHRcdFx0XHQgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdFx0IDptdWx0aXBsZT1cInRydWVcIiA6Y2xvc2Utb24tc2VsZWN0PVwiZmFsc2VcIj5cblx0XHRcdFx0XHQ8c3BhbiBzbG90PVwibm9SZXN1bHRcIj57e3QoJ3NldHRpbmdzJywnTm8gcmVzdWx0Jyl9fTwvc3Bhbj5cblx0XHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInN1YmFkbWluc1wiIHYtaWY9XCJzdWJBZG1pbnNHcm91cHMubGVuZ3RoPjBcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwic3ViQWRtaW5zR3JvdXBzXCIgdi1tb2RlbD1cIm5ld1VzZXIuc3ViQWRtaW5zR3JvdXBzXCJcblx0XHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1NldCB1c2VyIGFzIGFkbWluIGZvcicpXCJcblx0XHRcdFx0XHRcdFx0IGxhYmVsPVwibmFtZVwiIHRyYWNrLWJ5PVwiaWRcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHRcdCA6bXVsdGlwbGU9XCJ0cnVlXCIgOmNsb3NlLW9uLXNlbGVjdD1cImZhbHNlXCI+XG5cdFx0XHRcdFx0PHNwYW4gc2xvdD1cIm5vUmVzdWx0XCI+e3t0KCdzZXR0aW5ncycsJ05vIHJlc3VsdCcpfX08L3NwYW4+XG5cdFx0XHQ8L211bHRpc2VsZWN0PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwicXVvdGFcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwicXVvdGFPcHRpb25zXCIgdi1tb2RlbD1cIm5ld1VzZXIucXVvdGFcIlxuXHRcdFx0XHRcdFx0XHQgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnU2VsZWN0IHVzZXIgcXVvdGEnKVwiXG5cdFx0XHRcdFx0XHRcdCBsYWJlbD1cImxhYmVsXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdFx0IDphbGxvd0VtcHR5PVwiZmFsc2VcIiA6dGFnZ2FibGU9XCJ0cnVlXCJcblx0XHRcdFx0XHRcdCBcdCBAdGFnPVwidmFsaWRhdGVRdW90YVwiID5cblx0XHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInN0b3JhZ2VMb2NhdGlvblwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dTdG9yYWdlUGF0aFwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInVzZXJCYWNrZW5kXCIgdi1pZj1cInNob3dDb25maWcuc2hvd1VzZXJCYWNrZW5kXCI+PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibGFzdExvZ2luXCIgdi1pZj1cInNob3dDb25maWcuc2hvd0xhc3RMb2dpblwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInVzZXJBY3Rpb25zXCI+XG5cdFx0XHRcdDxpbnB1dCB0eXBlPVwic3VibWl0XCIgaWQ9XCJuZXdzdWJtaXRcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5IGljb24tY2hlY2ttYXJrLXdoaXRlIGhhcy10b29sdGlwXCJcblx0XHRcdFx0XHQgICB2YWx1ZT1cIlwiIDp0aXRsZT1cInQoJ3NldHRpbmdzJywgJ0FkZCBhIG5ldyB1c2VyJylcIj5cblx0XHRcdFx0PGlucHV0IHR5cGU9XCJyZXNldFwiIGlkPVwibmV3cmVzZXRcIiBjbGFzcz1cImJ1dHRvbiBpY29uLWNsb3NlIGhhcy10b29sdGlwXCIgQGNsaWNrPVwicmVzZXRGb3JtXCJcblx0XHRcdFx0XHQgICB2YWx1ZT1cIlwiIDp0aXRsZT1cInQoJ3NldHRpbmdzJywgJ0NhbmNlbCBhbmQgcmVzZXQgdGhlIGZvcm0nKVwiPlxuXHRcdFx0PC9kaXY+XG5cdFx0PC9mb3JtPlxuXG5cdFx0PHVzZXItcm93IHYtZm9yPVwiKHVzZXIsIGtleSkgaW4gZmlsdGVyZWRVc2Vyc1wiIDp1c2VyPVwidXNlclwiIDprZXk9XCJrZXlcIiA6c2V0dGluZ3M9XCJzZXR0aW5nc1wiIDpzaG93Q29uZmlnPVwic2hvd0NvbmZpZ1wiXG5cdFx0XHRcdCAgOmdyb3Vwcz1cImdyb3Vwc1wiIDpzdWJBZG1pbnNHcm91cHM9XCJzdWJBZG1pbnNHcm91cHNcIiA6cXVvdGFPcHRpb25zPVwicXVvdGFPcHRpb25zXCIgLz5cblx0XHQ8aW5maW5pdGUtbG9hZGluZyBAaW5maW5pdGU9XCJpbmZpbml0ZUhhbmRsZXJcIiByZWY9XCJpbmZpbml0ZUxvYWRpbmdcIj5cblx0XHRcdDxkaXYgc2xvdD1cInNwaW5uZXJcIj48ZGl2IGNsYXNzPVwidXNlcnMtaWNvbi1sb2FkaW5nIGljb24tbG9hZGluZ1wiPjwvZGl2PjwvZGl2PlxuXHRcdFx0PGRpdiBzbG90PVwibm8tbW9yZVwiPjxkaXYgY2xhc3M9XCJ1c2Vycy1saXN0LWVuZFwiPuKAlCB7e3QoJ3NldHRpbmdzJywgJ25vIG1vcmUgcmVzdWx0cycpfX0g4oCUPC9kaXY+PC9kaXY+XG5cdFx0XHQ8ZGl2IHNsb3Q9XCJuby1yZXN1bHRzXCI+XG5cdFx0XHRcdDxkaXYgaWQ9XCJlbXB0eWNvbnRlbnRcIj5cblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbi1jb250YWN0cy1kYXJrXCI+PC9kaXY+XG5cdFx0XHRcdFx0PGgyPnt7dCgnc2V0dGluZ3MnLCAnTm8gdXNlcnMgaW4gaGVyZScpfX08L2gyPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvaW5maW5pdGUtbG9hZGluZz5cblx0PC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHVzZXJSb3cgZnJvbSAnLi91c2VyTGlzdC91c2VyUm93JztcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICd2dWUtbXVsdGlzZWxlY3QnO1xuaW1wb3J0IEluZmluaXRlTG9hZGluZyBmcm9tICd2dWUtaW5maW5pdGUtbG9hZGluZyc7XG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0bmFtZTogJ3VzZXJMaXN0Jyxcblx0cHJvcHM6IFsndXNlcnMnLCAnc2hvd0NvbmZpZyddLFxuXHRjb21wb25lbnRzOiB7XG5cdFx0dXNlclJvdyxcblx0XHRNdWx0aXNlbGVjdCxcblx0XHRJbmZpbml0ZUxvYWRpbmdcblx0fSxcblx0ZGF0YSgpIHtcblx0XHRsZXQgdW5saW1pdGVkUXVvdGEgPSB7aWQ6J25vbmUnLCBsYWJlbDp0KCdzZXR0aW5ncycsICdVbmxpbWl0ZWQnKX0sXG5cdFx0XHRkZWZhdWx0UXVvdGEgPSB7aWQ6J2RlZmF1bHQnLCBsYWJlbDp0KCdzZXR0aW5ncycsICdEZWZhdWx0IHF1b3RhJyl9O1xuXHRcdHJldHVybiB7XG5cdFx0XHR1bmxpbWl0ZWRRdW90YTogdW5saW1pdGVkUXVvdGEsXG5cdFx0XHRkZWZhdWx0UXVvdGE6IGRlZmF1bHRRdW90YSxcblx0XHRcdGxvYWRpbmc6IGZhbHNlLFxuXHRcdFx0c2Nyb2xsZWQ6IGZhbHNlLFxuXHRcdFx0bmV3VXNlcjoge1xuXHRcdFx0XHRpZDonJyxcblx0XHRcdFx0ZGlzcGxheU5hbWU6JycsXG5cdFx0XHRcdHBhc3N3b3JkOicnLFxuXHRcdFx0XHRtYWlsQWRkcmVzczonJyxcblx0XHRcdFx0Z3JvdXBzOiBbXSxcblx0XHRcdFx0c3ViQWRtaW5zR3JvdXBzOiBbXSxcblx0XHRcdFx0cXVvdGE6IGRlZmF1bHRRdW90YVxuXHRcdFx0fVxuXHRcdH07XG5cdH0sXG5cdG1vdW50ZWQoKSB7XG5cdFx0aWYgKCF0aGlzLnNldHRpbmdzLmNhbkNoYW5nZVBhc3N3b3JkKSB7XG5cdFx0XHRPQy5Ob3RpZmljYXRpb24uc2hvd1RlbXBvcmFyeSh0KCdzZXR0aW5ncycsJ1Bhc3N3b3JkIGNoYW5nZSBpcyBkaXNhYmxlZCBiZWNhdXNlIHRoZSBtYXN0ZXIga2V5IGlzIGRpc2FibGVkJykpO1xuXHRcdH1cblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHRzZXR0aW5ncygpIHtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFNlcnZlckRhdGE7XG5cdFx0fSxcblx0XHRmaWx0ZXJlZFVzZXJzKCkge1xuXHRcdFx0aWYgKHRoaXMuJHJvdXRlLmhhc2ggPT09ICcjZ3JvdXBfZGlzYWJsZWQnKSB7XG5cdFx0XHRcdGxldCBkaXNhYmxlZFVzZXJzID0gdGhpcy51c2Vycy5maWx0ZXIodXNlciA9PiB1c2VyLmVuYWJsZWQgIT09IHRydWUpO1xuXHRcdFx0XHRpZiAoZGlzYWJsZWRVc2Vycy5sZW5ndGg9PT0wICYmIHRoaXMuJHJlZnMuaW5maW5pdGVMb2FkaW5nICYmIHRoaXMuJHJlZnMuaW5maW5pdGVMb2FkaW5nLmlzQ29tcGxldGUpIHtcblx0XHRcdFx0XHQvLyBkaXNhYmxlZCBncm91cCBpcyBlbXB0eSwgcmVkaXJlY3Rpb24gdG8gYWxsIHVzZXJzXG5cdFx0XHRcdFx0d2luZG93LmxvY2F0aW9uLmhhc2ggPSAnI2dyb3VwX2V2ZXJ5b25lJztcblx0XHRcdFx0XHR0aGlzLiRyZWZzLmluZmluaXRlTG9hZGluZy4kZW1pdCgnJEluZmluaXRlTG9hZGluZzpyZXNldCcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBkaXNhYmxlZFVzZXJzO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMudXNlcnMuZmlsdGVyKHVzZXIgPT4gdXNlci5lbmFibGVkID09PSB0cnVlKTtcblx0XHR9LFxuXHRcdGdyb3VwcygpIHtcblx0XHRcdC8vIGRhdGEgcHJvdmlkZWQgcGhwIHNpZGUgKyByZW1vdmUgdGhlIGRpc2FibGVkIGdyb3VwXG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRHcm91cHMuZmlsdGVyKGdyb3VwID0+IGdyb3VwLmlkICE9PSAnX2Rpc2FibGVkJyk7XG5cdFx0fSxcblx0XHRzdWJBZG1pbnNHcm91cHMoKSB7XG5cdFx0XHQvLyBkYXRhIHByb3ZpZGVkIHBocCBzaWRlXG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTZXJ2ZXJEYXRhLnN1YmFkbWluZ3JvdXBzO1xuXHRcdH0sXG5cdFx0cXVvdGFPcHRpb25zKCkge1xuXHRcdFx0Ly8gY29udmVydCB0aGUgcHJlc2V0IGFycmF5IGludG8gb2JqZWN0c1xuXHRcdFx0bGV0IHF1b3RhUHJlc2V0ID0gdGhpcy5zZXR0aW5ncy5xdW90YVByZXNldC5yZWR1Y2UoKGFjYywgY3VyKSA9PiBhY2MuY29uY2F0KHtpZDpjdXIsIGxhYmVsOmN1cn0pLCBbXSk7XG5cdFx0XHQvLyBhZGQgZGVmYXVsdCBwcmVzZXRzXG5cdFx0XHRxdW90YVByZXNldC51bnNoaWZ0KHRoaXMudW5saW1pdGVkUXVvdGEpO1xuXHRcdFx0cXVvdGFQcmVzZXQudW5zaGlmdCh0aGlzLmRlZmF1bHRRdW90YSk7XG5cdFx0XHRyZXR1cm4gcXVvdGFQcmVzZXQ7XG5cdFx0fSxcblx0XHRtaW5QYXNzd29yZExlbmd0aCgpIHtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBhc3N3b3JkUG9saWN5TWluTGVuZ3RoO1xuXHRcdH0sXG5cdFx0dXNlcnNPZmZzZXQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVc2Vyc09mZnNldDtcblx0XHR9LFxuXHRcdHVzZXJzTGltaXQoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVc2Vyc0xpbWl0O1xuXHRcdH0sXG5cdFx0Ly8gZ2V0IHNlbGVjdGVkIGhhc2hcblx0XHRzZWxlY3RlZEdyb3VwKCkge1xuXHRcdFx0bGV0IGhhc2ggPSB0aGlzLiRyb3V0ZS5oYXNoO1xuXHRcdFx0aWYgKHR5cGVvZiBoYXNoID09PSAnc3RyaW5nJyAmJiBoYXNoLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Ly8gd2UgaGF2ZSBhIHZhbGlkIGhhc2g6IGdyb3VwWFhYWFxuXHRcdFx0XHQvLyBncm91cF9YWFhYIGFyZSByZXNlcnZlZCBncm91cHNcblx0XHRcdFx0bGV0IHNwbGl0ID0gaGFzaC5zcGxpdCgnZ3JvdXAnKTtcblx0XHRcdFx0aWYgKHNwbGl0Lmxlbmd0aCA9PT0gMiAmJiBzcGxpdFsxXS5jaGFyQXQoMCkgIT09ICdfJykge1xuXHRcdFx0XHRcdHJldHVybiBoYXNoLnNwbGl0KCdncm91cCcpWzFdO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXHR9LFxuXHR3YXRjaDoge1xuXHRcdC8vIHdhdGNoIHVybCBjaGFuZ2UgYW5kIGdyb3VwIHNlbGVjdFxuXHRcdHNlbGVjdGVkR3JvdXA6IGZ1bmN0aW9uICh2YWwsIG9sZCkge1xuXHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KCdyZXNldFVzZXJzJyk7XG5cdFx0XHR0aGlzLiRyZWZzLmluZmluaXRlTG9hZGluZy4kZW1pdCgnJEluZmluaXRlTG9hZGluZzpyZXNldCcpO1xuXHRcdH1cblx0fSxcblx0bWV0aG9kczoge1xuXHRcdG9uU2Nyb2xsKGV2ZW50KSB7XG5cdFx0XHR0aGlzLnNjcm9sbGVkID0gZXZlbnQudGFyZ2V0LnNjcm9sbFRvcD4wO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBWYWxpZGF0ZSBxdW90YSBzdHJpbmcgdG8gbWFrZSBzdXJlIGl0J3MgYSB2YWxpZCBodW1hbiBmaWxlIHNpemVcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gcXVvdGEgUXVvdGEgaW4gcmVhZGFibGUgZm9ybWF0ICc1IEdCJ1xuXHRcdCAqIEByZXR1cm5zIHtPYmplY3R9XG5cdFx0ICovXG5cdFx0dmFsaWRhdGVRdW90YShxdW90YSkge1xuXHRcdFx0Ly8gb25seSB1c2VkIGZvciBuZXcgcHJlc2V0cyBzZW50IHRocm91Z2ggQFRhZ1xuXHRcdFx0bGV0IHZhbGlkUXVvdGEgPSBPQy5VdGlsLmNvbXB1dGVyRmlsZVNpemUocXVvdGEpO1xuXHRcdFx0aWYgKHZhbGlkUXVvdGEgIT09IG51bGwgJiYgdmFsaWRRdW90YSA+IDApIHtcblx0XHRcdFx0Ly8gdW5pZnkgZm9ybWF0IG91dHB1dFxuXHRcdFx0XHRxdW90YSA9IE9DLlV0aWwuaHVtYW5GaWxlU2l6ZShPQy5VdGlsLmNvbXB1dGVyRmlsZVNpemUocXVvdGEpKTtcblx0XHRcdFx0cmV0dXJuIHRoaXMubmV3VXNlci5xdW90YSA9IHtpZDogcXVvdGEsIGxhYmVsOiBxdW90YX07XG5cdFx0XHR9XG5cdFx0XHQvLyBEZWZhdWx0IGlzIHVubGltaXRlZFxuXHRcdFx0cmV0dXJuIHRoaXMubmV3VXNlci5xdW90YSA9IHRoaXMucXVvdGFPcHRpb25zWzBdO1xuXHRcdH0sXG5cblx0XHRpbmZpbml0ZUhhbmRsZXIoJHN0YXRlKSB7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZ2V0VXNlcnMnLCB7b2Zmc2V0OnRoaXMudXNlcnNPZmZzZXQsIGxpbWl0OnRoaXMudXNlcnNMaW1pdCwgZ3JvdXA6dGhpcy5zZWxlY3RlZEdyb3VwfSlcblx0XHRcdFx0LnRoZW4oKHJlc3BvbnNlKSA9PiB7cmVzcG9uc2U/JHN0YXRlLmxvYWRlZCgpOiRzdGF0ZS5jb21wbGV0ZSgpfSk7XG5cdFx0fSxcblxuXHRcdHJlc2V0Rm9ybSAoKSB7XG5cdFx0XHQvLyByZXZlcnQgZm9ybSB0byBvcmlnaW5hbCBzdGF0ZVxuXHRcdFx0T2JqZWN0LmFzc2lnbih0aGlzLm5ld1VzZXIsIHRoaXMuJG9wdGlvbnMuZGF0YS5jYWxsKHRoaXMpLm5ld1VzZXIpO1xuXHRcdFx0dGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH0sXG5cdFx0Y3JlYXRlVXNlcigpIHtcblx0XHRcdHRoaXMubG9hZGluZyA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnYWRkVXNlcicsIHtcblx0XHRcdFx0dXNlcmlkOiB0aGlzLm5ld1VzZXIuaWQsXG5cdFx0XHRcdHBhc3N3b3JkOiB0aGlzLm5ld1VzZXIucGFzc3dvcmQsXG5cdFx0XHRcdGVtYWlsOiB0aGlzLm5ld1VzZXIubWFpbEFkZHJlc3MsXG5cdFx0XHRcdGdyb3VwczogdGhpcy5uZXdVc2VyLmdyb3Vwcy5tYXAoZ3JvdXAgPT4gZ3JvdXAuaWQpLFxuXHRcdFx0XHRzdWJhZG1pbjogdGhpcy5uZXdVc2VyLnN1YkFkbWluc0dyb3Vwcy5tYXAoZ3JvdXAgPT4gZ3JvdXAuaWQpLFxuXHRcdFx0XHRxdW90YTogdGhpcy5uZXdVc2VyLnF1b3RhLmlkXG5cdFx0XHR9KS50aGVuKCgpID0+IHRoaXMucmVzZXRGb3JtKCkpO1xuXHRcdH1cblx0fVxufVxuPC9zY3JpcHQ+XG5cblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gc3JjL2NvbXBvbmVudHMvdXNlckxpc3QudnVlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///14\n");
+eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__userList_userRow__ = __webpack_require__(45);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_multiselect__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_multiselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_multiselect__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading__ = __webpack_require__(47);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'userList',\n\tprops: ['users', 'showConfig'],\n\tcomponents: {\n\t\tuserRow: __WEBPACK_IMPORTED_MODULE_0__userList_userRow__[\"a\" /* default */],\n\t\tMultiselect: __WEBPACK_IMPORTED_MODULE_1_vue_multiselect___default.a,\n\t\tInfiniteLoading: __WEBPACK_IMPORTED_MODULE_2_vue_infinite_loading___default.a\n\t},\n\tdata: function data() {\n\t\tvar unlimitedQuota = { id: 'none', label: t('settings', 'Unlimited') },\n\t\t defaultQuota = { id: 'default', label: t('settings', 'Default quota') };\n\t\treturn {\n\t\t\tunlimitedQuota: unlimitedQuota,\n\t\t\tdefaultQuota: defaultQuota,\n\t\t\tloading: false,\n\t\t\tscrolled: false,\n\t\t\tnewUser: {\n\t\t\t\tid: '',\n\t\t\t\tdisplayName: '',\n\t\t\t\tpassword: '',\n\t\t\t\tmailAddress: '',\n\t\t\t\tgroups: [],\n\t\t\t\tsubAdminsGroups: [],\n\t\t\t\tquota: defaultQuota\n\t\t\t}\n\t\t};\n\t},\n\tmounted: function mounted() {\n\t\tif (!this.settings.canChangePassword) {\n\t\t\tOC.Notification.showTemporary(t('settings', 'Password change is disabled because the master key is disabled'));\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tsettings: function settings() {\n\t\t\treturn this.$store.getters.getServerData;\n\t\t},\n\t\tfilteredUsers: function filteredUsers() {\n\t\t\tif (this.$route.hash === '#group_disabled') {\n\t\t\t\tvar disabledUsers = this.users.filter(function (user) {\n\t\t\t\t\treturn user.enabled !== true;\n\t\t\t\t});\n\t\t\t\tif (disabledUsers.length === 0 && this.$refs.infiniteLoading && this.$refs.infiniteLoading.isComplete) {\n\t\t\t\t\t// disabled group is empty, redirection to all users\n\t\t\t\t\twindow.location.hash = '#group_everyone';\n\t\t\t\t\tthis.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');\n\t\t\t\t}\n\t\t\t\treturn disabledUsers;\n\t\t\t}\n\t\t\treturn this.users.filter(function (user) {\n\t\t\t\treturn user.enabled === true;\n\t\t\t});\n\t\t},\n\t\tgroups: function groups() {\n\t\t\t// data provided php side + remove the disabled group\n\t\t\treturn this.$store.getters.getGroups.filter(function (group) {\n\t\t\t\treturn group.id !== '_disabled';\n\t\t\t});\n\t\t},\n\t\tsubAdminsGroups: function subAdminsGroups() {\n\t\t\t// data provided php side\n\t\t\treturn this.$store.getters.getServerData.subadmingroups;\n\t\t},\n\t\tquotaOptions: function quotaOptions() {\n\t\t\t// convert the preset array into objects\n\t\t\tvar quotaPreset = this.settings.quotaPreset.reduce(function (acc, cur) {\n\t\t\t\treturn acc.concat({ id: cur, label: cur });\n\t\t\t}, []);\n\t\t\t// add default presets\n\t\t\tquotaPreset.unshift(this.unlimitedQuota);\n\t\t\tquotaPreset.unshift(this.defaultQuota);\n\t\t\treturn quotaPreset;\n\t\t},\n\t\tminPasswordLength: function minPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\t\tusersOffset: function usersOffset() {\n\t\t\treturn this.$store.getters.getUsersOffset;\n\t\t},\n\t\tusersLimit: function usersLimit() {\n\t\t\treturn this.$store.getters.getUsersLimit;\n\t\t},\n\n\t\t// get selected hash\n\t\tselectedGroup: function selectedGroup() {\n\t\t\tvar hash = this.$route.hash;\n\t\t\tif (typeof hash === 'string' && hash.length > 0) {\n\t\t\t\t// we have a valid hash: groupXXXX\n\t\t\t\t// group_XXXX are reserved groups\n\t\t\t\tvar split = hash.split('group');\n\t\t\t\tif (split.length === 2 && split[1].charAt(0) !== '_') {\n\t\t\t\t\treturn hash.split('group')[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t},\n\twatch: {\n\t\t// watch url change and group select\n\t\tselectedGroup: function selectedGroup(val, old) {\n\t\t\tthis.$store.commit('resetUsers');\n\t\t\tthis.$refs.infiniteLoading.$emit('$InfiniteLoading:reset');\n\t\t}\n\t},\n\tmethods: {\n\t\tonScroll: function onScroll(event) {\n\t\t\tthis.scrolled = event.target.scrollTop > 0;\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Object}\n */\n\t\tvalidateQuota: function validateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tvar validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota !== null && validQuota > 0) {\n\t\t\t\t// unify format output\n\t\t\t\tquota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));\n\t\t\t\treturn this.newUser.quota = { id: quota, label: quota };\n\t\t\t}\n\t\t\t// Default is unlimited\n\t\t\treturn this.newUser.quota = this.quotaOptions[0];\n\t\t},\n\t\tinfiniteHandler: function infiniteHandler($state) {\n\t\t\tthis.$store.dispatch('getUsers', { offset: this.usersOffset, limit: this.usersLimit, group: this.selectedGroup }).then(function (response) {\n\t\t\t\tresponse ? $state.loaded() : $state.complete();\n\t\t\t});\n\t\t},\n\t\tresetForm: function resetForm() {\n\t\t\t// revert form to original state\n\t\t\tObject.assign(this.newUser, this.$options.data.call(this).newUser);\n\t\t\tthis.loading = false;\n\t\t},\n\t\tcreateUser: function createUser() {\n\t\t\tvar _this = this;\n\n\t\t\tthis.loading = true;\n\t\t\tthis.$store.dispatch('addUser', {\n\t\t\t\tuserid: this.newUser.id,\n\t\t\t\tpassword: this.newUser.password,\n\t\t\t\temail: this.newUser.mailAddress,\n\t\t\t\tgroups: this.newUser.groups.map(function (group) {\n\t\t\t\t\treturn group.id;\n\t\t\t\t}),\n\t\t\t\tsubadmin: this.newUser.subAdminsGroups.map(function (group) {\n\t\t\t\t\treturn group.id;\n\t\t\t\t}),\n\t\t\t\tquota: this.newUser.quota.id\n\t\t\t}).then(function () {\n\t\t\t\treturn _this.resetForm();\n\t\t\t});\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QudnVlP2JjNTEiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBdUdBO0FBQ0E7QUFDQTs7QUFFQTtPQUVBO2tCQUNBOztBQUVBO0FBQ0E7QUFFQTtBQUpBO3VCQUtBOzBEQUNBOzJEQUNBOzttQkFFQTtpQkFDQTtZQUNBO2FBQ0E7O1FBRUE7aUJBQ0E7Y0FDQTtpQkFDQTtZQUNBO3FCQUNBO1dBR0E7QUFUQTtBQUxBO0FBZUE7NkJBQ0E7d0NBQ0E7K0NBQ0E7QUFDQTtBQUNBOzs7Z0NBRUE7OEJBQ0E7QUFDQTswQ0FDQTsrQ0FDQTs7NkJBQ0E7OzJHQUNBO0FBQ0E7NEJBQ0E7c0NBQ0E7QUFDQTtXQUNBO0FBQ0E7OzRCQUNBOztBQUNBOzRCQUNBO0FBQ0E7O3dCQUNBOztBQUNBOzhDQUNBO0FBQ0E7NENBQ0E7QUFDQTt3Q0FDQTtBQUNBOzs7TUFDQTtBQUNBOzRCQUNBOzRCQUNBO1VBQ0E7QUFDQTtrREFDQTs4QkFDQTtBQUNBO3NDQUNBOzhCQUNBO0FBQ0E7b0NBQ0E7OEJBQ0E7QUFDQTs7QUFDQTswQ0FDQTswQkFDQTtvREFDQTtBQUNBO0FBQ0E7MkJBQ0E7MERBQ0E7Z0NBQ0E7QUFDQTtBQUNBO1VBQ0E7QUFFQTtBQXREQTs7QUF3REE7a0RBQ0E7c0JBQ0E7b0NBQ0E7QUFFQTtBQU5BOztxQ0FRQTs0Q0FDQTtBQUVBOzs7QUFNQTs7Ozs7OytDQUNBO0FBQ0E7NkNBQ0E7OENBQ0E7QUFDQTsyREFDQTtvREFDQTtBQUNBO0FBQ0E7aURBQ0E7QUFFQTtvREFDQTtvR0FDQTs7QUFDQTtBQUVBO2tDQUNBO0FBQ0E7NkRBQ0E7a0JBQ0E7QUFDQTs7QUFDQTs7a0JBQ0E7O3lCQUVBOzJCQUNBO3dCQUNBOztrQkFDQTs7O2tCQUNBOzs4QkFDQTtBQU5BO2lCQU9BOztBQUVBO0FBNUNBO0FBOUZBIiwiZmlsZSI6IjE0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8ZGl2IGlkPVwiYXBwLWNvbnRlbnRcIiBjbGFzcz1cInVzZXItbGlzdC1ncmlkXCIgdi1vbjpzY3JvbGwucGFzc2l2ZT1cIm9uU2Nyb2xsXCI+XG5cdFx0PGRpdiBjbGFzcz1cInJvd1wiIGlkPVwiZ3JpZC1oZWFkZXJcIiA6Y2xhc3M9XCJ7J3N0aWNreSc6IHNjcm9sbGVkICYmICFzaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybX1cIj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJBdmF0YXJcIiBjbGFzcz1cImF2YXRhclwiPjwvZGl2PlxuXHRcdFx0PGRpdiBpZD1cImhlYWRlck5hbWVcIiBjbGFzcz1cIm5hbWVcIj57eyB0KCdzZXR0aW5ncycsICdVc2VybmFtZScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyRGlzcGxheU5hbWVcIiBjbGFzcz1cImRpc3BsYXlOYW1lXCI+e3sgdCgnc2V0dGluZ3MnLCAgJ0Z1bGwgbmFtZScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyUGFzc3dvcmRcIiBjbGFzcz1cInBhc3N3b3JkXCI+e3sgdCgnc2V0dGluZ3MnLCAgJ1Bhc3N3b3JkJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJBZGRyZXNzXCIgY2xhc3M9XCJtYWlsQWRkcmVzc1wiPnt7IHQoJ3NldHRpbmdzJywgICdFbWFpbCcpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyR3JvdXBzXCIgY2xhc3M9XCJncm91cHNcIj57eyB0KCdzZXR0aW5ncycsICAnR3JvdXBzJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJTdWJBZG1pbnNcIiBjbGFzcz1cInN1YmFkbWluc1wiXG5cdFx0XHRcdCB2LWlmPVwic3ViQWRtaW5zR3JvdXBzLmxlbmd0aD4wXCI+e3sgdCgnc2V0dGluZ3MnLCAnR3JvdXAgYWRtaW4gZm9yJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgaWQ9XCJoZWFkZXJRdW90YVwiIGNsYXNzPVwicXVvdGFcIj57eyB0KCdzZXR0aW5ncycsICdRdW90YScpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGlkPVwiaGVhZGVyTGFuZ3VhZ2VzXCIgY2xhc3M9XCJsYW5ndWFnZXNcIlxuXHRcdFx0XHQgdi1pZj1cInNob3dDb25maWcuc2hvd0xhbmd1YWdlc1wiPnt7IHQoJ3NldHRpbmdzJywgJ0xhbmd1YWdlcycpIH19PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiaGVhZGVyU3RvcmFnZUxvY2F0aW9uIHN0b3JhZ2VMb2NhdGlvblwiXG5cdFx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcIj57eyB0KCdzZXR0aW5ncycsICdTdG9yYWdlIGxvY2F0aW9uJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJoZWFkZXJVc2VyQmFja2VuZCB1c2VyQmFja2VuZFwiXG5cdFx0XHRcdCB2LWlmPVwic2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcIj57eyB0KCdzZXR0aW5ncycsICdVc2VyIGJhY2tlbmQnKSB9fTwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImhlYWRlckxhc3RMb2dpbiBsYXN0TG9naW5cIiBcblx0XHRcdFx0IHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYXN0TG9naW5cIj57eyB0KCdzZXR0aW5ncycsICdMYXN0IGxvZ2luJykgfX08L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPjwvZGl2PlxuXHRcdDwvZGl2PlxuXG5cdFx0PGZvcm0gY2xhc3M9XCJyb3dcIiBpZD1cIm5ldy11c2VyXCIgdi1zaG93PVwic2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm1cIlxuXHRcdFx0ICB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwiY3JlYXRlVXNlclwiIDpkaXNhYmxlZD1cImxvYWRpbmdcIlxuXHRcdFx0ICA6Y2xhc3M9XCJ7J3N0aWNreSc6IHNjcm9sbGVkICYmIHNob3dDb25maWcuc2hvd05ld1VzZXJGb3JtfVwiPlxuXHRcdFx0PGRpdiA6Y2xhc3M9XCJsb2FkaW5nPydpY29uLWxvYWRpbmctc21hbGwnOidpY29uLWFkZCdcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJuYW1lXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld3VzZXJuYW1lXCIgdHlwZT1cInRleHRcIiByZXF1aXJlZCB2LW1vZGVsPVwibmV3VXNlci5pZFwiXG5cdFx0XHRcdFx0ICAgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnVXNlciBuYW1lJylcIiBuYW1lPVwidXNlcm5hbWVcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCJcblx0XHRcdFx0XHQgICBwYXR0ZXJuPVwiW2EtekEtWjAtOSBfXFwuQFxcLSddK1wiPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZGlzcGxheU5hbWVcIj5cblx0XHRcdFx0PGlucHV0IGlkPVwibmV3ZGlzcGxheW5hbWVcIiB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJuZXdVc2VyLmRpc3BsYXlOYW1lXCJcblx0XHRcdFx0XHQgICA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdEaXNwbGF5IG5hbWUnKVwiIG5hbWU9XCJkaXNwbGF5bmFtZVwiXG5cdFx0XHRcdFx0ICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJub25lXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInBhc3N3b3JkXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld3VzZXJwYXNzd29yZFwiIHR5cGU9XCJwYXNzd29yZFwiIHYtbW9kZWw9XCJuZXdVc2VyLnBhc3N3b3JkXCJcblx0XHRcdFx0XHQgICA6cmVxdWlyZWQ9XCJuZXdVc2VyLm1haWxBZGRyZXNzPT09JydcIlxuXHRcdFx0XHRcdCAgIDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1Bhc3N3b3JkJylcIiBuYW1lPVwicGFzc3dvcmRcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCJcblx0XHRcdFx0XHQgICA6bWlubGVuZ3RoPVwibWluUGFzc3dvcmRMZW5ndGhcIj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1haWxBZGRyZXNzXCI+XG5cdFx0XHRcdDxpbnB1dCBpZD1cIm5ld2VtYWlsXCIgdHlwZT1cImVtYWlsXCIgdi1tb2RlbD1cIm5ld1VzZXIubWFpbEFkZHJlc3NcIlxuXHRcdFx0XHRcdCAgIDpyZXF1aXJlZD1cIm5ld1VzZXIucGFzc3dvcmQ9PT0nJ1wiXG5cdFx0XHRcdFx0ICAgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnTWFpbCBhZGRyZXNzJylcIiBuYW1lPVwiZW1haWxcIlxuXHRcdFx0XHRcdCAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwibm9uZVwiIGF1dG9jb3JyZWN0PVwib2ZmXCI+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJncm91cHNcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwiZ3JvdXBzXCIgdi1tb2RlbD1cIm5ld1VzZXIuZ3JvdXBzXCJcblx0XHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ0FkZCB1c2VyIGluIGdyb3VwJylcIlxuXHRcdFx0XHRcdFx0XHQgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdFx0IDptdWx0aXBsZT1cInRydWVcIiA6Y2xvc2Utb24tc2VsZWN0PVwiZmFsc2VcIj5cblx0XHRcdFx0XHQ8c3BhbiBzbG90PVwibm9SZXN1bHRcIj57e3QoJ3NldHRpbmdzJywnTm8gcmVzdWx0Jyl9fTwvc3Bhbj5cblx0XHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cInN1YmFkbWluc1wiIHYtaWY9XCJzdWJBZG1pbnNHcm91cHMubGVuZ3RoPjBcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwic3ViQWRtaW5zR3JvdXBzXCIgdi1tb2RlbD1cIm5ld1VzZXIuc3ViQWRtaW5zR3JvdXBzXCJcblx0XHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1NldCB1c2VyIGFzIGFkbWluIGZvcicpXCJcblx0XHRcdFx0XHRcdFx0IGxhYmVsPVwibmFtZVwiIHRyYWNrLWJ5PVwiaWRcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHRcdCA6bXVsdGlwbGU9XCJ0cnVlXCIgOmNsb3NlLW9uLXNlbGVjdD1cImZhbHNlXCI+XG5cdFx0XHRcdFx0PHNwYW4gc2xvdD1cIm5vUmVzdWx0XCI+e3t0KCdzZXR0aW5ncycsJ05vIHJlc3VsdCcpfX08L3NwYW4+XG5cdFx0XHQ8L211bHRpc2VsZWN0PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwicXVvdGFcIj5cblx0XHRcdFx0PG11bHRpc2VsZWN0IDpvcHRpb25zPVwicXVvdGFPcHRpb25zXCIgdi1tb2RlbD1cIm5ld1VzZXIucXVvdGFcIlxuXHRcdFx0XHRcdFx0XHQgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnU2VsZWN0IHVzZXIgcXVvdGEnKVwiXG5cdFx0XHRcdFx0XHRcdCBsYWJlbD1cImxhYmVsXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdFx0IDphbGxvd0VtcHR5PVwiZmFsc2VcIiA6dGFnZ2FibGU9XCJ0cnVlXCJcblx0XHRcdFx0XHRcdCBcdCBAdGFnPVwidmFsaWRhdGVRdW90YVwiID5cblx0XHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImxhbmd1YWdlc1wiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYW5ndWFnZXNcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJzdG9yYWdlTG9jYXRpb25cIiB2LWlmPVwic2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQmFja2VuZFwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dVc2VyQmFja2VuZFwiPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImxhc3RMb2dpblwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dMYXN0TG9naW5cIj48L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPlxuXHRcdFx0XHQ8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGlkPVwibmV3c3VibWl0XCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeSBpY29uLWNoZWNrbWFyay13aGl0ZSBoYXMtdG9vbHRpcFwiXG5cdFx0XHRcdFx0ICAgdmFsdWU9XCJcIiA6dGl0bGU9XCJ0KCdzZXR0aW5ncycsICdBZGQgYSBuZXcgdXNlcicpXCI+XG5cdFx0XHRcdDxpbnB1dCB0eXBlPVwicmVzZXRcIiBpZD1cIm5ld3Jlc2V0XCIgY2xhc3M9XCJidXR0b24gaWNvbi1jbG9zZSBoYXMtdG9vbHRpcFwiIEBjbGljaz1cInJlc2V0Rm9ybVwiXG5cdFx0XHRcdFx0ICAgdmFsdWU9XCJcIiA6dGl0bGU9XCJ0KCdzZXR0aW5ncycsICdDYW5jZWwgYW5kIHJlc2V0IHRoZSBmb3JtJylcIj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZm9ybT5cblxuXHRcdDx1c2VyLXJvdyB2LWZvcj1cIih1c2VyLCBrZXkpIGluIGZpbHRlcmVkVXNlcnNcIiA6dXNlcj1cInVzZXJcIiA6a2V5PVwia2V5XCIgOnNldHRpbmdzPVwic2V0dGluZ3NcIiA6c2hvd0NvbmZpZz1cInNob3dDb25maWdcIlxuXHRcdFx0XHQgIDpncm91cHM9XCJncm91cHNcIiA6c3ViQWRtaW5zR3JvdXBzPVwic3ViQWRtaW5zR3JvdXBzXCIgOnF1b3RhT3B0aW9ucz1cInF1b3RhT3B0aW9uc1wiIC8+XG5cdFx0PGluZmluaXRlLWxvYWRpbmcgQGluZmluaXRlPVwiaW5maW5pdGVIYW5kbGVyXCIgcmVmPVwiaW5maW5pdGVMb2FkaW5nXCI+XG5cdFx0XHQ8ZGl2IHNsb3Q9XCJzcGlubmVyXCI+PGRpdiBjbGFzcz1cInVzZXJzLWljb24tbG9hZGluZyBpY29uLWxvYWRpbmdcIj48L2Rpdj48L2Rpdj5cblx0XHRcdDxkaXYgc2xvdD1cIm5vLW1vcmVcIj48ZGl2IGNsYXNzPVwidXNlcnMtbGlzdC1lbmRcIj7igJQge3t0KCdzZXR0aW5ncycsICdubyBtb3JlIHJlc3VsdHMnKX19IOKAlDwvZGl2PjwvZGl2PlxuXHRcdFx0PGRpdiBzbG90PVwibm8tcmVzdWx0c1wiPlxuXHRcdFx0XHQ8ZGl2IGlkPVwiZW1wdHljb250ZW50XCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImljb24tY29udGFjdHMtZGFya1wiPjwvZGl2PlxuXHRcdFx0XHRcdDxoMj57e3QoJ3NldHRpbmdzJywgJ05vIHVzZXJzIGluIGhlcmUnKX19PC9oMj5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2luZmluaXRlLWxvYWRpbmc+XG5cdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCB1c2VyUm93IGZyb20gJy4vdXNlckxpc3QvdXNlclJvdyc7XG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAndnVlLW11bHRpc2VsZWN0JztcbmltcG9ydCBJbmZpbml0ZUxvYWRpbmcgZnJvbSAndnVlLWluZmluaXRlLWxvYWRpbmcnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICd1c2VyTGlzdCcsXG5cdHByb3BzOiBbJ3VzZXJzJywgJ3Nob3dDb25maWcnXSxcblx0Y29tcG9uZW50czoge1xuXHRcdHVzZXJSb3csXG5cdFx0TXVsdGlzZWxlY3QsXG5cdFx0SW5maW5pdGVMb2FkaW5nXG5cdH0sXG5cdGRhdGEoKSB7XG5cdFx0bGV0IHVubGltaXRlZFF1b3RhID0ge2lkOidub25lJywgbGFiZWw6dCgnc2V0dGluZ3MnLCAnVW5saW1pdGVkJyl9LFxuXHRcdFx0ZGVmYXVsdFF1b3RhID0ge2lkOidkZWZhdWx0JywgbGFiZWw6dCgnc2V0dGluZ3MnLCAnRGVmYXVsdCBxdW90YScpfTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dW5saW1pdGVkUXVvdGE6IHVubGltaXRlZFF1b3RhLFxuXHRcdFx0ZGVmYXVsdFF1b3RhOiBkZWZhdWx0UXVvdGEsXG5cdFx0XHRsb2FkaW5nOiBmYWxzZSxcblx0XHRcdHNjcm9sbGVkOiBmYWxzZSxcblx0XHRcdG5ld1VzZXI6IHtcblx0XHRcdFx0aWQ6JycsXG5cdFx0XHRcdGRpc3BsYXlOYW1lOicnLFxuXHRcdFx0XHRwYXNzd29yZDonJyxcblx0XHRcdFx0bWFpbEFkZHJlc3M6JycsXG5cdFx0XHRcdGdyb3VwczogW10sXG5cdFx0XHRcdHN1YkFkbWluc0dyb3VwczogW10sXG5cdFx0XHRcdHF1b3RhOiBkZWZhdWx0UXVvdGFcblx0XHRcdH1cblx0XHR9O1xuXHR9LFxuXHRtb3VudGVkKCkge1xuXHRcdGlmICghdGhpcy5zZXR0aW5ncy5jYW5DaGFuZ2VQYXNzd29yZCkge1xuXHRcdFx0T0MuTm90aWZpY2F0aW9uLnNob3dUZW1wb3JhcnkodCgnc2V0dGluZ3MnLCdQYXNzd29yZCBjaGFuZ2UgaXMgZGlzYWJsZWQgYmVjYXVzZSB0aGUgbWFzdGVyIGtleSBpcyBkaXNhYmxlZCcpKTtcblx0XHR9XG5cdH0sXG5cdGNvbXB1dGVkOiB7XG5cdFx0c2V0dGluZ3MoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTZXJ2ZXJEYXRhO1xuXHRcdH0sXG5cdFx0ZmlsdGVyZWRVc2VycygpIHtcblx0XHRcdGlmICh0aGlzLiRyb3V0ZS5oYXNoID09PSAnI2dyb3VwX2Rpc2FibGVkJykge1xuXHRcdFx0XHRsZXQgZGlzYWJsZWRVc2VycyA9IHRoaXMudXNlcnMuZmlsdGVyKHVzZXIgPT4gdXNlci5lbmFibGVkICE9PSB0cnVlKTtcblx0XHRcdFx0aWYgKGRpc2FibGVkVXNlcnMubGVuZ3RoPT09MCAmJiB0aGlzLiRyZWZzLmluZmluaXRlTG9hZGluZyAmJiB0aGlzLiRyZWZzLmluZmluaXRlTG9hZGluZy5pc0NvbXBsZXRlKSB7XG5cdFx0XHRcdFx0Ly8gZGlzYWJsZWQgZ3JvdXAgaXMgZW1wdHksIHJlZGlyZWN0aW9uIHRvIGFsbCB1c2Vyc1xuXHRcdFx0XHRcdHdpbmRvdy5sb2NhdGlvbi5oYXNoID0gJyNncm91cF9ldmVyeW9uZSc7XG5cdFx0XHRcdFx0dGhpcy4kcmVmcy5pbmZpbml0ZUxvYWRpbmcuJGVtaXQoJyRJbmZpbml0ZUxvYWRpbmc6cmVzZXQnKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gZGlzYWJsZWRVc2Vycztcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLnVzZXJzLmZpbHRlcih1c2VyID0+IHVzZXIuZW5hYmxlZCA9PT0gdHJ1ZSk7XG5cdFx0fSxcblx0XHRncm91cHMoKSB7XG5cdFx0XHQvLyBkYXRhIHByb3ZpZGVkIHBocCBzaWRlICsgcmVtb3ZlIHRoZSBkaXNhYmxlZCBncm91cFxuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0R3JvdXBzLmZpbHRlcihncm91cCA9PiBncm91cC5pZCAhPT0gJ19kaXNhYmxlZCcpO1xuXHRcdH0sXG5cdFx0c3ViQWRtaW5zR3JvdXBzKCkge1xuXHRcdFx0Ly8gZGF0YSBwcm92aWRlZCBwaHAgc2lkZVxuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U2VydmVyRGF0YS5zdWJhZG1pbmdyb3Vwcztcblx0XHR9LFxuXHRcdHF1b3RhT3B0aW9ucygpIHtcblx0XHRcdC8vIGNvbnZlcnQgdGhlIHByZXNldCBhcnJheSBpbnRvIG9iamVjdHNcblx0XHRcdGxldCBxdW90YVByZXNldCA9IHRoaXMuc2V0dGluZ3MucXVvdGFQcmVzZXQucmVkdWNlKChhY2MsIGN1cikgPT4gYWNjLmNvbmNhdCh7aWQ6Y3VyLCBsYWJlbDpjdXJ9KSwgW10pO1xuXHRcdFx0Ly8gYWRkIGRlZmF1bHQgcHJlc2V0c1xuXHRcdFx0cXVvdGFQcmVzZXQudW5zaGlmdCh0aGlzLnVubGltaXRlZFF1b3RhKTtcblx0XHRcdHF1b3RhUHJlc2V0LnVuc2hpZnQodGhpcy5kZWZhdWx0UXVvdGEpO1xuXHRcdFx0cmV0dXJuIHF1b3RhUHJlc2V0O1xuXHRcdH0sXG5cdFx0bWluUGFzc3dvcmRMZW5ndGgoKSB7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aDtcblx0XHR9LFxuXHRcdHVzZXJzT2Zmc2V0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VXNlcnNPZmZzZXQ7XG5cdFx0fSxcblx0XHR1c2Vyc0xpbWl0KCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VXNlcnNMaW1pdDtcblx0XHR9LFxuXHRcdC8vIGdldCBzZWxlY3RlZCBoYXNoXG5cdFx0c2VsZWN0ZWRHcm91cCgpIHtcblx0XHRcdGxldCBoYXNoID0gdGhpcy4kcm91dGUuaGFzaDtcblx0XHRcdGlmICh0eXBlb2YgaGFzaCA9PT0gJ3N0cmluZycgJiYgaGFzaC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdC8vIHdlIGhhdmUgYSB2YWxpZCBoYXNoOiBncm91cFhYWFhcblx0XHRcdFx0Ly8gZ3JvdXBfWFhYWCBhcmUgcmVzZXJ2ZWQgZ3JvdXBzXG5cdFx0XHRcdGxldCBzcGxpdCA9IGhhc2guc3BsaXQoJ2dyb3VwJyk7XG5cdFx0XHRcdGlmIChzcGxpdC5sZW5ndGggPT09IDIgJiYgc3BsaXRbMV0uY2hhckF0KDApICE9PSAnXycpIHtcblx0XHRcdFx0XHRyZXR1cm4gaGFzaC5zcGxpdCgnZ3JvdXAnKVsxXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblx0fSxcblx0d2F0Y2g6IHtcblx0XHQvLyB3YXRjaCB1cmwgY2hhbmdlIGFuZCBncm91cCBzZWxlY3Rcblx0XHRzZWxlY3RlZEdyb3VwOiBmdW5jdGlvbiAodmFsLCBvbGQpIHtcblx0XHRcdHRoaXMuJHN0b3JlLmNvbW1pdCgncmVzZXRVc2VycycpO1xuXHRcdFx0dGhpcy4kcmVmcy5pbmZpbml0ZUxvYWRpbmcuJGVtaXQoJyRJbmZpbml0ZUxvYWRpbmc6cmVzZXQnKTtcblx0XHR9XG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRvblNjcm9sbChldmVudCkge1xuXHRcdFx0dGhpcy5zY3JvbGxlZCA9IGV2ZW50LnRhcmdldC5zY3JvbGxUb3A+MDtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogVmFsaWRhdGUgcXVvdGEgc3RyaW5nIHRvIG1ha2Ugc3VyZSBpdCdzIGEgdmFsaWQgaHVtYW4gZmlsZSBzaXplXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHF1b3RhIFF1b3RhIGluIHJlYWRhYmxlIGZvcm1hdCAnNSBHQidcblx0XHQgKiBAcmV0dXJucyB7T2JqZWN0fVxuXHRcdCAqL1xuXHRcdHZhbGlkYXRlUXVvdGEocXVvdGEpIHtcblx0XHRcdC8vIG9ubHkgdXNlZCBmb3IgbmV3IHByZXNldHMgc2VudCB0aHJvdWdoIEBUYWdcblx0XHRcdGxldCB2YWxpZFF1b3RhID0gT0MuVXRpbC5jb21wdXRlckZpbGVTaXplKHF1b3RhKTtcblx0XHRcdGlmICh2YWxpZFF1b3RhICE9PSBudWxsICYmIHZhbGlkUXVvdGEgPiAwKSB7XG5cdFx0XHRcdC8vIHVuaWZ5IGZvcm1hdCBvdXRwdXRcblx0XHRcdFx0cXVvdGEgPSBPQy5VdGlsLmh1bWFuRmlsZVNpemUoT0MuVXRpbC5jb21wdXRlckZpbGVTaXplKHF1b3RhKSk7XG5cdFx0XHRcdHJldHVybiB0aGlzLm5ld1VzZXIucXVvdGEgPSB7aWQ6IHF1b3RhLCBsYWJlbDogcXVvdGF9O1xuXHRcdFx0fVxuXHRcdFx0Ly8gRGVmYXVsdCBpcyB1bmxpbWl0ZWRcblx0XHRcdHJldHVybiB0aGlzLm5ld1VzZXIucXVvdGEgPSB0aGlzLnF1b3RhT3B0aW9uc1swXTtcblx0XHR9LFxuXG5cdFx0aW5maW5pdGVIYW5kbGVyKCRzdGF0ZSkge1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2dldFVzZXJzJywge29mZnNldDp0aGlzLnVzZXJzT2Zmc2V0LCBsaW1pdDp0aGlzLnVzZXJzTGltaXQsIGdyb3VwOnRoaXMuc2VsZWN0ZWRHcm91cH0pXG5cdFx0XHRcdC50aGVuKChyZXNwb25zZSkgPT4ge3Jlc3BvbnNlPyRzdGF0ZS5sb2FkZWQoKTokc3RhdGUuY29tcGxldGUoKX0pO1xuXHRcdH0sXG5cblx0XHRyZXNldEZvcm0gKCkge1xuXHRcdFx0Ly8gcmV2ZXJ0IGZvcm0gdG8gb3JpZ2luYWwgc3RhdGVcblx0XHRcdE9iamVjdC5hc3NpZ24odGhpcy5uZXdVc2VyLCB0aGlzLiRvcHRpb25zLmRhdGEuY2FsbCh0aGlzKS5uZXdVc2VyKTtcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB9LFxuXHRcdGNyZWF0ZVVzZXIoKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZFVzZXInLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy5uZXdVc2VyLmlkLFxuXHRcdFx0XHRwYXNzd29yZDogdGhpcy5uZXdVc2VyLnBhc3N3b3JkLFxuXHRcdFx0XHRlbWFpbDogdGhpcy5uZXdVc2VyLm1haWxBZGRyZXNzLFxuXHRcdFx0XHRncm91cHM6IHRoaXMubmV3VXNlci5ncm91cHMubWFwKGdyb3VwID0+IGdyb3VwLmlkKSxcblx0XHRcdFx0c3ViYWRtaW46IHRoaXMubmV3VXNlci5zdWJBZG1pbnNHcm91cHMubWFwKGdyb3VwID0+IGdyb3VwLmlkKSxcblx0XHRcdFx0cXVvdGE6IHRoaXMubmV3VXNlci5xdW90YS5pZFxuXHRcdFx0fSkudGhlbigoKSA9PiB0aGlzLnJlc2V0Rm9ybSgpKTtcblx0XHR9XG5cdH1cbn1cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jb21wb25lbnRzL3VzZXJMaXN0LnZ1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n");
/***/ }),
/* 15 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__popoverMenu__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_click_outside__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_click_outside___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_click_outside__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_multiselect__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_multiselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_multiselect__);\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n//import Multiselect from '../../../node_modules/vue-multiselect/src/index';\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'userRow',\n\tprops: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig'],\n\tcomponents: {\n\t\tpopoverMenu: __WEBPACK_IMPORTED_MODULE_0__popoverMenu__[\"a\" /* default */],\n\t\tMultiselect: __WEBPACK_IMPORTED_MODULE_2_vue_multiselect___default.a\n\t},\n\tdirectives: {\n\t\tClickOutside: __WEBPACK_IMPORTED_MODULE_1_vue_click_outside___default.a\n\t},\n\tmounted: function mounted() {\n\t\t// prevent click outside event with popupItem.\n\t\tthis.popupItem = this.$el;\n\t},\n\tdata: function data() {\n\t\treturn {\n\t\t\trand: parseInt(Math.random() * 1000),\n\t\t\topenedMenu: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false\n\t\t\t}\n\t\t};\n\t},\n\n\tcomputed: {\n\t\t/* USER POPOVERMENU ACTIONS */\n\t\tuserActions: function userActions() {\n\t\t\treturn [{\n\t\t\t\ticon: 'icon-delete',\n\t\t\t\ttext: t('settings', 'Delete user'),\n\t\t\t\taction: this.deleteUser\n\t\t\t}, {\n\t\t\t\t'icon': this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t'text': this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),\n\t\t\t\t'action': this.enableDisableUser\n\t\t\t}];\n\t\t},\n\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups: function userGroups() {\n\t\t\tvar _this = this;\n\n\t\t\tvar userGroups = this.groups.filter(function (group) {\n\t\t\t\treturn _this.user.groups.includes(group.id);\n\t\t\t});\n\t\t\treturn userGroups;\n\t\t},\n\t\tuserSubAdminsGroups: function userSubAdminsGroups() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar userSubAdminsGroups = this.subAdminsGroups.filter(function (group) {\n\t\t\t\treturn _this2.user.subadmin.includes(group.id);\n\t\t\t});\n\t\t\treturn userSubAdminsGroups;\n\t\t},\n\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedQuota: function usedQuota() {\n\t\t\tvar quota = this.user.quota.quota;\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100));\n\t\t\t} else {\n\t\t\t\tvar usedInGB = this.user.quota.used / (10 * Math.pow(2, 30));\n\t\t\t\t//asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - 1 / (usedInGB + 1));\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota;\n\t\t},\n\n\t\t// Mapping saved values to objects\n\t\tuserQuota: function userQuota() {\n\t\t\tif (this.user.quota.quota > 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tvar humanQuota = OC.Util.humanFileSize(this.user.quota.quota);\n\t\t\t\tvar userQuota = this.quotaOptions.find(function (quota) {\n\t\t\t\t\treturn quota.id === humanQuota;\n\t\t\t\t});\n\t\t\t\treturn userQuota ? userQuota : { id: humanQuota, label: humanQuota };\n\t\t\t} else if (this.user.quota.quota === 0 || this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0];\n\t\t\t}\n\t\t\treturn this.quotaOptions[1]; // unlimited\n\t\t},\n\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength: function minPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t}\n\t},\n\tmethods: {\n\t\t/* MENU HANDLING */\n\t\tshowMenu: function showMenu() {\n\t\t\tthis.openedMenu = true;\n\t\t},\n\t\thideMenu: function hideMenu() {\n\t\t\tthis.openedMenu = false;\n\t\t},\n\n\n\t\t/**\n * Generate avatar url\n * \n * @param {string} user The user name\n * @param {int} size Size integer, default 32\n * @returns {string}\n */\n\t\tgenerateAvatar: function generateAvatar(user) {\n\t\t\tvar size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;\n\n\t\t\treturn OC.generateUrl('/avatar/{user}/{size}?v={version}', {\n\t\t\t\tuser: user,\n\t\t\t\tsize: size,\n\t\t\t\tversion: oc_userconfig.avatar.version\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Format the limit text in the selected options\n * \n * @param {int} count elements left\n * @returns {string}\n */\n\t\tlimitGroups: function limitGroups(count) {\n\t\t\treturn '+' + count;\n\t\t},\n\t\tdeleteUser: function deleteUser() {\n\t\t\tvar _this3 = this;\n\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tvar userid = this.user.id;\n\t\t\treturn this.$store.dispatch('deleteUser', { userid: userid }).then(function () {\n\t\t\t\t_this3.loading.delete = false;\n\t\t\t\t_this3.loading.all = false;\n\t\t\t});\n\t\t},\n\t\tenableDisableUser: function enableDisableUser() {\n\t\t\tvar _this4 = this;\n\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar enabled = !this.user.enabled;\n\t\t\treturn this.$store.dispatch('enableDisableUser', { userid: userid, enabled: enabled }).then(function () {\n\t\t\t\t_this4.loading.delete = false;\n\t\t\t\t_this4.loading.all = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user displayName\n * \n * @param {string} displayName The display name\n * @returns {Promise}\n */\n\t\tupdateDisplayName: function updateDisplayName() {\n\t\t\tvar _this5 = this;\n\n\t\t\tvar displayName = this.$refs.displayName.value;\n\t\t\tthis.loading.displayName = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'displayname',\n\t\t\t\tvalue: displayName\n\t\t\t}).then(function () {\n\t\t\t\t_this5.loading.displayName = false;\n\t\t\t\t_this5.$refs.displayName.value = displayName;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user password\n * \n * @param {string} password The email adress\n * @returns {Promise}\n */\n\t\tupdatePassword: function updatePassword() {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar password = this.$refs.password.value;\n\t\t\tthis.loading.password = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'password',\n\t\t\t\tvalue: password\n\t\t\t}).then(function () {\n\t\t\t\t_this6.loading.password = false;\n\t\t\t\t_this6.$refs.password.value = ''; // empty & show placeholder \n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user mailAddress\n * \n * @param {string} mailAddress The email adress\n * @returns {Promise}\n */\n\t\tupdateEmail: function updateEmail() {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar mailAddress = this.$refs.mailAddress.value;\n\t\t\tthis.loading.mailAddress = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'email',\n\t\t\t\tvalue: mailAddress\n\t\t\t}).then(function () {\n\t\t\t\t_this7.loading.mailAddress = false;\n\t\t\t\t_this7.$refs.mailAddress.value = mailAddress;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Create a new group\n * \n * @param {string} groups Group id\n * @returns {Promise}\n */\n\t\tcreateGroup: function createGroup(gid) {\n\t\t\tvar _this8 = this;\n\n\t\t\tthis.loading = { groups: true, subadmins: true };\n\t\t\tthis.$store.dispatch('addGroup', gid).then(function () {\n\t\t\t\t_this8.loading = { groups: false, subadmins: false };\n\t\t\t\tvar userid = _this8.user.id;\n\t\t\t\t_this8.$store.dispatch('addUserGroup', { userid: userid, gid: gid });\n\t\t\t});\n\t\t\treturn this.$store.getters.getGroups[this.groups.length];\n\t\t},\n\n\n\t\t/**\n * Add user to group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\taddUserGroup: function addUserGroup(group) {\n\t\t\tvar _this9 = this;\n\n\t\t\tthis.loading.groups = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserGroup', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this9.loading.groups = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Remove user from group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\tremoveUserGroup: function removeUserGroup(group) {\n\t\t\tvar _this10 = this;\n\n\t\t\tthis.loading.groups = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserGroup', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this10.loading.groups = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Add user to group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\taddUserSubAdmin: function addUserSubAdmin(group) {\n\t\t\tvar _this11 = this;\n\n\t\t\tthis.loading.subadmins = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserSubAdmin', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this11.loading.subadmins = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Remove user from group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\tremoveUserSubAdmin: function removeUserSubAdmin(group) {\n\t\t\tvar _this12 = this;\n\n\t\t\tthis.loading.subadmins = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserSubAdmin', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this12.loading.subadmins = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n * @returns {string}\n */\n\t\tsetUserQuota: function setUserQuota() {\n\t\t\tvar _this13 = this;\n\n\t\t\tvar quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';\n\n\t\t\tthis.loading.quota = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'quota',\n\t\t\t\tvalue: quota\n\t\t\t}).then(function () {\n\t\t\t\treturn _this13.loading.quota = false;\n\t\t\t});\n\t\t\treturn quota;\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Promise|boolean}\n */\n\t\tvalidateQuota: function validateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tvar validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota === 0) {\n\t\t\t\treturn this.setUserQuota('none');\n\t\t\t} else if (validQuota !== null) {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n\t\t\t}\n\t\t\t// if no valid doo not change\n\t\t\treturn false;\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QvdXNlclJvdy52dWU/Mjg4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtPQUVBOzBFQUNBOztBQUVBO0FBRUE7QUFIQTs7QUFNQTtBQUZBOzZCQUdBO0FBQ0E7d0JBQ0E7QUFDQTt1QkFDQTs7a0NBRUE7ZUFDQTs7U0FFQTtpQkFDQTtjQUNBO2lCQUNBO1lBQ0E7ZUFDQTtXQUNBO1lBQ0E7YUFHQTtBQVhBO0FBSEE7QUFlQTs7O0FBRUE7c0NBQ0E7O1VBRUE7d0JBQ0E7aUJBQ0E7QUFIQTsrQ0FLQTs4RUFDQTttQkFFQTtBQUpBO0FBTUE7OztBQUNBOztBQUNBOzs7NENBQ0E7O1VBQ0E7QUFDQTs7QUFDQTs7OytDQUNBOztVQUNBO0FBRUE7OztBQUNBO2tDQUNBOytCQUNBO2tCQUNBO29FQUNBO1VBQ0E7NERBQ0E7QUFDQTtzQ0FDQTtBQUNBOzZCQUNBO0FBQ0E7O0FBQ0E7O2tDQUVBO0FBQ0E7MkRBQ0E7O3lCQUNBOzs0REFDQTtrRkFDQTtBQUNBOzZCQUNBO0FBQ0E7K0JBVEEsQ0FVQTtBQUVBOzs7QUFDQTtrREFDQTs4QkFDQTtBQUVBO0FBdERBOztBQXdEQTtnQ0FDQTtxQkFDQTtBQUNBO2dDQUNBO3FCQUNBO0FBRUE7OztBQU9BOzs7Ozs7OztBQUNBOzthQUNBLFlBQ0E7VUFFQTtVQUNBO2tDQUdBO0FBTEE7QUFRQTs7O0FBTUE7Ozs7OzsyQ0FDQTtnQkFDQTtBQUVBOztBQUNBOzt5QkFDQTtzQkFDQTswQkFDQTsrQ0FDQSxtQ0FDQTs0QkFDQTt5QkFDQTtBQUNBO0FBRUE7O0FBQ0E7O3lCQUNBO3NCQUNBOzBCQUNBOzRCQUNBO3NFQUNBLHFDQUNBOzRCQUNBO3lCQUNBO0FBQ0E7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7NENBQ0E7OEJBQ0E7O3NCQUVBO1NBQ0E7V0FDQTtBQUhBLHVCQUlBO2lDQUNBO3FDQUNBO0FBQ0E7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7c0NBQ0E7MkJBQ0E7O3NCQUVBO1NBQ0E7V0FDQTtBQUhBLHVCQUlBOzhCQUNBO3NDQUNBO0FBQ0E7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7NENBQ0E7OEJBQ0E7O3NCQUVBO1NBQ0E7V0FDQTtBQUhBLHVCQUlBO2lDQUNBO3FDQUNBO0FBQ0E7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7NkNBQ0E7MERBQ0E7aURBQ0E7NkJBQ0E7NkRBQ0E7QUFDQTtvREFDQTtBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzt5QkFDQTswQkFDQTttQkFDQTtpRUFDQTttQ0FDQTs7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7eUJBQ0E7MEJBQ0E7bUJBQ0E7b0VBQ0E7b0NBQ0E7O0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzRCQUNBOzBCQUNBO21CQUNBO29FQUNBO3VDQUNBOztBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs0QkFDQTswQkFDQTttQkFDQTt1RUFDQTt1Q0FDQTs7QUFHQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7Ozt3QkFDQTtBQUNBO2lDQUNBOztzQkFFQTtTQUNBO1dBQ0E7QUFIQTttQ0FJQTs7VUFDQTtBQUVBOzs7QUFNQTs7Ozs7OytDQUNBO0FBQ0E7NkNBQ0E7eUJBQ0E7NkJBQ0E7bUNBQ0E7QUFDQTs0RUFDQTtBQUNBO0FBQ0E7VUFDQTtBQUVBO0FBbk9BO0FBdEZBIiwiZmlsZSI6IjE1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxuXHQ8ZGl2IGNsYXNzPVwicm93XCIgOmNsYXNzPVwieydkaXNhYmxlZCc6IGxvYWRpbmcuZGVsZXRlIHx8IGxvYWRpbmcuZGlzYWJsZX1cIj5cblx0XHQ8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmcnOiBsb2FkaW5nLmRlbGV0ZSB8fCBsb2FkaW5nLmRpc2FibGV9XCI+PGltZyBhbHQ9XCJcIiB3aWR0aD1cIjMyXCIgaGVpZ2h0PVwiMzJcIiA6c3JjPVwiZ2VuZXJhdGVBdmF0YXIodXNlci5pZCwgMzIpXCIgOnNyY3NldD1cImdlbmVyYXRlQXZhdGFyKHVzZXIuaWQsIDY0KSsnIDJ4LCAnK2dlbmVyYXRlQXZhdGFyKHVzZXIuaWQsIDEyOCkrJyA0eCdcIj48L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwibmFtZVwiPnt7dXNlci5pZH19PC9kaXY+XG5cdFx0PGZvcm0gY2xhc3M9XCJkaXNwbGF5TmFtZVwiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5kaXNwbGF5TmFtZX1cIiB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwidXBkYXRlRGlzcGxheU5hbWVcIj5cblx0XHRcdDxpbnB1dCA6aWQ9XCInZGlzcGxheU5hbWUnK3VzZXIuaWQrcmFuZFwiIHR5cGU9XCJ0ZXh0XCJcblx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJsb2FkaW5nLmRpc3BsYXlOYW1lfHxsb2FkaW5nLmFsbFwiXG5cdFx0XHRcdFx0OnZhbHVlPVwidXNlci5kaXNwbGF5bmFtZVwiIHJlZj1cImRpc3BsYXlOYW1lXCJcblx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIiBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwib2ZmXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgLz5cblx0XHRcdDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJpY29uLWNvbmZpcm1cIiB2YWx1ZT1cIlwiIC8+XG5cdFx0PC9mb3JtPlxuXHRcdDxmb3JtIGNsYXNzPVwicGFzc3dvcmRcIiB2LWlmPVwic2V0dGluZ3MuY2FuQ2hhbmdlUGFzc3dvcmRcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcucGFzc3dvcmR9XCJcblx0XHRcdCAgdi1vbjpzdWJtaXQucHJldmVudD1cInVwZGF0ZVBhc3N3b3JkXCI+XG5cdFx0XHQ8aW5wdXQgOmlkPVwiJ3Bhc3N3b3JkJyt1c2VyLmlkK3JhbmRcIiB0eXBlPVwicGFzc3dvcmRcIiByZXF1aXJlZFxuXHRcdFx0XHRcdDpkaXNhYmxlZD1cImxvYWRpbmcucGFzc3dvcmR8fGxvYWRpbmcuYWxsXCIgOm1pbmxlbmd0aD1cIm1pblBhc3N3b3JkTGVuZ3RoXCJcblx0XHRcdFx0XHR2YWx1ZT1cIlwiIDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ05ldyBwYXNzd29yZCcpXCIgcmVmPVwicGFzc3dvcmRcIlxuXHRcdFx0XHRcdGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGF1dG9jb3JyZWN0PVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJvZmZcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiAvPlxuXHRcdFx0PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImljb24tY29uZmlybVwiIHZhbHVlPVwiXCIgLz5cblx0XHQ8L2Zvcm0+XG5cdFx0PGRpdiB2LWVsc2U+PC9kaXY+XG5cdFx0PGZvcm0gY2xhc3M9XCJtYWlsQWRkcmVzc1wiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5tYWlsQWRkcmVzc31cIiB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwidXBkYXRlRW1haWxcIj5cblx0XHRcdDxpbnB1dCA6aWQ9XCInbWFpbEFkZHJlc3MnK3VzZXIuaWQrcmFuZFwiIHR5cGU9XCJlbWFpbFwiXG5cdFx0XHRcdFx0OmRpc2FibGVkPVwibG9hZGluZy5tYWlsQWRkcmVzc3x8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdDp2YWx1ZT1cInVzZXIuZW1haWxcIiByZWY9XCJtYWlsQWRkcmVzc1wiXG5cdFx0XHRcdFx0YXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIC8+XG5cdFx0XHQ8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiaWNvbi1jb25maXJtXCIgdmFsdWU9XCJcIiAvPlxuXHRcdDwvZm9ybT5cblx0XHQ8ZGl2IGNsYXNzPVwiZ3JvdXBzXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLmdyb3Vwc31cIj5cblx0XHRcdDxtdWx0aXNlbGVjdCA6dmFsdWU9XCJ1c2VyR3JvdXBzXCIgOm9wdGlvbnM9XCJncm91cHNcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nLmdyb3Vwc3x8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdFx0IHRhZy1wbGFjZWhvbGRlcj1cImNyZWF0ZVwiIDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ0FkZCB1c2VyIGluIGdyb3VwJylcIlxuXHRcdFx0XHRcdFx0IGxhYmVsPVwibmFtZVwiIHRyYWNrLWJ5PVwiaWRcIiBjbGFzcz1cIm11bHRpc2VsZWN0LXZ1ZVwiXG5cdFx0XHRcdFx0XHQgOmxpbWl0PVwiMlwiIDpsaW1pdFRleHQ9XCJsaW1pdEdyb3Vwc1wiXG5cdFx0XHRcdFx0XHQgOm11bHRpcGxlPVwidHJ1ZVwiIDp0YWdnYWJsZT1cInRydWVcIiA6Y2xvc2VPblNlbGVjdD1cImZhbHNlXCJcblx0XHRcdFx0XHRcdCBAdGFnPVwiY3JlYXRlR3JvdXBcIiBAc2VsZWN0PVwiYWRkVXNlckdyb3VwXCIgQHJlbW92ZT1cInJlbW92ZVVzZXJHcm91cFwiPlxuXHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwic3ViYWRtaW5zXCIgdi1pZj1cInN1YkFkbWluc0dyb3Vwcy5sZW5ndGg+MFwiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5zdWJhZG1pbnN9XCI+XG5cdFx0XHQ8bXVsdGlzZWxlY3QgOnZhbHVlPVwidXNlclN1YkFkbWluc0dyb3Vwc1wiIDpvcHRpb25zPVwic3ViQWRtaW5zR3JvdXBzXCIgOmRpc2FibGVkPVwibG9hZGluZy5zdWJhZG1pbnN8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHRcdCA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdTZXQgdXNlciBhcyBhZG1pbiBmb3InKVwiXG5cdFx0XHRcdFx0XHQgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdCA6bGltaXQ9XCIyXCIgOmxpbWl0VGV4dD1cImxpbWl0R3JvdXBzXCJcblx0XHRcdFx0XHRcdCA6bXVsdGlwbGU9XCJ0cnVlXCIgOmNsb3NlT25TZWxlY3Q9XCJmYWxzZVwiXG5cdFx0XHRcdFx0XHQgQHNlbGVjdD1cImFkZFVzZXJTdWJBZG1pblwiIEByZW1vdmU9XCJyZW1vdmVVc2VyU3ViQWRtaW5cIj5cblx0XHRcdFx0PHNwYW4gc2xvdD1cIm5vUmVzdWx0XCI+e3t0KCdzZXR0aW5ncycsJ05vIHJlc3VsdCcpfX08L3NwYW4+XG5cdFx0XHQ8L211bHRpc2VsZWN0PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJxdW90YVwiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5xdW90YX1cIj5cblx0XHRcdDxtdWx0aXNlbGVjdCA6dmFsdWU9XCJ1c2VyUXVvdGFcIiA6b3B0aW9ucz1cInF1b3RhT3B0aW9uc1wiIDpkaXNhYmxlZD1cImxvYWRpbmcucXVvdGF8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHRcdCB0YWctcGxhY2Vob2xkZXI9XCJjcmVhdGVcIiA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdTZWxlY3QgdXNlciBxdW90YScpXCJcblx0XHRcdFx0XHRcdCBsYWJlbD1cImxhYmVsXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdCA6YWxsb3dFbXB0eT1cImZhbHNlXCIgOnRhZ2dhYmxlPVwidHJ1ZVwiXG5cdFx0XHRcdFx0XHQgQHRhZz1cInZhbGlkYXRlUXVvdGFcIiBAaW5wdXQ9XCJzZXRVc2VyUXVvdGFcIj5cblx0XHRcdDwvbXVsdGlzZWxlY3Q+XG5cdFx0XHQ8cHJvZ3Jlc3MgY2xhc3M9XCJxdW90YS11c2VyLXByb2dyZXNzXCIgOmNsYXNzPVwieyd3YXJuJzp1c2VkUXVvdGE+ODB9XCIgOnZhbHVlPVwidXNlZFF1b3RhXCIgbWF4PVwiMTAwXCI+PC9wcm9ncmVzcz5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwic3RvcmFnZUxvY2F0aW9uXCIgdi1pZj1cInNob3dDb25maWcuc2hvd1N0b3JhZ2VQYXRoXCI+e3t1c2VyLnN0b3JhZ2VMb2NhdGlvbn19PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInVzZXJCYWNrZW5kXCIgdi1pZj1cInNob3dDb25maWcuc2hvd1VzZXJCYWNrZW5kXCI+e3t1c2VyLmJhY2tlbmR9fTwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJsYXN0TG9naW5cIiB2LWlmPVwic2hvd0NvbmZpZy5zaG93TGFzdExvZ2luXCIgOnRpdGxlPVwidXNlci5sYXN0TG9naW4+MCA/IE9DLlV0aWwuZm9ybWF0RGF0ZSh1c2VyLmxhc3RMb2dpbikgOiAnJ1wiPlxuXHRcdFx0e3t1c2VyLmxhc3RMb2dpbj4wID8gT0MuVXRpbC5yZWxhdGl2ZU1vZGlmaWVkRGF0ZSh1c2VyLmxhc3RMb2dpbikgOiB0KCdzZXR0aW5ncycsJ05ldmVyJyl9fVxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJ1c2VyQWN0aW9uc1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cInRvZ2dsZVVzZXJBY3Rpb25zXCIgdi1pZj1cIk9DLmN1cnJlbnRVc2VyICE9PSB1c2VyLmlkICYmIHVzZXIuaWQgIT09ICdhZG1pbicgJiYgIWxvYWRpbmcuYWxsXCI+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJpY29uLW1vcmVcIiB2LWNsaWNrLW91dHNpZGU9XCJoaWRlTWVudVwiIEBjbGljaz1cInNob3dNZW51XCI+PC9kaXY+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJwb3BvdmVybWVudVwiIDpjbGFzcz1cInsgJ29wZW4nOiBvcGVuZWRNZW51IH1cIj5cblx0XHRcdFx0XHQ8cG9wb3Zlci1tZW51IDptZW51PVwidXNlckFjdGlvbnNcIiAvPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBwb3BvdmVyTWVudSBmcm9tICcuLi9wb3BvdmVyTWVudSc7XG5pbXBvcnQgQ2xpY2tPdXRzaWRlIGZyb20gJ3Z1ZS1jbGljay1vdXRzaWRlJztcbmltcG9ydCBNdWx0aXNlbGVjdCBmcm9tICd2dWUtbXVsdGlzZWxlY3QnO1xuLy9pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAnLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1tdWx0aXNlbGVjdC9zcmMvaW5kZXgnO1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG5hbWU6ICd1c2VyUm93Jyxcblx0cHJvcHM6IFsndXNlcicsICdzZXR0aW5ncycsICdncm91cHMnLCAnc3ViQWRtaW5zR3JvdXBzJywgJ3F1b3RhT3B0aW9ucycsICdzaG93Q29uZmlnJ10sXG5cdGNvbXBvbmVudHM6IHtcblx0XHRwb3BvdmVyTWVudSxcblx0XHRNdWx0aXNlbGVjdFxuXHR9LFxuXHRkaXJlY3RpdmVzOiB7XG5cdFx0Q2xpY2tPdXRzaWRlXG5cdH0sXG5cdG1vdW50ZWQoKSB7XG5cdFx0Ly8gcHJldmVudCBjbGljayBvdXRzaWRlIGV2ZW50IHdpdGggcG9wdXBJdGVtLlxuXHRcdHRoaXMucG9wdXBJdGVtID0gdGhpcy4kZWw7XG5cdH0sXG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHJhbmQ6IHBhcnNlSW50KE1hdGgucmFuZG9tKCkgKiAxMDAwKSxcblx0XHRcdG9wZW5lZE1lbnU6IGZhbHNlLFxuXHRcdFx0bG9hZGluZzoge1xuXHRcdFx0XHRhbGw6IGZhbHNlLFxuXHRcdFx0XHRkaXNwbGF5TmFtZTogZmFsc2UsXG5cdFx0XHRcdHBhc3N3b3JkOiBmYWxzZSxcblx0XHRcdFx0bWFpbEFkZHJlc3M6IGZhbHNlLFxuXHRcdFx0XHRncm91cHM6IGZhbHNlLFxuXHRcdFx0XHRzdWJhZG1pbnM6IGZhbHNlLFxuXHRcdFx0XHRxdW90YTogZmFsc2UsXG5cdFx0XHRcdGRlbGV0ZTogZmFsc2UsXG5cdFx0XHRcdGRpc2FibGU6IGZhbHNlXG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRjb21wdXRlZDoge1xuXHRcdC8qIFVTRVIgUE9QT1ZFUk1FTlUgQUNUSU9OUyAqL1xuXHRcdHVzZXJBY3Rpb25zKCkge1xuXHRcdFx0cmV0dXJuIFt7XG5cdFx0XHRcdGljb246ICdpY29uLWRlbGV0ZScsXG5cdFx0XHRcdHRleHQ6IHQoJ3NldHRpbmdzJywnRGVsZXRlIHVzZXInKSxcblx0XHRcdFx0YWN0aW9uOiB0aGlzLmRlbGV0ZVVzZXJcblx0XHRcdH0se1xuXHRcdFx0XHQnaWNvbic6IHRoaXMudXNlci5lbmFibGVkID8gJ2ljb24tY2xvc2UnIDogJ2ljb24tYWRkJyxcblx0XHRcdFx0J3RleHQnOiB0aGlzLnVzZXIuZW5hYmxlZCA/IHQoJ3NldHRpbmdzJywnRGlzYWJsZSB1c2VyJykgOiB0KCdzZXR0aW5ncycsJ0VuYWJsZSB1c2VyJyksXG5cdFx0XHRcdCdhY3Rpb24nOiB0aGlzLmVuYWJsZURpc2FibGVVc2VyXG5cdFx0XHR9XVxuXHRcdH0sXG5cblx0XHQvKiBHUk9VUFMgTUFOQUdFTUVOVCAqL1xuXHRcdHVzZXJHcm91cHMoKSB7XG5cdFx0XHRsZXQgdXNlckdyb3VwcyA9IHRoaXMuZ3JvdXBzLmZpbHRlcihncm91cCA9PiB0aGlzLnVzZXIuZ3JvdXBzLmluY2x1ZGVzKGdyb3VwLmlkKSk7XG5cdFx0XHRyZXR1cm4gdXNlckdyb3Vwcztcblx0XHR9LFxuXHRcdHVzZXJTdWJBZG1pbnNHcm91cHMoKSB7XG5cdFx0XHRsZXQgdXNlclN1YkFkbWluc0dyb3VwcyA9IHRoaXMuc3ViQWRtaW5zR3JvdXBzLmZpbHRlcihncm91cCA9PiB0aGlzLnVzZXIuc3ViYWRtaW4uaW5jbHVkZXMoZ3JvdXAuaWQpKTtcblx0XHRcdHJldHVybiB1c2VyU3ViQWRtaW5zR3JvdXBzO1xuXHRcdH0sXG5cblx0XHQvKiBRVU9UQSBNQU5BR0VNRU5UICovXG5cdFx0dXNlZFF1b3RhKCkge1xuXHRcdFx0bGV0IHF1b3RhID0gdGhpcy51c2VyLnF1b3RhLnF1b3RhO1xuXHRcdFx0aWYgKHF1b3RhID4gMCkge1xuXHRcdFx0XHRxdW90YSA9IE1hdGgubWluKDEwMCwgTWF0aC5yb3VuZCh0aGlzLnVzZXIucXVvdGEudXNlZCAvIHF1b3RhICogMTAwKSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YXIgdXNlZEluR0IgPSB0aGlzLnVzZXIucXVvdGEudXNlZCAvICgxMCAqIE1hdGgucG93KDIsIDMwKSk7XG5cdFx0XHRcdC8vYXN5bXB0b3RpYyBjdXJ2ZSBhcHByb2FjaGluZyA1MCUgYXQgMTBHQiB0byB2aXN1YWxpemUgdXNlZCBzdGFjZSB3aXRoIGluZmluaXRlIHF1b3RhXG5cdFx0XHRcdHF1b3RhID0gOTUgKiAoMSAtICgxIC8gKHVzZWRJbkdCICsgMSkpKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBpc05hTihxdW90YSkgPyAwIDogcXVvdGE7XG5cdFx0fSxcblx0XHQvLyBNYXBwaW5nIHNhdmVkIHZhbHVlcyB0byBvYmplY3RzXG5cdFx0dXNlclF1b3RhKCkge1xuXHRcdFx0aWYgKHRoaXMudXNlci5xdW90YS5xdW90YSA+IDApIHtcblx0XHRcdFx0Ly8gaWYgdmFsdWUgaXMgdmFsaWQsIGxldCdzIG1hcCB0aGUgcXVvdGFPcHRpb25zIG9yIHJldHVybiBjdXN0b20gcXVvdGFcblx0XHRcdFx0bGV0IGh1bWFuUXVvdGEgPSBPQy5VdGlsLmh1bWFuRmlsZVNpemUodGhpcy51c2VyLnF1b3RhLnF1b3RhKTtcblx0XHRcdFx0bGV0IHVzZXJRdW90YSA9IHRoaXMucXVvdGFPcHRpb25zLmZpbmQocXVvdGEgPT4gcXVvdGEuaWQgPT09IGh1bWFuUXVvdGEpO1xuXHRcdFx0XHRyZXR1cm4gdXNlclF1b3RhID8gdXNlclF1b3RhIDoge2lkOmh1bWFuUXVvdGEsIGxhYmVsOmh1bWFuUXVvdGF9O1xuXHRcdFx0fSBlbHNlIGlmICh0aGlzLnVzZXIucXVvdGEucXVvdGEgPT09IDAgfHwgdGhpcy51c2VyLnF1b3RhLnF1b3RhID09PSAnZGVmYXVsdCcpIHtcblx0XHRcdFx0Ly8gZGVmYXVsdCBxdW90YSBpcyByZXBsYWNlZCBieSB0aGUgcHJvcGVyIHZhbHVlIG9uIGxvYWRcblx0XHRcdFx0cmV0dXJuIHRoaXMucXVvdGFPcHRpb25zWzBdO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHRoaXMucXVvdGFPcHRpb25zWzFdOyAvLyB1bmxpbWl0ZWRcblx0XHR9LFxuXG5cdFx0LyogUEFTU1dPUkQgUE9MSUNZPyAqL1xuXHRcdG1pblBhc3N3b3JkTGVuZ3RoKCkge1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGg7XG5cdFx0fVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0LyogTUVOVSBIQU5ETElORyAqL1xuXHRcdHNob3dNZW51ICgpIHtcblx0XHRcdHRoaXMub3BlbmVkTWVudSA9IHRydWU7XG5cdFx0fSxcblx0XHRoaWRlTWVudSAoKSB7XG5cdFx0XHR0aGlzLm9wZW5lZE1lbnUgPSBmYWxzZTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogR2VuZXJhdGUgYXZhdGFyIHVybFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyIFRoZSB1c2VyIG5hbWVcblx0XHQgKiBAcGFyYW0ge2ludH0gc2l6ZSBTaXplIGludGVnZXIsIGRlZmF1bHQgMzJcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdGdlbmVyYXRlQXZhdGFyKHVzZXIsIHNpemU9MzIpIHtcblx0XHRcdHJldHVybiBPQy5nZW5lcmF0ZVVybChcblx0XHRcdFx0Jy9hdmF0YXIve3VzZXJ9L3tzaXplfT92PXt2ZXJzaW9ufScsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1c2VyOiB1c2VyLFxuXHRcdFx0XHRcdHNpemU6IHNpemUsXG5cdFx0XHRcdFx0dmVyc2lvbjogb2NfdXNlcmNvbmZpZy5hdmF0YXIudmVyc2lvblxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIEZvcm1hdCB0aGUgbGltaXQgdGV4dCBpbiB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7aW50fSBjb3VudCBlbGVtZW50cyBsZWZ0XG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRsaW1pdEdyb3Vwcyhjb3VudCkge1xuXHRcdFx0cmV0dXJuICcrJytjb3VudDtcblx0XHR9LFxuXG5cdFx0ZGVsZXRlVXNlcigpIHtcblx0XHRcdHRoaXMubG9hZGluZy5kZWxldGUgPSB0cnVlO1xuXHRcdFx0dGhpcy5sb2FkaW5nLmFsbCA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdkZWxldGVVc2VyJywge3VzZXJpZH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuZGVsZXRlID0gZmFsc2Vcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuYWxsID0gZmFsc2Vcblx0XHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdGVuYWJsZURpc2FibGVVc2VyKCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLmRlbGV0ZSA9IHRydWU7XG5cdFx0XHR0aGlzLmxvYWRpbmcuYWxsID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZW5hYmxlZCA9ICF0aGlzLnVzZXIuZW5hYmxlZDtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZW5hYmxlRGlzYWJsZVVzZXInLCB7dXNlcmlkLCBlbmFibGVkfSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5kZWxldGUgPSBmYWxzZVxuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5hbGwgPSBmYWxzZVxuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IHVzZXIgZGlzcGxheU5hbWVcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGxheU5hbWUgVGhlIGRpc3BsYXkgbmFtZVxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHVwZGF0ZURpc3BsYXlOYW1lKCkge1xuXHRcdFx0bGV0IGRpc3BsYXlOYW1lID0gdGhpcy4kcmVmcy5kaXNwbGF5TmFtZS52YWx1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5kaXNwbGF5TmFtZSA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLCBcblx0XHRcdFx0a2V5OiAnZGlzcGxheW5hbWUnLFxuXHRcdFx0XHR2YWx1ZTogZGlzcGxheU5hbWVcblx0XHRcdH0pLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcuZGlzcGxheU5hbWUgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy4kcmVmcy5kaXNwbGF5TmFtZS52YWx1ZSA9IGRpc3BsYXlOYW1lO1xuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNldCB1c2VyIHBhc3N3b3JkXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkIFRoZSBlbWFpbCBhZHJlc3Ncblx0XHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0XHQgKi9cblx0XHR1cGRhdGVQYXNzd29yZCgpIHtcblx0XHRcdGxldCBwYXNzd29yZCA9IHRoaXMuJHJlZnMucGFzc3dvcmQudmFsdWU7XG5cdFx0XHR0aGlzLmxvYWRpbmcucGFzc3dvcmQgPSB0cnVlO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3NldFVzZXJEYXRhJywge1xuXHRcdFx0XHR1c2VyaWQ6IHRoaXMudXNlci5pZCxcblx0XHRcdFx0a2V5OiAncGFzc3dvcmQnLFxuXHRcdFx0XHR2YWx1ZTogcGFzc3dvcmRcblx0XHRcdH0pLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcucGFzc3dvcmQgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy4kcmVmcy5wYXNzd29yZC52YWx1ZSA9ICcnOyAvLyBlbXB0eSAmIHNob3cgcGxhY2Vob2xkZXIgXG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IHVzZXIgbWFpbEFkZHJlc3Ncblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gbWFpbEFkZHJlc3MgVGhlIGVtYWlsIGFkcmVzc1xuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHVwZGF0ZUVtYWlsKCkge1xuXHRcdFx0bGV0IG1haWxBZGRyZXNzID0gdGhpcy4kcmVmcy5tYWlsQWRkcmVzcy52YWx1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5tYWlsQWRkcmVzcyA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLFxuXHRcdFx0XHRrZXk6ICdlbWFpbCcsXG5cdFx0XHRcdHZhbHVlOiBtYWlsQWRkcmVzc1xuXHRcdFx0fSkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZy5tYWlsQWRkcmVzcyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLiRyZWZzLm1haWxBZGRyZXNzLnZhbHVlID0gbWFpbEFkZHJlc3M7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQ3JlYXRlIGEgbmV3IGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwcyBHcm91cCBpZFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdGNyZWF0ZUdyb3VwKGdpZCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nID0ge2dyb3Vwczp0cnVlLCBzdWJhZG1pbnM6dHJ1ZX1cblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRHcm91cCcsIGdpZCkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IHtncm91cHM6ZmFsc2UsIHN1YmFkbWluczpmYWxzZX07XG5cdFx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRVc2VyR3JvdXAnLCB7dXNlcmlkLCBnaWR9KTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0R3JvdXBzW3RoaXMuZ3JvdXBzLmxlbmd0aF07XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEFkZCB1c2VyIHRvIGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtvYmplY3R9IGdyb3VwIEdyb3VwIG9iamVjdFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdGFkZFVzZXJHcm91cChncm91cCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLmdyb3VwcyA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0bGV0IGdpZCA9IGdyb3VwLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRVc2VyR3JvdXAnLCB7dXNlcmlkLCBnaWR9KVxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHRoaXMubG9hZGluZy5ncm91cHMgPSBmYWxzZSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZSB1c2VyIGZyb20gZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge29iamVjdH0gZ3JvdXAgR3JvdXAgb2JqZWN0XG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0cmVtb3ZlVXNlckdyb3VwKGdyb3VwKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuZ3JvdXBzID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZ2lkID0gZ3JvdXAuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3JlbW92ZVVzZXJHcm91cCcsIHt1c2VyaWQsIGdpZH0pXG5cdFx0XHRcdFx0LnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLmdyb3VwcyA9IGZhbHNlKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQWRkIHVzZXIgdG8gZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge29iamVjdH0gZ3JvdXAgR3JvdXAgb2JqZWN0XG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0YWRkVXNlclN1YkFkbWluKGdyb3VwKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuc3ViYWRtaW5zID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZ2lkID0gZ3JvdXAuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZFVzZXJTdWJBZG1pbicsIHt1c2VyaWQsIGdpZH0pXG5cdFx0XHRcdFx0LnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLnN1YmFkbWlucyA9IGZhbHNlKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogUmVtb3ZlIHVzZXIgZnJvbSBncm91cFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7b2JqZWN0fSBncm91cCBHcm91cCBvYmplY3Rcblx0XHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0XHQgKi9cblx0XHRyZW1vdmVVc2VyU3ViQWRtaW4oZ3JvdXApIHtcblx0XHRcdHRoaXMubG9hZGluZy5zdWJhZG1pbnMgPSB0cnVlO1xuXHRcdFx0bGV0IHVzZXJpZCA9IHRoaXMudXNlci5pZDtcblx0XHRcdGxldCBnaWQgPSBncm91cC5pZDtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncmVtb3ZlVXNlclN1YkFkbWluJywge3VzZXJpZCwgZ2lkfSlcblx0XHRcdFx0XHQudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcuc3ViYWRtaW5zID0gZmFsc2UpO1xuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIFZhbGlkYXRlIHF1b3RhIHN0cmluZyB0byBtYWtlIHN1cmUgaXQncyBhIHZhbGlkIGh1bWFuIGZpbGUgc2l6ZVxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfE9iamVjdH0gcXVvdGEgUXVvdGEgaW4gcmVhZGFibGUgZm9ybWF0ICc1IEdCJyBvciBPYmplY3Qge2lkOiAnNSBHQicsIGxhYmVsOiAnNUdCJ31cblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHNldFVzZXJRdW90YShxdW90YSA9ICdub25lJykge1xuXHRcdFx0dGhpcy5sb2FkaW5nLnF1b3RhID0gdHJ1ZTtcblx0XHRcdC8vIGVuc3VyZSB3ZSBvbmx5IHNlbmQgdGhlIHByZXNldCBpZFxuXHRcdFx0cXVvdGEgPSBxdW90YS5pZCA/IHF1b3RhLmlkIDogcXVvdGE7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLCBcblx0XHRcdFx0a2V5OiAncXVvdGEnLFxuXHRcdFx0XHR2YWx1ZTogcXVvdGFcblx0XHRcdH0pLnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLnF1b3RhID0gZmFsc2UpO1xuXHRcdFx0cmV0dXJuIHF1b3RhO1xuXHRcdH0sXG5cblx0XHQvKipcblx0XHQgKiBWYWxpZGF0ZSBxdW90YSBzdHJpbmcgdG8gbWFrZSBzdXJlIGl0J3MgYSB2YWxpZCBodW1hbiBmaWxlIHNpemVcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gcXVvdGEgUXVvdGEgaW4gcmVhZGFibGUgZm9ybWF0ICc1IEdCJ1xuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfGJvb2xlYW59XG5cdFx0ICovXG5cdFx0dmFsaWRhdGVRdW90YShxdW90YSkge1xuXHRcdFx0Ly8gb25seSB1c2VkIGZvciBuZXcgcHJlc2V0cyBzZW50IHRocm91Z2ggQFRhZ1xuXHRcdFx0bGV0IHZhbGlkUXVvdGEgPSBPQy5VdGlsLmNvbXB1dGVyRmlsZVNpemUocXVvdGEpO1xuXHRcdFx0aWYgKHZhbGlkUXVvdGEgPT09IDApIHtcblx0XHRcdFx0cmV0dXJuIHRoaXMuc2V0VXNlclF1b3RhKCdub25lJyk7XG5cdFx0XHR9IGVsc2UgaWYgKHZhbGlkUXVvdGEgIT09IG51bGwpIHtcblx0XHRcdFx0Ly8gdW5pZnkgZm9ybWF0IG91dHB1dFxuXHRcdFx0XHRyZXR1cm4gdGhpcy5zZXRVc2VyUXVvdGEoT0MuVXRpbC5odW1hbkZpbGVTaXplKE9DLlV0aWwuY29tcHV0ZXJGaWxlU2l6ZShxdW90YSkpKTtcblx0XHRcdH1cblx0XHRcdC8vIGlmIG5vIHZhbGlkIGRvbyBub3QgY2hhbmdlXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG59XG48L3NjcmlwdD5cblxuXG5cbi8vIFdFQlBBQ0sgRk9PVEVSIC8vXG4vLyBzcmMvY29tcG9uZW50cy91c2VyTGlzdC91c2VyUm93LnZ1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///15\n");
+eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__popoverMenu__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_click_outside__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_click_outside___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_click_outside__);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_multiselect__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2_vue_multiselect___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_2_vue_multiselect__);\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({\n\tname: 'userRow',\n\tprops: ['user', 'settings', 'groups', 'subAdminsGroups', 'quotaOptions', 'showConfig'],\n\tcomponents: {\n\t\tpopoverMenu: __WEBPACK_IMPORTED_MODULE_0__popoverMenu__[\"a\" /* default */],\n\t\tMultiselect: __WEBPACK_IMPORTED_MODULE_2_vue_multiselect___default.a\n\t},\n\tdirectives: {\n\t\tClickOutside: __WEBPACK_IMPORTED_MODULE_1_vue_click_outside___default.a\n\t},\n\tmounted: function mounted() {\n\t\t// required if popup needs to stay opened after menu click\n\t\t// since we only have disable/delete actions, let's close it directly\n\t\t// this.popupItem = this.$el;\n\t},\n\tdata: function data() {\n\t\treturn {\n\t\t\trand: parseInt(Math.random() * 1000),\n\t\t\topenedMenu: false,\n\t\t\tloading: {\n\t\t\t\tall: false,\n\t\t\t\tdisplayName: false,\n\t\t\t\tpassword: false,\n\t\t\t\tmailAddress: false,\n\t\t\t\tgroups: false,\n\t\t\t\tsubadmins: false,\n\t\t\t\tquota: false,\n\t\t\t\tdelete: false,\n\t\t\t\tdisable: false,\n\t\t\t\tlanguages: false\n\t\t\t}\n\t\t};\n\t},\n\n\tcomputed: {\n\t\t/* USER POPOVERMENU ACTIONS */\n\t\tuserActions: function userActions() {\n\t\t\treturn [{\n\t\t\t\ticon: 'icon-delete',\n\t\t\t\ttext: t('settings', 'Delete user'),\n\t\t\t\taction: this.deleteUser\n\t\t\t}, {\n\t\t\t\t'icon': this.user.enabled ? 'icon-close' : 'icon-add',\n\t\t\t\t'text': this.user.enabled ? t('settings', 'Disable user') : t('settings', 'Enable user'),\n\t\t\t\t'action': this.enableDisableUser\n\t\t\t}];\n\t\t},\n\n\n\t\t/* GROUPS MANAGEMENT */\n\t\tuserGroups: function userGroups() {\n\t\t\tvar _this = this;\n\n\t\t\tvar userGroups = this.groups.filter(function (group) {\n\t\t\t\treturn _this.user.groups.includes(group.id);\n\t\t\t});\n\t\t\treturn userGroups;\n\t\t},\n\t\tuserSubAdminsGroups: function userSubAdminsGroups() {\n\t\t\tvar _this2 = this;\n\n\t\t\tvar userSubAdminsGroups = this.subAdminsGroups.filter(function (group) {\n\t\t\t\treturn _this2.user.subadmin.includes(group.id);\n\t\t\t});\n\t\t\treturn userSubAdminsGroups;\n\t\t},\n\n\n\t\t/* QUOTA MANAGEMENT */\n\t\tusedQuota: function usedQuota() {\n\t\t\tvar quota = this.user.quota.quota;\n\t\t\tif (quota > 0) {\n\t\t\t\tquota = Math.min(100, Math.round(this.user.quota.used / quota * 100));\n\t\t\t} else {\n\t\t\t\tvar usedInGB = this.user.quota.used / (10 * Math.pow(2, 30));\n\t\t\t\t//asymptotic curve approaching 50% at 10GB to visualize used stace with infinite quota\n\t\t\t\tquota = 95 * (1 - 1 / (usedInGB + 1));\n\t\t\t}\n\t\t\treturn isNaN(quota) ? 0 : quota;\n\t\t},\n\n\t\t// Mapping saved values to objects\n\t\tuserQuota: function userQuota() {\n\t\t\tif (this.user.quota.quota > 0) {\n\t\t\t\t// if value is valid, let's map the quotaOptions or return custom quota\n\t\t\t\tvar humanQuota = OC.Util.humanFileSize(this.user.quota.quota);\n\t\t\t\tvar userQuota = this.quotaOptions.find(function (quota) {\n\t\t\t\t\treturn quota.id === humanQuota;\n\t\t\t\t});\n\t\t\t\treturn userQuota ? userQuota : { id: humanQuota, label: humanQuota };\n\t\t\t} else if (this.user.quota.quota === 0 || this.user.quota.quota === 'default') {\n\t\t\t\t// default quota is replaced by the proper value on load\n\t\t\t\treturn this.quotaOptions[0];\n\t\t\t}\n\t\t\treturn this.quotaOptions[1]; // unlimited\n\t\t},\n\n\n\t\t/* PASSWORD POLICY? */\n\t\tminPasswordLength: function minPasswordLength() {\n\t\t\treturn this.$store.getters.getPasswordPolicyMinLength;\n\t\t},\n\n\n\t\t/* LANGUAGES */\n\t\tlanguages: function languages() {\n\t\t\treturn Array({\n\t\t\t\tlabel: t('settings', 'Common languages'),\n\t\t\t\tlanguages: this.settings.languages.commonlanguages\n\t\t\t}, {\n\t\t\t\tlabel: t('settings', 'All languages'),\n\t\t\t\tlanguages: this.settings.languages.languages\n\t\t\t});\n\t\t},\n\t\tuserLanguage: function userLanguage() {\n\t\t\tvar _this3 = this;\n\n\t\t\tvar availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);\n\t\t\tvar userLang = availableLanguages.find(function (lang) {\n\t\t\t\treturn lang.code === _this3.user.language;\n\t\t\t});\n\t\t\tif ((typeof userLang === 'undefined' ? 'undefined' : _typeof(userLang)) !== 'object' && this.user.language !== '') {\n\t\t\t\treturn {\n\t\t\t\t\tcode: this.user.language,\n\t\t\t\t\tname: this.user.language\n\t\t\t\t};\n\t\t\t} else if (this.user.language === '') {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn userLang;\n\t\t}\n\t},\n\tmethods: {\n\t\t/* MENU HANDLING */\n\t\tshowMenu: function showMenu() {\n\t\t\tthis.openedMenu = true;\n\t\t},\n\t\thideMenu: function hideMenu() {\n\t\t\tthis.openedMenu = false;\n\t\t},\n\n\n\t\t/**\n * Generate avatar url\n * \n * @param {string} user The user name\n * @param {int} size Size integer, default 32\n * @returns {string}\n */\n\t\tgenerateAvatar: function generateAvatar(user) {\n\t\t\tvar size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 32;\n\n\t\t\treturn OC.generateUrl('/avatar/{user}/{size}?v={version}', {\n\t\t\t\tuser: user,\n\t\t\t\tsize: size,\n\t\t\t\tversion: oc_userconfig.avatar.version\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Format the limit text in the selected options\n * \n * @param {int} count elements left\n * @returns {string}\n */\n\t\tlimitGroups: function limitGroups(count) {\n\t\t\treturn '+' + count;\n\t\t},\n\t\tdeleteUser: function deleteUser() {\n\t\t\tvar _this4 = this;\n\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tvar userid = this.user.id;\n\t\t\treturn this.$store.dispatch('deleteUser', { userid: userid }).then(function () {\n\t\t\t\t_this4.loading.delete = false;\n\t\t\t\t_this4.loading.all = false;\n\t\t\t});\n\t\t},\n\t\tenableDisableUser: function enableDisableUser() {\n\t\t\tvar _this5 = this;\n\n\t\t\tthis.loading.delete = true;\n\t\t\tthis.loading.all = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar enabled = !this.user.enabled;\n\t\t\treturn this.$store.dispatch('enableDisableUser', { userid: userid, enabled: enabled }).then(function () {\n\t\t\t\t_this5.loading.delete = false;\n\t\t\t\t_this5.loading.all = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user displayName\n * \n * @param {string} displayName The display name\n * @returns {Promise}\n */\n\t\tupdateDisplayName: function updateDisplayName() {\n\t\t\tvar _this6 = this;\n\n\t\t\tvar displayName = this.$refs.displayName.value;\n\t\t\tthis.loading.displayName = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'displayname',\n\t\t\t\tvalue: displayName\n\t\t\t}).then(function () {\n\t\t\t\t_this6.loading.displayName = false;\n\t\t\t\t_this6.$refs.displayName.value = displayName;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user password\n * \n * @param {string} password The email adress\n * @returns {Promise}\n */\n\t\tupdatePassword: function updatePassword() {\n\t\t\tvar _this7 = this;\n\n\t\t\tvar password = this.$refs.password.value;\n\t\t\tthis.loading.password = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'password',\n\t\t\t\tvalue: password\n\t\t\t}).then(function () {\n\t\t\t\t_this7.loading.password = false;\n\t\t\t\t_this7.$refs.password.value = ''; // empty & show placeholder \n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Set user mailAddress\n * \n * @param {string} mailAddress The email adress\n * @returns {Promise}\n */\n\t\tupdateEmail: function updateEmail() {\n\t\t\tvar _this8 = this;\n\n\t\t\tvar mailAddress = this.$refs.mailAddress.value;\n\t\t\tthis.loading.mailAddress = true;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'email',\n\t\t\t\tvalue: mailAddress\n\t\t\t}).then(function () {\n\t\t\t\t_this8.loading.mailAddress = false;\n\t\t\t\t_this8.$refs.mailAddress.value = mailAddress;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Create a new group\n * \n * @param {string} groups Group id\n * @returns {Promise}\n */\n\t\tcreateGroup: function createGroup(gid) {\n\t\t\tvar _this9 = this;\n\n\t\t\tthis.loading = { groups: true, subadmins: true };\n\t\t\tthis.$store.dispatch('addGroup', gid).then(function () {\n\t\t\t\t_this9.loading = { groups: false, subadmins: false };\n\t\t\t\tvar userid = _this9.user.id;\n\t\t\t\t_this9.$store.dispatch('addUserGroup', { userid: userid, gid: gid });\n\t\t\t});\n\t\t\treturn this.$store.getters.getGroups[this.groups.length];\n\t\t},\n\n\n\t\t/**\n * Add user to group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\taddUserGroup: function addUserGroup(group) {\n\t\t\tvar _this10 = this;\n\n\t\t\tthis.loading.groups = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserGroup', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this10.loading.groups = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Remove user from group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\tremoveUserGroup: function removeUserGroup(group) {\n\t\t\tvar _this11 = this;\n\n\t\t\tthis.loading.groups = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserGroup', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this11.loading.groups = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Add user to group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\taddUserSubAdmin: function addUserSubAdmin(group) {\n\t\t\tvar _this12 = this;\n\n\t\t\tthis.loading.subadmins = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('addUserSubAdmin', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this12.loading.subadmins = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Remove user from group\n * \n * @param {object} group Group object\n * @returns {Promise}\n */\n\t\tremoveUserSubAdmin: function removeUserSubAdmin(group) {\n\t\t\tvar _this13 = this;\n\n\t\t\tthis.loading.subadmins = true;\n\t\t\tvar userid = this.user.id;\n\t\t\tvar gid = group.id;\n\t\t\treturn this.$store.dispatch('removeUserSubAdmin', { userid: userid, gid: gid }).then(function () {\n\t\t\t\treturn _this13.loading.subadmins = false;\n\t\t\t});\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n * @returns {string}\n */\n\t\tsetUserQuota: function setUserQuota() {\n\t\t\tvar _this14 = this;\n\n\t\t\tvar quota = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'none';\n\n\t\t\tthis.loading.quota = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tquota = quota.id ? quota.id : quota;\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'quota',\n\t\t\t\tvalue: quota\n\t\t\t}).then(function () {\n\t\t\t\treturn _this14.loading.quota = false;\n\t\t\t});\n\t\t\treturn quota;\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}\n * @returns {string}\n */\n\t\tsetUserLanguage: function setUserLanguage(lang) {\n\t\t\tvar _this15 = this;\n\n\t\t\tthis.loading.languages = true;\n\t\t\t// ensure we only send the preset id\n\t\t\tthis.$store.dispatch('setUserData', {\n\t\t\t\tuserid: this.user.id,\n\t\t\t\tkey: 'language',\n\t\t\t\tvalue: lang.code\n\t\t\t}).then(function () {\n\t\t\t\treturn _this15.loading.languages = false;\n\t\t\t});\n\t\t\treturn lang;\n\t\t},\n\n\n\t\t/**\n * Validate quota string to make sure it's a valid human file size\n * \n * @param {string} quota Quota in readable format '5 GB'\n * @returns {Promise|boolean}\n */\n\t\tvalidateQuota: function validateQuota(quota) {\n\t\t\t// only used for new presets sent through @Tag\n\t\t\tvar validQuota = OC.Util.computerFileSize(quota);\n\t\t\tif (validQuota === 0) {\n\t\t\t\treturn this.setUserQuota('none');\n\t\t\t} else if (validQuota !== null) {\n\t\t\t\t// unify format output\n\t\t\t\treturn this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));\n\t\t\t}\n\t\t\t// if no valid doo not change\n\t\t\treturn false;\n\t\t}\n\t}\n});\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QvdXNlclJvdy52dWU/Mjg4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBaUZBO0FBQ0E7QUFDQTs7QUFFQTtPQUVBOzBFQUNBOztBQUVBO0FBRUE7QUFIQTs7QUFNQTtBQUZBOzZCQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7dUJBQ0E7O2tDQUVBO2VBQ0E7O1NBRUE7aUJBQ0E7Y0FDQTtpQkFDQTtZQUNBO2VBQ0E7V0FDQTtZQUNBO2FBQ0E7ZUFHQTtBQVpBO0FBSEE7QUFnQkE7OztBQUVBO3NDQUNBOztVQUVBO3dCQUNBO2lCQUNBO0FBSEE7K0NBS0E7OEVBQ0E7bUJBRUE7QUFKQTtBQU1BOzs7QUFDQTs7QUFDQTs7OzRDQUNBOztVQUNBO0FBQ0E7O0FBQ0E7OzsrQ0FDQTs7VUFDQTtBQUVBOzs7QUFDQTtrQ0FDQTsrQkFDQTtrQkFDQTtvRUFDQTtVQUNBOzREQUNBO0FBQ0E7c0NBQ0E7QUFDQTs2QkFDQTtBQUNBOztBQUNBOztrQ0FFQTtBQUNBOzJEQUNBOzt5QkFDQTs7NERBQ0E7a0ZBQ0E7QUFDQTs2QkFDQTtBQUNBOytCQVRBLENBVUE7QUFFQTs7O0FBQ0E7a0RBQ0E7OEJBQ0E7QUFFQTs7O0FBQ0E7a0NBQ0E7O3lCQUdBO3VDQUVBO0FBSEEsSUFEQTt5QkFNQTt1Q0FHQTtBQUpBO0FBS0E7O0FBQ0E7O2lGQUNBOztxQ0FDQTs7c0hBQ0E7O3FCQUVBO3FCQUVBO0FBSEE7eUNBSUE7V0FDQTtBQUNBO1VBQ0E7QUFFQTtBQWpGQTs7QUFtRkE7Z0NBQ0E7cUJBQ0E7QUFDQTtnQ0FDQTtxQkFDQTtBQUVBOzs7QUFPQTs7Ozs7Ozs7QUFDQTs7YUFDQSxZQUNBO1VBRUE7VUFDQTtrQ0FHQTtBQUxBO0FBUUE7OztBQU1BOzs7Ozs7MkNBQ0E7Z0JBQ0E7QUFFQTs7QUFDQTs7eUJBQ0E7c0JBQ0E7MEJBQ0E7K0NBQ0EsbUNBQ0E7NEJBQ0E7eUJBQ0E7QUFDQTtBQUVBOztBQUNBOzt5QkFDQTtzQkFDQTswQkFDQTs0QkFDQTtzRUFDQSxxQ0FDQTs0QkFDQTt5QkFDQTtBQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzRDQUNBOzhCQUNBOztzQkFFQTtTQUNBO1dBQ0E7QUFIQSx1QkFJQTtpQ0FDQTtxQ0FDQTtBQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7O3NDQUNBOzJCQUNBOztzQkFFQTtTQUNBO1dBQ0E7QUFIQSx1QkFJQTs4QkFDQTtzQ0FDQTtBQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzRDQUNBOzhCQUNBOztzQkFFQTtTQUNBO1dBQ0E7QUFIQSx1QkFJQTtpQ0FDQTtxQ0FDQTtBQUNBO0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7OzZDQUNBOzBEQUNBO2lEQUNBOzZCQUNBOzZEQUNBO0FBQ0E7b0RBQ0E7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7eUJBQ0E7MEJBQ0E7bUJBQ0E7aUVBQ0E7b0NBQ0E7O0FBRUE7OztBQU1BOzs7Ozs7O0FBQ0E7O3lCQUNBOzBCQUNBO21CQUNBO29FQUNBO29DQUNBOztBQUVBOzs7QUFNQTs7Ozs7OztBQUNBOzs0QkFDQTswQkFDQTttQkFDQTtvRUFDQTt1Q0FDQTs7QUFFQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7NEJBQ0E7MEJBQ0E7bUJBQ0E7dUVBQ0E7dUNBQ0E7O0FBR0E7OztBQU1BOzs7Ozs7O0FBQ0E7Ozs7d0JBQ0E7QUFDQTtpQ0FDQTs7c0JBRUE7U0FDQTtXQUNBO0FBSEE7bUNBSUE7O1VBQ0E7QUFHQTs7O0FBTUE7Ozs7Ozs7QUFDQTs7NEJBQ0E7QUFDQTs7c0JBRUE7U0FDQTtnQkFDQTtBQUhBO3VDQUlBOztVQUNBO0FBRUE7OztBQU1BOzs7Ozs7K0NBQ0E7QUFDQTs2Q0FDQTt5QkFDQTs2QkFDQTttQ0FDQTtBQUNBOzRFQUNBO0FBQ0E7QUFDQTtVQUNBO0FBRUE7QUFyUEE7QUFuSEEiLCJmaWxlIjoiMTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XG5cdDxkaXYgY2xhc3M9XCJyb3dcIiA6Y2xhc3M9XCJ7J2Rpc2FibGVkJzogbG9hZGluZy5kZWxldGUgfHwgbG9hZGluZy5kaXNhYmxlfVwiPlxuXHRcdDxkaXYgY2xhc3M9XCJhdmF0YXJcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZyc6IGxvYWRpbmcuZGVsZXRlIHx8IGxvYWRpbmcuZGlzYWJsZX1cIj48aW1nIGFsdD1cIlwiIHdpZHRoPVwiMzJcIiBoZWlnaHQ9XCIzMlwiIDpzcmM9XCJnZW5lcmF0ZUF2YXRhcih1c2VyLmlkLCAzMilcIiA6c3Jjc2V0PVwiZ2VuZXJhdGVBdmF0YXIodXNlci5pZCwgNjQpKycgMngsICcrZ2VuZXJhdGVBdmF0YXIodXNlci5pZCwgMTI4KSsnIDR4J1wiPjwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJuYW1lXCI+e3t1c2VyLmlkfX08L2Rpdj5cblx0XHQ8Zm9ybSBjbGFzcz1cImRpc3BsYXlOYW1lXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLmRpc3BsYXlOYW1lfVwiIHYtb246c3VibWl0LnByZXZlbnQ9XCJ1cGRhdGVEaXNwbGF5TmFtZVwiPlxuXHRcdFx0PGlucHV0IDppZD1cIidkaXNwbGF5TmFtZScrdXNlci5pZCtyYW5kXCIgdHlwZT1cInRleHRcIlxuXHRcdFx0XHRcdDpkaXNhYmxlZD1cImxvYWRpbmcuZGlzcGxheU5hbWV8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHQ6dmFsdWU9XCJ1c2VyLmRpc3BsYXluYW1lXCIgcmVmPVwiZGlzcGxheU5hbWVcIlxuXHRcdFx0XHRcdGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiIGF1dG9jb3JyZWN0PVwib2ZmXCIgYXV0b2NhcGl0YWxpemU9XCJvZmZcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiAvPlxuXHRcdFx0PGlucHV0IHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImljb24tY29uZmlybVwiIHZhbHVlPVwiXCIgLz5cblx0XHQ8L2Zvcm0+XG5cdFx0PGZvcm0gY2xhc3M9XCJwYXNzd29yZFwiIHYtaWY9XCJzZXR0aW5ncy5jYW5DaGFuZ2VQYXNzd29yZFwiIDpjbGFzcz1cInsnaWNvbi1sb2FkaW5nLXNtYWxsJzogbG9hZGluZy5wYXNzd29yZH1cIlxuXHRcdFx0ICB2LW9uOnN1Ym1pdC5wcmV2ZW50PVwidXBkYXRlUGFzc3dvcmRcIj5cblx0XHRcdDxpbnB1dCA6aWQ9XCIncGFzc3dvcmQnK3VzZXIuaWQrcmFuZFwiIHR5cGU9XCJwYXNzd29yZFwiIHJlcXVpcmVkXG5cdFx0XHRcdFx0OmRpc2FibGVkPVwibG9hZGluZy5wYXNzd29yZHx8bG9hZGluZy5hbGxcIiA6bWlubGVuZ3RoPVwibWluUGFzc3dvcmRMZW5ndGhcIlxuXHRcdFx0XHRcdHZhbHVlPVwiXCIgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnTmV3IHBhc3N3b3JkJylcIiByZWY9XCJwYXNzd29yZFwiXG5cdFx0XHRcdFx0YXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCIgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIC8+XG5cdFx0XHQ8aW5wdXQgdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiaWNvbi1jb25maXJtXCIgdmFsdWU9XCJcIiAvPlxuXHRcdDwvZm9ybT5cblx0XHQ8ZGl2IHYtZWxzZT48L2Rpdj5cblx0XHQ8Zm9ybSBjbGFzcz1cIm1haWxBZGRyZXNzXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLm1haWxBZGRyZXNzfVwiIHYtb246c3VibWl0LnByZXZlbnQ9XCJ1cGRhdGVFbWFpbFwiPlxuXHRcdFx0PGlucHV0IDppZD1cIidtYWlsQWRkcmVzcycrdXNlci5pZCtyYW5kXCIgdHlwZT1cImVtYWlsXCJcblx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJsb2FkaW5nLm1haWxBZGRyZXNzfHxsb2FkaW5nLmFsbFwiXG5cdFx0XHRcdFx0OnZhbHVlPVwidXNlci5lbWFpbFwiIHJlZj1cIm1haWxBZGRyZXNzXCJcblx0XHRcdFx0XHRhdXRvY29tcGxldGU9XCJuZXctcGFzc3dvcmRcIiBhdXRvY29ycmVjdD1cIm9mZlwiIGF1dG9jYXBpdGFsaXplPVwib2ZmXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgLz5cblx0XHRcdDxpbnB1dCB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJpY29uLWNvbmZpcm1cIiB2YWx1ZT1cIlwiIC8+XG5cdFx0PC9mb3JtPlxuXHRcdDxkaXYgY2xhc3M9XCJncm91cHNcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcuZ3JvdXBzfVwiPlxuXHRcdFx0PG11bHRpc2VsZWN0IDp2YWx1ZT1cInVzZXJHcm91cHNcIiA6b3B0aW9ucz1cImdyb3Vwc1wiIDpkaXNhYmxlZD1cImxvYWRpbmcuZ3JvdXBzfHxsb2FkaW5nLmFsbFwiXG5cdFx0XHRcdFx0XHQgdGFnLXBsYWNlaG9sZGVyPVwiY3JlYXRlXCIgOnBsYWNlaG9sZGVyPVwidCgnc2V0dGluZ3MnLCAnQWRkIHVzZXIgaW4gZ3JvdXAnKVwiXG5cdFx0XHRcdFx0XHQgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJpZFwiIGNsYXNzPVwibXVsdGlzZWxlY3QtdnVlXCJcblx0XHRcdFx0XHRcdCA6bGltaXQ9XCIyXCIgOmxpbWl0VGV4dD1cImxpbWl0R3JvdXBzXCJcblx0XHRcdFx0XHRcdCA6bXVsdGlwbGU9XCJ0cnVlXCIgOnRhZ2dhYmxlPVwidHJ1ZVwiIDpjbG9zZU9uU2VsZWN0PVwiZmFsc2VcIlxuXHRcdFx0XHRcdFx0IEB0YWc9XCJjcmVhdGVHcm91cFwiIEBzZWxlY3Q9XCJhZGRVc2VyR3JvdXBcIiBAcmVtb3ZlPVwicmVtb3ZlVXNlckdyb3VwXCI+XG5cdFx0XHQ8L211bHRpc2VsZWN0PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJzdWJhZG1pbnNcIiB2LWlmPVwic3ViQWRtaW5zR3JvdXBzLmxlbmd0aD4wXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLnN1YmFkbWluc31cIj5cblx0XHRcdDxtdWx0aXNlbGVjdCA6dmFsdWU9XCJ1c2VyU3ViQWRtaW5zR3JvdXBzXCIgOm9wdGlvbnM9XCJzdWJBZG1pbnNHcm91cHNcIiA6ZGlzYWJsZWQ9XCJsb2FkaW5nLnN1YmFkbWluc3x8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdFx0IDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1NldCB1c2VyIGFzIGFkbWluIGZvcicpXCJcblx0XHRcdFx0XHRcdCBsYWJlbD1cIm5hbWVcIiB0cmFjay1ieT1cImlkXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC12dWVcIlxuXHRcdFx0XHRcdFx0IDpsaW1pdD1cIjJcIiA6bGltaXRUZXh0PVwibGltaXRHcm91cHNcIlxuXHRcdFx0XHRcdFx0IDptdWx0aXBsZT1cInRydWVcIiA6Y2xvc2VPblNlbGVjdD1cImZhbHNlXCJcblx0XHRcdFx0XHRcdCBAc2VsZWN0PVwiYWRkVXNlclN1YkFkbWluXCIgQHJlbW92ZT1cInJlbW92ZVVzZXJTdWJBZG1pblwiPlxuXHRcdFx0XHQ8c3BhbiBzbG90PVwibm9SZXN1bHRcIj57e3QoJ3NldHRpbmdzJywnTm8gcmVzdWx0Jyl9fTwvc3Bhbj5cblx0XHRcdDwvbXVsdGlzZWxlY3Q+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInF1b3RhXCIgOmNsYXNzPVwieydpY29uLWxvYWRpbmctc21hbGwnOiBsb2FkaW5nLnF1b3RhfVwiPlxuXHRcdFx0PG11bHRpc2VsZWN0IDp2YWx1ZT1cInVzZXJRdW90YVwiIDpvcHRpb25zPVwicXVvdGFPcHRpb25zXCIgOmRpc2FibGVkPVwibG9hZGluZy5xdW90YXx8bG9hZGluZy5hbGxcIlxuXHRcdFx0XHRcdFx0IHRhZy1wbGFjZWhvbGRlcj1cImNyZWF0ZVwiIDpwbGFjZWhvbGRlcj1cInQoJ3NldHRpbmdzJywgJ1NlbGVjdCB1c2VyIHF1b3RhJylcIlxuXHRcdFx0XHRcdFx0IGxhYmVsPVwibGFiZWxcIiB0cmFjay1ieT1cImlkXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC12dWVcIlxuXHRcdFx0XHRcdFx0IDphbGxvd0VtcHR5PVwiZmFsc2VcIiA6dGFnZ2FibGU9XCJ0cnVlXCJcblx0XHRcdFx0XHRcdCBAdGFnPVwidmFsaWRhdGVRdW90YVwiIEBpbnB1dD1cInNldFVzZXJRdW90YVwiPlxuXHRcdFx0PC9tdWx0aXNlbGVjdD5cblx0XHRcdDxwcm9ncmVzcyBjbGFzcz1cInF1b3RhLXVzZXItcHJvZ3Jlc3NcIiA6Y2xhc3M9XCJ7J3dhcm4nOnVzZWRRdW90YT44MH1cIiA6dmFsdWU9XCJ1c2VkUXVvdGFcIiBtYXg9XCIxMDBcIj48L3Byb2dyZXNzPlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJsYW5ndWFnZXNcIiA6Y2xhc3M9XCJ7J2ljb24tbG9hZGluZy1zbWFsbCc6IGxvYWRpbmcubGFuZ3VhZ2VzfVwiXG5cdFx0XHQgdi1pZj1cInNob3dDb25maWcuc2hvd0xhbmd1YWdlc1wiPlxuXHRcdFx0PG11bHRpc2VsZWN0IDp2YWx1ZT1cInVzZXJMYW5ndWFnZVwiIDpvcHRpb25zPVwibGFuZ3VhZ2VzXCIgOmRpc2FibGVkPVwibG9hZGluZy5sYW5ndWFnZXN8fGxvYWRpbmcuYWxsXCJcblx0XHRcdFx0XHRcdCA6cGxhY2Vob2xkZXI9XCJ0KCdzZXR0aW5ncycsICdObyBsYW5ndWFnZSBzZXQnKVwiXG5cdFx0XHRcdFx0XHQgbGFiZWw9XCJuYW1lXCIgdHJhY2stYnk9XCJjb2RlXCIgY2xhc3M9XCJtdWx0aXNlbGVjdC12dWVcIlxuXHRcdFx0XHRcdFx0IDphbGxvd0VtcHR5PVwiZmFsc2VcIiBncm91cC12YWx1ZXM9XCJsYW5ndWFnZXNcIiBncm91cC1sYWJlbD1cImxhYmVsXCJcblx0XHRcdFx0XHRcdCBAaW5wdXQ9XCJzZXRVc2VyTGFuZ3VhZ2VcIj5cblx0XHRcdDwvbXVsdGlzZWxlY3Q+XG5cdFx0PC9kaXY+XG5cdFx0PGRpdiBjbGFzcz1cInN0b3JhZ2VMb2NhdGlvblwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dTdG9yYWdlUGF0aFwiPnt7dXNlci5zdG9yYWdlTG9jYXRpb259fTwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJ1c2VyQmFja2VuZFwiIHYtaWY9XCJzaG93Q29uZmlnLnNob3dVc2VyQmFja2VuZFwiPnt7dXNlci5iYWNrZW5kfX08L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwibGFzdExvZ2luXCIgdi1pZj1cInNob3dDb25maWcuc2hvd0xhc3RMb2dpblwiIDp0aXRsZT1cInVzZXIubGFzdExvZ2luPjAgPyBPQy5VdGlsLmZvcm1hdERhdGUodXNlci5sYXN0TG9naW4pIDogJydcIj5cblx0XHRcdHt7dXNlci5sYXN0TG9naW4+MCA/IE9DLlV0aWwucmVsYXRpdmVNb2RpZmllZERhdGUodXNlci5sYXN0TG9naW4pIDogdCgnc2V0dGluZ3MnLCdOZXZlcicpfX1cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwidXNlckFjdGlvbnNcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJ0b2dnbGVVc2VyQWN0aW9uc1wiIHYtaWY9XCJPQy5jdXJyZW50VXNlciAhPT0gdXNlci5pZCAmJiB1c2VyLmlkICE9PSAnYWRtaW4nICYmICFsb2FkaW5nLmFsbFwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaWNvbi1tb3JlXCIgdi1jbGljay1vdXRzaWRlPVwiaGlkZU1lbnVcIiBAY2xpY2s9XCJzaG93TWVudVwiPjwvZGl2PlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwicG9wb3Zlcm1lbnVcIiA6Y2xhc3M9XCJ7ICdvcGVuJzogb3BlbmVkTWVudSB9XCI+XG5cdFx0XHRcdFx0PHBvcG92ZXItbWVudSA6bWVudT1cInVzZXJBY3Rpb25zXCIgLz5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgcG9wb3Zlck1lbnUgZnJvbSAnLi4vcG9wb3Zlck1lbnUnO1xuaW1wb3J0IENsaWNrT3V0c2lkZSBmcm9tICd2dWUtY2xpY2stb3V0c2lkZSc7XG5pbXBvcnQgTXVsdGlzZWxlY3QgZnJvbSAndnVlLW11bHRpc2VsZWN0JztcblxuZXhwb3J0IGRlZmF1bHQge1xuXHRuYW1lOiAndXNlclJvdycsXG5cdHByb3BzOiBbJ3VzZXInLCAnc2V0dGluZ3MnLCAnZ3JvdXBzJywgJ3N1YkFkbWluc0dyb3VwcycsICdxdW90YU9wdGlvbnMnLCAnc2hvd0NvbmZpZyddLFxuXHRjb21wb25lbnRzOiB7XG5cdFx0cG9wb3Zlck1lbnUsXG5cdFx0TXVsdGlzZWxlY3Rcblx0fSxcblx0ZGlyZWN0aXZlczoge1xuXHRcdENsaWNrT3V0c2lkZVxuXHR9LFxuXHRtb3VudGVkKCkge1xuXHRcdC8vIHJlcXVpcmVkIGlmIHBvcHVwIG5lZWRzIHRvIHN0YXkgb3BlbmVkIGFmdGVyIG1lbnUgY2xpY2tcblx0XHQvLyBzaW5jZSB3ZSBvbmx5IGhhdmUgZGlzYWJsZS9kZWxldGUgYWN0aW9ucywgbGV0J3MgY2xvc2UgaXQgZGlyZWN0bHlcblx0XHQvLyB0aGlzLnBvcHVwSXRlbSA9IHRoaXMuJGVsO1xuXHR9LFxuXHRkYXRhKCkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRyYW5kOiBwYXJzZUludChNYXRoLnJhbmRvbSgpICogMTAwMCksXG5cdFx0XHRvcGVuZWRNZW51OiBmYWxzZSxcblx0XHRcdGxvYWRpbmc6IHtcblx0XHRcdFx0YWxsOiBmYWxzZSxcblx0XHRcdFx0ZGlzcGxheU5hbWU6IGZhbHNlLFxuXHRcdFx0XHRwYXNzd29yZDogZmFsc2UsXG5cdFx0XHRcdG1haWxBZGRyZXNzOiBmYWxzZSxcblx0XHRcdFx0Z3JvdXBzOiBmYWxzZSxcblx0XHRcdFx0c3ViYWRtaW5zOiBmYWxzZSxcblx0XHRcdFx0cXVvdGE6IGZhbHNlLFxuXHRcdFx0XHRkZWxldGU6IGZhbHNlLFxuXHRcdFx0XHRkaXNhYmxlOiBmYWxzZSxcblx0XHRcdFx0bGFuZ3VhZ2VzOiBmYWxzZVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0Y29tcHV0ZWQ6IHtcblx0XHQvKiBVU0VSIFBPUE9WRVJNRU5VIEFDVElPTlMgKi9cblx0XHR1c2VyQWN0aW9ucygpIHtcblx0XHRcdHJldHVybiBbe1xuXHRcdFx0XHRpY29uOiAnaWNvbi1kZWxldGUnLFxuXHRcdFx0XHR0ZXh0OiB0KCdzZXR0aW5ncycsJ0RlbGV0ZSB1c2VyJyksXG5cdFx0XHRcdGFjdGlvbjogdGhpcy5kZWxldGVVc2VyXG5cdFx0XHR9LHtcblx0XHRcdFx0J2ljb24nOiB0aGlzLnVzZXIuZW5hYmxlZCA/ICdpY29uLWNsb3NlJyA6ICdpY29uLWFkZCcsXG5cdFx0XHRcdCd0ZXh0JzogdGhpcy51c2VyLmVuYWJsZWQgPyB0KCdzZXR0aW5ncycsJ0Rpc2FibGUgdXNlcicpIDogdCgnc2V0dGluZ3MnLCdFbmFibGUgdXNlcicpLFxuXHRcdFx0XHQnYWN0aW9uJzogdGhpcy5lbmFibGVEaXNhYmxlVXNlclxuXHRcdFx0fV1cblx0XHR9LFxuXG5cdFx0LyogR1JPVVBTIE1BTkFHRU1FTlQgKi9cblx0XHR1c2VyR3JvdXBzKCkge1xuXHRcdFx0bGV0IHVzZXJHcm91cHMgPSB0aGlzLmdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gdGhpcy51c2VyLmdyb3Vwcy5pbmNsdWRlcyhncm91cC5pZCkpO1xuXHRcdFx0cmV0dXJuIHVzZXJHcm91cHM7XG5cdFx0fSxcblx0XHR1c2VyU3ViQWRtaW5zR3JvdXBzKCkge1xuXHRcdFx0bGV0IHVzZXJTdWJBZG1pbnNHcm91cHMgPSB0aGlzLnN1YkFkbWluc0dyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4gdGhpcy51c2VyLnN1YmFkbWluLmluY2x1ZGVzKGdyb3VwLmlkKSk7XG5cdFx0XHRyZXR1cm4gdXNlclN1YkFkbWluc0dyb3Vwcztcblx0XHR9LFxuXG5cdFx0LyogUVVPVEEgTUFOQUdFTUVOVCAqL1xuXHRcdHVzZWRRdW90YSgpIHtcblx0XHRcdGxldCBxdW90YSA9IHRoaXMudXNlci5xdW90YS5xdW90YTtcblx0XHRcdGlmIChxdW90YSA+IDApIHtcblx0XHRcdFx0cXVvdGEgPSBNYXRoLm1pbigxMDAsIE1hdGgucm91bmQodGhpcy51c2VyLnF1b3RhLnVzZWQgLyBxdW90YSAqIDEwMCkpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dmFyIHVzZWRJbkdCID0gdGhpcy51c2VyLnF1b3RhLnVzZWQgLyAoMTAgKiBNYXRoLnBvdygyLCAzMCkpO1xuXHRcdFx0XHQvL2FzeW1wdG90aWMgY3VydmUgYXBwcm9hY2hpbmcgNTAlIGF0IDEwR0IgdG8gdmlzdWFsaXplIHVzZWQgc3RhY2Ugd2l0aCBpbmZpbml0ZSBxdW90YVxuXHRcdFx0XHRxdW90YSA9IDk1ICogKDEgLSAoMSAvICh1c2VkSW5HQiArIDEpKSk7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gaXNOYU4ocXVvdGEpID8gMCA6IHF1b3RhO1xuXHRcdH0sXG5cdFx0Ly8gTWFwcGluZyBzYXZlZCB2YWx1ZXMgdG8gb2JqZWN0c1xuXHRcdHVzZXJRdW90YSgpIHtcblx0XHRcdGlmICh0aGlzLnVzZXIucXVvdGEucXVvdGEgPiAwKSB7XG5cdFx0XHRcdC8vIGlmIHZhbHVlIGlzIHZhbGlkLCBsZXQncyBtYXAgdGhlIHF1b3RhT3B0aW9ucyBvciByZXR1cm4gY3VzdG9tIHF1b3RhXG5cdFx0XHRcdGxldCBodW1hblF1b3RhID0gT0MuVXRpbC5odW1hbkZpbGVTaXplKHRoaXMudXNlci5xdW90YS5xdW90YSk7XG5cdFx0XHRcdGxldCB1c2VyUXVvdGEgPSB0aGlzLnF1b3RhT3B0aW9ucy5maW5kKHF1b3RhID0+IHF1b3RhLmlkID09PSBodW1hblF1b3RhKTtcblx0XHRcdFx0cmV0dXJuIHVzZXJRdW90YSA/IHVzZXJRdW90YSA6IHtpZDpodW1hblF1b3RhLCBsYWJlbDpodW1hblF1b3RhfTtcblx0XHRcdH0gZWxzZSBpZiAodGhpcy51c2VyLnF1b3RhLnF1b3RhID09PSAwIHx8IHRoaXMudXNlci5xdW90YS5xdW90YSA9PT0gJ2RlZmF1bHQnKSB7XG5cdFx0XHRcdC8vIGRlZmF1bHQgcXVvdGEgaXMgcmVwbGFjZWQgYnkgdGhlIHByb3BlciB2YWx1ZSBvbiBsb2FkXG5cdFx0XHRcdHJldHVybiB0aGlzLnF1b3RhT3B0aW9uc1swXTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzLnF1b3RhT3B0aW9uc1sxXTsgLy8gdW5saW1pdGVkXG5cdFx0fSxcblxuXHRcdC8qIFBBU1NXT1JEIFBPTElDWT8gKi9cblx0XHRtaW5QYXNzd29yZExlbmd0aCgpIHtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBhc3N3b3JkUG9saWN5TWluTGVuZ3RoO1xuXHRcdH0sXG5cblx0XHQvKiBMQU5HVUFHRVMgKi9cblx0XHRsYW5ndWFnZXMoKSB7XG5cdFx0XHRyZXR1cm4gQXJyYXkoXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogdCgnc2V0dGluZ3MnLCAnQ29tbW9uIGxhbmd1YWdlcycpLFxuXHRcdFx0XHRcdGxhbmd1YWdlczogdGhpcy5zZXR0aW5ncy5sYW5ndWFnZXMuY29tbW9ubGFuZ3VhZ2VzXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRsYWJlbDogdCgnc2V0dGluZ3MnLCAnQWxsIGxhbmd1YWdlcycpLFxuXHRcdFx0XHRcdGxhbmd1YWdlczogdGhpcy5zZXR0aW5ncy5sYW5ndWFnZXMubGFuZ3VhZ2VzXG5cdFx0XHRcdH1cblx0XHRcdCk7XG5cdFx0fSxcblx0XHR1c2VyTGFuZ3VhZ2UoKSB7XG5cdFx0XHRsZXQgYXZhaWxhYmxlTGFuZ3VhZ2VzID0gdGhpcy5sYW5ndWFnZXNbMF0ubGFuZ3VhZ2VzLmNvbmNhdCh0aGlzLmxhbmd1YWdlc1sxXS5sYW5ndWFnZXMpO1xuXHRcdFx0bGV0IHVzZXJMYW5nID0gYXZhaWxhYmxlTGFuZ3VhZ2VzLmZpbmQobGFuZyA9PiBsYW5nLmNvZGUgPT09IHRoaXMudXNlci5sYW5ndWFnZSk7XG5cdFx0XHRpZiAodHlwZW9mIHVzZXJMYW5nICE9PSAnb2JqZWN0JyAmJiB0aGlzLnVzZXIubGFuZ3VhZ2UgIT09ICcnKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0Y29kZTogdGhpcy51c2VyLmxhbmd1YWdlLFxuXHRcdFx0XHRcdG5hbWU6IHRoaXMudXNlci5sYW5ndWFnZVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYodGhpcy51c2VyLmxhbmd1YWdlID09PSAnJykge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdXNlckxhbmc7XG5cdFx0fVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0LyogTUVOVSBIQU5ETElORyAqL1xuXHRcdHNob3dNZW51ICgpIHtcblx0XHRcdHRoaXMub3BlbmVkTWVudSA9IHRydWU7XG5cdFx0fSxcblx0XHRoaWRlTWVudSAoKSB7XG5cdFx0XHR0aGlzLm9wZW5lZE1lbnUgPSBmYWxzZTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogR2VuZXJhdGUgYXZhdGFyIHVybFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyIFRoZSB1c2VyIG5hbWVcblx0XHQgKiBAcGFyYW0ge2ludH0gc2l6ZSBTaXplIGludGVnZXIsIGRlZmF1bHQgMzJcblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdGdlbmVyYXRlQXZhdGFyKHVzZXIsIHNpemU9MzIpIHtcblx0XHRcdHJldHVybiBPQy5nZW5lcmF0ZVVybChcblx0XHRcdFx0Jy9hdmF0YXIve3VzZXJ9L3tzaXplfT92PXt2ZXJzaW9ufScsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR1c2VyOiB1c2VyLFxuXHRcdFx0XHRcdHNpemU6IHNpemUsXG5cdFx0XHRcdFx0dmVyc2lvbjogb2NfdXNlcmNvbmZpZy5hdmF0YXIudmVyc2lvblxuXHRcdFx0XHR9XG5cdFx0XHQpO1xuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIEZvcm1hdCB0aGUgbGltaXQgdGV4dCBpbiB0aGUgc2VsZWN0ZWQgb3B0aW9uc1xuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7aW50fSBjb3VudCBlbGVtZW50cyBsZWZ0XG5cdFx0ICogQHJldHVybnMge3N0cmluZ31cblx0XHQgKi9cblx0XHRsaW1pdEdyb3Vwcyhjb3VudCkge1xuXHRcdFx0cmV0dXJuICcrJytjb3VudDtcblx0XHR9LFxuXG5cdFx0ZGVsZXRlVXNlcigpIHtcblx0XHRcdHRoaXMubG9hZGluZy5kZWxldGUgPSB0cnVlO1xuXHRcdFx0dGhpcy5sb2FkaW5nLmFsbCA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdkZWxldGVVc2VyJywge3VzZXJpZH0pXG5cdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuZGVsZXRlID0gZmFsc2Vcblx0XHRcdFx0XHR0aGlzLmxvYWRpbmcuYWxsID0gZmFsc2Vcblx0XHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdGVuYWJsZURpc2FibGVVc2VyKCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLmRlbGV0ZSA9IHRydWU7XG5cdFx0XHR0aGlzLmxvYWRpbmcuYWxsID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZW5hYmxlZCA9ICF0aGlzLnVzZXIuZW5hYmxlZDtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZW5hYmxlRGlzYWJsZVVzZXInLCB7dXNlcmlkLCBlbmFibGVkfSlcblx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5kZWxldGUgPSBmYWxzZVxuXHRcdFx0XHRcdHRoaXMubG9hZGluZy5hbGwgPSBmYWxzZVxuXHRcdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IHVzZXIgZGlzcGxheU5hbWVcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGxheU5hbWUgVGhlIGRpc3BsYXkgbmFtZVxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHVwZGF0ZURpc3BsYXlOYW1lKCkge1xuXHRcdFx0bGV0IGRpc3BsYXlOYW1lID0gdGhpcy4kcmVmcy5kaXNwbGF5TmFtZS52YWx1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5kaXNwbGF5TmFtZSA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLCBcblx0XHRcdFx0a2V5OiAnZGlzcGxheW5hbWUnLFxuXHRcdFx0XHR2YWx1ZTogZGlzcGxheU5hbWVcblx0XHRcdH0pLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcuZGlzcGxheU5hbWUgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy4kcmVmcy5kaXNwbGF5TmFtZS52YWx1ZSA9IGRpc3BsYXlOYW1lO1xuXHRcdFx0fSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFNldCB1c2VyIHBhc3N3b3JkXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IHBhc3N3b3JkIFRoZSBlbWFpbCBhZHJlc3Ncblx0XHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0XHQgKi9cblx0XHR1cGRhdGVQYXNzd29yZCgpIHtcblx0XHRcdGxldCBwYXNzd29yZCA9IHRoaXMuJHJlZnMucGFzc3dvcmQudmFsdWU7XG5cdFx0XHR0aGlzLmxvYWRpbmcucGFzc3dvcmQgPSB0cnVlO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3NldFVzZXJEYXRhJywge1xuXHRcdFx0XHR1c2VyaWQ6IHRoaXMudXNlci5pZCxcblx0XHRcdFx0a2V5OiAncGFzc3dvcmQnLFxuXHRcdFx0XHR2YWx1ZTogcGFzc3dvcmRcblx0XHRcdH0pLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmxvYWRpbmcucGFzc3dvcmQgPSBmYWxzZTtcblx0XHRcdFx0dGhpcy4kcmVmcy5wYXNzd29yZC52YWx1ZSA9ICcnOyAvLyBlbXB0eSAmIHNob3cgcGxhY2Vob2xkZXIgXG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogU2V0IHVzZXIgbWFpbEFkZHJlc3Ncblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge3N0cmluZ30gbWFpbEFkZHJlc3MgVGhlIGVtYWlsIGFkcmVzc1xuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdHVwZGF0ZUVtYWlsKCkge1xuXHRcdFx0bGV0IG1haWxBZGRyZXNzID0gdGhpcy4kcmVmcy5tYWlsQWRkcmVzcy52YWx1ZTtcblx0XHRcdHRoaXMubG9hZGluZy5tYWlsQWRkcmVzcyA9IHRydWU7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLFxuXHRcdFx0XHRrZXk6ICdlbWFpbCcsXG5cdFx0XHRcdHZhbHVlOiBtYWlsQWRkcmVzc1xuXHRcdFx0fSkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZy5tYWlsQWRkcmVzcyA9IGZhbHNlO1xuXHRcdFx0XHR0aGlzLiRyZWZzLm1haWxBZGRyZXNzLnZhbHVlID0gbWFpbEFkZHJlc3M7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQ3JlYXRlIGEgbmV3IGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtzdHJpbmd9IGdyb3VwcyBHcm91cCBpZFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdGNyZWF0ZUdyb3VwKGdpZCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nID0ge2dyb3Vwczp0cnVlLCBzdWJhZG1pbnM6dHJ1ZX1cblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRHcm91cCcsIGdpZCkudGhlbigoKSA9PiB7XG5cdFx0XHRcdHRoaXMubG9hZGluZyA9IHtncm91cHM6ZmFsc2UsIHN1YmFkbWluczpmYWxzZX07XG5cdFx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRVc2VyR3JvdXAnLCB7dXNlcmlkLCBnaWR9KTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0R3JvdXBzW3RoaXMuZ3JvdXBzLmxlbmd0aF07XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIEFkZCB1c2VyIHRvIGdyb3VwXG5cdFx0ICogXG5cdFx0ICogQHBhcmFtIHtvYmplY3R9IGdyb3VwIEdyb3VwIG9iamVjdFxuXHRcdCAqIEByZXR1cm5zIHtQcm9taXNlfVxuXHRcdCAqL1xuXHRcdGFkZFVzZXJHcm91cChncm91cCkge1xuXHRcdFx0dGhpcy5sb2FkaW5nLmdyb3VwcyA9IHRydWU7XG5cdFx0XHRsZXQgdXNlcmlkID0gdGhpcy51c2VyLmlkO1xuXHRcdFx0bGV0IGdpZCA9IGdyb3VwLmlkO1xuXHRcdFx0cmV0dXJuIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRVc2VyR3JvdXAnLCB7dXNlcmlkLCBnaWR9KVxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHRoaXMubG9hZGluZy5ncm91cHMgPSBmYWxzZSk7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFJlbW92ZSB1c2VyIGZyb20gZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge29iamVjdH0gZ3JvdXAgR3JvdXAgb2JqZWN0XG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0cmVtb3ZlVXNlckdyb3VwKGdyb3VwKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuZ3JvdXBzID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZ2lkID0gZ3JvdXAuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3JlbW92ZVVzZXJHcm91cCcsIHt1c2VyaWQsIGdpZH0pXG5cdFx0XHRcdFx0LnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLmdyb3VwcyA9IGZhbHNlKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogQWRkIHVzZXIgdG8gZ3JvdXBcblx0XHQgKiBcblx0XHQgKiBAcGFyYW0ge29iamVjdH0gZ3JvdXAgR3JvdXAgb2JqZWN0XG5cdFx0ICogQHJldHVybnMge1Byb21pc2V9XG5cdFx0ICovXG5cdFx0YWRkVXNlclN1YkFkbWluKGdyb3VwKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcuc3ViYWRtaW5zID0gdHJ1ZTtcblx0XHRcdGxldCB1c2VyaWQgPSB0aGlzLnVzZXIuaWQ7XG5cdFx0XHRsZXQgZ2lkID0gZ3JvdXAuaWQ7XG5cdFx0XHRyZXR1cm4gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZFVzZXJTdWJBZG1pbicsIHt1c2VyaWQsIGdpZH0pXG5cdFx0XHRcdFx0LnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLnN1YmFkbWlucyA9IGZhbHNlKTtcblx0XHR9LFxuXG5cdFx0LyoqXG5cdFx0ICogUmVtb3ZlIHVzZXIgZnJvbSBncm91cFxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7b2JqZWN0fSBncm91cCBHcm91cCBvYmplY3Rcblx0XHQgKiBAcmV0dXJucyB7UHJvbWlzZX1cblx0XHQgKi9cblx0XHRyZW1vdmVVc2VyU3ViQWRtaW4oZ3JvdXApIHtcblx0XHRcdHRoaXMubG9hZGluZy5zdWJhZG1pbnMgPSB0cnVlO1xuXHRcdFx0bGV0IHVzZXJpZCA9IHRoaXMudXNlci5pZDtcblx0XHRcdGxldCBnaWQgPSBncm91cC5pZDtcblx0XHRcdHJldHVybiB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncmVtb3ZlVXNlclN1YkFkbWluJywge3VzZXJpZCwgZ2lkfSlcblx0XHRcdFx0XHQudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcuc3ViYWRtaW5zID0gZmFsc2UpO1xuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIFZhbGlkYXRlIHF1b3RhIHN0cmluZyB0byBtYWtlIHN1cmUgaXQncyBhIHZhbGlkIGh1bWFuIGZpbGUgc2l6ZVxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfE9iamVjdH0gcXVvdGEgUXVvdGEgaW4gcmVhZGFibGUgZm9ybWF0ICc1IEdCJyBvciBPYmplY3Qge2lkOiAnNSBHQicsIGxhYmVsOiAnNUdCJ31cblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHNldFVzZXJRdW90YShxdW90YSA9ICdub25lJykge1xuXHRcdFx0dGhpcy5sb2FkaW5nLnF1b3RhID0gdHJ1ZTtcblx0XHRcdC8vIGVuc3VyZSB3ZSBvbmx5IHNlbmQgdGhlIHByZXNldCBpZFxuXHRcdFx0cXVvdGEgPSBxdW90YS5pZCA/IHF1b3RhLmlkIDogcXVvdGE7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7XG5cdFx0XHRcdHVzZXJpZDogdGhpcy51c2VyLmlkLCBcblx0XHRcdFx0a2V5OiAncXVvdGEnLFxuXHRcdFx0XHR2YWx1ZTogcXVvdGFcblx0XHRcdH0pLnRoZW4oKCkgPT4gdGhpcy5sb2FkaW5nLnF1b3RhID0gZmFsc2UpO1xuXHRcdFx0cmV0dXJuIHF1b3RhO1xuXHRcdH0sXG5cblxuXHRcdC8qKlxuXHRcdCAqIFZhbGlkYXRlIHF1b3RhIHN0cmluZyB0byBtYWtlIHN1cmUgaXQncyBhIHZhbGlkIGh1bWFuIGZpbGUgc2l6ZVxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfE9iamVjdH0gcXVvdGEgUXVvdGEgaW4gcmVhZGFibGUgZm9ybWF0ICc1IEdCJyBvciBPYmplY3Qge2lkOiAnNSBHQicsIGxhYmVsOiAnNUdCJ31cblx0XHQgKiBAcmV0dXJucyB7c3RyaW5nfVxuXHRcdCAqL1xuXHRcdHNldFVzZXJMYW5ndWFnZShsYW5nKSB7XG5cdFx0XHR0aGlzLmxvYWRpbmcubGFuZ3VhZ2VzID0gdHJ1ZTtcblx0XHRcdC8vIGVuc3VyZSB3ZSBvbmx5IHNlbmQgdGhlIHByZXNldCBpZFxuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3NldFVzZXJEYXRhJywge1xuXHRcdFx0XHR1c2VyaWQ6IHRoaXMudXNlci5pZCwgXG5cdFx0XHRcdGtleTogJ2xhbmd1YWdlJyxcblx0XHRcdFx0dmFsdWU6IGxhbmcuY29kZVxuXHRcdFx0fSkudGhlbigoKSA9PiB0aGlzLmxvYWRpbmcubGFuZ3VhZ2VzID0gZmFsc2UpO1xuXHRcdFx0cmV0dXJuIGxhbmc7XG5cdFx0fSxcblxuXHRcdC8qKlxuXHRcdCAqIFZhbGlkYXRlIHF1b3RhIHN0cmluZyB0byBtYWtlIHN1cmUgaXQncyBhIHZhbGlkIGh1bWFuIGZpbGUgc2l6ZVxuXHRcdCAqIFxuXHRcdCAqIEBwYXJhbSB7c3RyaW5nfSBxdW90YSBRdW90YSBpbiByZWFkYWJsZSBmb3JtYXQgJzUgR0InXG5cdFx0ICogQHJldHVybnMge1Byb21pc2V8Ym9vbGVhbn1cblx0XHQgKi9cblx0XHR2YWxpZGF0ZVF1b3RhKHF1b3RhKSB7XG5cdFx0XHQvLyBvbmx5IHVzZWQgZm9yIG5ldyBwcmVzZXRzIHNlbnQgdGhyb3VnaCBAVGFnXG5cdFx0XHRsZXQgdmFsaWRRdW90YSA9IE9DLlV0aWwuY29tcHV0ZXJGaWxlU2l6ZShxdW90YSk7XG5cdFx0XHRpZiAodmFsaWRRdW90YSA9PT0gMCkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5zZXRVc2VyUXVvdGEoJ25vbmUnKTtcblx0XHRcdH0gZWxzZSBpZiAodmFsaWRRdW90YSAhPT0gbnVsbCkge1xuXHRcdFx0XHQvLyB1bmlmeSBmb3JtYXQgb3V0cHV0XG5cdFx0XHRcdHJldHVybiB0aGlzLnNldFVzZXJRdW90YShPQy5VdGlsLmh1bWFuRmlsZVNpemUoT0MuVXRpbC5jb21wdXRlckZpbGVTaXplKHF1b3RhKSkpO1xuXHRcdFx0fVxuXHRcdFx0Ly8gaWYgbm8gdmFsaWQgZG9vIG5vdCBjaGFuZ2Vcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cbn1cbjwvc2NyaXB0PlxuXG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIHNyYy9jb21wb25lbnRzL3VzZXJMaXN0L3VzZXJSb3cudnVlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///15\n");
/***/ }),
/* 16 */
@@ -277,39 +277,14 @@ eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * vue-router v3.0.1\
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_Users_vue__ = __webpack_require__(7);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_68be103e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Users_vue__ = __webpack_require__(50);\nvar disposed = false\nfunction injectStyle (ssrContext) {\n if (disposed) return\n __webpack_require__(32)\n}\nvar normalizeComponent = __webpack_require__(2)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_Users_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_68be103e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Users_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/views/Users.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-68be103e\", Component.options)\n } else {\n hotAPI.reload(\"data-v-68be103e\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdmlld3MvVXNlcnMudnVlP2MyZDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBLHdCQUFvTDtBQUNwTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDd0s7QUFDeEs7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFlBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEIiwiZmlsZSI6IjMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGRpc3Bvc2VkID0gZmFsc2VcbmZ1bmN0aW9uIGluamVjdFN0eWxlIChzc3JDb250ZXh0KSB7XG4gIGlmIChkaXNwb3NlZCkgcmV0dXJuXG4gIHJlcXVpcmUoXCIhIXZ1ZS1zdHlsZS1sb2FkZXIhY3NzLWxvYWRlciEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc3R5bGUtY29tcGlsZXIvaW5kZXg/e1xcXCJ2dWVcXFwiOnRydWUsXFxcImlkXFxcIjpcXFwiZGF0YS12LTY4YmUxMDNlXFxcIixcXFwic2NvcGVkXFxcIjpmYWxzZSxcXFwiaGFzSW5saW5lQ29uZmlnXFxcIjpmYWxzZX0hc2Fzcy1sb2FkZXIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9Vc2Vycy52dWVcIilcbn1cbnZhciBub3JtYWxpemVDb21wb25lbnQgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9jb21wb25lbnQtbm9ybWFsaXplclwiKVxuLyogc2NyaXB0ICovXG5leHBvcnQgKiBmcm9tIFwiISFiYWJlbC1sb2FkZXIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9c2NyaXB0JmluZGV4PTAhLi9Vc2Vycy52dWVcIlxuaW1wb3J0IF9fdnVlX3NjcmlwdF9fIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1VzZXJzLnZ1ZVwiXG4vKiB0ZW1wbGF0ZSAqL1xuaW1wb3J0IF9fdnVlX3RlbXBsYXRlX18gZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyL2luZGV4P3tcXFwiaWRcXFwiOlxcXCJkYXRhLXYtNjhiZTEwM2VcXFwiLFxcXCJoYXNTY29wZWRcXFwiOmZhbHNlLFxcXCJidWJsZVxcXCI6e1xcXCJ0cmFuc2Zvcm1zXFxcIjp7fX19IS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9Vc2Vycy52dWVcIlxuLyogdGVtcGxhdGUgZnVuY3Rpb25hbCAqL1xudmFyIF9fdnVlX3RlbXBsYXRlX2Z1bmN0aW9uYWxfXyA9IGZhbHNlXG4vKiBzdHlsZXMgKi9cbnZhciBfX3Z1ZV9zdHlsZXNfXyA9IGluamVjdFN0eWxlXG4vKiBzY29wZUlkICovXG52YXIgX192dWVfc2NvcGVJZF9fID0gbnVsbFxuLyogbW9kdWxlSWRlbnRpZmllciAoc2VydmVyIG9ubHkpICovXG52YXIgX192dWVfbW9kdWxlX2lkZW50aWZpZXJfXyA9IG51bGxcbnZhciBDb21wb25lbnQgPSBub3JtYWxpemVDb21wb25lbnQoXG4gIF9fdnVlX3NjcmlwdF9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9fLFxuICBfX3Z1ZV90ZW1wbGF0ZV9mdW5jdGlvbmFsX18sXG4gIF9fdnVlX3N0eWxlc19fLFxuICBfX3Z1ZV9zY29wZUlkX18sXG4gIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX19cbilcbkNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwic3JjL3ZpZXdzL1VzZXJzLnZ1ZVwiXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7KGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhvdEFQSSA9IHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIilcbiAgaG90QVBJLmluc3RhbGwocmVxdWlyZShcInZ1ZVwiKSwgZmFsc2UpXG4gIGlmICghaG90QVBJLmNvbXBhdGlibGUpIHJldHVyblxuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmICghbW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgaG90QVBJLmNyZWF0ZVJlY29yZChcImRhdGEtdi02OGJlMTAzZVwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfSBlbHNlIHtcbiAgICBob3RBUEkucmVsb2FkKFwiZGF0YS12LTY4YmUxMDNlXCIsIENvbXBvbmVudC5vcHRpb25zKVxuICB9XG4gIG1vZHVsZS5ob3QuZGlzcG9zZShmdW5jdGlvbiAoZGF0YSkge1xuICAgIGRpc3Bvc2VkID0gdHJ1ZVxuICB9KVxufSkoKX1cblxuZXhwb3J0IGRlZmF1bHQgQ29tcG9uZW50LmV4cG9ydHNcblxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vc3JjL3ZpZXdzL1VzZXJzLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMzFcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///31\n");
-
-/***/ }),
-/* 32 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = __webpack_require__(33);\nif(typeof content === 'string') content = [[module.i, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar update = __webpack_require__(35)(\"6ebd1e82\", content, false, {});\n// Hot Module Replacement\nif(false) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../node_modules/css-loader/index.js!../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-68be103e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/sass-loader/lib/loader.js!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Users.vue\", function() {\n var newContent = require(\"!!../../node_modules/css-loader/index.js!../../node_modules/vue-loader/lib/style-compiler/index.js?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-68be103e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!../../node_modules/sass-loader/lib/loader.js!../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./Users.vue\");\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdmlld3MvVXNlcnMudnVlPzBlZjkiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0FBRUE7QUFDQSxvQ0FBOE07QUFDOU07QUFDQTtBQUNBO0FBQ0EsbUVBQWtIO0FBQ2xIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEhBQTBILG1GQUFtRjtBQUM3TSxtSUFBbUksbUZBQW1GO0FBQ3ROO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGdDQUFnQyxVQUFVLEVBQUU7QUFDNUMiLCJmaWxlIjoiMzIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBzdHlsZS1sb2FkZXI6IEFkZHMgc29tZSBjc3MgdG8gdGhlIERPTSBieSBhZGRpbmcgYSA8c3R5bGU+IHRhZ1xuXG4vLyBsb2FkIHRoZSBzdHlsZXNcbnZhciBjb250ZW50ID0gcmVxdWlyZShcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4LmpzP3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi02OGJlMTAzZVxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9saWIvbG9hZGVyLmpzIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vVXNlcnMudnVlXCIpO1xuaWYodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSBjb250ZW50ID0gW1ttb2R1bGUuaWQsIGNvbnRlbnQsICcnXV07XG5pZihjb250ZW50LmxvY2FscykgbW9kdWxlLmV4cG9ydHMgPSBjb250ZW50LmxvY2Fscztcbi8vIGFkZCB0aGUgc3R5bGVzIHRvIHRoZSBET01cbnZhciB1cGRhdGUgPSByZXF1aXJlKFwiIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9hZGRTdHlsZXNDbGllbnQuanNcIikoXCI2ZWJkMWU4MlwiLCBjb250ZW50LCBmYWxzZSwge30pO1xuLy8gSG90IE1vZHVsZSBSZXBsYWNlbWVudFxuaWYobW9kdWxlLmhvdCkge1xuIC8vIFdoZW4gdGhlIHN0eWxlcyBjaGFuZ2UsIHVwZGF0ZSB0aGUgPHN0eWxlPiB0YWdzXG4gaWYoIWNvbnRlbnQubG9jYWxzKSB7XG4gICBtb2R1bGUuaG90LmFjY2VwdChcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvaW5kZXguanMhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyL2luZGV4LmpzP3tcXFwidnVlXFxcIjp0cnVlLFxcXCJpZFxcXCI6XFxcImRhdGEtdi02OGJlMTAzZVxcXCIsXFxcInNjb3BlZFxcXCI6ZmFsc2UsXFxcImhhc0lubGluZUNvbmZpZ1xcXCI6ZmFsc2V9IS4uLy4uL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9saWIvbG9hZGVyLmpzIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vVXNlcnMudnVlXCIsIGZ1bmN0aW9uKCkge1xuICAgICB2YXIgbmV3Q29udGVudCA9IHJlcXVpcmUoXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2luZGV4LmpzIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlci9pbmRleC5qcz97XFxcInZ1ZVxcXCI6dHJ1ZSxcXFwiaWRcXFwiOlxcXCJkYXRhLXYtNjhiZTEwM2VcXFwiLFxcXCJzY29wZWRcXFwiOmZhbHNlLFxcXCJoYXNJbmxpbmVDb25maWdcXFwiOmZhbHNlfSEuLi8uLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvbGliL2xvYWRlci5qcyEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT1zdHlsZXMmaW5kZXg9MCEuL1VzZXJzLnZ1ZVwiKTtcbiAgICAgaWYodHlwZW9mIG5ld0NvbnRlbnQgPT09ICdzdHJpbmcnKSBuZXdDb250ZW50ID0gW1ttb2R1bGUuaWQsIG5ld0NvbnRlbnQsICcnXV07XG4gICAgIHVwZGF0ZShuZXdDb250ZW50KTtcbiAgIH0pO1xuIH1cbiAvLyBXaGVuIHRoZSBtb2R1bGUgaXMgZGlzcG9zZWQsIHJlbW92ZSB0aGUgPHN0eWxlPiB0YWdzXG4gbW9kdWxlLmhvdC5kaXNwb3NlKGZ1bmN0aW9uKCkgeyB1cGRhdGUoKTsgfSk7XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlciEuL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3N0eWxlLWNvbXBpbGVyP3tcInZ1ZVwiOnRydWUsXCJpZFwiOlwiZGF0YS12LTY4YmUxMDNlXCIsXCJzY29wZWRcIjpmYWxzZSxcImhhc0lubGluZUNvbmZpZ1wiOmZhbHNlfSEuL25vZGVfbW9kdWxlcy9zYXNzLWxvYWRlci9saWIvbG9hZGVyLmpzIS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9c3R5bGVzJmluZGV4PTAhLi9zcmMvdmlld3MvVXNlcnMudnVlXG4vLyBtb2R1bGUgaWQgPSAzMlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///32\n");
-
-/***/ }),
-/* 33 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("exports = module.exports = __webpack_require__(34)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"\", \"\"]);\n\n// exports\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdmlld3MvVXNlcnMudnVlPzgzMjciXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQSIsImZpbGUiOiIzMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcIikoZmFsc2UpO1xuLy8gaW1wb3J0c1xuXG5cbi8vIG1vZHVsZVxuZXhwb3J0cy5wdXNoKFttb2R1bGUuaWQsIFwiXCIsIFwiXCJdKTtcblxuLy8gZXhwb3J0c1xuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlciEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zdHlsZS1jb21waWxlcj97XCJ2dWVcIjp0cnVlLFwiaWRcIjpcImRhdGEtdi02OGJlMTAzZVwiLFwic2NvcGVkXCI6ZmFsc2UsXCJoYXNJbmxpbmVDb25maWdcIjpmYWxzZX0hLi9ub2RlX21vZHVsZXMvc2Fzcy1sb2FkZXIvbGliL2xvYWRlci5qcyEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXN0eWxlcyZpbmRleD0wIS4vc3JjL3ZpZXdzL1VzZXJzLnZ1ZVxuLy8gbW9kdWxlIGlkID0gMzNcbi8vIG1vZHVsZSBjaHVua3MgPSAwIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///33\n");
-
-/***/ }),
-/* 34 */
-/***/ (function(module, exports) {
-
-eval("/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanM/MTU5ZiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLGdCQUFnQjtBQUNuRCxJQUFJO0FBQ0o7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGlCQUFpQjtBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0JBQW9CO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9EQUFvRCxjQUFjOztBQUVsRTtBQUNBIiwiZmlsZSI6IjM0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcblx0TUlUIExpY2Vuc2UgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHBcblx0QXV0aG9yIFRvYmlhcyBLb3BwZXJzIEBzb2tyYVxuKi9cbi8vIGNzcyBiYXNlIGNvZGUsIGluamVjdGVkIGJ5IHRoZSBjc3MtbG9hZGVyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKHVzZVNvdXJjZU1hcCkge1xuXHR2YXIgbGlzdCA9IFtdO1xuXG5cdC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblx0bGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuXHRcdHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuXHRcdFx0dmFyIGNvbnRlbnQgPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0sIHVzZVNvdXJjZU1hcCk7XG5cdFx0XHRpZihpdGVtWzJdKSB7XG5cdFx0XHRcdHJldHVybiBcIkBtZWRpYSBcIiArIGl0ZW1bMl0gKyBcIntcIiArIGNvbnRlbnQgKyBcIn1cIjtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHJldHVybiBjb250ZW50O1xuXHRcdFx0fVxuXHRcdH0pLmpvaW4oXCJcIik7XG5cdH07XG5cblx0Ly8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3Rcblx0bGlzdC5pID0gZnVuY3Rpb24obW9kdWxlcywgbWVkaWFRdWVyeSkge1xuXHRcdGlmKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKVxuXHRcdFx0bW9kdWxlcyA9IFtbbnVsbCwgbW9kdWxlcywgXCJcIl1dO1xuXHRcdHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cdFx0Zm9yKHZhciBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBpZCA9IHRoaXNbaV1bMF07XG5cdFx0XHRpZih0eXBlb2YgaWQgPT09IFwibnVtYmVyXCIpXG5cdFx0XHRcdGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcblx0XHR9XG5cdFx0Zm9yKGkgPSAwOyBpIDwgbW9kdWxlcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0dmFyIGl0ZW0gPSBtb2R1bGVzW2ldO1xuXHRcdFx0Ly8gc2tpcCBhbHJlYWR5IGltcG9ydGVkIG1vZHVsZVxuXHRcdFx0Ly8gdGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBub3QgMTAwJSBwZXJmZWN0IGZvciB3ZWlyZCBtZWRpYSBxdWVyeSBjb21iaW5hdGlvbnNcblx0XHRcdC8vICB3aGVuIGEgbW9kdWxlIGlzIGltcG9ydGVkIG11bHRpcGxlIHRpbWVzIHdpdGggZGlmZmVyZW50IG1lZGlhIHF1ZXJpZXMuXG5cdFx0XHQvLyAgSSBob3BlIHRoaXMgd2lsbCBuZXZlciBvY2N1ciAoSGV5IHRoaXMgd2F5IHdlIGhhdmUgc21hbGxlciBidW5kbGVzKVxuXHRcdFx0aWYodHlwZW9mIGl0ZW1bMF0gIT09IFwibnVtYmVyXCIgfHwgIWFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcblx0XHRcdFx0aWYobWVkaWFRdWVyeSAmJiAhaXRlbVsyXSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuXHRcdFx0XHR9IGVsc2UgaWYobWVkaWFRdWVyeSkge1xuXHRcdFx0XHRcdGl0ZW1bMl0gPSBcIihcIiArIGl0ZW1bMl0gKyBcIikgYW5kIChcIiArIG1lZGlhUXVlcnkgKyBcIilcIjtcblx0XHRcdFx0fVxuXHRcdFx0XHRsaXN0LnB1c2goaXRlbSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRyZXR1cm4gbGlzdDtcbn07XG5cbmZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSwgdXNlU291cmNlTWFwKSB7XG5cdHZhciBjb250ZW50ID0gaXRlbVsxXSB8fCAnJztcblx0dmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXHRpZiAoIWNzc01hcHBpbmcpIHtcblx0XHRyZXR1cm4gY29udGVudDtcblx0fVxuXG5cdGlmICh1c2VTb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgPT09ICdmdW5jdGlvbicpIHtcblx0XHR2YXIgc291cmNlTWFwcGluZyA9IHRvQ29tbWVudChjc3NNYXBwaW5nKTtcblx0XHR2YXIgc291cmNlVVJMcyA9IGNzc01hcHBpbmcuc291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuXHRcdFx0cmV0dXJuICcvKiMgc291cmNlVVJMPScgKyBjc3NNYXBwaW5nLnNvdXJjZVJvb3QgKyBzb3VyY2UgKyAnICovJ1xuXHRcdH0pO1xuXG5cdFx0cmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbignXFxuJyk7XG5cdH1cblxuXHRyZXR1cm4gW2NvbnRlbnRdLmpvaW4oJ1xcbicpO1xufVxuXG4vLyBBZGFwdGVkIGZyb20gY29udmVydC1zb3VyY2UtbWFwIChNSVQpXG5mdW5jdGlvbiB0b0NvbW1lbnQoc291cmNlTWFwKSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuXHR2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc291cmNlTWFwKSkpKTtcblx0dmFyIGRhdGEgPSAnc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsJyArIGJhc2U2NDtcblxuXHRyZXR1cm4gJy8qIyAnICsgZGF0YSArICcgKi8nO1xufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9saWIvY3NzLWJhc2UuanNcbi8vIG1vZHVsZSBpZCA9IDM0XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///34\n");
-
-/***/ }),
-/* 35 */
-/***/ (function(module, exports, __webpack_require__) {
-
-eval("/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\nvar listToStyles = __webpack_require__(36)\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nmodule.exports = function (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzP2FlMzgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVUsaUJBQWlCO0FBQzNCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxtQkFBbUIsbUJBQW1CO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLG1CQUFtQixzQkFBc0I7QUFDekM7QUFDQTtBQUNBLHVCQUF1QiwyQkFBMkI7QUFDbEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxpQkFBaUIsbUJBQW1CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDJCQUEyQjtBQUNoRDtBQUNBO0FBQ0EsWUFBWSx1QkFBdUI7QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLHFCQUFxQix1QkFBdUI7QUFDNUM7QUFDQTtBQUNBLDhCQUE4QjtBQUM5QjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBeUQ7QUFDekQ7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMzUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4gIE1vZGlmaWVkIGJ5IEV2YW4gWW91IEB5eXg5OTA4MDNcbiovXG5cbnZhciBoYXNEb2N1bWVudCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCdcblxuaWYgKHR5cGVvZiBERUJVRyAhPT0gJ3VuZGVmaW5lZCcgJiYgREVCVUcpIHtcbiAgaWYgKCFoYXNEb2N1bWVudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAndnVlLXN0eWxlLWxvYWRlciBjYW5ub3QgYmUgdXNlZCBpbiBhIG5vbi1icm93c2VyIGVudmlyb25tZW50LiAnICtcbiAgICBcIlVzZSB7IHRhcmdldDogJ25vZGUnIH0gaW4geW91ciBXZWJwYWNrIGNvbmZpZyB0byBpbmRpY2F0ZSBhIHNlcnZlci1yZW5kZXJpbmcgZW52aXJvbm1lbnQuXCJcbiAgKSB9XG59XG5cbnZhciBsaXN0VG9TdHlsZXMgPSByZXF1aXJlKCcuL2xpc3RUb1N0eWxlcycpXG5cbi8qXG50eXBlIFN0eWxlT2JqZWN0ID0ge1xuICBpZDogbnVtYmVyO1xuICBwYXJ0czogQXJyYXk8U3R5bGVPYmplY3RQYXJ0PlxufVxuXG50eXBlIFN0eWxlT2JqZWN0UGFydCA9IHtcbiAgY3NzOiBzdHJpbmc7XG4gIG1lZGlhOiBzdHJpbmc7XG4gIHNvdXJjZU1hcDogP3N0cmluZ1xufVxuKi9cblxudmFyIHN0eWxlc0luRG9tID0gey8qXG4gIFtpZDogbnVtYmVyXToge1xuICAgIGlkOiBudW1iZXIsXG4gICAgcmVmczogbnVtYmVyLFxuICAgIHBhcnRzOiBBcnJheTwob2JqPzogU3R5bGVPYmplY3RQYXJ0KSA9PiB2b2lkPlxuICB9XG4qL31cblxudmFyIGhlYWQgPSBoYXNEb2N1bWVudCAmJiAoZG9jdW1lbnQuaGVhZCB8fCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdKVxudmFyIHNpbmdsZXRvbkVsZW1lbnQgPSBudWxsXG52YXIgc2luZ2xldG9uQ291bnRlciA9IDBcbnZhciBpc1Byb2R1Y3Rpb24gPSBmYWxzZVxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7fVxudmFyIG9wdGlvbnMgPSBudWxsXG52YXIgc3NySWRLZXkgPSAnZGF0YS12dWUtc3NyLWlkJ1xuXG4vLyBGb3JjZSBzaW5nbGUtdGFnIHNvbHV0aW9uIG9uIElFNi05LCB3aGljaCBoYXMgYSBoYXJkIGxpbWl0IG9uIHRoZSAjIG9mIDxzdHlsZT5cbi8vIHRhZ3MgaXQgd2lsbCBhbGxvdyBvbiBhIHBhZ2VcbnZhciBpc09sZElFID0gdHlwZW9mIG5hdmlnYXRvciAhPT0gJ3VuZGVmaW5lZCcgJiYgL21zaWUgWzYtOV1cXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChwYXJlbnRJZCwgbGlzdCwgX2lzUHJvZHVjdGlvbiwgX29wdGlvbnMpIHtcbiAgaXNQcm9kdWN0aW9uID0gX2lzUHJvZHVjdGlvblxuXG4gIG9wdGlvbnMgPSBfb3B0aW9ucyB8fCB7fVxuXG4gIHZhciBzdHlsZXMgPSBsaXN0VG9TdHlsZXMocGFyZW50SWQsIGxpc3QpXG4gIGFkZFN0eWxlc1RvRG9tKHN0eWxlcylcblxuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlIChuZXdMaXN0KSB7XG4gICAgdmFyIG1heVJlbW92ZSA9IFtdXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBpdGVtID0gc3R5bGVzW2ldXG4gICAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgICAgZG9tU3R5bGUucmVmcy0tXG4gICAgICBtYXlSZW1vdmUucHVzaChkb21TdHlsZSlcbiAgICB9XG4gICAgaWYgKG5ld0xpc3QpIHtcbiAgICAgIHN0eWxlcyA9IGxpc3RUb1N0eWxlcyhwYXJlbnRJZCwgbmV3TGlzdClcbiAgICAgIGFkZFN0eWxlc1RvRG9tKHN0eWxlcylcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVzID0gW11cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYXlSZW1vdmUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkb21TdHlsZSA9IG1heVJlbW92ZVtpXVxuICAgICAgaWYgKGRvbVN0eWxlLnJlZnMgPT09IDApIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBkb21TdHlsZS5wYXJ0cy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKClcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgc3R5bGVzSW5Eb21bZG9tU3R5bGUuaWRdXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGFkZFN0eWxlc1RvRG9tIChzdHlsZXMgLyogQXJyYXk8U3R5bGVPYmplY3Q+ICovKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3R5bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBzdHlsZXNbaV1cbiAgICB2YXIgZG9tU3R5bGUgPSBzdHlsZXNJbkRvbVtpdGVtLmlkXVxuICAgIGlmIChkb21TdHlsZSkge1xuICAgICAgZG9tU3R5bGUucmVmcysrXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRvbVN0eWxlLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIGRvbVN0eWxlLnBhcnRzW2pdKGl0ZW0ucGFydHNbal0pXG4gICAgICB9XG4gICAgICBmb3IgKDsgaiA8IGl0ZW0ucGFydHMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgZG9tU3R5bGUucGFydHMucHVzaChhZGRTdHlsZShpdGVtLnBhcnRzW2pdKSlcbiAgICAgIH1cbiAgICAgIGlmIChkb21TdHlsZS5wYXJ0cy5sZW5ndGggPiBpdGVtLnBhcnRzLmxlbmd0aCkge1xuICAgICAgICBkb21TdHlsZS5wYXJ0cy5sZW5ndGggPSBpdGVtLnBhcnRzLmxlbmd0aFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcGFydHMgPSBbXVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBpdGVtLnBhcnRzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYWRkU3R5bGUoaXRlbS5wYXJ0c1tqXSkpXG4gICAgICB9XG4gICAgICBzdHlsZXNJbkRvbVtpdGVtLmlkXSA9IHsgaWQ6IGl0ZW0uaWQsIHJlZnM6IDEsIHBhcnRzOiBwYXJ0cyB9XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudCAoKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpXG4gIHN0eWxlRWxlbWVudC50eXBlID0gJ3RleHQvY3NzJ1xuICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudClcbiAgcmV0dXJuIHN0eWxlRWxlbWVudFxufVxuXG5mdW5jdGlvbiBhZGRTdHlsZSAob2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICB2YXIgdXBkYXRlLCByZW1vdmVcbiAgdmFyIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ3N0eWxlWycgKyBzc3JJZEtleSArICd+PVwiJyArIG9iai5pZCArICdcIl0nKVxuXG4gIGlmIChzdHlsZUVsZW1lbnQpIHtcbiAgICBpZiAoaXNQcm9kdWN0aW9uKSB7XG4gICAgICAvLyBoYXMgU1NSIHN0eWxlcyBhbmQgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgICAgLy8gc2ltcGx5IGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbm9vcFxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBoYXMgU1NSIHN0eWxlcyBidXQgaW4gZGV2IG1vZGUuXG4gICAgICAvLyBmb3Igc29tZSByZWFzb24gQ2hyb21lIGNhbid0IGhhbmRsZSBzb3VyY2UgbWFwIGluIHNlcnZlci1yZW5kZXJlZFxuICAgICAgLy8gc3R5bGUgdGFncyAtIHNvdXJjZSBtYXBzIGluIDxzdHlsZT4gb25seSB3b3JrcyBpZiB0aGUgc3R5bGUgdGFnIGlzXG4gICAgICAvLyBjcmVhdGVkIGFuZCBpbnNlcnRlZCBkeW5hbWljYWxseS4gU28gd2UgcmVtb3ZlIHRoZSBzZXJ2ZXIgcmVuZGVyZWRcbiAgICAgIC8vIHN0eWxlcyBhbmQgaW5qZWN0IG5ldyBvbmVzLlxuICAgICAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KVxuICAgIH1cbiAgfVxuXG4gIGlmIChpc09sZElFKSB7XG4gICAgLy8gdXNlIHNpbmdsZXRvbiBtb2RlIGZvciBJRTkuXG4gICAgdmFyIHN0eWxlSW5kZXggPSBzaW5nbGV0b25Db3VudGVyKytcbiAgICBzdHlsZUVsZW1lbnQgPSBzaW5nbGV0b25FbGVtZW50IHx8IChzaW5nbGV0b25FbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KCkpXG4gICAgdXBkYXRlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgZmFsc2UpXG4gICAgcmVtb3ZlID0gYXBwbHlUb1NpbmdsZXRvblRhZy5iaW5kKG51bGwsIHN0eWxlRWxlbWVudCwgc3R5bGVJbmRleCwgdHJ1ZSlcbiAgfSBlbHNlIHtcbiAgICAvLyB1c2UgbXVsdGktc3R5bGUtdGFnIG1vZGUgaW4gYWxsIG90aGVyIGNhc2VzXG4gICAgc3R5bGVFbGVtZW50ID0gY3JlYXRlU3R5bGVFbGVtZW50KClcbiAgICB1cGRhdGUgPSBhcHBseVRvVGFnLmJpbmQobnVsbCwgc3R5bGVFbGVtZW50KVxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudClcbiAgICB9XG4gIH1cblxuICB1cGRhdGUob2JqKVxuXG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGVTdHlsZSAobmV3T2JqIC8qIFN0eWxlT2JqZWN0UGFydCAqLykge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmXG4gICAgICAgICAgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiZcbiAgICAgICAgICBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgdXBkYXRlKG9iaiA9IG5ld09iailcbiAgICB9IGVsc2Uge1xuICAgICAgcmVtb3ZlKClcbiAgICB9XG4gIH1cbn1cblxudmFyIHJlcGxhY2VUZXh0ID0gKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHRleHRTdG9yZSA9IFtdXG5cbiAgcmV0dXJuIGZ1bmN0aW9uIChpbmRleCwgcmVwbGFjZW1lbnQpIHtcbiAgICB0ZXh0U3RvcmVbaW5kZXhdID0gcmVwbGFjZW1lbnRcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKVxuICB9XG59KSgpXG5cbmZ1bmN0aW9uIGFwcGx5VG9TaW5nbGV0b25UYWcgKHN0eWxlRWxlbWVudCwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5jc3NcblxuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gcmVwbGFjZVRleHQoaW5kZXgsIGNzcylcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcylcbiAgICB2YXIgY2hpbGROb2RlcyA9IHN0eWxlRWxlbWVudC5jaGlsZE5vZGVzXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoY2hpbGROb2Rlc1tpbmRleF0pXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZUVsZW1lbnQuaW5zZXJ0QmVmb3JlKGNzc05vZGUsIGNoaWxkTm9kZXNbaW5kZXhdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoY3NzTm9kZSlcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyAoc3R5bGVFbGVtZW50LCBvYmopIHtcbiAgdmFyIGNzcyA9IG9iai5jc3NcbiAgdmFyIG1lZGlhID0gb2JqLm1lZGlhXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwXG5cbiAgaWYgKG1lZGlhKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSlcbiAgfVxuICBpZiAob3B0aW9ucy5zc3JJZCkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoc3NySWRLZXksIG9iai5pZClcbiAgfVxuXG4gIGlmIChzb3VyY2VNYXApIHtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5jaHJvbWUuY29tL2RldnRvb2xzL2RvY3MvamF2YXNjcmlwdC1kZWJ1Z2dpbmdcbiAgICAvLyB0aGlzIG1ha2VzIHNvdXJjZSBtYXBzIGluc2lkZSBzdHlsZSB0YWdzIHdvcmsgcHJvcGVybHkgaW4gQ2hyb21lXG4gICAgY3NzICs9ICdcXG4vKiMgc291cmNlVVJMPScgKyBzb3VyY2VNYXAuc291cmNlc1swXSArICcgKi8nXG4gICAgLy8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjY2MDM4NzVcbiAgICBjc3MgKz0gJ1xcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsJyArIGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSkgKyAnICovJ1xuICB9XG5cbiAgaWYgKHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0KSB7XG4gICAgc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzc1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKVxuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSlcbiAgfVxufVxuXG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvYWRkU3R5bGVzQ2xpZW50LmpzXG4vLyBtb2R1bGUgaWQgPSAzNVxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///35\n");
-
-/***/ }),
-/* 36 */
-/***/ (function(module, exports) {
-
-eval("/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nmodule.exports = function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdnVlLXN0eWxlLWxvYWRlci9saWIvbGlzdFRvU3R5bGVzLmpzP2I1MzUiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsaUJBQWlCO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG1DQUFtQyx3QkFBd0I7QUFDM0QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRyYW5zbGF0ZXMgdGhlIGxpc3QgZm9ybWF0IHByb2R1Y2VkIGJ5IGNzcy1sb2FkZXIgaW50byBzb21ldGhpbmdcbiAqIGVhc2llciB0byBtYW5pcHVsYXRlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGxpc3RUb1N0eWxlcyAocGFyZW50SWQsIGxpc3QpIHtcbiAgdmFyIHN0eWxlcyA9IFtdXG4gIHZhciBuZXdTdHlsZXMgPSB7fVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV1cbiAgICB2YXIgaWQgPSBpdGVtWzBdXG4gICAgdmFyIGNzcyA9IGl0ZW1bMV1cbiAgICB2YXIgbWVkaWEgPSBpdGVtWzJdXG4gICAgdmFyIHNvdXJjZU1hcCA9IGl0ZW1bM11cbiAgICB2YXIgcGFydCA9IHtcbiAgICAgIGlkOiBwYXJlbnRJZCArICc6JyArIGksXG4gICAgICBjc3M6IGNzcyxcbiAgICAgIG1lZGlhOiBtZWRpYSxcbiAgICAgIHNvdXJjZU1hcDogc291cmNlTWFwXG4gICAgfVxuICAgIGlmICghbmV3U3R5bGVzW2lkXSkge1xuICAgICAgc3R5bGVzLnB1c2gobmV3U3R5bGVzW2lkXSA9IHsgaWQ6IGlkLCBwYXJ0czogW3BhcnRdIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1N0eWxlc1tpZF0ucGFydHMucHVzaChwYXJ0KVxuICAgIH1cbiAgfVxuICByZXR1cm4gc3R5bGVzXG59XG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtc3R5bGUtbG9hZGVyL2xpYi9saXN0VG9TdHlsZXMuanNcbi8vIG1vZHVsZSBpZCA9IDM2XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///36\n");
+eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_Users_vue__ = __webpack_require__(7);\n/* unused harmony namespace reexport */\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_68be103e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Users_vue__ = __webpack_require__(50);\nvar disposed = false\nvar normalizeComponent = __webpack_require__(2)\n/* script */\n\n\n/* template */\n\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_Users_vue__[\"a\" /* default */],\n __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_68be103e_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_Users_vue__[\"a\" /* default */],\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\nComponent.options.__file = \"src/views/Users.vue\"\n\n/* hot reload */\nif (false) {(function () {\n var hotAPI = require(\"vue-hot-reload-api\")\n hotAPI.install(require(\"vue\"), false)\n if (!hotAPI.compatible) return\n module.hot.accept()\n if (!module.hot.data) {\n hotAPI.createRecord(\"data-v-68be103e\", Component.options)\n } else {\n hotAPI.reload(\"data-v-68be103e\", Component.options)\n }\n module.hot.dispose(function (data) {\n disposed = true\n })\n})()}\n\n/* harmony default export */ __webpack_exports__[\"a\"] = (Component.exports);\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdmlld3MvVXNlcnMudnVlP2MyZDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN3SztBQUN4SztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRUQiLCJmaWxlIjoiMzEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGlzcG9zZWQgPSBmYWxzZVxudmFyIG5vcm1hbGl6ZUNvbXBvbmVudCA9IHJlcXVpcmUoXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2NvbXBvbmVudC1ub3JtYWxpemVyXCIpXG4vKiBzY3JpcHQgKi9cbmV4cG9ydCAqIGZyb20gXCIhIWJhYmVsLWxvYWRlciEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3I/dHlwZT1zY3JpcHQmaW5kZXg9MCEuL1VzZXJzLnZ1ZVwiXG5pbXBvcnQgX192dWVfc2NyaXB0X18gZnJvbSBcIiEhYmFiZWwtbG9hZGVyIS4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvcj90eXBlPXNjcmlwdCZpbmRleD0wIS4vVXNlcnMudnVlXCJcbi8qIHRlbXBsYXRlICovXG5pbXBvcnQgX192dWVfdGVtcGxhdGVfXyBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXIvaW5kZXg/e1xcXCJpZFxcXCI6XFxcImRhdGEtdi02OGJlMTAzZVxcXCIsXFxcImhhc1Njb3BlZFxcXCI6ZmFsc2UsXFxcImJ1YmxlXFxcIjp7XFxcInRyYW5zZm9ybXNcXFwiOnt9fX0hLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL1VzZXJzLnZ1ZVwiXG4vKiB0ZW1wbGF0ZSBmdW5jdGlvbmFsICovXG52YXIgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fID0gZmFsc2Vcbi8qIHN0eWxlcyAqL1xudmFyIF9fdnVlX3N0eWxlc19fID0gbnVsbFxuLyogc2NvcGVJZCAqL1xudmFyIF9fdnVlX3Njb3BlSWRfXyA9IG51bGxcbi8qIG1vZHVsZUlkZW50aWZpZXIgKHNlcnZlciBvbmx5KSAqL1xudmFyIF9fdnVlX21vZHVsZV9pZGVudGlmaWVyX18gPSBudWxsXG52YXIgQ29tcG9uZW50ID0gbm9ybWFsaXplQ29tcG9uZW50KFxuICBfX3Z1ZV9zY3JpcHRfXyxcbiAgX192dWVfdGVtcGxhdGVfXyxcbiAgX192dWVfdGVtcGxhdGVfZnVuY3Rpb25hbF9fLFxuICBfX3Z1ZV9zdHlsZXNfXyxcbiAgX192dWVfc2NvcGVJZF9fLFxuICBfX3Z1ZV9tb2R1bGVfaWRlbnRpZmllcl9fXG4pXG5Db21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInNyYy92aWV3cy9Vc2Vycy52dWVcIlxuXG4vKiBob3QgcmVsb2FkICovXG5pZiAobW9kdWxlLmhvdCkgeyhmdW5jdGlvbiAoKSB7XG4gIHZhciBob3RBUEkgPSByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpXG4gIGhvdEFQSS5pbnN0YWxsKHJlcXVpcmUoXCJ2dWVcIiksIGZhbHNlKVxuICBpZiAoIWhvdEFQSS5jb21wYXRpYmxlKSByZXR1cm5cbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAoIW1vZHVsZS5ob3QuZGF0YSkge1xuICAgIGhvdEFQSS5jcmVhdGVSZWNvcmQoXCJkYXRhLXYtNjhiZTEwM2VcIiwgQ29tcG9uZW50Lm9wdGlvbnMpXG4gIH0gZWxzZSB7XG4gICAgaG90QVBJLnJlbG9hZChcImRhdGEtdi02OGJlMTAzZVwiLCBDb21wb25lbnQub3B0aW9ucylcbiAgfVxuICBtb2R1bGUuaG90LmRpc3Bvc2UoZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBkaXNwb3NlZCA9IHRydWVcbiAgfSlcbn0pKCl9XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBvbmVudC5leHBvcnRzXG5cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL3NyYy92aWV3cy9Vc2Vycy52dWVcbi8vIG1vZHVsZSBpZCA9IDMxXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n");
/***/ }),
+/* 32 */,
+/* 33 */,
+/* 34 */,
+/* 35 */,
+/* 36 */,
/* 37 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {
@@ -377,7 +352,7 @@ eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_mo
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"row\",\n class: { disabled: _vm.loading.delete || _vm.loading.disable }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"avatar\",\n class: { \"icon-loading\": _vm.loading.delete || _vm.loading.disable }\n },\n [\n _c(\"img\", {\n attrs: {\n alt: \"\",\n width: \"32\",\n height: \"32\",\n src: _vm.generateAvatar(_vm.user.id, 32),\n srcset:\n _vm.generateAvatar(_vm.user.id, 64) +\n \" 2x, \" +\n _vm.generateAvatar(_vm.user.id, 128) +\n \" 4x\"\n }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(_vm._s(_vm.user.id))]),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n staticClass: \"displayName\",\n class: { \"icon-loading-small\": _vm.loading.displayName },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateDisplayName($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"displayName\",\n attrs: {\n id: \"displayName\" + _vm.user.id + _vm.rand,\n type: \"text\",\n disabled: _vm.loading.displayName || _vm.loading.all,\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n },\n domProps: { value: _vm.user.displayname }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _vm.settings.canChangePassword\n ? _c(\n \"form\",\n {\n staticClass: \"password\",\n class: { \"icon-loading-small\": _vm.loading.password },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updatePassword($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"password\",\n attrs: {\n id: \"password\" + _vm.user.id + _vm.rand,\n type: \"password\",\n required: \"\",\n disabled: _vm.loading.password || _vm.loading.all,\n minlength: _vm.minPasswordLength,\n value: \"\",\n placeholder: _vm.t(\"settings\", \"New password\"),\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n )\n : _c(\"div\"),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n staticClass: \"mailAddress\",\n class: { \"icon-loading-small\": _vm.loading.mailAddress },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateEmail($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"mailAddress\",\n attrs: {\n id: \"mailAddress\" + _vm.user.id + _vm.rand,\n type: \"email\",\n disabled: _vm.loading.mailAddress || _vm.loading.all,\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n },\n domProps: { value: _vm.user.email }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"groups\",\n class: { \"icon-loading-small\": _vm.loading.groups }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userGroups,\n options: _vm.groups,\n disabled: _vm.loading.groups || _vm.loading.all,\n \"tag-placeholder\": \"create\",\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n label: \"name\",\n \"track-by\": \"id\",\n limit: 2,\n limitText: _vm.limitGroups,\n multiple: true,\n taggable: true,\n closeOnSelect: false\n },\n on: {\n tag: _vm.createGroup,\n select: _vm.addUserGroup,\n remove: _vm.removeUserGroup\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n {\n staticClass: \"subadmins\",\n class: { \"icon-loading-small\": _vm.loading.subadmins }\n },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userSubAdminsGroups,\n options: _vm.subAdminsGroups,\n disabled: _vm.loading.subadmins || _vm.loading.all,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n label: \"name\",\n \"track-by\": \"id\",\n limit: 2,\n limitText: _vm.limitGroups,\n multiple: true,\n closeOnSelect: false\n },\n on: {\n select: _vm.addUserSubAdmin,\n remove: _vm.removeUserSubAdmin\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"quota\",\n class: { \"icon-loading-small\": _vm.loading.quota }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userQuota,\n options: _vm.quotaOptions,\n disabled: _vm.loading.quota || _vm.loading.all,\n \"tag-placeholder\": \"create\",\n placeholder: _vm.t(\"settings\", \"Select user quota\"),\n label: \"label\",\n \"track-by\": \"id\",\n allowEmpty: false,\n taggable: true\n },\n on: { tag: _vm.validateQuota, input: _vm.setUserQuota }\n }),\n _vm._v(\" \"),\n _c(\"progress\", {\n staticClass: \"quota-user-progress\",\n class: { warn: _vm.usedQuota > 80 },\n attrs: { max: \"100\" },\n domProps: { value: _vm.usedQuota }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation\" }, [\n _vm._v(_vm._s(_vm.user.storageLocation))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" }, [\n _vm._v(_vm._s(_vm.user.backend))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\n \"div\",\n {\n staticClass: \"lastLogin\",\n attrs: {\n title:\n _vm.user.lastLogin > 0\n ? _vm.OC.Util.formatDate(_vm.user.lastLogin)\n : \"\"\n }\n },\n [\n _vm._v(\n \"\\n\\t\\t\" +\n _vm._s(\n _vm.user.lastLogin > 0\n ? _vm.OC.Util.relativeModifiedDate(_vm.user.lastLogin)\n : _vm.t(\"settings\", \"Never\")\n ) +\n \"\\n\\t\"\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _vm.OC.currentUser !== _vm.user.id &&\n _vm.user.id !== \"admin\" &&\n !_vm.loading.all\n ? _c(\"div\", { staticClass: \"toggleUserActions\" }, [\n _c(\"div\", {\n directives: [\n {\n name: \"click-outside\",\n rawName: \"v-click-outside\",\n value: _vm.hideMenu,\n expression: \"hideMenu\"\n }\n ],\n staticClass: \"icon-more\",\n on: { click: _vm.showMenu }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"popovermenu\", class: { open: _vm.openedMenu } },\n [_c(\"popover-menu\", { attrs: { menu: _vm.userActions } })],\n 1\n )\n ])\n : _vm._e()\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-d19586ce\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC91c2VyUm93LnZ1ZT8zMGMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnREFBZ0Q7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsdUJBQXVCO0FBQ3ZCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNkNBQTZDO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsZ0RBQWdEO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLHVCQUF1QjtBQUN2QixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTLG1CQUFtQixvQkFBb0I7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJCQUEyQjtBQUMvQyxvQkFBb0IsYUFBYTtBQUNqQyx1QkFBdUI7QUFDdkIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsaUNBQWlDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkJBQTZCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZCQUE2QjtBQUM5QztBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUNBQW1DO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscUNBQXFDLHVCQUF1QixFQUFFO0FBQy9FLHFDQUFxQyxTQUFTLHdCQUF3QixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQ2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcInJvd1wiLFxuICAgICAgY2xhc3M6IHsgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmRlbGV0ZSB8fCBfdm0ubG9hZGluZy5kaXNhYmxlIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhdGFyXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmdcIjogX3ZtLmxvYWRpbmcuZGVsZXRlIHx8IF92bS5sb2FkaW5nLmRpc2FibGUgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgYWx0OiBcIlwiLFxuICAgICAgICAgICAgICB3aWR0aDogXCIzMlwiLFxuICAgICAgICAgICAgICBoZWlnaHQ6IFwiMzJcIixcbiAgICAgICAgICAgICAgc3JjOiBfdm0uZ2VuZXJhdGVBdmF0YXIoX3ZtLnVzZXIuaWQsIDMyKSxcbiAgICAgICAgICAgICAgc3Jjc2V0OlxuICAgICAgICAgICAgICAgIF92bS5nZW5lcmF0ZUF2YXRhcihfdm0udXNlci5pZCwgNjQpICtcbiAgICAgICAgICAgICAgICBcIiAyeCwgXCIgK1xuICAgICAgICAgICAgICAgIF92bS5nZW5lcmF0ZUF2YXRhcihfdm0udXNlci5pZCwgMTI4KSArXG4gICAgICAgICAgICAgICAgXCIgNHhcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJuYW1lXCIgfSwgW192bS5fdihfdm0uX3MoX3ZtLnVzZXIuaWQpKV0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImZvcm1cIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImRpc3BsYXlOYW1lXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcuZGlzcGxheU5hbWUgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgc3VibWl0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgcmV0dXJuIF92bS51cGRhdGVEaXNwbGF5TmFtZSgkZXZlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICByZWY6IFwiZGlzcGxheU5hbWVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIGlkOiBcImRpc3BsYXlOYW1lXCIgKyBfdm0udXNlci5pZCArIF92bS5yYW5kLFxuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmRpc3BsYXlOYW1lIHx8IF92bS5sb2FkaW5nLmFsbCxcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0udXNlci5kaXNwbGF5bmFtZSB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJzdWJtaXRcIiwgdmFsdWU6IFwiXCIgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnNldHRpbmdzLmNhbkNoYW5nZVBhc3N3b3JkXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImZvcm1cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcucGFzc3dvcmQgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0udXBkYXRlUGFzc3dvcmQoJGV2ZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgcmVmOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBcInBhc3N3b3JkXCIgKyBfdm0udXNlci5pZCArIF92bS5yYW5kLFxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcucGFzc3dvcmQgfHwgX3ZtLmxvYWRpbmcuYWxsLFxuICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoOiBfdm0ubWluUGFzc3dvcmRMZW5ndGgsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiTmV3IHBhc3N3b3JkXCIpLFxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwic3VibWl0XCIsIHZhbHVlOiBcIlwiIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIDogX2MoXCJkaXZcIiksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZm9ybVwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwibWFpbEFkZHJlc3NcIixcbiAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5tYWlsQWRkcmVzcyB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICByZXR1cm4gX3ZtLnVwZGF0ZUVtYWlsKCRldmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHJlZjogXCJtYWlsQWRkcmVzc1wiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgaWQ6IFwibWFpbEFkZHJlc3NcIiArIF92bS51c2VyLmlkICsgX3ZtLnJhbmQsXG4gICAgICAgICAgICAgIHR5cGU6IFwiZW1haWxcIixcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLm1haWxBZGRyZXNzIHx8IF92bS5sb2FkaW5nLmFsbCxcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0udXNlci5lbWFpbCB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJzdWJtaXRcIiwgdmFsdWU6IFwiXCIgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJncm91cHNcIixcbiAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5ncm91cHMgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJtdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0udXNlckdyb3VwcyxcbiAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLmdyb3VwcyxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmdyb3VwcyB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgIFwidGFnLXBsYWNlaG9sZGVyXCI6IFwiY3JlYXRlXCIsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiQWRkIHVzZXIgaW4gZ3JvdXBcIiksXG4gICAgICAgICAgICAgIGxhYmVsOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImlkXCIsXG4gICAgICAgICAgICAgIGxpbWl0OiAyLFxuICAgICAgICAgICAgICBsaW1pdFRleHQ6IF92bS5saW1pdEdyb3VwcyxcbiAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgIHRhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBjbG9zZU9uU2VsZWN0OiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIHRhZzogX3ZtLmNyZWF0ZUdyb3VwLFxuICAgICAgICAgICAgICBzZWxlY3Q6IF92bS5hZGRVc2VyR3JvdXAsXG4gICAgICAgICAgICAgIHJlbW92ZTogX3ZtLnJlbW92ZVVzZXJHcm91cFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnN1YkFkbWluc0dyb3Vwcy5sZW5ndGggPiAwXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJzdWJhZG1pbnNcIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcuc3ViYWRtaW5zIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwibXVsdGlzZWxlY3RcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0udXNlclN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLnN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLnN1YmFkbWlucyB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiU2V0IHVzZXIgYXMgYWRtaW4gZm9yXCIpLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsaW1pdDogMixcbiAgICAgICAgICAgICAgICAgICAgbGltaXRUZXh0OiBfdm0ubGltaXRHcm91cHMsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZU9uU2VsZWN0OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdDogX3ZtLmFkZFVzZXJTdWJBZG1pbixcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiBfdm0ucmVtb3ZlVXNlclN1YkFkbWluXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgc2xvdDogXCJub1Jlc3VsdFwiIH0sIHNsb3Q6IFwibm9SZXN1bHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTm8gcmVzdWx0XCIpKSldXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInF1b3RhXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcucXVvdGEgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJtdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0udXNlclF1b3RhLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfdm0ucXVvdGFPcHRpb25zLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcucXVvdGEgfHwgX3ZtLmxvYWRpbmcuYWxsLFxuICAgICAgICAgICAgICBcInRhZy1wbGFjZWhvbGRlclwiOiBcImNyZWF0ZVwiLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlNlbGVjdCB1c2VyIHF1b3RhXCIpLFxuICAgICAgICAgICAgICBsYWJlbDogXCJsYWJlbFwiLFxuICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwiaWRcIixcbiAgICAgICAgICAgICAgYWxsb3dFbXB0eTogZmFsc2UsXG4gICAgICAgICAgICAgIHRhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHsgdGFnOiBfdm0udmFsaWRhdGVRdW90YSwgaW5wdXQ6IF92bS5zZXRVc2VyUXVvdGEgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJwcm9ncmVzc1wiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJxdW90YS11c2VyLXByb2dyZXNzXCIsXG4gICAgICAgICAgICBjbGFzczogeyB3YXJuOiBfdm0udXNlZFF1b3RhID4gODAgfSxcbiAgICAgICAgICAgIGF0dHJzOiB7IG1heDogXCIxMDBcIiB9LFxuICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS51c2VkUXVvdGEgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnNob3dDb25maWcuc2hvd1N0b3JhZ2VQYXRoXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJzdG9yYWdlTG9jYXRpb25cIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS51c2VyLnN0b3JhZ2VMb2NhdGlvbikpXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uc2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcbiAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInVzZXJCYWNrZW5kXCIgfSwgW1xuICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udXNlci5iYWNrZW5kKSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5zaG93Q29uZmlnLnNob3dMYXN0TG9naW5cbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImxhc3RMb2dpblwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgX3ZtLnVzZXIubGFzdExvZ2luID4gMFxuICAgICAgICAgICAgICAgICAgICA/IF92bS5PQy5VdGlsLmZvcm1hdERhdGUoX3ZtLnVzZXIubGFzdExvZ2luKVxuICAgICAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgIFwiXFxuXFx0XFx0XCIgK1xuICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICBfdm0udXNlci5sYXN0TG9naW4gPiAwXG4gICAgICAgICAgICAgICAgICAgICAgPyBfdm0uT0MuVXRpbC5yZWxhdGl2ZU1vZGlmaWVkRGF0ZShfdm0udXNlci5sYXN0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgOiBfdm0udChcInNldHRpbmdzXCIsIFwiTmV2ZXJcIilcbiAgICAgICAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgICAgICAgXCJcXG5cXHRcIlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckFjdGlvbnNcIiB9LCBbXG4gICAgICAgIF92bS5PQy5jdXJyZW50VXNlciAhPT0gX3ZtLnVzZXIuaWQgJiZcbiAgICAgICAgX3ZtLnVzZXIuaWQgIT09IFwiYWRtaW5cIiAmJlxuICAgICAgICAhX3ZtLmxvYWRpbmcuYWxsXG4gICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRvZ2dsZVVzZXJBY3Rpb25zXCIgfSwgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcImNsaWNrLW91dHNpZGVcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LWNsaWNrLW91dHNpZGVcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oaWRlTWVudSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJoaWRlTWVudVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpY29uLW1vcmVcIixcbiAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnNob3dNZW51IH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJwb3BvdmVybWVudVwiLCBjbGFzczogeyBvcGVuOiBfdm0ub3BlbmVkTWVudSB9IH0sXG4gICAgICAgICAgICAgICAgW19jKFwicG9wb3Zlci1tZW51XCIsIHsgYXR0cnM6IHsgbWVudTogX3ZtLnVzZXJBY3Rpb25zIH0gfSldLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICBdKVxuICAgIF1cbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbnZhciBlc0V4cG9ydHMgPSB7IHJlbmRlcjogcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZucyB9XG5leHBvcnQgZGVmYXVsdCBlc0V4cG9ydHNcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikgICAgICAucmVyZW5kZXIoXCJkYXRhLXYtZDE5NTg2Y2VcIiwgZXNFeHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi1kMTk1ODZjZVwiLFwiaGFzU2NvcGVkXCI6ZmFsc2UsXCJidWJsZVwiOntcInRyYW5zZm9ybXNcIjp7fX19IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3NyYy9jb21wb25lbnRzL3VzZXJMaXN0L3VzZXJSb3cudnVlXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n");
+eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"row\",\n class: { disabled: _vm.loading.delete || _vm.loading.disable }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"avatar\",\n class: { \"icon-loading\": _vm.loading.delete || _vm.loading.disable }\n },\n [\n _c(\"img\", {\n attrs: {\n alt: \"\",\n width: \"32\",\n height: \"32\",\n src: _vm.generateAvatar(_vm.user.id, 32),\n srcset:\n _vm.generateAvatar(_vm.user.id, 64) +\n \" 2x, \" +\n _vm.generateAvatar(_vm.user.id, 128) +\n \" 4x\"\n }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [_vm._v(_vm._s(_vm.user.id))]),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n staticClass: \"displayName\",\n class: { \"icon-loading-small\": _vm.loading.displayName },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateDisplayName($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"displayName\",\n attrs: {\n id: \"displayName\" + _vm.user.id + _vm.rand,\n type: \"text\",\n disabled: _vm.loading.displayName || _vm.loading.all,\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n },\n domProps: { value: _vm.user.displayname }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _vm.settings.canChangePassword\n ? _c(\n \"form\",\n {\n staticClass: \"password\",\n class: { \"icon-loading-small\": _vm.loading.password },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updatePassword($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"password\",\n attrs: {\n id: \"password\" + _vm.user.id + _vm.rand,\n type: \"password\",\n required: \"\",\n disabled: _vm.loading.password || _vm.loading.all,\n minlength: _vm.minPasswordLength,\n value: \"\",\n placeholder: _vm.t(\"settings\", \"New password\"),\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n )\n : _c(\"div\"),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n staticClass: \"mailAddress\",\n class: { \"icon-loading-small\": _vm.loading.mailAddress },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.updateEmail($event)\n }\n }\n },\n [\n _c(\"input\", {\n ref: \"mailAddress\",\n attrs: {\n id: \"mailAddress\" + _vm.user.id + _vm.rand,\n type: \"email\",\n disabled: _vm.loading.mailAddress || _vm.loading.all,\n autocomplete: \"new-password\",\n autocorrect: \"off\",\n autocapitalize: \"off\",\n spellcheck: \"false\"\n },\n domProps: { value: _vm.user.email }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"icon-confirm\",\n attrs: { type: \"submit\", value: \"\" }\n })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"groups\",\n class: { \"icon-loading-small\": _vm.loading.groups }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userGroups,\n options: _vm.groups,\n disabled: _vm.loading.groups || _vm.loading.all,\n \"tag-placeholder\": \"create\",\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n label: \"name\",\n \"track-by\": \"id\",\n limit: 2,\n limitText: _vm.limitGroups,\n multiple: true,\n taggable: true,\n closeOnSelect: false\n },\n on: {\n tag: _vm.createGroup,\n select: _vm.addUserGroup,\n remove: _vm.removeUserGroup\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n {\n staticClass: \"subadmins\",\n class: { \"icon-loading-small\": _vm.loading.subadmins }\n },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userSubAdminsGroups,\n options: _vm.subAdminsGroups,\n disabled: _vm.loading.subadmins || _vm.loading.all,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n label: \"name\",\n \"track-by\": \"id\",\n limit: 2,\n limitText: _vm.limitGroups,\n multiple: true,\n closeOnSelect: false\n },\n on: {\n select: _vm.addUserSubAdmin,\n remove: _vm.removeUserSubAdmin\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"quota\",\n class: { \"icon-loading-small\": _vm.loading.quota }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userQuota,\n options: _vm.quotaOptions,\n disabled: _vm.loading.quota || _vm.loading.all,\n \"tag-placeholder\": \"create\",\n placeholder: _vm.t(\"settings\", \"Select user quota\"),\n label: \"label\",\n \"track-by\": \"id\",\n allowEmpty: false,\n taggable: true\n },\n on: { tag: _vm.validateQuota, input: _vm.setUserQuota }\n }),\n _vm._v(\" \"),\n _c(\"progress\", {\n staticClass: \"quota-user-progress\",\n class: { warn: _vm.usedQuota > 80 },\n attrs: { max: \"100\" },\n domProps: { value: _vm.usedQuota }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n {\n staticClass: \"languages\",\n class: { \"icon-loading-small\": _vm.loading.languages }\n },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n value: _vm.userLanguage,\n options: _vm.languages,\n disabled: _vm.loading.languages || _vm.loading.all,\n placeholder: _vm.t(\"settings\", \"No language set\"),\n label: \"name\",\n \"track-by\": \"code\",\n allowEmpty: false,\n \"group-values\": \"languages\",\n \"group-label\": \"label\"\n },\n on: { input: _vm.setUserLanguage }\n })\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation\" }, [\n _vm._v(_vm._s(_vm.user.storageLocation))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" }, [\n _vm._v(_vm._s(_vm.user.backend))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\n \"div\",\n {\n staticClass: \"lastLogin\",\n attrs: {\n title:\n _vm.user.lastLogin > 0\n ? _vm.OC.Util.formatDate(_vm.user.lastLogin)\n : \"\"\n }\n },\n [\n _vm._v(\n \"\\n\\t\\t\" +\n _vm._s(\n _vm.user.lastLogin > 0\n ? _vm.OC.Util.relativeModifiedDate(_vm.user.lastLogin)\n : _vm.t(\"settings\", \"Never\")\n ) +\n \"\\n\\t\"\n )\n ]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _vm.OC.currentUser !== _vm.user.id &&\n _vm.user.id !== \"admin\" &&\n !_vm.loading.all\n ? _c(\"div\", { staticClass: \"toggleUserActions\" }, [\n _c(\"div\", {\n directives: [\n {\n name: \"click-outside\",\n rawName: \"v-click-outside\",\n value: _vm.hideMenu,\n expression: \"hideMenu\"\n }\n ],\n staticClass: \"icon-more\",\n on: { click: _vm.showMenu }\n }),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"popovermenu\", class: { open: _vm.openedMenu } },\n [_c(\"popover-menu\", { attrs: { menu: _vm.userActions } })],\n 1\n )\n ])\n : _vm._e()\n ])\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-d19586ce\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC91c2VyUm93LnZ1ZT8zMGMxIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjO0FBQ2QsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixzQkFBc0I7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQixnREFBZ0Q7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2IsdUJBQXVCO0FBQ3ZCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0IsNkNBQTZDO0FBQ25FO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEIsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0IsZ0RBQWdEO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLHVCQUF1QjtBQUN2QixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CO0FBQ3BCLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQixTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTLG1CQUFtQixvQkFBb0I7QUFDckU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixXQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLDJCQUEyQjtBQUMvQyxvQkFBb0IsYUFBYTtBQUNqQyx1QkFBdUI7QUFDdkIsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQjtBQUN0QixhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakIscUJBQXFCO0FBQ3JCLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsaUNBQWlDO0FBQ3REO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsNkJBQTZCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLDZCQUE2QjtBQUM5QztBQUNBO0FBQ0E7QUFDQSx1QkFBdUIsbUNBQW1DO0FBQzFEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCLGVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIscUNBQXFDLHVCQUF1QixFQUFFO0FBQy9FLHFDQUFxQyxTQUFTLHdCQUF3QixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjQ2LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHtcbiAgICAgIHN0YXRpY0NsYXNzOiBcInJvd1wiLFxuICAgICAgY2xhc3M6IHsgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmRlbGV0ZSB8fCBfdm0ubG9hZGluZy5kaXNhYmxlIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImRpdlwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYXZhdGFyXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmdcIjogX3ZtLmxvYWRpbmcuZGVsZXRlIHx8IF92bS5sb2FkaW5nLmRpc2FibGUgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJpbWdcIiwge1xuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgYWx0OiBcIlwiLFxuICAgICAgICAgICAgICB3aWR0aDogXCIzMlwiLFxuICAgICAgICAgICAgICBoZWlnaHQ6IFwiMzJcIixcbiAgICAgICAgICAgICAgc3JjOiBfdm0uZ2VuZXJhdGVBdmF0YXIoX3ZtLnVzZXIuaWQsIDMyKSxcbiAgICAgICAgICAgICAgc3Jjc2V0OlxuICAgICAgICAgICAgICAgIF92bS5nZW5lcmF0ZUF2YXRhcihfdm0udXNlci5pZCwgNjQpICtcbiAgICAgICAgICAgICAgICBcIiAyeCwgXCIgK1xuICAgICAgICAgICAgICAgIF92bS5nZW5lcmF0ZUF2YXRhcihfdm0udXNlci5pZCwgMTI4KSArXG4gICAgICAgICAgICAgICAgXCIgNHhcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJuYW1lXCIgfSwgW192bS5fdihfdm0uX3MoX3ZtLnVzZXIuaWQpKV0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImZvcm1cIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImRpc3BsYXlOYW1lXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcuZGlzcGxheU5hbWUgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgc3VibWl0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgcmV0dXJuIF92bS51cGRhdGVEaXNwbGF5TmFtZSgkZXZlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICByZWY6IFwiZGlzcGxheU5hbWVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIGlkOiBcImRpc3BsYXlOYW1lXCIgKyBfdm0udXNlci5pZCArIF92bS5yYW5kLFxuICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmRpc3BsYXlOYW1lIHx8IF92bS5sb2FkaW5nLmFsbCxcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0udXNlci5kaXNwbGF5bmFtZSB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJzdWJtaXRcIiwgdmFsdWU6IFwiXCIgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnNldHRpbmdzLmNhbkNoYW5nZVBhc3N3b3JkXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImZvcm1cIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcucGFzc3dvcmQgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfdm0udXBkYXRlUGFzc3dvcmQoJGV2ZW50KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgcmVmOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIGlkOiBcInBhc3N3b3JkXCIgKyBfdm0udXNlci5pZCArIF92bS5yYW5kLFxuICAgICAgICAgICAgICAgICAgdHlwZTogXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcucGFzc3dvcmQgfHwgX3ZtLmxvYWRpbmcuYWxsLFxuICAgICAgICAgICAgICAgICAgbWlubGVuZ3RoOiBfdm0ubWluUGFzc3dvcmRMZW5ndGgsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiTmV3IHBhc3N3b3JkXCIpLFxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwic3VibWl0XCIsIHZhbHVlOiBcIlwiIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF1cbiAgICAgICAgICApXG4gICAgICAgIDogX2MoXCJkaXZcIiksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZm9ybVwiLFxuICAgICAgICB7XG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwibWFpbEFkZHJlc3NcIixcbiAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5tYWlsQWRkcmVzcyB9LFxuICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICBzdWJtaXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICAgICAgICByZXR1cm4gX3ZtLnVwZGF0ZUVtYWlsKCRldmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHJlZjogXCJtYWlsQWRkcmVzc1wiLFxuICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgaWQ6IFwibWFpbEFkZHJlc3NcIiArIF92bS51c2VyLmlkICsgX3ZtLnJhbmQsXG4gICAgICAgICAgICAgIHR5cGU6IFwiZW1haWxcIixcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLm1haWxBZGRyZXNzIHx8IF92bS5sb2FkaW5nLmFsbCxcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgIHNwZWxsY2hlY2s6IFwiZmFsc2VcIlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0udXNlci5lbWFpbCB9XG4gICAgICAgICAgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImljb24tY29uZmlybVwiLFxuICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJzdWJtaXRcIiwgdmFsdWU6IFwiXCIgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJncm91cHNcIixcbiAgICAgICAgICBjbGFzczogeyBcImljb24tbG9hZGluZy1zbWFsbFwiOiBfdm0ubG9hZGluZy5ncm91cHMgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJtdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0udXNlckdyb3VwcyxcbiAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLmdyb3VwcyxcbiAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmdyb3VwcyB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgIFwidGFnLXBsYWNlaG9sZGVyXCI6IFwiY3JlYXRlXCIsXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiQWRkIHVzZXIgaW4gZ3JvdXBcIiksXG4gICAgICAgICAgICAgIGxhYmVsOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImlkXCIsXG4gICAgICAgICAgICAgIGxpbWl0OiAyLFxuICAgICAgICAgICAgICBsaW1pdFRleHQ6IF92bS5saW1pdEdyb3VwcyxcbiAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgIHRhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICBjbG9zZU9uU2VsZWN0OiBmYWxzZVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgIHRhZzogX3ZtLmNyZWF0ZUdyb3VwLFxuICAgICAgICAgICAgICBzZWxlY3Q6IF92bS5hZGRVc2VyR3JvdXAsXG4gICAgICAgICAgICAgIHJlbW92ZTogX3ZtLnJlbW92ZVVzZXJHcm91cFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnN1YkFkbWluc0dyb3Vwcy5sZW5ndGggPiAwXG4gICAgICAgID8gX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJzdWJhZG1pbnNcIixcbiAgICAgICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcuc3ViYWRtaW5zIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwibXVsdGlzZWxlY3RcIixcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0udXNlclN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLnN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLnN1YmFkbWlucyB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiU2V0IHVzZXIgYXMgYWRtaW4gZm9yXCIpLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBsaW1pdDogMixcbiAgICAgICAgICAgICAgICAgICAgbGltaXRUZXh0OiBfdm0ubGltaXRHcm91cHMsXG4gICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICBjbG9zZU9uU2VsZWN0OiBmYWxzZVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdDogX3ZtLmFkZFVzZXJTdWJBZG1pbixcbiAgICAgICAgICAgICAgICAgICAgcmVtb3ZlOiBfdm0ucmVtb3ZlVXNlclN1YkFkbWluXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgc2xvdDogXCJub1Jlc3VsdFwiIH0sIHNsb3Q6IFwibm9SZXN1bHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTm8gcmVzdWx0XCIpKSldXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgIClcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJkaXZcIixcbiAgICAgICAge1xuICAgICAgICAgIHN0YXRpY0NsYXNzOiBcInF1b3RhXCIsXG4gICAgICAgICAgY2xhc3M6IHsgXCJpY29uLWxvYWRpbmctc21hbGxcIjogX3ZtLmxvYWRpbmcucXVvdGEgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJtdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0udXNlclF1b3RhLFxuICAgICAgICAgICAgICBvcHRpb25zOiBfdm0ucXVvdGFPcHRpb25zLFxuICAgICAgICAgICAgICBkaXNhYmxlZDogX3ZtLmxvYWRpbmcucXVvdGEgfHwgX3ZtLmxvYWRpbmcuYWxsLFxuICAgICAgICAgICAgICBcInRhZy1wbGFjZWhvbGRlclwiOiBcImNyZWF0ZVwiLFxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlNlbGVjdCB1c2VyIHF1b3RhXCIpLFxuICAgICAgICAgICAgICBsYWJlbDogXCJsYWJlbFwiLFxuICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwiaWRcIixcbiAgICAgICAgICAgICAgYWxsb3dFbXB0eTogZmFsc2UsXG4gICAgICAgICAgICAgIHRhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb246IHsgdGFnOiBfdm0udmFsaWRhdGVRdW90YSwgaW5wdXQ6IF92bS5zZXRVc2VyUXVvdGEgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJwcm9ncmVzc1wiLCB7XG4gICAgICAgICAgICBzdGF0aWNDbGFzczogXCJxdW90YS11c2VyLXByb2dyZXNzXCIsXG4gICAgICAgICAgICBjbGFzczogeyB3YXJuOiBfdm0udXNlZFF1b3RhID4gODAgfSxcbiAgICAgICAgICAgIGF0dHJzOiB7IG1heDogXCIxMDBcIiB9LFxuICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS51c2VkUXVvdGEgfVxuICAgICAgICAgIH0pXG4gICAgICAgIF0sXG4gICAgICAgIDFcbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhbmd1YWdlc1xuICAgICAgICA/IF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibGFuZ3VhZ2VzXCIsXG4gICAgICAgICAgICAgIGNsYXNzOiB7IFwiaWNvbi1sb2FkaW5nLXNtYWxsXCI6IF92bS5sb2FkaW5nLmxhbmd1YWdlcyB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcIm11bHRpc2VsZWN0XCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS51c2VyTGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0ubGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6IF92bS5sb2FkaW5nLmxhbmd1YWdlcyB8fCBfdm0ubG9hZGluZy5hbGwsXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIk5vIGxhbmd1YWdlIHNldFwiKSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJjb2RlXCIsXG4gICAgICAgICAgICAgICAgICBhbGxvd0VtcHR5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIFwiZ3JvdXAtdmFsdWVzXCI6IFwibGFuZ3VhZ2VzXCIsXG4gICAgICAgICAgICAgICAgICBcImdyb3VwLWxhYmVsXCI6IFwibGFiZWxcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHsgaW5wdXQ6IF92bS5zZXRVc2VyTGFuZ3VhZ2UgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApXG4gICAgICAgIDogX3ZtLl9lKCksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX3ZtLnNob3dDb25maWcuc2hvd1N0b3JhZ2VQYXRoXG4gICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJzdG9yYWdlTG9jYXRpb25cIiB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS51c2VyLnN0b3JhZ2VMb2NhdGlvbikpXG4gICAgICAgICAgXSlcbiAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uc2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcbiAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInVzZXJCYWNrZW5kXCIgfSwgW1xuICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udXNlci5iYWNrZW5kKSlcbiAgICAgICAgICBdKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5zaG93Q29uZmlnLnNob3dMYXN0TG9naW5cbiAgICAgICAgPyBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImxhc3RMb2dpblwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHRpdGxlOlxuICAgICAgICAgICAgICAgICAgX3ZtLnVzZXIubGFzdExvZ2luID4gMFxuICAgICAgICAgICAgICAgICAgICA/IF92bS5PQy5VdGlsLmZvcm1hdERhdGUoX3ZtLnVzZXIubGFzdExvZ2luKVxuICAgICAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX3ZtLl92KFxuICAgICAgICAgICAgICAgIFwiXFxuXFx0XFx0XCIgK1xuICAgICAgICAgICAgICAgICAgX3ZtLl9zKFxuICAgICAgICAgICAgICAgICAgICBfdm0udXNlci5sYXN0TG9naW4gPiAwXG4gICAgICAgICAgICAgICAgICAgICAgPyBfdm0uT0MuVXRpbC5yZWxhdGl2ZU1vZGlmaWVkRGF0ZShfdm0udXNlci5sYXN0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgICAgOiBfdm0udChcInNldHRpbmdzXCIsIFwiTmV2ZXJcIilcbiAgICAgICAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgICAgICAgXCJcXG5cXHRcIlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdXG4gICAgICAgICAgKVxuICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckFjdGlvbnNcIiB9LCBbXG4gICAgICAgIF92bS5PQy5jdXJyZW50VXNlciAhPT0gX3ZtLnVzZXIuaWQgJiZcbiAgICAgICAgX3ZtLnVzZXIuaWQgIT09IFwiYWRtaW5cIiAmJlxuICAgICAgICAhX3ZtLmxvYWRpbmcuYWxsXG4gICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInRvZ2dsZVVzZXJBY3Rpb25zXCIgfSwgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcImNsaWNrLW91dHNpZGVcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LWNsaWNrLW91dHNpZGVcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5oaWRlTWVudSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJoaWRlTWVudVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJpY29uLW1vcmVcIixcbiAgICAgICAgICAgICAgICBvbjogeyBjbGljazogX3ZtLnNob3dNZW51IH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJwb3BvdmVybWVudVwiLCBjbGFzczogeyBvcGVuOiBfdm0ub3BlbmVkTWVudSB9IH0sXG4gICAgICAgICAgICAgICAgW19jKFwicG9wb3Zlci1tZW51XCIsIHsgYXR0cnM6IHsgbWVudTogX3ZtLnVzZXJBY3Rpb25zIH0gfSldLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICA6IF92bS5fZSgpXG4gICAgICBdKVxuICAgIF1cbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbnZhciBlc0V4cG9ydHMgPSB7IHJlbmRlcjogcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZucyB9XG5leHBvcnQgZGVmYXVsdCBlc0V4cG9ydHNcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikgICAgICAucmVyZW5kZXIoXCJkYXRhLXYtZDE5NTg2Y2VcIiwgZXNFeHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi1kMTk1ODZjZVwiLFwiaGFzU2NvcGVkXCI6ZmFsc2UsXCJidWJsZVwiOntcInRyYW5zZm9ybXNcIjp7fX19IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3NyYy9jb21wb25lbnRzL3VzZXJMaXN0L3VzZXJSb3cudnVlXG4vLyBtb2R1bGUgaWQgPSA0NlxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n");
/***/ }),
/* 47 */
@@ -390,7 +365,7 @@ eval("!function(e,t){ true?module.exports=t():\"function\"==typeof define&&defin
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"user-list-grid\",\n attrs: { id: \"app-content\" },\n on: {\n \"&scroll\": function($event) {\n return _vm.onScroll($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && !_vm.showConfig.showNewUserForm },\n attrs: { id: \"grid-header\" }\n },\n [\n _c(\"div\", { staticClass: \"avatar\", attrs: { id: \"headerAvatar\" } }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\", attrs: { id: \"headerName\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Username\")))\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"displayName\", attrs: { id: \"headerDisplayName\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Full name\")))]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"password\", attrs: { id: \"headerPassword\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Password\")))]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"mailAddress\", attrs: { id: \"headerAddress\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Email\")))]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"groups\", attrs: { id: \"headerGroups\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Groups\")))\n ]),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n { staticClass: \"subadmins\", attrs: { id: \"headerSubAdmins\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Group admin for\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"quota\", attrs: { id: \"headerQuota\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Quota\")))\n ]),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\n \"div\",\n { staticClass: \"headerStorageLocation storageLocation\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Storage location\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"headerUserBackend userBackend\" }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"User backend\")))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"headerLastLogin lastLogin\" }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Last login\")))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showConfig.showNewUserForm,\n expression: \"showConfig.showNewUserForm\"\n }\n ],\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && _vm.showConfig.showNewUserForm },\n attrs: { id: \"new-user\", disabled: _vm.loading },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.createUser($event)\n }\n }\n },\n [\n _c(\"div\", { class: _vm.loading ? \"icon-loading-small\" : \"icon-add\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.id,\n expression: \"newUser.id\"\n }\n ],\n attrs: {\n id: \"newusername\",\n type: \"text\",\n required: \"\",\n placeholder: _vm.t(\"settings\", \"User name\"),\n name: \"username\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\",\n pattern: \"[a-zA-Z0-9 _\\\\.@\\\\-']+\"\n },\n domProps: { value: _vm.newUser.id },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"id\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"displayName\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.displayName,\n expression: \"newUser.displayName\"\n }\n ],\n attrs: {\n id: \"newdisplayname\",\n type: \"text\",\n placeholder: _vm.t(\"settings\", \"Display name\"),\n name: \"displayname\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\"\n },\n domProps: { value: _vm.newUser.displayName },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"displayName\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"password\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.password,\n expression: \"newUser.password\"\n }\n ],\n attrs: {\n id: \"newuserpassword\",\n type: \"password\",\n required: _vm.newUser.mailAddress === \"\",\n placeholder: _vm.t(\"settings\", \"Password\"),\n name: \"password\",\n autocomplete: \"new-password\",\n autocapitalize: \"none\",\n autocorrect: \"off\",\n minlength: _vm.minPasswordLength\n },\n domProps: { value: _vm.newUser.password },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"password\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"mailAddress\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.mailAddress,\n expression: \"newUser.mailAddress\"\n }\n ],\n attrs: {\n id: \"newemail\",\n type: \"email\",\n required: _vm.newUser.password === \"\",\n placeholder: _vm.t(\"settings\", \"Mail address\"),\n name: \"email\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\"\n },\n domProps: { value: _vm.newUser.mailAddress },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"mailAddress\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"groups\" },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.groups,\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n label: \"name\",\n \"track-by\": \"id\",\n multiple: true,\n \"close-on-select\": false\n },\n model: {\n value: _vm.newUser.groups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"groups\", $$v)\n },\n expression: \"newUser.groups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n { staticClass: \"subadmins\" },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.subAdminsGroups,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n label: \"name\",\n \"track-by\": \"id\",\n multiple: true,\n \"close-on-select\": false\n },\n model: {\n value: _vm.newUser.subAdminsGroups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)\n },\n expression: \"newUser.subAdminsGroups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"quota\" },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.quotaOptions,\n placeholder: _vm.t(\"settings\", \"Select user quota\"),\n label: \"label\",\n \"track-by\": \"id\",\n allowEmpty: false,\n taggable: true\n },\n on: { tag: _vm.validateQuota },\n model: {\n value: _vm.newUser.quota,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"quota\", $$v)\n },\n expression: \"newUser.quota\"\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"lastLogin\" })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _c(\"input\", {\n staticClass: \"button primary icon-checkmark-white has-tooltip\",\n attrs: {\n type: \"submit\",\n id: \"newsubmit\",\n value: \"\",\n title: _vm.t(\"settings\", \"Add a new user\")\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"button icon-close has-tooltip\",\n attrs: {\n type: \"reset\",\n id: \"newreset\",\n value: \"\",\n title: _vm.t(\"settings\", \"Cancel and reset the form\")\n },\n on: { click: _vm.resetForm }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.filteredUsers, function(user, key) {\n return _c(\"user-row\", {\n key: key,\n attrs: {\n user: user,\n settings: _vm.settings,\n showConfig: _vm.showConfig,\n groups: _vm.groups,\n subAdminsGroups: _vm.subAdminsGroups,\n quotaOptions: _vm.quotaOptions\n }\n })\n }),\n _vm._v(\" \"),\n _c(\n \"infinite-loading\",\n { ref: \"infiniteLoading\", on: { infinite: _vm.infiniteHandler } },\n [\n _c(\"div\", { attrs: { slot: \"spinner\" }, slot: \"spinner\" }, [\n _c(\"div\", { staticClass: \"users-icon-loading icon-loading\" })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-more\" }, slot: \"no-more\" }, [\n _c(\"div\", { staticClass: \"users-list-end\" }, [\n _vm._v(\"— \" + _vm._s(_vm.t(\"settings\", \"no more results\")) + \" —\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-results\" }, slot: \"no-results\" }, [\n _c(\"div\", { attrs: { id: \"emptycontent\" } }, [\n _c(\"div\", { staticClass: \"icon-contacts-dark\" }),\n _vm._v(\" \"),\n _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"settings\", \"No users in here\")))])\n ])\n ])\n ]\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-40745299\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC52dWU/M2I4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxvQkFBb0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBEQUEwRDtBQUM1RSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0EscUJBQXFCLGdDQUFnQyxxQkFBcUIsRUFBRTtBQUM1RTtBQUNBLHFCQUFxQiw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEscUNBQXFDLDBCQUEwQixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGtDQUFrQyx1QkFBdUIsRUFBRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxQ0FBcUMsc0JBQXNCLEVBQUU7QUFDMUU7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdDQUFnQyxxQkFBcUIsRUFBRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUNBQW1DLHdCQUF3QixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtCQUErQixvQkFBb0IsRUFBRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsdURBQXVEO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsK0NBQStDO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5QkFBeUIsMkNBQTJDO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLDZCQUE2QjtBQUNsRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixtQkFBbUI7QUFDbkIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUyw4QkFBOEIsZ0NBQWdDLEVBQUU7QUFDekU7QUFDQSxxQkFBcUIsU0FBUyxrQkFBa0IsbUJBQW1CO0FBQ25FLHVCQUF1QixpREFBaUQ7QUFDeEU7QUFDQTtBQUNBLHFCQUFxQixTQUFTLGtCQUFrQixtQkFBbUI7QUFDbkUsdUJBQXVCLGdDQUFnQztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTLHFCQUFxQixzQkFBc0I7QUFDekUsdUJBQXVCLFNBQVMscUJBQXFCLEVBQUU7QUFDdkQseUJBQXlCLG9DQUFvQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwidXNlci1saXN0LWdyaWRcIixcbiAgICAgIGF0dHJzOiB7IGlkOiBcImFwcC1jb250ZW50XCIgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiJnNjcm9sbFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICByZXR1cm4gX3ZtLm9uU2Nyb2xsKCRldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJyb3dcIixcbiAgICAgICAgICBjbGFzczogeyBzdGlja3k6IF92bS5zY3JvbGxlZCAmJiAhX3ZtLnNob3dDb25maWcuc2hvd05ld1VzZXJGb3JtIH0sXG4gICAgICAgICAgYXR0cnM6IHsgaWQ6IFwiZ3JpZC1oZWFkZXJcIiB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImF2YXRhclwiLCBhdHRyczogeyBpZDogXCJoZWFkZXJBdmF0YXJcIiB9IH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJuYW1lXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlck5hbWVcIiB9IH0sIFtcbiAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlVzZXJuYW1lXCIpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZGlzcGxheU5hbWVcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyRGlzcGxheU5hbWVcIiB9IH0sXG4gICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiRnVsbCBuYW1lXCIpKSldXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicGFzc3dvcmRcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyUGFzc3dvcmRcIiB9IH0sXG4gICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiUGFzc3dvcmRcIikpKV1cbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtYWlsQWRkcmVzc1wiLCBhdHRyczogeyBpZDogXCJoZWFkZXJBZGRyZXNzXCIgfSB9LFxuICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkVtYWlsXCIpKSldXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZ3JvdXBzXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlckdyb3Vwc1wiIH0gfSwgW1xuICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiR3JvdXBzXCIpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zdWJBZG1pbnNHcm91cHMubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwic3ViYWRtaW5zXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlclN1YkFkbWluc1wiIH0gfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiR3JvdXAgYWRtaW4gZm9yXCIpKSldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInF1b3RhXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlclF1b3RhXCIgfSB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJRdW90YVwiKSkpXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc2hvd0NvbmZpZy5zaG93U3RvcmFnZVBhdGhcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcImhlYWRlclN0b3JhZ2VMb2NhdGlvbiBzdG9yYWdlTG9jYXRpb25cIiB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJTdG9yYWdlIGxvY2F0aW9uXCIpKSldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcbiAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJoZWFkZXJVc2VyQmFja2VuZCB1c2VyQmFja2VuZFwiIH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJVc2VyIGJhY2tlbmRcIikpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dMYXN0TG9naW5cbiAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJoZWFkZXJMYXN0TG9naW4gbGFzdExvZ2luXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkxhc3QgbG9naW5cIikpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckFjdGlvbnNcIiB9KVxuICAgICAgICBdXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImZvcm1cIixcbiAgICAgICAge1xuICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbmFtZTogXCJzaG93XCIsXG4gICAgICAgICAgICAgIHJhd05hbWU6IFwidi1zaG93XCIsXG4gICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm0sXG4gICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm1cIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgc3RhdGljQ2xhc3M6IFwicm93XCIsXG4gICAgICAgICAgY2xhc3M6IHsgc3RpY2t5OiBfdm0uc2Nyb2xsZWQgJiYgX3ZtLnNob3dDb25maWcuc2hvd05ld1VzZXJGb3JtIH0sXG4gICAgICAgICAgYXR0cnM6IHsgaWQ6IFwibmV3LXVzZXJcIiwgZGlzYWJsZWQ6IF92bS5sb2FkaW5nIH0sXG4gICAgICAgICAgb246IHtcbiAgICAgICAgICAgIHN1Ym1pdDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgIHJldHVybiBfdm0uY3JlYXRlVXNlcigkZXZlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBjbGFzczogX3ZtLmxvYWRpbmcgPyBcImljb24tbG9hZGluZy1zbWFsbFwiIDogXCJpY29uLWFkZFwiIH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJuYW1lXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5pZCxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5pZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5ld3VzZXJuYW1lXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IFwiXCIsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJVc2VyIG5hbWVcIiksXG4gICAgICAgICAgICAgICAgbmFtZTogXCJ1c2VybmFtZVwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgcGF0dGVybjogXCJbYS16QS1aMC05IF9cXFxcLkBcXFxcLSddK1wiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0ubmV3VXNlci5pZCB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcImlkXCIsICRldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJkaXNwbGF5TmFtZVwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIuZGlzcGxheU5hbWUsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm5ld1VzZXIuZGlzcGxheU5hbWVcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBpZDogXCJuZXdkaXNwbGF5bmFtZVwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiRGlzcGxheSBuYW1lXCIpLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZGlzcGxheW5hbWVcIixcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb3JyZWN0OiBcIm9mZlwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0ubmV3VXNlci5kaXNwbGF5TmFtZSB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcImRpc3BsYXlOYW1lXCIsICRldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJwYXNzd29yZFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIucGFzc3dvcmQsXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm5ld1VzZXIucGFzc3dvcmRcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICBpZDogXCJuZXd1c2VycGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IF92bS5uZXdVc2VyLm1haWxBZGRyZXNzID09PSBcIlwiLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiUGFzc3dvcmRcIiksXG4gICAgICAgICAgICAgICAgbmFtZTogXCJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJuZXctcGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgbWlubGVuZ3RoOiBfdm0ubWluUGFzc3dvcmRMZW5ndGhcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5uZXdVc2VyLnBhc3N3b3JkIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwicGFzc3dvcmRcIiwgJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcIm1haWxBZGRyZXNzXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5tYWlsQWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5tYWlsQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5ld2VtYWlsXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJlbWFpbFwiLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBfdm0ubmV3VXNlci5wYXNzd29yZCA9PT0gXCJcIixcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIk1haWwgYWRkcmVzc1wiKSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcImVtYWlsXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIlxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLm5ld1VzZXIubWFpbEFkZHJlc3MgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ubmV3VXNlciwgXCJtYWlsQWRkcmVzc1wiLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZ3JvdXBzXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgXCJtdWx0aXNlbGVjdFwiLFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm11bHRpc2VsZWN0LXZ1ZVwiLFxuICAgICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLmdyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJBZGQgdXNlciBpbiBncm91cFwiKSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwiaWRcIixcbiAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIFwiY2xvc2Utb24tc2VsZWN0XCI6IGZhbHNlXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uZXdVc2VyLmdyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcImdyb3Vwc1wiLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5ncm91cHNcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IHNsb3Q6IFwibm9SZXN1bHRcIiB9LCBzbG90OiBcIm5vUmVzdWx0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIk5vIHJlc3VsdFwiKSkpXVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnN1YkFkbWluc0dyb3Vwcy5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJzdWJhZG1pbnNcIiB9LFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICBcIm11bHRpc2VsZWN0XCIsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLnN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiU2V0IHVzZXIgYXMgYWRtaW4gZm9yXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImlkXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiY2xvc2Utb24tc2VsZWN0XCI6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uZXdVc2VyLnN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwic3ViQWRtaW5zR3JvdXBzXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm5ld1VzZXIuc3ViQWRtaW5zR3JvdXBzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3BhblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgeyBhdHRyczogeyBzbG90OiBcIm5vUmVzdWx0XCIgfSwgc2xvdDogXCJub1Jlc3VsdFwiIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTm8gcmVzdWx0XCIpKSldXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcbiAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInF1b3RhXCIgfSxcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgX2MoXCJtdWx0aXNlbGVjdFwiLCB7XG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXVsdGlzZWxlY3QtdnVlXCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IF92bS5xdW90YU9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlNlbGVjdCB1c2VyIHF1b3RhXCIpLFxuICAgICAgICAgICAgICAgICAgbGFiZWw6IFwibGFiZWxcIixcbiAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgYWxsb3dFbXB0eTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICB0YWdnYWJsZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHsgdGFnOiBfdm0udmFsaWRhdGVRdW90YSB9LFxuICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIucXVvdGEsXG4gICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcInF1b3RhXCIsICQkdilcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcIm5ld1VzZXIucXVvdGFcIlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAxXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dTdG9yYWdlUGF0aFxuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInN0b3JhZ2VMb2NhdGlvblwiIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd1VzZXJCYWNrZW5kXG4gICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckJhY2tlbmRcIiB9KVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dMYXN0TG9naW5cbiAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJsYXN0TG9naW5cIiB9KVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlckFjdGlvbnNcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYnV0dG9uIHByaW1hcnkgaWNvbi1jaGVja21hcmstd2hpdGUgaGFzLXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInN1Ym1pdFwiLFxuICAgICAgICAgICAgICAgIGlkOiBcIm5ld3N1Ym1pdFwiLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBcIlwiLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBfdm0udChcInNldHRpbmdzXCIsIFwiQWRkIGEgbmV3IHVzZXJcIilcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImJ1dHRvbiBpY29uLWNsb3NlIGhhcy10b29sdGlwXCIsXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJyZXNldFwiLFxuICAgICAgICAgICAgICAgIGlkOiBcIm5ld3Jlc2V0XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgdGl0bGU6IF92bS50KFwic2V0dGluZ3NcIiwgXCJDYW5jZWwgYW5kIHJlc2V0IHRoZSBmb3JtXCIpXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIG9uOiB7IGNsaWNrOiBfdm0ucmVzZXRGb3JtIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfdm0uX2woX3ZtLmZpbHRlcmVkVXNlcnMsIGZ1bmN0aW9uKHVzZXIsIGtleSkge1xuICAgICAgICByZXR1cm4gX2MoXCJ1c2VyLXJvd1wiLCB7XG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgIHVzZXI6IHVzZXIsXG4gICAgICAgICAgICBzZXR0aW5nczogX3ZtLnNldHRpbmdzLFxuICAgICAgICAgICAgc2hvd0NvbmZpZzogX3ZtLnNob3dDb25maWcsXG4gICAgICAgICAgICBncm91cHM6IF92bS5ncm91cHMsXG4gICAgICAgICAgICBzdWJBZG1pbnNHcm91cHM6IF92bS5zdWJBZG1pbnNHcm91cHMsXG4gICAgICAgICAgICBxdW90YU9wdGlvbnM6IF92bS5xdW90YU9wdGlvbnNcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcbiAgICAgICAgXCJpbmZpbml0ZS1sb2FkaW5nXCIsXG4gICAgICAgIHsgcmVmOiBcImluZmluaXRlTG9hZGluZ1wiLCBvbjogeyBpbmZpbml0ZTogX3ZtLmluZmluaXRlSGFuZGxlciB9IH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IHNsb3Q6IFwic3Bpbm5lclwiIH0sIHNsb3Q6IFwic3Bpbm5lclwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlcnMtaWNvbi1sb2FkaW5nIGljb24tbG9hZGluZ1wiIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IHNsb3Q6IFwibm8tbW9yZVwiIH0sIHNsb3Q6IFwibm8tbW9yZVwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwidXNlcnMtbGlzdC1lbmRcIiB9LCBbXG4gICAgICAgICAgICAgIF92bS5fdihcIuKAlCBcIiArIF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwibm8gbW9yZSByZXN1bHRzXCIpKSArIFwiIOKAlFwiKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgc2xvdDogXCJuby1yZXN1bHRzXCIgfSwgc2xvdDogXCJuby1yZXN1bHRzXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBpZDogXCJlbXB0eWNvbnRlbnRcIiB9IH0sIFtcbiAgICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJpY29uLWNvbnRhY3RzLWRhcmtcIiB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJoMlwiLCBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTm8gdXNlcnMgaW4gaGVyZVwiKSkpXSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXSlcbiAgICAgICAgXVxuICAgICAgKVxuICAgIF0sXG4gICAgMlxuICApXG59XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxudmFyIGVzRXhwb3J0cyA9IHsgcmVuZGVyOiByZW5kZXIsIHN0YXRpY1JlbmRlckZuczogc3RhdGljUmVuZGVyRm5zIH1cbmV4cG9ydCBkZWZhdWx0IGVzRXhwb3J0c1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICBpZiAobW9kdWxlLmhvdC5kYXRhKSB7XG4gICAgcmVxdWlyZShcInZ1ZS1ob3QtcmVsb2FkLWFwaVwiKSAgICAgIC5yZXJlbmRlcihcImRhdGEtdi00MDc0NTI5OVwiLCBlc0V4cG9ydHMpXG4gIH1cbn1cblxuXG4vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFdFQlBBQ0sgRk9PVEVSXG4vLyAuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi90ZW1wbGF0ZS1jb21waWxlcj97XCJpZFwiOlwiZGF0YS12LTQwNzQ1Mjk5XCIsXCJoYXNTY29wZWRcIjpmYWxzZSxcImJ1YmxlXCI6e1widHJhbnNmb3Jtc1wiOnt9fX0hLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvc2VsZWN0b3IuanM/dHlwZT10ZW1wbGF0ZSZpbmRleD0wIS4vc3JjL2NvbXBvbmVudHMvdXNlckxpc3QudnVlXG4vLyBtb2R1bGUgaWQgPSA0OFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///48\n");
+eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n {\n staticClass: \"user-list-grid\",\n attrs: { id: \"app-content\" },\n on: {\n \"&scroll\": function($event) {\n return _vm.onScroll($event)\n }\n }\n },\n [\n _c(\n \"div\",\n {\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && !_vm.showConfig.showNewUserForm },\n attrs: { id: \"grid-header\" }\n },\n [\n _c(\"div\", { staticClass: \"avatar\", attrs: { id: \"headerAvatar\" } }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\", attrs: { id: \"headerName\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Username\")))\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"displayName\", attrs: { id: \"headerDisplayName\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Full name\")))]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"password\", attrs: { id: \"headerPassword\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Password\")))]\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"mailAddress\", attrs: { id: \"headerAddress\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Email\")))]\n ),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"groups\", attrs: { id: \"headerGroups\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Groups\")))\n ]),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n { staticClass: \"subadmins\", attrs: { id: \"headerSubAdmins\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Group admin for\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"quota\", attrs: { id: \"headerQuota\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Quota\")))\n ]),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\n \"div\",\n { staticClass: \"languages\", attrs: { id: \"headerLanguages\" } },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Languages\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\n \"div\",\n { staticClass: \"headerStorageLocation storageLocation\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"Storage location\")))]\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"headerUserBackend userBackend\" }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"User backend\")))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"headerLastLogin lastLogin\" }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Last login\")))\n ])\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" })\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"form\",\n {\n directives: [\n {\n name: \"show\",\n rawName: \"v-show\",\n value: _vm.showConfig.showNewUserForm,\n expression: \"showConfig.showNewUserForm\"\n }\n ],\n staticClass: \"row\",\n class: { sticky: _vm.scrolled && _vm.showConfig.showNewUserForm },\n attrs: { id: \"new-user\", disabled: _vm.loading },\n on: {\n submit: function($event) {\n $event.preventDefault()\n return _vm.createUser($event)\n }\n }\n },\n [\n _c(\"div\", { class: _vm.loading ? \"icon-loading-small\" : \"icon-add\" }),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"name\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.id,\n expression: \"newUser.id\"\n }\n ],\n attrs: {\n id: \"newusername\",\n type: \"text\",\n required: \"\",\n placeholder: _vm.t(\"settings\", \"User name\"),\n name: \"username\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\",\n pattern: \"[a-zA-Z0-9 _\\\\.@\\\\-']+\"\n },\n domProps: { value: _vm.newUser.id },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"id\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"displayName\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.displayName,\n expression: \"newUser.displayName\"\n }\n ],\n attrs: {\n id: \"newdisplayname\",\n type: \"text\",\n placeholder: _vm.t(\"settings\", \"Display name\"),\n name: \"displayname\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\"\n },\n domProps: { value: _vm.newUser.displayName },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"displayName\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"password\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.password,\n expression: \"newUser.password\"\n }\n ],\n attrs: {\n id: \"newuserpassword\",\n type: \"password\",\n required: _vm.newUser.mailAddress === \"\",\n placeholder: _vm.t(\"settings\", \"Password\"),\n name: \"password\",\n autocomplete: \"new-password\",\n autocapitalize: \"none\",\n autocorrect: \"off\",\n minlength: _vm.minPasswordLength\n },\n domProps: { value: _vm.newUser.password },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"password\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"mailAddress\" }, [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.newUser.mailAddress,\n expression: \"newUser.mailAddress\"\n }\n ],\n attrs: {\n id: \"newemail\",\n type: \"email\",\n required: _vm.newUser.password === \"\",\n placeholder: _vm.t(\"settings\", \"Mail address\"),\n name: \"email\",\n autocomplete: \"off\",\n autocapitalize: \"none\",\n autocorrect: \"off\"\n },\n domProps: { value: _vm.newUser.mailAddress },\n on: {\n input: function($event) {\n if ($event.target.composing) {\n return\n }\n _vm.$set(_vm.newUser, \"mailAddress\", $event.target.value)\n }\n }\n })\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"groups\" },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.groups,\n placeholder: _vm.t(\"settings\", \"Add user in group\"),\n label: \"name\",\n \"track-by\": \"id\",\n multiple: true,\n \"close-on-select\": false\n },\n model: {\n value: _vm.newUser.groups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"groups\", $$v)\n },\n expression: \"newUser.groups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.subAdminsGroups.length > 0\n ? _c(\n \"div\",\n { staticClass: \"subadmins\" },\n [\n _c(\n \"multiselect\",\n {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.subAdminsGroups,\n placeholder: _vm.t(\"settings\", \"Set user as admin for\"),\n label: \"name\",\n \"track-by\": \"id\",\n multiple: true,\n \"close-on-select\": false\n },\n model: {\n value: _vm.newUser.subAdminsGroups,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"subAdminsGroups\", $$v)\n },\n expression: \"newUser.subAdminsGroups\"\n }\n },\n [\n _c(\n \"span\",\n { attrs: { slot: \"noResult\" }, slot: \"noResult\" },\n [_vm._v(_vm._s(_vm.t(\"settings\", \"No result\")))]\n )\n ]\n )\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"quota\" },\n [\n _c(\"multiselect\", {\n staticClass: \"multiselect-vue\",\n attrs: {\n options: _vm.quotaOptions,\n placeholder: _vm.t(\"settings\", \"Select user quota\"),\n label: \"label\",\n \"track-by\": \"id\",\n allowEmpty: false,\n taggable: true\n },\n on: { tag: _vm.validateQuota },\n model: {\n value: _vm.newUser.quota,\n callback: function($$v) {\n _vm.$set(_vm.newUser, \"quota\", $$v)\n },\n expression: \"newUser.quota\"\n }\n })\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.showConfig.showLanguages\n ? _c(\"div\", { staticClass: \"languages\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showStoragePath\n ? _c(\"div\", { staticClass: \"storageLocation\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showUserBackend\n ? _c(\"div\", { staticClass: \"userBackend\" })\n : _vm._e(),\n _vm._v(\" \"),\n _vm.showConfig.showLastLogin\n ? _c(\"div\", { staticClass: \"lastLogin\" })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"userActions\" }, [\n _c(\"input\", {\n staticClass: \"button primary icon-checkmark-white has-tooltip\",\n attrs: {\n type: \"submit\",\n id: \"newsubmit\",\n value: \"\",\n title: _vm.t(\"settings\", \"Add a new user\")\n }\n }),\n _vm._v(\" \"),\n _c(\"input\", {\n staticClass: \"button icon-close has-tooltip\",\n attrs: {\n type: \"reset\",\n id: \"newreset\",\n value: \"\",\n title: _vm.t(\"settings\", \"Cancel and reset the form\")\n },\n on: { click: _vm.resetForm }\n })\n ])\n ]\n ),\n _vm._v(\" \"),\n _vm._l(_vm.filteredUsers, function(user, key) {\n return _c(\"user-row\", {\n key: key,\n attrs: {\n user: user,\n settings: _vm.settings,\n showConfig: _vm.showConfig,\n groups: _vm.groups,\n subAdminsGroups: _vm.subAdminsGroups,\n quotaOptions: _vm.quotaOptions\n }\n })\n }),\n _vm._v(\" \"),\n _c(\n \"infinite-loading\",\n { ref: \"infiniteLoading\", on: { infinite: _vm.infiniteHandler } },\n [\n _c(\"div\", { attrs: { slot: \"spinner\" }, slot: \"spinner\" }, [\n _c(\"div\", { staticClass: \"users-icon-loading icon-loading\" })\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-more\" }, slot: \"no-more\" }, [\n _c(\"div\", { staticClass: \"users-list-end\" }, [\n _vm._v(\"— \" + _vm._s(_vm.t(\"settings\", \"no more results\")) + \" —\")\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", { attrs: { slot: \"no-results\" }, slot: \"no-results\" }, [\n _c(\"div\", { attrs: { id: \"emptycontent\" } }, [\n _c(\"div\", { staticClass: \"icon-contacts-dark\" }),\n _vm._v(\" \"),\n _c(\"h2\", [_vm._v(_vm._s(_vm.t(\"settings\", \"No users in here\")))])\n ])\n ])\n ]\n )\n ],\n 2\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-40745299\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC52dWU/M2I4YyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYyxvQkFBb0I7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDBEQUEwRDtBQUM1RSxrQkFBa0I7QUFDbEIsU0FBUztBQUNUO0FBQ0EscUJBQXFCLGdDQUFnQyxxQkFBcUIsRUFBRTtBQUM1RTtBQUNBLHFCQUFxQiw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEscUNBQXFDLDBCQUEwQixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLGtDQUFrQyx1QkFBdUIsRUFBRTtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxxQ0FBcUMsc0JBQXNCLEVBQUU7QUFDMUU7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLGdDQUFnQyxxQkFBcUIsRUFBRTtBQUM1RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUNBQW1DLHdCQUF3QixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLCtCQUErQixvQkFBb0IsRUFBRTtBQUMxRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsbUNBQW1DLHdCQUF3QixFQUFFO0FBQzlFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCLHVEQUF1RDtBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLCtDQUErQztBQUN4RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EseUJBQXlCLDJDQUEyQztBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQiw2QkFB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MkJBQTJCO0FBQ3BEO0FBQ0E7QUFDQSxxQkFBcUIsNkJBQTZCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZixtQkFBbUI7QUFDbkIsYUFBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsU0FBUyw4QkFBOEIsZ0NBQWdDLEVBQUU7QUFDekU7QUFDQSxxQkFBcUIsU0FBUyxrQkFBa0IsbUJBQW1CO0FBQ25FLHVCQUF1QixpREFBaUQ7QUFDeEU7QUFDQTtBQUNBLHFCQUFxQixTQUFTLGtCQUFrQixtQkFBbUI7QUFDbkUsdUJBQXVCLGdDQUFnQztBQUN2RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQixTQUFTLHFCQUFxQixzQkFBc0I7QUFDekUsdUJBQXVCLFNBQVMscUJBQXFCLEVBQUU7QUFDdkQseUJBQXlCLG9DQUFvQztBQUM3RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiNDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgcmVuZGVyID0gZnVuY3Rpb24oKSB7XG4gIHZhciBfdm0gPSB0aGlzXG4gIHZhciBfaCA9IF92bS4kY3JlYXRlRWxlbWVudFxuICB2YXIgX2MgPSBfdm0uX3NlbGYuX2MgfHwgX2hcbiAgcmV0dXJuIF9jKFxuICAgIFwiZGl2XCIsXG4gICAge1xuICAgICAgc3RhdGljQ2xhc3M6IFwidXNlci1saXN0LWdyaWRcIixcbiAgICAgIGF0dHJzOiB7IGlkOiBcImFwcC1jb250ZW50XCIgfSxcbiAgICAgIG9uOiB7XG4gICAgICAgIFwiJnNjcm9sbFwiOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICByZXR1cm4gX3ZtLm9uU2Nyb2xsKCRldmVudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgX2MoXG4gICAgICAgIFwiZGl2XCIsXG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJyb3dcIixcbiAgICAgICAgICBjbGFzczogeyBzdGlja3k6IF92bS5zY3JvbGxlZCAmJiAhX3ZtLnNob3dDb25maWcuc2hvd05ld1VzZXJGb3JtIH0sXG4gICAgICAgICAgYXR0cnM6IHsgaWQ6IFwiZ3JpZC1oZWFkZXJcIiB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImF2YXRhclwiLCBhdHRyczogeyBpZDogXCJoZWFkZXJBdmF0YXJcIiB9IH0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJuYW1lXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlck5hbWVcIiB9IH0sIFtcbiAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlVzZXJuYW1lXCIpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiZGlzcGxheU5hbWVcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyRGlzcGxheU5hbWVcIiB9IH0sXG4gICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiRnVsbCBuYW1lXCIpKSldXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicGFzc3dvcmRcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyUGFzc3dvcmRcIiB9IH0sXG4gICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiUGFzc3dvcmRcIikpKV1cbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJtYWlsQWRkcmVzc1wiLCBhdHRyczogeyBpZDogXCJoZWFkZXJBZGRyZXNzXCIgfSB9LFxuICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkVtYWlsXCIpKSldXG4gICAgICAgICAgKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwiZ3JvdXBzXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlckdyb3Vwc1wiIH0gfSwgW1xuICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiR3JvdXBzXCIpKSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zdWJBZG1pbnNHcm91cHMubGVuZ3RoID4gMFxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwic3ViYWRtaW5zXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlclN1YkFkbWluc1wiIH0gfSxcbiAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiR3JvdXAgYWRtaW4gZm9yXCIpKSldXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInF1b3RhXCIsIGF0dHJzOiB7IGlkOiBcImhlYWRlclF1b3RhXCIgfSB9LCBbXG4gICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJRdW90YVwiKSkpXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc2hvd0NvbmZpZy5zaG93TGFuZ3VhZ2VzXG4gICAgICAgICAgICA/IF9jKFxuICAgICAgICAgICAgICAgIFwiZGl2XCIsXG4gICAgICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJsYW5ndWFnZXNcIiwgYXR0cnM6IHsgaWQ6IFwiaGVhZGVyTGFuZ3VhZ2VzXCIgfSB9LFxuICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJMYW5ndWFnZXNcIikpKV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dTdG9yYWdlUGF0aFxuICAgICAgICAgICAgPyBfYyhcbiAgICAgICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwiaGVhZGVyU3RvcmFnZUxvY2F0aW9uIHN0b3JhZ2VMb2NhdGlvblwiIH0sXG4gICAgICAgICAgICAgICAgW192bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlN0b3JhZ2UgbG9jYXRpb25cIikpKV1cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF92bS5zaG93Q29uZmlnLnNob3dVc2VyQmFja2VuZFxuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImhlYWRlclVzZXJCYWNrZW5kIHVzZXJCYWNrZW5kXCIgfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlVzZXIgYmFja2VuZFwiKSkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhc3RMb2dpblxuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImhlYWRlckxhc3RMb2dpbiBsYXN0TG9naW5cIiB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTGFzdCBsb2dpblwiKSkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2VyQWN0aW9uc1wiIH0pXG4gICAgICAgIF1cbiAgICAgICksXG4gICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgX2MoXG4gICAgICAgIFwiZm9ybVwiLFxuICAgICAgICB7XG4gICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBuYW1lOiBcInNob3dcIixcbiAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LXNob3dcIixcbiAgICAgICAgICAgICAgdmFsdWU6IF92bS5zaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybSxcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzaG93Q29uZmlnLnNob3dOZXdVc2VyRm9ybVwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSxcbiAgICAgICAgICBzdGF0aWNDbGFzczogXCJyb3dcIixcbiAgICAgICAgICBjbGFzczogeyBzdGlja3k6IF92bS5zY3JvbGxlZCAmJiBfdm0uc2hvd0NvbmZpZy5zaG93TmV3VXNlckZvcm0gfSxcbiAgICAgICAgICBhdHRyczogeyBpZDogXCJuZXctdXNlclwiLCBkaXNhYmxlZDogX3ZtLmxvYWRpbmcgfSxcbiAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgc3VibWl0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgcmV0dXJuIF92bS5jcmVhdGVVc2VyKCRldmVudClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFtcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IGNsYXNzOiBfdm0ubG9hZGluZyA/IFwiaWNvbi1sb2FkaW5nLXNtYWxsXCIgOiBcImljb24tYWRkXCIgfSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcIm5hbWVcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uZXdVc2VyLmlkLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuZXdVc2VyLmlkXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IFwibmV3dXNlcm5hbWVcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcInRleHRcIixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogXCJcIixcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlVzZXIgbmFtZVwiKSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInVzZXJuYW1lXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm9mZlwiLFxuICAgICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBcIlthLXpBLVowLTkgX1xcXFwuQFxcXFwtJ10rXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5uZXdVc2VyLmlkIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwiaWRcIiwgJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImRpc3BsYXlOYW1lXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5kaXNwbGF5TmFtZSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5kaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5ld2Rpc3BsYXluYW1lXCIsXG4gICAgICAgICAgICAgICAgdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJEaXNwbGF5IG5hbWVcIiksXG4gICAgICAgICAgICAgICAgbmFtZTogXCJkaXNwbGF5bmFtZVwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZTogXCJvZmZcIixcbiAgICAgICAgICAgICAgICBhdXRvY2FwaXRhbGl6ZTogXCJub25lXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvcnJlY3Q6IFwib2ZmXCJcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZG9tUHJvcHM6IHsgdmFsdWU6IF92bS5uZXdVc2VyLmRpc3BsYXlOYW1lIH0sXG4gICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgaW5wdXQ6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgaWYgKCRldmVudC50YXJnZXQuY29tcG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwiZGlzcGxheU5hbWVcIiwgJGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgXSksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcInBhc3N3b3JkXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5wYXNzd29yZCxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5wYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIGlkOiBcIm5ld3VzZXJwYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwicGFzc3dvcmRcIixcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogX3ZtLm5ld1VzZXIubWFpbEFkZHJlc3MgPT09IFwiXCIsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJQYXNzd29yZFwiKSxcbiAgICAgICAgICAgICAgICBuYW1lOiBcInBhc3N3b3JkXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlOiBcIm5ldy1wYXNzd29yZFwiLFxuICAgICAgICAgICAgICAgIGF1dG9jYXBpdGFsaXplOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICBhdXRvY29ycmVjdDogXCJvZmZcIixcbiAgICAgICAgICAgICAgICBtaW5sZW5ndGg6IF92bS5taW5QYXNzd29yZExlbmd0aFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBkb21Qcm9wczogeyB2YWx1ZTogX3ZtLm5ld1VzZXIucGFzc3dvcmQgfSxcbiAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICBpbnB1dDogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICBpZiAoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ubmV3VXNlciwgXCJwYXNzd29yZFwiLCAkZXZlbnQudGFyZ2V0LnZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwibWFpbEFkZHJlc3NcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5uZXdVc2VyLm1haWxBZGRyZXNzLFxuICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuZXdVc2VyLm1haWxBZGRyZXNzXCJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgaWQ6IFwibmV3ZW1haWxcIixcbiAgICAgICAgICAgICAgICB0eXBlOiBcImVtYWlsXCIsXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IF92bS5uZXdVc2VyLnBhc3N3b3JkID09PSBcIlwiLFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiTWFpbCBhZGRyZXNzXCIpLFxuICAgICAgICAgICAgICAgIG5hbWU6IFwiZW1haWxcIixcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU6IFwib2ZmXCIsXG4gICAgICAgICAgICAgICAgYXV0b2NhcGl0YWxpemU6IFwibm9uZVwiLFxuICAgICAgICAgICAgICAgIGF1dG9jb3JyZWN0OiBcIm9mZlwiXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGRvbVByb3BzOiB7IHZhbHVlOiBfdm0ubmV3VXNlci5tYWlsQWRkcmVzcyB9LFxuICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgIGlucHV0OiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgIGlmICgkZXZlbnQudGFyZ2V0LmNvbXBvc2luZykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIF92bS4kc2V0KF92bS5uZXdVc2VyLCBcIm1haWxBZGRyZXNzXCIsICRldmVudC50YXJnZXQudmFsdWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXG4gICAgICAgICAgICBcImRpdlwiLFxuICAgICAgICAgICAgeyBzdGF0aWNDbGFzczogXCJncm91cHNcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICBcIm11bHRpc2VsZWN0XCIsXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwibXVsdGlzZWxlY3QtdnVlXCIsXG4gICAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0uZ3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkFkZCB1c2VyIGluIGdyb3VwXCIpLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgIFwidHJhY2stYnlcIjogXCJpZFwiLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgXCJjbG9zZS1vbi1zZWxlY3RcIjogZmFsc2VcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBtb2RlbDoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIuZ3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjazogZnVuY3Rpb24oJCR2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwiZ3JvdXBzXCIsICQkdilcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJuZXdVc2VyLmdyb3Vwc1wiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBfYyhcbiAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cnM6IHsgc2xvdDogXCJub1Jlc3VsdFwiIH0sIHNsb3Q6IFwibm9SZXN1bHRcIiB9LFxuICAgICAgICAgICAgICAgICAgICBbX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiTm8gcmVzdWx0XCIpKSldXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgMVxuICAgICAgICAgICksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc3ViQWRtaW5zR3JvdXBzLmxlbmd0aCA+IDBcbiAgICAgICAgICAgID8gX2MoXG4gICAgICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgICAgICB7IHN0YXRpY0NsYXNzOiBcInN1YmFkbWluc1wiIH0sXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgX2MoXG4gICAgICAgICAgICAgICAgICAgIFwibXVsdGlzZWxlY3RcIixcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcIm11bHRpc2VsZWN0LXZ1ZVwiLFxuICAgICAgICAgICAgICAgICAgICAgIGF0dHJzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBfdm0uc3ViQWRtaW5zR3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IF92bS50KFwic2V0dGluZ3NcIiwgXCJTZXQgdXNlciBhcyBhZG1pbiBmb3JcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRyYWNrLWJ5XCI6IFwiaWRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjbG9zZS1vbi1zZWxlY3RcIjogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLm5ld1VzZXIuc3ViQWRtaW5zR3JvdXBzLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKCQkdikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfdm0uJHNldChfdm0ubmV3VXNlciwgXCJzdWJBZG1pbnNHcm91cHNcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5zdWJBZG1pbnNHcm91cHNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIF9jKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGF0dHJzOiB7IHNsb3Q6IFwibm9SZXN1bHRcIiB9LCBzbG90OiBcIm5vUmVzdWx0XCIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJObyByZXN1bHRcIikpKV1cbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBfdm0uX2UoKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFxuICAgICAgICAgICAgXCJkaXZcIixcbiAgICAgICAgICAgIHsgc3RhdGljQ2xhc3M6IFwicXVvdGFcIiB9LFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBfYyhcIm11bHRpc2VsZWN0XCIsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJtdWx0aXNlbGVjdC12dWVcIixcbiAgICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgICAgb3B0aW9uczogX3ZtLnF1b3RhT3B0aW9ucyxcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBfdm0udChcInNldHRpbmdzXCIsIFwiU2VsZWN0IHVzZXIgcXVvdGFcIiksXG4gICAgICAgICAgICAgICAgICBsYWJlbDogXCJsYWJlbFwiLFxuICAgICAgICAgICAgICAgICAgXCJ0cmFjay1ieVwiOiBcImlkXCIsXG4gICAgICAgICAgICAgICAgICBhbGxvd0VtcHR5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgIHRhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbjogeyB0YWc6IF92bS52YWxpZGF0ZVF1b3RhIH0sXG4gICAgICAgICAgICAgICAgbW9kZWw6IHtcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0ubmV3VXNlci5xdW90YSxcbiAgICAgICAgICAgICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbigkJHYpIHtcbiAgICAgICAgICAgICAgICAgICAgX3ZtLiRzZXQoX3ZtLm5ld1VzZXIsIFwicXVvdGFcIiwgJCR2KVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwibmV3VXNlci5xdW90YVwiXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIDFcbiAgICAgICAgICApLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhbmd1YWdlc1xuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImxhbmd1YWdlc1wiIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd1N0b3JhZ2VQYXRoXG4gICAgICAgICAgICA/IF9jKFwiZGl2XCIsIHsgc3RhdGljQ2xhc3M6IFwic3RvcmFnZUxvY2F0aW9uXCIgfSlcbiAgICAgICAgICAgIDogX3ZtLl9lKCksXG4gICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICBfdm0uc2hvd0NvbmZpZy5zaG93VXNlckJhY2tlbmRcbiAgICAgICAgICAgID8gX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2VyQmFja2VuZFwiIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX3ZtLnNob3dDb25maWcuc2hvd0xhc3RMb2dpblxuICAgICAgICAgICAgPyBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImxhc3RMb2dpblwiIH0pXG4gICAgICAgICAgICA6IF92bS5fZSgpLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2VyQWN0aW9uc1wiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJidXR0b24gcHJpbWFyeSBpY29uLWNoZWNrbWFyay13aGl0ZSBoYXMtdG9vbHRpcFwiLFxuICAgICAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwic3VibWl0XCIsXG4gICAgICAgICAgICAgICAgaWQ6IFwibmV3c3VibWl0XCIsXG4gICAgICAgICAgICAgICAgdmFsdWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgdGl0bGU6IF92bS50KFwic2V0dGluZ3NcIiwgXCJBZGQgYSBuZXcgdXNlclwiKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiYnV0dG9uIGljb24tY2xvc2UgaGFzLXRvb2x0aXBcIixcbiAgICAgICAgICAgICAgYXR0cnM6IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInJlc2V0XCIsXG4gICAgICAgICAgICAgICAgaWQ6IFwibmV3cmVzZXRcIixcbiAgICAgICAgICAgICAgICB2YWx1ZTogXCJcIixcbiAgICAgICAgICAgICAgICB0aXRsZTogX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIkNhbmNlbCBhbmQgcmVzZXQgdGhlIGZvcm1cIilcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgb246IHsgY2xpY2s6IF92bS5yZXNldEZvcm0gfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICBdKVxuICAgICAgICBdXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF92bS5fbChfdm0uZmlsdGVyZWRVc2VycywgZnVuY3Rpb24odXNlciwga2V5KSB7XG4gICAgICAgIHJldHVybiBfYyhcInVzZXItcm93XCIsIHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICBhdHRyczoge1xuICAgICAgICAgICAgdXNlcjogdXNlcixcbiAgICAgICAgICAgIHNldHRpbmdzOiBfdm0uc2V0dGluZ3MsXG4gICAgICAgICAgICBzaG93Q29uZmlnOiBfdm0uc2hvd0NvbmZpZyxcbiAgICAgICAgICAgIGdyb3VwczogX3ZtLmdyb3VwcyxcbiAgICAgICAgICAgIHN1YkFkbWluc0dyb3VwczogX3ZtLnN1YkFkbWluc0dyb3VwcyxcbiAgICAgICAgICAgIHF1b3RhT3B0aW9uczogX3ZtLnF1b3RhT3B0aW9uc1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFxuICAgICAgICBcImluZmluaXRlLWxvYWRpbmdcIixcbiAgICAgICAgeyByZWY6IFwiaW5maW5pdGVMb2FkaW5nXCIsIG9uOiB7IGluZmluaXRlOiBfdm0uaW5maW5pdGVIYW5kbGVyIH0gfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgc2xvdDogXCJzcGlubmVyXCIgfSwgc2xvdDogXCJzcGlubmVyXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2Vycy1pY29uLWxvYWRpbmcgaWNvbi1sb2FkaW5nXCIgfSlcbiAgICAgICAgICBdKSxcbiAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgIF9jKFwiZGl2XCIsIHsgYXR0cnM6IHsgc2xvdDogXCJuby1tb3JlXCIgfSwgc2xvdDogXCJuby1tb3JlXCIgfSwgW1xuICAgICAgICAgICAgX2MoXCJkaXZcIiwgeyBzdGF0aWNDbGFzczogXCJ1c2Vycy1saXN0LWVuZFwiIH0sIFtcbiAgICAgICAgICAgICAgX3ZtLl92KFwi4oCUIFwiICsgX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJubyBtb3JlIHJlc3VsdHNcIikpICsgXCIg4oCUXCIpXG4gICAgICAgICAgICBdKVxuICAgICAgICAgIF0pLFxuICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgX2MoXCJkaXZcIiwgeyBhdHRyczogeyBzbG90OiBcIm5vLXJlc3VsdHNcIiB9LCBzbG90OiBcIm5vLXJlc3VsdHNcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImRpdlwiLCB7IGF0dHJzOiB7IGlkOiBcImVtcHR5Y29udGVudFwiIH0gfSwgW1xuICAgICAgICAgICAgICBfYyhcImRpdlwiLCB7IHN0YXRpY0NsYXNzOiBcImljb24tY29udGFjdHMtZGFya1wiIH0pLFxuICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcImgyXCIsIFtfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJObyB1c2VycyBpbiBoZXJlXCIpKSldKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdKVxuICAgICAgICBdXG4gICAgICApXG4gICAgXSxcbiAgICAyXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG52YXIgZXNFeHBvcnRzID0geyByZW5kZXI6IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuZXhwb3J0IGRlZmF1bHQgZXNFeHBvcnRzXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmIChtb2R1bGUuaG90LmRhdGEpIHtcbiAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpICAgICAgLnJlcmVuZGVyKFwiZGF0YS12LTQwNzQ1Mjk5XCIsIGVzRXhwb3J0cylcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtNDA3NDUyOTlcIixcImhhc1Njb3BlZFwiOmZhbHNlLFwiYnVibGVcIjp7XCJ0cmFuc2Zvcm1zXCI6e319fSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvY29tcG9uZW50cy91c2VyTGlzdC52dWVcbi8vIG1vZHVsZSBpZCA9IDQ4XG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///48\n");
/***/ }),
/* 49 */
@@ -403,7 +378,7 @@ eval("/* WEBPACK VAR INJECTION */(function(process) {/**\n * vue-local-storage v
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"app\" } },\n [\n _c(\n \"app-navigation\",\n { attrs: { menu: _vm.menu } },\n [\n _c(\"template\", { slot: \"settings-content\" }, [\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showLastLogin,\n expression: \"showLastLogin\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { type: \"checkbox\", id: \"showLastLogin\" },\n domProps: {\n checked: _vm.showLastLogin,\n checked: Array.isArray(_vm.showLastLogin)\n ? _vm._i(_vm.showLastLogin, null) > -1\n : _vm.showLastLogin\n },\n on: {\n change: function($event) {\n var $$a = _vm.showLastLogin,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showLastLogin = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showLastLogin = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showLastLogin = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showLastLogin\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show last login\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showUserBackend,\n expression: \"showUserBackend\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { type: \"checkbox\", id: \"showUserBackend\" },\n domProps: {\n checked: _vm.showUserBackend,\n checked: Array.isArray(_vm.showUserBackend)\n ? _vm._i(_vm.showUserBackend, null) > -1\n : _vm.showUserBackend\n },\n on: {\n change: function($event) {\n var $$a = _vm.showUserBackend,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showUserBackend = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showUserBackend = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showUserBackend = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showUserBackend\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show user backend\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showStoragePath,\n expression: \"showStoragePath\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { type: \"checkbox\", id: \"showStoragePath\" },\n domProps: {\n checked: _vm.showStoragePath,\n checked: Array.isArray(_vm.showStoragePath)\n ? _vm._i(_vm.showStoragePath, null) > -1\n : _vm.showStoragePath\n },\n on: {\n change: function($event) {\n var $$a = _vm.showStoragePath,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showStoragePath = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showStoragePath = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showStoragePath = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showStoragePath\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show storage path\")))\n ])\n ])\n ])\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"user-list\", {\n attrs: { users: _vm.users, showConfig: _vm.showConfig }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-68be103e\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdmlld3MvVXNlcnMudnVlPzJiNDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxTQUFTLFlBQVksRUFBRTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVMsaUJBQWlCLEVBQUU7QUFDckM7QUFDQSwwQkFBMEIsMkJBQTJCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isd0NBQXdDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLDJCQUEyQixTQUFTLHVCQUF1QixFQUFFO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QiwwQ0FBMEM7QUFDbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsMkJBQTJCLFNBQVMseUJBQXlCLEVBQUU7QUFDL0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDBDQUEwQztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQSwyQkFBMkIsU0FBUyx5QkFBeUIsRUFBRTtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiI1MC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIgPSBmdW5jdGlvbigpIHtcbiAgdmFyIF92bSA9IHRoaXNcbiAgdmFyIF9oID0gX3ZtLiRjcmVhdGVFbGVtZW50XG4gIHZhciBfYyA9IF92bS5fc2VsZi5fYyB8fCBfaFxuICByZXR1cm4gX2MoXG4gICAgXCJkaXZcIixcbiAgICB7IGF0dHJzOiB7IGlkOiBcImFwcFwiIH0gfSxcbiAgICBbXG4gICAgICBfYyhcbiAgICAgICAgXCJhcHAtbmF2aWdhdGlvblwiLFxuICAgICAgICB7IGF0dHJzOiB7IG1lbnU6IF92bS5tZW51IH0gfSxcbiAgICAgICAgW1xuICAgICAgICAgIF9jKFwidGVtcGxhdGVcIiwgeyBzbG90OiBcInNldHRpbmdzLWNvbnRlbnRcIiB9LCBbXG4gICAgICAgICAgICBfYyhcImRpdlwiLCBbXG4gICAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zaG93TGFzdExvZ2luLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dMYXN0TG9naW5cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiY2hlY2tib3hcIixcbiAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImNoZWNrYm94XCIsIGlkOiBcInNob3dMYXN0TG9naW5cIiB9LFxuICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBfdm0uc2hvd0xhc3RMb2dpbixcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IEFycmF5LmlzQXJyYXkoX3ZtLnNob3dMYXN0TG9naW4pXG4gICAgICAgICAgICAgICAgICAgID8gX3ZtLl9pKF92bS5zaG93TGFzdExvZ2luLCBudWxsKSA+IC0xXG4gICAgICAgICAgICAgICAgICAgIDogX3ZtLnNob3dMYXN0TG9naW5cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJCRhID0gX3ZtLnNob3dMYXN0TG9naW4sXG4gICAgICAgICAgICAgICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KCQkYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgJCR2ID0gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICQkaSA9IF92bS5faSgkJGEsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJCRlbC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkJGkgPCAwICYmIChfdm0uc2hvd0xhc3RMb2dpbiA9ICQkYS5jb25jYXQoWyQkdl0pKVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkJGkgPiAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLnNob3dMYXN0TG9naW4gPSAkJGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgJCRpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoJCRhLnNsaWNlKCQkaSArIDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dMYXN0TG9naW4gPSAkJGNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwibGFiZWxcIiwgeyBhdHRyczogeyBmb3I6IFwic2hvd0xhc3RMb2dpblwiIH0gfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlNob3cgbGFzdCBsb2dpblwiKSkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcImRpdlwiLCBbXG4gICAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zaG93VXNlckJhY2tlbmQsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd1VzZXJCYWNrZW5kXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJjaGVja2JveFwiLCBpZDogXCJzaG93VXNlckJhY2tlbmRcIiB9LFxuICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBfdm0uc2hvd1VzZXJCYWNrZW5kLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogQXJyYXkuaXNBcnJheShfdm0uc2hvd1VzZXJCYWNrZW5kKVxuICAgICAgICAgICAgICAgICAgICA/IF92bS5faShfdm0uc2hvd1VzZXJCYWNrZW5kLCBudWxsKSA+IC0xXG4gICAgICAgICAgICAgICAgICAgIDogX3ZtLnNob3dVc2VyQmFja2VuZFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkJGEgPSBfdm0uc2hvd1VzZXJCYWNrZW5kLFxuICAgICAgICAgICAgICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICQkYyA9ICQkZWwuY2hlY2tlZCA/IHRydWUgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCQkZWwuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCRpIDwgMCAmJiAoX3ZtLnNob3dVc2VyQmFja2VuZCA9ICQkYS5jb25jYXQoWyQkdl0pKVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkJGkgPiAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLnNob3dVc2VyQmFja2VuZCA9ICQkYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAkJGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd1VzZXJCYWNrZW5kID0gJCRjXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcImxhYmVsXCIsIHsgYXR0cnM6IHsgZm9yOiBcInNob3dVc2VyQmFja2VuZFwiIH0gfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlNob3cgdXNlciBiYWNrZW5kXCIpKSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIFtcbiAgICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dTdG9yYWdlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzaG93U3RvcmFnZVBhdGhcIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgc3RhdGljQ2xhc3M6IFwiY2hlY2tib3hcIixcbiAgICAgICAgICAgICAgICBhdHRyczogeyB0eXBlOiBcImNoZWNrYm94XCIsIGlkOiBcInNob3dTdG9yYWdlUGF0aFwiIH0sXG4gICAgICAgICAgICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IF92bS5zaG93U3RvcmFnZVBhdGgsXG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBBcnJheS5pc0FycmF5KF92bS5zaG93U3RvcmFnZVBhdGgpXG4gICAgICAgICAgICAgICAgICAgID8gX3ZtLl9pKF92bS5zaG93U3RvcmFnZVBhdGgsIG51bGwpID4gLTFcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uc2hvd1N0b3JhZ2VQYXRoXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgY2hhbmdlOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICQkYSA9IF92bS5zaG93U3RvcmFnZVBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgJCRlbCA9ICRldmVudC50YXJnZXQsXG4gICAgICAgICAgICAgICAgICAgICAgJCRjID0gJCRlbC5jaGVja2VkID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KCQkYSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICB2YXIgJCR2ID0gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICQkaSA9IF92bS5faSgkJGEsICQkdilcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoJCRlbC5jaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkJGkgPCAwICYmIChfdm0uc2hvd1N0b3JhZ2VQYXRoID0gJCRhLmNvbmNhdChbJCR2XSkpXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQkaSA+IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0uc2hvd1N0b3JhZ2VQYXRoID0gJCRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsICQkaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93U3RvcmFnZVBhdGggPSAkJGNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICAgIF9jKFwibGFiZWxcIiwgeyBhdHRyczogeyBmb3I6IFwic2hvd1N0b3JhZ2VQYXRoXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiU2hvdyBzdG9yYWdlIHBhdGhcIikpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgICBdKVxuICAgICAgICBdLFxuICAgICAgICAyXG4gICAgICApLFxuICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgIF9jKFwidXNlci1saXN0XCIsIHtcbiAgICAgICAgYXR0cnM6IHsgdXNlcnM6IF92bS51c2Vycywgc2hvd0NvbmZpZzogX3ZtLnNob3dDb25maWcgfVxuICAgICAgfSlcbiAgICBdLFxuICAgIDFcbiAgKVxufVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbnZhciBlc0V4cG9ydHMgPSB7IHJlbmRlcjogcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnM6IHN0YXRpY1JlbmRlckZucyB9XG5leHBvcnQgZGVmYXVsdCBlc0V4cG9ydHNcbmlmIChtb2R1bGUuaG90KSB7XG4gIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgaWYgKG1vZHVsZS5ob3QuZGF0YSkge1xuICAgIHJlcXVpcmUoXCJ2dWUtaG90LXJlbG9hZC1hcGlcIikgICAgICAucmVyZW5kZXIoXCJkYXRhLXYtNjhiZTEwM2VcIiwgZXNFeHBvcnRzKVxuICB9XG59XG5cblxuLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBXRUJQQUNLIEZPT1RFUlxuLy8gLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvdGVtcGxhdGUtY29tcGlsZXI/e1wiaWRcIjpcImRhdGEtdi02OGJlMTAzZVwiLFwiaGFzU2NvcGVkXCI6ZmFsc2UsXCJidWJsZVwiOntcInRyYW5zZm9ybXNcIjp7fX19IS4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3NlbGVjdG9yLmpzP3R5cGU9dGVtcGxhdGUmaW5kZXg9MCEuL3NyYy92aWV3cy9Vc2Vycy52dWVcbi8vIG1vZHVsZSBpZCA9IDUwXG4vLyBtb2R1bGUgY2h1bmtzID0gMCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///50\n");
+eval("var render = function() {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n { attrs: { id: \"app\" } },\n [\n _c(\n \"app-navigation\",\n { attrs: { menu: _vm.menu } },\n [\n _c(\"template\", { slot: \"settings-content\" }, [\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showLanguages,\n expression: \"showLanguages\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { type: \"checkbox\", id: \"showLanguages\" },\n domProps: {\n checked: _vm.showLanguages,\n checked: Array.isArray(_vm.showLanguages)\n ? _vm._i(_vm.showLanguages, null) > -1\n : _vm.showLanguages\n },\n on: {\n change: function($event) {\n var $$a = _vm.showLanguages,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showLanguages = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showLanguages = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showLanguages = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showLanguages\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show Languages\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showLastLogin,\n expression: \"showLastLogin\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { type: \"checkbox\", id: \"showLastLogin\" },\n domProps: {\n checked: _vm.showLastLogin,\n checked: Array.isArray(_vm.showLastLogin)\n ? _vm._i(_vm.showLastLogin, null) > -1\n : _vm.showLastLogin\n },\n on: {\n change: function($event) {\n var $$a = _vm.showLastLogin,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showLastLogin = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showLastLogin = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showLastLogin = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showLastLogin\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show last login\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showUserBackend,\n expression: \"showUserBackend\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { type: \"checkbox\", id: \"showUserBackend\" },\n domProps: {\n checked: _vm.showUserBackend,\n checked: Array.isArray(_vm.showUserBackend)\n ? _vm._i(_vm.showUserBackend, null) > -1\n : _vm.showUserBackend\n },\n on: {\n change: function($event) {\n var $$a = _vm.showUserBackend,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showUserBackend = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showUserBackend = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showUserBackend = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showUserBackend\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show user backend\")))\n ])\n ]),\n _vm._v(\" \"),\n _c(\"div\", [\n _c(\"input\", {\n directives: [\n {\n name: \"model\",\n rawName: \"v-model\",\n value: _vm.showStoragePath,\n expression: \"showStoragePath\"\n }\n ],\n staticClass: \"checkbox\",\n attrs: { type: \"checkbox\", id: \"showStoragePath\" },\n domProps: {\n checked: _vm.showStoragePath,\n checked: Array.isArray(_vm.showStoragePath)\n ? _vm._i(_vm.showStoragePath, null) > -1\n : _vm.showStoragePath\n },\n on: {\n change: function($event) {\n var $$a = _vm.showStoragePath,\n $$el = $event.target,\n $$c = $$el.checked ? true : false\n if (Array.isArray($$a)) {\n var $$v = null,\n $$i = _vm._i($$a, $$v)\n if ($$el.checked) {\n $$i < 0 && (_vm.showStoragePath = $$a.concat([$$v]))\n } else {\n $$i > -1 &&\n (_vm.showStoragePath = $$a\n .slice(0, $$i)\n .concat($$a.slice($$i + 1)))\n }\n } else {\n _vm.showStoragePath = $$c\n }\n }\n }\n }),\n _vm._v(\" \"),\n _c(\"label\", { attrs: { for: \"showStoragePath\" } }, [\n _vm._v(_vm._s(_vm.t(\"settings\", \"Show storage path\")))\n ])\n ])\n ])\n ],\n 2\n ),\n _vm._v(\" \"),\n _c(\"user-list\", {\n attrs: { users: _vm.users, showConfig: _vm.showConfig }\n })\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\n/* harmony default export */ __webpack_exports__[\"a\"] = (esExports);\nif (false) {\n module.hot.accept()\n if (module.hot.data) {\n require(\"vue-hot-reload-api\") .rerender(\"data-v-68be103e\", esExports)\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvdmlld3MvVXNlcnMudnVlPzJiNDgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxTQUFTLFlBQVksRUFBRTtBQUM1QjtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVMsaUJBQWlCLEVBQUU7QUFDckM7QUFDQSwwQkFBMEIsMkJBQTJCO0FBQ3JEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0Isd0NBQXdDO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLDJCQUEyQixTQUFTLHVCQUF1QixFQUFFO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qix3Q0FBd0M7QUFDaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZTtBQUNmO0FBQ0EsMkJBQTJCLFNBQVMsdUJBQXVCLEVBQUU7QUFDN0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLDBDQUEwQztBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2Y7QUFDQSwyQkFBMkIsU0FBUyx5QkFBeUIsRUFBRTtBQUMvRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsMENBQTBDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHFCQUFxQjtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWU7QUFDZjtBQUNBLDJCQUEyQixTQUFTLHlCQUF5QixFQUFFO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6IjUwLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIHJlbmRlciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgX3ZtID0gdGhpc1xuICB2YXIgX2ggPSBfdm0uJGNyZWF0ZUVsZW1lbnRcbiAgdmFyIF9jID0gX3ZtLl9zZWxmLl9jIHx8IF9oXG4gIHJldHVybiBfYyhcbiAgICBcImRpdlwiLFxuICAgIHsgYXR0cnM6IHsgaWQ6IFwiYXBwXCIgfSB9LFxuICAgIFtcbiAgICAgIF9jKFxuICAgICAgICBcImFwcC1uYXZpZ2F0aW9uXCIsXG4gICAgICAgIHsgYXR0cnM6IHsgbWVudTogX3ZtLm1lbnUgfSB9LFxuICAgICAgICBbXG4gICAgICAgICAgX2MoXCJ0ZW1wbGF0ZVwiLCB7IHNsb3Q6IFwic2V0dGluZ3MtY29udGVudFwiIH0sIFtcbiAgICAgICAgICAgIF9jKFwiZGl2XCIsIFtcbiAgICAgICAgICAgICAgX2MoXCJpbnB1dFwiLCB7XG4gICAgICAgICAgICAgICAgZGlyZWN0aXZlczogW1xuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIm1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHJhd05hbWU6IFwidi1tb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogX3ZtLnNob3dMYW5ndWFnZXMsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd0xhbmd1YWdlc1wiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjaGVja2JveFwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiY2hlY2tib3hcIiwgaWQ6IFwic2hvd0xhbmd1YWdlc1wiIH0sXG4gICAgICAgICAgICAgICAgZG9tUHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IF92bS5zaG93TGFuZ3VhZ2VzLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogQXJyYXkuaXNBcnJheShfdm0uc2hvd0xhbmd1YWdlcylcbiAgICAgICAgICAgICAgICAgICAgPyBfdm0uX2koX3ZtLnNob3dMYW5ndWFnZXMsIG51bGwpID4gLTFcbiAgICAgICAgICAgICAgICAgICAgOiBfdm0uc2hvd0xhbmd1YWdlc1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkJGEgPSBfdm0uc2hvd0xhbmd1YWdlcyxcbiAgICAgICAgICAgICAgICAgICAgICAkJGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciAkJHYgPSBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgIGlmICgkJGVsLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQkaSA8IDAgJiYgKF92bS5zaG93TGFuZ3VhZ2VzID0gJCRhLmNvbmNhdChbJCR2XSkpXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQkaSA+IC0xICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChfdm0uc2hvd0xhbmd1YWdlcyA9ICQkYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAkJGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd0xhbmd1YWdlcyA9ICQkY1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJsYWJlbFwiLCB7IGF0dHJzOiB7IGZvcjogXCJzaG93TGFuZ3VhZ2VzXCIgfSB9LCBbXG4gICAgICAgICAgICAgICAgX3ZtLl92KF92bS5fcyhfdm0udChcInNldHRpbmdzXCIsIFwiU2hvdyBMYW5ndWFnZXNcIikpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJkaXZcIiwgW1xuICAgICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd0xhc3RMb2dpbixcbiAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogXCJzaG93TGFzdExvZ2luXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJjaGVja2JveFwiLCBpZDogXCJzaG93TGFzdExvZ2luXCIgfSxcbiAgICAgICAgICAgICAgICBkb21Qcm9wczoge1xuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogX3ZtLnNob3dMYXN0TG9naW4sXG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBBcnJheS5pc0FycmF5KF92bS5zaG93TGFzdExvZ2luKVxuICAgICAgICAgICAgICAgICAgICA/IF92bS5faShfdm0uc2hvd0xhc3RMb2dpbiwgbnVsbCkgPiAtMVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5zaG93TGFzdExvZ2luXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBvbjoge1xuICAgICAgICAgICAgICAgICAgY2hhbmdlOiBmdW5jdGlvbigkZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyICQkYSA9IF92bS5zaG93TGFzdExvZ2luLFxuICAgICAgICAgICAgICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICQkYyA9ICQkZWwuY2hlY2tlZCA/IHRydWUgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCQkZWwuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCRpIDwgMCAmJiAoX3ZtLnNob3dMYXN0TG9naW4gPSAkJGEuY29uY2F0KFskJHZdKSlcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCRpID4gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5zaG93TGFzdExvZ2luID0gJCRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKDAsICQkaSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCQkYS5zbGljZSgkJGkgKyAxKSkpXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIF92bS5zaG93TGFzdExvZ2luID0gJCRjXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcImxhYmVsXCIsIHsgYXR0cnM6IHsgZm9yOiBcInNob3dMYXN0TG9naW5cIiB9IH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJTaG93IGxhc3QgbG9naW5cIikpKVxuICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgX2MoXCJkaXZcIiwgW1xuICAgICAgICAgICAgICBfYyhcImlucHV0XCIsIHtcbiAgICAgICAgICAgICAgICBkaXJlY3RpdmVzOiBbXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwibW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgcmF3TmFtZTogXCJ2LW1vZGVsXCIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiBfdm0uc2hvd1VzZXJCYWNrZW5kLFxuICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBcInNob3dVc2VyQmFja2VuZFwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogXCJjaGVja2JveFwiLFxuICAgICAgICAgICAgICAgIGF0dHJzOiB7IHR5cGU6IFwiY2hlY2tib3hcIiwgaWQ6IFwic2hvd1VzZXJCYWNrZW5kXCIgfSxcbiAgICAgICAgICAgICAgICBkb21Qcm9wczoge1xuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogX3ZtLnNob3dVc2VyQmFja2VuZCxcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ6IEFycmF5LmlzQXJyYXkoX3ZtLnNob3dVc2VyQmFja2VuZClcbiAgICAgICAgICAgICAgICAgICAgPyBfdm0uX2koX3ZtLnNob3dVc2VyQmFja2VuZCwgbnVsbCkgPiAtMVxuICAgICAgICAgICAgICAgICAgICA6IF92bS5zaG93VXNlckJhY2tlbmRcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICBjaGFuZ2U6IGZ1bmN0aW9uKCRldmVudCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgJCRhID0gX3ZtLnNob3dVc2VyQmFja2VuZCxcbiAgICAgICAgICAgICAgICAgICAgICAkJGVsID0gJGV2ZW50LnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgICAkJGMgPSAkJGVsLmNoZWNrZWQgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoJCRhKSkge1xuICAgICAgICAgICAgICAgICAgICAgIHZhciAkJHYgPSBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgJCRpID0gX3ZtLl9pKCQkYSwgJCR2KVxuICAgICAgICAgICAgICAgICAgICAgIGlmICgkJGVsLmNoZWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQkaSA8IDAgJiYgKF92bS5zaG93VXNlckJhY2tlbmQgPSAkJGEuY29uY2F0KFskJHZdKSlcbiAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCRpID4gLTEgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF92bS5zaG93VXNlckJhY2tlbmQgPSAkJGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoMCwgJCRpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5jb25jYXQoJCRhLnNsaWNlKCQkaSArIDEpKSlcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgX3ZtLnNob3dVc2VyQmFja2VuZCA9ICQkY1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgX3ZtLl92KFwiIFwiKSxcbiAgICAgICAgICAgICAgX2MoXCJsYWJlbFwiLCB7IGF0dHJzOiB7IGZvcjogXCJzaG93VXNlckJhY2tlbmRcIiB9IH0sIFtcbiAgICAgICAgICAgICAgICBfdm0uX3YoX3ZtLl9zKF92bS50KFwic2V0dGluZ3NcIiwgXCJTaG93IHVzZXIgYmFja2VuZFwiKSkpXG4gICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICAgICAgICBfYyhcImRpdlwiLCBbXG4gICAgICAgICAgICAgIF9jKFwiaW5wdXRcIiwge1xuICAgICAgICAgICAgICAgIGRpcmVjdGl2ZXM6IFtcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJtb2RlbFwiLFxuICAgICAgICAgICAgICAgICAgICByYXdOYW1lOiBcInYtbW9kZWxcIixcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IF92bS5zaG93U3RvcmFnZVBhdGgsXG4gICAgICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IFwic2hvd1N0b3JhZ2VQYXRoXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBcImNoZWNrYm94XCIsXG4gICAgICAgICAgICAgICAgYXR0cnM6IHsgdHlwZTogXCJjaGVja2JveFwiLCBpZDogXCJzaG93U3RvcmFnZVBhdGhcIiB9LFxuICAgICAgICAgICAgICAgIGRvbVByb3BzOiB7XG4gICAgICAgICAgICAgICAgICBjaGVja2VkOiBfdm0uc2hvd1N0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZDogQXJyYXkuaXNBcnJheShfdm0uc2hvd1N0b3JhZ2VQYXRoKVxuICAgICAgICAgICAgICAgICAgICA/IF92bS5faShfdm0uc2hvd1N0b3JhZ2VQYXRoLCBudWxsKSA+IC0xXG4gICAgICAgICAgICAgICAgICAgIDogX3ZtLnNob3dTdG9yYWdlUGF0aFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgb246IHtcbiAgICAgICAgICAgICAgICAgIGNoYW5nZTogZnVuY3Rpb24oJGV2ZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciAkJGEgPSBfdm0uc2hvd1N0b3JhZ2VQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICQkZWwgPSAkZXZlbnQudGFyZ2V0LFxuICAgICAgICAgICAgICAgICAgICAgICQkYyA9ICQkZWwuY2hlY2tlZCA/IHRydWUgOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSgkJGEpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgdmFyICQkdiA9IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICAkJGkgPSBfdm0uX2koJCRhLCAkJHYpXG4gICAgICAgICAgICAgICAgICAgICAgaWYgKCQkZWwuY2hlY2tlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJCRpIDwgMCAmJiAoX3ZtLnNob3dTdG9yYWdlUGF0aCA9ICQkYS5jb25jYXQoWyQkdl0pKVxuICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkJGkgPiAtMSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoX3ZtLnNob3dTdG9yYWdlUGF0aCA9ICQkYVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zbGljZSgwLCAkJGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCgkJGEuc2xpY2UoJCRpICsgMSkpKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICBfdm0uc2hvd1N0b3JhZ2VQYXRoID0gJCRjXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBfdm0uX3YoXCIgXCIpLFxuICAgICAgICAgICAgICBfYyhcImxhYmVsXCIsIHsgYXR0cnM6IHsgZm9yOiBcInNob3dTdG9yYWdlUGF0aFwiIH0gfSwgW1xuICAgICAgICAgICAgICAgIF92bS5fdihfdm0uX3MoX3ZtLnQoXCJzZXR0aW5nc1wiLCBcIlNob3cgc3RvcmFnZSBwYXRoXCIpKSlcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgICAgXSlcbiAgICAgICAgXSxcbiAgICAgICAgMlxuICAgICAgKSxcbiAgICAgIF92bS5fdihcIiBcIiksXG4gICAgICBfYyhcInVzZXItbGlzdFwiLCB7XG4gICAgICAgIGF0dHJzOiB7IHVzZXJzOiBfdm0udXNlcnMsIHNob3dDb25maWc6IF92bS5zaG93Q29uZmlnIH1cbiAgICAgIH0pXG4gICAgXSxcbiAgICAxXG4gIClcbn1cbnZhciBzdGF0aWNSZW5kZXJGbnMgPSBbXVxucmVuZGVyLl93aXRoU3RyaXBwZWQgPSB0cnVlXG52YXIgZXNFeHBvcnRzID0geyByZW5kZXI6IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnMgfVxuZXhwb3J0IGRlZmF1bHQgZXNFeHBvcnRzXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpXG4gIGlmIChtb2R1bGUuaG90LmRhdGEpIHtcbiAgICByZXF1aXJlKFwidnVlLWhvdC1yZWxvYWQtYXBpXCIpICAgICAgLnJlcmVuZGVyKFwiZGF0YS12LTY4YmUxMDNlXCIsIGVzRXhwb3J0cylcbiAgfVxufVxuXG5cbi8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gV0VCUEFDSyBGT09URVJcbi8vIC4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3RlbXBsYXRlLWNvbXBpbGVyP3tcImlkXCI6XCJkYXRhLXYtNjhiZTEwM2VcIixcImhhc1Njb3BlZFwiOmZhbHNlLFwiYnVibGVcIjp7XCJ0cmFuc2Zvcm1zXCI6e319fSEuL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9zZWxlY3Rvci5qcz90eXBlPXRlbXBsYXRlJmluZGV4PTAhLi9zcmMvdmlld3MvVXNlcnMudnVlXG4vLyBtb2R1bGUgaWQgPSA1MFxuLy8gbW9kdWxlIGNodW5rcyA9IDAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///50\n");
/***/ }),
/* 51 */
@@ -424,7 +399,7 @@ eval("/* WEBPACK VAR INJECTION */(function(process) {/* unused harmony export St
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__api__ = __webpack_require__(17);\n\n\nvar orderGroups = function orderGroups(groups, orderBy) {\n /* const SORT_USERCOUNT = 1;\n * const SORT_GROUPNAME = 2;\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\n if (orderBy === 1) {\n return groups.sort(function (a, b) {\n return a.usercount < b.usercount;\n });\n } else {\n return groups.sort(function (a, b) {\n return a.name.localeCompare(b.name);\n });\n }\n};\n\nvar state = {\n users: [],\n groups: [],\n orderBy: 1,\n minPasswordLength: 0,\n usersOffset: 0,\n usersLimit: 25,\n userCount: 0\n};\n\nvar mutations = {\n appendUsers: function appendUsers(state, usersObj) {\n // convert obj to array\n var users = state.users.concat(Object.keys(usersObj).map(function (userid) {\n return usersObj[userid];\n }));\n state.usersOffset += state.usersLimit;\n state.users = users;\n },\n setPasswordPolicyMinLength: function setPasswordPolicyMinLength(state, length) {\n state.minPasswordLength = length !== '' ? length : 0;\n },\n initGroups: function initGroups(state, _ref) {\n var groups = _ref.groups,\n orderBy = _ref.orderBy,\n userCount = _ref.userCount;\n\n state.groups = groups;\n state.orderBy = orderBy;\n state.userCount = userCount;\n state.groups = orderGroups(state.groups, state.orderBy);\n },\n addGroup: function addGroup(state, groupid) {\n try {\n state.groups.push({\n id: groupid,\n name: groupid,\n usercount: 0 // user will be added after the creation\n });\n state.groups = orderGroups(state.groups, state.orderBy);\n } catch (e) {\n console.log('Can\\'t create group', e);\n }\n },\n addUserGroup: function addUserGroup(state, _ref2) {\n var userid = _ref2.userid,\n gid = _ref2.gid;\n\n // this should not be needed as it would means the user contains a group\n // the server database doesn't have.\n var group = state.groups.find(function (groupSearch) {\n return groupSearch.id == gid;\n });\n if (group) {\n group.usercount++; // increase count\n }\n var groups = state.users.find(function (user) {\n return user.id == userid;\n }).groups;\n groups.push(gid);\n state.groups = orderGroups(state.groups, state.orderBy);\n },\n removeUserGroup: function removeUserGroup(state, _ref3) {\n var userid = _ref3.userid,\n gid = _ref3.gid;\n\n // this should not be needed as it would means the user contains a group\n // the server database doesn't have.\n var group = state.groups.find(function (groupSearch) {\n return groupSearch.id == gid;\n });\n if (group) {\n group.usercount--; // lower count\n }\n var groups = state.users.find(function (user) {\n return user.id == userid;\n }).groups;\n groups.splice(groups.indexOf(gid), 1);\n state.groups = orderGroups(state.groups, state.orderBy);\n },\n addUserSubAdmin: function addUserSubAdmin(state, _ref4) {\n var userid = _ref4.userid,\n gid = _ref4.gid;\n\n var groups = state.users.find(function (user) {\n return user.id == userid;\n }).subadmin;\n groups.push(gid);\n },\n removeUserSubAdmin: function removeUserSubAdmin(state, _ref5) {\n var userid = _ref5.userid,\n gid = _ref5.gid;\n\n var groups = state.users.find(function (user) {\n return user.id == userid;\n }).subadmin;\n groups.splice(groups.indexOf(gid), 1);\n },\n deleteUser: function deleteUser(state, userid) {\n var userIndex = state.users.findIndex(function (user) {\n return user.id == userid;\n });\n state.users.splice(userIndex, 1);\n },\n addUserData: function addUserData(state, response) {\n state.users.push(response.data.ocs.data);\n },\n enableDisableUser: function enableDisableUser(state, _ref6) {\n var userid = _ref6.userid,\n enabled = _ref6.enabled;\n\n state.users.find(function (user) {\n return user.id == userid;\n }).enabled = enabled;\n // increment or not\n state.groups.find(function (group) {\n return group.id == '_disabled';\n }).usercount += enabled ? -1 : 1;\n state.userCount += enabled ? 1 : -1;\n console.log(enabled);\n },\n setUserData: function setUserData(state, _ref7) {\n var userid = _ref7.userid,\n key = _ref7.key,\n value = _ref7.value;\n\n if (key === 'quota') {\n var humanValue = OC.Util.computerFileSize(value);\n state.users.find(function (user) {\n return user.id == userid;\n })[key][key] = humanValue ? humanValue : value;\n } else {\n state.users.find(function (user) {\n return user.id == userid;\n })[key] = value;\n }\n },\n\n\n /**\n * Reset users list\n */\n resetUsers: function resetUsers(state) {\n state.users = [];\n state.usersOffset = 0;\n }\n};\n\nvar getters = {\n getUsers: function getUsers(state) {\n return state.users;\n },\n getGroups: function getGroups(state) {\n return state.groups;\n },\n getPasswordPolicyMinLength: function getPasswordPolicyMinLength(state) {\n return state.minPasswordLength;\n },\n getUsersOffset: function getUsersOffset(state) {\n return state.usersOffset;\n },\n getUsersLimit: function getUsersLimit(state) {\n return state.usersLimit;\n },\n getUserCount: function getUserCount(state) {\n return state.userCount;\n }\n};\n\nvar actions = {\n\n /**\n * Get all users with full details\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @param {string} options.search Search amongst users\n * @param {string} options.group Get users from group\n * @returns {Promise}\n */\n getUsers: function getUsers(context, _ref8) {\n var offset = _ref8.offset,\n limit = _ref8.limit,\n search = _ref8.search,\n group = _ref8.group;\n\n search = typeof search === 'string' ? search : '';\n group = typeof group === 'string' ? group : '';\n if (group !== '') {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/groups/' + group + '/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n if (Object.keys(response.data.ocs.data.users).length > 0) {\n context.commit('appendUsers', response.data.ocs.data.users);\n return true;\n }\n return false;\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n }\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n if (Object.keys(response.data.ocs.data.users).length > 0) {\n context.commit('appendUsers', response.data.ocs.data.users);\n return true;\n }\n return false;\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n },\n\n\n /**\n * Get all users with full details\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @returns {Promise}\n */\n getUsersFromList: function getUsersFromList(context, _ref9) {\n var offset = _ref9.offset,\n limit = _ref9.limit,\n search = _ref9.search;\n\n search = typeof search === 'string' ? search : '';\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n if (Object.keys(response.data.ocs.data.users).length > 0) {\n context.commit('appendUsers', response.data.ocs.data.users);\n return true;\n }\n return false;\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n },\n\n\n /**\n * Get all users with full details from a groupid\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @returns {Promise}\n */\n getUsersFromGroup: function getUsersFromGroup(context, _ref10) {\n var groupid = _ref10.groupid,\n offset = _ref10.offset,\n limit = _ref10.limit;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/' + groupid + '/details?offset=' + offset + '&limit=' + limit, 2)).then(function (response) {\n return context.commit('getUsersFromList', response.data.ocs.data.users);\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n },\n getPasswordPolicyMinLength: function getPasswordPolicyMinLength(context) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('apps/provisioning_api/api/v1/config/apps/password_policy/minLength', 2)).then(function (response) {\n return context.commit('setPasswordPolicyMinLength', response.data.ocs.data.data);\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n },\n\n\n /**\n * Add group\n * \n * @param {Object} context\n * @param {string} gid Group id\n * @returns {Promise}\n */\n addGroup: function addGroup(context, gid) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/groups', 2), { groupid: gid }).then(function (response) {\n return context.commit('addGroup', gid);\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n });\n },\n\n\n /**\n * Remove group\n * \n * @param {Object} context\n * @param {string} gid Group id\n * @returns {Promise}\n */\n removeGroup: function removeGroup(context, gid) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/groups', 2), { groupid: gid }).then(function (response) {\n return context.commit('removeGroup', gid);\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n });\n },\n\n\n /**\n * Add user to group\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n addUserGroup: function addUserGroup(context, _ref11) {\n var userid = _ref11.userid,\n gid = _ref11.gid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users/' + userid + '/groups', 2), { groupid: gid }).then(function (response) {\n return context.commit('addUserGroup', { userid: userid, gid: gid });\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n });\n },\n\n\n /**\n * Remove user from group\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n removeUserGroup: function removeUserGroup(context, _ref12) {\n var userid = _ref12.userid,\n gid = _ref12.gid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid + '/groups', 2), { groupid: gid }).then(function (response) {\n return context.commit('removeUserGroup', { userid: userid, gid: gid });\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Add user to group admin\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n addUserSubAdmin: function addUserSubAdmin(context, _ref13) {\n var userid = _ref13.userid,\n gid = _ref13.gid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users/' + userid + '/subadmins', 2), { groupid: gid }).then(function (response) {\n return context.commit('addUserSubAdmin', { userid: userid, gid: gid });\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n });\n },\n\n\n /**\n * Remove user from group admin\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n removeUserSubAdmin: function removeUserSubAdmin(context, _ref14) {\n var userid = _ref14.userid,\n gid = _ref14.gid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid + '/subadmins', 2), { groupid: gid }).then(function (response) {\n return context.commit('removeUserSubAdmin', { userid: userid, gid: gid });\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Delete a user\n * \n * @param {Object} context\n * @param {string} userid User id \n * @returns {Promise}\n */\n deleteUser: function deleteUser(context, _ref15) {\n var userid = _ref15.userid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid, 2)).then(function (response) {\n return context.commit('deleteUser', userid);\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Add a user\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.password User password \n * @param {string} options.email User email\n * @param {string} options.groups User groups\n * @param {string} options.subadmin User subadmin groups\n * @param {string} options.quota User email\n * @returns {Promise}\n */\n addUser: function addUser(_ref16, _ref17) {\n var context = _ref16.context,\n dispatch = _ref16.dispatch;\n var userid = _ref17.userid,\n password = _ref17.password,\n email = _ref17.email,\n groups = _ref17.groups,\n subadmin = _ref17.subadmin,\n quota = _ref17.quota;\n\n console.log(subadmin, quota);\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users', 2), { userid: userid, password: password, email: email, groups: groups, subadmin: subadmin, quota: quota }).then(function (response) {\n //let quotaDis = dispatch('setUserData', { userid, key: 'quota', value:quota });\n //let subadminDis = dispatch('addUserSubAdmin', userid);\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Get user data and commit addition\n * \n * @param {Object} context\n * @param {string} userid User id \n * @returns {Promise}\n */\n addUserData: function addUserData(context, userid) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/' + userid, 2)).then(function (response) {\n return context.commit('addUserData', response);\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /** Enable or disable user \n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {boolean} options.enabled User enablement status\n * @returns {Promise}\n */\n enableDisableUser: function enableDisableUser(context, _ref18) {\n var userid = _ref18.userid,\n _ref18$enabled = _ref18.enabled,\n enabled = _ref18$enabled === undefined ? true : _ref18$enabled;\n\n var userStatus = enabled ? 'enable' : 'disable';\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].put(OC.linkToOCS('cloud/users/' + userid + '/' + userStatus, 2)).then(function (response) {\n return context.commit('enableDisableUser', { userid: userid, enabled: enabled });\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Edit user data\n * \n * @param {Object} context \n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.key User field to edit\n * @param {string} options.value Value of the change\n * @returns {Promise}\n */\n setUserData: function setUserData(context, _ref19) {\n var userid = _ref19.userid,\n key = _ref19.key,\n value = _ref19.value;\n\n if (['email', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n // We allow empty email or displayname\n if (typeof value === 'string' && (['quota', 'password'].indexOf(key) !== -1 && value.length > 0 || ['email', 'displayname'].indexOf(key) !== -1)) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].put(OC.linkToOCS('cloud/users/' + userid, 2), { key: key, value: value }).then(function (response) {\n return context.commit('setUserData', { userid: userid, key: key, value: value });\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n }\n }\n return Promise.reject(new Error('Invalid request data'));\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({ state: state, mutations: mutations, getters: getters, actions: actions });\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RvcmUvdXNlcnMuanM/MjhjMiJdLCJuYW1lcyI6WyJvcmRlckdyb3VwcyIsImdyb3VwcyIsIm9yZGVyQnkiLCJzb3J0IiwiYSIsImIiLCJ1c2VyY291bnQiLCJuYW1lIiwibG9jYWxlQ29tcGFyZSIsInN0YXRlIiwidXNlcnMiLCJtaW5QYXNzd29yZExlbmd0aCIsInVzZXJzT2Zmc2V0IiwidXNlcnNMaW1pdCIsInVzZXJDb3VudCIsIm11dGF0aW9ucyIsImFwcGVuZFVzZXJzIiwidXNlcnNPYmoiLCJjb25jYXQiLCJPYmplY3QiLCJrZXlzIiwibWFwIiwidXNlcmlkIiwic2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgiLCJsZW5ndGgiLCJpbml0R3JvdXBzIiwiYWRkR3JvdXAiLCJncm91cGlkIiwicHVzaCIsImlkIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJhZGRVc2VyR3JvdXAiLCJnaWQiLCJncm91cCIsImZpbmQiLCJncm91cFNlYXJjaCIsInVzZXIiLCJyZW1vdmVVc2VyR3JvdXAiLCJzcGxpY2UiLCJpbmRleE9mIiwiYWRkVXNlclN1YkFkbWluIiwic3ViYWRtaW4iLCJyZW1vdmVVc2VyU3ViQWRtaW4iLCJkZWxldGVVc2VyIiwidXNlckluZGV4IiwiZmluZEluZGV4IiwiYWRkVXNlckRhdGEiLCJyZXNwb25zZSIsImRhdGEiLCJvY3MiLCJlbmFibGVEaXNhYmxlVXNlciIsImVuYWJsZWQiLCJzZXRVc2VyRGF0YSIsImtleSIsInZhbHVlIiwiaHVtYW5WYWx1ZSIsIk9DIiwiVXRpbCIsImNvbXB1dGVyRmlsZVNpemUiLCJyZXNldFVzZXJzIiwiZ2V0dGVycyIsImdldFVzZXJzIiwiZ2V0R3JvdXBzIiwiZ2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgiLCJnZXRVc2Vyc09mZnNldCIsImdldFVzZXJzTGltaXQiLCJnZXRVc2VyQ291bnQiLCJhY3Rpb25zIiwiY29udGV4dCIsIm9mZnNldCIsImxpbWl0Iiwic2VhcmNoIiwiYXBpIiwiZ2V0IiwibGlua1RvT0NTIiwidGhlbiIsImNvbW1pdCIsImNhdGNoIiwiZXJyb3IiLCJnZXRVc2Vyc0Zyb21MaXN0IiwiZ2V0VXNlcnNGcm9tR3JvdXAiLCJyZXF1aXJlQWRtaW4iLCJwb3N0IiwicmVtb3ZlR3JvdXAiLCJkZWxldGUiLCJhZGRVc2VyIiwiZGlzcGF0Y2giLCJwYXNzd29yZCIsImVtYWlsIiwicXVvdGEiLCJ1c2VyU3RhdHVzIiwicHV0IiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIl0sIm1hcHBpbmdzIjoiO0FBQUE7O0FBRUEsSUFBTUEsY0FBYyxTQUFkQSxXQUFjLENBQVNDLE1BQVQsRUFBaUJDLE9BQWpCLEVBQTBCO0FBQzFDOzs7O0FBSUEsUUFBSUEsWUFBWSxDQUFoQixFQUFtQjtBQUNmLGVBQU9ELE9BQU9FLElBQVAsQ0FBWSxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxtQkFBVUQsRUFBRUUsU0FBRixHQUFjRCxFQUFFQyxTQUExQjtBQUFBLFNBQVosQ0FBUDtBQUNILEtBRkQsTUFFTztBQUNILGVBQU9MLE9BQU9FLElBQVAsQ0FBWSxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxtQkFBVUQsRUFBRUcsSUFBRixDQUFPQyxhQUFQLENBQXFCSCxFQUFFRSxJQUF2QixDQUFWO0FBQUEsU0FBWixDQUFQO0FBQ0g7QUFDSixDQVZEOztBQVlBLElBQU1FLFFBQVE7QUFDVkMsV0FBTyxFQURHO0FBRVZULFlBQVEsRUFGRTtBQUdWQyxhQUFTLENBSEM7QUFJVlMsdUJBQW1CLENBSlQ7QUFLVkMsaUJBQWEsQ0FMSDtBQU1WQyxnQkFBWSxFQU5GO0FBT1ZDLGVBQVc7QUFQRCxDQUFkOztBQVVBLElBQU1DLFlBQVk7QUFDZEMsZUFEYyx1QkFDRlAsS0FERSxFQUNLUSxRQURMLEVBQ2U7QUFDekI7QUFDQSxZQUFJUCxRQUFRRCxNQUFNQyxLQUFOLENBQVlRLE1BQVosQ0FBbUJDLE9BQU9DLElBQVAsQ0FBWUgsUUFBWixFQUFzQkksR0FBdEIsQ0FBMEI7QUFBQSxt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SUFBNkNDLE1BQU1oQyxNQUFOLEdBQWUsQ0FBN0QsSUFDQSxDQUFDLE9BQUQsRUFBVSxhQUFWLEVBQXlCaUIsT0FBekIsQ0FBaUNjLEdBQWpDLE1BQTBDLENBQUMsQ0FIL0MsQ0FBSixFQUtFO0FBQ0UsdUJBQU8scURBQUFtQixDQUFJUyxZQUFKLEdBQW1CTixJQUFuQixDQUF3QixVQUFDNUIsUUFBRCxFQUFjO0FBQ3pDLDJCQUFPLHFEQUFBeUIsQ0FBSW1CLEdBQUosQ0FBUW5DLEdBQUdrQixTQUFILGtCQUE0QnRELE1BQTVCLEVBQXNDLENBQXRDLENBQVIsRUFBa0QsRUFBRWlDLEtBQUtBLEdBQVAsRUFBWUMsT0FBT0EsS0FBbkIsRUFBbEQsRUFDRnFCLElBREUsQ0FDRyxVQUFDNUIsUUFBRDtBQUFBLCtCQUFjcUIsUUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEIsRUFBRXhELGNBQUYsRUFBVWlDLFFBQVYsRUFBZUMsWUFBZixFQUE5QixDQUFkO0FBQUEscUJBREgsRUFFRnVCLEtBRkUsQ0FFSSxVQUFDQyxLQUFEO0FBQUEsK0JBQVdWLFFBQVFRLE1BQVIsQ0FBZSxhQUFmLEVBQThCLEVBQUV4RCxjQUFGLEVBQVUwRCxZQUFWLEVBQTlCLENBQVg7QUFBQSxxQkFGSixDQUFQO0FBR0gsaUJBSk0sQ0FBUDtBQUtIO0FBQ0o7QUFDRCxlQUFPYyxRQUFRQyxNQUFSLENBQWUsSUFBSUMsS0FBSixDQUFVLHNCQUFWLENBQWYsQ0FBUDtBQUNIO0FBeFJXLENBQWhCOztBQTJSQSx5REFBZSxFQUFFdkYsWUFBRixFQUFTTSxvQkFBVCxFQUFvQitDLGdCQUFwQixFQUE2Qk8sZ0JBQTdCLEVBQWYiLCJmaWxlIjoiNTMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXBpIGZyb20gJy4vYXBpJztcblxuY29uc3Qgb3JkZXJHcm91cHMgPSBmdW5jdGlvbihncm91cHMsIG9yZGVyQnkpIHtcbiAgICAvKiBjb25zdCBTT1JUX1VTRVJDT1VOVCA9IDE7XG4gICAgICogY29uc3QgU09SVF9HUk9VUE5BTUUgPSAyO1xuICAgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXh0Y2xvdWQvc2VydmVyL2Jsb2IvMjA4ZTM4ZTg0ZTFhMDdhNDk2OTlhYTkwZGM1YjcyNzJkMjQ0ODlmMC9saWIvcHJpdmF0ZS9Hcm91cC9NZXRhRGF0YS5waHAjTDM0XG4gICAgICovXG4gICAgaWYgKG9yZGVyQnkgPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5zb3J0KChhLCBiKSA9PiBhLnVzZXJjb3VudCA8IGIudXNlcmNvdW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZ3JvdXBzLnNvcnQoKGEsIGIpID0+IGEubmFtZS5sb2NhbGVDb21wYXJlKGIubmFtZSkpO1xuICAgIH1cbn1cblxuY29uc3Qgc3RhdGUgPSB7XG4gICAgdXNlcnM6IFtdLFxuICAgIGdyb3VwczogW10sXG4gICAgb3JkZXJCeTogMSxcbiAgICBtaW5QYXNzd29yZExlbmd0aDogMCxcbiAgICB1c2Vyc09mZnNldDogMCxcbiAgICB1c2Vyc0xpbWl0OiAyNSxcbiAgICB1c2VyQ291bnQ6IDBcbn07XG5cbmNvbnN0IG11dGF0aW9ucyA9IHtcbiAgICBhcHBlbmRVc2VycyhzdGF0ZSwgdXNlcnNPYmopIHtcbiAgICAgICAgLy8gY29udmVydCBvYmogdG8gYXJyYXlcbiAgICAgICAgbGV0IHVzZXJzID0gc3RhdGUudXNlcnMuY29uY2F0KE9iamVjdC5rZXlzKHVzZXJzT2JqKS5tYXAodXNlcmlkID0+IHVzZXJzT2JqW3VzZXJpZF0pKTtcbiAgICAgICAgc3RhdGUudXNlcnNPZmZzZXQgKz0gc3RhdGUudXNlcnNMaW1pdDtcbiAgICAgICAgc3RhdGUudXNlcnMgPSB1c2VycztcbiAgICB9LFxuICAgIHNldFBhc3N3b3JkUG9saWN5TWluTGVuZ3RoKHN0YXRlLCBsZW5ndGgpIHtcbiAgICAgICAgc3RhdGUubWluUGFzc3dvcmRMZW5ndGggPSBsZW5ndGghPT0nJyA/IGxlbmd0aCA6IDA7XG4gICAgfSxcbiAgICBpbml0R3JvdXBzKHN0YXRlLCB7Z3JvdXBzLCBvcmRlckJ5LCB1c2VyQ291bnR9KSB7XG4gICAgICAgIHN0YXRlLmdyb3VwcyA9IGdyb3VwcztcbiAgICAgICAgc3RhdGUub3JkZXJCeSA9IG9yZGVyQnk7XG4gICAgICAgIHN0YXRlLnVzZXJDb3VudCA9IHVzZXJDb3VudDtcbiAgICAgICAgc3RhdGUuZ3JvdXBzID0gb3JkZXJHcm91cHMoc3RhdGUuZ3JvdXBzLCBzdGF0ZS5vcmRlckJ5KTtcbiAgICB9LFxuICAgIGFkZEdyb3VwKHN0YXRlLCBncm91cGlkKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBzdGF0ZS5ncm91cHMucHVzaCh7XG4gICAgICAgICAgICAgICAgaWQ6IGdyb3VwaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogZ3JvdXBpZCxcbiAgICAgICAgICAgICAgICB1c2VyY291bnQ6IDAgLy8gdXNlciB3aWxsIGJlIGFkZGVkIGFmdGVyIHRoZSBjcmVhdGlvblxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzdGF0ZS5ncm91cHMgPSBvcmRlckdyb3VwcyhzdGF0ZS5ncm91cHMsIHN0YXRlLm9yZGVyQnkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnQ2FuXFwndCBjcmVhdGUgZ3JvdXAnLCBlKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWRkVXNlckdyb3VwKHN0YXRlLCB7IHVzZXJpZCwgZ2lkIH0pIHtcbiAgICAgICAgLy8gdGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZCBhcyBpdCB3b3VsZCBtZWFucyB0aGUgdXNlciBjb250YWlucyBhIGdyb3VwXG4gICAgICAgIC8vIHRoZSBzZXJ2ZXIgZGF0YWJhc2UgZG9lc24ndCBoYXZlLlxuICAgICAgICBsZXQgZ3JvdXAgPSBzdGF0ZS5ncm91cHMuZmluZChncm91cFNlYXJjaCA9PiBncm91cFNlYXJjaC5pZCA9PSBnaWQpO1xuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIGdyb3VwLnVzZXJjb3VudCsrOyAvLyBpbmNyZWFzZSBjb3VudFxuICAgICAgICB9XG4gICAgICAgIGxldCBncm91cHMgPSBzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpLmdyb3VwcztcbiAgICAgICAgZ3JvdXBzLnB1c2goZ2lkKTtcbiAgICAgICAgc3RhdGUuZ3JvdXBzID0gb3JkZXJHcm91cHMoc3RhdGUuZ3JvdXBzLCBzdGF0ZS5vcmRlckJ5KTtcbiAgICB9LFxuICAgIHJlbW92ZVVzZXJHcm91cChzdGF0ZSwgeyB1c2VyaWQsIGdpZCB9KSB7XG4gICAgICAgIC8vIHRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQgYXMgaXQgd291bGQgbWVhbnMgdGhlIHVzZXIgY29udGFpbnMgYSBncm91cFxuICAgICAgICAvLyB0aGUgc2VydmVyIGRhdGFiYXNlIGRvZXNuJ3QgaGF2ZS5cbiAgICAgICAgbGV0IGdyb3VwID0gc3RhdGUuZ3JvdXBzLmZpbmQoZ3JvdXBTZWFyY2ggPT4gZ3JvdXBTZWFyY2guaWQgPT0gZ2lkKTtcbiAgICAgICAgaWYgKGdyb3VwKSB7XG4gICAgICAgICAgICBncm91cC51c2VyY291bnQtLTsgLy8gbG93ZXIgY291bnRcbiAgICAgICAgfVxuICAgICAgICBsZXQgZ3JvdXBzID0gc3RhdGUudXNlcnMuZmluZCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKS5ncm91cHM7XG4gICAgICAgIGdyb3Vwcy5zcGxpY2UoZ3JvdXBzLmluZGV4T2YoZ2lkKSwxKTtcbiAgICAgICAgc3RhdGUuZ3JvdXBzID0gb3JkZXJHcm91cHMoc3RhdGUuZ3JvdXBzLCBzdGF0ZS5vcmRlckJ5KTtcbiAgICB9LFxuICAgIGFkZFVzZXJTdWJBZG1pbihzdGF0ZSwgeyB1c2VyaWQsIGdpZCB9KSB7XG4gICAgICAgIGxldCBncm91cHMgPSBzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpLnN1YmFkbWluO1xuICAgICAgICBncm91cHMucHVzaChnaWQpO1xuICAgIH0sXG4gICAgcmVtb3ZlVXNlclN1YkFkbWluKHN0YXRlLCB7IHVzZXJpZCwgZ2lkIH0pIHtcbiAgICAgICAgbGV0IGdyb3VwcyA9IHN0YXRlLnVzZXJzLmZpbmQodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZCkuc3ViYWRtaW47XG4gICAgICAgIGdyb3Vwcy5zcGxpY2UoZ3JvdXBzLmluZGV4T2YoZ2lkKSwxKTtcbiAgICB9LFxuICAgIGRlbGV0ZVVzZXIoc3RhdGUsIHVzZXJpZCkge1xuICAgICAgICBsZXQgdXNlckluZGV4ID0gc3RhdGUudXNlcnMuZmluZEluZGV4KHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpO1xuICAgICAgICBzdGF0ZS51c2Vycy5zcGxpY2UodXNlckluZGV4LCAxKTtcbiAgICB9LFxuICAgIGFkZFVzZXJEYXRhKHN0YXRlLCByZXNwb25zZSkge1xuICAgICAgICBzdGF0ZS51c2Vycy5wdXNoKHJlc3BvbnNlLmRhdGEub2NzLmRhdGEpO1xuICAgIH0sXG4gICAgZW5hYmxlRGlzYWJsZVVzZXIoc3RhdGUsIHsgdXNlcmlkLCBlbmFibGVkIH0pIHtcbiAgICAgICAgc3RhdGUudXNlcnMuZmluZCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKS5lbmFibGVkID0gZW5hYmxlZDtcbiAgICAgICAgLy8gaW5jcmVtZW50IG9yIG5vdFxuICAgICAgICBzdGF0ZS5ncm91cHMuZmluZChncm91cCA9PiBncm91cC5pZCA9PSAnX2Rpc2FibGVkJykudXNlcmNvdW50ICs9IGVuYWJsZWQgPyAtMSA6IDE7XG4gICAgICAgIHN0YXRlLnVzZXJDb3VudCArPSBlbmFibGVkID8gMSA6IC0xO1xuICAgICAgICBjb25zb2xlLmxvZyhlbmFibGVkKTtcbiAgICB9LFxuICAgIHNldFVzZXJEYXRhKHN0YXRlLCB7IHVzZXJpZCwga2V5LCB2YWx1ZSB9KSB7XG4gICAgICAgIGlmIChrZXkgPT09ICdxdW90YScpIHtcbiAgICAgICAgICAgIGxldCBodW1hblZhbHVlID0gT0MuVXRpbC5jb21wdXRlckZpbGVTaXplKHZhbHVlKTtcbiAgICAgICAgICAgIHN0YXRlLnVzZXJzLmZpbmQodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZClba2V5XVtrZXldID0gaHVtYW5WYWx1ZT9odW1hblZhbHVlOnZhbHVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3RhdGUudXNlcnMuZmluZCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKVtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVzZXQgdXNlcnMgbGlzdFxuICAgICAqL1xuICAgIHJlc2V0VXNlcnMoc3RhdGUpIHtcbiAgICAgICAgc3RhdGUudXNlcnMgPSBbXTtcbiAgICAgICAgc3RhdGUudXNlcnNPZmZzZXQgPSAwO1xuICAgIH1cbn07XG5cbmNvbnN0IGdldHRlcnMgPSB7XG4gICAgZ2V0VXNlcnMoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLnVzZXJzO1xuICAgIH0sXG4gICAgZ2V0R3JvdXBzKHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5ncm91cHM7XG4gICAgfSxcbiAgICBnZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aChzdGF0ZSkge1xuICAgICAgICByZXR1cm4gc3RhdGUubWluUGFzc3dvcmRMZW5ndGg7XG4gICAgfSxcbiAgICBnZXRVc2Vyc09mZnNldChzdGF0ZSkge1xuICAgICAgICByZXR1cm4gc3RhdGUudXNlcnNPZmZzZXQ7XG4gICAgfSxcbiAgICBnZXRVc2Vyc0xpbWl0KHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS51c2Vyc0xpbWl0O1xuICAgIH0sXG4gICAgZ2V0VXNlckNvdW50KHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS51c2VyQ291bnQ7XG4gICAgfVxufTtcblxuY29uc3QgYWN0aW9ucyA9IHtcblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgdXNlcnMgd2l0aCBmdWxsIGRldGFpbHNcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtpbnR9IG9wdGlvbnMub2Zmc2V0IExpc3Qgb2Zmc2V0IHRvIHJlcXVlc3RcbiAgICAgKiBAcGFyYW0ge2ludH0gb3B0aW9ucy5saW1pdCBMaXN0IG51bWJlciB0byByZXR1cm4gZnJvbSBvZmZzZXRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5zZWFyY2ggU2VhcmNoIGFtb25nc3QgdXNlcnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5ncm91cCBHZXQgdXNlcnMgZnJvbSBncm91cFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIGdldFVzZXJzKGNvbnRleHQsIHsgb2Zmc2V0LCBsaW1pdCwgc2VhcmNoLCBncm91cCB9KSB7XG4gICAgICAgIHNlYXJjaCA9IHR5cGVvZiBzZWFyY2ggPT09ICdzdHJpbmcnID8gc2VhcmNoIDogJyc7XG4gICAgICAgIGdyb3VwID0gdHlwZW9mIGdyb3VwID09PSAnc3RyaW5nJyA/IGdyb3VwIDogJyc7XG4gICAgICAgIGlmIChncm91cCAhPT0gJycpIHtcbiAgICAgICAgICAgIHJldHVybiBhcGkuZ2V0KE9DLmxpbmtUb09DUyhgY2xvdWQvZ3JvdXBzLyR7Z3JvdXB9L3VzZXJzL2RldGFpbHM/b2Zmc2V0PSR7b2Zmc2V0fSZsaW1pdD0ke2xpbWl0fSZzZWFyY2g9JHtzZWFyY2h9YCwgMikpXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzcG9uc2UuZGF0YS5vY3MuZGF0YS51c2VycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgnYXBwZW5kVXNlcnMnLCByZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy9kZXRhaWxzP29mZnNldD0ke29mZnNldH0mbGltaXQ9JHtsaW1pdH0mc2VhcmNoPSR7c2VhcmNofWAsIDIpKVxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5rZXlzKHJlc3BvbnNlLmRhdGEub2NzLmRhdGEudXNlcnMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5jb21taXQoJ2FwcGVuZFVzZXJzJywgcmVzcG9uc2UuZGF0YS5vY3MuZGF0YS51c2Vycyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB1c2VycyB3aXRoIGZ1bGwgZGV0YWlsc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge2ludH0gb3B0aW9ucy5vZmZzZXQgTGlzdCBvZmZzZXQgdG8gcmVxdWVzdFxuICAgICAqIEBwYXJhbSB7aW50fSBvcHRpb25zLmxpbWl0IExpc3QgbnVtYmVyIHRvIHJldHVybiBmcm9tIG9mZnNldFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIGdldFVzZXJzRnJvbUxpc3QoY29udGV4dCwgeyBvZmZzZXQsIGxpbWl0LCBzZWFyY2ggfSkge1xuICAgICAgICBzZWFyY2ggPSB0eXBlb2Ygc2VhcmNoID09PSAnc3RyaW5nJyA/IHNlYXJjaCA6ICcnO1xuICAgICAgICByZXR1cm4gYXBpLmdldChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzL2RldGFpbHM/b2Zmc2V0PSR7b2Zmc2V0fSZsaW1pdD0ke2xpbWl0fSZzZWFyY2g9JHtzZWFyY2h9YCwgMikpXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzcG9uc2UuZGF0YS5vY3MuZGF0YS51c2VycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgnYXBwZW5kVXNlcnMnLCByZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHVzZXJzIHdpdGggZnVsbCBkZXRhaWxzIGZyb20gYSBncm91cGlkXG4gICAgICogXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7aW50fSBvcHRpb25zLm9mZnNldCBMaXN0IG9mZnNldCB0byByZXF1ZXN0XG4gICAgICogQHBhcmFtIHtpbnR9IG9wdGlvbnMubGltaXQgTGlzdCBudW1iZXIgdG8gcmV0dXJuIGZyb20gb2Zmc2V0XG4gICAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAgICovXG4gICAgZ2V0VXNlcnNGcm9tR3JvdXAoY29udGV4dCwgeyBncm91cGlkLCBvZmZzZXQsIGxpbWl0IH0pIHtcbiAgICAgICAgcmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke2dyb3VwaWR9L2RldGFpbHM/b2Zmc2V0PSR7b2Zmc2V0fSZsaW1pdD0ke2xpbWl0fWAsIDIpKVxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnZ2V0VXNlcnNGcm9tTGlzdCcsIHJlc3BvbnNlLmRhdGEub2NzLmRhdGEudXNlcnMpKVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcbiAgICB9LFxuICAgIFxuXG4gICAgZ2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgoY29udGV4dCkge1xuICAgICAgICByZXR1cm4gYXBpLmdldChPQy5saW5rVG9PQ1MoJ2FwcHMvcHJvdmlzaW9uaW5nX2FwaS9hcGkvdjEvY29uZmlnL2FwcHMvcGFzc3dvcmRfcG9saWN5L21pbkxlbmd0aCcsIDIpKVxuICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnc2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgnLCByZXNwb25zZS5kYXRhLm9jcy5kYXRhLmRhdGEpKVxuICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQWRkIGdyb3VwXG4gICAgICogXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZ2lkIEdyb3VwIGlkXG4gICAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAgICovXG4gICAgYWRkR3JvdXAoY29udGV4dCwgZ2lkKSB7XG4gICAgICAgIHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhcGkucG9zdChPQy5saW5rVG9PQ1MoYGNsb3VkL2dyb3Vwc2AsIDIpLCB7Z3JvdXBpZDogZ2lkfSlcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdhZGRHcm91cCcsIGdpZCkpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSBncm91cFxuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGdpZCBHcm91cCBpZFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIHJlbW92ZUdyb3VwKGNvbnRleHQsIGdpZCkge1xuICAgICAgICByZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXBpLnBvc3QoT0MubGlua1RvT0NTKGBjbG91ZC9ncm91cHNgLCAyKSwge2dyb3VwaWQ6IGdpZH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgncmVtb3ZlR3JvdXAnLCBnaWQpKVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIGVycm9yKSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBBZGQgdXNlciB0byBncm91cFxuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmdpZCBHcm91cCBpZFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIGFkZFVzZXJHcm91cChjb250ZXh0LCB7IHVzZXJpZCwgZ2lkIH0pIHtcbiAgICAgICAgcmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaS5wb3N0KE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnMvJHt1c2VyaWR9L2dyb3Vwc2AsIDIpLCB7IGdyb3VwaWQ6IGdpZCB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ2FkZFVzZXJHcm91cCcsIHsgdXNlcmlkLCBnaWQgfSkpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB1c2VyIGZyb20gZ3JvdXBcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudXNlcmlkIFVzZXIgaWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5naWQgR3JvdXAgaWRcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICAgKi9cbiAgICByZW1vdmVVc2VyR3JvdXAoY29udGV4dCwgeyB1c2VyaWQsIGdpZCB9KSB7XG4gICAgICAgIHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhcGkuZGVsZXRlKE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnMvJHt1c2VyaWR9L2dyb3Vwc2AsIDIpLCB7IGdyb3VwaWQ6IGdpZCB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ3JlbW92ZVVzZXJHcm91cCcsIHsgdXNlcmlkLCBnaWQgfSkpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFkZCB1c2VyIHRvIGdyb3VwIGFkbWluXG4gICAgICogXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVzZXJpZCBVc2VyIGlkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZ2lkIEdyb3VwIGlkXG4gICAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAgICovXG4gICAgYWRkVXNlclN1YkFkbWluKGNvbnRleHQsIHsgdXNlcmlkLCBnaWQgfSkge1xuICAgICAgICByZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXBpLnBvc3QoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH0vc3ViYWRtaW5zYCwgMiksICB7IGdyb3VwaWQ6IGdpZCB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ2FkZFVzZXJTdWJBZG1pbicsIHsgdXNlcmlkLCBnaWQgfSkpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlbW92ZSB1c2VyIGZyb20gZ3JvdXAgYWRtaW5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudXNlcmlkIFVzZXIgaWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5naWQgR3JvdXAgaWRcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICAgKi9cbiAgICByZW1vdmVVc2VyU3ViQWRtaW4oY29udGV4dCwgeyB1c2VyaWQsIGdpZCB9KSB7XG4gICAgICAgIHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhcGkuZGVsZXRlKE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnMvJHt1c2VyaWR9L3N1YmFkbWluc2AsIDIpLCB7IGdyb3VwaWQ6IGdpZCB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ3JlbW92ZVVzZXJTdWJBZG1pbicsIHsgdXNlcmlkLCBnaWQgfSkpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIERlbGV0ZSBhIHVzZXJcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyaWQgVXNlciBpZCBcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICAgKi9cbiAgICBkZWxldGVVc2VyKGNvbnRleHQsIHsgdXNlcmlkIH0pIHtcbiAgICAgICAgcmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaS5kZWxldGUoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH1gLCAyKSlcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdkZWxldGVVc2VyJywgdXNlcmlkKSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCB7IHVzZXJpZCwgZXJyb3IgfSkpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQWRkIGEgdXNlclxuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnBhc3N3b3JkIFVzZXIgcGFzc3dvcmQgXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZW1haWwgVXNlciBlbWFpbFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmdyb3VwcyBVc2VyIGdyb3Vwc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnN1YmFkbWluIFVzZXIgc3ViYWRtaW4gZ3JvdXBzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucXVvdGEgVXNlciBlbWFpbFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIGFkZFVzZXIoe2NvbnRleHQsIGRpc3BhdGNofSwgeyB1c2VyaWQsIHBhc3N3b3JkLCBlbWFpbCwgZ3JvdXBzLCBzdWJhZG1pbiwgcXVvdGEgfSkge1xuICAgICAgICBjb25zb2xlLmxvZyhzdWJhZG1pbiwgcXVvdGEpO1xuICAgICAgICByZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXBpLnBvc3QoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vyc2AsIDIpLCB7IHVzZXJpZCwgcGFzc3dvcmQsIGVtYWlsLCBncm91cHMsIHN1YmFkbWluLCBxdW90YSB9KVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gIHtcbiAgICAgICAgICAgICAgICAgICAgLy9sZXQgcXVvdGFEaXMgPSBkaXNwYXRjaCgnc2V0VXNlckRhdGEnLCB7IHVzZXJpZCwga2V5OiAncXVvdGEnLCB2YWx1ZTpxdW90YSB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy9sZXQgc3ViYWRtaW5EaXMgPSBkaXNwYXRjaCgnYWRkVXNlclN1YkFkbWluJywgdXNlcmlkKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgdXNlciBkYXRhIGFuZCBjb21taXQgYWRkaXRpb25cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1c2VyaWQgVXNlciBpZCBcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICAgKi9cbiAgICBhZGRVc2VyRGF0YShjb250ZXh0LCB1c2VyaWQpIHtcbiAgICAgICAgcmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH1gLCAyKSlcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdhZGRVc2VyRGF0YScsIHJlc3BvbnNlKSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCB7IHVzZXJpZCwgZXJyb3IgfSkpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqIEVuYWJsZSBvciBkaXNhYmxlIHVzZXIgXG4gICAgICogXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVzZXJpZCBVc2VyIGlkXG4gICAgICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmVuYWJsZWQgVXNlciBlbmFibGVtZW50IHN0YXR1c1xuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIGVuYWJsZURpc2FibGVVc2VyKGNvbnRleHQsIHsgdXNlcmlkLCBlbmFibGVkID0gdHJ1ZSB9KSB7XG4gICAgICAgIGxldCB1c2VyU3RhdHVzID0gZW5hYmxlZCA/ICdlbmFibGUnIDogJ2Rpc2FibGUnO1xuICAgICAgICByZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXBpLnB1dChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7dXNlcmlkfS8ke3VzZXJTdGF0dXN9YCwgMikpXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnZW5hYmxlRGlzYWJsZVVzZXInLCB7IHVzZXJpZCwgZW5hYmxlZCB9KSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCB7IHVzZXJpZCwgZXJyb3IgfSkpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRWRpdCB1c2VyIGRhdGFcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dCBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVzZXJpZCBVc2VyIGlkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMua2V5IFVzZXIgZmllbGQgdG8gZWRpdFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnZhbHVlIFZhbHVlIG9mIHRoZSBjaGFuZ2VcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICAgKi9cbiAgICBzZXRVc2VyRGF0YShjb250ZXh0LCB7IHVzZXJpZCwga2V5LCB2YWx1ZSB9KSB7XG4gICAgICAgIGlmIChbJ2VtYWlsJywgJ3F1b3RhJywgJ2Rpc3BsYXluYW1lJywgJ3Bhc3N3b3JkJ10uaW5kZXhPZihrZXkpICE9PSAtMSkge1xuICAgICAgICAgICAgLy8gV2UgYWxsb3cgZW1wdHkgZW1haWwgb3IgZGlzcGxheW5hbWVcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAoWydxdW90YScsICdwYXNzd29yZCddLmluZGV4T2Yoa2V5KSAhPT0gLTEgJiYgdmFsdWUubGVuZ3RoID4gMCkgfHxcbiAgICAgICAgICAgICAgICAgICAgWydlbWFpbCcsICdkaXNwbGF5bmFtZSddLmluZGV4T2Yoa2V5KSAhPT0gLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhcGkucHV0KE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnMvJHt1c2VyaWR9YCwgMiksIHsga2V5OiBrZXksIHZhbHVlOiB2YWx1ZSB9KVxuICAgICAgICAgICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnc2V0VXNlckRhdGEnLCB7IHVzZXJpZCwga2V5LCB2YWx1ZSB9KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignSW52YWxpZCByZXF1ZXN0IGRhdGEnKSk7XG4gICAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgeyBzdGF0ZSwgbXV0YXRpb25zLCBnZXR0ZXJzLCBhY3Rpb25zIH07XG5cblxuLy8gV0VCUEFDSyBGT09URVIgLy9cbi8vIC4vc3JjL3N0b3JlL3VzZXJzLmpzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///53\n");
+eval("/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__api__ = __webpack_require__(17);\n\n\nvar orderGroups = function orderGroups(groups, orderBy) {\n /* const SORT_USERCOUNT = 1;\n * const SORT_GROUPNAME = 2;\n * https://github.com/nextcloud/server/blob/208e38e84e1a07a49699aa90dc5b7272d24489f0/lib/private/Group/MetaData.php#L34\n */\n if (orderBy === 1) {\n return groups.sort(function (a, b) {\n return a.usercount < b.usercount;\n });\n } else {\n return groups.sort(function (a, b) {\n return a.name.localeCompare(b.name);\n });\n }\n};\n\nvar state = {\n users: [],\n groups: [],\n orderBy: 1,\n minPasswordLength: 0,\n usersOffset: 0,\n usersLimit: 25,\n userCount: 0\n};\n\nvar mutations = {\n appendUsers: function appendUsers(state, usersObj) {\n // convert obj to array\n var users = state.users.concat(Object.keys(usersObj).map(function (userid) {\n return usersObj[userid];\n }));\n state.usersOffset += state.usersLimit;\n state.users = users;\n },\n setPasswordPolicyMinLength: function setPasswordPolicyMinLength(state, length) {\n state.minPasswordLength = length !== '' ? length : 0;\n },\n initGroups: function initGroups(state, _ref) {\n var groups = _ref.groups,\n orderBy = _ref.orderBy,\n userCount = _ref.userCount;\n\n state.groups = groups;\n state.orderBy = orderBy;\n state.userCount = userCount;\n state.groups = orderGroups(state.groups, state.orderBy);\n },\n addGroup: function addGroup(state, groupid) {\n try {\n state.groups.push({\n id: groupid,\n name: groupid,\n usercount: 0 // user will be added after the creation\n });\n state.groups = orderGroups(state.groups, state.orderBy);\n } catch (e) {\n console.log('Can\\'t create group', e);\n }\n },\n addUserGroup: function addUserGroup(state, _ref2) {\n var userid = _ref2.userid,\n gid = _ref2.gid;\n\n // this should not be needed as it would means the user contains a group\n // the server database doesn't have.\n var group = state.groups.find(function (groupSearch) {\n return groupSearch.id == gid;\n });\n if (group) {\n group.usercount++; // increase count\n }\n var groups = state.users.find(function (user) {\n return user.id == userid;\n }).groups;\n groups.push(gid);\n state.groups = orderGroups(state.groups, state.orderBy);\n },\n removeUserGroup: function removeUserGroup(state, _ref3) {\n var userid = _ref3.userid,\n gid = _ref3.gid;\n\n // this should not be needed as it would means the user contains a group\n // the server database doesn't have.\n var group = state.groups.find(function (groupSearch) {\n return groupSearch.id == gid;\n });\n if (group) {\n group.usercount--; // lower count\n }\n var groups = state.users.find(function (user) {\n return user.id == userid;\n }).groups;\n groups.splice(groups.indexOf(gid), 1);\n state.groups = orderGroups(state.groups, state.orderBy);\n },\n addUserSubAdmin: function addUserSubAdmin(state, _ref4) {\n var userid = _ref4.userid,\n gid = _ref4.gid;\n\n var groups = state.users.find(function (user) {\n return user.id == userid;\n }).subadmin;\n groups.push(gid);\n },\n removeUserSubAdmin: function removeUserSubAdmin(state, _ref5) {\n var userid = _ref5.userid,\n gid = _ref5.gid;\n\n var groups = state.users.find(function (user) {\n return user.id == userid;\n }).subadmin;\n groups.splice(groups.indexOf(gid), 1);\n },\n deleteUser: function deleteUser(state, userid) {\n var userIndex = state.users.findIndex(function (user) {\n return user.id == userid;\n });\n state.users.splice(userIndex, 1);\n },\n addUserData: function addUserData(state, response) {\n state.users.push(response.data.ocs.data);\n },\n enableDisableUser: function enableDisableUser(state, _ref6) {\n var userid = _ref6.userid,\n enabled = _ref6.enabled;\n\n state.users.find(function (user) {\n return user.id == userid;\n }).enabled = enabled;\n // increment or not\n state.groups.find(function (group) {\n return group.id == '_disabled';\n }).usercount += enabled ? -1 : 1;\n state.userCount += enabled ? 1 : -1;\n console.log(enabled);\n },\n setUserData: function setUserData(state, _ref7) {\n var userid = _ref7.userid,\n key = _ref7.key,\n value = _ref7.value;\n\n if (key === 'quota') {\n var humanValue = OC.Util.computerFileSize(value);\n state.users.find(function (user) {\n return user.id == userid;\n })[key][key] = humanValue ? humanValue : value;\n } else {\n state.users.find(function (user) {\n return user.id == userid;\n })[key] = value;\n }\n },\n\n\n /**\n * Reset users list\n */\n resetUsers: function resetUsers(state) {\n state.users = [];\n state.usersOffset = 0;\n }\n};\n\nvar getters = {\n getUsers: function getUsers(state) {\n return state.users;\n },\n getGroups: function getGroups(state) {\n return state.groups;\n },\n getPasswordPolicyMinLength: function getPasswordPolicyMinLength(state) {\n return state.minPasswordLength;\n },\n getUsersOffset: function getUsersOffset(state) {\n return state.usersOffset;\n },\n getUsersLimit: function getUsersLimit(state) {\n return state.usersLimit;\n },\n getUserCount: function getUserCount(state) {\n return state.userCount;\n }\n};\n\nvar actions = {\n\n /**\n * Get all users with full details\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @param {string} options.search Search amongst users\n * @param {string} options.group Get users from group\n * @returns {Promise}\n */\n getUsers: function getUsers(context, _ref8) {\n var offset = _ref8.offset,\n limit = _ref8.limit,\n search = _ref8.search,\n group = _ref8.group;\n\n search = typeof search === 'string' ? search : '';\n group = typeof group === 'string' ? group : '';\n if (group !== '') {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/groups/' + group + '/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n if (Object.keys(response.data.ocs.data.users).length > 0) {\n context.commit('appendUsers', response.data.ocs.data.users);\n return true;\n }\n return false;\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n }\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n if (Object.keys(response.data.ocs.data.users).length > 0) {\n context.commit('appendUsers', response.data.ocs.data.users);\n return true;\n }\n return false;\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n },\n\n\n /**\n * Get all users with full details\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @returns {Promise}\n */\n getUsersFromList: function getUsersFromList(context, _ref9) {\n var offset = _ref9.offset,\n limit = _ref9.limit,\n search = _ref9.search;\n\n search = typeof search === 'string' ? search : '';\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/details?offset=' + offset + '&limit=' + limit + '&search=' + search, 2)).then(function (response) {\n if (Object.keys(response.data.ocs.data.users).length > 0) {\n context.commit('appendUsers', response.data.ocs.data.users);\n return true;\n }\n return false;\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n },\n\n\n /**\n * Get all users with full details from a groupid\n * \n * @param {Object} context\n * @param {Object} options\n * @param {int} options.offset List offset to request\n * @param {int} options.limit List number to return from offset\n * @returns {Promise}\n */\n getUsersFromGroup: function getUsersFromGroup(context, _ref10) {\n var groupid = _ref10.groupid,\n offset = _ref10.offset,\n limit = _ref10.limit;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/' + groupid + '/details?offset=' + offset + '&limit=' + limit, 2)).then(function (response) {\n return context.commit('getUsersFromList', response.data.ocs.data.users);\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n },\n getPasswordPolicyMinLength: function getPasswordPolicyMinLength(context) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('apps/provisioning_api/api/v1/config/apps/password_policy/minLength', 2)).then(function (response) {\n return context.commit('setPasswordPolicyMinLength', response.data.ocs.data.data);\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n },\n\n\n /**\n * Add group\n * \n * @param {Object} context\n * @param {string} gid Group id\n * @returns {Promise}\n */\n addGroup: function addGroup(context, gid) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/groups', 2), { groupid: gid }).then(function (response) {\n return context.commit('addGroup', gid);\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n });\n },\n\n\n /**\n * Remove group\n * \n * @param {Object} context\n * @param {string} gid Group id\n * @returns {Promise}\n */\n removeGroup: function removeGroup(context, gid) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/groups', 2), { groupid: gid }).then(function (response) {\n return context.commit('removeGroup', gid);\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n });\n },\n\n\n /**\n * Add user to group\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n addUserGroup: function addUserGroup(context, _ref11) {\n var userid = _ref11.userid,\n gid = _ref11.gid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users/' + userid + '/groups', 2), { groupid: gid }).then(function (response) {\n return context.commit('addUserGroup', { userid: userid, gid: gid });\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n });\n },\n\n\n /**\n * Remove user from group\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n removeUserGroup: function removeUserGroup(context, _ref12) {\n var userid = _ref12.userid,\n gid = _ref12.gid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid + '/groups', 2), { groupid: gid }).then(function (response) {\n return context.commit('removeUserGroup', { userid: userid, gid: gid });\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Add user to group admin\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n addUserSubAdmin: function addUserSubAdmin(context, _ref13) {\n var userid = _ref13.userid,\n gid = _ref13.gid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users/' + userid + '/subadmins', 2), { groupid: gid }).then(function (response) {\n return context.commit('addUserSubAdmin', { userid: userid, gid: gid });\n }).catch(function (error) {\n return context.commit('API_FAILURE', error);\n });\n });\n },\n\n\n /**\n * Remove user from group admin\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.gid Group id\n * @returns {Promise}\n */\n removeUserSubAdmin: function removeUserSubAdmin(context, _ref14) {\n var userid = _ref14.userid,\n gid = _ref14.gid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid + '/subadmins', 2), { groupid: gid }).then(function (response) {\n return context.commit('removeUserSubAdmin', { userid: userid, gid: gid });\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Delete a user\n * \n * @param {Object} context\n * @param {string} userid User id \n * @returns {Promise}\n */\n deleteUser: function deleteUser(context, _ref15) {\n var userid = _ref15.userid;\n\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].delete(OC.linkToOCS('cloud/users/' + userid, 2)).then(function (response) {\n return context.commit('deleteUser', userid);\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Add a user\n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.password User password \n * @param {string} options.email User email\n * @param {string} options.groups User groups\n * @param {string} options.subadmin User subadmin groups\n * @param {string} options.quota User email\n * @returns {Promise}\n */\n addUser: function addUser(_ref16, _ref17) {\n var context = _ref16.context,\n dispatch = _ref16.dispatch;\n var userid = _ref17.userid,\n password = _ref17.password,\n email = _ref17.email,\n groups = _ref17.groups,\n subadmin = _ref17.subadmin,\n quota = _ref17.quota;\n\n console.log(subadmin, quota);\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].post(OC.linkToOCS('cloud/users', 2), { userid: userid, password: password, email: email, groups: groups, subadmin: subadmin, quota: quota }).then(function (response) {\n //let quotaDis = dispatch('setUserData', { userid, key: 'quota', value:quota });\n //let subadminDis = dispatch('addUserSubAdmin', userid);\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Get user data and commit addition\n * \n * @param {Object} context\n * @param {string} userid User id \n * @returns {Promise}\n */\n addUserData: function addUserData(context, userid) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].get(OC.linkToOCS('cloud/users/' + userid, 2)).then(function (response) {\n return context.commit('addUserData', response);\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /** Enable or disable user \n * \n * @param {Object} context\n * @param {Object} options\n * @param {string} options.userid User id\n * @param {boolean} options.enabled User enablement status\n * @returns {Promise}\n */\n enableDisableUser: function enableDisableUser(context, _ref18) {\n var userid = _ref18.userid,\n _ref18$enabled = _ref18.enabled,\n enabled = _ref18$enabled === undefined ? true : _ref18$enabled;\n\n var userStatus = enabled ? 'enable' : 'disable';\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].put(OC.linkToOCS('cloud/users/' + userid + '/' + userStatus, 2)).then(function (response) {\n return context.commit('enableDisableUser', { userid: userid, enabled: enabled });\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n },\n\n\n /**\n * Edit user data\n * \n * @param {Object} context \n * @param {Object} options\n * @param {string} options.userid User id\n * @param {string} options.key User field to edit\n * @param {string} options.value Value of the change\n * @returns {Promise}\n */\n setUserData: function setUserData(context, _ref19) {\n var userid = _ref19.userid,\n key = _ref19.key,\n value = _ref19.value;\n\n var allowedEmpty = ['email', 'displayname'];\n if (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {\n // We allow empty email or displayname\n if (typeof value === 'string' && (allowedEmpty.indexOf(key) === -1 && value.length > 0 || allowedEmpty.indexOf(key) !== -1)) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].requireAdmin().then(function (response) {\n return __WEBPACK_IMPORTED_MODULE_0__api__[\"a\" /* default */].put(OC.linkToOCS('cloud/users/' + userid, 2), { key: key, value: value }).then(function (response) {\n return context.commit('setUserData', { userid: userid, key: key, value: value });\n }).catch(function (error) {\n return context.commit('API_FAILURE', { userid: userid, error: error });\n });\n });\n }\n }\n return Promise.reject(new Error('Invalid request data'));\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"a\"] = ({ state: state, mutations: mutations, getters: getters, actions: actions });\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zcmMvc3RvcmUvdXNlcnMuanM/MjhjMiJdLCJuYW1lcyI6WyJvcmRlckdyb3VwcyIsImdyb3VwcyIsIm9yZGVyQnkiLCJzb3J0IiwiYSIsImIiLCJ1c2VyY291bnQiLCJuYW1lIiwibG9jYWxlQ29tcGFyZSIsInN0YXRlIiwidXNlcnMiLCJtaW5QYXNzd29yZExlbmd0aCIsInVzZXJzT2Zmc2V0IiwidXNlcnNMaW1pdCIsInVzZXJDb3VudCIsIm11dGF0aW9ucyIsImFwcGVuZFVzZXJzIiwidXNlcnNPYmoiLCJjb25jYXQiLCJPYmplY3QiLCJrZXlzIiwibWFwIiwidXNlcmlkIiwic2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgiLCJsZW5ndGgiLCJpbml0R3JvdXBzIiwiYWRkR3JvdXAiLCJncm91cGlkIiwicHVzaCIsImlkIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJhZGRVc2VyR3JvdXAiLCJnaWQiLCJncm91cCIsImZpbmQiLCJncm91cFNlYXJjaCIsInVzZXIiLCJyZW1vdmVVc2VyR3JvdXAiLCJzcGxpY2UiLCJpbmRleE9mIiwiYWRkVXNlclN1YkFkbWluIiwic3ViYWRtaW4iLCJyZW1vdmVVc2VyU3ViQWRtaW4iLCJkZWxldGVVc2VyIiwidXNlckluZGV4IiwiZmluZEluZGV4IiwiYWRkVXNlckRhdGEiLCJyZXNwb25zZSIsImRhdGEiLCJvY3MiLCJlbmFibGVEaXNhYmxlVXNlciIsImVuYWJsZWQiLCJzZXRVc2VyRGF0YSIsImtleSIsInZhbHVlIiwiaHVtYW5WYWx1ZSIsIk9DIiwiVXRpbCIsImNvbXB1dGVyRmlsZVNpemUiLCJyZXNldFVzZXJzIiwiZ2V0dGVycyIsImdldFVzZXJzIiwiZ2V0R3JvdXBzIiwiZ2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgiLCJnZXRVc2Vyc09mZnNldCIsImdldFVzZXJzTGltaXQiLCJnZXRVc2VyQ291bnQiLCJhY3Rpb25zIiwiY29udGV4dCIsIm9mZnNldCIsImxpbWl0Iiwic2VhcmNoIiwiYXBpIiwiZ2V0IiwibGlua1RvT0NTIiwidGhlbiIsImNvbW1pdCIsImNhdGNoIiwiZXJyb3IiLCJnZXRVc2Vyc0Zyb21MaXN0IiwiZ2V0VXNlcnNGcm9tR3JvdXAiLCJyZXF1aXJlQWRtaW4iLCJwb3N0IiwicmVtb3ZlR3JvdXAiLCJkZWxldGUiLCJhZGRVc2VyIiwiZGlzcGF0Y2giLCJwYXNzd29yZCIsImVtYWlsIiwicXVvdGEiLCJ1c2VyU3RhdHVzIiwicHV0IiwiYWxsb3dlZEVtcHR5IiwiUHJvbWlzZSIsInJlamVjdCIsIkVycm9yIl0sIm1hcHBpbmdzIjoiO0FBQUE7O0FBRUEsSUFBTUEsY0FBYyxTQUFkQSxXQUFjLENBQVNDLE1BQVQsRUFBaUJDLE9BQWpCLEVBQTBCO0FBQzFDOzs7O0FBSUEsUUFBSUEsWUFBWSxDQUFoQixFQUFtQjtBQUNmLGVBQU9ELE9BQU9FLElBQVAsQ0FBWSxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxtQkFBVUQsRUFBRUUsU0FBRixHQUFjRCxFQUFFQyxTQUExQjtBQUFBLFNBQVosQ0FBUDtBQUNILEtBRkQsTUFFTztBQUNILGVBQU9MLE9BQU9FLElBQVAsQ0FBWSxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxtQkFBVUQsRUFBRUcsSUFBRixDQUFPQyxhQUFQLENBQXFCSCxFQUFFRSxJQUF2QixDQUFWO0FBQUEsU0FBWixDQUFQO0FBQ0g7QUFDSixDQVZEOztBQVlBLElBQU1FLFFBQVE7QUFDVkMsV0FBTyxFQURHO0FBRVZULFlBQVEsRUFGRTtBQUdWQyxhQUFTLENBSEM7QUFJVlMsdUJBQW1CLENBSlQ7QUFLVkMsaUJBQWEsQ0FMSDtBQU1WQyxnQkFBWSxFQU5GO0FBT1ZDLGVBQVc7QUFQRCxDQUFkOztBQVVBLElBQU1DLFlBQVk7QUFDZEMsZUFEYyx1QkFDRlAsS0FERSxFQUNLUSxRQURMLEVBQ2U7QUFDekI7QUFDQSxZQUFJUCxRQUFRRCxNQUFNQyxLQUFOLENBQVlRLE1BQVosQ0FBbUJDLE9BQU9DLElBQVAsQ0FBWUgsUUFBWixFQUFzQkksR0FB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akIsS0FFS3NDLGFBQWFyRCxPQUFiLENBQXFCYyxHQUFyQixNQUE4QixDQUFDLENBQS9CLElBQW9DQyxNQUFNaEMsTUFBTixHQUFlLENBQXBELElBQ0FzRSxhQUFhckQsT0FBYixDQUFxQmMsR0FBckIsTUFBOEIsQ0FBQyxDQUhuQyxDQUFKLEVBS0U7QUFDRSx1QkFBTyxxREFBQW1CLENBQUlTLFlBQUosR0FBbUJOLElBQW5CLENBQXdCLFVBQUM1QixRQUFELEVBQWM7QUFDekMsMkJBQU8scURBQUF5QixDQUFJbUIsR0FBSixDQUFRbkMsR0FBR2tCLFNBQUgsa0JBQTRCdEQsTUFBNUIsRUFBc0MsQ0FBdEMsQ0FBUixFQUFrRCxFQUFFaUMsS0FBS0EsR0FBUCxFQUFZQyxPQUFPQSxLQUFuQixFQUFsRCxFQUNGcUIsSUFERSxDQUNHLFVBQUM1QixRQUFEO0FBQUEsK0JBQWNxQixRQUFRUSxNQUFSLENBQWUsYUFBZixFQUE4QixFQUFFeEQsY0FBRixFQUFVaUMsUUFBVixFQUFlQyxZQUFmLEVBQTlCLENBQWQ7QUFBQSxxQkFESCxFQUVGdUIsS0FGRSxDQUVJLFVBQUNDLEtBQUQ7QUFBQSwrQkFBV1YsUUFBUVEsTUFBUixDQUFlLGFBQWYsRUFBOEIsRUFBRXhELGNBQUYsRUFBVTBELFlBQVYsRUFBOUIsQ0FBWDtBQUFBLHFCQUZKLENBQVA7QUFHSCxpQkFKTSxDQUFQO0FBS0g7QUFDSjtBQUNELGVBQU9lLFFBQVFDLE1BQVIsQ0FBZSxJQUFJQyxLQUFKLENBQVUsc0JBQVYsQ0FBZixDQUFQO0FBQ0g7QUF6UlcsQ0FBaEI7O0FBNFJBLHlEQUFlLEVBQUV4RixZQUFGLEVBQVNNLG9CQUFULEVBQW9CK0MsZ0JBQXBCLEVBQTZCTyxnQkFBN0IsRUFBZiIsImZpbGUiOiI1My5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhcGkgZnJvbSAnLi9hcGknO1xuXG5jb25zdCBvcmRlckdyb3VwcyA9IGZ1bmN0aW9uKGdyb3Vwcywgb3JkZXJCeSkge1xuICAgIC8qIGNvbnN0IFNPUlRfVVNFUkNPVU5UID0gMTtcbiAgICAgKiBjb25zdCBTT1JUX0dST1VQTkFNRSA9IDI7XG4gICAgICogaHR0cHM6Ly9naXRodWIuY29tL25leHRjbG91ZC9zZXJ2ZXIvYmxvYi8yMDhlMzhlODRlMWEwN2E0OTY5OWFhOTBkYzViNzI3MmQyNDQ4OWYwL2xpYi9wcml2YXRlL0dyb3VwL01ldGFEYXRhLnBocCNMMzRcbiAgICAgKi9cbiAgICBpZiAob3JkZXJCeSA9PT0gMSkge1xuICAgICAgICByZXR1cm4gZ3JvdXBzLnNvcnQoKGEsIGIpID0+IGEudXNlcmNvdW50IDwgYi51c2VyY291bnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBncm91cHMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG4gICAgfVxufVxuXG5jb25zdCBzdGF0ZSA9IHtcbiAgICB1c2VyczogW10sXG4gICAgZ3JvdXBzOiBbXSxcbiAgICBvcmRlckJ5OiAxLFxuICAgIG1pblBhc3N3b3JkTGVuZ3RoOiAwLFxuICAgIHVzZXJzT2Zmc2V0OiAwLFxuICAgIHVzZXJzTGltaXQ6IDI1LFxuICAgIHVzZXJDb3VudDogMFxufTtcblxuY29uc3QgbXV0YXRpb25zID0ge1xuICAgIGFwcGVuZFVzZXJzKHN0YXRlLCB1c2Vyc09iaikge1xuICAgICAgICAvLyBjb252ZXJ0IG9iaiB0byBhcnJheVxuICAgICAgICBsZXQgdXNlcnMgPSBzdGF0ZS51c2Vycy5jb25jYXQoT2JqZWN0LmtleXModXNlcnNPYmopLm1hcCh1c2VyaWQgPT4gdXNlcnNPYmpbdXNlcmlkXSkpO1xuICAgICAgICBzdGF0ZS51c2Vyc09mZnNldCArPSBzdGF0ZS51c2Vyc0xpbWl0O1xuICAgICAgICBzdGF0ZS51c2VycyA9IHVzZXJzO1xuICAgIH0sXG4gICAgc2V0UGFzc3dvcmRQb2xpY3lNaW5MZW5ndGgoc3RhdGUsIGxlbmd0aCkge1xuICAgICAgICBzdGF0ZS5taW5QYXNzd29yZExlbmd0aCA9IGxlbmd0aCE9PScnID8gbGVuZ3RoIDogMDtcbiAgICB9LFxuICAgIGluaXRHcm91cHMoc3RhdGUsIHtncm91cHMsIG9yZGVyQnksIHVzZXJDb3VudH0pIHtcbiAgICAgICAgc3RhdGUuZ3JvdXBzID0gZ3JvdXBzO1xuICAgICAgICBzdGF0ZS5vcmRlckJ5ID0gb3JkZXJCeTtcbiAgICAgICAgc3RhdGUudXNlckNvdW50ID0gdXNlckNvdW50O1xuICAgICAgICBzdGF0ZS5ncm91cHMgPSBvcmRlckdyb3VwcyhzdGF0ZS5ncm91cHMsIHN0YXRlLm9yZGVyQnkpO1xuICAgIH0sXG4gICAgYWRkR3JvdXAoc3RhdGUsIGdyb3VwaWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHN0YXRlLmdyb3Vwcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBpZDogZ3JvdXBpZCxcbiAgICAgICAgICAgICAgICBuYW1lOiBncm91cGlkLFxuICAgICAgICAgICAgICAgIHVzZXJjb3VudDogMCAvLyB1c2VyIHdpbGwgYmUgYWRkZWQgYWZ0ZXIgdGhlIGNyZWF0aW9uXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHN0YXRlLmdyb3VwcyA9IG9yZGVyR3JvdXBzKHN0YXRlLmdyb3Vwcywgc3RhdGUub3JkZXJCeSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDYW5cXCd0IGNyZWF0ZSBncm91cCcsIGUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhZGRVc2VyR3JvdXAoc3RhdGUsIHsgdXNlcmlkLCBnaWQgfSkge1xuICAgICAgICAvLyB0aGlzIHNob3VsZCBub3QgYmUgbmVlZGVkIGFzIGl0IHdvdWxkIG1lYW5zIHRoZSB1c2VyIGNvbnRhaW5zIGEgZ3JvdXBcbiAgICAgICAgLy8gdGhlIHNlcnZlciBkYXRhYmFzZSBkb2Vzbid0IGhhdmUuXG4gICAgICAgIGxldCBncm91cCA9IHN0YXRlLmdyb3Vwcy5maW5kKGdyb3VwU2VhcmNoID0+IGdyb3VwU2VhcmNoLmlkID09IGdpZCk7XG4gICAgICAgIGlmIChncm91cCkge1xuICAgICAgICAgICAgZ3JvdXAudXNlcmNvdW50Kys7IC8vIGluY3JlYXNlIGNvdW50XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGdyb3VwcyA9IHN0YXRlLnVzZXJzLmZpbmQodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZCkuZ3JvdXBzO1xuICAgICAgICBncm91cHMucHVzaChnaWQpO1xuICAgICAgICBzdGF0ZS5ncm91cHMgPSBvcmRlckdyb3VwcyhzdGF0ZS5ncm91cHMsIHN0YXRlLm9yZGVyQnkpO1xuICAgIH0sXG4gICAgcmVtb3ZlVXNlckdyb3VwKHN0YXRlLCB7IHVzZXJpZCwgZ2lkIH0pIHtcbiAgICAgICAgLy8gdGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZCBhcyBpdCB3b3VsZCBtZWFucyB0aGUgdXNlciBjb250YWlucyBhIGdyb3VwXG4gICAgICAgIC8vIHRoZSBzZXJ2ZXIgZGF0YWJhc2UgZG9lc24ndCBoYXZlLlxuICAgICAgICBsZXQgZ3JvdXAgPSBzdGF0ZS5ncm91cHMuZmluZChncm91cFNlYXJjaCA9PiBncm91cFNlYXJjaC5pZCA9PSBnaWQpO1xuICAgICAgICBpZiAoZ3JvdXApIHtcbiAgICAgICAgICAgIGdyb3VwLnVzZXJjb3VudC0tOyAvLyBsb3dlciBjb3VudFxuICAgICAgICB9XG4gICAgICAgIGxldCBncm91cHMgPSBzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpLmdyb3VwcztcbiAgICAgICAgZ3JvdXBzLnNwbGljZShncm91cHMuaW5kZXhPZihnaWQpLDEpO1xuICAgICAgICBzdGF0ZS5ncm91cHMgPSBvcmRlckdyb3VwcyhzdGF0ZS5ncm91cHMsIHN0YXRlLm9yZGVyQnkpO1xuICAgIH0sXG4gICAgYWRkVXNlclN1YkFkbWluKHN0YXRlLCB7IHVzZXJpZCwgZ2lkIH0pIHtcbiAgICAgICAgbGV0IGdyb3VwcyA9IHN0YXRlLnVzZXJzLmZpbmQodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZCkuc3ViYWRtaW47XG4gICAgICAgIGdyb3Vwcy5wdXNoKGdpZCk7XG4gICAgfSxcbiAgICByZW1vdmVVc2VyU3ViQWRtaW4oc3RhdGUsIHsgdXNlcmlkLCBnaWQgfSkge1xuICAgICAgICBsZXQgZ3JvdXBzID0gc3RhdGUudXNlcnMuZmluZCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKS5zdWJhZG1pbjtcbiAgICAgICAgZ3JvdXBzLnNwbGljZShncm91cHMuaW5kZXhPZihnaWQpLDEpO1xuICAgIH0sXG4gICAgZGVsZXRlVXNlcihzdGF0ZSwgdXNlcmlkKSB7XG4gICAgICAgIGxldCB1c2VySW5kZXggPSBzdGF0ZS51c2Vycy5maW5kSW5kZXgodXNlciA9PiB1c2VyLmlkID09IHVzZXJpZCk7XG4gICAgICAgIHN0YXRlLnVzZXJzLnNwbGljZSh1c2VySW5kZXgsIDEpO1xuICAgIH0sXG4gICAgYWRkVXNlckRhdGEoc3RhdGUsIHJlc3BvbnNlKSB7XG4gICAgICAgIHN0YXRlLnVzZXJzLnB1c2gocmVzcG9uc2UuZGF0YS5vY3MuZGF0YSk7XG4gICAgfSxcbiAgICBlbmFibGVEaXNhYmxlVXNlcihzdGF0ZSwgeyB1c2VyaWQsIGVuYWJsZWQgfSkge1xuICAgICAgICBzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpLmVuYWJsZWQgPSBlbmFibGVkO1xuICAgICAgICAvLyBpbmNyZW1lbnQgb3Igbm90XG4gICAgICAgIHN0YXRlLmdyb3Vwcy5maW5kKGdyb3VwID0+IGdyb3VwLmlkID09ICdfZGlzYWJsZWQnKS51c2VyY291bnQgKz0gZW5hYmxlZCA/IC0xIDogMTtcbiAgICAgICAgc3RhdGUudXNlckNvdW50ICs9IGVuYWJsZWQgPyAxIDogLTE7XG4gICAgICAgIGNvbnNvbGUubG9nKGVuYWJsZWQpO1xuICAgIH0sXG4gICAgc2V0VXNlckRhdGEoc3RhdGUsIHsgdXNlcmlkLCBrZXksIHZhbHVlIH0pIHtcbiAgICAgICAgaWYgKGtleSA9PT0gJ3F1b3RhJykge1xuICAgICAgICAgICAgbGV0IGh1bWFuVmFsdWUgPSBPQy5VdGlsLmNvbXB1dGVyRmlsZVNpemUodmFsdWUpO1xuICAgICAgICAgICAgc3RhdGUudXNlcnMuZmluZCh1c2VyID0+IHVzZXIuaWQgPT0gdXNlcmlkKVtrZXldW2tleV0gPSBodW1hblZhbHVlP2h1bWFuVmFsdWU6dmFsdWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdGF0ZS51c2Vycy5maW5kKHVzZXIgPT4gdXNlci5pZCA9PSB1c2VyaWQpW2tleV0gPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZXNldCB1c2VycyBsaXN0XG4gICAgICovXG4gICAgcmVzZXRVc2VycyhzdGF0ZSkge1xuICAgICAgICBzdGF0ZS51c2VycyA9IFtdO1xuICAgICAgICBzdGF0ZS51c2Vyc09mZnNldCA9IDA7XG4gICAgfVxufTtcblxuY29uc3QgZ2V0dGVycyA9IHtcbiAgICBnZXRVc2VycyhzdGF0ZSkge1xuICAgICAgICByZXR1cm4gc3RhdGUudXNlcnM7XG4gICAgfSxcbiAgICBnZXRHcm91cHMoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLmdyb3VwcztcbiAgICB9LFxuICAgIGdldFBhc3N3b3JkUG9saWN5TWluTGVuZ3RoKHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5taW5QYXNzd29yZExlbmd0aDtcbiAgICB9LFxuICAgIGdldFVzZXJzT2Zmc2V0KHN0YXRlKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS51c2Vyc09mZnNldDtcbiAgICB9LFxuICAgIGdldFVzZXJzTGltaXQoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLnVzZXJzTGltaXQ7XG4gICAgfSxcbiAgICBnZXRVc2VyQ291bnQoc3RhdGUpIHtcbiAgICAgICAgcmV0dXJuIHN0YXRlLnVzZXJDb3VudDtcbiAgICB9XG59O1xuXG5jb25zdCBhY3Rpb25zID0ge1xuXG4gICAgLyoqXG4gICAgICogR2V0IGFsbCB1c2VycyB3aXRoIGZ1bGwgZGV0YWlsc1xuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge2ludH0gb3B0aW9ucy5vZmZzZXQgTGlzdCBvZmZzZXQgdG8gcmVxdWVzdFxuICAgICAqIEBwYXJhbSB7aW50fSBvcHRpb25zLmxpbWl0IExpc3QgbnVtYmVyIHRvIHJldHVybiBmcm9tIG9mZnNldFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnNlYXJjaCBTZWFyY2ggYW1vbmdzdCB1c2Vyc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmdyb3VwIEdldCB1c2VycyBmcm9tIGdyb3VwXG4gICAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAgICovXG4gICAgZ2V0VXNlcnMoY29udGV4dCwgeyBvZmZzZXQsIGxpbWl0LCBzZWFyY2gsIGdyb3VwIH0pIHtcbiAgICAgICAgc2VhcmNoID0gdHlwZW9mIHNlYXJjaCA9PT0gJ3N0cmluZycgPyBzZWFyY2ggOiAnJztcbiAgICAgICAgZ3JvdXAgPSB0eXBlb2YgZ3JvdXAgPT09ICdzdHJpbmcnID8gZ3JvdXAgOiAnJztcbiAgICAgICAgaWYgKGdyb3VwICE9PSAnJykge1xuICAgICAgICAgICAgcmV0dXJuIGFwaS5nZXQoT0MubGlua1RvT0NTKGBjbG91ZC9ncm91cHMvJHtncm91cH0vdXNlcnMvZGV0YWlscz9vZmZzZXQ9JHtvZmZzZXR9JmxpbWl0PSR7bGltaXR9JnNlYXJjaD0ke3NlYXJjaH1gLCAyKSlcbiAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhyZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCdhcHBlbmRVc2VycycsIHJlc3BvbnNlLmRhdGEub2NzLmRhdGEudXNlcnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIGVycm9yKSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXBpLmdldChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzL2RldGFpbHM/b2Zmc2V0PSR7b2Zmc2V0fSZsaW1pdD0ke2xpbWl0fSZzZWFyY2g9JHtzZWFyY2h9YCwgMikpXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXMocmVzcG9uc2UuZGF0YS5vY3MuZGF0YS51c2VycykubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmNvbW1pdCgnYXBwZW5kVXNlcnMnLCByZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBHZXQgYWxsIHVzZXJzIHdpdGggZnVsbCBkZXRhaWxzXG4gICAgICogXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7aW50fSBvcHRpb25zLm9mZnNldCBMaXN0IG9mZnNldCB0byByZXF1ZXN0XG4gICAgICogQHBhcmFtIHtpbnR9IG9wdGlvbnMubGltaXQgTGlzdCBudW1iZXIgdG8gcmV0dXJuIGZyb20gb2Zmc2V0XG4gICAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAgICovXG4gICAgZ2V0VXNlcnNGcm9tTGlzdChjb250ZXh0LCB7IG9mZnNldCwgbGltaXQsIHNlYXJjaCB9KSB7XG4gICAgICAgIHNlYXJjaCA9IHR5cGVvZiBzZWFyY2ggPT09ICdzdHJpbmcnID8gc2VhcmNoIDogJyc7XG4gICAgICAgIHJldHVybiBhcGkuZ2V0KE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnMvZGV0YWlscz9vZmZzZXQ9JHtvZmZzZXR9JmxpbWl0PSR7bGltaXR9JnNlYXJjaD0ke3NlYXJjaH1gLCAyKSlcbiAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyhyZXNwb25zZS5kYXRhLm9jcy5kYXRhLnVzZXJzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRleHQuY29tbWl0KCdhcHBlbmRVc2VycycsIHJlc3BvbnNlLmRhdGEub2NzLmRhdGEudXNlcnMpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIGVycm9yKSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldCBhbGwgdXNlcnMgd2l0aCBmdWxsIGRldGFpbHMgZnJvbSBhIGdyb3VwaWRcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtpbnR9IG9wdGlvbnMub2Zmc2V0IExpc3Qgb2Zmc2V0IHRvIHJlcXVlc3RcbiAgICAgKiBAcGFyYW0ge2ludH0gb3B0aW9ucy5saW1pdCBMaXN0IG51bWJlciB0byByZXR1cm4gZnJvbSBvZmZzZXRcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICAgKi9cbiAgICBnZXRVc2Vyc0Zyb21Hcm91cChjb250ZXh0LCB7IGdyb3VwaWQsIG9mZnNldCwgbGltaXQgfSkge1xuICAgICAgICByZXR1cm4gYXBpLmdldChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7Z3JvdXBpZH0vZGV0YWlscz9vZmZzZXQ9JHtvZmZzZXR9JmxpbWl0PSR7bGltaXR9YCwgMikpXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdnZXRVc2Vyc0Zyb21MaXN0JywgcmVzcG9uc2UuZGF0YS5vY3MuZGF0YS51c2VycykpXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuICAgIH0sXG4gICAgXG5cbiAgICBnZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aChjb250ZXh0KSB7XG4gICAgICAgIHJldHVybiBhcGkuZ2V0KE9DLmxpbmtUb09DUygnYXBwcy9wcm92aXNpb25pbmdfYXBpL2FwaS92MS9jb25maWcvYXBwcy9wYXNzd29yZF9wb2xpY3kvbWluTGVuZ3RoJywgMikpXG4gICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdzZXRQYXNzd29yZFBvbGljeU1pbkxlbmd0aCcsIHJlc3BvbnNlLmRhdGEub2NzLmRhdGEuZGF0YSkpXG4gICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBBZGQgZ3JvdXBcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBnaWQgR3JvdXAgaWRcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICAgKi9cbiAgICBhZGRHcm91cChjb250ZXh0LCBnaWQpIHtcbiAgICAgICAgcmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaS5wb3N0KE9DLmxpbmtUb09DUyhgY2xvdWQvZ3JvdXBzYCwgMiksIHtncm91cGlkOiBnaWR9KVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ2FkZEdyb3VwJywgZ2lkKSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIGdyb3VwXG4gICAgICogXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZ2lkIEdyb3VwIGlkXG4gICAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAgICovXG4gICAgcmVtb3ZlR3JvdXAoY29udGV4dCwgZ2lkKSB7XG4gICAgICAgIHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhcGkucG9zdChPQy5saW5rVG9PQ1MoYGNsb3VkL2dyb3Vwc2AsIDIpLCB7Z3JvdXBpZDogZ2lkfSlcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdyZW1vdmVHcm91cCcsIGdpZCkpXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgZXJyb3IpKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEFkZCB1c2VyIHRvIGdyb3VwXG4gICAgICogXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVzZXJpZCBVc2VyIGlkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZ2lkIEdyb3VwIGlkXG4gICAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAgICovXG4gICAgYWRkVXNlckdyb3VwKGNvbnRleHQsIHsgdXNlcmlkLCBnaWQgfSkge1xuICAgICAgICByZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXBpLnBvc3QoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH0vZ3JvdXBzYCwgMiksIHsgZ3JvdXBpZDogZ2lkIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnYWRkVXNlckdyb3VwJywgeyB1c2VyaWQsIGdpZCB9KSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHVzZXIgZnJvbSBncm91cFxuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmdpZCBHcm91cCBpZFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIHJlbW92ZVVzZXJHcm91cChjb250ZXh0LCB7IHVzZXJpZCwgZ2lkIH0pIHtcbiAgICAgICAgcmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaS5kZWxldGUoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH0vZ3JvdXBzYCwgMiksIHsgZ3JvdXBpZDogZ2lkIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgncmVtb3ZlVXNlckdyb3VwJywgeyB1c2VyaWQsIGdpZCB9KSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCB7IHVzZXJpZCwgZXJyb3IgfSkpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQWRkIHVzZXIgdG8gZ3JvdXAgYWRtaW5cbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudXNlcmlkIFVzZXIgaWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5naWQgR3JvdXAgaWRcbiAgICAgKiBAcmV0dXJucyB7UHJvbWlzZX1cbiAgICAgKi9cbiAgICBhZGRVc2VyU3ViQWRtaW4oY29udGV4dCwgeyB1c2VyaWQsIGdpZCB9KSB7XG4gICAgICAgIHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhcGkucG9zdChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7dXNlcmlkfS9zdWJhZG1pbnNgLCAyKSwgIHsgZ3JvdXBpZDogZ2lkIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgnYWRkVXNlclN1YkFkbWluJywgeyB1c2VyaWQsIGdpZCB9KSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCBlcnJvcikpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlIHVzZXIgZnJvbSBncm91cCBhZG1pblxuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy51c2VyaWQgVXNlciBpZFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLmdpZCBHcm91cCBpZFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIHJlbW92ZVVzZXJTdWJBZG1pbihjb250ZXh0LCB7IHVzZXJpZCwgZ2lkIH0pIHtcbiAgICAgICAgcmV0dXJuIGFwaS5yZXF1aXJlQWRtaW4oKS50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIGFwaS5kZWxldGUoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH0vc3ViYWRtaW5zYCwgMiksIHsgZ3JvdXBpZDogZ2lkIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiBjb250ZXh0LmNvbW1pdCgncmVtb3ZlVXNlclN1YkFkbWluJywgeyB1c2VyaWQsIGdpZCB9KSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiBjb250ZXh0LmNvbW1pdCgnQVBJX0ZBSUxVUkUnLCB7IHVzZXJpZCwgZXJyb3IgfSkpO1xuICAgICAgICB9KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRGVsZXRlIGEgdXNlclxuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJpZCBVc2VyIGlkIFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIGRlbGV0ZVVzZXIoY29udGV4dCwgeyB1c2VyaWQgfSkge1xuICAgICAgICByZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXBpLmRlbGV0ZShPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7dXNlcmlkfWAsIDIpKVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ2RlbGV0ZVVzZXInLCB1c2VyaWQpKVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBBZGQgYSB1c2VyXG4gICAgICogXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGNvbnRleHRcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9uc1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLnVzZXJpZCBVc2VyIGlkXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMucGFzc3dvcmQgVXNlciBwYXNzd29yZCBcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5lbWFpbCBVc2VyIGVtYWlsXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuZ3JvdXBzIFVzZXIgZ3JvdXBzXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMuc3ViYWRtaW4gVXNlciBzdWJhZG1pbiBncm91cHNcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5xdW90YSBVc2VyIGVtYWlsXG4gICAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAgICovXG4gICAgYWRkVXNlcih7Y29udGV4dCwgZGlzcGF0Y2h9LCB7IHVzZXJpZCwgcGFzc3dvcmQsIGVtYWlsLCBncm91cHMsIHN1YmFkbWluLCBxdW90YSB9KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKHN1YmFkbWluLCBxdW90YSk7XG4gICAgICAgIHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhcGkucG9zdChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzYCwgMiksIHsgdXNlcmlkLCBwYXNzd29yZCwgZW1haWwsIGdyb3Vwcywgc3ViYWRtaW4sIHF1b3RhIH0pXG4gICAgICAgICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiAge1xuICAgICAgICAgICAgICAgICAgICAvL2xldCBxdW90YURpcyA9IGRpc3BhdGNoKCdzZXRVc2VyRGF0YScsIHsgdXNlcmlkLCBrZXk6ICdxdW90YScsIHZhbHVlOnF1b3RhIH0pO1xuICAgICAgICAgICAgICAgICAgICAvL2xldCBzdWJhZG1pbkRpcyA9IGRpc3BhdGNoKCdhZGRVc2VyU3ViQWRtaW4nLCB1c2VyaWQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdldCB1c2VyIGRhdGEgYW5kIGNvbW1pdCBhZGRpdGlvblxuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHVzZXJpZCBVc2VyIGlkIFxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIGFkZFVzZXJEYXRhKGNvbnRleHQsIHVzZXJpZCkge1xuICAgICAgICByZXR1cm4gYXBpLnJlcXVpcmVBZG1pbigpLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gYXBpLmdldChPQy5saW5rVG9PQ1MoYGNsb3VkL3VzZXJzLyR7dXNlcmlkfWAsIDIpKVxuICAgICAgICAgICAgICAgIC50aGVuKChyZXNwb25zZSkgPT4gY29udGV4dC5jb21taXQoJ2FkZFVzZXJEYXRhJywgcmVzcG9uc2UpKVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKiogRW5hYmxlIG9yIGRpc2FibGUgdXNlciBcbiAgICAgKiBcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gY29udGV4dFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudXNlcmlkIFVzZXIgaWRcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuZW5hYmxlZCBVc2VyIGVuYWJsZW1lbnQgc3RhdHVzXG4gICAgICogQHJldHVybnMge1Byb21pc2V9XG4gICAgICovXG4gICAgZW5hYmxlRGlzYWJsZVVzZXIoY29udGV4dCwgeyB1c2VyaWQsIGVuYWJsZWQgPSB0cnVlIH0pIHtcbiAgICAgICAgbGV0IHVzZXJTdGF0dXMgPSBlbmFibGVkID8gJ2VuYWJsZScgOiAnZGlzYWJsZSc7XG4gICAgICAgIHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBhcGkucHV0KE9DLmxpbmtUb09DUyhgY2xvdWQvdXNlcnMvJHt1c2VyaWR9LyR7dXNlclN0YXR1c31gLCAyKSlcbiAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdlbmFibGVEaXNhYmxlVXNlcicsIHsgdXNlcmlkLCBlbmFibGVkIH0pKVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IGNvbnRleHQuY29tbWl0KCdBUElfRkFJTFVSRScsIHsgdXNlcmlkLCBlcnJvciB9KSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBFZGl0IHVzZXIgZGF0YVxuICAgICAqIFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBjb250ZXh0IFxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudXNlcmlkIFVzZXIgaWRcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy5rZXkgVXNlciBmaWVsZCB0byBlZGl0XG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudmFsdWUgVmFsdWUgb2YgdGhlIGNoYW5nZVxuICAgICAqIEByZXR1cm5zIHtQcm9taXNlfVxuICAgICAqL1xuICAgIHNldFVzZXJEYXRhKGNvbnRleHQsIHsgdXNlcmlkLCBrZXksIHZhbHVlIH0pIHtcbiAgICAgICAgbGV0IGFsbG93ZWRFbXB0eSA9IFsnZW1haWwnLCAnZGlzcGxheW5hbWUnXTtcbiAgICAgICAgaWYgKFsnZW1haWwnLCAnbGFuZ3VhZ2UnLCAncXVvdGEnLCAnZGlzcGxheW5hbWUnLCAncGFzc3dvcmQnXS5pbmRleE9mKGtleSkgIT09IC0xKSB7XG4gICAgICAgICAgICAvLyBXZSBhbGxvdyBlbXB0eSBlbWFpbCBvciBkaXNwbGF5bmFtZVxuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIChhbGxvd2VkRW1wdHkuaW5kZXhPZihrZXkpID09PSAtMSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB8fFxuICAgICAgICAgICAgICAgICAgICBhbGxvd2VkRW1wdHkuaW5kZXhPZihrZXkpICE9PSAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhcGkucmVxdWlyZUFkbWluKCkudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaS5wdXQoT0MubGlua1RvT0NTKGBjbG91ZC91c2Vycy8ke3VzZXJpZH1gLCAyKSwgeyBrZXk6IGtleSwgdmFsdWU6IHZhbHVlIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IGNvbnRleHQuY29tbWl0KCdzZXRVc2VyRGF0YScsIHsgdXNlcmlkLCBrZXksIHZhbHVlIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmNhdGNoKChlcnJvcikgPT4gY29udGV4dC5jb21taXQoJ0FQSV9GQUlMVVJFJywgeyB1c2VyaWQsIGVycm9yIH0pKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdJbnZhbGlkIHJlcXVlc3QgZGF0YScpKTtcbiAgICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCB7IHN0YXRlLCBtdXRhdGlvbnMsIGdldHRlcnMsIGFjdGlvbnMgfTtcblxuXG4vLyBXRUJQQUNLIEZPT1RFUiAvL1xuLy8gLi9zcmMvc3RvcmUvdXNlcnMuanMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///53\n");
/***/ }),
/* 54 */
diff --git a/settings/package.json b/settings/package.json
index 4e01635a0c2..15a2d922b19 100644
--- a/settings/package.json
+++ b/settings/package.json
@@ -16,7 +16,7 @@
"vue-click-outside": "^1.0.7",
"vue-infinite-loading": "^2.2.3",
"vue-localstorage": "^0.6.2",
- "vue-multiselect": "^2.1",
+ "vue-multiselect": "^2.1.0",
"vue-router": "^3.0.1",
"vuex": "^3.0.1",
"vuex-router-sync": "^5.0.0"
diff --git a/settings/src/components/userList.vue b/settings/src/components/userList.vue
index 7f1ecba59b8..8069388d179 100644
--- a/settings/src/components/userList.vue
+++ b/settings/src/components/userList.vue
@@ -10,6 +10,8 @@
<div id="headerSubAdmins" class="subadmins"
v-if="subAdminsGroups.length>0">{{ t('settings', 'Group admin for') }}</div>
<div id="headerQuota" class="quota">{{ t('settings', 'Quota') }}</div>
+ <div id="headerLanguages" class="languages"
+ v-if="showConfig.showLanguages">{{ t('settings', 'Languages') }}</div>
<div class="headerStorageLocation storageLocation"
v-if="showConfig.showStoragePath">{{ t('settings', 'Storage location') }}</div>
<div class="headerUserBackend userBackend"
@@ -71,6 +73,7 @@
@tag="validateQuota" >
</multiselect>
</div>
+ <div class="languages" v-if="showConfig.showLanguages"></div>
<div class="storageLocation" v-if="showConfig.showStoragePath"></div>
<div class="userBackend" v-if="showConfig.showUserBackend"></div>
<div class="lastLogin" v-if="showConfig.showLastLogin"></div>
diff --git a/settings/src/components/userList/userRow.vue b/settings/src/components/userList/userRow.vue
index bc2ef228db8..3feae9a7778 100644
--- a/settings/src/components/userList/userRow.vue
+++ b/settings/src/components/userList/userRow.vue
@@ -53,6 +53,15 @@
</multiselect>
<progress class="quota-user-progress" :class="{'warn':usedQuota>80}" :value="usedQuota" max="100"></progress>
</div>
+ <div class="languages" :class="{'icon-loading-small': loading.languages}"
+ v-if="showConfig.showLanguages">
+ <multiselect :value="userLanguage" :options="languages" :disabled="loading.languages||loading.all"
+ :placeholder="t('settings', 'No language set')"
+ label="name" track-by="code" class="multiselect-vue"
+ :allowEmpty="false" group-values="languages" group-label="label"
+ @input="setUserLanguage">
+ </multiselect>
+ </div>
<div class="storageLocation" v-if="showConfig.showStoragePath">{{user.storageLocation}}</div>
<div class="userBackend" v-if="showConfig.showUserBackend">{{user.backend}}</div>
<div class="lastLogin" v-if="showConfig.showLastLogin" :title="user.lastLogin>0 ? OC.Util.formatDate(user.lastLogin) : ''">
@@ -73,7 +82,6 @@
import popoverMenu from '../popoverMenu';
import ClickOutside from 'vue-click-outside';
import Multiselect from 'vue-multiselect';
-//import Multiselect from '../../../node_modules/vue-multiselect/src/index';
export default {
name: 'userRow',
@@ -86,8 +94,9 @@ export default {
ClickOutside
},
mounted() {
- // prevent click outside event with popupItem.
- this.popupItem = this.$el;
+ // required if popup needs to stay opened after menu click
+ // since we only have disable/delete actions, let's close it directly
+ // this.popupItem = this.$el;
},
data() {
return {
@@ -102,7 +111,8 @@ export default {
subadmins: false,
quota: false,
delete: false,
- disable: false
+ disable: false,
+ languages: false
}
}
},
@@ -159,6 +169,33 @@ export default {
/* PASSWORD POLICY? */
minPasswordLength() {
return this.$store.getters.getPasswordPolicyMinLength;
+ },
+
+ /* LANGUAGES */
+ languages() {
+ return Array(
+ {
+ label: t('settings', 'Common languages'),
+ languages: this.settings.languages.commonlanguages
+ },
+ {
+ label: t('settings', 'All languages'),
+ languages: this.settings.languages.languages
+ }
+ );
+ },
+ userLanguage() {
+ let availableLanguages = this.languages[0].languages.concat(this.languages[1].languages);
+ let userLang = availableLanguages.find(lang => lang.code === this.user.language);
+ if (typeof userLang !== 'object' && this.user.language !== '') {
+ return {
+ code: this.user.language,
+ name: this.user.language
+ }
+ } else if(this.user.language === '') {
+ return false;
+ }
+ return userLang;
}
},
methods: {
@@ -370,6 +407,24 @@ export default {
return quota;
},
+
+ /**
+ * Validate quota string to make sure it's a valid human file size
+ *
+ * @param {string|Object} quota Quota in readable format '5 GB' or Object {id: '5 GB', label: '5GB'}
+ * @returns {string}
+ */
+ setUserLanguage(lang) {
+ this.loading.languages = true;
+ // ensure we only send the preset id
+ this.$store.dispatch('setUserData', {
+ userid: this.user.id,
+ key: 'language',
+ value: lang.code
+ }).then(() => this.loading.languages = false);
+ return lang;
+ },
+
/**
* Validate quota string to make sure it's a valid human file size
*
diff --git a/settings/src/store/users.js b/settings/src/store/users.js
index 8fc1e66b794..8fc875b8a87 100644
--- a/settings/src/store/users.js
+++ b/settings/src/store/users.js
@@ -397,12 +397,13 @@ const actions = {
* @returns {Promise}
*/
setUserData(context, { userid, key, value }) {
- if (['email', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {
+ let allowedEmpty = ['email', 'displayname'];
+ if (['email', 'language', 'quota', 'displayname', 'password'].indexOf(key) !== -1) {
// We allow empty email or displayname
if (typeof value === 'string' &&
(
- (['quota', 'password'].indexOf(key) !== -1 && value.length > 0) ||
- ['email', 'displayname'].indexOf(key) !== -1
+ (allowedEmpty.indexOf(key) === -1 && value.length > 0) ||
+ allowedEmpty.indexOf(key) !== -1
)
) {
return api.requireAdmin().then((response) => {
diff --git a/settings/src/views/Users.vue b/settings/src/views/Users.vue
index 521d6a4cd66..5ba6761c384 100644
--- a/settings/src/views/Users.vue
+++ b/settings/src/views/Users.vue
@@ -3,6 +3,11 @@
<app-navigation :menu="menu">
<template slot="settings-content">
<div>
+ <input type="checkbox" id="showLanguages" class="checkbox"
+ :checked="showLanguages" v-model="showLanguages">
+ <label for="showLanguages">{{t('settings', 'Show Languages')}}</label>
+ </div>
+ <div>
<input type="checkbox" id="showLastLogin" class="checkbox"
:checked="showLastLogin" v-model="showLastLogin">
<label for="showLastLogin">{{t('settings', 'Show last login')}}</label>
@@ -50,7 +55,8 @@ export default {
showStoragePath: false,
showUserBackend: false,
showLastLogin: false,
- showNewUserForm: false
+ showNewUserForm: false,
+ showLanguages: false
}
}
},
@@ -82,6 +88,14 @@ export default {
usersLimit() {
return this.$store.getters.getUsersLimit;
},
+
+ // Local settings
+ showLanguages: {
+ get: function() {return this.getLocalstorage('showLanguages')},
+ set: function(status) {
+ this.setLocalStorage('showLanguages', status);
+ }
+ },
showLastLogin: {
get: function() {return this.getLocalstorage('showLastLogin')},
set: function(status) {
@@ -100,6 +114,8 @@ export default {
this.setLocalStorage('showStoragePath', status);
}
},
+
+
userCount() {
return this.$store.getters.getUserCount;
},
@@ -164,6 +180,3 @@ export default {
}
}
</script>
-
-<style lang="scss">
-</style>
diff --git a/settings/users.php b/settings/users.php
index 62be3322bee..cfd8f761478 100644
--- a/settings/users.php
+++ b/settings/users.php
@@ -43,6 +43,7 @@ $userManager = \OC::$server->getUserManager();
$groupManager = \OC::$server->getGroupManager();
$appManager = \OC::$server->getAppManager();
$config = \OC::$server->getConfig();
+$l10nFactory = \OC::$server->getL10NFactory();
/* SORT OPTION: SORT_USERCOUNT or SORT_GROUPNAME */
$sortGroupsBy = \OC\Group\MetaData::SORT_USERCOUNT;
@@ -129,6 +130,9 @@ function addition($v, $w) {
}
$userCount = array_reduce($userManager->countUsers(), 'addition', 0);
+/* LANGUAGES */
+$languages = $l10nFactory->getLanguages();
+
/* FINAL DATA */
$serverData = array();
// groups
@@ -139,6 +143,7 @@ $serverData['subadmins'] = $subAdmins;
$serverData['sortGroups'] = $sortGroupsBy;
$serverData['quotaPreset'] = $quotaPreset;
$serverData['userCount'] = $userCount-$disabledUsers;
+$serverData['languages'] = $languages;
// Settings
$serverData['defaultQuota'] = $defaultQuota;
$serverData['canChangePassword'] = $canChangePassword;
@@ -147,3 +152,4 @@ $serverData['canChangePassword'] = $canChangePassword;
$tmpl = new OC_Template('settings', 'settings', 'user');
$tmpl->assign('serverData', $serverData);
$tmpl->printPage();
+